diff --git a/.env.example b/.env.example index 0de4d5e8..d1e189a6 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,4 @@ PRIVATE_KEY="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" SNOWTRACE_API_KEY="" RPC_MAINNET_URL="https://api.avax.network/ext/bc/C/rpc" RPC_TESTNET_URL="https://api.avax-test.network/ext/bc/C/rpc" +FOUNDRY_OUT=abi \ No newline at end of file diff --git a/.gitignore b/.gitignore index ec58cc09..6c9d7611 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ .env cache out +abi slither-results.json -broadcast/**/dry-run \ No newline at end of file +broadcast/**/dry-run +coverage/ +lcov.info +local-notes \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 9b7866df..7563a712 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/openzeppelin-contracts-upgradeable"] path = lib/openzeppelin-contracts-upgradeable url = https://github.com/openzeppelin/openzeppelin-contracts-upgradeable +[submodule "lib/openzeppelin-foundry-upgrades"] + path = lib/openzeppelin-foundry-upgrades + url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades diff --git a/.solhint.json b/.solhint.json index e795f2dc..70117875 100644 --- a/.solhint.json +++ b/.solhint.json @@ -2,6 +2,7 @@ "extends": "solhint:recommended", "rules": { "compiler-version": ["error", "^0.8.10"], - "func-visibility": ["warn", { "ignoreConstructors": true }] + "func-visibility": ["warn", { "ignoreConstructors": true }], + "no-console": ["warn"] } } diff --git a/abi/AccessControl.sol/AccessControl.json b/abi/AccessControl.sol/AccessControl.json deleted file mode 100644 index f8933e3d..00000000 --- a/abi/AccessControl.sol/AccessControl.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":"AccessControl"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file diff --git a/abi/Address.sol/Address.json b/abi/Address.sol/Address.json deleted file mode 100644 index d5abd4cf..00000000 --- a/abi/Address.sol/Address.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122077288e30bee535cb3d7ff89728280774c4fb72fc8257b542a2f7842ea23ea0a064736f6c63430008140033","sourceMap":"195:6066:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:36;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122077288e30bee535cb3d7ff89728280774c4fb72fc8257b542a2f7842ea23ea0a064736f6c63430008140033","sourceMap":"195:6066:36:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":"Address"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"}},"version":1},"id":36} \ No newline at end of file diff --git a/abi/Addresses.sol/AvalancheAddresses.json b/abi/Addresses.sol/AvalancheAddresses.json deleted file mode 100644 index 320f123b..00000000 --- a/abi/Addresses.sol/AvalancheAddresses.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220961ac1e0a7aa08ee1c8ce61f919b217b13867bad2a67aa05f6a95d115eeb037764736f6c63430008140033","sourceMap":"66:912:100:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:912:100;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220961ac1e0a7aa08ee1c8ce61f919b217b13867bad2a67aa05f6a95d115eeb037764736f6c63430008140033","sourceMap":"66:912:100:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/integration/Addresses.sol\":\"AvalancheAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/integration/Addresses.sol":"AvalancheAddresses"},"evmVersion":"paris","libraries":{}},"sources":{"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"}},"version":1},"id":100} \ No newline at end of file diff --git a/abi/Base.sol/CommonBase.json b/abi/Base.sol/CommonBase.json deleted file mode 100644 index cf0a8ec7..00000000 --- a/abi/Base.sol/CommonBase.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/abi/Base.sol/ScriptBase.json b/abi/Base.sol/ScriptBase.json deleted file mode 100644 index a620fcf6..00000000 --- a/abi/Base.sol/ScriptBase.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/abi/Base.sol/TestBase.json b/abi/Base.sol/TestBase.json deleted file mode 100644 index cbba044a..00000000 --- a/abi/Base.sol/TestBase.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"TestBase"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":0} \ No newline at end of file diff --git a/abi/BinHelper.sol/BinHelper.json b/abi/BinHelper.sol/BinHelper.json deleted file mode 100644 index fed4b6ec..00000000 --- a/abi/BinHelper.sol/BinHelper.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"BinHelper__CompositionFactorFlawed","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"BinHelper__LiquidityOverflow","inputs":[]},{"type":"error","name":"BinHelper__MaxLiquidityPerBinExceeded","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d8039e621a6e4ad8b48f6a28548f12aa1587e85573c7576fb594307454b8590964736f6c63430008140033","sourceMap":"635:13728:63:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;635:13728:63;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d8039e621a6e4ad8b48f6a28548f12aa1587e85573c7576fb594307454b8590964736f6c63430008140033","sourceMap":"635:13728:63:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"BinHelper__CompositionFactorFlawed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__LiquidityOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__MaxLiquidityPerBinExceeded\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Bin Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to help interaction with bins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/BinHelper.sol\":\"BinHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"BinHelper__CompositionFactorFlawed"},{"inputs":[],"type":"error","name":"BinHelper__LiquidityOverflow"},{"inputs":[],"type":"error","name":"BinHelper__MaxLiquidityPerBinExceeded"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/BinHelper.sol":"BinHelper"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"}},"version":1},"id":63} \ No newline at end of file diff --git a/abi/BinHelper.t.sol/BinHelperTest.json b/abi/BinHelper.t.sol/BinHelperTest.json deleted file mode 100644 index beac323c..00000000 --- a/abi/BinHelper.t.sol/BinHelperTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_BinIsEmpty","inputs":[{"name":"binReserveX","type":"uint128","internalType":"uint128"},{"name":"binReserveY","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetAmountOutOfBin","inputs":[{"name":"binReserveX","type":"uint128","internalType":"uint128"},{"name":"binReserveY","type":"uint128","internalType":"uint128"},{"name":"amountToBurn","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetAmountsLessThanBin","inputs":[{"name":"binReserveX","type":"uint128","internalType":"uint128"},{"name":"binReserveY","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"deltaId","type":"int16","internalType":"int16"},{"name":"amountIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testFuzz_GetCompositionFees","inputs":[{"name":"reserveX","type":"uint128","internalType":"uint128"},{"name":"reserveY","type":"uint128","internalType":"uint128"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"amountXIn","type":"uint128","internalType":"uint128"},{"name":"amountYIn","type":"uint128","internalType":"uint128"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetLiquidity","inputs":[{"name":"amountInX","type":"uint128","internalType":"uint128"},{"name":"amountInY","type":"uint128","internalType":"uint128"},{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_Received","inputs":[{"name":"reserveX","type":"uint128","internalType":"uint128"},{"name":"reserveY","type":"uint128","internalType":"uint128"},{"name":"sentX","type":"uint128","internalType":"uint128"},{"name":"sentY","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_Transfer","inputs":[{"name":"amountX","type":"uint128","internalType":"uint128"},{"name":"amountY","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_TryExploitShares","inputs":[{"name":"amountX1","type":"uint128","internalType":"uint128"},{"name":"amountY1","type":"uint128","internalType":"uint128"},{"name":"amountX2","type":"uint128","internalType":"uint128"},{"name":"amountY2","type":"uint128","internalType":"uint128"},{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_VerifyAmountsNeqIds","inputs":[{"name":"amountX","type":"uint128","internalType":"uint128"},{"name":"amountY","type":"uint128","internalType":"uint128"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_VerifyAmountsOnActiveId","inputs":[{"name":"amountX","type":"uint128","internalType":"uint128"},{"name":"amountY","type":"uint128","internalType":"uint128"},{"name":"activeId","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_getAmountsFullBin","inputs":[{"name":"binReserveX","type":"uint128","internalType":"uint128"},{"name":"binReserveY","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"deltaId","type":"int16","internalType":"int16"},{"name":"amountIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_getSharesAndEffectiveAmountsIn","inputs":[{"name":"binReserveX","type":"uint128","internalType":"uint128"},{"name":"binReserveY","type":"uint128","internalType":"uint128"},{"name":"amountInX","type":"uint128","internalType":"uint128"},{"name":"amountInY","type":"uint128","internalType":"uint128"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"BinHelper__CompositionFactorFlawed","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"BinHelper__LiquidityOverflow","inputs":[]},{"type":"error","name":"BinHelper__MaxLiquidityPerBinExceeded","inputs":[]},{"type":"error","name":"FeeHelper__FeeTooLarge","inputs":[]},{"type":"error","name":"PackedUint128Math__AddOverflow","inputs":[]},{"type":"error","name":"PackedUint128Math__SubUnderflow","inputs":[]},{"type":"error","name":"PairParametersHelper__InvalidParameter","inputs":[]},{"type":"error","name":"SafeCast__Exceeds128Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"TokenHelper__TransferFailed","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]},{"type":"error","name":"Uint256x256Math__MulShiftOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c0516201c5d46200029f60003960005050600050506000610cba01526201c5d46000f3fe60806040523480156200001157600080fd5b5060043610620001f55760003560e01c806385226c811162000119578063b5508aa911620000af578063d6cbdeea116200007a578063d6cbdeea146200043e578063d72b30771462000455578063e20c9f71146200046c578063fecaa223146200047657600080fd5b8063b5508aa914620003fc578063b89e02331462000406578063ba414fa6146200041d578063ba8d3b99146200042757600080fd5b806392c60d0e11620000f057806392c60d0e14620003a0578063933a320b14620003b7578063a7a5da5614620003ce578063a7aa85e914620003e557600080fd5b806385226c811462000351578063889be5b7146200036a578063916a17c6146200039657600080fd5b80633f7286f4116200018f57806366d9a9a0116200016657806366d9a9a014620002f35780636ba2eacd146200030c57806373cb490e14620003235780638378969f146200033a57600080fd5b80633f7286f414620002ac57806349789ef914620002b657806358ef437514620002dc57600080fd5b80631ed7831c11620001d05780631ed7831c14620002595780632ade388014620002725780632b7c1d9c146200028b5780633e5e3c2314620002a257600080fd5b806301ffc9a714620001fa5780630a9254e41462000236578063169d7a4c1462000242575b600080fd5b620002216200020b366004620086e4565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620002406200048d565b005b62000240620002533660046200873b565b62001ab8565b6200026362001fde565b6040516200022d9190620087be565b6200027c62002042565b6040516200022d919062008861565b620002406200029c36600462008936565b62002190565b6200026362002730565b6200026362002792565b620002cd620002c7366004620089c2565b620027f4565b6040519081526020016200022d565b62000240620002ed36600462008a0e565b62002849565b620002fd6200286c565b6040516200022d919062008a58565b620002406200031d36600462008b0f565b62002956565b620002406200033436600462008b6c565b62002ada565b620002406200034b36600462008bd1565b62002e73565b6200035b62002fda565b6040516200022d919062008c12565b620003816200037b36600462008c78565b620030b4565b60405162ffffff90911681526020016200022d565b620002fd62003111565b62000240620003b136600462008cb0565b620031fb565b62000240620003c836600462008936565b620032c4565b62000240620003df36600462008cb0565b6200395a565b62000240620003f636600462008cf5565b62004324565b6200035b620047b4565b620002216200041736600462008d91565b6200488e565b6200022162004911565b620002406200043836600462008daf565b620049cb565b620002406200044f36600462008df6565b62004b2f565b620002406200046636600462008e65565b62004e61565b6200026362005147565b620002406200048736600462008eb7565b620051a9565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200058a57601c546040516000805160206201c4e98339815191529163b4d6c782916001600160a01b0390911690620004f3906200864d565b604051809103906000f08015801562000510573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200055592919062008f49565b600060405180830381600087803b1580156200057057600080fd5b505af115801562000585573d6000803e3d6000fd5b505050505b60066040516200059a906200865b565b60ff9091168152602001604051809103906000f080158015620005c1573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055604051600690620005f3906200865b565b60ff9091168152602001604051809103906000f0801580156200061a573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516008906200064c906200865b565b60ff9091168152602001604051809103906000f08015801562000673573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051601290620006a5906200865b565b60ff9091168152602001604051809103906000f080158015620006cc573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392909216919091179055604051601290620006fe906200865b565b60ff9091168152602001604051809103906000f08015801562000725573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062000757906200865b565b60ff9091168152602001604051809103906000f0801580156200077e573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051620007ad9062008669565b604051809103906000f080158015620007ca573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201c4e98339815191529063c657c71890608401600060405180830381600087803b1580156200086b57600080fd5b505af115801562000880573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b158015620008f857600080fd5b505af11580156200090d573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200098557600080fd5b505af11580156200099a573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000a1257600080fd5b505af115801562000a27573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000a9f57600080fd5b505af115801562000ab4573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000b2c57600080fd5b505af115801562000b41573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000bb357600080fd5b505af115801562000bc8573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000c5457600080fd5b505af115801562000c69573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062000cf09062008677565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562000d2b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162000d599062008685565b6001600160a01b039091168152602001604051809103906000f08015801562000d86573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562000de557600080fd5b505af115801562000dfa573d6000803e3d6000fd5b5050505062000e08620054ae565b62000e14600a62005853565b602454602b54601c546040516001600160a01b0393841693928316929091169062000e3f9062008693565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000e7c573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062000eb790620086a1565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000ef4573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201c4e98339815191529063c657c71890608401600060405180830381600087803b15801562000f9557600080fd5b505af115801562000faa573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200103657600080fd5b505af11580156200104b573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b158015620010da57600080fd5b505af1158015620010ef573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200117b57600080fd5b505af115801562001190573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200121c57600080fd5b505af115801562001231573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b158015620012bd57600080fd5b505af1158015620012d2573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200132d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001353919062008f6d565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620013ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013d1919062008f6d565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200144f919062008f6d565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620014a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014cd919062008f6d565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200154b919062008f6d565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620015a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015c9919062008f6d565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001621573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001647919062008f6d565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200169f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016c5919062008f6d565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200171d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001743919062008f6d565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200179b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017c1919062008f6d565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001819573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200183f919062008f6d565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001897573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018bd919062008f6d565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200193b919062008f6d565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001993573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019b9919062008f6d565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001a11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a37919062008f6d565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001a8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ab5919062008f6d565b50565b6000805160206201c4e9833981519152634c63e562831580159062001ae657506000866001600160801b0316115b801562001afc57506000856001600160801b0316115b801562001b1f57506001600160801b0362001b1c8782168b831662008fa3565b11155b801562001b4257506001600160801b0362001b3f8682168a831662008fa3565b11155b801562001b73575062001b588460001962008fcf565b62001b706001600160801b03808916908c1662008fa3565b11155b801562001bc75750608062001b89868a62008fe6565b6001600160801b0316901b60001962001ba3919062009009565b62001baf878b62008fe6565b62001bc4906001600160801b0316866200901f565b11155b801562001c3757507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611608062001bfc878b62008fe6565b6001600160801b0316901b62001c13888c62008fe6565b62001c28906001600160801b0316876200901f565b62001c34919062008fa3565b11155b6040518263ffffffff1660e01b815260040162001c58911515815260200190565b60006040518083038186803b15801562001c7157600080fd5b505afa15801562001c86573d6000803e3d6000fd5b505050506001600160801b038716608087901b17600062001ca8828562005906565b90506000805160206201c4e9833981519152634c63e56260c861ffff8a161180159062001cd55750600086115b801562001ce25750828511155b801562001d0e57508415801562001cf7575083155b8062001d0e575060008511801562001d0e57508315155b6040518263ffffffff1660e01b815260040162001d2f911515815260200190565b60006040518083038186803b15801562001d4857600080fd5b505afa15801562001d5d573d6000803e3d6000fd5b5050505060008062001d9062001d86888a6001600160801b0316620058f390919063ffffffff16565b859088886200592d565b90925090506000805160206201c4e9833981519152634c63e56262001dc462001dbc6000198562005adb565b879062005b17565b15801562001ddf575062001ddb8460001962009009565b8711155b6040518263ffffffff1660e01b815260040162001e00911515815260200190565b60006040518083038186803b15801562001e1957600080fd5b505afa15801562001e2e573d6000803e3d6000fd5b5050506001600160801b038216985050608081901c9650600062001e6581611388601e61025882619c406103e86205573062005b5c565b9050600062001e7986838d868b8962005c72565b905060006001600160801b038e8e17161562001ecf578c6001600160801b03168e6001600160801b031662001eaf919062008fa3565b60808e6001600160801b0316901b62001ec9919062008fcf565b62001ed2565b60005b905060006001600160801b038c8c17161562001f205762001f006001600160801b03808d16908e1662008fa3565b62001f1a906001600160801b031960808e901b1662008fcf565b62001f23565b60005b90508082111562001f7e5762001f7860808460001c901b60006040518060400160405280601e81526020017f7465737446757a7a5f476574436f6d706f736974696f6e466565733a3a31000081525062005d94565b62001fcd565b62001fcd8360001c6001600160801b031660006040518060400160405280601e81526020017f7465737446757a7a5f476574436f6d706f736974696f6e466565733a3a32000081525062005d94565b505050505050505050505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200203857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162002019575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200218757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200216f578382906000526020600020018054620020db9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620021099062009039565b80156200215a5780601f106200212e576101008083540402835291602001916200215a565b820191906000526020600020905b8154815290600101906020018083116200213c57829003601f168201915b505050505081526020019060010190620020b9565b50505050815250508152602001906001019062002066565b50505050905090565b6000620021b081611388601e61025882619c406103e86205573062005b5c565b90506000620021c7600185900b628000006200906f565b90506000620021d882600a62005dfa565b9050600086620021ff57620021f96001600160801b038a1683608062005e37565b62002216565b620022166001600160801b03891660808462005e7d565b604051632631f2b160e11b81526001600160801b0382111560048201529091506000805160206201c4e983398151915290634c63e5629060240160006040518083038186803b1580156200226957600080fd5b505afa1580156200227e573d6000803e3d6000fd5b505050506000620022a5826200229f600a8862005ebb90919063ffffffff16565b62005ee0565b90506000805160206201c4e9833981519152634c63e562620022cf836001600160801b036200909a565b6001600160801b03168411158015620023045750620022f86001600160801b0384168562008fa3565b886001600160801b0316105b6040518263ffffffff1660e01b815260040162002325911515815260200190565b60006040518083038186803b1580156200233e57600080fd5b505afa15801562002353573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291508a9050620023a2576001600160801b038381166200238e868e841662008fa3565b6200239a919062008fa3565b1115620023ca565b6001600160801b03838116620023bb868f841662008fa3565b620023c7919062008fa3565b11155b6040518263ffffffff1660e01b8152600401620023eb911515815260200190565b60006040518083038186803b1580156200240457600080fd5b505afa15801562002419573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291506200244390508560001962008fcf565b8c6001600160801b0316111580156200248b5750620024736001600160801b031960808d901b1660001962009009565b620024886001600160801b038e16876200901f565b11155b80156200252e5750620024a087600a62005ebb565b620024b490670de0b6b3a76400006200909a565b6001600160801b0316620024ef670de0b6b3a76400007d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61162008fcf565b620024fb91906200901f565b6001600160801b031960808d901b166200251f6001600160801b038f16886200901f565b6200252b919062008fa3565b11155b6040518263ffffffff1660e01b81526004016200254f911515815260200190565b60006040518083038186803b1580156200256857600080fd5b505afa1580156200257d573d6000803e3d6000fd5b5050505050506000620025a3888a6001600160801b0316620058f390919063ffffffff16565b905060008080620025d387600a8c89620025c76001600160801b038e168362005f2e565b89949392919062005f57565b919450925090506200261d620025ea848c620061b3565b6001600160801b0316896001600160801b03166040518060600160405280602181526020016201c4c860219139620061c6565b6000620026378b62002630868562005adb565b90620061b3565b6001600160801b031690506000808c62002677576200266760808988821c5b6001600160801b03169190620061fe565b6001600160801b03861662002699565b6200268e886001600160801b03881660806200622a565b620026998660801c90565b6001600160801b031691509150620026cc82826040518060600160405280602181526020016201c5546021913962005d94565b60008d620026e857620026e28460808b620061fe565b620026f6565b620026f6898560806200622a565b90506200271e82826040518060600160405280602181526020016201c533602191396200629d565b50505050505050505050505050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562002038576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162002019575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562002038576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162002019575050505050905090565b6000808360ff161180156200280c575060008260ff16115b62002823576200281d8284620090bd565b6200283d565b6001620028318385620090bd565b6200283d9190620090d9565b60ff1690505b92915050565b6001600160801b038316608083901b1762002866818380620062d5565b50505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620021875760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200293d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620028fe5790505b5050505050815250508152602001906001019062002890565b604051632631f2b160e11b815262ffffff828116908416141560048201526000805160206201c4e983398151915290634c63e5629060240160006040518083038186803b158015620029a757600080fd5b505afa158015620029bc573d6000803e3d6000fd5b505050506001600160801b038416608084901b1762ffffff808416908316108015620029f157506000856001600160801b0316115b8062002a1b57508262ffffff168262ffffff1611801562002a1b57506000846001600160801b0316115b1562002ac6576040805162ffffff841660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663227bd87160e21b179052905163f28dceb360e01b81526000805160206201c4e98339815191529163f28dceb39162002a919190600401620090f5565b600060405180830381600087803b15801562002aac57600080fd5b505af115801562002ac1573d6000803e3d6000fd5b505050505b62002ad3818484620062d5565b5050505050565b6000805160206201c4e9833981519152634c63e562821580159062002b0857506000876001600160801b0316115b801562002b1e57506000866001600160801b0316115b801562002b3457506000856001600160801b0316115b801562002b4a57506000846001600160801b0316115b801562002b6d57506001600160801b0362002b6a86821689831662008fa3565b11155b801562002b9057506001600160801b0362002b8d85821688831662008fa3565b11155b801562002bc2575062002bb06001600160801b0380871690891662008fa3565b62002bbe9060001962008fcf565b8311155b801562002be557506001600160801b0362002be285821688831662008fa3565b11155b801562002c3d5750608062002c076001600160801b0380871690891662008fa3565b62002c16911b60001962009009565b62002c2e6001600160801b03808816908a1662008fa3565b62002c3a90856200901f565b11155b801562002cb357507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611608062002c7e6001600160801b03808816908a1662008fa3565b901b62002c986001600160801b03808916908b1662008fa3565b62002ca490866200901f565b62002cb0919062008fa3565b11155b6040518263ffffffff1660e01b815260040162002cd4911515815260200190565b60006040518083038186803b15801562002ced57600080fd5b505afa15801562002d02573d6000803e3d6000fd5b50600160801b925050506001600160801b03868116608087811b919091179186169085901b1760008062002d39848488886200592d565b909250905062002d4a848262006340565b935062002d58828662008fa3565b9450600062002d72836001600160801b038716886200637c565b9050600062002d9762002d858760801c90565b85906001600160801b0316896200637c565b905060008162002daa848b60806200622a565b62002db6919062008fa3565b9050600062002dc58560801c90565b6001600160801b031662002df662002de3876001600160801b031690565b8c906001600160801b031660806200622a565b62002e02919062008fa3565b905062002e638282608062002e1960018f62009009565b62002e27911c600262008fa3565b6040518060400160405280601c81526020017f7465737446757a7a5f5472794578706c6f69745368617265733a3a3100000000815250620063a0565b5050505050505050505050505050565b6001600160801b038316608083901b81811791838102916001600160801b0319168201901580159062002eba57508362002eb76001600160801b0388168462008fcf565b14155b8062002ec557508181105b1562002f4f57604051630618f58760e51b81526363f1e01f60e01b60048201526000805160206201c4e98339815191529063c31eb0e090602401600060405180830381600087803b15801562002f1a57600080fd5b505af115801562002f2f573d6000803e3d6000fd5b5050505062002f4884846200590690919063ffffffff16565b5062002fd2565b600062002f5d848662005906565b905062002fd0816001600160801b0319608089901b1662002f886001600160801b038b16896200901f565b62002f94919062008fa3565b6040518060400160405280601881526020017f7465737446757a7a5f4765744c69717569646974793a3a3100000000000000008152506200629d565b505b505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562002187578382906000526020600020018054620030209062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200304e9062009039565b80156200309f5780601f1062003073576101008083540402835291602001916200309f565b820191906000526020600020905b8154815290600101906020018083116200308157829003601f168201915b50505050508152602001906001019062002ffe565b600080620030c88462ffffff871662008fa3565b905060008360ff1611620030dd5780620030f9565b620030ec60ff84168262009009565b620030f990600162008fa3565b9050620031068162006408565b9150505b9392505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620021875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620031e257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620031a35790505b5050505050815250508152602001906001019062003135565b6001600160801b038216608082901b17620032656200321c82600162006434565b846001600160801b03166000146040518060400160405280601681526020017f7465737446757a7a5f42696e4973456d7074793a3a310000000000000000000081525062006466565b620032bf6200327682600062006434565b836001600160801b03166000146040518060400160405280601681526020017f7465737446757a7a5f42696e4973456d7074793a3a320000000000000000000081525062006466565b505050565b6000620032e481611388601e61025882619c406103e86205573062005b5c565b90506000620032fb600185900b628000006200906f565b905060006200330c82600a62005dfa565b905060008662003333576200332d6001600160801b038a1683608062005e37565b6200334a565b6200334a6001600160801b03891660808462005e7d565b604051632631f2b160e11b81526001600160801b0382111560048201529091506000805160206201c4e983398151915290634c63e5629060240160006040518083038186803b1580156200339d57600080fd5b505afa158015620033b2573d6000803e3d6000fd5b505050506000620033d3826200229f600a8862005ebb90919063ffffffff16565b90506000805160206201c4e9833981519152634c63e562620033fd836001600160801b036200909a565b6001600160801b03168411158015620034335750620034266001600160801b0384168562008fa3565b886001600160801b031610155b6040518263ffffffff1660e01b815260040162003454911515815260200190565b60006040518083038186803b1580156200346d57600080fd5b505afa15801562003482573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291508a9050620034d1576001600160801b03838116620034bd868e841662008fa3565b620034c9919062008fa3565b1115620034f9565b6001600160801b03838116620034ea868f841662008fa3565b620034f6919062008fa3565b11155b6040518263ffffffff1660e01b81526004016200351a911515815260200190565b60006040518083038186803b1580156200353357600080fd5b505afa15801562003548573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291506200357290508560001962008fcf565b8c6001600160801b031611158015620035ba5750620035a26001600160801b031960808d901b1660001962009009565b620035b76001600160801b038e16876200901f565b11155b80156200365d5750620035cf87600a62005ebb565b620035e390670de0b6b3a76400006200909a565b6001600160801b03166200361e670de0b6b3a76400007d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61162008fcf565b6200362a91906200901f565b6001600160801b031960808d901b166200364e6001600160801b038f16886200901f565b6200365a919062008fa3565b11155b6040518263ffffffff1660e01b81526004016200367e911515815260200190565b60006040518083038186803b1580156200369757600080fd5b505afa158015620036ac573d6000803e3d6000fd5b5050505050506000620036d2888a6001600160801b0316620058f390919063ffffffff16565b905060008080620036f687600a8c89620025c76001600160801b038e168362005f2e565b919450925090506200375c6200370d848c620061b3565b6001600160801b0316896001600160801b03166040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a31000000815250620061c6565b60006200376a848c620061b3565b6001600160801b031690506000808c6200379c576200378c8360808a620061fe565b6001600160801b038616620037b5565b620037aa888460806200622a565b620037b58660801c90565b6001600160801b0316915091506200380482826040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a3200000081525062005d94565b50600091506200381c90508b62002630868562005adb565b90506000806001600160801b03831615620038a3578c62003868576200384e6001600160801b03841660808a620061fe565b6200386260808a620026566001886200909a565b620038a7565b6200387f886001600160801b03851660806200622a565b62003862620038906001866200909a565b8a906001600160801b031660806200622a565b6000805b909250905062003903620038bd868f15620061b3565b6001600160801b0316836040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a33000000815250620061c6565b62001fcd62003914868f15620061b3565b6001600160801b0316826040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a3400000081525062005d94565b601d546001906200397f906001600160a01b0316306001600160801b0386166200649e565b601c54620039a1906001600160a01b0316306001600160801b0385166200649e565b6001600160801b038316608083901b176000620039fa620039f2620039c86002876200910a565b620039d56002896200910a565b6001600160801b03169060801b6001600160801b03919091161790565b839062005adb565b9050600062003a0a838362005adb565b601d54601c5491925062003a2e9184916001600160a01b03908116911687620064ad565b601d546040516370a0823160e01b81526001600160a01b03868116600483015262003ae79216906370a0823190602401602060405180830381865afa15801562003a7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003aa2919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3100000000000000000000000060208201526001600160801b038516906200629d565b601c546040516370a0823160e01b81526001600160a01b03868116600483015262003bab9216906370a0823190602401602060405180830381865afa15801562003b35573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b5b919062009133565b62003b668460801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a320000000000000000000000008152506200629d565b601d546040516370a0823160e01b815230600482015262003c62916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003bf7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c1d919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3300000000000000000000000060208201526001600160801b038416906200629d565b601c546040516370a0823160e01b815230600482015262003d24916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003cae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cd4919062009133565b62003cdf8360801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a340000000000000000000000008152506200629d565b601d5462003d3e9082906001600160a01b03168662006511565b601d546040516370a0823160e01b81526001600160a01b03868116600483015262003df79216906370a0823190602401602060405180830381865afa15801562003d8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003db2919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3500000000000000000000000060208201526001600160801b038616906200629d565b601c546040516370a0823160e01b81526001600160a01b03868116600483015262003ebb9216906370a0823190602401602060405180830381865afa15801562003e45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e6b919062009133565b62003e768460801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a360000000000000000000000008152506200629d565b601d546040516370a0823160e01b815230600482015262003f6b916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003f07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f2d919062009133565b60006040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a370000000000000000000000008152506200629d565b601c546040516370a0823160e01b81523060048201526200402d916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003fb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fdd919062009133565b62003fe88360801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a380000000000000000000000008152506200629d565b601c54620040479082906001600160a01b0316866200654f565b601d546040516370a0823160e01b81526001600160a01b038681166004830152620041009216906370a0823190602401602060405180830381865afa15801562004095573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040bb919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3900000000000000000000000060208201526001600160801b038616906200629d565b601c546040516370a0823160e01b81526001600160a01b038681166004830152620041c49216906370a0823190602401602060405180830381865afa1580156200414e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004174919062009133565b6200417f8560801c90565b6001600160801b03166040518060400160405280601581526020017f7465737446757a7a5f5472616e736665723a3a313000000000000000000000008152506200629d565b601d546040516370a0823160e01b815230600482015262004274916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004236919062009133565b60006040518060400160405280601581526020017f7465737446757a7a5f5472616e736665723a3a313100000000000000000000008152506200629d565b601c546040516370a0823160e01b815230600482015262002fd2916001600160a01b0316906370a0823190602401602060405180830381865afa158015620042c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042e6919062009133565b60006040518060400160405280601581526020017f7465737446757a7a5f5472616e736665723a3a313200000000000000000000008152506200629d565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200438b91906200914d565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620043ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043f491906200914d565b905062004403828b886200649e565b62004410818b876200649e565b60006200441e8585620027f4565b905060008167ffffffffffffffff8111156200443e576200443e6200916d565b60405190808252806020026020018201604052801562004468578160200160208202803683370190505b50905060005b8281101562004567576000620044868b8389620030b4565b905060008b62ffffff168262ffffff1610158015620044a8575060008960ff16115b620044b5576000620044d6565b620044d6620044d060ff8b16670de0b6b3a764000062008fcf565b6200655c565b905060008c62ffffff168362ffffff1611158015620044f8575060008960ff16115b6200450557600062004520565b62004520620044d060ff8b16670de0b6b3a764000062008fcf565b90506200452f82828562006588565b85858151811062004544576200454462009183565b602002602001018181525050505050806200455f9062009199565b90506200446e565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201c4e9833981519152906306447d5690602401600060405180830381600087803b158015620045b957600080fd5b505af1158015620045ce573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562004622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004648919062008f6d565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562004699573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046bf919062008f6d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200471f57600080fd5b505af115801562004734573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b81526004016200476a93929190620091b5565b6000604051808303816000875af11580156200478a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fcd919081019062009276565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562002187578382906000526020600020018054620047fa9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620048289062009039565b8015620048795780601f106200484d5761010080835404028352916020019162004879565b820191906000526020600020905b8154815290600101906020018083116200485b57829003601f168201915b505050505081526020019060010190620047d8565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620048de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200490491906200932b565b9998505050505050505050565b60075460009060ff16156200492a575060075460ff1690565b604051630667f9d760e41b81526000805160206201c4e9833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200499e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049c4919062009133565b1415905090565b6000805160206201c4e9833981519152634c63e5628215801590620049f05750838310155b6040518263ffffffff1660e01b815260040162004a11911515815260200190565b60006040518083038186803b15801562004a2a57600080fd5b505afa15801562004a3f573d6000803e3d6000fd5b505050506001600160801b038416608084901b17600062004a62828585620065c3565b90506001600160801b0380821690608083901c9062004ac990839062004a8d9089908c16896200637c565b6040518060400160405280601d81526020017f7465737446757a7a5f476574416d6f756e744f75744f6642696e3a3a310000008152506200629d565b62004b256001600160801b038083169062004ae99089908b16896200637c565b6040518060400160405280601d81526020017f7465737446757a7a5f476574416d6f756e744f75744f6642696e3a3a320000008152506200629d565b5050505050505050565b6000805160206201c4e9833981519152634c63e562831580159062004b6a57506001600160801b0362004b678782168a831662008fa3565b11155b801562004b8d57506001600160801b0362004b8a86821689831662008fa3565b11155b801562004bdf575062004bad6001600160801b03808816908a1662008fa3565b158062004bdf575062004bcd6001600160801b03808816908a1662008fa3565b62004bdb9060001962008fcf565b8411155b801562004c375750608062004c016001600160801b03808816908a1662008fa3565b62004c10911b60001962009009565b62004c286001600160801b03808916908b1662008fa3565b62004c3490866200901f565b11155b801562004cad57507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611608062004c786001600160801b03808916908b1662008fa3565b901b62004c926001600160801b03808a16908c1662008fa3565b62004c9e90876200901f565b62004caa919062008fa3565b11155b6040518263ffffffff1660e01b815260040162004cce911515815260200190565b60006040518083038186803b15801562004ce757600080fd5b505afa15801562004cfc573d6000803e3d6000fd5b505050506001600160801b038616608086901b17600062004d1e828562005906565b90506000805160206201c4e9833981519152634c63e562851580159062004d455750828511155b6040518263ffffffff1660e01b815260040162004d66911515815260200190565b60006040518083038186803b15801562004d7f57600080fd5b505afa15801562004d94573d6000803e3d6000fd5b505050506001600160801b038616608086901b1760008062004db9858489896200592d565b9150915062004de98160001c8460001c6040518060600160405280602a81526020016201c509602a9139620061c6565b600062004df7848962005906565b9050600085158062004e07575087155b62004e1f5762004e198289886200637c565b62004e2a565b62004e2a8262006643565b905062004e5284826040518060600160405280602a81526020016201c575602a91396200629d565b50505050505050505050505050565b6000805160206201c4e9833981519152634c63e56262004e89846001600160801b036200909a565b6001600160801b0316866001600160801b031610801562004ecd575062004eb8836001600160801b036200909a565b6001600160801b0316856001600160801b0316105b6040518263ffffffff1660e01b815260040162004eee911515815260200190565b60006040518083038186803b15801562004f0757600080fd5b505afa15801562004f1c573d6000803e3d6000fd5b5050601d5430925062004f4f91506001600160a01b03168262004f40868962008fe6565b6001600160801b03166200649e565b601c5462004f6d906001600160a01b03168262004f40858862008fe6565b601d54601c546001600160801b038716608087901b179160009162004fa19184916001600160a01b039182169116620066ba565b60408051808201909152601481527f7465737446757a7a5f52656365697665643a3a3100000000000000000000000060208201529091506001600160801b0380831691608084901c9162004ffa9184918a16906200629d565b6200504581876001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f52656365697665643a3a320000000000000000000000008152506200629d565b601d546200505e9085906001600160a01b0316620066db565b92506001600160801b0383166001600160801b03169150620050c082886001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f52656365697665643a3a330000000000000000000000008152506200629d565b601c54620050d99085906001600160a01b03166200670f565b9250620050e68360801c90565b6001600160801b031690506200513c81876001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f52656365697665643a3a340000000000000000000000008152506200629d565b505050505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562002038576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162002019575050505050905090565b670de0b6b3a7640000831115620052075760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620052158383620027f4565b905060008167ffffffffffffffff8111156200523557620052356200916d565b6040519080825280602002602001820160405280156200525f578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200528057620052806200916d565b604051908082528060200260200182016040528015620052aa578160200160208202803683370190505b50905060005b83811015620053b8576000620052c8898388620030b4565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa1580156200531e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005344919062009133565b90508162ffffff1685848151811062005361576200536162009183565b602090810291909101015262005381818a670de0b6b3a76400006200637c565b84848151811062005396576200539662009183565b602002602001018181525050505080620053b09062009199565b9050620052b0565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201c4e98339815191529063ca669fa790602401600060405180830381600087803b1580156200540a57600080fd5b505af11580156200541f573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062005457908d908d9087908790600401620093d5565b6000604051808303816000875af115801562005477573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620054a1919081019062009484565b5050505050505050505050565b601c546001600160a01b031615620055235760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200550957600080fd5b505af11580156200551e573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620055985760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200557e57600080fd5b505af115801562005593573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200560d5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620055f357600080fd5b505af115801562005608573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620056825760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200566857600080fd5b505af11580156200567d573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620056f75760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620056dd57600080fd5b505af1158015620056f2573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200576c5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200575257600080fd5b505af115801562005767573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620057e15760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620057c757600080fd5b505af1158015620057dc573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620058515760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200583c57600080fd5b505af115801562002866573d6000803e3d6000fd5b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b158015620058de57600080fd5b505af115801562002ad3573d6000803e3d6000fd5b60801b6001600160801b03919091161790565b60006001600160801b038316608084901c620059248282866200674a565b95945050505050565b6000806001600160801b038516608086901c826200594d8383896200674a565b9050806000036200596957506000935083925062005ad2915050565b6000620059778a8962005906565b905080158062005985575086155b15620059a557620059968262006643565b89955095505050505062005ad2565b620059b28288836200637c565b95506000620059c387838a620067bc565b90508083111562005a73576000620059dc828562009009565b9050600160801b811062005a2457608081901c858111620059fe578062005a00565b855b905062005a0e818762009009565b955062005a20608082901b8362009009565b9150505b89811062005a5f57600062005a3a8b8362008fcf565b905086811162005a4b578062005a4d565b865b905062005a5b818862009009565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61162005aa962005aa28d8d62006340565b8b62005906565b111562005ac95760405163a2d7652760e01b815260040160405180910390fd5b50889450505050505b94509492505050565b8082038281118062005af857506001600160801b03808416908216115b15620028435760405163e599af5560e01b815260040160405180910390fd5b60006001600160801b0383811690608085811c9185169085901c8184118062005b515750806001600160801b0316836001600160801b0316115b979650505050505050565b60008561ffff168761ffff16118062005b7a5750610fff8661ffff16115b8062005b8b57506127108561ffff16115b8062005b9c57506109c48361ffff16115b8062005baf5750620fffff8262ffffff16115b1562005bce57604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a161762004904565b60008160000362005c865750600062005d8a565b6001600160801b038416608085901c60008062005cd362005cbf62005cac8d8b62006340565b8862005cb9818c62008fa3565b620065c3565b6001600160801b0381169160809190911c90565b91509150836001600160801b0316826001600160801b0316111562005d3f57600062005d2062005d048c8c62005ebb565b62005d1084876200909a565b6001600160801b031690620067de565b905062005d36816001600160801b031660801b90565b95505062005d85565b826001600160801b0316816001600160801b0316111562005d8557600062005d7862005d6c8c8c62005ebb565b62005d1085886200909a565b6001600160801b03169550505b505050505b9695505050505050565b604051630389490b60e61b81526000805160206201c4e98339815191529063e25242c09062005dcc90869086908690600401620094bd565b60006040518083038186803b15801562005de557600080fd5b505afa15801562002fd0573d6000803e3d6000fd5b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff190162005924828262006822565b600062005e468484846200622a565b9050600160ff83161b8062005e5f5762005e5f62008fb9565b838509156200310a5762005e7560018262008fa3565b949350505050565b600062005e8c848484620061fe565b9050818062005e9f5762005e9f62008fb9565b600160ff85161b8509156200310a5762005e7560018262008fa3565b60006200310a62005ecd848462006aa1565b62005ed9858562006ae7565b0162006b0d565b60008162005eee8162006b38565b6001600160801b03808416670de0b6b3a7640000819003918291600019918816028201018162005f225762005f2262008fb9565b049250505b5092915050565b60008162005f475762005f418360801b90565b6200310a565b6001600160801b0383166200310a565b600080808062005f6d62ffffff87168962005dfa565b9050600062005f7e8b8915620061b3565b905060008862005faf5762005fa962005fa36001600160801b03841685608062005e37565b62006b0d565b62005fca565b62005fca62005fa36001600160801b03841660808662005e7d565b9050600062005fda8c8c62005ebb565b9050600062005ff36001600160801b0384168362005ee0565b905062006001818462008fe6565b92506000620060118a8d620061b3565b9050600080856001600160801b0316836001600160801b0316106200603e575084915082905085620060c1565b620060536001600160801b0384168662006b6b565b915060006200606383856200909a565b6001600160801b031690508e6200608c576200608662005fa38260808c620061fe565b6200609e565b6200609e62005fa3828b60806200622a565b9150876001600160801b0316826001600160801b03161115620060bf578791505b505b8d620060ff57620060db836001600160801b031660801b90565b6001600160801b038216620060f9846001600160801b031660801b90565b62006128565b6001600160801b0383166200611d826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611620061866200617f8562006178888f6200634090919063ffffffff16565b9062005adb565b8362005906565b1115620061a65760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b60008162005f475762005f418360801c90565b60405163d17d4b0d60e01b81526000805160206201c4e98339815191529063d17d4b0d9062005dcc90869086908690600401620094bd565b600060ff831684811b9061ffff6101008290031686901c9062005d8a9087906001901b86858562006ba4565b60008060006200623b868662006c56565b915091508160001462006252578360ff1682901c92505b80156200629457600160ff85161b81106200628057604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b6040516388b44c8560e01b81526000805160206201c4e9833981519152906388b44c859062005dcc90869086908690600401620094bd565b8162ffffff168162ffffff16108015620062f25750608083901b15155b806200631957508162ffffff168162ffffff161180156200631957506001600160801b0383115b15620032bf5760405163227bd87160e21b815262ffffff82166004820152602401620051fe565b818101828110806200635d57506001600160801b03808416908216105b1562002843576040516316692de960e01b815260040160405180910390fd5b60008060006200638d868662006c56565b9150915062005d8a868686858562006ba4565b604051637b88583160e11b81526000805160206201c4e98339815191529063f710b06290620063da908790879087908790600401620094de565b60006040518083038186803b158015620063f357600080fd5b505afa15801562004b25573d6000803e3d6000fd5b8062ffffff811681146200642f57604051639b63641560e01b815260040160405180910390fd5b919050565b6000816200645757620064478360801c90565b6001600160801b0316156200310a565b50506001600160801b03161590565b6040516326d8cf3f60e11b81526000805160206201c4e983398151915290634db19e7e9062005dcc9086908690869060040162009505565b620032bf838383600062006c75565b6001600160801b038416608085901c8115620064e257620064e26001600160a01b038616846001600160801b03851662006e70565b6001600160801b0381161562002fd25762002fd26001600160a01b038516846001600160801b03841662006e70565b60006001600160801b0384165b90506001600160801b038116156200286657620028666001600160a01b038416836001600160801b03841662006e70565b60006200651e8460801c90565b8067ffffffffffffffff811681146200642f5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff8216811762005e75565b60006001600160801b038416608085901c82808315620065fa57620065f762005fa3886001600160801b038716896200637c565b91505b6001600160801b0383161562006627576200662462005fa3886001600160801b038616896200637c565b90505b608081901b6001600160801b0383161798975050505050505050565b6000816000036200665657506000919050565b6000620066638362006ec3565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff169050828210620066b457826200310a565b50919050565b600062005e758462006178620066d08562006f66565b620039d58762006f66565b60006001600160801b03831662005e7581620066f78562006f66565b6200670391906200909a565b6001600160801b031690565b6000806200671d8460801c90565b905062005e75816200672f8562006f66565b6200673b91906200909a565b6001600160801b031660801b90565b600083156200678a5750808302818482816200676a576200676a62008fb9565b04146200678a576040516363f1e01f60e01b815260040160405180910390fd5b82156200310a5760809290921b918201828110156200310a576040516363f1e01f60e01b815260040160405180910390fd5b6000620067cb8484846200637c565b9050818062005e5f5762005e5f62008fb9565b600081620067ec8162006b38565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a7640000919091010262005f22565b600080600083600003620068405750600160801b9150620028439050565b5082600081121562006853579015906000035b6210000081101562006a5957600160801b9250846001600160801b038111156200687f57911591600019045b6001821615620068915792830260801c925b800260801c6002821615620068a85792830260801c925b800260801c6004821615620068bf5792830260801c925b800260801c6008821615620068d65792830260801c925b800260801c6010821615620068ed5792830260801c925b800260801c6020821615620069045792830260801c925b800260801c60408216156200691b5792830260801c925b8002608090811c90821615620069335792830260801c925b800260801c6101008216156200694b5792830260801c925b800260801c610200821615620069635792830260801c925b800260801c6104008216156200697b5792830260801c925b800260801c610800821615620069935792830260801c925b800260801c611000821615620069ab5792830260801c925b800260801c612000821615620069c35792830260801c925b800260801c614000821615620069db5792830260801c925b800260801c618000821615620069f35792830260801c925b800260801c6201000082161562006a0c5792830260801c925b800260801c6202000082161562006a255792830260801c925b800260801c6204000082161562006a3e5792830260801c925b800260801c6208000082161562006a575792830260801c925b505b8260000362006a8657604051631dba598d60e11b81526004810186905260248101859052604401620051fe565b8162006a93578262005924565b620059248360001962008fcf565b60008062006aaf8462006fd9565b62ffffff169050801562005f275760008361ffff1662006acf8662006feb565b62ffffff160290506064606382800284020162005f22565b60008161ffff1662006af98462006ffd565b61ffff16026402540be40002905092915050565b806001600160801b03811681146200642f57604051632f45db3d60e21b815260040160405180910390fd5b67016345785d8a0000816001600160801b0316111562001ab557604051638630bc6b60e01b815260040160405180910390fd5b60008162006b798162006b38565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b60008160000362006bca5783838162006bc15762006bc162008fb9565b04905062005924565b83821062006beb576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162006ccb916200952a565b600060405180830381855afa9150503d806000811462006d08576040519150601f19603f3d011682016040523d82523d6000602084013e62006d0d565b606091505b5091505060008180602001905181019062006d29919062009133565b905062006d638462006d5c8762006d556370a0823160e01b62006d4e600c8d6200700a565b9062007030565b906200704e565b9062007077565b821562002fd25760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162006dae91906200952a565b600060405180830381855afa9150503d806000811462006deb576040519150601f19603f3d011682016040523d82523d6000602084013e62006df0565b606091505b5091505060008180602001905181019062006e0c919062009133565b90508286101562006e375762006e23868462009009565b62006e2f908262009009565b905062006e52565b62006e43838762009009565b62006e4f908262008fa3565b90505b62004b258162006d5c6318160ddd60e01b62006d4e600c8d6200700a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905262002866848262007087565b60006001600160801b0382111562006edd5750608090811c905b67ffffffffffffffff82111562006ef657604091821c91015b63ffffffff82111562006f0b57602091821c91015b61ffff82111562006f1e57601091821c91015b60ff82111562006f3057600891821c91015b600f82111562006f4257600491821c91015b600382111562006f5457600291821c91015b60018211156200642f57600101919050565b6040516370a0823160e01b815230600482015260009062002843906001600160a01b038416906370a0823190602401602060405180830381865afa15801562006fb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fa3919062009133565b6000620028438260361c62ffffff1690565b6000620028438260701c620fffff1690565b600061ffff821662002843565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200310a565b60038201805463ffffffff191660e083901c1790556000826200310a565b6002820180546001810182556000918252602082206001600160a01b038416910155826200310a565b620070838282620070fd565b5050565b600080600052602060008351602085016000875af19050808015620070cc573d8015620070be5760016000511483169250620070c5565b843b151592505b50620070dd565b3d15620070dd573d6000803e3d6000fd5b5080620032bf5760405163197138bd60e11b815260040160405180910390fd5b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200717057602002820191906000526020600020905b8154815260200190600101908083116200715b575b5050505050905060008362007185836200750a565b6040516020016200719892919062009548565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620071ec9186918891016200957b565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007227576200722587620075b7565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620072689187918991016200957b565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620072af91906200952a565b600060405180830381855afa9150503d8060008114620072ec576040519150601f19603f3d011682016040523d82523d6000602084013e620072f1565b606091505b5091506200730e905081620073088860206200901f565b620075c4565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201c4e98339815191529063667f9d7090604401602060405180830381865afa15801562007370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007396919062009133565b90508082146200744d5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620051fe565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201c4e9833981519152906370ca10bb90606401600060405180830381600087803b158015620074ac57600080fd5b505af1158015620074c1573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff19169055620074f660028b016000620086af565b896004016000905550505050505050505050565b60606000825160206200751e91906200901f565b67ffffffffffffffff8111156200753957620075396200916d565b6040519080825280601f01601f19166020018201604052801562007564576020820181803683370190505b50905060005b835181101562005f275760008482815181106200758b576200758b62009183565b602002602001015190508082602002602001840152508080620075ae9062009199565b9150506200756a565b6000620028438262007666565b60008060006020855111620075db578451620075de565b60205b905060005b818110156200765c57620075f98160086200901f565b8662007606838862008fa3565b8151811062007619576200761962009183565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620076538162009199565b915050620075e3565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620076d857602002820191906000526020600020905b815481526020019060010190808311620076c3575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062007724925085918791016200957b565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620077c3576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620077939185918791016200957b565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620077d18362008508565b604051602001620077e492919062009548565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200785457600080fd5b505af115801562007869573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200788a91906200952a565b600060405180830381855afa9150503d8060008114620078c7576040519150601f19603f3d011682016040523d82523d6000602084013e620078cc565b606091505b509150620078e9905081620078e38760206200901f565b620085b5565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201c4e9833981519152906365bc9481906024016000604051808303816000875af115801562007946573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620079709190810190620095b7565b509050805160010362007d145760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620079c857620079c862009183565b60200260200101516040518363ffffffff1660e01b815260040162007a029291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007a20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a46919062009133565b90508062007ab1577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062007a865762007a8662009183565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462007b665760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620051fe565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162007b9e9291906200957b565b604051602081830303815290604052805190602001208560008151811062007bca5762007bca62009183565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062007c245762007c2462009183565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007c6f918a918c91016200957b565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162007cd9918a918c91016200957b565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200837d565b6001815111156200830c5760005b8151811015620083055760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062007d765762007d7662009183565b60200260200101516040518363ffffffff1660e01b815260040162007db09291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007dce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007df4919062009133565b90508062007e5e577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062007e335762007e3362009183565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462007e6d5750620082f0565b82518119906000805160206201c4e9833981519152906370ca10bb908c9087908790811062007ea05762007ea062009183565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b15801562007ef957600080fd5b505af115801562007f0e573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162007f3091906200952a565b600060405180830381855afa9150503d806000811462007f6d576040519150601f19603f3d011682016040523d82523d6000602084013e62007f72565b606091505b50909250905062007f8a81620078e38c60206200901f565b96505080801562007f9a57508186145b1562008232577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162007fd89291906200957b565b6040516020818303038152906040528051906020012088888151811062008003576200800362009183565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200805c576200805c62009183565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620080a7918d918f91016200957b565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620081349291906200957b565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620081b757620081b762009183565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200821057600080fd5b505af115801562008225573d6000803e3d6000fd5b5050505050505062008305565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200827a576200827a62009183565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620082d357600080fd5b505af1158015620082e8573d6000803e3d6000fd5b505050505050505b80620082fc8162009199565b91505062007d22565b506200837d565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620051fe565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620083c19188918a91016200957b565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200845e5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620051fe565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200848f60028a016000620086af565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620084d59188918a91016200957b565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200851c91906200901f565b67ffffffffffffffff8111156200853757620085376200916d565b6040519080825280601f01601f19166020018201604052801562008562576020820181803683370190505b50905060005b835181101562005f2757600084828151811062008589576200858962009183565b602002602001015190508082602002602001840152508080620085ac9062009199565b91505062008568565b60008060006020855111620085cc578451620085cf565b60205b905060005b818110156200765c57620085ea8160086200901f565b86620085f7838862008fa3565b815181106200860a576200860a62009183565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620086448162009199565b915050620085d4565b610b08806200962383390190565b610bfd806200a12b83390190565b610c18806200ad2883390190565b613199806200b94083390190565b61615c806200ead983390190565b614c808062014c3583390190565b612c1380620198b583390190565b508054600082559060005260206000209081019062001ab591905b80821115620086e05760008155600101620086ca565b5090565b600060208284031215620086f757600080fd5b81356001600160e01b0319811681146200310a57600080fd5b80356001600160801b03811681146200642f57600080fd5b803561ffff811681146200642f57600080fd5b600080600080600080600060e0888a0312156200875757600080fd5b620087628862008710565b9650620087726020890162008710565b9550620087826040890162008728565b9450620087926060890162008710565b9350620087a26080890162008710565b925060a0880135915060c0880135905092959891949750929550565b6020808252825182820181905260009190848201906040850190845b81811015620088015783516001600160a01b031683529284019291840191600101620087da565b50909695505050505050565b60005b838110156200882a57818101518382015260200162008810565b50506000910152565b600081518084526200884d8160208601602086016200880d565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200891757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200890057605f19898503018352620088ed84865162008833565b948e01949350918d0191600101620088ce565b505050978a01979450509188019160010162008888565b50919a9950505050505050505050565b801515811462001ab557600080fd5b600080600080600060a086880312156200894f57600080fd5b6200895a8662008710565b94506200896a6020870162008710565b935060408601356200897c8162008927565b92506060860135600181900b81146200899457600080fd5b9150620089a46080870162008710565b90509295509295909350565b803560ff811681146200642f57600080fd5b60008060408385031215620089d657600080fd5b620089e183620089b0565b9150620089f160208401620089b0565b90509250929050565b803562ffffff811681146200642f57600080fd5b60008060006060848603121562008a2457600080fd5b62008a2f8462008710565b925062008a3f6020850162008710565b915062008a4f60408501620089fa565b90509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008b0057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562008aea5783516001600160e01b0319168252928b019260019290920191908b019062008abe565b50978a0197955050509187019160010162008a80565b50919998505050505050505050565b6000806000806080858703121562008b2657600080fd5b62008b318562008710565b935062008b416020860162008710565b925062008b5160408601620089fa565b915062008b6160608601620089fa565b905092959194509250565b600080600080600060a0868803121562008b8557600080fd5b62008b908662008710565b945062008ba06020870162008710565b935062008bb06040870162008710565b925062008bc06060870162008710565b949793965091946080013592915050565b60008060006060848603121562008be757600080fd5b62008bf28462008710565b925062008c026020850162008710565b9150604084013590509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008c6b57603f1988860301845262008c5885835162008833565b9450928501929085019060010162008c39565b5092979650505050505050565b60008060006060848603121562008c8e57600080fd5b62008c9984620089fa565b92506020840135915062008a4f60408501620089b0565b6000806040838503121562008cc457600080fd5b62008ccf8362008710565b9150620089f16020840162008710565b6001600160a01b038116811462001ab557600080fd5b600080600080600080600080610100898b03121562008d1357600080fd5b883562008d208162008cdf565b9750602089013562008d328162008cdf565b9650604089013562008d448162008cdf565b955062008d5460608a01620089fa565b94506080890135935060a0890135925062008d7260c08a01620089b0565b915062008d8260e08a01620089b0565b90509295985092959890939650565b60006020828403121562008da457600080fd5b6200310a8262008728565b6000806000806080858703121562008dc657600080fd5b62008dd18562008710565b935062008de16020860162008710565b93969395505050506040820135916060013590565b60008060008060008060c0878903121562008e1057600080fd5b62008e1b8762008710565b955062008e2b6020880162008710565b945062008e3b6040880162008710565b935062008e4b6060880162008710565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121562008e7c57600080fd5b62008e878562008710565b935062008e976020860162008710565b925062008ea76040860162008710565b915062008b616060860162008710565b600080600080600080600060e0888a03121562008ed357600080fd5b873562008ee08162008cdf565b9650602088013562008ef28162008cdf565b9550604088013562008f048162008cdf565b945062008f1460608901620089fa565b93506080880135925062008f2b60a08901620089b0565b915062008f3b60c08901620089b0565b905092959891949750929550565b6001600160a01b038316815260406020820152600062005e75604083018462008833565b60006020828403121562008f8057600080fd5b81516200310a8162008927565b634e487b7160e01b600052601160045260246000fd5b8082018082111562002843576200284362008f8d565b634e487b7160e01b600052601260045260246000fd5b60008262008fe15762008fe162008fb9565b500490565b6001600160801b0381811683821601908082111562005f275762005f2762008f8d565b8181038181111562002843576200284362008f8d565b808202811582820484141762002843576200284362008f8d565b600181811c908216806200904e57607f821691505b602082108103620066b457634e487b7160e01b600052602260045260246000fd5b808201828112600083128015821682158216171562009092576200909262008f8d565b505092915050565b6001600160801b0382811682821603908082111562005f275762005f2762008f8d565b60ff818116838216019081111562002843576200284362008f8d565b60ff828116828216039081111562002843576200284362008f8d565b6020815260006200310a602083018462008833565b60006001600160801b038084168062009127576200912762008fb9565b92169190910492915050565b6000602082840312156200914657600080fd5b5051919050565b6000602082840312156200916057600080fd5b81516200310a8162008cdf565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060018201620091ae57620091ae62008f8d565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200920257855183529483019491830191600101620091e4565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200924757620092476200916d565b604052919050565b600067ffffffffffffffff8211156200926c576200926c6200916d565b5060051b60200190565b6000806000606084860312156200928c57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115620092b357600080fd5b8501601f81018713620092c557600080fd5b8051620092dc620092d6826200924f565b6200921b565b81815260059190911b82018301908381019089831115620092fc57600080fd5b928401925b828410156200931c5783518252928401929084019062009301565b80955050505050509250925092565b600080600080600080600080610100898b0312156200934957600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e0890151620093878162008927565b809150509295985092959890939650565b600081518084526020808501945080840160005b83811015620093ca57815187529582019590820190600101620093ac565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262009403608083018562009398565b828103606084015262005b51818562009398565b600082601f8301126200942957600080fd5b815160206200943c620092d6836200924f565b82815260059290921b840181019181810190868411156200945c57600080fd5b8286015b8481101562009479578051835291830191830162009460565b509695505050505050565b6000602082840312156200949757600080fd5b815167ffffffffffffffff811115620094af57600080fd5b62005e758482850162009417565b83815282602082015260606040820152600062005924606083018462008833565b84815283602082015282604082015260806060820152600062005d8a608083018462008833565b8315158152821515602082015260606040820152600062005924606083018462008833565b600082516200953e8184602087016200880d565b9190910192915050565b6001600160e01b03198316815281516000906200956d8160048501602087016200880d565b919091016004019392505050565b825160009082906020808701845b83811015620095a75781518552938201939082019060010162009589565b5050948252509092019392505050565b60008060408385031215620095cb57600080fd5b825167ffffffffffffffff80821115620095e457600080fd5b620095f28683870162009417565b935060208501519150808211156200960957600080fd5b50620096188582860162009417565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400337465737446757a7a5f476574416d6f756e74734c6573735468616e42696e3a3a310000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737446757a7a5f676574536861726573416e64456666656374697665416d6f756e7473496e3a3a317465737446757a7a5f476574416d6f756e74734c6573735468616e42696e3a3a337465737446757a7a5f476574416d6f756e74734c6573735468616e42696e3a3a327465737446757a7a5f676574536861726573416e64456666656374697665416d6f756e7473496e3a3a32a26469706673582212207da5294ce3af50d14ada37a8899159462c67488aad90a0ae2a6f193f87e1339b64736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;369:18175:99;1812:17:93;;369:18175:99;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;369:18175:99;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;369:18175:99;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001f55760003560e01c806385226c811162000119578063b5508aa911620000af578063d6cbdeea116200007a578063d6cbdeea146200043e578063d72b30771462000455578063e20c9f71146200046c578063fecaa223146200047657600080fd5b8063b5508aa914620003fc578063b89e02331462000406578063ba414fa6146200041d578063ba8d3b99146200042757600080fd5b806392c60d0e11620000f057806392c60d0e14620003a0578063933a320b14620003b7578063a7a5da5614620003ce578063a7aa85e914620003e557600080fd5b806385226c811462000351578063889be5b7146200036a578063916a17c6146200039657600080fd5b80633f7286f4116200018f57806366d9a9a0116200016657806366d9a9a014620002f35780636ba2eacd146200030c57806373cb490e14620003235780638378969f146200033a57600080fd5b80633f7286f414620002ac57806349789ef914620002b657806358ef437514620002dc57600080fd5b80631ed7831c11620001d05780631ed7831c14620002595780632ade388014620002725780632b7c1d9c146200028b5780633e5e3c2314620002a257600080fd5b806301ffc9a714620001fa5780630a9254e41462000236578063169d7a4c1462000242575b600080fd5b620002216200020b366004620086e4565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620002406200048d565b005b62000240620002533660046200873b565b62001ab8565b6200026362001fde565b6040516200022d9190620087be565b6200027c62002042565b6040516200022d919062008861565b620002406200029c36600462008936565b62002190565b6200026362002730565b6200026362002792565b620002cd620002c7366004620089c2565b620027f4565b6040519081526020016200022d565b62000240620002ed36600462008a0e565b62002849565b620002fd6200286c565b6040516200022d919062008a58565b620002406200031d36600462008b0f565b62002956565b620002406200033436600462008b6c565b62002ada565b620002406200034b36600462008bd1565b62002e73565b6200035b62002fda565b6040516200022d919062008c12565b620003816200037b36600462008c78565b620030b4565b60405162ffffff90911681526020016200022d565b620002fd62003111565b62000240620003b136600462008cb0565b620031fb565b62000240620003c836600462008936565b620032c4565b62000240620003df36600462008cb0565b6200395a565b62000240620003f636600462008cf5565b62004324565b6200035b620047b4565b620002216200041736600462008d91565b6200488e565b6200022162004911565b620002406200043836600462008daf565b620049cb565b620002406200044f36600462008df6565b62004b2f565b620002406200046636600462008e65565b62004e61565b6200026362005147565b620002406200048736600462008eb7565b620051a9565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200058a57601c546040516000805160206201c4e98339815191529163b4d6c782916001600160a01b0390911690620004f3906200864d565b604051809103906000f08015801562000510573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200055592919062008f49565b600060405180830381600087803b1580156200057057600080fd5b505af115801562000585573d6000803e3d6000fd5b505050505b60066040516200059a906200865b565b60ff9091168152602001604051809103906000f080158015620005c1573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055604051600690620005f3906200865b565b60ff9091168152602001604051809103906000f0801580156200061a573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516008906200064c906200865b565b60ff9091168152602001604051809103906000f08015801562000673573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051601290620006a5906200865b565b60ff9091168152602001604051809103906000f080158015620006cc573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392909216919091179055604051601290620006fe906200865b565b60ff9091168152602001604051809103906000f08015801562000725573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062000757906200865b565b60ff9091168152602001604051809103906000f0801580156200077e573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051620007ad9062008669565b604051809103906000f080158015620007ca573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201c4e98339815191529063c657c71890608401600060405180830381600087803b1580156200086b57600080fd5b505af115801562000880573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b158015620008f857600080fd5b505af11580156200090d573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200098557600080fd5b505af11580156200099a573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000a1257600080fd5b505af115801562000a27573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000a9f57600080fd5b505af115801562000ab4573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000b2c57600080fd5b505af115801562000b41573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000bb357600080fd5b505af115801562000bc8573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b15801562000c5457600080fd5b505af115801562000c69573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062000cf09062008677565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562000d2b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162000d599062008685565b6001600160a01b039091168152602001604051809103906000f08015801562000d86573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562000de557600080fd5b505af115801562000dfa573d6000803e3d6000fd5b5050505062000e08620054ae565b62000e14600a62005853565b602454602b54601c546040516001600160a01b0393841693928316929091169062000e3f9062008693565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000e7c573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062000eb790620086a1565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000ef4573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201c4e98339815191529063c657c71890608401600060405180830381600087803b15801562000f9557600080fd5b505af115801562000faa573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200103657600080fd5b505af11580156200104b573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b158015620010da57600080fd5b505af1158015620010ef573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200117b57600080fd5b505af115801562001190573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b1580156200121c57600080fd5b505af115801562001231573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201c4e9833981519152925063c657c7189150608401600060405180830381600087803b158015620012bd57600080fd5b505af1158015620012d2573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200132d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001353919062008f6d565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620013ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013d1919062008f6d565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200144f919062008f6d565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620014a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014cd919062008f6d565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200154b919062008f6d565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620015a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015c9919062008f6d565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001621573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001647919062008f6d565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200169f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016c5919062008f6d565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200171d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001743919062008f6d565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200179b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017c1919062008f6d565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001819573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200183f919062008f6d565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001897573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018bd919062008f6d565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200193b919062008f6d565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001993573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019b9919062008f6d565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001a11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a37919062008f6d565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562001a8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ab5919062008f6d565b50565b6000805160206201c4e9833981519152634c63e562831580159062001ae657506000866001600160801b0316115b801562001afc57506000856001600160801b0316115b801562001b1f57506001600160801b0362001b1c8782168b831662008fa3565b11155b801562001b4257506001600160801b0362001b3f8682168a831662008fa3565b11155b801562001b73575062001b588460001962008fcf565b62001b706001600160801b03808916908c1662008fa3565b11155b801562001bc75750608062001b89868a62008fe6565b6001600160801b0316901b60001962001ba3919062009009565b62001baf878b62008fe6565b62001bc4906001600160801b0316866200901f565b11155b801562001c3757507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611608062001bfc878b62008fe6565b6001600160801b0316901b62001c13888c62008fe6565b62001c28906001600160801b0316876200901f565b62001c34919062008fa3565b11155b6040518263ffffffff1660e01b815260040162001c58911515815260200190565b60006040518083038186803b15801562001c7157600080fd5b505afa15801562001c86573d6000803e3d6000fd5b505050506001600160801b038716608087901b17600062001ca8828562005906565b90506000805160206201c4e9833981519152634c63e56260c861ffff8a161180159062001cd55750600086115b801562001ce25750828511155b801562001d0e57508415801562001cf7575083155b8062001d0e575060008511801562001d0e57508315155b6040518263ffffffff1660e01b815260040162001d2f911515815260200190565b60006040518083038186803b15801562001d4857600080fd5b505afa15801562001d5d573d6000803e3d6000fd5b5050505060008062001d9062001d86888a6001600160801b0316620058f390919063ffffffff16565b859088886200592d565b90925090506000805160206201c4e9833981519152634c63e56262001dc462001dbc6000198562005adb565b879062005b17565b15801562001ddf575062001ddb8460001962009009565b8711155b6040518263ffffffff1660e01b815260040162001e00911515815260200190565b60006040518083038186803b15801562001e1957600080fd5b505afa15801562001e2e573d6000803e3d6000fd5b5050506001600160801b038216985050608081901c9650600062001e6581611388601e61025882619c406103e86205573062005b5c565b9050600062001e7986838d868b8962005c72565b905060006001600160801b038e8e17161562001ecf578c6001600160801b03168e6001600160801b031662001eaf919062008fa3565b60808e6001600160801b0316901b62001ec9919062008fcf565b62001ed2565b60005b905060006001600160801b038c8c17161562001f205762001f006001600160801b03808d16908e1662008fa3565b62001f1a906001600160801b031960808e901b1662008fcf565b62001f23565b60005b90508082111562001f7e5762001f7860808460001c901b60006040518060400160405280601e81526020017f7465737446757a7a5f476574436f6d706f736974696f6e466565733a3a31000081525062005d94565b62001fcd565b62001fcd8360001c6001600160801b031660006040518060400160405280601e81526020017f7465737446757a7a5f476574436f6d706f736974696f6e466565733a3a32000081525062005d94565b505050505050505050505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200203857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162002019575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200218757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200216f578382906000526020600020018054620020db9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620021099062009039565b80156200215a5780601f106200212e576101008083540402835291602001916200215a565b820191906000526020600020905b8154815290600101906020018083116200213c57829003601f168201915b505050505081526020019060010190620020b9565b50505050815250508152602001906001019062002066565b50505050905090565b6000620021b081611388601e61025882619c406103e86205573062005b5c565b90506000620021c7600185900b628000006200906f565b90506000620021d882600a62005dfa565b9050600086620021ff57620021f96001600160801b038a1683608062005e37565b62002216565b620022166001600160801b03891660808462005e7d565b604051632631f2b160e11b81526001600160801b0382111560048201529091506000805160206201c4e983398151915290634c63e5629060240160006040518083038186803b1580156200226957600080fd5b505afa1580156200227e573d6000803e3d6000fd5b505050506000620022a5826200229f600a8862005ebb90919063ffffffff16565b62005ee0565b90506000805160206201c4e9833981519152634c63e562620022cf836001600160801b036200909a565b6001600160801b03168411158015620023045750620022f86001600160801b0384168562008fa3565b886001600160801b0316105b6040518263ffffffff1660e01b815260040162002325911515815260200190565b60006040518083038186803b1580156200233e57600080fd5b505afa15801562002353573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291508a9050620023a2576001600160801b038381166200238e868e841662008fa3565b6200239a919062008fa3565b1115620023ca565b6001600160801b03838116620023bb868f841662008fa3565b620023c7919062008fa3565b11155b6040518263ffffffff1660e01b8152600401620023eb911515815260200190565b60006040518083038186803b1580156200240457600080fd5b505afa15801562002419573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291506200244390508560001962008fcf565b8c6001600160801b0316111580156200248b5750620024736001600160801b031960808d901b1660001962009009565b620024886001600160801b038e16876200901f565b11155b80156200252e5750620024a087600a62005ebb565b620024b490670de0b6b3a76400006200909a565b6001600160801b0316620024ef670de0b6b3a76400007d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61162008fcf565b620024fb91906200901f565b6001600160801b031960808d901b166200251f6001600160801b038f16886200901f565b6200252b919062008fa3565b11155b6040518263ffffffff1660e01b81526004016200254f911515815260200190565b60006040518083038186803b1580156200256857600080fd5b505afa1580156200257d573d6000803e3d6000fd5b5050505050506000620025a3888a6001600160801b0316620058f390919063ffffffff16565b905060008080620025d387600a8c89620025c76001600160801b038e168362005f2e565b89949392919062005f57565b919450925090506200261d620025ea848c620061b3565b6001600160801b0316896001600160801b03166040518060600160405280602181526020016201c4c860219139620061c6565b6000620026378b62002630868562005adb565b90620061b3565b6001600160801b031690506000808c62002677576200266760808988821c5b6001600160801b03169190620061fe565b6001600160801b03861662002699565b6200268e886001600160801b03881660806200622a565b620026998660801c90565b6001600160801b031691509150620026cc82826040518060600160405280602181526020016201c5546021913962005d94565b60008d620026e857620026e28460808b620061fe565b620026f6565b620026f6898560806200622a565b90506200271e82826040518060600160405280602181526020016201c533602191396200629d565b50505050505050505050505050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562002038576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162002019575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562002038576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162002019575050505050905090565b6000808360ff161180156200280c575060008260ff16115b62002823576200281d8284620090bd565b6200283d565b6001620028318385620090bd565b6200283d9190620090d9565b60ff1690505b92915050565b6001600160801b038316608083901b1762002866818380620062d5565b50505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620021875760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200293d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620028fe5790505b5050505050815250508152602001906001019062002890565b604051632631f2b160e11b815262ffffff828116908416141560048201526000805160206201c4e983398151915290634c63e5629060240160006040518083038186803b158015620029a757600080fd5b505afa158015620029bc573d6000803e3d6000fd5b505050506001600160801b038416608084901b1762ffffff808416908316108015620029f157506000856001600160801b0316115b8062002a1b57508262ffffff168262ffffff1611801562002a1b57506000846001600160801b0316115b1562002ac6576040805162ffffff841660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663227bd87160e21b179052905163f28dceb360e01b81526000805160206201c4e98339815191529163f28dceb39162002a919190600401620090f5565b600060405180830381600087803b15801562002aac57600080fd5b505af115801562002ac1573d6000803e3d6000fd5b505050505b62002ad3818484620062d5565b5050505050565b6000805160206201c4e9833981519152634c63e562821580159062002b0857506000876001600160801b0316115b801562002b1e57506000866001600160801b0316115b801562002b3457506000856001600160801b0316115b801562002b4a57506000846001600160801b0316115b801562002b6d57506001600160801b0362002b6a86821689831662008fa3565b11155b801562002b9057506001600160801b0362002b8d85821688831662008fa3565b11155b801562002bc2575062002bb06001600160801b0380871690891662008fa3565b62002bbe9060001962008fcf565b8311155b801562002be557506001600160801b0362002be285821688831662008fa3565b11155b801562002c3d5750608062002c076001600160801b0380871690891662008fa3565b62002c16911b60001962009009565b62002c2e6001600160801b03808816908a1662008fa3565b62002c3a90856200901f565b11155b801562002cb357507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611608062002c7e6001600160801b03808816908a1662008fa3565b901b62002c986001600160801b03808916908b1662008fa3565b62002ca490866200901f565b62002cb0919062008fa3565b11155b6040518263ffffffff1660e01b815260040162002cd4911515815260200190565b60006040518083038186803b15801562002ced57600080fd5b505afa15801562002d02573d6000803e3d6000fd5b50600160801b925050506001600160801b03868116608087811b919091179186169085901b1760008062002d39848488886200592d565b909250905062002d4a848262006340565b935062002d58828662008fa3565b9450600062002d72836001600160801b038716886200637c565b9050600062002d9762002d858760801c90565b85906001600160801b0316896200637c565b905060008162002daa848b60806200622a565b62002db6919062008fa3565b9050600062002dc58560801c90565b6001600160801b031662002df662002de3876001600160801b031690565b8c906001600160801b031660806200622a565b62002e02919062008fa3565b905062002e638282608062002e1960018f62009009565b62002e27911c600262008fa3565b6040518060400160405280601c81526020017f7465737446757a7a5f5472794578706c6f69745368617265733a3a3100000000815250620063a0565b5050505050505050505050505050565b6001600160801b038316608083901b81811791838102916001600160801b0319168201901580159062002eba57508362002eb76001600160801b0388168462008fcf565b14155b8062002ec557508181105b1562002f4f57604051630618f58760e51b81526363f1e01f60e01b60048201526000805160206201c4e98339815191529063c31eb0e090602401600060405180830381600087803b15801562002f1a57600080fd5b505af115801562002f2f573d6000803e3d6000fd5b5050505062002f4884846200590690919063ffffffff16565b5062002fd2565b600062002f5d848662005906565b905062002fd0816001600160801b0319608089901b1662002f886001600160801b038b16896200901f565b62002f94919062008fa3565b6040518060400160405280601881526020017f7465737446757a7a5f4765744c69717569646974793a3a3100000000000000008152506200629d565b505b505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562002187578382906000526020600020018054620030209062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200304e9062009039565b80156200309f5780601f1062003073576101008083540402835291602001916200309f565b820191906000526020600020905b8154815290600101906020018083116200308157829003601f168201915b50505050508152602001906001019062002ffe565b600080620030c88462ffffff871662008fa3565b905060008360ff1611620030dd5780620030f9565b620030ec60ff84168262009009565b620030f990600162008fa3565b9050620031068162006408565b9150505b9392505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620021875760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620031e257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620031a35790505b5050505050815250508152602001906001019062003135565b6001600160801b038216608082901b17620032656200321c82600162006434565b846001600160801b03166000146040518060400160405280601681526020017f7465737446757a7a5f42696e4973456d7074793a3a310000000000000000000081525062006466565b620032bf6200327682600062006434565b836001600160801b03166000146040518060400160405280601681526020017f7465737446757a7a5f42696e4973456d7074793a3a320000000000000000000081525062006466565b505050565b6000620032e481611388601e61025882619c406103e86205573062005b5c565b90506000620032fb600185900b628000006200906f565b905060006200330c82600a62005dfa565b905060008662003333576200332d6001600160801b038a1683608062005e37565b6200334a565b6200334a6001600160801b03891660808462005e7d565b604051632631f2b160e11b81526001600160801b0382111560048201529091506000805160206201c4e983398151915290634c63e5629060240160006040518083038186803b1580156200339d57600080fd5b505afa158015620033b2573d6000803e3d6000fd5b505050506000620033d3826200229f600a8862005ebb90919063ffffffff16565b90506000805160206201c4e9833981519152634c63e562620033fd836001600160801b036200909a565b6001600160801b03168411158015620034335750620034266001600160801b0384168562008fa3565b886001600160801b031610155b6040518263ffffffff1660e01b815260040162003454911515815260200190565b60006040518083038186803b1580156200346d57600080fd5b505afa15801562003482573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291508a9050620034d1576001600160801b03838116620034bd868e841662008fa3565b620034c9919062008fa3565b1115620034f9565b6001600160801b03838116620034ea868f841662008fa3565b620034f6919062008fa3565b11155b6040518263ffffffff1660e01b81526004016200351a911515815260200190565b60006040518083038186803b1580156200353357600080fd5b505afa15801562003548573d6000803e3d6000fd5b506000805160206201c4e98339815191529250634c63e56291506200357290508560001962008fcf565b8c6001600160801b031611158015620035ba5750620035a26001600160801b031960808d901b1660001962009009565b620035b76001600160801b038e16876200901f565b11155b80156200365d5750620035cf87600a62005ebb565b620035e390670de0b6b3a76400006200909a565b6001600160801b03166200361e670de0b6b3a76400007d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61162008fcf565b6200362a91906200901f565b6001600160801b031960808d901b166200364e6001600160801b038f16886200901f565b6200365a919062008fa3565b11155b6040518263ffffffff1660e01b81526004016200367e911515815260200190565b60006040518083038186803b1580156200369757600080fd5b505afa158015620036ac573d6000803e3d6000fd5b5050505050506000620036d2888a6001600160801b0316620058f390919063ffffffff16565b905060008080620036f687600a8c89620025c76001600160801b038e168362005f2e565b919450925090506200375c6200370d848c620061b3565b6001600160801b0316896001600160801b03166040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a31000000815250620061c6565b60006200376a848c620061b3565b6001600160801b031690506000808c6200379c576200378c8360808a620061fe565b6001600160801b038616620037b5565b620037aa888460806200622a565b620037b58660801c90565b6001600160801b0316915091506200380482826040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a3200000081525062005d94565b50600091506200381c90508b62002630868562005adb565b90506000806001600160801b03831615620038a3578c62003868576200384e6001600160801b03841660808a620061fe565b6200386260808a620026566001886200909a565b620038a7565b6200387f886001600160801b03851660806200622a565b62003862620038906001866200909a565b8a906001600160801b031660806200622a565b6000805b909250905062003903620038bd868f15620061b3565b6001600160801b0316836040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a33000000815250620061c6565b62001fcd62003914868f15620061b3565b6001600160801b0316826040518060400160405280601d81526020017f7465737446757a7a5f676574416d6f756e747346756c6c42696e3a3a3400000081525062005d94565b601d546001906200397f906001600160a01b0316306001600160801b0386166200649e565b601c54620039a1906001600160a01b0316306001600160801b0385166200649e565b6001600160801b038316608083901b176000620039fa620039f2620039c86002876200910a565b620039d56002896200910a565b6001600160801b03169060801b6001600160801b03919091161790565b839062005adb565b9050600062003a0a838362005adb565b601d54601c5491925062003a2e9184916001600160a01b03908116911687620064ad565b601d546040516370a0823160e01b81526001600160a01b03868116600483015262003ae79216906370a0823190602401602060405180830381865afa15801562003a7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003aa2919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3100000000000000000000000060208201526001600160801b038516906200629d565b601c546040516370a0823160e01b81526001600160a01b03868116600483015262003bab9216906370a0823190602401602060405180830381865afa15801562003b35573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b5b919062009133565b62003b668460801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a320000000000000000000000008152506200629d565b601d546040516370a0823160e01b815230600482015262003c62916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003bf7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c1d919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3300000000000000000000000060208201526001600160801b038416906200629d565b601c546040516370a0823160e01b815230600482015262003d24916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003cae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cd4919062009133565b62003cdf8360801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a340000000000000000000000008152506200629d565b601d5462003d3e9082906001600160a01b03168662006511565b601d546040516370a0823160e01b81526001600160a01b03868116600483015262003df79216906370a0823190602401602060405180830381865afa15801562003d8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003db2919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3500000000000000000000000060208201526001600160801b038616906200629d565b601c546040516370a0823160e01b81526001600160a01b03868116600483015262003ebb9216906370a0823190602401602060405180830381865afa15801562003e45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e6b919062009133565b62003e768460801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a360000000000000000000000008152506200629d565b601d546040516370a0823160e01b815230600482015262003f6b916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003f07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f2d919062009133565b60006040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a370000000000000000000000008152506200629d565b601c546040516370a0823160e01b81523060048201526200402d916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003fb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fdd919062009133565b62003fe88360801c90565b6001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f5472616e736665723a3a380000000000000000000000008152506200629d565b601c54620040479082906001600160a01b0316866200654f565b601d546040516370a0823160e01b81526001600160a01b038681166004830152620041009216906370a0823190602401602060405180830381865afa15801562004095573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040bb919062009133565b60408051808201909152601481527f7465737446757a7a5f5472616e736665723a3a3900000000000000000000000060208201526001600160801b038616906200629d565b601c546040516370a0823160e01b81526001600160a01b038681166004830152620041c49216906370a0823190602401602060405180830381865afa1580156200414e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004174919062009133565b6200417f8560801c90565b6001600160801b03166040518060400160405280601581526020017f7465737446757a7a5f5472616e736665723a3a313000000000000000000000008152506200629d565b601d546040516370a0823160e01b815230600482015262004274916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004236919062009133565b60006040518060400160405280601581526020017f7465737446757a7a5f5472616e736665723a3a313100000000000000000000008152506200629d565b601c546040516370a0823160e01b815230600482015262002fd2916001600160a01b0316906370a0823190602401602060405180830381865afa158015620042c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042e6919062009133565b60006040518060400160405280601581526020017f7465737446757a7a5f5472616e736665723a3a313200000000000000000000008152506200629d565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200438b91906200914d565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620043ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043f491906200914d565b905062004403828b886200649e565b62004410818b876200649e565b60006200441e8585620027f4565b905060008167ffffffffffffffff8111156200443e576200443e6200916d565b60405190808252806020026020018201604052801562004468578160200160208202803683370190505b50905060005b8281101562004567576000620044868b8389620030b4565b905060008b62ffffff168262ffffff1610158015620044a8575060008960ff16115b620044b5576000620044d6565b620044d6620044d060ff8b16670de0b6b3a764000062008fcf565b6200655c565b905060008c62ffffff168362ffffff1611158015620044f8575060008960ff16115b6200450557600062004520565b62004520620044d060ff8b16670de0b6b3a764000062008fcf565b90506200452f82828562006588565b85858151811062004544576200454462009183565b602002602001018181525050505050806200455f9062009199565b90506200446e565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201c4e9833981519152906306447d5690602401600060405180830381600087803b158015620045b957600080fd5b505af1158015620045ce573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562004622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004648919062008f6d565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562004699573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046bf919062008f6d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200471f57600080fd5b505af115801562004734573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b81526004016200476a93929190620091b5565b6000604051808303816000875af11580156200478a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fcd919081019062009276565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562002187578382906000526020600020018054620047fa9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620048289062009039565b8015620048795780601f106200484d5761010080835404028352916020019162004879565b820191906000526020600020905b8154815290600101906020018083116200485b57829003601f168201915b505050505081526020019060010190620047d8565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620048de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200490491906200932b565b9998505050505050505050565b60075460009060ff16156200492a575060075460ff1690565b604051630667f9d760e41b81526000805160206201c4e9833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200499e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049c4919062009133565b1415905090565b6000805160206201c4e9833981519152634c63e5628215801590620049f05750838310155b6040518263ffffffff1660e01b815260040162004a11911515815260200190565b60006040518083038186803b15801562004a2a57600080fd5b505afa15801562004a3f573d6000803e3d6000fd5b505050506001600160801b038416608084901b17600062004a62828585620065c3565b90506001600160801b0380821690608083901c9062004ac990839062004a8d9089908c16896200637c565b6040518060400160405280601d81526020017f7465737446757a7a5f476574416d6f756e744f75744f6642696e3a3a310000008152506200629d565b62004b256001600160801b038083169062004ae99089908b16896200637c565b6040518060400160405280601d81526020017f7465737446757a7a5f476574416d6f756e744f75744f6642696e3a3a320000008152506200629d565b5050505050505050565b6000805160206201c4e9833981519152634c63e562831580159062004b6a57506001600160801b0362004b678782168a831662008fa3565b11155b801562004b8d57506001600160801b0362004b8a86821689831662008fa3565b11155b801562004bdf575062004bad6001600160801b03808816908a1662008fa3565b158062004bdf575062004bcd6001600160801b03808816908a1662008fa3565b62004bdb9060001962008fcf565b8411155b801562004c375750608062004c016001600160801b03808816908a1662008fa3565b62004c10911b60001962009009565b62004c286001600160801b03808916908b1662008fa3565b62004c3490866200901f565b11155b801562004cad57507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611608062004c786001600160801b03808916908b1662008fa3565b901b62004c926001600160801b03808a16908c1662008fa3565b62004c9e90876200901f565b62004caa919062008fa3565b11155b6040518263ffffffff1660e01b815260040162004cce911515815260200190565b60006040518083038186803b15801562004ce757600080fd5b505afa15801562004cfc573d6000803e3d6000fd5b505050506001600160801b038616608086901b17600062004d1e828562005906565b90506000805160206201c4e9833981519152634c63e562851580159062004d455750828511155b6040518263ffffffff1660e01b815260040162004d66911515815260200190565b60006040518083038186803b15801562004d7f57600080fd5b505afa15801562004d94573d6000803e3d6000fd5b505050506001600160801b038616608086901b1760008062004db9858489896200592d565b9150915062004de98160001c8460001c6040518060600160405280602a81526020016201c509602a9139620061c6565b600062004df7848962005906565b9050600085158062004e07575087155b62004e1f5762004e198289886200637c565b62004e2a565b62004e2a8262006643565b905062004e5284826040518060600160405280602a81526020016201c575602a91396200629d565b50505050505050505050505050565b6000805160206201c4e9833981519152634c63e56262004e89846001600160801b036200909a565b6001600160801b0316866001600160801b031610801562004ecd575062004eb8836001600160801b036200909a565b6001600160801b0316856001600160801b0316105b6040518263ffffffff1660e01b815260040162004eee911515815260200190565b60006040518083038186803b15801562004f0757600080fd5b505afa15801562004f1c573d6000803e3d6000fd5b5050601d5430925062004f4f91506001600160a01b03168262004f40868962008fe6565b6001600160801b03166200649e565b601c5462004f6d906001600160a01b03168262004f40858862008fe6565b601d54601c546001600160801b038716608087901b179160009162004fa19184916001600160a01b039182169116620066ba565b60408051808201909152601481527f7465737446757a7a5f52656365697665643a3a3100000000000000000000000060208201529091506001600160801b0380831691608084901c9162004ffa9184918a16906200629d565b6200504581876001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f52656365697665643a3a320000000000000000000000008152506200629d565b601d546200505e9085906001600160a01b0316620066db565b92506001600160801b0383166001600160801b03169150620050c082886001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f52656365697665643a3a330000000000000000000000008152506200629d565b601c54620050d99085906001600160a01b03166200670f565b9250620050e68360801c90565b6001600160801b031690506200513c81876001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f52656365697665643a3a340000000000000000000000008152506200629d565b505050505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801562002038576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162002019575050505050905090565b670de0b6b3a7640000831115620052075760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620052158383620027f4565b905060008167ffffffffffffffff8111156200523557620052356200916d565b6040519080825280602002602001820160405280156200525f578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200528057620052806200916d565b604051908082528060200260200182016040528015620052aa578160200160208202803683370190505b50905060005b83811015620053b8576000620052c8898388620030b4565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa1580156200531e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005344919062009133565b90508162ffffff1685848151811062005361576200536162009183565b602090810291909101015262005381818a670de0b6b3a76400006200637c565b84848151811062005396576200539662009183565b602002602001018181525050505080620053b09062009199565b9050620052b0565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201c4e98339815191529063ca669fa790602401600060405180830381600087803b1580156200540a57600080fd5b505af11580156200541f573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062005457908d908d9087908790600401620093d5565b6000604051808303816000875af115801562005477573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620054a1919081019062009484565b5050505050505050505050565b601c546001600160a01b031615620055235760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200550957600080fd5b505af11580156200551e573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620055985760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200557e57600080fd5b505af115801562005593573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200560d5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620055f357600080fd5b505af115801562005608573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620056825760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200566857600080fd5b505af11580156200567d573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620056f75760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620056dd57600080fd5b505af1158015620056f2573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200576c5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200575257600080fd5b505af115801562005767573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620057e15760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620057c757600080fd5b505af1158015620057dc573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620058515760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200583c57600080fd5b505af115801562002866573d6000803e3d6000fd5b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b158015620058de57600080fd5b505af115801562002ad3573d6000803e3d6000fd5b60801b6001600160801b03919091161790565b60006001600160801b038316608084901c620059248282866200674a565b95945050505050565b6000806001600160801b038516608086901c826200594d8383896200674a565b9050806000036200596957506000935083925062005ad2915050565b6000620059778a8962005906565b905080158062005985575086155b15620059a557620059968262006643565b89955095505050505062005ad2565b620059b28288836200637c565b95506000620059c387838a620067bc565b90508083111562005a73576000620059dc828562009009565b9050600160801b811062005a2457608081901c858111620059fe578062005a00565b855b905062005a0e818762009009565b955062005a20608082901b8362009009565b9150505b89811062005a5f57600062005a3a8b8362008fcf565b905086811162005a4b578062005a4d565b865b905062005a5b818862009009565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61162005aa962005aa28d8d62006340565b8b62005906565b111562005ac95760405163a2d7652760e01b815260040160405180910390fd5b50889450505050505b94509492505050565b8082038281118062005af857506001600160801b03808416908216115b15620028435760405163e599af5560e01b815260040160405180910390fd5b60006001600160801b0383811690608085811c9185169085901c8184118062005b515750806001600160801b0316836001600160801b0316115b979650505050505050565b60008561ffff168761ffff16118062005b7a5750610fff8661ffff16115b8062005b8b57506127108561ffff16115b8062005b9c57506109c48361ffff16115b8062005baf5750620fffff8262ffffff16115b1562005bce57604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a161762004904565b60008160000362005c865750600062005d8a565b6001600160801b038416608085901c60008062005cd362005cbf62005cac8d8b62006340565b8862005cb9818c62008fa3565b620065c3565b6001600160801b0381169160809190911c90565b91509150836001600160801b0316826001600160801b0316111562005d3f57600062005d2062005d048c8c62005ebb565b62005d1084876200909a565b6001600160801b031690620067de565b905062005d36816001600160801b031660801b90565b95505062005d85565b826001600160801b0316816001600160801b0316111562005d8557600062005d7862005d6c8c8c62005ebb565b62005d1085886200909a565b6001600160801b03169550505b505050505b9695505050505050565b604051630389490b60e61b81526000805160206201c4e98339815191529063e25242c09062005dcc90869086908690600401620094bd565b60006040518083038186803b15801562005de557600080fd5b505afa15801562002fd0573d6000803e3d6000fd5b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff190162005924828262006822565b600062005e468484846200622a565b9050600160ff83161b8062005e5f5762005e5f62008fb9565b838509156200310a5762005e7560018262008fa3565b949350505050565b600062005e8c848484620061fe565b9050818062005e9f5762005e9f62008fb9565b600160ff85161b8509156200310a5762005e7560018262008fa3565b60006200310a62005ecd848462006aa1565b62005ed9858562006ae7565b0162006b0d565b60008162005eee8162006b38565b6001600160801b03808416670de0b6b3a7640000819003918291600019918816028201018162005f225762005f2262008fb9565b049250505b5092915050565b60008162005f475762005f418360801b90565b6200310a565b6001600160801b0383166200310a565b600080808062005f6d62ffffff87168962005dfa565b9050600062005f7e8b8915620061b3565b905060008862005faf5762005fa962005fa36001600160801b03841685608062005e37565b62006b0d565b62005fca565b62005fca62005fa36001600160801b03841660808662005e7d565b9050600062005fda8c8c62005ebb565b9050600062005ff36001600160801b0384168362005ee0565b905062006001818462008fe6565b92506000620060118a8d620061b3565b9050600080856001600160801b0316836001600160801b0316106200603e575084915082905085620060c1565b620060536001600160801b0384168662006b6b565b915060006200606383856200909a565b6001600160801b031690508e6200608c576200608662005fa38260808c620061fe565b6200609e565b6200609e62005fa3828b60806200622a565b9150876001600160801b0316826001600160801b03161115620060bf578791505b505b8d620060ff57620060db836001600160801b031660801b90565b6001600160801b038216620060f9846001600160801b031660801b90565b62006128565b6001600160801b0383166200611d826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611620061866200617f8562006178888f6200634090919063ffffffff16565b9062005adb565b8362005906565b1115620061a65760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b60008162005f475762005f418360801c90565b60405163d17d4b0d60e01b81526000805160206201c4e98339815191529063d17d4b0d9062005dcc90869086908690600401620094bd565b600060ff831684811b9061ffff6101008290031686901c9062005d8a9087906001901b86858562006ba4565b60008060006200623b868662006c56565b915091508160001462006252578360ff1682901c92505b80156200629457600160ff85161b81106200628057604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b6040516388b44c8560e01b81526000805160206201c4e9833981519152906388b44c859062005dcc90869086908690600401620094bd565b8162ffffff168162ffffff16108015620062f25750608083901b15155b806200631957508162ffffff168162ffffff161180156200631957506001600160801b0383115b15620032bf5760405163227bd87160e21b815262ffffff82166004820152602401620051fe565b818101828110806200635d57506001600160801b03808416908216105b1562002843576040516316692de960e01b815260040160405180910390fd5b60008060006200638d868662006c56565b9150915062005d8a868686858562006ba4565b604051637b88583160e11b81526000805160206201c4e98339815191529063f710b06290620063da908790879087908790600401620094de565b60006040518083038186803b158015620063f357600080fd5b505afa15801562004b25573d6000803e3d6000fd5b8062ffffff811681146200642f57604051639b63641560e01b815260040160405180910390fd5b919050565b6000816200645757620064478360801c90565b6001600160801b0316156200310a565b50506001600160801b03161590565b6040516326d8cf3f60e11b81526000805160206201c4e983398151915290634db19e7e9062005dcc9086908690869060040162009505565b620032bf838383600062006c75565b6001600160801b038416608085901c8115620064e257620064e26001600160a01b038616846001600160801b03851662006e70565b6001600160801b0381161562002fd25762002fd26001600160a01b038516846001600160801b03841662006e70565b60006001600160801b0384165b90506001600160801b038116156200286657620028666001600160a01b038416836001600160801b03841662006e70565b60006200651e8460801c90565b8067ffffffffffffffff811681146200642f5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff8216811762005e75565b60006001600160801b038416608085901c82808315620065fa57620065f762005fa3886001600160801b038716896200637c565b91505b6001600160801b0383161562006627576200662462005fa3886001600160801b038616896200637c565b90505b608081901b6001600160801b0383161798975050505050505050565b6000816000036200665657506000919050565b6000620066638362006ec3565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff169050828210620066b457826200310a565b50919050565b600062005e758462006178620066d08562006f66565b620039d58762006f66565b60006001600160801b03831662005e7581620066f78562006f66565b6200670391906200909a565b6001600160801b031690565b6000806200671d8460801c90565b905062005e75816200672f8562006f66565b6200673b91906200909a565b6001600160801b031660801b90565b600083156200678a5750808302818482816200676a576200676a62008fb9565b04146200678a576040516363f1e01f60e01b815260040160405180910390fd5b82156200310a5760809290921b918201828110156200310a576040516363f1e01f60e01b815260040160405180910390fd5b6000620067cb8484846200637c565b9050818062005e5f5762005e5f62008fb9565b600081620067ec8162006b38565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a7640000919091010262005f22565b600080600083600003620068405750600160801b9150620028439050565b5082600081121562006853579015906000035b6210000081101562006a5957600160801b9250846001600160801b038111156200687f57911591600019045b6001821615620068915792830260801c925b800260801c6002821615620068a85792830260801c925b800260801c6004821615620068bf5792830260801c925b800260801c6008821615620068d65792830260801c925b800260801c6010821615620068ed5792830260801c925b800260801c6020821615620069045792830260801c925b800260801c60408216156200691b5792830260801c925b8002608090811c90821615620069335792830260801c925b800260801c6101008216156200694b5792830260801c925b800260801c610200821615620069635792830260801c925b800260801c6104008216156200697b5792830260801c925b800260801c610800821615620069935792830260801c925b800260801c611000821615620069ab5792830260801c925b800260801c612000821615620069c35792830260801c925b800260801c614000821615620069db5792830260801c925b800260801c618000821615620069f35792830260801c925b800260801c6201000082161562006a0c5792830260801c925b800260801c6202000082161562006a255792830260801c925b800260801c6204000082161562006a3e5792830260801c925b800260801c6208000082161562006a575792830260801c925b505b8260000362006a8657604051631dba598d60e11b81526004810186905260248101859052604401620051fe565b8162006a93578262005924565b620059248360001962008fcf565b60008062006aaf8462006fd9565b62ffffff169050801562005f275760008361ffff1662006acf8662006feb565b62ffffff160290506064606382800284020162005f22565b60008161ffff1662006af98462006ffd565b61ffff16026402540be40002905092915050565b806001600160801b03811681146200642f57604051632f45db3d60e21b815260040160405180910390fd5b67016345785d8a0000816001600160801b0316111562001ab557604051638630bc6b60e01b815260040160405180910390fd5b60008162006b798162006b38565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b60008160000362006bca5783838162006bc15762006bc162008fb9565b04905062005924565b83821062006beb576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162006ccb916200952a565b600060405180830381855afa9150503d806000811462006d08576040519150601f19603f3d011682016040523d82523d6000602084013e62006d0d565b606091505b5091505060008180602001905181019062006d29919062009133565b905062006d638462006d5c8762006d556370a0823160e01b62006d4e600c8d6200700a565b9062007030565b906200704e565b9062007077565b821562002fd25760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162006dae91906200952a565b600060405180830381855afa9150503d806000811462006deb576040519150601f19603f3d011682016040523d82523d6000602084013e62006df0565b606091505b5091505060008180602001905181019062006e0c919062009133565b90508286101562006e375762006e23868462009009565b62006e2f908262009009565b905062006e52565b62006e43838762009009565b62006e4f908262008fa3565b90505b62004b258162006d5c6318160ddd60e01b62006d4e600c8d6200700a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905262002866848262007087565b60006001600160801b0382111562006edd5750608090811c905b67ffffffffffffffff82111562006ef657604091821c91015b63ffffffff82111562006f0b57602091821c91015b61ffff82111562006f1e57601091821c91015b60ff82111562006f3057600891821c91015b600f82111562006f4257600491821c91015b600382111562006f5457600291821c91015b60018211156200642f57600101919050565b6040516370a0823160e01b815230600482015260009062002843906001600160a01b038416906370a0823190602401602060405180830381865afa15801562006fb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fa3919062009133565b6000620028438260361c62ffffff1690565b6000620028438260701c620fffff1690565b600061ffff821662002843565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200310a565b60038201805463ffffffff191660e083901c1790556000826200310a565b6002820180546001810182556000918252602082206001600160a01b038416910155826200310a565b620070838282620070fd565b5050565b600080600052602060008351602085016000875af19050808015620070cc573d8015620070be5760016000511483169250620070c5565b843b151592505b50620070dd565b3d15620070dd573d6000803e3d6000fd5b5080620032bf5760405163197138bd60e11b815260040160405180910390fd5b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200717057602002820191906000526020600020905b8154815260200190600101908083116200715b575b5050505050905060008362007185836200750a565b6040516020016200719892919062009548565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620071ec9186918891016200957b565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007227576200722587620075b7565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620072689187918991016200957b565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620072af91906200952a565b600060405180830381855afa9150503d8060008114620072ec576040519150601f19603f3d011682016040523d82523d6000602084013e620072f1565b606091505b5091506200730e905081620073088860206200901f565b620075c4565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201c4e98339815191529063667f9d7090604401602060405180830381865afa15801562007370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007396919062009133565b90508082146200744d5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620051fe565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201c4e9833981519152906370ca10bb90606401600060405180830381600087803b158015620074ac57600080fd5b505af1158015620074c1573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff19169055620074f660028b016000620086af565b896004016000905550505050505050505050565b60606000825160206200751e91906200901f565b67ffffffffffffffff8111156200753957620075396200916d565b6040519080825280601f01601f19166020018201604052801562007564576020820181803683370190505b50905060005b835181101562005f275760008482815181106200758b576200758b62009183565b602002602001015190508082602002602001840152508080620075ae9062009199565b9150506200756a565b6000620028438262007666565b60008060006020855111620075db578451620075de565b60205b905060005b818110156200765c57620075f98160086200901f565b8662007606838862008fa3565b8151811062007619576200761962009183565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620076538162009199565b915050620075e3565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620076d857602002820191906000526020600020905b815481526020019060010190808311620076c3575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062007724925085918791016200957b565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620077c3576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620077939185918791016200957b565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620077d18362008508565b604051602001620077e492919062009548565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200785457600080fd5b505af115801562007869573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200788a91906200952a565b600060405180830381855afa9150503d8060008114620078c7576040519150601f19603f3d011682016040523d82523d6000602084013e620078cc565b606091505b509150620078e9905081620078e38760206200901f565b620085b5565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201c4e9833981519152906365bc9481906024016000604051808303816000875af115801562007946573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620079709190810190620095b7565b509050805160010362007d145760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620079c857620079c862009183565b60200260200101516040518363ffffffff1660e01b815260040162007a029291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007a20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a46919062009133565b90508062007ab1577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062007a865762007a8662009183565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462007b665760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620051fe565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162007b9e9291906200957b565b604051602081830303815290604052805190602001208560008151811062007bca5762007bca62009183565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062007c245762007c2462009183565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007c6f918a918c91016200957b565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162007cd9918a918c91016200957b565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200837d565b6001815111156200830c5760005b8151811015620083055760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062007d765762007d7662009183565b60200260200101516040518363ffffffff1660e01b815260040162007db09291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007dce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007df4919062009133565b90508062007e5e577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062007e335762007e3362009183565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462007e6d5750620082f0565b82518119906000805160206201c4e9833981519152906370ca10bb908c9087908790811062007ea05762007ea062009183565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b15801562007ef957600080fd5b505af115801562007f0e573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162007f3091906200952a565b600060405180830381855afa9150503d806000811462007f6d576040519150601f19603f3d011682016040523d82523d6000602084013e62007f72565b606091505b50909250905062007f8a81620078e38c60206200901f565b96505080801562007f9a57508186145b1562008232577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162007fd89291906200957b565b6040516020818303038152906040528051906020012088888151811062008003576200800362009183565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200805c576200805c62009183565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620080a7918d918f91016200957b565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620081349291906200957b565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620081b757620081b762009183565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200821057600080fd5b505af115801562008225573d6000803e3d6000fd5b5050505050505062008305565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200827a576200827a62009183565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620082d357600080fd5b505af1158015620082e8573d6000803e3d6000fd5b505050505050505b80620082fc8162009199565b91505062007d22565b506200837d565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620051fe565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620083c19188918a91016200957b565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200845e5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620051fe565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200848f60028a016000620086af565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620084d59188918a91016200957b565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200851c91906200901f565b67ffffffffffffffff8111156200853757620085376200916d565b6040519080825280601f01601f19166020018201604052801562008562576020820181803683370190505b50905060005b835181101562005f2757600084828151811062008589576200858962009183565b602002602001015190508082602002602001840152508080620085ac9062009199565b91505062008568565b60008060006020855111620085cc578451620085cf565b60205b905060005b818110156200765c57620085ea8160086200901f565b86620085f7838862008fa3565b815181106200860a576200860a62009183565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620086448162009199565b915050620085d4565b610b08806200962383390190565b610bfd806200a12b83390190565b610c18806200ad2883390190565b613199806200b94083390190565b61615c806200ead983390190565b614c808062014c3583390190565b612c1380620198b583390190565b508054600082559060005260206000209081019062001ab591905b80821115620086e05760008155600101620086ca565b5090565b600060208284031215620086f757600080fd5b81356001600160e01b0319811681146200310a57600080fd5b80356001600160801b03811681146200642f57600080fd5b803561ffff811681146200642f57600080fd5b600080600080600080600060e0888a0312156200875757600080fd5b620087628862008710565b9650620087726020890162008710565b9550620087826040890162008728565b9450620087926060890162008710565b9350620087a26080890162008710565b925060a0880135915060c0880135905092959891949750929550565b6020808252825182820181905260009190848201906040850190845b81811015620088015783516001600160a01b031683529284019291840191600101620087da565b50909695505050505050565b60005b838110156200882a57818101518382015260200162008810565b50506000910152565b600081518084526200884d8160208601602086016200880d565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200891757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200890057605f19898503018352620088ed84865162008833565b948e01949350918d0191600101620088ce565b505050978a01979450509188019160010162008888565b50919a9950505050505050505050565b801515811462001ab557600080fd5b600080600080600060a086880312156200894f57600080fd5b6200895a8662008710565b94506200896a6020870162008710565b935060408601356200897c8162008927565b92506060860135600181900b81146200899457600080fd5b9150620089a46080870162008710565b90509295509295909350565b803560ff811681146200642f57600080fd5b60008060408385031215620089d657600080fd5b620089e183620089b0565b9150620089f160208401620089b0565b90509250929050565b803562ffffff811681146200642f57600080fd5b60008060006060848603121562008a2457600080fd5b62008a2f8462008710565b925062008a3f6020850162008710565b915062008a4f60408501620089fa565b90509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008b0057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562008aea5783516001600160e01b0319168252928b019260019290920191908b019062008abe565b50978a0197955050509187019160010162008a80565b50919998505050505050505050565b6000806000806080858703121562008b2657600080fd5b62008b318562008710565b935062008b416020860162008710565b925062008b5160408601620089fa565b915062008b6160608601620089fa565b905092959194509250565b600080600080600060a0868803121562008b8557600080fd5b62008b908662008710565b945062008ba06020870162008710565b935062008bb06040870162008710565b925062008bc06060870162008710565b949793965091946080013592915050565b60008060006060848603121562008be757600080fd5b62008bf28462008710565b925062008c026020850162008710565b9150604084013590509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008c6b57603f1988860301845262008c5885835162008833565b9450928501929085019060010162008c39565b5092979650505050505050565b60008060006060848603121562008c8e57600080fd5b62008c9984620089fa565b92506020840135915062008a4f60408501620089b0565b6000806040838503121562008cc457600080fd5b62008ccf8362008710565b9150620089f16020840162008710565b6001600160a01b038116811462001ab557600080fd5b600080600080600080600080610100898b03121562008d1357600080fd5b883562008d208162008cdf565b9750602089013562008d328162008cdf565b9650604089013562008d448162008cdf565b955062008d5460608a01620089fa565b94506080890135935060a0890135925062008d7260c08a01620089b0565b915062008d8260e08a01620089b0565b90509295985092959890939650565b60006020828403121562008da457600080fd5b6200310a8262008728565b6000806000806080858703121562008dc657600080fd5b62008dd18562008710565b935062008de16020860162008710565b93969395505050506040820135916060013590565b60008060008060008060c0878903121562008e1057600080fd5b62008e1b8762008710565b955062008e2b6020880162008710565b945062008e3b6040880162008710565b935062008e4b6060880162008710565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121562008e7c57600080fd5b62008e878562008710565b935062008e976020860162008710565b925062008ea76040860162008710565b915062008b616060860162008710565b600080600080600080600060e0888a03121562008ed357600080fd5b873562008ee08162008cdf565b9650602088013562008ef28162008cdf565b9550604088013562008f048162008cdf565b945062008f1460608901620089fa565b93506080880135925062008f2b60a08901620089b0565b915062008f3b60c08901620089b0565b905092959891949750929550565b6001600160a01b038316815260406020820152600062005e75604083018462008833565b60006020828403121562008f8057600080fd5b81516200310a8162008927565b634e487b7160e01b600052601160045260246000fd5b8082018082111562002843576200284362008f8d565b634e487b7160e01b600052601260045260246000fd5b60008262008fe15762008fe162008fb9565b500490565b6001600160801b0381811683821601908082111562005f275762005f2762008f8d565b8181038181111562002843576200284362008f8d565b808202811582820484141762002843576200284362008f8d565b600181811c908216806200904e57607f821691505b602082108103620066b457634e487b7160e01b600052602260045260246000fd5b808201828112600083128015821682158216171562009092576200909262008f8d565b505092915050565b6001600160801b0382811682821603908082111562005f275762005f2762008f8d565b60ff818116838216019081111562002843576200284362008f8d565b60ff828116828216039081111562002843576200284362008f8d565b6020815260006200310a602083018462008833565b60006001600160801b038084168062009127576200912762008fb9565b92169190910492915050565b6000602082840312156200914657600080fd5b5051919050565b6000602082840312156200916057600080fd5b81516200310a8162008cdf565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060018201620091ae57620091ae62008f8d565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200920257855183529483019491830191600101620091e4565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200924757620092476200916d565b604052919050565b600067ffffffffffffffff8211156200926c576200926c6200916d565b5060051b60200190565b6000806000606084860312156200928c57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115620092b357600080fd5b8501601f81018713620092c557600080fd5b8051620092dc620092d6826200924f565b6200921b565b81815260059190911b82018301908381019089831115620092fc57600080fd5b928401925b828410156200931c5783518252928401929084019062009301565b80955050505050509250925092565b600080600080600080600080610100898b0312156200934957600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e0890151620093878162008927565b809150509295985092959890939650565b600081518084526020808501945080840160005b83811015620093ca57815187529582019590820190600101620093ac565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262009403608083018562009398565b828103606084015262005b51818562009398565b600082601f8301126200942957600080fd5b815160206200943c620092d6836200924f565b82815260059290921b840181019181810190868411156200945c57600080fd5b8286015b8481101562009479578051835291830191830162009460565b509695505050505050565b6000602082840312156200949757600080fd5b815167ffffffffffffffff811115620094af57600080fd5b62005e758482850162009417565b83815282602082015260606040820152600062005924606083018462008833565b84815283602082015282604082015260806060820152600062005d8a608083018462008833565b8315158152821515602082015260606040820152600062005924606083018462008833565b600082516200953e8184602087016200880d565b9190910192915050565b6001600160e01b03198316815281516000906200956d8160048501602087016200880d565b919091016004019392505050565b825160009082906020808701845b83811015620095a75781518552938201939082019060010162009589565b5050948252509092019392505050565b60008060408385031215620095cb57600080fd5b825167ffffffffffffffff80821115620095e457600080fd5b620095f28683870162009417565b935060208501519150808211156200960957600080fd5b50620096188582860162009417565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400337465737446757a7a5f476574416d6f756e74734c6573735468616e42696e3a3a310000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737446757a7a5f676574536861726573416e64456666656374697665416d6f756e7473496e3a3a317465737446757a7a5f476574416d6f756e74734c6573735468616e42696e3a3a337465737446757a7a5f476574416d6f756e74734c6573735468616e42696e3a3a327465737446757a7a5f676574536861726573416e64456666656374697665416d6f756e7473496e3a3a32a26469706673582212207da5294ce3af50d14ada37a8899159462c67488aad90a0ae2a6f193f87e1339b64736f6c63430008140033","sourceMap":"369:18175:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;2566:3054;;;:::i;:::-;;6424:2463:99;;;;;;:::i;:::-;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;9234:3015:99:-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;5792:25:105;;;5780:2;5765:18;12046:168:93;5646:177:105;6202:216:99;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;5748:448:99:-;;;;;;:::i;:::-;;:::i;3850:1892::-;;;;;;:::i;:::-;;:::i;1363:715::-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;10461:8:105;10449:21;;;10431:40;;10419:2;10404:18;12220:205:93;10287:190:105;3069:146:5;;;:::i;8893:335:99:-;;;;;;:::i;:::-;;:::i;12255:3544::-;;;;;;:::i;:::-;;:::i;16838:1704::-;;;;;;:::i;:::-;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;649:708:99:-;;;;;;:::i;:::-;;:::i;2084:1760::-;;;;;;:::i;:::-;;:::i;15805:1027::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;14725:4:105;14713:17;;;14695:36;;14683:2;14668:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;14725:4:105;14713:17;;;14695:36;;14683:2;14668:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;14725:4:105;14713:17;;;14695:36;;14683:2;14668:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;14725:4:105;14713:17;;;14695:36;;14683:2;14668:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;14725:4:105;14713:17;;;14695:36;;14683:2;14668:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;14725:4:105;14713:17;;;14695:36;;14683:2;14668:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;15353:74:105;15443:18;;;15436:30;;;;15502:1;15482:18;;;15475:29;15540:9;15520:18;;;15513:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;15567:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;15809:74:105;;;;15899:18;;;15892:30;;;;15938:18;;;15931:29;-1:-1:-1;;;15976:18:105;;;15969:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;16020:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;16262:74:105;;;;16352:18;;;16345:30;;;;16391:18;;;16384:29;-1:-1:-1;;;16429:18:105;;;16422:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;16473:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;16715:74:105;;;;16805:18;;;16798:30;;;;16844:18;;;16837:29;-1:-1:-1;;;16882:18:105;;;16875:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;16926:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;17168:74:105;;;;17258:18;;;17251:30;;;;17297:18;;;17290:29;-1:-1:-1;;;17335:18:105;;;17328:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;17379:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;17621:74:105;;;;17711:18;;;17704:30;;;;17750:18;;;17743:29;-1:-1:-1;;;17788:18:105;;;17781:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;17832:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;18074:74:105;18164:18;;;18157:30;18223:1;18203:18;;;18196:29;-1:-1:-1;;;18241:18:105;;;18234:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;18284:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;18526:74:105;18616:18;;;18609:30;18675:1;18655:18;;;18648:29;18713:10;18693:18;;;18686:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;18741:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;19068:15:105;;;19050:34;;19120:15;;;;19115:2;19100:18;;19093:43;19167:2;19152:18;;19145:34;18977:2;18962:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;19373:55:105;;;19355:74;;19343:2;19328:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;19355:74:105;;;;3824:7:93;;;;:31;;19328:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;20017:15:105;;;19999:34;;20069:15;;;20064:2;20049:18;;20042:43;20121:15;;;20116:2;20101:18;;20094:43;19926:2;19911:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;20017:15:105;;;19999:34;;20069:15;;;20064:2;20049:18;;20042:43;20121:15;;;20116:2;20101:18;;20094:43;19926:2;19911:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;20772:74:105;20862:18;;;20855:30;;;;20921:1;20901:18;;;20894:29;20959:8;20939:18;;;20932:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;20985:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;21227:74:105;21317:18;;;21310:30;21376:1;21356:18;;;21349:29;21414:8;21394:18;;;21387:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;21440:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;21682:74:105;21772:18;;;21765:30;;;;21831:1;21811:18;;;21804:29;21869:9;21849:18;;;21842:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;21896:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;22138:74:105;22228:18;;;22221:30;22287:2;22267:18;;;22260:30;22326:20;22306:18;;;22299:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;22364:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;22606:74:105;22696:18;;;22689:30;22755:1;22735:18;;;22728:29;22793:10;22773:18;;;22766:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;22821:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;23063:74:105;23153:18;;;23146:30;23212:1;23192:18;;;23185:29;23250:11;23230:18;;;23223:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;23279:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;23456:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;4729:4:93;;;:12;;23456:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;4789:4:93;;;:12;;23456:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;4849:4:93;;;:12;;23456:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;4909:4:93;;;:12;;23456:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;4969:4:93;;;:12;;23456:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5029:3:93;;;:11;;23456:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5088:8:93;;;:16;;23456:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5153:7:93;;;:15;;23456:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5214:4:93;;;:12;;23456:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5272:4:93;;;:12;;23456:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5330:4:93;;;:12;;23456:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5388:4:93;;;:12;;23456:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5446:4:93;;;:12;;23456:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5504:3:93;;;:11;;23456:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;23483:74:105;-1:-1:-1;;23573:18:105;;;23566:34;5561:8:93;;;:16;;23456:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;6424:2463:99:-;-1:-1:-1;;;;;;;;;;;6717:9:99;6740;;;;;:26;;;6765:1;6753:9;-1:-1:-1;;;;;6753:13:99;;6740:26;:43;;;;;6782:1;6770:9;-1:-1:-1;;;;;6770:13:99;;6740:43;:97;;;;-1:-1:-1;;;;;;6787:29:99;;;;:17;;;:29;:::i;:::-;:50;;6740:97;:167;;;;-1:-1:-1;;;;;;6857:29:99;;;;:17;;;:29;:::i;:::-;:50;;6740:167;:245;;;;-1:-1:-1;6960:25:99;6980:5;-1:-1:-1;;6960:25:99;:::i;:::-;6927:29;-1:-1:-1;;;;;6927:29:99;;;;:17;;:29;:::i;:::-;:58;;6740:245;:364;;;;-1:-1:-1;7100:3:99;7075:20;7086:9;7075:8;:20;:::i;:::-;-1:-1:-1;;;;;7067:29:99;:36;;-1:-1:-1;;7046:58:99;;;;:::i;:::-;7021:20;7032:9;7021:8;:20;:::i;:::-;7005:37;;-1:-1:-1;;;;;7013:29:99;7005:5;:37;:::i;:::-;:99;;6740:364;:517;;;;-1:-1:-1;747:71:64;7198:3:99;7173:20;7184:9;7173:8;:20;:::i;:::-;-1:-1:-1;;;;;7165:29:99;:36;;7140:20;7151:9;7140:8;:20;:::i;:::-;7124:37;;-1:-1:-1;;;;;7132:29:99;7124:5;:37;:::i;:::-;:78;;;;:::i;:::-;:133;;6740:517;6717:550;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;6717:550:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;7300:15:99;;1061:6:77;1057:15;;;1035:38;7278:19:99;7358:31;1035:38:77;7383:5:99;7358:24;:31::i;:::-;7335:54;-1:-1:-1;;;;;;;;;;;;7400:9:99;7434:3;7423:14;;;;;;;:27;;;7449:1;7441:5;:9;7423:27;:58;;;;;7469:12;7454:11;:27;;7423:58;:154;;;;-1:-1:-1;7502:16:99;;:36;;;;-1:-1:-1;7522:16:99;;7502:36;:74;;;;7556:1;7542:11;:15;:34;;;;-1:-1:-1;7561:15:99;;;7542:34;7400:187;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;7400::99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7599:14;7615:17;7648:91;7691:27;7708:9;7691;-1:-1:-1;;;;;7691:16:99;;;:27;;;;:::i;:::-;7648:11;;7720:5;7727:11;7648:42;:91::i;:::-;7598:141;;-1:-1:-1;7598:141:99;-1:-1:-1;;;;;;;;;;;;7750:9:99;7774:57;7789:41;-1:-1:-1;;7598:141:99;7789:30;:41::i;:::-;7774:11;;:14;:57::i;:::-;7773:58;:103;;;;-1:-1:-1;7850:26:99;7870:6;-1:-1:-1;;7850:26:99;:::i;:::-;7835:11;:41;;7773:103;7750:136;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;7750:136:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;2662:16:77;;;-1:-1:-1;;2701:6:77;2697:14;;;;-1:-1:-1;7951:18:99;7972:309;7951:18;1202:5:93;1262:2;1318:3;1202:5;1446:6;1508:5;1581:7;7972:33:99;:309::i;:::-;7951:330;-1:-1:-1;8292:23:99;8318:83;:11;7951:330;8361:7;8370:9;8381:11;8394:6;8318:30;:83::i;:::-;8292:109;-1:-1:-1;8412:12:99;-1:-1:-1;;;;;8427:19:99;;;:24;;:90;;8508:8;-1:-1:-1;;;;;8488:28:99;8496:8;-1:-1:-1;;;;;8488:17:99;:28;;;;:::i;:::-;8480:3;8467:8;-1:-1:-1;;;;;8459:17:99;:24;;8458:59;;;;:::i;:::-;8427:90;;;8454:1;8427:90;8412:105;-1:-1:-1;8527:13:99;-1:-1:-1;;;;;8543:21:99;;;:26;;:95;;8607:30;-1:-1:-1;;;;;8607:30:99;;;;:18;;:30;:::i;:::-;8576:62;;-1:-1:-1;;;;;;8599:3:99;8577:25;;;;8576:62;:::i;:::-;8543:95;;;8572:1;8543:95;8527:111;;8660:5;8653:4;:12;8649:232;;;8681:78;8718:3;8698:15;8690:24;;:31;;8723:1;8681:78;;;;;;;;;;;;;;;;;:8;:78::i;:::-;8649:232;;;8790:80;8815:15;8807:24;;-1:-1:-1;;;;;8790:80:99;8834:1;8790:80;;;;;;;;;;;;;;;;;:8;:80::i;:::-;6663:2224;;;;;;;;6424:2463;;;;;;;:::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;9234:3015:99:-;9434:18;9455:309;9434:18;1202:5:93;1262:2;1318:3;1202:5;1446:6;1508:5;1581:7;9455:33:99;:309::i;:::-;9434:330;-1:-1:-1;9775:15:99;9808:33;;;;;992:7:93;9808:33:99;:::i;:::-;9775:68;;9853:13;9869:54;9896:8;1147:2:93;9869:26:99;:54::i;:::-;9853:70;;9948:19;9970:8;:180;;10083:67;-1:-1:-1;;;;;10083:20:99;;10120:5;258:3:64;10083:36:99;:67::i;:::-;9970:180;;;9997:67;-1:-1:-1;;;;;9997:20:99;;258:3:64;10058:5:99;9997:36;:67::i;:::-;10164:43;;-1:-1:-1;;;10164:43:99;;-1:-1:-1;;;;;10174:32:99;;;10164:43;;;445:41:105;9948:202:99;;-1:-1:-1;;;;;;;;;;;;10164:9:99;;;418:18:105;;10164:43:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10222:14;10239:86;10270:11;10284:40;1147:2:93;10284:10:99;:22;;:40;;;;:::i;:::-;10239:22;:86::i;:::-;10222:103;-1:-1:-1;;;;;;;;;;;;10339:9:99;10364:26;10222:103;-1:-1:-1;;;;;10364:26:99;:::i;:::-;-1:-1:-1;;;;;10349:41:99;:11;:41;;:76;;;;-1:-1:-1;10405:20:99;-1:-1:-1;;;;;10405:20:99;;:11;:20;:::i;:::-;10394:8;-1:-1:-1;;;;;10394:31:99;;10349:76;10339:87;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;10339:87:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;10441:9:99;-1:-1:-1;10441:9:99;;-1:-1:-1;10468:8:99;;-1:-1:-1;10468:182:99;;-1:-1:-1;;;;;10586:43:99;;;:34;10609:11;10586:20;;;:34;:::i;:::-;:43;;;;:::i;:::-;:64;;10468:182;;;-1:-1:-1;;;;;10499:43:99;;;:34;10522:11;10499:20;;;:34;:::i;:::-;:43;;;;:::i;:::-;:64;;10468:182;10441:223;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;10441:223:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;10679:9:99;-1:-1:-1;10679:9:99;;-1:-1:-1;10721:25:99;;-1:-1:-1;10741:5:99;-1:-1:-1;;10721:25:99;:::i;:::-;10706:11;-1:-1:-1;;;;;10706:40:99;;;:136;;;;-1:-1:-1;10793:49:99;-1:-1:-1;;;;;;10838:3:99;10814:27;;;;-1:-1:-1;;10793:49:99;:::i;:::-;10770:19;-1:-1:-1;;;;;10770:19:99;;:5;:19;:::i;:::-;:72;;10706:136;:329;;;;-1:-1:-1;10994:40:99;:10;1147:2:93;10994:22:99;:40::i;:::-;10987:47;;:4;:47;:::i;:::-;-1:-1:-1;;;;;10945:90:99;:38;10979:4;747:71:64;10945:38:99;:::i;:::-;:90;;;;:::i;:::-;-1:-1:-1;;;;;;10913:3:99;10889:27;;;;10866:19;-1:-1:-1;;;;;10866:19:99;;:5;:19;:::i;:::-;:51;;;;:::i;:::-;:169;;10706:329;10679:370;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;10679:370:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9934:1126;;11070:16;11089:31;11108:11;11089;-1:-1:-1;;;;;11089:18:99;;;:31;;;;:::i;:::-;11070:50;-1:-1:-1;11132:22:99;;;11214:96;11234:10;1147:2:93;11264:8:99;11274;11284:25;-1:-1:-1;;;;;11284:15:99;;11264:8;11284:15;:25::i;:::-;11214:8;;:96;;;;:19;:96::i;:::-;11131:179;;-1:-1:-1;11131:179:99;-1:-1:-1;11131:179:99;-1:-1:-1;11321:88:99;11330:31;11131:179;11352:8;11330:21;:31::i;:::-;-1:-1:-1;;;;;11321:88:99;11363:8;-1:-1:-1;;;;;11321:88:99;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;11420:27;11450:46;11487:8;11450:29;:14;11469:9;11450:18;:29::i;:::-;:36;;:46::i;:::-;-1:-1:-1;;;;;11420:76:99;;;11508:27;11537:17;11558:8;:297;;11716:82;258:3:64;11792:5:99;3391:14:77;;;11724:24:99;-1:-1:-1;;;;;11716:33:99;;:82;:51;:82::i;:::-;-1:-1:-1;;;;;3042:16:77;;11558:297:99;;;11582:73;:5;-1:-1:-1;;;;;3042:16:77;;258:3:64;11582:23:99;:73::i;:::-;11657:25;:15;3395:6:77;3391:14;;3291:130;11657:25:99;-1:-1:-1;;;;;11507:348:99;;;;;11866:77;11875:19;11896:9;11866:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;11954:25;11982:8;:174;;12088:68;:19;258:3:64;12150:5:99;12088:37;:68::i;:::-;11982:174;;;12005:68;:5;12029:19;258:3:64;12005:23:99;:68::i;:::-;11954:202;;12167:75;12176:9;12187:17;12167:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;9424:2825;;;;;;;;;;;9234:3015;;;;;:::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;6202:216:99:-;-1:-1:-1;;;;;6337:14:99;;1061:6:77;1057:15;;;1035:38;6370:41:99;1035:38:77;6392:8:99;;6370:21;:41::i;:::-;6309:109;6202:216;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5748:448:99;5867:25;;-1:-1:-1;;;5867:25:99;;5877:14;;;;;;;;;5867:25;;;445:41:105;-1:-1:-1;;;;;;;;;;;5867:9:99;;;418:18:105;;5867:25:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;5921:14:99;;1061:6:77;1057:15;;;1035:38;5959:13:99;;;;;;;;:28;;;;;5986:1;5976:7;-1:-1:-1;;;;;5976:11:99;;5959:28;:60;;;;5996:8;5991:13;;:2;:13;;;:28;;;;;6018:1;6008:7;-1:-1:-1;;;;;6008:11:99;;5991:28;5955:189;;;6051:81;;;10461:8:105;10449:21;;6051:81:99;;;;10431:40:105;;;;6051:81:99;;;;;;;;;;10404:18:105;;;;6051:81:99;;;;;;;-1:-1:-1;;;;;6051:81:99;-1:-1:-1;;;6051:81:99;;;6035:98;;-1:-1:-1;;;6035:98:99;;-1:-1:-1;;;;;;;;;;;6035:15:99;;;:98;;6051:81;6035:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5955:189;6154:35;:7;6176:8;6186:2;6154:21;:35::i;:::-;5857:339;5748:448;;;;:::o;3850:1892::-;-1:-1:-1;;;;;;;;;;;4042:9:99;4065;;;;;:25;;;4089:1;4078:8;-1:-1:-1;;;;;4078:12:99;;4065:25;:41;;;;;4105:1;4094:8;-1:-1:-1;;;;;4094:12:99;;4065:41;:57;;;;;4121:1;4110:8;-1:-1:-1;;;;;4110:12:99;;4065:57;:73;;;;;4137:1;4126:8;-1:-1:-1;;;;;4126:12:99;;4065:73;:142;;;;-1:-1:-1;;;;;;4158:28:99;;;;:17;;;:28;:::i;:::-;:49;;4065:142;:195;;;;-1:-1:-1;;;;;;4211:28:99;;;;:17;;;:28;:::i;:::-;:49;;4065:195;:274;;;;-1:-1:-1;4310:28:99;-1:-1:-1;;;;;4310:28:99;;;;:17;;:28;:::i;:::-;4289:50;;-1:-1:-1;;4289:50:99;:::i;:::-;4280:5;:59;;4065:274;:343;;;;-1:-1:-1;;;;;;4359:28:99;;;;:17;;;:28;:::i;:::-;:49;;4065:343;:464;;;;-1:-1:-1;4525:3:99;4492:28;-1:-1:-1;;;;;4492:28:99;;;;:17;;:28;:::i;:::-;4470:59;;4491:37;-1:-1:-1;;4470:59:99;:::i;:::-;4437:28;-1:-1:-1;;;;;4437:28:99;;;;:17;;:28;:::i;:::-;4428:38;;:5;:38;:::i;:::-;:101;;4065:464;:619;;;;-1:-1:-1;747:71:64;4625:3:99;4592:28;-1:-1:-1;;;;;4592:28:99;;;;:17;;:28;:::i;:::-;4591:37;;4558:28;-1:-1:-1;;;;;4558:28:99;;;;:17;;:28;:::i;:::-;4549:38;;:5;:38;:::i;:::-;:80;;;;:::i;:::-;:135;;4065:619;4042:652;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;4042:652:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;4829:8:99;-1:-1:-1;;;;;;;;4869:15:99;;;1061:6:77;1057:15;;;1035:38;;;;;4925:15:99;;1057::77;;;;1035:38;4807:19:99;;5019:73;1035:38:77;;5073:5:99;4829:8;5019:42;:73::i;:::-;4960:132;;-1:-1:-1;4960:132:99;-1:-1:-1;5117:35:99;:11;4960:132;5117:15;:35::i;:::-;5103:49;-1:-1:-1;5162:21:99;5177:6;5162:21;;:::i;:::-;;-1:-1:-1;5194:21:99;5218:58;:6;-1:-1:-1;;;;;3042:16:77;;5162:21:99;5218:22;:58::i;:::-;5194:82;;5286:21;5310:58;5333:21;:11;3395:6:77;3391:14;;3291:130;5333:21:99;5310:6;;-1:-1:-1;;;;;5310:58:99;5356:11;5310:22;:58::i;:::-;5286:82;-1:-1:-1;5379:19:99;5286:82;5401:62;:13;5433:5;258:3:64;5401:31:99;:62::i;:::-;:78;;;;:::i;:::-;5379:100;;5489:15;5599:28;:18;3395:6:77;3391:14;;3291:130;5599:28:99;-1:-1:-1;;;;;5519:108:99;:77;5543:28;:18;-1:-1:-1;;;;;3042:16:77;;2942:132;5543:28:99;5519:5;;-1:-1:-1;;;;;5519:77:99;258:3:64;5519:23:99;:77::i;:::-;:108;;;;:::i;:::-;5489:138;-1:-1:-1;5638:97:99;5656:11;5489:138;5694:3;5680:9;5688:1;5680:5;:9;:::i;:::-;5678:24;;5679:18;5701:1;5678:24;:::i;:::-;5638:97;;;;;;;;;;;;;;;;;:17;:97::i;:::-;4032:1710;;;;;;;;;3850:1892;;;;;:::o;1363:715::-;-1:-1:-1;;;;;1486:16:99;;1061:6:77;1057:15;;;1035:38;;;;1596:26:99;;;;-1:-1:-1;;;;;;1646:25:99;1640:32;;;1697:14;;;;:41;;-1:-1:-1;1733:5:99;1715:14;-1:-1:-1;;;;;1715:14:99;;:2;:14;:::i;:::-;:23;;1697:41;:51;;;;1746:2;1742:1;:6;1697:51;1693:379;;;1764:64;;-1:-1:-1;;;1764:64:99;;-1:-1:-1;;;1764:64:99;;;26375:52:105;-1:-1:-1;;;;;;;;;;;1764:15:99;;;26348:18:105;;1764:64:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1842:29;1865:5;1842:9;:22;;:29;;;;:::i;:::-;;1693:379;;;1902:17;1922:29;:9;1945:5;1922:22;:29::i;:::-;1902:49;-1:-1:-1;1965:96:99;1902:49;-1:-1:-1;;;;;;2028:3:99;2006:25;;;;1985:17;-1:-1:-1;;;;;1985:17:99;;:5;:17;:::i;:::-;:47;;;;:::i;:::-;1965:96;;;;;;;;;;;;;;;;;:8;:96::i;:::-;1888:184;1693:379;1456:622;;;1363:715;;;:::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;;;12220:205;;;;;;:::o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8893:335:99;-1:-1:-1;;;;;9010:18:99;;1061:6:77;1057:15;;;1035:38;9052:79:99;9061:25;1035:38:77;9081:4:99;9061:19;:25::i;:::-;9088:11;-1:-1:-1;;;;;9088:16:99;9103:1;9088:16;9052:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;9141:80;9150:26;:11;9170:5;9150:19;:26::i;:::-;9178:11;-1:-1:-1;;;;;9178:16:99;9193:1;9178:16;9141:80;;;;;;;;;;;;;;;;;:8;:80::i;:::-;8978:250;8893:335;;:::o;12255:3544::-;12451:18;12472:309;12451:18;1202:5:93;1262:2;1318:3;1202:5;1446:6;1508:5;1581:7;12472:33:99;:309::i;:::-;12451:330;-1:-1:-1;12792:15:99;12825:33;;;;;992:7:93;12825:33:99;:::i;:::-;12792:68;;12870:13;12886:54;12913:8;1147:2:93;12886:26:99;:54::i;:::-;12870:70;;12965:19;12987:8;:180;;13100:67;-1:-1:-1;;;;;13100:20:99;;13137:5;258:3:64;13100:36:99;:67::i;:::-;12987:180;;;13014:67;-1:-1:-1;;;;;13014:20:99;;258:3:64;13075:5:99;13014:36;:67::i;:::-;13181:43;;-1:-1:-1;;;13181:43:99;;-1:-1:-1;;;;;13191:32:99;;;13181:43;;;445:41:105;12965:202:99;;-1:-1:-1;;;;;;;;;;;;13181:9:99;;;418:18:105;;13181:43:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13239:14;13256:86;13287:11;13301:40;1147:2:93;13301:10:99;:22;;:40;;;;:::i;13256:86::-;13239:103;-1:-1:-1;;;;;;;;;;;;13356:9:99;13381:26;13239:103;-1:-1:-1;;;;;13381:26:99;:::i;:::-;-1:-1:-1;;;;;13366:41:99;:11;:41;;:77;;;;-1:-1:-1;13423:20:99;-1:-1:-1;;;;;13423:20:99;;:11;:20;:::i;:::-;13411:8;-1:-1:-1;;;;;13411:32:99;;;13366:77;13356:88;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;13356:88:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;13459:9:99;-1:-1:-1;13459:9:99;;-1:-1:-1;13486:8:99;;-1:-1:-1;13486:182:99;;-1:-1:-1;;;;;13604:43:99;;;:34;13627:11;13604:20;;;:34;:::i;:::-;:43;;;;:::i;:::-;:64;;13486:182;;;-1:-1:-1;;;;;13517:43:99;;;:34;13540:11;13517:20;;;:34;:::i;:::-;:43;;;;:::i;:::-;:64;;13486:182;13459:223;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;13459:223:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;13697:9:99;-1:-1:-1;13697:9:99;;-1:-1:-1;13739:25:99;;-1:-1:-1;13759:5:99;-1:-1:-1;;13739:25:99;:::i;:::-;13724:11;-1:-1:-1;;;;;13724:40:99;;;:136;;;;-1:-1:-1;13811:49:99;-1:-1:-1;;;;;;13856:3:99;13832:27;;;;-1:-1:-1;;13811:49:99;:::i;:::-;13788:19;-1:-1:-1;;;;;13788:19:99;;:5;:19;:::i;:::-;:72;;13724:136;:329;;;;-1:-1:-1;14012:40:99;:10;1147:2:93;14012:22:99;:40::i;:::-;14005:47;;:4;:47;:::i;:::-;-1:-1:-1;;;;;13963:90:99;:38;13997:4;747:71:64;13963:38:99;:::i;:::-;:90;;;;:::i;:::-;-1:-1:-1;;;;;;13931:3:99;13907:27;;;;13884:19;-1:-1:-1;;;;;13884:19:99;;:5;:19;:::i;:::-;:51;;;;:::i;:::-;:169;;13724:329;13697:370;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;13697:370:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12951:1127;;14088:16;14107:31;14126:11;14107;-1:-1:-1;;;;;14107:18:99;;;:31;;;;:::i;:::-;14088:50;-1:-1:-1;14150:22:99;;;14232:96;14252:10;1147:2:93;14282:8:99;14292;14302:25;-1:-1:-1;;;;;14302:15:99;;14282:8;14302:15;:25::i;14232:96::-;14149:179;;-1:-1:-1;14149:179:99;-1:-1:-1;14149:179:99;-1:-1:-1;14339:84:99;14348:31;14149:179;14370:8;14348:21;:31::i;:::-;-1:-1:-1;;;;;14339:84:99;14381:8;-1:-1:-1;;;;;14339:84:99;;;;;;;;;;;;;;;;;;:8;:84::i;:::-;14448:23;14474:31;:14;14496:8;14474:21;:31::i;:::-;-1:-1:-1;;;;;14448:57:99;;;14521:27;14550:17;14571:8;:241;;14711:73;14719:15;258:3:64;14778:5:99;14711:42;:73::i;:::-;-1:-1:-1;;;;;3042:16:77;;14571:241:99;;;14599:64;:5;14623:15;258:3:64;14599:23:99;:64::i;:::-;14665:25;:15;3395:6:77;3391:14;;3291:130;14665:25:99;-1:-1:-1;;;;;14520:292:99;;;;;14827:73;14836:19;14857:9;14827:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;-1:-1:-1;14921:21:99;;-1:-1:-1;14945:46:99;;-1:-1:-1;14982:8:99;14945:29;:14;14964:9;14945:18;:29::i;:46::-;14921:70;-1:-1:-1;15003:25:99;;-1:-1:-1;;;;;15071:18:99;;;:498;;15125:8;:444;;15383:71;-1:-1:-1;;;;;15383:22:99;;258:3:64;15448:5:99;15383:40;:71::i;:::-;15476:75;258:3:64;15545:5:99;15484:17;15500:1;15484:13;:17;:::i;15476:75::-;15071:498;;15125:444;15174:62;:5;-1:-1:-1;;;;;15174:62:99;;258:3:64;15174:23:99;:62::i;:::-;15258:66;15282:17;15298:1;15282:13;:17;:::i;:::-;15258:5;;-1:-1:-1;;;;;15258:66:99;258:3:64;15258:23:99;:66::i;15071:498::-;15105:1;15108;15071:498;15002:567;;-1:-1:-1;15002:567:99;-1:-1:-1;15580:95:99;15589:33;:15;15612:9;;15589:22;:33::i;:::-;-1:-1:-1;;;;;15580:95:99;15624:17;15580:95;;;;;;;;;;;;;;;;;:8;:95::i;:::-;15685:107;15694:33;:15;15717:9;;15694:22;:33::i;:::-;-1:-1:-1;;;;;15685:107:99;15729:29;15685:107;;;;;;;;;;;;;;;;;:8;:107::i;16838:1704::-;16972:4;;16946:1;;16959:43;;-1:-1:-1;;;;;16972:4:99;16987;-1:-1:-1;;;;;16959:43:99;;:4;:43::i;:::-;17025:7;;17012:46;;-1:-1:-1;;;;;17025:7:99;17043:4;-1:-1:-1;;;;;17012:46:99;;:4;:46::i;:::-;-1:-1:-1;;;;;17087:14:99;;1061:6:77;1057:15;;;1035:38;17069:15:99;17141:48;17153:35;17175:11;17185:1;1057:15:77;17175:11:99;:::i;:::-;17154;17164:1;17154:7;:11;:::i;:::-;-1:-1:-1;;;;;17153:20:99;;1061:6:77;1057:15;-1:-1:-1;;;;;1038:17:77;;;;1035:38;;923:166;17153:35:99;17141:7;;:11;:48::i;:::-;17121:68;-1:-1:-1;17199:18:99;17220:22;:7;17121:68;17220:11;:22::i;:::-;17287:4;;17310:7;;17199:43;;-1:-1:-1;17253:78:99;;:9;;-1:-1:-1;;;;;17287:4:99;;;;17310:7;17321:9;17253:18;:78::i;:::-;17351:4;;:25;;-1:-1:-1;;;17351:25:99;;-1:-1:-1;;;;;19373:55:105;;;17351:25:99;;;19355:74:105;17342:80:99;;17351:4;;:14;;19328:18:105;;17351:25:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17342:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3042:16:77;;;17342:8:99;:80::i;:::-;17441:7;;:28;;-1:-1:-1;;;17441:28:99;;-1:-1:-1;;;;;19373:55:105;;;17441:28:99;;;19355:74:105;17432:83:99;;17441:7;;:17;;19328:18:105;;17441:28:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17471:19;:9;3395:6:77;3391:14;;3291:130;17471:19:99;-1:-1:-1;;;;;17432:83:99;;;;;;;;;;;;;;;;;;:8;:83::i;:::-;17534:4;;:29;;-1:-1:-1;;;17534:29:99;;17557:4;17534:29;;;19355:74:105;17525:85:99;;-1:-1:-1;;;;;17534:4:99;;:14;;19328:18:105;;17534:29:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17525:85;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3042:16:77;;;17525:8:99;:85::i;:::-;17629:7;;:32;;-1:-1:-1;;;17629:32:99;;17655:4;17629:32;;;19355:74:105;17620:88:99;;-1:-1:-1;;;;;17629:7:99;;:17;;19328:18:105;;17629:32:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17663:20;:10;3395:6:77;3391:14;;3291:130;17663:20:99;-1:-1:-1;;;;;17620:88:99;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;17755:4;;17719:54;;:10;;-1:-1:-1;;;;;17755:4:99;17763:9;17719:20;:54::i;:::-;17793:4;;:25;;-1:-1:-1;;;17793:25:99;;-1:-1:-1;;;;;19373:55:105;;;17793:25:99;;;19355:74:105;17784:78:99;;17793:4;;:14;;19328:18:105;;17793:25:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17784:78;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3042:16:77;;;17784:8:99;:78::i;:::-;17881:7;;:28;;-1:-1:-1;;;17881:28:99;;-1:-1:-1;;;;;19373:55:105;;;17881:28:99;;;19355:74:105;17872:83:99;;17881:7;;:17;;19328:18:105;;17881:28:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17911:19;:9;3395:6:77;3391:14;;3291:130;17911:19:99;-1:-1:-1;;;;;17872:83:99;;;;;;;;;;;;;;;;;;:8;:83::i;:::-;17974:4;;:29;;-1:-1:-1;;;17974:29:99;;17997:4;17974:29;;;19355:74:105;17965:66:99;;-1:-1:-1;;;;;17974:4:99;;:14;;19328:18:105;;17974:29:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18005:1;17965:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;18050:7;;:32;;-1:-1:-1;;;18050:32:99;;18076:4;18050:32;;;19355:74:105;18041:88:99;;-1:-1:-1;;;;;18050:7:99;;:17;;19328:18:105;;18050:32:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18084:20;:10;3395:6:77;3391:14;;3291:130;18084:20:99;-1:-1:-1;;;;;18041:88:99;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;18176:7;;18140:57;;:10;;-1:-1:-1;;;;;18176:7:99;18187:9;18140:20;:57::i;:::-;18217:4;;:25;;-1:-1:-1;;;18217:25:99;;-1:-1:-1;;;;;19373:55:105;;;18217:25:99;;;19355:74:105;18208:78:99;;18217:4;;:14;;19328:18:105;;18217:25:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18208:78;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3042:16:77;;;18208:8:99;:78::i;:::-;18305:7;;:28;;-1:-1:-1;;;18305:28:99;;-1:-1:-1;;;;;19373:55:105;;;18305:28:99;;;19355:74:105;18296:82:99;;18305:7;;:17;;19328:18:105;;18305:28:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18335:17;:7;3395:6:77;3391:14;;3291:130;18335:17:99;-1:-1:-1;;;;;18296:82:99;;;;;;;;;;;;;;;;;;:8;:82::i;:::-;18397:4;;:29;;-1:-1:-1;;;18397:29:99;;18420:4;18397:29;;;19355:74:105;18388:67:99;;-1:-1:-1;;;;;18397:4:99;;:14;;19328:18:105;;18397:29:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18428:1;18388:67;;;;;;;;;;;;;;;;;:8;:67::i;:::-;18474:7;;:32;;-1:-1:-1;;;18474:32:99;;18500:4;18474:32;;;19355:74:105;18465:70:99;;-1:-1:-1;;;;;18474:7:99;;:17;;19328:18:105;;18474:32:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18508:1;18465:70;;;;;;;;;;;;;;;;;:8;:70::i;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;19373:55:105;;11033:19:93;;;19355:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;19328:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;23501:55:105;;;11062:41:93;;;23483:74:105;23573:18;;;23566:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;23456:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;23501:55:105;;;11113:41:93;;;23483:74:105;23573:18;;;23566:34;;;11113:15:93;;;;;23456:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;30034:6:105;30022:19;;12532:26:93;;;30004:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;29977:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;23483:74:105;;;1398:17:1;23573:18:105;;;23566:34;1428:1:1;;1377:7;;23456:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;649:708:99:-;-1:-1:-1;;;;;;;;;;;832:9:99;842:15;;;;;:46;;;876:12;861:11;:27;;842:46;832:57;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;832:57:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;922:18:99;;1061:6:77;1057:15;;;1035:38;900:19:99;984:56;1035:38:77;1014:12:99;1028:11;984:29;:56::i;:::-;964:76;-1:-1:-1;;;;;;2662:16:77;;;;2701:6;2697:14;;;;1122:109:99;;2662:16:77;;1143:54:99;;:12;;:54;;1185:11;1143:28;:54::i;:::-;1122:109;;;;;;;;;;;;;;;;;:8;:109::i;:::-;1241;-1:-1:-1;;;;;1241:109:99;;;;1262:54;;:12;;:54;;1304:11;1262:28;:54::i;:::-;1241:109;;;;;;;;;;;;;;;;;:8;:109::i;:::-;822:535;;;;649:708;;;;:::o;2084:1760::-;-1:-1:-1;;;;;;;;;;;2327:9:99;2350;;;;;:66;;-1:-1:-1;;;;;;2363:32:99;;;;:20;;;:32;:::i;:::-;:53;;2350:66;:139;;;;-1:-1:-1;;;;;;2436:32:99;;;;:20;;;:32;:::i;:::-;:53;;2350:139;:329;;;;-1:-1:-1;2532:32:99;-1:-1:-1;;;;;2532:32:99;;;;:20;;:32;:::i;:::-;2531:39;;:130;;-1:-1:-1;2628:32:99;-1:-1:-1;;;;;2628:32:99;;;;:20;;:32;:::i;:::-;2607:54;;-1:-1:-1;;2607:54:99;:::i;:::-;2598:5;:63;;2531:130;2350:478;;;;-1:-1:-1;2824:3:99;2787:32;-1:-1:-1;;;;;2787:32:99;;;;:20;;:32;:::i;:::-;2765:63;;2786:41;-1:-1:-1;;2765:63:99;:::i;:::-;2708:32;-1:-1:-1;;;;;2708:32:99;;;;:20;;:32;:::i;:::-;2699:42;;:5;:42;:::i;:::-;:129;;2350:478;:641;;;;-1:-1:-1;747:71:64;2932:3:99;2895:32;-1:-1:-1;;;;;2895:32:99;;;;:20;;:32;:::i;:::-;2894:41;;2857:32;-1:-1:-1;;;;;2857:32:99;;;;:20;;:32;:::i;:::-;2848:42;;:5;:42;:::i;:::-;:88;;;;:::i;:::-;:143;;2350:641;2327:674;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;2327:674:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3034:18:99;;1061:6:77;1057:15;;;1035:38;3012:19:99;3098:31;1035:38:77;3123:5:99;3098:24;:31::i;:::-;3075:54;-1:-1:-1;;;;;;;;;;;;3140:9:99;3150;;;;;:40;;;3178:12;3163:11;:27;;3150:40;3140:51;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;3140:51:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3222:16:99;;1061:6:77;1057:15;;;1035:38;3202:17:99;;3319:73;:11;1035:38:77;3373:5:99;3380:11;3319:42;:73::i;:::-;3260:132;;;;3403:103;3420:18;3412:27;;3449:9;3441:18;;3403:103;;;;;;;;;;;;;;;;;:8;:103::i;:::-;3517:21;3541:29;:9;3564:5;3541:22;:29::i;:::-;3517:53;-1:-1:-1;3580:22:99;3605:17;;;:37;;-1:-1:-1;3626:16:99;;3605:37;:143;;3692:56;:13;3722:11;3735:12;3692:29;:56::i;:::-;3605:143;;;3657:20;:13;:18;:20::i;:::-;3580:168;;3759:78;3768:6;3776:14;3759:78;;;;;;;;;;;;;;;;;:8;:78::i;:::-;2317:1527;;;;;;;2084:1760;;;;;;:::o;15805:1027::-;-1:-1:-1;;;;;;;;;;;15917:9:99;15938:25;15958:5;-1:-1:-1;;;;;15938:25:99;:::i;:::-;-1:-1:-1;;;;;15927:36:99;:8;-1:-1:-1;;;;;15927:36:99;;:76;;;;-1:-1:-1;15978:25:99;15998:5;-1:-1:-1;;;;;15978:25:99;:::i;:::-;-1:-1:-1;;;;;15967:36:99;:8;-1:-1:-1;;;;;15967:36:99;;15927:76;15917:87;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;15917:87:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16067:4:99;;16038;;-1:-1:-1;16054:43:99;;-1:-1:-1;;;;;;16067:4:99;16038;16080:16;16091:5;16080:8;:16;:::i;:::-;-1:-1:-1;;;;;16054:43:99;:4;:43::i;:::-;16120:7;;16107:46;;-1:-1:-1;;;;;16120:7:99;16130:4;16136:16;16147:5;16136:8;:16;:::i;16107:46::-;16271:4;;16294:7;;-1:-1:-1;;;;;16183:15:99;;1061:6:77;1057:15;;;1035:38;;16164:16:99;;16238:66;;1035:38:77;;-1:-1:-1;;;;;16271:4:99;;;;16294:7;16238:17;:66::i;:::-;16384:50;;;;;;;;;;;;;;;;;16219:85;;-1:-1:-1;;;;;;2662:16:77;;;;2701:6;2697:14;;;;16384:50:99;;2662:16:77;;16384:50:99;;;:8;:50::i;:::-;16444;16453:9;16464:5;-1:-1:-1;;;;;16444:50:99;;;;;;;;;;;;;;;;;;:8;:50::i;:::-;16550:4;;16516:41;;:8;;-1:-1:-1;;;;;16550:4:99;16516:18;:41::i;:::-;16505:52;-1:-1:-1;;;;;;3042:16:77;;-1:-1:-1;;;;;16567:30:99;;;16608:50;16617:9;16628:5;-1:-1:-1;;;;;16608:50:99;;;;;;;;;;;;;;;;;;:8;:50::i;:::-;16714:7;;16680:44;;:8;;-1:-1:-1;;;;;16714:7:99;16680:18;:44::i;:::-;16669:55;;16746:18;:8;3395:6:77;3391:14;;3291:130;16746:18:99;-1:-1:-1;;;;;16734:30:99;;;16775:50;16784:9;16795:5;-1:-1:-1;;;;;16775:50:99;;;;;;;;;;;;;;;;;;:8;:50::i;:::-;15907:925;;;;;15805:1027;;;;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;31428:2:105;11461:73:93;;;31410:21:105;31467:2;31447:18;;;31440:30;31506:26;31486:18;;;31479:54;31550:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;31770:55:105;;;11821:26:93;;;31752:74:105;31874:8;31862:21;;31842:18;;;31835:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;31725:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;19373:55:105;;11974:14:93;;;19355:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;19328:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;6085:628::-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;19355:74:105;6180:7:93;;;:21;;19328:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;19355:74:105;6253:7:93;;;:21;;19328:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;19355:74:105;6323:7:93;;;:21;;19328:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;19355:74:105;6393:7:93;;;:21;;19328:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;19355:74:105;6463:7:93;;;:21;;19328:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;19355:74:105;6533:7:93;;;:21;;19328:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;19355:74:105;6602:7:93;;;:21;;19328:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;19355:74:105;6675:7:93;;;:21;;19328:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6638:68;6085:628::o;6719:422::-;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;35178:6:105;35211:15;;6788:346:93;;;35193:34:105;1202:5:93;35243:18:105;;;35236:43;;;1262:2:93;35295:18:105;;;35288:43;1318:3:93;35347:18:105;;;35340:43;35399:19;;;35392:44;;;;1446:6:93;35479:19:105;;;35472:44;1508:5:93;35532:19:105;;;35525:44;1581:7:93;35585:19:105;;;35578:44;6788:7:93;35638:19:105;;;35631:51;-1:-1:-1;;;;;6788:7:93;;:17;;35140:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:166:77;1061:6;1057:15;-1:-1:-1;;;;;1038:17:77;;;;1035:38;;923:166::o;4730:196:62:-;4807:17;-1:-1:-1;;;;;2662:16:77;;2701:6;2697:14;;;4894:25:62;2662:16:77;2697:14;4913:5:62;4894:12;:25::i;:::-;4887:32;4730:196;-1:-1:-1;;;;;4730:196:62:o;2792:1683::-;2955:14;;-1:-1:-1;;;;;2662:16:77;;2701:6;2697:14;;;2955::62;3091:25;2662:16:77;2697:14;3110:5:62;3091:12;:25::i;:::-;3067:49;;3130:13;3147:1;3130:18;3126:37;;-1:-1:-1;3158:1:62;;-1:-1:-1;3158:1:62;;-1:-1:-1;3150:13:62;;-1:-1:-1;;3150:13:62;3126:37;3174:20;3197:32;3210:11;3223:5;3197:12;:32::i;:::-;3174:55;-1:-1:-1;3243:17:62;;;:37;;-1:-1:-1;3264:16:62;;3243:37;3239:83;;;3290:20;:13;:18;:20::i;:::-;3312:9;3282:40;;;;;;;;;;3239:83;3342:56;:13;3372:11;3385:12;3342:29;:56::i;:::-;3333:65;-1:-1:-1;3408:26:62;3437:47;3333:65;3458:12;3472:11;3437:20;:47::i;:::-;3408:76;;3515:18;3499:13;:34;3495:769;;;3549:22;3574:34;3590:18;3574:13;:34;:::i;:::-;3549:59;-1:-1:-1;;;;3730:33:62;;3726:277;;258:3:64;3800:40:62;;;3867:10;;;:23;;3884:6;3867:23;;;3880:1;3867:23;3858:32;-1:-1:-1;3909:11:62;3858:32;3909:11;;:::i;:::-;;-1:-1:-1;3938:50:62;258:3:64;3956:32:62;;;3938:50;;:::i;:::-;;;3765:238;3726:277;4039:5;4021:14;:23;4017:181;;4064:14;4081:22;4098:5;4081:14;:22;:::i;:::-;4064:39;;4139:1;4130:6;:10;:23;;4147:6;4130:23;;;4143:1;4130:23;4121:32;-1:-1:-1;4172:11:62;4121:32;4172:11;;:::i;:::-;;;4046:152;4017:181;1061:6:77;1057:15;;;-1:-1:-1;;;;;4224:17:62;;1035:38:77;4212:41:62;;3535:729;3495:769;747:71:64;4278:47:62;4291:26;:11;4307:9;4291:15;:26::i;:::-;4319:5;4278:12;:47::i;:::-;:81;4274:158;;;4382:39;;-1:-1:-1;;;4382:39:62;;;;;;;;;;;4274:158;-1:-1:-1;4458:9:62;;-1:-1:-1;;;;;2792:1683:62;;;;;;;;:::o;5540:263:77:-;5647:9;;;5680:5;;;;:50;;-1:-1:-1;;;;;;5689:41:77;;;;;;;5680:50;5676:121;;;5753:33;;-1:-1:-1;;;5753:33:77;;;;;;;;;;;7254:198;7311:4;-1:-1:-1;;;;;2662:16:77;;;;2701:6;2697:14;;;;2662:16;;;2697:14;;;7427:7;;;;:18;;;7443:2;-1:-1:-1;;;;;7438:7:77;:2;-1:-1:-1;;;;;7438:7:77;;7427:18;7420:25;7254:198;-1:-1:-1;;;;;;;7254:198:77:o;12911:1397:69:-;13218:17;13279:11;13264:26;;:12;:26;;;:63;;;;355:5:75;13294:11:69;:33;;;13264:63;:126;;;;623:6:64;13347:15:69;:43;;;13264:126;:174;;;;549:5:64;13394:13:69;:44;;;13264:174;:240;;;;510:7:75;13458:24:69;:46;;;13264:240;13247:315;;;13522:40;;-1:-1:-1;;;13522:40:69;;;;;;;;;;;13247:315;1534:2;1398:29:75;;;;;-1:-1:-1;;1320:36:75;;;13585:66:69;;;1320:36:75;;;1246:2:69;1398:29:75;;;;;1320:36;;;1302:2:69;1398:29:75;;;;;1320:36;;;1362:2:69;1398:29:75;;;;;1320:36;;;1421:2:69;1398:29:75;;;;;1320:36;;;1479:2:69;1398:29:75;;;;;1320:36;;;1383:45;;;1410:16;;;;;;;;;;;;;;;1320:36;;;1383:45;14245:56:69;1127:317:75;6884:894:62;7102:12;7130:6;7140:1;7130:11;7126:25;;-1:-1:-1;7150:1:62;7143:8;;7126:25;-1:-1:-1;;;;;2662:16:77;;2701:6;2697:14;;;7163:15:62;;7292:84;:75;7310:26;:11;2662:16:77;7310:15:62;:26::i;:::-;7338:6;7346:20;7338:6;7346:11;:20;:::i;:::-;7292:17;:75::i;:::-;-1:-1:-1;;;;;2662:16:77;;;2701:6;2697:14;;;;;2549:178;7292:84:62;7227:149;;;;7409:7;-1:-1:-1;;;;;7391:25:62;:15;-1:-1:-1;;;;;7391:25:62;;7387:385;;;7432:12;7447:78;7493:31;:10;7516:7;7493:22;:31::i;:::-;7448:25;7458:15;7448:7;:25;:::i;:::-;-1:-1:-1;;;;;7447:45:62;;;:78::i;:::-;7432:93;;7547:19;:4;-1:-1:-1;;;;;7547:17:62;1778:6:77;1774:15;;1668:137;7547:19:62;7540:26;;7418:159;7387:385;;;7605:7;-1:-1:-1;;;;;7587:25:62;:15;-1:-1:-1;;;;;7587:25:62;;7583:189;;;7628:12;7643:78;7689:31;:10;7712:7;7689:22;:31::i;:::-;7644:25;7654:15;7644:7;:25;:::i;7643:78::-;-1:-1:-1;;;;;7743:16:62;;-1:-1:-1;;7583:189:62;7116:662;;;;6884:894;;;;;;;;;:::o;15596:134:1:-;15694:29;;-1:-1:-1;;;15694:29:1;;-1:-1:-1;;;;;;;;;;;15694:11:1;;;:29;;15706:4;;15712:5;;15719:3;;15694:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;812:217:70;886:13;623:6:64;1824:42:70;258:3:64;1824:42:70;;;;1823:72;-1:-1:-1;;;1805:90:70;2185:11;;;-1:-1:-1;;2178:35:70;1004:18;1805:90;2178:35;1004:8;:18::i;3755:214:82:-;3839:14;3874:31;3892:1;3895;3898:6;3874:17;:31::i;:::-;3865:40;-1:-1:-1;3932:1:82;:11;;;;;3919:25;;;;:::i;:::-;3929:1;3926;3919:25;:30;3915:47;;3951:11;3961:1;3951:11;;:::i;:::-;;3755:214;-1:-1:-1;;;;3755:214:82:o;5653:244::-;5747:14;5782:41;5800:1;5803:6;5811:11;5782:17;:41::i;:::-;5773:50;;5860:11;5837:35;;;;;:::i;:::-;5847:1;:11;;;;5844:1;5837:35;:40;5833:57;;5879:11;5889:1;5879:11;;:::i;10318:216:69:-;10394:7;10444:73;10475:31;10490:6;10498:7;10475:14;:31::i;:::-;10445:27;10456:6;10464:7;10445:10;:27::i;:::-;:61;10444:71;:73::i;1675:405:65:-;1774:7;1755:8;495:15;506:3;495:10;:15::i;:::-;-1:-1:-1;;;;;1839:30:65;;::::1;363:4:64;1839:30:65::0;;::::1;::::0;;;-1:-1:-1;;2003:15:65;;::::1;:26;:40:::0;::::1;:44:::0;1839:30;2002:60:::1;;;;:::i;:::-;;1987:76;;;520:1;1675:405:::0;;;;;:::o;2178:137:77:-;2240:9;2268:5;:40;;2293:15;2306:1;1778:6;1774:15;;1668:137;2293:15;2268:40;;;-1:-1:-1;;;;;3042:16:77;;2276:14;2942:132;9012:2179:62;9279:25;;;;9376:32;:23;;;9400:7;9376:23;:32::i;:::-;9360:48;-1:-1:-1;9433:21:62;9457:29;:11;9476:9;;9457:18;:29::i;:::-;9433:53;;9501:19;9523:8;:204;;9648:79;:69;-1:-1:-1;;;;;9648:22:62;;9687:5;258:3:64;9648:38:62;:69::i;:::-;:77;:79::i;:::-;9523:204;;;9550:79;:69;-1:-1:-1;;;;;9550:22:62;;258:3:64;9613:5:62;9550:38;:69::i;:79::-;9501:226;-1:-1:-1;9742:16:62;9761:31;:10;9784:7;9761:22;:31::i;:::-;9742:50;-1:-1:-1;9806:14:62;9823:34;-1:-1:-1;;;;;9823:24:62;;9742:50;9823:24;:34::i;:::-;9806:51;-1:-1:-1;9872:21:62;9806:51;9872:21;;:::i;:::-;;-1:-1:-1;9908:19:62;9930:30;:13;9951:8;9930:20;:30::i;:::-;9908:52;;9974:14;10002:20;10056:11;-1:-1:-1;;;;;10041:26:62;:11;-1:-1:-1;;;;;10041:26:62;;10037:635;;-1:-1:-1;10135:11:62;;-1:-1:-1;10096:6:62;;-1:-1:-1;10179:13:62;10037:635;;;10240:38;-1:-1:-1;;;;;10240:28:62;;10269:8;10240:28;:38::i;:::-;10231:47;-1:-1:-1;10297:16:62;10316:20;10231:47;10316:11;:20;:::i;:::-;-1:-1:-1;;;;;10297:39:62;;;10370:8;:206;;10500:76;:66;10508:8;258:3:64;10560:5:62;10500:35;:66::i;:76::-;10370:206;;;10401:76;:66;10409:8;10437:5;258:3:64;10401:35:62;:66::i;:76::-;10355:221;;10614:13;-1:-1:-1;;;;;10599:28:62;:12;-1:-1:-1;;;;;10599:28:62;;10595:62;;;10644:13;10629:28;;10595:62;10213:459;10037:635;10736:8;:203;;10861:26;:11;-1:-1:-1;;;;;10861:24:62;1778:6:77;1774:15;;1668:137;10861:26:62;-1:-1:-1;;;;;10889:24:62;;10917:21;:6;-1:-1:-1;;;;;10917:19:62;1778:6:77;1774:15;;1668:137;10917:21:62;10736:203;;;-1:-1:-1;;;;;10764:23:62;;10791:27;:12;-1:-1:-1;;;;;10791:25:62;1778:6:77;1774:15;;1668:137;10791:27:62;-1:-1:-1;;;;;10820:18:62;;:20;10686:253;;;;;;;;;;;;9419:1531;;;;;;;747:71:64;10977:76:62;10990:55;11029:15;10990:34;11006:17;10990:11;:15;;:34;;;;:::i;:::-;:38;;:55::i;:::-;11047:5;10977:12;:76::i;:::-;:126;10960:225;;;11135:39;;-1:-1:-1;;;11135:39:62;;;;;;;;;;;10960:225;9350:1841;9012:2179;;;;;;;;;;:::o;3797:128:77:-;3859:9;3887:5;:31;;3908:10;3916:1;3395:6;3391:14;;3291:130;14412:134:1;14510:29;;-1:-1:-1;;;14510:29:1;;-1:-1:-1;;;;;;;;;;;14510:11:1;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;4594:437:82:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;2641:485::-;2727:14;2754:13;2769;2786:18;2799:1;2802;2786:12;:18::i;:::-;2753:51;;;;2819:5;2828:1;2819:10;2815:40;;2849:6;2840:15;;:5;:15;;2831:24;;2815:40;2869:10;;2865:255;;2964:1;:11;;;;2955:20;;2951:68;;2984:35;;-1:-1:-1;;;2984:35:82;;;;;;;;;;;2951:68;3088:6;3082:12;;:3;:12;3072:23;;:5;:23;;3062:33;;;;2865:255;2743:383;;2641:485;;;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;6012:268:62:-;6113:8;6108:13;;:2;:13;;;:37;;;;-1:-1:-1;6137:3:62;6126:14;;;6125:20;;6108:37;:94;;;;6154:8;6149:13;;:2;:13;;;:53;;;;-1:-1:-1;;;;;;6166:36:62;;6149:53;6104:170;;;6225:38;;-1:-1:-1;;;6225:38:62;;10461:8:105;10449:21;;6225:38:62;;;10431:40:105;10404:18;;6225:38:62;10287:190:105;4336:262:77;4443:9;;;4476:5;;;;:50;;-1:-1:-1;;;;;;4485:41:77;;;;;;;4476:50;4472:120;;;4549:32;;-1:-1:-1;;;4549:32:77;;;;;;;;;;;956:247:82;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;16826:208:1:-;16979:48;;-1:-1:-1;;;16979:48:1;;-1:-1:-1;;;;;;;;;;;16979:20:1;;;:48;;17000:4;;17006:5;;17013:8;;17023:3;;16979:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10236:135:78;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8075:162:62:-;8146:4;8169:3;:61;;8204:21;:11;3395:6:77;3391:14;;3291:130;8204:21:62;-1:-1:-1;;;;;8204:26:62;;8169:61;;;-1:-1:-1;;;;;;;3042:16:77;8175:26:62;;8075:162::o;2136:128:1:-;2228:29;;-1:-1:-1;;;2228:29:1;;-1:-1:-1;;;;;;;;;;;2228:11:1;;;:29;;2240:4;;2246:5;;2253:3;;2228:29;;;:::i;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;12980:296:62:-;-1:-1:-1;;;;;2662:16:77;;2701:6;2697:14;;;13151:11:62;;13147:56;;13164:39;-1:-1:-1;;;;;13164:19:62;;13184:9;-1:-1:-1;;;;;13164:39:62;;:19;:39::i;:::-;-1:-1:-1;;;;;13217:11:62;;;13213:56;;13230:39;-1:-1:-1;;;;;13230:19:62;;13250:9;-1:-1:-1;;;;;13230:39:62;;:19;:39::i;13553:198::-;13642:15;-1:-1:-1;;;;;3042:16:77;;13660:17:62;13642:35;-1:-1:-1;;;;;;13692:11:62;;;13688:56;;13705:39;-1:-1:-1;;;;;13705:19:62;;13725:9;-1:-1:-1;;;;;13705:39:62;;:19;:39::i;14028:198::-;14117:15;14135:17;:7;3395:6:77;3391:14;;3291:130;8711:135:78;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1127:317:75;1481:666:62;1619:18;-1:-1:-1;;;;;2662:16:77;;2701:6;2697:14;;;1619:18:62;;1804:15;;1800:132;;1855:66;1856:54;:12;-1:-1:-1;;;;;1856:54:62;;1898:11;1856:28;:54::i;1855:66::-;1835:86;;1800:132;-1:-1:-1;;;;;1946:15:62;;;1942:132;;1997:66;1998:54;:12;-1:-1:-1;;;;;1998:54:62;;2040:11;1998:28;:54::i;1997:66::-;1977:86;;1942:132;1061:6:77;1057:15;;;-1:-1:-1;;;;;2097:24:62;;1035:38:77;2084:56:62;1481:666;-1:-1:-1;;;;;;;;1481:666:62:o;10740:682:82:-;10788:13;10817:1;10822;10817:6;10813:20;;-1:-1:-1;10832:1:82;;10740:682;-1:-1:-1;10740:682:82:o;10813:20::-;10844:11;10858:29;10885:1;10858:26;:29::i;:::-;10947:1;10934:11;;;;;10930:19;;;10990:13;;;;10979:25;10972:33;;11045:13;;;11034:25;11027:33;;11100:13;;;11089:25;11082:33;;11155:13;;;11144:25;11137:33;;11210:13;;;11199:25;11192:33;;11265:13;;;11254:25;11247:33;;11320:13;;;11309:25;11302:33;;11354:13;;;;;11302:33;-1:-1:-1;10844:43:82;;;-1:-1:-1;11394:9:82;;;:21;;11414:1;11394:21;;;-1:-1:-1;11406:5:82;11387:28;-1:-1:-1;10740:682:82:o;11503:192:62:-;11592:15;11629:59;11679:8;11629:45;11655:18;11666:6;11655:10;:18::i;:::-;11629;11640:6;11629:10;:18::i;11990:200::-;12065:7;-1:-1:-1;;;;;3042:16:77;;12138:45:62;3042:16:77;12139:18:62;12150:6;12139:10;:18::i;:::-;:29;;;;:::i;:::-;-1:-1:-1;;;;;12138:43:62;;2942:132:77;12485:201:62;12560:7;12579:16;12598:18;:8;3395:6:77;3391:14;;3291:130;12598:18:62;12579:37;;12633:46;12655:8;12634:18;12645:6;12634:10;:18::i;:::-;:29;;;;:::i;:::-;-1:-1:-1;;;;;12633:44:62;1778:6:77;1774:15;;1668:137;5221:548:62;5303:17;5336:5;;5332:182;;-1:-1:-1;5397:9:62;;;:5;5405:1;5397:9;5405:1;5428:13;;;;:::i;:::-;;:22;5424:65;;5459:30;;-1:-1:-1;;;5459:30:62;;;;;;;;;;;5424:65;5527:5;;5523:213;;258:3:64;5576:28:62;;;;;5622:14;;5659:13;;;5655:56;;;5681:30;;-1:-1:-1;;;5681:30:62;;;;;;;;;;;1790:222:82;1879:14;1914:34;1930:1;1933;1936:11;1914:15;:34::i;:::-;1905:43;;1975:11;1962:25;;;;;:::i;2316:501:65:-;2460:7;2433:8;495:15;506:3;495:10;:15::i;:::-;419:21:64;;-1:-1:-1;;;;;2707:23:65;;::::1;2745:17:::0;;::::1;2707:34:::0;;::::1;363:4:64;2745:39:65::0;;;::::1;2707:78;:92;::::0;4113:3600:81;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:64;-1:-1:-1;4252:22:81;;-1:-1:-1;4252:22:81;4240:34;-1:-1:-1;4316:1:81;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:64;-1:-1:-1;4574:1:81;-1:-1:-1;;;;;4595:41:81;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:81;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:81;;;;;37059:25:105;;;37100:18;;;37093:34;;;37032:18;;7609:35:81;36887:246:105;7585:59:81;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:81;:::i;9449:615:69:-;9528:19;9559:26;9588:29;9610:6;9588:21;:29::i;:::-;9559:58;;;-1:-1:-1;9632:23:69;;9628:430;;9890:12;9949:7;9905:51;;9913:32;9938:6;9913:24;:32::i;:::-;9905:41;;:51;;-1:-1:-1;10030:3:69;10024:2;9989:11;;;:32;;:37;9988:45;;8954:287;9029:7;9210;9177:40;;9185:21;9199:6;9185:13;:21::i;:::-;9177:30;;:40;9220:4;9177:47;9170:54;;8954:287;;;;:::o;6249:139:78:-;6345:1;-1:-1:-1;;;;;6325:21:78;;;;6321:60;;6355:26;;-1:-1:-1;;;6355:26:78;;;;;;;;;;;3508:123:65;483:6:64;3568:3:65;-1:-1:-1;;;;;3568:23:65;;3564:60;;;3600:24;;-1:-1:-1;;;3600:24:65;;;;;;;;;;;1065:407;1208:7;1181:8;495:15;506:3;495:10;:15::i;:::-;363:4:64::1;1371:60:65::0;-1:-1:-1;;;;;1371:23:65;;::::1;:34:::0;;::::1;;:60:::0;1370:84:::1;::::0;1065:407;-1:-1:-1;;;;1065:407:65:o;7208:3395:82:-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;6220:547::-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;19373:55:105;;;27501:38:3;;;;19355:74:105;;;;27501:38:3;;;;;;;;;;19328:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;1447:220:73:-;1557:66;;;-1:-1:-1;;;;;23501:55:105;;1557:66:73;;;23483:74:105;23573:18;;;;23566:34;;;1557:66:73;;;;;;;;;;23456:18:105;;;;1557:66:73;;;;;;;;-1:-1:-1;;;;;1557:66:73;-1:-1:-1;;;1557:66:73;;;1634:26;1648:5;1557:66;1634:13;:26::i;1675:971:74:-;1737:9;-1:-1:-1;;;;;1787:1:74;1784:41;1781:120;;;-1:-1:-1;1853:3:74;1849:11;;;;1781:120;1923:18;1920:1;1917:25;1914:112;;;1970:2;1966:10;;;;2000:12;1914:112;2048:10;2045:1;2042:17;2039:104;;;2087:2;2083:10;;;;2117:12;2039:104;2165:6;2162:1;2159:13;2156:100;;;2200:2;2196:10;;;;2230:12;2156:100;2278:4;2275:1;2272:11;2269:96;;;2311:1;2307:9;;;;2340:11;2269:96;2387:3;2384:1;2381:10;2378:95;;;2419:1;2415:9;;;;2448:11;2378:95;2495:3;2492:1;2489:10;2486:95;;;2527:1;2523:9;;;;2556:11;2486:95;2603:3;2600:1;2597:10;2594:36;;;2626:1;2617:11;1675:971;;;:::o;14232:129:62:-;14314:30;;-1:-1:-1;;;14314:30:62;;14338:4;14314:30;;;19355:74:105;14288:7:62;;14314:40;;-1:-1:-1;;;;;14314:15:62;;;;;19328:18:105;;14314:30:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4117:178:69:-;4187:25;4245:43;:6;1421:2;5648:20:75;5670:11;5644:38;;5510:188;5673:179:69;5746:28;5810:35;:6;1585:3;5198:20:75;5220:11;5194:38;;5060:188;2214:150:69;2276:17;4727:11:75;4701:38;;2318:39:69;4567:188:75;9231:156:8;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;:::-;10474:120;;:::o;1673:757:73:-;1748:12;1807:1;1801:4;1794:15;1892:4;1886;1879;1873:11;1866:4;1860;1856:15;1853:1;1846:5;1839;1834:63;1823:74;-1:-1:-1;1823:74:73;1938:194;;;;2178:16;2211:56;;;;2334:1;2327:4;2321:11;2318:18;2309:7;2305:32;2294:43;;2171:168;;2211:56;2257:5;2245:18;2238:26;2231:34;2220:45;;2171:168;;1911:442;;1938:194;1966:16;1963:155;;;2032:16;2026:4;2020;2005:44;2083:16;2077:4;2070:30;1963:155;1911:442;2378:7;2373:50;;2394:29;;-1:-1:-1;;;2394:29:73;;;;;;;;;;;10966:1095:8;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;23501:55:105;;11664:18:8;;;23483:74:105;23573:18;;;23566:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;23456:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;38636:2:105;11725:175:8;;;38618:21:105;38675:3;38655:18;;;38648:31;38715:34;38695:18;;;38688:62;38786:34;38766:18;;;38759:62;38858:34;38837:19;;;38830:63;-1:-1:-1;;;38909:19:105;;;38902:46;38965:19;;11725:175:8;38434:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;39215:55:105;;11920:24:8;;;39197:74:105;39287:18;;;39280:34;;;39330:18;;;39323:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;39170:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;13395:393::-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;9110:115;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;19373:55:105;;1990:25:8;;;19355:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;19328:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;23501:55:105;;;;23483:74;;23588:2;23573:18;;23566:34;23471:2;23456:18;;23309:297;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;23501:55:105;;;23483:74;;23573:18;;;23566:34;23456:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;38636:2:105;2268:187:8;;;38618:21:105;38675:3;38655:18;;;38648:31;38715:34;38695:18;;;38688:62;38786:34;38766:18;;;38759:62;38858:34;38837:19;;;38830:63;-1:-1:-1;;;38909:19:105;;;38902:46;38965:19;;2268:187:8;38434:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;40234:55:105;;;40216:74;;-1:-1:-1;;;;;;40326:33:105;;;40306:18;;;40299:61;;;;40376:18;;;40369:34;40434:2;40419:18;;40412:34;40203:3;40188:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;23501:55:105;;;;23483:74;;23588:2;23573:18;;23566:34;23471:2;23456:18;;23309:297;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;23501:55:105;;;23483:74;;23573:18;;;23566:34;23456:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;39215:55:105;;;3215:32:8;;;39197:74:105;39287:18;;;39280:34;39330:18;;;39323:34;;;39170:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;40234:55:105;;;40216:74;;-1:-1:-1;;;;;;40326:33:105;;;40306:18;;;40299:61;;;;40376:18;;;40369:34;40434:2;40419:18;;40412:34;40203:3;40188:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;39215:55:105;;;3941:29:8;;;39197:74:105;39287:18;;;39280:34;39330:18;;;39323:34;;;39170:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;39215:55:105;;;4033:29:8;;;39197:74:105;39287:18;;;39280:34;39330:18;;;39323:34;;;39170:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;40659:2:105;4107:74:8;;;40641:21:105;40678:18;;;40671:30;;;;40737:34;40717:18;;;40710:62;40808:34;40788:18;;;40781:62;40860:19;;4107:74:8;40457:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;41092:2:105;4202:162:8;;;41074:21:105;41131:2;41111:18;;;41104:30;41170:34;41150:18;;;41143:62;41241:17;41221:18;;;41214:45;41276:19;;4202:162:8;40890:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:188;565:20;;-1:-1:-1;;;;;614:46:105;;604:57;;594:85;;675:1;672;665:12;690:159;757:20;;817:6;806:18;;796:29;;786:57;;839:1;836;829:12;854:620;966:6;974;982;990;998;1006;1014;1067:3;1055:9;1046:7;1042:23;1038:33;1035:53;;;1084:1;1081;1074:12;1035:53;1107:29;1126:9;1107:29;:::i;:::-;1097:39;;1155:38;1189:2;1178:9;1174:18;1155:38;:::i;:::-;1145:48;;1212:37;1245:2;1234:9;1230:18;1212:37;:::i;:::-;1202:47;;1268:38;1302:2;1291:9;1287:18;1268:38;:::i;:::-;1258:48;;1325:39;1359:3;1348:9;1344:19;1325:39;:::i;:::-;1315:49;;1411:3;1400:9;1396:19;1383:33;1373:43;;1463:3;1452:9;1448:19;1435:33;1425:43;;854:620;;;;;;;;;;:::o;1479:681::-;1650:2;1702:21;;;1772:13;;1675:18;;;1794:22;;;1621:4;;1650:2;1873:15;;;;1847:2;1832:18;;;1621:4;1916:218;1930:6;1927:1;1924:13;1916:218;;;1995:13;;-1:-1:-1;;;;;1991:62:105;1979:75;;2109:15;;;;2074:12;;;;1952:1;1945:9;1916:218;;;-1:-1:-1;2151:3:105;;1479:681;-1:-1:-1;;;;;;1479:681:105:o;2165:250::-;2250:1;2260:113;2274:6;2271:1;2268:13;2260:113;;;2350:11;;;2344:18;2331:11;;;2324:39;2296:2;2289:10;2260:113;;;-1:-1:-1;;2407:1:105;2389:16;;2382:27;2165:250::o;2420:271::-;2462:3;2500:5;2494:12;2527:6;2522:3;2515:19;2543:76;2612:6;2605:4;2600:3;2596:14;2589:4;2582:5;2578:16;2543:76;:::i;:::-;2673:2;2652:15;-1:-1:-1;;2648:29:105;2639:39;;;;2680:4;2635:50;;2420:271;-1:-1:-1;;2420:271:105:o;2696:1765::-;2929:2;2981:21;;;3051:13;;2954:18;;;3073:22;;;2900:4;;2929:2;3114;;3132:18;;;;3169:1;3212:15;;;3197:31;;3193:40;;3256:15;;;2900:4;;3320:1112;3336:6;3331:3;3328:15;3320:1112;;;-1:-1:-1;;3405:22:105;;;3401:36;3389:49;;3461:13;;3548:9;;-1:-1:-1;;;;;3544:58:105;3529:74;;3642:11;;3636:18;3674:15;;;3667:27;;;3755:19;;3501:15;;;3787:24;;;3968:21;;;;3834:2;3916:17;;;3904:30;;3900:39;;;3858:15;;;;4013:1;4027:296;4043:8;4038:3;4035:17;4027:296;;;4149:2;4145:7;4136:6;4128;4124:19;4120:33;4113:5;4106:48;4181:42;4216:6;4205:8;4199:15;4181:42;:::i;:::-;4252:17;;;;4171:52;-1:-1:-1;4295:14:105;;;;4071:1;4062:11;4027:296;;;-1:-1:-1;;;4410:12:105;;;;4346:6;-1:-1:-1;;4375:15:105;;;;3362:1;3353:11;3320:1112;;;-1:-1:-1;4449:6:105;;2696:1765;-1:-1:-1;;;;;;;;;;2696:1765:105:o;4466:118::-;4552:5;4545:13;4538:21;4531:5;4528:32;4518:60;;4574:1;4571;4564:12;4589:634;4679:6;4687;4695;4703;4711;4764:3;4752:9;4743:7;4739:23;4735:33;4732:53;;;4781:1;4778;4771:12;4732:53;4804:29;4823:9;4804:29;:::i;:::-;4794:39;;4852:38;4886:2;4875:9;4871:18;4852:38;:::i;:::-;4842:48;;4940:2;4929:9;4925:18;4912:32;4953:28;4975:5;4953:28;:::i;:::-;5000:5;-1:-1:-1;5057:2:105;5042:18;;5029:32;5103:1;5092:22;;;5080:35;;5070:63;;5129:1;5126;5119:12;5070:63;5152:7;-1:-1:-1;5178:39:105;5212:3;5197:19;;5178:39;:::i;:::-;5168:49;;4589:634;;;;;;;;:::o;5228:156::-;5294:20;;5354:4;5343:16;;5333:27;;5323:55;;5374:1;5371;5364:12;5389:252;5453:6;5461;5514:2;5502:9;5493:7;5489:23;5485:32;5482:52;;;5530:1;5527;5520:12;5482:52;5553:27;5570:9;5553:27;:::i;:::-;5543:37;;5599:36;5631:2;5620:9;5616:18;5599:36;:::i;:::-;5589:46;;5389:252;;;;;:::o;5828:161::-;5895:20;;5955:8;5944:20;;5934:31;;5924:59;;5979:1;5976;5969:12;5994:332;6070:6;6078;6086;6139:2;6127:9;6118:7;6114:23;6110:32;6107:52;;;6155:1;6152;6145:12;6107:52;6178:29;6197:9;6178:29;:::i;:::-;6168:39;;6226:38;6260:2;6249:9;6245:18;6226:38;:::i;:::-;6216:48;;6283:37;6316:2;6305:9;6301:18;6283:37;:::i;:::-;6273:47;;5994:332;;;;;:::o;6331:1590::-;6533:4;6562:2;6602;6591:9;6587:18;6632:2;6621:9;6614:21;6655:6;6690;6684:13;6721:6;6713;6706:22;6747:2;6737:12;;6780:2;6769:9;6765:18;6758:25;;6842:2;6832:6;6829:1;6825:14;6814:9;6810:30;6806:39;6880:2;6872:6;6868:15;6901:1;6922;6932:960;6948:6;6943:3;6940:15;6932:960;;;7017:22;;;-1:-1:-1;;7013:36:105;7001:49;;7073:13;;7160:9;;-1:-1:-1;;;;;7156:58:105;7141:74;;7254:11;;7248:18;7286:15;;;7279:27;;;7367:19;;7113:15;;;7399:24;;;7489:21;;;;7534:1;;7457:2;7445:15;;;7548:236;7564:8;7559:3;7556:17;7548:236;;;7645:15;;-1:-1:-1;;;;;;7641:42:105;7627:57;;7753:17;;;;7592:1;7583:11;;;;;7710:14;;;;7548:236;;;-1:-1:-1;7870:12:105;;;;7807:5;-1:-1:-1;;;7835:15:105;;;;6974:1;6965:11;6932:960;;;-1:-1:-1;7909:6:105;;6331:1590;-1:-1:-1;;;;;;;;;6331:1590:105:o;7926:405::-;8010:6;8018;8026;8034;8087:3;8075:9;8066:7;8062:23;8058:33;8055:53;;;8104:1;8101;8094:12;8055:53;8127:29;8146:9;8127:29;:::i;:::-;8117:39;;8175:38;8209:2;8198:9;8194:18;8175:38;:::i;:::-;8165:48;;8232:37;8265:2;8254:9;8250:18;8232:37;:::i;:::-;8222:47;;8288:37;8321:2;8310:9;8306:18;8288:37;:::i;:::-;8278:47;;7926:405;;;;;;;:::o;8336:478::-;8431:6;8439;8447;8455;8463;8516:3;8504:9;8495:7;8491:23;8487:33;8484:53;;;8533:1;8530;8523:12;8484:53;8556:29;8575:9;8556:29;:::i;:::-;8546:39;;8604:38;8638:2;8627:9;8623:18;8604:38;:::i;:::-;8594:48;;8661:38;8695:2;8684:9;8680:18;8661:38;:::i;:::-;8651:48;;8718:38;8752:2;8741:9;8737:18;8718:38;:::i;:::-;8336:478;;;;-1:-1:-1;8336:478:105;;8803:3;8788:19;8775:33;;8336:478;-1:-1:-1;;8336:478:105:o;8819:328::-;8896:6;8904;8912;8965:2;8953:9;8944:7;8940:23;8936:32;8933:52;;;8981:1;8978;8971:12;8933:52;9004:29;9023:9;9004:29;:::i;:::-;8994:39;;9052:38;9086:2;9075:9;9071:18;9052:38;:::i;:::-;9042:48;;9137:2;9126:9;9122:18;9109:32;9099:42;;8819:328;;;;;:::o;9152:803::-;9314:4;9343:2;9383;9372:9;9368:18;9413:2;9402:9;9395:21;9436:6;9471;9465:13;9502:6;9494;9487:22;9540:2;9529:9;9525:18;9518:25;;9602:2;9592:6;9589:1;9585:14;9574:9;9570:30;9566:39;9552:53;;9640:2;9632:6;9628:15;9661:1;9671:255;9685:6;9682:1;9679:13;9671:255;;;9778:2;9774:7;9762:9;9754:6;9750:22;9746:36;9741:3;9734:49;9806:40;9839:6;9830;9824:13;9806:40;:::i;:::-;9796:50;-1:-1:-1;9904:12:105;;;;9869:15;;;;9707:1;9700:9;9671:255;;;-1:-1:-1;9943:6:105;;9152:803;-1:-1:-1;;;;;;;9152:803:105:o;9960:322::-;10034:6;10042;10050;10103:2;10091:9;10082:7;10078:23;10074:32;10071:52;;;10119:1;10116;10109:12;10071:52;10142:28;10160:9;10142:28;:::i;:::-;10132:38;;10217:2;10206:9;10202:18;10189:32;10179:42;;10240:36;10272:2;10261:9;10257:18;10240:36;:::i;10482:260::-;10550:6;10558;10611:2;10599:9;10590:7;10586:23;10582:32;10579:52;;;10627:1;10624;10617:12;10579:52;10650:29;10669:9;10650:29;:::i;:::-;10640:39;;10698:38;10732:2;10721:9;10717:18;10698:38;:::i;10747:154::-;-1:-1:-1;;;;;10826:5:105;10822:54;10815:5;10812:65;10802:93;;10891:1;10888;10881:12;10906:898;11039:6;11047;11055;11063;11071;11079;11087;11095;11148:3;11136:9;11127:7;11123:23;11119:33;11116:53;;;11165:1;11162;11155:12;11116:53;11204:9;11191:23;11223:31;11248:5;11223:31;:::i;:::-;11273:5;-1:-1:-1;11330:2:105;11315:18;;11302:32;11343:33;11302:32;11343:33;:::i;:::-;11395:7;-1:-1:-1;11454:2:105;11439:18;;11426:32;11467:33;11426:32;11467:33;:::i;:::-;11519:7;-1:-1:-1;11545:37:105;11578:2;11563:18;;11545:37;:::i;:::-;11535:47;;11629:3;11618:9;11614:19;11601:33;11591:43;;11681:3;11670:9;11666:19;11653:33;11643:43;;11705:37;11737:3;11726:9;11722:19;11705:37;:::i;:::-;11695:47;;11761:37;11793:3;11782:9;11778:19;11761:37;:::i;:::-;11751:47;;10906:898;;;;;;;;;;;:::o;11809:184::-;11867:6;11920:2;11908:9;11899:7;11895:23;11891:32;11888:52;;;11936:1;11933;11926:12;11888:52;11959:28;11977:9;11959:28;:::i;11998:397::-;12084:6;12092;12100;12108;12161:3;12149:9;12140:7;12136:23;12132:33;12129:53;;;12178:1;12175;12168:12;12129:53;12201:29;12220:9;12201:29;:::i;:::-;12191:39;;12249:38;12283:2;12272:9;12268:18;12249:38;:::i;:::-;11998:397;;12239:48;;-1:-1:-1;;;;12334:2:105;12319:18;;12306:32;;12385:2;12370:18;12357:32;;11998:397::o;12400:547::-;12504:6;12512;12520;12528;12536;12544;12597:3;12585:9;12576:7;12572:23;12568:33;12565:53;;;12614:1;12611;12604:12;12565:53;12637:29;12656:9;12637:29;:::i;:::-;12627:39;;12685:38;12719:2;12708:9;12704:18;12685:38;:::i;:::-;12675:48;;12742:38;12776:2;12765:9;12761:18;12742:38;:::i;:::-;12732:48;;12799:38;12833:2;12822:9;12818:18;12799:38;:::i;:::-;12789:48;;12884:3;12873:9;12869:19;12856:33;12846:43;;12936:3;12925:9;12921:19;12908:33;12898:43;;12400:547;;;;;;;;:::o;12952:409::-;13038:6;13046;13054;13062;13115:3;13103:9;13094:7;13090:23;13086:33;13083:53;;;13132:1;13129;13122:12;13083:53;13155:29;13174:9;13155:29;:::i;:::-;13145:39;;13203:38;13237:2;13226:9;13222:18;13203:38;:::i;:::-;13193:48;;13260:38;13294:2;13283:9;13279:18;13260:38;:::i;:::-;13250:48;;13317:38;13351:2;13340:9;13336:18;13317:38;:::i;13366:829::-;13490:6;13498;13506;13514;13522;13530;13538;13591:3;13579:9;13570:7;13566:23;13562:33;13559:53;;;13608:1;13605;13598:12;13559:53;13647:9;13634:23;13666:31;13691:5;13666:31;:::i;:::-;13716:5;-1:-1:-1;13773:2:105;13758:18;;13745:32;13786:33;13745:32;13786:33;:::i;:::-;13838:7;-1:-1:-1;13897:2:105;13882:18;;13869:32;13910:33;13869:32;13910:33;:::i;:::-;13962:7;-1:-1:-1;13988:37:105;14021:2;14006:18;;13988:37;:::i;:::-;13978:47;;14072:3;14061:9;14057:19;14044:33;14034:43;;14096:37;14128:3;14117:9;14113:19;14096:37;:::i;:::-;14086:47;;14152:37;14184:3;14173:9;14169:19;14152:37;:::i;:::-;14142:47;;13366:829;;;;;;;;;;:::o;14200:338::-;-1:-1:-1;;;;;14379:6:105;14375:55;14364:9;14357:74;14467:2;14462;14451:9;14447:18;14440:30;14338:4;14487:45;14528:2;14517:9;14513:18;14505:6;14487:45;:::i;23611:245::-;23678:6;23731:2;23719:9;23710:7;23706:23;23702:32;23699:52;;;23747:1;23744;23737:12;23699:52;23779:9;23773:16;23798:28;23820:5;23798:28;:::i;23861:127::-;23922:10;23917:3;23913:20;23910:1;23903:31;23953:4;23950:1;23943:15;23977:4;23974:1;23967:15;23993:125;24058:9;;;24079:10;;;24076:36;;;24092:18;;:::i;24123:127::-;24184:10;24179:3;24175:20;24172:1;24165:31;24215:4;24212:1;24205:15;24239:4;24236:1;24229:15;24255:120;24295:1;24321;24311:35;;24326:18;;:::i;:::-;-1:-1:-1;24360:9:105;;24255:120::o;24380:197::-;-1:-1:-1;;;;;24502:10:105;;;24514;;;24498:27;;24537:11;;;24534:37;;;24551:18;;:::i;24582:128::-;24649:9;;;24670:11;;;24667:37;;;24684:18;;:::i;24715:168::-;24788:9;;;24819;;24836:15;;;24830:22;;24816:37;24806:71;;24857:18;;:::i;24888:380::-;24967:1;24963:12;;;;25010;;;25031:61;;25085:4;25077:6;25073:17;25063:27;;25031:61;25138:2;25130:6;25127:14;25107:18;25104:38;25101:161;;25184:10;25179:3;25175:20;25172:1;25165:31;25219:4;25216:1;25209:15;25247:4;25244:1;25237:15;25273:216;25337:9;;;25365:11;;;25312:3;25395:9;;25423:10;;25419:19;;25448:10;;25440:19;;25416:44;25413:70;;;25463:18;;:::i;:::-;25413:70;;25273:216;;;;:::o;25494:200::-;-1:-1:-1;;;;;25630:10:105;;;25618;;;25614:27;;25653:12;;;25650:38;;;25668:18;;:::i;25699:148::-;25787:4;25766:12;;;25780;;;25762:31;;25805:13;;25802:39;;;25821:18;;:::i;25852:151::-;25942:4;25935:12;;;25921;;;25917:31;;25960:14;;25957:40;;;25977:18;;:::i;26008:218::-;26155:2;26144:9;26137:21;26118:4;26175:45;26216:2;26205:9;26201:18;26193:6;26175:45;:::i;26438:216::-;26478:1;-1:-1:-1;;;;;26565:2:105;26562:1;26558:10;26587:3;26577:37;;26594:18;;:::i;:::-;26632:10;;26628:20;;;;;26438:216;-1:-1:-1;;26438:216:105:o;26659:184::-;26729:6;26782:2;26770:9;26761:7;26757:23;26753:32;26750:52;;;26798:1;26795;26788:12;26750:52;-1:-1:-1;26821:16:105;;26659:184;-1:-1:-1;26659:184:105:o;26848:267::-;26934:6;26987:2;26975:9;26966:7;26962:23;26958:32;26955:52;;;27003:1;27000;26993:12;26955:52;27035:9;27029:16;27054:31;27079:5;27054:31;:::i;27120:127::-;27181:10;27176:3;27172:20;27169:1;27162:31;27212:4;27209:1;27202:15;27236:4;27233:1;27226:15;27252:127;27313:10;27308:3;27304:20;27301:1;27294:31;27344:4;27341:1;27334:15;27368:4;27365:1;27358:15;27384:135;27423:3;27444:17;;;27441:43;;27464:18;;:::i;:::-;-1:-1:-1;27511:1:105;27500:13;;27384:135::o;27524:854::-;27722:4;27770:2;27759:9;27755:18;-1:-1:-1;;;;;27873:2:105;27865:6;27861:15;27850:9;27843:34;27896:2;27934;27929;27918:9;27914:18;27907:30;27957:6;27992;27986:13;28023:6;28015;28008:22;28061:3;28050:9;28046:19;28039:26;;28100:2;28092:6;28088:15;28074:29;;28121:1;28131:169;28145:6;28142:1;28139:13;28131:169;;;28206:13;;28194:26;;28275:15;;;;28240:12;;;;28167:1;28160:9;28131:169;;;28135:3;;28317;28309:11;;;;28368:2;28360:6;28356:15;28351:2;28340:9;28336:18;28329:43;;;27524:854;;;;;;:::o;28383:275::-;28454:2;28448:9;28519:2;28500:13;;-1:-1:-1;;28496:27:105;28484:40;;28554:18;28539:34;;28575:22;;;28536:62;28533:88;;;28601:18;;:::i;:::-;28637:2;28630:22;28383:275;;-1:-1:-1;28383:275:105:o;28663:183::-;28723:4;28756:18;28748:6;28745:30;28742:56;;;28778:18;;:::i;:::-;-1:-1:-1;28823:1:105;28819:14;28835:4;28815:25;;28663:183::o;28851:1003::-;28964:6;28972;28980;29033:2;29021:9;29012:7;29008:23;29004:32;29001:52;;;29049:1;29046;29039:12;29001:52;29078:9;29072:16;29062:26;;29107:2;29149;29138:9;29134:18;29128:25;29118:35;;29197:2;29186:9;29182:18;29176:25;29224:18;29216:6;29213:30;29210:50;;;29256:1;29253;29246:12;29210:50;29279:22;;29332:4;29324:13;;29320:27;-1:-1:-1;29310:55:105;;29361:1;29358;29351:12;29310:55;29390:2;29384:9;29413:60;29429:43;29469:2;29429:43;:::i;:::-;29413:60;:::i;:::-;29507:15;;;29589:1;29585:10;;;;29577:19;;29573:28;;;29538:12;;;;29613:19;;;29610:39;;;29645:1;29642;29635:12;29610:39;29669:11;;;;29689:135;29705:6;29700:3;29697:15;29689:135;;;29771:10;;29759:23;;29722:12;;;;29802;;;;29689:135;;;29843:5;29833:15;;;;;;;28851:1003;;;;;:::o;30053:677::-;30183:6;30191;30199;30207;30215;30223;30231;30239;30292:3;30280:9;30271:7;30267:23;30263:33;30260:53;;;30309:1;30306;30299:12;30260:53;30338:9;30332:16;30322:26;;30388:2;30377:9;30373:18;30367:25;30357:35;;30432:2;30421:9;30417:18;30411:25;30401:35;;30476:2;30465:9;30461:18;30455:25;30445:35;;30520:3;30509:9;30505:19;30499:26;30489:36;;30565:3;30554:9;30550:19;30544:26;30534:36;;30610:3;30599:9;30595:19;30589:26;30579:36;;30658:3;30647:9;30643:19;30637:26;30672:28;30694:5;30672:28;:::i;:::-;30719:5;30709:15;;;30053:677;;;;;;;;;;;:::o;31895:435::-;31948:3;31986:5;31980:12;32013:6;32008:3;32001:19;32039:4;32068:2;32063:3;32059:12;32052:19;;32105:2;32098:5;32094:14;32126:1;32136:169;32150:6;32147:1;32144:13;32136:169;;;32211:13;;32199:26;;32245:12;;;;32280:15;;;;32172:1;32165:9;32136:169;;;-1:-1:-1;32321:3:105;;31895:435;-1:-1:-1;;;;;31895:435:105:o;32335:688::-;32611:4;-1:-1:-1;;;;;32721:2:105;32713:6;32709:15;32698:9;32691:34;32773:2;32765:6;32761:15;32756:2;32745:9;32741:18;32734:43;;32813:3;32808:2;32797:9;32793:18;32786:31;32840:57;32892:3;32881:9;32877:19;32869:6;32840:57;:::i;:::-;32945:9;32937:6;32933:22;32928:2;32917:9;32913:18;32906:50;32973:44;33010:6;33002;32973:44;:::i;33028:659::-;33093:5;33146:3;33139:4;33131:6;33127:17;33123:27;33113:55;;33164:1;33161;33154:12;33113:55;33193:6;33187:13;33219:4;33243:60;33259:43;33299:2;33259:43;:::i;33243:60::-;33337:15;;;33423:1;33419:10;;;;33407:23;;33403:32;;;33368:12;;;;33447:15;;;33444:35;;;33475:1;33472;33465:12;33444:35;33511:2;33503:6;33499:15;33523:135;33539:6;33534:3;33531:15;33523:135;;;33605:10;;33593:23;;33636:12;;;;33556;;33523:135;;;-1:-1:-1;33676:5:105;33028:659;-1:-1:-1;;;;;;33028:659:105:o;33692:363::-;33787:6;33840:2;33828:9;33819:7;33815:23;33811:32;33808:52;;;33856:1;33853;33846:12;33808:52;33889:9;33883:16;33922:18;33914:6;33911:30;33908:50;;;33954:1;33951;33944:12;33908:50;33977:72;34041:7;34032:6;34021:9;34017:22;33977:72;:::i;35693:362::-;35898:6;35887:9;35880:25;35941:6;35936:2;35925:9;35921:18;35914:34;35984:2;35979;35968:9;35964:18;35957:30;35861:4;36004:45;36045:2;36034:9;36030:18;36022:6;36004:45;:::i;36060:435::-;36293:6;36282:9;36275:25;36336:6;36331:2;36320:9;36316:18;36309:34;36379:6;36374:2;36363:9;36359:18;36352:34;36422:3;36417:2;36406:9;36402:18;36395:31;36256:4;36443:46;36484:3;36473:9;36469:19;36461:6;36443:46;:::i;36500:382::-;36707:6;36700:14;36693:22;36682:9;36675:41;36766:6;36759:14;36752:22;36747:2;36736:9;36732:18;36725:50;36811:2;36806;36795:9;36791:18;36784:30;36656:4;36831:45;36872:2;36861:9;36857:18;36849:6;36831:45;:::i;37138:287::-;37267:3;37305:6;37299:13;37321:66;37380:6;37375:3;37368:4;37360:6;37356:17;37321:66;:::i;:::-;37403:16;;;;;37138:287;-1:-1:-1;;37138:287:105:o;37430:384::-;-1:-1:-1;;;;;;37615:33:105;;37603:46;;37672:13;;37585:3;;37694:74;37672:13;37757:1;37748:11;;37741:4;37729:17;;37694:74;:::i;:::-;37788:16;;;;37806:1;37784:24;;37430:384;-1:-1:-1;;;37430:384:105:o;37819:610::-;38065:13;;38008:3;;38039;;38118:4;38145:15;;;38008:3;38188:175;38202:6;38199:1;38196:13;38188:175;;;38265:13;;38251:28;;38301:14;;;;38338:15;;;;38224:1;38217:9;38188:175;;;-1:-1:-1;;38372:21:105;;;-1:-1:-1;38409:14:105;;;;;-1:-1:-1;;;37819:610:105:o;39368:614::-;39497:6;39505;39558:2;39546:9;39537:7;39533:23;39529:32;39526:52;;;39574:1;39571;39564:12;39526:52;39607:9;39601:16;39636:18;39677:2;39669:6;39666:14;39663:34;;;39693:1;39690;39683:12;39663:34;39716:72;39780:7;39771:6;39760:9;39756:22;39716:72;:::i;:::-;39706:82;;39834:2;39823:9;39819:18;39813:25;39797:41;;39863:2;39853:8;39850:16;39847:36;;;39879:1;39876;39869:12;39847:36;;39902:74;39968:7;39957:8;39946:9;39942:24;39902:74;:::i;:::-;39892:84;;;39368:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":3258,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_BinIsEmpty(uint128,uint128)":"92c60d0e","testFuzz_GetAmountOutOfBin(uint128,uint128,uint256,uint256)":"ba8d3b99","testFuzz_GetAmountsLessThanBin(uint128,uint128,bool,int16,uint128)":"2b7c1d9c","testFuzz_GetCompositionFees(uint128,uint128,uint16,uint128,uint128,uint256,uint256)":"169d7a4c","testFuzz_GetLiquidity(uint128,uint128,uint256)":"8378969f","testFuzz_Received(uint128,uint128,uint128,uint128)":"d72b3077","testFuzz_Transfer(uint128,uint128)":"a7a5da56","testFuzz_TryExploitShares(uint128,uint128,uint128,uint128,uint256)":"73cb490e","testFuzz_VerifyAmountsNeqIds(uint128,uint128,uint24,uint24)":"6ba2eacd","testFuzz_VerifyAmountsOnActiveId(uint128,uint128,uint24)":"58ef4375","testFuzz_getAmountsFullBin(uint128,uint128,bool,int16,uint128)":"933a320b","testFuzz_getSharesAndEffectiveAmountsIn(uint128,uint128,uint128,uint128,uint256,uint256)":"d6cbdeea"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"BinHelper__CompositionFactorFlawed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__LiquidityOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__MaxLiquidityPerBinExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeHelper__FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__AddOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__SubUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenHelper__TransferFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"}],\"name\":\"testFuzz_BinIsEmpty\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amountToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"testFuzz_GetAmountOutOfBin\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"int16\",\"name\":\"deltaId\",\"type\":\"int16\"},{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_GetAmountsLessThanBin\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint128\",\"name\":\"amountXIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountYIn\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"testFuzz_GetCompositionFees\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountInY\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"testFuzz_GetLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"sentX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"sentY\",\"type\":\"uint128\"}],\"name\":\"testFuzz_Received\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY\",\"type\":\"uint128\"}],\"name\":\"testFuzz_Transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX1\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY1\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountX2\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY2\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"testFuzz_TryExploitShares\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY\",\"type\":\"uint128\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"testFuzz_VerifyAmountsNeqIds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY\",\"type\":\"uint128\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"testFuzz_VerifyAmountsOnActiveId\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"int16\",\"name\":\"deltaId\",\"type\":\"int16\"},{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_getAmountsFullBin\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountInX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountInY\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"testFuzz_getSharesAndEffectiveAmountsIn\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/BinHelper.t.sol\":\"BinHelperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/libraries/BinHelper.t.sol\":{\"keccak256\":\"0x0d9265a1abaf082bbe449bed7e815bc664e78fb1971c7638410733dad0964418\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://511676a94bbd25a5b7ecf1d4796f896aad3edd19957ac112edc4c64e270585cb\",\"dweb:/ipfs/QmUKB4cxvHnf1qKyqCrxRfCZhiEyBST1rfXo1ofPdTJpks\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"BinHelper__CompositionFactorFlawed"},{"inputs":[],"type":"error","name":"BinHelper__LiquidityOverflow"},{"inputs":[],"type":"error","name":"BinHelper__MaxLiquidityPerBinExceeded"},{"inputs":[],"type":"error","name":"FeeHelper__FeeTooLarge"},{"inputs":[],"type":"error","name":"PackedUint128Math__AddOverflow"},{"inputs":[],"type":"error","name":"PackedUint128Math__SubUnderflow"},{"inputs":[],"type":"error","name":"PairParametersHelper__InvalidParameter"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds128Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"TokenHelper__TransferFailed"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulShiftOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint128","name":"binReserveX","type":"uint128"},{"internalType":"uint128","name":"binReserveY","type":"uint128"}],"stateMutability":"pure","type":"function","name":"testFuzz_BinIsEmpty"},{"inputs":[{"internalType":"uint128","name":"binReserveX","type":"uint128"},{"internalType":"uint128","name":"binReserveY","type":"uint128"},{"internalType":"uint256","name":"amountToBurn","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetAmountOutOfBin"},{"inputs":[{"internalType":"uint128","name":"binReserveX","type":"uint128"},{"internalType":"uint128","name":"binReserveY","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"int16","name":"deltaId","type":"int16"},{"internalType":"uint128","name":"amountIn","type":"uint128"}],"stateMutability":"view","type":"function","name":"testFuzz_GetAmountsLessThanBin"},{"inputs":[{"internalType":"uint128","name":"reserveX","type":"uint128"},{"internalType":"uint128","name":"reserveY","type":"uint128"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint128","name":"amountXIn","type":"uint128"},{"internalType":"uint128","name":"amountYIn","type":"uint128"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetCompositionFees"},{"inputs":[{"internalType":"uint128","name":"amountInX","type":"uint128"},{"internalType":"uint128","name":"amountInY","type":"uint128"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetLiquidity"},{"inputs":[{"internalType":"uint128","name":"reserveX","type":"uint128"},{"internalType":"uint128","name":"reserveY","type":"uint128"},{"internalType":"uint128","name":"sentX","type":"uint128"},{"internalType":"uint128","name":"sentY","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_Received"},{"inputs":[{"internalType":"uint128","name":"amountX","type":"uint128"},{"internalType":"uint128","name":"amountY","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_Transfer"},{"inputs":[{"internalType":"uint128","name":"amountX1","type":"uint128"},{"internalType":"uint128","name":"amountY1","type":"uint128"},{"internalType":"uint128","name":"amountX2","type":"uint128"},{"internalType":"uint128","name":"amountY2","type":"uint128"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_TryExploitShares"},{"inputs":[{"internalType":"uint128","name":"amountX","type":"uint128"},{"internalType":"uint128","name":"amountY","type":"uint128"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_VerifyAmountsNeqIds"},{"inputs":[{"internalType":"uint128","name":"amountX","type":"uint128"},{"internalType":"uint128","name":"amountY","type":"uint128"},{"internalType":"uint24","name":"activeId","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_VerifyAmountsOnActiveId"},{"inputs":[{"internalType":"uint128","name":"binReserveX","type":"uint128"},{"internalType":"uint128","name":"binReserveY","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"int16","name":"deltaId","type":"int16"},{"internalType":"uint128","name":"amountIn","type":"uint128"}],"stateMutability":"pure","type":"function","name":"testFuzz_getAmountsFullBin"},{"inputs":[{"internalType":"uint128","name":"binReserveX","type":"uint128"},{"internalType":"uint128","name":"binReserveY","type":"uint128"},{"internalType":"uint128","name":"amountInX","type":"uint128"},{"internalType":"uint128","name":"amountInY","type":"uint128"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_getSharesAndEffectiveAmountsIn"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/BinHelper.t.sol":"BinHelperTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/libraries/BinHelper.t.sol":{"keccak256":"0x0d9265a1abaf082bbe449bed7e815bc664e78fb1971c7638410733dad0964418","urls":["bzz-raw://511676a94bbd25a5b7ecf1d4796f896aad3edd19957ac112edc4c64e270585cb","dweb:/ipfs/QmUKB4cxvHnf1qKyqCrxRfCZhiEyBST1rfXo1ofPdTJpks"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":99} \ No newline at end of file diff --git a/abi/BitMath.sol/BitMath.json b/abi/BitMath.sol/BitMath.json deleted file mode 100644 index fa20f8ae..00000000 --- a/abi/BitMath.sol/BitMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf372ff64a89c2b2d98f6657257b53a96a483b0cdc26eed497b174b5ee741f0c64736f6c63430008140033","sourceMap":"190:3860:75:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;190:3860:75;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf372ff64a89c2b2d98f6657257b53a96a483b0cdc26eed497b174b5ee741f0c64736f6c63430008140033","sourceMap":"190:3860:75:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Bit Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for bit calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/BitMath.sol":"BitMath"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"}},"version":1},"id":75} \ No newline at end of file diff --git a/abi/BitMath.t.sol/BitMathTest.json b/abi/BitMath.t.sol/BitMathTest.json deleted file mode 100644 index 18558184..00000000 --- a/abi/BitMath.t.sol/BitMathTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_ClosestBitLeft","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"bit","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_ClosestBitRight","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"bit","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_LeastSignificantBit","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_MostSignificantBit","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_ClosestBitLeft","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_ClosestBitRight","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_LeastSignificantBit","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_MostSignificantBit","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506114a58061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101355760003560e01c806372cd656c116100b25780639b68ea4f11610081578063b5508aa911610066578063b5508aa91461021d578063ba414fa614610225578063e20c9f711461023d57600080fd5b80639b68ea4f14610202578063aa025e1d1461021557600080fd5b806372cd656c146101bf57806373e44d1e146101d257806385226c81146101e5578063916a17c6146101fa57600080fd5b806332962861116101095780633f7286f4116100ee5780633f7286f41461018f5780635fe59d1f1461019757806366d9a9a0146101aa57600080fd5b8063329628611461017f5780633e5e3c231461018757600080fd5b8062d057431461013a5780631ed7831c146101445780632802b3a0146101625780632ade38801461016a575b600080fd5b610142610245565b005b61014c6102b5565b60405161015991906110ca565b60405180910390f35b610142610317565b610172610384565b604051610159919061115d565b6101426104c6565b61014c610532565b61014c610592565b6101426101a536600461121d565b6105f2565b6101b26106dc565b6040516101599190611253565b6101426101cd36600461131e565b6107d7565b6101426101e036600461131e565b610878565b6101ed610922565b6040516101599190611337565b6101b26109f2565b61014261021036600461121d565b610aed565b610142610be9565b6101ed610c55565b61022d610d25565b6040519015158152602001610159565b61014c610de0565b60005b6101008110156102b2576102a06102616001831b610e40565b60ff16826040518060400160405280601a81526020017f746573745f4d6f73745369676e69666963616e744269743a3a31000000000000815250610ee5565b806102aa816113af565b915050610248565b50565b6060601480548060200260200160405190810160405280929190818152602001828054801561030d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ef575b5050505050905090565b60005b6101008110156102b2576103726103336001831b610f55565b60ff16826040518060400160405280601b81526020017f746573745f4c656173745369676e69666963616e744269743a3a310000000000815250610ee5565b8061037c816113af565b91505061031a565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104bd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104a6578382906000526020600020018054610419906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610445906113c8565b80156104925780601f1061046757610100808354040283529160200191610492565b820191906000526020600020905b81548152906001019060200180831161047557829003601f168201915b5050505050815260200190600101906103fa565b5050505081525050815260200190600101906103a8565b50505050905090565b60005b6101008110156102b2576105206104e46001831b6000610ff1565b826040518060400160405280601681526020017f746573745f436c6f736573744269744c6566743a3a3100000000000000000000815250610ee5565b8061052a816113af565b9150506104c9565b6060601680548060200260200160405190810160405280929190818152602001828054801561030d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102ef575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561030d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102ef575050505050905090565b60006105fe8383610ff1565b90506000198103610655576106508260ff1684901c60006040518060400160405280601a81526020017f7465737446757a7a5f436c6f736573744269744c6566743a3a31000000000000815250610ee5565b505050565b610698818360ff166040518060400160405280601a81526020017f7465737446757a7a5f436c6f736573744269744c6566743a3a32000000000000815250611022565b6106508184901c60016040518060400160405280601a81526020017f7465737446757a7a5f436c6f736573744269744c6566743a3a33000000000000815250611022565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104bd5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156107bf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161076c5790505b50505050508152505081526020019060010190610700565b60006107e282610e40565b60ff16905081600003610834576108308160006040518060400160405280601e81526020017f7465737446757a7a5f4d6f73745369676e69666963616e744269743a3a310000815250610ee5565b5050565b6108308183901c60016040518060400160405280601e81526020017f7465737446757a7a5f4d6f73745369676e69666963616e744269743a3a320000815250610ee5565b600061088382610f55565b60ff169050816000036108d1576108308160ff6040518060400160405280601f81526020017f7465737446757a7a5f4c656173745369676e69666963616e744269743a3a3100815250610ee5565b6108306108df8260ff611402565b83901b600160ff1b6040518060400160405280601f81526020017f7465737446757a7a5f4c656173745369676e69666963616e744269743a3a3200815250610ee5565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104bd578382906000526020600020018054610965906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610991906113c8565b80156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081526020019060010190610946565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104bd5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ad557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a825790505b50505050508152505081526020019060010190610a16565b6000610af9838361105d565b90506000198103610b5557610650610b128360ff611415565b60ff1684901b60006040518060400160405280601b81526020017f7465737446757a7a5f436c6f7365737442697452696768743a3a310000000000815250610ee5565b610b98818360ff166040518060400160405280601b81526020017f7465737446757a7a5f436c6f7365737442697452696768743a3a32000000000081525061108f565b610650610ba68260ff611402565b84901b600160ff1b6040518060400160405280601b81526020017f7465737446757a7a5f436c6f7365737442697452696768743a3a330000000000815250611022565b60005b6101008110156102b257610c43610c076001831b60ff61105d565b826040518060400160405280601781526020017f746573745f436c6f7365737442697452696768743a3a31000000000000000000815250610ee5565b80610c4d816113af565b915050610bec565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104bd578382906000526020600020018054610c98906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc4906113c8565b8015610d115780601f10610ce657610100808354040283529160200191610d11565b820191906000526020600020905b815481529060010190602001808311610cf457829003601f168201915b505050505081526020019060010190610c79565b60075460009060ff1615610d3d575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd9919061142e565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801561030d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102ef575050505050905090565b60006fffffffffffffffffffffffffffffffff821115610e625750608090811c905b67ffffffffffffffff821115610e7a57604091821c91015b63ffffffff821115610e8e57602091821c91015b61ffff821115610ea057601091821c91015b60ff821115610eb157600891821c91015b600f821115610ec257600491821c91015b6003821115610ed357600291821c91015b6001821115610ee0576001015b919050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610f2090869086908690600401611447565b60006040518083038186803b158015610f3857600080fd5b505afa158015610f4c573d6000803e3d6000fd5b50505050505050565b60008160801b8015610f6957608091508092505b8260401b90508015610f7c579150604001815b8260201b90508015610f8f579150602001815b8260101b90508015610fa2579150601001815b8260081b90508015610fb5579150600801815b8260041b90508015610fc8579150600401815b8260021b90508015610fdb579150600201815b508160011b15610fe9576001015b60ff03919050565b60ff81169190911c9060008215611015578161100c84610f55565b0160ff16611019565b6000195b90505b92915050565b604051630389490b60e61b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e25242c090610f2090869086908690600401611447565b60ff8181031691821b916000908315611083578061107a85610e40565b60ff1603611087565b6000195b949350505050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d90610f2090869086908690600401611447565b6020808252825182820181905260009190848201906040850190845b8181101561110b5783516001600160a01b0316835292840192918401916001016110e6565b50909695505050505050565b6000815180845260005b8181101561113d57602081850181015186830182015201611121565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561120d57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156111f757605f198985030183526111e5848651611117565b948e01949350918d01916001016111c9565b505050978a019794505091880191600101611184565b50919a9950505050505050505050565b6000806040838503121561123057600080fd5b82359150602083013560ff8116811461124857600080fd5b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561130f57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156112fa5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906112b8565b50978a0197955050509187019160010161127b565b50919998505050505050505050565b60006020828403121561133057600080fd5b5035919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561138c57603f1988860301845261137a858351611117565b9450928501929085019060010161135e565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016113c1576113c1611399565b5060010190565b600181811c908216806113dc57607f821691505b6020821081036113fc57634e487b7160e01b600052602260045260246000fd5b50919050565b8181038181111561101c5761101c611399565b60ff828116828216039081111561101c5761101c611399565b60006020828403121561144057600080fd5b5051919050565b8381528260208201526060604082015260006114666060830184611117565b9594505050505056fea2646970667358221220f9347857438e66c61470b6a4f093674462015a0e40c7352e48cd76e7e4ca254164736f6c63430008140033","sourceMap":"140:2317:112:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;140:2317:112;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101355760003560e01c806372cd656c116100b25780639b68ea4f11610081578063b5508aa911610066578063b5508aa91461021d578063ba414fa614610225578063e20c9f711461023d57600080fd5b80639b68ea4f14610202578063aa025e1d1461021557600080fd5b806372cd656c146101bf57806373e44d1e146101d257806385226c81146101e5578063916a17c6146101fa57600080fd5b806332962861116101095780633f7286f4116100ee5780633f7286f41461018f5780635fe59d1f1461019757806366d9a9a0146101aa57600080fd5b8063329628611461017f5780633e5e3c231461018757600080fd5b8062d057431461013a5780631ed7831c146101445780632802b3a0146101625780632ade38801461016a575b600080fd5b610142610245565b005b61014c6102b5565b60405161015991906110ca565b60405180910390f35b610142610317565b610172610384565b604051610159919061115d565b6101426104c6565b61014c610532565b61014c610592565b6101426101a536600461121d565b6105f2565b6101b26106dc565b6040516101599190611253565b6101426101cd36600461131e565b6107d7565b6101426101e036600461131e565b610878565b6101ed610922565b6040516101599190611337565b6101b26109f2565b61014261021036600461121d565b610aed565b610142610be9565b6101ed610c55565b61022d610d25565b6040519015158152602001610159565b61014c610de0565b60005b6101008110156102b2576102a06102616001831b610e40565b60ff16826040518060400160405280601a81526020017f746573745f4d6f73745369676e69666963616e744269743a3a31000000000000815250610ee5565b806102aa816113af565b915050610248565b50565b6060601480548060200260200160405190810160405280929190818152602001828054801561030d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ef575b5050505050905090565b60005b6101008110156102b2576103726103336001831b610f55565b60ff16826040518060400160405280601b81526020017f746573745f4c656173745369676e69666963616e744269743a3a310000000000815250610ee5565b8061037c816113af565b91505061031a565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104bd57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104a6578382906000526020600020018054610419906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610445906113c8565b80156104925780601f1061046757610100808354040283529160200191610492565b820191906000526020600020905b81548152906001019060200180831161047557829003601f168201915b5050505050815260200190600101906103fa565b5050505081525050815260200190600101906103a8565b50505050905090565b60005b6101008110156102b2576105206104e46001831b6000610ff1565b826040518060400160405280601681526020017f746573745f436c6f736573744269744c6566743a3a3100000000000000000000815250610ee5565b8061052a816113af565b9150506104c9565b6060601680548060200260200160405190810160405280929190818152602001828054801561030d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102ef575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561030d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102ef575050505050905090565b60006105fe8383610ff1565b90506000198103610655576106508260ff1684901c60006040518060400160405280601a81526020017f7465737446757a7a5f436c6f736573744269744c6566743a3a31000000000000815250610ee5565b505050565b610698818360ff166040518060400160405280601a81526020017f7465737446757a7a5f436c6f736573744269744c6566743a3a32000000000000815250611022565b6106508184901c60016040518060400160405280601a81526020017f7465737446757a7a5f436c6f736573744269744c6566743a3a33000000000000815250611022565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104bd5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156107bf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161076c5790505b50505050508152505081526020019060010190610700565b60006107e282610e40565b60ff16905081600003610834576108308160006040518060400160405280601e81526020017f7465737446757a7a5f4d6f73745369676e69666963616e744269743a3a310000815250610ee5565b5050565b6108308183901c60016040518060400160405280601e81526020017f7465737446757a7a5f4d6f73745369676e69666963616e744269743a3a320000815250610ee5565b600061088382610f55565b60ff169050816000036108d1576108308160ff6040518060400160405280601f81526020017f7465737446757a7a5f4c656173745369676e69666963616e744269743a3a3100815250610ee5565b6108306108df8260ff611402565b83901b600160ff1b6040518060400160405280601f81526020017f7465737446757a7a5f4c656173745369676e69666963616e744269743a3a3200815250610ee5565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104bd578382906000526020600020018054610965906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610991906113c8565b80156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b505050505081526020019060010190610946565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104bd5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ad557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a825790505b50505050508152505081526020019060010190610a16565b6000610af9838361105d565b90506000198103610b5557610650610b128360ff611415565b60ff1684901b60006040518060400160405280601b81526020017f7465737446757a7a5f436c6f7365737442697452696768743a3a310000000000815250610ee5565b610b98818360ff166040518060400160405280601b81526020017f7465737446757a7a5f436c6f7365737442697452696768743a3a32000000000081525061108f565b610650610ba68260ff611402565b84901b600160ff1b6040518060400160405280601b81526020017f7465737446757a7a5f436c6f7365737442697452696768743a3a330000000000815250611022565b60005b6101008110156102b257610c43610c076001831b60ff61105d565b826040518060400160405280601781526020017f746573745f436c6f7365737442697452696768743a3a31000000000000000000815250610ee5565b80610c4d816113af565b915050610bec565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104bd578382906000526020600020018054610c98906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc4906113c8565b8015610d115780601f10610ce657610100808354040283529160200191610d11565b820191906000526020600020905b815481529060010190602001808311610cf457829003601f168201915b505050505081526020019060010190610c79565b60075460009060ff1615610d3d575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd9919061142e565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801561030d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116102ef575050505050905090565b60006fffffffffffffffffffffffffffffffff821115610e625750608090811c905b67ffffffffffffffff821115610e7a57604091821c91015b63ffffffff821115610e8e57602091821c91015b61ffff821115610ea057601091821c91015b60ff821115610eb157600891821c91015b600f821115610ec257600491821c91015b6003821115610ed357600291821c91015b6001821115610ee0576001015b919050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610f2090869086908690600401611447565b60006040518083038186803b158015610f3857600080fd5b505afa158015610f4c573d6000803e3d6000fd5b50505050505050565b60008160801b8015610f6957608091508092505b8260401b90508015610f7c579150604001815b8260201b90508015610f8f579150602001815b8260101b90508015610fa2579150601001815b8260081b90508015610fb5579150600801815b8260041b90508015610fc8579150600401815b8260021b90508015610fdb579150600201815b508160011b15610fe9576001015b60ff03919050565b60ff81169190911c9060008215611015578161100c84610f55565b0160ff16611019565b6000195b90505b92915050565b604051630389490b60e61b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e25242c090610f2090869086908690600401611447565b60ff8181031691821b916000908315611083578061107a85610e40565b60ff1603611087565b6000195b949350505050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d90610f2090869086908690600401611447565b6020808252825182820181905260009190848201906040850190845b8181101561110b5783516001600160a01b0316835292840192918401916001016110e6565b50909695505050505050565b6000815180845260005b8181101561113d57602081850181015186830182015201611121565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561120d57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156111f757605f198985030183526111e5848651611117565b948e01949350918d01916001016111c9565b505050978a019794505091880191600101611184565b50919a9950505050505050505050565b6000806040838503121561123057600080fd5b82359150602083013560ff8116811461124857600080fd5b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561130f57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156112fa5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906112b8565b50978a0197955050509187019160010161127b565b50919998505050505050505050565b60006020828403121561133057600080fd5b5035919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561138c57603f1988860301845261137a858351611117565b9450928501929085019060010161135e565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016113c1576113c1611399565b5060010190565b600181811c908216806113dc57607f821691505b6020821081036113fc57634e487b7160e01b600052602260045260246000fd5b50919050565b8181038181111561101c5761101c611399565b60ff828116828216039081111561101c5761101c611399565b60006020828403121561144057600080fd5b5051919050565b8381528260208201526060604082015260006114666060830184611117565b9594505050505056fea2646970667358221220f9347857438e66c61470b6a4f093674462015a0e40c7352e48cd76e7e4ca254164736f6c63430008140033","sourceMap":"140:2317:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;207:203;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;720:206:112;;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;1875:192:112:-;;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;2073:382:112:-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;416:298:112:-;;;;;;:::i;:::-;;:::i;932:319::-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;1460:409:112:-;;;;;;:::i;:::-;;:::i;1257:197::-;;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5993:14:127;;5986:22;5968:41;;5956:2;5941:18;1243:204:1;5828:187:127;2304:142:5;;;:::i;207:203:112:-;271:9;266:138;290:3;286:1;:7;266:138;;;314:79;323:36;331:1;:6;;323:34;:36::i;:::-;314:79;;361:1;314:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;295:3;;;;:::i;:::-;;;;266:138;;;;207:203::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;720:206:112:-;785:9;780:140;804:3;800:1;:7;780:140;;;828:81;837:37;845:1;:6;;837:35;:37::i;:::-;828:81;;876:1;828:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;809:3;;;;:::i;:::-;;;;780:140;;3360:151:5;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;1875:192:112:-;1935:9;1930:131;1954:3;1950:1;:7;1930:131;;;1978:72;1987:33;1995:1;:6;;2018:1;1987:30;:33::i;:::-;2022:1;1978:72;;;;;;;;;;;;;;;;;:8;:72::i;:::-;1959:3;;;;:::i;:::-;;;;1930:131;;3221:133:5;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2073:382:112:-;2153:11;2167:21;:1;2184:3;2167:16;:21::i;:::-;2153:35;;-1:-1:-1;;2203:3:112;:24;2199:250;;2243:51;2257:3;2252:8;;:1;:8;;2262:1;2243:51;;;;;;;;;;;;;;;;;:8;:51::i;:::-;2143:312;2073:382;;:::o;2199:250::-;2325:48;2334:3;2339;2325:48;;;;;;;;;;;;;;;;;;;:8;:48::i;:::-;2387:51;2401:3;2396:1;:8;;2406:1;2387:51;;;;;;;;;;;;;;;;;:8;:51::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:298:112;488:11;502:22;:1;:20;:22::i;:::-;488:36;;;;539:1;544;539:6;535:173;;561:50;570:3;575:1;561:50;;;;;;;;;;;;;;;;;:8;:50::i;:::-;478:236;416:298;:::o;535:173::-;642:55;656:3;651:1;:8;;661:1;642:55;;;;;;;;;;;;;;;;;:8;:55::i;932:319::-;1005:11;1019:23;:1;:21;:23::i;:::-;1005:37;;;;1057:1;1062;1057:6;1053:192;;1079:53;1088:3;1093;1079:53;;;;;;;;;;;;;;;;;:8;:53::i;1053:192::-;1163:71;1178:9;1184:3;1178;:9;:::i;:::-;1172:1;:16;;-1:-1:-1;;;1163:71:112;;;;;;;;;;;;;;;;;:8;:71::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1460:409:112;1540:11;1554:22;:1;1572:3;1554:17;:22::i;:::-;1540:36;;-1:-1:-1;;1591:3:112;:24;1587:276;;1631:60;1646:9;1652:3;1646;:9;:::i;:::-;1640:16;;:1;:16;;1658:1;1631:60;;;;;;;;;;;;;;;;;:8;:60::i;1587:276::-;1722:49;1731:3;1736;1722:49;;;;;;;;;;;;;;;;;;;:8;:49::i;:::-;1785:67;1800:9;1806:3;1800;:9;:::i;:::-;1794:1;:16;;-1:-1:-1;;;1785:67:112;;;;;;;;;;;;;;;;;:8;:67::i;1257:197::-;1318:9;1313:135;1337:3;1333:1;:7;1313:135;;;1361:76;1370:36;1378:1;:6;;1402:3;1370:31;:36::i;:::-;1408:1;1361:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;1342:3;;;;:::i;:::-;;;;1313:135;;2157:141:5;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;7140:74:127;;;1398:17:1;7230:18:127;;;7223:34;1428:1:1;;1377:7;;7113:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1675:971:75:-;1737:9;1790:34;1787:1;1784:41;1781:120;;;-1:-1:-1;1853:3:75;1849:11;;;;1781:120;1923:18;1920:1;1917:25;1914:112;;;1970:2;1966:10;;;;2000:12;1914:112;2048:10;2045:1;2042:17;2039:104;;;2087:2;2083:10;;;;2117:12;2039:104;2165:6;2162:1;2159:13;2156:100;;;2200:2;2196:10;;;;2230:12;2156:100;2278:4;2275:1;2272:11;2269:96;;;2311:1;2307:9;;;;2340:11;2269:96;2387:3;2384:1;2381:10;2378:95;;;2419:1;2415:9;;;;2448:11;2378:95;2495:3;2492:1;2489:10;2486:95;;;2527:1;2523:9;;;;2556:11;2486:95;2603:3;2600:1;2597:10;2594:36;;;2626:1;2617:11;2594:36;1675:971;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;2877:1171:75:-;2940:9;3003:1;2998:3;2994:11;3035:2;3028:10;3018:88;;3065:3;3058:10;;3090:2;3085:7;;3018:88;3133:1;3129:2;3125:10;3119:16;;3165:2;3158:10;3148:97;;3193:2;-1:-1:-1;3228:2:75;3219:12;3193:2;3148:97;3272:1;3268:2;3264:10;3258:16;;3304:2;3297:10;3287:97;;3332:2;-1:-1:-1;3367:2:75;3358:12;3332:2;3287:97;3411:1;3407:2;3403:10;3397:16;;3443:2;3436:10;3426:97;;3471:2;-1:-1:-1;3506:2:75;3497:12;3471:2;3426:97;3549:1;3546;3542:9;3536:15;;3581:2;3574:10;3564:96;;3609:2;-1:-1:-1;3644:1:75;3635:11;3609:2;3564:96;3686:1;3683;3679:9;3673:15;;3718:2;3711:10;3701:96;;3746:2;-1:-1:-1;3781:1:75;3772:11;3746:2;3701:96;3823:1;3820;3816:9;3810:15;;3855:2;3848:10;3838:96;;3883:2;-1:-1:-1;3918:1:75;3909:11;3883:2;3838:96;;3971:1;3968;3964:9;3957:17;3947:51;;3994:1;3985:11;3947:51;4023:3;4019:13;;2877:1171;-1:-1:-1;2877:1171:75:o;1226:222::-;1341:9;;;;;;;;1295:10;1373:6;;1372:59;;1428:3;1403:22;1423:1;1403:19;:22::i;:::-;:28;1372:59;;;;;-1:-1:-1;;1372:59:75;1365:66;;1226:222;;;;;:::o;15596:134:1:-;15694:29;;-1:-1:-1;;;15694:29:1;;:11;;;;:29;;15706:4;;15712:5;;15719:3;;15694:29;;;:::i;546:342:75:-;678:3;:9;;;662:25;701:11;;;;616:10;;812:6;;811:60;;866:5;842:21;861:1;842:18;:21::i;:::-;:29;;;811:60;;;-1:-1:-1;;811:60:75;804:67;546:342;-1:-1:-1;;;;546:342:75:o;14412:134:1:-;14510:29;;-1:-1:-1;;;14510:29:1;;:11;;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:423::-;742:3;780:5;774:12;807:6;802:3;795:19;832:1;842:162;856:6;853:1;850:13;842:162;;;918:4;974:13;;;970:22;;964:29;946:11;;;942:20;;935:59;871:12;842:162;;;846:3;1049:1;1042:4;1033:6;1028:3;1024:16;1020:27;1013:38;1112:4;1105:2;1101:7;1096:2;1088:6;1084:15;1080:29;1075:3;1071:39;1067:50;1060:57;;;700:423;;;;:::o;1128:1765::-;1361:2;1413:21;;;1483:13;;1386:18;;;1505:22;;;1332:4;;1361:2;1546;;1564:18;;;;1601:1;1644:15;;;1629:31;;1625:40;;1688:15;;;1332:4;;1752:1112;1768:6;1763:3;1760:15;1752:1112;;;-1:-1:-1;;1837:22:127;;;1833:36;1821:49;;1893:13;;1980:9;;-1:-1:-1;;;;;1976:58:127;1961:74;;2074:11;;2068:18;2106:15;;;2099:27;;;2187:19;;1933:15;;;2219:24;;;2400:21;;;;2266:2;2348:17;;;2336:30;;2332:39;;;2290:15;;;;2445:1;2459:296;2475:8;2470:3;2467:17;2459:296;;;2581:2;2577:7;2568:6;2560;2556:19;2552:33;2545:5;2538:48;2613:42;2648:6;2637:8;2631:15;2613:42;:::i;:::-;2684:17;;;;2603:52;-1:-1:-1;2727:14:127;;;;2503:1;2494:11;2459:296;;;-1:-1:-1;;;2842:12:127;;;;2778:6;-1:-1:-1;;2807:15:127;;;;1794:1;1785:11;1752:1112;;;-1:-1:-1;2881:6:127;;1128:1765;-1:-1:-1;;;;;;;;;;1128:1765:127:o;2898:337::-;2964:6;2972;3025:2;3013:9;3004:7;3000:23;2996:32;2993:52;;;3041:1;3038;3031:12;2993:52;3077:9;3064:23;3054:33;;3137:2;3126:9;3122:18;3109:32;3181:4;3174:5;3170:16;3163:5;3160:27;3150:55;;3201:1;3198;3191:12;3150:55;3224:5;3214:15;;;2898:337;;;;;:::o;3240:1590::-;3442:4;3471:2;3511;3500:9;3496:18;3541:2;3530:9;3523:21;3564:6;3599;3593:13;3630:6;3622;3615:22;3656:2;3646:12;;3689:2;3678:9;3674:18;3667:25;;3751:2;3741:6;3738:1;3734:14;3723:9;3719:30;3715:39;3789:2;3781:6;3777:15;3810:1;3831;3841:960;3857:6;3852:3;3849:15;3841:960;;;3926:22;;;-1:-1:-1;;3922:36:127;3910:49;;3982:13;;4069:9;;-1:-1:-1;;;;;4065:58:127;4050:74;;4163:11;;4157:18;4195:15;;;4188:27;;;4276:19;;4022:15;;;4308:24;;;4398:21;;;;4443:1;;4366:2;4354:15;;;4457:236;4473:8;4468:3;4465:17;4457:236;;;4554:15;;4571:20;4550:42;4536:57;;4662:17;;;;4501:1;4492:11;;;;;4619:14;;;;4457:236;;;-1:-1:-1;4779:12:127;;;;4716:5;-1:-1:-1;;;4744:15:127;;;;3883:1;3874:11;3841:960;;;-1:-1:-1;4818:6:127;;3240:1590;-1:-1:-1;;;;;;;;;3240:1590:127:o;4835:180::-;4894:6;4947:2;4935:9;4926:7;4922:23;4918:32;4915:52;;;4963:1;4960;4953:12;4915:52;-1:-1:-1;4986:23:127;;4835:180;-1:-1:-1;4835:180:127:o;5020:803::-;5182:4;5211:2;5251;5240:9;5236:18;5281:2;5270:9;5263:21;5304:6;5339;5333:13;5370:6;5362;5355:22;5408:2;5397:9;5393:18;5386:25;;5470:2;5460:6;5457:1;5453:14;5442:9;5438:30;5434:39;5420:53;;5508:2;5500:6;5496:15;5529:1;5539:255;5553:6;5550:1;5547:13;5539:255;;;5646:2;5642:7;5630:9;5622:6;5618:22;5614:36;5609:3;5602:49;5674:40;5707:6;5698;5692:13;5674:40;:::i;:::-;5664:50;-1:-1:-1;5772:12:127;;;;5737:15;;;;5575:1;5568:9;5539:255;;;-1:-1:-1;5811:6:127;;5020:803;-1:-1:-1;;;;;;;5020:803:127:o;6020:127::-;6081:10;6076:3;6072:20;6069:1;6062:31;6112:4;6109:1;6102:15;6136:4;6133:1;6126:15;6152:135;6191:3;6212:17;;;6209:43;;6232:18;;:::i;:::-;-1:-1:-1;6279:1:127;6268:13;;6152:135::o;6292:380::-;6371:1;6367:12;;;;6414;;;6435:61;;6489:4;6481:6;6477:17;6467:27;;6435:61;6542:2;6534:6;6531:14;6511:18;6508:38;6505:161;;6588:10;6583:3;6579:20;6576:1;6569:31;6623:4;6620:1;6613:15;6651:4;6648:1;6641:15;6505:161;;6292:380;;;:::o;6677:128::-;6744:9;;;6765:11;;;6762:37;;;6779:18;;:::i;6810:151::-;6900:4;6893:12;;;6879;;;6875:31;;6918:14;;6915:40;;;6935:18;;:::i;7268:184::-;7338:6;7391:2;7379:9;7370:7;7366:23;7362:32;7359:52;;;7407:1;7404;7397:12;7359:52;-1:-1:-1;7430:16:127;;7268:184;-1:-1:-1;7268:184:127:o;7457:362::-;7662:6;7651:9;7644:25;7705:6;7700:2;7689:9;7685:18;7678:34;7748:2;7743;7732:9;7728:18;7721:30;7625:4;7768:45;7809:2;7798:9;7794:18;7786:6;7768:45;:::i;:::-;7760:53;7457:362;-1:-1:-1;;;;;7457:362:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_ClosestBitLeft(uint256,uint8)":"5fe59d1f","testFuzz_ClosestBitRight(uint256,uint8)":"9b68ea4f","testFuzz_LeastSignificantBit(uint256)":"73e44d1e","testFuzz_MostSignificantBit(uint256)":"72cd656c","test_ClosestBitLeft()":"32962861","test_ClosestBitRight()":"aa025e1d","test_LeastSignificantBit()":"2802b3a0","test_MostSignificantBit()":"00d05743"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"bit\",\"type\":\"uint8\"}],\"name\":\"testFuzz_ClosestBitLeft\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"bit\",\"type\":\"uint8\"}],\"name\":\"testFuzz_ClosestBitRight\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_LeastSignificantBit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_MostSignificantBit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_ClosestBitLeft\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_ClosestBitRight\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_LeastSignificantBit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_MostSignificantBit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/BitMath.t.sol\":\"BitMathTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"test/libraries/math/BitMath.t.sol\":{\"keccak256\":\"0x4a07a05a7ed5c99e6b6b294402ef616f66b19f29951b6b71e899515a125a9823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fb25871df8a5eb43ec8f194ae670c57eaff15de1251572a6a51ef77bc86cd59\",\"dweb:/ipfs/QmccpCMpPaRWb2zqQku6FtJZNZnQnQ1EQM8DRG88LjEbNe\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint8","name":"bit","type":"uint8"}],"stateMutability":"pure","type":"function","name":"testFuzz_ClosestBitLeft"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint8","name":"bit","type":"uint8"}],"stateMutability":"pure","type":"function","name":"testFuzz_ClosestBitRight"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_LeastSignificantBit"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_MostSignificantBit"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_ClosestBitLeft"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_ClosestBitRight"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_LeastSignificantBit"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_MostSignificantBit"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/BitMath.t.sol":"BitMathTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"test/libraries/math/BitMath.t.sol":{"keccak256":"0x4a07a05a7ed5c99e6b6b294402ef616f66b19f29951b6b71e899515a125a9823","urls":["bzz-raw://3fb25871df8a5eb43ec8f194ae670c57eaff15de1251572a6a51ef77bc86cd59","dweb:/ipfs/QmccpCMpPaRWb2zqQku6FtJZNZnQnQ1EQM8DRG88LjEbNe"],"license":"MIT"}},"version":1},"id":112} \ No newline at end of file diff --git a/abi/Clone.sol/Clone.json b/abi/Clone.sol/Clone.json deleted file mode 100644 index d95732c7..00000000 --- a/abi/Clone.sol/Clone.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Trader Sovryn LBSolady (https://github.com/vectorized/solady/blob/main/src/utils/Clone.sol)Adapted from clones with immutable args by zefram.eth, Saw-mon & Natalie (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Clone\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Class with helper read functions for clone with immutable args.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Clone.sol\":\"Clone\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/Clone.sol":"Clone"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"}},"version":1},"id":64} \ No newline at end of file diff --git a/abi/Constants.sol/Constants.json b/abi/Constants.sol/Constants.json deleted file mode 100644 index d4a8cc33..00000000 --- a/abi/Constants.sol/Constants.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220979bcd79d024a7ec0c12b51bceb7e48573f9798ce42830591d9c3e98e7b5444c64736f6c63430008140033","sourceMap":"195:772:65:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:772:65;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220979bcd79d024a7ec0c12b51bceb7e48573f9798ce42830591d9c3e98e7b5444c64736f6c63430008140033","sourceMap":"195:772:65:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CALLBACK_SUCCESS\":{\"details\":\"The expected return after a successful flash loan\"}},\"title\":\"Liquidity Book Constants Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Set of constants for Liquidity Book contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Constants.sol\":\"Constants\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/Constants.sol":"Constants"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"}},"version":1},"id":65} \ No newline at end of file diff --git a/abi/Context.sol/Context.json b/abi/Context.sol/Context.json deleted file mode 100644 index a33ac356..00000000 --- a/abi/Context.sol/Context.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":37} \ No newline at end of file diff --git a/abi/ERC165.sol/ERC165.json b/abi/ERC165.sol/ERC165.json deleted file mode 100644 index 9f9d2d02..00000000 --- a/abi/ERC165.sol/ERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":"ERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/abi/ERC20.sol/ERC20.json b/abi/ERC20.sol/ERC20.json deleted file mode 100644 index 12091d39..00000000 --- a/abi/ERC20.sol/ERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the ERC may not emit these events, as it isn't required by the specification.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":32} \ No newline at end of file diff --git a/abi/ERC20.sol/ERC20Mock.json b/abi/ERC20.sol/ERC20Mock.json deleted file mode 100644 index 3384010f..00000000 --- a/abi/ERC20.sol/ERC20Mock.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_decimals","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c63430008140033","sourceMap":"271:763:121:-:0;;;449:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;519:10;1897:113:32;;;;;;;;;;;;;-1:-1:-1;;;1897:113:32;;;;;;;;;;;;;;;;-1:-1:-1;;;1897:113:32;;;1971:5;1963;:13;;;;;;:::i;:::-;-1:-1:-1;1986:7:32;:17;1996:7;1986;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:25;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:25;;1350:1;1322:31;;;3159:51:127;3132:18;;1322:31:25;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;541:28:121::2;;;::::0;271:763;;2912:187:25;3004:6;;;-1:-1:-1;;;;;3020:17:25;;;-1:-1:-1;;;;;;3020:17:25;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;14:273:127:-;82:6;135:2;123:9;114:7;110:23;106:32;103:52;;;151:1;148;141:12;103:52;183:9;177:16;233:4;226:5;222:16;215:5;212:27;202:55;;253:1;250;243:12;202:55;276:5;14:273;-1:-1:-1;;;14:273:127:o;292:127::-;353:10;348:3;344:20;341:1;334:31;384:4;381:1;374:15;408:4;405:1;398:15;424:380;503:1;499:12;;;;546;;;567:61;;621:4;613:6;609:17;599:27;;567:61;674:2;666:6;663:14;643:18;640:38;637:161;;720:10;715:3;711:20;708:1;701:31;755:4;752:1;745:15;783:4;780:1;773:15;637:161;;424:380;;;:::o;935:545::-;1037:2;1032:3;1029:11;1026:448;;;1073:1;1098:5;1094:2;1087:17;1143:4;1139:2;1129:19;1213:2;1201:10;1197:19;1194:1;1190:27;1184:4;1180:38;1249:4;1237:10;1234:20;1231:47;;;-1:-1:-1;1272:4:127;1231:47;1327:2;1322:3;1318:12;1315:1;1311:20;1305:4;1301:31;1291:41;;1382:82;1400:2;1393:5;1390:13;1382:82;;;1445:17;;;1426:1;1415:13;1382:82;;;1386:3;;;1026:448;935:545;;;:::o;1656:1352::-;1776:10;;-1:-1:-1;;;;;1798:30:127;;1795:56;;;1831:18;;:::i;:::-;1860:97;1950:6;1910:38;1942:4;1936:11;1910:38;:::i;:::-;1904:4;1860:97;:::i;:::-;2012:4;;2076:2;2065:14;;2093:1;2088:663;;;;2795:1;2812:6;2809:89;;;-1:-1:-1;2864:19:127;;;2858:26;2809:89;-1:-1:-1;;1613:1:127;1609:11;;;1605:24;1601:29;1591:40;1637:1;1633:11;;;1588:57;2911:81;;2058:944;;2088:663;882:1;875:14;;;919:4;906:18;;-1:-1:-1;;2124:20:127;;;2242:236;2256:7;2253:1;2250:14;2242:236;;;2345:19;;;2339:26;2324:42;;2437:27;;;;2405:1;2393:14;;;;2272:19;;2242:236;;;2246:3;2506:6;2497:7;2494:19;2491:201;;;2567:19;;;2561:26;-1:-1:-1;;2650:1:127;2646:14;;;2662:3;2642:24;2638:37;2634:42;2619:58;2604:74;;2491:201;-1:-1:-1;;;;;2738:1:127;2722:14;;;2718:22;2705:36;;-1:-1:-1;1656:1352:127:o;3013:203::-;271:763:121;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c63430008140033","sourceMap":"271:763:121:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:89:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4294:186;;;;;;:::i;:::-;;:::i;:::-;;;1192:14:127;;1185:22;1167:41;;1155:2;1140:18;4294:186:32;1027:187:127;3145:97:32;3223:12;;3145:97;;;1365:25:127;;;1353:2;1338:18;3145:97:32;1219:177:127;5040:244:32;;;;;;:::i;:::-;;:::i;664:97:121:-;;;1906:4:127;738:16:121;1894:17:127;1876:36;;1864:2;1849:18;664:97:121;1734:184:127;933:99:121;;;;;;:::i;:::-;;:::i;:::-;;3300:116:32;;;;;;:::i;:::-;-1:-1:-1;;;;;3391:18:32;3365:7;3391:18;;;;;;;;;;;;3300:116;2293:101:25;;;:::i;1638:85::-;1710:6;;1638:85;;-1:-1:-1;;;;;1710:6:25;;;2260:74:127;;2248:2;2233:18;1638:85:25;2114:226:127;2277:93:32;;;:::i;3611:178::-;;;;;;:::i;:::-;;:::i;3847:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3953:18:32;;;3927:7;3953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3847:140;2543:215:25;;;;;;:::i;:::-;;:::i;2075:89:32:-;2120:13;2152:5;2145:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:89;:::o;4294:186::-;4367:4;735:10:37;4421:31:32;735:10:37;4437:7:32;4446:5;4421:8;:31::i;:::-;4469:4;4462:11;;;4294:186;;;;;:::o;5040:244::-;5127:4;735:10:37;5183:37:32;5199:4;735:10:37;5214:5:32;5183:15;:37::i;:::-;5230:26;5240:4;5246:2;5250:5;5230:9;:26::i;:::-;-1:-1:-1;5273:4:32;;5040:244;-1:-1:-1;;;;5040:244:32:o;933:99:121:-;1531:13:25;:11;:13::i;:::-;1006:19:121::1;1012:3;1017:7;1006:5;:19::i;:::-;933:99:::0;;:::o;2293:101:25:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2277:93:32:-;2324:13;2356:7;2349:14;;;;;:::i;3611:178::-;3680:4;735:10:37;3734:27:32;735:10:37;3751:2:32;3755:5;3734:9;:27::i;2543:215:25:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:25;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:25;;2700:1:::1;2672:31;::::0;::::1;2260:74:127::0;2233:18;;2672:31:25::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;8990:128:32:-;9074:37;9083:5;9090:7;9099:5;9106:4;9074:8;:37::i;:::-;8990:128;;;:::o;10664:477::-;-1:-1:-1;;;;;3953:18:32;;;10763:24;3953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10829:37:32;;10825:310;;10905:5;10886:16;:24;10882:130;;;10937:60;;-1:-1:-1;;;10937:60:32;;-1:-1:-1;;;;;3215:55:127;;10937:60:32;;;3197:74:127;3287:18;;;3280:34;;;3330:18;;;3323:34;;;3170:18;;10937:60:32;2995:368:127;10882:130:32;11053:57;11062:5;11069:7;11097:5;11078:16;:24;11104:5;11053:8;:57::i;:::-;10753:388;10664:477;;;:::o;5657:300::-;-1:-1:-1;;;;;5740:18:32;;5736:86;;5781:30;;-1:-1:-1;;;5781:30:32;;5808:1;5781:30;;;2260:74:127;2233:18;;5781:30:32;2114:226:127;5736:86:32;-1:-1:-1;;;;;5835:16:32;;5831:86;;5874:32;;-1:-1:-1;;;5874:32:32;;5903:1;5874:32;;;2260:74:127;2233:18;;5874:32:32;2114:226:127;5831:86:32;5926:24;5934:4;5940:2;5944:5;5926:7;:24::i;1796:162:25:-;1710:6;;-1:-1:-1;;;;;1710:6:25;735:10:37;1855:23:25;1851:101;;1901:40;;-1:-1:-1;;;1901:40:25;;735:10:37;1901:40:25;;;2260:74:127;2233:18;;1901:40:25;2114:226:127;7722:208:32;-1:-1:-1;;;;;7792:21:32;;7788:91;;7836:32;;-1:-1:-1;;;7836:32:32;;7865:1;7836:32;;;2260:74:127;2233:18;;7836:32:32;2114:226:127;7788:91:32;7888:35;7904:1;7908:7;7917:5;7888:7;:35::i;2912:187:25:-;3004:6;;;-1:-1:-1;;;;;3020:17:25;;;;;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;9950:432:32:-;-1:-1:-1;;;;;10062:19:32;;10058:89;;10104:32;;-1:-1:-1;;;10104:32:32;;10133:1;10104:32;;;2260:74:127;2233:18;;10104:32:32;2114:226:127;10058:89:32;-1:-1:-1;;;;;10160:21:32;;10156:90;;10204:31;;-1:-1:-1;;;10204:31:32;;10232:1;10204:31;;;2260:74:127;2233:18;;10204:31:32;2114:226:127;10156:90:32;-1:-1:-1;;;;;10255:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10300:76;;;;10350:7;-1:-1:-1;;;;;10334:31:32;10343:5;-1:-1:-1;;;;;10334:31:32;;10359:5;10334:31;;;;1365:25:127;;1353:2;1338:18;;1219:177;10334:31:32;;;;;;;;9950:432;;;;:::o;6272:1107::-;-1:-1:-1;;;;;6361:18:32;;6357:540;;6513:5;6497:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6357:540:32;;-1:-1:-1;6357:540:32;;-1:-1:-1;;;;;6571:15:32;;6549:19;6571:15;;;;;;;;;;;6604:19;;;6600:115;;;6650:50;;-1:-1:-1;;;6650:50:32;;-1:-1:-1;;;;;3215:55:127;;6650:50:32;;;3197:74:127;3287:18;;;3280:34;;;3330:18;;;3323:34;;;3170:18;;6650:50:32;2995:368:127;6600:115:32;-1:-1:-1;;;;;6835:15:32;;:9;:15;;;;;;;;;;6853:19;;;;6835:37;;6357:540;-1:-1:-1;;;;;6911:16:32;;6907:425;;7074:12;:21;;;;;;;6907:425;;;-1:-1:-1;;;;;7285:13:32;;:9;:13;;;;;;;;;;:22;;;;;;6907:425;7362:2;-1:-1:-1;;;;;7347:25:32;7356:4;-1:-1:-1;;;;;7347:25:32;;7366:5;7347:25;;;;1365::127;;1353:2;1338:18;;1219:177;7347:25:32;;;;;;;;6272:1107;;;:::o;14:548:127:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:127;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:127:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1923:186::-;1982:6;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;2074:29;2093:9;2074:29;:::i;:::-;2064:39;1923:186;-1:-1:-1;;;1923:186:127:o;2345:260::-;2413:6;2421;2474:2;2462:9;2453:7;2449:23;2445:32;2442:52;;;2490:1;2487;2480:12;2442:52;2513:29;2532:9;2513:29;:::i;:::-;2503:39;;2561:38;2595:2;2584:9;2580:18;2561:38;:::i;:::-;2551:48;;2345:260;;;;;:::o;2610:380::-;2689:1;2685:12;;;;2732;;;2753:61;;2807:4;2799:6;2795:17;2785:27;;2753:61;2860:2;2852:6;2849:14;2829:18;2826:38;2823:161;;2906:10;2901:3;2897:20;2894:1;2887:31;2941:4;2938:1;2931:15;2969:4;2966:1;2959:15;2823:161;;2610:380;;;:::o;3368:222::-;3433:9;;;3454:10;;;3451:133;;;3506:10;3501:3;3497:20;3494:1;3487:31;3541:4;3538:1;3531:15;3569:4;3566:1;3559:15","linkReferences":{},"immutableReferences":{"114790":[{"start":337,"length":32}]}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"details\":\"ONLY FOR TESTS\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Constructor\",\"params\":{\"_decimals\":\"The number of decimals for this token\"}},\"decimals()\":{\"details\":\"Define the number of decimals\",\"returns\":{\"_0\":\"The number of decimals\"}},\"mint(address,uint256)\":{\"details\":\"Mint _amount to _to, only callable by the owner\",\"params\":{\"_amount\":\"The amount to be minted\",\"_to\":\"The address that will receive the mint\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"ERC20Mock\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/ERC20.sol\":\"ERC20Mock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Constructor","params":{"_decimals":"The number of decimals for this token"}},"decimals()":{"details":"Define the number of decimals","returns":{"_0":"The number of decimals"}},"mint(address,uint256)":{"details":"Mint _amount to _to, only callable by the owner","params":{"_amount":"The amount to be minted","_to":"The address that will receive the mint"}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/ERC20.sol":"ERC20Mock"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"}},"version":1},"id":121} \ No newline at end of file diff --git a/abi/ERC20/IERC20.sol/IERC20.json b/abi/ERC20/IERC20.sol/IERC20.json deleted file mode 100644 index 283cf1e7..00000000 --- a/abi/ERC20/IERC20.sol/IERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":"IERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"}},"version":1},"id":33} \ No newline at end of file diff --git a/abi/ERC20TransferTax.sol/ERC20TransferTaxMock.json b/abi/ERC20TransferTax.sol/ERC20TransferTaxMock.json deleted file mode 100644 index 06da8b41..00000000 --- a/abi/ERC20TransferTax.sol/ERC20TransferTaxMock.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c63430008140033","sourceMap":"184:324:122:-:0;;;258:30;;;;;;;;;;282:2;519:10:121;1897:113:32;;;;;;;;;;;;;-1:-1:-1;;;1897:113:32;;;;;;;;;;;;;;;;-1:-1:-1;;;1897:113:32;;;1971:5;1963;:13;;;;;;:::i;:::-;-1:-1:-1;1986:7:32;:17;1996:7;1986;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:25;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:25;;1350:1;1322:31;;;2881:51:127;2854:18;;1322:31:25;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;541:28:121::2;;;::::0;184:324:122;;2912:187:25;3004:6;;;-1:-1:-1;;;;;3020:17:25;;;-1:-1:-1;;;;;;3020:17:25;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;14:127:127:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:127;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:127;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:127;;;2580:26;2531:89;-1:-1:-1;;1335:1:127;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:127;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:127;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:127;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:127:o;2735:203::-;184:324:122;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c63430008140033","sourceMap":"184:324:122:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:89:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4294:186;;;;;;:::i;:::-;;:::i;:::-;;;1192:14:127;;1185:22;1167:41;;1155:2;1140:18;4294:186:32;1027:187:127;3145:97:32;3223:12;;3145:97;;;1365:25:127;;;1353:2;1338:18;3145:97:32;1219:177:127;5040:244:32;;;;;;:::i;:::-;;:::i;664:97:121:-;;;1906:4:127;738:16:121;1894:17:127;1876:36;;1864:2;1849:18;664:97:121;1734:184:127;933:99:121;;;;;;:::i;:::-;;:::i;:::-;;3300:116:32;;;;;;:::i;:::-;-1:-1:-1;;;;;3391:18:32;3365:7;3391:18;;;;;;;;;;;;3300:116;2293:101:25;;;:::i;1638:85::-;1710:6;;1638:85;;-1:-1:-1;;;;;1710:6:25;;;2260:74:127;;2248:2;2233:18;1638:85:25;2114:226:127;2277:93:32;;;:::i;3611:178::-;;;;;;:::i;:::-;;:::i;3847:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3953:18:32;;;3927:7;3953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3847:140;2543:215:25;;;;;;:::i;:::-;;:::i;2075:89:32:-;2120:13;2152:5;2145:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:89;:::o;4294:186::-;4367:4;735:10:37;4421:31:32;735:10:37;4437:7:32;4446:5;4421:8;:31::i;:::-;4469:4;4462:11;;;4294:186;;;;;:::o;5040:244::-;5127:4;735:10:37;5183:37:32;5199:4;735:10:37;5214:5:32;5183:15;:37::i;:::-;5230:26;5240:4;5246:2;5250:5;5230:9;:26::i;:::-;-1:-1:-1;5273:4:32;;5040:244;-1:-1:-1;;;;5040:244:32:o;933:99:121:-;1531:13:25;:11;:13::i;:::-;1006:19:121::1;1012:3;1017:7;1006:5;:19::i;:::-;933:99:::0;;:::o;2293:101:25:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2277:93:32:-;2324:13;2356:7;2349:14;;;;;:::i;3611:178::-;3680:4;735:10:37;3734:27:32;735:10:37;3751:2:32;3755:5;3734:9;:27::i;2543:215:25:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:25;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:25;;2700:1:::1;2672:31;::::0;::::1;2260:74:127::0;2233:18;;2672:31:25::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;8990:128:32:-;9074:37;9083:5;9090:7;9099:5;9106:4;9074:8;:37::i;:::-;8990:128;;;:::o;10664:477::-;-1:-1:-1;;;;;3953:18:32;;;10763:24;3953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10829:37:32;;10825:310;;10905:5;10886:16;:24;10882:130;;;10937:60;;-1:-1:-1;;;10937:60:32;;-1:-1:-1;;;;;3215:55:127;;10937:60:32;;;3197:74:127;3287:18;;;3280:34;;;3330:18;;;3323:34;;;3170:18;;10937:60:32;2995:368:127;10882:130:32;11053:57;11062:5;11069:7;11097:5;11078:16;:24;11104:5;11053:8;:57::i;:::-;10753:388;10664:477;;;:::o;5657:300::-;-1:-1:-1;;;;;5740:18:32;;5736:86;;5781:30;;-1:-1:-1;;;5781:30:32;;5808:1;5781:30;;;2260:74:127;2233:18;;5781:30:32;2114:226:127;5736:86:32;-1:-1:-1;;;;;5835:16:32;;5831:86;;5874:32;;-1:-1:-1;;;5874:32:32;;5903:1;5874:32;;;2260:74:127;2233:18;;5874:32:32;2114:226:127;5831:86:32;5926:24;5934:4;5940:2;5944:5;5926:7;:24::i;1796:162:25:-;1710:6;;-1:-1:-1;;;;;1710:6:25;735:10:37;1855:23:25;1851:101;;1901:40;;-1:-1:-1;;;1901:40:25;;735:10:37;1901:40:25;;;2260:74:127;2233:18;;1901:40:25;2114:226:127;7722:208:32;-1:-1:-1;;;;;7792:21:32;;7788:91;;7836:32;;-1:-1:-1;;;7836:32:32;;7865:1;7836:32;;;2260:74:127;2233:18;;7836:32:32;2114:226:127;7788:91:32;7888:35;7904:1;7908:7;7917:5;7888:7;:35::i;2912:187:25:-;3004:6;;;-1:-1:-1;;;;;3020:17:25;;;;;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;9950:432:32:-;-1:-1:-1;;;;;10062:19:32;;10058:89;;10104:32;;-1:-1:-1;;;10104:32:32;;10133:1;10104:32;;;2260:74:127;2233:18;;10104:32:32;2114:226:127;10058:89:32;-1:-1:-1;;;;;10160:21:32;;10156:90;;10204:31;;-1:-1:-1;;;10204:31:32;;10232:1;10204:31;;;2260:74:127;2233:18;;10204:31:32;2114:226:127;10156:90:32;-1:-1:-1;;;;;10255:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10300:76;;;;10350:7;-1:-1:-1;;;;;10334:31:32;10343:5;-1:-1:-1;;;;;10334:31:32;;10359:5;10334:31;;;;1365:25:127;;1353:2;1338:18;;1219:177;10334:31:32;;;;;;;;9950:432;;;;:::o;294:212:122:-;381:11;395:10;404:1;395:6;:10;:::i;:::-;381:24;;416:36;430:4;444:1;448:3;416:13;:36::i;:::-;462:37;476:4;482:2;486:12;495:3;486:6;:12;:::i;:::-;-1:-1:-1;;;;;6361:18:32;;6357:540;;6513:5;6497:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6357:540:32;;-1:-1:-1;6357:540:32;;-1:-1:-1;;;;;6571:15:32;;6549:19;6571:15;;;;;;;;;;;6604:19;;;6600:115;;;6650:50;;-1:-1:-1;;;6650:50:32;;-1:-1:-1;;;;;3215:55:127;;6650:50:32;;;3197:74:127;3287:18;;;3280:34;;;3330:18;;;3323:34;;;3170:18;;6650:50:32;2995:368:127;6600:115:32;-1:-1:-1;;;;;6835:15:32;;:9;:15;;;;;;;;;;6853:19;;;;6835:37;;6357:540;-1:-1:-1;;;;;6911:16:32;;6907:425;;7074:12;:21;;;;;;;6907:425;;;-1:-1:-1;;;;;7285:13:32;;:9;:13;;;;;;;;;;:22;;;;;;6907:425;7362:2;-1:-1:-1;;;;;7347:25:32;7356:4;-1:-1:-1;;;;;7347:25:32;;7366:5;7347:25;;;;1365::127;;1353:2;1338:18;;1219:177;7347:25:32;;;;;;;;6272:1107;;;:::o;14:548:127:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:127;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:127:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1923:186::-;1982:6;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;2074:29;2093:9;2074:29;:::i;:::-;2064:39;1923:186;-1:-1:-1;;;1923:186:127:o;2345:260::-;2413:6;2421;2474:2;2462:9;2453:7;2449:23;2445:32;2442:52;;;2490:1;2487;2480:12;2442:52;2513:29;2532:9;2513:29;:::i;:::-;2503:39;;2561:38;2595:2;2584:9;2580:18;2561:38;:::i;:::-;2551:48;;2345:260;;;;;:::o;2610:380::-;2689:1;2685:12;;;;2732;;;2753:61;;2807:4;2799:6;2795:17;2785:27;;2753:61;2860:2;2852:6;2849:14;2829:18;2826:38;2823:161;;2906:10;2901:3;2897:20;2894:1;2887:31;2941:4;2938:1;2931:15;2969:4;2966:1;2959:15;2823:161;;2610:380;;;:::o;3368:127::-;3429:10;3424:3;3420:20;3417:1;3410:31;3460:4;3457:1;3450:15;3484:4;3481:1;3474:15;3500:217;3540:1;3566;3556:132;;3610:10;3605:3;3601:20;3598:1;3591:31;3645:4;3642:1;3635:15;3673:4;3670:1;3663:15;3556:132;-1:-1:-1;3702:9:127;;3500:217::o;3722:128::-;3789:9;;;3810:11;;;3807:37;;;3824:18;;:::i;3855:125::-;3920:9;;;3941:10;;;3938:36;;;3954:18;;:::i","linkReferences":{},"immutableReferences":{"114790":[{"start":337,"length":32}]}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"details\":\"ONLY FOR TESTS\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Constructor\"},\"decimals()\":{\"details\":\"Define the number of decimals\",\"returns\":{\"_0\":\"The number of decimals\"}},\"mint(address,uint256)\":{\"details\":\"Mint _amount to _to, only callable by the owner\",\"params\":{\"_amount\":\"The amount to be minted\",\"_to\":\"The address that will receive the mint\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"ERC20MockTransferTax\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/ERC20TransferTax.sol\":\"ERC20TransferTaxMock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Constructor"},"decimals()":{"details":"Define the number of decimals","returns":{"_0":"The number of decimals"}},"mint(address,uint256)":{"details":"Mint _amount to _to, only callable by the owner","params":{"_amount":"The amount to be minted","_to":"The address that will receive the mint"}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/ERC20TransferTax.sol":"ERC20TransferTaxMock"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"}},"version":1},"id":122} \ No newline at end of file diff --git a/abi/Encoded.sol/Encoded.json b/abi/Encoded.sol/Encoded.json deleted file mode 100644 index 8d86761c..00000000 --- a/abi/Encoded.sol/Encoded.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b1926ae24ddaff6be9f395596716ae3e7841f6bf83d35765c63d80404be9aff864736f6c63430008140033","sourceMap":"196:6858:76:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;196:6858:76;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b1926ae24ddaff6be9f395596716ae3e7841f6bf83d35765c63d80404be9aff864736f6c63430008140033","sourceMap":"196:6858:76:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Encoded Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for decoding bytes32 sample\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Encoded.sol\":\"Encoded\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/Encoded.sol":"Encoded"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file diff --git a/abi/Encoded.t.sol/EncodedTest.json b/abi/Encoded.t.sol/EncodedTest.json deleted file mode 100644 index 9685584c..00000000 --- a/abi/Encoded.t.sol/EncodedTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_Decode","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"mask","type":"uint256","internalType":"uint256"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_Set","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"v","type":"uint256","internalType":"uint256"},{"name":"mask","type":"uint256","internalType":"uint256"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_SetAndDecode","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"v","type":"uint256","internalType":"uint256"},{"name":"mask","type":"uint256","internalType":"uint256"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeBool","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint12","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint128","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint14","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint16","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint20","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint24","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint40","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint64","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeUint8","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"offset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506112a28061002d6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80634044fa29116100e3578063b5508aa91161008c578063d7fc0f9311610066578063d7fc0f93146102fa578063e20c9f711461030d578063fb68fc0e1461031557600080fd5b8063b5508aa9146102c7578063ba414fa6146102cf578063cdb2581a146102e757600080fd5b806366d9a9a0116100bd57806366d9a9a01461029557806385226c81146102aa578063916a17c6146102bf57600080fd5b80634044fa291461025c57806343e9515f1461026f5780634fc9ecce1461028257600080fd5b806323f0ea68116101455780632b22199a1161011f5780632b22199a146102395780633e5e3c231461024c5780633f7286f41461025457600080fd5b806323f0ea68146101fe57806324708dee146102115780632ade38801461022457600080fd5b8063190a796511610176578063190a7965146101ba5780631ed7831c146101cd5780631faeb000146101eb57600080fd5b80630ec4f74b1461019257806317e0bcf1146101a7575b600080fd5b6101a56101a0366004610ef1565b610328565b005b6101a56101b5366004610ef1565b610376565b6101a56101c8366004610f13565b6103c0565b6101d5610418565b6040516101e29190610f45565b60405180910390f35b6101a56101f9366004610ef1565b61047a565b6101a561020c366004610ef1565b6104c2565b6101a561021f366004610ef1565b61050b565b61022c610557565b6040516101e29190610fd8565b6101a5610247366004610ef1565b610699565b6101d56106e2565b6101d5610742565b6101a561026a366004611098565b6107a2565b6101a561027d366004610ef1565b6107ef565b6101a5610290366004610ef1565b61083e565b61029d610888565b6040516101e291906110c4565b6102b2610983565b6040516101e2919061118f565b61029d610a53565b6102b2610b4e565b6102d7610c1e565b60405190151581526020016101e2565b6101a56102f5366004610f13565b610cd9565b6101a5610308366004610ef1565b610d33565b6101d5610d8a565b6101a5610323366004610ef1565b610dea565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7431363a3a310000000000000000602082015282821c61ffff16906103719082908190610e46565b505050565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7432343a3a310000000000000000602082015282821c62ffffff16906103719082908190610e46565b60408051808201909152600f81527f7465737446757a7a5f5365743a3a3100000000000000000000000000000000006020820152838316821b83831b198616179081906104109082908190610eb6565b505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561047057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610452575b5050505050905090565b60408051808201909152601781527f7465737446757a7a5f6465636f646555696e74383a3a31000000000000000000602082015282821c60ff16906103719082908190610e46565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7431323a3a310000000000000000602082015282821c610fff16906103719082908190610e46565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7434303a3a310000000000000000602082015282821c64ffffffffff16906103719082908190610e46565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561069057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106795783829060005260206000200180546105ec906111f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610618906111f1565b80156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b5050505050815260200190600101906105cd565b50505050815250508152602001906001019061057b565b50505050905090565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7431343a3a310000000000000000602082015282821c613fff16906103719082908190610e46565b60606016805480602002602001604051908101604052809291908181526020018280548015610470576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610452575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610470576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610452575050505050905090565b60408051808201909152601281527f7465737446757a7a5f4465636f64653a3a310000000000000000000000000000602082015283821c8316906107e99082908190610e46565b50505050565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7436343a3a310000000000000000602082015282821c67ffffffffffffffff16906103719082908190610e46565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7432303a3a310000000000000000602082015282821c620fffff16906103719082908190610e46565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106905760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561096b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116109185790505b505050505081525050815260200190600101906108ac565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106905783829060005260206000200180546109c6906111f1565b80601f01602080910402602001604051908101604052809291908181526020018280546109f2906111f1565b8015610a3f5780601f10610a1457610100808354040283529160200191610a3f565b820191906000526020600020905b815481529060010190602001808311610a2257829003601f168201915b5050505050815260200190600101906109a7565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106905760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610b3657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610ae35790505b50505050508152505081526020019060010190610a77565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610690578382906000526020600020018054610b91906111f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd906111f1565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081526020019060010190610b72565b60075460009060ff1615610c36575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd2919061122b565b1415905090565b60408051808201909152601881527f7465737446757a7a5f536574416e644465636f64653a3a3100000000000000006020820152838316821b83831b198616179081831c84169061041090829087861b861c871690610e46565b60408051808201909152601981527f7465737446757a7a5f6465636f646555696e743132383a3a3100000000000000602082015282821c6fffffffffffffffffffffffffffffffff16906103719082908190610e46565b60606013805480602002602001604051908101604052809291908181526020018280548015610470576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610452575050505050905090565b81811c60011661037181610dff576000610e02565b60015b60ff16838560001c901c6001166040518060400160405280601681526020017f7465737446757a7a5f6465636f6465426f6f6c3a3a31000000000000000000008152505b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610e8190869086908690600401611244565b60006040518083038186803b158015610e9957600080fd5b505afa158015610ead573d6000803e3d6000fd5b50505050505050565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed090610e8190869086908690600401611244565b60008060408385031215610f0457600080fd5b50508035926020909101359150565b60008060008060808587031215610f2957600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252825182820181905260009190848201906040850190845b81811015610f865783516001600160a01b031683529284019291840191600101610f61565b50909695505050505050565b6000815180845260005b81811015610fb857602081850181015186830182015201610f9c565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561108857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561107257605f19898503018352611060848651610f92565b948e01949350918d0191600101611044565b505050978a019794505091880191600101610fff565b50919a9950505050505050505050565b6000806000606084860312156110ad57600080fd5b505081359360208301359350604090920135919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561118057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561116b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611129565b50978a019795505050918701916001016110ec565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111e457603f198886030184526111d2858351610f92565b945092850192908501906001016111b6565b5092979650505050505050565b600181811c9082168061120557607f821691505b60208210810361122557634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561123d57600080fd5b5051919050565b8381528260208201526060604082015260006112636060830184610f92565b9594505050505056fea264697066735822122082d046fd96c694293e40782ea0283a3ceb783bfc1b4c1f51808ba4bd343f633b64736f6c63430008140033","sourceMap":"147:3034:113:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;147:3034:113;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061018d5760003560e01c80634044fa29116100e3578063b5508aa91161008c578063d7fc0f9311610066578063d7fc0f93146102fa578063e20c9f711461030d578063fb68fc0e1461031557600080fd5b8063b5508aa9146102c7578063ba414fa6146102cf578063cdb2581a146102e757600080fd5b806366d9a9a0116100bd57806366d9a9a01461029557806385226c81146102aa578063916a17c6146102bf57600080fd5b80634044fa291461025c57806343e9515f1461026f5780634fc9ecce1461028257600080fd5b806323f0ea68116101455780632b22199a1161011f5780632b22199a146102395780633e5e3c231461024c5780633f7286f41461025457600080fd5b806323f0ea68146101fe57806324708dee146102115780632ade38801461022457600080fd5b8063190a796511610176578063190a7965146101ba5780631ed7831c146101cd5780631faeb000146101eb57600080fd5b80630ec4f74b1461019257806317e0bcf1146101a7575b600080fd5b6101a56101a0366004610ef1565b610328565b005b6101a56101b5366004610ef1565b610376565b6101a56101c8366004610f13565b6103c0565b6101d5610418565b6040516101e29190610f45565b60405180910390f35b6101a56101f9366004610ef1565b61047a565b6101a561020c366004610ef1565b6104c2565b6101a561021f366004610ef1565b61050b565b61022c610557565b6040516101e29190610fd8565b6101a5610247366004610ef1565b610699565b6101d56106e2565b6101d5610742565b6101a561026a366004611098565b6107a2565b6101a561027d366004610ef1565b6107ef565b6101a5610290366004610ef1565b61083e565b61029d610888565b6040516101e291906110c4565b6102b2610983565b6040516101e2919061118f565b61029d610a53565b6102b2610b4e565b6102d7610c1e565b60405190151581526020016101e2565b6101a56102f5366004610f13565b610cd9565b6101a5610308366004610ef1565b610d33565b6101d5610d8a565b6101a5610323366004610ef1565b610dea565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7431363a3a310000000000000000602082015282821c61ffff16906103719082908190610e46565b505050565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7432343a3a310000000000000000602082015282821c62ffffff16906103719082908190610e46565b60408051808201909152600f81527f7465737446757a7a5f5365743a3a3100000000000000000000000000000000006020820152838316821b83831b198616179081906104109082908190610eb6565b505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561047057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610452575b5050505050905090565b60408051808201909152601781527f7465737446757a7a5f6465636f646555696e74383a3a31000000000000000000602082015282821c60ff16906103719082908190610e46565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7431323a3a310000000000000000602082015282821c610fff16906103719082908190610e46565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7434303a3a310000000000000000602082015282821c64ffffffffff16906103719082908190610e46565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561069057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106795783829060005260206000200180546105ec906111f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610618906111f1565b80156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b5050505050815260200190600101906105cd565b50505050815250508152602001906001019061057b565b50505050905090565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7431343a3a310000000000000000602082015282821c613fff16906103719082908190610e46565b60606016805480602002602001604051908101604052809291908181526020018280548015610470576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610452575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610470576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610452575050505050905090565b60408051808201909152601281527f7465737446757a7a5f4465636f64653a3a310000000000000000000000000000602082015283821c8316906107e99082908190610e46565b50505050565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7436343a3a310000000000000000602082015282821c67ffffffffffffffff16906103719082908190610e46565b60408051808201909152601881527f7465737446757a7a5f6465636f646555696e7432303a3a310000000000000000602082015282821c620fffff16906103719082908190610e46565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106905760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561096b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116109185790505b505050505081525050815260200190600101906108ac565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106905783829060005260206000200180546109c6906111f1565b80601f01602080910402602001604051908101604052809291908181526020018280546109f2906111f1565b8015610a3f5780601f10610a1457610100808354040283529160200191610a3f565b820191906000526020600020905b815481529060010190602001808311610a2257829003601f168201915b5050505050815260200190600101906109a7565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106905760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610b3657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610ae35790505b50505050508152505081526020019060010190610a77565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610690578382906000526020600020018054610b91906111f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd906111f1565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081526020019060010190610b72565b60075460009060ff1615610c36575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd2919061122b565b1415905090565b60408051808201909152601881527f7465737446757a7a5f536574416e644465636f64653a3a3100000000000000006020820152838316821b83831b198616179081831c84169061041090829087861b861c871690610e46565b60408051808201909152601981527f7465737446757a7a5f6465636f646555696e743132383a3a3100000000000000602082015282821c6fffffffffffffffffffffffffffffffff16906103719082908190610e46565b60606013805480602002602001604051908101604052809291908181526020018280548015610470576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610452575050505050905090565b81811c60011661037181610dff576000610e02565b60015b60ff16838560001c901c6001166040518060400160405280601681526020017f7465737446757a7a5f6465636f6465426f6f6c3a3a31000000000000000000008152505b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610e8190869086908690600401611244565b60006040518083038186803b158015610e9957600080fd5b505afa158015610ead573d6000803e3d6000fd5b50505050505050565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed090610e8190869086908690600401611244565b60008060408385031215610f0457600080fd5b50508035926020909101359150565b60008060008060808587031215610f2957600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252825182820181905260009190848201906040850190845b81811015610f865783516001600160a01b031683529284019291840191600101610f61565b50909695505050505050565b6000815180845260005b81811015610fb857602081850181015186830182015201610f9c565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561108857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561107257605f19898503018352611060848651610f92565b948e01949350918d0191600101611044565b505050978a019794505091880191600101610fff565b50919a9950505050505050505050565b6000806000606084860312156110ad57600080fd5b505081359360208301359350604090920135919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561118057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561116b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611129565b50978a019795505050918701916001016110ec565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111e457603f198886030184526111d2858351610f92565b945092850192908501906001016111b6565b5092979650505050505050565b600181811c9082168061120557607f821691505b60208210810361122557634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561123d57600080fd5b5051919050565b8381528260208201526060604082015260006112636060830184610f92565b9594505050505056fea264697066735822122082d046fd96c694293e40782ea0283a3ceb783bfc1b4c1f51808ba4bd343f633b64736f6c63430008140033","sourceMap":"147:3034:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1867:205;;;;;;:::i;:::-;;:::i;:::-;;2290:207;;;;;;:::i;:::-;;:::i;214:320::-;;;;;;:::i;:::-;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1240:200:113;;;;;;:::i;:::-;;:::i;1446:204::-;;;;;;:::i;:::-;;:::i;2503:211::-;;;;;;:::i;:::-;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;1656:205:113:-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;540:205:113:-;;;;;;:::i;:::-;;:::i;2720:217::-;;;;;;:::i;:::-;;:::i;2078:206::-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;6430:14:127;;6423:22;6405:41;;6393:2;6378:18;1243:204:1;6265:187:127;751:278:113;;;;;;:::i;:::-;;:::i;2943:236::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;1035:199:113:-;;;;;;:::i;:::-;;:::i;1867:205::-;1993:72;;;;;;;;;;;;;;;;;4705:20:76;;;4727:11;4701:38;;1993:72:113;;4701:38:76;;;;1993:8:113;:72::i;:::-;1939:133;1867:205;;:::o;2290:207::-;2416:74;;;;;;;;;;;;;;;;;5648:20:76;;;5670:11;5644:38;;2416:74:113;;5644:38:76;;;;2416:8:113;:74::i;214:320::-;487:40;;;;;;;;;;;;;;;;;1410:16:76;;;1398:29;;1337:17;;;1333:22;1320:36;;1383:45;;;;487:40:113;;1383:45:76;;;;487:8:113;:40::i;:::-;302:232;;214:320;;;;:::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;1240:200:113:-;1364:69;;;;;;;;;;;;;;;;;3270:20:76;;;3292:10;3266:37;;1364:69:113;;3266:37:76;;;;1364:8:113;:69::i;1446:204::-;1572:71;;;;;;;;;;;;;;;;;3762:20:76;;;3784:11;3758:38;;1572:71:113;;3758:38:76;;;;1572:8:113;:71::i;2503:211::-;2629:78;;;;;;;;;;;;;;;;;6098:20:76;;;6120:11;6094:38;;2629:78:113;;6094:38:76;;;;2629:8:113;:78::i;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;1656:205:113:-;1782:72;;;;;;;;;;;;;;;;;4255:20:76;;;4277:11;4251:38;;1782:72:113;;4251:38:76;;;;1782:8:113;:72::i;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;540:205:113:-;674:64;;;;;;;;;;;;;;;;;2371:20:76;;;2367:31;;;674:64:113;;2367:31:76;;;;674:8:113;:64::i;:::-;620:125;540:205;;;:::o;2720:217::-;2846:84;;;;;;;;;;;;;;;;;6548:20:76;;;6570:11;6544:38;;2846:84:113;;6544:38:76;;;;2846:8:113;:84::i;2078:206::-;2204:73;;;;;;;;;;;;;;;;;5198:20:76;;;5220:11;5194:38;;2204:73:113;;5194:38:76;;;;2204:8:113;:73::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;7016:74:127;;;1398:17:1;7106:18:127;;;7099:34;1428:1:1;;1377:7;;6989:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;751:278:113:-;948:74;;;;;;;;;;;;;;;;;1410:16:76;;;1398:29;;1337:17;;;1333:22;1320:36;;1383:45;;2371:20;;;2367:31;;;948:74:113;;2367:31:76;;963:11:113;;;962:23;;961:32;;;948:8;:74::i;2943:236::-;3071:101;;;;;;;;;;;;;;;;;7001:20:76;;;7023:12;6997:39;;3071:101:113;;6997:39:76;;;;3071:8:113;:101::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1035:199:113:-;2824:20:76;;;2846:10;2820:37;1154:73:113;2820:37:76;1163:9:113;;1171:1;1163:9;;;1167:1;1163:9;1154:73;;1189:6;1183:1;1175:10;;:20;;1199:1;1174:26;1154:73;;;;;;;;;;;;;;;;;2386:134:1;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;3826:::-;3924:29;;-1:-1:-1;;;3924:29:1;;:11;;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;14:248:127:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:127;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:127:o;267:385::-;353:6;361;369;377;430:3;418:9;409:7;405:23;401:33;398:53;;;447:1;444;437:12;398:53;-1:-1:-1;;470:23:127;;;540:2;525:18;;512:32;;-1:-1:-1;591:2:127;576:18;;563:32;;642:2;627:18;614:32;;-1:-1:-1;267:385:127;-1:-1:-1;267:385:127:o;657:681::-;828:2;880:21;;;950:13;;853:18;;;972:22;;;799:4;;828:2;1051:15;;;;1025:2;1010:18;;;799:4;1094:218;1108:6;1105:1;1102:13;1094:218;;;1173:13;;-1:-1:-1;;;;;1169:62:127;1157:75;;1287:15;;;;1252:12;;;;1130:1;1123:9;1094:218;;;-1:-1:-1;1329:3:127;;657:681;-1:-1:-1;;;;;;657:681:127:o;1343:423::-;1385:3;1423:5;1417:12;1450:6;1445:3;1438:19;1475:1;1485:162;1499:6;1496:1;1493:13;1485:162;;;1561:4;1617:13;;;1613:22;;1607:29;1589:11;;;1585:20;;1578:59;1514:12;1485:162;;;1489:3;1692:1;1685:4;1676:6;1671:3;1667:16;1663:27;1656:38;1755:4;1748:2;1744:7;1739:2;1731:6;1727:15;1723:29;1718:3;1714:39;1710:50;1703:57;;;1343:423;;;;:::o;1771:1765::-;2004:2;2056:21;;;2126:13;;2029:18;;;2148:22;;;1975:4;;2004:2;2189;;2207:18;;;;2244:1;2287:15;;;2272:31;;2268:40;;2331:15;;;1975:4;;2395:1112;2411:6;2406:3;2403:15;2395:1112;;;-1:-1:-1;;2480:22:127;;;2476:36;2464:49;;2536:13;;2623:9;;-1:-1:-1;;;;;2619:58:127;2604:74;;2717:11;;2711:18;2749:15;;;2742:27;;;2830:19;;2576:15;;;2862:24;;;3043:21;;;;2909:2;2991:17;;;2979:30;;2975:39;;;2933:15;;;;3088:1;3102:296;3118:8;3113:3;3110:17;3102:296;;;3224:2;3220:7;3211:6;3203;3199:19;3195:33;3188:5;3181:48;3256:42;3291:6;3280:8;3274:15;3256:42;:::i;:::-;3327:17;;;;3246:52;-1:-1:-1;3370:14:127;;;;3146:1;3137:11;3102:296;;;-1:-1:-1;;;3485:12:127;;;;3421:6;-1:-1:-1;;3450:15:127;;;;2437:1;2428:11;2395:1112;;;-1:-1:-1;3524:6:127;;1771:1765;-1:-1:-1;;;;;;;;;;1771:1765:127:o;3541:316::-;3618:6;3626;3634;3687:2;3675:9;3666:7;3662:23;3658:32;3655:52;;;3703:1;3700;3693:12;3655:52;-1:-1:-1;;3726:23:127;;;3796:2;3781:18;;3768:32;;-1:-1:-1;3847:2:127;3832:18;;;3819:32;;3541:316;-1:-1:-1;3541:316:127:o;3862:1590::-;4064:4;4093:2;4133;4122:9;4118:18;4163:2;4152:9;4145:21;4186:6;4221;4215:13;4252:6;4244;4237:22;4278:2;4268:12;;4311:2;4300:9;4296:18;4289:25;;4373:2;4363:6;4360:1;4356:14;4345:9;4341:30;4337:39;4411:2;4403:6;4399:15;4432:1;4453;4463:960;4479:6;4474:3;4471:15;4463:960;;;4548:22;;;-1:-1:-1;;4544:36:127;4532:49;;4604:13;;4691:9;;-1:-1:-1;;;;;4687:58:127;4672:74;;4785:11;;4779:18;4817:15;;;4810:27;;;4898:19;;4644:15;;;4930:24;;;5020:21;;;;5065:1;;4988:2;4976:15;;;5079:236;5095:8;5090:3;5087:17;5079:236;;;5176:15;;5193:20;5172:42;5158:57;;5284:17;;;;5123:1;5114:11;;;;;5241:14;;;;5079:236;;;-1:-1:-1;5401:12:127;;;;5338:5;-1:-1:-1;;;5366:15:127;;;;4505:1;4496:11;4463:960;;;-1:-1:-1;5440:6:127;;3862:1590;-1:-1:-1;;;;;;;;;3862:1590:127:o;5457:803::-;5619:4;5648:2;5688;5677:9;5673:18;5718:2;5707:9;5700:21;5741:6;5776;5770:13;5807:6;5799;5792:22;5845:2;5834:9;5830:18;5823:25;;5907:2;5897:6;5894:1;5890:14;5879:9;5875:30;5871:39;5857:53;;5945:2;5937:6;5933:15;5966:1;5976:255;5990:6;5987:1;5984:13;5976:255;;;6083:2;6079:7;6067:9;6059:6;6055:22;6051:36;6046:3;6039:49;6111:40;6144:6;6135;6129:13;6111:40;:::i;:::-;6101:50;-1:-1:-1;6209:12:127;;;;6174:15;;;;6012:1;6005:9;5976:255;;;-1:-1:-1;6248:6:127;;5457:803;-1:-1:-1;;;;;;;5457:803:127:o;6457:380::-;6536:1;6532:12;;;;6579;;;6600:61;;6654:4;6646:6;6642:17;6632:27;;6600:61;6707:2;6699:6;6696:14;6676:18;6673:38;6670:161;;6753:10;6748:3;6744:20;6741:1;6734:31;6788:4;6785:1;6778:15;6816:4;6813:1;6806:15;6670:161;;6457:380;;;:::o;7144:184::-;7214:6;7267:2;7255:9;7246:7;7242:23;7238:32;7235:52;;;7283:1;7280;7273:12;7235:52;-1:-1:-1;7306:16:127;;7144:184;-1:-1:-1;7144:184:127:o;7333:362::-;7538:6;7527:9;7520:25;7581:6;7576:2;7565:9;7561:18;7554:34;7624:2;7619;7608:9;7604:18;7597:30;7501:4;7644:45;7685:2;7674:9;7670:18;7662:6;7644:45;:::i;:::-;7636:53;7333:362;-1:-1:-1;;;;;7333:362:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_Decode(bytes32,uint256,uint256)":"4044fa29","testFuzz_Set(bytes32,uint256,uint256,uint256)":"190a7965","testFuzz_SetAndDecode(bytes32,uint256,uint256,uint256)":"cdb2581a","testFuzz_decodeBool(bytes32,uint256)":"fb68fc0e","testFuzz_decodeUint12(bytes32,uint256)":"23f0ea68","testFuzz_decodeUint128(bytes32,uint256)":"d7fc0f93","testFuzz_decodeUint14(bytes32,uint256)":"2b22199a","testFuzz_decodeUint16(bytes32,uint256)":"0ec4f74b","testFuzz_decodeUint20(bytes32,uint256)":"4fc9ecce","testFuzz_decodeUint24(bytes32,uint256)":"17e0bcf1","testFuzz_decodeUint40(bytes32,uint256)":"24708dee","testFuzz_decodeUint64(bytes32,uint256)":"43e9515f","testFuzz_decodeUint8(bytes32,uint256)":"1faeb000"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_Decode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_Set\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"v\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SetAndDecode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeBool\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint12\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint128\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint14\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint16\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint20\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint24\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint40\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint64\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"}],\"name\":\"testFuzz_decodeUint8\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/Encoded.t.sol\":\"EncodedTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"test/libraries/math/Encoded.t.sol\":{\"keccak256\":\"0xefa16d96490fc177b1f9a67db88923e3fec3414c13747e260a6d4d0e55b57e46\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5ac5e43437f49e184f21c75a4660608070ef7a6f45e1c0a3f7487008e3da72b6\",\"dweb:/ipfs/QmbrNU6Ff7CC5BLVvrQtk14stjNppRWzh26j1gB82N1mBs\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"mask","type":"uint256"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_Decode"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"v","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_Set"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"v","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_SetAndDecode"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeBool"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint12"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint128"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint14"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint16"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint20"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint24"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint40"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint64"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint256","name":"offset","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeUint8"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/Encoded.t.sol":"EncodedTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"test/libraries/math/Encoded.t.sol":{"keccak256":"0xefa16d96490fc177b1f9a67db88923e3fec3414c13747e260a6d4d0e55b57e46","urls":["bzz-raw://5ac5e43437f49e184f21c75a4660608070ef7a6f45e1c0a3f7487008e3da72b6","dweb:/ipfs/QmbrNU6Ff7CC5BLVvrQtk14stjNppRWzh26j1gB82N1mBs"],"license":"UNLICENSED"}},"version":1},"id":113} \ No newline at end of file diff --git a/abi/EnumerableMap.sol/EnumerableMap.json b/abi/EnumerableMap.sol/EnumerableMap.json deleted file mode 100644 index 41cf2a53..00000000 --- a/abi/EnumerableMap.sol/EnumerableMap.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"EnumerableMapNonexistentKey","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205fefecd7497daaf5603af230eb12e04a3a0a81fc69895dc6cc06f176bc06f83e64736f6c63430008140033","sourceMap":"1900:30697:40:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1900:30697:40;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205fefecd7497daaf5603af230eb12e04a3a0a81fc69895dc6cc06f176bc06f83e64736f6c63430008140033","sourceMap":"1900:30697:40:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"EnumerableMapNonexistentKey\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Library for managing an enumerable variant of Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type. Maps have the following properties: - Entries are added, removed, and checked for existence in constant time (O(1)). - Entries are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableMap for EnumerableMap.UintToAddressMap; // Declare a set state variable EnumerableMap.UintToAddressMap private myMap; } ``` The following map types are supported: - `uint256 -> address` (`UintToAddressMap`) since v3.0.0 - `address -> uint256` (`AddressToUintMap`) since v4.6.0 - `bytes32 -> bytes32` (`Bytes32ToBytes32Map`) since v4.6.0 - `uint256 -> uint256` (`UintToUintMap`) since v4.7.0 - `bytes32 -> uint256` (`Bytes32ToUintMap`) since v4.7.0 - `uint256 -> bytes32` (`UintToBytes32Map`) since v5.1.0 - `address -> address` (`AddressToAddressMap`) since v5.1.0 - `address -> bytes32` (`AddressToBytes32Map`) since v5.1.0 - `bytes32 -> address` (`Bytes32ToAddressMap`) since v5.1.0 [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableMap, you can either remove all elements one by one or create a fresh instance using an array of EnumerableMap. ====\",\"errors\":{\"EnumerableMapNonexistentKey(bytes32)\":[{\"details\":\"Query for a nonexistent map key.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"type":"error","name":"EnumerableMapNonexistentKey"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":"EnumerableMap"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"}},"version":1},"id":40} \ No newline at end of file diff --git a/abi/EnumerableSet.sol/EnumerableSet.json b/abi/EnumerableSet.sol/EnumerableSet.json deleted file mode 100644 index 1997fe81..00000000 --- a/abi/EnumerableSet.sol/EnumerableSet.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae02491981be5f42187659b167378752463a0a72dd1a7daff8bc7219db4d46bc64736f6c63430008140033","sourceMap":"1330:11640:41:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1330:11640:41;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae02491981be5f42187659b167378752463a0a72dd1a7daff8bc7219db4d46bc64736f6c63430008140033","sourceMap":"1330:11640:41:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":"EnumerableSet"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"}},"version":1},"id":41} \ No newline at end of file diff --git a/abi/Faucet.sol/Faucet.json b/abi/Faucet.sol/Faucet.json deleted file mode 100644 index 23843dd4..00000000 --- a/abi/Faucet.sol/Faucet.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_nativePerRequest","type":"uint96","internalType":"uint96"},{"name":"_requestCooldown","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addFaucetToken","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"},{"name":"_amountPerRequest","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"faucetTokens","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ERC20","type":"address","internalType":"contract IERC20"},{"name":"amountPerRequest","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"lastRequest","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"numberOfFaucetTokens","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeFaucetToken","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"request","inputs":[{"name":"_to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"request","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCooldown","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setAmountPerRequest","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"},{"name":"_amountPerRequest","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_newOperator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequestCooldown","inputs":[{"name":"_requestCooldown","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUnlockedRequest","inputs":[{"name":"_unlockedRequest","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockedRequest","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"withdrawToken","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60806040526040516200154d3803806200154d83398101604081905262000026916200023c565b826001600160a01b0381166200005757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000062816200009f565b506200006e81620000bd565b60408051808201909152600081526001600160601b0383166020820152620000969062000116565b5050506200029a565b600180546001600160a01b0319169055620000ba81620001ec565b50565b610e10811015620001115760405162461bcd60e51b815260206004820152601760248201527f556e73616665207265717565737420636f6f6c646f776e00000000000000000060448201526064016200004e565b600355565b80516001600160a01b0316600090815260076020526040902054156200017f5760405162461bcd60e51b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e0000000000000000000060448201526064016200004e565b60068054600181018255600082815283516020948501516001600160601b0316600160a01b026001600160a01b039091169081177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90930192909255915490825260079092526040902055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156200025257600080fd5b83516001600160a01b03811681146200026a57600080fd5b60208501519093506001600160601b03811681146200028857600080fd5b80925050604084015190509250925092565b6112a380620002aa6000396000f3fe6080604052600436106101635760003560e01c80637380f6bd116100c0578063bc3bc40411610074578063f2fde38b11610059578063f2fde38b14610395578063faf034e3146103b5578063fbedbe62146103d557600080fd5b8063bc3bc40414610357578063e30c39781461037757600080fd5b80638da5cb5b116100a55780638da5cb5b14610303578063a9860c8114610321578063b3ab15fb1461033757600080fd5b80637380f6bd146102ce57806379ba5097146102ee57600080fd5b806329954f4311610117578063570ca735116100fc578063570ca735146102545780636fb9584f1461028c578063715018a6146102b957600080fd5b806329954f4314610215578063338cdca11461023f57600080fd5b80630f737c82116101485780630f737c82146101b557806320cca627146101d557806327c78c42146101f557600080fd5b806301e336671461016f5780630d639e031461019157600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061018f61018a36600461109f565b61041c565b005b34801561019d57600080fd5b506006545b6040519081526020015b60405180910390f35b3480156101c157600080fd5b5061018f6101d03660046110e0565b610455565b3480156101e157600080fd5b5061018f6101f0366004611133565b61046b565b34801561020157600080fd5b5061018f610210366004611150565b610486565b34801561022157600080fd5b5060045461022f9060ff1681565b60405190151581526020016101ac565b34801561024b57600080fd5b5061018f61057f565b34801561026057600080fd5b50600254610274906001600160a01b031681565b6040516001600160a01b0390911681526020016101ac565b34801561029857600080fd5b506101a26102a7366004611150565b60056020526000908152604090205481565b3480156102c557600080fd5b5061018f6106ab565b3480156102da57600080fd5b5061018f6102e93660046110e0565b6106bf565b3480156102fa57600080fd5b5061018f6106f6565b34801561030f57600080fd5b506000546001600160a01b0316610274565b34801561032d57600080fd5b506101a260035481565b34801561034357600080fd5b5061018f610352366004611150565b610737565b34801561036357600080fd5b5061018f61037236600461116d565b610761565b34801561038357600080fd5b506001546001600160a01b0316610274565b3480156103a157600080fd5b5061018f6103b0366004611150565b610772565b3480156103c157600080fd5b5061018f6103d0366004611150565b6107e3565b3480156103e157600080fd5b506103f56103f036600461116d565b61097c565b604080516001600160a01b0390931683526001600160601b039091166020830152016101ac565b6104246109b7565b6001600160a01b0383166104415761043c82826109e4565b505050565b61043c6001600160a01b0384168383610a87565b61045d6109b7565b6104678282610aee565b5050565b6104736109b7565b6004805460ff1916911515919091179055565b6002546001600160a01b031633146104e55760405162461bcd60e51b815260206004820152600d60248201527f4f6e6c79206f70657261746f720000000000000000000000000000000000000060448201526064015b60405180910390fd5b6003546001600160a01b038216600090815260056020526040902054829161050c9161119c565b42101561055b5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b6001600160a01b038216600090815260056020526040902042905561046782610bab565b3233146105ce5760405162461bcd60e51b815260206004820152600860248201527f4f6e6c7920454f4100000000000000000000000000000000000000000000000060448201526064016104dc565b60045460ff166106205760405162461bcd60e51b815260206004820152601860248201527f4469726563742072657175657374206973206c6f636b6564000000000000000060448201526064016104dc565b60035433600081815260056020526040902054909161063e9161119c565b42101561068d5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b3360008181526005602052604090204290556106a890610bab565b50565b6106b36109b7565b6106bd6000610d58565b565b6106c76109b7565b6104676040518060400160405280846001600160a01b03168152602001836001600160601b0316815250610d71565b60015433906001600160a01b0316811461072e5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104dc565b6106a881610d58565b61073f6109b7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6107696109b7565b6106a881610e45565b61077a6109b7565b600180546001600160a01b0383166001600160a01b031990911681179091556107ab6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6107eb6109b7565b6001600160a01b03811660009081526007602052604090205460028110156108555760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b600654600090610867906001906111af565b905080610873836111c2565b9250821461093d57600060068281548110610890576108906111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b031691810191909152600680549192508291859081106108e4576108e46111d9565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b039093169290921791015561092283600161119c565b90516001600160a01b03166000908152600760205260409020555b60068181548110610950576109506111d9565b600091825260208083209091018290556001600160a01b03949094168152600790935250506040812055565b6006818154811061098c57600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b6000546001600160a01b031633146106bd5760405163118cdaa760e01b81523360048201526024016104dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a31576040519150601f19603f3d011682016040523d82523d6000602084013e610a36565b606091505b505090508061043c5760405162461bcd60e51b815260206004820152601660248201527f4e4154495645207472616e73666572206661696c65640000000000000000000060448201526064016104dc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261043c908490610e9c565b6001600160a01b03821660009081526007602052604081205490819003610b575760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b816006610b656001846111af565b81548110610b7557610b756111d9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b03160217905550505050565b60068054906000908183610bc157610bc16111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052915015801590610c18575080602001516001600160601b03164710155b15610c3457610c348382602001516001600160601b03166109e4565b60015b82811015610d525760068181548110610c5257610c526111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052925015801590610d165750602082015182516040516370a0823160e01b81523060048201526001600160601b03909216916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1391906111ef565b10155b15610d425760208201518251610d42916001600160a01b039091169086906001600160601b0316610a87565b610d4b81611208565b9050610c37565b50505050565b600180546001600160a01b03191690556106a881610eff565b80516001600160a01b031660009081526007602052604090205415610dd85760405162461bcd60e51b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e0000000000000000000060448201526064016104dc565b60068054600181018255600082815283516020948501516001600160601b0316600160a01b026001600160a01b039091169081177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90930192909255915490825260079092526040902055565b610e10811015610e975760405162461bcd60e51b815260206004820152601760248201527f556e73616665207265717565737420636f6f6c646f776e00000000000000000060448201526064016104dc565b600355565b6000610eb16001600160a01b03841683610f4f565b90508051600014158015610ed6575080806020019051810190610ed49190611221565b155b1561043c57604051635274afe760e01b81526001600160a01b03841660048201526024016104dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060610f5d83836000610f66565b90505b92915050565b606081471015610f8b5760405163cd78605960e01b81523060048201526024016104dc565b600080856001600160a01b03168486604051610fa7919061123e565b60006040518083038185875af1925050503d8060008114610fe4576040519150601f19603f3d011682016040523d82523d6000602084013e610fe9565b606091505b5091509150610ff9868383611005565b925050505b9392505050565b60608261101a5761101582611061565b610ffe565b815115801561103157506001600160a01b0384163b155b1561105a57604051639996b31560e01b81526001600160a01b03851660048201526024016104dc565b5080610ffe565b8051156110715780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146106a857600080fd5b6000806000606084860312156110b457600080fd5b83356110bf8161108a565b925060208401356110cf8161108a565b929592945050506040919091013590565b600080604083850312156110f357600080fd5b82356110fe8161108a565b915060208301356001600160601b038116811461111a57600080fd5b809150509250929050565b80151581146106a857600080fd5b60006020828403121561114557600080fd5b8135610ffe81611125565b60006020828403121561116257600080fd5b8135610ffe8161108a565b60006020828403121561117f57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f6057610f60611186565b81810381811115610f6057610f60611186565b6000816111d1576111d1611186565b506000190190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561120157600080fd5b5051919050565b60006001820161121a5761121a611186565b5060010190565b60006020828403121561123357600080fd5b8151610ffe81611125565b6000825160005b8181101561125f5760208186018101518583015201611245565b50600092019182525091905056fea2646970667358221220a2ed0a50dc84943f510092e0176197f6463e4f64edf17285e23c42d1f122a6af64736f6c63430008140033","sourceMap":"704:7958:123:-:0;;;2124:294;;;;;;;;;;;;;;;;;;:::i;:::-;2242:12;-1:-1:-1;;;;;1273:26:25;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:25;;1350:1;1322:31;;;689:51:127;662:18;;1322:31:25;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;2270:37:123::1;2290:16:::0;2270:19:::1;:37::i;:::-;2333:77;::::0;;;;::::1;::::0;;;-1:-1:-1;2333:77:123;;-1:-1:-1;;;;;2333:77:123;::::1;;::::0;::::1;::::0;2317:94:::1;::::0;:15:::1;:94::i;:::-;2124:294:::0;;;704:7958;;1886:153:26;1975:13;1968:20;;-1:-1:-1;;;;;;1968:20:26;;;1998:34;2023:8;1998:24;:34::i;:::-;1886:153;:::o;7658:188:123:-;7759:7;7739:16;:27;;7731:63;;;;-1:-1:-1;;;7731:63:123;;953:2:127;7731:63:123;;;935:21:127;992:2;972:18;;;965:30;1031:25;1011:18;;;1004:53;1074:18;;7731:63:123;751:347:127;7731:63:123;7805:15;:34;7658:188::o;7223:241::-;7316:12;;-1:-1:-1;;;;;7301:28:123;;;;;:14;:28;;;;;;:33;7293:68;;;;-1:-1:-1;;;7293:68:123;;1305:2:127;7293:68:123;;;1287:21:127;1344:2;1324:18;;;1317:30;1383:24;1363:18;;;1356:52;1425:18;;7293:68:123;1103:346:127;7293:68:123;7372:12;:25;;;;;;;-1:-1:-1;7372:25:123;;;;;;;;;;-1:-1:-1;;;;;7372:25:123;-1:-1:-1;;;7372:25:123;-1:-1:-1;;;;;7372:25:123;;;;;;;;;;;;;;7438:19;;7407:28;;;:14;:28;;;;;;:50;7223:241::o;2912:187:25:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:25;;;-1:-1:-1;;;;;;3020:17:25;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:524:127:-;101:6;109;117;170:2;158:9;149:7;145:23;141:32;138:52;;;186:1;183;176:12;138:52;212:16;;-1:-1:-1;;;;;257:31:127;;247:42;;237:70;;303:1;300;293:12;237:70;376:2;361:18;;355:25;326:5;;-1:-1:-1;;;;;;411:32:127;;399:45;;389:73;;458:1;455;448:12;389:73;481:7;471:17;;;528:2;517:9;513:18;507:25;497:35;;14:524;;;;;:::o;1103:346::-;704:7958:123;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101635760003560e01c80637380f6bd116100c0578063bc3bc40411610074578063f2fde38b11610059578063f2fde38b14610395578063faf034e3146103b5578063fbedbe62146103d557600080fd5b8063bc3bc40414610357578063e30c39781461037757600080fd5b80638da5cb5b116100a55780638da5cb5b14610303578063a9860c8114610321578063b3ab15fb1461033757600080fd5b80637380f6bd146102ce57806379ba5097146102ee57600080fd5b806329954f4311610117578063570ca735116100fc578063570ca735146102545780636fb9584f1461028c578063715018a6146102b957600080fd5b806329954f4314610215578063338cdca11461023f57600080fd5b80630f737c82116101485780630f737c82146101b557806320cca627146101d557806327c78c42146101f557600080fd5b806301e336671461016f5780630d639e031461019157600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061018f61018a36600461109f565b61041c565b005b34801561019d57600080fd5b506006545b6040519081526020015b60405180910390f35b3480156101c157600080fd5b5061018f6101d03660046110e0565b610455565b3480156101e157600080fd5b5061018f6101f0366004611133565b61046b565b34801561020157600080fd5b5061018f610210366004611150565b610486565b34801561022157600080fd5b5060045461022f9060ff1681565b60405190151581526020016101ac565b34801561024b57600080fd5b5061018f61057f565b34801561026057600080fd5b50600254610274906001600160a01b031681565b6040516001600160a01b0390911681526020016101ac565b34801561029857600080fd5b506101a26102a7366004611150565b60056020526000908152604090205481565b3480156102c557600080fd5b5061018f6106ab565b3480156102da57600080fd5b5061018f6102e93660046110e0565b6106bf565b3480156102fa57600080fd5b5061018f6106f6565b34801561030f57600080fd5b506000546001600160a01b0316610274565b34801561032d57600080fd5b506101a260035481565b34801561034357600080fd5b5061018f610352366004611150565b610737565b34801561036357600080fd5b5061018f61037236600461116d565b610761565b34801561038357600080fd5b506001546001600160a01b0316610274565b3480156103a157600080fd5b5061018f6103b0366004611150565b610772565b3480156103c157600080fd5b5061018f6103d0366004611150565b6107e3565b3480156103e157600080fd5b506103f56103f036600461116d565b61097c565b604080516001600160a01b0390931683526001600160601b039091166020830152016101ac565b6104246109b7565b6001600160a01b0383166104415761043c82826109e4565b505050565b61043c6001600160a01b0384168383610a87565b61045d6109b7565b6104678282610aee565b5050565b6104736109b7565b6004805460ff1916911515919091179055565b6002546001600160a01b031633146104e55760405162461bcd60e51b815260206004820152600d60248201527f4f6e6c79206f70657261746f720000000000000000000000000000000000000060448201526064015b60405180910390fd5b6003546001600160a01b038216600090815260056020526040902054829161050c9161119c565b42101561055b5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b6001600160a01b038216600090815260056020526040902042905561046782610bab565b3233146105ce5760405162461bcd60e51b815260206004820152600860248201527f4f6e6c7920454f4100000000000000000000000000000000000000000000000060448201526064016104dc565b60045460ff166106205760405162461bcd60e51b815260206004820152601860248201527f4469726563742072657175657374206973206c6f636b6564000000000000000060448201526064016104dc565b60035433600081815260056020526040902054909161063e9161119c565b42101561068d5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b3360008181526005602052604090204290556106a890610bab565b50565b6106b36109b7565b6106bd6000610d58565b565b6106c76109b7565b6104676040518060400160405280846001600160a01b03168152602001836001600160601b0316815250610d71565b60015433906001600160a01b0316811461072e5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104dc565b6106a881610d58565b61073f6109b7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6107696109b7565b6106a881610e45565b61077a6109b7565b600180546001600160a01b0383166001600160a01b031990911681179091556107ab6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6107eb6109b7565b6001600160a01b03811660009081526007602052604090205460028110156108555760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b600654600090610867906001906111af565b905080610873836111c2565b9250821461093d57600060068281548110610890576108906111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b031691810191909152600680549192508291859081106108e4576108e46111d9565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b039093169290921791015561092283600161119c565b90516001600160a01b03166000908152600760205260409020555b60068181548110610950576109506111d9565b600091825260208083209091018290556001600160a01b03949094168152600790935250506040812055565b6006818154811061098c57600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b6000546001600160a01b031633146106bd5760405163118cdaa760e01b81523360048201526024016104dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a31576040519150601f19603f3d011682016040523d82523d6000602084013e610a36565b606091505b505090508061043c5760405162461bcd60e51b815260206004820152601660248201527f4e4154495645207472616e73666572206661696c65640000000000000000000060448201526064016104dc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261043c908490610e9c565b6001600160a01b03821660009081526007602052604081205490819003610b575760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b816006610b656001846111af565b81548110610b7557610b756111d9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b03160217905550505050565b60068054906000908183610bc157610bc16111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052915015801590610c18575080602001516001600160601b03164710155b15610c3457610c348382602001516001600160601b03166109e4565b60015b82811015610d525760068181548110610c5257610c526111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052925015801590610d165750602082015182516040516370a0823160e01b81523060048201526001600160601b03909216916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1391906111ef565b10155b15610d425760208201518251610d42916001600160a01b039091169086906001600160601b0316610a87565b610d4b81611208565b9050610c37565b50505050565b600180546001600160a01b03191690556106a881610eff565b80516001600160a01b031660009081526007602052604090205415610dd85760405162461bcd60e51b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e0000000000000000000060448201526064016104dc565b60068054600181018255600082815283516020948501516001600160601b0316600160a01b026001600160a01b039091169081177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90930192909255915490825260079092526040902055565b610e10811015610e975760405162461bcd60e51b815260206004820152601760248201527f556e73616665207265717565737420636f6f6c646f776e00000000000000000060448201526064016104dc565b600355565b6000610eb16001600160a01b03841683610f4f565b90508051600014158015610ed6575080806020019051810190610ed49190611221565b155b1561043c57604051635274afe760e01b81526001600160a01b03841660048201526024016104dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060610f5d83836000610f66565b90505b92915050565b606081471015610f8b5760405163cd78605960e01b81523060048201526024016104dc565b600080856001600160a01b03168486604051610fa7919061123e565b60006040518083038185875af1925050503d8060008114610fe4576040519150601f19603f3d011682016040523d82523d6000602084013e610fe9565b606091505b5091509150610ff9868383611005565b925050505b9392505050565b60608261101a5761101582611061565b610ffe565b815115801561103157506001600160a01b0384163b155b1561105a57604051639996b31560e01b81526001600160a01b03851660048201526024016104dc565b5080610ffe565b8051156110715780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146106a857600080fd5b6000806000606084860312156110b457600080fd5b83356110bf8161108a565b925060208401356110cf8161108a565b929592945050506040919091013590565b600080604083850312156110f357600080fd5b82356110fe8161108a565b915060208301356001600160601b038116811461111a57600080fd5b809150509250929050565b80151581146106a857600080fd5b60006020828403121561114557600080fd5b8135610ffe81611125565b60006020828403121561116257600080fd5b8135610ffe8161108a565b60006020828403121561117f57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f6057610f60611186565b81810381811115610f6057610f60611186565b6000816111d1576111d1611186565b506000190190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561120157600080fd5b5051919050565b60006001820161121a5761121a611186565b5060010190565b60006020828403121561123357600080fd5b8151610ffe81611125565b6000825160005b8181101561125f5760208186018101518583015201611245565b50600092019182525091905056fea2646970667358221220a2ed0a50dc84943f510092e0176197f6463e4f64edf17285e23c42d1f122a6af64736f6c63430008140033","sourceMap":"704:7958:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5545:212;;;;;;;;;;-1:-1:-1;5545:212:123;;;;;:::i;:::-;;:::i;:::-;;2574:107;;;;;;;;;;-1:-1:-1;2655:12:123;:19;2574:107;;;820:25:127;;;808:2;793:18;2574:107:123;;;;;;;;5120:153;;;;;;;;;;-1:-1:-1;5120:153:123;;;;;:::i;:::-;;:::i;6109:121::-;;;;;;;;;;-1:-1:-1;6109:121:123;;;;;:::i;:::-;;:::i;3301:146::-;;;;;;;;;;-1:-1:-1;3301:146:123;;;;;:::i;:::-;;:::i;1137:27::-;;;;;;;;;;-1:-1:-1;1137:27:123;;;;;;;;;;;2114:14:127;;2107:22;2089:41;;2077:2;2062:18;1137:27:123;1949:187:127;2846:169:123;;;;;;;;;;;;;:::i;1011:23::-;;;;;;;;;;-1:-1:-1;1011:23:123;;;;-1:-1:-1;;;;;1011:23:123;;;;;;-1:-1:-1;;;;;2305:55:127;;;2287:74;;2275:2;2260:18;1011:23:123;2141:226:127;1225:46:123;;;;;;;;;;-1:-1:-1;1225:46:123;;;;;:::i;:::-;;;;;;;;;;;;;;2293:101:25;;;;;;;;;;;;;:::i;3681:183:123:-;;;;;;;;;;-1:-1:-1;3681:183:123;;;;;:::i;:::-;;:::i;2119:229:26:-;;;;;;;;;;;;;:::i;1638:85:25:-;;;;;;;;;;-1:-1:-1;1684:7:25;1710:6;-1:-1:-1;;;;;1710:6:25;1638:85;;1100:30:123;;;;;;;;;;;;;;;;5871:102;;;;;;;;;;-1:-1:-1;5871:102:123;;;;;:::i;:::-;;:::i;4732:127::-;;;;;;;;;;-1:-1:-1;4732:127:123;;;;;:::i;:::-;;:::i;1232:99:26:-;;;;;;;;;;-1:-1:-1;1311:13:26;;-1:-1:-1;;;;;1311:13:26;1232:99;;1524:178;;;;;;;;;;-1:-1:-1;1524:178:26;;;;;:::i;:::-;;:::i;4035:526:123:-;;;;;;;;;;-1:-1:-1;4035:526:123;;;;;:::i;:::-;;:::i;1349:33::-;;;;;;;;;;-1:-1:-1;1349:33:123;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;3039:55:127;;;3021:74;;-1:-1:-1;;;;;3131:39:127;;;3126:2;3111:18;;3104:67;2994:18;1349:33:123;2833:344:127;5545:212:123;1531:13:25;:11;:13::i;:::-;-1:-1:-1;;;;;5646:29:123;::::1;5642:108;;5677:25;5689:3;5694:7;5677:11;:25::i;:::-;5545:212:::0;;;:::o;5642:108::-:1;5717:33;-1:-1:-1::0;;;;;5717:19:123;::::1;5737:3:::0;5742:7;5717:19:::1;:33::i;5120:153::-:0;1531:13:25;:11;:13::i;:::-;5219:47:123::1;5240:6;5248:17;5219:20;:47::i;:::-;5120:153:::0;;:::o;6109:121::-;1531:13:25;:11;:13::i;:::-;6189:15:123::1;:34:::0;;-1:-1:-1;;6189:34:123::1;::::0;::::1;;::::0;;;::::1;::::0;;6109:121::o;3301:146::-;1492:8;;-1:-1:-1;;;;;1492:8:123;1478:10;:22;1470:48;;;;-1:-1:-1;;;1470:48:123;;3384:2:127;1470:48:123;;;3366:21:127;3423:2;3403:18;;;3396:30;3462:15;3442:18;;;3435:43;3495:18;;1470:48:123;;;;;;;;;1636:15:::1;::::0;-1:-1:-1;;;;;1616:17:123;::::1;;::::0;;;:11:::1;:17;::::0;;;;;3367:3;;1616:35:::1;::::0;::::1;:::i;:::-;1597:15;:54;;1589:84;;;::::0;-1:-1:-1;;;1589:84:123;;3988:2:127;1589:84:123::1;::::0;::::1;3970:21:127::0;4027:2;4007:18;;;4000:30;4066:19;4046:18;;;4039:47;4103:18;;1589:84:123::1;3786:341:127::0;1589:84:123::1;-1:-1:-1::0;;;;;3382:16:123;::::2;;::::0;;;:11:::2;:16;::::0;;;;3401:15:::2;3382:34:::0;;3427:13:::2;3394:3:::0;3427:8:::2;:13::i;2846:169::-:0;1734:9;1747:10;1734:23;1726:44;;;;-1:-1:-1;;;1726:44:123;;4334:2:127;1726:44:123;;;4316:21:127;4373:1;4353:18;;;4346:29;4411:10;4391:18;;;4384:38;4439:18;;1726:44:123;4132:331:127;1726:44:123;1841:15:::1;::::0;::::1;;1833:52;;;::::0;-1:-1:-1;;;1833:52:123;;4670:2:127;1833:52:123::1;::::0;::::1;4652:21:127::0;4709:2;4689:18;;;4682:30;4748:26;4728:18;;;4721:54;4792:18;;1833:52:123::1;4468:348:127::0;1833:52:123::1;1636:15:::2;::::0;2914:10:::2;1616:17;::::0;;;:11:::2;:17;::::0;;;;;2914:10;;1616:35:::2;::::0;::::2;:::i;:::-;1597:15;:54;;1589:84;;;::::0;-1:-1:-1;;;1589:84:123;;3988:2:127;1589:84:123::2;::::0;::::2;3970:21:127::0;4027:2;4007:18;;;4000:30;4066:19;4046:18;;;4039:47;4103:18;;1589:84:123::2;3786:341:127::0;1589:84:123::2;2948:10:::3;2936:23;::::0;;;:11:::3;:23;::::0;;;;2962:15:::3;2936:41:::0;;2988:20:::3;::::0;:8:::3;:20::i;:::-;1895:1:::2;2846:169::o:0;2293:101:25:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;3681:183:123:-;1531:13:25;:11;:13::i;:::-;3775:82:123::1;3791:65;;;;;;;;3811:6;-1:-1:-1::0;;;;;3791:65:123::1;;;;;3837:17;-1:-1:-1::0;;;;;3791:65:123::1;;;::::0;3775:15:::1;:82::i;2119:229:26:-:0;1311:13;;735:10:37;;-1:-1:-1;;;;;1311:13:26;2214:24;;2210:96;;2261:34;;-1:-1:-1;;;2261:34:26;;-1:-1:-1;;;;;2305:55:127;;2261:34:26;;;2287:74:127;2260:18;;2261:34:26;2141:226:127;2210:96:26;2315:26;2334:6;2315:18;:26::i;5871:102:123:-;1531:13:25;:11;:13::i;:::-;5943:8:123::1;:23:::0;;-1:-1:-1;;;;;;5943:23:123::1;-1:-1:-1::0;;;;;5943:23:123;;;::::1;::::0;;;::::1;::::0;;5871:102::o;4732:127::-;1531:13:25;:11;:13::i;:::-;4815:37:123::1;4835:16;4815:19;:37::i;1524:178:26:-:0;1531:13:25;:11;:13::i;:::-;1613::26::1;:24:::0;;-1:-1:-1;;;;;1613:24:26;::::1;-1:-1:-1::0;;;;;;1613:24:26;;::::1;::::0;::::1;::::0;;;1677:7:::1;1684::25::0;1710:6;-1:-1:-1;;;;;1710:6:25;;1638:85;1677:7:26::1;-1:-1:-1::0;;;;;1652:43:26::1;;;;;;;;;;;1524:178:::0;:::o;4035:526:123:-;1531:13:25;:11;:13::i;:::-;-1:-1:-1;;;;;4122:22:123;::::1;4106:13;4122:22:::0;;;:14:::1;:22;::::0;;;;;4172:1:::1;4163:10:::0;::::1;;4155:41;;;::::0;-1:-1:-1;;;4155:41:123;;5023:2:127;4155:41:123::1;::::0;::::1;5005:21:127::0;5062:2;5042:18;;;5035:30;5101:20;5081:18;;;5074:48;5139:18;;4155:41:123::1;4821:342:127::0;4155:41:123::1;4227:12;:19:::0;4207:17:::1;::::0;4227:23:::1;::::0;4249:1:::1;::::0;4227:23:::1;:::i;:::-;4207:43:::0;-1:-1:-1;4207:43:123;4264:7:::1;::::0;::::1;:::i;:::-;;;;:20;4260:215;;4300:30;4333:12;4346:9;4333:23;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;4300:56:::1;::::0;;;;::::1;::::0;;;4333:23;::::1;4300:56:::0;-1:-1:-1;;;;;4300:56:123;::::1;::::0;;-1:-1:-1;;;4300:56:123;::::1;-1:-1:-1::0;;;;;4300:56:123::1;::::0;;::::1;::::0;;;;4371:12:::1;:19:::0;;4300:56;;-1:-1:-1;4300:56:123;;4384:5;;4371:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;:33;;;;;::::1;::::0;-1:-1:-1;;;;;4371:33:123::1;-1:-1:-1::0;;;4371:33:123::1;-1:-1:-1::0;;;;;4371:33:123;;::::1;::::0;;;::::1;:19:::0;::::1;:33:::0;4455:9:::1;:5:::0;4371:33;4455:9:::1;:::i;:::-;4434:17:::0;;-1:-1:-1;;;;;4419:33:123::1;;::::0;;;:14:::1;:33;::::0;;;;:45;4260:215:::1;4492:12;4505:9;4492:23;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;4485:30:::0;;;-1:-1:-1;;;;;4532:22:123;;;::::1;::::0;;:14:::1;:22:::0;;;-1:-1:-1;;4532:22:123;;;4525:29;4035:526::o;1349:33::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1349:33:123;;;-1:-1:-1;;;;1349:33:123;;-1:-1:-1;;;;;1349:33:123;;:::o;1796:162:25:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:25;735:10:37;1855:23:25;1851:101;;1901:40;;-1:-1:-1;;;1901:40:25;;735:10:37;1901:40:25;;;2287:74:127;2260:18;;1901:40:25;2141:226:127;8486:174:123;8556:12;8573:3;-1:-1:-1;;;;;8573:8:123;8589:7;8573:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8555:46;;;8619:7;8611:42;;;;-1:-1:-1;;;8611:42:123;;5986:2:127;8611:42:123;;;5968:21:127;6025:2;6005:18;;;5998:30;6064:24;6044:18;;;6037:52;6106:18;;8611:42:123;5784:346:127;1303:160:35;1412:43;;;-1:-1:-1;;;;;6327:55:127;;1412:43:35;;;6309:74:127;6399:18;;;;6392:34;;;1412:43:35;;;;;;;;;;6282:18:127;;;;1412:43:35;;;;;;;;;;-1:-1:-1;;;1412:43:35;;;1385:71;;1405:5;;1385:19;:71::i;8068:257:123:-;-1:-1:-1;;;;;8173:22:123;;8157:13;8173:22;;;:14;:22;;;;;;;8214:10;;;8206:41;;;;-1:-1:-1;;;8206:41:123;;5023:2:127;8206:41:123;;;5005:21:127;5062:2;5042:18;;;5035:30;5101:20;5081:18;;;5074:48;5139:18;;8206:41:123;4821:342:127;8206:41:123;8301:17;8258:12;8271:9;8279:1;8271:5;:9;:::i;:::-;8258:23;;;;;;;;:::i;:::-;;;;;;;;:40;;;:60;;;;;-1:-1:-1;;;;;8258:60:123;;;;;-1:-1:-1;;;;;8258:60:123;;;;;;8147:178;8068:257;;:::o;6437:590::-;6500:12;:19;;;6486:11;;;6557:15;;;;;:::i;:::-;;;;;;;;;;6530:42;;;;;;;;;6557:15;;6530:42;-1:-1:-1;;;;;6530:42:123;;;;-1:-1:-1;;;6530:42:123;;-1:-1:-1;;;;;6530:42:123;;;;;;;;-1:-1:-1;6587:26:123;;;;:77;;;6642:5;:22;;;-1:-1:-1;;;;;6617:47:123;:21;:47;;6587:77;6583:148;;;6680:40;6692:3;6697:5;:22;;;-1:-1:-1;;;;;6680:40:123;:11;:40::i;:::-;6758:1;6741:280;6765:3;6761:1;:7;6741:280;;;6797:12;6810:1;6797:15;;;;;;;;:::i;:::-;;;;;;;;;;6789:23;;;;;;;;;6797:15;;6789:23;-1:-1:-1;;;;;6789:23:123;;;;-1:-1:-1;;;6789:23:123;;-1:-1:-1;;;;;6789:23:123;;;;;;;;-1:-1:-1;6831:26:123;;;;:92;;-1:-1:-1;6901:22:123;;;;6861:11;;:36;;-1:-1:-1;;;6861:36:123;;6891:4;6861:36;;;2287:74:127;-1:-1:-1;;;;;6861:62:123;;;;-1:-1:-1;;;;;6861:21:123;;;;;;2260:18:127;;6861:36:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;6831:92;6827:184;;;6973:22;;;;6943:11;;:53;;-1:-1:-1;;;;;6943:24:123;;;;6968:3;;-1:-1:-1;;;;;6943:53:123;:24;:53::i;:::-;6770:3;;;:::i;:::-;;;6741:280;;;;6476:551;;6437:590;:::o;1886:153:26:-;1975:13;1968:20;;-1:-1:-1;;;;;;1968:20:26;;;1998:34;2023:8;1998:24;:34::i;7223:241:123:-;7316:12;;-1:-1:-1;;;;;7301:28:123;;;;;:14;:28;;;;;;:33;7293:68;;;;-1:-1:-1;;;7293:68:123;;6968:2:127;7293:68:123;;;6950:21:127;7007:2;6987:18;;;6980:30;7046:24;7026:18;;;7019:52;7088:18;;7293:68:123;6766:346:127;7293:68:123;7372:12;:25;;;;;;;-1:-1:-1;7372:25:123;;;;;;;;;;-1:-1:-1;;;;;7372:25:123;-1:-1:-1;;;7372:25:123;-1:-1:-1;;;;;7372:25:123;;;;;;;;;;;;;;7438:19;;7407:28;;;:14;:28;;;;;;:50;7223:241::o;7658:188::-;7759:7;7739:16;:27;;7731:63;;;;-1:-1:-1;;;7731:63:123;;7319:2:127;7731:63:123;;;7301:21:127;7358:2;7338:18;;;7331:30;7397:25;7377:18;;;7370:53;7440:18;;7731:63:123;7117:347:127;7731:63:123;7805:15;:34;7658:188::o;6468:629:35:-;6887:23;6913:33;-1:-1:-1;;;;;6913:27:35;;6941:4;6913:27;:33::i;:::-;6887:59;;6960:10;:17;6981:1;6960:22;;:57;;;;;6998:10;6987:30;;;;;;;;;;;;:::i;:::-;6986:31;6960:57;6956:135;;;7040:40;;-1:-1:-1;;;7040:40:35;;-1:-1:-1;;;;;2305:55:127;;7040:40:35;;;2287:74:127;2260:18;;7040:40:35;2141:226:127;2912:187:25;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:25;;;-1:-1:-1;;;;;;3020:17:25;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2705:151:36:-;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;:::-;2804:45;;2705:151;;;;;:::o;3180:392::-;3279:12;3331:5;3307:21;:29;3303:108;;;3359:41;;-1:-1:-1;;;3359:41:36;;3394:4;3359:41;;;2287:74:127;2260:18;;3359:41:36;2141:226:127;3303:108:36;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:36;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;;;;3180:392;;;;;;:::o;4625:582::-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:36;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:36;;-1:-1:-1;;;;;2305:55:127;;5121:24:36;;;2287:74:127;2260:18;;5121:24:36;2141:226:127;5041:119:36;-1:-1:-1;5180:10:36;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:36;;;;;;;;;;;14:162:127;-1:-1:-1;;;;;101:5:127;97:54;90:5;87:65;77:93;;166:1;163;156:12;181:488;274:6;282;290;343:2;331:9;322:7;318:23;314:32;311:52;;;359:1;356;349:12;311:52;398:9;385:23;417:39;450:5;417:39;:::i;:::-;475:5;-1:-1:-1;532:2:127;517:18;;504:32;545:41;504:32;545:41;:::i;:::-;181:488;;605:7;;-1:-1:-1;;;659:2:127;644:18;;;;631:32;;181:488::o;856:459::-;939:6;947;1000:2;988:9;979:7;975:23;971:32;968:52;;;1016:1;1013;1006:12;968:52;1055:9;1042:23;1074:39;1107:5;1074:39;:::i;:::-;1132:5;-1:-1:-1;1189:2:127;1174:18;;1161:32;-1:-1:-1;;;;;1224:40:127;;1212:53;;1202:81;;1279:1;1276;1269:12;1202:81;1302:7;1292:17;;;856:459;;;;;:::o;1320:118::-;1406:5;1399:13;1392:21;1385:5;1382:32;1372:60;;1428:1;1425;1418:12;1443:241;1499:6;1552:2;1540:9;1531:7;1527:23;1523:32;1520:52;;;1568:1;1565;1558:12;1520:52;1607:9;1594:23;1626:28;1648:5;1626:28;:::i;1689:255::-;1748:6;1801:2;1789:9;1780:7;1776:23;1772:32;1769:52;;;1817:1;1814;1807:12;1769:52;1856:9;1843:23;1875:39;1908:5;1875:39;:::i;2372:180::-;2431:6;2484:2;2472:9;2463:7;2459:23;2455:32;2452:52;;;2500:1;2497;2490:12;2452:52;-1:-1:-1;2523:23:127;;2372:180;-1:-1:-1;2372:180:127:o;3524:127::-;3585:10;3580:3;3576:20;3573:1;3566:31;3616:4;3613:1;3606:15;3640:4;3637:1;3630:15;3656:125;3721:9;;;3742:10;;;3739:36;;;3755:18;;:::i;5168:128::-;5235:9;;;5256:11;;;5253:37;;;5270:18;;:::i;5301:136::-;5340:3;5368:5;5358:39;;5377:18;;:::i;:::-;-1:-1:-1;;;5413:18:127;;5301:136::o;5442:127::-;5503:10;5498:3;5494:20;5491:1;5484:31;5534:4;5531:1;5524:15;5558:4;5555:1;5548:15;6437:184;6507:6;6560:2;6548:9;6539:7;6535:23;6531:32;6528:52;;;6576:1;6573;6566:12;6528:52;-1:-1:-1;6599:16:127;;6437:184;-1:-1:-1;6437:184:127:o;6626:135::-;6665:3;6686:17;;;6683:43;;6706:18;;:::i;:::-;-1:-1:-1;6753:1:127;6742:13;;6626:135::o;7469:245::-;7536:6;7589:2;7577:9;7568:7;7564:23;7560:32;7557:52;;;7605:1;7602;7595:12;7557:52;7637:9;7631:16;7656:28;7678:5;7656:28;:::i;7719:412::-;7848:3;7886:6;7880:13;7911:1;7921:129;7935:6;7932:1;7929:13;7921:129;;;8033:4;8017:14;;;8013:25;;8007:32;7994:11;;;7987:53;7950:12;7921:129;;;-1:-1:-1;8105:1:127;8069:16;;8094:13;;;-1:-1:-1;8069:16:127;7719:412;-1:-1:-1;7719:412:127:o","linkReferences":{}},"methodIdentifiers":{"acceptOwnership()":"79ba5097","addFaucetToken(address,uint96)":"7380f6bd","faucetTokens(uint256)":"fbedbe62","lastRequest(address)":"6fb9584f","numberOfFaucetTokens()":"0d639e03","operator()":"570ca735","owner()":"8da5cb5b","pendingOwner()":"e30c3978","removeFaucetToken(address)":"faf034e3","renounceOwnership()":"715018a6","request()":"338cdca1","request(address)":"27c78c42","requestCooldown()":"a9860c81","setAmountPerRequest(address,uint96)":"0f737c82","setOperator(address)":"b3ab15fb","setRequestCooldown(uint256)":"bc3bc404","setUnlockedRequest(bool)":"20cca627","transferOwnership(address)":"f2fde38b","unlockedRequest()":"29954f43","withdrawToken(address,address,uint256)":"01e33667"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_nativePerRequest\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"_requestCooldown\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_amountPerRequest\",\"type\":\"uint96\"}],\"name\":\"addFaucetToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"faucetTokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"ERC20\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amountPerRequest\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastRequest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfFaucetTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"removeFaucetToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"request\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"request\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestCooldown\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_amountPerRequest\",\"type\":\"uint96\"}],\"name\":\"setAmountPerRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestCooldown\",\"type\":\"uint256\"}],\"name\":\"setRequestCooldown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_unlockedRequest\",\"type\":\"bool\"}],\"name\":\"setUnlockedRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockedRequest\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"details\":\"This contract should only be used for testnet\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"addFaucetToken(address,uint96)\":{\"details\":\"Tokens need to be owned by the faucet, and only mintable by the owner\",\"params\":{\"_amountPerRequest\":\"The amount per request\",\"_token\":\"The address of the token\"}},\"constructor\":{\"params\":{\"_nativePerRequest\":\"The native received per request\",\"_requestCooldown\":\"The request cooldown\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"removeFaucetToken(address)\":{\"details\":\"Token needs to be in the set, and NATIVE can't be removed\",\"params\":{\"_token\":\"The address of the token\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"request()\":{\"details\":\"Can be called only once per `requestCooldown` seconds\"},\"request(address)\":{\"details\":\"Can be called only once per `requestCooldown` seconds for every address Can only be called by the operator\",\"params\":{\"_to\":\"The address that will receive the tokens\"}},\"setAmountPerRequest(address,uint96)\":{\"details\":\"This function needs to be called by the owner\",\"params\":{\"_amountPerRequest\":\"The new amount per request\",\"_token\":\"The address of the token\"}},\"setOperator(address)\":{\"params\":{\"_newOperator\":\"The address of the new operator\"}},\"setRequestCooldown(uint256)\":{\"details\":\"This function needs to be called by the owner\",\"params\":{\"_requestCooldown\":\"The new cooldown\"}},\"setUnlockedRequest(bool)\":{\"params\":{\"_unlockedRequest\":\"The address of the new operator\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"withdrawToken(address,address,uint256)\":{\"details\":\"This function needs to be called by the owner\",\"params\":{\"_amount\":\"The token amount to send\",\"_to\":\"The recipient address\",\"_token\":\"The address of the token to withdraw\"}}},\"title\":\"Faucet contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addFaucetToken(address,uint96)\":{\"notice\":\"Add a token to the faucet\"},\"constructor\":{\"notice\":\"Constructor of the faucet, set the request cooldown and add native to the faucet\"},\"faucetTokens(uint256)\":{\"notice\":\"faucet tokens set, custom to be able to use structures\"},\"lastRequest(address)\":{\"notice\":\"last time a user has requested tokens\"},\"numberOfFaucetTokens()\":{\"notice\":\"Returns the number of tokens given by the faucet\"},\"operator()\":{\"notice\":\"The address of the operator that can call request for other address\"},\"removeFaucetToken(address)\":{\"notice\":\"Remove a token from the faucet\"},\"request()\":{\"notice\":\"User needs to call this function in order to receive test tokens and native\"},\"request(address)\":{\"notice\":\"User needs to call this function in order to receive test tokens and native\"},\"requestCooldown()\":{\"notice\":\"The minimum time needed between 2 requests\"},\"setAmountPerRequest(address,uint96)\":{\"notice\":\"Set the amount per request of a specific token, designated by its symbol\"},\"setOperator(address)\":{\"notice\":\"Set the address of the operator\"},\"setRequestCooldown(uint256)\":{\"notice\":\"Set the request cooldown for every users\"},\"setUnlockedRequest(bool)\":{\"notice\":\"Set whether the direct request is unlocked or not\"},\"withdrawToken(address,address,uint256)\":{\"notice\":\"Withdraw `amount` of token `token` to `to`\"}},\"notice\":\"Create a faucet contract that create test tokens and allow user to request for tokens. This faucet will also provide NATIVE if native were sent to the contract (either during the construction or after). This contract will not fail if its native balance becomes too low, it will just not send NATIVE but will mint the different tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/Faucet.sol\":\"Faucet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"test/mocks/Faucet.sol\":{\"keccak256\":\"0x0f8488b15df92479eceea54a4678de8d0926321815c8925166f4ffbc5e777d6d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3d26cfcb208febf7b3f7adbc34df2e4ce9eea592cff9471222ae657eb103b09\",\"dweb:/ipfs/QmVidqAC5E3MzAipYuvNxd13EfAvRjdZddPkoe5dhFtCQM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"uint96","name":"_nativePerRequest","type":"uint96"},{"internalType":"uint256","name":"_requestCooldown","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint96","name":"_amountPerRequest","type":"uint96"}],"stateMutability":"nonpayable","type":"function","name":"addFaucetToken"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"faucetTokens","outputs":[{"internalType":"contract IERC20","name":"ERC20","type":"address"},{"internalType":"uint96","name":"amountPerRequest","type":"uint96"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"lastRequest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numberOfFaucetTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeFaucetToken"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"request"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"request"},{"inputs":[],"stateMutability":"view","type":"function","name":"requestCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint96","name":"_amountPerRequest","type":"uint96"}],"stateMutability":"nonpayable","type":"function","name":"setAmountPerRequest"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"uint256","name":"_requestCooldown","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRequestCooldown"},{"inputs":[{"internalType":"bool","name":"_unlockedRequest","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setUnlockedRequest"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"unlockedRequest","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawToken"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"addFaucetToken(address,uint96)":{"details":"Tokens need to be owned by the faucet, and only mintable by the owner","params":{"_amountPerRequest":"The amount per request","_token":"The address of the token"}},"constructor":{"params":{"_nativePerRequest":"The native received per request","_requestCooldown":"The request cooldown"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"removeFaucetToken(address)":{"details":"Token needs to be in the set, and NATIVE can't be removed","params":{"_token":"The address of the token"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"request()":{"details":"Can be called only once per `requestCooldown` seconds"},"request(address)":{"details":"Can be called only once per `requestCooldown` seconds for every address Can only be called by the operator","params":{"_to":"The address that will receive the tokens"}},"setAmountPerRequest(address,uint96)":{"details":"This function needs to be called by the owner","params":{"_amountPerRequest":"The new amount per request","_token":"The address of the token"}},"setOperator(address)":{"params":{"_newOperator":"The address of the new operator"}},"setRequestCooldown(uint256)":{"details":"This function needs to be called by the owner","params":{"_requestCooldown":"The new cooldown"}},"setUnlockedRequest(bool)":{"params":{"_unlockedRequest":"The address of the new operator"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"withdrawToken(address,address,uint256)":{"details":"This function needs to be called by the owner","params":{"_amount":"The token amount to send","_to":"The recipient address","_token":"The address of the token to withdraw"}}},"version":1},"userdoc":{"kind":"user","methods":{"addFaucetToken(address,uint96)":{"notice":"Add a token to the faucet"},"constructor":{"notice":"Constructor of the faucet, set the request cooldown and add native to the faucet"},"faucetTokens(uint256)":{"notice":"faucet tokens set, custom to be able to use structures"},"lastRequest(address)":{"notice":"last time a user has requested tokens"},"numberOfFaucetTokens()":{"notice":"Returns the number of tokens given by the faucet"},"operator()":{"notice":"The address of the operator that can call request for other address"},"removeFaucetToken(address)":{"notice":"Remove a token from the faucet"},"request()":{"notice":"User needs to call this function in order to receive test tokens and native"},"request(address)":{"notice":"User needs to call this function in order to receive test tokens and native"},"requestCooldown()":{"notice":"The minimum time needed between 2 requests"},"setAmountPerRequest(address,uint96)":{"notice":"Set the amount per request of a specific token, designated by its symbol"},"setOperator(address)":{"notice":"Set the address of the operator"},"setRequestCooldown(uint256)":{"notice":"Set the request cooldown for every users"},"setUnlockedRequest(bool)":{"notice":"Set whether the direct request is unlocked or not"},"withdrawToken(address,address,uint256)":{"notice":"Withdraw `amount` of token `token` to `to`"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/Faucet.sol":"Faucet"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"test/mocks/Faucet.sol":{"keccak256":"0x0f8488b15df92479eceea54a4678de8d0926321815c8925166f4ffbc5e777d6d","urls":["bzz-raw://b3d26cfcb208febf7b3f7adbc34df2e4ce9eea592cff9471222ae657eb103b09","dweb:/ipfs/QmVidqAC5E3MzAipYuvNxd13EfAvRjdZddPkoe5dhFtCQM"],"license":"MIT"}},"version":1},"id":123} \ No newline at end of file diff --git a/abi/Faucet.t.sol/FaucetTest.json b/abi/Faucet.t.sol/FaucetTest.json deleted file mode 100644 index 90114ba8..00000000 --- a/abi/Faucet.t.sol/FaucetTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAddToken","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLockRequest","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveToken","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRequestFaucetTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRequestFaucetTokensByOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRevertOnNonEOA","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSetRequestAmount","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSetRequestCooldown","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdrawNative","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdrawToken","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60a0604052600b805460ff1916600117905530608052601f80546001600160a01b031916905534801561003157600080fd5b50608051617f4e6200005c600039600081816111aa015281816112b60152613c130152617f4e6000f3fe60806040523480156200001157600080fd5b5060043610620001955760003560e01c80636eeb036611620000e9578063b5508aa91162000097578063df91f777116200006e578063df91f77714620002a6578063e20c9f7114620002b0578063fb7cd38914620002ba57600080fd5b8063b5508aa91462000277578063ba414fa61462000281578063db182d13146200029c57600080fd5b80637e9f2b2211620000cc5780637e9f2b22146200024a57806385226c811462000254578063916a17c6146200026d57600080fd5b80636eeb036614620002365780637be0016c146200024057600080fd5b80633e5e3c2311620001475780634e04cea1116200012a5780634e04cea1146200020957806365261a75146200021357806366d9a9a0146200021d57600080fd5b80633e5e3c2314620001f55780633f7286f414620001ff57600080fd5b80631ed7831c116200017c5780631ed7831c14620001b05780632ade388014620001d25780633e119ed314620001eb57600080fd5b806301642bf3146200019a5780630a9254e414620001a6575b600080fd5b620001a4620002c4565b005b620001a462000929565b620001ba62000d44565b604051620001c9919062005832565b60405180910390f35b620001dc62000da8565b604051620001c99190620058c9565b620001a462000ef6565b620001ba62001a80565b620001ba62001ae2565b620001a462001b44565b620001a4620024a3565b6200022762002d8e565b604051620001c991906200598f565b620001a462002e78565b620001a462002f47565b620001a462003695565b6200025e62003d64565b604051620001c9919062005a46565b6200022762003e3e565b6200025e62003f28565b6200028b62004002565b6040519015158152602001620001c9565b620001a4620040bc565b620001a462004b85565b620001ba62004fae565b620001a462005010565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200034c57600080fd5b505af115801562000361573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb39250620003f8919060040162005aac565b600060405180830381600087803b1580156200041357600080fd5b505af115801562000428573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600060048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b1580156200047357600080fd5b505af115801562000488573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620004da57600080fd5b505af1158015620004ef573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600060048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b1580156200053a57600080fd5b505af11580156200054f573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b158015620005db57600080fd5b505af1158015620005f0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601860248201527f4469726563742072657175657374206973206c6f636b65640000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b1580156200066a57600080fd5b505af11580156200067f573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006d457600080fd5b505af1158015620006e9573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200073b57600080fd5b505af115801562000750573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600160048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b1580156200079b57600080fd5b505af1158015620007b0573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b5607891506044015b600060405180830381600087803b1580156200083d57600080fd5b505af115801562000852573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008a757600080fd5b505af1158015620008bc573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200090e57600080fd5b505af115801562000923573d6000803e3d6000fd5b50505050565b6006604051620009399062005816565b60ff9091168152602001604051809103906000f08015801562000960573d6000803e3d6000fd5b50601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055604051600c906200099f9062005816565b60ff9091168152602001604051809103906000f080158015620009c6573d6000803e3d6000fd5b50601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905562000a09670de0b6b3a7640000600a62005ade565b6001600160601b031630670de0b6b3a76400006201518060405162000a2e9062005824565b6001600160a01b0390931683526001600160601b03909116602083015260408201526060016040518091039082f090508015801562000a71573d6000803e3d6000fd5b50601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316908117909155601d54909116906340c10f199062000abc633b9aca00600a62005ade565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b15801562000b0c57600080fd5b505af115801562000b21573d6000803e3d6000fd5b5050601e54601c546001600160a01b0391821693506340c10f1992501662000b5266038d7ea4c68000600a62005ade565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b15801562000ba257600080fd5b505af115801562000bb7573d6000803e3d6000fd5b5050601c54601d54604051637380f6bd60e01b81526001600160a01b039182166004820152633b9aca00602482015291169250637380f6bd9150604401600060405180830381600087803b15801562000c0f57600080fd5b505af115801562000c24573d6000803e3d6000fd5b5050601c54601e54604051637380f6bd60e01b81526001600160a01b03918216600482015266038d7ea4c68000602482015291169250637380f6bd9150604401600060405180830381600087803b15801562000c7f57600080fd5b505af115801562000c94573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600160048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b15801562000cdf57600080fd5b505af115801562000cf4573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526301e13380600482015260008051602062007e05833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200090e57600080fd5b6060601480548060200260200160405190810160405280929190818152602001828054801562000d9e57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000d7f575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000eed57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000ed557838290600052602060002001805462000e419062005b0c565b80601f016020809104026020016040519081016040528092919081815260200182805462000e6f9062005b0c565b801562000ec05780601f1062000e945761010080835404028352916020019162000ec0565b820191906000526020600020905b81548152906001019060200180831162000ea257829003601f168201915b50505050508152602001906001019062000e1f565b50505050815250508152602001906001019062000dcc565b50505050905090565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562000f7e57600080fd5b505af115801562000f93573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c27b7363c9037b832b930ba37b960991b604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b15801562000ffd57600080fd5b505af115801562001012573d6000803e3d6000fd5b5050601c546040805180820182526005815264414c49434560d81b602090910152516313e3c62160e11b815260008051602062007e4983398151915260048201526001600160a01b0390911692506327c78c429150602401600060405180830381600087803b1580156200108557600080fd5b505af11580156200109a573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620010ec57600080fd5b505af115801562001101573d6000803e3d6000fd5b5050601c54604080518082018252600881526727a822a920aa27a960c11b6020909101525163b3ab15fb60e01b815273523a704056dcd17bcf83bed8b68c59416dac111960048201526001600160a01b03909116925063b3ab15fb9150602401600060405180830381600087803b1580156200117c57600080fd5b505af115801562001191573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062007e0583398151915292506306447d569150602401600060405180830381600087803b1580156200120657600080fd5b505af11580156200121b573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c27b7363c9037b832b930ba37b960991b604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b1580156200128557600080fd5b505af11580156200129a573d6000803e3d6000fd5b5050601c546040516313e3c62160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015290911692506327c78c429150602401600060405180830381600087803b1580156200130657600080fd5b505af11580156200131b573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200136d57600080fd5b505af115801562001382573d6000803e3d6000fd5b5050604080518082018252600881526727a822a920aa27a960c11b602090910152516303223eab60e11b815273523a704056dcd17bcf83bed8b68c59416dac1119600482015260008051602062007e0583398151915292506306447d569150602401600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b5050601c546040805180820182526005815264414c49434560d81b602090910152516313e3c62160e11b815260008051602062007e4983398151915260048201526001600160a01b0390911692506327c78c429150602401600060405180830381600087803b1580156200148757600080fd5b505af11580156200149c573d6000803e3d6000fd5b5050601c5460408051808201825260038152622127a160e91b602090910152516313e3c62160e11b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526001600160a01b0390911692506327c78c429150602401600060405180830381600087803b1580156200151257600080fd5b505af115801562001527573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200157957600080fd5b505af11580156200158e573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200165d93506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562001609573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162f919062005b48565b633b9aca006001600160601b031660405180606001604052806024815260200162007de1602491396200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262001729916001600160a01b0316906370a0823190602401602060405180830381865afa158015620016d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f8919062005b48565b66038d7ea4c680006001600160601b031660405180606001604052806024815260200162007e69602491396200576f565b6040805180820182526005815264414c49434560d81b6020918201528151606081019092526024808352620017839260008051602062007e498339815191523192670de0b6b3a7640000929062007ed5908301396200576f565b601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200184f916001600160a01b0316906370a0823190602401602060405180830381865afa158015620017fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001821919062005b48565b633b9aca006001600160601b031660405180606001604052806024815260200162007eb1602491396200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200191e916001600160a01b0316906370a0823190602401602060405180830381865afa158015620018c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ed919062005b48565b66038d7ea4c680006001600160601b031660405180606001604052806024815260200162007e8d602491396200576f565b60408051808201825260038152622127a160e91b60209182015281516060810190925260248083526200197b927329d93e4f9fb5004362e31d9828e4c67c1125ce4f3192670de0b6b3a7640000929062007e25908301396200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562001a0657600080fd5b505af115801562001a1b573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601160248201527f546f6f206d616e79207265717565737473000000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb3915060640162000822565b6060601680548060200260200160405190810160405280929190818152602001828054801562000d9e576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d7f575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000d9e576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d7f575050505050905090565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e49833981519152600482018190526024820152429060008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562001bce57600080fd5b505af115801562001be3573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001c3857600080fd5b505af115801562001c4d573d6000803e3d6000fd5b5060008051602062007e05833981519152925063e5d6bf02915062001c77905083610e1062005b62565b6040518263ffffffff1660e01b815260040162001c9691815260200190565b600060405180830381600087803b15801562001cb157600080fd5b505af115801562001cc6573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601160248201527f546f6f206d616e79207265717565737473000000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b15801562001d4057600080fd5b505af115801562001d55573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001daa57600080fd5b505af115801562001dbf573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001e1157600080fd5b505af115801562001e26573d6000803e3d6000fd5b5050601c54604051632f0ef10160e21b8152610e1060048201526001600160a01b03909116925063bc3bc4049150602401600060405180830381600087803b15801562001e7257600080fd5b505af115801562001e87573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b15801562001f1357600080fd5b505af115801562001f28573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062001fbf919060040162005aac565b600060405180830381600087803b15801562001fda57600080fd5b505af115801562001fef573d6000803e3d6000fd5b5050601c54604051632f0ef10160e21b8152618ca060048201526001600160a01b03909116925063bc3bc4049150602401600060405180830381600087803b1580156200203b57600080fd5b505af115801562002050573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620020a257600080fd5b505af1158015620020b7573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b1580156200214357600080fd5b505af115801562002158573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021ad57600080fd5b505af1158015620021c2573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200221457600080fd5b505af115801562002229573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200232093506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620022a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ca919062005b48565b620022db633b9aca00600262005ade565b6001600160601b03166040518060400160405280601981526020017f7465737453657452657175657374436f6f6c646f776e3a3a31000000000000008152506200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262002414916001600160a01b0316906370a0823190602401602060405180830381865afa15801562002395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023bb919062005b48565b620023cf66038d7ea4c68000600262005ade565b6001600160601b03166040518060400160405280601981526020017f7465737453657452657175657374436f6f6c646f776e3a3a32000000000000008152506200576f565b604080518082019091526005815264414c49434560d81b602090910152620024a060008051602062007e49833981519152316200245b670de0b6b3a7640000600262005ade565b6001600160601b03166040518060400160405280601981526020017f7465737453657452657175657374436f6f6c646f776e3a3a33000000000000008152506200576f565b50565b6040805180820182526005815264414c49434560d81b6020918201528151808301909252601582527f7465737457697468647261774e61746976653a3a31000000000000000000000090820152620025109060008051602062007e4983398151915231906000906200576f565b601c54601f546040805180820182526005815264414c49434560d81b602090910152516301e3366760e01b81526001600160a01b03918216600482015260008051602062007e498339815191526024820152670de0b6b3a764000060448201529116906301e3366790606401600060405180830381600087803b1580156200259757600080fd5b505af1158015620025ac573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b6020918201528151808301909252601582527f7465737457697468647261774e61746976653a3a3200000000000000000000009082015262002624925060008051602062007e49833981519152319150670de0b6b3a7640000906200576f565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b158015620026ac57600080fd5b505af1158015620026c1573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062002758919060040162005aac565b600060405180830381600087803b1580156200277357600080fd5b505af115801562002788573d6000803e3d6000fd5b5050601c54601f546040805180820182526005815264414c49434560d81b602090910152516301e3366760e01b81526001600160a01b03918216600482015260008051602062007e498339815191526024820152670de0b6b3a76400006044820152911692506301e336679150606401600060405180830381600087803b1580156200281357600080fd5b505af115801562002828573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200287a57600080fd5b505af11580156200288f573d6000803e3d6000fd5b5050601c54601f54604080518082019091526005815264414c49434560d81b6020909101526001600160a01b0391821693506301e3366792501660008051602062007e49833981519152620028ee6001670de0b6b3a764000062005b7e565b601c5462002910916001600160601b0316906001600160a01b03163162005ba8565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156200296057600080fd5b505af115801562002975573d6000803e3d6000fd5b5050601c54620029e692506001600160a01b0316319050620029a16001670de0b6b3a764000062005b7e565b6001600160601b03166040518060400160405280601581526020017f7465737457697468647261774e61746976653a3a3300000000000000000000008152506200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562002a7157600080fd5b505af115801562002a86573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002adb57600080fd5b505af115801562002af0573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b4257600080fd5b505af115801562002b57573d6000803e3d6000fd5b5050601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262002c3b93506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562002bd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bfb919062005b48565b60408051808201909152601581527f7465737457697468647261774e61746976653a3a3400000000000000000000006020820152633b9aca00906200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262002d1c916001600160a01b0316906370a0823190602401602060405180830381865afa15801562002cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cd9919062005b48565b60408051808201909152601581527f7465737457697468647261774e61746976653a3a350000000000000000000000602082015266038d7ea4c68000906200576f565b60408051808201825260038152622127a160e91b6020918201528151808301909252601582527f7465737457697468647261774e61746976653a3a3600000000000000000000009082015262002d8c907329d93e4f9fb5004362e31d9828e4c67c1125ce4f31906000906200576f565b565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000eed5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002e5f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002e205790505b5050505050815250508152602001906001019062002db2565b601c546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062007e05833981519152906306447d5690602401600060405180830381600087803b15801562002ecd57600080fd5b505af115801562002ee2573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600860248201527f4f6e6c7920454f41000000000000000000000000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb3915060640162000822565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562002fcf57600080fd5b505af115801562002fe4573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200303957600080fd5b505af11580156200304e573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620030a057600080fd5b505af1158015620030b5573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200319693506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562003130573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003156919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a310000000000006020820152633b9aca00906200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262003274916001600160a01b0316906370a0823190602401602060405180830381865afa1580156200320b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003231919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a32000000000000602082015266038d7ea4c68000906200576f565b6040805180820182526005815264414c49434560d81b6020918201528151808301909252601a82527f7465737452657175657374466175636574546f6b656e733a3a3300000000000090820152620032e89060008051602062007e498339815191523190670de0b6b3a7640000906200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200337357600080fd5b505af115801562003388573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620033dd57600080fd5b505af1158015620033f2573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200344457600080fd5b505af115801562003459573d6000803e3d6000fd5b5050601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200353d93506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620034d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034fd919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a340000000000006020820152633b9aca00906200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200361e916001600160a01b0316906370a0823190602401602060405180830381865afa158015620035b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035db919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a35000000000000602082015266038d7ea4c68000906200576f565b60408051808201825260038152622127a160e91b6020918201528151808301909252601a82527f7465737452657175657374466175636574546f6b656e733a3a360000000000009082015262002d8c907329d93e4f9fb5004362e31d9828e4c67c1125ce4f3190670de0b6b3a7640000906200576f565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200371d57600080fd5b505af115801562003732573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb39250620037c9919060040162005aac565b600060405180830381600087803b158015620037e457600080fd5b505af1158015620037f9573d6000803e3d6000fd5b5050601c5460405163faf034e360e01b8152600160048201526001600160a01b03909116925063faf034e39150602401600060405180830381600087803b1580156200384457600080fd5b505af115801562003859573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620038ab57600080fd5b505af1158015620038c0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e0000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b1580156200393a57600080fd5b505af11580156200394f573d6000803e3d6000fd5b5050601c54601f5460405163faf034e360e01b81526001600160a01b0391821660048201529116925063faf034e39150602401600060405180830381600087803b1580156200399d57600080fd5b505af1158015620039b2573d6000803e3d6000fd5b5050601c54601d5460405163faf034e360e01b81526001600160a01b0391821660048201529116925063faf034e39150602401600060405180830381600087803b15801562003a0057600080fd5b505af115801562003a15573d6000803e3d6000fd5b5050601c54604051637df6df3160e11b815260006004820181905293506001600160a01b03909116915063fbedbe62906024016040805180830381865afa15801562003a65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a8b919062005bd4565b50601f5460408051808201909152601281527f7465737452656d6f7665546f6b656e3a3a310000000000000000000000000000602082015291925062003add9183916001600160a01b031690620057de565b601c54604051637df6df3160e11b8152600160048201526001600160a01b039091169063fbedbe62906024016040805180830381865afa15801562003b26573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b4c919062005bd4565b50601e5460408051808201909152601281527f7465737452656d6f7665546f6b656e3a3a320000000000000000000000000000602082015291925062003b9e9183916001600160a01b031690620057de565b601c5460408051638da5cb5b60e01b8152905162003c6e926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801562003beb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c11919062005c1e565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601281526020017f7465737452656d6f7665546f6b656e3a3a330000000000000000000000000000815250620057de565b60405163f28dceb360e01b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e0000000000000000000000000000604482015260008051602062007e058339815191529063f28dceb390606401600060405180830381600087803b15801562003ce457600080fd5b505af115801562003cf9573d6000803e3d6000fd5b5050601c54601d5460405163faf034e360e01b81526001600160a01b0391821660048201529116925063faf034e391506024015b600060405180830381600087803b15801562003d4857600080fd5b505af115801562003d5d573d6000803e3d6000fd5b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000eed57838290600052602060002001805462003daa9062005b0c565b80601f016020809104026020016040519081016040528092919081815260200182805462003dd89062005b0c565b801562003e295780601f1062003dfd5761010080835404028352916020019162003e29565b820191906000526020600020905b81548152906001019060200180831162003e0b57829003601f168201915b50505050508152602001906001019062003d88565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000eed5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562003f0f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162003ed05790505b5050505050815250508152602001906001019062003e62565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000eed57838290600052602060002001805462003f6e9062005b0c565b80601f016020809104026020016040519081016040528092919081815260200182805462003f9c9062005b0c565b801562003fed5780601f1062003fc15761010080835404028352916020019162003fed565b820191906000526020600020905b81548152906001019060200180831162003fcf57829003601f168201915b50505050508152602001906001019062003f4c565b60075460009060ff16156200401b575060075460ff1690565b604051630667f9d760e41b815260008051602062007e05833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200408f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040b5919062005b48565b1415905090565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262004195916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004157919062005b48565b60006040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a310000000000000000000000008152506200576f565b601c54601e54604080518082019091526005815264414c49434560d81b6020909101526001600160a01b03918216916301e33667911660008051602062007e49833981519152620041ec633b9aca00600262005ade565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b03166044820152606401600060405180830381600087803b1580156200424557600080fd5b505af11580156200425a573d6000803e3d6000fd5b5050601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200435193506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620042d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042fb919062005b48565b6200430c633b9aca00600262005ade565b6001600160601b03166040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a320000000000000000000000008152506200576f565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b158015620043d957600080fd5b505af1158015620043ee573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062004485919060040162005aac565b600060405180830381600087803b158015620044a057600080fd5b505af1158015620044b5573d6000803e3d6000fd5b5050601c54601d546040805180820182526005815264414c49434560d81b602090910152516301e3366760e01b81526001600160a01b03918216600482015260008051602062007e498339815191526024820152670de0b6b3a76400006044820152911692506301e336679150606401600060405180830381600087803b1580156200454057600080fd5b505af115801562004555573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620045a757600080fd5b505af1158015620045bc573d6000803e3d6000fd5b5050601c54601d54604080518082019091526005815264414c49434560d81b6020909101526001600160a01b0391821693506301e3366792501660008051602062007e49833981519152620046176001633b9aca0062005b7e565b601d54601c546040516370a0823160e01b81526001600160a01b0391821660048201526001600160601b0393909316929116906370a0823190602401602060405180830381865afa15801562004671573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004697919062005b48565b620046a3919062005ba8565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015620046f357600080fd5b505af115801562004708573d6000803e3d6000fd5b5050601d54601c546040516370a0823160e01b81526001600160a01b039182166004820152620047da9450911691506370a0823190602401602060405180830381865afa1580156200475e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004784919062005b48565b620047956001633b9aca0062005b7e565b6001600160601b03166040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a330000000000000000000000008152506200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200486557600080fd5b505af11580156200487a573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200493657600080fd5b505af11580156200494b573d6000803e3d6000fd5b5050601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262004a2d93506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620049c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049ef919062005b48565b60006040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a340000000000000000000000008152506200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262004b0e916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004aa5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004acb919062005b48565b60408051808201909152601481527f746573745769746864726177546f6b656e3a3a35000000000000000000000000602082015266038d7ea4c68000906200576f565b60408051808201825260038152622127a160e91b6020918201528151808301909252601482527f746573745769746864726177546f6b656e3a3a360000000000000000000000009082015262002d8c907329d93e4f9fb5004362e31d9828e4c67c1125ce4f3190670de0b6b3a7640000906200576f565b6000601260405162004b979062005816565b60ff9091168152602001604051809103906000f08015801562004bbe573d6000803e3d6000fd5b50601c546040516340c10f1960e01b81526001600160a01b039182166004820152683635c9adc5dea0000060248201529192508216906340c10f1990604401600060405180830381600087803b15801562004c1857600080fd5b505af115801562004c2d573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b15801562004cb957600080fd5b505af115801562004cce573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062004d65919060040162005aac565b600060405180830381600087803b15801562004d8057600080fd5b505af115801562004d95573d6000803e3d6000fd5b5050601c54604051637380f6bd60e01b81526001600160a01b038581166004830152670de0b6b3a764000060248301529091169250637380f6bd9150604401600060405180830381600087803b15801562004def57600080fd5b505af115801562004e04573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004e5657600080fd5b505af115801562004e6b573d6000803e3d6000fd5b5050601c54604051637380f6bd60e01b81526001600160a01b038581166004830152670de0b6b3a764000060248301529091169250637380f6bd9150604401600060405180830381600087803b15801562004ec557600080fd5b505af115801562004eda573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e00000000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b15801562004f5457600080fd5b505af115801562004f69573d6000803e3d6000fd5b5050601c54604051637380f6bd60e01b81526001600160a01b038581166004830152670de0b6b3a764000060248301529091169250637380f6bd915060440162003d2d565b6060601380548060200260200160405190810160405280929190818152602001828054801562000d9e576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d7f575050505050905090565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e498339815191526004820181905260248201526305f5e10090655af3107a400090671bc16d674ec800009060008051602062007e05833981519152906345b5607890604401600060405180830381600087803b158015620050b057600080fd5b505af1158015620050c5573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb392506200515c919060040162005aac565b600060405180830381600087803b1580156200517757600080fd5b505af11580156200518c573d6000803e3d6000fd5b5050601c54601f546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038816602482015291169250630f737c829150604401600060405180830381600087803b158015620051e957600080fd5b505af1158015620051fe573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200525057600080fd5b505af115801562005265573d6000803e3d6000fd5b5050601c54601d546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038816602482015291169250630f737c829150604401600060405180830381600087803b158015620052c257600080fd5b505af1158015620052d7573d6000803e3d6000fd5b5050601c54601e546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038716602482015291169250630f737c829150604401600060405180830381600087803b1580156200533457600080fd5b505af115801562005349573d6000803e3d6000fd5b5050601c54601f546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038616602482015291169250630f737c829150604401600060405180830381600087803b158015620053a657600080fd5b505af1158015620053bb573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b1580156200544757600080fd5b505af11580156200545c573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620054b157600080fd5b505af1158015620054c6573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200551857600080fd5b505af11580156200552d573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200561493506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620055a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620055ce919062005b48565b846001600160601b03166040518060400160405280601781526020017f7465737453657452657175657374416d6f756e743a3a310000000000000000008152506200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e498339815191526004820152620056f5916001600160a01b0316906370a0823190602401602060405180830381865afa15801562005689573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056af919062005b48565b836001600160601b03166040518060400160405280601781526020017f7465737453657452657175657374416d6f756e743a3a320000000000000000008152506200576f565b6040805180820182526005815264414c49434560d81b6020918201528151808301909252601782527f7465737453657452657175657374416d6f756e743a3a33000000000000000000908201526200576a9060008051602062007e4983398151915231906001600160601b038416906200576f565b505050565b6040516388b44c8560e01b815260008051602062007e05833981519152906388b44c8590620057a79086908690869060040162005c3e565b60006040518083038186803b158015620057c057600080fd5b505afa158015620057d5573d6000803e3d6000fd5b50505050505050565b604051632f2769d160e01b815260008051602062007e0583398151915290632f2769d190620057a79086908690869060040162005c68565b610bfd8062005c9783390190565b61154d806200689483390190565b6020808252825182820181905260009190848201906040850190845b81811015620058755783516001600160a01b0316835292840192918401916001016200584e565b50909695505050505050565b6000815180845260005b81811015620058a9576020818501810151868301820152016200588b565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200597f57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200596857605f198985030183526200595584865162005881565b948e01949350918d019160010162005936565b505050978a019794505091880191600101620058f0565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562005a3757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005a215783516001600160e01b0319168252928b019260019290920191908b0190620059f5565b50978a01979550505091870191600101620059b7565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562005a9f57603f1988860301845262005a8c85835162005881565b9450928501929085019060010162005a6d565b5092979650505050505050565b60208152600062005ac1602083018462005881565b9392505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b0381811683821602808216919082811462005b045762005b0462005ac8565b505092915050565b600181811c9082168062005b2157607f821691505b60208210810362005b4257634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121562005b5b57600080fd5b5051919050565b8082018082111562005b785762005b7862005ac8565b92915050565b6001600160601b0382811682821603908082111562005ba15762005ba162005ac8565b5092915050565b8181038181111562005b785762005b7862005ac8565b6001600160a01b0381168114620024a057600080fd5b6000806040838503121562005be857600080fd5b825162005bf58162005bbe565b60208401519092506001600160601b038116811462005c1357600080fd5b809150509250929050565b60006020828403121562005c3157600080fd5b815162005ac18162005bbe565b83815282602082015260606040820152600062005c5f606083018462005881565b95945050505050565b60006001600160a01b0380861683528085166020840152506060604083015262005c5f60608301846200588156fe60a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360806040526040516200154d3803806200154d83398101604081905262000026916200023c565b826001600160a01b0381166200005757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000062816200009f565b506200006e81620000bd565b60408051808201909152600081526001600160601b0383166020820152620000969062000116565b5050506200029a565b600180546001600160a01b0319169055620000ba81620001ec565b50565b610e10811015620001115760405162461bcd60e51b815260206004820152601760248201527f556e73616665207265717565737420636f6f6c646f776e00000000000000000060448201526064016200004e565b600355565b80516001600160a01b0316600090815260076020526040902054156200017f5760405162461bcd60e51b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e0000000000000000000060448201526064016200004e565b60068054600181018255600082815283516020948501516001600160601b0316600160a01b026001600160a01b039091169081177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90930192909255915490825260079092526040902055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156200025257600080fd5b83516001600160a01b03811681146200026a57600080fd5b60208501519093506001600160601b03811681146200028857600080fd5b80925050604084015190509250925092565b6112a380620002aa6000396000f3fe6080604052600436106101635760003560e01c80637380f6bd116100c0578063bc3bc40411610074578063f2fde38b11610059578063f2fde38b14610395578063faf034e3146103b5578063fbedbe62146103d557600080fd5b8063bc3bc40414610357578063e30c39781461037757600080fd5b80638da5cb5b116100a55780638da5cb5b14610303578063a9860c8114610321578063b3ab15fb1461033757600080fd5b80637380f6bd146102ce57806379ba5097146102ee57600080fd5b806329954f4311610117578063570ca735116100fc578063570ca735146102545780636fb9584f1461028c578063715018a6146102b957600080fd5b806329954f4314610215578063338cdca11461023f57600080fd5b80630f737c82116101485780630f737c82146101b557806320cca627146101d557806327c78c42146101f557600080fd5b806301e336671461016f5780630d639e031461019157600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061018f61018a36600461109f565b61041c565b005b34801561019d57600080fd5b506006545b6040519081526020015b60405180910390f35b3480156101c157600080fd5b5061018f6101d03660046110e0565b610455565b3480156101e157600080fd5b5061018f6101f0366004611133565b61046b565b34801561020157600080fd5b5061018f610210366004611150565b610486565b34801561022157600080fd5b5060045461022f9060ff1681565b60405190151581526020016101ac565b34801561024b57600080fd5b5061018f61057f565b34801561026057600080fd5b50600254610274906001600160a01b031681565b6040516001600160a01b0390911681526020016101ac565b34801561029857600080fd5b506101a26102a7366004611150565b60056020526000908152604090205481565b3480156102c557600080fd5b5061018f6106ab565b3480156102da57600080fd5b5061018f6102e93660046110e0565b6106bf565b3480156102fa57600080fd5b5061018f6106f6565b34801561030f57600080fd5b506000546001600160a01b0316610274565b34801561032d57600080fd5b506101a260035481565b34801561034357600080fd5b5061018f610352366004611150565b610737565b34801561036357600080fd5b5061018f61037236600461116d565b610761565b34801561038357600080fd5b506001546001600160a01b0316610274565b3480156103a157600080fd5b5061018f6103b0366004611150565b610772565b3480156103c157600080fd5b5061018f6103d0366004611150565b6107e3565b3480156103e157600080fd5b506103f56103f036600461116d565b61097c565b604080516001600160a01b0390931683526001600160601b039091166020830152016101ac565b6104246109b7565b6001600160a01b0383166104415761043c82826109e4565b505050565b61043c6001600160a01b0384168383610a87565b61045d6109b7565b6104678282610aee565b5050565b6104736109b7565b6004805460ff1916911515919091179055565b6002546001600160a01b031633146104e55760405162461bcd60e51b815260206004820152600d60248201527f4f6e6c79206f70657261746f720000000000000000000000000000000000000060448201526064015b60405180910390fd5b6003546001600160a01b038216600090815260056020526040902054829161050c9161119c565b42101561055b5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b6001600160a01b038216600090815260056020526040902042905561046782610bab565b3233146105ce5760405162461bcd60e51b815260206004820152600860248201527f4f6e6c7920454f4100000000000000000000000000000000000000000000000060448201526064016104dc565b60045460ff166106205760405162461bcd60e51b815260206004820152601860248201527f4469726563742072657175657374206973206c6f636b6564000000000000000060448201526064016104dc565b60035433600081815260056020526040902054909161063e9161119c565b42101561068d5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b3360008181526005602052604090204290556106a890610bab565b50565b6106b36109b7565b6106bd6000610d58565b565b6106c76109b7565b6104676040518060400160405280846001600160a01b03168152602001836001600160601b0316815250610d71565b60015433906001600160a01b0316811461072e5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104dc565b6106a881610d58565b61073f6109b7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6107696109b7565b6106a881610e45565b61077a6109b7565b600180546001600160a01b0383166001600160a01b031990911681179091556107ab6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6107eb6109b7565b6001600160a01b03811660009081526007602052604090205460028110156108555760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b600654600090610867906001906111af565b905080610873836111c2565b9250821461093d57600060068281548110610890576108906111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b031691810191909152600680549192508291859081106108e4576108e46111d9565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b039093169290921791015561092283600161119c565b90516001600160a01b03166000908152600760205260409020555b60068181548110610950576109506111d9565b600091825260208083209091018290556001600160a01b03949094168152600790935250506040812055565b6006818154811061098c57600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b6000546001600160a01b031633146106bd5760405163118cdaa760e01b81523360048201526024016104dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a31576040519150601f19603f3d011682016040523d82523d6000602084013e610a36565b606091505b505090508061043c5760405162461bcd60e51b815260206004820152601660248201527f4e4154495645207472616e73666572206661696c65640000000000000000000060448201526064016104dc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261043c908490610e9c565b6001600160a01b03821660009081526007602052604081205490819003610b575760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b816006610b656001846111af565b81548110610b7557610b756111d9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b03160217905550505050565b60068054906000908183610bc157610bc16111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052915015801590610c18575080602001516001600160601b03164710155b15610c3457610c348382602001516001600160601b03166109e4565b60015b82811015610d525760068181548110610c5257610c526111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052925015801590610d165750602082015182516040516370a0823160e01b81523060048201526001600160601b03909216916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1391906111ef565b10155b15610d425760208201518251610d42916001600160a01b039091169086906001600160601b0316610a87565b610d4b81611208565b9050610c37565b50505050565b600180546001600160a01b03191690556106a881610eff565b80516001600160a01b031660009081526007602052604090205415610dd85760405162461bcd60e51b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e0000000000000000000060448201526064016104dc565b60068054600181018255600082815283516020948501516001600160601b0316600160a01b026001600160a01b039091169081177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90930192909255915490825260079092526040902055565b610e10811015610e975760405162461bcd60e51b815260206004820152601760248201527f556e73616665207265717565737420636f6f6c646f776e00000000000000000060448201526064016104dc565b600355565b6000610eb16001600160a01b03841683610f4f565b90508051600014158015610ed6575080806020019051810190610ed49190611221565b155b1561043c57604051635274afe760e01b81526001600160a01b03841660048201526024016104dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060610f5d83836000610f66565b90505b92915050565b606081471015610f8b5760405163cd78605960e01b81523060048201526024016104dc565b600080856001600160a01b03168486604051610fa7919061123e565b60006040518083038185875af1925050503d8060008114610fe4576040519150601f19603f3d011682016040523d82523d6000602084013e610fe9565b606091505b5091509150610ff9868383611005565b925050505b9392505050565b60608261101a5761101582611061565b610ffe565b815115801561103157506001600160a01b0384163b155b1561105a57604051639996b31560e01b81526001600160a01b03851660048201526024016104dc565b5080610ffe565b8051156110715780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146106a857600080fd5b6000806000606084860312156110b457600080fd5b83356110bf8161108a565b925060208401356110cf8161108a565b929592945050506040919091013590565b600080604083850312156110f357600080fd5b82356110fe8161108a565b915060208301356001600160601b038116811461111a57600080fd5b809150509250929050565b80151581146106a857600080fd5b60006020828403121561114557600080fd5b8135610ffe81611125565b60006020828403121561116257600080fd5b8135610ffe8161108a565b60006020828403121561117f57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f6057610f60611186565b81810381811115610f6057610f60611186565b6000816111d1576111d1611186565b506000190190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561120157600080fd5b5051919050565b60006001820161121a5761121a611186565b5060010190565b60006020828403121561123357600080fd5b8151610ffe81611125565b6000825160005b8181101561125f5760208186018101518583015201611245565b50600092019182525091905056fea2646970667358221220a2ed0a50dc84943f510092e0176197f6463e4f64edf17285e23c42d1f122a6af64736f6c634300081400337465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a310000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a36000000000000000000000000ab1c679b95f02899dcb97b3404e8ac388504a2e77465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a327465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a357465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a347465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a33885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122057641764d244ade5f786f19a02add2d6a7d4b9a9605aff8c3cf1628ba023ae3b64736f6c63430008140033","sourceMap":"221:9483:84:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;324:4:84;283:46;;660:34;;;-1:-1:-1;;;;;;660:34:84;;;221:9483;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001955760003560e01c80636eeb036611620000e9578063b5508aa91162000097578063df91f777116200006e578063df91f77714620002a6578063e20c9f7114620002b0578063fb7cd38914620002ba57600080fd5b8063b5508aa91462000277578063ba414fa61462000281578063db182d13146200029c57600080fd5b80637e9f2b2211620000cc5780637e9f2b22146200024a57806385226c811462000254578063916a17c6146200026d57600080fd5b80636eeb036614620002365780637be0016c146200024057600080fd5b80633e5e3c2311620001475780634e04cea1116200012a5780634e04cea1146200020957806365261a75146200021357806366d9a9a0146200021d57600080fd5b80633e5e3c2314620001f55780633f7286f414620001ff57600080fd5b80631ed7831c116200017c5780631ed7831c14620001b05780632ade388014620001d25780633e119ed314620001eb57600080fd5b806301642bf3146200019a5780630a9254e414620001a6575b600080fd5b620001a4620002c4565b005b620001a462000929565b620001ba62000d44565b604051620001c9919062005832565b60405180910390f35b620001dc62000da8565b604051620001c99190620058c9565b620001a462000ef6565b620001ba62001a80565b620001ba62001ae2565b620001a462001b44565b620001a4620024a3565b6200022762002d8e565b604051620001c991906200598f565b620001a462002e78565b620001a462002f47565b620001a462003695565b6200025e62003d64565b604051620001c9919062005a46565b6200022762003e3e565b6200025e62003f28565b6200028b62004002565b6040519015158152602001620001c9565b620001a4620040bc565b620001a462004b85565b620001ba62004fae565b620001a462005010565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200034c57600080fd5b505af115801562000361573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb39250620003f8919060040162005aac565b600060405180830381600087803b1580156200041357600080fd5b505af115801562000428573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600060048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b1580156200047357600080fd5b505af115801562000488573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620004da57600080fd5b505af1158015620004ef573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600060048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b1580156200053a57600080fd5b505af11580156200054f573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b158015620005db57600080fd5b505af1158015620005f0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601860248201527f4469726563742072657175657374206973206c6f636b65640000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b1580156200066a57600080fd5b505af11580156200067f573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006d457600080fd5b505af1158015620006e9573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200073b57600080fd5b505af115801562000750573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600160048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b1580156200079b57600080fd5b505af1158015620007b0573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b5607891506044015b600060405180830381600087803b1580156200083d57600080fd5b505af115801562000852573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008a757600080fd5b505af1158015620008bc573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200090e57600080fd5b505af115801562000923573d6000803e3d6000fd5b50505050565b6006604051620009399062005816565b60ff9091168152602001604051809103906000f08015801562000960573d6000803e3d6000fd5b50601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055604051600c906200099f9062005816565b60ff9091168152602001604051809103906000f080158015620009c6573d6000803e3d6000fd5b50601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905562000a09670de0b6b3a7640000600a62005ade565b6001600160601b031630670de0b6b3a76400006201518060405162000a2e9062005824565b6001600160a01b0390931683526001600160601b03909116602083015260408201526060016040518091039082f090508015801562000a71573d6000803e3d6000fd5b50601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316908117909155601d54909116906340c10f199062000abc633b9aca00600a62005ade565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b15801562000b0c57600080fd5b505af115801562000b21573d6000803e3d6000fd5b5050601e54601c546001600160a01b0391821693506340c10f1992501662000b5266038d7ea4c68000600a62005ade565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b15801562000ba257600080fd5b505af115801562000bb7573d6000803e3d6000fd5b5050601c54601d54604051637380f6bd60e01b81526001600160a01b039182166004820152633b9aca00602482015291169250637380f6bd9150604401600060405180830381600087803b15801562000c0f57600080fd5b505af115801562000c24573d6000803e3d6000fd5b5050601c54601e54604051637380f6bd60e01b81526001600160a01b03918216600482015266038d7ea4c68000602482015291169250637380f6bd9150604401600060405180830381600087803b15801562000c7f57600080fd5b505af115801562000c94573d6000803e3d6000fd5b5050601c546040516320cca62760e01b8152600160048201526001600160a01b0390911692506320cca6279150602401600060405180830381600087803b15801562000cdf57600080fd5b505af115801562000cf4573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526301e13380600482015260008051602062007e05833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200090e57600080fd5b6060601480548060200260200160405190810160405280929190818152602001828054801562000d9e57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000d7f575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000eed57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000ed557838290600052602060002001805462000e419062005b0c565b80601f016020809104026020016040519081016040528092919081815260200182805462000e6f9062005b0c565b801562000ec05780601f1062000e945761010080835404028352916020019162000ec0565b820191906000526020600020905b81548152906001019060200180831162000ea257829003601f168201915b50505050508152602001906001019062000e1f565b50505050815250508152602001906001019062000dcc565b50505050905090565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562000f7e57600080fd5b505af115801562000f93573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c27b7363c9037b832b930ba37b960991b604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b15801562000ffd57600080fd5b505af115801562001012573d6000803e3d6000fd5b5050601c546040805180820182526005815264414c49434560d81b602090910152516313e3c62160e11b815260008051602062007e4983398151915260048201526001600160a01b0390911692506327c78c429150602401600060405180830381600087803b1580156200108557600080fd5b505af11580156200109a573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620010ec57600080fd5b505af115801562001101573d6000803e3d6000fd5b5050601c54604080518082018252600881526727a822a920aa27a960c11b6020909101525163b3ab15fb60e01b815273523a704056dcd17bcf83bed8b68c59416dac111960048201526001600160a01b03909116925063b3ab15fb9150602401600060405180830381600087803b1580156200117c57600080fd5b505af115801562001191573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062007e0583398151915292506306447d569150602401600060405180830381600087803b1580156200120657600080fd5b505af11580156200121b573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600d60248201526c27b7363c9037b832b930ba37b960991b604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b1580156200128557600080fd5b505af11580156200129a573d6000803e3d6000fd5b5050601c546040516313e3c62160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015290911692506327c78c429150602401600060405180830381600087803b1580156200130657600080fd5b505af11580156200131b573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200136d57600080fd5b505af115801562001382573d6000803e3d6000fd5b5050604080518082018252600881526727a822a920aa27a960c11b602090910152516303223eab60e11b815273523a704056dcd17bcf83bed8b68c59416dac1119600482015260008051602062007e0583398151915292506306447d569150602401600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b5050601c546040805180820182526005815264414c49434560d81b602090910152516313e3c62160e11b815260008051602062007e4983398151915260048201526001600160a01b0390911692506327c78c429150602401600060405180830381600087803b1580156200148757600080fd5b505af11580156200149c573d6000803e3d6000fd5b5050601c5460408051808201825260038152622127a160e91b602090910152516313e3c62160e11b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526001600160a01b0390911692506327c78c429150602401600060405180830381600087803b1580156200151257600080fd5b505af115801562001527573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200157957600080fd5b505af11580156200158e573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200165d93506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562001609573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162f919062005b48565b633b9aca006001600160601b031660405180606001604052806024815260200162007de1602491396200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262001729916001600160a01b0316906370a0823190602401602060405180830381865afa158015620016d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f8919062005b48565b66038d7ea4c680006001600160601b031660405180606001604052806024815260200162007e69602491396200576f565b6040805180820182526005815264414c49434560d81b6020918201528151606081019092526024808352620017839260008051602062007e498339815191523192670de0b6b3a7640000929062007ed5908301396200576f565b601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200184f916001600160a01b0316906370a0823190602401602060405180830381865afa158015620017fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001821919062005b48565b633b9aca006001600160601b031660405180606001604052806024815260200162007eb1602491396200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200191e916001600160a01b0316906370a0823190602401602060405180830381865afa158015620018c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ed919062005b48565b66038d7ea4c680006001600160601b031660405180606001604052806024815260200162007e8d602491396200576f565b60408051808201825260038152622127a160e91b60209182015281516060810190925260248083526200197b927329d93e4f9fb5004362e31d9828e4c67c1125ce4f3192670de0b6b3a7640000929062007e25908301396200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562001a0657600080fd5b505af115801562001a1b573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601160248201527f546f6f206d616e79207265717565737473000000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb3915060640162000822565b6060601680548060200260200160405190810160405280929190818152602001828054801562000d9e576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d7f575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000d9e576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d7f575050505050905090565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e49833981519152600482018190526024820152429060008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562001bce57600080fd5b505af115801562001be3573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001c3857600080fd5b505af115801562001c4d573d6000803e3d6000fd5b5060008051602062007e05833981519152925063e5d6bf02915062001c77905083610e1062005b62565b6040518263ffffffff1660e01b815260040162001c9691815260200190565b600060405180830381600087803b15801562001cb157600080fd5b505af115801562001cc6573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601160248201527f546f6f206d616e79207265717565737473000000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b15801562001d4057600080fd5b505af115801562001d55573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001daa57600080fd5b505af115801562001dbf573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001e1157600080fd5b505af115801562001e26573d6000803e3d6000fd5b5050601c54604051632f0ef10160e21b8152610e1060048201526001600160a01b03909116925063bc3bc4049150602401600060405180830381600087803b15801562001e7257600080fd5b505af115801562001e87573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b15801562001f1357600080fd5b505af115801562001f28573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062001fbf919060040162005aac565b600060405180830381600087803b15801562001fda57600080fd5b505af115801562001fef573d6000803e3d6000fd5b5050601c54604051632f0ef10160e21b8152618ca060048201526001600160a01b03909116925063bc3bc4049150602401600060405180830381600087803b1580156200203b57600080fd5b505af115801562002050573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620020a257600080fd5b505af1158015620020b7573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b1580156200214357600080fd5b505af115801562002158573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620021ad57600080fd5b505af1158015620021c2573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200221457600080fd5b505af115801562002229573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200232093506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620022a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ca919062005b48565b620022db633b9aca00600262005ade565b6001600160601b03166040518060400160405280601981526020017f7465737453657452657175657374436f6f6c646f776e3a3a31000000000000008152506200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262002414916001600160a01b0316906370a0823190602401602060405180830381865afa15801562002395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023bb919062005b48565b620023cf66038d7ea4c68000600262005ade565b6001600160601b03166040518060400160405280601981526020017f7465737453657452657175657374436f6f6c646f776e3a3a32000000000000008152506200576f565b604080518082019091526005815264414c49434560d81b602090910152620024a060008051602062007e49833981519152316200245b670de0b6b3a7640000600262005ade565b6001600160601b03166040518060400160405280601981526020017f7465737453657452657175657374436f6f6c646f776e3a3a33000000000000008152506200576f565b50565b6040805180820182526005815264414c49434560d81b6020918201528151808301909252601582527f7465737457697468647261774e61746976653a3a31000000000000000000000090820152620025109060008051602062007e4983398151915231906000906200576f565b601c54601f546040805180820182526005815264414c49434560d81b602090910152516301e3366760e01b81526001600160a01b03918216600482015260008051602062007e498339815191526024820152670de0b6b3a764000060448201529116906301e3366790606401600060405180830381600087803b1580156200259757600080fd5b505af1158015620025ac573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b6020918201528151808301909252601582527f7465737457697468647261774e61746976653a3a3200000000000000000000009082015262002624925060008051602062007e49833981519152319150670de0b6b3a7640000906200576f565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b158015620026ac57600080fd5b505af1158015620026c1573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062002758919060040162005aac565b600060405180830381600087803b1580156200277357600080fd5b505af115801562002788573d6000803e3d6000fd5b5050601c54601f546040805180820182526005815264414c49434560d81b602090910152516301e3366760e01b81526001600160a01b03918216600482015260008051602062007e498339815191526024820152670de0b6b3a76400006044820152911692506301e336679150606401600060405180830381600087803b1580156200281357600080fd5b505af115801562002828573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200287a57600080fd5b505af11580156200288f573d6000803e3d6000fd5b5050601c54601f54604080518082019091526005815264414c49434560d81b6020909101526001600160a01b0391821693506301e3366792501660008051602062007e49833981519152620028ee6001670de0b6b3a764000062005b7e565b601c5462002910916001600160601b0316906001600160a01b03163162005ba8565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156200296057600080fd5b505af115801562002975573d6000803e3d6000fd5b5050601c54620029e692506001600160a01b0316319050620029a16001670de0b6b3a764000062005b7e565b6001600160601b03166040518060400160405280601581526020017f7465737457697468647261774e61746976653a3a3300000000000000000000008152506200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562002a7157600080fd5b505af115801562002a86573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002adb57600080fd5b505af115801562002af0573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b4257600080fd5b505af115801562002b57573d6000803e3d6000fd5b5050601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262002c3b93506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562002bd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bfb919062005b48565b60408051808201909152601581527f7465737457697468647261774e61746976653a3a3400000000000000000000006020820152633b9aca00906200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262002d1c916001600160a01b0316906370a0823190602401602060405180830381865afa15801562002cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cd9919062005b48565b60408051808201909152601581527f7465737457697468647261774e61746976653a3a350000000000000000000000602082015266038d7ea4c68000906200576f565b60408051808201825260038152622127a160e91b6020918201528151808301909252601582527f7465737457697468647261774e61746976653a3a3600000000000000000000009082015262002d8c907329d93e4f9fb5004362e31d9828e4c67c1125ce4f31906000906200576f565b565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000eed5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002e5f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002e205790505b5050505050815250508152602001906001019062002db2565b601c546040516303223eab60e11b81526001600160a01b03909116600482015260008051602062007e05833981519152906306447d5690602401600060405180830381600087803b15801562002ecd57600080fd5b505af115801562002ee2573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152600860248201527f4f6e6c7920454f41000000000000000000000000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb3915060640162000822565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b15801562002fcf57600080fd5b505af115801562002fe4573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200303957600080fd5b505af11580156200304e573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620030a057600080fd5b505af1158015620030b5573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200319693506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562003130573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003156919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a310000000000006020820152633b9aca00906200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262003274916001600160a01b0316906370a0823190602401602060405180830381865afa1580156200320b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003231919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a32000000000000602082015266038d7ea4c68000906200576f565b6040805180820182526005815264414c49434560d81b6020918201528151808301909252601a82527f7465737452657175657374466175636574546f6b656e733a3a3300000000000090820152620032e89060008051602062007e498339815191523190670de0b6b3a7640000906200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200337357600080fd5b505af115801562003388573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620033dd57600080fd5b505af1158015620033f2573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200344457600080fd5b505af115801562003459573d6000803e3d6000fd5b5050601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200353d93506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620034d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034fd919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a340000000000006020820152633b9aca00906200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201526200361e916001600160a01b0316906370a0823190602401602060405180830381865afa158015620035b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035db919062005b48565b60408051808201909152601a81527f7465737452657175657374466175636574546f6b656e733a3a35000000000000602082015266038d7ea4c68000906200576f565b60408051808201825260038152622127a160e91b6020918201528151808301909252601a82527f7465737452657175657374466175636574546f6b656e733a3a360000000000009082015262002d8c907329d93e4f9fb5004362e31d9828e4c67c1125ce4f3190670de0b6b3a7640000906200576f565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200371d57600080fd5b505af115801562003732573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb39250620037c9919060040162005aac565b600060405180830381600087803b158015620037e457600080fd5b505af1158015620037f9573d6000803e3d6000fd5b5050601c5460405163faf034e360e01b8152600160048201526001600160a01b03909116925063faf034e39150602401600060405180830381600087803b1580156200384457600080fd5b505af115801562003859573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620038ab57600080fd5b505af1158015620038c0573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e0000000000000000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b1580156200393a57600080fd5b505af11580156200394f573d6000803e3d6000fd5b5050601c54601f5460405163faf034e360e01b81526001600160a01b0391821660048201529116925063faf034e39150602401600060405180830381600087803b1580156200399d57600080fd5b505af1158015620039b2573d6000803e3d6000fd5b5050601c54601d5460405163faf034e360e01b81526001600160a01b0391821660048201529116925063faf034e39150602401600060405180830381600087803b15801562003a0057600080fd5b505af115801562003a15573d6000803e3d6000fd5b5050601c54604051637df6df3160e11b815260006004820181905293506001600160a01b03909116915063fbedbe62906024016040805180830381865afa15801562003a65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a8b919062005bd4565b50601f5460408051808201909152601281527f7465737452656d6f7665546f6b656e3a3a310000000000000000000000000000602082015291925062003add9183916001600160a01b031690620057de565b601c54604051637df6df3160e11b8152600160048201526001600160a01b039091169063fbedbe62906024016040805180830381865afa15801562003b26573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b4c919062005bd4565b50601e5460408051808201909152601281527f7465737452656d6f7665546f6b656e3a3a320000000000000000000000000000602082015291925062003b9e9183916001600160a01b031690620057de565b601c5460408051638da5cb5b60e01b8152905162003c6e926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801562003beb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c11919062005c1e565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601281526020017f7465737452656d6f7665546f6b656e3a3a330000000000000000000000000000815250620057de565b60405163f28dceb360e01b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e0000000000000000000000000000604482015260008051602062007e058339815191529063f28dceb390606401600060405180830381600087803b15801562003ce457600080fd5b505af115801562003cf9573d6000803e3d6000fd5b5050601c54601d5460405163faf034e360e01b81526001600160a01b0391821660048201529116925063faf034e391506024015b600060405180830381600087803b15801562003d4857600080fd5b505af115801562003d5d573d6000803e3d6000fd5b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000eed57838290600052602060002001805462003daa9062005b0c565b80601f016020809104026020016040519081016040528092919081815260200182805462003dd89062005b0c565b801562003e295780601f1062003dfd5761010080835404028352916020019162003e29565b820191906000526020600020905b81548152906001019060200180831162003e0b57829003601f168201915b50505050508152602001906001019062003d88565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000eed5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562003f0f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162003ed05790505b5050505050815250508152602001906001019062003e62565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000eed57838290600052602060002001805462003f6e9062005b0c565b80601f016020809104026020016040519081016040528092919081815260200182805462003f9c9062005b0c565b801562003fed5780601f1062003fc15761010080835404028352916020019162003fed565b820191906000526020600020905b81548152906001019060200180831162003fcf57829003601f168201915b50505050508152602001906001019062003f4c565b60075460009060ff16156200401b575060075460ff1690565b604051630667f9d760e41b815260008051602062007e05833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200408f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040b5919062005b48565b1415905090565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e49833981519152600482015262004195916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004157919062005b48565b60006040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a310000000000000000000000008152506200576f565b601c54601e54604080518082019091526005815264414c49434560d81b6020909101526001600160a01b03918216916301e33667911660008051602062007e49833981519152620041ec633b9aca00600262005ade565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b03166044820152606401600060405180830381600087803b1580156200424557600080fd5b505af11580156200425a573d6000803e3d6000fd5b5050601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200435193506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620042d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042fb919062005b48565b6200430c633b9aca00600262005ade565b6001600160601b03166040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a320000000000000000000000008152506200576f565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b158015620043d957600080fd5b505af1158015620043ee573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062004485919060040162005aac565b600060405180830381600087803b158015620044a057600080fd5b505af1158015620044b5573d6000803e3d6000fd5b5050601c54601d546040805180820182526005815264414c49434560d81b602090910152516301e3366760e01b81526001600160a01b03918216600482015260008051602062007e498339815191526024820152670de0b6b3a76400006044820152911692506301e336679150606401600060405180830381600087803b1580156200454057600080fd5b505af115801562004555573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620045a757600080fd5b505af1158015620045bc573d6000803e3d6000fd5b5050601c54601d54604080518082019091526005815264414c49434560d81b6020909101526001600160a01b0391821693506301e3366792501660008051602062007e49833981519152620046176001633b9aca0062005b7e565b601d54601c546040516370a0823160e01b81526001600160a01b0391821660048201526001600160601b0393909316929116906370a0823190602401602060405180830381865afa15801562004671573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004697919062005b48565b620046a3919062005ba8565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015620046f357600080fd5b505af115801562004708573d6000803e3d6000fd5b5050601d54601c546040516370a0823160e01b81526001600160a01b039182166004820152620047da9450911691506370a0823190602401602060405180830381865afa1580156200475e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004784919062005b48565b620047956001633b9aca0062005b7e565b6001600160601b03166040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a330000000000000000000000008152506200576f565b6040805180820182526003808252622127a160e91b602092830181905283518085018552918252910152516308b6ac0f60e31b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f60048201819052602482015260008051602062007e05833981519152906345b5607890604401600060405180830381600087803b1580156200486557600080fd5b505af11580156200487a573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620048cf57600080fd5b505af1158015620048e4573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200493657600080fd5b505af11580156200494b573d6000803e3d6000fd5b5050601d5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262004a2d93506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620049c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049ef919062005b48565b60006040518060400160405280601481526020017f746573745769746864726177546f6b656e3a3a340000000000000000000000008152506200576f565b601e5460408051808201825260038152622127a160e91b602090910152516370a0823160e01b81527329d93e4f9fb5004362e31d9828e4c67c1125ce4f600482015262004b0e916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004aa5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004acb919062005b48565b60408051808201909152601481527f746573745769746864726177546f6b656e3a3a35000000000000000000000000602082015266038d7ea4c68000906200576f565b60408051808201825260038152622127a160e91b6020918201528151808301909252601482527f746573745769746864726177546f6b656e3a3a360000000000000000000000009082015262002d8c907329d93e4f9fb5004362e31d9828e4c67c1125ce4f3190670de0b6b3a7640000906200576f565b6000601260405162004b979062005816565b60ff9091168152602001604051809103906000f08015801562004bbe573d6000803e3d6000fd5b50601c546040516340c10f1960e01b81526001600160a01b039182166004820152683635c9adc5dea0000060248201529192508216906340c10f1990604401600060405180830381600087803b15801562004c1857600080fd5b505af115801562004c2d573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b15801562004cb957600080fd5b505af115801562004cce573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb3925062004d65919060040162005aac565b600060405180830381600087803b15801562004d8057600080fd5b505af115801562004d95573d6000803e3d6000fd5b5050601c54604051637380f6bd60e01b81526001600160a01b038581166004830152670de0b6b3a764000060248301529091169250637380f6bd9150604401600060405180830381600087803b15801562004def57600080fd5b505af115801562004e04573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004e5657600080fd5b505af115801562004e6b573d6000803e3d6000fd5b5050601c54604051637380f6bd60e01b81526001600160a01b038581166004830152670de0b6b3a764000060248301529091169250637380f6bd9150604401600060405180830381600087803b15801562004ec557600080fd5b505af115801562004eda573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e00000000000000000000604482015260008051602062007e05833981519152925063f28dceb39150606401600060405180830381600087803b15801562004f5457600080fd5b505af115801562004f69573d6000803e3d6000fd5b5050601c54604051637380f6bd60e01b81526001600160a01b038581166004830152670de0b6b3a764000060248301529091169250637380f6bd915060440162003d2d565b6060601380548060200260200160405190810160405280929190818152602001828054801562000d9e576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d7f575050505050905090565b604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e498339815191526004820181905260248201526305f5e10090655af3107a400090671bc16d674ec800009060008051602062007e05833981519152906345b5607890604401600060405180830381600087803b158015620050b057600080fd5b505af1158015620050c5573d6000803e3d6000fd5b50506040805180820182526005815264414c49434560d81b602091820152815160008051602062007e49833981519152602480830191909152835180830390910181526044909101835290810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062007e05833981519152935063f28dceb392506200515c919060040162005aac565b600060405180830381600087803b1580156200517757600080fd5b505af11580156200518c573d6000803e3d6000fd5b5050601c54601f546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038816602482015291169250630f737c829150604401600060405180830381600087803b158015620051e957600080fd5b505af1158015620051fe573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200525057600080fd5b505af115801562005265573d6000803e3d6000fd5b5050601c54601d546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038816602482015291169250630f737c829150604401600060405180830381600087803b158015620052c257600080fd5b505af1158015620052d7573d6000803e3d6000fd5b5050601c54601e546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038716602482015291169250630f737c829150604401600060405180830381600087803b1580156200533457600080fd5b505af115801562005349573d6000803e3d6000fd5b5050601c54601f546040516307b9be4160e11b81526001600160a01b0391821660048201526001600160601b038616602482015291169250630f737c829150604401600060405180830381600087803b158015620053a657600080fd5b505af1158015620053bb573d6000803e3d6000fd5b5050604080518082018252600580825264414c49434560d81b602092830181905283518085018552918252910152516308b6ac0f60e31b815260008051602062007e4983398151915260048201819052602482015260008051602062007e0583398151915292506345b560789150604401600060405180830381600087803b1580156200544757600080fd5b505af11580156200545c573d6000803e3d6000fd5b50505050601c60009054906101000a90046001600160a01b03166001600160a01b031663338cdca16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620054b157600080fd5b505af1158015620054c6573d6000803e3d6000fd5b5050505060008051602062007ef983398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200551857600080fd5b505af11580156200552d573d6000803e3d6000fd5b5050601d546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e4983398151915260048201526200561493506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015620055a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620055ce919062005b48565b846001600160601b03166040518060400160405280601781526020017f7465737453657452657175657374416d6f756e743a3a310000000000000000008152506200576f565b601e546040805180820182526005815264414c49434560d81b602090910152516370a0823160e01b815260008051602062007e498339815191526004820152620056f5916001600160a01b0316906370a0823190602401602060405180830381865afa15801562005689573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056af919062005b48565b836001600160601b03166040518060400160405280601781526020017f7465737453657452657175657374416d6f756e743a3a320000000000000000008152506200576f565b6040805180820182526005815264414c49434560d81b6020918201528151808301909252601782527f7465737453657452657175657374416d6f756e743a3a33000000000000000000908201526200576a9060008051602062007e4983398151915231906001600160601b038416906200576f565b505050565b6040516388b44c8560e01b815260008051602062007e05833981519152906388b44c8590620057a79086908690869060040162005c3e565b60006040518083038186803b158015620057c057600080fd5b505afa158015620057d5573d6000803e3d6000fd5b50505050505050565b604051632f2769d160e01b815260008051602062007e0583398151915290632f2769d190620057a79086908690869060040162005c68565b610bfd8062005c9783390190565b61154d806200689483390190565b6020808252825182820181905260009190848201906040850190845b81811015620058755783516001600160a01b0316835292840192918401916001016200584e565b50909695505050505050565b6000815180845260005b81811015620058a9576020818501810151868301820152016200588b565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200597f57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200596857605f198985030183526200595584865162005881565b948e01949350918d019160010162005936565b505050978a019794505091880191600101620058f0565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562005a3757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562005a215783516001600160e01b0319168252928b019260019290920191908b0190620059f5565b50978a01979550505091870191600101620059b7565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562005a9f57603f1988860301845262005a8c85835162005881565b9450928501929085019060010162005a6d565b5092979650505050505050565b60208152600062005ac1602083018462005881565b9392505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b0381811683821602808216919082811462005b045762005b0462005ac8565b505092915050565b600181811c9082168062005b2157607f821691505b60208210810362005b4257634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121562005b5b57600080fd5b5051919050565b8082018082111562005b785762005b7862005ac8565b92915050565b6001600160601b0382811682821603908082111562005ba15762005ba162005ac8565b5092915050565b8181038181111562005b785762005b7862005ac8565b6001600160a01b0381168114620024a057600080fd5b6000806040838503121562005be857600080fd5b825162005bf58162005bbe565b60208401519092506001600160601b038116811462005c1357600080fd5b809150509250929050565b60006020828403121562005c3157600080fd5b815162005ac18162005bbe565b83815282602082015260606040820152600062005c5f606083018462005881565b95945050505050565b60006001600160a01b0380861683528085166020840152506060604083015262005c5f60608301846200588156fe60a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360806040526040516200154d3803806200154d83398101604081905262000026916200023c565b826001600160a01b0381166200005757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000062816200009f565b506200006e81620000bd565b60408051808201909152600081526001600160601b0383166020820152620000969062000116565b5050506200029a565b600180546001600160a01b0319169055620000ba81620001ec565b50565b610e10811015620001115760405162461bcd60e51b815260206004820152601760248201527f556e73616665207265717565737420636f6f6c646f776e00000000000000000060448201526064016200004e565b600355565b80516001600160a01b0316600090815260076020526040902054156200017f5760405162461bcd60e51b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e0000000000000000000060448201526064016200004e565b60068054600181018255600082815283516020948501516001600160601b0316600160a01b026001600160a01b039091169081177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90930192909255915490825260079092526040902055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156200025257600080fd5b83516001600160a01b03811681146200026a57600080fd5b60208501519093506001600160601b03811681146200028857600080fd5b80925050604084015190509250925092565b6112a380620002aa6000396000f3fe6080604052600436106101635760003560e01c80637380f6bd116100c0578063bc3bc40411610074578063f2fde38b11610059578063f2fde38b14610395578063faf034e3146103b5578063fbedbe62146103d557600080fd5b8063bc3bc40414610357578063e30c39781461037757600080fd5b80638da5cb5b116100a55780638da5cb5b14610303578063a9860c8114610321578063b3ab15fb1461033757600080fd5b80637380f6bd146102ce57806379ba5097146102ee57600080fd5b806329954f4311610117578063570ca735116100fc578063570ca735146102545780636fb9584f1461028c578063715018a6146102b957600080fd5b806329954f4314610215578063338cdca11461023f57600080fd5b80630f737c82116101485780630f737c82146101b557806320cca627146101d557806327c78c42146101f557600080fd5b806301e336671461016f5780630d639e031461019157600080fd5b3661016a57005b600080fd5b34801561017b57600080fd5b5061018f61018a36600461109f565b61041c565b005b34801561019d57600080fd5b506006545b6040519081526020015b60405180910390f35b3480156101c157600080fd5b5061018f6101d03660046110e0565b610455565b3480156101e157600080fd5b5061018f6101f0366004611133565b61046b565b34801561020157600080fd5b5061018f610210366004611150565b610486565b34801561022157600080fd5b5060045461022f9060ff1681565b60405190151581526020016101ac565b34801561024b57600080fd5b5061018f61057f565b34801561026057600080fd5b50600254610274906001600160a01b031681565b6040516001600160a01b0390911681526020016101ac565b34801561029857600080fd5b506101a26102a7366004611150565b60056020526000908152604090205481565b3480156102c557600080fd5b5061018f6106ab565b3480156102da57600080fd5b5061018f6102e93660046110e0565b6106bf565b3480156102fa57600080fd5b5061018f6106f6565b34801561030f57600080fd5b506000546001600160a01b0316610274565b34801561032d57600080fd5b506101a260035481565b34801561034357600080fd5b5061018f610352366004611150565b610737565b34801561036357600080fd5b5061018f61037236600461116d565b610761565b34801561038357600080fd5b506001546001600160a01b0316610274565b3480156103a157600080fd5b5061018f6103b0366004611150565b610772565b3480156103c157600080fd5b5061018f6103d0366004611150565b6107e3565b3480156103e157600080fd5b506103f56103f036600461116d565b61097c565b604080516001600160a01b0390931683526001600160601b039091166020830152016101ac565b6104246109b7565b6001600160a01b0383166104415761043c82826109e4565b505050565b61043c6001600160a01b0384168383610a87565b61045d6109b7565b6104678282610aee565b5050565b6104736109b7565b6004805460ff1916911515919091179055565b6002546001600160a01b031633146104e55760405162461bcd60e51b815260206004820152600d60248201527f4f6e6c79206f70657261746f720000000000000000000000000000000000000060448201526064015b60405180910390fd5b6003546001600160a01b038216600090815260056020526040902054829161050c9161119c565b42101561055b5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b6001600160a01b038216600090815260056020526040902042905561046782610bab565b3233146105ce5760405162461bcd60e51b815260206004820152600860248201527f4f6e6c7920454f4100000000000000000000000000000000000000000000000060448201526064016104dc565b60045460ff166106205760405162461bcd60e51b815260206004820152601860248201527f4469726563742072657175657374206973206c6f636b6564000000000000000060448201526064016104dc565b60035433600081815260056020526040902054909161063e9161119c565b42101561068d5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e7920726571756573747300000000000000000000000000000060448201526064016104dc565b3360008181526005602052604090204290556106a890610bab565b50565b6106b36109b7565b6106bd6000610d58565b565b6106c76109b7565b6104676040518060400160405280846001600160a01b03168152602001836001600160601b0316815250610d71565b60015433906001600160a01b0316811461072e5760405163118cdaa760e01b81526001600160a01b03821660048201526024016104dc565b6106a881610d58565b61073f6109b7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6107696109b7565b6106a881610e45565b61077a6109b7565b600180546001600160a01b0383166001600160a01b031990911681179091556107ab6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6107eb6109b7565b6001600160a01b03811660009081526007602052604090205460028110156108555760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b600654600090610867906001906111af565b905080610873836111c2565b9250821461093d57600060068281548110610890576108906111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b031691810191909152600680549192508291859081106108e4576108e46111d9565b6000918252602091829020835193909201516001600160601b0316600160a01b026001600160a01b039093169290921791015561092283600161119c565b90516001600160a01b03166000908152600760205260409020555b60068181548110610950576109506111d9565b600091825260208083209091018290556001600160a01b03949094168152600790935250506040812055565b6006818154811061098c57600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b6000546001600160a01b031633146106bd5760405163118cdaa760e01b81523360048201526024016104dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a31576040519150601f19603f3d011682016040523d82523d6000602084013e610a36565b606091505b505090508061043c5760405162461bcd60e51b815260206004820152601660248201527f4e4154495645207472616e73666572206661696c65640000000000000000000060448201526064016104dc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261043c908490610e9c565b6001600160a01b03821660009081526007602052604081205490819003610b575760405162461bcd60e51b815260206004820152601260248201527f4e6f7420612066617563657420746f6b656e000000000000000000000000000060448201526064016104dc565b816006610b656001846111af565b81548110610b7557610b756111d9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b03160217905550505050565b60068054906000908183610bc157610bc16111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052915015801590610c18575080602001516001600160601b03164710155b15610c3457610c348382602001516001600160601b03166109e4565b60015b82811015610d525760068181548110610c5257610c526111d9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101829052925015801590610d165750602082015182516040516370a0823160e01b81523060048201526001600160601b03909216916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1391906111ef565b10155b15610d425760208201518251610d42916001600160a01b039091169086906001600160601b0316610a87565b610d4b81611208565b9050610c37565b50505050565b600180546001600160a01b03191690556106a881610eff565b80516001600160a01b031660009081526007602052604090205415610dd85760405162461bcd60e51b815260206004820152601660248201527f416c726561647920612066617563657420746f6b656e0000000000000000000060448201526064016104dc565b60068054600181018255600082815283516020948501516001600160601b0316600160a01b026001600160a01b039091169081177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90930192909255915490825260079092526040902055565b610e10811015610e975760405162461bcd60e51b815260206004820152601760248201527f556e73616665207265717565737420636f6f6c646f776e00000000000000000060448201526064016104dc565b600355565b6000610eb16001600160a01b03841683610f4f565b90508051600014158015610ed6575080806020019051810190610ed49190611221565b155b1561043c57604051635274afe760e01b81526001600160a01b03841660048201526024016104dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060610f5d83836000610f66565b90505b92915050565b606081471015610f8b5760405163cd78605960e01b81523060048201526024016104dc565b600080856001600160a01b03168486604051610fa7919061123e565b60006040518083038185875af1925050503d8060008114610fe4576040519150601f19603f3d011682016040523d82523d6000602084013e610fe9565b606091505b5091509150610ff9868383611005565b925050505b9392505050565b60608261101a5761101582611061565b610ffe565b815115801561103157506001600160a01b0384163b155b1561105a57604051639996b31560e01b81526001600160a01b03851660048201526024016104dc565b5080610ffe565b8051156110715780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146106a857600080fd5b6000806000606084860312156110b457600080fd5b83356110bf8161108a565b925060208401356110cf8161108a565b929592945050506040919091013590565b600080604083850312156110f357600080fd5b82356110fe8161108a565b915060208301356001600160601b038116811461111a57600080fd5b809150509250929050565b80151581146106a857600080fd5b60006020828403121561114557600080fd5b8135610ffe81611125565b60006020828403121561116257600080fd5b8135610ffe8161108a565b60006020828403121561117f57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f6057610f60611186565b81810381811115610f6057610f60611186565b6000816111d1576111d1611186565b506000190190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561120157600080fd5b5051919050565b60006001820161121a5761121a611186565b5060010190565b60006020828403121561123357600080fd5b8151610ffe81611125565b6000825160005b8181101561125f5760208186018101518583015201611245565b50600092019182525091905056fea2646970667358221220a2ed0a50dc84943f510092e0176197f6463e4f64edf17285e23c42d1f122a6af64736f6c634300081400337465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a310000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a36000000000000000000000000ab1c679b95f02899dcb97b3404e8ac388504a2e77465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a327465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a357465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a347465737452657175657374466175636574546f6b656e7342794f70657261746f723a3a33885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122057641764d244ade5f786f19a02add2d6a7d4b9a9605aff8c3cf1628ba023ae3b64736f6c63430008140033","sourceMap":"221:9483:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:561;;;:::i;:::-;;901:617;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;4414:1204:84:-;;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;8760:942:84:-;;;:::i;6637:993::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;1524:173:84:-;;;:::i;3648:760::-;;;:::i;2795:847::-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5466:14:127;;5459:22;5441:41;;5429:2;5414:18;1243:204:1;5301:187:127;7636:1118:84;;;:::i;2270:519::-;;;:::i;2304:142:5:-;;;:::i;5624:1007:84:-;;;:::i;1703:561::-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;1749:27;-1:-1:-1;;;1749:27:84;;-1:-1:-1;;;;;;;;;;;1749:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;1749:13:84;;;5640:18:127;;1749:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;1802:74;;-1:-1:-1;;;;;;;;;;;1802:74:84;;;;5971::127;;;;1802::84;;;;;;;;;;5944:18:127;;;;1802:74:84;;;;;;;-1:-1:-1;;;;;1802:74:84;-1:-1:-1;;;1802:74:84;;;1786:91;;-1:-1:-1;;;1786:91:84;;-1:-1:-1;;;;;;;;;;;1786:15:84;-1:-1:-1;1786:15:84;;-1:-1:-1;1786:91:84;;1802:74;1786:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1887:6:84;;:32;;-1:-1:-1;;;1887:32:84;;:6;:32;;;5441:41:127;-1:-1:-1;;;;;1887:6:84;;;;-1:-1:-1;1887:25:84;;-1:-1:-1;5414:18:127;;1887:32:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;1929:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1954:6:84;;:32;;-1:-1:-1;;;1954:32:84;;:6;:32;;;5441:41:127;-1:-1:-1;;;;;1954:6:84;;;;-1:-1:-1;1954:25:84;;-1:-1:-1;5414:18:127;;1954:32:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;1997:27;-1:-1:-1;;;1997:27:84;;-1:-1:-1;;;;;;;;;;;1997:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;1997:13:84;-1:-1:-1;1997:13:84;;-1:-1:-1;5640:18:127;;1997:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2034:43:84;;-1:-1:-1;;;2034:43:84;;6480:2:127;2034:43:84;;;6462:21:127;6519:2;6499:18;;;6492:30;6558:26;6538:18;;;6531:54;-1:-1:-1;;;;;;;;;;;2034:15:84;-1:-1:-1;2034:15:84;;-1:-1:-1;6602:18:127;;2034:43:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:6;;;;;;;;;-1:-1:-1;;;;;2087:6:84;-1:-1:-1;;;;;2087:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;2113:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2138:6:84;;:31;;-1:-1:-1;;;2138:31:84;;:6;:31;;;5441:41:127;-1:-1:-1;;;;;2138:6:84;;;;-1:-1:-1;2138:25:84;;-1:-1:-1;5414:18:127;;2138:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;2180:27;-1:-1:-1;;;2180:27:84;;-1:-1:-1;;;;;;;;;;;2180:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;2180:13:84;-1:-1:-1;2180:13:84;;-1:-1:-1;5640:18:127;;2180:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2217:6;;;;;;;;;-1:-1:-1;;;;;2217:6:84;-1:-1:-1;;;;;2217:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;2243:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1703:561::o;901:617::-;958:1;944:16;;;;;:::i;:::-;6813:4:127;6801:17;;;6783:36;;6771:2;6756:18;944:16:84;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;935:6:84;:25;;-1:-1:-1;;935:25:84;-1:-1:-1;;;;;935:25:84;;;;;;;;;;980:17;;994:2;;980:17;;;:::i;:::-;6813:4:127;6801:17;;;6783:36;;6771:2;6756:18;980:17:84;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;970:7:84;:27;;-1:-1:-1;;970:27:84;-1:-1:-1;;;;;970:27:84;;;;;;;;;;1035:23;840:4;1035:2;:23;:::i;:::-;-1:-1:-1;;;;;1017:95:84;1068:4;840;886:8;1017:95;;;;;:::i;:::-;-1:-1:-1;;;;;7650:55:127;;;7632:74;;-1:-1:-1;;;;;7742:39:127;;;7737:2;7722:18;;7715:67;7813:2;7798:18;;7791:34;7620:2;7605:18;1017:95:84;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1008:6:84;:104;;-1:-1:-1;;1008:104:84;-1:-1:-1;;;;;1008:104:84;;;;;;;;;1123:6;;;;;;:11;;1152:23;738:7;1152:2;:23;:::i;:::-;1123:53;;-1:-1:-1;;;;;;1123:53:84;;;;;;;-1:-1:-1;;;;;8027:55:127;;;1123:53:84;;;8009:74:127;-1:-1:-1;;;;;8119:39:127;8099:18;;;8092:67;7982:18;;1123:53:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1186:7:84;;1207:6;;-1:-1:-1;;;;;1186:7:84;;;;-1:-1:-1;1186:12:84;;-1:-1:-1;1207:6:84;1216:24;789:8;1216:2;:24;:::i;:::-;1186:55;;-1:-1:-1;;;;;;1186:55:84;;;;;;;-1:-1:-1;;;;;8027:55:127;;;1186::84;;;8009:74:127;-1:-1:-1;;;;;8119:39:127;8099:18;;;8092:67;7982:18;;1186:55:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1252:6:84;;1281;;1252:57;;-1:-1:-1;;;1252:57:84;;-1:-1:-1;;;;;1281:6:84;;;1252:57;;;8009:74:127;738:7:84;8099:18:127;;;8092:67;1252:6:84;;;-1:-1:-1;1252:21:84;;-1:-1:-1;7982:18:127;;1252:57:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1319:6:84;;1348:7;;1319:59;;-1:-1:-1;;;1319:59:84;;-1:-1:-1;;;;;1348:7:84;;;1319:59;;;8009:74:127;789:8:84;8099:18:127;;;8092:67;1319:6:84;;;-1:-1:-1;1319:21:84;;-1:-1:-1;7982:18:127;;1319:59:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1389:6:84;;:31;;-1:-1:-1;;;1389:31:84;;:6;:31;;;5441:41:127;-1:-1:-1;;;;;1389:6:84;;;;-1:-1:-1;1389:25:84;;-1:-1:-1;5414:18:127;;1389:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1494:17:84;;-1:-1:-1;;;1494:17:84;;1502:8;1494:17;;;8680:25:127;-1:-1:-1;;;;;;;;;;;1494:7:84;-1:-1:-1;1494:7:84;;-1:-1:-1;8653:18:127;;1494:17:84;;;;;;;;;;;;;;;;;;;2452:134:5;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;4414:1204:84:-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;4478:27;-1:-1:-1;;;4478:27:84;;-1:-1:-1;;;;;;;;;;;4478:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;4478:13:84;;;5640:18:127;;4478:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4515:32:84;;-1:-1:-1;;;4515:32:84;;9302:2:127;4515:32:84;;;9284:21:127;9341:2;9321:18;;;9314:30;-1:-1:-1;;;9360:18:127;;;9353:43;-1:-1:-1;;;;;;;;;;;4515:15:84;-1:-1:-1;4515:15:84;;-1:-1:-1;9413:18:127;;4515:32:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4557:6:84;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;4557:21;-1:-1:-1;;;4557:21:84;;-1:-1:-1;;;;;;;;;;;4557:21:84;;;5971:74:127;-1:-1:-1;;;;;4557:6:84;;;;-1:-1:-1;4557:14:84;;-1:-1:-1;5944:18:127;;4557:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;4588:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4613:6:84;;586:17;;;;;;;;;;;-1:-1:-1;;;586:17:84;;;;;4613:28;-1:-1:-1;;;4613:28:84;;552:55;4613:28;;;5971:74:127;-1:-1:-1;;;;;4613:6:84;;;;-1:-1:-1;4613:18:84;;-1:-1:-1;5944:18:127;;4613:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4652:18:84;;-1:-1:-1;;;4652:18:84;;-1:-1:-1;;;;;4666:3:84;5989:55:127;4652:18:84;;;5971:74:127;-1:-1:-1;;;;;;;;;;;4652:13:84;-1:-1:-1;4652:13:84;;-1:-1:-1;5944:18:127;;4652::84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4680:32:84;;-1:-1:-1;;;4680:32:84;;9302:2:127;4680:32:84;;;9284:21:127;9341:2;9321:18;;;9314:30;-1:-1:-1;;;9360:18:127;;;9353:43;-1:-1:-1;;;;;;;;;;;4680:15:84;-1:-1:-1;4680:15:84;;-1:-1:-1;9413:18:127;;4680:32:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4722:6:84;;:19;;-1:-1:-1;;;4722:19:84;;-1:-1:-1;;;;;4737:3:84;5989:55:127;;4722:19:84;;;5971:74:127;4722:6:84;;;;-1:-1:-1;4722:14:84;;-1:-1:-1;5944:18:127;;4722:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;4751:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;586:17:84;;;;;;;;;;;-1:-1:-1;;;586:17:84;;;;;4776:23;-1:-1:-1;;;4776:23:84;;552:55;4776:23;;;5971:74:127;-1:-1:-1;;;;;;;;;;;4776:13:84;-1:-1:-1;4776:13:84;;-1:-1:-1;5944:18:127;;4776:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4809:6:84;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;4809:21;-1:-1:-1;;;4809:21:84;;-1:-1:-1;;;;;;;;;;;4809:21:84;;;5971:74:127;-1:-1:-1;;;;;4809:6:84;;;;-1:-1:-1;4809:14:84;;-1:-1:-1;5944:18:127;;4809:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4840:6:84;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;4840:19;-1:-1:-1;;;4840:19:84;;459:50;4840:19;;;5971:74:127;-1:-1:-1;;;;;4840:6:84;;;;-1:-1:-1;4840:14:84;;-1:-1:-1;5944:18:127;;4840:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;4869:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4903:6:84;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;4903:23;-1:-1:-1;;;4903:23:84;;-1:-1:-1;;;;;;;;;;;4903:23:84;;;5971:74:127;4894:93:84;;-1:-1:-1;;;;;;4903:6:84;;;;-1:-1:-1;4903:16:84;;5944:18:127;;4903:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;738:7;-1:-1:-1;;;;;4894:93:84;;;;;;;;;;;;;;;;;;:8;:93::i;:::-;5006:7;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;5006:24;-1:-1:-1;;;5006:24:84;;-1:-1:-1;;;;;;;;;;;5006:24:84;;;5971:74:127;4997:95:84;;-1:-1:-1;;;;;5006:7:84;;:17;;5944:18:127;;5006:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;789:8;-1:-1:-1;;;;;4997:95:84;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;5102:83;;369:52;5102:83;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5111:13:84;;840:4;;5102:83;;;;;;:8;:83::i;:::-;5205:6;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;5205:21;-1:-1:-1;;;5205:21:84;;459:50;5205:21;;;5971:74:127;5196:91:84;;-1:-1:-1;;;;;5205:6:84;;:16;;5944:18:127;;5205:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;738:7;-1:-1:-1;;;;;5196:91:84;;;;;;;;;;;;;;;;;;:8;:91::i;:::-;5306:7;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;5306:22;-1:-1:-1;;;5306:22:84;;459:50;5306:22;;;5971:74:127;5297:93:84;;-1:-1:-1;;;;;5306:7:84;;:17;;5944:18:127;;5306:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;789:8;-1:-1:-1;;;;;5297:93:84;;;;;;;;;;;;;;;;;;:8;:93::i;:::-;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;5400:81;;459:50;5400:81;;;;;;;;;;;459:50;5409:11;;840:4;;5400:81;;;;;;:8;:81::i;:::-;493:12;;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;;;;;;;;;;;;;;;;5492:23;-1:-1:-1;;;5492:23:84;;459:50;5492:23;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;5492:13:84;;;5640:18:127;;5492:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5525:36:84;;-1:-1:-1;;;5525:36:84;;9832:2:127;5525:36:84;;;9814:21:127;9871:2;9851:18;;;9844:30;9910:19;9890:18;;;9883:47;-1:-1:-1;;;;;;;;;;;5525:15:84;-1:-1:-1;5525:15:84;;-1:-1:-1;9947:18:127;;5525:36:84;9631:340:127;3221:133:5;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;8760:942:84:-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;8859:27;-1:-1:-1;;;8859:27:84;;-1:-1:-1;;;;;;;;;;;8859:27:84;;;5728:34:127;;;5778:18;;;5771:43;8833:15:84;;-1:-1:-1;;;;;;;;;;;8859:13:84;;;5640:18:127;;8859:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8896:6;;;;;;;;;-1:-1:-1;;;;;8896:6:84;-1:-1:-1;;;;;8896:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;8948:7:84;-1:-1:-1;8948:7:84;;-1:-1:-1;8956:19:84;;-1:-1:-1;8956:9:84;8968:7;8956:19;:::i;:::-;8948:28;;;;;;;;;;;;;8680:25:127;;8668:2;8653:18;;8519:192;8948:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8987:36:84;;-1:-1:-1;;;8987:36:84;;9832:2:127;8987:36:84;;;9814:21:127;9871:2;9851:18;;;9844:30;9910:19;9890:18;;;9883:47;-1:-1:-1;;;;;;;;;;;8987:15:84;-1:-1:-1;8987:15:84;;-1:-1:-1;9947:18:127;;8987:36:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9033:6;;;;;;;;;-1:-1:-1;;;;;9033:6:84;-1:-1:-1;;;;;9033:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;9059:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9084:6:84;;:34;;-1:-1:-1;;;9084:34:84;;9110:7;9084:34;;;8680:25:127;-1:-1:-1;;;;;9084:6:84;;;;-1:-1:-1;9084:25:84;;-1:-1:-1;8653:18:127;;9084:34:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;9129:27;-1:-1:-1;;;9129:27:84;;-1:-1:-1;;;;;;;;;;;9129:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;9129:13:84;-1:-1:-1;9129:13:84;;-1:-1:-1;5640:18:127;;9129:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;9182:74;;-1:-1:-1;;;;;;;;;;;9182:74:84;;;;5971::127;;;;9182::84;;;;;;;;;;5944:18:127;;;;9182:74:84;;;;;;;-1:-1:-1;;;;;9182:74:84;-1:-1:-1;;;9182:74:84;;;9166:91;;-1:-1:-1;;;9166:91:84;;-1:-1:-1;;;;;;;;;;;9166:15:84;-1:-1:-1;9166:15:84;;-1:-1:-1;9166:91:84;;9182:74;9166:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9267:6:84;;:35;;-1:-1:-1;;;9267:35:84;;9293:8;9267:35;;;8680:25:127;-1:-1:-1;;;;;9267:6:84;;;;-1:-1:-1;9267:25:84;;-1:-1:-1;8653:18:127;;9267:35:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;9312:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;9337:27;-1:-1:-1;;;9337:27:84;;-1:-1:-1;;;;;;;;;;;9337:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;9337:13:84;-1:-1:-1;9337:13:84;;-1:-1:-1;5640:18:127;;9337:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9374:6;;;;;;;;;-1:-1:-1;;;;;9374:6:84;-1:-1:-1;;;;;9374:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;9400:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9434:6:84;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;9434:23;-1:-1:-1;;;9434:23:84;;-1:-1:-1;;;;;;;;;;;9434:23:84;;;5971:74:127;9425:86:84;;-1:-1:-1;;;;;;9434:6:84;;;;-1:-1:-1;9434:16:84;;5944:18:127;;9434:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9459:22;738:7;9459:1;:22;:::i;:::-;-1:-1:-1;;;;;9425:86:84;;;;;;;;;;;;;;;;;;:8;:86::i;:::-;9530:7;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;9530:24;-1:-1:-1;;;9530:24:84;;-1:-1:-1;;;;;;;;;;;9530:24:84;;;5971:74:127;9521:88:84;;-1:-1:-1;;;;;9530:7:84;;:17;;5944:18:127;;9530:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9556:23;789:8;9556:1;:23;:::i;:::-;-1:-1:-1;;;;;9521:88:84;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;9619:76;-1:-1:-1;;;;;;;;;;;9628:13:84;9643:22;840:4;9643:1;:22;:::i;:::-;-1:-1:-1;;;;;9619:76:84;;;;;;;;;;;;;;;;;;:8;:76::i;:::-;8803:899;8760:942::o;6637:993::-;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;6686:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6695:13:84;;-1:-1:-1;;6686:8:84;:51::i;:::-;6747:6;;6768;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;6747:41;-1:-1:-1;;;6747:41:84;;-1:-1:-1;;;;;6768:6:84;;;6747:41;;;10980:34:127;-1:-1:-1;;;;;;;;;;;11030:18:127;;;11023:43;6783:4:84;11082:18:127;;;11075:34;6747:6:84;;;:20;;10892:18:127;;6747:41:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;6798:54;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;6807:13:84;;-1:-1:-1;6822:4:84;;6798:8;:54::i;:::-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;6863:27;-1:-1:-1;;;6863:27:84;;-1:-1:-1;;;;;;;;;;;6863:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;6863:13:84;;;5640:18:127;;6863:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;6916:74;;-1:-1:-1;;;;;;;;;;;6916:74:84;;;;5971::127;;;;6916::84;;;;;;;;;;5944:18:127;;;;6916:74:84;;;;;;;-1:-1:-1;;;;;6916:74:84;-1:-1:-1;;;6916:74:84;;;6900:91;;-1:-1:-1;;;6900:91:84;;-1:-1:-1;;;;;;;;;;;6900:15:84;-1:-1:-1;6900:15:84;;-1:-1:-1;6900:91:84;;6916:74;6900:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7001:6:84;;7022;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;7001:41;-1:-1:-1;;;7001:41:84;;-1:-1:-1;;;;;7022:6:84;;;7001:41;;;10980:34:127;-1:-1:-1;;;;;;;;;;;11030:18:127;;;11023:43;7037:4:84;11082:18:127;;;11075:34;7001:6:84;;;-1:-1:-1;7001:20:84;;-1:-1:-1;10892:18:127;;7001:41:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;7052:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7126:6:84;;7147;;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;-1:-1:-1;;;;;7126:6:84;;;;-1:-1:-1;7126:20:84;;-1:-1:-1;7147:6:84;-1:-1:-1;;;;;;;;;;;7189:22:84;7126:6;840:4;7189:22;:::i;:::-;7170:6;;7162:50;;-1:-1:-1;;;;;7162:50:84;;-1:-1:-1;;;;;7170:6:84;7162:23;:50;:::i;:::-;7126:87;;-1:-1:-1;;;;;;7126:87:84;;;;;;;-1:-1:-1;;;;;10998:15:127;;;7126:87:84;;;10980:34:127;11050:15;;;;11030:18;;;11023:43;11082:18;;;11075:34;10892:18;;7126:87:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7240:6:84;;7223:82;;-1:-1:-1;;;;;;7240:6:84;7232:23;;-1:-1:-1;7257:22:84;7240:6;840:4;7257:22;:::i;:::-;-1:-1:-1;;;;;7223:82:84;;;;;;;;;;;;;;;;;;:8;:82::i;:::-;493:12;;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;;;;;;;;;;;;;;;;7316:23;-1:-1:-1;;;7316:23:84;;459:50;7316:23;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;7316:13:84;;;5640:18:127;;7316:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7349:6;;;;;;;;;-1:-1:-1;;;;;7349:6:84;-1:-1:-1;;;;;7349:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;7375:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7409:6:84;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;7409:21;-1:-1:-1;;;7409:21:84;;459:50;7409:21;;;5971:74:127;7400:76:84;;-1:-1:-1;;;;;;7409:6:84;;;;-1:-1:-1;7409:16:84;;5944:18:127;;7409:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7400:76;;;;;;;;;;;;;;;;;738:7;;7400:8;:76::i;:::-;7495:7;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;7495:22;-1:-1:-1;;;7495:22:84;;459:50;7495:22;;;5971:74:127;7486:78:84;;-1:-1:-1;;;;;7495:7:84;;:17;;5944:18:127;;7495:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7486:78;;;;;;;;;;;;;;;;;789:8;;7486;:78::i;:::-;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;7574:49;;;;;;;;;;;;;;;;;;459:50;7583:11;;-1:-1:-1;;7574:8:84;:49::i;:::-;6637:993::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:173:84;1595:6;;1573:30;;-1:-1:-1;;;1573:30:84;;-1:-1:-1;;;;;1595:6:84;;;1573:30;;;5971:74:127;-1:-1:-1;;;;;;;;;;;1573:13:84;;;5944:18:127;;1573:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1613:27:84;;-1:-1:-1;;;1613:27:84;;12069:2:127;1613:27:84;;;12051:21:127;12108:1;12088:18;;;12081:29;12146:10;12126:18;;;12119:38;-1:-1:-1;;;;;;;;;;;1613:15:84;-1:-1:-1;1613:15:84;;-1:-1:-1;12174:18:127;;1613:27:84;11868:330:127;3648:760:84;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;3702:27;-1:-1:-1;;;3702:27:84;;-1:-1:-1;;;;;;;;;;;3702:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;3702:13:84;;;5640:18:127;;3702:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3739:6;;;;;;;;;-1:-1:-1;;;;;3739:6:84;-1:-1:-1;;;;;3739:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;3765:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3799:6:84;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;3799:23;-1:-1:-1;;;3799:23:84;;-1:-1:-1;;;;;;;;;;;3799:23:84;;;5971:74:127;3790:83:84;;-1:-1:-1;;;;;;3799:6:84;;;;-1:-1:-1;3799:16:84;;5944:18:127;;3799:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3790:83;;;;;;;;;;;;;;;;;738:7;;3790:8;:83::i;:::-;3892:7;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;3892:24;-1:-1:-1;;;3892:24:84;;-1:-1:-1;;;;;;;;;;;3892:24:84;;;5971:74:127;3883:85:84;;-1:-1:-1;;;;;3892:7:84;;:17;;5944:18:127;;3892:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3883:85;;;;;;;;;;;;;;;;;789:8;;3883;:85::i;:::-;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;3978:73;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3987:13:84;;840:4;;3978:8;:73::i;:::-;493:12;;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;;;;;;;;;;;;;;;;4062:23;-1:-1:-1;;;4062:23:84;;459:50;4062:23;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;4062:13:84;;;5640:18:127;;4062:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4095:6;;;;;;;;;-1:-1:-1;;;;;4095:6:84;-1:-1:-1;;;;;4095:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;4121:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4155:6:84;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;4155:21;-1:-1:-1;;;4155:21:84;;459:50;4155:21;;;5971:74:127;4146:81:84;;-1:-1:-1;;;;;;4155:6:84;;;;-1:-1:-1;4155:16:84;;5944:18:127;;4155:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4146:81;;;;;;;;;;;;;;;;;738:7;;4146:8;:81::i;:::-;4246:7;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;4246:22;-1:-1:-1;;;4246:22:84;;459:50;4246:22;;;5971:74:127;4237:83:84;;-1:-1:-1;;;;;4246:7:84;;:17;;5944:18:127;;4246:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4237:83;;;;;;;;;;;;;;;;;789:8;;4237;:83::i;:::-;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;4330:71;;;;;;;;;;;;;;;;;;459:50;4339:11;;840:4;;4330:8;:71::i;2795:847::-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;2841:27;-1:-1:-1;;;2841:27:84;;-1:-1:-1;;;;;;;;;;;2841:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;2841:13:84;;;5640:18:127;;2841:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;2894:74;;-1:-1:-1;;;;;;;;;;;2894:74:84;;;;5971::127;;;;2894::84;;;;;;;;;;5944:18:127;;;;2894:74:84;;;;;;;-1:-1:-1;;;;;2894:74:84;-1:-1:-1;;;2894:74:84;;;2878:91;;-1:-1:-1;;;2878:91:84;;-1:-1:-1;;;;;;;;;;;2878:15:84;-1:-1:-1;2878:15:84;;-1:-1:-1;2878:91:84;;2894:74;2878:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2979:6:84;;:44;;-1:-1:-1;;;2979:44:84;;:6;:44;;;5971:74:127;-1:-1:-1;;;;;2979:6:84;;;;-1:-1:-1;2979:24:84;;-1:-1:-1;5944:18:127;;2979:44:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;3033:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3058:37:84;;-1:-1:-1;;;3058:37:84;;12651:2:127;3058:37:84;;;12633:21:127;12690:2;12670:18;;;12663:30;12729:20;12709:18;;;12702:48;-1:-1:-1;;;;;;;;;;;3058:15:84;-1:-1:-1;3058:15:84;;-1:-1:-1;12767:18:127;;3058:37:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3105:6:84;;3130;;3105:32;;-1:-1:-1;;;3105:32:84;;-1:-1:-1;;;;;3130:6:84;;;3105:32;;;5971:74:127;3105:6:84;;;-1:-1:-1;3105:24:84;;-1:-1:-1;5944:18:127;;3105:32:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3148:6:84;;3180;;3148:40;;-1:-1:-1;;;3148:40:84;;-1:-1:-1;;;;;3180:6:84;;;3148:40;;;5971:74:127;3148:6:84;;;-1:-1:-1;3148:24:84;;-1:-1:-1;5944:18:127;;3148:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3244:6:84;;:22;;-1:-1:-1;;;3244:22:84;;3199:18;3244:22;;;8680:25:127;;;3199:18:84;-1:-1:-1;;;;;;3244:6:84;;;;-1:-1:-1;3244:19:84;;8653:18:127;;3244:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3315:6:84;;3276:69;;;;;;;;;;;;;;;;;3227:39;;-1:-1:-1;3276:69:84;;3227:39;;-1:-1:-1;;;;;3315:6:84;;3276:8;:69::i;:::-;3373:6;;:22;;-1:-1:-1;;;3373:22:84;;:6;:22;;;8680:25:127;-1:-1:-1;;;;;3373:6:84;;;;:19;;8653:18:127;;3373:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3444:7:84;;3405:70;;;;;;;;;;;;;;;;;3356:39;;-1:-1:-1;3405:70:84;;3356:39;;-1:-1:-1;;;;;3444:7:84;;3405:8;:70::i;:::-;3495:6;;:14;;;-1:-1:-1;;;3495:14:84;;;;3486:51;;-1:-1:-1;;;;;3495:6:84;;:12;;:14;;;;;;;;;;;;;;:6;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3511:3;3486:51;;;;;;;;;;;;;;;;;:8;:51::i;:::-;3548:37;;-1:-1:-1;;;3548:37:84;;12651:2:127;3548:37:84;;;12633:21:127;12690:2;12670:18;;;12663:30;12729:20;12709:18;;;12702:48;-1:-1:-1;;;;;;;;;;;3548:15:84;;;12767:18:127;;3548:37:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3595:6:84;;3627;;3595:40;;-1:-1:-1;;;3595:40:84;;-1:-1:-1;;;;;3627:6:84;;;3595:40;;;5971:74:127;3595:6:84;;;-1:-1:-1;3595:24:84;;-1:-1:-1;5944:18:127;;3595:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2831:811;2795:847::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;14242:74:127;;;1398:17:1;14332:18:127;;;14325:34;1428:1:1;;1377:7;;14215:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;7636:1118:84:-;7722:7;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;7722:24;-1:-1:-1;;;7722:24:84;;-1:-1:-1;;;;;;;;;;;7722:24:84;;;5971:74:127;7713:61:84;;-1:-1:-1;;;;;7722:7:84;;:17;;5944:18:127;;7722:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7748:1;7713:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;7784:6;;7812:7;;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;-1:-1:-1;;;;;7784:6:84;;;;:20;;7812:7;-1:-1:-1;;;;;;;;;;;7829:22:84;738:7;7829:1;:22;:::i;:::-;7784:68;;-1:-1:-1;;;;;;7784:68:84;;;;;;;-1:-1:-1;;;;;14855:15:127;;;7784:68:84;;;14837:34:127;14907:15;;;;14887:18;;;14880:43;-1:-1:-1;;;;;14959:39:127;14939:18;;;14932:67;14749:18;;7784:68:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7871:7:84;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;7871:24;-1:-1:-1;;;7871:24:84;;-1:-1:-1;;;;;;;;;;;7871:24:84;;;5971:74:127;7862:82:84;;-1:-1:-1;;;;;;7871:7:84;;;;-1:-1:-1;7871:17:84;;5944:18:127;;7871:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7897:22;738:7;7897:1;:22;:::i;:::-;-1:-1:-1;;;;;7862:82:84;;;;;;;;;;;;;;;;;;:8;:82::i;:::-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;7955:27;-1:-1:-1;;;7955:27:84;;-1:-1:-1;;;;;;;;;;;7955:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;7955:13:84;;;5640:18:127;;7955:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;8008:74;;-1:-1:-1;;;;;;;;;;;8008:74:84;;;;5971::127;;;;8008::84;;;;;;;;;;5944:18:127;;;;8008:74:84;;;;;;;-1:-1:-1;;;;;8008:74:84;-1:-1:-1;;;8008:74:84;;;7992:91;;-1:-1:-1;;;7992:91:84;;-1:-1:-1;;;;;;;;;;;7992:15:84;-1:-1:-1;7992:15:84;;-1:-1:-1;7992:91:84;;8008:74;7992:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8093:6:84;;8121;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;8093:49;-1:-1:-1;;;8093:49:84;;-1:-1:-1;;;;;8121:6:84;;;8093:49;;;10980:34:127;-1:-1:-1;;;;;;;;;;;11030:18:127;;;11023:43;8137:4:84;11082:18:127;;;11075:34;8093:6:84;;;-1:-1:-1;8093:20:84;;-1:-1:-1;10892:18:127;;8093:49:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;8152:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8226:6:84;;8254;;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;-1:-1:-1;;;;;8226:6:84;;;;-1:-1:-1;8226:20:84;;-1:-1:-1;8254:6:84;-1:-1:-1;;;;;;;;;;;8307:22:84;8226:6;738:7;8307:22;:::i;:::-;8270:6;;8295;;8270:33;;-1:-1:-1;;;8270:33:84;;-1:-1:-1;;;;;8295:6:84;;;8270:33;;;5971:74:127;-1:-1:-1;;;;;8270:60:84;;;;;:6;;;:16;;5944:18:127;;8270:33:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;;;:::i;:::-;8226:105;;-1:-1:-1;;;;;;8226:105:84;;;;;;;-1:-1:-1;;;;;10998:15:127;;;8226:105:84;;;10980:34:127;11050:15;;;;11030:18;;;11023:43;11082:18;;;11075:34;10892:18;;8226:105:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8350:6:84;;8375;;8350:33;;-1:-1:-1;;;8350:33:84;;-1:-1:-1;;;;;8375:6:84;;;8350:33;;;5971:74:127;8341:91:84;;-1:-1:-1;8350:6:84;;;-1:-1:-1;8350:16:84;;5944:18:127;;8350:33:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8385:22;8406:1;738:7;8385:22;:::i;:::-;-1:-1:-1;;;;;8341:91:84;;;;;;;;;;;;;;;;;;:8;:91::i;:::-;493:12;;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;;;;;;;;;;;;;;;;8443:23;-1:-1:-1;;;8443:23:84;;459:50;8443:23;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;8443:13:84;;;5640:18:127;;8443:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8476:6;;;;;;;;;-1:-1:-1;;;;;8476:6:84;-1:-1:-1;;;;;8476:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;8502:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8536:6:84;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;8536:21;-1:-1:-1;;;8536:21:84;;459:50;8536:21;;;5971:74:127;8527:58:84;;-1:-1:-1;;;;;;8536:6:84;;;;-1:-1:-1;8536:16:84;;5944:18:127;;8536:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8559:1;8527:58;;;;;;;;;;;;;;;;;:8;:58::i;:::-;8604:7;;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;8604:22;-1:-1:-1;;;8604:22:84;;459:50;8604:22;;;5971:74:127;8595:77:84;;-1:-1:-1;;;;;8604:7:84;;:17;;5944:18:127;;8604:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8595:77;;;;;;;;;;;;;;;;;789:8;;8595;:77::i;:::-;493:12;;;;;;;;;;;-1:-1:-1;;;493:12:84;;;;;8682:65;;;;;;;;;;;;;;;;;;459:50;8691:11;;840:4;;8682:8;:65::i;2270:519::-;2313:18;2348:2;2334:17;;;;;:::i;:::-;6813:4:127;6801:17;;;6783:36;;6771:2;6756:18;2334:17:84;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2383:6:84;;2361:40;;-1:-1:-1;;;2361:40:84;;-1:-1:-1;;;;;2383:6:84;;;2361:40;;;14242:74:127;2392:8:84;14332:18:127;;;14325:34;2313:38:84;;-1:-1:-1;2361:13:84;;;;;14215:18:127;;2361:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;2412:27;-1:-1:-1;;;2412:27:84;;-1:-1:-1;;;;;;;;;;;2412:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;2412:13:84;-1:-1:-1;2412:13:84;;-1:-1:-1;5640:18:127;;2412:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;2465:74;;-1:-1:-1;;;;;;;;;;;2465:74:84;;;;5971::127;;;;2465::84;;;;;;;;;;5944:18:127;;;;2465:74:84;;;;;;;-1:-1:-1;;;;;2465:74:84;-1:-1:-1;;;2465:74:84;;;2449:91;;-1:-1:-1;;;2449:91:84;;-1:-1:-1;;;;;;;;;;;2449:15:84;-1:-1:-1;2449:15:84;;-1:-1:-1;2449:91:84;;2465:74;2449:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2550:6:84;;:45;;-1:-1:-1;;;2550:45:84;;-1:-1:-1;;;;;8027:55:127;;;2550:45:84;;;8009:74:127;2590:4:84;8099:18:127;;;8092:67;2550:6:84;;;;-1:-1:-1;2550:21:84;;-1:-1:-1;7982:18:127;;2550:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;2605:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2630:6:84;;:45;;-1:-1:-1;;;2630:45:84;;-1:-1:-1;;;;;8027:55:127;;;2630:45:84;;;8009:74:127;2670:4:84;8099:18:127;;;8092:67;2630:6:84;;;;-1:-1:-1;2630:21:84;;-1:-1:-1;7982:18:127;;2630:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2686:41:84;;-1:-1:-1;;;2686:41:84;;16118:2:127;2686:41:84;;;16100:21:127;16157:2;16137:18;;;16130:30;16196:24;16176:18;;;16169:52;-1:-1:-1;;;;;;;;;;;2686:15:84;-1:-1:-1;2686:15:84;;-1:-1:-1;16238:18:127;;2686:41:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2737:6:84;;:45;;-1:-1:-1;;;2737:45:84;;-1:-1:-1;;;;;8027:55:127;;;2737:45:84;;;8009:74:127;2777:4:84;8099:18:127;;;8092:67;2737:6:84;;;;-1:-1:-1;2737:21:84;;-1:-1:-1;7982:18:127;;2737:45:84;7836:329:127;2304:142:5;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;5624:1007:84:-;403:14;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;5818:27;-1:-1:-1;;;5818:27:84;;-1:-1:-1;;;;;;;;;;;5818:27:84;;;5728:34:127;;;5778:18;;;5771:43;5707:5:84;;5755:6;;5803:4;;-1:-1:-1;;;;;;;;;;;5818:13:84;;;5640:18:127;;5818:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;5871:74;;-1:-1:-1;;;;;;;;;;;5871:74:84;;;;5971::127;;;;5871::84;;;;;;;;;;5944:18:127;;;;5871:74:84;;;;;;;-1:-1:-1;;;;;5871:74:84;-1:-1:-1;;;5871:74:84;;;5855:91;;-1:-1:-1;;;5855:91:84;;-1:-1:-1;;;;;;;;;;;5855:15:84;-1:-1:-1;5855:15:84;;-1:-1:-1;5855:91:84;;5871:74;5855:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5956:6:84;;5983;;5956:58;;-1:-1:-1;;;5956:58:84;;-1:-1:-1;;;;;5983:6:84;;;5956:58;;;8009:74:127;-1:-1:-1;;;;;8119:39:127;;8099:18;;;8092:67;5956:6:84;;;-1:-1:-1;5956:26:84;;-1:-1:-1;7982:18:127;;5956:58:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;6024:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6049:6:84;;6083;;6049:66;;-1:-1:-1;;;6049:66:84;;-1:-1:-1;;;;;6083:6:84;;;6049:66;;;8009:74:127;-1:-1:-1;;;;;8119:39:127;;8099:18;;;8092:67;6049:6:84;;;-1:-1:-1;6049:26:84;;-1:-1:-1;7982:18:127;;6049:66:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6125:6:84;;6159:7;;6125:68;;-1:-1:-1;;;6125:68:84;;-1:-1:-1;;;;;6159:7:84;;;6125:68;;;8009:74:127;-1:-1:-1;;;;;8119:39:127;;8099:18;;;8092:67;6125:6:84;;;-1:-1:-1;6125:26:84;;-1:-1:-1;7982:18:127;;6125:68:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6203:6:84;;6230;;6203:58;;-1:-1:-1;;;6203:58:84;;-1:-1:-1;;;;;6230:6:84;;;6203:58;;;8009:74:127;-1:-1:-1;;;;;8119:39:127;;8099:18;;;8092:67;6203:6:84;;;-1:-1:-1;6203:26:84;;-1:-1:-1;7982:18:127;;6203:58:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:14:84;;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;;;;;;;;;;;;;;;;6272:27;-1:-1:-1;;;6272:27:84;;-1:-1:-1;;;;;;;;;;;6272:27:84;;;5728:34:127;;;5778:18;;;5771:43;-1:-1:-1;;;;;;;;;;;6272:13:84;-1:-1:-1;6272:13:84;;-1:-1:-1;5640:18:127;;6272:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6309:6;;;;;;;;;-1:-1:-1;;;;;6309:6:84;-1:-1:-1;;;;;6309:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;6335:12:84;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6369:6:84;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;6369:23;-1:-1:-1;;;6369:23:84;;-1:-1:-1;;;;;;;;;;;6369:23:84;;;5971:74:127;6360:84:84;;-1:-1:-1;;;;;;6369:6:84;;;;-1:-1:-1;6369:16:84;;5944:18:127;;6369:23:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6394:22;-1:-1:-1;;;;;6360:84:84;;;;;;;;;;;;;;;;;;:8;:84::i;:::-;6463:7;;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;6463:24;-1:-1:-1;;;6463:24:84;;-1:-1:-1;;;;;;;;;;;6463:24:84;;;5971:74:127;6454:86:84;;-1:-1:-1;;;;;6463:7:84;;:17;;5944:18:127;;6463:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6489:23;-1:-1:-1;;;;;6454:86:84;;;;;;;;;;;;;;;;;;:8;:86::i;:::-;403:14;;;;;;;;;;;-1:-1:-1;;;403:14:84;;;;;6550:74;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6559:13:84;;-1:-1:-1;;;;;6550:74:84;;;:8;:74::i;:::-;5665:966;;;5624:1007::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;3570:::-;3668:29;;-1:-1:-1;;;3668:29:1;;-1:-1:-1;;;;;;;;;;;3668:11:1;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:423::-;742:3;780:5;774:12;807:6;802:3;795:19;832:1;842:162;856:6;853:1;850:13;842:162;;;918:4;974:13;;;970:22;;964:29;946:11;;;942:20;;935:59;871:12;842:162;;;846:3;1049:1;1042:4;1033:6;1028:3;1024:16;1020:27;1013:38;1112:4;1105:2;1101:7;1096:2;1088:6;1084:15;1080:29;1075:3;1071:39;1067:50;1060:57;;;700:423;;;;:::o;1128:1765::-;1361:2;1413:21;;;1483:13;;1386:18;;;1505:22;;;1332:4;;1361:2;1546;;1564:18;;;;1601:1;1644:15;;;1629:31;;1625:40;;1688:15;;;1332:4;;1752:1112;1768:6;1763:3;1760:15;1752:1112;;;-1:-1:-1;;1837:22:127;;;1833:36;1821:49;;1893:13;;1980:9;;-1:-1:-1;;;;;1976:58:127;1961:74;;2074:11;;2068:18;2106:15;;;2099:27;;;2187:19;;1933:15;;;2219:24;;;2400:21;;;;2266:2;2348:17;;;2336:30;;2332:39;;;2290:15;;;;2445:1;2459:296;2475:8;2470:3;2467:17;2459:296;;;2581:2;2577:7;2568:6;2560;2556:19;2552:33;2545:5;2538:48;2613:42;2648:6;2637:8;2631:15;2613:42;:::i;:::-;2684:17;;;;2603:52;-1:-1:-1;2727:14:127;;;;2503:1;2494:11;2459:296;;;-1:-1:-1;;;2842:12:127;;;;2778:6;-1:-1:-1;;2807:15:127;;;;1794:1;1785:11;1752:1112;;;-1:-1:-1;2881:6:127;;1128:1765;-1:-1:-1;;;;;;;;;;1128:1765:127:o;2898:1590::-;3100:4;3129:2;3169;3158:9;3154:18;3199:2;3188:9;3181:21;3222:6;3257;3251:13;3288:6;3280;3273:22;3314:2;3304:12;;3347:2;3336:9;3332:18;3325:25;;3409:2;3399:6;3396:1;3392:14;3381:9;3377:30;3373:39;3447:2;3439:6;3435:15;3468:1;3489;3499:960;3515:6;3510:3;3507:15;3499:960;;;3584:22;;;-1:-1:-1;;3580:36:127;3568:49;;3640:13;;3727:9;;-1:-1:-1;;;;;3723:58:127;3708:74;;3821:11;;3815:18;3853:15;;;3846:27;;;3934:19;;3680:15;;;3966:24;;;4056:21;;;;4101:1;;4024:2;4012:15;;;4115:236;4131:8;4126:3;4123:17;4115:236;;;4212:15;;-1:-1:-1;;;;;;4208:42:127;4194:57;;4320:17;;;;4159:1;4150:11;;;;;4277:14;;;;4115:236;;;-1:-1:-1;4437:12:127;;;;4374:5;-1:-1:-1;;;4402:15:127;;;;3541:1;3532:11;3499:960;;;-1:-1:-1;4476:6:127;;2898:1590;-1:-1:-1;;;;;;;;;2898:1590:127:o;4493:803::-;4655:4;4684:2;4724;4713:9;4709:18;4754:2;4743:9;4736:21;4777:6;4812;4806:13;4843:6;4835;4828:22;4881:2;4870:9;4866:18;4859:25;;4943:2;4933:6;4930:1;4926:14;4915:9;4911:30;4907:39;4893:53;;4981:2;4973:6;4969:15;5002:1;5012:255;5026:6;5023:1;5020:13;5012:255;;;5119:2;5115:7;5103:9;5095:6;5091:22;5087:36;5082:3;5075:49;5147:40;5180:6;5171;5165:13;5147:40;:::i;:::-;5137:50;-1:-1:-1;5245:12:127;;;;5210:15;;;;5048:1;5041:9;5012:255;;;-1:-1:-1;5284:6:127;;4493:803;-1:-1:-1;;;;;;;4493:803:127:o;6056:218::-;6203:2;6192:9;6185:21;6166:4;6223:45;6264:2;6253:9;6249:18;6241:6;6223:45;:::i;:::-;6215:53;6056:218;-1:-1:-1;;;6056:218:127:o;7030:127::-;7091:10;7086:3;7082:20;7079:1;7072:31;7122:4;7119:1;7112:15;7146:4;7143:1;7136:15;7162:265;-1:-1:-1;;;;;7291:10:127;;;7303;;;7287:27;7334:20;;;;7233:26;7373:24;;;7363:58;;7401:18;;:::i;:::-;7363:58;;7162:265;;;;:::o;8716:380::-;8795:1;8791:12;;;;8838;;;8859:61;;8913:4;8905:6;8901:17;8891:27;;8859:61;8966:2;8958:6;8955:14;8935:18;8932:38;8929:161;;9012:10;9007:3;9003:20;9000:1;8993:31;9047:4;9044:1;9037:15;9075:4;9072:1;9065:15;8929:161;;8716:380;;;:::o;9442:184::-;9512:6;9565:2;9553:9;9544:7;9540:23;9536:32;9533:52;;;9581:1;9578;9571:12;9533:52;-1:-1:-1;9604:16:127;;9442:184;-1:-1:-1;9442:184:127:o;9976:125::-;10041:9;;;10062:10;;;10059:36;;;10075:18;;:::i;:::-;9976:125;;;;:::o;11120:191::-;-1:-1:-1;;;;;11247:10:127;;;11235;;;11231:27;;11270:12;;;11267:38;;;11285:18;;:::i;:::-;11267:38;11120:191;;;;:::o;11316:128::-;11383:9;;;11404:11;;;11401:37;;;11418:18;;:::i;12986:162::-;-1:-1:-1;;;;;13073:5:127;13069:54;13062:5;13059:65;13049:93;;13138:1;13135;13128:12;13153:456;13247:6;13255;13308:2;13296:9;13287:7;13283:23;13279:32;13276:52;;;13324:1;13321;13314:12;13276:52;13356:9;13350:16;13375:39;13408:5;13375:39;:::i;:::-;13483:2;13468:18;;13462:25;13433:5;;-1:-1:-1;;;;;;13518:40:127;;13506:53;;13496:81;;13573:1;13570;13563:12;13496:81;13596:7;13586:17;;;13153:456;;;;;:::o;13804:259::-;13874:6;13927:2;13915:9;13906:7;13902:23;13898:32;13895:52;;;13943:1;13940;13933:12;13895:52;13975:9;13969:16;13994:39;14027:5;13994:39;:::i;16267:362::-;16472:6;16461:9;16454:25;16515:6;16510:2;16499:9;16495:18;16488:34;16558:2;16553;16542:9;16538:18;16531:30;16435:4;16578:45;16619:2;16608:9;16604:18;16596:6;16578:45;:::i;:::-;16570:53;16267:362;-1:-1:-1;;;;;16267:362:127:o;16634:441::-;16802:4;-1:-1:-1;;;;;16912:2:127;16904:6;16900:15;16889:9;16882:34;16964:2;16956:6;16952:15;16947:2;16936:9;16932:18;16925:43;;17004:2;16999;16988:9;16984:18;16977:30;17024:45;17065:2;17054:9;17050:18;17042:6;17024:45;:::i","linkReferences":{},"immutableReferences":{"72635":[{"start":4522,"length":32},{"start":4790,"length":32},{"start":15379,"length":32}]}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAddToken()":"df91f777","testLockRequest()":"01642bf3","testRemoveToken()":"7e9f2b22","testRequestFaucetTokens()":"7be0016c","testRequestFaucetTokensByOperator()":"3e119ed3","testRevertOnNonEOA()":"6eeb0366","testSetRequestAmount()":"fb7cd389","testSetRequestCooldown()":"4e04cea1","testWithdrawNative()":"65261a75","testWithdrawToken()":"db182d13"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAddToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testLockRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRemoveToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRequestFaucetTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRequestFaucetTokensByOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRevertOnNonEOA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetRequestAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetRequestCooldown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdrawToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Faucet.t.sol\":\"FaucetTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"test/Faucet.t.sol\":{\"keccak256\":\"0xe9142d7682ccde9085bd989395c8781c2c14a23a9b365af475a9f98d7cf2a349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e584b855128fcdfb99478a48e13f8978c372823c7f331c4c00d904f6d1441b5\",\"dweb:/ipfs/QmcU94Yov5BfAzbLphAj7HtS1GPUUJpeGpV78beJvfcW7N\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/Faucet.sol\":{\"keccak256\":\"0x0f8488b15df92479eceea54a4678de8d0926321815c8925166f4ffbc5e777d6d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3d26cfcb208febf7b3f7adbc34df2e4ce9eea592cff9471222ae657eb103b09\",\"dweb:/ipfs/QmVidqAC5E3MzAipYuvNxd13EfAvRjdZddPkoe5dhFtCQM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAddToken"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testLockRequest"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRemoveToken"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRequestFaucetTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRequestFaucetTokensByOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRevertOnNonEOA"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSetRequestAmount"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSetRequestCooldown"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdrawNative"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdrawToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Faucet.t.sol":"FaucetTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"test/Faucet.t.sol":{"keccak256":"0xe9142d7682ccde9085bd989395c8781c2c14a23a9b365af475a9f98d7cf2a349","urls":["bzz-raw://7e584b855128fcdfb99478a48e13f8978c372823c7f331c4c00d904f6d1441b5","dweb:/ipfs/QmcU94Yov5BfAzbLphAj7HtS1GPUUJpeGpV78beJvfcW7N"],"license":"MIT"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/Faucet.sol":{"keccak256":"0x0f8488b15df92479eceea54a4678de8d0926321815c8925166f4ffbc5e777d6d","urls":["bzz-raw://b3d26cfcb208febf7b3f7adbc34df2e4ce9eea592cff9471222ae657eb103b09","dweb:/ipfs/QmVidqAC5E3MzAipYuvNxd13EfAvRjdZddPkoe5dhFtCQM"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file diff --git a/abi/FeeHelper.sol/FeeHelper.json b/abi/FeeHelper.sol/FeeHelper.json deleted file mode 100644 index 0680d00c..00000000 --- a/abi/FeeHelper.sol/FeeHelper.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"FeeHelper__FeeTooLarge","inputs":[]},{"type":"error","name":"FeeHelper__ProtocolShareTooLarge","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122070a703829f06492a9a5d9edb1bc5c1ff80886cc85ddba8d83d9631f1b871486264736f6c63430008140033","sourceMap":"244:3389:66:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;244:3389:66;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122070a703829f06492a9a5d9edb1bc5c1ff80886cc85ddba8d83d9631f1b871486264736f6c63430008140033","sourceMap":"244:3389:66:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FeeHelper__FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeHelper__ProtocolShareTooLarge\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Fee Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to calculate fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/FeeHelper.sol\":\"FeeHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FeeHelper__FeeTooLarge"},{"inputs":[],"type":"error","name":"FeeHelper__ProtocolShareTooLarge"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/FeeHelper.sol":"FeeHelper"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"}},"version":1},"id":66} \ No newline at end of file diff --git a/abi/FeeHelper.t.sol/FeeHelperTest.json b/abi/FeeHelper.t.sol/FeeHelperTest.json deleted file mode 100644 index 2c7f0334..00000000 --- a/abi/FeeHelper.t.sol/FeeHelperTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_GetCompositionFee","inputs":[{"name":"amountWithFee","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_GetFeeAmount","inputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_GetFeeAmountFrom","inputs":[{"name":"amountWithFee","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_GetProtocolFeeAmount","inputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"FeeHelper__FeeTooLarge","inputs":[]},{"type":"error","name":"FeeHelper__ProtocolShareTooLarge","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506114e38061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461019f578063ba414fa6146101a7578063d917758a146101bf578063e20c9f71146101d257600080fd5b806385226c811461016f578063916a17c6146101845780639348991d1461018c57600080fd5b80633e5e3c23116100c85780633e5e3c23146101375780633f7286f41461013f5780635ecf4bd51461014757806366d9a9a01461015a57600080fd5b80631ed7831c146100ef578063294e734c1461010d5780632ade388014610122575b600080fd5b6100f76101da565b60405161010491906110bb565b60405180910390f35b61012061011b366004611124565b61023c565b005b61012a61038a565b604051610104919061119d565b6100f76104cc565b6100f761052c565b610120610155366004611124565b61058c565b6101626106a5565b604051610104919061125d565b6101776107a0565b6040516101049190611328565b610162610870565b61012061019a366004611124565b61096b565b610177610abc565b6101af610b8c565b6040519015158152602001610104565b6101206101cd366004611124565b610c47565b6100f7610dab565b6060601480548060200260200160405190810160405280929190818152602001828054801561023257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610214575b5050505050905090565b67016345785d8a0000816001600160801b031611156102d957604051630618f58760e51b8152638630bc6b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156102a857600080fd5b505af11580156102bc573d6000803e3d6000fd5b506102d4925050506001600160801b03831682610e0b565b505050565b6000670de0b6b3a764000060016102fc6001600160801b038086169087166113a0565b61030e90670de0b6b3a76400006113bd565b61031891906113d0565b61032291906113f9565b905060006103396001600160801b03851684610e0b565b9050610384816001600160801b0316836040518060400160405280601c81526020017f7465737446757a7a5f476574466565416d6f756e7446726f6d3a3a3100000000815250610e45565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104c357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104ac57838290600052602060002001805461041f9061141b565b80601f016020809104026020016040519081016040528092919081815260200182805461044b9061141b565b80156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081526020019060010190610400565b5050505081525050815260200190600101906103ae565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610232576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610214575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610232576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610214575050505050905090565b6109c4816001600160801b0316111561061e57604051630618f58760e51b81526379cb87ad60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b506102d4925050506001600160801b03831682610eb5565b60006127106106396001600160801b038085169086166113a0565b61064391906113f9565b9050600061065a6001600160801b03851684610eb5565b9050610384816001600160801b0316836040518060400160405280602081526020017f7465737446757a7a5f47657450726f746f636f6c466565416d6f756e743a3a31815250610e45565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104c35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561078857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107355790505b505050505081525050815260200190600101906106c9565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104c35783829060005260206000200180546107e39061141b565b80601f016020809104026020016040519081016040528092919081815260200182805461080f9061141b565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050815260200190600101906107c4565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104c35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561095357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116109005790505b50505050508152505081526020019060010190610894565b67016345785d8a0000816001600160801b03161115610a0557604051630618f58760e51b8152638630bc6b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156109d757600080fd5b505af11580156109eb573d6000803e3d6000fd5b50610a03925050506001600160801b03831682610f09565b505b6ec097ce7bc90715b34b9f10000000006000610a53610a356001600160801b038516670de0b6b3a76400006113bd565b83610a4c6001600160801b038088169089166113a0565b9190610f50565b90506000610a6a6001600160801b03861685610f09565b9050610ab5816001600160801b0316836040518060400160405280601d81526020017f7465737446757a7a5f476574436f6d706f736974696f6e4665653a3a31000000815250610e45565b5050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104c3578382906000526020600020018054610aff9061141b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2b9061141b565b8015610b785780601f10610b4d57610100808354040283529160200191610b78565b820191906000526020600020905b815481529060010190602001808311610b5b57829003601f168201915b505050505081526020019060010190610ae0565b60075460009060ff1615610ba4575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190611455565b1415905090565b67016345785d8a0000816001600160801b03161115610cdf57604051630618f58760e51b8152638630bc6b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610cb357600080fd5b505af1158015610cc7573d6000803e3d6000fd5b506102d4925050506001600160801b03831682610f7a565b6000610cf382670de0b6b3a764000061146e565b90506000816001600160801b03166001836001600160801b0316856001600160801b0316876001600160801b0316610d2b91906113a0565b610d3591906113bd565b610d3f91906113d0565b610d4991906113f9565b90506000610d606001600160801b03861685610f7a565b9050610ab5816001600160801b0316836040518060400160405280601881526020017f7465737446757a7a5f476574466565416d6f756e743a3a310000000000000000815250610e45565b60606013805480602002602001604051908101604052809291908181526020018280548015610232576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610214575050505050905090565b600081610e1781610fb7565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b0386811690861602015b0491505b5092915050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610e809086908690869060040161148e565b60006040518083038186803b158015610e9857600080fd5b505afa158015610eac573d6000803e3d6000fd5b50505050505050565b6000816109c4816001600160801b03161115610ee4576040516379cb87ad60e11b815260040160405180910390fd5b612710836001600160801b0316856001600160801b03160281610e3a57610e3a6113e3565b600081610f1581610fb7565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101025b0495945050505050565b6000806000610f5f8686610fec565b91509150610f70868686858561100b565b9695505050505050565b600081610f8681610fb7565b6001600160801b03808416670de0b6b3a76400008190039182916000199188160282010181610f4657610f466113e3565b67016345785d8a0000816001600160801b03161115610fe957604051638630bc6b60e01b815260040160405180910390fd5b50565b6000806000198385098385029250828110838203039150509250929050565b60008160000361102c57838381611024576110246113e3565b0490506110b2565b83821061104c576040516313eae71560e01b815260040160405180910390fd5b60008486880960018619810187169687900496600081900381900490910186831190950394850291909503949094049390931792505060026003840281188085028203028085028203028085028203028085028203028085028203028085029091030282025b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fc5783516001600160a01b0316835292840192918401916001016110d7565b50909695505050505050565b80356001600160801b038116811461111f57600080fd5b919050565b6000806040838503121561113757600080fd5b61114083611108565b915061114e60208401611108565b90509250929050565b6000815180845260005b8181101561117d57602081850181015186830182015201611161565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561124d57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561123757605f19898503018352611225848651611157565b948e01949350918d0191600101611209565b505050978a0197945050918801916001016111c4565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561131957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156113045783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906112c2565b50978a01979550505091870191600101611285565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561137d57603f1988860301845261136b858351611157565b9450928501929085019060010161134f565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176113b7576113b761138a565b92915050565b808201808211156113b7576113b761138a565b818103818111156113b7576113b761138a565b634e487b7160e01b600052601260045260246000fd5b60008261141657634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061142f57607f821691505b60208210810361144f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561146757600080fd5b5051919050565b6001600160801b03828116828216039080821115610e3e57610e3e61138a565b8381528260208201526060604082015260006110b2606083018461115756fea26469706673582212207fe7ceb1a89d489b1c1c04f815c8534f1afe373c6b48bf688b70eed7deffbda564736f6c63430008140033","sourceMap":"189:2325:105:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;189:2325:105;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461019f578063ba414fa6146101a7578063d917758a146101bf578063e20c9f71146101d257600080fd5b806385226c811461016f578063916a17c6146101845780639348991d1461018c57600080fd5b80633e5e3c23116100c85780633e5e3c23146101375780633f7286f41461013f5780635ecf4bd51461014757806366d9a9a01461015a57600080fd5b80631ed7831c146100ef578063294e734c1461010d5780632ade388014610122575b600080fd5b6100f76101da565b60405161010491906110bb565b60405180910390f35b61012061011b366004611124565b61023c565b005b61012a61038a565b604051610104919061119d565b6100f76104cc565b6100f761052c565b610120610155366004611124565b61058c565b6101626106a5565b604051610104919061125d565b6101776107a0565b6040516101049190611328565b610162610870565b61012061019a366004611124565b61096b565b610177610abc565b6101af610b8c565b6040519015158152602001610104565b6101206101cd366004611124565b610c47565b6100f7610dab565b6060601480548060200260200160405190810160405280929190818152602001828054801561023257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610214575b5050505050905090565b67016345785d8a0000816001600160801b031611156102d957604051630618f58760e51b8152638630bc6b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156102a857600080fd5b505af11580156102bc573d6000803e3d6000fd5b506102d4925050506001600160801b03831682610e0b565b505050565b6000670de0b6b3a764000060016102fc6001600160801b038086169087166113a0565b61030e90670de0b6b3a76400006113bd565b61031891906113d0565b61032291906113f9565b905060006103396001600160801b03851684610e0b565b9050610384816001600160801b0316836040518060400160405280601c81526020017f7465737446757a7a5f476574466565416d6f756e7446726f6d3a3a3100000000815250610e45565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104c357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104ac57838290600052602060002001805461041f9061141b565b80601f016020809104026020016040519081016040528092919081815260200182805461044b9061141b565b80156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b505050505081526020019060010190610400565b5050505081525050815260200190600101906103ae565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015610232576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610214575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610232576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610214575050505050905090565b6109c4816001600160801b0316111561061e57604051630618f58760e51b81526379cb87ad60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b506102d4925050506001600160801b03831682610eb5565b60006127106106396001600160801b038085169086166113a0565b61064391906113f9565b9050600061065a6001600160801b03851684610eb5565b9050610384816001600160801b0316836040518060400160405280602081526020017f7465737446757a7a5f47657450726f746f636f6c466565416d6f756e743a3a31815250610e45565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104c35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561078857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107355790505b505050505081525050815260200190600101906106c9565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104c35783829060005260206000200180546107e39061141b565b80601f016020809104026020016040519081016040528092919081815260200182805461080f9061141b565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050815260200190600101906107c4565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104c35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561095357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116109005790505b50505050508152505081526020019060010190610894565b67016345785d8a0000816001600160801b03161115610a0557604051630618f58760e51b8152638630bc6b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156109d757600080fd5b505af11580156109eb573d6000803e3d6000fd5b50610a03925050506001600160801b03831682610f09565b505b6ec097ce7bc90715b34b9f10000000006000610a53610a356001600160801b038516670de0b6b3a76400006113bd565b83610a4c6001600160801b038088169089166113a0565b9190610f50565b90506000610a6a6001600160801b03861685610f09565b9050610ab5816001600160801b0316836040518060400160405280601d81526020017f7465737446757a7a5f476574436f6d706f736974696f6e4665653a3a31000000815250610e45565b5050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104c3578382906000526020600020018054610aff9061141b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2b9061141b565b8015610b785780601f10610b4d57610100808354040283529160200191610b78565b820191906000526020600020905b815481529060010190602001808311610b5b57829003601f168201915b505050505081526020019060010190610ae0565b60075460009060ff1615610ba4575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190611455565b1415905090565b67016345785d8a0000816001600160801b03161115610cdf57604051630618f58760e51b8152638630bc6b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610cb357600080fd5b505af1158015610cc7573d6000803e3d6000fd5b506102d4925050506001600160801b03831682610f7a565b6000610cf382670de0b6b3a764000061146e565b90506000816001600160801b03166001836001600160801b0316856001600160801b0316876001600160801b0316610d2b91906113a0565b610d3591906113bd565b610d3f91906113d0565b610d4991906113f9565b90506000610d606001600160801b03861685610f7a565b9050610ab5816001600160801b0316836040518060400160405280601881526020017f7465737446757a7a5f476574466565416d6f756e743a3a310000000000000000815250610e45565b60606013805480602002602001604051908101604052809291908181526020018280548015610232576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610214575050505050905090565b600081610e1781610fb7565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b0386811690861602015b0491505b5092915050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610e809086908690869060040161148e565b60006040518083038186803b158015610e9857600080fd5b505afa158015610eac573d6000803e3d6000fd5b50505050505050565b6000816109c4816001600160801b03161115610ee4576040516379cb87ad60e11b815260040160405180910390fd5b612710836001600160801b0316856001600160801b03160281610e3a57610e3a6113e3565b600081610f1581610fb7565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101025b0495945050505050565b6000806000610f5f8686610fec565b91509150610f70868686858561100b565b9695505050505050565b600081610f8681610fb7565b6001600160801b03808416670de0b6b3a76400008190039182916000199188160282010181610f4657610f466113e3565b67016345785d8a0000816001600160801b03161115610fe957604051638630bc6b60e01b815260040160405180910390fd5b50565b6000806000198385098385029250828110838203039150509250929050565b60008160000361102c57838381611024576110246113e3565b0490506110b2565b83821061104c576040516313eae71560e01b815260040160405180910390fd5b60008486880960018619810187169687900496600081900381900490910186831190950394850291909503949094049390931792505060026003840281188085028203028085028203028085028203028085028203028085028203028085029091030282025b95945050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fc5783516001600160a01b0316835292840192918401916001016110d7565b50909695505050505050565b80356001600160801b038116811461111f57600080fd5b919050565b6000806040838503121561113757600080fd5b61114083611108565b915061114e60208401611108565b90509250929050565b6000815180845260005b8181101561117d57602081850181015186830182015201611161565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561124d57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561123757605f19898503018352611225848651611157565b948e01949350918d0191600101611209565b505050978a0197945050918801916001016111c4565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561131957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156113045783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906112c2565b50978a01979550505091870191600101611285565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561137d57603f1988860301845261136b858351611157565b9450928501929085019060010161134f565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176113b7576113b761138a565b92915050565b808201808211156113b7576113b761138a565b818103818111156113b7576113b761138a565b634e487b7160e01b600052601260045260246000fd5b60008261141657634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061142f57607f821691505b60208210810361144f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561146757600080fd5b5051919050565b6001600160801b03828116828216039080821115610e3e57610e3e61138a565b8381528260208201526060604082015260006110b2606083018461115756fea26469706673582212207fe7ceb1a89d489b1c1c04f815c8534f1afe373c6b48bf688b70eed7deffbda564736f6c63430008140033","sourceMap":"189:2325:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;299:518:105;;;;;;:::i;:::-;;:::i;:::-;;3360:151:5;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;1965:547:105:-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;1364:595:105:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5924:14:127;;5917:22;5899:41;;5887:2;5872:18;1243:204:1;5759:187:127;823:535:105;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;2452:134::-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;299:518:105:-;483:6:65;393:3:105;-1:-1:-1;;;;;393:23:105;;389:422;;;432:58;;-1:-1:-1;;;432:58:105;;-1:-1:-1;;;432:58:105;;;6095:52:127;432:15:105;;;;6068:18:127;;432:58:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;504:35:105;;-1:-1:-1;;;;;;;;504:30:105;;535:3;504:30;:35::i;:::-;;299:518;;:::o;389:422::-;570:25;642:4;637:1;599:28;-1:-1:-1;;;;;599:28:105;;;;:22;;:28;:::i;:::-;:35;;630:4;599:35;:::i;:::-;:39;;;;:::i;:::-;598:48;;;;:::i;:::-;570:76;-1:-1:-1;660:17:105;680:35;-1:-1:-1;;;;;680:30:105;;711:3;680:30;:35::i;:::-;660:55;;730:70;739:9;-1:-1:-1;;;;;730:70:105;750:17;730:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;556:255;;299:518;;:::o;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;1965:547:105:-;549:5:65;2056:3:105;-1:-1:-1;;;;;2056:34:105;;2052:454;;;2106:68;;-1:-1:-1;;;2106:68:105;;-1:-1:-1;;;2106:68:105;;;6095:52:127;2106:15:105;;;;6068:18:127;;2106:68:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2188:32:105;;-1:-1:-1;;;;;;;;2188:27:105;;2216:3;2188:27;:32::i;2052:454::-;2251:33;2313:3;2288:21;-1:-1:-1;;;;;2288:21:105;;;;:15;;:21;:::i;:::-;2287:29;;;;:::i;:::-;2251:65;-1:-1:-1;2330:25:105;2358:32;-1:-1:-1;;;;;2358:27:105;;2386:3;2358:27;:32::i;:::-;2330:60;;2405:90;2414:17;-1:-1:-1;;;;;2405:90:105;2433:25;2405:90;;;;;;;;;;;;;;;;;:8;:90::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:595:105;483:6:65;1459:3:105;-1:-1:-1;;;;;1459:23:105;;1455:162;;;1498:58;;-1:-1:-1;;;1498:58:105;;-1:-1:-1;;;1498:58:105;;;6095:52:127;1498:15:105;;;;6068:18:127;;1498:58:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1570:36:105;;-1:-1:-1;;;;;;;;1570:31:105;;1602:3;1570:31;:36::i;:::-;;1455:162;1649:4;1627:19;1708:80;1755:19;-1:-1:-1;;;;;1755:12:105;;1770:4;1755:19;:::i;:::-;1776:11;1709:28;-1:-1:-1;;;;;1709:28:105;;;;:22;;:28;:::i;:::-;1708:46;:80;:46;:80::i;:::-;1663:125;-1:-1:-1;1799:22:105;1824:36;-1:-1:-1;;;;;1824:31:105;;1856:3;1824:31;:36::i;:::-;1799:61;;1871:81;1880:14;-1:-1:-1;;;;;1871:81:105;1896:22;1871:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;1445:514;;;1364:595;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;7639:74:127;;;1398:17:1;7729:18:127;;;7722:34;1428:1:1;;1377:7;;7612:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;823:535:105:-;483:6:65;906:3:105;-1:-1:-1;;;;;906:23:105;;902:450;;;945:58;;-1:-1:-1;;;945:58:105;;-1:-1:-1;;;945:58:105;;;6095:52:127;945:15:105;;;;6068:18:127;;945:58:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1017:24:105;;-1:-1:-1;;;;;;;;1017:19:105;;1037:3;1017:19;:24::i;902:450::-;1072:19;1094:10;1101:3;1094:4;:10;:::i;:::-;1072:32;;1118:25;1190:11;-1:-1:-1;;;;;1146:55:105;1185:1;1171:11;-1:-1:-1;;;;;1147:35:105;1165:3;-1:-1:-1;;;;;1147:21:105;1155:6;-1:-1:-1;;;;;1147:15:105;:21;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;;;:::i;:::-;1146:55;;;;:::i;:::-;1118:83;-1:-1:-1;1216:17:105;1236:24;-1:-1:-1;;;;;1236:19:105;;1256:3;1236:19;:24::i;:::-;1216:44;;1275:66;1284:9;-1:-1:-1;;;;;1275:66:105;1295:17;1275:66;;;;;;;;;;;;;;;;;:8;:66::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1065:407:66:-;1208:7;1181:8;495:15;506:3;495:10;:15::i;:::-;363:4:65::1;1371:60:66::0;-1:-1:-1;;;;;1371:23:66;;::::1;:34:::0;;::::1;;:60:::0;1370:84:::1;;1355:100;;520:1;1065:407:::0;;;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;3087:304:66:-;3249:7;3217:13;549:5:65;734:13:66;-1:-1:-1;;;;;734:44:66;;730:91;;;787:34;;-1:-1:-1;;;787:34:66;;;;;;;;;;;730:91;623:6:65::1;3332:13:66;-1:-1:-1::0;;;;;3311:34:66::1;3319:9;-1:-1:-1::0;;;;;3311:18:66::1;:34;:62;;;;;:::i;2316:501::-:0;2460:7;2433:8;495:15;506:3;495:10;:15::i;:::-;419:21:65;;-1:-1:-1;;;;;2707:23:66;;::::1;2745:17:::0;;::::1;2707:34:::0;;::::1;363:4:65;2745:39:66::0;;;::::1;2707:78;:92;;::::0;2316:501;-1:-1:-1;;;;;2316:501:66:o;956:247:83:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:83:o;1675:405:66:-;1774:7;1755:8;495:15;506:3;495:10;:15::i;:::-;-1:-1:-1;;;;;1839:30:66;;::::1;363:4:65;1839:30:66::0;;::::1;::::0;;;-1:-1:-1;;2003:15:66;;::::1;:26;:40:::0;::::1;:44:::0;1839:30;2002:60:::1;;;;:::i;3508:123::-:0;483:6:65;3568:3:66;-1:-1:-1;;;;;3568:23:66;;3564:60;;;3600:24;;-1:-1:-1;;;3600:24:66;;;;;;;;;;;3564:60;3508:123;:::o;6220:547:83:-;6286:13;;-1:-1:-1;;6654:1:83;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:83;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8663:25;;;;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;8125:21;;;;8775:19;;;;9064:24;;;;;-1:-1:-1;;9459:1:83;9440;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;10557:15;;7446:3151;7208:3395;;;;;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:188::-;768:20;;-1:-1:-1;;;;;817:46:127;;807:57;;797:85;;878:1;875;868:12;797:85;700:188;;;:::o;893:260::-;961:6;969;1022:2;1010:9;1001:7;997:23;993:32;990:52;;;1038:1;1035;1028:12;990:52;1061:29;1080:9;1061:29;:::i;:::-;1051:39;;1109:38;1143:2;1132:9;1128:18;1109:38;:::i;:::-;1099:48;;893:260;;;;;:::o;1158:423::-;1200:3;1238:5;1232:12;1265:6;1260:3;1253:19;1290:1;1300:162;1314:6;1311:1;1308:13;1300:162;;;1376:4;1432:13;;;1428:22;;1422:29;1404:11;;;1400:20;;1393:59;1329:12;1300:162;;;1304:3;1507:1;1500:4;1491:6;1486:3;1482:16;1478:27;1471:38;1570:4;1563:2;1559:7;1554:2;1546:6;1542:15;1538:29;1533:3;1529:39;1525:50;1518:57;;;1158:423;;;;:::o;1586:1765::-;1819:2;1871:21;;;1941:13;;1844:18;;;1963:22;;;1790:4;;1819:2;2004;;2022:18;;;;2059:1;2102:15;;;2087:31;;2083:40;;2146:15;;;1790:4;;2210:1112;2226:6;2221:3;2218:15;2210:1112;;;-1:-1:-1;;2295:22:127;;;2291:36;2279:49;;2351:13;;2438:9;;-1:-1:-1;;;;;2434:58:127;2419:74;;2532:11;;2526:18;2564:15;;;2557:27;;;2645:19;;2391:15;;;2677:24;;;2858:21;;;;2724:2;2806:17;;;2794:30;;2790:39;;;2748:15;;;;2903:1;2917:296;2933:8;2928:3;2925:17;2917:296;;;3039:2;3035:7;3026:6;3018;3014:19;3010:33;3003:5;2996:48;3071:42;3106:6;3095:8;3089:15;3071:42;:::i;:::-;3142:17;;;;3061:52;-1:-1:-1;3185:14:127;;;;2961:1;2952:11;2917:296;;;-1:-1:-1;;;3300:12:127;;;;3236:6;-1:-1:-1;;3265:15:127;;;;2252:1;2243:11;2210:1112;;;-1:-1:-1;3339:6:127;;1586:1765;-1:-1:-1;;;;;;;;;;1586:1765:127:o;3356:1590::-;3558:4;3587:2;3627;3616:9;3612:18;3657:2;3646:9;3639:21;3680:6;3715;3709:13;3746:6;3738;3731:22;3772:2;3762:12;;3805:2;3794:9;3790:18;3783:25;;3867:2;3857:6;3854:1;3850:14;3839:9;3835:30;3831:39;3905:2;3897:6;3893:15;3926:1;3947;3957:960;3973:6;3968:3;3965:15;3957:960;;;4042:22;;;-1:-1:-1;;4038:36:127;4026:49;;4098:13;;4185:9;;-1:-1:-1;;;;;4181:58:127;4166:74;;4279:11;;4273:18;4311:15;;;4304:27;;;4392:19;;4138:15;;;4424:24;;;4514:21;;;;4559:1;;4482:2;4470:15;;;4573:236;4589:8;4584:3;4581:17;4573:236;;;4670:15;;4687:20;4666:42;4652:57;;4778:17;;;;4617:1;4608:11;;;;;4735:14;;;;4573:236;;;-1:-1:-1;4895:12:127;;;;4832:5;-1:-1:-1;;;4860:15:127;;;;3999:1;3990:11;3957:960;;;-1:-1:-1;4934:6:127;;3356:1590;-1:-1:-1;;;;;;;;;3356:1590:127:o;4951:803::-;5113:4;5142:2;5182;5171:9;5167:18;5212:2;5201:9;5194:21;5235:6;5270;5264:13;5301:6;5293;5286:22;5339:2;5328:9;5324:18;5317:25;;5401:2;5391:6;5388:1;5384:14;5373:9;5369:30;5365:39;5351:53;;5439:2;5431:6;5427:15;5460:1;5470:255;5484:6;5481:1;5478:13;5470:255;;;5577:2;5573:7;5561:9;5553:6;5549:22;5545:36;5540:3;5533:49;5605:40;5638:6;5629;5623:13;5605:40;:::i;:::-;5595:50;-1:-1:-1;5703:12:127;;;;5668:15;;;;5506:1;5499:9;5470:255;;;-1:-1:-1;5742:6:127;;4951:803;-1:-1:-1;;;;;;;4951:803:127:o;6158:127::-;6219:10;6214:3;6210:20;6207:1;6200:31;6250:4;6247:1;6240:15;6274:4;6271:1;6264:15;6290:168;6363:9;;;6394;;6411:15;;;6405:22;;6391:37;6381:71;;6432:18;;:::i;:::-;6290:168;;;;:::o;6463:125::-;6528:9;;;6549:10;;;6546:36;;;6562:18;;:::i;6593:128::-;6660:9;;;6681:11;;;6678:37;;;6695:18;;:::i;6726:127::-;6787:10;6782:3;6778:20;6775:1;6768:31;6818:4;6815:1;6808:15;6842:4;6839:1;6832:15;6858:217;6898:1;6924;6914:132;;6968:10;6963:3;6959:20;6956:1;6949:31;7003:4;7000:1;6993:15;7031:4;7028:1;7021:15;6914:132;-1:-1:-1;7060:9:127;;6858:217::o;7080:380::-;7159:1;7155:12;;;;7202;;;7223:61;;7277:4;7269:6;7265:17;7255:27;;7223:61;7330:2;7322:6;7319:14;7299:18;7296:38;7293:161;;7376:10;7371:3;7367:20;7364:1;7357:31;7411:4;7408:1;7401:15;7439:4;7436:1;7429:15;7293:161;;7080:380;;;:::o;7767:184::-;7837:6;7890:2;7878:9;7869:7;7865:23;7861:32;7858:52;;;7906:1;7903;7896:12;7858:52;-1:-1:-1;7929:16:127;;7767:184;-1:-1:-1;7767:184:127:o;7956:200::-;-1:-1:-1;;;;;8092:10:127;;;8080;;;8076:27;;8115:12;;;8112:38;;;8130:18;;:::i;8161:362::-;8366:6;8355:9;8348:25;8409:6;8404:2;8393:9;8389:18;8382:34;8452:2;8447;8436:9;8432:18;8425:30;8329:4;8472:45;8513:2;8502:9;8498:18;8490:6;8472:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_GetCompositionFee(uint128,uint128)":"9348991d","testFuzz_GetFeeAmount(uint128,uint128)":"d917758a","testFuzz_GetFeeAmountFrom(uint128,uint128)":"294e734c","testFuzz_GetProtocolFeeAmount(uint128,uint128)":"5ecf4bd5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FeeHelper__FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeHelper__ProtocolShareTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountWithFee\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"name\":\"testFuzz_GetCompositionFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"name\":\"testFuzz_GetFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountWithFee\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"name\":\"testFuzz_GetFeeAmountFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"name\":\"testFuzz_GetProtocolFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/FeeHelper.t.sol\":\"FeeHelperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/libraries/FeeHelper.t.sol\":{\"keccak256\":\"0x75c603dc1f2b014f9dee5360cd668c263a74955ac623c184542562a98d0efeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5ad8c1d0ade87023cb98d1fbd919fb33bcdad10db4a92b7650f6b8b86edbe62\",\"dweb:/ipfs/QmSWTrYEHXSYBPdDcwHEMKqMjMpRt3KoK4rN2b2m99iieH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FeeHelper__FeeTooLarge"},{"inputs":[],"type":"error","name":"FeeHelper__ProtocolShareTooLarge"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint128","name":"amountWithFee","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetCompositionFee"},{"inputs":[{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetFeeAmount"},{"inputs":[{"internalType":"uint128","name":"amountWithFee","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetFeeAmountFrom"},{"inputs":[{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetProtocolFeeAmount"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/FeeHelper.t.sol":"FeeHelperTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/libraries/FeeHelper.t.sol":{"keccak256":"0x75c603dc1f2b014f9dee5360cd668c263a74955ac623c184542562a98d0efeaa","urls":["bzz-raw://b5ad8c1d0ade87023cb98d1fbd919fb33bcdad10db4a92b7650f6b8b86edbe62","dweb:/ipfs/QmSWTrYEHXSYBPdDcwHEMKqMjMpRt3KoK4rN2b2m99iieH"],"license":"MIT"}},"version":1},"id":105} \ No newline at end of file diff --git a/abi/FlashBorrower.sol/FlashBorrower.json b/abi/FlashBorrower.sol/FlashBorrower.json deleted file mode 100644 index 3c78ad54..00000000 --- a/abi/FlashBorrower.sol/FlashBorrower.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"lender_","type":"address","internalType":"contract ILBPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"LBFlashLoanCallback","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"amounts","type":"bytes32","internalType":"bytes32"},{"name":"totalFees","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"FlashBorrower__UntrustedLender","inputs":[]},{"type":"error","name":"FlashBorrower__UntrustedLoanInitiator","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a060405234801561001057600080fd5b506040516106a83803806106a883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161061e61008a600039600060b4015261061e6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631faa6b8714610030575b600080fd5b61004361003e36600461041f565b610055565b60405190815260200160405180910390f35b600080808080610067868801886104f9565b9296509094509250905060018160018111156100855761008561054c565b036101195760405163ea3446bf60e01b8152306004820152602481018a905260606044820152600060648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea3446bf90608401600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050505b6ffffffffffffffffffffffffffffffffe196001600160801b03851601610153576101506001600160801b03898116908b16610562565b93505b6ffffffffffffffffffffffffffffffffe196001600160801b038416016101955761017e8860801c90565b6101888a60801c90565b6101929190610562565b92505b6001600160801b038416156101c1576101c16001600160a01b038c16336001600160801b0387166101fc565b6001600160801b038316156101ed576101ed6001600160a01b038b16336001600160801b0386166101fc565b509a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610263908490610268565b505050565b600061027d6001600160a01b038416836102d0565b905080516000141580156102a25750808060200190518101906102a09190610597565b155b1561026357604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606102de838360006102e5565b9392505050565b60608147101561030a5760405163cd78605960e01b81523060048201526024016102c7565b600080856001600160a01b0316848660405161032691906105b9565b60006040518083038185875af1925050503d8060008114610363576040519150601f19603f3d011682016040523d82523d6000602084013e610368565b606091505b5091509150610378868383610382565b9695505050505050565b60608261039757610392826103de565b6102de565b81511580156103ae57506001600160a01b0384163b155b156103d757604051639996b31560e01b81526001600160a01b03851660048201526024016102c7565b50806102de565b8051156103ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461040757600080fd5b600080600080600080600060c0888a03121561043a57600080fd5b87356104458161040a565b965060208801356104558161040a565b955060408801356104658161040a565b9450606088013593506080880135925060a088013567ffffffffffffffff8082111561049057600080fd5b818a0191508a601f8301126104a457600080fd5b8135818111156104b357600080fd5b8b60208285010111156104c557600080fd5b60208301945080935050505092959891949750929550565b80356001600160801b03811681146104f457600080fd5b919050565b6000806000806080858703121561050f57600080fd5b610518856104dd565b9350610526602086016104dd565b92506040850135915060608501356002811061054157600080fd5b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b6001600160801b0381811683821601908082111561059057634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156105a957600080fd5b815180151581146102de57600080fd5b6000825160005b818110156105da57602081860181015185830152016105c0565b50600092019182525091905056fea2646970667358221220125c153a56401e84a7f2f5946cba34bab49c83562a8ec35a2e104e6efd5558a164736f6c63430008140033","sourceMap":"401:1309:124:-:0;;;723:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;762:17:124;;;401:1309;;14:307:127;101:6;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:127;;231:42;;221:70;;287:1;284;277:12;221:70;310:5;14:307;-1:-1:-1;;;14:307:127:o;:::-;401:1309:124;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80631faa6b8714610030575b600080fd5b61004361003e36600461041f565b610055565b60405190815260200160405180910390f35b600080808080610067868801886104f9565b9296509094509250905060018160018111156100855761008561054c565b036101195760405163ea3446bf60e01b8152306004820152602481018a905260606044820152600060648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea3446bf90608401600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050505b6ffffffffffffffffffffffffffffffffe196001600160801b03851601610153576101506001600160801b03898116908b16610562565b93505b6ffffffffffffffffffffffffffffffffe196001600160801b038416016101955761017e8860801c90565b6101888a60801c90565b6101929190610562565b92505b6001600160801b038416156101c1576101c16001600160a01b038c16336001600160801b0387166101fc565b6001600160801b038316156101ed576101ed6001600160a01b038b16336001600160801b0386166101fc565b509a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610263908490610268565b505050565b600061027d6001600160a01b038416836102d0565b905080516000141580156102a25750808060200190518101906102a09190610597565b155b1561026357604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606102de838360006102e5565b9392505050565b60608147101561030a5760405163cd78605960e01b81523060048201526024016102c7565b600080856001600160a01b0316848660405161032691906105b9565b60006040518083038185875af1925050503d8060008114610363576040519150601f19603f3d011682016040523d82523d6000602084013e610368565b606091505b5091509150610378868383610382565b9695505050505050565b60608261039757610392826103de565b6102de565b81511580156103ae57506001600160a01b0384163b155b156103d757604051639996b31560e01b81526001600160a01b03851660048201526024016102c7565b50806102de565b8051156103ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461040757600080fd5b600080600080600080600060c0888a03121561043a57600080fd5b87356104458161040a565b965060208801356104558161040a565b955060408801356104658161040a565b9450606088013593506080880135925060a088013567ffffffffffffffff8082111561049057600080fd5b818a0191508a601f8301126104a457600080fd5b8135818111156104b357600080fd5b8b60208285010111156104c557600080fd5b60208301945080935050505092959891949750929550565b80356001600160801b03811681146104f457600080fd5b919050565b6000806000806080858703121561050f57600080fd5b610518856104dd565b9350610526602086016104dd565b92506040850135915060608501356002811061054157600080fd5b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b6001600160801b0381811683821601908082111561059057634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156105a957600080fd5b815180151581146102de57600080fd5b6000825160005b818110156105da57602081860181015185830152016105c0565b50600092019182525091905056fea2646970667358221220125c153a56401e84a7f2f5946cba34bab49c83562a8ec35a2e104e6efd5558a164736f6c63430008140033","sourceMap":"401:1309:124:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;792:916;;;;;;:::i;:::-;;:::i;:::-;;;1503:25:127;;;1491:2;1476:18;792:916:124;;;;;;;;998:7;;;;;1096:53;;;;1107:4;1096:53;:::i;:::-;1017:132;;-1:-1:-1;1017:132:124;;-1:-1:-1;1017:132:124;-1:-1:-1;1017:132:124;-1:-1:-1;1169:16:124;1164:1;:21;;;;;;;;:::i;:::-;;1160:88;;1201:36;;-1:-1:-1;;;1201:36:124;;1219:4;1201:36;;;2618:74:127;2708:18;;;2701:34;;;2771:2;2751:18;;;2744:30;-1:-1:-1;2790:18:127;;;2783:29;1201:7:124;-1:-1:-1;;;;;1201:17:124;;;;2829:19:127;;1201:36:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1160:88;-1:-1:-1;;;;;;;1262:29:124;;;1258:110;;1318:39;-1:-1:-1;;;;;3042:16:78;;;;;;1318:39:124;:::i;:::-;1307:50;;1258:110;-1:-1:-1;;;;;;;1382:29:124;;;1378:110;;1458:19;:9;3395:6:78;3391:14;;3291:130;1458:19:124;1438:17;:7;3395:6:78;3391:14;;3291:130;1438:17:124;:39;;;;:::i;:::-;1427:50;;1378:110;-1:-1:-1;;;;;1502:12:124;;;1498:84;;1530:41;-1:-1:-1;;;;;1530:19:124;;1550:10;-1:-1:-1;;;;;1530:41:124;;:19;:41::i;:::-;-1:-1:-1;;;;;1596:12:124;;;1592:84;;1624:41;-1:-1:-1;;;;;1624:19:124;;1644:10;-1:-1:-1;;;;;1624:41:124;;:19;:41::i;:::-;-1:-1:-1;1693:8:124;792:916;-1:-1:-1;;;;;;;;;;792:916:124:o;1303:160:35:-;1412:43;;;-1:-1:-1;;;;;3350:55:127;;1412:43:35;;;3332:74:127;3422:18;;;;3415:34;;;1412:43:35;;;;;;;;;;3305:18:127;;;;1412:43:35;;;;;;;;;;-1:-1:-1;;;1412:43:35;;;1385:71;;1405:5;;1385:19;:71::i;:::-;1303:160;;;:::o;6468:629::-;6887:23;6913:33;-1:-1:-1;;;;;6913:27:35;;6941:4;6913:27;:33::i;:::-;6887:59;;6960:10;:17;6981:1;6960:22;;:57;;;;;6998:10;6987:30;;;;;;;;;;;;:::i;:::-;6986:31;6960:57;6956:135;;;7040:40;;-1:-1:-1;;;7040:40:35;;-1:-1:-1;;;;;3906:55:127;;7040:40:35;;;3888:74:127;3861:18;;7040:40:35;;;;;;;;2705:151:36;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;:::-;2804:45;2705:151;-1:-1:-1;;;2705:151:36:o;3180:392::-;3279:12;3331:5;3307:21;:29;3303:108;;;3359:41;;-1:-1:-1;;;3359:41:36;;3394:4;3359:41;;;3888:74:127;3861:18;;3359:41:36;3742:226:127;3303:108:36;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:36;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;3180:392;-1:-1:-1;;;;;;3180:392:36:o;4625:582::-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:36;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:36;;-1:-1:-1;;;;;3906:55:127;;5121:24:36;;;3888:74:127;3861:18;;5121:24:36;3742:226:127;5041:119:36;-1:-1:-1;5180:10:36;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:36;;;;;;;;;;;5870:383;5743:516;:::o;14:154:127:-;-1:-1:-1;;;;;93:5:127;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:1179;320:6;328;336;344;352;360;368;421:3;409:9;400:7;396:23;392:33;389:53;;;438:1;435;428:12;389:53;477:9;464:23;496:31;521:5;496:31;:::i;:::-;546:5;-1:-1:-1;603:2:127;588:18;;575:32;616:33;575:32;616:33;:::i;:::-;668:7;-1:-1:-1;727:2:127;712:18;;699:32;740:33;699:32;740:33;:::i;:::-;792:7;-1:-1:-1;846:2:127;831:18;;818:32;;-1:-1:-1;897:3:127;882:19;;869:33;;-1:-1:-1;953:3:127;938:19;;925:33;977:18;1007:14;;;1004:34;;;1034:1;1031;1024:12;1004:34;1072:6;1061:9;1057:22;1047:32;;1117:7;1110:4;1106:2;1102:13;1098:27;1088:55;;1139:1;1136;1129:12;1088:55;1179:2;1166:16;1205:2;1197:6;1194:14;1191:34;;;1221:1;1218;1211:12;1191:34;1266:7;1261:2;1252:6;1248:2;1244:15;1240:24;1237:37;1234:57;;;1287:1;1284;1277:12;1234:57;1318:2;1314;1310:11;1300:21;;1340:6;1330:16;;;;;173:1179;;;;;;;;;;:::o;1539:188::-;1607:20;;-1:-1:-1;;;;;1656:46:127;;1646:57;;1636:85;;1717:1;1714;1707:12;1636:85;1539:188;;;:::o;1732:486::-;1831:6;1839;1847;1855;1908:3;1896:9;1887:7;1883:23;1879:33;1876:53;;;1925:1;1922;1915:12;1876:53;1948:29;1967:9;1948:29;:::i;:::-;1938:39;;1996:38;2030:2;2019:9;2015:18;1996:38;:::i;:::-;1986:48;;2081:2;2070:9;2066:18;2053:32;2043:42;;2135:2;2124:9;2120:18;2107:32;2168:1;2161:5;2158:12;2148:40;;2184:1;2181;2174:12;2148:40;1732:486;;;;-1:-1:-1;1732:486:127;;-1:-1:-1;;1732:486:127:o;2223:127::-;2284:10;2279:3;2275:20;2272:1;2265:31;2315:4;2312:1;2305:15;2339:4;2336:1;2329:15;2859:294;-1:-1:-1;;;;;2981:10:127;;;2993;;;2977:27;;3016:11;;;3013:134;;;3069:10;3064:3;3060:20;3057:1;3050:31;3104:4;3101:1;3094:15;3132:4;3129:1;3122:15;3013:134;;2859:294;;;;:::o;3460:277::-;3527:6;3580:2;3568:9;3559:7;3555:23;3551:32;3548:52;;;3596:1;3593;3586:12;3548:52;3628:9;3622:16;3681:5;3674:13;3667:21;3660:5;3657:32;3647:60;;3703:1;3700;3693:12;3973:412;4102:3;4140:6;4134:13;4165:1;4175:129;4189:6;4186:1;4183:13;4175:129;;;4287:4;4271:14;;;4267:25;;4261:32;4248:11;;;4241:53;4204:12;4175:129;;;-1:-1:-1;4359:1:127;4323:16;;4348:13;;;-1:-1:-1;4323:16:127;3973:412;-1:-1:-1;3973:412:127:o","linkReferences":{},"immutableReferences":{"115484":[{"start":180,"length":32}]}},"methodIdentifiers":{"LBFlashLoanCallback(address,address,address,bytes32,bytes32,bytes)":"1faa6b87"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"lender_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FlashBorrower__UntrustedLender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FlashBorrower__UntrustedLoanInitiator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LBFlashLoanCallback\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/FlashBorrower.sol\":\"FlashBorrower\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract ILBPair","name":"lender_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"FlashBorrower__UntrustedLender"},{"inputs":[],"type":"error","name":"FlashBorrower__UntrustedLoanInitiator"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"},{"internalType":"bytes32","name":"totalFees","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"LBFlashLoanCallback","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/FlashBorrower.sol":"FlashBorrower"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"}},"version":1},"id":124} \ No newline at end of file diff --git a/abi/GetOracleLength.t.sol/GetAllSizeAndAddress.json b/abi/GetOracleLength.t.sol/GetAllSizeAndAddress.json deleted file mode 100644 index ecde4b17..00000000 --- a/abi/GetOracleLength.t.sol/GetAllSizeAndAddress.json +++ /dev/null @@ -1,5919 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "internalType": "contract LBFactory", - "name": "factory", - "type": "address" - } - ], - "name": "getAllSizeAndAddress", - "outputs": [ - { - "internalType": "address[]", - "name": "pairs", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "size", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b506104ba806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634978ef8114610030575b600080fd5b61004361003e3660046102ba565b61005a565b6040516100519291906102de565b60405180910390f35b6060806000836001600160a01b0316634e937c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561009d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c19190610362565b90508067ffffffffffffffff8111156100dc576100dc61037b565b604051908082528060200260200182016040528015610105578160200160208202803683370190505b5092508067ffffffffffffffff8111156101215761012161037b565b60405190808252806020026020018201604052801561014a578160200160208202803683370190505b50915060005b8181101561029b57604051633ed7aeb360e11b8152600481018290526000906001600160a01b03871690637daf5d6690602401602060405180830381865afa1580156101a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c49190610391565b90506000816001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015610206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022a91906103da565b5050509150508186848151811061024357610243610447565b60200260200101906001600160a01b031690816001600160a01b0316815250508061ffff1685848151811061027a5761027a610447565b602002602001018181525050505080806102939061045d565b915050610150565b5050915091565b6001600160a01b03811681146102b757600080fd5b50565b6000602082840312156102cc57600080fd5b81356102d7816102a2565b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156103205781516001600160a01b0316845292840192908401906001016102fb565b5050508381038285015284518082528583019183019060005b8181101561035557835183529284019291840191600101610339565b5090979650505050505050565b60006020828403121561037457600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103a357600080fd5b81516102d7816102a2565b805161ffff811681146103c057600080fd5b919050565b805164ffffffffff811681146103c057600080fd5b600080600080600060a086880312156103f257600080fd5b855160ff8116811461040357600080fd5b9450610411602087016103ae565b935061041f604087016103ae565b925061042d606087016103c5565b915061043b608087016103c5565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006001820161047d57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220633d93cb125462c5b7c37516885e85ffb21c1555ce23a29f4bcf2c68090ce3ea64736f6c63430008140033", - "sourceMap": "3649:590:88:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80634978ef8114610030575b600080fd5b61004361003e3660046102ba565b61005a565b6040516100519291906102de565b60405180910390f35b6060806000836001600160a01b0316634e937c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561009d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c19190610362565b90508067ffffffffffffffff8111156100dc576100dc61037b565b604051908082528060200260200182016040528015610105578160200160208202803683370190505b5092508067ffffffffffffffff8111156101215761012161037b565b60405190808252806020026020018201604052801561014a578160200160208202803683370190505b50915060005b8181101561029b57604051633ed7aeb360e11b8152600481018290526000906001600160a01b03871690637daf5d6690602401602060405180830381865afa1580156101a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c49190610391565b90506000816001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015610206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022a91906103da565b5050509150508186848151811061024357610243610447565b60200260200101906001600160a01b031690816001600160a01b0316815250508061ffff1685848151811061027a5761027a610447565b602002602001018181525050505080806102939061045d565b915050610150565b5050915091565b6001600160a01b03811681146102b757600080fd5b50565b6000602082840312156102cc57600080fd5b81356102d7816102a2565b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156103205781516001600160a01b0316845292840192908401906001016102fb565b5050508381038285015284518082528583019183019060005b8181101561035557835183529284019291840191600101610339565b5090979650505050505050565b60006020828403121561037457600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103a357600080fd5b81516102d7816102a2565b805161ffff811681146103c057600080fd5b919050565b805164ffffffffff811681146103c057600080fd5b600080600080600060a086880312156103f257600080fd5b855160ff8116811461040357600080fd5b9450610411602087016103ae565b935061041f604087016103ae565b925061042d606087016103c5565b915061043b608087016103c5565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006001820161047d57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220633d93cb125462c5b7c37516885e85ffb21c1555ce23a29f4bcf2c68090ce3ea64736f6c63430008140033", - "sourceMap": "3649:590:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3685:552;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;3781:22;3805:21;3842:15;3860:7;-1:-1:-1;;;;;3860:26:88;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3842:46;;3921:7;3907:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3907:22:88;;3899:30;;3960:7;3946:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3946:22:88;;3939:29;;3984:9;3979:252;4003:7;3999:1;:11;3979:252;;;4060:27;;-1:-1:-1;;;4060:27:88;;;;;2139:25:130;;;4031:11:88;;-1:-1:-1;;;;;4060:24:88;;;;;2112:18:130;;4060:27:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4031:58;;4107:12;4126:4;-1:-1:-1;;;;;4126:24:88;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4104:48;;;;;;4186:4;4167:5;4173:1;4167:8;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;4167:24:88;;;-1:-1:-1;;;;;4167:24:88;;;;;4215:5;4205:15;;:4;4210:1;4205:7;;;;;;;;:::i;:::-;;;;;;:15;;;;;4017:214;;4012:3;;;;;:::i;:::-;;;;3979:252;;;;3832:405;3685:552;;;:::o;14:165:130:-;-1:-1:-1;;;;;104:5:130;100:54;93:5;90:65;80:93;;169:1;166;159:12;80:93;14:165;:::o;184:277::-;262:6;315:2;303:9;294:7;290:23;286:32;283:52;;;331:1;328;321:12;283:52;370:9;357:23;389:42;425:5;389:42;:::i;:::-;450:5;184:277;-1:-1:-1;;;184:277:130:o;466:1201::-;734:2;746:21;;;816:13;;719:18;;;838:22;;;686:4;;913;;891:2;876:18;;;940:15;;;686:4;983:218;997:6;994:1;991:13;983:218;;;1062:13;;-1:-1:-1;;;;;1058:62:130;1046:75;;1141:12;;;;1176:15;;;;1019:1;1012:9;983:218;;;-1:-1:-1;;;1237:19:130;;;1217:18;;;1210:47;1307:13;;1329:21;;;1405:15;;;;1368:12;;;1440:1;1450:189;1466:8;1461:3;1458:17;1450:189;;;1535:15;;1521:30;;1612:17;;;;1573:14;;;;1494:1;1485:11;1450:189;;;-1:-1:-1;1656:5:130;;466:1201;-1:-1:-1;;;;;;;466:1201:130:o;1672:184::-;1742:6;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;-1:-1:-1;1834:16:130;;1672:184;-1:-1:-1;1672:184:130:o;1861:127::-;1922:10;1917:3;1913:20;1910:1;1903:31;1953:4;1950:1;1943:15;1977:4;1974:1;1967:15;2175:279;2262:6;2315:2;2303:9;2294:7;2290:23;2286:32;2283:52;;;2331:1;2328;2321:12;2283:52;2363:9;2357:16;2382:42;2418:5;2382:42;:::i;2459:163::-;2537:13;;2590:6;2579:18;;2569:29;;2559:57;;2612:1;2609;2602:12;2559:57;2459:163;;;:::o;2627:169::-;2705:13;;2758:12;2747:24;;2737:35;;2727:63;;2786:1;2783;2776:12;2801:607;2901:6;2909;2917;2925;2933;2986:3;2974:9;2965:7;2961:23;2957:33;2954:53;;;3003:1;3000;2993:12;2954:53;3035:9;3029:16;3085:4;3078:5;3074:16;3067:5;3064:27;3054:55;;3105:1;3102;3095:12;3054:55;3128:5;-1:-1:-1;3152:48:130;3196:2;3181:18;;3152:48;:::i;:::-;3142:58;;3219:48;3263:2;3252:9;3248:18;3219:48;:::i;:::-;3209:58;;3286:48;3330:2;3319:9;3315:18;3286:48;:::i;:::-;3276:58;;3353:49;3397:3;3386:9;3382:19;3353:49;:::i;:::-;3343:59;;2801:607;;;;;;;;:::o;3413:127::-;3474:10;3469:3;3465:20;3462:1;3455:31;3505:4;3502:1;3495:15;3529:4;3526:1;3519:15;3545:232;3584:3;3605:17;;;3602:140;;3664:10;3659:3;3655:20;3652:1;3645:31;3699:4;3696:1;3689:15;3727:4;3724:1;3717:15;3602:140;-1:-1:-1;3769:1:130;3758:13;;3545:232::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "getAllSizeAndAddress(address)": "4978ef81" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract LBFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"getAllSizeAndAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"size\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/GetOracleLength.t.sol\":\"GetAllSizeAndAddress\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xeccd5d8873f709fa164aaa8f742675bc547e137f71a292e69104900849339ba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97ff96e368ef092930b738140565bbf34e7227b32e4e866c8891bf1d16e4e9ff\",\"dweb:/ipfs/QmRDNpvERz5brRX81qE64QmGbfPBoP15V9bqwYfXEDmNnx\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0x1888cc5b7dc98cab321022981ee8afbaabbac17f930f162402401c9b723aa7d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58d29cb3db3d8a5559ea061a402cdd5a38e73a62dbc2bf4e6b68ab7bd8745d34\",\"dweb:/ipfs/QmbZhFFyEzn1V4YZ9ifkJevhRv19meCg5UMP458YfJAEFq\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0xc924d832dfd6292a90f26174d8159dd52a6b16b8b3c1ae526521637038917eea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3d4864f4b3c623ffa03ff8325c7ed084d5d9137e073779e5ddbcdfd1d9b30fb\",\"dweb:/ipfs/QmPGQ5V3NBPQRfHyrdL9G7gnw4ccYdwqR5FfufGRijnBBQ\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x3faae84c13214d52f519d4dca8d48be1ad4176c75ec62816e7484555a30628ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c59c2e3322c61109e4044b80838359a2854dc416431175ca2bf6b58ec329168\",\"dweb:/ipfs/QmUXkCAiPss64mSjLnvaq4pYrQA8yhid5oqnh1B91irofL\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f\",\"dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76\",\"dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/GetOracleLength.t.sol\":{\"keccak256\":\"0x75d063a999d03ebc3669c240b36307229586b213c57f7e36bae967c726c528af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://27b83c90da6c725361a9f62b8dbfd3d2177193218f78a70b820d9e5a77d8da22\",\"dweb:/ipfs/QmQzqCKe9uxdnPYcJX2htSweqSxqac57Ln5RTBsCSVJkHE\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xbc59547d118283014b9d28c83a406a1e641f43b0276a19b6fae998dcfe44b55c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f82dfdeba66720a0af6676bfa84c9b74066d5c715a4877914f38cf76e5cada8\",\"dweb:/ipfs/QmaQy45RtZRyqVFAHpDRX6VpbE8hDg1WRJuTJPsAYZwLEm\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "contract LBFactory", - "name": "factory", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getAllSizeAndAddress", - "outputs": [ - { - "internalType": "address[]", - "name": "pairs", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "size", - "type": "uint256[]" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "test/GetOracleLength.t.sol": "GetAllSizeAndAddress" - }, - "libraries": {} - }, - "sources": { - "lib/forge-std/src/Base.sol": { - "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c", - "urls": [ - "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224", - "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdAssertions.sol": { - "keccak256": "0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361", - "urls": [ - "bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c", - "dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdChains.sol": { - "keccak256": "0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052", - "urls": [ - "bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb", - "dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdCheats.sol": { - "keccak256": "0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7", - "urls": [ - "bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2", - "dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdError.sol": { - "keccak256": "0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77", - "urls": [ - "bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6", - "dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdInvariant.sol": { - "keccak256": "0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6", - "urls": [ - "bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d", - "dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdJson.sol": { - "keccak256": "0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763", - "urls": [ - "bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b", - "dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdMath.sol": { - "keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2", - "urls": [ - "bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92", - "dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStorage.sol": { - "keccak256": "0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811", - "urls": [ - "bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32", - "dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStyle.sol": { - "keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d", - "urls": [ - "bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8", - "dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdUtils.sol": { - "keccak256": "0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0", - "urls": [ - "bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61", - "dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX" - ], - "license": "MIT" - }, - "lib/forge-std/src/Test.sol": { - "keccak256": "0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362", - "urls": [ - "bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4", - "dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1" - ], - "license": "MIT" - }, - "lib/forge-std/src/Vm.sol": { - "keccak256": "0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876", - "urls": [ - "bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533", - "dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te" - ], - "license": "MIT OR Apache-2.0" - }, - "lib/forge-std/src/console.sol": { - "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba", - "urls": [ - "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70", - "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec" - ], - "license": "MIT" - }, - "lib/forge-std/src/console2.sol": { - "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea", - "urls": [ - "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973", - "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC165.sol": { - "keccak256": "0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600", - "urls": [ - "bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc", - "dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC20.sol": { - "keccak256": "0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947", - "urls": [ - "bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7", - "dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC721.sol": { - "keccak256": "0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15", - "urls": [ - "bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f", - "dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IMulticall3.sol": { - "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a", - "urls": [ - "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0", - "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC20.sol": { - "keccak256": "0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b", - "urls": [ - "bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f", - "dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC721.sol": { - "keccak256": "0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9", - "urls": [ - "bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b", - "dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN" - ], - "license": "MIT" - }, - "lib/forge-std/src/safeconsole.sol": { - "keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381", - "urls": [ - "bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae", - "dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b", - "urls": [ - "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609", - "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/AccessControl.sol": { - "keccak256": "0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308", - "urls": [ - "bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80", - "dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { - "keccak256": "0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9", - "urls": [ - "bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f", - "dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { - "keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb", - "urls": [ - "bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6", - "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol": { - "keccak256": "0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12", - "urls": [ - "bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7", - "dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol": { - "keccak256": "0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253", - "urls": [ - "bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73", - "dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol": { - "keccak256": "0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724", - "urls": [ - "bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a", - "dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol": { - "keccak256": "0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c", - "urls": [ - "bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba", - "dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol": { - "keccak256": "0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229", - "urls": [ - "bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155", - "dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { - "keccak256": "0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61", - "urls": [ - "bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc", - "dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4", - "urls": [ - "bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009", - "dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "keccak256": "0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28", - "urls": [ - "bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323", - "dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": { - "keccak256": "0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91", - "urls": [ - "bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488", - "dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Address.sol": { - "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721", - "urls": [ - "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245", - "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", - "urls": [ - "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", - "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": { - "keccak256": "0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e", - "urls": [ - "bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9", - "dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { - "keccak256": "0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c", - "urls": [ - "bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e", - "dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol": { - "keccak256": "0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5", - "urls": [ - "bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4", - "dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { - "keccak256": "0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa", - "urls": [ - "bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1", - "dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA" - ], - "license": "MIT" - }, - "src/LBFactory.sol": { - "keccak256": "0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4", - "urls": [ - "bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235", - "dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA" - ], - "license": "MIT" - }, - "src/LBPair.sol": { - "keccak256": "0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc", - "urls": [ - "bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c", - "dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6" - ], - "license": "MIT" - }, - "src/LBQuoter.sol": { - "keccak256": "0xeccd5d8873f709fa164aaa8f742675bc547e137f71a292e69104900849339ba0", - "urls": [ - "bzz-raw://97ff96e368ef092930b738140565bbf34e7227b32e4e866c8891bf1d16e4e9ff", - "dweb:/ipfs/QmRDNpvERz5brRX81qE64QmGbfPBoP15V9bqwYfXEDmNnx" - ], - "license": "MIT" - }, - "src/LBRouter.sol": { - "keccak256": "0x1888cc5b7dc98cab321022981ee8afbaabbac17f930f162402401c9b723aa7d0", - "urls": [ - "bzz-raw://58d29cb3db3d8a5559ea061a402cdd5a38e73a62dbc2bf4e6b68ab7bd8745d34", - "dweb:/ipfs/QmbZhFFyEzn1V4YZ9ifkJevhRv19meCg5UMP458YfJAEFq" - ], - "license": "MIT" - }, - "src/LBToken.sol": { - "keccak256": "0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3", - "urls": [ - "bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11", - "dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma" - ], - "license": "MIT" - }, - "src/interfaces/ILBFactory.sol": { - "keccak256": "0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88", - "urls": [ - "bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98", - "dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu" - ], - "license": "MIT" - }, - "src/interfaces/ILBFlashLoanCallback.sol": { - "keccak256": "0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62", - "urls": [ - "bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56", - "dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc" - ], - "license": "MIT" - }, - "src/interfaces/ILBHooks.sol": { - "keccak256": "0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a", - "urls": [ - "bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109", - "dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyFactory.sol": { - "keccak256": "0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca", - "urls": [ - "bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc", - "dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyPair.sol": { - "keccak256": "0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a", - "urls": [ - "bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf", - "dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyRouter.sol": { - "keccak256": "0xc924d832dfd6292a90f26174d8159dd52a6b16b8b3c1ae526521637038917eea", - "urls": [ - "bzz-raw://b3d4864f4b3c623ffa03ff8325c7ed084d5d9137e073779e5ddbcdfd1d9b30fb", - "dweb:/ipfs/QmPGQ5V3NBPQRfHyrdL9G7gnw4ccYdwqR5FfufGRijnBBQ" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyToken.sol": { - "keccak256": "0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727", - "urls": [ - "bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15", - "dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY" - ], - "license": "MIT" - }, - "src/interfaces/ILBPair.sol": { - "keccak256": "0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70", - "urls": [ - "bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51", - "dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB" - ], - "license": "MIT" - }, - "src/interfaces/ILBRouter.sol": { - "keccak256": "0x3faae84c13214d52f519d4dca8d48be1ad4176c75ec62816e7484555a30628ff", - "urls": [ - "bzz-raw://5c59c2e3322c61109e4044b80838359a2854dc416431175ca2bf6b58ec329168", - "dweb:/ipfs/QmUXkCAiPss64mSjLnvaq4pYrQA8yhid5oqnh1B91irofL" - ], - "license": "MIT" - }, - "src/interfaces/ILBToken.sol": { - "keccak256": "0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9", - "urls": [ - "bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f", - "dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz" - ], - "license": "MIT" - }, - "src/interfaces/ISovrynLBFactoryV1.sol": { - "keccak256": "0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552", - "urls": [ - "bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f", - "dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovrynLBPairV1.sol": { - "keccak256": "0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958", - "urls": [ - "bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76", - "dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovrynLBRouter01.sol": { - "keccak256": "0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b", - "urls": [ - "bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a", - "dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovrynLBRouter02.sol": { - "keccak256": "0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7", - "urls": [ - "bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65", - "dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx" - ], - "license": "GPL-3.0" - }, - "src/interfaces/IWNATIVE.sol": { - "keccak256": "0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3", - "urls": [ - "bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa", - "dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74" - ], - "license": "MIT" - }, - "src/libraries/BinHelper.sol": { - "keccak256": "0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49", - "urls": [ - "bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f", - "dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6" - ], - "license": "MIT" - }, - "src/libraries/Clone.sol": { - "keccak256": "0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70", - "urls": [ - "bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b", - "dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss" - ], - "license": "MIT" - }, - "src/libraries/Constants.sol": { - "keccak256": "0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2", - "urls": [ - "bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009", - "dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD" - ], - "license": "MIT" - }, - "src/libraries/FeeHelper.sol": { - "keccak256": "0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084", - "urls": [ - "bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee", - "dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra" - ], - "license": "MIT" - }, - "src/libraries/Hooks.sol": { - "keccak256": "0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959", - "urls": [ - "bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a", - "dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop" - ], - "license": "MIT" - }, - "src/libraries/ImmutableClone.sol": { - "keccak256": "0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151", - "urls": [ - "bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156", - "dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr" - ], - "license": "MIT" - }, - "src/libraries/OracleHelper.sol": { - "keccak256": "0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9", - "urls": [ - "bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5", - "dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj" - ], - "license": "MIT" - }, - "src/libraries/PairParameterHelper.sol": { - "keccak256": "0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3", - "urls": [ - "bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1", - "dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f" - ], - "license": "MIT" - }, - "src/libraries/PriceHelper.sol": { - "keccak256": "0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a", - "urls": [ - "bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e", - "dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft" - ], - "license": "MIT" - }, - "src/libraries/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7", - "urls": [ - "bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9", - "dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv" - ], - "license": "MIT" - }, - "src/libraries/SovrynLBLibrary.sol": { - "keccak256": "0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658", - "urls": [ - "bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3", - "dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric" - ], - "license": "GPL-3.0" - }, - "src/libraries/TokenHelper.sol": { - "keccak256": "0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154", - "urls": [ - "bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8", - "dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu" - ], - "license": "MIT" - }, - "src/libraries/math/BitMath.sol": { - "keccak256": "0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994", - "urls": [ - "bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de", - "dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV" - ], - "license": "MIT" - }, - "src/libraries/math/Encoded.sol": { - "keccak256": "0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba", - "urls": [ - "bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8", - "dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY" - ], - "license": "MIT" - }, - "src/libraries/math/LiquidityConfigurations.sol": { - "keccak256": "0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1", - "urls": [ - "bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5", - "dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG" - ], - "license": "MIT" - }, - "src/libraries/math/PackedUint128Math.sol": { - "keccak256": "0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901", - "urls": [ - "bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4", - "dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf" - ], - "license": "MIT" - }, - "src/libraries/math/SafeCast.sol": { - "keccak256": "0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed", - "urls": [ - "bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e", - "dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva" - ], - "license": "MIT" - }, - "src/libraries/math/SampleMath.sol": { - "keccak256": "0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63", - "urls": [ - "bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20", - "dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr" - ], - "license": "MIT" - }, - "src/libraries/math/TreeMath.sol": { - "keccak256": "0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b", - "urls": [ - "bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1", - "dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE" - ], - "license": "MIT" - }, - "src/libraries/math/Uint128x128Math.sol": { - "keccak256": "0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba", - "urls": [ - "bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f", - "dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb" - ], - "license": "MIT" - }, - "src/libraries/math/Uint256x256Math.sol": { - "keccak256": "0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2", - "urls": [ - "bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242", - "dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY" - ], - "license": "MIT" - }, - "test/GetOracleLength.t.sol": { - "keccak256": "0x75d063a999d03ebc3669c240b36307229586b213c57f7e36bae967c726c528af", - "urls": [ - "bzz-raw://27b83c90da6c725361a9f62b8dbfd3d2177193218f78a70b820d9e5a77d8da22", - "dweb:/ipfs/QmQzqCKe9uxdnPYcJX2htSweqSxqac57Ln5RTBsCSVJkHE" - ], - "license": "MIT" - }, - "test/helpers/TestHelper.sol": { - "keccak256": "0xbc59547d118283014b9d28c83a406a1e641f43b0276a19b6fae998dcfe44b55c", - "urls": [ - "bzz-raw://7f82dfdeba66720a0af6676bfa84c9b74066d5c715a4877914f38cf76e5cada8", - "dweb:/ipfs/QmaQy45RtZRyqVFAHpDRX6VpbE8hDg1WRJuTJPsAYZwLEm" - ], - "license": "MIT" - }, - "test/helpers/Utils.sol": { - "keccak256": "0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d", - "urls": [ - "bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0", - "dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW" - ], - "license": "MIT" - }, - "test/integration/Addresses.sol": { - "keccak256": "0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729", - "urls": [ - "bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac", - "dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7" - ], - "license": "UNLICENSED" - }, - "test/mocks/ERC20.sol": { - "keccak256": "0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6", - "urls": [ - "bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f", - "dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y" - ], - "license": "MIT" - }, - "test/mocks/ERC20TransferTax.sol": { - "keccak256": "0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb", - "urls": [ - "bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170", - "dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu" - ], - "license": "MIT" - }, - "test/mocks/FlashBorrower.sol": { - "keccak256": "0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c", - "urls": [ - "bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b", - "dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs" - ], - "license": "MIT" - }, - "test/mocks/WNATIVE.sol": { - "keccak256": "0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770", - "urls": [ - "bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5", - "dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "test/GetOracleLength.t.sol", - "id": 75247, - "exportedSymbols": { - "AccessControl": [ - 46028 - ], - "AvalancheAddresses": [ - 100123 - ], - "BinHelper": [ - 66632 - ], - "BitMath": [ - 70140 - ], - "Clone": [ - 66754 - ], - "Constants": [ - 66792 - ], - "ERC20": [ - 47341 - ], - "ERC20Mock": [ - 116100 - ], - "ERC20TransferTaxMock": [ - 116154 - ], - "Encoded": [ - 70347 - ], - "EnumerableMap": [ - 50220 - ], - "EnumerableSet": [ - 50833 - ], - "FeeHelper": [ - 66985 - ], - "FlashBorrower": [ - 116883 - ], - "GetAllSizeAndAddress": [ - 75246 - ], - "GetOracleLengthTest": [ - 75164 - ], - "Hooks": [ - 67859 - ], - "IERC20": [ - 47419 - ], - "ILBFactory": [ - 62330 - ], - "ILBFlashLoanCallback": [ - 62355 - ], - "ILBHooks": [ - 62528 - ], - "ILBLegacyFactory": [ - 62894 - ], - "ILBLegacyPair": [ - 63310 - ], - "ILBLegacyRouter": [ - 63719 - ], - "ILBPair": [ - 64286 - ], - "ILBRouter": [ - 64818 - ], - "ILBToken": [ - 64941 - ], - "ISovrynLBFactoryV1": [ - 65015 - ], - "ISovrynLBPairV1": [ - 65258 - ], - "ISovrynLBRouter01": [ - 65567 - ], - "ISovrynLBRouter02": [ - 65657 - ], - "IWNATIVE": [ - 65673 - ], - "ImmutableClone": [ - 67937 - ], - "LBFactory": [ - 54016 - ], - "LBPair": [ - 56821 - ], - "LBQuoter": [ - 58109 - ], - "LBRouter": [ - 61346 - ], - "LBToken": [ - 61865 - ], - "LiquidityConfigurations": [ - 70517 - ], - "OracleHelper": [ - 68594 - ], - "Ownable": [ - 46259 - ], - "Ownable2Step": [ - 46345 - ], - "PackedUint128Math": [ - 70871 - ], - "PairParameterHelper": [ - 69451 - ], - "PriceHelper": [ - 69625 - ], - "ReentrancyGuardUpgradeable": [ - 69754 - ], - "SafeCast": [ - 71619 - ], - "SafeERC20": [ - 47868 - ], - "SampleMath": [ - 72044 - ], - "SovrynLBLibrary": [ - 69960 - ], - "StdAssertions": [ - 2734 - ], - "StdChains": [ - 3507 - ], - "StdCheats": [ - 6360 - ], - "StdInvariant": [ - 6685 - ], - "StdStorage": [ - 7451 - ], - "StdStyle": [ - 10301 - ], - "StdUtils": [ - 11087 - ], - "Test": [ - 11134 - ], - "TestBase": [ - 65 - ], - "TestHelper": [ - 99922 - ], - "TokenHelper": [ - 70046 - ], - "TreeMath": [ - 72976 - ], - "Uint256x256Math": [ - 73612 - ], - "Utils": [ - 100090 - ], - "Vm": [ - 14564 - ], - "WNATIVE": [ - 117193 - ], - "console": [ - 22628 - ], - "console2": [ - 30753 - ], - "safeconsole": [ - 45478 - ], - "stdError": [ - 6426 - ], - "stdJson": [ - 7277 - ], - "stdMath": [ - 7419 - ], - "stdStorage": [ - 9090 - ] - }, - "nodeType": "SourceUnit", - "src": "33:4207:88", - "nodes": [ - { - "id": 74882, - "nodeType": "PragmaDirective", - "src": "33:24:88", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ] - }, - { - "id": 74883, - "nodeType": "ImportDirective", - "src": "59:34:88", - "nodes": [], - "absolutePath": "test/helpers/TestHelper.sol", - "file": "./helpers/TestHelper.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 99923, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 74886, - "nodeType": "ImportDirective", - "src": "95:55:88", - "nodes": [], - "absolutePath": "src/LBFactory.sol", - "file": "src/LBFactory.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 54017, - "symbolAliases": [ - { - "foreign": { - "id": 74884, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "103:9:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74885, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "114:9:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 74893, - "nodeType": "ImportDirective", - "src": "151:116:88", - "nodes": [], - "absolutePath": "src/LBRouter.sol", - "file": "src/LBRouter.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 61347, - "symbolAliases": [ - { - "foreign": { - "id": 74887, - "name": "ILBRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 64818, - "src": "159:9:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74888, - "name": "ISovrynLBFactoryV1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65015, - "src": "170:16:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74889, - "name": "ILBLegacyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62894, - "src": "188:16:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74890, - "name": "ILBLegacyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63719, - "src": "206:15:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74891, - "name": "IWNATIVE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65673, - "src": "223:8:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74892, - "name": "LBRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61346, - "src": "233:8:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 74896, - "nodeType": "ImportDirective", - "src": "268:46:88", - "nodes": [], - "absolutePath": "src/LBPair.sol", - "file": "src/LBPair.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 56822, - "symbolAliases": [ - { - "foreign": { - "id": 74894, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47419, - "src": "276:6:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74895, - "name": "LBPair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56821, - "src": "284:6:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 74898, - "nodeType": "ImportDirective", - "src": "315:42:88", - "nodes": [], - "absolutePath": "src/LBQuoter.sol", - "file": "src/LBQuoter.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 58110, - "symbolAliases": [ - { - "foreign": { - "id": 74897, - "name": "LBQuoter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58109, - "src": "323:8:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 75164, - "nodeType": "ContractDefinition", - "src": "359:3288:88", - "nodes": [ - { - "id": 74906, - "nodeType": "VariableDeclaration", - "src": "402:93:88", - "nodes": [], - "constant": true, - "functionSelector": "39fe7891", - "mutability": "constant", - "name": "factoryAvax", - "nameLocation": "428:11:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74902, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74901, - "name": "LBFactory", - "nameLocations": [ - "402:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "402:9:88" - }, - "referencedDeclaration": 54016, - "src": "402:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307838653432663246343130313536336246363739393735313738653838304644383764336546643465", - "id": 74904, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "452:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0x8e42f2F4101563bF679975178e880FD87d3eFd4e" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74903, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "442:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74905, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "442:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74912, - "nodeType": "VariableDeclaration", - "src": "501:97:88", - "nodes": [], - "constant": true, - "functionSelector": "5c79611d", - "mutability": "constant", - "name": "factoryArbitrum", - "nameLocation": "527:15:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74908, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74907, - "name": "LBFactory", - "nameLocations": [ - "501:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "501:9:88" - }, - "referencedDeclaration": 54016, - "src": "501:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307838653432663246343130313536336246363739393735313738653838304644383764336546643465", - "id": 74910, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "555:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0x8e42f2F4101563bF679975178e880FD87d3eFd4e" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74909, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "545:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74911, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "545:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74918, - "nodeType": "VariableDeclaration", - "src": "604:92:88", - "nodes": [], - "constant": true, - "functionSelector": "3f0072a8", - "mutability": "constant", - "name": "factoryBsc", - "nameLocation": "630:10:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74914, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74913, - "name": "LBFactory", - "nameLocations": [ - "604:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "604:9:88" - }, - "referencedDeclaration": 54016, - "src": "604:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307838653432663246343130313536336246363739393735313738653838304644383764336546643465", - "id": 74916, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "653:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0x8e42f2F4101563bF679975178e880FD87d3eFd4e" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74915, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "643:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74917, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "643:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74924, - "nodeType": "VariableDeclaration", - "src": "702:92:88", - "nodes": [], - "constant": true, - "functionSelector": "264afb38", - "mutability": "constant", - "name": "factoryEth", - "nameLocation": "728:10:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74920, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74919, - "name": "LBFactory", - "nameLocations": [ - "702:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "702:9:88" - }, - "referencedDeclaration": 54016, - "src": "702:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307844433864373762363931353563374536384139356134666230663036613731464639304239343361", - "id": 74922, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "751:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74921, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "741:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74923, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "741:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74932, - "nodeType": "VariableDeclaration", - "src": "801:77:88", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "chains", - "nameLocation": "810:6:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 74925, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "801:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 74926, - "nodeType": "ArrayTypeName", - "src": "801:8:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "value": { - "components": [ - { - "hexValue": "6176616c616e636865", - "id": 74927, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "820:11:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6e8b0d92516ee4289145e3b78cea58daac177b1c618beeedbc6cdabd388a6e55", - "typeString": "literal_string \"avalanche\"" - }, - "value": "avalanche" - }, - { - "hexValue": "617262697472756d5f6f6e65", - "id": 74928, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "833:14:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e4b44cea7839e0679ac5072602932da9b25ebfb3a9ac42625d9c583a7b6b2eb4", - "typeString": "literal_string \"arbitrum_one\"" - }, - "value": "arbitrum_one" - }, - { - "hexValue": "626e625f736d6172745f636861696e", - "id": 74929, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "849:17:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa8b17ae9aa26749f5dc3a3bb333e0019db0c257f3541e870f73bb48b574361e", - "typeString": "literal_string \"bnb_smart_chain\"" - }, - "value": "bnb_smart_chain" - }, - { - "hexValue": "6d61696e6e6574", - "id": 74930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "868:9:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7beafa94c8bfb8f1c1a43104a34f72c524268aafbfe83bff17485539345c66ff", - "typeString": "literal_string \"mainnet\"" - }, - "value": "mainnet" - } - ], - "id": 74931, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "819:59:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_memory_ptr_$4_memory_ptr", - "typeString": "string memory[4] memory" - } - }, - "visibility": "internal" - }, - { - "id": 74936, - "nodeType": "VariableDeclaration", - "src": "884:39:88", - "nodes": [], - "constant": false, - "functionSelector": "a8553d75", - "mutability": "mutable", - "name": "forks", - "nameLocation": "918:5:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string => uint256)" - }, - "typeName": { - "id": 74935, - "keyName": "", - "keyNameLocation": "-1:-1:-1", - "keyType": { - "id": 74933, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "892:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "nodeType": "Mapping", - "src": "884:26:88", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string => uint256)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 74934, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "902:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "id": 74970, - "nodeType": "FunctionDefinition", - "src": "930:199:88", - "nodes": [], - "body": { - "id": 74969, - "nodeType": "Block", - "src": "954:175:88", - "nodes": [], - "statements": [ - { - "body": { - "id": 74967, - "nodeType": "Block", - "src": "1008:115:88", - "statements": [ - { - "assignments": [ - 74951 - ], - "declarations": [ - { - "constant": false, - "id": 74951, - "mutability": "mutable", - "name": "chain", - "nameLocation": "1036:5:88", - "nodeType": "VariableDeclaration", - "scope": 74967, - "src": "1022:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 74950, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1022:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "id": 74955, - "initialValue": { - "baseExpression": { - "id": 74952, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74932, - "src": "1044:6:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 74954, - "indexExpression": { - "id": 74953, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74940, - "src": "1051:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1044:9:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1022:31:88" - }, - { - "expression": { - "id": 74965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 74956, - "name": "forks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74936, - "src": "1068:5:88", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string memory => uint256)" - } - }, - "id": 74958, - "indexExpression": { - "id": 74957, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74951, - "src": "1074:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1068:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 74962, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74951, - "src": "1105:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 74961, - "name": "_getRPC", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75081, - "src": "1097:7:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$", - "typeString": "function (string memory) returns (string memory)" - } - }, - "id": 74963, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1097:14:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 74959, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1083:2:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 74960, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1086:10:88", - "memberName": "createFork", - "nodeType": "MemberAccess", - "referencedDeclaration": 14028, - "src": "1083:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) external returns (uint256)" - } - }, - "id": 74964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1083:29:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1068:44:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 74966, - "nodeType": "ExpressionStatement", - "src": "1068:44:88" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 74943, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74940, - "src": "984:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 74944, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74932, - "src": "988:6:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 74945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "995:6:88", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "988:13:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "984:17:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 74968, - "initializationExpression": { - "assignments": [ - 74940 - ], - "declarations": [ - { - "constant": false, - "id": 74940, - "mutability": "mutable", - "name": "i", - "nameLocation": "977:1:88", - "nodeType": "VariableDeclaration", - "scope": 74968, - "src": "969:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 74939, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "969:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 74942, - "initialValue": { - "hexValue": "30", - "id": 74941, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "981:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "969:13:88" - }, - "loopExpression": { - "expression": { - "id": 74948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1003:3:88", - "subExpression": { - "id": 74947, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74940, - "src": "1003:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 74949, - "nodeType": "ExpressionStatement", - "src": "1003:3:88" - }, - "nodeType": "ForStatement", - "src": "964:159:88" - } - ] - }, - "functionSelector": "0a9254e4", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setUp", - "nameLocation": "939:5:88", - "parameters": { - "id": 74937, - "nodeType": "ParameterList", - "parameters": [], - "src": "944:2:88" - }, - "returnParameters": { - "id": 74938, - "nodeType": "ParameterList", - "parameters": [], - "src": "954:0:88" - }, - "scope": 75164, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 75067, - "nodeType": "FunctionDefinition", - "src": "1493:688:88", - "nodes": [], - "body": { - "id": 75066, - "nodeType": "Block", - "src": "1539:642:88", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "baseExpression": { - "id": 74978, - "name": "forks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74936, - "src": "1563:5:88", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string memory => uint256)" - } - }, - "id": 74980, - "indexExpression": { - "id": 74979, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74972, - "src": "1569:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1563:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 74975, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1549:2:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 74977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1552:10:88", - "memberName": "selectFork", - "nodeType": "MemberAccess", - "referencedDeclaration": 14317, - "src": "1549:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 74981, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1549:27:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 74982, - "nodeType": "ExpressionStatement", - "src": "1549:27:88" - }, - { - "assignments": [ - 74985 - ], - "declarations": [ - { - "constant": false, - "id": 74985, - "mutability": "mutable", - "name": "factory", - "nameLocation": "1597:7:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1587:17:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74984, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74983, - "name": "LBFactory", - "nameLocations": [ - "1587:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "1587:9:88" - }, - "referencedDeclaration": 54016, - "src": "1587:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "internal" - } - ], - "id": 74989, - "initialValue": { - "arguments": [ - { - "id": 74987, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74972, - "src": "1623:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 74986, - "name": "_getLBFactories", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75163, - "src": "1607:15:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_contract$_LBFactory_$54016_$", - "typeString": "function (string memory) pure returns (contract LBFactory)" - } - }, - "id": 74988, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1607:22:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1587:42:88" - }, - { - "assignments": [ - 74992 - ], - "declarations": [ - { - "constant": false, - "id": 74992, - "mutability": "mutable", - "name": "s", - "nameLocation": "1661:1:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1640:22:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - }, - "typeName": { - "id": 74991, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74990, - "name": "GetAllSizeAndAddress", - "nameLocations": [ - "1640:20:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75246, - "src": "1640:20:88" - }, - "referencedDeclaration": 75246, - "src": "1640:20:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - }, - "visibility": "internal" - } - ], - "id": 74997, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 74995, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1665:24:88", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_GetAllSizeAndAddress_$75246_$", - "typeString": "function () returns (contract GetAllSizeAndAddress)" - }, - "typeName": { - "id": 74994, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74993, - "name": "GetAllSizeAndAddress", - "nameLocations": [ - "1669:20:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75246, - "src": "1669:20:88" - }, - "referencedDeclaration": 75246, - "src": "1669:20:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - } - }, - "id": 74996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1665:26:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1640:51:88" - }, - { - "assignments": [ - 75002, - 75005 - ], - "declarations": [ - { - "constant": false, - "id": 75002, - "mutability": "mutable", - "name": "pairs", - "nameLocation": "1720:5:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1703:22:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 75000, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1703:7:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75001, - "nodeType": "ArrayTypeName", - "src": "1703:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 75005, - "mutability": "mutable", - "name": "sizes", - "nameLocation": "1744:5:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1727:22:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 75003, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1727:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75004, - "nodeType": "ArrayTypeName", - "src": "1727:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "id": 75010, - "initialValue": { - "arguments": [ - { - "id": 75008, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74985, - "src": "1776:7:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - ], - "expression": { - "id": 75006, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74992, - "src": "1753:1:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - }, - "id": 75007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1755:20:88", - "memberName": "getAllSizeAndAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 75245, - "src": "1753:22:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_contract$_LBFactory_$54016_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "function (contract LBFactory) view external returns (address[] memory,uint256[] memory)" - } - }, - "id": 75009, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1753:31:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "tuple(address[] memory,uint256[] memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1702:82:88" - }, - { - "assignments": [ - 75012 - ], - "declarations": [ - { - "constant": false, - "id": 75012, - "mutability": "mutable", - "name": "atRisk", - "nameLocation": "1803:6:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1795:14:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75011, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1795:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75014, - "initialValue": { - "hexValue": "30", - "id": 75013, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1812:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1795:18:88" - }, - { - "body": { - "id": 75054, - "nodeType": "Block", - "src": "1867:218:88", - "statements": [ - { - "assignments": [ - 75027 - ], - "declarations": [ - { - "constant": false, - "id": 75027, - "mutability": "mutable", - "name": "pair", - "nameLocation": "1889:4:88", - "nodeType": "VariableDeclaration", - "scope": 75054, - "src": "1881:12:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 75026, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1881:7:88", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 75031, - "initialValue": { - "baseExpression": { - "id": 75028, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75002, - "src": "1896:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75030, - "indexExpression": { - "id": 75029, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1902:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1896:8:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1881:23:88" - }, - { - "assignments": [ - 75033 - ], - "declarations": [ - { - "constant": false, - "id": 75033, - "mutability": "mutable", - "name": "size", - "nameLocation": "1926:4:88", - "nodeType": "VariableDeclaration", - "scope": 75054, - "src": "1918:12:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75032, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1918:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75037, - "initialValue": { - "baseExpression": { - "id": 75034, - "name": "sizes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75005, - "src": "1933:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 75036, - "indexExpression": { - "id": 75035, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1939:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1933:8:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1918:23:88" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 75040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 75038, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75033, - "src": "1960:4:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 75039, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1967:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1960:8:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 75053, - "nodeType": "IfStatement", - "src": "1956:119:88", - "trueBody": { - "id": 75052, - "nodeType": "Block", - "src": "1970:105:88", - "statements": [ - { - "expression": { - "id": 75042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1988:8:88", - "subExpression": { - "id": 75041, - "name": "atRisk", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75012, - "src": "1988:6:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75043, - "nodeType": "ExpressionStatement", - "src": "1988:8:88" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "50616972202573206861732073697a65202573", - "id": 75047, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2026:21:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_40263c33992144b6ccca52c6b5ec993b8fa14c33dcc31b94fa1b7b35a2ca927d", - "typeString": "literal_string \"Pair %s has size %s\"" - }, - "value": "Pair %s has size %s" - }, - { - "id": 75048, - "name": "pair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75027, - "src": "2049:4:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 75049, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75033, - "src": "2055:4:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_40263c33992144b6ccca52c6b5ec993b8fa14c33dcc31b94fa1b7b35a2ca927d", - "typeString": "literal_string \"Pair %s has size %s\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 75044, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2014:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 75046, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2022:3:88", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 16039, - "src": "2014:11:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (string memory,address,uint256) view" - } - }, - "id": 75050, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2014:46:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 75051, - "nodeType": "ExpressionStatement", - "src": "2014:46:88" - } - ] - } - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 75022, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 75019, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1844:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 75020, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75002, - "src": "1848:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75021, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1854:6:88", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1848:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1844:16:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 75055, - "initializationExpression": { - "assignments": [ - 75016 - ], - "declarations": [ - { - "constant": false, - "id": 75016, - "mutability": "mutable", - "name": "j", - "nameLocation": "1837:1:88", - "nodeType": "VariableDeclaration", - "scope": 75055, - "src": "1829:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75015, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1829:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75018, - "initialValue": { - "hexValue": "30", - "id": 75017, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1841:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1829:13:88" - }, - "loopExpression": { - "expression": { - "id": 75024, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1862:3:88", - "subExpression": { - "id": 75023, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1862:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75025, - "nodeType": "ExpressionStatement", - "src": "1862:3:88" - }, - "nodeType": "ForStatement", - "src": "1824:261:88" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "5468657265206172652025732f2573207061697273206174207269736b206f6e202573", - "id": 75059, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2107:37:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d84db9ff9697601525498d0167017203d310e1893af6f8fd31a11ef83b7171b3", - "typeString": "literal_string \"There are %s/%s pairs at risk on %s\"" - }, - "value": "There are %s/%s pairs at risk on %s" - }, - { - "id": 75060, - "name": "atRisk", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75012, - "src": "2146:6:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 75061, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75002, - "src": "2154:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2160:6:88", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2154:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 75063, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74972, - "src": "2168:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_d84db9ff9697601525498d0167017203d310e1893af6f8fd31a11ef83b7171b3", - "typeString": "literal_string \"There are %s/%s pairs at risk on %s\"" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75056, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2095:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 75058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2103:3:88", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 18257, - "src": "2095:11:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory,uint256,uint256,string memory) view" - } - }, - "id": 75064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2095:79:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 75065, - "nodeType": "ExpressionStatement", - "src": "2095:79:88" - } - ] - }, - "functionSelector": "3596fa6d", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "get_size", - "nameLocation": "1502:8:88", - "parameters": { - "id": 74973, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 74972, - "mutability": "mutable", - "name": "chain", - "nameLocation": "1525:5:88", - "nodeType": "VariableDeclaration", - "scope": 75067, - "src": "1511:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 74971, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1511:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "1510:21:88" - }, - "returnParameters": { - "id": 74974, - "nodeType": "ParameterList", - "parameters": [], - "src": "1539:0:88" - }, - "scope": 75164, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 75081, - "nodeType": "FunctionDefinition", - "src": "2187:767:88", - "nodes": [], - "body": { - "id": 75080, - "nodeType": "Block", - "src": "2258:696:88", - "nodes": [], - "statements": [ - { - "expression": { - "expression": { - "arguments": [ - { - "id": 75076, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75069, - "src": "2934:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75074, - "name": "StdChains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3507, - "src": "2915:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StdChains_$3507_$", - "typeString": "type(contract StdChains)" - } - }, - "id": 75075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2925:8:88", - "memberName": "getChain", - "nodeType": "MemberAccess", - "referencedDeclaration": 2842, - "src": "2915:18:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_struct$_Chain_$2774_memory_ptr_$", - "typeString": "function (string memory) returns (struct StdChains.Chain memory)" - } - }, - "id": 75077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2915:25:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Chain_$2774_memory_ptr", - "typeString": "struct StdChains.Chain memory" - } - }, - "id": 75078, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2941:6:88", - "memberName": "rpcUrl", - "nodeType": "MemberAccess", - "referencedDeclaration": 2773, - "src": "2915:32:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "functionReturnParameters": 75073, - "id": 75079, - "nodeType": "Return", - "src": "2908:39:88" - } - ] - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getRPC", - "nameLocation": "2196:7:88", - "parameters": { - "id": 75070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75069, - "mutability": "mutable", - "name": "chain", - "nameLocation": "2218:5:88", - "nodeType": "VariableDeclaration", - "scope": 75081, - "src": "2204:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 75068, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2204:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2203:21:88" - }, - "returnParameters": { - "id": 75073, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75072, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 75081, - "src": "2243:13:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 75071, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2243:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2242:15:88" - }, - "scope": 75164, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 75163, - "nodeType": "FunctionDefinition", - "src": "2960:685:88", - "nodes": [], - "body": { - "id": 75162, - "nodeType": "Block", - "src": "3040:605:88", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75092, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3081:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75090, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3064:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75091, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3068:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3064:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3064:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75089, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3054:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75094, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3054:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "6176616c616e636865", - "id": 75098, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3119:11:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6e8b0d92516ee4289145e3b78cea58daac177b1c618beeedbc6cdabd388a6e55", - "typeString": "literal_string \"avalanche\"" - }, - "value": "avalanche" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_6e8b0d92516ee4289145e3b78cea58daac177b1c618beeedbc6cdabd388a6e55", - "typeString": "literal_string \"avalanche\"" - } - ], - "expression": { - "id": 75096, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3102:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75097, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3106:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3102:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75099, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3102:29:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75095, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3092:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75100, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3092:40:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3054:78:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75117, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75108, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3214:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75106, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3197:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75107, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3201:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3197:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3197:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75105, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3187:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75110, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3187:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "617262697472756d5f6f6e65", - "id": 75114, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3252:14:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e4b44cea7839e0679ac5072602932da9b25ebfb3a9ac42625d9c583a7b6b2eb4", - "typeString": "literal_string \"arbitrum_one\"" - }, - "value": "arbitrum_one" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_e4b44cea7839e0679ac5072602932da9b25ebfb3a9ac42625d9c583a7b6b2eb4", - "typeString": "literal_string \"arbitrum_one\"" - } - ], - "expression": { - "id": 75112, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3235:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3239:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3235:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75115, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3235:32:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75111, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3225:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3225:43:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3187:81:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75133, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75124, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3354:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75122, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3337:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75123, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3341:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3337:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3337:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75121, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3327:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3327:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "626e625f736d6172745f636861696e", - "id": 75130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3392:17:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa8b17ae9aa26749f5dc3a3bb333e0019db0c257f3541e870f73bb48b574361e", - "typeString": "literal_string \"bnb_smart_chain\"" - }, - "value": "bnb_smart_chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_fa8b17ae9aa26749f5dc3a3bb333e0019db0c257f3541e870f73bb48b574361e", - "typeString": "literal_string \"bnb_smart_chain\"" - } - ], - "expression": { - "id": 75128, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3375:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75129, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3379:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3375:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3375:35:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75127, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3365:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75132, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3365:46:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3327:84:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75140, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3492:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75138, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3475:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3479:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3475:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3475:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75137, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3465:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3465:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "6d61696e6e6574", - "id": 75146, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3530:9:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7beafa94c8bfb8f1c1a43104a34f72c524268aafbfe83bff17485539345c66ff", - "typeString": "literal_string \"mainnet\"" - }, - "value": "mainnet" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_7beafa94c8bfb8f1c1a43104a34f72c524268aafbfe83bff17485539345c66ff", - "typeString": "literal_string \"mainnet\"" - } - ], - "expression": { - "id": 75144, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3513:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75145, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3517:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3513:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75147, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3513:27:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75143, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3503:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75148, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3503:38:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3465:76:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 75157, - "nodeType": "Block", - "src": "3591:48:88", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "496e76616c696420636861696e", - "id": 75154, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3612:15:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4acdaa077a05cc233cc6b88fd673b3b7b4568e0105f0d44839e2c03bc4380c92", - "typeString": "literal_string \"Invalid chain\"" - }, - "value": "Invalid chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_4acdaa077a05cc233cc6b88fd673b3b7b4568e0105f0d44839e2c03bc4380c92", - "typeString": "literal_string \"Invalid chain\"" - } - ], - "id": 75153, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "3605:6:88", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 75155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3605:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 75156, - "nodeType": "ExpressionStatement", - "src": "3605:23:88" - } - ] - }, - "id": 75158, - "nodeType": "IfStatement", - "src": "3461:178:88", - "trueBody": { - "id": 75152, - "nodeType": "Block", - "src": "3543:42:88", - "statements": [ - { - "expression": { - "id": 75150, - "name": "factoryEth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74924, - "src": "3564:10:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75151, - "nodeType": "Return", - "src": "3557:17:88" - } - ] - } - }, - "id": 75159, - "nodeType": "IfStatement", - "src": "3323:316:88", - "trueBody": { - "id": 75136, - "nodeType": "Block", - "src": "3413:42:88", - "statements": [ - { - "expression": { - "id": 75134, - "name": "factoryBsc", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74918, - "src": "3434:10:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75135, - "nodeType": "Return", - "src": "3427:17:88" - } - ] - } - }, - "id": 75160, - "nodeType": "IfStatement", - "src": "3183:456:88", - "trueBody": { - "id": 75120, - "nodeType": "Block", - "src": "3270:47:88", - "statements": [ - { - "expression": { - "id": 75118, - "name": "factoryArbitrum", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74912, - "src": "3291:15:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75119, - "nodeType": "Return", - "src": "3284:22:88" - } - ] - } - }, - "id": 75161, - "nodeType": "IfStatement", - "src": "3050:589:88", - "trueBody": { - "id": 75104, - "nodeType": "Block", - "src": "3134:43:88", - "statements": [ - { - "expression": { - "id": 75102, - "name": "factoryAvax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74906, - "src": "3155:11:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75103, - "nodeType": "Return", - "src": "3148:18:88" - } - ] - } - } - ] - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getLBFactories", - "nameLocation": "2969:15:88", - "parameters": { - "id": 75084, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75083, - "mutability": "mutable", - "name": "chain", - "nameLocation": "2999:5:88", - "nodeType": "VariableDeclaration", - "scope": 75163, - "src": "2985:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 75082, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2985:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2984:21:88" - }, - "returnParameters": { - "id": 75088, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75087, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 75163, - "src": "3029:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 75086, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 75085, - "name": "LBFactory", - "nameLocations": [ - "3029:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "3029:9:88" - }, - "referencedDeclaration": 54016, - "src": "3029:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "internal" - } - ], - "src": "3028:11:88" - }, - "scope": 75164, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 74899, - "name": "Test", - "nameLocations": [ - "391:4:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 11134, - "src": "391:4:88" - }, - "id": 74900, - "nodeType": "InheritanceSpecifier", - "src": "391:4:88" - } - ], - "canonicalName": "GetOracleLengthTest", - "contractDependencies": [ - 75246 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 75164, - 11134, - 11087, - 6685, - 6360, - 5567, - 3507, - 2734, - 65, - 62 - ], - "name": "GetOracleLengthTest", - "nameLocation": "368:19:88", - "scope": 75247, - "usedErrors": [], - "usedEvents": [ - 139, - 143, - 147, - 151, - 155, - 159, - 163, - 167, - 173, - 179, - 187, - 195, - 201, - 207, - 213, - 219, - 224, - 229, - 234, - 241, - 248, - 255 - ] - }, - { - "id": 75246, - "nodeType": "ContractDefinition", - "src": "3649:590:88", - "nodes": [ - { - "id": 75245, - "nodeType": "FunctionDefinition", - "src": "3685:552:88", - "nodes": [], - "body": { - "id": 75244, - "nodeType": "Block", - "src": "3832:405:88", - "nodes": [], - "statements": [ - { - "assignments": [ - 75177 - ], - "declarations": [ - { - "constant": false, - "id": 75177, - "mutability": "mutable", - "name": "nbPairs", - "nameLocation": "3850:7:88", - "nodeType": "VariableDeclaration", - "scope": 75244, - "src": "3842:15:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75176, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3842:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75181, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 75178, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75167, - "src": "3860:7:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 75179, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3868:18:88", - "memberName": "getNumberOfLBPairs", - "nodeType": "MemberAccess", - "referencedDeclaration": 52590, - "src": "3860:26:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", - "typeString": "function () view external returns (uint256)" - } - }, - "id": 75180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3860:28:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3842:46:88" - }, - { - "expression": { - "id": 75188, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 75182, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75171, - "src": "3899:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 75186, - "name": "nbPairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75177, - "src": "3921:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 75185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "3907:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 75183, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3911:7:88", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75184, - "nodeType": "ArrayTypeName", - "src": "3911:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - } - }, - "id": 75187, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3907:22:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "3899:30:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75189, - "nodeType": "ExpressionStatement", - "src": "3899:30:88" - }, - { - "expression": { - "id": 75196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 75190, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75174, - "src": "3939:4:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 75194, - "name": "nbPairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75177, - "src": "3960:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 75193, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "3946:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (uint256[] memory)" - }, - "typeName": { - "baseType": { - "id": 75191, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3950:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75192, - "nodeType": "ArrayTypeName", - "src": "3950:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - } - }, - "id": 75195, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3946:22:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "src": "3939:29:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 75197, - "nodeType": "ExpressionStatement", - "src": "3939:29:88" - }, - { - "body": { - "id": 75242, - "nodeType": "Block", - "src": "4017:214:88", - "statements": [ - { - "assignments": [ - 75210 - ], - "declarations": [ - { - "constant": false, - "id": 75210, - "mutability": "mutable", - "name": "pair", - "nameLocation": "4038:4:88", - "nodeType": "VariableDeclaration", - "scope": 75242, - "src": "4031:11:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - }, - "typeName": { - "id": 75209, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 75208, - "name": "LBPair", - "nameLocations": [ - "4031:6:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 56821, - "src": "4031:6:88" - }, - "referencedDeclaration": 56821, - "src": "4031:6:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "visibility": "internal" - } - ], - "id": 75220, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 75216, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4085:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 75214, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75167, - "src": "4060:7:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 75215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4068:16:88", - "memberName": "getLBPairAtIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 52605, - "src": "4060:24:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_ILBPair_$64286_$", - "typeString": "function (uint256) view external returns (contract ILBPair)" - } - }, - "id": 75217, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4060:27:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILBPair_$64286", - "typeString": "contract ILBPair" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILBPair_$64286", - "typeString": "contract ILBPair" - } - ], - "id": 75213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4052:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 75212, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4052:7:88", - "typeDescriptions": {} - } - }, - "id": 75218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4052:36:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 75211, - "name": "LBPair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56821, - "src": "4045:6:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBPair_$56821_$", - "typeString": "type(contract LBPair)" - } - }, - "id": 75219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4045:44:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4031:58:88" - }, - { - "assignments": [ - null, - 75222, - null, - null, - null - ], - "declarations": [ - null, - { - "constant": false, - "id": 75222, - "mutability": "mutable", - "name": "_size", - "nameLocation": "4114:5:88", - "nodeType": "VariableDeclaration", - "scope": 75242, - "src": "4107:12:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 75221, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4107:6:88", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - null, - null, - null - ], - "id": 75226, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 75223, - "name": "pair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75210, - "src": "4126:4:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "id": 75224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4131:19:88", - "memberName": "getOracleParameters", - "nodeType": "MemberAccess", - "referencedDeclaration": 54579, - "src": "4126:24:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$_t_uint16_$_t_uint16_$_t_uint40_$_t_uint40_$", - "typeString": "function () view external returns (uint8,uint16,uint16,uint40,uint40)" - } - }, - "id": 75225, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4126:26:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_uint16_$_t_uint16_$_t_uint40_$_t_uint40_$", - "typeString": "tuple(uint8,uint16,uint16,uint40,uint40)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4104:48:88" - }, - { - "expression": { - "id": 75234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 75227, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75171, - "src": "4167:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75229, - "indexExpression": { - "id": 75228, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4173:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4167:8:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 75232, - "name": "pair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75210, - "src": "4186:4:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - ], - "id": 75231, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4178:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 75230, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4178:7:88", - "typeDescriptions": {} - } - }, - "id": 75233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4178:13:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4167:24:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75235, - "nodeType": "ExpressionStatement", - "src": "4167:24:88" - }, - { - "expression": { - "id": 75240, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 75236, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75174, - "src": "4205:4:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 75238, - "indexExpression": { - "id": 75237, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4210:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4205:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 75239, - "name": "_size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75222, - "src": "4215:5:88", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "4205:15:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75241, - "nodeType": "ExpressionStatement", - "src": "4205:15:88" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 75204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 75202, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "3999:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 75203, - "name": "nbPairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75177, - "src": "4003:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3999:11:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 75243, - "initializationExpression": { - "assignments": [ - 75199 - ], - "declarations": [ - { - "constant": false, - "id": 75199, - "mutability": "mutable", - "name": "i", - "nameLocation": "3992:1:88", - "nodeType": "VariableDeclaration", - "scope": 75243, - "src": "3984:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75198, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3984:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75201, - "initialValue": { - "hexValue": "30", - "id": 75200, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3996:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3984:13:88" - }, - "loopExpression": { - "expression": { - "id": 75206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4012:3:88", - "subExpression": { - "id": 75205, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4012:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75207, - "nodeType": "ExpressionStatement", - "src": "4012:3:88" - }, - "nodeType": "ForStatement", - "src": "3979:252:88" - } - ] - }, - "functionSelector": "4978ef81", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAllSizeAndAddress", - "nameLocation": "3694:20:88", - "parameters": { - "id": 75168, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75167, - "mutability": "mutable", - "name": "factory", - "nameLocation": "3725:7:88", - "nodeType": "VariableDeclaration", - "scope": 75245, - "src": "3715:17:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 75166, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 75165, - "name": "LBFactory", - "nameLocations": [ - "3715:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "3715:9:88" - }, - "referencedDeclaration": 54016, - "src": "3715:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "internal" - } - ], - "src": "3714:19:88" - }, - "returnParameters": { - "id": 75175, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75171, - "mutability": "mutable", - "name": "pairs", - "nameLocation": "3798:5:88", - "nodeType": "VariableDeclaration", - "scope": 75245, - "src": "3781:22:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 75169, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3781:7:88", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75170, - "nodeType": "ArrayTypeName", - "src": "3781:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 75174, - "mutability": "mutable", - "name": "size", - "nameLocation": "3822:4:88", - "nodeType": "VariableDeclaration", - "scope": 75245, - "src": "3805:21:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 75172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3805:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75173, - "nodeType": "ArrayTypeName", - "src": "3805:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "3780:47:88" - }, - "scope": 75246, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "GetAllSizeAndAddress", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 75246 - ], - "name": "GetAllSizeAndAddress", - "nameLocation": "3658:20:88", - "scope": 75247, - "usedErrors": [], - "usedEvents": [] - } - ], - "license": "MIT" - }, - "id": 88 -} \ No newline at end of file diff --git a/abi/GetOracleLength.t.sol/GetOracleLengthTest.json b/abi/GetOracleLength.t.sol/GetOracleLengthTest.json deleted file mode 100644 index ee2cf451..00000000 --- a/abi/GetOracleLength.t.sol/GetOracleLengthTest.json +++ /dev/null @@ -1,7127 +0,0 @@ -{ - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "", - "type": "string" - } - ], - "name": "log", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "log_address", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256[]", - "name": "val", - "type": "uint256[]" - } - ], - "name": "log_array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "int256[]", - "name": "val", - "type": "int256[]" - } - ], - "name": "log_array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address[]", - "name": "val", - "type": "address[]" - } - ], - "name": "log_array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "log_bytes", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "log_bytes32", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "int256", - "name": "", - "type": "int256" - } - ], - "name": "log_int", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "address", - "name": "val", - "type": "address" - } - ], - "name": "log_named_address", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "val", - "type": "uint256[]" - } - ], - "name": "log_named_array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "int256[]", - "name": "val", - "type": "int256[]" - } - ], - "name": "log_named_array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "address[]", - "name": "val", - "type": "address[]" - } - ], - "name": "log_named_array", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "val", - "type": "bytes" - } - ], - "name": "log_named_bytes", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "val", - "type": "bytes32" - } - ], - "name": "log_named_bytes32", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "int256", - "name": "val", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "decimals", - "type": "uint256" - } - ], - "name": "log_named_decimal_int", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "val", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "decimals", - "type": "uint256" - } - ], - "name": "log_named_decimal_uint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "int256", - "name": "val", - "type": "int256" - } - ], - "name": "log_named_int", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "string", - "name": "val", - "type": "string" - } - ], - "name": "log_named_string", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "val", - "type": "uint256" - } - ], - "name": "log_named_uint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "", - "type": "string" - } - ], - "name": "log_string", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "log_uint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "logs", - "type": "event" - }, - { - "inputs": [], - "name": "excludeArtifacts", - "outputs": [ - { - "internalType": "string[]", - "name": "excludedArtifacts_", - "type": "string[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "excludeContracts", - "outputs": [ - { - "internalType": "address[]", - "name": "excludedContracts_", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "excludeSenders", - "outputs": [ - { - "internalType": "address[]", - "name": "excludedSenders_", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "factoryArbitrum", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "factoryAvax", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "factoryBsc", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "factoryEth", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "failed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "name": "forks", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "chain", - "type": "string" - } - ], - "name": "get_size", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "targetArtifactSelectors", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ], - "internalType": "struct StdInvariant.FuzzSelector[]", - "name": "targetedArtifactSelectors_", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "targetArtifacts", - "outputs": [ - { - "internalType": "string[]", - "name": "targetedArtifacts_", - "type": "string[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "targetContracts", - "outputs": [ - { - "internalType": "address[]", - "name": "targetedContracts_", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "targetInterfaces", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "string[]", - "name": "artifacts", - "type": "string[]" - } - ], - "internalType": "struct StdInvariant.FuzzInterface[]", - "name": "targetedInterfaces_", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "targetSelectors", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ], - "internalType": "struct StdInvariant.FuzzSelector[]", - "name": "targetedSelectors_", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "targetSenders", - "outputs": [ - { - "internalType": "address[]", - "name": "targetedSenders_", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x600b805460ff191660011790556009610100908152686176616c616e63686560b81b610120526080908152600c6101409081526b617262697472756d5f6f6e6560a01b6101605260a052600f6101809081526e3137312fb9b6b0b93a2fb1b430b4b760891b6101a05260c05261020060405260076101c0908152661b585a5b9b995d60ca1b6101e05260e0526200009b90601c906004620000b0565b50348015620000a957600080fd5b50620002f8565b828054828255906000526020600020908101928215620000fb579160200282015b82811115620000fb5782518290620000ea90826200022c565b5091602001919060010190620000d1565b50620001099291506200010d565b5090565b80821115620001095760006200012482826200012e565b506001016200010d565b5080546200013c906200019d565b6000825580601f106200014d575050565b601f0160209004906000526020600020908101906200016d919062000170565b50565b5b8082111562000109576000815560010162000171565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001b257607f821691505b602082108103620001d357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022757600081815260208120601f850160051c81016020861015620002025750805b601f850160051c820191505b8181101562000223578281556001016200020e565b5050505b505050565b81516001600160401b0381111562000248576200024862000187565b62000260816200025984546200019d565b84620001d9565b602080601f8311600181146200029857600084156200027f5750858301515b600019600386901b1c1916600185901b17855562000223565b600085815260208120601f198616915b82811015620002c957888601518255948401946001909101908401620002a8565b5085821015620002e85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613cb380620003086000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80633f7286f4116100b2578063916a17c611610081578063b5508aa911610066578063b5508aa914610239578063ba414fa614610241578063e20c9f711461025957600080fd5b8063916a17c6146101f8578063a8553d751461020057600080fd5b80633f7286f4146101c65780635c79611d146101a357806366d9a9a0146101ce57806385226c81146101e357600080fd5b80633596fa6d116100ee5780633596fa6d1461019057806339fe7891146101a35780633e5e3c23146101be5780633f0072a8146101a357600080fd5b80630a9254e4146101205780631ed7831c1461012a578063264afb38146101485780632ade38801461017b575b600080fd5b610128610261565b005b6101326103e8565b60405161013f9190612b6c565b60405180910390f35b61016373dc8d77b69155c7e68a95a4fb0f06a71ff90b943a81565b6040516001600160a01b03909116815260200161013f565b61018361044a565b60405161013f9190612c09565b61012861019e366004612d38565b61058c565b610163738e42f2f4101563bf679975178e880fd87d3efd4e81565b6101326107b1565b610132610811565b6101d6610871565b60405161013f9190612db8565b6101eb610957565b60405161013f9190612e6b565b6101d6610a27565b61022b61020e366004612d38565b8051602081830181018051601d8252928201919093012091525481565b60405190815260200161013f565b6101eb610b0d565b610249610bdd565b604051901515815260200161013f565b610132610c98565b60005b601c548110156103e5576000601c828154811061028357610283612ecd565b90600052602060002001805461029890612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546102c490612ee3565b80156103115780601f106102e657610100808354040283529160200191610311565b820191906000526020600020905b8154815290600101906020018083116102f457829003601f168201915b505050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166331ba349861035383610cf8565b6040518263ffffffff1660e01b815260040161036f9190612f17565b6020604051808303816000875af115801561038e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b29190612f31565b601d826040516103c29190612f4a565b9081526040519081900360200190205550806103dd81612f7c565b915050610264565b50565b6060601480548060200260200160405190810160405280929190818152602001828054801561044057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610422575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561058357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561056c5783829060005260206000200180546104df90612ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90612ee3565b80156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b5050505050815260200190600101906104c0565b50505050815250508152602001906001019061046e565b50505050905090565b604051737109709ecfa91a80626ff3989d68f67f5b1dd12d90639ebf682790601d906105b9908590612f4a565b908152604051908190036020018120546001600160e01b031960e084901b1682526105ea9160040190815260200190565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b50505050600061062782610d0d565b9050600060405161063790612b11565b604051809103906000f080158015610653573d6000803e3d6000fd5b50604051634978ef8160e01b81526001600160a01b038481166004830152919250600091829190841690634978ef8190602401600060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106cb919081019061301f565b915091506000805b83518110156107835760008482815181106106f0576106f0612ecd565b60200260200101519050600084838151811061070e5761070e612ecd565b60200260200101519050600081111561076e578361072b81612f7c565b94505061076e6040518060400160405280601381526020017f50616972202573206861732073697a65202573000000000000000000000000008152508383610f38565b5050808061077b90612f7c565b9150506106d3565b506107a9604051806060016040528060238152602001613bfe6023913982855189610f84565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610440576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610422575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610440576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610422575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105835760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561093f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109015790505b50505050508152505081526020019060010190610895565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561058357838290600052602060002001805461099a90612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546109c690612ee3565b8015610a135780601f106109e857610100808354040283529160200191610a13565b820191906000526020600020905b8154815290600101906020018083116109f657829003601f168201915b50505050508152602001906001019061097b565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105835760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab75790505b50505050508152505081526020019060010190610a4b565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610583578382906000526020600020018054610b5090612ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7c90612ee3565b8015610bc95780601f10610b9e57610100808354040283529160200191610bc9565b820191906000526020600020905b815481529060010190602001808311610bac57829003601f168201915b505050505081526020019060010190610b31565b60075460009060ff1615610bf5575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c919190612f31565b1415905090565b60606013805480602002602001604051908101604052809291908181526020018280548015610440576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610422575050505050905090565b6060610d0382610fd3565b6060015192915050565b604051686176616c616e63686560b81b60208201526000906029016040516020818303038152906040528051906020012082604051602001610d4f9190612f4a565b6040516020818303038152906040528051906020012003610d855750738e42f2f4101563bf679975178e880fd87d3efd4e919050565b6040516b617262697472756d5f6f6e6560a01b6020820152602c016040516020818303038152906040528051906020012082604051602001610dc79190612f4a565b6040516020818303038152906040528051906020012003610dfd5750738e42f2f4101563bf679975178e880fd87d3efd4e919050565b6040516e3137312fb9b6b0b93a2fb1b430b4b760891b6020820152602f016040516020818303038152906040528051906020012082604051602001610e429190612f4a565b6040516020818303038152906040528051906020012003610e785750738e42f2f4101563bf679975178e880fd87d3efd4e919050565b604051661b585a5b9b995d60ca1b60208201526027016040516020818303038152906040528051906020012082604051602001610eb59190612f4a565b6040516020818303038152906040528051906020012003610eeb575073dc8d77b69155c7e68a95a4fb0f06a71ff90b943a919050565b60405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420636861696e0000000000000000000000000000000000000060448201526064015b60405180910390fd5b610f7f838383604051602401610f50939291906130f1565b60408051601f198184030181529190526020810180516001600160e01b03166307c8121760e01b1790526112cc565b505050565b610fcd84848484604051602401610f9e949392919061311f565b60408051601f198184030181529190526020810180516001600160e01b031663a54ed4bd60e01b1790526112cc565b50505050565b610ffe6040518060800160405280606081526020016000815260200160608152602001606081525090565b81516000036110815760405162461bcd60e51b815260206004820152604360248201527f537464436861696e7320676574436861696e28737472696e67293a204368616960448201527f6e20616c6961732063616e6e6f742062652074686520656d707479207374726960648201526237339760e91b608482015260a401610f2f565b6110896112ed565b6008826040516110999190612f4a565b90815260200160405180910390206040518060800160405290816000820180546110c290612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546110ee90612ee3565b801561113b5780601f106111105761010080835404028352916020019161113b565b820191906000526020600020905b81548152906001019060200180831161111e57829003601f168201915b505050505081526020016001820154815260200160028201805461115e90612ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461118a90612ee3565b80156111d75780601f106111ac576101008083540402835291602001916111d7565b820191906000526020600020905b8154815290600101906020018083116111ba57829003601f168201915b505050505081526020016003820180546111f090612ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461121c90612ee3565b80156112695780601f1061123e57610100808354040283529160200191611269565b820191906000526020600020905b81548152906001019060200180831161124c57829003601f168201915b50505050508152505090508060200151600014158260405160200161128e919061315b565b604051602081830303815290604052906112bb5760405162461bcd60e51b8152600401610f2f9190612f17565b506112c6828261222a565b92915050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600754610100900460ff16156112ff57565b6007805461ff00191661010017905560408051808201825260058082527f616e76696c000000000000000000000000000000000000000000000000000000602080840191909152835160a081018552606081019283527f416e76696c0000000000000000000000000000000000000000000000000000006080820152918252617a698282015283518085018552601581527f687474703a2f2f3132372e302e302e313a38353435000000000000000000000091810191909152928101929092526113c891612595565b611458604051806040016040528060078152602001661b585a5b9b995d60ca1b81525060405180606001604052806040518060400160405280600781526020017f4d61696e6e6574000000000000000000000000000000000000000000000000008152508152602001600181526020016040518060600160405280603d8152602001613a7a603d91399052612595565b6114fe6040518060400160405280600681526020017f676f65726c69000000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600681526020017f476f65726c6900000000000000000000000000000000000000000000000000008152508152602001600581526020016040518060600160405280603c8152602001613c42603c91399052612595565b6115a66040518060400160405280600781526020017f7365706f6c69610000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f5365706f6c696100000000000000000000000000000000000000000000000000815250815260200162aa36a781526020016040518060600160405280603d8152602001613ab7603d91399052612595565b61166a6040518060400160405280600881526020017f6f7074696d69736d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4f7074696d69736d0000000000000000000000000000000000000000000000008152508152602001600a81526020016040518060400160405280601b81526020017f68747470733a2f2f6d61696e6e65742e6f7074696d69736d2e696f0000000000815250815250612595565b61172f6040518060400160405280600f81526020017f6f7074696d69736d5f676f65726c69000000000000000000000000000000000081525060405180606001604052806040518060400160405280600f81526020017f4f7074696d69736d20476f65726c69000000000000000000000000000000000081525081526020016101a481526020016040518060400160405280601a81526020017f68747470733a2f2f676f65726c692e6f7074696d69736d2e696f000000000000815250815250612595565b6117e36040518060400160405280600c81526020016b617262697472756d5f6f6e6560a01b81525060405180606001604052806040518060400160405280600c81526020017f417262697472756d204f6e650000000000000000000000000000000000000000815250815260200161a4b181526020016040518060400160405280601c81526020017f68747470733a2f2f617262312e617262697472756d2e696f2f72706300000000815250815250612595565b61188b6040518060400160405280601381526020017f617262697472756d5f6f6e655f676f65726c690000000000000000000000000081525060405180606001604052806040518060400160405280601381526020017f417262697472756d204f6e6520476f65726c6900000000000000000000000000815250815260200162066eed8152602001604051806060016040528060258152602001613baf602591399052612595565b6119506040518060400160405280600d81526020017f617262697472756d5f6e6f76610000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600d81526020017f417262697472756d204e6f766100000000000000000000000000000000000000815250815260200161a4ba81526020016040518060400160405280601c81526020017f68747470733a2f2f6e6f76612e617262697472756d2e696f2f72706300000000815250815250612595565b611a146040518060400160405280600781526020017f706f6c79676f6e0000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f506f6c79676f6e000000000000000000000000000000000000000000000000008152508152602001608981526020016040518060400160405280601781526020017f68747470733a2f2f706f6c79676f6e2d7270632e636f6d000000000000000000815250815250612595565b611abc6040518060400160405280600e81526020017f706f6c79676f6e5f6d756d62616900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f506f6c79676f6e204d756d6261690000000000000000000000000000000000008152508152602001620138818152602001604051806060016040528060218152602001613b64602191399052612595565b611b4f604051806040016040528060098152602001686176616c616e63686560b81b81525060405180606001604052806040518060400160405280600981526020017f4176616c616e6368650000000000000000000000000000000000000000000000815250815260200161a86a8152602001604051806060016040528060258152602001613af4602591399052612595565b611bf66040518060400160405280600e81526020017f6176616c616e6368655f66756a6900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f4176616c616e6368652046756a69000000000000000000000000000000000000815250815260200161a86981526020016040518060600160405280602a8152602001613bd4602a91399052612595565b611c8e6040518060400160405280600f81526020016e3137312fb9b6b0b93a2fb1b430b4b760891b81525060405180606001604052806040518060400160405280600f81526020017f424e4220536d61727420436861696e0000000000000000000000000000000000815250815260200160388152602001604051806060016040528060218152602001613c21602191399052612595565b611d346040518060400160405280601781526020017f626e625f736d6172745f636861696e5f746573746e657400000000000000000081525060405180606001604052806040518060400160405280601781526020017f424e4220536d61727420436861696e20546573746e6574000000000000000000815250815260200160618152602001604051806060016040528060278152602001613b3d602791399052612595565b611df86040518060400160405280600c81526020017f676e6f7369735f636861696e000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600c81526020017f476e6f73697320436861696e00000000000000000000000000000000000000008152508152602001606481526020016040518060400160405280601b81526020017f68747470733a2f2f7270632e676e6f736973636861696e2e636f6d0000000000815250815250612595565b611ebd6040518060400160405280600881526020017f6d6f6f6e6265616d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e6265616d000000000000000000000000000000000000000000000000815250815260200161050481526020016040518060400160405280602081526020017f68747470733a2f2f7270632e6170692e6d6f6f6e6265616d2e6e6574776f726b815250815250612595565b611f646040518060400160405280600981526020017f6d6f6f6e7269766572000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600981526020017f4d6f6f6e72697665720000000000000000000000000000000000000000000000815250815260200161050581526020016040518060600160405280602a8152602001613b85602a91399052612595565b61200b6040518060400160405280600881526020017f6d6f6f6e6261736500000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e6261736500000000000000000000000000000000000000000000000081525081526020016105078152602001604051806060016040528060248152602001613b19602491399052612595565b6120d16040518060400160405280600b81526020017f626173655f676f65726c6900000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f4261736520476f65726c69000000000000000000000000000000000000000000815250815260200162014a3381526020016040518060400160405280601781526020017f68747470733a2f2f676f65726c692e626173652e6f7267000000000000000000815250815250612595565b612164604051806040016040528060048152602001636261736560e01b8152506040518060600160405280604051806040016040528060048152602001634261736560e01b815250815260200161210581526020016040518060400160405280601881526020017f68747470733a2f2f6d61696e6e65742e626173652e6f72670000000000000000815250815250612595565b6122286040518060400160405280600b81526020017f626f625f746573746e657400000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f426f6220546573746e65740000000000000000000000000000000000000000008152508152602001606f81526020016040518060400160405280601e81526020017f68747470733a2f2f746573746e65742e7270632e676f626f622e78797a2f0000815250815250612595565b565b6122556040518060800160405280606081526020016000815260200160608152602001606081525090565b81606001515160000361258f5760405163975a6ce960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063975a6ce990612299908690600401612f17565b600060405180830381865afa9250505080156122d757506040513d6000823e601f3d908101601f191682016040526122d491908101906131ed565b60015b612589573d808015612305576040519150601f19603f3d011682016040523d82523d6000602084013e61230a565b606091505b506000612316856125ef565b6040516020016123269190613264565b60408051601f19818403018152919052600b5490915060ff1615612403577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d145736c826009886040516123879190612f4a565b9081526040519081900360200181206001600160e01b031960e085901b1682526123b492916004016132a5565b600060405180830381865afa1580156123d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123f991908101906131ed565b6060850152612485565b60405163f877cb1960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb199061243a908490600401612f17565b600060405180830381865afa158015612457573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261247f91908101906131ed565b60608501525b6000856040516020016124989190613340565b60408051601f19818403018152908290526124b591602401612f17565b60408051601f19818403018152918152602080830180516001600160e01b0316630bc4450360e01b17905290519192506000916124f491899101613385565b60408051601f198184030181529082905261251191602401612f17565b60408051601f19818403018152919052602080820180516001600160e01b031663eeaa9e6f60e01b1790528551868201208451918501919091209192509081148015906125645750815160208301208114155b806125725750606087015151155b1561257f57845185602001fd5b505050505061258f565b60608301525b50919050565b600081604001519050806009846040516125af9190612f4a565b908152602001604051809103902090816125c99190613410565b506040805160208101825260008152908301526125e6838361277d565b60409091015250565b606060008290506000815167ffffffffffffffff81111561261257612612612cc9565b6040519080825280601f01601f19166020018201604052801561263c576020820181803683370190505b50905060005b825181101561277557600083828151811061265f5761265f612ecd565b01602001517fff00000000000000000000000000000000000000000000000000000000000000169050606160f81b81108015906126c25750603d60f91b7fff00000000000000000000000000000000000000000000000000000000000000821611155b1561271f576126d6602060f883901c6134d0565b60f81b8383815181106126eb576126eb612ecd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612762565b8083838151811061273257612732612ecd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b508061276d81612f7c565b915050612642565b509392505050565b815160000361281a5760405162461bcd60e51b815260206004820152604d60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e20616c6961732063616e6e6f74206265207468652060648201527f656d70747920737472696e672e00000000000000000000000000000000000000608482015260a401610f2f565b80602001516000036128945760405162461bcd60e51b815260206004820152603b60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e2049442063616e6e6f7420626520302e00000000006064820152608401610f2f565b61289c6112ed565b6020808201516000908152600a9091526040812080546128bb90612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546128e790612ee3565b80156129345780601f1061290957610100808354040283529160200191612934565b820191906000526020600020905b81548152906001019060200180831161291757829003601f168201915b50505050509050805160001480612958575082805190602001208180519060200120145b602083015160405163348051d760e11b81526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156129ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129d691908101906131ed565b826040516020016129e89291906134e9565b60405160208183030381529060405290612a155760405162461bcd60e51b8152600401610f2f9190612f17565b506000600884604051612a289190612f4a565b9081526020016040518091039020600101549050600a60008281526020019081526020016000206000612a5b9190612b1e565b604051806080016040528084600001518152602001846020015181526020018581526020018460400151815250600885604051612a989190612f4a565b90815260405190819003602001902081518190612ab59082613410565b506020820151600182015560408201516002820190612ad49082613410565b5060608201516003820190612ae99082613410565b5050506020808401516000908152600a90915260409020612b0a8582613410565b5050505050565b6104da806135a083390190565b508054612b2a90612ee3565b6000825580601f10612b3a575050565b601f0160209004906000526020600020908101906103e591905b80821115612b685760008155600101612b54565b5090565b6020808252825182820181905260009190848201906040850190845b81811015612bad5783516001600160a01b031683529284019291840191600101612b88565b50909695505050505050565b60005b83811015612bd4578181015183820152602001612bbc565b50506000910152565b60008151808452612bf5816020860160208601612bb9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612cb957603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612ca357605f19898503018352612c91848651612bdd565b948e01949350918d0191600101612c75565b505050978a019794505091880191600101612c30565b50919a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d0857612d08612cc9565b604052919050565b600067ffffffffffffffff821115612d2a57612d2a612cc9565b50601f01601f191660200190565b600060208284031215612d4a57600080fd5b813567ffffffffffffffff811115612d6157600080fd5b8201601f81018413612d7257600080fd5b8035612d85612d8082612d10565b612cdf565b818152856020838501011115612d9a57600080fd5b81602084016020830137600091810160200191909152949350505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612e5c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612e475783516001600160e01b0319168252928b019260019290920191908b0190612e1d565b50978a01979550505091870191600101612de0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ec057603f19888603018452612eae858351612bdd565b94509285019290850190600101612e92565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612ef757607f821691505b60208210810361258f57634e487b7160e01b600052602260045260246000fd5b602081526000612f2a6020830184612bdd565b9392505050565b600060208284031215612f4357600080fd5b5051919050565b60008251612f5c818460208701612bb9565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b600060018201612f8e57612f8e612f66565b5060010190565b600067ffffffffffffffff821115612faf57612faf612cc9565b5060051b60200190565b600082601f830112612fca57600080fd5b81516020612fda612d8083612f95565b82815260059290921b84018101918181019086841115612ff957600080fd5b8286015b848110156130145780518352918301918301612ffd565b509695505050505050565b6000806040838503121561303257600080fd5b825167ffffffffffffffff8082111561304a57600080fd5b818501915085601f83011261305e57600080fd5b8151602061306e612d8083612f95565b82815260059290921b8401810191818101908984111561308d57600080fd5b948201945b838610156130c15785516001600160a01b03811681146130b25760008081fd5b82529482019490820190613092565b918801519196509093505050808211156130da57600080fd5b506130e785828601612fb9565b9150509250929050565b6060815260006131046060830186612bdd565b6001600160a01b039490941660208301525060400152919050565b6080815260006131326080830187612bdd565b85602084015284604084015282810360608401526131508185612bdd565b979650505050505050565b7f537464436861696e7320676574436861696e28737472696e67293a204368616981527f6e207769746820616c69617320220000000000000000000000000000000000006020820152600082516131b981602e850160208701612bb9565b7f22206e6f7420666f756e642e0000000000000000000000000000000000000000602e939091019283015250603a01919050565b6000602082840312156131ff57600080fd5b815167ffffffffffffffff81111561321657600080fd5b8201601f8101841361322757600080fd5b8051613235612d8082612d10565b81815285602083850101111561324a57600080fd5b61325b826020830160208601612bb9565b95945050505050565b60008251613276818460208701612bb9565b7f5f5250435f55524c000000000000000000000000000000000000000000000000920191825250600801919050565b6040815260006132b86040830185612bdd565b602083820381850152600085546132ce81612ee3565b808552600182811680156132e9576001811461330357613331565b60ff1984168787015282151560051b870186019450613331565b896000528560002060005b8481101561332957815489820189015290830190870161330e565b880187019550505b50929998505050505050505050565b7f696e76616c6964207270632075726c2000000000000000000000000000000000815260008251613378816010850160208701612bb9565b9190910160100192915050565b7f696e76616c6964207270632075726c3a200000000000000000000000000000008152600082516133bd816011850160208701612bb9565b9190910160110192915050565b601f821115610f7f57600081815260208120601f850160051c810160208610156133f15750805b601f850160051c820191505b818110156107a9578281556001016133fd565b815167ffffffffffffffff81111561342a5761342a612cc9565b61343e816134388454612ee3565b846133ca565b602080601f831160018114613473576000841561345b5750858301515b600019600386901b1c1916600185901b1785556107a9565b600085815260208120601f198616915b828110156134a257888601518255948401946001909101908401613483565b50858210156134c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff82811682821603908111156112c6576112c6612f66565b7f537464436861696e7320736574436861696e28737472696e672c436861696e4481527f617461293a20436861696e20494420000000000000000000000000000000000060208201526000835161354781602f850160208801612bb9565b7f20616c7265616479207573656420627920220000000000000000000000000000602f918401918201528351613584816041840160208801612bb9565b61111760f11b6041929091019182015260430194935050505056fe608060405234801561001057600080fd5b506104ba806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634978ef8114610030575b600080fd5b61004361003e3660046102ba565b61005a565b6040516100519291906102de565b60405180910390f35b6060806000836001600160a01b0316634e937c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561009d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c19190610362565b90508067ffffffffffffffff8111156100dc576100dc61037b565b604051908082528060200260200182016040528015610105578160200160208202803683370190505b5092508067ffffffffffffffff8111156101215761012161037b565b60405190808252806020026020018201604052801561014a578160200160208202803683370190505b50915060005b8181101561029b57604051633ed7aeb360e11b8152600481018290526000906001600160a01b03871690637daf5d6690602401602060405180830381865afa1580156101a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c49190610391565b90506000816001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015610206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022a91906103da565b5050509150508186848151811061024357610243610447565b60200260200101906001600160a01b031690816001600160a01b0316815250508061ffff1685848151811061027a5761027a610447565b602002602001018181525050505080806102939061045d565b915050610150565b5050915091565b6001600160a01b03811681146102b757600080fd5b50565b6000602082840312156102cc57600080fd5b81356102d7816102a2565b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156103205781516001600160a01b0316845292840192908401906001016102fb565b5050508381038285015284518082528583019183019060005b8181101561035557835183529284019291840191600101610339565b5090979650505050505050565b60006020828403121561037457600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103a357600080fd5b81516102d7816102a2565b805161ffff811681146103c057600080fd5b919050565b805164ffffffffff811681146103c057600080fd5b600080600080600060a086880312156103f257600080fd5b855160ff8116811461040357600080fd5b9450610411602087016103ae565b935061041f604087016103ae565b925061042d606087016103c5565b915061043b608087016103c5565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006001820161047d57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220633d93cb125462c5b7c37516885e85ffb21c1555ce23a29f4bcf2c68090ce3ea64736f6c6343000814003368747470733a2f2f6d61696e6e65742e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f7365706f6c69612e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f6170692e617661782e6e6574776f726b2f6578742f62632f432f72706368747470733a2f2f7270632e746573746e65742e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f7270632e616e6b722e636f6d2f6273635f746573746e65745f63686170656c68747470733a2f2f7270632d6d756d6261692e6d61746963766967696c2e636f6d68747470733a2f2f7270632e6170692e6d6f6f6e72697665722e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f676f65726c692d726f6c6c75702e617262697472756d2e696f2f72706368747470733a2f2f6170692e617661782d746573742e6e6574776f726b2f6578742f62632f432f7270635468657265206172652025732f2573207061697273206174207269736b206f6e20257368747470733a2f2f6273632d6461746173656564312e62696e616e63652e6f726768747470733a2f2f676f65726c692e696e667572612e696f2f76332f6239373934616431646466383464666238633334643662623564636132303031a2646970667358221220059cf0b08f288846c8375b8af61a2250eed614edba8e7a16ea18e1f6caa0d20964736f6c63430008140033", - "sourceMap": "3126:44:3:-:0;;;-1:-1:-1;;3126:44:3;3166:4;3126:44;;;801:77:88;3126:44:3;801:77:88;;;-1:-1:-1;;;801:77:88;;359:3288;801:77;;;;;;;;-1:-1:-1;;;801:77:88;;-1:-1:-1;801:77:88;;;;;;-1:-1:-1;;;801:77:88;;-1:-1:-1;801:77:88;;359:3288;801:77;;;;;;-1:-1:-1;;;801:77:88;;-1:-1:-1;801:77:88;;;;;;;:::i;:::-;;359:3288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;359:3288:88;;;-1:-1:-1;359:3288:88;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:127:130;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:130;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:130;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:130;;;2580:26;2531:89;-1:-1:-1;;1335:1:130;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:130;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:130;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:130;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:130:o;:::-;359:3288:88;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80633f7286f4116100b2578063916a17c611610081578063b5508aa911610066578063b5508aa914610239578063ba414fa614610241578063e20c9f711461025957600080fd5b8063916a17c6146101f8578063a8553d751461020057600080fd5b80633f7286f4146101c65780635c79611d146101a357806366d9a9a0146101ce57806385226c81146101e357600080fd5b80633596fa6d116100ee5780633596fa6d1461019057806339fe7891146101a35780633e5e3c23146101be5780633f0072a8146101a357600080fd5b80630a9254e4146101205780631ed7831c1461012a578063264afb38146101485780632ade38801461017b575b600080fd5b610128610261565b005b6101326103e8565b60405161013f9190612b6c565b60405180910390f35b61016373dc8d77b69155c7e68a95a4fb0f06a71ff90b943a81565b6040516001600160a01b03909116815260200161013f565b61018361044a565b60405161013f9190612c09565b61012861019e366004612d38565b61058c565b610163738e42f2f4101563bf679975178e880fd87d3efd4e81565b6101326107b1565b610132610811565b6101d6610871565b60405161013f9190612db8565b6101eb610957565b60405161013f9190612e6b565b6101d6610a27565b61022b61020e366004612d38565b8051602081830181018051601d8252928201919093012091525481565b60405190815260200161013f565b6101eb610b0d565b610249610bdd565b604051901515815260200161013f565b610132610c98565b60005b601c548110156103e5576000601c828154811061028357610283612ecd565b90600052602060002001805461029890612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546102c490612ee3565b80156103115780601f106102e657610100808354040283529160200191610311565b820191906000526020600020905b8154815290600101906020018083116102f457829003601f168201915b505050505090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166331ba349861035383610cf8565b6040518263ffffffff1660e01b815260040161036f9190612f17565b6020604051808303816000875af115801561038e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b29190612f31565b601d826040516103c29190612f4a565b9081526040519081900360200190205550806103dd81612f7c565b915050610264565b50565b6060601480548060200260200160405190810160405280929190818152602001828054801561044057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610422575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561058357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561056c5783829060005260206000200180546104df90612ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90612ee3565b80156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b5050505050815260200190600101906104c0565b50505050815250508152602001906001019061046e565b50505050905090565b604051737109709ecfa91a80626ff3989d68f67f5b1dd12d90639ebf682790601d906105b9908590612f4a565b908152604051908190036020018120546001600160e01b031960e084901b1682526105ea9160040190815260200190565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b50505050600061062782610d0d565b9050600060405161063790612b11565b604051809103906000f080158015610653573d6000803e3d6000fd5b50604051634978ef8160e01b81526001600160a01b038481166004830152919250600091829190841690634978ef8190602401600060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106cb919081019061301f565b915091506000805b83518110156107835760008482815181106106f0576106f0612ecd565b60200260200101519050600084838151811061070e5761070e612ecd565b60200260200101519050600081111561076e578361072b81612f7c565b94505061076e6040518060400160405280601381526020017f50616972202573206861732073697a65202573000000000000000000000000008152508383610f38565b5050808061077b90612f7c565b9150506106d3565b506107a9604051806060016040528060238152602001613bfe6023913982855189610f84565b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610440576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610422575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610440576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610422575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105835760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561093f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109015790505b50505050508152505081526020019060010190610895565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561058357838290600052602060002001805461099a90612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546109c690612ee3565b8015610a135780601f106109e857610100808354040283529160200191610a13565b820191906000526020600020905b8154815290600101906020018083116109f657829003601f168201915b50505050508152602001906001019061097b565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105835760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610af557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ab75790505b50505050508152505081526020019060010190610a4b565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610583578382906000526020600020018054610b5090612ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7c90612ee3565b8015610bc95780601f10610b9e57610100808354040283529160200191610bc9565b820191906000526020600020905b815481529060010190602001808311610bac57829003601f168201915b505050505081526020019060010190610b31565b60075460009060ff1615610bf5575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c919190612f31565b1415905090565b60606013805480602002602001604051908101604052809291908181526020018280548015610440576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610422575050505050905090565b6060610d0382610fd3565b6060015192915050565b604051686176616c616e63686560b81b60208201526000906029016040516020818303038152906040528051906020012082604051602001610d4f9190612f4a565b6040516020818303038152906040528051906020012003610d855750738e42f2f4101563bf679975178e880fd87d3efd4e919050565b6040516b617262697472756d5f6f6e6560a01b6020820152602c016040516020818303038152906040528051906020012082604051602001610dc79190612f4a565b6040516020818303038152906040528051906020012003610dfd5750738e42f2f4101563bf679975178e880fd87d3efd4e919050565b6040516e3137312fb9b6b0b93a2fb1b430b4b760891b6020820152602f016040516020818303038152906040528051906020012082604051602001610e429190612f4a565b6040516020818303038152906040528051906020012003610e785750738e42f2f4101563bf679975178e880fd87d3efd4e919050565b604051661b585a5b9b995d60ca1b60208201526027016040516020818303038152906040528051906020012082604051602001610eb59190612f4a565b6040516020818303038152906040528051906020012003610eeb575073dc8d77b69155c7e68a95a4fb0f06a71ff90b943a919050565b60405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420636861696e0000000000000000000000000000000000000060448201526064015b60405180910390fd5b610f7f838383604051602401610f50939291906130f1565b60408051601f198184030181529190526020810180516001600160e01b03166307c8121760e01b1790526112cc565b505050565b610fcd84848484604051602401610f9e949392919061311f565b60408051601f198184030181529190526020810180516001600160e01b031663a54ed4bd60e01b1790526112cc565b50505050565b610ffe6040518060800160405280606081526020016000815260200160608152602001606081525090565b81516000036110815760405162461bcd60e51b815260206004820152604360248201527f537464436861696e7320676574436861696e28737472696e67293a204368616960448201527f6e20616c6961732063616e6e6f742062652074686520656d707479207374726960648201526237339760e91b608482015260a401610f2f565b6110896112ed565b6008826040516110999190612f4a565b90815260200160405180910390206040518060800160405290816000820180546110c290612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546110ee90612ee3565b801561113b5780601f106111105761010080835404028352916020019161113b565b820191906000526020600020905b81548152906001019060200180831161111e57829003601f168201915b505050505081526020016001820154815260200160028201805461115e90612ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461118a90612ee3565b80156111d75780601f106111ac576101008083540402835291602001916111d7565b820191906000526020600020905b8154815290600101906020018083116111ba57829003601f168201915b505050505081526020016003820180546111f090612ee3565b80601f016020809104026020016040519081016040528092919081815260200182805461121c90612ee3565b80156112695780601f1061123e57610100808354040283529160200191611269565b820191906000526020600020905b81548152906001019060200180831161124c57829003601f168201915b50505050508152505090508060200151600014158260405160200161128e919061315b565b604051602081830303815290604052906112bb5760405162461bcd60e51b8152600401610f2f9190612f17565b506112c6828261222a565b92915050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600754610100900460ff16156112ff57565b6007805461ff00191661010017905560408051808201825260058082527f616e76696c000000000000000000000000000000000000000000000000000000602080840191909152835160a081018552606081019283527f416e76696c0000000000000000000000000000000000000000000000000000006080820152918252617a698282015283518085018552601581527f687474703a2f2f3132372e302e302e313a38353435000000000000000000000091810191909152928101929092526113c891612595565b611458604051806040016040528060078152602001661b585a5b9b995d60ca1b81525060405180606001604052806040518060400160405280600781526020017f4d61696e6e6574000000000000000000000000000000000000000000000000008152508152602001600181526020016040518060600160405280603d8152602001613a7a603d91399052612595565b6114fe6040518060400160405280600681526020017f676f65726c69000000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600681526020017f476f65726c6900000000000000000000000000000000000000000000000000008152508152602001600581526020016040518060600160405280603c8152602001613c42603c91399052612595565b6115a66040518060400160405280600781526020017f7365706f6c69610000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f5365706f6c696100000000000000000000000000000000000000000000000000815250815260200162aa36a781526020016040518060600160405280603d8152602001613ab7603d91399052612595565b61166a6040518060400160405280600881526020017f6f7074696d69736d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4f7074696d69736d0000000000000000000000000000000000000000000000008152508152602001600a81526020016040518060400160405280601b81526020017f68747470733a2f2f6d61696e6e65742e6f7074696d69736d2e696f0000000000815250815250612595565b61172f6040518060400160405280600f81526020017f6f7074696d69736d5f676f65726c69000000000000000000000000000000000081525060405180606001604052806040518060400160405280600f81526020017f4f7074696d69736d20476f65726c69000000000000000000000000000000000081525081526020016101a481526020016040518060400160405280601a81526020017f68747470733a2f2f676f65726c692e6f7074696d69736d2e696f000000000000815250815250612595565b6117e36040518060400160405280600c81526020016b617262697472756d5f6f6e6560a01b81525060405180606001604052806040518060400160405280600c81526020017f417262697472756d204f6e650000000000000000000000000000000000000000815250815260200161a4b181526020016040518060400160405280601c81526020017f68747470733a2f2f617262312e617262697472756d2e696f2f72706300000000815250815250612595565b61188b6040518060400160405280601381526020017f617262697472756d5f6f6e655f676f65726c690000000000000000000000000081525060405180606001604052806040518060400160405280601381526020017f417262697472756d204f6e6520476f65726c6900000000000000000000000000815250815260200162066eed8152602001604051806060016040528060258152602001613baf602591399052612595565b6119506040518060400160405280600d81526020017f617262697472756d5f6e6f76610000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600d81526020017f417262697472756d204e6f766100000000000000000000000000000000000000815250815260200161a4ba81526020016040518060400160405280601c81526020017f68747470733a2f2f6e6f76612e617262697472756d2e696f2f72706300000000815250815250612595565b611a146040518060400160405280600781526020017f706f6c79676f6e0000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f506f6c79676f6e000000000000000000000000000000000000000000000000008152508152602001608981526020016040518060400160405280601781526020017f68747470733a2f2f706f6c79676f6e2d7270632e636f6d000000000000000000815250815250612595565b611abc6040518060400160405280600e81526020017f706f6c79676f6e5f6d756d62616900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f506f6c79676f6e204d756d6261690000000000000000000000000000000000008152508152602001620138818152602001604051806060016040528060218152602001613b64602191399052612595565b611b4f604051806040016040528060098152602001686176616c616e63686560b81b81525060405180606001604052806040518060400160405280600981526020017f4176616c616e6368650000000000000000000000000000000000000000000000815250815260200161a86a8152602001604051806060016040528060258152602001613af4602591399052612595565b611bf66040518060400160405280600e81526020017f6176616c616e6368655f66756a6900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f4176616c616e6368652046756a69000000000000000000000000000000000000815250815260200161a86981526020016040518060600160405280602a8152602001613bd4602a91399052612595565b611c8e6040518060400160405280600f81526020016e3137312fb9b6b0b93a2fb1b430b4b760891b81525060405180606001604052806040518060400160405280600f81526020017f424e4220536d61727420436861696e0000000000000000000000000000000000815250815260200160388152602001604051806060016040528060218152602001613c21602191399052612595565b611d346040518060400160405280601781526020017f626e625f736d6172745f636861696e5f746573746e657400000000000000000081525060405180606001604052806040518060400160405280601781526020017f424e4220536d61727420436861696e20546573746e6574000000000000000000815250815260200160618152602001604051806060016040528060278152602001613b3d602791399052612595565b611df86040518060400160405280600c81526020017f676e6f7369735f636861696e000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600c81526020017f476e6f73697320436861696e00000000000000000000000000000000000000008152508152602001606481526020016040518060400160405280601b81526020017f68747470733a2f2f7270632e676e6f736973636861696e2e636f6d0000000000815250815250612595565b611ebd6040518060400160405280600881526020017f6d6f6f6e6265616d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e6265616d000000000000000000000000000000000000000000000000815250815260200161050481526020016040518060400160405280602081526020017f68747470733a2f2f7270632e6170692e6d6f6f6e6265616d2e6e6574776f726b815250815250612595565b611f646040518060400160405280600981526020017f6d6f6f6e7269766572000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600981526020017f4d6f6f6e72697665720000000000000000000000000000000000000000000000815250815260200161050581526020016040518060600160405280602a8152602001613b85602a91399052612595565b61200b6040518060400160405280600881526020017f6d6f6f6e6261736500000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e6261736500000000000000000000000000000000000000000000000081525081526020016105078152602001604051806060016040528060248152602001613b19602491399052612595565b6120d16040518060400160405280600b81526020017f626173655f676f65726c6900000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f4261736520476f65726c69000000000000000000000000000000000000000000815250815260200162014a3381526020016040518060400160405280601781526020017f68747470733a2f2f676f65726c692e626173652e6f7267000000000000000000815250815250612595565b612164604051806040016040528060048152602001636261736560e01b8152506040518060600160405280604051806040016040528060048152602001634261736560e01b815250815260200161210581526020016040518060400160405280601881526020017f68747470733a2f2f6d61696e6e65742e626173652e6f72670000000000000000815250815250612595565b6122286040518060400160405280600b81526020017f626f625f746573746e657400000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f426f6220546573746e65740000000000000000000000000000000000000000008152508152602001606f81526020016040518060400160405280601e81526020017f68747470733a2f2f746573746e65742e7270632e676f626f622e78797a2f0000815250815250612595565b565b6122556040518060800160405280606081526020016000815260200160608152602001606081525090565b81606001515160000361258f5760405163975a6ce960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063975a6ce990612299908690600401612f17565b600060405180830381865afa9250505080156122d757506040513d6000823e601f3d908101601f191682016040526122d491908101906131ed565b60015b612589573d808015612305576040519150601f19603f3d011682016040523d82523d6000602084013e61230a565b606091505b506000612316856125ef565b6040516020016123269190613264565b60408051601f19818403018152919052600b5490915060ff1615612403577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d145736c826009886040516123879190612f4a565b9081526040519081900360200181206001600160e01b031960e085901b1682526123b492916004016132a5565b600060405180830381865afa1580156123d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123f991908101906131ed565b6060850152612485565b60405163f877cb1960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb199061243a908490600401612f17565b600060405180830381865afa158015612457573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261247f91908101906131ed565b60608501525b6000856040516020016124989190613340565b60408051601f19818403018152908290526124b591602401612f17565b60408051601f19818403018152918152602080830180516001600160e01b0316630bc4450360e01b17905290519192506000916124f491899101613385565b60408051601f198184030181529082905261251191602401612f17565b60408051601f19818403018152919052602080820180516001600160e01b031663eeaa9e6f60e01b1790528551868201208451918501919091209192509081148015906125645750815160208301208114155b806125725750606087015151155b1561257f57845185602001fd5b505050505061258f565b60608301525b50919050565b600081604001519050806009846040516125af9190612f4a565b908152602001604051809103902090816125c99190613410565b506040805160208101825260008152908301526125e6838361277d565b60409091015250565b606060008290506000815167ffffffffffffffff81111561261257612612612cc9565b6040519080825280601f01601f19166020018201604052801561263c576020820181803683370190505b50905060005b825181101561277557600083828151811061265f5761265f612ecd565b01602001517fff00000000000000000000000000000000000000000000000000000000000000169050606160f81b81108015906126c25750603d60f91b7fff00000000000000000000000000000000000000000000000000000000000000821611155b1561271f576126d6602060f883901c6134d0565b60f81b8383815181106126eb576126eb612ecd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612762565b8083838151811061273257612732612ecd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b508061276d81612f7c565b915050612642565b509392505050565b815160000361281a5760405162461bcd60e51b815260206004820152604d60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e20616c6961732063616e6e6f74206265207468652060648201527f656d70747920737472696e672e00000000000000000000000000000000000000608482015260a401610f2f565b80602001516000036128945760405162461bcd60e51b815260206004820152603b60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e2049442063616e6e6f7420626520302e00000000006064820152608401610f2f565b61289c6112ed565b6020808201516000908152600a9091526040812080546128bb90612ee3565b80601f01602080910402602001604051908101604052809291908181526020018280546128e790612ee3565b80156129345780601f1061290957610100808354040283529160200191612934565b820191906000526020600020905b81548152906001019060200180831161291757829003601f168201915b50505050509050805160001480612958575082805190602001208180519060200120145b602083015160405163348051d760e11b81526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa1580156129ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129d691908101906131ed565b826040516020016129e89291906134e9565b60405160208183030381529060405290612a155760405162461bcd60e51b8152600401610f2f9190612f17565b506000600884604051612a289190612f4a565b9081526020016040518091039020600101549050600a60008281526020019081526020016000206000612a5b9190612b1e565b604051806080016040528084600001518152602001846020015181526020018581526020018460400151815250600885604051612a989190612f4a565b90815260405190819003602001902081518190612ab59082613410565b506020820151600182015560408201516002820190612ad49082613410565b5060608201516003820190612ae99082613410565b5050506020808401516000908152600a90915260409020612b0a8582613410565b5050505050565b6104da806135a083390190565b508054612b2a90612ee3565b6000825580601f10612b3a575050565b601f0160209004906000526020600020908101906103e591905b80821115612b685760008155600101612b54565b5090565b6020808252825182820181905260009190848201906040850190845b81811015612bad5783516001600160a01b031683529284019291840191600101612b88565b50909695505050505050565b60005b83811015612bd4578181015183820152602001612bbc565b50506000910152565b60008151808452612bf5816020860160208601612bb9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612cb957603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612ca357605f19898503018352612c91848651612bdd565b948e01949350918d0191600101612c75565b505050978a019794505091880191600101612c30565b50919a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d0857612d08612cc9565b604052919050565b600067ffffffffffffffff821115612d2a57612d2a612cc9565b50601f01601f191660200190565b600060208284031215612d4a57600080fd5b813567ffffffffffffffff811115612d6157600080fd5b8201601f81018413612d7257600080fd5b8035612d85612d8082612d10565b612cdf565b818152856020838501011115612d9a57600080fd5b81602084016020830137600091810160200191909152949350505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612e5c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612e475783516001600160e01b0319168252928b019260019290920191908b0190612e1d565b50978a01979550505091870191600101612de0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ec057603f19888603018452612eae858351612bdd565b94509285019290850190600101612e92565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612ef757607f821691505b60208210810361258f57634e487b7160e01b600052602260045260246000fd5b602081526000612f2a6020830184612bdd565b9392505050565b600060208284031215612f4357600080fd5b5051919050565b60008251612f5c818460208701612bb9565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b600060018201612f8e57612f8e612f66565b5060010190565b600067ffffffffffffffff821115612faf57612faf612cc9565b5060051b60200190565b600082601f830112612fca57600080fd5b81516020612fda612d8083612f95565b82815260059290921b84018101918181019086841115612ff957600080fd5b8286015b848110156130145780518352918301918301612ffd565b509695505050505050565b6000806040838503121561303257600080fd5b825167ffffffffffffffff8082111561304a57600080fd5b818501915085601f83011261305e57600080fd5b8151602061306e612d8083612f95565b82815260059290921b8401810191818101908984111561308d57600080fd5b948201945b838610156130c15785516001600160a01b03811681146130b25760008081fd5b82529482019490820190613092565b918801519196509093505050808211156130da57600080fd5b506130e785828601612fb9565b9150509250929050565b6060815260006131046060830186612bdd565b6001600160a01b039490941660208301525060400152919050565b6080815260006131326080830187612bdd565b85602084015284604084015282810360608401526131508185612bdd565b979650505050505050565b7f537464436861696e7320676574436861696e28737472696e67293a204368616981527f6e207769746820616c69617320220000000000000000000000000000000000006020820152600082516131b981602e850160208701612bb9565b7f22206e6f7420666f756e642e0000000000000000000000000000000000000000602e939091019283015250603a01919050565b6000602082840312156131ff57600080fd5b815167ffffffffffffffff81111561321657600080fd5b8201601f8101841361322757600080fd5b8051613235612d8082612d10565b81815285602083850101111561324a57600080fd5b61325b826020830160208601612bb9565b95945050505050565b60008251613276818460208701612bb9565b7f5f5250435f55524c000000000000000000000000000000000000000000000000920191825250600801919050565b6040815260006132b86040830185612bdd565b602083820381850152600085546132ce81612ee3565b808552600182811680156132e9576001811461330357613331565b60ff1984168787015282151560051b870186019450613331565b896000528560002060005b8481101561332957815489820189015290830190870161330e565b880187019550505b50929998505050505050505050565b7f696e76616c6964207270632075726c2000000000000000000000000000000000815260008251613378816010850160208701612bb9565b9190910160100192915050565b7f696e76616c6964207270632075726c3a200000000000000000000000000000008152600082516133bd816011850160208701612bb9565b9190910160110192915050565b601f821115610f7f57600081815260208120601f850160051c810160208610156133f15750805b601f850160051c820191505b818110156107a9578281556001016133fd565b815167ffffffffffffffff81111561342a5761342a612cc9565b61343e816134388454612ee3565b846133ca565b602080601f831160018114613473576000841561345b5750858301515b600019600386901b1c1916600185901b1785556107a9565b600085815260208120601f198616915b828110156134a257888601518255948401946001909101908401613483565b50858210156134c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff82811682821603908111156112c6576112c6612f66565b7f537464436861696e7320736574436861696e28737472696e672c436861696e4481527f617461293a20436861696e20494420000000000000000000000000000000000060208201526000835161354781602f850160208801612bb9565b7f20616c7265616479207573656420627920220000000000000000000000000000602f918401918201528351613584816041840160208801612bb9565b61111760f11b6041929091019182015260430194935050505056fe608060405234801561001057600080fd5b506104ba806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634978ef8114610030575b600080fd5b61004361003e3660046102ba565b61005a565b6040516100519291906102de565b60405180910390f35b6060806000836001600160a01b0316634e937c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561009d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c19190610362565b90508067ffffffffffffffff8111156100dc576100dc61037b565b604051908082528060200260200182016040528015610105578160200160208202803683370190505b5092508067ffffffffffffffff8111156101215761012161037b565b60405190808252806020026020018201604052801561014a578160200160208202803683370190505b50915060005b8181101561029b57604051633ed7aeb360e11b8152600481018290526000906001600160a01b03871690637daf5d6690602401602060405180830381865afa1580156101a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c49190610391565b90506000816001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015610206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022a91906103da565b5050509150508186848151811061024357610243610447565b60200260200101906001600160a01b031690816001600160a01b0316815250508061ffff1685848151811061027a5761027a610447565b602002602001018181525050505080806102939061045d565b915050610150565b5050915091565b6001600160a01b03811681146102b757600080fd5b50565b6000602082840312156102cc57600080fd5b81356102d7816102a2565b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156103205781516001600160a01b0316845292840192908401906001016102fb565b5050508381038285015284518082528583019183019060005b8181101561035557835183529284019291840191600101610339565b5090979650505050505050565b60006020828403121561037457600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103a357600080fd5b81516102d7816102a2565b805161ffff811681146103c057600080fd5b919050565b805164ffffffffff811681146103c057600080fd5b600080600080600060a086880312156103f257600080fd5b855160ff8116811461040357600080fd5b9450610411602087016103ae565b935061041f604087016103ae565b925061042d606087016103c5565b915061043b608087016103c5565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006001820161047d57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220633d93cb125462c5b7c37516885e85ffb21c1555ce23a29f4bcf2c68090ce3ea64736f6c6343000814003368747470733a2f2f6d61696e6e65742e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f7365706f6c69612e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f6170692e617661782e6e6574776f726b2f6578742f62632f432f72706368747470733a2f2f7270632e746573746e65742e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f7270632e616e6b722e636f6d2f6273635f746573746e65745f63686170656c68747470733a2f2f7270632d6d756d6261692e6d61746963766967696c2e636f6d68747470733a2f2f7270632e6170692e6d6f6f6e72697665722e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f676f65726c692d726f6c6c75702e617262697472756d2e696f2f72706368747470733a2f2f6170692e617661782d746573742e6e6574776f726b2f6578742f62632f432f7270635468657265206172652025732f2573207061697273206174207269736b206f6e20257368747470733a2f2f6273632d6461746173656564312e62696e616e63652e6f726768747470733a2f2f676f65726c692e696e667572612e696f2f76332f6239373934616431646466383464666238633334643662623564636132303031a2646970667358221220059cf0b08f288846c8375b8af61a2250eed614edba8e7a16ea18e1f6caa0d20964736f6c63430008140033", - "sourceMap": "359:3288:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;930:199;;;:::i;:::-;;2452:134:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;702:92:88;;751:42;702:92;;;;;-1:-1:-1;;;;;883:55:130;;;865:74;;853:2;838:18;702:92:88;700:245:130;3360:151:6;;;:::i;:::-;;;;;;;:::i;1493:688:88:-;;;;;;:::i;:::-;;:::i;402:93::-;;452:42;402:93;;3221:133:6;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;884:39:88:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7082:25:130;;;7070:2;7055:18;884:39:88;6936:177:130;2157:141:6;;;:::i;1243:204:2:-;;;:::i;:::-;;;7283:14:130;;7276:22;7258:41;;7246:2;7231:18;1243:204:2;7118:187:130;2304:142:6;;;:::i;930:199:88:-;969:9;964:159;988:6;:13;984:17;;964:159;;;1022:19;1044:6;1051:1;1044:9;;;;;;;;:::i;:::-;;;;;;;;1022:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;1083:13:88;;1097:14;1105:5;1097:7;:14::i;:::-;1083:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1068:5;1074;1068:12;;;;;;:::i;:::-;;;;;;;;;;;;;;:44;-1:-1:-1;1003:3:88;;;;:::i;:::-;;;;964:159;;;;930:199::o;2452:134:6:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:6;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;1493:688:88:-;1563:12;;1549:13;;;;1563:5;;:12;;1569:5;;1563:12;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1549:27:88;;;;;;;;;;;7082:25:130;;;7070:2;7055:18;;6936:177;1549:27:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1587:17;1607:22;1623:5;1607:15;:22::i;:::-;1587:42;;1640:22;1665:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1753:31:88;;-1:-1:-1;;;1753:31:88;;-1:-1:-1;;;;;883:55:130;;;1753:31:88;;;865:74:130;1640:51:88;;-1:-1:-1;1703:22:88;;;;1753;;;;;;838:18:130;;1753:31:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1753:31:88;;;;;;;;;;;;:::i;:::-;1702:82;;;;1795:14;1829:9;1824:261;1848:5;:12;1844:1;:16;1824:261;;;1881:12;1896:5;1902:1;1896:8;;;;;;;;:::i;:::-;;;;;;;1881:23;;1918:12;1933:5;1939:1;1933:8;;;;;;;;:::i;:::-;;;;;;;1918:23;;1967:1;1960:4;:8;1956:119;;;1988:8;;;;:::i;:::-;;;;2014:46;;;;;;;;;;;;;;;;;;2049:4;2055;2014:11;:46::i;:::-;1867:218;;1862:3;;;;;:::i;:::-;;;;1824:261;;;;2095:79;;;;;;;;;;;;;;;;;;2146:6;2154:5;:12;2168:5;2095:11;:79::i;:::-;1539:642;;;;;1493:688;:::o;3221:133:6:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:6;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:6;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:2;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:2;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:2;;:7;:39;;;11179:74:130;;;1398:17:2;11269:18:130;;;11262:34;1428:1:2;;1377:7;;11152:18:130;;1377:39:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:6:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:6;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;2187:767:88:-;2243:13;2915:25;2934:5;2915:18;:25::i;:::-;:32;;;;2187:767;-1:-1:-1;;2187:767:88:o;2960:685::-;3102:29;;-1:-1:-1;;;3102:29:88;;;11698:24:130;3029:9:88;;11738:11:130;;3102:29:88;;;;;;;;;;;;3092:40;;;;;;3081:5;3064:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;3054:34;;;;;;:78;3050:589;;-1:-1:-1;452:42:88;;2960:685;-1:-1:-1;2960:685:88:o;3050:589::-;3235:32;;-1:-1:-1;;;3235:32:88;;;11962:27:130;12005:12;;3235:32:88;;;;;;;;;;;;3225:43;;;;;;3214:5;3197:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;3187:34;;;;;;:81;3183:456;;-1:-1:-1;555:42:88;;2960:685;-1:-1:-1;2960:685:88:o;3183:456::-;3375:35;;-1:-1:-1;;;3375:35:88;;;12230:30:130;12276:12;;3375:35:88;;;;;;;;;;;;3365:46;;;;;;3354:5;3337:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;3327:34;;;;;;:84;3323:316;;-1:-1:-1;653:42:88;;2960:685;-1:-1:-1;2960:685:88:o;3323:316::-;3513:27;;-1:-1:-1;;;3513:27:88;;;12501:22:130;12539:11;;3513:27:88;;;;;;;;;;;;3503:38;;;;;;3492:5;3475:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;3465:34;;;;;;:76;3461:178;;-1:-1:-1;751:42:88;;2960:685;-1:-1:-1;2960:685:88:o;3461:178::-;3605:23;;-1:-1:-1;;;3605:23:88;;12763:2:130;3605:23:88;;;12745:21:130;12802:2;12782:18;;;12775:30;12841:15;12821:18;;;12814:43;12874:18;;3605:23:88;;;;;;;;12894:163:14;12970:80;13038:2;13042;13046;12986:63;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12986:63:14;;;;;;;;;;;;;;-1:-1:-1;;;;;12986:63:14;-1:-1:-1;;;12986:63:14;;;12970:15;:80::i;:::-;12894:163;;;:::o;30696:186::-;30787:88;30859:2;30863;30867;30871;30803:71;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;30803:71:14;;;;;;;;;;;;;;-1:-1:-1;;;;;30803:71:14;-1:-1:-1;;;30803:71:14;;;30787:15;:88::i;:::-;30696:186;;;;:::o;3255:524:3:-;3325:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3325:18:3;3369:10;3363:24;3391:1;3363:29;3355:109;;;;-1:-1:-1;;;3355:109:3;;14053:2:130;3355:109:3;;;14035:21:130;14092:2;14072:18;;;14065:30;14131:34;14111:18;;;14104:62;14202:34;14182:18;;;14175:62;-1:-1:-1;;;14253:19:130;;;14246:34;14297:19;;3355:109:3;13851:471:130;3355:109:3;3475:21;:19;:21::i;:::-;3514:6;3521:10;3514:18;;;;;;:::i;:::-;;;;;;;;;;;;;3506:26;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3563:5;:13;;;3580:1;3563:18;;3670:10;3602:96;;;;;;;;:::i;:::-;;;;;;;;;;;;;3542:167;;;;;-1:-1:-1;;;3542:167:3;;;;;;;;:::i;:::-;;3728:44;3754:10;3766:5;3728:25;:44::i;:::-;3720:52;3255:524;-1:-1:-1;;3255:524:3:o;181:376:14:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;8283:3094:3:-;8336:20;;;;;;;8332:33;;;8283:3094::o;8332:33::-;8375:20;:27;;-1:-1:-1;;8375:27:3;;;;;8499:86;;;;;;;;;;;;;;;;;;;;;8534:50;;;;;;;;;;;;;;;;;;;;;8553:5;8534:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8499:86;;:25;:86::i;:::-;8595:148;;;;;;;;;;;;;;-1:-1:-1;;;8595:148:3;;;8645:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8666:1;8645:88;;;;;;;;;;;;;;;;;;;;;;;8595:25;:148::i;:::-;8753:145;;;;;;;;;;;;;;;;;;8802:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8822:1;8802:86;;;;;;;;;;;;;;;;;;;;;;;8753:25;:145::i;:::-;8908:155;;;;;;;;;;;;;;;;;;8958:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8979:8;8958:95;;;;;;;;;;;;;;;;;;;;;;;8908:25;:155::i;:::-;9073:95;;;;;;;;;;;;;;;;;;9111:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9133:2;9111:56;;;;;;;;;;;;;;;;;;;;;;;;9073:25;:95::i;:::-;9178:109;;;;;;;;;;;;;;;;;;9223:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9252:3;9223:63;;;;;;;;;;;;;;;;;;;;;;;;9178:25;:109::i;:::-;9297:107;;;;;;;;;;;;;;-1:-1:-1;;;9297:107:3;;;9339:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9365:5;9339:64;;;;;;;;;;;;;;;;;;;;;;;;9297:25;:107::i;:::-;9414:153;;;;;;;;;;;;;;;;;;9476:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9509:6;9476:81;;;;;;;;;;;;;;;;;;;;;;;9414:25;:153::i;:::-;9577:109;;;;;;;;;;;;;;;;;;9620:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9647:5;9620:65;;;;;;;;;;;;;;;;;;;;;;;;9577:25;:109::i;:::-;9696:90;;;;;;;;;;;;;;;;;;9733:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9754:3;9733:52;;;;;;;;;;;;;;;;;;;;;;;;9696:25;:90::i;:::-;9796:138;;;;;;;;;;;;;;;;;;9853:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9881:5;9853:71;;;;;;;;;;;;;;;;;;;;;;;9796:25;:138::i;:::-;9944:110;;;;;;;;;;;;;;-1:-1:-1;;;9944:110:3;;;9983:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10006:5;9983:70;;;;;;;;;;;;;;;;;;;;;;;9944:25;:110::i;:::-;10064:147;;;;;;;;;;;;;;;;;;10121:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10149:5;10121:80;;;;;;;;;;;;;;;;;;;;;;;10064:25;:147::i;:::-;10221:137;;;;;;;;;;;;;;-1:-1:-1;;;10221:137:3;;;10279:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10308:2;10279:69;;;;;;;;;;;;;;;;;;;;;;;10221:25;:137::i;:::-;10368:171;;;;;;;;;;;;;;;;;;10446:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10483:2;10446:83;;;;;;;;;;;;;;;;;;;;;;;10368:25;:171::i;:::-;10549:104;;;;;;;;;;;;;;;;;;10591:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10617:3;10591:61;;;;;;;;;;;;;;;;;;;;;;;;10549:25;:104::i;:::-;10663:102;;;;;;;;;;;;;;;;;;10701:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10723:4;10701:63;;;;;;;;;;;;;;;;;;;;;;;;10663:25;:102::i;:::-;10775:136;;;;;;;;;;;;;;;;;;10827:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10850:4;10827:74;;;;;;;;;;;;;;;;;;;;;;;10775:25;:136::i;:::-;10921:106;;;;;;;;;;;;;;;;;;10959:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10981:4;10959:67;;;;;;;;;;;;;;;;;;;;;;;10921:25;:106::i;:::-;11037:100;;;;;;;;;;;;;;;;;;11078:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11103:5;11078:58;;;;;;;;;;;;;;;;;;;;;;;;11037:25;:100::i;:::-;11147:86;;;;;;;;;;;;;;-1:-1:-1;;;11147:86:3;;;11181:51;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11181:51:3;;;;;;;11199:4;11181:51;;;;;;;;;;;;;;;;;;;;;;;;11147:25;:86::i;:::-;11243:127;;;;;;;;;;;;;;;;;;11297:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11322:3;11297:63;;;;;;;;;;;;;;;;;;;;;;;;11243:25;:127::i;:::-;8283:3094::o;6429:1725::-;6556:12;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6556:12:3;6594:5;:12;;;6588:26;6618:1;6588:31;6584:1542;;6639:21;;-1:-1:-1;;;6639:21:3;;:9;;;;:21;;6649:10;;6639:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6639:21:3;;;;;;;;;;;;:::i;:::-;;;6635:1481;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:21;6850:20;6859:10;6850:8;:20::i;:::-;6833:50;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6833:50:3;;;;;;;;;6906:24;;6833:50;;-1:-1:-1;6906:24:3;;6902:214;;;1993:28;1985:37;;-1:-1:-1;;;;;6969:8:3;;6978:7;6987:14;7002:10;6987:26;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;;6969:45:3;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6969:45:3;;;;;;;;;;;;:::i;:::-;6954:12;;;:60;6902:214;;;7076:21;;-1:-1:-1;;;7076:21:3;;:12;;;;:21;;7089:7;;7076:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7076:21:3;;;;;;;;;;;;:::i;:::-;7061:12;;;:36;6902:214;7318:29;7456:10;7419:48;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7419:48:3;;;;;;;;;;7370:99;;;;;:::i;:::-;;;;-1:-1:-1;;7370:99:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;7370:99:3;-1:-1:-1;;;7370:99:3;;;7597:49;;7370:99;;-1:-1:-1;;;7597:49:3;;7635:10;;7597:49;;:::i;:::-;;;;-1:-1:-1;;7597:49:3;;;;;;;;;;7519:146;;;;;:::i;:::-;;;;-1:-1:-1;;7519:146:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;7519:146:3;-1:-1:-1;;;7519:146:3;;;7701:14;;;;;;7770:27;;;;;;;;;7519:146;;-1:-1:-1;7701:14:3;7759:38;;;;;:80;;-1:-1:-1;7812:27:3;;;;;;7801:38;;;7759:80;7758:141;;;-1:-1:-1;7874:12:3;;;;7868:26;:31;7758:141;7733:369;;;8057:3;8051:10;8045:3;8041:2;8037:12;8030:32;7733:369;6784:1332;;;;6759:1357;6635:1481;;;6716:12;;;:27;6635:1481;-1:-1:-1;8142:5:3;6429:1725;-1:-1:-1;6429:1725:3:o;11459:305::-;11562:20;11585:5;:12;;;11562:35;;11636:6;11607:14;11622:10;11607:26;;;;;;:::i;:::-;;;;;;;;;;;;;:35;;;;;;:::i;:::-;-1:-1:-1;11652:17:3;;;;;;;;-1:-1:-1;11652:17:3;;:12;;;:17;11679:27;11688:10;11652:5;11679:8;:27::i;:::-;11716:12;;;;:21;-1:-1:-1;11459:305:3:o;5842:451::-;5901:13;5926:17;5952:3;5926:30;;5966:17;5996:4;:11;5986:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5986:22:3;;5966:42;;6023:9;6018:240;6042:4;:11;6038:1;:15;6018:240;;;6074:8;6085:4;6090:1;6085:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;6110:9:3;;;;;:22;;-1:-1:-1;;;;6123:9:3;;;;;6110:22;6106:142;;;6169:13;6180:2;6169:8;;;;:13;:::i;:::-;6162:21;;6152:4;6157:1;6152:7;;;;;;;;:::i;:::-;;;;:31;;;;;;;;;;;6106:142;;;6232:1;6222:4;6227:1;6222:7;;;;;;;;:::i;:::-;;;;:11;;;;;;;;;;;6106:142;-1:-1:-1;6055:3:3;;;;:::i;:::-;;;;6018:240;;;-1:-1:-1;6281:4:3;5842:451;-1:-1:-1;;;5842:451:3:o;4397:1173::-;4519:10;4513:24;4541:1;4513:29;4492:153;;;;-1:-1:-1;;;4492:153:3;;20794:2:130;4492:153:3;;;20776:21:130;20833:2;20813:18;;;20806:30;20872:34;20852:18;;;20845:62;20943:34;20923:18;;;20916:62;21015:15;20994:19;;;20987:44;21048:19;;4492:153:3;20592:481:130;4492:153:3;4664:5;:13;;;4681:1;4664:18;4656:90;;;;-1:-1:-1;;;4656:90:3;;21280:2:130;4656:90:3;;;21262:21:130;21319:2;21299:18;;;21292:30;21358:34;21338:18;;;21331:62;21429:29;21409:18;;;21402:57;21476:19;;4656:90:3;21078:423:130;4656:90:3;4757:21;:19;:21::i;:::-;4825:13;;;;;4788:24;4815;;;:9;:24;;;;;;4788:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:10;4871:24;4899:1;4871:29;:93;;;;4952:10;4936:28;;;;;;4920:10;4904:28;;;;;;:60;4871:93;5123:13;;;;5111:26;;-1:-1:-1;;;5111:26:3;;;;;7082:25:130;;;;5111:11:3;;;;7055:18:130;;5111:26:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5111:26:3;;;;;;;;;;;;:::i;:::-;5202:10;5002:255;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4850:431;;;;;-1:-1:-1;;;4850:431:3;;;;;;;;:::i;:::-;;5292:18;5313:6;5320:10;5313:18;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;;5292:47;;5356:9;:21;5366:10;5356:21;;;;;;;;;;;;5349:28;;;;:::i;:::-;5421:95;;;;;;;;5434:5;:10;;;5421:95;;;;5455:5;:13;;;5421:95;;;;5482:10;5421:95;;;;5502:5;:12;;;5421:95;;;5388:6;5395:10;5388:18;;;;;;:::i;:::-;;;;;;;;;;;;;;:128;;:18;;:128;;:18;:128;:::i;:::-;-1:-1:-1;5388:128:3;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:128:3;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5536:13:3;;;;;5526:24;;;;:9;:24;;;;;;:37;5553:10;5526:24;:37;:::i;:::-;;4482:1088;;4397:1173;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:681:130:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:130;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:130;;14:681;-1:-1:-1;;;;;;14:681:130:o;950:250::-;1035:1;1045:113;1059:6;1056:1;1053:13;1045:113;;;1135:11;;;1129:18;1116:11;;;1109:39;1081:2;1074:10;1045:113;;;-1:-1:-1;;1192:1:130;1174:16;;1167:27;950:250::o;1205:271::-;1247:3;1285:5;1279:12;1312:6;1307:3;1300:19;1328:76;1397:6;1390:4;1385:3;1381:14;1374:4;1367:5;1363:16;1328:76;:::i;:::-;1458:2;1437:15;-1:-1:-1;;1433:29:130;1424:39;;;;1465:4;1420:50;;1205:271;-1:-1:-1;;1205:271:130:o;1481:1765::-;1714:2;1766:21;;;1836:13;;1739:18;;;1858:22;;;1685:4;;1714:2;1899;;1917:18;;;;1954:1;1997:15;;;1982:31;;1978:40;;2041:15;;;1685:4;;2105:1112;2121:6;2116:3;2113:15;2105:1112;;;-1:-1:-1;;2190:22:130;;;2186:36;2174:49;;2246:13;;2333:9;;-1:-1:-1;;;;;2329:58:130;2314:74;;2427:11;;2421:18;2459:15;;;2452:27;;;2540:19;;2286:15;;;2572:24;;;2753:21;;;;2619:2;2701:17;;;2689:30;;2685:39;;;2643:15;;;;2798:1;2812:296;2828:8;2823:3;2820:17;2812:296;;;2934:2;2930:7;2921:6;2913;2909:19;2905:33;2898:5;2891:48;2966:42;3001:6;2990:8;2984:15;2966:42;:::i;:::-;3037:17;;;;2956:52;-1:-1:-1;3080:14:130;;;;2856:1;2847:11;2812:296;;;-1:-1:-1;;;3195:12:130;;;;3131:6;-1:-1:-1;;3160:15:130;;;;2147:1;2138:11;2105:1112;;;-1:-1:-1;3234:6:130;;1481:1765;-1:-1:-1;;;;;;;;;;1481:1765:130:o;3251:127::-;3312:10;3307:3;3303:20;3300:1;3293:31;3343:4;3340:1;3333:15;3367:4;3364:1;3357:15;3383:275;3454:2;3448:9;3519:2;3500:13;;-1:-1:-1;;3496:27:130;3484:40;;3554:18;3539:34;;3575:22;;;3536:62;3533:88;;;3601:18;;:::i;:::-;3637:2;3630:22;3383:275;;-1:-1:-1;3383:275:130:o;3663:187::-;3712:4;3745:18;3737:6;3734:30;3731:56;;;3767:18;;:::i;:::-;-1:-1:-1;3833:2:130;3812:15;-1:-1:-1;;3808:29:130;3839:4;3804:40;;3663:187::o;3855:673::-;3924:6;3977:2;3965:9;3956:7;3952:23;3948:32;3945:52;;;3993:1;3990;3983:12;3945:52;4033:9;4020:23;4066:18;4058:6;4055:30;4052:50;;;4098:1;4095;4088:12;4052:50;4121:22;;4174:4;4166:13;;4162:27;-1:-1:-1;4152:55:130;;4203:1;4200;4193:12;4152:55;4239:2;4226:16;4264:49;4280:32;4309:2;4280:32;:::i;:::-;4264:49;:::i;:::-;4336:2;4329:5;4322:17;4376:7;4371:2;4366;4362;4358:11;4354:20;4351:33;4348:53;;;4397:1;4394;4387:12;4348:53;4452:2;4447;4443;4439:11;4434:2;4427:5;4423:14;4410:45;4496:1;4475:14;;;4491:2;4471:23;4464:34;;;;4479:5;3855:673;-1:-1:-1;;;;3855:673:130:o;4533:1590::-;4735:4;4764:2;4804;4793:9;4789:18;4834:2;4823:9;4816:21;4857:6;4892;4886:13;4923:6;4915;4908:22;4949:2;4939:12;;4982:2;4971:9;4967:18;4960:25;;5044:2;5034:6;5031:1;5027:14;5016:9;5012:30;5008:39;5082:2;5074:6;5070:15;5103:1;5124;5134:960;5150:6;5145:3;5142:15;5134:960;;;5219:22;;;-1:-1:-1;;5215:36:130;5203:49;;5275:13;;5362:9;;-1:-1:-1;;;;;5358:58:130;5343:74;;5456:11;;5450:18;5488:15;;;5481:27;;;5569:19;;5315:15;;;5601:24;;;5691:21;;;;5736:1;;5659:2;5647:15;;;5750:236;5766:8;5761:3;5758:17;5750:236;;;5847:15;;-1:-1:-1;;;;;;5843:42:130;5829:57;;5955:17;;;;5794:1;5785:11;;;;;5912:14;;;;5750:236;;;-1:-1:-1;6072:12:130;;;;6009:5;-1:-1:-1;;;6037:15:130;;;;5176:1;5167:11;5134:960;;;-1:-1:-1;6111:6:130;;4533:1590;-1:-1:-1;;;;;;;;;4533:1590:130:o;6128:803::-;6290:4;6319:2;6359;6348:9;6344:18;6389:2;6378:9;6371:21;6412:6;6447;6441:13;6478:6;6470;6463:22;6516:2;6505:9;6501:18;6494:25;;6578:2;6568:6;6565:1;6561:14;6550:9;6546:30;6542:39;6528:53;;6616:2;6608:6;6604:15;6637:1;6647:255;6661:6;6658:1;6655:13;6647:255;;;6754:2;6750:7;6738:9;6730:6;6726:22;6722:36;6717:3;6710:49;6782:40;6815:6;6806;6800:13;6782:40;:::i;:::-;6772:50;-1:-1:-1;6880:12:130;;;;6845:15;;;;6683:1;6676:9;6647:255;;;-1:-1:-1;6919:6:130;;6128:803;-1:-1:-1;;;;;;;6128:803:130:o;7310:127::-;7371:10;7366:3;7362:20;7359:1;7352:31;7402:4;7399:1;7392:15;7426:4;7423:1;7416:15;7442:380;7521:1;7517:12;;;;7564;;;7585:61;;7639:4;7631:6;7627:17;7617:27;;7585:61;7692:2;7684:6;7681:14;7661:18;7658:38;7655:161;;7738:10;7733:3;7729:20;7726:1;7719:31;7773:4;7770:1;7763:15;7801:4;7798:1;7791:15;7827:220;7976:2;7965:9;7958:21;7939:4;7996:45;8037:2;8026:9;8022:18;8014:6;7996:45;:::i;:::-;7988:53;7827:220;-1:-1:-1;;;7827:220:130:o;8052:184::-;8122:6;8175:2;8163:9;8154:7;8150:23;8146:32;8143:52;;;8191:1;8188;8181:12;8143:52;-1:-1:-1;8214:16:130;;8052:184;-1:-1:-1;8052:184:130:o;8241:289::-;8372:3;8410:6;8404:13;8426:66;8485:6;8480:3;8473:4;8465:6;8461:17;8426:66;:::i;:::-;8508:16;;;;;8241:289;-1:-1:-1;;8241:289:130:o;8535:127::-;8596:10;8591:3;8587:20;8584:1;8577:31;8627:4;8624:1;8617:15;8651:4;8648:1;8641:15;8667:135;8706:3;8727:17;;;8724:43;;8747:18;;:::i;:::-;-1:-1:-1;8794:1:130;8783:13;;8667:135::o;8807:183::-;8867:4;8900:18;8892:6;8889:30;8886:56;;;8922:18;;:::i;:::-;-1:-1:-1;8967:1:130;8963:14;8979:4;8959:25;;8807:183::o;8995:659::-;9060:5;9113:3;9106:4;9098:6;9094:17;9090:27;9080:55;;9131:1;9128;9121:12;9080:55;9160:6;9154:13;9186:4;9210:60;9226:43;9266:2;9226:43;:::i;9210:60::-;9304:15;;;9390:1;9386:10;;;;9374:23;;9370:32;;;9335:12;;;;9414:15;;;9411:35;;;9442:1;9439;9432:12;9411:35;9478:2;9470:6;9466:15;9490:135;9506:6;9501:3;9498:15;9490:135;;;9572:10;;9560:23;;9603:12;;;;9523;;9490:135;;;-1:-1:-1;9643:5:130;8995:659;-1:-1:-1;;;;;;8995:659:130:o;9659:1341::-;9788:6;9796;9849:2;9837:9;9828:7;9824:23;9820:32;9817:52;;;9865:1;9862;9855:12;9817:52;9898:9;9892:16;9927:18;9968:2;9960:6;9957:14;9954:34;;;9984:1;9981;9974:12;9954:34;10022:6;10011:9;10007:22;9997:32;;10067:7;10060:4;10056:2;10052:13;10048:27;10038:55;;10089:1;10086;10079:12;10038:55;10118:2;10112:9;10140:4;10164:60;10180:43;10220:2;10180:43;:::i;10164:60::-;10258:15;;;10340:1;10336:10;;;;10328:19;;10324:28;;;10289:12;;;;10364:19;;;10361:39;;;10396:1;10393;10386:12;10361:39;10420:11;;;;10440:342;10456:6;10451:3;10448:15;10440:342;;;10529:3;10523:10;-1:-1:-1;;;;;10570:5:130;10566:54;10559:5;10556:65;10546:163;;10663:1;10692:2;10688;10681:14;10546:163;10722:18;;10473:12;;;;10760;;;;10440:342;;;10837:18;;;10831:25;10801:5;;-1:-1:-1;10831:25:130;;-1:-1:-1;;;10868:16:130;;;10865:36;;;10897:1;10894;10887:12;10865:36;;10920:74;10986:7;10975:8;10964:9;10960:24;10920:74;:::i;:::-;10910:84;;;9659:1341;;;;;:::o;12903:411::-;13108:2;13097:9;13090:21;13071:4;13128:45;13169:2;13158:9;13154:18;13146:6;13128:45;:::i;:::-;-1:-1:-1;;;;;13209:55:130;;;;13204:2;13189:18;;13182:83;-1:-1:-1;13296:2:130;13281:18;13274:34;13120:53;12903:411;-1:-1:-1;12903:411:130:o;13319:527::-;13572:3;13561:9;13554:22;13535:4;13599:46;13640:3;13629:9;13625:19;13617:6;13599:46;:::i;:::-;13681:6;13676:2;13665:9;13661:18;13654:34;13724:6;13719:2;13708:9;13704:18;13697:34;13779:9;13771:6;13767:22;13762:2;13751:9;13747:18;13740:50;13807:33;13833:6;13825;13807:33;:::i;:::-;13799:41;13319:527;-1:-1:-1;;;;;;;13319:527:130:o;14327:777::-;14690:34;14685:3;14678:47;14755:66;14750:2;14745:3;14741:12;14734:88;14660:3;14851:6;14845:13;14867:73;14933:6;14928:2;14923:3;14919:12;14914:2;14906:6;14902:15;14867:73;:::i;:::-;15004:66;14999:2;14959:16;;;;14991:11;;;14984:87;-1:-1:-1;15095:2:130;15087:11;;14327:777;-1:-1:-1;14327:777:130:o;15109:649::-;15189:6;15242:2;15230:9;15221:7;15217:23;15213:32;15210:52;;;15258:1;15255;15248:12;15210:52;15291:9;15285:16;15324:18;15316:6;15313:30;15310:50;;;15356:1;15353;15346:12;15310:50;15379:22;;15432:4;15424:13;;15420:27;-1:-1:-1;15410:55:130;;15461:1;15458;15451:12;15410:55;15490:2;15484:9;15515:49;15531:32;15560:2;15531:32;:::i;15515:49::-;15587:2;15580:5;15573:17;15627:7;15622:2;15617;15613;15609:11;15605:20;15602:33;15599:53;;;15648:1;15645;15638:12;15599:53;15661:67;15725:2;15720;15713:5;15709:14;15704:2;15700;15696:11;15661:67;:::i;:::-;15747:5;15109:649;-1:-1:-1;;;;;15109:649:130:o;15763:459::-;15995:3;16033:6;16027:13;16049:66;16108:6;16103:3;16096:4;16088:6;16084:17;16049:66;:::i;:::-;16176:10;16137:16;;16162:25;;;-1:-1:-1;16214:1:130;16203:13;;15763:459;-1:-1:-1;15763:459:130:o;16353:1093::-;16547:2;16536:9;16529:21;16510:4;16573:45;16614:2;16603:9;16599:18;16591:6;16573:45;:::i;:::-;16637:2;16687:9;16679:6;16675:22;16670:2;16659:9;16655:18;16648:50;16718:1;16751:6;16745:13;16781:36;16807:9;16781:36;:::i;:::-;16826:22;;;16867:1;16884:18;;;16911:152;;;;17077:1;17072:348;;;;16877:543;;16911:152;-1:-1:-1;;16956:24:130;;16939:15;;;16932:49;17031:14;;17024:22;17021:1;17017:30;17005:43;;17001:52;;;-1:-1:-1;16911:152:130;;17072:348;17103:6;17100:1;17093:17;17151:2;17148:1;17138:16;17176:1;17190:177;17204:6;17201:1;17198:13;17190:177;;;17294:14;;17273;;;17269:23;;17262:47;17337:16;;;;17219:10;;17190:177;;;17391:14;;17387:23;;;-1:-1:-1;;16877:543:130;-1:-1:-1;17437:3:130;;16353:1093;-1:-1:-1;;;;;;;;;16353:1093:130:o;17451:448::-;17713:18;17708:3;17701:31;17683:3;17761:6;17755:13;17777:75;17845:6;17840:2;17835:3;17831:12;17824:4;17816:6;17812:17;17777:75;:::i;:::-;17872:16;;;;17890:2;17868:25;;17451:448;-1:-1:-1;;17451:448:130:o;17904:449::-;18166:19;18161:3;18154:32;18136:3;18215:6;18209:13;18231:75;18299:6;18294:2;18289:3;18285:12;18278:4;18270:6;18266:17;18231:75;:::i;:::-;18326:16;;;;18344:2;18322:25;;17904:449;-1:-1:-1;;17904:449:130:o;18358:545::-;18460:2;18455:3;18452:11;18449:448;;;18496:1;18521:5;18517:2;18510:17;18566:4;18562:2;18552:19;18636:2;18624:10;18620:19;18617:1;18613:27;18607:4;18603:38;18672:4;18660:10;18657:20;18654:47;;;-1:-1:-1;18695:4:130;18654:47;18750:2;18745:3;18741:12;18738:1;18734:20;18728:4;18724:31;18714:41;;18805:82;18823:2;18816:5;18813:13;18805:82;;;18868:17;;;18849:1;18838:13;18805:82;;19079:1352;19205:3;19199:10;19232:18;19224:6;19221:30;19218:56;;;19254:18;;:::i;:::-;19283:97;19373:6;19333:38;19365:4;19359:11;19333:38;:::i;:::-;19327:4;19283:97;:::i;:::-;19435:4;;19499:2;19488:14;;19516:1;19511:663;;;;20218:1;20235:6;20232:89;;;-1:-1:-1;20287:19:130;;;20281:26;20232:89;-1:-1:-1;;19036:1:130;19032:11;;;19028:24;19024:29;19014:40;19060:1;19056:11;;;19011:57;20334:81;;19481:944;;19511:663;16300:1;16293:14;;;16337:4;16324:18;;-1:-1:-1;;19547:20:130;;;19665:236;19679:7;19676:1;19673:14;19665:236;;;19768:19;;;19762:26;19747:42;;19860:27;;;;19828:1;19816:14;;;;19695:19;;19665:236;;;19669:3;19929:6;19920:7;19917:19;19914:201;;;19990:19;;;19984:26;-1:-1:-1;;20073:1:130;20069:14;;;20085:3;20065:24;20061:37;20057:42;20042:58;20027:74;;19914:201;-1:-1:-1;;;;;20161:1:130;20145:14;;;20141:22;20128:36;;-1:-1:-1;19079:1352:130:o;20436:151::-;20526:4;20519:12;;;20505;;;20501:31;;20544:14;;20541:40;;;20561:18;;:::i;21506:1078::-;22018:34;22013:3;22006:47;22083:17;22078:2;22073:3;22069:12;22062:39;21988:3;22130:6;22124:13;22146:73;22212:6;22207:2;22202:3;22198:12;22193:2;22185:6;22181:15;22146:73;:::i;:::-;22283:66;22278:2;22238:16;;;22270:11;;;22263:87;22375:13;;22397:74;22375:13;22457:2;22449:11;;22444:2;22432:15;;22397:74;:::i;:::-;-1:-1:-1;;;22531:2:130;22490:17;;;;22523:11;;;22516:35;22575:2;22567:11;;21506:1078;-1:-1:-1;;;;21506:1078:130:o", - "linkReferences": {} - }, - "methodIdentifiers": { - "excludeArtifacts()": "b5508aa9", - "excludeContracts()": "e20c9f71", - "excludeSenders()": "1ed7831c", - "factoryArbitrum()": "5c79611d", - "factoryAvax()": "39fe7891", - "factoryBsc()": "3f0072a8", - "factoryEth()": "264afb38", - "failed()": "ba414fa6", - "forks(string)": "a8553d75", - "get_size(string)": "3596fa6d", - "setUp()": "0a9254e4", - "targetArtifactSelectors()": "66d9a9a0", - "targetArtifacts()": "85226c81", - "targetContracts()": "3f7286f4", - "targetInterfaces()": "2ade3880", - "targetSelectors()": "916a17c6", - "targetSenders()": "3e5e3c23" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factoryArbitrum\",\"outputs\":[{\"internalType\":\"contract LBFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factoryAvax\",\"outputs\":[{\"internalType\":\"contract LBFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factoryBsc\",\"outputs\":[{\"internalType\":\"contract LBFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factoryEth\",\"outputs\":[{\"internalType\":\"contract LBFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"forks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\"}],\"name\":\"get_size\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/GetOracleLength.t.sol\":\"GetOracleLengthTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xeccd5d8873f709fa164aaa8f742675bc547e137f71a292e69104900849339ba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97ff96e368ef092930b738140565bbf34e7227b32e4e866c8891bf1d16e4e9ff\",\"dweb:/ipfs/QmRDNpvERz5brRX81qE64QmGbfPBoP15V9bqwYfXEDmNnx\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0x1888cc5b7dc98cab321022981ee8afbaabbac17f930f162402401c9b723aa7d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58d29cb3db3d8a5559ea061a402cdd5a38e73a62dbc2bf4e6b68ab7bd8745d34\",\"dweb:/ipfs/QmbZhFFyEzn1V4YZ9ifkJevhRv19meCg5UMP458YfJAEFq\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0xc924d832dfd6292a90f26174d8159dd52a6b16b8b3c1ae526521637038917eea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3d4864f4b3c623ffa03ff8325c7ed084d5d9137e073779e5ddbcdfd1d9b30fb\",\"dweb:/ipfs/QmPGQ5V3NBPQRfHyrdL9G7gnw4ccYdwqR5FfufGRijnBBQ\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x3faae84c13214d52f519d4dca8d48be1ad4176c75ec62816e7484555a30628ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c59c2e3322c61109e4044b80838359a2854dc416431175ca2bf6b58ec329168\",\"dweb:/ipfs/QmUXkCAiPss64mSjLnvaq4pYrQA8yhid5oqnh1B91irofL\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f\",\"dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76\",\"dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/GetOracleLength.t.sol\":{\"keccak256\":\"0x75d063a999d03ebc3669c240b36307229586b213c57f7e36bae967c726c528af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://27b83c90da6c725361a9f62b8dbfd3d2177193218f78a70b820d9e5a77d8da22\",\"dweb:/ipfs/QmQzqCKe9uxdnPYcJX2htSweqSxqac57Ln5RTBsCSVJkHE\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xbc59547d118283014b9d28c83a406a1e641f43b0276a19b6fae998dcfe44b55c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f82dfdeba66720a0af6676bfa84c9b74066d5c715a4877914f38cf76e5cada8\",\"dweb:/ipfs/QmaQy45RtZRyqVFAHpDRX6VpbE8hDg1WRJuTJPsAYZwLEm\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "", - "type": "string", - "indexed": false - } - ], - "type": "event", - "name": "log", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "log_address", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "val", - "type": "uint256[]", - "indexed": false - } - ], - "type": "event", - "name": "log_array", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "int256[]", - "name": "val", - "type": "int256[]", - "indexed": false - } - ], - "type": "event", - "name": "log_array", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "val", - "type": "address[]", - "indexed": false - } - ], - "type": "event", - "name": "log_array", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "log_bytes", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32", - "indexed": false - } - ], - "type": "event", - "name": "log_bytes32", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "int256", - "name": "", - "type": "int256", - "indexed": false - } - ], - "type": "event", - "name": "log_int", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "address", - "name": "val", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "log_named_address", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "uint256[]", - "name": "val", - "type": "uint256[]", - "indexed": false - } - ], - "type": "event", - "name": "log_named_array", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "int256[]", - "name": "val", - "type": "int256[]", - "indexed": false - } - ], - "type": "event", - "name": "log_named_array", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "address[]", - "name": "val", - "type": "address[]", - "indexed": false - } - ], - "type": "event", - "name": "log_named_array", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "bytes", - "name": "val", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "log_named_bytes", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "bytes32", - "name": "val", - "type": "bytes32", - "indexed": false - } - ], - "type": "event", - "name": "log_named_bytes32", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "int256", - "name": "val", - "type": "int256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "decimals", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "log_named_decimal_int", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "uint256", - "name": "val", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "decimals", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "log_named_decimal_uint", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "int256", - "name": "val", - "type": "int256", - "indexed": false - } - ], - "type": "event", - "name": "log_named_int", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "string", - "name": "val", - "type": "string", - "indexed": false - } - ], - "type": "event", - "name": "log_named_string", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "key", - "type": "string", - "indexed": false - }, - { - "internalType": "uint256", - "name": "val", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "log_named_uint", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "string", - "name": "", - "type": "string", - "indexed": false - } - ], - "type": "event", - "name": "log_string", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "log_uint", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes", - "indexed": false - } - ], - "type": "event", - "name": "logs", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "excludeArtifacts", - "outputs": [ - { - "internalType": "string[]", - "name": "excludedArtifacts_", - "type": "string[]" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "excludeContracts", - "outputs": [ - { - "internalType": "address[]", - "name": "excludedContracts_", - "type": "address[]" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "excludeSenders", - "outputs": [ - { - "internalType": "address[]", - "name": "excludedSenders_", - "type": "address[]" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "factoryArbitrum", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "factoryAvax", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "factoryBsc", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "factoryEth", - "outputs": [ - { - "internalType": "contract LBFactory", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "failed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function", - "name": "forks", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "string", - "name": "chain", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "get_size" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "setUp" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "targetArtifactSelectors", - "outputs": [ - { - "internalType": "struct StdInvariant.FuzzSelector[]", - "name": "targetedArtifactSelectors_", - "type": "tuple[]", - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ] - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "targetArtifacts", - "outputs": [ - { - "internalType": "string[]", - "name": "targetedArtifacts_", - "type": "string[]" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "targetContracts", - "outputs": [ - { - "internalType": "address[]", - "name": "targetedContracts_", - "type": "address[]" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "targetInterfaces", - "outputs": [ - { - "internalType": "struct StdInvariant.FuzzInterface[]", - "name": "targetedInterfaces_", - "type": "tuple[]", - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "string[]", - "name": "artifacts", - "type": "string[]" - } - ] - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "targetSelectors", - "outputs": [ - { - "internalType": "struct StdInvariant.FuzzSelector[]", - "name": "targetedSelectors_", - "type": "tuple[]", - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ] - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "targetSenders", - "outputs": [ - { - "internalType": "address[]", - "name": "targetedSenders_", - "type": "address[]" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "test/GetOracleLength.t.sol": "GetOracleLengthTest" - }, - "libraries": {} - }, - "sources": { - "lib/forge-std/src/Base.sol": { - "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c", - "urls": [ - "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224", - "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdAssertions.sol": { - "keccak256": "0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361", - "urls": [ - "bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c", - "dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdChains.sol": { - "keccak256": "0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052", - "urls": [ - "bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb", - "dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdCheats.sol": { - "keccak256": "0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7", - "urls": [ - "bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2", - "dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdError.sol": { - "keccak256": "0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77", - "urls": [ - "bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6", - "dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdInvariant.sol": { - "keccak256": "0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6", - "urls": [ - "bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d", - "dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdJson.sol": { - "keccak256": "0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763", - "urls": [ - "bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b", - "dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdMath.sol": { - "keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2", - "urls": [ - "bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92", - "dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStorage.sol": { - "keccak256": "0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811", - "urls": [ - "bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32", - "dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStyle.sol": { - "keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d", - "urls": [ - "bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8", - "dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdUtils.sol": { - "keccak256": "0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0", - "urls": [ - "bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61", - "dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX" - ], - "license": "MIT" - }, - "lib/forge-std/src/Test.sol": { - "keccak256": "0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362", - "urls": [ - "bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4", - "dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1" - ], - "license": "MIT" - }, - "lib/forge-std/src/Vm.sol": { - "keccak256": "0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876", - "urls": [ - "bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533", - "dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te" - ], - "license": "MIT OR Apache-2.0" - }, - "lib/forge-std/src/console.sol": { - "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba", - "urls": [ - "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70", - "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec" - ], - "license": "MIT" - }, - "lib/forge-std/src/console2.sol": { - "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea", - "urls": [ - "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973", - "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC165.sol": { - "keccak256": "0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600", - "urls": [ - "bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc", - "dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC20.sol": { - "keccak256": "0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947", - "urls": [ - "bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7", - "dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC721.sol": { - "keccak256": "0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15", - "urls": [ - "bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f", - "dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IMulticall3.sol": { - "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a", - "urls": [ - "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0", - "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC20.sol": { - "keccak256": "0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b", - "urls": [ - "bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f", - "dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC721.sol": { - "keccak256": "0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9", - "urls": [ - "bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b", - "dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN" - ], - "license": "MIT" - }, - "lib/forge-std/src/safeconsole.sol": { - "keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381", - "urls": [ - "bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae", - "dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b", - "urls": [ - "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609", - "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/AccessControl.sol": { - "keccak256": "0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308", - "urls": [ - "bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80", - "dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { - "keccak256": "0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9", - "urls": [ - "bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f", - "dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { - "keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb", - "urls": [ - "bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6", - "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol": { - "keccak256": "0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12", - "urls": [ - "bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7", - "dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol": { - "keccak256": "0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253", - "urls": [ - "bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73", - "dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol": { - "keccak256": "0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724", - "urls": [ - "bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a", - "dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol": { - "keccak256": "0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c", - "urls": [ - "bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba", - "dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol": { - "keccak256": "0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229", - "urls": [ - "bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155", - "dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { - "keccak256": "0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61", - "urls": [ - "bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc", - "dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4", - "urls": [ - "bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009", - "dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "keccak256": "0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28", - "urls": [ - "bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323", - "dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": { - "keccak256": "0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91", - "urls": [ - "bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488", - "dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Address.sol": { - "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721", - "urls": [ - "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245", - "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", - "urls": [ - "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", - "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": { - "keccak256": "0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e", - "urls": [ - "bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9", - "dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { - "keccak256": "0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c", - "urls": [ - "bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e", - "dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol": { - "keccak256": "0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5", - "urls": [ - "bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4", - "dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { - "keccak256": "0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa", - "urls": [ - "bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1", - "dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA" - ], - "license": "MIT" - }, - "src/LBFactory.sol": { - "keccak256": "0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4", - "urls": [ - "bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235", - "dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA" - ], - "license": "MIT" - }, - "src/LBPair.sol": { - "keccak256": "0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc", - "urls": [ - "bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c", - "dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6" - ], - "license": "MIT" - }, - "src/LBQuoter.sol": { - "keccak256": "0xeccd5d8873f709fa164aaa8f742675bc547e137f71a292e69104900849339ba0", - "urls": [ - "bzz-raw://97ff96e368ef092930b738140565bbf34e7227b32e4e866c8891bf1d16e4e9ff", - "dweb:/ipfs/QmRDNpvERz5brRX81qE64QmGbfPBoP15V9bqwYfXEDmNnx" - ], - "license": "MIT" - }, - "src/LBRouter.sol": { - "keccak256": "0x1888cc5b7dc98cab321022981ee8afbaabbac17f930f162402401c9b723aa7d0", - "urls": [ - "bzz-raw://58d29cb3db3d8a5559ea061a402cdd5a38e73a62dbc2bf4e6b68ab7bd8745d34", - "dweb:/ipfs/QmbZhFFyEzn1V4YZ9ifkJevhRv19meCg5UMP458YfJAEFq" - ], - "license": "MIT" - }, - "src/LBToken.sol": { - "keccak256": "0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3", - "urls": [ - "bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11", - "dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma" - ], - "license": "MIT" - }, - "src/interfaces/ILBFactory.sol": { - "keccak256": "0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88", - "urls": [ - "bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98", - "dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu" - ], - "license": "MIT" - }, - "src/interfaces/ILBFlashLoanCallback.sol": { - "keccak256": "0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62", - "urls": [ - "bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56", - "dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc" - ], - "license": "MIT" - }, - "src/interfaces/ILBHooks.sol": { - "keccak256": "0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a", - "urls": [ - "bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109", - "dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyFactory.sol": { - "keccak256": "0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca", - "urls": [ - "bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc", - "dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyPair.sol": { - "keccak256": "0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a", - "urls": [ - "bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf", - "dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyRouter.sol": { - "keccak256": "0xc924d832dfd6292a90f26174d8159dd52a6b16b8b3c1ae526521637038917eea", - "urls": [ - "bzz-raw://b3d4864f4b3c623ffa03ff8325c7ed084d5d9137e073779e5ddbcdfd1d9b30fb", - "dweb:/ipfs/QmPGQ5V3NBPQRfHyrdL9G7gnw4ccYdwqR5FfufGRijnBBQ" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyToken.sol": { - "keccak256": "0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727", - "urls": [ - "bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15", - "dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY" - ], - "license": "MIT" - }, - "src/interfaces/ILBPair.sol": { - "keccak256": "0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70", - "urls": [ - "bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51", - "dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB" - ], - "license": "MIT" - }, - "src/interfaces/ILBRouter.sol": { - "keccak256": "0x3faae84c13214d52f519d4dca8d48be1ad4176c75ec62816e7484555a30628ff", - "urls": [ - "bzz-raw://5c59c2e3322c61109e4044b80838359a2854dc416431175ca2bf6b58ec329168", - "dweb:/ipfs/QmUXkCAiPss64mSjLnvaq4pYrQA8yhid5oqnh1B91irofL" - ], - "license": "MIT" - }, - "src/interfaces/ILBToken.sol": { - "keccak256": "0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9", - "urls": [ - "bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f", - "dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz" - ], - "license": "MIT" - }, - "src/interfaces/ISovrynLBFactoryV1.sol": { - "keccak256": "0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552", - "urls": [ - "bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f", - "dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovrynLBPairV1.sol": { - "keccak256": "0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958", - "urls": [ - "bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76", - "dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovrynLBRouter01.sol": { - "keccak256": "0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b", - "urls": [ - "bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a", - "dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovrynLBRouter02.sol": { - "keccak256": "0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7", - "urls": [ - "bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65", - "dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx" - ], - "license": "GPL-3.0" - }, - "src/interfaces/IWNATIVE.sol": { - "keccak256": "0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3", - "urls": [ - "bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa", - "dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74" - ], - "license": "MIT" - }, - "src/libraries/BinHelper.sol": { - "keccak256": "0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49", - "urls": [ - "bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f", - "dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6" - ], - "license": "MIT" - }, - "src/libraries/Clone.sol": { - "keccak256": "0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70", - "urls": [ - "bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b", - "dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss" - ], - "license": "MIT" - }, - "src/libraries/Constants.sol": { - "keccak256": "0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2", - "urls": [ - "bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009", - "dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD" - ], - "license": "MIT" - }, - "src/libraries/FeeHelper.sol": { - "keccak256": "0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084", - "urls": [ - "bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee", - "dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra" - ], - "license": "MIT" - }, - "src/libraries/Hooks.sol": { - "keccak256": "0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959", - "urls": [ - "bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a", - "dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop" - ], - "license": "MIT" - }, - "src/libraries/ImmutableClone.sol": { - "keccak256": "0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151", - "urls": [ - "bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156", - "dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr" - ], - "license": "MIT" - }, - "src/libraries/OracleHelper.sol": { - "keccak256": "0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9", - "urls": [ - "bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5", - "dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj" - ], - "license": "MIT" - }, - "src/libraries/PairParameterHelper.sol": { - "keccak256": "0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3", - "urls": [ - "bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1", - "dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f" - ], - "license": "MIT" - }, - "src/libraries/PriceHelper.sol": { - "keccak256": "0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a", - "urls": [ - "bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e", - "dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft" - ], - "license": "MIT" - }, - "src/libraries/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7", - "urls": [ - "bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9", - "dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv" - ], - "license": "MIT" - }, - "src/libraries/SovrynLBLibrary.sol": { - "keccak256": "0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658", - "urls": [ - "bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3", - "dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric" - ], - "license": "GPL-3.0" - }, - "src/libraries/TokenHelper.sol": { - "keccak256": "0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154", - "urls": [ - "bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8", - "dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu" - ], - "license": "MIT" - }, - "src/libraries/math/BitMath.sol": { - "keccak256": "0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994", - "urls": [ - "bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de", - "dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV" - ], - "license": "MIT" - }, - "src/libraries/math/Encoded.sol": { - "keccak256": "0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba", - "urls": [ - "bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8", - "dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY" - ], - "license": "MIT" - }, - "src/libraries/math/LiquidityConfigurations.sol": { - "keccak256": "0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1", - "urls": [ - "bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5", - "dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG" - ], - "license": "MIT" - }, - "src/libraries/math/PackedUint128Math.sol": { - "keccak256": "0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901", - "urls": [ - "bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4", - "dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf" - ], - "license": "MIT" - }, - "src/libraries/math/SafeCast.sol": { - "keccak256": "0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed", - "urls": [ - "bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e", - "dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva" - ], - "license": "MIT" - }, - "src/libraries/math/SampleMath.sol": { - "keccak256": "0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63", - "urls": [ - "bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20", - "dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr" - ], - "license": "MIT" - }, - "src/libraries/math/TreeMath.sol": { - "keccak256": "0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b", - "urls": [ - "bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1", - "dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE" - ], - "license": "MIT" - }, - "src/libraries/math/Uint128x128Math.sol": { - "keccak256": "0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba", - "urls": [ - "bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f", - "dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb" - ], - "license": "MIT" - }, - "src/libraries/math/Uint256x256Math.sol": { - "keccak256": "0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2", - "urls": [ - "bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242", - "dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY" - ], - "license": "MIT" - }, - "test/GetOracleLength.t.sol": { - "keccak256": "0x75d063a999d03ebc3669c240b36307229586b213c57f7e36bae967c726c528af", - "urls": [ - "bzz-raw://27b83c90da6c725361a9f62b8dbfd3d2177193218f78a70b820d9e5a77d8da22", - "dweb:/ipfs/QmQzqCKe9uxdnPYcJX2htSweqSxqac57Ln5RTBsCSVJkHE" - ], - "license": "MIT" - }, - "test/helpers/TestHelper.sol": { - "keccak256": "0xbc59547d118283014b9d28c83a406a1e641f43b0276a19b6fae998dcfe44b55c", - "urls": [ - "bzz-raw://7f82dfdeba66720a0af6676bfa84c9b74066d5c715a4877914f38cf76e5cada8", - "dweb:/ipfs/QmaQy45RtZRyqVFAHpDRX6VpbE8hDg1WRJuTJPsAYZwLEm" - ], - "license": "MIT" - }, - "test/helpers/Utils.sol": { - "keccak256": "0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d", - "urls": [ - "bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0", - "dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW" - ], - "license": "MIT" - }, - "test/integration/Addresses.sol": { - "keccak256": "0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729", - "urls": [ - "bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac", - "dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7" - ], - "license": "UNLICENSED" - }, - "test/mocks/ERC20.sol": { - "keccak256": "0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6", - "urls": [ - "bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f", - "dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y" - ], - "license": "MIT" - }, - "test/mocks/ERC20TransferTax.sol": { - "keccak256": "0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb", - "urls": [ - "bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170", - "dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu" - ], - "license": "MIT" - }, - "test/mocks/FlashBorrower.sol": { - "keccak256": "0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c", - "urls": [ - "bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b", - "dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs" - ], - "license": "MIT" - }, - "test/mocks/WNATIVE.sol": { - "keccak256": "0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770", - "urls": [ - "bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5", - "dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "test/GetOracleLength.t.sol", - "id": 75247, - "exportedSymbols": { - "AccessControl": [ - 46028 - ], - "AvalancheAddresses": [ - 100123 - ], - "BinHelper": [ - 66632 - ], - "BitMath": [ - 70140 - ], - "Clone": [ - 66754 - ], - "Constants": [ - 66792 - ], - "ERC20": [ - 47341 - ], - "ERC20Mock": [ - 116100 - ], - "ERC20TransferTaxMock": [ - 116154 - ], - "Encoded": [ - 70347 - ], - "EnumerableMap": [ - 50220 - ], - "EnumerableSet": [ - 50833 - ], - "FeeHelper": [ - 66985 - ], - "FlashBorrower": [ - 116883 - ], - "GetAllSizeAndAddress": [ - 75246 - ], - "GetOracleLengthTest": [ - 75164 - ], - "Hooks": [ - 67859 - ], - "IERC20": [ - 47419 - ], - "ILBFactory": [ - 62330 - ], - "ILBFlashLoanCallback": [ - 62355 - ], - "ILBHooks": [ - 62528 - ], - "ILBLegacyFactory": [ - 62894 - ], - "ILBLegacyPair": [ - 63310 - ], - "ILBLegacyRouter": [ - 63719 - ], - "ILBPair": [ - 64286 - ], - "ILBRouter": [ - 64818 - ], - "ILBToken": [ - 64941 - ], - "ISovrynLBFactoryV1": [ - 65015 - ], - "ISovrynLBPairV1": [ - 65258 - ], - "ISovrynLBRouter01": [ - 65567 - ], - "ISovrynLBRouter02": [ - 65657 - ], - "IWNATIVE": [ - 65673 - ], - "ImmutableClone": [ - 67937 - ], - "LBFactory": [ - 54016 - ], - "LBPair": [ - 56821 - ], - "LBQuoter": [ - 58109 - ], - "LBRouter": [ - 61346 - ], - "LBToken": [ - 61865 - ], - "LiquidityConfigurations": [ - 70517 - ], - "OracleHelper": [ - 68594 - ], - "Ownable": [ - 46259 - ], - "Ownable2Step": [ - 46345 - ], - "PackedUint128Math": [ - 70871 - ], - "PairParameterHelper": [ - 69451 - ], - "PriceHelper": [ - 69625 - ], - "ReentrancyGuardUpgradeable": [ - 69754 - ], - "SafeCast": [ - 71619 - ], - "SafeERC20": [ - 47868 - ], - "SampleMath": [ - 72044 - ], - "SovrynLBLibrary": [ - 69960 - ], - "StdAssertions": [ - 2734 - ], - "StdChains": [ - 3507 - ], - "StdCheats": [ - 6360 - ], - "StdInvariant": [ - 6685 - ], - "StdStorage": [ - 7451 - ], - "StdStyle": [ - 10301 - ], - "StdUtils": [ - 11087 - ], - "Test": [ - 11134 - ], - "TestBase": [ - 65 - ], - "TestHelper": [ - 99922 - ], - "TokenHelper": [ - 70046 - ], - "TreeMath": [ - 72976 - ], - "Uint256x256Math": [ - 73612 - ], - "Utils": [ - 100090 - ], - "Vm": [ - 14564 - ], - "WNATIVE": [ - 117193 - ], - "console": [ - 22628 - ], - "console2": [ - 30753 - ], - "safeconsole": [ - 45478 - ], - "stdError": [ - 6426 - ], - "stdJson": [ - 7277 - ], - "stdMath": [ - 7419 - ], - "stdStorage": [ - 9090 - ] - }, - "nodeType": "SourceUnit", - "src": "33:4207:88", - "nodes": [ - { - "id": 74882, - "nodeType": "PragmaDirective", - "src": "33:24:88", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ] - }, - { - "id": 74883, - "nodeType": "ImportDirective", - "src": "59:34:88", - "nodes": [], - "absolutePath": "test/helpers/TestHelper.sol", - "file": "./helpers/TestHelper.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 99923, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 74886, - "nodeType": "ImportDirective", - "src": "95:55:88", - "nodes": [], - "absolutePath": "src/LBFactory.sol", - "file": "src/LBFactory.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 54017, - "symbolAliases": [ - { - "foreign": { - "id": 74884, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "103:9:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74885, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "114:9:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 74893, - "nodeType": "ImportDirective", - "src": "151:116:88", - "nodes": [], - "absolutePath": "src/LBRouter.sol", - "file": "src/LBRouter.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 61347, - "symbolAliases": [ - { - "foreign": { - "id": 74887, - "name": "ILBRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 64818, - "src": "159:9:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74888, - "name": "ISovrynLBFactoryV1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65015, - "src": "170:16:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74889, - "name": "ILBLegacyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62894, - "src": "188:16:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74890, - "name": "ILBLegacyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63719, - "src": "206:15:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74891, - "name": "IWNATIVE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65673, - "src": "223:8:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74892, - "name": "LBRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61346, - "src": "233:8:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 74896, - "nodeType": "ImportDirective", - "src": "268:46:88", - "nodes": [], - "absolutePath": "src/LBPair.sol", - "file": "src/LBPair.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 56822, - "symbolAliases": [ - { - "foreign": { - "id": 74894, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47419, - "src": "276:6:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 74895, - "name": "LBPair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56821, - "src": "284:6:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 74898, - "nodeType": "ImportDirective", - "src": "315:42:88", - "nodes": [], - "absolutePath": "src/LBQuoter.sol", - "file": "src/LBQuoter.sol", - "nameLocation": "-1:-1:-1", - "scope": 75247, - "sourceUnit": 58110, - "symbolAliases": [ - { - "foreign": { - "id": 74897, - "name": "LBQuoter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58109, - "src": "323:8:88", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 75164, - "nodeType": "ContractDefinition", - "src": "359:3288:88", - "nodes": [ - { - "id": 74906, - "nodeType": "VariableDeclaration", - "src": "402:93:88", - "nodes": [], - "constant": true, - "functionSelector": "39fe7891", - "mutability": "constant", - "name": "factoryAvax", - "nameLocation": "428:11:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74902, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74901, - "name": "LBFactory", - "nameLocations": [ - "402:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "402:9:88" - }, - "referencedDeclaration": 54016, - "src": "402:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307838653432663246343130313536336246363739393735313738653838304644383764336546643465", - "id": 74904, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "452:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0x8e42f2F4101563bF679975178e880FD87d3eFd4e" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74903, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "442:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74905, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "442:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74912, - "nodeType": "VariableDeclaration", - "src": "501:97:88", - "nodes": [], - "constant": true, - "functionSelector": "5c79611d", - "mutability": "constant", - "name": "factoryArbitrum", - "nameLocation": "527:15:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74908, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74907, - "name": "LBFactory", - "nameLocations": [ - "501:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "501:9:88" - }, - "referencedDeclaration": 54016, - "src": "501:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307838653432663246343130313536336246363739393735313738653838304644383764336546643465", - "id": 74910, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "555:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0x8e42f2F4101563bF679975178e880FD87d3eFd4e" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74909, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "545:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74911, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "545:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74918, - "nodeType": "VariableDeclaration", - "src": "604:92:88", - "nodes": [], - "constant": true, - "functionSelector": "3f0072a8", - "mutability": "constant", - "name": "factoryBsc", - "nameLocation": "630:10:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74914, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74913, - "name": "LBFactory", - "nameLocations": [ - "604:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "604:9:88" - }, - "referencedDeclaration": 54016, - "src": "604:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307838653432663246343130313536336246363739393735313738653838304644383764336546643465", - "id": 74916, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "653:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0x8e42f2F4101563bF679975178e880FD87d3eFd4e" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74915, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "643:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74917, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "643:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74924, - "nodeType": "VariableDeclaration", - "src": "702:92:88", - "nodes": [], - "constant": true, - "functionSelector": "264afb38", - "mutability": "constant", - "name": "factoryEth", - "nameLocation": "728:10:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74920, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74919, - "name": "LBFactory", - "nameLocations": [ - "702:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "702:9:88" - }, - "referencedDeclaration": 54016, - "src": "702:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307844433864373762363931353563374536384139356134666230663036613731464639304239343361", - "id": 74922, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "751:42:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "value": "0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 74921, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "741:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBFactory_$54016_$", - "typeString": "type(contract LBFactory)" - } - }, - "id": 74923, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "741:53:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "public" - }, - { - "id": 74932, - "nodeType": "VariableDeclaration", - "src": "801:77:88", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "chains", - "nameLocation": "810:6:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 74925, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "801:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 74926, - "nodeType": "ArrayTypeName", - "src": "801:8:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "value": { - "components": [ - { - "hexValue": "6176616c616e636865", - "id": 74927, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "820:11:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6e8b0d92516ee4289145e3b78cea58daac177b1c618beeedbc6cdabd388a6e55", - "typeString": "literal_string \"avalanche\"" - }, - "value": "avalanche" - }, - { - "hexValue": "617262697472756d5f6f6e65", - "id": 74928, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "833:14:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e4b44cea7839e0679ac5072602932da9b25ebfb3a9ac42625d9c583a7b6b2eb4", - "typeString": "literal_string \"arbitrum_one\"" - }, - "value": "arbitrum_one" - }, - { - "hexValue": "626e625f736d6172745f636861696e", - "id": 74929, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "849:17:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa8b17ae9aa26749f5dc3a3bb333e0019db0c257f3541e870f73bb48b574361e", - "typeString": "literal_string \"bnb_smart_chain\"" - }, - "value": "bnb_smart_chain" - }, - { - "hexValue": "6d61696e6e6574", - "id": 74930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "868:9:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7beafa94c8bfb8f1c1a43104a34f72c524268aafbfe83bff17485539345c66ff", - "typeString": "literal_string \"mainnet\"" - }, - "value": "mainnet" - } - ], - "id": 74931, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "819:59:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_memory_ptr_$4_memory_ptr", - "typeString": "string memory[4] memory" - } - }, - "visibility": "internal" - }, - { - "id": 74936, - "nodeType": "VariableDeclaration", - "src": "884:39:88", - "nodes": [], - "constant": false, - "functionSelector": "a8553d75", - "mutability": "mutable", - "name": "forks", - "nameLocation": "918:5:88", - "scope": 75164, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string => uint256)" - }, - "typeName": { - "id": 74935, - "keyName": "", - "keyNameLocation": "-1:-1:-1", - "keyType": { - "id": 74933, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "892:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "nodeType": "Mapping", - "src": "884:26:88", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string => uint256)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 74934, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "902:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "id": 74970, - "nodeType": "FunctionDefinition", - "src": "930:199:88", - "nodes": [], - "body": { - "id": 74969, - "nodeType": "Block", - "src": "954:175:88", - "nodes": [], - "statements": [ - { - "body": { - "id": 74967, - "nodeType": "Block", - "src": "1008:115:88", - "statements": [ - { - "assignments": [ - 74951 - ], - "declarations": [ - { - "constant": false, - "id": 74951, - "mutability": "mutable", - "name": "chain", - "nameLocation": "1036:5:88", - "nodeType": "VariableDeclaration", - "scope": 74967, - "src": "1022:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 74950, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1022:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "id": 74955, - "initialValue": { - "baseExpression": { - "id": 74952, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74932, - "src": "1044:6:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 74954, - "indexExpression": { - "id": 74953, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74940, - "src": "1051:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1044:9:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1022:31:88" - }, - { - "expression": { - "id": 74965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 74956, - "name": "forks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74936, - "src": "1068:5:88", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string memory => uint256)" - } - }, - "id": 74958, - "indexExpression": { - "id": 74957, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74951, - "src": "1074:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1068:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 74962, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74951, - "src": "1105:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 74961, - "name": "_getRPC", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75081, - "src": "1097:7:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$", - "typeString": "function (string memory) returns (string memory)" - } - }, - "id": 74963, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1097:14:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 74959, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1083:2:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 74960, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1086:10:88", - "memberName": "createFork", - "nodeType": "MemberAccess", - "referencedDeclaration": 14028, - "src": "1083:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) external returns (uint256)" - } - }, - "id": 74964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1083:29:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1068:44:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 74966, - "nodeType": "ExpressionStatement", - "src": "1068:44:88" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 74943, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74940, - "src": "984:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 74944, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74932, - "src": "988:6:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 74945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "995:6:88", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "988:13:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "984:17:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 74968, - "initializationExpression": { - "assignments": [ - 74940 - ], - "declarations": [ - { - "constant": false, - "id": 74940, - "mutability": "mutable", - "name": "i", - "nameLocation": "977:1:88", - "nodeType": "VariableDeclaration", - "scope": 74968, - "src": "969:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 74939, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "969:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 74942, - "initialValue": { - "hexValue": "30", - "id": 74941, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "981:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "969:13:88" - }, - "loopExpression": { - "expression": { - "id": 74948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1003:3:88", - "subExpression": { - "id": 74947, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74940, - "src": "1003:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 74949, - "nodeType": "ExpressionStatement", - "src": "1003:3:88" - }, - "nodeType": "ForStatement", - "src": "964:159:88" - } - ] - }, - "functionSelector": "0a9254e4", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setUp", - "nameLocation": "939:5:88", - "parameters": { - "id": 74937, - "nodeType": "ParameterList", - "parameters": [], - "src": "944:2:88" - }, - "returnParameters": { - "id": 74938, - "nodeType": "ParameterList", - "parameters": [], - "src": "954:0:88" - }, - "scope": 75164, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 75067, - "nodeType": "FunctionDefinition", - "src": "1493:688:88", - "nodes": [], - "body": { - "id": 75066, - "nodeType": "Block", - "src": "1539:642:88", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "baseExpression": { - "id": 74978, - "name": "forks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74936, - "src": "1563:5:88", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$", - "typeString": "mapping(string memory => uint256)" - } - }, - "id": 74980, - "indexExpression": { - "id": 74979, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74972, - "src": "1569:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1563:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 74975, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1549:2:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 74977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1552:10:88", - "memberName": "selectFork", - "nodeType": "MemberAccess", - "referencedDeclaration": 14317, - "src": "1549:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 74981, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1549:27:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 74982, - "nodeType": "ExpressionStatement", - "src": "1549:27:88" - }, - { - "assignments": [ - 74985 - ], - "declarations": [ - { - "constant": false, - "id": 74985, - "mutability": "mutable", - "name": "factory", - "nameLocation": "1597:7:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1587:17:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 74984, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74983, - "name": "LBFactory", - "nameLocations": [ - "1587:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "1587:9:88" - }, - "referencedDeclaration": 54016, - "src": "1587:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "internal" - } - ], - "id": 74989, - "initialValue": { - "arguments": [ - { - "id": 74987, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74972, - "src": "1623:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 74986, - "name": "_getLBFactories", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75163, - "src": "1607:15:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_contract$_LBFactory_$54016_$", - "typeString": "function (string memory) pure returns (contract LBFactory)" - } - }, - "id": 74988, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1607:22:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1587:42:88" - }, - { - "assignments": [ - 74992 - ], - "declarations": [ - { - "constant": false, - "id": 74992, - "mutability": "mutable", - "name": "s", - "nameLocation": "1661:1:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1640:22:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - }, - "typeName": { - "id": 74991, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74990, - "name": "GetAllSizeAndAddress", - "nameLocations": [ - "1640:20:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75246, - "src": "1640:20:88" - }, - "referencedDeclaration": 75246, - "src": "1640:20:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - }, - "visibility": "internal" - } - ], - "id": 74997, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 74995, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1665:24:88", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_GetAllSizeAndAddress_$75246_$", - "typeString": "function () returns (contract GetAllSizeAndAddress)" - }, - "typeName": { - "id": 74994, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 74993, - "name": "GetAllSizeAndAddress", - "nameLocations": [ - "1669:20:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75246, - "src": "1669:20:88" - }, - "referencedDeclaration": 75246, - "src": "1669:20:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - } - }, - "id": 74996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1665:26:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1640:51:88" - }, - { - "assignments": [ - 75002, - 75005 - ], - "declarations": [ - { - "constant": false, - "id": 75002, - "mutability": "mutable", - "name": "pairs", - "nameLocation": "1720:5:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1703:22:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 75000, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1703:7:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75001, - "nodeType": "ArrayTypeName", - "src": "1703:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 75005, - "mutability": "mutable", - "name": "sizes", - "nameLocation": "1744:5:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1727:22:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 75003, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1727:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75004, - "nodeType": "ArrayTypeName", - "src": "1727:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "id": 75010, - "initialValue": { - "arguments": [ - { - "id": 75008, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74985, - "src": "1776:7:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - ], - "expression": { - "id": 75006, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74992, - "src": "1753:1:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GetAllSizeAndAddress_$75246", - "typeString": "contract GetAllSizeAndAddress" - } - }, - "id": 75007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1755:20:88", - "memberName": "getAllSizeAndAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 75245, - "src": "1753:22:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_contract$_LBFactory_$54016_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "function (contract LBFactory) view external returns (address[] memory,uint256[] memory)" - } - }, - "id": 75009, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1753:31:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "tuple(address[] memory,uint256[] memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1702:82:88" - }, - { - "assignments": [ - 75012 - ], - "declarations": [ - { - "constant": false, - "id": 75012, - "mutability": "mutable", - "name": "atRisk", - "nameLocation": "1803:6:88", - "nodeType": "VariableDeclaration", - "scope": 75066, - "src": "1795:14:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75011, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1795:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75014, - "initialValue": { - "hexValue": "30", - "id": 75013, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1812:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1795:18:88" - }, - { - "body": { - "id": 75054, - "nodeType": "Block", - "src": "1867:218:88", - "statements": [ - { - "assignments": [ - 75027 - ], - "declarations": [ - { - "constant": false, - "id": 75027, - "mutability": "mutable", - "name": "pair", - "nameLocation": "1889:4:88", - "nodeType": "VariableDeclaration", - "scope": 75054, - "src": "1881:12:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 75026, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1881:7:88", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 75031, - "initialValue": { - "baseExpression": { - "id": 75028, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75002, - "src": "1896:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75030, - "indexExpression": { - "id": 75029, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1902:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1896:8:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1881:23:88" - }, - { - "assignments": [ - 75033 - ], - "declarations": [ - { - "constant": false, - "id": 75033, - "mutability": "mutable", - "name": "size", - "nameLocation": "1926:4:88", - "nodeType": "VariableDeclaration", - "scope": 75054, - "src": "1918:12:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75032, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1918:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75037, - "initialValue": { - "baseExpression": { - "id": 75034, - "name": "sizes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75005, - "src": "1933:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 75036, - "indexExpression": { - "id": 75035, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1939:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1933:8:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1918:23:88" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 75040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 75038, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75033, - "src": "1960:4:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 75039, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1967:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1960:8:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 75053, - "nodeType": "IfStatement", - "src": "1956:119:88", - "trueBody": { - "id": 75052, - "nodeType": "Block", - "src": "1970:105:88", - "statements": [ - { - "expression": { - "id": 75042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1988:8:88", - "subExpression": { - "id": 75041, - "name": "atRisk", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75012, - "src": "1988:6:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75043, - "nodeType": "ExpressionStatement", - "src": "1988:8:88" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "50616972202573206861732073697a65202573", - "id": 75047, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2026:21:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_40263c33992144b6ccca52c6b5ec993b8fa14c33dcc31b94fa1b7b35a2ca927d", - "typeString": "literal_string \"Pair %s has size %s\"" - }, - "value": "Pair %s has size %s" - }, - { - "id": 75048, - "name": "pair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75027, - "src": "2049:4:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 75049, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75033, - "src": "2055:4:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_40263c33992144b6ccca52c6b5ec993b8fa14c33dcc31b94fa1b7b35a2ca927d", - "typeString": "literal_string \"Pair %s has size %s\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 75044, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2014:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 75046, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2022:3:88", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 16039, - "src": "2014:11:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (string memory,address,uint256) view" - } - }, - "id": 75050, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2014:46:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 75051, - "nodeType": "ExpressionStatement", - "src": "2014:46:88" - } - ] - } - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 75022, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 75019, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1844:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 75020, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75002, - "src": "1848:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75021, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1854:6:88", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1848:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1844:16:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 75055, - "initializationExpression": { - "assignments": [ - 75016 - ], - "declarations": [ - { - "constant": false, - "id": 75016, - "mutability": "mutable", - "name": "j", - "nameLocation": "1837:1:88", - "nodeType": "VariableDeclaration", - "scope": 75055, - "src": "1829:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75015, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1829:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75018, - "initialValue": { - "hexValue": "30", - "id": 75017, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1841:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1829:13:88" - }, - "loopExpression": { - "expression": { - "id": 75024, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1862:3:88", - "subExpression": { - "id": 75023, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75016, - "src": "1862:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75025, - "nodeType": "ExpressionStatement", - "src": "1862:3:88" - }, - "nodeType": "ForStatement", - "src": "1824:261:88" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "5468657265206172652025732f2573207061697273206174207269736b206f6e202573", - "id": 75059, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2107:37:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d84db9ff9697601525498d0167017203d310e1893af6f8fd31a11ef83b7171b3", - "typeString": "literal_string \"There are %s/%s pairs at risk on %s\"" - }, - "value": "There are %s/%s pairs at risk on %s" - }, - { - "id": 75060, - "name": "atRisk", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75012, - "src": "2146:6:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 75061, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75002, - "src": "2154:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2160:6:88", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2154:12:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 75063, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74972, - "src": "2168:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_d84db9ff9697601525498d0167017203d310e1893af6f8fd31a11ef83b7171b3", - "typeString": "literal_string \"There are %s/%s pairs at risk on %s\"" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75056, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2095:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 75058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2103:3:88", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 18257, - "src": "2095:11:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory,uint256,uint256,string memory) view" - } - }, - "id": 75064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2095:79:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 75065, - "nodeType": "ExpressionStatement", - "src": "2095:79:88" - } - ] - }, - "functionSelector": "3596fa6d", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "get_size", - "nameLocation": "1502:8:88", - "parameters": { - "id": 74973, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 74972, - "mutability": "mutable", - "name": "chain", - "nameLocation": "1525:5:88", - "nodeType": "VariableDeclaration", - "scope": 75067, - "src": "1511:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 74971, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1511:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "1510:21:88" - }, - "returnParameters": { - "id": 74974, - "nodeType": "ParameterList", - "parameters": [], - "src": "1539:0:88" - }, - "scope": 75164, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 75081, - "nodeType": "FunctionDefinition", - "src": "2187:767:88", - "nodes": [], - "body": { - "id": 75080, - "nodeType": "Block", - "src": "2258:696:88", - "nodes": [], - "statements": [ - { - "expression": { - "expression": { - "arguments": [ - { - "id": 75076, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75069, - "src": "2934:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75074, - "name": "StdChains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3507, - "src": "2915:9:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StdChains_$3507_$", - "typeString": "type(contract StdChains)" - } - }, - "id": 75075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2925:8:88", - "memberName": "getChain", - "nodeType": "MemberAccess", - "referencedDeclaration": 2842, - "src": "2915:18:88", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_struct$_Chain_$2774_memory_ptr_$", - "typeString": "function (string memory) returns (struct StdChains.Chain memory)" - } - }, - "id": 75077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2915:25:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Chain_$2774_memory_ptr", - "typeString": "struct StdChains.Chain memory" - } - }, - "id": 75078, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2941:6:88", - "memberName": "rpcUrl", - "nodeType": "MemberAccess", - "referencedDeclaration": 2773, - "src": "2915:32:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "functionReturnParameters": 75073, - "id": 75079, - "nodeType": "Return", - "src": "2908:39:88" - } - ] - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getRPC", - "nameLocation": "2196:7:88", - "parameters": { - "id": 75070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75069, - "mutability": "mutable", - "name": "chain", - "nameLocation": "2218:5:88", - "nodeType": "VariableDeclaration", - "scope": 75081, - "src": "2204:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 75068, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2204:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2203:21:88" - }, - "returnParameters": { - "id": 75073, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75072, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 75081, - "src": "2243:13:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 75071, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2243:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2242:15:88" - }, - "scope": 75164, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 75163, - "nodeType": "FunctionDefinition", - "src": "2960:685:88", - "nodes": [], - "body": { - "id": 75162, - "nodeType": "Block", - "src": "3040:605:88", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75092, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3081:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75090, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3064:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75091, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3068:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3064:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3064:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75089, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3054:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75094, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3054:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "6176616c616e636865", - "id": 75098, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3119:11:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6e8b0d92516ee4289145e3b78cea58daac177b1c618beeedbc6cdabd388a6e55", - "typeString": "literal_string \"avalanche\"" - }, - "value": "avalanche" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_6e8b0d92516ee4289145e3b78cea58daac177b1c618beeedbc6cdabd388a6e55", - "typeString": "literal_string \"avalanche\"" - } - ], - "expression": { - "id": 75096, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3102:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75097, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3106:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3102:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75099, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3102:29:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75095, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3092:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75100, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3092:40:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3054:78:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75117, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75108, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3214:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75106, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3197:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75107, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3201:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3197:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3197:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75105, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3187:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75110, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3187:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "617262697472756d5f6f6e65", - "id": 75114, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3252:14:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e4b44cea7839e0679ac5072602932da9b25ebfb3a9ac42625d9c583a7b6b2eb4", - "typeString": "literal_string \"arbitrum_one\"" - }, - "value": "arbitrum_one" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_e4b44cea7839e0679ac5072602932da9b25ebfb3a9ac42625d9c583a7b6b2eb4", - "typeString": "literal_string \"arbitrum_one\"" - } - ], - "expression": { - "id": 75112, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3235:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3239:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3235:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75115, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3235:32:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75111, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3225:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3225:43:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3187:81:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75133, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75124, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3354:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75122, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3337:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75123, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3341:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3337:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3337:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75121, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3327:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3327:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "626e625f736d6172745f636861696e", - "id": 75130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3392:17:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa8b17ae9aa26749f5dc3a3bb333e0019db0c257f3541e870f73bb48b574361e", - "typeString": "literal_string \"bnb_smart_chain\"" - }, - "value": "bnb_smart_chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_fa8b17ae9aa26749f5dc3a3bb333e0019db0c257f3541e870f73bb48b574361e", - "typeString": "literal_string \"bnb_smart_chain\"" - } - ], - "expression": { - "id": 75128, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3375:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75129, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3379:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3375:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3375:35:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75127, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3365:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75132, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3365:46:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3327:84:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 75149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 75140, - "name": "chain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75083, - "src": "3492:5:88", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 75138, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3475:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3479:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3475:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3475:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75137, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3465:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3465:34:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "6d61696e6e6574", - "id": 75146, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3530:9:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7beafa94c8bfb8f1c1a43104a34f72c524268aafbfe83bff17485539345c66ff", - "typeString": "literal_string \"mainnet\"" - }, - "value": "mainnet" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_7beafa94c8bfb8f1c1a43104a34f72c524268aafbfe83bff17485539345c66ff", - "typeString": "literal_string \"mainnet\"" - } - ], - "expression": { - "id": 75144, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3513:3:88", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 75145, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3517:12:88", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3513:16:88", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 75147, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3513:27:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 75143, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3503:9:88", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 75148, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3503:38:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3465:76:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 75157, - "nodeType": "Block", - "src": "3591:48:88", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "496e76616c696420636861696e", - "id": 75154, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3612:15:88", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4acdaa077a05cc233cc6b88fd673b3b7b4568e0105f0d44839e2c03bc4380c92", - "typeString": "literal_string \"Invalid chain\"" - }, - "value": "Invalid chain" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_4acdaa077a05cc233cc6b88fd673b3b7b4568e0105f0d44839e2c03bc4380c92", - "typeString": "literal_string \"Invalid chain\"" - } - ], - "id": 75153, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "3605:6:88", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 75155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3605:23:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 75156, - "nodeType": "ExpressionStatement", - "src": "3605:23:88" - } - ] - }, - "id": 75158, - "nodeType": "IfStatement", - "src": "3461:178:88", - "trueBody": { - "id": 75152, - "nodeType": "Block", - "src": "3543:42:88", - "statements": [ - { - "expression": { - "id": 75150, - "name": "factoryEth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74924, - "src": "3564:10:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75151, - "nodeType": "Return", - "src": "3557:17:88" - } - ] - } - }, - "id": 75159, - "nodeType": "IfStatement", - "src": "3323:316:88", - "trueBody": { - "id": 75136, - "nodeType": "Block", - "src": "3413:42:88", - "statements": [ - { - "expression": { - "id": 75134, - "name": "factoryBsc", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74918, - "src": "3434:10:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75135, - "nodeType": "Return", - "src": "3427:17:88" - } - ] - } - }, - "id": 75160, - "nodeType": "IfStatement", - "src": "3183:456:88", - "trueBody": { - "id": 75120, - "nodeType": "Block", - "src": "3270:47:88", - "statements": [ - { - "expression": { - "id": 75118, - "name": "factoryArbitrum", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74912, - "src": "3291:15:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75119, - "nodeType": "Return", - "src": "3284:22:88" - } - ] - } - }, - "id": 75161, - "nodeType": "IfStatement", - "src": "3050:589:88", - "trueBody": { - "id": 75104, - "nodeType": "Block", - "src": "3134:43:88", - "statements": [ - { - "expression": { - "id": 75102, - "name": "factoryAvax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74906, - "src": "3155:11:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "functionReturnParameters": 75088, - "id": 75103, - "nodeType": "Return", - "src": "3148:18:88" - } - ] - } - } - ] - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getLBFactories", - "nameLocation": "2969:15:88", - "parameters": { - "id": 75084, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75083, - "mutability": "mutable", - "name": "chain", - "nameLocation": "2999:5:88", - "nodeType": "VariableDeclaration", - "scope": 75163, - "src": "2985:19:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 75082, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2985:6:88", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2984:21:88" - }, - "returnParameters": { - "id": 75088, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75087, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 75163, - "src": "3029:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 75086, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 75085, - "name": "LBFactory", - "nameLocations": [ - "3029:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "3029:9:88" - }, - "referencedDeclaration": 54016, - "src": "3029:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "internal" - } - ], - "src": "3028:11:88" - }, - "scope": 75164, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 74899, - "name": "Test", - "nameLocations": [ - "391:4:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 11134, - "src": "391:4:88" - }, - "id": 74900, - "nodeType": "InheritanceSpecifier", - "src": "391:4:88" - } - ], - "canonicalName": "GetOracleLengthTest", - "contractDependencies": [ - 75246 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 75164, - 11134, - 11087, - 6685, - 6360, - 5567, - 3507, - 2734, - 65, - 62 - ], - "name": "GetOracleLengthTest", - "nameLocation": "368:19:88", - "scope": 75247, - "usedErrors": [], - "usedEvents": [ - 139, - 143, - 147, - 151, - 155, - 159, - 163, - 167, - 173, - 179, - 187, - 195, - 201, - 207, - 213, - 219, - 224, - 229, - 234, - 241, - 248, - 255 - ] - }, - { - "id": 75246, - "nodeType": "ContractDefinition", - "src": "3649:590:88", - "nodes": [ - { - "id": 75245, - "nodeType": "FunctionDefinition", - "src": "3685:552:88", - "nodes": [], - "body": { - "id": 75244, - "nodeType": "Block", - "src": "3832:405:88", - "nodes": [], - "statements": [ - { - "assignments": [ - 75177 - ], - "declarations": [ - { - "constant": false, - "id": 75177, - "mutability": "mutable", - "name": "nbPairs", - "nameLocation": "3850:7:88", - "nodeType": "VariableDeclaration", - "scope": 75244, - "src": "3842:15:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75176, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3842:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75181, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 75178, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75167, - "src": "3860:7:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 75179, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3868:18:88", - "memberName": "getNumberOfLBPairs", - "nodeType": "MemberAccess", - "referencedDeclaration": 52590, - "src": "3860:26:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", - "typeString": "function () view external returns (uint256)" - } - }, - "id": 75180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3860:28:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3842:46:88" - }, - { - "expression": { - "id": 75188, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 75182, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75171, - "src": "3899:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 75186, - "name": "nbPairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75177, - "src": "3921:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 75185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "3907:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 75183, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3911:7:88", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75184, - "nodeType": "ArrayTypeName", - "src": "3911:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - } - }, - "id": 75187, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3907:22:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "3899:30:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75189, - "nodeType": "ExpressionStatement", - "src": "3899:30:88" - }, - { - "expression": { - "id": 75196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 75190, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75174, - "src": "3939:4:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 75194, - "name": "nbPairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75177, - "src": "3960:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 75193, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "3946:13:88", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (uint256[] memory)" - }, - "typeName": { - "baseType": { - "id": 75191, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3950:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75192, - "nodeType": "ArrayTypeName", - "src": "3950:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - } - }, - "id": 75195, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3946:22:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "src": "3939:29:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 75197, - "nodeType": "ExpressionStatement", - "src": "3939:29:88" - }, - { - "body": { - "id": 75242, - "nodeType": "Block", - "src": "4017:214:88", - "statements": [ - { - "assignments": [ - 75210 - ], - "declarations": [ - { - "constant": false, - "id": 75210, - "mutability": "mutable", - "name": "pair", - "nameLocation": "4038:4:88", - "nodeType": "VariableDeclaration", - "scope": 75242, - "src": "4031:11:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - }, - "typeName": { - "id": 75209, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 75208, - "name": "LBPair", - "nameLocations": [ - "4031:6:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 56821, - "src": "4031:6:88" - }, - "referencedDeclaration": 56821, - "src": "4031:6:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "visibility": "internal" - } - ], - "id": 75220, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 75216, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4085:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 75214, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75167, - "src": "4060:7:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 75215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4068:16:88", - "memberName": "getLBPairAtIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 52605, - "src": "4060:24:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_ILBPair_$64286_$", - "typeString": "function (uint256) view external returns (contract ILBPair)" - } - }, - "id": 75217, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4060:27:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILBPair_$64286", - "typeString": "contract ILBPair" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILBPair_$64286", - "typeString": "contract ILBPair" - } - ], - "id": 75213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4052:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 75212, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4052:7:88", - "typeDescriptions": {} - } - }, - "id": 75218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4052:36:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 75211, - "name": "LBPair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56821, - "src": "4045:6:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LBPair_$56821_$", - "typeString": "type(contract LBPair)" - } - }, - "id": 75219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4045:44:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4031:58:88" - }, - { - "assignments": [ - null, - 75222, - null, - null, - null - ], - "declarations": [ - null, - { - "constant": false, - "id": 75222, - "mutability": "mutable", - "name": "_size", - "nameLocation": "4114:5:88", - "nodeType": "VariableDeclaration", - "scope": 75242, - "src": "4107:12:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 75221, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4107:6:88", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - null, - null, - null - ], - "id": 75226, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 75223, - "name": "pair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75210, - "src": "4126:4:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "id": 75224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4131:19:88", - "memberName": "getOracleParameters", - "nodeType": "MemberAccess", - "referencedDeclaration": 54579, - "src": "4126:24:88", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$_t_uint16_$_t_uint16_$_t_uint40_$_t_uint40_$", - "typeString": "function () view external returns (uint8,uint16,uint16,uint40,uint40)" - } - }, - "id": 75225, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4126:26:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_uint16_$_t_uint16_$_t_uint40_$_t_uint40_$", - "typeString": "tuple(uint8,uint16,uint16,uint40,uint40)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4104:48:88" - }, - { - "expression": { - "id": 75234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 75227, - "name": "pairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75171, - "src": "4167:5:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 75229, - "indexExpression": { - "id": 75228, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4173:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4167:8:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 75232, - "name": "pair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75210, - "src": "4186:4:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - ], - "id": 75231, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4178:7:88", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 75230, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4178:7:88", - "typeDescriptions": {} - } - }, - "id": 75233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4178:13:88", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4167:24:88", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75235, - "nodeType": "ExpressionStatement", - "src": "4167:24:88" - }, - { - "expression": { - "id": 75240, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 75236, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75174, - "src": "4205:4:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 75238, - "indexExpression": { - "id": 75237, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4210:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4205:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 75239, - "name": "_size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75222, - "src": "4215:5:88", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "4205:15:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75241, - "nodeType": "ExpressionStatement", - "src": "4205:15:88" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 75204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 75202, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "3999:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 75203, - "name": "nbPairs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75177, - "src": "4003:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3999:11:88", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 75243, - "initializationExpression": { - "assignments": [ - 75199 - ], - "declarations": [ - { - "constant": false, - "id": 75199, - "mutability": "mutable", - "name": "i", - "nameLocation": "3992:1:88", - "nodeType": "VariableDeclaration", - "scope": 75243, - "src": "3984:9:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75198, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3984:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 75201, - "initialValue": { - "hexValue": "30", - "id": 75200, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3996:1:88", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3984:13:88" - }, - "loopExpression": { - "expression": { - "id": 75206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4012:3:88", - "subExpression": { - "id": 75205, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75199, - "src": "4012:1:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75207, - "nodeType": "ExpressionStatement", - "src": "4012:3:88" - }, - "nodeType": "ForStatement", - "src": "3979:252:88" - } - ] - }, - "functionSelector": "4978ef81", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAllSizeAndAddress", - "nameLocation": "3694:20:88", - "parameters": { - "id": 75168, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75167, - "mutability": "mutable", - "name": "factory", - "nameLocation": "3725:7:88", - "nodeType": "VariableDeclaration", - "scope": 75245, - "src": "3715:17:88", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 75166, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 75165, - "name": "LBFactory", - "nameLocations": [ - "3715:9:88" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "3715:9:88" - }, - "referencedDeclaration": 54016, - "src": "3715:9:88", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "internal" - } - ], - "src": "3714:19:88" - }, - "returnParameters": { - "id": 75175, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 75171, - "mutability": "mutable", - "name": "pairs", - "nameLocation": "3798:5:88", - "nodeType": "VariableDeclaration", - "scope": 75245, - "src": "3781:22:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 75169, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3781:7:88", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 75170, - "nodeType": "ArrayTypeName", - "src": "3781:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 75174, - "mutability": "mutable", - "name": "size", - "nameLocation": "3822:4:88", - "nodeType": "VariableDeclaration", - "scope": 75245, - "src": "3805:21:88", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 75172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3805:7:88", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 75173, - "nodeType": "ArrayTypeName", - "src": "3805:9:88", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "3780:47:88" - }, - "scope": 75246, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "GetAllSizeAndAddress", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 75246 - ], - "name": "GetAllSizeAndAddress", - "nameLocation": "3658:20:88", - "scope": 75247, - "usedErrors": [], - "usedEvents": [] - } - ], - "license": "MIT" - }, - "id": 88 -} \ No newline at end of file diff --git a/abi/Hooks.sol/Hooks.json b/abi/Hooks.sol/Hooks.json deleted file mode 100644 index b8601c0b..00000000 --- a/abi/Hooks.sol/Hooks.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"Hooks__CallFailed","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c47f3c8e6547ee813db73a50d909c87d62e46f5619906e27c11286324d6ebfb64736f6c63430008140033","sourceMap":"230:14217:67:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;230:14217:67;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c47f3c8e6547ee813db73a50d909c87d62e46f5619906e27c11286324d6ebfb64736f6c63430008140033","sourceMap":"230:14217:67:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Hooks__CallFailed\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Hooks library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions that should be used to interact with hooks\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Hooks.sol\":\"Hooks\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Hooks__CallFailed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/Hooks.sol":"Hooks"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"}},"version":1},"id":67} \ No newline at end of file diff --git a/abi/Hooks.t.sol/HooksTest.json b/abi/Hooks.t.sol/HooksTest.json deleted file mode 100644 index 742eb774..00000000 --- a/abi/Hooks.t.sol/HooksTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"fallback","stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getLBHooksParameters","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"hooks","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MockHooks"}],"stateMutability":"view"},{"type":"function","name":"hooksCaller","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MockHooksCaller"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_CallHooks","inputs":[{"name":"parameters","type":"tuple","internalType":"struct Hooks.Parameters","components":[{"name":"hooks","type":"address","internalType":"address"},{"name":"beforeSwap","type":"bool","internalType":"bool"},{"name":"afterSwap","type":"bool","internalType":"bool"},{"name":"beforeFlashLoan","type":"bool","internalType":"bool"},{"name":"afterFlashLoan","type":"bool","internalType":"bool"},{"name":"beforeMint","type":"bool","internalType":"bool"},{"name":"afterMint","type":"bool","internalType":"bool"},{"name":"beforeBurn","type":"bool","internalType":"bool"},{"name":"afterBurn","type":"bool","internalType":"bool"},{"name":"beforeBatchTransferFrom","type":"bool","internalType":"bool"},{"name":"afterBatchTransferFrom","type":"bool","internalType":"bool"}]},{"name":"account","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_EncodeHooks","inputs":[{"name":"parameters","type":"tuple","internalType":"struct Hooks.Parameters","components":[{"name":"hooks","type":"address","internalType":"address"},{"name":"beforeSwap","type":"bool","internalType":"bool"},{"name":"afterSwap","type":"bool","internalType":"bool"},{"name":"beforeFlashLoan","type":"bool","internalType":"bool"},{"name":"afterFlashLoan","type":"bool","internalType":"bool"},{"name":"beforeMint","type":"bool","internalType":"bool"},{"name":"afterMint","type":"bool","internalType":"bool"},{"name":"beforeBurn","type":"bool","internalType":"bool"},{"name":"afterBurn","type":"bool","internalType":"bool"},{"name":"beforeBatchTransferFrom","type":"bool","internalType":"bool"},{"name":"afterBatchTransferFrom","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Revert_CallFailed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"HooksTest__CustomRevert","inputs":[]},{"type":"error","name":"Hooks__CallFailed","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b50615c518061002d6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063781a8915116100b2578063b8aa36c711610081578063cd7033c411610066578063cd7033c4146102b0578063d899e558146102c3578063e20c9f71146102d65761011b565b8063b8aa36c714610290578063ba414fa6146102985761011b565b8063781a89151461025a57806385226c811461026b578063916a17c614610280578063b5508aa9146102885761011b565b80632f09b962116100ee5780632f09b962146102225780633e5e3c23146102355780633f7286f41461023d57806366d9a9a0146102455761011b565b806308acf940146101c05780630a9254e4146101f05780631ed7831c146101f85780632ade38801461020d575b601c5460010361012a57600080fd5b601c5460020361014657671234567890abcdef60005260206000f35b601c5460030361019c5760405162461bcd60e51b815260206004820152601360248201527f486f6f6b73546573743a3a66616c6c6261636b00000000000000000000000000604482015260640160405180910390fd5b601c546004036101be5760405162d9465b60e11b815260040160405180910390fd5b005b601e546101d3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101be6102de565b6102006104b2565b6040516101e79190613be3565b610215610514565b6040516101e79190613c80565b6101be610230366004613e82565b610656565b610200610b7f565b610200610bdf565b61024d610c3f565b6040516101e79190613ea6565b601f546040519081526020016101e7565b610273610d25565b6040516101e79190613f59565b61024d610df5565b610273610edb565b6101be610fab565b6102a0611b7a565b60405190151581526020016101e7565b601d546101d3906001600160a01b031681565b6101be6102d1366004614007565b611c35565b61020061359f565b6040516102ea90613bc9565b604051809103906000f080158015610306573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405161033390613bd6565b604051809103906000f08015801561034f573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03928316179055601d54604080516318caf8e360e31b81529190921660048201526024810191909152600560448201527f686f6f6b730000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156103f457600080fd5b505af1158015610408573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600b60448201527f686f6f6b7343616c6c65720000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801561049857600080fd5b505af11580156104ac573d6000803e3d6000fd5b50505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561050a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104ec575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561064d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106365783829060005260206000200180546105a9906140f5565b80601f01602080910402602001604051908101604052809291908181526020018280546105d5906140f5565b80156106225780601f106105f757610100808354040283529160200191610622565b820191906000526020600020905b81548152906001019060200180831161060557829003601f168201915b50505050508152602001906001019061058a565b505050508152505081526020019060010190610538565b50505050905090565b61065f816135ff565b601f81905581516106ad91610673906136bf565b5160408051808201909152601381527f746573745f456e636f6465486f6f6b733a3a3100000000000000000000000000602082015261376b565b6106ff81602001516106c0601f546136bf565b602001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a32000000000000000000000000008152506137db565b6107518160400151610712601f546136bf565b604001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a33000000000000000000000000008152506137db565b6107a38160600151610764601f546136bf565b606001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a34000000000000000000000000008152506137db565b6107f581608001516107b6601f546136bf565b608001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a35000000000000000000000000008152506137db565b6108478160a00151610808601f546136bf565b60a001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a36000000000000000000000000008152506137db565b6108998160c0015161085a601f546136bf565b60c001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a37000000000000000000000000008152506137db565b6108eb8160e001516108ac601f546136bf565b60e001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a38000000000000000000000000008152506137db565b61093f8161010001516108ff601f546136bf565b61010001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a39000000000000000000000000008152506137db565b610993816101200151610953601f546136bf565b61012001516040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a31300000000000000000000000008152506137db565b6109e78161014001516109a7601f546136bf565b61014001516040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a31310000000000000000000000008152506137db565b8051601f54610a2c91906040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a313200000000000000000000000081525061376b565b601f5460408051808201909152601481527f746573745f456e636f6465486f6f6b733a3a31330000000000000000000000006020820152610a79916001600160a01b031916908190613816565b602081015160009015610a8d57600160a01b175b816040015115610a9e57600160a11b175b816060015115610aaf57600160a21b175b816080015115610ac057600160a31b175b8160a0015115610ad157600160a41b175b8160c0015115610ae257600160a51b175b8160e0015115610af357600160a61b175b81610100015115610b0557600160a71b175b81610120015115610b1757600160a81b175b81610140015115610b2957600160a91b175b610b7b81610b36601f5490565b6001600160a01b0319166040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a3134000000000000000000000000815250613816565b5050565b6060601680548060200260200160405190810160405280929190818152602001828054801561050a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104ec575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561050a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104ec575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561064d5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610d0d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ccf5790505b50505050508152505081526020019060010190610c63565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561064d578382906000526020600020018054610d68906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d94906140f5565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b505050505081526020019060010190610d49565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561064d5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ec357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e855790505b50505050508152505081526020019060010190610e19565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561064d578382906000526020600020018054610f1e906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4a906140f5565b8015610f975780601f10610f6c57610100808354040283529160200191610f97565b820191906000526020600020905b815481529060010190602001808311610f7a57829003601f168201915b505050505081526020019060010190610eff565b6040805161016081018252308152600160208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810191909152600090611010906135ff565b601e546040516326aded7960e01b8152600481018390529192506001600160a01b0316906326aded7990602401600060405180830381600087803b15801561105757600080fd5b505af115801561106b573d6000803e3d6000fd5b5050505060005b60048111610b7b57601c819055600060028211156110ff57816003146110bf576040805160048152602481019091526020810180516001600160e01b031662d9465b60e11b179052611129565b6040517f486f6f6b73546573743a3a66616c6c6261636b000000000000000000000000006020820152603301604051602081830303815290604052611129565b6040805160048152602481019091526020810180516001600160e01b0316636c93cb9b60e01b1790525b60405163f28dceb360e01b8152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39061116390849060040161412f565b600060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b5050601e54604080516000808252602082019283905263272185ad60e11b9092526001600160a01b039092169350634e430b5a92506111d39160248101614142565b600060405180830381600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061123c90849060040161412f565b600060405180830381600087803b15801561125657600080fd5b505af115801561126a573d6000803e3d6000fd5b5050601e5460405163feee373560e01b8152600060048201819052602482018190526044820181905260648201526001600160a01b03909116925063feee37359150608401600060405180830381600087803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061131890849060040161412f565b600060405180830381600087803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b5050601e546040516353e8079b60e01b8152600060048201819052602482018190526044820181905260648201526001600160a01b0390911692506353e8079b9150608401600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506113f490849060040161412f565b600060405180830381600087803b15801561140e57600080fd5b505af1158015611422573d6000803e3d6000fd5b5050601e5460405163505d903360e01b81526000600482018190526024820181905260448201526001600160a01b03909116925063505d90339150606401600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506114c990849060040161412f565b600060405180830381600087803b1580156114e357600080fd5b505af11580156114f7573d6000803e3d6000fd5b5050601e546040516360bed5f360e01b8152600060048201819052602482018190526044820181905260648201526001600160a01b0390911692506360bed5f39150608401600060405180830381600087803b15801561155657600080fd5b505af115801561156a573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506115a590849060040161412f565b600060405180830381600087803b1580156115bf57600080fd5b505af11580156115d3573d6000803e3d6000fd5b5050601e546040805160008082526020820192839052630d4abdb360e01b9092526001600160a01b039092169350630d4abdb392506116189181908160248201614163565b600060405180830381600087803b15801561163257600080fd5b505af1158015611646573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061168190849060040161412f565b600060405180830381600087803b15801561169b57600080fd5b505af11580156116af573d6000803e3d6000fd5b5050601e546040805160008082526020820192839052633d28d26360e11b9092526001600160a01b039092169350637a51a4c692506116f49181908160248201614163565b600060405180830381600087803b15801561170e57600080fd5b505af1158015611722573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061175d90849060040161412f565b600060405180830381600087803b15801561177757600080fd5b505af115801561178b573d6000803e3d6000fd5b5050601e546001600160a01b0316915063ea9db9d3905060008080806040519080825280602002602001820160405280156117d0578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611804949392919060248101614209565b600060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061186d90849060040161412f565b600060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b5050601e546001600160a01b0316915063fdc27257905060008080806040519080825280602002602001820160405280156118e0578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611914949392919060248101614209565b600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061197d90849060040161412f565b600060405180830381600087803b15801561199757600080fd5b505af11580156119ab573d6000803e3d6000fd5b5050601e546001600160a01b031691506379c8ccf7905060008080806040519080825280602002602001820160405280156119f0578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611a24949392919060248101614209565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150611a8d90849060040161412f565b600060405180830381600087803b158015611aa757600080fd5b505af1158015611abb573d6000803e3d6000fd5b5050601e546001600160a01b031691506367ddb27890506000808080604051908082528060200260200182016040528015611b00578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611b34949392919060248101614209565b600060405180830381600087803b158015611b4e57600080fd5b505af1158015611b62573d6000803e3d6000fd5b50505050508080611b729061425b565b915050611072565b60075460009060ff1615611b92575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190614282565b1415905090565b601d546040516340c3fa8b60e11b81523060048201526001600160a01b0390911690638187f51690602401600060405180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506000611c9d896135ff565b601d546001600160a01b03168a529050611cb6896135ff565b601f55601d54611d13906001600160a01b03166001600160a01b0319831617601f546040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a31000000000000000000000000000000815250613816565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d6357600080fd5b505af1158015611d77573d6000803e3d6000fd5b50505050611d88601f548484613851565b601d546040805163571eed3760e01b81529051611e97926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015611dd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611dfb919081019061429b565b8051602090910120601f5460405163272185ad60e11b91611e229188908890602401614348565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a32000000000000000000000000000000815250613816565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ee757600080fd5b505af1158015611efb573d6000803e3d6000fd5b50505050611f12601f54898a60008060001b6138b4565b88602001511561203257601d546040805163571eed3760e01b8152905161202d926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015611f67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f8f919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606482018190526084808301919091528251808303909101815260a4909101825280840180516001600160e01b031663feee373560e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3300000000000000000000000000000093820193909352909190613816565b6120e3565b601d546040805163571eed3760e01b815290516120e3926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801561207d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120a5919081019061429b565b5160006040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a34000000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561213357600080fd5b505af1158015612147573d6000803e3d6000fd5b5050505061215e601f54898a60008060001b613942565b88604001511561227e57601d54604080516330bed69960e21b81529051612279926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156121b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121db919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606482018190526084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166353e8079b60e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3500000000000000000000000000000093820193909352909190613816565b61232f565b601d54604080516330bed69960e21b8152905161232f926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156122c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122f1919081019061429b565b5160006040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a36000000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561237f57600080fd5b505af1158015612393573d6000803e3d6000fd5b505050506123a8601f54898a6000801b61398e565b8860600151156124c157601d546040805163571eed3760e01b815290516124bc926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156123fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612425919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606480830191909152825180830390910181526084909101825280840180516001600160e01b031663505d903360e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3700000000000000000000000000000093820193909352909190613816565b612572565b601d546040805163571eed3760e01b81529051612572926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801561250c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612534919081019061429b565b5160006040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a38000000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125c257600080fd5b505af11580156125d6573d6000803e3d6000fd5b5050601f546125ec9250905089806000806139d2565b88608001511561270c57601d54604080516330bed69960e21b81529051612707926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612641573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612669919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606482018190526084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166360bed5f360e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3900000000000000000000000000000093820193909352909190613816565b6127bd565b601d54604080516330bed69960e21b815290516127bd926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612757573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261277f919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31300000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561280d57600080fd5b505af1158015612821573d6000803e3d6000fd5b50505050612838601f54898a8a8a6000801b613a1d565b8860a001511561295a57601d546040805163571eed3760e01b81529051612955926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801561288d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b5919081019061429b565b8051602090910120604051630d4abdb360e01b906128e0908c9081908d908d906000906024016143c9565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31310000000000000000000000000000815250613816565b612a0b565b601d546040805163571eed3760e01b81529051612a0b926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156129a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129cd919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31320000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b50505050612a86601f54898a8a8a6000801b613a56565b8860c0015115612ba857601d54604080516330bed69960e21b81529051612ba3926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612adb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b03919081019061429b565b8051602090910120604051633d28d26360e11b90612b2e908c9081908d908d906000906024016143c9565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31330000000000000000000000000000815250613816565b612c59565b601d54604080516330bed69960e21b81529051612c59926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612bf3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c1b919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31340000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612ca957600080fd5b505af1158015612cbd573d6000803e3d6000fd5b50505050612cd3601f54898a8b89898b8b613a87565b8860e0015115612df657601d546040805163571eed3760e01b81529051612df1926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015612d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d50919081019061429b565b8051906020012063ea9db9d360e01b8a8b8c8a8a8c8c604051602401612d7c9796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31350000000000000000000000000000815250613816565b612ea7565b601d546040805163571eed3760e01b81529051612ea7926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015612e41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e69919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31360000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612ef757600080fd5b505af1158015612f0b573d6000803e3d6000fd5b50505050612f21601f54898a8b89898b8b613ac6565b8861010001511561304557601d54604080516330bed69960e21b81529051613040926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612f77573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f9f919081019061429b565b8051906020012063fdc2725760e01b8a8b8c8a8a8c8c604051602401612fcb9796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31370000000000000000000000000000815250613816565b6130f6565b601d54604080516330bed69960e21b815290516130f6926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015613090573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130b8919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31380000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561314657600080fd5b505af115801561315a573d6000803e3d6000fd5b50505050613170601f54898a8b89898b8b613afb565b8861012001511561329457601d546040805163571eed3760e01b8152905161328f926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156131c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131ee919081019061429b565b805190602001206379c8ccf760e01b8a8b8c8a8a8c8c60405160240161321a9796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31390000000000000000000000000000815250613816565b613345565b601d546040805163571eed3760e01b81529051613345926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156132df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613307919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a32300000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b505050506133bf601f54898a8b89898b8b613b30565b886101400151156134e357601d54604080516330bed69960e21b815290516134de926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015613415573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261343d919081019061429b565b805190602001206367ddb27860e01b8a8b8c8a8a8c8c6040516024016134699796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a32310000000000000000000000000000815250613816565b613594565b601d54604080516330bed69960e21b81529051613594926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613556919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a32320000000000000000000000000000815250613907565b505050505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561050a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104ec575050505050905090565b805160208201516001600160a01b03909116901561361e57600160a01b175b81604001511561362f57600160a11b175b81606001511561364057600160a21b175b81608001511561365157600160a31b175b8160a001511561366257600160a41b175b8160c001511561367357600160a51b175b8160e001511561368457600160a61b175b8161010001511561369657600160a71b175b816101200151156136a857600160a81b175b816101400151156136ba57600160a91b175b919050565b60408051610160810182526001600160a01b0383168152600160a01b831615156020820152600160a11b8316151591810191909152600160a21b821615156060820152600160a31b821615156080820152600160a41b8216151560a0820152600160a51b8216151560c0820152600160a61b8216151560e0820152600160a71b82161515610100820152600160a81b82161515610120820152600160a91b909116151561014082015290565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906137a69086908690869060040161445e565b60006040518083038186803b1580156137be57600080fd5b505afa1580156137d2573d6000803e3d6000fd5b50505050505050565b6040516326d8cf3f60e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634db19e7e906137a690869086908690600401614493565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed0906137a6908690869086906004016144b6565b82156138af576138af83634e430b5a60e01b85858560405160240161387893929190614348565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b65565b505050565b600160a01b851615613900576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261390090869063feee373560e01b9060a401613878565b5050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906137a6908690869086906004016144b6565b600160a11b851615613900576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526139009086906353e8079b60e01b9060a401613878565b600160a21b8416156104ac576040516001600160a01b03808516602483015283166044820152606481018290526104ac90859063505d903360e01b90608401613878565b600160a31b851615613900576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526139009086906360bed5f360e01b9060a401613878565b600160a41b861615613a4e57613a4e86630d4abdb360e01b87878787876040516024016138789594939291906143c9565b505050505050565b600160a51b861615613a4e57613a4e86637a51a4c660e01b87878787876040516024016138789594939291906143c9565b600160a61b881615613abc57613abc8863ea9db9d360e01b898989898989896040516024016138789796959493929190614408565b5050505050505050565b600160a71b881615613abc57613abc8863fdc2725760e01b898989898989896040516024016138789796959493929190614408565b600160a81b881615613abc57613abc886379c8ccf760e01b898989898989896040516024016138789796959493929190614408565b600160a91b881615613abc57613abc886367ddb27860e01b898989898989896040516024016138789796959493929190614408565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613b99573d6000803e3d6000fd5b8060005160e01c14601f3d11168316925050816104ac57604051636c93cb9b60e01b815260040160405180910390fd5b610c47806144d683390190565b610aff8061511d83390190565b6020808252825182820181905260009190848201906040850190845b81811015613c245783516001600160a01b031683529284019291840191600101613bff565b50909695505050505050565b60005b83811015613c4b578181015183820152602001613c33565b50506000910152565b60008151808452613c6c816020860160208601613c30565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015613d3057603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015613d1a57605f19898503018352613d08848651613c54565b948e01949350918d0191600101613cec565b505050978a019794505091880191600101613ca7565b50919a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715613d7a57613d7a613d40565b60405290565b80356001600160a01b03811681146136ba57600080fd5b803580151581146136ba57600080fd5b60006101608284031215613dba57600080fd5b613dc2613d56565b9050613dcd82613d80565b8152613ddb60208301613d97565b6020820152613dec60408301613d97565b6040820152613dfd60608301613d97565b6060820152613e0e60808301613d97565b6080820152613e1f60a08301613d97565b60a0820152613e3060c08301613d97565b60c0820152613e4160e08301613d97565b60e0820152610100613e54818401613d97565b90820152610120613e66838201613d97565b90820152610140613e78838201613d97565b9082015292915050565b60006101608284031215613e9557600080fd5b613e9f8383613da7565b9392505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015613f4a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015613f355783516001600160e01b0319168252928b019260019290920191908b0190613f0b565b50978a01979550505091870191600101613ece565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613fae57603f19888603018452613f9c858351613c54565b94509285019290850190600101613f80565b5092979650505050505050565b60008083601f840112613fcd57600080fd5b50813567ffffffffffffffff811115613fe557600080fd5b6020830191508360208260051b850101111561400057600080fd5b9250929050565b6000806000806000806000806101e0898b03121561402457600080fd5b61402e8a8a613da7565b975061403d6101608a01613d80565b965061018089013567ffffffffffffffff8082111561405b57600080fd5b6140678c838d01613fbb565b90985096506101a08b013591508082111561408157600080fd5b61408d8c838d01613fbb565b90965094506101c08b01359150808211156140a757600080fd5b818b0191508b601f8301126140bb57600080fd5b8135818111156140ca57600080fd5b8c60208285010111156140dc57600080fd5b6020830194508093505050509295985092959890939650565b600181811c9082168061410957607f821691505b60208210810361412957634e487b7160e01b600052602260045260246000fd5b50919050565b602081526000613e9f6020830184613c54565b82815260406020820152600061415b6040830184613c54565b949350505050565b6000608082016001600160a01b03808816845260208188168186015260806040860152829150865180845260a086019250818801935060005b818110156141b85784518452938201939282019260010161419c565b5050506060939093019390935250949350505050565b600081518084526020808501945080840160005b838110156141fe578151875295820195908201906001016141e2565b509495945050505050565b60006001600160a01b038088168352808716602084015280861660408401525060a0606083015261423d60a08301856141ce565b828103608084015261424f81856141ce565b98975050505050505050565b60006001820161427b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561429457600080fd5b5051919050565b6000602082840312156142ad57600080fd5b815167ffffffffffffffff808211156142c557600080fd5b818401915084601f8301126142d957600080fd5b8151818111156142eb576142eb613d40565b604051601f8201601f19908116603f0116810190838211818310171561431357614313613d40565b8160405282815287602084870101111561432c57600080fd5b61433d836020830160208801613c30565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156143b057600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038088168352808716602084015250608060408301526143f660808301858761437e565b90508260608301529695505050505050565b60006001600160a01b03808a168352808916602084015280881660408401525060a0606083015261443d60a08301868861437e565b828103608084015261445081858761437e565b9a9950505050505050505050565b60006001600160a01b0380861683528085166020840152506060604083015261448a6060830184613c54565b95945050505050565b8315158152821515602082015260606040820152600061448a6060830184613c54565b83815282602082015260606040820152600061448a6060830184613c5456fe608060405234801561001057600080fd5b50610c27806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806379c8ccf7116100b2578063c2fb5a6411610081578063ea9db9d311610066578063ea9db9d3146102c3578063fdc27257146102d6578063feee3735146102e957600080fd5b8063c2fb5a64146102b3578063d826f88f146102bb57600080fd5b806379c8ccf7146102305780637a51a4c6146102435780638187f51614610256578063a8aa1b31146102a057600080fd5b806353e8079b116101095780635f9c01b1116100ee5780635f9c01b1146101ea57806360bed5f31461020a57806367ddb2781461021d57600080fd5b806353e8079b146101c2578063571eed37146101d557600080fd5b806309fa1f901461013b5780630d4abdb3146101585780634e430b5a1461019c578063505d9033146101af575b600080fd5b6101436102fc565b60405190151581526020015b60405180910390f35b61016b6101663660046107b6565b61030b565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014f565b61016b6101aa36600461081f565b610334565b61016b6101bd36600461089b565b61037e565b61016b6101d03660046108d7565b6103a3565b6101dd6103ca565b60405161014f9190610929565b6101f2610458565b6040516001600160a01b03909116815260200161014f565b61016b610218366004610977565b61046c565b61016b61022b3660046109b9565b610493565b61016b61023e3660046109b9565b6104c0565b61016b6102513660046107b6565b6104ed565b61029e610264366004610a5b565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b005b6002546101f2906001600160a01b031681565b6101dd610516565b61029e610523565b61016b6102d13660046109b9565b61053c565b61016b6102e43660046109b9565b610569565b61016b6102f73660046108d7565b610596565b60006103066105bd565b905090565b600061031561064a565b610322868686868661067b565b50630d4abdb360e01b95945050505050565b600061033e61064a565b6103466105bd565b61036357604051632def67a360e21b815260040160405180910390fd5b61036e848484610690565b5063272185ad60e11b9392505050565b600061038861064a565b610393848484610690565b5063505d903360e01b9392505050565b60006103ad61064a565b6103b9858585856106a3565b506353e8079b60e01b949350505050565b600080546103d790610a7d565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610a7d565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505081565b60006103066002546001600160a01b031690565b600061047661064a565b610482858585856106a3565b506360bed5f360e01b949350505050565b600061049d61064a565b6104ac888888888888886106b8565b50630cfbb64f60e31b979650505050505050565b60006104ca61064a565b6104d9888888888888886106d0565b506379c8ccf760e01b979650505050505050565b60006104f761064a565b61050486868686866106dd565b50633d28d26360e11b95945050505050565b600180546103d790610a7d565b61052e6000806106f8565b61053a600160006106f8565b565b600061054661064a565b610555888888888888886106d0565b5063ea9db9d360e01b979650505050505050565b600061057361064a565b610582888888888888886106b8565b5063fdc2725760e01b979650505050505050565b60006105a061064a565b6105ac858585856106eb565b5063feee373560e01b949350505050565b6000806106396105d56002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106369190610ab7565b90565b6001600160a01b0316301492915050565b6002546001600160a01b0316331461053a57604051634a27038360e01b815233600482015260240160405180910390fd5b6000610688368280610b31565b505050505050565b600061069d368280610b31565b50505050565b60016106b136600083610b31565b5050505050565b60016106c636600083610b31565b5050505050505050565b60006106c6368280610b31565b600161068836600083610b31565b60006106b1368280610b31565b50805461070490610a7d565b6000825580601f10610714575050565b601f0160209004906000526020600020908101906107329190610735565b50565b5b8082111561074a5760008155600101610736565b5090565b80356001600160a01b038116811461076557600080fd5b919050565b60008083601f84011261077c57600080fd5b50813567ffffffffffffffff81111561079457600080fd5b6020830191508360208260051b85010111156107af57600080fd5b9250929050565b6000806000806000608086880312156107ce57600080fd5b6107d78661074e565b94506107e56020870161074e565b9350604086013567ffffffffffffffff81111561080157600080fd5b61080d8882890161076a565b96999598509660600135949350505050565b60008060006040848603121561083457600080fd5b83359250602084013567ffffffffffffffff8082111561085357600080fd5b818601915086601f83011261086757600080fd5b81358181111561087657600080fd5b87602082850101111561088857600080fd5b6020830194508093505050509250925092565b6000806000606084860312156108b057600080fd5b6108b98461074e565b92506108c76020850161074e565b9150604084013590509250925092565b600080600080608085870312156108ed57600080fd5b6108f68561074e565b93506109046020860161074e565b92506040850135801515811461091957600080fd5b9396929550929360600135925050565b600060208083528351808285015260005b818110156109565785810183015185820160400152820161093a565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806080858703121561098d57600080fd5b6109968561074e565b93506109a46020860161074e565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156109d457600080fd5b6109dd8861074e565b96506109eb6020890161074e565b95506109f96040890161074e565b9450606088013567ffffffffffffffff80821115610a1657600080fd5b610a228b838c0161076a565b909650945060808a0135915080821115610a3b57600080fd5b50610a488a828b0161076a565b989b979a50959850939692959293505050565b600060208284031215610a6d57600080fd5b610a768261074e565b9392505050565b600181811c90821680610a9157607f821691505b602082108103610ab157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ac957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b601f821115610b2c57600081815260208120601f850160051c81016020861015610b0d5750805b601f850160051c820191505b8181101561068857828155600101610b19565b505050565b67ffffffffffffffff831115610b4957610b49610ad0565b610b5d83610b578354610a7d565b83610ae6565b6000601f841160018114610b915760008515610b795750838201355b600019600387901b1c1916600186901b1783556106b1565b600083815260209020601f19861690835b82811015610bc25786850135825560209485019460019092019101610ba2565b5086821015610bdf5760001960f88860031b161c19848701351681555b505060018560011b018355505050505056fea2646970667358221220807d152e5200b82d0890813e63c91c3287e3ec0bf9488b9534bdc624330825a064736f6c63430008140033608060405234801561001057600080fd5b50610adf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806367ddb2781161008c578063ea9db9d311610066578063ea9db9d314610191578063ed40c65f146101a4578063fdc27257146101bf578063feee3735146101d257600080fd5b806367ddb2781461015857806379c8ccf71461016b5780637a51a4c61461017e57600080fd5b8063505d9033116100bd578063505d90331461011f57806353e8079b1461013257806360bed5f31461014557600080fd5b80630d4abdb3146100e457806326aded79146100f95780634e430b5a1461010c575b600080fd5b6100f76100f2366004610723565b6101e5565b005b6100f761010736600461078c565b600055565b6100f761011a3660046107a5565b6101fc565b6100f761012d366004610821565b61020e565b6100f761014036600461085d565b61021c565b6100f76101533660046108af565b610231565b6100f76101663660046108f1565b610240565b6100f76101793660046108f1565b61025c565b6100f761018c366004610723565b61026e565b6100f761019f3660046108f1565b61027e565b6101ad60005481565b60405190815260200160405180910390f35b6100f76101cd3660046108f1565b610290565b6100f76101e036600461085d565b6102a2565b6101f560005486868686866102b1565b5050505050565b610209600054838361035f565b505050565b610209600054848484610386565b61022b600054858585856103db565b50505050565b61022b60005485858585610438565b6102536000548888600088888888610494565b50505050505050565b610253600054888888888888886104e5565b6101f5600054868686868661052c565b6102536000548888888888888861056e565b610253600054888888888888886105b4565b61022b600054858585856105fa565b741000000000000000000000000000000000000000008616156103575761035786630d4abdb360e01b87878787876040516024016102f39594939291906109de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610657565b505050505050565b82156102095761020983634e430b5a60e01b8585856040516024016102f393929190610a1d565b7404000000000000000000000000000000000000000084161561022b576040516001600160a01b038085166024830152831660448201526064810182905261022b90859063505d903360e01b906084016102f3565b740200000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f59086906353e8079b60e01b9060a4016102f3565b740800000000000000000000000000000000000000008516156101f5576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526101f59086906360bed5f360e01b9060a4016102f3565b75020000000000000000000000000000000000000000008816156104db576104db886367ddb27860e01b898989898989896040516024016102f39796959493929190610a53565b5050505050505050565b75010000000000000000000000000000000000000000008816156104db576104db886379c8ccf760e01b898989898989896040516024016102f39796959493929190610a53565b742000000000000000000000000000000000000000008616156103575761035786637a51a4c660e01b87878787876040516024016102f39594939291906109de565b744000000000000000000000000000000000000000008816156104db576104db8863ea9db9d360e01b898989898989896040516024016102f39796959493929190610a53565b748000000000000000000000000000000000000000008816156104db576104db8863fdc2725760e01b898989898989896040516024016102f39796959493929190610a53565b740100000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f590869063feee373560e01b9060a4016102f3565b600080839050602083015160e01c602060008551602087016000865af192503d15158315161561068b573d6000803e3d6000fd5b8060005160e01c14601f3d111683169250508161022b57604051636c93cb9b60e01b815260040160405180910390fd5b80356001600160a01b03811681146106d257600080fd5b919050565b60008083601f8401126106e957600080fd5b50813567ffffffffffffffff81111561070157600080fd5b6020830191508360208260051b850101111561071c57600080fd5b9250929050565b60008060008060006080868803121561073b57600080fd5b610744866106bb565b9450610752602087016106bb565b9350604086013567ffffffffffffffff81111561076e57600080fd5b61077a888289016106d7565b96999598509660600135949350505050565b60006020828403121561079e57600080fd5b5035919050565b6000806000604084860312156107ba57600080fd5b83359250602084013567ffffffffffffffff808211156107d957600080fd5b818601915086601f8301126107ed57600080fd5b8135818111156107fc57600080fd5b87602082850101111561080e57600080fd5b6020830194508093505050509250925092565b60008060006060848603121561083657600080fd5b61083f846106bb565b925061084d602085016106bb565b9150604084013590509250925092565b6000806000806080858703121561087357600080fd5b61087c856106bb565b935061088a602086016106bb565b92506040850135801515811461089f57600080fd5b9396929550929360600135925050565b600080600080608085870312156108c557600080fd5b6108ce856106bb565b93506108dc602086016106bb565b93969395505050506040820135916060013590565b600080600080600080600060a0888a03121561090c57600080fd5b610915886106bb565b9650610923602089016106bb565b9550610931604089016106bb565b9450606088013567ffffffffffffffff8082111561094e57600080fd5b61095a8b838c016106d7565b909650945060808a013591508082111561097357600080fd5b506109808a828b016106d7565b989b979a50959850939692959293505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156109c557600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b03808816835280871660208401525060806040830152610a0b608083018587610993565b90508260608301529695505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152610a8860a083018688610993565b8281036080840152610a9b818587610993565b9a995050505050505050505056fea2646970667358221220b71be0ffae8a52749dbc264c07a8d2e0e53e010b1d711c0dbf1f1aa4a849ddb464736f6c63430008140033a264697066735822122011f9283430f42757c79d7474fd8892cbccd932ca0c44f71c641650119857e01b64736f6c63430008140033","sourceMap":"201:12138:85:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;201:12138:85;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061011b5760003560e01c8063781a8915116100b2578063b8aa36c711610081578063cd7033c411610066578063cd7033c4146102b0578063d899e558146102c3578063e20c9f71146102d65761011b565b8063b8aa36c714610290578063ba414fa6146102985761011b565b8063781a89151461025a57806385226c811461026b578063916a17c614610280578063b5508aa9146102885761011b565b80632f09b962116100ee5780632f09b962146102225780633e5e3c23146102355780633f7286f41461023d57806366d9a9a0146102455761011b565b806308acf940146101c05780630a9254e4146101f05780631ed7831c146101f85780632ade38801461020d575b601c5460010361012a57600080fd5b601c5460020361014657671234567890abcdef60005260206000f35b601c5460030361019c5760405162461bcd60e51b815260206004820152601360248201527f486f6f6b73546573743a3a66616c6c6261636b00000000000000000000000000604482015260640160405180910390fd5b601c546004036101be5760405162d9465b60e11b815260040160405180910390fd5b005b601e546101d3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101be6102de565b6102006104b2565b6040516101e79190613be3565b610215610514565b6040516101e79190613c80565b6101be610230366004613e82565b610656565b610200610b7f565b610200610bdf565b61024d610c3f565b6040516101e79190613ea6565b601f546040519081526020016101e7565b610273610d25565b6040516101e79190613f59565b61024d610df5565b610273610edb565b6101be610fab565b6102a0611b7a565b60405190151581526020016101e7565b601d546101d3906001600160a01b031681565b6101be6102d1366004614007565b611c35565b61020061359f565b6040516102ea90613bc9565b604051809103906000f080158015610306573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405161033390613bd6565b604051809103906000f08015801561034f573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03928316179055601d54604080516318caf8e360e31b81529190921660048201526024810191909152600560448201527f686f6f6b730000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156103f457600080fd5b505af1158015610408573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600b60448201527f686f6f6b7343616c6c65720000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801561049857600080fd5b505af11580156104ac573d6000803e3d6000fd5b50505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561050a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104ec575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561064d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106365783829060005260206000200180546105a9906140f5565b80601f01602080910402602001604051908101604052809291908181526020018280546105d5906140f5565b80156106225780601f106105f757610100808354040283529160200191610622565b820191906000526020600020905b81548152906001019060200180831161060557829003601f168201915b50505050508152602001906001019061058a565b505050508152505081526020019060010190610538565b50505050905090565b61065f816135ff565b601f81905581516106ad91610673906136bf565b5160408051808201909152601381527f746573745f456e636f6465486f6f6b733a3a3100000000000000000000000000602082015261376b565b6106ff81602001516106c0601f546136bf565b602001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a32000000000000000000000000008152506137db565b6107518160400151610712601f546136bf565b604001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a33000000000000000000000000008152506137db565b6107a38160600151610764601f546136bf565b606001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a34000000000000000000000000008152506137db565b6107f581608001516107b6601f546136bf565b608001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a35000000000000000000000000008152506137db565b6108478160a00151610808601f546136bf565b60a001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a36000000000000000000000000008152506137db565b6108998160c0015161085a601f546136bf565b60c001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a37000000000000000000000000008152506137db565b6108eb8160e001516108ac601f546136bf565b60e001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a38000000000000000000000000008152506137db565b61093f8161010001516108ff601f546136bf565b61010001516040518060400160405280601381526020017f746573745f456e636f6465486f6f6b733a3a39000000000000000000000000008152506137db565b610993816101200151610953601f546136bf565b61012001516040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a31300000000000000000000000008152506137db565b6109e78161014001516109a7601f546136bf565b61014001516040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a31310000000000000000000000008152506137db565b8051601f54610a2c91906040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a313200000000000000000000000081525061376b565b601f5460408051808201909152601481527f746573745f456e636f6465486f6f6b733a3a31330000000000000000000000006020820152610a79916001600160a01b031916908190613816565b602081015160009015610a8d57600160a01b175b816040015115610a9e57600160a11b175b816060015115610aaf57600160a21b175b816080015115610ac057600160a31b175b8160a0015115610ad157600160a41b175b8160c0015115610ae257600160a51b175b8160e0015115610af357600160a61b175b81610100015115610b0557600160a71b175b81610120015115610b1757600160a81b175b81610140015115610b2957600160a91b175b610b7b81610b36601f5490565b6001600160a01b0319166040518060400160405280601481526020017f746573745f456e636f6465486f6f6b733a3a3134000000000000000000000000815250613816565b5050565b6060601680548060200260200160405190810160405280929190818152602001828054801561050a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104ec575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561050a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104ec575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561064d5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610d0d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610ccf5790505b50505050508152505081526020019060010190610c63565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561064d578382906000526020600020018054610d68906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d94906140f5565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b505050505081526020019060010190610d49565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561064d5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ec357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610e855790505b50505050508152505081526020019060010190610e19565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561064d578382906000526020600020018054610f1e906140f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4a906140f5565b8015610f975780601f10610f6c57610100808354040283529160200191610f97565b820191906000526020600020905b815481529060010190602001808311610f7a57829003601f168201915b505050505081526020019060010190610eff565b6040805161016081018252308152600160208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810191909152600090611010906135ff565b601e546040516326aded7960e01b8152600481018390529192506001600160a01b0316906326aded7990602401600060405180830381600087803b15801561105757600080fd5b505af115801561106b573d6000803e3d6000fd5b5050505060005b60048111610b7b57601c819055600060028211156110ff57816003146110bf576040805160048152602481019091526020810180516001600160e01b031662d9465b60e11b179052611129565b6040517f486f6f6b73546573743a3a66616c6c6261636b000000000000000000000000006020820152603301604051602081830303815290604052611129565b6040805160048152602481019091526020810180516001600160e01b0316636c93cb9b60e01b1790525b60405163f28dceb360e01b8152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb39061116390849060040161412f565b600060405180830381600087803b15801561117d57600080fd5b505af1158015611191573d6000803e3d6000fd5b5050601e54604080516000808252602082019283905263272185ad60e11b9092526001600160a01b039092169350634e430b5a92506111d39160248101614142565b600060405180830381600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061123c90849060040161412f565b600060405180830381600087803b15801561125657600080fd5b505af115801561126a573d6000803e3d6000fd5b5050601e5460405163feee373560e01b8152600060048201819052602482018190526044820181905260648201526001600160a01b03909116925063feee37359150608401600060405180830381600087803b1580156112c957600080fd5b505af11580156112dd573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061131890849060040161412f565b600060405180830381600087803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b5050601e546040516353e8079b60e01b8152600060048201819052602482018190526044820181905260648201526001600160a01b0390911692506353e8079b9150608401600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506113f490849060040161412f565b600060405180830381600087803b15801561140e57600080fd5b505af1158015611422573d6000803e3d6000fd5b5050601e5460405163505d903360e01b81526000600482018190526024820181905260448201526001600160a01b03909116925063505d90339150606401600060405180830381600087803b15801561147a57600080fd5b505af115801561148e573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506114c990849060040161412f565b600060405180830381600087803b1580156114e357600080fd5b505af11580156114f7573d6000803e3d6000fd5b5050601e546040516360bed5f360e01b8152600060048201819052602482018190526044820181905260648201526001600160a01b0390911692506360bed5f39150608401600060405180830381600087803b15801561155657600080fd5b505af115801561156a573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506115a590849060040161412f565b600060405180830381600087803b1580156115bf57600080fd5b505af11580156115d3573d6000803e3d6000fd5b5050601e546040805160008082526020820192839052630d4abdb360e01b9092526001600160a01b039092169350630d4abdb392506116189181908160248201614163565b600060405180830381600087803b15801561163257600080fd5b505af1158015611646573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061168190849060040161412f565b600060405180830381600087803b15801561169b57600080fd5b505af11580156116af573d6000803e3d6000fd5b5050601e546040805160008082526020820192839052633d28d26360e11b9092526001600160a01b039092169350637a51a4c692506116f49181908160248201614163565b600060405180830381600087803b15801561170e57600080fd5b505af1158015611722573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061175d90849060040161412f565b600060405180830381600087803b15801561177757600080fd5b505af115801561178b573d6000803e3d6000fd5b5050601e546001600160a01b0316915063ea9db9d3905060008080806040519080825280602002602001820160405280156117d0578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611804949392919060248101614209565b600060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061186d90849060040161412f565b600060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b5050601e546001600160a01b0316915063fdc27257905060008080806040519080825280602002602001820160405280156118e0578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611914949392919060248101614209565b600060405180830381600087803b15801561192e57600080fd5b505af1158015611942573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb3915061197d90849060040161412f565b600060405180830381600087803b15801561199757600080fd5b505af11580156119ab573d6000803e3d6000fd5b5050601e546001600160a01b031691506379c8ccf7905060008080806040519080825280602002602001820160405280156119f0578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611a24949392919060248101614209565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505060405163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150611a8d90849060040161412f565b600060405180830381600087803b158015611aa757600080fd5b505af1158015611abb573d6000803e3d6000fd5b5050601e546001600160a01b031691506367ddb27890506000808080604051908082528060200260200182016040528015611b00578160200160208202803683370190505b50604080516000815260208101918290526001600160e01b031960e088901b16909152611b34949392919060248101614209565b600060405180830381600087803b158015611b4e57600080fd5b505af1158015611b62573d6000803e3d6000fd5b50505050508080611b729061425b565b915050611072565b60075460009060ff1615611b92575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190614282565b1415905090565b601d546040516340c3fa8b60e11b81523060048201526001600160a01b0390911690638187f51690602401600060405180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506000611c9d896135ff565b601d546001600160a01b03168a529050611cb6896135ff565b601f55601d54611d13906001600160a01b03166001600160a01b0319831617601f546040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a31000000000000000000000000000000815250613816565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d6357600080fd5b505af1158015611d77573d6000803e3d6000fd5b50505050611d88601f548484613851565b601d546040805163571eed3760e01b81529051611e97926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015611dd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611dfb919081019061429b565b8051602090910120601f5460405163272185ad60e11b91611e229188908890602401614348565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a32000000000000000000000000000000815250613816565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ee757600080fd5b505af1158015611efb573d6000803e3d6000fd5b50505050611f12601f54898a60008060001b6138b4565b88602001511561203257601d546040805163571eed3760e01b8152905161202d926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015611f67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f8f919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606482018190526084808301919091528251808303909101815260a4909101825280840180516001600160e01b031663feee373560e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3300000000000000000000000000000093820193909352909190613816565b6120e3565b601d546040805163571eed3760e01b815290516120e3926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801561207d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120a5919081019061429b565b5160006040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a34000000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561213357600080fd5b505af1158015612147573d6000803e3d6000fd5b5050505061215e601f54898a60008060001b613942565b88604001511561227e57601d54604080516330bed69960e21b81529051612279926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156121b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121db919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606482018190526084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166353e8079b60e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3500000000000000000000000000000093820193909352909190613816565b61232f565b601d54604080516330bed69960e21b8152905161232f926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156122c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122f1919081019061429b565b5160006040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a36000000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561237f57600080fd5b505af1158015612393573d6000803e3d6000fd5b505050506123a8601f54898a6000801b61398e565b8860600151156124c157601d546040805163571eed3760e01b815290516124bc926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156123fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612425919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606480830191909152825180830390910181526084909101825280840180516001600160e01b031663505d903360e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3700000000000000000000000000000093820193909352909190613816565b612572565b601d546040805163571eed3760e01b81529051612572926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801561250c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612534919081019061429b565b5160006040518060400160405280601181526020017f746573745f43616c6c486f6f6b733a3a38000000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125c257600080fd5b505af11580156125d6573d6000803e3d6000fd5b5050601f546125ec9250905089806000806139d2565b88608001511561270c57601d54604080516330bed69960e21b81529051612707926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612641573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612669919081019061429b565b8051602091820120604080516001600160a01b038d166024820181905260448201526000606482018190526084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166360bed5f360e01b178152905190208151808301909252601182527f746573745f43616c6c486f6f6b733a3a3900000000000000000000000000000093820193909352909190613816565b6127bd565b601d54604080516330bed69960e21b815290516127bd926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612757573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261277f919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31300000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561280d57600080fd5b505af1158015612821573d6000803e3d6000fd5b50505050612838601f54898a8a8a6000801b613a1d565b8860a001511561295a57601d546040805163571eed3760e01b81529051612955926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801561288d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b5919081019061429b565b8051602090910120604051630d4abdb360e01b906128e0908c9081908d908d906000906024016143c9565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31310000000000000000000000000000815250613816565b612a0b565b601d546040805163571eed3760e01b81529051612a0b926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156129a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129cd919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31320000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b50505050612a86601f54898a8a8a6000801b613a56565b8860c0015115612ba857601d54604080516330bed69960e21b81529051612ba3926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612adb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b03919081019061429b565b8051602090910120604051633d28d26360e11b90612b2e908c9081908d908d906000906024016143c9565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31330000000000000000000000000000815250613816565b612c59565b601d54604080516330bed69960e21b81529051612c59926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612bf3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c1b919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31340000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612ca957600080fd5b505af1158015612cbd573d6000803e3d6000fd5b50505050612cd3601f54898a8b89898b8b613a87565b8860e0015115612df657601d546040805163571eed3760e01b81529051612df1926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015612d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d50919081019061429b565b8051906020012063ea9db9d360e01b8a8b8c8a8a8c8c604051602401612d7c9796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31350000000000000000000000000000815250613816565b612ea7565b601d546040805163571eed3760e01b81529051612ea7926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015612e41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e69919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31360000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612ef757600080fd5b505af1158015612f0b573d6000803e3d6000fd5b50505050612f21601f54898a8b89898b8b613ac6565b8861010001511561304557601d54604080516330bed69960e21b81529051613040926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015612f77573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f9f919081019061429b565b8051906020012063fdc2725760e01b8a8b8c8a8a8c8c604051602401612fcb9796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31370000000000000000000000000000815250613816565b6130f6565b601d54604080516330bed69960e21b815290516130f6926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015613090573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130b8919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31380000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561314657600080fd5b505af115801561315a573d6000803e3d6000fd5b50505050613170601f54898a8b89898b8b613afb565b8861012001511561329457601d546040805163571eed3760e01b8152905161328f926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156131c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131ee919081019061429b565b805190602001206379c8ccf760e01b8a8b8c8a8a8c8c60405160240161321a9796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a31390000000000000000000000000000815250613816565b613345565b601d546040805163571eed3760e01b81529051613345926001600160a01b03169163571eed379160048083019260009291908290030181865afa1580156132df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613307919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a32300000000000000000000000000000815250613907565b601d60009054906101000a90046001600160a01b03166001600160a01b031663d826f88f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561339557600080fd5b505af11580156133a9573d6000803e3d6000fd5b505050506133bf601f54898a8b89898b8b613b30565b886101400151156134e357601d54604080516330bed69960e21b815290516134de926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015613415573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261343d919081019061429b565b805190602001206367ddb27860e01b8a8b8c8a8a8c8c6040516024016134699796959493929190614408565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a32310000000000000000000000000000815250613816565b613594565b601d54604080516330bed69960e21b81529051613594926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613556919081019061429b565b5160006040518060400160405280601281526020017f746573745f43616c6c486f6f6b733a3a32320000000000000000000000000000815250613907565b505050505050505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561050a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104ec575050505050905090565b805160208201516001600160a01b03909116901561361e57600160a01b175b81604001511561362f57600160a11b175b81606001511561364057600160a21b175b81608001511561365157600160a31b175b8160a001511561366257600160a41b175b8160c001511561367357600160a51b175b8160e001511561368457600160a61b175b8161010001511561369657600160a71b175b816101200151156136a857600160a81b175b816101400151156136ba57600160a91b175b919050565b60408051610160810182526001600160a01b0383168152600160a01b831615156020820152600160a11b8316151591810191909152600160a21b821615156060820152600160a31b821615156080820152600160a41b8216151560a0820152600160a51b8216151560c0820152600160a61b8216151560e0820152600160a71b82161515610100820152600160a81b82161515610120820152600160a91b909116151561014082015290565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906137a69086908690869060040161445e565b60006040518083038186803b1580156137be57600080fd5b505afa1580156137d2573d6000803e3d6000fd5b50505050505050565b6040516326d8cf3f60e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634db19e7e906137a690869086908690600401614493565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed0906137a6908690869086906004016144b6565b82156138af576138af83634e430b5a60e01b85858560405160240161387893929190614348565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b65565b505050565b600160a01b851615613900576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261390090869063feee373560e01b9060a401613878565b5050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906137a6908690869086906004016144b6565b600160a11b851615613900576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526139009086906353e8079b60e01b9060a401613878565b600160a21b8416156104ac576040516001600160a01b03808516602483015283166044820152606481018290526104ac90859063505d903360e01b90608401613878565b600160a31b851615613900576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526139009086906360bed5f360e01b9060a401613878565b600160a41b861615613a4e57613a4e86630d4abdb360e01b87878787876040516024016138789594939291906143c9565b505050505050565b600160a51b861615613a4e57613a4e86637a51a4c660e01b87878787876040516024016138789594939291906143c9565b600160a61b881615613abc57613abc8863ea9db9d360e01b898989898989896040516024016138789796959493929190614408565b5050505050505050565b600160a71b881615613abc57613abc8863fdc2725760e01b898989898989896040516024016138789796959493929190614408565b600160a81b881615613abc57613abc886379c8ccf760e01b898989898989896040516024016138789796959493929190614408565b600160a91b881615613abc57613abc886367ddb27860e01b898989898989896040516024016138789796959493929190614408565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613b99573d6000803e3d6000fd5b8060005160e01c14601f3d11168316925050816104ac57604051636c93cb9b60e01b815260040160405180910390fd5b610c47806144d683390190565b610aff8061511d83390190565b6020808252825182820181905260009190848201906040850190845b81811015613c245783516001600160a01b031683529284019291840191600101613bff565b50909695505050505050565b60005b83811015613c4b578181015183820152602001613c33565b50506000910152565b60008151808452613c6c816020860160208601613c30565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015613d3057603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015613d1a57605f19898503018352613d08848651613c54565b948e01949350918d0191600101613cec565b505050978a019794505091880191600101613ca7565b50919a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715613d7a57613d7a613d40565b60405290565b80356001600160a01b03811681146136ba57600080fd5b803580151581146136ba57600080fd5b60006101608284031215613dba57600080fd5b613dc2613d56565b9050613dcd82613d80565b8152613ddb60208301613d97565b6020820152613dec60408301613d97565b6040820152613dfd60608301613d97565b6060820152613e0e60808301613d97565b6080820152613e1f60a08301613d97565b60a0820152613e3060c08301613d97565b60c0820152613e4160e08301613d97565b60e0820152610100613e54818401613d97565b90820152610120613e66838201613d97565b90820152610140613e78838201613d97565b9082015292915050565b60006101608284031215613e9557600080fd5b613e9f8383613da7565b9392505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015613f4a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015613f355783516001600160e01b0319168252928b019260019290920191908b0190613f0b565b50978a01979550505091870191600101613ece565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613fae57603f19888603018452613f9c858351613c54565b94509285019290850190600101613f80565b5092979650505050505050565b60008083601f840112613fcd57600080fd5b50813567ffffffffffffffff811115613fe557600080fd5b6020830191508360208260051b850101111561400057600080fd5b9250929050565b6000806000806000806000806101e0898b03121561402457600080fd5b61402e8a8a613da7565b975061403d6101608a01613d80565b965061018089013567ffffffffffffffff8082111561405b57600080fd5b6140678c838d01613fbb565b90985096506101a08b013591508082111561408157600080fd5b61408d8c838d01613fbb565b90965094506101c08b01359150808211156140a757600080fd5b818b0191508b601f8301126140bb57600080fd5b8135818111156140ca57600080fd5b8c60208285010111156140dc57600080fd5b6020830194508093505050509295985092959890939650565b600181811c9082168061410957607f821691505b60208210810361412957634e487b7160e01b600052602260045260246000fd5b50919050565b602081526000613e9f6020830184613c54565b82815260406020820152600061415b6040830184613c54565b949350505050565b6000608082016001600160a01b03808816845260208188168186015260806040860152829150865180845260a086019250818801935060005b818110156141b85784518452938201939282019260010161419c565b5050506060939093019390935250949350505050565b600081518084526020808501945080840160005b838110156141fe578151875295820195908201906001016141e2565b509495945050505050565b60006001600160a01b038088168352808716602084015280861660408401525060a0606083015261423d60a08301856141ce565b828103608084015261424f81856141ce565b98975050505050505050565b60006001820161427b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561429457600080fd5b5051919050565b6000602082840312156142ad57600080fd5b815167ffffffffffffffff808211156142c557600080fd5b818401915084601f8301126142d957600080fd5b8151818111156142eb576142eb613d40565b604051601f8201601f19908116603f0116810190838211818310171561431357614313613d40565b8160405282815287602084870101111561432c57600080fd5b61433d836020830160208801613c30565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156143b057600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038088168352808716602084015250608060408301526143f660808301858761437e565b90508260608301529695505050505050565b60006001600160a01b03808a168352808916602084015280881660408401525060a0606083015261443d60a08301868861437e565b828103608084015261445081858761437e565b9a9950505050505050505050565b60006001600160a01b0380861683528085166020840152506060604083015261448a6060830184613c54565b95945050505050565b8315158152821515602082015260606040820152600061448a6060830184613c54565b83815282602082015260606040820152600061448a6060830184613c5456fe608060405234801561001057600080fd5b50610c27806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806379c8ccf7116100b2578063c2fb5a6411610081578063ea9db9d311610066578063ea9db9d3146102c3578063fdc27257146102d6578063feee3735146102e957600080fd5b8063c2fb5a64146102b3578063d826f88f146102bb57600080fd5b806379c8ccf7146102305780637a51a4c6146102435780638187f51614610256578063a8aa1b31146102a057600080fd5b806353e8079b116101095780635f9c01b1116100ee5780635f9c01b1146101ea57806360bed5f31461020a57806367ddb2781461021d57600080fd5b806353e8079b146101c2578063571eed37146101d557600080fd5b806309fa1f901461013b5780630d4abdb3146101585780634e430b5a1461019c578063505d9033146101af575b600080fd5b6101436102fc565b60405190151581526020015b60405180910390f35b61016b6101663660046107b6565b61030b565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014f565b61016b6101aa36600461081f565b610334565b61016b6101bd36600461089b565b61037e565b61016b6101d03660046108d7565b6103a3565b6101dd6103ca565b60405161014f9190610929565b6101f2610458565b6040516001600160a01b03909116815260200161014f565b61016b610218366004610977565b61046c565b61016b61022b3660046109b9565b610493565b61016b61023e3660046109b9565b6104c0565b61016b6102513660046107b6565b6104ed565b61029e610264366004610a5b565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b005b6002546101f2906001600160a01b031681565b6101dd610516565b61029e610523565b61016b6102d13660046109b9565b61053c565b61016b6102e43660046109b9565b610569565b61016b6102f73660046108d7565b610596565b60006103066105bd565b905090565b600061031561064a565b610322868686868661067b565b50630d4abdb360e01b95945050505050565b600061033e61064a565b6103466105bd565b61036357604051632def67a360e21b815260040160405180910390fd5b61036e848484610690565b5063272185ad60e11b9392505050565b600061038861064a565b610393848484610690565b5063505d903360e01b9392505050565b60006103ad61064a565b6103b9858585856106a3565b506353e8079b60e01b949350505050565b600080546103d790610a7d565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610a7d565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505081565b60006103066002546001600160a01b031690565b600061047661064a565b610482858585856106a3565b506360bed5f360e01b949350505050565b600061049d61064a565b6104ac888888888888886106b8565b50630cfbb64f60e31b979650505050505050565b60006104ca61064a565b6104d9888888888888886106d0565b506379c8ccf760e01b979650505050505050565b60006104f761064a565b61050486868686866106dd565b50633d28d26360e11b95945050505050565b600180546103d790610a7d565b61052e6000806106f8565b61053a600160006106f8565b565b600061054661064a565b610555888888888888886106d0565b5063ea9db9d360e01b979650505050505050565b600061057361064a565b610582888888888888886106b8565b5063fdc2725760e01b979650505050505050565b60006105a061064a565b6105ac858585856106eb565b5063feee373560e01b949350505050565b6000806106396105d56002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106369190610ab7565b90565b6001600160a01b0316301492915050565b6002546001600160a01b0316331461053a57604051634a27038360e01b815233600482015260240160405180910390fd5b6000610688368280610b31565b505050505050565b600061069d368280610b31565b50505050565b60016106b136600083610b31565b5050505050565b60016106c636600083610b31565b5050505050505050565b60006106c6368280610b31565b600161068836600083610b31565b60006106b1368280610b31565b50805461070490610a7d565b6000825580601f10610714575050565b601f0160209004906000526020600020908101906107329190610735565b50565b5b8082111561074a5760008155600101610736565b5090565b80356001600160a01b038116811461076557600080fd5b919050565b60008083601f84011261077c57600080fd5b50813567ffffffffffffffff81111561079457600080fd5b6020830191508360208260051b85010111156107af57600080fd5b9250929050565b6000806000806000608086880312156107ce57600080fd5b6107d78661074e565b94506107e56020870161074e565b9350604086013567ffffffffffffffff81111561080157600080fd5b61080d8882890161076a565b96999598509660600135949350505050565b60008060006040848603121561083457600080fd5b83359250602084013567ffffffffffffffff8082111561085357600080fd5b818601915086601f83011261086757600080fd5b81358181111561087657600080fd5b87602082850101111561088857600080fd5b6020830194508093505050509250925092565b6000806000606084860312156108b057600080fd5b6108b98461074e565b92506108c76020850161074e565b9150604084013590509250925092565b600080600080608085870312156108ed57600080fd5b6108f68561074e565b93506109046020860161074e565b92506040850135801515811461091957600080fd5b9396929550929360600135925050565b600060208083528351808285015260005b818110156109565785810183015185820160400152820161093a565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806080858703121561098d57600080fd5b6109968561074e565b93506109a46020860161074e565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156109d457600080fd5b6109dd8861074e565b96506109eb6020890161074e565b95506109f96040890161074e565b9450606088013567ffffffffffffffff80821115610a1657600080fd5b610a228b838c0161076a565b909650945060808a0135915080821115610a3b57600080fd5b50610a488a828b0161076a565b989b979a50959850939692959293505050565b600060208284031215610a6d57600080fd5b610a768261074e565b9392505050565b600181811c90821680610a9157607f821691505b602082108103610ab157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ac957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b601f821115610b2c57600081815260208120601f850160051c81016020861015610b0d5750805b601f850160051c820191505b8181101561068857828155600101610b19565b505050565b67ffffffffffffffff831115610b4957610b49610ad0565b610b5d83610b578354610a7d565b83610ae6565b6000601f841160018114610b915760008515610b795750838201355b600019600387901b1c1916600186901b1783556106b1565b600083815260209020601f19861690835b82811015610bc25786850135825560209485019460019092019101610ba2565b5086821015610bdf5760001960f88860031b161c19848701351681555b505060018560011b018355505050505056fea2646970667358221220807d152e5200b82d0890813e63c91c3287e3ec0bf9488b9534bdc624330825a064736f6c63430008140033608060405234801561001057600080fd5b50610adf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806367ddb2781161008c578063ea9db9d311610066578063ea9db9d314610191578063ed40c65f146101a4578063fdc27257146101bf578063feee3735146101d257600080fd5b806367ddb2781461015857806379c8ccf71461016b5780637a51a4c61461017e57600080fd5b8063505d9033116100bd578063505d90331461011f57806353e8079b1461013257806360bed5f31461014557600080fd5b80630d4abdb3146100e457806326aded79146100f95780634e430b5a1461010c575b600080fd5b6100f76100f2366004610723565b6101e5565b005b6100f761010736600461078c565b600055565b6100f761011a3660046107a5565b6101fc565b6100f761012d366004610821565b61020e565b6100f761014036600461085d565b61021c565b6100f76101533660046108af565b610231565b6100f76101663660046108f1565b610240565b6100f76101793660046108f1565b61025c565b6100f761018c366004610723565b61026e565b6100f761019f3660046108f1565b61027e565b6101ad60005481565b60405190815260200160405180910390f35b6100f76101cd3660046108f1565b610290565b6100f76101e036600461085d565b6102a2565b6101f560005486868686866102b1565b5050505050565b610209600054838361035f565b505050565b610209600054848484610386565b61022b600054858585856103db565b50505050565b61022b60005485858585610438565b6102536000548888600088888888610494565b50505050505050565b610253600054888888888888886104e5565b6101f5600054868686868661052c565b6102536000548888888888888861056e565b610253600054888888888888886105b4565b61022b600054858585856105fa565b741000000000000000000000000000000000000000008616156103575761035786630d4abdb360e01b87878787876040516024016102f39594939291906109de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610657565b505050505050565b82156102095761020983634e430b5a60e01b8585856040516024016102f393929190610a1d565b7404000000000000000000000000000000000000000084161561022b576040516001600160a01b038085166024830152831660448201526064810182905261022b90859063505d903360e01b906084016102f3565b740200000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f59086906353e8079b60e01b9060a4016102f3565b740800000000000000000000000000000000000000008516156101f5576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526101f59086906360bed5f360e01b9060a4016102f3565b75020000000000000000000000000000000000000000008816156104db576104db886367ddb27860e01b898989898989896040516024016102f39796959493929190610a53565b5050505050505050565b75010000000000000000000000000000000000000000008816156104db576104db886379c8ccf760e01b898989898989896040516024016102f39796959493929190610a53565b742000000000000000000000000000000000000000008616156103575761035786637a51a4c660e01b87878787876040516024016102f39594939291906109de565b744000000000000000000000000000000000000000008816156104db576104db8863ea9db9d360e01b898989898989896040516024016102f39796959493929190610a53565b748000000000000000000000000000000000000000008816156104db576104db8863fdc2725760e01b898989898989896040516024016102f39796959493929190610a53565b740100000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f590869063feee373560e01b9060a4016102f3565b600080839050602083015160e01c602060008551602087016000865af192503d15158315161561068b573d6000803e3d6000fd5b8060005160e01c14601f3d111683169250508161022b57604051636c93cb9b60e01b815260040160405180910390fd5b80356001600160a01b03811681146106d257600080fd5b919050565b60008083601f8401126106e957600080fd5b50813567ffffffffffffffff81111561070157600080fd5b6020830191508360208260051b850101111561071c57600080fd5b9250929050565b60008060008060006080868803121561073b57600080fd5b610744866106bb565b9450610752602087016106bb565b9350604086013567ffffffffffffffff81111561076e57600080fd5b61077a888289016106d7565b96999598509660600135949350505050565b60006020828403121561079e57600080fd5b5035919050565b6000806000604084860312156107ba57600080fd5b83359250602084013567ffffffffffffffff808211156107d957600080fd5b818601915086601f8301126107ed57600080fd5b8135818111156107fc57600080fd5b87602082850101111561080e57600080fd5b6020830194508093505050509250925092565b60008060006060848603121561083657600080fd5b61083f846106bb565b925061084d602085016106bb565b9150604084013590509250925092565b6000806000806080858703121561087357600080fd5b61087c856106bb565b935061088a602086016106bb565b92506040850135801515811461089f57600080fd5b9396929550929360600135925050565b600080600080608085870312156108c557600080fd5b6108ce856106bb565b93506108dc602086016106bb565b93969395505050506040820135916060013590565b600080600080600080600060a0888a03121561090c57600080fd5b610915886106bb565b9650610923602089016106bb565b9550610931604089016106bb565b9450606088013567ffffffffffffffff8082111561094e57600080fd5b61095a8b838c016106d7565b909650945060808a013591508082111561097357600080fd5b506109808a828b016106d7565b989b979a50959850939692959293505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156109c557600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b03808816835280871660208401525060806040830152610a0b608083018587610993565b90508260608301529695505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152610a8860a083018688610993565b8281036080840152610a9b818587610993565b9a995050505050505050505056fea2646970667358221220b71be0ffae8a52749dbc264c07a8d2e0e53e010b1d711c0dbf1f1aa4a849ddb464736f6c63430008140033a264697066735822122011f9283430f42757c79d7474fd8892cbccd932ca0c44f71c641650119857e01b64736f6c63430008140033","sourceMap":"201:12138:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12018:12;;12034:1;12018:17;12014:31;;12037:8;;;12014:31;12059:12;;12075:1;12059:17;12055:149;;12129:18;12126:1;12119:29;12175:4;12126:1;12165:15;12055:149;12217:12;;12233:1;12217:17;12213:52;;12236:29;;-1:-1:-1;;;12236:29:85;;216:2:127;12236:29:85;;;198:21:127;255:2;235:18;;;228:30;294:21;274:18;;;267:49;333:18;;12236:29:85;;;;;;;12213:52;12279:12;;12295:1;12279:17;12275:55;;12305:25;;-1:-1:-1;;;12305:25:85;;;;;;;;;;;12275:55;201:12138;327:34;;;;;-1:-1:-1;;;;;327:34:85;;;;;;-1:-1:-1;;;;;551:55:127;;;533:74;;521:2;506:18;327:34:85;;;;;;;;397:208;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;611:2653:85:-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;11875:103:85:-;11956:15;;11875:103;;7321:25:127;;;7309:2;7294:18;11875:103:85;7175:177:127;2592:140:5;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;9299:2570:85:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;8330:14:127;;8323:22;8305:41;;8293:2;8278:18;1243:204:1;8165:187:127;299:22:85;;;;;-1:-1:-1;;;;;299:22:85;;;3270:6023;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;397:208:85:-;439:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;431:5:85;:23;;-1:-1:-1;;;;;;431:23:85;-1:-1:-1;;;;;431:23:85;;;;;;;;;;478:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;464:11:85;:35;;-1:-1:-1;;;;;;464:35:85;-1:-1:-1;;;;;464:35:85;;;;;;527:5;;510:33;;;-1:-1:-1;;;510:33:85;;527:5;;;;510:33;;;10623:74:127;10713:18;;;10706:30;;;;10772:1;10752:18;;;10745:29;10810:7;10790:18;;;10783:35;510:8:85;;;;10835:19:127;;510:33:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;570:11:85;;553:45;;;-1:-1:-1;;;553:45:85;;-1:-1:-1;;;;;570:11:85;;;553:45;;;11077:74:127;11167:18;;;11160:30;11226:2;11206:18;;;11199:30;11265:13;11245:18;;;11238:41;553:8:85;;-1:-1:-1;553:8:85;;-1:-1:-1;11296:19:127;;553:45:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;397:208::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;611:2653:85:-;708:24;721:10;708:12;:24::i;:::-;690:15;:42;;;752:16;;743:86;;770:29;;:12;:29::i;:::-;:35;743:86;;;;;;;;;;;;;;;;;:8;:86::i;:::-;839:96;848:10;:21;;;871:29;884:15;;871:12;:29::i;:::-;:40;;;839:96;;;;;;;;;;;;;;;;;:8;:96::i;:::-;945:94;954:10;:20;;;976:29;989:15;;976:12;:29::i;:::-;:39;;;945:94;;;;;;;;;;;;;;;;;:8;:94::i;:::-;1049:106;1058:10;:26;;;1086:29;1099:15;;1086:12;:29::i;:::-;:45;;;1049:106;;;;;;;;;;;;;;;;;:8;:106::i;:::-;1165:104;1174:10;:25;;;1201:29;1214:15;;1201:12;:29::i;:::-;:44;;;1165:104;;;;;;;;;;;;;;;;;:8;:104::i;:::-;1279:96;1288:10;:21;;;1311:29;1324:15;;1311:12;:29::i;:::-;:40;;;1279:96;;;;;;;;;;;;;;;;;:8;:96::i;:::-;1385:94;1394:10;:20;;;1416:29;1429:15;;1416:12;:29::i;:::-;:39;;;1385:94;;;;;;;;;;;;;;;;;:8;:94::i;:::-;1489:96;1498:10;:21;;;1521:29;1534:15;;1521:12;:29::i;:::-;:40;;;1489:96;;;;;;;;;;;;;;;;;:8;:96::i;:::-;1595:94;1604:10;:20;;;1626:29;1639:15;;1626:12;:29::i;:::-;:39;;;1595:94;;;;;;;;;;;;;;;;;:8;:94::i;:::-;1699:169;1721:10;:34;;;1769:29;1782:15;;1769:12;:29::i;:::-;:53;;;1699:169;;;;;;;;;;;;;;;;;:8;:169::i;:::-;1878:167;1900:10;:33;;;1947:29;1960:15;;1947:12;:29::i;:::-;:52;;;1878:167;;;;;;;;;;;;;;;;;:8;:167::i;:::-;2064:16;;2097:15;;2055:83;;2064:16;2055:83;;;;;;;;;;;;;;;;;:8;:83::i;:::-;2170:15;;2148:167;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2170:54:85;;;;2148:8;:167::i;:::-;2365:21;;;;2326;;2361:66;;;-1:-1:-1;;;2388:39:85;2361:66;2441:10;:20;;;2437:64;;;-1:-1:-1;;;2463:38:85;2437:64;2515:10;:26;;;2511:77;;;-1:-1:-1;;;2543:45:85;2511:77;2602:10;:25;;;2598:75;;;-1:-1:-1;;;2629:44:85;2598:75;2687:10;:21;;;2683:66;;;-1:-1:-1;;;2710:39:85;2683:66;2763:10;:20;;;2759:64;;;-1:-1:-1;;;2785:38:85;2759:64;2837:10;:21;;;2833:66;;;-1:-1:-1;;;2860:39:85;2833:66;2913:10;:20;;;2909:64;;;-1:-1:-1;;;2935:38:85;2909:64;2987:10;:34;;;2983:83;;;-1:-1:-1;;;3023:43:85;2983:83;3080:10;:33;;;3076:81;;;-1:-1:-1;;;3115:42:85;3076:81;3168:89;3185:13;3201:31;3216:15;;4837::67;4730:130;3201:31:85;-1:-1:-1;;;;;3168:89:85;;;;;;;;;;;;;;;;;;;:8;:89::i;:::-;680:2584;611:2653;:::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9299:2570:85;9397:441;;;;;;;;9447:4;9397:441;;9482:4;9397:441;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9350:18;;9371:477;;:12;:477::i;:::-;9859:11;;:42;;-1:-1:-1;;;9859:42:85;;;;;7321:25:127;;;9350:498:85;;-1:-1:-1;;;;;;9859:11:85;;:30;;7294:18:127;;9859:42:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9917:11;9912:1951;9941:1;9934:3;:8;9912:1951;;9965:12;:18;;;9998:31;10039:1;10032:8;;;:251;;10134:3;10141:1;10134:8;:149;;10227:56;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10227:56:85;-1:-1:-1;;;10227:56:85;;;10032:251;;10134:149;10165:39;;11925:21:127;10165:39:85;;;11913:34:127;11963:12;;10165:39:85;;;;;;;;;;;;10032:251;;;10059:56;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10059:56:85;-1:-1:-1;;;10059:56:85;;;10032:251;10298:35;;-1:-1:-1;;;10298:35:85;;9998:285;;-1:-1:-1;10298:15:85;;;;:35;;9998:285;;10298:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10347:11:85;;10382:12;;;10347:11;10382:12;;;;;;;;;;-1:-1:-1;;;10347:48:85;;;-1:-1:-1;;;;;10347:11:85;;;;-1:-1:-1;10347:22:85;;-1:-1:-1;10347:48:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10410:35:85;;-1:-1:-1;;;10410:35:85;;:15;;-1:-1:-1;10410:15:85;;-1:-1:-1;10410:35:85;;10426:18;;10410:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10459:11:85;;:65;;-1:-1:-1;;;10459:65:85;;:11;:65;;;12789:34:127;;;12839:18;;;12832:43;;;12891:18;;;12884:50;;;12950:18;;;12943:34;-1:-1:-1;;;;;10459:11:85;;;;-1:-1:-1;10459:22:85;;-1:-1:-1;12700:19:127;;10459:65:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10539:35:85;;-1:-1:-1;;;10539:35:85;;:15;;-1:-1:-1;10539:15:85;;-1:-1:-1;10539:35:85;;10555:18;;10539:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10588:11:85;;:64;;-1:-1:-1;;;10588:64:85;;:11;:64;;;12789:34:127;;;12839:18;;;12832:43;;;12891:18;;;12884:50;;;12950:18;;;12943:34;-1:-1:-1;;;;;10588:11:85;;;;-1:-1:-1;10588:21:85;;-1:-1:-1;12700:19:127;;10588:64:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10667:35:85;;-1:-1:-1;;;10667:35:85;;:15;;-1:-1:-1;10667:15:85;;-1:-1:-1;10667:35:85;;10683:18;;10667:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10716:11:85;;:63;;-1:-1:-1;;;10716:63:85;;:11;:63;;;13251:34:127;;;13301:18;;;13294:43;;;13353:18;;;13346:34;-1:-1:-1;;;;;10716:11:85;;;;-1:-1:-1;10716:27:85;;-1:-1:-1;13163:18:127;;10716:63:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10794:35:85;;-1:-1:-1;;;10794:35:85;;:15;;-1:-1:-1;10794:15:85;;-1:-1:-1;10794:35:85;;10810:18;;10794:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10843:11:85;;:74;;-1:-1:-1;;;10843:74:85;;:11;:74;;;13683:34:127;;;13733:18;;;13726:43;;;13785:18;;;13778:34;;;13828:18;;;13821:34;-1:-1:-1;;;;;10843:11:85;;;;-1:-1:-1;10843:26:85;;-1:-1:-1;13594:19:127;;10843:74:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10932:35:85;;-1:-1:-1;;;10932:35:85;;:15;;-1:-1:-1;10932:15:85;;-1:-1:-1;10932:35:85;;10948:18;;10932:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10981:11:85;;11028:16;;;10981:11;11028:16;;;;;;;;;;-1:-1:-1;;;10981:76:85;;;-1:-1:-1;;;;;10981:11:85;;;;-1:-1:-1;10981:22:85;;-1:-1:-1;10981:76:85;;:11;;;:76;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11072:35:85;;-1:-1:-1;;;11072:35:85;;:15;;-1:-1:-1;11072:15:85;;-1:-1:-1;11072:35:85;;11088:18;;11072:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11121:11:85;;11167:16;;;11121:11;11167:16;;;;;;;;;;-1:-1:-1;;;11121:75:85;;;-1:-1:-1;;;;;11121:11:85;;;;-1:-1:-1;11121:21:85;;-1:-1:-1;11121:75:85;;:11;;;:75;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11211:35:85;;-1:-1:-1;;;11211:35:85;;:15;;-1:-1:-1;11211:15:85;;-1:-1:-1;11211:35:85;;11227:18;;11211:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11260:11:85;;-1:-1:-1;;;;;11260:11:85;;-1:-1:-1;11260:22:85;;-1:-1:-1;11260:11:85;;;;11319:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11319:16:85;-1:-1:-1;11337:16:85;;;11351:1;11337:16;;;;;;;;;-1:-1:-1;;;;;;11260:94:85;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11369:35:85;;-1:-1:-1;;;11369:35:85;;:15;;-1:-1:-1;11369:15:85;;-1:-1:-1;11369:35:85;;11385:18;;11369:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11418:11:85;;-1:-1:-1;;;;;11418:11:85;;-1:-1:-1;11418:21:85;;-1:-1:-1;11418:11:85;;;;11476:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11476:16:85;-1:-1:-1;11494:16:85;;;11508:1;11494:16;;;;;;;;;-1:-1:-1;;;;;;11418:93:85;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11526:35:85;;-1:-1:-1;;;11526:35:85;;:15;;-1:-1:-1;11526:15:85;;-1:-1:-1;11526:35:85;;11542:18;;11526:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11575:11:85;;-1:-1:-1;;;;;11575:11:85;;-1:-1:-1;11575:35:85;;-1:-1:-1;11575:11:85;;;;11647:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11647:16:85;-1:-1:-1;11665:16:85;;;11679:1;11665:16;;;;;;;;;-1:-1:-1;;;;;;11575:107:85;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11697:35:85;;-1:-1:-1;;;11697:35:85;;:15;;-1:-1:-1;11697:15:85;;-1:-1:-1;11697:35:85;;11713:18;;11697:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11746:11:85;;-1:-1:-1;;;;;11746:11:85;;-1:-1:-1;11746:34:85;;-1:-1:-1;11746:11:85;;;;11817:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11817:16:85;-1:-1:-1;11835:16:85;;;11849:1;11835:16;;;;;;;;;-1:-1:-1;;;;;;11746:106:85;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9951:1912;9944:5;;;;;:::i;:::-;;;;9912:1951;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;16423:74:127;;;1398:17:1;16513:18:127;;;16506:34;1428:1:1;;1377:7;;16396:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;3270:6023:85:-;3492:5;;:28;;-1:-1:-1;;;3492:28:85;;3514:4;3492:28;;;533:74:127;-1:-1:-1;;;;;3492:5:85;;;;:13;;506:18:127;;3492:28:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3531:26;3560:24;3573:10;3560:12;:24::i;:::-;3622:5;;-1:-1:-1;;;;;3622:5:85;3595:33;;3531:53;-1:-1:-1;3657:24:85;3595:10;3657:12;:24::i;:::-;3639:15;:42;3744:5;;3692:98;;-1:-1:-1;;;;;3744:5:85;-1:-1:-1;;;;;;4461:33:67;;:71;3753:15:85;;3692:98;;;;;;;;;;;;;;;;;:8;:98::i;:::-;3801:5;;;;;;;;;-1:-1:-1;;;;;3801:5:85;-1:-1:-1;;;;;3801:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3824:39;3841:15;;3858:4;;3824:16;:39::i;:::-;3906:5;;:18;;;-1:-1:-1;;;3906:18:85;;;;3874:194;;-1:-1:-1;;;;;3906:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3906:18:85;;;;;;;;;;;;:::i;:::-;3896:29;;;;;;;4002:15;;3949:75;;-1:-1:-1;;;3972:28:85;3949:75;;4019:4;;;;3949:75;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;3949:75:85;;;;;;;-1:-1:-1;;;;;3949:75:85;;;;;;;;;;;3939:86;;;;;;3874:194;;;;;;;;;;;;;;;;;:8;:194::i;:::-;4079:5;;;;;;;;;-1:-1:-1;;;;;4079:5:85;-1:-1:-1;;;;;4079:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4102:70;4119:15;;4136:7;4145;4154:5;4169:1;4161:10;;4102:16;:70::i;:::-;4187:10;:21;;;4183:366;;;4260:5;;:18;;;-1:-1:-1;;;4260:18:85;;;;4224:224;;-1:-1:-1;;;;;4260:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4260:18:85;;;;;;;;;;;;:::i;:::-;4250:29;;;;;;;4307:89;;;-1:-1:-1;;;;;12807:15:127;;4307:89:85;;;12789:34:127;;;12839:18;;;12832:43;-1:-1:-1;12891:18:127;;;12884:50;;;12950:18;;;;12943:34;;;;4307:89:85;;;;;;;;;;12700:19:127;;;;4307:89:85;;;;;;;-1:-1:-1;;;;;4307:89:85;-1:-1:-1;;;4307:89:85;;;4297:100;;;;4224:224;;;;;;;;;;;;;;;;;;;4250:29;;4297:100;4224:8;:224::i;:::-;4183:366;;;4488:5;;:18;;;-1:-1:-1;;;4488:18:85;;;;4479:59;;-1:-1:-1;;;;;4488:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4488:18:85;;;;;;;;;;;;:::i;:::-;:25;4515:1;4479:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;4559:5;;;;;;;;;-1:-1:-1;;;;;4559:5:85;-1:-1:-1;;;;;4559:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:69;4598:15;;4615:7;4624;4633:5;4648:1;4640:10;;4582:15;:69::i;:::-;4666:10;:20;;;4662:362;;;4738:5;;:17;;;-1:-1:-1;;;4738:17:85;;;;4702:222;;-1:-1:-1;;;;;4738:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4738:17:85;;;;;;;;;;;;:::i;:::-;4728:28;;;;;;;4784:88;;;-1:-1:-1;;;;;12807:15:127;;4784:88:85;;;12789:34:127;;;12839:18;;;12832:43;-1:-1:-1;12891:18:127;;;12884:50;;;12950:18;;;;12943:34;;;;4784:88:85;;;;;;;;;;12700:19:127;;;;4784:88:85;;;;;;;-1:-1:-1;;;;;4784:88:85;-1:-1:-1;;;4784:88:85;;;4774:99;;;;4702:222;;;;;;;;;;;;;;;;;;;4728:28;;4774:99;4702:8;:222::i;:::-;4662:362;;;4964:5;;:17;;;-1:-1:-1;;;4964:17:85;;;;4955:58;;-1:-1:-1;;;;;4964:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4964:17:85;;;;;;;;;;;;:::i;:::-;:24;4990:1;4955:58;;;;;;;;;;;;;;;;;:8;:58::i;:::-;5034:5;;;;;;;;;-1:-1:-1;;;;;5034:5:85;-1:-1:-1;;;;;5034:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5057:68;5079:15;;5096:7;5105;5122:1;5114:10;;5057:21;:68::i;:::-;5140:10;:26;;;5136:369;;;5218:5;;:18;;;-1:-1:-1;;;5218:18:85;;;;5182:222;;-1:-1:-1;;;;;5218:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5218:18:85;;;;;;;;;;;;:::i;:::-;5208:29;;;;;;;5265:87;;;-1:-1:-1;;;;;13269:15:127;;5265:87:85;;;13251:34:127;;;13301:18;;;13294:43;-1:-1:-1;13353:18:127;;;;13346:34;;;;5265:87:85;;;;;;;;;;13163:18:127;;;;5265:87:85;;;;;;;-1:-1:-1;;;;;5265:87:85;-1:-1:-1;;;5265:87:85;;;5255:98;;;;5182:222;;;;;;;;;;;;;;;;;;;5208:29;;5255:98;5182:8;:222::i;:::-;5136:369;;;5444:5;;:18;;;-1:-1:-1;;;5444:18:85;;;;5435:59;;-1:-1:-1;;;;;5444:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5444:18:85;;;;;;;;;;;;:::i;:::-;:25;5471:1;5435:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;5515:5;;;;;;;;;-1:-1:-1;;;;;5515:5:85;-1:-1:-1;;;;;5515:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5559:15:85;;5538:79;;-1:-1:-1;5559:15:85;-1:-1:-1;5576:7:85;;5602:1;;5538:20;:79::i;:::-;5632:10;:25;;;5628:416;;;5709:5;;:17;;;-1:-1:-1;;;5709:17:85;;;;5673:270;;-1:-1:-1;;;;;5709:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5709:17:85;;;;;;;;;;;;:::i;:::-;5699:28;;;;;;;5776:98;;;-1:-1:-1;;;;;13701:15:127;;5776:98:85;;;13683:34:127;;;13733:18;;;13726:43;-1:-1:-1;13785:18:127;;;13778:34;;;13828:18;;;;13821:34;;;;5776:98:85;;;;;;;;;;13594:19:127;;;;5776:98:85;;;;;;;-1:-1:-1;;;;;5776:98:85;-1:-1:-1;;;5776:98:85;;;5745:147;;;;5673:270;;;;;;;;;;;;;;;;;;;5699:28;;5745:147;5673:8;:270::i;:::-;5628:416;;;5983:5;;:17;;;-1:-1:-1;;;5983:17:85;;;;5974:59;;-1:-1:-1;;;;;5983:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5983:17:85;;;;;;;;;;;;:::i;:::-;:24;6009:1;5974:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;6054:5;;;;;;;;;-1:-1:-1;;;;;6054:5:85;-1:-1:-1;;;;;6054:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6077:81;6094:15;;6111:7;6120;6129:16;;6155:1;6147:10;;6077:16;:81::i;:::-;6173:10;:21;;;6169:417;;;6246:5;;:18;;;-1:-1:-1;;;6246:18:85;;;;6210:274;;-1:-1:-1;;;;;6246:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6246:18:85;;;;;;;;;;;;:::i;:::-;6236:29;;;;;;;6314:100;;-1:-1:-1;;;6337:28:85;6314:100;;6367:7;;;;6385:16;;;;6411:1;;6314:100;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;6314:100:85;;;;;;;-1:-1:-1;;;;;6314:100:85;;;;;;;;;;;6283:149;;;;;;6210:274;;;;;;;;;;;;;;;;;:8;:274::i;:::-;6169:417;;;6524:5;;:18;;;-1:-1:-1;;;6524:18:85;;;;6515:60;;-1:-1:-1;;;;;6524:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6524:18:85;;;;;;;;;;;;:::i;:::-;:25;6551:1;6515:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;6596:5;;;;;;;;;-1:-1:-1;;;;;6596:5:85;-1:-1:-1;;;;;6596:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6619:80;6635:15;;6652:7;6661;6670:16;;6696:1;6688:10;;6619:15;:80::i;:::-;6714:10;:20;;;6710:413;;;6786:5;;:17;;;-1:-1:-1;;;6786:17:85;;;;6750:272;;-1:-1:-1;;;;;6786:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6786:17:85;;;;;;;;;;;;:::i;:::-;6776:28;;;;;;;6853:99;;-1:-1:-1;;;6876:27:85;6853:99;;6905:7;;;;6923:16;;;;6949:1;;6853:99;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;6853:99:85;;;;;;;-1:-1:-1;;;;;6853:99:85;;;;;;;;;;;6822:148;;;;;;6750:272;;;;;;;;;;;;;;;;;:8;:272::i;:::-;6710:413;;;7062:5;;:17;;;-1:-1:-1;;;7062:17:85;;;;7053:59;;-1:-1:-1;;;;;7062:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7062:17:85;;;;;;;;;;;;:::i;:::-;:24;7088:1;7053:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;7133:5;;;;;;;;;-1:-1:-1;;;;;7133:5:85;-1:-1:-1;;;;;7133:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7156:70;7173:15;;7190:7;7199;7208;7217:3;;7222;;7156:16;:70::i;:::-;7241:10;:21;;;7237:368;;;7314:5;;:18;;;-1:-1:-1;;;7314:18:85;;;;7278:225;;-1:-1:-1;;;;;7314:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7314:18:85;;;;;;;;;;;;:::i;:::-;7304:29;;;;;;7384:28;;;7414:7;7423;7432;7441:3;;7446;;7361:89;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;7361:89:85;;;;;;;-1:-1:-1;;;;;7361:89:85;;;;;;;;;;;7351:100;;;;;;7278:225;;;;;;;;;;;;;;;;;:8;:225::i;:::-;7237:368;;;7543:5;;:18;;;-1:-1:-1;;;7543:18:85;;;;7534:60;;-1:-1:-1;;;;;7543:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7543:18:85;;;;;;;;;;;;:::i;:::-;:25;7570:1;7534:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;7615:5;;;;;;;;;-1:-1:-1;;;;;7615:5:85;-1:-1:-1;;;;;7615:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7638:69;7654:15;;7671:7;7680;7689;7698:3;;7703;;7638:15;:69::i;:::-;7722:10;:20;;;7718:364;;;7794:5;;:17;;;-1:-1:-1;;;7794:17:85;;;;7758:223;;-1:-1:-1;;;;;7794:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7794:17:85;;;;;;;;;;;;:::i;:::-;7784:28;;;;;;7863:27;;;7892:7;7901;7910;7919:3;;7924;;7840:88;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;7840:88:85;;;;;;;-1:-1:-1;;;;;7840:88:85;;;;;;;;;;;7830:99;;;;;;7758:223;;;;;;;;;;;;;;;;;:8;:223::i;:::-;7718:364;;;8021:5;;:17;;;-1:-1:-1;;;8021:17:85;;;;8012:59;;-1:-1:-1;;;;;8021:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8021:17:85;;;;;;;;;;;;:::i;:::-;:24;8047:1;8012:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;8092:5;;;;;;;;;-1:-1:-1;;;;;8092:5:85;-1:-1:-1;;;;;8092:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8115:83;8145:15;;8162:7;8171;8180;8189:3;;8194;;8115:29;:83::i;:::-;8213:10;:34;;;8209:478;;;8299:5;;:18;;;-1:-1:-1;;;8299:18:85;;;;8263:322;;-1:-1:-1;;;;;8299:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8299:18:85;;;;;;;;;;;;:::i;:::-;8289:29;;;;;;8415:41;;;8458:7;8467;8476;8485:3;;8490;;8367:148;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;8367:148:85;;;;;;;-1:-1:-1;;;;;8367:148:85;;;;;;;;;;;8336:197;;;;;;8263:322;;;;;;;;;;;;;;;;;:8;:322::i;:::-;8209:478;;;8625:5;;:18;;;-1:-1:-1;;;8625:18:85;;;;8616:60;;-1:-1:-1;;;;;8625:5:85;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8625:18:85;;;;;;;;;;;;:::i;:::-;:25;8652:1;8616:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;8697:5;;;;;;;;;-1:-1:-1;;;;;8697:5:85;-1:-1:-1;;;;;8697:11:85;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8720:82;8749:15;;8766:7;8775;8784;8793:3;;8798;;8720:28;:82::i;:::-;8817:10;:33;;;8813:474;;;8902:5;;:17;;;-1:-1:-1;;;8902:17:85;;;;8866:320;;-1:-1:-1;;;;;8902:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8902:17:85;;;;;;;;;;;;:::i;:::-;8892:28;;;;;;9017:40;;;9059:7;9068;9077;9086:3;;9091;;8969:147;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;8969:147:85;;;;;;;-1:-1:-1;;;;;8969:147:85;;;;;;;;;;;8938:196;;;;;;8866:320;;;;;;;;;;;;;;;;;:8;:320::i;:::-;8813:474;;;9226:5;;:17;;;-1:-1:-1;;;9226:17:85;;;;9217:59;;-1:-1:-1;;;;;9226:5:85;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9226:17:85;;;;;;;;;;;;:::i;:::-;:24;9252:1;9217:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;3482:5811;3270:6023;;;;;;;;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1610:948:67:-;1764:16;;1799:21;;;;-1:-1:-1;;;;;1740:43:67;;;;1795:62;;;-1:-1:-1;;;1822:35:67;1795:62;1871:10;:20;;;1867:60;;;-1:-1:-1;;;1893:34:67;1867:60;1941:10;:26;;;1937:73;;;-1:-1:-1;;;1969:41:67;1937:73;2024:10;:25;;;2020:71;;;-1:-1:-1;;;2051:40:67;2020:71;2105:10;:21;;;2101:62;;;-1:-1:-1;;;2128:35:67;2101:62;2177:10;:20;;;2173:60;;;-1:-1:-1;;;2199:34:67;2173:60;2247:10;:21;;;2243:62;;;-1:-1:-1;;;2270:35:67;2243:62;2319:10;:20;;;2315:60;;;-1:-1:-1;;;2341:34:67;2315:60;2389:10;:34;;;2385:79;;;-1:-1:-1;;;2425:39:67;2385:79;2478:10;:33;;;2474:77;;;-1:-1:-1;;;2513:38:67;2474:77;1610:948;;;:::o;2773:952::-;-1:-1:-1;;;;;;;;;;;;;2877:44:67;;;;-1:-1:-1;;;2957:34:67;;2956:41;;-1:-1:-1;;;2932:65:67;-1:-1:-1;;;3031:33:67;;3030:40;;-1:-1:-1;;;3007:63:67;;;;-1:-1:-1;;;3110:40:67;;3109:47;;-1:-1:-1;;;3080:76:67;-1:-1:-1;;;3195:39:67;;3194:46;;-1:-1:-1;;;3166:74:67;-1:-1:-1;;;3275:34:67;;3274:41;;-1:-1:-1;;;3250:65:67;-1:-1:-1;;;3349:33:67;;3348:40;;-1:-1:-1;;;3325:63:67;-1:-1:-1;;;3423:34:67;;3422:41;;-1:-1:-1;;;3398:65:67;-1:-1:-1;;;3497:33:67;;3496:40;;-1:-1:-1;;;3473:63:67;-1:-1:-1;;;3584:38:67;;3583:45;;-1:-1:-1;;;3546:82:67;-1:-1:-1;;;3675:37:67;;;3674:44;;-1:-1:-1;;;3638:80:67;-1:-1:-1;2773:952:67:o;3570:134:1:-;3668:29;;-1:-1:-1;;;3668:29:1;;:11;;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3570:134;;;:::o;2136:128::-;2228:29;;-1:-1:-1;;;2228:29:1;;:11;;;;:29;;2240:4;;2246:5;;2253:3;;2228:29;;;:::i;3826:134::-;3924:29;;-1:-1:-1;;;3924:29:1;;:11;;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;5138:295:67:-;5237:20;;5233:194;;5273:143;5300:15;5340:28;;;5370:15;5387:14;;5317:85;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5317:85:67;;;;;;;;;;;;;;-1:-1:-1;;;;;5317:85:67;-1:-1:-1;;;;;;5317:85:67;;;;;;;;;;5273:9;:143::i;:::-;5138:295;;;:::o;5814:359::-;-1:-1:-1;;;5957:34:67;;5956:41;5952:215;;6057:85;;-1:-1:-1;;;;;12807:15:127;;;6057:85:67;;;12789:34:127;12859:15;;12839:18;;;12832:43;12918:14;;12911:22;12891:18;;;12884:50;12950:18;;;12943:34;;;6013:143:67;;6040:15;;-1:-1:-1;;;6080:28:67;12700:19:127;;6057:85:67;12503:480:127;6013:143:67;5814:359;;;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;6554:358:67:-;-1:-1:-1;;;6697:33:67;;6696:40;6692:214;;6796:85;;-1:-1:-1;;;;;12807:15:127;;;6796:85:67;;;12789:34:127;12859:15;;12839:18;;;12832:43;12918:14;;12911:22;12891:18;;;12884:50;12950:18;;;12943:34;;;6752:143:67;;6779:15;;-1:-1:-1;;;6819:27:67;12700:19:127;;6796:85:67;12503:480:127;7250:304:67;-1:-1:-1;;;7369:40:67;;7368:47;7364:184;;7458:78;;-1:-1:-1;;;;;13269:15:127;;;7458:78:67;;;13251:34:127;13321:15;;13301:18;;;13294:43;13353:18;;;13346:34;;;7431:106:67;;7441:15;;-1:-1:-1;;;7481:33:67;13163:18:127;;7458:78:67;12988:398:127;7929:389:67;-1:-1:-1;;;8078:39:67;;8077:46;8073:239;;8199:88;;-1:-1:-1;;;;;13701:15:127;;;8199:88:67;;;13683:34:127;13753:15;;13733:18;;;13726:43;13785:18;;;13778:34;;;13828:18;;;13821:34;;;8139:162:67;;8166:15;;-1:-1:-1;;;8222:32:67;13594:19:127;;8199:88:67;13391:470:127;8715:451:67;-1:-1:-1;;;8920:34:67;;8919:41;8915:245;;8976:173;9003:15;9059:28;;;9089:6;9097:2;9101:16;;9119:15;9036:99;;;;;;;;;;;;:::i;8976:173::-;8715:451;;;;;;:::o;9549:436::-;-1:-1:-1;;;9747:33:67;;9746:40;9742:237;;9802:166;9829:15;9885:27;;;9914:6;9922:2;9926:16;;9944:9;9862:92;;;;;;;;;;;;:::i;10382:460::-;-1:-1:-1;;;10605:34:67;;10604:41;10600:236;;10661:164;10688:15;10744:28;;;10774:6;10782:4;10788:2;10792:3;;10797:13;;10721:90;;;;;;;;;;;;;;:::i;10661:164::-;10382:460;;;;;;;;:::o;11237:457::-;-1:-1:-1;;;11459:33:67;;11458:40;11454:234;;11514:163;11541:15;11597:27;;;11626:6;11634:4;11640:2;11644:3;;11649:13;;11574:89;;;;;;;;;;;;;;:::i;12105:478::-;-1:-1:-1;;;12335:38:67;;12334:45;12330:247;;12395:171;12422:15;12478:41;;;12521:6;12529:4;12535:2;12539:3;;12544:7;;12455:97;;;;;;;;;;;;;;:::i;12992:475::-;-1:-1:-1;;;13221:37:67;;13220:44;13216:245;;13280:170;13307:15;13363:40;;;13405:6;13413:4;13419:2;13423:3;;13428:7;;13340:96;;;;;;;;;;;;;;:::i;13760:685::-;13841:12;;13889:15;13864:41;;13988:4;13982;13978:15;13972:22;13967:3;13963:32;14075:4;14072:1;14065:4;14059:11;14052:4;14046;14042:15;14039:1;14032:5;14025;14020:60;14009:71;;14132:16;14125:24;14118:32;14108:7;14101:15;14097:54;14094:172;;;14191:16;14188:1;14185;14170:38;14235:16;14232:1;14225:27;14094:172;14359:16;14354:1;14348:8;14343:3;14339:18;14336:40;14329:4;14311:16;14308:26;14304:73;14295:7;14291:87;14280:98;;;14403:7;14398:40;;14419:19;;-1:-1:-1;;;14419:19:67;;;;;;;;;;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;618:681:127:-;789:2;841:21;;;911:13;;814:18;;;933:22;;;760:4;;789:2;1012:15;;;;986:2;971:18;;;760:4;1055:218;1069:6;1066:1;1063:13;1055:218;;;1134:13;;-1:-1:-1;;;;;1130:62:127;1118:75;;1248:15;;;;1213:12;;;;1091:1;1084:9;1055:218;;;-1:-1:-1;1290:3:127;;618:681;-1:-1:-1;;;;;;618:681:127:o;1304:250::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1489:11;;;1483:18;1470:11;;;1463:39;1435:2;1428:10;1399:113;;;-1:-1:-1;;1546:1:127;1528:16;;1521:27;1304:250::o;1559:271::-;1601:3;1639:5;1633:12;1666:6;1661:3;1654:19;1682:76;1751:6;1744:4;1739:3;1735:14;1728:4;1721:5;1717:16;1682:76;:::i;:::-;1812:2;1791:15;-1:-1:-1;;1787:29:127;1778:39;;;;1819:4;1774:50;;1559:271;-1:-1:-1;;1559:271:127:o;1835:1765::-;2068:2;2120:21;;;2190:13;;2093:18;;;2212:22;;;2039:4;;2068:2;2253;;2271:18;;;;2308:1;2351:15;;;2336:31;;2332:40;;2395:15;;;2039:4;;2459:1112;2475:6;2470:3;2467:15;2459:1112;;;-1:-1:-1;;2544:22:127;;;2540:36;2528:49;;2600:13;;2687:9;;-1:-1:-1;;;;;2683:58:127;2668:74;;2781:11;;2775:18;2813:15;;;2806:27;;;2894:19;;2640:15;;;2926:24;;;3107:21;;;;2973:2;3055:17;;;3043:30;;3039:39;;;2997:15;;;;3152:1;3166:296;3182:8;3177:3;3174:17;3166:296;;;3288:2;3284:7;3275:6;3267;3263:19;3259:33;3252:5;3245:48;3320:42;3355:6;3344:8;3338:15;3320:42;:::i;:::-;3391:17;;;;3310:52;-1:-1:-1;3434:14:127;;;;3210:1;3201:11;3166:296;;;-1:-1:-1;;;3549:12:127;;;;3485:6;-1:-1:-1;;3514:15:127;;;;2501:1;2492:11;2459:1112;;;-1:-1:-1;3588:6:127;;1835:1765;-1:-1:-1;;;;;;;;;;1835:1765:127:o;3605:127::-;3666:10;3661:3;3657:20;3654:1;3647:31;3697:4;3694:1;3687:15;3721:4;3718:1;3711:15;3737:250;3804:2;3798:9;3846:6;3834:19;;3883:18;3868:34;;3904:22;;;3865:62;3862:88;;;3930:18;;:::i;:::-;3966:2;3959:22;3737:250;:::o;3992:196::-;4060:20;;-1:-1:-1;;;;;4109:54:127;;4099:65;;4089:93;;4178:1;4175;4168:12;4193:160;4258:20;;4314:13;;4307:21;4297:32;;4287:60;;4343:1;4340;4333:12;4358:977;4415:5;4463:6;4451:9;4446:3;4442:19;4438:32;4435:52;;;4483:1;4480;4473:12;4435:52;4505:17;;:::i;:::-;4496:26;;4545:29;4564:9;4545:29;:::i;:::-;4538:5;4531:44;4607:35;4638:2;4627:9;4623:18;4607:35;:::i;:::-;4602:2;4595:5;4591:14;4584:59;4675:35;4706:2;4695:9;4691:18;4675:35;:::i;:::-;4670:2;4663:5;4659:14;4652:59;4743:35;4774:2;4763:9;4759:18;4743:35;:::i;:::-;4738:2;4731:5;4727:14;4720:59;4812:36;4843:3;4832:9;4828:19;4812:36;:::i;:::-;4806:3;4799:5;4795:15;4788:61;4882:36;4913:3;4902:9;4898:19;4882:36;:::i;:::-;4876:3;4869:5;4865:15;4858:61;4952:36;4983:3;4972:9;4968:19;4952:36;:::i;:::-;4946:3;4939:5;4935:15;4928:61;5022:36;5053:3;5042:9;5038:19;5022:36;:::i;:::-;5016:3;5009:5;5005:15;4998:61;5078:3;5113:35;5144:2;5133:9;5129:18;5113:35;:::i;:::-;5097:14;;;5090:59;5168:3;5203:35;5219:18;;;5203:35;:::i;:::-;5187:14;;;5180:59;5258:3;5293:35;5309:18;;;5293:35;:::i;:::-;5277:14;;;5270:59;5281:5;4358:977;-1:-1:-1;;4358:977:127:o;5340:235::-;5428:6;5481:3;5469:9;5460:7;5456:23;5452:33;5449:53;;;5498:1;5495;5488:12;5449:53;5521:48;5561:7;5550:9;5521:48;:::i;:::-;5511:58;5340:235;-1:-1:-1;;;5340:235:127:o;5580:1590::-;5782:4;5811:2;5851;5840:9;5836:18;5881:2;5870:9;5863:21;5904:6;5939;5933:13;5970:6;5962;5955:22;5996:2;5986:12;;6029:2;6018:9;6014:18;6007:25;;6091:2;6081:6;6078:1;6074:14;6063:9;6059:30;6055:39;6129:2;6121:6;6117:15;6150:1;6171;6181:960;6197:6;6192:3;6189:15;6181:960;;;6266:22;;;-1:-1:-1;;6262:36:127;6250:49;;6322:13;;6409:9;;-1:-1:-1;;;;;6405:58:127;6390:74;;6503:11;;6497:18;6535:15;;;6528:27;;;6616:19;;6362:15;;;6648:24;;;6738:21;;;;6783:1;;6706:2;6694:15;;;6797:236;6813:8;6808:3;6805:17;6797:236;;;6894:15;;-1:-1:-1;;;;;;6890:42:127;6876:57;;7002:17;;;;6841:1;6832:11;;;;;6959:14;;;;6797:236;;;-1:-1:-1;7119:12:127;;;;7056:5;-1:-1:-1;;;7084:15:127;;;;6223:1;6214:11;6181:960;;;-1:-1:-1;7158:6:127;;5580:1590;-1:-1:-1;;;;;;;;;5580:1590:127:o;7357:803::-;7519:4;7548:2;7588;7577:9;7573:18;7618:2;7607:9;7600:21;7641:6;7676;7670:13;7707:6;7699;7692:22;7745:2;7734:9;7730:18;7723:25;;7807:2;7797:6;7794:1;7790:14;7779:9;7775:30;7771:39;7757:53;;7845:2;7837:6;7833:15;7866:1;7876:255;7890:6;7887:1;7884:13;7876:255;;;7983:2;7979:7;7967:9;7959:6;7955:22;7951:36;7946:3;7939:49;8011:40;8044:6;8035;8029:13;8011:40;:::i;:::-;8001:50;-1:-1:-1;8109:12:127;;;;8074:15;;;;7912:1;7905:9;7876:255;;;-1:-1:-1;8148:6:127;;7357:803;-1:-1:-1;;;;;;;7357:803:127:o;8608:367::-;8671:8;8681:6;8735:3;8728:4;8720:6;8716:17;8712:27;8702:55;;8753:1;8750;8743:12;8702:55;-1:-1:-1;8776:20:127;;8819:18;8808:30;;8805:50;;;8851:1;8848;8841:12;8805:50;8888:4;8880:6;8876:17;8864:29;;8948:3;8941:4;8931:6;8928:1;8924:14;8916:6;8912:27;8908:38;8905:47;8902:67;;;8965:1;8962;8955:12;8902:67;8608:367;;;;;:::o;8980:1426::-;9169:6;9177;9185;9193;9201;9209;9217;9225;9278:3;9266:9;9257:7;9253:23;9249:33;9246:53;;;9295:1;9292;9285:12;9246:53;9318:48;9358:7;9347:9;9318:48;:::i;:::-;9308:58;;9385:39;9419:3;9408:9;9404:19;9385:39;:::i;:::-;9375:49;;9475:3;9464:9;9460:19;9447:33;9499:18;9540:2;9532:6;9529:14;9526:34;;;9556:1;9553;9546:12;9526:34;9595:70;9657:7;9648:6;9637:9;9633:22;9595:70;:::i;:::-;9684:8;;-1:-1:-1;9569:96:127;-1:-1:-1;9772:3:127;9757:19;;9744:33;;-1:-1:-1;9789:16:127;;;9786:36;;;9818:1;9815;9808:12;9786:36;9857:72;9921:7;9910:8;9899:9;9895:24;9857:72;:::i;:::-;9948:8;;-1:-1:-1;9831:98:127;-1:-1:-1;10036:3:127;10021:19;;10008:33;;-1:-1:-1;10053:16:127;;;10050:36;;;10082:1;10079;10072:12;10050:36;10120:8;10109:9;10105:24;10095:34;;10167:7;10160:4;10156:2;10152:13;10148:27;10138:55;;10189:1;10186;10179:12;10138:55;10229:2;10216:16;10255:2;10247:6;10244:14;10241:34;;;10271:1;10268;10261:12;10241:34;10318:7;10311:4;10302:6;10298:2;10294:15;10290:26;10287:39;10284:59;;;10339:1;10336;10329:12;10284:59;10370:4;10366:2;10362:13;10352:23;;10394:6;10384:16;;;;;8980:1426;;;;;;;;;;;:::o;11326:380::-;11405:1;11401:12;;;;11448;;;11469:61;;11523:4;11515:6;11511:17;11501:27;;11469:61;11576:2;11568:6;11565:14;11545:18;11542:38;11539:161;;11622:10;11617:3;11613:20;11610:1;11603:31;11657:4;11654:1;11647:15;11685:4;11682:1;11675:15;11539:161;;11326:380;;;:::o;11986:218::-;12133:2;12122:9;12115:21;12096:4;12153:45;12194:2;12183:9;12179:18;12171:6;12153:45;:::i;12209:289::-;12384:6;12373:9;12366:25;12427:2;12422;12411:9;12407:18;12400:30;12347:4;12447:45;12488:2;12477:9;12473:18;12465:6;12447:45;:::i;:::-;12439:53;12209:289;-1:-1:-1;;;;12209:289:127:o;13866:927::-;14092:4;14140:3;14129:9;14125:19;-1:-1:-1;;;;;14244:2:127;14236:6;14232:15;14221:9;14214:34;14267:2;14317;14309:6;14305:15;14300:2;14289:9;14285:18;14278:43;14357:3;14352:2;14341:9;14337:18;14330:31;14381:6;14370:17;;14416:6;14410:13;14447:6;14439;14432:22;14485:3;14474:9;14470:19;14463:26;;14524:2;14516:6;14512:15;14498:29;;14545:1;14555:169;14569:6;14566:1;14563:13;14555:169;;;14630:13;;14618:26;;14699:15;;;;14664:12;;;;14591:1;14584:9;14555:169;;;-1:-1:-1;;;14775:2:127;14760:18;;;;14753:34;;;;-1:-1:-1;14741:3:127;13866:927;-1:-1:-1;;;;13866:927:127:o;14798:435::-;14851:3;14889:5;14883:12;14916:6;14911:3;14904:19;14942:4;14971:2;14966:3;14962:12;14955:19;;15008:2;15001:5;14997:14;15029:1;15039:169;15053:6;15050:1;15047:13;15039:169;;;15114:13;;15102:26;;15148:12;;;;15183:15;;;;15075:1;15068:9;15039:169;;;-1:-1:-1;15224:3:127;;14798:435;-1:-1:-1;;;;;14798:435:127:o;15238:769::-;15542:4;-1:-1:-1;;;;;15652:2:127;15644:6;15640:15;15629:9;15622:34;15704:2;15696:6;15692:15;15687:2;15676:9;15672:18;15665:43;15756:2;15748:6;15744:15;15739:2;15728:9;15724:18;15717:43;;15796:3;15791:2;15780:9;15776:18;15769:31;15823:57;15875:3;15864:9;15860:19;15852:6;15823:57;:::i;:::-;15929:9;15921:6;15917:22;15911:3;15900:9;15896:19;15889:51;15957:44;15994:6;15986;15957:44;:::i;:::-;15949:52;15238:769;-1:-1:-1;;;;;;;;15238:769:127:o;16012:232::-;16051:3;16072:17;;;16069:140;;16131:10;16126:3;16122:20;16119:1;16112:31;16166:4;16163:1;16156:15;16194:4;16191:1;16184:15;16069:140;-1:-1:-1;16236:1:127;16225:13;;16012:232::o;16551:184::-;16621:6;16674:2;16662:9;16653:7;16649:23;16645:32;16642:52;;;16690:1;16687;16680:12;16642:52;-1:-1:-1;16713:16:127;;16551:184;-1:-1:-1;16551:184:127:o;16971:896::-;17050:6;17103:2;17091:9;17082:7;17078:23;17074:32;17071:52;;;17119:1;17116;17109:12;17071:52;17152:9;17146:16;17181:18;17222:2;17214:6;17211:14;17208:34;;;17238:1;17235;17228:12;17208:34;17276:6;17265:9;17261:22;17251:32;;17321:7;17314:4;17310:2;17306:13;17302:27;17292:55;;17343:1;17340;17333:12;17292:55;17372:2;17366:9;17394:2;17390;17387:10;17384:36;;;17400:18;;:::i;:::-;17475:2;17469:9;17443:2;17529:13;;-1:-1:-1;;17525:22:127;;;17549:2;17521:31;17517:40;17505:53;;;17573:18;;;17593:22;;;17570:46;17567:72;;;17619:18;;:::i;:::-;17659:10;17655:2;17648:22;17694:2;17686:6;17679:18;17734:7;17729:2;17724;17720;17716:11;17712:20;17709:33;17706:53;;;17755:1;17752;17745:12;17706:53;17768:68;17833:2;17828;17820:6;17816:15;17811:2;17807;17803:11;17768:68;:::i;:::-;17855:6;16971:896;-1:-1:-1;;;;;;;16971:896:127:o;17872:459::-;18057:6;18046:9;18039:25;18100:2;18095;18084:9;18080:18;18073:30;18139:6;18134:2;18123:9;18119:18;18112:34;18196:6;18188;18183:2;18172:9;18168:18;18155:48;18252:1;18223:22;;;18247:2;18219:31;;;18212:42;;;;18315:2;18294:15;;;-1:-1:-1;;18290:29:127;18275:45;18271:54;;17872:459;-1:-1:-1;;17872:459:127:o;18336:358::-;18436:6;18431:3;18424:19;18406:3;18466:66;18458:6;18455:78;18452:98;;;18546:1;18543;18536:12;18452:98;18582:6;18579:1;18575:14;18634:8;18627:5;18620:4;18615:3;18611:14;18598:45;18663:18;;;;18683:4;18659:29;;18336:358;-1:-1:-1;;;18336:358:127:o;18699:582::-;18935:4;-1:-1:-1;;;;;19045:2:127;19037:6;19033:15;19022:9;19015:34;19097:2;19089:6;19085:15;19080:2;19069:9;19065:18;19058:43;;19137:3;19132:2;19121:9;19117:18;19110:31;19158:74;19227:3;19216:9;19212:19;19204:6;19196;19158:74;:::i;:::-;19150:82;;19268:6;19263:2;19252:9;19248:18;19241:34;18699:582;;;;;;;;:::o;19286:823::-;19610:4;-1:-1:-1;;;;;19720:2:127;19712:6;19708:15;19697:9;19690:34;19772:2;19764:6;19760:15;19755:2;19744:9;19740:18;19733:43;19824:2;19816:6;19812:15;19807:2;19796:9;19792:18;19785:43;;19864:3;19859:2;19848:9;19844:18;19837:31;19891:74;19960:3;19949:9;19945:19;19937:6;19929;19891:74;:::i;:::-;20014:9;20006:6;20002:22;19996:3;19985:9;19981:19;19974:51;20042:61;20096:6;20088;20080;20042:61;:::i;:::-;20034:69;19286:823;-1:-1:-1;;;;;;;;;;19286:823:127:o;20114:441::-;20282:4;-1:-1:-1;;;;;20392:2:127;20384:6;20380:15;20369:9;20362:34;20444:2;20436:6;20432:15;20427:2;20416:9;20412:18;20405:43;;20484:2;20479;20468:9;20464:18;20457:30;20504:45;20545:2;20534:9;20530:18;20522:6;20504:45;:::i;:::-;20496:53;20114:441;-1:-1:-1;;;;;20114:441:127:o;20560:382::-;20767:6;20760:14;20753:22;20742:9;20735:41;20826:6;20819:14;20812:22;20807:2;20796:9;20792:18;20785:50;20871:2;20866;20855:9;20851:18;20844:30;20716:4;20891:45;20932:2;20921:9;20917:18;20909:6;20891:45;:::i;20947:362::-;21152:6;21141:9;21134:25;21195:6;21190:2;21179:9;21175:18;21168:34;21238:2;21233;21222:9;21218:18;21211:30;21115:4;21258:45;21299:2;21288:9;21284:18;21276:6;21258:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getLBHooksParameters()":"781a8915","hooks()":"cd7033c4","hooksCaller()":"08acf940","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_CallHooks((address,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool),address,bytes32[],uint256[],bytes)":"d899e558","test_EncodeHooks((address,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool))":"2f09b962","test_Revert_CallFailed()":"b8aa36c7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"HooksTest__CustomRevert\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Hooks__CallFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBHooksParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hooks\",\"outputs\":[{\"internalType\":\"contract MockHooks\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hooksCaller\",\"outputs\":[{\"internalType\":\"contract MockHooksCaller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"hooks\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"beforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeFlashLoan\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterFlashLoan\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeMint\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterMint\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeBatchTransferFrom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterBatchTransferFrom\",\"type\":\"bool\"}],\"internalType\":\"struct Hooks.Parameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"test_CallHooks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"hooks\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"beforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeFlashLoan\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterFlashLoan\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeMint\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterMint\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"beforeBatchTransferFrom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"afterBatchTransferFrom\",\"type\":\"bool\"}],\"internalType\":\"struct Hooks.Parameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"test_EncodeHooks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Revert_CallFailed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Hooks.t.sol\":\"HooksTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/LBBaseHooks.sol\":{\"keccak256\":\"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1\",\"dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"test/Hooks.t.sol\":{\"keccak256\":\"0xd1ec9ffb5db2eb70dd5caf0a2c4013235409ff62fa7f5234b419077ca892413a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d6b7c69d6b694840efb5b6baf4dac3b1f21ce23163c02d7d480bcd41c46c414\",\"dweb:/ipfs/QmPHY7E1Lo9N55txnELdMc68h9ErVNB7K1s85t4fRPEnG1\"]},\"test/mocks/MockHooks.sol\":{\"keccak256\":\"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0\",\"dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"HooksTest__CustomRevert"},{"inputs":[],"type":"error","name":"Hooks__CallFailed"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBHooksParameters","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hooks","outputs":[{"internalType":"contract MockHooks","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hooksCaller","outputs":[{"internalType":"contract MockHooksCaller","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"struct Hooks.Parameters","name":"parameters","type":"tuple","components":[{"internalType":"address","name":"hooks","type":"address"},{"internalType":"bool","name":"beforeSwap","type":"bool"},{"internalType":"bool","name":"afterSwap","type":"bool"},{"internalType":"bool","name":"beforeFlashLoan","type":"bool"},{"internalType":"bool","name":"afterFlashLoan","type":"bool"},{"internalType":"bool","name":"beforeMint","type":"bool"},{"internalType":"bool","name":"afterMint","type":"bool"},{"internalType":"bool","name":"beforeBurn","type":"bool"},{"internalType":"bool","name":"afterBurn","type":"bool"},{"internalType":"bool","name":"beforeBatchTransferFrom","type":"bool"},{"internalType":"bool","name":"afterBatchTransferFrom","type":"bool"}]},{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"test_CallHooks"},{"inputs":[{"internalType":"struct Hooks.Parameters","name":"parameters","type":"tuple","components":[{"internalType":"address","name":"hooks","type":"address"},{"internalType":"bool","name":"beforeSwap","type":"bool"},{"internalType":"bool","name":"afterSwap","type":"bool"},{"internalType":"bool","name":"beforeFlashLoan","type":"bool"},{"internalType":"bool","name":"afterFlashLoan","type":"bool"},{"internalType":"bool","name":"beforeMint","type":"bool"},{"internalType":"bool","name":"afterMint","type":"bool"},{"internalType":"bool","name":"beforeBurn","type":"bool"},{"internalType":"bool","name":"afterBurn","type":"bool"},{"internalType":"bool","name":"beforeBatchTransferFrom","type":"bool"},{"internalType":"bool","name":"afterBatchTransferFrom","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"test_EncodeHooks"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_Revert_CallFailed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Hooks.t.sol":"HooksTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/LBBaseHooks.sol":{"keccak256":"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778","urls":["bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1","dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"test/Hooks.t.sol":{"keccak256":"0xd1ec9ffb5db2eb70dd5caf0a2c4013235409ff62fa7f5234b419077ca892413a","urls":["bzz-raw://4d6b7c69d6b694840efb5b6baf4dac3b1f21ce23163c02d7d480bcd41c46c414","dweb:/ipfs/QmPHY7E1Lo9N55txnELdMc68h9ErVNB7K1s85t4fRPEnG1"],"license":"MIT"},"test/mocks/MockHooks.sol":{"keccak256":"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3","urls":["bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0","dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV"],"license":"MIT"}},"version":1},"id":85} \ No newline at end of file diff --git a/abi/Hooks.t.sol/MockHooksCaller.json b/abi/Hooks.t.sol/MockHooksCaller.json deleted file mode 100644 index 6cc1db4e..00000000 --- a/abi/Hooks.t.sol/MockHooksCaller.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"afterBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"fees","type":"bytes32","internalType":"bytes32"},{"name":"feesReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsOut","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amounts","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hooksParameters","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"onHooksSet","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHooksParameters","inputs":[{"name":"_hooksParameters","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"Hooks__CallFailed","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610adf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806367ddb2781161008c578063ea9db9d311610066578063ea9db9d314610191578063ed40c65f146101a4578063fdc27257146101bf578063feee3735146101d257600080fd5b806367ddb2781461015857806379c8ccf71461016b5780637a51a4c61461017e57600080fd5b8063505d9033116100bd578063505d90331461011f57806353e8079b1461013257806360bed5f31461014557600080fd5b80630d4abdb3146100e457806326aded79146100f95780634e430b5a1461010c575b600080fd5b6100f76100f2366004610723565b6101e5565b005b6100f761010736600461078c565b600055565b6100f761011a3660046107a5565b6101fc565b6100f761012d366004610821565b61020e565b6100f761014036600461085d565b61021c565b6100f76101533660046108af565b610231565b6100f76101663660046108f1565b610240565b6100f76101793660046108f1565b61025c565b6100f761018c366004610723565b61026e565b6100f761019f3660046108f1565b61027e565b6101ad60005481565b60405190815260200160405180910390f35b6100f76101cd3660046108f1565b610290565b6100f76101e036600461085d565b6102a2565b6101f560005486868686866102b1565b5050505050565b610209600054838361035f565b505050565b610209600054848484610386565b61022b600054858585856103db565b50505050565b61022b60005485858585610438565b6102536000548888600088888888610494565b50505050505050565b610253600054888888888888886104e5565b6101f5600054868686868661052c565b6102536000548888888888888861056e565b610253600054888888888888886105b4565b61022b600054858585856105fa565b741000000000000000000000000000000000000000008616156103575761035786630d4abdb360e01b87878787876040516024016102f39594939291906109de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610657565b505050505050565b82156102095761020983634e430b5a60e01b8585856040516024016102f393929190610a1d565b7404000000000000000000000000000000000000000084161561022b576040516001600160a01b038085166024830152831660448201526064810182905261022b90859063505d903360e01b906084016102f3565b740200000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f59086906353e8079b60e01b9060a4016102f3565b740800000000000000000000000000000000000000008516156101f5576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526101f59086906360bed5f360e01b9060a4016102f3565b75020000000000000000000000000000000000000000008816156104db576104db886367ddb27860e01b898989898989896040516024016102f39796959493929190610a53565b5050505050505050565b75010000000000000000000000000000000000000000008816156104db576104db886379c8ccf760e01b898989898989896040516024016102f39796959493929190610a53565b742000000000000000000000000000000000000000008616156103575761035786637a51a4c660e01b87878787876040516024016102f39594939291906109de565b744000000000000000000000000000000000000000008816156104db576104db8863ea9db9d360e01b898989898989896040516024016102f39796959493929190610a53565b748000000000000000000000000000000000000000008816156104db576104db8863fdc2725760e01b898989898989896040516024016102f39796959493929190610a53565b740100000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f590869063feee373560e01b9060a4016102f3565b600080839050602083015160e01c602060008551602087016000865af192503d15158315161561068b573d6000803e3d6000fd5b8060005160e01c14601f3d111683169250508161022b57604051636c93cb9b60e01b815260040160405180910390fd5b80356001600160a01b03811681146106d257600080fd5b919050565b60008083601f8401126106e957600080fd5b50813567ffffffffffffffff81111561070157600080fd5b6020830191508360208260051b850101111561071c57600080fd5b9250929050565b60008060008060006080868803121561073b57600080fd5b610744866106bb565b9450610752602087016106bb565b9350604086013567ffffffffffffffff81111561076e57600080fd5b61077a888289016106d7565b96999598509660600135949350505050565b60006020828403121561079e57600080fd5b5035919050565b6000806000604084860312156107ba57600080fd5b83359250602084013567ffffffffffffffff808211156107d957600080fd5b818601915086601f8301126107ed57600080fd5b8135818111156107fc57600080fd5b87602082850101111561080e57600080fd5b6020830194508093505050509250925092565b60008060006060848603121561083657600080fd5b61083f846106bb565b925061084d602085016106bb565b9150604084013590509250925092565b6000806000806080858703121561087357600080fd5b61087c856106bb565b935061088a602086016106bb565b92506040850135801515811461089f57600080fd5b9396929550929360600135925050565b600080600080608085870312156108c557600080fd5b6108ce856106bb565b93506108dc602086016106bb565b93969395505050506040820135916060013590565b600080600080600080600060a0888a03121561090c57600080fd5b610915886106bb565b9650610923602089016106bb565b9550610931604089016106bb565b9450606088013567ffffffffffffffff8082111561094e57600080fd5b61095a8b838c016106d7565b909650945060808a013591508082111561097357600080fd5b506109808a828b016106d7565b989b979a50959850939692959293505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156109c557600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b03808816835280871660208401525060806040830152610a0b608083018587610993565b90508260608301529695505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152610a8860a083018688610993565b8281036080840152610a9b818587610993565b9a995050505050505050505056fea2646970667358221220b71be0ffae8a52749dbc264c07a8d2e0e53e010b1d711c0dbf1f1aa4a849ddb464736f6c63430008140033","sourceMap":"12341:2470:85:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806367ddb2781161008c578063ea9db9d311610066578063ea9db9d314610191578063ed40c65f146101a4578063fdc27257146101bf578063feee3735146101d257600080fd5b806367ddb2781461015857806379c8ccf71461016b5780637a51a4c61461017e57600080fd5b8063505d9033116100bd578063505d90331461011f57806353e8079b1461013257806360bed5f31461014557600080fd5b80630d4abdb3146100e457806326aded79146100f95780634e430b5a1461010c575b600080fd5b6100f76100f2366004610723565b6101e5565b005b6100f761010736600461078c565b600055565b6100f761011a3660046107a5565b6101fc565b6100f761012d366004610821565b61020e565b6100f761014036600461085d565b61021c565b6100f76101533660046108af565b610231565b6100f76101663660046108f1565b610240565b6100f76101793660046108f1565b61025c565b6100f761018c366004610723565b61026e565b6100f761019f3660046108f1565b61027e565b6101ad60005481565b60405190815260200160405180910390f35b6100f76101cd3660046108f1565b610290565b6100f76101e036600461085d565b6102a2565b6101f560005486868686866102b1565b5050505050565b610209600054838361035f565b505050565b610209600054848484610386565b61022b600054858585856103db565b50505050565b61022b60005485858585610438565b6102536000548888600088888888610494565b50505050505050565b610253600054888888888888886104e5565b6101f5600054868686868661052c565b6102536000548888888888888861056e565b610253600054888888888888886105b4565b61022b600054858585856105fa565b741000000000000000000000000000000000000000008616156103575761035786630d4abdb360e01b87878787876040516024016102f39594939291906109de565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610657565b505050505050565b82156102095761020983634e430b5a60e01b8585856040516024016102f393929190610a1d565b7404000000000000000000000000000000000000000084161561022b576040516001600160a01b038085166024830152831660448201526064810182905261022b90859063505d903360e01b906084016102f3565b740200000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f59086906353e8079b60e01b9060a4016102f3565b740800000000000000000000000000000000000000008516156101f5576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526101f59086906360bed5f360e01b9060a4016102f3565b75020000000000000000000000000000000000000000008816156104db576104db886367ddb27860e01b898989898989896040516024016102f39796959493929190610a53565b5050505050505050565b75010000000000000000000000000000000000000000008816156104db576104db886379c8ccf760e01b898989898989896040516024016102f39796959493929190610a53565b742000000000000000000000000000000000000000008616156103575761035786637a51a4c660e01b87878787876040516024016102f39594939291906109de565b744000000000000000000000000000000000000000008816156104db576104db8863ea9db9d360e01b898989898989896040516024016102f39796959493929190610a53565b748000000000000000000000000000000000000000008816156104db576104db8863fdc2725760e01b898989898989896040516024016102f39796959493929190610a53565b740100000000000000000000000000000000000000008516156101f5576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526101f590869063feee373560e01b9060a4016102f3565b600080839050602083015160e01c602060008551602087016000865af192503d15158315161561068b573d6000803e3d6000fd5b8060005160e01c14601f3d111683169250508161022b57604051636c93cb9b60e01b815260040160405180910390fd5b80356001600160a01b03811681146106d257600080fd5b919050565b60008083601f8401126106e957600080fd5b50813567ffffffffffffffff81111561070157600080fd5b6020830191508360208260051b850101111561071c57600080fd5b9250929050565b60008060008060006080868803121561073b57600080fd5b610744866106bb565b9450610752602087016106bb565b9350604086013567ffffffffffffffff81111561076e57600080fd5b61077a888289016106d7565b96999598509660600135949350505050565b60006020828403121561079e57600080fd5b5035919050565b6000806000604084860312156107ba57600080fd5b83359250602084013567ffffffffffffffff808211156107d957600080fd5b818601915086601f8301126107ed57600080fd5b8135818111156107fc57600080fd5b87602082850101111561080e57600080fd5b6020830194508093505050509250925092565b60008060006060848603121561083657600080fd5b61083f846106bb565b925061084d602085016106bb565b9150604084013590509250925092565b6000806000806080858703121561087357600080fd5b61087c856106bb565b935061088a602086016106bb565b92506040850135801515811461089f57600080fd5b9396929550929360600135925050565b600080600080608085870312156108c557600080fd5b6108ce856106bb565b93506108dc602086016106bb565b93969395505050506040820135916060013590565b600080600080600080600060a0888a03121561090c57600080fd5b610915886106bb565b9650610923602089016106bb565b9550610931604089016106bb565b9450606088013567ffffffffffffffff8082111561094e57600080fd5b61095a8b838c016106d7565b909650945060808a013591508082111561097357600080fd5b506109808a828b016106d7565b989b979a50959850939692959293505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156109c557600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b03808816835280871660208401525060806040830152610a0b608083018587610993565b90508260608301529695505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152610a8860a083018688610993565b8281036080840152610a9b818587610993565b9a995050505050505050505056fea2646970667358221220b71be0ffae8a52749dbc264c07a8d2e0e53e010b1d711c0dbf1f1aa4a849ddb464736f6c63430008140033","sourceMap":"12341:2470:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13348:226;;;;;;:::i;:::-;;:::i;:::-;;12409:112;;;;;;:::i;:::-;12480:15;:34;12409:112;12527:113;;;;;;:::i;:::-;;:::i;13002:153::-;;;;;;:::i;:::-;;:::i;12824:172::-;;;;;;:::i;:::-;;:::i;13161:181::-;;;;;;:::i;:::-;;:::i;14531:278::-;;;;;;:::i;:::-;;:::i;14250:275::-;;;;;;:::i;:::-;;:::i;13580:224::-;;;;;;:::i;:::-;;:::i;13810:215::-;;;;;;:::i;:::-;;:::i;12372:30::-;;;;;;;;;4473:25:127;;;4461:2;4446:18;12372:30:85;;;;;;;14031:213;;;;;;:::i;:::-;;:::i;12646:172::-;;;;;;:::i;:::-;;:::i;13348:226::-;13487:80;13504:15;;13521:6;13529:2;13533:16;;13551:15;13487:16;:80::i;:::-;13348:226;;;;;:::o;12527:113::-;12594:39;12611:15;;12628:4;;12594:16;:39::i;:::-;12527:113;;;:::o;13002:153::-;13089:59;13111:15;;13128:6;13136:2;13140:7;13089:21;:59::i;12824:172::-;12923:66;12939:15;;12956:6;12964:2;12968:8;12978:10;12923:15;:66::i;:::-;12824:172;;;;:::o;13161:181::-;13266:69;13287:15;;13304:6;13312:2;13316:4;13322:12;13266:20;:69::i;14531:278::-;14717:85;14746:15;;14763:6;14771:4;14785:1;14789:3;;14794:7;;14717:28;:85::i;:::-;14531:278;;;;;;;:::o;14250:275::-;14440:78;14470:15;;14487:6;14495:4;14501:2;14505:3;;14510:7;;14440:29;:78::i;13580:224::-;13718:79;13734:15;;13751:6;13759:2;13763:16;;13781:15;13718;:79::i;13810:215::-;13953:65;13970:15;;13987:6;13995:4;14001:2;14005:3;;14010:7;;13953:16;:65::i;14031:213::-;14173:64;14189:15;;14206:6;14214:4;14220:2;14224:3;;14229:7;;14173:15;:64::i;12646:172::-;12745:66;12762:15;;12779:6;12787:2;12791:8;12801:9;12745:16;:66::i;8715:451:67:-;661:8;8920:34;;8919:41;8915:245;;8976:173;9003:15;9059:28;;;9089:6;9097:2;9101:16;;9119:15;9036:99;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9036:99:67;;;;;;;;;;;;;;;;;;;;;;;;;;;8976:9;:173::i;:::-;8715:451;;;;;;:::o;5138:295::-;5237:20;;5233:194;;5273:143;5300:15;5340:28;;;5370:15;5387:14;;5317:85;;;;;;;;;;:::i;7250:304::-;502:8;7369:40;;7368:47;7364:184;;7458:78;;-1:-1:-1;;;;;6204:15:127;;;7458:78:67;;;6186:34:127;6256:15;;6236:18;;;6229:43;6288:18;;;6281:34;;;7431:106:67;;7441:15;;-1:-1:-1;;;7481:33:67;6098:18:127;;7458:78:67;5923:398:127;6554:358:67;419:8;6697:33;;6696:40;6692:214;;6796:85;;-1:-1:-1;;;;;6630:15:127;;;6796:85:67;;;6612:34:127;6682:15;;6662:18;;;6655:43;6741:14;;6734:22;6714:18;;;6707:50;6773:18;;;6766:34;;;6752:143:67;;6779:15;;-1:-1:-1;;;6819:27:67;6523:19:127;;6796:85:67;6326:480:127;7929:389:67;584:8;8078:39;;8077:46;8073:239;;8199:88;;-1:-1:-1;;;;;7121:15:127;;;8199:88:67;;;7103:34:127;7173:15;;7153:18;;;7146:43;7205:18;;;7198:34;;;7248:18;;;7241:34;;;8139:162:67;;8166:15;;-1:-1:-1;;;8222:32:67;7014:19:127;;8199:88:67;6811:470:127;12992:475:67;1051:8;13221:37;;13220:44;13216:245;;13280:170;13307:15;13363:40;;;13405:6;13413:4;13419:2;13423:3;;13428:7;;13340:96;;;;;;;;;;;;;;:::i;13280:170::-;12992:475;;;;;;;;:::o;12105:478::-;971:8;12335:38;;12334:45;12330:247;;12395:171;12422:15;12478:41;;;12521:6;12529:4;12535:2;12539:3;;12544:7;;12455:97;;;;;;;;;;;;;;:::i;9549:436::-;737:8;9747:33;;9746:40;9742:237;;9802:166;9829:15;9885:27;;;9914:6;9922:2;9926:16;;9944:9;9862:92;;;;;;;;;;;;:::i;10382:460::-;814:8;10605:34;;10604:41;10600:236;;10661:164;10688:15;10744:28;;;10774:6;10782:4;10788:2;10792:3;;10797:13;;10721:90;;;;;;;;;;;;;;:::i;11237:457::-;890:8;11459:33;;11458:40;11454:234;;11514:163;11541:15;11597:27;;;11626:6;11634:4;11640:2;11644:3;;11649:13;;11574:89;;;;;;;;;;;;;;:::i;5814:359::-;343:8;5957:34;;5956:41;5952:215;;6057:85;;-1:-1:-1;;;;;6630:15:127;;;6057:85:67;;;6612:34:127;6682:15;;6662:18;;;6655:43;6741:14;;6734:22;6714:18;;;6707:50;6773:18;;;6766:34;;;6013:143:67;;6040:15;;-1:-1:-1;;;6080:28:67;6523:19:127;;6057:85:67;6326:480:127;13760:685:67;13841:12;;13889:15;13864:41;;13988:4;13982;13978:15;13972:22;13967:3;13963:32;14075:4;14072:1;14065:4;14059:11;14052:4;14046;14042:15;14039:1;14032:5;14025;14020:60;14009:71;;14132:16;14125:24;14118:32;14108:7;14101:15;14097:54;14094:172;;;14191:16;14188:1;14185;14170:38;14235:16;14232:1;14225:27;14094:172;14359:16;14354:1;14348:8;14343:3;14339:18;14336:40;14329:4;14311:16;14308:26;14304:73;14295:7;14291:87;14280:98;;;14403:7;14398:40;;14419:19;;-1:-1:-1;;;14419:19:67;;;;;;;;;;;14:196:127;82:20;;-1:-1:-1;;;;;131:54:127;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:367::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:55;;360:1;357;350:12;309:55;-1:-1:-1;383:20:127;;426:18;415:30;;412:50;;;458:1;455;448:12;412:50;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:67;;;572:1;569;562:12;509:67;215:367;;;;;:::o;587:654::-;700:6;708;716;724;732;785:3;773:9;764:7;760:23;756:33;753:53;;;802:1;799;792:12;753:53;825:29;844:9;825:29;:::i;:::-;815:39;;873:38;907:2;896:9;892:18;873:38;:::i;:::-;863:48;;962:2;951:9;947:18;934:32;989:18;981:6;978:30;975:50;;;1021:1;1018;1011:12;975:50;1060:70;1122:7;1113:6;1102:9;1098:22;1060:70;:::i;:::-;587:654;;;;-1:-1:-1;1149:8:127;1231:2;1216:18;1203:32;;587:654;-1:-1:-1;;;;587:654:127:o;1246:180::-;1305:6;1358:2;1346:9;1337:7;1333:23;1329:32;1326:52;;;1374:1;1371;1364:12;1326:52;-1:-1:-1;1397:23:127;;1246:180;-1:-1:-1;1246:180:127:o;1431:659::-;1510:6;1518;1526;1579:2;1567:9;1558:7;1554:23;1550:32;1547:52;;;1595:1;1592;1585:12;1547:52;1631:9;1618:23;1608:33;;1692:2;1681:9;1677:18;1664:32;1715:18;1756:2;1748:6;1745:14;1742:34;;;1772:1;1769;1762:12;1742:34;1810:6;1799:9;1795:22;1785:32;;1855:7;1848:4;1844:2;1840:13;1836:27;1826:55;;1877:1;1874;1867:12;1826:55;1917:2;1904:16;1943:2;1935:6;1932:14;1929:34;;;1959:1;1956;1949:12;1929:34;2004:7;1999:2;1990:6;1986:2;1982:15;1978:24;1975:37;1972:57;;;2025:1;2022;2015:12;1972:57;2056:2;2052;2048:11;2038:21;;2078:6;2068:16;;;;;1431:659;;;;;:::o;2095:328::-;2172:6;2180;2188;2241:2;2229:9;2220:7;2216:23;2212:32;2209:52;;;2257:1;2254;2247:12;2209:52;2280:29;2299:9;2280:29;:::i;:::-;2270:39;;2328:38;2362:2;2351:9;2347:18;2328:38;:::i;:::-;2318:48;;2413:2;2402:9;2398:18;2385:32;2375:42;;2095:328;;;;;:::o;2428:490::-;2511:6;2519;2527;2535;2588:3;2576:9;2567:7;2563:23;2559:33;2556:53;;;2605:1;2602;2595:12;2556:53;2628:29;2647:9;2628:29;:::i;:::-;2618:39;;2676:38;2710:2;2699:9;2695:18;2676:38;:::i;:::-;2666:48;;2764:2;2753:9;2749:18;2736:32;2811:5;2804:13;2797:21;2790:5;2787:32;2777:60;;2833:1;2830;2823:12;2777:60;2428:490;;;;-1:-1:-1;2856:5:127;;2908:2;2893:18;2880:32;;-1:-1:-1;;2428:490:127:o;2923:397::-;3009:6;3017;3025;3033;3086:3;3074:9;3065:7;3061:23;3057:33;3054:53;;;3103:1;3100;3093:12;3054:53;3126:29;3145:9;3126:29;:::i;:::-;3116:39;;3174:38;3208:2;3197:9;3193:18;3174:38;:::i;:::-;2923:397;;3164:48;;-1:-1:-1;;;;3259:2:127;3244:18;;3231:32;;3310:2;3295:18;3282:32;;2923:397::o;3325:997::-;3474:6;3482;3490;3498;3506;3514;3522;3575:3;3563:9;3554:7;3550:23;3546:33;3543:53;;;3592:1;3589;3582:12;3543:53;3615:29;3634:9;3615:29;:::i;:::-;3605:39;;3663:38;3697:2;3686:9;3682:18;3663:38;:::i;:::-;3653:48;;3720:38;3754:2;3743:9;3739:18;3720:38;:::i;:::-;3710:48;;3809:2;3798:9;3794:18;3781:32;3832:18;3873:2;3865:6;3862:14;3859:34;;;3889:1;3886;3879:12;3859:34;3928:70;3990:7;3981:6;3970:9;3966:22;3928:70;:::i;:::-;4017:8;;-1:-1:-1;3902:96:127;-1:-1:-1;4105:3:127;4090:19;;4077:33;;-1:-1:-1;4122:16:127;;;4119:36;;;4151:1;4148;4141:12;4119:36;;4190:72;4254:7;4243:8;4232:9;4228:24;4190:72;:::i;:::-;3325:997;;;;-1:-1:-1;3325:997:127;;-1:-1:-1;3325:997:127;;;;4164:98;;-1:-1:-1;;;3325:997:127:o;4509:358::-;4609:6;4604:3;4597:19;4579:3;4639:66;4631:6;4628:78;4625:98;;;4719:1;4716;4709:12;4625:98;4755:6;4752:1;4748:14;4807:8;4800:5;4793:4;4788:3;4784:14;4771:45;4836:18;;;;4856:4;4832:29;;4509:358;-1:-1:-1;;;4509:358:127:o;4872:582::-;5108:4;-1:-1:-1;;;;;5218:2:127;5210:6;5206:15;5195:9;5188:34;5270:2;5262:6;5258:15;5253:2;5242:9;5238:18;5231:43;;5310:3;5305:2;5294:9;5290:18;5283:31;5331:74;5400:3;5389:9;5385:19;5377:6;5369;5331:74;:::i;:::-;5323:82;;5441:6;5436:2;5425:9;5421:18;5414:34;4872:582;;;;;;;;:::o;5459:459::-;5644:6;5633:9;5626:25;5687:2;5682;5671:9;5667:18;5660:30;5726:6;5721:2;5710:9;5706:18;5699:34;5783:6;5775;5770:2;5759:9;5755:18;5742:48;5839:1;5810:22;;;5834:2;5806:31;;;5799:42;;;;5902:2;5881:15;;;-1:-1:-1;;5877:29:127;5862:45;5858:54;;5459:459;-1:-1:-1;;5459:459:127:o;7286:823::-;7610:4;-1:-1:-1;;;;;7720:2:127;7712:6;7708:15;7697:9;7690:34;7772:2;7764:6;7760:15;7755:2;7744:9;7740:18;7733:43;7824:2;7816:6;7812:15;7807:2;7796:9;7792:18;7785:43;;7864:3;7859:2;7848:9;7844:18;7837:31;7891:74;7960:3;7949:9;7945:19;7937:6;7929;7891:74;:::i;:::-;8014:9;8006:6;8002:22;7996:3;7985:9;7981:19;7974:51;8042:61;8096:6;8088;8080;8042:61;:::i;:::-;8034:69;7286:823;-1:-1:-1;;;;;;;;;;7286:823:127:o","linkReferences":{}},"methodIdentifiers":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":"67ddb278","afterBurn(address,address,address,uint256[],uint256[])":"fdc27257","afterFlashLoan(address,address,bytes32,bytes32)":"60bed5f3","afterMint(address,address,bytes32[],bytes32)":"7a51a4c6","afterSwap(address,address,bool,bytes32)":"53e8079b","beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":"79c8ccf7","beforeBurn(address,address,address,uint256[],uint256[])":"ea9db9d3","beforeFlashLoan(address,address,bytes32)":"505d9033","beforeMint(address,address,bytes32[],bytes32)":"0d4abdb3","beforeSwap(address,address,bool,bytes32)":"feee3735","hooksParameters()":"ed40c65f","onHooksSet(bytes32,bytes)":"4e430b5a","setHooksParameters(bytes32)":"26aded79"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Hooks__CallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"fees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feesReceived\",\"type\":\"bytes32\"}],\"name\":\"afterFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"afterMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"name\":\"afterSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"beforeFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"beforeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"beforeSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hooksParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onHooksSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"setHooksParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Hooks.t.sol\":\"MockHooksCaller\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/LBBaseHooks.sol\":{\"keccak256\":\"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1\",\"dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"test/Hooks.t.sol\":{\"keccak256\":\"0xd1ec9ffb5db2eb70dd5caf0a2c4013235409ff62fa7f5234b419077ca892413a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d6b7c69d6b694840efb5b6baf4dac3b1f21ce23163c02d7d480bcd41c46c414\",\"dweb:/ipfs/QmPHY7E1Lo9N55txnELdMc68h9ErVNB7K1s85t4fRPEnG1\"]},\"test/mocks/MockHooks.sol\":{\"keccak256\":\"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0\",\"dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Hooks__CallFailed"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBurn"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"fees","type":"bytes32"},{"internalType":"bytes32","name":"feesReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterFlashLoan"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterMint"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsOut","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterSwap"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBurn"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeFlashLoan"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeMint"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeSwap"},{"inputs":[],"stateMutability":"view","type":"function","name":"hooksParameters","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onHooksSet"},{"inputs":[{"internalType":"bytes32","name":"_hooksParameters","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setHooksParameters"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Hooks.t.sol":"MockHooksCaller"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/LBBaseHooks.sol":{"keccak256":"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778","urls":["bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1","dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"test/Hooks.t.sol":{"keccak256":"0xd1ec9ffb5db2eb70dd5caf0a2c4013235409ff62fa7f5234b419077ca892413a","urls":["bzz-raw://4d6b7c69d6b694840efb5b6baf4dac3b1f21ce23163c02d7d480bcd41c46c414","dweb:/ipfs/QmPHY7E1Lo9N55txnELdMc68h9ErVNB7K1s85t4fRPEnG1"],"license":"MIT"},"test/mocks/MockHooks.sol":{"keccak256":"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3","urls":["bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0","dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV"],"license":"MIT"}},"version":1},"id":85} \ No newline at end of file diff --git a/abi/IAccessControl.sol/IAccessControl.json b/abi/IAccessControl.sol/IAccessControl.json deleted file mode 100644 index 0fad218e..00000000 --- a/abi/IAccessControl.sol/IAccessControl.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":"IAccessControl"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/abi/IERC1363.sol/IERC1363.json b/abi/IERC1363.sol/IERC1363.json deleted file mode 100644 index 5f5b9d75..00000000 --- a/abi/IERC1363.sol/IERC1363.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"approveAndCall(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"approveAndCall(address,uint256,bytes)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"data":"Additional data with no specified format, sent in call to `spender`.","spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferAndCall(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferAndCall(address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFromAndCall(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFromAndCall(address,address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":"IERC1363"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/abi/IERC165.sol/IERC165.json b/abi/IERC165.sol/IERC165.json deleted file mode 100644 index cb66ae41..00000000 --- a/abi/IERC165.sol/IERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file diff --git a/abi/IERC20.sol/IERC20.json b/abi/IERC20.sol/IERC20.json deleted file mode 100644 index d80a91af..00000000 --- a/abi/IERC20.sol/IERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.This includes the optional name, symbol, and decimals metadata.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"balanceOf(address)\":{\"notice\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"balanceOf(address)":{"notice":"Returns the amount of tokens owned by `account`."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC20.sol":"IERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file diff --git a/abi/IERC20Metadata.sol/IERC20Metadata.json b/abi/IERC20Metadata.sol/IERC20Metadata.json deleted file mode 100644 index 81a27cb7..00000000 --- a/abi/IERC20Metadata.sol/IERC20Metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":"IERC20Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"}},"version":1},"id":34} \ No newline at end of file diff --git a/abi/IERC721.sol/IERC721.json b/abi/IERC721.sol/IERC721.json deleted file mode 100644 index 26bedc24..00000000 --- a/abi/IERC721.sol/IERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x80ac58cd.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/abi/IERC721.sol/IERC721Enumerable.json b/abi/IERC721.sol/IERC721Enumerable.json deleted file mode 100644 index 88275a8f..00000000 --- a/abi/IERC721.sol/IERC721Enumerable.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenByIndex","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenOfOwnerByIndex","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x780e9d63.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenByIndex(uint256)\":{\"details\":\"Throws if `_index` >= `totalSupply()`.\",\"params\":{\"_index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT, (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.\",\"params\":{\"_index\":\"A counter less than `balanceOf(_owner)`\",\"_owner\":\"An address where we are interested in NFTs owned by them\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid NFTs\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Enumerate NFTs assigned to an owner\"},\"totalSupply()\":{\"notice\":\"Count NFTs tracked by this contract\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenByIndex(uint256)":{"details":"Throws if `_index` >= `totalSupply()`.","params":{"_index":"A counter less than `totalSupply()`"},"returns":{"_0":"The token identifier for the `_index`th NFT, (sort order not specified)"}},"tokenOfOwnerByIndex(address,uint256)":{"details":"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.","params":{"_index":"A counter less than `balanceOf(_owner)`","_owner":"An address where we are interested in NFTs owned by them"},"returns":{"_0":"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)"}},"totalSupply()":{"returns":{"_0":"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"tokenByIndex(uint256)":{"notice":"Enumerate valid NFTs"},"tokenOfOwnerByIndex(address,uint256)":{"notice":"Enumerate NFTs assigned to an owner"},"totalSupply()":{"notice":"Count NFTs tracked by this contract"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Enumerable"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/abi/IERC721.sol/IERC721Metadata.json b/abi/IERC721.sol/IERC721Metadata.json deleted file mode 100644 index 839e5cbf..00000000 --- a/abi/IERC721.sol/IERC721Metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"_name","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"_symbol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x5b5e139f.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/abi/IERC721.sol/IERC721TokenReceiver.json b/abi/IERC721.sol/IERC721TokenReceiver.json deleted file mode 100644 index a22ec1f0..00000000 --- a/abi/IERC721.sol/IERC721TokenReceiver.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Note: the ERC-165 identifier for this interface is 0x150b7a02.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.\",\"params\":{\"_data\":\"Additional data with no specified format\",\"_from\":\"The address which previously owned the token\",\"_operator\":\"The address which called `safeTransferFrom` function\",\"_tokenId\":\"The NFT identifier which is being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))` unless throwing\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handle the receipt of an NFT\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721TokenReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.","params":{"_data":"Additional data with no specified format","_from":"The address which previously owned the token","_operator":"The address which called `safeTransferFrom` function","_tokenId":"The NFT identifier which is being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))` unless throwing"}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC721Received(address,address,uint256,bytes)":{"notice":"Handle the receipt of an NFT"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721TokenReceiver"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/abi/IJoePair.sol/IJoePair.json b/abi/IJoePair.sol/IJoePair.json deleted file mode 100644 index 9dc757b5..00000000 --- a/abi/IJoePair.sol/IJoePair.json +++ /dev/null @@ -1,4367 +0,0 @@ -{ - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0In", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1In", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0Out", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1Out", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "Swap", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint112", - "name": "reserve0", - "type": "uint112" - }, - { - "indexed": false, - "internalType": "uint112", - "name": "reserve1", - "type": "uint112" - } - ], - "name": "Sync", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MINIMUM_LIQUIDITY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getReserves", - "outputs": [ - { - "internalType": "uint112", - "name": "reserve0", - "type": "uint112" - }, - { - "internalType": "uint112", - "name": "reserve1", - "type": "uint112" - }, - { - "internalType": "uint32", - "name": "blockTimestampLast", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "kLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "price0CumulativeLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "price1CumulativeLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "name": "skim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount0Out", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1Out", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "swap", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "sync", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "methodIdentifiers": { - "DOMAIN_SEPARATOR()": "3644e515", - "MINIMUM_LIQUIDITY()": "ba9a7a56", - "PERMIT_TYPEHASH()": "30adf81f", - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "burn(address)": "89afcb44", - "decimals()": "313ce567", - "factory()": "c45a0155", - "getReserves()": "0902f1ac", - "initialize(address,address)": "485cc955", - "kLast()": "7464fc3d", - "mint(address)": "6a627842", - "name()": "06fdde03", - "nonces(address)": "7ecebe00", - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", - "price0CumulativeLast()": "5909c0d5", - "price1CumulativeLast()": "5a3d5493", - "skim(address)": "bc25cf77", - "swap(uint256,uint256,address,bytes)": "022c0d9f", - "symbol()": "95d89b41", - "sync()": "fff6cae9", - "token0()": "0dfe1681", - "token1()": "d21220a7", - "totalSupply()": "18160ddd", - "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Pair Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Pairs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovryn LBPair.sol\":\"ISovryn LBPair\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovryn LBPair.sol\":{\"keccak256\":\"0x8f3f3f22167722e8e0b200768ef953b5f5a84064cf385e16d162ac4229f34c23\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c7d698db18059eadd0490f68c69b04b5349150346601dc6951d8cc2a2796bc25\",\"dweb:/ipfs/Qmd2CxzN7GtM8BhkotDroJkWLEYdvT8U3vwYSK4chbSWos\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "spender", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Approval", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256", - "indexed": false - }, - { - "internalType": "address", - "name": "to", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "Burn", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Mint", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount0In", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "amount1In", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "amount0Out", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "amount1Out", - "type": "uint256", - "indexed": false - }, - { - "internalType": "address", - "name": "to", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "Swap", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint112", - "name": "reserve0", - "type": "uint112", - "indexed": false - }, - { - "internalType": "uint112", - "name": "reserve1", - "type": "uint112", - "indexed": false - } - ], - "type": "event", - "name": "Sync", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "to", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Transfer", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "MINIMUM_LIQUIDITY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "getReserves", - "outputs": [ - { - "internalType": "uint112", - "name": "reserve0", - "type": "uint112" - }, - { - "internalType": "uint112", - "name": "reserve1", - "type": "uint112" - }, - { - "internalType": "uint32", - "name": "blockTimestampLast", - "type": "uint32" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "initialize" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "kLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "permit" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "price0CumulativeLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "price1CumulativeLast", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "skim" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount0Out", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1Out", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swap" - }, - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "sync" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/interfaces/ISovryn LBPair.sol": "ISovryn LBPair" - }, - "libraries": {} - }, - "sources": { - "src/interfaces/ISovryn LBPair.sol": { - "keccak256": "0x8f3f3f22167722e8e0b200768ef953b5f5a84064cf385e16d162ac4229f34c23", - "urls": [ - "bzz-raw://c7d698db18059eadd0490f68c69b04b5349150346601dc6951d8cc2a2796bc25", - "dweb:/ipfs/Qmd2CxzN7GtM8BhkotDroJkWLEYdvT8U3vwYSK4chbSWos" - ], - "license": "GPL-3.0" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/interfaces/ISovryn LBPair.sol", - "id": 62109, - "exportedSymbols": { - "ISovryn LBPair": [ - 62108 - ] - }, - "nodeType": "SourceUnit", - "src": "37:2615:51", - "nodes": [ - { - "id": 61867, - "nodeType": "PragmaDirective", - "src": "37:24:51", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".10" - ] - }, - { - "id": 62108, - "nodeType": "ContractDefinition", - "src": "148:2503:51", - "nodes": [ - { - "id": 61876, - "nodeType": "EventDefinition", - "src": "173:78:51", - "nodes": [], - "anonymous": false, - "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "name": "Approval", - "nameLocation": "179:8:51", - "parameters": { - "id": 61875, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61870, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nameLocation": "204:5:51", - "nodeType": "VariableDeclaration", - "scope": 61876, - "src": "188:21:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61869, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "188:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61872, - "indexed": true, - "mutability": "mutable", - "name": "spender", - "nameLocation": "227:7:51", - "nodeType": "VariableDeclaration", - "scope": 61876, - "src": "211:23:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61871, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "211:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61874, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nameLocation": "244:5:51", - "nodeType": "VariableDeclaration", - "scope": 61876, - "src": "236:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61873, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "236:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "187:63:51" - } - }, - { - "id": 61884, - "nodeType": "EventDefinition", - "src": "256:72:51", - "nodes": [], - "anonymous": false, - "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "name": "Transfer", - "nameLocation": "262:8:51", - "parameters": { - "id": 61883, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61878, - "indexed": true, - "mutability": "mutable", - "name": "from", - "nameLocation": "287:4:51", - "nodeType": "VariableDeclaration", - "scope": 61884, - "src": "271:20:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61877, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "271:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61880, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nameLocation": "309:2:51", - "nodeType": "VariableDeclaration", - "scope": 61884, - "src": "293:18:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61879, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "293:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61882, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nameLocation": "321:5:51", - "nodeType": "VariableDeclaration", - "scope": 61884, - "src": "313:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61881, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "313:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "270:57:51" - } - }, - { - "id": 61889, - "nodeType": "FunctionDefinition", - "src": "334:54:51", - "nodes": [], - "functionSelector": "06fdde03", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "name", - "nameLocation": "343:4:51", - "parameters": { - "id": 61885, - "nodeType": "ParameterList", - "parameters": [], - "src": "347:2:51" - }, - "returnParameters": { - "id": 61888, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61887, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61889, - "src": "373:13:51", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 61886, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "373:6:51", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "372:15:51" - }, - "scope": 62108, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 61894, - "nodeType": "FunctionDefinition", - "src": "394:56:51", - "nodes": [], - "functionSelector": "95d89b41", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "symbol", - "nameLocation": "403:6:51", - "parameters": { - "id": 61890, - "nodeType": "ParameterList", - "parameters": [], - "src": "409:2:51" - }, - "returnParameters": { - "id": 61893, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61892, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61894, - "src": "435:13:51", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 61891, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "435:6:51", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "434:15:51" - }, - "scope": 62108, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 61899, - "nodeType": "FunctionDefinition", - "src": "456:50:51", - "nodes": [], - "functionSelector": "313ce567", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nameLocation": "465:8:51", - "parameters": { - "id": 61895, - "nodeType": "ParameterList", - "parameters": [], - "src": "473:2:51" - }, - "returnParameters": { - "id": 61898, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61897, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61899, - "src": "499:5:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 61896, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "499:5:51", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "498:7:51" - }, - "scope": 62108, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 61904, - "nodeType": "FunctionDefinition", - "src": "512:55:51", - "nodes": [], - "functionSelector": "18160ddd", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "totalSupply", - "nameLocation": "521:11:51", - "parameters": { - "id": 61900, - "nodeType": "ParameterList", - "parameters": [], - "src": "532:2:51" - }, - "returnParameters": { - "id": 61903, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61902, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61904, - "src": "558:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61901, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "558:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "557:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 61911, - "nodeType": "FunctionDefinition", - "src": "573:66:51", - "nodes": [], - "functionSelector": "70a08231", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "balanceOf", - "nameLocation": "582:9:51", - "parameters": { - "id": 61907, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61906, - "mutability": "mutable", - "name": "owner", - "nameLocation": "600:5:51", - "nodeType": "VariableDeclaration", - "scope": 61911, - "src": "592:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61905, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "592:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "591:15:51" - }, - "returnParameters": { - "id": 61910, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61909, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61911, - "src": "630:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61908, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "630:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "629:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 61920, - "nodeType": "FunctionDefinition", - "src": "645:83:51", - "nodes": [], - "functionSelector": "dd62ed3e", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nameLocation": "654:9:51", - "parameters": { - "id": 61916, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61913, - "mutability": "mutable", - "name": "owner", - "nameLocation": "672:5:51", - "nodeType": "VariableDeclaration", - "scope": 61920, - "src": "664:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61912, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "664:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61915, - "mutability": "mutable", - "name": "spender", - "nameLocation": "687:7:51", - "nodeType": "VariableDeclaration", - "scope": 61920, - "src": "679:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61914, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "679:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "663:32:51" - }, - "returnParameters": { - "id": 61919, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61918, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61920, - "src": "719:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61917, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "719:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "718:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 61929, - "nodeType": "FunctionDefinition", - "src": "734:73:51", - "nodes": [], - "functionSelector": "095ea7b3", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "approve", - "nameLocation": "743:7:51", - "parameters": { - "id": 61925, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61922, - "mutability": "mutable", - "name": "spender", - "nameLocation": "759:7:51", - "nodeType": "VariableDeclaration", - "scope": 61929, - "src": "751:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61921, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "751:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61924, - "mutability": "mutable", - "name": "value", - "nameLocation": "776:5:51", - "nodeType": "VariableDeclaration", - "scope": 61929, - "src": "768:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61923, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "768:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "750:32:51" - }, - "returnParameters": { - "id": 61928, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61927, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61929, - "src": "801:4:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 61926, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "801:4:51", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "800:6:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 61938, - "nodeType": "FunctionDefinition", - "src": "813:69:51", - "nodes": [], - "functionSelector": "a9059cbb", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transfer", - "nameLocation": "822:8:51", - "parameters": { - "id": 61934, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61931, - "mutability": "mutable", - "name": "to", - "nameLocation": "839:2:51", - "nodeType": "VariableDeclaration", - "scope": 61938, - "src": "831:10:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61930, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "831:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61933, - "mutability": "mutable", - "name": "value", - "nameLocation": "851:5:51", - "nodeType": "VariableDeclaration", - "scope": 61938, - "src": "843:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61932, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "843:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "830:27:51" - }, - "returnParameters": { - "id": 61937, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61936, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61938, - "src": "876:4:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 61935, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "876:4:51", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "875:6:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 61949, - "nodeType": "FunctionDefinition", - "src": "888:87:51", - "nodes": [], - "functionSelector": "23b872dd", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transferFrom", - "nameLocation": "897:12:51", - "parameters": { - "id": 61945, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61940, - "mutability": "mutable", - "name": "from", - "nameLocation": "918:4:51", - "nodeType": "VariableDeclaration", - "scope": 61949, - "src": "910:12:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61939, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "910:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61942, - "mutability": "mutable", - "name": "to", - "nameLocation": "932:2:51", - "nodeType": "VariableDeclaration", - "scope": 61949, - "src": "924:10:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61941, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "924:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61944, - "mutability": "mutable", - "name": "value", - "nameLocation": "944:5:51", - "nodeType": "VariableDeclaration", - "scope": 61949, - "src": "936:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61943, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "936:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "909:41:51" - }, - "returnParameters": { - "id": 61948, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61947, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61949, - "src": "969:4:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 61946, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "969:4:51", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "968:6:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 61954, - "nodeType": "FunctionDefinition", - "src": "981:60:51", - "nodes": [], - "functionSelector": "3644e515", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "DOMAIN_SEPARATOR", - "nameLocation": "990:16:51", - "parameters": { - "id": 61950, - "nodeType": "ParameterList", - "parameters": [], - "src": "1006:2:51" - }, - "returnParameters": { - "id": 61953, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61952, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61954, - "src": "1032:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 61951, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1032:7:51", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1031:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 61959, - "nodeType": "FunctionDefinition", - "src": "1047:59:51", - "nodes": [], - "functionSelector": "30adf81f", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "PERMIT_TYPEHASH", - "nameLocation": "1056:15:51", - "parameters": { - "id": 61955, - "nodeType": "ParameterList", - "parameters": [], - "src": "1071:2:51" - }, - "returnParameters": { - "id": 61958, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61957, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61959, - "src": "1097:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 61956, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1097:7:51", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1096:9:51" - }, - "scope": 62108, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 61966, - "nodeType": "FunctionDefinition", - "src": "1112:63:51", - "nodes": [], - "functionSelector": "7ecebe00", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "nonces", - "nameLocation": "1121:6:51", - "parameters": { - "id": 61962, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61961, - "mutability": "mutable", - "name": "owner", - "nameLocation": "1136:5:51", - "nodeType": "VariableDeclaration", - "scope": 61966, - "src": "1128:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61960, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1128:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1127:15:51" - }, - "returnParameters": { - "id": 61965, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61964, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 61966, - "src": "1166:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61963, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1166:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1165:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 61983, - "nodeType": "FunctionDefinition", - "src": "1181:129:51", - "nodes": [], - "functionSelector": "d505accf", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "permit", - "nameLocation": "1190:6:51", - "parameters": { - "id": 61981, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61968, - "mutability": "mutable", - "name": "owner", - "nameLocation": "1205:5:51", - "nodeType": "VariableDeclaration", - "scope": 61983, - "src": "1197:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61967, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1197:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61970, - "mutability": "mutable", - "name": "spender", - "nameLocation": "1220:7:51", - "nodeType": "VariableDeclaration", - "scope": 61983, - "src": "1212:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61969, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1212:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61972, - "mutability": "mutable", - "name": "value", - "nameLocation": "1237:5:51", - "nodeType": "VariableDeclaration", - "scope": 61983, - "src": "1229:13:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61971, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1229:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61974, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1252:8:51", - "nodeType": "VariableDeclaration", - "scope": 61983, - "src": "1244:16:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61973, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1244:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61976, - "mutability": "mutable", - "name": "v", - "nameLocation": "1268:1:51", - "nodeType": "VariableDeclaration", - "scope": 61983, - "src": "1262:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 61975, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1262:5:51", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61978, - "mutability": "mutable", - "name": "r", - "nameLocation": "1279:1:51", - "nodeType": "VariableDeclaration", - "scope": 61983, - "src": "1271:9:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 61977, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1271:7:51", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61980, - "mutability": "mutable", - "name": "s", - "nameLocation": "1290:1:51", - "nodeType": "VariableDeclaration", - "scope": 61983, - "src": "1282:9:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 61979, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1282:7:51", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1196:96:51" - }, - "returnParameters": { - "id": 61982, - "nodeType": "ParameterList", - "parameters": [], - "src": "1309:0:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 61991, - "nodeType": "EventDefinition", - "src": "1316:69:51", - "nodes": [], - "anonymous": false, - "eventSelector": "4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f", - "name": "Mint", - "nameLocation": "1322:4:51", - "parameters": { - "id": 61990, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61985, - "indexed": true, - "mutability": "mutable", - "name": "sender", - "nameLocation": "1343:6:51", - "nodeType": "VariableDeclaration", - "scope": 61991, - "src": "1327:22:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61984, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1327:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61987, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nameLocation": "1359:7:51", - "nodeType": "VariableDeclaration", - "scope": 61991, - "src": "1351:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61986, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1351:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61989, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nameLocation": "1376:7:51", - "nodeType": "VariableDeclaration", - "scope": 61991, - "src": "1368:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61988, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1368:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1326:58:51" - } - }, - { - "id": 62001, - "nodeType": "EventDefinition", - "src": "1390:89:51", - "nodes": [], - "anonymous": false, - "eventSelector": "dccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496", - "name": "Burn", - "nameLocation": "1396:4:51", - "parameters": { - "id": 62000, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 61993, - "indexed": true, - "mutability": "mutable", - "name": "sender", - "nameLocation": "1417:6:51", - "nodeType": "VariableDeclaration", - "scope": 62001, - "src": "1401:22:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61992, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1401:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61995, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nameLocation": "1433:7:51", - "nodeType": "VariableDeclaration", - "scope": 62001, - "src": "1425:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61994, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1425:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61997, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nameLocation": "1450:7:51", - "nodeType": "VariableDeclaration", - "scope": 62001, - "src": "1442:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 61996, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1442:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 61999, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nameLocation": "1475:2:51", - "nodeType": "VariableDeclaration", - "scope": 62001, - "src": "1459:18:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 61998, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1459:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1400:78:51" - } - }, - { - "id": 62015, - "nodeType": "EventDefinition", - "src": "1484:187:51", - "nodes": [], - "anonymous": false, - "eventSelector": "d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", - "name": "Swap", - "nameLocation": "1490:4:51", - "parameters": { - "id": 62014, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62003, - "indexed": true, - "mutability": "mutable", - "name": "sender", - "nameLocation": "1520:6:51", - "nodeType": "VariableDeclaration", - "scope": 62015, - "src": "1504:22:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62002, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1504:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62005, - "indexed": false, - "mutability": "mutable", - "name": "amount0In", - "nameLocation": "1544:9:51", - "nodeType": "VariableDeclaration", - "scope": 62015, - "src": "1536:17:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62004, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1536:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62007, - "indexed": false, - "mutability": "mutable", - "name": "amount1In", - "nameLocation": "1571:9:51", - "nodeType": "VariableDeclaration", - "scope": 62015, - "src": "1563:17:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62006, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1563:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62009, - "indexed": false, - "mutability": "mutable", - "name": "amount0Out", - "nameLocation": "1598:10:51", - "nodeType": "VariableDeclaration", - "scope": 62015, - "src": "1590:18:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62008, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1590:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62011, - "indexed": false, - "mutability": "mutable", - "name": "amount1Out", - "nameLocation": "1626:10:51", - "nodeType": "VariableDeclaration", - "scope": 62015, - "src": "1618:18:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62010, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1618:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62013, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nameLocation": "1662:2:51", - "nodeType": "VariableDeclaration", - "scope": 62015, - "src": "1646:18:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62012, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1646:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1494:176:51" - } - }, - { - "id": 62021, - "nodeType": "EventDefinition", - "src": "1676:47:51", - "nodes": [], - "anonymous": false, - "eventSelector": "1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1", - "name": "Sync", - "nameLocation": "1682:4:51", - "parameters": { - "id": 62020, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62017, - "indexed": false, - "mutability": "mutable", - "name": "reserve0", - "nameLocation": "1695:8:51", - "nodeType": "VariableDeclaration", - "scope": 62021, - "src": "1687:16:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - }, - "typeName": { - "id": 62016, - "name": "uint112", - "nodeType": "ElementaryTypeName", - "src": "1687:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62019, - "indexed": false, - "mutability": "mutable", - "name": "reserve1", - "nameLocation": "1713:8:51", - "nodeType": "VariableDeclaration", - "scope": 62021, - "src": "1705:16:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - }, - "typeName": { - "id": 62018, - "name": "uint112", - "nodeType": "ElementaryTypeName", - "src": "1705:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - } - }, - "visibility": "internal" - } - ], - "src": "1686:36:51" - } - }, - { - "id": 62026, - "nodeType": "FunctionDefinition", - "src": "1729:61:51", - "nodes": [], - "functionSelector": "ba9a7a56", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "MINIMUM_LIQUIDITY", - "nameLocation": "1738:17:51", - "parameters": { - "id": 62022, - "nodeType": "ParameterList", - "parameters": [], - "src": "1755:2:51" - }, - "returnParameters": { - "id": 62025, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62024, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62026, - "src": "1781:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62023, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1781:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1780:9:51" - }, - "scope": 62108, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 62031, - "nodeType": "FunctionDefinition", - "src": "1796:51:51", - "nodes": [], - "functionSelector": "c45a0155", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "factory", - "nameLocation": "1805:7:51", - "parameters": { - "id": 62027, - "nodeType": "ParameterList", - "parameters": [], - "src": "1812:2:51" - }, - "returnParameters": { - "id": 62030, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62029, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62031, - "src": "1838:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62028, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1838:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1837:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62036, - "nodeType": "FunctionDefinition", - "src": "1853:50:51", - "nodes": [], - "functionSelector": "0dfe1681", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "token0", - "nameLocation": "1862:6:51", - "parameters": { - "id": 62032, - "nodeType": "ParameterList", - "parameters": [], - "src": "1868:2:51" - }, - "returnParameters": { - "id": 62035, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62034, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62036, - "src": "1894:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62033, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1894:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1893:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62041, - "nodeType": "FunctionDefinition", - "src": "1909:50:51", - "nodes": [], - "functionSelector": "d21220a7", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "token1", - "nameLocation": "1918:6:51", - "parameters": { - "id": 62037, - "nodeType": "ParameterList", - "parameters": [], - "src": "1924:2:51" - }, - "returnParameters": { - "id": 62040, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62039, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62041, - "src": "1950:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62038, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1950:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1949:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62050, - "nodeType": "FunctionDefinition", - "src": "1965:109:51", - "nodes": [], - "functionSelector": "0902f1ac", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getReserves", - "nameLocation": "1974:11:51", - "parameters": { - "id": 62042, - "nodeType": "ParameterList", - "parameters": [], - "src": "1985:2:51" - }, - "returnParameters": { - "id": 62049, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62044, - "mutability": "mutable", - "name": "reserve0", - "nameLocation": "2019:8:51", - "nodeType": "VariableDeclaration", - "scope": 62050, - "src": "2011:16:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - }, - "typeName": { - "id": 62043, - "name": "uint112", - "nodeType": "ElementaryTypeName", - "src": "2011:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62046, - "mutability": "mutable", - "name": "reserve1", - "nameLocation": "2037:8:51", - "nodeType": "VariableDeclaration", - "scope": 62050, - "src": "2029:16:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - }, - "typeName": { - "id": 62045, - "name": "uint112", - "nodeType": "ElementaryTypeName", - "src": "2029:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint112", - "typeString": "uint112" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62048, - "mutability": "mutable", - "name": "blockTimestampLast", - "nameLocation": "2054:18:51", - "nodeType": "VariableDeclaration", - "scope": 62050, - "src": "2047:25:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 62047, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2047:6:51", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "2010:63:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62055, - "nodeType": "FunctionDefinition", - "src": "2080:64:51", - "nodes": [], - "functionSelector": "5909c0d5", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "price0CumulativeLast", - "nameLocation": "2089:20:51", - "parameters": { - "id": 62051, - "nodeType": "ParameterList", - "parameters": [], - "src": "2109:2:51" - }, - "returnParameters": { - "id": 62054, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62053, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62055, - "src": "2135:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62052, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2135:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2134:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62060, - "nodeType": "FunctionDefinition", - "src": "2150:64:51", - "nodes": [], - "functionSelector": "5a3d5493", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "price1CumulativeLast", - "nameLocation": "2159:20:51", - "parameters": { - "id": 62056, - "nodeType": "ParameterList", - "parameters": [], - "src": "2179:2:51" - }, - "returnParameters": { - "id": 62059, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62058, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62060, - "src": "2205:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62057, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2205:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2204:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62065, - "nodeType": "FunctionDefinition", - "src": "2220:49:51", - "nodes": [], - "functionSelector": "7464fc3d", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "kLast", - "nameLocation": "2229:5:51", - "parameters": { - "id": 62061, - "nodeType": "ParameterList", - "parameters": [], - "src": "2234:2:51" - }, - "returnParameters": { - "id": 62064, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62063, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62065, - "src": "2260:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62062, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2260:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2259:9:51" - }, - "scope": 62108, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62072, - "nodeType": "FunctionDefinition", - "src": "2275:63:51", - "nodes": [], - "functionSelector": "6a627842", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "mint", - "nameLocation": "2284:4:51", - "parameters": { - "id": 62068, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62067, - "mutability": "mutable", - "name": "to", - "nameLocation": "2297:2:51", - "nodeType": "VariableDeclaration", - "scope": 62072, - "src": "2289:10:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62066, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2289:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2288:12:51" - }, - "returnParameters": { - "id": 62071, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62070, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "2327:9:51", - "nodeType": "VariableDeclaration", - "scope": 62072, - "src": "2319:17:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62069, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2319:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2318:19:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62081, - "nodeType": "FunctionDefinition", - "src": "2344:78:51", - "nodes": [], - "functionSelector": "89afcb44", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "burn", - "nameLocation": "2353:4:51", - "parameters": { - "id": 62075, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62074, - "mutability": "mutable", - "name": "to", - "nameLocation": "2366:2:51", - "nodeType": "VariableDeclaration", - "scope": 62081, - "src": "2358:10:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62073, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2358:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2357:12:51" - }, - "returnParameters": { - "id": 62080, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62077, - "mutability": "mutable", - "name": "amount0", - "nameLocation": "2396:7:51", - "nodeType": "VariableDeclaration", - "scope": 62081, - "src": "2388:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62076, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2388:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62079, - "mutability": "mutable", - "name": "amount1", - "nameLocation": "2413:7:51", - "nodeType": "VariableDeclaration", - "scope": 62081, - "src": "2405:15:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62078, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2405:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2387:34:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62092, - "nodeType": "FunctionDefinition", - "src": "2428:96:51", - "nodes": [], - "functionSelector": "022c0d9f", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swap", - "nameLocation": "2437:4:51", - "parameters": { - "id": 62090, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62083, - "mutability": "mutable", - "name": "amount0Out", - "nameLocation": "2450:10:51", - "nodeType": "VariableDeclaration", - "scope": 62092, - "src": "2442:18:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62082, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2442:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62085, - "mutability": "mutable", - "name": "amount1Out", - "nameLocation": "2470:10:51", - "nodeType": "VariableDeclaration", - "scope": 62092, - "src": "2462:18:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62084, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2462:7:51", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62087, - "mutability": "mutable", - "name": "to", - "nameLocation": "2490:2:51", - "nodeType": "VariableDeclaration", - "scope": 62092, - "src": "2482:10:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62086, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2482:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62089, - "mutability": "mutable", - "name": "data", - "nameLocation": "2509:4:51", - "nodeType": "VariableDeclaration", - "scope": 62092, - "src": "2494:19:51", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 62088, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2494:5:51", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "2441:73:51" - }, - "returnParameters": { - "id": 62091, - "nodeType": "ParameterList", - "parameters": [], - "src": "2523:0:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62097, - "nodeType": "FunctionDefinition", - "src": "2530:35:51", - "nodes": [], - "functionSelector": "bc25cf77", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "skim", - "nameLocation": "2539:4:51", - "parameters": { - "id": 62095, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62094, - "mutability": "mutable", - "name": "to", - "nameLocation": "2552:2:51", - "nodeType": "VariableDeclaration", - "scope": 62097, - "src": "2544:10:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62093, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2544:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2543:12:51" - }, - "returnParameters": { - "id": 62096, - "nodeType": "ParameterList", - "parameters": [], - "src": "2564:0:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62100, - "nodeType": "FunctionDefinition", - "src": "2571:25:51", - "nodes": [], - "functionSelector": "fff6cae9", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "sync", - "nameLocation": "2580:4:51", - "parameters": { - "id": 62098, - "nodeType": "ParameterList", - "parameters": [], - "src": "2584:2:51" - }, - "returnParameters": { - "id": 62099, - "nodeType": "ParameterList", - "parameters": [], - "src": "2595:0:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62107, - "nodeType": "FunctionDefinition", - "src": "2602:47:51", - "nodes": [], - "functionSelector": "485cc955", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "initialize", - "nameLocation": "2611:10:51", - "parameters": { - "id": 62105, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62102, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62107, - "src": "2622:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62101, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2622:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62104, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62107, - "src": "2631:7:51", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62103, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2631:7:51", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2621:18:51" - }, - "returnParameters": { - "id": 62106, - "nodeType": "ParameterList", - "parameters": [], - "src": "2648:0:51" - }, - "scope": 62108, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "ISovryn LBPair", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 61868, - "nodeType": "StructuredDocumentation", - "src": "63:85:51", - "text": "@title Sovryn LB V1 Pair Interface\n @notice Interface to interact with Sovryn LB V1 Pairs" - }, - "fullyImplemented": false, - "linearizedBaseContracts": [ - 62108 - ], - "name": "ISovryn LBPair", - "nameLocation": "158:8:51", - "scope": 62109, - "usedErrors": [], - "usedEvents": [ - 61876, - 61884, - 61991, - 62001, - 62015, - 62021 - ] - } - ], - "license": "GPL-3.0" - }, - "id": 51 -} \ No newline at end of file diff --git a/abi/IJoeRouter01.sol/IJoeRouter01.json b/abi/IJoeRouter01.sol/IJoeRouter01.json deleted file mode 100644 index 1b77817f..00000000 --- a/abi/IJoeRouter01.sol/IJoeRouter01.json +++ /dev/null @@ -1,5516 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "WAVAX", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountADesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "addLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountTokenDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "addLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "name": "getAmountIn", - "outputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "name": "getAmountOut", - "outputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "name": "getAmountsIn", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "name": "getAmountsOut", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveB", - "type": "uint256" - } - ], - "name": "quote", - "outputs": [ - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "removeLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "removeLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "removeLiquidityAVAXWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "removeLiquidityWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapAVAXForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactAVAXForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactTokensForAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactTokensForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapTokensForExactAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapTokensForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "methodIdentifiers": { - "WAVAX()": "73b295c2", - "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700", - "addLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)": "f91b3f72", - "factory()": "c45a0155", - "getAmountIn(uint256,uint256,uint256)": "85f8c259", - "getAmountOut(uint256,uint256,uint256)": "054d50d4", - "getAmountsIn(uint256,address[])": "1f00ca74", - "getAmountsOut(uint256,address[])": "d06ca61f", - "quote(uint256,uint256,uint256)": "ad615dec", - "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde", - "removeLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)": "33c6b725", - "removeLiquidityAVAXWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2c407024", - "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c", - "swapAVAXForExactTokens(uint256,address[],address,uint256)": "8a657e67", - "swapExactAVAXForTokens(uint256,address[],address,uint256)": "a2a1623d", - "swapExactTokensForAVAX(uint256,uint256,address[],address,uint256)": "676528d1", - "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739", - "swapTokensForExactAVAX(uint256,uint256,address[],address,uint256)": "7a42416a", - "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WAVAX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAVAXWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAVAXForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Router01 Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovryn LBRouter01.sol\":\"ISovryn LBRouter01\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovryn LBRouter01.sol\":{\"keccak256\":\"0xf4b1231b30bfc09c20708865915b67eb0bf906fc09ad0da2b0b724a8d83d58f7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3b3ba0bb0ac3d075019262b184fb833e9cd0b5faea4a6a7db36c43a7871a2474\",\"dweb:/ipfs/QmPKEFQHdXUP5wadWwicUopbAerQZtpvPRRpCJsbJ3XGDq\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "WAVAX", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountADesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "addLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountTokenDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "addLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "getAmountIn", - "outputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "getAmountOut", - "outputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getAmountsIn", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getAmountsOut", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveB", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "quote", - "outputs": [ - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityAVAXWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "swapAVAXForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "swapExactAVAXForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapExactTokensForAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapExactTokensForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapTokensForExactAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapTokensForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/interfaces/ISovryn LBRouter01.sol": "ISovryn LBRouter01" - }, - "libraries": {} - }, - "sources": { - "src/interfaces/ISovryn LBRouter01.sol": { - "keccak256": "0xf4b1231b30bfc09c20708865915b67eb0bf906fc09ad0da2b0b724a8d83d58f7", - "urls": [ - "bzz-raw://3b3ba0bb0ac3d075019262b184fb833e9cd0b5faea4a6a7db36c43a7871a2474", - "dweb:/ipfs/QmPKEFQHdXUP5wadWwicUopbAerQZtpvPRRpCJsbJ3XGDq" - ], - "license": "GPL-3.0" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/interfaces/ISovryn LBRouter01.sol", - "id": 62418, - "exportedSymbols": { - "ISovryn LBRouter01": [ - 62417 - ] - }, - "nodeType": "SourceUnit", - "src": "37:4075:52", - "nodes": [ - { - "id": 62110, - "nodeType": "PragmaDirective", - "src": "37:24:52", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".10" - ] - }, - { - "id": 62417, - "nodeType": "ContractDefinition", - "src": "153:3958:52", - "nodes": [ - { - "id": 62116, - "nodeType": "FunctionDefinition", - "src": "182:51:52", - "nodes": [], - "functionSelector": "c45a0155", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "factory", - "nameLocation": "191:7:52", - "parameters": { - "id": 62112, - "nodeType": "ParameterList", - "parameters": [], - "src": "198:2:52" - }, - "returnParameters": { - "id": 62115, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62114, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62116, - "src": "224:7:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62113, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "224:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "223:9:52" - }, - "scope": 62417, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 62121, - "nodeType": "FunctionDefinition", - "src": "239:49:52", - "nodes": [], - "functionSelector": "73b295c2", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "WAVAX", - "nameLocation": "248:5:52", - "parameters": { - "id": 62117, - "nodeType": "ParameterList", - "parameters": [], - "src": "253:2:52" - }, - "returnParameters": { - "id": 62120, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62119, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62121, - "src": "279:7:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62118, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "279:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "278:9:52" - }, - "scope": 62417, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 62146, - "nodeType": "FunctionDefinition", - "src": "294:313:52", - "nodes": [], - "functionSelector": "e8e33700", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "addLiquidity", - "nameLocation": "303:12:52", - "parameters": { - "id": 62138, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62123, - "mutability": "mutable", - "name": "tokenA", - "nameLocation": "333:6:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "325:14:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62122, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "325:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62125, - "mutability": "mutable", - "name": "tokenB", - "nameLocation": "357:6:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "349:14:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62124, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "349:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62127, - "mutability": "mutable", - "name": "amountADesired", - "nameLocation": "381:14:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "373:22:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62126, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "373:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62129, - "mutability": "mutable", - "name": "amountBDesired", - "nameLocation": "413:14:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "405:22:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62128, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "405:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62131, - "mutability": "mutable", - "name": "amountAMin", - "nameLocation": "445:10:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "437:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62130, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "437:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62133, - "mutability": "mutable", - "name": "amountBMin", - "nameLocation": "473:10:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "465:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62132, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "465:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62135, - "mutability": "mutable", - "name": "to", - "nameLocation": "501:2:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "493:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62134, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "493:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62137, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "521:8:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "513:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62136, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "513:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "315:220:52" - }, - "returnParameters": { - "id": 62145, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62140, - "mutability": "mutable", - "name": "amountA", - "nameLocation": "562:7:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "554:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62139, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "554:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62142, - "mutability": "mutable", - "name": "amountB", - "nameLocation": "579:7:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "571:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62141, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "571:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62144, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "596:9:52", - "nodeType": "VariableDeclaration", - "scope": 62146, - "src": "588:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62143, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "588:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "553:53:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62167, - "nodeType": "FunctionDefinition", - "src": "613:286:52", - "nodes": [], - "functionSelector": "f91b3f72", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "addLiquidityAVAX", - "nameLocation": "622:16:52", - "parameters": { - "id": 62159, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62148, - "mutability": "mutable", - "name": "token", - "nameLocation": "656:5:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "648:13:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62147, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "648:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62150, - "mutability": "mutable", - "name": "amountTokenDesired", - "nameLocation": "679:18:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "671:26:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62149, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "671:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62152, - "mutability": "mutable", - "name": "amountTokenMin", - "nameLocation": "715:14:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "707:22:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62151, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "707:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62154, - "mutability": "mutable", - "name": "amountAVAXMin", - "nameLocation": "747:13:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "739:21:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62153, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "739:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62156, - "mutability": "mutable", - "name": "to", - "nameLocation": "778:2:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "770:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62155, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "770:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62158, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "798:8:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "790:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62157, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "790:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "638:174:52" - }, - "returnParameters": { - "id": 62166, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62161, - "mutability": "mutable", - "name": "amountToken", - "nameLocation": "847:11:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "839:19:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62160, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "839:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62163, - "mutability": "mutable", - "name": "amountAVAX", - "nameLocation": "868:10:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "860:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62162, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "860:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62165, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "888:9:52", - "nodeType": "VariableDeclaration", - "scope": 62167, - "src": "880:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62164, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "880:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "838:60:52" - }, - "scope": 62417, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62188, - "nodeType": "FunctionDefinition", - "src": "905:260:52", - "nodes": [], - "functionSelector": "baa2abde", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "removeLiquidity", - "nameLocation": "914:15:52", - "parameters": { - "id": 62182, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62169, - "mutability": "mutable", - "name": "tokenA", - "nameLocation": "947:6:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "939:14:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62168, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "939:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62171, - "mutability": "mutable", - "name": "tokenB", - "nameLocation": "971:6:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "963:14:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62170, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "963:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62173, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "995:9:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "987:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "987:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62175, - "mutability": "mutable", - "name": "amountAMin", - "nameLocation": "1022:10:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "1014:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62174, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1014:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62177, - "mutability": "mutable", - "name": "amountBMin", - "nameLocation": "1050:10:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "1042:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62176, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1042:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62179, - "mutability": "mutable", - "name": "to", - "nameLocation": "1078:2:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "1070:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62178, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1070:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62181, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1098:8:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "1090:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62180, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1090:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "929:183:52" - }, - "returnParameters": { - "id": 62187, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62184, - "mutability": "mutable", - "name": "amountA", - "nameLocation": "1139:7:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "1131:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62183, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1131:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62186, - "mutability": "mutable", - "name": "amountB", - "nameLocation": "1156:7:52", - "nodeType": "VariableDeclaration", - "scope": 62188, - "src": "1148:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62185, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1148:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1130:34:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62207, - "nodeType": "FunctionDefinition", - "src": "1171:253:52", - "nodes": [], - "functionSelector": "33c6b725", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "removeLiquidityAVAX", - "nameLocation": "1180:19:52", - "parameters": { - "id": 62201, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62190, - "mutability": "mutable", - "name": "token", - "nameLocation": "1217:5:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1209:13:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62189, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1209:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62192, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "1240:9:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1232:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62191, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1232:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62194, - "mutability": "mutable", - "name": "amountTokenMin", - "nameLocation": "1267:14:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1259:22:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62193, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1259:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62196, - "mutability": "mutable", - "name": "amountAVAXMin", - "nameLocation": "1299:13:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1291:21:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62195, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1291:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62198, - "mutability": "mutable", - "name": "to", - "nameLocation": "1330:2:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1322:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62197, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1322:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62200, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1350:8:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1342:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62199, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1342:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1199:165:52" - }, - "returnParameters": { - "id": 62206, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62203, - "mutability": "mutable", - "name": "amountToken", - "nameLocation": "1391:11:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1383:19:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62202, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1383:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62205, - "mutability": "mutable", - "name": "amountAVAX", - "nameLocation": "1412:10:52", - "nodeType": "VariableDeclaration", - "scope": 62207, - "src": "1404:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62204, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1404:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1382:41:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62236, - "nodeType": "FunctionDefinition", - "src": "1430:350:52", - "nodes": [], - "functionSelector": "2195995c", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "removeLiquidityWithPermit", - "nameLocation": "1439:25:52", - "parameters": { - "id": 62230, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62209, - "mutability": "mutable", - "name": "tokenA", - "nameLocation": "1482:6:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1474:14:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1474:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62211, - "mutability": "mutable", - "name": "tokenB", - "nameLocation": "1506:6:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1498:14:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62210, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1498:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62213, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "1530:9:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1522:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62212, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1522:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62215, - "mutability": "mutable", - "name": "amountAMin", - "nameLocation": "1557:10:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1549:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62214, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1549:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62217, - "mutability": "mutable", - "name": "amountBMin", - "nameLocation": "1585:10:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1577:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62216, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1577:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62219, - "mutability": "mutable", - "name": "to", - "nameLocation": "1613:2:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1605:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62218, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1605:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62221, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1633:8:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1625:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62220, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1625:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62223, - "mutability": "mutable", - "name": "approveMax", - "nameLocation": "1656:10:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1651:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 62222, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1651:4:52", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62225, - "mutability": "mutable", - "name": "v", - "nameLocation": "1682:1:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1676:7:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 62224, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1676:5:52", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62227, - "mutability": "mutable", - "name": "r", - "nameLocation": "1701:1:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1693:9:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62226, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1693:7:52", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62229, - "mutability": "mutable", - "name": "s", - "nameLocation": "1720:1:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1712:9:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62228, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1712:7:52", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1464:263:52" - }, - "returnParameters": { - "id": 62235, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62232, - "mutability": "mutable", - "name": "amountA", - "nameLocation": "1754:7:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1746:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62231, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1746:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62234, - "mutability": "mutable", - "name": "amountB", - "nameLocation": "1771:7:52", - "nodeType": "VariableDeclaration", - "scope": 62236, - "src": "1763:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62233, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1763:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1745:34:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62263, - "nodeType": "FunctionDefinition", - "src": "1786:343:52", - "nodes": [], - "functionSelector": "2c407024", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "removeLiquidityAVAXWithPermit", - "nameLocation": "1795:29:52", - "parameters": { - "id": 62257, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62238, - "mutability": "mutable", - "name": "token", - "nameLocation": "1842:5:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "1834:13:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62237, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1834:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62240, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "1865:9:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "1857:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62239, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1857:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62242, - "mutability": "mutable", - "name": "amountTokenMin", - "nameLocation": "1892:14:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "1884:22:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62241, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1884:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62244, - "mutability": "mutable", - "name": "amountAVAXMin", - "nameLocation": "1924:13:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "1916:21:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62243, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1916:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62246, - "mutability": "mutable", - "name": "to", - "nameLocation": "1955:2:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "1947:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62245, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1947:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62248, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1975:8:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "1967:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62247, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1967:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62250, - "mutability": "mutable", - "name": "approveMax", - "nameLocation": "1998:10:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "1993:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 62249, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1993:4:52", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62252, - "mutability": "mutable", - "name": "v", - "nameLocation": "2024:1:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "2018:7:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 62251, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2018:5:52", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62254, - "mutability": "mutable", - "name": "r", - "nameLocation": "2043:1:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "2035:9:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62253, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2035:7:52", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62256, - "mutability": "mutable", - "name": "s", - "nameLocation": "2062:1:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "2054:9:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62255, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2054:7:52", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1824:245:52" - }, - "returnParameters": { - "id": 62262, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62259, - "mutability": "mutable", - "name": "amountToken", - "nameLocation": "2096:11:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "2088:19:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62258, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2088:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62261, - "mutability": "mutable", - "name": "amountAVAX", - "nameLocation": "2117:10:52", - "nodeType": "VariableDeclaration", - "scope": 62263, - "src": "2109:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62260, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2109:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2087:41:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62280, - "nodeType": "FunctionDefinition", - "src": "2135:219:52", - "nodes": [], - "functionSelector": "38ed1739", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapExactTokensForTokens", - "nameLocation": "2144:24:52", - "parameters": { - "id": 62275, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62265, - "mutability": "mutable", - "name": "amountIn", - "nameLocation": "2186:8:52", - "nodeType": "VariableDeclaration", - "scope": 62280, - "src": "2178:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62264, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2178:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62267, - "mutability": "mutable", - "name": "amountOutMin", - "nameLocation": "2212:12:52", - "nodeType": "VariableDeclaration", - "scope": 62280, - "src": "2204:20:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62266, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2204:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62270, - "mutability": "mutable", - "name": "path", - "nameLocation": "2253:4:52", - "nodeType": "VariableDeclaration", - "scope": 62280, - "src": "2234:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62268, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2234:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62269, - "nodeType": "ArrayTypeName", - "src": "2234:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62272, - "mutability": "mutable", - "name": "to", - "nameLocation": "2275:2:52", - "nodeType": "VariableDeclaration", - "scope": 62280, - "src": "2267:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62271, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2267:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62274, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "2295:8:52", - "nodeType": "VariableDeclaration", - "scope": 62280, - "src": "2287:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62273, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2287:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2168:141:52" - }, - "returnParameters": { - "id": 62279, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62278, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "2345:7:52", - "nodeType": "VariableDeclaration", - "scope": 62280, - "src": "2328:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62276, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2328:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62277, - "nodeType": "ArrayTypeName", - "src": "2328:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "2327:26:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62297, - "nodeType": "FunctionDefinition", - "src": "2360:219:52", - "nodes": [], - "functionSelector": "8803dbee", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapTokensForExactTokens", - "nameLocation": "2369:24:52", - "parameters": { - "id": 62292, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62282, - "mutability": "mutable", - "name": "amountOut", - "nameLocation": "2411:9:52", - "nodeType": "VariableDeclaration", - "scope": 62297, - "src": "2403:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62281, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2403:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62284, - "mutability": "mutable", - "name": "amountInMax", - "nameLocation": "2438:11:52", - "nodeType": "VariableDeclaration", - "scope": 62297, - "src": "2430:19:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62283, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2430:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62287, - "mutability": "mutable", - "name": "path", - "nameLocation": "2478:4:52", - "nodeType": "VariableDeclaration", - "scope": 62297, - "src": "2459:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62285, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2459:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62286, - "nodeType": "ArrayTypeName", - "src": "2459:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62289, - "mutability": "mutable", - "name": "to", - "nameLocation": "2500:2:52", - "nodeType": "VariableDeclaration", - "scope": 62297, - "src": "2492:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62288, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2492:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62291, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "2520:8:52", - "nodeType": "VariableDeclaration", - "scope": 62297, - "src": "2512:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62290, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2512:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2393:141:52" - }, - "returnParameters": { - "id": 62296, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62295, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "2570:7:52", - "nodeType": "VariableDeclaration", - "scope": 62297, - "src": "2553:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62293, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2553:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62294, - "nodeType": "ArrayTypeName", - "src": "2553:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "2552:26:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62312, - "nodeType": "FunctionDefinition", - "src": "2585:185:52", - "nodes": [], - "functionSelector": "a2a1623d", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapExactAVAXForTokens", - "nameLocation": "2594:22:52", - "parameters": { - "id": 62307, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62299, - "mutability": "mutable", - "name": "amountOutMin", - "nameLocation": "2625:12:52", - "nodeType": "VariableDeclaration", - "scope": 62312, - "src": "2617:20:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2617:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62302, - "mutability": "mutable", - "name": "path", - "nameLocation": "2658:4:52", - "nodeType": "VariableDeclaration", - "scope": 62312, - "src": "2639:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62300, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2639:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62301, - "nodeType": "ArrayTypeName", - "src": "2639:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62304, - "mutability": "mutable", - "name": "to", - "nameLocation": "2672:2:52", - "nodeType": "VariableDeclaration", - "scope": 62312, - "src": "2664:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62303, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2664:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62306, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "2684:8:52", - "nodeType": "VariableDeclaration", - "scope": 62312, - "src": "2676:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62305, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2676:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2616:77:52" - }, - "returnParameters": { - "id": 62311, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62310, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "2761:7:52", - "nodeType": "VariableDeclaration", - "scope": 62312, - "src": "2744:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62308, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2744:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62309, - "nodeType": "ArrayTypeName", - "src": "2744:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "2743:26:52" - }, - "scope": 62417, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62329, - "nodeType": "FunctionDefinition", - "src": "2776:217:52", - "nodes": [], - "functionSelector": "7a42416a", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapTokensForExactAVAX", - "nameLocation": "2785:22:52", - "parameters": { - "id": 62324, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62314, - "mutability": "mutable", - "name": "amountOut", - "nameLocation": "2825:9:52", - "nodeType": "VariableDeclaration", - "scope": 62329, - "src": "2817:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62313, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2817:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62316, - "mutability": "mutable", - "name": "amountInMax", - "nameLocation": "2852:11:52", - "nodeType": "VariableDeclaration", - "scope": 62329, - "src": "2844:19:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62315, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2844:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62319, - "mutability": "mutable", - "name": "path", - "nameLocation": "2892:4:52", - "nodeType": "VariableDeclaration", - "scope": 62329, - "src": "2873:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62317, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2873:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62318, - "nodeType": "ArrayTypeName", - "src": "2873:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62321, - "mutability": "mutable", - "name": "to", - "nameLocation": "2914:2:52", - "nodeType": "VariableDeclaration", - "scope": 62329, - "src": "2906:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62320, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2906:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62323, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "2934:8:52", - "nodeType": "VariableDeclaration", - "scope": 62329, - "src": "2926:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62322, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2926:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2807:141:52" - }, - "returnParameters": { - "id": 62328, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62327, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "2984:7:52", - "nodeType": "VariableDeclaration", - "scope": 62329, - "src": "2967:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62325, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2967:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62326, - "nodeType": "ArrayTypeName", - "src": "2967:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "2966:26:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62346, - "nodeType": "FunctionDefinition", - "src": "2999:217:52", - "nodes": [], - "functionSelector": "676528d1", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapExactTokensForAVAX", - "nameLocation": "3008:22:52", - "parameters": { - "id": 62341, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62331, - "mutability": "mutable", - "name": "amountIn", - "nameLocation": "3048:8:52", - "nodeType": "VariableDeclaration", - "scope": 62346, - "src": "3040:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62330, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3040:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62333, - "mutability": "mutable", - "name": "amountOutMin", - "nameLocation": "3074:12:52", - "nodeType": "VariableDeclaration", - "scope": 62346, - "src": "3066:20:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62332, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3066:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62336, - "mutability": "mutable", - "name": "path", - "nameLocation": "3115:4:52", - "nodeType": "VariableDeclaration", - "scope": 62346, - "src": "3096:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62334, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3096:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62335, - "nodeType": "ArrayTypeName", - "src": "3096:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62338, - "mutability": "mutable", - "name": "to", - "nameLocation": "3137:2:52", - "nodeType": "VariableDeclaration", - "scope": 62346, - "src": "3129:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62337, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3129:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62340, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "3157:8:52", - "nodeType": "VariableDeclaration", - "scope": 62346, - "src": "3149:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62339, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3149:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3030:141:52" - }, - "returnParameters": { - "id": 62345, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62344, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "3207:7:52", - "nodeType": "VariableDeclaration", - "scope": 62346, - "src": "3190:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62342, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3190:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62343, - "nodeType": "ArrayTypeName", - "src": "3190:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "3189:26:52" - }, - "scope": 62417, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62361, - "nodeType": "FunctionDefinition", - "src": "3222:182:52", - "nodes": [], - "functionSelector": "8a657e67", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapAVAXForExactTokens", - "nameLocation": "3231:22:52", - "parameters": { - "id": 62356, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62348, - "mutability": "mutable", - "name": "amountOut", - "nameLocation": "3262:9:52", - "nodeType": "VariableDeclaration", - "scope": 62361, - "src": "3254:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62347, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3254:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62351, - "mutability": "mutable", - "name": "path", - "nameLocation": "3292:4:52", - "nodeType": "VariableDeclaration", - "scope": 62361, - "src": "3273:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62349, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3273:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62350, - "nodeType": "ArrayTypeName", - "src": "3273:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62353, - "mutability": "mutable", - "name": "to", - "nameLocation": "3306:2:52", - "nodeType": "VariableDeclaration", - "scope": 62361, - "src": "3298:10:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62352, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3298:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62355, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "3318:8:52", - "nodeType": "VariableDeclaration", - "scope": 62361, - "src": "3310:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62354, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3310:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3253:74:52" - }, - "returnParameters": { - "id": 62360, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62359, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "3395:7:52", - "nodeType": "VariableDeclaration", - "scope": 62361, - "src": "3378:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62357, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3378:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62358, - "nodeType": "ArrayTypeName", - "src": "3378:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "3377:26:52" - }, - "scope": 62417, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62372, - "nodeType": "FunctionDefinition", - "src": "3410:108:52", - "nodes": [], - "functionSelector": "ad615dec", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "quote", - "nameLocation": "3419:5:52", - "parameters": { - "id": 62368, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62363, - "mutability": "mutable", - "name": "amountA", - "nameLocation": "3433:7:52", - "nodeType": "VariableDeclaration", - "scope": 62372, - "src": "3425:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62362, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3425:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62365, - "mutability": "mutable", - "name": "reserveA", - "nameLocation": "3450:8:52", - "nodeType": "VariableDeclaration", - "scope": 62372, - "src": "3442:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62364, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3442:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62367, - "mutability": "mutable", - "name": "reserveB", - "nameLocation": "3468:8:52", - "nodeType": "VariableDeclaration", - "scope": 62372, - "src": "3460:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62366, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3460:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3424:53:52" - }, - "returnParameters": { - "id": 62371, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62370, - "mutability": "mutable", - "name": "amountB", - "nameLocation": "3509:7:52", - "nodeType": "VariableDeclaration", - "scope": 62372, - "src": "3501:15:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62369, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3501:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3500:17:52" - }, - "scope": 62417, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 62383, - "nodeType": "FunctionDefinition", - "src": "3524:145:52", - "nodes": [], - "functionSelector": "054d50d4", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getAmountOut", - "nameLocation": "3533:12:52", - "parameters": { - "id": 62379, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62374, - "mutability": "mutable", - "name": "amountIn", - "nameLocation": "3554:8:52", - "nodeType": "VariableDeclaration", - "scope": 62383, - "src": "3546:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3546:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62376, - "mutability": "mutable", - "name": "reserveIn", - "nameLocation": "3572:9:52", - "nodeType": "VariableDeclaration", - "scope": 62383, - "src": "3564:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62375, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3564:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62378, - "mutability": "mutable", - "name": "reserveOut", - "nameLocation": "3591:10:52", - "nodeType": "VariableDeclaration", - "scope": 62383, - "src": "3583:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62377, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3583:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3545:57:52" - }, - "returnParameters": { - "id": 62382, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62381, - "mutability": "mutable", - "name": "amountOut", - "nameLocation": "3658:9:52", - "nodeType": "VariableDeclaration", - "scope": 62383, - "src": "3650:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62380, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3650:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3649:19:52" - }, - "scope": 62417, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 62394, - "nodeType": "FunctionDefinition", - "src": "3675:144:52", - "nodes": [], - "functionSelector": "85f8c259", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getAmountIn", - "nameLocation": "3684:11:52", - "parameters": { - "id": 62390, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62385, - "mutability": "mutable", - "name": "amountOut", - "nameLocation": "3704:9:52", - "nodeType": "VariableDeclaration", - "scope": 62394, - "src": "3696:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62384, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3696:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62387, - "mutability": "mutable", - "name": "reserveIn", - "nameLocation": "3723:9:52", - "nodeType": "VariableDeclaration", - "scope": 62394, - "src": "3715:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62386, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3715:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62389, - "mutability": "mutable", - "name": "reserveOut", - "nameLocation": "3742:10:52", - "nodeType": "VariableDeclaration", - "scope": 62394, - "src": "3734:18:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62388, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3734:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3695:58:52" - }, - "returnParameters": { - "id": 62393, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62392, - "mutability": "mutable", - "name": "amountIn", - "nameLocation": "3809:8:52", - "nodeType": "VariableDeclaration", - "scope": 62394, - "src": "3801:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62391, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3801:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3800:18:52" - }, - "scope": 62417, - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "id": 62405, - "nodeType": "FunctionDefinition", - "src": "3825:139:52", - "nodes": [], - "functionSelector": "d06ca61f", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getAmountsOut", - "nameLocation": "3834:13:52", - "parameters": { - "id": 62400, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62396, - "mutability": "mutable", - "name": "amountIn", - "nameLocation": "3856:8:52", - "nodeType": "VariableDeclaration", - "scope": 62405, - "src": "3848:16:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62395, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3848:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62399, - "mutability": "mutable", - "name": "path", - "nameLocation": "3885:4:52", - "nodeType": "VariableDeclaration", - "scope": 62405, - "src": "3866:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62397, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3866:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62398, - "nodeType": "ArrayTypeName", - "src": "3866:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - } - ], - "src": "3847:43:52" - }, - "returnParameters": { - "id": 62404, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62403, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "3955:7:52", - "nodeType": "VariableDeclaration", - "scope": 62405, - "src": "3938:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62401, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3938:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62402, - "nodeType": "ArrayTypeName", - "src": "3938:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "3937:26:52" - }, - "scope": 62417, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 62416, - "nodeType": "FunctionDefinition", - "src": "3970:139:52", - "nodes": [], - "functionSelector": "1f00ca74", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getAmountsIn", - "nameLocation": "3979:12:52", - "parameters": { - "id": 62411, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62407, - "mutability": "mutable", - "name": "amountOut", - "nameLocation": "4000:9:52", - "nodeType": "VariableDeclaration", - "scope": 62416, - "src": "3992:17:52", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62406, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3992:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62410, - "mutability": "mutable", - "name": "path", - "nameLocation": "4030:4:52", - "nodeType": "VariableDeclaration", - "scope": 62416, - "src": "4011:23:52", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62408, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4011:7:52", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62409, - "nodeType": "ArrayTypeName", - "src": "4011:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - } - ], - "src": "3991:44:52" - }, - "returnParameters": { - "id": 62415, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62414, - "mutability": "mutable", - "name": "amounts", - "nameLocation": "4100:7:52", - "nodeType": "VariableDeclaration", - "scope": 62416, - "src": "4083:24:52", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62412, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4083:7:52", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62413, - "nodeType": "ArrayTypeName", - "src": "4083:9:52", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "4082:26:52" - }, - "scope": 62417, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "ISovryn LBRouter01", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 62111, - "nodeType": "StructuredDocumentation", - "src": "63:90:52", - "text": "@title Sovryn LB V1 Router01 Interface\n @notice Interface to interact with Sovryn LB V1 Router" - }, - "fullyImplemented": false, - "linearizedBaseContracts": [ - 62417 - ], - "name": "ISovryn LBRouter01", - "nameLocation": "163:12:52", - "scope": 62418, - "usedErrors": [], - "usedEvents": [] - } - ], - "license": "GPL-3.0" - }, - "id": 52 -} \ No newline at end of file diff --git a/abi/IJoeRouter02.sol/IJoeRouter02.json b/abi/IJoeRouter02.sol/IJoeRouter02.json deleted file mode 100644 index 1644d21f..00000000 --- a/abi/IJoeRouter02.sol/IJoeRouter02.json +++ /dev/null @@ -1,3149 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "WAVAX", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountADesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "addLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountTokenDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "addLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "name": "getAmountIn", - "outputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "name": "getAmountOut", - "outputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "name": "getAmountsIn", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "name": "getAmountsOut", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveB", - "type": "uint256" - } - ], - "name": "quote", - "outputs": [ - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "removeLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "removeLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "removeLiquidityAVAXSupportingFeeOnTransferTokens", - "outputs": [ - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "removeLiquidityAVAXWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens", - "outputs": [ - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "removeLiquidityWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapAVAXForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactAVAXForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactTokensForAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactTokensForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapTokensForExactAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "swapTokensForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "methodIdentifiers": { - "WAVAX()": "73b295c2", - "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700", - "addLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)": "f91b3f72", - "factory()": "c45a0155", - "getAmountIn(uint256,uint256,uint256)": "85f8c259", - "getAmountOut(uint256,uint256,uint256)": "054d50d4", - "getAmountsIn(uint256,address[])": "1f00ca74", - "getAmountsOut(uint256,address[])": "d06ca61f", - "quote(uint256,uint256,uint256)": "ad615dec", - "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde", - "removeLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)": "33c6b725", - "removeLiquidityAVAXSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)": "73bc79cf", - "removeLiquidityAVAXWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2c407024", - "removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "9fc27226", - "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c", - "swapAVAXForExactTokens(uint256,address[],address,uint256)": "8a657e67", - "swapExactAVAXForTokens(uint256,address[],address,uint256)": "a2a1623d", - "swapExactAVAXForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)": "c57559dd", - "swapExactTokensForAVAX(uint256,uint256,address[],address,uint256)": "676528d1", - "swapExactTokensForAVAXSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "762b1562", - "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739", - "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "5c11d795", - "swapTokensForExactAVAX(uint256,uint256,address[],address,uint256)": "7a42416a", - "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WAVAX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAXSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAVAXWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAVAXForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAXSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Router Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovryn LBRouter02.sol\":\"ISovryn LBRouter02\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovryn LBRouter01.sol\":{\"keccak256\":\"0xf4b1231b30bfc09c20708865915b67eb0bf906fc09ad0da2b0b724a8d83d58f7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3b3ba0bb0ac3d075019262b184fb833e9cd0b5faea4a6a7db36c43a7871a2474\",\"dweb:/ipfs/QmPKEFQHdXUP5wadWwicUopbAerQZtpvPRRpCJsbJ3XGDq\"]},\"src/interfaces/ISovryn LBRouter02.sol\":{\"keccak256\":\"0x7845f6f38ec7dc5bc327055ab11d386dce9159211969243234a1826cd5261557\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1afddf6f53ed0096d6a1b03bb02af5df352f4d9bb588592d2184f4a901d3933e\",\"dweb:/ipfs/QmZGiDagk2CD2PVKQE34Prq9nKw3WxdeiinwjQDKZafLuM\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "WAVAX", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountADesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "addLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountTokenDesired", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "addLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "pure", - "type": "function", - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "getAmountIn", - "outputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveOut", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "getAmountOut", - "outputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getAmountsIn", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getAmountsOut", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "reserveB", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function", - "name": "quote", - "outputs": [ - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidity", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityAVAX", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityAVAXSupportingFeeOnTransferTokens", - "outputs": [ - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityAVAXWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountToken", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountTokenMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAVAXMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens", - "outputs": [ - { - "internalType": "uint256", - "name": "amountAVAX", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint256", - "name": "liquidity", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountAMin", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountBMin", - "type": "uint256" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "approveMax", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "removeLiquidityWithPermit", - "outputs": [ - { - "internalType": "uint256", - "name": "amountA", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountB", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "swapAVAXForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "swapExactAVAXForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapExactTokensForAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapExactTokensForTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMin", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapTokensForExactAVAX", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountInMax", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "path", - "type": "address[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "swapTokensForExactTokens", - "outputs": [ - { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/interfaces/ISovryn LBRouter02.sol": "ISovryn LBRouter02" - }, - "libraries": {} - }, - "sources": { - "src/interfaces/ISovryn LBRouter01.sol": { - "keccak256": "0xf4b1231b30bfc09c20708865915b67eb0bf906fc09ad0da2b0b724a8d83d58f7", - "urls": [ - "bzz-raw://3b3ba0bb0ac3d075019262b184fb833e9cd0b5faea4a6a7db36c43a7871a2474", - "dweb:/ipfs/QmPKEFQHdXUP5wadWwicUopbAerQZtpvPRRpCJsbJ3XGDq" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovryn LBRouter02.sol": { - "keccak256": "0x7845f6f38ec7dc5bc327055ab11d386dce9159211969243234a1826cd5261557", - "urls": [ - "bzz-raw://1afddf6f53ed0096d6a1b03bb02af5df352f4d9bb588592d2184f4a901d3933e", - "dweb:/ipfs/QmZGiDagk2CD2PVKQE34Prq9nKw3WxdeiinwjQDKZafLuM" - ], - "license": "GPL-3.0" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/interfaces/ISovryn LBRouter02.sol", - "id": 62508, - "exportedSymbols": { - "ISovryn LBRouter01": [ - 62417 - ], - "ISovryn LBRouter02": [ - 62507 - ] - }, - "nodeType": "SourceUnit", - "src": "37:1465:53", - "nodes": [ - { - "id": 62419, - "nodeType": "PragmaDirective", - "src": "37:24:53", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".10" - ] - }, - { - "id": 62421, - "nodeType": "ImportDirective", - "src": "63:48:53", - "nodes": [], - "absolutePath": "src/interfaces/ISovryn LBRouter01.sol", - "file": "./ISovryn LBRouter01.sol", - "nameLocation": "-1:-1:-1", - "scope": 62508, - "sourceUnit": 62418, - "symbolAliases": [ - { - "foreign": { - "id": 62420, - "name": "ISovryn LBRouter01", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62417, - "src": "71:12:53", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62507, - "nodeType": "ContractDefinition", - "src": "201:1300:53", - "nodes": [ - { - "id": 62441, - "nodeType": "FunctionDefinition", - "src": "246:261:53", - "nodes": [], - "functionSelector": "73bc79cf", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "removeLiquidityAVAXSupportingFeeOnTransferTokens", - "nameLocation": "255:48:53", - "parameters": { - "id": 62437, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62426, - "mutability": "mutable", - "name": "token", - "nameLocation": "321:5:53", - "nodeType": "VariableDeclaration", - "scope": 62441, - "src": "313:13:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62425, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "313:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62428, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "344:9:53", - "nodeType": "VariableDeclaration", - "scope": 62441, - "src": "336:17:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62427, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "336:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62430, - "mutability": "mutable", - "name": "amountTokenMin", - "nameLocation": "371:14:53", - "nodeType": "VariableDeclaration", - "scope": 62441, - "src": "363:22:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62429, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "363:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62432, - "mutability": "mutable", - "name": "amountAVAXMin", - "nameLocation": "403:13:53", - "nodeType": "VariableDeclaration", - "scope": 62441, - "src": "395:21:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62431, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "395:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62434, - "mutability": "mutable", - "name": "to", - "nameLocation": "434:2:53", - "nodeType": "VariableDeclaration", - "scope": 62441, - "src": "426:10:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62433, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "426:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62436, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "454:8:53", - "nodeType": "VariableDeclaration", - "scope": 62441, - "src": "446:16:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62435, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "446:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "303:165:53" - }, - "returnParameters": { - "id": 62440, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62439, - "mutability": "mutable", - "name": "amountAVAX", - "nameLocation": "495:10:53", - "nodeType": "VariableDeclaration", - "scope": 62441, - "src": "487:18:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62438, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "487:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "486:20:53" - }, - "scope": 62507, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62466, - "nodeType": "FunctionDefinition", - "src": "513:351:53", - "nodes": [], - "functionSelector": "9fc27226", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens", - "nameLocation": "522:58:53", - "parameters": { - "id": 62462, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62443, - "mutability": "mutable", - "name": "token", - "nameLocation": "598:5:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "590:13:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62442, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "590:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62445, - "mutability": "mutable", - "name": "liquidity", - "nameLocation": "621:9:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "613:17:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62444, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "613:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62447, - "mutability": "mutable", - "name": "amountTokenMin", - "nameLocation": "648:14:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "640:22:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62446, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "640:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62449, - "mutability": "mutable", - "name": "amountAVAXMin", - "nameLocation": "680:13:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "672:21:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62448, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "672:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62451, - "mutability": "mutable", - "name": "to", - "nameLocation": "711:2:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "703:10:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62450, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "703:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62453, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "731:8:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "723:16:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62452, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "723:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62455, - "mutability": "mutable", - "name": "approveMax", - "nameLocation": "754:10:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "749:15:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 62454, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "749:4:53", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62457, - "mutability": "mutable", - "name": "v", - "nameLocation": "780:1:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "774:7:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 62456, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "774:5:53", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62459, - "mutability": "mutable", - "name": "r", - "nameLocation": "799:1:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "791:9:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62458, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "791:7:53", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62461, - "mutability": "mutable", - "name": "s", - "nameLocation": "818:1:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "810:9:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62460, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "810:7:53", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "580:245:53" - }, - "returnParameters": { - "id": 62465, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62464, - "mutability": "mutable", - "name": "amountAVAX", - "nameLocation": "852:10:53", - "nodeType": "VariableDeclaration", - "scope": 62466, - "src": "844:18:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "844:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "843:20:53" - }, - "scope": 62507, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62480, - "nodeType": "FunctionDefinition", - "src": "870:213:53", - "nodes": [], - "functionSelector": "5c11d795", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", - "nameLocation": "879:53:53", - "parameters": { - "id": 62478, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62468, - "mutability": "mutable", - "name": "amountIn", - "nameLocation": "950:8:53", - "nodeType": "VariableDeclaration", - "scope": 62480, - "src": "942:16:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62467, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "942:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62470, - "mutability": "mutable", - "name": "amountOutMin", - "nameLocation": "976:12:53", - "nodeType": "VariableDeclaration", - "scope": 62480, - "src": "968:20:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62469, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "968:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62473, - "mutability": "mutable", - "name": "path", - "nameLocation": "1017:4:53", - "nodeType": "VariableDeclaration", - "scope": 62480, - "src": "998:23:53", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62471, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "998:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62472, - "nodeType": "ArrayTypeName", - "src": "998:9:53", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62475, - "mutability": "mutable", - "name": "to", - "nameLocation": "1039:2:53", - "nodeType": "VariableDeclaration", - "scope": 62480, - "src": "1031:10:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62474, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1031:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62477, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1059:8:53", - "nodeType": "VariableDeclaration", - "scope": 62480, - "src": "1051:16:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62476, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1051:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "932:141:53" - }, - "returnParameters": { - "id": 62479, - "nodeType": "ParameterList", - "parameters": [], - "src": "1082:0:53" - }, - "scope": 62507, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62492, - "nodeType": "FunctionDefinition", - "src": "1089:193:53", - "nodes": [], - "functionSelector": "c57559dd", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens", - "nameLocation": "1098:51:53", - "parameters": { - "id": 62490, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62482, - "mutability": "mutable", - "name": "amountOutMin", - "nameLocation": "1167:12:53", - "nodeType": "VariableDeclaration", - "scope": 62492, - "src": "1159:20:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62481, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1159:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62485, - "mutability": "mutable", - "name": "path", - "nameLocation": "1208:4:53", - "nodeType": "VariableDeclaration", - "scope": 62492, - "src": "1189:23:53", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62483, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1189:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62484, - "nodeType": "ArrayTypeName", - "src": "1189:9:53", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62487, - "mutability": "mutable", - "name": "to", - "nameLocation": "1230:2:53", - "nodeType": "VariableDeclaration", - "scope": 62492, - "src": "1222:10:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62486, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1222:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62489, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1250:8:53", - "nodeType": "VariableDeclaration", - "scope": 62492, - "src": "1242:16:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62488, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1242:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1149:115:53" - }, - "returnParameters": { - "id": 62491, - "nodeType": "ParameterList", - "parameters": [], - "src": "1281:0:53" - }, - "scope": 62507, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62506, - "nodeType": "FunctionDefinition", - "src": "1288:211:53", - "nodes": [], - "functionSelector": "762b1562", - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens", - "nameLocation": "1297:51:53", - "parameters": { - "id": 62504, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62494, - "mutability": "mutable", - "name": "amountIn", - "nameLocation": "1366:8:53", - "nodeType": "VariableDeclaration", - "scope": 62506, - "src": "1358:16:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62493, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1358:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62496, - "mutability": "mutable", - "name": "amountOutMin", - "nameLocation": "1392:12:53", - "nodeType": "VariableDeclaration", - "scope": 62506, - "src": "1384:20:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62495, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1384:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62499, - "mutability": "mutable", - "name": "path", - "nameLocation": "1433:4:53", - "nodeType": "VariableDeclaration", - "scope": 62506, - "src": "1414:23:53", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 62497, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1414:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 62498, - "nodeType": "ArrayTypeName", - "src": "1414:9:53", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62501, - "mutability": "mutable", - "name": "to", - "nameLocation": "1455:2:53", - "nodeType": "VariableDeclaration", - "scope": 62506, - "src": "1447:10:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62500, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1447:7:53", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62503, - "mutability": "mutable", - "name": "deadline", - "nameLocation": "1475:8:53", - "nodeType": "VariableDeclaration", - "scope": 62506, - "src": "1467:16:53", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62502, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1467:7:53", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1348:141:53" - }, - "returnParameters": { - "id": 62505, - "nodeType": "ParameterList", - "parameters": [], - "src": "1498:0:53" - }, - "scope": 62507, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 62423, - "name": "ISovryn LBRouter01", - "nameLocations": [ - "227:12:53" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 62417, - "src": "227:12:53" - }, - "id": 62424, - "nodeType": "InheritanceSpecifier", - "src": "227:12:53" - } - ], - "canonicalName": "ISovryn LBRouter02", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 62422, - "nodeType": "StructuredDocumentation", - "src": "113:88:53", - "text": "@title Sovryn LB V1 Router Interface\n @notice Interface to interact with Sovryn LB V1 Router" - }, - "fullyImplemented": false, - "linearizedBaseContracts": [ - 62507, - 62417 - ], - "name": "ISovryn LBRouter02", - "nameLocation": "211:12:53", - "scope": 62508, - "usedErrors": [], - "usedEvents": [] - } - ], - "license": "GPL-3.0" - }, - "id": 53 -} \ No newline at end of file diff --git a/abi/ILBFactory.sol/ILBFactory.json b/abi/ILBFactory.sol/ILBFactory.json deleted file mode 100644 index 350b2762..00000000 --- a/abi/ILBFactory.sol/ILBFactory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addQuoteAsset","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createLBPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"forceDecay","inputs":[{"name":"lbPair","type":"address","internalType":"contract ILBPair"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllBinSteps","inputs":[],"outputs":[{"name":"presetsBinStep","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getAllLBPairs","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"LBPairsBinStep","type":"tuple[]","internalType":"struct ILBFactory.LBPairInformation[]","components":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"createdByOwner","type":"bool","internalType":"bool"},{"name":"ignoredForRouting","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getFeeRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getFlashLoanFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLBPairAtIndex","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract ILBPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLBPairImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getLBPairInformation","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ILBFactory.LBPairInformation","components":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"createdByOwner","type":"bool","internalType":"bool"},{"name":"ignoredForRouting","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMaxFlashLoanFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getMinBinStep","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getNumberOfLBPairs","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNumberOfQuoteAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOpenBinSteps","inputs":[],"outputs":[{"name":"openBinStep","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPreset","inputs":[{"name":"binStep","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"baseFactor","type":"uint256","internalType":"uint256"},{"name":"filterPeriod","type":"uint256","internalType":"uint256"},{"name":"decayPeriod","type":"uint256","internalType":"uint256"},{"name":"reductionFactor","type":"uint256","internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","internalType":"uint256"},{"name":"protocolShare","type":"uint256","internalType":"uint256"},{"name":"maxAccumulator","type":"uint256","internalType":"uint256"},{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getQuoteAssetAtIndex","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"isQuoteAsset","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLBHooksOnPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeQuoteAsset","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeRecipient","inputs":[{"name":"feeRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeesParametersOnPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFlashLoanFee","inputs":[{"name":"flashLoanFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBHooksParametersOnPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBPairIgnored","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"ignored","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBPairImplementation","inputs":[{"name":"lbPairImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"isOpen","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPresetOpenState","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"isOpen","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"FeeRecipientSet","inputs":[{"name":"oldRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"newRecipient","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FlashLoanFeeSet","inputs":[{"name":"oldFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairCreated","inputs":[{"name":"tokenX","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenY","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"LBPair","type":"address","indexed":false,"internalType":"contract ILBPair"},{"name":"pid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairIgnoredStateChanged","inputs":[{"name":"LBPair","type":"address","indexed":true,"internalType":"contract ILBPair"},{"name":"ignored","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"LBPairImplementationSet","inputs":[{"name":"oldLBPairImplementation","type":"address","indexed":false,"internalType":"address"},{"name":"LBPairImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PresetOpenStateChanged","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"isOpen","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"PresetRemoved","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PresetSet","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"baseFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filterPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decayPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"reductionFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolShare","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxVolatilityAccumulator","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"QuoteAssetAdded","inputs":[{"name":"quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false},{"type":"event","name":"QuoteAssetRemoved","inputs":[{"name":"quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false},{"type":"error","name":"LBFactory__AddressZero","inputs":[]},{"type":"error","name":"LBFactory__BinStepHasNoPreset","inputs":[{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__BinStepTooLow","inputs":[{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__CannotGrantDefaultAdminRole","inputs":[]},{"type":"error","name":"LBFactory__FlashLoanFeeAboveMax","inputs":[{"name":"fees","type":"uint256","internalType":"uint256"},{"name":"maxFees","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__IdenticalAddresses","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"LBFactory__ImplementationNotSet","inputs":[]},{"type":"error","name":"LBFactory__InvalidHooksParameters","inputs":[]},{"type":"error","name":"LBFactory__LBPairAlreadyExists","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"_binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__LBPairDoesNotExist","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__LBPairIgnoredIsAlreadyInTheSameState","inputs":[]},{"type":"error","name":"LBFactory__LBPairNotCreated","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__LBPairSafetyCheckFailed","inputs":[{"name":"LBPairImplementation","type":"address","internalType":"address"}]},{"type":"error","name":"LBFactory__PresetIsLockedForUsers","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__PresetOpenStateIsAlreadyInTheSameState","inputs":[]},{"type":"error","name":"LBFactory__QuoteAssetAlreadyWhitelisted","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"LBFactory__QuoteAssetNotWhitelisted","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"LBFactory__SameFeeRecipient","inputs":[{"name":"feeRecipient","type":"address","internalType":"address"}]},{"type":"error","name":"LBFactory__SameFlashLoanFee","inputs":[{"name":"flashLoanFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__SameHooksImplementation","inputs":[{"name":"hooksImplementation","type":"address","internalType":"address"}]},{"type":"error","name":"LBFactory__SameHooksParameters","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"LBFactory__SameImplementation","inputs":[{"name":"LBPairImplementation","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addQuoteAsset(address)":"5a440923","createLBPair(address,address,uint24,uint16)":"659ac74b","forceDecay(address)":"3c78a941","getAllBinSteps()":"5b35875c","getAllLBPairs(address,address)":"6622e0d7","getFeeRecipient()":"4ccb20c0","getFlashLoanFee()":"fd90c2be","getLBPairAtIndex(uint256)":"7daf5d66","getLBPairImplementation()":"af371065","getLBPairInformation(address,address,uint256)":"704037bd","getMaxFlashLoanFee()":"8ce9aa1c","getMinBinStep()":"701ab8c1","getNumberOfLBPairs()":"4e937c3a","getNumberOfQuoteAssets()":"80c5061e","getOpenBinSteps()":"0282c9c1","getPreset(uint256)":"aabc4b3c","getQuoteAssetAtIndex(uint256)":"0752092b","isQuoteAsset(address)":"27721842","removeLBHooksOnPair(address,address,uint16)":"2cc06b8c","removePreset(uint16)":"e203a31f","removeQuoteAsset(address)":"ddbfd941","setFeeRecipient(address)":"e74b981b","setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)":"093ff769","setFlashLoanFee(uint256)":"e92d0d5d","setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)":"3a2f1a91","setLBPairIgnored(address,address,uint16,bool)":"69d56ea3","setLBPairImplementation(address)":"b0384781","setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)":"379ee803","setPresetOpenState(uint16,bool)":"4cd161d3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBFactory__AddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepHasNoPreset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__CannotGrantDefaultAdminRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFees\",\"type\":\"uint256\"}],\"name\":\"LBFactory__FlashLoanFeeAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LBFactory__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__ImplementationNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__InvalidHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__LBPairIgnoredIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairNotCreated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__LBPairSafetyCheckFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__PresetIsLockedForUsers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__PresetOpenStateIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetAlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"LBFactory__SameFeeRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"LBFactory__SameFlashLoanFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hooksImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameHooksImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"LBFactory__SameHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameImplementation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"PresetOpenStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"addQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"lbPair\",\"type\":\"address\"}],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"presetsBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"name\":\"getAllLBPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation[]\",\"name\":\"LBPairsBinStep\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getLBPairAtIndex\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPairImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getLBPairInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinBinStep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfLBPairs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfQuoteAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"openBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getPreset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuoteAssetAtIndex\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isQuoteAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removeLBHooksOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"removeQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setLBHooksParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"setLBPairIgnored\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lbPairImplementation\",\"type\":\"address\"}],\"name\":\"setLBPairImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPresetOpenState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBFactory contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBFactory.sol\":\"ILBFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"LBFactory__AddressZero"},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__BinStepHasNoPreset"},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__BinStepTooLow"},{"inputs":[],"type":"error","name":"LBFactory__CannotGrantDefaultAdminRole"},{"inputs":[{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"uint256","name":"maxFees","type":"uint256"}],"type":"error","name":"LBFactory__FlashLoanFeeAboveMax"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"type":"error","name":"LBFactory__IdenticalAddresses"},{"inputs":[],"type":"error","name":"LBFactory__ImplementationNotSet"},{"inputs":[],"type":"error","name":"LBFactory__InvalidHooksParameters"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"_binStep","type":"uint256"}],"type":"error","name":"LBFactory__LBPairAlreadyExists"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__LBPairDoesNotExist"},{"inputs":[],"type":"error","name":"LBFactory__LBPairIgnoredIsAlreadyInTheSameState"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__LBPairNotCreated"},{"inputs":[{"internalType":"address","name":"LBPairImplementation","type":"address"}],"type":"error","name":"LBFactory__LBPairSafetyCheckFailed"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__PresetIsLockedForUsers"},{"inputs":[],"type":"error","name":"LBFactory__PresetOpenStateIsAlreadyInTheSameState"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"type":"error","name":"LBFactory__QuoteAssetAlreadyWhitelisted"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"type":"error","name":"LBFactory__QuoteAssetNotWhitelisted"},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address"}],"type":"error","name":"LBFactory__SameFeeRecipient"},{"inputs":[{"internalType":"uint256","name":"flashLoanFee","type":"uint256"}],"type":"error","name":"LBFactory__SameFlashLoanFee"},{"inputs":[{"internalType":"address","name":"hooksImplementation","type":"address"}],"type":"error","name":"LBFactory__SameHooksImplementation"},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"}],"type":"error","name":"LBFactory__SameHooksParameters"},{"inputs":[{"internalType":"address","name":"LBPairImplementation","type":"address"}],"type":"error","name":"LBFactory__SameImplementation"},{"inputs":[{"internalType":"address","name":"oldRecipient","type":"address","indexed":false},{"internalType":"address","name":"newRecipient","type":"address","indexed":false}],"type":"event","name":"FeeRecipientSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"oldFlashLoanFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"newFlashLoanFee","type":"uint256","indexed":false}],"type":"event","name":"FlashLoanFeeSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenY","type":"address","indexed":true},{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"contract ILBPair","name":"LBPair","type":"address","indexed":false},{"internalType":"uint256","name":"pid","type":"uint256","indexed":false}],"type":"event","name":"LBPairCreated","anonymous":false},{"inputs":[{"internalType":"contract ILBPair","name":"LBPair","type":"address","indexed":true},{"internalType":"bool","name":"ignored","type":"bool","indexed":false}],"type":"event","name":"LBPairIgnoredStateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"oldLBPairImplementation","type":"address","indexed":false},{"internalType":"address","name":"LBPairImplementation","type":"address","indexed":false}],"type":"event","name":"LBPairImplementationSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"bool","name":"isOpen","type":"bool","indexed":true}],"type":"event","name":"PresetOpenStateChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true}],"type":"event","name":"PresetRemoved","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"uint256","name":"baseFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"filterPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"decayPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"reductionFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"variableFeeControl","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolShare","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxVolatilityAccumulator","type":"uint256","indexed":false}],"type":"event","name":"PresetSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetAdded","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetRemoved","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addQuoteAsset"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"createLBPair","outputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"}]},{"inputs":[{"internalType":"contract ILBPair","name":"lbPair","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceDecay"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllBinSteps","outputs":[{"internalType":"uint256[]","name":"presetsBinStep","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"}],"stateMutability":"view","type":"function","name":"getAllLBPairs","outputs":[{"internalType":"struct ILBFactory.LBPairInformation[]","name":"LBPairsBinStep","type":"tuple[]","components":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"bool","name":"createdByOwner","type":"bool"},{"internalType":"bool","name":"ignoredForRouting","type":"bool"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFlashLoanFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getLBPairAtIndex","outputs":[{"internalType":"contract ILBPair","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBPairImplementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLBPairInformation","outputs":[{"internalType":"struct ILBFactory.LBPairInformation","name":"","type":"tuple","components":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"bool","name":"createdByOwner","type":"bool"},{"internalType":"bool","name":"ignoredForRouting","type":"bool"}]}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getMaxFlashLoanFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getMinBinStep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfLBPairs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfQuoteAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOpenBinSteps","outputs":[{"internalType":"uint256[]","name":"openBinStep","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPreset","outputs":[{"internalType":"uint256","name":"baseFactor","type":"uint256"},{"internalType":"uint256","name":"filterPeriod","type":"uint256"},{"internalType":"uint256","name":"decayPeriod","type":"uint256"},{"internalType":"uint256","name":"reductionFactor","type":"uint256"},{"internalType":"uint256","name":"variableFeeControl","type":"uint256"},{"internalType":"uint256","name":"protocolShare","type":"uint256"},{"internalType":"uint256","name":"maxAccumulator","type":"uint256"},{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getQuoteAssetAtIndex","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"isQuoteAsset","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"removeLBHooksOnPair"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"removePreset"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeQuoteAsset"},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeRecipient"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setFeesParametersOnPair"},{"inputs":[{"internalType":"uint256","name":"flashLoanFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFlashLoanFee"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setLBHooksParametersOnPair"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"bool","name":"ignored","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setLBPairIgnored"},{"inputs":[{"internalType":"address","name":"lbPairImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setLBPairImplementation"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"},{"internalType":"bool","name":"isOpen","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPreset"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"bool","name":"isOpen","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPresetOpenState"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBFactory.sol":"ILBFactory"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"}},"version":1},"id":48} \ No newline at end of file diff --git a/abi/ILBFlashLoanCallback.sol/ILBFlashLoanCallback.json b/abi/ILBFlashLoanCallback.sol/ILBFlashLoanCallback.json deleted file mode 100644 index fcf5ec5d..00000000 --- a/abi/ILBFlashLoanCallback.sol/ILBFlashLoanCallback.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"LBFlashLoanCallback","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"amounts","type":"bytes32","internalType":"bytes32"},{"name":"totalFees","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LBFlashLoanCallback(address,address,address,bytes32,bytes32,bytes)":"1faa6b87"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LBFlashLoanCallback\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Flashloan Callback Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface to interact with LB flash loans\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBFlashLoanCallback.sol\":\"ILBFlashLoanCallback\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"},{"internalType":"bytes32","name":"totalFees","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"LBFlashLoanCallback","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBFlashLoanCallback.sol":"ILBFlashLoanCallback"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"}},"version":1},"id":49} \ No newline at end of file diff --git a/abi/ILBHooks.sol/ILBHooks.json b/abi/ILBHooks.sol/ILBHooks.json deleted file mode 100644 index 1a6be815..00000000 --- a/abi/ILBHooks.sol/ILBHooks.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"afterBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"fees","type":"bytes32","internalType":"bytes32"},{"name":"feesReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsOut","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amounts","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLBPair","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ILBPair"}],"stateMutability":"view"},{"type":"function","name":"isLinked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"onHooksSet","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":"67ddb278","afterBurn(address,address,address,uint256[],uint256[])":"fdc27257","afterFlashLoan(address,address,bytes32,bytes32)":"60bed5f3","afterMint(address,address,bytes32[],bytes32)":"7a51a4c6","afterSwap(address,address,bool,bytes32)":"53e8079b","beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":"79c8ccf7","beforeBurn(address,address,address,uint256[],uint256[])":"ea9db9d3","beforeFlashLoan(address,address,bytes32)":"505d9033","beforeMint(address,address,bytes32[],bytes32)":"0d4abdb3","beforeSwap(address,address,bool,bytes32)":"feee3735","getLBPair()":"5f9c01b1","isLinked()":"09fa1f90","onHooksSet(bytes32,bytes)":"4e430b5a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"afterBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"fees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feesReceived\",\"type\":\"bytes32\"}],\"name\":\"afterFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"afterMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"beforeBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"beforeFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"beforeMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLinked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"onHooksSet\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBHooks.sol\":\"ILBHooks\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"fees","type":"bytes32"},{"internalType":"bytes32","name":"feesReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsOut","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBPair","outputs":[{"internalType":"contract ILBPair","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isLinked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onHooksSet","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBHooks.sol":"ILBHooks"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"}},"version":1},"id":50} \ No newline at end of file diff --git a/abi/ILBLegacyFactory.sol/ILBLegacyFactory.json b/abi/ILBLegacyFactory.sol/ILBLegacyFactory.json deleted file mode 100644 index 13eac90a..00000000 --- a/abi/ILBLegacyFactory.sol/ILBLegacyFactory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"LBPairImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"MAX_BIN_STEP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"MAX_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"MAX_PROTOCOL_SHARE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"MIN_BIN_STEP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"addQuoteAsset","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allLBPairs","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract ILBLegacyPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"createLBPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"pair","type":"address","internalType":"contract ILBLegacyPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"creationUnlocked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"feeRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"flashLoanFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"forceDecay","inputs":[{"name":"LBPair","type":"address","internalType":"contract ILBLegacyPair"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllBinSteps","inputs":[],"outputs":[{"name":"presetsBinStep","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getAllLBPairs","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"LBPairsBinStep","type":"tuple[]","internalType":"struct ILBLegacyFactory.LBPairInformation[]","components":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"LBPair","type":"address","internalType":"contract ILBLegacyPair"},{"name":"createdByOwner","type":"bool","internalType":"bool"},{"name":"ignoredForRouting","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLBPairInformation","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ILBLegacyFactory.LBPairInformation","components":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"LBPair","type":"address","internalType":"contract ILBLegacyPair"},{"name":"createdByOwner","type":"bool","internalType":"bool"},{"name":"ignoredForRouting","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getNumberOfLBPairs","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNumberOfQuoteAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"baseFactor","type":"uint256","internalType":"uint256"},{"name":"filterPeriod","type":"uint256","internalType":"uint256"},{"name":"decayPeriod","type":"uint256","internalType":"uint256"},{"name":"reductionFactor","type":"uint256","internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","internalType":"uint256"},{"name":"protocolShare","type":"uint256","internalType":"uint256"},{"name":"maxAccumulator","type":"uint256","internalType":"uint256"},{"name":"sampleLifetime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getQuoteAsset","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"isQuoteAsset","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removePreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeQuoteAsset","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFactoryLockedState","inputs":[{"name":"locked","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeRecipient","inputs":[{"name":"feeRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeesParametersOnPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFlashLoanFee","inputs":[{"name":"flashLoanFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBPairIgnored","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"},{"name":"ignored","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBPairImplementation","inputs":[{"name":"LBPairImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"sampleLifetime","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"FactoryLockedStatusUpdated","inputs":[{"name":"unlocked","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"FeeParametersSet","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"LBPair","type":"address","indexed":true,"internalType":"contract ILBLegacyPair"},{"name":"binStep","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"baseFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filterPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decayPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"reductionFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolShare","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxVolatilityAccumulator","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FeeRecipientSet","inputs":[{"name":"oldRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"newRecipient","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FlashLoanFeeSet","inputs":[{"name":"oldFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairCreated","inputs":[{"name":"tokenX","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenY","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"LBPair","type":"address","indexed":false,"internalType":"contract ILBLegacyPair"},{"name":"pid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairIgnoredStateChanged","inputs":[{"name":"LBPair","type":"address","indexed":true,"internalType":"contract ILBLegacyPair"},{"name":"ignored","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"LBPairImplementationSet","inputs":[{"name":"oldLBPairImplementation","type":"address","indexed":false,"internalType":"address"},{"name":"LBPairImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PresetRemoved","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PresetSet","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"baseFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filterPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decayPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"reductionFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolShare","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxVolatilityAccumulator","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"sampleLifetime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"QuoteAssetAdded","inputs":[{"name":"quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false},{"type":"event","name":"QuoteAssetRemoved","inputs":[{"name":"quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LBPairImplementation()":"509ceb90","MAX_BIN_STEP()":"10e9ec4a","MAX_FEE()":"bc063e1a","MAX_PROTOCOL_SHARE()":"a931208f","MIN_BIN_STEP()":"7df880e3","addQuoteAsset(address)":"5a440923","allLBPairs(uint256)":"72e47b8c","createLBPair(address,address,uint24,uint16)":"659ac74b","creationUnlocked()":"5c779d6d","feeRecipient()":"46904840","flashLoanFee()":"4847cdc8","forceDecay(address)":"3c78a941","getAllBinSteps()":"5b35875c","getAllLBPairs(address,address)":"6622e0d7","getLBPairInformation(address,address,uint256)":"704037bd","getNumberOfLBPairs()":"4e937c3a","getNumberOfQuoteAssets()":"80c5061e","getPreset(uint16)":"935ea51b","getQuoteAsset(uint256)":"f89a4cd5","isQuoteAsset(address)":"27721842","removePreset(uint16)":"e203a31f","removeQuoteAsset(address)":"ddbfd941","setFactoryLockedState(bool)":"22f3fe14","setFeeRecipient(address)":"e74b981b","setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)":"093ff769","setFlashLoanFee(uint256)":"e92d0d5d","setLBPairIgnored(address,address,uint256,bool)":"200aa7e3","setLBPairImplementation(address)":"b0384781","setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint16)":"0af97c9a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"name\":\"FactoryLockedStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"FeeParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sampleLifetime\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LBPairImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_BIN_STEP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PROTOCOL_SHARE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_BIN_STEP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"addQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"allLBPairs\",\"outputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"creationUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"}],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"presetsBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"name\":\"getAllLBPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBLegacyFactory.LBPairInformation[]\",\"name\":\"LBPairsBinStep\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getLBPairInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBLegacyFactory.LBPairInformation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfLBPairs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfQuoteAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"getPreset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sampleLifetime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuoteAsset\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isQuoteAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"removeQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"locked\",\"type\":\"bool\"}],\"name\":\"setFactoryLockedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"setLBPairIgnored\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"setLBPairImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"sampleLifetime\",\"type\":\"uint16\"}],\"name\":\"setPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBFactory contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyFactory.sol\":\"ILBLegacyFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bool","name":"unlocked","type":"bool","indexed":false}],"type":"event","name":"FactoryLockedStatusUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address","indexed":true},{"internalType":"uint256","name":"binStep","type":"uint256","indexed":false},{"internalType":"uint256","name":"baseFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"filterPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"decayPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"reductionFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"variableFeeControl","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolShare","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxVolatilityAccumulator","type":"uint256","indexed":false}],"type":"event","name":"FeeParametersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"oldRecipient","type":"address","indexed":false},{"internalType":"address","name":"newRecipient","type":"address","indexed":false}],"type":"event","name":"FeeRecipientSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"oldFlashLoanFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"newFlashLoanFee","type":"uint256","indexed":false}],"type":"event","name":"FlashLoanFeeSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenY","type":"address","indexed":true},{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address","indexed":false},{"internalType":"uint256","name":"pid","type":"uint256","indexed":false}],"type":"event","name":"LBPairCreated","anonymous":false},{"inputs":[{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address","indexed":true},{"internalType":"bool","name":"ignored","type":"bool","indexed":false}],"type":"event","name":"LBPairIgnoredStateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"oldLBPairImplementation","type":"address","indexed":false},{"internalType":"address","name":"LBPairImplementation","type":"address","indexed":false}],"type":"event","name":"LBPairImplementationSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true}],"type":"event","name":"PresetRemoved","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"uint256","name":"baseFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"filterPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"decayPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"reductionFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"variableFeeControl","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolShare","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxVolatilityAccumulator","type":"uint256","indexed":false},{"internalType":"uint256","name":"sampleLifetime","type":"uint256","indexed":false}],"type":"event","name":"PresetSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetAdded","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetRemoved","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LBPairImplementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BIN_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_PROTOCOL_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"MIN_BIN_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addQuoteAsset"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"allLBPairs","outputs":[{"internalType":"contract ILBLegacyPair","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"createLBPair","outputs":[{"internalType":"contract ILBLegacyPair","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"creationUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashLoanFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceDecay"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllBinSteps","outputs":[{"internalType":"uint256[]","name":"presetsBinStep","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"}],"stateMutability":"view","type":"function","name":"getAllLBPairs","outputs":[{"internalType":"struct ILBLegacyFactory.LBPairInformation[]","name":"LBPairsBinStep","type":"tuple[]","components":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address"},{"internalType":"bool","name":"createdByOwner","type":"bool"},{"internalType":"bool","name":"ignoredForRouting","type":"bool"}]}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLBPairInformation","outputs":[{"internalType":"struct ILBLegacyFactory.LBPairInformation","name":"","type":"tuple","components":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address"},{"internalType":"bool","name":"createdByOwner","type":"bool"},{"internalType":"bool","name":"ignoredForRouting","type":"bool"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfLBPairs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfQuoteAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"getPreset","outputs":[{"internalType":"uint256","name":"baseFactor","type":"uint256"},{"internalType":"uint256","name":"filterPeriod","type":"uint256"},{"internalType":"uint256","name":"decayPeriod","type":"uint256"},{"internalType":"uint256","name":"reductionFactor","type":"uint256"},{"internalType":"uint256","name":"variableFeeControl","type":"uint256"},{"internalType":"uint256","name":"protocolShare","type":"uint256"},{"internalType":"uint256","name":"maxAccumulator","type":"uint256"},{"internalType":"uint256","name":"sampleLifetime","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getQuoteAsset","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"isQuoteAsset","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"removePreset"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeQuoteAsset"},{"inputs":[{"internalType":"bool","name":"locked","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setFactoryLockedState"},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeRecipient"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setFeesParametersOnPair"},{"inputs":[{"internalType":"uint256","name":"flashLoanFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFlashLoanFee"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"},{"internalType":"bool","name":"ignored","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setLBPairIgnored"},{"inputs":[{"internalType":"address","name":"LBPairImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setLBPairImplementation"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"},{"internalType":"uint16","name":"sampleLifetime","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setPreset"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBLegacyFactory.sol":"ILBLegacyFactory"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"}},"version":1},"id":51} \ No newline at end of file diff --git a/abi/ILBLegacyPair.sol/ILBLegacyPair.json b/abi/ILBLegacyPair.sol/ILBLegacyPair.json deleted file mode 100644 index 2af4783f..00000000 --- a/abi/ILBLegacyPair.sol/ILBLegacyPair.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"batchBalances","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectFees","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[{"name":"amountX","type":"uint128","internalType":"uint128"},{"name":"amountY","type":"uint128","internalType":"uint128"}],"stateMutability":"nonpayable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"feeParameters","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ILBLegacyPair.FeeParameters","components":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulated","type":"uint24","internalType":"uint24"},{"name":"volatilityAccumulated","type":"uint24","internalType":"uint24"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"},{"name":"indexRef","type":"uint24","internalType":"uint24"},{"name":"time","type":"uint40","internalType":"uint40"}]}],"stateMutability":"view"},{"type":"function","name":"findFirstNonEmptyBinId","inputs":[{"name":"id_","type":"uint24","internalType":"uint24"},{"name":"sentTokenY","type":"bool","internalType":"bool"}],"outputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceDecay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getBin","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"reserveX","type":"uint256","internalType":"uint256"},{"name":"reserveY","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getGlobalFees","inputs":[],"outputs":[{"name":"feesXTotal","type":"uint128","internalType":"uint128"},{"name":"feesYTotal","type":"uint128","internalType":"uint128"},{"name":"feesXProtocol","type":"uint128","internalType":"uint128"},{"name":"feesYProtocol","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getOracleParameters","inputs":[],"outputs":[{"name":"oracleSampleLifetime","type":"uint256","internalType":"uint256"},{"name":"oracleSize","type":"uint256","internalType":"uint256"},{"name":"oracleActiveSize","type":"uint256","internalType":"uint256"},{"name":"oracleLastTimestamp","type":"uint256","internalType":"uint256"},{"name":"oracleId","type":"uint256","internalType":"uint256"},{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOracleSampleFrom","inputs":[{"name":"timeDelta","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"cumulativeId","type":"uint256","internalType":"uint256"},{"name":"cumulativeAccumulator","type":"uint256","internalType":"uint256"},{"name":"cumulativeBinCrossed","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReservesAndId","inputs":[],"outputs":[{"name":"reserveX","type":"uint256","internalType":"uint256"},{"name":"reserveY","type":"uint256","internalType":"uint256"},{"name":"activeId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseOracleLength","inputs":[{"name":"newSize","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"sampleLifetime","type":"uint16","internalType":"uint16"},{"name":"packedFeeParameters","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionX","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionY","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amountXAddedToPair","type":"uint256","internalType":"uint256"},{"name":"amountYAddedToPair","type":"uint256","internalType":"uint256"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"pendingFees","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256[]","internalType":"uint256[]"},{"name":"amount","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeesParameters","inputs":[{"name":"packedFeeParameters","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"sentTokenY","type":"bool","internalType":"bool"},{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amountXOut","type":"uint256","internalType":"uint256"},{"name":"amountYOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"tokenY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CompositionFee","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"feesX","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feesY","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DepositedToBin","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amountX","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountY","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FeesCollected","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amountX","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountY","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FlashLoan","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OracleSizeIncreased","inputs":[{"name":"previousSize","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSize","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProtocolFeesCollected","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amountX","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountY","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"swapForY","type":"bool","indexed":false,"internalType":"bool"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"volatilityAccumulated","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"fees","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawnFromBin","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amountX","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountY","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(uint256[],uint256[],address)":"0acd451d","collectFees(address,uint256[])":"225b20b9","collectProtocolFees()":"a1af5b9a","factory()":"c45a0155","feeParameters()":"98c7adf3","findFirstNonEmptyBinId(uint24,bool)":"8f919a83","flashLoan(address,address,uint256,bytes)":"5cffe9de","forceDecay()":"d3b9fbe4","getBin(uint24)":"0abe9688","getGlobalFees()":"a582cdaa","getOracleParameters()":"55182894","getOracleSampleFrom(uint256)":"a21635a7","getReservesAndId()":"1b05b83e","increaseOracleLength(uint16)":"c7bd6586","initialize(address,address,uint24,uint16,bytes32)":"d32db437","isApprovedForAll(address,address)":"e985e9c5","mint(uint256[],uint256[],uint256[],address)":"714c8592","name()":"06fdde03","pendingFees(address,uint256[])":"f7cff1f8","safeBatchTransferFrom(address,address,uint256[],uint256[])":"fba0ee64","safeTransferFrom(address,address,uint256,uint256)":"0febdd49","setApprovalForAll(address,bool)":"a22cb465","setFeesParameters(bytes32)":"54b5fc87","supportsInterface(bytes4)":"01ffc9a7","swap(bool,address)":"53c059a0","symbol()":"95d89b41","tokenX()":"16dc165b","tokenY()":"b7d19fc4","totalSupply(uint256)":"bd85b039"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feesX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feesY\",\"type\":\"uint256\"}],\"name\":\"CompositionFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"DepositedToBin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"FeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousSize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSize\",\"type\":\"uint256\"}],\"name\":\"OracleSizeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"volatilityAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"WithdrawnFromBin\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"batchBalances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"collectFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeParameters\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulated\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulated\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"indexRef\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"internalType\":\"struct ILBLegacyPair.FeeParameters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id_\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"sentTokenY\",\"type\":\"bool\"}],\"name\":\"findFirstNonEmptyBinId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getBin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveY\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"feesXTotal\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feesYTotal\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feesXProtocol\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feesYProtocol\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"oracleSampleLifetime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleActiveSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleLastTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timeDelta\",\"type\":\"uint256\"}],\"name\":\"getOracleSampleFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cumulativeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cumulativeAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cumulativeBinCrossed\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesAndId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newSize\",\"type\":\"uint16\"}],\"name\":\"increaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"sampleLifetime\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"packedFeeParameters\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAddedToPair\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAddedToPair\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"pendingFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"id\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amount\",\"type\":\"uint256[]\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"packedFeeParameters\",\"type\":\"bytes32\"}],\"name\":\"setFeesParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"sentTokenY\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenY\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"Liquidity Book Pair V2 Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBPair contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyPair.sol\":\"ILBLegacyPair\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"feesX","type":"uint256","indexed":false},{"internalType":"uint256","name":"feesY","type":"uint256","indexed":false}],"type":"event","name":"CompositionFee","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amountX","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountY","type":"uint256","indexed":false}],"type":"event","name":"DepositedToBin","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amountX","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountY","type":"uint256","indexed":false}],"type":"event","name":"FeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"fee","type":"uint256","indexed":false}],"type":"event","name":"FlashLoan","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousSize","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSize","type":"uint256","indexed":false}],"type":"event","name":"OracleSizeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amountX","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountY","type":"uint256","indexed":false}],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"bool","name":"swapForY","type":"bool","indexed":false},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"volatilityAccumulated","type":"uint256","indexed":false},{"internalType":"uint256","name":"fees","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amountX","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountY","type":"uint256","indexed":false}],"type":"event","name":"WithdrawnFromBin","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"batchBalances","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"collectFees","outputs":[{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees","outputs":[{"internalType":"uint128","name":"amountX","type":"uint128"},{"internalType":"uint128","name":"amountY","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeParameters","outputs":[{"internalType":"struct ILBLegacyPair.FeeParameters","name":"","type":"tuple","components":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulated","type":"uint24"},{"internalType":"uint24","name":"volatilityAccumulated","type":"uint24"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"},{"internalType":"uint24","name":"indexRef","type":"uint24"},{"internalType":"uint40","name":"time","type":"uint40"}]}]},{"inputs":[{"internalType":"uint24","name":"id_","type":"uint24"},{"internalType":"bool","name":"sentTokenY","type":"bool"}],"stateMutability":"view","type":"function","name":"findFirstNonEmptyBinId","outputs":[{"internalType":"uint24","name":"id","type":"uint24"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"forceDecay"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getBin","outputs":[{"internalType":"uint256","name":"reserveX","type":"uint256"},{"internalType":"uint256","name":"reserveY","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getGlobalFees","outputs":[{"internalType":"uint128","name":"feesXTotal","type":"uint128"},{"internalType":"uint128","name":"feesYTotal","type":"uint128"},{"internalType":"uint128","name":"feesXProtocol","type":"uint128"},{"internalType":"uint128","name":"feesYProtocol","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOracleParameters","outputs":[{"internalType":"uint256","name":"oracleSampleLifetime","type":"uint256"},{"internalType":"uint256","name":"oracleSize","type":"uint256"},{"internalType":"uint256","name":"oracleActiveSize","type":"uint256"},{"internalType":"uint256","name":"oracleLastTimestamp","type":"uint256"},{"internalType":"uint256","name":"oracleId","type":"uint256"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"timeDelta","type":"uint256"}],"stateMutability":"view","type":"function","name":"getOracleSampleFrom","outputs":[{"internalType":"uint256","name":"cumulativeId","type":"uint256"},{"internalType":"uint256","name":"cumulativeAccumulator","type":"uint256"},{"internalType":"uint256","name":"cumulativeBinCrossed","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReservesAndId","outputs":[{"internalType":"uint256","name":"reserveX","type":"uint256"},{"internalType":"uint256","name":"reserveY","type":"uint256"},{"internalType":"uint256","name":"activeId","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"newSize","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"increaseOracleLength"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint16","name":"sampleLifetime","type":"uint16"},{"internalType":"bytes32","name":"packedFeeParameters","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionX","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionY","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"amountXAddedToPair","type":"uint256"},{"internalType":"uint256","name":"amountYAddedToPair","type":"uint256"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"pendingFees","outputs":[{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"id","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes32","name":"packedFeeParameters","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setFeesParameters"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bool","name":"sentTokenY","type":"bool"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountXOut","type":"uint256"},{"internalType":"uint256","name":"amountYOut","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenX","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenY","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBLegacyPair.sol":"ILBLegacyPair"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"}},"version":1},"id":52} \ No newline at end of file diff --git a/abi/ILBLegacyRouter.sol/ILBLegacyRouter.json b/abi/ILBLegacyRouter.sol/ILBLegacyRouter.json deleted file mode 100644 index af913b2c..00000000 --- a/abi/ILBLegacyRouter.sol/ILBLegacyRouter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"liquidityParameters","type":"tuple","internalType":"struct ILBLegacyRouter.LiquidityParameters","components":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"deltaIds","type":"int256[]","internalType":"int256[]"},{"name":"distributionX","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionY","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"depositIds","type":"uint256[]","internalType":"uint256[]"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidityAVAX","inputs":[{"name":"liquidityParameters","type":"tuple","internalType":"struct ILBLegacyRouter.LiquidityParameters","components":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"deltaIds","type":"int256[]","internalType":"int256[]"},{"name":"distributionX","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionY","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"depositIds","type":"uint256[]","internalType":"uint256[]"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"createLBPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"pair","type":"address","internalType":"contract ILBLegacyPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getIdFromPrice","inputs":[{"name":"LBPair","type":"address","internalType":"contract ILBLegacyPair"},{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getPriceFromId","inputs":[{"name":"LBPair","type":"address","internalType":"contract ILBLegacyPair"},{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapIn","inputs":[{"name":"lbPair","type":"address","internalType":"contract ILBLegacyPair"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"feesIn","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapOut","inputs":[{"name":"lbPair","type":"address","internalType":"contract ILBLegacyPair"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"feesIn","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"oldFactory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityAVAX","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountAVAX","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapAVAXForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapExactAVAXForTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapExactAVAXForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapExactTokensForAVAX","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinAVAX","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForAVAXSupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinAVAX","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactAVAX","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"sweep","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sweepLBToken","inputs":[{"name":"_lbToken","type":"address","internalType":"contract ILBToken"},{"name":"_to","type":"address","internalType":"address"},{"name":"_ids","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wavax","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,uint256))":"e324a3e4","addLiquidityAVAX((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,uint256))":"ea8f43d8","createLBPair(address,address,uint24,uint16)":"659ac74b","factory()":"c45a0155","getIdFromPrice(address,uint256)":"f96fe925","getPriceFromId(address,uint24)":"d0e380f2","getSwapIn(address,uint256,bool)":"5bdd4b7c","getSwapOut(address,uint256,bool)":"2004b724","oldFactory()":"1bd6dfe1","removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":"c22159b6","removeLiquidityAVAX(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":"bcb1c957","swapAVAXForExactTokens(uint256,uint256[],address[],address,uint256)":"42f564a0","swapExactAVAXForTokens(uint256,uint256[],address[],address,uint256)":"264bb94e","swapExactAVAXForTokensSupportingFeeOnTransferTokens(uint256,uint256[],address[],address,uint256)":"440830bd","swapExactTokensForAVAX(uint256,uint256,uint256[],address[],address,uint256)":"fb321c70","swapExactTokensForAVAXSupportingFeeOnTransferTokens(uint256,uint256,uint256[],address[],address,uint256)":"9a17e820","swapExactTokensForTokens(uint256,uint256,uint256[],address[],address,uint256)":"6d0ff495","swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,uint256[],address[],address,uint256)":"212a1d94","swapTokensForExactAVAX(uint256,uint256,uint256[],address[],address,uint256)":"6d3420ed","swapTokensForExactTokens(uint256,uint256,uint256[],address[],address,uint256)":"a7b856d3","sweep(address,address,uint256)":"62c06767","sweepLBToken(address,address,uint256[],uint256[])":"e9361c08","wavax()":"117be4c2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBLegacyRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBLegacyRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oldFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAVAXForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAXSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBToken\",\"name\":\"_lbToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"sweepLBToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wavax\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Router Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBRouter contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyRouter.sol\":\"ILBLegacyRouter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct ILBLegacyRouter.LiquidityParameters","name":"liquidityParameters","type":"tuple","components":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"int256[]","name":"deltaIds","type":"int256[]"},{"internalType":"uint256[]","name":"distributionX","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionY","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity","outputs":[{"internalType":"uint256[]","name":"depositIds","type":"uint256[]"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[{"internalType":"struct ILBLegacyRouter.LiquidityParameters","name":"liquidityParameters","type":"tuple","components":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"int256[]","name":"deltaIds","type":"int256[]"},{"internalType":"uint256[]","name":"distributionX","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionY","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"addLiquidityAVAX","outputs":[{"internalType":"uint256[]","name":"depositIds","type":"uint256[]"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"createLBPair","outputs":[{"internalType":"contract ILBLegacyPair","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function","name":"getIdFromPrice","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"contract ILBLegacyPair","name":"LBPair","type":"address"},{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getPriceFromId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ILBLegacyPair","name":"lbPair","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"feesIn","type":"uint256"}]},{"inputs":[{"internalType":"contract ILBLegacyPair","name":"lbPair","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"feesIn","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"oldFactory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapAVAXForExactTokens","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactAVAXForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactAVAXForTokensSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinAVAX","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForAVAX","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinAVAX","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForAVAXSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactAVAX","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sweep"},{"inputs":[{"internalType":"contract ILBToken","name":"_lbToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"sweepLBToken"},{"inputs":[],"stateMutability":"view","type":"function","name":"wavax","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBLegacyRouter.sol":"ILBLegacyRouter"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"}},"version":1},"id":52} \ No newline at end of file diff --git a/abi/ILBLegacyToken.sol/ILBLegacyToken.json b/abi/ILBLegacyToken.sol/ILBLegacyToken.json deleted file mode 100644 index 94072399..00000000 --- a/abi/ILBLegacyToken.sol/ILBLegacyToken.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"batchBalances","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256[]","internalType":"uint256[]"},{"name":"amount","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","safeBatchTransferFrom(address,address,uint256[],uint256[])":"fba0ee64","safeTransferFrom(address,address,uint256,uint256)":"0febdd49","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply(uint256)":"bd85b039"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"batchBalances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"id\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amount\",\"type\":\"uint256[]\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"Liquidity Book V2 Token Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBToken contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyToken.sol\":\"ILBLegacyToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"batchBalances","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"id","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBLegacyToken.sol":"ILBLegacyToken"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"}},"version":1},"id":54} \ No newline at end of file diff --git a/abi/ILBPair.sol/ILBPair.json b/abi/ILBPair.sol/ILBPair.json deleted file mode 100644 index c93a5544..00000000 --- a/abi/ILBPair.sol/ILBPair.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approveForAll","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"batchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amounts","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[{"name":"collectedProtocolFees","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract ILBFlashLoanCallback"},{"name":"amounts","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceDecay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getActiveId","inputs":[],"outputs":[{"name":"activeId","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getBin","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"binReserveX","type":"uint128","internalType":"uint128"},{"name":"binReserveY","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getBinStep","inputs":[],"outputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"getFactory","inputs":[],"outputs":[{"name":"factory","type":"address","internalType":"contract ILBFactory"}],"stateMutability":"view"},{"type":"function","name":"getIdFromPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getLBHooksParameters","inputs":[],"outputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getNextNonEmptyBin","inputs":[{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"nextId","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getOracleParameters","inputs":[],"outputs":[{"name":"sampleLifetime","type":"uint8","internalType":"uint8"},{"name":"size","type":"uint16","internalType":"uint16"},{"name":"activeSize","type":"uint16","internalType":"uint16"},{"name":"lastUpdated","type":"uint40","internalType":"uint40"},{"name":"firstTimestamp","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"getOracleSampleAt","inputs":[{"name":"lookupTimestamp","type":"uint40","internalType":"uint40"}],"outputs":[{"name":"cumulativeId","type":"uint64","internalType":"uint64"},{"name":"cumulativeVolatility","type":"uint64","internalType":"uint64"},{"name":"cumulativeBinCrossed","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPriceFromId","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getProtocolFees","inputs":[],"outputs":[{"name":"protocolFeeX","type":"uint128","internalType":"uint128"},{"name":"protocolFeeY","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"reserveX","type":"uint128","internalType":"uint128"},{"name":"reserveY","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getStaticFeeParameters","inputs":[],"outputs":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getSwapIn","inputs":[{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"amountOutLeft","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getSwapOut","inputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInLeft","type":"uint128","internalType":"uint128"},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getTokenX","inputs":[],"outputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"getTokenY","inputs":[],"outputs":[{"name":"tokenY","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"getVariableFeeParameters","inputs":[],"outputs":[{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"},{"name":"idReference","type":"uint24","internalType":"uint24"},{"name":"timeOfLastUpdate","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"increaseOracleLength","inputs":[{"name":"newLength","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"activeId","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"refundTo","type":"address","internalType":"address"}],"outputs":[{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"},{"name":"amountsLeft","type":"bytes32","internalType":"bytes32"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"setHooksParameters","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaticFeeParameters","inputs":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amountsOut","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CollectedProtocolFees","inputs":[{"name":"feeRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CompositionFees","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"totalFees","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"DepositedToBins","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"event","name":"FlashLoan","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract ILBFlashLoanCallback"},{"name":"activeId","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"amounts","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"totalFees","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ForcedDecay","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"idReference","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"volatilityReference","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"HooksParametersSet","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"hooksParameters","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OracleLengthIncreased","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"oracleLength","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"StaticFeeParametersSet","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"baseFactor","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"filterPeriod","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"decayPeriod","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"reductionFactor","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"protocolShare","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"amountsIn","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"amountsOut","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"volatilityAccumulator","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"totalFees","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"WithdrawnFromBins","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"error","name":"LBPair__AddressZero","inputs":[]},{"type":"error","name":"LBPair__EmptyMarketConfigs","inputs":[]},{"type":"error","name":"LBPair__FlashLoanCallbackFailed","inputs":[]},{"type":"error","name":"LBPair__FlashLoanInsufficientAmount","inputs":[]},{"type":"error","name":"LBPair__InsufficientAmountIn","inputs":[]},{"type":"error","name":"LBPair__InsufficientAmountOut","inputs":[]},{"type":"error","name":"LBPair__InvalidHooks","inputs":[]},{"type":"error","name":"LBPair__InvalidInput","inputs":[]},{"type":"error","name":"LBPair__InvalidStaticFeeParameters","inputs":[]},{"type":"error","name":"LBPair__MaxTotalFeeExceeded","inputs":[]},{"type":"error","name":"LBPair__OnlyFactory","inputs":[]},{"type":"error","name":"LBPair__OnlyProtocolFeeRecipient","inputs":[]},{"type":"error","name":"LBPair__OutOfLiquidity","inputs":[]},{"type":"error","name":"LBPair__TokenNotSupported","inputs":[]},{"type":"error","name":"LBPair__ZeroAmount","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"LBPair__ZeroAmountsOut","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"LBPair__ZeroBorrowAmount","inputs":[]},{"type":"error","name":"LBPair__ZeroShares","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"LBToken__AddressThisOrZero","inputs":[]},{"type":"error","name":"LBToken__BurnExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBToken__InvalidLength","inputs":[]},{"type":"error","name":"LBToken__SelfApproval","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__SpenderNotApproved","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__TransferExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approveForAll(address,bool)":"e584b654","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","batchTransferFrom(address,address,uint256[],uint256[])":"17fad7fc","burn(address,address,uint256[],uint256[])":"c9939f5e","collectProtocolFees()":"a1af5b9a","flashLoan(address,bytes32,bytes)":"ea3446bf","forceDecay()":"d3b9fbe4","getActiveId()":"dbe65edc","getBin(uint24)":"0abe9688","getBinStep()":"17f11ecc","getFactory()":"88cc58e4","getIdFromPrice(uint256)":"f5e29329","getLBHooksParameters()":"781a8915","getNextNonEmptyBin(bool,uint24)":"a41a01fb","getOracleParameters()":"55182894","getOracleSampleAt(uint40)":"8940a16a","getPriceFromId(uint24)":"4c7cffbd","getProtocolFees()":"d8dfcea0","getReserves()":"0902f1ac","getStaticFeeParameters()":"7ca0de30","getSwapIn(uint128,bool)":"abcd7830","getSwapOut(uint128,bool)":"e77366f8","getTokenX()":"05e8746d","getTokenY()":"da10610c","getVariableFeeParameters()":"8d7024e5","implementation()":"5c60da1b","increaseOracleLength(uint16)":"c7bd6586","initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)":"47973bff","isApprovedForAll(address,address)":"e985e9c5","mint(address,bytes32[],address)":"383d15c5","name()":"06fdde03","setHooksParameters(bytes32,bytes)":"1b057f6d","setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)":"6653851a","swap(bool,address)":"53c059a0","symbol()":"95d89b41","totalSupply(uint256)":"bd85b039"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBPair__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__EmptyMarketConfigs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanCallbackFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanInsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidHooks\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidStaticFeeParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__MaxTotalFeeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyProtocolFeeRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OutOfLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__TokenNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmountsOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__ZeroBorrowAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroShares\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CollectedProtocolFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CompositionFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"DepositedToBins\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"}],\"name\":\"ForcedDecay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"HooksParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"oracleLength\",\"type\":\"uint16\"}],\"name\":\"OracleLengthIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"StaticFeeParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"WithdrawnFromBins\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"collectedProtocolFees\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getActiveId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getBin\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBinStep\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBHooksParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getNextNonEmptyBin\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"nextId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"size\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"activeSize\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"firstTimestamp\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"lookupTimestamp\",\"type\":\"uint40\"}],\"name\":\"getOracleSampleAt\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"cumulativeId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeVolatility\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeBinCrossed\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"protocolFeeX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticFeeParameters\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenY\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVariableFeeParameters\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"timeOfLastUpdate\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newLength\",\"type\":\"uint16\"}],\"name\":\"increaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"amountsLeft\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setHooksParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setStaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBPair.sol\":\"ILBPair\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"LBPair__AddressZero"},{"inputs":[],"type":"error","name":"LBPair__EmptyMarketConfigs"},{"inputs":[],"type":"error","name":"LBPair__FlashLoanCallbackFailed"},{"inputs":[],"type":"error","name":"LBPair__FlashLoanInsufficientAmount"},{"inputs":[],"type":"error","name":"LBPair__InsufficientAmountIn"},{"inputs":[],"type":"error","name":"LBPair__InsufficientAmountOut"},{"inputs":[],"type":"error","name":"LBPair__InvalidHooks"},{"inputs":[],"type":"error","name":"LBPair__InvalidInput"},{"inputs":[],"type":"error","name":"LBPair__InvalidStaticFeeParameters"},{"inputs":[],"type":"error","name":"LBPair__MaxTotalFeeExceeded"},{"inputs":[],"type":"error","name":"LBPair__OnlyFactory"},{"inputs":[],"type":"error","name":"LBPair__OnlyProtocolFeeRecipient"},{"inputs":[],"type":"error","name":"LBPair__OutOfLiquidity"},{"inputs":[],"type":"error","name":"LBPair__TokenNotSupported"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"LBPair__ZeroAmount"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"LBPair__ZeroAmountsOut"},{"inputs":[],"type":"error","name":"LBPair__ZeroBorrowAmount"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"LBPair__ZeroShares"},{"inputs":[],"type":"error","name":"LBToken__AddressThisOrZero"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__BurnExceedsBalance"},{"inputs":[],"type":"error","name":"LBToken__InvalidLength"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"LBToken__SelfApproval"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"LBToken__SpenderNotApproved"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__TransferExceedsBalance"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address","indexed":true},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"CollectedProtocolFees","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint24","name":"id","type":"uint24","indexed":false},{"internalType":"bytes32","name":"totalFees","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"CompositionFees","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"bytes32[]","name":"amounts","type":"bytes32[]","indexed":false}],"type":"event","name":"DepositedToBins","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"contract ILBFlashLoanCallback","name":"receiver","type":"address","indexed":true},{"internalType":"uint24","name":"activeId","type":"uint24","indexed":false},{"internalType":"bytes32","name":"amounts","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"totalFees","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"FlashLoan","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint24","name":"idReference","type":"uint24","indexed":false},{"internalType":"uint24","name":"volatilityReference","type":"uint24","indexed":false}],"type":"event","name":"ForcedDecay","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bytes32","name":"hooksParameters","type":"bytes32","indexed":false}],"type":"event","name":"HooksParametersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint16","name":"oracleLength","type":"uint16","indexed":false}],"type":"event","name":"OracleLengthIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint16","name":"baseFactor","type":"uint16","indexed":false},{"internalType":"uint16","name":"filterPeriod","type":"uint16","indexed":false},{"internalType":"uint16","name":"decayPeriod","type":"uint16","indexed":false},{"internalType":"uint16","name":"reductionFactor","type":"uint16","indexed":false},{"internalType":"uint24","name":"variableFeeControl","type":"uint24","indexed":false},{"internalType":"uint16","name":"protocolShare","type":"uint16","indexed":false},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24","indexed":false}],"type":"event","name":"StaticFeeParametersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint24","name":"id","type":"uint24","indexed":false},{"internalType":"bytes32","name":"amountsIn","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"amountsOut","type":"bytes32","indexed":false},{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24","indexed":false},{"internalType":"bytes32","name":"totalFees","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"bytes32[]","name":"amounts","type":"bytes32[]","indexed":false}],"type":"event","name":"WithdrawnFromBins","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"approveForAll"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"batchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bytes32[]","name":"amounts","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees","outputs":[{"internalType":"bytes32","name":"collectedProtocolFees","type":"bytes32"}]},{"inputs":[{"internalType":"contract ILBFlashLoanCallback","name":"receiver","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"forceDecay"},{"inputs":[],"stateMutability":"view","type":"function","name":"getActiveId","outputs":[{"internalType":"uint24","name":"activeId","type":"uint24"}]},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getBin","outputs":[{"internalType":"uint128","name":"binReserveX","type":"uint128"},{"internalType":"uint128","name":"binReserveY","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBinStep","outputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFactory","outputs":[{"internalType":"contract ILBFactory","name":"factory","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function","name":"getIdFromPrice","outputs":[{"internalType":"uint24","name":"id","type":"uint24"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBHooksParameters","outputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getNextNonEmptyBin","outputs":[{"internalType":"uint24","name":"nextId","type":"uint24"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOracleParameters","outputs":[{"internalType":"uint8","name":"sampleLifetime","type":"uint8"},{"internalType":"uint16","name":"size","type":"uint16"},{"internalType":"uint16","name":"activeSize","type":"uint16"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint40","name":"firstTimestamp","type":"uint40"}]},{"inputs":[{"internalType":"uint40","name":"lookupTimestamp","type":"uint40"}],"stateMutability":"view","type":"function","name":"getOracleSampleAt","outputs":[{"internalType":"uint64","name":"cumulativeId","type":"uint64"},{"internalType":"uint64","name":"cumulativeVolatility","type":"uint64"},{"internalType":"uint64","name":"cumulativeBinCrossed","type":"uint64"}]},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getPriceFromId","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getProtocolFees","outputs":[{"internalType":"uint128","name":"protocolFeeX","type":"uint128"},{"internalType":"uint128","name":"protocolFeeY","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReserves","outputs":[{"internalType":"uint128","name":"reserveX","type":"uint128"},{"internalType":"uint128","name":"reserveY","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStaticFeeParameters","outputs":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}]},{"inputs":[{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapIn","outputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"uint128","name":"amountOutLeft","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapOut","outputs":[{"internalType":"uint128","name":"amountInLeft","type":"uint128"},{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTokenX","outputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTokenY","outputs":[{"internalType":"contract IERC20","name":"tokenY","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getVariableFeeParameters","outputs":[{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"},{"internalType":"uint24","name":"idReference","type":"uint24"},{"internalType":"uint40","name":"timeOfLastUpdate","type":"uint40"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint16","name":"newLength","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"increaseOracleLength"},{"inputs":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"activeId","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"address","name":"refundTo","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"},{"internalType":"bytes32","name":"amountsLeft","type":"bytes32"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setHooksParameters"},{"inputs":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setStaticFeeParameters"},{"inputs":[{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"bytes32","name":"amountsOut","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBPair.sol":"ILBPair"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"}},"version":1},"id":55} \ No newline at end of file diff --git a/abi/ILBRouter.sol/ILBRouter.json b/abi/ILBRouter.sol/ILBRouter.json deleted file mode 100644 index acd514ac..00000000 --- a/abi/ILBRouter.sol/ILBRouter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"liquidityParameters","type":"tuple","internalType":"struct ILBRouter.LiquidityParameters","components":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"deltaIds","type":"int256[]","internalType":"int256[]"},{"name":"distributionX","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionY","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"refundTo","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountXAdded","type":"uint256","internalType":"uint256"},{"name":"amountYAdded","type":"uint256","internalType":"uint256"},{"name":"amountXLeft","type":"uint256","internalType":"uint256"},{"name":"amountYLeft","type":"uint256","internalType":"uint256"},{"name":"depositIds","type":"uint256[]","internalType":"uint256[]"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidityNATIVE","inputs":[{"name":"liquidityParameters","type":"tuple","internalType":"struct ILBRouter.LiquidityParameters","components":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"deltaIds","type":"int256[]","internalType":"int256[]"},{"name":"distributionX","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionY","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"refundTo","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountXAdded","type":"uint256","internalType":"uint256"},{"name":"amountYAdded","type":"uint256","internalType":"uint256"},{"name":"amountXLeft","type":"uint256","internalType":"uint256"},{"name":"amountYLeft","type":"uint256","internalType":"uint256"},{"name":"depositIds","type":"uint256[]","internalType":"uint256[]"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"createLBPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"getFactory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ILBFactory"}],"stateMutability":"view"},{"type":"function","name":"getIdFromPrice","inputs":[{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getPriceFromId","inputs":[{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapIn","inputs":[{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"amountOutLeft","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getSwapOut","inputs":[{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInLeft","type":"uint128","internalType":"uint128"},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getV1Factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISovrynLBFactoryV1"}],"stateMutability":"view"},{"type":"function","name":"getWNATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWNATIVE"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityNATIVE","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountNATIVEMin","type":"uint256","internalType":"uint256"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountNATIVE","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactNATIVEForTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapExactNATIVEForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapExactTokensForNATIVE","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinNATIVE","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForNATIVESupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinNATIVE","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapNATIVEForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapTokensForExactNATIVE","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"sweep","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sweepLBToken","inputs":[{"name":"_lbToken","type":"address","internalType":"contract ILBToken"},{"name":"_to","type":"address","internalType":"address"},{"name":"_ids","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"LBRouter__AmountSlippageBPTooBig","inputs":[{"name":"amountSlippage","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__AmountSlippageCaught","inputs":[{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__BinReserveOverflows","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__BrokenSwapSafetyCheck","inputs":[]},{"type":"error","name":"LBRouter__DeadlineExceeded","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"currentTimestamp","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__FailedToSendNATIVE","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__IdDesiredOverflows","inputs":[{"name":"idDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__IdOverflows","inputs":[{"name":"id","type":"int256","internalType":"int256"}]},{"type":"error","name":"LBRouter__IdSlippageCaught","inputs":[{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"activeId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__InsufficientAmountOut","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__InvalidTokenPath","inputs":[{"name":"wrongToken","type":"address","internalType":"address"}]},{"type":"error","name":"LBRouter__InvalidVersion","inputs":[{"name":"version","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__LengthsMismatch","inputs":[]},{"type":"error","name":"LBRouter__MaxAmountInExceeded","inputs":[{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"amountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__NotFactoryOwner","inputs":[]},{"type":"error","name":"LBRouter__PairNotCreated","inputs":[{"name":"tokenX","type":"address","internalType":"address"},{"name":"tokenY","type":"address","internalType":"address"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__SenderIsNotWNATIVE","inputs":[]},{"type":"error","name":"LBRouter__SwapOverflows","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__TooMuchTokensIn","inputs":[{"name":"excess","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__WrongAmounts","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"reserve","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__WrongNativeLiquidityParameters","inputs":[{"name":"tokenX","type":"address","internalType":"address"},{"name":"tokenY","type":"address","internalType":"address"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"msgValue","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__WrongTokenOrder","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":"a3c7271a","addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":"8efc2b2c","createLBPair(address,address,uint24,uint16)":"659ac74b","getFactory()":"88cc58e4","getIdFromPrice(address,uint256)":"f96fe925","getPriceFromId(address,uint24)":"d0e380f2","getSwapIn(address,uint128,bool)":"964f987c","getSwapOut(address,uint128,bool)":"a0d376cf","getV1Factory()":"bb558a9f","getWNATIVE()":"6c9c0078","removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":"c22159b6","removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":"81c2fdfb","swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":"b066ea7c","swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":"e038e6dc","swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"9ab6156b","swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"1a24f9a9","swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"2a443fae","swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"4b801870","swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":"2075ad22","swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"3dc8f8ec","swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"92fe8e70","sweep(address,address,uint256)":"62c06767","sweepLBToken(address,address,uint256[],uint256[])":"e9361c08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageBPTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__BinReserveOverflows\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__BrokenSwapSafetyCheck\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"LBRouter__DeadlineExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBRouter__FailedToSendNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdDesiredOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"id\",\"type\":\"int256\"}],\"name\":\"LBRouter__IdOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeId\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrongToken\",\"type\":\"address\"}],\"name\":\"LBRouter__InvalidTokenPath\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__LengthsMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"LBRouter__MaxAmountInExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__NotFactoryOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBRouter__PairNotCreated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__SenderIsNotWNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__SwapOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"excess\",\"type\":\"uint256\"}],\"name\":\"LBRouter__TooMuchTokensIn\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserve\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongAmounts\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongNativeLiquidityParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__WrongTokenOrder\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getV1Factory\",\"outputs\":[{\"internalType\":\"contract ISovrynLBFactoryV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWNATIVE\",\"outputs\":[{\"internalType\":\"contract IWNATIVE\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVEMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVE\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVESupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapNATIVEForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactNATIVE\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBToken\",\"name\":\"_lbToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"sweepLBToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Router Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBRouter contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBRouter.sol\":\"ILBRouter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountSlippage","type":"uint256"}],"type":"error","name":"LBRouter__AmountSlippageBPTooBig"},{"inputs":[{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}],"type":"error","name":"LBRouter__AmountSlippageCaught"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"type":"error","name":"LBRouter__BinReserveOverflows"},{"inputs":[],"type":"error","name":"LBRouter__BrokenSwapSafetyCheck"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"currentTimestamp","type":"uint256"}],"type":"error","name":"LBRouter__DeadlineExceeded"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBRouter__FailedToSendNATIVE"},{"inputs":[{"internalType":"uint256","name":"idDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"}],"type":"error","name":"LBRouter__IdDesiredOverflows"},{"inputs":[{"internalType":"int256","name":"id","type":"int256"}],"type":"error","name":"LBRouter__IdOverflows"},{"inputs":[{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"uint256","name":"activeId","type":"uint256"}],"type":"error","name":"LBRouter__IdSlippageCaught"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"type":"error","name":"LBRouter__InsufficientAmountOut"},{"inputs":[{"internalType":"address","name":"wrongToken","type":"address"}],"type":"error","name":"LBRouter__InvalidTokenPath"},{"inputs":[{"internalType":"uint256","name":"version","type":"uint256"}],"type":"error","name":"LBRouter__InvalidVersion"},{"inputs":[],"type":"error","name":"LBRouter__LengthsMismatch"},{"inputs":[{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"type":"error","name":"LBRouter__MaxAmountInExceeded"},{"inputs":[],"type":"error","name":"LBRouter__NotFactoryOwner"},{"inputs":[{"internalType":"address","name":"tokenX","type":"address"},{"internalType":"address","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBRouter__PairNotCreated"},{"inputs":[],"type":"error","name":"LBRouter__SenderIsNotWNATIVE"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"type":"error","name":"LBRouter__SwapOverflows"},{"inputs":[{"internalType":"uint256","name":"excess","type":"uint256"}],"type":"error","name":"LBRouter__TooMuchTokensIn"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"reserve","type":"uint256"}],"type":"error","name":"LBRouter__WrongAmounts"},{"inputs":[{"internalType":"address","name":"tokenX","type":"address"},{"internalType":"address","name":"tokenY","type":"address"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"msgValue","type":"uint256"}],"type":"error","name":"LBRouter__WrongNativeLiquidityParameters"},{"inputs":[],"type":"error","name":"LBRouter__WrongTokenOrder"},{"inputs":[{"internalType":"struct ILBRouter.LiquidityParameters","name":"liquidityParameters","type":"tuple","components":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"int256[]","name":"deltaIds","type":"int256[]"},{"internalType":"uint256[]","name":"distributionX","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionY","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"refundTo","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountXAdded","type":"uint256"},{"internalType":"uint256","name":"amountYAdded","type":"uint256"},{"internalType":"uint256","name":"amountXLeft","type":"uint256"},{"internalType":"uint256","name":"amountYLeft","type":"uint256"},{"internalType":"uint256[]","name":"depositIds","type":"uint256[]"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[{"internalType":"struct ILBRouter.LiquidityParameters","name":"liquidityParameters","type":"tuple","components":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"int256[]","name":"deltaIds","type":"int256[]"},{"internalType":"uint256[]","name":"distributionX","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionY","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"refundTo","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"addLiquidityNATIVE","outputs":[{"internalType":"uint256","name":"amountXAdded","type":"uint256"},{"internalType":"uint256","name":"amountYAdded","type":"uint256"},{"internalType":"uint256","name":"amountXLeft","type":"uint256"},{"internalType":"uint256","name":"amountYLeft","type":"uint256"},{"internalType":"uint256[]","name":"depositIds","type":"uint256[]"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"createLBPair","outputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFactory","outputs":[{"internalType":"contract ILBFactory","name":"","type":"address"}]},{"inputs":[{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function","name":"getIdFromPrice","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getPriceFromId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapIn","outputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"uint128","name":"amountOutLeft","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapOut","outputs":[{"internalType":"uint128","name":"amountInLeft","type":"uint128"},{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getV1Factory","outputs":[{"internalType":"contract ISovrynLBFactoryV1","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWNATIVE","outputs":[{"internalType":"contract IWNATIVE","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountNATIVEMin","type":"uint256"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityNATIVE","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountNATIVE","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactNATIVEForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactNATIVEForTokensSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinNATIVE","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForNATIVE","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinNATIVE","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForNATIVESupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapNATIVEForExactTokens","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactNATIVE","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sweep"},{"inputs":[{"internalType":"contract ILBToken","name":"_lbToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"sweepLBToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBRouter.sol":"ILBRouter"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"}},"version":1},"id":55} \ No newline at end of file diff --git a/abi/ILBToken.sol/ILBToken.json b/abi/ILBToken.sol/ILBToken.json deleted file mode 100644 index d8ab4fd6..00000000 --- a/abi/ILBToken.sol/ILBToken.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approveForAll","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"batchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"error","name":"LBToken__AddressThisOrZero","inputs":[]},{"type":"error","name":"LBToken__BurnExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBToken__InvalidLength","inputs":[]},{"type":"error","name":"LBToken__SelfApproval","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__SpenderNotApproved","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__TransferExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approveForAll(address,bool)":"e584b654","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","batchTransferFrom(address,address,uint256[],uint256[])":"17fad7fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","symbol()":"95d89b41","totalSupply(uint256)":"bd85b039"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Token Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with the LBToken.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBToken.sol\":\"ILBToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"LBToken__AddressThisOrZero"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__BurnExceedsBalance"},{"inputs":[],"type":"error","name":"LBToken__InvalidLength"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"LBToken__SelfApproval"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"LBToken__SpenderNotApproved"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__TransferExceedsBalance"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"approveForAll"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"batchTransferFrom"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ILBToken.sol":"ILBToken"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"}},"version":1},"id":57} \ No newline at end of file diff --git a/abi/IMulticall3.sol/IMulticall3.json b/abi/IMulticall3.sol/IMulticall3.json deleted file mode 100644 index 37bde5b8..00000000 --- a/abi/IMulticall3.sol/IMulticall3.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/abi/ISovrynLBFactory.sol/ISovrynLBFactory.json b/abi/ISovrynLBFactory.sol/ISovrynLBFactory.json deleted file mode 100644 index 6f7e7f5a..00000000 --- a/abi/ISovrynLBFactory.sol/ISovrynLBFactory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allPairs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"allPairsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"createPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"feeTo","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"feeToSetter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"migrator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setFeeTo","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeToSetter","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMigrator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"PairCreated","inputs":[{"name":"token0","type":"address","indexed":true,"internalType":"address"},{"name":"token1","type":"address","indexed":true,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allPairs(uint256)":"1e3dd18b","allPairsLength()":"574f2ba3","createPair(address,address)":"c9c65396","feeTo()":"017e7e58","feeToSetter()":"094b7415","getPair(address,address)":"e6a43905","migrator()":"7cd07e47","setFeeTo(address)":"f46901ed","setFeeToSetter(address)":"a2e74af6","setMigrator(address)":"23cf3118"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Factory\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBFactoryV1.sol\":\"ISovrynLBFactoryV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f\",\"dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":true},{"internalType":"address","name":"token1","type":"address","indexed":true},{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"PairCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"allPairs","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"view","type":"function","name":"getPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeTo"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeToSetter"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMigrator"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISovrynLBFactoryV1.sol":"ISovrynLBFactoryV1"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552","urls":["bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f","dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV"],"license":"GPL-3.0"}},"version":1},"id":58} \ No newline at end of file diff --git a/abi/ISovrynLBFactoryV1.sol/ISovrynLBFactoryV1.json b/abi/ISovrynLBFactoryV1.sol/ISovrynLBFactoryV1.json deleted file mode 100644 index 0cfbfc6b..00000000 --- a/abi/ISovrynLBFactoryV1.sol/ISovrynLBFactoryV1.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allPairs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"allPairsLength","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"createPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"feeTo","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"feeToSetter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pair","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"migrator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setFeeTo","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeToSetter","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMigrator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"PairCreated","inputs":[{"name":"token0","type":"address","indexed":true,"internalType":"address"},{"name":"token1","type":"address","indexed":true,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"},{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allPairs(uint256)":"1e3dd18b","allPairsLength()":"574f2ba3","createPair(address,address)":"c9c65396","feeTo()":"017e7e58","feeToSetter()":"094b7415","getPair(address,address)":"e6a43905","migrator()":"7cd07e47","setFeeTo(address)":"f46901ed","setFeeToSetter(address)":"a2e74af6","setMigrator(address)":"23cf3118"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Factory\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBFactoryV1.sol\":\"ISovrynLBFactoryV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":true},{"internalType":"address","name":"token1","type":"address","indexed":true},{"internalType":"address","name":"pair","type":"address","indexed":false},{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"PairCreated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"allPairs","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"view","type":"function","name":"getPair","outputs":[{"internalType":"address","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeTo"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeToSetter"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMigrator"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISovrynLBFactoryV1.sol":"ISovrynLBFactoryV1"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"}},"version":1},"id":57} \ No newline at end of file diff --git a/abi/ISovrynLBPair.sol/ISovrynLBPair.json b/abi/ISovrynLBPair.sol/ISovrynLBPair.json deleted file mode 100644 index b2e73bce..00000000 --- a/abi/ISovrynLBPair.sol/ISovrynLBPair.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MINIMUM_LIQUIDITY","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"PERMIT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"reserve0","type":"uint112","internalType":"uint112"},{"name":"reserve1","type":"uint112","internalType":"uint112"},{"name":"blockTimestampLast","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"kLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"price0CumulativeLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"price1CumulativeLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"skim","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"amount0Out","type":"uint256","internalType":"uint256"},{"name":"amount1Out","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"sync","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount0Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Sync","inputs":[{"name":"reserve0","type":"uint112","indexed":false,"internalType":"uint112"},{"name":"reserve1","type":"uint112","indexed":false,"internalType":"uint112"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","MINIMUM_LIQUIDITY()":"ba9a7a56","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address)":"89afcb44","decimals()":"313ce567","factory()":"c45a0155","getReserves()":"0902f1ac","initialize(address,address)":"485cc955","kLast()":"7464fc3d","mint(address)":"6a627842","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","price0CumulativeLast()":"5909c0d5","price1CumulativeLast()":"5a3d5493","skim(address)":"bc25cf77","swap(uint256,uint256,address,bytes)":"022c0d9f","symbol()":"95d89b41","sync()":"fff6cae9","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Pair Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Pairs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBPairV1.sol\":\"ISovrynLBPairV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76\",\"dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount0Out","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1Out","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"uint112","name":"reserve0","type":"uint112","indexed":false},{"internalType":"uint112","name":"reserve1","type":"uint112","indexed":false}],"type":"event","name":"Sync","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"skim"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap"},{"inputs":[],"stateMutability":"pure","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISovrynLBPairV1.sol":"ISovrynLBPairV1"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958","urls":["bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76","dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH"],"license":"GPL-3.0"}},"version":1},"id":59} \ No newline at end of file diff --git a/abi/ISovrynLBPairV1.sol/ISovrynLBPairV1.json b/abi/ISovrynLBPairV1.sol/ISovrynLBPairV1.json deleted file mode 100644 index 15408cf9..00000000 --- a/abi/ISovrynLBPairV1.sol/ISovrynLBPairV1.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MINIMUM_LIQUIDITY","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"PERMIT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"reserve0","type":"uint112","internalType":"uint112"},{"name":"reserve1","type":"uint112","internalType":"uint112"},{"name":"blockTimestampLast","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"kLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"price0CumulativeLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"price1CumulativeLast","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"skim","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"amount0Out","type":"uint256","internalType":"uint256"},{"name":"amount1Out","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"sync","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1In","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount0Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1Out","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Sync","inputs":[{"name":"reserve0","type":"uint112","indexed":false,"internalType":"uint112"},{"name":"reserve1","type":"uint112","indexed":false,"internalType":"uint112"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","MINIMUM_LIQUIDITY()":"ba9a7a56","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address)":"89afcb44","decimals()":"313ce567","factory()":"c45a0155","getReserves()":"0902f1ac","initialize(address,address)":"485cc955","kLast()":"7464fc3d","mint(address)":"6a627842","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","price0CumulativeLast()":"5909c0d5","price1CumulativeLast()":"5a3d5493","skim(address)":"bc25cf77","swap(uint256,uint256,address,bytes)":"022c0d9f","symbol()":"95d89b41","sync()":"fff6cae9","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Pair Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Pairs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBPairV1.sol\":\"ISovrynLBPairV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1In","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount0Out","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1Out","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"uint112","name":"reserve0","type":"uint112","indexed":false},{"internalType":"uint112","name":"reserve1","type":"uint112","indexed":false}],"type":"event","name":"Sync","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"skim"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap"},{"inputs":[],"stateMutability":"pure","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISovrynLBPairV1.sol":"ISovrynLBPairV1"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"}},"version":1},"id":58} \ No newline at end of file diff --git a/abi/ISovrynLBRouter01.sol/ISovrynLBRouter01.json b/abi/ISovrynLBRouter01.sol/ISovrynLBRouter01.json deleted file mode 100644 index 2eeb8792..00000000 --- a/abi/ISovrynLBRouter01.sol/ISovrynLBRouter01.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"WAVAX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"addLiquidity","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"amountADesired","type":"uint256","internalType":"uint256"},{"name":"amountBDesired","type":"uint256","internalType":"uint256"},{"name":"amountAMin","type":"uint256","internalType":"uint256"},{"name":"amountBMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"amountB","type":"uint256","internalType":"uint256"},{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidityAVAX","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amountTokenDesired","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountAVAX","type":"uint256","internalType":"uint256"},{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getAmountIn","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"reserveIn","type":"uint256","internalType":"uint256"},{"name":"reserveOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getAmountOut","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"reserveIn","type":"uint256","internalType":"uint256"},{"name":"reserveOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getAmountsIn","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getAmountsOut","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"quote","inputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"reserveA","type":"uint256","internalType":"uint256"},{"name":"reserveB","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountB","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountAMin","type":"uint256","internalType":"uint256"},{"name":"amountBMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"amountB","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityAVAX","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountAVAX","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityAVAXWithPermit","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"approveMax","type":"bool","internalType":"bool"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountAVAX","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityWithPermit","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountAMin","type":"uint256","internalType":"uint256"},{"name":"amountBMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"approveMax","type":"bool","internalType":"bool"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"amountB","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapAVAXForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapExactAVAXForTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapExactTokensForAVAX","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactAVAX","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"WAVAX()":"73b295c2","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)":"f91b3f72","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)":"33c6b725","removeLiquidityAVAXWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2c407024","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapAVAXForExactTokens(uint256,address[],address,uint256)":"8a657e67","swapExactAVAXForTokens(uint256,address[],address,uint256)":"a2a1623d","swapExactTokensForAVAX(uint256,uint256,address[],address,uint256)":"676528d1","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapTokensForExactAVAX(uint256,uint256,address[],address,uint256)":"7a42416a","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WAVAX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAVAXWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAVAXForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Router01 Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBRouter01.sol\":\"ISovrynLBRouter01\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"pure","type":"function","name":"WAVAX","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"addLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"stateMutability":"view","type":"function","name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"stateMutability":"view","type":"function","name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"stateMutability":"pure","type":"function","name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityAVAXWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapAVAXForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactAVAXForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISovrynLBRouter01.sol":"ISovrynLBRouter01"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"}},"version":1},"id":60} \ No newline at end of file diff --git a/abi/ISovrynLBRouter02.sol/ISovrynLBRouter02.json b/abi/ISovrynLBRouter02.sol/ISovrynLBRouter02.json deleted file mode 100644 index b4c0ea14..00000000 --- a/abi/ISovrynLBRouter02.sol/ISovrynLBRouter02.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"WAVAX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"addLiquidity","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"amountADesired","type":"uint256","internalType":"uint256"},{"name":"amountBDesired","type":"uint256","internalType":"uint256"},{"name":"amountAMin","type":"uint256","internalType":"uint256"},{"name":"amountBMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"amountB","type":"uint256","internalType":"uint256"},{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidityAVAX","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amountTokenDesired","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountAVAX","type":"uint256","internalType":"uint256"},{"name":"liquidity","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getAmountIn","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"reserveIn","type":"uint256","internalType":"uint256"},{"name":"reserveOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getAmountOut","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"reserveIn","type":"uint256","internalType":"uint256"},{"name":"reserveOut","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getAmountsIn","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getAmountsOut","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"quote","inputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"reserveA","type":"uint256","internalType":"uint256"},{"name":"reserveB","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountB","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountAMin","type":"uint256","internalType":"uint256"},{"name":"amountBMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"amountB","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityAVAX","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountAVAX","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityAVAXSupportingFeeOnTransferTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountAVAX","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityAVAXWithPermit","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"approveMax","type":"bool","internalType":"bool"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountAVAX","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountAVAXMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"approveMax","type":"bool","internalType":"bool"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"amountAVAX","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityWithPermit","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"liquidity","type":"uint256","internalType":"uint256"},{"name":"amountAMin","type":"uint256","internalType":"uint256"},{"name":"amountBMin","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"approveMax","type":"bool","internalType":"bool"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"amountA","type":"uint256","internalType":"uint256"},{"name":"amountB","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapAVAXForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapExactAVAXForTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapExactAVAXForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"swapExactTokensForAVAX","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForAVAXSupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactAVAX","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"WAVAX()":"73b295c2","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)":"f91b3f72","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityAVAX(address,uint256,uint256,uint256,address,uint256)":"33c6b725","removeLiquidityAVAXSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)":"73bc79cf","removeLiquidityAVAXWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2c407024","removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"9fc27226","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapAVAXForExactTokens(uint256,address[],address,uint256)":"8a657e67","swapExactAVAXForTokens(uint256,address[],address,uint256)":"a2a1623d","swapExactAVAXForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)":"c57559dd","swapExactTokensForAVAX(uint256,uint256,address[],address,uint256)":"676528d1","swapExactTokensForAVAXSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"762b1562","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"5c11d795","swapTokensForExactAVAX(uint256,uint256,address[],address,uint256)":"7a42416a","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WAVAX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAXSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAVAXWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAVAXForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAXSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Router Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBRouter02.sol\":\"ISovrynLBRouter02\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"pure","type":"function","name":"WAVAX","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"addLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"stateMutability":"view","type":"function","name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"stateMutability":"view","type":"function","name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"stateMutability":"pure","type":"function","name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityAVAXSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAVAX","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityAVAXWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAVAX","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapAVAXForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactAVAXForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactAVAXForTokensSupportingFeeOnTransferTokens"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForAVAXSupportingFeeOnTransferTokens"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISovrynLBRouter02.sol":"ISovrynLBRouter02"},"evmVersion":"paris","libraries":{}},"sources":{"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"}},"version":1},"id":61} \ No newline at end of file diff --git a/abi/IWNATIVE.sol/IWNATIVE.json b/abi/IWNATIVE.sol/IWNATIVE.json deleted file mode 100644 index 93e0dd7c..00000000 --- a/abi/IWNATIVE.sol/IWNATIVE.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"WNATIVE Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of Wrapped NATIVE contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IWNATIVE.sol\":\"IWNATIVE\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IWNATIVE.sol":"IWNATIVE"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"}},"version":1},"id":62} \ No newline at end of file diff --git a/abi/ImmutableClone.sol/ImmutableClone.json b/abi/ImmutableClone.sol/ImmutableClone.json deleted file mode 100644 index d8edca19..00000000 --- a/abi/ImmutableClone.sol/ImmutableClone.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"DeploymentFailed","inputs":[]},{"type":"error","name":"PackedDataTooBig","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220972c6d1b3e39b803682bce73270440b89138436156260fe608c5fad9f3fd485764736f6c63430008140033","sourceMap":"923:14134:68:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;923:14134:68;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220972c6d1b3e39b803682bce73270440b89138436156260fe608c5fad9f3fd485764736f6c63430008140033","sourceMap":"923:14134:68:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DeploymentFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedDataTooBig\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LBSolady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)Minimal proxy by 0age (https://github.com/0age)Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\",\"details\":\"Minimal proxy: Although the sw0nt pattern saves 5 gas over the erc-1167 pattern during runtime, it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern, which saves 4 gas over the erc-1167 pattern during runtime, and has the smallest bytecode.Clones with immutable args (CWIA): The implementation of CWIA here doesn't implements a `receive()` as it is not needed for LB.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Immutable Clone Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Minimal immutable proxy library.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/ImmutableClone.sol\":\"ImmutableClone\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"DeploymentFailed"},{"inputs":[],"type":"error","name":"PackedDataTooBig"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/ImmutableClone.sol":"ImmutableClone"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"}},"version":1},"id":68} \ No newline at end of file diff --git a/abi/ImmutableClone.t.sol/Implementation.json b/abi/ImmutableClone.t.sol/Implementation.json deleted file mode 100644 index 8a946bfa..00000000 --- a/abi/ImmutableClone.t.sol/Implementation.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getBytes","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610129806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806357bc2ef314602d575b600080fd5b603c6038366004608f565b6050565b6040516047919060a7565b60405180910390f35b6060605b6000836061565b92915050565b6040518181523660011981013560f01c900382848201602084013750908101603f01601f1916604052919050565b60006020828403121560a057600080fd5b5035919050565b600060208083528351808285015260005b8181101560d25785810183015185820160400152820160b8565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122013c0c36a13cf5c336df1bb7f9fe4988b200a3db710861ad8c4e13a1e9ff486a164736f6c63430008140033","sourceMap":"3104:157:106:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c806357bc2ef314602d575b600080fd5b603c6038366004608f565b6050565b6040516047919060a7565b60405180910390f35b6060605b6000836061565b92915050565b6040518181523660011981013560f01c900382848201602084013750908101603f01601f1916604052919050565b60006020828403121560a057600080fd5b5035919050565b600060208083528351808285015260005b8181101560d25785810183015185820160400152820160b8565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122013c0c36a13cf5c336df1bb7f9fe4988b200a3db710861ad8c4e13a1e9ff486a164736f6c63430008140033","sourceMap":"3104:157:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3143:116;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;3198:12;3229:23;3242:1;3245:6;3229:12;:23::i;:::-;3222:30;3143:116;-1:-1:-1;;3143:116:106:o;679:627:64:-;963:4;957:11;1020:19;;;4824:14;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1020:19;1112:22;;;1105:4;1096:14;;1083:60;-1:-1:-1;1250:27:64;;;1263:4;1250:27;-1:-1:-1;;1246:43:64;1240:4;1233:57;1258:3;679:627;-1:-1:-1;679:627:64:o;14:180:127:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:127;;14:180;-1:-1:-1;14:180:127:o;199:546::-;309:4;338:2;367;356:9;349:21;399:6;393:13;442:6;437:2;426:9;422:18;415:34;467:1;477:140;491:6;488:1;485:13;477:140;;;586:14;;;582:23;;576:30;552:17;;;571:2;548:26;541:66;506:10;;477:140;;;481:3;666:1;661:2;652:6;641:9;637:22;633:31;626:42;736:2;729;725:7;720:2;712:6;708:15;704:29;693:9;689:45;685:54;677:62;;;;199:546;;;;:::o","linkReferences":{}},"methodIdentifiers":{"getBytes(uint256)":"57bc2ef3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/ImmutableClone.t.sol\":\"Implementation\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"test/libraries/ImmutableClone.t.sol\":{\"keccak256\":\"0xa7397e03ff3585d1a9a7e4857e5e6fe42bc1fc53e9c969d7cbd9144393f567ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d752ca19223f43f24e2c787b2aedf24590646f0f49fee8cf5d9981eea9dda539\",\"dweb:/ipfs/QmP9x3iShQvY7GBEkfiY3HNMMPKGEcU5J5pyBTqKmR9eTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/ImmutableClone.t.sol":"Implementation"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"test/libraries/ImmutableClone.t.sol":{"keccak256":"0xa7397e03ff3585d1a9a7e4857e5e6fe42bc1fc53e9c969d7cbd9144393f567ae","urls":["bzz-raw://d752ca19223f43f24e2c787b2aedf24590646f0f49fee8cf5d9981eea9dda539","dweb:/ipfs/QmP9x3iShQvY7GBEkfiY3HNMMPKGEcU5J5pyBTqKmR9eTC"],"license":"MIT"}},"version":1},"id":106} \ No newline at end of file diff --git a/abi/ImmutableClone.t.sol/Pair.json b/abi/ImmutableClone.t.sol/Pair.json deleted file mode 100644 index e3abcb59..00000000 --- a/abi/ImmutableClone.t.sol/Pair.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"getBinStep","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"function","name":"getTokenX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getTokenY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5060f98061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806305e8746d14604157806317f11ecc14607c578063da10610c1460ac575b600080fd5b3660011981013560f01c90033560601c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b609a60003660011981013560f090811c90910360280135901c905090565b60405161ffff90911681526020016073565b3660011981013560f01c90036014013560601c605256fea2646970667358221220a0d32e30fe43b568be867c0d61bd403114d8e5a3ea863589a58aa18f0f1b6df864736f6c63430008140033","sourceMap":"2782:320:106:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c806305e8746d14604157806317f11ecc14607c578063da10610c1460ac575b600080fd5b3660011981013560f01c90033560601c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b609a60003660011981013560f090811c90910360280135901c905090565b60405161ffff90911681526020016073565b3660011981013560f01c90036014013560601c605256fea2646970667358221220a0d32e30fe43b568be867c0d61bd403114d8e5a3ea863589a58aa18f0f1b6df864736f6c63430008140033","sourceMap":"2782:320:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2811:92;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;1712:4;1708:47;2811:92:106;;;190:42:127;178:55;;;160:74;;148:2;133:18;2811:92:106;;;;;;;;3008;;3051:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;3090:2:106;3952:22:64;3939:36;3929:47;;2872:24:106;;2811:92;;3008;;;419:6:127;407:19;;;389:38;;377:2;362:18;3008:92:106;245:188:127;2909:93:106;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;2992:2:106;1731:22:64;1718:36;1712:4;1708:47;2909:93:106;2811:92::o","linkReferences":{}},"methodIdentifiers":{"getBinStep()":"17f11ecc","getTokenX()":"05e8746d","getTokenY()":"da10610c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getBinStep\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/ImmutableClone.t.sol\":\"Pair\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"test/libraries/ImmutableClone.t.sol\":{\"keccak256\":\"0xa7397e03ff3585d1a9a7e4857e5e6fe42bc1fc53e9c969d7cbd9144393f567ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d752ca19223f43f24e2c787b2aedf24590646f0f49fee8cf5d9981eea9dda539\",\"dweb:/ipfs/QmP9x3iShQvY7GBEkfiY3HNMMPKGEcU5J5pyBTqKmR9eTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"pure","type":"function","name":"getBinStep","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getTokenX","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getTokenY","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/ImmutableClone.t.sol":"Pair"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"test/libraries/ImmutableClone.t.sol":{"keccak256":"0xa7397e03ff3585d1a9a7e4857e5e6fe42bc1fc53e9c969d7cbd9144393f567ae","urls":["bzz-raw://d752ca19223f43f24e2c787b2aedf24590646f0f49fee8cf5d9981eea9dda539","dweb:/ipfs/QmP9x3iShQvY7GBEkfiY3HNMMPKGEcU5J5pyBTqKmR9eTC"],"license":"MIT"}},"version":1},"id":106} \ No newline at end of file diff --git a/abi/ImmutableClone.t.sol/TestImmutableClone.json b/abi/ImmutableClone.t.sol/TestImmutableClone.json deleted file mode 100644 index 68475f21..00000000 --- a/abi/ImmutableClone.t.sol/TestImmutableClone.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"cloneDeterministic","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_CloneDeterministic","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_Implementation","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_Pair","inputs":[{"name":"tokenX","type":"address","internalType":"address"},{"name":"tokenY","type":"address","internalType":"address"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CloneDeterministicMaxLength","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CloneDeterministicTooBig","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b50611bea8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806366d9a9a011610097578063b5508aa911610066578063b5508aa9146101dd578063ba414fa6146101e5578063de6cd29c146101fd578063e20c9f711461021057600080fd5b806366d9a9a0146101a357806385226c81146101b85780638ce1c008146101cd578063916a17c6146101d557600080fd5b80633e5e3c23116100d35780633e5e3c23146101555780633f7286f41461015d57806340419eec146101655780634d9d9b681461019057600080fd5b8063159f49bd146101055780631ed7831c1461010f5780632811eeb31461012d5780632ade388014610140575b600080fd5b61010d610218565b005b610117610322565b6040516101249190611338565b60405180910390f35b61010d61013b36600461144a565b610384565b61014861050b565b60405161012491906114cf565b61011761064d565b6101176106ad565b6101786101733660046115a7565b61070d565b6040516001600160a01b039091168152602001610124565b61010d61019e366004611610565b610722565b6101ab6109e0565b604051610124919061165b565b6101c0610adb565b6040516101249190611726565b61010d610bab565b6101ab610c4f565b6101c0610d4a565b6101ed610e1a565b6040519015158152602001610124565b61010d61020b366004611788565b610ed5565b610117611031565b6040805161ffc880825262010000820190925260009160208201818036833701905050905060ff602082015360ca815182015360006040516102599061131e565b604051809103906000f080158015610275573d6000803e3d6000fd5b5090506000610285828483611091565b905061031d816001600160a01b03166357bc2ef385516040518263ffffffff1660e01b81526004016102b991815260200190565b600060405180830381865afa1580156102d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102fe91908101906117a1565b84604051806060016040528060238152602001611b926023913961114c565b505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161035c575b5050505050905090565b8051604051632631f2b160e11b815261ffca91909110156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156103d757600080fd5b505afa1580156103eb573d6000803e3d6000fd5b5050505060006040516103fd9061131e565b604051809103906000f080158015610419573d6000803e3d6000fd5b5090507fa05e334153147e75f3f416139b5109d1179cb56fef6a4ecb4c4cbc92a7c37b70600061044a838584611091565b84516040516357bc2ef360e01b81529192508291610504916001600160a01b038416916357bc2ef3916104839160040190815260200190565b600060405180830381865afa1580156104a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104c891908101906117a1565b866040518060400160405280601a81526020017f7465737446757a7a5f496d706c656d656e746174696f6e3a3a3100000000000081525061114c565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561064457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561062d5783829060005260206000200180546105a090611818565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc90611818565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b505050505081526020019060010190610581565b50505050815250508152602001906001019061052f565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161035c575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161035c575050505050905090565b600061071a848484611091565b949350505050565b60006040516107309061132b565b604051809103906000f08015801561074c573d6000803e3d6000fd5b506040516bffffffffffffffffffffffff19606087811b8216602084015286901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f085901b1660488201529091507fa05e334153147e75f3f416139b5109d1179cb56fef6a4ecb4c4cbc92a7c37b70906000906107e5908490604a0160405160208183030381529060405284611091565b9050600081905061088d816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611852565b886040518060400160405280601081526020017f7465737446757a7a5f506169723a3a31000000000000000000000000000000008152506111b2565b61092e816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f29190611852565b876040518060400160405280601081526020017f7465737446757a7a5f506169723a3a32000000000000000000000000000000008152506111b2565b6109d7816001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109939190611876565b61ffff168661ffff166040518060400160405280601081526020017f7465737446757a7a5f506169723a3a33000000000000000000000000000000008152506111ed565b50505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106445760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ac357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a705790505b50505050508152505081526020019060010190610a04565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610644578382906000526020600020018054610b1e90611818565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90611818565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b505050505081526020019060010190610aff565b6040805161ffc980825262010000820190925260009160208201818036833701905050604051630618f58760e51b815263c8c7813960e01b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b50505050610c4b6001826000801b611091565b5050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106445760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610d3257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610cdf5790505b50505050508152505081526020019060010190610c73565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610644578382906000526020600020018054610d8d90611818565b80601f0160208091040260200160405190810160405280929190818152602001828054610db990611818565b8015610e065780601f10610ddb57610100808354040283529160200191610e06565b820191906000526020600020905b815481529060010190602001808311610de957829003601f168201915b505050505081526020019060010190610d6e565b60075460009060ff1615610e32575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ece9190611893565b1415905090565b6000610ef260016040518060200160405280600081525084611091565b9050610f4f81610f146001604051806020016040528060008152508630611228565b6040518060400160405280601e81526020017f7465737446757a7a5f436c6f6e6544657465726d696e69737469633a3a3100008152506111b2565b604051630618f58760e51b8152633011642560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505060405163101067bb60e21b8152600160048201526060602482015260006064820152604481018590523092506340419eec91506084016020604051808303816000875af115801561100d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031d9190611852565b6060601380548060200260200160405190810160405280929190818152602001828054801561037a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161035c575050505050905090565b600060408303516020840351845180602087010180516002830161ffca8111156110c35763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f5965050856111325763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60405162e24fed60e81b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e24fed0090611186908690869086906004016118ac565b60006040518083038186803b15801561119e57600080fd5b505afa1580156109d7573d6000803e3d6000fd5b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d190611186908690869086906004016118e5565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859061118690869086908690600401611911565b600080611235868661124c565b90506112428185856112f5565b9695505050505050565b600060408203516020830351835180602086010180516002830161ffca81111561127e5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf38852600c198801989098526035880160d81b604889901b177d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d731760201988015260f088901b8252603f909701601e198701209690528452601f19840152603f19909201919091525090565b600060355160ff600053603594855260609290921b600152506015919091526055600020915290565b6101498061193183390190565b61011880611a7a83390190565b6020808252825182820181905260009190848201906040850190845b818110156113795783516001600160a01b031683529284019291840191600101611354565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156113c4576113c4611385565b604052919050565b600067ffffffffffffffff8211156113e6576113e6611385565b50601f01601f191660200190565b600082601f83011261140557600080fd5b8135611418611413826113cc565b61139b565b81815284602083860101111561142d57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561145c57600080fd5b813567ffffffffffffffff81111561147357600080fd5b61071a848285016113f4565b60005b8381101561149a578181015183820152602001611482565b50506000910152565b600081518084526114bb81602086016020860161147f565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561157f57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561156957605f198985030183526115578486516114a3565b948e01949350918d019160010161153b565b505050978a0197945050918801916001016114f6565b50919a9950505050505050505050565b6001600160a01b03811681146115a457600080fd5b50565b6000806000606084860312156115bc57600080fd5b83356115c78161158f565b9250602084013567ffffffffffffffff8111156115e357600080fd5b6115ef868287016113f4565b925050604084013590509250925092565b61ffff811681146115a457600080fd5b60008060006060848603121561162557600080fd5b83356116308161158f565b925060208401356116408161158f565b9150604084013561165081611600565b809150509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561171757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156117025783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906116c0565b50978a01979550505091870191600101611683565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561177b57603f198886030184526117698583516114a3565b9450928501929085019060010161174d565b5092979650505050505050565b60006020828403121561179a57600080fd5b5035919050565b6000602082840312156117b357600080fd5b815167ffffffffffffffff8111156117ca57600080fd5b8201601f810184136117db57600080fd5b80516117e9611413826113cc565b8181528560208385010111156117fe57600080fd5b61180f82602083016020860161147f565b95945050505050565b600181811c9082168061182c57607f821691505b60208210810361184c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561186457600080fd5b815161186f8161158f565b9392505050565b60006020828403121561188857600080fd5b815161186f81611600565b6000602082840312156118a557600080fd5b5051919050565b6060815260006118bf60608301866114a3565b82810360208401526118d181866114a3565b9050828103604084015261124281856114a3565b60006001600160a01b0380861683528085166020840152506060604083015261180f60608301846114a3565b83815282602082015260606040820152600061180f60608301846114a356fe608060405234801561001057600080fd5b50610129806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806357bc2ef314602d575b600080fd5b603c6038366004608f565b6050565b6040516047919060a7565b60405180910390f35b6060605b6000836061565b92915050565b6040518181523660011981013560f01c900382848201602084013750908101603f01601f1916604052919050565b60006020828403121560a057600080fd5b5035919050565b600060208083528351808285015260005b8181101560d25785810183015185820160400152820160b8565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122013c0c36a13cf5c336df1bb7f9fe4988b200a3db710861ad8c4e13a1e9ff486a164736f6c63430008140033608060405234801561001057600080fd5b5060f98061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806305e8746d14604157806317f11ecc14607c578063da10610c1460ac575b600080fd5b3660011981013560f01c90033560601c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b609a60003660011981013560f090811c90910360280135901c905090565b60405161ffff90911681526020016073565b3660011981013560f01c90036014013560601c605256fea2646970667358221220a0d32e30fe43b568be867c0d61bd403114d8e5a3ea863589a58aa18f0f1b6df864736f6c63430008140033746573745f436c6f6e6544657465726d696e69737469634d61784c656e6774683a3a31a26469706673582212209636c7a870200b24588c2bef9f436a44aed39605f92f040890d347a9cadb261164736f6c63430008140033","sourceMap":"179:2601:106:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;179:2601:106;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101005760003560e01c806366d9a9a011610097578063b5508aa911610066578063b5508aa9146101dd578063ba414fa6146101e5578063de6cd29c146101fd578063e20c9f711461021057600080fd5b806366d9a9a0146101a357806385226c81146101b85780638ce1c008146101cd578063916a17c6146101d557600080fd5b80633e5e3c23116100d35780633e5e3c23146101555780633f7286f41461015d57806340419eec146101655780634d9d9b681461019057600080fd5b8063159f49bd146101055780631ed7831c1461010f5780632811eeb31461012d5780632ade388014610140575b600080fd5b61010d610218565b005b610117610322565b6040516101249190611338565b60405180910390f35b61010d61013b36600461144a565b610384565b61014861050b565b60405161012491906114cf565b61011761064d565b6101176106ad565b6101786101733660046115a7565b61070d565b6040516001600160a01b039091168152602001610124565b61010d61019e366004611610565b610722565b6101ab6109e0565b604051610124919061165b565b6101c0610adb565b6040516101249190611726565b61010d610bab565b6101ab610c4f565b6101c0610d4a565b6101ed610e1a565b6040519015158152602001610124565b61010d61020b366004611788565b610ed5565b610117611031565b6040805161ffc880825262010000820190925260009160208201818036833701905050905060ff602082015360ca815182015360006040516102599061131e565b604051809103906000f080158015610275573d6000803e3d6000fd5b5090506000610285828483611091565b905061031d816001600160a01b03166357bc2ef385516040518263ffffffff1660e01b81526004016102b991815260200190565b600060405180830381865afa1580156102d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102fe91908101906117a1565b84604051806060016040528060238152602001611b926023913961114c565b505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561037a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161035c575b5050505050905090565b8051604051632631f2b160e11b815261ffca91909110156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156103d757600080fd5b505afa1580156103eb573d6000803e3d6000fd5b5050505060006040516103fd9061131e565b604051809103906000f080158015610419573d6000803e3d6000fd5b5090507fa05e334153147e75f3f416139b5109d1179cb56fef6a4ecb4c4cbc92a7c37b70600061044a838584611091565b84516040516357bc2ef360e01b81529192508291610504916001600160a01b038416916357bc2ef3916104839160040190815260200190565b600060405180830381865afa1580156104a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104c891908101906117a1565b866040518060400160405280601a81526020017f7465737446757a7a5f496d706c656d656e746174696f6e3a3a3100000000000081525061114c565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561064457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561062d5783829060005260206000200180546105a090611818565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc90611818565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b505050505081526020019060010190610581565b50505050815250508152602001906001019061052f565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561037a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161035c575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561037a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161035c575050505050905090565b600061071a848484611091565b949350505050565b60006040516107309061132b565b604051809103906000f08015801561074c573d6000803e3d6000fd5b506040516bffffffffffffffffffffffff19606087811b8216602084015286901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f085901b1660488201529091507fa05e334153147e75f3f416139b5109d1179cb56fef6a4ecb4c4cbc92a7c37b70906000906107e5908490604a0160405160208183030381529060405284611091565b9050600081905061088d816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611852565b886040518060400160405280601081526020017f7465737446757a7a5f506169723a3a31000000000000000000000000000000008152506111b2565b61092e816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f29190611852565b876040518060400160405280601081526020017f7465737446757a7a5f506169723a3a32000000000000000000000000000000008152506111b2565b6109d7816001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109939190611876565b61ffff168661ffff166040518060400160405280601081526020017f7465737446757a7a5f506169723a3a33000000000000000000000000000000008152506111ed565b50505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106445760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ac357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a705790505b50505050508152505081526020019060010190610a04565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610644578382906000526020600020018054610b1e90611818565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90611818565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b505050505081526020019060010190610aff565b6040805161ffc980825262010000820190925260009160208201818036833701905050604051630618f58760e51b815263c8c7813960e01b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610c2457600080fd5b505af1158015610c38573d6000803e3d6000fd5b50505050610c4b6001826000801b611091565b5050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106445760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610d3257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610cdf5790505b50505050508152505081526020019060010190610c73565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610644578382906000526020600020018054610d8d90611818565b80601f0160208091040260200160405190810160405280929190818152602001828054610db990611818565b8015610e065780601f10610ddb57610100808354040283529160200191610e06565b820191906000526020600020905b815481529060010190602001808311610de957829003601f168201915b505050505081526020019060010190610d6e565b60075460009060ff1615610e32575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ece9190611893565b1415905090565b6000610ef260016040518060200160405280600081525084611091565b9050610f4f81610f146001604051806020016040528060008152508630611228565b6040518060400160405280601e81526020017f7465737446757a7a5f436c6f6e6544657465726d696e69737469633a3a3100008152506111b2565b604051630618f58760e51b8152633011642560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505060405163101067bb60e21b8152600160048201526060602482015260006064820152604481018590523092506340419eec91506084016020604051808303816000875af115801561100d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031d9190611852565b6060601380548060200260200160405190810160405280929190818152602001828054801561037a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161035c575050505050905090565b600060408303516020840351845180602087010180516002830161ffca8111156110c35763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f5965050856111325763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60405162e24fed60e81b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e24fed0090611186908690869086906004016118ac565b60006040518083038186803b15801561119e57600080fd5b505afa1580156109d7573d6000803e3d6000fd5b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d190611186908690869086906004016118e5565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859061118690869086908690600401611911565b600080611235868661124c565b90506112428185856112f5565b9695505050505050565b600060408203516020830351835180602086010180516002830161ffca81111561127e5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf38852600c198801989098526035880160d81b604889901b177d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d731760201988015260f088901b8252603f909701601e198701209690528452601f19840152603f19909201919091525090565b600060355160ff600053603594855260609290921b600152506015919091526055600020915290565b6101498061193183390190565b61011880611a7a83390190565b6020808252825182820181905260009190848201906040850190845b818110156113795783516001600160a01b031683529284019291840191600101611354565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156113c4576113c4611385565b604052919050565b600067ffffffffffffffff8211156113e6576113e6611385565b50601f01601f191660200190565b600082601f83011261140557600080fd5b8135611418611413826113cc565b61139b565b81815284602083860101111561142d57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561145c57600080fd5b813567ffffffffffffffff81111561147357600080fd5b61071a848285016113f4565b60005b8381101561149a578181015183820152602001611482565b50506000910152565b600081518084526114bb81602086016020860161147f565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561157f57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561156957605f198985030183526115578486516114a3565b948e01949350918d019160010161153b565b505050978a0197945050918801916001016114f6565b50919a9950505050505050505050565b6001600160a01b03811681146115a457600080fd5b50565b6000806000606084860312156115bc57600080fd5b83356115c78161158f565b9250602084013567ffffffffffffffff8111156115e357600080fd5b6115ef868287016113f4565b925050604084013590509250925092565b61ffff811681146115a457600080fd5b60008060006060848603121561162557600080fd5b83356116308161158f565b925060208401356116408161158f565b9150604084013561165081611600565b809150509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561171757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156117025783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906116c0565b50978a01979550505091870191600101611683565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561177b57603f198886030184526117698583516114a3565b9450928501929085019060010161174d565b5092979650505050505050565b60006020828403121561179a57600080fd5b5035919050565b6000602082840312156117b357600080fd5b815167ffffffffffffffff8111156117ca57600080fd5b8201601f810184136117db57600080fd5b80516117e9611413826113cc565b8181528560208385010111156117fe57600080fd5b61180f82602083016020860161147f565b95945050505050565b600181811c9082168061182c57607f821691505b60208210810361184c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561186457600080fd5b815161186f8161158f565b9392505050565b60006020828403121561188857600080fd5b815161186f81611600565b6000602082840312156118a557600080fd5b5051919050565b6060815260006118bf60608301866114a3565b82810360208401526118d181866114a3565b9050828103604084015261124281856114a3565b60006001600160a01b0380861683528085166020840152506060604083015261180f60608301846114a3565b83815282602082015260606040820152600061180f60608301846114a356fe608060405234801561001057600080fd5b50610129806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806357bc2ef314602d575b600080fd5b603c6038366004608f565b6050565b6040516047919060a7565b60405180910390f35b6060605b6000836061565b92915050565b6040518181523660011981013560f01c900382848201602084013750908101603f01601f1916604052919050565b60006020828403121560a057600080fd5b5035919050565b600060208083528351808285015260005b8181101560d25785810183015185820160400152820160b8565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122013c0c36a13cf5c336df1bb7f9fe4988b200a3db710861ad8c4e13a1e9ff486a164736f6c63430008140033608060405234801561001057600080fd5b5060f98061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806305e8746d14604157806317f11ecc14607c578063da10610c1460ac575b600080fd5b3660011981013560f01c90033560601c5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b609a60003660011981013560f090811c90910360280135901c905090565b60405161ffff90911681526020016073565b3660011981013560f01c90036014013560601c605256fea2646970667358221220a0d32e30fe43b568be867c0d61bd403114d8e5a3ea863589a58aa18f0f1b6df864736f6c63430008140033746573745f436c6f6e6544657465726d696e69737469634d61784c656e6774683a3a31a26469706673582212209636c7a870200b24588c2bef9f436a44aed39605f92f040890d347a9cadb261164736f6c63430008140033","sourceMap":"179:2601:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2058:474;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1011:479:106;;;;;;:::i;:::-;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;221:195:106:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;5247:55:127;;;5229:74;;5217:2;5202:18;221:195:106;5083:226:127;1496:556:106;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;2538:240:106:-;;;:::i;3069:146:5:-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;8536:14:127;;8529:22;8511:41;;8499:2;8484:18;1243:204:1;8371:187:127;422:583:106;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;2058:474:106:-;2136:17;;;2146:6;2136:17;;;;;;;;;2119:14;;2136:17;;;;;;;;;;-1:-1:-1;2136:17:106;2119:34;;2209:4;2202;2199:1;2195:12;2187:27;2253:4;2248:1;2242:8;2239:1;2235:16;2227:31;2278:22;2311:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2278:54:106;-1:-1:-1;2342:13:106;2358:64;2278:54;2408:1;2342:13;2358:33;:64::i;:::-;2342:80;;2433:92;2457:5;-1:-1:-1;;;;;2442:30:106;;2473:1;:8;2442:40;;;;;;;;;;;;;8894:25:127;;8882:2;8867:18;;8748:177;2442:40:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2442:40:106;;;;;;;;;;;;:::i;:::-;2484:1;2433:92;;;;;;;;;;;;;;;;;:8;:92::i;:::-;2109:423;;;2058:474::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;1011:479:106:-;1090:11;;1080:32;;-1:-1:-1;;;1080:32:106;;1105:6;-1:-1:-1;;;;1090:21:106;1080:32;;;8511:41:127;1080:9:106;;;;8484:18:127;;1080:32:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1123:22;1156:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:54:106;-1:-1:-1;1202:17:106;1187:12;1254:61;1123:54;1304:4;1202:17;1254:33;:61::i;:::-;1434:11;;1405:41;;-1:-1:-1;;;1405:41:106;;1230:86;;-1:-1:-1;1230:86:106;;1396:87;;-1:-1:-1;;;;;1405:28:106;;;;;:41;;;;8894:25:127;;;8882:2;8867:18;;8748:177;1405:41:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1405:41:106;;;;;;;;;;;;:::i;:::-;1448:4;1396:87;;;;;;;;;;;;;;;;;:8;:87::i;:::-;1070:420;;;;1011:479;:::o;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;221:195:106:-;322:7;348:61;382:14;398:4;404;348:33;:61::i;:::-;341:68;221:195;-1:-1:-1;;;;221:195:106:o;1496:556::-;1584:22;1617:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1767:41:106;;-1:-1:-1;;10220:2:127;10216:15;;;10212:24;;1767:41:106;;;10200:37:127;10271:15;;;10267:24;10253:12;;;10246:46;10344:15;10348:3;10326:16;;;10322:38;10308:12;;;10301:60;1584:44:106;;-1:-1:-1;1653:17:106;;1638:12;;1717:98;;1584:44;;10377:12:127;;1767:41:106;;;;;;;;;;;;1810:4;1717:33;:98::i;:::-;1681:135;;1827:9;1844:5;1827:23;;1861:54;1870:4;-1:-1:-1;;;;;1870:14:106;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1888:6;1861:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;1925;1934:4;-1:-1:-1;;;;;1934:14:106;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1952:6;1925:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;1989:56;1998:4;-1:-1:-1;;;;;1998:15:106;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1989:56;;2017:7;1989:56;;;;;;;;;;;;;;;;;;;:8;:56::i;:::-;1574:478;;;;1496:556;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:240:106;2613:21;;;2623:10;2613:21;;;;;;;;;2596:14;;2613:21;;;;;;;;;;-1:-1:-1;;2644:57:106;;-1:-1:-1;;;2644:57:106;;-1:-1:-1;;;2644:57:106;;;11054:52:127;2596:38:106;;-1:-1:-1;2644:15:106;;;;11027:18:127;;2644:57:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2711:60;2753:1;2757;2768;2760:10;;2711:33;:60::i;:::-;;2586:192;2538:240::o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;11291:74:127;;;1398:17:1;11381:18:127;;;11374:34;1428:1:1;;1377:7;;11264:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;422:583:106:-;490:13;514:55;556:1;514:55;;;;;;;;;;;;564:4;514:33;:55::i;:::-;490:80;;581:176;603:5;622:79;673:1;622:79;;;;;;;;;;;;681:4;695;622:42;:79::i;:::-;581:176;;;;;;;;;;;;;;;;;:8;:176::i;:::-;886:57;;-1:-1:-1;;;886:57:106;;-1:-1:-1;;;886:57:106;;;11054:52:127;886:15:106;;;;11027:18:127;;886:57:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;953:45:106;;-1:-1:-1;;;953:45:106;;985:1;953:45;;;11847:74:127;11957:2;11937:18;;;11930:30;-1:-1:-1;11976:18:127;;;11969:29;12050:18;;;12043:34;;;953:4:106;;-1:-1:-1;953:23:106;;-1:-1:-1;12015:19:127;;953:45:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1290:9525:68:-;1409:16;1584:4;1578;1574:15;1568:22;1635:4;1629;1625:15;1619:22;1678:4;1672:11;1732:10;1725:4;1719;1715:15;1711:32;1777:7;1771:14;1915:1;1903:10;1899:18;2177:6;2164:11;2161:23;2158:237;;;2288:10;2282:4;2275:24;2376:4;2370;2363:18;2158:237;9697:28;9691:4;9684:42;9819:14;9812:4;9806;9802:15;9795:39;10010:62;9996:11;9990:4;9986:22;9983:90;9955:4;9942:11;9938:22;9932:4;9928:33;9904:187;9881:4;9875;9871:15;9847:258;10144:11;10138:4;10134:22;10125:7;10118:39;10271:4;10264;10251:11;10247:22;10240:4;10234;10230:15;10227:1;10219:57;10207:69;;;10346:8;10336:230;;10459:10;10453:4;10446:24;10547:4;10541;10534:18;10336:230;10646:24;;10683;;-1:-1:-1;;10727:15:68;;10720:33;-1:-1:-1;;10773:15:68;;;10766:33;;;;-1:-1:-1;1290:9525:68;;-1:-1:-1;1290:9525:68:o;4626:144:1:-;4734:29;;-1:-1:-1;;;4734:29:1;;:11;;;;:29;;4746:4;;4752:5;;4759:3;;4734:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3570:134;3668:29;;-1:-1:-1;;;3668:29:1;;:11;;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;2386:134::-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;13635:319:68:-;13794:17;13827:12;13842:34;13855:14;13871:4;13842:12;:34::i;:::-;13827:49;;13898;13926:4;13932;13938:8;13898:27;:49::i;:::-;13886:61;13635:319;-1:-1:-1;;;;;;13635:319:68:o;11206:1961::-;11294:12;11461:4;11455;11451:15;11445:22;11512:4;11506;11502:15;11496:22;11555:4;11549:11;11609:10;11602:4;11596;11592:15;11588:32;11654:7;11648:14;11792:1;11780:10;11776:18;12054:6;12041:11;12038:23;12035:237;;;12165:10;12159:4;12152:24;12253:4;12247;12240:18;12035:237;12350:28;12337:42;;-1:-1:-1;;12455:15:68;;12448:39;;;;12608:4;12591:22;;12585:4;12581:33;12643:4;12639:22;;;12557:187;12663:62;12557:187;-1:-1:-1;;12524:15:68;;12500:258;12791:4;12787:22;;;12771:39;;12912:4;12895:22;;;-1:-1:-1;;12878:15:68;;12868:50;12998:24;;;13035;;-1:-1:-1;;13079:15:68;;13072:33;-1:-1:-1;;13125:15:68;;;13118:33;;;;-1:-1:-1;12868:50:68;11206:1961::o;14316:739::-;14446:17;14654:4;14648:11;14739:4;14733;14725:19;14785:4;14778:18;;;14826:2;14822:17;;;;14816:4;14809:31;-1:-1:-1;14860:4:68;14853:18;;;;14913:4;14907;14897:21;15018;;14897;14316:739::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:127::-;761:10;756:3;752:20;749:1;742:31;792:4;789:1;782:15;816:4;813:1;806:15;832:275;903:2;897:9;968:2;949:13;;-1:-1:-1;;945:27:127;933:40;;1003:18;988:34;;1024:22;;;985:62;982:88;;;1050:18;;:::i;:::-;1086:2;1079:22;832:275;;-1:-1:-1;832:275:127:o;1112:186::-;1160:4;1193:18;1185:6;1182:30;1179:56;;;1215:18;;:::i;:::-;-1:-1:-1;1281:2:127;1260:15;-1:-1:-1;;1256:29:127;1287:4;1252:40;;1112:186::o;1303:462::-;1345:5;1398:3;1391:4;1383:6;1379:17;1375:27;1365:55;;1416:1;1413;1406:12;1365:55;1452:6;1439:20;1483:48;1499:31;1527:2;1499:31;:::i;:::-;1483:48;:::i;:::-;1556:2;1547:7;1540:19;1602:3;1595:4;1590:2;1582:6;1578:15;1574:26;1571:35;1568:55;;;1619:1;1616;1609:12;1568:55;1684:2;1677:4;1669:6;1665:17;1658:4;1649:7;1645:18;1632:55;1732:1;1707:16;;;1725:4;1703:27;1696:38;;;;1711:7;1303:462;-1:-1:-1;;;1303:462:127:o;1770:320::-;1838:6;1891:2;1879:9;1870:7;1866:23;1862:32;1859:52;;;1907:1;1904;1897:12;1859:52;1947:9;1934:23;1980:18;1972:6;1969:30;1966:50;;;2012:1;2009;2002:12;1966:50;2035:49;2076:7;2067:6;2056:9;2052:22;2035:49;:::i;2095:250::-;2180:1;2190:113;2204:6;2201:1;2198:13;2190:113;;;2280:11;;;2274:18;2261:11;;;2254:39;2226:2;2219:10;2190:113;;;-1:-1:-1;;2337:1:127;2319:16;;2312:27;2095:250::o;2350:271::-;2392:3;2430:5;2424:12;2457:6;2452:3;2445:19;2473:76;2542:6;2535:4;2530:3;2526:14;2519:4;2512:5;2508:16;2473:76;:::i;:::-;2603:2;2582:15;-1:-1:-1;;2578:29:127;2569:39;;;;2610:4;2565:50;;2350:271;-1:-1:-1;;2350:271:127:o;2626:1765::-;2859:2;2911:21;;;2981:13;;2884:18;;;3003:22;;;2830:4;;2859:2;3044;;3062:18;;;;3099:1;3142:15;;;3127:31;;3123:40;;3186:15;;;2830:4;;3250:1112;3266:6;3261:3;3258:15;3250:1112;;;-1:-1:-1;;3335:22:127;;;3331:36;3319:49;;3391:13;;3478:9;;-1:-1:-1;;;;;3474:58:127;3459:74;;3572:11;;3566:18;3604:15;;;3597:27;;;3685:19;;3431:15;;;3717:24;;;3898:21;;;;3764:2;3846:17;;;3834:30;;3830:39;;;3788:15;;;;3943:1;3957:296;3973:8;3968:3;3965:17;3957:296;;;4079:2;4075:7;4066:6;4058;4054:19;4050:33;4043:5;4036:48;4111:42;4146:6;4135:8;4129:15;4111:42;:::i;:::-;4182:17;;;;4101:52;-1:-1:-1;4225:14:127;;;;4001:1;3992:11;3957:296;;;-1:-1:-1;;;4340:12:127;;;;4276:6;-1:-1:-1;;4305:15:127;;;;3292:1;3283:11;3250:1112;;;-1:-1:-1;4379:6:127;;2626:1765;-1:-1:-1;;;;;;;;;;2626:1765:127:o;4396:154::-;-1:-1:-1;;;;;4475:5:127;4471:54;4464:5;4461:65;4451:93;;4540:1;4537;4530:12;4451:93;4396:154;:::o;4555:523::-;4641:6;4649;4657;4710:2;4698:9;4689:7;4685:23;4681:32;4678:52;;;4726:1;4723;4716:12;4678:52;4765:9;4752:23;4784:31;4809:5;4784:31;:::i;:::-;4834:5;-1:-1:-1;4890:2:127;4875:18;;4862:32;4917:18;4906:30;;4903:50;;;4949:1;4946;4939:12;4903:50;4972:49;5013:7;5004:6;4993:9;4989:22;4972:49;:::i;:::-;4962:59;;;5068:2;5057:9;5053:18;5040:32;5030:42;;4555:523;;;;;:::o;5314:117::-;5399:6;5392:5;5388:18;5381:5;5378:29;5368:57;;5421:1;5418;5411:12;5436:527;5512:6;5520;5528;5581:2;5569:9;5560:7;5556:23;5552:32;5549:52;;;5597:1;5594;5587:12;5549:52;5636:9;5623:23;5655:31;5680:5;5655:31;:::i;:::-;5705:5;-1:-1:-1;5762:2:127;5747:18;;5734:32;5775:33;5734:32;5775:33;:::i;:::-;5827:7;-1:-1:-1;5886:2:127;5871:18;;5858:32;5899;5858;5899;:::i;:::-;5950:7;5940:17;;;5436:527;;;;;:::o;5968:1590::-;6170:4;6199:2;6239;6228:9;6224:18;6269:2;6258:9;6251:21;6292:6;6327;6321:13;6358:6;6350;6343:22;6384:2;6374:12;;6417:2;6406:9;6402:18;6395:25;;6479:2;6469:6;6466:1;6462:14;6451:9;6447:30;6443:39;6517:2;6509:6;6505:15;6538:1;6559;6569:960;6585:6;6580:3;6577:15;6569:960;;;6654:22;;;-1:-1:-1;;6650:36:127;6638:49;;6710:13;;6797:9;;-1:-1:-1;;;;;6793:58:127;6778:74;;6891:11;;6885:18;6923:15;;;6916:27;;;7004:19;;6750:15;;;7036:24;;;7126:21;;;;7171:1;;7094:2;7082:15;;;7185:236;7201:8;7196:3;7193:17;7185:236;;;7282:15;;7299:20;7278:42;7264:57;;7390:17;;;;7229:1;7220:11;;;;;7347:14;;;;7185:236;;;-1:-1:-1;7507:12:127;;;;7444:5;-1:-1:-1;;;7472:15:127;;;;6611:1;6602:11;6569:960;;;-1:-1:-1;7546:6:127;;5968:1590;-1:-1:-1;;;;;;;;;5968:1590:127:o;7563:803::-;7725:4;7754:2;7794;7783:9;7779:18;7824:2;7813:9;7806:21;7847:6;7882;7876:13;7913:6;7905;7898:22;7951:2;7940:9;7936:18;7929:25;;8013:2;8003:6;8000:1;7996:14;7985:9;7981:30;7977:39;7963:53;;8051:2;8043:6;8039:15;8072:1;8082:255;8096:6;8093:1;8090:13;8082:255;;;8189:2;8185:7;8173:9;8165:6;8161:22;8157:36;8152:3;8145:49;8217:40;8250:6;8241;8235:13;8217:40;:::i;:::-;8207:50;-1:-1:-1;8315:12:127;;;;8280:15;;;;8118:1;8111:9;8082:255;;;-1:-1:-1;8354:6:127;;7563:803;-1:-1:-1;;;;;;;7563:803:127:o;8563:180::-;8622:6;8675:2;8663:9;8654:7;8650:23;8646:32;8643:52;;;8691:1;8688;8681:12;8643:52;-1:-1:-1;8714:23:127;;8563:180;-1:-1:-1;8563:180:127:o;8930:647::-;9009:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:52;;;9078:1;9075;9068:12;9030:52;9111:9;9105:16;9144:18;9136:6;9133:30;9130:50;;;9176:1;9173;9166:12;9130:50;9199:22;;9252:4;9244:13;;9240:27;-1:-1:-1;9230:55:127;;9281:1;9278;9271:12;9230:55;9310:2;9304:9;9335:48;9351:31;9379:2;9351:31;:::i;9335:48::-;9406:2;9399:5;9392:17;9446:7;9441:2;9436;9432;9428:11;9424:20;9421:33;9418:53;;;9467:1;9464;9457:12;9418:53;9480:67;9544:2;9539;9532:5;9528:14;9523:2;9519;9515:11;9480:67;:::i;:::-;9566:5;8930:647;-1:-1:-1;;;;;8930:647:127:o;9582:380::-;9661:1;9657:12;;;;9704;;;9725:61;;9779:4;9771:6;9767:17;9757:27;;9725:61;9832:2;9824:6;9821:14;9801:18;9798:38;9795:161;;9878:10;9873:3;9869:20;9866:1;9859:31;9913:4;9910:1;9903:15;9941:4;9938:1;9931:15;9795:161;;9582:380;;;:::o;10400:251::-;10470:6;10523:2;10511:9;10502:7;10498:23;10494:32;10491:52;;;10539:1;10536;10529:12;10491:52;10571:9;10565:16;10590:31;10615:5;10590:31;:::i;:::-;10640:5;10400:251;-1:-1:-1;;;10400:251:127:o;10656:249::-;10725:6;10778:2;10766:9;10757:7;10753:23;10749:32;10746:52;;;10794:1;10791;10784:12;10746:52;10826:9;10820:16;10845:30;10869:5;10845:30;:::i;11419:184::-;11489:6;11542:2;11530:9;11521:7;11517:23;11513:32;11510:52;;;11558:1;11555;11548:12;11510:52;-1:-1:-1;11581:16:127;;11419:184;-1:-1:-1;11419:184:127:o;12088:542::-;12329:2;12318:9;12311:21;12292:4;12355:45;12396:2;12385:9;12381:18;12373:6;12355:45;:::i;:::-;12448:9;12440:6;12436:22;12431:2;12420:9;12416:18;12409:50;12482:33;12508:6;12500;12482:33;:::i;:::-;12468:47;;12563:9;12555:6;12551:22;12546:2;12535:9;12531:18;12524:50;12591:33;12617:6;12609;12591:33;:::i;12635:441::-;12803:4;-1:-1:-1;;;;;12913:2:127;12905:6;12901:15;12890:9;12883:34;12965:2;12957:6;12953:15;12948:2;12937:9;12933:18;12926:43;;13005:2;13000;12989:9;12985:18;12978:30;13025:45;13066:2;13055:9;13051:18;13043:6;13025:45;:::i;13081:362::-;13286:6;13275:9;13268:25;13329:6;13324:2;13313:9;13309:18;13302:34;13372:2;13367;13356:9;13352:18;13345:30;13249:4;13392:45;13433:2;13422:9;13418:18;13410:6;13392:45;:::i","linkReferences":{}},"methodIdentifiers":{"cloneDeterministic(address,bytes,bytes32)":"40419eec","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_CloneDeterministic(bytes32)":"de6cd29c","testFuzz_Implementation(bytes)":"2811eeb3","testFuzz_Pair(address,address,uint16)":"4d9d9b68","test_CloneDeterministicMaxLength()":"159f49bd","test_CloneDeterministicTooBig()":"8ce1c008"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"cloneDeterministic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_CloneDeterministic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"testFuzz_Implementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"testFuzz_Pair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CloneDeterministicMaxLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CloneDeterministicTooBig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/ImmutableClone.t.sol\":\"TestImmutableClone\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"test/libraries/ImmutableClone.t.sol\":{\"keccak256\":\"0xa7397e03ff3585d1a9a7e4857e5e6fe42bc1fc53e9c969d7cbd9144393f567ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d752ca19223f43f24e2c787b2aedf24590646f0f49fee8cf5d9981eea9dda539\",\"dweb:/ipfs/QmP9x3iShQvY7GBEkfiY3HNMMPKGEcU5J5pyBTqKmR9eTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cloneDeterministic","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_CloneDeterministic"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_Implementation"},{"inputs":[{"internalType":"address","name":"tokenX","type":"address"},{"internalType":"address","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_Pair"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CloneDeterministicMaxLength"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CloneDeterministicTooBig"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/ImmutableClone.t.sol":"TestImmutableClone"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"test/libraries/ImmutableClone.t.sol":{"keccak256":"0xa7397e03ff3585d1a9a7e4857e5e6fe42bc1fc53e9c969d7cbd9144393f567ae","urls":["bzz-raw://d752ca19223f43f24e2c787b2aedf24590646f0f49fee8cf5d9981eea9dda539","dweb:/ipfs/QmP9x3iShQvY7GBEkfiY3HNMMPKGEcU5J5pyBTqKmR9eTC"],"license":"MIT"}},"version":1},"id":106} \ No newline at end of file diff --git a/abi/Initializable.sol/Initializable.json b/abi/Initializable.sol/Initializable.json deleted file mode 100644 index a99ece07..00000000 --- a/abi/Initializable.sol/Initializable.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":"Initializable"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/abi/JoeLibrary.sol/JoeLibrary.json b/abi/JoeLibrary.sol/JoeLibrary.json deleted file mode 100644 index 20cd8a8b..00000000 --- a/abi/JoeLibrary.sol/JoeLibrary.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"Sovryn LBLibrary__AddressZero","inputs":[]},{"type":"error","name":"Sovryn LBLibrary__IdenticalAddresses","inputs":[]},{"type":"error","name":"Sovryn LBLibrary__InsufficientAmount","inputs":[]},{"type":"error","name":"Sovryn LBLibrary__InsufficientLiquidity","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d48d10d17c9ec82a5ec8e8db000d7524ab8a4ec6c5de92f56187142e970234564736f6c63430008140033","sourceMap":"209:2320:72:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;209:2320:72;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d48d10d17c9ec82a5ec8e8db000d7524ab8a4ec6c5de92f56187142e970234564736f6c63430008140033","sourceMap":"209:2320:72:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Sovryn LBLibrary__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Sovryn LBLibrary__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Sovryn LBLibrary__InsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Sovryn LBLibrary__InsufficientLiquidity\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Sovryn LB Library Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for Sovryn LB V1 related calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Sovryn LBLibrary.sol\":\"Sovryn LBLibrary\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Sovryn LBLibrary.sol\":{\"keccak256\":\"0x8d5f41e6a440f97475138cff9a22eef7cfe24dc489c4dcd28d64206eba50c243\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c7e3a7450f460794f5ccfb4b1b8c6a9ad13c20b2ce3a62ba2acb2a17e1021131\",\"dweb:/ipfs/QmbaerUuNUgT1DYy1vm7eFCk6JpCy6dkpfpAcYZsNNH3Lm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Sovryn LBLibrary__AddressZero"},{"inputs":[],"type":"error","name":"Sovryn LBLibrary__IdenticalAddresses"},{"inputs":[],"type":"error","name":"Sovryn LBLibrary__InsufficientAmount"},{"inputs":[],"type":"error","name":"Sovryn LBLibrary__InsufficientLiquidity"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/Sovryn LBLibrary.sol":"Sovryn LBLibrary"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Sovryn LBLibrary.sol":{"keccak256":"0x8d5f41e6a440f97475138cff9a22eef7cfe24dc489c4dcd28d64206eba50c243","urls":["bzz-raw://c7e3a7450f460794f5ccfb4b1b8c6a9ad13c20b2ce3a62ba2acb2a17e1021131","dweb:/ipfs/QmbaerUuNUgT1DYy1vm7eFCk6JpCy6dkpfpAcYZsNNH3Lm"],"license":"GPL-3.0"}},"version":1},"id":72} \ No newline at end of file diff --git a/abi/LBBaseHooks.sol/LBBaseHooks.json b/abi/LBBaseHooks.sol/LBBaseHooks.json deleted file mode 100644 index 431aeefe..00000000 --- a/abi/LBBaseHooks.sol/LBBaseHooks.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"afterBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"fees","type":"bytes32","internalType":"bytes32"},{"name":"feesReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsOut","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amounts","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLBPair","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ILBPair"}],"stateMutability":"view"},{"type":"function","name":"isLinked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"onHooksSet","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"error","name":"LBBaseHooks__InvalidCaller","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"LBBaseHooks__NotLinked","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":"67ddb278","afterBurn(address,address,address,uint256[],uint256[])":"fdc27257","afterFlashLoan(address,address,bytes32,bytes32)":"60bed5f3","afterMint(address,address,bytes32[],bytes32)":"7a51a4c6","afterSwap(address,address,bool,bytes32)":"53e8079b","beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":"79c8ccf7","beforeBurn(address,address,address,uint256[],uint256[])":"ea9db9d3","beforeFlashLoan(address,address,bytes32)":"505d9033","beforeMint(address,address,bytes32[],bytes32)":"0d4abdb3","beforeSwap(address,address,bool,bytes32)":"feee3735","getLBPair()":"5f9c01b1","isLinked()":"09fa1f90","onHooksSet(bytes32,bytes)":"4e430b5a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"LBBaseHooks__InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBBaseHooks__NotLinked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"afterBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"fees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feesReceived\",\"type\":\"bytes32\"}],\"name\":\"afterFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"afterMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"beforeBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"beforeFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"beforeMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLinked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"onHooksSet\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"afterBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"from\":\"The address that transferred the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the transfer\",\"to\":\"The address that received the tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterBurn(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsToBurn\":\"The amounts to burn\",\"from\":\"The address that burned the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the burn\",\"to\":\"The address that received the burned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterFlashLoan(address,address,bytes32,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"fees\":\"The flashloan fees\",\"feesReceived\":\"The fees received\",\"sender\":\"The address that initiated the flash loan\",\"to\":\"The address that received the flash loaned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterMint(address,address,bytes32[],bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsIn\":\"The amounts in\",\"liquidityConfigs\":\"The liquidity configurations\",\"sender\":\"The address that initiated the mint\",\"to\":\"The address that received the minted tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterSwap(address,address,bool,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsOut\":\"The amounts out\",\"sender\":\"The address that initiated the swap\",\"swapForY\":\"Whether the swap was for token Y\",\"to\":\"The address that received the swapped tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"from\":\"The address that will transfer the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the transfer\",\"to\":\"The address that will receive the tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeBurn(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsToBurn\":\"The amounts to burn\",\"from\":\"The address that will burn the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the burn\",\"to\":\"The address that will receive the burned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeFlashLoan(address,address,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"sender\":\"The address that initiated the flash loan\",\"to\":\"The address that will receive the flash loaned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeMint(address,address,bytes32[],bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsReceived\":\"The amounts received\",\"liquidityConfigs\":\"The liquidity configurations\",\"sender\":\"The address that initiated the mint\",\"to\":\"The address that will receive the minted tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeSwap(address,address,bool,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsIn\":\"The amounts in\",\"sender\":\"The address that initiated the swap\",\"swapForY\":\"Whether the swap is for token Y\",\"to\":\"The address that will receive the swapped tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"getLBPair()\":{\"details\":\"Returns the LBPair contract\",\"returns\":{\"_0\":\"The LBPair contract\"}},\"isLinked()\":{\"details\":\"Returns whether the contract is linked to the pair or not\",\"returns\":{\"_0\":\"Whether the contract is linked to the pair or not\"}},\"onHooksSet(bytes32,bytes)\":{\"details\":\"Only callable by the pair\",\"params\":{\"hooksParameters\":\"The hooks parameters\",\"onHooksSetData\":\"The onHooksSet data\"},\"returns\":{\"_0\":\"The function selector\"}}},\"title\":\"Liquidity Book Base Hooks Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"afterBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair after a batch transfer\"},\"afterBurn(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair after burning\"},\"afterFlashLoan(address,address,bytes32,bytes32)\":{\"notice\":\"Hook called by the pair after a flash loan\"},\"afterMint(address,address,bytes32[],bytes32)\":{\"notice\":\"Hook called by the pair after minting\"},\"afterSwap(address,address,bool,bytes32)\":{\"notice\":\"Hook called by the pair after a swap\"},\"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair before a batch transfer\"},\"beforeBurn(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair before burning\"},\"beforeFlashLoan(address,address,bytes32)\":{\"notice\":\"Hook called by the pair before a flash loan\"},\"beforeMint(address,address,bytes32[],bytes32)\":{\"notice\":\"Hook called by the pair before minting\"},\"beforeSwap(address,address,bool,bytes32)\":{\"notice\":\"Hook called by the pair before a swap\"},\"onHooksSet(bytes32,bytes)\":{\"notice\":\"Hook called by the pair when the hooks parameters are set\"}},\"notice\":\"Base contract for LBPair hooks This contract is meant to be inherited by any contract that wants to implement LBPair hooks\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBBaseHooks.sol\":\"LBBaseHooks\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/LBBaseHooks.sol\":{\"keccak256\":\"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1\",\"dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"LBBaseHooks__InvalidCaller"},{"inputs":[],"type":"error","name":"LBBaseHooks__NotLinked"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"fees","type":"bytes32"},{"internalType":"bytes32","name":"feesReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsOut","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBPair","outputs":[{"internalType":"contract ILBPair","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isLinked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onHooksSet","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amounts":"The amounts","from":"The address that transferred the tokens","ids":"The token ids","sender":"The address that initiated the transfer","to":"The address that received the tokens"},"returns":{"_0":"The function selector"}},"afterBurn(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amountsToBurn":"The amounts to burn","from":"The address that burned the tokens","ids":"The token ids","sender":"The address that initiated the burn","to":"The address that received the burned tokens"},"returns":{"_0":"The function selector"}},"afterFlashLoan(address,address,bytes32,bytes32)":{"details":"Only callable by the pair","params":{"fees":"The flashloan fees","feesReceived":"The fees received","sender":"The address that initiated the flash loan","to":"The address that received the flash loaned tokens"},"returns":{"_0":"The function selector"}},"afterMint(address,address,bytes32[],bytes32)":{"details":"Only callable by the pair","params":{"amountsIn":"The amounts in","liquidityConfigs":"The liquidity configurations","sender":"The address that initiated the mint","to":"The address that received the minted tokens"},"returns":{"_0":"The function selector"}},"afterSwap(address,address,bool,bytes32)":{"details":"Only callable by the pair","params":{"amountsOut":"The amounts out","sender":"The address that initiated the swap","swapForY":"Whether the swap was for token Y","to":"The address that received the swapped tokens"},"returns":{"_0":"The function selector"}},"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amounts":"The amounts","from":"The address that will transfer the tokens","ids":"The token ids","sender":"The address that initiated the transfer","to":"The address that will receive the tokens"},"returns":{"_0":"The function selector"}},"beforeBurn(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amountsToBurn":"The amounts to burn","from":"The address that will burn the tokens","ids":"The token ids","sender":"The address that initiated the burn","to":"The address that will receive the burned tokens"},"returns":{"_0":"The function selector"}},"beforeFlashLoan(address,address,bytes32)":{"details":"Only callable by the pair","params":{"amounts":"The amounts","sender":"The address that initiated the flash loan","to":"The address that will receive the flash loaned tokens"},"returns":{"_0":"The function selector"}},"beforeMint(address,address,bytes32[],bytes32)":{"details":"Only callable by the pair","params":{"amountsReceived":"The amounts received","liquidityConfigs":"The liquidity configurations","sender":"The address that initiated the mint","to":"The address that will receive the minted tokens"},"returns":{"_0":"The function selector"}},"beforeSwap(address,address,bool,bytes32)":{"details":"Only callable by the pair","params":{"amountsIn":"The amounts in","sender":"The address that initiated the swap","swapForY":"Whether the swap is for token Y","to":"The address that will receive the swapped tokens"},"returns":{"_0":"The function selector"}},"getLBPair()":{"details":"Returns the LBPair contract","returns":{"_0":"The LBPair contract"}},"isLinked()":{"details":"Returns whether the contract is linked to the pair or not","returns":{"_0":"Whether the contract is linked to the pair or not"}},"onHooksSet(bytes32,bytes)":{"details":"Only callable by the pair","params":{"hooksParameters":"The hooks parameters","onHooksSetData":"The onHooksSet data"},"returns":{"_0":"The function selector"}}},"version":1},"userdoc":{"kind":"user","methods":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair after a batch transfer"},"afterBurn(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair after burning"},"afterFlashLoan(address,address,bytes32,bytes32)":{"notice":"Hook called by the pair after a flash loan"},"afterMint(address,address,bytes32[],bytes32)":{"notice":"Hook called by the pair after minting"},"afterSwap(address,address,bool,bytes32)":{"notice":"Hook called by the pair after a swap"},"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair before a batch transfer"},"beforeBurn(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair before burning"},"beforeFlashLoan(address,address,bytes32)":{"notice":"Hook called by the pair before a flash loan"},"beforeMint(address,address,bytes32[],bytes32)":{"notice":"Hook called by the pair before minting"},"beforeSwap(address,address,bool,bytes32)":{"notice":"Hook called by the pair before a swap"},"onHooksSet(bytes32,bytes)":{"notice":"Hook called by the pair when the hooks parameters are set"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LBBaseHooks.sol":"LBBaseHooks"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/LBBaseHooks.sol":{"keccak256":"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778","urls":["bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1","dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"}},"version":1},"id":42} \ No newline at end of file diff --git a/abi/LBFactory.sol/LBFactory.json b/abi/LBFactory.sol/LBFactory.json deleted file mode 100644 index a1ff76cd..00000000 --- a/abi/LBFactory.sol/LBFactory.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"feeRecipient","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"flashLoanFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"LB_HOOKS_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addQuoteAsset","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createLBPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"forceDecay","inputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllBinSteps","inputs":[],"outputs":[{"name":"binStepWithPreset","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getAllLBPairs","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"lbPairsAvailable","type":"tuple[]","internalType":"struct ILBFactory.LBPairInformation[]","components":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"createdByOwner","type":"bool","internalType":"bool"},{"name":"ignoredForRouting","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getFeeRecipient","inputs":[],"outputs":[{"name":"feeRecipient","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getFlashLoanFee","inputs":[],"outputs":[{"name":"flashLoanFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLBPairAtIndex","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lbPair","type":"address","internalType":"contract ILBPair"}],"stateMutability":"view"},{"type":"function","name":"getLBPairImplementation","inputs":[],"outputs":[{"name":"lbPairImplementation","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getLBPairInformation","inputs":[{"name":"tokenA","type":"address","internalType":"contract IERC20"},{"name":"tokenB","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lbPairInformation","type":"tuple","internalType":"struct ILBFactory.LBPairInformation","components":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"LBPair","type":"address","internalType":"contract ILBPair"},{"name":"createdByOwner","type":"bool","internalType":"bool"},{"name":"ignoredForRouting","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMaxFlashLoanFee","inputs":[],"outputs":[{"name":"maxFee","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getMinBinStep","inputs":[],"outputs":[{"name":"minBinStep","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getNumberOfLBPairs","inputs":[],"outputs":[{"name":"lbPairNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNumberOfQuoteAssets","inputs":[],"outputs":[{"name":"numberOfQuoteAssets","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOpenBinSteps","inputs":[],"outputs":[{"name":"openBinStep","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPreset","inputs":[{"name":"binStep","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"baseFactor","type":"uint256","internalType":"uint256"},{"name":"filterPeriod","type":"uint256","internalType":"uint256"},{"name":"decayPeriod","type":"uint256","internalType":"uint256"},{"name":"reductionFactor","type":"uint256","internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","internalType":"uint256"},{"name":"protocolShare","type":"uint256","internalType":"uint256"},{"name":"maxVolatilityAccumulator","type":"uint256","internalType":"uint256"},{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getQuoteAssetAtIndex","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"asset","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isQuoteAsset","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"isQuote","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeLBHooksOnPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeQuoteAsset","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeRecipient","inputs":[{"name":"feeRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeesParametersOnPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFlashLoanFee","inputs":[{"name":"flashLoanFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBHooksParametersOnPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBPairIgnored","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"ignored","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLBPairImplementation","inputs":[{"name":"newLBPairImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"isOpen","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPresetOpenState","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"isOpen","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"FeeRecipientSet","inputs":[{"name":"oldRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"newRecipient","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FlashLoanFeeSet","inputs":[{"name":"oldFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairCreated","inputs":[{"name":"tokenX","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenY","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"LBPair","type":"address","indexed":false,"internalType":"contract ILBPair"},{"name":"pid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairIgnoredStateChanged","inputs":[{"name":"LBPair","type":"address","indexed":true,"internalType":"contract ILBPair"},{"name":"ignored","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"LBPairImplementationSet","inputs":[{"name":"oldLBPairImplementation","type":"address","indexed":false,"internalType":"address"},{"name":"LBPairImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PresetOpenStateChanged","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"isOpen","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"PresetRemoved","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PresetSet","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"baseFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filterPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decayPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"reductionFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolShare","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxVolatilityAccumulator","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"QuoteAssetAdded","inputs":[{"name":"quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false},{"type":"event","name":"QuoteAssetRemoved","inputs":[{"name":"quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"EnumerableMapNonexistentKey","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"LBFactory__AddressZero","inputs":[]},{"type":"error","name":"LBFactory__BinStepHasNoPreset","inputs":[{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__BinStepTooLow","inputs":[{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__CannotGrantDefaultAdminRole","inputs":[]},{"type":"error","name":"LBFactory__FlashLoanFeeAboveMax","inputs":[{"name":"fees","type":"uint256","internalType":"uint256"},{"name":"maxFees","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__IdenticalAddresses","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"LBFactory__ImplementationNotSet","inputs":[]},{"type":"error","name":"LBFactory__InvalidHooksParameters","inputs":[]},{"type":"error","name":"LBFactory__LBPairAlreadyExists","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"_binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__LBPairDoesNotExist","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__LBPairIgnoredIsAlreadyInTheSameState","inputs":[]},{"type":"error","name":"LBFactory__LBPairNotCreated","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__LBPairSafetyCheckFailed","inputs":[{"name":"LBPairImplementation","type":"address","internalType":"address"}]},{"type":"error","name":"LBFactory__PresetIsLockedForUsers","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__PresetOpenStateIsAlreadyInTheSameState","inputs":[]},{"type":"error","name":"LBFactory__QuoteAssetAlreadyWhitelisted","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"LBFactory__QuoteAssetNotWhitelisted","inputs":[{"name":"quoteAsset","type":"address","internalType":"contract IERC20"}]},{"type":"error","name":"LBFactory__SameFeeRecipient","inputs":[{"name":"feeRecipient","type":"address","internalType":"address"}]},{"type":"error","name":"LBFactory__SameFlashLoanFee","inputs":[{"name":"flashLoanFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBFactory__SameHooksImplementation","inputs":[{"name":"hooksImplementation","type":"address","internalType":"address"}]},{"type":"error","name":"LBFactory__SameHooksParameters","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"LBFactory__SameImplementation","inputs":[{"name":"LBPairImplementation","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"PairParametersHelper__InvalidParameter","inputs":[]},{"type":"error","name":"SafeCast__Exceeds16Bits","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c63430008140033","sourceMap":"1269:28002:43:-:0;;;3145:355;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3231:12;-1:-1:-1;;;;;1273:26:25;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:25;;1350:1;1322:31;;;701:51:127;674:18;;1322:31:25;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;1860:6:43::1;3259:12;:33;3255:111;;;3301:65;::::0;-1:-1:-1;;;3301:65:43;;::::1;::::0;::::1;937:25:127::0;;;1860:6:43::1;978:18:127::0;;;971:34;910:18;;3301:65:43::1;763:248:127::0;3255:111:43::1;3377:30;3394:12:::0;3377:16:::1;:30::i;:::-;3418:13;:28:::0;;;3461:32:::1;::::0;;3477:1:::1;937:25:127::0;;993:2;978:18;;971:34;;;3461:32:43::1;::::0;910:18:127;3461:32:43::1;;;;;;;3145:355:::0;;;1269:28002;;1886:153:26;1975:13;1968:20;;-1:-1:-1;;;;;;1968:20:26;;;1998:34;2023:8;1998:24;:34::i;:::-;1886:153;:::o;25594:383:43:-;-1:-1:-1;;;;;25665:26:43;;25661:63;;25700:24;;-1:-1:-1;;;25700:24:43;;;;;;;;;;;25661:63;25761:13;;-1:-1:-1;;;;;25761:13:43;;;;25788:31;;;;25784:86;;25856:13;;25828:42;;-1:-1:-1;;;25828:42:43;;-1:-1:-1;;;;;25856:13:43;;;25828:42;;;701:51:127;674:18;;25828:42:43;555:203:127;25784:86:43;25881:13;:28;;-1:-1:-1;;;;;;25881:28:43;-1:-1:-1;;;;;25881:28:43;;;;;;;;;25924:46;;;1507:15:127;;;1489:34;;1554:2;1539:18;;1532:43;;;;25924:46:43;;1424:18:127;25924:46:43;;;;;;;25651:326;25594:383;:::o;2912:187:25:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:25;;;-1:-1:-1;;;;;;3020:17:25;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:177:127:-;93:13;;-1:-1:-1;;;;;135:31:127;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;1277:304::-;1269:28002:43;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c63430008140033","sourceMap":"1269:28002:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:23;;;;;;:::i;:::-;;:::i;:::-;;;470:14:127;;463:22;445:41;;433:2;418:18;2565:202:23;;;;;;;;9089:677:43;;;:::i;:::-;;;;;;;:::i;5793:153::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1499:55:127;;;1481:74;;1469:2;1454:18;5793:153:43;1319:242:127;20499:802:43;;;;;;:::i;:::-;;:::i;:::-;;1606:82;;1654:34;1606:82;;;;;3233:25:127;;;3221:2;3206:18;1606:82:43;3087:177:127;3810:120:23;;;;;;:::i;:::-;3875:7;3901:12;;;:6;:12;;;;;:22;;;;3810:120;6172:151:43;;;;;;:::i;:::-;;:::i;22792:239::-;;;;;;:::i;:::-;;:::i;4226:136:23:-;;;;;;:::i;:::-;;:::i;5328:245::-;;;;;;:::i;:::-;;:::i;16991:1139:43:-;;;;;;:::i;:::-;;:::i;21888:504::-;;;;;;:::i;:::-;;:::i;26173:96::-;;;;;;:::i;:::-;;:::i;3814:118::-;3912:13;;-1:-1:-1;;;;;3912:13:43;3814:118;;18510:532;;;;;;:::i;:::-;;:::i;4830:126::-;4931:11;:18;4830:126;;24533:264;;;;;;:::i;:::-;;:::i;8816:133::-;;;:::i;12369:2404::-;;;;;;:::i;:::-;;:::i;10023:1133::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15344:695::-;;;;;;:::i;:::-;;:::i;3604:114::-;1796:1;3604:114;;6709:259;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2293:101:25:-;;;:::i;2119:229:26:-;;;:::i;5148:131:43:-;;;;;;:::i;:::-;;:::i;5441:148::-;;;:::i;4037:120::-;1860:6;4037:120;;1638:85:25;1684:7;1710:6;-1:-1:-1;;;;;1710:6:25;1638:85;;28582:203:43;;;;;;:::i;:::-;;:::i;2187:49:23:-;;2232:4;2187:49;;7666:992:43;;;;;;:::i;:::-;;:::i;:::-;;;;11608:25:127;;;11664:2;11649:18;;11642:34;;;;11692:18;;;11685:34;;;;11750:2;11735:18;;11728:34;;;;11793:3;11778:19;;11771:35;11837:3;11822:19;;11815:35;11881:3;11866:19;;11859:35;11938:14;11931:22;11925:3;11910:19;;11903:51;11595:3;11580:19;7666:992:43;11271:689:127;4569:142:43;4683:21;;-1:-1:-1;;;;;4683:21:43;4569:142;;11347:624;;;;;;:::i;:::-;;:::i;4642:138:23:-;;;;;;:::i;:::-;;:::i;25068:244:43:-;;;;;;:::i;:::-;;:::i;19268:197::-;;;;;;:::i;:::-;;:::i;1232:99:26:-;1311:13;;-1:-1:-1;;;;;1311:13:26;1232:99;;23377:122:43;;;;;;:::i;:::-;;:::i;23816:448::-;;;;;;:::i;:::-;;:::i;1524:178:26:-;;;;;;:::i;:::-;;:::i;4292:118:43:-;4390:13;;4292:118;;2565:202:23;2650:4;-1:-1:-1;;;;;;2673:47:23;;-1:-1:-1;;;2673:47:23;;:87;;-1:-1:-1;;;;;;;;;;862:40:38;;;2724:36:23;2666:94;2565:202;-1:-1:-1;;2565:202:23:o;9089:677:43:-;9148:28;9188:14;9205:17;:8;:15;:17::i;:::-;9188:34;-1:-1:-1;9237:10:43;;9233:527;;9291:6;9277:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9277:21:43;;9263:35;;9313:13;9346:9;9341:268;9361:6;9357:1;:10;9341:268;;;9393:15;;9428:14;:8;9440:1;9428:11;:14::i;:::-;9392:50;;-1:-1:-1;9392:50:43;-1:-1:-1;9465:30:43;9392:50;9465:13;:30::i;:::-;9461:134;;;9540:7;9519:11;9531:5;9519:18;;;;;;;;:::i;:::-;;;;;;;;;;:28;9569:7;;;;:::i;:::-;;;;9461:134;9374:235;;9369:3;;;;:::i;:::-;;;9341:268;;;;9635:6;9627:5;:14;9623:127;;;9712:5;9699:11;9692:26;9623:127;9249:511;9233:527;9178:588;9089:677;:::o;5793:153::-;5870:12;5908:30;:20;5932:5;5908:23;:30::i;20499:802::-;1531:13:25;:11;:13::i;:::-;20868:14:43::1;20885:46;20907:6;20915;20923:7;20885:46;;:21;:46::i;:::-;:53;;::::0;;-1:-1:-1;;;;;;20953:29:43;::::1;20949:94;;20991:52;::::0;-1:-1:-1;;;20991:52:43;;-1:-1:-1;;;;;13262:15:127;;;20991:52:43::1;::::0;::::1;13244:34:127::0;13314:15;;13294:18;;;13287:43;13378:6;13366:19;;13346:18;;;13339:47;13156:18;;20991:52:43::1;;;;;;;;20949:94;21054:240;::::0;-1:-1:-1;;;21054:240:43;;13708:6:127;13741:15;;;21054:240:43::1;::::0;::::1;13723:34:127::0;13793:15;;;13773:18;;;13766:43;13845:15;;;13825:18;;;13818:43;13897:15;;;13877:18;;;13870:43;13932:8;13977:15;;;13956:19;;;13949:44;14030:15;;;14009:19;;;14002:44;14083:15;;14062:19;;;14055:44;-1:-1:-1;;;;;21054:29:43;::::1;::::0;::::1;::::0;13670:19:127;;21054:240:43::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20858:443;20499:802:::0;;;;;;;;;;:::o;6172:151::-;6240:12;6271:45;:20;6309:5;6271:29;:45::i;22792:239::-;1654:34;2464:16:23;2475:4;2464:10;:16::i;:::-;23011:12:43::1;::::0;;23008:1:::1;23011:12:::0;;;::::1;::::0;::::1;::::0;;;22955:69:::1;::::0;22983:6;;22991;;22999:7;;22955:27:::1;:69::i;:::-;22792:239:::0;;;;:::o;4226:136:23:-;3875:7;3901:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;5328:245::-:0;-1:-1:-1;;;;;5421:34:23;;735:10:37;5421:34:23;5417:102;;5478:30;;-1:-1:-1;;;5478:30:23;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;16991:1139:43:-;1531:13:25;:11;:13::i;:::-;1796:1:43::1;17325:7;:23;;;17321:69;;;17357:33;::::0;-1:-1:-1;;;17357:33:43;;14285:6:127;14273:19;;17357:33:43::1;::::0;::::1;14255:38:127::0;14228:18;;17357:33:43::1;14110:189:127::0;17321:69:43::1;17401:14;17418:244;17401:14:::0;17465:10;17489:12;17515:11;17540:15;17569:18;17601:13;17628:24;17418:33:::1;:244::i;:::-;17401:261;;17677:6;17673:90;;;17708:44;:6:::0;17723:4:::1;1745:3;17708:14;:44::i;:::-;17699:53;;17673:90;17773:38;:8;:38;::::0;::::1;17803:6:::0;17773:12:::1;:38::i;:::-;-1:-1:-1::0;17827:241:43::1;::::0;;::::1;13741:15:127::0;;;13723:34;;13793:15;;;13788:2;13773:18;;13766:43;13845:15;;;13825:18;;;13818:43;13897:15;;;13892:2;13877:18;;13870:43;13932:8;13977:15;;;13971:3;13956:19;;13949:44;14030:15;;;14024:3;14009:19;;14002:44;14083:15;;14077:3;14062:19;;14055:44;17827:241:43;;;;::::1;::::0;::::1;::::0;;;;13685:3:127;17827:241:43;;::::1;18084:39;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;17311:819;16991:1139:::0;;;;;;;;;:::o;21888:504::-;1654:34;2464:16:23;2475:4;2464:10;:16::i;:::-;-1:-1:-1;;;;;22136:45:43;::::1;::::0;;:85:::1;;-1:-1:-1::0;22200:15:43;-1:-1:-1;;;;;;22185:36:43::1;::::0;22136:85:::1;22132:158;;;22244:35;;-1:-1:-1::0;;;22244:35:43::1;;;;;;;;;;;22132:158;22300:85;22328:6;22336;22344:7;22353:15;22370:14;;22300:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;22300:27:43::1;::::0;-1:-1:-1;;;22300:85:43:i:1;:::-;21888:504:::0;;;;;;;:::o;26173:96::-;1531:13:25;:11;:13::i;:::-;26245:4:43::1;-1:-1:-1::0;;;;;26245:15:43::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26173:96:::0;:::o;18510:532::-;1531:13:25;:11;:13::i;:::-;18610:26:43::1;:8;:26;::::0;::::1;:17;:26::i;:::-;18605:78;;18645:38;::::0;-1:-1:-1;;;18645:38:43;;14285:6:127;14273:19;;18645:38:43::1;::::0;::::1;14255::127::0;14228:18;;18645:38:43::1;14110:189:127::0;18605:78:43::1;18694:14;18719:21;:8;:21;::::0;::::1;:12;:21::i;:::-;18711:30:::0;-1:-1:-1;18756:51:43;::::1;;1745:3;2824:20:76::0;;;18756:51:43::1;;::::0;18752:140:::1;;18830:51;;-1:-1:-1::0;;;18830:51:43::1;;;;;;;;;;;18752:140;18902:78;;::::0;::::1;18932:46;:6:::0;18947;1745:3:::1;18932:14;:46::i;:::-;18902:8;::::0;:78;:12:::1;:78::i;:::-;-1:-1:-1::0;18996:39:43::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;18595:447;18510:532:::0;;:::o;24533:264::-;1531:13:25;:11;:13::i;:::-;24618:45:43::1;:20;24651:10:::0;24618:24:::1;:45::i;:::-;24613:135;;24686:51;::::0;-1:-1:-1;;;24686:51:43;;-1:-1:-1;;;;;1499:55:127;;24686:51:43::1;::::0;::::1;1481:74:127::0;1454:18;;24686:51:43::1;1319:242:127::0;24613:135:43::1;24763:27;::::0;-1:-1:-1;;;;;24763:27:43;::::1;::::0;::::1;::::0;;;::::1;24533:264:::0;:::o;8816:133::-;8874:34;8927:15;:8;:13;:15::i;:::-;8920:22;;8816:133;:::o;12369:2404::-;12505:12;12538:26;:8;:26;;;:17;:26::i;:::-;12533:78;;12573:38;;-1:-1:-1;;;12573:38:43;;14285:6:127;14273:19;;12573:38:43;;;14255::127;14228:18;;12573:38:43;14110:189:127;12533:78:43;12622:14;12647:21;:8;:21;;;:12;:21::i;:::-;12639:30;-1:-1:-1;12639:30:43;12708:7;1684::25;1710:6;-1:-1:-1;;;;;1710:6:25;;1638:85;12708:7:43;-1:-1:-1;;;;;12694:21:43;:10;-1:-1:-1;;;;;12694:21:43;;12679:36;;12731:21;12745:6;12731:13;:21::i;:::-;12730:22;:34;;;;;12757:7;12756:8;12730:34;12726:126;;;12787:54;;-1:-1:-1;;;12787:54:43;;12821:10;12787:54;;;15197:74:127;15319:6;15307:19;;15287:18;;;15280:47;15170:18;;12787:54:43;15024:309:127;12726:126:43;12867:46;:20;12905:6;12867:29;:46::i;:::-;12862:103;;12922:43;;-1:-1:-1;;;12922:43:43;;-1:-1:-1;;;;;1499:55:127;;12922:43:43;;;1481:74:127;1454:18;;12922:43:43;1319:242:127;12862:103:43;12990:6;-1:-1:-1;;;;;12980:16:43;:6;-1:-1:-1;;;;;12980:16:43;;12976:66;;13005:37;;-1:-1:-1;;;13005:37:43;;-1:-1:-1;;;;;1499:55:127;;13005:37:43;;;1481:74:127;1454:18;;13005:37:43;1319:242:127;12976:66:43;13123:45;13150:8;13160:7;13123:26;:45::i;:::-;;13287:13;13302;13319:27;13331:6;13339;13319:11;:27::i;:::-;13286:60;;-1:-1:-1;13286:60:43;-1:-1:-1;;;;;;13398:29:43;;13394:66;;13436:24;;-1:-1:-1;;;13436:24:43;;;;;;;;;;;13394:66;-1:-1:-1;;;;;13482:20:43;;;13539:1;13482:20;;;:12;:20;;;;;;;;:28;;;;;;;;;;:37;;;;;;;;;;:44;;;;;13474:67;13470:160;;13564:55;;-1:-1:-1;;;13564:55:43;;-1:-1:-1;;;;;13262:15:127;;;13564:55:43;;;13244:34:127;13314:15;;13294:18;;;13287:43;13378:6;13366:19;;13346:18;;;13339:47;13156:18;;13564:55:43;12950:442:127;13470:160:43;13679:21;;-1:-1:-1;;;;;13679:21:43;;13715:74;;13756:33;;-1:-1:-1;;;13756:33:43;;;;;;;;;;;13715:74;13927:41;;-1:-1:-1;;15623:2:127;15619:15;;;15615:24;;13927:41:43;;;15603:37:127;15674:15;;;15670:24;15656:12;;;15649:46;15747:15;15751:3;15729:16;;;15725:38;15711:12;;;15704:60;13836:218:43;;13891:14;;15780:12:127;;13927:41:43;;;-1:-1:-1;;13927:41:43;;;;;;;;;-1:-1:-1;;;;;13262:15:127;;;13927:41:43;14000:35;;13244:34:127;13314:15;;13294:18;;;13287:43;;;;13378:6;13366:19;;13346:18;;;13339:47;13927:41:43;13156:18:127;;14000:35:43;;;;;;;;;;;;13990:46;;;;;;13836:33;:218::i;:::-;14141:102;;;;;;;;;;;;;;;-1:-1:-1;;;;;14141:102:43;;;;;;;;;;;;;;;;;;;-1:-1:-1;14141:102:43;;;;;;14089:20;;;;;;:12;:20;;;;;:28;;;;;;;;;;;;:37;;;;;;;;:154;;;;;;;;;;;;-1:-1:-1;;;14089:154:43;-1:-1:-1;;;;14089:154:43;;;-1:-1:-1;;;14089:154:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14254:11;:22;;14141:102;14254:22;;;;;;;;;-1:-1:-1;;;;;;14254:22:43;;;;;;;14286:32;;;:24;:32;;;;;:40;;;;;;;;;;;13804:264;;-1:-1:-1;14286:53:43;;-1:-1:-1;14286:44:43;:53::i;:::-;;14385:7;14355:68;;14377:6;-1:-1:-1;;;;;14355:68:43;14369:6;-1:-1:-1;;;;;14355:68:43;;14394:4;14421:1;14400:11;:18;;;;:22;;;;:::i;:::-;14355:68;;;-1:-1:-1;;;;;16591:55:127;;;16573:74;;16678:2;16663:18;;16656:34;;;;16546:18;14355:68:43;;;;;;;14434:4;-1:-1:-1;;;;;14434:15:43;;14463:22;:6;:20;:22::i;:::-;14499:24;:6;:22;:24::i;:::-;14537:23;:6;:21;:23::i;:::-;14574:27;:6;:25;:27::i;:::-;14615:30;:6;:28;:30::i;:::-;14659:25;:6;:23;:25::i;:::-;14698:36;:6;:34;:36::i;:::-;14434:332;;-1:-1:-1;;;;;;14434:332:43;;;;;;;17038:6:127;17071:15;;;14434:332:43;;;17053:34:127;17123:15;;;17103:18;;;17096:43;17175:15;;;17155:18;;;17148:43;17227:15;;;17207:18;;;17200:43;17262:8;17307:15;;;17286:19;;;17279:44;17360:15;;17339:19;;;17332:44;17413:15;;17392:19;;;17385:44;17466:15;;;17445:19;;;17438:44;17000:19;;14434:332:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12523:2250;;;;12369:2404;;;;;;:::o;10023:1133::-;10140:43;10224:13;10239;10256:27;10268:6;10276;10256:11;:27::i;:::-;-1:-1:-1;;;;;10341:32:43;;;10298:40;10341:32;;;:24;:32;;;;;;;;:40;;;;;;;;;;;10223:60;;-1:-1:-1;10223:60:43;;-1:-1:-1;10413:19:43;10341:40;10413:17;:19::i;:::-;10396:36;-1:-1:-1;10451:10:43;;10447:693;;10524:6;10500:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10500:31:43;;-1:-1:-1;;10500:31:43;;;;;;;;;;;-1:-1:-1;;;;;;10610:20:43;;;10550:57;10610:20;;;:12;:20;;;;;;;;:28;;;;;;;;;;;10481:50;;-1:-1:-1;10657:469:43;10681:6;10677:1;:10;10657:469;;;10716:14;10733:25;:16;:10;10747:1;10733:13;:16::i;:::-;:23;:25::i;:::-;10803:304;;;;;;;;;;;;;;-1:-1:-1;10897:20:43;;;10803:304;10897:20;;;;;;:27;-1:-1:-1;;;;;10897:27:43;;;;10803:304;;;;10966:35;-1:-1:-1;;;10966:35:43;;;;10803:304;;;;;;;;;11046:20;;;;;;;-1:-1:-1;;;11046:38:43;;;;;10803:304;;;;;;10781:19;;10716:42;;-1:-1:-1;10803:304:43;10781:16;;10798:1;;10781:19;;;;;;:::i;:::-;;;;;;;;;;:326;-1:-1:-1;10689:3:43;;10657:469;;;;10463:677;10447:693;10199:951;;;;10023:1133;;;;:::o;15344:695::-;1531:13:25;:11;:13::i;:::-;15469::43::1;15484::::0;15501:27:::1;15513:6;15521;15501:11;:27::i;:::-;-1:-1:-1::0;;;;;15582:20:43;;::::1;15539:40;15582:20:::0;;;:12:::1;:20;::::0;;;;;;;:28;;::::1;::::0;;;;;;;:37:::1;::::0;;::::1;::::0;;;;;;;;;15539:80;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;15539:80:43;::::1;::::0;::::1;;;::::0;;;;;;;-1:-1:-1;;;15539:80:43;;::::1;::::0;;::::1;;;::::0;;;;15468:60;;-1:-1:-1;15468:60:43;;-1:-1:-1;15539:80:43;15629:137:::1;;15701:54;::::0;-1:-1:-1;;;15701:54:43;;-1:-1:-1;;;;;13262:15:127;;;15701:54:43::1;::::0;::::1;13244:34:127::0;13314:15;;13294:18;;;13287:43;13378:6;13366:19;;13346:18;;;13339:47;13156:18;;15701:54:43::1;12950:442:127::0;15629:137:43::1;15817:7;15780:44;;:15;:33;;;:44;;::::0;15776:106:::1;;15833:49;;-1:-1:-1::0;;;15833:49:43::1;;;;;;;;;;;15776:106;-1:-1:-1::0;;;;;15893:20:43;;::::1;;::::0;;;:12:::1;:20;::::0;;;;;;;:28;;::::1;::::0;;;;;;;:37:::1;::::0;::::1;::::0;;;;;;;;:65;;;::::1;;-1:-1:-1::0;;;15893:65:43::1;-1:-1:-1::0;;;;15893:65:43;;::::1;;::::0;;16000:22;::::1;::::0;15974:58;;;::::1;::::0;::::1;::::0;::::1;::::0;15951:7;470:14:127;463:22;445:41;;433:2;418:18;;305:187;15974:58:43::1;;;;;;;;15458:581;;;15344:695:::0;;;;:::o;6709:259::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6915:46:43;6937:6;6945;6953:7;6915:21;:46::i;:::-;6908:53;6709:259;-1:-1:-1;;;;6709:259:43:o;2293:101:25:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2119:229:26:-;1311:13;;735:10:37;;-1:-1:-1;;;;;1311:13:26;2214:24;;2210:96;;2261:34;;-1:-1:-1;;;2261:34:26;;-1:-1:-1;;;;;1499:55:127;;2261:34:26;;;1481:74:127;1454:18;;2261:34:26;1319:242:127;2210:96:26;2315:26;2334:6;2315:18;:26::i;:::-;2161:187;2119:229::o;5148:131:43:-;5221:14;5254:11;5266:5;5254:18;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5254:18:43;;5148:131;-1:-1:-1;;5148:131:43:o;5441:148::-;5507:27;5553:29;:20;:27;:29::i;28582:203::-;28660:4;28680;28676:57;;-1:-1:-1;1684:7:25;1710:6;-1:-1:-1;;;;;28715:18:43;;;1710:6:25;;28715:18:43;28708:25;;28676:57;2931:4:23;2954:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2954:29:23;;;;;;;;;;;;28750:28:43;28743:35;28582:203;-1:-1:-1;;;28582:203:43:o;7666:992::-;7779:18;;;;;;;;8077:26;:8;8095:7;8077:17;:26::i;:::-;8072:78;;8112:38;;-1:-1:-1;;;8112:38:43;;;;;3233:25:127;;;3206:18;;8112:38:43;3087:177:127;8072:78:43;8161:14;8186:21;:8;8199:7;8186:12;:21::i;:::-;8178:30;-1:-1:-1;8232:22:43;8178:30;8232:20;:22::i;:::-;8219:35;;;;8279:24;:6;:22;:24::i;:::-;8264:39;;;;8327:23;:6;:21;:23::i;:::-;8313:37;;;;8378:27;:6;:25;:27::i;:::-;8360:45;;;;8436:30;:6;:28;:30::i;:::-;8415:51;;;;8492:25;:6;:23;:25::i;:::-;8476:41;;;;8554:36;:6;:34;:36::i;:::-;8527:63;;;-1:-1:-1;1745:3:43;2824:20:76;;;8601:50:43;;8062:596;7666:992;;;;;;;;;:::o;11347:624::-;1531:13:25;:11;:13::i;:::-;11504:4:43::1;-1:-1:-1::0;;;;;11455:53:43::1;11463:23;-1:-1:-1::0;;;;;11455:43:43::1;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11455:53:43::1;;11451:150;;11531:59;::::0;-1:-1:-1;;;11531:59:43;;-1:-1:-1;;;;;1499:55:127;;11531:59:43::1;::::0;::::1;1481:74:127::0;1454:18;;11531:59:43::1;1319:242:127::0;11451:150:43::1;11645:21;::::0;-1:-1:-1;;;;;11645:21:43;;::::1;::::0;11680:50;::::1;::::0;;11676:142:::1;;11753:54;::::0;-1:-1:-1;;;11753:54:43;;-1:-1:-1;;;;;1499:55:127;;11753:54:43::1;::::0;::::1;1481:74:127::0;1454:18;;11753:54:43::1;1319:242:127::0;11676:142:43::1;11828:21;:47:::0;;-1:-1:-1;;;;;;11828:47:43::1;-1:-1:-1::0;;;;;11828:47:43;;::::1;::::0;;::::1;::::0;;;11891:73:::1;::::0;;18030:15:127;;;18012:34;;18077:2;18062:18;;18055:43;;;;11891:73:43::1;::::0;17924:18:127;11891:73:43::1;;;;;;;;11441:530;11347:624:::0;:::o;4642:138:23:-;3875:7;3901:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;25068:244:43:-:0;1531:13:25;:11;:13::i;:::-;25156:48:43::1;:20;25192:10:::0;25156:27:::1;:48::i;:::-;25151:109;;25213:47;::::0;-1:-1:-1;;;25213:47:43;;-1:-1:-1;;;;;1499:55:127;;25213:47:43::1;::::0;::::1;1481:74:127::0;1454:18;;25213:47:43::1;1319:242:127::0;25151:109:43::1;25276:29;::::0;-1:-1:-1;;;;;25276:29:43;::::1;::::0;::::1;::::0;;;::::1;25068:244:::0;:::o;19268:197::-;1531:13:25;:11;:13::i;:::-;19349:24:43::1;:8;:24;::::0;::::1;:15;:24::i;:::-;19344:76;;19382:38;::::0;-1:-1:-1;;;19382:38:43;;14285:6:127;14273:19;;19382:38:43::1;::::0;::::1;14255::127::0;14228:18;;19382:38:43::1;14110:189:127::0;19344:76:43::1;19436:22;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;19268:197:::0;:::o;23377:122::-;1531:13:25;:11;:13::i;:::-;23462:30:43::1;23479:12;23462:16;:30::i;23816:448::-:0;1531:13:25;:11;:13::i;:::-;23927::43::1;::::0;23955:31;;;23951:85:::1;;23995:41;::::0;-1:-1:-1;;;23995:41:43;;::::1;::::0;::::1;3233:25:127::0;;;3206:18;;23995:41:43::1;3087:177:127::0;23951:85:43::1;1860:6;24050:12;:33;24046:111;;;24092:65;::::0;-1:-1:-1;;;24092:65:43;;::::1;::::0;::::1;18283:25:127::0;;;1860:6:43::1;18324:18:127::0;;;18317:34;18256:18;;24092:65:43::1;18109:248:127::0;24046:111:43::1;24168:13;:28:::0;;;24211:46:::1;::::0;;18283:25:127;;;18339:2;18324:18;;18317:34;;;24211:46:43::1;::::0;18256:18:127;24211:46:43::1;18109:248:127::0;1524:178:26;1531:13:25;:11;:13::i;:::-;1613::26::1;:24:::0;;-1:-1:-1;;;;;1613:24:26;::::1;-1:-1:-1::0;;;;;;1613:24:26;;::::1;::::0;::::1;::::0;;;1677:7:::1;1684::25::0;1710:6;-1:-1:-1;;;;;1710:6:25;;1638:85;1677:7:26::1;-1:-1:-1::0;;;;;1652:43:26::1;;;;;;;;;;;1524:178:::0;:::o;7009:117:40:-;7075:7;7101:18;7108:3;7101:6;:18::i;7463:211::-;7540:7;;;;7599:21;7602:3;7614:5;7599:2;:21::i;:::-;7568:52;;;;-1:-1:-1;7463:211:40;-1:-1:-1;;;;;7463:211:40:o;25318:133:43:-;25380:4;1745:3;2824:20:76;;;25403:41:43;2686:187:76;9574:156:41;9648:7;9698:22;9702:3;9714:5;9698:3;:22::i;1796:162:25:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:25;735:10:37;1855:23:25;1851:101;;1901:40;;-1:-1:-1;;;1901:40:25;;735:10:37;1901:40:25;;;1481:74:127;1454:18;;1901:40:25;1319:242:127;26637:271:43;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26820:27:43;26832:6;26840;26820:11;:27::i;:::-;-1:-1:-1;;;;;26864:20:43;;;;;;;:12;:20;;;;;;;;:28;;;;;;;;;;;:37;;;;;;;;;26857:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26857:44:43;;;;;;;;;;;;;-1:-1:-1;;;26857:44:43;;;;;;;;;;-1:-1:-1;26857:44:43;;-1:-1:-1;;26637:271:43:o;8871:165:41:-;-1:-1:-1;;;;;9004:23:41;;8951:4;4360:21;;;:14;;;:21;;;;;;:26;;8974:55;4264:129;3199:103:23;3265:30;3276:4;735:10:37;3265::23;:30::i;27749:571:43:-;27951:14;27968:46;27990:6;27998;28006:7;27968:46;;:21;:46::i;:::-;:53;;;;-1:-1:-1;;;;;;28036:29:43;;28032:94;;28074:52;;-1:-1:-1;;;28074:52:43;;-1:-1:-1;;;;;13262:15:127;;;28074:52:43;;;13244:34:127;13314:15;;13294:18;;;13287:43;13378:6;13366:19;;13346:18;;;13339:47;13156:18;;28074:52:43;12950:442:127;28032:94:43;28173:15;28140:6;-1:-1:-1;;;;;28140:27:43;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;28136:108;;28197:47;;-1:-1:-1;;;28197:47:43;;;;;3233:25:127;;;3206:18;;28197:47:43;3087:177:127;28136:108:43;28255:58;;-1:-1:-1;;;28255:58:43;;-1:-1:-1;;;;;28255:25:43;;;;;:58;;28281:15;;28298:14;;28255:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27941:379;27749:571;;;;;:::o;29041:228::-;29119:4;29139;29135:79;;29174:40;;-1:-1:-1;;;29174:40:43;;;;;;;;;;;29135:79;29231:31;29248:4;29254:7;29231:16;:31::i;6730:317:23:-;6808:4;6828:22;6836:4;6842:7;6828;:22::i;:::-;6824:217;;;6898:5;6866:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6866:29:23;;;;;;;;;;:37;;-1:-1:-1;;6866:37:23;;;6922:40;735:10:37;;6866:12:23;;6922:40;;6898:5;6922:40;-1:-1:-1;6983:4:23;6976:11;;6824:217;-1:-1:-1;7025:5:23;7018:12;;12911:1397:70;13218:17;13279:11;13264:26;;:12;:26;;;:63;;;;355:5:76;13294:11:70;:33;;;13264:63;:126;;;;623:6:65;13347:15:70;:43;;;13264:126;:174;;;;549:5:65;13394:13:70;:44;;;13264:174;:240;;;;510:7:76;13458:24:70;:46;;;13264:240;13247:315;;;13522:40;;-1:-1:-1;;;13522:40:70;;;;;;;;;;;13247:315;-1:-1:-1;1246:2:70;1398:29:76;;;;;;13585:66:70;;;;;1410:16:76;;;;1302:2:70;1398:29:76;;;;;;1410:16;;;;1362:2:70;1398:29:76;;;;;;1410:16;1421:2:70;1398:29:76;;;;;;1410:16;1479:2:70;1398:29:76;;;;;;1410:16;;;;1534:2:70;1398:29:76;;;;;;1410:16;-1:-1:-1;;1320:36:76;;;;1383:45;;12911:1397:70:o;1760:180:76:-;1847:18;1884:49;1888:7;1897;:15;;1911:1;1897:15;;;1907:1;1897:15;257:3;1337:17;;;1333:22;1320:36;;;;1410:16;;1398:29;;1383:45;;1127:317;6246:161:40;6332:4;6355:45;6359:3;6379;6393:5;6355:3;:45::i;6781:145::-;6862:4;6885:34;6894:3;6914;6885:8;:34::i;8183:147::-;8259:7;8293:29;8297:3;8317;8293;:29::i;8316:150:41:-;8386:4;8409:50;8414:3;-1:-1:-1;;;;;8434:23:41;;8409:4;:50::i;8880:298:40:-;8944:16;8972:22;8997:16;9002:3;8997:4;:16::i;812:217:71:-;886:13;623:6:65;1824:42:71;258:3:65;1824:42:71;;;;1823:72;-1:-1:-1;;;1805:90:71;2185:11;;;-1:-1:-1;;2178:35:71;1004:18;1805:90;2178:35;1004:8;:18::i;:::-;996:26;812:217;-1:-1:-1;;;;;812:217:71:o;27155:195:43:-;27228:6;27236;27267;-1:-1:-1;;;;;27258:15:43;:6;-1:-1:-1;;;;;27258:15:43;;27254:56;;;27295:6;;27303;27254:56;-1:-1:-1;27328:6:43;;27336;;-1:-1:-1;27155:195:43:o;1290:9525:68:-;1409:16;1584:4;1578;1574:15;1568:22;1635:4;1629;1625:15;1619:22;1678:4;1672:11;1732:10;1725:4;1719;1715:15;1711:32;1777:7;1771:14;1915:1;1903:10;1899:18;2177:6;2164:11;2161:23;2158:237;;;2288:10;2282:4;2275:24;2376:4;2370;2363:18;2158:237;9697:28;9691:4;9684:42;9819:14;9812:4;9806;9802:15;9795:39;10010:62;9996:11;9990:4;9986:22;9983:90;9955:4;9942:11;9938:22;9932:4;9928:33;9904:187;9881:4;9875;9871:15;9847:258;10144:11;10138:4;10134:22;10125:7;10118:39;10271:4;10264;10251:11;10247:22;10240:4;10234;10230:15;10227:1;10219:57;10207:69;;;10346:8;10336:230;;10459:10;10453:4;10446:24;10547:4;10541;10534:18;10336:230;10646:24;;10683;;-1:-1:-1;;10727:15:68;;10720:33;-1:-1:-1;;10773:15:68;;;10766:33;;;;-1:-1:-1;1290:9525:68;;-1:-1:-1;1290:9525:68:o;10804:129:41:-;10871:4;10894:32;10899:3;10919:5;10894:4;:32::i;2214:150:70:-;2276:17;4727:11:76;4701:38;;2318:39:70;4567:188:76;2673:158:70;2737:19;2783:41;:6;1246:2;3762:20:76;3784:11;3758:38;;3624:188;3136:154:70;3199:18;3243:40;:6;1302:2;3762:20:76;3784:11;3758:38;;3624:188;3611:170:70;3678:22;3730:44;:6;1362:2;4255:20:76;4277:11;4251:38;;4117:188;:178:70;4187:25;4245:43;:6;1421:2;5648:20:76;5670:11;5644:38;;5510:188;4608:162:70;4673:20;4721:42;:6;1479:2;4255:20:76;4277:11;4251:38;;4117:188;5132:192:70;5208:31;5278:39;:6;1534:2;5198:20:76;5220:11;5194:38;;5060:188;11542:112:41;11602:7;11628:19;11636:3;4556:18;;4474:107;10541:135:79;10634:1;10615:20;;;;;10611:58;;10644:25;;-1:-1:-1;;;10644:25:79;;;;;;;;;;;10611:58;10541:135;;;:::o;1886:153:26:-;1975:13;1968:20;;-1:-1:-1;;;;;;1968:20:26;;;1998:34;2023:8;1998:24;:34::i;8634:156:41:-;8707:4;8730:53;8738:3;-1:-1:-1;;;;;8758:23:41;;8730:7;:53::i;6566:136:40:-;6640:4;6663:32;6670:3;6690;6663:6;:32::i;25594:383:43:-;-1:-1:-1;;;;;25665:26:43;;25661:63;;25700:24;;-1:-1:-1;;;25700:24:43;;;;;;;;;;;25661:63;25761:13;;-1:-1:-1;;;;;25761:13:43;;;;25788:31;;;;25784:86;;25856:13;;25828:42;;-1:-1:-1;;;25828:42:43;;-1:-1:-1;;;;;25856:13:43;;;25828:42;;;1481:74:127;1454:18;;25828:42:43;1319:242:127;25784:86:43;25881:13;:28;;-1:-1:-1;;;;;;25881:28:43;-1:-1:-1;;;;;25881:28:43;;;;;;;;;25924:46;;;18030:15:127;;;18012:34;;18077:2;18062:18;;18055:43;;;;25924:46:43;;17924:18:127;25924:46:43;17777:327:127;3716:123:40;3788:7;3814:18;:3;:16;:18::i;4192:191::-;4275:7;;;4317:19;:3;4330:5;4317:12;:19::i;:::-;4359:16;;;;:11;;;;;:16;;;;;;;;;4192:191;-1:-1:-1;;;;4192:191:40:o;4923:118:41:-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;3432:197:23:-;3520:22;3528:4;3534:7;3520;:22::i;:::-;3515:108;;3565:47;;-1:-1:-1;;;3565:47:23;;-1:-1:-1;;;;;16591:55:127;;3565:47:23;;;16573:74:127;16663:18;;;16656:34;;;16546:18;;3565:47:23;16382:314:127;3515:108:23;3432:197;;:::o;6179:316::-;6256:4;6277:22;6285:4;6291:7;6277;:22::i;:::-;6272:217;;6315:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6315:29:23;;;;;;;;;:36;;-1:-1:-1;;6315:36:23;6347:4;6315:36;;;6397:12;735:10:37;;656:96;6397:12:23;-1:-1:-1;;;;;6370:40:23;6388:7;-1:-1:-1;;;;;6370:40:23;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:23;6424:11;;2901:174:40;2993:4;3009:16;;;:11;;;:16;;;;;:24;;;3050:18;3009:3;3021;3050:13;:18::i;3486:140::-;3573:4;3596:23;:3;3615;3596:18;:23::i;4973:274::-;5055:7;5090:16;;;:11;;;:16;;;;;;5120:10;;:33;;;;;5135:18;5144:3;5149;5135:8;:18::i;:::-;5134:19;5120:33;5116:103;;;5176:32;;-1:-1:-1;;;5176:32:40;;;;;3233:25:127;;;3206:18;;5176:32:40;3087:177:127;2241:406:41;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:41;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;5797:130:40;5867:16;5902:18;:3;:16;:18::i;4113:3600:82:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:65;-1:-1:-1;4252:22:82;;-1:-1:-1;4252:22:82;4240:34;-1:-1:-1;4316:1:82;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:65;-1:-1:-1;4574:1:82;4601:34;4595:41;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:82;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:82;;;;;18283:25:127;;;18324:18;;;18317:34;;;18256:18;;7609:35:82;18109:248:127;7585:59:82;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:82;:::i;2912:187:25:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:25;;;-1:-1:-1;;;;;;3020:17:25;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2815:1368:41:-;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:41;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;3042:1135;4161:5;4154:12;;;;;3243:164:40;3323:4;3346:16;;;:11;;;:16;;;;;3339:23;;;3379:21;3346:3;3358;3379:16;:21::i;6431:138:41:-;6511:4;4360:21;;;:14;;;:21;;;;;;:26;;6534:28;4264:129;7776:300;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;6221:129::-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;14:286:127:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:127;;209:43;;199:71;;266:1;263;256:12;497:632;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:169;948:6;945:1;942:13;934:169;;;1009:13;;997:26;;1078:15;;;;1043:12;;;;970:1;963:9;934:169;;;-1:-1:-1;1120:3:127;;497:632;-1:-1:-1;;;;;;497:632:127:o;1134:180::-;1193:6;1246:2;1234:9;1225:7;1221:23;1217:32;1214:52;;;1262:1;1259;1252:12;1214:52;-1:-1:-1;1285:23:127;;1134:180;-1:-1:-1;1134:180:127:o;1566:162::-;-1:-1:-1;;;;;1653:5:127;1649:54;1642:5;1639:65;1629:93;;1718:1;1715;1708:12;1733:159;1800:20;;1860:6;1849:18;;1839:29;;1829:57;;1882:1;1879;1872:12;1897:161;1964:20;;2024:8;2013:20;;2003:31;;1993:59;;2048:1;2045;2038:12;2063:1019;2227:6;2235;2243;2251;2259;2267;2275;2283;2291;2299;2352:3;2340:9;2331:7;2327:23;2323:33;2320:53;;;2369:1;2366;2359:12;2320:53;2408:9;2395:23;2427:39;2460:5;2427:39;:::i;:::-;2485:5;-1:-1:-1;2542:2:127;2527:18;;2514:32;2555:41;2514:32;2555:41;:::i;:::-;2615:7;-1:-1:-1;2641:37:127;2674:2;2659:18;;2641:37;:::i;:::-;2631:47;;2697:37;2730:2;2719:9;2715:18;2697:37;:::i;:::-;2687:47;;2753:38;2786:3;2775:9;2771:19;2753:38;:::i;:::-;2743:48;;2810:38;2843:3;2832:9;2828:19;2810:38;:::i;:::-;2800:48;;2867:38;2900:3;2889:9;2885:19;2867:38;:::i;:::-;2857:48;;2924:38;2957:3;2946:9;2942:19;2924:38;:::i;:::-;2914:48;;2981:38;3014:3;3003:9;2999:19;2981:38;:::i;:::-;2971:48;;3038:38;3071:3;3060:9;3056:19;3038:38;:::i;:::-;3028:48;;2063:1019;;;;;;;;;;;;;:::o;3454:271::-;3529:6;3582:2;3570:9;3561:7;3557:23;3553:32;3550:52;;;3598:1;3595;3588:12;3550:52;3637:9;3624:23;3656:39;3689:5;3656:39;:::i;3730:508::-;3838:6;3846;3854;3907:2;3895:9;3886:7;3882:23;3878:32;3875:52;;;3923:1;3920;3913:12;3875:52;3962:9;3949:23;3981:39;4014:5;3981:39;:::i;:::-;4039:5;-1:-1:-1;4096:2:127;4081:18;;4068:32;4109:41;4068:32;4109:41;:::i;:::-;4169:7;-1:-1:-1;4195:37:127;4228:2;4213:18;;4195:37;:::i;:::-;4185:47;;3730:508;;;;;:::o;4243:323::-;4311:6;4319;4372:2;4360:9;4351:7;4347:23;4343:32;4340:52;;;4388:1;4385;4378:12;4340:52;4424:9;4411:23;4401:33;;4484:2;4473:9;4469:18;4456:32;4497:39;4530:5;4497:39;:::i;:::-;4555:5;4545:15;;;4243:323;;;;;:::o;4571:160::-;4636:20;;4692:13;;4685:21;4675:32;;4665:60;;4721:1;4718;4711:12;4736:762;4856:6;4864;4872;4880;4888;4896;4904;4912;4920;4973:3;4961:9;4952:7;4948:23;4944:33;4941:53;;;4990:1;4987;4980:12;4941:53;5013:28;5031:9;5013:28;:::i;:::-;5003:38;;5060:37;5093:2;5082:9;5078:18;5060:37;:::i;:::-;5050:47;;5116:37;5149:2;5138:9;5134:18;5116:37;:::i;:::-;5106:47;;5172:37;5205:2;5194:9;5190:18;5172:37;:::i;:::-;5162:47;;5228:38;5261:3;5250:9;5246:19;5228:38;:::i;:::-;5218:48;;5285:38;5318:3;5307:9;5303:19;5285:38;:::i;:::-;5275:48;;5342:38;5375:3;5364:9;5360:19;5342:38;:::i;:::-;5332:48;;5399:38;5432:3;5421:9;5417:19;5399:38;:::i;:::-;5389:48;;5456:36;5487:3;5476:9;5472:19;5456:36;:::i;:::-;5446:46;;4736:762;;;;;;;;;;;:::o;5503:1057::-;5640:6;5648;5656;5664;5672;5680;5733:3;5721:9;5712:7;5708:23;5704:33;5701:53;;;5750:1;5747;5740:12;5701:53;5789:9;5776:23;5808:39;5841:5;5808:39;:::i;:::-;5866:5;-1:-1:-1;5923:2:127;5908:18;;5895:32;5936:41;5895:32;5936:41;:::i;:::-;5996:7;-1:-1:-1;6022:37:127;6055:2;6040:18;;6022:37;:::i;:::-;6012:47;;6106:2;6095:9;6091:18;6078:32;6068:42;;6161:3;6150:9;6146:19;6133:33;6185:18;6226:2;6218:6;6215:14;6212:34;;;6242:1;6239;6232:12;6212:34;6280:6;6269:9;6265:22;6255:32;;6325:7;6318:4;6314:2;6310:13;6306:27;6296:55;;6347:1;6344;6337:12;6296:55;6387:2;6374:16;6413:2;6405:6;6402:14;6399:34;;;6429:1;6426;6419:12;6399:34;6474:7;6469:2;6460:6;6456:2;6452:15;6448:24;6445:37;6442:57;;;6495:1;6492;6485:12;6442:57;6526:2;6522;6518:11;6508:21;;6548:6;6538:16;;;;;5503:1057;;;;;;;;:::o;7073:252::-;7137:6;7145;7198:2;7186:9;7177:7;7173:23;7169:32;7166:52;;;7214:1;7211;7204:12;7166:52;7237:28;7255:9;7237:28;:::i;:::-;7227:38;;7284:35;7315:2;7304:9;7300:18;7284:35;:::i;:::-;7274:45;;7073:252;;;;;:::o;7512:581::-;7628:6;7636;7644;7652;7705:3;7693:9;7684:7;7680:23;7676:33;7673:53;;;7722:1;7719;7712:12;7673:53;7761:9;7748:23;7780:39;7813:5;7780:39;:::i;:::-;7838:5;-1:-1:-1;7895:2:127;7880:18;;7867:32;7908:41;7867:32;7908:41;:::i;:::-;7968:7;-1:-1:-1;7994:37:127;8027:2;8012:18;;7994:37;:::i;:::-;7984:47;;8050:37;8083:2;8072:9;8068:18;8050:37;:::i;:::-;8040:47;;7512:581;;;;;;;:::o;8346:436::-;8446:6;8454;8507:2;8495:9;8486:7;8482:23;8478:32;8475:52;;;8523:1;8520;8513:12;8475:52;8562:9;8549:23;8581:39;8614:5;8581:39;:::i;:::-;8639:5;-1:-1:-1;8696:2:127;8681:18;;8668:32;8709:41;8668:32;8709:41;:::i;9156:735::-;9399:2;9451:21;;;9521:13;;9424:18;;;9543:22;;;9370:4;;9399:2;9622:15;;;;9596:2;9581:18;;;9370:4;9665:200;9679:6;9676:1;9673:13;9665:200;;;9728:55;9779:3;9770:6;9764:13;8888:6;8880:5;8874:12;8870:25;8865:3;8858:38;-1:-1:-1;;;;;8949:4:127;8942:5;8938:16;8932:23;8928:72;8921:4;8916:3;8912:14;8905:96;9064:4;9057:5;9053:16;9047:23;9040:31;9033:39;9026:4;9021:3;9017:14;9010:63;9136:4;9129:5;9125:16;9119:23;9112:31;9105:39;9098:4;9093:3;9089:14;9082:63;;;8787:364;9728:55;9840:15;;;;9812:4;9803:14;;;;;9701:1;9694:9;9665:200;;9896:577;10010:6;10018;10026;10034;10087:3;10075:9;10066:7;10062:23;10058:33;10055:53;;;10104:1;10101;10094:12;10055:53;10143:9;10130:23;10162:39;10195:5;10162:39;:::i;:::-;10220:5;-1:-1:-1;10277:2:127;10262:18;;10249:32;10290:41;10249:32;10290:41;:::i;:::-;10350:7;-1:-1:-1;10376:37:127;10409:2;10394:18;;10376:37;:::i;:::-;10366:47;;10432:35;10463:2;10452:9;10448:18;10432:35;:::i;10478:504::-;10587:6;10595;10603;10656:2;10644:9;10635:7;10631:23;10627:32;10624:52;;;10672:1;10669;10662:12;10624:52;10711:9;10698:23;10730:39;10763:5;10730:39;:::i;:::-;10788:5;-1:-1:-1;10845:2:127;10830:18;;10817:32;10858:41;10817:32;10858:41;:::i;:::-;10478:504;;10918:7;;-1:-1:-1;;;10972:2:127;10957:18;;;;10944:32;;10478:504::o;10987:279::-;8874:12;;8888:6;8870:25;8858:38;;8949:4;8938:16;;;8932:23;-1:-1:-1;;;;;8928:72:127;8912:14;;;8905:96;9064:4;9053:16;;;9047:23;9040:31;9033:39;9017:14;;;9010:63;9136:4;9125:16;;;9119:23;9112:31;9105:39;9089:14;;;9082:63;11193:3;11178:19;;11206:54;8787:364;12225:184;12283:6;12336:2;12324:9;12315:7;12311:23;12307:32;12304:52;;;12352:1;12349;12342:12;12304:52;12375:28;12393:9;12375:28;:::i;12414:127::-;12475:10;12470:3;12466:20;12463:1;12456:31;12506:4;12503:1;12496:15;12530:4;12527:1;12520:15;12546:127;12607:10;12602:3;12598:20;12595:1;12588:31;12638:4;12635:1;12628:15;12662:4;12659:1;12652:15;12678:127;12739:10;12734:3;12730:20;12727:1;12720:31;12770:4;12767:1;12760:15;12794:4;12791:1;12784:15;12810:135;12849:3;12870:17;;;12867:43;;12890:18;;:::i;:::-;-1:-1:-1;12937:1:127;12926:13;;12810:135::o;16249:128::-;16316:9;;;16337:11;;;16334:37;;;16351:18;;:::i;17493:279::-;17583:6;17636:2;17624:9;17615:7;17611:23;17607:32;17604:52;;;17652:1;17649;17642:12;17604:52;17684:9;17678:16;17703:39;17736:5;17703:39;:::i;18362:184::-;18432:6;18485:2;18473:9;18464:7;18460:23;18456:32;18453:52;;;18501:1;18498;18491:12;18453:52;-1:-1:-1;18524:16:127;;18362:184;-1:-1:-1;18362:184:127:o;18551:617::-;18726:6;18715:9;18708:25;18689:4;18752:2;18790;18785;18774:9;18770:18;18763:30;18822:6;18816:13;18865:6;18860:2;18849:9;18845:18;18838:34;18890:1;18900:140;18914:6;18911:1;18908:13;18900:140;;;19009:14;;;19005:23;;18999:30;18975:17;;;18994:2;18971:26;18964:66;18929:10;;18900:140;;;18904:3;19089:1;19084:2;19075:6;19064:9;19060:22;19056:31;19049:42;19159:2;19152;19148:7;19143:2;19135:6;19131:15;19127:29;19116:9;19112:45;19108:54;19100:62;;;;18551:617;;;;;:::o;19858:217::-;19898:1;19924;19914:132;;19968:10;19963:3;19959:20;19956:1;19949:31;20003:4;20000:1;19993:15;20031:4;20028:1;20021:15;19914:132;-1:-1:-1;20060:9:127;;19858:217::o;20080:127::-;20141:10;20136:3;20132:20;20129:1;20122:31;20172:4;20169:1;20162:15;20196:4;20193:1;20186:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","LB_HOOKS_MANAGER_ROLE()":"1af5bacc","acceptOwnership()":"79ba5097","addQuoteAsset(address)":"5a440923","createLBPair(address,address,uint24,uint16)":"659ac74b","forceDecay(address)":"3c78a941","getAllBinSteps()":"5b35875c","getAllLBPairs(address,address)":"6622e0d7","getFeeRecipient()":"4ccb20c0","getFlashLoanFee()":"fd90c2be","getLBPairAtIndex(uint256)":"7daf5d66","getLBPairImplementation()":"af371065","getLBPairInformation(address,address,uint256)":"704037bd","getMaxFlashLoanFee()":"8ce9aa1c","getMinBinStep()":"701ab8c1","getNumberOfLBPairs()":"4e937c3a","getNumberOfQuoteAssets()":"80c5061e","getOpenBinSteps()":"0282c9c1","getPreset(uint256)":"aabc4b3c","getQuoteAssetAtIndex(uint256)":"0752092b","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","isQuoteAsset(address)":"27721842","owner()":"8da5cb5b","pendingOwner()":"e30c3978","removeLBHooksOnPair(address,address,uint16)":"2cc06b8c","removePreset(uint16)":"e203a31f","removeQuoteAsset(address)":"ddbfd941","renounceOwnership()":"715018a6","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setFeeRecipient(address)":"e74b981b","setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)":"093ff769","setFlashLoanFee(uint256)":"e92d0d5d","setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)":"3a2f1a91","setLBPairIgnored(address,address,uint16,bool)":"69d56ea3","setLBPairImplementation(address)":"b0384781","setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)":"379ee803","setPresetOpenState(uint16,bool)":"4cd161d3","supportsInterface(bytes4)":"01ffc9a7","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"EnumerableMapNonexistentKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__AddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepHasNoPreset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__CannotGrantDefaultAdminRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFees\",\"type\":\"uint256\"}],\"name\":\"LBFactory__FlashLoanFeeAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LBFactory__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__ImplementationNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__InvalidHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__LBPairIgnoredIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairNotCreated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__LBPairSafetyCheckFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__PresetIsLockedForUsers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__PresetOpenStateIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetAlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"LBFactory__SameFeeRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"LBFactory__SameFlashLoanFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hooksImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameHooksImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"LBFactory__SameHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds16Bits\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"PresetOpenStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LB_HOOKS_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"addQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"binStepWithPreset\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"name\":\"getAllLBPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation[]\",\"name\":\"lbPairsAvailable\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getLBPairAtIndex\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"lbPair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPairImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lbPairImplementation\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getLBPairInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation\",\"name\":\"lbPairInformation\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinBinStep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minBinStep\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfLBPairs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lbPairNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfQuoteAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"numberOfQuoteAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"openBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getPreset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuoteAssetAtIndex\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isQuoteAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isQuote\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removeLBHooksOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"removeQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setLBHooksParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"setLBPairIgnored\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newLBPairImplementation\",\"type\":\"address\"}],\"name\":\"setLBPairImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPresetOpenState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"EnumerableMapNonexistentKey(bytes32)\":[{\"details\":\"Query for a nonexistent map key.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"addQuoteAsset(address)\":{\"details\":\"Needs to be called by the owner Reverts if: - The quoteAsset is already whitelisted\",\"params\":{\"quoteAsset\":\"The quote asset (e.g: NATIVE, USDC...)\"}},\"constructor\":{\"params\":{\"feeRecipient\":\"The address of the fee recipient\",\"flashLoanFee\":\"The value of the fee for flash loan\"}},\"createLBPair(address,address,uint24,uint16)\":{\"params\":{\"activeId\":\"The active id of the pair\",\"binStep\":\"The bin step in basis point, used to calculate log(1 + binStep / 10_000)\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"},\"returns\":{\"pair\":\"The address of the newly created LBPair\"}},\"forceDecay(address)\":{\"details\":\"Needs to be called by the owner\",\"params\":{\"pair\":\"The pair to force the decay\"}},\"getAllBinSteps()\":{\"returns\":{\"binStepWithPreset\":\"The list of binStep\"}},\"getAllLBPairs(address,address)\":{\"params\":{\"tokenX\":\"The first token of the pair\",\"tokenY\":\"The second token of the pair\"},\"returns\":{\"lbPairsAvailable\":\"The list of available LBPairs\"}},\"getFeeRecipient()\":{\"returns\":{\"feeRecipient\":\"feeRecipient\"}},\"getFlashLoanFee()\":{\"returns\":{\"flashLoanFee\":\"The fee for flash loans, in 1e18\"}},\"getLBPairAtIndex(uint256)\":{\"params\":{\"index\":\"The index\"},\"returns\":{\"lbPair\":\"The address of the LBPair at index `index`\"}},\"getLBPairImplementation()\":{\"returns\":{\"lbPairImplementation\":\"The address of the LBPair implementation\"}},\"getLBPairInformation(address,address,uint256)\":{\"params\":{\"binStep\":\"The bin step of the LBPair\",\"tokenA\":\"The address of the first token of the pair\",\"tokenB\":\"The address of the second token of the pair\"},\"returns\":{\"lbPairInformation\":\"The LBPairInformation\"}},\"getMaxFlashLoanFee()\":{\"returns\":{\"maxFee\":\"maxFee\"}},\"getMinBinStep()\":{\"returns\":{\"minBinStep\":\"minBinStep\"}},\"getNumberOfLBPairs()\":{\"returns\":{\"lbPairNumber\":\"lbPairNumber\"}},\"getNumberOfQuoteAssets()\":{\"returns\":{\"numberOfQuoteAssets\":\"The number of quote assets\"}},\"getOpenBinSteps()\":{\"returns\":{\"openBinStep\":\"The list of open binSteps\"}},\"getPreset(uint256)\":{\"params\":{\"binStep\":\"The bin step of the preset\"},\"returns\":{\"baseFactor\":\"The base factor\",\"decayPeriod\":\"The decay period of the preset\",\"filterPeriod\":\"The filter period of the preset\",\"isOpen\":\"Whether the preset is open or not\",\"maxVolatilityAccumulator\":\"The max volatility accumulator of the preset\",\"protocolShare\":\"The protocol share of the preset\",\"reductionFactor\":\"The reduction factor of the preset\",\"variableFeeControl\":\"The variable fee control of the preset\"}},\"getQuoteAssetAtIndex(uint256)\":{\"params\":{\"index\":\"The index\"},\"returns\":{\"asset\":\"The address of the quoteAsset at index `index`\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"The address to check\",\"role\":\"The role to check\"},\"returns\":{\"_0\":\"Whether the account has the role or not\"}},\"isQuoteAsset(address)\":{\"params\":{\"token\":\"The address of the asset\"},\"returns\":{\"isQuote\":\"Whether the token is a quote asset or not\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"removeLBHooksOnPair(address,address,uint16)\":{\"details\":\"Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist\",\"params\":{\"binStep\":\"The bin step in basis point, used to calculate the price\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"}},\"removePreset(uint16)\":{\"details\":\"Needs to be called by the owner Reverts if: - The binStep doesn't have a preset\",\"params\":{\"binStep\":\"The bin step to remove\"}},\"removeQuoteAsset(address)\":{\"details\":\"Needs to be called by the owner Reverts if: - The quoteAsset was not whitelisted\",\"params\":{\"quoteAsset\":\"The quote asset (e.g: NATIVE, USDC...)\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setFeeRecipient(address)\":{\"details\":\"Needs to be called by the owner Reverts if: - The feeRecipient is `address(0)` - The feeRecipient is the same as the current one\",\"params\":{\"feeRecipient\":\"The address of the recipient\"}},\"setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)\":{\"details\":\"Needs to be called by the owner Reverts if: - The pair doesn't exist\",\"params\":{\"baseFactor\":\"The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\",\"binStep\":\"The bin step in basis point, used to calculate the price\",\"decayPeriod\":\"The period where the accumulator value is decayed, by the reduction factor\",\"filterPeriod\":\"The period where the accumulator value is untouched, prevent spam\",\"maxVolatilityAccumulator\":\"The max value of volatility accumulator\",\"protocolShare\":\"The share of the fees received by the protocol\",\"reductionFactor\":\"The reduction factor, used to calculate the reduction of the accumulator\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\",\"variableFeeControl\":\"The variable fee control, used to control the variable fee, can be 0 to disable it\"}},\"setFlashLoanFee(uint256)\":{\"details\":\"Needs to be called by the owner Reverts if: - The flashLoanFee is the same as the current one - The flashLoanFee is above the maximum flash loan fee\",\"params\":{\"flashLoanFee\":\"The value of the fee for flash loan\"}},\"setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)\":{\"details\":\"Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist - The hooks is `address(0)` or the hooks flags are all false\",\"params\":{\"binStep\":\"The bin step in basis point, used to calculate the price\",\"hooksParameters\":\"The hooks parameters\",\"onHooksSetData\":\"The data to pass to the onHooksSet function\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"}},\"setLBPairIgnored(address,address,uint16,bool)\":{\"details\":\"Needs to be called by the owner Reverts if: - The pair doesn't exist - The ignored state is already in the same state\",\"params\":{\"binStep\":\"The bin step in basis point of the pair\",\"ignored\":\"Whether to ignore (true) or not (false) the pair for routing\",\"tokenX\":\"The address of the first token of the pair\",\"tokenY\":\"The address of the second token of the pair\"}},\"setLBPairImplementation(address)\":{\"details\":\"Needs to be called by the owner\",\"params\":{\"newLBPairImplementation\":\"The address of the implementation\"}},\"setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)\":{\"details\":\"Needs to be called by the owner Reverts if: - The binStep is lower than the minimum bin step\",\"params\":{\"baseFactor\":\"The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\",\"binStep\":\"The bin step in basis point, used to calculate the price\",\"decayPeriod\":\"The period where the accumulator value is decayed, by the reduction factor\",\"filterPeriod\":\"The period where the accumulator value is untouched, prevent spam\",\"maxVolatilityAccumulator\":\"The max value of the volatility accumulator\",\"protocolShare\":\"The share of the fees received by the protocol\",\"reductionFactor\":\"The reduction factor, used to calculate the reduction of the accumulator\",\"variableFeeControl\":\"The variable fee control, used to control the variable fee, can be 0 to disable it\"}},\"setPresetOpenState(uint16,bool)\":{\"details\":\"Needs to be called by the owner Reverts if: - The binStep doesn't have a preset - The preset is already in the same state\",\"params\":{\"binStep\":\"The bin step in basis point, used to calculate the price\",\"isOpen\":\"Whether the preset is open or not\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"_availableLBPairBinSteps\":{\"details\":\"Mapping from a (tokenA, tokenB) to a set of available bin steps, this is used to keep track of the bin steps that are already used for a pair. The tokens are ordered to save gas, but they can be in the reverse order in the actual pair. Always query one of the 2 tokens of the pair to assert the order of the 2 tokens\"},\"_lbPairsInfo\":{\"details\":\"Mapping from a (tokenA, tokenB, binStep) to a LBPair. The tokens are ordered to save gas, but they can be in the reverse order in the actual pair. Always query one of the 2 tokens of the pair to assert the order of the 2 tokens\"}},\"title\":\"Liquidity Book Factory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addQuoteAsset(address)\":{\"notice\":\"Function to add an asset to the whitelist of quote assets\"},\"constructor\":{\"notice\":\"Constructor\"},\"createLBPair(address,address,uint24,uint16)\":{\"notice\":\"Create a liquidity bin LBPair for tokenX and tokenY\"},\"forceDecay(address)\":{\"notice\":\"Function to force the decay of the volatility accumulator of a pair\"},\"getAllBinSteps()\":{\"notice\":\"View function to return the list of available binStep with a preset\"},\"getAllLBPairs(address,address)\":{\"notice\":\"View function to return all the LBPair of a pair of tokens\"},\"getFeeRecipient()\":{\"notice\":\"Get the protocol fee recipient\"},\"getFlashLoanFee()\":{\"notice\":\"Get the fee for flash loans, in 1e18\"},\"getLBPairAtIndex(uint256)\":{\"notice\":\"View function to return the LBPair created at index `index`\"},\"getLBPairImplementation()\":{\"notice\":\"Get the address of the LBPair implementation\"},\"getLBPairInformation(address,address,uint256)\":{\"notice\":\"Returns the LBPairInformation if it exists, if not, then the address 0 is returned. The order doesn't matter\"},\"getMaxFlashLoanFee()\":{\"notice\":\"Get the maximum fee percentage for flashLoans\"},\"getMinBinStep()\":{\"notice\":\"Get the minimum bin step a pair can have\"},\"getNumberOfLBPairs()\":{\"notice\":\"View function to return the number of LBPairs created\"},\"getNumberOfQuoteAssets()\":{\"notice\":\"View function to return the number of quote assets whitelisted\"},\"getOpenBinSteps()\":{\"notice\":\"View function to return the list of open binSteps\"},\"getPreset(uint256)\":{\"notice\":\"View function to return the different parameters of the preset Will revert if the preset doesn't exist\"},\"getQuoteAssetAtIndex(uint256)\":{\"notice\":\"View function to return the quote asset whitelisted at index `index`\"},\"hasRole(bytes32,address)\":{\"notice\":\"Returns whether the caller has the role or not, only the owner has the DEFAULT_ADMIN_ROLE\"},\"isQuoteAsset(address)\":{\"notice\":\"View function to return whether a token is a quotedAsset (true) or not (false)\"},\"removeLBHooksOnPair(address,address,uint16)\":{\"notice\":\"Function to remove the hooks contract from the pair\"},\"removePreset(uint16)\":{\"notice\":\"Remove the preset linked to a binStep\"},\"removeQuoteAsset(address)\":{\"notice\":\"Function to remove an asset from the whitelist of quote assets\"},\"setFeeRecipient(address)\":{\"notice\":\"Function to set the recipient of the fees. This address needs to be able to receive ERC20s\"},\"setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)\":{\"notice\":\"Function to set the fee parameter of a LBPair\"},\"setFlashLoanFee(uint256)\":{\"notice\":\"Function to set the flash loan fee\"},\"setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)\":{\"notice\":\"Function to set the hooks parameters of a pair\"},\"setLBPairIgnored(address,address,uint16,bool)\":{\"notice\":\"Function to set whether the pair is ignored or not for routing, it will make the pair unusable by the router\"},\"setLBPairImplementation(address)\":{\"notice\":\"Set the LBPair implementation address\"},\"setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)\":{\"notice\":\"Sets the preset parameters of a bin step\"},\"setPresetOpenState(uint16,bool)\":{\"notice\":\"Sets if the preset is open or not to be used by users\"}},\"notice\":\"Contract used to deploy and register new LBPairs. Enables setting fee parameters, flashloan fees and LBPair implementation. Unless the `isOpen` is `true`, only the owner of the factory can create pairs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBFactory.sol\":\"LBFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"uint256","name":"flashLoanFee","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"type":"error","name":"EnumerableMapNonexistentKey"},{"inputs":[],"type":"error","name":"LBFactory__AddressZero"},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__BinStepHasNoPreset"},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__BinStepTooLow"},{"inputs":[],"type":"error","name":"LBFactory__CannotGrantDefaultAdminRole"},{"inputs":[{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"uint256","name":"maxFees","type":"uint256"}],"type":"error","name":"LBFactory__FlashLoanFeeAboveMax"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"type":"error","name":"LBFactory__IdenticalAddresses"},{"inputs":[],"type":"error","name":"LBFactory__ImplementationNotSet"},{"inputs":[],"type":"error","name":"LBFactory__InvalidHooksParameters"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"_binStep","type":"uint256"}],"type":"error","name":"LBFactory__LBPairAlreadyExists"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__LBPairDoesNotExist"},{"inputs":[],"type":"error","name":"LBFactory__LBPairIgnoredIsAlreadyInTheSameState"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__LBPairNotCreated"},{"inputs":[{"internalType":"address","name":"LBPairImplementation","type":"address"}],"type":"error","name":"LBFactory__LBPairSafetyCheckFailed"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBFactory__PresetIsLockedForUsers"},{"inputs":[],"type":"error","name":"LBFactory__PresetOpenStateIsAlreadyInTheSameState"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"type":"error","name":"LBFactory__QuoteAssetAlreadyWhitelisted"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"type":"error","name":"LBFactory__QuoteAssetNotWhitelisted"},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address"}],"type":"error","name":"LBFactory__SameFeeRecipient"},{"inputs":[{"internalType":"uint256","name":"flashLoanFee","type":"uint256"}],"type":"error","name":"LBFactory__SameFlashLoanFee"},{"inputs":[{"internalType":"address","name":"hooksImplementation","type":"address"}],"type":"error","name":"LBFactory__SameHooksImplementation"},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"}],"type":"error","name":"LBFactory__SameHooksParameters"},{"inputs":[{"internalType":"address","name":"LBPairImplementation","type":"address"}],"type":"error","name":"LBFactory__SameImplementation"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"PairParametersHelper__InvalidParameter"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds16Bits"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[{"internalType":"address","name":"oldRecipient","type":"address","indexed":false},{"internalType":"address","name":"newRecipient","type":"address","indexed":false}],"type":"event","name":"FeeRecipientSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"oldFlashLoanFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"newFlashLoanFee","type":"uint256","indexed":false}],"type":"event","name":"FlashLoanFeeSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenY","type":"address","indexed":true},{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"contract ILBPair","name":"LBPair","type":"address","indexed":false},{"internalType":"uint256","name":"pid","type":"uint256","indexed":false}],"type":"event","name":"LBPairCreated","anonymous":false},{"inputs":[{"internalType":"contract ILBPair","name":"LBPair","type":"address","indexed":true},{"internalType":"bool","name":"ignored","type":"bool","indexed":false}],"type":"event","name":"LBPairIgnoredStateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"oldLBPairImplementation","type":"address","indexed":false},{"internalType":"address","name":"LBPairImplementation","type":"address","indexed":false}],"type":"event","name":"LBPairImplementationSet","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"bool","name":"isOpen","type":"bool","indexed":true}],"type":"event","name":"PresetOpenStateChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true}],"type":"event","name":"PresetRemoved","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"uint256","name":"baseFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"filterPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"decayPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"reductionFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"variableFeeControl","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolShare","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxVolatilityAccumulator","type":"uint256","indexed":false}],"type":"event","name":"PresetSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetAdded","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LB_HOOKS_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addQuoteAsset"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"createLBPair","outputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"}]},{"inputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceDecay"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllBinSteps","outputs":[{"internalType":"uint256[]","name":"binStepWithPreset","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"}],"stateMutability":"view","type":"function","name":"getAllLBPairs","outputs":[{"internalType":"struct ILBFactory.LBPairInformation[]","name":"lbPairsAvailable","type":"tuple[]","components":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"bool","name":"createdByOwner","type":"bool"},{"internalType":"bool","name":"ignoredForRouting","type":"bool"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFeeRecipient","outputs":[{"internalType":"address","name":"feeRecipient","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFlashLoanFee","outputs":[{"internalType":"uint256","name":"flashLoanFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLBPairAtIndex","outputs":[{"internalType":"contract ILBPair","name":"lbPair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBPairImplementation","outputs":[{"internalType":"address","name":"lbPairImplementation","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenA","type":"address"},{"internalType":"contract IERC20","name":"tokenB","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLBPairInformation","outputs":[{"internalType":"struct ILBFactory.LBPairInformation","name":"lbPairInformation","type":"tuple","components":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"contract ILBPair","name":"LBPair","type":"address"},{"internalType":"bool","name":"createdByOwner","type":"bool"},{"internalType":"bool","name":"ignoredForRouting","type":"bool"}]}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getMaxFlashLoanFee","outputs":[{"internalType":"uint256","name":"maxFee","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getMinBinStep","outputs":[{"internalType":"uint256","name":"minBinStep","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfLBPairs","outputs":[{"internalType":"uint256","name":"lbPairNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNumberOfQuoteAssets","outputs":[{"internalType":"uint256","name":"numberOfQuoteAssets","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOpenBinSteps","outputs":[{"internalType":"uint256[]","name":"openBinStep","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPreset","outputs":[{"internalType":"uint256","name":"baseFactor","type":"uint256"},{"internalType":"uint256","name":"filterPeriod","type":"uint256"},{"internalType":"uint256","name":"decayPeriod","type":"uint256"},{"internalType":"uint256","name":"reductionFactor","type":"uint256"},{"internalType":"uint256","name":"variableFeeControl","type":"uint256"},{"internalType":"uint256","name":"protocolShare","type":"uint256"},{"internalType":"uint256","name":"maxVolatilityAccumulator","type":"uint256"},{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getQuoteAssetAtIndex","outputs":[{"internalType":"contract IERC20","name":"asset","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"isQuoteAsset","outputs":[{"internalType":"bool","name":"isQuote","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"removeLBHooksOnPair"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"removePreset"},{"inputs":[{"internalType":"contract IERC20","name":"quoteAsset","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeQuoteAsset"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setFeeRecipient"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setFeesParametersOnPair"},{"inputs":[{"internalType":"uint256","name":"flashLoanFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFlashLoanFee"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setLBHooksParametersOnPair"},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"bool","name":"ignored","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setLBPairIgnored"},{"inputs":[{"internalType":"address","name":"newLBPairImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setLBPairImplementation"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"},{"internalType":"bool","name":"isOpen","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPreset"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"bool","name":"isOpen","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setPresetOpenState"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"addQuoteAsset(address)":{"details":"Needs to be called by the owner Reverts if: - The quoteAsset is already whitelisted","params":{"quoteAsset":"The quote asset (e.g: NATIVE, USDC...)"}},"constructor":{"params":{"feeRecipient":"The address of the fee recipient","flashLoanFee":"The value of the fee for flash loan"}},"createLBPair(address,address,uint24,uint16)":{"params":{"activeId":"The active id of the pair","binStep":"The bin step in basis point, used to calculate log(1 + binStep / 10_000)","tokenX":"The address of the first token","tokenY":"The address of the second token"},"returns":{"pair":"The address of the newly created LBPair"}},"forceDecay(address)":{"details":"Needs to be called by the owner","params":{"pair":"The pair to force the decay"}},"getAllBinSteps()":{"returns":{"binStepWithPreset":"The list of binStep"}},"getAllLBPairs(address,address)":{"params":{"tokenX":"The first token of the pair","tokenY":"The second token of the pair"},"returns":{"lbPairsAvailable":"The list of available LBPairs"}},"getFeeRecipient()":{"returns":{"feeRecipient":"feeRecipient"}},"getFlashLoanFee()":{"returns":{"flashLoanFee":"The fee for flash loans, in 1e18"}},"getLBPairAtIndex(uint256)":{"params":{"index":"The index"},"returns":{"lbPair":"The address of the LBPair at index `index`"}},"getLBPairImplementation()":{"returns":{"lbPairImplementation":"The address of the LBPair implementation"}},"getLBPairInformation(address,address,uint256)":{"params":{"binStep":"The bin step of the LBPair","tokenA":"The address of the first token of the pair","tokenB":"The address of the second token of the pair"},"returns":{"lbPairInformation":"The LBPairInformation"}},"getMaxFlashLoanFee()":{"returns":{"maxFee":"maxFee"}},"getMinBinStep()":{"returns":{"minBinStep":"minBinStep"}},"getNumberOfLBPairs()":{"returns":{"lbPairNumber":"lbPairNumber"}},"getNumberOfQuoteAssets()":{"returns":{"numberOfQuoteAssets":"The number of quote assets"}},"getOpenBinSteps()":{"returns":{"openBinStep":"The list of open binSteps"}},"getPreset(uint256)":{"params":{"binStep":"The bin step of the preset"},"returns":{"baseFactor":"The base factor","decayPeriod":"The decay period of the preset","filterPeriod":"The filter period of the preset","isOpen":"Whether the preset is open or not","maxVolatilityAccumulator":"The max volatility accumulator of the preset","protocolShare":"The protocol share of the preset","reductionFactor":"The reduction factor of the preset","variableFeeControl":"The variable fee control of the preset"}},"getQuoteAssetAtIndex(uint256)":{"params":{"index":"The index"},"returns":{"asset":"The address of the quoteAsset at index `index`"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"params":{"account":"The address to check","role":"The role to check"},"returns":{"_0":"Whether the account has the role or not"}},"isQuoteAsset(address)":{"params":{"token":"The address of the asset"},"returns":{"isQuote":"Whether the token is a quote asset or not"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"removeLBHooksOnPair(address,address,uint16)":{"details":"Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist","params":{"binStep":"The bin step in basis point, used to calculate the price","tokenX":"The address of the first token","tokenY":"The address of the second token"}},"removePreset(uint16)":{"details":"Needs to be called by the owner Reverts if: - The binStep doesn't have a preset","params":{"binStep":"The bin step to remove"}},"removeQuoteAsset(address)":{"details":"Needs to be called by the owner Reverts if: - The quoteAsset was not whitelisted","params":{"quoteAsset":"The quote asset (e.g: NATIVE, USDC...)"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setFeeRecipient(address)":{"details":"Needs to be called by the owner Reverts if: - The feeRecipient is `address(0)` - The feeRecipient is the same as the current one","params":{"feeRecipient":"The address of the recipient"}},"setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)":{"details":"Needs to be called by the owner Reverts if: - The pair doesn't exist","params":{"baseFactor":"The base factor, used to calculate the base fee, baseFee = baseFactor * binStep","binStep":"The bin step in basis point, used to calculate the price","decayPeriod":"The period where the accumulator value is decayed, by the reduction factor","filterPeriod":"The period where the accumulator value is untouched, prevent spam","maxVolatilityAccumulator":"The max value of volatility accumulator","protocolShare":"The share of the fees received by the protocol","reductionFactor":"The reduction factor, used to calculate the reduction of the accumulator","tokenX":"The address of the first token","tokenY":"The address of the second token","variableFeeControl":"The variable fee control, used to control the variable fee, can be 0 to disable it"}},"setFlashLoanFee(uint256)":{"details":"Needs to be called by the owner Reverts if: - The flashLoanFee is the same as the current one - The flashLoanFee is above the maximum flash loan fee","params":{"flashLoanFee":"The value of the fee for flash loan"}},"setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)":{"details":"Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist - The hooks is `address(0)` or the hooks flags are all false","params":{"binStep":"The bin step in basis point, used to calculate the price","hooksParameters":"The hooks parameters","onHooksSetData":"The data to pass to the onHooksSet function","tokenX":"The address of the first token","tokenY":"The address of the second token"}},"setLBPairIgnored(address,address,uint16,bool)":{"details":"Needs to be called by the owner Reverts if: - The pair doesn't exist - The ignored state is already in the same state","params":{"binStep":"The bin step in basis point of the pair","ignored":"Whether to ignore (true) or not (false) the pair for routing","tokenX":"The address of the first token of the pair","tokenY":"The address of the second token of the pair"}},"setLBPairImplementation(address)":{"details":"Needs to be called by the owner","params":{"newLBPairImplementation":"The address of the implementation"}},"setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)":{"details":"Needs to be called by the owner Reverts if: - The binStep is lower than the minimum bin step","params":{"baseFactor":"The base factor, used to calculate the base fee, baseFee = baseFactor * binStep","binStep":"The bin step in basis point, used to calculate the price","decayPeriod":"The period where the accumulator value is decayed, by the reduction factor","filterPeriod":"The period where the accumulator value is untouched, prevent spam","maxVolatilityAccumulator":"The max value of the volatility accumulator","protocolShare":"The share of the fees received by the protocol","reductionFactor":"The reduction factor, used to calculate the reduction of the accumulator","variableFeeControl":"The variable fee control, used to control the variable fee, can be 0 to disable it"}},"setPresetOpenState(uint16,bool)":{"details":"Needs to be called by the owner Reverts if: - The binStep doesn't have a preset - The preset is already in the same state","params":{"binStep":"The bin step in basis point, used to calculate the price","isOpen":"Whether the preset is open or not"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"addQuoteAsset(address)":{"notice":"Function to add an asset to the whitelist of quote assets"},"constructor":{"notice":"Constructor"},"createLBPair(address,address,uint24,uint16)":{"notice":"Create a liquidity bin LBPair for tokenX and tokenY"},"forceDecay(address)":{"notice":"Function to force the decay of the volatility accumulator of a pair"},"getAllBinSteps()":{"notice":"View function to return the list of available binStep with a preset"},"getAllLBPairs(address,address)":{"notice":"View function to return all the LBPair of a pair of tokens"},"getFeeRecipient()":{"notice":"Get the protocol fee recipient"},"getFlashLoanFee()":{"notice":"Get the fee for flash loans, in 1e18"},"getLBPairAtIndex(uint256)":{"notice":"View function to return the LBPair created at index `index`"},"getLBPairImplementation()":{"notice":"Get the address of the LBPair implementation"},"getLBPairInformation(address,address,uint256)":{"notice":"Returns the LBPairInformation if it exists, if not, then the address 0 is returned. The order doesn't matter"},"getMaxFlashLoanFee()":{"notice":"Get the maximum fee percentage for flashLoans"},"getMinBinStep()":{"notice":"Get the minimum bin step a pair can have"},"getNumberOfLBPairs()":{"notice":"View function to return the number of LBPairs created"},"getNumberOfQuoteAssets()":{"notice":"View function to return the number of quote assets whitelisted"},"getOpenBinSteps()":{"notice":"View function to return the list of open binSteps"},"getPreset(uint256)":{"notice":"View function to return the different parameters of the preset Will revert if the preset doesn't exist"},"getQuoteAssetAtIndex(uint256)":{"notice":"View function to return the quote asset whitelisted at index `index`"},"hasRole(bytes32,address)":{"notice":"Returns whether the caller has the role or not, only the owner has the DEFAULT_ADMIN_ROLE"},"isQuoteAsset(address)":{"notice":"View function to return whether a token is a quotedAsset (true) or not (false)"},"removeLBHooksOnPair(address,address,uint16)":{"notice":"Function to remove the hooks contract from the pair"},"removePreset(uint16)":{"notice":"Remove the preset linked to a binStep"},"removeQuoteAsset(address)":{"notice":"Function to remove an asset from the whitelist of quote assets"},"setFeeRecipient(address)":{"notice":"Function to set the recipient of the fees. This address needs to be able to receive ERC20s"},"setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)":{"notice":"Function to set the fee parameter of a LBPair"},"setFlashLoanFee(uint256)":{"notice":"Function to set the flash loan fee"},"setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)":{"notice":"Function to set the hooks parameters of a pair"},"setLBPairIgnored(address,address,uint16,bool)":{"notice":"Function to set whether the pair is ignored or not for routing, it will make the pair unusable by the router"},"setLBPairImplementation(address)":{"notice":"Set the LBPair implementation address"},"setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)":{"notice":"Sets the preset parameters of a bin step"},"setPresetOpenState(uint16,bool)":{"notice":"Sets if the preset is open or not to be used by users"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LBFactory.sol":"LBFactory"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"}},"version":1},"id":43} \ No newline at end of file diff --git a/abi/LBFactory.t.sol/LiquidityBinFactoryTest.json b/abi/LBFactory.t.sol/LiquidityBinFactoryTest.json deleted file mode 100644 index b025cede..00000000 --- a/abi/LBFactory.t.sol/LiquidityBinFactoryTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_OpenPresets","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SetPreset","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"isOpen","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_AccessControl","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_AddQuoteAsset","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Constructor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CreateLBPair","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CreateLBPairFactoryUnlocked","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_ForceDecay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_GetAllLBPairs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RemovePreset","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RemoveQuoteAsset","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetFeeRecipient","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetFeesParametersOnPair","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetFlashLoanFee","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetLBPairIgnoredForRouting","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SetLBPairImplementation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_CreateLBPair","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_SetLBPairIgnoredForRouting","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_SetLBPairImplementation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setLBHooksParametersOnPair","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"FeeRecipientSet","inputs":[{"name":"oldRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"newRecipient","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FlashLoanFeeSet","inputs":[{"name":"oldFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newFlashLoanFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairCreated","inputs":[{"name":"tokenX","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenY","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"LBPair","type":"address","indexed":false,"internalType":"contract ILBPair"},{"name":"pid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LBPairIgnoredStateChanged","inputs":[{"name":"LBPair","type":"address","indexed":true,"internalType":"contract ILBPair"},{"name":"ignored","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"LBPairImplementationSet","inputs":[{"name":"oldLBPairImplementation","type":"address","indexed":false,"internalType":"contract ILBPair"},{"name":"LBPairImplementation","type":"address","indexed":false,"internalType":"contract ILBPair"}],"anonymous":false},{"type":"event","name":"PresetOpenStateChanged","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"isOpen","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"PresetRemoved","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PresetSet","inputs":[{"name":"binStep","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"baseFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filterPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decayPeriod","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"reductionFactor","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"variableFeeControl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolShare","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxVolatilityAccumulator","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"QuoteAssetAdded","inputs":[{"name":"_quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false},{"type":"event","name":"QuoteAssetRemoved","inputs":[{"name":"_quoteAsset","type":"address","indexed":true,"internalType":"contract IERC20"}],"anonymous":false},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StaticFeeParametersSet","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"baseFactor","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"filterPeriod","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"decayPeriod","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"reductionFactor","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"protocolShare","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c05162023f0f6200041160003960008181610f8901528181614d4801528181614dbf01528181614e9c01528181617690015281816177dd015281816178ae01526179bb015260008181610533015281816105aa01528181610b6701528181610bde01528181610db9015281816113010152818161137a01528181612530015281816125a9015281816137250152818161378b01528181613d9601528181613e0d01528181614b8301528181614bf101528181614cd601528181614ff2015281816150cf015281816157130152818161578a01528181616bd001528181616c47015281816171fa015281816172cd0152818161736b01528181617450015281816174ee01528181617c4201528181617cb9015281816189f001528181618a670152818161948b01526195040152600081816119e601528181611a0701528181611a5201528181612a1101528181612d0501528181612ed201528181612ef301528181613094015281816130b501528181617e1b01528181617e3c0152818161b06c0152818161b08d015261bf9e015262023f0f6000f3fe60806040523480156200001157600080fd5b5060043610620002aa5760003560e01c806366d9a9a0116200017c578063b5508aa911620000e9578063d0dffe291162000097578063e036a30d116200007a578063e036a30d14620004e5578063e20c9f7114620004ef578063fecaa22314620004f957600080fd5b8063d0dffe2914620004d1578063d0f12e3e14620004db57600080fd5b8063b89e023311620000cc578063b89e023314620004a6578063ba414fa614620004bd578063c7885e3914620004c757600080fd5b8063b5508aa91462000492578063b5963c0f146200049c57600080fd5b806390d5014a116200014757806391cc26f1116200012a57806391cc26f11462000467578063924525b51462000471578063a7aa85e9146200047b57600080fd5b806390d5014a1462000453578063916a17c6146200045d57600080fd5b806366d9a9a014620003eb5780638152762c146200040457806385226c81146200040e578063889be5b7146200042757600080fd5b80633e5e3c23116200021b5780634bac5c2011620001e657806360f523e211620001c957806360f523e214620003c0578063623e4ed714620003ca57806362f3d37814620003e157600080fd5b80634bac5c20146200039f57806352eabb5414620003a957600080fd5b80633e5e3c23146200035b5780633f7286f4146200036557806345b2695d146200036f57806349789ef9146200037957600080fd5b80631ed7831c11620002795780632d521af6116200025c5780632d521af6146200033d57806336885aae14620003475780633c322dd3146200035157600080fd5b80631ed7831c146200030b5780632ade3880146200032457600080fd5b806301ffc9a714620002af5780630a9254e414620002eb57806311ca724814620002f757806318b7ff781462000301575b600080fd5b620002d6620002c03660046200f257565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620002f562000510565b005b620002f56200051c565b620002f562000b50565b620003156200156d565b604051620002e291906200f283565b6200032e620015d1565b604051620002e291906200f326565b620002f56200171f565b620002f562001948565b620002f56200299c565b6200031562003131565b6200031562003193565b620002f5620031f5565b620003906200038a3660046200f3fe565b6200397f565b604051908152602001620002e2565b620002f5620039d4565b620002f5620003ba3660046200f468565b62004044565b620002f562004afd565b620002f5620003db3660046200f537565b62005108565b620002f5620059b6565b620003f562006642565b604051620002e291906200f557565b620002f56200672c565b6200041862006e78565b604051620002e291906200f60e565b6200043e620004383660046200f674565b62006f52565b60405162ffffff9091168152602001620002e2565b620002f562006faf565b620003f562007b41565b620002f562007c2b565b620002f562008803565b620002f56200048c3660046200f6cd565b62008e03565b62000418620092a4565b620002f56200937e565b620002d6620004b73660046200f537565b620095fa565b620002d66200967d565b620002f562009737565b620002f562009c73565b620002f56200aa1e565b620002f56200aeb2565b620003156200b40a565b620002f56200050a3660046200f76b565b6200b46c565b6200051a6200b771565b565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200058d57600080fd5b505af1158015620005a2573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200063a91906004016200f813565b600060405180830381600087803b1580156200065557600080fd5b505af11580156200066a573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea39150608401600060405180830381600087803b158015620006d357600080fd5b505af1158015620006e8573d6000803e3d6000fd5b5050601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663102a919160e21b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200077691906004016200f813565b600060405180830381600087803b1580156200079157600080fd5b505af1158015620007a6573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea39150608401600060405180830381600087803b1580156200080f57600080fd5b505af115801562000824573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562000894573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ba91906200f828565b506040805160048082526024820183526020820180516001600160e01b0316626ee66560e11b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb39262000914929091016200f813565b600060405180830381600087803b1580156200092f57600080fd5b505af115801562000944573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600060648401521692506369d56ea39150608401600060405180830381600087803b158015620009ad57600080fd5b505af1158015620009c2573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea39150608401600060405180830381600087803b15801562000a2b57600080fd5b505af115801562000a40573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316626ee66560e11b179052915163f28dceb360e01b815260008051602062023da7833981519152945063f28dceb3935062000a9b92016200f813565b600060405180830381600087803b15801562000ab657600080fd5b505af115801562000acb573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea391506084015b600060405180830381600087803b15801562000b3557600080fd5b505af115801562000b4a573d6000803e3d6000fd5b50505050565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562000bc157600080fd5b505af115801562000bd6573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166024820152600a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304fc2fe760e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062000c7591906004016200f813565b600060405180830381600087803b15801562000c9057600080fd5b505af115801562000ca5573d6000803e3d6000fd5b505060248054602054601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562000d15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d3b91906200f828565b5060248054604051634cd161d360e01b8152600a60048201526001928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b15801562000d8b57600080fd5b505af115801562000da0573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000e1557600080fd5b505af115801562000e2a573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562000e9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ec091906200f828565b5060248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015262000f729291169063704037bd90606401608060405180830381865afa15801562000f28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f4e91906200f929565b6040015160405180606001604052806023815260200162023de9602391396200cd99565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562000fe357600080fd5b505af115801562000ff8573d6000803e3d6000fd5b505060248054602254601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562001068573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108e91906200f828565b5060248054602254601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152620011409291169063704037bd90606401608060405180830381865afa158015620010f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200111c91906200f929565b6040015160405180606001604052806023815260200162023e51602391396200cd99565b60248054602154601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620011ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d291906200f828565b5060248054602154601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152620012849291169063704037bd90606401608060405180830381865afa1580156200123a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126091906200f929565b6040015160405180606001604052806023815260200162023e0c602391396200cdfd565b60248054604051634cd161d360e01b8152600a60048201526000928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b158015620012d357600080fd5b505af1158015620012e8573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200135d57600080fd5b505af115801562001372573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166024820152600a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304fc2fe760e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200141191906004016200f813565b600060405180830381600087803b1580156200142c57600080fd5b505af115801562001441573d6000803e3d6000fd5b505060248054602054601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af1158015620014b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d791906200f828565b5060248054601f54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af115801562001544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156a91906200f828565b50565b60606014805480602002602001604051908101604052809291908181526020018280548015620015c757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620015a8575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200171657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620016fe5783829060005260206000200180546200166a906200f948565b80601f016020809104026020016040519081016040528092919081815260200182805462001698906200f948565b8015620016e95780601f10620016bd57610100808354040283529160200191620016e9565b820191906000526020600020905b815481529060010190602001808311620016cb57829003601f168201915b50505050508152602001906001019062001648565b505050508152505081526020019060010190620015f5565b50505050905090565b6024546040516000916001600160a01b0316906200173d906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200176a573d6000803e3d6000fd5b5060405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620017cc57600080fd5b505af1158015620017e1573d6000803e3d6000fd5b5050602954604080516001600160a01b03928316815291851660208301527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e935001905060405180910390a16024805460405163b038478160e01b81526001600160a01b0384811660048301529091169163b03847819101600060405180830381600087803b1580156200187457600080fd5b505af115801562001889573d6000803e3d6000fd5b505050506200156a602460009054906101000a90046001600160a01b03166001600160a01b031663af3710656040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200190b91906200f828565b826040518060400160405280601f81526020017f746573745f5365744c4250616972496d706c656d656e746174696f6e3a3a31008152506200ce33565b60248054601c54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af1158015620019b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019de91906200f828565b905062001a3f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836280000068056bc75e2d6310000080600a8062008e03565b601d5462001a81906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000680340aad21b3b7000006200ce99565b62001aa660405180606001604052806060815260200160608152602001606081525090565b60408051600180825281830190925290602080830190803683375050508082528051600a919060009062001ade5762001ade6200f984565b6020908102919091010152604080516001808252818301909252908160200160208202803683375050506020820181905280516001919060009062001b275762001b276200f984565b6020026020010190600181111562001b435762001b436200f99a565b9081600181111562001b595762001b596200f99a565b905250604080516002808252606082018352909160208301908036833750505060408201819052601d5481516001600160a01b03909116919060009062001ba45762001ba46200f984565b6001600160a01b039283166020918202929092010152601c5460408301518051919092169190600190811062001bde5762001bde6200f984565b6001600160a01b03928316602091820292909201015260255416632a443fae6802b5e3af16b18800006000843062001c184260016200f9c6565b6040518663ffffffff1660e01b815260040162001c3a9594939291906200faf0565b6020604051808303816000875af115801562001c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c8091906200fb2e565b506040516372eb5f8160e11b81526064600482015260008051602062023da78339815191529063e5d6bf0290602401600060405180830381600087803b15801562001cca57600080fd5b505af115801562001cdf573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae9050678ac7230489e800006000843062001d104260016200f9c6565b6040518663ffffffff1660e01b815260040162001d329594939291906200faf0565b6020604051808303816000875af115801562001d52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d7891906200fb2e565b5050600080600080846001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa15801562001dbf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001de591906200fb48565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201529397509195509350915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562001e4d57600080fd5b505af115801562001e62573d6000803e3d6000fd5b50506024546001600160a01b031691507fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046905062001ea461138860026200fbb9565b62001eb2601e60026200fbb9565b62001ec161025860026200fbb9565b62001ed061138860026200fbb9565b62001edf619c4060026200fbe2565b62001eee6103e860026200fbb9565b62001efe6205573060026200fbe2565b6040805161ffff9889168152968816602088015294871686860152928616606086015262ffffff918216608086015290941660a08401529290921660c082015290519081900360e00190a2602454601c54601d546001600160a01b039283169263093ff7699281169116600a62001f7961138860026200fbb9565b62001f87601e60026200fbb9565b62001f9661025860026200fbb9565b62001fa561138860026200fbb9565b62001fb4619c4060026200fbe2565b62001fc36103e860026200fbb9565b62001fd36205573060026200fbe2565b6040516001600160e01b031960e08d901b1681526001600160a01b039a8b1660048201529990981660248a015261ffff96871660448a01529486166064890152928516608488015290841660a4870152831660c486015262ffffff90811660e486015291166101048401521661012482015261014401600060405180830381600087803b1580156200206457600080fd5b505af115801562002079573d6000803e3d6000fd5b5050505060008060008060008060008b6001600160a01b0316637ca0de306040518163ffffffff1660e01b815260040160e060405180830381865afa158015620020c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020ed91906200fc04565b9650965096509650965096509650620021558761ffff1661138860026200211591906200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a31008152506200cea8565b620021ac61ffff87166200216c601e60026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a32008152506200cea8565b6200220461ffff8616620021c461025860026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a33008152506200cea8565b6200225c61ffff85166200221c61138860026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a34008152506200cea8565b620022b662ffffff841662002275619c4060026200fbe2565b62ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a35008152506200cea8565b6200230e61ffff8316620022ce6103e860026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a36008152506200cea8565b6200236962ffffff8216620023286205573060026200fbe2565b62ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a37008152506200cea8565b50505050505050600080600080886001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa158015620023b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023db91906200fb48565b93509350935093506200242f8462ffffff168962ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a38008152506200cea8565b6200247b8362ffffff168862ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a39008152506200cea8565b620024c78262ffffff168762ffffff166040518060400160405280602081526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a31308152506200cea8565b620025178164ffffffffff168664ffffffffff166040518060400160405280602081526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a31318152506200cea8565b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200258c57600080fd5b505af1158015620025a1573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200263991906004016200f813565b600060405180830381600087803b1580156200265457600080fd5b505af115801562002669573d6000803e3d6000fd5b5050602454601c54601d546001600160a01b03928316945063093ff76993509082169116600a6200269e61138860026200fbb9565b620026ac601e60026200fbb9565b620026bb61025860026200fbb9565b620026ca61138860026200fbb9565b620026d9619c4060026200fbe2565b620026e86103e860026200fbb9565b620026f86205573060026200fbe2565b6040516001600160e01b031960e08d901b1681526001600160a01b039a8b1660048201529990981660248a015261ffff96871660448a01529486166064890152928516608488015290841660a4870152831660c486015262ffffff90811660e486015291166101048401521661012482015261014401600060405180830381600087803b1580156200278957600080fd5b505af11580156200279e573d6000803e3d6000fd5b5050602254601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663b65ee95360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200282c91906004016200f813565b600060405180830381600087803b1580156200284757600080fd5b505af11580156200285c573d6000803e3d6000fd5b5050602454602254601d546001600160a01b03928316945063093ff76993509082169116600a6200289161138860026200fbb9565b6200289f601e60026200fbb9565b620028ae61025860026200fbb9565b620028bd61138860026200fbb9565b620028cc619c4060026200fbe2565b620028db6103e860026200fbb9565b620028eb6205573060026200fbe2565b6040516001600160e01b031960e08d901b1681526001600160a01b039a8b1660048201529990981660248a015261ffff96871660448a01529486166064890152928516608488015290841660a4870152831660c486015262ffffff90811660e486015291166101048401521661012482015261014401600060405180830381600087803b1580156200297c57600080fd5b505af115801562002991573d6000803e3d6000fd5b505050505050505050565b602454604080516301332c8360e61b8152905162002a6c926001600160a01b031691634ccb20c09160048083019260209291908290030181865afa158015620029e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a0f91906200f828565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a31000000000000000000000000008152506200ce33565b60245460408051637ec8615f60e11b8152905162002b23926001600160a01b03169163fd90c2be9160048083019260209291908290030181865afa15801562002ab9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002adf91906200fb2e565b6602d79883d200006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a32000000000000000000000000008152506200cea8565b6024546040805163af37106560e01b8152905162002bdf926001600160a01b03169163af3710659160048083019260209291908290030181865afa15801562002b70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9691906200f828565b60295460408051808201909152601381527f746573745f436f6e7374727563746f723a3a330000000000000000000000000060208201526001600160a01b03909116906200ce33565b6024546040805163701ab8c160e01b8152905162002c90926001600160a01b03169163701ab8c19160048083019260209291908290030181865afa15801562002c2c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c5291906200fb2e565b60016040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a34000000000000000000000000008152506200cea8565b602454604080516301332c8360e61b8152905162002d60926001600160a01b031691634ccb20c09160048083019260209291908290030181865afa15801562002cdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d0391906200f828565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a35000000000000000000000000008152506200ce33565b6024546040805163233a6a8760e21b8152905162002e18926001600160a01b031691638ce9aa1c9160048083019260209291908290030181865afa15801562002dad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002dd391906200fb2e565b67016345785d8a00006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a36000000000000000000000000008152506200cea8565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562002e7657600080fd5b505af115801562002e8b573d6000803e3d6000fd5b505060408051600081526602d79883d2000060208201527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50935001905060405180910390a17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006602d79883d2000060405162002f28906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562002f63573d6000803e3d6000fd5b50506024546040805163233a6a8760e21b815290516000926001600160a01b031691638ce9aa1c9160048083019260209291908290030181865afa15801562002fb0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fd691906200fb2e565b905060008051602062023da783398151915263f28dceb3635e8988c160e01b620030028460016200f9c6565b60405160248101919091526044810185905260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200305e916004016200f813565b600060405180830381600087803b1580156200307957600080fd5b505af11580156200308e573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000826001620030e391906200f9c6565b604051620030f1906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200312c573d6000803e3d6000fd5b505050565b60606016805480602002602001604051908101604052809291908181526020018280548015620015c7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620015a8575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620015c7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620015a8575050505050905090565b6024546001600160a01b031663379ee80362003214600a60016200fcaf565b6040516001600160e01b031960e084901b16815261ffff909116600482015261138860248201819052601e604483015261025860648301526084820152619c4060a48201526103e860c48201526205573060e4820152600061010482015261012401600060405180830381600087803b1580156200329157600080fd5b505af1158015620032a6573d6000803e3d6000fd5b50506024546001600160a01b0316915063379ee8039050620032cb6001600a6200fccd565b6040516001600160e01b031960e084901b16815261ffff909116600482015261138860248201819052601e604483015261025860648301526084820152619c4060a48201526103e860c48201526205573060e4820152600061010482015261012401600060405180830381600087803b1580156200334857600080fd5b505af11580156200335d573d6000803e3d6000fd5b5050505062003422602460009054906101000a90046001600160a01b03166001600160a01b0316635b35875c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015620033b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033e391908101906200fd85565b5160036040518060400160405280601481526020017f746573745f52656d6f76655072657365743a3a310000000000000000000000008152506200cea8565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200348057600080fd5b505af115801562003495573d6000803e3d6000fd5b5050604051600a92507fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be139150600090a26024805460405163e203a31f60e01b8152600a60048201526001600160a01b039091169163e203a31f9101600060405180830381600087803b1580156200350b57600080fd5b505af115801562003520573d6000803e3d6000fd5b50505050620035e5602460009054906101000a90046001600160a01b03166001600160a01b0316635b35875c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200357c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035a691908101906200fd85565b5160026040518060400160405280601481526020017f746573745f52656d6f76655072657365743a3a320000000000000000000000008152506200cea8565b60408051600a60248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200365191906004016200f813565b600060405180830381600087803b1580156200366c57600080fd5b505af115801562003681573d6000803e3d6000fd5b505060248054604051632aaf12cf60e21b8152600a60048201526001600160a01b03909116935063aabc4b3c92500161010060405180830381865afa158015620036cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f591906200fdbe565b505060405163ca669fa760e01b815260008051602062023da7833981519152965063ca669fa795506200375394507f0000000000000000000000000000000000000000000000000000000000000000935060040191506200f7ff9050565b600060405180830381600087803b1580156200376e57600080fd5b505af115801562003783573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200381b91906004016200f813565b600060405180830381600087803b1580156200383657600080fd5b505af11580156200384b573d6000803e3d6000fd5b50506024805460405163e203a31f60e01b8152600a60048201526001600160a01b03909116935063e203a31f925001600060405180830381600087803b1580156200389557600080fd5b505af1158015620038aa573d6000803e3d6000fd5b505060408051600a60248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200391a91906004016200f813565b600060405180830381600087803b1580156200393557600080fd5b505af11580156200394a573d6000803e3d6000fd5b50506024805460405163e203a31f60e01b8152600a60048201526001600160a01b03909116935063e203a31f92500162000b1a565b6000808360ff1611801562003997575060008260ff16115b620039ae57620039a882846200fe2b565b620039c8565b6001620039bc83856200fe2b565b620039c891906200fe47565b60ff1690505b92915050565b60245460408051634062830f60e11b815290516000926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562003a1f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a4591906200fb2e565b60248054601d546040516313b90c2160e11b81526001600160a01b03918216600482015293945062003afd9391169163277218429101602060405180830381865afa15801562003a99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003abf91906200fe63565b60016040518060400160405280601881526020017f746573745f52656d6f766551756f746541737365743a3a3100000000000000008152506200cee0565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562003b5b57600080fd5b505af115801562003b70573d6000803e3d6000fd5b5050601d546040516001600160a01b0390911692507f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb39150600090a260248054601d5460405163ddbfd94160e01b81526001600160a01b03918216600482015291169163ddbfd9419101600060405180830381600087803b15801562003bf557600080fd5b505af115801562003c0a573d6000803e3d6000fd5b505060248054601d546040516313b90c2160e11b81526001600160a01b03918216600482015262003cc395509116925063277218429101602060405180830381865afa15801562003c5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c8591906200fe63565b60006040518060400160405280601881526020017f746573745f52656d6f766551756f746541737365743a3a3200000000000000008152506200cee0565b60245460408051634062830f60e11b8152905162003d7f926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562003d10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d3691906200fb2e565b62003d436001846200fe83565b6040518060400160405280601881526020017f746573745f52656d6f766551756f746541737365743a3a3300000000000000008152506200cea8565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562003df057600080fd5b505af115801562003e05573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062003e9d91906004016200f813565b600060405180830381600087803b15801562003eb857600080fd5b505af115801562003ecd573d6000803e3d6000fd5b505060248054601d5460405163ddbfd94160e01b81526001600160a01b0391821660048201529116935063ddbfd941925001600060405180830381600087803b15801562003f1a57600080fd5b505af115801562003f2f573d6000803e3d6000fd5b5050601d54604080516001600160a01b0390921660248084019190915281518084039091018152604490920181526020820180516001600160e01b0316638e888ef360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062003faa91906004016200f813565b600060405180830381600087803b15801562003fc557600080fd5b505af115801562003fda573d6000803e3d6000fd5b505060248054601d5460405163ddbfd94160e01b81526001600160a01b0391821660048201529116935063ddbfd9419250015b600060405180830381600087803b1580156200402857600080fd5b505af11580156200403d573d6000803e3d6000fd5b5050505050565b620040d08961ffff16602460009054906101000a90046001600160a01b03166001600160a01b031663701ab8c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015620040a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040c791906200fb2e565b61ffff6200cf18565b9850620040f261ffff88166000620040ec6001610fff6200fe83565b6200cf18565b96506200411761ffff87166200410a8960016200fcaf565b61ffff16610fff6200cf18565b95506200412d8561ffff1660006127106200cf18565b9450620041448462ffffff1660006127106200cf18565b93506200415a8361ffff1660006109c46200cf18565b9250620041728262ffffff166000620fffff6200cf18565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290925060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620041d357600080fd5b505af1158015620041e8573d6000803e3d6000fd5b50506040805161ffff8c811682528b811660208301528a811682840152898116606083015262ffffff898116608084015288821660a0840152871660c08301529151918d1693507f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28925081900360e00190a260405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620042b857600080fd5b505af1158015620042cd573d6000803e3d6000fd5b5050604051831515925061ffff8c1691507f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a36024805460405163379ee80360e01b815261ffff808d166004830152808c1693820193909352828a1660448201528289166064820152828816608482015262ffffff80881660a483015292861660c482015291841660e48301528215156101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200439657600080fd5b505af1158015620043ab573d6000803e3d6000fd5b5050505061ffff8916600a146200462357602454604080516316cd61d760e21b8152905162004472926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004409573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200443391908101906200fd85565b5160026040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3100000000000000000000008152506200cea8565b602454604080516316cd61d760e21b8152905162004548926001600160a01b031691635b35875c9160048083019260009291908290030181865afa158015620044bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620044e991908101906200fd85565b600081518110620044fe57620044fe6200f984565b6020026020010151600a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3200000000000000000000008152506200cea8565b602454604080516316cd61d760e21b815290516200461d926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004595573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620045bf91908101906200fd85565b600181518110620045d457620045d46200f984565b60200260200101518a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3300000000000000000000008152506200cea8565b620047ae565b602454604080516316cd61d760e21b81529051620046d9926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004670573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200469a91908101906200fd85565b5160016040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3400000000000000000000008152506200cea8565b602454604080516316cd61d760e21b81529051620047ae926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004726573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200475091908101906200fd85565b6000815181106200476557620047656200f984565b60200260200101518a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3500000000000000000000008152506200cea8565b60248054604051632aaf12cf60e21b815261ffff8c1660048201526000928392839283926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562004804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200482a91906200fdbe565b5050505093509350935093506200487c848d61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3600000000000000000000008152506200cea8565b620048c2838c61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3700000000000000000000008152506200cea8565b62004908828b61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3800000000000000000000008152506200cea8565b6200494e818a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3900000000000000000000008152506200cea8565b505060248054604051632aaf12cf60e21b815261ffff8e16600482015260009450849350839283926001600160a01b03169163aabc4b3c910161010060405180830381865afa158015620049a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049cc91906200fdbe565b97509750975097505050505062004a1f848962ffffff166040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3130000000000000000000008152506200cea8565b62004a65838861ffff166040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3131000000000000000000008152506200cea8565b62004aac828762ffffff166040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3132000000000000000000008152506200cea8565b62004aee81866040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3133000000000000000000008152506200cee0565b50505050505050505050505050565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562004b5b57600080fd5b505af115801562004b70573d6000803e3d6000fd5b5050604080513081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721935001905060405180910390a16024805460405163e74b981b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529091169163e74b981b9101600060405180830381600087803b15801562004c3d57600080fd5b505af115801562004c52573d6000803e3d6000fd5b5050505062004d31602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004cae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cd491906200f828565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601781526020017f746573745f536574466565526563697069656e743a3a310000000000000000008152506200ce33565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562004da257600080fd5b505af115801562004db7573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062004e4f91906004016200f813565b600060405180830381600087803b15801562004e6a57600080fd5b505af115801562004e7f573d6000803e3d6000fd5b50506024805460405163e74b981b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116935063e74b981b925001600060405180830381600087803b15801562004eea57600080fd5b505af115801562004eff573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316632573cfb960e21b179052915163f28dceb360e01b815260008051602062023da7833981519152945063f28dceb3935062004f5b92016200f813565b600060405180830381600087803b15801562004f7657600080fd5b505af115801562004f8b573d6000803e3d6000fd5b50506024805460405163e74b981b60e01b8152600060048201526001600160a01b03909116935063e74b981b925001600060405180830381600087803b15801562004fd557600080fd5b505af115801562004fea573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316634fcea97160e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200508291906004016200f813565b600060405180830381600087803b1580156200509d57600080fd5b505af1158015620050b2573d6000803e3d6000fd5b50506024805460405163e74b981b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116935063e74b981b92500162000b1a565b6024546040805163701ab8c160e01b815290516000926001600160a01b03169163701ab8c19160048083019260209291908290030181865afa15801562005153573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200517991906200fb2e565b905061ffff6200518d83821683836200cf18565b925060091961ffff841601620051ee57620051e8620051ac84620095fa565b6040518060400160405280601781526020017f7465737446757a7a5f4f70656e507265736574733a3a310000000000000000008152506200cd99565b6200530d565b6040805161ffff851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200525d91906004016200f813565b600060405180830381600087803b1580156200527857600080fd5b505af11580156200528d573d6000803e3d6000fd5b505060248054604051632aaf12cf60e21b815261ffff881660048201526001600160a01b03909116935063aabc4b3c92500161010060405180830381865afa158015620052de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200530491906200fdbe565b50505050505050505b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200536b57600080fd5b505af115801562005380573d6000803e3d6000fd5b50506040516001925061ffff861691507f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a36024805460405163379ee80360e01b815261ffff86166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260016101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200544157600080fd5b505af115801562005456573d6000803e3d6000fd5b50505050620054a56200546984620095fa565b6040518060400160405280601781526020017f7465737446757a7a5f4f70656e507265736574733a3a320000000000000000008152506200cdfd565b6040805160048082526024820183526020820180516001600160e01b03166311be38db60e11b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb392620054ff929091016200f813565b600060405180830381600087803b1580156200551a57600080fd5b505af11580156200552f573d6000803e3d6000fd5b505060248054604051634cd161d360e01b815261ffff881660048201526001928101929092526001600160a01b03169250634cd161d39150604401600060405180830381600087803b1580156200558557600080fd5b505af11580156200559a573d6000803e3d6000fd5b505060405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da7833981519152925063491cc7c29150608401600060405180830381600087803b158015620055fc57600080fd5b505af115801562005611573d6000803e3d6000fd5b50506040516000925061ffff861691507f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd908390a360248054604051634cd161d360e01b815261ffff861660048201526000928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b1580156200569857600080fd5b505af1158015620056ad573d6000803e3d6000fd5b50505050620056fc620056c084620095fa565b6040518060400160405280601781526020017f7465737446757a7a5f4f70656e507265736574733a3a330000000000000000008152506200cd99565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200576d57600080fd5b505af115801562005782573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200581a91906004016200f813565b600060405180830381600087803b1580156200583557600080fd5b505af11580156200584a573d6000803e3d6000fd5b505060248054604051634cd161d360e01b815261ffff881660048201526001928101929092526001600160a01b03169250634cd161d39150604401600060405180830381600087803b158015620058a057600080fd5b505af1158015620058b5573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b03166311be38db60e11b179052915163f28dceb360e01b815260008051602062023da7833981519152945063f28dceb393506200591192016200f813565b600060405180830381600087803b1580156200592c57600080fd5b505af115801562005941573d6000803e3d6000fd5b505060248054604051634cd161d360e01b815261ffff881660048201526000928101929092526001600160a01b03169250634cd161d391506044015b600060405180830381600087803b1580156200599857600080fd5b505af1158015620059ad573d6000803e3d6000fd5b50505050505050565b602954601e54601d546040516bffffffffffffffffffffffff19606093841b811660208301529190921b166034820152600560f11b604882015260009162005a6a916001600160a01b0390911690604a0160408051808303601f19018152828252601d54601e546001600160a01b0391821660208601521691830191909152600a60608301529060800160408051601f1981840301815291905280516020909101206024546001600160a01b03166200cf6a565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562005acb57600080fd5b505af115801562005ae0573d6000803e3d6000fd5b5050601d54601e54604080516001600160a01b03878116825260006020830152600a9650938416945092909116917f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff910160405180910390a460248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af115801562005ba9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bcf91906200f828565b905062005c8d602460009054906101000a90046001600160a01b03166001600160a01b0316634e937c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005c29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c4f91906200fb2e565b60016040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a310000000000000000000000008152506200cea8565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015260009291169063704037bd90606401608060405180830381865afa15801562005cf2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d1891906200f929565b905062005d69816000015161ffff16600a61ffff166040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a320000000000000000000000008152506200cea8565b62005daf8160200151836040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a330000000000000000000000008152506200ce33565b62005df481604001516040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a340000000000000000000000008152506200cdfd565b62005e3981606001516040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a350000000000000000000000008152506200cd99565b60248054601e54601d54604051636622e0d760e01b81526001600160a01b0392831660048201529082169381019390935262005f0292911690636622e0d790604401600060405180830381865afa15801562005e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005ec391908101906200fe99565b5160016040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a360000000000000000000000008152506200cea8565b60248054601e54601d54604051636622e0d760e01b81526001600160a01b0392831660048201529082169381019390935262005fea92911690636622e0d790604401600060405180830381865afa15801562005f62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005f8c91908101906200fe99565b60008151811062005fa15762005fa16200f984565b602002602001015160200151836040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a370000000000000000000000008152506200ce33565b6200609c826001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200602d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200605391906200f828565b60245460408051808201909152601481527f746573745f4372656174654c42506169723a3a3800000000000000000000000060208201526001600160a01b03909116906200ce33565b6200614e826001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620060df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200610591906200f828565b601e5460408051808201909152601481527f746573745f4372656174654c42506169723a3a3900000000000000000000000060208201526001600160a01b03909116906200ce33565b62006200826001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061b791906200f828565b601d5460408051808201909152601581527f746573745f4372656174654c42506169723a3a3130000000000000000000000060208201526001600160a01b03909116906200ce33565b6000806000806000806000886001600160a01b0316637ca0de306040518163ffffffff1660e01b815260040160e060405180830381865afa1580156200624a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200627091906200fc04565b9650965096509650965096509650620062ca8761ffff1661138861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313100000000000000000000008152506200cea8565b620063158661ffff16601e61ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313200000000000000000000008152506200cea8565b620063618561ffff1661025861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313300000000000000000000008152506200cea8565b620063ad8461ffff1661138861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313400000000000000000000008152506200cea8565b620063fb8362ffffff16619c4062ffffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313500000000000000000000008152506200cea8565b620064478261ffff166103e861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313600000000000000000000008152506200cea8565b620064968162ffffff166205573062ffffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313700000000000000000000008152506200cea8565b6000806000808c6001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa158015620064db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200650191906200fb48565b9350935093509350620065518462ffffff1660006040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313800000000000000000000008152506200cea8565b620065998362ffffff1660006040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313900000000000000000000008152506200cea8565b620065e88262ffffff166280000062ffffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a323000000000000000000000008152506200cea8565b620066328164ffffffffff1660006040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a323100000000000000000000008152506200cea8565b5050505050505050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620017165760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200671357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620066d45790505b5050505050815250508152602001906001019062006666565b60245460408051634062830f60e11b815290516000926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562006777573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200679d91906200fb2e565b905060006012604051620067b1906200f1ce565b60ff9091168152602001604051809103906000f080158015620067d8573d6000803e3d6000fd5b50602480546040516313b90c2160e11b81526001600160a01b0380851660048301529394506200688f939091169163277218429101602060405180830381865afa1580156200682b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200685191906200fe63565b60006040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3100000000000000000000008152506200cee0565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620068ed57600080fd5b505af115801562006902573d6000803e3d6000fd5b50506040516001600160a01b03841692507f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e9150600090a260248054604051635a44092360e01b81526001600160a01b03848116600483015290911691635a4409239101600060405180830381600087803b1580156200698157600080fd5b505af115801562006996573d6000803e3d6000fd5b5050602480546040516313b90c2160e11b81526001600160a01b03868116600483015262006a4d9550909116925063277218429101602060405180830381865afa158015620069e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a0f91906200fe63565b60016040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3200000000000000000000008152506200cee0565b60245460408051634062830f60e11b8152905162006b09926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562006a9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ac091906200fb2e565b62006acd8460016200f9c6565b6040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3300000000000000000000008152506200cea8565b60248054604051630752092b60e01b81526004810185905262006bb99284926001600160a01b031691630752092b9101602060405180830381865afa15801562006b57573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b7d91906200f828565b6040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3400000000000000000000008152506200ce33565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562006c2a57600080fd5b505af115801562006c3f573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062006cd791906004016200f813565b600060405180830381600087803b15801562006cf257600080fd5b505af115801562006d07573d6000803e3d6000fd5b505060248054604051635a44092360e01b81526001600160a01b0386811660048301529091169350635a440923925001600060405180830381600087803b15801562006d5257600080fd5b505af115801562006d67573d6000803e3d6000fd5b5050604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166303ce0ad960e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062006ddf91906004016200f813565b600060405180830381600087803b15801562006dfa57600080fd5b505af115801562006e0f573d6000803e3d6000fd5b505060248054604051635a44092360e01b81526001600160a01b0386811660048301529091169350635a4409239250015b600060405180830381600087803b15801562006e5b57600080fd5b505af115801562006e70573d6000803e3d6000fd5b505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200171657838290600052602060002001805462006ebe906200f948565b80601f016020809104026020016040519081016040528092919081815260200182805462006eec906200f948565b801562006f3d5780601f1062006f115761010080835404028352916020019162006f3d565b820191906000526020600020905b81548152906001019060200180831162006f1f57829003601f168201915b50505050508152602001906001019062006e9c565b60008062006f668462ffffff87166200f9c6565b905060008360ff161162006f7b578062006f97565b62006f8a60ff8416826200fe83565b62006f979060016200f9c6565b905062006fa4816200cf92565b9150505b9392505050565b6024546040805163a217fddf60e01b815290516000926001600160a01b03169163a217fddf9160048083019260209291908290030181865afa15801562006ffa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200702091906200fb2e565b90506000602460009054906101000a90046001600160a01b03166001600160a01b0316631af5bacc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200709e91906200fb2e565b60248054604051632474521560e21b815260048101869052309281019290925291925062007159916001600160a01b0316906391d1485490604401602060405180830381865afa158015620070f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200711d91906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3100000000000000000000008152506200cdfd565b602454604080516306bd6eb360e21b81529051620072a2926001600160a01b0316916391d14854918391631af5bacc9160048083019260209291908290030181865afa158015620071ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071d491906200fb2e565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820152604401602060405180830381865afa15801562007240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200726691906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3200000000000000000000008152506200cd99565b602454604051632f2ff15d60e01b81526001600160a01b0390911690632f2ff15d90620073079084907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b600060405180830381600087803b1580156200732257600080fd5b505af115801562007337573d6000803e3d6000fd5b5050602454604051632474521560e21b81526200742593506001600160a01b0390911691506391d1485490620073a59085907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa158015620073c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620073e991906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3300000000000000000000008152506200cdfd565b60245460405163d547741f60e01b81526001600160a01b039091169063d547741f906200748a9084907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b600060405180830381600087803b158015620074a557600080fd5b505af1158015620074ba573d6000803e3d6000fd5b5050602454604051632474521560e21b8152620075a893506001600160a01b0390911691506391d1485490620075289085907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200756c91906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3400000000000000000000008152506200cd99565b604051630618f58760e51b8152633e3253cf60e11b600482015260008051602062023da78339815191529063c31eb0e090602401600060405180830381600087803b158015620075f757600080fd5b505af11580156200760c573d6000803e3d6000fd5b505060248054604051632f2ff15d60e01b81526000600482015230928101929092526001600160a01b03169250632f2ff15d9150604401600060405180830381600087803b1580156200765e57600080fd5b505af115801562007673573d6000803e3d6000fd5b50506024805460405163f2fde38b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116935063f2fde38b925001600060405180830381600087803b158015620076de57600080fd5b505af1158015620076f3573d6000803e3d6000fd5b505060248054604051632474521560e21b8152600481018790523092810192909252620077af93506001600160a01b031691506391d1485490604401602060405180830381865afa1580156200774d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200777391906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3500000000000000000000008152506200cdfd565b602454604051632474521560e21b815262007897916001600160a01b0316906391d1485490620078179086907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200785b91906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3600000000000000000000008152506200cd99565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200790857600080fd5b505af11580156200791d573d6000803e3d6000fd5b50505050602460009054906101000a90046001600160a01b03166001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200797257600080fd5b505af115801562007987573d6000803e3d6000fd5b5050602454604051632474521560e21b815262007a7593506001600160a01b0390911691506391d1485490620079f59086907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007a13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a3991906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3700000000000000000000008152506200cdfd565b602454604051632474521560e21b815262007b3d916001600160a01b0316906391d148549062007abd90869030906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007adb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b0191906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3800000000000000000000008152506200cd99565b5050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620017165760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562007c1257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162007bd35790505b5050505050815250508152602001906001019062007b65565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562007c9c57600080fd5b505af115801562007cb1573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166024820152600a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304fc2fe760e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062007d5091906004016200f813565b600060405180830381600087803b15801562007d6b57600080fd5b505af115801562007d80573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562007df0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e1691906200f828565b5060007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006602d79883d2000060405162007e71906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562007eac573d6000803e3d6000fd5b5060408051600a60248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815291925060008051602062023da78339815191529163f28dceb39162007f1b916004016200f813565b600060405180830381600087803b15801562007f3657600080fd5b505af115801562007f4b573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af115801562007fb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fdd91906200f828565b5060405163379ee80360e01b8152600a600482015261138860248201819052601e604483015261025860648301526084820152619c4060a48201526103e860c48201526205573060e482015260006101048201526001600160a01b0382169063379ee8039061012401600060405180830381600087803b1580156200806157600080fd5b505af115801562008076573d6000803e3d6000fd5b5050601d54604080516001600160a01b0390921660248084019190915281518084039091018152604490920181526020820180516001600160e01b0316638e888ef360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb39250620080f191906004016200f813565b600060405180830381600087803b1580156200810c57600080fd5b505af115801562008121573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af11580156200818d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620081b391906200f828565b50601d54604051635a44092360e01b81526001600160a01b03918216600482015290821690635a44092390602401600060405180830381600087803b158015620081fc57600080fd5b505af115801562008211573d6000803e3d6000fd5b5050601d54604080516001600160a01b0390921660248084019190915281518084039091018152604490920181526020820180516001600160e01b0316632f9b185360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200828c91906004016200f813565b600060405180830381600087803b158015620082a757600080fd5b505af1158015620082bc573d6000803e3d6000fd5b5050601d5460405163659ac74b60e01b81526001600160a01b03918216600482018190526024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af115801562008324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200834a91906200f828565b506040805160048082526024820183526020820180516001600160e01b0316632573cfb960e21b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb392620083a5929091016200f813565b600060405180830381600087803b158015620083c057600080fd5b505af1158015620083d5573d6000803e3d6000fd5b5050601d5460405163659ac74b60e01b8152600060048201526001600160a01b039182166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af11580156200843d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200846391906200f828565b506040805160048082526024820183526020820180516001600160e01b03166328b4fcf960e21b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb392620084be929091016200f813565b600060405180830381600087803b158015620084d957600080fd5b505af1158015620084ee573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af11580156200855a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200858091906200f828565b50806001600160a01b031663b0384781826040516200859f906200f1b2565b6001600160a01b039091168152602001604051809103906000f080158015620085cc573d6000803e3d6000fd5b506040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200860f57600080fd5b505af115801562008624573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af115801562008690573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620086b691906200f828565b50601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663cb27a43560e01b1790525163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200874191906004016200f813565b600060405180830381600087803b1580156200875c57600080fd5b505af115801562008771573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af1158015620087dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b3d91906200f828565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526103e89060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200886557600080fd5b505af11580156200887a573d6000803e3d6000fd5b5050604080516602d79883d200008152602081018590527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50935001905060405180910390a16024805460405163e92d0d5d60e01b8152600481018490526001600160a01b039091169163e92d0d5d9101600060405180830381600087803b1580156200890557600080fd5b505af11580156200891a573d6000803e3d6000fd5b50505050620089d9602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008976573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200899c91906200fb2e565b826040518060400160405280601781526020017f746573745f536574466c6173684c6f616e4665653a3a310000000000000000008152506200cea8565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562008a4a57600080fd5b505af115801562008a5f573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062008af791906004016200f813565b600060405180830381600087803b15801562008b1257600080fd5b505af115801562008b27573d6000803e3d6000fd5b50506024805460405163e92d0d5d60e01b81526602d79883d2000060048201526001600160a01b03909116935063e92d0d5d925001600060405180830381600087803b15801562008b7757600080fd5b505af115801562008b8c573d6000803e3d6000fd5b505060408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316631baa31e960e21b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062008bf991906004016200f813565b600060405180830381600087803b15801562008c1457600080fd5b505af115801562008c29573d6000803e3d6000fd5b50506024805460405163e92d0d5d60e01b8152600481018690526001600160a01b03909116935063e92d0d5d925001600060405180830381600087803b15801562008c7357600080fd5b505af115801562008c88573d6000803e3d6000fd5b505050506000602460009054906101000a90046001600160a01b03166001600160a01b0316638ce9aa1c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008ce2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d0891906200fb2e565b905060008051602062023da783398151915263f28dceb3635e8988c160e01b62008d348460016200f9c6565b60405160248101919091526044810185905260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262008d90916004016200f813565b600060405180830381600087803b15801562008dab57600080fd5b505af115801562008dc0573d6000803e3d6000fd5b50506024546001600160a01b0316915063e92d0d5d905062008de48360016200f9c6565b6040518263ffffffff1660e01b815260040162006e4091815260200190565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008e44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e6a91906200f828565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008ead573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ed391906200f828565b905062008ee2828b886200ce99565b62008eef818b876200ce99565b600062008efd85856200397f565b905060008167ffffffffffffffff81111562008f1d5762008f1d6200f848565b60405190808252806020026020018201604052801562008f47578160200160208202803683370190505b50905060005b828110156200904657600062008f658b838962006f52565b905060008b62ffffff168262ffffff161015801562008f87575060008960ff16115b62008f9457600062008fb5565b62008fb562008faf60ff8b16670de0b6b3a76400006200ff4b565b6200cfbe565b905060008c62ffffff168362ffffff161115801562008fd7575060008960ff16115b62008fe457600062008fff565b62008fff62008faf60ff8b16670de0b6b3a76400006200ff4b565b90506200900e8282856200cfea565b8585815181106200902357620090236200f984565b602002602001018181525050505050806200903e906200ff62565b905062008f4d565b506040516303223eab60e11b81526001600160a01b038d16600482015260008051602062023da7833981519152906306447d5690602401600060405180830381600087803b1580156200909857600080fd5b505af1158015620090ad573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562009101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200912791906200fe63565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562009178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200919e91906200fe63565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620091fe57600080fd5b505af115801562009213573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162009249939291906200ff7e565b6000604051808303816000875af115801562009269573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200929391908101906200ffe4565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001716578382906000526020600020018054620092ea906200f948565b80601f016020809104026020016040519081016040528092919081815260200182805462009318906200f948565b8015620093695780601f106200933d5761010080835404028352916020019162009369565b820191906000526020600020905b8154815290600101906020018083116200934b57829003601f168201915b505050505081526020019060010190620092c8565b60248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af1158015620093ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200941491906200f828565b60248054604051633c78a94160e01b81526001600160a01b038085166004830152939450921691633c78a9419101600060405180830381600087803b1580156200945d57600080fd5b505af115801562009472573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b158015620094e757600080fd5b505af1158015620094fc573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200959491906004016200f813565b600060405180830381600087803b158015620095af57600080fd5b505af1158015620095c4573d6000803e3d6000fd5b505060248054604051633c78a94160e01b81526001600160a01b0386811660048301529091169350633c78a9419250016200400d565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa1580156200964a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200967091906200fdbe565b9998505050505050505050565b60075460009060ff161562009696575060075460ff1690565b604051630667f9d760e41b815260008051602062023da7833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200970a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200973091906200fb2e565b1415905090565b6024805460405163379ee80360e01b815260056004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b158015620097bf57600080fd5b505af1158015620097d4573d6000803e3d6000fd5b50506024805460405163379ee80360e01b815260146004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b0316925063379ee803915061012401600060405180830381600087803b1580156200986057600080fd5b505af115801562009875573d6000803e3d6000fd5b505060248054602254601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600560648401526000945016915063659ac74b906084016020604051808303816000875af1158015620098e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200990e91906200f828565b60248054602254601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082169381019390935262800000604484015260146064840152929350600092169063659ac74b906084016020604051808303816000875af115801562009980573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620099a691906200f828565b60248054601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082169381019390935262800000604484015260056064840152929350919091169063659ac74b906084016020604051808303816000875af115801562009a18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a3e91906200f828565b5060248054602254601d54604051636622e0d760e01b81526001600160a01b03928316600482015290821693810193909352600092911690636622e0d790604401600060405180830381865afa15801562009a9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262009ac791908101906200fe99565b905062009b0d815160026040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3100000000000000000000008152506200cea8565b60008160008151811062009b255762009b256200f984565b6020026020010151905062009b758160200151856040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3200000000000000000000008152506200ce33565b62009bc0816000015161ffff1660056040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3300000000000000000000008152506200cea8565b60008260018151811062009bd85762009bd86200f984565b6020026020010151905062009c288160200151856040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3400000000000000000000008152506200ce33565b6200403d816000015161ffff1660146040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3500000000000000000000008152506200cea8565b602454604080516306bd6eb360e21b8152905160008051602062023da78339815191529263f28dceb39263e2517d3f60e01b9230926001600160a01b031691631af5bacc9160048083019260209291908290030181865afa15801562009cdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009d0391906200fb2e565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262009d65916004016200f813565b600060405180830381600087803b15801562009d8057600080fd5b505af115801562009d95573d6000803e3d6000fd5b505060248054601e54601d546040805160008082526020820192839052633a2f1a9160e01b9092526001600160a01b039485169750633a2f1a91965062009dea959385169490921692600a9290810162010038565b600060405180830381600087803b15801562009e0557600080fd5b505af115801562009e1a573d6000803e3d6000fd5b5050602454604080516306bd6eb360e21b815290516001600160a01b039092169350632f2ff15d92508391631af5bacc916004808201926020929091908290030181865afa15801562009e71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e9791906200fb2e565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401600060405180830381600087803b15801562009ed757600080fd5b505af115801562009eec573d6000803e3d6000fd5b5050604051630618f58760e51b815263d43a15d160e01b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b15801562009f3f57600080fd5b505af115801562009f54573d6000803e3d6000fd5b505060248054601e54601d546040805160008082526020820192839052633a2f1a9160e01b9092526001600160a01b039485169750633a2f1a91965062009fa9959385169490921692600a9290810162010038565b600060405180830381600087803b15801562009fc457600080fd5b505af115801562009fd9573d6000803e3d6000fd5b5050604051630618f58760e51b815263d43a15d160e01b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200a02c57600080fd5b505af11580156200a041573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a097949284169390911691600a91600191810162010038565b600060405180830381600087803b1580156200a0b257600080fd5b505af11580156200a0c7573d6000803e3d6000fd5b5050604051630618f58760e51b815263d43a15d160e01b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200a11a57600080fd5b505af11580156200a12f573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a188949284169390911691600a91600160a01b91810162010038565b600060405180830381600087803b1580156200a1a357600080fd5b505af11580156200a1b8573d6000803e3d6000fd5b5050505060006040516200a1cc906200f1dc565b604051809103906000f0801580156200a1e9573d6000803e3d6000fd5b5060408051610160810182526001600160a01b0383168152600160208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081019190915290915060006200a25c826200d028565b601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663b65ee95360e01b1790525163f28dceb360e01b815291925060008051602062023da78339815191529163f28dceb3916200a2e8916004016200f813565b600060405180830381600087803b1580156200a30357600080fd5b505af11580156200a318573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a36d949284169390911691600a918891810162010038565b600060405180830381600087803b1580156200a38857600080fd5b505af11580156200a39d573d6000803e3d6000fd5b5050601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663b65ee95360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200a42b91906004016200f813565b600060405180830381600087803b1580156200a44657600080fd5b505af11580156200a45b573d6000803e3d6000fd5b505060248054601e54601d54604051630b301ae360e21b81526001600160a01b03928316600482015290821693810193909352600a6044840152169250632cc06b8c9150606401600060405180830381600087803b1580156200a4bd57600080fd5b505af11580156200a4d2573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a60648401526000945016915063659ac74b906084016020604051808303816000875af11580156200a545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a56b91906200f828565b6040516340c3fa8b60e11b81526001600160a01b03808316600483015291925090851690638187f51690602401600060405180830381600087803b1580156200a5b357600080fd5b505af11580156200a5c8573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a61d949284169390911691600a918991810162010038565b600060405180830381600087803b1580156200a63857600080fd5b505af11580156200a64d573d6000803e3d6000fd5b505050506200a6db816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200a694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a6ba91906200fb2e565b8360405180606001604052806022815260200162023eb8602291396200d18c565b60408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663b70cd0db60e01b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200a74491906004016200f813565b600060405180830381600087803b1580156200a75f57600080fd5b505af11580156200a774573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a7c9949284169390911691600a918991810162010038565b600060405180830381600087803b1580156200a7e457600080fd5b505af11580156200a7f9573d6000803e3d6000fd5b505060248054601e54601d54604051630b301ae360e21b81526001600160a01b03928316600482015290821693810193909352600a6044840152169250632cc06b8c9150606401600060405180830381600087803b1580156200a85b57600080fd5b505af11580156200a870573d6000803e3d6000fd5b505050506200a901816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200a8b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a8dd91906200fb2e565b6000801b60405180606001604052806022815260200162023e74602291396200d18c565b60408051600060248083019190915282518083039091018152604490910182526020810180516001600160e01b031663b70cd0db60e01b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200a96d91906004016200f813565b600060405180830381600087803b1580156200a98857600080fd5b505af11580156200a99d573d6000803e3d6000fd5b505060248054601e54601d54604051630b301ae360e21b81526001600160a01b03928316600482015290821693810193909352600a6044840152169250632cc06b8c9150606401600060405180830381600087803b1580156200a9ff57600080fd5b505af11580156200aa14573d6000803e3d6000fd5b5050505050505050565b60248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af11580156200aa8e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aab491906200f828565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200ab1557600080fd5b505af11580156200ab2a573d6000803e3d6000fd5b5050604051600181526001600160a01b03841692507f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f915060200160405180910390a260248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526001606484015216906369d56ea390608401600060405180830381600087803b1580156200abd257600080fd5b505af11580156200abe7573d6000803e3d6000fd5b505060248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526000945016915063704037bd90606401608060405180830381865afa1580156200ac4f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ac7591906200f929565b90506200aca181602001518360405180606001604052806022815260200162023e96602291396200ce33565b6200accc8160600151600160405180606001604052806022815260200162023e2f602291396200cee0565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200ad2a57600080fd5b505af11580156200ad3f573d6000803e3d6000fd5b5050604051600081526001600160a01b03851692507f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f915060200160405180910390a260248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526000606484015216906369d56ea390608401600060405180830381600087803b1580156200ade757600080fd5b505af11580156200adfc573d6000803e3d6000fd5b505060248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015262007b3d945016915063704037bd90606401608060405180830381865afa1580156200ae66573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ae8c91906200f929565b60600151600060405180606001604052806022815260200162023dc7602291396200cee0565b6024546040516000916001600160a01b0316906200aed0906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200aefd573d6000803e3d6000fd5b506024805460405163b038478160e01b81526001600160a01b03808516600483015293945092169163b03847819101600060405180830381600087803b1580156200af4757600080fd5b505af11580156200af5c573d6000803e3d6000fd5b5050604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630ded3b9560e31b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200afd491906004016200f813565b600060405180830381600087803b1580156200afef57600080fd5b505af11580156200b004573d6000803e3d6000fd5b50506024805460405163b038478160e01b81526001600160a01b038681166004830152909116935063b0384781925001600060405180830381600087803b1580156200b04f57600080fd5b505af11580156200b064573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006602d79883d200006040516200b0c2906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200b0fd573d6000803e3d6000fd5b5060405163379ee80360e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e482015260006101048201529091506001600160a01b0382169063379ee8039061012401600060405180830381600087803b1580156200b17e57600080fd5b505af11580156200b193573d6000803e3d6000fd5b5050601d54604051635a44092360e01b81526001600160a01b0391821660048201529084169250635a4409239150602401600060405180830381600087803b1580156200b1df57600080fd5b505af11580156200b1f4573d6000803e3d6000fd5b5050604051630618f58760e51b81526328b4fcf960e21b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200b24757600080fd5b505af11580156200b25c573d6000803e3d6000fd5b5050602254601d5460405163659ac74b60e01b81526001600160a01b039283166004820152908216602482015262800000604482015260016064820152908416925063659ac74b91506084016020604051808303816000875af11580156200b2c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b2ee91906200f828565b506000816040516200b300906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200b32d573d6000803e3d6000fd5b50604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630a3e70af60e11b179052905163f28dceb360e01b815291925060008051602062023da78339815191529163f28dceb3916200b3a4916004016200f813565b600060405180830381600087803b1580156200b3bf57600080fd5b505af11580156200b3d4573d6000803e3d6000fd5b50506024805460405163b038478160e01b81526001600160a01b038681166004830152909116935063b03847819250016200597d565b60606013805480602002602001604051908101604052809291908181526020018280548015620015c7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620015a8575050505050905090565b670de0b6b3a76400008311156200b4ca5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b60006200b4d883836200397f565b905060008167ffffffffffffffff8111156200b4f8576200b4f86200f848565b6040519080825280602002602001820160405280156200b522578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200b543576200b5436200f848565b6040519080825280602002602001820160405280156200b56d578160200160208202803683370190505b50905060005b838110156200b67b5760006200b58b89838862006f52565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa1580156200b5e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b60791906200fb2e565b90508162ffffff168584815181106200b624576200b6246200f984565b60209081029190910101526200b644818a670de0b6b3a76400006200d1c4565b8484815181106200b659576200b6596200f984565b6020026020010181815250505050806200b673906200ff62565b90506200b573565b5060405163ca669fa760e01b81526001600160a01b038b16600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200b6cd57600080fd5b505af11580156200b6e2573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200b71a908d908d908790879060040162010076565b6000604051808303816000875af11580156200b73a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200b76491908101906200fd85565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200b86e57601c5460405160008051602062023da78339815191529163b4d6c782916001600160a01b03909116906200b7d7906200f1ea565b604051809103906000f0801580156200b7f4573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200b839929190620100b8565b600060405180830381600087803b1580156200b85457600080fd5b505af11580156200b869573d6000803e3d6000fd5b505050505b60066040516200b87e906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b8a5573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200b8d7906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b8fe573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516008906200b930906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b957573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200b989906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b9b0573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516012906200b9e2906200f1ce565b60ff9091168152602001604051809103906000f0801580156200ba09573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516012906200ba3b906200f1ce565b60ff9091168152602001604051809103906000f0801580156200ba62573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200ba91906200f1f8565b604051809103906000f0801580156200baae573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e617469766500000000000000000000000000000000000000000000000000606482015260008051602062023da78339815191529063c657c71890608401600060405180830381600087803b1580156200bb4f57600080fd5b505af11580156200bb64573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bbdc57600080fd5b505af11580156200bbf1573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bc6957600080fd5b505af11580156200bc7e573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bcf657600080fd5b505af11580156200bd0b573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bd8357600080fd5b505af11580156200bd98573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200be1057600080fd5b505af11580156200be25573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200be9757600080fd5b505af11580156200beac573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bf3857600080fd5b505af11580156200bf4d573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200bfd4906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200c00f573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b039290921691821790556040516200c03d906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200c06a573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200c0c957600080fd5b505af11580156200c0de573d6000803e3d6000fd5b505050506200c0ec6200d1e8565b6200c0f8600a6200d561565b602454602b54601c546040516001600160a01b039384169392831692909116906200c123906200f206565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200c160573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200c19b906200f214565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200c1d8573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f757465720000000000000000000000000000000000000000000000000000606482015260008051602062023da78339815191529063c657c71890608401600060405180830381600087803b1580156200c27957600080fd5b505af11580156200c28e573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f7465720000000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c31a57600080fd5b505af11580156200c32f573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f727900000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c3be57600080fd5b505af11580156200c3d3573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e0000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c45f57600080fd5b505af11580156200c474573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f757465725631000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c50057600080fd5b505af11580156200c515573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f727956310000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c5a157600080fd5b505af11580156200c5b6573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200c611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c63791906200fe63565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c68f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c6b591906200fe63565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c70d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c73391906200fe63565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c78b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c7b191906200fe63565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c809573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c82f91906200fe63565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c8ad91906200fe63565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c92b91906200fe63565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c9a991906200fe63565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ca01573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ca2791906200fe63565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ca7f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200caa591906200fe63565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cafd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cb2391906200fe63565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cb7b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cba191906200fe63565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cbf9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cc1f91906200fe63565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cc77573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cc9d91906200fe63565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ccf5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cd1b91906200fe63565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cd73573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156a91906200fe63565b604051637ba0480960e01b815260008051602062023da783398151915290637ba04809906200cdcf9085908590600401620100dc565b60006040518083038186803b1580156200cde857600080fd5b505afa15801562006e70573d6000803e3d6000fd5b60405163a34edc0360e01b815260008051602062023da78339815191529063a34edc03906200cdcf9085908590600401620100dc565b604051632f2769d160e01b815260008051602062023da783398151915290632f2769d1906200ce6b90869086908690600401620100f9565b60006040518083038186803b1580156200ce8457600080fd5b505afa158015620059ad573d6000803e3d6000fd5b6200312c83838360006200d5d7565b6040516388b44c8560e01b815260008051602062023da7833981519152906388b44c85906200ce6b9086908690869060040162010127565b6040516326d8cf3f60e11b815260008051602062023da783398151915290634db19e7e906200ce6b9086908690869060040162010148565b60006200cf278484846200d7d2565b905062006fa86040518060400160405280600c81526020017f426f756e6420526573756c740000000000000000000000000000000000000000815250826200d9c5565b6000806200cf7986866200da0e565b90506200cf888185856200dab8565b9695505050505050565b8062ffffff811681146200cfb957604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff811681146200cfb95760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b805160208201516001600160a01b0390911690156200d04857600160a01b175b8160400151156200d06b5774020000000000000000000000000000000000000000175b8160600151156200d08e5774040000000000000000000000000000000000000000175b8160800151156200d0b15774080000000000000000000000000000000000000000175b8160a00151156200d0d45774100000000000000000000000000000000000000000175b8160c00151156200d0f75774200000000000000000000000000000000000000000175b8160e00151156200d11a5774400000000000000000000000000000000000000000175b816101000151156200d13e5774800000000000000000000000000000000000000000175b816101200151156200d163577501000000000000000000000000000000000000000000175b816101400151156200cfb957750200000000000000000000000000000000000000000017919050565b604051630c1fa1ed60e41b815260008051602062023da78339815191529063c1fa1ed0906200ce6b9086908690869060040162010127565b60008060006200d1d586866200dae1565b915091506200cf8886868685856200db00565b601c546001600160a01b0316156200d25d5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d24357600080fd5b505af11580156200d258573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200d2d25760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d2b857600080fd5b505af11580156200d2cd573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200d3475760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d32d57600080fd5b505af11580156200d342573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200d3bc5760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d3a257600080fd5b505af11580156200d3b7573d6000803e3d6000fd5b505050505b6022546001600160a01b0316156200d4315760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d41757600080fd5b505af11580156200d42c573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200d4a65760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d48c57600080fd5b505af11580156200d4a1573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200d51b5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d50157600080fd5b505af11580156200d516573d6000803e3d6000fd5b505050505b6023546001600160a01b0316156200051a5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a440923910162000b1a565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee80390610124016200400d565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200d62d916201016d565b600060405180830381855afa9150503d80600081146200d66a576040519150601f19603f3d011682016040523d82523d6000602084013e6200d66f565b606091505b509150506000818060200190518101906200d68b91906200fb2e565b90506200d6c5846200d6be876200d6b76370a0823160e01b6200d6b0600c8d6200dbb6565b906200dbdc565b906200dbfa565b906200dc23565b821562006e705760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200d71091906201016d565b600060405180830381855afa9150503d80600081146200d74d576040519150601f19603f3d011682016040523d82523d6000602084013e6200d752565b606091505b509150506000818060200190518101906200d76e91906200fb2e565b9050828610156200d799576200d78586846200fe83565b6200d79190826200fe83565b90506200d7b4565b6200d7a583876200fe83565b6200d7b190826200f9c6565b90505b6200aa14816200d6be6318160ddd60e01b6200d6b0600c8d6200dbb6565b6000818311156200d84c5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e000060648201526084016200b4c1565b8284101580156200d85d5750818411155b156200d86b57508262006fa8565b60006200d87984846200fe83565b6200d8869060016200f9c6565b9050600385111580156200d89957508481115b156200d8b4576200d8ab85856200f9c6565b91505062006fa8565b6200d8c360036000196200fe83565b85101580156200d8df57506200d8dc856000196200fe83565b81115b156200d8ff576200d8f3856000196200fe83565b6200d8ab90846200fe83565b828511156200d9615760006200d91684876200fe83565b905060006200d92683836201018b565b9050806000036200d93d5784935050505062006fa8565b60016200d94b82886200f9c6565b6200d95791906200fe83565b935050506200d9bd565b838510156200d9bd5760006200d97886866200fe83565b905060006200d98883836201018b565b9050806000036200d99f5785935050505062006fa8565b6200d9ab81866200fe83565b6200d9b89060016200f9c6565b935050505b509392505050565b62007b3d82826040516024016200d9de929190620101a2565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526200dc2f565b600060408203516020830351835180602086010180516002830161ffca8111156200da415763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf38852600c198801989098526035880160d81b604889901b177d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d731760201988015260f088901b8252603f909701601e198701209690528452601f19840152603f19909201919091525090565b600060355160ff600053603594855260609290921b600152506015919091526055600020915290565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200db26578383816200db1d576200db1d6200ff35565b0490506200dbad565b8382106200db47576040516313eae71560e01b815260040160405180910390fd5b60008486880960018619810187169687900496600081900381900490910186831190950394850291909503949094049390931792505060026003840281188085028203028085028203028085028203028085028203028085028203028085029091030282025b95945050505050565b6005820180546001600160a01b0319166001600160a01b03831617905560008262006fa8565b60038201805463ffffffff191660e083901c17905560008262006fa8565b6002820180546001810182556000918252602082206001600160a01b0384169101558262006fa8565b62007b3d82826200dc3a565b6200156a816200e047565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200dcad57602002820191906000526020600020905b8154815260200190600101908083116200dc98575b505050505090506000836200dcc2836200e068565b6040516020016200dcd5929190620101c6565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200dd29918691889101620101f9565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200dd64576200dd62876200e11c565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200dda5918791899101620101f9565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200ddec91906201016d565b600060405180830381855afa9150503d80600081146200de29576040519150601f19603f3d011682016040523d82523d6000602084013e6200de2e565b606091505b5091506200de4b9050816200de4588602062010235565b6200e129565b604051630667f9d760e41b81526001600160a01b038a166004820152602481018590529092506000915060008051602062023da78339815191529063667f9d7090604401602060405180830381865afa1580156200dead573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ded391906200fb2e565b90508082146200df8a5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200b4c1565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a905260008051602062023da7833981519152906370ca10bb90606401600060405180830381600087803b1580156200dfe957600080fd5b505af11580156200dffe573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200e03360028b0160006200f222565b896004016000905550505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606000825160206200e07c919062010235565b67ffffffffffffffff8111156200e097576200e0976200f848565b6040519080825280601f01601f1916602001820160405280156200e0c2576020820181803683370190505b50905060005b83518110156200e1155760008482815181106200e0e9576200e0e96200f984565b6020026020010151905080826020026020018401525080806200e10c906200ff62565b9150506200e0c8565b5092915050565b6000620039ce826200e1cb565b600080600060208551116200e1405784516200e143565b60205b905060005b818110156200e1c1576200e15e81600862010235565b866200e16b83886200f9c6565b815181106200e17e576200e17e6200f984565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200e1b8816200ff62565b9150506200e148565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200e23d57602002820191906000526020600020905b8154815260200190600101908083116200e228575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200e28992508591879101620101f9565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200e328576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200e2f8918591879101620101f9565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200e336836200f06d565b6040516020016200e349929190620101c6565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200e3b957600080fd5b505af11580156200e3ce573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200e3ef91906201016d565b600060405180830381855afa9150503d80600081146200e42c576040519150601f19603f3d011682016040523d82523d6000602084013e6200e431565b606091505b5091506200e44e9050816200e44887602062010235565b6200f11a565b6040516365bc948160e01b81526001600160a01b03891660048201529092506000915060008051602062023da7833981519152906365bc9481906024016000604051808303816000875af11580156200e4ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200e4d591908101906201024f565b50905080516001036200e8795760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200e52d576200e52d6200f984565b60200260200101516040518363ffffffff1660e01b81526004016200e5679291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200e585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e5ab91906200fb2e565b9050806200e616577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200e5eb576200e5eb6200f984565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200e6cb5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200b4c1565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200e703929190620101f9565b60405160208183030381529060405280519060200120856000815181106200e72f576200e72f6200f984565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200e789576200e7896200f984565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200e7d4918a918c9101620101f9565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200e83e918a918c9101620101f9565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200eee2565b6001815111156200ee715760005b81518110156200ee6a5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200e8db576200e8db6200f984565b60200260200101516040518363ffffffff1660e01b81526004016200e9159291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200e933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e95991906200fb2e565b9050806200e9c3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200e998576200e9986200f984565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200e9d257506200ee55565b825181199060008051602062023da7833981519152906370ca10bb908c908790879081106200ea05576200ea056200f984565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200ea5e57600080fd5b505af11580156200ea73573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200ea9591906201016d565b600060405180830381855afa9150503d80600081146200ead2576040519150601f19603f3d011682016040523d82523d6000602084013e6200ead7565b606091505b5090925090506200eaef816200e4488c602062010235565b9650508080156200eaff57508186145b156200ed97577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200eb3d929190620101f9565b604051602081830303815290604052805190602001208888815181106200eb68576200eb686200f984565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200ebc1576200ebc16200f984565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200ec0c918d918f9101620101f9565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200ec99929190620101f9565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200ed1c576200ed1c6200f984565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200ed7557600080fd5b505af11580156200ed8a573d6000803e3d6000fd5b505050505050506200ee6a565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200eddf576200eddf6200f984565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200ee3857600080fd5b505af11580156200ee4d573d6000803e3d6000fd5b505050505050505b806200ee61816200ff62565b9150506200e887565b506200eee2565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e60648201526084016200b4c1565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200ef269188918a9101620101f9565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200efc35760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e000000000000000000000000000000000060648201526084016200b4c1565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200eff460028a0160006200f222565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200f03a9188918a9101620101f9565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200f081919062010235565b67ffffffffffffffff8111156200f09c576200f09c6200f848565b6040519080825280601f01601f1916602001820160405280156200f0c7576020820181803683370190505b50905060005b83518110156200e1155760008482815181106200f0ee576200f0ee6200f984565b6020026020010151905080826020026020018401525080806200f111906200ff62565b9150506200f0cd565b600080600060208551116200f1315784516200f134565b60205b905060005b818110156200e1c1576200f14f81600862010235565b866200f15c83886200f9c6565b815181106200f16f576200f16f6200f984565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200f1a9816200ff62565b9150506200f139565b61615c80620102bb83390190565b613199806201641783390190565b610bfd80620195b083390190565b610c47806201a1ad83390190565b610b08806201adf483390190565b610c18806201b8fc83390190565b614c80806201c51483390190565b612c13806202119483390190565b50805460008255906000526020600020908101906200156a91905b808211156200f25357600081556001016200f23d565b5090565b6000602082840312156200f26a57600080fd5b81356001600160e01b03198116811462006fa857600080fd5b6020808252825182820181905260009190848201906040850190845b818110156200f2c65783516001600160a01b0316835292840192918401916001016200f29f565b50909695505050505050565b60005b838110156200f2ef5781810151838201526020016200f2d5565b50506000910152565b600081518084526200f3128160208601602086016200f2d2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200f3dc57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200f3c557605f198985030183526200f3b28486516200f2f8565b948e01949350918d01916001016200f393565b505050978a0197945050918801916001016200f34d565b50919a9950505050505050505050565b803560ff811681146200cfb957600080fd5b600080604083850312156200f41257600080fd5b6200f41d836200f3ec565b91506200f42d602084016200f3ec565b90509250929050565b61ffff811681146200156a57600080fd5b62ffffff811681146200156a57600080fd5b80151581146200156a57600080fd5b60008060008060008060008060006101208a8c0312156200f48857600080fd5b89356200f495816200f436565b985060208a01356200f4a7816200f436565b975060408a01356200f4b9816200f436565b965060608a01356200f4cb816200f436565b955060808a01356200f4dd816200f436565b945060a08a01356200f4ef816200f447565b935060c08a01356200f501816200f436565b925060e08a01356200f513816200f447565b91506101008a01356200f526816200f459565b809150509295985092959850929598565b6000602082840312156200f54a57600080fd5b813562006fa8816200f436565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200f5ff57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200f5e95783516001600160e01b0319168252928b019260019290920191908b01906200f5bd565b50978a019795505050918701916001016200f57f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200f66757603f198886030184526200f6548583516200f2f8565b945092850192908501906001016200f635565b5092979650505050505050565b6000806000606084860312156200f68a57600080fd5b83356200f697816200f447565b9250602084013591506200f6ae604085016200f3ec565b90509250925092565b6001600160a01b03811681146200156a57600080fd5b600080600080600080600080610100898b0312156200f6eb57600080fd5b88356200f6f8816200f6b7565b975060208901356200f70a816200f6b7565b965060408901356200f71c816200f6b7565b955060608901356200f72e816200f447565b94506080890135935060a089013592506200f74c60c08a016200f3ec565b91506200f75c60e08a016200f3ec565b90509295985092959890939650565b600080600080600080600060e0888a0312156200f78757600080fd5b87356200f794816200f6b7565b965060208801356200f7a6816200f6b7565b955060408801356200f7b8816200f6b7565b945060608801356200f7ca816200f447565b9350608088013592506200f7e160a089016200f3ec565b91506200f7f160c089016200f3ec565b905092959891949750929550565b6001600160a01b0391909116815260200190565b60208152600062006fa860208301846200f2f8565b6000602082840312156200f83b57600080fd5b815162006fa8816200f6b7565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200f88a576200f88a6200f848565b604052919050565b6000608082840312156200f8a557600080fd5b6040516080810181811067ffffffffffffffff821117156200f8cb576200f8cb6200f848565b806040525080915082516200f8e0816200f436565b815260208301516200f8f2816200f6b7565b602082015260408301516200f907816200f459565b604082015260608301516200f91c816200f459565b6060919091015292915050565b6000608082840312156200f93c57600080fd5b62006fa883836200f892565b600181811c908216806200f95d57607f821691505b6020821081036200f97e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620039ce57620039ce6200f9b0565b600081518084526020808501945080840160005b838110156200fa0e578151875295820195908201906001016200f9f0565b509495945050505050565b600081518084526020808501945080840160005b838110156200fa0e5781516001600160a01b0316875295820195908201906001016200fa2d565b60008151606084526200fa6b60608501826200f9dc565b6020848101518683038783015280518084529082019350909160009190830190825b818110156200fac8578551600281106200fab557634e487b7160e01b85526021600452602485fd5b835294840194918401916001016200fa8d565b50506040860151935086810360408801526200fae581856200fa19565b979650505050505050565b85815284602082015260a0604082015260006200fb1160a08301866200fa54565b6001600160a01b0394909416606083015250608001529392505050565b6000602082840312156200fb4157600080fd5b5051919050565b600080600080608085870312156200fb5f57600080fd5b84516200fb6c816200f447565b60208601519094506200fb7f816200f447565b60408601519093506200fb92816200f447565b606086015190925064ffffffffff811681146200fbae57600080fd5b939692955090935050565b61ffff8181168382160280821691908281146200fbda576200fbda6200f9b0565b505092915050565b62ffffff8181168382160280821691908281146200fbda576200fbda6200f9b0565b600080600080600080600060e0888a0312156200fc2057600080fd5b87516200fc2d816200f436565b60208901519097506200fc40816200f436565b60408901519096506200fc53816200f436565b60608901519095506200fc66816200f436565b60808901519094506200fc79816200f447565b60a08901519093506200fc8c816200f436565b60c08901519092506200fc9f816200f447565b8091505092959891949750929550565b61ffff8181168382160190808211156200e115576200e1156200f9b0565b61ffff8281168282160390808211156200e115576200e1156200f9b0565b600067ffffffffffffffff8211156200fd08576200fd086200f848565b5060051b60200190565b600082601f8301126200fd2457600080fd5b815160206200fd3d6200fd37836200fceb565b6200f85e565b82815260059290921b840181019181810190868411156200fd5d57600080fd5b8286015b848110156200fd7a57805183529183019183016200fd61565b509695505050505050565b6000602082840312156200fd9857600080fd5b815167ffffffffffffffff8111156200fdb057600080fd5b6200d020848285016200fd12565b600080600080600080600080610100898b0312156200fddc57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e08901516200fe1a816200f459565b809150509295985092959890939650565b60ff8181168382160190811115620039ce57620039ce6200f9b0565b60ff8281168282160390811115620039ce57620039ce6200f9b0565b6000602082840312156200fe7657600080fd5b815162006fa8816200f459565b81810381811115620039ce57620039ce6200f9b0565b600060208083850312156200fead57600080fd5b825167ffffffffffffffff8111156200fec557600080fd5b8301601f810185136200fed757600080fd5b80516200fee86200fd37826200fceb565b81815260079190911b820183019083810190878311156200ff0857600080fd5b928401925b828410156200fae5576200ff2288856200f892565b825284820191506080840193506200ff0d565b634e487b7160e01b600052601260045260246000fd5b6000826200ff5d576200ff5d6200ff35565b500490565b6000600182016200ff77576200ff776200f9b0565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200ffcb578551835294830194918301916001016200ffad565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200fffa57600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156201002057600080fd5b6201002e868287016200fd12565b9150509250925092565b60006001600160a01b03808816835280871660208401525061ffff8516604083015283606083015260a060808301526200fae560a08301846200f2f8565b60006001600160a01b03808716835280861660208401525060806040830152620100a460808301856200f9dc565b82810360608401526200fae581856200f9dc565b6001600160a01b03831681526040602082015260006200d02060408301846200f2f8565b82151581526040602082015260006200d02060408301846200f2f8565b60006001600160a01b038086168352808516602084015250606060408301526200dbad60608301846200f2f8565b8381528260208201526060604082015260006200dbad60608301846200f2f8565b831515815282151560208201526060604082015260006200dbad60608301846200f2f8565b60008251620101818184602087016200f2d2565b9190910192915050565b6000826201019d576201019d6200ff35565b500690565b604081526000620101b760408301856200f2f8565b90508260208301529392505050565b6001600160e01b0319831681528151600090620101eb8160048501602087016200f2d2565b919091016004019392505050565b825160009082906020808701845b83811015620102255781518552938201939082019060010162010207565b5050948252509092019392505050565b8082028115828204841417620039ce57620039ce6200f9b0565b600080604083850312156201026357600080fd5b825167ffffffffffffffff808211156201027c57600080fd5b6201028a868387016200fd12565b93506020850151915080821115620102a157600080fd5b50620102b0858286016200fd12565b915050925092905056fe60c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c63430008140033608060405234801561001057600080fd5b50610c27806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806379c8ccf7116100b2578063c2fb5a6411610081578063ea9db9d311610066578063ea9db9d3146102c3578063fdc27257146102d6578063feee3735146102e957600080fd5b8063c2fb5a64146102b3578063d826f88f146102bb57600080fd5b806379c8ccf7146102305780637a51a4c6146102435780638187f51614610256578063a8aa1b31146102a057600080fd5b806353e8079b116101095780635f9c01b1116100ee5780635f9c01b1146101ea57806360bed5f31461020a57806367ddb2781461021d57600080fd5b806353e8079b146101c2578063571eed37146101d557600080fd5b806309fa1f901461013b5780630d4abdb3146101585780634e430b5a1461019c578063505d9033146101af575b600080fd5b6101436102fc565b60405190151581526020015b60405180910390f35b61016b6101663660046107b6565b61030b565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014f565b61016b6101aa36600461081f565b610334565b61016b6101bd36600461089b565b61037e565b61016b6101d03660046108d7565b6103a3565b6101dd6103ca565b60405161014f9190610929565b6101f2610458565b6040516001600160a01b03909116815260200161014f565b61016b610218366004610977565b61046c565b61016b61022b3660046109b9565b610493565b61016b61023e3660046109b9565b6104c0565b61016b6102513660046107b6565b6104ed565b61029e610264366004610a5b565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b005b6002546101f2906001600160a01b031681565b6101dd610516565b61029e610523565b61016b6102d13660046109b9565b61053c565b61016b6102e43660046109b9565b610569565b61016b6102f73660046108d7565b610596565b60006103066105bd565b905090565b600061031561064a565b610322868686868661067b565b50630d4abdb360e01b95945050505050565b600061033e61064a565b6103466105bd565b61036357604051632def67a360e21b815260040160405180910390fd5b61036e848484610690565b5063272185ad60e11b9392505050565b600061038861064a565b610393848484610690565b5063505d903360e01b9392505050565b60006103ad61064a565b6103b9858585856106a3565b506353e8079b60e01b949350505050565b600080546103d790610a7d565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610a7d565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505081565b60006103066002546001600160a01b031690565b600061047661064a565b610482858585856106a3565b506360bed5f360e01b949350505050565b600061049d61064a565b6104ac888888888888886106b8565b50630cfbb64f60e31b979650505050505050565b60006104ca61064a565b6104d9888888888888886106d0565b506379c8ccf760e01b979650505050505050565b60006104f761064a565b61050486868686866106dd565b50633d28d26360e11b95945050505050565b600180546103d790610a7d565b61052e6000806106f8565b61053a600160006106f8565b565b600061054661064a565b610555888888888888886106d0565b5063ea9db9d360e01b979650505050505050565b600061057361064a565b610582888888888888886106b8565b5063fdc2725760e01b979650505050505050565b60006105a061064a565b6105ac858585856106eb565b5063feee373560e01b949350505050565b6000806106396105d56002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106369190610ab7565b90565b6001600160a01b0316301492915050565b6002546001600160a01b0316331461053a57604051634a27038360e01b815233600482015260240160405180910390fd5b6000610688368280610b31565b505050505050565b600061069d368280610b31565b50505050565b60016106b136600083610b31565b5050505050565b60016106c636600083610b31565b5050505050505050565b60006106c6368280610b31565b600161068836600083610b31565b60006106b1368280610b31565b50805461070490610a7d565b6000825580601f10610714575050565b601f0160209004906000526020600020908101906107329190610735565b50565b5b8082111561074a5760008155600101610736565b5090565b80356001600160a01b038116811461076557600080fd5b919050565b60008083601f84011261077c57600080fd5b50813567ffffffffffffffff81111561079457600080fd5b6020830191508360208260051b85010111156107af57600080fd5b9250929050565b6000806000806000608086880312156107ce57600080fd5b6107d78661074e565b94506107e56020870161074e565b9350604086013567ffffffffffffffff81111561080157600080fd5b61080d8882890161076a565b96999598509660600135949350505050565b60008060006040848603121561083457600080fd5b83359250602084013567ffffffffffffffff8082111561085357600080fd5b818601915086601f83011261086757600080fd5b81358181111561087657600080fd5b87602082850101111561088857600080fd5b6020830194508093505050509250925092565b6000806000606084860312156108b057600080fd5b6108b98461074e565b92506108c76020850161074e565b9150604084013590509250925092565b600080600080608085870312156108ed57600080fd5b6108f68561074e565b93506109046020860161074e565b92506040850135801515811461091957600080fd5b9396929550929360600135925050565b600060208083528351808285015260005b818110156109565785810183015185820160400152820161093a565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806080858703121561098d57600080fd5b6109968561074e565b93506109a46020860161074e565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156109d457600080fd5b6109dd8861074e565b96506109eb6020890161074e565b95506109f96040890161074e565b9450606088013567ffffffffffffffff80821115610a1657600080fd5b610a228b838c0161076a565b909650945060808a0135915080821115610a3b57600080fd5b50610a488a828b0161076a565b989b979a50959850939692959293505050565b600060208284031215610a6d57600080fd5b610a768261074e565b9392505050565b600181811c90821680610a9157607f821691505b602082108103610ab157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ac957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b601f821115610b2c57600081815260208120601f850160051c81016020861015610b0d5750805b601f850160051c820191505b8181101561068857828155600101610b19565b505050565b67ffffffffffffffff831115610b4957610b49610ad0565b610b5d83610b578354610a7d565b83610ae6565b6000601f841160018114610b915760008515610b795750838201355b600019600387901b1c1916600186901b1783556106b1565b600083815260209020601f19861690835b82811015610bc25786850135825560209485019460019092019101610ba2565b5086821015610bdf5760001960f88860031b161c19848701351681555b505060018560011b018355505050505056fea2646970667358221220807d152e5200b82d0890813e63c91c3287e3ec0bf9488b9534bdc624330825a064736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f5365744c425061697249676e6f726564466f72526f7574696e673a3a33746573745f4372656174654c4250616972466163746f7279556e6c6f636b65643a3a31746573745f4372656174654c4250616972466163746f7279556e6c6f636b65643a3a33746573745f5365744c425061697249676e6f726564466f72526f7574696e673a3a32746573745f4372656174654c4250616972466163746f7279556e6c6f636b65643a3a32746573745f7365744c42486f6f6b73506172616d65746572734f6e506169723a3a32746573745f5365744c425061697249676e6f726564466f72526f7574696e673a3a31746573745f7365744c42486f6f6b73506172616d65746572734f6e506169723a3a31a264697066735822122023a4e15b45109157958c49c26a66dd9702be6bfd824adc771e541add2458479c64736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;618:35979:83;1812:17:93;;618:35979:83;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;618:35979:83;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;618:35979:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002aa5760003560e01c806366d9a9a0116200017c578063b5508aa911620000e9578063d0dffe291162000097578063e036a30d116200007a578063e036a30d14620004e5578063e20c9f7114620004ef578063fecaa22314620004f957600080fd5b8063d0dffe2914620004d1578063d0f12e3e14620004db57600080fd5b8063b89e023311620000cc578063b89e023314620004a6578063ba414fa614620004bd578063c7885e3914620004c757600080fd5b8063b5508aa91462000492578063b5963c0f146200049c57600080fd5b806390d5014a116200014757806391cc26f1116200012a57806391cc26f11462000467578063924525b51462000471578063a7aa85e9146200047b57600080fd5b806390d5014a1462000453578063916a17c6146200045d57600080fd5b806366d9a9a014620003eb5780638152762c146200040457806385226c81146200040e578063889be5b7146200042757600080fd5b80633e5e3c23116200021b5780634bac5c2011620001e657806360f523e211620001c957806360f523e214620003c0578063623e4ed714620003ca57806362f3d37814620003e157600080fd5b80634bac5c20146200039f57806352eabb5414620003a957600080fd5b80633e5e3c23146200035b5780633f7286f4146200036557806345b2695d146200036f57806349789ef9146200037957600080fd5b80631ed7831c11620002795780632d521af6116200025c5780632d521af6146200033d57806336885aae14620003475780633c322dd3146200035157600080fd5b80631ed7831c146200030b5780632ade3880146200032457600080fd5b806301ffc9a714620002af5780630a9254e414620002eb57806311ca724814620002f757806318b7ff781462000301575b600080fd5b620002d6620002c03660046200f257565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620002f562000510565b005b620002f56200051c565b620002f562000b50565b620003156200156d565b604051620002e291906200f283565b6200032e620015d1565b604051620002e291906200f326565b620002f56200171f565b620002f562001948565b620002f56200299c565b6200031562003131565b6200031562003193565b620002f5620031f5565b620003906200038a3660046200f3fe565b6200397f565b604051908152602001620002e2565b620002f5620039d4565b620002f5620003ba3660046200f468565b62004044565b620002f562004afd565b620002f5620003db3660046200f537565b62005108565b620002f5620059b6565b620003f562006642565b604051620002e291906200f557565b620002f56200672c565b6200041862006e78565b604051620002e291906200f60e565b6200043e620004383660046200f674565b62006f52565b60405162ffffff9091168152602001620002e2565b620002f562006faf565b620003f562007b41565b620002f562007c2b565b620002f562008803565b620002f56200048c3660046200f6cd565b62008e03565b62000418620092a4565b620002f56200937e565b620002d6620004b73660046200f537565b620095fa565b620002d66200967d565b620002f562009737565b620002f562009c73565b620002f56200aa1e565b620002f56200aeb2565b620003156200b40a565b620002f56200050a3660046200f76b565b6200b46c565b6200051a6200b771565b565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200058d57600080fd5b505af1158015620005a2573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200063a91906004016200f813565b600060405180830381600087803b1580156200065557600080fd5b505af11580156200066a573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea39150608401600060405180830381600087803b158015620006d357600080fd5b505af1158015620006e8573d6000803e3d6000fd5b5050601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663102a919160e21b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200077691906004016200f813565b600060405180830381600087803b1580156200079157600080fd5b505af1158015620007a6573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea39150608401600060405180830381600087803b1580156200080f57600080fd5b505af115801562000824573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562000894573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ba91906200f828565b506040805160048082526024820183526020820180516001600160e01b0316626ee66560e11b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb39262000914929091016200f813565b600060405180830381600087803b1580156200092f57600080fd5b505af115801562000944573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600060648401521692506369d56ea39150608401600060405180830381600087803b158015620009ad57600080fd5b505af1158015620009c2573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea39150608401600060405180830381600087803b15801562000a2b57600080fd5b505af115801562000a40573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316626ee66560e11b179052915163f28dceb360e01b815260008051602062023da7833981519152945063f28dceb3935062000a9b92016200f813565b600060405180830381600087803b15801562000ab657600080fd5b505af115801562000acb573d6000803e3d6000fd5b505060248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152600160648401521692506369d56ea391506084015b600060405180830381600087803b15801562000b3557600080fd5b505af115801562000b4a573d6000803e3d6000fd5b50505050565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562000bc157600080fd5b505af115801562000bd6573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166024820152600a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304fc2fe760e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062000c7591906004016200f813565b600060405180830381600087803b15801562000c9057600080fd5b505af115801562000ca5573d6000803e3d6000fd5b505060248054602054601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562000d15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d3b91906200f828565b5060248054604051634cd161d360e01b8152600a60048201526001928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b15801562000d8b57600080fd5b505af115801562000da0573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b15801562000e1557600080fd5b505af115801562000e2a573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562000e9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ec091906200f828565b5060248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015262000f729291169063704037bd90606401608060405180830381865afa15801562000f28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f4e91906200f929565b6040015160405180606001604052806023815260200162023de9602391396200cd99565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562000fe357600080fd5b505af115801562000ff8573d6000803e3d6000fd5b505060248054602254601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562001068573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108e91906200f828565b5060248054602254601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152620011409291169063704037bd90606401608060405180830381865afa158015620010f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200111c91906200f929565b6040015160405180606001604052806023815260200162023e51602391396200cd99565b60248054602154601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620011ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d291906200f828565b5060248054602154601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152620012849291169063704037bd90606401608060405180830381865afa1580156200123a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126091906200f929565b6040015160405180606001604052806023815260200162023e0c602391396200cdfd565b60248054604051634cd161d360e01b8152600a60048201526000928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b158015620012d357600080fd5b505af1158015620012e8573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200135d57600080fd5b505af115801562001372573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166024820152600a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304fc2fe760e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200141191906004016200f813565b600060405180830381600087803b1580156200142c57600080fd5b505af115801562001441573d6000803e3d6000fd5b505060248054602054601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af1158015620014b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d791906200f828565b5060248054601f54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af115801562001544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156a91906200f828565b50565b60606014805480602002602001604051908101604052809291908181526020018280548015620015c757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620015a8575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200171657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620016fe5783829060005260206000200180546200166a906200f948565b80601f016020809104026020016040519081016040528092919081815260200182805462001698906200f948565b8015620016e95780601f10620016bd57610100808354040283529160200191620016e9565b820191906000526020600020905b815481529060010190602001808311620016cb57829003601f168201915b50505050508152602001906001019062001648565b505050508152505081526020019060010190620015f5565b50505050905090565b6024546040516000916001600160a01b0316906200173d906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200176a573d6000803e3d6000fd5b5060405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620017cc57600080fd5b505af1158015620017e1573d6000803e3d6000fd5b5050602954604080516001600160a01b03928316815291851660208301527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e935001905060405180910390a16024805460405163b038478160e01b81526001600160a01b0384811660048301529091169163b03847819101600060405180830381600087803b1580156200187457600080fd5b505af115801562001889573d6000803e3d6000fd5b505050506200156a602460009054906101000a90046001600160a01b03166001600160a01b031663af3710656040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200190b91906200f828565b826040518060400160405280601f81526020017f746573745f5365744c4250616972496d706c656d656e746174696f6e3a3a31008152506200ce33565b60248054601c54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af1158015620019b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019de91906200f828565b905062001a3f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836280000068056bc75e2d6310000080600a8062008e03565b601d5462001a81906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000680340aad21b3b7000006200ce99565b62001aa660405180606001604052806060815260200160608152602001606081525090565b60408051600180825281830190925290602080830190803683375050508082528051600a919060009062001ade5762001ade6200f984565b6020908102919091010152604080516001808252818301909252908160200160208202803683375050506020820181905280516001919060009062001b275762001b276200f984565b6020026020010190600181111562001b435762001b436200f99a565b9081600181111562001b595762001b596200f99a565b905250604080516002808252606082018352909160208301908036833750505060408201819052601d5481516001600160a01b03909116919060009062001ba45762001ba46200f984565b6001600160a01b039283166020918202929092010152601c5460408301518051919092169190600190811062001bde5762001bde6200f984565b6001600160a01b03928316602091820292909201015260255416632a443fae6802b5e3af16b18800006000843062001c184260016200f9c6565b6040518663ffffffff1660e01b815260040162001c3a9594939291906200faf0565b6020604051808303816000875af115801562001c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c8091906200fb2e565b506040516372eb5f8160e11b81526064600482015260008051602062023da78339815191529063e5d6bf0290602401600060405180830381600087803b15801562001cca57600080fd5b505af115801562001cdf573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae9050678ac7230489e800006000843062001d104260016200f9c6565b6040518663ffffffff1660e01b815260040162001d329594939291906200faf0565b6020604051808303816000875af115801562001d52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d7891906200fb2e565b5050600080600080846001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa15801562001dbf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001de591906200fb48565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201529397509195509350915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562001e4d57600080fd5b505af115801562001e62573d6000803e3d6000fd5b50506024546001600160a01b031691507fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046905062001ea461138860026200fbb9565b62001eb2601e60026200fbb9565b62001ec161025860026200fbb9565b62001ed061138860026200fbb9565b62001edf619c4060026200fbe2565b62001eee6103e860026200fbb9565b62001efe6205573060026200fbe2565b6040805161ffff9889168152968816602088015294871686860152928616606086015262ffffff918216608086015290941660a08401529290921660c082015290519081900360e00190a2602454601c54601d546001600160a01b039283169263093ff7699281169116600a62001f7961138860026200fbb9565b62001f87601e60026200fbb9565b62001f9661025860026200fbb9565b62001fa561138860026200fbb9565b62001fb4619c4060026200fbe2565b62001fc36103e860026200fbb9565b62001fd36205573060026200fbe2565b6040516001600160e01b031960e08d901b1681526001600160a01b039a8b1660048201529990981660248a015261ffff96871660448a01529486166064890152928516608488015290841660a4870152831660c486015262ffffff90811660e486015291166101048401521661012482015261014401600060405180830381600087803b1580156200206457600080fd5b505af115801562002079573d6000803e3d6000fd5b5050505060008060008060008060008b6001600160a01b0316637ca0de306040518163ffffffff1660e01b815260040160e060405180830381865afa158015620020c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020ed91906200fc04565b9650965096509650965096509650620021558761ffff1661138860026200211591906200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a31008152506200cea8565b620021ac61ffff87166200216c601e60026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a32008152506200cea8565b6200220461ffff8616620021c461025860026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a33008152506200cea8565b6200225c61ffff85166200221c61138860026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a34008152506200cea8565b620022b662ffffff841662002275619c4060026200fbe2565b62ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a35008152506200cea8565b6200230e61ffff8316620022ce6103e860026200fbb9565b61ffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a36008152506200cea8565b6200236962ffffff8216620023286205573060026200fbe2565b62ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a37008152506200cea8565b50505050505050600080600080886001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa158015620023b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023db91906200fb48565b93509350935093506200242f8462ffffff168962ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a38008152506200cea8565b6200247b8362ffffff168862ffffff166040518060400160405280601f81526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a39008152506200cea8565b620024c78262ffffff168762ffffff166040518060400160405280602081526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a31308152506200cea8565b620025178164ffffffffff168664ffffffffff166040518060400160405280602081526020017f746573745f53657446656573506172616d65746572734f6e506169723a3a31318152506200cea8565b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b1580156200258c57600080fd5b505af1158015620025a1573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200263991906004016200f813565b600060405180830381600087803b1580156200265457600080fd5b505af115801562002669573d6000803e3d6000fd5b5050602454601c54601d546001600160a01b03928316945063093ff76993509082169116600a6200269e61138860026200fbb9565b620026ac601e60026200fbb9565b620026bb61025860026200fbb9565b620026ca61138860026200fbb9565b620026d9619c4060026200fbe2565b620026e86103e860026200fbb9565b620026f86205573060026200fbe2565b6040516001600160e01b031960e08d901b1681526001600160a01b039a8b1660048201529990981660248a015261ffff96871660448a01529486166064890152928516608488015290841660a4870152831660c486015262ffffff90811660e486015291166101048401521661012482015261014401600060405180830381600087803b1580156200278957600080fd5b505af11580156200279e573d6000803e3d6000fd5b5050602254601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663b65ee95360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200282c91906004016200f813565b600060405180830381600087803b1580156200284757600080fd5b505af11580156200285c573d6000803e3d6000fd5b5050602454602254601d546001600160a01b03928316945063093ff76993509082169116600a6200289161138860026200fbb9565b6200289f601e60026200fbb9565b620028ae61025860026200fbb9565b620028bd61138860026200fbb9565b620028cc619c4060026200fbe2565b620028db6103e860026200fbb9565b620028eb6205573060026200fbe2565b6040516001600160e01b031960e08d901b1681526001600160a01b039a8b1660048201529990981660248a015261ffff96871660448a01529486166064890152928516608488015290841660a4870152831660c486015262ffffff90811660e486015291166101048401521661012482015261014401600060405180830381600087803b1580156200297c57600080fd5b505af115801562002991573d6000803e3d6000fd5b505050505050505050565b602454604080516301332c8360e61b8152905162002a6c926001600160a01b031691634ccb20c09160048083019260209291908290030181865afa158015620029e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a0f91906200f828565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a31000000000000000000000000008152506200ce33565b60245460408051637ec8615f60e11b8152905162002b23926001600160a01b03169163fd90c2be9160048083019260209291908290030181865afa15801562002ab9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002adf91906200fb2e565b6602d79883d200006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a32000000000000000000000000008152506200cea8565b6024546040805163af37106560e01b8152905162002bdf926001600160a01b03169163af3710659160048083019260209291908290030181865afa15801562002b70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9691906200f828565b60295460408051808201909152601381527f746573745f436f6e7374727563746f723a3a330000000000000000000000000060208201526001600160a01b03909116906200ce33565b6024546040805163701ab8c160e01b8152905162002c90926001600160a01b03169163701ab8c19160048083019260209291908290030181865afa15801562002c2c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c5291906200fb2e565b60016040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a34000000000000000000000000008152506200cea8565b602454604080516301332c8360e61b8152905162002d60926001600160a01b031691634ccb20c09160048083019260209291908290030181865afa15801562002cdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d0391906200f828565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a35000000000000000000000000008152506200ce33565b6024546040805163233a6a8760e21b8152905162002e18926001600160a01b031691638ce9aa1c9160048083019260209291908290030181865afa15801562002dad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002dd391906200fb2e565b67016345785d8a00006040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a36000000000000000000000000008152506200cea8565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562002e7657600080fd5b505af115801562002e8b573d6000803e3d6000fd5b505060408051600081526602d79883d2000060208201527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50935001905060405180910390a17f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006602d79883d2000060405162002f28906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562002f63573d6000803e3d6000fd5b50506024546040805163233a6a8760e21b815290516000926001600160a01b031691638ce9aa1c9160048083019260209291908290030181865afa15801562002fb0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fd691906200fb2e565b905060008051602062023da783398151915263f28dceb3635e8988c160e01b620030028460016200f9c6565b60405160248101919091526044810185905260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200305e916004016200f813565b600060405180830381600087803b1580156200307957600080fd5b505af11580156200308e573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000826001620030e391906200f9c6565b604051620030f1906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200312c573d6000803e3d6000fd5b505050565b60606016805480602002602001604051908101604052809291908181526020018280548015620015c7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620015a8575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620015c7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620015a8575050505050905090565b6024546001600160a01b031663379ee80362003214600a60016200fcaf565b6040516001600160e01b031960e084901b16815261ffff909116600482015261138860248201819052601e604483015261025860648301526084820152619c4060a48201526103e860c48201526205573060e4820152600061010482015261012401600060405180830381600087803b1580156200329157600080fd5b505af1158015620032a6573d6000803e3d6000fd5b50506024546001600160a01b0316915063379ee8039050620032cb6001600a6200fccd565b6040516001600160e01b031960e084901b16815261ffff909116600482015261138860248201819052601e604483015261025860648301526084820152619c4060a48201526103e860c48201526205573060e4820152600061010482015261012401600060405180830381600087803b1580156200334857600080fd5b505af11580156200335d573d6000803e3d6000fd5b5050505062003422602460009054906101000a90046001600160a01b03166001600160a01b0316635b35875c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015620033b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033e391908101906200fd85565b5160036040518060400160405280601481526020017f746573745f52656d6f76655072657365743a3a310000000000000000000000008152506200cea8565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200348057600080fd5b505af115801562003495573d6000803e3d6000fd5b5050604051600a92507fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be139150600090a26024805460405163e203a31f60e01b8152600a60048201526001600160a01b039091169163e203a31f9101600060405180830381600087803b1580156200350b57600080fd5b505af115801562003520573d6000803e3d6000fd5b50505050620035e5602460009054906101000a90046001600160a01b03166001600160a01b0316635b35875c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200357c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035a691908101906200fd85565b5160026040518060400160405280601481526020017f746573745f52656d6f76655072657365743a3a320000000000000000000000008152506200cea8565b60408051600a60248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200365191906004016200f813565b600060405180830381600087803b1580156200366c57600080fd5b505af115801562003681573d6000803e3d6000fd5b505060248054604051632aaf12cf60e21b8152600a60048201526001600160a01b03909116935063aabc4b3c92500161010060405180830381865afa158015620036cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f591906200fdbe565b505060405163ca669fa760e01b815260008051602062023da7833981519152965063ca669fa795506200375394507f0000000000000000000000000000000000000000000000000000000000000000935060040191506200f7ff9050565b600060405180830381600087803b1580156200376e57600080fd5b505af115801562003783573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200381b91906004016200f813565b600060405180830381600087803b1580156200383657600080fd5b505af11580156200384b573d6000803e3d6000fd5b50506024805460405163e203a31f60e01b8152600a60048201526001600160a01b03909116935063e203a31f925001600060405180830381600087803b1580156200389557600080fd5b505af1158015620038aa573d6000803e3d6000fd5b505060408051600a60248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200391a91906004016200f813565b600060405180830381600087803b1580156200393557600080fd5b505af11580156200394a573d6000803e3d6000fd5b50506024805460405163e203a31f60e01b8152600a60048201526001600160a01b03909116935063e203a31f92500162000b1a565b6000808360ff1611801562003997575060008260ff16115b620039ae57620039a882846200fe2b565b620039c8565b6001620039bc83856200fe2b565b620039c891906200fe47565b60ff1690505b92915050565b60245460408051634062830f60e11b815290516000926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562003a1f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a4591906200fb2e565b60248054601d546040516313b90c2160e11b81526001600160a01b03918216600482015293945062003afd9391169163277218429101602060405180830381865afa15801562003a99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003abf91906200fe63565b60016040518060400160405280601881526020017f746573745f52656d6f766551756f746541737365743a3a3100000000000000008152506200cee0565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562003b5b57600080fd5b505af115801562003b70573d6000803e3d6000fd5b5050601d546040516001600160a01b0390911692507f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb39150600090a260248054601d5460405163ddbfd94160e01b81526001600160a01b03918216600482015291169163ddbfd9419101600060405180830381600087803b15801562003bf557600080fd5b505af115801562003c0a573d6000803e3d6000fd5b505060248054601d546040516313b90c2160e11b81526001600160a01b03918216600482015262003cc395509116925063277218429101602060405180830381865afa15801562003c5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c8591906200fe63565b60006040518060400160405280601881526020017f746573745f52656d6f766551756f746541737365743a3a3200000000000000008152506200cee0565b60245460408051634062830f60e11b8152905162003d7f926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562003d10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d3691906200fb2e565b62003d436001846200fe83565b6040518060400160405280601881526020017f746573745f52656d6f766551756f746541737365743a3a3300000000000000008152506200cea8565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562003df057600080fd5b505af115801562003e05573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062003e9d91906004016200f813565b600060405180830381600087803b15801562003eb857600080fd5b505af115801562003ecd573d6000803e3d6000fd5b505060248054601d5460405163ddbfd94160e01b81526001600160a01b0391821660048201529116935063ddbfd941925001600060405180830381600087803b15801562003f1a57600080fd5b505af115801562003f2f573d6000803e3d6000fd5b5050601d54604080516001600160a01b0390921660248084019190915281518084039091018152604490920181526020820180516001600160e01b0316638e888ef360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062003faa91906004016200f813565b600060405180830381600087803b15801562003fc557600080fd5b505af115801562003fda573d6000803e3d6000fd5b505060248054601d5460405163ddbfd94160e01b81526001600160a01b0391821660048201529116935063ddbfd9419250015b600060405180830381600087803b1580156200402857600080fd5b505af11580156200403d573d6000803e3d6000fd5b5050505050565b620040d08961ffff16602460009054906101000a90046001600160a01b03166001600160a01b031663701ab8c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015620040a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040c791906200fb2e565b61ffff6200cf18565b9850620040f261ffff88166000620040ec6001610fff6200fe83565b6200cf18565b96506200411761ffff87166200410a8960016200fcaf565b61ffff16610fff6200cf18565b95506200412d8561ffff1660006127106200cf18565b9450620041448462ffffff1660006127106200cf18565b93506200415a8361ffff1660006109c46200cf18565b9250620041728262ffffff166000620fffff6200cf18565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290925060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620041d357600080fd5b505af1158015620041e8573d6000803e3d6000fd5b50506040805161ffff8c811682528b811660208301528a811682840152898116606083015262ffffff898116608084015288821660a0840152871660c08301529151918d1693507f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28925081900360e00190a260405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620042b857600080fd5b505af1158015620042cd573d6000803e3d6000fd5b5050604051831515925061ffff8c1691507f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a36024805460405163379ee80360e01b815261ffff808d166004830152808c1693820193909352828a1660448201528289166064820152828816608482015262ffffff80881660a483015292861660c482015291841660e48301528215156101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200439657600080fd5b505af1158015620043ab573d6000803e3d6000fd5b5050505061ffff8916600a146200462357602454604080516316cd61d760e21b8152905162004472926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004409573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200443391908101906200fd85565b5160026040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3100000000000000000000008152506200cea8565b602454604080516316cd61d760e21b8152905162004548926001600160a01b031691635b35875c9160048083019260009291908290030181865afa158015620044bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620044e991908101906200fd85565b600081518110620044fe57620044fe6200f984565b6020026020010151600a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3200000000000000000000008152506200cea8565b602454604080516316cd61d760e21b815290516200461d926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004595573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620045bf91908101906200fd85565b600181518110620045d457620045d46200f984565b60200260200101518a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3300000000000000000000008152506200cea8565b620047ae565b602454604080516316cd61d760e21b81529051620046d9926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004670573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200469a91908101906200fd85565b5160016040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3400000000000000000000008152506200cea8565b602454604080516316cd61d760e21b81529051620047ae926001600160a01b031691635b35875c9160048083019260009291908290030181865afa15801562004726573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200475091908101906200fd85565b6000815181106200476557620047656200f984565b60200260200101518a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3500000000000000000000008152506200cea8565b60248054604051632aaf12cf60e21b815261ffff8c1660048201526000928392839283926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562004804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200482a91906200fdbe565b5050505093509350935093506200487c848d61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3600000000000000000000008152506200cea8565b620048c2838c61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3700000000000000000000008152506200cea8565b62004908828b61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3800000000000000000000008152506200cea8565b6200494e818a61ffff166040518060400160405280601581526020017f7465737446757a7a5f5365745072657365743a3a3900000000000000000000008152506200cea8565b505060248054604051632aaf12cf60e21b815261ffff8e16600482015260009450849350839283926001600160a01b03169163aabc4b3c910161010060405180830381865afa158015620049a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049cc91906200fdbe565b97509750975097505050505062004a1f848962ffffff166040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3130000000000000000000008152506200cea8565b62004a65838861ffff166040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3131000000000000000000008152506200cea8565b62004aac828762ffffff166040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3132000000000000000000008152506200cea8565b62004aee81866040518060400160405280601681526020017f7465737446757a7a5f5365745072657365743a3a3133000000000000000000008152506200cee0565b50505050505050505050505050565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562004b5b57600080fd5b505af115801562004b70573d6000803e3d6000fd5b5050604080513081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721935001905060405180910390a16024805460405163e74b981b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529091169163e74b981b9101600060405180830381600087803b15801562004c3d57600080fd5b505af115801562004c52573d6000803e3d6000fd5b5050505062004d31602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004cae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cd491906200f828565b7f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280601781526020017f746573745f536574466565526563697069656e743a3a310000000000000000008152506200ce33565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562004da257600080fd5b505af115801562004db7573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062004e4f91906004016200f813565b600060405180830381600087803b15801562004e6a57600080fd5b505af115801562004e7f573d6000803e3d6000fd5b50506024805460405163e74b981b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116935063e74b981b925001600060405180830381600087803b15801562004eea57600080fd5b505af115801562004eff573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316632573cfb960e21b179052915163f28dceb360e01b815260008051602062023da7833981519152945063f28dceb3935062004f5b92016200f813565b600060405180830381600087803b15801562004f7657600080fd5b505af115801562004f8b573d6000803e3d6000fd5b50506024805460405163e74b981b60e01b8152600060048201526001600160a01b03909116935063e74b981b925001600060405180830381600087803b15801562004fd557600080fd5b505af115801562004fea573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316634fcea97160e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200508291906004016200f813565b600060405180830381600087803b1580156200509d57600080fd5b505af1158015620050b2573d6000803e3d6000fd5b50506024805460405163e74b981b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116935063e74b981b92500162000b1a565b6024546040805163701ab8c160e01b815290516000926001600160a01b03169163701ab8c19160048083019260209291908290030181865afa15801562005153573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200517991906200fb2e565b905061ffff6200518d83821683836200cf18565b925060091961ffff841601620051ee57620051e8620051ac84620095fa565b6040518060400160405280601781526020017f7465737446757a7a5f4f70656e507265736574733a3a310000000000000000008152506200cd99565b6200530d565b6040805161ffff851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200525d91906004016200f813565b600060405180830381600087803b1580156200527857600080fd5b505af11580156200528d573d6000803e3d6000fd5b505060248054604051632aaf12cf60e21b815261ffff881660048201526001600160a01b03909116935063aabc4b3c92500161010060405180830381865afa158015620052de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200530491906200fdbe565b50505050505050505b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200536b57600080fd5b505af115801562005380573d6000803e3d6000fd5b50506040516001925061ffff861691507f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a36024805460405163379ee80360e01b815261ffff86166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260016101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200544157600080fd5b505af115801562005456573d6000803e3d6000fd5b50505050620054a56200546984620095fa565b6040518060400160405280601781526020017f7465737446757a7a5f4f70656e507265736574733a3a320000000000000000008152506200cdfd565b6040805160048082526024820183526020820180516001600160e01b03166311be38db60e11b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb392620054ff929091016200f813565b600060405180830381600087803b1580156200551a57600080fd5b505af11580156200552f573d6000803e3d6000fd5b505060248054604051634cd161d360e01b815261ffff881660048201526001928101929092526001600160a01b03169250634cd161d39150604401600060405180830381600087803b1580156200558557600080fd5b505af11580156200559a573d6000803e3d6000fd5b505060405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da7833981519152925063491cc7c29150608401600060405180830381600087803b158015620055fc57600080fd5b505af115801562005611573d6000803e3d6000fd5b50506040516000925061ffff861691507f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd908390a360248054604051634cd161d360e01b815261ffff861660048201526000928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b1580156200569857600080fd5b505af1158015620056ad573d6000803e3d6000fd5b50505050620056fc620056c084620095fa565b6040518060400160405280601781526020017f7465737446757a7a5f4f70656e507265736574733a3a330000000000000000008152506200cd99565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200576d57600080fd5b505af115801562005782573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200581a91906004016200f813565b600060405180830381600087803b1580156200583557600080fd5b505af11580156200584a573d6000803e3d6000fd5b505060248054604051634cd161d360e01b815261ffff881660048201526001928101929092526001600160a01b03169250634cd161d39150604401600060405180830381600087803b158015620058a057600080fd5b505af1158015620058b5573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b03166311be38db60e11b179052915163f28dceb360e01b815260008051602062023da7833981519152945063f28dceb393506200591192016200f813565b600060405180830381600087803b1580156200592c57600080fd5b505af115801562005941573d6000803e3d6000fd5b505060248054604051634cd161d360e01b815261ffff881660048201526000928101929092526001600160a01b03169250634cd161d391506044015b600060405180830381600087803b1580156200599857600080fd5b505af1158015620059ad573d6000803e3d6000fd5b50505050505050565b602954601e54601d546040516bffffffffffffffffffffffff19606093841b811660208301529190921b166034820152600560f11b604882015260009162005a6a916001600160a01b0390911690604a0160408051808303601f19018152828252601d54601e546001600160a01b0391821660208601521691830191909152600a60608301529060800160408051601f1981840301815291905280516020909101206024546001600160a01b03166200cf6a565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b15801562005acb57600080fd5b505af115801562005ae0573d6000803e3d6000fd5b5050601d54601e54604080516001600160a01b03878116825260006020830152600a9650938416945092909116917f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff910160405180910390a460248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af115801562005ba9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bcf91906200f828565b905062005c8d602460009054906101000a90046001600160a01b03166001600160a01b0316634e937c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005c29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c4f91906200fb2e565b60016040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a310000000000000000000000008152506200cea8565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015260009291169063704037bd90606401608060405180830381865afa15801562005cf2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d1891906200f929565b905062005d69816000015161ffff16600a61ffff166040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a320000000000000000000000008152506200cea8565b62005daf8160200151836040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a330000000000000000000000008152506200ce33565b62005df481604001516040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a340000000000000000000000008152506200cdfd565b62005e3981606001516040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a350000000000000000000000008152506200cd99565b60248054601e54601d54604051636622e0d760e01b81526001600160a01b0392831660048201529082169381019390935262005f0292911690636622e0d790604401600060405180830381865afa15801562005e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005ec391908101906200fe99565b5160016040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a360000000000000000000000008152506200cea8565b60248054601e54601d54604051636622e0d760e01b81526001600160a01b0392831660048201529082169381019390935262005fea92911690636622e0d790604401600060405180830381865afa15801562005f62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005f8c91908101906200fe99565b60008151811062005fa15762005fa16200f984565b602002602001015160200151836040518060400160405280601481526020017f746573745f4372656174654c42506169723a3a370000000000000000000000008152506200ce33565b6200609c826001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200602d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200605391906200f828565b60245460408051808201909152601481527f746573745f4372656174654c42506169723a3a3800000000000000000000000060208201526001600160a01b03909116906200ce33565b6200614e826001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620060df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200610591906200f828565b601e5460408051808201909152601481527f746573745f4372656174654c42506169723a3a3900000000000000000000000060208201526001600160a01b03909116906200ce33565b62006200826001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061b791906200f828565b601d5460408051808201909152601581527f746573745f4372656174654c42506169723a3a3130000000000000000000000060208201526001600160a01b03909116906200ce33565b6000806000806000806000886001600160a01b0316637ca0de306040518163ffffffff1660e01b815260040160e060405180830381865afa1580156200624a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200627091906200fc04565b9650965096509650965096509650620062ca8761ffff1661138861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313100000000000000000000008152506200cea8565b620063158661ffff16601e61ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313200000000000000000000008152506200cea8565b620063618561ffff1661025861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313300000000000000000000008152506200cea8565b620063ad8461ffff1661138861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313400000000000000000000008152506200cea8565b620063fb8362ffffff16619c4062ffffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313500000000000000000000008152506200cea8565b620064478261ffff166103e861ffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313600000000000000000000008152506200cea8565b620064968162ffffff166205573062ffffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313700000000000000000000008152506200cea8565b6000806000808c6001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa158015620064db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200650191906200fb48565b9350935093509350620065518462ffffff1660006040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313800000000000000000000008152506200cea8565b620065998362ffffff1660006040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a313900000000000000000000008152506200cea8565b620065e88262ffffff166280000062ffffff166040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a323000000000000000000000008152506200cea8565b620066328164ffffffffff1660006040518060400160405280601581526020017f746573745f4372656174654c42506169723a3a323100000000000000000000008152506200cea8565b5050505050505050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620017165760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200671357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620066d45790505b5050505050815250508152602001906001019062006666565b60245460408051634062830f60e11b815290516000926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562006777573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200679d91906200fb2e565b905060006012604051620067b1906200f1ce565b60ff9091168152602001604051809103906000f080158015620067d8573d6000803e3d6000fd5b50602480546040516313b90c2160e11b81526001600160a01b0380851660048301529394506200688f939091169163277218429101602060405180830381865afa1580156200682b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200685191906200fe63565b60006040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3100000000000000000000008152506200cee0565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b158015620068ed57600080fd5b505af115801562006902573d6000803e3d6000fd5b50506040516001600160a01b03841692507f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e9150600090a260248054604051635a44092360e01b81526001600160a01b03848116600483015290911691635a4409239101600060405180830381600087803b1580156200698157600080fd5b505af115801562006996573d6000803e3d6000fd5b5050602480546040516313b90c2160e11b81526001600160a01b03868116600483015262006a4d9550909116925063277218429101602060405180830381865afa158015620069e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a0f91906200fe63565b60016040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3200000000000000000000008152506200cee0565b60245460408051634062830f60e11b8152905162006b09926001600160a01b0316916380c5061e9160048083019260209291908290030181865afa15801562006a9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ac091906200fb2e565b62006acd8460016200f9c6565b6040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3300000000000000000000008152506200cea8565b60248054604051630752092b60e01b81526004810185905262006bb99284926001600160a01b031691630752092b9101602060405180830381865afa15801562006b57573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b7d91906200f828565b6040518060400160405280601581526020017f746573745f41646451756f746541737365743a3a3400000000000000000000008152506200ce33565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562006c2a57600080fd5b505af115801562006c3f573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062006cd791906004016200f813565b600060405180830381600087803b15801562006cf257600080fd5b505af115801562006d07573d6000803e3d6000fd5b505060248054604051635a44092360e01b81526001600160a01b0386811660048301529091169350635a440923925001600060405180830381600087803b15801562006d5257600080fd5b505af115801562006d67573d6000803e3d6000fd5b5050604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166303ce0ad960e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062006ddf91906004016200f813565b600060405180830381600087803b15801562006dfa57600080fd5b505af115801562006e0f573d6000803e3d6000fd5b505060248054604051635a44092360e01b81526001600160a01b0386811660048301529091169350635a4409239250015b600060405180830381600087803b15801562006e5b57600080fd5b505af115801562006e70573d6000803e3d6000fd5b505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200171657838290600052602060002001805462006ebe906200f948565b80601f016020809104026020016040519081016040528092919081815260200182805462006eec906200f948565b801562006f3d5780601f1062006f115761010080835404028352916020019162006f3d565b820191906000526020600020905b81548152906001019060200180831162006f1f57829003601f168201915b50505050508152602001906001019062006e9c565b60008062006f668462ffffff87166200f9c6565b905060008360ff161162006f7b578062006f97565b62006f8a60ff8416826200fe83565b62006f979060016200f9c6565b905062006fa4816200cf92565b9150505b9392505050565b6024546040805163a217fddf60e01b815290516000926001600160a01b03169163a217fddf9160048083019260209291908290030181865afa15801562006ffa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200702091906200fb2e565b90506000602460009054906101000a90046001600160a01b03166001600160a01b0316631af5bacc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007078573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200709e91906200fb2e565b60248054604051632474521560e21b815260048101869052309281019290925291925062007159916001600160a01b0316906391d1485490604401602060405180830381865afa158015620070f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200711d91906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3100000000000000000000008152506200cdfd565b602454604080516306bd6eb360e21b81529051620072a2926001600160a01b0316916391d14854918391631af5bacc9160048083019260209291908290030181865afa158015620071ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071d491906200fb2e565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820152604401602060405180830381865afa15801562007240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200726691906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3200000000000000000000008152506200cd99565b602454604051632f2ff15d60e01b81526001600160a01b0390911690632f2ff15d90620073079084907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b600060405180830381600087803b1580156200732257600080fd5b505af115801562007337573d6000803e3d6000fd5b5050602454604051632474521560e21b81526200742593506001600160a01b0390911691506391d1485490620073a59085907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa158015620073c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620073e991906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3300000000000000000000008152506200cdfd565b60245460405163d547741f60e01b81526001600160a01b039091169063d547741f906200748a9084907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b600060405180830381600087803b158015620074a557600080fd5b505af1158015620074ba573d6000803e3d6000fd5b5050602454604051632474521560e21b8152620075a893506001600160a01b0390911691506391d1485490620075289085907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200756c91906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3400000000000000000000008152506200cd99565b604051630618f58760e51b8152633e3253cf60e11b600482015260008051602062023da78339815191529063c31eb0e090602401600060405180830381600087803b158015620075f757600080fd5b505af11580156200760c573d6000803e3d6000fd5b505060248054604051632f2ff15d60e01b81526000600482015230928101929092526001600160a01b03169250632f2ff15d9150604401600060405180830381600087803b1580156200765e57600080fd5b505af115801562007673573d6000803e3d6000fd5b50506024805460405163f2fde38b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116935063f2fde38b925001600060405180830381600087803b158015620076de57600080fd5b505af1158015620076f3573d6000803e3d6000fd5b505060248054604051632474521560e21b8152600481018790523092810192909252620077af93506001600160a01b031691506391d1485490604401602060405180830381865afa1580156200774d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200777391906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3500000000000000000000008152506200cdfd565b602454604051632474521560e21b815262007897916001600160a01b0316906391d1485490620078179086907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200785b91906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3600000000000000000000008152506200cd99565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200790857600080fd5b505af11580156200791d573d6000803e3d6000fd5b50505050602460009054906101000a90046001600160a01b03166001600160a01b03166379ba50976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200797257600080fd5b505af115801562007987573d6000803e3d6000fd5b5050602454604051632474521560e21b815262007a7593506001600160a01b0390911691506391d1485490620079f59086907f0000000000000000000000000000000000000000000000000000000000000000906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007a13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a3991906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3700000000000000000000008152506200cdfd565b602454604051632474521560e21b815262007b3d916001600160a01b0316906391d148549062007abd90869030906004019182526001600160a01b0316602082015260400190565b602060405180830381865afa15801562007adb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b0191906200fe63565b6040518060400160405280601581526020017f746573745f416363657373436f6e74726f6c3a3a3800000000000000000000008152506200cd99565b5050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620017165760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562007c1257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162007bd35790505b5050505050815250508152602001906001019062007b65565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562007c9c57600080fd5b505af115801562007cb1573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166024820152600a60448083019190915282518083039091018152606490910182526020810180516001600160e01b03166304fc2fe760e11b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062007d5091906004016200f813565b600060405180830381600087803b15801562007d6b57600080fd5b505af115801562007d80573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216925063659ac74b91506084016020604051808303816000875af115801562007df0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e1691906200f828565b5060007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006602d79883d2000060405162007e71906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562007eac573d6000803e3d6000fd5b5060408051600a60248083019190915282518083039091018152604490910182526020810180516001600160e01b0316637d9160bf60e11b179052905163f28dceb360e01b815291925060008051602062023da78339815191529163f28dceb39162007f1b916004016200f813565b600060405180830381600087803b15801562007f3657600080fd5b505af115801562007f4b573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af115801562007fb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fdd91906200f828565b5060405163379ee80360e01b8152600a600482015261138860248201819052601e604483015261025860648301526084820152619c4060a48201526103e860c48201526205573060e482015260006101048201526001600160a01b0382169063379ee8039061012401600060405180830381600087803b1580156200806157600080fd5b505af115801562008076573d6000803e3d6000fd5b5050601d54604080516001600160a01b0390921660248084019190915281518084039091018152604490920181526020820180516001600160e01b0316638e888ef360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb39250620080f191906004016200f813565b600060405180830381600087803b1580156200810c57600080fd5b505af115801562008121573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af11580156200818d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620081b391906200f828565b50601d54604051635a44092360e01b81526001600160a01b03918216600482015290821690635a44092390602401600060405180830381600087803b158015620081fc57600080fd5b505af115801562008211573d6000803e3d6000fd5b5050601d54604080516001600160a01b0390921660248084019190915281518084039091018152604490920181526020820180516001600160e01b0316632f9b185360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200828c91906004016200f813565b600060405180830381600087803b158015620082a757600080fd5b505af1158015620082bc573d6000803e3d6000fd5b5050601d5460405163659ac74b60e01b81526001600160a01b03918216600482018190526024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af115801562008324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200834a91906200f828565b506040805160048082526024820183526020820180516001600160e01b0316632573cfb960e21b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb392620083a5929091016200f813565b600060405180830381600087803b158015620083c057600080fd5b505af1158015620083d5573d6000803e3d6000fd5b5050601d5460405163659ac74b60e01b8152600060048201526001600160a01b039182166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af11580156200843d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200846391906200f828565b506040805160048082526024820183526020820180516001600160e01b03166328b4fcf960e21b179052915163f28dceb360e01b815260008051602062023da78339815191529263f28dceb392620084be929091016200f813565b600060405180830381600087803b158015620084d957600080fd5b505af1158015620084ee573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af11580156200855a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200858091906200f828565b50806001600160a01b031663b0384781826040516200859f906200f1b2565b6001600160a01b039091168152602001604051809103906000f080158015620085cc573d6000803e3d6000fd5b506040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200860f57600080fd5b505af115801562008624573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af115801562008690573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620086b691906200f828565b50601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663cb27a43560e01b1790525163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200874191906004016200f813565b600060405180830381600087803b1580156200875c57600080fd5b505af115801562008771573d6000803e3d6000fd5b5050601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a6064820152908416925063659ac74b91506084016020604051808303816000875af1158015620087dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b3d91906200f828565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526103e89060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200886557600080fd5b505af11580156200887a573d6000803e3d6000fd5b5050604080516602d79883d200008152602081018590527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50935001905060405180910390a16024805460405163e92d0d5d60e01b8152600481018490526001600160a01b039091169163e92d0d5d9101600060405180830381600087803b1580156200890557600080fd5b505af11580156200891a573d6000803e3d6000fd5b50505050620089d9602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008976573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200899c91906200fb2e565b826040518060400160405280601781526020017f746573745f536574466c6173684c6f616e4665653a3a310000000000000000008152506200cea8565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b15801562008a4a57600080fd5b505af115801562008a5f573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062008af791906004016200f813565b600060405180830381600087803b15801562008b1257600080fd5b505af115801562008b27573d6000803e3d6000fd5b50506024805460405163e92d0d5d60e01b81526602d79883d2000060048201526001600160a01b03909116935063e92d0d5d925001600060405180830381600087803b15801562008b7757600080fd5b505af115801562008b8c573d6000803e3d6000fd5b505060408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316631baa31e960e21b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb3925062008bf991906004016200f813565b600060405180830381600087803b15801562008c1457600080fd5b505af115801562008c29573d6000803e3d6000fd5b50506024805460405163e92d0d5d60e01b8152600481018690526001600160a01b03909116935063e92d0d5d925001600060405180830381600087803b15801562008c7357600080fd5b505af115801562008c88573d6000803e3d6000fd5b505050506000602460009054906101000a90046001600160a01b03166001600160a01b0316638ce9aa1c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008ce2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d0891906200fb2e565b905060008051602062023da783398151915263f28dceb3635e8988c160e01b62008d348460016200f9c6565b60405160248101919091526044810185905260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262008d90916004016200f813565b600060405180830381600087803b15801562008dab57600080fd5b505af115801562008dc0573d6000803e3d6000fd5b50506024546001600160a01b0316915063e92d0d5d905062008de48360016200f9c6565b6040518263ffffffff1660e01b815260040162006e4091815260200190565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008e44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e6a91906200f828565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562008ead573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ed391906200f828565b905062008ee2828b886200ce99565b62008eef818b876200ce99565b600062008efd85856200397f565b905060008167ffffffffffffffff81111562008f1d5762008f1d6200f848565b60405190808252806020026020018201604052801562008f47578160200160208202803683370190505b50905060005b828110156200904657600062008f658b838962006f52565b905060008b62ffffff168262ffffff161015801562008f87575060008960ff16115b62008f9457600062008fb5565b62008fb562008faf60ff8b16670de0b6b3a76400006200ff4b565b6200cfbe565b905060008c62ffffff168362ffffff161115801562008fd7575060008960ff16115b62008fe457600062008fff565b62008fff62008faf60ff8b16670de0b6b3a76400006200ff4b565b90506200900e8282856200cfea565b8585815181106200902357620090236200f984565b602002602001018181525050505050806200903e906200ff62565b905062008f4d565b506040516303223eab60e11b81526001600160a01b038d16600482015260008051602062023da7833981519152906306447d5690602401600060405180830381600087803b1580156200909857600080fd5b505af1158015620090ad573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562009101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200912791906200fe63565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562009178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200919e91906200fe63565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620091fe57600080fd5b505af115801562009213573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162009249939291906200ff7e565b6000604051808303816000875af115801562009269573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200929391908101906200ffe4565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001716578382906000526020600020018054620092ea906200f948565b80601f016020809104026020016040519081016040528092919081815260200182805462009318906200f948565b8015620093695780601f106200933d5761010080835404028352916020019162009369565b820191906000526020600020905b8154815290600101906020018083116200934b57829003601f168201915b505050505081526020019060010190620092c8565b60248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af1158015620093ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200941491906200f828565b60248054604051633c78a94160e01b81526001600160a01b038085166004830152939450921691633c78a9419101600060405180830381600087803b1580156200945d57600080fd5b505af115801562009472573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260008051602062023da7833981519152925063ca669fa79150602401600060405180830381600087803b158015620094e757600080fd5b505af1158015620094fc573d6000803e3d6000fd5b5050604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663118cdaa760e01b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200959491906004016200f813565b600060405180830381600087803b158015620095af57600080fd5b505af1158015620095c4573d6000803e3d6000fd5b505060248054604051633c78a94160e01b81526001600160a01b0386811660048301529091169350633c78a9419250016200400d565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa1580156200964a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200967091906200fdbe565b9998505050505050505050565b60075460009060ff161562009696575060075460ff1690565b604051630667f9d760e41b815260008051602062023da7833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200970a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200973091906200fb2e565b1415905090565b6024805460405163379ee80360e01b815260056004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b158015620097bf57600080fd5b505af1158015620097d4573d6000803e3d6000fd5b50506024805460405163379ee80360e01b815260146004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b0316925063379ee803915061012401600060405180830381600087803b1580156200986057600080fd5b505af115801562009875573d6000803e3d6000fd5b505060248054602254601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600560648401526000945016915063659ac74b906084016020604051808303816000875af1158015620098e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200990e91906200f828565b60248054602254601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082169381019390935262800000604484015260146064840152929350600092169063659ac74b906084016020604051808303816000875af115801562009980573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620099a691906200f828565b60248054601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082169381019390935262800000604484015260056064840152929350919091169063659ac74b906084016020604051808303816000875af115801562009a18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a3e91906200f828565b5060248054602254601d54604051636622e0d760e01b81526001600160a01b03928316600482015290821693810193909352600092911690636622e0d790604401600060405180830381865afa15801562009a9d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262009ac791908101906200fe99565b905062009b0d815160026040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3100000000000000000000008152506200cea8565b60008160008151811062009b255762009b256200f984565b6020026020010151905062009b758160200151856040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3200000000000000000000008152506200ce33565b62009bc0816000015161ffff1660056040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3300000000000000000000008152506200cea8565b60008260018151811062009bd85762009bd86200f984565b6020026020010151905062009c288160200151856040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3400000000000000000000008152506200ce33565b6200403d816000015161ffff1660146040518060400160405280601581526020017f746573745f476574416c6c4c4250616972733a3a3500000000000000000000008152506200cea8565b602454604080516306bd6eb360e21b8152905160008051602062023da78339815191529263f28dceb39263e2517d3f60e01b9230926001600160a01b031691631af5bacc9160048083019260209291908290030181865afa15801562009cdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009d0391906200fb2e565b6040516001600160a01b039092166024830152604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262009d65916004016200f813565b600060405180830381600087803b15801562009d8057600080fd5b505af115801562009d95573d6000803e3d6000fd5b505060248054601e54601d546040805160008082526020820192839052633a2f1a9160e01b9092526001600160a01b039485169750633a2f1a91965062009dea959385169490921692600a9290810162010038565b600060405180830381600087803b15801562009e0557600080fd5b505af115801562009e1a573d6000803e3d6000fd5b5050602454604080516306bd6eb360e21b815290516001600160a01b039092169350632f2ff15d92508391631af5bacc916004808201926020929091908290030181865afa15801562009e71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e9791906200fb2e565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401600060405180830381600087803b15801562009ed757600080fd5b505af115801562009eec573d6000803e3d6000fd5b5050604051630618f58760e51b815263d43a15d160e01b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b15801562009f3f57600080fd5b505af115801562009f54573d6000803e3d6000fd5b505060248054601e54601d546040805160008082526020820192839052633a2f1a9160e01b9092526001600160a01b039485169750633a2f1a91965062009fa9959385169490921692600a9290810162010038565b600060405180830381600087803b15801562009fc457600080fd5b505af115801562009fd9573d6000803e3d6000fd5b5050604051630618f58760e51b815263d43a15d160e01b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200a02c57600080fd5b505af11580156200a041573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a097949284169390911691600a91600191810162010038565b600060405180830381600087803b1580156200a0b257600080fd5b505af11580156200a0c7573d6000803e3d6000fd5b5050604051630618f58760e51b815263d43a15d160e01b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200a11a57600080fd5b505af11580156200a12f573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a188949284169390911691600a91600160a01b91810162010038565b600060405180830381600087803b1580156200a1a357600080fd5b505af11580156200a1b8573d6000803e3d6000fd5b5050505060006040516200a1cc906200f1dc565b604051809103906000f0801580156200a1e9573d6000803e3d6000fd5b5060408051610160810182526001600160a01b0383168152600160208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081019190915290915060006200a25c826200d028565b601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663b65ee95360e01b1790525163f28dceb360e01b815291925060008051602062023da78339815191529163f28dceb3916200a2e8916004016200f813565b600060405180830381600087803b1580156200a30357600080fd5b505af11580156200a318573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a36d949284169390911691600a918891810162010038565b600060405180830381600087803b1580156200a38857600080fd5b505af11580156200a39d573d6000803e3d6000fd5b5050601e54601d54604080516001600160a01b039384166024820152929091166044830152600a60648084019190915281518084039091018152608490920181526020820180516001600160e01b031663b65ee95360e01b1790525163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200a42b91906004016200f813565b600060405180830381600087803b1580156200a44657600080fd5b505af11580156200a45b573d6000803e3d6000fd5b505060248054601e54601d54604051630b301ae360e21b81526001600160a01b03928316600482015290821693810193909352600a6044840152169250632cc06b8c9150606401600060405180830381600087803b1580156200a4bd57600080fd5b505af11580156200a4d2573d6000803e3d6000fd5b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a60648401526000945016915063659ac74b906084016020604051808303816000875af11580156200a545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a56b91906200f828565b6040516340c3fa8b60e11b81526001600160a01b03808316600483015291925090851690638187f51690602401600060405180830381600087803b1580156200a5b357600080fd5b505af11580156200a5c8573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a61d949284169390911691600a918991810162010038565b600060405180830381600087803b1580156200a63857600080fd5b505af11580156200a64d573d6000803e3d6000fd5b505050506200a6db816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200a694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a6ba91906200fb2e565b8360405180606001604052806022815260200162023eb8602291396200d18c565b60408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663b70cd0db60e01b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200a74491906004016200f813565b600060405180830381600087803b1580156200a75f57600080fd5b505af11580156200a774573d6000803e3d6000fd5b505060248054601e54601d5460408051600081526020810191829052633a2f1a9160e01b9091526001600160a01b039384169650633a2f1a9195506200a7c9949284169390911691600a918991810162010038565b600060405180830381600087803b1580156200a7e457600080fd5b505af11580156200a7f9573d6000803e3d6000fd5b505060248054601e54601d54604051630b301ae360e21b81526001600160a01b03928316600482015290821693810193909352600a6044840152169250632cc06b8c9150606401600060405180830381600087803b1580156200a85b57600080fd5b505af11580156200a870573d6000803e3d6000fd5b505050506200a901816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200a8b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a8dd91906200fb2e565b6000801b60405180606001604052806022815260200162023e74602291396200d18c565b60408051600060248083019190915282518083039091018152604490910182526020810180516001600160e01b031663b70cd0db60e01b179052905163f28dceb360e01b815260008051602062023da78339815191529163f28dceb3916200a96d91906004016200f813565b600060405180830381600087803b1580156200a98857600080fd5b505af11580156200a99d573d6000803e3d6000fd5b505060248054601e54601d54604051630b301ae360e21b81526001600160a01b03928316600482015290821693810193909352600a6044840152169250632cc06b8c9150606401600060405180830381600087803b1580156200a9ff57600080fd5b505af11580156200aa14573d6000803e3d6000fd5b5050505050505050565b60248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015260009291169063659ac74b906084016020604051808303816000875af11580156200aa8e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aab491906200f828565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015290915060008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200ab1557600080fd5b505af11580156200ab2a573d6000803e3d6000fd5b5050604051600181526001600160a01b03841692507f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f915060200160405180910390a260248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526001606484015216906369d56ea390608401600060405180830381600087803b1580156200abd257600080fd5b505af11580156200abe7573d6000803e3d6000fd5b505060248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526000945016915063704037bd90606401608060405180830381865afa1580156200ac4f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ac7591906200f929565b90506200aca181602001518360405180606001604052806022815260200162023e96602291396200ce33565b6200accc8160600151600160405180606001604052806022815260200162023e2f602291396200cee0565b60405163248e63e160e11b81526001600482018190526024820181905260448201819052606482015260008051602062023da78339815191529063491cc7c290608401600060405180830381600087803b1580156200ad2a57600080fd5b505af11580156200ad3f573d6000803e3d6000fd5b5050604051600081526001600160a01b03851692507f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f915060200160405180910390a260248054601e54601d546040516369d56ea360e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526000606484015216906369d56ea390608401600060405180830381600087803b1580156200ade757600080fd5b505af11580156200adfc573d6000803e3d6000fd5b505060248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015262007b3d945016915063704037bd90606401608060405180830381865afa1580156200ae66573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ae8c91906200f929565b60600151600060405180606001604052806022815260200162023dc7602291396200cee0565b6024546040516000916001600160a01b0316906200aed0906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200aefd573d6000803e3d6000fd5b506024805460405163b038478160e01b81526001600160a01b03808516600483015293945092169163b03847819101600060405180830381600087803b1580156200af4757600080fd5b505af11580156200af5c573d6000803e3d6000fd5b5050604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630ded3b9560e31b179052905163f28dceb360e01b815260008051602062023da7833981519152935063f28dceb392506200afd491906004016200f813565b600060405180830381600087803b1580156200afef57600080fd5b505af11580156200b004573d6000803e3d6000fd5b50506024805460405163b038478160e01b81526001600160a01b038681166004830152909116935063b0384781925001600060405180830381600087803b1580156200b04f57600080fd5b505af11580156200b064573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006602d79883d200006040516200b0c2906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200b0fd573d6000803e3d6000fd5b5060405163379ee80360e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e482015260006101048201529091506001600160a01b0382169063379ee8039061012401600060405180830381600087803b1580156200b17e57600080fd5b505af11580156200b193573d6000803e3d6000fd5b5050601d54604051635a44092360e01b81526001600160a01b0391821660048201529084169250635a4409239150602401600060405180830381600087803b1580156200b1df57600080fd5b505af11580156200b1f4573d6000803e3d6000fd5b5050604051630618f58760e51b81526328b4fcf960e21b600482015260008051602062023da7833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200b24757600080fd5b505af11580156200b25c573d6000803e3d6000fd5b5050602254601d5460405163659ac74b60e01b81526001600160a01b039283166004820152908216602482015262800000604482015260016064820152908416925063659ac74b91506084016020604051808303816000875af11580156200b2c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b2ee91906200f828565b506000816040516200b300906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200b32d573d6000803e3d6000fd5b50604080516001600160a01b03831660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316630a3e70af60e11b179052905163f28dceb360e01b815291925060008051602062023da78339815191529163f28dceb3916200b3a4916004016200f813565b600060405180830381600087803b1580156200b3bf57600080fd5b505af11580156200b3d4573d6000803e3d6000fd5b50506024805460405163b038478160e01b81526001600160a01b038681166004830152909116935063b03847819250016200597d565b60606013805480602002602001604051908101604052809291908181526020018280548015620015c7576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620015a8575050505050905090565b670de0b6b3a76400008311156200b4ca5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b60006200b4d883836200397f565b905060008167ffffffffffffffff8111156200b4f8576200b4f86200f848565b6040519080825280602002602001820160405280156200b522578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200b543576200b5436200f848565b6040519080825280602002602001820160405280156200b56d578160200160208202803683370190505b50905060005b838110156200b67b5760006200b58b89838862006f52565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa1580156200b5e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b60791906200fb2e565b90508162ffffff168584815181106200b624576200b6246200f984565b60209081029190910101526200b644818a670de0b6b3a76400006200d1c4565b8484815181106200b659576200b6596200f984565b6020026020010181815250505050806200b673906200ff62565b90506200b573565b5060405163ca669fa760e01b81526001600160a01b038b16600482015260008051602062023da78339815191529063ca669fa790602401600060405180830381600087803b1580156200b6cd57600080fd5b505af11580156200b6e2573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200b71a908d908d908790879060040162010076565b6000604051808303816000875af11580156200b73a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200b76491908101906200fd85565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200b86e57601c5460405160008051602062023da78339815191529163b4d6c782916001600160a01b03909116906200b7d7906200f1ea565b604051809103906000f0801580156200b7f4573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200b839929190620100b8565b600060405180830381600087803b1580156200b85457600080fd5b505af11580156200b869573d6000803e3d6000fd5b505050505b60066040516200b87e906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b8a5573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200b8d7906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b8fe573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516008906200b930906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b957573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200b989906200f1ce565b60ff9091168152602001604051809103906000f0801580156200b9b0573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516012906200b9e2906200f1ce565b60ff9091168152602001604051809103906000f0801580156200ba09573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516012906200ba3b906200f1ce565b60ff9091168152602001604051809103906000f0801580156200ba62573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200ba91906200f1f8565b604051809103906000f0801580156200baae573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e617469766500000000000000000000000000000000000000000000000000606482015260008051602062023da78339815191529063c657c71890608401600060405180830381600087803b1580156200bb4f57600080fd5b505af11580156200bb64573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bbdc57600080fd5b505af11580156200bbf1573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bc6957600080fd5b505af11580156200bc7e573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bcf657600080fd5b505af11580156200bd0b573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bd8357600080fd5b505af11580156200bd98573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200be1057600080fd5b505af11580156200be25573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200be9757600080fd5b505af11580156200beac573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200bf3857600080fd5b505af11580156200bf4d573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200bfd4906200f1c0565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200c00f573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b039290921691821790556040516200c03d906200f1b2565b6001600160a01b039091168152602001604051809103906000f0801580156200c06a573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200c0c957600080fd5b505af11580156200c0de573d6000803e3d6000fd5b505050506200c0ec6200d1e8565b6200c0f8600a6200d561565b602454602b54601c546040516001600160a01b039384169392831692909116906200c123906200f206565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200c160573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200c19b906200f214565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200c1d8573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f757465720000000000000000000000000000000000000000000000000000606482015260008051602062023da78339815191529063c657c71890608401600060405180830381600087803b1580156200c27957600080fd5b505af11580156200c28e573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f7465720000000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c31a57600080fd5b505af11580156200c32f573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f727900000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c3be57600080fd5b505af11580156200c3d3573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e0000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c45f57600080fd5b505af11580156200c474573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f757465725631000000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c50057600080fd5b505af11580156200c515573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f727956310000000000000000000000000000000000000000000000606482015260008051602062023da7833981519152925063c657c7189150608401600060405180830381600087803b1580156200c5a157600080fd5b505af11580156200c5b6573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200c611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c63791906200fe63565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c68f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c6b591906200fe63565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c70d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c73391906200fe63565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c78b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c7b191906200fe63565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c809573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c82f91906200fe63565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c8ad91906200fe63565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c92b91906200fe63565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200c983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c9a991906200fe63565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ca01573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ca2791906200fe63565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ca7f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200caa591906200fe63565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cafd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cb2391906200fe63565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cb7b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cba191906200fe63565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cbf9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cc1f91906200fe63565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cc77573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cc9d91906200fe63565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ccf5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cd1b91906200fe63565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200cd73573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156a91906200fe63565b604051637ba0480960e01b815260008051602062023da783398151915290637ba04809906200cdcf9085908590600401620100dc565b60006040518083038186803b1580156200cde857600080fd5b505afa15801562006e70573d6000803e3d6000fd5b60405163a34edc0360e01b815260008051602062023da78339815191529063a34edc03906200cdcf9085908590600401620100dc565b604051632f2769d160e01b815260008051602062023da783398151915290632f2769d1906200ce6b90869086908690600401620100f9565b60006040518083038186803b1580156200ce8457600080fd5b505afa158015620059ad573d6000803e3d6000fd5b6200312c83838360006200d5d7565b6040516388b44c8560e01b815260008051602062023da7833981519152906388b44c85906200ce6b9086908690869060040162010127565b6040516326d8cf3f60e11b815260008051602062023da783398151915290634db19e7e906200ce6b9086908690869060040162010148565b60006200cf278484846200d7d2565b905062006fa86040518060400160405280600c81526020017f426f756e6420526573756c740000000000000000000000000000000000000000815250826200d9c5565b6000806200cf7986866200da0e565b90506200cf888185856200dab8565b9695505050505050565b8062ffffff811681146200cfb957604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff811681146200cfb95760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b805160208201516001600160a01b0390911690156200d04857600160a01b175b8160400151156200d06b5774020000000000000000000000000000000000000000175b8160600151156200d08e5774040000000000000000000000000000000000000000175b8160800151156200d0b15774080000000000000000000000000000000000000000175b8160a00151156200d0d45774100000000000000000000000000000000000000000175b8160c00151156200d0f75774200000000000000000000000000000000000000000175b8160e00151156200d11a5774400000000000000000000000000000000000000000175b816101000151156200d13e5774800000000000000000000000000000000000000000175b816101200151156200d163577501000000000000000000000000000000000000000000175b816101400151156200cfb957750200000000000000000000000000000000000000000017919050565b604051630c1fa1ed60e41b815260008051602062023da78339815191529063c1fa1ed0906200ce6b9086908690869060040162010127565b60008060006200d1d586866200dae1565b915091506200cf8886868685856200db00565b601c546001600160a01b0316156200d25d5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d24357600080fd5b505af11580156200d258573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200d2d25760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d2b857600080fd5b505af11580156200d2cd573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200d3475760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d32d57600080fd5b505af11580156200d342573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200d3bc5760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d3a257600080fd5b505af11580156200d3b7573d6000803e3d6000fd5b505050505b6022546001600160a01b0316156200d4315760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d41757600080fd5b505af11580156200d42c573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200d4a65760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d48c57600080fd5b505af11580156200d4a1573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200d51b5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200d50157600080fd5b505af11580156200d516573d6000803e3d6000fd5b505050505b6023546001600160a01b0316156200051a5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a440923910162000b1a565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee80390610124016200400d565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200d62d916201016d565b600060405180830381855afa9150503d80600081146200d66a576040519150601f19603f3d011682016040523d82523d6000602084013e6200d66f565b606091505b509150506000818060200190518101906200d68b91906200fb2e565b90506200d6c5846200d6be876200d6b76370a0823160e01b6200d6b0600c8d6200dbb6565b906200dbdc565b906200dbfa565b906200dc23565b821562006e705760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200d71091906201016d565b600060405180830381855afa9150503d80600081146200d74d576040519150601f19603f3d011682016040523d82523d6000602084013e6200d752565b606091505b509150506000818060200190518101906200d76e91906200fb2e565b9050828610156200d799576200d78586846200fe83565b6200d79190826200fe83565b90506200d7b4565b6200d7a583876200fe83565b6200d7b190826200f9c6565b90505b6200aa14816200d6be6318160ddd60e01b6200d6b0600c8d6200dbb6565b6000818311156200d84c5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e000060648201526084016200b4c1565b8284101580156200d85d5750818411155b156200d86b57508262006fa8565b60006200d87984846200fe83565b6200d8869060016200f9c6565b9050600385111580156200d89957508481115b156200d8b4576200d8ab85856200f9c6565b91505062006fa8565b6200d8c360036000196200fe83565b85101580156200d8df57506200d8dc856000196200fe83565b81115b156200d8ff576200d8f3856000196200fe83565b6200d8ab90846200fe83565b828511156200d9615760006200d91684876200fe83565b905060006200d92683836201018b565b9050806000036200d93d5784935050505062006fa8565b60016200d94b82886200f9c6565b6200d95791906200fe83565b935050506200d9bd565b838510156200d9bd5760006200d97886866200fe83565b905060006200d98883836201018b565b9050806000036200d99f5785935050505062006fa8565b6200d9ab81866200fe83565b6200d9b89060016200f9c6565b935050505b509392505050565b62007b3d82826040516024016200d9de929190620101a2565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b1790526200dc2f565b600060408203516020830351835180602086010180516002830161ffca8111156200da415763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf38852600c198801989098526035880160d81b604889901b177d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d731760201988015260f088901b8252603f909701601e198701209690528452601f19840152603f19909201919091525090565b600060355160ff600053603594855260609290921b600152506015919091526055600020915290565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200db26578383816200db1d576200db1d6200ff35565b0490506200dbad565b8382106200db47576040516313eae71560e01b815260040160405180910390fd5b60008486880960018619810187169687900496600081900381900490910186831190950394850291909503949094049390931792505060026003840281188085028203028085028203028085028203028085028203028085028203028085029091030282025b95945050505050565b6005820180546001600160a01b0319166001600160a01b03831617905560008262006fa8565b60038201805463ffffffff191660e083901c17905560008262006fa8565b6002820180546001810182556000918252602082206001600160a01b0384169101558262006fa8565b62007b3d82826200dc3a565b6200156a816200e047565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200dcad57602002820191906000526020600020905b8154815260200190600101908083116200dc98575b505050505090506000836200dcc2836200e068565b6040516020016200dcd5929190620101c6565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200dd29918691889101620101f9565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200dd64576200dd62876200e11c565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200dda5918791899101620101f9565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200ddec91906201016d565b600060405180830381855afa9150503d80600081146200de29576040519150601f19603f3d011682016040523d82523d6000602084013e6200de2e565b606091505b5091506200de4b9050816200de4588602062010235565b6200e129565b604051630667f9d760e41b81526001600160a01b038a166004820152602481018590529092506000915060008051602062023da78339815191529063667f9d7090604401602060405180830381865afa1580156200dead573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ded391906200fb2e565b90508082146200df8a5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200b4c1565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a905260008051602062023da7833981519152906370ca10bb90606401600060405180830381600087803b1580156200dfe957600080fd5b505af11580156200dffe573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200e03360028b0160006200f222565b896004016000905550505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606000825160206200e07c919062010235565b67ffffffffffffffff8111156200e097576200e0976200f848565b6040519080825280601f01601f1916602001820160405280156200e0c2576020820181803683370190505b50905060005b83518110156200e1155760008482815181106200e0e9576200e0e96200f984565b6020026020010151905080826020026020018401525080806200e10c906200ff62565b9150506200e0c8565b5092915050565b6000620039ce826200e1cb565b600080600060208551116200e1405784516200e143565b60205b905060005b818110156200e1c1576200e15e81600862010235565b866200e16b83886200f9c6565b815181106200e17e576200e17e6200f984565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200e1b8816200ff62565b9150506200e148565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200e23d57602002820191906000526020600020905b8154815260200190600101908083116200e228575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200e28992508591879101620101f9565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200e328576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200e2f8918591879101620101f9565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200e336836200f06d565b6040516020016200e349929190620101c6565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200e3b957600080fd5b505af11580156200e3ce573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200e3ef91906201016d565b600060405180830381855afa9150503d80600081146200e42c576040519150601f19603f3d011682016040523d82523d6000602084013e6200e431565b606091505b5091506200e44e9050816200e44887602062010235565b6200f11a565b6040516365bc948160e01b81526001600160a01b03891660048201529092506000915060008051602062023da7833981519152906365bc9481906024016000604051808303816000875af11580156200e4ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200e4d591908101906201024f565b50905080516001036200e8795760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200e52d576200e52d6200f984565b60200260200101516040518363ffffffff1660e01b81526004016200e5679291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200e585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e5ab91906200fb2e565b9050806200e616577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200e5eb576200e5eb6200f984565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200e6cb5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200b4c1565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200e703929190620101f9565b60405160208183030381529060405280519060200120856000815181106200e72f576200e72f6200f984565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200e789576200e7896200f984565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200e7d4918a918c9101620101f9565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200e83e918a918c9101620101f9565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200eee2565b6001815111156200ee715760005b81518110156200ee6a5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200e8db576200e8db6200f984565b60200260200101516040518363ffffffff1660e01b81526004016200e9159291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200e933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e95991906200fb2e565b9050806200e9c3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200e998576200e9986200f984565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200e9d257506200ee55565b825181199060008051602062023da7833981519152906370ca10bb908c908790879081106200ea05576200ea056200f984565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200ea5e57600080fd5b505af11580156200ea73573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200ea9591906201016d565b600060405180830381855afa9150503d80600081146200ead2576040519150601f19603f3d011682016040523d82523d6000602084013e6200ead7565b606091505b5090925090506200eaef816200e4488c602062010235565b9650508080156200eaff57508186145b156200ed97577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200eb3d929190620101f9565b604051602081830303815290604052805190602001208888815181106200eb68576200eb686200f984565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200ebc1576200ebc16200f984565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200ec0c918d918f9101620101f9565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200ec99929190620101f9565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200ed1c576200ed1c6200f984565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200ed7557600080fd5b505af11580156200ed8a573d6000803e3d6000fd5b505050505050506200ee6a565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200eddf576200eddf6200f984565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200ee3857600080fd5b505af11580156200ee4d573d6000803e3d6000fd5b505050505050505b806200ee61816200ff62565b9150506200e887565b506200eee2565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e60648201526084016200b4c1565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200ef269188918a9101620101f9565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200efc35760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e000000000000000000000000000000000060648201526084016200b4c1565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200eff460028a0160006200f222565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200f03a9188918a9101620101f9565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200f081919062010235565b67ffffffffffffffff8111156200f09c576200f09c6200f848565b6040519080825280601f01601f1916602001820160405280156200f0c7576020820181803683370190505b50905060005b83518110156200e1155760008482815181106200f0ee576200f0ee6200f984565b6020026020010151905080826020026020018401525080806200f111906200ff62565b9150506200f0cd565b600080600060208551116200f1315784516200f134565b60205b905060005b818110156200e1c1576200f14f81600862010235565b866200f15c83886200f9c6565b815181106200f16f576200f16f6200f984565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200f1a9816200ff62565b9150506200f139565b61615c80620102bb83390190565b613199806201641783390190565b610bfd80620195b083390190565b610c47806201a1ad83390190565b610b08806201adf483390190565b610c18806201b8fc83390190565b614c80806201c51483390190565b612c13806202119483390190565b50805460008255906000526020600020908101906200156a91905b808211156200f25357600081556001016200f23d565b5090565b6000602082840312156200f26a57600080fd5b81356001600160e01b03198116811462006fa857600080fd5b6020808252825182820181905260009190848201906040850190845b818110156200f2c65783516001600160a01b0316835292840192918401916001016200f29f565b50909695505050505050565b60005b838110156200f2ef5781810151838201526020016200f2d5565b50506000910152565b600081518084526200f3128160208601602086016200f2d2565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200f3dc57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200f3c557605f198985030183526200f3b28486516200f2f8565b948e01949350918d01916001016200f393565b505050978a0197945050918801916001016200f34d565b50919a9950505050505050505050565b803560ff811681146200cfb957600080fd5b600080604083850312156200f41257600080fd5b6200f41d836200f3ec565b91506200f42d602084016200f3ec565b90509250929050565b61ffff811681146200156a57600080fd5b62ffffff811681146200156a57600080fd5b80151581146200156a57600080fd5b60008060008060008060008060006101208a8c0312156200f48857600080fd5b89356200f495816200f436565b985060208a01356200f4a7816200f436565b975060408a01356200f4b9816200f436565b965060608a01356200f4cb816200f436565b955060808a01356200f4dd816200f436565b945060a08a01356200f4ef816200f447565b935060c08a01356200f501816200f436565b925060e08a01356200f513816200f447565b91506101008a01356200f526816200f459565b809150509295985092959850929598565b6000602082840312156200f54a57600080fd5b813562006fa8816200f436565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200f5ff57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200f5e95783516001600160e01b0319168252928b019260019290920191908b01906200f5bd565b50978a019795505050918701916001016200f57f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200f66757603f198886030184526200f6548583516200f2f8565b945092850192908501906001016200f635565b5092979650505050505050565b6000806000606084860312156200f68a57600080fd5b83356200f697816200f447565b9250602084013591506200f6ae604085016200f3ec565b90509250925092565b6001600160a01b03811681146200156a57600080fd5b600080600080600080600080610100898b0312156200f6eb57600080fd5b88356200f6f8816200f6b7565b975060208901356200f70a816200f6b7565b965060408901356200f71c816200f6b7565b955060608901356200f72e816200f447565b94506080890135935060a089013592506200f74c60c08a016200f3ec565b91506200f75c60e08a016200f3ec565b90509295985092959890939650565b600080600080600080600060e0888a0312156200f78757600080fd5b87356200f794816200f6b7565b965060208801356200f7a6816200f6b7565b955060408801356200f7b8816200f6b7565b945060608801356200f7ca816200f447565b9350608088013592506200f7e160a089016200f3ec565b91506200f7f160c089016200f3ec565b905092959891949750929550565b6001600160a01b0391909116815260200190565b60208152600062006fa860208301846200f2f8565b6000602082840312156200f83b57600080fd5b815162006fa8816200f6b7565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200f88a576200f88a6200f848565b604052919050565b6000608082840312156200f8a557600080fd5b6040516080810181811067ffffffffffffffff821117156200f8cb576200f8cb6200f848565b806040525080915082516200f8e0816200f436565b815260208301516200f8f2816200f6b7565b602082015260408301516200f907816200f459565b604082015260608301516200f91c816200f459565b6060919091015292915050565b6000608082840312156200f93c57600080fd5b62006fa883836200f892565b600181811c908216806200f95d57607f821691505b6020821081036200f97e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115620039ce57620039ce6200f9b0565b600081518084526020808501945080840160005b838110156200fa0e578151875295820195908201906001016200f9f0565b509495945050505050565b600081518084526020808501945080840160005b838110156200fa0e5781516001600160a01b0316875295820195908201906001016200fa2d565b60008151606084526200fa6b60608501826200f9dc565b6020848101518683038783015280518084529082019350909160009190830190825b818110156200fac8578551600281106200fab557634e487b7160e01b85526021600452602485fd5b835294840194918401916001016200fa8d565b50506040860151935086810360408801526200fae581856200fa19565b979650505050505050565b85815284602082015260a0604082015260006200fb1160a08301866200fa54565b6001600160a01b0394909416606083015250608001529392505050565b6000602082840312156200fb4157600080fd5b5051919050565b600080600080608085870312156200fb5f57600080fd5b84516200fb6c816200f447565b60208601519094506200fb7f816200f447565b60408601519093506200fb92816200f447565b606086015190925064ffffffffff811681146200fbae57600080fd5b939692955090935050565b61ffff8181168382160280821691908281146200fbda576200fbda6200f9b0565b505092915050565b62ffffff8181168382160280821691908281146200fbda576200fbda6200f9b0565b600080600080600080600060e0888a0312156200fc2057600080fd5b87516200fc2d816200f436565b60208901519097506200fc40816200f436565b60408901519096506200fc53816200f436565b60608901519095506200fc66816200f436565b60808901519094506200fc79816200f447565b60a08901519093506200fc8c816200f436565b60c08901519092506200fc9f816200f447565b8091505092959891949750929550565b61ffff8181168382160190808211156200e115576200e1156200f9b0565b61ffff8281168282160390808211156200e115576200e1156200f9b0565b600067ffffffffffffffff8211156200fd08576200fd086200f848565b5060051b60200190565b600082601f8301126200fd2457600080fd5b815160206200fd3d6200fd37836200fceb565b6200f85e565b82815260059290921b840181019181810190868411156200fd5d57600080fd5b8286015b848110156200fd7a57805183529183019183016200fd61565b509695505050505050565b6000602082840312156200fd9857600080fd5b815167ffffffffffffffff8111156200fdb057600080fd5b6200d020848285016200fd12565b600080600080600080600080610100898b0312156200fddc57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e08901516200fe1a816200f459565b809150509295985092959890939650565b60ff8181168382160190811115620039ce57620039ce6200f9b0565b60ff8281168282160390811115620039ce57620039ce6200f9b0565b6000602082840312156200fe7657600080fd5b815162006fa8816200f459565b81810381811115620039ce57620039ce6200f9b0565b600060208083850312156200fead57600080fd5b825167ffffffffffffffff8111156200fec557600080fd5b8301601f810185136200fed757600080fd5b80516200fee86200fd37826200fceb565b81815260079190911b820183019083810190878311156200ff0857600080fd5b928401925b828410156200fae5576200ff2288856200f892565b825284820191506080840193506200ff0d565b634e487b7160e01b600052601260045260246000fd5b6000826200ff5d576200ff5d6200ff35565b500490565b6000600182016200ff77576200ff776200f9b0565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200ffcb578551835294830194918301916001016200ffad565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200fffa57600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156201002057600080fd5b6201002e868287016200fd12565b9150509250925092565b60006001600160a01b03808816835280871660208401525061ffff8516604083015283606083015260a060808301526200fae560a08301846200f2f8565b60006001600160a01b03808716835280861660208401525060806040830152620100a460808301856200f9dc565b82810360608401526200fae581856200f9dc565b6001600160a01b03831681526040602082015260006200d02060408301846200f2f8565b82151581526040602082015260006200d02060408301846200f2f8565b60006001600160a01b038086168352808516602084015250606060408301526200dbad60608301846200f2f8565b8381528260208201526060604082015260006200dbad60608301846200f2f8565b831515815282151560208201526060604082015260006200dbad60608301846200f2f8565b60008251620101818184602087016200f2d2565b9190910192915050565b6000826201019d576201019d6200ff35565b500690565b604081526000620101b760408301856200f2f8565b90508260208301529392505050565b6001600160e01b0319831681528151600090620101eb8160048501602087016200f2d2565b919091016004019392505050565b825160009082906020808701845b83811015620102255781518552938201939082019060010162010207565b5050948252509092019392505050565b8082028115828204841417620039ce57620039ce6200f9b0565b600080604083850312156201026357600080fd5b825167ffffffffffffffff808211156201027c57600080fd5b6201028a868387016200fd12565b93506020850151915080821115620102a157600080fd5b50620102b0858286016200fd12565b915050925092905056fe60c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c63430008140033608060405234801561001057600080fd5b50610c27806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806379c8ccf7116100b2578063c2fb5a6411610081578063ea9db9d311610066578063ea9db9d3146102c3578063fdc27257146102d6578063feee3735146102e957600080fd5b8063c2fb5a64146102b3578063d826f88f146102bb57600080fd5b806379c8ccf7146102305780637a51a4c6146102435780638187f51614610256578063a8aa1b31146102a057600080fd5b806353e8079b116101095780635f9c01b1116100ee5780635f9c01b1146101ea57806360bed5f31461020a57806367ddb2781461021d57600080fd5b806353e8079b146101c2578063571eed37146101d557600080fd5b806309fa1f901461013b5780630d4abdb3146101585780634e430b5a1461019c578063505d9033146101af575b600080fd5b6101436102fc565b60405190151581526020015b60405180910390f35b61016b6101663660046107b6565b61030b565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014f565b61016b6101aa36600461081f565b610334565b61016b6101bd36600461089b565b61037e565b61016b6101d03660046108d7565b6103a3565b6101dd6103ca565b60405161014f9190610929565b6101f2610458565b6040516001600160a01b03909116815260200161014f565b61016b610218366004610977565b61046c565b61016b61022b3660046109b9565b610493565b61016b61023e3660046109b9565b6104c0565b61016b6102513660046107b6565b6104ed565b61029e610264366004610a5b565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b005b6002546101f2906001600160a01b031681565b6101dd610516565b61029e610523565b61016b6102d13660046109b9565b61053c565b61016b6102e43660046109b9565b610569565b61016b6102f73660046108d7565b610596565b60006103066105bd565b905090565b600061031561064a565b610322868686868661067b565b50630d4abdb360e01b95945050505050565b600061033e61064a565b6103466105bd565b61036357604051632def67a360e21b815260040160405180910390fd5b61036e848484610690565b5063272185ad60e11b9392505050565b600061038861064a565b610393848484610690565b5063505d903360e01b9392505050565b60006103ad61064a565b6103b9858585856106a3565b506353e8079b60e01b949350505050565b600080546103d790610a7d565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610a7d565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505081565b60006103066002546001600160a01b031690565b600061047661064a565b610482858585856106a3565b506360bed5f360e01b949350505050565b600061049d61064a565b6104ac888888888888886106b8565b50630cfbb64f60e31b979650505050505050565b60006104ca61064a565b6104d9888888888888886106d0565b506379c8ccf760e01b979650505050505050565b60006104f761064a565b61050486868686866106dd565b50633d28d26360e11b95945050505050565b600180546103d790610a7d565b61052e6000806106f8565b61053a600160006106f8565b565b600061054661064a565b610555888888888888886106d0565b5063ea9db9d360e01b979650505050505050565b600061057361064a565b610582888888888888886106b8565b5063fdc2725760e01b979650505050505050565b60006105a061064a565b6105ac858585856106eb565b5063feee373560e01b949350505050565b6000806106396105d56002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106369190610ab7565b90565b6001600160a01b0316301492915050565b6002546001600160a01b0316331461053a57604051634a27038360e01b815233600482015260240160405180910390fd5b6000610688368280610b31565b505050505050565b600061069d368280610b31565b50505050565b60016106b136600083610b31565b5050505050565b60016106c636600083610b31565b5050505050505050565b60006106c6368280610b31565b600161068836600083610b31565b60006106b1368280610b31565b50805461070490610a7d565b6000825580601f10610714575050565b601f0160209004906000526020600020908101906107329190610735565b50565b5b8082111561074a5760008155600101610736565b5090565b80356001600160a01b038116811461076557600080fd5b919050565b60008083601f84011261077c57600080fd5b50813567ffffffffffffffff81111561079457600080fd5b6020830191508360208260051b85010111156107af57600080fd5b9250929050565b6000806000806000608086880312156107ce57600080fd5b6107d78661074e565b94506107e56020870161074e565b9350604086013567ffffffffffffffff81111561080157600080fd5b61080d8882890161076a565b96999598509660600135949350505050565b60008060006040848603121561083457600080fd5b83359250602084013567ffffffffffffffff8082111561085357600080fd5b818601915086601f83011261086757600080fd5b81358181111561087657600080fd5b87602082850101111561088857600080fd5b6020830194508093505050509250925092565b6000806000606084860312156108b057600080fd5b6108b98461074e565b92506108c76020850161074e565b9150604084013590509250925092565b600080600080608085870312156108ed57600080fd5b6108f68561074e565b93506109046020860161074e565b92506040850135801515811461091957600080fd5b9396929550929360600135925050565b600060208083528351808285015260005b818110156109565785810183015185820160400152820161093a565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806080858703121561098d57600080fd5b6109968561074e565b93506109a46020860161074e565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156109d457600080fd5b6109dd8861074e565b96506109eb6020890161074e565b95506109f96040890161074e565b9450606088013567ffffffffffffffff80821115610a1657600080fd5b610a228b838c0161076a565b909650945060808a0135915080821115610a3b57600080fd5b50610a488a828b0161076a565b989b979a50959850939692959293505050565b600060208284031215610a6d57600080fd5b610a768261074e565b9392505050565b600181811c90821680610a9157607f821691505b602082108103610ab157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ac957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b601f821115610b2c57600081815260208120601f850160051c81016020861015610b0d5750805b601f850160051c820191505b8181101561068857828155600101610b19565b505050565b67ffffffffffffffff831115610b4957610b49610ad0565b610b5d83610b578354610a7d565b83610ae6565b6000601f841160018114610b915760008515610b795750838201355b600019600387901b1c1916600186901b1783556106b1565b600083815260209020601f19861690835b82811015610bc25786850135825560209485019460019092019101610ba2565b5086821015610bdf5760001960f88860031b161c19848701351681555b505060018560011b018355505050505056fea2646970667358221220807d152e5200b82d0890813e63c91c3287e3ec0bf9488b9534bdc624330825a064736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f5365744c425061697249676e6f726564466f72526f7574696e673a3a33746573745f4372656174654c4250616972466163746f7279556e6c6f636b65643a3a31746573745f4372656174654c4250616972466163746f7279556e6c6f636b65643a3a33746573745f5365744c425061697249676e6f726564466f72526f7574696e673a3a32746573745f4372656174654c4250616972466163746f7279556e6c6f636b65643a3a32746573745f7365744c42486f6f6b73506172616d65746572734f6e506169723a3a32746573745f5365744c425061697249676e6f726564466f72526f7574696e673a3a31746573745f7365744c42486f6f6b73506172616d65746572734f6e506169723a3a31a264697066735822122023a4e15b45109157958c49c26a66dd9702be6bfd824adc771e541add2458479c64736f6c63430008140033","sourceMap":"618:35979:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;1957:63:83;;;:::i;:::-;;12925:1148;;;:::i;7616:1660::-;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;3010:467:83:-;;;:::i;19211:4896::-;;;:::i;2026:978::-;;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;17481:1724:83:-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4048:25:105;;;4036:2;4021:18;12046:168:93;3902:177:105;29258:942:83;;;:::i;14079:3396::-;;;;;;:::i;:::-;;:::i;24113:833::-;;;:::i;26092:2010::-;;;;;;:::i;:::-;;:::i;4736:2874::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;28108:1144:83:-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;9032:8:105;9020:21;;;9002:40;;8990:2;8975:18;12220:205:93;8858:190:105;35296:1299:83;;;:::i;3069:146:5:-;;;:::i;9282:2580:83:-;;;:::i;24952:1134::-;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;30206:366:83:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;30578:1723:83:-;;;:::i;32307:2983::-;;;:::i;11868:1051::-;;;:::i;3483:1247::-;;;:::i;2304:142:5:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;1957:63:83:-;2000:13;:11;:13::i;:::-;1957:63::o;12925:1148::-;13045:15;;-1:-1:-1;;;13045:15:83;;-1:-1:-1;;;;;13054:5:83;11255:55:105;13045:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;13045:8:83;;;11210:18:105;;13045:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13086:74:83;;;13154:5;-1:-1:-1;;;;;11255:55:105;13086:74:83;;;;11237::105;;;;13086::83;;;;;;;;;;11210:18:105;;;;13086:74:83;;;;;;;-1:-1:-1;;;;;13086:74:83;-1:-1:-1;;;13086:74:83;;;13070:91;;-1:-1:-1;;;13070:91:83;;-1:-1:-1;;;;;;;;;;;13070:15:83;-1:-1:-1;13070:15:83;;-1:-1:-1;13070:91:83;;13086:74;13070:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13171:7:83;;;13196:4;;13202;;13171:60;;-1:-1:-1;;;13171:60:83;;-1:-1:-1;;;;;13196:4:83;;;13171:60;;;12114:34:105;13202:4:83;;;12164:18:105;;;12157:43;;;;1147:2:93;12216:18:105;;;12209:47;13171:7:83;12272:18:105;;;12265:50;13171:7:83;;-1:-1:-1;13171:24:83;;-1:-1:-1;12025:19:105;;13171:60:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13389:4:83;;13395;;13315:103;;;-1:-1:-1;;;;;13389:4:83;;;13315:103;;;12625:34:105;13395:4:83;;;;12675:18:105;;;12668:43;1147:2:93;12727:18:105;;;;12720:47;;;;13315:103:83;;;;;;;;;;12537:18:105;;;;13315:103:83;;;;;;;-1:-1:-1;;;;;13315:103:83;-1:-1:-1;;;13315:103:83;;;13286:142;-1:-1:-1;;;13286:142:83;;-1:-1:-1;;;;;;;;;;;13286:15:83;-1:-1:-1;13286:15:83;;-1:-1:-1;13286:142:83;;13315:103;13286:142;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13438:7:83;;;13463:4;;13469;;13438:60;;-1:-1:-1;;;13438:60:83;;-1:-1:-1;;;;;13463:4:83;;;13438:60;;;12114:34:105;13469:4:83;;;12164:18:105;;;12157:43;;;;1147:2:93;12216:18:105;;;12209:47;13438:7:83;12272:18:105;;;12265:50;13438:7:83;;-1:-1:-1;13438:24:83;;-1:-1:-1;12025:19:105;;13438:60:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13509:7:83;;;13530:4;;13536;;13509:58;;-1:-1:-1;;;13509:58:83;;-1:-1:-1;;;;;13530:4:83;;;13509:58;;;13104:34:105;13536:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;13509:7:83;;-1:-1:-1;13509:20:83;;-1:-1:-1;13015:19:105;;13509:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13643:91:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13643:91:83;-1:-1:-1;;;13643:91:83;;;13627:108;;-1:-1:-1;;;13627:108:83;;-1:-1:-1;;;;;;;;;;;13627:15:83;;;:108;;13643:91;;13627:108;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13745:7:83;;;13770:4;;13776;;13745:61;;-1:-1:-1;;;13745:61:83;;-1:-1:-1;;;;;13770:4:83;;;13745:61;;;12114:34:105;13776:4:83;;;12164:18:105;;;12157:43;;;;1147:2:93;12216:18:105;;;12209:47;13745:7:83;12272:18:105;;;12265:50;13745:7:83;;-1:-1:-1;13745:24:83;;-1:-1:-1;12025:19:105;;13745:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13817:7:83;;;13842:4;;13848;;13817:60;;-1:-1:-1;;;13817:60:83;;-1:-1:-1;;;;;13842:4:83;;;13817:60;;;12114:34:105;13848:4:83;;;12164:18:105;;;12157:43;;;;1147:2:93;12216:18:105;;;12209:47;13817:7:83;12272:18:105;;;12265:50;13817:7:83;;-1:-1:-1;13817:24:83;;-1:-1:-1;12025:19:105;;13817:60:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13904:91:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13904:91:83;-1:-1:-1;;;13904:91:83;;;13888:108;;-1:-1:-1;;;13888:108:83;;-1:-1:-1;;;;;;;;;;;13888:15:83;-1:-1:-1;13888:15:83;;-1:-1:-1;13888:108:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14006:7:83;;;14031:4;;14037;;14006:60;;-1:-1:-1;;;14006:60:83;;-1:-1:-1;;;;;14031:4:83;;;14006:60;;;12114:34:105;14037:4:83;;;12164:18:105;;;12157:43;;;;1147:2:93;12216:18:105;;;12209:47;14006:7:83;12272:18:105;;;12265:50;14006:7:83;;-1:-1:-1;14006:24:83;;-1:-1:-1;12025:19:105;;14006:60:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12925:1148::o;7616:1660::-;7740:15;;-1:-1:-1;;;7740:15:83;;-1:-1:-1;;;;;7749:5:83;11255:55:105;7740:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;7740:8:83;;;11210:18:105;;7740:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7794:102:83;;;7872:5;-1:-1:-1;;;;;13794:55:105;7794:102:83;;;13776:74:105;1147:2:93;13866:18:105;;;;13859:47;;;;7794:102:83;;;;;;;;;;13749:18:105;;;;7794:102:83;;;;;;;-1:-1:-1;;;;;7794:102:83;-1:-1:-1;;;7794:102:83;;;7765:141;;-1:-1:-1;;;7765:141:83;;-1:-1:-1;;;;;;;;;;;7765:15:83;-1:-1:-1;7765:15:83;;-1:-1:-1;7765:141:83;;7794:102;7765:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7916:7:83;;;7937:4;;7943;;7916:58;;-1:-1:-1;;;7916:58:83;;-1:-1:-1;;;;;7937:4:83;;;7916:58;;;13104:34:105;7943:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;7916:7:83;;-1:-1:-1;7916:20:83;;-1:-1:-1;13015:19:105;;7916:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7985:7:83;;;:50;;-1:-1:-1;;;7985:50:83;;1147:2:93;7985:50:83;;;14083:38:105;7985:7:83;14137:18:105;;;14130:50;;;;-1:-1:-1;;;;;7985:7:83;;:26;;14056:18:105;;7985:50:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8097:15:83;;-1:-1:-1;;;8097:15:83;;-1:-1:-1;;;;;8106:5:83;11255:55:105;8097:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;8097:8:83;-1:-1:-1;8097:8:83;;-1:-1:-1;11210:18:105;;8097:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8122:7:83;;;8143:4;;8149;;8122:58;;-1:-1:-1;;;8122:58:83;;-1:-1:-1;;;;;8143:4:83;;;8122:58;;;13104:34:105;8149:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;8122:7:83;;-1:-1:-1;8122:20:83;;-1:-1:-1;13015:19:105;;8122:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8216:7:83;;;8245:4;;8251;;8216:58;;-1:-1:-1;;;8216:58:83;;-1:-1:-1;;;;;8245:4:83;;;8216:58;;;12625:34:105;8251:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;8191:159:83;;8216:7;;;:28;;12537:18:105;;8216:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;;8191:159;;;;;;;;;;;;;;;;;:11;:159::i;:::-;8361:13;;-1:-1:-1;;;8361:13:83;;-1:-1:-1;;;;;8370:3:83;11255:55:105;8361:13:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;8361:8:83;;;11210:18:105;;8361:13:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8384:7:83;;;8405:4;;8411;;8384:58;;-1:-1:-1;;;8384:58:83;;-1:-1:-1;;;;;8405:4:83;;;8384:58;;;13104:34:105;8411:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;8384:7:83;;-1:-1:-1;8384:20:83;;-1:-1:-1;13015:19:105;;8384:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8478:7:83;;;8507:4;;8513;;8478:58;;-1:-1:-1;;;8478:58:83;;-1:-1:-1;;;;;8507:4:83;;;8478:58;;;12625:34:105;8513:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;8453:159:83;;8478:7;;;:28;;12537:18:105;;8478:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;;8453:159;;;;;;;;;;;;;;;;;:11;:159::i;:::-;8623:7;;;8644:3;;8649:4;;8623:57;;-1:-1:-1;;;8623:57:83;;-1:-1:-1;;;;;8644:3:83;;;8623:57;;;13104:34:105;8649:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;8623:7:83;;:20;;13015:19:105;;8623:57:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8715:7:83;;;8744:3;;8749:4;;8715:57;;-1:-1:-1;;;8715:57:83;;-1:-1:-1;;;;;8744:3:83;;;8715:57;;;12625:34:105;8749:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;8691:157:83;;8715:7;;;:28;;12537:18:105;;8715:57:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;8691:157;;;;;;;;;;;;;;;;;:10;:157::i;:::-;8904:7;;;:51;;-1:-1:-1;;;8904:51:83;;1147:2:93;8904:51:83;;;14083:38:105;8904:7:83;14137:18:105;;;14130:50;;;;-1:-1:-1;;;;;8904:7:83;;:26;;14056:18:105;;8904:51:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8966:15:83;;-1:-1:-1;;;8966:15:83;;-1:-1:-1;;;;;8975:5:83;11255:55:105;8966:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;8966:8:83;-1:-1:-1;8966:8:83;;-1:-1:-1;11210:18:105;;8966:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9020:102:83;;;9098:5;-1:-1:-1;;;;;13794:55:105;9020:102:83;;;13776:74:105;1147:2:93;13866:18:105;;;;13859:47;;;;9020:102:83;;;;;;;;;;13749:18:105;;;;9020:102:83;;;;;;;-1:-1:-1;;;;;9020:102:83;-1:-1:-1;;;9020:102:83;;;8991:141;;-1:-1:-1;;;8991:141:83;;-1:-1:-1;;;;;;;;;;;8991:15:83;-1:-1:-1;8991:15:83;;-1:-1:-1;8991:141:83;;9020:102;8991:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9142:7:83;;;9163:4;;9169;;9142:58;;-1:-1:-1;;;9142:58:83;;-1:-1:-1;;;;;9163:4:83;;;9142:58;;;13104:34:105;9169:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;9142:7:83;;-1:-1:-1;9142:20:83;;-1:-1:-1;13015:19:105;;9142:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9211:7:83;;;9232:4;;9238;;9211:58;;-1:-1:-1;;;9211:58:83;;-1:-1:-1;;;;;9232:4:83;;;9211:58;;;13104:34:105;9238:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;9211:7:83;;:20;;13015:19:105;;9211:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7616:1660::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3010:467:83:-;3106:7;;3095:19;;3067:25;;-1:-1:-1;;;;;3106:7:83;;3095:19;;;:::i;:::-;-1:-1:-1;;;;;11255:55:105;;;11237:74;;11225:2;11210:18;3095:19:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37:83;;-1:-1:-1;;;3171:37:83;;3185:4;3171:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;3067:47:83;;-1:-1:-1;;;;;;;;;;;;3171:13:83;;;17033:19:105;;3171:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3247:18:83;;3223:62;;;-1:-1:-1;;;;;3247:18:83;;;17558:34:105;;17628:15;;;17623:2;17608:18;;17601:43;3223:62:83;;-1:-1:-1;17470:18:105;;-1:-1:-1;3223:62:83;;;;;;;3295:7;;;:59;;-1:-1:-1;;;3295:59:83;;-1:-1:-1;;;;;11255:55:105;;;3295:59:83;;;11237:74:105;3295:7:83;;;;:31;;11210:18:105;3295:59:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3364:106;3373:7;;;;;;;;;-1:-1:-1;;;;;3373:7:83;-1:-1:-1;;;;;3373:31:83;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3416:17;3364:106;;;;;;;;;;;;;;;;;:8;:106::i;19211:4896::-;19283:7;;;19304;;19313:4;;19283:61;;-1:-1:-1;;;19283:61:83;;-1:-1:-1;;;;;19304:7:83;;;19283:61;;;13104:34:105;19313:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;19268:12:83;;19283:7;;;:20;;13015:19:105;;19283:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19268:76;;19354:77;19367:3;19372;19392:4;992:7:93;19408:6:83;19416;19424:2;19428;19354:12;:77::i;:::-;19529:4;;19516:31;;-1:-1:-1;;;;;19529:4:83;19536:3;19541:5;19516:4;:31::i;:::-;19561:26;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;19561:26:83;19621:16;;;19635:1;19621:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19601:36:83;;;19651:20;;1147:2:93;;19601:36:83;:17;;19651:20;;;;:::i;:::-;;;;;;;;;;:39;19721:26;;;19745:1;19721:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19705:13:83;;;:42;;;19761:16;;19780:20;;19705:42;19775:1;;19761:16;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;19832:15:83;;;19845:1;19832:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19815:14:83;;;:32;;;19881:4;;19861:17;;-1:-1:-1;;;;;19881:4:83;;;;19815:32;19881:4;;19861:17;;;;:::i;:::-;-1:-1:-1;;;;;19861:24:83;;;:17;;;;;;;;;:24;19919:7;;19899:14;;;;:17;;19919:7;;;;;19899:14;19919:7;;19899:17;;;;;;:::i;:::-;-1:-1:-1;;;;;19899:27:83;;;:17;;;;;;;;;:27;19940:6;;;:31;19972:5;19940:6;19982:4;19996;20003:19;:15;19940:6;20003:19;:::i;:::-;19940:83;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20037:12:83;;-1:-1:-1;;;20037:12:83;;20045:3;20037:12;;;4048:25:105;-1:-1:-1;;;;;;;;;;;20037:7:83;;;4021:18:105;;20037:12:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20063:6:83;;-1:-1:-1;;;;;20063:6:83;;-1:-1:-1;20063:31:83;;-1:-1:-1;20095:5:83;20063:6;20105:4;20119;20126:19;:15;20063:6;20126:19;:::i;:::-;20063:83;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19502:655;20181:31;20226:29;20269:21;20304:26;20343:4;-1:-1:-1;;;;;20343:29:83;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20385:37;;-1:-1:-1;;;20385:37:83;;20399:4;20385:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;20167:207:83;;-1:-1:-1;20167:207:83;;-1:-1:-1;20167:207:83;-1:-1:-1;20167:207:83;-1:-1:-1;;;;;;;;;;;;20385:13:83;;;17033:19:105;;20385:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20481:7:83;;-1:-1:-1;;;;;20481:7:83;;-1:-1:-1;20437:356:83;;-1:-1:-1;20503:23:83;1202:5:93;20525:1:83;20503:23;:::i;:::-;20540:25;1262:2:93;20564:1:83;20540:25;:::i;:::-;20579:24;1318:3:93;20602:1:83;20579:24;:::i;:::-;20617:28;1379:5:93;20644:1:83;20617:28;:::i;:::-;20659:32;1446:6:93;20690:1:83;20659:32;:::i;:::-;20705:26;1508:5:93;20730:1:83;20705:26;:::i;:::-;20745:38;1581:7:93;20782:1:83;20745:38;:::i;:::-;20437:356;;;24388:6:105;24421:15;;;24403:34;;24473:15;;;24468:2;24453:18;;24446:43;24525:15;;;24505:18;;;24498:43;24577:15;;;24572:2;24557:18;;24550:43;24612:8;24657:15;;;24651:3;24636:19;;24629:44;24710:15;;;24704:3;24689:19;;24682:44;24763:15;;;;24757:3;24742:19;;24735:44;20437:356:83;;;;;;24365:3:105;20437:356:83;;;20804:7;;20849;;20870:4;;-1:-1:-1;;;;;20804:7:83;;;;:31;;20849:7;;;20870:4;1147:2:93;20918:23:83;1202:5:93;20940:1:83;20918:23;:::i;:::-;20955:25;1262:2:93;20979:1:83;20955:25;:::i;:::-;20994:24;1318:3:93;21017:1:83;20994:24;:::i;:::-;21032:28;1379:5:93;21059:1:83;21032:28;:::i;:::-;21074:32;1446:6:93;21105:1:83;21074:32;:::i;:::-;21120:26;1508:5:93;21145:1:83;21120:26;:::i;:::-;21160:38;1581:7:93;21197:1:83;21160:38;:::i;:::-;20804:404;;-1:-1:-1;;;;;;20804:404:83;;;;;;;-1:-1:-1;;;;;25288:15:105;;;20804:404:83;;;25270:34:105;25340:15;;;;25320:18;;;25313:43;25375:6;25417:15;;;25397:18;;;25390:43;25469:15;;;25449:18;;;25442:43;25522:15;;;25501:19;;;25494:44;25575:15;;;25554:19;;;25547:44;25628:15;;25607:19;;;25600:44;25663:8;25708:15;;;25687:19;;;25680:44;25761:15;;25740:19;;;25733:44;25814:15;25793:19;;;25786:44;25181:19;;20804:404:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21251:17;21286:19;21323:18;21359:22;21399:25;21442:20;21480:31;21528:4;-1:-1:-1;;;;;21528:27:83;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21233:324;;;;;;;;;;;;;;21572:80;21581:10;21572:80;;1202:5:93;21615:1:83;21593:23;;;;:::i;:::-;21572:80;;;;;;;;;;;;;;;;;;;:8;:80::i;:::-;21666:84;;;;21689:25;1262:2:93;21713:1:83;21689:25;:::i;:::-;21666:84;;;;;;;;;;;;;;;;;;;:8;:84::i;:::-;21764:82;;;;21786:24;1318:3:93;21809:1:83;21786:24;:::i;:::-;21764:82;;;;;;;;;;;;;;;;;;;:8;:82::i;:::-;21860:90;;;;21886:28;1379:5:93;21913:1:83;21886:28;:::i;:::-;21860:90;;;;;;;;;;;;;;;;;;;:8;:90::i;:::-;21964:97;;;;21993:32;1446:6:93;22024:1:83;21993:32;:::i;:::-;21964:97;;;;;;;;;;;;;;;;;;;:8;:97::i;:::-;22075:86;;;;22099:26;1508:5:93;22124:1:83;22099:26;:::i;:::-;22075:86;;;;;;;;;;;;;;;;;;;:8;:86::i;:::-;22175:139;;;;22227:38;1581:7:93;22264:1:83;22227:38;:::i;:::-;22175:139;;;;;;;;;;;;;;;;;;;:8;:139::i;:::-;21219:1106;;;;;;;22350:28;22380:26;22408:18;22428:23;22471:4;-1:-1:-1;;;;;22471:29:83;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22349:153;;;;;;;;22517:92;22526:21;22517:92;;22549:24;22517:92;;;;;;;;;;;;;;;;;;;:8;:92::i;:::-;22623:88;22632:19;22623:88;;22653:22;22623:88;;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;22725:73;22734:11;22725:73;;22747:14;22725:73;;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;22812:83;22821:16;22812:83;;22839:19;22812:83;;;;;;;;;;;;;;;;;;;:8;:83::i;:::-;-1:-1:-1;;22957:15:83;;-1:-1:-1;;;22957:15:83;;-1:-1:-1;;;;;22966:5:83;11255:55:105;22957:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;22957:8:83;-1:-1:-1;22957:8:83;;-1:-1:-1;11210:18:105;;22957:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22998:74:83;;;23066:5;-1:-1:-1;;;;;11255:55:105;22998:74:83;;;;11237::105;;;;22998::83;;;;;;;;;;11210:18:105;;;;22998:74:83;;;;;;;-1:-1:-1;;;;;22998:74:83;-1:-1:-1;;;22998:74:83;;;22982:91;;-1:-1:-1;;;22982:91:83;;-1:-1:-1;;;;;;;;;;;22982:15:83;-1:-1:-1;22982:15:83;;-1:-1:-1;22982:91:83;;22998:74;22982:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23083:7:83;;23128;;23149:4;;-1:-1:-1;;;;;23083:7:83;;;;-1:-1:-1;23083:31:83;;-1:-1:-1;23128:7:83;;;;23149:4;1147:2:93;23197:23:83;1202:5:93;23219:1:83;23197:23;:::i;:::-;23234:25;1262:2:93;23258:1:83;23234:25;:::i;:::-;23273:24;1318:3:93;23296:1:83;23273:24;:::i;:::-;23311:28;1379:5:93;23338:1:83;23311:28;:::i;:::-;23353:32;1446:6:93;23384:1:83;23353:32;:::i;:::-;23399:26;1508:5:93;23424:1:83;23399:26;:::i;:::-;23439:38;1581:7:93;23476:1:83;23439:38;:::i;:::-;23083:404;;-1:-1:-1;;;;;;23083:404:83;;;;;;;-1:-1:-1;;;;;25288:15:105;;;23083:404:83;;;25270:34:105;25340:15;;;;25320:18;;;25313:43;25375:6;25417:15;;;25397:18;;;25390:43;25469:15;;;25449:18;;;25442:43;25522:15;;;25501:19;;;25494:44;25575:15;;;25554:19;;;25547:44;25628:15;;25607:19;;;25600:44;25663:8;25708:15;;;25687:19;;;25680:44;25761:15;;25740:19;;;25733:44;25814:15;25793:19;;;25786:44;25181:19;;23083:404:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23650:4:83;;23656;;23578:101;;;-1:-1:-1;;;;;23650:4:83;;;23578:101;;;12625:34:105;23656:4:83;;;;12675:18:105;;;12668:43;1147:2:93;12727:18:105;;;;12720:47;;;;23578:101:83;;;;;;;;;;12537:18:105;;;;23578:101:83;;;;;;;-1:-1:-1;;;;;23578:101:83;-1:-1:-1;;;23578:101:83;;;23549:140;-1:-1:-1;;;23549:140:83;;-1:-1:-1;;;;;;;;;;;23549:15:83;-1:-1:-1;23549:15:83;;-1:-1:-1;23549:140:83;;23578:101;23549:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23699:7:83;;23744:4;;23762;;-1:-1:-1;;;;;23699:7:83;;;;-1:-1:-1;23699:31:83;;-1:-1:-1;23744:4:83;;;;23762;1147:2:93;23810:23:83;1202:5:93;23832:1:83;23810:23;:::i;:::-;23847:25;1262:2:93;23871:1:83;23847:25;:::i;:::-;23886:24;1318:3:93;23909:1:83;23886:24;:::i;:::-;23924:28;1379:5:93;23951:1:83;23924:28;:::i;:::-;23966:32;1446:6:93;23997:1:83;23966:32;:::i;:::-;24012:26;1508:5:93;24037:1:83;24012:26;:::i;:::-;24052:38;1581:7:93;24089:1:83;24052:38;:::i;:::-;23699:401;;-1:-1:-1;;;;;;23699:401:83;;;;;;;-1:-1:-1;;;;;25288:15:105;;;23699:401:83;;;25270:34:105;25340:15;;;;25320:18;;;25313:43;25375:6;25417:15;;;25397:18;;;25390:43;25469:15;;;25449:18;;;25442:43;25522:15;;;25501:19;;;25494:44;25575:15;;;25554:19;;;25547:44;25628:15;;25607:19;;;25600:44;25663:8;25708:15;;;25687:19;;;25680:44;25761:15;;25740:19;;;25733:44;25814:15;25793:19;;;25786:44;25181:19;;23699:401:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19258:4849;;;;;19211:4896::o;2026:978::-;2080:7;;:25;;;-1:-1:-1;;;2080:25:83;;;;2071:63;;-1:-1:-1;;;;;2080:7:83;;:23;;:25;;;;;;;;;;;;;;:7;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2107:3;2071:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;2153:7;;:25;;;-1:-1:-1;;;2153:25:83;;;;2144:81;;-1:-1:-1;;;;;2153:7:83;;:23;;:25;;;;;;;;;;;;;;:7;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1699:4:93;2144:81:83;;;;;;;;;;;;;;;;;:8;:81::i;:::-;2245:7;;:33;;;-1:-1:-1;;;2245:33:83;;;;2236:95;;-1:-1:-1;;;;;2245:7:83;;:31;;:33;;;;;;;;;;;;;;:7;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2288:18;;2236:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2288:18:83;;;;2236:8;:95::i;:::-;2350:7;;:23;;;-1:-1:-1;;;2350:23:83;;;;2341:59;;-1:-1:-1;;;;;2350:7:83;;:21;;:23;;;;;;;;;;;;;;:7;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2375:1;2341:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;2419:7;;:25;;;-1:-1:-1;;;2419:25:83;;;;2410:63;;-1:-1:-1;;;;;2419:7:83;;:23;;:25;;;;;;;;;;;;;;:7;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2446:3;2410:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;2492:7;;:28;;;-1:-1:-1;;;2492:28:83;;;;2483:69;;-1:-1:-1;;;;;2492:7:83;;:26;;:28;;;;;;;;;;;;;;:7;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2522:6;2483:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;2563:37;;-1:-1:-1;;;2563:37:83;;2577:4;2563:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;2563:13:83;;;17033:19:105;;2563:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2615:41:83;;;2631:1;28126:25:105;;1699:4:93;28182:2:105;28167:18;;28160:34;2615:41:83;;-1:-1:-1;28099:18:105;;-1:-1:-1;2615:41:83;;;;;;;2680:3;2685;1699:4:93;2666:46:83;;;;;:::i;:::-;-1:-1:-1;;;;;28502:15:105;;;28484:34;;28554:15;;;;28549:2;28534:18;;28527:43;28601:2;28586:18;;28579:34;28411:2;28396:18;2666:46:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2802:7:83;;:28;;;-1:-1:-1;;;2802:28:83;;;;2785:14;;-1:-1:-1;;;;;2802:7:83;;:26;;:28;;;;;;;;;;;;;;:7;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2785:45;-1:-1:-1;;;;;;;;;;;;2840:15:83;-1:-1:-1;;;2932:10:83;2785:45;2941:1;2932:10;:::i;:::-;2856:95;;;;;28126:25:105;;;;28167:18;;;28160:34;;;28099:18;;2856:95:83;;;-1:-1:-1;;2856:95:83;;;;;;;;;;;;;;-1:-1:-1;;;;;2856:95:83;-1:-1:-1;;;;;;2856:95:83;;;;;;2840:112;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:3;2981;2986:6;2995:1;2986:10;;;;:::i;:::-;2962:35;;;;;:::i;:::-;-1:-1:-1;;;;;28502:15:105;;;28484:34;;28554:15;;;;28549:2;28534:18;;28527:43;28601:2;28586:18;;28579:34;28411:2;28396:18;2962:35:83;;;;;;;;;;;;;;;;;;;;;;;;2061:943;2026:978::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;17481:1724:83:-;17527:7;;-1:-1:-1;;;;;17527:7:83;:17;17558:20;1147:2:93;17527:7:83;17558:20;:::i;:::-;17527:359;;-1:-1:-1;;;;;;17527:359:83;;;;;;;29409:6:105;29442:15;;;17527:359:83;;;29424:34:105;1202:5:93;29474:18:105;;;29467:43;;;1262:2:93;29526:18:105;;;29519:43;1318:3:93;29578:18:105;;;29571:43;29630:19;;;29623:44;1446:6:93;29710:19:105;;;29703:44;1508:5:93;29763:19:105;;;29756:44;1581:7:93;29816:19:105;;;29809:44;1638:5:93;29869:19:105;;;29862:51;29371:19;;17527:359:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17897:7:83;;-1:-1:-1;;;;;17897:7:83;;-1:-1:-1;17897:17:83;;-1:-1:-1;17928:20:83;17897:7;1147:2:93;17928:20:83;:::i;:::-;17897:359;;-1:-1:-1;;;;;;17897:359:83;;;;;;;29409:6:105;29442:15;;;17897:359:83;;;29424:34:105;1202:5:93;29474:18:105;;;29467:43;;;1262:2:93;29526:18:105;;;29519:43;1318:3:93;29578:18:105;;;29571:43;29630:19;;;29623:44;1446:6:93;29710:19:105;;;29703:44;1508:5:93;29763:19:105;;;29756:44;1581:7:93;29816:19:105;;;29809:44;1638:5:93;29869:19:105;;;29862:51;29371:19;;17897:359:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18267:68;18276:7;;;;;;;;;-1:-1:-1;;;;;18276:7:83;-1:-1:-1;;;;;18276:22:83;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18276:24:83;;;;;;;;;;;;:::i;:::-;:31;18309:1;18267:68;;;;;;;;;;;;;;;;;:8;:68::i;:::-;18346:37;;-1:-1:-1;;;18346:37:83;;18360:4;18346:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;18346:13:83;;;17033:19:105;;18346:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18398:31:83;;1147:2:93;;-1:-1:-1;18398:31:83;;-1:-1:-1;18398:31:83;;;18439:7;;;:38;;-1:-1:-1;;;18439:38:83;;1147:2:93;18439:38:83;;;31464::105;-1:-1:-1;;;;;18439:7:83;;;;:20;;31437:18:105;18439:38:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18488:68;18497:7;;;;;;;;;-1:-1:-1;;;;;18497:7:83;-1:-1:-1;;;;;18497:22:83;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18497:24:83;;;;;;;;;;;;:::i;:::-;:31;18530:1;18488:68;;;;;;;;;;;;;;;;;:8;:68::i;:::-;18643:91;;;1147:2:93;18643:91:83;;;;31464:38:105;;;;18643:91:83;;;;;;;;;;31437:18:105;;;;18643:91:83;;;;;;;-1:-1:-1;;;;;18643:91:83;-1:-1:-1;;;18643:91:83;;;18627:108;;-1:-1:-1;;;18627:108:83;;-1:-1:-1;;;;;;;;;;;18627:15:83;;;:108;;18643:91;18627:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18745:7:83;;;:35;;-1:-1:-1;;;18745:35:83;;1147:2:93;18745:35:83;;;31464:38:105;-1:-1:-1;;;;;18745:7:83;;;;-1:-1:-1;18745:17:83;;-1:-1:-1;31437:18:105;18745:35:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;18822:15:83;;-1:-1:-1;;;18822:15:83;;-1:-1:-1;;;;;;;;;;;18822:8:83;-1:-1:-1;18822:8:83;;-1:-1:-1;18822:15:83;;-1:-1:-1;18831:5:83;;-1:-1:-1;18822:15:83;;;-1:-1:-1;18822:15:83;;-1:-1:-1;18822:15:83:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18863:74:83;;;18931:5;-1:-1:-1;;;;;11255:55:105;18863:74:83;;;;11237::105;;;;18863::83;;;;;;;;;;11210:18:105;;;;18863:74:83;;;;;;;-1:-1:-1;;;;;18863:74:83;-1:-1:-1;;;18863:74:83;;;18847:91;;-1:-1:-1;;;18847:91:83;;-1:-1:-1;;;;;;;;;;;18847:15:83;-1:-1:-1;18847:15:83;;-1:-1:-1;18847:91:83;;18863:74;18847:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18948:7:83;;;:38;;-1:-1:-1;;;18948:38:83;;1147:2:93;18948:38:83;;;31464::105;-1:-1:-1;;;;;18948:7:83;;;;-1:-1:-1;18948:20:83;;-1:-1:-1;31437:18:105;18948:38:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19058:91:83;;;1147:2:93;19058:91:83;;;;31464:38:105;;;;19058:91:83;;;;;;;;;;31437:18:105;;;;19058:91:83;;;;;;;-1:-1:-1;;;;;19058:91:83;-1:-1:-1;;;19058:91:83;;;19042:108;;-1:-1:-1;;;19042:108:83;;-1:-1:-1;;;;;;;;;;;19042:15:83;-1:-1:-1;19042:15:83;;-1:-1:-1;19042:108:83;;19058:91;19042:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19160:7:83;;;:38;;-1:-1:-1;;;19160:38:83;;1147:2:93;19160:38:83;;;31464::105;-1:-1:-1;;;;;19160:7:83;;;;-1:-1:-1;19160:20:83;;-1:-1:-1;31437:18:105;19160:38:83;31320:188:105;12046:168:93;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;29258:942:83:-;29343:7;;:32;;;-1:-1:-1;;;29343:32:83;;;;29308;;-1:-1:-1;;;;;29343:7:83;;:30;;:32;;;;;;;;;;;;;;:7;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29395:7;;;29416:4;;29395:26;;-1:-1:-1;;;29395:26:83;;-1:-1:-1;;;;;29416:4:83;;;29395:26;;;11237:74:105;29308:67:83;;-1:-1:-1;29386:70:83;;29395:7;;;:20;;11210:18:105;29395:26:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29423:4;29386:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;29467:37;;-1:-1:-1;;;29467:37:83;;29481:4;29467:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;29467:13:83;;;17033:19:105;;29467:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29537:4:83;;29519:23;;-1:-1:-1;;;;;29537:4:83;;;;-1:-1:-1;29519:23:83;;-1:-1:-1;29537:4:83;;29519:23;29552:7;;;29577:4;;29552:30;;-1:-1:-1;;;29552:30:83;;-1:-1:-1;;;;;29577:4:83;;;29552:30;;;11237:74:105;29552:7:83;;;:24;;11210:18:105;29552:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29602:7:83;;;29623:4;;29602:26;;-1:-1:-1;;;29602:26:83;;-1:-1:-1;;;;;29623:4:83;;;29602:26;;;11237:74:105;29593:71:83;;-1:-1:-1;29602:7:83;;;-1:-1:-1;29602:20:83;;11210:18:105;29602:26:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29630:5;29593:71;;;;;;;;;;;;;;;;;:8;:71::i;:::-;29683:7;;:32;;;-1:-1:-1;;;29683:32:83;;;;29674:100;;-1:-1:-1;;;;;29683:7:83;;:30;;:32;;;;;;;;;;;;;;:7;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29717:28;29744:1;29717:24;:28;:::i;:::-;29674:100;;;;;;;;;;;;;;;;;:8;:100::i;:::-;29826:15;;-1:-1:-1;;;29826:15:83;;-1:-1:-1;;;;;29835:5:83;11255:55:105;29826:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;29826:8:83;;;11210:18:105;;29826:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29867:74:83;;;29935:5;-1:-1:-1;;;;;11255:55:105;29867:74:83;;;;11237::105;;;;29867::83;;;;;;;;;;11210:18:105;;;;29867:74:83;;;;;;;-1:-1:-1;;;;;29867:74:83;-1:-1:-1;;;29867:74:83;;;29851:91;;-1:-1:-1;;;29851:91:83;;-1:-1:-1;;;;;;;;;;;29851:15:83;-1:-1:-1;29851:15:83;;-1:-1:-1;29851:91:83;;29867:74;29851:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29952:7:83;;;29977:4;;29952:30;;-1:-1:-1;;;29952:30:83;;-1:-1:-1;;;;;29977:4:83;;;29952:30;;;11237:74:105;29952:7:83;;;-1:-1:-1;29952:24:83;;-1:-1:-1;11210:18:105;29952:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30147:4:83;;30067:85;;;-1:-1:-1;;;;;30147:4:83;;;30067:85;;;;11237:74:105;;;;30067:85:83;;;;;;;;;;11210:18:105;;;;30067:85:83;;;;;;;-1:-1:-1;;;;;30067:85:83;-1:-1:-1;;;30067:85:83;;;30051:102;-1:-1:-1;;;30051:102:83;;-1:-1:-1;;;;;;;;;;;30051:15:83;-1:-1:-1;30051:15:83;;-1:-1:-1;30051:102:83;;30067:85;30051:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30163:7:83;;;30188:4;;30163:30;;-1:-1:-1;;;30163:30:83;;-1:-1:-1;;;;;30188:4:83;;;30163:30;;;11237:74:105;30163:7:83;;;-1:-1:-1;30163:24:83;;-1:-1:-1;11210:18:105;30163:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29298:902;29258:942::o;14079:3396::-;14414:57;14420:7;14414:57;;14429:7;;;;;;;;;-1:-1:-1;;;;;14429:7:83;-1:-1:-1;;;;;14429:21:83;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14454:16;14414:5;:57::i;:::-;14397:75;-1:-1:-1;14504:47:83;;;;14524:1;14527:23;14549:1;355:5:75;14527:23:83;:::i;:::-;14504:5;:47::i;:::-;14482:70;-1:-1:-1;14583:57:83;;;;14602:16;14482:70;14617:1;14602:16;:::i;:::-;14583:57;;355:5:75;14583::83;:57::i;:::-;14562:79;;14676:52;14682:15;14676:52;;14699:1;623:6:64;14676:5:83;:52::i;:::-;14651:78;;14767:55;14773:18;14767:55;;14793:1;623:6:64;14767:5:83;:55::i;:::-;14739:84;;14856:30;14862:13;14856:30;;14877:1;14880:5;14856;:30::i;:::-;14833:54;;14931:55;14937:24;14931:55;;14963:1;510:7:75;14931:5:83;:55::i;:::-;14998:37;;-1:-1:-1;;;14998:37:83;;15012:4;14998:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;14897:90:83;;-1:-1:-1;;;;;;;;;;;;14998:13:83;;;17033:19:105;;14998:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15050:241:83;;;;24421:15:105;;;24403:34;;24473:15;;;24468:2;24453:18;;24446:43;24525:15;;;24505:18;;;24498:43;24577:15;;;24572:2;24557:18;;24550:43;24612:8;24657:15;;;24651:3;24636:19;;24629:44;24710:15;;;24704:3;24689:19;;24682:44;24763:15;;24757:3;24742:19;;24735:44;15050:241:83;;;;;;-1:-1:-1;15050:241:83;;-1:-1:-1;15050:241:83;;;24365:3:105;15050:241:83;;;15301:37;;-1:-1:-1;;;15301:37:83;;15315:4;15301:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;15301:13:83;;;17033:19:105;;15301:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15353:39:83;;;;;;-1:-1:-1;15353:39:83;;;;-1:-1:-1;15353:39:83;;;;;15403:7;;;:269;;-1:-1:-1;;;15403:269:83;;29409:6:105;29442:15;;;15403:269:83;;;29424:34:105;29494:15;;;29474:18;;;29467:43;;;;29546:15;;;29526:18;;;29519:43;29598:15;;;29578:18;;;29571:43;29651:15;;;29630:19;;;29623:44;29686:8;29731:15;;;29710:19;;;29703:44;29784:15;;;29763:19;;;29756:44;29837:15;;;29816:19;;;29809:44;29897:14;;29890:22;29869:19;;;29862:51;-1:-1:-1;;;;;15403:7:83;;:17;;29371:19:105;;15403:269:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;15741:27:83;;;1147:2:93;15741:27:83;15737:492;;15793:7;;:24;;;-1:-1:-1;;;15793:24:83;;;;15784:69;;-1:-1:-1;;;;;15793:7:83;;:22;;:24;;;;;:7;;:24;;;;;;;:7;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15793:24:83;;;;;;;;;;;;:::i;:::-;:31;15826:1;15784:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;15877:7;;:24;;;-1:-1:-1;;;15877:24:83;;;;15868:80;;-1:-1:-1;;;;;15877:7:83;;:22;;:24;;;;;:7;;:24;;;;;;;:7;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15877:24:83;;;;;;;;;;;;:::i;:::-;15902:1;15877:27;;;;;;;;:::i;:::-;;;;;;;1147:2:93;15868:80:83;;;;;;;;;;;;;;;;;;;:8;:80::i;:::-;15971:7;;:24;;;-1:-1:-1;;;15971:24:83;;;;15962:71;;-1:-1:-1;;;;;15971:7:83;;:22;;:24;;;;;:7;;:24;;;;;;;:7;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15971:24:83;;;;;;;;;;;;:::i;:::-;15996:1;15971:27;;;;;;;;:::i;:::-;;;;;;;16000:7;15962:71;;;;;;;;;;;;;;;;;;;:8;:71::i;:::-;15737:492;;;16073:7;;:24;;;-1:-1:-1;;;16073:24:83;;;;16064:69;;-1:-1:-1;;;;;16073:7:83;;:22;;:24;;;;;:7;;:24;;;;;;;:7;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16073:24:83;;;;;;;;;;;;:::i;:::-;:31;16106:1;16064:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;16156:7;;:24;;;-1:-1:-1;;;16156:24:83;;;;16147:71;;-1:-1:-1;;;;;16156:7:83;;:22;;:24;;;;;:7;;:24;;;;;;;:7;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16156:24:83;;;;;;;;;;;;:::i;:::-;16181:1;16156:27;;;;;;;;:::i;:::-;;;;;;;16185:7;16147:71;;;;;;;;;;;;;;;;;;;:8;:71::i;:::-;16440:7;;;:26;;-1:-1:-1;;;16440:26:83;;31494:6:105;31482:19;;16440:26:83;;;31464:38:105;16318:22:83;;;;;;;;-1:-1:-1;;;;;16440:7:83;;;;:17;;31437:18:105;16440:26:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16317:149;;;;;;;;;;;;16481:61;16490:14;16506:10;16481:61;;;;;;;;;;;;;;;;;;;:8;:61::i;:::-;16556:65;16565:16;16583:12;16556:65;;;;;;;;;;;;;;;;;;;:8;:65::i;:::-;16635:63;16644:15;16661:11;16635:63;;;;;;;;;;;;;;;;;;;:8;:63::i;:::-;16712:71;16721:19;16742:15;16712:71;;;;;;;;;;;;;;;;;;;:8;:71::i;:::-;-1:-1:-1;;17085:7:83;;;:26;;-1:-1:-1;;;17085:26:83;;31494:6:105;31482:19;;17085:26:83;;;31464:38:105;16908:30:83;;-1:-1:-1;16908:30:83;;-1:-1:-1;16908:30:83;;;;-1:-1:-1;;;;;17085:7:83;;:17;;31437:18:105;17085:26:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16818:293;;;;;;;;;;;;17126:78;17135:22;17159:18;17126:78;;;;;;;;;;;;;;;;;;;:8;:78::i;:::-;17218:68;17227:17;17246:13;17218:68;;;;;;;;;;;;;;;;;;;:8;:68::i;:::-;17300:90;17309:28;17339:24;17300:90;;;;;;;;;;;;;;;;;;;:8;:90::i;:::-;17404:54;17413:10;17425:6;17404:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;16804:665;;;;14079:3396;;;;;;;;;:::o;24113:833::-;24162:37;;-1:-1:-1;;;24162:37:83;;24176:4;24162:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;24162:13:83;;;17033:19:105;;24162:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24214:37:83;;;24238:4;17558:34:105;;-1:-1:-1;;;;;24245:5:83;17628:15:105;17623:2;17608:18;;17601:43;24214:37:83;;-1:-1:-1;17470:18:105;;-1:-1:-1;24214:37:83;;;;;;;24261:7;;;:30;;-1:-1:-1;;;24261:30:83;;-1:-1:-1;;;;;24285:5:83;11255:55:105;;24261:30:83;;;11237:74:105;24261:7:83;;;;:23;;11210:18:105;24261:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24302:69;24311:7;;;;;;;;;-1:-1:-1;;;;;24311:7:83;-1:-1:-1;;;;;24311:23:83;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24338:5;24302:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;24420:13;;-1:-1:-1;;;24420:13:83;;-1:-1:-1;;;;;24429:3:83;11255:55:105;24420:13:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;24420:8:83;;;11210:18:105;;24420:13:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24459:72:83;;;24527:3;-1:-1:-1;;;;;11255:55:105;24459:72:83;;;;11237:74:105;;;;24459:72:83;;;;;;;;;;11210:18:105;;;;24459:72:83;;;;;;;-1:-1:-1;;;;;24459:72:83;-1:-1:-1;;;24459:72:83;;;24443:89;;-1:-1:-1;;;24443:89:83;;-1:-1:-1;;;;;;;;;;;24443:15:83;-1:-1:-1;24443:15:83;;-1:-1:-1;24443:89:83;;24459:72;24443:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24542:7:83;;;:28;;-1:-1:-1;;;24542:28:83;;-1:-1:-1;;;;;24566:3:83;11255:55:105;;24542:28:83;;;11237:74:105;24542:7:83;;;;-1:-1:-1;24542:23:83;;-1:-1:-1;11210:18:105;24542:28:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24638:66:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24638:66:83;-1:-1:-1;;;24638:66:83;;;24622:83;;-1:-1:-1;;;24622:83:83;;-1:-1:-1;;;;;;;;;;;24622:15:83;-1:-1:-1;24622:15:83;;-1:-1:-1;24622:83:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24715:7:83;;;:35;;-1:-1:-1;;;24715:35:83;;:7;:35;;;11237:74:105;-1:-1:-1;;;;;24715:7:83;;;;-1:-1:-1;24715:23:83;;-1:-1:-1;11210:18:105;24715:35:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24820:78:83;;;24892:5;-1:-1:-1;;;;;11255:55:105;24820:78:83;;;;11237:74:105;;;;24820:78:83;;;;;;;;;;11210:18:105;;;;24820:78:83;;;;;;;-1:-1:-1;;;;;24820:78:83;-1:-1:-1;;;24820:78:83;;;24804:95;;-1:-1:-1;;;24804:95:83;;-1:-1:-1;;;;;;;;;;;24804:15:83;-1:-1:-1;24804:15:83;;-1:-1:-1;24804:95:83;;24820:78;24804:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24909:7:83;;;:30;;-1:-1:-1;;;24909:30:83;;-1:-1:-1;;;;;24933:5:83;11255:55:105;;24909:30:83;;;11237:74:105;24909:7:83;;;;-1:-1:-1;24909:23:83;;-1:-1:-1;11210:18:105;24909:30:83;11083:234:105;26092:2010:83;26176:7;;:23;;;-1:-1:-1;;;26176:23:83;;;;26155:18;;-1:-1:-1;;;;;26176:7:83;;:21;;:23;;;;;;;;;;;;;;:7;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26155:44;-1:-1:-1;26230:16:83;26274:38;;;;26155:44;26230:16;26274:5;:38::i;:::-;26257:56;-1:-1:-1;;;26384:27:83;;;;26380:289;;26427:61;26439:21;26452:7;26439:12;:21::i;:::-;26427:61;;;;;;;;;;;;;;;;;:11;:61::i;:::-;26380:289;;;26535:82;;;31494:6:105;31482:19;;26535:82:83;;;;31464:38:105;;;;26535:82:83;;;;;;;;;;31437:18:105;;;;26535:82:83;;;;;;;-1:-1:-1;;;;;26535:82:83;-1:-1:-1;;;26535:82:83;;;26519:99;;-1:-1:-1;;;26519:99:83;;-1:-1:-1;;;;;;;;;;;26519:15:83;;;:99;;26535:82;26519:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26632:7:83;;;:26;;-1:-1:-1;;;26632:26:83;;31494:6:105;31482:19;;26632:26:83;;;31464:38:105;-1:-1:-1;;;;;26632:7:83;;;;-1:-1:-1;26632:17:83;;-1:-1:-1;31437:18:105;26632:26:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;26380:289;26704:37;;-1:-1:-1;;;26704:37:83;;26718:4;26704:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;26704:13:83;;;17033:19:105;;26704:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26756:37:83;;26788:4;;-1:-1:-1;26756:37:83;;;;-1:-1:-1;26756:37:83;;;;;26803:7;;;:332;;-1:-1:-1;;;26803:332:83;;29409:6:105;29442:15;;26803:332:83;;;29424:34:105;1202:5:93;29474:18:105;;;29467:43;;;1262:2:93;29526:18:105;;;29519:43;1318:3:93;29578:18:105;;;29571:43;29630:19;;;29623:44;;;;1446:6:93;29710:19:105;;;29703:44;1508:5:93;29763:19:105;;;29756:44;1581:7:93;29816:19:105;;;29809:44;26803:7:83;29869:19:105;;;29862:51;-1:-1:-1;;;;;26803:7:83;;:17;;29371:19:105;;26803:332:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27146:60;27157:21;27170:7;27157:12;:21::i;:::-;27146:60;;;;;;;;;;;;;;;;;:10;:60::i;:::-;27271:93;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27271:93:83;-1:-1:-1;;;27271:93:83;;;27255:110;;-1:-1:-1;;;27255:110:83;;-1:-1:-1;;;;;;;;;;;27255:15:83;;;:110;;27271:93;;27255:110;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27375:7:83;;;:41;;-1:-1:-1;;;27375:41:83;;14113:6:105;14101:19;;27375:41:83;;;14083:38:105;27375:7:83;14137:18:105;;;14130:50;;;;-1:-1:-1;;;;;27375:7:83;;-1:-1:-1;27375:26:83;;-1:-1:-1;14056:18:105;;27375:41:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27452:37:83;;-1:-1:-1;;;27452:37:83;;27466:4;27452:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;27452:13:83;-1:-1:-1;27452:13:83;;-1:-1:-1;17033:19:105;;27452:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27504:38:83;;27536:5;;-1:-1:-1;27504:38:83;;;;-1:-1:-1;27504:38:83;;27536:5;;27504:38;27552:7;;;:42;;-1:-1:-1;;;27552:42:83;;14113:6:105;14101:19;;27552:42:83;;;14083:38:105;27552:7:83;14137:18:105;;;14130:50;;;;-1:-1:-1;;;;;27552:7:83;;:26;;14056:18:105;;27552:42:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27605:61;27617:21;27630:7;27617:12;:21::i;:::-;27605:61;;;;;;;;;;;;;;;;;:11;:61::i;:::-;27716:15;;-1:-1:-1;;;27716:15:83;;-1:-1:-1;;;;;27725:5:83;11255:55:105;27716:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;27716:8:83;;;11210:18:105;;27716:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27757:74:83;;;27825:5;-1:-1:-1;;;;;11255:55:105;27757:74:83;;;;11237::105;;;;27757::83;;;;;;;;;;11210:18:105;;;;27757:74:83;;;;;;;-1:-1:-1;;;;;27757:74:83;-1:-1:-1;;;27757:74:83;;;27741:91;;-1:-1:-1;;;27741:91:83;;-1:-1:-1;;;;;;;;;;;27741:15:83;-1:-1:-1;27741:15:83;;-1:-1:-1;27741:91:83;;27757:74;27741:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27842:7:83;;;:41;;-1:-1:-1;;;27842:41:83;;14113:6:105;14101:19;;27842:41:83;;;14083:38:105;27842:7:83;14137:18:105;;;14130:50;;;;-1:-1:-1;;;;;27842:7:83;;-1:-1:-1;27842:26:83;;-1:-1:-1;14056:18:105;;27842:41:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27949:93:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27949:93:83;-1:-1:-1;;;27949:93:83;;;27933:110;;-1:-1:-1;;;27933:110:83;;-1:-1:-1;;;;;;;;;;;27933:15:83;-1:-1:-1;27933:15:83;;-1:-1:-1;27933:110:83;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28053:7:83;;;:42;;-1:-1:-1;;;28053:42:83;;14113:6:105;14101:19;;28053:42:83;;;14083:38:105;28053:7:83;14137:18:105;;;14130:50;;;;-1:-1:-1;;;;;28053:7:83;;-1:-1:-1;28053:26:83;;-1:-1:-1;14056:18:105;;28053:42:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26145:1957;;26092:2010;:::o;4736:2874::-;4876:18;;4926:4;;4932;;4909:46;;-1:-1:-1;;34682:2:105;34678:15;;;;;4909:46:83;;;34662:37:105;34733:15;;;;;34715:12;;;34708:46;-1:-1:-1;;;34770:12:105;;;34763:60;4782:27:83;;4812:248;;-1:-1:-1;;;;;4876:18:83;;;;34839:12:105;;4909:46:83;;;;;;-1:-1:-1;;4909:46:83;;;;;;4990:4;;4996;;-1:-1:-1;;;;;4990:4:83;;;4909:46;4979:40;;12625:34:105;4996:4:83;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;4909:46:83;12537:18:105;;4979:40:83;;;-1:-1:-1;;4979:40:83;;;;;;;;;4969:51;;4979:40;4969:51;;;;5042:7;;-1:-1:-1;;;;;5042:7:83;4812:42;:248::i;:::-;5111:37;;-1:-1:-1;;;5111:37:83;;5125:4;5111:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;4782:278:83;;-1:-1:-1;;;;;;;;;;;;5111:13:83;;;17033:19:105;;5111:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5183:4:83;;5177;;5163:76;;;-1:-1:-1;;;;;35079:55:105;;;35061:74;;5183:4:83;35166:2:105;35151:18;;35144:34;1147:2:93;;-1:-1:-1;5183:4:83;;;;-1:-1:-1;5177:4:83;;;;;5163:76;;35034:18:105;5163:76:83;;;;;;;5265:7;;;5286:4;;5292;;5265:58;;-1:-1:-1;;;5265:58:83;;-1:-1:-1;;;;;5286:4:83;;;5265:58;;;13104:34:105;5292:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;5250:12:83;;5265:7;;;:20;;13015:19:105;;5265:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5250:73;;5334:65;5343:7;;;;;;;;;-1:-1:-1;;;;;5343:7:83;-1:-1:-1;;;;;5343:26:83;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5373:1;5334:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;5456:7;;;5485:4;;5491;;5456:58;;-1:-1:-1;;;5456:58:83;;-1:-1:-1;;;;;5485:4:83;;;5456:58;;;12625:34:105;5491:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;5410:43:83;;5456:7;;;:28;;12537:18:105;;5456:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5410:104;;5524:68;5533:8;:16;;;5524:68;;1147:2:93;5524:68:83;;;;;;;;;;;;;;;;;;;:8;:68::i;:::-;5602:73;5619:8;:15;;;5645:4;5602:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;5685:59;5696:8;:23;;;5685:59;;;;;;;;;;;;;;;;;:10;:59::i;:::-;5754:63;5766:8;:26;;;5754:63;;;;;;;;;;;;;;;;;:11;:63::i;:::-;5837:7;;;5859:4;;5865;;5837:33;;-1:-1:-1;;;5837:33:83;;-1:-1:-1;;;;;5859:4:83;;;5837:33;;;17558:34:105;5865:4:83;;;17608:18:105;;;17601:43;;;;5828:77:83;;5837:7;;;:21;;17470:18:105;;5837:33:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5837:33:83;;;;;;;;;;;;:::i;:::-;:40;5879:1;5828:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;5932:7;;;5954:4;;5960;;5932:33;;-1:-1:-1;;;5932:33:83;;-1:-1:-1;;;;;5954:4:83;;;5932:33;;;17558:34:105;5960:4:83;;;17608:18:105;;;17601:43;;;;5915:101:83;;5932:7;;;:21;;17470:18:105;;5932:33:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5932:33:83;;;;;;;;;;;;:::i;:::-;5966:1;5932:36;;;;;;;;:::i;:::-;;;;;;;:43;;;5986:4;5915:101;;;;;;;;;;;;;;;;;:8;:101::i;:::-;6027:78;6044:4;-1:-1:-1;;;;;6044:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6072:7;;6027:78;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6072:7:83;;;;6027:8;:78::i;:::-;6115:74;6132:4;-1:-1:-1;;;;;6132:14:83;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6159:4;;6115:74;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6159:4:83;;;;6115:8;:74::i;:::-;6199:75;6216:4;-1:-1:-1;;;;;6216:14:83;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6243:4;;6199:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6243:4:83;;;;6199:8;:75::i;:::-;6299:17;6330:19;6363:18;6395:22;6431:25;6470:20;6504:31;6548:4;-1:-1:-1;;;;;6548:27:83;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6285:292;;;;;;;;;;;;;;6588:66;6597:10;6588:66;;1202:5:93;6588:66:83;;;;;;;;;;;;;;;;;;;:8;:66::i;:::-;6664:70;6673:12;6664:70;;1262:2:93;6664:70:83;;;;;;;;;;;;;;;;;;;:8;:70::i;:::-;6744:68;6753:11;6744:68;;1318:3:93;6744:68:83;;;;;;;;;;;;;;;;;;;:8;:68::i;:::-;6822:76;6831:15;6822:76;;1379:5:93;6822:76:83;;;;;;;;;;;;;;;;;;;:8;:76::i;:::-;6908:83;6917:18;6908:83;;1446:6:93;6908:83:83;;;;;;;;;;;;;;;;;;;:8;:83::i;:::-;7001:72;7010:13;7001:72;;1508:5:93;7001:72:83;;;;;;;;;;;;;;;;;;;:8;:72::i;:::-;7083:95;7092:24;7083:95;;1581:7:93;7083:95:83;;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;7190:28;7220:26;7248:18;7268:23;7307:4;-1:-1:-1;;;;;7307:29:83;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7189:149;;;;;;;;7349:59;7358:21;7349:59;;7381:1;7349:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;7418:57;7427:19;7418:57;;7448:1;7418:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;7485:54;7494:11;7485:54;;992:7:93;7485:54:83;;;;;;;;;;;;;;;;;;;:8;:54::i;:::-;7549;7558:16;7549:54;;7576:1;7549:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;4772:2838;;;;;;;;;;;;;;4736:2874::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28108:1144:83;28190:7;;:32;;;-1:-1:-1;;;28190:32:83;;;;28155;;-1:-1:-1;;;;;28190:7:83;;:30;;:32;;;;;;;;;;;;;;:7;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28155:67;;28233:15;28265:2;28251:17;;;;;:::i;:::-;37264:4:105;37252:17;;;37234:36;;37222:2;37207:18;28251:17:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28288:7:83;;;:30;;-1:-1:-1;;;28288:30:83;;-1:-1:-1;;;;;11255:55:105;;;28288:30:83;;;11237:74:105;28233:35:83;;-1:-1:-1;28279:72:83;;28288:7;;;;:20;;11210:18:105;28288:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28320:5;28279:72;;;;;;;;;;;;;;;;;:8;:72::i;:::-;28362:37;;-1:-1:-1;;;28362:37:83;;28376:4;28362:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;28362:13:83;;;17033:19:105;;28362:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28414:25:83;;-1:-1:-1;;;;;28414:25:83;;;-1:-1:-1;28414:25:83;;-1:-1:-1;28414:25:83;;;28449:7;;;:31;;-1:-1:-1;;;28449:31:83;;-1:-1:-1;;;;;11255:55:105;;;28449:31:83;;;11237:74:105;28449:7:83;;;;:21;;11210:18:105;28449:31:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28500:7:83;;;:30;;-1:-1:-1;;;28500:30:83;;-1:-1:-1;;;;;11255:55:105;;;28500:30:83;;;11237:74:105;28491:71:83;;-1:-1:-1;28500:7:83;;;;-1:-1:-1;28500:20:83;;11210:18:105;28500:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28532:4;28491:71;;;;;;;;;;;;;;;;;:8;:71::i;:::-;28581:7;;:32;;;-1:-1:-1;;;28581:32:83;;;;28572:97;;-1:-1:-1;;;;;28581:7:83;;:30;;:32;;;;;;;;;;;;;;:7;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28615:28;:24;28642:1;28615:28;:::i;:::-;28572:97;;;;;;;;;;;;;;;;;:8;:97::i;:::-;28728:7;;;:54;;-1:-1:-1;;;28728:54:83;;;;;4048:25:105;;;28679:139:83;;28709:8;;-1:-1:-1;;;;;28728:7:83;;:28;;4021:18:105;28728:54:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28679:139;;;;;;;;;;;;;;;;;:8;:139::i;:::-;28867:15;;-1:-1:-1;;;28867:15:83;;-1:-1:-1;;;;;28876:5:83;11255:55:105;28867:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;28867:8:83;;;11210:18:105;;28867:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28908:74:83;;;28976:5;-1:-1:-1;;;;;11255:55:105;28908:74:83;;;;11237::105;;;;28908::83;;;;;;;;;;11210:18:105;;;;28908:74:83;;;;;;;-1:-1:-1;;;;;28908:74:83;-1:-1:-1;;;28908:74:83;;;28892:91;;-1:-1:-1;;;28892:91:83;;-1:-1:-1;;;;;;;;;;;28892:15:83;-1:-1:-1;28892:15:83;;-1:-1:-1;28892:91:83;;28908:74;28892:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28993:7:83;;;:31;;-1:-1:-1;;;28993:31:83;;-1:-1:-1;;;;;11255:55:105;;;28993:31:83;;;11237:74:105;28993:7:83;;;;-1:-1:-1;28993:21:83;;-1:-1:-1;11210:18:105;28993:31:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29110:93:83;;;-1:-1:-1;;;;;11255:55:105;;29110:93:83;;;;11237:74:105;;;;29110:93:83;;;;;;;;;;11210:18:105;;;;29110:93:83;;;;;;;-1:-1:-1;;;;;29110:93:83;-1:-1:-1;;;29110:93:83;;;29094:110;;-1:-1:-1;;;29094:110:83;;-1:-1:-1;;;;;;;;;;;29094:15:83;-1:-1:-1;29094:15:83;;-1:-1:-1;29094:110:83;;29110:93;29094:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29214:7:83;;;:31;;-1:-1:-1;;;29214:31:83;;-1:-1:-1;;;;;11255:55:105;;;29214:31:83;;;11237:74:105;29214:7:83;;;;-1:-1:-1;29214:21:83;;-1:-1:-1;11210:18:105;29214:31:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28145:1107;;28108:1144::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;;;12220:205;;;;;;:::o;35296:1299:83:-;35372:7;;:28;;;-1:-1:-1;;;35372:28:83;;;;35343:26;;-1:-1:-1;;;;;35372:7:83;;:26;;:28;;;;;;;;;;;;;;:7;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35343:57;;35410:29;35442:7;;;;;;;;;-1:-1:-1;;;;;35442:7:83;-1:-1:-1;;;;;35442:29:83;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35495:7;;;:50;;-1:-1:-1;;;35495:50:83;;;;;37891:25:105;;;35539:4:83;37932:18:105;;;37925:83;;;;35410:63:83;;-1:-1:-1;35484:87:83;;-1:-1:-1;;;;;35495:7:83;;:15;;37864:18:105;;35495:50:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35484:87;;;;;;;;;;;;;;;;;:10;:87::i;:::-;35593:7;;35609:31;;;-1:-1:-1;;;35609:31:83;;;;35581:93;;-1:-1:-1;;;;;35593:7:83;;:15;;:7;;35609:29;;:31;;;;;;;;;;;;;;35593:7;35609:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35593:55;;-1:-1:-1;;;;;;35593:55:83;;;;;;;;;;37891:25:105;;;;-1:-1:-1;;;;;35642:5:83;37952:55:105;37932:18;;;37925:83;37864:18;;35593:55:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35581:93;;;;;;;;;;;;;;;;;:11;:93::i;:::-;35685:7;;:47;;-1:-1:-1;;;35685:47:83;;-1:-1:-1;;;;;35685:7:83;;;;:17;;:47;;35703:21;;35726:5;;35685:47;;37891:25:105;;;-1:-1:-1;;;;;37952:55:105;37947:2;37932:18;;37925:83;37879:2;37864:18;;37717:297;35685:47:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;35753:7:83;;:45;;-1:-1:-1;;;35753:45:83;;35742:82;;-1:-1:-1;;;;;;35753:7:83;;;;-1:-1:-1;35753:15:83;;:45;;35769:21;;35792:5;;35753:45;;37891:25:105;;;-1:-1:-1;;;;;37952:55:105;37947:2;37932:18;;37925:83;37879:2;37864:18;;37717:297;35753:45:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35742:82;;;;;;;;;;;;;;;;;:10;:82::i;:::-;35835:7;;:48;;-1:-1:-1;;;35835:48:83;;-1:-1:-1;;;;;35835:7:83;;;;:18;;:48;;35854:21;;35877:5;;35835:48;;37891:25:105;;;-1:-1:-1;;;;;37952:55:105;37947:2;37932:18;;37925:83;37879:2;37864:18;;37717:297;35835:48:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;35905:7:83;;:45;;-1:-1:-1;;;35905:45:83;;35893:83;;-1:-1:-1;;;;;;35905:7:83;;;;-1:-1:-1;35905:15:83;;:45;;35921:21;;35944:5;;35905:45;;37891:25:105;;;-1:-1:-1;;;;;37952:55:105;37947:2;37932:18;;37925:83;37879:2;37864:18;;37717:297;35905:45:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35893:83;;;;;;;;;;;;;;;;;:11;:83::i;:::-;35987:75;;-1:-1:-1;;;35987:75:83;;-1:-1:-1;;;35987:75:83;;;38473:52:105;-1:-1:-1;;;;;;;;;;;35987:15:83;;;38446:18:105;;35987:75:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36072:7:83;;;:44;;-1:-1:-1;;;36072:44:83;;:7;:44;;;37891:25:105;36110:4:83;37932:18:105;;;37925:83;;;;-1:-1:-1;;;;;36072:7:83;;-1:-1:-1;36072:17:83;;-1:-1:-1;37864:18:105;;36072:44:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36127:7:83;;;:30;;-1:-1:-1;;;36127:30:83;;-1:-1:-1;;;;;36153:3:83;11255:55:105;;36127:30:83;;;11237:74:105;36127:7:83;;;;-1:-1:-1;36127:25:83;;-1:-1:-1;11210:18:105;36127:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36179:7:83;;;:50;;-1:-1:-1;;;36179:50:83;;;;;37891:25:105;;;36223:4:83;37932:18:105;;;37925:83;;;;36168:87:83;;-1:-1:-1;;;;;;36179:7:83;;-1:-1:-1;36179:15:83;;37864:18:105;;36179:50:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36168:87;;;;;;;;;;;;;;;;;:10;:87::i;:::-;36277:7;;:40;;-1:-1:-1;;;36277:40:83;;36265:78;;-1:-1:-1;;;;;36277:7:83;;:15;;:40;;36293:18;;36313:3;;36277:40;;37891:25:105;;;-1:-1:-1;;;;;37952:55:105;37947:2;37932:18;;37925:83;37879:2;37864:18;;37717:297;36277:40:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36265:78;;;;;;;;;;;;;;;;;:11;:78::i;:::-;36354:13;;-1:-1:-1;;;36354:13:83;;-1:-1:-1;;;;;36363:3:83;11255:55:105;36354:13:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;36354:8:83;;;11210:18:105;;36354:13:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36377:7;;;;;;;;;-1:-1:-1;;;;;36377:7:83;-1:-1:-1;;;;;36377:23:83;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36424:7:83;;:40;;-1:-1:-1;;;36424:40:83;;36413:77;;-1:-1:-1;;;;;;36424:7:83;;;;-1:-1:-1;36424:15:83;;:40;;36440:18;;36460:3;;36424:40;;37891:25:105;;;-1:-1:-1;;;;;37952:55:105;37947:2;37932:18;;37925:83;37879:2;37864:18;;37717:297;36424:40:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36413:77;;;;;;;;;;;;;;;;;:10;:77::i;:::-;36512:7;;:50;;-1:-1:-1;;;36512:50:83;;36500:88;;-1:-1:-1;;;;;36512:7:83;;:15;;:50;;36528:18;;36556:4;;36512:50;;37891:25:105;;;-1:-1:-1;;;;;37952:55:105;37947:2;37932:18;;37925:83;37879:2;37864:18;;37717:297;36512:50:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36500:88;;;;;;;;;;;;;;;;;:11;:88::i;:::-;35333:1262;;35296:1299::o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9282:2580:83;9397:15;;-1:-1:-1;;;9397:15:83;;-1:-1:-1;;;;;9406:5:83;11255:55:105;9397:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;9397:8:83;;;11210:18:105;;9397:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9451:102:83;;;9529:5;-1:-1:-1;;;;;13794:55:105;9451:102:83;;;13776:74:105;1147:2:93;13866:18:105;;;;13859:47;;;;9451:102:83;;;;;;;;;;13749:18:105;;;;9451:102:83;;;;;;;-1:-1:-1;;;;;9451:102:83;-1:-1:-1;;;9451:102:83;;;9422:141;;-1:-1:-1;;;9422:141:83;;-1:-1:-1;;;;;;;;;;;9422:15:83;-1:-1:-1;9422:15:83;;-1:-1:-1;9422:141:83;;9451:102;9422:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9573:7:83;;;9594:4;;9600;;9573:58;;-1:-1:-1;;;9573:58:83;;-1:-1:-1;;;;;9594:4:83;;;9573:58;;;13104:34:105;9600:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;9573:7:83;;-1:-1:-1;9573:20:83;;-1:-1:-1;13015:19:105;;9573:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9704:20;9741:3;9746;1699:4:93;9727:46:83;;;;;:::i;:::-;-1:-1:-1;;;;;28502:15:105;;;28484:34;;28554:15;;;;28549:2;28534:18;;28527:43;28601:2;28586:18;;28579:34;28411:2;28396:18;9727:46:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9856:91:83;;;1147:2:93;9856:91:83;;;;31464:38:105;;;;9856:91:83;;;;;;;;;;31437:18:105;;;;9856:91:83;;;;;;;-1:-1:-1;;;;;9856:91:83;-1:-1:-1;;;9856:91:83;;;9840:108;;-1:-1:-1;;;9840:108:83;;9704:69;;-1:-1:-1;;;;;;;;;;;;9840:15:83;;;:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9982:4:83;;9988;;9958:61;;-1:-1:-1;;;9958:61:83;;-1:-1:-1;;;;;9982:4:83;;;9958:61;;;13104:34:105;9988:4:83;;;13154:18:105;;;13147:43;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;9958:23:83;;;;-1:-1:-1;9958:23:83;;-1:-1:-1;13015:19:105;;9958:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10030:358:83;;-1:-1:-1;;;10030:358:83;;1147:2:93;10030:358:83;;;29424:34:105;1202:5:93;29474:18:105;;;29467:43;;;1262:2:93;29526:18:105;;;29519:43;1318:3:93;29578:18:105;;;29571:43;29630:19;;;29623:44;1446:6:93;29710:19:105;;;29703:44;1508:5:93;29763:19:105;;;29756:44;1581:7:93;29816:19:105;;;29809:44;1638:5:93;29869:19:105;;;29862:51;-1:-1:-1;;;;;10030:20:83;;;;;29371:19:105;;10030:358:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10562:4:83;;10482:85;;;-1:-1:-1;;;;;10562:4:83;;;10482:85;;;;11237:74:105;;;;10482:85:83;;;;;;;;;;11210:18:105;;;;10482:85:83;;;;;;;-1:-1:-1;;;;;10482:85:83;-1:-1:-1;;;10482:85:83;;;10466:102;-1:-1:-1;;;10466:102:83;;-1:-1:-1;;;;;;;;;;;10466:15:83;-1:-1:-1;10466:15:83;;-1:-1:-1;10466:102:83;;10482:85;10466:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10602:4:83;;10608;;10578:61;;-1:-1:-1;;;10578:61:83;;-1:-1:-1;;;;;10602:4:83;;;10578:61;;;13104:34:105;10608:4:83;;;13154:18:105;;;13147:43;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;10578:23:83;;;;-1:-1:-1;10578:23:83;;-1:-1:-1;13015:19:105;;10578:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10753:4:83;;10728:30;;-1:-1:-1;;;10728:30:83;;-1:-1:-1;;;;;10753:4:83;;;10728:30;;;11237:74:105;10728:24:83;;;;;;11210:18:105;;10728:30:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10858:4:83;;10784:79;;;-1:-1:-1;;;;;10858:4:83;;;10784:79;;;;11237:74:105;;;;10784:79:83;;;;;;;;;;11210:18:105;;;;10784:79:83;;;;;;;-1:-1:-1;;;;;10784:79:83;-1:-1:-1;;;10784:79:83;;;10768:96;-1:-1:-1;;;10768:96:83;;-1:-1:-1;;;;;;;;;;;10768:15:83;-1:-1:-1;10768:15:83;;-1:-1:-1;10768:96:83;;10784:79;10768:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10898:4:83;;10874:61;;-1:-1:-1;;;10874:61:83;;-1:-1:-1;;;;;10898:4:83;;;10874:61;;;13104:34:105;;;13154:18;;;13147:43;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;10874:23:83;;;;-1:-1:-1;10874:23:83;;-1:-1:-1;13015:19:105;;10874:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11009:66:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11009:66:83;-1:-1:-1;;;11009:66:83;;;10993:83;;-1:-1:-1;;;10993:83:83;;-1:-1:-1;;;;;;;;;;;10993:15:83;;;:83;;11009:66;;10993:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11130:4:83;;11086:75;;-1:-1:-1;;;11086:75:83;;11125:1;11086:75;;;13104:34:105;-1:-1:-1;;;;;11130:4:83;;;13154:18:105;;;13147:43;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;11086:23:83;;;;-1:-1:-1;11086:23:83;;-1:-1:-1;13015:19:105;;11086:75:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11252:75:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11252:75:83;-1:-1:-1;;;11252:75:83;;;11236:92;;-1:-1:-1;;;11236:92:83;;-1:-1:-1;;;;;;;;;;;11236:15:83;;;:92;;11252:75;;11236:92;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11362:4:83;;11368;;11338:61;;-1:-1:-1;;;11338:61:83;;-1:-1:-1;;;;;11362:4:83;;;11338:61;;;13104:34:105;11368:4:83;;;13154:18:105;;;13147:43;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;11338:23:83;;;;-1:-1:-1;11338:23:83;;-1:-1:-1;13015:19:105;;11338:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11410:10;-1:-1:-1;;;;;11410:34:83;;11464:10;11453:22;;;;;:::i;:::-;-1:-1:-1;;;;;11255:55:105;;;11237:74;;11225:2;11210:18;11453:22:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11410:67:83;;-1:-1:-1;;;;;;11410:67:83;;;;;;;-1:-1:-1;;;;;11255:55:105;;;11410:67:83;;;11237:74:105;11210:18;;11410:67:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11594:4:83;;11600;;11570:61;;-1:-1:-1;;;11570:61:83;;-1:-1:-1;;;;;11594:4:83;;;11570:61;;;13104:34:105;11600:4:83;;;13154:18:105;;;13147:43;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;11570:23:83;;;;-1:-1:-1;11570:23:83;;-1:-1:-1;13015:19:105;;11570:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11745:4:83;;11751;;11670:104;;;-1:-1:-1;;;;;11745:4:83;;;11670:104;;;12625:34:105;11751:4:83;;;;12675:18:105;;;12668:43;1147:2:93;12727:18:105;;;;12720:47;;;;11670:104:83;;;;;;;;;;12537:18:105;;;;11670:104:83;;;;;;;-1:-1:-1;;;;;11670:104:83;-1:-1:-1;;;11670:104:83;;;11641:143;-1:-1:-1;;;11641:143:83;;-1:-1:-1;;;;;;;;;;;11641:15:83;;;:143;;11670:104;11641:143;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11818:4:83;;11824;;11794:61;;-1:-1:-1;;;11794:61:83;;-1:-1:-1;;;;;11818:4:83;;;11794:61;;;13104:34:105;11824:4:83;;;13154:18:105;;;13147:43;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;11794:23:83;;;;-1:-1:-1;11794:23:83;;-1:-1:-1;13015:19:105;;11794:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24952:1134::-;25042:37;;-1:-1:-1;;;25042:37:83;;25056:4;25042:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;25027:5:83;;-1:-1:-1;;;;;;;;;;;25042:13:83;;;17033:19:105;;25042:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25094:55:83;;;1699:4:93;28126:25:105;;28182:2;28167:18;;28160:34;;;25094:55:83;;-1:-1:-1;28099:18:105;;-1:-1:-1;25094:55:83;;;;;;;25159:7;;;:40;;-1:-1:-1;;;25159:40:83;;;;;4048:25:105;;;-1:-1:-1;;;;;25159:7:83;;;;:23;;4021:18:105;25159:40:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25210:79;25219:7;;;;;;;;;-1:-1:-1;;;;;25219:7:83;-1:-1:-1;;;;;25219:23:83;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25246:15;25210:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;25338:15;;-1:-1:-1;;;25338:15:83;;-1:-1:-1;;;;;25347:5:83;11255:55:105;25338:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;25338:8:83;;;11210:18:105;;25338:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25379:74:83;;;25447:5;-1:-1:-1;;;;;11255:55:105;25379:74:83;;;;11237::105;;;;25379::83;;;;;;;;;;11210:18:105;;;;25379:74:83;;;;;;;-1:-1:-1;;;;;25379:74:83;-1:-1:-1;;;25379:74:83;;;25363:91;;-1:-1:-1;;;25363:91:83;;-1:-1:-1;;;;;;;;;;;25363:15:83;-1:-1:-1;25363:15:83;;-1:-1:-1;25363:91:83;;25379:74;25363:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25464:7:83;;;:46;;-1:-1:-1;;;25464:46:83;;1699:4:93;25464:46:83;;;4048:25:105;-1:-1:-1;;;;;25464:7:83;;;;-1:-1:-1;25464:23:83;;-1:-1:-1;4021:18:105;25464:46:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25574:88:83;;;;;;;4048:25:105;;;25574:88:83;;;;;;;;;;4021:18:105;;;;25574:88:83;;;;;;;-1:-1:-1;;;;;25574:88:83;-1:-1:-1;;;25574:88:83;;;25558:105;;-1:-1:-1;;;25558:105:83;;-1:-1:-1;;;;;;;;;;;25558:15:83;-1:-1:-1;25558:15:83;;-1:-1:-1;25558:105:83;;25574:88;25558:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25673:7:83;;;:40;;-1:-1:-1;;;25673:40:83;;;;;4048:25:105;;;-1:-1:-1;;;;;25673:7:83;;;;-1:-1:-1;25673:23:83;;-1:-1:-1;4021:18:105;25673:40:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25779:23;25805:7;;;;;;;;;-1:-1:-1;;;;;25805:7:83;-1:-1:-1;;;;;25805:26:83;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25779:54;-1:-1:-1;;;;;;;;;;;;25843:15:83;-1:-1:-1;;;25965:19:83;25779:54;25983:1;25965:19;:::i;:::-;25872:143;;;;;28126:25:105;;;;28167:18;;;28160:34;;;28099:18;;25872:143:83;;;-1:-1:-1;;25872:143:83;;;;;;;;;;;;;;-1:-1:-1;;;;;25872:143:83;-1:-1:-1;;;;;;25872:143:83;;;;;;25843:182;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26035:7:83;;-1:-1:-1;;;;;26035:7:83;;-1:-1:-1;26035:23:83;;-1:-1:-1;26059:19:83;:15;26035:7;26059:19;:::i;:::-;26035:44;;;;;;;;;;;;;4048:25:105;;4036:2;4021:18;;3902:177;10071:1171:93;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;11255:55:105;;11033:19:93;;;11237:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;11210:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;35079:55:105;;;11062:41:93;;;35061:74:105;35151:18;;;35144:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;35034:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;35079:55:105;;;11113:41:93;;;35061:74:105;35151:18;;;35144:34;;;11113:15:93;;;;;35034:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30206:366:83;30265:7;;;30286:4;;30292;;30265:58;;-1:-1:-1;;;30265:58:83;;-1:-1:-1;;;;;30286:4:83;;;30265:58;;;13104:34:105;30292:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;30250:12:83;;30265:7;;;:20;;13015:19:105;;30265:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30334:7;;;:24;;-1:-1:-1;;;30334:24:83;;-1:-1:-1;;;;;11255:55:105;;;30334:24:83;;;11237:74:105;30250:73:83;;-1:-1:-1;30334:7:83;;;:18;;11210::105;30334:24:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30415:15:83;;-1:-1:-1;;;30415:15:83;;-1:-1:-1;;;;;30424:5:83;11255:55:105;30415:15:83;;;11237:74:105;-1:-1:-1;;;;;;;;;;;30415:8:83;-1:-1:-1;30415:8:83;;-1:-1:-1;11210:18:105;;30415:15:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30456:74:83;;;30524:5;-1:-1:-1;;;;;11255:55:105;30456:74:83;;;;11237::105;;;;30456::83;;;;;;;;;;11210:18:105;;;;30456:74:83;;;;;;;-1:-1:-1;;;;;30456:74:83;-1:-1:-1;;;30456:74:83;;;30440:91;;-1:-1:-1;;;30440:91:83;;-1:-1:-1;;;;;;;;;;;30440:15:83;-1:-1:-1;30440:15:83;;-1:-1:-1;30440:91:83;;30456:74;30440:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30541:7:83;;;:24;;-1:-1:-1;;;30541:24:83;;-1:-1:-1;;;;;11255:55:105;;;30541:24:83;;;11237:74:105;30541:7:83;;;;-1:-1:-1;30541:18:83;;-1:-1:-1;11210:18:105;30541:24:83;11083:234:105;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;31494:6:105;31482:19;;12532:26:93;;;31464:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;31437:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;35061:74:105;;;1398:17:1;35151:18:105;;;35144:34;1428:1:1;;1377:7;;35034:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;30578:1723:83:-;30777:7;;;:340;;-1:-1:-1;;;30777:340:83;;30808:1;30777:340;;;29424:34:105;1202:5:93;29474:18:105;;;29467:43;;;1262:2:93;29526:18:105;;;29519:43;1318:3:93;29578:18:105;;;29571:43;29630:19;;;29623:44;;;;1446:6:93;29710:19:105;;;29703:44;1508:5:93;29763:19:105;;;29756:44;1581:7:93;29816:19:105;;;29809:44;30777:7:83;29869:19:105;;;29862:51;-1:-1:-1;;;;;30777:7:83;;:17;;29371:19:105;;30777:340:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31128:7:83;;;:341;;-1:-1:-1;;;31128:341:83;;31159:2;31128:341;;;29424:34:105;1202:5:93;29474:18:105;;;29467:43;;;1262:2:93;29526:18:105;;;29519:43;1318:3:93;29578:18:105;;;29571:43;29630:19;;;29623:44;;;;1446:6:93;29710:19:105;;;29703:44;1508:5:93;29763:19:105;;;29756:44;1581:7:93;29816:19:105;;;29809:44;31128:7:83;29869:19:105;;;29862:51;-1:-1:-1;;;;;31128:7:83;;-1:-1:-1;31128:17:83;;-1:-1:-1;29371:19:105;;31128:341:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31496:7:83;;;31517:4;;31523;;31496:43;;-1:-1:-1;;;31496:43:83;;-1:-1:-1;;;;;31517:4:83;;;31496:43;;;13104:34:105;31523:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;31537:1:83;13264:18:105;;;13257:47;31480:13:83;;-1:-1:-1;31496:7:83;;-1:-1:-1;31496:20:83;;13015:19:105;;31496:43:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31565:7;;;31586:4;;31592;;31565:44;;-1:-1:-1;;;31565:44:83;;-1:-1:-1;;;;;31586:4:83;;;31565:44;;;13104:34:105;31592:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;31606:2:83;13264:18:105;;;13257:47;31480:59:83;;-1:-1:-1;31549:13:83;;31565:7;;:20;;13015:19:105;;31565:44:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31619:7;;;31640:4;;31646;;31619:43;;-1:-1:-1;;;31619:43:83;;-1:-1:-1;;;;;31640:4:83;;;31619:43;;;13104:34:105;31646:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;31660:1:83;13264:18:105;;;13257:47;31549:60:83;;-1:-1:-1;31619:7:83;;;;;:20;;13015:19:105;;31619:43:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;31730:7:83;;;31752:4;;31758;;31730:33;;-1:-1:-1;;;31730:33:83;;-1:-1:-1;;;;;31752:4:83;;;31730:33;;;17558:34:105;31758:4:83;;;17608:18:105;;;17601:43;;;;31673:54:83;;31730:7;;;:21;;17470:18:105;;31730:33:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31730:33:83;;;;;;;;;;;;:::i;:::-;31673:90;;31774:61;31783:16;:23;31808:1;31774:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;31846:45;31894:16;31911:1;31894:19;;;;;;;;:::i;:::-;;;;;;;31846:67;;31923:76;31940:9;:16;;;31967:5;31923:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;32009:55;32018:9;:17;;;32009:55;;32037:1;32009:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;32075:45;32123:16;32140:1;32123:19;;;;;;;;:::i;:::-;;;;;;;32075:67;;32152:76;32169:9;:16;;;32196:5;32152:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;32238:56;32247:9;:17;;;32238:56;;32266:2;32238:56;;;;;;;;;;;;;;;;;:8;:56::i;32307:2983::-;32555:7;;:31;;;-1:-1:-1;;;32555:31:83;;;;-1:-1:-1;;;;;;;;;;;32413:15:83;;;-1:-1:-1;;;32482:56:83;32548:4;;-1:-1:-1;;;;;32555:7:83;;:29;;:31;;;;;;;;;;;;;;:7;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32442:158;;-1:-1:-1;;;;;35079:55:105;;;32442:158:83;;;35061:74:105;35151:18;;;35144:34;35034:18;;32442:158:83;;;-1:-1:-1;;32442:158:83;;;;;;;;;;;;;;-1:-1:-1;;;;;32442:158:83;-1:-1:-1;;;;;;32442:158:83;;;;;;32413:197;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32620:7:83;;;32655:4;;32661;;32697:12;;;32620:7;32697:12;;;;;;;;;;-1:-1:-1;;;32620:90:83;;;-1:-1:-1;;;;;32620:7:83;;;;-1:-1:-1;32620:34:83;;-1:-1:-1;32620:90:83;;32655:4;;;;32661;;;;1147:2:93;;32697:12:83;32620:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32721:7:83;;32739:31;;;-1:-1:-1;;;32739:31:83;;;;-1:-1:-1;;;;;32721:7:83;;;;-1:-1:-1;32721:17:83;;-1:-1:-1;32721:7:83;;32739:29;;:31;;;;;;;;;;;;;;;32721:7;32739:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32721:65;;-1:-1:-1;;;;;;32721:65:83;;;;;;;;;;37891:25:105;;;;32780:4:83;37932:18:105;;;37925:83;37864:18;;32721:65:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32797:70:83;;-1:-1:-1;;;32797:70:83;;-1:-1:-1;;;32797:70:83;;;38473:52:105;-1:-1:-1;;;;;;;;;;;32797:15:83;-1:-1:-1;32797:15:83;;-1:-1:-1;38446:18:105;;32797:70:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32877:7:83;;;32912:4;;32918;;32954:12;;;32877:7;32954:12;;;;;;;;;;-1:-1:-1;;;32877:90:83;;;-1:-1:-1;;;;;32877:7:83;;;;-1:-1:-1;32877:34:83;;-1:-1:-1;32877:90:83;;32912:4;;;;32918;;;;1147:2:93;;32954:12:83;32877:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32978:70:83;;-1:-1:-1;;;32978:70:83;;-1:-1:-1;;;32978:70:83;;;38473:52:105;-1:-1:-1;;;;;;;;;;;32978:15:83;-1:-1:-1;32978:15:83;;-1:-1:-1;38446:18:105;;32978:70:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33058:7:83;;;33093:4;;33099;;33144:12;;;33058:7;33144:12;;;;;;;;;-1:-1:-1;;;33058:99:83;;;-1:-1:-1;;;;;33058:7:83;;;;-1:-1:-1;33058:34:83;;-1:-1:-1;33058:99:83;;33093:4;;;;33099;;;;1147:2:93;;33058:7:83;;:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33168:70:83;;-1:-1:-1;;;33168:70:83;;-1:-1:-1;;;33168:70:83;;;38473:52:105;-1:-1:-1;;;;;;;;;;;33168:15:83;-1:-1:-1;33168:15:83;;-1:-1:-1;38446:18:105;;33168:70:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33248:7:83;;;33283:4;;33289;;33341:12;;;33248:7;33341:12;;;;;;;;;-1:-1:-1;;;33248:106:83;;;-1:-1:-1;;;;;33248:7:83;;;;-1:-1:-1;33248:34:83;;-1:-1:-1;33248:106:83;;33283:4;;;;33289;;;;1147:2:93;;-1:-1:-1;;;33329:8:83;33248:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33365:15;33383;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33446:394:83;;;;;;;;-1:-1:-1;;;;;33446:394:83;;;;33524:4;33446:394;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33365:33;;-1:-1:-1;33409:34:83;33877:24;33446:394;33877:12;:24::i;:::-;34013:4;;34019;;33941:101;;;-1:-1:-1;;;;;34013:4:83;;;33941:101;;;12625:34:105;34019:4:83;;;;12675:18:105;;;12668:43;1147:2:93;12727:18:105;;;;12720:47;;;;33941:101:83;;;;;;;;;;12537:18:105;;;;33941:101:83;;;;;;;-1:-1:-1;;;;;33941:101:83;-1:-1:-1;;;33941:101:83;;;33912:140;-1:-1:-1;;;33912:140:83;;33850:51;;-1:-1:-1;;;;;;;;;;;;33912:15:83;;;:140;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34062:7:83;;;34097:4;;34103;;34145:12;;;34062:7;34145:12;;;;;;;;;-1:-1:-1;;;34062:96:83;;;-1:-1:-1;;;;;34062:7:83;;;;-1:-1:-1;34062:34:83;;-1:-1:-1;34062:96:83;;34097:4;;;;34103;;;;1147:2:93;;34127:16:83;;34062:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34270:4:83;;34276;;34198:101;;;-1:-1:-1;;;;;34270:4:83;;;34198:101;;;12625:34:105;34276:4:83;;;;12675:18:105;;;12668:43;1147:2:93;12727:18:105;;;;12720:47;;;;34198:101:83;;;;;;;;;;12537:18:105;;;;34198:101:83;;;;;;;-1:-1:-1;;;;;34198:101:83;-1:-1:-1;;;34198:101:83;;;34169:140;-1:-1:-1;;;34169:140:83;;-1:-1:-1;;;;;;;;;;;34169:15:83;-1:-1:-1;34169:15:83;;-1:-1:-1;34169:140:83;;34198:101;34169:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34319:7:83;;;34347:4;;34353;;34319:57;;-1:-1:-1;;;34319:57:83;;-1:-1:-1;;;;;34347:4:83;;;34319:57;;;12625:34:105;34353:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;34319:7:83;;-1:-1:-1;34319:27:83;;-1:-1:-1;12537:18:105;;34319:57:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34402:7:83;;;34423:4;;34429;;34402:58;;-1:-1:-1;;;34402:58:83;;-1:-1:-1;;;;;34423:4:83;;;34402:58;;;13104:34:105;34429:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;34387:12:83;;-1:-1:-1;34402:7:83;;-1:-1:-1;34402:20:83;;13015:19:105;;34402:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34471:28;;-1:-1:-1;;;34471:28:83;;-1:-1:-1;;;;;11255:55:105;;;34471:28:83;;;11237:74:105;34387:73:83;;-1:-1:-1;34471:13:83;;;;;;11210:18:105;;34471:28:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34510:7:83;;;34545:4;;34551;;34593:12;;;34510:7;34593:12;;;;;;;;;-1:-1:-1;;;34510:96:83;;;-1:-1:-1;;;;;34510:7:83;;;;-1:-1:-1;34510:34:83;;-1:-1:-1;34510:96:83;;34545:4;;;;34551;;;;1147:2:93;;34575:16:83;;34510:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34617:93;34626:4;-1:-1:-1;;;;;34626:25:83;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34655:16;34617:93;;;;;;;;;;;;;;;;;:8;:93::i;:::-;34737:92;;;;;;;4048:25:105;;;34737:92:83;;;;;;;;;;4021:18:105;;;;34737:92:83;;;;;;;-1:-1:-1;;;;;34737:92:83;-1:-1:-1;;;34737:92:83;;;34721:109;;-1:-1:-1;;;34721:109:83;;-1:-1:-1;;;;;;;;;;;34721:15:83;;;:109;;34737:92;34721:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34840:7:83;;;34875:4;;34881;;34923:12;;;34840:7;34923:12;;;;;;;;;-1:-1:-1;;;34840:96:83;;;-1:-1:-1;;;;;34840:7:83;;;;-1:-1:-1;34840:34:83;;-1:-1:-1;34840:96:83;;34875:4;;;;34881;;;;1147:2:93;;34905:16:83;;34840:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34947:7:83;;;34975:4;;34981;;34947:57;;-1:-1:-1;;;34947:57:83;;-1:-1:-1;;;;;34975:4:83;;;34947:57;;;12625:34:105;34981:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;34947:7:83;;-1:-1:-1;34947:27:83;;-1:-1:-1;12537:18:105;;34947:57:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35015:87;35024:4;-1:-1:-1;;;;;35024:25:83;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35061:1;35053:10;;35015:87;;;;;;;;;;;;;;;;;:8;:87::i;:::-;35129:86;;;309:37:0;35129:86:83;;;;4048:25:105;;;;35129:86:83;;;;;;;;;;4021:18:105;;;;35129:86:83;;;;;;;-1:-1:-1;;;;;35129:86:83;-1:-1:-1;;;35129:86:83;;;35113:103;;-1:-1:-1;;;35113:103:83;;-1:-1:-1;;;;;;;;;;;35113:15:83;;;:103;;35129:86;35113:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;35226:7:83;;;35254:4;;35260;;35226:57;;-1:-1:-1;;;35226:57:83;;-1:-1:-1;;;;;35254:4:83;;;35226:57;;;12625:34:105;35260:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;35226:7:83;;-1:-1:-1;35226:27:83;;-1:-1:-1;12537:18:105;;35226:57:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32357:2933;;;;32307:2983::o;11868:1051::-;11943:7;;;11964:4;;11970;;11943:58;;-1:-1:-1;;;11943:58:83;;-1:-1:-1;;;;;11964:4:83;;;11943:58;;;13104:34:105;11970:4:83;;;13154:18:105;;;13147:43;;;;992:7:93;13206:18:105;;;13199:49;1147:2:93;13264:18:105;;;13257:47;11928:12:83;;11943:7;;;:20;;13015:19:105;;11943:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12057:37;;-1:-1:-1;;;12057:37:83;;12071:4;12057:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;11928:73:83;;-1:-1:-1;;;;;;;;;;;;12057:13:83;;;17033:19:105;;12057:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12109:37:83;;12141:4;445:41:105;;-1:-1:-1;;;;;12109:37:83;;;-1:-1:-1;12109:37:83;;-1:-1:-1;433:2:105;418:18;12109:37:83;;;;;;;12156:7;;;12181:4;;12187;;12156:60;;-1:-1:-1;;;12156:60:83;;-1:-1:-1;;;;;12181:4:83;;;12156:60;;;12114:34:105;12187:4:83;;;12164:18:105;;;12157:43;;;;1147:2:93;12216:18:105;;;12209:47;12156:7:83;12272:18:105;;;12265:50;12156:7:83;;:24;;12025:19:105;;12156:60:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12274:7:83;;;12303:4;;12309;;12274:58;;-1:-1:-1;;;12274:58:83;;-1:-1:-1;;;;;12303:4:83;;;12274:58;;;12625:34:105;12309:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;12227:44:83;;-1:-1:-1;12274:7:83;;-1:-1:-1;12274:28:83;;12537:18:105;;12274:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12227:105;;12342:87;12359:8;:15;;;12385:4;12342:87;;;;;;;;;;;;;;;;;:8;:87::i;:::-;12439:80;12448:8;:26;;;12476:4;12439:80;;;;;;;;;;;;;;;;;:8;:80::i;:::-;12563:37;;-1:-1:-1;;;12563:37:83;;12577:4;12563:37;;;17061:41:105;;;17118:18;;;17111:50;;;17177:18;;;17170:50;;;17236:18;;;17229:50;-1:-1:-1;;;;;;;;;;;12563:13:83;;;17033:19:105;;12563:37:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12615:38:83;;12647:5;445:41:105;;-1:-1:-1;;;;;12615:38:83;;;-1:-1:-1;12615:38:83;;-1:-1:-1;433:2:105;418:18;12615:38:83;;;;;;;12663:7;;;12688:4;;12694;;12663:61;;-1:-1:-1;;;12663:61:83;;-1:-1:-1;;;;;12688:4:83;;;12663:61;;;12114:34:105;12694:4:83;;;12164:18:105;;;12157:43;;;;1147:2:93;12216:18:105;;;12209:47;12663:7:83;12272:18:105;;;12265:50;12663:7:83;;:24;;12025:19:105;;12663:61:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12757:7:83;;;12786:4;;12792;;12757:58;;-1:-1:-1;;;12757:58:83;;-1:-1:-1;;;;;12786:4:83;;;12757:58;;;12625:34:105;12792:4:83;;;12675:18:105;;;12668:43;;;;1147:2:93;12727:18:105;;;12720:47;12735:177:83;;-1:-1:-1;12757:7:83;;-1:-1:-1;12757:28:83;;12537:18:105;;12757:58:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:76;;;12847:5;12735:177;;;;;;;;;;;;;;;;;:8;:177::i;3483:1247::-;3586:7;;3575:19;;3547:25;;-1:-1:-1;;;;;3586:7:83;;3575:19;;;:::i;:::-;-1:-1:-1;;;;;11255:55:105;;;11237:74;;11225:2;11210:18;3575:19:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3604:7:83;;;:59;;-1:-1:-1;;;3604:59:83;;-1:-1:-1;;;;;11255:55:105;;;3604:59:83;;;11237:74:105;3547:47:83;;-1:-1:-1;3604:7:83;;;:31;;11210:18:105;3604:59:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3743:92:83;;;-1:-1:-1;;;;;11255:55:105;;3743:92:83;;;;11237:74:105;;;;3743:92:83;;;;;;;;;;11210:18:105;;;;3743:92:83;;;;;;;-1:-1:-1;;;;;3743:92:83;-1:-1:-1;;;3743:92:83;;;3727:109;;-1:-1:-1;;;3727:109:83;;-1:-1:-1;;;;;;;;;;;3727:15:83;-1:-1:-1;3727:15:83;;-1:-1:-1;3727:109:83;;3743:92;3727:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3846:7:83;;;:59;;-1:-1:-1;;;3846:59:83;;-1:-1:-1;;;;;11255:55:105;;;3846:59:83;;;11237:74:105;3846:7:83;;;;-1:-1:-1;3846:31:83;;-1:-1:-1;11210:18:105;3846:59:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3916:24;3957:3;3962;1699:4:93;3943:46:83;;;;;:::i;:::-;-1:-1:-1;;;;;28502:15:105;;;28484:34;;28554:15;;;;28549:2;28534:18;;28527:43;28601:2;28586:18;;28579:34;28411:2;28396:18;3943:46:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4000:55:83;;-1:-1:-1;;;4000:55:83;;4025:1;4000:55;;;29424:34:105;;;29474:18;;;29467:43;;;29526:18;;;29519:43;;;29578:18;;;29571:43;;;29630:19;;;29623:44;;;29710:19;;;29703:44;;;29763:19;;;29756:44;;;29816:19;;;29809:44;4049:5:83;29869:19:105;;;29862:51;3916:73:83;;-1:-1:-1;;;;;;4000:24:83;;;;;29371:19:105;;4000:55:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4094:4:83;;4065:34;;-1:-1:-1;;;4065:34:83;;-1:-1:-1;;;;;4094:4:83;;;4065:34;;;11237:74:105;4065:28:83;;;;-1:-1:-1;4065:28:83;;-1:-1:-1;11210:18:105;;4065:34:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4163:68:83;;-1:-1:-1;;;4163:68:83;;-1:-1:-1;;;4163:68:83;;;38473:52:105;-1:-1:-1;;;;;;;;;;;4163:15:83;-1:-1:-1;4163:15:83;;-1:-1:-1;38446:18:105;;4163:68:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4269:4:83;;4275;;4241:50;;-1:-1:-1;;;4241:50:83;;-1:-1:-1;;;;;4269:4:83;;;4241:50;;;13104:34:105;4275:4:83;;;13154:18:105;;;13147:43;992:7:93;13206:18:105;;;13199:49;4269:4:83;13264:18:105;;;13257:47;4241:27:83;;;;-1:-1:-1;4241:27:83;;-1:-1:-1;13015:19:105;;4241:50:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4302:42;4358:14;4347:26;;;;;:::i;:::-;-1:-1:-1;;;;;11255:55:105;;;11237:74;;11225:2;11210:18;4347:26:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4483:144:83;;;-1:-1:-1;;;;;11255:55:105;;4483:144:83;;;;11237:74:105;;;;4483:144:83;;;;;;;;;;11210:18:105;;;;4483:144:83;;;;;;;-1:-1:-1;;;;;4483:144:83;-1:-1:-1;;;4483:144:83;;;4454:183;;-1:-1:-1;;;4454:183:83;;11255:55:105;;-1:-1:-1;;;;;;;;;;;;4454:15:83;;;:183;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4647:7:83;;;:76;;-1:-1:-1;;;4647:76:83;;-1:-1:-1;;;;;11255:55:105;;;4647:76:83;;;11237:74:105;4647:7:83;;;;-1:-1:-1;4647:31:83;;-1:-1:-1;11210:18:105;4647:76:83;11083:234:105;2304:142:5;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;47042:2:105;11461:73:93;;;47024:21:105;47081:2;47061:18;;;47054:30;47120:26;47100:18;;;47093:54;47164:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;47384:55:105;;;11821:26:93;;;47366:74:105;47488:8;47476:21;;47456:18;;;47449:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;47339:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;11255:55:105;;11974:14:93;;;11237:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;11210:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;37264:4:105;37252:17;;;37234:36;;37222:2;37207:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;37264:4:105;37252:17;;;37234:36;;37222:2;37207:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;37264:4:105;37252:17;;;37234:36;;37222:2;37207:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;37264:4:105;37252:17;;;37234:36;;37222:2;37207:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;37264:4:105;37252:17;;;37234:36;;37222:2;37207:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;37264:4:105;37252:17;;;37234:36;;37222:2;37207:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;50187:74:105;50277:18;;;50270:30;;;;50336:1;50316:18;;;50309:29;50374:9;50354:18;;;50347:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;50401:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;50643:74:105;;;;50733:18;;;50726:30;;;;50772:18;;;50765:29;-1:-1:-1;;;50810:18:105;;;50803:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;50854:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;51096:74:105;;;;51186:18;;;51179:30;;;;51225:18;;;51218:29;-1:-1:-1;;;51263:18:105;;;51256:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;51307:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;51549:74:105;;;;51639:18;;;51632:30;;;;51678:18;;;51671:29;-1:-1:-1;;;51716:18:105;;;51709:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;51760:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;52002:74:105;;;;52092:18;;;52085:30;;;;52131:18;;;52124:29;-1:-1:-1;;;52169:18:105;;;52162:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;52213:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;52455:74:105;;;;52545:18;;;52538:30;;;;52584:18;;;52577:29;-1:-1:-1;;;52622:18:105;;;52615:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;52666:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;52908:74:105;52998:18;;;52991:30;53057:1;53037:18;;;53030:29;-1:-1:-1;;;53075:18:105;;;53068:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;53118:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;53360:74:105;53450:18;;;53443:30;53509:1;53489:18;;;53482:29;53547:10;53527:18;;;53520:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;53575:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;28502:15:105;;;28484:34;;28554:15;;;;28549:2;28534:18;;28527:43;28601:2;28586:18;;28579:34;28411:2;28396:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;11255:55:105;;;11237:74;;11225:2;11210:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;11237:74:105;;;;3824:7:93;;;;:31;;11210:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;53951:15:105;;;53933:34;;54003:15;;;53998:2;53983:18;;53976:43;54055:15;;;54050:2;54035:18;;54028:43;53860:2;53845:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;53951:15:105;;;53933:34;;54003:15;;;53998:2;53983:18;;53976:43;54055:15;;;54050:2;54035:18;;54028:43;53860:2;53845:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;54706:74:105;54796:18;;;54789:30;;;;54855:1;54835:18;;;54828:29;54893:8;54873:18;;;54866:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;54919:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;55161:74:105;55251:18;;;55244:30;55310:1;55290:18;;;55283:29;55348:8;55328:18;;;55321:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;55374:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;55616:74:105;55706:18;;;55699:30;;;;55765:1;55745:18;;;55738:29;55803:9;55783:18;;;55776:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;55830:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;56072:74:105;56162:18;;;56155:30;56221:2;56201:18;;;56194:30;56260:20;56240:18;;;56233:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;56298:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;56540:74:105;56630:18;;;56623:30;56689:1;56669:18;;;56662:29;56727:10;56707:18;;;56700:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;56755:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;56997:74:105;57087:18;;;57080:30;57146:1;57126:18;;;57119:29;57184:11;57164:18;;;57157:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;57213:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;35034:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;4729:4:93;;;:12;;35034:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;4789:4:93;;;:12;;35034:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;4849:4:93;;;:12;;35034:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;4909:4:93;;;:12;;35034:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;4969:4:93;;;:12;;35034:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5029:3:93;;;:11;;35034:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5088:8:93;;;:16;;35034:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5153:7:93;;;:15;;35034:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5214:4:93;;;:12;;35034:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5272:4:93;;;:12;;35034:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5330:4:93;;;:12;;35034:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5388:4:93;;;:12;;35034:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5446:4:93;;;:12;;35034:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5504:3:93;;;:11;;35034:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;35061:74:105;-1:-1:-1;;35151:18:105;;;35144:34;5561:8:93;;;:16;;35034:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1905:115:1:-;1988:25;;-1:-1:-1;;;1988:25:1;;-1:-1:-1;;;;;;;;;;;1988:14:1;;;:25;;2003:4;;2009:3;;1988:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1689:113;1771:24;;-1:-1:-1;;;1771:24:1;;-1:-1:-1;;;;;;;;;;;1771:13:1;;;:24;;1785:4;;1791:3;;1771:24;;;:::i;3570:134::-;3668:29;;-1:-1:-1;;;3668:29:1;;-1:-1:-1;;;;;;;;;;;3668:11:1;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26935:117:3;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;2136:128::-;2228:29;;-1:-1:-1;;;2228:29:1;;-1:-1:-1;;;;;;;;;;;2228:11:1;;;:29;;2240:4;;2246:5;;2253:3;;2228:29;;;:::i;2915:199:10:-;2998:14;3033:19;3040:1;3043:3;3048;3033:6;:19::i;:::-;3024:28;;3062:45;;;;;;;;;;;;;;;;;;3100:6;3062:21;:45::i;13635:319:67:-;13794:17;13827:12;13842:34;13855:14;13871:4;13842:12;:34::i;:::-;13827:49;;13898;13926:4;13932;13938:8;13898:27;:49::i;:::-;13886:61;13635:319;-1:-1:-1;;;;;;13635:319:67:o;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8711:::-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;1610:948:66:-;1764:16;;1799:21;;;;-1:-1:-1;;;;;1740:43:66;;;;1795:62;;;-1:-1:-1;;;1822:35:66;1795:62;1871:10;:20;;;1867:60;;;419:8;1893:34;1867:60;1941:10;:26;;;1937:73;;;502:8;1969:41;1937:73;2024:10;:25;;;2020:71;;;584:8;2051:40;2020:71;2105:10;:21;;;2101:62;;;661:8;2128:35;2101:62;2177:10;:20;;;2173:60;;;737:8;2199:34;2173:60;2247:10;:21;;;2243:62;;;814:8;2270:35;2243:62;2319:10;:20;;;2315:60;;;890:8;2341:34;2315:60;2389:10;:34;;;2385:79;;;971:8;2425:39;2385:79;2478:10;:33;;;2474:77;;;1051:8;2513:38;1610:948;;;:::o;3826:134:1:-;3924:29;;-1:-1:-1;;;3924:29:1;;-1:-1:-1;;;;;;;;;;;3924:11:1;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;11237:74:105;6180:7:93;;;:21;;11210:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;11237:74:105;6253:7:93;;;:21;;11210:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;11237:74:105;6323:7:93;;;:21;;11210:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;11237:74:105;6393:7:93;;;:21;;11210:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;11237:74:105;6463:7:93;;;:21;;11210:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;11237:74:105;6533:7:93;;;:21;;11210:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;11237:74:105;6602:7:93;;;:21;;11210:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;11237:74:105;6675:7:93;;;:21;;11210:18:105;6675:31:93;11083:234:105;6719:422:93;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;29409:6:105;29442:15;;6788:346:93;;;29424:34:105;1202:5:93;29474:18:105;;;29467:43;;;1262:2:93;29526:18:105;;;29519:43;1318:3:93;29578:18:105;;;29571:43;29630:19;;;29623:44;;;;1446:6:93;29710:19:105;;;29703:44;1508:5:93;29763:19:105;;;29756:44;1581:7:93;29816:19:105;;;29809:44;6788:7:93;29869:19:105;;;29862:51;-1:-1:-1;;;;;6788:7:93;;:17;;29371:19:105;;6788:346:93;29050:869:105;27331:837:3;27501:38;;;-1:-1:-1;;;;;11255:55:105;;;27501:38:3;;;;11237:74:105;;;;27501:38:3;;;;;;;;;;11210:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;1646:1263:10:-;1730:14;1771:3;1764;:10;;1756:85;;;;-1:-1:-1;;;1756:85:10;;60119:2:105;1756:85:10;;;60101:21:105;60158:2;60138:18;;;60131:30;60197:34;60177:18;;;60170:62;60268:32;60248:18;;;60241:60;60318:19;;1756:85:10;59917:426:105;1756:85:10;2075:3;2070:1;:8;;:20;;;;;2087:3;2082:1;:8;;2070:20;2066:34;;;-1:-1:-1;2099:1:10;2092:8;;2066:34;2111:12;2126:9;2132:3;2126;:9;:::i;:::-;:13;;2138:1;2126:13;:::i;:::-;2111:28;;2334:1;2329;:6;;:18;;;;;2346:1;2339:4;:8;2329:18;2325:38;;;2356:7;2362:1;2356:3;:7;:::i;:::-;2349:14;;;;;2325:38;2382:15;2396:1;-1:-1:-1;;2382:15:10;:::i;:::-;2377:1;:20;;:46;;;;-1:-1:-1;2408:15:10;2422:1;-1:-1:-1;;2408:15:10;:::i;:::-;2401:4;:22;2377:46;2373:82;;;2439:15;2453:1;-1:-1:-1;;2439:15:10;:::i;:::-;2432:23;;:3;:23;:::i;2373:82::-;2559:3;2555:1;:7;2551:352;;;2578:12;2593:7;2597:3;2593:1;:7;:::i;:::-;2578:22;-1:-1:-1;2614:11:10;2628;2635:4;2578:22;2628:11;:::i;:::-;2614:25;;2657:3;2664:1;2657:8;2653:24;;2674:3;2667:10;;;;;;;2653:24;2712:1;2700:9;2706:3;2700;:9;:::i;:::-;:13;;;;:::i;:::-;2691:22;;2564:160;;2551:352;;;2738:3;2734:1;:7;2730:173;;;2757:12;2772:7;2778:1;2772:3;:7;:::i;:::-;2757:22;-1:-1:-1;2793:11:10;2807;2814:4;2757:22;2807:11;:::i;:::-;2793:25;;2836:3;2843:1;2836:8;2832:24;;2853:3;2846:10;;;;;;;2832:24;2879:9;2885:3;2879;:9;:::i;:::-;:13;;2891:1;2879:13;:::i;:::-;2870:22;;2743:160;;2730:173;1746:1163;1646:1263;;;;;:::o;10318:162::-;10402:71;10465:2;10469;10418:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10418:54:10;;;;;;;;;;;;;;-1:-1:-1;;;;;10418:54:10;-1:-1:-1;;;10418:54:10;;;10402:15;:71::i;11206:1961:67:-;11294:12;11461:4;11455;11451:15;11445:22;11512:4;11506;11502:15;11496:22;11555:4;11549:11;11609:10;11602:4;11596;11592:15;11588:32;11654:7;11648:14;11792:1;11780:10;11776:18;12054:6;12041:11;12038:23;12035:237;;;12165:10;12159:4;12152:24;12253:4;12247;12240:18;12035:237;12350:28;12337:42;;-1:-1:-1;;12455:15:67;;12448:39;;;;12608:4;12591:22;;12585:4;12581:33;12643:4;12639:22;;;12557:187;12663:62;12557:187;-1:-1:-1;;12524:15:67;;12500:258;12791:4;12787:22;;;12771:39;;12912:4;12895:22;;;-1:-1:-1;;12878:15:67;;12868:50;12998:24;;;13035;;-1:-1:-1;;13079:15:67;;13072:33;-1:-1:-1;;13125:15:67;;;13118:33;;;;-1:-1:-1;12868:50:67;11206:1961::o;14316:739::-;14446:17;14654:4;14648:11;14739:4;14733;14725:19;14785:4;14778:18;;;14826:2;14822:17;;;;14816:4;14809:31;-1:-1:-1;14860:4:67;14853:18;;;;14913:4;14907;14897:21;15018;;14897;14316:739::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8663:25;;;;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;8125:21;;;;8775:19;;;;9064:24;;;;;-1:-1:-1;;9459:1:82;9440;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;10557:15;;7446:3151;7208:3395;;;;;;;:::o;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;9648:133:10:-;9719:55;9766:7;9745:19;9719:55::i;10966:1095:8:-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;35079:55:105;;11664:18:8;;;35061:74:105;35151:18;;;35144:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;35034:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;62140:2:105;11725:175:8;;;62122:21:105;62179:3;62159:18;;;62152:31;62219:34;62199:18;;;62192:62;62290:34;62270:18;;;62263:62;62362:34;62341:19;;;62334:63;-1:-1:-1;;;62413:19:105;;;62406:46;62469:19;;11725:175:8;61938:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;62719:55:105;;11920:24:8;;;62701:74:105;62791:18;;;62784:34;;;62834:18;;;62827:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;62674:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;9787:381:10:-;9885:14;;779:42;10059:2;10046:16;;9861:21;;9885:14;10046:16;779:42;10095:5;10084:68;10075:77;;10012:150;;9787:381;:::o;13395:393:8:-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;11255:55:105;;1990:25:8;;;11237:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;11210:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;35079:55:105;;;;35061:74;;35166:2;35151:18;;35144:34;35049:2;35034:18;;34862:322;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;35079:55:105;;;35061:74;;35151:18;;;35144:34;35034:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;62140:2:105;2268:187:8;;;62122:21:105;62179:3;62159:18;;;62152:31;62219:34;62199:18;;;62192:62;62290:34;62270:18;;;62263:62;62362:34;62341:19;;;62334:63;-1:-1:-1;;;62413:19:105;;;62406:46;62469:19;;2268:187:8;61938:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;63738:55:105;;;63720:74;;-1:-1:-1;;;;;;63830:33:105;;;63810:18;;;63803:61;;;;63880:18;;;63873:34;63938:2;63923:18;;63916:34;63707:3;63692:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;35079:55:105;;;;35061:74;;35166:2;35151:18;;35144:34;35049:2;35034:18;;34862:322;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;35079:55:105;;;35061:74;;35151:18;;;35144:34;35034:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;62719:55:105;;;3215:32:8;;;62701:74:105;62791:18;;;62784:34;62834:18;;;62827:34;;;62674:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;63738:55:105;;;63720:74;;-1:-1:-1;;;;;;63830:33:105;;;63810:18;;;63803:61;;;;63880:18;;;63873:34;63938:2;63923:18;;63916:34;63707:3;63692:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;62719:55:105;;;3941:29:8;;;62701:74:105;62791:18;;;62784:34;62834:18;;;62827:34;;;62674:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;62719:55:105;;;4033:29:8;;;62701:74:105;62791:18;;;62784:34;62834:18;;;62827:34;;;62674:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;64163:2:105;4107:74:8;;;64145:21:105;64182:18;;;64175:30;;;;64241:34;64221:18;;;64214:62;64312:34;64292:18;;;64285:62;64364:19;;4107:74:8;63961:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;64596:2:105;4202:162:8;;;64578:21:105;64635:2;64615:18;;;64608:30;64674:34;64654:18;;;64647:62;64745:17;64725:18;;;64718:45;64780:19;;4202:162:8;64394:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:681;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:218;948:6;945:1;942:13;934:218;;;1013:13;;-1:-1:-1;;;;;1009:62:105;997:75;;1127:15;;;;1092:12;;;;970:1;963:9;934:218;;;-1:-1:-1;1169:3:105;;497:681;-1:-1:-1;;;;;;497:681:105:o;1183:250::-;1268:1;1278:113;1292:6;1289:1;1286:13;1278:113;;;1368:11;;;1362:18;1349:11;;;1342:39;1314:2;1307:10;1278:113;;;-1:-1:-1;;1425:1:105;1407:16;;1400:27;1183:250::o;1438:271::-;1480:3;1518:5;1512:12;1545:6;1540:3;1533:19;1561:76;1630:6;1623:4;1618:3;1614:14;1607:4;1600:5;1596:16;1561:76;:::i;:::-;1691:2;1670:15;-1:-1:-1;;1666:29:105;1657:39;;;;1698:4;1653:50;;1438:271;-1:-1:-1;;1438:271:105:o;1714:1765::-;1947:2;1999:21;;;2069:13;;1972:18;;;2091:22;;;1918:4;;1947:2;2132;;2150:18;;;;2187:1;2230:15;;;2215:31;;2211:40;;2274:15;;;1918:4;;2338:1112;2354:6;2349:3;2346:15;2338:1112;;;-1:-1:-1;;2423:22:105;;;2419:36;2407:49;;2479:13;;2566:9;;-1:-1:-1;;;;;2562:58:105;2547:74;;2660:11;;2654:18;2692:15;;;2685:27;;;2773:19;;2519:15;;;2805:24;;;2986:21;;;;2852:2;2934:17;;;2922:30;;2918:39;;;2876:15;;;;3031:1;3045:296;3061:8;3056:3;3053:17;3045:296;;;3167:2;3163:7;3154:6;3146;3142:19;3138:33;3131:5;3124:48;3199:42;3234:6;3223:8;3217:15;3199:42;:::i;:::-;3270:17;;;;3189:52;-1:-1:-1;3313:14:105;;;;3089:1;3080:11;3045:296;;;-1:-1:-1;;;3428:12:105;;;;3364:6;-1:-1:-1;;3393:15:105;;;;2380:1;2371:11;2338:1112;;;-1:-1:-1;3467:6:105;;1714:1765;-1:-1:-1;;;;;;;;;;1714:1765:105:o;3484:156::-;3550:20;;3610:4;3599:16;;3589:27;;3579:55;;3630:1;3627;3620:12;3645:252;3709:6;3717;3770:2;3758:9;3749:7;3745:23;3741:32;3738:52;;;3786:1;3783;3776:12;3738:52;3809:27;3826:9;3809:27;:::i;:::-;3799:37;;3855:36;3887:2;3876:9;3872:18;3855:36;:::i;:::-;3845:46;;3645:252;;;;;:::o;4084:117::-;4169:6;4162:5;4158:18;4151:5;4148:29;4138:57;;4191:1;4188;4181:12;4206:119;4291:8;4284:5;4280:20;4273:5;4270:31;4260:59;;4315:1;4312;4305:12;4330:118;4416:5;4409:13;4402:21;4395:5;4392:32;4382:60;;4438:1;4435;4428:12;4453:1359;4573:6;4581;4589;4597;4605;4613;4621;4629;4637;4690:3;4678:9;4669:7;4665:23;4661:33;4658:53;;;4707:1;4704;4697:12;4658:53;4746:9;4733:23;4765:30;4789:5;4765:30;:::i;:::-;4814:5;-1:-1:-1;4871:2:105;4856:18;;4843:32;4884;4843;4884;:::i;:::-;4935:7;-1:-1:-1;4994:2:105;4979:18;;4966:32;5007;4966;5007;:::i;:::-;5058:7;-1:-1:-1;5117:2:105;5102:18;;5089:32;5130;5089;5130;:::i;:::-;5181:7;-1:-1:-1;5240:3:105;5225:19;;5212:33;5254:32;5212:33;5254:32;:::i;:::-;5305:7;-1:-1:-1;5364:3:105;5349:19;;5336:33;5378:32;5336:33;5378:32;:::i;:::-;5429:7;-1:-1:-1;5488:3:105;5473:19;;5460:33;5502:32;5460:33;5502:32;:::i;:::-;5553:7;-1:-1:-1;5612:3:105;5597:19;;5584:33;5626:32;5584:33;5626:32;:::i;:::-;5677:7;-1:-1:-1;5736:3:105;5721:19;;5708:33;5750:30;5708:33;5750:30;:::i;:::-;5799:7;5789:17;;;4453:1359;;;;;;;;;;;:::o;5817:245::-;5875:6;5928:2;5916:9;5907:7;5903:23;5899:32;5896:52;;;5944:1;5941;5934:12;5896:52;5983:9;5970:23;6002:30;6026:5;6002:30;:::i;6067:1590::-;6269:4;6298:2;6338;6327:9;6323:18;6368:2;6357:9;6350:21;6391:6;6426;6420:13;6457:6;6449;6442:22;6483:2;6473:12;;6516:2;6505:9;6501:18;6494:25;;6578:2;6568:6;6565:1;6561:14;6550:9;6546:30;6542:39;6616:2;6608:6;6604:15;6637:1;6658;6668:960;6684:6;6679:3;6676:15;6668:960;;;6753:22;;;-1:-1:-1;;6749:36:105;6737:49;;6809:13;;6896:9;;-1:-1:-1;;;;;6892:58:105;6877:74;;6990:11;;6984:18;7022:15;;;7015:27;;;7103:19;;6849:15;;;7135:24;;;7225:21;;;;7270:1;;7193:2;7181:15;;;7284:236;7300:8;7295:3;7292:17;7284:236;;;7381:15;;-1:-1:-1;;;;;;7377:42:105;7363:57;;7489:17;;;;7328:1;7319:11;;;;;7446:14;;;;7284:236;;;-1:-1:-1;7606:12:105;;;;7543:5;-1:-1:-1;;;7571:15:105;;;;6710:1;6701:11;6668:960;;;-1:-1:-1;7645:6:105;;6067:1590;-1:-1:-1;;;;;;;;;6067:1590:105:o;7662:803::-;7824:4;7853:2;7893;7882:9;7878:18;7923:2;7912:9;7905:21;7946:6;7981;7975:13;8012:6;8004;7997:22;8050:2;8039:9;8035:18;8028:25;;8112:2;8102:6;8099:1;8095:14;8084:9;8080:30;8076:39;8062:53;;8150:2;8142:6;8138:15;8171:1;8181:255;8195:6;8192:1;8189:13;8181:255;;;8288:2;8284:7;8272:9;8264:6;8260:22;8256:36;8251:3;8244:49;8316:40;8349:6;8340;8334:13;8316:40;:::i;:::-;8306:50;-1:-1:-1;8414:12:105;;;;8379:15;;;;8217:1;8210:9;8181:255;;;-1:-1:-1;8453:6:105;;7662:803;-1:-1:-1;;;;;;;7662:803:105:o;8470:383::-;8544:6;8552;8560;8613:2;8601:9;8592:7;8588:23;8584:32;8581:52;;;8629:1;8626;8619:12;8581:52;8668:9;8655:23;8687:30;8711:5;8687:30;:::i;:::-;8736:5;-1:-1:-1;8788:2:105;8773:18;;8760:32;;-1:-1:-1;8811:36:105;8843:2;8828:18;;8811:36;:::i;:::-;8801:46;;8470:383;;;;;:::o;9053:154::-;-1:-1:-1;;;;;9132:5:105;9128:54;9121:5;9118:65;9108:93;;9197:1;9194;9187:12;9212:965;9345:6;9353;9361;9369;9377;9385;9393;9401;9454:3;9442:9;9433:7;9429:23;9425:33;9422:53;;;9471:1;9468;9461:12;9422:53;9510:9;9497:23;9529:31;9554:5;9529:31;:::i;:::-;9579:5;-1:-1:-1;9636:2:105;9621:18;;9608:32;9649:33;9608:32;9649:33;:::i;:::-;9701:7;-1:-1:-1;9760:2:105;9745:18;;9732:32;9773:33;9732:32;9773:33;:::i;:::-;9825:7;-1:-1:-1;9884:2:105;9869:18;;9856:32;9897;9856;9897;:::i;:::-;9948:7;-1:-1:-1;10002:3:105;9987:19;;9974:33;;-1:-1:-1;10054:3:105;10039:19;;10026:33;;-1:-1:-1;10078:37:105;10110:3;10095:19;;10078:37;:::i;:::-;10068:47;;10134:37;10166:3;10155:9;10151:19;10134:37;:::i;:::-;10124:47;;9212:965;;;;;;;;;;;:::o;10182:896::-;10306:6;10314;10322;10330;10338;10346;10354;10407:3;10395:9;10386:7;10382:23;10378:33;10375:53;;;10424:1;10421;10414:12;10375:53;10463:9;10450:23;10482:31;10507:5;10482:31;:::i;:::-;10532:5;-1:-1:-1;10589:2:105;10574:18;;10561:32;10602:33;10561:32;10602:33;:::i;:::-;10654:7;-1:-1:-1;10713:2:105;10698:18;;10685:32;10726:33;10685:32;10726:33;:::i;:::-;10778:7;-1:-1:-1;10837:2:105;10822:18;;10809:32;10850;10809;10850;:::i;:::-;10901:7;-1:-1:-1;10955:3:105;10940:19;;10927:33;;-1:-1:-1;10979:37:105;11011:3;10996:19;;10979:37;:::i;:::-;10969:47;;11035:37;11067:3;11056:9;11052:19;11035:37;:::i;:::-;11025:47;;10182:896;;;;;;;;;;:::o;11083:234::-;-1:-1:-1;;;;;11255:55:105;;;;11237:74;;11225:2;11210:18;;11083:234::o;11569:218::-;11716:2;11705:9;11698:21;11679:4;11736:45;11777:2;11766:9;11762:18;11754:6;11736:45;:::i;13315:268::-;13402:6;13455:2;13443:9;13434:7;13430:23;13426:32;13423:52;;;13471:1;13468;13461:12;13423:52;13503:9;13497:16;13522:31;13547:5;13522:31;:::i;14644:127::-;14705:10;14700:3;14696:20;14693:1;14686:31;14736:4;14733:1;14726:15;14760:4;14757:1;14750:15;14776:275;14847:2;14841:9;14912:2;14893:13;;-1:-1:-1;;14889:27:105;14877:40;;14947:18;14932:34;;14968:22;;;14929:62;14926:88;;;14994:18;;:::i;:::-;15030:2;15023:22;14776:275;;-1:-1:-1;14776:275:105:o;15056:882::-;15131:5;15179:4;15167:9;15162:3;15158:19;15154:30;15151:50;;;15197:1;15194;15187:12;15151:50;15230:2;15224:9;15272:4;15264:6;15260:17;15343:6;15331:10;15328:22;15307:18;15295:10;15292:34;15289:62;15286:88;;;15354:18;;:::i;:::-;15394:10;15390:2;15383:22;;15423:6;15414:15;;15459:9;15453:16;15478:32;15502:7;15478:32;:::i;:::-;15519:23;;15587:2;15572:18;;15566:25;15600:33;15566:25;15600:33;:::i;:::-;15661:2;15649:15;;15642:32;15719:2;15704:18;;15698:25;15732:30;15698:25;15732:30;:::i;:::-;15790:2;15778:15;;15771:32;15848:2;15833:18;;15827:25;15861:30;15827:25;15861:30;:::i;:::-;15919:2;15907:15;;;;15900:32;15056:882;;-1:-1:-1;;15056:882:105:o;15943:271::-;16049:6;16102:3;16090:9;16081:7;16077:23;16073:33;16070:53;;;16119:1;16116;16109:12;16070:53;16142:66;16200:7;16189:9;16142:66;:::i;16219:380::-;16298:1;16294:12;;;;16341;;;16362:61;;16416:4;16408:6;16404:17;16394:27;;16362:61;16469:2;16461:6;16458:14;16438:18;16435:38;16432:161;;16515:10;16510:3;16506:20;16503:1;16496:31;16550:4;16547:1;16540:15;16578:4;16575:1;16568:15;16432:161;;16219:380;;;:::o;18677:127::-;18738:10;18733:3;18729:20;18726:1;18719:31;18769:4;18766:1;18759:15;18793:4;18790:1;18783:15;18809:127;18870:10;18865:3;18861:20;18858:1;18851:31;18901:4;18898:1;18891:15;18925:4;18922:1;18915:15;18941:127;19002:10;18997:3;18993:20;18990:1;18983:31;19033:4;19030:1;19023:15;19057:4;19054:1;19047:15;19073:125;19138:9;;;19159:10;;;19156:36;;;19172:18;;:::i;19203:435::-;19256:3;19294:5;19288:12;19321:6;19316:3;19309:19;19347:4;19376:2;19371:3;19367:12;19360:19;;19413:2;19406:5;19402:14;19434:1;19444:169;19458:6;19455:1;19452:13;19444:169;;;19519:13;;19507:26;;19553:12;;;;19588:15;;;;19480:1;19473:9;19444:169;;;-1:-1:-1;19629:3:105;;19203:435;-1:-1:-1;;;;;19203:435:105:o;19643:492::-;19704:3;19742:5;19736:12;19769:6;19764:3;19757:19;19795:4;19824:2;19819:3;19815:12;19808:19;;19861:2;19854:5;19850:14;19882:1;19892:218;19906:6;19903:1;19900:13;19892:218;;;19971:13;;-1:-1:-1;;;;;19967:62:105;19955:75;;20050:12;;;;20085:15;;;;19928:1;19921:9;19892:218;;20140:1109;20187:3;20231:5;20225:12;20258:4;20253:3;20246:17;20284:58;20336:4;20331:3;20327:14;20313:12;20284:58;:::i;:::-;20361:4;20402:14;;;20396:21;20447:14;;;20433:12;;;20426:36;20511:21;;20541:20;;;20615:23;;;;-1:-1:-1;20361:4:105;;-1:-1:-1;;20579:13:105;;;;-1:-1:-1;20687:379:105;20703:6;20698:3;20695:15;20687:379;;;20772:6;20766:13;20809:1;20805:2;20802:9;20792:160;;-1:-1:-1;;;20843:31:105;;20901:4;20898:1;20891:15;20933:4;20850:1;20923:15;20792:160;20965:17;;21041:15;;;;21004:14;;;;20729:1;20720:11;20687:379;;;20691:3;;21114:4;21107:5;21103:16;21097:23;21075:45;;21163:3;21156:5;21152:15;21145:4;21140:3;21136:14;21129:39;21184:59;21237:5;21221:14;21184:59;:::i;:::-;21177:66;20140:1109;-1:-1:-1;;;;;;;20140:1109:105:o;21254:622::-;21576:6;21565:9;21558:25;21619:6;21614:2;21603:9;21599:18;21592:34;21662:3;21657:2;21646:9;21642:18;21635:31;21539:4;21683:51;21729:3;21718:9;21714:19;21706:6;21683:51;:::i;:::-;-1:-1:-1;;;;;21770:55:105;;;;21765:2;21750:18;;21743:83;-1:-1:-1;21857:3:105;21842:19;21835:35;21675:59;21254:622;-1:-1:-1;;;21254:622:105:o;21881:184::-;21951:6;22004:2;21992:9;21983:7;21979:23;21975:32;21972:52;;;22020:1;22017;22010:12;21972:52;-1:-1:-1;22043:16:105;;21881:184;-1:-1:-1;21881:184:105:o;22889:681::-;22982:6;22990;22998;23006;23059:3;23047:9;23038:7;23034:23;23030:33;23027:53;;;23076:1;23073;23066:12;23027:53;23108:9;23102:16;23127:30;23151:5;23127:30;:::i;:::-;23226:2;23211:18;;23205:25;23176:5;;-1:-1:-1;23239:32:105;23205:25;23239:32;:::i;:::-;23342:2;23327:18;;23321:25;23290:7;;-1:-1:-1;23355:32:105;23321:25;23355:32;:::i;:::-;23458:2;23443:18;;23437:25;23406:7;;-1:-1:-1;23506:12:105;23493:26;;23481:39;;23471:67;;23534:1;23531;23524:12;23471:67;22889:681;;;;-1:-1:-1;22889:681:105;;-1:-1:-1;;22889:681:105:o;23575:245::-;23646:6;23684:10;;;23696;;;23680:27;23727:20;;;;23646:6;23766:24;;;23756:58;;23794:18;;:::i;:::-;23756:58;;23575:245;;;;:::o;23825:247::-;23896:8;23936:10;;;23948;;;23932:27;23979:20;;;;23896:8;24018:24;;;24008:58;;24046:18;;:::i;25841:1045::-;25958:6;25966;25974;25982;25990;25998;26006;26059:3;26047:9;26038:7;26034:23;26030:33;26027:53;;;26076:1;26073;26066:12;26027:53;26108:9;26102:16;26127:30;26151:5;26127:30;:::i;:::-;26226:2;26211:18;;26205:25;26176:5;;-1:-1:-1;26239:32:105;26205:25;26239:32;:::i;:::-;26342:2;26327:18;;26321:25;26290:7;;-1:-1:-1;26355:32:105;26321:25;26355:32;:::i;:::-;26458:2;26443:18;;26437:25;26406:7;;-1:-1:-1;26471:32:105;26437:25;26471:32;:::i;:::-;26574:3;26559:19;;26553:26;26522:7;;-1:-1:-1;26588:32:105;26553:26;26588:32;:::i;:::-;26691:3;26676:19;;26670:26;26639:7;;-1:-1:-1;26705:32:105;26670:26;26705:32;:::i;:::-;26808:3;26793:19;;26787:26;26756:7;;-1:-1:-1;26822:32:105;26787:26;26822:32;:::i;:::-;26873:7;26863:17;;;25841:1045;;;;;;;;;;:::o;28877:168::-;28944:6;28970:10;;;28982;;;28966:27;;29005:11;;;29002:37;;;29019:18;;:::i;29924:171::-;29992:6;30031:10;;;30019;;;30015:27;;30054:12;;;30051:38;;;30069:18;;:::i;30100:183::-;30160:4;30193:18;30185:6;30182:30;30179:56;;;30215:18;;:::i;:::-;-1:-1:-1;30260:1:105;30256:14;30272:4;30252:25;;30100:183::o;30288:659::-;30353:5;30406:3;30399:4;30391:6;30387:17;30383:27;30373:55;;30424:1;30421;30414:12;30373:55;30453:6;30447:13;30479:4;30503:60;30519:43;30559:2;30519:43;:::i;:::-;30503:60;:::i;:::-;30597:15;;;30683:1;30679:10;;;;30667:23;;30663:32;;;30628:12;;;;30707:15;;;30704:35;;;30735:1;30732;30725:12;30704:35;30771:2;30763:6;30759:15;30783:135;30799:6;30794:3;30791:15;30783:135;;;30865:10;;30853:23;;30896:12;;;;30816;;30783:135;;;-1:-1:-1;30936:5:105;30288:659;-1:-1:-1;;;;;;30288:659:105:o;30952:363::-;31047:6;31100:2;31088:9;31079:7;31075:23;31071:32;31068:52;;;31116:1;31113;31106:12;31068:52;31149:9;31143:16;31182:18;31174:6;31171:30;31168:50;;;31214:1;31211;31204:12;31168:50;31237:72;31301:7;31292:6;31281:9;31277:22;31237:72;:::i;31707:677::-;31837:6;31845;31853;31861;31869;31877;31885;31893;31946:3;31934:9;31925:7;31921:23;31917:33;31914:53;;;31963:1;31960;31953:12;31914:53;31992:9;31986:16;31976:26;;32042:2;32031:9;32027:18;32021:25;32011:35;;32086:2;32075:9;32071:18;32065:25;32055:35;;32130:2;32119:9;32115:18;32109:25;32099:35;;32174:3;32163:9;32159:19;32153:26;32143:36;;32219:3;32208:9;32204:19;32198:26;32188:36;;32264:3;32253:9;32249:19;32243:26;32233:36;;32312:3;32301:9;32297:19;32291:26;32326:28;32348:5;32326:28;:::i;:::-;32373:5;32363:15;;;31707:677;;;;;;;;;;;:::o;32389:148::-;32477:4;32456:12;;;32470;;;32452:31;;32495:13;;32492:39;;;32511:18;;:::i;32542:151::-;32632:4;32625:12;;;32611;;;32607:31;;32650:14;;32647:40;;;32667:18;;:::i;32948:245::-;33015:6;33068:2;33056:9;33047:7;33043:23;33039:32;33036:52;;;33084:1;33081;33074:12;33036:52;33116:9;33110:16;33135:28;33157:5;33135:28;:::i;33198:128::-;33265:9;;;33286:11;;;33283:37;;;33300:18;;:::i;35559:969::-;35690:6;35721:2;35764;35752:9;35743:7;35739:23;35735:32;35732:52;;;35780:1;35777;35770:12;35732:52;35813:9;35807:16;35846:18;35838:6;35835:30;35832:50;;;35878:1;35875;35868:12;35832:50;35901:22;;35954:4;35946:13;;35942:27;-1:-1:-1;35932:55:105;;35983:1;35980;35973:12;35932:55;36012:2;36006:9;36035:60;36051:43;36091:2;36051:43;:::i;36035:60::-;36129:15;;;36211:1;36207:10;;;;36199:19;;36195:28;;;36160:12;;;;36235:19;;;36232:39;;;36267:1;36264;36257:12;36232:39;36291:11;;;;36311:187;36327:6;36322:3;36319:15;36311:187;;;36395:60;36447:7;36442:3;36395:60;:::i;:::-;36390:3;36383:73;36485:2;36480:3;36476:12;36469:19;;36353:4;36348:3;36344:14;36337:21;;36311:187;;39070:127;39131:10;39126:3;39122:20;39119:1;39112:31;39162:4;39159:1;39152:15;39186:4;39183:1;39176:15;39202:120;39242:1;39268;39258:35;;39273:18;;:::i;:::-;-1:-1:-1;39307:9:105;;39202:120::o;39327:135::-;39366:3;39387:17;;;39384:43;;39407:18;;:::i;:::-;-1:-1:-1;39454:1:105;39443:13;;39327:135::o;39769:854::-;39967:4;40015:2;40004:9;40000:18;-1:-1:-1;;;;;40118:2:105;40110:6;40106:15;40095:9;40088:34;40141:2;40179;40174;40163:9;40159:18;40152:30;40202:6;40237;40231:13;40268:6;40260;40253:22;40306:3;40295:9;40291:19;40284:26;;40345:2;40337:6;40333:15;40319:29;;40366:1;40376:169;40390:6;40387:1;40384:13;40376:169;;;40451:13;;40439:26;;40520:15;;;;40485:12;;;;40412:1;40405:9;40376:169;;;40380:3;;40562;40554:11;;;;40613:2;40605:6;40601:15;40596:2;40585:9;40581:18;40574:43;;;39769:854;;;;;;:::o;40628:485::-;40741:6;40749;40757;40810:2;40798:9;40789:7;40785:23;40781:32;40778:52;;;40826:1;40823;40816:12;40778:52;40855:9;40849:16;40839:26;;40905:2;40894:9;40890:18;40884:25;40874:35;;40953:2;40942:9;40938:18;40932:25;40980:18;40972:6;40969:30;40966:50;;;41012:1;41009;41002:12;40966:50;41035:72;41099:7;41090:6;41079:9;41075:22;41035:72;:::i;:::-;41025:82;;;40628:485;;;;;:::o;44528:633::-;44786:4;-1:-1:-1;;;;;44896:2:105;44888:6;44884:15;44873:9;44866:34;44948:2;44940:6;44936:15;44931:2;44920:9;44916:18;44909:43;;45000:6;44992;44988:19;44983:2;44972:9;44968:18;44961:47;45044:6;45039:2;45028:9;45024:18;45017:34;45088:3;45082;45071:9;45067:19;45060:32;45109:46;45150:3;45139:9;45135:19;45127:6;45109:46;:::i;47509:688::-;47785:4;-1:-1:-1;;;;;47895:2:105;47887:6;47883:15;47872:9;47865:34;47947:2;47939:6;47935:15;47930:2;47919:9;47915:18;47908:43;;47987:3;47982:2;47971:9;47967:18;47960:31;48014:57;48066:3;48055:9;48051:19;48043:6;48014:57;:::i;:::-;48119:9;48111:6;48107:22;48102:2;48091:9;48087:18;48080:50;48147:44;48184:6;48176;48147:44;:::i;49234:338::-;-1:-1:-1;;;;;49413:6:105;49409:55;49398:9;49391:74;49501:2;49496;49485:9;49481:18;49474:30;49372:4;49521:45;49562:2;49551:9;49547:18;49539:6;49521:45;:::i;57243:301::-;57428:6;57421:14;57414:22;57403:9;57396:41;57473:2;57468;57457:9;57453:18;57446:30;57377:4;57493:45;57534:2;57523:9;57519:18;57511:6;57493:45;:::i;57549:441::-;57717:4;-1:-1:-1;;;;;57827:2:105;57819:6;57815:15;57804:9;57797:34;57879:2;57871:6;57867:15;57862:2;57851:9;57847:18;57840:43;;57919:2;57914;57903:9;57899:18;57892:30;57939:45;57980:2;57969:9;57965:18;57957:6;57939:45;:::i;57995:362::-;58200:6;58189:9;58182:25;58243:6;58238:2;58227:9;58223:18;58216:34;58286:2;58281;58270:9;58266:18;58259:30;58163:4;58306:45;58347:2;58336:9;58332:18;58324:6;58306:45;:::i;58362:382::-;58569:6;58562:14;58555:22;58544:9;58537:41;58628:6;58621:14;58614:22;58609:2;58598:9;58594:18;58587:50;58673:2;58668;58657:9;58653:18;58646:30;58518:4;58693:45;58734:2;58723:9;58719:18;58711:6;58693:45;:::i;59625:287::-;59754:3;59792:6;59786:13;59808:66;59867:6;59862:3;59855:4;59847:6;59843:17;59808:66;:::i;:::-;59890:16;;;;;59625:287;-1:-1:-1;;59625:287:105:o;60348:112::-;60380:1;60406;60396:35;;60411:18;;:::i;:::-;-1:-1:-1;60445:9:105;;60348:112::o;60465:291::-;60642:2;60631:9;60624:21;60605:4;60662:45;60703:2;60692:9;60688:18;60680:6;60662:45;:::i;:::-;60654:53;;60743:6;60738:2;60727:9;60723:18;60716:34;60465:291;;;;;:::o;60761:384::-;-1:-1:-1;;;;;;60946:33:105;;60934:46;;61003:13;;60916:3;;61025:74;61003:13;61088:1;61079:11;;61072:4;61060:17;;61025:74;:::i;:::-;61119:16;;;;61137:1;61115:24;;60761:384;-1:-1:-1;;;60761:384:105:o;61150:610::-;61396:13;;61339:3;;61370;;61449:4;61476:15;;;61339:3;61519:175;61533:6;61530:1;61527:13;61519:175;;;61596:13;;61582:28;;61632:14;;;;61669:15;;;;61555:1;61548:9;61519:175;;;-1:-1:-1;;61703:21:105;;;-1:-1:-1;61740:14:105;;;;;-1:-1:-1;;;61150:610:105:o;61765:168::-;61838:9;;;61869;;61886:15;;;61880:22;;61866:37;61856:71;;61907:18;;:::i;62872:614::-;63001:6;63009;63062:2;63050:9;63041:7;63037:23;63033:32;63030:52;;;63078:1;63075;63068:12;63030:52;63111:9;63105:16;63140:18;63181:2;63173:6;63170:14;63167:34;;;63197:1;63194;63187:12;63167:34;63220:72;63284:7;63275:6;63264:9;63260:22;63220:72;:::i;:::-;63210:82;;63338:2;63327:9;63323:18;63317:25;63301:41;;63367:2;63357:8;63354:16;63351:36;;;63383:1;63380;63373:12;63351:36;;63406:74;63472:7;63461:8;63450:9;63446:24;63406:74;:::i;:::-;63396:84;;;62872:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":6630,"length":32},{"start":6663,"length":32},{"start":6738,"length":32},{"start":10769,"length":32},{"start":11525,"length":32},{"start":11986,"length":32},{"start":12019,"length":32},{"start":12436,"length":32},{"start":12469,"length":32},{"start":32283,"length":32},{"start":32316,"length":32},{"start":45164,"length":32},{"start":45197,"length":32},{"start":49054,"length":32}],"91790":[{"start":1331,"length":32},{"start":1450,"length":32},{"start":2919,"length":32},{"start":3038,"length":32},{"start":3513,"length":32},{"start":4865,"length":32},{"start":4986,"length":32},{"start":9520,"length":32},{"start":9641,"length":32},{"start":14117,"length":32},{"start":14219,"length":32},{"start":15766,"length":32},{"start":15885,"length":32},{"start":19331,"length":32},{"start":19441,"length":32},{"start":19670,"length":32},{"start":20466,"length":32},{"start":20687,"length":32},{"start":22291,"length":32},{"start":22410,"length":32},{"start":27600,"length":32},{"start":27719,"length":32},{"start":29178,"length":32},{"start":29389,"length":32},{"start":29547,"length":32},{"start":29776,"length":32},{"start":29934,"length":32},{"start":31810,"length":32},{"start":31929,"length":32},{"start":35312,"length":32},{"start":35431,"length":32},{"start":38027,"length":32},{"start":38148,"length":32}],"91798":[{"start":3977,"length":32},{"start":19784,"length":32},{"start":19903,"length":32},{"start":20124,"length":32},{"start":30352,"length":32},{"start":30685,"length":32},{"start":30894,"length":32},{"start":31163,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_OpenPresets(uint16)":"623e4ed7","testFuzz_SetPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)":"52eabb54","test_AccessControl()":"90d5014a","test_AddQuoteAsset()":"8152762c","test_Constructor()":"3c322dd3","test_CreateLBPair()":"62f3d378","test_CreateLBPairFactoryUnlocked()":"18b7ff78","test_ForceDecay()":"b5963c0f","test_GetAllLBPairs()":"c7885e39","test_RemovePreset()":"45b2695d","test_RemoveQuoteAsset()":"4bac5c20","test_SetFeeRecipient()":"60f523e2","test_SetFeesParametersOnPair()":"36885aae","test_SetFlashLoanFee()":"924525b5","test_SetLBPairIgnoredForRouting()":"d0f12e3e","test_SetLBPairImplementation()":"2d521af6","test_revert_CreateLBPair()":"91cc26f1","test_revert_SetLBPairIgnoredForRouting()":"11ca7248","test_revert_SetLBPairImplementation()":"e036a30d","test_setLBHooksParametersOnPair()":"d0dffe29"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"PresetOpenStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"_quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"_quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"StaticFeeParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"testFuzz_OpenPresets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"testFuzz_SetPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_AccessControl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_AddQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Constructor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CreateLBPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CreateLBPairFactoryUnlocked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_ForceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetAllLBPairs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_RemovePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_RemoveQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetLBPairIgnoredForRouting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SetLBPairImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_CreateLBPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_SetLBPairIgnoredForRouting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_SetLBPairImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setLBHooksParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Test scenarios: 1. Constructor 2. Set LBPair implementation 3. Create LBPair 4. Create revision 5. Ignore LBPair for routing 6. Set preset 7. Remove preset 8. Set fee parameters on pair 9. Set fee recipient 10. Set flash loan fee 11. Set factory locked state 12. Add quote asset to whitelist 13. Remove quote asset from whitelist\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBFactory.t.sol\":\"LiquidityBinFactoryTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBBaseHooks.sol\":{\"keccak256\":\"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1\",\"dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBFactory.t.sol\":{\"keccak256\":\"0x96da79a6e907326420598b393004eb1a12930b4045e885d6dc3a139a61691159\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d86f6b860fa3583156a3ba07146946e31f1d6cae8f67e3909c88c78f843a733b\",\"dweb:/ipfs/QmVzazve1xGuNowcbEwiaviJkpWF5x8zd6V8nYZXFqgTXf\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/MockHooks.sol\":{\"keccak256\":\"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0\",\"dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"oldRecipient","type":"address","indexed":false},{"internalType":"address","name":"newRecipient","type":"address","indexed":false}],"type":"event","name":"FeeRecipientSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"oldFlashLoanFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"newFlashLoanFee","type":"uint256","indexed":false}],"type":"event","name":"FlashLoanFeeSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenY","type":"address","indexed":true},{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"contract ILBPair","name":"LBPair","type":"address","indexed":false},{"internalType":"uint256","name":"pid","type":"uint256","indexed":false}],"type":"event","name":"LBPairCreated","anonymous":false},{"inputs":[{"internalType":"contract ILBPair","name":"LBPair","type":"address","indexed":true},{"internalType":"bool","name":"ignored","type":"bool","indexed":false}],"type":"event","name":"LBPairIgnoredStateChanged","anonymous":false},{"inputs":[{"internalType":"contract ILBPair","name":"oldLBPairImplementation","type":"address","indexed":false},{"internalType":"contract ILBPair","name":"LBPairImplementation","type":"address","indexed":false}],"type":"event","name":"LBPairImplementationSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"bool","name":"isOpen","type":"bool","indexed":true}],"type":"event","name":"PresetOpenStateChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true}],"type":"event","name":"PresetRemoved","anonymous":false},{"inputs":[{"internalType":"uint256","name":"binStep","type":"uint256","indexed":true},{"internalType":"uint256","name":"baseFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"filterPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"decayPeriod","type":"uint256","indexed":false},{"internalType":"uint256","name":"reductionFactor","type":"uint256","indexed":false},{"internalType":"uint256","name":"variableFeeControl","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolShare","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxVolatilityAccumulator","type":"uint256","indexed":false}],"type":"event","name":"PresetSet","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"_quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetAdded","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"_quoteAsset","type":"address","indexed":true}],"type":"event","name":"QuoteAssetRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint16","name":"baseFactor","type":"uint16","indexed":false},{"internalType":"uint16","name":"filterPeriod","type":"uint16","indexed":false},{"internalType":"uint16","name":"decayPeriod","type":"uint16","indexed":false},{"internalType":"uint16","name":"reductionFactor","type":"uint16","indexed":false},{"internalType":"uint24","name":"variableFeeControl","type":"uint24","indexed":false},{"internalType":"uint16","name":"protocolShare","type":"uint16","indexed":false},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24","indexed":false}],"type":"event","name":"StaticFeeParametersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_OpenPresets"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"},{"internalType":"bool","name":"isOpen","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SetPreset"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_AccessControl"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_AddQuoteAsset"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_Constructor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CreateLBPair"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CreateLBPairFactoryUnlocked"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_ForceDecay"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_GetAllLBPairs"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_RemovePreset"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_RemoveQuoteAsset"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetFeeRecipient"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetFeesParametersOnPair"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetFlashLoanFee"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetLBPairIgnoredForRouting"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SetLBPairImplementation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_CreateLBPair"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_SetLBPairIgnoredForRouting"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_SetLBPairImplementation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setLBHooksParametersOnPair"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBFactory.t.sol":"LiquidityBinFactoryTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBBaseHooks.sol":{"keccak256":"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778","urls":["bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1","dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBFactory.t.sol":{"keccak256":"0x96da79a6e907326420598b393004eb1a12930b4045e885d6dc3a139a61691159","urls":["bzz-raw://d86f6b860fa3583156a3ba07146946e31f1d6cae8f67e3909c88c78f843a733b","dweb:/ipfs/QmVzazve1xGuNowcbEwiaviJkpWF5x8zd6V8nYZXFqgTXf"],"license":"UNLICENSED"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/MockHooks.sol":{"keccak256":"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3","urls":["bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0","dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file diff --git a/abi/LBPair.sol/LBPair.json b/abi/LBPair.sol/LBPair.json deleted file mode 100644 index c613a04a..00000000 --- a/abi/LBPair.sol/LBPair.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"factory_","type":"address","internalType":"contract ILBFactory"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveForAll","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"batchBalances","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"batchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"amounts","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[{"name":"collectedProtocolFees","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract ILBFlashLoanCallback"},{"name":"amounts","type":"bytes32","internalType":"bytes32"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceDecay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getActiveId","inputs":[],"outputs":[{"name":"activeId","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getBin","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"binReserveX","type":"uint128","internalType":"uint128"},{"name":"binReserveY","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getBinStep","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"function","name":"getFactory","inputs":[],"outputs":[{"name":"factory","type":"address","internalType":"contract ILBFactory"}],"stateMutability":"view"},{"type":"function","name":"getIdFromPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getLBHooksParameters","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getNextNonEmptyBin","inputs":[{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"nextId","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getOracleParameters","inputs":[],"outputs":[{"name":"sampleLifetime","type":"uint8","internalType":"uint8"},{"name":"size","type":"uint16","internalType":"uint16"},{"name":"activeSize","type":"uint16","internalType":"uint16"},{"name":"lastUpdated","type":"uint40","internalType":"uint40"},{"name":"firstTimestamp","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"getOracleSampleAt","inputs":[{"name":"lookupTimestamp","type":"uint40","internalType":"uint40"}],"outputs":[{"name":"cumulativeId","type":"uint64","internalType":"uint64"},{"name":"cumulativeVolatility","type":"uint64","internalType":"uint64"},{"name":"cumulativeBinCrossed","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPriceFromId","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getProtocolFees","inputs":[],"outputs":[{"name":"protocolFeeX","type":"uint128","internalType":"uint128"},{"name":"protocolFeeY","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"reserveX","type":"uint128","internalType":"uint128"},{"name":"reserveY","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getStaticFeeParameters","inputs":[],"outputs":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getSwapIn","inputs":[{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"amountOutLeft","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getSwapOut","inputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInLeft","type":"uint128","internalType":"uint128"},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getTokenX","inputs":[],"outputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"}],"stateMutability":"pure"},{"type":"function","name":"getTokenY","inputs":[],"outputs":[{"name":"tokenY","type":"address","internalType":"contract IERC20"}],"stateMutability":"pure"},{"type":"function","name":"getVariableFeeParameters","inputs":[],"outputs":[{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"},{"name":"idReference","type":"uint24","internalType":"uint24"},{"name":"timeOfLastUpdate","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"increaseOracleLength","inputs":[{"name":"newLength","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"activeId","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"refundTo","type":"address","internalType":"address"}],"outputs":[{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"},{"name":"amountsLeft","type":"bytes32","internalType":"bytes32"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"setHooksParameters","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaticFeeParameters","inputs":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"amountsOut","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CollectedProtocolFees","inputs":[{"name":"feeRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CompositionFees","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"totalFees","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"DepositedToBins","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"event","name":"FlashLoan","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract ILBFlashLoanCallback"},{"name":"activeId","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"amounts","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"totalFees","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ForcedDecay","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"idReference","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"volatilityReference","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"HooksParametersSet","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"hooksParameters","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OracleLengthIncreased","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"oracleLength","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"StaticFeeParametersSet","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"baseFactor","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"filterPeriod","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"decayPeriod","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"reductionFactor","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"protocolShare","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"amountsIn","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"amountsOut","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"volatilityAccumulator","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"totalFees","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"protocolFees","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"WithdrawnFromBins","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"error","name":"BinHelper__CompositionFactorFlawed","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"BinHelper__LiquidityOverflow","inputs":[]},{"type":"error","name":"BinHelper__MaxLiquidityPerBinExceeded","inputs":[]},{"type":"error","name":"FeeHelper__FeeTooLarge","inputs":[]},{"type":"error","name":"Hooks__CallFailed","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"LBPair__AddressZero","inputs":[]},{"type":"error","name":"LBPair__EmptyMarketConfigs","inputs":[]},{"type":"error","name":"LBPair__FlashLoanCallbackFailed","inputs":[]},{"type":"error","name":"LBPair__FlashLoanInsufficientAmount","inputs":[]},{"type":"error","name":"LBPair__InsufficientAmountIn","inputs":[]},{"type":"error","name":"LBPair__InsufficientAmountOut","inputs":[]},{"type":"error","name":"LBPair__InvalidHooks","inputs":[]},{"type":"error","name":"LBPair__InvalidInput","inputs":[]},{"type":"error","name":"LBPair__InvalidStaticFeeParameters","inputs":[]},{"type":"error","name":"LBPair__MaxTotalFeeExceeded","inputs":[]},{"type":"error","name":"LBPair__OnlyFactory","inputs":[]},{"type":"error","name":"LBPair__OnlyProtocolFeeRecipient","inputs":[]},{"type":"error","name":"LBPair__OutOfLiquidity","inputs":[]},{"type":"error","name":"LBPair__TokenNotSupported","inputs":[]},{"type":"error","name":"LBPair__ZeroAmount","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"LBPair__ZeroAmountsOut","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"LBPair__ZeroBorrowAmount","inputs":[]},{"type":"error","name":"LBPair__ZeroShares","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"LBToken__AddressThisOrZero","inputs":[]},{"type":"error","name":"LBToken__BurnExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBToken__InvalidLength","inputs":[]},{"type":"error","name":"LBToken__SelfApproval","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__SpenderNotApproved","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__TransferExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LiquidityConfigurations__InvalidConfig","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OracleHelper__InvalidOracleId","inputs":[]},{"type":"error","name":"OracleHelper__LookUpTimestampTooOld","inputs":[]},{"type":"error","name":"OracleHelper__NewLengthTooSmall","inputs":[]},{"type":"error","name":"PackedUint128Math__AddOverflow","inputs":[]},{"type":"error","name":"PackedUint128Math__MultiplierTooLarge","inputs":[]},{"type":"error","name":"PackedUint128Math__SubUnderflow","inputs":[]},{"type":"error","name":"PairParametersHelper__InvalidParameter","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeCast__Exceeds128Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds40Bits","inputs":[]},{"type":"error","name":"TokenHelper__TransferFailed","inputs":[]},{"type":"error","name":"Uint128x128Math__LogUnderflow","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]},{"type":"error","name":"Uint256x256Math__MulShiftOverflow","inputs":[]}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c63430008140033","sourceMap":"1504:40796:44:-:0;;;2907:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2950:19:44;;;;3004:4;2979:30;;3020:22;:20;:22::i;:::-;2907:142;1504:40796;;7711:422:22;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:22;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:22;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:22;-1:-1:-1;;;;;8035:33:22;;;;;8087:29;;473:50:127;;;8087:29:22;;461:2:127;446:18;8087:29:22;;;;;;;7981:146;7760:373;7711:422::o;14:310:127:-;104:6;157:2;145:9;136:7;132:23;128:32;125:52;;;173:1;170;163:12;125:52;199:16;;-1:-1:-1;;;;;244:31:127;;234:42;;224:70;;290:1;287;280:12;224:70;313:5;14:310;-1:-1:-1;;;14:310:127:o;329:200::-;1504:40796:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c63430008140033","sourceMap":"1504:40796:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:141:47;;;;;;:::i;:::-;;:::i;:::-;;;639:25:127;;;627:2;612:18;2821:141:47;;;;;;;;4792:101:44;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;1712:4;1708:47;4792:101:44;;;-1:-1:-1;;;;;855:55:127;;;837:74;;825:2;810:18;4792:101:44;675:242:127;1826:115:47;1905:29;;;;;;;;;;;;;;;;;1826:115;;;;;;;:::i;5862:168:44:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1823:15:127;;;1805:34;;1875:15;;;;1870:2;1855:18;;1848:43;1725:18;5862:168:44;1578:319:127;6786:165:44;;;;;;:::i;:::-;6926:9;;6845:19;6926:9;;;:5;:9;;;;;;-1:-1:-1;;;;;2662:16:78;;;2701:6;2697:14;;;;;6786:165:44;5510:96;;;:::i;:::-;;;2431:6:127;2419:19;;;2401:38;;2389:2;2374:18;5510:96:44;2257:188:127;34144:527:44;;;;;;:::i;:::-;;:::i;:::-;;32868:509;;;;;;:::i;:::-;;:::i;26123:1456::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;3763:668::-;;;;;;:::i;:::-;;:::i;13750:136::-;;;;;;:::i;:::-;;:::i;3205:471:47:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19634:3063:44:-;;;;;;:::i;:::-;;:::i;10925:897::-;;;:::i;:::-;;;;9127:4:127;9115:17;;;9097:36;;9152:6;9194:15;;;9189:2;9174:18;;9167:43;9246:15;;;;9226:18;;;9219:43;;;;9281:12;9329:15;;;9324:2;9309:18;;9302:43;9382:15;9376:3;9361:19;;9354:44;9084:3;9069:19;10925:897:44;8850:554:127;2376:48:44;;;;;32019:579;;;;;;:::i;:::-;;:::i;9466:113::-;9556:16;;9466:113;;8492:821;;;:::i;:::-;;;;10576:6:127;10609:15;;;10591:34;;10661:15;;;10656:2;10641:18;;10634:43;10713:15;;;10693:18;;;10686:43;;;;10765:15;;;10760:2;10745:18;;10738:43;10800:8;10845:15;;;10839:3;10824:19;;10817:44;10898:15;;10892:3;10877:19;;10870:44;10951:15;;;;10945:3;10930:19;;10923:44;10553:3;10538:19;8492:821:44;10265:708:127;4553:106:44;4644:8;4553:106;;12459:969;;;;;;:::i;:::-;;:::i;:::-;;;;11718:18:127;11763:15;;;11745:34;;11815:15;;;11810:2;11795:18;;11788:43;11867:15;;11847:18;;;11840:43;;;;11696:2;11681:18;12459:969:44;11512:377:127;9987:507:44;;;:::i;:::-;;;;12127:8:127;12162:15;;;12144:34;;12214:15;;;12209:2;12194:18;;12187:43;12266:15;;;;12246:18;;;12239:43;12330:12;12318:25;;;12313:2;12298:18;;12291:53;12104:3;12089:19;9987:507:44;11894:456:127;2090:100:47;2171:12;;;;;;;;;;;;-1:-1:-1;;;2171:12:47;;;;2090:100;;30075:720:44;;;:::i;7358:160::-;;;;;;:::i;:::-;;:::i;:::-;;;12786:8:127;12774:21;;;12756:40;;12744:2;12729:18;7358:160:44;12612:190:127;14970:1648:44;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;13454:15:127;;;13436:34;;13506:15;;;13501:2;13486:18;;13479:43;13558:15;;13538:18;;;13531:43;;;;13371:2;13356:18;14970:1648:44;13181:399:127;2452:122:47;;;;;;:::i;:::-;2523:7;2549:18;;;:14;:18;;;;;;;2452:122;30936:476:44;;;;;;:::i;:::-;;:::i;28082:1840::-;;;;;;:::i;:::-;;:::i;33515:302::-;;;:::i;7722:173::-;;;:::i;5026:101::-;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;35081:2:44;1731:22:64;1718:36;1712:4;1708:47;5026:101:44;4792;6437:125;;;:::i;4403:141:47:-;;;;;;:::i;:::-;;:::i;17193:1422:44:-;;;;;;:::i;:::-;;:::i;3983:159:47:-;;;;;;:::i;:::-;;:::i;:::-;;;15103:14:127;;15096:22;15078:41;;15066:2;15051:18;3983:159:47;14938:187:127;23266:1633:44;;;;;;:::i;:::-;;:::i;14238:136::-;;;;;;:::i;:::-;;:::i;2821:141:47:-;-1:-1:-1;;;;;2933:18:47;;2907:7;2933:18;;;;;;;;;;;:22;;;;;;;;;2821:141;;;;;:::o;4877:9:44:-;4870:16;;4792:101;:::o;5862:168::-;5917:16;5935;5986:37;:28;6000:13;;5986:9;;:13;;:28;;;;:::i;:::-;-1:-1:-1;;;;;2662:16:78;;;2701:6;2697:14;;;;;2549:178;5986:37:44;5963:60;;;;-1:-1:-1;5862:168:44;-1:-1:-1;5862:168:44:o;5510:96::-;5564:6;5589:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;34144:527;34314:21;:19;:21::i;:::-;34372:16;;34399:82;34372:16;34446:10;34458:4;34464:2;34468:3;;34473:7;;34399:29;:82::i;:::-;34492:49;34518:4;34524:2;34528:3;;34533:7;;34492:25;:49::i;:::-;34552:20;2058:1:72;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;34552:20:44;34583:81;34612:15;34629:10;34641:4;34647:2;34651:3;;34656:7;;34583:28;:81::i;:::-;34304:367;34144:527;;;;;;:::o;32868:509::-;3512:21:72;:19;:21::i;:::-;2119:14:44::1;:12;:14::i;:::-;33041:16:::2;:34:::0;;;33160:47:::2;::::0;;639:25:127;;;33160:47:44;;33041:34;;33179:10:::2;::::0;33160:47:::2;::::0;;;;627:2:127;33160:47:44;;::::2;-1:-1:-1::0;;;;;33222:28:44;::::2;::::0;;::::2;::::0;:57:::2;;;33275:4;-1:-1:-1::0;;;;;33254:25:44::2;:5;-1:-1:-1::0;;;;;33254:15:44::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;33254:25:44::2;;;33222:57;33218:92;;;33288:22;;-1:-1:-1::0;;;33288:22:44::2;;;;;;;;;;;33218:92;33321:49;33338:15;33355:14;;33321:16;:49::i;:::-;33031:346;3554:20:72::0;2058:1;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;3554:20;32868:509:44;;;:::o;26123:1456::-;26288:23;26313:19;26334:32;26267:2;1468:30:47;1490:7;1468:21;:30::i;:::-;26382:21:44::1;:19;:21::i;:::-;26445:1;26418:28:::0;;;26414:69:::1;;26455:28;;-1:-1:-1::0;;;26455:28:44::1;;;;;;;;;;;26414:69;26520:16;::::0;26574:209:::1;::::0;;::::1;::::0;::::1;::::0;;;26494:23:::1;::::0;26574:209;26618:16;26604:38:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;26604:38:44::1;-1:-1:-1::0;26574:209:44;;::::1;;26679:16:::0;26665:38:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;26665:38:44::1;-1:-1:-1::0;26574:209:44;;::::1;;26748:16:::0;26734:38:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;26734:38:44::1;-1:-1:-1::0;26574:209:44;;26813:9:::1;::::0;26547:236;;-1:-1:-1;26851:39:44::1;26813:9:::0;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;;1712:4;1708:47;;;;35081:2:44;1731:22:64;1718:36;1708:47;;26851:17:44::1;:39::i;:::-;26833:57;;26901:84;26918:15;26935:10;26947:2;26951:16;;26969:15;26901:16;:84::i;:::-;27010:56;27020:16;;27038:15;27055:2;27059:6;27010:9;:56::i;:::-;26996:70:::0;-1:-1:-1;27089:46:44::1;27102:32;:15:::0;26996:70;27102:19:::1;:32::i;:::-;27089:8:::0;;:12:::1;:46::i;:::-;27077:9;:58:::0;27164:22:::1;::::0;;::::1;::::0;27244:10;;27202:70;;27164:22;;-1:-1:-1;;;;;;27202:70:44;::::1;::::0;27236:1:::1;::::0;27216:10:::1;::::0;27202:70:::1;::::0;::::1;::::0;27244:10;27164:22;;27202:70:::1;:::i;:::-;;;;;;;;27319:10:::0;;27331:14:::1;::::0;::::1;::::0;27287:59:::1;::::0;-1:-1:-1;;;;;27287:59:44;::::1;::::0;27303:10:::1;::::0;27287:59:::1;::::0;::::1;::::0;27319:10;27331:14;27287:59:::1;:::i;:::-;;;;;;;;27361:15:::0;;27357:73:::1;;27378:52;:11:::0;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;;1712:4;1708:47;;;;35081:2:44;1731:22:64;1718:36;1708:47;;27421:8:44;27378:20:::1;:52::i;:::-;27441:20;2058:1:72::0;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;27441:20:44::1;27472:100;27488:15:::0;27505:10:::1;27517:2:::0;27521:16;;27539:32:::1;:15:::0;27559:11;27539:19:::1;:32::i;:::-;27472:15;:100::i;:::-;26372:1207;;;26123:1456:::0;;;;;;;;;:::o;3763:668::-;2119:14;:12;:14::i;:::-;8870:21:22;4302:15;;;;::::1;;;4301:16;::::0;4348:14:::1;;4158:30;4726:16:::0;;:34;::::1;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1::0;4818:4:22::1;4810:25;:30:::0;4790:50:::1;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1::0;;;4908:23:22::1;;;;;;;;;;;4851:91;4951:18:::0;;-1:-1:-1;;4951:18:22::1;4968:1;4951:18;::::0;;4979:67;::::1;;;5013:22:::0;;-1:-1:-1;;5013:22:22::1;::::0;::::1;::::0;;4979:67:::1;4088:24:44::2;:22;:24::i;:::-;4123:301;4160:53;:33;4184:8;4160:11;;:23;;:33;;;;:::i;:::-;:51;:53::i;:::-;4227:10;4251:12;4277:11;4302:15;4331:18;4363:13;4390:24;4123:23;:301::i;:::-;5070:14:22::1;5066:101;;;5100:23:::0;;-1:-1:-1;;5100:23:22::1;::::0;;5142:14:::1;::::0;-1:-1:-1;17275:50:127;;5142:14:22::1;::::0;17263:2:127;17248:18;5142:14:22::1;;;;;;;5066:101;4092:1081;;;;;3763:668:44::0;;;;;;;;:::o;13750:136::-;13817:13;13850:29;13868:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;13868:10;13850:17;;;;;:29::i;3205:471:47:-;3409:30;3363:8;3380:3;1672:30;3363:8;3380:3;1672:12;:30::i;:::-;3485:8;3471:30:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3471:30:47::1;;3455:46;;3541:9;3536:124;3552:19:::0;;::::1;3536:124;;;3615:30;3625:8;;3634:1;3625:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3638:3;;3642:1;3638:6;;;;;;;:::i;:::-;;;;;;;3615:9;:30::i;:::-;3596:13;3610:1;3596:16;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:49;3573:3:::1;;3536:124;;;;3205:471:::0;;;;;;;;:::o;19634:3063:44:-;19702:18;19732:21;:19;:21::i;:::-;19790:16;;19836:9;;19878:13;;19764:23;19924:8;:72;;19967:29;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;35081:2:44;1731:22:64;1718:36;1712:4;1708:47;19967:8:44;;:18;:29::i;:::-;19924:72;;;19935:29;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;1712:4;1708:47;19935:8:44;;:18;:29::i;:::-;19902:94;-1:-1:-1;20025:1:44;20010:16;;;20006:59;;20035:30;;-1:-1:-1;;;20035:30:44;;;;;;;;;;;20006:59;20093:8;20142:73;20159:15;20176:10;20188:2;20093:8;20203:11;20142:16;:73::i;:::-;20237:25;:8;20250:11;20237:12;:25::i;:::-;20294:11;;20226:36;;-1:-1:-1;20273:18:44;20332:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;20332:10;20315:27;;20353:15;20371:24;:10;:22;:24::i;:::-;20353:42;-1:-1:-1;20419:44:44;:10;20447:15;20419:27;:44::i;:::-;20406:57;;20474:1682;20523:15;;;20501:19;20523:15;;;:5;:15;;;;;;20557:31;20523:15;20577:10;;20557:19;:31::i;:::-;20552:1292;;20621:48;:10;20660:8;20621:38;:48::i;:::-;20608:61;-1:-1:-1;20689:25:44;;;20782:77;:11;20608:61;20817:7;20826:9;20837:8;20847:11;20782:22;:77::i;:::-;20688:171;;-1:-1:-1;20688:171:44;-1:-1:-1;20688:171:44;-1:-1:-1;20882:21:44;;20878:952;;20941:34;:11;20957:17;20941:15;:34::i;:::-;20927:48;-1:-1:-1;21010:31:44;:10;21025:15;21010:14;:31::i;:::-;20997:44;;21064:13;21080:72;21122:29;:10;:27;:29::i;:::-;21080:9;;:72;;:41;:72::i;:::-;21064:88;-1:-1:-1;21179:9:44;;21175:176;;21231:23;:12;21248:5;21231:16;:23::i;:::-;21216:38;-1:-1:-1;21300:28:44;:17;21322:5;21300:21;:28::i;:::-;21280:48;;21175:176;21391:55;21430:15;21391:34;:11;21407:17;21391:15;:34::i;:::-;:38;;:55::i;:::-;21373:15;;;;;;;:5;:15;;;;;:73;-1:-1:-1;;;;;21474:337:44;;21504:10;21474:337;21379:8;21602:17;21645:15;21686:37;:10;:35;:37::i;:::-;21474:337;;;18013:8:127;18048:15;;;18030:34;;18095:2;18080:18;;18073:34;;;;18123:18;;18116:34;;;;18186:15;;;18181:2;18166:18;;18159:43;18233:3;18218:19;;18211:35;;;18277:3;18262:19;;18255:35;;;17990:3;17975:19;21474:337:44;;;;;;;20905:925;20878:952;20590:1254;;;20552:1292;21877:1;21862:16;;;21858:288;;21898:5;;;21858:288;21942:13;21958:40;21978:9;21989:8;21958:19;:40::i;:::-;21942:56;-1:-1:-1;22021:11:44;;;;;:41;;-1:-1:-1;22046:16:44;22036:26;;;;22021:41;22017:78;;;22071:24;;-1:-1:-1;;;22071:24:44;;;;;;;;;;;22017:78;22125:6;-1:-1:-1;20487:1669:44;20474:1682;;;22184:1;22170:15;;;22166:59;;22194:31;;-1:-1:-1;;;22194:31:44;;;;;;;;;;;22166:59;22248:24;:8;22261:10;22248:12;:24::i;:::-;22236:9;:36;22282:13;:28;;;22334:36;:7;22349:10;22361:8;22334:14;:36::i;:::-;22321:49;-1:-1:-1;22394:32:44;22321:49;22417:8;22394:22;:32::i;:::-;22380:11;:46;22437:141;;;;22466:35;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;35081:2:44;1731:22:64;1718:36;1712:4;1708:47;22466:10:44;;22498:2;22466:20;:35::i;:::-;22437:141;;;22532:35;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;1712:4;1708:47;22532:10:44;;22564:2;22532:20;:35::i;:::-;22588:20;2058:1:72;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;22588:20:44;22619:71;22635:15;22652:10;22664:2;22668:9;22679:10;22619:15;:71::i;:::-;19722:2975;;;;;;;;19634:3063;;;;:::o;10925:897::-;11152:11;;1111::69;;11020:20:44;;;;;;;;;11260:24;11152:11;11260:22;:24::i;:::-;11242:42;-1:-1:-1;11298:12:44;;;;11294:522;;11326:14;11377:40;:7;11408:8;11377:30;:40::i;:::-;11354:63;-1:-1:-1;11354:63:44;-1:-1:-1;11439:24:44;11354:63;11439:22;:24::i;:::-;11432:31;;11491:28;:6;:26;:28::i;:::-;11477:42;;11538:11;:16;;11553:1;11538:16;11534:36;;11569:1;11556:14;;11534:36;11589:14;;;;11585:221;;11664:46;11698:10;11687:21;;:8;:21;;;;;;;:::i;:::-;11664:7;;11682:1;11687:21;;11682:27;11664:17;:46::i;:::-;11655:55;;11763:28;:6;:26;:28::i;:::-;11746:45;;11585:221;11312:504;11294:522;11121:701;;10925:897;;;;;:::o;32019:579::-;3512:21:72;:19;:21::i;:::-;2119:14:44::1;:12;:14::i;:::-;32332:259:::2;32369:11;;32394:10;32418:12;32444:11;32469:15;32498:18;32530:13;32557:24;32332:23;:259::i;:::-;3554:20:72::0;2058:1;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;8492:821:44;8603:17;8634:19;8667:18;8699:22;8735:25;8774:20;8808:31;8864:18;8885:11;;8864:32;;8920:26;:10;:24;:26::i;:::-;8907:39;;8971:28;:10;:26;:28::i;:::-;8956:43;;9023:27;:10;:25;:27::i;:::-;9009:41;;9078:31;:10;:29;:31::i;:::-;9060:49;;9140:34;:10;:32;:34::i;:::-;9119:55;;9200:29;:10;:27;:29::i;:::-;9184:45;;9266:40;:10;:38;:40::i;:::-;9239:67;;8854:459;8492:821;;;;;;;:::o;12459:969::-;12574:19;12595:27;12624;12667:18;12688:11;;12667:32;;12709:15;12727:24;:10;:22;:24::i;:::-;12709:42;-1:-1:-1;12766:13:44;;;;;:50;;;12801:15;12783;:33;;;12766:50;12762:72;;;12826:1;12829;12832;12818:16;;;;;;;;;;12762:72;12845:23;12969:46;:7;12989:8;12999:15;12969:19;:46::i;:::-;12878:137;;-1:-1:-1;12878:137:44;-1:-1:-1;12878:137:44;-1:-1:-1;12878:137:44;-1:-1:-1;13030:34:44;;;;;;;;13026:396;;;13093:80;13131:24;:10;:22;:24::i;:::-;13093:10;;:80;;;:37;:80::i;:::-;13080:93;-1:-1:-1;13188:16:44;13207:34;13225:16;13207:15;:34;:::i;:::-;13188:53;;13307:9;13272:44;;13279:24;:10;:22;:24::i;:::-;13272:32;;:44;;;;:::i;:::-;13256:60;;;;:::i;:::-;;;13402:9;13354:57;;13361:37;:10;:35;:37::i;:::-;13354:45;;:57;;;;:::i;:::-;13330:81;;;;:::i;:::-;;;13066:356;13026:396;12657:771;;;12459:969;;;;;;:::o;9987:507::-;10087:28;10117:26;10145:18;10165:23;10204:18;10225:11;;10204:32;;10271:37;:10;:35;:37::i;:::-;10247:61;;10340:35;:10;:33;:35::i;:::-;10318:57;;10399:27;:10;:25;:27::i;:::-;10385:41;;10455:32;:10;:30;:32::i;:::-;10436:51;;10194:300;9987:507;;;;:::o;30075:720::-;30211:29;3512:21:72;:19;:21::i;:::-;2221:8:44::1;-1:-1:-1::0;;;;;2221:24:44::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2207:40:44::1;:10;-1:-1:-1::0;;;;;2207:40:44::1;;2203:87;;2256:34;;-1:-1:-1::0;;;2256:34:44::1;;;;;;;;;;;2203:87;30279:13:::2;::::0;-1:-1:-1;;;;;2662:16:78;;2701:6;2697:14;;;30256:20:44::2;30374:53;30412:5:::0;:13:::2;;30424:1;30412:13;;;30420:1;30412:13;30404:22;;30386:1;30382;-1:-1:-1::0;;;;;30382:5:44::2;;:13;;30394:1;30382:13;;;30390:1;30382:13;30374:22;;::::0;1061:6:78;1057:15;-1:-1:-1;;;;;1038:17:78;;;;1035:38;;923:166;30374:53:44::2;30359:68:::0;-1:-1:-1;30462:22:44::2;:12:::0;30359:68;30462:16:::2;:22::i;:::-;30438:46:::0;-1:-1:-1;30499:26:44;;30495:294:::2;;30541:13;:20:::0;;;30587:9:::2;::::0;:36:::2;::::0;30601:21;30587:13:::2;:36::i;:::-;30575:9;:48:::0;30643:56:::2;::::0;639:25:127;;;30665:10:44::2;::::0;30643:56:::2;::::0;627:2:127;612:18;30643:56:44::2;;;;;;;30714:64;:21:::0;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;;1712:4;1708:47;;;;35081:2:44;1731:22:64;1718:36;1708:47;;30767:10:44::2;30714:30;:64::i;:::-;30246:549;;;;3554:20:72::0;2058:1;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;3554:20;30075:720:44;:::o;7358:160::-;7444:13;7478:33;7498:8;7508:2;7478:19;:33::i;:::-;7469:42;7358:160;-1:-1:-1;;;7358:160:44:o;14970:1648::-;15212:11;;15087:16;;15171:9;;15087:16;;;15250:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;15250:10;15233:27;;15271:9;15283:24;:10;:22;:24::i;:::-;15271:36;-1:-1:-1;15331:44:44;:10;15359:15;15331:27;:44::i;:::-;15318:57;;15386:1226;15435:9;;;15413:19;15435:9;;;:5;:9;;;;;;:27;;15452:9;;15435:16;:27::i;:::-;15413:49;-1:-1:-1;;;;;;15480:15:44;;;15476:861;;15515:13;15531:26;:17;;;15549:7;15531:17;:26::i;:::-;15515:42;;15576:22;15615:13;-1:-1:-1;;;;;15601:27:44;:11;-1:-1:-1;;;;;15601:27:44;;:57;;15647:11;15601:57;;;15631:13;15601:57;15576:82;-1:-1:-1;15690:42:44;:10;15729:2;15690:38;:42::i;:::-;15677:55;;15751:26;15809:8;:202;;15941:70;-1:-1:-1;;;;;15941:23:44;;15981:5;258:3:65;15941:39:44;:70::i;:::-;15809:202;;;15844:70;-1:-1:-1;;;;;15844:23:44;;258:3:65;15908:5:44;15844:39;:70::i;:::-;15751:278;-1:-1:-1;16048:16:44;16067:31;:10;16090:7;16067:22;:31::i;:::-;16048:50;-1:-1:-1;16116:17:44;16136:41;-1:-1:-1;;;;;16136:31:44;;16048:50;16136:31;:41::i;:::-;16116:61;-1:-1:-1;16208:30:44;16116:61;16208:18;:30;:::i;:::-;16196:42;;;;:::i;:::-;;-1:-1:-1;16256:31:44;16273:14;16256:31;;:::i;:::-;;-1:-1:-1;16306:16:44;16313:9;16306:16;;:::i;:::-;;;15497:840;;;;;15476:861;16355:13;-1:-1:-1;;;;;16355:18:44;16372:1;16355:18;16351:251;;16393:5;;;16351:251;16437:13;16453:33;16473:8;16483:2;16453:19;:33::i;:::-;16437:49;-1:-1:-1;16509:11:44;;;;;:41;;-1:-1:-1;16534:16:44;16524:26;;;;16509:41;16505:52;;;16552:5;;;;16505:52;16581:6;-1:-1:-1;15399:1213:44;15386:1226;;;15145:1473;;;14970:1648;;;;;:::o;30936:476::-;3512:21:72;:19;:21::i;:::-;31046:11:44::1;::::0;31025:18:::1;31086:24;31046:11:::0;31086:22:::1;:24::i;:::-;31068:42;;31180:8;:13;;31192:1;31180:13:::0;31176:116:::1;;-1:-1:-1::0;31220:1:44::1;31249:32;:10:::0;31220:1;31249:22:::1;:32::i;:::-;31235:11;:46:::0;31176:116:::1;31302:43;:7;31325:8:::0;31335:9;31302:22:::1;:43::i;:::-;31361:44;::::0;2431:6:127;2419:19;;2401:38;;31383:10:44::1;::::0;31361:44:::1;::::0;2389:2:127;2374:18;31361:44:44::1;;;;;;;31015:397;;3554:20:72::0;2058:1;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;3554:20;30936:476:44;:::o;28082:1840::-;28271:24;28236:4;28242:10;1207:32:47;1225:4;1231:7;1207:17;:32::i;:::-;1202:88;;1248:42;;-1:-1:-1;;;1248:42:47;;-1:-1:-1;;;;;20110:15:127;;;1248:42:47;;;20092:34:127;20162:15;;20142:18;;;20135:43;20004:18;;1248:42:47;;;;;;;;1202:88;28311:21:44::1;:19;:21::i;:::-;28347:15:::0;;;:53:::1;;-1:-1:-1::0;28366:34:44;;::::1;;28347:53;28343:88;;;28409:22;;-1:-1:-1::0;;;28409:22:44::1;;;;;;;;;;;28343:88;28468:16;::::0;28495:75:::1;28468:16:::0;28529:10:::1;28541:4:::0;28547:2;28551:3;;28556:13;;28495:16:::1;:75::i;:::-;28597:4:::0;28666:3;28652:25:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;28652:25:44::1;;28642:35;;28688:18;28722:9:::0;28717:836:::1;28733:14:::0;;::::1;28717:836;;;28764:9;28776:15;:3;;28780:1;28776:6;;;;;;;:::i;:::-;;;;;;;:13;:15::i;:::-;28764:27;;28805:20;28828:13;;28842:1;28828:16;;;;;;;:::i;:::-;;;;;;;28805:39;;28863:12;28879:1;28863:17:::0;28859:52:::1;;28889:22;::::0;-1:-1:-1;;;28889:22:44;;12786:8:127;12774:21;;28889:22:44::1;::::0;::::1;12756:40:127::0;12729:18;;28889:22:44::1;12612:190:127::0;28859:52:44::1;28948:9;::::0;::::1;28926:19;28948:9:::0;;;:5:::1;:9;::::0;;;;;;;;2549:14:47;:18;;;;;;;28948:9:44;;29018:30:::1;::::0;29024:5;;29035:12;29018:5:::1;:30::i;:::-;29063:25;29091:51;:11:::0;29121:12;29135:6;29091:29:::1;:51::i;:::-;29063:79:::0;-1:-1:-1;29182:1:44::1;29161:22:::0;;;29157:61:::1;;29192:26;::::0;-1:-1:-1;;;29192:26:44;;12786:8:127;12774:21;;29192:26:44::1;::::0;::::1;12756:40:127::0;12729:18;;29192:26:44::1;12612:190:127::0;29157:61:44::1;29247:34;:11:::0;29263:17;29247:15:::1;:34::i;:::-;29233:48;;29310:12;29300:6;:22:::0;29296:44:::1;;29324:16;:5;29337:2:::0;29324:12:::1;:16::i;:::-;;29296:44;29355:9;::::0;::::1;;::::0;;;:5:::1;:9;::::0;;;;:23;;;29392:10;;29405:17;;29392:7;;29400:1;;29392:10;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:30;29449:33:::1;:10:::0;29464:17;29449:14:::1;:33::i;:::-;29436:46;;29525:3;;;;;28750:803;;;;;28717:836;;;-1:-1:-1::0;29575:9:44::1;::::0;:25:::1;::::0;29589:10;29575:13:::1;:25::i;:::-;29563:9;:37:::0;29616:64:::1;::::0;29657:1:::1;::::0;-1:-1:-1;;;;;29616:64:44;::::1;::::0;29630:10:::1;::::0;29616:64:::1;::::0;::::1;::::0;29661:3;;;;29666:13;;;;29616:64:::1;:::i;:::-;;;;;;;;29725:2;-1:-1:-1::0;;;;;29695:47:44::1;29713:10;-1:-1:-1::0;;;;;29695:47:44::1;;29729:3;;29734:7;29695:47;;;;;;;;:::i;:::-;;;;;;;;29753:45;:10:::0;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;;1712:4;1708:47;;;;35081:2:44;1731:22:64;1718:36;1708:47;;29795:2:44;29753:19:::1;:45::i;:::-;29809:20;2058:1:72::0;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;29809:20:44::1;29840:75;29856:15;29873:10;29885:5;29892:2;29896:3;;29901:13;;29840:15;:75::i;:::-;28301:1621;;;28082:1840:::0;;;;;;;;;;:::o;33515:302::-;3512:21:72;:19;:21::i;:::-;2119:14:44::1;:12;:14::i;:::-;33611:11:::2;::::0;33647:58:::2;:30;33611:11:::0;33647:28:::2;:30::i;:::-;:56;:58::i;:::-;33633:11;:72:::0;33733:10:::2;33721:89;33745:27;:10:::0;:25:::2;:27::i;:::-;33774:35;:10;:33;:35::i;:::-;33721:89;::::0;;21753:8:127;21788:15;;;21770:34;;21840:15;;;;21835:2;21820:18;;21813:43;21716:18;33721:89:44::2;;;;;;;33580:237;3554:20:72::0;2058:1;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;3554:20;33515:302:44:o;7722:173::-;7866:13;;7781:20;;;;-1:-1:-1;;;;;2662:16:78;;;2701:6;2697:14;7866:22:44;2549:178:78;6437:125:44;6492:15;6530:25;:11;;:23;:25::i;4403:141:47:-;4492:45;4507:10;4519:7;4528:8;4492:14;:45::i;:::-;4403:141;;:::o;17193:1422:44:-;17310:20;;;;17402:25;-1:-1:-1;;;;;17402:15:44;;17418:8;17402:15;:25::i;:::-;17459:11;;17378:49;;-1:-1:-1;17438:18:44;17497:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;17497:10;17480:27;;17518:9;17530:24;:10;:22;:24::i;:::-;17518:36;-1:-1:-1;17578:44:44;:10;17606:15;17578:27;:44::i;:::-;17565:57;;17633:920;17682:9;;;17660:19;17682:9;;;:5;:9;;;;;;17710:30;17682:9;17730;;17710:19;:30::i;:::-;17705:573;;17773:42;:10;17812:2;17773:38;:42::i;:::-;17760:55;-1:-1:-1;17835:25:44;;;17928:72;:11;17760:55;17963:7;17972:8;17982:2;17986:13;17928:22;:72::i;:::-;17834:166;;-1:-1:-1;17834:166:44;-1:-1:-1;17834:166:44;-1:-1:-1;18023:21:44;;18019:245;;18084:36;:13;18102:17;18084;:36::i;:::-;18068:52;-1:-1:-1;18156:33:44;:15;18179:9;;18156:22;:33::i;:::-;18143:46;;;;:::i;:::-;;-1:-1:-1;18219:26:44;:9;18236:8;18219:16;:26::i;:::-;18212:33;;;;:::i;:::-;;;18019:245;17742:536;;;17705:573;18313:1;18296:18;;;18292:251;;18334:5;;;18292:251;18378:13;18394:33;18414:8;18424:2;18394:19;:33::i;:::-;18378:49;-1:-1:-1;18450:11:44;;;;;:41;;-1:-1:-1;18475:16:44;18465:26;;;;18450:41;18446:52;;;18493:5;;;;18446:52;18522:6;-1:-1:-1;17646:907:44;17633:920;;;18578:30;:13;18599:8;18578:20;:30::i;:::-;18563:45;;17368:1247;;;;17193:1422;;;;;:::o;3983:159:47:-;4079:4;4102:33;4120:5;4127:7;4102:17;:33::i;23266:1633:44:-;23382:21;:19;:21::i;:::-;23429:1;23418:12;;;23414:51;;23439:26;;-1:-1:-1;;;23439:26:44;;;;;;;;;;;23414:51;23502:16;;23554:9;;23476:23;23593:26;23611:7;23593:17;:26::i;:::-;23573:46;;23630:78;23652:15;23669:10;23689:8;23700:7;23630:21;:78::i;:::-;23719:57;:7;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;;1712:4;1708:47;;;;35081:2:44;1731:22:64;1718:36;1708:47;;23766:8:44;23719:16;:57::i;:::-;23788:12;;-1:-1:-1;;;;;23824:22:44;;-1:-1:-1;;;23967:10:44;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;1712:4;1708:47;4824:14;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;35081:2:44;1731:22:64;1718:36;1712:4;1708:47;24049:7:44;24074:9;24101:4;;23860:259;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23860:259:44;;;;;;;;;;;;;;-1:-1:-1;;;;;23860:259:44;;;;;;;;;;;;23824:305;;;;23860:259;23824:305;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23787:342;;;;24145:7;24144:8;:30;;;;24156:5;:12;24172:2;24156:18;;24144:30;:92;;;;933:31:65;24189:5:44;24178:28;;;;;;;;;;;;:::i;:::-;:58;;24144:92;24140:163;;;24259:33;;-1:-1:-1;;;24259:33:44;;;;;;;;;;;24140:163;24313:21;24337:41;24313:21;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;4777:68;;1718:36;;1712:4;1708:47;;;;35081:2:44;1731:22:64;1718:36;1708:47;;24337:19:44;:41::i;:::-;24313:65;-1:-1:-1;24393:47:44;24410:29;:14;24429:9;24410:18;:29::i;:::-;24393:13;;:16;:47::i;:::-;24389:97;;;24449:37;;-1:-1:-1;;;24449:37:44;;;;;;;;;;;24389:97;24497:20;24520:33;:13;24538:14;24520:17;:33::i;:::-;24564:9;:25;;;24615:13;;24497:56;;-1:-1:-1;24615:31:44;;24497:56;24615:17;:31::i;:::-;24599:13;:47;24694:11;;-1:-1:-1;;;;;24662:95:44;;;24672:10;;24662:95;;24694:25;;:23;:25::i;:::-;24662:95;;;23606:8:127;23594:21;;;23576:40;;23647:2;23632:18;;23625:34;;;23675:18;;23668:34;;;23733:2;23718:18;;23711:34;;;23563:3;23548:19;24662:95:44;;;;;;;24768:20;2058:1:72;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284;24768:20:44;24799:93;24820:15;24837:10;24857:8;24868:9;24879:12;24799:20;:93::i;:::-;23372:1527;;;;;;;23266:1633;;;;:::o;14238:136::-;14309:9;14335:32;14356:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;14356:10;14335:5;;:20;:32::i;5540:263:78:-;5647:9;;;5680:5;;;;:50;;-1:-1:-1;;;;;;5689:41:78;;;;;;;5680:50;5676:121;;;5753:33;;-1:-1:-1;;;5753:33:78;;;;;;;;;;;3587:385:72;-1:-1:-1;;;;;;;;;;;3788:9:72;;-1:-1:-1;;3788:20:72;3784:88;;3831:30;;-1:-1:-1;;;3831:30:72;;;;;;;;;;;3784:88;2100:1;3946:19;;3587:385::o;12105:478:67:-;971:8;12335:38;;12334:45;12330:247;;12395:171;12422:15;12478:41;;;12521:6;12529:4;12535:2;12539:3;;12544:7;;12455:97;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12455:97:67;;;;;;;;;;;;;;-1:-1:-1;;;;;12455:97:67;;;;;;;;;;;;12395:9;:171::i;:::-;12105:478;;;;;;;;:::o;4852:256:47:-;5027:4;5033:10;1207:32;1225:4;1231:7;1207:17;:32::i;:::-;1202:88;;1248:42;;-1:-1:-1;;;1248:42:47;;-1:-1:-1;;;;;20110:15:127;;;1248:42:47;;;20092:34:127;20162:15;;20142:18;;;20135:43;20004:18;;1248:42:47;19857:327:127;1202:88:47;5059:42:::1;5078:4;5084:2;5088:3;;5093:7;;5059:18;:42::i;3978:284:72:-:0;2058:1;-1:-1:-1;;;;;;;;;;;4232:23:72;3978:284::o;12992:475:67:-;1051:8;13221:37;;13220:44;13216:245;;13280:170;13307:15;13363:40;;;13405:6;13413:4;13419:2;13423:3;;13428:7;;13340:96;;;;;;;;;;;;;;:::i;35747:119:44:-;35798:10;-1:-1:-1;;;;;35820:8:44;35798:31;;35794:65;;35838:21;;-1:-1:-1;;;35838:21:44;;;;;;;;;;;5138:295:67;5237:20;;5233:194;;5273:143;5300:15;5340:28;;;5370:15;5387:14;;5317:85;;;;;;;;;;:::i;8841:169:47:-;-1:-1:-1;;;;;8917:21:47;;;;:49;;-1:-1:-1;;;;;;8942:24:47;;8961:4;8942:24;8917:49;8913:90;;;8975:28;;-1:-1:-1;;;8975:28:47;;;;;;;;;;;11503:192:63;11592:15;11629:59;11679:8;11629:45;11655:18;11666:6;11655:10;:18::i;:::-;11629;11640:6;11629:10;:18::i;:::-;-1:-1:-1;;;;;11629:25:63;;1061:6:78;1057:15;-1:-1:-1;;;;;1038:17:78;;;;1035:38;;923:166;11629:59:63;11619:69;11503:192;-1:-1:-1;;;;11503:192:63:o;8715:451:67:-;661:8;8920:34;;8919:41;8915:245;;8976:173;9003:15;9059:28;;;9089:6;9097:2;9101:16;;9119:15;9036:99;;;;;;;;;;;;:::i;8976:173::-;8715:451;;;;;;:::o;39069:984:44:-;39243:19;39274:14;39291:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;39291:10;39333:11;;39274:27;;-1:-1:-1;39312:18:44;39372:24;39333:11;39372:22;:24::i;:::-;39354:42;;39421:15;39407:29;;39452:9;39447:600;39463:27;;;39447:600;;;39508:25;39535:9;39548:52;39584:15;39548:16;;39565:1;39548:19;;;;;;;:::i;:::-;;;;;;;:35;;:52;;;;:::i;:::-;39507:93;;;;39615:14;39631:17;39650:22;39692:64;39703:7;39712:8;39722:2;39726:17;39745:10;39692;:64::i;:::-;39614:142;;-1:-1:-1;39614:142:44;-1:-1:-1;39614:142:44;-1:-1:-1;39785:26:44;:11;39614:142;39785:15;:26::i;:::-;39771:40;;39842:2;39826:18;;:6;:10;;;39837:1;39826:13;;;;;;;;:::i;:::-;;;;;;:18;;;;;39878:14;39858:6;:14;;;39873:1;39858:17;;;;;;;;:::i;:::-;;;;;;:34;;;;;39934:6;39906;:22;;;39929:1;39906:25;;;;;;;;:::i;:::-;;;;;;:34;;;;;39955:21;39961:2;39965;39955:21;;39969:6;39955:5;:21::i;:::-;40019:3;;;;;39493:554;;;;;39447:600;;;;39264:789;;;39069:984;;;;;;;:::o;4336:262:78:-;4443:9;;;4476:5;;;;:50;;-1:-1:-1;;;;;;4485:41:78;;;;;;;4476:50;4472:120;;;4549:32;;-1:-1:-1;;;4549:32:78;;;;;;;;;;;12980:296:63;-1:-1:-1;;;;;2662:16:78;;2701:6;2697:14;;;13151:11:63;;13147:56;;13164:39;-1:-1:-1;;;;;13164:19:63;;13184:9;-1:-1:-1;;;;;13164:39:63;;:19;:39::i;:::-;-1:-1:-1;;;;;13217:11:63;;;13213:56;;13230:39;-1:-1:-1;;;;;13230:19:63;;13250:9;-1:-1:-1;;;;;13230:39:63;;:19;:39::i;9549:436:67:-;737:8;9747:33;;9746:40;9742:237;;9802:166;9829:15;9885:27;;;9914:6;9922:2;9926:16;;9944:9;9862:92;;;;;;;;;;;;:::i;2801:111:72:-;6931:20:22;:18;:20::i;:::-;2871:34:72::1;:32;:34::i;12171:179:70:-:0;12248:17;1333:22:76;1320:36;;1398:29;1857:3:70;1398:29:76;;;;1383:45;12284:59:70;1127:317:76;14511:212:70;14577:17;14606:15;14624:19;14636:6;14624:11;:19::i;:::-;14606:37;-1:-1:-1;1333:22:76;1320:36;;1398:29;1688:3:70;1398:29:76;;;;1383:45;14660:56:70;1127:317:76;37151:1544:44;37476:15;;;;:36;;;;-1:-1:-1;37495:17:44;;;;37476:36;:56;;;;-1:-1:-1;37516:16:44;;;;37476:56;:80;;;;-1:-1:-1;37536:20:44;;;;37476:80;:107;;;;-1:-1:-1;37560:23:44;;;;37476:107;:145;;;;-1:-1:-1;37603:18:44;;;;37476:145;:178;;;;-1:-1:-1;37625:29:44;;;;37476:178;37459:274;;;37686:36;;-1:-1:-1;;;37686:36:44;;;;;;;;;;;37459:274;37756:244;:10;37803;37827:12;37853:11;37878:15;37907:18;37939:13;37966:24;37756:33;:244::i;:::-;37743:257;;38025:14;38042:10;35259:6;4824:14:64;-1:-1:-1;;4820:22:64;;4807:36;4801:4;4797:47;;;4777:68;;;35298:2:44;3952:22:64;3939:36;3929:47;;4870:16:44;;4792:101;;38042:10;38025:27;-1:-1:-1;38066:21:44;38090:61;:10;38126:24;38090:35;:61::i;:::-;38066:85;-1:-1:-1;38165:16:44;38220:37;38066:85;38249:7;38220:28;:37::i;:::-;38184:33;:13;38209:7;38184:24;:33::i;:::-;:73;;;;:::i;:::-;38165:92;;2356:6;38275:8;:25;38271:100;;;38327:29;;-1:-1:-1;;;38327:29:44;;;;;;;;;;;38271:100;-1:-1:-1;;;38391:11:44;:24;;;38431:257;;;10576:6:127;10609:15;;;10591:34;;10661:15;;;10656:2;10641:18;;10634:43;10713:15;;;10693:18;;;10686:43;10765:15;;;10760:2;10745:18;;10738:43;10800:8;10845:15;;;10839:3;10824:19;;10817:44;10898:15;;;10892:3;10877:19;;10870:44;10951:15;;10945:3;10930:19;;10923:44;38431:257:44;;38467:10;;38431:257;;;;;;10553:3:127;38431:257:44;;;37151:1544;;;;;;;;:::o;812:217:71:-;886:13;623:6:65;-1:-1:-1;;;258:3:65;1824:42:71;;;;1823:72;-1:-1:-1;;;1805:90:71;2185:11;;;-1:-1:-1;;2178:35:71;1004:18;1805:90;2178:35;1004:8;:18::i;:::-;996:26;812:217;-1:-1:-1;;;;;812:217:71:o;9202:142:47:-;9297:7;9286;:18;9282:55;;9313:24;;-1:-1:-1;;;9313:24:47;;;;;;;;;;;12485:201:63;12560:7;12579:16;12598:18;:8;3395:6:78;3391:14;;3291:130;12598:18:63;12579:37;;12633:46;12655:8;12634:18;12645:6;12634:10;:18::i;:::-;:29;;;;:::i;:::-;-1:-1:-1;;;;;12633:44:63;1778:6:78;1774:15;;1668:137;11990:200:63;12065:7;-1:-1:-1;;;;;3042:16:78;;12138:45:63;3042:16:78;12139:18:63;12150:6;12139:10;:18::i;:::-;:29;;;;:::i;:::-;-1:-1:-1;;;;;12138:43:63;;2942:132:78;5814:359:67;343:8;5957:34;;5956:41;5952:215;;6057:85;;-1:-1:-1;;;;;25925:15:127;;;6057:85:67;;;25907:34:127;25977:15;;25957:18;;;25950:43;26036:14;;26029:22;26009:18;;;26002:50;26068:18;;;26061:34;;;6013:143:67;;6040:15;;-1:-1:-1;;;6080:28:67;25818:19:127;;6057:85:67;25621:480:127;6013:143:67;5814:359;;;;;:::o;8048:142:70:-;8108:15;1857:3;5648:20:76;;;8146:37:70;5510:188:76;16958:447:70;17042:7;17061:10;17086:27;17106:6;17086:19;:27::i;:::-;17074:39;;;;:9;:39;:::i;:::-;17061:52;;17134:23;17150:6;17134:15;:23::i;:::-;17128:29;;:2;:29;17124:216;;17182:25;17200:6;17182:17;:25::i;:::-;17173:34;;17235:22;17250:6;17235:14;:22::i;:::-;17230:27;;:2;:27;:99;;17296:33;17319:6;17327:1;17296:22;:33::i;:::-;17230:99;;;17260:33;17286:6;17260:25;:33::i;:::-;17221:108;;17124:216;17357:41;17380:6;17388:9;17357:22;:41::i;8075:162:63:-;8146:4;8169:3;:61;;8204:21;:11;3395:6:78;3391:14;;3291:130;8204:21:63;-1:-1:-1;;;;;8204:26:63;;8169:61;;;-1:-1:-1;;;;;;;3042:16:78;8175:26:63;;8075:162::o;16058:633:70:-;16151:7;16170:19;16192:22;16207:6;16192:14;:22::i;:::-;16170:44;;;;16225:15;16250:14;16320:11;16309:8;:22;;;:72;;16373:8;16359:22;;:11;:22;16309:72;;;16345:11;16334:8;:22;;;16309:72;16299:82;;623:6:65;16447:7:70;:35;16413:30;16436:6;16413:22;:30::i;:::-;16405:39;;:77;16395:88;;16504:17;16524:35;16552:6;16524:27;:35::i;:::-;16504:55;;;;16588:9;16579:6;:18;:39;;16612:6;16579:39;;;16600:9;16579:39;16570:48;;16636;16661:6;16676;16636:24;:48::i;:::-;16629:55;16058:633;-1:-1:-1;;;;;;;16058:633:70:o;9012:2179:63:-;9279:25;;;;9376:32;:23;;;9400:7;9376:23;:32::i;:::-;9360:48;-1:-1:-1;9433:21:63;9457:29;:11;9476:9;;9457:18;:29::i;:::-;9433:53;;9501:19;9523:8;:204;;9648:79;:69;-1:-1:-1;;;;;9648:22:63;;9687:5;258:3:65;9648:38:63;:69::i;:::-;:77;:79::i;:::-;9523:204;;;9550:79;:69;-1:-1:-1;;;;;9550:22:63;;258:3:65;9613:5:63;9550:38;:69::i;:79::-;9501:226;-1:-1:-1;9742:16:63;9761:31;:10;9784:7;9761:22;:31::i;:::-;9742:50;-1:-1:-1;9806:14:63;9823:34;-1:-1:-1;;;;;9823:24:63;;9742:50;9823:24;:34::i;:::-;9806:51;-1:-1:-1;9872:21:63;9806:51;9872:21;;:::i;:::-;;-1:-1:-1;9908:19:63;9930:30;:13;9951:8;9930:20;:30::i;:::-;9908:52;;9974:14;10002:20;10056:11;-1:-1:-1;;;;;10041:26:63;:11;-1:-1:-1;;;;;10041:26:63;;10037:635;;-1:-1:-1;10135:11:63;;-1:-1:-1;10096:6:63;;-1:-1:-1;10179:13:63;10037:635;;;10240:38;-1:-1:-1;;;;;10240:28:63;;10269:8;10240:28;:38::i;:::-;10231:47;-1:-1:-1;10297:16:63;10316:20;10231:47;10316:11;:20;:::i;:::-;-1:-1:-1;;;;;10297:39:63;;;10370:8;:206;;10500:76;:66;10508:8;258:3:65;10560:5:63;10500:35;:66::i;:76::-;10370:206;;;10401:76;:66;10409:8;10437:5;258:3:65;10401:35:63;:66::i;:76::-;10355:221;;10614:13;-1:-1:-1;;;;;10599:28:63;:12;-1:-1:-1;;;;;10599:28:63;;10595:62;;;10644:13;10629:28;;10595:62;10213:459;10037:635;10736:8;:203;;10861:26;:11;-1:-1:-1;;;;;10861:24:63;1778:6:78;1774:15;;1668:137;10861:26:63;-1:-1:-1;;;;;10889:24:63;;10917:21;:6;-1:-1:-1;;;;;10917:19:63;1778:6:78;1774:15;;1668:137;10917:21:63;10736:203;;;-1:-1:-1;;;;;10764:23:63;;10791:27;:12;-1:-1:-1;;;;;10791:25:63;1778:6:78;1774:15;;1668:137;10791:27:63;-1:-1:-1;;;;;10820:18:63;;:20;10686:253;;;;;;;;;;;;9419:1531;;;;;;;747:71:65;10977:76:63;10990:55;11029:15;10990:34;11006:17;10990:11;:15;;:34;;;;:::i;:55::-;11047:5;10977:12;:76::i;:::-;:126;10960:225;;;11135:39;;-1:-1:-1;;;11135:39:63;;;;;;;;;;;10960:225;9350:1841;9012:2179;;;;;;;;;;:::o;4608:162:70:-;4673:20;4721:42;:6;1479:2;4255:20:76;4277:11;4251:38;;4117:188;8024:533:78;8119:9;8144:10;-1:-1:-1;;;;;8144:15:78;8158:1;8144:15;8140:29;;-1:-1:-1;8168:1:78;8161:8;;8140:29;623:6:65;-1:-1:-1;;;;;8245:28:78;;;-1:-1:-1;8241:80:78;;;8282:39;;-1:-1:-1;;;8282:39:78;;;;;;;;;;;8241:80;-1:-1:-1;;;;;2662:16:78;;;8412:19;;8408:41;;;;2701:6;2697:14;;;8472:19;;8468:41;;;;1038:17;;1057:15;;;;1035:38;8536:14;8529:21;8024:533;-1:-1:-1;;;;;;8024:533:78:o;5673:179:70:-;5746:28;5810:35;:6;1585:3;5198:20:76;5220:11;5194:38;;5060:188;35501:171:44;35579:6;35604:8;:61;;35642:23;:5;35662:2;35642:19;:23::i;:::-;35604:61;;;35615:24;:5;35636:2;35615:20;:24::i;6541:1576:69:-;6635:7;6654:15;6672:24;:10;:22;:24::i;:::-;6654:42;;6710:8;:13;;6722:1;6710:13;6706:36;;6732:10;6725:17;;;;;6706:36;6753:14;6770:27;6780:6;6788:8;6770:9;:27::i;:::-;6753:44;;6808:16;6827:26;:6;:24;:26::i;:::-;6808:45;;6863:20;6898:26;:6;:24;:26::i;:::-;6886:38;;;;:9;:38;:::i;:::-;6863:61;;6966:13;6939:40;;:24;:15;:22;:24::i;:::-;:40;;;6935:1148;;;7024:19;7045:27;7074;7105:250;7165:13;7147:31;;:15;:31;7201:24;:10;:22;:24::i;:::-;7247:37;:10;:35;:37::i;:::-;7306:31;:10;7328:8;7306:21;:31::i;:::-;7105:6;;:250;;;:13;:250::i;:::-;7023:332;;;;;;7374:13;7390:24;:6;:22;:24::i;:::-;7374:40;-1:-1:-1;7451:27:69;;;:15;:27;1111:11;7501:31;;7497:335;;;-1:-1:-1;7607:21:69;;;;7630:1;7603:29;;7729:15;;-1:-1:-1;7687:1:69;7781:32;:10;7603:29;7781:22;:32::i;:::-;7768:45;;7497:335;7859:149;7898:6;7906:12;7920:20;7942;7970:8;7981:9;7859:17;:149::i;:::-;7850:158;;6995:1028;;;;;8037:35;8047:6;8055:8;8065:6;8037:9;:35::i;:::-;-1:-1:-1;8100:10:69;;6541:1576;-1:-1:-1;;;;;;6541:1576:69:o;14028:198:63:-;14117:15;14135:17;:7;3395:6:78;3391:14;;3291:130;14135:17:63;14117:35;-1:-1:-1;;;;;;14167:11:63;;;14163:56;;14180:39;-1:-1:-1;;;;;14180:19:63;;14200:9;-1:-1:-1;;;;;14180:39:63;;:19;:39::i;:::-;14107:119;14028:198;;;:::o;13553:::-;13642:15;-1:-1:-1;;;;;3042:16:78;;13660:17:63;2942:132:78;6554:358:67;419:8;6697:33;;6696:40;6692:214;;6796:85;;-1:-1:-1;;;;;25925:15:127;;;6796:85:67;;;25907:34:127;25977:15;;25957:18;;;25950:43;26036:14;;26029:22;26009:18;;;26002:50;26068:18;;;26061:34;;;6752:143:67;;6779:15;;-1:-1:-1;;;6819:27:67;25818:19:127;;6796:85:67;25621:480:127;7637:142:70;7697:15;7735:37;:6;1803:3;4705:20:76;4727:11;4701:38;;4567:188;2020:471:69;2139:20;2161:17;2209:27;2219:6;2227:8;2209:9;:27::i;:::-;2194:42;;2259:30;:12;:28;:30::i;:::-;2246:43;;2316:10;2304:22;;:8;:22;;;2300:185;;2355:47;:29;2365:6;2373:10;2355:9;:29::i;:::-;:45;:47::i;:::-;2342:60;;2440:10;2429:21;;:8;:21;;;:45;;2464:10;2429:45;;;2453:8;2429:45;2416:58;;2300:185;2020:471;;;;;:::o;2496:125:80:-;2560:13;4727:11:76;4701:38;;2592:22:80;4567:188:76;5204:170:80;5272:17;5342:25;5360:6;5342:17;:25::i;:::-;5314:53;;:25;5332:6;5314:17;:25::i;:::-;:53;;;;:::i;1509:246:69:-;1647:14;1620:8;1290:24;1305:8;1290:14;:24::i;:::-;1710:6;:28:::1;-1:-1:-1::0;;1725:12:69;;1710:28;::::1;::::0;;::::1;;;;;:::i;:::-;;::::0;;1509:246;-1:-1:-1;;;;1509:246:69:o;2673:158:70:-;2737:19;2783:41;:6;1246:2;3762:20:76;3784:11;3758:38;;3624:188;3136:154:70;3199:18;3243:40;:6;1302:2;3762:20:76;3784:11;3758:38;;3624:188;3611:170:70;3678:22;3730:44;:6;1362:2;4255:20:76;4277:11;4251:38;;4117:188;:178:70;4187:25;4245:43;:6;1421:2;5648:20:76;5670:11;5644:38;;5510:188;5132:192:70;5208:31;5278:39;:6;1534:2;5198:20:76;5220:11;5194:38;;5060:188;2984:1313:69;3116:17;3135:19;3156:27;3185;3229:20;3251:17;3272:40;3295:6;3303:8;3272:22;:40::i;:::-;3228:84;;-1:-1:-1;3228:84:69;-1:-1:-1;3327:77:69;;;:59;:6;3342:21;3228:84;3342:8;:21;:::i;:::-;3327:37;;;;;;;;;:::i;:::-;;;:57;:59::i;:::-;:77;;;3323:152;;;3427:37;;-1:-1:-1;;;3427:37:69;;;;;;;;;;;3323:152;3498:34;:12;:32;:34::i;:::-;3485:47;;3560:15;3546:29;;:10;:29;;;3542:328;;3616:10;3644:30;:12;:28;:30::i;:::-;3692:38;:12;:36;:38::i;:::-;3748;:12;:36;:38::i;:::-;3591:209;;;;;;;;;;;;3542:328;3844:15;3831:28;;3880:18;3900;3922:59;3935:6;3943:8;3953:15;3970:10;3922:12;:59::i;:::-;3879:102;;;;3991:17;4046:15;4011:32;:10;:30;:32::i;:::-;:50;;;;:::i;:::-;3991:70;;4071:17;4109:32;:10;:30;:32::i;:::-;4091:50;;:15;:50;:::i;:::-;4071:70;-1:-1:-1;4225:65:69;:10;4255;4267;4071:70;4225:29;:65::i;:::-;4152:138;;-1:-1:-1;4152:138:69;-1:-1:-1;4152:138:69;-1:-1:-1;;;;;;;2984:1313:69;;;;;;;;:::o;17709:271:70:-;17844:7;17876:35;17893:6;17901:9;17876:16;:35::i;:::-;17867:44;;17928:45;17956:6;17964:8;17928:27;:45::i;6193:173::-;6264:26;6324:35;:6;1637:3;5198:20:76;5220:11;5194:38;;5060:188;6684:148:70;6747:18;6791:34;:6;1688:3;5648:20:76;5670:11;5644:38;;5510:188;7167:173:70;7235:23;7289:44;:6;1749:3;6098:20:76;6120:11;6094:38;;5960:188;3797:128:78;3859:9;3887:5;:31;;3908:10;3916:1;3395:6;3391:14;;3291:130;3887:31;-1:-1:-1;;;;;3042:16:78;;3895:10;2942:132;3755:214:83;3839:14;3874:31;3892:1;3895;3898:6;3874:17;:31::i;:::-;3865:40;-1:-1:-1;3932:1:83;:11;;;;;3919:25;;;;:::i;:::-;3929:1;3926;3919:25;:30;3915:47;;3951:11;3961:1;3951:11;;:::i;5653:244::-;5747:14;5782:41;5800:1;5803:6;5811:11;5782:17;:41::i;:::-;5773:50;;5860:11;5837:35;;;;;:::i;:::-;5847:1;:11;;;;5844:1;5837:35;:40;5833:57;;5879:11;5889:1;5879:11;;:::i;10318:216:70:-;10394:7;10444:73;10475:31;10490:6;10498:7;10475:14;:31::i;:::-;10445:27;10456:6;10464:7;10445:10;:27::i;:::-;:61;10444:71;:73::i;1675:405:66:-;1774:7;1755:8;495:15;506:3;495:10;:15::i;:::-;-1:-1:-1;;;;;1839:30:66;;::::1;363:4:65;1839:30:66::0;;::::1;::::0;;;-1:-1:-1;;2003:15:66;;::::1;:26;:40:::0;::::1;:44:::0;1839:30;2002:60:::1;;;;:::i;:::-;;1987:76;;;520:1;1675:405:::0;;;;;:::o;10754:169:70:-;10831:7;1333:22:76;1320:36;;1398:29;1803:3:70;1398:29:76;;;;1383:45;10857:59:70;1127:317:76;8287:809:69;8388:14;8405:27;8415:6;8423:8;8405:9;:27::i;:::-;8388:44;;8442:13;8458:24;:6;:22;:24::i;:::-;8442:40;;8507:9;8497:19;;:6;:19;;;8493:65;;8525:33;;-1:-1:-1;;;8525:33:69;;;;;;;;;;;8493:65;8569:18;8600:8;8590:18;;:6;:18;;;:82;;8620:11;;;;:52;;8647:25;8657:6;8665;8647:9;:25::i;:::-;8590:82;;8620:52;8642:1;8590:82;;;8611:6;8590:82;8569:103;;8683:18;8704:28;:10;:26;:28::i;:::-;8683:49;;;;8766:10;8755:8;:21;;;:45;;8790:10;8755:45;;;8779:8;8755:45;;;8742:58;-1:-1:-1;8816:18:69;;;8811:174;8840:9;8836:13;;:1;:13;8811:174;;;8902:10;8866:6;8881:1;8866:17;;;;;;;:::i;:::-;;:48;8957:3;;8811:174;;;-1:-1:-1;8995:94:69;9005:6;9013:8;9069:18;9041:15;;;9024:33;;9069:18;;;9023:65;8995:9;:94::i;5415:165:47:-;5497:4;5529:7;-1:-1:-1;;;;;5520:16:47;:5;-1:-1:-1;;;;;5520:16:47;;:53;;;-1:-1:-1;;;;;;;5540:24:47;;;;;;;:17;:24;;;;;;;;:33;;;;;;;;;;;;;;;5415:165::o;10382:460:67:-;814:8;10605:34;;10604:41;10600:236;;10661:164;10688:15;10744:28;;;10774:6;10782:4;10788:2;10792:3;;10797:13;;10721:90;;;;;;;;;;;;;;:::i;10236:135:79:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:79;;;;;;;;;;;10306:58;10236:135;;;:::o;6415:418:47:-;-1:-1:-1;;;;;6548:18:47;;6494:51;6548:18;;;;;;;;;;;6595:19;;;;;;;;;;;6628:16;;;6624:77;;;6653:48;;-1:-1:-1;;;6653:48:47;;-1:-1:-1;;;;;26822:55:127;;6653:48:47;;;26804:74:127;26894:18;;;26887:34;;;26937:18;;;26930:34;;;26777:18;;6653:48:47;26602:368:127;6624:77:47;6736:18;;;;:14;:18;;;;;;;;:28;;;;;;;6778:19;;;;;6800:16;;6778:38;;-1:-1:-1;6415:418:47:o;1481:666:63:-;1619:18;-1:-1:-1;;;;;2662:16:78;;2701:6;2697:14;;;1619:18:63;;1804:15;;1800:132;;1855:66;1856:54;:12;-1:-1:-1;;;;;1856:54:63;;1898:11;1856:28;:54::i;1855:66::-;1835:86;;1800:132;-1:-1:-1;;;;;1946:15:63;;;1942:132;;1997:66;1998:54;:12;-1:-1:-1;;;;;1998:54:63;;2040:11;1998:28;:54::i;1997:66::-;1977:86;;1942:132;1061:6:78;1057:15;;;-1:-1:-1;;;;;2097:24:63;;1035:38:78;2084:56:63;1481:666;-1:-1:-1;;;;;;;;1481:666:63:o;2115:731:81:-;2224:16;2239:1;2224:16;;;;2185:4;2269:17;;;:11;;;:17;;;;;;2185:4;;2224:16;2334:1;2345:15;2340:20;;2334:27;2325:37;2316:46;;2377:19;;;2373:444;;2412:17;;;;:11;;;:17;;;;;:29;;;2460:14;;;2456:325;;-1:-1:-1;2517:1:81;2509:9;;;2494:12;2548:17;;;2577:1;2548:11;;;:17;;;;;;;2599:15;2583:31;;2577:38;;;;2568:48;2548:68;;;2635:29;;;;2548:68;2509:9;2687:14;;;2683:83;;2703:63;;2727:1;2749:15;2733:31;;2727:38;2718:48;2703:63;;;2683:83;2476:305;2456:325;2802:4;2795:11;;;;;;;2373:444;-1:-1:-1;2834:5:81;;2115:731;-1:-1:-1;;;;;2115:731:81:o;11237:457:67:-;890:8;11459:33;;11458:40;11454:234;;11514:163;11541:15;11597:27;;;11626:6;11634:4;11640:2;11644:3;;11649:13;;11574:89;;;;;;;;;;;;;;:::i;15417:404:70:-;15491:7;15510:14;15527:32;15552:6;15527:24;:32::i;:::-;15510:49;;;;15569:23;15595:26;15614:6;15595:18;:26::i;:::-;15569:52;;;-1:-1:-1;623:6:65;15695:24:70;;;:52;15776:38;15799:6;15695:52;15776:22;:38::i;8404:292:47:-;8505:5;1468:30;1490:7;1468:21;:30::i;:::-;8535:7:::1;-1:-1:-1::0;;;;;8526:16:47::1;:5;-1:-1:-1::0;;;;;8526:16:47::1;::::0;8522:57:::1;;8551:28;::::0;-1:-1:-1;;;8551:28:47;;-1:-1:-1;;;;;855:55:127;;8551:28:47::1;::::0;::::1;837:74:127::0;810:18;;8551:28:47::1;675:242:127::0;8522:57:47::1;-1:-1:-1::0;;;;;8590:24:47;;::::1;;::::0;;;:17:::1;:24;::::0;;;;;;;:33;;::::1;::::0;;;;;;;;;;:44;;-1:-1:-1;;8590:44:47::1;::::0;::::1;;::::0;;::::1;::::0;;;8649:40;;15078:41:127;;;8649:40:47::1;::::0;15051:18:127;8649:40:47::1;;;;;;;8404:292:::0;;;;:::o;2178:137:78:-;2240:9;2268:5;:40;;2293:15;2306:1;1778:6;1774:15;;1668:137;36042:491:44;36108:7;36127:11;36149:8;-1:-1:-1;;;;;36149:24:44;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36127:49;-1:-1:-1;;;;;;2662:16:78;;;;2701:6;2697:14;;;;36288:23:44;;36329:70;;363:4:65;;36331:16:44;;;;:34;;36330:58;;36329:68;:70::i;:::-;36325:74;;36417:70;363:4:65;36438:15:44;36432:3;-1:-1:-1;;;;;36419:16:44;36427:1;-1:-1:-1;;;;;36419:10:44;:16;:34;36418:58;;;;;:::i;36417:70::-;36413:74;-1:-1:-1;;1061:6:78;1057:15;;;-1:-1:-1;;;;;36515:8:44;;1035:38:78;36515:11:44;923:166:78;7250:304:67;502:8;7369:40;;7368:47;7364:184;;7458:78;;-1:-1:-1;;;;;27445:15:127;;;7458:78:67;;;27427:34:127;27497:15;;27477:18;;;27470:43;27529:18;;;27522:34;;;7431:106:67;;7441:15;;-1:-1:-1;;;7481:33:67;27339:18:127;;7458:78:67;27164:398:127;6695:198:78;6752:4;-1:-1:-1;;;;;2662:16:78;;;;2701:6;2697:14;;;;2662:16;;;2697:14;;;6868:7;;;;:18;;;6884:2;-1:-1:-1;;;;;6879:7:78;:2;-1:-1:-1;;;;;6879:7:78;;6861:25;;;;;;6695:198;;;;:::o;7929:389:67:-;584:8;8078:39;;8077:46;8073:239;;8199:88;;-1:-1:-1;;;;;27877:15:127;;;8199:88:67;;;27859:34:127;27929:15;;27909:18;;;27902:43;27961:18;;;27954:34;;;28004:18;;;27997:34;;;8139:162:67;;8166:15;;-1:-1:-1;;;8222:32:67;27770:19:127;;8199:88:67;27567:470:127;1242:279:71;1320:9;623:6:65;-1:-1:-1;;;258:3:65;1824:42:71;;;;1823:72;-1:-1:-1;;;1805:90:71;1320:9;1413:11;1805:90;1413:9;:11::i;:::-;1398:12;:5;:10;:12::i;:::-;:26;;;;:::i;:::-;1382:42;;1464:40;1488:6;591:7;1472:22;1464:38;:40::i;13760:685:67:-;13841:12;;13889:15;13864:41;;13988:4;13982;13978:15;13972:22;13967:3;13963:32;14075:4;14072:1;14065:4;14059:11;14052:4;14046;14042:15;14039:1;14032:5;14025;14020:60;14009:71;;14132:16;14125:24;14118:32;14108:7;14101:15;14097:54;14094:172;;;14191:16;14188:1;14185;14170:38;14235:16;14232:1;14225:27;14094:172;14359:16;14354:1;14348:8;14343:3;14339:18;14336:40;14329:4;14311:16;14308:26;14304:73;14295:7;14291:87;14280:98;;;14403:7;14398:40;;14419:19;;-1:-1:-1;;;14419:19:67;;;;;;;;;;;7238:865:47;7381:3;7393:7;1672:30;7381:3;7393:7;1672:12;:30::i;:::-;7438:2:::1;1468:30;1490:7;1468:21;:30::i;:::-;-1:-1:-1::0;;;;;7507:15:47;;::::2;7456:48;7507:15:::0;;;::::2;::::0;;;;;;;7581:13;;::::2;::::0;;;;;7605:427:::2;7621:14:::0;;::::2;7605:427;;;7652:10;7665:3;;7669:1;7665:6;;;;;;;:::i;:::-;;;;;;;7652:19;;7685:14;7702:7;;7710:1;7702:10;;;;;;;:::i;:::-;7727:19;7749:16:::0;;;7702:10:::2;7749:16:::0;;;;;;;;7702:10;::::2;::::0;;;::::2;;::::0;-1:-1:-1;;7783:20:47;;::::2;7779:82;;;7844:4;7850:2;7854:6;7812:49;;-1:-1:-1::0;;;7812:49:47::2;;;;;;;;;-1:-1:-1::0;;;;;26822:55:127;;;;26804:74;;26909:2;26894:18;;26887:34;;;;26952:2;26937:18;;26930:34;26792:2;26777:18;;26602:368;7779:82:47::2;7904:16;::::0;;;::::2;::::0;;;;;;;7923:20;;;::::2;7904:39:::0;;;7961:14;;;;;;:24;;;;::::2;::::0;;-1:-1:-1;8004:3:47::2;7605:427;;;;8079:2;-1:-1:-1::0;;;;;8047:49:47::2;8073:4;-1:-1:-1::0;;;;;8047:49:47::2;8061:10;-1:-1:-1::0;;;;;8047:49:47::2;;8083:3;;8088:7;;8047:49;;;;;;;;;:::i;:::-;;;;;;;;7446:657;;1712:1:::1;7238:865:::0;;;;;;;;:::o;14232:129:63:-;14314:30;;-1:-1:-1;;;14314:30:63;;14338:4;14314:30;;;837:74:127;14288:7:63;;14314:40;;-1:-1:-1;;;;;14314:15:63;;;;;810:18:127;;14314:30:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3093:432:77:-;3176:7;3185:6;3204:20;3226;3248:9;3261:20;3274:6;3261:12;:20::i;:::-;3405:9;2701:6:78;2697:14;;;3438:22:77;;;3434:38;;;1057:15:78;;;-1:-1:-1;;;;;2662:16:78;;;3381:22:77;;;3377:38;;;;3500:9;;;1035:38:78;;3203:78:77;;-1:-1:-1;;;;;;3093:432:77:o;40528:1770:44:-;40768:9;;;40673:14;40768:9;;;:5;:9;;;;;;40673:14;;;;;;;;40804:26;;40822:7;40804:17;:26::i;:::-;40788:42;;40840:14;40857:15;40869:2;40857:15;;2523:7:47;2549:18;;;:14;:18;;;;;;;2452:122;40857:15:44;40840:32;-1:-1:-1;40905:76:44;:11;40948:17;40967:5;40840:32;40905:42;:76::i;:::-;40883:98;;-1:-1:-1;40883:98:44;-1:-1:-1;40883:98:44;;-1:-1:-1;41032:14:44;;;;;;;;41028:1089;;41075:58;:10;41113:2;41117:15;41075:37;:58::i;:::-;41062:71;-1:-1:-1;41148:12:44;41163:78;:11;41062:71;41206:7;41215:9;41226:6;41234;41163:30;:78::i;:::-;41148:93;-1:-1:-1;41260:9:44;;41256:783;;41289:21;41313:39;41346:5;41313:19;:9;41327:4;41313:13;:19::i;:::-;:32;;:39::i;:::-;41289:63;;41370:21;41394:67;41431:29;:10;:27;:29::i;:::-;41394:4;;:67;;:36;:67::i;:::-;41370:91;-1:-1:-1;41484:18:44;;41480:185;;41543:33;:14;41562:13;41543:18;:33::i;:::-;41614:13;;41526:50;;-1:-1:-1;41614:32:44;;41632:13;41614:17;:32::i;:::-;41598:13;:48;41480:185;41683:20;41706:60;41760:5;41706:40;41722:23;:4;41731:13;41722:8;:23::i;:::-;41706:11;;:15;:40::i;:60::-;41683:83;-1:-1:-1;41793:51:44;:13;41823:6;41683:83;41793:29;:51::i;:::-;41784:60;-1:-1:-1;41876:30:44;:7;41891:10;41903:2;41876:14;:30::i;:::-;41863:43;;41938:10;41924:11;:24;;;;41988:10;-1:-1:-1;;;;;41972:52:44;;42000:2;42004:4;42010:13;41972:52;;;;;;;28470:8:127;28458:21;;;;28440:40;;28511:2;28496:18;;28489:34;;;;28554:2;28539:18;;28532:34;28428:2;28413:18;;28240:332;41972:52:44;;;;;;;;41271:768;;;41256:783;41048:1001;41028:1089;;;42069:37;:9;42093:8;42103:2;42069:23;:37::i;:::-;42131:11;;;:34;;-1:-1:-1;42146:19:44;;42131:34;42127:69;;;42174:22;;-1:-1:-1;;;42174:22:44;;12786:8:127;12774:21;;42174:22:44;;;12756:40:127;12729:18;;42174:22:44;12612:190:127;42127:69:44;42211:6;42221:1;42211:11;42207:30;;42224:13;:5;42234:2;42224:9;:13::i;:::-;;42207:30;42260:31;:11;42276:14;42260:15;:31::i;:::-;42248:9;;;;;;;;:5;:9;;;;;:43;;;;-1:-1:-1;40528:1770:44;;;;-1:-1:-1;40528:1770:44;-1:-1:-1;40528:1770:44;-1:-1:-1;;;;40528:1770:44:o;5901:191:47:-;5980:18;;;;:14;:18;;;;;:28;;6002:6;;5980:18;:28;;6002:6;;5980:28;:::i;:::-;;;;-1:-1:-1;;;;;;;6043:18:47;;;:9;:18;;;;;;;;;;;:22;;;;;;;:32;;;;;;;5901:191::o;1447:220:74:-;1557:66;;;-1:-1:-1;;;;;28769:55:127;;1557:66:74;;;28751:74:127;28841:18;;;;28834:34;;;1557:66:74;;;;;;;;;;28724:18:127;;;;1557:66:74;;;;;;;;-1:-1:-1;;;;;1557:66:74;-1:-1:-1;;;1557:66:74;;;1634:26;1648:5;1557:66;1634:13;:26::i;7084:141:22:-;8870:21;8560:40;;;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:22;;;;;;;;;;;2918:183:72;6931:20:22;:18;:20::i;12911:1397:70:-;13218:17;13279:11;13264:26;;:12;:26;;;:63;;;;355:5:76;13294:11:70;:33;;;13264:63;:126;;;;623:6:65;13347:15:70;:43;;;13264:126;:174;;;;549:5:65;13394:13:70;:44;;;13264:174;:240;;;;510:7:76;13458:24:70;:46;;;13264:240;13247:315;;;13522:40;;-1:-1:-1;;;13522:40:70;;;;;;;;;;;13247:315;1534:2;1398:29:76;;;;;-1:-1:-1;;1320:36:76;;;13585:66:70;;;1320:36:76;;;1246:2:70;1398:29:76;;;;;1320:36;;;1302:2:70;1398:29:76;;;;;1320:36;;;1362:2:70;1398:29:76;;;;;1320:36;;;1421:2:70;1398:29:76;;;;;1320:36;;;1479:2:70;1398:29:76;;;;;1320:36;;;1383:45;;;1410:16;;;;;;;;;;;;;;;1320:36;;;1383:45;14245:56:70;14238:63;12911:1397;-1:-1:-1;;;;;;;;;12911:1397:70:o;11673:268::-;11761:7;510::76;11784:6:70;:28;;;11780:81;;;11821:40;;-1:-1:-1;;;11821:40:70;;;;;;;;;;;11780:81;-1:-1:-1;;1320:36:76;;1398:29;1585:3:70;1398:29:76;;;;1383:45;11879:55:70;1127:317:76;9449:615:70;9528:19;9559:26;9588:29;9610:6;9588:21;:29::i;:::-;9559:58;;;-1:-1:-1;9632:23:70;;9628:430;;9890:12;9949:7;9905:51;;9913:32;9938:6;9913:24;:32::i;:::-;9905:41;;:51;;-1:-1:-1;10030:3:70;10024:2;9989:11;;;:32;;:37;9988:45;;8954:287;9029:7;9210;9177:40;;9185:21;9199:6;9185:13;:21::i;:::-;9177:30;;:40;9220:4;9177:47;9170:54;;8954:287;;;;:::o;4113:3600:82:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:65;-1:-1:-1;4252:22:82;;-1:-1:-1;4252:22:82;4240:34;-1:-1:-1;4316:1:82;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:65;-1:-1:-1;4574:1:82;-1:-1:-1;;;;;4595:41:82;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:82;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:82;;;;;29051:25:127;;;29092:18;;;29085:34;;;29024:18;;7609:35:82;28879:246:127;7585:59:82;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:82;:::i;11163:266:70:-;11249:7;510::76;11272:6:70;:28;;;11268:81;;;11309:40;;-1:-1:-1;;;11309:40:70;;;;;;;;;;;11268:81;1333:22:76;1320:36;;1398:29;1637:3:70;1398:29:76;;;;1383:45;11367:55:70;1127:317:76;14968:251:70;15058:17;15087:18;15108;:9;:16;:18::i;:::-;15087:39;-1:-1:-1;1333:22:76;1320:36;;1398:29;1749:3:70;1398:29:76;;;;1383:45;15143:69:70;1127:317:76;6249:139:79;6345:1;-1:-1:-1;;;;;6325:21:79;;;;6321:60;;6355:26;;-1:-1:-1;;;6355:26:79;;;;;;;;;;;1065:407:66;1208:7;1181:8;495:15;506:3;495:10;:15::i;:::-;363:4:65::1;1371:60:66::0;-1:-1:-1;;;;;1371:23:66;;::::1;:34:::0;;::::1;;:60:::0;1370:84:::1;::::0;1065:407;-1:-1:-1;;;;1065:407:66:o;4594:437:83:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;2641:485::-;2727:14;2754:13;2769;2786:18;2799:1;2802;2786:12;:18::i;:::-;2753:51;;;;2819:5;2828:1;2819:10;2815:40;;2849:6;2840:15;;:5;:15;;2831:24;;2815:40;2869:10;;2865:255;;2964:1;:11;;;;2955:20;;2951:68;;2984:35;;-1:-1:-1;;;2984:35:83;;;;;;;;;;;2951:68;3088:6;3082:12;;:3;:12;3072:23;;:5;:23;;3062:33;;;;2865:255;2743:383;;2641:485;;;;;:::o;4730:196:63:-;4807:17;-1:-1:-1;;;;;2662:16:78;;2701:6;2697:14;;;4894:25:63;2662:16:78;2697:14;4913:5:63;4894:12;:25::i;4987:1582:81:-;5069:6;;5135:16;5150:1;5135:16;;;;5185:15;5180:20;;;;5216:22;;5212:240;;5263:17;;;;:11;;;:17;;;;;;;-1:-1:-1;5315:28:81;5263:17;5339:3;5315:15;:28::i;:::-;5294:49;;-1:-1:-1;;5362:10:81;:31;5358:83;;5426:1;5409:18;;;;:31;;;;-1:-1:-1;5395:46:81;;-1:-1:-1;;5395:46:81;5358:83;5240:212;5212:240;-1:-1:-1;5524:15:81;5508:31;;;;5485:1;5477:9;;;;5555:22;;5551:409;;5602:17;;;;:11;;;:17;;;;;;;-1:-1:-1;5654:28:81;5602:17;5678:3;5654:15;:28::i;:::-;5633:49;;-1:-1:-1;;5701:10:81;:31;5697:253;;5784:1;5767:18;;;:31;;:13;5826:17;;;:11;;;:17;;;;;;;-1:-1:-1;5767:31:81;-1:-1:-1;5897:37:81;5826:17;5897:35;:37::i;:::-;5876:58;;5893:1;5884:4;5876:13;;:18;;:58;5862:73;;;;;;;;;5697:253;5579:381;5551:409;5998:15;5982:31;;;;-1:-1:-1;6029:22:81;;6025:519;;6076:11;;;-1:-1:-1;6076:11:81;6122:28;6076:11;6146:3;6122:15;:28::i;:::-;6101:49;;-1:-1:-1;;6169:10:81;:31;6165:369;;6227:19;6273:17;;;:11;;;:17;;;;;;;-1:-1:-1;6235:10:81;-1:-1:-1;6235:10:81;6345:37;6273:17;6345:35;:37::i;:::-;6324:58;;6341:1;6324:18;;;:58;:13;6410:17;;;:11;;;:17;;;;;;;-1:-1:-1;6324:58:81;-1:-1:-1;6481:37:81;6410:17;6481:35;:37::i;6165:369::-;6053:491;6025:519;-1:-1:-1;6561:1:81;;4987:1582;-1:-1:-1;;;;;;4987:1582:81:o;3145:1556::-;3228:6;;3294:16;3309:1;3294:16;;;;3344:15;3339:20;;3375:8;;3371:227;;3408:17;;;;:11;;;:17;;;;;;;-1:-1:-1;3460:29:81;3408:17;3485:3;3460:16;:29::i;:::-;3439:50;;-1:-1:-1;;3508:10:81;:31;3504:83;;3572:1;3555:18;;;;:31;;;;-1:-1:-1;3541:46:81;;-1:-1:-1;;3541:46:81;3504:83;3385:213;3371:227;-1:-1:-1;3670:15:81;3654:31;;3631:1;3623:9;;;3701:8;;3697:395;;3734:17;;;;:11;;;:17;;;;;;;-1:-1:-1;3786:29:81;3734:17;3811:3;3786:16;:29::i;:::-;3765:50;;-1:-1:-1;;3834:10:81;:31;3830:252;;3917:1;3900:18;;;:31;;:13;3959:17;;;:11;;;:17;;;;;;;-1:-1:-1;3900:31:81;-1:-1:-1;4030:36:81;3959:17;4030:34;:36::i;3830:252::-;3711:381;3697:395;4130:15;4114:31;;;-1:-1:-1;4161:8:81;;4157:504;;4194:11;;;-1:-1:-1;4194:11:81;4240:29;4194:11;4265:3;4240:16;:29::i;:::-;4219:50;;-1:-1:-1;;4288:10:81;:31;4284:367;;4346:19;4392:17;;;:11;;;:17;;;;;;;-1:-1:-1;4354:10:81;-1:-1:-1;4354:10:81;4464:36;4392:17;4464:34;:36::i;:::-;4443:57;;4460:1;4443:18;;;:57;:13;4528:17;;;:11;;;:17;;;;;;;-1:-1:-1;4443:57:81;-1:-1:-1;4599:36:81;4528:17;4599:34;:36::i;4284:367::-;4171:490;4157:504;-1:-1:-1;4678:16:81;;3145:1556;-1:-1:-1;;;;;;3145:1556:81:o;4759:150:80:-;4825:15;1030:3;6098:20:76;;;4859:43:80;5960:188:76;4324:148:80;4390:14;4423:42;:6;970:3;3270:20:76;3292:10;3266:37;;3134:185;9626:135:79;9719:1;9700:20;;;;;9696:58;;9729:25;;-1:-1:-1;;;9729:25:79;;;;;;;;;;;8512:228:70;8588:6;8606:9;8618:19;8630:6;8618:11;:19::i;:::-;8606:31;;8689:2;8678:13;;:8;:13;;;:45;;8715:8;8710:2;:13;8678:45;;;8694:13;;;;8512:228;-1:-1:-1;;8512:228:70:o;7570:665:80:-;7865:28;;;:16;;;;:28;;;7930:29;;;:41;;;8008:18;;:30;8075:23;8091:6;8075:15;:23::i;:::-;8059:39;;;;:::i;:::-;;;8132:31;8156:6;8132:23;:31::i;:::-;8108:55;;;;:::i;:::-;;;8197:31;8221:6;8197:23;:31::i;:::-;8173:55;;;;:::i;:::-;;;7570:665;;;;;;;;;:::o;1442:807::-;970:3;1398:29:76;;;;;910:3:80;1398:29:76;;;;;844:2:80;1398:29:76;;;;;779:2:80;1398:29:76;;;;;1710:67:80;;;1383:45:76;;;;1030:3:80;1398:29:76;;;;;1383:45;;2176:66:80;1127:317:76;6145:196:69;6243:8;1290:24;1305:8;1290:14;:24::i;:::-;6318:6;6287;:28:::1;-1:-1:-1::0;;6302:12:69;;6287:28;::::1;::::0;;::::1;;;;;:::i;:::-;;:37:::0;-1:-1:-1;;;;6145:196:69:o;9202:128::-;9270:8;:13;;9282:1;9270:13;9266:57;;9292:31;;-1:-1:-1;;;9292:31:69;;;;;;;;;;;2896:140:80;2960:9;2988:41;:6;779:2;6548:20:76;6570:11;6544:38;;6410:188;3380:175:80;3452:28;3499:49;:6;844:2;6548:20:76;6570:11;6544:38;;6410:188;3869:165:80;3941:17;3977:50;:6;910:3;6548:20:76;6570:11;6544:38;;6410:188;4650:1322:69;4798:7;;;;4870:10;4879:1;4870:6;:10;:::i;:::-;4855:25;;;;4891:14;4915:23;4949:15;4967:8;4949:26;;;;5008:535;5022:4;5015:3;:11;5008:535;;5042:11;5072:1;5057:10;5063:4;5057:3;:10;:::i;:::-;5056:17;;5042:31;;5148:6;5143:3;5134:7;5127:28;5115:40;-1:-1:-1;5192:6:69;:24;;;;;;;;;;;:::i;:::-;;;5183:33;;5249:28;:6;:26;:28::i;:::-;5230:47;;5315:15;5296:34;;:16;:34;;;5292:241;;;5357:7;5363:1;5357:3;:7;:::i;:::-;5350:14;;5292:241;;;5408:15;5389:34;;:16;:34;;;5385:148;;;5449:7;:3;5455:1;5449:7;:::i;:::-;5443:13;;5385:148;;;5503:6;5511;5495:23;;;;;;;;;;;;5385:148;5028:515;5008:535;;;5575:16;5557:34;;:15;:34;;;5553:413;;;5639:8;:13;;5651:1;5639:13;5635:77;;5687:6;5676:17;;5635:77;5738:6;:28;-1:-1:-1;;5753:12:69;;5738:28;;;;;;;;;:::i;:::-;;;5768:6;5730:45;;;;;;;;;;;5553:413;5879:6;5876:1;5866:8;5859:27;5847:39;-1:-1:-1;5922:6:69;5930;:24;;;;;;;;;;;:::i;:::-;;;5914:41;;;;;;;;;4650:1322;;;;;;;;:::o;5884:1198:80:-;6025:24;6051:32;6085;6133:12;6148:24;6164:7;6148:15;:24::i;:::-;6133:39;;;;6182:20;6205:32;6229:7;6205:23;:32::i;:::-;6182:55;;;;6247:20;6270:32;6294:7;6270:23;:32::i;:::-;6247:55;;;;6317:7;:12;;6328:1;6317:12;6313:83;;6346:4;;-1:-1:-1;6360:12:80;-1:-1:-1;6382:12:80;-1:-1:-1;6331:65:80;;6313:83;6407:12;6422:24;6438:7;6422:15;:24::i;:::-;6407:39;;;;6456:20;6479:32;6503:7;6479:23;:32::i;:::-;6456:55;;;;6521:20;6544:32;6568:7;6544:23;:32::i;:::-;6521:55;;;;6591:7;:12;;6602:1;6591:12;6587:83;;6620:4;;-1:-1:-1;6634:12:80;-1:-1:-1;6656:12:80;-1:-1:-1;6605:65:80;;-1:-1:-1;;;6605:65:80;6587:83;6681:19;6703:26;;;;;;:16;;:26;:::i;:::-;6681:48;;6827:11;6816:7;6809:14;;:4;:14;6799:7;6792:14;;:4;:14;:31;6791:47;;;;;:::i;:::-;;6764:75;;6940:11;6929:7;6914:22;;:12;:22;6904:7;6889:22;;:12;:22;:47;6888:63;;;;;:::i;:::-;;6853:99;;7053:11;7042:7;7027:22;;:12;:22;7017:7;7002:22;;:12;:22;:47;7001:63;;;;;:::i;:::-;;6966:99;;6123:959;;;;;;;5884:1198;;;;;;;;;:::o;3508:123:66:-;483:6:65;3568:3:66;-1:-1:-1;;;;;3568:23:66;;3564:60;;;3600:24;;-1:-1:-1;;;3600:24:66;;;;;;;;;;;956:247:83;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;1369:2370:82:-;1417:13;1828:1;1833;1828:6;1824:23;;-1:-1:-1;;;1843:4:82;1369:2370;-1:-1:-1;1369:2370:82:o;1824:23::-;1861:1;1866;1861:6;1857:50;;1876:31;;-1:-1:-1;;;1876:31:82;;;;;;;;;;;1857:50;1924:1;1918:7;;;;;2016:11;534:21;2045:14;;2041:219;;-1:-1:-1;2086:1:82;2041:219;;;-1:-1:-1;;;2244:1:82;-1:-1:-1;;;2244:1:82;2224:21;;;;:::i;:::-;;2220:25;;2041:219;2396:9;2408:44;496:3;2409:1;:21;;2408:42;:44::i;:::-;2699:29;496:3;2699:29;;;;;-1:-1:-1;2396:56:82;;;-1:-1:-1;2794:6:82;;;534:21;2873:14;;2869:735;;3118:27;3091:499;3156:1;3148:5;:9;3091:499;;;3199:5;;;496:3;3198:27;;-1:-1:-1;;;3313:32:82;;3309:263;;3440:15;;;;3548:1;3542:7;;;;;3309:263;3169:1;3159:11;3091:499;;;;2869:735;-1:-1:-1;;3703:13:82;3721:1;3702:20;;1369:2370;-1:-1:-1;1369:2370:82:o;2063:513:77:-;2148:20;;;2233:42;:6;731:2;6548:20:76;6570:11;6544:38;;6410:188;2233:42:77;2217:58;-1:-1:-1;2301:42:77;:6;674:2;6548:20:76;6570:11;6544:38;;6410:188;2301:42:77;2285:58;-1:-1:-1;;5670:11:76;5644:38;;2421:17:77;2403:35;;;:64;;;777:4;2442:13;:25;;;2403:64;:93;;;;777:4;2471:13;:25;;;2403:93;2399:171;;;2519:40;;-1:-1:-1;;;2519:40:77;;;;;;;;;;;2792:1683:63;2955:14;;-1:-1:-1;;;;;2662:16:78;;2701:6;2697:14;;;2955::63;3091:25;2662:16:78;2697:14;3110:5:63;3091:12;:25::i;:::-;3067:49;;3130:13;3147:1;3130:18;3126:37;;-1:-1:-1;3158:1:63;;-1:-1:-1;3158:1:63;;-1:-1:-1;3150:13:63;;-1:-1:-1;;3150:13:63;3126:37;3174:20;3197:32;3210:11;3223:5;3197:12;:32::i;:::-;3174:55;-1:-1:-1;3243:17:63;;;:37;;-1:-1:-1;3264:16:63;;3243:37;3239:83;;;3290:20;:13;:18;:20::i;:::-;3312:9;3282:40;;;;;;;;;;3239:83;3342:56;:13;3372:11;3385:12;3342:29;:56::i;:::-;3333:65;-1:-1:-1;3408:26:63;3437:47;3333:65;3458:12;3472:11;3437:20;:47::i;:::-;3408:76;;3515:18;3499:13;:34;3495:769;;;3549:22;3574:34;3590:18;3574:13;:34;:::i;:::-;3549:59;-1:-1:-1;;;;3730:33:63;;3726:277;;258:3:65;3800:40:63;;;3867:10;;;:23;;3884:6;3867:23;;;3880:1;3867:23;3858:32;-1:-1:-1;3909:11:63;3858:32;3909:11;;:::i;:::-;;-1:-1:-1;3938:50:63;258:3:65;3956:32:63;;;3938:50;;:::i;:::-;;;3765:238;3726:277;4039:5;4021:14;:23;4017:181;;4064:14;4081:22;4098:5;4081:14;:22;:::i;:::-;4064:39;;4139:1;4130:6;:10;:23;;4147:6;4130:23;;;4143:1;4130:23;4121:32;-1:-1:-1;4172:11:63;4121:32;4172:11;;:::i;:::-;;;4046:152;4017:181;1061:6:78;1057:15;;;-1:-1:-1;;;;;4224:17:63;;1035:38:78;4212:41:63;;3535:729;3495:769;747:71:65;4278:47:63;4291:26;:11;4307:9;4291:15;:26::i;:::-;4319:5;4278:12;:47::i;:::-;:81;4274:158;;;4382:39;;-1:-1:-1;;;4382:39:63;;;;;;;;;;;4274:158;-1:-1:-1;2792:1683:63;;4458:9;;-1:-1:-1;;;;;;;;2792:1683:63:o;6884:894::-;7102:12;7130:6;7140:1;7130:11;7126:25;;-1:-1:-1;7150:1:63;7143:8;;7126:25;-1:-1:-1;;;;;2662:16:78;;2701:6;2697:14;;;7163:15:63;;7292:84;:75;7310:26;:11;2662:16:78;7310:15:63;:26::i;:::-;7338:6;7346:20;7338:6;7346:11;:20;:::i;:::-;7292:17;:75::i;:84::-;7227:149;;;;7409:7;-1:-1:-1;;;;;7391:25:63;:15;-1:-1:-1;;;;;7391:25:63;;7387:385;;;7432:12;7447:78;7493:31;:10;7516:7;7493:22;:31::i;:::-;7448:25;7458:15;7448:7;:25;:::i;:::-;-1:-1:-1;;;;;7447:45:63;;;:78::i;:::-;7432:93;;7547:19;:4;-1:-1:-1;;;;;7547:17:63;1778:6:78;1774:15;;1668:137;7547:19:63;7540:26;;7418:159;7387:385;;;7605:7;-1:-1:-1;;;;;7587:25:63;:15;-1:-1:-1;;;;;7587:25:63;;7583:189;;;7628:12;7643:78;7689:31;:10;7712:7;7689:22;:31::i;:::-;7644:25;7654:15;7644:7;:25;:::i;7643:78::-;-1:-1:-1;;;;;7743:16:63;;-1:-1:-1;;7583:189:63;7116:662;;;;6884:894;;;;;;;;:::o;6012:268::-;6113:8;6108:13;;:2;:13;;;:37;;;;-1:-1:-1;6137:3:63;6126:14;;;6125:20;;6108:37;:94;;;;6154:8;6149:13;;:2;:13;;;:53;;;;-1:-1:-1;;;;;;6166:36:63;;6149:53;6104:170;;;6225:38;;-1:-1:-1;;;6225:38:63;;12786:8:127;12774:21;;6225:38:63;;;12756:40:127;12729:18;;6225:38:63;12612:190:127;1134:713:81;1240:16;1255:1;1240:16;;;;1201:4;1285:17;;;:11;;;:17;;;;;;1201:4;;1240:16;1349:1;1360:15;1355:20;;1349:27;1332:45;;1392:19;;;1388:430;;1427:17;;;;:11;;;:17;;;;;:29;;;1475:11;;;1471:311;;1529:1;1521:9;;;1506:12;1557:17;;;:11;;;;:17;;;;;;;1652:15;1636:31;;1630:38;;;;1613:56;;1593:76;;1557:17;-1:-1:-1;1692:11:81;;;1688:79;;1705:62;;1728:1;1750:15;1734:31;;1728:38;1705:62;;;1488:294;1803:4;1796:11;;;;;;;1673:757:74;1748:12;1807:1;1801:4;1794:15;1892:4;1886;1879;1873:11;1866:4;1860;1856:15;1853:1;1846:5;1839;1834:63;1823:74;-1:-1:-1;1823:74:74;1938:194;;;;2178:16;2211:56;;;;2334:1;2327:4;2321:11;2318:18;2309:7;2305:32;2294:43;;2171:168;;2211:56;2257:5;2245:18;2238:26;2231:34;2220:45;;2171:168;;1911:442;;1938:194;1966:16;1963:155;;;2032:16;2026:4;2020;2005:44;2083:16;2077:4;2070:30;1963:155;1911:442;2378:7;2373:50;;2394:29;;-1:-1:-1;;;2394:29:74;;;;;;;;;;;7208:3395:83;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:83;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:83:o;6220:547::-;6286:13;;-1:-1:-1;;6654:1:83;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;5221:548:63:-;5303:17;5336:5;;5332:182;;-1:-1:-1;5397:9:63;;;:5;5405:1;5397:9;5405:1;5428:13;;;;:::i;:::-;;:22;5424:65;;5459:30;;-1:-1:-1;;;5459:30:63;;;;;;;;;;;5424:65;5527:5;;5523:213;;258:3:65;5576:28:63;;;;;5622:14;;5659:13;;;5655:56;;;5681:30;;-1:-1:-1;;;5681:30:63;;;;;;;;;;;7419:180:81;7493:7;7543:39;7551:6;7580:1;7574:7;;7543:30;:39::i;2877:1171:75:-;2940:9;3003:1;2998:3;2994:11;3035:2;3028:10;3018:88;;3065:3;3058:10;;3090:2;3085:7;;3018:88;3133:1;3129:2;3125:10;3119:16;;3165:2;3158:10;3148:97;;3193:2;-1:-1:-1;3228:2:75;3219:12;3193:2;3148:97;3272:1;3268:2;3264:10;3258:16;;3304:2;3297:10;3287:97;;3332:2;-1:-1:-1;3367:2:75;3358:12;3332:2;3287:97;3411:1;3407:2;3403:10;3397:16;;3443:2;3436:10;3426:97;;3471:2;-1:-1:-1;3506:2:75;3497:12;3471:2;3426:97;3549:1;3546;3542:9;3536:15;;3581:2;3574:10;3564:96;;3609:2;-1:-1:-1;3644:1:75;3635:11;3609:2;3564:96;3686:1;3683;3679:9;3673:15;;3718:2;3711:10;3701:96;;3746:2;-1:-1:-1;3781:1:75;3772:11;3746:2;3701:96;3823:1;3820;3816:9;3810:15;;3855:2;3848:10;3838:96;;3883:2;-1:-1:-1;3918:1:75;3909:11;3883:2;3838:96;;3971:1;3968;3964:9;3957:17;3947:51;;3994:1;3985:11;3947:51;4023:3;4019:13;;2877:1171;-1:-1:-1;2877:1171:75:o;6902:182:81:-;6977:7;7027:40;7035:6;-1:-1:-1;;7059:7:81;;7027:31;:40::i;1675:971:75:-;1737:9;-1:-1:-1;;;;;1787:1:75;1784:41;1781:120;;;-1:-1:-1;1853:3:75;1849:11;;;;1781:120;1923:18;1920:1;1917:25;1914:112;;;1970:2;1966:10;;;;2000:12;1914:112;2048:10;2045:1;2042:17;2039:104;;;2087:2;2083:10;;;;2117:12;2039:104;2165:6;2162:1;2159:13;2156:100;;;2200:2;2196:10;;;;2230:12;2156:100;2278:4;2275:1;2272:11;2269:96;;;2311:1;2307:9;;;;2340:11;2269:96;2387:3;2384:1;2381:10;2378:95;;;2419:1;2415:9;;;;2448:11;2378:95;2495:3;2492:1;2489:10;2486:95;;;2527:1;2523:9;;;;2556:11;2486:95;2603:3;2600:1;2597:10;2594:36;;;2626:1;2617:11;1675:971;;;:::o;10740:682:83:-;10788:13;10817:1;10822;10817:6;10813:20;;-1:-1:-1;10832:1:83;;10740:682;-1:-1:-1;10740:682:83:o;10813:20::-;10844:11;10858:29;10885:1;10858:26;:29::i;:::-;10947:1;10934:11;;;;;10930:19;;;10990:13;;;;10979:25;10972:33;;11045:13;;;11034:25;11027:33;;11100:13;;;11089:25;11082:33;;11155:13;;;11144:25;11137:33;;11210:13;;;11199:25;11192:33;;11265:13;;;11254:25;11247:33;;11320:13;;;11309:25;11302:33;;11354:13;;;;;11302:33;-1:-1:-1;10844:43:83;;;-1:-1:-1;11394:9:83;;;:21;;11414:1;11394:21;;;-1:-1:-1;11406:5:83;11387:28;-1:-1:-1;10740:682:83:o;1790:222::-;1879:14;1914:34;1930:1;1933;1936:11;1914:15;:34::i;:::-;1905:43;;1975:11;1962:25;;;;;:::i;2316:501:66:-;2460:7;2433:8;495:15;506:3;495:10;:15::i;:::-;419:21:65;;-1:-1:-1;;;;;2707:23:66;;::::1;2745:17:::0;;::::1;2707:34:::0;;::::1;363:4:65;2745:39:66::0;;;::::1;2707:78;:92;::::0;1226:222:75;1341:9;;;;;;;;1295:10;1373:6;;1372:59;;1428:3;1403:22;1423:1;1403:19;:22::i;:::-;:28;1372:59;;;;;-1:-1:-1;;;1383:17:75;1226:222;-1:-1:-1;;1226:222:75:o;546:342::-;678:3;:9;;;662:25;701:11;;;;616:10;;812:6;;811:60;;866:5;842:21;861:1;842:18;:21::i;:::-;:29;;;811:60;;;-1:-1:-1;;;822:17:75;546:342;-1:-1:-1;;;546:342:75:o;14:154:127:-;-1:-1:-1;;;;;93:5:127;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:315;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;478:2;463:18;;;;450:32;;-1:-1:-1;;;173:315:127:o;922:250::-;1007:1;1017:113;1031:6;1028:1;1025:13;1017:113;;;1107:11;;;1101:18;1088:11;;;1081:39;1053:2;1046:10;1017:113;;;-1:-1:-1;;1164:1:127;1146:16;;1139:27;922:250::o;1177:396::-;1326:2;1315:9;1308:21;1289:4;1358:6;1352:13;1401:6;1396:2;1385:9;1381:18;1374:34;1417:79;1489:6;1484:2;1473:9;1469:18;1464:2;1456:6;1452:15;1417:79;:::i;:::-;1557:2;1536:15;-1:-1:-1;;1532:29:127;1517:45;;;;1564:2;1513:54;;1177:396;-1:-1:-1;;1177:396:127:o;1902:161::-;1969:20;;2029:8;2018:20;;2008:31;;1998:59;;2053:1;2050;2043:12;2068:184;2126:6;2179:2;2167:9;2158:7;2154:23;2150:32;2147:52;;;2195:1;2192;2185:12;2147:52;2218:28;2236:9;2218:28;:::i;2450:367::-;2513:8;2523:6;2577:3;2570:4;2562:6;2558:17;2554:27;2544:55;;2595:1;2592;2585:12;2544:55;-1:-1:-1;2618:20:127;;2661:18;2650:30;;2647:50;;;2693:1;2690;2683:12;2647:50;2730:4;2722:6;2718:17;2706:29;;2790:3;2783:4;2773:6;2770:1;2766:14;2758:6;2754:27;2750:38;2747:47;2744:67;;;2807:1;2804;2797:12;2822:1050;2962:6;2970;2978;2986;2994;3002;3055:3;3043:9;3034:7;3030:23;3026:33;3023:53;;;3072:1;3069;3062:12;3023:53;3111:9;3098:23;3130:31;3155:5;3130:31;:::i;:::-;3180:5;-1:-1:-1;3237:2:127;3222:18;;3209:32;3250:33;3209:32;3250:33;:::i;:::-;3302:7;-1:-1:-1;3360:2:127;3345:18;;3332:32;3383:18;3413:14;;;3410:34;;;3440:1;3437;3430:12;3410:34;3479:70;3541:7;3532:6;3521:9;3517:22;3479:70;:::i;:::-;3568:8;;-1:-1:-1;3453:96:127;-1:-1:-1;3656:2:127;3641:18;;3628:32;;-1:-1:-1;3672:16:127;;;3669:36;;;3701:1;3698;3691:12;3669:36;;3740:72;3804:7;3793:8;3782:9;3778:24;3740:72;:::i;:::-;2822:1050;;;;-1:-1:-1;2822:1050:127;;-1:-1:-1;2822:1050:127;;3831:8;;2822:1050;-1:-1:-1;;;2822:1050:127:o;3877:347::-;3928:8;3938:6;3992:3;3985:4;3977:6;3973:17;3969:27;3959:55;;4010:1;4007;4000:12;3959:55;-1:-1:-1;4033:20:127;;4076:18;4065:30;;4062:50;;;4108:1;4105;4098:12;4062:50;4145:4;4137:6;4133:17;4121:29;;4197:3;4190:4;4181:6;4173;4169:19;4165:30;4162:39;4159:59;;;4214:1;4211;4204:12;4229:477;4308:6;4316;4324;4377:2;4365:9;4356:7;4352:23;4348:32;4345:52;;;4393:1;4390;4383:12;4345:52;4429:9;4416:23;4406:33;;4490:2;4479:9;4475:18;4462:32;4517:18;4509:6;4506:30;4503:50;;;4549:1;4546;4539:12;4503:50;4588:58;4638:7;4629:6;4618:9;4614:22;4588:58;:::i;:::-;4229:477;;4665:8;;-1:-1:-1;4562:84:127;;-1:-1:-1;;;;4229:477:127:o;4711:713::-;4815:6;4823;4831;4839;4892:2;4880:9;4871:7;4867:23;4863:32;4860:52;;;4908:1;4905;4898:12;4860:52;4947:9;4934:23;4966:31;4991:5;4966:31;:::i;:::-;5016:5;-1:-1:-1;5072:2:127;5057:18;;5044:32;5099:18;5088:30;;5085:50;;;5131:1;5128;5121:12;5085:50;5170:70;5232:7;5223:6;5212:9;5208:22;5170:70;:::i;:::-;5259:8;;-1:-1:-1;5144:96:127;-1:-1:-1;;5346:2:127;5331:18;;5318:32;5359:33;5318:32;5359:33;:::i;:::-;4711:713;;;;-1:-1:-1;4711:713:127;;-1:-1:-1;;4711:713:127:o;5429:435::-;5482:3;5520:5;5514:12;5547:6;5542:3;5535:19;5573:4;5602:2;5597:3;5593:12;5586:19;;5639:2;5632:5;5628:14;5660:1;5670:169;5684:6;5681:1;5678:13;5670:169;;;5745:13;;5733:26;;5779:12;;;;5814:15;;;;5706:1;5699:9;5670:169;;;-1:-1:-1;5855:3:127;;5429:435;-1:-1:-1;;;;;5429:435:127:o;5869:403::-;6104:6;6093:9;6086:25;6147:6;6142:2;6131:9;6127:18;6120:34;6190:2;6185;6174:9;6170:18;6163:30;6067:4;6210:56;6262:2;6251:9;6247:18;6239:6;6210:56;:::i;6277:159::-;6344:20;;6404:6;6393:18;;6383:29;;6373:57;;6426:1;6423;6416:12;6441:693;6555:6;6563;6571;6579;6587;6595;6603;6611;6664:3;6652:9;6643:7;6639:23;6635:33;6632:53;;;6681:1;6678;6671:12;6632:53;6704:28;6722:9;6704:28;:::i;:::-;6694:38;;6751:37;6784:2;6773:9;6769:18;6751:37;:::i;:::-;6741:47;;6807:37;6840:2;6829:9;6825:18;6807:37;:::i;:::-;6797:47;;6863:37;6896:2;6885:9;6881:18;6863:37;:::i;:::-;6853:47;;6919:38;6952:3;6941:9;6937:19;6919:38;:::i;:::-;6909:48;;6976:38;7009:3;6998:9;6994:19;6976:38;:::i;:::-;6966:48;;7033:38;7066:3;7055:9;7051:19;7033:38;:::i;:::-;7023:48;;7090:38;7123:3;7112:9;7108:19;7090:38;:::i;:::-;7080:48;;6441:693;;;;;;;;;;;:::o;7139:773::-;7261:6;7269;7277;7285;7338:2;7326:9;7317:7;7313:23;7309:32;7306:52;;;7354:1;7351;7344:12;7306:52;7394:9;7381:23;7423:18;7464:2;7456:6;7453:14;7450:34;;;7480:1;7477;7470:12;7450:34;7519:70;7581:7;7572:6;7561:9;7557:22;7519:70;:::i;:::-;7608:8;;-1:-1:-1;7493:96:127;-1:-1:-1;7696:2:127;7681:18;;7668:32;;-1:-1:-1;7712:16:127;;;7709:36;;;7741:1;7738;7731:12;7709:36;;7780:72;7844:7;7833:8;7822:9;7818:24;7780:72;:::i;:::-;7139:773;;;;-1:-1:-1;7871:8:127;-1:-1:-1;;;;7139:773:127:o;7917:261::-;8096:2;8085:9;8078:21;8059:4;8116:56;8168:2;8157:9;8153:18;8145:6;8116:56;:::i;8183:160::-;8248:20;;8304:13;;8297:21;8287:32;;8277:60;;8333:1;8330;8323:12;8348:315;8413:6;8421;8474:2;8462:9;8453:7;8449:23;8445:32;8442:52;;;8490:1;8487;8480:12;8442:52;8513:26;8529:9;8513:26;:::i;:::-;8503:36;;8589:2;8578:9;8574:18;8561:32;8602:31;8627:5;8602:31;:::i;:::-;8652:5;8642:15;;;8348:315;;;;;:::o;9640:620::-;9746:6;9754;9762;9770;9778;9786;9794;9847:3;9835:9;9826:7;9822:23;9818:33;9815:53;;;9864:1;9861;9854:12;9815:53;9887:28;9905:9;9887:28;:::i;:::-;9877:38;;9934:37;9967:2;9956:9;9952:18;9934:37;:::i;:::-;9924:47;;9990:37;10023:2;10012:9;10008:18;9990:37;:::i;:::-;9980:47;;10046:37;10079:2;10068:9;10064:18;10046:37;:::i;:::-;10036:47;;10102:38;10135:3;10124:9;10120:19;10102:38;:::i;:::-;10092:48;;10159:38;10192:3;10181:9;10177:19;10159:38;:::i;:::-;10149:48;;10216:38;10249:3;10238:9;10234:19;10216:38;:::i;:::-;10206:48;;9640:620;;;;;;;;;;:::o;11229:278::-;11287:6;11340:2;11328:9;11319:7;11315:23;11311:32;11308:52;;;11356:1;11353;11346:12;11308:52;11395:9;11382:23;11445:12;11438:5;11434:24;11427:5;11424:35;11414:63;;11473:1;11470;11463:12;12355:252;12419:6;12427;12480:2;12468:9;12459:7;12455:23;12451:32;12448:52;;;12496:1;12493;12486:12;12448:52;12519:26;12535:9;12519:26;:::i;:::-;12509:36;;12564:37;12597:2;12586:9;12582:18;12564:37;:::i;12807:369::-;12872:6;12880;12933:2;12921:9;12912:7;12908:23;12904:32;12901:52;;;12949:1;12946;12939:12;12901:52;12988:9;12975:23;-1:-1:-1;;;;;13031:5:127;13027:46;13020:5;13017:57;13007:85;;13088:1;13085;13078:12;13007:85;13111:5;-1:-1:-1;13135:35:127;13166:2;13151:18;;13135:35;:::i;13585:180::-;13644:6;13697:2;13685:9;13676:7;13672:23;13668:32;13665:52;;;13713:1;13710;13703:12;13665:52;-1:-1:-1;13736:23:127;;13585:180;-1:-1:-1;13585:180:127:o;13770:184::-;13828:6;13881:2;13869:9;13860:7;13856:23;13852:32;13849:52;;;13897:1;13894;13887:12;13849:52;13920:28;13938:9;13920:28;:::i;14225:315::-;14290:6;14298;14351:2;14339:9;14330:7;14326:23;14322:32;14319:52;;;14367:1;14364;14357:12;14319:52;14406:9;14393:23;14425:31;14450:5;14425:31;:::i;14545:388::-;14613:6;14621;14674:2;14662:9;14653:7;14649:23;14645:32;14642:52;;;14690:1;14687;14680:12;14642:52;14729:9;14716:23;14748:31;14773:5;14748:31;:::i;15130:642::-;15248:6;15256;15264;15272;15325:2;15313:9;15304:7;15300:23;15296:32;15293:52;;;15341:1;15338;15331:12;15293:52;15380:9;15367:23;15399:31;15424:5;15399:31;:::i;:::-;15449:5;-1:-1:-1;15501:2:127;15486:18;;15473:32;;-1:-1:-1;15556:2:127;15541:18;;15528:32;15583:18;15572:30;;15569:50;;;15615:1;15612;15605:12;15569:50;15654:58;15704:7;15695:6;15684:9;15680:22;15654:58;:::i;15777:268::-;15864:6;15917:2;15905:9;15896:7;15892:23;15888:32;15885:52;;;15933:1;15930;15923:12;15885:52;15965:9;15959:16;15984:31;16009:5;15984:31;:::i;16050:127::-;16111:10;16106:3;16102:20;16099:1;16092:31;16142:4;16139:1;16132:15;16166:4;16163:1;16156:15;16182:465;16439:2;16428:9;16421:21;16402:4;16465:56;16517:2;16506:9;16502:18;16494:6;16465:56;:::i;:::-;16569:9;16561:6;16557:22;16552:2;16541:9;16537:18;16530:50;16597:44;16634:6;16626;16597:44;:::i;17336:127::-;17397:10;17392:3;17388:20;17385:1;17378:31;17428:4;17425:1;17418:15;17452:4;17449:1;17442:15;17468:247;17527:6;17580:2;17568:9;17559:7;17555:23;17551:32;17548:52;;;17596:1;17593;17586:12;17548:52;17635:9;17622:23;17654:31;17679:5;17654:31;:::i;18301:127::-;18362:10;18357:3;18353:20;18350:1;18343:31;18393:4;18390:1;18383:15;18417:4;18414:1;18407:15;18433:127;18494:10;18489:3;18485:20;18482:1;18475:31;18525:4;18522:1;18515:15;18549:4;18546:1;18539:15;18565:177;18633:12;18678:10;;;18666;;;18662:27;;18701:12;;;18698:38;;;18716:18;;:::i;18747:257::-;18818:18;18868:10;;;18880;;;18864:27;18911:20;;;;18818:18;18950:24;;;18940:58;;18978:18;;:::i;:::-;18940:58;;18747:257;;;;:::o;19009:180::-;19076:18;19114:10;;;19126;;;19110:27;;19149:11;;;19146:37;;;19163:18;;:::i;19450:197::-;-1:-1:-1;;;;;19572:10:127;;;19584;;;19568:27;;19607:11;;;19604:37;;;19621:18;;:::i;19652:200::-;-1:-1:-1;;;;;19788:10:127;;;19776;;;19772:27;;19811:12;;;19808:38;;;19826:18;;:::i;20189:358::-;20289:6;20284:3;20277:19;20259:3;20319:66;20311:6;20308:78;20305:98;;;20399:1;20396;20389:12;20305:98;20435:6;20432:1;20428:14;20487:8;20480:5;20473:4;20468:3;20464:14;20451:45;20516:18;;;;20536:4;20512:29;;20189:358;-1:-1:-1;;;20189:358:127:o;20552:519::-;20829:2;20818:9;20811:21;20792:4;20855:73;20924:2;20913:9;20909:18;20901:6;20893;20855:73;:::i;:::-;20976:9;20968:6;20964:22;20959:2;20948:9;20944:18;20937:50;21004:61;21058:6;21050;21042;21004:61;:::i;21076:492::-;21343:2;21332:9;21325:21;21306:4;21369:73;21438:2;21427:9;21423:18;21415:6;21407;21369:73;:::i;:::-;21490:9;21482:6;21478:22;21473:2;21462:9;21458:18;21451:50;21518:44;21555:6;21547;21518:44;:::i;21867:266::-;21955:6;21950:3;21943:19;22007:6;22000:5;21993:4;21988:3;21984:14;21971:43;-1:-1:-1;22059:1:127;22034:16;;;22052:4;22030:27;;;22023:38;;;;22115:2;22094:15;;;-1:-1:-1;;22090:29:127;22081:39;;;22077:50;;21867:266::o;22138:723::-;22430:4;-1:-1:-1;;;;;22540:2:127;22532:6;22528:15;22517:9;22510:34;22592:2;22584:6;22580:15;22575:2;22564:9;22560:18;22553:43;22644:2;22636:6;22632:15;22627:2;22616:9;22612:18;22605:43;;22684:6;22679:2;22668:9;22664:18;22657:34;22728:6;22722:3;22711:9;22707:19;22700:35;22772:3;22766;22755:9;22751:19;22744:32;22793:62;22850:3;22839:9;22835:19;22827:6;22819;22793:62;:::i;22866:287::-;22995:3;23033:6;23027:13;23049:66;23108:6;23103:3;23096:4;23088:6;23084:17;23049:66;:::i;:::-;23131:16;;;;;22866:287;-1:-1:-1;;22866:287:127:o;23158:184::-;23228:6;23281:2;23269:9;23260:7;23256:23;23252:32;23249:52;;;23297:1;23294;23287:12;23249:52;-1:-1:-1;23320:16:127;;23158:184;-1:-1:-1;23158:184:127:o;23756:823::-;24080:4;-1:-1:-1;;;;;24190:2:127;24182:6;24178:15;24167:9;24160:34;24242:2;24234:6;24230:15;24225:2;24214:9;24210:18;24203:43;24294:2;24286:6;24282:15;24277:2;24266:9;24262:18;24255:43;;24334:3;24329:2;24318:9;24314:18;24307:31;24361:74;24430:3;24419:9;24415:19;24407:6;24399;24361:74;:::i;:::-;24484:9;24476:6;24472:22;24466:3;24455:9;24451:19;24444:51;24512:61;24566:6;24558;24550;24512:61;:::i;:::-;24504:69;23756:823;-1:-1:-1;;;;;;;;;;23756:823:127:o;24584:315::-;24769:6;24758:9;24751:25;24812:2;24807;24796:9;24792:18;24785:30;24732:4;24832:61;24889:2;24878:9;24874:18;24866:6;24858;24832:61;:::i;24904:582::-;25140:4;-1:-1:-1;;;;;25250:2:127;25242:6;25238:15;25227:9;25220:34;25302:2;25294:6;25290:15;25285:2;25274:9;25270:18;25263:43;;25342:3;25337:2;25326:9;25322:18;25315:31;25363:74;25432:3;25421:9;25417:19;25409:6;25401;25363:74;:::i;:::-;25355:82;;25473:6;25468:2;25457:9;25453:18;25446:34;24904:582;;;;;;;;:::o;25491:125::-;25556:9;;;25577:10;;;25574:36;;;25590:18;;:::i;26106:128::-;26173:9;;;26194:11;;;26191:37;;;26208:18;;:::i;26239:174::-;26306:12;26338:10;;;26350;;;26334:27;;26373:11;;;26370:37;;;26387:18;;:::i;26418:179::-;26449:1;26475:6;26508:2;26505:1;26501:10;26530:3;26520:37;;26537:18;;:::i;:::-;26575:10;;26571:20;;;;;26418:179;-1:-1:-1;;26418:179:127:o;28042:193::-;28081:1;28107;28097:35;;28112:18;;:::i;:::-;-1:-1:-1;;;28148:18:127;;-1:-1:-1;;28168:13:127;;28144:38;28141:64;;;28185:18;;:::i;:::-;-1:-1:-1;28219:10:127;;28042:193::o;29130:120::-;29170:1;29196;29186:35;;29201:18;;:::i;:::-;-1:-1:-1;29235:9:127;;29130:120::o;29255:171::-;29323:6;29362:10;;;29350;;;29346:27;;29385:12;;;29382:38;;;29400:18;;:::i","linkReferences":{},"immutableReferences":{"53143":[{"start":1138,"length":32}],"53146":[{"start":1285,"length":32},{"start":5070,"length":32},{"start":8666,"length":32},{"start":13989,"length":32}]}},"methodIdentifiers":{"approveForAll(address,bool)":"e584b654","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","batchTransferFrom(address,address,uint256[],uint256[])":"17fad7fc","burn(address,address,uint256[],uint256[])":"c9939f5e","collectProtocolFees()":"a1af5b9a","flashLoan(address,bytes32,bytes)":"ea3446bf","forceDecay()":"d3b9fbe4","getActiveId()":"dbe65edc","getBin(uint24)":"0abe9688","getBinStep()":"17f11ecc","getFactory()":"88cc58e4","getIdFromPrice(uint256)":"f5e29329","getLBHooksParameters()":"781a8915","getNextNonEmptyBin(bool,uint24)":"a41a01fb","getOracleParameters()":"55182894","getOracleSampleAt(uint40)":"8940a16a","getPriceFromId(uint24)":"4c7cffbd","getProtocolFees()":"d8dfcea0","getReserves()":"0902f1ac","getStaticFeeParameters()":"7ca0de30","getSwapIn(uint128,bool)":"abcd7830","getSwapOut(uint128,bool)":"e77366f8","getTokenX()":"05e8746d","getTokenY()":"da10610c","getVariableFeeParameters()":"8d7024e5","implementation()":"5c60da1b","increaseOracleLength(uint16)":"c7bd6586","initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)":"47973bff","isApprovedForAll(address,address)":"e985e9c5","mint(address,bytes32[],address)":"383d15c5","name()":"06fdde03","setHooksParameters(bytes32,bytes)":"1b057f6d","setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)":"6653851a","swap(bool,address)":"53c059a0","symbol()":"95d89b41","totalSupply(uint256)":"bd85b039"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"factory_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"BinHelper__CompositionFactorFlawed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__LiquidityOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__MaxLiquidityPerBinExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeHelper__FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Hooks__CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__EmptyMarketConfigs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanCallbackFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanInsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidHooks\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidStaticFeeParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__MaxTotalFeeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyProtocolFeeRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OutOfLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__TokenNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmountsOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__ZeroBorrowAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroShares\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LiquidityConfigurations__InvalidConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleHelper__InvalidOracleId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleHelper__LookUpTimestampTooOld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleHelper__NewLengthTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__AddOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__MultiplierTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__SubUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds40Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenHelper__TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint128x128Math__LogUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CollectedProtocolFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CompositionFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"DepositedToBins\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"}],\"name\":\"ForcedDecay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"HooksParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"oracleLength\",\"type\":\"uint16\"}],\"name\":\"OracleLengthIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"StaticFeeParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"WithdrawnFromBins\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"batchBalances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"collectedProtocolFees\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getActiveId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getBin\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBinStep\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBHooksParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getNextNonEmptyBin\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"nextId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"size\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"activeSize\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"firstTimestamp\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"lookupTimestamp\",\"type\":\"uint40\"}],\"name\":\"getOracleSampleAt\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"cumulativeId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeVolatility\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeBinCrossed\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"protocolFeeX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticFeeParameters\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenY\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVariableFeeParameters\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"timeOfLastUpdate\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newLength\",\"type\":\"uint16\"}],\"name\":\"increaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"amountsLeft\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setHooksParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setStaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"approveForAll(address,bool)\":{\"params\":{\"approved\":\"The boolean value to grant or revoke permission.\",\"spender\":\"The address of the spender.\"}},\"balanceOf(address,uint256)\":{\"params\":{\"account\":\"The address of the owner.\",\"id\":\"The token id.\"},\"returns\":{\"_0\":\"The amount of tokens of type `id` owned by `account`.\"}},\"balanceOfBatch(address[],uint256[])\":{\"params\":{\"accounts\":\"The addresses of the owners.\",\"ids\":\"The token ids.\"},\"returns\":{\"batchBalances\":\"The balance for each (account, id) pair.\"}},\"batchTransferFrom(address,address,uint256[],uint256[])\":{\"params\":{\"amounts\":\"The amounts of the tokens to transfer\",\"from\":\"The address to transfer from\",\"ids\":\"The ids of the tokens to transfer\",\"to\":\"The address to transfer to\"}},\"burn(address,address,uint256[],uint256[])\":{\"params\":{\"amountsToBurn\":\"The amounts of LB tokens to burn for each bin\",\"from\":\"The address that will burn the LB tokens\",\"ids\":\"The ids of the bins from which to withdraw\",\"to\":\"The address that will receive the tokens\"},\"returns\":{\"amounts\":\"The amounts of token X and token Y received by the user\"}},\"collectProtocolFees()\":{\"returns\":{\"collectedProtocolFees\":\"The amount of protocol fees collected\"}},\"constructor\":{\"details\":\"Constructor for the Liquidity Book Pair contract that sets the Liquidity Book Factory\",\"params\":{\"factory_\":\"The Liquidity Book Factory\"}},\"flashLoan(address,bytes32,bytes)\":{\"params\":{\"amounts\":\"The encoded amounts of token X and token Y to flash loan\",\"data\":\"Any data that will be passed to the callback function\",\"receiver\":\"The contract that will receive the tokens and execute the callback function\"}},\"forceDecay()\":{\"details\":\"Can only be called by the factory\"},\"getActiveId()\":{\"details\":\"The active id is the id of the bin that is currently being used for swaps. The price of the active bin is the price of the Liquidity Book Pair and can be calculated as follows: `price = (1 + binStep / 10_000) ^ (activeId - 2^23)`\",\"returns\":{\"activeId\":\"The active id of the Liquidity Book Pair\"}},\"getBin(uint24)\":{\"params\":{\"id\":\"The id of the bin\"},\"returns\":{\"binReserveX\":\"The reserve of token X in the bin\",\"binReserveY\":\"The reserve of token Y in the bin\"}},\"getBinStep()\":{\"details\":\"The bin step is the increase in price between two consecutive bins, in basis points. For example, a bin step of 1 means that the price of the next bin is 0.01% higher than the price of the previous bin.\",\"returns\":{\"_0\":\"binStep The bin step of the Liquidity Book Pair, in 10_000th\"}},\"getFactory()\":{\"returns\":{\"factory\":\"The Liquidity Book Factory\"}},\"getIdFromPrice(uint256)\":{\"details\":\"The id may be inaccurate due to rounding issues, always trust getPriceFromId rather than getIdFromPrice\",\"params\":{\"price\":\"The price of y per x as a 128.128-binary fixed-point number\"},\"returns\":{\"id\":\"The id of the bin corresponding to this price\"}},\"getLBHooksParameters()\":{\"returns\":{\"_0\":\"The hooks parameters of the Liquidity Book Pair\"}},\"getNextNonEmptyBin(bool,uint24)\":{\"details\":\"The next non-empty bin is the bin with a higher (if swapForY is true) or lower (if swapForY is false) id that has a non-zero reserve of token X or Y.\",\"params\":{\"id\":\"The id of the bin\",\"swapForY\":\"Whether the swap is for token Y (true) or token X (false\"},\"returns\":{\"nextId\":\"The id of the next non-empty bin\"}},\"getOracleParameters()\":{\"returns\":{\"activeSize\":\"The active size of the oracle\",\"firstTimestamp\":\"The first timestamp of the oracle, i.e. the timestamp of the oldest sample\",\"lastUpdated\":\"The last updated timestamp of the oracle\",\"sampleLifetime\":\"The sample lifetime for the oracle\",\"size\":\"The size of the oracle\"}},\"getOracleSampleAt(uint40)\":{\"details\":\"The cumulative values are the cumulative id, the cumulative volatility and the cumulative bin crossed.\",\"params\":{\"lookupTimestamp\":\"The timestamp at which to look up the cumulative values\"},\"returns\":{\"cumulativeBinCrossed\":\"The cumulative bin crossed of the Liquidity Book Pair at the given timestamp\",\"cumulativeId\":\"The cumulative id of the Liquidity Book Pair at the given timestamp\",\"cumulativeVolatility\":\"The cumulative volatility of the Liquidity Book Pair at the given timestamp\"}},\"getPriceFromId(uint24)\":{\"details\":\"This is the trusted source of price information, always trust this rather than getIdFromPrice\",\"params\":{\"id\":\"The id of the bin\"},\"returns\":{\"price\":\"The price corresponding to this id\"}},\"getProtocolFees()\":{\"returns\":{\"protocolFeeX\":\"The protocol fees of token X\",\"protocolFeeY\":\"The protocol fees of token Y\"}},\"getReserves()\":{\"returns\":{\"reserveX\":\"The reserve of token X\",\"reserveY\":\"The reserve of token Y\"}},\"getStaticFeeParameters()\":{\"returns\":{\"baseFactor\":\"The base factor for the static fee\",\"decayPeriod\":\"The decay period for the static fee\",\"filterPeriod\":\"The filter period for the static fee\",\"maxVolatilityAccumulator\":\"The maximum volatility accumulator for the static fee\",\"protocolShare\":\"The protocol share for the static fee\",\"reductionFactor\":\"The reduction factor for the static fee\",\"variableFeeControl\":\"The variable fee control for the static fee\"}},\"getSwapIn(uint128,bool)\":{\"details\":\"If `amountOutLeft` is greater than zero, the swap in is not possible, and the maximum amount that can be swapped from `amountIn` is `amountOut - amountOutLeft`.\",\"params\":{\"amountOut\":\"The amount of token X or Y to swap in\",\"swapForY\":\"Whether the swap is for token Y (true) or token X (false)\"},\"returns\":{\"amountIn\":\"The amount of token X or Y that can be swapped in, including the fee\",\"amountOutLeft\":\"The amount of token Y or X that cannot be swapped out\",\"fee\":\"The fee of the swap\"}},\"getSwapOut(uint128,bool)\":{\"details\":\"If `amountInLeft` is greater than zero, the swap out is not possible, and the maximum amount that can be swapped is `amountIn - amountInLeft` for `amountOut`.\",\"params\":{\"amountIn\":\"The amount of token X or Y to swap in\",\"swapForY\":\"Whether the swap is for token Y (true) or token X (false)\"},\"returns\":{\"amountInLeft\":\"The amount of token X or Y that cannot be swapped in\",\"amountOut\":\"The amount of token Y or X that can be swapped out\",\"fee\":\"The fee of the swap\"}},\"getTokenX()\":{\"returns\":{\"tokenX\":\"The address of the token X\"}},\"getTokenY()\":{\"returns\":{\"tokenY\":\"The address of the token Y\"}},\"getVariableFeeParameters()\":{\"returns\":{\"idReference\":\"The id reference for the variable fee\",\"timeOfLastUpdate\":\"The time of last update for the variable fee\",\"volatilityAccumulator\":\"The volatility accumulator for the variable fee\",\"volatilityReference\":\"The volatility reference for the variable fee\"}},\"increaseOracleLength(uint16)\":{\"params\":{\"newLength\":\"The new length of the oracle\"}},\"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)\":{\"details\":\"Can only be called by the Liquidity Book Factory\",\"params\":{\"activeId\":\"The active id of the Liquidity Book Pair\",\"baseFactor\":\"The base factor for the static fee\",\"decayPeriod\":\"The decay period for the static fee\",\"filterPeriod\":\"The filter period for the static fee\",\"maxVolatilityAccumulator\":\"The max volatility accumulator for the static fee\",\"protocolShare\":\"The protocol share for the static fee\",\"reductionFactor\":\"The reduction factor for the static fee\",\"variableFeeControl\":\"The variable fee control for the static fee\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"owner\":\"The address of the owner.\",\"spender\":\"The address of the spender.\"},\"returns\":{\"_0\":\"True if `spender` is approved to transfer `owner`'s tokens.\"}},\"mint(address,bytes32[],address)\":{\"details\":\"Any excess amount of token will be sent to the `to` address.\",\"params\":{\"liquidityConfigs\":\"The encoded liquidity configurations, each one containing the id of the bin and the percentage of token X and token Y to add to the bin.\",\"refundTo\":\"The address that will receive the excess amount of tokens\",\"to\":\"The address that will receive the LB tokens\"},\"returns\":{\"amountsLeft\":\"The amounts of token X and token Y that were not added to the pool and were sent to `to`\",\"amountsReceived\":\"The amounts of token X and token Y received by the pool\",\"liquidityMinted\":\"The amounts of LB tokens minted for each bin\"}},\"name()\":{\"returns\":{\"_0\":\"The name of the token.\"}},\"setHooksParameters(bytes32,bytes)\":{\"details\":\"Can only be called by the factory\",\"params\":{\"hooksParameters\":\"The hooks parameter\",\"onHooksSetData\":\"The data to be passed to the onHooksSet function of the hooks contract\"}},\"setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)\":{\"details\":\"Can only be called by the factory\",\"params\":{\"baseFactor\":\"The base factor of the static fee\",\"decayPeriod\":\"The decay period of the static fee\",\"filterPeriod\":\"The filter period of the static fee\",\"maxVolatilityAccumulator\":\"The max volatility accumulator of the static fee\",\"protocolShare\":\"The protocol share of the static fee\",\"reductionFactor\":\"The reduction factor of the static fee\",\"variableFeeControl\":\"The variable fee control of the static fee\"}},\"swap(bool,address)\":{\"params\":{\"swapForY\":\"Whether you're swapping token X for token Y (true) or token Y for token X (false)\",\"to\":\"The address to send the tokens to\"},\"returns\":{\"amountsOut\":\"The encoded amounts of token X and token Y sent to `to`\"}},\"symbol()\":{\"returns\":{\"_0\":\"The symbol of the token.\"}},\"totalSupply(uint256)\":{\"details\":\"This is the amount of token of type `id` minted minus the amount burned.\",\"params\":{\"id\":\"The token id.\"},\"returns\":{\"_0\":\"The total supply of that token id.\"}}},\"title\":\"Liquidity Book Pair\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveForAll(address,bool)\":{\"notice\":\"Grants or revokes permission to `spender` to transfer the caller's lbTokens, according to `approved`.\"},\"balanceOf(address,uint256)\":{\"notice\":\"Returns the amount of tokens of type `id` owned by `account`.\"},\"balanceOfBatch(address[],uint256[])\":{\"notice\":\"Return the balance of multiple (account/id) pairs.\"},\"batchTransferFrom(address,address,uint256[],uint256[])\":{\"notice\":\"Overrides the batch transfer function to call the hooks before and after the transfer\"},\"burn(address,address,uint256[],uint256[])\":{\"notice\":\"Burn Liquidity Book (LB) tokens and withdraw tokens from the pool. This function will burn the tokens directly from the caller\"},\"collectProtocolFees()\":{\"notice\":\"Collect the protocol fees from the pool.\"},\"flashLoan(address,bytes32,bytes)\":{\"notice\":\"Flash loan tokens from the pool to a receiver contract and execute a callback function. The receiver contract is expected to return the tokens plus a fee to this contract. The fee is calculated as a percentage of the amount borrowed, and is the same for both tokens.\"},\"forceDecay()\":{\"notice\":\"Forces the decay of the volatility reference variables\"},\"getActiveId()\":{\"notice\":\"Returns the active id of the Liquidity Book Pair\"},\"getBin(uint24)\":{\"notice\":\"Returns the reserves of a bin\"},\"getBinStep()\":{\"notice\":\"Returns the bin step of the Liquidity Book Pair\"},\"getFactory()\":{\"notice\":\"Returns the Liquidity Book Factory\"},\"getIdFromPrice(uint256)\":{\"notice\":\"Returns the id corresponding to the given price\"},\"getLBHooksParameters()\":{\"notice\":\"Gets the hooks parameters of the Liquidity Book Pair\"},\"getNextNonEmptyBin(bool,uint24)\":{\"notice\":\"Returns the next non-empty bin\"},\"getOracleParameters()\":{\"notice\":\"Returns the oracle parameters of the Liquidity Book Pair\"},\"getOracleSampleAt(uint40)\":{\"notice\":\"Returns the cumulative values of the Liquidity Book Pair at a given timestamp\"},\"getPriceFromId(uint24)\":{\"notice\":\"Returns the price corresponding to the given id, as a 128.128-binary fixed-point number\"},\"getProtocolFees()\":{\"notice\":\"Returns the protocol fees of the Liquidity Book Pair\"},\"getReserves()\":{\"notice\":\"Returns the reserves of the Liquidity Book Pair This is the sum of the reserves of all bins, minus the protocol fees.\"},\"getStaticFeeParameters()\":{\"notice\":\"Returns the static fee parameters of the Liquidity Book Pair\"},\"getSwapIn(uint128,bool)\":{\"notice\":\"Simulates a swap in.\"},\"getSwapOut(uint128,bool)\":{\"notice\":\"Simulates a swap out.\"},\"getTokenX()\":{\"notice\":\"Returns the token X of the Liquidity Book Pair\"},\"getTokenY()\":{\"notice\":\"Returns the token Y of the Liquidity Book Pair\"},\"getVariableFeeParameters()\":{\"notice\":\"Returns the variable fee parameters of the Liquidity Book Pair\"},\"increaseOracleLength(uint16)\":{\"notice\":\"Increase the length of the oracle used by the pool\"},\"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)\":{\"notice\":\"Initialize the Liquidity Book Pair fee parameters and active id\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Returns true if `spender` is approved to transfer `owner`'s tokens or if `spender` is the `owner`.\"},\"mint(address,bytes32[],address)\":{\"notice\":\"Mint liquidity tokens by depositing tokens into the pool. It will mint Liquidity Book (LB) tokens for each bin where the user adds liquidity. This function will not transfer the tokens from the caller, it is expected that the tokens have already been transferred to this contract through another contract, most likely the router. That is why this function shouldn't be called directly, but through one of the add liquidity functions of a router that will also perform safety checks.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"setHooksParameters(bytes32,bytes)\":{\"notice\":\"Sets the hooks parameter of the pool\"},\"setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)\":{\"notice\":\"Sets the static fee parameters of the pool\"},\"swap(bool,address)\":{\"notice\":\"Swap tokens iterating over the bins until the entire amount is swapped. Token X will be swapped for token Y if `swapForY` is true, and token Y for token X if `swapForY` is false. This function will not transfer the tokens from the caller, it is expected that the tokens have already been transferred to this contract through another contract, most likely the router. That is why this function shouldn't be called directly, but only through one of the swap functions of a router that will also perform safety checks, such as minimum amounts and slippage. The variable fee is updated throughout the swap, it increases with the number of bins crossed. The oracle is updated at the end of the swap.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply(uint256)\":{\"notice\":\"Returns the total supply of token of type `id`. /**\"}},\"notice\":\"The Liquidity Book Pair contract is the core contract of the Liquidity Book protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBPair.sol\":\"LBPair\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract ILBFactory","name":"factory_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"BinHelper__CompositionFactorFlawed"},{"inputs":[],"type":"error","name":"BinHelper__LiquidityOverflow"},{"inputs":[],"type":"error","name":"BinHelper__MaxLiquidityPerBinExceeded"},{"inputs":[],"type":"error","name":"FeeHelper__FeeTooLarge"},{"inputs":[],"type":"error","name":"Hooks__CallFailed"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"LBPair__AddressZero"},{"inputs":[],"type":"error","name":"LBPair__EmptyMarketConfigs"},{"inputs":[],"type":"error","name":"LBPair__FlashLoanCallbackFailed"},{"inputs":[],"type":"error","name":"LBPair__FlashLoanInsufficientAmount"},{"inputs":[],"type":"error","name":"LBPair__InsufficientAmountIn"},{"inputs":[],"type":"error","name":"LBPair__InsufficientAmountOut"},{"inputs":[],"type":"error","name":"LBPair__InvalidHooks"},{"inputs":[],"type":"error","name":"LBPair__InvalidInput"},{"inputs":[],"type":"error","name":"LBPair__InvalidStaticFeeParameters"},{"inputs":[],"type":"error","name":"LBPair__MaxTotalFeeExceeded"},{"inputs":[],"type":"error","name":"LBPair__OnlyFactory"},{"inputs":[],"type":"error","name":"LBPair__OnlyProtocolFeeRecipient"},{"inputs":[],"type":"error","name":"LBPair__OutOfLiquidity"},{"inputs":[],"type":"error","name":"LBPair__TokenNotSupported"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"LBPair__ZeroAmount"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"LBPair__ZeroAmountsOut"},{"inputs":[],"type":"error","name":"LBPair__ZeroBorrowAmount"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"type":"error","name":"LBPair__ZeroShares"},{"inputs":[],"type":"error","name":"LBToken__AddressThisOrZero"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__BurnExceedsBalance"},{"inputs":[],"type":"error","name":"LBToken__InvalidLength"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"LBToken__SelfApproval"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"LBToken__SpenderNotApproved"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__TransferExceedsBalance"},{"inputs":[],"type":"error","name":"LiquidityConfigurations__InvalidConfig"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"OracleHelper__InvalidOracleId"},{"inputs":[],"type":"error","name":"OracleHelper__LookUpTimestampTooOld"},{"inputs":[],"type":"error","name":"OracleHelper__NewLengthTooSmall"},{"inputs":[],"type":"error","name":"PackedUint128Math__AddOverflow"},{"inputs":[],"type":"error","name":"PackedUint128Math__MultiplierTooLarge"},{"inputs":[],"type":"error","name":"PackedUint128Math__SubUnderflow"},{"inputs":[],"type":"error","name":"PairParametersHelper__InvalidParameter"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds128Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds40Bits"},{"inputs":[],"type":"error","name":"TokenHelper__TransferFailed"},{"inputs":[],"type":"error","name":"Uint128x128Math__LogUnderflow"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulShiftOverflow"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address","indexed":true},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"CollectedProtocolFees","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint24","name":"id","type":"uint24","indexed":false},{"internalType":"bytes32","name":"totalFees","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"CompositionFees","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"bytes32[]","name":"amounts","type":"bytes32[]","indexed":false}],"type":"event","name":"DepositedToBins","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"contract ILBFlashLoanCallback","name":"receiver","type":"address","indexed":true},{"internalType":"uint24","name":"activeId","type":"uint24","indexed":false},{"internalType":"bytes32","name":"amounts","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"totalFees","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"FlashLoan","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint24","name":"idReference","type":"uint24","indexed":false},{"internalType":"uint24","name":"volatilityReference","type":"uint24","indexed":false}],"type":"event","name":"ForcedDecay","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bytes32","name":"hooksParameters","type":"bytes32","indexed":false}],"type":"event","name":"HooksParametersSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint16","name":"oracleLength","type":"uint16","indexed":false}],"type":"event","name":"OracleLengthIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint16","name":"baseFactor","type":"uint16","indexed":false},{"internalType":"uint16","name":"filterPeriod","type":"uint16","indexed":false},{"internalType":"uint16","name":"decayPeriod","type":"uint16","indexed":false},{"internalType":"uint16","name":"reductionFactor","type":"uint16","indexed":false},{"internalType":"uint24","name":"variableFeeControl","type":"uint24","indexed":false},{"internalType":"uint16","name":"protocolShare","type":"uint16","indexed":false},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24","indexed":false}],"type":"event","name":"StaticFeeParametersSet","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint24","name":"id","type":"uint24","indexed":false},{"internalType":"bytes32","name":"amountsIn","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"amountsOut","type":"bytes32","indexed":false},{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24","indexed":false},{"internalType":"bytes32","name":"totalFees","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"protocolFees","type":"bytes32","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"bytes32[]","name":"amounts","type":"bytes32[]","indexed":false}],"type":"event","name":"WithdrawnFromBins","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"approveForAll"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"batchBalances","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"batchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bytes32[]","name":"amounts","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees","outputs":[{"internalType":"bytes32","name":"collectedProtocolFees","type":"bytes32"}]},{"inputs":[{"internalType":"contract ILBFlashLoanCallback","name":"receiver","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"forceDecay"},{"inputs":[],"stateMutability":"view","type":"function","name":"getActiveId","outputs":[{"internalType":"uint24","name":"activeId","type":"uint24"}]},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getBin","outputs":[{"internalType":"uint128","name":"binReserveX","type":"uint128"},{"internalType":"uint128","name":"binReserveY","type":"uint128"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getBinStep","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFactory","outputs":[{"internalType":"contract ILBFactory","name":"factory","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getIdFromPrice","outputs":[{"internalType":"uint24","name":"id","type":"uint24"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBHooksParameters","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getNextNonEmptyBin","outputs":[{"internalType":"uint24","name":"nextId","type":"uint24"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOracleParameters","outputs":[{"internalType":"uint8","name":"sampleLifetime","type":"uint8"},{"internalType":"uint16","name":"size","type":"uint16"},{"internalType":"uint16","name":"activeSize","type":"uint16"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint40","name":"firstTimestamp","type":"uint40"}]},{"inputs":[{"internalType":"uint40","name":"lookupTimestamp","type":"uint40"}],"stateMutability":"view","type":"function","name":"getOracleSampleAt","outputs":[{"internalType":"uint64","name":"cumulativeId","type":"uint64"},{"internalType":"uint64","name":"cumulativeVolatility","type":"uint64"},{"internalType":"uint64","name":"cumulativeBinCrossed","type":"uint64"}]},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"pure","type":"function","name":"getPriceFromId","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getProtocolFees","outputs":[{"internalType":"uint128","name":"protocolFeeX","type":"uint128"},{"internalType":"uint128","name":"protocolFeeY","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getReserves","outputs":[{"internalType":"uint128","name":"reserveX","type":"uint128"},{"internalType":"uint128","name":"reserveY","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStaticFeeParameters","outputs":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}]},{"inputs":[{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapIn","outputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"uint128","name":"amountOutLeft","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapOut","outputs":[{"internalType":"uint128","name":"amountInLeft","type":"uint128"},{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getTokenX","outputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getTokenY","outputs":[{"internalType":"contract IERC20","name":"tokenY","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getVariableFeeParameters","outputs":[{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"},{"internalType":"uint24","name":"idReference","type":"uint24"},{"internalType":"uint40","name":"timeOfLastUpdate","type":"uint40"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint16","name":"newLength","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"increaseOracleLength"},{"inputs":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"activeId","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"address","name":"refundTo","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"},{"internalType":"bytes32","name":"amountsLeft","type":"bytes32"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setHooksParameters"},{"inputs":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setStaticFeeParameters"},{"inputs":[{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"bytes32","name":"amountsOut","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"approveForAll(address,bool)":{"params":{"approved":"The boolean value to grant or revoke permission.","spender":"The address of the spender."}},"balanceOf(address,uint256)":{"params":{"account":"The address of the owner.","id":"The token id."},"returns":{"_0":"The amount of tokens of type `id` owned by `account`."}},"balanceOfBatch(address[],uint256[])":{"params":{"accounts":"The addresses of the owners.","ids":"The token ids."},"returns":{"batchBalances":"The balance for each (account, id) pair."}},"batchTransferFrom(address,address,uint256[],uint256[])":{"params":{"amounts":"The amounts of the tokens to transfer","from":"The address to transfer from","ids":"The ids of the tokens to transfer","to":"The address to transfer to"}},"burn(address,address,uint256[],uint256[])":{"params":{"amountsToBurn":"The amounts of LB tokens to burn for each bin","from":"The address that will burn the LB tokens","ids":"The ids of the bins from which to withdraw","to":"The address that will receive the tokens"},"returns":{"amounts":"The amounts of token X and token Y received by the user"}},"collectProtocolFees()":{"returns":{"collectedProtocolFees":"The amount of protocol fees collected"}},"constructor":{"details":"Constructor for the Liquidity Book Pair contract that sets the Liquidity Book Factory","params":{"factory_":"The Liquidity Book Factory"}},"flashLoan(address,bytes32,bytes)":{"params":{"amounts":"The encoded amounts of token X and token Y to flash loan","data":"Any data that will be passed to the callback function","receiver":"The contract that will receive the tokens and execute the callback function"}},"forceDecay()":{"details":"Can only be called by the factory"},"getActiveId()":{"details":"The active id is the id of the bin that is currently being used for swaps. The price of the active bin is the price of the Liquidity Book Pair and can be calculated as follows: `price = (1 + binStep / 10_000) ^ (activeId - 2^23)`","returns":{"activeId":"The active id of the Liquidity Book Pair"}},"getBin(uint24)":{"params":{"id":"The id of the bin"},"returns":{"binReserveX":"The reserve of token X in the bin","binReserveY":"The reserve of token Y in the bin"}},"getBinStep()":{"details":"The bin step is the increase in price between two consecutive bins, in basis points. For example, a bin step of 1 means that the price of the next bin is 0.01% higher than the price of the previous bin.","returns":{"_0":"binStep The bin step of the Liquidity Book Pair, in 10_000th"}},"getFactory()":{"returns":{"factory":"The Liquidity Book Factory"}},"getIdFromPrice(uint256)":{"details":"The id may be inaccurate due to rounding issues, always trust getPriceFromId rather than getIdFromPrice","params":{"price":"The price of y per x as a 128.128-binary fixed-point number"},"returns":{"id":"The id of the bin corresponding to this price"}},"getLBHooksParameters()":{"returns":{"_0":"The hooks parameters of the Liquidity Book Pair"}},"getNextNonEmptyBin(bool,uint24)":{"details":"The next non-empty bin is the bin with a higher (if swapForY is true) or lower (if swapForY is false) id that has a non-zero reserve of token X or Y.","params":{"id":"The id of the bin","swapForY":"Whether the swap is for token Y (true) or token X (false"},"returns":{"nextId":"The id of the next non-empty bin"}},"getOracleParameters()":{"returns":{"activeSize":"The active size of the oracle","firstTimestamp":"The first timestamp of the oracle, i.e. the timestamp of the oldest sample","lastUpdated":"The last updated timestamp of the oracle","sampleLifetime":"The sample lifetime for the oracle","size":"The size of the oracle"}},"getOracleSampleAt(uint40)":{"details":"The cumulative values are the cumulative id, the cumulative volatility and the cumulative bin crossed.","params":{"lookupTimestamp":"The timestamp at which to look up the cumulative values"},"returns":{"cumulativeBinCrossed":"The cumulative bin crossed of the Liquidity Book Pair at the given timestamp","cumulativeId":"The cumulative id of the Liquidity Book Pair at the given timestamp","cumulativeVolatility":"The cumulative volatility of the Liquidity Book Pair at the given timestamp"}},"getPriceFromId(uint24)":{"details":"This is the trusted source of price information, always trust this rather than getIdFromPrice","params":{"id":"The id of the bin"},"returns":{"price":"The price corresponding to this id"}},"getProtocolFees()":{"returns":{"protocolFeeX":"The protocol fees of token X","protocolFeeY":"The protocol fees of token Y"}},"getReserves()":{"returns":{"reserveX":"The reserve of token X","reserveY":"The reserve of token Y"}},"getStaticFeeParameters()":{"returns":{"baseFactor":"The base factor for the static fee","decayPeriod":"The decay period for the static fee","filterPeriod":"The filter period for the static fee","maxVolatilityAccumulator":"The maximum volatility accumulator for the static fee","protocolShare":"The protocol share for the static fee","reductionFactor":"The reduction factor for the static fee","variableFeeControl":"The variable fee control for the static fee"}},"getSwapIn(uint128,bool)":{"details":"If `amountOutLeft` is greater than zero, the swap in is not possible, and the maximum amount that can be swapped from `amountIn` is `amountOut - amountOutLeft`.","params":{"amountOut":"The amount of token X or Y to swap in","swapForY":"Whether the swap is for token Y (true) or token X (false)"},"returns":{"amountIn":"The amount of token X or Y that can be swapped in, including the fee","amountOutLeft":"The amount of token Y or X that cannot be swapped out","fee":"The fee of the swap"}},"getSwapOut(uint128,bool)":{"details":"If `amountInLeft` is greater than zero, the swap out is not possible, and the maximum amount that can be swapped is `amountIn - amountInLeft` for `amountOut`.","params":{"amountIn":"The amount of token X or Y to swap in","swapForY":"Whether the swap is for token Y (true) or token X (false)"},"returns":{"amountInLeft":"The amount of token X or Y that cannot be swapped in","amountOut":"The amount of token Y or X that can be swapped out","fee":"The fee of the swap"}},"getTokenX()":{"returns":{"tokenX":"The address of the token X"}},"getTokenY()":{"returns":{"tokenY":"The address of the token Y"}},"getVariableFeeParameters()":{"returns":{"idReference":"The id reference for the variable fee","timeOfLastUpdate":"The time of last update for the variable fee","volatilityAccumulator":"The volatility accumulator for the variable fee","volatilityReference":"The volatility reference for the variable fee"}},"increaseOracleLength(uint16)":{"params":{"newLength":"The new length of the oracle"}},"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)":{"details":"Can only be called by the Liquidity Book Factory","params":{"activeId":"The active id of the Liquidity Book Pair","baseFactor":"The base factor for the static fee","decayPeriod":"The decay period for the static fee","filterPeriod":"The filter period for the static fee","maxVolatilityAccumulator":"The max volatility accumulator for the static fee","protocolShare":"The protocol share for the static fee","reductionFactor":"The reduction factor for the static fee","variableFeeControl":"The variable fee control for the static fee"}},"isApprovedForAll(address,address)":{"params":{"owner":"The address of the owner.","spender":"The address of the spender."},"returns":{"_0":"True if `spender` is approved to transfer `owner`'s tokens."}},"mint(address,bytes32[],address)":{"details":"Any excess amount of token will be sent to the `to` address.","params":{"liquidityConfigs":"The encoded liquidity configurations, each one containing the id of the bin and the percentage of token X and token Y to add to the bin.","refundTo":"The address that will receive the excess amount of tokens","to":"The address that will receive the LB tokens"},"returns":{"amountsLeft":"The amounts of token X and token Y that were not added to the pool and were sent to `to`","amountsReceived":"The amounts of token X and token Y received by the pool","liquidityMinted":"The amounts of LB tokens minted for each bin"}},"name()":{"returns":{"_0":"The name of the token."}},"setHooksParameters(bytes32,bytes)":{"details":"Can only be called by the factory","params":{"hooksParameters":"The hooks parameter","onHooksSetData":"The data to be passed to the onHooksSet function of the hooks contract"}},"setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)":{"details":"Can only be called by the factory","params":{"baseFactor":"The base factor of the static fee","decayPeriod":"The decay period of the static fee","filterPeriod":"The filter period of the static fee","maxVolatilityAccumulator":"The max volatility accumulator of the static fee","protocolShare":"The protocol share of the static fee","reductionFactor":"The reduction factor of the static fee","variableFeeControl":"The variable fee control of the static fee"}},"swap(bool,address)":{"params":{"swapForY":"Whether you're swapping token X for token Y (true) or token Y for token X (false)","to":"The address to send the tokens to"},"returns":{"amountsOut":"The encoded amounts of token X and token Y sent to `to`"}},"symbol()":{"returns":{"_0":"The symbol of the token."}},"totalSupply(uint256)":{"details":"This is the amount of token of type `id` minted minus the amount burned.","params":{"id":"The token id."},"returns":{"_0":"The total supply of that token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"approveForAll(address,bool)":{"notice":"Grants or revokes permission to `spender` to transfer the caller's lbTokens, according to `approved`."},"balanceOf(address,uint256)":{"notice":"Returns the amount of tokens of type `id` owned by `account`."},"balanceOfBatch(address[],uint256[])":{"notice":"Return the balance of multiple (account/id) pairs."},"batchTransferFrom(address,address,uint256[],uint256[])":{"notice":"Overrides the batch transfer function to call the hooks before and after the transfer"},"burn(address,address,uint256[],uint256[])":{"notice":"Burn Liquidity Book (LB) tokens and withdraw tokens from the pool. This function will burn the tokens directly from the caller"},"collectProtocolFees()":{"notice":"Collect the protocol fees from the pool."},"flashLoan(address,bytes32,bytes)":{"notice":"Flash loan tokens from the pool to a receiver contract and execute a callback function. The receiver contract is expected to return the tokens plus a fee to this contract. The fee is calculated as a percentage of the amount borrowed, and is the same for both tokens."},"forceDecay()":{"notice":"Forces the decay of the volatility reference variables"},"getActiveId()":{"notice":"Returns the active id of the Liquidity Book Pair"},"getBin(uint24)":{"notice":"Returns the reserves of a bin"},"getBinStep()":{"notice":"Returns the bin step of the Liquidity Book Pair"},"getFactory()":{"notice":"Returns the Liquidity Book Factory"},"getIdFromPrice(uint256)":{"notice":"Returns the id corresponding to the given price"},"getLBHooksParameters()":{"notice":"Gets the hooks parameters of the Liquidity Book Pair"},"getNextNonEmptyBin(bool,uint24)":{"notice":"Returns the next non-empty bin"},"getOracleParameters()":{"notice":"Returns the oracle parameters of the Liquidity Book Pair"},"getOracleSampleAt(uint40)":{"notice":"Returns the cumulative values of the Liquidity Book Pair at a given timestamp"},"getPriceFromId(uint24)":{"notice":"Returns the price corresponding to the given id, as a 128.128-binary fixed-point number"},"getProtocolFees()":{"notice":"Returns the protocol fees of the Liquidity Book Pair"},"getReserves()":{"notice":"Returns the reserves of the Liquidity Book Pair This is the sum of the reserves of all bins, minus the protocol fees."},"getStaticFeeParameters()":{"notice":"Returns the static fee parameters of the Liquidity Book Pair"},"getSwapIn(uint128,bool)":{"notice":"Simulates a swap in."},"getSwapOut(uint128,bool)":{"notice":"Simulates a swap out."},"getTokenX()":{"notice":"Returns the token X of the Liquidity Book Pair"},"getTokenY()":{"notice":"Returns the token Y of the Liquidity Book Pair"},"getVariableFeeParameters()":{"notice":"Returns the variable fee parameters of the Liquidity Book Pair"},"increaseOracleLength(uint16)":{"notice":"Increase the length of the oracle used by the pool"},"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)":{"notice":"Initialize the Liquidity Book Pair fee parameters and active id"},"isApprovedForAll(address,address)":{"notice":"Returns true if `spender` is approved to transfer `owner`'s tokens or if `spender` is the `owner`."},"mint(address,bytes32[],address)":{"notice":"Mint liquidity tokens by depositing tokens into the pool. It will mint Liquidity Book (LB) tokens for each bin where the user adds liquidity. This function will not transfer the tokens from the caller, it is expected that the tokens have already been transferred to this contract through another contract, most likely the router. That is why this function shouldn't be called directly, but through one of the add liquidity functions of a router that will also perform safety checks."},"name()":{"notice":"Returns the name of the token."},"setHooksParameters(bytes32,bytes)":{"notice":"Sets the hooks parameter of the pool"},"setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)":{"notice":"Sets the static fee parameters of the pool"},"swap(bool,address)":{"notice":"Swap tokens iterating over the bins until the entire amount is swapped. Token X will be swapped for token Y if `swapForY` is true, and token Y for token X if `swapForY` is false. This function will not transfer the tokens from the caller, it is expected that the tokens have already been transferred to this contract through another contract, most likely the router. That is why this function shouldn't be called directly, but only through one of the swap functions of a router that will also perform safety checks, such as minimum amounts and slippage. The variable fee is updated throughout the swap, it increases with the number of bins crossed. The oracle is updated at the end of the swap."},"symbol()":{"notice":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply(uint256)":{"notice":"Returns the total supply of token of type `id`. /**"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LBPair.sol":"LBPair"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"}},"version":1},"id":44} \ No newline at end of file diff --git a/abi/LBPairFees.t.sol/LBPairFeesTest.json b/abi/LBPairFees.t.sol/LBPairFeesTest.json deleted file mode 100644 index 140fa971..00000000 --- a/abi/LBPairFees.t.sol/LBPairFeesTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_SwapInX","inputs":[{"name":"amountOut","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapInXAndY","inputs":[{"name":"amountXOut","type":"uint128","internalType":"uint128"},{"name":"amountYOut","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapInY","inputs":[{"name":"amountOut","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapInYandX","inputs":[{"name":"amountYOut","type":"uint128","internalType":"uint128"},{"name":"amountXOut","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapOutX","inputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapOutXAndY","inputs":[{"name":"amountXIn","type":"uint128","internalType":"uint128"},{"name":"amountYIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapOutY","inputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapOutYAndX","inputs":[{"name":"amountXIn","type":"uint128","internalType":"uint128"},{"name":"amountYIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CollectProtocolFeesAfterSwap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CollectProtocolFeesBothTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CollectProtocolFeesXTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CollectProtocolFeesYTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Fees2LPFlashloan","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_FeesX2LP","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_FeesY2LP","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_TotalFeeExceeded","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c051620228de620005c3600039600081816107bf015281816108050152818161091e015281816117ca015281816118120152818161185e01528181611bf30152818161312c0152818161317101528181613289015281816139410152818161398601528181613a9e015281816144b4015281816144fc01528181614548015281816148dd01528181615a6901528181615ab101528181615afd01528181615e5601528181617eb401528181617efa0152818161801301528181618f4c01528181618f9401528181618fe001526193390152600081816106e1015281816109a201528181610a6e01528181610b7d01528181610ff50152818161103b01528181611154015281816111e8015281816112ba0152818161197701528181611a0b01528181611d0e01528181611da201528181614661015281816146f5015281816149f801528181614a8c0152818161527a015281816152c0015281816153d90152818161546d0152818161553f01528181615c1601528181615caa01528181615f6f015281816160030152818161675201528181616798015281816168b10152818161694501528181616a17015281816170a5015281816172f301528181617427015281816174cd015281816175e001528181617dd4015281816180970152818161816301528181618272015281816190f90152818161918d01528181619452015281816194e60152818161a0740152818161a0ba0152818161a1d30152818161a267015261a33901526000818161051d015281816105700152818161060a01528181610c7601528181610cd101528181610dda015281816113840152818161144d015281816114e401528181611e71015281816120c10152818161215301528181614b5b01528181614dab01528181614e3d01528181615609015281816156d101528181615768015281816160d201528181616322015281816163b401528181616ae101528181616ba901528181616c4001528181616d9d01528181616de80152818161739901528181617472015281816176f30152818161781b0152818161836b015281816183c6015281816184cf015281816195b501528181619805015281816198970152818161a4030152818161a4cc0152818161a563015261b1d70152620228de6000f3fe60806040523480156200001157600080fd5b5060043610620002365760003560e01c8063889be5b71162000142578063b5508aa911620000cc578063befbe28b1162000097578063e20c9f71116200007a578063e20c9f711462000497578063ee2a4a0514620004a1578063fecaa22314620004b857600080fd5b8063befbe28b1462000469578063d7f975b4146200048057600080fd5b8063b5508aa91462000434578063b89e0233146200043e578063b96512431462000455578063ba414fa6146200045f57600080fd5b8063958493b8116200010d578063958493b814620003f25780639cac290a1462000409578063a7aa85e91462000413578063aabdebad146200042a57600080fd5b8063889be5b7146200038e578063891432ed14620003ba5780638eafd73414620003d1578063916a17c614620003e857600080fd5b80633e5e3c2311620001c45780634ab64e48116200018f5780634ab64e48146200033b57806366d9a9a014620003455780637b921e8f146200035e57806385226c81146200037557600080fd5b80633e5e3c2314620002f75780633f7286f4146200030157806345fc1e89146200030b57806349789ef9146200031557600080fd5b80631ed7831c11620002055780631ed7831c14620002a457806320c2ff2c14620002bd578063257fbfef14620002d45780632ade388014620002de57600080fd5b806301ffc9a7146200023b5780630a9254e4146200027757806313f1994a146200028357806317e5786d146200028d575b600080fd5b620002626200024c3660046200e10a565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b62000281620004cf565b005b62000281620006d7565b620002816200029e3660046200e14c565b62000ecf565b620002ae6200163f565b6040516200026e91906200e16c565b62000281620002ce3660046200e1bb565b620016a3565b62000281620022ee565b620002e8620028c5565b6040516200026e91906200e24d565b620002ae62002a13565b620002ae62002a75565b6200028162002ad7565b6200032c620003263660046200e325565b620030c4565b6040519081526020016200026e565b6200028162003119565b6200034f620042a3565b6040516200026e91906200e35d565b620002816200036f3660046200e1bb565b6200438d565b6200037f62004fcb565b6040516200026e91906200e414565b620003a56200039f3660046200e48e565b620050a5565b60405162ffffff90911681526020016200026e565b62000281620003cb3660046200e14c565b62005100565b62000281620003e23660046200e1bb565b620058bb565b6200034f62006542565b62000281620004033660046200e14c565b6200662c565b6200028162006d93565b62000281620004243660046200e4e5565b62007929565b6200028162007dca565b6200037f620085be565b620002626200044f3660046200e592565b62008698565b620002816200871b565b6200026262008ce4565b620002816200047a3660046200e1bb565b62008d9e565b62000281620004913660046200e5b2565b62009a25565b620002ae62009e98565b62000281620004b23660046200e14c565b62009efa565b62000281620004c93660046200e613565b6200a6b6565b620004d96200a9aa565b601c54601d54620004f7916001600160a01b0390811691166200bfd5565b602780546001600160a01b0319166001600160a01b0392909216918217905562000556907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a764000080600a8062007929565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116906370a0823190602401602060405180830381865afa158015620005c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e791906200e6a5565b158015620006835750601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116906370a0823190602401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068191906200e6a5565b155b620006d55760405162461bcd60e51b815260206004820152600860248201527f73657455703a3a3100000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b565b60275462000723907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a764000080600a8062007929565b602754604051631cee6cdf60e31b8152670de0b6b3a76400006004820181905260016024830152916000916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562000781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a791906200e6bf565b50601c54909250620007ee91506001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200085f57600080fd5b505af115801562000874573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620008d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fc91906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099791906200e6a5565b50602754620009e3907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562000a2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a5491906200e742565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015293955091935062000b639216906370a0823190602401602060405180830381865afa15801562000ac8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aee91906200e6a5565b600262000afc85886200e78c565b62000b0891906200e7c5565b62000b25906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a31000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000c6c9216906370a0823190602401602060405180830381865afa15801562000bd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bf791906200e6a5565b600262000c0584876200e804565b62000c1191906200e7c5565b62000c2e906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a32000000000000000000000000000000008152506200c002565b60275462000cb7907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000dc09216906370a0823190602401602060405180830381865afa15801562000d25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d4b91906200e6a5565b600262000d5985886200e78c565b62000d6591906200e7c5565b62000d82906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a33000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000ec99216906370a0823190602401602060405180830381865afa15801562000e2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e5491906200e6a5565b600262000e6284876200e804565b62000e6e91906200e7c5565b62000e8b906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a34000000000000000000000000000000008152506200c002565b50505050565b602754604051631cee6cdf60e31b81526001600160801b03831660048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562000f2d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5391906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0383161580159062000f8e57506001600160801b038416155b6040518263ffffffff1660e01b815260040162000faf911515815260200190565b60006040518083038186803b15801562000fc857600080fd5b505afa15801562000fdd573d6000803e3d6000fd5b5050601c546200102492506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006001600160801b0386166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200109557600080fd5b505af1158015620010aa573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200110c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113291906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620011a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011cd91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620012a09216906370a0823190602401602060405180830381865afa1580156200123c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126291906200e6a5565b60006040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a310000000000000000000000008152506200c074565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200137a9216906370a0823190602401602060405180830381865afa1580156200130e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133491906200e6a5565b826001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a320000000000000000000000008152506200c074565b602754620013c5907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa1580156200140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200143291906200e742565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620014a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014ca91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200153b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156191906200e6a5565b9050620015d982846001600160801b0316886001600160801b0316670de0b6b3a76400006200159191906200e7ee565b6200159d91906200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a330000000000000000000000008152506200c074565b6200163781620015fb6001600160801b038716670de0b6b3a76400006200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a340000000000000000000000008152506200c074565b505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200169957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200167a575b5050505050905090565b602754604051631cee6cdf60e31b81526001600160801b03831660048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562001701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200172791906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0384161580156200176357506000836001600160801b0316115b6040518263ffffffff1660e01b815260040162001784911515815260200190565b60006040518083038186803b1580156200179d57600080fd5b505afa158015620017b2573d6000803e3d6000fd5b5050601c54620017ff92506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462001847906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620018b857600080fd5b505af1158015620018cd573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200192f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200195591906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620019ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019f091906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262001acb9216906370a0823190602401602060405180830381865afa15801562001a5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a8591906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3100000000000000008152506200c074565b602754604051631cee6cdf60e31b81526001600160801b03861660048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562001b29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b4f91906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b03841615801562001b8b57506000836001600160801b0316115b6040518263ffffffff1660e01b815260040162001bac911515815260200190565b60006040518083038186803b15801562001bc557600080fd5b505afa15801562001bda573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf833981519152925063ca669fa79150602401600060405180830381600087803b15801562001c4f57600080fd5b505af115801562001c64573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b038b1660248201529116925063a9059cbb91506044016020604051808303816000875af115801562001cc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cec91906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001d61573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d8791906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200e6a5565b905062001e6781836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3200000000000000008152506200c0e3565b60275462001eb2907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562001efd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f2391906200e742565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482015293955091935062001fe7929116906370a0823190602401602060405180830381865afa15801562001f7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa191906200e6a5565b836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3300000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620020a79291909116906370a0823190602401602060405180830381865afa1580156200203b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206191906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3400000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562002113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200213991906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620021aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021d091906200e6a5565b90506200225e82856001600160801b03168a6001600160801b03168e6001600160801b0316670de0b6b3a76400006200220a91906200e7ee565b6200221691906200e827565b6200222291906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3500000000000000008152506200c074565b620022e181846001600160801b0316878d6001600160801b0316670de0b6b3a76400006200228d91906200e7ee565b6200229991906200e827565b620022a591906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3600000000000000008152506200c074565b5050505050505050505050565b6027546040516000916001600160a01b0316906200230c906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562002339573d6000803e3d6000fd5b50601c5490915062002365906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b601d546200238d906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620023de57600080fd5b505af1158015620023f3573d6000803e3d6000fd5b505060275460408051600060208201819052670de0b6b3a7640001828401527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608301526080808301919091528251808303909101815260a082019283905263ea3446bf60e01b9092526001600160a01b03909216935063ea3446bf9250620024959185917001000000000000000000000000000000009160a4016200e83d565b600060405180830381600087803b158015620024b057600080fd5b505af1158015620024c5573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200251f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254591906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200259f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025c591906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200261957600080fd5b505af11580156200262e573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002688573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026ae91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b038381166004830152620027459216906370a0823190602401602060405180830381865afa158015620026fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200272391906200e6a5565b600060405180606001604052806022815260200162022548602291396200c074565b601d546040516370a0823160e01b81526001600160a01b038381166004830152620027ef9216906370a0823190602401602060405180830381865afa15801562002793573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027b991906200e6a5565b620027c66001856200e78c565b6001600160801b0316604051806060016040528060228152602001620224df602291396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562002837573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200285d91906200e742565b809350819450505062002895836001600160801b0316600060405180606001604052806022815260200162022621602291396200c074565b62000ec9826001600160801b0316600160405180606001604052806022815260200162022501602291396200c074565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620029f25783829060005260206000200180546200295e906200e887565b80601f01602080910402602001604051908101604052809291908181526020018280546200298c906200e887565b8015620029dd5780601f10620029b157610100808354040283529160200191620029dd565b820191906000526020600020905b815481529060010190602001808311620029bf57829003601f168201915b5050505050815260200190600101906200293c565b505050508152505081526020019060010190620028e9565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001699576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200167a575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001699576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200167a575050505050905090565b6027546040516000916001600160a01b03169062002af5906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562002b22573d6000803e3d6000fd5b50601c5490915062002b4e906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b601d5462002b76906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562002bc757600080fd5b505af115801562002bdc573d6000803e3d6000fd5b50506027546001600160a01b0316915063ea3446bf90508270010000000000000000000000000000000160408051670de0b6b3a764000160208201819052918101919091527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a0016040516020818303038152906040526040518463ffffffff1660e01b815260040162002c80939291906200e83d565b600060405180830381600087803b15801562002c9b57600080fd5b505af115801562002cb0573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa15801562002d0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d3091906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002d8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db091906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562002e0457600080fd5b505af115801562002e19573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002e73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e9991906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b03838116600483015262002f449216906370a0823190602401602060405180830381865afa15801562002ee8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f0e91906200e6a5565b62002f1b6001866200e78c565b6001600160801b0316604051806060016040528060258152602001620226ae602591396200c074565b601d546040516370a0823160e01b81526001600160a01b03838116600483015262002fee9216906370a0823190602401602060405180830381865afa15801562002f92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fb891906200e6a5565b62002fc56001856200e78c565b6001600160801b031660405180606001604052806025815260200162022816602591396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562003036573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200305c91906200e742565b809350819450505062003094836001600160801b03166001604051806060016040528060258152602001620226f7602591396200c074565b62000ec9826001600160801b03166001604051806060016040528060258152602001620225b2602591396200c074565b6000808360ff16118015620030dc575060008260ff16115b620030f357620030ed82846200e8c3565b6200310d565b60016200310183856200e8c3565b6200310d91906200e8df565b60ff1690505b92915050565b601c546200315a906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a76400006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620031cb57600080fd5b505af1158015620031e0573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200326791906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620032dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200330291906200e6a5565b50602760009054906101000a90046001600160a01b03166001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200337d91906200e8fb565b50602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa158015620033c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033ef91906200e742565b91509150600082905062003428836001600160801b0316600060405180606001604052806024815260200162022454602491396200c11b565b62003458826001600160801b0316600060405180606001604052806024815260200162022643602491396200c074565b60275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa158015620034a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034c991906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354991906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200359d57600080fd5b505af1158015620035b2573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200360c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200363291906200e6a5565b5060275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa1580156200367e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036a491906200e742565b91509150620036e0826001600160801b0316866001600160801b031660405180606001604052806024815260200162022860602491396200c074565b62003718816001600160801b0316856001600160801b0316604051806060016040528060248152602001620227d0602491396200c074565b601c546040516370a0823160e01b81526001600160a01b038581166004830152620037c29216906370a0823190602401602060405180830381865afa15801562003766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200378c91906200e6a5565b6200379960018b6200e78c565b6001600160801b0316604051806060016040528060248152602001620227ac602491396200c074565b601d546040516370a0823160e01b81526001600160a01b038581166004830152620038589216906370a0823190602401602060405180830381865afa15801562003810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200383691906200e6a5565b60006040518060600160405280602481526020016202256a602491396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa158015620038a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038c691906200e742565b8098508199505050620038fe886001600160801b031660016040518060600160405280602481526020016202271c602491396200c074565b6200392e876001600160801b03166000604051806060016040528060248152602001620226d3602491396200c074565b601d546200396f906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a76400006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620039e057600080fd5b505af1158015620039f5573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003a56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a7c91906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562003af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b1791906200e6a5565b50602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562003b60573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b8691906200e742565b8098508199505050600087905062003bc3896001600160801b031660016040518060600160405280602481526020016202258e602491396200c074565b62003bf3886001600160801b03166000604051806060016040528060258152602001620225d7602591396200c11b565b60275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562003c3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c6191906200e742565b60405163ca669fa760e01b81526001600160a01b03871660048201529197509550600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562003cb757600080fd5b505af115801562003ccc573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003d26573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d4c91906200e6a5565b5060275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562003d95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dbb91906200e742565b809350819450505062003dfb836001600160801b0316876001600160801b031660405180606001604052806025815260200162022762602591396200c074565b62003e33826001600160801b0316866001600160801b03166040518060600160405280602581526020016202283b602591396200c074565b601c546040516370a0823160e01b81526001600160a01b03868116600483015262003edd9216906370a0823190602401602060405180830381865afa15801562003e81573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ea791906200e6a5565b62003eb460018a6200e78c565b6001600160801b0316604051806060016040528060258152602001620225fc602591396200c074565b601d546040516370a0823160e01b81526001600160a01b03868116600483015262003f879216906370a0823190602401602060405180830381865afa15801562003f2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f5191906200e6a5565b62003f5e60018b6200e78c565b6001600160801b031660405180606001604052806025815260200162022523602591396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562003fcf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ff591906200e742565b809950819a5050506200402d896001600160801b0316600160405180606001604052806025815260200162022884602591396200c074565b6200405d886001600160801b0316600160405180606001604052806025815260200162022689602591396200c074565b60405163ca669fa760e01b81526001600160a01b0385166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620040ae57600080fd5b505af1158015620040c3573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200411d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200414391906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b038681166004830152620041ee9216906370a0823190602401602060405180830381865afa15801562004192573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041b891906200e6a5565b620041c560018a6200e78c565b6001600160801b03166040518060600160405280602581526020016202249a602591396200c074565b601d546040516370a0823160e01b81526001600160a01b038681166004830152620042989216906370a0823190602401602060405180830381865afa1580156200423c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200426291906200e6a5565b6200426f6001846200e78c565b6001600160801b031660405180606001604052806025815260200162022787602591396200c074565b505050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200437457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620043355790505b50505050508152505081526020019060010190620042c7565b602754604051631cee6cdf60e31b81526001600160801b03841660048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa158015620043eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200441191906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0384161580156200444d57506000836001600160801b0316115b6040518263ffffffff1660e01b81526004016200446e911515815260200190565b60006040518083038186803b1580156200448757600080fd5b505afa1580156200449c573d6000803e3d6000fd5b5050601c54620044e992506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462004531906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620045a257600080fd5b505af1158015620045b7573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03891660248201529116925063a9059cbb91506044016020604051808303816000875af115801562004619573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200463f91906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620046b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046da91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620047b59216906370a0823190602401602060405180830381865afa15801562004749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200476f91906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3100000000000000008152506200c074565b602754604051631cee6cdf60e31b81526001600160801b03851660048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562004813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200483991906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0384161580156200487557506000836001600160801b0316115b6040518263ffffffff1660e01b815260040162004896911515815260200190565b60006040518083038186803b158015620048af57600080fd5b505afa158015620048c4573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf833981519152925063ca669fa79150602401600060405180830381600087803b1580156200493957600080fd5b505af11580156200494e573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b038a1660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620049b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049d691906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562004a4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a7191906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562004ade573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b0491906200e6a5565b905062004b5181836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3200000000000000008152506200c0e3565b60275462004b9c907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562004be7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c0d91906200e742565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482015293955091935062004cd1929116906370a0823190602401602060405180830381865afa15801562004c65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c8b91906200e6a5565b836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3300000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b03918216600482015262004d919291909116906370a0823190602401602060405180830381865afa15801562004d25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d4b91906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3400000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562004dfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e2391906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa15801562004e94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004eba91906200e6a5565b905062004f3f82856001600160801b0316878e6001600160801b0316670de0b6b3a764000062004eeb91906200e7ee565b62004ef791906200e827565b62004f0391906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3500000000000000008152506200c074565b620022e181846001600160801b03168a6001600160801b03168d6001600160801b0316670de0b6b3a764000062004f7791906200e7ee565b62004f8391906200e827565b62004f8f91906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3600000000000000008152506200c074565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a57838290600052602060002001805462005011906200e887565b80601f01602080910402602001604051908101604052809291908181526020018280546200503f906200e887565b8015620050905780601f10620050645761010080835404028352916020019162005090565b820191906000526020600020905b8154815290600101906020018083116200507257829003601f168201915b50505050508152602001906001019062004fef565b600080620050b98462ffffff87166200e7ee565b905060008360ff1611620050ce5780620050ea565b620050dd60ff8416826200e827565b620050ea9060016200e7ee565b9050620050f7816200c153565b95945050505050565b600080516020620224bf833981519152634c63e5626001600160801b038316158015906200513f5750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162005160911515815260200190565b60006040518083038186803b1580156200517957600080fd5b505afa1580156200518e573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063abcd783090604401606060405180830381865afa158015620051f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200521691906200e6bf565b509150915062005267816001600160801b031660006040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a31000000000000000000000000008152506200c074565b601d54620052a9906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200531a57600080fd5b505af11580156200532f573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562005391573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053b791906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200542c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200545291906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620055259216906370a0823190602401602060405180830381865afa158015620054c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620054e791906200e6a5565b60006040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a32000000000000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620055ff9216906370a0823190602401602060405180830381865afa15801562005593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620055b991906200e6a5565b846001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a33000000000000000000000000008152506200c074565b6027546200564a907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa15801562005691573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056b791906200e742565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929450600093509116906370a0823190602401602060405180830381865afa15801562005728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200574e91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620057bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057e591906200e6a5565b90506200584582620058096001600160801b038916670de0b6b3a76400006200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a34000000000000000000000000008152506200c074565b6200163781846001600160801b0316876001600160801b0316670de0b6b3a76400006200587391906200e7ee565b6200587f91906200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a35000000000000000000000000008152506200c074565b600080516020620224bf833981519152634c63e5626001600160801b03841615801590620058fa5750670de0b6b3a7640000846001600160801b031611155b80156200591057506000836001600160801b0316115b80156200592e5750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b81526004016200594f911515815260200190565b60006040518083038186803b1580156200596857600080fd5b505afa1580156200597d573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063abcd783090604401606060405180830381865afa158015620059df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a0591906200e6bf565b509150915062005a56816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a310000000000000000008152506200c074565b601c5462005a9e906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462005ae6906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562005b5757600080fd5b505af115801562005b6c573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562005bce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bf491906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562005c69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c8f91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262005d6a9216906370a0823190602401602060405180830381865afa15801562005cfe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d2491906200e6a5565b846001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a320000000000000000008152506200c074565b602754604051630abcd78360e41b81526001600160801b03861660048201526000602482018190529182916001600160a01b039091169063abcd783090604401606060405180830381865afa15801562005dc8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005dee91906200e6bf565b509150915062005e3f816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a330000000000000000008152506200c074565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562005eb057600080fd5b505af115801562005ec5573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562005f27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f4d91906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562005fc2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fe891906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562006055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200607b91906200e6a5565b9050620060c881886001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a340000000000000000008152506200c0e3565b60275462006113907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa1580156200615e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200618491906200e742565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482015293955091935062006248929116906370a0823190602401602060405180830381865afa158015620061dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200620291906200e6a5565b836001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a350000000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620063089291909116906370a0823190602401602060405180830381865afa1580156200629c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062c291906200e6a5565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a360000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562006374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200639a91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200640b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200643191906200e6a5565b9050620064b682856001600160801b0316878c6001600160801b0316670de0b6b3a76400006200646291906200e7ee565b6200646e91906200e827565b6200647a91906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a370000000000000000008152506200c074565b620022e181846001600160801b03168c6001600160801b03168a6001600160801b0316670de0b6b3a7640000620064ee91906200e7ee565b620064fa91906200e827565b6200650691906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a380000000000000000008152506200c074565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200661357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620065d45790505b5050505050815250508152602001906001019062006566565b602754604051631cee6cdf60e31b81526001600160801b03831660048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa1580156200668a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066b091906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b03831615801590620066eb57506001600160801b038416155b6040518263ffffffff1660e01b81526004016200670c911515815260200190565b60006040518083038186803b1580156200672557600080fd5b505afa1580156200673a573d6000803e3d6000fd5b5050601d546200678192506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006001600160801b0386166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620067f257600080fd5b505af115801562006807573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af115801562006869573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200688f91906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562006904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200692a91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620069fd9216906370a0823190602401602060405180830381865afa15801562006999573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069bf91906200e6a5565b60006040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a310000000000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262006ad79216906370a0823190602401602060405180830381865afa15801562006a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a9191906200e6a5565b826001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a320000000000000000000000008152506200c074565b60275462006b22907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa15801562006b69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b8f91906200e742565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929450600093509116906370a0823190602401602060405180830381865afa15801562006c00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c2691906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa15801562006c97573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006cbd91906200e6a5565b905062006d1d8262006ce16001600160801b038716670de0b6b3a76400006200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a330000000000000000000000008152506200c074565b6200163781846001600160801b0316886001600160801b0316670de0b6b3a764000062006d4b91906200e7ee565b62006d5791906200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a340000000000000000000000008152506200c074565b60275462006dde907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b60275462006e2a907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400008060018062007929565b6027546040516000916001600160a01b03169062006e48906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562006e75573d6000803e3d6000fd5b50601c5490915062006e9a906001600160a01b031682671bc16d674ec800006200bfee565b601d5462006ebb906001600160a01b031682671bc16d674ec800006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152670de0b6b3a764000190670de0b6b3a764000090600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562006f2057600080fd5b505af115801562006f35573d6000803e3d6000fd5b5050602754604080516001600160801b0387811660208301528616818301527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080808301919091528251808303909101815260a082019283905263ea3446bf60e01b9092526001600160a01b03909216935063ea3446bf925062006fc991879160019160a4016200e83d565b600060405180830381600087803b15801562006fe457600080fd5b505af115801562006ff9573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa15801562007053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200707991906200e742565b90925090506200708a82856200e78c565b6200709682856200e78c565b6027549195509350620070e7907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400008060018062007929565b60405163ca669fa760e01b81526001600160a01b0386166004820152670de0b6b3a764000190670de0b6b3a764000090600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200714c57600080fd5b505af115801562007161573d6000803e3d6000fd5b5050602754604080516001600160801b0387811660208301528616818301527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080808301919091528251808303909101815260a082019283905263ea3446bf60e01b9092526001600160a01b03909216935063ea3446bf9250620071f5918b9160019160a4016200e83d565b600060405180830381600087803b1580156200721057600080fd5b505af115801562007225573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200727f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072a591906200e742565b9092509050620072b686836200e78c565b620072c290856200e78c565b620072ce86836200e78c565b620072da90856200e78c565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262800000602483015293975091955060009450849350919091169062fdd58e90604401602060405180830381865afa1580156200735a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200738091906200e6a5565b602754604051627eeac760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526280000060248301529091169062fdd58e90604401602060405180830381865afa158015620073f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200741891906200e6a5565b602754919350915062007468907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400006001806200a6b6565b602754620074b3907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400006001806200a6b6565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620075c69216906370a0823190602401602060405180830381865afa15801562007521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200754791906200e6a5565b6200755383856200e7ee565b62007568856001600160801b0389166200e91b565b6200757491906200e935565b6200758890670de0b6b3a76400006200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3100000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620076d99216906370a0823190602401602060405180830381865afa15801562007634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200765a91906200e6a5565b6200766683856200e7ee565b6200767b856001600160801b0388166200e91b565b6200768791906200e935565b6200769b90670de0b6b3a76400006200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3200000000000000008152506200c002565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620078019216906370a0823190602401602060405180830381865afa15801562007747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776d91906200e6a5565b6200777983856200e7ee565b6200778e846001600160801b0389166200e91b565b6200779a91906200e935565b620077b76001600160801b038c16670de0b6b3a76400006200e7ee565b620077c391906200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3300000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620042989216906370a0823190602401602060405180830381865afa1580156200786f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200789591906200e6a5565b620078a183856200e7ee565b620078b6846001600160801b0388166200e91b565b620078c291906200e935565b620078df6001600160801b038b16670de0b6b3a76400006200e7ee565b620078eb91906200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3400000000000000008152506200c002565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200796a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200799091906200e867565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620079d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620079f991906200e867565b905062007a08828b886200bfee565b62007a15818b876200bfee565b600062007a238585620030c4565b905060008167ffffffffffffffff81111562007a435762007a436200e94c565b60405190808252806020026020018201604052801562007a6d578160200160208202803683370190505b50905060005b8281101562007b6c57600062007a8b8b8389620050a5565b905060008b62ffffff168262ffffff161015801562007aad575060008960ff16115b62007aba57600062007adb565b62007adb62007ad560ff8b16670de0b6b3a76400006200e935565b6200c17f565b905060008c62ffffff168362ffffff161115801562007afd575060008960ff16115b62007b0a57600062007b25565b62007b2562007ad560ff8b16670de0b6b3a76400006200e935565b905062007b348282856200c1ab565b85858151811062007b495762007b496200e962565b6020026020010181815250505050508062007b64906200e978565b905062007a73565b506040516303223eab60e11b81526001600160a01b038d166004820152600080516020620224bf833981519152906306447d5690602401600060405180830381600087803b15801562007bbe57600080fd5b505af115801562007bd3573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562007c27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c4d91906200e724565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562007c9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007cc491906200e724565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007d2457600080fd5b505af115801562007d39573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162007d6f939291906200e994565b6000604051808303816000875af115801562007d8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007db991908101906200ea55565b505050505050505050505050505050565b60275462007e16907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a764000080600a8062007929565b602754604051631cee6cdf60e31b8152670de0b6b3a764000060048201819052600060248301819052909290916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562007e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e9c91906200e6bf565b50601d5490925062007ee391506001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562007f5457600080fd5b505af115801562007f69573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562007fcb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ff191906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562008066573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200808c91906200e6a5565b50602754620080d8907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562008123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200814991906200e742565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152939550919350620082589216906370a0823190602401602060405180830381865afa158015620081bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620081e391906200e6a5565b6002620081f185876200e804565b620081fd91906200e7c5565b6200821a906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a31000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620083619216906370a0823190602401602060405180830381865afa158015620082c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620082ec91906200e6a5565b6002620082fa84886200e78c565b6200830691906200e7c5565b62008323906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a32000000000000000000000000000000008152506200c002565b602754620083ac907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620084b59216906370a0823190602401602060405180830381865afa1580156200841a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200844091906200e6a5565b60026200844e85876200e804565b6200845a91906200e7c5565b62008477906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a33000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000ec99216906370a0823190602401602060405180830381865afa15801562008523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200854991906200e6a5565b60026200855784886200e78c565b6200856391906200e7c5565b62008580906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a34000000000000000000000000000000008152506200c002565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a57838290600052602060002001805462008604906200e887565b80601f016020809104026020016040519081016040528092919081815260200182805462008632906200e887565b8015620086835780601f10620086575761010080835404028352916020019162008683565b820191906000526020600020905b8154815290600101906020018083116200866557829003601f168201915b505050505081526020019060010190620085e2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620086e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200870e91906200eb0a565b9998505050505050505050565b6027546040516000916001600160a01b03169062008739906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562008766573d6000803e3d6000fd5b50601c5490915062008792906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b601d54620087ba906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200880b57600080fd5b505af115801562008820573d6000803e3d6000fd5b50506027546001600160a01b0316915063ea3446bf905082600160408051670de0b6b3a7640001602082015260009181018290527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c26060820152608081019190915260a0016040516020818303038152906040526040518463ffffffff1660e01b8152600401620088b4939291906200e83d565b600060405180830381600087803b158015620088cf57600080fd5b505af1158015620088e4573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200893e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200896491906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620089be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089e491906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562008a3857600080fd5b505af115801562008a4d573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008aa7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008acd91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b03838116600483015262008b789216906370a0823190602401602060405180830381865afa15801562008b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008b4291906200e6a5565b62008b4f6001866200e78c565b6001600160801b031660405180606001604052806022815260200162022667602291396200c074565b601d546040516370a0823160e01b81526001600160a01b03838116600483015262008c0e9216906370a0823190602401602060405180830381865afa15801562008bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008bec91906200e6a5565b600060405180606001604052806022815260200162022478602291396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562008c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008c7c91906200e742565b809350819450505062008cb4836001600160801b03166001604051806060016040528060228152602001620227f4602291396200c074565b62000ec9826001600160801b0316600060405180606001604052806022815260200162022740602291396200c074565b60075460009060ff161562008cfd575060075460ff1690565b604051630667f9d760e41b8152600080516020620224bf833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562008d71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d9791906200e6a5565b1415905090565b600080516020620224bf833981519152634c63e5626001600160801b0383161580159062008ddd5750670de0b6b3a7640000836001600160801b031611155b801562008df357506000846001600160801b0316115b801562008e115750670de0b6b3a7640000846001600160801b031611155b6040518263ffffffff1660e01b815260040162008e32911515815260200190565b60006040518083038186803b15801562008e4b57600080fd5b505afa15801562008e60573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562008ec2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ee891906200e6bf565b509150915062008f39816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a310000000000000000008152506200c074565b601c5462008f81906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462008fc9906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200903a57600080fd5b505af11580156200904f573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620090b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620090d791906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200914c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200917291906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200924d9216906370a0823190602401602060405180830381865afa158015620091e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200920791906200e6a5565b846001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a320000000000000000008152506200c074565b602754604051630abcd78360e41b81526001600160801b03861660048201526001602482015260009182916001600160a01b039091169063abcd783090604401606060405180830381865afa158015620092ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620092d191906200e6bf565b509150915062009322816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a330000000000000000008152506200c074565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200939357600080fd5b505af1158015620093a8573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200940a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200943091906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620094a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620094cb91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562009538573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200955e91906200e6a5565b9050620095ab81886001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a340000000000000000008152506200c0e3565b602754620095f6907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562009641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200966791906200e742565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201529395509193506200972b929116906370a0823190602401602060405180830381865afa158015620096bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620096e591906200e6a5565b836001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a350000000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620097eb9291909116906370a0823190602401602060405180830381865afa1580156200977f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620097a591906200e6a5565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a360000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562009857573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200987d91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620098ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200991491906200e6a5565b9050620099a282856001600160801b03168c6001600160801b03168a6001600160801b0316670de0b6b3a76400006200994e91906200e7ee565b6200995a91906200e827565b6200996691906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a370000000000000000008152506200c074565b620022e181846001600160801b0316878c6001600160801b0316670de0b6b3a7640000620099d191906200e7ee565b620099dd91906200e827565b620099e991906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a380000000000000000008152506200c074565b604051632631f2b160e11b8152620fffff62ffffff831611156004820152600080516020620224bf83398151915290634c63e5629060240160006040518083038186803b15801562009a7657600080fd5b505afa15801562009a8b573d6000803e3d6000fd5b5050505060008461ffff168461ffff1662009aa791906200e91b565b62009ab8906402540be4006200e91b565b9050600060648462ffffff1660028562ffffff168961ffff1662009add91906200e91b565b62009ae991906200ec61565b62009af591906200e91b565b62009b029060636200e7ee565b62009b0e91906200e935565b9050600080516020620224bf833981519152634c63e56267016345785d8a000062009b3a84866200e7ee565b6040516001600160e01b031960e085901b1681529110600482015260240160006040518083038186803b15801562009b7157600080fd5b505afa15801562009b86573d6000803e3d6000fd5b5050601c54601d546040516bffffffffffffffffffffffff19606093841b811660208301529190921b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f08a901b16604882015260009250604a01905060408051601f198184030181529190526029548151602083012091925062009c20916001600160a01b039091169083906200c1e9565b602780546001600160a01b0319166001600160a01b039283161790556024805460405163ca669fa760e01b815292166004830152600080516020620224bf8339815191529163ca669fa79101600060405180830381600087803b15801562009c8757600080fd5b505af115801562009c9c573d6000803e3d6000fd5b50506027546040516347973bff60e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e48201526001600160a01b0390911692506347973bff915061010401600060405180830381600087803b15801562009d1957600080fd5b505af115801562009d2e573d6000803e3d6000fd5b5050604051630618f58760e51b81526372db9c0b60e11b6004820152600080516020620224bf833981519152925063c31eb0e09150602401600060405180830381600087803b15801562009d8157600080fd5b505af115801562009d96573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620224bf833981519152935063ca669fa7925001600060405180830381600087803b15801562009dee57600080fd5b505af115801562009e03573d6000803e3d6000fd5b5050602754604051633329c28d60e11b815261ffff8a166004820152600160248201819052604482018190526064820181905262ffffff808b16608484015260a4830191909152881660c48201526001600160a01b039091169250636653851a915060e401600060405180830381600087803b15801562009e8357600080fd5b505af1158015620022e1573d6000803e3d6000fd5b6060601380548060200260200160405190810160405280929190818152602001828054801562001699576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200167a575050505050905090565b600080516020620224bf833981519152634c63e5626001600160801b0383161580159062009f395750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162009f5a911515815260200190565b60006040518083038186803b15801562009f7357600080fd5b505afa15801562009f88573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562009fea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a01091906200e6bf565b50915091506200a061816001600160801b031660006040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a31000000000000000000000000008152506200c074565b601c546200a0a3906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200a11457600080fd5b505af11580156200a129573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200a18b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a1b191906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200a226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a24c91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200a31f9216906370a0823190602401602060405180830381865afa1580156200a2bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a2e191906200e6a5565b60006040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a32000000000000000000000000008152506200c074565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200a3f99216906370a0823190602401602060405180830381865afa1580156200a38d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a3b391906200e6a5565b846001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a33000000000000000000000000008152506200c074565b6027546200a444907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa1580156200a48b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a4b191906200e742565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200a523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a54991906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200a5ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a5e091906200e6a5565b90506200a65882846001600160801b0316876001600160801b0316670de0b6b3a76400006200a61091906200e7ee565b6200a61c91906200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a34000000000000000000000000008152506200c074565b62001637816200a67a6001600160801b038916670de0b6b3a76400006200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a35000000000000000000000000008152506200c074565b670de0b6b3a76400008311156200a7105760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f206869676800000000000000006044820152606401620006cc565b60006200a71e8383620030c4565b905060008167ffffffffffffffff8111156200a73e576200a73e6200e94c565b6040519080825280602002602001820160405280156200a768578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200a789576200a7896200e94c565b6040519080825280602002602001820160405280156200a7b3578160200160208202803683370190505b50905060005b838110156200a8c15760006200a7d1898388620050a5565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa1580156200a827573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a84d91906200e6a5565b90508162ffffff168584815181106200a86a576200a86a6200e962565b60209081029190910101526200a88a818a670de0b6b3a76400006200c2a6565b8484815181106200a89f576200a89f6200e962565b6020026020010181815250505050806200a8b9906200e978565b90506200a7b9565b5060405163ca669fa760e01b81526001600160a01b038b166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200a91357600080fd5b505af11580156200a928573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200a960908d908d90879087906004016200ecaf565b6000604051808303816000875af11580156200a980573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620022e191908101906200ed69565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200aaa757601c54604051600080516020620224bf8339815191529163b4d6c782916001600160a01b03909116906200aa10906200e073565b604051809103906000f0801580156200aa2d573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200aa729291906200eda2565b600060405180830381600087803b1580156200aa8d57600080fd5b505af11580156200aaa2573d6000803e3d6000fd5b505050505b60066040516200aab7906200e081565b60ff9091168152602001604051809103906000f0801580156200aade573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200ab10906200e081565b60ff9091168152602001604051809103906000f0801580156200ab37573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516008906200ab69906200e081565b60ff9091168152602001604051809103906000f0801580156200ab90573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200abc2906200e081565b60ff9091168152602001604051809103906000f0801580156200abe9573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516012906200ac1b906200e081565b60ff9091168152602001604051809103906000f0801580156200ac42573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516012906200ac74906200e081565b60ff9091168152602001604051809103906000f0801580156200ac9b573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200acca906200e08f565b604051809103906000f0801580156200ace7573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152600080516020620224bf8339815191529063c657c71890608401600060405180830381600087803b1580156200ad8857600080fd5b505af11580156200ad9d573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200ae1557600080fd5b505af11580156200ae2a573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200aea257600080fd5b505af11580156200aeb7573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200af2f57600080fd5b505af11580156200af44573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200afbc57600080fd5b505af11580156200afd1573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b04957600080fd5b505af11580156200b05e573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b0d057600080fd5b505af11580156200b0e5573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b17157600080fd5b505af11580156200b186573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200b20d906200e09d565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200b248573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b039290921691821790556040516200b276906200e0ab565b6001600160a01b039091168152602001604051809103906000f0801580156200b2a3573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200b30257600080fd5b505af11580156200b317573d6000803e3d6000fd5b505050506200b3256200c2d4565b6200b331600a6200c677565b602454602b54601c546040516001600160a01b039384169392831692909116906200b35c906200e0b9565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200b399573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200b3d4906200e0c7565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200b411573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152600080516020620224bf8339815191529063c657c71890608401600060405180830381600087803b1580156200b4b257600080fd5b505af11580156200b4c7573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b55357600080fd5b505af11580156200b568573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b5f757600080fd5b505af11580156200b60c573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b69857600080fd5b505af11580156200b6ad573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b73957600080fd5b505af11580156200b74e573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b7da57600080fd5b505af11580156200b7ef573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200b84a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b87091906200e724565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200b8c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b8ee91906200e724565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200b946573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b96c91906200e724565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200b9c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b9ea91906200e724565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ba42573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ba6891906200e724565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bac0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bae691906200e724565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bb3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bb6491906200e724565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bbbc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bbe291906200e724565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bc3a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bc6091906200e724565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bcb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bcde91906200e724565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bd36573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bd5c91906200e724565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bdb4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bdda91906200e724565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200be32573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200be5891906200e724565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200beb0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bed691906200e724565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bf2e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bf5491906200e724565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bfac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bfd291906200e724565b50565b60006200bfe78383628000006200c71e565b9392505050565b6200bffd83838360006200c72f565b505050565b604051637b88583160e11b8152600080516020620224bf8339815191529063f710b062906200c03c9087908790879087906004016200edc6565b60006040518083038186803b1580156200c05557600080fd5b505afa1580156200c06a573d6000803e3d6000fd5b5050505050505050565b6040516388b44c8560e01b8152600080516020620224bf833981519152906388b44c85906200c0ac908690869086906004016200eded565b60006040518083038186803b1580156200c0c557600080fd5b505afa1580156200c0da573d6000803e3d6000fd5b50505050505050565b604051630389490b60e61b8152600080516020620224bf8339815191529063e25242c0906200c0ac908690869086906004016200eded565b604051636cd1e26960e11b8152600080516020620224bf8339815191529063d9a3c4d2906200c0ac908690869086906004016200eded565b8062ffffff811681146200c17a57604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff811681146200c17a5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600060408303516020840351845180602087010180516002830161ffca8111156200c21c5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f5965050856200c28c5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60008060006200c2b786866200c92a565b915091506200c2ca86868685856200c949565b9695505050505050565b601c546001600160a01b0316156200c3495760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c32f57600080fd5b505af11580156200c344573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200c3be5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c3a457600080fd5b505af11580156200c3b9573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200c4335760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c41957600080fd5b505af11580156200c42e573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200c4a85760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c48e57600080fd5b505af11580156200c4a3573d6000803e3d6000fd5b505050505b6022546001600160a01b0316156200c51d5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c50357600080fd5b505af11580156200c518573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200c5925760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c57857600080fd5b505af11580156200c58d573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200c6075760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c5ed57600080fd5b505af11580156200c602573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620006d55760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c66257600080fd5b505af115801562000ec9573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200c70257600080fd5b505af11580156200c717573d6000803e3d6000fd5b5050505050565b60006200c1e1848484600a6200c9fb565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200c785916200ee0e565b600060405180830381855afa9150503d80600081146200c7c2576040519150601f19603f3d011682016040523d82523d6000602084013e6200c7c7565b606091505b509150506000818060200190518101906200c7e391906200e6a5565b90506200c81d846200c816876200c80f6370a0823160e01b6200c808600c8d6200ca91565b906200cab7565b906200cad5565b906200cafe565b8215620016375760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200c86891906200ee0e565b600060405180830381855afa9150503d80600081146200c8a5576040519150601f19603f3d011682016040523d82523d6000602084013e6200c8aa565b606091505b509150506000818060200190518101906200c8c691906200e6a5565b9050828610156200c8f1576200c8dd86846200e827565b6200c8e990826200e827565b90506200c90c565b6200c8fd83876200e827565b6200c90990826200e7ee565b90505b6200c06a816200c8166318160ddd60e01b6200c808600c8d6200ca91565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200c96f578383816200c966576200c9666200e7af565b049050620050f7565b8382106200c990576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af11580156200ca6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050f791906200e867565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200bfe7565b60038201805463ffffffff191660e083901c1790556000826200bfe7565b6002820180546001810182556000918252602082206001600160a01b038416910155826200bfe7565b6200cb0a82826200cb0e565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200cb8157602002820191906000526020600020905b8154815260200190600101908083116200cb6c575b505050505090506000836200cb96836200cf1b565b6040516020016200cba99291906200ee2c565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200cbfd9186918891016200ee5f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200cc38576200cc36876200cfcf565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200cc799187918991016200ee5f565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200ccc091906200ee0e565b600060405180830381855afa9150503d80600081146200ccfd576040519150601f19603f3d011682016040523d82523d6000602084013e6200cd02565b606091505b5091506200cd1f9050816200cd198860206200e91b565b6200cfdc565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150600080516020620224bf8339815191529063667f9d7090604401602060405180830381865afa1580156200cd81573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cda791906200e6a5565b90508082146200ce5e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620006cc565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052600080516020620224bf833981519152906370ca10bb90606401600060405180830381600087803b1580156200cebd57600080fd5b505af11580156200ced2573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200cf0760028b0160006200e0d5565b896004016000905550505050505050505050565b60606000825160206200cf2f91906200e91b565b67ffffffffffffffff8111156200cf4a576200cf4a6200e94c565b6040519080825280601f01601f1916602001820160405280156200cf75576020820181803683370190505b50905060005b83518110156200cfc85760008482815181106200cf9c576200cf9c6200e962565b6020026020010151905080826020026020018401525080806200cfbf906200e978565b9150506200cf7b565b5092915050565b600062003113826200d07e565b600080600060208551116200cff35784516200cff6565b60205b905060005b818110156200d074576200d0118160086200e91b565b866200d01e83886200e7ee565b815181106200d031576200d0316200e962565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200d06b816200e978565b9150506200cffb565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200d0f057602002820191906000526020600020905b8154815260200190600101908083116200d0db575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200d13c925085918791016200ee5f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200d1db576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200d1ab9185918791016200ee5f565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200d1e9836200df20565b6040516020016200d1fc9291906200ee2c565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d26c57600080fd5b505af11580156200d281573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200d2a291906200ee0e565b600060405180830381855afa9150503d80600081146200d2df576040519150601f19603f3d011682016040523d82523d6000602084013e6200d2e4565b606091505b5091506200d3019050816200d2fb8760206200e91b565b6200dfcd565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150600080516020620224bf833981519152906365bc9481906024016000604051808303816000875af11580156200d35e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200d38891908101906200ee9b565b50905080516001036200d72c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200d3e0576200d3e06200e962565b60200260200101516040518363ffffffff1660e01b81526004016200d41a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200d438573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d45e91906200e6a5565b9050806200d4c9577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200d49e576200d49e6200e962565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200d57e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620006cc565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200d5b69291906200ee5f565b60405160208183030381529060405280519060200120856000815181106200d5e2576200d5e26200e962565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200d63c576200d63c6200e962565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200d687918a918c91016200ee5f565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200d6f1918a918c91016200ee5f565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200dd95565b6001815111156200dd245760005b81518110156200dd1d5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200d78e576200d78e6200e962565b60200260200101516040518363ffffffff1660e01b81526004016200d7c89291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200d7e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d80c91906200e6a5565b9050806200d876577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200d84b576200d84b6200e962565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200d88557506200dd08565b8251811990600080516020620224bf833981519152906370ca10bb908c908790879081106200d8b8576200d8b86200e962565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200d91157600080fd5b505af11580156200d926573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200d94891906200ee0e565b600060405180830381855afa9150503d80600081146200d985576040519150601f19603f3d011682016040523d82523d6000602084013e6200d98a565b606091505b5090925090506200d9a2816200d2fb8c60206200e91b565b9650508080156200d9b257508186145b156200dc4a577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200d9f09291906200ee5f565b604051602081830303815290604052805190602001208888815181106200da1b576200da1b6200e962565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200da74576200da746200e962565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200dabf918d918f91016200ee5f565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200db4c9291906200ee5f565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200dbcf576200dbcf6200e962565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200dc2857600080fd5b505af11580156200dc3d573d6000803e3d6000fd5b505050505050506200dd1d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200dc92576200dc926200e962565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200dceb57600080fd5b505af11580156200dd00573d6000803e3d6000fd5b505050505050505b806200dd14816200e978565b9150506200d73a565b506200dd95565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620006cc565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200ddd99188918a91016200ee5f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200de765760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620006cc565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200dea760028a0160006200e0d5565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200deed9188918a91016200ee5f565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200df3491906200e91b565b67ffffffffffffffff8111156200df4f576200df4f6200e94c565b6040519080825280601f01601f1916602001820160405280156200df7a576020820181803683370190505b50905060005b83518110156200cfc85760008482815181106200dfa1576200dfa16200e962565b6020026020010151905080826020026020018401525080806200dfc4906200e978565b9150506200df80565b600080600060208551116200dfe45784516200dfe7565b60205b905060005b818110156200d074576200e0028160086200e91b565b866200e00f83886200e7ee565b815181106200e022576200e0226200e962565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200e05c816200e978565b9150506200dfec565b6106a8806200ef0783390190565b610b08806200f5af83390190565b610bfd80620100b783390190565b610c188062010cb483390190565b61319980620118cc83390190565b61615c8062014a6583390190565b614c80806201abc183390190565b612c13806201f84183390190565b50805460008255906000526020600020908101906200bfd291905b808211156200e10657600081556001016200e0f0565b5090565b6000602082840312156200e11d57600080fd5b81356001600160e01b0319811681146200bfe757600080fd5b6001600160801b03811681146200bfd257600080fd5b6000602082840312156200e15f57600080fd5b81356200bfe7816200e136565b6020808252825182820181905260009190848201906040850190845b818110156200e1af5783516001600160a01b0316835292840192918401916001016200e188565b50909695505050505050565b600080604083850312156200e1cf57600080fd5b82356200e1dc816200e136565b915060208301356200e1ee816200e136565b809150509250929050565b60005b838110156200e2165781810151838201526020016200e1fc565b50506000910152565b600081518084526200e2398160208601602086016200e1f9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200e30357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200e2ec57605f198985030183526200e2d98486516200e21f565b948e01949350918d01916001016200e2ba565b505050978a0197945050918801916001016200e274565b50919a9950505050505050505050565b803560ff811681146200c17a57600080fd5b600080604083850312156200e33957600080fd5b6200e344836200e313565b91506200e354602084016200e313565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200e40557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200e3ef5783516001600160e01b0319168252928b019260019290920191908b01906200e3c3565b50978a019795505050918701916001016200e385565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200e46d57603f198886030184526200e45a8583516200e21f565b945092850192908501906001016200e43b565b5092979650505050505050565b803562ffffff811681146200c17a57600080fd5b6000806000606084860312156200e4a457600080fd5b6200e4af846200e47a565b9250602084013591506200e4c6604085016200e313565b90509250925092565b6001600160a01b03811681146200bfd257600080fd5b600080600080600080600080610100898b0312156200e50357600080fd5b88356200e510816200e4cf565b975060208901356200e522816200e4cf565b965060408901356200e534816200e4cf565b95506200e54460608a016200e47a565b94506080890135935060a089013592506200e56260c08a016200e313565b91506200e57260e08a016200e313565b90509295985092959890939650565b61ffff811681146200bfd257600080fd5b6000602082840312156200e5a557600080fd5b81356200bfe7816200e581565b600080600080608085870312156200e5c957600080fd5b84356200e5d6816200e581565b935060208501356200e5e8816200e581565b92506200e5f8604086016200e47a565b91506200e608606086016200e47a565b905092959194509250565b600080600080600080600060e0888a0312156200e62f57600080fd5b87356200e63c816200e4cf565b965060208801356200e64e816200e4cf565b955060408801356200e660816200e4cf565b94506200e670606089016200e47a565b9350608088013592506200e68760a089016200e313565b91506200e69760c089016200e313565b905092959891949750929550565b6000602082840312156200e6b857600080fd5b5051919050565b6000806000606084860312156200e6d557600080fd5b83516200e6e2816200e136565b60208501519093506200e6f5816200e136565b60408501519092506200e708816200e136565b809150509250925092565b805180151581146200c17a57600080fd5b6000602082840312156200e73757600080fd5b6200bfe7826200e713565b600080604083850312156200e75657600080fd5b82516200e763816200e136565b60208401519092506200e1ee816200e136565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390808211156200cfc8576200cfc86200e776565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b03808416806200e7e2576200e7e26200e7af565b92169190910492915050565b808201808211156200311357620031136200e776565b6001600160801b038181168382160190808211156200cfc8576200cfc86200e776565b818103818111156200311357620031136200e776565b6001600160a01b0384168152826020820152606060408201526000620050f760608301846200e21f565b6000602082840312156200e87a57600080fd5b81516200bfe7816200e4cf565b600181811c908216806200e89c57607f821691505b6020821081036200e8bd57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff81811683821601908111156200311357620031136200e776565b60ff82811682821603908111156200311357620031136200e776565b6000602082840312156200e90e57600080fd5b81516200bfe7816200e581565b80820281158282048414176200311357620031136200e776565b6000826200e947576200e9476200e7af565b500490565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016200e98d576200e98d6200e776565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200e9e1578551835294830194918301916001016200e9c3565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200ea26576200ea266200e94c565b604052919050565b600067ffffffffffffffff8211156200ea4b576200ea4b6200e94c565b5060051b60200190565b6000806000606084860312156200ea6b57600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200ea9257600080fd5b8501601f810187136200eaa457600080fd5b80516200eabb6200eab5826200ea2e565b6200e9fa565b81815260059190911b820183019083810190898311156200eadb57600080fd5b928401925b828410156200eafb578351825292840192908401906200eae0565b80955050505050509250925092565b600080600080600080600080610100898b0312156200eb2857600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015191506200e57260e08a016200e713565b600181815b808511156200eba55781600019048211156200eb89576200eb896200e776565b808516156200eb9757918102915b93841c93908002906200eb69565b509250929050565b6000826200ebbe5750600162003113565b816200ebcd5750600062003113565b81600181146200ebe657600281146200ebf1576200ec11565b600191505062003113565b60ff8411156200ec05576200ec056200e776565b50506001821b62003113565b5060208310610133831016604e8410600b84101617156200ec36575081810a62003113565b6200ec4283836200eb64565b80600019048211156200ec59576200ec596200e776565b029392505050565b60006200bfe760ff8416836200ebad565b600081518084526020808501945080840160005b838110156200eca4578151875295820195908201906001016200ec86565b509495945050505050565b60006001600160a01b038087168352808616602084015250608060408301526200ecdd60808301856200ec72565b82810360608401526200ecf181856200ec72565b979650505050505050565b600082601f8301126200ed0e57600080fd5b815160206200ed216200eab5836200ea2e565b82815260059290921b840181019181810190868411156200ed4157600080fd5b8286015b848110156200ed5e57805183529183019183016200ed45565b509695505050505050565b6000602082840312156200ed7c57600080fd5b815167ffffffffffffffff8111156200ed9457600080fd5b6200c1e1848285016200ecfc565b6001600160a01b03831681526040602082015260006200c1e160408301846200e21f565b8481528360208201528260408201526080606082015260006200c2ca60808301846200e21f565b838152826020820152606060408201526000620050f760608301846200e21f565b600082516200ee228184602087016200e1f9565b9190910192915050565b6001600160e01b03198316815281516000906200ee518160048501602087016200e1f9565b919091016004019392505050565b825160009082906020808701845b838110156200ee8b578151855293820193908201906001016200ee6d565b5050948252509092019392505050565b600080604083850312156200eeaf57600080fd5b825167ffffffffffffffff808211156200eec857600080fd5b6200eed6868387016200ecfc565b935060208501519150808211156200eeed57600080fd5b506200eefc858286016200ecfc565b915050925092905056fe60a060405234801561001057600080fd5b506040516106a83803806106a883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161061e61008a600039600060b4015261061e6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631faa6b8714610030575b600080fd5b61004361003e36600461041f565b610055565b60405190815260200160405180910390f35b600080808080610067868801886104f9565b9296509094509250905060018160018111156100855761008561054c565b036101195760405163ea3446bf60e01b8152306004820152602481018a905260606044820152600060648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea3446bf90608401600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050505b6ffffffffffffffffffffffffffffffffe196001600160801b03851601610153576101506001600160801b03898116908b16610562565b93505b6ffffffffffffffffffffffffffffffffe196001600160801b038416016101955761017e8860801c90565b6101888a60801c90565b6101929190610562565b92505b6001600160801b038416156101c1576101c16001600160a01b038c16336001600160801b0387166101fc565b6001600160801b038316156101ed576101ed6001600160a01b038b16336001600160801b0386166101fc565b509a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610263908490610268565b505050565b600061027d6001600160a01b038416836102d0565b905080516000141580156102a25750808060200190518101906102a09190610597565b155b1561026357604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606102de838360006102e5565b9392505050565b60608147101561030a5760405163cd78605960e01b81523060048201526024016102c7565b600080856001600160a01b0316848660405161032691906105b9565b60006040518083038185875af1925050503d8060008114610363576040519150601f19603f3d011682016040523d82523d6000602084013e610368565b606091505b5091509150610378868383610382565b9695505050505050565b60608261039757610392826103de565b6102de565b81511580156103ae57506001600160a01b0384163b155b156103d757604051639996b31560e01b81526001600160a01b03851660048201526024016102c7565b50806102de565b8051156103ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461040757600080fd5b600080600080600080600060c0888a03121561043a57600080fd5b87356104458161040a565b965060208801356104558161040a565b955060408801356104658161040a565b9450606088013593506080880135925060a088013567ffffffffffffffff8082111561049057600080fd5b818a0191508a601f8301126104a457600080fd5b8135818111156104b357600080fd5b8b60208285010111156104c557600080fd5b60208301945080935050505092959891949750929550565b80356001600160801b03811681146104f457600080fd5b919050565b6000806000806080858703121561050f57600080fd5b610518856104dd565b9350610526602086016104dd565b92506040850135915060608501356002811061054157600080fd5b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b6001600160801b0381811683821601908082111561059057634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156105a957600080fd5b815180151581146102de57600080fd5b6000825160005b818110156105da57602081860181015185830152016105c0565b50600092019182525091905056fea2646970667358221220125c153a56401e84a7f2f5946cba34bab49c83562a8ec35a2e104e6efd5558a164736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a31746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a32746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a31370000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a32746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a34746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3134746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a31746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a36746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a39746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a34746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3130746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3133746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a33746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a32746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a31746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3136746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a31746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a38746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a33746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a37746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a34746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3131746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3138746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a35746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a34746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a33746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a32746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3132746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a33746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3135a26469706673582212204509dcc9e6991967b98b995e414d85a63406c1e9c48458c8c9e3cf74c4ad9f8964736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;141:22976:84;1812:17:93;;141:22976:84;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;141:22976:84;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;141:22976:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002365760003560e01c8063889be5b71162000142578063b5508aa911620000cc578063befbe28b1162000097578063e20c9f71116200007a578063e20c9f711462000497578063ee2a4a0514620004a1578063fecaa22314620004b857600080fd5b8063befbe28b1462000469578063d7f975b4146200048057600080fd5b8063b5508aa91462000434578063b89e0233146200043e578063b96512431462000455578063ba414fa6146200045f57600080fd5b8063958493b8116200010d578063958493b814620003f25780639cac290a1462000409578063a7aa85e91462000413578063aabdebad146200042a57600080fd5b8063889be5b7146200038e578063891432ed14620003ba5780638eafd73414620003d1578063916a17c614620003e857600080fd5b80633e5e3c2311620001c45780634ab64e48116200018f5780634ab64e48146200033b57806366d9a9a014620003455780637b921e8f146200035e57806385226c81146200037557600080fd5b80633e5e3c2314620002f75780633f7286f4146200030157806345fc1e89146200030b57806349789ef9146200031557600080fd5b80631ed7831c11620002055780631ed7831c14620002a457806320c2ff2c14620002bd578063257fbfef14620002d45780632ade388014620002de57600080fd5b806301ffc9a7146200023b5780630a9254e4146200027757806313f1994a146200028357806317e5786d146200028d575b600080fd5b620002626200024c3660046200e10a565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b62000281620004cf565b005b62000281620006d7565b620002816200029e3660046200e14c565b62000ecf565b620002ae6200163f565b6040516200026e91906200e16c565b62000281620002ce3660046200e1bb565b620016a3565b62000281620022ee565b620002e8620028c5565b6040516200026e91906200e24d565b620002ae62002a13565b620002ae62002a75565b6200028162002ad7565b6200032c620003263660046200e325565b620030c4565b6040519081526020016200026e565b6200028162003119565b6200034f620042a3565b6040516200026e91906200e35d565b620002816200036f3660046200e1bb565b6200438d565b6200037f62004fcb565b6040516200026e91906200e414565b620003a56200039f3660046200e48e565b620050a5565b60405162ffffff90911681526020016200026e565b62000281620003cb3660046200e14c565b62005100565b62000281620003e23660046200e1bb565b620058bb565b6200034f62006542565b62000281620004033660046200e14c565b6200662c565b6200028162006d93565b62000281620004243660046200e4e5565b62007929565b6200028162007dca565b6200037f620085be565b620002626200044f3660046200e592565b62008698565b620002816200871b565b6200026262008ce4565b620002816200047a3660046200e1bb565b62008d9e565b62000281620004913660046200e5b2565b62009a25565b620002ae62009e98565b62000281620004b23660046200e14c565b62009efa565b62000281620004c93660046200e613565b6200a6b6565b620004d96200a9aa565b601c54601d54620004f7916001600160a01b0390811691166200bfd5565b602780546001600160a01b0319166001600160a01b0392909216918217905562000556907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a764000080600a8062007929565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116906370a0823190602401602060405180830381865afa158015620005c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e791906200e6a5565b158015620006835750601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152909116906370a0823190602401602060405180830381865afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200068191906200e6a5565b155b620006d55760405162461bcd60e51b815260206004820152600860248201527f73657455703a3a3100000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b565b60275462000723907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a764000080600a8062007929565b602754604051631cee6cdf60e31b8152670de0b6b3a76400006004820181905260016024830152916000916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562000781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a791906200e6bf565b50601c54909250620007ee91506001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200085f57600080fd5b505af115801562000874573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620008d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fc91906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099791906200e6a5565b50602754620009e3907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562000a2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a5491906200e742565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015293955091935062000b639216906370a0823190602401602060405180830381865afa15801562000ac8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aee91906200e6a5565b600262000afc85886200e78c565b62000b0891906200e7c5565b62000b25906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a31000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000c6c9216906370a0823190602401602060405180830381865afa15801562000bd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bf791906200e6a5565b600262000c0584876200e804565b62000c1191906200e7c5565b62000c2e906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a32000000000000000000000000000000008152506200c002565b60275462000cb7907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000dc09216906370a0823190602401602060405180830381865afa15801562000d25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d4b91906200e6a5565b600262000d5985886200e78c565b62000d6591906200e7c5565b62000d82906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a33000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000ec99216906370a0823190602401602060405180830381865afa15801562000e2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e5491906200e6a5565b600262000e6284876200e804565b62000e6e91906200e7c5565b62000e8b906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657358324c503a3a34000000000000000000000000000000008152506200c002565b50505050565b602754604051631cee6cdf60e31b81526001600160801b03831660048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562000f2d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5391906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0383161580159062000f8e57506001600160801b038416155b6040518263ffffffff1660e01b815260040162000faf911515815260200190565b60006040518083038186803b15801562000fc857600080fd5b505afa15801562000fdd573d6000803e3d6000fd5b5050601c546200102492506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006001600160801b0386166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200109557600080fd5b505af1158015620010aa573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200110c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113291906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620011a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011cd91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620012a09216906370a0823190602401602060405180830381865afa1580156200123c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126291906200e6a5565b60006040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a310000000000000000000000008152506200c074565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200137a9216906370a0823190602401602060405180830381865afa1580156200130e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133491906200e6a5565b826001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a320000000000000000000000008152506200c074565b602754620013c5907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa1580156200140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200143291906200e742565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620014a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014ca91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200153b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156191906200e6a5565b9050620015d982846001600160801b0316886001600160801b0316670de0b6b3a76400006200159191906200e7ee565b6200159d91906200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a330000000000000000000000008152506200c074565b6200163781620015fb6001600160801b038716670de0b6b3a76400006200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574583a3a340000000000000000000000008152506200c074565b505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200169957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200167a575b5050505050905090565b602754604051631cee6cdf60e31b81526001600160801b03831660048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562001701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200172791906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0384161580156200176357506000836001600160801b0316115b6040518263ffffffff1660e01b815260040162001784911515815260200190565b60006040518083038186803b1580156200179d57600080fd5b505afa158015620017b2573d6000803e3d6000fd5b5050601c54620017ff92506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462001847906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620018b857600080fd5b505af1158015620018cd573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200192f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200195591906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620019ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019f091906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262001acb9216906370a0823190602401602060405180830381865afa15801562001a5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a8591906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3100000000000000008152506200c074565b602754604051631cee6cdf60e31b81526001600160801b03861660048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562001b29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b4f91906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b03841615801562001b8b57506000836001600160801b0316115b6040518263ffffffff1660e01b815260040162001bac911515815260200190565b60006040518083038186803b15801562001bc557600080fd5b505afa15801562001bda573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf833981519152925063ca669fa79150602401600060405180830381600087803b15801562001c4f57600080fd5b505af115801562001c64573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b038b1660248201529116925063a9059cbb91506044016020604051808303816000875af115801562001cc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cec91906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001d61573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d8791906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562001df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e1a91906200e6a5565b905062001e6781836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3200000000000000008152506200c0e3565b60275462001eb2907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562001efd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f2391906200e742565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482015293955091935062001fe7929116906370a0823190602401602060405180830381865afa15801562001f7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa191906200e6a5565b836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3300000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620020a79291909116906370a0823190602401602060405180830381865afa1580156200203b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206191906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3400000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562002113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200213991906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620021aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021d091906200e6a5565b90506200225e82856001600160801b03168a6001600160801b03168e6001600160801b0316670de0b6b3a76400006200220a91906200e7ee565b6200221691906200e827565b6200222291906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3500000000000000008152506200c074565b620022e181846001600160801b0316878d6001600160801b0316670de0b6b3a76400006200228d91906200e7ee565b6200229991906200e827565b620022a591906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757459416e64583a3a3600000000000000008152506200c074565b5050505050505050505050565b6027546040516000916001600160a01b0316906200230c906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562002339573d6000803e3d6000fd5b50601c5490915062002365906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b601d546200238d906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620023de57600080fd5b505af1158015620023f3573d6000803e3d6000fd5b505060275460408051600060208201819052670de0b6b3a7640001828401527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608301526080808301919091528251808303909101815260a082019283905263ea3446bf60e01b9092526001600160a01b03909216935063ea3446bf9250620024959185917001000000000000000000000000000000009160a4016200e83d565b600060405180830381600087803b158015620024b057600080fd5b505af1158015620024c5573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200251f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254591906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200259f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025c591906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200261957600080fd5b505af11580156200262e573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002688573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026ae91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b038381166004830152620027459216906370a0823190602401602060405180830381865afa158015620026fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200272391906200e6a5565b600060405180606001604052806022815260200162022548602291396200c074565b601d546040516370a0823160e01b81526001600160a01b038381166004830152620027ef9216906370a0823190602401602060405180830381865afa15801562002793573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027b991906200e6a5565b620027c66001856200e78c565b6001600160801b0316604051806060016040528060228152602001620224df602291396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562002837573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200285d91906200e742565b809350819450505062002895836001600160801b0316600060405180606001604052806022815260200162022621602291396200c074565b62000ec9826001600160801b0316600160405180606001604052806022815260200162022501602291396200c074565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620029f25783829060005260206000200180546200295e906200e887565b80601f01602080910402602001604051908101604052809291908181526020018280546200298c906200e887565b8015620029dd5780601f10620029b157610100808354040283529160200191620029dd565b820191906000526020600020905b815481529060010190602001808311620029bf57829003601f168201915b5050505050815260200190600101906200293c565b505050508152505081526020019060010190620028e9565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562001699576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200167a575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562001699576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200167a575050505050905090565b6027546040516000916001600160a01b03169062002af5906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562002b22573d6000803e3d6000fd5b50601c5490915062002b4e906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b601d5462002b76906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562002bc757600080fd5b505af115801562002bdc573d6000803e3d6000fd5b50506027546001600160a01b0316915063ea3446bf90508270010000000000000000000000000000000160408051670de0b6b3a764000160208201819052918101919091527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a0016040516020818303038152906040526040518463ffffffff1660e01b815260040162002c80939291906200e83d565b600060405180830381600087803b15801562002c9b57600080fd5b505af115801562002cb0573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa15801562002d0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d3091906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002d8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db091906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562002e0457600080fd5b505af115801562002e19573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002e73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e9991906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b03838116600483015262002f449216906370a0823190602401602060405180830381865afa15801562002ee8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f0e91906200e6a5565b62002f1b6001866200e78c565b6001600160801b0316604051806060016040528060258152602001620226ae602591396200c074565b601d546040516370a0823160e01b81526001600160a01b03838116600483015262002fee9216906370a0823190602401602060405180830381865afa15801562002f92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fb891906200e6a5565b62002fc56001856200e78c565b6001600160801b031660405180606001604052806025815260200162022816602591396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562003036573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200305c91906200e742565b809350819450505062003094836001600160801b03166001604051806060016040528060258152602001620226f7602591396200c074565b62000ec9826001600160801b03166001604051806060016040528060258152602001620225b2602591396200c074565b6000808360ff16118015620030dc575060008260ff16115b620030f357620030ed82846200e8c3565b6200310d565b60016200310183856200e8c3565b6200310d91906200e8df565b60ff1690505b92915050565b601c546200315a906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a76400006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620031cb57600080fd5b505af1158015620031e0573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200326791906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620032dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200330291906200e6a5565b50602760009054906101000a90046001600160a01b03166001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200337d91906200e8fb565b50602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa158015620033c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033ef91906200e742565b91509150600082905062003428836001600160801b0316600060405180606001604052806024815260200162022454602491396200c11b565b62003458826001600160801b0316600060405180606001604052806024815260200162022643602491396200c074565b60275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa158015620034a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034c991906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354991906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200359d57600080fd5b505af1158015620035b2573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200360c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200363291906200e6a5565b5060275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa1580156200367e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036a491906200e742565b91509150620036e0826001600160801b0316866001600160801b031660405180606001604052806024815260200162022860602491396200c074565b62003718816001600160801b0316856001600160801b0316604051806060016040528060248152602001620227d0602491396200c074565b601c546040516370a0823160e01b81526001600160a01b038581166004830152620037c29216906370a0823190602401602060405180830381865afa15801562003766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200378c91906200e6a5565b6200379960018b6200e78c565b6001600160801b0316604051806060016040528060248152602001620227ac602491396200c074565b601d546040516370a0823160e01b81526001600160a01b038581166004830152620038589216906370a0823190602401602060405180830381865afa15801562003810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200383691906200e6a5565b60006040518060600160405280602481526020016202256a602491396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa158015620038a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038c691906200e742565b8098508199505050620038fe886001600160801b031660016040518060600160405280602481526020016202271c602491396200c074565b6200392e876001600160801b03166000604051806060016040528060248152602001620226d3602491396200c074565b601d546200396f906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a76400006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620039e057600080fd5b505af1158015620039f5573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003a56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a7c91906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562003af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b1791906200e6a5565b50602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562003b60573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b8691906200e742565b8098508199505050600087905062003bc3896001600160801b031660016040518060600160405280602481526020016202258e602491396200c074565b62003bf3886001600160801b03166000604051806060016040528060258152602001620225d7602591396200c11b565b60275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562003c3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c6191906200e742565b60405163ca669fa760e01b81526001600160a01b03871660048201529197509550600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562003cb757600080fd5b505af115801562003ccc573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003d26573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d4c91906200e6a5565b5060275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562003d95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dbb91906200e742565b809350819450505062003dfb836001600160801b0316876001600160801b031660405180606001604052806025815260200162022762602591396200c074565b62003e33826001600160801b0316866001600160801b03166040518060600160405280602581526020016202283b602591396200c074565b601c546040516370a0823160e01b81526001600160a01b03868116600483015262003edd9216906370a0823190602401602060405180830381865afa15801562003e81573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ea791906200e6a5565b62003eb460018a6200e78c565b6001600160801b0316604051806060016040528060258152602001620225fc602591396200c074565b601d546040516370a0823160e01b81526001600160a01b03868116600483015262003f879216906370a0823190602401602060405180830381865afa15801562003f2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f5191906200e6a5565b62003f5e60018b6200e78c565b6001600160801b031660405180606001604052806025815260200162022523602591396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562003fcf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ff591906200e742565b809950819a5050506200402d896001600160801b0316600160405180606001604052806025815260200162022884602591396200c074565b6200405d886001600160801b0316600160405180606001604052806025815260200162022689602591396200c074565b60405163ca669fa760e01b81526001600160a01b0385166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620040ae57600080fd5b505af1158015620040c3573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200411d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200414391906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b038681166004830152620041ee9216906370a0823190602401602060405180830381865afa15801562004192573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041b891906200e6a5565b620041c560018a6200e78c565b6001600160801b03166040518060600160405280602581526020016202249a602591396200c074565b601d546040516370a0823160e01b81526001600160a01b038681166004830152620042989216906370a0823190602401602060405180830381865afa1580156200423c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200426291906200e6a5565b6200426f6001846200e78c565b6001600160801b031660405180606001604052806025815260200162022787602591396200c074565b505050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200437457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620043355790505b50505050508152505081526020019060010190620042c7565b602754604051631cee6cdf60e31b81526001600160801b03841660048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa158015620043eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200441191906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0384161580156200444d57506000836001600160801b0316115b6040518263ffffffff1660e01b81526004016200446e911515815260200190565b60006040518083038186803b1580156200448757600080fd5b505afa1580156200449c573d6000803e3d6000fd5b5050601c54620044e992506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462004531906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620045a257600080fd5b505af1158015620045b7573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03891660248201529116925063a9059cbb91506044016020604051808303816000875af115801562004619573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200463f91906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620046b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046da91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620047b59216906370a0823190602401602060405180830381865afa15801562004749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200476f91906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3100000000000000008152506200c074565b602754604051631cee6cdf60e31b81526001600160801b03851660048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562004813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200483991906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b0384161580156200487557506000836001600160801b0316115b6040518263ffffffff1660e01b815260040162004896911515815260200190565b60006040518083038186803b158015620048af57600080fd5b505afa158015620048c4573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf833981519152925063ca669fa79150602401600060405180830381600087803b1580156200493957600080fd5b505af11580156200494e573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b038a1660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620049b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049d691906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562004a4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a7191906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562004ade573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b0491906200e6a5565b905062004b5181836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3200000000000000008152506200c0e3565b60275462004b9c907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562004be7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c0d91906200e742565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482015293955091935062004cd1929116906370a0823190602401602060405180830381865afa15801562004c65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c8b91906200e6a5565b836001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3300000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b03918216600482015262004d919291909116906370a0823190602401602060405180830381865afa15801562004d25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d4b91906200e6a5565b826001600160801b03166040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3400000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562004dfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e2391906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa15801562004e94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004eba91906200e6a5565b905062004f3f82856001600160801b0316878e6001600160801b0316670de0b6b3a764000062004eeb91906200e7ee565b62004ef791906200e827565b62004f0391906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3500000000000000008152506200c074565b620022e181846001600160801b03168a6001600160801b03168d6001600160801b0316670de0b6b3a764000062004f7791906200e7ee565b62004f8391906200e827565b62004f8f91906200e827565b6040518060400160405280601881526020017f7465737446757a7a5f537761704f757458416e64593a3a3600000000000000008152506200c074565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a57838290600052602060002001805462005011906200e887565b80601f01602080910402602001604051908101604052809291908181526020018280546200503f906200e887565b8015620050905780601f10620050645761010080835404028352916020019162005090565b820191906000526020600020905b8154815290600101906020018083116200507257829003601f168201915b50505050508152602001906001019062004fef565b600080620050b98462ffffff87166200e7ee565b905060008360ff1611620050ce5780620050ea565b620050dd60ff8416826200e827565b620050ea9060016200e7ee565b9050620050f7816200c153565b95945050505050565b600080516020620224bf833981519152634c63e5626001600160801b038316158015906200513f5750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162005160911515815260200190565b60006040518083038186803b1580156200517957600080fd5b505afa1580156200518e573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063abcd783090604401606060405180830381865afa158015620051f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200521691906200e6bf565b509150915062005267816001600160801b031660006040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a31000000000000000000000000008152506200c074565b601d54620052a9906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200531a57600080fd5b505af11580156200532f573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562005391573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053b791906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200542c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200545291906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620055259216906370a0823190602401602060405180830381865afa158015620054c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620054e791906200e6a5565b60006040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a32000000000000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620055ff9216906370a0823190602401602060405180830381865afa15801562005593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620055b991906200e6a5565b846001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a33000000000000000000000000008152506200c074565b6027546200564a907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa15801562005691573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056b791906200e742565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929450600093509116906370a0823190602401602060405180830381865afa15801562005728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200574e91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620057bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620057e591906200e6a5565b90506200584582620058096001600160801b038916670de0b6b3a76400006200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a34000000000000000000000000008152506200c074565b6200163781846001600160801b0316876001600160801b0316670de0b6b3a76400006200587391906200e7ee565b6200587f91906200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e593a3a35000000000000000000000000008152506200c074565b600080516020620224bf833981519152634c63e5626001600160801b03841615801590620058fa5750670de0b6b3a7640000846001600160801b031611155b80156200591057506000836001600160801b0316115b80156200592e5750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b81526004016200594f911515815260200190565b60006040518083038186803b1580156200596857600080fd5b505afa1580156200597d573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063abcd783090604401606060405180830381865afa158015620059df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a0591906200e6bf565b509150915062005a56816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a310000000000000000008152506200c074565b601c5462005a9e906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462005ae6906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562005b5757600080fd5b505af115801562005b6c573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562005bce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bf491906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562005c69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c8f91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262005d6a9216906370a0823190602401602060405180830381865afa15801562005cfe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d2491906200e6a5565b846001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a320000000000000000008152506200c074565b602754604051630abcd78360e41b81526001600160801b03861660048201526000602482018190529182916001600160a01b039091169063abcd783090604401606060405180830381865afa15801562005dc8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005dee91906200e6bf565b509150915062005e3f816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a330000000000000000008152506200c074565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562005eb057600080fd5b505af115801562005ec5573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562005f27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f4d91906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562005fc2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fe891906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562006055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200607b91906200e6a5565b9050620060c881886001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a340000000000000000008152506200c0e3565b60275462006113907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa1580156200615e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200618491906200e742565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482015293955091935062006248929116906370a0823190602401602060405180830381865afa158015620061dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200620291906200e6a5565b836001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a350000000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620063089291909116906370a0823190602401602060405180830381865afa1580156200629c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062c291906200e6a5565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a360000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562006374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200639a91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200640b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200643191906200e6a5565b9050620064b682856001600160801b0316878c6001600160801b0316670de0b6b3a76400006200646291906200e7ee565b6200646e91906200e827565b6200647a91906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a370000000000000000008152506200c074565b620022e181846001600160801b03168c6001600160801b03168a6001600160801b0316670de0b6b3a7640000620064ee91906200e7ee565b620064fa91906200e827565b6200650691906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e58416e64593a3a380000000000000000008152506200c074565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200661357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620065d45790505b5050505050815250508152602001906001019062006566565b602754604051631cee6cdf60e31b81526001600160801b03831660048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa1580156200668a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066b091906200e6bf565b509092509050600080516020620224bf833981519152634c63e5626001600160801b03831615801590620066eb57506001600160801b038416155b6040518263ffffffff1660e01b81526004016200670c911515815260200190565b60006040518083038186803b1580156200672557600080fd5b505afa1580156200673a573d6000803e3d6000fd5b5050601d546200678192506001600160a01b031690507f00000000000000000000000000000000000000000000000000000000000000006001600160801b0386166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b158015620067f257600080fd5b505af115801562006807573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af115801562006869573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200688f91906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562006904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200692a91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620069fd9216906370a0823190602401602060405180830381865afa15801562006999573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069bf91906200e6a5565b60006040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a310000000000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262006ad79216906370a0823190602401602060405180830381865afa15801562006a6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a9191906200e6a5565b826001600160801b03166040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a320000000000000000000000008152506200c074565b60275462006b22907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa15801562006b69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b8f91906200e742565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929450600093509116906370a0823190602401602060405180830381865afa15801562006c00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c2691906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa15801562006c97573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006cbd91906200e6a5565b905062006d1d8262006ce16001600160801b038716670de0b6b3a76400006200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a330000000000000000000000008152506200c074565b6200163781846001600160801b0316886001600160801b0316670de0b6b3a764000062006d4b91906200e7ee565b62006d5791906200e827565b6040518060400160405280601481526020017f7465737446757a7a5f537761704f7574593a3a340000000000000000000000008152506200c074565b60275462006dde907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b60275462006e2a907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400008060018062007929565b6027546040516000916001600160a01b03169062006e48906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562006e75573d6000803e3d6000fd5b50601c5490915062006e9a906001600160a01b031682671bc16d674ec800006200bfee565b601d5462006ebb906001600160a01b031682671bc16d674ec800006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152670de0b6b3a764000190670de0b6b3a764000090600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562006f2057600080fd5b505af115801562006f35573d6000803e3d6000fd5b5050602754604080516001600160801b0387811660208301528616818301527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080808301919091528251808303909101815260a082019283905263ea3446bf60e01b9092526001600160a01b03909216935063ea3446bf925062006fc991879160019160a4016200e83d565b600060405180830381600087803b15801562006fe457600080fd5b505af115801562006ff9573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa15801562007053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200707991906200e742565b90925090506200708a82856200e78c565b6200709682856200e78c565b6027549195509350620070e7907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400008060018062007929565b60405163ca669fa760e01b81526001600160a01b0386166004820152670de0b6b3a764000190670de0b6b3a764000090600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200714c57600080fd5b505af115801562007161573d6000803e3d6000fd5b5050602754604080516001600160801b0387811660208301528616818301527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080808301919091528251808303909101815260a082019283905263ea3446bf60e01b9092526001600160a01b03909216935063ea3446bf9250620071f5918b9160019160a4016200e83d565b600060405180830381600087803b1580156200721057600080fd5b505af115801562007225573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200727f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072a591906200e742565b9092509050620072b686836200e78c565b620072c290856200e78c565b620072ce86836200e78c565b620072da90856200e78c565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262800000602483015293975091955060009450849350919091169062fdd58e90604401602060405180830381865afa1580156200735a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200738091906200e6a5565b602754604051627eeac760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526280000060248301529091169062fdd58e90604401602060405180830381865afa158015620073f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200741891906200e6a5565b602754919350915062007468907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400006001806200a6b6565b602754620074b3907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a76400006001806200a6b6565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620075c69216906370a0823190602401602060405180830381865afa15801562007521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200754791906200e6a5565b6200755383856200e7ee565b62007568856001600160801b0389166200e91b565b6200757491906200e935565b6200758890670de0b6b3a76400006200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3100000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620076d99216906370a0823190602401602060405180830381865afa15801562007634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200765a91906200e6a5565b6200766683856200e7ee565b6200767b856001600160801b0388166200e91b565b6200768791906200e935565b6200769b90670de0b6b3a76400006200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3200000000000000008152506200c002565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620078019216906370a0823190602401602060405180830381865afa15801562007747573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776d91906200e6a5565b6200777983856200e7ee565b6200778e846001600160801b0389166200e91b565b6200779a91906200e935565b620077b76001600160801b038c16670de0b6b3a76400006200e7ee565b620077c391906200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3300000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620042989216906370a0823190602401602060405180830381865afa1580156200786f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200789591906200e6a5565b620078a183856200e7ee565b620078b6846001600160801b0388166200e91b565b620078c291906200e935565b620078df6001600160801b038b16670de0b6b3a76400006200e7ee565b620078eb91906200e7ee565b60016040518060400160405280601881526020017f746573745f46656573324c50466c6173686c6f616e3a3a3400000000000000008152506200c002565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200796a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200799091906200e867565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620079d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620079f991906200e867565b905062007a08828b886200bfee565b62007a15818b876200bfee565b600062007a238585620030c4565b905060008167ffffffffffffffff81111562007a435762007a436200e94c565b60405190808252806020026020018201604052801562007a6d578160200160208202803683370190505b50905060005b8281101562007b6c57600062007a8b8b8389620050a5565b905060008b62ffffff168262ffffff161015801562007aad575060008960ff16115b62007aba57600062007adb565b62007adb62007ad560ff8b16670de0b6b3a76400006200e935565b6200c17f565b905060008c62ffffff168362ffffff161115801562007afd575060008960ff16115b62007b0a57600062007b25565b62007b2562007ad560ff8b16670de0b6b3a76400006200e935565b905062007b348282856200c1ab565b85858151811062007b495762007b496200e962565b6020026020010181815250505050508062007b64906200e978565b905062007a73565b506040516303223eab60e11b81526001600160a01b038d166004820152600080516020620224bf833981519152906306447d5690602401600060405180830381600087803b15801562007bbe57600080fd5b505af115801562007bd3573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562007c27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c4d91906200e724565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562007c9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007cc491906200e724565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007d2457600080fd5b505af115801562007d39573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162007d6f939291906200e994565b6000604051808303816000875af115801562007d8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007db991908101906200ea55565b505050505050505050505050505050565b60275462007e16907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a764000080600a8062007929565b602754604051631cee6cdf60e31b8152670de0b6b3a764000060048201819052600060248301819052909290916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562007e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e9c91906200e6bf565b50601d5490925062007ee391506001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562007f5457600080fd5b505af115801562007f69573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562007fcb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ff191906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562008066573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200808c91906200e6a5565b50602754620080d8907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562008123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200814991906200e742565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152939550919350620082589216906370a0823190602401602060405180830381865afa158015620081bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620081e391906200e6a5565b6002620081f185876200e804565b620081fd91906200e7c5565b6200821a906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a31000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620083619216906370a0823190602401602060405180830381865afa158015620082c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620082ec91906200e6a5565b6002620082fa84886200e78c565b6200830691906200e7c5565b62008323906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a32000000000000000000000000000000008152506200c002565b602754620083ac907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620084b59216906370a0823190602401602060405180830381865afa1580156200841a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200844091906200e6a5565b60026200844e85876200e804565b6200845a91906200e7c5565b62008477906001600160801b0316670de0b6b3a76400006200e827565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a33000000000000000000000000000000008152506200c002565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000ec99216906370a0823190602401602060405180830381865afa15801562008523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200854991906200e6a5565b60026200855784886200e78c565b6200856391906200e7c5565b62008580906001600160801b0316670de0b6b3a76400006200e7ee565b60026040518060400160405280601081526020017f746573745f4665657359324c503a3a34000000000000000000000000000000008152506200c002565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562002a0a57838290600052602060002001805462008604906200e887565b80601f016020809104026020016040519081016040528092919081815260200182805462008632906200e887565b8015620086835780601f10620086575761010080835404028352916020019162008683565b820191906000526020600020905b8154815290600101906020018083116200866557829003601f168201915b505050505081526020019060010190620085e2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620086e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200870e91906200eb0a565b9998505050505050505050565b6027546040516000916001600160a01b03169062008739906200e065565b6001600160a01b039091168152602001604051809103906000f08015801562008766573d6000803e3d6000fd5b50601c5490915062008792906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b601d54620087ba906001600160a01b0316826ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b0382166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200880b57600080fd5b505af115801562008820573d6000803e3d6000fd5b50506027546001600160a01b0316915063ea3446bf905082600160408051670de0b6b3a7640001602082015260009181018290527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c26060820152608081019190915260a0016040516020818303038152906040526040518463ffffffff1660e01b8152600401620088b4939291906200e83d565b600060405180830381600087803b158015620088cf57600080fd5b505af1158015620088e4573d6000803e3d6000fd5b50505050600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa1580156200893e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200896491906200e742565b915091506000602460009054906101000a90046001600160a01b03166001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620089be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620089e491906200e867565b60405163ca669fa760e01b81526001600160a01b0382166004820152909150600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b15801562008a3857600080fd5b505af115801562008a4d573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663a1af5b9a6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562008aa7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008acd91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b03838116600483015262008b789216906370a0823190602401602060405180830381865afa15801562008b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008b4291906200e6a5565b62008b4f6001866200e78c565b6001600160801b031660405180606001604052806022815260200162022667602291396200c074565b601d546040516370a0823160e01b81526001600160a01b03838116600483015262008c0e9216906370a0823190602401602060405180830381865afa15801562008bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008bec91906200e6a5565b600060405180606001604052806022815260200162022478602291396200c074565b602754604080516306c6fe7560e51b815281516001600160a01b039093169263d8dfcea0926004808401939192918290030181865afa15801562008c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008c7c91906200e742565b809350819450505062008cb4836001600160801b03166001604051806060016040528060228152602001620227f4602291396200c074565b62000ec9826001600160801b0316600060405180606001604052806022815260200162022740602291396200c074565b60075460009060ff161562008cfd575060075460ff1690565b604051630667f9d760e41b8152600080516020620224bf833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562008d71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d9791906200e6a5565b1415905090565b600080516020620224bf833981519152634c63e5626001600160801b0383161580159062008ddd5750670de0b6b3a7640000836001600160801b031611155b801562008df357506000846001600160801b0316115b801562008e115750670de0b6b3a7640000846001600160801b031611155b6040518263ffffffff1660e01b815260040162008e32911515815260200190565b60006040518083038186803b15801562008e4b57600080fd5b505afa15801562008e60573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562008ec2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ee891906200e6bf565b509150915062008f39816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a310000000000000000008152506200c074565b601c5462008f81906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b601d5462008fc9906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f10000000006200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200903a57600080fd5b505af11580156200904f573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620090b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620090d791906200e724565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200914c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200917291906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200924d9216906370a0823190602401602060405180830381865afa158015620091e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200920791906200e6a5565b846001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a320000000000000000008152506200c074565b602754604051630abcd78360e41b81526001600160801b03861660048201526001602482015260009182916001600160a01b039091169063abcd783090604401606060405180830381865afa158015620092ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620092d191906200e6bf565b509150915062009322816001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a330000000000000000008152506200c074565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200939357600080fd5b505af1158015620093a8573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200940a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200943091906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620094a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620094cb91906200e6a5565b50601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562009538573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200955e91906200e6a5565b9050620095ab81886001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a340000000000000000008152506200c0e3565b602754620095f6907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa15801562009641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200966791906200e742565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201529395509193506200972b929116906370a0823190602401602060405180830381865afa158015620096bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620096e591906200e6a5565b836001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a350000000000000000008152506200c074565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620097eb9291909116906370a0823190602401602060405180830381865afa1580156200977f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620097a591906200e6a5565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a360000000000000000008152506200c074565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009216906370a0823190602401602060405180830381865afa15801562009857573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200987d91906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa158015620098ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200991491906200e6a5565b9050620099a282856001600160801b03168c6001600160801b03168a6001600160801b0316670de0b6b3a76400006200994e91906200e7ee565b6200995a91906200e827565b6200996691906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a370000000000000000008152506200c074565b620022e181846001600160801b0316878c6001600160801b0316670de0b6b3a7640000620099d191906200e7ee565b620099dd91906200e827565b620099e991906200e827565b6040518060400160405280601781526020017f7465737446757a7a5f53776170496e59616e64583a3a380000000000000000008152506200c074565b604051632631f2b160e11b8152620fffff62ffffff831611156004820152600080516020620224bf83398151915290634c63e5629060240160006040518083038186803b15801562009a7657600080fd5b505afa15801562009a8b573d6000803e3d6000fd5b5050505060008461ffff168461ffff1662009aa791906200e91b565b62009ab8906402540be4006200e91b565b9050600060648462ffffff1660028562ffffff168961ffff1662009add91906200e91b565b62009ae991906200ec61565b62009af591906200e91b565b62009b029060636200e7ee565b62009b0e91906200e935565b9050600080516020620224bf833981519152634c63e56267016345785d8a000062009b3a84866200e7ee565b6040516001600160e01b031960e085901b1681529110600482015260240160006040518083038186803b15801562009b7157600080fd5b505afa15801562009b86573d6000803e3d6000fd5b5050601c54601d546040516bffffffffffffffffffffffff19606093841b811660208301529190921b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f08a901b16604882015260009250604a01905060408051601f198184030181529190526029548151602083012091925062009c20916001600160a01b039091169083906200c1e9565b602780546001600160a01b0319166001600160a01b039283161790556024805460405163ca669fa760e01b815292166004830152600080516020620224bf8339815191529163ca669fa79101600060405180830381600087803b15801562009c8757600080fd5b505af115801562009c9c573d6000803e3d6000fd5b50506027546040516347973bff60e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e48201526001600160a01b0390911692506347973bff915061010401600060405180830381600087803b15801562009d1957600080fd5b505af115801562009d2e573d6000803e3d6000fd5b5050604051630618f58760e51b81526372db9c0b60e11b6004820152600080516020620224bf833981519152925063c31eb0e09150602401600060405180830381600087803b15801562009d8157600080fd5b505af115801562009d96573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152600080516020620224bf833981519152935063ca669fa7925001600060405180830381600087803b15801562009dee57600080fd5b505af115801562009e03573d6000803e3d6000fd5b5050602754604051633329c28d60e11b815261ffff8a166004820152600160248201819052604482018190526064820181905262ffffff808b16608484015260a4830191909152881660c48201526001600160a01b039091169250636653851a915060e401600060405180830381600087803b15801562009e8357600080fd5b505af1158015620022e1573d6000803e3d6000fd5b6060601380548060200260200160405190810160405280929190818152602001828054801562001699576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200167a575050505050905090565b600080516020620224bf833981519152634c63e5626001600160801b0383161580159062009f395750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162009f5a911515815260200190565b60006040518083038186803b15801562009f7357600080fd5b505afa15801562009f88573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562009fea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a01091906200e6bf565b50915091506200a061816001600160801b031660006040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a31000000000000000000000000008152506200c074565b601c546200a0a3906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b0385166200bfee565b60405163ca669fa760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200a11457600080fd5b505af11580156200a129573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af11580156200a18b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a1b191906200e724565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200a226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a24c91906200e6a5565b50601c546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200a31f9216906370a0823190602401602060405180830381865afa1580156200a2bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a2e191906200e6a5565b60006040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a32000000000000000000000000008152506200c074565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200a3f99216906370a0823190602401602060405180830381865afa1580156200a38d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a3b391906200e6a5565b846001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a33000000000000000000000000008152506200c074565b6027546200a444907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600a806200a6b6565b602754604080516306c6fe7560e51b815281516000936001600160a01b03169263d8dfcea092600480820193918290030181865afa1580156200a48b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a4b191906200e742565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200a523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a54991906200e6a5565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156200a5ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a5e091906200e6a5565b90506200a65882846001600160801b0316876001600160801b0316670de0b6b3a76400006200a61091906200e7ee565b6200a61c91906200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a34000000000000000000000000008152506200c074565b62001637816200a67a6001600160801b038916670de0b6b3a76400006200e827565b6040518060400160405280601381526020017f7465737446757a7a5f53776170496e583a3a35000000000000000000000000008152506200c074565b670de0b6b3a76400008311156200a7105760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f206869676800000000000000006044820152606401620006cc565b60006200a71e8383620030c4565b905060008167ffffffffffffffff8111156200a73e576200a73e6200e94c565b6040519080825280602002602001820160405280156200a768578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200a789576200a7896200e94c565b6040519080825280602002602001820160405280156200a7b3578160200160208202803683370190505b50905060005b838110156200a8c15760006200a7d1898388620050a5565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa1580156200a827573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a84d91906200e6a5565b90508162ffffff168584815181106200a86a576200a86a6200e962565b60209081029190910101526200a88a818a670de0b6b3a76400006200c2a6565b8484815181106200a89f576200a89f6200e962565b6020026020010181815250505050806200a8b9906200e978565b90506200a7b9565b5060405163ca669fa760e01b81526001600160a01b038b166004820152600080516020620224bf8339815191529063ca669fa790602401600060405180830381600087803b1580156200a91357600080fd5b505af11580156200a928573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200a960908d908d90879087906004016200ecaf565b6000604051808303816000875af11580156200a980573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620022e191908101906200ed69565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200aaa757601c54604051600080516020620224bf8339815191529163b4d6c782916001600160a01b03909116906200aa10906200e073565b604051809103906000f0801580156200aa2d573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200aa729291906200eda2565b600060405180830381600087803b1580156200aa8d57600080fd5b505af11580156200aaa2573d6000803e3d6000fd5b505050505b60066040516200aab7906200e081565b60ff9091168152602001604051809103906000f0801580156200aade573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200ab10906200e081565b60ff9091168152602001604051809103906000f0801580156200ab37573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516008906200ab69906200e081565b60ff9091168152602001604051809103906000f0801580156200ab90573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200abc2906200e081565b60ff9091168152602001604051809103906000f0801580156200abe9573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516012906200ac1b906200e081565b60ff9091168152602001604051809103906000f0801580156200ac42573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516012906200ac74906200e081565b60ff9091168152602001604051809103906000f0801580156200ac9b573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200acca906200e08f565b604051809103906000f0801580156200ace7573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152600080516020620224bf8339815191529063c657c71890608401600060405180830381600087803b1580156200ad8857600080fd5b505af11580156200ad9d573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200ae1557600080fd5b505af11580156200ae2a573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200aea257600080fd5b505af11580156200aeb7573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200af2f57600080fd5b505af11580156200af44573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200afbc57600080fd5b505af11580156200afd1573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b04957600080fd5b505af11580156200b05e573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b0d057600080fd5b505af11580156200b0e5573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b17157600080fd5b505af11580156200b186573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200b20d906200e09d565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200b248573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b039290921691821790556040516200b276906200e0ab565b6001600160a01b039091168152602001604051809103906000f0801580156200b2a3573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200b30257600080fd5b505af11580156200b317573d6000803e3d6000fd5b505050506200b3256200c2d4565b6200b331600a6200c677565b602454602b54601c546040516001600160a01b039384169392831692909116906200b35c906200e0b9565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200b399573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200b3d4906200e0c7565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200b411573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152600080516020620224bf8339815191529063c657c71890608401600060405180830381600087803b1580156200b4b257600080fd5b505af11580156200b4c7573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b55357600080fd5b505af11580156200b568573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b5f757600080fd5b505af11580156200b60c573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b69857600080fd5b505af11580156200b6ad573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b73957600080fd5b505af11580156200b74e573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152600080516020620224bf833981519152925063c657c7189150608401600060405180830381600087803b1580156200b7da57600080fd5b505af11580156200b7ef573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200b84a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b87091906200e724565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200b8c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b8ee91906200e724565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200b946573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b96c91906200e724565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200b9c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b9ea91906200e724565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200ba42573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ba6891906200e724565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bac0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bae691906200e724565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bb3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bb6491906200e724565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bbbc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bbe291906200e724565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bc3a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bc6091906200e724565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bcb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bcde91906200e724565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bd36573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bd5c91906200e724565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bdb4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bdda91906200e724565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200be32573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200be5891906200e724565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200beb0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bed691906200e724565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bf2e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bf5491906200e724565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200bfac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bfd291906200e724565b50565b60006200bfe78383628000006200c71e565b9392505050565b6200bffd83838360006200c72f565b505050565b604051637b88583160e11b8152600080516020620224bf8339815191529063f710b062906200c03c9087908790879087906004016200edc6565b60006040518083038186803b1580156200c05557600080fd5b505afa1580156200c06a573d6000803e3d6000fd5b5050505050505050565b6040516388b44c8560e01b8152600080516020620224bf833981519152906388b44c85906200c0ac908690869086906004016200eded565b60006040518083038186803b1580156200c0c557600080fd5b505afa1580156200c0da573d6000803e3d6000fd5b50505050505050565b604051630389490b60e61b8152600080516020620224bf8339815191529063e25242c0906200c0ac908690869086906004016200eded565b604051636cd1e26960e11b8152600080516020620224bf8339815191529063d9a3c4d2906200c0ac908690869086906004016200eded565b8062ffffff811681146200c17a57604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff811681146200c17a5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600060408303516020840351845180602087010180516002830161ffca8111156200c21c5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f5965050856200c28c5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60008060006200c2b786866200c92a565b915091506200c2ca86868685856200c949565b9695505050505050565b601c546001600160a01b0316156200c3495760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c32f57600080fd5b505af11580156200c344573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200c3be5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c3a457600080fd5b505af11580156200c3b9573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200c4335760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c41957600080fd5b505af11580156200c42e573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200c4a85760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c48e57600080fd5b505af11580156200c4a3573d6000803e3d6000fd5b505050505b6022546001600160a01b0316156200c51d5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c50357600080fd5b505af11580156200c518573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200c5925760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c57857600080fd5b505af11580156200c58d573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200c6075760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c5ed57600080fd5b505af11580156200c602573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620006d55760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200c66257600080fd5b505af115801562000ec9573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200c70257600080fd5b505af11580156200c717573d6000803e3d6000fd5b5050505050565b60006200c1e1848484600a6200c9fb565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200c785916200ee0e565b600060405180830381855afa9150503d80600081146200c7c2576040519150601f19603f3d011682016040523d82523d6000602084013e6200c7c7565b606091505b509150506000818060200190518101906200c7e391906200e6a5565b90506200c81d846200c816876200c80f6370a0823160e01b6200c808600c8d6200ca91565b906200cab7565b906200cad5565b906200cafe565b8215620016375760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200c86891906200ee0e565b600060405180830381855afa9150503d80600081146200c8a5576040519150601f19603f3d011682016040523d82523d6000602084013e6200c8aa565b606091505b509150506000818060200190518101906200c8c691906200e6a5565b9050828610156200c8f1576200c8dd86846200e827565b6200c8e990826200e827565b90506200c90c565b6200c8fd83876200e827565b6200c90990826200e7ee565b90505b6200c06a816200c8166318160ddd60e01b6200c808600c8d6200ca91565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200c96f578383816200c966576200c9666200e7af565b049050620050f7565b8382106200c990576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af11580156200ca6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050f791906200e867565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200bfe7565b60038201805463ffffffff191660e083901c1790556000826200bfe7565b6002820180546001810182556000918252602082206001600160a01b038416910155826200bfe7565b6200cb0a82826200cb0e565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200cb8157602002820191906000526020600020905b8154815260200190600101908083116200cb6c575b505050505090506000836200cb96836200cf1b565b6040516020016200cba99291906200ee2c565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200cbfd9186918891016200ee5f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200cc38576200cc36876200cfcf565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200cc799187918991016200ee5f565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200ccc091906200ee0e565b600060405180830381855afa9150503d80600081146200ccfd576040519150601f19603f3d011682016040523d82523d6000602084013e6200cd02565b606091505b5091506200cd1f9050816200cd198860206200e91b565b6200cfdc565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150600080516020620224bf8339815191529063667f9d7090604401602060405180830381865afa1580156200cd81573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cda791906200e6a5565b90508082146200ce5e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620006cc565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052600080516020620224bf833981519152906370ca10bb90606401600060405180830381600087803b1580156200cebd57600080fd5b505af11580156200ced2573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200cf0760028b0160006200e0d5565b896004016000905550505050505050505050565b60606000825160206200cf2f91906200e91b565b67ffffffffffffffff8111156200cf4a576200cf4a6200e94c565b6040519080825280601f01601f1916602001820160405280156200cf75576020820181803683370190505b50905060005b83518110156200cfc85760008482815181106200cf9c576200cf9c6200e962565b6020026020010151905080826020026020018401525080806200cfbf906200e978565b9150506200cf7b565b5092915050565b600062003113826200d07e565b600080600060208551116200cff35784516200cff6565b60205b905060005b818110156200d074576200d0118160086200e91b565b866200d01e83886200e7ee565b815181106200d031576200d0316200e962565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200d06b816200e978565b9150506200cffb565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200d0f057602002820191906000526020600020905b8154815260200190600101908083116200d0db575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200d13c925085918791016200ee5f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200d1db576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200d1ab9185918791016200ee5f565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200d1e9836200df20565b6040516020016200d1fc9291906200ee2c565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d26c57600080fd5b505af11580156200d281573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200d2a291906200ee0e565b600060405180830381855afa9150503d80600081146200d2df576040519150601f19603f3d011682016040523d82523d6000602084013e6200d2e4565b606091505b5091506200d3019050816200d2fb8760206200e91b565b6200dfcd565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150600080516020620224bf833981519152906365bc9481906024016000604051808303816000875af11580156200d35e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200d38891908101906200ee9b565b50905080516001036200d72c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200d3e0576200d3e06200e962565b60200260200101516040518363ffffffff1660e01b81526004016200d41a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200d438573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d45e91906200e6a5565b9050806200d4c9577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200d49e576200d49e6200e962565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200d57e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620006cc565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200d5b69291906200ee5f565b60405160208183030381529060405280519060200120856000815181106200d5e2576200d5e26200e962565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200d63c576200d63c6200e962565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200d687918a918c91016200ee5f565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200d6f1918a918c91016200ee5f565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200dd95565b6001815111156200dd245760005b81518110156200dd1d5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200d78e576200d78e6200e962565b60200260200101516040518363ffffffff1660e01b81526004016200d7c89291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200d7e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d80c91906200e6a5565b9050806200d876577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200d84b576200d84b6200e962565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200d88557506200dd08565b8251811990600080516020620224bf833981519152906370ca10bb908c908790879081106200d8b8576200d8b86200e962565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200d91157600080fd5b505af11580156200d926573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200d94891906200ee0e565b600060405180830381855afa9150503d80600081146200d985576040519150601f19603f3d011682016040523d82523d6000602084013e6200d98a565b606091505b5090925090506200d9a2816200d2fb8c60206200e91b565b9650508080156200d9b257508186145b156200dc4a577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200d9f09291906200ee5f565b604051602081830303815290604052805190602001208888815181106200da1b576200da1b6200e962565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200da74576200da746200e962565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200dabf918d918f91016200ee5f565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200db4c9291906200ee5f565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200dbcf576200dbcf6200e962565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200dc2857600080fd5b505af11580156200dc3d573d6000803e3d6000fd5b505050505050506200dd1d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200dc92576200dc926200e962565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200dceb57600080fd5b505af11580156200dd00573d6000803e3d6000fd5b505050505050505b806200dd14816200e978565b9150506200d73a565b506200dd95565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620006cc565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200ddd99188918a91016200ee5f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200de765760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620006cc565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200dea760028a0160006200e0d5565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200deed9188918a91016200ee5f565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200df3491906200e91b565b67ffffffffffffffff8111156200df4f576200df4f6200e94c565b6040519080825280601f01601f1916602001820160405280156200df7a576020820181803683370190505b50905060005b83518110156200cfc85760008482815181106200dfa1576200dfa16200e962565b6020026020010151905080826020026020018401525080806200dfc4906200e978565b9150506200df80565b600080600060208551116200dfe45784516200dfe7565b60205b905060005b818110156200d074576200e0028160086200e91b565b866200e00f83886200e7ee565b815181106200e022576200e0226200e962565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200e05c816200e978565b9150506200dfec565b6106a8806200ef0783390190565b610b08806200f5af83390190565b610bfd80620100b783390190565b610c188062010cb483390190565b61319980620118cc83390190565b61615c8062014a6583390190565b614c80806201abc183390190565b612c13806201f84183390190565b50805460008255906000526020600020908101906200bfd291905b808211156200e10657600081556001016200e0f0565b5090565b6000602082840312156200e11d57600080fd5b81356001600160e01b0319811681146200bfe757600080fd5b6001600160801b03811681146200bfd257600080fd5b6000602082840312156200e15f57600080fd5b81356200bfe7816200e136565b6020808252825182820181905260009190848201906040850190845b818110156200e1af5783516001600160a01b0316835292840192918401916001016200e188565b50909695505050505050565b600080604083850312156200e1cf57600080fd5b82356200e1dc816200e136565b915060208301356200e1ee816200e136565b809150509250929050565b60005b838110156200e2165781810151838201526020016200e1fc565b50506000910152565b600081518084526200e2398160208601602086016200e1f9565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200e30357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200e2ec57605f198985030183526200e2d98486516200e21f565b948e01949350918d01916001016200e2ba565b505050978a0197945050918801916001016200e274565b50919a9950505050505050505050565b803560ff811681146200c17a57600080fd5b600080604083850312156200e33957600080fd5b6200e344836200e313565b91506200e354602084016200e313565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200e40557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200e3ef5783516001600160e01b0319168252928b019260019290920191908b01906200e3c3565b50978a019795505050918701916001016200e385565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200e46d57603f198886030184526200e45a8583516200e21f565b945092850192908501906001016200e43b565b5092979650505050505050565b803562ffffff811681146200c17a57600080fd5b6000806000606084860312156200e4a457600080fd5b6200e4af846200e47a565b9250602084013591506200e4c6604085016200e313565b90509250925092565b6001600160a01b03811681146200bfd257600080fd5b600080600080600080600080610100898b0312156200e50357600080fd5b88356200e510816200e4cf565b975060208901356200e522816200e4cf565b965060408901356200e534816200e4cf565b95506200e54460608a016200e47a565b94506080890135935060a089013592506200e56260c08a016200e313565b91506200e57260e08a016200e313565b90509295985092959890939650565b61ffff811681146200bfd257600080fd5b6000602082840312156200e5a557600080fd5b81356200bfe7816200e581565b600080600080608085870312156200e5c957600080fd5b84356200e5d6816200e581565b935060208501356200e5e8816200e581565b92506200e5f8604086016200e47a565b91506200e608606086016200e47a565b905092959194509250565b600080600080600080600060e0888a0312156200e62f57600080fd5b87356200e63c816200e4cf565b965060208801356200e64e816200e4cf565b955060408801356200e660816200e4cf565b94506200e670606089016200e47a565b9350608088013592506200e68760a089016200e313565b91506200e69760c089016200e313565b905092959891949750929550565b6000602082840312156200e6b857600080fd5b5051919050565b6000806000606084860312156200e6d557600080fd5b83516200e6e2816200e136565b60208501519093506200e6f5816200e136565b60408501519092506200e708816200e136565b809150509250925092565b805180151581146200c17a57600080fd5b6000602082840312156200e73757600080fd5b6200bfe7826200e713565b600080604083850312156200e75657600080fd5b82516200e763816200e136565b60208401519092506200e1ee816200e136565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390808211156200cfc8576200cfc86200e776565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b03808416806200e7e2576200e7e26200e7af565b92169190910492915050565b808201808211156200311357620031136200e776565b6001600160801b038181168382160190808211156200cfc8576200cfc86200e776565b818103818111156200311357620031136200e776565b6001600160a01b0384168152826020820152606060408201526000620050f760608301846200e21f565b6000602082840312156200e87a57600080fd5b81516200bfe7816200e4cf565b600181811c908216806200e89c57607f821691505b6020821081036200e8bd57634e487b7160e01b600052602260045260246000fd5b50919050565b60ff81811683821601908111156200311357620031136200e776565b60ff82811682821603908111156200311357620031136200e776565b6000602082840312156200e90e57600080fd5b81516200bfe7816200e581565b80820281158282048414176200311357620031136200e776565b6000826200e947576200e9476200e7af565b500490565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016200e98d576200e98d6200e776565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200e9e1578551835294830194918301916001016200e9c3565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200ea26576200ea266200e94c565b604052919050565b600067ffffffffffffffff8211156200ea4b576200ea4b6200e94c565b5060051b60200190565b6000806000606084860312156200ea6b57600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200ea9257600080fd5b8501601f810187136200eaa457600080fd5b80516200eabb6200eab5826200ea2e565b6200e9fa565b81815260059190911b820183019083810190898311156200eadb57600080fd5b928401925b828410156200eafb578351825292840192908401906200eae0565b80955050505050509250925092565b600080600080600080600080610100898b0312156200eb2857600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015191506200e57260e08a016200e713565b600181815b808511156200eba55781600019048211156200eb89576200eb896200e776565b808516156200eb9757918102915b93841c93908002906200eb69565b509250929050565b6000826200ebbe5750600162003113565b816200ebcd5750600062003113565b81600181146200ebe657600281146200ebf1576200ec11565b600191505062003113565b60ff8411156200ec05576200ec056200e776565b50506001821b62003113565b5060208310610133831016604e8410600b84101617156200ec36575081810a62003113565b6200ec4283836200eb64565b80600019048211156200ec59576200ec596200e776565b029392505050565b60006200bfe760ff8416836200ebad565b600081518084526020808501945080840160005b838110156200eca4578151875295820195908201906001016200ec86565b509495945050505050565b60006001600160a01b038087168352808616602084015250608060408301526200ecdd60808301856200ec72565b82810360608401526200ecf181856200ec72565b979650505050505050565b600082601f8301126200ed0e57600080fd5b815160206200ed216200eab5836200ea2e565b82815260059290921b840181019181810190868411156200ed4157600080fd5b8286015b848110156200ed5e57805183529183019183016200ed45565b509695505050505050565b6000602082840312156200ed7c57600080fd5b815167ffffffffffffffff8111156200ed9457600080fd5b6200c1e1848285016200ecfc565b6001600160a01b03831681526040602082015260006200c1e160408301846200e21f565b8481528360208201528260408201526080606082015260006200c2ca60808301846200e21f565b838152826020820152606060408201526000620050f760608301846200e21f565b600082516200ee228184602087016200e1f9565b9190910192915050565b6001600160e01b03198316815281516000906200ee518160048501602087016200e1f9565b919091016004019392505050565b825160009082906020808701845b838110156200ee8b578151855293820193908201906001016200ee6d565b5050948252509092019392505050565b600080604083850312156200eeaf57600080fd5b825167ffffffffffffffff808211156200eec857600080fd5b6200eed6868387016200ecfc565b935060208501519150808211156200eeed57600080fd5b506200eefc858286016200ecfc565b915050925092905056fe60a060405234801561001057600080fd5b506040516106a83803806106a883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161061e61008a600039600060b4015261061e6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631faa6b8714610030575b600080fd5b61004361003e36600461041f565b610055565b60405190815260200160405180910390f35b600080808080610067868801886104f9565b9296509094509250905060018160018111156100855761008561054c565b036101195760405163ea3446bf60e01b8152306004820152602481018a905260606044820152600060648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea3446bf90608401600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050505b6ffffffffffffffffffffffffffffffffe196001600160801b03851601610153576101506001600160801b03898116908b16610562565b93505b6ffffffffffffffffffffffffffffffffe196001600160801b038416016101955761017e8860801c90565b6101888a60801c90565b6101929190610562565b92505b6001600160801b038416156101c1576101c16001600160a01b038c16336001600160801b0387166101fc565b6001600160801b038316156101ed576101ed6001600160a01b038b16336001600160801b0386166101fc565b509a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610263908490610268565b505050565b600061027d6001600160a01b038416836102d0565b905080516000141580156102a25750808060200190518101906102a09190610597565b155b1561026357604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606102de838360006102e5565b9392505050565b60608147101561030a5760405163cd78605960e01b81523060048201526024016102c7565b600080856001600160a01b0316848660405161032691906105b9565b60006040518083038185875af1925050503d8060008114610363576040519150601f19603f3d011682016040523d82523d6000602084013e610368565b606091505b5091509150610378868383610382565b9695505050505050565b60608261039757610392826103de565b6102de565b81511580156103ae57506001600160a01b0384163b155b156103d757604051639996b31560e01b81526001600160a01b03851660048201526024016102c7565b50806102de565b8051156103ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461040757600080fd5b600080600080600080600060c0888a03121561043a57600080fd5b87356104458161040a565b965060208801356104558161040a565b955060408801356104658161040a565b9450606088013593506080880135925060a088013567ffffffffffffffff8082111561049057600080fd5b818a0191508a601f8301126104a457600080fd5b8135818111156104b357600080fd5b8b60208285010111156104c557600080fd5b60208301945080935050505092959891949750929550565b80356001600160801b03811681146104f457600080fd5b919050565b6000806000806080858703121561050f57600080fd5b610518856104dd565b9350610526602086016104dd565b92506040850135915060608501356002811061054157600080fd5b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b6001600160801b0381811683821601908082111561059057634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156105a957600080fd5b815180151581146102de57600080fd5b6000825160005b818110156105da57602081860181015185830152016105c0565b50600092019182525091905056fea2646970667358221220125c153a56401e84a7f2f5946cba34bab49c83562a8ec35a2e104e6efd5558a164736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a31746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a32746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a31370000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a32746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a34746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3134746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a31746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a36746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a39746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a34746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3130746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3133746573745f436f6c6c65637450726f746f636f6c4665657359546f6b656e733a3a33746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a32746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a31746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3136746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a31746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a38746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a33746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a37746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a34746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3131746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3138746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a35746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a34746573745f436f6c6c65637450726f746f636f6c4665657358546f6b656e733a3a33746573745f436f6c6c65637450726f746f636f6c46656573426f7468546f6b656e733a3a32746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3132746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a33746573745f436f6c6c65637450726f746f636f6c466565734166746572537761703a3a3135a26469706673582212204509dcc9e6991967b98b995e414d85a63406c1e9c48458c8c9e3cf74c4ad9f8964736f6c63430008140033","sourceMap":"141:22976:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;302:281:84;;;:::i;:::-;;11101:1226;;;:::i;2566:928::-;;;;;;:::i;:::-;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;9487:1608:84:-;;;;;;:::i;:::-;;:::i;16988:1030::-;;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;18024:1089:84:-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4844:25:105;;;4832:2;4817:18;12046:168:93;4698:177:105;19119:3010:84;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;7873:1608:84:-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;7950:8:105;7938:21;;;7920:40;;7908:2;7893:18;12220:205:93;7776:190:105;1579:981:84;;;;;;:::i;:::-;;:::i;4431:1715::-;;;;;;:::i;:::-;;:::i;3069:146:5:-;;;:::i;3500:925:84:-;;;;;;:::i;:::-;;:::i;13539:2407::-;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;12333:1200:84:-;;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;15952:1030:84:-;;;:::i;1243:204:1:-;;;:::i;6152:1715:84:-;;;;;;:::i;:::-;;:::i;22135:980::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;589:984:84:-;;;;;;:::i;:::-;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;302:281:84:-;345:13;:11;:13::i;:::-;396:7;;405:4;;383:27;;-1:-1:-1;;;;;396:7:84;;;;405:4;383:12;:27::i;:::-;369:11;:41;;-1:-1:-1;;;;;;369:41:84;-1:-1:-1;;;;;369:41:84;;;;;;;;;421:69;;434:3;;;;992:7:93;254:4:84;;483:2;;421:12;:69::i;:::-;508:7;;:22;;-1:-1:-1;;;508:22:84;;-1:-1:-1;;;;;526:3:84;10945:55:105;;508:22:84;;;10927:74:105;508:7:84;;;;:17;;10900:18:105;;508:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;:55;;;;-1:-1:-1;539:4:84;;:19;;-1:-1:-1;;;539:19:84;;-1:-1:-1;;;;;554:3:84;10945:55:105;;539:19:84;;;10927:74:105;539:4:84;;;;:14;;10900:18:105;;539:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:24;508:55;500:76;;;;-1:-1:-1;;;500:76:84;;11403:2:105;500:76:84;;;11385:21:105;11442:1;11422:18;;;11415:29;11480:10;11460:18;;;11453:38;11508:18;;500:76:84;;;;;;;;;302:281::o;11101:1226::-;11172:11;;11145:73;;11158:5;;;;-1:-1:-1;;;;;11172:11:84;992:7:93;254:4:84;;11211:2;;11145:12;:73::i;:::-;11289:11;;:39;;-1:-1:-1;;;11289:39:84;;11249:4;11289:39;;;11705:66:105;;;11289:11:84;11787:18:105;;;11780:50;11249:4:84;11229:17;;-1:-1:-1;;;;;11289:11:84;;;;:22;;11678:18:105;;11289:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11352:7:84;;11263:65;;-1:-1:-1;11339:38:84;;-1:-1:-1;;;;;;11352:7:84;11362:3;-1:-1:-1;;;;;11339:38:84;;:4;:38::i;:::-;11388:13;;-1:-1:-1;;;11388:13:84;;-1:-1:-1;;;;;11397:3:84;10945:55:105;11388:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;11388:8:84;;;10900:18:105;;11388:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11411:7:84;;11436:11;;11411:49;;-1:-1:-1;;;11411:49:84;;-1:-1:-1;;;;;11436:11:84;;;11411:49;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;11411:7:84;;;-1:-1:-1;11411:16:84;;-1:-1:-1;12512:18:105;;11411:49:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11470:11:84;;:27;;-1:-1:-1;;;11470:27:84;;:11;:27;;;13260:41:105;-1:-1:-1;;;;;11493:3:84;13337:55:105;;13317:18;;;13310:83;11470:11:84;;;;:16;;13233:18:105;;11470:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11538:11:84;;11508:64;;11524:5;;;;-1:-1:-1;;;;;11538:11:84;992:7:93;11559:4:84;11565:2;;11508:15;:64::i;:::-;11630:11;;:29;;;-1:-1:-1;;;11630:29:84;;;;11584:20;;;;-1:-1:-1;;;;;11630:11:84;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11701:7;;:33;;-1:-1:-1;;;11701:33:84;;-1:-1:-1;;;;;11727:5:84;10945:55:105;;11701:33:84;;;10927:74:105;11583:76:84;;-1:-1:-1;11583:76:84;;-1:-1:-1;11670:139:84;;11701:7;;:17;;10900:18:105;;11701:33:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11775:1;11747:24;11759:12;11747:9;:24;:::i;:::-;11746:30;;;;:::i;:::-;11736:40;;-1:-1:-1;;;;;11736:40:84;254:4;11736:40;:::i;:::-;11778:1;11670:139;;;;;;;;;;;;;;;;;:17;:139::i;:::-;11850:4;;:30;;-1:-1:-1;;;11850:30:84;;-1:-1:-1;;;;;11873:5:84;10945:55:105;;11850:30:84;;;10927:74:105;11819:137:84;;11850:4;;:14;;10900:18:105;;11850:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11922:1;11893:25;11906:12;11893:10;:25;:::i;:::-;11892:31;;;;:::i;:::-;11882:41;;-1:-1:-1;;;;;11882:41:84;291:4;11882:41;:::i;:::-;11925:1;11819:137;;;;;;;;;;;;;;;;;:17;:137::i;:::-;11993:11;;11967:60;;11983:3;;;;-1:-1:-1;;;;;11993:11:84;992:7:93;12014:4:84;12020:2;;11967:15;:60::i;:::-;12069:7;;:31;;-1:-1:-1;;;12069:31:84;;-1:-1:-1;;;;;12095:3:84;10945:55:105;;12069:31:84;;;10927:74:105;12038:137:84;;12069:7;;:17;;10900:18:105;;12069:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12141:1;12113:24;12125:12;12113:9;:24;:::i;:::-;12112:30;;;;:::i;:::-;12102:40;;-1:-1:-1;;;;;12102:40:84;254:4;12102:40;:::i;:::-;12144:1;12038:137;;;;;;;;;;;;;;;;;:17;:137::i;:::-;12216:4;;:28;;-1:-1:-1;;;12216:28:84;;-1:-1:-1;;;;;12239:3:84;10945:55:105;;12216:28:84;;;10927:74:105;12185:135:84;;12216:4;;:14;;10900:18:105;;12216:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12286:1;12257:25;12270:12;12257:10;:25;:::i;:::-;12256:31;;;;:::i;:::-;12246:41;;-1:-1:-1;;;;;12246:41:84;291:4;12246:41;:::i;:::-;12289:1;12185:135;;;;;;;;;;;;;;;;;:17;:135::i;:::-;11135:1192;;;;11101:1226::o;2566:928::-;2675:11;;:38;;-1:-1:-1;;;2675:38:84;;-1:-1:-1;;;;;11723:47:105;;2675:38:84;;;11705:66:105;2675:11:84;11787:18:105;;;11780:50;2631:20:84;;;;-1:-1:-1;;;;;2675:11:84;;;;:22;;11678:18:105;;2675:38:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2630:83:84;;-1:-1:-1;2630:83:84;-1:-1:-1;;;;;;;;;;;;2723:9:84;-1:-1:-1;;;;;2733:13:84;;;;;;:34;;-1:-1:-1;;;;;;2750:17:84;;;2733:34;2723:45;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;2723:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2792:7:84;;2779:39;;-1:-1:-1;;;;;;2792:7:84;;-1:-1:-1;2802:5:84;-1:-1:-1;;;;;2779:39:84;;:4;:39::i;:::-;2829:15;;-1:-1:-1;;;2829:15:84;;-1:-1:-1;;;;;2838:5:84;10945:55:105;2829:15:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;2829:8:84;;;10900:18:105;;2829:15:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2854:7:84;;2879:11;;2854:48;;-1:-1:-1;;;2854:48:84;;-1:-1:-1;;;;;2879:11:84;;;2854:48;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;2854:7:84;;;-1:-1:-1;2854:16:84;;-1:-1:-1;12512:18:105;;2854:48:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2912:11:84;;:29;;-1:-1:-1;;;2912:29:84;;:11;:29;;;13260:41:105;-1:-1:-1;;;;;2935:5:84;13337:55:105;;13317:18;;;13310:83;2912:11:84;;;;:16;;13233:18:105;;2912:29:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2961:7:84;;:24;;-1:-1:-1;;;2961:24:84;;-1:-1:-1;;;;;2979:5:84;10945:55:105;;2961:24:84;;;10927:74:105;2952:61:84;;2961:7;;:17;;10900:18:105;;2961:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2987:1;2952:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;3032:4;;:21;;-1:-1:-1;;;3032:21:84;;-1:-1:-1;;;;;3047:5:84;10945:55:105;;3032:21:84;;;10927:74:105;3023:66:84;;3032:4;;:14;;10900:18:105;;3032:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3055:9;-1:-1:-1;;;;;3023:66:84;;;;;;;;;;;;;;;;;;:8;:66::i;:::-;3126:11;;3100:60;;3116:3;;;;-1:-1:-1;;;;;3126:11:84;992:7:93;3147:4:84;3153:2;;3100:15;:60::i;:::-;3197:11;;:29;;;-1:-1:-1;;;3197:29:84;;;;3172:20;;-1:-1:-1;;;;;3197:11:84;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3256:7:84;;:22;;-1:-1:-1;;;3256:22:84;;-1:-1:-1;;;;;3274:3:84;10945:55:105;;3256:22:84;;;10927:74:105;3171:55:84;;-1:-1:-1;;;3256:7:84;;;;:17;;10900:18:105;;3256:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3307:4;;:19;;-1:-1:-1;;;3307:19:84;;-1:-1:-1;;;;;3322:3:84;10945:55:105;;3307:19:84;;;10927:74:105;3237:41:84;;-1:-1:-1;;;3307:4:84;;;;:14;;10900:18:105;;3307:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3288:38;;3337:77;3346:8;3377:12;-1:-1:-1;;;;;3356:33:84;3366:8;-1:-1:-1;;;;;3356:18:84;254:4;3356:18;;;;:::i;:::-;:33;;;;:::i;:::-;3337:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;3424:63;3433:8;3443:19;-1:-1:-1;;;;;3443:19:84;;291:4;3443:19;:::i;:::-;3424:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;2620:874;;;;;2566:928;:::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;9487:1608:84:-;9622:11;;:40;;-1:-1:-1;;;9622:40:84;;-1:-1:-1;;;;;11723:47:105;;9622:40:84;;;11705:66:105;9576:21:84;11787:18:105;;;11780:50;;;9576:21:84;;;-1:-1:-1;;;;;9622:11:84;;;;:22;;11678:18:105;;9622:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9575:87:84;;-1:-1:-1;9575:87:84;-1:-1:-1;;;;;;;;;;;;9672:9:84;-1:-1:-1;;;;;9682:18:84;;;:36;;;;;9717:1;9704:10;-1:-1:-1;;;;;9704:14:84;;9682:36;9672:47;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;9672:47:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9743:7:84;;9730:33;;-1:-1:-1;;;;;;9743:7:84;;-1:-1:-1;9753:3:84;9758:4;9730;:33::i;:::-;9786:4;;9773:30;;-1:-1:-1;;;;;9786:4:84;9793:3;9798:4;9773;:30::i;:::-;9814:13;;-1:-1:-1;;;9814:13:84;;-1:-1:-1;;;;;9823:3:84;10945:55:105;9814:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;9814:8:84;;;10900:18:105;;9814:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9837:4:84;;9859:11;;9837:46;;-1:-1:-1;;;9837:46:84;;-1:-1:-1;;;;;9859:11:84;;;9837:46;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;9837:4:84;;;-1:-1:-1;9837:13:84;;-1:-1:-1;12512:18:105;;9837:46:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9893:11:84;;:30;;-1:-1:-1;;;9893:30:84;;:11;:30;;;13260:41:105;-1:-1:-1;;;;;9917:5:84;13337:55:105;;13317:18;;;13310:83;9893:11:84;;;;:16;;13233:18:105;;9893:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9943:7:84;;:24;;-1:-1:-1;;;9943:24:84;;-1:-1:-1;;;;;9961:5:84;10945:55:105;;9943:24:84;;;10927:74:105;9934::84;;9943:7;;:17;;10900:18:105;;9943:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9969:10;-1:-1:-1;;;;;9934:74:84;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;10066:11;;:39;;-1:-1:-1;;;10066:39:84;;-1:-1:-1;;;;;11723:47:105;;10066:39:84;;;11705:66:105;10066:11:84;11787:18:105;;;11780:50;10020:21:84;;;;-1:-1:-1;;;;;10066:11:84;;;;:22;;11678:18:105;;10066:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10019:86:84;;-1:-1:-1;10019:86:84;-1:-1:-1;;;;;;;;;;;;10115:9:84;-1:-1:-1;;;;;10125:18:84;;;:36;;;;;10160:1;10147:10;-1:-1:-1;;;;;10147:14:84;;10125:36;10115:47;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;10115:47:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10173:13:84;;-1:-1:-1;;;10173:13:84;;-1:-1:-1;;;;;10182:3:84;10945:55:105;10173:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;10173:8:84;-1:-1:-1;10173:8:84;;-1:-1:-1;10900:18:105;;10173:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10196:7:84;;10221:11;;10196:49;;-1:-1:-1;;;10196:49:84;;-1:-1:-1;;;;;10221:11:84;;;10196:49;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;10196:7:84;;;-1:-1:-1;10196:16:84;;-1:-1:-1;12512:18:105;;10196:49:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10255:11:84;;:29;;-1:-1:-1;;;10255:29:84;;:11;:29;;;13260:41:105;-1:-1:-1;;;;;10278:5:84;13337:55:105;;13317:18;;;13310:83;10255:11:84;;;;:16;;13233:18:105;;10255:29:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10320:4:84;;:21;;-1:-1:-1;;;10320:21:84;;-1:-1:-1;;;;;10335:5:84;10945:55:105;;10320:21:84;;;10927:74:105;-1:-1:-1;;10320:4:84;;:14;;10900:18:105;;10320:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10295:46;;10351:64;10360:14;10376:10;-1:-1:-1;;;;;10351:64:84;;;;;;;;;;;;;;;;;;:8;:64::i;:::-;10452:11;;10426:60;;10442:3;;;;-1:-1:-1;;;;;10452:11:84;992:7:93;10473:4:84;10479:2;;10426:15;:60::i;:::-;10544:11;;:29;;;-1:-1:-1;;;10544:29:84;;;;10498:20;;;;-1:-1:-1;;;;;10544:11:84;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10593:7;;10619:11;;10593:39;;-1:-1:-1;;;10593:39:84;;-1:-1:-1;;;;;10619:11:84;;;10593:39;;;10927:74:105;10497:76:84;;-1:-1:-1;10497:76:84;;-1:-1:-1;10584:91:84;;10593:7;;;:17;;10900:18:105;;10593:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10634:12;-1:-1:-1;;;;;10584:91:84;;;;;;;;;;;;;;;;;;:8;:91::i;:::-;10694:4;;10717:11;;10694:36;;-1:-1:-1;;;10694:36:84;;-1:-1:-1;;;;;10717:11:84;;;10694:36;;;10927:74:105;10685:88:84;;10694:4;;;;;:14;;10900:18:105;;10694:36:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10732:12;-1:-1:-1;;;;;10685:88:84;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;10803:7;;:22;;-1:-1:-1;;;10803:22:84;;-1:-1:-1;;;;;10821:3:84;10945:55:105;;10803:22:84;;;10927:74:105;-1:-1:-1;;10803:7:84;;:17;;10900:18:105;;10803:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10854:4;;:19;;-1:-1:-1;;;10854:19:84;;-1:-1:-1;;;;;10869:3:84;10945:55:105;;10854:19:84;;;10927:74:105;10784:41:84;;-1:-1:-1;;;10854:4:84;;;;:14;;10900:18:105;;10854:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10835:38;;10884:95;10893:8;10938:12;-1:-1:-1;;;;;10903:47:84;10925:10;-1:-1:-1;;;;;10903:32:84;10913:9;-1:-1:-1;;;;;10903:19:84;254:4;10903:19;;;;:::i;:::-;:32;;;;:::i;:::-;:47;;;;:::i;:::-;10884:95;;;;;;;;;;;;;;;;;:8;:95::i;:::-;10989:99;10998:8;11047:12;-1:-1:-1;;;;;11008:51:84;11030:14;11018:9;-1:-1:-1;;;;;11008:19:84;291:4;11008:19;;;;:::i;:::-;:36;;;;:::i;:::-;:51;;;;:::i;:::-;10989:99;;;;;;;;;;;;;;;;;:8;:99::i;:::-;9565:1530;;;;;;;;;9487:1608;;:::o;16988:1030::-;17093:11;;17075:30;;17050:22;;-1:-1:-1;;;;;17093:11:84;;17075:30;;;:::i;:::-;-1:-1:-1;;;;;10945:55:105;;;10927:74;;10915:2;10900:18;17075:30:84;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17129:7:84;;17050:55;;-1:-1:-1;17116:47:84;;-1:-1:-1;;;;;17129:7:84;17050:55;17158:4;17116;:47::i;:::-;17186:4;;17173:44;;-1:-1:-1;;;;;17186:4:84;17201:8;17212:4;17173;:44::i;:::-;17228:27;;-1:-1:-1;;;17228:27:84;;-1:-1:-1;;;;;10945:55:105;;17228:27:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;17228:8:84;;;10900:18:105;;17228:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17265:11:84;;17319:54;;;17330:1;17319:54;;;15884:36:105;;;17333:8:84;15936:18:105;;;15929:59;933:31:64;16004:18:105;;;15997:34;16047:18;;;;16040:45;;;;17319:54:84;;;;;;;;;;15856:19:105;;;17319:54:84;;;;-1:-1:-1;;;17265:109:84;;;-1:-1:-1;;;;;17265:11:84;;;;-1:-1:-1;17265:21:84;;-1:-1:-1;17265:109:84;;17287:8;;1057:15:77;;17265:109:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17386:20;17408;17432:11;;;;;;;;;-1:-1:-1;;;;;17432:11:84;-1:-1:-1;;;;;17432:27:84;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17385:76;;;;17472:20;17495:7;;;;;;;;;-1:-1:-1;;;;;17495:7:84;-1:-1:-1;;;;;17495:23:84;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17531:22;;-1:-1:-1;;;17531:22:84;;-1:-1:-1;;;;;10945:55:105;;17531:22:84;;;10927:74:105;17472:48:84;;-1:-1:-1;;;;;;;;;;;;17531:8:84;;;10900:18:105;;17531:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17563:11;;;;;;;;;-1:-1:-1;;;;;17563:11:84;-1:-1:-1;;;;;17563:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17616:7:84;;:31;;-1:-1:-1;;;17616:31:84;;-1:-1:-1;;;;;10945:55:105;;;17616:31:84;;;10927:74:105;17607:82:84;;17616:7;;:17;;10900:18:105;;17616:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17649:1;17607:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;17708:4;;:28;;-1:-1:-1;;;17708:28:84;;-1:-1:-1;;;;;10945:55:105;;;17708:28:84;;;10927:74:105;17699:94:84;;17708:4;;:14;;10900:18:105;;17708:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17738:16;17753:1;17738:12;:16;:::i;:::-;-1:-1:-1;;;;;17699:94:84;;;;;;;;;;;;;;;;;;:8;:94::i;:::-;17835:11;;:29;;;-1:-1:-1;;;17835:29:84;;;;-1:-1:-1;;;;;17835:11:84;;;;:27;;:29;;;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17804:60;;;;;;;;17875:63;17884:12;-1:-1:-1;;;;;17875:63:84;17898:1;17875:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;17948;17957:12;-1:-1:-1;;;;;17948:63:84;17971:1;17948:63;;;;;;;;;;;;;;;;;:8;:63::i;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;18024:1089:84:-;18132:11;;18114:30;;18089:22;;-1:-1:-1;;;;;18132:11:84;;18114:30;;;:::i;:::-;-1:-1:-1;;;;;10945:55:105;;;10927:74;;10915:2;10900:18;18114:30:84;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18168:7:84;;18089:55;;-1:-1:-1;18155:47:84;;-1:-1:-1;;;;;18168:7:84;18089:55;18197:4;18155;:47::i;:::-;18225:4;;18212:44;;-1:-1:-1;;;;;18225:4:84;18240:8;18251:4;18212;:44::i;:::-;18267:27;;-1:-1:-1;;;18267:27:84;;-1:-1:-1;;;;;10945:55:105;;18267:27:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;18267:8:84;;;10900:18:105;;18267:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18304:11:84;;-1:-1:-1;;;;;18304:11:84;;-1:-1:-1;18304:21:84;;-1:-1:-1;18339:8:84;1035:38:77;18371:61:84;;;18382:8;18371:61;;;17498:34:105;;;17548:18;;;17541:43;;;;933:31:64;17600:18:105;;;17593:34;18430:1:84;17643:18:105;;;17636:45;17433:19;;18371:61:84;;;;;;;;;;;;18304:138;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18454:20;18476;18500:11;;;;;;;;;-1:-1:-1;;;;;18500:11:84;-1:-1:-1;;;;;18500:27:84;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18453:76;;;;18540:20;18563:7;;;;;;;;;-1:-1:-1;;;;;18563:7:84;-1:-1:-1;;;;;18563:23:84;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18599:22;;-1:-1:-1;;;18599:22:84;;-1:-1:-1;;;;;10945:55:105;;18599:22:84;;;10927:74:105;18540:48:84;;-1:-1:-1;;;;;;;;;;;;18599:8:84;;;10900:18:105;;18599:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18631:11;;;;;;;;;-1:-1:-1;;;;;18631:11:84;-1:-1:-1;;;;;18631:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18684:7:84;;:31;;-1:-1:-1;;;18684:31:84;;-1:-1:-1;;;;;10945:55:105;;;18684:31:84;;;10927:74:105;18675:100:84;;18684:7;;:17;;10900:18:105;;18684:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18717:16;18732:1;18717:12;:16;:::i;:::-;-1:-1:-1;;;;;18675:100:84;;;;;;;;;;;;;;;;;;:8;:100::i;:::-;18794:4;;:28;;-1:-1:-1;;;18794:28:84;;-1:-1:-1;;;;;10945:55:105;;;18794:28:84;;;10927:74:105;18785:97:84;;18794:4;;:14;;10900:18:105;;18794:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18824:16;18839:1;18824:12;:16;:::i;:::-;-1:-1:-1;;;;;18785:97:84;;;;;;;;;;;;;;;;;;:8;:97::i;:::-;18924:11;;:29;;;-1:-1:-1;;;18924:29:84;;;;-1:-1:-1;;;;;18924:11:84;;;;:27;;:29;;;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18893:60;;;;;;;;18964:66;18973:12;-1:-1:-1;;;;;18964:66:84;18987:1;18964:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;19040;19049:12;-1:-1:-1;;;;;19040:66:84;19063:1;19040:66;;;;;;;;;;;;;;;;;:8;:66::i;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;19119:3010:84:-;19196:7;;19183:42;;-1:-1:-1;;;;;19196:7:84;19214:3;19220:4;19183;:42::i;:::-;19236:13;;-1:-1:-1;;;19236:13:84;;-1:-1:-1;;;;;19245:3:84;10945:55:105;19236:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;19236:8:84;;;10900:18:105;;19236:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19259:7:84;;19284:11;;19259:44;;-1:-1:-1;;;19259:44:84;;-1:-1:-1;;;;;19284:11:84;;;19259:44;;;18201:74:105;19298:4:84;18291:18:105;;;18284:34;19259:7:84;;;-1:-1:-1;19259:16:84;;-1:-1:-1;18174:18:105;;19259:44:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19313:11:84;;:27;;-1:-1:-1;;;19313:27:84;;:11;:27;;;13260:41:105;-1:-1:-1;;;;;19336:3:84;13337:55:105;;13317:18;;;13310:83;19313:11:84;;;;:16;;13233:18:105;;19313:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19350:11;;;;;;;;;-1:-1:-1;;;;;19350:11:84;-1:-1:-1;;;;;19350:22:84;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19432:11:84;;:29;;;-1:-1:-1;;;19432:29:84;;;;19386:20;;;;-1:-1:-1;;;;;19432:11:84;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19385:76;;;;19471:28;19502:12;19471:43;;19525:65;19534:12;-1:-1:-1;;;;;19525:65:84;19548:1;19525:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;19600;19609:12;-1:-1:-1;;;;;19600:65:84;19623:1;19600:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;19715:11;;:25;;;-1:-1:-1;;;19715:25:84;;;;19677:16;;;;-1:-1:-1;;;;;19715:11:84;;;;:23;;:25;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19676:64;;;;19751:20;19774:7;;;;;;;;;-1:-1:-1;;;;;19774:7:84;-1:-1:-1;;;;;19774:23:84;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19810:22;;-1:-1:-1;;;19810:22:84;;-1:-1:-1;;;;;10945:55:105;;19810:22:84;;;10927:74:105;19751:48:84;;-1:-1:-1;;;;;;;;;;;;19810:8:84;;;10900:18:105;;19810:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19842:11;;;;;;;;;-1:-1:-1;;;;;19842:11:84;-1:-1:-1;;;;;19842:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19935:11:84;;:25;;;-1:-1:-1;;;19935:25:84;;;;19887:21;;;;-1:-1:-1;;;;;19935:11:84;;;;:23;;:25;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19886:74;;;;19971:73;19980:13;-1:-1:-1;;;;;19971:73:84;19995:8;-1:-1:-1;;;;;19971:73:84;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;20054;20063:13;-1:-1:-1;;;;;20054:73:84;20078:8;-1:-1:-1;;;;;20054:73:84;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;20147:7;;:31;;-1:-1:-1;;;20147:31:84;;-1:-1:-1;;;;;10945:55:105;;;20147:31:84;;;10927:74:105;20138:99:84;;20147:7;;:17;;10900:18:105;;20147:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20180:16;20195:1;20180:12;:16;:::i;:::-;-1:-1:-1;;;;;20138:99:84;;;;;;;;;;;;;;;;;;:8;:99::i;:::-;20256:4;;:28;;-1:-1:-1;;;20256:28:84;;-1:-1:-1;;;;;10945:55:105;;;20256:28:84;;;10927:74:105;20247:81:84;;20256:4;;:14;;10900:18:105;;20256:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20286:1;20247:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;20370:11;;:29;;;-1:-1:-1;;;20370:29:84;;;;-1:-1:-1;;;;;20370:11:84;;;;:27;;:29;;;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20339:60;;;;;;;;20410:65;20419:12;-1:-1:-1;;;;;20410:65:84;20433:1;20410:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;20485;20494:12;-1:-1:-1;;;;;20485:65:84;20508:1;20485:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;20574:4;;20561:39;;-1:-1:-1;;;;;20574:4:84;20589:3;20595:4;20561;:39::i;:::-;20611:13;;-1:-1:-1;;;20611:13:84;;-1:-1:-1;;;;;20620:3:84;10945:55:105;20611:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;20611:8:84;;;10900:18:105;;20611:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20634:4:84;;20656:11;;20634:41;;-1:-1:-1;;;20634:41:84;;-1:-1:-1;;;;;20656:11:84;;;20634:41;;;18201:74:105;20670:4:84;18291:18:105;;;18284:34;20634:4:84;;;-1:-1:-1;20634:13:84;;-1:-1:-1;18174:18:105;;20634:41:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20685:11:84;;:28;;-1:-1:-1;;;20685:28:84;;:11;:28;;;13260:41:105;-1:-1:-1;;;;;20709:3:84;13337:55:105;;13317:18;;;13310:83;20685:11:84;;;;:16;;13233:18:105;;20685:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20755:11:84;;:29;;;-1:-1:-1;;;20755:29:84;;;;-1:-1:-1;;;;;20755:11:84;;;;:27;;:29;;;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20724:60;;;;;;;;20794:28;20825:12;20794:43;;20848:65;20857:12;-1:-1:-1;;;;;20848:65:84;20871:1;20848:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;20923:66;20932:12;-1:-1:-1;;;;;20923:66:84;20946:1;20923:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;21023:11;;:25;;;-1:-1:-1;;;21023:25:84;;;;-1:-1:-1;;;;;21023:11:84;;;;:23;;:25;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21059:22;;-1:-1:-1;;;21059:22:84;;-1:-1:-1;;;;;10945:55:105;;21059:22:84;;;10927:74:105;21000:48:84;;-1:-1:-1;21000:48:84;-1:-1:-1;;;;;;;;;;;;21059:8:84;;;10900:18:105;;21059:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21091:11;;;;;;;;;-1:-1:-1;;;;;21091:11:84;-1:-1:-1;;;;;21091:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21168:11:84;;:25;;;-1:-1:-1;;;21168:25:84;;;;-1:-1:-1;;;;;21168:11:84;;;;:23;;:25;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21135:58;;;;;;;;21204:74;21213:13;-1:-1:-1;;;;;21204:74:84;21228:8;-1:-1:-1;;;;;21204:74:84;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;21288;21297:13;-1:-1:-1;;;;;21288:74:84;21312:8;-1:-1:-1;;;;;21288:74:84;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;21382:7;;:31;;-1:-1:-1;;;21382:31:84;;-1:-1:-1;;;;;10945:55:105;;;21382:31:84;;;10927:74:105;21373:108:84;;21382:7;;:17;;10900:18:105;;21382:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21415:24;21438:1;21415:20;:24;:::i;:::-;-1:-1:-1;;;;;21373:108:84;;;;;;;;;;;;;;;;;;:8;:108::i;:::-;21500:4;;:28;;-1:-1:-1;;;21500:28:84;;-1:-1:-1;;;;;10945:55:105;;;21500:28:84;;;10927:74:105;21491:97:84;;21500:4;;:14;;10900:18:105;;21500:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21530:16;21545:1;21530:12;:16;:::i;:::-;-1:-1:-1;;;;;21491:97:84;;;;;;;;;;;;;;;;;;:8;:97::i;:::-;21630:11;;:29;;;-1:-1:-1;;;21630:29:84;;;;-1:-1:-1;;;;;21630:11:84;;;;:27;;:29;;;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21599:60;;;;;;;;21670:66;21679:12;-1:-1:-1;;;;;21670:66:84;21693:1;21670:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;21746;21755:12;-1:-1:-1;;;;;21746:66:84;21769:1;21746:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;21823:22;;-1:-1:-1;;;21823:22:84;;-1:-1:-1;;;;;10945:55:105;;21823:22:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;21823:8:84;;;10900:18:105;;21823:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21855:11;;;;;;;;;-1:-1:-1;;;;;21855:11:84;-1:-1:-1;;;;;21855:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21908:7:84;;:31;;-1:-1:-1;;;21908:31:84;;-1:-1:-1;;;;;10945:55:105;;;21908:31:84;;;10927:74:105;21899:108:84;;21908:7;;:17;;10900:18:105;;21908:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21941:24;21964:1;21941:20;:24;:::i;:::-;-1:-1:-1;;;;;21899:108:84;;;;;;;;;;;;;;;;;;:8;:108::i;:::-;22026:4;;:28;;-1:-1:-1;;;22026:28:84;;-1:-1:-1;;;;;10945:55:105;;;22026:28:84;;;10927:74:105;22017:105:84;;22026:4;;:14;;10900:18:105;;22026:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22056:24;22079:1;22056:20;:24;:::i;:::-;-1:-1:-1;;;;;22017:105:84;;;;;;;;;;;;;;;;;;:8;:105::i;:::-;19173:2956;;;;;;;;;19119:3010::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7873:1608:84;8008:11;;:39;;-1:-1:-1;;;8008:39:84;;-1:-1:-1;;;;;11723:47:105;;8008:39:84;;;11705:66:105;8008:11:84;11787:18:105;;;11780:50;7962:21:84;;;;-1:-1:-1;;;;;8008:11:84;;;;:22;;11678:18:105;;8008:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7961:86:84;;-1:-1:-1;7961:86:84;-1:-1:-1;;;;;;;;;;;;8057:9:84;-1:-1:-1;;;;;8067:18:84;;;:36;;;;;8102:1;8089:10;-1:-1:-1;;;;;8089:14:84;;8067:36;8057:47;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;8057:47:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8128:7:84;;8115:33;;-1:-1:-1;;;;;;8128:7:84;;-1:-1:-1;8138:3:84;8143:4;8115;:33::i;:::-;8171:4;;8158:30;;-1:-1:-1;;;;;8171:4:84;8178:3;8183:4;8158;:30::i;:::-;8199:13;;-1:-1:-1;;;8199:13:84;;-1:-1:-1;;;;;8208:3:84;10945:55:105;8199:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;8199:8:84;;;10900:18:105;;8199:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8222:7:84;;8247:11;;8222:49;;-1:-1:-1;;;8222:49:84;;-1:-1:-1;;;;;8247:11:84;;;8222:49;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;8222:7:84;;;-1:-1:-1;8222:16:84;;-1:-1:-1;12512:18:105;;8222:49:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8281:11:84;;:29;;-1:-1:-1;;;8281:29:84;;:11;:29;;;13260:41:105;-1:-1:-1;;;;;8304:5:84;13337:55:105;;13317:18;;;13310:83;8281:11:84;;;;:16;;13233:18:105;;8281:29:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8330:4:84;;:21;;-1:-1:-1;;;8330:21:84;;-1:-1:-1;;;;;8345:5:84;10945:55:105;;8330:21:84;;;10927:74:105;8321:71:84;;8330:4;;:14;;10900:18:105;;8330:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8353:10;-1:-1:-1;;;;;8321:71:84;;;;;;;;;;;;;;;;;;:8;:71::i;:::-;8450:11;;:40;;-1:-1:-1;;;8450:40:84;;-1:-1:-1;;;;;11723:47:105;;8450:40:84;;;11705:66:105;8404:21:84;11787:18:105;;;11780:50;;;8404:21:84;;;-1:-1:-1;;;;;8450:11:84;;;;:22;;11678:18:105;;8450:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8403:87:84;;-1:-1:-1;8403:87:84;-1:-1:-1;;;;;;;;;;;;8500:9:84;-1:-1:-1;;;;;8510:18:84;;;:36;;;;;8545:1;8532:10;-1:-1:-1;;;;;8532:14:84;;8510:36;8500:47;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;8500:47:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8558:13:84;;-1:-1:-1;;;8558:13:84;;-1:-1:-1;;;;;8567:3:84;10945:55:105;8558:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;8558:8:84;-1:-1:-1;8558:8:84;;-1:-1:-1;10900:18:105;;8558:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8581:4:84;;8603:11;;8581:46;;-1:-1:-1;;;8581:46:84;;-1:-1:-1;;;;;8603:11:84;;;8581:46;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;8581:4:84;;;-1:-1:-1;8581:13:84;;-1:-1:-1;12512:18:105;;8581:46:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8637:11:84;;:30;;-1:-1:-1;;;8637:30:84;;:11;:30;;;13260:41:105;-1:-1:-1;;;;;8661:5:84;13337:55:105;;13317:18;;;13310:83;8637:11:84;;;;:16;;13233:18:105;;8637:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8703:7:84;;:24;;-1:-1:-1;;;8703:24:84;;-1:-1:-1;;;;;8721:5:84;10945:55:105;;8703:24:84;;;10927:74:105;-1:-1:-1;;8703:7:84;;:17;;10900:18:105;;8703:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8678:49;;8737:64;8746:14;8762:10;-1:-1:-1;;;;;8737:64:84;;;;;;;;;;;;;;;;;;:8;:64::i;:::-;8838:11;;8812:60;;8828:3;;;;-1:-1:-1;;;;;8838:11:84;992:7:93;8859:4:84;8865:2;;8812:15;:60::i;:::-;8930:11;;:29;;;-1:-1:-1;;;8930:29:84;;;;8884:20;;;;-1:-1:-1;;;;;8930:11:84;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8979:7;;9005:11;;8979:39;;-1:-1:-1;;;8979:39:84;;-1:-1:-1;;;;;9005:11:84;;;8979:39;;;10927:74:105;8883:76:84;;-1:-1:-1;8883:76:84;;-1:-1:-1;8970:91:84;;8979:7;;;:17;;10900:18:105;;8979:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9020:12;-1:-1:-1;;;;;8970:91:84;;;;;;;;;;;;;;;;;;:8;:91::i;:::-;9080:4;;9103:11;;9080:36;;-1:-1:-1;;;9080:36:84;;-1:-1:-1;;;;;9103:11:84;;;9080:36;;;10927:74:105;9071:88:84;;9080:4;;;;;:14;;10900:18:105;;9080:36:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9118:12;-1:-1:-1;;;;;9071:88:84;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;9189:7;;:22;;-1:-1:-1;;;9189:22:84;;-1:-1:-1;;;;;9207:3:84;10945:55:105;;9189:22:84;;;10927:74:105;-1:-1:-1;;9189:7:84;;:17;;10900:18:105;;9189:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9240:4;;:19;;-1:-1:-1;;;9240:19:84;;-1:-1:-1;;;;;9255:3:84;10945:55:105;;9240:19:84;;;10927:74:105;9170:41:84;;-1:-1:-1;;;9240:4:84;;;;:14;;10900:18:105;;9240:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9221:38;;9270:99;9279:8;9328:12;-1:-1:-1;;;;;9289:51:84;9311:14;9299:9;-1:-1:-1;;;;;9289:19:84;254:4;9289:19;;;;:::i;:::-;:36;;;;:::i;:::-;:51;;;;:::i;:::-;9270:99;;;;;;;;;;;;;;;;;:8;:99::i;:::-;9379:95;9388:8;9433:12;-1:-1:-1;;;;;9398:47:84;9420:10;-1:-1:-1;;;;;9398:32:84;9408:9;-1:-1:-1;;;;;9398:19:84;291:4;9398:19;;;;:::i;:::-;:32;;;;:::i;:::-;:47;;;;:::i;:::-;9379:95;;;;;;;;;;;;;;;;;:8;:95::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;1579:981:84:-;-1:-1:-1;;;;;;;;;;;1643:9:84;-1:-1:-1;;;;;1653:13:84;;;;;;:34;;;1683:4;1670:9;-1:-1:-1;;;;;1670:17:84;;;1653:34;1643:45;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;1643:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1744:11:84;;:39;;-1:-1:-1;;;1744:39:84;;-1:-1:-1;;;;;11723:47:105;;1744:39:84;;;11705:66:105;1700:16:84;11787:18:105;;;11780:50;;;1700:16:84;-1:-1:-1;1700:16:84;;-1:-1:-1;;;;;;1744:11:84;;;;:21;;11678:18:105;;1744:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1699:84;;;;;1793:49;1802:13;-1:-1:-1;;;;;1793:49:84;1817:1;1793:49;;;;;;;;;;;;;;;;;:8;:49::i;:::-;1866:4;;1853:36;;-1:-1:-1;;;;;1866:4:84;1873:5;-1:-1:-1;;;;;1853:36:84;;:4;:36::i;:::-;1900:15;;-1:-1:-1;;;1900:15:84;;-1:-1:-1;;;;;1909:5:84;10945:55:105;1900:15:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;1900:8:84;;;10900:18:105;;1900:15:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1925:4:84;;1947:11;;1925:45;;-1:-1:-1;;;1925:45:84;;-1:-1:-1;;;;;1947:11:84;;;1925:45;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;1925:4:84;;;-1:-1:-1;1925:13:84;;-1:-1:-1;12512:18:105;;1925:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1980:11:84;;:30;;-1:-1:-1;;;1980:30:84;;:11;:30;;;13260:41:105;-1:-1:-1;;;;;2004:5:84;13337:55:105;;13317:18;;;13310:83;1980:11:84;;;;:16;;13233:18:105;;1980:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2030:4:84;;:21;;-1:-1:-1;;;2030:21:84;;-1:-1:-1;;;;;2045:5:84;10945:55:105;;2030:21:84;;;10927:74:105;2021:57:84;;2030:4;;:14;;10900:18:105;;2030:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2053:1;2021:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;2097:7;;:24;;-1:-1:-1;;;2097:24:84;;-1:-1:-1;;;;;2115:5:84;10945:55:105;;2097:24:84;;;10927:74:105;2088:68:84;;2097:7;;:17;;10900:18:105;;2097:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2123:9;-1:-1:-1;;;;;2088:68:84;;;;;;;;;;;;;;;;;;:8;:68::i;:::-;2193:11;;2167:60;;2183:3;;;;-1:-1:-1;;;;;2193:11:84;992:7:93;2214:4:84;2220:2;;2167:15;:60::i;:::-;2265:11;;:29;;;-1:-1:-1;;;2265:29:84;;;;2241:20;;-1:-1:-1;;;;;2265:11:84;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2324:7;;:22;;-1:-1:-1;;;2324:22:84;;-1:-1:-1;;;;;2342:3:84;10945:55:105;;2324:22:84;;;10927:74:105;2238:56:84;;-1:-1:-1;;;;2324:7:84;;;:17;;10900:18:105;;2324:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2375:4;;:19;;-1:-1:-1;;;2375:19:84;;-1:-1:-1;;;;;2390:3:84;10945:55:105;;2375:19:84;;;10927:74:105;2305:41:84;;-1:-1:-1;;;2375:4:84;;;;:14;;10900:18:105;;2375:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2356:38;-1:-1:-1;2405:62:84;2414:8;2424:19;-1:-1:-1;;;;;2424:19:84;;254:4;2424:19;:::i;:::-;2405:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;2477:76;2486:8;2517:12;-1:-1:-1;;;;;2496:33:84;2506:8;-1:-1:-1;;;;;2496:18:84;291:4;2496:18;;;;:::i;:::-;:33;;;;:::i;:::-;2477:76;;;;;;;;;;;;;;;;;:8;:76::i;4431:1715::-;-1:-1:-1;;;;;;;;;;;4520:9:84;-1:-1:-1;;;;;4530:14:84;;;;;;:36;;;4562:4;4548:10;-1:-1:-1;;;;;4548:18:84;;;4530:36;:54;;;;;4583:1;4570:10;-1:-1:-1;;;;;4570:14:84;;4530:54;:76;;;;;4602:4;4588:10;-1:-1:-1;;;;;4588:18:84;;;4530:76;4520:87;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;4520:87:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4665:11:84;;:39;;-1:-1:-1;;;4665:39:84;;-1:-1:-1;;;;;11723:47:105;;4665:39:84;;;11705:66:105;4665:11:84;11787:18:105;;;11780:50;4619:17:84;;-1:-1:-1;4619:17:84;;-1:-1:-1;;;;;;4665:11:84;;;;:21;;11678:18:105;;4665:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4618:86;;;;;4714:54;4723:14;-1:-1:-1;;;;;4714:54:84;4739:1;4714:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;4792:7;;4779:33;;-1:-1:-1;;;;;4792:7:84;4802:3;4807:4;4779;:33::i;:::-;4835:4;;4822:30;;-1:-1:-1;;;;;4835:4:84;4842:3;4847:4;4822;:30::i;:::-;4863:13;;-1:-1:-1;;;4863:13:84;;-1:-1:-1;;;;;4872:3:84;10945:55:105;4863:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;4863:8:84;;;10900:18:105;;4863:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4886:7:84;;4911:11;;4886:49;;-1:-1:-1;;;4886:49:84;;-1:-1:-1;;;;;4911:11:84;;;4886:49;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;4886:7:84;;;-1:-1:-1;4886:16:84;;-1:-1:-1;12512:18:105;;4886:49:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4945:11:84;;:29;;-1:-1:-1;;;4945:29:84;;:11;:29;;;13260:41:105;-1:-1:-1;;;;;4968:5:84;13337:55:105;;13317:18;;;13310:83;4945:11:84;;;;:16;;13233:18:105;;4945:29:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4994:4:84;;:21;;-1:-1:-1;;;4994:21:84;;-1:-1:-1;;;;;5009:5:84;10945:55:105;;4994:21:84;;;10927:74:105;4985:70:84;;4994:4;;:14;;10900:18:105;;4994:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5017:10;-1:-1:-1;;;;;4985:70:84;;;;;;;;;;;;;;;;;;:8;:70::i;:::-;5113:11;;:40;;-1:-1:-1;;;5113:40:84;;-1:-1:-1;;;;;11723:47:105;;5113:40:84;;;11705:66:105;5067:17:84;11787:18:105;;;11780:50;;;5067:17:84;;;-1:-1:-1;;;;;5113:11:84;;;;:21;;11678:18:105;;5113:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5066:87;;;;;5163:54;5172:14;-1:-1:-1;;;;;5163:54:84;5188:1;5163:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;5228:13;;-1:-1:-1;;;5228:13:84;;-1:-1:-1;;;;;5237:3:84;10945:55:105;5228:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;5228:8:84;;;10900:18:105;;5228:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5251:4:84;;5273:11;;5251:46;;-1:-1:-1;;;5251:46:84;;-1:-1:-1;;;;;5273:11:84;;;5251:46;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;5251:4:84;;;-1:-1:-1;5251:13:84;;-1:-1:-1;12512:18:105;;5251:46:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5307:11:84;;:30;;-1:-1:-1;;;5307:30:84;;:11;:30;;;13260:41:105;-1:-1:-1;;;;;5331:5:84;13337:55:105;;13317:18;;;13310:83;5307:11:84;;;;:16;;13233:18:105;;5307:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5373:7:84;;:24;;-1:-1:-1;;;5373:24:84;;-1:-1:-1;;;;;5391:5:84;10945:55:105;;5373:24:84;;;10927:74:105;-1:-1:-1;;5373:7:84;;:17;;10900:18:105;;5373:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5348:49;;5407:63;5416:14;5432:10;-1:-1:-1;;;;;5407:63:84;;;;;;;;;;;;;;;;;;:8;:63::i;:::-;5507:11;;5481:60;;5497:3;;;;-1:-1:-1;;;;;5507:11:84;992:7:93;5528:4:84;5534:2;;5481:15;:60::i;:::-;5599:11;;:29;;;-1:-1:-1;;;5599:29:84;;;;5553:20;;;;-1:-1:-1;;;;;5599:11:84;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5648:7;;5674:11;;5648:39;;-1:-1:-1;;;5648:39:84;;-1:-1:-1;;;;;5674:11:84;;;5648:39;;;10927:74:105;5552:76:84;;-1:-1:-1;5552:76:84;;-1:-1:-1;5639:90:84;;5648:7;;;:17;;10900:18:105;;5648:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5689:12;-1:-1:-1;;;;;5639:90:84;;;;;;;;;;;;;;;;;;:8;:90::i;:::-;5748:4;;5771:11;;5748:36;;-1:-1:-1;;;5748:36:84;;-1:-1:-1;;;;;5771:11:84;;;5748:36;;;10927:74:105;5739:87:84;;5748:4;;;;;:14;;10900:18:105;;5748:36:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5786:12;-1:-1:-1;;;;;5739:87:84;;;;;;;;;;;;;;;;;;:8;:87::i;:::-;5856:7;;:22;;-1:-1:-1;;;5856:22:84;;-1:-1:-1;;;;;5874:3:84;10945:55:105;;5856:22:84;;;10927:74:105;-1:-1:-1;;5856:7:84;;:17;;10900:18:105;;5856:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5907:4;;:19;;-1:-1:-1;;;5907:19:84;;-1:-1:-1;;;;;5922:3:84;10945:55:105;;5907:19:84;;;10927:74:105;5837:41:84;;-1:-1:-1;;;5907:4:84;;;;:14;;10900:18:105;;5907:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5888:38;;5937:98;5946:8;5995:12;-1:-1:-1;;;;;5956:51:84;5978:14;5966:9;-1:-1:-1;;;;;5956:19:84;254:4;5956:19;;;;:::i;:::-;:36;;;;:::i;:::-;:51;;;;:::i;:::-;5937:98;;;;;;;;;;;;;;;;;:8;:98::i;:::-;6045:94;6054:8;6099:12;-1:-1:-1;;;;;6064:47:84;6086:10;-1:-1:-1;;;;;6064:32:84;6074:9;-1:-1:-1;;;;;6064:19:84;291:4;6064:19;;;;:::i;:::-;:32;;;;:::i;:::-;:47;;;;:::i;:::-;6045:94;;;;;;;;;;;;;;;;;:8;:94::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3500:925:84;3609:11;;:39;;-1:-1:-1;;;3609:39:84;;-1:-1:-1;;;;;11723:47:105;;3609:39:84;;;11705:66:105;3565:20:84;11787:18:105;;;11780:50;;;3565:20:84;;;-1:-1:-1;;;;;3609:11:84;;;;:22;;11678:18:105;;3609:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3564:84:84;;-1:-1:-1;3564:84:84;-1:-1:-1;;;;;;;;;;;;3658:9:84;-1:-1:-1;;;;;3668:13:84;;;;;;:34;;-1:-1:-1;;;;;;3685:17:84;;;3668:34;3658:45;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;3658:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3727:4:84;;3714:36;;-1:-1:-1;;;;;;3727:4:84;;-1:-1:-1;3734:5:84;-1:-1:-1;;;;;3714:36:84;;:4;:36::i;:::-;3761:15;;-1:-1:-1;;;3761:15:84;;-1:-1:-1;;;;;3770:5:84;10945:55:105;3761:15:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;3761:8:84;;;10900:18:105;;3761:15:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3786:4:84;;3808:11;;3786:45;;-1:-1:-1;;;3786:45:84;;-1:-1:-1;;;;;3808:11:84;;;3786:45;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;3786:4:84;;;-1:-1:-1;3786:13:84;;-1:-1:-1;12512:18:105;;3786:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3841:11:84;;:30;;-1:-1:-1;;;3841:30:84;;:11;:30;;;13260:41:105;-1:-1:-1;;;;;3865:5:84;13337:55:105;;13317:18;;;13310:83;3841:11:84;;;;:16;;13233:18:105;;3841:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3891:4:84;;:21;;-1:-1:-1;;;3891:21:84;;-1:-1:-1;;;;;3906:5:84;10945:55:105;;3891:21:84;;;10927:74:105;3882:58:84;;3891:4;;:14;;10900:18:105;;3891:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3914:1;3882:58;;;;;;;;;;;;;;;;;:8;:58::i;:::-;3959:7;;:24;;-1:-1:-1;;;3959:24:84;;-1:-1:-1;;;;;3977:5:84;10945:55:105;;3959:24:84;;;10927:74:105;3950:69:84;;3959:7;;:17;;10900:18:105;;3959:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3985:9;-1:-1:-1;;;;;3950:69:84;;;;;;;;;;;;;;;;;;:8;:69::i;:::-;4056:11;;4030:60;;4046:3;;;;-1:-1:-1;;;;;4056:11:84;992:7:93;4077:4:84;4083:2;;4030:15;:60::i;:::-;4128:11;;:29;;;-1:-1:-1;;;4128:29:84;;;;4104:20;;-1:-1:-1;;;;;4128:11:84;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4187:7;;:22;;-1:-1:-1;;;4187:22:84;;-1:-1:-1;;;;;4205:3:84;10945:55:105;;4187:22:84;;;10927:74:105;4101:56:84;;-1:-1:-1;;;;4187:7:84;;;:17;;10900:18:105;;4187:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4238:4;;:19;;-1:-1:-1;;;4238:19:84;;-1:-1:-1;;;;;4253:3:84;10945:55:105;;4238:19:84;;;10927:74:105;4168:41:84;;-1:-1:-1;;;4238:4:84;;;;:14;;10900:18:105;;4238:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4219:38;-1:-1:-1;4268:63:84;4277:8;4287:19;-1:-1:-1;;;;;4287:19:84;;254:4;4287:19;:::i;:::-;4268:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;4341:77;4350:8;4381:12;-1:-1:-1;;;;;4360:33:84;4370:8;-1:-1:-1;;;;;4360:18:84;291:4;4360:18;;;;:::i;:::-;:33;;;;:::i;:::-;4341:77;;;;;;;;;;;;;;;;;:8;:77::i;13539:2407::-;13617:11;;13591:60;;13607:3;;;;-1:-1:-1;;;;;13617:11:84;992:7:93;13638:4:84;13644:2;;13591:15;:60::i;:::-;13684:11;;13661:67;;13674:3;;;;-1:-1:-1;;;;;13684:11:84;992:7:93;254:4:84;;13684:11;;13661:12;:67::i;:::-;13782:11;;13764:30;;13739:22;;-1:-1:-1;;;;;13782:11:84;;13764:30;;;:::i;:::-;-1:-1:-1;;;;;10945:55:105;;;10927:74;;10915:2;10900:18;13764:30:84;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13818:7:84;;13739:55;;-1:-1:-1;13805:47:84;;-1:-1:-1;;;;;13818:7:84;13739:55;13847:4;13805;:47::i;:::-;13875:4;;13862:44;;-1:-1:-1;;;;;13875:4:84;13890:8;13901:4;13862;:44::i;:::-;13977:27;;-1:-1:-1;;;13977:27:84;;-1:-1:-1;;;;;10945:55:105;;13977:27:84;;;10927:74:105;13951:8:84;;13961:4;;-1:-1:-1;;;;;;;;;;;13977:8:84;;;10900:18:105;;13977:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14014:11:84;;14067:55;;;-1:-1:-1;;;;;18891:15:105;;;14067:55:84;;;18873:34:105;18943:15;;18923:18;;;18916:43;933:31:64;18975:18:105;;;18968:34;-1:-1:-1;19018:18:105;;;;19011:45;;;;14067:55:84;;;;;;;;;;18792:19:105;;;14067:55:84;;;;-1:-1:-1;;;14014:109:84;;;-1:-1:-1;;;;;14014:11:84;;;;-1:-1:-1;14014:21:84;;-1:-1:-1;14014:109:84;;14036:8;;14014:11;;:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14135:21;14158;14183:11;;;;;;;;;-1:-1:-1;;;;;14183:11:84;-1:-1:-1;;;;;14183:27:84;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14134:78;;-1:-1:-1;14134:78:84;-1:-1:-1;14240:21:84;14134:78;14240:5;:21;:::i;:::-;14263;14271:13;14263:5;:21;:::i;:::-;14323:11;;14222:63;;-1:-1:-1;14222:63:84;-1:-1:-1;14296:71:84;;14309:5;;;;-1:-1:-1;;;;;14323:11:84;992:7:93;254:4:84;;14323:11;;14296:12;:71::i;:::-;14438:27;;-1:-1:-1;;;14438:27:84;;-1:-1:-1;;;;;10945:55:105;;14438:27:84;;;10927:74:105;14412:8:84;;14422:4;;-1:-1:-1;;;;;;;;;;;14438:8:84;;;10900:18:105;;14438:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14475:11:84;;14528:55;;;-1:-1:-1;;;;;18891:15:105;;;14528:55:84;;;18873:34:105;18943:15;;18923:18;;;18916:43;933:31:64;18975:18:105;;;18968:34;-1:-1:-1;19018:18:105;;;;19011:45;;;;14528:55:84;;;;;;;;;;18792:19:105;;;14528:55:84;;;;-1:-1:-1;;;14475:109:84;;;-1:-1:-1;;;;;14475:11:84;;;;-1:-1:-1;14475:21:84;;-1:-1:-1;14475:109:84;;14497:8;;14475:11;;:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14610:21;14633;14658:11;;;;;;;;;-1:-1:-1;;;;;14658:11:84;-1:-1:-1;;;;;14658:27:84;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14609:78;;-1:-1:-1;14609:78:84;-1:-1:-1;14728:29:84;14744:13;14609:78;14728:29;:::i;:::-;14719:39;;:5;:39;:::i;:::-;14769:29;14785:13;14769;:29;:::i;:::-;14760:39;;:5;:39;:::i;:::-;14875:11;;:45;;-1:-1:-1;;;14875:45:84;;-1:-1:-1;;;;;14905:5:84;19258:55:105;;14875:45:84;;;19240:74:105;992:7:93;19330:18:105;;;19323:49;14701:99:84;;-1:-1:-1;14701:99:84;;-1:-1:-1;;;;;;;14875:11:84;;;;;:21;;19213:18:105;;14875:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14922:11;;:43;;-1:-1:-1;;;14922:43:84;;-1:-1:-1;;;;;14952:3:84;19258:55:105;;14922:43:84;;;19240:74:105;992:7:93;19330:18:105;;;19323:49;14922:11:84;;;;:21;;19213:18:105;;14922:43:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15007:11;;14821:145;;-1:-1:-1;14821:145:84;-1:-1:-1;14977:62:84;;14993:5;;;;-1:-1:-1;;;;;15007:11:84;992:7:93;15028:4:84;15007:11;;14977:15;:62::i;:::-;15075:11;;15049:58;;15065:3;;;;-1:-1:-1;;;;;15075:11:84;992:7:93;15096:4:84;15075:11;;15049:15;:58::i;:::-;15149:7;;:33;;-1:-1:-1;;;15149:33:84;;-1:-1:-1;;;;;15175:5:84;10945:55:105;;15149:33:84;;;10927:74:105;15118:197:84;;15149:7;;:17;;10900:18:105;;15149:33:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15228:21;15241:8;15228:10;:21;:::i;:::-;15206:18;15214:10;-1:-1:-1;;;;;15206:18:84;;;:::i;:::-;:44;;;;:::i;:::-;15196:54;;254:4;15196:54;:::i;:::-;15264:1;15118:197;;;;;;;;;;;;;;;;;:17;:197::i;:::-;15356:4;;:30;;-1:-1:-1;;;15356:30:84;;-1:-1:-1;;;;;15379:5:84;10945:55:105;;15356:30:84;;;10927:74:105;15325:194:84;;15356:4;;:14;;10900:18:105;;15356:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15432:21;15445:8;15432:10;:21;:::i;:::-;15410:18;15418:10;-1:-1:-1;;;;;15410:18:84;;;:::i;:::-;:44;;;;:::i;:::-;15400:54;;291:4;15400:54;:::i;:::-;15468:1;15325:194;;;;;;;;;;;;;;;;;:17;:194::i;:::-;15561:7;;:31;;-1:-1:-1;;;15561:31:84;;-1:-1:-1;;;;;15587:3:84;10945:55:105;;15561:31:84;;;10927:74:105;15530:201:84;;15561:7;;:17;;10900:18:105;;15561:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15644:21;15657:8;15644:10;:21;:::i;:::-;15624:16;15632:8;-1:-1:-1;;;;;15624:16:84;;;:::i;:::-;:42;;;;:::i;:::-;15606:15;-1:-1:-1;;;;;15606:15:84;;254:4;15606:15;:::i;:::-;:60;;;;:::i;:::-;15680:1;15530:201;;;;;;;;;;;;;;;;;:17;:201::i;:::-;15772:4;;:28;;-1:-1:-1;;;15772:28:84;;-1:-1:-1;;;;;15795:3:84;10945:55:105;;15772:28:84;;;10927:74:105;15741:198:84;;15772:4;;:14;;10900:18:105;;15772:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15852:21;15865:8;15852:10;:21;:::i;:::-;15832:16;15840:8;-1:-1:-1;;;;;15832:16:84;;;:::i;:::-;:42;;;;:::i;:::-;15814:15;-1:-1:-1;;;;;15814:15:84;;291:4;15814:15;:::i;:::-;:60;;;;:::i;:::-;15888:1;15741:198;;;;;;;;;;;;;;;;;:17;:198::i;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;10945:55:105;;11033:19:93;;;10927:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;10900:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;18219:55:105;;;11062:41:93;;;18201:74:105;18291:18;;;18284:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;18174:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;18219:55:105;;;11113:41:93;;;18201:74:105;18291:18;;;18284:34;;;11113:15:93;;;;;18174:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;12333:1200:84:-;12404:11;;12377:73;;12390:5;;;;-1:-1:-1;;;;;12404:11:84;992:7:93;254:4:84;;12443:2;;12377:12;:73::i;:::-;12521:11;;:40;;-1:-1:-1;;;12521:40:84;;12481:4;12521:40;;;11705:66:105;;;12461:17:84;11787:18:105;;;11780:50;;;12481:4:84;;12461:17;;-1:-1:-1;;;;;12521:11:84;;;;:22;;11678:18:105;;12521:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12585:4:84;;12495:66;;-1:-1:-1;12572:35:84;;-1:-1:-1;;;;;;12585:4:84;12592:3;-1:-1:-1;;;;;12572:35:84;;:4;:35::i;:::-;12618:13;;-1:-1:-1;;;12618:13:84;;-1:-1:-1;;;;;12627:3:84;10945:55:105;12618:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;12618:8:84;;;10900:18:105;;12618:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12641:4:84;;12663:11;;12641:46;;-1:-1:-1;;;12641:46:84;;-1:-1:-1;;;;;12663:11:84;;;12641:46;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;12641:4:84;;;-1:-1:-1;12641:13:84;;-1:-1:-1;12512:18:105;;12641:46:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12697:11:84;;:28;;-1:-1:-1;;;12697:28:84;;:11;:28;;;13260:41:105;-1:-1:-1;;;;;12721:3:84;13337:55:105;;13317:18;;;13310:83;12697:11:84;;;;:16;;13233:18:105;;12697:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12766:11:84;;12736:64;;12752:5;;;;-1:-1:-1;;;;;12766:11:84;992:7:93;12787:4:84;12793:2;;12736:15;:64::i;:::-;12858:11;;:29;;;-1:-1:-1;;;12858:29:84;;;;12812:20;;;;-1:-1:-1;;;;;12858:11:84;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12929:7;;:33;;-1:-1:-1;;;12929:33:84;;-1:-1:-1;;;;;12955:5:84;10945:55:105;;12929:33:84;;;10927:74:105;12811:76:84;;-1:-1:-1;12811:76:84;;-1:-1:-1;12898:140:84;;12929:7;;:17;;10900:18:105;;12929:33:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13004:1;12975:25;12988:12;12975:10;:25;:::i;:::-;12974:31;;;;:::i;:::-;12964:41;;-1:-1:-1;;;;;12964:41:84;254:4;12964:41;:::i;:::-;13007:1;12898:140;;;;;;;;;;;;;;;;;:17;:140::i;:::-;13079:4;;:30;;-1:-1:-1;;;13079:30:84;;-1:-1:-1;;;;;13102:5:84;10945:55:105;;13079:30:84;;;10927:74:105;13048:136:84;;13079:4;;:14;;10900:18:105;;13079:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13150:1;13122:24;13134:12;13122:9;:24;:::i;:::-;13121:30;;;;:::i;:::-;13111:40;;-1:-1:-1;;;;;13111:40:84;291:4;13111:40;:::i;:::-;13153:1;13048:136;;;;;;;;;;;;;;;;;:17;:136::i;:::-;13221:11;;13195:60;;13211:3;;;;-1:-1:-1;;;;;13221:11:84;992:7:93;13242:4:84;13248:2;;13195:15;:60::i;:::-;13297:7;;:31;;-1:-1:-1;;;13297:31:84;;-1:-1:-1;;;;;13323:3:84;10945:55:105;;13297:31:84;;;10927:74:105;13266:138:84;;13297:7;;:17;;10900:18:105;;13297:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13370:1;13341:25;13354:12;13341:10;:25;:::i;:::-;13340:31;;;;:::i;:::-;13330:41;;-1:-1:-1;;;;;13330:41:84;254:4;13330:41;:::i;:::-;13373:1;13266:138;;;;;;;;;;;;;;;;;:17;:138::i;:::-;13432:4;;:28;;-1:-1:-1;;;13432:28:84;;-1:-1:-1;;;;;13455:3:84;10945:55:105;;13432:28:84;;;10927:74:105;13414:112:84;;13432:4;;:14;;10900:18:105;;13432:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13501:1;13473:24;13485:12;13473:9;:24;:::i;:::-;13472:30;;;;:::i;:::-;13462:40;;-1:-1:-1;;;;;13462:40:84;291:4;13462:40;:::i;:::-;13504:1;13414:112;;;;;;;;;;;;;;;;;:17;:112::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;23169:6:105;23157:19;;12532:26:93;;;23139:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;23112:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;15952:1030:84:-;16057:11;;16039:30;;16014:22;;-1:-1:-1;;;;;16057:11:84;;16039:30;;;:::i;:::-;-1:-1:-1;;;;;10945:55:105;;;10927:74;;10915:2;10900:18;16039:30:84;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16093:7:84;;16014:55;;-1:-1:-1;16080:47:84;;-1:-1:-1;;;;;16093:7:84;16014:55;16122:4;16080;:47::i;:::-;16150:4;;16137:44;;-1:-1:-1;;;;;16150:4:84;16165:8;16176:4;16137;:44::i;:::-;16192:27;;-1:-1:-1;;;16192:27:84;;-1:-1:-1;;;;;10945:55:105;;16192:27:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;16192:8:84;;;10900:18:105;;16192:27:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16229:11:84;;-1:-1:-1;;;;;16229:11:84;;-1:-1:-1;16229:21:84;;-1:-1:-1;16251:8:84;16229:11;16283:54;;;16294:8;16283:54;;;24095:50:105;16304:1:84;24161:18:105;;;24154:45;;;933:31:64;24215:18:105;;;24208:34;24258:18;;;24251:45;;;;24067:19;;16283:54:84;;;;;;;;;;;;16229:109;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16350:20;16372;16396:11;;;;;;;;;-1:-1:-1;;;;;16396:11:84;-1:-1:-1;;;;;16396:27:84;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:76;;;;16436:20;16459:7;;;;;;;;;-1:-1:-1;;;;;16459:7:84;-1:-1:-1;;;;;16459:23:84;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16495:22;;-1:-1:-1;;;16495:22:84;;-1:-1:-1;;;;;10945:55:105;;16495:22:84;;;10927:74:105;16436:48:84;;-1:-1:-1;;;;;;;;;;;;16495:8:84;;;10900:18:105;;16495:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16527:11;;;;;;;;;-1:-1:-1;;;;;16527:11:84;-1:-1:-1;;;;;16527:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16580:7:84;;:31;;-1:-1:-1;;;16580:31:84;;-1:-1:-1;;;;;10945:55:105;;;16580:31:84;;;10927:74:105;16571:97:84;;16580:7;;:17;;10900:18:105;;16580:31:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16613:16;16628:1;16613:12;:16;:::i;:::-;-1:-1:-1;;;;;16571:97:84;;;;;;;;;;;;;;;;;;:8;:97::i;:::-;16687:4;;:28;;-1:-1:-1;;;16687:28:84;;-1:-1:-1;;;;;10945:55:105;;;16687:28:84;;;10927:74:105;16678:79:84;;16687:4;;:14;;10900:18:105;;16687:28:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16717:1;16678:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;16799:11;;:29;;;-1:-1:-1;;;16799:29:84;;;;-1:-1:-1;;;;;16799:11:84;;;;:27;;:29;;;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16768:60;;;;;;;;16839:63;16848:12;-1:-1:-1;;;;;16839:63:84;16862:1;16839:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;16912;16921:12;-1:-1:-1;;;;;16912:63:84;16935:1;16912:63;;;;;;;;;;;;;;;;;:8;:63::i;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;18201:74:105;;;1398:17:1;18291:18:105;;;18284:34;1428:1:1;;1377:7;;18174:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;6152:1715:84:-;-1:-1:-1;;;;;;;;;;;6241:9:84;-1:-1:-1;;;;;6251:14:84;;;;;;:36;;;6283:4;6269:10;-1:-1:-1;;;;;6269:18:84;;;6251:36;:54;;;;;6304:1;6291:10;-1:-1:-1;;;;;6291:14:84;;6251:54;:76;;;;;6323:4;6309:10;-1:-1:-1;;;;;6309:18:84;;;6251:76;6241:87;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;6241:87:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6386:11:84;;:40;;-1:-1:-1;;;6386:40:84;;-1:-1:-1;;;;;11723:47:105;;6386:40:84;;;11705:66:105;6340:17:84;11787:18:105;;;11780:50;;;6340:17:84;-1:-1:-1;6340:17:84;;-1:-1:-1;;;;;;6386:11:84;;;;:21;;11678:18:105;;6386:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6339:87;;;;;6436:54;6445:14;-1:-1:-1;;;;;6436:54:84;6461:1;6436:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;6514:7;;6501:33;;-1:-1:-1;;;;;6514:7:84;6524:3;6529:4;6501;:33::i;:::-;6557:4;;6544:30;;-1:-1:-1;;;;;6557:4:84;6564:3;6569:4;6544;:30::i;:::-;6585:13;;-1:-1:-1;;;6585:13:84;;-1:-1:-1;;;;;6594:3:84;10945:55:105;6585:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;6585:8:84;;;10900:18:105;;6585:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6608:4:84;;6630:11;;6608:46;;-1:-1:-1;;;6608:46:84;;-1:-1:-1;;;;;6630:11:84;;;6608:46;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;6608:4:84;;;-1:-1:-1;6608:13:84;;-1:-1:-1;12512:18:105;;6608:46:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6664:11:84;;:30;;-1:-1:-1;;;6664:30:84;;:11;:30;;;13260:41:105;-1:-1:-1;;;;;6688:5:84;13337:55:105;;13317:18;;;13310:83;6664:11:84;;;;:16;;13233:18:105;;6664:30:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6714:7:84;;:24;;-1:-1:-1;;;6714:24:84;;-1:-1:-1;;;;;6732:5:84;10945:55:105;;6714:24:84;;;10927:74:105;6705:73:84;;6714:7;;:17;;10900:18:105;;6714:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6740:10;-1:-1:-1;;;;;6705:73:84;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;6836:11;;:39;;-1:-1:-1;;;6836:39:84;;-1:-1:-1;;;;;11723:47:105;;6836:39:84;;;11705:66:105;6836:11:84;11787:18:105;;;11780:50;6790:17:84;;;;-1:-1:-1;;;;;6836:11:84;;;;:21;;11678:18:105;;6836:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6789:86;;;;;6885:54;6894:14;-1:-1:-1;;;;;6885:54:84;6910:1;6885:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;6950:13;;-1:-1:-1;;;6950:13:84;;-1:-1:-1;;;;;6959:3:84;10945:55:105;6950:13:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;6950:8:84;;;10900:18:105;;6950:13:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6973:7:84;;6998:11;;6973:49;;-1:-1:-1;;;6973:49:84;;-1:-1:-1;;;;;6998:11:84;;;6973:49;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;6973:7:84;;;-1:-1:-1;6973:16:84;;-1:-1:-1;12512:18:105;;6973:49:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7032:11:84;;:29;;-1:-1:-1;;;7032:29:84;;:11;:29;;;13260:41:105;-1:-1:-1;;;;;7055:5:84;13337:55:105;;13317:18;;;13310:83;7032:11:84;;;;:16;;13233:18:105;;7032:29:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7097:4:84;;:21;;-1:-1:-1;;;7097:21:84;;-1:-1:-1;;;;;7112:5:84;10945:55:105;;7097:21:84;;;10927:74:105;-1:-1:-1;;7097:4:84;;:14;;10900:18:105;;7097:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7072:46;;7128:63;7137:14;7153:10;-1:-1:-1;;;;;7128:63:84;;;;;;;;;;;;;;;;;;:8;:63::i;:::-;7228:11;;7202:60;;7218:3;;;;-1:-1:-1;;;;;7228:11:84;992:7:93;7249:4:84;7255:2;;7202:15;:60::i;:::-;7320:11;;:29;;;-1:-1:-1;;;7320:29:84;;;;7274:20;;;;-1:-1:-1;;;;;7320:11:84;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7369:7;;7395:11;;7369:39;;-1:-1:-1;;;7369:39:84;;-1:-1:-1;;;;;7395:11:84;;;7369:39;;;10927:74:105;7273:76:84;;-1:-1:-1;7273:76:84;;-1:-1:-1;7360:90:84;;7369:7;;;:17;;10900:18:105;;7369:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7410:12;-1:-1:-1;;;;;7360:90:84;;;;;;;;;;;;;;;;;;:8;:90::i;:::-;7469:4;;7492:11;;7469:36;;-1:-1:-1;;;7469:36:84;;-1:-1:-1;;;;;7492:11:84;;;7469:36;;;10927:74:105;7460:87:84;;7469:4;;;;;:14;;10900:18:105;;7469:36:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7507:12;-1:-1:-1;;;;;7460:87:84;;;;;;;;;;;;;;;;;;:8;:87::i;:::-;7577:7;;:22;;-1:-1:-1;;;7577:22:84;;-1:-1:-1;;;;;7595:3:84;10945:55:105;;7577:22:84;;;10927:74:105;-1:-1:-1;;7577:7:84;;:17;;10900:18:105;;7577:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7628:4;;:19;;-1:-1:-1;;;7628:19:84;;-1:-1:-1;;;;;7643:3:84;10945:55:105;;7628:19:84;;;10927:74:105;7558:41:84;;-1:-1:-1;;;7628:4:84;;;;:14;;10900:18:105;;7628:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7609:38;;7658:94;7667:8;7712:12;-1:-1:-1;;;;;7677:47:84;7699:10;-1:-1:-1;;;;;7677:32:84;7687:9;-1:-1:-1;;;;;7677:19:84;254:4;7677:19;;;;:::i;:::-;:32;;;;:::i;:::-;:47;;;;:::i;:::-;7658:94;;;;;;;;;;;;;;;;;:8;:94::i;:::-;7762:98;7771:8;7820:12;-1:-1:-1;;;;;7781:51:84;7803:14;7791:9;-1:-1:-1;;;;;7781:19:84;291:4;7781:19;;;;:::i;:::-;:36;;;;:::i;:::-;:51;;;;:::i;:::-;7762:98;;;;;;;;;;;;;;;;;:8;:98::i;22135:980::-;22325:58;;-1:-1:-1;;;22325:58:84;;510:7:75;22335:47:84;;;;;22325:58;;;445:41:105;-1:-1:-1;;;;;;;;;;;22325:9:84;;;418:18:105;;22325:58:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22394:15;22434:7;22412:29;;22420:10;22412:19;;:29;;;;:::i;:::-;:36;;22444:4;22412:36;:::i;:::-;22394:54;;22458:14;22556:3;22529:18;22476:71;;22525:1;22496:24;22477:43;;22485:7;22477:16;;:43;;;;:::i;:::-;22476:50;;;;:::i;:::-;:71;;;;:::i;:::-;:76;;22550:2;22476:76;:::i;:::-;22475:84;;;;:::i;:::-;22458:101;-1:-1:-1;;;;;;;;;;;;22570:9:84;22599:4;22580:16;22458:101;22580:7;:16;:::i;:::-;22570:34;;-1:-1:-1;;;;;;22570:34:84;;;;;;;22580:23;-1:-1:-1;22570:34:84;;;445:41:105;418:18;;22570:34:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22652:7:84;;22661:4;;22635:40;;-1:-1:-1;;26281:2:105;26277:15;;;;;22635:40:84;;;26261:37:105;26332:15;;;;;26314:12;;;26307:46;26405:15;26409:3;26387:16;;;26383:38;26369:12;;;26362:60;22615:17:84;;-1:-1:-1;26438:12:105;;;-1:-1:-1;22635:40:84;;;-1:-1:-1;;22635:40:84;;;;;;;;;22749:18;;22776:15;;22635:40;22776:15;;;22635:40;;-1:-1:-1;22707:85:84;;-1:-1:-1;;;;;22749:18:84;;;;22635:40;;22707:33;:85::i;:::-;22686:11;:107;;-1:-1:-1;;;;;;22686:107:84;-1:-1:-1;;;;;22686:107:84;;;;;;22821:7;;;22804:26;;-1:-1:-1;;;22804:26:84;;22821:7;;22804:26;;;10927:74:105;-1:-1:-1;;;;;;;;;;;22804:8:84;;;10900:18:105;22804:26:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22840:11:84;;:46;;-1:-1:-1;;;22840:46:84;;:11;:46;;;26885:34:105;;;26935:18;;;26928:43;;;26987:18;;;26980:43;;;27039:18;;;27032:43;;;27118:19;;;27111:44;;;27171:19;;;27164:44;;;27224:19;;;27217:44;;;27277:19;;;27270:44;-1:-1:-1;;;;;22840:11:84;;;;-1:-1:-1;22840:22:84;;-1:-1:-1;26832:19:105;;22840:46:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22897:61:84;;-1:-1:-1;;;22897:61:84;;-1:-1:-1;;;22897:61:84;;;27469:52:105;-1:-1:-1;;;;;;;;;;;22897:15:84;-1:-1:-1;22897:15:84;;-1:-1:-1;27442:18:105;;22897:61:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22985:7:84;;;22968:26;;-1:-1:-1;;;22968:26:84;;-1:-1:-1;;;;;22985:7:84;;;22968:26;;;10927:74:105;-1:-1:-1;;;;;;;;;;;22968:8:84;-1:-1:-1;22968:8:84;;-1:-1:-1;10900:18:105;22968:26:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23004:11:84;;:104;;-1:-1:-1;;;23004:104:84;;27879:6:105;27912:15;;23004:104:84;;;27894:34:105;23004:11:84;27944:18:105;;;27937:43;;;27996:18;;;27989:43;;;28048:18;;;28041:43;;;28103:8;28148:15;;;28127:19;;;28120:44;28180:19;;;28173:44;;;;28254:15;;28233:19;;;28226:44;-1:-1:-1;;;;;23004:11:84;;;;-1:-1:-1;23004:34:84;;-1:-1:-1;27841:19:105;;23004:104:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2304:142:5;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;589:984:84:-;-1:-1:-1;;;;;;;;;;;653:9:84;-1:-1:-1;;;;;663:13:84;;;;;;:34;;;693:4;680:9;-1:-1:-1;;;;;680:17:84;;;663:34;653:45;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;653:45:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;754:11:84;;:38;;-1:-1:-1;;;754:38:84;;-1:-1:-1;;;;;11723:47:105;;754:38:84;;;11705:66:105;754:11:84;11787:18:105;;;11780:50;710:16:84;;-1:-1:-1;710:16:84;;-1:-1:-1;;;;;;754:11:84;;;;:21;;11678:18:105;;754:38:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;709:83;;;;;802:49;811:13;-1:-1:-1;;;;;802:49:84;826:1;802:49;;;;;;;;;;;;;;;;;:8;:49::i;:::-;875:7;;862:39;;-1:-1:-1;;;;;875:7:84;885:5;-1:-1:-1;;;;;862:39:84;;:4;:39::i;:::-;912:15;;-1:-1:-1;;;912:15:84;;-1:-1:-1;;;;;921:5:84;10945:55:105;912:15:84;;;10927:74:105;-1:-1:-1;;;;;;;;;;;912:8:84;;;10900:18:105;;912:15:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;937:7:84;;962:11;;937:48;;-1:-1:-1;;;937:48:84;;-1:-1:-1;;;;;962:11:84;;;937:48;;;12539:74:105;-1:-1:-1;;;;;12649:47:105;;12629:18;;;12622:75;937:7:84;;;-1:-1:-1;937:16:84;;-1:-1:-1;12512:18:105;;937:48:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;995:11:84;;:29;;-1:-1:-1;;;995:29:84;;:11;:29;;;13260:41:105;-1:-1:-1;;;;;1018:5:84;13337:55:105;;13317:18;;;13310:83;995:11:84;;;;:16;;13233:18:105;;995:29:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1044:7:84;;:24;;-1:-1:-1;;;1044:24:84;;-1:-1:-1;;;;;1062:5:84;10945:55:105;;1044:24:84;;;10927:74:105;1035:60:84;;1044:7;;:17;;10900:18:105;;1044:24:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1070:1;1035:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;1114:4;;:21;;-1:-1:-1;;;1114:21:84;;-1:-1:-1;;;;;1129:5:84;10945:55:105;;1114:21:84;;;10927:74:105;1105:65:84;;1114:4;;:14;;10900:18:105;;1114:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1137:9;-1:-1:-1;;;;;1105:65:84;;;;;;;;;;;;;;;;;;:8;:65::i;:::-;1207:11;;1181:60;;1197:3;;;;-1:-1:-1;;;;;1207:11:84;992:7:93;1228:4:84;1234:2;;1181:15;:60::i;:::-;1278:11;;:29;;;-1:-1:-1;;;1278:29:84;;;;1253:20;;-1:-1:-1;;;;;1278:11:84;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1337:7:84;;:22;;-1:-1:-1;;;1337:22:84;;-1:-1:-1;;;;;1355:3:84;10945:55:105;;1337:22:84;;;10927:74:105;1252:55:84;;-1:-1:-1;;;1337:7:84;;;;:17;;10900:18:105;;1337:22:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1388:4;;:19;;-1:-1:-1;;;1388:19:84;;-1:-1:-1;;;;;1403:3:84;10945:55:105;;1388:19:84;;;10927:74:105;1318:41:84;;-1:-1:-1;;;1388:4:84;;;;:14;;10900:18:105;;1388:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1369:38;;1418:76;1427:8;1458:12;-1:-1:-1;;;;;1437:33:84;1447:8;-1:-1:-1;;;;;1437:18:84;254:4;1437:18;;;;:::i;:::-;:33;;;;:::i;:::-;1418:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;1504:62;1513:8;1523:19;-1:-1:-1;;;;;1523:19:84;;291:4;1523:19;:::i;:::-;1504:62;;;;;;;;;;;;;;;;;:8;:62::i;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;28483:2:105;11461:73:93;;;28465:21:105;28522:2;28502:18;;;28495:30;28561:26;28541:18;;;28534:54;28605:18;;11461:73:93;28281:348:105;11461:73:93;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;19258:55:105;;;11821:26:93;;;19240:74:105;19362:8;19350:21;;19330:18;;;19323:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;19213:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;10945:55:105;;11974:14:93;;;10927:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;10900:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;31324:4:105;31312:17;;;31294:36;;31282:2;31267:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;31324:4:105;31312:17;;;31294:36;;31282:2;31267:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;31324:4:105;31312:17;;;31294:36;;31282:2;31267:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;31324:4:105;31312:17;;;31294:36;;31282:2;31267:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;31324:4:105;31312:17;;;31294:36;;31282:2;31267:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;31324:4:105;31312:17;;;31294:36;;31282:2;31267:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;31952:74:105;32042:18;;;32035:30;;;;32101:1;32081:18;;;32074:29;32139:9;32119:18;;;32112:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;32166:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;32408:74:105;;;;32498:18;;;32491:30;;;;32537:18;;;32530:29;-1:-1:-1;;;32575:18:105;;;32568:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;32619:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;32861:74:105;;;;32951:18;;;32944:30;;;;32990:18;;;32983:29;-1:-1:-1;;;33028:18:105;;;33021:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;33072:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;33314:74:105;;;;33404:18;;;33397:30;;;;33443:18;;;33436:29;-1:-1:-1;;;33481:18:105;;;33474:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;33525:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;33767:74:105;;;;33857:18;;;33850:30;;;;33896:18;;;33889:29;-1:-1:-1;;;33934:18:105;;;33927:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;33978:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;34220:74:105;;;;34310:18;;;34303:30;;;;34349:18;;;34342:29;-1:-1:-1;;;34387:18:105;;;34380:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;34431:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;34673:74:105;34763:18;;;34756:30;34822:1;34802:18;;;34795:29;-1:-1:-1;;;34840:18:105;;;34833:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;34883:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;35125:74:105;35215:18;;;35208:30;35274:1;35254:18;;;35247:29;35312:10;35292:18;;;35285:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;35340:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;35667:15:105;;;35649:34;;35719:15;;;;35714:2;35699:18;;35692:43;35766:2;35751:18;;35744:34;35576:2;35561:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;10945:55:105;;;10927:74;;10915:2;10900:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;10927:74:105;;;;3824:7:93;;;;:31;;10900:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;36385:15:105;;;36367:34;;36437:15;;;36432:2;36417:18;;36410:43;36489:15;;;36484:2;36469:18;;36462:43;36294:2;36279:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;36385:15:105;;;36367:34;;36437:15;;;36432:2;36417:18;;36410:43;36489:15;;;36484:2;36469:18;;36462:43;36294:2;36279:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;37140:74:105;37230:18;;;37223:30;;;;37289:1;37269:18;;;37262:29;37327:8;37307:18;;;37300:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;37353:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;37595:74:105;37685:18;;;37678:30;37744:1;37724:18;;;37717:29;37782:8;37762:18;;;37755:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;37808:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;38050:74:105;38140:18;;;38133:30;;;;38199:1;38179:18;;;38172:29;38237:9;38217:18;;;38210:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;38264:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;38506:74:105;38596:18;;;38589:30;38655:2;38635:18;;;38628:30;38694:20;38674:18;;;38667:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;38732:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;38974:74:105;39064:18;;;39057:30;39123:1;39103:18;;;39096:29;39161:10;39141:18;;;39134:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;39189:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;39431:74:105;39521:18;;;39514:30;39580:1;39560:18;;;39553:29;39618:11;39598:18;;;39591:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;39647:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;18174:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;4729:4:93;;;:12;;18174:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;4789:4:93;;;:12;;18174:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;4849:4:93;;;:12;;18174:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;4909:4:93;;;:12;;18174:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;4969:4:93;;;:12;;18174:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5029:3:93;;;:11;;18174:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5088:8:93;;;:16;;18174:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5153:7:93;;;:15;;18174:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5214:4:93;;;:12;;18174:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5272:4:93;;;:12;;18174:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5330:4:93;;;:12;;18174:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5388:4:93;;;:12;;18174:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5446:4:93;;;:12;;18174:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5504:3:93;;;:11;;18174:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;18201:74:105;-1:-1:-1;;18291:18:105;;;18284:34;5561:8:93;;;:16;;18174:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;7147:160::-;7217:14;7253:47;7277:6;7285;992:7;7253:23;:47::i;:::-;7243:57;7147:160;-1:-1:-1;;;7147:160:93:o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;:::-;26935:117;;;:::o;16826:208:1:-;16979:48;;-1:-1:-1;;;16979:48:1;;-1:-1:-1;;;;;;;;;;;16979:20:1;;;:48;;17000:4;;17006:5;;17013:8;;17023:3;;16979:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16826:208;;;;:::o;2386:134::-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;15596:::-;15694:29;;-1:-1:-1;;;15694:29:1;;-1:-1:-1;;;;;;;;;;;15694:11:1;;;:29;;15706:4;;15712:5;;15719:3;;15694:29;;;:::i;13228:134::-;13326:29;;-1:-1:-1;;;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:11:1;;;:29;;13338:4;;13344:5;;13351:3;;13326:29;;;:::i;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8711:::-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;1290:9525:67:-;1409:16;1584:4;1578;1574:15;1568:22;1635:4;1629;1625:15;1619:22;1678:4;1672:11;1732:10;1725:4;1719;1715:15;1711:32;1777:7;1771:14;1915:1;1903:10;1899:18;2177:6;2164:11;2161:23;2158:237;;;2288:10;2282:4;2275:24;2376:4;2370;2363:18;2158:237;9697:28;9691:4;9684:42;9819:14;9812:4;9806;9802:15;9795:39;10010:62;9996:11;9990:4;9986:22;9983:90;9955:4;9942:11;9938:22;9932:4;9928:33;9904:187;9881:4;9875;9871:15;9847:258;10144:11;10138:4;10134:22;10125:7;10118:39;10271:4;10264;10251:11;10247:22;10240:4;10234;10230:15;10227:1;10219:57;10207:69;;;10346:8;10336:230;;10459:10;10453:4;10446:24;10547:4;10541;10534:18;10336:230;10646:24;;10683;;-1:-1:-1;;10727:15:67;;10720:33;-1:-1:-1;;10773:15:67;;;10766:33;;;;-1:-1:-1;1290:9525:67;;-1:-1:-1;1290:9525:67:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;10927:74:105;6180:7:93;;;:21;;10900:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;10927:74:105;6253:7:93;;;:21;;10900:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;10927:74:105;6323:7:93;;;:21;;10900:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;10927:74:105;6393:7:93;;;:21;;10900:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;10927:74:105;6463:7:93;;;:21;;10900:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;10927:74:105;6533:7:93;;;:21;;10900:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;10927:74:105;6602:7:93;;;:21;;10900:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;10927:74:105;6675:7:93;;;:21;;10900:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;41602:6:105;41635:15;;6788:346:93;;;41617:34:105;1202:5:93;41667:18:105;;;41660:43;;;1262:2:93;41719:18:105;;;41712:43;1318:3:93;41771:18:105;;;41764:43;41823:19;;;41816:44;;;;1446:6:93;41903:19:105;;;41896:44;1508:5:93;41956:19:105;;;41949:44;1581:7:93;42009:19:105;;;42002:44;6788:7:93;42062:19:105;;;42055:51;-1:-1:-1;;;;;6788:7:93;;:17;;41564:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;:::o;7313:216::-;7410:14;7446:76;7480:6;7488;7496:7;1147:2;7446:33;:76::i;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;10945:55:105;;;27501:38:3;;;;10927:74:105;;;;27501:38:3;;;;;;;;;;10900:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;7535:257:93:-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;42747:15:105;;;7729:54:93;;;42729:34:105;42799:15;;;42779:18;;;42772:43;;;;42863:8;42851:21;;42831:18;;;42824:49;42921:6;42909:19;;42889:18;;;42882:47;7674:14:93;;7729:7;;;;:20;;42640:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;:::-;10474:120;;:::o;10966:1095::-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;18219:55:105;;11664:18:8;;;18201:74:105;18291:18;;;18284:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;18174:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;44419:2:105;11725:175:8;;;44401:21:105;44458:3;44438:18;;;44431:31;44498:34;44478:18;;;44471:62;44569:34;44549:18;;;44542:62;44641:34;44620:19;;;44613:63;-1:-1:-1;;;44692:19:105;;;44685:46;44748:19;;11725:175:8;44217:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;44998:55:105;;11920:24:8;;;44980:74:105;45070:18;;;45063:34;;;45113:18;;;45106:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;44953:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;13395:393::-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;10945:55:105;;1990:25:8;;;10927:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;10900:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;18219:55:105;;;;18201:74;;18306:2;18291:18;;18284:34;18189:2;18174:18;;18001:323;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;18219:55:105;;;18201:74;;18291:18;;;18284:34;18174:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;44419:2:105;2268:187:8;;;44401:21:105;44458:3;44438:18;;;44431:31;44498:34;44478:18;;;44471:62;44569:34;44549:18;;;44542:62;44641:34;44620:19;;;44613:63;-1:-1:-1;;;44692:19:105;;;44685:46;44748:19;;2268:187:8;44217:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;46017:55:105;;;45999:74;;-1:-1:-1;;;;;;46109:33:105;;;46089:18;;;46082:61;;;;46159:18;;;46152:34;46217:2;46202:18;;46195:34;45986:3;45971:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;18219:55:105;;;;18201:74;;18306:2;18291:18;;18284:34;18189:2;18174:18;;18001:323;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;18219:55:105;;;18201:74;;18291:18;;;18284:34;18174:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;44998:55:105;;;3215:32:8;;;44980:74:105;45070:18;;;45063:34;45113:18;;;45106:34;;;44953:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;46017:55:105;;;45999:74;;-1:-1:-1;;;;;;46109:33:105;;;46089:18;;;46082:61;;;;46159:18;;;46152:34;46217:2;46202:18;;46195:34;45986:3;45971:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;44998:55:105;;;3941:29:8;;;44980:74:105;45070:18;;;45063:34;45113:18;;;45106:34;;;44953:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;44998:55:105;;;4033:29:8;;;44980:74:105;45070:18;;;45063:34;45113:18;;;45106:34;;;44953:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;46442:2:105;4107:74:8;;;46424:21:105;46461:18;;;46454:30;;;;46520:34;46500:18;;;46493:62;46591:34;46571:18;;;46564:62;46643:19;;4107:74:8;46240:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;46875:2:105;4202:162:8;;;46857:21:105;46914:2;46894:18;;;46887:30;46953:34;46933:18;;;46926:62;47024:17;47004:18;;;46997:45;47059:19;;4202:162:8;46673:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:146;-1:-1:-1;;;;;576:5:105;572:46;565:5;562:57;552:85;;633:1;630;623:12;648:247;707:6;760:2;748:9;739:7;735:23;731:32;728:52;;;776:1;773;766:12;728:52;815:9;802:23;834:31;859:5;834:31;:::i;900:681::-;1071:2;1123:21;;;1193:13;;1096:18;;;1215:22;;;1042:4;;1071:2;1294:15;;;;1268:2;1253:18;;;1042:4;1337:218;1351:6;1348:1;1345:13;1337:218;;;1416:13;;-1:-1:-1;;;;;1412:62:105;1400:75;;1530:15;;;;1495:12;;;;1373:1;1366:9;1337:218;;;-1:-1:-1;1572:3:105;;900:681;-1:-1:-1;;;;;;900:681:105:o;1586:388::-;1654:6;1662;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1770:9;1757:23;1789:31;1814:5;1789:31;:::i;:::-;1839:5;-1:-1:-1;1896:2:105;1881:18;;1868:32;1909:33;1868:32;1909:33;:::i;:::-;1961:7;1951:17;;;1586:388;;;;;:::o;1979:250::-;2064:1;2074:113;2088:6;2085:1;2082:13;2074:113;;;2164:11;;;2158:18;2145:11;;;2138:39;2110:2;2103:10;2074:113;;;-1:-1:-1;;2221:1:105;2203:16;;2196:27;1979:250::o;2234:271::-;2276:3;2314:5;2308:12;2341:6;2336:3;2329:19;2357:76;2426:6;2419:4;2414:3;2410:14;2403:4;2396:5;2392:16;2357:76;:::i;:::-;2487:2;2466:15;-1:-1:-1;;2462:29:105;2453:39;;;;2494:4;2449:50;;2234:271;-1:-1:-1;;2234:271:105:o;2510:1765::-;2743:2;2795:21;;;2865:13;;2768:18;;;2887:22;;;2714:4;;2743:2;2928;;2946:18;;;;2983:1;3026:15;;;3011:31;;3007:40;;3070:15;;;2714:4;;3134:1112;3150:6;3145:3;3142:15;3134:1112;;;-1:-1:-1;;3219:22:105;;;3215:36;3203:49;;3275:13;;3362:9;;-1:-1:-1;;;;;3358:58:105;3343:74;;3456:11;;3450:18;3488:15;;;3481:27;;;3569:19;;3315:15;;;3601:24;;;3782:21;;;;3648:2;3730:17;;;3718:30;;3714:39;;;3672:15;;;;3827:1;3841:296;3857:8;3852:3;3849:17;3841:296;;;3963:2;3959:7;3950:6;3942;3938:19;3934:33;3927:5;3920:48;3995:42;4030:6;4019:8;4013:15;3995:42;:::i;:::-;4066:17;;;;3985:52;-1:-1:-1;4109:14:105;;;;3885:1;3876:11;3841:296;;;-1:-1:-1;;;4224:12:105;;;;4160:6;-1:-1:-1;;4189:15:105;;;;3176:1;3167:11;3134:1112;;;-1:-1:-1;4263:6:105;;2510:1765;-1:-1:-1;;;;;;;;;;2510:1765:105:o;4280:156::-;4346:20;;4406:4;4395:16;;4385:27;;4375:55;;4426:1;4423;4416:12;4441:252;4505:6;4513;4566:2;4554:9;4545:7;4541:23;4537:32;4534:52;;;4582:1;4579;4572:12;4534:52;4605:27;4622:9;4605:27;:::i;:::-;4595:37;;4651:36;4683:2;4672:9;4668:18;4651:36;:::i;:::-;4641:46;;4441:252;;;;;:::o;4880:1590::-;5082:4;5111:2;5151;5140:9;5136:18;5181:2;5170:9;5163:21;5204:6;5239;5233:13;5270:6;5262;5255:22;5296:2;5286:12;;5329:2;5318:9;5314:18;5307:25;;5391:2;5381:6;5378:1;5374:14;5363:9;5359:30;5355:39;5429:2;5421:6;5417:15;5450:1;5471;5481:960;5497:6;5492:3;5489:15;5481:960;;;5566:22;;;-1:-1:-1;;5562:36:105;5550:49;;5622:13;;5709:9;;-1:-1:-1;;;;;5705:58:105;5690:74;;5803:11;;5797:18;5835:15;;;5828:27;;;5916:19;;5662:15;;;5948:24;;;6038:21;;;;6083:1;;6006:2;5994:15;;;6097:236;6113:8;6108:3;6105:17;6097:236;;;6194:15;;-1:-1:-1;;;;;;6190:42:105;6176:57;;6302:17;;;;6141:1;6132:11;;;;;6259:14;;;;6097:236;;;-1:-1:-1;6419:12:105;;;;6356:5;-1:-1:-1;;;6384:15:105;;;;5523:1;5514:11;5481:960;;;-1:-1:-1;6458:6:105;;4880:1590;-1:-1:-1;;;;;;;;;4880:1590:105:o;6475:803::-;6637:4;6666:2;6706;6695:9;6691:18;6736:2;6725:9;6718:21;6759:6;6794;6788:13;6825:6;6817;6810:22;6863:2;6852:9;6848:18;6841:25;;6925:2;6915:6;6912:1;6908:14;6897:9;6893:30;6889:39;6875:53;;6963:2;6955:6;6951:15;6984:1;6994:255;7008:6;7005:1;7002:13;6994:255;;;7101:2;7097:7;7085:9;7077:6;7073:22;7069:36;7064:3;7057:49;7129:40;7162:6;7153;7147:13;7129:40;:::i;:::-;7119:50;-1:-1:-1;7227:12:105;;;;7192:15;;;;7030:1;7023:9;6994:255;;;-1:-1:-1;7266:6:105;;6475:803;-1:-1:-1;;;;;;;6475:803:105:o;7283:161::-;7350:20;;7410:8;7399:20;;7389:31;;7379:59;;7434:1;7431;7424:12;7449:322;7523:6;7531;7539;7592:2;7580:9;7571:7;7567:23;7563:32;7560:52;;;7608:1;7605;7598:12;7560:52;7631:28;7649:9;7631:28;:::i;:::-;7621:38;;7706:2;7695:9;7691:18;7678:32;7668:42;;7729:36;7761:2;7750:9;7746:18;7729:36;:::i;:::-;7719:46;;7449:322;;;;;:::o;7971:154::-;-1:-1:-1;;;;;8050:5:105;8046:54;8039:5;8036:65;8026:93;;8115:1;8112;8105:12;8130:898;8263:6;8271;8279;8287;8295;8303;8311;8319;8372:3;8360:9;8351:7;8347:23;8343:33;8340:53;;;8389:1;8386;8379:12;8340:53;8428:9;8415:23;8447:31;8472:5;8447:31;:::i;:::-;8497:5;-1:-1:-1;8554:2:105;8539:18;;8526:32;8567:33;8526:32;8567:33;:::i;:::-;8619:7;-1:-1:-1;8678:2:105;8663:18;;8650:32;8691:33;8650:32;8691:33;:::i;:::-;8743:7;-1:-1:-1;8769:37:105;8802:2;8787:18;;8769:37;:::i;:::-;8759:47;;8853:3;8842:9;8838:19;8825:33;8815:43;;8905:3;8894:9;8890:19;8877:33;8867:43;;8929:37;8961:3;8950:9;8946:19;8929:37;:::i;:::-;8919:47;;8985:37;9017:3;9006:9;9002:19;8985:37;:::i;:::-;8975:47;;8130:898;;;;;;;;;;;:::o;9033:117::-;9118:6;9111:5;9107:18;9100:5;9097:29;9087:57;;9140:1;9137;9130:12;9155:245;9213:6;9266:2;9254:9;9245:7;9241:23;9237:32;9234:52;;;9282:1;9279;9272:12;9234:52;9321:9;9308:23;9340:30;9364:5;9340:30;:::i;9405:529::-;9487:6;9495;9503;9511;9564:3;9552:9;9543:7;9539:23;9535:33;9532:53;;;9581:1;9578;9571:12;9532:53;9620:9;9607:23;9639:30;9663:5;9639:30;:::i;:::-;9688:5;-1:-1:-1;9745:2:105;9730:18;;9717:32;9758;9717;9758;:::i;:::-;9809:7;-1:-1:-1;9835:37:105;9868:2;9853:18;;9835:37;:::i;:::-;9825:47;;9891:37;9924:2;9913:9;9909:18;9891:37;:::i;:::-;9881:47;;9405:529;;;;;;;:::o;9939:829::-;10063:6;10071;10079;10087;10095;10103;10111;10164:3;10152:9;10143:7;10139:23;10135:33;10132:53;;;10181:1;10178;10171:12;10132:53;10220:9;10207:23;10239:31;10264:5;10239:31;:::i;:::-;10289:5;-1:-1:-1;10346:2:105;10331:18;;10318:32;10359:33;10318:32;10359:33;:::i;:::-;10411:7;-1:-1:-1;10470:2:105;10455:18;;10442:32;10483:33;10442:32;10483:33;:::i;:::-;10535:7;-1:-1:-1;10561:37:105;10594:2;10579:18;;10561:37;:::i;:::-;10551:47;;10645:3;10634:9;10630:19;10617:33;10607:43;;10669:37;10701:3;10690:9;10686:19;10669:37;:::i;:::-;10659:47;;10725:37;10757:3;10746:9;10742:19;10725:37;:::i;:::-;10715:47;;9939:829;;;;;;;;;;:::o;11012:184::-;11082:6;11135:2;11123:9;11114:7;11110:23;11106:32;11103:52;;;11151:1;11148;11141:12;11103:52;-1:-1:-1;11174:16:105;;11012:184;-1:-1:-1;11012:184:105:o;11841:519::-;11929:6;11937;11945;11998:2;11986:9;11977:7;11973:23;11969:32;11966:52;;;12014:1;12011;12004:12;11966:52;12046:9;12040:16;12065:31;12090:5;12065:31;:::i;:::-;12165:2;12150:18;;12144:25;12115:5;;-1:-1:-1;12178:33:105;12144:25;12178:33;:::i;:::-;12282:2;12267:18;;12261:25;12230:7;;-1:-1:-1;12295:33:105;12261:25;12295:33;:::i;:::-;12347:7;12337:17;;;11841:519;;;;;:::o;12708:164::-;12784:13;;12833;;12826:21;12816:32;;12806:60;;12862:1;12859;12852:12;12877:202;12944:6;12997:2;12985:9;12976:7;12972:23;12968:32;12965:52;;;13013:1;13010;13003:12;12965:52;13036:37;13063:9;13036:37;:::i;13593:385::-;13672:6;13680;13733:2;13721:9;13712:7;13708:23;13704:32;13701:52;;;13749:1;13746;13739:12;13701:52;13781:9;13775:16;13800:31;13825:5;13800:31;:::i;:::-;13900:2;13885:18;;13879:25;13850:5;;-1:-1:-1;13913:33:105;13879:25;13913:33;:::i;14214:127::-;14275:10;14270:3;14266:20;14263:1;14256:31;14306:4;14303:1;14296:15;14330:4;14327:1;14320:15;14346:200;-1:-1:-1;;;;;14482:10:105;;;14470;;;14466:27;;14505:12;;;14502:38;;;14520:18;;:::i;14551:127::-;14612:10;14607:3;14603:20;14600:1;14593:31;14643:4;14640:1;14633:15;14667:4;14664:1;14657:15;14683:216;14723:1;-1:-1:-1;;;;;14810:2:105;14807:1;14803:10;14832:3;14822:37;;14839:18;;:::i;:::-;14877:10;;14873:20;;;;;14683:216;-1:-1:-1;;14683:216:105:o;14904:125::-;14969:9;;;14990:10;;;14987:36;;;15003:18;;:::i;15034:197::-;-1:-1:-1;;;;;15156:10:105;;;15168;;;15152:27;;15191:11;;;15188:37;;;15205:18;;:::i;15236:128::-;15303:9;;;15324:11;;;15321:37;;;15338:18;;:::i;16096:432::-;-1:-1:-1;;;;;16326:6:105;16322:55;16311:9;16304:74;16414:6;16409:2;16398:9;16394:18;16387:34;16457:2;16452;16441:9;16437:18;16430:30;16285:4;16477:45;16518:2;16507:9;16503:18;16495:6;16477:45;:::i;16533:251::-;16603:6;16656:2;16644:9;16635:7;16631:23;16627:32;16624:52;;;16672:1;16669;16662:12;16624:52;16704:9;16698:16;16723:31;16748:5;16723:31;:::i;16789:380::-;16868:1;16864:12;;;;16911;;;16932:61;;16986:4;16978:6;16974:17;16964:27;;16932:61;17039:2;17031:6;17028:14;17008:18;17005:38;17002:161;;17085:10;17080:3;17076:20;17073:1;17066:31;17120:4;17117:1;17110:15;17148:4;17145:1;17138:15;17002:161;;16789:380;;;:::o;17692:148::-;17780:4;17759:12;;;17773;;;17755:31;;17798:13;;17795:39;;;17814:18;;:::i;17845:151::-;17935:4;17928:12;;;17914;;;17910:31;;17953:14;;17950:40;;;17970:18;;:::i;18329:249::-;18398:6;18451:2;18439:9;18430:7;18426:23;18422:32;18419:52;;;18467:1;18464;18457:12;18419:52;18499:9;18493:16;18518:30;18542:5;18518:30;:::i;19383:168::-;19456:9;;;19487;;19504:15;;;19498:22;;19484:37;19474:71;;19525:18;;:::i;19556:120::-;19596:1;19622;19612:35;;19627:18;;:::i;:::-;-1:-1:-1;19661:9:105;;19556:120::o;19953:127::-;20014:10;20009:3;20005:20;20002:1;19995:31;20045:4;20042:1;20035:15;20069:4;20066:1;20059:15;20085:127;20146:10;20141:3;20137:20;20134:1;20127:31;20177:4;20174:1;20167:15;20201:4;20198:1;20191:15;20217:135;20256:3;20277:17;;;20274:43;;20297:18;;:::i;:::-;-1:-1:-1;20344:1:105;20333:13;;20217:135::o;20659:854::-;20857:4;20905:2;20894:9;20890:18;-1:-1:-1;;;;;21008:2:105;21000:6;20996:15;20985:9;20978:34;21031:2;21069;21064;21053:9;21049:18;21042:30;21092:6;21127;21121:13;21158:6;21150;21143:22;21196:3;21185:9;21181:19;21174:26;;21235:2;21227:6;21223:15;21209:29;;21256:1;21266:169;21280:6;21277:1;21274:13;21266:169;;;21341:13;;21329:26;;21410:15;;;;21375:12;;;;21302:1;21295:9;21266:169;;;21270:3;;21452;21444:11;;;;21503:2;21495:6;21491:15;21486:2;21475:9;21471:18;21464:43;;;20659:854;;;;;;:::o;21518:275::-;21589:2;21583:9;21654:2;21635:13;;-1:-1:-1;;21631:27:105;21619:40;;21689:18;21674:34;;21710:22;;;21671:62;21668:88;;;21736:18;;:::i;:::-;21772:2;21765:22;21518:275;;-1:-1:-1;21518:275:105:o;21798:183::-;21858:4;21891:18;21883:6;21880:30;21877:56;;;21913:18;;:::i;:::-;-1:-1:-1;21958:1:105;21954:14;21970:4;21950:25;;21798:183::o;21986:1003::-;22099:6;22107;22115;22168:2;22156:9;22147:7;22143:23;22139:32;22136:52;;;22184:1;22181;22174:12;22136:52;22213:9;22207:16;22197:26;;22242:2;22284;22273:9;22269:18;22263:25;22253:35;;22332:2;22321:9;22317:18;22311:25;22359:18;22351:6;22348:30;22345:50;;;22391:1;22388;22381:12;22345:50;22414:22;;22467:4;22459:13;;22455:27;-1:-1:-1;22445:55:105;;22496:1;22493;22486:12;22445:55;22525:2;22519:9;22548:60;22564:43;22604:2;22564:43;:::i;:::-;22548:60;:::i;:::-;22642:15;;;22724:1;22720:10;;;;22712:19;;22708:28;;;22673:12;;;;22748:19;;;22745:39;;;22780:1;22777;22770:12;22745:39;22804:11;;;;22824:135;22840:6;22835:3;22832:15;22824:135;;;22906:10;;22894:23;;22857:12;;;;22937;;;;22824:135;;;22978:5;22968:15;;;;;;;21986:1003;;;;;:::o;23188:634::-;23318:6;23326;23334;23342;23350;23358;23366;23374;23427:3;23415:9;23406:7;23402:23;23398:33;23395:53;;;23444:1;23441;23434:12;23395:53;23473:9;23467:16;23457:26;;23523:2;23512:9;23508:18;23502:25;23492:35;;23567:2;23556:9;23552:18;23546:25;23536:35;;23611:2;23600:9;23596:18;23590:25;23580:35;;23655:3;23644:9;23640:19;23634:26;23624:36;;23700:3;23689:9;23685:19;23679:26;23669:36;;23745:3;23734:9;23730:19;23724:26;23714:36;;23769:47;23811:3;23800:9;23796:19;23769:47;:::i;24609:422::-;24698:1;24741:5;24698:1;24755:270;24776:7;24766:8;24763:21;24755:270;;;24835:4;24831:1;24827:6;24823:17;24817:4;24814:27;24811:53;;;24844:18;;:::i;:::-;24894:7;24884:8;24880:22;24877:55;;;24914:16;;;;24877:55;24993:22;;;;24953:15;;;;24755:270;;;24759:3;24609:422;;;;;:::o;25036:806::-;25085:5;25115:8;25105:80;;-1:-1:-1;25156:1:105;25170:5;;25105:80;25204:4;25194:76;;-1:-1:-1;25241:1:105;25255:5;;25194:76;25286:4;25304:1;25299:59;;;;25372:1;25367:130;;;;25279:218;;25299:59;25329:1;25320:10;;25343:5;;;25367:130;25404:3;25394:8;25391:17;25388:43;;;25411:18;;:::i;:::-;-1:-1:-1;;25467:1:105;25453:16;;25482:5;;25279:218;;25581:2;25571:8;25568:16;25562:3;25556:4;25553:13;25549:36;25543:2;25533:8;25530:16;25525:2;25519:4;25516:12;25512:35;25509:77;25506:159;;;-1:-1:-1;25618:19:105;;;25650:5;;25506:159;25697:34;25722:8;25716:4;25697:34;:::i;:::-;25767:6;25763:1;25759:6;25755:19;25746:7;25743:32;25740:58;;;25778:18;;:::i;:::-;25816:20;;25036:806;-1:-1:-1;;;25036:806:105:o;25847:140::-;25905:5;25934:47;25975:4;25965:8;25961:19;25955:4;25934:47;:::i;28634:435::-;28687:3;28725:5;28719:12;28752:6;28747:3;28740:19;28778:4;28807:2;28802:3;28798:12;28791:19;;28844:2;28837:5;28833:14;28865:1;28875:169;28889:6;28886:1;28883:13;28875:169;;;28950:13;;28938:26;;28984:12;;;;29019:15;;;;28911:1;28904:9;28875:169;;;-1:-1:-1;29060:3:105;;28634:435;-1:-1:-1;;;;;28634:435:105:o;29074:688::-;29350:4;-1:-1:-1;;;;;29460:2:105;29452:6;29448:15;29437:9;29430:34;29512:2;29504:6;29500:15;29495:2;29484:9;29480:18;29473:43;;29552:3;29547:2;29536:9;29532:18;29525:31;29579:57;29631:3;29620:9;29616:19;29608:6;29579:57;:::i;:::-;29684:9;29676:6;29672:22;29667:2;29656:9;29652:18;29645:50;29712:44;29749:6;29741;29712:44;:::i;:::-;29704:52;29074:688;-1:-1:-1;;;;;;;29074:688:105:o;29767:659::-;29832:5;29885:3;29878:4;29870:6;29866:17;29862:27;29852:55;;29903:1;29900;29893:12;29852:55;29932:6;29926:13;29958:4;29982:60;29998:43;30038:2;29998:43;:::i;29982:60::-;30076:15;;;30162:1;30158:10;;;;30146:23;;30142:32;;;30107:12;;;;30186:15;;;30183:35;;;30214:1;30211;30204:12;30183:35;30250:2;30242:6;30238:15;30262:135;30278:6;30273:3;30270:15;30262:135;;;30344:10;;30332:23;;30375:12;;;;30295;;30262:135;;;-1:-1:-1;30415:5:105;29767:659;-1:-1:-1;;;;;;29767:659:105:o;30431:363::-;30526:6;30579:2;30567:9;30558:7;30554:23;30550:32;30547:52;;;30595:1;30592;30585:12;30547:52;30628:9;30622:16;30661:18;30653:6;30650:30;30647:50;;;30693:1;30690;30683:12;30647:50;30716:72;30780:7;30771:6;30760:9;30756:22;30716:72;:::i;30799:338::-;-1:-1:-1;;;;;30978:6:105;30974:55;30963:9;30956:74;31066:2;31061;31050:9;31046:18;31039:30;30937:4;31086:45;31127:2;31116:9;31112:18;31104:6;31086:45;:::i;39677:435::-;39910:6;39899:9;39892:25;39953:6;39948:2;39937:9;39933:18;39926:34;39996:6;39991:2;39980:9;39976:18;39969:34;40039:3;40034:2;40023:9;40019:18;40012:31;39873:4;40060:46;40101:3;40090:9;40086:19;40078:6;40060:46;:::i;40117:362::-;40322:6;40311:9;40304:25;40365:6;40360:2;40349:9;40345:18;40338:34;40408:2;40403;40392:9;40388:18;40381:30;40285:4;40428:45;40469:2;40458:9;40454:18;40446:6;40428:45;:::i;42117:287::-;42246:3;42284:6;42278:13;42300:66;42359:6;42354:3;42347:4;42339:6;42335:17;42300:66;:::i;:::-;42382:16;;;;;42117:287;-1:-1:-1;;42117:287:105:o;43213:384::-;-1:-1:-1;;;;;;43398:33:105;;43386:46;;43455:13;;43368:3;;43477:74;43455:13;43540:1;43531:11;;43524:4;43512:17;;43477:74;:::i;:::-;43571:16;;;;43589:1;43567:24;;43213:384;-1:-1:-1;;;43213:384:105:o;43602:610::-;43848:13;;43791:3;;43822;;43901:4;43928:15;;;43791:3;43971:175;43985:6;43982:1;43979:13;43971:175;;;44048:13;;44034:28;;44084:14;;;;44121:15;;;;44007:1;44000:9;43971:175;;;-1:-1:-1;;44155:21:105;;;-1:-1:-1;44192:14:105;;;;;-1:-1:-1;;;43602:610:105:o;45151:614::-;45280:6;45288;45341:2;45329:9;45320:7;45316:23;45312:32;45309:52;;;45357:1;45354;45347:12;45309:52;45390:9;45384:16;45419:18;45460:2;45452:6;45449:14;45446:34;;;45476:1;45473;45466:12;45446:34;45499:72;45563:7;45554:6;45543:9;45539:22;45499:72;:::i;:::-;45489:82;;45617:2;45606:9;45602:18;45596:25;45580:41;;45646:2;45636:8;45633:16;45630:36;;;45662:1;45659;45652:12;45630:36;;45685:74;45751:7;45740:8;45729:9;45725:24;45685:74;:::i;:::-;45675:84;;;45151:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":1309,"length":32},{"start":1392,"length":32},{"start":1546,"length":32},{"start":3190,"length":32},{"start":3281,"length":32},{"start":3546,"length":32},{"start":4996,"length":32},{"start":5197,"length":32},{"start":5348,"length":32},{"start":7793,"length":32},{"start":8385,"length":32},{"start":8531,"length":32},{"start":19291,"length":32},{"start":19883,"length":32},{"start":20029,"length":32},{"start":22025,"length":32},{"start":22225,"length":32},{"start":22376,"length":32},{"start":24786,"length":32},{"start":25378,"length":32},{"start":25524,"length":32},{"start":27361,"length":32},{"start":27561,"length":32},{"start":27712,"length":32},{"start":28061,"length":32},{"start":28136,"length":32},{"start":29593,"length":32},{"start":29810,"length":32},{"start":30451,"length":32},{"start":30747,"length":32},{"start":33643,"length":32},{"start":33734,"length":32},{"start":33999,"length":32},{"start":38325,"length":32},{"start":38917,"length":32},{"start":39063,"length":32},{"start":41987,"length":32},{"start":42188,"length":32},{"start":42339,"length":32},{"start":45527,"length":32}],"91790":[{"start":1761,"length":32},{"start":2466,"length":32},{"start":2670,"length":32},{"start":2941,"length":32},{"start":4085,"length":32},{"start":4155,"length":32},{"start":4436,"length":32},{"start":4584,"length":32},{"start":4794,"length":32},{"start":6519,"length":32},{"start":6667,"length":32},{"start":7438,"length":32},{"start":7586,"length":32},{"start":18017,"length":32},{"start":18165,"length":32},{"start":18936,"length":32},{"start":19084,"length":32},{"start":21114,"length":32},{"start":21184,"length":32},{"start":21465,"length":32},{"start":21613,"length":32},{"start":21823,"length":32},{"start":23574,"length":32},{"start":23722,"length":32},{"start":24431,"length":32},{"start":24579,"length":32},{"start":26450,"length":32},{"start":26520,"length":32},{"start":26801,"length":32},{"start":26949,"length":32},{"start":27159,"length":32},{"start":28837,"length":32},{"start":29427,"length":32},{"start":29735,"length":32},{"start":29901,"length":32},{"start":30176,"length":32},{"start":32212,"length":32},{"start":32919,"length":32},{"start":33123,"length":32},{"start":33394,"length":32},{"start":37113,"length":32},{"start":37261,"length":32},{"start":37970,"length":32},{"start":38118,"length":32},{"start":41076,"length":32},{"start":41146,"length":32},{"start":41427,"length":32},{"start":41575,"length":32},{"start":41785,"length":32}],"91798":[{"start":1983,"length":32},{"start":2053,"length":32},{"start":2334,"length":32},{"start":6090,"length":32},{"start":6162,"length":32},{"start":6238,"length":32},{"start":7155,"length":32},{"start":12588,"length":32},{"start":12657,"length":32},{"start":12937,"length":32},{"start":14657,"length":32},{"start":14726,"length":32},{"start":15006,"length":32},{"start":17588,"length":32},{"start":17660,"length":32},{"start":17736,"length":32},{"start":18653,"length":32},{"start":23145,"length":32},{"start":23217,"length":32},{"start":23293,"length":32},{"start":24150,"length":32},{"start":32436,"length":32},{"start":32506,"length":32},{"start":32787,"length":32},{"start":36684,"length":32},{"start":36756,"length":32},{"start":36832,"length":32},{"start":37689,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_SwapInX(uint128)":"ee2a4a05","testFuzz_SwapInXAndY(uint128,uint128)":"8eafd734","testFuzz_SwapInY(uint128)":"891432ed","testFuzz_SwapInYandX(uint128,uint128)":"befbe28b","testFuzz_SwapOutX(uint128)":"17e5786d","testFuzz_SwapOutXAndY(uint128,uint128)":"7b921e8f","testFuzz_SwapOutY(uint128)":"958493b8","testFuzz_SwapOutYAndX(uint128,uint128)":"20c2ff2c","test_CollectProtocolFeesAfterSwap()":"4ab64e48","test_CollectProtocolFeesBothTokens()":"45fc1e89","test_CollectProtocolFeesXTokens()":"b9651243","test_CollectProtocolFeesYTokens()":"257fbfef","test_Fees2LPFlashloan()":"9cac290a","test_FeesX2LP()":"13f1994a","test_FeesY2LP()":"aabdebad","test_revert_TotalFeeExceeded(uint16,uint16,uint24,uint24)":"d7f975b4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapInX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountXOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountYOut\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapInXAndY\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapInY\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountYOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountXOut\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapInYandX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapOutX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountXIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountYIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapOutXAndY\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapOutY\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountXIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountYIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapOutYAndX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CollectProtocolFeesAfterSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CollectProtocolFeesBothTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CollectProtocolFeesXTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CollectProtocolFeesYTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Fees2LPFlashloan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_FeesX2LP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_FeesY2LP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"test_revert_TotalFeeExceeded\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairFees.t.sol\":\"LBPairFeesTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairFees.t.sol\":{\"keccak256\":\"0x1999abcb9fbb6d4fb157f76bc5e003ec9340ac2ca20d26ea27657dff826f60f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8d691275c94d3253e0631d705dfd47dc6eb043ce8766a343f3fe9ba4a461b8b\",\"dweb:/ipfs/QmPeskBMCChXtUxEWx67j3HbzfaP3Swrfsab8iAU2ai6pT\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint128","name":"amountOut","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapInX"},{"inputs":[{"internalType":"uint128","name":"amountXOut","type":"uint128"},{"internalType":"uint128","name":"amountYOut","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapInXAndY"},{"inputs":[{"internalType":"uint128","name":"amountOut","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapInY"},{"inputs":[{"internalType":"uint128","name":"amountYOut","type":"uint128"},{"internalType":"uint128","name":"amountXOut","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapInYandX"},{"inputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapOutX"},{"inputs":[{"internalType":"uint128","name":"amountXIn","type":"uint128"},{"internalType":"uint128","name":"amountYIn","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapOutXAndY"},{"inputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapOutY"},{"inputs":[{"internalType":"uint128","name":"amountXIn","type":"uint128"},{"internalType":"uint128","name":"amountYIn","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapOutYAndX"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CollectProtocolFeesAfterSwap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CollectProtocolFeesBothTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CollectProtocolFeesXTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CollectProtocolFeesYTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_Fees2LPFlashloan"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_FeesX2LP"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_FeesY2LP"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"test_revert_TotalFeeExceeded"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairFees.t.sol":"LBPairFeesTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairFees.t.sol":{"keccak256":"0x1999abcb9fbb6d4fb157f76bc5e003ec9340ac2ca20d26ea27657dff826f60f4","urls":["bzz-raw://d8d691275c94d3253e0631d705dfd47dc6eb043ce8766a343f3fe9ba4a461b8b","dweb:/ipfs/QmPeskBMCChXtUxEWx67j3HbzfaP3Swrfsab8iAU2ai6pT"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":84} \ No newline at end of file diff --git a/abi/LBPairFlashloan.t.sol/LBPairFlashloanTest.json b/abi/LBPairFlashloan.t.sol/LBPairFlashloanTest.json deleted file mode 100644 index f0d193f1..00000000 --- a/abi/LBPairFlashloan.t.sol/LBPairFlashloanTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_FlashLoan","inputs":[{"name":"amountX","type":"uint128","internalType":"uint128"},{"name":"amountY","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_FlashLoanCallbackFailed","inputs":[{"name":"callback","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_FlashLoanInsufficientAmount","inputs":[{"name":"amountX","type":"uint128","internalType":"uint128"},{"name":"amountY","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_FlashLoanReentrant","inputs":[{"name":"callback","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_EdgeCaseFlashLoanBinDOS","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_FlashLoan0Amounts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c05162019fff620002b460003960005050600050506000818161058701528181610a5901528181610c980152613110015262019fff6000f3fe60806040523480156200001157600080fd5b5060043610620001ad5760003560e01c806385226c8111620000f5578063b89e02331162000097578063d81e19a0116200006e578063d81e19a01462000369578063e20c9f711462000380578063fecaa223146200038a57600080fd5b8063b89e0233146200033e578063ba414fa61462000355578063d7af6f66146200035f57600080fd5b8063a2be0b6b11620000cc578063a2be0b6b1462000306578063a7aa85e9146200031d578063b5508aa9146200033457600080fd5b806385226c8114620002b7578063889be5b714620002d0578063916a17c614620002fc57600080fd5b80633e5e3c23116200015f57806349789ef9116200013657806349789ef9146200026e57806366d9a9a014620002945780637572901214620002ad57600080fd5b80633e5e3c2314620002435780633f7286f4146200024d578063425b14a0146200025757600080fd5b80630a9254e411620001945780630a9254e414620002075780631ed7831c14620002115780632ade3880146200022a57600080fd5b806301ffc9a714620001b257806307eb8b1414620001ee575b600080fd5b620001d9620001c336600462005e7c565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b62000205620001ff36600462005ea8565b620003a1565b005b6200020562000539565b6200021b6200066c565b604051620001e5919062005ec2565b62000234620006d0565b604051620001e5919062005f65565b6200021b6200081e565b6200021b62000880565b620002056200026836600462005ea8565b620008e2565b620002856200027f3660046200603d565b62000910565b604051908152602001620001e5565b6200029e62000965565b604051620001e5919062006075565b6200020562000a4f565b620002c162000e9d565b604051620001e591906200612c565b620002e7620002e1366004620061a4565b62000f77565b60405162ffffff9091168152602001620001e5565b6200029e62000fd2565b6200020562000317366004620061fd565b620010bc565b620002056200032e36600462006251565b620017c5565b620002c162001c66565b620001d96200034f366004620062ef565b62001d40565b620001d962001dc3565b6200020562001e7d565b620002056200037a366004620061fd565b62001f5a565b6200021b62002589565b620002056200039b36600462006315565b620025eb565b604051632631f2b160e11b81527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2821415600482015260008051602062019faa83398151915290634c63e5629060240160006040518083038186803b1580156200040a57600080fd5b505afa1580156200041f573d6000803e3d6000fd5b50506040805160006020820181905291810182905260608101859052608081018290526001935090915060a0015b60408051808303601f1901815290829052630618f58760e51b8252634a57011360e01b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b158015620004ac57600080fd5b505af1158015620004c1573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf935062000500929091169086908690600401620063a9565b600060405180830381600087803b1580156200051b57600080fd5b505af115801562000530573d6000803e3d6000fd5b50505050505050565b62000543620028e3565b601c54601d5462000561916001600160a01b03908116911662003f0e565b602780546001600160a01b0319166001600160a01b03929092169182179055620005c0907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a764000080603280620017c5565b6027546040516001600160a01b0390911690620005dd9062005dd7565b6001600160a01b039091168152602001604051809103906000f0801580156200060a573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03928316908117909155601c5462000643921690670de0b6b3a764000062003f27565b601d54602c546200066a916001600160a01b039081169116670de0b6b3a764000062003f27565b565b60606014805480602002602001604051908101604052809291908181526020018280548015620006c657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006a7575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200081557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620007fd5783829060005260206000200180546200076990620063d3565b80601f01602080910402602001604051908101604052809291908181526020018280546200079790620063d3565b8015620007e85780601f10620007bc57610100808354040283529160200191620007e8565b820191906000526020600020905b815481529060010190602001808311620007ca57829003601f168201915b50505050508152602001906001019062000747565b505050508152505081526020019060010190620006f4565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620006c6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006a7575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620006c6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006a7575050505050905090565b6040805160006020820181905291810182905260608101839052600160808201819052919060a0016200044d565b6000808360ff1611801562000928575060008260ff16115b6200093f5762000939828462006425565b62000959565b60016200094d838562006425565b62000959919062006441565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a3657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620009f75790505b5050505050815250508152602001906001019062000989565b60275462000a9a907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600180620025eb565b604080516001600160801b0360208201819052818301527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080808301919091528251808303909101815260a0820192839052602754602c5463ea3446bf60e01b90945277016345785d8a00000000000000000000016345785d8a00009391926001600160a01b039182169263ea3446bf9262000b48929116908690869060a401620063a9565b600060405180830381600087803b15801562000b6357600080fd5b505af115801562000b78573d6000803e3d6000fd5b5050602754604051630157d2d160e31b8152628000006004820152600093508392506001600160a01b0390911690630abe9688906024016040805180830381865afa15801562000bcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bf291906200645d565b6001600160801b031691506001600160801b0316915062000c4b8260006040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a310081525062003f3b565b62000c8e8160006040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a320081525062003f3b565b60275462000cda907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a764000080600180620017c5565b60275462000db8906001600160a01b031663a41a01fb600162000d01628000008262006491565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562000d48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6e9190620064b0565b62ffffff166280000062ffffff166040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a330081525062003f3b565b60275462000e97906001600160a01b031663a41a01fb600062000de0600162800000620064d0565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562000e27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e4d9190620064b0565b62ffffff166280000062ffffff166040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a340081525062003f3b565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200081557838290600052602060002001805462000ee390620063d3565b80601f016020809104026020016040519081016040528092919081815260200182805462000f1190620063d3565b801562000f625780601f1062000f365761010080835404028352916020019162000f62565b820191906000526020600020905b81548152906001019060200180831162000f4457829003601f168201915b50505050508152602001906001019062000ec1565b60008062000f8b8462ffffff8716620064ef565b905060008360ff161162000fa0578062000fbc565b62000faf60ff84168262006505565b62000fbc906001620064ef565b905062000fc98162003fa1565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008155760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010a357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010645790505b5050505050815250508152602001906001019062000ff6565b60008051602062019faa833981519152634c63e562670de0b6b3a76400006001600160801b03851611801590620011045750670de0b6b3a7640000836001600160801b031611155b80156200112e57506000846001600160801b031611806200112e57506000836001600160801b0316115b6040518263ffffffff1660e01b81526004016200114f911515815260200190565b60006040518083038186803b1580156200116857600080fd5b505afa1580156200117d573d6000803e3d6000fd5b50600092505050608082901b6001600160801b03841617604080516001600160801b0360208201819052918101919091527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080820181905291925060a00160408051808303601f1901815290829052601c546027546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa15801562001244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126a91906200651b565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620012bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e391906200651b565b90506000602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200133b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200136191906200651b565b90506000670de0b6b3a7640000600162001385846001600160801b038c1662006535565b6200139990670de0b6b3a7640000620064ef565b620013a5919062006505565b620013b1919062006565565b90506000670de0b6b3a76400006001620013d5856001600160801b038c1662006535565b620013e990670de0b6b3a7640000620064ef565b620013f5919062006505565b62001401919062006565565b602754602c5460405163ea3446bf60e01b81529293506001600160a01b039182169263ea3446bf926200143d9216908b908b90600401620063a9565b600060405180830381600087803b1580156200145857600080fd5b505af11580156200146d573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b039182166004820152620015319450911691506370a0823190602401602060405180830381865afa158015620014c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014e991906200651b565b620014f58488620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a31000000000000000000000081525062003f3b565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620015f39291909116906370a0823190602401602060405180830381865afa15801562001585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ab91906200651b565b620015b78387620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a32000000000000000000000081525062003f3b565b60275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa1580156200163e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200166491906200645d565b6001600160801b031691506001600160801b03169150600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa158015620016d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f691906200645d565b6001600160801b0391821693501690506200175e620017168386620064ef565b62001722888c620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a33000000000000000000000081525062003f3b565b620017b66200176e8285620064ef565b6200177a878b620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a34000000000000000000000081525062003f3b565b50505050505050505050505050565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001806573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200182c919062006588565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200186f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001895919062006588565b9050620018a4828b8862003f27565b620018b1818b8762003f27565b6000620018bf858562000910565b905060008167ffffffffffffffff811115620018df57620018df620065a8565b60405190808252806020026020018201604052801562001909578160200160208202803683370190505b50905060005b8281101562001a08576000620019278b838962000f77565b905060008b62ffffff168262ffffff161015801562001949575060008960ff16115b6200195657600062001977565b620019776200197160ff8b16670de0b6b3a764000062006565565b62003fcd565b905060008c62ffffff168362ffffff161115801562001999575060008960ff16115b620019a6576000620019c1565b620019c16200197160ff8b16670de0b6b3a764000062006565565b9050620019d082828562003ff9565b858581518110620019e557620019e5620065be565b6020026020010181815250505050508062001a0090620065d4565b90506200190f565b506040516303223eab60e11b81526001600160a01b038d16600482015260008051602062019faa833981519152906306447d5690602401600060405180830381600087803b15801562001a5a57600080fd5b505af115801562001a6f573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562001ac3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ae9919062006601565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562001b3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b60919062006601565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001bc057600080fd5b505af115801562001bd5573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162001c0b939291906200661f565b6000604051808303816000875af115801562001c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c559190810190620066e0565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200081557838290600052602060002001805462001cac90620063d3565b80601f016020809104026020016040519081016040528092919081815260200182805462001cda90620063d3565b801562001d2b5780601f1062001cff5761010080835404028352916020019162001d2b565b820191906000526020600020905b81548152906001019060200180831162001d0d57829003601f168201915b50505050508152602001906001019062001c8a565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562001d90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001db6919062006795565b9998505050505050505050565b60075460009060ff161562001ddc575060075460ff1690565b604051630667f9d760e41b815260008051602062019faa833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562001e50573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7691906200651b565b1415905090565b604051630618f58760e51b815263727ab02160e11b600482015260008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b15801562001ecc57600080fd5b505af115801562001ee1573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b0391821660048201526000602482018190526060604483015260648201529116925063ea3446bf91506084015b600060405180830381600087803b15801562001f4557600080fd5b505af115801562000e97573d6000803e3d6000fd5b60008051602062019faa833981519152634c63e5626001600160801b0384161580159062001f9157506000836001600160801b0316115b801562001faf5750670de0b6b3a7640000846001600160801b031611155b801562001fcd5750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162001fee911515815260200190565b60006040518083038186803b1580156200200757600080fd5b505afa1580156200201c573d6000803e3d6000fd5b505050506000602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200209c91906200651b565b90506000670de0b6b3a76400006001620020c0846001600160801b03881662006535565b620020d490670de0b6b3a7640000620064ef565b620020e0919062006505565b620020ec919062006565565b90506000670de0b6b3a7640000600162002110856001600160801b03881662006535565b6200212490670de0b6b3a7640000620064ef565b62002130919062006505565b6200213c919062006565565b90506000608085901b6001600160801b038716179050600060016200216b856001600160801b038a16620064ef565b62002177919062006505565b6200218c846001600160801b038916620064ef565b6040805160208101939093528201527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a00160408051808303601f1901815290829052630618f58760e51b8252630e3c717160e11b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b1580156200222a57600080fd5b505af11580156200223f573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf93506200227e929091169086908690600401620063a9565b600060405180830381600087803b1580156200229957600080fd5b505af1158015620022ae573d6000803e3d6000fd5b5050505083876001600160801b0316620022c99190620064ef565b6001620022e0856001600160801b038a16620064ef565b620022ec919062006505565b6040805160208101939093528201527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a00160408051808303601f1901815290829052630618f58760e51b8252630e3c717160e11b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b1580156200238a57600080fd5b505af11580156200239f573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf9350620023de929091169086908690600401620063a9565b600060405180830381600087803b158015620023f957600080fd5b505af11580156200240e573d6000803e3d6000fd5b50505050600184886001600160801b03166200242b9190620064ef565b62002437919062006505565b60016200244e856001600160801b038a16620064ef565b6200245a919062006505565b6040805160208101939093528201527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a00160408051808303601f1901815290829052630618f58760e51b8252630e3c717160e11b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b158015620024f857600080fd5b505af11580156200250d573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf93506200254c929091169086908690600401620063a9565b600060405180830381600087803b1580156200256757600080fd5b505af11580156200257c573d6000803e3d6000fd5b5050505050505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620006c6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006a7575050505050905090565b670de0b6b3a7640000831115620026495760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062002657838362000910565b905060008167ffffffffffffffff811115620026775762002677620065a8565b604051908082528060200260200182016040528015620026a1578160200160208202803683370190505b50905060008267ffffffffffffffff811115620026c257620026c2620065a8565b604051908082528060200260200182016040528015620026ec578160200160208202803683370190505b50905060005b83811015620027fa5760006200270a89838862000f77565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562002760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200278691906200651b565b90508162ffffff16858481518110620027a357620027a3620065be565b6020908102919091010152620027c3818a670de0b6b3a764000062004037565b848481518110620027d857620027d8620065be565b602002602001018181525050505080620027f290620065d4565b9050620026f2565b5060405163ca669fa760e01b81526001600160a01b038b16600482015260008051602062019faa8339815191529063ca669fa790602401600060405180830381600087803b1580156200284c57600080fd5b505af115801562002861573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062002899908d908d90879087906004016200682c565b6000604051808303816000875af1158015620028b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200257c9190810190620068e6565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620029e057601c5460405160008051602062019faa8339815191529163b4d6c782916001600160a01b0390911690620029499062005de5565b604051809103906000f08015801562002966573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620029ab9291906200691f565b600060405180830381600087803b158015620029c657600080fd5b505af1158015620029db573d6000803e3d6000fd5b505050505b6006604051620029f09062005df3565b60ff9091168152602001604051809103906000f08015801562002a17573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062002a499062005df3565b60ff9091168152602001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062002aa29062005df3565b60ff9091168152602001604051809103906000f08015801562002ac9573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062002afb9062005df3565b60ff9091168152602001604051809103906000f08015801562002b22573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062002b549062005df3565b60ff9091168152602001604051809103906000f08015801562002b7b573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062002bad9062005df3565b60ff9091168152602001604051809103906000f08015801562002bd4573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162002c039062005e01565b604051809103906000f08015801562002c20573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e617469766500000000000000000000000000000000000000000000000000606482015260008051602062019faa8339815191529063c657c71890608401600060405180830381600087803b15801562002cc157600080fd5b505af115801562002cd6573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002d4e57600080fd5b505af115801562002d63573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002ddb57600080fd5b505af115801562002df0573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002e6857600080fd5b505af115801562002e7d573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002ef557600080fd5b505af115801562002f0a573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002f8257600080fd5b505af115801562002f97573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200300957600080fd5b505af11580156200301e573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b158015620030aa57600080fd5b505af1158015620030bf573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d2000090620031469062005e0f565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562003181573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620031af9062005e1d565b6001600160a01b039091168152602001604051809103906000f080158015620031dc573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200323b57600080fd5b505af115801562003250573d6000803e3d6000fd5b505050506200325e62004065565b6200326a600a620043de565b602454602b54601c546040516001600160a01b03938416939283169290911690620032959062005e2b565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620032d2573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200330d9062005e39565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200334a573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f757465720000000000000000000000000000000000000000000000000000606482015260008051602062019faa8339815191529063c657c71890608401600060405180830381600087803b158015620033eb57600080fd5b505af115801562003400573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f7465720000000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200348c57600080fd5b505af1158015620034a1573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f727900000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200353057600080fd5b505af115801562003545573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e0000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b158015620035d157600080fd5b505af1158015620035e6573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f757465725631000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200367257600080fd5b505af115801562003687573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f727956310000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200371357600080fd5b505af115801562003728573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562003783573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a9919062006601565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003801573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003827919062006601565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200387f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038a5919062006601565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620038fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003923919062006601565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200397b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039a1919062006601565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620039f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a1f919062006601565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003a77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a9d919062006601565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003af5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b1b919062006601565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003b73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b99919062006601565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003bf1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c17919062006601565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003c6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c95919062006601565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003ced573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d13919062006601565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003d6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d91919062006601565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003de9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e0f919062006601565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003e67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e8d919062006601565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003ee5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f0b919062006601565b50565b600062003f2083836280000062004485565b9392505050565b62003f36838383600062004496565b505050565b6040516388b44c8560e01b815260008051602062019faa833981519152906388b44c859062003f739086908690869060040162006943565b60006040518083038186803b15801562003f8c57600080fd5b505afa15801562000530573d6000803e3d6000fd5b8062ffffff8116811462003fc857604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff8116811462003fc85760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60008060006200404886866200469c565b915091506200405b8686868585620046bb565b9695505050505050565b601c546001600160a01b031615620040da5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620040c057600080fd5b505af1158015620040d5573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200414f5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200413557600080fd5b505af11580156200414a573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620041c45760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620041aa57600080fd5b505af1158015620041bf573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620042395760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200421f57600080fd5b505af115801562004234573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620042ae5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200429457600080fd5b505af1158015620042a9573d6000803e3d6000fd5b505050505b6020546001600160a01b031615620043235760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200430957600080fd5b505af11580156200431e573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620043985760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200437e57600080fd5b505af115801562004393573d6000803e3d6000fd5b505050505b6023546001600160a01b0316156200066a5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a440923910162001f2a565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200446957600080fd5b505af11580156200447e573d6000803e3d6000fd5b5050505050565b60006200402f848484600a6200476d565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620044ec9162006964565b600060405180830381855afa9150503d806000811462004529576040519150601f19603f3d011682016040523d82523d6000602084013e6200452e565b606091505b509150506000818060200190518101906200454a91906200651b565b905062004584846200457d87620045766370a0823160e01b6200456f600c8d62004803565b9062004829565b9062004847565b9062004870565b8215620046945760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620045cf919062006964565b600060405180830381855afa9150503d80600081146200460c576040519150601f19603f3d011682016040523d82523d6000602084013e62004611565b606091505b509150506000818060200190518101906200462d91906200651b565b905082861015620046585762004644868462006505565b62004650908262006505565b905062004673565b62004664838762006505565b620046709082620064ef565b90505b62004691816200457d6318160ddd60e01b6200456f600c8d62004803565b50505b505050505050565b6000806000198385098385029250828110838203039150509250929050565b600081600003620046e157838381620046d857620046d86200654f565b04905062000fc9565b83821062004702576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af1158015620047dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fc9919062006588565b6005820180546001600160a01b0319166001600160a01b03831617905560008262003f20565b60038201805463ffffffff191660e083901c17905560008262003f20565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003f20565b6200487c828262004880565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b9460009390929091830182828015620048f357602002820191906000526020600020905b815481526020019060010190808311620048de575b50505050509050600083620049088362004c8d565b6040516020016200491b92919062006982565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200496f918691889101620069b5565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620049aa57620049a88762004d41565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620049eb918791899101620069b5565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162004a32919062006964565b600060405180830381855afa9150503d806000811462004a6f576040519150601f19603f3d011682016040523d82523d6000602084013e62004a74565b606091505b50915062004a9190508162004a8b88602062006535565b62004d4e565b604051630667f9d760e41b81526001600160a01b038a166004820152602481018590529092506000915060008051602062019faa8339815191529063667f9d7090604401602060405180830381865afa15801562004af3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b1991906200651b565b905080821462004bd05760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162002640565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a905260008051602062019faa833981519152906370ca10bb90606401600060405180830381600087803b15801562004c2f57600080fd5b505af115801562004c44573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562004c7960028b01600062005e47565b896004016000905550505050505050505050565b606060008251602062004ca1919062006535565b67ffffffffffffffff81111562004cbc5762004cbc620065a8565b6040519080825280601f01601f19166020018201604052801562004ce7576020820181803683370190505b50905060005b835181101562004d3a57600084828151811062004d0e5762004d0e620065be565b60200260200101519050808260200260200184015250808062004d3190620065d4565b91505062004ced565b5092915050565b60006200095f8262004df0565b6000806000602085511162004d6557845162004d68565b60205b905060005b8181101562004de65762004d8381600862006535565b8662004d908388620064ef565b8151811062004da35762004da3620065be565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062004ddd81620065d4565b91505062004d6d565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562004e6257602002820191906000526020600020905b81548152602001906001019080831162004e4d575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062004eae92508591879101620069b5565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562004f4d576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162004f1d918591879101620069b5565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362004f5b8362005c92565b60405160200162004f6e92919062006982565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004fde57600080fd5b505af115801562004ff3573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005014919062006964565b600060405180830381855afa9150503d806000811462005051576040519150601f19603f3d011682016040523d82523d6000602084013e62005056565b606091505b509150620050739050816200506d87602062006535565b62005d3f565b6040516365bc948160e01b81526001600160a01b03891660048201529092506000915060008051602062019faa833981519152906365bc9481906024016000604051808303816000875af1158015620050d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620050fa9190810190620069f1565b50905080516001036200549e5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620051525762005152620065be565b60200260200101516040518363ffffffff1660e01b81526004016200518c9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620051aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051d091906200651b565b9050806200523b577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58883600081518110620052105762005210620065be565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620052f05760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162002640565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162005328929190620069b5565b6040516020818303038152906040528051906020012085600081518110620053545762005354620065be565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a181600081518110620053ae57620053ae620065be565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c1683528452808220905192939092620053f9918a918c9101620069b5565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162005463918a918c9101620069b5565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062005b07565b60018151111562005a965760005b815181101562005a8f5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620055005762005500620065be565b60200260200101516040518363ffffffff1660e01b81526004016200553a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200557e91906200651b565b905080620055e8577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620055bd57620055bd620065be565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620055f7575062005a7a565b825181199060008051602062019faa833981519152906370ca10bb908c908790879081106200562a576200562a620065be565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200568357600080fd5b505af115801562005698573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620056ba919062006964565b600060405180830381855afa9150503d8060008114620056f7576040519150601f19603f3d011682016040523d82523d6000602084013e620056fc565b606091505b50909250905062005714816200506d8c602062006535565b9650508080156200572457508186145b15620059bc577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162005762929190620069b5565b604051602081830303815290604052805190602001208888815181106200578d576200578d620065be565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1848481518110620057e657620057e6620065be565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262005831918d918f9101620069b5565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620058be929190620069b5565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620059415762005941620065be565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200599a57600080fd5b505af1158015620059af573d6000803e3d6000fd5b5050505050505062005a8f565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062005a045762005a04620065be565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562005a5d57600080fd5b505af115801562005a72573d6000803e3d6000fd5b505050505050505b8062005a8681620065d4565b915050620054ac565b5062005b07565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002640565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162005b4b9188918a9101620069b5565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005be85760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162002640565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562005c1960028a01600062005e47565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162005c5f9188918a9101620069b5565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062005ca6919062006535565b67ffffffffffffffff81111562005cc15762005cc1620065a8565b6040519080825280601f01601f19166020018201604052801562005cec576020820181803683370190505b50905060005b835181101562004d3a57600084828151811062005d135762005d13620065be565b60200260200101519050808260200260200184015250808062005d3690620065d4565b91505062005cf2565b6000806000602085511162005d5657845162005d59565b60205b905060005b8181101562004de65762005d7481600862006535565b8662005d818388620064ef565b8151811062005d945762005d94620065be565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005dce81620065d4565b91505062005d5e565b6106a88062006a5d83390190565b610b08806200710583390190565b610bfd8062007c0d83390190565b610c18806200880a83390190565b613199806200942283390190565b61615c806200c5bb83390190565b614c80806201271783390190565b612c13806201739783390190565b508054600082559060005260206000209081019062003f0b91905b8082111562005e78576000815560010162005e62565b5090565b60006020828403121562005e8f57600080fd5b81356001600160e01b03198116811462003f2057600080fd5b60006020828403121562005ebb57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101562005f055783516001600160a01b03168352928401929184019160010162005ede565b50909695505050505050565b60005b8381101562005f2e57818101518382015260200162005f14565b50506000910152565b6000815180845262005f5181602086016020860162005f11565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200601b57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200600457605f1989850301835262005ff184865162005f37565b948e01949350918d019160010162005fd2565b505050978a01979450509188019160010162005f8c565b50919a9950505050505050505050565b803560ff8116811462003fc857600080fd5b600080604083850312156200605157600080fd5b6200605c836200602b565b91506200606c602084016200602b565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200611d57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620061075783516001600160e01b0319168252928b019260019290920191908b0190620060db565b50978a019795505050918701916001016200609d565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200618557603f198886030184526200617285835162005f37565b9450928501929085019060010162006153565b5092979650505050505050565b62ffffff8116811462003f0b57600080fd5b600080600060608486031215620061ba57600080fd5b8335620061c78162006192565b925060208401359150620061de604085016200602b565b90509250925092565b6001600160801b038116811462003f0b57600080fd5b600080604083850312156200621157600080fd5b82356200621e81620061e7565b915060208301356200623081620061e7565b809150509250929050565b6001600160a01b038116811462003f0b57600080fd5b600080600080600080600080610100898b0312156200626f57600080fd5b88356200627c816200623b565b975060208901356200628e816200623b565b96506040890135620062a0816200623b565b95506060890135620062b28162006192565b94506080890135935060a08901359250620062d060c08a016200602b565b9150620062e060e08a016200602b565b90509295985092959890939650565b6000602082840312156200630257600080fd5b813561ffff8116811462003f2057600080fd5b600080600080600080600060e0888a0312156200633157600080fd5b87356200633e816200623b565b9650602088013562006350816200623b565b9550604088013562006362816200623b565b94506060880135620063748162006192565b9350608088013592506200638b60a089016200602b565b91506200639b60c089016200602b565b905092959891949750929550565b6001600160a01b038416815282602082015260606040820152600062000fc9606083018462005f37565b600181811c90821680620063e857607f821691505b6020821081036200640957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156200095f576200095f6200640f565b60ff82811682821603908111156200095f576200095f6200640f565b600080604083850312156200647157600080fd5b82516200647e81620061e7565b60208401519092506200623081620061e7565b62ffffff81811683821601908082111562004d3a5762004d3a6200640f565b600060208284031215620064c357600080fd5b815162003f208162006192565b62ffffff82811682821603908082111562004d3a5762004d3a6200640f565b808201808211156200095f576200095f6200640f565b818103818111156200095f576200095f6200640f565b6000602082840312156200652e57600080fd5b5051919050565b80820281158282048414176200095f576200095f6200640f565b634e487b7160e01b600052601260045260246000fd5b6000826200658357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200659b57600080fd5b815162003f20816200623b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060018201620065e957620065e96200640f565b5060010190565b8051801515811462003fc857600080fd5b6000602082840312156200661457600080fd5b62003f2082620065f0565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200666c578551835294830194918301916001016200664e565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715620066b157620066b1620065a8565b604052919050565b600067ffffffffffffffff821115620066d657620066d6620065a8565b5060051b60200190565b600080600060608486031215620066f657600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200671d57600080fd5b8501601f810187136200672f57600080fd5b8051620067466200674082620066b9565b62006685565b81815260059190911b820183019083810190898311156200676657600080fd5b928401925b8284101562006786578351825292840192908401906200676b565b80955050505050509250925092565b600080600080600080600080610100898b031215620067b357600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c08901519150620062e060e08a01620065f0565b600081518084526020808501945080840160005b83811015620068215781518752958201959082019060010162006803565b509495945050505050565b60006001600160a01b038087168352808616602084015250608060408301526200685a6080830185620067ef565b82810360608401526200686e8185620067ef565b979650505050505050565b600082601f8301126200688b57600080fd5b815160206200689e6200674083620066b9565b82815260059290921b84018101918181019086841115620068be57600080fd5b8286015b84811015620068db5780518352918301918301620068c2565b509695505050505050565b600060208284031215620068f957600080fd5b815167ffffffffffffffff8111156200691157600080fd5b6200402f8482850162006879565b6001600160a01b03831681526040602082015260006200402f604083018462005f37565b83815282602082015260606040820152600062000fc9606083018462005f37565b600082516200697881846020870162005f11565b9190910192915050565b6001600160e01b0319831681528151600090620069a781600485016020870162005f11565b919091016004019392505050565b825160009082906020808701845b83811015620069e157815185529382019390820190600101620069c3565b5050948252509092019392505050565b6000806040838503121562006a0557600080fd5b825167ffffffffffffffff8082111562006a1e57600080fd5b62006a2c8683870162006879565b9350602085015191508082111562006a4357600080fd5b5062006a528582860162006879565b915050925092905056fe60a060405234801561001057600080fd5b506040516106a83803806106a883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161061e61008a600039600060b4015261061e6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631faa6b8714610030575b600080fd5b61004361003e36600461041f565b610055565b60405190815260200160405180910390f35b600080808080610067868801886104f9565b9296509094509250905060018160018111156100855761008561054c565b036101195760405163ea3446bf60e01b8152306004820152602481018a905260606044820152600060648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea3446bf90608401600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050505b6ffffffffffffffffffffffffffffffffe196001600160801b03851601610153576101506001600160801b03898116908b16610562565b93505b6ffffffffffffffffffffffffffffffffe196001600160801b038416016101955761017e8860801c90565b6101888a60801c90565b6101929190610562565b92505b6001600160801b038416156101c1576101c16001600160a01b038c16336001600160801b0387166101fc565b6001600160801b038316156101ed576101ed6001600160a01b038b16336001600160801b0386166101fc565b509a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610263908490610268565b505050565b600061027d6001600160a01b038416836102d0565b905080516000141580156102a25750808060200190518101906102a09190610597565b155b1561026357604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606102de838360006102e5565b9392505050565b60608147101561030a5760405163cd78605960e01b81523060048201526024016102c7565b600080856001600160a01b0316848660405161032691906105b9565b60006040518083038185875af1925050503d8060008114610363576040519150601f19603f3d011682016040523d82523d6000602084013e610368565b606091505b5091509150610378868383610382565b9695505050505050565b60608261039757610392826103de565b6102de565b81511580156103ae57506001600160a01b0384163b155b156103d757604051639996b31560e01b81526001600160a01b03851660048201526024016102c7565b50806102de565b8051156103ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461040757600080fd5b600080600080600080600060c0888a03121561043a57600080fd5b87356104458161040a565b965060208801356104558161040a565b955060408801356104658161040a565b9450606088013593506080880135925060a088013567ffffffffffffffff8082111561049057600080fd5b818a0191508a601f8301126104a457600080fd5b8135818111156104b357600080fd5b8b60208285010111156104c557600080fd5b60208301945080935050505092959891949750929550565b80356001600160801b03811681146104f457600080fd5b919050565b6000806000806080858703121561050f57600080fd5b610518856104dd565b9350610526602086016104dd565b92506040850135915060608501356002811061054157600080fd5b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b6001600160801b0381811683821601908082111561059057634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156105a957600080fd5b815180151581146102de57600080fd5b6000825160005b818110156105da57602081860181015185830152016105c0565b50600092019182525091905056fea2646970667358221220125c153a56401e84a7f2f5946cba34bab49c83562a8ec35a2e104e6efd5558a164736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220d2ea9c354c5edcfb4f16a1c083662ce2ef53825791cb19c167bcc074e92afe1f64736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;132:4868:85;1812:17:93;;132:4868:85;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;132:4868:85;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;132:4868:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001ad5760003560e01c806385226c8111620000f5578063b89e02331162000097578063d81e19a0116200006e578063d81e19a01462000369578063e20c9f711462000380578063fecaa223146200038a57600080fd5b8063b89e0233146200033e578063ba414fa61462000355578063d7af6f66146200035f57600080fd5b8063a2be0b6b11620000cc578063a2be0b6b1462000306578063a7aa85e9146200031d578063b5508aa9146200033457600080fd5b806385226c8114620002b7578063889be5b714620002d0578063916a17c614620002fc57600080fd5b80633e5e3c23116200015f57806349789ef9116200013657806349789ef9146200026e57806366d9a9a014620002945780637572901214620002ad57600080fd5b80633e5e3c2314620002435780633f7286f4146200024d578063425b14a0146200025757600080fd5b80630a9254e411620001945780630a9254e414620002075780631ed7831c14620002115780632ade3880146200022a57600080fd5b806301ffc9a714620001b257806307eb8b1414620001ee575b600080fd5b620001d9620001c336600462005e7c565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b62000205620001ff36600462005ea8565b620003a1565b005b6200020562000539565b6200021b6200066c565b604051620001e5919062005ec2565b62000234620006d0565b604051620001e5919062005f65565b6200021b6200081e565b6200021b62000880565b620002056200026836600462005ea8565b620008e2565b620002856200027f3660046200603d565b62000910565b604051908152602001620001e5565b6200029e62000965565b604051620001e5919062006075565b6200020562000a4f565b620002c162000e9d565b604051620001e591906200612c565b620002e7620002e1366004620061a4565b62000f77565b60405162ffffff9091168152602001620001e5565b6200029e62000fd2565b6200020562000317366004620061fd565b620010bc565b620002056200032e36600462006251565b620017c5565b620002c162001c66565b620001d96200034f366004620062ef565b62001d40565b620001d962001dc3565b6200020562001e7d565b620002056200037a366004620061fd565b62001f5a565b6200021b62002589565b620002056200039b36600462006315565b620025eb565b604051632631f2b160e11b81527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2821415600482015260008051602062019faa83398151915290634c63e5629060240160006040518083038186803b1580156200040a57600080fd5b505afa1580156200041f573d6000803e3d6000fd5b50506040805160006020820181905291810182905260608101859052608081018290526001935090915060a0015b60408051808303601f1901815290829052630618f58760e51b8252634a57011360e01b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b158015620004ac57600080fd5b505af1158015620004c1573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf935062000500929091169086908690600401620063a9565b600060405180830381600087803b1580156200051b57600080fd5b505af115801562000530573d6000803e3d6000fd5b50505050505050565b62000543620028e3565b601c54601d5462000561916001600160a01b03908116911662003f0e565b602780546001600160a01b0319166001600160a01b03929092169182179055620005c0907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a764000080603280620017c5565b6027546040516001600160a01b0390911690620005dd9062005dd7565b6001600160a01b039091168152602001604051809103906000f0801580156200060a573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b03928316908117909155601c5462000643921690670de0b6b3a764000062003f27565b601d54602c546200066a916001600160a01b039081169116670de0b6b3a764000062003f27565b565b60606014805480602002602001604051908101604052809291908181526020018280548015620006c657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006a7575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200081557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620007fd5783829060005260206000200180546200076990620063d3565b80601f01602080910402602001604051908101604052809291908181526020018280546200079790620063d3565b8015620007e85780601f10620007bc57610100808354040283529160200191620007e8565b820191906000526020600020905b815481529060010190602001808311620007ca57829003601f168201915b50505050508152602001906001019062000747565b505050508152505081526020019060010190620006f4565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620006c6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006a7575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620006c6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006a7575050505050905090565b6040805160006020820181905291810182905260608101839052600160808201819052919060a0016200044d565b6000808360ff1611801562000928575060008260ff16115b6200093f5762000939828462006425565b62000959565b60016200094d838562006425565b62000959919062006441565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620008155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000a3657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620009f75790505b5050505050815250508152602001906001019062000989565b60275462000a9a907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a7640000600180620025eb565b604080516001600160801b0360208201819052818301527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080808301919091528251808303909101815260a0820192839052602754602c5463ea3446bf60e01b90945277016345785d8a00000000000000000000016345785d8a00009391926001600160a01b039182169263ea3446bf9262000b48929116908690869060a401620063a9565b600060405180830381600087803b15801562000b6357600080fd5b505af115801562000b78573d6000803e3d6000fd5b5050602754604051630157d2d160e31b8152628000006004820152600093508392506001600160a01b0390911690630abe9688906024016040805180830381865afa15801562000bcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bf291906200645d565b6001600160801b031691506001600160801b0316915062000c4b8260006040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a310081525062003f3b565b62000c8e8160006040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a320081525062003f3b565b60275462000cda907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b031662800000670de0b6b3a764000080600180620017c5565b60275462000db8906001600160a01b031663a41a01fb600162000d01628000008262006491565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562000d48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6e9190620064b0565b62ffffff166280000062ffffff166040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a330081525062003f3b565b60275462000e97906001600160a01b031663a41a01fb600062000de0600162800000620064d0565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562000e27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e4d9190620064b0565b62ffffff166280000062ffffff166040518060400160405280601f81526020017f746573745f4564676543617365466c6173684c6f616e42696e444f533a3a340081525062003f3b565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200081557838290600052602060002001805462000ee390620063d3565b80601f016020809104026020016040519081016040528092919081815260200182805462000f1190620063d3565b801562000f625780601f1062000f365761010080835404028352916020019162000f62565b820191906000526020600020905b81548152906001019060200180831162000f4457829003601f168201915b50505050508152602001906001019062000ec1565b60008062000f8b8462ffffff8716620064ef565b905060008360ff161162000fa0578062000fbc565b62000faf60ff84168262006505565b62000fbc906001620064ef565b905062000fc98162003fa1565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620008155760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010a357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010645790505b5050505050815250508152602001906001019062000ff6565b60008051602062019faa833981519152634c63e562670de0b6b3a76400006001600160801b03851611801590620011045750670de0b6b3a7640000836001600160801b031611155b80156200112e57506000846001600160801b031611806200112e57506000836001600160801b0316115b6040518263ffffffff1660e01b81526004016200114f911515815260200190565b60006040518083038186803b1580156200116857600080fd5b505afa1580156200117d573d6000803e3d6000fd5b50600092505050608082901b6001600160801b03841617604080516001600160801b0360208201819052918101919091527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2606082015260006080820181905291925060a00160408051808303601f1901815290829052601c546027546370a0823160e01b84526001600160a01b0390811660048501529193506000929116906370a0823190602401602060405180830381865afa15801562001244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200126a91906200651b565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620012bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e391906200651b565b90506000602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200133b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200136191906200651b565b90506000670de0b6b3a7640000600162001385846001600160801b038c1662006535565b6200139990670de0b6b3a7640000620064ef565b620013a5919062006505565b620013b1919062006565565b90506000670de0b6b3a76400006001620013d5856001600160801b038c1662006535565b620013e990670de0b6b3a7640000620064ef565b620013f5919062006505565b62001401919062006565565b602754602c5460405163ea3446bf60e01b81529293506001600160a01b039182169263ea3446bf926200143d9216908b908b90600401620063a9565b600060405180830381600087803b1580156200145857600080fd5b505af11580156200146d573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b039182166004820152620015319450911691506370a0823190602401602060405180830381865afa158015620014c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014e991906200651b565b620014f58488620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a31000000000000000000000081525062003f3b565b601d546027546040516370a0823160e01b81526001600160a01b039182166004820152620015f39291909116906370a0823190602401602060405180830381865afa15801562001585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ab91906200651b565b620015b78387620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a32000000000000000000000081525062003f3b565b60275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa1580156200163e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200166491906200645d565b6001600160801b031691506001600160801b03169150600080602760009054906101000a90046001600160a01b03166001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa158015620016d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f691906200645d565b6001600160801b0391821693501690506200175e620017168386620064ef565b62001722888c620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a33000000000000000000000081525062003f3b565b620017b66200176e8285620064ef565b6200177a878b620064ef565b6040518060400160405280601581526020017f7465737446757a7a5f466c6173684c6f616e3a3a34000000000000000000000081525062003f3b565b50505050505050505050505050565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001806573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200182c919062006588565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200186f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001895919062006588565b9050620018a4828b8862003f27565b620018b1818b8762003f27565b6000620018bf858562000910565b905060008167ffffffffffffffff811115620018df57620018df620065a8565b60405190808252806020026020018201604052801562001909578160200160208202803683370190505b50905060005b8281101562001a08576000620019278b838962000f77565b905060008b62ffffff168262ffffff161015801562001949575060008960ff16115b6200195657600062001977565b620019776200197160ff8b16670de0b6b3a764000062006565565b62003fcd565b905060008c62ffffff168362ffffff161115801562001999575060008960ff16115b620019a6576000620019c1565b620019c16200197160ff8b16670de0b6b3a764000062006565565b9050620019d082828562003ff9565b858581518110620019e557620019e5620065be565b6020026020010181815250505050508062001a0090620065d4565b90506200190f565b506040516303223eab60e11b81526001600160a01b038d16600482015260008051602062019faa833981519152906306447d5690602401600060405180830381600087803b15801562001a5a57600080fd5b505af115801562001a6f573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562001ac3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ae9919062006601565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562001b3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b60919062006601565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001bc057600080fd5b505af115801562001bd5573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162001c0b939291906200661f565b6000604051808303816000875af115801562001c2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c559190810190620066e0565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200081557838290600052602060002001805462001cac90620063d3565b80601f016020809104026020016040519081016040528092919081815260200182805462001cda90620063d3565b801562001d2b5780601f1062001cff5761010080835404028352916020019162001d2b565b820191906000526020600020905b81548152906001019060200180831162001d0d57829003601f168201915b50505050508152602001906001019062001c8a565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562001d90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001db6919062006795565b9998505050505050505050565b60075460009060ff161562001ddc575060075460ff1690565b604051630667f9d760e41b815260008051602062019faa833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562001e50573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7691906200651b565b1415905090565b604051630618f58760e51b815263727ab02160e11b600482015260008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b15801562001ecc57600080fd5b505af115801562001ee1573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b0391821660048201526000602482018190526060604483015260648201529116925063ea3446bf91506084015b600060405180830381600087803b15801562001f4557600080fd5b505af115801562000e97573d6000803e3d6000fd5b60008051602062019faa833981519152634c63e5626001600160801b0384161580159062001f9157506000836001600160801b0316115b801562001faf5750670de0b6b3a7640000846001600160801b031611155b801562001fcd5750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162001fee911515815260200190565b60006040518083038186803b1580156200200757600080fd5b505afa1580156200201c573d6000803e3d6000fd5b505050506000602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200209c91906200651b565b90506000670de0b6b3a76400006001620020c0846001600160801b03881662006535565b620020d490670de0b6b3a7640000620064ef565b620020e0919062006505565b620020ec919062006565565b90506000670de0b6b3a7640000600162002110856001600160801b03881662006535565b6200212490670de0b6b3a7640000620064ef565b62002130919062006505565b6200213c919062006565565b90506000608085901b6001600160801b038716179050600060016200216b856001600160801b038a16620064ef565b62002177919062006505565b6200218c846001600160801b038916620064ef565b6040805160208101939093528201527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a00160408051808303601f1901815290829052630618f58760e51b8252630e3c717160e11b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b1580156200222a57600080fd5b505af11580156200223f573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf93506200227e929091169086908690600401620063a9565b600060405180830381600087803b1580156200229957600080fd5b505af1158015620022ae573d6000803e3d6000fd5b5050505083876001600160801b0316620022c99190620064ef565b6001620022e0856001600160801b038a16620064ef565b620022ec919062006505565b6040805160208101939093528201527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a00160408051808303601f1901815290829052630618f58760e51b8252630e3c717160e11b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b1580156200238a57600080fd5b505af11580156200239f573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf9350620023de929091169086908690600401620063a9565b600060405180830381600087803b158015620023f957600080fd5b505af11580156200240e573d6000803e3d6000fd5b50505050600184886001600160801b03166200242b9190620064ef565b62002437919062006505565b60016200244e856001600160801b038a16620064ef565b6200245a919062006505565b6040805160208101939093528201527fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c260608201526000608082015260a00160408051808303601f1901815290829052630618f58760e51b8252630e3c717160e11b6004830152915060008051602062019faa8339815191529063c31eb0e090602401600060405180830381600087803b158015620024f857600080fd5b505af11580156200250d573d6000803e3d6000fd5b5050602754602c5460405163ea3446bf60e01b81526001600160a01b03928316945063ea3446bf93506200254c929091169086908690600401620063a9565b600060405180830381600087803b1580156200256757600080fd5b505af11580156200257c573d6000803e3d6000fd5b5050505050505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620006c6576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006a7575050505050905090565b670de0b6b3a7640000831115620026495760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062002657838362000910565b905060008167ffffffffffffffff811115620026775762002677620065a8565b604051908082528060200260200182016040528015620026a1578160200160208202803683370190505b50905060008267ffffffffffffffff811115620026c257620026c2620065a8565b604051908082528060200260200182016040528015620026ec578160200160208202803683370190505b50905060005b83811015620027fa5760006200270a89838862000f77565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562002760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200278691906200651b565b90508162ffffff16858481518110620027a357620027a3620065be565b6020908102919091010152620027c3818a670de0b6b3a764000062004037565b848481518110620027d857620027d8620065be565b602002602001018181525050505080620027f290620065d4565b9050620026f2565b5060405163ca669fa760e01b81526001600160a01b038b16600482015260008051602062019faa8339815191529063ca669fa790602401600060405180830381600087803b1580156200284c57600080fd5b505af115801562002861573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062002899908d908d90879087906004016200682c565b6000604051808303816000875af1158015620028b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200257c9190810190620068e6565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620029e057601c5460405160008051602062019faa8339815191529163b4d6c782916001600160a01b0390911690620029499062005de5565b604051809103906000f08015801562002966573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620029ab9291906200691f565b600060405180830381600087803b158015620029c657600080fd5b505af1158015620029db573d6000803e3d6000fd5b505050505b6006604051620029f09062005df3565b60ff9091168152602001604051809103906000f08015801562002a17573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062002a499062005df3565b60ff9091168152602001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062002aa29062005df3565b60ff9091168152602001604051809103906000f08015801562002ac9573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062002afb9062005df3565b60ff9091168152602001604051809103906000f08015801562002b22573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062002b549062005df3565b60ff9091168152602001604051809103906000f08015801562002b7b573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062002bad9062005df3565b60ff9091168152602001604051809103906000f08015801562002bd4573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162002c039062005e01565b604051809103906000f08015801562002c20573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e617469766500000000000000000000000000000000000000000000000000606482015260008051602062019faa8339815191529063c657c71890608401600060405180830381600087803b15801562002cc157600080fd5b505af115801562002cd6573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002d4e57600080fd5b505af115801562002d63573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002ddb57600080fd5b505af115801562002df0573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002e6857600080fd5b505af115801562002e7d573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002ef557600080fd5b505af115801562002f0a573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b15801562002f8257600080fd5b505af115801562002f97573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200300957600080fd5b505af11580156200301e573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b158015620030aa57600080fd5b505af1158015620030bf573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d2000090620031469062005e0f565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562003181573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620031af9062005e1d565b6001600160a01b039091168152602001604051809103906000f080158015620031dc573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200323b57600080fd5b505af115801562003250573d6000803e3d6000fd5b505050506200325e62004065565b6200326a600a620043de565b602454602b54601c546040516001600160a01b03938416939283169290911690620032959062005e2b565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620032d2573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200330d9062005e39565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200334a573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f757465720000000000000000000000000000000000000000000000000000606482015260008051602062019faa8339815191529063c657c71890608401600060405180830381600087803b158015620033eb57600080fd5b505af115801562003400573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f7465720000000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200348c57600080fd5b505af1158015620034a1573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f727900000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200353057600080fd5b505af115801562003545573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e0000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b158015620035d157600080fd5b505af1158015620035e6573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f757465725631000000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200367257600080fd5b505af115801562003687573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f727956310000000000000000000000000000000000000000000000606482015260008051602062019faa833981519152925063c657c7189150608401600060405180830381600087803b1580156200371357600080fd5b505af115801562003728573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562003783573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a9919062006601565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003801573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003827919062006601565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200387f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038a5919062006601565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620038fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003923919062006601565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200397b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039a1919062006601565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620039f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a1f919062006601565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003a77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a9d919062006601565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003af5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b1b919062006601565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003b73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b99919062006601565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003bf1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c17919062006601565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003c6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c95919062006601565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003ced573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d13919062006601565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003d6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d91919062006601565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003de9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e0f919062006601565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003e67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e8d919062006601565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003ee5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f0b919062006601565b50565b600062003f2083836280000062004485565b9392505050565b62003f36838383600062004496565b505050565b6040516388b44c8560e01b815260008051602062019faa833981519152906388b44c859062003f739086908690869060040162006943565b60006040518083038186803b15801562003f8c57600080fd5b505afa15801562000530573d6000803e3d6000fd5b8062ffffff8116811462003fc857604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff8116811462003fc85760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60008060006200404886866200469c565b915091506200405b8686868585620046bb565b9695505050505050565b601c546001600160a01b031615620040da5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620040c057600080fd5b505af1158015620040d5573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200414f5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200413557600080fd5b505af11580156200414a573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620041c45760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620041aa57600080fd5b505af1158015620041bf573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620042395760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200421f57600080fd5b505af115801562004234573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620042ae5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200429457600080fd5b505af1158015620042a9573d6000803e3d6000fd5b505050505b6020546001600160a01b031615620043235760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200430957600080fd5b505af11580156200431e573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620043985760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200437e57600080fd5b505af115801562004393573d6000803e3d6000fd5b505050505b6023546001600160a01b0316156200066a5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a440923910162001f2a565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200446957600080fd5b505af11580156200447e573d6000803e3d6000fd5b5050505050565b60006200402f848484600a6200476d565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620044ec9162006964565b600060405180830381855afa9150503d806000811462004529576040519150601f19603f3d011682016040523d82523d6000602084013e6200452e565b606091505b509150506000818060200190518101906200454a91906200651b565b905062004584846200457d87620045766370a0823160e01b6200456f600c8d62004803565b9062004829565b9062004847565b9062004870565b8215620046945760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620045cf919062006964565b600060405180830381855afa9150503d80600081146200460c576040519150601f19603f3d011682016040523d82523d6000602084013e62004611565b606091505b509150506000818060200190518101906200462d91906200651b565b905082861015620046585762004644868462006505565b62004650908262006505565b905062004673565b62004664838762006505565b620046709082620064ef565b90505b62004691816200457d6318160ddd60e01b6200456f600c8d62004803565b50505b505050505050565b6000806000198385098385029250828110838203039150509250929050565b600081600003620046e157838381620046d857620046d86200654f565b04905062000fc9565b83821062004702576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af1158015620047dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fc9919062006588565b6005820180546001600160a01b0319166001600160a01b03831617905560008262003f20565b60038201805463ffffffff191660e083901c17905560008262003f20565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003f20565b6200487c828262004880565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b9460009390929091830182828015620048f357602002820191906000526020600020905b815481526020019060010190808311620048de575b50505050509050600083620049088362004c8d565b6040516020016200491b92919062006982565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200496f918691889101620069b5565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620049aa57620049a88762004d41565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620049eb918791899101620069b5565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162004a32919062006964565b600060405180830381855afa9150503d806000811462004a6f576040519150601f19603f3d011682016040523d82523d6000602084013e62004a74565b606091505b50915062004a9190508162004a8b88602062006535565b62004d4e565b604051630667f9d760e41b81526001600160a01b038a166004820152602481018590529092506000915060008051602062019faa8339815191529063667f9d7090604401602060405180830381865afa15801562004af3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b1991906200651b565b905080821462004bd05760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162002640565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a905260008051602062019faa833981519152906370ca10bb90606401600060405180830381600087803b15801562004c2f57600080fd5b505af115801562004c44573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562004c7960028b01600062005e47565b896004016000905550505050505050505050565b606060008251602062004ca1919062006535565b67ffffffffffffffff81111562004cbc5762004cbc620065a8565b6040519080825280601f01601f19166020018201604052801562004ce7576020820181803683370190505b50905060005b835181101562004d3a57600084828151811062004d0e5762004d0e620065be565b60200260200101519050808260200260200184015250808062004d3190620065d4565b91505062004ced565b5092915050565b60006200095f8262004df0565b6000806000602085511162004d6557845162004d68565b60205b905060005b8181101562004de65762004d8381600862006535565b8662004d908388620064ef565b8151811062004da35762004da3620065be565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062004ddd81620065d4565b91505062004d6d565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562004e6257602002820191906000526020600020905b81548152602001906001019080831162004e4d575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062004eae92508591879101620069b5565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562004f4d576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162004f1d918591879101620069b5565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362004f5b8362005c92565b60405160200162004f6e92919062006982565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004fde57600080fd5b505af115801562004ff3573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005014919062006964565b600060405180830381855afa9150503d806000811462005051576040519150601f19603f3d011682016040523d82523d6000602084013e62005056565b606091505b509150620050739050816200506d87602062006535565b62005d3f565b6040516365bc948160e01b81526001600160a01b03891660048201529092506000915060008051602062019faa833981519152906365bc9481906024016000604051808303816000875af1158015620050d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620050fa9190810190620069f1565b50905080516001036200549e5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708984600081518110620051525762005152620065be565b60200260200101516040518363ffffffff1660e01b81526004016200518c9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620051aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620051d091906200651b565b9050806200523b577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58883600081518110620052105762005210620065be565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620052f05760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162002640565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162005328929190620069b5565b6040516020818303038152906040528051906020012085600081518110620053545762005354620065be565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a181600081518110620053ae57620053ae620065be565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c1683528452808220905192939092620053f9918a918c9101620069b5565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162005463918a918c9101620069b5565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062005b07565b60018151111562005a965760005b815181101562005a8f5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620055005762005500620065be565b60200260200101516040518363ffffffff1660e01b81526004016200553a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200557e91906200651b565b905080620055e8577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620055bd57620055bd620065be565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620055f7575062005a7a565b825181199060008051602062019faa833981519152906370ca10bb908c908790879081106200562a576200562a620065be565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200568357600080fd5b505af115801562005698573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620056ba919062006964565b600060405180830381855afa9150503d8060008114620056f7576040519150601f19603f3d011682016040523d82523d6000602084013e620056fc565b606091505b50909250905062005714816200506d8c602062006535565b9650508080156200572457508186145b15620059bc577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162005762929190620069b5565b604051602081830303815290604052805190602001208888815181106200578d576200578d620065be565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1848481518110620057e657620057e6620065be565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262005831918d918f9101620069b5565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620058be929190620069b5565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620059415762005941620065be565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200599a57600080fd5b505af1158015620059af573d6000803e3d6000fd5b5050505050505062005a8f565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062005a045762005a04620065be565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562005a5d57600080fd5b505af115801562005a72573d6000803e3d6000fd5b505050505050505b8062005a8681620065d4565b915050620054ac565b5062005b07565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162002640565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162005b4b9188918a9101620069b5565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005be85760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162002640565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562005c1960028a01600062005e47565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162005c5f9188918a9101620069b5565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062005ca6919062006535565b67ffffffffffffffff81111562005cc15762005cc1620065a8565b6040519080825280601f01601f19166020018201604052801562005cec576020820181803683370190505b50905060005b835181101562004d3a57600084828151811062005d135762005d13620065be565b60200260200101519050808260200260200184015250808062005d3690620065d4565b91505062005cf2565b6000806000602085511162005d5657845162005d59565b60205b905060005b8181101562004de65762005d7481600862006535565b8662005d818388620064ef565b8151811062005d945762005d94620065be565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005dce81620065d4565b91505062005d5e565b6106a88062006a5d83390190565b610b08806200710583390190565b610bfd8062007c0d83390190565b610c18806200880a83390190565b613199806200942283390190565b61615c806200c5bb83390190565b614c80806201271783390190565b612c13806201739783390190565b508054600082559060005260206000209081019062003f0b91905b8082111562005e78576000815560010162005e62565b5090565b60006020828403121562005e8f57600080fd5b81356001600160e01b03198116811462003f2057600080fd5b60006020828403121562005ebb57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101562005f055783516001600160a01b03168352928401929184019160010162005ede565b50909695505050505050565b60005b8381101562005f2e57818101518382015260200162005f14565b50506000910152565b6000815180845262005f5181602086016020860162005f11565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200601b57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200600457605f1989850301835262005ff184865162005f37565b948e01949350918d019160010162005fd2565b505050978a01979450509188019160010162005f8c565b50919a9950505050505050505050565b803560ff8116811462003fc857600080fd5b600080604083850312156200605157600080fd5b6200605c836200602b565b91506200606c602084016200602b565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200611d57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620061075783516001600160e01b0319168252928b019260019290920191908b0190620060db565b50978a019795505050918701916001016200609d565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200618557603f198886030184526200617285835162005f37565b9450928501929085019060010162006153565b5092979650505050505050565b62ffffff8116811462003f0b57600080fd5b600080600060608486031215620061ba57600080fd5b8335620061c78162006192565b925060208401359150620061de604085016200602b565b90509250925092565b6001600160801b038116811462003f0b57600080fd5b600080604083850312156200621157600080fd5b82356200621e81620061e7565b915060208301356200623081620061e7565b809150509250929050565b6001600160a01b038116811462003f0b57600080fd5b600080600080600080600080610100898b0312156200626f57600080fd5b88356200627c816200623b565b975060208901356200628e816200623b565b96506040890135620062a0816200623b565b95506060890135620062b28162006192565b94506080890135935060a08901359250620062d060c08a016200602b565b9150620062e060e08a016200602b565b90509295985092959890939650565b6000602082840312156200630257600080fd5b813561ffff8116811462003f2057600080fd5b600080600080600080600060e0888a0312156200633157600080fd5b87356200633e816200623b565b9650602088013562006350816200623b565b9550604088013562006362816200623b565b94506060880135620063748162006192565b9350608088013592506200638b60a089016200602b565b91506200639b60c089016200602b565b905092959891949750929550565b6001600160a01b038416815282602082015260606040820152600062000fc9606083018462005f37565b600181811c90821680620063e857607f821691505b6020821081036200640957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156200095f576200095f6200640f565b60ff82811682821603908111156200095f576200095f6200640f565b600080604083850312156200647157600080fd5b82516200647e81620061e7565b60208401519092506200623081620061e7565b62ffffff81811683821601908082111562004d3a5762004d3a6200640f565b600060208284031215620064c357600080fd5b815162003f208162006192565b62ffffff82811682821603908082111562004d3a5762004d3a6200640f565b808201808211156200095f576200095f6200640f565b818103818111156200095f576200095f6200640f565b6000602082840312156200652e57600080fd5b5051919050565b80820281158282048414176200095f576200095f6200640f565b634e487b7160e01b600052601260045260246000fd5b6000826200658357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200659b57600080fd5b815162003f20816200623b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060018201620065e957620065e96200640f565b5060010190565b8051801515811462003fc857600080fd5b6000602082840312156200661457600080fd5b62003f2082620065f0565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200666c578551835294830194918301916001016200664e565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715620066b157620066b1620065a8565b604052919050565b600067ffffffffffffffff821115620066d657620066d6620065a8565b5060051b60200190565b600080600060608486031215620066f657600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200671d57600080fd5b8501601f810187136200672f57600080fd5b8051620067466200674082620066b9565b62006685565b81815260059190911b820183019083810190898311156200676657600080fd5b928401925b8284101562006786578351825292840192908401906200676b565b80955050505050509250925092565b600080600080600080600080610100898b031215620067b357600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c08901519150620062e060e08a01620065f0565b600081518084526020808501945080840160005b83811015620068215781518752958201959082019060010162006803565b509495945050505050565b60006001600160a01b038087168352808616602084015250608060408301526200685a6080830185620067ef565b82810360608401526200686e8185620067ef565b979650505050505050565b600082601f8301126200688b57600080fd5b815160206200689e6200674083620066b9565b82815260059290921b84018101918181019086841115620068be57600080fd5b8286015b84811015620068db5780518352918301918301620068c2565b509695505050505050565b600060208284031215620068f957600080fd5b815167ffffffffffffffff8111156200691157600080fd5b6200402f8482850162006879565b6001600160a01b03831681526040602082015260006200402f604083018462005f37565b83815282602082015260606040820152600062000fc9606083018462005f37565b600082516200697881846020870162005f11565b9190910192915050565b6001600160e01b0319831681528151600090620069a781600485016020870162005f11565b919091016004019392505050565b825160009082906020808701845b83811015620069e157815185529382019390820190600101620069c3565b5050948252509092019392505050565b6000806040838503121562006a0557600080fd5b825167ffffffffffffffff8082111562006a1e57600080fd5b62006a2c8683870162006879565b9350602085015191508082111562006a4357600080fd5b5062006a528582860162006879565b915050925092905056fe60a060405234801561001057600080fd5b506040516106a83803806106a883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161061e61008a600039600060b4015261061e6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631faa6b8714610030575b600080fd5b61004361003e36600461041f565b610055565b60405190815260200160405180910390f35b600080808080610067868801886104f9565b9296509094509250905060018160018111156100855761008561054c565b036101195760405163ea3446bf60e01b8152306004820152602481018a905260606044820152600060648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea3446bf90608401600060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050505b6ffffffffffffffffffffffffffffffffe196001600160801b03851601610153576101506001600160801b03898116908b16610562565b93505b6ffffffffffffffffffffffffffffffffe196001600160801b038416016101955761017e8860801c90565b6101888a60801c90565b6101929190610562565b92505b6001600160801b038416156101c1576101c16001600160a01b038c16336001600160801b0387166101fc565b6001600160801b038316156101ed576101ed6001600160a01b038b16336001600160801b0386166101fc565b509a9950505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610263908490610268565b505050565b600061027d6001600160a01b038416836102d0565b905080516000141580156102a25750808060200190518101906102a09190610597565b155b1561026357604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606102de838360006102e5565b9392505050565b60608147101561030a5760405163cd78605960e01b81523060048201526024016102c7565b600080856001600160a01b0316848660405161032691906105b9565b60006040518083038185875af1925050503d8060008114610363576040519150601f19603f3d011682016040523d82523d6000602084013e610368565b606091505b5091509150610378868383610382565b9695505050505050565b60608261039757610392826103de565b6102de565b81511580156103ae57506001600160a01b0384163b155b156103d757604051639996b31560e01b81526001600160a01b03851660048201526024016102c7565b50806102de565b8051156103ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461040757600080fd5b600080600080600080600060c0888a03121561043a57600080fd5b87356104458161040a565b965060208801356104558161040a565b955060408801356104658161040a565b9450606088013593506080880135925060a088013567ffffffffffffffff8082111561049057600080fd5b818a0191508a601f8301126104a457600080fd5b8135818111156104b357600080fd5b8b60208285010111156104c557600080fd5b60208301945080935050505092959891949750929550565b80356001600160801b03811681146104f457600080fd5b919050565b6000806000806080858703121561050f57600080fd5b610518856104dd565b9350610526602086016104dd565b92506040850135915060608501356002811061054157600080fd5b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b6001600160801b0381811683821601908082111561059057634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156105a957600080fd5b815180151581146102de57600080fd5b6000825160005b818110156105da57602081860181015185830152016105c0565b50600092019182525091905056fea2646970667358221220125c153a56401e84a7f2f5946cba34bab49c83562a8ec35a2e104e6efd5558a164736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220d2ea9c354c5edcfb4f16a1c083662ce2ef53825791cb19c167bcc074e92afe1f64736f6c63430008140033","sourceMap":"132:4868:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;3192:397:85;;;;;;:::i;:::-;;:::i;:::-;;325:415;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;3595:332:85:-;;;;;;:::i;:::-;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4233:25:105;;;4221:2;4206:18;12046:168:93;4087:177:105;2738:178:5;;;:::i;:::-;;;;;;;:::i;4112:886:85:-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;7358:8:105;7346:21;;;7328:40;;7316:2;7301:18;12220:205:93;7184:190:105;3069:146:5;;;:::i;746:1259:85:-;;;;;;:::i;:::-;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;3933:173:85:-;;;:::i;2011:1175::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;3192:397:85:-;3278:49;;-1:-1:-1;;;3278:49:85;;933:31:64;3288:38:85;;;3278:49;;;445:41:105;-1:-1:-1;;;;;;;;;;;3278:9:85;;;418:18:105;;3278:49:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3413:29:85;;;3338:23;3413:29;;;10479:36:105;;;10531:18;;;10524:45;;;10585:18;;;10578:34;;;10628:18;;;10621:45;;;3380:1:85;;-1:-1:-1;3338:23:85;;-1:-1:-1;10451:19:105;;3413:29:85;;;;;;;-1:-1:-1;;3413:29:85;;;;;;;-1:-1:-1;;;3453:65:85;;-1:-1:-1;;;3453:65:85;;;10821:52:105;3413:29:85;-1:-1:-1;;;;;;;;;;;;3453:15:85;;;10794:18:105;;3453:65:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3528:11:85;;3550:8;;3528:54;;-1:-1:-1;;;3528:54:85;;-1:-1:-1;;;;;3528:11:85;;;;-1:-1:-1;3528:21:85;;-1:-1:-1;3528:54:85;;3550:8;;;;3560:15;;3577:4;;3528:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:321;;3192:397;:::o;325:415::-;368:13;:11;:13::i;:::-;419:7;;428:4;;406:27;;-1:-1:-1;;;;;419:7:85;;;;428:4;406:12;:27::i;:::-;392:11;:41;;-1:-1:-1;;;;;;392:41:85;-1:-1:-1;;;;;392:41:85;;;;;;;;;444:63;;457:3;;;;992:7:93;488:4:85;;500:2;;444:12;:63::i;:::-;547:11;;529:30;;-1:-1:-1;;;;;547:11:85;;;;529:30;;;:::i;:::-;-1:-1:-1;;;;;11501:55:105;;;11483:74;;11471:2;11456:18;529:30:85;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;518:8:85;:41;;-1:-1:-1;;;;;;518:41:85;-1:-1:-1;;;;;518:41:85;;;;;;;;;645:7;;632:47;;645:7;;674:4;632;:47::i;:::-;702:4;;717:8;;689:44;;-1:-1:-1;;;;;702:4:85;;;;717:8;728:4;689;:44::i;:::-;325:415::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;3595:332:85:-;3751:29;;;3676:23;3751:29;;;10479:36:105;;;10531:18;;;10524:45;;;10585:18;;;10578:34;;;3718:1:85;10628:18:105;;;10621:45;;;3718:1:85;3676:23;10451:19:105;;3751:29:85;10230:442:105;12046:168:93;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4112:886:85;4236:11;;4210:58;;4226:3;;;;-1:-1:-1;;;;;4236:11:85;992:7:93;4257:4:85;4236:11;;4210:15;:58::i;:::-;4370:79;;;-1:-1:-1;;;;;4370:79:85;;;13131:34:105;;;13181:18;;;13174:43;933:31:64;13233:18:105;;;13226:34;4279:23:85;13276:18:105;;;;13269:45;;;;4370:79:85;;;;;;;;;;13050:19:105;;;4370:79:85;;;;4460:11;;4482:8;;-1:-1:-1;;;4460:54:85;;;1035:38:77;;4370:79:85;;-1:-1:-1;;;;;4460:11:85;;;;:21;;:54;;4482:8;;;1035:38:77;;4370:79:85;;4460:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4550:11:85;;:26;;-1:-1:-1;;;4550:26:85;;992:7:93;4550:26:85;;;7328:40:105;4526:9:85;;-1:-1:-1;4526:9:85;;-1:-1:-1;;;;;;4550:11:85;;;;:18;;7301::105;;4550:26:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4525:51:85;;;-1:-1:-1;;;;;4525:51:85;;;4587:49;4596:1;4599;4587:49;;;;;;;;;;;;;;;;;:8;:49::i;:::-;4646;4655:1;4658;4646:49;;;;;;;;;;;;;;;;;:8;:49::i;:::-;4729:11;;4706:61;;4719:3;;;;-1:-1:-1;;;;;4729:11:85;992:7:93;4750:4:85;;4729:11;;4706:12;:61::i;:::-;4787:11;;4778:101;;-1:-1:-1;;;;;4787:11:85;:30;:11;4824:10;992:7:93;4787:11:85;4824:10;:::i;:::-;4787:48;;-1:-1:-1;;;;;;4787:48:85;;;;;;;14081:14:105;;14074:22;4787:48:85;;;14056:41:105;14145:8;14133:21;14113:18;;;14106:49;14029:18;;4787:48:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4778:101;;992:7:93;4778:101:85;;;;;;;;;;;;;;;;;;;:8;:101::i;:::-;4898:11;;4889:102;;-1:-1:-1;;;;;4898:11:85;:30;:11;4936:10;4898:11;992:7:93;4936:10:85;:::i;:::-;4898:49;;-1:-1:-1;;;;;;4898:49:85;;;;;;;14081:14:105;;14074:22;4898:49:85;;;14056:41:105;14145:8;14133:21;14113:18;;;14106:49;14029:18;;4898:49:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4889:102;;992:7:93;4889:102:85;;;;;;;;;;;;;;;;;;;:8;:102::i;:::-;4161:837;;;;4112:886::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;746:1259:85;-1:-1:-1;;;;;;;;;;;827:9:85;848:4;-1:-1:-1;;;;;837:15:85;;;;;;:34;;;867:4;856:7;-1:-1:-1;;;;;856:15:85;;;837:34;:66;;;;;886:1;876:7;-1:-1:-1;;;;;876:11:85;;:26;;;;901:1;891:7;-1:-1:-1;;;;;891:11:85;;876:26;827:77;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;827:77:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;915:23:85;;-1:-1:-1;;;1061:6:77;1057:15;;;-1:-1:-1;;;;;941:14:85;;1035:38:77;994:79:85;;;-1:-1:-1;;;;;994:79:85;;;13131:34:105;;;13181:18;;;13174:43;;;;933:31:64;13233:18:105;;;13226:34;974:17:85;13276:18:105;;;13269:45;;;915:49:85;;-1:-1:-1;13050:19:105;;994:79:85;;;;;;-1:-1:-1;;994:79:85;;;;;;;1103:7;;1129:11;;-1:-1:-1;;;1103:39:85;;-1:-1:-1;;;;;1129:11:85;;;1103:39;;;11483:74:105;994:79:85;;-1:-1:-1;1084:16:85;;1103:7;;;:17;;11456:18:105;;1103:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1171:4;;1194:11;;1171:36;;-1:-1:-1;;;1171:36:85;;-1:-1:-1;;;;;1194:11:85;;;1171:36;;;11483:74:105;1084:58:85;;-1:-1:-1;1152:16:85;;1171:4;;;:14;;11456:18:105;;1171:36:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1152:55;;1218:20;1241:7;;;;;;;;;-1:-1:-1;;;;;1241:7:85;-1:-1:-1;;;;;1241:23:85;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1218:48;-1:-1:-1;1277:12:85;1330:4;1325:1;1293:22;1218:48;-1:-1:-1;;;;;1293:22:85;;;:::i;:::-;:29;;1318:4;1293:29;:::i;:::-;:33;;;;:::i;:::-;1292:42;;;;:::i;:::-;1277:57;-1:-1:-1;1344:12:85;1397:4;1392:1;1360:22;1370:12;-1:-1:-1;;;;;1360:22:85;;;:::i;:::-;:29;;1385:4;1360:29;:::i;:::-;:33;;;;:::i;:::-;1359:42;;;;:::i;:::-;1412:11;;1434:8;;1412:54;;-1:-1:-1;;;1412:54:85;;1344:57;;-1:-1:-1;;;;;;1412:11:85;;;;:21;;:54;;1434:8;;1444:15;;1461:4;;1412:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1486:7:85;;1512:11;;1486:39;;-1:-1:-1;;;1486:39:85;;-1:-1:-1;;;;;1512:11:85;;;1486:39;;;11483:74:105;1477:91:85;;-1:-1:-1;1486:7:85;;;-1:-1:-1;1486:17:85;;11456:18:105;;1486:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1527:15;1538:4;1527:8;:15;:::i;:::-;1477:91;;;;;;;;;;;;;;;;;:8;:91::i;:::-;1587:4;;1610:11;;1587:36;;-1:-1:-1;;;1587:36:85;;-1:-1:-1;;;;;1610:11:85;;;1587:36;;;11483:74:105;1578:88:85;;1587:4;;;;;:14;;11456:18:105;;1587:36:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1625:15;1636:4;1625:8;:15;:::i;:::-;1578:88;;;;;;;;;;;;;;;;;:8;:88::i;:::-;1716:11;;:25;;;-1:-1:-1;;;1716:25:85;;;;1678:16;;;;-1:-1:-1;;;;;1716:11:85;;;;:23;;:25;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1677:64:85;;;-1:-1:-1;;;;;1677:64:85;;;1752:20;1774;1798:11;;;;;;;;;-1:-1:-1;;;;;1798:11:85;-1:-1:-1;;;;;1798:27:85;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1751:76:85;;;;-1:-1:-1;1751:76:85;;-1:-1:-1;1838:75:85;1847:23;1751:76;1847:8;:23;:::i;:::-;1872:15;1883:4;1872:8;:15;:::i;:::-;1838:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;1923;1932:23;1943:12;1932:8;:23;:::i;:::-;1957:15;1968:4;1957:8;:15;:::i;:::-;1923:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;817:1188;;;;;;;;;;;746:1259;;:::o;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;11501:55:105;;11033:19:93;;;11483:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;11456:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;16676:55:105;;;11062:41:93;;;16658:74:105;16748:18;;;16741:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;16631:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;16676:55:105;;;11113:41:93;;;16658:74:105;16748:18;;;16741:34;;;11113:15:93;;;;;16631:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;19672:6:105;19660:19;;12532:26:93;;;19642:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;19615:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;16658:74:105;;;1398:17:1;16748:18:105;;;16741:34;1428:1:1;;1377:7;;16631:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;3933:173:85:-;3993:58;;-1:-1:-1;;;3993:58:85;;-1:-1:-1;;;3993:58:85;;;10821:52:105;-1:-1:-1;;;;;;;;;;;3993:15:85;;;10794:18:105;;3993:58:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4061:11:85;;4083:8;;4061:38;;-1:-1:-1;;;4061:38:85;;-1:-1:-1;;;;;4083:8:85;;;4061:38;;;21091:74:105;4061:11:85;21181:18:105;;;21174:34;;;21244:2;21224:18;;;21217:30;21263:18;;;21256:29;4061:11:85;;;-1:-1:-1;4061:21:85;;-1:-1:-1;21302:19:105;;4061:38:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2011:1175;-1:-1:-1;;;;;;;;;;;2117:9:85;-1:-1:-1;;;;;2127:11:85;;;;;;:26;;;2152:1;2142:7;-1:-1:-1;;;;;2142:11:85;;2127:26;:45;;;;;2168:4;2157:7;-1:-1:-1;;;;;2157:15:85;;;2127:45;:64;;;;;2187:4;2176:7;-1:-1:-1;;;;;2176:15:85;;;2127:64;2117:75;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;2117:75:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:20;2226:7;;;;;;;;;-1:-1:-1;;;;;2226:7:85;-1:-1:-1;;;;;2226:23:85;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2203:48;-1:-1:-1;2262:12:85;2315:4;2310:1;2278:22;2203:48;-1:-1:-1;;;;;2278:22:85;;;:::i;:::-;:29;;2303:4;2278:29;:::i;:::-;:33;;;;:::i;:::-;2277:42;;;;:::i;:::-;2262:57;-1:-1:-1;2329:12:85;2382:4;2377:1;2345:22;2355:12;-1:-1:-1;;;;;2345:22:85;;;:::i;:::-;:29;;2370:4;2345:29;:::i;:::-;:33;;;;:::i;:::-;2344:42;;;;:::i;:::-;2329:57;-1:-1:-1;2397:23:85;1061:6:77;1057:15;;;-1:-1:-1;;;;;2423:14:85;;1035:38:77;2397:49:85;-1:-1:-1;2456:17:85;2504:1;2487:14;2497:4;-1:-1:-1;;;;;2487:14:85;;;:::i;:::-;:18;;;;:::i;:::-;2507:14;2517:4;-1:-1:-1;;;;;2507:14:85;;;:::i;:::-;2476:77;;;;;;21569:25:105;;;;21610:18;;21603:34;933:31:64;21653:18:105;;;21646:34;2551:1:85;21696:18:105;;;21689:45;21541:19;;2476:77:85;;;;;;-1:-1:-1;;2476:77:85;;;;;;;-1:-1:-1;;;2564:69:85;;-1:-1:-1;;;2564:69:85;;;10821:52:105;2476:77:85;-1:-1:-1;;;;;;;;;;;;2564:15:85;;;10794:18:105;;2564:69:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2643:11:85;;2665:8;;2643:54;;-1:-1:-1;;;2643:54:85;;-1:-1:-1;;;;;2643:11:85;;;;-1:-1:-1;2643:21:85;;-1:-1:-1;2643:54:85;;2665:8;;;;2675:15;;2692:4;;2643:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2736:4;2726:7;-1:-1:-1;;;;;2726:14:85;;;;;:::i;:::-;2759:1;2742:14;2752:4;-1:-1:-1;;;;;2742:14:85;;;:::i;:::-;:18;;;;:::i;:::-;2715:77;;;;;;21569:25:105;;;;21610:18;;21603:34;933:31:64;21653:18:105;;;21646:34;2790:1:85;21696:18:105;;;21689:45;21541:19;;2715:77:85;;;;;;-1:-1:-1;;2715:77:85;;;;;;;-1:-1:-1;;;2803:69:85;;-1:-1:-1;;;2803:69:85;;;10821:52:105;2715:77:85;-1:-1:-1;;;;;;;;;;;;2803:15:85;;;10794:18:105;;2803:69:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2882:11:85;;2904:8;;2882:54;;-1:-1:-1;;;2882:54:85;;-1:-1:-1;;;;;2882:11:85;;;;-1:-1:-1;2882:21:85;;-1:-1:-1;2882:54:85;;2904:8;;;;2914:15;;2931:4;;2882:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:1;2975:4;2965:7;-1:-1:-1;;;;;2965:14:85;;;;;:::i;:::-;:18;;;;:::i;:::-;3002:1;2985:14;2995:4;-1:-1:-1;;;;;2985:14:85;;;:::i;:::-;:18;;;;:::i;:::-;2954:81;;;;;;21569:25:105;;;;21610:18;;21603:34;933:31:64;21653:18:105;;;21646:34;3033:1:85;21696:18:105;;;21689:45;21541:19;;2954:81:85;;;;;;-1:-1:-1;;2954:81:85;;;;;;;-1:-1:-1;;;3046:69:85;;-1:-1:-1;;;3046:69:85;;;10821:52:105;2954:81:85;-1:-1:-1;;;;;;;;;;;;3046:15:85;;;10794:18:105;;3046:69:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3125:11:85;;3147:8;;3125:54;;-1:-1:-1;;;3125:54:85;;-1:-1:-1;;;;;3125:11:85;;;;-1:-1:-1;3125:21:85;;-1:-1:-1;3125:54:85;;3147:8;;;;3157:15;;3174:4;;3125:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2107:1079;;;;;2011:1175;;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;21947:2:105;11461:73:93;;;21929:21:105;21986:2;21966:18;;;21959:30;22025:26;22005:18;;;21998:54;22069:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;22289:55:105;;;11821:26:93;;;22271:74:105;22393:8;22381:21;;22361:18;;;22354:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;22244:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;11501:55:105;;11974:14:93;;;11483:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;11456:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;25104:4:105;25092:17;;;25074:36;;25062:2;25047:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;25104:4:105;25092:17;;;25074:36;;25062:2;25047:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;25104:4:105;25092:17;;;25074:36;;25062:2;25047:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;25104:4:105;25092:17;;;25074:36;;25062:2;25047:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;25104:4:105;25092:17;;;25074:36;;25062:2;25047:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;25104:4:105;25092:17;;;25074:36;;25062:2;25047:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;25732:74:105;25822:18;;;25815:30;;;;25881:1;25861:18;;;25854:29;25919:9;25899:18;;;25892:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;25946:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;26188:74:105;;;;26278:18;;;26271:30;;;;26317:18;;;26310:29;-1:-1:-1;;;26355:18:105;;;26348:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;26399:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;26641:74:105;;;;26731:18;;;26724:30;;;;26770:18;;;26763:29;-1:-1:-1;;;26808:18:105;;;26801:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;26852:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;27094:74:105;;;;27184:18;;;27177:30;;;;27223:18;;;27216:29;-1:-1:-1;;;27261:18:105;;;27254:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;27305:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;27547:74:105;;;;27637:18;;;27630:30;;;;27676:18;;;27669:29;-1:-1:-1;;;27714:18:105;;;27707:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;27758:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;28000:74:105;;;;28090:18;;;28083:30;;;;28129:18;;;28122:29;-1:-1:-1;;;28167:18:105;;;28160:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;28211:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;28453:74:105;28543:18;;;28536:30;28602:1;28582:18;;;28575:29;-1:-1:-1;;;28620:18:105;;;28613:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;28663:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;28905:74:105;28995:18;;;28988:30;29054:1;29034:18;;;29027:29;29092:10;29072:18;;;29065:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;29120:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;29447:15:105;;;29429:34;;29499:15;;;;29494:2;29479:18;;29472:43;29546:2;29531:18;;29524:34;29356:2;29341:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;11501:55:105;;;11483:74;;11471:2;11456:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;11483:74:105;;;;3824:7:93;;;;:31;;11456:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;30165:15:105;;;30147:34;;30217:15;;;30212:2;30197:18;;30190:43;30269:15;;;30264:2;30249:18;;30242:43;30074:2;30059:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;30165:15:105;;;30147:34;;30217:15;;;30212:2;30197:18;;30190:43;30269:15;;;30264:2;30249:18;;30242:43;30074:2;30059:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;30920:74:105;31010:18;;;31003:30;;;;31069:1;31049:18;;;31042:29;31107:8;31087:18;;;31080:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;31133:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;31375:74:105;31465:18;;;31458:30;31524:1;31504:18;;;31497:29;31562:8;31542:18;;;31535:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;31588:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;31830:74:105;31920:18;;;31913:30;;;;31979:1;31959:18;;;31952:29;32017:9;31997:18;;;31990:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;32044:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;32286:74:105;32376:18;;;32369:30;32435:2;32415:18;;;32408:30;32474:20;32454:18;;;32447:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;32512:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;32754:74:105;32844:18;;;32837:30;32903:1;32883:18;;;32876:29;32941:10;32921:18;;;32914:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;32969:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;33211:74:105;33301:18;;;33294:30;33360:1;33340:18;;;33333:29;33398:11;33378:18;;;33371:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;33427:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;16631:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;4729:4:93;;;:12;;16631:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;4789:4:93;;;:12;;16631:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;4849:4:93;;;:12;;16631:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;4909:4:93;;;:12;;16631:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;4969:4:93;;;:12;;16631:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5029:3:93;;;:11;;16631:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5088:8:93;;;:16;;16631:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5153:7:93;;;:15;;16631:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5214:4:93;;;:12;;16631:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5272:4:93;;;:12;;16631:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5330:4:93;;;:12;;16631:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5388:4:93;;;:12;;16631:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5446:4:93;;;:12;;16631:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5504:3:93;;;:11;;16631:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;16658:74:105;-1:-1:-1;;16748:18:105;;;16741:34;5561:8:93;;;:16;;16631:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;7147:160::-;7217:14;7253:47;7277:6;7285;992:7;7253:23;:47::i;:::-;7243:57;7147:160;-1:-1:-1;;;7147:160:93:o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;:::-;26935:117;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10236:135:78;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8711:::-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;11483:74:105;6180:7:93;;;:21;;11456:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;11483:74:105;6253:7:93;;;:21;;11456:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;11483:74:105;6323:7:93;;;:21;;11456:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;11483:74:105;6393:7:93;;;:21;;11456:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;11483:74:105;6463:7:93;;;:21;;11456:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;11483:74:105;6533:7:93;;;:21;;11456:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;11483:74:105;6602:7:93;;;:21;;11456:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;11483:74:105;6675:7:93;;;:21;;11456:18:105;6675:31:93;11321:242:105;6719:422:93;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;34942:6:105;34975:15;;6788:346:93;;;34957:34:105;1202:5:93;35007:18:105;;;35000:43;;;1262:2:93;35059:18:105;;;35052:43;1318:3:93;35111:18:105;;;35104:43;35163:19;;;35156:44;;;;1446:6:93;35243:19:105;;;35236:44;1508:5:93;35296:19:105;;;35289:44;1581:7:93;35349:19:105;;;35342:44;6788:7:93;35402:19:105;;;35395:51;-1:-1:-1;;;;;6788:7:93;;:17;;34904:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;:::o;7313:216::-;7410:14;7446:76;7480:6;7488;7496:7;1147:2;7446:33;:76::i;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;11501:55:105;;;27501:38:3;;;;11483:74:105;;;;27501:38:3;;;;;;;;;;11456:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;:60::-;27760:402;;27748:414;27416:752;;27331:837;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;7535:257:93:-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;36087:15:105;;;7729:54:93;;;36069:34:105;36139:15;;;36119:18;;;36112:43;;;;36203:8;36191:21;;36171:18;;;36164:49;36261:6;36249:19;;36229:18;;;36222:47;7674:14:93;;7729:7;;;;:20;;35980:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;:::-;10474:120;;:::o;10966:1095::-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;16676:55:105;;11664:18:8;;;16658:74:105;16748:18;;;16741:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;16631:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;37759:2:105;11725:175:8;;;37741:21:105;37798:3;37778:18;;;37771:31;37838:34;37818:18;;;37811:62;37909:34;37889:18;;;37882:62;37981:34;37960:19;;;37953:63;-1:-1:-1;;;38032:19:105;;;38025:46;38088:19;;11725:175:8;37557:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;38338:55:105;;11920:24:8;;;38320:74:105;38410:18;;;38403:34;;;38453:18;;;38446:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;38293:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;13395:393::-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;11501:55:105;;1990:25:8;;;11483:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;11456:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;16676:55:105;;;;16658:74;;16763:2;16748:18;;16741:34;16646:2;16631:18;;16484:297;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;16676:55:105;;;16658:74;;16748:18;;;16741:34;16631:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;37759:2:105;2268:187:8;;;37741:21:105;37798:3;37778:18;;;37771:31;37838:34;37818:18;;;37811:62;37909:34;37889:18;;;37882:62;37981:34;37960:19;;;37953:63;-1:-1:-1;;;38032:19:105;;;38025:46;38088:19;;2268:187:8;37557:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;39357:55:105;;;39339:74;;-1:-1:-1;;;;;;39449:33:105;;;39429:18;;;39422:61;;;;39499:18;;;39492:34;39557:2;39542:18;;39535:34;39326:3;39311:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;16676:55:105;;;;16658:74;;16763:2;16748:18;;16741:34;16646:2;16631:18;;16484:297;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;16676:55:105;;;16658:74;;16748:18;;;16741:34;16631:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;38338:55:105;;;3215:32:8;;;38320:74:105;38410:18;;;38403:34;38453:18;;;38446:34;;;38293:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;39357:55:105;;;39339:74;;-1:-1:-1;;;;;;39449:33:105;;;39429:18;;;39422:61;;;;39499:18;;;39492:34;39557:2;39542:18;;39535:34;39326:3;39311:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;38338:55:105;;;3941:29:8;;;38320:74:105;38410:18;;;38403:34;38453:18;;;38446:34;;;38293:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;38338:55:105;;;4033:29:8;;;38320:74:105;38410:18;;;38403:34;38453:18;;;38446:34;;;38293:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;39782:2:105;4107:74:8;;;39764:21:105;39801:18;;;39794:30;;;;39860:34;39840:18;;;39833:62;39931:34;39911:18;;;39904:62;39983:19;;4107:74:8;39580:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;40215:2:105;4202:162:8;;;40197:21:105;40254:2;40234:18;;;40227:30;40293:34;40273:18;;;40266:62;40364:17;40344:18;;;40337:45;40399:19;;4202:162:8;40013:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:180;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;-1:-1:-1;648:23:105;;497:180;-1:-1:-1;497:180:105:o;682:681::-;853:2;905:21;;;975:13;;878:18;;;997:22;;;824:4;;853:2;1076:15;;;;1050:2;1035:18;;;824:4;1119:218;1133:6;1130:1;1127:13;1119:218;;;1198:13;;-1:-1:-1;;;;;1194:62:105;1182:75;;1312:15;;;;1277:12;;;;1155:1;1148:9;1119:218;;;-1:-1:-1;1354:3:105;;682:681;-1:-1:-1;;;;;;682:681:105:o;1368:250::-;1453:1;1463:113;1477:6;1474:1;1471:13;1463:113;;;1553:11;;;1547:18;1534:11;;;1527:39;1499:2;1492:10;1463:113;;;-1:-1:-1;;1610:1:105;1592:16;;1585:27;1368:250::o;1623:271::-;1665:3;1703:5;1697:12;1730:6;1725:3;1718:19;1746:76;1815:6;1808:4;1803:3;1799:14;1792:4;1785:5;1781:16;1746:76;:::i;:::-;1876:2;1855:15;-1:-1:-1;;1851:29:105;1842:39;;;;1883:4;1838:50;;1623:271;-1:-1:-1;;1623:271:105:o;1899:1765::-;2132:2;2184:21;;;2254:13;;2157:18;;;2276:22;;;2103:4;;2132:2;2317;;2335:18;;;;2372:1;2415:15;;;2400:31;;2396:40;;2459:15;;;2103:4;;2523:1112;2539:6;2534:3;2531:15;2523:1112;;;-1:-1:-1;;2608:22:105;;;2604:36;2592:49;;2664:13;;2751:9;;-1:-1:-1;;;;;2747:58:105;2732:74;;2845:11;;2839:18;2877:15;;;2870:27;;;2958:19;;2704:15;;;2990:24;;;3171:21;;;;3037:2;3119:17;;;3107:30;;3103:39;;;3061:15;;;;3216:1;3230:296;3246:8;3241:3;3238:17;3230:296;;;3352:2;3348:7;3339:6;3331;3327:19;3323:33;3316:5;3309:48;3384:42;3419:6;3408:8;3402:15;3384:42;:::i;:::-;3455:17;;;;3374:52;-1:-1:-1;3498:14:105;;;;3274:1;3265:11;3230:296;;;-1:-1:-1;;;3613:12:105;;;;3549:6;-1:-1:-1;;3578:15:105;;;;2565:1;2556:11;2523:1112;;;-1:-1:-1;3652:6:105;;1899:1765;-1:-1:-1;;;;;;;;;;1899:1765:105:o;3669:156::-;3735:20;;3795:4;3784:16;;3774:27;;3764:55;;3815:1;3812;3805:12;3830:252;3894:6;3902;3955:2;3943:9;3934:7;3930:23;3926:32;3923:52;;;3971:1;3968;3961:12;3923:52;3994:27;4011:9;3994:27;:::i;:::-;3984:37;;4040:36;4072:2;4061:9;4057:18;4040:36;:::i;:::-;4030:46;;3830:252;;;;;:::o;4269:1590::-;4471:4;4500:2;4540;4529:9;4525:18;4570:2;4559:9;4552:21;4593:6;4628;4622:13;4659:6;4651;4644:22;4685:2;4675:12;;4718:2;4707:9;4703:18;4696:25;;4780:2;4770:6;4767:1;4763:14;4752:9;4748:30;4744:39;4818:2;4810:6;4806:15;4839:1;4860;4870:960;4886:6;4881:3;4878:15;4870:960;;;4955:22;;;-1:-1:-1;;4951:36:105;4939:49;;5011:13;;5098:9;;-1:-1:-1;;;;;5094:58:105;5079:74;;5192:11;;5186:18;5224:15;;;5217:27;;;5305:19;;5051:15;;;5337:24;;;5427:21;;;;5472:1;;5395:2;5383:15;;;5486:236;5502:8;5497:3;5494:17;5486:236;;;5583:15;;-1:-1:-1;;;;;;5579:42:105;5565:57;;5691:17;;;;5530:1;5521:11;;;;;5648:14;;;;5486:236;;;-1:-1:-1;5808:12:105;;;;5745:5;-1:-1:-1;;;5773:15:105;;;;4912:1;4903:11;4870:960;;;-1:-1:-1;5847:6:105;;4269:1590;-1:-1:-1;;;;;;;;;4269:1590:105:o;5864:803::-;6026:4;6055:2;6095;6084:9;6080:18;6125:2;6114:9;6107:21;6148:6;6183;6177:13;6214:6;6206;6199:22;6252:2;6241:9;6237:18;6230:25;;6314:2;6304:6;6301:1;6297:14;6286:9;6282:30;6278:39;6264:53;;6352:2;6344:6;6340:15;6373:1;6383:255;6397:6;6394:1;6391:13;6383:255;;;6490:2;6486:7;6474:9;6466:6;6462:22;6458:36;6453:3;6446:49;6518:40;6551:6;6542;6536:13;6518:40;:::i;:::-;6508:50;-1:-1:-1;6616:12:105;;;;6581:15;;;;6419:1;6412:9;6383:255;;;-1:-1:-1;6655:6:105;;5864:803;-1:-1:-1;;;;;;;5864:803:105:o;6672:119::-;6757:8;6750:5;6746:20;6739:5;6736:31;6726:59;;6781:1;6778;6771:12;6796:383;6870:6;6878;6886;6939:2;6927:9;6918:7;6914:23;6910:32;6907:52;;;6955:1;6952;6945:12;6907:52;6994:9;6981:23;7013:30;7037:5;7013:30;:::i;:::-;7062:5;-1:-1:-1;7114:2:105;7099:18;;7086:32;;-1:-1:-1;7137:36:105;7169:2;7154:18;;7137:36;:::i;:::-;7127:46;;6796:383;;;;;:::o;7379:146::-;-1:-1:-1;;;;;7458:5:105;7454:46;7447:5;7444:57;7434:85;;7515:1;7512;7505:12;7530:388;7598:6;7606;7659:2;7647:9;7638:7;7634:23;7630:32;7627:52;;;7675:1;7672;7665:12;7627:52;7714:9;7701:23;7733:31;7758:5;7733:31;:::i;:::-;7783:5;-1:-1:-1;7840:2:105;7825:18;;7812:32;7853:33;7812:32;7853:33;:::i;:::-;7905:7;7895:17;;;7530:388;;;;;:::o;7923:154::-;-1:-1:-1;;;;;8002:5:105;7998:54;7991:5;7988:65;7978:93;;8067:1;8064;8057:12;8082:965;8215:6;8223;8231;8239;8247;8255;8263;8271;8324:3;8312:9;8303:7;8299:23;8295:33;8292:53;;;8341:1;8338;8331:12;8292:53;8380:9;8367:23;8399:31;8424:5;8399:31;:::i;:::-;8449:5;-1:-1:-1;8506:2:105;8491:18;;8478:32;8519:33;8478:32;8519:33;:::i;:::-;8571:7;-1:-1:-1;8630:2:105;8615:18;;8602:32;8643:33;8602:32;8643:33;:::i;:::-;8695:7;-1:-1:-1;8754:2:105;8739:18;;8726:32;8767;8726;8767;:::i;:::-;8818:7;-1:-1:-1;8872:3:105;8857:19;;8844:33;;-1:-1:-1;8924:3:105;8909:19;;8896:33;;-1:-1:-1;8948:37:105;8980:3;8965:19;;8948:37;:::i;:::-;8938:47;;9004:37;9036:3;9025:9;9021:19;9004:37;:::i;:::-;8994:47;;8082:965;;;;;;;;;;;:::o;9052:272::-;9110:6;9163:2;9151:9;9142:7;9138:23;9134:32;9131:52;;;9179:1;9176;9169:12;9131:52;9218:9;9205:23;9268:6;9261:5;9257:18;9250:5;9247:29;9237:57;;9290:1;9287;9280:12;9329:896;9453:6;9461;9469;9477;9485;9493;9501;9554:3;9542:9;9533:7;9529:23;9525:33;9522:53;;;9571:1;9568;9561:12;9522:53;9610:9;9597:23;9629:31;9654:5;9629:31;:::i;:::-;9679:5;-1:-1:-1;9736:2:105;9721:18;;9708:32;9749:33;9708:32;9749:33;:::i;:::-;9801:7;-1:-1:-1;9860:2:105;9845:18;;9832:32;9873:33;9832:32;9873:33;:::i;:::-;9925:7;-1:-1:-1;9984:2:105;9969:18;;9956:32;9997;9956;9997;:::i;:::-;10048:7;-1:-1:-1;10102:3:105;10087:19;;10074:33;;-1:-1:-1;10126:37:105;10158:3;10143:19;;10126:37;:::i;:::-;10116:47;;10182:37;10214:3;10203:9;10199:19;10182:37;:::i;:::-;10172:47;;9329:896;;;;;;;;;;:::o;10884:432::-;-1:-1:-1;;;;;11114:6:105;11110:55;11099:9;11092:74;11202:6;11197:2;11186:9;11182:18;11175:34;11245:2;11240;11229:9;11225:18;11218:30;11073:4;11265:45;11306:2;11295:9;11291:18;11283:6;11265:45;:::i;11568:380::-;11647:1;11643:12;;;;11690;;;11711:61;;11765:4;11757:6;11753:17;11743:27;;11711:61;11818:2;11810:6;11807:14;11787:18;11784:38;11781:161;;11864:10;11859:3;11855:20;11852:1;11845:31;11899:4;11896:1;11889:15;11927:4;11924:1;11917:15;11781:161;;11568:380;;;:::o;12400:127::-;12461:10;12456:3;12452:20;12449:1;12442:31;12492:4;12489:1;12482:15;12516:4;12513:1;12506:15;12532:148;12620:4;12599:12;;;12613;;;12595:31;;12638:13;;12635:39;;;12654:18;;:::i;12685:151::-;12775:4;12768:12;;;12754;;;12750:31;;12793:14;;12790:40;;;12810:18;;:::i;13325:385::-;13404:6;13412;13465:2;13453:9;13444:7;13440:23;13436:32;13433:52;;;13481:1;13478;13471:12;13433:52;13513:9;13507:16;13532:31;13557:5;13532:31;:::i;:::-;13632:2;13617:18;;13611:25;13582:5;;-1:-1:-1;13645:33:105;13611:25;13645:33;:::i;13715:170::-;13782:8;13810:10;;;13822;;;13806:27;;13845:11;;;13842:37;;;13859:18;;:::i;14166:249::-;14235:6;14288:2;14276:9;14267:7;14263:23;14259:32;14256:52;;;14304:1;14301;14294:12;14256:52;14336:9;14330:16;14355:30;14379:5;14355:30;:::i;14420:173::-;14488:8;14529:10;;;14517;;;14513:27;;14552:12;;;14549:38;;;14567:18;;:::i;14598:125::-;14663:9;;;14684:10;;;14681:36;;;14697:18;;:::i;14728:128::-;14795:9;;;14816:11;;;14813:37;;;14830:18;;:::i;15092:184::-;15162:6;15215:2;15203:9;15194:7;15190:23;15186:32;15183:52;;;15231:1;15228;15221:12;15183:52;-1:-1:-1;15254:16:105;;15092:184;-1:-1:-1;15092:184:105:o;15281:168::-;15354:9;;;15385;;15402:15;;;15396:22;;15382:37;15372:71;;15423:18;;:::i;15454:127::-;15515:10;15510:3;15506:20;15503:1;15496:31;15546:4;15543:1;15536:15;15570:4;15567:1;15560:15;15586:217;15626:1;15652;15642:132;;15696:10;15691:3;15687:20;15684:1;15677:31;15731:4;15728:1;15721:15;15759:4;15756:1;15749:15;15642:132;-1:-1:-1;15788:9:105;;15586:217::o;15808:267::-;15894:6;15947:2;15935:9;15926:7;15922:23;15918:32;15915:52;;;15963:1;15960;15953:12;15915:52;15995:9;15989:16;16014:31;16039:5;16014:31;:::i;16080:127::-;16141:10;16136:3;16132:20;16129:1;16122:31;16172:4;16169:1;16162:15;16196:4;16193:1;16186:15;16212:127;16273:10;16268:3;16264:20;16261:1;16254:31;16304:4;16301:1;16294:15;16328:4;16325:1;16318:15;16344:135;16383:3;16404:17;;;16401:43;;16424:18;;:::i;:::-;-1:-1:-1;16471:1:105;16460:13;;16344:135::o;16786:164::-;16862:13;;16911;;16904:21;16894:32;;16884:60;;16940:1;16937;16930:12;16955:202;17022:6;17075:2;17063:9;17054:7;17050:23;17046:32;17043:52;;;17091:1;17088;17081:12;17043:52;17114:37;17141:9;17114:37;:::i;17162:854::-;17360:4;17408:2;17397:9;17393:18;-1:-1:-1;;;;;17511:2:105;17503:6;17499:15;17488:9;17481:34;17534:2;17572;17567;17556:9;17552:18;17545:30;17595:6;17630;17624:13;17661:6;17653;17646:22;17699:3;17688:9;17684:19;17677:26;;17738:2;17730:6;17726:15;17712:29;;17759:1;17769:169;17783:6;17780:1;17777:13;17769:169;;;17844:13;;17832:26;;17913:15;;;;17878:12;;;;17805:1;17798:9;17769:169;;;17773:3;;17955;17947:11;;;;18006:2;17998:6;17994:15;17989:2;17978:9;17974:18;17967:43;;;17162:854;;;;;;:::o;18021:275::-;18092:2;18086:9;18157:2;18138:13;;-1:-1:-1;;18134:27:105;18122:40;;18192:18;18177:34;;18213:22;;;18174:62;18171:88;;;18239:18;;:::i;:::-;18275:2;18268:22;18021:275;;-1:-1:-1;18021:275:105:o;18301:183::-;18361:4;18394:18;18386:6;18383:30;18380:56;;;18416:18;;:::i;:::-;-1:-1:-1;18461:1:105;18457:14;18473:4;18453:25;;18301:183::o;18489:1003::-;18602:6;18610;18618;18671:2;18659:9;18650:7;18646:23;18642:32;18639:52;;;18687:1;18684;18677:12;18639:52;18716:9;18710:16;18700:26;;18745:2;18787;18776:9;18772:18;18766:25;18756:35;;18835:2;18824:9;18820:18;18814:25;18862:18;18854:6;18851:30;18848:50;;;18894:1;18891;18884:12;18848:50;18917:22;;18970:4;18962:13;;18958:27;-1:-1:-1;18948:55:105;;18999:1;18996;18989:12;18948:55;19028:2;19022:9;19051:60;19067:43;19107:2;19067:43;:::i;:::-;19051:60;:::i;:::-;19145:15;;;19227:1;19223:10;;;;19215:19;;19211:28;;;19176:12;;;;19251:19;;;19248:39;;;19283:1;19280;19273:12;19248:39;19307:11;;;;19327:135;19343:6;19338:3;19335:15;19327:135;;;19409:10;;19397:23;;19360:12;;;;19440;;;;19327:135;;;19481:5;19471:15;;;;;;;18489:1003;;;;;:::o;19691:634::-;19821:6;19829;19837;19845;19853;19861;19869;19877;19930:3;19918:9;19909:7;19905:23;19901:33;19898:53;;;19947:1;19944;19937:12;19898:53;19976:9;19970:16;19960:26;;20026:2;20015:9;20011:18;20005:25;19995:35;;20070:2;20059:9;20055:18;20049:25;20039:35;;20114:2;20103:9;20099:18;20093:25;20083:35;;20158:3;20147:9;20143:19;20137:26;20127:36;;20203:3;20192:9;20188:19;20182:26;20172:36;;20248:3;20237:9;20233:19;20227:26;20217:36;;20272:47;20314:3;20303:9;20299:19;20272:47;:::i;22414:435::-;22467:3;22505:5;22499:12;22532:6;22527:3;22520:19;22558:4;22587:2;22582:3;22578:12;22571:19;;22624:2;22617:5;22613:14;22645:1;22655:169;22669:6;22666:1;22663:13;22655:169;;;22730:13;;22718:26;;22764:12;;;;22799:15;;;;22691:1;22684:9;22655:169;;;-1:-1:-1;22840:3:105;;22414:435;-1:-1:-1;;;;;22414:435:105:o;22854:688::-;23130:4;-1:-1:-1;;;;;23240:2:105;23232:6;23228:15;23217:9;23210:34;23292:2;23284:6;23280:15;23275:2;23264:9;23260:18;23253:43;;23332:3;23327:2;23316:9;23312:18;23305:31;23359:57;23411:3;23400:9;23396:19;23388:6;23359:57;:::i;:::-;23464:9;23456:6;23452:22;23447:2;23436:9;23432:18;23425:50;23492:44;23529:6;23521;23492:44;:::i;:::-;23484:52;22854:688;-1:-1:-1;;;;;;;22854:688:105:o;23547:659::-;23612:5;23665:3;23658:4;23650:6;23646:17;23642:27;23632:55;;23683:1;23680;23673:12;23632:55;23712:6;23706:13;23738:4;23762:60;23778:43;23818:2;23778:43;:::i;23762:60::-;23856:15;;;23942:1;23938:10;;;;23926:23;;23922:32;;;23887:12;;;;23966:15;;;23963:35;;;23994:1;23991;23984:12;23963:35;24030:2;24022:6;24018:15;24042:135;24058:6;24053:3;24050:15;24042:135;;;24124:10;;24112:23;;24155:12;;;;24075;;24042:135;;;-1:-1:-1;24195:5:105;23547:659;-1:-1:-1;;;;;;23547:659:105:o;24211:363::-;24306:6;24359:2;24347:9;24338:7;24334:23;24330:32;24327:52;;;24375:1;24372;24365:12;24327:52;24408:9;24402:16;24441:18;24433:6;24430:30;24427:50;;;24473:1;24470;24463:12;24427:50;24496:72;24560:7;24551:6;24540:9;24536:22;24496:72;:::i;24579:338::-;-1:-1:-1;;;;;24758:6:105;24754:55;24743:9;24736:74;24846:2;24841;24830:9;24826:18;24819:30;24717:4;24866:45;24907:2;24896:9;24892:18;24884:6;24866:45;:::i;33457:362::-;33662:6;33651:9;33644:25;33705:6;33700:2;33689:9;33685:18;33678:34;33748:2;33743;33732:9;33728:18;33721:30;33625:4;33768:45;33809:2;33798:9;33794:18;33786:6;33768:45;:::i;35457:287::-;35586:3;35624:6;35618:13;35640:66;35699:6;35694:3;35687:4;35679:6;35675:17;35640:66;:::i;:::-;35722:16;;;;;35457:287;-1:-1:-1;;35457:287:105:o;36553:384::-;-1:-1:-1;;;;;;36738:33:105;;36726:46;;36795:13;;36708:3;;36817:74;36795:13;36880:1;36871:11;;36864:4;36852:17;;36817:74;:::i;:::-;36911:16;;;;36929:1;36907:24;;36553:384;-1:-1:-1;;;36553:384:105:o;36942:610::-;37188:13;;37131:3;;37162;;37241:4;37268:15;;;37131:3;37311:175;37325:6;37322:1;37319:13;37311:175;;;37388:13;;37374:28;;37424:14;;;;37461:15;;;;37347:1;37340:9;37311:175;;;-1:-1:-1;;37495:21:105;;;-1:-1:-1;37532:14:105;;;;;-1:-1:-1;;;36942:610:105:o;38491:614::-;38620:6;38628;38681:2;38669:9;38660:7;38656:23;38652:32;38649:52;;;38697:1;38694;38687:12;38649:52;38730:9;38724:16;38759:18;38800:2;38792:6;38789:14;38786:34;;;38816:1;38813;38806:12;38786:34;38839:72;38903:7;38894:6;38883:9;38879:22;38839:72;:::i;:::-;38829:82;;38957:2;38946:9;38942:18;38936:25;38920:41;;38986:2;38976:8;38973:16;38970:36;;;39002:1;38999;38992:12;38970:36;;39025:74;39091:7;39080:8;39069:9;39065:24;39025:74;:::i;:::-;39015:84;;;38491:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":1415,"length":32},{"start":2649,"length":32},{"start":3224,"length":32},{"start":12560,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_FlashLoan(uint128,uint128)":"a2be0b6b","testFuzz_revert_FlashLoanCallbackFailed(bytes32)":"07eb8b14","testFuzz_revert_FlashLoanInsufficientAmount(uint128,uint128)":"d81e19a0","testFuzz_revert_FlashLoanReentrant(bytes32)":"425b14a0","test_EdgeCaseFlashLoanBinDOS()":"75729012","test_revert_FlashLoan0Amounts()":"d7af6f66"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY\",\"type\":\"uint128\"}],\"name\":\"testFuzz_FlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"callback\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_revert_FlashLoanCallbackFailed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY\",\"type\":\"uint128\"}],\"name\":\"testFuzz_revert_FlashLoanInsufficientAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"callback\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_revert_FlashLoanReentrant\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_EdgeCaseFlashLoanBinDOS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_FlashLoan0Amounts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairFlashloan.t.sol\":\"LBPairFlashloanTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairFlashloan.t.sol\":{\"keccak256\":\"0xa5572ef115cbc8d9f37cb1951409161e1c6b8babf7d092087a1a0af4732039c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eae7052acd3fb0152abebb3cef22c3d2d0b3ee584805629d0cccdd5ee59e8ec2\",\"dweb:/ipfs/QmUEfTrHkdepxzfP1kCsgxXYGUFfx6KDnXk3gJeR1a93Jv\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint128","name":"amountX","type":"uint128"},{"internalType":"uint128","name":"amountY","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_FlashLoan"},{"inputs":[{"internalType":"bytes32","name":"callback","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_FlashLoanCallbackFailed"},{"inputs":[{"internalType":"uint128","name":"amountX","type":"uint128"},{"internalType":"uint128","name":"amountY","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_FlashLoanInsufficientAmount"},{"inputs":[{"internalType":"bytes32","name":"callback","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_FlashLoanReentrant"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_EdgeCaseFlashLoanBinDOS"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_FlashLoan0Amounts"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairFlashloan.t.sol":"LBPairFlashloanTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairFlashloan.t.sol":{"keccak256":"0xa5572ef115cbc8d9f37cb1951409161e1c6b8babf7d092087a1a0af4732039c3","urls":["bzz-raw://eae7052acd3fb0152abebb3cef22c3d2d0b3ee584805629d0cccdd5ee59e8ec2","dweb:/ipfs/QmUEfTrHkdepxzfP1kCsgxXYGUFfx6KDnXk3gJeR1a93Jv"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":85} \ No newline at end of file diff --git a/abi/LBPairHooks.t.sol/LBPairHooksTest.json b/abi/LBPairHooks.t.sol/LBPairHooksTest.json deleted file mode 100644 index bc9a8083..00000000 --- a/abi/LBPairHooks.t.sol/LBPairHooksTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"fallback","stateMutability":"nonpayable"},{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_BatchTransferFromReentrancy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BeforeAfterBatchTransferFromHooks","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BeforeAfterBurnHooks","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BeforeAfterFlashLoanHooks","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BeforeAfterMintHooks","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BeforeAfterSwapHooksXtoY","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BeforeAfterSwapHooksYtoX","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BurnReentrancy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_FlashLoanReentrancy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_GetLBHooksParameters","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_MintReentrancy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapReentrancy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c051620227f46200053760003960008181616d5301528181616f6f01526170ca01526000818161064101528181610682015281816106c70152818161086b01528181610a2f01528181610c2201528181610c4301528181610c6401528181610d9901528181610dba01528181610ddb015281816113780152818161149e0152818161153c01528181611659015281816118a00152818161193c01528181611baa01528181611ca6015281816122540152818161243a0152818161255f01528181612625015281816128bd0152818161293b01528181612b6001528181612c9601528181612d2a01528181612e2b01528181612f0101528181612fd4015281816130db01528181613349015281816134000152818161351b015281816136930152818161376a015281816138b7015281816139ef01528181613d8401528181613e3b01528181613f56015281816140ce015281816141a5015281816142f20152818161443e01528181614699015281816149f101528181615250015281816154360152818161557201528181615633015281816157090152818161589601528181615928015281816159fa015281816162d6015281816164d2015281816166ac0152818161694301528181616984015281816169c901528181616b6d01528181616d3101528181616f2d01528181616f4e01528181617088015281816170a90152818161782d0152818161786e015281816178b301528181617a5701528181617c4b0152617d99015260008181610feb0152818161203101528181612127015281816122320152818161237a015281816124180152818161253d01528181612714015281816127ff0152818161289b01528181612a2a0152818161502d015281816151230152818161522e015281816153760152818161541401528181615550015281816157d80152818161587401526193d30152620227f46000f3fe60806040523480156200001157600080fd5b5060043610620001fc5760003560e01c806366d9a9a0116200011d578063a42b613911620000b1578063b8c238fd116200007b578063b8c238fd1462000518578063ba414fa61462000522578063e20c9f71146200052c578063fecaa223146200053657620001fc565b8063a42b613914620004d6578063a7aa85e914620004e0578063b5508aa914620004f7578063b89e0233146200050157620001fc565b8063889be5b711620000f3578063889be5b7146200048c5780638e78d4e314620004b8578063916a17c614620004c257806393a5870c14620004cc57620001fc565b806366d9a9a014620004505780637626ddcc146200046957806385226c81146200047357620001fc565b8063314bf90811620001955780633f7286f4116200016b5780633f7286f4146200040c57806345bf2c09146200041657806349789ef914620004205780634f3e1504146200044657620001fc565b8063314bf90814620003ee5780633e5e3c2314620003f85780633f71aea7146200040257620001fc565b806316c1fcdd11620001d757806316c1fcdd14620003a85780631ed7831c14620003b25780632ade388014620003cb5780632cb279c614620003e457620001fc565b806301ffc9a7146200035657806306fb353014620003925780630a9254e4146200039e575b601c54602754620002bc916001600160a01b0390811691166200022967016345785d8a000060026200c008565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201526001600160801b0393909316929116906370a08231906024015b602060405180830381865afa15801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa91906200c036565b620002b691906200c050565b6200054d565b601d546027546200032b916001600160a01b039081169116620002e967016345785d8a000060026200c008565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201526001600160801b0393909316929116906370a082319060240162000266565b7fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c26000818152602090f35b6200037d620003673660046200c066565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b6200039c62000561565b005b6200039c62000f9d565b6200039c620012f0565b620003bc62001d88565b6040516200038991906200c092565b620003d562001dec565b6040516200038991906200c135565b6200039c62001f3a565b6200039c62002b02565b620003bc62003195565b6200039c620031f7565b620003bc62003bd0565b6200039c62003c32565b62000437620004313660046200c20b565b620044ee565b60405190815260200162000389565b6200039c62004543565b6200045a62004e4c565b6040516200038991906200c249565b6200039c62004f36565b6200047d62005bf6565b6040516200038991906200c300565b620004a36200049d3660046200c378565b62005cd0565b60405162ffffff909116815260200162000389565b6200039c62005d2b565b6200045a62006146565b6200039c62006230565b6200039c62006863565b6200039c620004f13660046200c3d5565b6200715b565b6200047d620075eb565b6200037d620005123660046200c48a565b620076c5565b6200039c62007748565b6200037d62007f69565b620003bc62008023565b6200039c620005473660046200c4aa565b62008085565b6200055c83838360006200838a565b505050565b602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa158015620005ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d291906200c551565b60408051600180825281830190925291925060009190602080830190803683370190505090506200060d670de0b6b3a7640000808462008585565b816000815181106200062357620006236200c587565b6020908102919091010152601c546200066f906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b601d54620006b0906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b1580156200072157600080fd5b505af115801562000736573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562000797573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007bd91906200c5ae565b50601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a0000602482015291169063a9059cbb906044016020604051808303816000875af11580156200081b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200084191906200c5ae565b5060275460405163383d15c560e01b81526001600160a01b039091169063383d15c59062000898907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af1158015620008b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008e291908101906200c6c9565b5050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200093c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096291906200c8e7565b60408051600180825281830190925291925060009190602080830190803683370190505090508362ffffff1681600081518110620009a457620009a46200c587565b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050905067016345785d8a00006001600160801b031681600081518110620009fb57620009fb6200c587565b60209081029190910101526027546040516364c9cfaf60e11b81526001600160a01b039091169063c9939f5e9062000a5e907f0000000000000000000000000000000000000000000000000000000000000000908190879087906004016200c9b5565b6000604051808303816000875af115801562000a7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000aa891908101906200ca6f565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000af757600080fd5b505af115801562000b0c573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562000b67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b8d91906200c8e7565b905062000d11602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000be7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c1191908101906200caa8565b8051906020012063ea9db9d360e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888860405160240162000c9b9594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724275726e486f6f6b733a3a3100000000815250620085c3565b602c54604080516330bed69960e21b8152905162000e88926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa15801562000d5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d8891908101906200caa8565b8051906020012063fdc2725760e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888860405160240162000e129594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724275726e486f6f6b733a3a3200000000815250620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa15801562000ed4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000efa91906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa15801562000f53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f7991906200c8e7565b905062000f87828762008629565b62000f93818462008629565b5050505050505050565b62000fa762008ba6565b601c54601d5462000fc5916001600160a01b0390811691166200a1d1565b602780546001600160a01b0319166001600160a01b0392909216918217905562001024907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a7640000806032806200715b565b60405162001032906200bf4d565b604051809103906000f0801580156200104f573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283169081179091556027546040516340c3fa8b60e11b81529216600483015290638187f51690602401600060405180830381600087803b158015620010ab57600080fd5b505af1158015620010c0573d6000803e3d6000fd5b5050602454604080516306bd6eb360e21b815290516001600160a01b039092169350632f2ff15d92508391631af5bacc916004808201926020929091908290030181865afa15801562001117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113d91906200c036565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401600060405180830381600087803b1580156200117d57600080fd5b505af115801562001192573d6000803e3d6000fd5b50506040805161016081018252602c546001600160a01b039081168252600160208301819052928201839052606082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820192909252602454601c54601d549295509083169350633a2f1a91929081169116600a62001223866200a1ea565b604080516000815260208101918290526001600160e01b031960e088901b16909152620012589493929190602481016200cb9d565b600060405180830381600087803b1580156200127357600080fd5b505af115801562001288573d6000803e3d6000fd5b50506027546040516363deb2c360e11b8152600160048201526001600160a01b03909116925063c7bd658691506024015b600060405180830381600087803b158015620012d457600080fd5b505af1158015620012e9573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091602080830190803683370190505090506200132a6706f05b59d3b20000806280000062008585565b816000815181106200134057620013406200c587565b6020908102919091010152602c546027546040516001600160a01b03928316926333ad78d192169063383d15c560e01b90620013a5907f000000000000000000000000000000000000000000000000000000000000000090879082906024016200c609565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620013ed92916004016200cbdb565b600060405180830381600087803b1580156200140857600080fd5b505af11580156200141d573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200147057600080fd5b505af115801562001485573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620014fa57600080fd5b505af11580156200150f573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062001569907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af115801562001589573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015b391908101906200c6c9565b5050602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b0390921692506333ad78d191620015f79190602481016200cbdb565b600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b5050602c546027546040516001600160a01b03928316945063c70e8bd4935091169063383d15c560e01b9062001686907f000000000000000000000000000000000000000000000000000000000000000090879082906024016200c609565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620016ce92916004016200cbdb565b600060405180830381600087803b158015620016e957600080fd5b505af1158015620016fe573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562001752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177891906200c036565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620017cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017f191906200c036565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482018190529394506200183e93919092169167016345785d8a00009083906370a082319060240162000266565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201819052620018899392909216919067016345785d8a00009083906370a082319060240162000266565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b158015620018fa57600080fd5b505af11580156200190f573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062001969907f000000000000000000000000000000000000000000000000000000000000000090879085906004016200c609565b6000604051808303816000875af115801562001989573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019b391908101906200c6c9565b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015262001aa293509116906370a0823190602401602060405180830381865afa15801562001a08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a2e91906200c036565b606462001a4567016345785d8a0000604b6200c008565b62001a5191906200cc15565b62001a66906001600160801b0316856200c050565b6040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a31000000000000000000008152506200a2b4565b601d546027546040516370a0823160e01b81526001600160a01b03918216600482015262001b909291909116906370a0823190602401602060405180830381865afa15801562001af6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b1c91906200c036565b606462001b3367016345785d8a0000604b6200c008565b62001b3f91906200cc15565b62001b54906001600160801b0316846200c050565b6040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a32000000000000000000008152506200a2b4565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262001c8c9216906370a0823190602401602060405180830381865afa15801562001bfe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c2491906200c036565b606462001c3b67016345785d8a000060196200c008565b62001c4791906200cc15565b6001600160801b03166040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a33000000000000000000008152506200a2b4565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200055c9216906370a0823190602401602060405180830381865afa15801562001cfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d2091906200c036565b606462001d3767016345785d8a000060196200c008565b62001d4391906200cc15565b6001600160801b03166040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a34000000000000000000008152506200a2b4565b6060601480548060200260200160405190810160405280929190818152602001828054801562001de257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001dc3575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001f3157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001f1957838290600052602060002001805462001e85906200cc3e565b80601f016020809104026020016040519081016040528092919081815260200182805462001eb3906200cc3e565b801562001f045780601f1062001ed85761010080835404028352916020019162001f04565b820191906000526020600020905b81548152906001019060200180831162001ee657829003601f168201915b50505050508152602001906001019062001e63565b50505050815250508152602001906001019062001e10565b50505050905090565b604080516001808252818301909252600091602080830190803683375050602754604080516336f997b760e21b815290519394506001600160a01b039091169263dbe65edc925060048083019260209291908290030181865afa15801562001fa6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fcc91906200c551565b62ffffff168160008151811062001fe75762001fe76200c587565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337505060275484519293506002926001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200206557620020656200c587565b60200260200101516040518363ffffffff1660e01b81526004016200209f9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620020bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020e391906200c036565b620020ef91906200cc7a565b816000815181106200210557620021056200c587565b602090810291909101015260405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200218157600080fd5b505af115801562002196573d6000803e3d6000fd5b5050602754602c546040516339612d9560e21b81526001600160a01b039182166004820152600160248201529116925063e584b6549150604401600060405180830381600087803b158015620021eb57600080fd5b505af115801562002200573d6000803e3d6000fd5b5050602c546027546040516001600160a01b0392831694506333ad78d193509116906305feb5ff60e21b9062002281907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620022c992916004016200cbdb565b600060405180830381600087803b158015620022e457600080fd5b505af1158015620022f9573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200234c57600080fd5b505af115801562002361573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620023d657600080fd5b505af1158015620023eb573d6000803e3d6000fd5b50506027546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915062002467907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b600060405180830381600087803b1580156200248257600080fd5b505af115801562002497573d6000803e3d6000fd5b5050602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b0390921693506333ad78d19250620024db91602481016200cbdb565b600060405180830381600087803b158015620024f657600080fd5b505af11580156200250b573d6000803e3d6000fd5b5050602c546027546040516001600160a01b03928316945063c70e8bd493509116906305feb5ff60e21b906200258c907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620025d492916004016200cbdb565b600060405180830381600087803b158015620025ef57600080fd5b505af115801562002604573d6000803e3d6000fd5b50506027548451620026f993506001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200265957620026596200c587565b60200260200101516040518363ffffffff1660e01b8152600401620026939291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620026b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026d791906200c036565b600060405180606001604052806023815260200162022717602391396200a2b4565b6027548251620027e8916001600160a01b03169062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200274857620027486200c587565b60200260200101516040518363ffffffff1660e01b8152600401620027829291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620027a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027c691906200c036565b60006040518060600160405280602381526020016202279c602391396200a2ec565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200285957600080fd5b505af11580156200286e573d6000803e3d6000fd5b50506027546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150620028ea907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b600060405180830381600087803b1580156200290557600080fd5b505af11580156200291a573d6000803e3d6000fd5b5050602754845162002a0f93506001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200296f576200296f6200c587565b60200260200101516040518363ffffffff1660e01b8152600401620029a99291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620029c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029ed91906200c036565b6000604051806060016040528060238152602001620226cb602391396200a2ec565b602754825162002afe916001600160a01b03169062fdd58e907f000000000000000000000000000000000000000000000000000000000000000090869060009062002a5e5762002a5e6200c587565b60200260200101516040518363ffffffff1660e01b815260040162002a989291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562002ab6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002adc91906200c036565b60006040518060600160405280602381526020016202267f602391396200a2b4565b5050565b601c546027546040516370a0823160e01b81526001600160a01b039182166004820181905262002b4d9392909216919067016345785d8a00009083906370a082319060240162000266565b602c5460275460408051600160248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663029e02cd60e51b17905291516333ad78d160e01b8152938216936333ad78d19362002be5931691906004016200cbdb565b600060405180830381600087803b15801562002c0057600080fd5b505af115801562002c15573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b15801562002c6857600080fd5b505af115801562002c7d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b15801562002cf257600080fd5b505af115801562002d07573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562002d7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002da591906200c036565b50602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b03909216916333ad78d19162002de691602481016200cbdb565b600060405180830381600087803b15801562002e0157600080fd5b505af115801562002e16573d6000803e3d6000fd5b5050602c5460275460408051600060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663029e02cd60e51b17905291516331c3a2f560e21b8152938216955063c70e8bd4945062002eb5939190921691906004016200cbdb565b600060405180830381600087803b15801562002ed057600080fd5b505af115801562002ee5573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262002fbd945090911691506370a0823190602401602060405180830381865afa15801562002f59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f7f91906200c036565b60006040518060400160405280601681526020017f746573745f537761705265656e7472616e63793a3a31000000000000000000008152506200a2b4565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200302e57600080fd5b505af115801562003043573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b039091166024820181905292506353c059a091506044016020604051808303816000875af11580156200309a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030c091906200c036565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620031939216906370a0823190602401602060405180830381865afa1580156200312f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200315591906200c036565b60006040518060400160405280601681526020017f746573745f537761705265656e7472616e63793a3a32000000000000000000008152506200a2ec565b565b6060601680548060200260200160405190810160405280929190818152602001828054801562001de2576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001dc3575050505050905090565b602754604051631cee6cdf60e31b815267016345785d8a000060048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562003254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327a91906200cc91565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206202265f83398151915290634c63e5629060240160006040518083038186803b158015620032d157600080fd5b505afa158015620032e6573d6000803e3d6000fd5b5050505062003336826001600160801b031660006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a318152506200a2b4565b601c5462003377906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa158015620033c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033e991906200c8e7565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f833981519152906306447d5690602401600060405180830381600087803b1580156200345d57600080fd5b505af115801562003472573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af1158015620034d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034f991906200c5ae565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200356e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200359491906200c036565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620035e357600080fd5b505af1158015620035f8573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562003653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367991906200c8e7565b601c546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529293506200375092909116906370a0823190602401602060405180830381865afa158015620036ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200371291906200c036565b60006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a328152506200a2b4565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200382a9216906370a0823190602401602060405180830381865afa158015620037be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037e491906200c036565b846001600160801b03166040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a338152506200a2b4565b602c546040805163571eed3760e01b8152905162003966926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801562003877573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620038a191908101906200caa8565b8051602091820120604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820181905260448201526001606482015267016345785d8a00006084808301919091528251808303909101815260a4909101825280840180516001600160e01b031663feee373560e01b1781529051902081518083019092528382527f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a3493820193909352909190620085c3565b602c54604080516330bed69960e21b8152905162003abd926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015620039b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620039dd91908101906200caa8565b80516020909101206353e8079b60e01b7f000000000000000000000000000000000000000000000000000000000000000080600162003a1c8960801b90565b6040516001600160a01b03948516602482015293909216604484015215156064830152608482015260a401604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a35815250620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa15801562003b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b2f91906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa15801562003b88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bae91906200c8e7565b905062003bbc828562008629565b62003bc8818462008629565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801562001de2576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001dc3575050505050905090565b602754604051631cee6cdf60e31b815267016345785d8a000060048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562003c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cb591906200cc91565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206202265f83398151915290634c63e5629060240160006040518083038186803b15801562003d0c57600080fd5b505afa15801562003d21573d6000803e3d6000fd5b5050505062003d71826001600160801b031660006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a318152506200a2b4565b601d5462003db2906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa15801562003dfe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e2491906200c8e7565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f833981519152906306447d5690602401600060405180830381600087803b15801562003e9857600080fd5b505af115801562003ead573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003f0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f3491906200c5ae565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562003fa9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fcf91906200c036565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200401e57600080fd5b505af115801562004033573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200408e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040b491906200c8e7565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529293506200418b92909116906370a0823190602401602060405180830381865afa15801562004127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200414d91906200c036565b60006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a328152506200a2b4565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620042659216906370a0823190602401602060405180830381865afa158015620041f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200421f91906200c036565b846001600160801b03166040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a338152506200a2b4565b602c546040805163571eed3760e01b81529051620043b1926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015620042b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620042dc91908101906200caa8565b8051602091820120604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820181905260448201526000606482015277016345785d8a0000000000000000000000000000000000006084808301919091528251808303909101815260a4909101825280840180516001600160e01b031663feee373560e01b1781529051902081518083019092528382527f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a3493820193909352909190620085c3565b602c54604080516330bed69960e21b8152905162003abd926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015620043fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200442891908101906200caa8565b8051602091820120604080516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482018190526044820152600060648201526001600160801b0388166084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166353e8079b60e01b1781529051902081518083019092528382527f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a3593820193909352909190620085c3565b6000808360ff1611801562004506575060008260ff16115b6200451d576200451782846200ccdb565b62004537565b60016200452b83856200ccdb565b6200453791906200ccf7565b60ff1690505b92915050565b602c546027546040805160008152602081019091526001600160a01b03928316926333ad78d192169063ea3446bf60e01b90620045a090309077016345785d8a00000000000000000000016345785d8a000090604481016200cd13565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620045e892916004016200cbdb565b600060405180830381600087803b1580156200460357600080fd5b505af115801562004618573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200466b57600080fd5b505af115801562004680573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620046f557600080fd5b505af11580156200470a573d6000803e3d6000fd5b50506027546040805160008152602081019182905263ea3446bf60e01b9091526001600160a01b03909116925063ea3446bf91506200476990309077016345785d8a00000000000000000000016345785d8a000090602481016200cd13565b600060405180830381600087803b1580156200478457600080fd5b505af115801562004799573d6000803e3d6000fd5b5050602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b0390921693506333ad78d19250620047dd91602481016200cbdb565b600060405180830381600087803b158015620047f857600080fd5b505af11580156200480d573d6000803e3d6000fd5b5050602c546027546040805160008152602081019091526001600160a01b03928316945063c70e8bd4935091169063ea3446bf60e01b906200486f90309077016345785d8a00000000000000000000016345785d8a000090604481016200cd13565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620048b792916004016200cbdb565b600060405180830381600087803b158015620048d257600080fd5b505af1158015620048e7573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156200493b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200496191906200c036565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620049b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049da91906200c036565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b15801562004a4e57600080fd5b505af115801562004a63573d6000803e3d6000fd5b50506027546040805160008152602081019182905263ea3446bf60e01b9091526001600160a01b03909116925063ea3446bf915062004ac290309077016345785d8a00000000000000000000016345785d8a000090602481016200cd13565b600060405180830381600087803b15801562004add57600080fd5b505af115801562004af2573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015262004bd49450911691506370a0823190602401602060405180830381865afa15801562004b48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b6e91906200c036565b62004b8367016345785d8a000060026200c008565b62004b98906001600160801b0316856200c050565b6040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3100000000008152506200a2b4565b601d546027546040516370a0823160e01b81526001600160a01b03918216600482015262004cb49291909116906370a0823190602401602060405180830381865afa15801562004c28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c4e91906200c036565b62004c6367016345785d8a000060026200c008565b62004c78906001600160801b0316846200c050565b6040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3200000000008152506200a2b4565b601c546040516370a0823160e01b815230600482015262004d80916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004d00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d2691906200c036565b62004d3b67016345785d8a000060026200c008565b6001600160801b03166040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3300000000008152506200a2b4565b601d546040516370a0823160e01b815230600482015262002afe916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004dcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004df291906200c036565b62004e0767016345785d8a000060026200c008565b6001600160801b03166040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3400000000008152506200a2b4565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001f315760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562004f1d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162004ede5790505b5050505050815250508152602001906001019062004e70565b604080516001808252818301909252600091602080830190803683375050602754604080516336f997b760e21b815290519394506001600160a01b039091169263dbe65edc925060048083019260209291908290030181865afa15801562004fa2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004fc891906200c551565b62ffffff168160008151811062004fe35762004fe36200c587565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337505060275484519293506002926001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200506157620050616200c587565b60200260200101516040518363ffffffff1660e01b81526004016200509b9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620050b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050df91906200c036565b620050eb91906200cc7a565b816000815181106200510157620051016200c587565b602090810291909101015260405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200517d57600080fd5b505af115801562005192573d6000803e3d6000fd5b5050602754602c546040516339612d9560e21b81526001600160a01b039182166004820152600160248201529116925063e584b6549150604401600060405180830381600087803b158015620051e757600080fd5b505af1158015620051fc573d6000803e3d6000fd5b5050602c546027546040516001600160a01b0392831694506333ad78d193509116906364c9cfaf60e11b906200527d907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620052c592916004016200cbdb565b600060405180830381600087803b158015620052e057600080fd5b505af1158015620052f5573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200534857600080fd5b505af11580156200535d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620053d257600080fd5b505af1158015620053e7573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062005463907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b6000604051808303816000875af115801562005483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620054ad91908101906200ca6f565b50602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b03909216916333ad78d191620054ee91602481016200cbdb565b600060405180830381600087803b1580156200550957600080fd5b505af11580156200551e573d6000803e3d6000fd5b5050602c546027546040516001600160a01b03928316945063c70e8bd493509116906364c9cfaf60e11b906200559f907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620055e792916004016200cbdb565b600060405180830381600087803b1580156200560257600080fd5b505af115801562005617573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620056ef945090911691506370a0823190602401602060405180830381865afa1580156200568b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056b191906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a31000000000000000000008152506200a2b4565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620057c19216906370a0823190602401602060405180830381865afa1580156200575d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200578391906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a32000000000000000000008152506200a2b4565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200583257600080fd5b505af115801562005847573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e9150620058c3907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b6000604051808303816000875af1158015620058e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200590d91908101906200ca6f565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620059e09216906370a0823190602401602060405180830381865afa1580156200597c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059a291906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a33000000000000000000008152506200a2ec565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262005ab29216906370a0823190602401602060405180830381865afa15801562005a4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a7491906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a34000000000000000000008152506200a2ec565b602754825160009182916001600160a01b0390911690630abe9688908690849062005ae15762005ae16200c587565b60200260200101516040518263ffffffff1660e01b815260040162005b11919062ffffff91909116815260200190565b6040805180830381865afa15801562005b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b5491906200cd3d565b6001600160801b031691506001600160801b0316915062005bad8260006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a35000000000000000000008152506200a2b4565b62005bf08160006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a36000000000000000000008152506200a2b4565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001f3157838290600052602060002001805462005c3c906200cc3e565b80601f016020809104026020016040519081016040528092919081815260200182805462005c6a906200cc3e565b801562005cbb5780601f1062005c8f5761010080835404028352916020019162005cbb565b820191906000526020600020905b81548152906001019060200180831162005c9d57829003601f168201915b50505050508152602001906001019062005c1a565b60008062005ce48462ffffff87166200c050565b905060008360ff161162005cf9578062005d15565b62005d0860ff8416826200cd75565b62005d159060016200c050565b905062005d22816200a324565b95945050505050565b6027546040805163781a891560e01b815290516000926001600160a01b03169163781a89159160048083019260209291908290030181865afa15801562005d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d9c91906200c036565b60408051610160810182526001600160a01b03838116808352600160a01b85161515602080850191909152600160a11b8616151584860152600160a21b861615156060850152600160a31b861615156080850152600160a41b8616151560a0850152600160a51b8616151560c0850152600160a61b8616151560e0850152600160a71b86161515610100850152600160a81b86161515610120850152600160a91b86161515610140850152602c548551808701909652601c86527f746573745f4765744c42486f6f6b73506172616d65746572733a3a310000000091860191909152949550919362005e91939116906200a34b565b62005ed681602001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a32000000008152506200a383565b62005f1b81604001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a33000000008152506200a383565b62005f6081606001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a34000000008152506200a383565b62005fa581608001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a35000000008152506200a383565b62005fea8160a001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a36000000008152506200a383565b6200602f8160c001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a37000000008152506200a383565b620060748160e001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a38000000008152506200a383565b620060ba8161010001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a39000000008152506200a383565b620061008161012001516040518060400160405280601d81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a31300000008152506200a383565b62002afe8161014001516040518060400160405280601d81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a31310000008152506200a383565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001f315760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200621757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620061d85790505b505050505081525050815260200190600101906200616a565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa1580156200627c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062a291906200c8e7565b9050600077016345785d8a00000000000000000000016345785d8a000060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200633357600080fd5b505af115801562006348573d6000803e3d6000fd5b50506027546040805160008152602081019182905263ea3446bf60e01b9091526001600160a01b03909116925063ea3446bf91506200638f9030908590602481016200cd13565b600060405180830381600087803b158015620063aa57600080fd5b505af1158015620063bf573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200641a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200644091906200c8e7565b90506200655c602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200649a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620064c491908101906200caa8565b8051602091820120604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248201523060448201526064808201889052825180830390910181526084909101825280840180516001600160e01b031663505d903360e01b17815290519020815160608101909252602180835292939092906202277b90830139620085c3565b6000670de0b6b3a764000067016345785d8a00006001600160801b0316602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620065cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065f391906200c036565b620065ff91906200cd8b565b6200660b91906200cc7a565b602c54604080516330bed69960e21b815290519293506001600160801b038416608085901b17926200674f926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156200666c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200669691908101906200caa8565b8051602091820120604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201523060448201526064810186905277016345785d8a00000000000000000000016345785d8a00006084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166360bed5f360e01b17815290519020815160608101909252602180835292939092906202275a90830139620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa1580156200679b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067c191906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200681a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200684091906200c8e7565b90506200684e828862008629565b6200685a818662008629565b50505050505050565b602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa158015620068ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620068d491906200c551565b60408051600180825281830190925291925060009190602080830190803683370190505090506200690f670de0b6b3a7640000808462008585565b816000815181106200692557620069256200c587565b6020908102919091010152601c5462006971906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b601d54620069b2906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b15801562006a2357600080fd5b505af115801562006a38573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562006a99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006abf91906200c5ae565b50601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a0000602482015291169063a9059cbb906044016020604051808303816000875af115801562006b1d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b4391906200c5ae565b5060275460405163383d15c560e01b81526001600160a01b039091169063383d15c59062006b9a907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af115801562006bba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006be491908101906200c6c9565b5050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562006c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c6491906200c8e7565b60408051600180825281830190925291925060009190602080830190803683370190505090508362ffffff168160008151811062006ca65762006ca66200c587565b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050905067016345785d8a00006001600160801b03168160008151811062006cfd5762006cfd6200c587565b60209081029190910101526027546040516305feb5ff60e21b81526001600160a01b03909116906317fad7fc9062006d80907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b600060405180830381600087803b15801562006d9b57600080fd5b505af115801562006db0573d6000803e3d6000fd5b505050506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562006e0257600080fd5b505af115801562006e17573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562006e72573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9891906200c8e7565b905062007000602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa15801562006ef2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006f1c91908101906200caa8565b805190602001206379c8ccf760e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888860405160240162006fa69594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505080519060200120604051806060016040528060298152602001620226ee60299139620085c3565b602c54604080516330bed69960e21b8152905162000e88926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156200704d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200707791908101906200caa8565b805190602001206367ddb27860e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008888604051602401620071019594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505080519060200120604051806060016040528060298152602001620226a260299139620085c3565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200719c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071c291906200cda5565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200722b91906200cda5565b90506200723a828b886200054d565b62007247818b876200054d565b6000620072558585620044ee565b905060008167ffffffffffffffff8111156200727557620072756200c571565b6040519080825280602002602001820160405280156200729f578160200160208202803683370190505b50905060005b828110156200739e576000620072bd8b838962005cd0565b905060008b62ffffff168262ffffff1610158015620072df575060008960ff16115b620072ec5760006200730d565b6200730d6200730760ff8b16670de0b6b3a76400006200cc7a565b6200a3e7565b905060008c62ffffff168362ffffff16111580156200732f575060008960ff16115b6200733c57600062007357565b620073576200730760ff8b16670de0b6b3a76400006200cc7a565b90506200736682828562008585565b8585815181106200737b576200737b6200c587565b6020026020010181815250505050508062007396906200cdc5565b9050620072a5565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b158015620073f057600080fd5b505af115801562007405573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562007459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200747f91906200c5ae565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af1158015620074d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620074f691906200c5ae565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200754557600080fd5b505af11580156200755a573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162007590939291906200c609565b6000604051808303816000875af1158015620075b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620075da91908101906200c6c9565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001f3157838290600052602060002001805462007631906200cc3e565b80601f01602080910402602001604051908101604052809291908181526020018280546200765f906200cc3e565b8015620076b05780601f106200768457610100808354040283529160200191620076b0565b820191906000526020600020905b8154815290600101906020018083116200769257829003601f168201915b5050505050815260200190600101906200760f565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562007715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200773b91906200cde1565b9998505050505050505050565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa15801562007794573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620077ba91906200c8e7565b6040805160018082528183019092529192506000919060208083019080368337019050509050620077f9670de0b6b3a764000080846080015162008585565b816000815181106200780f576200780f6200c587565b6020908102919091010152601c546200785b906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b601d546200789c906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b1580156200790d57600080fd5b505af115801562007922573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562007983573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620079a991906200c5ae565b50601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a0000602482015291169063a9059cbb906044016020604051808303816000875af115801562007a07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a2d91906200c5ae565b5060275460405163383d15c560e01b81526001600160a01b039091169063383d15c59062007a84907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af115801562007aa4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007ace91908101906200c6c9565b5050506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007b1f57600080fd5b505af115801562007b34573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562007b8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007bb591906200c8e7565b905062007d10602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa15801562007c0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007c3991908101906200caa8565b8051602090910120630d4abdb360e01b7f0000000000000000000000000000000000000000000000000000000000000000808677016345785d8a00000000000000000000016345785d8a000060405160240162007c9a94939291906200ce4a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724d696e74486f6f6b733a3a3100000000815250620085c3565b602c54604080516330bed69960e21b8152905162007e5e926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa15801562007d5d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007d8791908101906200caa8565b8051602090910120633d28d26360e11b7f0000000000000000000000000000000000000000000000000000000000000000808677016345785d8a00000000000000000000016345785d8a000060405160240162007de894939291906200ce4a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724d696e74486f6f6b733a3a3200000000815250620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa15801562007eaa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ed091906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa15801562007f29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f4f91906200c8e7565b905062007f5d828662008629565b620012e9818462008629565b60075460009060ff161562007f82575060075460ff1690565b604051630667f9d760e41b81526000805160206202265f833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562007ff6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200801c91906200c036565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562001de2576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001dc3575050505050905090565b670de0b6b3a7640000831115620080e35760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620080f18383620044ee565b905060008167ffffffffffffffff8111156200811157620081116200c571565b6040519080825280602002602001820160405280156200813b578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200815c576200815c6200c571565b60405190808252806020026020018201604052801562008186578160200160208202803683370190505b50905060005b8381101562008294576000620081a489838862005cd0565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620081fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200822091906200c036565b90508162ffffff168584815181106200823d576200823d6200c587565b60209081029190910101526200825d818a670de0b6b3a76400006200a413565b8484815181106200827257620082726200c587565b6020026020010181815250505050806200828c906200cdc5565b90506200818c565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b158015620082e657600080fd5b505af1158015620082fb573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062008333908d908d90879087906004016200c9b5565b6000604051808303816000875af115801562008353573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200837d91908101906200ca6f565b5050505050505050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620083e0916200ce89565b600060405180830381855afa9150503d80600081146200841d576040519150601f19603f3d011682016040523d82523d6000602084013e62008422565b606091505b509150506000818060200190518101906200843e91906200c036565b9050620084788462008471876200846a6370a0823160e01b62008463600c8d6200a441565b906200a467565b906200a485565b906200a4ae565b821562003bc85760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620084c391906200ce89565b600060405180830381855afa9150503d806000811462008500576040519150601f19603f3d011682016040523d82523d6000602084013e62008505565b606091505b509150506000818060200190518101906200852191906200c036565b9050828610156200854c576200853886846200cd75565b6200854490826200cd75565b905062008567565b6200855883876200cd75565b6200856490826200c050565b90505b62000f9381620084716318160ddd60e01b62008463600c8d6200a441565b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b604051630c1fa1ed60e41b81526000805160206202265f8339815191529063c1fa1ed090620085fb908690869086906004016200cea7565b60006040518083038186803b1580156200861457600080fd5b505afa1580156200685a573d6000803e3d6000fd5b6200868582600001516001600160801b031682600001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a31000000000000000000000000000000008152506200a2b4565b620086e182602001516001600160801b031682602001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a32000000000000000000000000000000008152506200a2b4565b6200873d82604001516001600160801b031682604001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a33000000000000000000000000000000008152506200a2b4565b6200879982606001516001600160801b031682606001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a34000000000000000000000000000000008152506200a2b4565b620087ed826080015162ffffff16826080015162ffffff166040518060400160405280601081526020017f5f7665726966795374617465733a3a35000000000000000000000000000000008152506200a2b4565b620088498260a001516001600160801b03168260a001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a36000000000000000000000000000000008152506200a2b4565b620088a58260c001516001600160801b03168260c001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a37000000000000000000000000000000008152506200a2b4565b60e080830151908201518151815160408051808201909152601081527f5f7665726966795374617465733a3a38000000000000000000000000000000006020820152620088fc9262ffffff9081169216906200a2b4565b62008950826020015162ffffff16826020015162ffffff166040518060400160405280601081526020017f5f7665726966795374617465733a3a39000000000000000000000000000000008152506200a2b4565b620089a4826040015162ffffff16826040015162ffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31300000000000000000000000000000008152506200a2b4565b620089fc826060015164ffffffffff16826060015164ffffffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31310000000000000000000000000000008152506200a2b4565b61010080850151908401518151815160408051808201909152601181527f5f7665726966795374617465733a3a3132000000000000000000000000000000602082015262008a529260ff9081169216906200a2b4565b62008aa4826020015161ffff16826020015161ffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31330000000000000000000000000000008152506200a2b4565b62008af6826040015161ffff16826040015161ffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31340000000000000000000000000000008152506200a2b4565b62008b4e826060015164ffffffffff16826060015164ffffffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31350000000000000000000000000000008152506200a2b4565b62003bc8826080015164ffffffffff16826080015164ffffffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31360000000000000000000000000000008152506200a2b4565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362008ca357601c546040516000805160206202265f8339815191529163b4d6c782916001600160a01b039091169062008c0c906200bf5b565b604051809103906000f08015801562008c29573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162008c6e9291906200cbdb565b600060405180830381600087803b15801562008c8957600080fd5b505af115801562008c9e573d6000803e3d6000fd5b505050505b600660405162008cb3906200bf69565b60ff9091168152602001604051809103906000f08015801562008cda573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062008d0c906200bf69565b60ff9091168152602001604051809103906000f08015801562008d33573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062008d65906200bf69565b60ff9091168152602001604051809103906000f08015801562008d8c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062008dbe906200bf69565b60ff9091168152602001604051809103906000f08015801562008de5573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062008e17906200bf69565b60ff9091168152602001604051809103906000f08015801562008e3e573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062008e70906200bf69565b60ff9091168152602001604051809103906000f08015801562008e97573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162008ec6906200bf77565b604051809103906000f08015801562008ee3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206202265f8339815191529063c657c71890608401600060405180830381600087803b15801562008f8457600080fd5b505af115801562008f99573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200901157600080fd5b505af115801562009026573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200909e57600080fd5b505af1158015620090b3573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200912b57600080fd5b505af115801562009140573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620091b857600080fd5b505af1158015620091cd573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200924557600080fd5b505af11580156200925a573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620092cc57600080fd5b505af1158015620092e1573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200936d57600080fd5b505af115801562009382573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062009409906200bf85565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562009444573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162009472906200bf93565b6001600160a01b039091168152602001604051809103906000f0801580156200949f573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b158015620094fe57600080fd5b505af115801562009513573d6000803e3d6000fd5b50505050620095216200a4ba565b6200952d600a6200a85d565b602454602b54601c546040516001600160a01b0393841693928316929091169062009558906200bfa1565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562009595573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620095d0906200bfaf565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200960d573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206202265f8339815191529063c657c71890608401600060405180830381600087803b158015620096ae57600080fd5b505af1158015620096c3573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200974f57600080fd5b505af115801562009764573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620097f357600080fd5b505af115801562009808573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200989457600080fd5b505af1158015620098a9573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200993557600080fd5b505af11580156200994a573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620099d657600080fd5b505af1158015620099eb573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562009a46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a6c91906200c5ae565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009ac4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009aea91906200c5ae565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009b42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009b6891906200c5ae565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009bc0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009be691906200c5ae565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009c6491906200c5ae565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009cbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009ce291906200c5ae565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009d3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009d6091906200c5ae565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009db8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009dde91906200c5ae565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009e36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e5c91906200c5ae565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009eb4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009eda91906200c5ae565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009f32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009f5891906200c5ae565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009fb0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009fd691906200c5ae565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a02e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a05491906200c5ae565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a0ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a0d291906200c5ae565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a12a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a15091906200c5ae565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a1a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a1ce91906200c5ae565b50565b60006200a1e38383628000006200a8d3565b9392505050565b805160208201516001600160a01b0390911690156200a20a57600160a01b175b8160400151156200a21c57600160a11b175b8160600151156200a22e57600160a21b175b8160800151156200a24057600160a31b175b8160a00151156200a25257600160a41b175b8160c00151156200a26457600160a51b175b8160e00151156200a27657600160a61b175b816101000151156200a28957600160a71b175b816101200151156200a29c57600160a81b175b816101400151156200a2af57600160a91b175b919050565b6040516388b44c8560e01b81526000805160206202265f833981519152906388b44c8590620085fb908690869086906004016200cea7565b604051636cd1e26960e11b81526000805160206202265f8339815191529063d9a3c4d290620085fb908690869086906004016200cea7565b8062ffffff811681146200a2af57604051639b63641560e01b815260040160405180910390fd5b604051632f2769d160e01b81526000805160206202265f83398151915290632f2769d190620085fb908690869086906004016200cec8565b60405163a34edc0360e01b81526000805160206202265f8339815191529063a34edc03906200a3b990859085906004016200cef6565b60006040518083038186803b1580156200a3d257600080fd5b505afa15801562003bc8573d6000803e3d6000fd5b8067ffffffffffffffff811681146200a2af5760405163cc21feb960e01b815260040160405180910390fd5b60008060006200a42486866200a8e4565b915091506200a43786868685856200a903565b9695505050505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200a1e3565b60038201805463ffffffff191660e083901c1790556000826200a1e3565b6002820180546001810182556000918252602082206001600160a01b038416910155826200a1e3565b62002afe82826200a9b5565b601c546001600160a01b0316156200a52f5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a51557600080fd5b505af11580156200a52a573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200a5a45760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a58a57600080fd5b505af11580156200a59f573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200a6195760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a5ff57600080fd5b505af11580156200a614573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200a68e5760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a67457600080fd5b505af11580156200a689573d6000803e3d6000fd5b505050505b6022546001600160a01b0316156200a7035760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a6e957600080fd5b505af11580156200a6fe573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200a7785760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a75e57600080fd5b505af11580156200a773573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200a7ed5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a7d357600080fd5b505af11580156200a7e8573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620031935760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a84857600080fd5b505af115801562005bf0573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401620012b9565b6000620085bb848484600a6200adc2565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200a929578383816200a920576200a9206200cbff565b04905062005d22565b8382106200a94a576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200aa2857602002820191906000526020600020905b8154815260200190600101908083116200aa13575b505050505090506000836200aa3d836200ae58565b6040516020016200aa509291906200cf13565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200aaa49186918891016200cf46565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200aadf576200aadd876200af0c565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200ab209187918991016200cf46565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200ab6791906200ce89565b600060405180830381855afa9150503d80600081146200aba4576040519150601f19603f3d011682016040523d82523d6000602084013e6200aba9565b606091505b5091506200abc69050816200abc08860206200cd8b565b6200af19565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206202265f8339815191529063667f9d7090604401602060405180830381865afa1580156200ac28573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ac4e91906200c036565b90508082146200ad055760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620080da565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206202265f833981519152906370ca10bb90606401600060405180830381600087803b1580156200ad6457600080fd5b505af11580156200ad79573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200adae60028b0160006200bfbd565b896004016000905550505050505050505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af11580156200ae32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d2291906200cda5565b60606000825160206200ae6c91906200cd8b565b67ffffffffffffffff8111156200ae87576200ae876200c571565b6040519080825280601f01601f1916602001820160405280156200aeb2576020820181803683370190505b50905060005b83518110156200af055760008482815181106200aed9576200aed96200c587565b6020026020010151905080826020026020018401525080806200aefc906200cdc5565b9150506200aeb8565b5092915050565b60006200453d826200afbb565b600080600060208551116200af305784516200af33565b60205b905060005b818110156200afb1576200af4e8160086200cd8b565b866200af5b83886200c050565b815181106200af6e576200af6e6200c587565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200afa8816200cdc5565b9150506200af38565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200b02d57602002820191906000526020600020905b8154815260200190600101908083116200b018575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200b079925085918791016200cf46565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200b118576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200b0e89185918791016200cf46565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200b126836200be08565b6040516020016200b1399291906200cf13565b60405160208183030381529060405290506000805160206202273a83398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b19857600080fd5b505af11580156200b1ad573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200b1ce91906200ce89565b600060405180830381855afa9150503d80600081146200b20b576040519150601f19603f3d011682016040523d82523d6000602084013e6200b210565b606091505b5091506200b22d9050816200b2278760206200cd8b565b6200beb5565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206202265f833981519152906365bc9481906024016000604051808303816000875af11580156200b28a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200b2b491908101906200cf82565b50905080516001036200b6475760006000805160206202273a83398151915260001c6001600160a01b031663667f9d7089846000815181106200b2fb576200b2fb6200c587565b60200260200101516040518363ffffffff1660e01b81526004016200b3359291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200b353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b37991906200c036565b9050806200b3e4577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200b3b9576200b3b96200c587565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200b4995760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620080da565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200b4d19291906200cf46565b60405160208183030381529060405280519060200120856000815181106200b4fd576200b4fd6200c587565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200b557576200b5576200c587565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200b5a2918a918c91016200cf46565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200b60c918a918c91016200cf46565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200bc7d565b6001815111156200bc0c5760005b81518110156200bc055760006000805160206202273a83398151915260001c6001600160a01b031663667f9d708a8585815181106200b698576200b6986200c587565b60200260200101516040518363ffffffff1660e01b81526004016200b6d29291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200b6f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b71691906200c036565b9050806200b780577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200b755576200b7556200c587565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200b78f57506200bbf0565b82518119906000805160206202265f833981519152906370ca10bb908c908790879081106200b7c2576200b7c26200c587565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200b81b57600080fd5b505af11580156200b830573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200b85291906200ce89565b600060405180830381855afa9150503d80600081146200b88f576040519150601f19603f3d011682016040523d82523d6000602084013e6200b894565b606091505b5090925090506200b8ac816200b2278c60206200cd8b565b9650508080156200b8bc57508186145b156200bb43577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200b8fa9291906200cf46565b604051602081830303815290604052805190602001208888815181106200b925576200b9256200c587565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200b97e576200b97e6200c587565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200b9c9918d918f91016200cf46565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200ba569291906200cf46565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206202273a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200bac8576200bac86200c587565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200bb2157600080fd5b505af11580156200bb36573d6000803e3d6000fd5b505050505050506200bc05565b6000805160206202273a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200bb7a576200bb7a6200c587565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200bbd357600080fd5b505af11580156200bbe8573d6000803e3d6000fd5b505050505050505b806200bbfc816200cdc5565b9150506200b655565b506200bc7d565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620080da565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200bcc19188918a91016200cf46565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200bd5e5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620080da565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200bd8f60028a0160006200bfbd565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200bdd59188918a91016200cf46565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200be1c91906200cd8b565b67ffffffffffffffff8111156200be37576200be376200c571565b6040519080825280601f01601f1916602001820160405280156200be62576020820181803683370190505b50905060005b83518110156200af055760008482815181106200be89576200be896200c587565b6020026020010151905080826020026020018401525080806200beac906200cdc5565b9150506200be68565b600080600060208551116200becc5784516200becf565b60205b905060005b818110156200afb1576200beea8160086200cd8b565b866200bef783886200c050565b815181106200bf0a576200bf0a6200c587565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200bf44816200cdc5565b9150506200bed4565b6127cc806200cfee83390190565b610b08806200f7ba83390190565b610bfd80620102c283390190565b610c188062010ebf83390190565b6131998062011ad783390190565b61615c8062014c7083390190565b614c80806201adcc83390190565b612c13806201fa4c83390190565b50805460008255906000526020600020908101906200a1ce91905b808211156200bfee57600081556001016200bfd8565b5090565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038181168382160280821691908281146200c02e576200c02e6200bff2565b505092915050565b6000602082840312156200c04957600080fd5b5051919050565b808201808211156200453d576200453d6200bff2565b6000602082840312156200c07957600080fd5b81356001600160e01b0319811681146200a1e357600080fd5b6020808252825182820181905260009190848201906040850190845b818110156200c0d55783516001600160a01b0316835292840192918401916001016200c0ae565b50909695505050505050565b60005b838110156200c0fe5781810151838201526020016200c0e4565b50506000910152565b600081518084526200c1218160208601602086016200c0e1565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200c1eb57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200c1d457605f198985030183526200c1c18486516200c107565b948e01949350918d01916001016200c1a2565b505050978a0197945050918801916001016200c15c565b50919a9950505050505050505050565b60ff811681146200a1ce57600080fd5b600080604083850312156200c21f57600080fd5b82356200c22c816200c1fb565b915060208301356200c23e816200c1fb565b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200c2f157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200c2db5783516001600160e01b0319168252928b019260019290920191908b01906200c2af565b50978a019795505050918701916001016200c271565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200c35957603f198886030184526200c3468583516200c107565b945092850192908501906001016200c327565b5092979650505050505050565b62ffffff811681146200a1ce57600080fd5b6000806000606084860312156200c38e57600080fd5b83356200c39b816200c366565b92506020840135915060408401356200c3b4816200c1fb565b809150509250925092565b6001600160a01b03811681146200a1ce57600080fd5b600080600080600080600080610100898b0312156200c3f357600080fd5b88356200c400816200c3bf565b975060208901356200c412816200c3bf565b965060408901356200c424816200c3bf565b955060608901356200c436816200c366565b94506080890135935060a0890135925060c08901356200c456816200c1fb565b915060e08901356200c468816200c1fb565b809150509295985092959890939650565b61ffff811681146200a1ce57600080fd5b6000602082840312156200c49d57600080fd5b81356200a1e3816200c479565b600080600080600080600060e0888a0312156200c4c657600080fd5b87356200c4d3816200c3bf565b965060208801356200c4e5816200c3bf565b955060408801356200c4f7816200c3bf565b945060608801356200c509816200c366565b93506080880135925060a08801356200c522816200c1fb565b915060c08801356200c534816200c1fb565b8091505092959891949750929550565b80516200a2af816200c366565b6000602082840312156200c56457600080fd5b81516200a1e3816200c366565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805180151581146200a2af57600080fd5b6000602082840312156200c5c157600080fd5b6200a1e3826200c59d565b600081518084526020808501945080840160005b838110156200c5fe578151875295820195908201906001016200c5e0565b509495945050505050565b60006001600160a01b038086168352606060208401526200c62e60608401866200c5cc565b9150808416604084015250949350505050565b604051610120810167ffffffffffffffff811182821017156200c668576200c6686200c571565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200c69a576200c69a6200c571565b604052919050565b600067ffffffffffffffff8211156200c6bf576200c6bf6200c571565b5060051b60200190565b6000806000606084860312156200c6df57600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200c70657600080fd5b8501601f810187136200c71857600080fd5b80516200c72f6200c729826200c6a2565b6200c66e565b81815260059190911b820183019083810190898311156200c74f57600080fd5b928401925b828410156200c76f578351825292840192908401906200c754565b80955050505050509250925092565b80516001600160801b03811681146200a2af57600080fd5b805164ffffffffff811681146200a2af57600080fd5b6000608082840312156200c7bf57600080fd5b6040516080810181811067ffffffffffffffff821117156200c7e5576200c7e56200c571565b806040525080915082516200c7fa816200c366565b815260208301516200c80c816200c366565b602082015260408301516200c821816200c366565b60408201526200c834606084016200c796565b60608201525092915050565b600060a082840312156200c85357600080fd5b60405160a0810181811067ffffffffffffffff821117156200c879576200c8796200c571565b806040525080915082516200c88e816200c1fb565b815260208301516200c8a0816200c479565b602082015260408301516200c8b5816200c479565b60408201526200c8c8606084016200c796565b60608201526200c8db608084016200c796565b60808201525092915050565b600061020082840312156200c8fb57600080fd5b6200c9056200c641565b6200c910836200c77e565b81526200c920602084016200c77e565b60208201526200c933604084016200c77e565b60408201526200c946606084016200c77e565b60608201526200c959608084016200c544565b60808201526200c96c60a084016200c77e565b60a08201526200c97f60c084016200c77e565b60c08201526200c9938460e085016200c7ac565b60e08201526200c9a88461016085016200c840565b6101008201529392505050565b60006001600160a01b038087168352808616602084015250608060408301526200c9e360808301856200c5cc565b82810360608401526200c9f781856200c5cc565b979650505050505050565b600082601f8301126200ca1457600080fd5b815160206200ca276200c729836200c6a2565b82815260059290921b840181019181810190868411156200ca4757600080fd5b8286015b848110156200ca6457805183529183019183016200ca4b565b509695505050505050565b6000602082840312156200ca8257600080fd5b815167ffffffffffffffff8111156200ca9a57600080fd5b620085bb848285016200ca02565b6000602082840312156200cabb57600080fd5b815167ffffffffffffffff808211156200cad457600080fd5b818401915084601f8301126200cae957600080fd5b8151818111156200cafe576200cafe6200c571565b6200cb13601f8201601f19166020016200c66e565b91508082528560208285010111156200cb2b57600080fd5b6200cb3e8160208401602086016200c0e1565b50949350505050565b60006001600160a01b038088168352808716602084015280861660408401525060a060608301526200cb7d60a08301856200c5cc565b82810360808401526200cb9181856200c5cc565b98975050505050505050565b60006001600160a01b03808816835280871660208401525061ffff8516604083015283606083015260a060808301526200c9f760a08301846200c107565b6001600160a01b0383168152604060208201526000620085bb60408301846200c107565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b03808416806200cc32576200cc326200cbff565b92169190910492915050565b600181811c908216806200cc5357607f821691505b6020821081036200cc7457634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200cc8c576200cc8c6200cbff565b500490565b6000806000606084860312156200cca757600080fd5b6200ccb2846200c77e565b92506200ccc2602085016200c77e565b91506200ccd2604085016200c77e565b90509250925092565b60ff81811683821601908111156200453d576200453d6200bff2565b60ff82811682821603908111156200453d576200453d6200bff2565b6001600160a01b038416815282602082015260606040820152600062005d2260608301846200c107565b600080604083850312156200cd5157600080fd5b6200cd5c836200c77e565b91506200cd6c602084016200c77e565b90509250929050565b818103818111156200453d576200453d6200bff2565b80820281158282048414176200453d576200453d6200bff2565b6000602082840312156200cdb857600080fd5b81516200a1e3816200c3bf565b6000600182016200cdda576200cdda6200bff2565b5060010190565b600080600080600080600080610100898b0312156200cdff57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015191506200ce3b60e08a016200c59d565b90509295985092959890939650565b60006001600160a01b038087168352808616602084015250608060408301526200ce7860808301856200c5cc565b905082606083015295945050505050565b600082516200ce9d8184602087016200c0e1565b9190910192915050565b83815282602082015260606040820152600062005d2260608301846200c107565b60006001600160a01b0380861683528085166020840152506060604083015262005d2260608301846200c107565b8215158152604060208201526000620085bb60408301846200c107565b6001600160e01b03198316815281516000906200cf388160048501602087016200c0e1565b919091016004019392505050565b825160009082906020808701845b838110156200cf72578151855293820193908201906001016200cf54565b5050948252509092019392505050565b600080604083850312156200cf9657600080fd5b825167ffffffffffffffff808211156200cfaf57600080fd5b6200cfbd868387016200ca02565b935060208501519150808211156200cfd457600080fd5b506200cfe3858286016200ca02565b915050925092905056fe608060405234801561001057600080fd5b506127ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806378b253c6116100f9578063c70e8bd411610097578063ea9db9d311610071578063ea9db9d31461052e578063f08e95c614610541578063fdc27257146106d0578063feee3735146106e357600080fd5b8063c70e8bd41461050b578063d826f88f1461051e578063df0ccc481461052657600080fd5b80638187f516116100d35780638187f516146104b8578063a8aa1b31146104e8578063c153f4cd146104fb578063c2fb5a641461050357600080fd5b806378b253c61461030357806379c8ccf7146104925780637a51a4c6146104a557600080fd5b80634e430b5a11610166578063571eed3711610140578063571eed37146102c05780635f9c01b1146102d557806360bed5f3146102dd57806367ddb278146102f057600080fd5b80634e430b5a14610287578063505d90331461029a57806353e8079b146102ad57600080fd5b80631865c57d116101975780631865c57d1461024a5780632aac3e121461025f57806333ad78d11461027257600080fd5b806309fa1f90146101be5780630d4abdb3146101db5780630f146a3e1461021f575b600080fd5b6101c66106f6565b60405190151581526020015b60405180910390f35b6101ee6101e936600461202a565b610705565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101d2565b600f54610232906001600160a01b031681565b6040516001600160a01b0390911681526020016101d2565b61025261072e565b6040516101d29190612093565b601154610232906001600160a01b031681565b610285610280366004612221565b610b04565b005b6101ee610295366004612274565b610b32565b6101ee6102a83660046122a7565b610b7d565b6101ee6102bb3660046122e3565b610ba2565b6102c8610bc9565b6040516101d29190612359565b610232610c57565b6101ee6102eb36600461238c565b610c6b565b6101ee6102fe3660046123ce565b610c92565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526003546001600160801b038082168952600160801b918290048116898801526004548082168a8d01529190910481168886015260055462ffffff8082168a87015263010000009182900483168a8601526006549092169289019290925289518085018b526007548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff90811682870152968801528851918201895260085460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6104a03660046123ce565b610cbf565b6101ee6104b336600461202a565b610cec565b6102856104c6366004612470565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600254610232906001600160a01b031681565b6102c8610d15565b6102c8610d22565b610285610519366004612221565b610d2f565b610285610d57565b6102c8610df8565b6101ee61053c3660046123ce565b610e05565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526009546001600160801b038082168952600160801b91829004811689880152600a548082168a8d015291909104811688860152600b5462ffffff8082168a87015263010000009182900483168a860152600c549092169289019290925289518085018b52600d548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff908116828701529688015288519182018952600e5460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6106de3660046123ce565b610e32565b6101ee6106f13660046122e3565b610e5f565b6000610700610e86565b905090565b600061070f610f13565b61071c8686868686610f47565b50630d4abdb360e01b95945050505050565b6040805161012081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c086018590528651808301885285815280850186905280880186905280840186905260e08701528651908101875284815292830184905294820183905281018290529283015261010081019190915260006107c86002546001600160a01b031690565b9050806001600160a01b0316630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b91906124a2565b6001600160801b039081166020850152168252604080516306c6fe7560e51b815281516001600160a01b0384169263d8dfcea092600480820193918290030181865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a391906124a2565b8360400184606001826001600160801b03166001600160801b0316815250826001600160801b03166001600160801b031681525050506000816001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d91906124e8565b62ffffff1660808401819052604051630157d2d160e31b8152600481018290529091506001600160a01b03831690630abe9688906024016040805180830381865afa158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b491906124a2565b6001600160801b0390811660c08601521660a084015260e083015160408051638d7024e560e01b815290516001600160a01b03851691638d7024e59160048083019260809291908290030181865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a389190612518565b64ffffffffff16606085015262ffffff908116604080860191909152918116602085015291909116825261010085015181516315460a2560e21b8152915190916001600160a01b0386169163551828949160048082019260a0929091908290030181865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad2919061257e565b64ffffffffff908116608087015216606085015261ffff908116604085015216602083015260ff169052509192915050565b600f80546001600160a01b0319166001600160a01b0385161790556010610b2c828483612681565b50505050565b6000610b3c610f13565b610b44610e86565b610b6157604051632def67a360e21b815260040160405180910390fd5b610b6c8484846110fd565b5063272185ad60e11b5b9392505050565b6000610b87610f13565b610b92848484611297565b5063505d903360e01b9392505050565b6000610bac610f13565b610bb88585858561144e565b506353e8079b60e01b949350505050565b60008054610bd690612601565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0290612601565b8015610c4f5780601f10610c2457610100808354040283529160200191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3257829003601f168201915b505050505081565b60006107006002546001600160a01b031690565b6000610c75610f13565b610c818585858561144e565b506360bed5f360e01b949350505050565b6000610c9c610f13565b610cab888888888888886115fc565b50630cfbb64f60e31b979650505050505050565b6000610cc9610f13565b610cd8888888888888886117b6565b506379c8ccf760e01b979650505050505050565b6000610cf6610f13565b610d038686868686611967565b50633d28d26360e11b95945050505050565b60128054610bd690612601565b60018054610bd690612601565b601180546001600160a01b0319166001600160a01b0385161790556012610b2c828483612681565b610d5f611b16565b600060038190556004819055600580546001600160981b0319908116909155600680546001600160801b0319908116909155600780546dffffffffffffffffffffffffffff19908116909155600880546effffffffffffffffffffffffffffff199081169091556009859055600a94909455600b8054909316909255600c80549091169055600d80549091169055600e80549091169055565b60108054610bd690612601565b6000610e0f610f13565b610e1e888888888888886117b6565b5063ea9db9d360e01b979650505050505050565b6000610e3c610f13565b610e4b888888888888886115fc565b5063fdc2725760e01b979650505050505050565b6000610e69610f13565b610e7585858585611b2d565b5063feee373560e01b949350505050565b600080610f02610e9e6002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612741565b90565b6001600160a01b0316301492915050565b6002546001600160a01b03163314610f4557604051634a27038360e01b81523360048201526024015b60405180910390fd5b565b6001600160a01b03851630146110f657610f648585858585611cdb565b610f6c61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611cf0565b5050505050565b611108838383611dc1565b61111061072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055505050565b306001600160a01b038416036112ac57505050565b6112b7838383611dc1565b6112bf61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055611449611cf0565b505050565b6001600160a01b0384163014610b2c5761146a84848484611dce565b61147261072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611ddc565b6001600160a01b03871630146117ad5761161b87878787878787611e2a565b61162361072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611ddc565b50505050505050565b6001600160a01b03871630146117ad576117d587878787878787611e42565b6117dd61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611cf0565b6001600160a01b03851630146110f6576119848585858585611e4f565b61198c61072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611ddc565b611b21600080611f74565b610f4560016000611f74565b6001600160a01b0384163014610b2c57611b4984848484611e5d565b611b5161072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611cf0565b6000611ce8368280612681565b505050505050565b600f546001600160a01b0316611d0257565b600f5460108054611da4926001600160a01b03169190611d2190612601565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4d90612601565b8015611d9a5780601f10611d6f57610100808354040283529160200191611d9a565b820191906000526020600020905b815481529060010190602001808311611d7d57829003601f168201915b5050505050611e6a565b50600f80546001600160a01b0319169055610f4560106000611f74565b6000610b2c368280612681565b60016110f636600083612681565b6011546001600160a01b0316611dee57565b60115460128054611e0d926001600160a01b03169190611d2190612601565b50601180546001600160a01b0319169055610f4560126000611f74565b6001611e3836600083612681565b5050505050505050565b6000611e38368280612681565b6001611ce836600083612681565b60006110f6368280612681565b6060610b768383600084600080856001600160a01b03168486604051611e90919061275a565b60006040518083038185875af1925050503d8060008114611ecd576040519150601f19603f3d011682016040523d82523d6000602084013e611ed2565b606091505b5091509150611ee2868383611eec565b9695505050505050565b606082611f0157611efc82611f48565b610b76565b8151158015611f1857506001600160a01b0384163b155b15611f4157604051639996b31560e01b81526001600160a01b0385166004820152602401610f3c565b5080610b76565b805115611f585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b508054611f8090612601565b6000825580601f10611f90575050565b601f016020900490600052602060002090810190611f7191905b80821115611fbe5760008155600101611faa565b5090565b80356001600160a01b0381168114611fd957600080fd5b919050565b60008083601f840112611ff057600080fd5b50813567ffffffffffffffff81111561200857600080fd5b6020830191508360208260051b850101111561202357600080fd5b9250929050565b60008060008060006080868803121561204257600080fd5b61204b86611fc2565b945061205960208701611fc2565b9350604086013567ffffffffffffffff81111561207557600080fd5b61208188828901611fde565b96999598509660600135949350505050565b81516001600160801b031681526020808301516102008301916120c0908401826001600160801b03169052565b5060408301516120db60408401826001600160801b03169052565b5060608301516120f660608401826001600160801b03169052565b50608083015161210d608084018262ffffff169052565b5060a083015161212860a08401826001600160801b03169052565b5060c083015161214360c08401826001600160801b03169052565b5060e083015161218960e084018262ffffff8082511683528060208301511660208401528060408301511660408401525064ffffffffff60608201511660608301525050565b50610100830151805160ff16610160840152602081015161ffff9081166101808501526040820151166101a0840152606081015164ffffffffff9081166101c08501526080820151166101e08401525092915050565b60008083601f8401126121f157600080fd5b50813567ffffffffffffffff81111561220957600080fd5b60208301915083602082850101111561202357600080fd5b60008060006040848603121561223657600080fd5b61223f84611fc2565b9250602084013567ffffffffffffffff81111561225b57600080fd5b612267868287016121df565b9497909650939450505050565b60008060006040848603121561228957600080fd5b83359250602084013567ffffffffffffffff81111561225b57600080fd5b6000806000606084860312156122bc57600080fd5b6122c584611fc2565b92506122d360208501611fc2565b9150604084013590509250925092565b600080600080608085870312156122f957600080fd5b61230285611fc2565b935061231060208601611fc2565b92506040850135801515811461232557600080fd5b9396929550929360600135925050565b60005b83811015612350578181015183820152602001612338565b50506000910152565b6020815260008251806020840152612378816040850160208701612335565b601f01601f19169190910160400192915050565b600080600080608085870312156123a257600080fd5b6123ab85611fc2565b93506123b960208601611fc2565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156123e957600080fd5b6123f288611fc2565b965061240060208901611fc2565b955061240e60408901611fc2565b9450606088013567ffffffffffffffff8082111561242b57600080fd5b6124378b838c01611fde565b909650945060808a013591508082111561245057600080fd5b5061245d8a828b01611fde565b989b979a50959850939692959293505050565b60006020828403121561248257600080fd5b610b7682611fc2565b80516001600160801b0381168114611fd957600080fd5b600080604083850312156124b557600080fd5b6124be8361248b565b91506124cc6020840161248b565b90509250929050565b805162ffffff81168114611fd957600080fd5b6000602082840312156124fa57600080fd5b610b76826124d5565b805164ffffffffff81168114611fd957600080fd5b6000806000806080858703121561252e57600080fd5b612537856124d5565b9350612545602086016124d5565b9250612553604086016124d5565b915061256160608601612503565b905092959194509250565b805161ffff81168114611fd957600080fd5b600080600080600060a0868803121561259657600080fd5b855160ff811681146125a757600080fd5b94506125b56020870161256c565b93506125c36040870161256c565b92506125d160608701612503565b91506125df60808701612503565b90509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144957600081815260208120601f850160051c810160208610156126625750805b601f850160051c820191505b81811015611ce85782815560010161266e565b67ffffffffffffffff831115612699576126996125eb565b6126ad836126a78354612601565b8361263b565b6000601f8411600181146126e157600085156126c95750838201355b600019600387901b1c1916600186901b1783556110f6565b600083815260209020601f19861690835b8281101561271257868501358255602094850194600190920191016126f2565b508682101561272f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561275357600080fd5b5051919050565b6000825161276c818460208701612335565b919091019291505056fea264697066735822122084a91b1513badbad9b3099de6423677e00cbf57bc74a29781fb273976fe7b35164736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a34746573745f4265666f7265416674657242617463685472616e7366657246726f6d486f6f6b733a3a32746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a33746573745f4265666f7265416674657242617463685472616e7366657246726f6d486f6f6b733a3a31746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a31885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f4265666f72654166746572466c6173684c6f616e486f6f6b733a3a32746573745f4265666f72654166746572466c6173684c6f616e486f6f6b733a3a31746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a32a264697066735822122004a223d5a2b249a8a562e1b88a7fd31f9ebfb42037afa8f2eab6a5211eee3c1364736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;755:21192:86;1812:17:93;;755:21192:86;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;755:21192:86;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;755:21192:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001fc5760003560e01c806366d9a9a0116200011d578063a42b613911620000b1578063b8c238fd116200007b578063b8c238fd1462000518578063ba414fa61462000522578063e20c9f71146200052c578063fecaa223146200053657620001fc565b8063a42b613914620004d6578063a7aa85e914620004e0578063b5508aa914620004f7578063b89e0233146200050157620001fc565b8063889be5b711620000f3578063889be5b7146200048c5780638e78d4e314620004b8578063916a17c614620004c257806393a5870c14620004cc57620001fc565b806366d9a9a014620004505780637626ddcc146200046957806385226c81146200047357620001fc565b8063314bf90811620001955780633f7286f4116200016b5780633f7286f4146200040c57806345bf2c09146200041657806349789ef914620004205780634f3e1504146200044657620001fc565b8063314bf90814620003ee5780633e5e3c2314620003f85780633f71aea7146200040257620001fc565b806316c1fcdd11620001d757806316c1fcdd14620003a85780631ed7831c14620003b25780632ade388014620003cb5780632cb279c614620003e457620001fc565b806301ffc9a7146200035657806306fb353014620003925780630a9254e4146200039e575b601c54602754620002bc916001600160a01b0390811691166200022967016345785d8a000060026200c008565b601c546027546040516370a0823160e01b81526001600160a01b0391821660048201526001600160801b0393909316929116906370a08231906024015b602060405180830381865afa15801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa91906200c036565b620002b691906200c050565b6200054d565b601d546027546200032b916001600160a01b039081169116620002e967016345785d8a000060026200c008565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201526001600160801b0393909316929116906370a082319060240162000266565b7fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c26000818152602090f35b6200037d620003673660046200c066565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b6200039c62000561565b005b6200039c62000f9d565b6200039c620012f0565b620003bc62001d88565b6040516200038991906200c092565b620003d562001dec565b6040516200038991906200c135565b6200039c62001f3a565b6200039c62002b02565b620003bc62003195565b6200039c620031f7565b620003bc62003bd0565b6200039c62003c32565b62000437620004313660046200c20b565b620044ee565b60405190815260200162000389565b6200039c62004543565b6200045a62004e4c565b6040516200038991906200c249565b6200039c62004f36565b6200047d62005bf6565b6040516200038991906200c300565b620004a36200049d3660046200c378565b62005cd0565b60405162ffffff909116815260200162000389565b6200039c62005d2b565b6200045a62006146565b6200039c62006230565b6200039c62006863565b6200039c620004f13660046200c3d5565b6200715b565b6200047d620075eb565b6200037d620005123660046200c48a565b620076c5565b6200039c62007748565b6200037d62007f69565b620003bc62008023565b6200039c620005473660046200c4aa565b62008085565b6200055c83838360006200838a565b505050565b602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa158015620005ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d291906200c551565b60408051600180825281830190925291925060009190602080830190803683370190505090506200060d670de0b6b3a7640000808462008585565b816000815181106200062357620006236200c587565b6020908102919091010152601c546200066f906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b601d54620006b0906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b1580156200072157600080fd5b505af115801562000736573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562000797573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007bd91906200c5ae565b50601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a0000602482015291169063a9059cbb906044016020604051808303816000875af11580156200081b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200084191906200c5ae565b5060275460405163383d15c560e01b81526001600160a01b039091169063383d15c59062000898907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af1158015620008b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008e291908101906200c6c9565b5050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200093c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096291906200c8e7565b60408051600180825281830190925291925060009190602080830190803683370190505090508362ffffff1681600081518110620009a457620009a46200c587565b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050905067016345785d8a00006001600160801b031681600081518110620009fb57620009fb6200c587565b60209081029190910101526027546040516364c9cfaf60e11b81526001600160a01b039091169063c9939f5e9062000a5e907f0000000000000000000000000000000000000000000000000000000000000000908190879087906004016200c9b5565b6000604051808303816000875af115801562000a7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000aa891908101906200ca6f565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000af757600080fd5b505af115801562000b0c573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562000b67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b8d91906200c8e7565b905062000d11602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000be7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c1191908101906200caa8565b8051906020012063ea9db9d360e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888860405160240162000c9b9594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724275726e486f6f6b733a3a3100000000815250620085c3565b602c54604080516330bed69960e21b8152905162000e88926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa15801562000d5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d8891908101906200caa8565b8051906020012063fdc2725760e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888860405160240162000e129594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724275726e486f6f6b733a3a3200000000815250620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa15801562000ed4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000efa91906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa15801562000f53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f7991906200c8e7565b905062000f87828762008629565b62000f93818462008629565b5050505050505050565b62000fa762008ba6565b601c54601d5462000fc5916001600160a01b0390811691166200a1d1565b602780546001600160a01b0319166001600160a01b0392909216918217905562001024907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a7640000806032806200715b565b60405162001032906200bf4d565b604051809103906000f0801580156200104f573d6000803e3d6000fd5b50602c80546001600160a01b0319166001600160a01b039283169081179091556027546040516340c3fa8b60e11b81529216600483015290638187f51690602401600060405180830381600087803b158015620010ab57600080fd5b505af1158015620010c0573d6000803e3d6000fd5b5050602454604080516306bd6eb360e21b815290516001600160a01b039092169350632f2ff15d92508391631af5bacc916004808201926020929091908290030181865afa15801562001117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113d91906200c036565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401600060405180830381600087803b1580156200117d57600080fd5b505af115801562001192573d6000803e3d6000fd5b50506040805161016081018252602c546001600160a01b039081168252600160208301819052928201839052606082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820192909252602454601c54601d549295509083169350633a2f1a91929081169116600a62001223866200a1ea565b604080516000815260208101918290526001600160e01b031960e088901b16909152620012589493929190602481016200cb9d565b600060405180830381600087803b1580156200127357600080fd5b505af115801562001288573d6000803e3d6000fd5b50506027546040516363deb2c360e11b8152600160048201526001600160a01b03909116925063c7bd658691506024015b600060405180830381600087803b158015620012d457600080fd5b505af1158015620012e9573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091602080830190803683370190505090506200132a6706f05b59d3b20000806280000062008585565b816000815181106200134057620013406200c587565b6020908102919091010152602c546027546040516001600160a01b03928316926333ad78d192169063383d15c560e01b90620013a5907f000000000000000000000000000000000000000000000000000000000000000090879082906024016200c609565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620013ed92916004016200cbdb565b600060405180830381600087803b1580156200140857600080fd5b505af11580156200141d573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200147057600080fd5b505af115801562001485573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620014fa57600080fd5b505af11580156200150f573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062001569907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af115801562001589573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015b391908101906200c6c9565b5050602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b0390921692506333ad78d191620015f79190602481016200cbdb565b600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b5050602c546027546040516001600160a01b03928316945063c70e8bd4935091169063383d15c560e01b9062001686907f000000000000000000000000000000000000000000000000000000000000000090879082906024016200c609565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620016ce92916004016200cbdb565b600060405180830381600087803b158015620016e957600080fd5b505af1158015620016fe573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562001752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200177891906200c036565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620017cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017f191906200c036565b601c546027546040516370a0823160e01b81526001600160a01b03918216600482018190529394506200183e93919092169167016345785d8a00009083906370a082319060240162000266565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201819052620018899392909216919067016345785d8a00009083906370a082319060240162000266565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b158015620018fa57600080fd5b505af11580156200190f573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062001969907f000000000000000000000000000000000000000000000000000000000000000090879085906004016200c609565b6000604051808303816000875af115801562001989573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019b391908101906200c6c9565b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015262001aa293509116906370a0823190602401602060405180830381865afa15801562001a08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a2e91906200c036565b606462001a4567016345785d8a0000604b6200c008565b62001a5191906200cc15565b62001a66906001600160801b0316856200c050565b6040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a31000000000000000000008152506200a2b4565b601d546027546040516370a0823160e01b81526001600160a01b03918216600482015262001b909291909116906370a0823190602401602060405180830381865afa15801562001af6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b1c91906200c036565b606462001b3367016345785d8a0000604b6200c008565b62001b3f91906200cc15565b62001b54906001600160801b0316846200c050565b6040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a32000000000000000000008152506200a2b4565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262001c8c9216906370a0823190602401602060405180830381865afa15801562001bfe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c2491906200c036565b606462001c3b67016345785d8a000060196200c008565b62001c4791906200cc15565b6001600160801b03166040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a33000000000000000000008152506200a2b4565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200055c9216906370a0823190602401602060405180830381865afa15801562001cfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d2091906200c036565b606462001d3767016345785d8a000060196200c008565b62001d4391906200cc15565b6001600160801b03166040518060400160405280601681526020017f746573745f4d696e745265656e7472616e63793a3a34000000000000000000008152506200a2b4565b6060601480548060200260200160405190810160405280929190818152602001828054801562001de257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001dc3575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001f3157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001f1957838290600052602060002001805462001e85906200cc3e565b80601f016020809104026020016040519081016040528092919081815260200182805462001eb3906200cc3e565b801562001f045780601f1062001ed85761010080835404028352916020019162001f04565b820191906000526020600020905b81548152906001019060200180831162001ee657829003601f168201915b50505050508152602001906001019062001e63565b50505050815250508152602001906001019062001e10565b50505050905090565b604080516001808252818301909252600091602080830190803683375050602754604080516336f997b760e21b815290519394506001600160a01b039091169263dbe65edc925060048083019260209291908290030181865afa15801562001fa6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fcc91906200c551565b62ffffff168160008151811062001fe75762001fe76200c587565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337505060275484519293506002926001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200206557620020656200c587565b60200260200101516040518363ffffffff1660e01b81526004016200209f9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620020bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020e391906200c036565b620020ef91906200cc7a565b816000815181106200210557620021056200c587565b602090810291909101015260405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200218157600080fd5b505af115801562002196573d6000803e3d6000fd5b5050602754602c546040516339612d9560e21b81526001600160a01b039182166004820152600160248201529116925063e584b6549150604401600060405180830381600087803b158015620021eb57600080fd5b505af115801562002200573d6000803e3d6000fd5b5050602c546027546040516001600160a01b0392831694506333ad78d193509116906305feb5ff60e21b9062002281907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620022c992916004016200cbdb565b600060405180830381600087803b158015620022e457600080fd5b505af1158015620022f9573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200234c57600080fd5b505af115801562002361573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620023d657600080fd5b505af1158015620023eb573d6000803e3d6000fd5b50506027546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915062002467907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b600060405180830381600087803b1580156200248257600080fd5b505af115801562002497573d6000803e3d6000fd5b5050602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b0390921693506333ad78d19250620024db91602481016200cbdb565b600060405180830381600087803b158015620024f657600080fd5b505af11580156200250b573d6000803e3d6000fd5b5050602c546027546040516001600160a01b03928316945063c70e8bd493509116906305feb5ff60e21b906200258c907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620025d492916004016200cbdb565b600060405180830381600087803b158015620025ef57600080fd5b505af115801562002604573d6000803e3d6000fd5b50506027548451620026f993506001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200265957620026596200c587565b60200260200101516040518363ffffffff1660e01b8152600401620026939291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620026b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026d791906200c036565b600060405180606001604052806023815260200162022717602391396200a2b4565b6027548251620027e8916001600160a01b03169062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200274857620027486200c587565b60200260200101516040518363ffffffff1660e01b8152600401620027829291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620027a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027c691906200c036565b60006040518060600160405280602381526020016202279c602391396200a2ec565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200285957600080fd5b505af11580156200286e573d6000803e3d6000fd5b50506027546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150620028ea907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b600060405180830381600087803b1580156200290557600080fd5b505af11580156200291a573d6000803e3d6000fd5b5050602754845162002a0f93506001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200296f576200296f6200c587565b60200260200101516040518363ffffffff1660e01b8152600401620029a99291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620029c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029ed91906200c036565b6000604051806060016040528060238152602001620226cb602391396200a2ec565b602754825162002afe916001600160a01b03169062fdd58e907f000000000000000000000000000000000000000000000000000000000000000090869060009062002a5e5762002a5e6200c587565b60200260200101516040518363ffffffff1660e01b815260040162002a989291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562002ab6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002adc91906200c036565b60006040518060600160405280602381526020016202267f602391396200a2b4565b5050565b601c546027546040516370a0823160e01b81526001600160a01b039182166004820181905262002b4d9392909216919067016345785d8a00009083906370a082319060240162000266565b602c5460275460408051600160248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663029e02cd60e51b17905291516333ad78d160e01b8152938216936333ad78d19362002be5931691906004016200cbdb565b600060405180830381600087803b15801562002c0057600080fd5b505af115801562002c15573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b15801562002c6857600080fd5b505af115801562002c7d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b15801562002cf257600080fd5b505af115801562002d07573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562002d7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002da591906200c036565b50602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b03909216916333ad78d19162002de691602481016200cbdb565b600060405180830381600087803b15801562002e0157600080fd5b505af115801562002e16573d6000803e3d6000fd5b5050602c5460275460408051600060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663029e02cd60e51b17905291516331c3a2f560e21b8152938216955063c70e8bd4945062002eb5939190921691906004016200cbdb565b600060405180830381600087803b15801562002ed057600080fd5b505af115801562002ee5573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262002fbd945090911691506370a0823190602401602060405180830381865afa15801562002f59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f7f91906200c036565b60006040518060400160405280601681526020017f746573745f537761705265656e7472616e63793a3a31000000000000000000008152506200a2b4565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200302e57600080fd5b505af115801562003043573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b039091166024820181905292506353c059a091506044016020604051808303816000875af11580156200309a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030c091906200c036565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620031939216906370a0823190602401602060405180830381865afa1580156200312f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200315591906200c036565b60006040518060400160405280601681526020017f746573745f537761705265656e7472616e63793a3a32000000000000000000008152506200a2ec565b565b6060601680548060200260200160405190810160405280929190818152602001828054801562001de2576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001dc3575050505050905090565b602754604051631cee6cdf60e31b815267016345785d8a000060048201526001602482015260009182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562003254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327a91906200cc91565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206202265f83398151915290634c63e5629060240160006040518083038186803b158015620032d157600080fd5b505afa158015620032e6573d6000803e3d6000fd5b5050505062003336826001600160801b031660006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a318152506200a2b4565b601c5462003377906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa158015620033c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033e991906200c8e7565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f833981519152906306447d5690602401600060405180830381600087803b1580156200345d57600080fd5b505af115801562003472573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af1158015620034d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034f991906200c5ae565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200356e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200359491906200c036565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620035e357600080fd5b505af1158015620035f8573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562003653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367991906200c8e7565b601c546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529293506200375092909116906370a0823190602401602060405180830381865afa158015620036ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200371291906200c036565b60006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a328152506200a2b4565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200382a9216906370a0823190602401602060405180830381865afa158015620037be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037e491906200c036565b846001600160801b03166040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a338152506200a2b4565b602c546040805163571eed3760e01b8152905162003966926001600160a01b03169163571eed379160048083019260009291908290030181865afa15801562003877573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620038a191908101906200caa8565b8051602091820120604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820181905260448201526001606482015267016345785d8a00006084808301919091528251808303909101815260a4909101825280840180516001600160e01b031663feee373560e01b1781529051902081518083019092528382527f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a3493820193909352909190620085c3565b602c54604080516330bed69960e21b8152905162003abd926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015620039b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620039dd91908101906200caa8565b80516020909101206353e8079b60e01b7f000000000000000000000000000000000000000000000000000000000000000080600162003a1c8960801b90565b6040516001600160a01b03948516602482015293909216604484015215156064830152608482015260a401604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7358746f593a3a35815250620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa15801562003b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b2f91906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa15801562003b88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bae91906200c8e7565b905062003bbc828562008629565b62003bc8818462008629565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801562001de2576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001dc3575050505050905090565b602754604051631cee6cdf60e31b815267016345785d8a000060048201526000602482018190529182916001600160a01b039091169063e77366f890604401606060405180830381865afa15801562003c8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cb591906200cc91565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206202265f83398151915290634c63e5629060240160006040518083038186803b15801562003d0c57600080fd5b505afa15801562003d21573d6000803e3d6000fd5b5050505062003d71826001600160801b031660006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a318152506200a2b4565b601d5462003db2906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa15801562003dfe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e2491906200c8e7565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f833981519152906306447d5690602401600060405180830381600087803b15801562003e9857600080fd5b505af115801562003ead573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003f0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f3491906200c5ae565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562003fa9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fcf91906200c036565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200401e57600080fd5b505af115801562004033573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200408e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040b491906200c8e7565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529293506200418b92909116906370a0823190602401602060405180830381865afa15801562004127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200414d91906200c036565b60006040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a328152506200a2b4565b601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620042659216906370a0823190602401602060405180830381865afa158015620041f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200421f91906200c036565b846001600160801b03166040518060400160405280602081526020017f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a338152506200a2b4565b602c546040805163571eed3760e01b81529051620043b1926001600160a01b03169163571eed379160048083019260009291908290030181865afa158015620042b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620042dc91908101906200caa8565b8051602091820120604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820181905260448201526000606482015277016345785d8a0000000000000000000000000000000000006084808301919091528251808303909101815260a4909101825280840180516001600160e01b031663feee373560e01b1781529051902081518083019092528382527f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a3493820193909352909190620085c3565b602c54604080516330bed69960e21b8152905162003abd926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa158015620043fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200442891908101906200caa8565b8051602091820120604080516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482018190526044820152600060648201526001600160801b0388166084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166353e8079b60e01b1781529051902081518083019092528382527f746573745f4265666f7265416674657253776170486f6f6b7359746f583a3a3593820193909352909190620085c3565b6000808360ff1611801562004506575060008260ff16115b6200451d576200451782846200ccdb565b62004537565b60016200452b83856200ccdb565b6200453791906200ccf7565b60ff1690505b92915050565b602c546027546040805160008152602081019091526001600160a01b03928316926333ad78d192169063ea3446bf60e01b90620045a090309077016345785d8a00000000000000000000016345785d8a000090604481016200cd13565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620045e892916004016200cbdb565b600060405180830381600087803b1580156200460357600080fd5b505af115801562004618573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200466b57600080fd5b505af115801562004680573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620046f557600080fd5b505af11580156200470a573d6000803e3d6000fd5b50506027546040805160008152602081019182905263ea3446bf60e01b9091526001600160a01b03909116925063ea3446bf91506200476990309077016345785d8a00000000000000000000016345785d8a000090602481016200cd13565b600060405180830381600087803b1580156200478457600080fd5b505af115801562004799573d6000803e3d6000fd5b5050602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b0390921693506333ad78d19250620047dd91602481016200cbdb565b600060405180830381600087803b158015620047f857600080fd5b505af11580156200480d573d6000803e3d6000fd5b5050602c546027546040805160008152602081019091526001600160a01b03928316945063c70e8bd4935091169063ea3446bf60e01b906200486f90309077016345785d8a00000000000000000000016345785d8a000090604481016200cd13565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620048b792916004016200cbdb565b600060405180830381600087803b158015620048d257600080fd5b505af1158015620048e7573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156200493b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200496191906200c036565b601d546027546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620049b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049da91906200c036565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b15801562004a4e57600080fd5b505af115801562004a63573d6000803e3d6000fd5b50506027546040805160008152602081019182905263ea3446bf60e01b9091526001600160a01b03909116925063ea3446bf915062004ac290309077016345785d8a00000000000000000000016345785d8a000090602481016200cd13565b600060405180830381600087803b15801562004add57600080fd5b505af115801562004af2573d6000803e3d6000fd5b5050601c546027546040516370a0823160e01b81526001600160a01b03918216600482015262004bd49450911691506370a0823190602401602060405180830381865afa15801562004b48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b6e91906200c036565b62004b8367016345785d8a000060026200c008565b62004b98906001600160801b0316856200c050565b6040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3100000000008152506200a2b4565b601d546027546040516370a0823160e01b81526001600160a01b03918216600482015262004cb49291909116906370a0823190602401602060405180830381865afa15801562004c28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c4e91906200c036565b62004c6367016345785d8a000060026200c008565b62004c78906001600160801b0316846200c050565b6040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3200000000008152506200a2b4565b601c546040516370a0823160e01b815230600482015262004d80916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004d00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d2691906200c036565b62004d3b67016345785d8a000060026200c008565b6001600160801b03166040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3300000000008152506200a2b4565b601d546040516370a0823160e01b815230600482015262002afe916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004dcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004df291906200c036565b62004e0767016345785d8a000060026200c008565b6001600160801b03166040518060400160405280601b81526020017f746573745f466c6173684c6f616e5265656e7472616e63793a3a3400000000008152506200a2b4565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001f315760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562004f1d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162004ede5790505b5050505050815250508152602001906001019062004e70565b604080516001808252818301909252600091602080830190803683375050602754604080516336f997b760e21b815290519394506001600160a01b039091169263dbe65edc925060048083019260209291908290030181865afa15801562004fa2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004fc891906200c551565b62ffffff168160008151811062004fe35762004fe36200c587565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337505060275484519293506002926001600160a01b03909116915062fdd58e907f00000000000000000000000000000000000000000000000000000000000000009086906000906200506157620050616200c587565b60200260200101516040518363ffffffff1660e01b81526004016200509b9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620050b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050df91906200c036565b620050eb91906200cc7a565b816000815181106200510157620051016200c587565b602090810291909101015260405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200517d57600080fd5b505af115801562005192573d6000803e3d6000fd5b5050602754602c546040516339612d9560e21b81526001600160a01b039182166004820152600160248201529116925063e584b6549150604401600060405180830381600087803b158015620051e757600080fd5b505af1158015620051fc573d6000803e3d6000fd5b5050602c546027546040516001600160a01b0392831694506333ad78d193509116906364c9cfaf60e11b906200527d907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620052c592916004016200cbdb565b600060405180830381600087803b158015620052e057600080fd5b505af1158015620052f5573d6000803e3d6000fd5b5050604051630618f58760e51b8152633ee5aeb560e01b60048201526000805160206202265f833981519152925063c31eb0e09150602401600060405180830381600087803b1580156200534857600080fd5b505af11580156200535d573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152925063ca669fa79150602401600060405180830381600087803b158015620053d257600080fd5b505af1158015620053e7573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062005463907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b6000604051808303816000875af115801562005483573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620054ad91908101906200ca6f565b50602c5460408051600080825260208201928390526333ad78d160e01b9092526001600160a01b03909216916333ad78d191620054ee91602481016200cbdb565b600060405180830381600087803b1580156200550957600080fd5b505af11580156200551e573d6000803e3d6000fd5b5050602c546027546040516001600160a01b03928316945063c70e8bd493509116906364c9cfaf60e11b906200559f907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090899089906024016200c9b5565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b9092168252620055e792916004016200cbdb565b600060405180830381600087803b1580156200560257600080fd5b505af115801562005617573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620056ef945090911691506370a0823190602401602060405180830381865afa1580156200568b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056b191906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a31000000000000000000008152506200a2b4565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620057c19216906370a0823190602401602060405180830381865afa1580156200575d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200578391906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a32000000000000000000008152506200a2b4565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200583257600080fd5b505af115801562005847573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e9150620058c3907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b6000604051808303816000875af1158015620058e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200590d91908101906200ca6f565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620059e09216906370a0823190602401602060405180830381865afa1580156200597c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059a291906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a33000000000000000000008152506200a2ec565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262005ab29216906370a0823190602401602060405180830381865afa15801562005a4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a7491906200c036565b60006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a34000000000000000000008152506200a2ec565b602754825160009182916001600160a01b0390911690630abe9688908690849062005ae15762005ae16200c587565b60200260200101516040518263ffffffff1660e01b815260040162005b11919062ffffff91909116815260200190565b6040805180830381865afa15801562005b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b5491906200cd3d565b6001600160801b031691506001600160801b0316915062005bad8260006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a35000000000000000000008152506200a2b4565b62005bf08160006040518060400160405280601681526020017f746573745f4275726e5265656e7472616e63793a3a36000000000000000000008152506200a2b4565b50505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001f3157838290600052602060002001805462005c3c906200cc3e565b80601f016020809104026020016040519081016040528092919081815260200182805462005c6a906200cc3e565b801562005cbb5780601f1062005c8f5761010080835404028352916020019162005cbb565b820191906000526020600020905b81548152906001019060200180831162005c9d57829003601f168201915b50505050508152602001906001019062005c1a565b60008062005ce48462ffffff87166200c050565b905060008360ff161162005cf9578062005d15565b62005d0860ff8416826200cd75565b62005d159060016200c050565b905062005d22816200a324565b95945050505050565b6027546040805163781a891560e01b815290516000926001600160a01b03169163781a89159160048083019260209291908290030181865afa15801562005d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d9c91906200c036565b60408051610160810182526001600160a01b03838116808352600160a01b85161515602080850191909152600160a11b8616151584860152600160a21b861615156060850152600160a31b861615156080850152600160a41b8616151560a0850152600160a51b8616151560c0850152600160a61b8616151560e0850152600160a71b86161515610100850152600160a81b86161515610120850152600160a91b86161515610140850152602c548551808701909652601c86527f746573745f4765744c42486f6f6b73506172616d65746572733a3a310000000091860191909152949550919362005e91939116906200a34b565b62005ed681602001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a32000000008152506200a383565b62005f1b81604001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a33000000008152506200a383565b62005f6081606001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a34000000008152506200a383565b62005fa581608001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a35000000008152506200a383565b62005fea8160a001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a36000000008152506200a383565b6200602f8160c001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a37000000008152506200a383565b620060748160e001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a38000000008152506200a383565b620060ba8161010001516040518060400160405280601c81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a39000000008152506200a383565b620061008161012001516040518060400160405280601d81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a31300000008152506200a383565b62002afe8161014001516040518060400160405280601d81526020017f746573745f4765744c42486f6f6b73506172616d65746572733a3a31310000008152506200a383565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001f315760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200621757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620061d85790505b505050505081525050815260200190600101906200616a565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa1580156200627c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062a291906200c8e7565b9050600077016345785d8a00000000000000000000016345785d8a000060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201529091506000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b1580156200633357600080fd5b505af115801562006348573d6000803e3d6000fd5b50506027546040805160008152602081019182905263ea3446bf60e01b9091526001600160a01b03909116925063ea3446bf91506200638f9030908590602481016200cd13565b600060405180830381600087803b158015620063aa57600080fd5b505af1158015620063bf573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200641a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200644091906200c8e7565b90506200655c602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200649a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620064c491908101906200caa8565b8051602091820120604080517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248201523060448201526064808201889052825180830390910181526084909101825280840180516001600160e01b031663505d903360e01b17815290519020815160608101909252602180835292939092906202277b90830139620085c3565b6000670de0b6b3a764000067016345785d8a00006001600160801b0316602460009054906101000a90046001600160a01b03166001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620065cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065f391906200c036565b620065ff91906200cd8b565b6200660b91906200cc7a565b602c54604080516330bed69960e21b815290519293506001600160801b038416608085901b17926200674f926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156200666c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200669691908101906200caa8565b8051602091820120604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201523060448201526064810186905277016345785d8a00000000000000000000016345785d8a00006084808301919091528251808303909101815260a4909101825280840180516001600160e01b03166360bed5f360e01b17815290519020815160608101909252602180835292939092906202275a90830139620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa1580156200679b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067c191906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa1580156200681a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200684091906200c8e7565b90506200684e828862008629565b6200685a818662008629565b50505050505050565b602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa158015620068ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620068d491906200c551565b60408051600180825281830190925291925060009190602080830190803683370190505090506200690f670de0b6b3a7640000808462008585565b816000815181106200692557620069256200c587565b6020908102919091010152601c5462006971906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b601d54620069b2906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b15801562006a2357600080fd5b505af115801562006a38573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562006a99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006abf91906200c5ae565b50601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a0000602482015291169063a9059cbb906044016020604051808303816000875af115801562006b1d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006b4391906200c5ae565b5060275460405163383d15c560e01b81526001600160a01b039091169063383d15c59062006b9a907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af115801562006bba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006be491908101906200c6c9565b5050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562006c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c6491906200c8e7565b60408051600180825281830190925291925060009190602080830190803683370190505090508362ffffff168160008151811062006ca65762006ca66200c587565b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050905067016345785d8a00006001600160801b03168160008151811062006cfd5762006cfd6200c587565b60209081029190910101526027546040516305feb5ff60e21b81526001600160a01b03909116906317fad7fc9062006d80907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090879087906004016200c9b5565b600060405180830381600087803b15801562006d9b57600080fd5b505af115801562006db0573d6000803e3d6000fd5b505050506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562006e0257600080fd5b505af115801562006e17573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562006e72573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9891906200c8e7565b905062007000602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa15801562006ef2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006f1c91908101906200caa8565b805190602001206379c8ccf760e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888860405160240162006fa69594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505080519060200120604051806060016040528060298152602001620226ee60299139620085c3565b602c54604080516330bed69960e21b8152905162000e88926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa1580156200704d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200707791908101906200caa8565b805190602001206367ddb27860e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008888604051602401620071019594939291906200cb47565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505080519060200120604051806060016040528060298152602001620226a260299139620085c3565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200719c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071c291906200cda5565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562007205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200722b91906200cda5565b90506200723a828b886200054d565b62007247818b876200054d565b6000620072558585620044ee565b905060008167ffffffffffffffff8111156200727557620072756200c571565b6040519080825280602002602001820160405280156200729f578160200160208202803683370190505b50905060005b828110156200739e576000620072bd8b838962005cd0565b905060008b62ffffff168262ffffff1610158015620072df575060008960ff16115b620072ec5760006200730d565b6200730d6200730760ff8b16670de0b6b3a76400006200cc7a565b6200a3e7565b905060008c62ffffff168362ffffff16111580156200732f575060008960ff16115b6200733c57600062007357565b620073576200730760ff8b16670de0b6b3a76400006200cc7a565b90506200736682828562008585565b8585815181106200737b576200737b6200c587565b6020026020010181815250505050508062007396906200cdc5565b9050620072a5565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b158015620073f057600080fd5b505af115801562007405573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562007459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200747f91906200c5ae565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af1158015620074d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620074f691906200c5ae565b506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200754557600080fd5b505af11580156200755a573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162007590939291906200c609565b6000604051808303816000875af1158015620075b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620075da91908101906200c6c9565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001f3157838290600052602060002001805462007631906200cc3e565b80601f01602080910402602001604051908101604052809291908181526020018280546200765f906200cc3e565b8015620076b05780601f106200768457610100808354040283529160200191620076b0565b820191906000526020600020905b8154815290600101906020018083116200769257829003601f168201915b5050505050815260200190600101906200760f565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562007715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200773b91906200cde1565b9998505050505050505050565b602c5460408051631865c57d60e01b815290516000926001600160a01b031691631865c57d916004808301926102009291908290030181865afa15801562007794573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620077ba91906200c8e7565b6040805160018082528183019092529192506000919060208083019080368337019050509050620077f9670de0b6b3a764000080846080015162008585565b816000815181106200780f576200780f6200c587565b6020908102919091010152601c546200785b906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b601d546200789c906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000067016345785d8a00006200054d565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206202265f833981519152906306447d5690602401600060405180830381600087803b1580156200790d57600080fd5b505af115801562007922573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562007983573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620079a991906200c5ae565b50601d5460275460405163a9059cbb60e01b81526001600160a01b03918216600482015267016345785d8a0000602482015291169063a9059cbb906044016020604051808303816000875af115801562007a07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a2d91906200c5ae565b5060275460405163383d15c560e01b81526001600160a01b039091169063383d15c59062007a84907f000000000000000000000000000000000000000000000000000000000000000090859082906004016200c609565b6000604051808303816000875af115801562007aa4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007ace91908101906200c6c9565b5050506000805160206202273a83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007b1f57600080fd5b505af115801562007b34573d6000803e3d6000fd5b505050506000602c60009054906101000a90046001600160a01b03166001600160a01b0316631865c57d6040518163ffffffff1660e01b815260040161020060405180830381865afa15801562007b8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007bb591906200c8e7565b905062007d10602c60009054906101000a90046001600160a01b03166001600160a01b031663571eed376040518163ffffffff1660e01b8152600401600060405180830381865afa15801562007c0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007c3991908101906200caa8565b8051602090910120630d4abdb360e01b7f0000000000000000000000000000000000000000000000000000000000000000808677016345785d8a00000000000000000000016345785d8a000060405160240162007c9a94939291906200ce4a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724d696e74486f6f6b733a3a3100000000815250620085c3565b602c54604080516330bed69960e21b8152905162007e5e926001600160a01b03169163c2fb5a649160048083019260009291908290030181865afa15801562007d5d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007d8791908101906200caa8565b8051602090910120633d28d26360e11b7f0000000000000000000000000000000000000000000000000000000000000000808677016345785d8a00000000000000000000016345785d8a000060405160240162007de894939291906200ce4a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050805190602001206040518060400160405280601c81526020017f746573745f4265666f726541667465724d696e74486f6f6b733a3a3200000000815250620085c3565b602c5460408051633c5929e360e11b815290516000926001600160a01b0316916378b253c6916004808301926102009291908290030181865afa15801562007eaa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ed091906200c8e7565b90506000602c60009054906101000a90046001600160a01b03166001600160a01b031663f08e95c66040518163ffffffff1660e01b815260040161020060405180830381865afa15801562007f29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f4f91906200c8e7565b905062007f5d828662008629565b620012e9818462008629565b60075460009060ff161562007f82575060075460ff1690565b604051630667f9d760e41b81526000805160206202265f833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562007ff6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200801c91906200c036565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562001de2576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001dc3575050505050905090565b670de0b6b3a7640000831115620080e35760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620080f18383620044ee565b905060008167ffffffffffffffff8111156200811157620081116200c571565b6040519080825280602002602001820160405280156200813b578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200815c576200815c6200c571565b60405190808252806020026020018201604052801562008186578160200160208202803683370190505b50905060005b8381101562008294576000620081a489838862005cd0565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620081fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200822091906200c036565b90508162ffffff168584815181106200823d576200823d6200c587565b60209081029190910101526200825d818a670de0b6b3a76400006200a413565b8484815181106200827257620082726200c587565b6020026020010181815250505050806200828c906200cdc5565b90506200818c565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206202265f8339815191529063ca669fa790602401600060405180830381600087803b158015620082e657600080fd5b505af1158015620082fb573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062008333908d908d90879087906004016200c9b5565b6000604051808303816000875af115801562008353573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200837d91908101906200ca6f565b5050505050505050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620083e0916200ce89565b600060405180830381855afa9150503d80600081146200841d576040519150601f19603f3d011682016040523d82523d6000602084013e62008422565b606091505b509150506000818060200190518101906200843e91906200c036565b9050620084788462008471876200846a6370a0823160e01b62008463600c8d6200a441565b906200a467565b906200a485565b906200a4ae565b821562003bc85760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620084c391906200ce89565b600060405180830381855afa9150503d806000811462008500576040519150601f19603f3d011682016040523d82523d6000602084013e62008505565b606091505b509150506000818060200190518101906200852191906200c036565b9050828610156200854c576200853886846200cd75565b6200854490826200cd75565b905062008567565b6200855883876200cd75565b6200856490826200c050565b90505b62000f9381620084716318160ddd60e01b62008463600c8d6200a441565b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b604051630c1fa1ed60e41b81526000805160206202265f8339815191529063c1fa1ed090620085fb908690869086906004016200cea7565b60006040518083038186803b1580156200861457600080fd5b505afa1580156200685a573d6000803e3d6000fd5b6200868582600001516001600160801b031682600001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a31000000000000000000000000000000008152506200a2b4565b620086e182602001516001600160801b031682602001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a32000000000000000000000000000000008152506200a2b4565b6200873d82604001516001600160801b031682604001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a33000000000000000000000000000000008152506200a2b4565b6200879982606001516001600160801b031682606001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a34000000000000000000000000000000008152506200a2b4565b620087ed826080015162ffffff16826080015162ffffff166040518060400160405280601081526020017f5f7665726966795374617465733a3a35000000000000000000000000000000008152506200a2b4565b620088498260a001516001600160801b03168260a001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a36000000000000000000000000000000008152506200a2b4565b620088a58260c001516001600160801b03168260c001516001600160801b03166040518060400160405280601081526020017f5f7665726966795374617465733a3a37000000000000000000000000000000008152506200a2b4565b60e080830151908201518151815160408051808201909152601081527f5f7665726966795374617465733a3a38000000000000000000000000000000006020820152620088fc9262ffffff9081169216906200a2b4565b62008950826020015162ffffff16826020015162ffffff166040518060400160405280601081526020017f5f7665726966795374617465733a3a39000000000000000000000000000000008152506200a2b4565b620089a4826040015162ffffff16826040015162ffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31300000000000000000000000000000008152506200a2b4565b620089fc826060015164ffffffffff16826060015164ffffffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31310000000000000000000000000000008152506200a2b4565b61010080850151908401518151815160408051808201909152601181527f5f7665726966795374617465733a3a3132000000000000000000000000000000602082015262008a529260ff9081169216906200a2b4565b62008aa4826020015161ffff16826020015161ffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31330000000000000000000000000000008152506200a2b4565b62008af6826040015161ffff16826040015161ffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31340000000000000000000000000000008152506200a2b4565b62008b4e826060015164ffffffffff16826060015164ffffffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31350000000000000000000000000000008152506200a2b4565b62003bc8826080015164ffffffffff16826080015164ffffffffff166040518060400160405280601181526020017f5f7665726966795374617465733a3a31360000000000000000000000000000008152506200a2b4565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362008ca357601c546040516000805160206202265f8339815191529163b4d6c782916001600160a01b039091169062008c0c906200bf5b565b604051809103906000f08015801562008c29573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162008c6e9291906200cbdb565b600060405180830381600087803b15801562008c8957600080fd5b505af115801562008c9e573d6000803e3d6000fd5b505050505b600660405162008cb3906200bf69565b60ff9091168152602001604051809103906000f08015801562008cda573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062008d0c906200bf69565b60ff9091168152602001604051809103906000f08015801562008d33573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062008d65906200bf69565b60ff9091168152602001604051809103906000f08015801562008d8c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062008dbe906200bf69565b60ff9091168152602001604051809103906000f08015801562008de5573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062008e17906200bf69565b60ff9091168152602001604051809103906000f08015801562008e3e573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062008e70906200bf69565b60ff9091168152602001604051809103906000f08015801562008e97573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162008ec6906200bf77565b604051809103906000f08015801562008ee3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206202265f8339815191529063c657c71890608401600060405180830381600087803b15801562008f8457600080fd5b505af115801562008f99573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200901157600080fd5b505af115801562009026573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200909e57600080fd5b505af1158015620090b3573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200912b57600080fd5b505af115801562009140573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620091b857600080fd5b505af1158015620091cd573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200924557600080fd5b505af11580156200925a573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620092cc57600080fd5b505af1158015620092e1573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200936d57600080fd5b505af115801562009382573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062009409906200bf85565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562009444573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162009472906200bf93565b6001600160a01b039091168152602001604051809103906000f0801580156200949f573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b158015620094fe57600080fd5b505af115801562009513573d6000803e3d6000fd5b50505050620095216200a4ba565b6200952d600a6200a85d565b602454602b54601c546040516001600160a01b0393841693928316929091169062009558906200bfa1565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562009595573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620095d0906200bfaf565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200960d573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206202265f8339815191529063c657c71890608401600060405180830381600087803b158015620096ae57600080fd5b505af1158015620096c3573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200974f57600080fd5b505af115801562009764573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620097f357600080fd5b505af115801562009808573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200989457600080fd5b505af1158015620098a9573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b1580156200993557600080fd5b505af11580156200994a573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206202265f833981519152925063c657c7189150608401600060405180830381600087803b158015620099d657600080fd5b505af1158015620099eb573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562009a46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a6c91906200c5ae565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009ac4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009aea91906200c5ae565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009b42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009b6891906200c5ae565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009bc0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009be691906200c5ae565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009c3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009c6491906200c5ae565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009cbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009ce291906200c5ae565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009d3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009d6091906200c5ae565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009db8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009dde91906200c5ae565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009e36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e5c91906200c5ae565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009eb4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009eda91906200c5ae565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009f32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009f5891906200c5ae565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562009fb0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009fd691906200c5ae565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a02e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a05491906200c5ae565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a0ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a0d291906200c5ae565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a12a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a15091906200c5ae565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200a1a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a1ce91906200c5ae565b50565b60006200a1e38383628000006200a8d3565b9392505050565b805160208201516001600160a01b0390911690156200a20a57600160a01b175b8160400151156200a21c57600160a11b175b8160600151156200a22e57600160a21b175b8160800151156200a24057600160a31b175b8160a00151156200a25257600160a41b175b8160c00151156200a26457600160a51b175b8160e00151156200a27657600160a61b175b816101000151156200a28957600160a71b175b816101200151156200a29c57600160a81b175b816101400151156200a2af57600160a91b175b919050565b6040516388b44c8560e01b81526000805160206202265f833981519152906388b44c8590620085fb908690869086906004016200cea7565b604051636cd1e26960e11b81526000805160206202265f8339815191529063d9a3c4d290620085fb908690869086906004016200cea7565b8062ffffff811681146200a2af57604051639b63641560e01b815260040160405180910390fd5b604051632f2769d160e01b81526000805160206202265f83398151915290632f2769d190620085fb908690869086906004016200cec8565b60405163a34edc0360e01b81526000805160206202265f8339815191529063a34edc03906200a3b990859085906004016200cef6565b60006040518083038186803b1580156200a3d257600080fd5b505afa15801562003bc8573d6000803e3d6000fd5b8067ffffffffffffffff811681146200a2af5760405163cc21feb960e01b815260040160405180910390fd5b60008060006200a42486866200a8e4565b915091506200a43786868685856200a903565b9695505050505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000826200a1e3565b60038201805463ffffffff191660e083901c1790556000826200a1e3565b6002820180546001810182556000918252602082206001600160a01b038416910155826200a1e3565b62002afe82826200a9b5565b601c546001600160a01b0316156200a52f5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a51557600080fd5b505af11580156200a52a573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200a5a45760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a58a57600080fd5b505af11580156200a59f573d6000803e3d6000fd5b505050505b601e546001600160a01b0316156200a6195760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a5ff57600080fd5b505af11580156200a614573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200a68e5760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a67457600080fd5b505af11580156200a689573d6000803e3d6000fd5b505050505b6022546001600160a01b0316156200a7035760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a6e957600080fd5b505af11580156200a6fe573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200a7785760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a75e57600080fd5b505af11580156200a773573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200a7ed5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a7d357600080fd5b505af11580156200a7e8573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620031935760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200a84857600080fd5b505af115801562005bf0573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401620012b9565b6000620085bb848484600a6200adc2565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200a929578383816200a920576200a9206200cbff565b04905062005d22565b8382106200a94a576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200aa2857602002820191906000526020600020905b8154815260200190600101908083116200aa13575b505050505090506000836200aa3d836200ae58565b6040516020016200aa509291906200cf13565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200aaa49186918891016200cf46565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200aadf576200aadd876200af0c565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200ab209187918991016200cf46565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200ab6791906200ce89565b600060405180830381855afa9150503d80600081146200aba4576040519150601f19603f3d011682016040523d82523d6000602084013e6200aba9565b606091505b5091506200abc69050816200abc08860206200cd8b565b6200af19565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206202265f8339815191529063667f9d7090604401602060405180830381865afa1580156200ac28573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ac4e91906200c036565b90508082146200ad055760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620080da565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206202265f833981519152906370ca10bb90606401600060405180830381600087803b1580156200ad6457600080fd5b505af11580156200ad79573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200adae60028b0160006200bfbd565b896004016000905550505050505050505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af11580156200ae32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d2291906200cda5565b60606000825160206200ae6c91906200cd8b565b67ffffffffffffffff8111156200ae87576200ae876200c571565b6040519080825280601f01601f1916602001820160405280156200aeb2576020820181803683370190505b50905060005b83518110156200af055760008482815181106200aed9576200aed96200c587565b6020026020010151905080826020026020018401525080806200aefc906200cdc5565b9150506200aeb8565b5092915050565b60006200453d826200afbb565b600080600060208551116200af305784516200af33565b60205b905060005b818110156200afb1576200af4e8160086200cd8b565b866200af5b83886200c050565b815181106200af6e576200af6e6200c587565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200afa8816200cdc5565b9150506200af38565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200b02d57602002820191906000526020600020905b8154815260200190600101908083116200b018575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200b079925085918791016200cf46565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200b118576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200b0e89185918791016200cf46565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b6000836200b126836200be08565b6040516020016200b1399291906200cf13565b60405160208183030381529060405290506000805160206202273a83398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b19857600080fd5b505af11580156200b1ad573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200b1ce91906200ce89565b600060405180830381855afa9150503d80600081146200b20b576040519150601f19603f3d011682016040523d82523d6000602084013e6200b210565b606091505b5091506200b22d9050816200b2278760206200cd8b565b6200beb5565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206202265f833981519152906365bc9481906024016000604051808303816000875af11580156200b28a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200b2b491908101906200cf82565b50905080516001036200b6475760006000805160206202273a83398151915260001c6001600160a01b031663667f9d7089846000815181106200b2fb576200b2fb6200c587565b60200260200101516040518363ffffffff1660e01b81526004016200b3359291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200b353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b37991906200c036565b9050806200b3e4577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200b3b9576200b3b96200c587565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8083146200b4995760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620080da565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200b4d19291906200cf46565b60405160208183030381529060405280519060200120856000815181106200b4fd576200b4fd6200c587565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200b557576200b5576200c587565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c16835284528082209051929390926200b5a2918a918c91016200cf46565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200b60c918a918c91016200cf46565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200bc7d565b6001815111156200bc0c5760005b81518110156200bc055760006000805160206202273a83398151915260001c6001600160a01b031663667f9d708a8585815181106200b698576200b6986200c587565b60200260200101516040518363ffffffff1660e01b81526004016200b6d29291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200b6f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b71691906200c036565b9050806200b780577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200b755576200b7556200c587565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200b78f57506200bbf0565b82518119906000805160206202265f833981519152906370ca10bb908c908790879081106200b7c2576200b7c26200c587565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200b81b57600080fd5b505af11580156200b830573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200b85291906200ce89565b600060405180830381855afa9150503d80600081146200b88f576040519150601f19603f3d011682016040523d82523d6000602084013e6200b894565b606091505b5090925090506200b8ac816200b2278c60206200cd8b565b9650508080156200b8bc57508186145b156200bb43577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200b8fa9291906200cf46565b604051602081830303815290604052805190602001208888815181106200b925576200b9256200c587565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200b97e576200b97e6200c587565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200b9c9918d918f91016200cf46565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200ba569291906200cf46565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206202273a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200bac8576200bac86200c587565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200bb2157600080fd5b505af11580156200bb36573d6000803e3d6000fd5b505050505050506200bc05565b6000805160206202273a83398151915260001c6001600160a01b03166370ca10bb8c8787815181106200bb7a576200bb7a6200c587565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200bbd357600080fd5b505af11580156200bbe8573d6000803e3d6000fd5b505050505050505b806200bbfc816200cdc5565b9150506200b655565b506200bc7d565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620080da565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200bcc19188918a91016200cf46565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200bd5e5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620080da565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200bd8f60028a0160006200bfbd565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200bdd59188918a91016200cf46565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200be1c91906200cd8b565b67ffffffffffffffff8111156200be37576200be376200c571565b6040519080825280601f01601f1916602001820160405280156200be62576020820181803683370190505b50905060005b83518110156200af055760008482815181106200be89576200be896200c587565b6020026020010151905080826020026020018401525080806200beac906200cdc5565b9150506200be68565b600080600060208551116200becc5784516200becf565b60205b905060005b818110156200afb1576200beea8160086200cd8b565b866200bef783886200c050565b815181106200bf0a576200bf0a6200c587565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200bf44816200cdc5565b9150506200bed4565b6127cc806200cfee83390190565b610b08806200f7ba83390190565b610bfd80620102c283390190565b610c188062010ebf83390190565b6131998062011ad783390190565b61615c8062014c7083390190565b614c80806201adcc83390190565b612c13806201fa4c83390190565b50805460008255906000526020600020908101906200a1ce91905b808211156200bfee57600081556001016200bfd8565b5090565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038181168382160280821691908281146200c02e576200c02e6200bff2565b505092915050565b6000602082840312156200c04957600080fd5b5051919050565b808201808211156200453d576200453d6200bff2565b6000602082840312156200c07957600080fd5b81356001600160e01b0319811681146200a1e357600080fd5b6020808252825182820181905260009190848201906040850190845b818110156200c0d55783516001600160a01b0316835292840192918401916001016200c0ae565b50909695505050505050565b60005b838110156200c0fe5781810151838201526020016200c0e4565b50506000910152565b600081518084526200c1218160208601602086016200c0e1565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200c1eb57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200c1d457605f198985030183526200c1c18486516200c107565b948e01949350918d01916001016200c1a2565b505050978a0197945050918801916001016200c15c565b50919a9950505050505050505050565b60ff811681146200a1ce57600080fd5b600080604083850312156200c21f57600080fd5b82356200c22c816200c1fb565b915060208301356200c23e816200c1fb565b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200c2f157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200c2db5783516001600160e01b0319168252928b019260019290920191908b01906200c2af565b50978a019795505050918701916001016200c271565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200c35957603f198886030184526200c3468583516200c107565b945092850192908501906001016200c327565b5092979650505050505050565b62ffffff811681146200a1ce57600080fd5b6000806000606084860312156200c38e57600080fd5b83356200c39b816200c366565b92506020840135915060408401356200c3b4816200c1fb565b809150509250925092565b6001600160a01b03811681146200a1ce57600080fd5b600080600080600080600080610100898b0312156200c3f357600080fd5b88356200c400816200c3bf565b975060208901356200c412816200c3bf565b965060408901356200c424816200c3bf565b955060608901356200c436816200c366565b94506080890135935060a0890135925060c08901356200c456816200c1fb565b915060e08901356200c468816200c1fb565b809150509295985092959890939650565b61ffff811681146200a1ce57600080fd5b6000602082840312156200c49d57600080fd5b81356200a1e3816200c479565b600080600080600080600060e0888a0312156200c4c657600080fd5b87356200c4d3816200c3bf565b965060208801356200c4e5816200c3bf565b955060408801356200c4f7816200c3bf565b945060608801356200c509816200c366565b93506080880135925060a08801356200c522816200c1fb565b915060c08801356200c534816200c1fb565b8091505092959891949750929550565b80516200a2af816200c366565b6000602082840312156200c56457600080fd5b81516200a1e3816200c366565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805180151581146200a2af57600080fd5b6000602082840312156200c5c157600080fd5b6200a1e3826200c59d565b600081518084526020808501945080840160005b838110156200c5fe578151875295820195908201906001016200c5e0565b509495945050505050565b60006001600160a01b038086168352606060208401526200c62e60608401866200c5cc565b9150808416604084015250949350505050565b604051610120810167ffffffffffffffff811182821017156200c668576200c6686200c571565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156200c69a576200c69a6200c571565b604052919050565b600067ffffffffffffffff8211156200c6bf576200c6bf6200c571565b5060051b60200190565b6000806000606084860312156200c6df57600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200c70657600080fd5b8501601f810187136200c71857600080fd5b80516200c72f6200c729826200c6a2565b6200c66e565b81815260059190911b820183019083810190898311156200c74f57600080fd5b928401925b828410156200c76f578351825292840192908401906200c754565b80955050505050509250925092565b80516001600160801b03811681146200a2af57600080fd5b805164ffffffffff811681146200a2af57600080fd5b6000608082840312156200c7bf57600080fd5b6040516080810181811067ffffffffffffffff821117156200c7e5576200c7e56200c571565b806040525080915082516200c7fa816200c366565b815260208301516200c80c816200c366565b602082015260408301516200c821816200c366565b60408201526200c834606084016200c796565b60608201525092915050565b600060a082840312156200c85357600080fd5b60405160a0810181811067ffffffffffffffff821117156200c879576200c8796200c571565b806040525080915082516200c88e816200c1fb565b815260208301516200c8a0816200c479565b602082015260408301516200c8b5816200c479565b60408201526200c8c8606084016200c796565b60608201526200c8db608084016200c796565b60808201525092915050565b600061020082840312156200c8fb57600080fd5b6200c9056200c641565b6200c910836200c77e565b81526200c920602084016200c77e565b60208201526200c933604084016200c77e565b60408201526200c946606084016200c77e565b60608201526200c959608084016200c544565b60808201526200c96c60a084016200c77e565b60a08201526200c97f60c084016200c77e565b60c08201526200c9938460e085016200c7ac565b60e08201526200c9a88461016085016200c840565b6101008201529392505050565b60006001600160a01b038087168352808616602084015250608060408301526200c9e360808301856200c5cc565b82810360608401526200c9f781856200c5cc565b979650505050505050565b600082601f8301126200ca1457600080fd5b815160206200ca276200c729836200c6a2565b82815260059290921b840181019181810190868411156200ca4757600080fd5b8286015b848110156200ca6457805183529183019183016200ca4b565b509695505050505050565b6000602082840312156200ca8257600080fd5b815167ffffffffffffffff8111156200ca9a57600080fd5b620085bb848285016200ca02565b6000602082840312156200cabb57600080fd5b815167ffffffffffffffff808211156200cad457600080fd5b818401915084601f8301126200cae957600080fd5b8151818111156200cafe576200cafe6200c571565b6200cb13601f8201601f19166020016200c66e565b91508082528560208285010111156200cb2b57600080fd5b6200cb3e8160208401602086016200c0e1565b50949350505050565b60006001600160a01b038088168352808716602084015280861660408401525060a060608301526200cb7d60a08301856200c5cc565b82810360808401526200cb9181856200c5cc565b98975050505050505050565b60006001600160a01b03808816835280871660208401525061ffff8516604083015283606083015260a060808301526200c9f760a08301846200c107565b6001600160a01b0383168152604060208201526000620085bb60408301846200c107565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b03808416806200cc32576200cc326200cbff565b92169190910492915050565b600181811c908216806200cc5357607f821691505b6020821081036200cc7457634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200cc8c576200cc8c6200cbff565b500490565b6000806000606084860312156200cca757600080fd5b6200ccb2846200c77e565b92506200ccc2602085016200c77e565b91506200ccd2604085016200c77e565b90509250925092565b60ff81811683821601908111156200453d576200453d6200bff2565b60ff82811682821603908111156200453d576200453d6200bff2565b6001600160a01b038416815282602082015260606040820152600062005d2260608301846200c107565b600080604083850312156200cd5157600080fd5b6200cd5c836200c77e565b91506200cd6c602084016200c77e565b90509250929050565b818103818111156200453d576200453d6200bff2565b80820281158282048414176200453d576200453d6200bff2565b6000602082840312156200cdb857600080fd5b81516200a1e3816200c3bf565b6000600182016200cdda576200cdda6200bff2565b5060010190565b600080600080600080600080610100898b0312156200cdff57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015191506200ce3b60e08a016200c59d565b90509295985092959890939650565b60006001600160a01b038087168352808616602084015250608060408301526200ce7860808301856200c5cc565b905082606083015295945050505050565b600082516200ce9d8184602087016200c0e1565b9190910192915050565b83815282602082015260606040820152600062005d2260608301846200c107565b60006001600160a01b0380861683528085166020840152506060604083015262005d2260608301846200c107565b8215158152604060208201526000620085bb60408301846200c107565b6001600160e01b03198316815281516000906200cf388160048501602087016200c0e1565b919091016004019392505050565b825160009082906020808701845b838110156200cf72578151855293820193908201906001016200cf54565b5050948252509092019392505050565b600080604083850312156200cf9657600080fd5b825167ffffffffffffffff808211156200cfaf57600080fd5b6200cfbd868387016200ca02565b935060208501519150808211156200cfd457600080fd5b506200cfe3858286016200ca02565b915050925092905056fe608060405234801561001057600080fd5b506127ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806378b253c6116100f9578063c70e8bd411610097578063ea9db9d311610071578063ea9db9d31461052e578063f08e95c614610541578063fdc27257146106d0578063feee3735146106e357600080fd5b8063c70e8bd41461050b578063d826f88f1461051e578063df0ccc481461052657600080fd5b80638187f516116100d35780638187f516146104b8578063a8aa1b31146104e8578063c153f4cd146104fb578063c2fb5a641461050357600080fd5b806378b253c61461030357806379c8ccf7146104925780637a51a4c6146104a557600080fd5b80634e430b5a11610166578063571eed3711610140578063571eed37146102c05780635f9c01b1146102d557806360bed5f3146102dd57806367ddb278146102f057600080fd5b80634e430b5a14610287578063505d90331461029a57806353e8079b146102ad57600080fd5b80631865c57d116101975780631865c57d1461024a5780632aac3e121461025f57806333ad78d11461027257600080fd5b806309fa1f90146101be5780630d4abdb3146101db5780630f146a3e1461021f575b600080fd5b6101c66106f6565b60405190151581526020015b60405180910390f35b6101ee6101e936600461202a565b610705565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101d2565b600f54610232906001600160a01b031681565b6040516001600160a01b0390911681526020016101d2565b61025261072e565b6040516101d29190612093565b601154610232906001600160a01b031681565b610285610280366004612221565b610b04565b005b6101ee610295366004612274565b610b32565b6101ee6102a83660046122a7565b610b7d565b6101ee6102bb3660046122e3565b610ba2565b6102c8610bc9565b6040516101d29190612359565b610232610c57565b6101ee6102eb36600461238c565b610c6b565b6101ee6102fe3660046123ce565b610c92565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526003546001600160801b038082168952600160801b918290048116898801526004548082168a8d01529190910481168886015260055462ffffff8082168a87015263010000009182900483168a8601526006549092169289019290925289518085018b526007548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff90811682870152968801528851918201895260085460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6104a03660046123ce565b610cbf565b6101ee6104b336600461202a565b610cec565b6102856104c6366004612470565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600254610232906001600160a01b031681565b6102c8610d15565b6102c8610d22565b610285610519366004612221565b610d2f565b610285610d57565b6102c8610df8565b6101ee61053c3660046123ce565b610e05565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526009546001600160801b038082168952600160801b91829004811689880152600a548082168a8d015291909104811688860152600b5462ffffff8082168a87015263010000009182900483168a860152600c549092169289019290925289518085018b52600d548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff908116828701529688015288519182018952600e5460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6106de3660046123ce565b610e32565b6101ee6106f13660046122e3565b610e5f565b6000610700610e86565b905090565b600061070f610f13565b61071c8686868686610f47565b50630d4abdb360e01b95945050505050565b6040805161012081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c086018590528651808301885285815280850186905280880186905280840186905260e08701528651908101875284815292830184905294820183905281018290529283015261010081019190915260006107c86002546001600160a01b031690565b9050806001600160a01b0316630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b91906124a2565b6001600160801b039081166020850152168252604080516306c6fe7560e51b815281516001600160a01b0384169263d8dfcea092600480820193918290030181865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a391906124a2565b8360400184606001826001600160801b03166001600160801b0316815250826001600160801b03166001600160801b031681525050506000816001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d91906124e8565b62ffffff1660808401819052604051630157d2d160e31b8152600481018290529091506001600160a01b03831690630abe9688906024016040805180830381865afa158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b491906124a2565b6001600160801b0390811660c08601521660a084015260e083015160408051638d7024e560e01b815290516001600160a01b03851691638d7024e59160048083019260809291908290030181865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a389190612518565b64ffffffffff16606085015262ffffff908116604080860191909152918116602085015291909116825261010085015181516315460a2560e21b8152915190916001600160a01b0386169163551828949160048082019260a0929091908290030181865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad2919061257e565b64ffffffffff908116608087015216606085015261ffff908116604085015216602083015260ff169052509192915050565b600f80546001600160a01b0319166001600160a01b0385161790556010610b2c828483612681565b50505050565b6000610b3c610f13565b610b44610e86565b610b6157604051632def67a360e21b815260040160405180910390fd5b610b6c8484846110fd565b5063272185ad60e11b5b9392505050565b6000610b87610f13565b610b92848484611297565b5063505d903360e01b9392505050565b6000610bac610f13565b610bb88585858561144e565b506353e8079b60e01b949350505050565b60008054610bd690612601565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0290612601565b8015610c4f5780601f10610c2457610100808354040283529160200191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3257829003601f168201915b505050505081565b60006107006002546001600160a01b031690565b6000610c75610f13565b610c818585858561144e565b506360bed5f360e01b949350505050565b6000610c9c610f13565b610cab888888888888886115fc565b50630cfbb64f60e31b979650505050505050565b6000610cc9610f13565b610cd8888888888888886117b6565b506379c8ccf760e01b979650505050505050565b6000610cf6610f13565b610d038686868686611967565b50633d28d26360e11b95945050505050565b60128054610bd690612601565b60018054610bd690612601565b601180546001600160a01b0319166001600160a01b0385161790556012610b2c828483612681565b610d5f611b16565b600060038190556004819055600580546001600160981b0319908116909155600680546001600160801b0319908116909155600780546dffffffffffffffffffffffffffff19908116909155600880546effffffffffffffffffffffffffffff199081169091556009859055600a94909455600b8054909316909255600c80549091169055600d80549091169055600e80549091169055565b60108054610bd690612601565b6000610e0f610f13565b610e1e888888888888886117b6565b5063ea9db9d360e01b979650505050505050565b6000610e3c610f13565b610e4b888888888888886115fc565b5063fdc2725760e01b979650505050505050565b6000610e69610f13565b610e7585858585611b2d565b5063feee373560e01b949350505050565b600080610f02610e9e6002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612741565b90565b6001600160a01b0316301492915050565b6002546001600160a01b03163314610f4557604051634a27038360e01b81523360048201526024015b60405180910390fd5b565b6001600160a01b03851630146110f657610f648585858585611cdb565b610f6c61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611cf0565b5050505050565b611108838383611dc1565b61111061072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055505050565b306001600160a01b038416036112ac57505050565b6112b7838383611dc1565b6112bf61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055611449611cf0565b505050565b6001600160a01b0384163014610b2c5761146a84848484611dce565b61147261072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611ddc565b6001600160a01b03871630146117ad5761161b87878787878787611e2a565b61162361072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611ddc565b50505050505050565b6001600160a01b03871630146117ad576117d587878787878787611e42565b6117dd61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611cf0565b6001600160a01b03851630146110f6576119848585858585611e4f565b61198c61072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611ddc565b611b21600080611f74565b610f4560016000611f74565b6001600160a01b0384163014610b2c57611b4984848484611e5d565b611b5161072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611cf0565b6000611ce8368280612681565b505050505050565b600f546001600160a01b0316611d0257565b600f5460108054611da4926001600160a01b03169190611d2190612601565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4d90612601565b8015611d9a5780601f10611d6f57610100808354040283529160200191611d9a565b820191906000526020600020905b815481529060010190602001808311611d7d57829003601f168201915b5050505050611e6a565b50600f80546001600160a01b0319169055610f4560106000611f74565b6000610b2c368280612681565b60016110f636600083612681565b6011546001600160a01b0316611dee57565b60115460128054611e0d926001600160a01b03169190611d2190612601565b50601180546001600160a01b0319169055610f4560126000611f74565b6001611e3836600083612681565b5050505050505050565b6000611e38368280612681565b6001611ce836600083612681565b60006110f6368280612681565b6060610b768383600084600080856001600160a01b03168486604051611e90919061275a565b60006040518083038185875af1925050503d8060008114611ecd576040519150601f19603f3d011682016040523d82523d6000602084013e611ed2565b606091505b5091509150611ee2868383611eec565b9695505050505050565b606082611f0157611efc82611f48565b610b76565b8151158015611f1857506001600160a01b0384163b155b15611f4157604051639996b31560e01b81526001600160a01b0385166004820152602401610f3c565b5080610b76565b805115611f585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b508054611f8090612601565b6000825580601f10611f90575050565b601f016020900490600052602060002090810190611f7191905b80821115611fbe5760008155600101611faa565b5090565b80356001600160a01b0381168114611fd957600080fd5b919050565b60008083601f840112611ff057600080fd5b50813567ffffffffffffffff81111561200857600080fd5b6020830191508360208260051b850101111561202357600080fd5b9250929050565b60008060008060006080868803121561204257600080fd5b61204b86611fc2565b945061205960208701611fc2565b9350604086013567ffffffffffffffff81111561207557600080fd5b61208188828901611fde565b96999598509660600135949350505050565b81516001600160801b031681526020808301516102008301916120c0908401826001600160801b03169052565b5060408301516120db60408401826001600160801b03169052565b5060608301516120f660608401826001600160801b03169052565b50608083015161210d608084018262ffffff169052565b5060a083015161212860a08401826001600160801b03169052565b5060c083015161214360c08401826001600160801b03169052565b5060e083015161218960e084018262ffffff8082511683528060208301511660208401528060408301511660408401525064ffffffffff60608201511660608301525050565b50610100830151805160ff16610160840152602081015161ffff9081166101808501526040820151166101a0840152606081015164ffffffffff9081166101c08501526080820151166101e08401525092915050565b60008083601f8401126121f157600080fd5b50813567ffffffffffffffff81111561220957600080fd5b60208301915083602082850101111561202357600080fd5b60008060006040848603121561223657600080fd5b61223f84611fc2565b9250602084013567ffffffffffffffff81111561225b57600080fd5b612267868287016121df565b9497909650939450505050565b60008060006040848603121561228957600080fd5b83359250602084013567ffffffffffffffff81111561225b57600080fd5b6000806000606084860312156122bc57600080fd5b6122c584611fc2565b92506122d360208501611fc2565b9150604084013590509250925092565b600080600080608085870312156122f957600080fd5b61230285611fc2565b935061231060208601611fc2565b92506040850135801515811461232557600080fd5b9396929550929360600135925050565b60005b83811015612350578181015183820152602001612338565b50506000910152565b6020815260008251806020840152612378816040850160208701612335565b601f01601f19169190910160400192915050565b600080600080608085870312156123a257600080fd5b6123ab85611fc2565b93506123b960208601611fc2565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156123e957600080fd5b6123f288611fc2565b965061240060208901611fc2565b955061240e60408901611fc2565b9450606088013567ffffffffffffffff8082111561242b57600080fd5b6124378b838c01611fde565b909650945060808a013591508082111561245057600080fd5b5061245d8a828b01611fde565b989b979a50959850939692959293505050565b60006020828403121561248257600080fd5b610b7682611fc2565b80516001600160801b0381168114611fd957600080fd5b600080604083850312156124b557600080fd5b6124be8361248b565b91506124cc6020840161248b565b90509250929050565b805162ffffff81168114611fd957600080fd5b6000602082840312156124fa57600080fd5b610b76826124d5565b805164ffffffffff81168114611fd957600080fd5b6000806000806080858703121561252e57600080fd5b612537856124d5565b9350612545602086016124d5565b9250612553604086016124d5565b915061256160608601612503565b905092959194509250565b805161ffff81168114611fd957600080fd5b600080600080600060a0868803121561259657600080fd5b855160ff811681146125a757600080fd5b94506125b56020870161256c565b93506125c36040870161256c565b92506125d160608701612503565b91506125df60808701612503565b90509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144957600081815260208120601f850160051c810160208610156126625750805b601f850160051c820191505b81811015611ce85782815560010161266e565b67ffffffffffffffff831115612699576126996125eb565b6126ad836126a78354612601565b8361263b565b6000601f8411600181146126e157600085156126c95750838201355b600019600387901b1c1916600186901b1783556110f6565b600083815260209020601f19861690835b8281101561271257868501358255602094850194600190920191016126f2565b508682101561272f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561275357600080fd5b5051919050565b6000825161276c818460208701612335565b919091019291505056fea264697066735822122084a91b1513badbad9b3099de6423677e00cbf57bc74a29781fb273976fe7b35164736f6c63430008140033608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a34746573745f4265666f7265416674657242617463685472616e7366657246726f6d486f6f6b733a3a32746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a33746573745f4265666f7265416674657242617463685472616e7366657246726f6d486f6f6b733a3a31746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a31885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f4265666f72654166746572466c6173684c6f616e486f6f6b733a3a32746573745f4265666f72654166746572466c6173684c6f616e486f6f6b733a3a31746573745f42617463685472616e7366657246726f6d5265656e7472616e63793a3a32a264697066735822122004a223d5a2b249a8a562e1b88a7fd31f9ebfb42037afa8f2eab6a5211eee3c1364736f6c63430008140033","sourceMap":"755:21192:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12867:7;;12885:11;;12854:98;;-1:-1:-1;;;;;12867:7:86;;;;12885:11;12941:10;883:6;12941:1;:10;:::i;:::-;12899:7;;12925:11;;12899:39;;-1:-1:-1;;;12899:39:86;;-1:-1:-1;;;;;12925:11:86;;;12899:39;;;571:74:105;-1:-1:-1;;;;;12899:52:86;;;;;:7;;;:17;;544:18:105;;12899:39:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;;:::i;:::-;12854:4;:98::i;:::-;12975:4;;12990:11;;12962:92;;-1:-1:-1;;;;;12975:4:86;;;;12990:11;13043:10;883:6;13043:1;:10;:::i;:::-;13004:4;;13027:11;;13004:36;;-1:-1:-1;;;13004:36:86;;-1:-1:-1;;;;;13027:11:86;;;13004:36;;;571:74:105;-1:-1:-1;;;;;13004:49:86;;;;;:4;;;:14;;544:18:105;;13004:36:86;425:226:105;12962:92:86;933:31:64;13065:24:86;13151:27;;;13201:2;;13191:13;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;1431:14:105;;1424:22;1406:41;;1394:2;1379:18;5626:149:93;;;;;;;;9454:1643:86;;;:::i;:::-;;896:952;;;:::i;17410:1703::-;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;20574:1371:86:-;;;:::i;14930:801::-;;;:::i;3221:133:5:-;;;:::i;2981:1642:86:-;;;:::i;2922:141:5:-;;;:::i;4629:1640:86:-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;5095:25:105;;;5083:2;5068:18;12046:168:93;4949:177:105;15737:1667:86;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;19119:1449:86:-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;8287:8:105;8275:21;;;8257:40;;8245:2;8230:18;12220:205:93;8113:190:105;1854:1121:86;;;:::i;3069:146:5:-;;;:::i;6275:1429:86:-;;;:::i;11103:1715::-;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;7710:1738:86:-;;;:::i;1243:204:1:-;;;:::i;2304:142:5:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;:::-;26935:117;;;:::o;9454:1643:86:-;9526:11;;:25;;;-1:-1:-1;;;9526:25:86;;;;9508:15;;-1:-1:-1;;;;;9526:11:86;;:23;;:25;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9598:16;;;9612:1;9598:16;;;;;;;;;9508:43;;-1:-1:-1;9562:33:86;;9598:16;;;;;;;;;;;;-1:-1:-1;9598:16:86;9562:52;;9646:58;9683:4;9689;9695:8;9646:36;:58::i;:::-;9624:16;9641:1;9624:19;;;;;;;;:::i;:::-;;;;;;;;;;:80;9728:7;;9715:37;;-1:-1:-1;;;;;9728:7:86;9738:5;883:6;9715:4;:37::i;:::-;9775:4;;9762:34;;-1:-1:-1;;;;;9775:4:86;9782:5;883:6;9762:4;:34::i;:::-;9807:20;;-1:-1:-1;;;9807:20:86;;-1:-1:-1;;;;;9821:5:86;589:55:105;9807:20:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;9807:13:86;;;544:18:105;;9807:20:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9837:7:86;;9862:11;;9837:46;;-1:-1:-1;;;9837:46:86;;-1:-1:-1;;;;;9862:11:86;;;9837:46;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;9837:7:86;;;-1:-1:-1;9837:16:86;;-1:-1:-1;12023:18:105;;9837:46:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9893:4:86;;9915:11;;9893:43;;-1:-1:-1;;;9893:43:86;;-1:-1:-1;;;;;9915:11:86;;;9893:43;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;9893:4:86;;;:13;;12023:18:105;;9893:43:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9946:11:86;;:48;;-1:-1:-1;;;9946:48:86;;-1:-1:-1;;;;;9946:11:86;;;;:16;;:48;;9963:5;;9970:16;;9963:5;;9946:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9946:48:86;;;;;;;;;;;;:::i;:::-;;;;10005:32;10040:5;;;;;;;;;-1:-1:-1;;;;;10040:5:86;-1:-1:-1;;;;;10040:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10090;;;10104:1;10090:16;;;;;;;;;10005:51;;-1:-1:-1;10067:20:86;;10090:16;;;;;;;;;;;;-1:-1:-1;10090:16:86;10067:39;;10125:8;10116:17;;:3;10120:1;10116:6;;;;;;;;:::i;:::-;;;;;;;;;;:17;10177:16;;;10191:1;10177:16;;;;;;;;;10144:30;;10177:16;;;;;;;;;;;;-1:-1:-1;10177:16:86;10144:49;;883:6;-1:-1:-1;;;;;10203:25:86;:13;10217:1;10203:16;;;;;;;;:::i;:::-;;;;;;;;;;:25;10239:11;;:50;;-1:-1:-1;;;10239:50:86;;-1:-1:-1;;;;;10239:11:86;;;;:16;;:50;;10256:5;;;;10270:3;;10275:13;;10239:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10239:50:86;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;10299:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10324:31;10358:5;;;;;;;;;-1:-1:-1;;;;;10358:5:86;-1:-1:-1;;;;;10358:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10324:50;;10385:223;10417:5;;;;;;;;;-1:-1:-1;;;;;10417:5:86;-1:-1:-1;;;;;10417:16:86;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10417:18:86;;;;;;;;;;;;:::i;:::-;10407:29;;;;;;10483:28;;;10513:5;10520;10527;10534:3;10539:13;10460:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;10460:93:86;;;;;;;-1:-1:-1;;;;;10460:93:86;;;;;;;;;;;10450:104;;;;;;10385:223;;;;;;;;;;;;;;;;;:8;:223::i;:::-;10651:5;;:17;;;-1:-1:-1;;;10651:17:86;;;;10619:221;;-1:-1:-1;;;;;10651:5:86;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10651:17:86;;;;;;;;;;;;:::i;:::-;10641:28;;;;;;10716:27;;;10745:5;10752;10759;10766:3;10771:13;10693:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;10693:92:86;;;;;;;-1:-1:-1;;;;;10693:92:86;;;;;;;;;;;10683:103;;;;;;10619:221;;;;;;;;;;;;;;;;;:8;:221::i;:::-;10883:5;;:22;;;-1:-1:-1;;;10883:22:86;;;;10851:29;;-1:-1:-1;;;;;10883:5:86;;:20;;:22;;;;;;;;;;;;;;:5;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10851:54;;10915:28;10946:5;;;;;;;;;-1:-1:-1;;;;;10946:5:86;-1:-1:-1;;;;;10946:19:86;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10915:52;;10978;10992:16;11010:19;10978:13;:52::i;:::-;11040:50;11054:15;11071:18;11040:13;:50::i;:::-;9498:1599;;;;;;;;9454:1643::o;896:952::-;939:13;:11;:13::i;:::-;990:7;;999:4;;977:27;;-1:-1:-1;;;;;990:7:86;;;;999:4;977:12;:27::i;:::-;963:11;:41;;-1:-1:-1;;;;;;963:41:86;-1:-1:-1;;;;;963:41:86;;;;;;;;;1015:63;;1028:3;;;;992:7:93;1059:4:86;;1071:2;;1015:12;:63::i;:::-;1097:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1089:5:86;:25;;-1:-1:-1;;;;;;1089:25:86;-1:-1:-1;;;;;1089:25:86;;;;;;;;;1146:11;;1124:35;;-1:-1:-1;;;1124:35:86;;1146:11;;1124:35;;;571:74:105;1089:25:86;1124:13;;544:18:105;;1124:35:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1170:7:86;;1188:31;;;-1:-1:-1;;;1188:31:86;;;;-1:-1:-1;;;;;1170:7:86;;;;-1:-1:-1;1170:17:86;;-1:-1:-1;1170:7:86;;1188:29;;:31;;;;;;;;;;;;;;;1170:7;1188:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1170:65;;-1:-1:-1;;;;;;1170:65:86;;;;;;;;;;22094:25:105;;;;1229:4:86;22135:18:105;;;22128:83;22067:18;;1170:65:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1283:394:86;;;;;;;;1329:5;;-1:-1:-1;;;;;1329:5:86;;;1283:394;;1329:5;1283:394;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1329:5;1283:394;;;;;;;;;;;;;;;;;;1688:7;;1723;;1732:4;;1283:394;;-1:-1:-1;1688:7:86;;;;-1:-1:-1;1688:34:86;;1723:7;;;;1732:4;1147:2:93;1756:24:86;1283:394;1756:12;:24::i;:::-;1782:12;;;1792:1;1782:12;;;;;;;;;-1:-1:-1;;;;;;1688:107:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1806:11:86;;:35;;-1:-1:-1;;;1806:35:86;;:11;:35;;;23011:38:105;-1:-1:-1;;;;;1806:11:86;;;;-1:-1:-1;1806:32:86;;-1:-1:-1;22984:18:105;;1806:35:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;929:919;896:952::o;17410:1703::-;17494:16;;;17508:1;17494:16;;;;;;;;;17458:33;;17494:16;;;;;;;;;;;-1:-1:-1;17494:16:86;17458:52;;17542:61;17579:6;17587;17595:7;17542:36;:61::i;:::-;17520:16;17537:1;17520:19;;;;;;;;:::i;:::-;;;;;;;;;;:83;17614:5;;17651:11;;17665:77;;-1:-1:-1;;;;;17614:5:86;;;;:15;;17651:11;;-1:-1:-1;;;17688:21:86;17665:77;;17711:5;;17718:16;;17711:5;;17665:77;;;:::i;:::-;;;;-1:-1:-1;;17665:77:86;;;;;;;;;;;;;;-1:-1:-1;;;;;17665:77:86;-1:-1:-1;;;;;;17665:77:86;;;;;;17614:138;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17763:81:86;;-1:-1:-1;;;17763:81:86;;-1:-1:-1;;;17763:81:86;;;24066:52:105;-1:-1:-1;;;;;;;;;;;17763:15:86;-1:-1:-1;17763:15:86;;-1:-1:-1;24039:18:105;;17763:81:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17854:15:86;;-1:-1:-1;;;17854:15:86;;-1:-1:-1;;;;;17863:5:86;589:55:105;17854:15:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;17854:8:86;-1:-1:-1;17854:8:86;;-1:-1:-1;544:18:105;;17854:15:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17879:11:86;;:48;;-1:-1:-1;;;17879:48:86;;-1:-1:-1;;;;;17879:11:86;;;;-1:-1:-1;17879:16:86;;-1:-1:-1;17879:48:86;;17896:5;;17903:16;;17896:5;;17879:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17879:48:86;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;17938:5:86;;17966:12;;;17938:5;17966:12;;;;;;;;;;-1:-1:-1;;;17938:41:86;;;-1:-1:-1;;;;;17938:5:86;;;;-1:-1:-1;17938:15:86;;:41;;:5;:41;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17990:5:86;;18026:11;;18040:77;;-1:-1:-1;;;;;17990:5:86;;;;-1:-1:-1;17990:14:86;;-1:-1:-1;18026:11:86;;;-1:-1:-1;;;18063:21:86;18040:77;;18086:5;;18093:16;;18086:5;;18040:77;;;:::i;:::-;;;;-1:-1:-1;;18040:77:86;;;;;;;;;;;;;;-1:-1:-1;;;;;18040:77:86;-1:-1:-1;;;;;;18040:77:86;;;;;;17990:137;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18169:7:86;;18195:11;;18169:39;;-1:-1:-1;;;18169:39:86;;-1:-1:-1;;;;;18195:11:86;;;18169:39;;;571:74:105;18138:28:86;;-1:-1:-1;18169:7:86;;;-1:-1:-1;18169:17:86;;544:18:105;;18169:39:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18246:4;;18269:11;;18246:36;;-1:-1:-1;;;18246:36:86;;-1:-1:-1;;;;;18269:11:86;;;18246:36;;;571:74:105;18138:70:86;;-1:-1:-1;18218:25:86;;18246:4;;;:14;;544:18:105;;18246:36:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18306:7;;18324:11;;18338:39;;-1:-1:-1;;;18338:39:86;;-1:-1:-1;;;;;18324:11:86;;;18338:39;;;571:74:105;;;18218:64:86;;-1:-1:-1;18293:94:86;;18306:7;;;;;883:6;;18306:7;;18338:17;;544:18:105;;18338:39:86;425:226:105;18293:94:86;18410:4;;18425:11;;18439:36;;-1:-1:-1;;;18439:36:86;;-1:-1:-1;;;;;18425:11:86;;;18439:36;;;571:74:105;;;18397:88:86;;18410:4;;;;;18425:11;883:6;;18410:4;;18439:14;;544:18:105;;18439:36:86;425:226:105;18397:88:86;18496:15;;-1:-1:-1;;;18496:15:86;;-1:-1:-1;;;;;18505:5:86;589:55:105;18496:15:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;18496:8:86;;;544:18:105;;18496:15:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18521:11:86;;:63;;-1:-1:-1;;;18521:63:86;;-1:-1:-1;;;;;18521:11:86;;;;-1:-1:-1;18521:16:86;;-1:-1:-1;18521:63:86;;18538:5;;18545:16;;18521:11;;:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18521:63:86;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;18692:7:86;;18718:11;;18692:39;;-1:-1:-1;;;18692:39:86;;-1:-1:-1;;;;;18718:11:86;;;18692:39;;;571:74:105;18670:139:86;;-1:-1:-1;18692:7:86;;;:17;;544:18:105;;18692:39:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18770:3;18756:11;883:6;18756:2;:11;:::i;:::-;:17;;;;:::i;:::-;18733:40;;-1:-1:-1;;;;;18733:40:86;:20;:40;:::i;:::-;18670:139;;;;;;;;;;;;;;;;;:8;:139::i;:::-;18828:4;;18851:11;;18828:36;;-1:-1:-1;;;18828:36:86;;-1:-1:-1;;;;;18851:11:86;;;18828:36;;;571:74:105;18819:111:86;;18828:4;;;;;:14;;544:18:105;;18828:36:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18900:3;18886:11;883:6;18886:2;:11;:::i;:::-;:17;;;;:::i;:::-;18866:37;;-1:-1:-1;;;;;18866:37:86;:17;:37;:::i;:::-;18819:111;;;;;;;;;;;;;;;;;:8;:111::i;:::-;18950:7;;:24;;-1:-1:-1;;;18950:24:86;;-1:-1:-1;;;;;18968:5:86;589:55:105;;18950:24:86;;;571:74:105;18941:79:86;;18950:7;;:17;;544:18:105;;18950:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18990:3;18976:11;883:6;18976:2;:11;:::i;:::-;:17;;;;:::i;:::-;-1:-1:-1;;;;;18941:79:86;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;19039:4;;:21;;-1:-1:-1;;;19039:21:86;;-1:-1:-1;;;;;19054:5:86;589:55:105;;19039:21:86;;;571:74:105;19030:76:86;;19039:4;;:14;;544:18:105;;19039:21:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19076:3;19062:11;883:6;19062:2;:11;:::i;:::-;:17;;;;:::i;:::-;-1:-1:-1;;;;;19030:76:86;;;;;;;;;;;;;;;;;;:8;:76::i;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;20574:1371:86:-;20658:16;;;20672:1;20658:16;;;;;;;;;20635:20;;20658:16;;;;;;;;;-1:-1:-1;;20693:11:86;;:25;;;-1:-1:-1;;;20693:25:86;;;;20635:39;;-1:-1:-1;;;;;;20693:11:86;;;;:23;;-1:-1:-1;20693:25:86;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20684:34;;:3;20688:1;20684:6;;;;;;;;:::i;:::-;;;;;;;;;;:34;20756:16;;;20770:1;20756:16;;;;;;;;;20729:24;;20756:16;;;;;;;;;;-1:-1:-1;;20795:11:86;;20822:6;;20729:43;;-1:-1:-1;20832:1:86;;-1:-1:-1;;;;;20795:11:86;;;;-1:-1:-1;20795:21:86;;20817:3;;20822;;20795:11;;20822:6;;;;:::i;:::-;;;;;;;20795:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;20795:34:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;;;:::i;:::-;20782:7;20790:1;20782:10;;;;;;;;:::i;:::-;;;;;;;;;;:51;20844:13;;-1:-1:-1;;;20844:13:86;;-1:-1:-1;;;;;20853:3:86;589:55:105;20844:13:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;20844:8:86;;;544:18:105;;20844:13:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20867:11:86;;20901:5;;20867:47;;-1:-1:-1;;;20867:47:86;;-1:-1:-1;;;;;20901:5:86;;;20867:47;;;25965:74:105;20867:11:86;26055:18:105;;;26048:50;20867:11:86;;;-1:-1:-1;20867:25:86;;-1:-1:-1;25938:18:105;;20867:47:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20925:5:86;;20962:11;;20976:85;;-1:-1:-1;;;;;20925:5:86;;;;-1:-1:-1;20925:15:86;;-1:-1:-1;20962:11:86;;;-1:-1:-1;;;20999:35:86;20976:85;;21036:3;;21041:5;;21048:3;;21053:7;;20976:85;;;:::i;:::-;;;;-1:-1:-1;;20976:85:86;;;;;;;;;;;;;;-1:-1:-1;;;;;20976:85:86;-1:-1:-1;;;;;;20976:85:86;;;;;;20925:146;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21082:81:86;;-1:-1:-1;;;21082:81:86;;-1:-1:-1;;;21082:81:86;;;24066:52:105;-1:-1:-1;;;;;;;;;;;21082:15:86;-1:-1:-1;21082:15:86;;-1:-1:-1;24039:18:105;;21082:81:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21173:13:86;;-1:-1:-1;;;21173:13:86;;-1:-1:-1;;;;;21182:3:86;589:55:105;21173:13:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;21173:8:86;-1:-1:-1;21173:8:86;;-1:-1:-1;544:18:105;;21173:13:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21196:11:86;;:55;;-1:-1:-1;;;21196:55:86;;-1:-1:-1;;;;;21196:11:86;;;;-1:-1:-1;21196:29:86;;-1:-1:-1;21196:55:86;;21226:3;;21231:5;;21238:3;;21243:7;;21196:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21262:5:86;;21290:12;;;21262:5;21290:12;;;;;;;;;;-1:-1:-1;;;21262:41:86;;;-1:-1:-1;;;;;21262:5:86;;;;-1:-1:-1;21262:15:86;;-1:-1:-1;21262:41:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21314:5:86;;21350:11;;21364:85;;-1:-1:-1;;;;;21314:5:86;;;;-1:-1:-1;21314:14:86;;-1:-1:-1;21350:11:86;;;-1:-1:-1;;;21387:35:86;21364:85;;21424:3;;21429:5;;21436:3;;21441:7;;21364:85;;;:::i;:::-;;;;-1:-1:-1;;21364:85:86;;;;;;;;;;;;;;-1:-1:-1;;;;;21364:85:86;-1:-1:-1;;;;;;21364:85:86;;;;;;21314:145;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21479:11:86;;21508:6;;21470:88;;-1:-1:-1;;;;;;21479:11:86;;;;-1:-1:-1;21479:21:86;;21501:5;;21508:3;;21479:11;;21508:6;;;;:::i;:::-;;;;;;;21479:36;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;21479:36:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21517:1;21470:88;;;;;;;;;;;;;;;;;:8;:88::i;:::-;21577:11;;21604:6;;21568:86;;-1:-1:-1;;;;;21577:11:86;;:21;;21599:3;;21604;;21577:11;;21604:6;;;;:::i;:::-;;;;;;;21577:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;21577:34:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21613:1;21568:86;;;;;;;;;;;;;;;;;:8;:86::i;:::-;21665:13;;-1:-1:-1;;;21665:13:86;;-1:-1:-1;;;;;21674:3:86;589:55:105;21665:13:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;21665:8:86;;;544:18:105;;21665:13:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21688:11:86;;:55;;-1:-1:-1;;;21688:55:86;;-1:-1:-1;;;;;21688:11:86;;;;-1:-1:-1;21688:29:86;;-1:-1:-1;21688:55:86;;21718:3;;21723:5;;21730:3;;21735:7;;21688:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21763:11:86;;21792:6;;21754:88;;-1:-1:-1;;;;;;21763:11:86;;;;-1:-1:-1;21763:21:86;;21785:5;;21792:3;;21763:11;;21792:6;;;;:::i;:::-;;;;;;;21763:36;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;21763:36:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21801:1;21754:88;;;;;;;;;;;;;;;;;:8;:88::i;:::-;21861:11;;21888:6;;21852:86;;-1:-1:-1;;;;;21861:11:86;;:21;;21883:3;;21888;;21861:11;;21888:6;;;;:::i;:::-;;;;;;;21861:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;21861:34:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21897:1;21852:86;;;;;;;;;;;;;;;;;:8;:86::i;:::-;20625:1320;;20574:1371::o;14930:801::-;14991:7;;15009:11;;15023:39;;-1:-1:-1;;;15023:39:86;;-1:-1:-1;;;;;15009:11:86;;;15023:39;;;571:74:105;;;14978:94:86;;14991:7;;;;;15009:11;883:6;;14991:7;;15023:17;;544:18:105;;15023:39:86;425:226:105;14978:94:86;15083:5;;15107:11;;15121:58;;;15083:5;15121:58;;;27018:41:105;15173:5:86;-1:-1:-1;;;;;27095:55:105;;;27075:18;;;;27068:83;;;;15121:58:86;;;;;;;;;;26991:18:105;;;;15121:58:86;;;;;;;-1:-1:-1;;;;;15121:58:86;-1:-1:-1;;;15121:58:86;;;15083:97;;-1:-1:-1;;;15083:97:86;;:5;;;;:15;;:97;;15107:11;;15121:58;15083:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15191:81:86;;-1:-1:-1;;;15191:81:86;;-1:-1:-1;;;15191:81:86;;;24066:52:105;-1:-1:-1;;;;;;;;;;;15191:15:86;-1:-1:-1;15191:15:86;;-1:-1:-1;24039:18:105;;15191:81:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15282:15:86;;-1:-1:-1;;;15282:15:86;;-1:-1:-1;;;;;15291:5:86;589:55:105;15282:15:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;15282:8:86;-1:-1:-1;15282:8:86;;-1:-1:-1;544:18:105;;15282:15:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15307:11:86;;:29;;-1:-1:-1;;;15307:29:86;;:11;:29;;;27018:41:105;-1:-1:-1;;;;;15330:5:86;27095:55:105;;27075:18;;;27068:83;15307:11:86;;;;-1:-1:-1;15307:16:86;;-1:-1:-1;26991:18:105;;15307:29:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15347:5:86;;15375:12;;;15347:5;15375:12;;;;;;;;;;-1:-1:-1;;;15347:41:86;;;-1:-1:-1;;;;;15347:5:86;;;;:15;;:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15399:5:86;;15422:11;;15436:59;;;15399:5;15436:59;;;27018:41:105;15489:5:86;-1:-1:-1;;;;;27095:55:105;;;27075:18;;;;27068:83;;;;15436:59:86;;;;;;;;;;26991:18:105;;;;15436:59:86;;;;;;;-1:-1:-1;;;;;15436:59:86;-1:-1:-1;;;15436:59:86;;;15399:97;;-1:-1:-1;;;15399:97:86;;:5;;;;-1:-1:-1;15399:14:86;;-1:-1:-1;15399:97:86;;15422:11;;;;;15436:59;15399:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15516:7:86;;:24;;-1:-1:-1;;;15516:24:86;;-1:-1:-1;;;;;15534:5:86;589:55:105;;15516:24:86;;;571:74:105;15507:63:86;;-1:-1:-1;15516:7:86;;;;-1:-1:-1;15516:17:86;;544:18:105;;15516:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15542:1;15507:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;15581:15;;-1:-1:-1;;;15581:15:86;;-1:-1:-1;;;;;15590:5:86;589:55:105;15581:15:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;15581:8:86;;;544:18:105;;15581:15:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15606:11:86;;:44;;-1:-1:-1;;;15606:44:86;;:11;:44;;;27018:41:105;-1:-1:-1;;;;;15606:11:86;;;27075:18:105;;;27068:83;;;15606:11:86;-1:-1:-1;15606:16:86;;-1:-1:-1;26991:18:105;;15606:44:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15670:7:86;;:24;;-1:-1:-1;;;15670:24:86;;-1:-1:-1;;;;;15688:5:86;589:55:105;;15670:24:86;;;571:74:105;15661:63:86;;15670:7;;:17;;544:18:105;;15670:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15696:1;15661:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;14930:801::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2981:1642:86:-;3082:11;;:36;;-1:-1:-1;;;3082:36:86;;883:6;3082:36;;;27962:66:105;3082:11:86;28044:18:105;;;28037:50;3040:18:86;;;;-1:-1:-1;;;;;3082:11:86;;;;:22;;27935:18:105;;3082:36:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3129:24:86;;-1:-1:-1;;;3129:24:86;;-1:-1:-1;;;;;3139:13:86;;;;3129:24;;;1406:41:105;3039:79:86;;-1:-1:-1;3039:79:86;-1:-1:-1;;;;;;;;;;;;3129:9:86;;;1379:18:105;;3129:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3164:59;3173:10;-1:-1:-1;;;;;3164:59:86;3185:1;3164:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;3247:7;;3234:37;;-1:-1:-1;;;;;3247:7:86;3257:5;883:6;3234:4;:37::i;:::-;3317:5;;:16;;;-1:-1:-1;;;3317:16:86;;;;3282:32;;-1:-1:-1;;;;;3317:5:86;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3344:20;;-1:-1:-1;;;3344:20:86;;-1:-1:-1;;;;;3358:5:86;589:55:105;3344:20:86;;;571:74:105;3282:51:86;;-1:-1:-1;;;;;;;;;;;;3344:13:86;;;544:18:105;;3344:20:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3374:7:86;;3399:11;;3374:46;;-1:-1:-1;;;3374:46:86;;-1:-1:-1;;;;;3399:11:86;;;3374:46;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;3374:7:86;;;-1:-1:-1;3374:16:86;;-1:-1:-1;12023:18:105;;3374:46:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3430:11:86;;:29;;-1:-1:-1;;;3430:29:86;;:11;:29;;;27018:41:105;-1:-1:-1;;;;;3453:5:86;27095:55:105;;27075:18;;;27068:83;3430:11:86;;;;:16;;26991:18:105;;3430:29:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;3469:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3494:31;3528:5;;;;;;;;;-1:-1:-1;;;;;3528:5:86;-1:-1:-1;;;;;3528:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3564:7;;:24;;-1:-1:-1;;;3564:24:86;;-1:-1:-1;;;;;3582:5:86;589:55:105;;3564:24:86;;;571:74:105;3494:50:86;;-1:-1:-1;3555:73:86;;3564:7;;;;:17;;544:18:105;;3564:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3590:1;3555:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;3647:4;;:21;;-1:-1:-1;;;3647:21:86;;-1:-1:-1;;;;;3662:5:86;589:55:105;;3647:21:86;;;571:74:105;3638:78:86;;3647:4;;:14;;544:18:105;;3647:21:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3670:9;-1:-1:-1;;;;;3638:78:86;;;;;;;;;;;;;;;;;;:8;:78::i;:::-;3759:5;;:18;;;-1:-1:-1;;;3759:18:86;;;;3727:313;;-1:-1:-1;;;;;3759:5:86;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3759:18:86;;;;;;;;;;;;:::i;:::-;3749:29;;;;;;;3819:149;;;-1:-1:-1;;;;;3893:5:86;28817:15:105;3819:149:86;;;28799:34:105;;;28849:18;;;28842:43;3907:4:86;28901:18:105;;;28894:50;883:6:86;28960:18:105;;;;28953:34;;;;3819:149:86;;;;;;;;;;28710:19:105;;;;3819:149:86;;;;;;;-1:-1:-1;;;;;3819:149:86;-1:-1:-1;;;3819:149:86;;;3792:190;;;;3727:313;;;;;;;;;;;;;;;;;;;3749:29;;3792:190;3727:8;:313::i;:::-;4083:5;;:17;;;-1:-1:-1;;;4083:17:86;;;;4051:315;;-1:-1:-1;;;;;4083:5:86;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4083:17:86;;;;;;;;;;;;:::i;:::-;4073:28;;;;;;;-1:-1:-1;;;4215:5:86;;4229:4;4235:41;4266:9;1778:6:77;1774:15;;1668:137;4235:41:86;4142:152;;-1:-1:-1;;;;;28817:15:105;;;4142:152:86;;;28799:34:105;28869:15;;;;28849:18;;;28842:43;28928:14;28921:22;28901:18;;;28894:50;28960:18;;;28953:34;28710:19;;4142:152:86;;;;;;;;;;;;;-1:-1:-1;;;;;4142:152:86;;;;;;;-1:-1:-1;;;;;4142:152:86;;;;;;;;;;;4115:193;;;;;;4051:315;;;;;;;;;;;;;;;;;:8;:315::i;:::-;4409:5;;:22;;;-1:-1:-1;;;4409:22:86;;;;4377:29;;-1:-1:-1;;;;;4409:5:86;;:20;;:22;;;;;;;;;;;;;;:5;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4377:54;;4441:28;4472:5;;;;;;;;;-1:-1:-1;;;;;4472:5:86;-1:-1:-1;;;;;4472:19:86;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4441:52;;4504;4518:16;4536:19;4504:13;:52::i;:::-;4566:50;4580:15;4597:18;4566:13;:50::i;:::-;3029:1594;;;;;;2981:1642::o;2922:141:5:-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;4629:1640:86:-;4730:11;;:37;;-1:-1:-1;;;4730:37:86;;883:6;4730:37;;;27962:66:105;4688:18:86;28044::105;;;28037:50;;;4688:18:86;;;-1:-1:-1;;;;;4730:11:86;;;;:22;;27935:18:105;;4730:37:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4778:24:86;;-1:-1:-1;;;4778:24:86;;-1:-1:-1;;;;;4788:13:86;;;;4778:24;;;1406:41:105;4687:80:86;;-1:-1:-1;4687:80:86;-1:-1:-1;;;;;;;;;;;;4778:9:86;;;1379:18:105;;4778:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4813:59;4822:10;-1:-1:-1;;;;;4813:59:86;4834:1;4813:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;4896:4;;4883:34;;-1:-1:-1;;;;;4896:4:86;4903:5;883:6;4883:4;:34::i;:::-;4963:5;;:16;;;-1:-1:-1;;;4963:16:86;;;;4928:32;;-1:-1:-1;;;;;4963:5:86;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4990:20;;-1:-1:-1;;;4990:20:86;;-1:-1:-1;;;;;5004:5:86;589:55:105;4990:20:86;;;571:74:105;4928:51:86;;-1:-1:-1;;;;;;;;;;;;4990:13:86;;;544:18:105;;4990:20:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5020:4:86;;5042:11;;5020:43;;-1:-1:-1;;;5020:43:86;;-1:-1:-1;;;;;5042:11:86;;;5020:43;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;5020:4:86;;;-1:-1:-1;5020:13:86;;-1:-1:-1;12023:18:105;;5020:43:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5073:11:86;;:30;;-1:-1:-1;;;5073:30:86;;:11;:30;;;27018:41:105;-1:-1:-1;;;;;5097:5:86;27095:55:105;;27075:18;;;27068:83;5073:11:86;;;;:16;;26991:18:105;;5073:30:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;5113:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5138:31;5172:5;;;;;;;;;-1:-1:-1;;;;;5172:5:86;-1:-1:-1;;;;;5172:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5208:4;;:21;;-1:-1:-1;;;5208:21:86;;-1:-1:-1;;;;;5223:5:86;589:55:105;;5208:21:86;;;571:74:105;5138:50:86;;-1:-1:-1;5199:70:86;;5208:4;;;;:14;;544:18:105;;5208:21:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5231:1;5199:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;5288:7;;:24;;-1:-1:-1;;;5288:24:86;;-1:-1:-1;;;;;5306:5:86;589:55:105;;5288:24:86;;;571:74:105;5279:81:86;;5288:7;;:17;;544:18:105;;5288:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5314:9;-1:-1:-1;;;;;5279:81:86;;;;;;;;;;;;;;;;;;:8;:81::i;:::-;5403:5;;:18;;;-1:-1:-1;;;5403:18:86;;;;5371:315;;-1:-1:-1;;;;;5403:5:86;;:16;;:18;;;;;:5;;:18;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5403:18:86;;;;;;;;;;;;:::i;:::-;5393:29;;;;;;;5463:151;;;-1:-1:-1;;;;;5537:5:86;28817:15:105;5463:151:86;;;28799:34:105;;;28849:18;;;28842:43;5551:5:86;28901:18:105;;;28894:50;1774:15:77;28960:18:105;;;;28953:34;;;;5463:151:86;;;;;;;;;;28710:19:105;;;;5463:151:86;;;;;;;-1:-1:-1;;;;;5463:151:86;-1:-1:-1;;;5463:151:86;;;5436:192;;;;5371:315;;;;;;;;;;;;;;;;;;;5393:29;;5436:192;5371:8;:315::i;:::-;5729:5;;:17;;;-1:-1:-1;;;5729:17:86;;;;5697:315;;-1:-1:-1;;;;;5729:5:86;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5729:17:86;;;;;;;;;;;;:::i;:::-;5719:28;;;;;;;5788:152;;;-1:-1:-1;;;;;5861:5:86;28817:15:105;5788:152:86;;;28799:34:105;;;28849:18;;;28842:43;5875:5:86;28901:18:105;;;28894:50;-1:-1:-1;;;;;1414:17:77;;28960:18:105;;;;28953:34;;;;5788:152:86;;;;;;;;;;28710:19:105;;;;5788:152:86;;;;;;;-1:-1:-1;;;;;5788:152:86;-1:-1:-1;;;5788:152:86;;;5761:193;;;;5697:315;;;;;;;;;;;;;;;;;;;5719:28;;5761:193;5697:8;:315::i;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;15737:1667:86:-;15790:5;;15827:11;;15978:12;;;15988:1;15978:12;;;;;;;;-1:-1:-1;;;;;15790:5:86;;;;:15;;15827:11;;-1:-1:-1;;;15893:26:86;15853:151;;15929:4;;1035:38:77;;15853:151:86;;;;:::i;:::-;;;;-1:-1:-1;;15853:151:86;;;;;;;;;;;;;;-1:-1:-1;;;;;15853:151:86;-1:-1:-1;;;;;;15853:151:86;;;;;;15790:224;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16025:81:86;;-1:-1:-1;;;16025:81:86;;-1:-1:-1;;;16025:81:86;;;24066:52:105;-1:-1:-1;;;;;;;;;;;16025:15:86;-1:-1:-1;16025:15:86;;-1:-1:-1;24039:18:105;;16025:81:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16116:15:86;;-1:-1:-1;;;16116:15:86;;-1:-1:-1;;;;;16125:5:86;589:55:105;16116:15:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;16116:8:86;-1:-1:-1;16116:8:86;;-1:-1:-1;544:18:105;;16116:15:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16141:11:86;;16255:12;;;16265:1;16255:12;;;;;;;;;-1:-1:-1;;;16141:136:86;;;-1:-1:-1;;;;;16141:11:86;;;;-1:-1:-1;16141:21:86;;-1:-1:-1;16141:136:86;;16205:4;;1035:38:77;;16141:136:86;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16288:5:86;;16316:12;;;16288:5;16316:12;;;;;;;;;;-1:-1:-1;;;16288:41:86;;;-1:-1:-1;;;;;16288:5:86;;;;-1:-1:-1;16288:15:86;;-1:-1:-1;16288:41:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16340:5:86;;16376:11;;16527:12;;;16537:1;16527:12;;;;;;;;-1:-1:-1;;;;;16340:5:86;;;;-1:-1:-1;16340:14:86;;-1:-1:-1;16376:11:86;;;-1:-1:-1;;;16442:26:86;16402:151;;16478:4;;1035:38:77;;16402:151:86;;;;:::i;:::-;;;;-1:-1:-1;;16402:151:86;;;;;;;;;;;;;;-1:-1:-1;;;;;16402:151:86;-1:-1:-1;;;;;;16402:151:86;;;;;;16340:223;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16605:7:86;;16631:11;;16605:39;;-1:-1:-1;;;16605:39:86;;-1:-1:-1;;;;;16631:11:86;;;16605:39;;;571:74:105;16574:28:86;;-1:-1:-1;16605:7:86;;;-1:-1:-1;16605:17:86;;544:18:105;;16605:39:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16682:4;;16705:11;;16682:36;;-1:-1:-1;;;16682:36:86;;-1:-1:-1;;;;;16705:11:86;;;16682:36;;;571:74:105;16574:70:86;;-1:-1:-1;16654:25:86;;16682:4;;;:14;;544:18:105;;16682:36:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16729:15;;-1:-1:-1;;;16729:15:86;;-1:-1:-1;;;;;16738:5:86;589:55:105;16729:15:86;;;571:74:105;16654:64:86;;-1:-1:-1;;;;;;;;;;;;16729:8:86;;;544:18:105;;16729:15:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16754:11:86;;16868:12;;;16878:1;16868:12;;;;;;;;;-1:-1:-1;;;16754:136:86;;;-1:-1:-1;;;;;16754:11:86;;;;-1:-1:-1;16754:21:86;;-1:-1:-1;16754:136:86;;16818:4;;1035:38:77;;16754:136:86;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16975:7:86;;17001:11;;16975:39;;-1:-1:-1;;;16975:39:86;;-1:-1:-1;;;;;17001:11:86;;;16975:39;;;571:74:105;16953:137:86;;-1:-1:-1;16975:7:86;;;-1:-1:-1;16975:17:86;;544:18:105;;16975:39:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17039:10;883:6;17039:1;:10;:::i;:::-;17016:33;;-1:-1:-1;;;;;17016:33:86;:20;:33;:::i;:::-;16953:137;;;;;;;;;;;;;;;;;:8;:137::i;:::-;17109:4;;17132:11;;17109:36;;-1:-1:-1;;;17109:36:86;;-1:-1:-1;;;;;17132:11:86;;;17109:36;;;571:74:105;17100:109:86;;17109:4;;;;;:14;;544:18:105;;17109:36:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17167:10;883:6;17167:1;:10;:::i;:::-;17147:30;;-1:-1:-1;;;;;17147:30:86;:17;:30;:::i;:::-;17100:109;;;;;;;;;;;;;;;;;:8;:109::i;:::-;17229:7;;:32;;-1:-1:-1;;;17229:32:86;;17255:4;17229:32;;;571:74:105;17220:85:86;;-1:-1:-1;;;;;17229:7:86;;:17;;544:18:105;;17229:32:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17263:10;883:6;17263:1;:10;:::i;:::-;-1:-1:-1;;;;;17220:85:86;;;;;;;;;;;;;;;;;;:8;:85::i;:::-;17324:4;;:29;;-1:-1:-1;;;17324:29:86;;17347:4;17324:29;;;571:74:105;17315:82:86;;-1:-1:-1;;;;;17324:4:86;;:14;;544:18:105;;17324:29:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17355:10;883:6;17355:1;:10;:::i;:::-;-1:-1:-1;;;;;17315:82:86;;;;;;;;;;;;;;;;;;:8;:82::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19119:1449:86;19190:16;;;19204:1;19190:16;;;;;;;;;19167:20;;19190:16;;;;;;;;;-1:-1:-1;;19225:11:86;;:25;;;-1:-1:-1;;;19225:25:86;;;;19167:39;;-1:-1:-1;;;;;;19225:11:86;;;;:23;;-1:-1:-1;19225:25:86;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19216:34;;:3;19220:1;19216:6;;;;;;;;:::i;:::-;;;;;;;;;;:34;19294:16;;;19308:1;19294:16;;;;;;;;;19261:30;;19294:16;;;;;;;;;;-1:-1:-1;;19339:11:86;;19366:6;;19261:49;;-1:-1:-1;19376:1:86;;-1:-1:-1;;;;;19339:11:86;;;;-1:-1:-1;19339:21:86;;19361:3;;19366;;19339:11;;19366:6;;;;:::i;:::-;;;;;;;19339:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;19339:34:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;;;:::i;:::-;19320:13;19334:1;19320:16;;;;;;;;:::i;:::-;;;;;;;;;;:57;19388:13;;-1:-1:-1;;;19388:13:86;;-1:-1:-1;;;;;19397:3:86;589:55:105;19388:13:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;19388:8:86;;;544:18:105;;19388:13:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19411:11:86;;19445:5;;19411:47;;-1:-1:-1;;;19411:47:86;;-1:-1:-1;;;;;19445:5:86;;;19411:47;;;25965:74:105;19411:11:86;26055:18:105;;;26048:50;19411:11:86;;;-1:-1:-1;19411:25:86;;-1:-1:-1;25938:18:105;;19411:47:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19469:5:86;;19506:11;;19520:77;;-1:-1:-1;;;;;19469:5:86;;;;-1:-1:-1;19469:15:86;;-1:-1:-1;19506:11:86;;;-1:-1:-1;;;19543:21:86;19520:77;;19566:3;;19571:5;;19578:3;;19583:13;;19520:77;;;:::i;:::-;;;;-1:-1:-1;;19520:77:86;;;;;;;;;;;;;;-1:-1:-1;;;;;19520:77:86;-1:-1:-1;;;;;;19520:77:86;;;;;;19469:138;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19618:81:86;;-1:-1:-1;;;19618:81:86;;-1:-1:-1;;;19618:81:86;;;24066:52:105;-1:-1:-1;;;;;;;;;;;19618:15:86;-1:-1:-1;19618:15:86;;-1:-1:-1;24039:18:105;;19618:81:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19709:13:86;;-1:-1:-1;;;19709:13:86;;-1:-1:-1;;;;;19718:3:86;589:55:105;19709:13:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;19709:8:86;-1:-1:-1;19709:8:86;;-1:-1:-1;544:18:105;;19709:13:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19732:11:86;;:48;;-1:-1:-1;;;19732:48:86;;-1:-1:-1;;;;;19732:11:86;;;;-1:-1:-1;19732:16:86;;-1:-1:-1;19732:48:86;;19749:3;;19754:5;;19761:3;;19766:13;;19732:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19732:48:86;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19791:5:86;;19819:12;;;19791:5;19819:12;;;;;;;;;;-1:-1:-1;;;19791:41:86;;;-1:-1:-1;;;;;19791:5:86;;;;:15;;:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19843:5:86;;19879:11;;19893:77;;-1:-1:-1;;;;;19843:5:86;;;;-1:-1:-1;19843:14:86;;-1:-1:-1;19879:11:86;;;-1:-1:-1;;;19916:21:86;19893:77;;19939:3;;19944:5;;19951:3;;19956:13;;19893:77;;;:::i;:::-;;;;-1:-1:-1;;19893:77:86;;;;;;;;;;;;;;-1:-1:-1;;;;;19893:77:86;-1:-1:-1;;;;;;19893:77:86;;;;;;19843:137;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20000:7:86;;:24;;-1:-1:-1;;;20000:24:86;;-1:-1:-1;;;;;20018:5:86;589:55:105;;20000:24:86;;;571:74:105;19991:63:86;;-1:-1:-1;20000:7:86;;;;-1:-1:-1;20000:17:86;;544:18:105;;20000:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20026:1;19991:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;20073:4;;:21;;-1:-1:-1;;;20073:21:86;;-1:-1:-1;;;;;20088:5:86;589:55:105;;20073:21:86;;;571:74:105;20064:60:86;;20073:4;;:14;;544:18:105;;20073:21:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20096:1;20064:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;20135:13;;-1:-1:-1;;;20135:13:86;;-1:-1:-1;;;;;20144:3:86;589:55:105;20135:13:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;20135:8:86;;;544:18:105;;20135:13:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20158:11:86;;:48;;-1:-1:-1;;;20158:48:86;;-1:-1:-1;;;;;20158:11:86;;;;-1:-1:-1;20158:16:86;;-1:-1:-1;20158:48:86;;20175:3;;20180:5;;20187:3;;20192:13;;20158:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20158:48:86;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20226:7:86;;:24;;-1:-1:-1;;;20226:24:86;;-1:-1:-1;;;;;20244:5:86;589:55:105;;20226:24:86;;;571:74:105;20217:63:86;;20226:7;;:17;;544:18:105;;20226:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20252:1;20217:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;20299:4;;:21;;-1:-1:-1;;;20299:21:86;;-1:-1:-1;;;;;20314:5:86;589:55:105;;20299:21:86;;;571:74:105;20290:60:86;;20299:4;;:14;;544:18:105;;20299:21:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20322:1;20290:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;20406:11;;20432:6;;20362:19;;;;-1:-1:-1;;;;;20406:11:86;;;;:18;;20432:3;;20362:19;;20432:6;;;;:::i;:::-;;;;;;;20406:34;;;;;;;;;;;;;;8287:8:105;8275:21;;;;8257:40;;8245:2;8230:18;;8113:190;20406:34:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20361:79:86;;;-1:-1:-1;;;;;20361:79:86;;;20451:50;20460:11;20473:1;20451:50;;;;;;;;;;;;;;;;;:8;:50::i;:::-;20511;20520:11;20533:1;20511:50;;;;;;;;;;;;;;;;;:8;:50::i;:::-;19157:1411;;;;19119:1449::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;1854:1121:86:-;1934:11;;:34;;;-1:-1:-1;;;1934:34:86;;;;1913:18;;-1:-1:-1;;;;;1934:11:86;;:32;;:34;;;;;;;;;;;;;;:11;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;2877:44:66;;;;;;-1:-1:-1;;;2957:34:66;;2956:41;;-1:-1:-1;;;;2932:65:66;;;;-1:-1:-1;;;3031:33:66;;3030:40;;-1:-1:-1;;;3007:63:66;-1:-1:-1;;;3110:40:66;;3109:47;;-1:-1:-1;;;3080:76:66;-1:-1:-1;;;3195:39:66;;3194:46;;-1:-1:-1;;;3166:74:66;-1:-1:-1;;;3275:34:66;;3274:41;;-1:-1:-1;;;3250:65:66;-1:-1:-1;;;3349:33:66;;3348:40;;-1:-1:-1;;;3325:63:66;-1:-1:-1;;;3423:34:66;;3422:41;;-1:-1:-1;;;3398:65:66;-1:-1:-1;;;3497:33:66;;3496:40;;-1:-1:-1;;;3473:63:66;-1:-1:-1;;;3584:38:66;;3583:45;;-1:-1:-1;;;3546:82:66;-1:-1:-1;;;3675:37:66;;3674:44;;-1:-1:-1;;;3638:80:66;2096:5:86;;2056:79;;;;;;;;;;;;;;;;;;;2877:44:66;;-1:-1:-1;;;2056:79:86;;2096:5;;;2056:8;:79::i;:::-;2145:70;2156:15;:26;;;2145:70;;;;;;;;;;;;;;;;;:10;:70::i;:::-;2225:69;2236:15;:25;;;2225:69;;;;;;;;;;;;;;;;;:10;:69::i;:::-;2304:75;2315:15;:31;;;2304:75;;;;;;;;;;;;;;;;;:10;:75::i;:::-;2389:74;2400:15;:30;;;2389:74;;;;;;;;;;;;;;;;;:10;:74::i;:::-;2473:70;2484:15;:26;;;2473:70;;;;;;;;;;;;;;;;;:10;:70::i;:::-;2553:69;2564:15;:25;;;2553:69;;;;;;;;;;;;;;;;;:10;:69::i;:::-;2632:70;2643:15;:26;;;2632:70;;;;;;;;;;;;;;;;;:10;:70::i;:::-;2712:69;2723:15;:25;;;2712:69;;;;;;;;;;;;;;;;;:10;:69::i;:::-;2791:84;2802:15;:39;;;2791:84;;;;;;;;;;;;;;;;;:10;:84::i;:::-;2885:83;2896:15;:38;;;2885:83;;;;;;;;;;;;;;;;;:10;:83::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6275:1429:86;6369:5;;:16;;;-1:-1:-1;;;6369:16:86;;;;6334:32;;-1:-1:-1;;;;;6369:5:86;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6334:51;-1:-1:-1;6396:15:86;1035:38:77;6465:15:86;;-1:-1:-1;;;6465:15:86;;-1:-1:-1;;;;;6474:5:86;589:55:105;6465:15:86;;;571:74:105;6396:58:86;;-1:-1:-1;;;;;;;;;;;;6465:8:86;;;544:18:105;;6465:15:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6490:11:86;;6558:12;;;6490:11;6558:12;;;;;;;;;-1:-1:-1;;;6490:81:86;;;-1:-1:-1;;;;;6490:11:86;;;;-1:-1:-1;6490:21:86;;-1:-1:-1;6490:81:86;;6541:4;;6549:7;;6490:81;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6582:31;6616:5;;;;;;;;;-1:-1:-1;;;;;6616:5:86;-1:-1:-1;;;;;6616:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6582:50;;6643:223;6675:5;;;;;;;;;-1:-1:-1;;;;;6675:5:86;-1:-1:-1;;;;;6675:16:86;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6675:18:86;;;;;;;;;;;;:::i;:::-;6665:29;;;;;;;6718:88;;;6776:5;-1:-1:-1;;;;;30893:15:105;6718:88:86;;;30875:34:105;6791:4:86;30925:18:105;;;30918:43;30977:18;;;;30970:34;;;6718:88:86;;;;;;;;;;30787:18:105;;;;6718:88:86;;;;;;;-1:-1:-1;;;;;6718:88:86;-1:-1:-1;;;6718:88:86;;;6708:99;;;;6643:223;;;;;;;;;;;;6665:29;;6708:99;;6643:223;;;;;;:8;:223::i;:::-;6877:20;6945:4;883:6;-1:-1:-1;;;;;6908:34:86;:7;;;;;;;;;-1:-1:-1;;;;;6908:7:86;-1:-1:-1;;;;;6908:23:86;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;;:::i;:::-;:41;;;;:::i;:::-;7071:5;;:17;;;-1:-1:-1;;;7071:17:86;;;;6877:73;;-1:-1:-1;;;;;;1038:17:77;;1061:6;1057:15;;;1035:38;;7039:408:86;;-1:-1:-1;;;;;7071:5:86;;:15;;:17;;;;;6961:12;;7071:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7071:17:86;;;;;;;;;;;;:::i;:::-;7061:28;;;;;;;7130:244;;;-1:-1:-1;;;;;7228:5:86;31514:15:105;7130:244:86;;;31496:34:105;7263:4:86;31546:18:105;;;31539:43;31598:18;;;31591:34;;;1035:38:77;31641:18:105;;;;31634:34;;;;7130:244:86;;;;;;;;;;31407:19:105;;;;7130:244:86;;;;;;;-1:-1:-1;;;;;7130:244:86;-1:-1:-1;;;7130:244:86;;;7103:285;;;;7039:408;;;;;;;;;;;;7061:28;;7103:285;;7039:408;;;;;;:8;:408::i;:::-;7490:5;;:22;;;-1:-1:-1;;;7490:22:86;;;;7458:29;;-1:-1:-1;;;;;7490:5:86;;:20;;:22;;;;;;;;;;;;;;:5;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7458:54;;7522:28;7553:5;;;;;;;;;-1:-1:-1;;;;;7553:5:86;-1:-1:-1;;;;;7553:19:86;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7522:52;;7585;7599:16;7617:19;7585:13;:52::i;:::-;7647:50;7661:15;7678:18;7647:13;:50::i;:::-;6324:1380;;;;;;;6275:1429::o;11103:1715::-;11188:11;;:25;;;-1:-1:-1;;;11188:25:86;;;;11170:15;;-1:-1:-1;;;;;11188:11:86;;:23;;:25;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11260:16;;;11274:1;11260:16;;;;;;;;;11170:43;;-1:-1:-1;11224:33:86;;11260:16;;;;;;;;;;;;-1:-1:-1;11260:16:86;11224:52;;11308:58;11345:4;11351;11357:8;11308:36;:58::i;:::-;11286:16;11303:1;11286:19;;;;;;;;:::i;:::-;;;;;;;;;;:80;11390:7;;11377:37;;-1:-1:-1;;;;;11390:7:86;11400:5;883:6;11377:4;:37::i;:::-;11437:4;;11424:34;;-1:-1:-1;;;;;11437:4:86;11444:5;883:6;11424:4;:34::i;:::-;11469:20;;-1:-1:-1;;;11469:20:86;;-1:-1:-1;;;;;11483:5:86;589:55:105;11469:20:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;11469:13:86;;;544:18:105;;11469:20:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11499:7:86;;11524:11;;11499:46;;-1:-1:-1;;;11499:46:86;;-1:-1:-1;;;;;11524:11:86;;;11499:46;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;11499:7:86;;;-1:-1:-1;11499:16:86;;-1:-1:-1;12023:18:105;;11499:46:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11555:4:86;;11577:11;;11555:43;;-1:-1:-1;;;11555:43:86;;-1:-1:-1;;;;;11577:11:86;;;11555:43;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;11555:4:86;;;:13;;12023:18:105;;11555:43:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11608:11:86;;:48;;-1:-1:-1;;;11608:48:86;;-1:-1:-1;;;;;11608:11:86;;;;:16;;:48;;11625:5;;11632:16;;11625:5;;11608:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11608:48:86;;;;;;;;;;;;:::i;:::-;;;;11667:32;11702:5;;;;;;;;;-1:-1:-1;;;;;11702:5:86;-1:-1:-1;;;;;11702:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11752;;;11766:1;11752:16;;;;;;;;;11667:51;;-1:-1:-1;11729:20:86;;11752:16;;;;;;;;;;;;-1:-1:-1;11752:16:86;11729:39;;11787:8;11778:17;;:3;11782:1;11778:6;;;;;;;;:::i;:::-;;;;;;;;;;:17;11833:16;;;11847:1;11833:16;;;;;;;;;11806:24;;11833:16;;;;;;;;;;;;-1:-1:-1;11833:16:86;11806:43;;883:6;-1:-1:-1;;;;;11859:19:86;:7;11867:1;11859:10;;;;;;;;:::i;:::-;;;;;;;;;;:19;11889:11;;:55;;-1:-1:-1;;;11889:55:86;;-1:-1:-1;;;;;11889:11:86;;;;:29;;:55;;11919:5;;11926:3;;11931;;11936:7;;11889:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;11954:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11979:31;12013:5;;;;;;;;;-1:-1:-1;;;;;12013:5:86;-1:-1:-1;;;;;12013:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11979:50;;12040:271;12072:5;;;;;;;;;-1:-1:-1;;;;;12072:5:86;-1:-1:-1;;;;;12072:16:86;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12072:18:86;;;;;;;;;;;;:::i;:::-;12062:29;;;;;;12155:41;;;12198:5;12205;12212:3;12217;12222:7;12132:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;12132:98:86;;;;;;;-1:-1:-1;;;;;12132:98:86;;;;;;;;;;;12105:139;;;;;;12040:271;;;;;;;;;;;;;;;;;:8;:271::i;:::-;12354:5;;:17;;;-1:-1:-1;;;12354:17:86;;;;12322:239;;-1:-1:-1;;;;;12354:5:86;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12354:17:86;;;;;;;;;;;;:::i;:::-;12344:28;;;;;;12419:40;;;12461:5;12468;12475:3;12480;12485:7;12396:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;12396:97:86;;;;;;;-1:-1:-1;;;;;12396:97:86;;;;;;;;;;;12386:108;;;;;;12322:239;;;;;;;;;;;;;;;;;:8;:239::i;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;589:55:105;;11033:19:93;;;571:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;544:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;25562:55:105;;;11062:41:93;;;25544:74:105;25634:18;;;25627:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;25517:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;25562:55:105;;;11113:41:93;;;25544:74:105;25634:18;;;25627:34;;;11113:15:93;;;;;25517:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;23041:6:105;23029:19;;12532:26:93;;;23011:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;22984:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;7710:1738:86:-;7799:5;;:16;;;-1:-1:-1;;;7799:16:86;;;;7764:32;;-1:-1:-1;;;;;7799:5:86;;:14;;:16;;;;;;;;;;;;;;:5;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7862;;;7876:1;7862:16;;;;;;;;;7764:51;;-1:-1:-1;7826:33:86;;7862:16;;;;;;;;;;;;-1:-1:-1;7862:16:86;7826:52;;7910:78;7947:4;7953;7959:19;:28;;;7910:36;:78::i;:::-;7888:16;7905:1;7888:19;;;;;;;;:::i;:::-;;;;;;;;;;:100;8012:7;;7999:37;;-1:-1:-1;;;;;8012:7:86;8022:5;883:6;7999:4;:37::i;:::-;8059:4;;8046:34;;-1:-1:-1;;;;;8059:4:86;8066:5;883:6;8046:4;:34::i;:::-;8091:20;;-1:-1:-1;;;8091:20:86;;-1:-1:-1;;;;;8105:5:86;589:55:105;8091:20:86;;;571:74:105;-1:-1:-1;;;;;;;;;;;8091:13:86;;;544:18:105;;8091:20:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8121:7:86;;8146:11;;8121:46;;-1:-1:-1;;;8121:46:86;;-1:-1:-1;;;;;8146:11:86;;;8121:46;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;8121:7:86;;;-1:-1:-1;8121:16:86;;-1:-1:-1;12023:18:105;;8121:46:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8177:4:86;;8199:11;;8177:43;;-1:-1:-1;;;8177:43:86;;-1:-1:-1;;;;;8199:11:86;;;8177:43;;;12050:74:105;883:6:86;12140:18:105;;;12133:75;8177:4:86;;;:13;;12023:18:105;;8177:43:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8230:11:86;;:48;;-1:-1:-1;;;8230:48:86;;-1:-1:-1;;;;;8230:11:86;;;;:16;;:48;;8247:5;;8254:16;;8247:5;;8230:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8230:48:86;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;8288:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8313:31;8347:5;;;;;;;;;-1:-1:-1;;;;;8347:5:86;-1:-1:-1;;;;;8347:14:86;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8313:50;;8374:404;8406:5;;;;;;;;;-1:-1:-1;;;;;8406:5:86;-1:-1:-1;;;;;8406:16:86;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8406:18:86;;;;;;;;;;;;:::i;:::-;8396:29;;;;;;;-1:-1:-1;;;8560:5:86;;8614:16;1035:38:77;8466:244:86;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;8466:244:86;;;;;;;-1:-1:-1;;;;;8466:244:86;;;;;;;;;;;8439:285;;;;;;8374:404;;;;;;;;;;;;;;;;;:8;:404::i;:::-;8821:5;;:17;;;-1:-1:-1;;;8821:17:86;;;;8789:402;;-1:-1:-1;;;;;8821:5:86;;:15;;:17;;;;;:5;;:17;;;;;;;:5;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8821:17:86;;;;;;;;;;;;:::i;:::-;8811:28;;;;;;;-1:-1:-1;;;8973:5:86;;9027:16;1035:38:77;8880:243:86;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;8880:243:86;;;;;;;-1:-1:-1;;;;;8880:243:86;;;;;;;;;;;8853:284;;;;;;8789:402;;;;;;;;;;;;;;;;;:8;:402::i;:::-;9234:5;;:22;;;-1:-1:-1;;;9234:22:86;;;;9202:29;;-1:-1:-1;;;;;9234:5:86;;:20;;:22;;;;;;;;;;;;;;:5;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9202:54;;9266:28;9297:5;;;;;;;;;-1:-1:-1;;;;;9297:5:86;-1:-1:-1;;;;;9297:19:86;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9266:52;;9329;9343:16;9361:19;9329:13;:52::i;:::-;9391:50;9405:15;9422:18;9391:13;:50::i;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;25544:74:105;;;1398:17:1;25634:18:105;;;25627:34;1428:1:1;;1377:7;;25517:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;34809:2:105;11461:73:93;;;34791:21:105;34848:2;34828:18;;;34821:30;34887:26;34867:18;;;34860:54;34931:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;35151:55:105;;;11821:26:93;;;35133:74:105;35255:8;35243:21;;35223:18;;;35216:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;35106:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;589:55:105;;11974:14:93;;;571:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;544:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;589:55:105;;;27501:38:3;;;;571:74:105;;;;27501:38:3;;;;;;;;;;544:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;1214:392:76:-;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;3826:134:1:-;3924:29;;-1:-1:-1;;;3924:29:1;;-1:-1:-1;;;;;;;;;;;3924:11:1;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13226:1698:86;13326:73;13335:10;:19;;;-1:-1:-1;;;;;13326:73:86;13356:13;:22;;;-1:-1:-1;;;;;13326:73:86;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;13409;13418:10;:19;;;-1:-1:-1;;;;;13409:73:86;13439:13;:22;;;-1:-1:-1;;;;;13409:73:86;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;13492:81;13501:10;:23;;;-1:-1:-1;;;;;13492:81:86;13526:13;:26;;;-1:-1:-1;;;;;13492:81:86;;;;;;;;;;;;;;;;;;:8;:81::i;:::-;13583;13592:10;:23;;;-1:-1:-1;;;;;13583:81:86;13617:13;:26;;;-1:-1:-1;;;;;13583:81:86;;;;;;;;;;;;;;;;;;:8;:81::i;:::-;13674:73;13683:10;:19;;;13674:73;;13704:13;:22;;;13674:73;;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;13757:85;13766:10;:25;;;-1:-1:-1;;;;;13757:85:86;13793:13;:28;;;-1:-1:-1;;;;;13757:85:86;;;;;;;;;;;;;;;;;;:8;:85::i;:::-;13852;13861:10;:25;;;-1:-1:-1;;;;;13852:85:86;13888:13;:28;;;-1:-1:-1;;;;;13852:85:86;;;;;;;;;;;;;;;;;;:8;:85::i;:::-;13981:31;;;;;14056:34;;;;14110:24;;14136:25;;14101:81;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:81::i;:::-;14192:77;14201:2;:22;;;14192:77;;14225:3;:23;;;14192:77;;;;;;;;;;;;;;;;;;;:8;:77::i;:::-;14279:62;14288:2;:14;;;14279:62;;14304:3;:15;;;14279:62;;;;;;;;;;;;;;;;;;;:8;:62::i;:::-;14351:72;14360:2;:19;;;14351:72;;14381:3;:20;;;14351:72;;;;;;;;;;;;;;;;;;;:8;:72::i;:::-;14463:27;;;;;14530:30;;;;14580:17;;14599:18;;14571:68;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:68::i;:::-;14649:48;14658:2;:7;;;14649:48;;14667:3;:8;;;14649:48;;;;;;;;;;;;;;;;;;;:8;:48::i;:::-;14707:60;14716:2;:13;;;14707:60;;14731:3;:14;;;14707:60;;;;;;;;;;;;;;;;;;;:8;:60::i;:::-;14777:62;14786:2;:14;;;14777:62;;14802:3;:15;;;14777:62;;;;;;;;;;;;;;;;;;;:8;:62::i;:::-;14849:68;14858:2;:17;;;14849:68;;14877:3;:18;;;14849:68;;;;;;;;;;;;;;;;;;;:8;:68::i;2566:3054:93:-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;36810:4:105;36798:17;;;36780:36;;36768:2;36753:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;36810:4:105;36798:17;;;36780:36;;36768:2;36753:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;36810:4:105;36798:17;;;36780:36;;36768:2;36753:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;36810:4:105;36798:17;;;36780:36;;36768:2;36753:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;36810:4:105;36798:17;;;36780:36;;36768:2;36753:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;36810:4:105;36798:17;;;36780:36;;36768:2;36753:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;37438:74:105;37528:18;;;37521:30;;;;37587:1;37567:18;;;37560:29;37625:9;37605:18;;;37598:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;37652:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;37894:74:105;;;;37984:18;;;37977:30;;;;38023:18;;;38016:29;-1:-1:-1;;;38061:18:105;;;38054:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;38105:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;38347:74:105;;;;38437:18;;;38430:30;;;;38476:18;;;38469:29;-1:-1:-1;;;38514:18:105;;;38507:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;38558:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;38800:74:105;;;;38890:18;;;38883:30;;;;38929:18;;;38922:29;-1:-1:-1;;;38967:18:105;;;38960:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;39011:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;39253:74:105;;;;39343:18;;;39336:30;;;;39382:18;;;39375:29;-1:-1:-1;;;39420:18:105;;;39413:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;39464:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;39706:74:105;;;;39796:18;;;39789:30;;;;39835:18;;;39828:29;-1:-1:-1;;;39873:18:105;;;39866:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;39917:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;40159:74:105;40249:18;;;40242:30;40308:1;40288:18;;;40281:29;-1:-1:-1;;;40326:18:105;;;40319:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;40369:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;40611:74:105;40701:18;;;40694:30;40760:1;40740:18;;;40733:29;40798:10;40778:18;;;40771:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;40826:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;30893:15:105;;;30875:34;;30945:15;;;;30940:2;30925:18;;30918:43;30992:2;30977:18;;30970:34;30802:2;30787:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;589:55:105;;;571:74;;559:2;544:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;571:74:105;;;;3824:7:93;;;;:31;;544:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;41871:15:105;;;41853:34;;41923:15;;;41918:2;41903:18;;41896:43;41975:15;;;41970:2;41955:18;;41948:43;41780:2;41765:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;41871:15:105;;;41853:34;;41923:15;;;41918:2;41903:18;;41896:43;41975:15;;;41970:2;41955:18;;41948:43;41780:2;41765:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;42626:74:105;42716:18;;;42709:30;;;;42775:1;42755:18;;;42748:29;42813:8;42793:18;;;42786:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;42839:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;43081:74:105;43171:18;;;43164:30;43230:1;43210:18;;;43203:29;43268:8;43248:18;;;43241:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;43294:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;43536:74:105;43626:18;;;43619:30;;;;43685:1;43665:18;;;43658:29;43723:9;43703:18;;;43696:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;43750:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;43992:74:105;44082:18;;;44075:30;44141:2;44121:18;;;44114:30;44180:20;44160:18;;;44153:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;44218:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;44460:74:105;44550:18;;;44543:30;44609:1;44589:18;;;44582:29;44647:10;44627:18;;;44620:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;44675:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;44917:74:105;45007:18;;;45000:30;45066:1;45046:18;;;45039:29;45104:11;45084:18;;;45077:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;45133:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;25517:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;4729:4:93;;;:12;;25517:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;4789:4:93;;;:12;;25517:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;4849:4:93;;;:12;;25517:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;4909:4:93;;;:12;;25517:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;4969:4:93;;;:12;;25517:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5029:3:93;;;:11;;25517:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5088:8:93;;;:16;;25517:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5153:7:93;;;:15;;25517:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5214:4:93;;;:12;;25517:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5272:4:93;;;:12;;25517:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5330:4:93;;;:12;;25517:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5388:4:93;;;:12;;25517:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5446:4:93;;;:12;;25517:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5504:3:93;;;:11;;25517:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;25544:74:105;-1:-1:-1;;25634:18:105;;;25627:34;5561:8:93;;;:16;;25517:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;7147:160::-;7217:14;7253:47;7277:6;7285;992:7;7253:23;:47::i;:::-;7243:57;7147:160;-1:-1:-1;;;7147:160:93:o;1610:948:66:-;1764:16;;1799:21;;;;-1:-1:-1;;;;;1740:43:66;;;;1795:62;;;-1:-1:-1;;;1822:35:66;1795:62;1871:10;:20;;;1867:60;;;-1:-1:-1;;;1893:34:66;1867:60;1941:10;:26;;;1937:73;;;-1:-1:-1;;;1969:41:66;1937:73;2024:10;:25;;;2020:71;;;-1:-1:-1;;;2051:40:66;2020:71;2105:10;:21;;;2101:62;;;-1:-1:-1;;;2128:35:66;2101:62;2177:10;:20;;;2173:60;;;-1:-1:-1;;;2199:34:66;2173:60;2247:10;:21;;;2243:62;;;-1:-1:-1;;;2270:35:66;2243:62;2319:10;:20;;;2315:60;;;-1:-1:-1;;;2341:34:66;2315:60;2389:10;:34;;;2385:79;;;-1:-1:-1;;;2425:39:66;2385:79;2478:10;:33;;;2474:77;;;-1:-1:-1;;;2513:38:66;2474:77;1610:948;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;13228:134::-;13326:29;;-1:-1:-1;;;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:11:1;;;:29;;13338:4;;13344:5;;13351:3;;13326:29;;;:::i;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;3570:134:1;3668:29;;-1:-1:-1;;;3668:29:1;;-1:-1:-1;;;;;;;;;;;3668:11:1;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;1689:113::-;1771:24;;-1:-1:-1;;;1771:24:1;;-1:-1:-1;;;;;;;;;;;1771:13:1;;;:24;;1785:4;;1791:3;;1771:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8711:135:78;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;956:247:82;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;571:74:105;6180:7:93;;;:21;;544:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;571:74:105;6253:7:93;;;:21;;544:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;571:74:105;6323:7:93;;;:21;;544:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;571:74:105;6393:7:93;;;:21;;544:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;571:74:105;6463:7:93;;;:21;;544:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;571:74:105;6533:7:93;;;:21;;544:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;571:74:105;6602:7:93;;;:21;;544:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;571:74:105;6675:7:93;;;:21;;544:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;47400:6:105;47433:15;;6788:346:93;;;47415:34:105;1202:5:93;47465:18:105;;;47458:43;;;1262:2:93;47517:18:105;;;47510:43;1318:3:93;47569:18:105;;;47562:43;47621:19;;;47614:44;;;;1446:6:93;47701:19:105;;;47694:44;1508:5:93;47754:19:105;;;47747:44;1581:7:93;47807:19:105;;;47800:44;6788:7:93;47860:19:105;;;47853:51;-1:-1:-1;;;;;6788:7:93;;:17;;47362:19:105;;6788:346:93;47041:869:105;7313:216:93;7410:14;7446:76;7480:6;7488;7496:7;1147:2;7446:33;:76::i;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;10966:1095:8:-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;25562:55:105;;11664:18:8;;;25544:74:105;25634:18;;;25627:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;25517:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;49121:2:105;11725:175:8;;;49103:21:105;49160:3;49140:18;;;49133:31;49200:34;49180:18;;;49173:62;49271:34;49251:18;;;49244:62;49343:34;49322:19;;;49315:63;-1:-1:-1;;;49394:19:105;;;49387:46;49450:19;;11725:175:8;48919:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;49700:55:105;;11920:24:8;;;49682:74:105;49772:18;;;49765:34;;;49815:18;;;49808:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;49655:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;7535:257:93:-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;50191:15:105;;;7729:54:93;;;50173:34:105;50243:15;;;50223:18;;;50216:43;;;;50307:8;50295:21;;50275:18;;;50268:49;50365:6;50353:19;;50333:18;;;50326:47;7674:14:93;;7729:7;;;;:20;;50084:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13395:393:8:-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;589:55:105;;1990:25:8;;;571:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;544:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;25562:55:105;;;25544:74;;25634:18;;;25627:34;25517:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;49121:2:105;2268:187:8;;;49103:21:105;49160:3;49140:18;;;49133:31;49200:34;49180:18;;;49173:62;49271:34;49251:18;;;49244:62;49343:34;49322:19;;;49315:63;-1:-1:-1;;;49394:19:105;;;49387:46;49450:19;;2268:187:8;48919:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;51523:55:105;;;51505:74;;-1:-1:-1;;;;;;51615:33:105;;;51595:18;;;51588:61;;;;51665:18;;;51658:34;51723:2;51708:18;;51701:34;51492:3;51477:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;25562:55:105;;;;25544:74;;25649:2;25634:18;;25627:34;25532:2;25517:18;;25362:305;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;25562:55:105;;;25544:74;;25634:18;;;25627:34;25517:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;49700:55:105;;;3215:32:8;;;49682:74:105;49772:18;;;49765:34;49815:18;;;49808:34;;;49655:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;51523:55:105;;;51505:74;;-1:-1:-1;;;;;;51615:33:105;;;51595:18;;;51588:61;;;;51665:18;;;51658:34;51723:2;51708:18;;51701:34;51492:3;51477:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;49700:55:105;;;3941:29:8;;;49682:74:105;49772:18;;;49765:34;49815:18;;;49808:34;;;49655:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;49700:55:105;;;4033:29:8;;;49682:74:105;49772:18;;;49765:34;49815:18;;;49808:34;;;49655:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;51948:2:105;4107:74:8;;;51930:21:105;51967:18;;;51960:30;;;;52026:34;52006:18;;;51999:62;52097:34;52077:18;;;52070:62;52149:19;;4107:74:8;51746:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;52381:2:105;4202:162:8;;;52363:21:105;52420:2;52400:18;;;52393:30;52459:34;52439:18;;;52432:62;52530:17;52510:18;;;52503:45;52565:19;;4202:162:8;52179:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:127:105:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:274;-1:-1:-1;;;;;284:10:105;;;296;;;280:27;327:20;;;;218:34;366:24;;;356:58;;394:18;;:::i;:::-;356:58;;146:274;;;;:::o;656:184::-;726:6;779:2;767:9;758:7;754:23;750:32;747:52;;;795:1;792;785:12;747:52;-1:-1:-1;818:16:105;;656:184;-1:-1:-1;656:184:105:o;845:125::-;910:9;;;931:10;;;928:36;;;944:18;;:::i;975:286::-;1033:6;1086:2;1074:9;1065:7;1061:23;1057:32;1054:52;;;1102:1;1099;1092:12;1054:52;1128:23;;-1:-1:-1;;;;;;1180:32:105;;1170:43;;1160:71;;1227:1;1224;1217:12;1458:681;1629:2;1681:21;;;1751:13;;1654:18;;;1773:22;;;1600:4;;1629:2;1852:15;;;;1826:2;1811:18;;;1600:4;1895:218;1909:6;1906:1;1903:13;1895:218;;;1974:13;;-1:-1:-1;;;;;1970:62:105;1958:75;;2088:15;;;;2053:12;;;;1931:1;1924:9;1895:218;;;-1:-1:-1;2130:3:105;;1458:681;-1:-1:-1;;;;;;1458:681:105:o;2144:250::-;2229:1;2239:113;2253:6;2250:1;2247:13;2239:113;;;2329:11;;;2323:18;2310:11;;;2303:39;2275:2;2268:10;2239:113;;;-1:-1:-1;;2386:1:105;2368:16;;2361:27;2144:250::o;2399:271::-;2441:3;2479:5;2473:12;2506:6;2501:3;2494:19;2522:76;2591:6;2584:4;2579:3;2575:14;2568:4;2561:5;2557:16;2522:76;:::i;:::-;2652:2;2631:15;-1:-1:-1;;2627:29:105;2618:39;;;;2659:4;2614:50;;2399:271;-1:-1:-1;;2399:271:105:o;2675:1765::-;2908:2;2960:21;;;3030:13;;2933:18;;;3052:22;;;2879:4;;2908:2;3093;;3111:18;;;;3148:1;3191:15;;;3176:31;;3172:40;;3235:15;;;2879:4;;3299:1112;3315:6;3310:3;3307:15;3299:1112;;;-1:-1:-1;;3384:22:105;;;3380:36;3368:49;;3440:13;;3527:9;;-1:-1:-1;;;;;3523:58:105;3508:74;;3621:11;;3615:18;3653:15;;;3646:27;;;3734:19;;3480:15;;;3766:24;;;3947:21;;;;3813:2;3895:17;;;3883:30;;3879:39;;;3837:15;;;;3992:1;4006:296;4022:8;4017:3;4014:17;4006:296;;;4128:2;4124:7;4115:6;4107;4103:19;4099:33;4092:5;4085:48;4160:42;4195:6;4184:8;4178:15;4160:42;:::i;:::-;4231:17;;;;4150:52;-1:-1:-1;4274:14:105;;;;4050:1;4041:11;4006:296;;;-1:-1:-1;;;4389:12:105;;;;4325:6;-1:-1:-1;;4354:15:105;;;;3341:1;3332:11;3299:1112;;;-1:-1:-1;4428:6:105;;2675:1765;-1:-1:-1;;;;;;;;;;2675:1765:105:o;4445:114::-;4529:4;4522:5;4518:16;4511:5;4508:27;4498:55;;4549:1;4546;4539:12;4564:380;4628:6;4636;4689:2;4677:9;4668:7;4664:23;4660:32;4657:52;;;4705:1;4702;4695:12;4657:52;4744:9;4731:23;4763:29;4786:5;4763:29;:::i;:::-;4811:5;-1:-1:-1;4868:2:105;4853:18;;4840:32;4881:31;4840:32;4881:31;:::i;:::-;4931:7;4921:17;;;4564:380;;;;;:::o;5131:1590::-;5333:4;5362:2;5402;5391:9;5387:18;5432:2;5421:9;5414:21;5455:6;5490;5484:13;5521:6;5513;5506:22;5547:2;5537:12;;5580:2;5569:9;5565:18;5558:25;;5642:2;5632:6;5629:1;5625:14;5614:9;5610:30;5606:39;5680:2;5672:6;5668:15;5701:1;5722;5732:960;5748:6;5743:3;5740:15;5732:960;;;5817:22;;;-1:-1:-1;;5813:36:105;5801:49;;5873:13;;5960:9;;-1:-1:-1;;;;;5956:58:105;5941:74;;6054:11;;6048:18;6086:15;;;6079:27;;;6167:19;;5913:15;;;6199:24;;;6289:21;;;;6334:1;;6257:2;6245:15;;;6348:236;6364:8;6359:3;6356:17;6348:236;;;6445:15;;-1:-1:-1;;;;;;6441:42:105;6427:57;;6553:17;;;;6392:1;6383:11;;;;;6510:14;;;;6348:236;;;-1:-1:-1;6670:12:105;;;;6607:5;-1:-1:-1;;;6635:15:105;;;;5774:1;5765:11;5732:960;;;-1:-1:-1;6709:6:105;;5131:1590;-1:-1:-1;;;;;;;;;5131:1590:105:o;6726:803::-;6888:4;6917:2;6957;6946:9;6942:18;6987:2;6976:9;6969:21;7010:6;7045;7039:13;7076:6;7068;7061:22;7114:2;7103:9;7099:18;7092:25;;7176:2;7166:6;7163:1;7159:14;7148:9;7144:30;7140:39;7126:53;;7214:2;7206:6;7202:15;7235:1;7245:255;7259:6;7256:1;7253:13;7245:255;;;7352:2;7348:7;7336:9;7328:6;7324:22;7320:36;7315:3;7308:49;7380:40;7413:6;7404;7398:13;7380:40;:::i;:::-;7370:50;-1:-1:-1;7478:12:105;;;;7443:15;;;;7281:1;7274:9;7245:255;;;-1:-1:-1;7517:6:105;;6726:803;-1:-1:-1;;;;;;;6726:803:105:o;7534:119::-;7619:8;7612:5;7608:20;7601:5;7598:31;7588:59;;7643:1;7640;7633:12;7658:450;7732:6;7740;7748;7801:2;7789:9;7780:7;7776:23;7772:32;7769:52;;;7817:1;7814;7807:12;7769:52;7856:9;7843:23;7875:30;7899:5;7875:30;:::i;:::-;7924:5;-1:-1:-1;7976:2:105;7961:18;;7948:32;;-1:-1:-1;8032:2:105;8017:18;;8004:32;8045:31;8004:32;8045:31;:::i;:::-;8095:7;8085:17;;;7658:450;;;;;:::o;8308:154::-;-1:-1:-1;;;;;8387:5:105;8383:54;8376:5;8373:65;8363:93;;8452:1;8449;8442:12;8467:1099;8600:6;8608;8616;8624;8632;8640;8648;8656;8709:3;8697:9;8688:7;8684:23;8680:33;8677:53;;;8726:1;8723;8716:12;8677:53;8765:9;8752:23;8784:31;8809:5;8784:31;:::i;:::-;8834:5;-1:-1:-1;8891:2:105;8876:18;;8863:32;8904:33;8863:32;8904:33;:::i;:::-;8956:7;-1:-1:-1;9015:2:105;9000:18;;8987:32;9028:33;8987:32;9028:33;:::i;:::-;9080:7;-1:-1:-1;9139:2:105;9124:18;;9111:32;9152;9111;9152;:::i;:::-;9203:7;-1:-1:-1;9257:3:105;9242:19;;9229:33;;-1:-1:-1;9309:3:105;9294:19;;9281:33;;-1:-1:-1;9366:3:105;9351:19;;9338:33;9380:31;9338:33;9380:31;:::i;:::-;9430:7;-1:-1:-1;9489:3:105;9474:19;;9461:33;9503:31;9461:33;9503:31;:::i;:::-;9553:7;9543:17;;;8467:1099;;;;;;;;;;;:::o;9571:117::-;9656:6;9649:5;9645:18;9638:5;9635:29;9625:57;;9678:1;9675;9668:12;9693:245;9751:6;9804:2;9792:9;9783:7;9779:23;9775:32;9772:52;;;9820:1;9817;9810:12;9772:52;9859:9;9846:23;9878:30;9902:5;9878:30;:::i;9943:1030::-;10067:6;10075;10083;10091;10099;10107;10115;10168:3;10156:9;10147:7;10143:23;10139:33;10136:53;;;10185:1;10182;10175:12;10136:53;10224:9;10211:23;10243:31;10268:5;10243:31;:::i;:::-;10293:5;-1:-1:-1;10350:2:105;10335:18;;10322:32;10363:33;10322:32;10363:33;:::i;:::-;10415:7;-1:-1:-1;10474:2:105;10459:18;;10446:32;10487:33;10446:32;10487:33;:::i;:::-;10539:7;-1:-1:-1;10598:2:105;10583:18;;10570:32;10611;10570;10611;:::i;:::-;10662:7;-1:-1:-1;10716:3:105;10701:19;;10688:33;;-1:-1:-1;10773:3:105;10758:19;;10745:33;10787:31;10745:33;10787:31;:::i;:::-;10837:7;-1:-1:-1;10896:3:105;10881:19;;10868:33;10910:31;10868:33;10910:31;:::i;:::-;10960:7;10950:17;;;9943:1030;;;;;;;;;;:::o;10978:136::-;11056:13;;11078:30;11056:13;11078:30;:::i;11119:249::-;11188:6;11241:2;11229:9;11220:7;11216:23;11212:32;11209:52;;;11257:1;11254;11247:12;11209:52;11289:9;11283:16;11308:30;11332:5;11308:30;:::i;11373:127::-;11434:10;11429:3;11425:20;11422:1;11415:31;11465:4;11462:1;11455:15;11489:4;11486:1;11479:15;11505:127;11566:10;11561:3;11557:20;11554:1;11547:31;11597:4;11594:1;11587:15;11621:4;11618:1;11611:15;12219:164;12295:13;;12344;;12337:21;12327:32;;12317:60;;12373:1;12370;12363:12;12388:202;12455:6;12508:2;12496:9;12487:7;12483:23;12479:32;12476:52;;;12524:1;12521;12514:12;12476:52;12547:37;12574:9;12547:37;:::i;12595:435::-;12648:3;12686:5;12680:12;12713:6;12708:3;12701:19;12739:4;12768:2;12763:3;12759:12;12752:19;;12805:2;12798:5;12794:14;12826:1;12836:169;12850:6;12847:1;12844:13;12836:169;;;12911:13;;12899:26;;12945:12;;;;12980:15;;;;12872:1;12865:9;12836:169;;;-1:-1:-1;13021:3:105;;12595:435;-1:-1:-1;;;;;12595:435:105:o;13035:498::-;13249:4;-1:-1:-1;;;;;13359:2:105;13351:6;13347:15;13336:9;13329:34;13399:2;13394;13383:9;13379:18;13372:30;13419:56;13471:2;13460:9;13456:18;13448:6;13419:56;:::i;:::-;13411:64;;13523:2;13515:6;13511:15;13506:2;13495:9;13491:18;13484:43;;13035:498;;;;;;:::o;13538:255::-;13610:2;13604:9;13652:6;13640:19;;13689:18;13674:34;;13710:22;;;13671:62;13668:88;;;13736:18;;:::i;:::-;13772:2;13765:22;13538:255;:::o;13798:275::-;13869:2;13863:9;13934:2;13915:13;;-1:-1:-1;;13911:27:105;13899:40;;13969:18;13954:34;;13990:22;;;13951:62;13948:88;;;14016:18;;:::i;:::-;14052:2;14045:22;13798:275;;-1:-1:-1;13798:275:105:o;14078:183::-;14138:4;14171:18;14163:6;14160:30;14157:56;;;14193:18;;:::i;:::-;-1:-1:-1;14238:1:105;14234:14;14250:4;14230:25;;14078:183::o;14266:1003::-;14379:6;14387;14395;14448:2;14436:9;14427:7;14423:23;14419:32;14416:52;;;14464:1;14461;14454:12;14416:52;14493:9;14487:16;14477:26;;14522:2;14564;14553:9;14549:18;14543:25;14533:35;;14612:2;14601:9;14597:18;14591:25;14639:18;14631:6;14628:30;14625:50;;;14671:1;14668;14661:12;14625:50;14694:22;;14747:4;14739:13;;14735:27;-1:-1:-1;14725:55:105;;14776:1;14773;14766:12;14725:55;14805:2;14799:9;14828:60;14844:43;14884:2;14844:43;:::i;:::-;14828:60;:::i;:::-;14922:15;;;15004:1;15000:10;;;;14992:19;;14988:28;;;14953:12;;;;15028:19;;;15025:39;;;15060:1;15057;15050:12;15025:39;15084:11;;;;15104:135;15120:6;15115:3;15112:15;15104:135;;;15186:10;;15174:23;;15137:12;;;;15217;;;;15104:135;;;15258:5;15248:15;;;;;;;14266:1003;;;;;:::o;15274:192::-;15353:13;;-1:-1:-1;;;;;15395:46:105;;15385:57;;15375:85;;15456:1;15453;15446:12;15471:169;15549:13;;15602:12;15591:24;;15581:35;;15571:63;;15630:1;15627;15620:12;15645:839;15723:5;15771:4;15759:9;15754:3;15750:19;15746:30;15743:50;;;15789:1;15786;15779:12;15743:50;15822:2;15816:9;15864:4;15856:6;15852:17;15935:6;15923:10;15920:22;15899:18;15887:10;15884:34;15881:62;15878:88;;;15946:18;;:::i;:::-;15986:10;15982:2;15975:22;;16015:6;16006:15;;16051:9;16045:16;16070:32;16094:7;16070:32;:::i;:::-;16111:23;;16179:2;16164:18;;16158:25;16192:32;16158:25;16192:32;:::i;:::-;16252:2;16240:15;;16233:32;16310:2;16295:18;;16289:25;16323:32;16289:25;16323:32;:::i;:::-;16383:2;16371:15;;16364:32;16429:48;16473:2;16458:18;;16429:48;:::i;:::-;16424:2;16416:6;16412:15;16405:73;;15645:839;;;;:::o;16489:918::-;16563:5;16611:4;16599:9;16594:3;16590:19;16586:30;16583:50;;;16629:1;16626;16619:12;16583:50;16662:2;16656:9;16704:4;16696:6;16692:17;16775:6;16763:10;16760:22;16739:18;16727:10;16724:34;16721:62;16718:88;;;16786:18;;:::i;:::-;16826:10;16822:2;16815:22;;16855:6;16846:15;;16891:9;16885:16;16910:31;16933:7;16910:31;:::i;:::-;16950:23;;17018:2;17003:18;;16997:25;17031:32;16997:25;17031:32;:::i;:::-;17091:2;17079:15;;17072:32;17149:2;17134:18;;17128:25;17162:32;17128:25;17162:32;:::i;:::-;17222:2;17210:15;;17203:32;17268:48;17312:2;17297:18;;17268:48;:::i;:::-;17263:2;17255:6;17251:15;17244:73;17351:49;17395:3;17384:9;17380:19;17351:49;:::i;:::-;17345:3;17337:6;17333:16;17326:75;;16489:918;;;;:::o;17412:1028::-;17506:6;17559:3;17547:9;17538:7;17534:23;17530:33;17527:53;;;17576:1;17573;17566:12;17527:53;17602:22;;:::i;:::-;17647:40;17677:9;17647:40;:::i;:::-;17640:5;17633:55;17720:49;17765:2;17754:9;17750:18;17720:49;:::i;:::-;17715:2;17708:5;17704:14;17697:73;17802:49;17847:2;17836:9;17832:18;17802:49;:::i;:::-;17797:2;17790:5;17786:14;17779:73;17884:49;17929:2;17918:9;17914:18;17884:49;:::i;:::-;17879:2;17872:5;17868:14;17861:73;17967:49;18011:3;18000:9;17996:19;17967:49;:::i;:::-;17961:3;17954:5;17950:15;17943:74;18050:50;18095:3;18084:9;18080:19;18050:50;:::i;:::-;18044:3;18037:5;18033:15;18026:75;18134:50;18179:3;18168:9;18164:19;18134:50;:::i;:::-;18128:3;18121:5;18117:15;18110:75;18218:79;18289:7;18283:3;18272:9;18268:19;18218:79;:::i;:::-;18212:3;18205:5;18201:15;18194:104;18334:75;18401:7;18395:3;18384:9;18380:19;18334:75;:::i;:::-;18325:6;18314:18;;18307:103;18318:5;17412:1028;-1:-1:-1;;;17412:1028:105:o;18445:704::-;18737:4;-1:-1:-1;;;;;18847:2:105;18839:6;18835:15;18824:9;18817:34;18899:2;18891:6;18887:15;18882:2;18871:9;18867:18;18860:43;;18939:3;18934:2;18923:9;18919:18;18912:31;18966:57;19018:3;19007:9;19003:19;18995:6;18966:57;:::i;:::-;19071:9;19063:6;19059:22;19054:2;19043:9;19039:18;19032:50;19099:44;19136:6;19128;19099:44;:::i;:::-;19091:52;18445:704;-1:-1:-1;;;;;;;18445:704:105:o;19154:659::-;19219:5;19272:3;19265:4;19257:6;19253:17;19249:27;19239:55;;19290:1;19287;19280:12;19239:55;19319:6;19313:13;19345:4;19369:60;19385:43;19425:2;19385:43;:::i;19369:60::-;19463:15;;;19549:1;19545:10;;;;19533:23;;19529:32;;;19494:12;;;;19573:15;;;19570:35;;;19601:1;19598;19591:12;19570:35;19637:2;19629:6;19625:15;19649:135;19665:6;19660:3;19657:15;19649:135;;;19731:10;;19719:23;;19762:12;;;;19682;;19649:135;;;-1:-1:-1;19802:5:105;19154:659;-1:-1:-1;;;;;;19154:659:105:o;19818:363::-;19913:6;19966:2;19954:9;19945:7;19941:23;19937:32;19934:52;;;19982:1;19979;19972:12;19934:52;20015:9;20009:16;20048:18;20040:6;20037:30;20034:50;;;20080:1;20077;20070:12;20034:50;20103:72;20167:7;20158:6;20147:9;20143:22;20103:72;:::i;20186:718::-;20265:6;20318:2;20306:9;20297:7;20293:23;20289:32;20286:52;;;20334:1;20331;20324:12;20286:52;20367:9;20361:16;20396:18;20437:2;20429:6;20426:14;20423:34;;;20453:1;20450;20443:12;20423:34;20491:6;20480:9;20476:22;20466:32;;20536:7;20529:4;20525:2;20521:13;20517:27;20507:55;;20558:1;20555;20548:12;20507:55;20587:2;20581:9;20609:2;20605;20602:10;20599:36;;;20615:18;;:::i;:::-;20657:53;20700:2;20681:13;;-1:-1:-1;;20677:27:105;20706:2;20673:36;20657:53;:::i;:::-;20644:66;;20733:2;20726:5;20719:17;20773:7;20768:2;20763;20759;20755:11;20751:20;20748:33;20745:53;;;20794:1;20791;20784:12;20745:53;20807:67;20871:2;20866;20859:5;20855:14;20850:2;20846;20842:11;20807:67;:::i;:::-;-1:-1:-1;20893:5:105;20186:718;-1:-1:-1;;;;20186:718:105:o;20909:817::-;21261:4;-1:-1:-1;;;;;21371:2:105;21363:6;21359:15;21348:9;21341:34;21423:2;21415:6;21411:15;21406:2;21395:9;21391:18;21384:43;21475:2;21467:6;21463:15;21458:2;21447:9;21443:18;21436:43;;21515:3;21510:2;21499:9;21495:18;21488:31;21542:57;21594:3;21583:9;21579:19;21571:6;21542:57;:::i;:::-;21648:9;21640:6;21636:22;21630:3;21619:9;21615:19;21608:51;21676:44;21713:6;21705;21676:44;:::i;:::-;21668:52;20909:817;-1:-1:-1;;;;;;;;20909:817:105:o;22222:631::-;22478:4;-1:-1:-1;;;;;22588:2:105;22580:6;22576:15;22565:9;22558:34;22640:2;22632:6;22628:15;22623:2;22612:9;22608:18;22601:43;;22692:6;22684;22680:19;22675:2;22664:9;22660:18;22653:47;22736:6;22731:2;22720:9;22716:18;22709:34;22780:3;22774;22763:9;22759:19;22752:32;22801:46;22842:3;22831:9;22827:19;22819:6;22801:46;:::i;23579:338::-;-1:-1:-1;;;;;23758:6:105;23754:55;23743:9;23736:74;23846:2;23841;23830:9;23826:18;23819:30;23717:4;23866:45;23907:2;23896:9;23892:18;23884:6;23866:45;:::i;24624:127::-;24685:10;24680:3;24676:20;24673:1;24666:31;24716:4;24713:1;24706:15;24740:4;24737:1;24730:15;24756:216;24796:1;-1:-1:-1;;;;;24883:2:105;24880:1;24876:10;24905:3;24895:37;;24912:18;;:::i;:::-;24950:10;;24946:20;;;;;24756:216;-1:-1:-1;;24756:216:105:o;24977:380::-;25056:1;25052:12;;;;25099;;;25120:61;;25174:4;25166:6;25162:17;25152:27;;25120:61;25227:2;25219:6;25216:14;25196:18;25193:38;25190:161;;25273:10;25268:3;25264:20;25261:1;25254:31;25308:4;25305:1;25298:15;25336:4;25333:1;25326:15;25190:161;;24977:380;;;:::o;25672:120::-;25712:1;25738;25728:35;;25743:18;;:::i;:::-;-1:-1:-1;25777:9:105;;25672:120::o;28098:378::-;28186:6;28194;28202;28255:2;28243:9;28234:7;28230:23;28226:32;28223:52;;;28271:1;28268;28261:12;28223:52;28294:40;28324:9;28294:40;:::i;:::-;28284:50;;28353:49;28398:2;28387:9;28383:18;28353:49;:::i;:::-;28343:59;;28421:49;28466:2;28455:9;28451:18;28421:49;:::i;:::-;28411:59;;28098:378;;;;;:::o;28998:148::-;29086:4;29065:12;;;29079;;;29061:31;;29104:13;;29101:39;;;29120:18;;:::i;29151:151::-;29241:4;29234:12;;;29220;;;29216:31;;29259:14;;29256:40;;;29276:18;;:::i;29307:409::-;-1:-1:-1;;;;;29514:6:105;29510:55;29499:9;29492:74;29602:6;29597:2;29586:9;29582:18;29575:34;29645:2;29640;29629:9;29625:18;29618:30;29473:4;29665:45;29706:2;29695:9;29691:18;29683:6;29665:45;:::i;30165:293::-;30244:6;30252;30305:2;30293:9;30284:7;30280:23;30276:32;30273:52;;;30321:1;30318;30311:12;30273:52;30344:40;30374:9;30344:40;:::i;:::-;30334:50;;30403:49;30448:2;30437:9;30433:18;30403:49;:::i;:::-;30393:59;;30165:293;;;;;:::o;30463:128::-;30530:9;;;30551:11;;;30548:37;;;30565:18;;:::i;31015:168::-;31088:9;;;31119;;31136:15;;;31130:22;;31116:37;31106:71;;31157:18;;:::i;31679:267::-;31765:6;31818:2;31806:9;31797:7;31793:23;31789:32;31786:52;;;31834:1;31831;31824:12;31786:52;31866:9;31860:16;31885:31;31910:5;31885:31;:::i;31951:135::-;31990:3;32011:17;;;32008:43;;32031:18;;:::i;:::-;-1:-1:-1;32078:1:105;32067:13;;31951:135::o;33074:634::-;33204:6;33212;33220;33228;33236;33244;33252;33260;33313:3;33301:9;33292:7;33288:23;33284:33;33281:53;;;33330:1;33327;33320:12;33281:53;33359:9;33353:16;33343:26;;33409:2;33398:9;33394:18;33388:25;33378:35;;33453:2;33442:9;33438:18;33432:25;33422:35;;33497:2;33486:9;33482:18;33476:25;33466:35;;33541:3;33530:9;33526:19;33520:26;33510:36;;33586:3;33575:9;33571:19;33565:26;33555:36;;33631:3;33620:9;33616:19;33610:26;33600:36;;33655:47;33697:3;33686:9;33682:19;33655:47;:::i;:::-;33645:57;;33074:634;;;;;;;;;;;:::o;33713:587::-;33971:4;-1:-1:-1;;;;;34081:2:105;34073:6;34069:15;34058:9;34051:34;34133:2;34125:6;34121:15;34116:2;34105:9;34101:18;34094:43;;34173:3;34168:2;34157:9;34153:18;34146:31;34194:57;34246:3;34235:9;34231:19;34223:6;34194:57;:::i;:::-;34186:65;;34287:6;34282:2;34271:9;34267:18;34260:34;33713:587;;;;;;;:::o;35969:287::-;36098:3;36136:6;36130:13;36152:66;36211:6;36206:3;36199:4;36191:6;36187:17;36152:66;:::i;:::-;36234:16;;;;;35969:287;-1:-1:-1;;35969:287:105:o;36261:362::-;36466:6;36455:9;36448:25;36509:6;36504:2;36493:9;36489:18;36482:34;36552:2;36547;36536:9;36532:18;36525:30;36429:4;36572:45;36613:2;36602:9;36598:18;36590:6;36572:45;:::i;45530:441::-;45698:4;-1:-1:-1;;;;;45808:2:105;45800:6;45796:15;45785:9;45778:34;45860:2;45852:6;45848:15;45843:2;45832:9;45828:18;45821:43;;45900:2;45895;45884:9;45880:18;45873:30;45920:45;45961:2;45950:9;45946:18;45938:6;45920:45;:::i;45976:301::-;46161:6;46154:14;46147:22;46136:9;46129:41;46206:2;46201;46190:9;46186:18;46179:30;46110:4;46226:45;46267:2;46256:9;46252:18;46244:6;46226:45;:::i;47915:384::-;-1:-1:-1;;;;;;48100:33:105;;48088:46;;48157:13;;48070:3;;48179:74;48157:13;48242:1;48233:11;;48226:4;48214:17;;48179:74;:::i;:::-;48273:16;;;;48291:1;48269:24;;47915:384;-1:-1:-1;;;47915:384:105:o;48304:610::-;48550:13;;48493:3;;48524;;48603:4;48630:15;;;48493:3;48673:175;48687:6;48684:1;48681:13;48673:175;;;48750:13;;48736:28;;48786:14;;;;48823:15;;;;48709:1;48702:9;48673:175;;;-1:-1:-1;;48857:21:105;;;-1:-1:-1;48894:14:105;;;;;-1:-1:-1;;;48304:610:105:o;50657:614::-;50786:6;50794;50847:2;50835:9;50826:7;50822:23;50818:32;50815:52;;;50863:1;50860;50853:12;50815:52;50896:9;50890:16;50925:18;50966:2;50958:6;50955:14;50952:34;;;50982:1;50979;50972:12;50952:34;51005:72;51069:7;51060:6;51049:9;51045:22;51005:72;:::i;:::-;50995:82;;51123:2;51112:9;51108:18;51102:25;51086:41;;51152:2;51142:8;51139:16;51136:36;;;51168:1;51165;51158:12;51136:36;;51191:74;51257:7;51246:8;51235:9;51231:24;51191:74;:::i;:::-;51181:84;;;50657:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":4075,"length":32},{"start":8241,"length":32},{"start":8487,"length":32},{"start":8754,"length":32},{"start":9082,"length":32},{"start":9240,"length":32},{"start":9533,"length":32},{"start":10004,"length":32},{"start":10239,"length":32},{"start":10395,"length":32},{"start":10794,"length":32},{"start":20525,"length":32},{"start":20771,"length":32},{"start":21038,"length":32},{"start":21366,"length":32},{"start":21524,"length":32},{"start":21840,"length":32},{"start":22488,"length":32},{"start":22644,"length":32},{"start":37843,"length":32}],"91790":[{"start":1601,"length":32},{"start":1666,"length":32},{"start":1735,"length":32},{"start":2155,"length":32},{"start":2607,"length":32},{"start":3106,"length":32},{"start":3139,"length":32},{"start":3172,"length":32},{"start":3481,"length":32},{"start":3514,"length":32},{"start":3547,"length":32},{"start":4984,"length":32},{"start":5278,"length":32},{"start":5436,"length":32},{"start":5721,"length":32},{"start":6304,"length":32},{"start":6460,"length":32},{"start":7082,"length":32},{"start":7334,"length":32},{"start":8788,"length":32},{"start":9274,"length":32},{"start":9567,"length":32},{"start":9765,"length":32},{"start":10429,"length":32},{"start":10555,"length":32},{"start":11104,"length":32},{"start":11414,"length":32},{"start":11562,"length":32},{"start":11819,"length":32},{"start":12033,"length":32},{"start":12244,"length":32},{"start":12507,"length":32},{"start":13129,"length":32},{"start":13312,"length":32},{"start":13595,"length":32},{"start":13971,"length":32},{"start":14186,"length":32},{"start":14519,"length":32},{"start":14831,"length":32},{"start":15748,"length":32},{"start":15931,"length":32},{"start":16214,"length":32},{"start":16590,"length":32},{"start":16805,"length":32},{"start":17138,"length":32},{"start":17470,"length":32},{"start":18073,"length":32},{"start":18929,"length":32},{"start":21072,"length":32},{"start":21558,"length":32},{"start":21874,"length":32},{"start":22067,"length":32},{"start":22281,"length":32},{"start":22678,"length":32},{"start":22824,"length":32},{"start":23034,"length":32},{"start":25302,"length":32},{"start":25810,"length":32},{"start":26284,"length":32},{"start":26947,"length":32},{"start":27012,"length":32},{"start":27081,"length":32},{"start":27501,"length":32},{"start":27953,"length":32},{"start":28461,"length":32},{"start":28494,"length":32},{"start":28808,"length":32},{"start":28841,"length":32},{"start":30765,"length":32},{"start":30830,"length":32},{"start":30899,"length":32},{"start":31319,"length":32},{"start":31819,"length":32},{"start":32153,"length":32}],"91798":[{"start":27987,"length":32},{"start":28527,"length":32},{"start":28874,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_BatchTransferFromReentrancy()":"2cb279c6","test_BeforeAfterBatchTransferFromHooks()":"a42b6139","test_BeforeAfterBurnHooks()":"06fb3530","test_BeforeAfterFlashLoanHooks()":"93a5870c","test_BeforeAfterMintHooks()":"b8c238fd","test_BeforeAfterSwapHooksXtoY()":"3f71aea7","test_BeforeAfterSwapHooksYtoX()":"45bf2c09","test_BurnReentrancy()":"7626ddcc","test_FlashLoanReentrancy()":"4f3e1504","test_GetLBHooksParameters()":"8e78d4e3","test_MintReentrancy()":"16c1fcdd","test_SwapReentrancy()":"314bf908"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BatchTransferFromReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BeforeAfterBatchTransferFromHooks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BeforeAfterBurnHooks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BeforeAfterFlashLoanHooks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BeforeAfterMintHooks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BeforeAfterSwapHooksXtoY\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BeforeAfterSwapHooksYtoX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BurnReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_FlashLoanReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetLBHooksParameters\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_MintReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairHooks.t.sol\":\"LBPairHooksTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBBaseHooks.sol\":{\"keccak256\":\"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1\",\"dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairHooks.t.sol\":{\"keccak256\":\"0x8ee9e72828981a5d24d3f61ccd3f63c4ed1f2385405de3768edbf2b854168d93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9322d62668e6ba562af2477422746448f8245ee58dae8bf073d7ed0480e817b6\",\"dweb:/ipfs/Qmcb4m8szBS4E9usVkd8LsKwfuGTJfHjj8GcEvsW1TfBU7\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/MockHooks.sol\":{\"keccak256\":\"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0\",\"dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BatchTransferFromReentrancy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BeforeAfterBatchTransferFromHooks"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BeforeAfterBurnHooks"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BeforeAfterFlashLoanHooks"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BeforeAfterMintHooks"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BeforeAfterSwapHooksXtoY"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BeforeAfterSwapHooksYtoX"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BurnReentrancy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_FlashLoanReentrancy"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetLBHooksParameters"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_MintReentrancy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapReentrancy"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairHooks.t.sol":"LBPairHooksTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBBaseHooks.sol":{"keccak256":"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778","urls":["bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1","dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairHooks.t.sol":{"keccak256":"0x8ee9e72828981a5d24d3f61ccd3f63c4ed1f2385405de3768edbf2b854168d93","urls":["bzz-raw://9322d62668e6ba562af2477422746448f8245ee58dae8bf073d7ed0480e817b6","dweb:/ipfs/Qmcb4m8szBS4E9usVkd8LsKwfuGTJfHjj8GcEvsW1TfBU7"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/MockHooks.sol":{"keccak256":"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3","urls":["bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0","dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":86} \ No newline at end of file diff --git a/abi/LBPairHooks.t.sol/MockLBHooks.json b/abi/LBPairHooks.t.sol/MockLBHooks.json deleted file mode 100644 index fdabe0e1..00000000 --- a/abi/LBPairHooks.t.sol/MockLBHooks.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"afterBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterData","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"afterFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"fees","type":"bytes32","internalType":"bytes32"},{"name":"feesReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsOut","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterTarget","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"afterTargetData","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"beforeBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeData","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"beforeFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amounts","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeTarget","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"beforeTargetData","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getAfterState","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct State","components":[{"name":"reserveX","type":"uint128","internalType":"uint128"},{"name":"reserveY","type":"uint128","internalType":"uint128"},{"name":"protocolFeeX","type":"uint128","internalType":"uint128"},{"name":"protocolFeeY","type":"uint128","internalType":"uint128"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"activeReserveX","type":"uint128","internalType":"uint128"},{"name":"activeReserveY","type":"uint128","internalType":"uint128"},{"name":"volatilityParameters","type":"tuple","internalType":"struct VolatilityParameters","components":[{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"},{"name":"idReference","type":"uint24","internalType":"uint24"},{"name":"timeOfLastUpdate","type":"uint40","internalType":"uint40"}]},{"name":"oracleParameters","type":"tuple","internalType":"struct OracleParameters","components":[{"name":"sampleLifetime","type":"uint8","internalType":"uint8"},{"name":"size","type":"uint16","internalType":"uint16"},{"name":"activeSize","type":"uint16","internalType":"uint16"},{"name":"lastUpdated","type":"uint40","internalType":"uint40"},{"name":"firstTimestamp","type":"uint40","internalType":"uint40"}]}]}],"stateMutability":"view"},{"type":"function","name":"getBeforeState","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct State","components":[{"name":"reserveX","type":"uint128","internalType":"uint128"},{"name":"reserveY","type":"uint128","internalType":"uint128"},{"name":"protocolFeeX","type":"uint128","internalType":"uint128"},{"name":"protocolFeeY","type":"uint128","internalType":"uint128"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"activeReserveX","type":"uint128","internalType":"uint128"},{"name":"activeReserveY","type":"uint128","internalType":"uint128"},{"name":"volatilityParameters","type":"tuple","internalType":"struct VolatilityParameters","components":[{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"},{"name":"idReference","type":"uint24","internalType":"uint24"},{"name":"timeOfLastUpdate","type":"uint40","internalType":"uint40"}]},{"name":"oracleParameters","type":"tuple","internalType":"struct OracleParameters","components":[{"name":"sampleLifetime","type":"uint8","internalType":"uint8"},{"name":"size","type":"uint16","internalType":"uint16"},{"name":"activeSize","type":"uint16","internalType":"uint16"},{"name":"lastUpdated","type":"uint40","internalType":"uint40"},{"name":"firstTimestamp","type":"uint40","internalType":"uint40"}]}]}],"stateMutability":"view"},{"type":"function","name":"getLBPair","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ILBPair"}],"stateMutability":"view"},{"type":"function","name":"getState","inputs":[],"outputs":[{"name":"state","type":"tuple","internalType":"struct State","components":[{"name":"reserveX","type":"uint128","internalType":"uint128"},{"name":"reserveY","type":"uint128","internalType":"uint128"},{"name":"protocolFeeX","type":"uint128","internalType":"uint128"},{"name":"protocolFeeY","type":"uint128","internalType":"uint128"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"activeReserveX","type":"uint128","internalType":"uint128"},{"name":"activeReserveY","type":"uint128","internalType":"uint128"},{"name":"volatilityParameters","type":"tuple","internalType":"struct VolatilityParameters","components":[{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"},{"name":"idReference","type":"uint24","internalType":"uint24"},{"name":"timeOfLastUpdate","type":"uint40","internalType":"uint40"}]},{"name":"oracleParameters","type":"tuple","internalType":"struct OracleParameters","components":[{"name":"sampleLifetime","type":"uint8","internalType":"uint8"},{"name":"size","type":"uint16","internalType":"uint16"},{"name":"activeSize","type":"uint16","internalType":"uint16"},{"name":"lastUpdated","type":"uint40","internalType":"uint40"},{"name":"firstTimestamp","type":"uint40","internalType":"uint40"}]}]}],"stateMutability":"view"},{"type":"function","name":"isLinked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"onHooksSet","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"pair","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"reset","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAfter","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBefore","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPair","inputs":[{"name":"_pair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"LBBaseHooks__InvalidCaller","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"LBBaseHooks__NotLinked","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506127ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806378b253c6116100f9578063c70e8bd411610097578063ea9db9d311610071578063ea9db9d31461052e578063f08e95c614610541578063fdc27257146106d0578063feee3735146106e357600080fd5b8063c70e8bd41461050b578063d826f88f1461051e578063df0ccc481461052657600080fd5b80638187f516116100d35780638187f516146104b8578063a8aa1b31146104e8578063c153f4cd146104fb578063c2fb5a641461050357600080fd5b806378b253c61461030357806379c8ccf7146104925780637a51a4c6146104a557600080fd5b80634e430b5a11610166578063571eed3711610140578063571eed37146102c05780635f9c01b1146102d557806360bed5f3146102dd57806367ddb278146102f057600080fd5b80634e430b5a14610287578063505d90331461029a57806353e8079b146102ad57600080fd5b80631865c57d116101975780631865c57d1461024a5780632aac3e121461025f57806333ad78d11461027257600080fd5b806309fa1f90146101be5780630d4abdb3146101db5780630f146a3e1461021f575b600080fd5b6101c66106f6565b60405190151581526020015b60405180910390f35b6101ee6101e936600461202a565b610705565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101d2565b600f54610232906001600160a01b031681565b6040516001600160a01b0390911681526020016101d2565b61025261072e565b6040516101d29190612093565b601154610232906001600160a01b031681565b610285610280366004612221565b610b04565b005b6101ee610295366004612274565b610b32565b6101ee6102a83660046122a7565b610b7d565b6101ee6102bb3660046122e3565b610ba2565b6102c8610bc9565b6040516101d29190612359565b610232610c57565b6101ee6102eb36600461238c565b610c6b565b6101ee6102fe3660046123ce565b610c92565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526003546001600160801b038082168952600160801b918290048116898801526004548082168a8d01529190910481168886015260055462ffffff8082168a87015263010000009182900483168a8601526006549092169289019290925289518085018b526007548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff90811682870152968801528851918201895260085460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6104a03660046123ce565b610cbf565b6101ee6104b336600461202a565b610cec565b6102856104c6366004612470565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600254610232906001600160a01b031681565b6102c8610d15565b6102c8610d22565b610285610519366004612221565b610d2f565b610285610d57565b6102c8610df8565b6101ee61053c3660046123ce565b610e05565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526009546001600160801b038082168952600160801b91829004811689880152600a548082168a8d015291909104811688860152600b5462ffffff8082168a87015263010000009182900483168a860152600c549092169289019290925289518085018b52600d548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff908116828701529688015288519182018952600e5460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6106de3660046123ce565b610e32565b6101ee6106f13660046122e3565b610e5f565b6000610700610e86565b905090565b600061070f610f13565b61071c8686868686610f47565b50630d4abdb360e01b95945050505050565b6040805161012081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c086018590528651808301885285815280850186905280880186905280840186905260e08701528651908101875284815292830184905294820183905281018290529283015261010081019190915260006107c86002546001600160a01b031690565b9050806001600160a01b0316630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b91906124a2565b6001600160801b039081166020850152168252604080516306c6fe7560e51b815281516001600160a01b0384169263d8dfcea092600480820193918290030181865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a391906124a2565b8360400184606001826001600160801b03166001600160801b0316815250826001600160801b03166001600160801b031681525050506000816001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d91906124e8565b62ffffff1660808401819052604051630157d2d160e31b8152600481018290529091506001600160a01b03831690630abe9688906024016040805180830381865afa158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b491906124a2565b6001600160801b0390811660c08601521660a084015260e083015160408051638d7024e560e01b815290516001600160a01b03851691638d7024e59160048083019260809291908290030181865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a389190612518565b64ffffffffff16606085015262ffffff908116604080860191909152918116602085015291909116825261010085015181516315460a2560e21b8152915190916001600160a01b0386169163551828949160048082019260a0929091908290030181865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad2919061257e565b64ffffffffff908116608087015216606085015261ffff908116604085015216602083015260ff169052509192915050565b600f80546001600160a01b0319166001600160a01b0385161790556010610b2c828483612681565b50505050565b6000610b3c610f13565b610b44610e86565b610b6157604051632def67a360e21b815260040160405180910390fd5b610b6c8484846110fd565b5063272185ad60e11b5b9392505050565b6000610b87610f13565b610b92848484611297565b5063505d903360e01b9392505050565b6000610bac610f13565b610bb88585858561144e565b506353e8079b60e01b949350505050565b60008054610bd690612601565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0290612601565b8015610c4f5780601f10610c2457610100808354040283529160200191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3257829003601f168201915b505050505081565b60006107006002546001600160a01b031690565b6000610c75610f13565b610c818585858561144e565b506360bed5f360e01b949350505050565b6000610c9c610f13565b610cab888888888888886115fc565b50630cfbb64f60e31b979650505050505050565b6000610cc9610f13565b610cd8888888888888886117b6565b506379c8ccf760e01b979650505050505050565b6000610cf6610f13565b610d038686868686611967565b50633d28d26360e11b95945050505050565b60128054610bd690612601565b60018054610bd690612601565b601180546001600160a01b0319166001600160a01b0385161790556012610b2c828483612681565b610d5f611b16565b600060038190556004819055600580546001600160981b0319908116909155600680546001600160801b0319908116909155600780546dffffffffffffffffffffffffffff19908116909155600880546effffffffffffffffffffffffffffff199081169091556009859055600a94909455600b8054909316909255600c80549091169055600d80549091169055600e80549091169055565b60108054610bd690612601565b6000610e0f610f13565b610e1e888888888888886117b6565b5063ea9db9d360e01b979650505050505050565b6000610e3c610f13565b610e4b888888888888886115fc565b5063fdc2725760e01b979650505050505050565b6000610e69610f13565b610e7585858585611b2d565b5063feee373560e01b949350505050565b600080610f02610e9e6002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612741565b90565b6001600160a01b0316301492915050565b6002546001600160a01b03163314610f4557604051634a27038360e01b81523360048201526024015b60405180910390fd5b565b6001600160a01b03851630146110f657610f648585858585611cdb565b610f6c61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611cf0565b5050505050565b611108838383611dc1565b61111061072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055505050565b306001600160a01b038416036112ac57505050565b6112b7838383611dc1565b6112bf61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055611449611cf0565b505050565b6001600160a01b0384163014610b2c5761146a84848484611dce565b61147261072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611ddc565b6001600160a01b03871630146117ad5761161b87878787878787611e2a565b61162361072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611ddc565b50505050505050565b6001600160a01b03871630146117ad576117d587878787878787611e42565b6117dd61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611cf0565b6001600160a01b03851630146110f6576119848585858585611e4f565b61198c61072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611ddc565b611b21600080611f74565b610f4560016000611f74565b6001600160a01b0384163014610b2c57611b4984848484611e5d565b611b5161072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611cf0565b6000611ce8368280612681565b505050505050565b600f546001600160a01b0316611d0257565b600f5460108054611da4926001600160a01b03169190611d2190612601565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4d90612601565b8015611d9a5780601f10611d6f57610100808354040283529160200191611d9a565b820191906000526020600020905b815481529060010190602001808311611d7d57829003601f168201915b5050505050611e6a565b50600f80546001600160a01b0319169055610f4560106000611f74565b6000610b2c368280612681565b60016110f636600083612681565b6011546001600160a01b0316611dee57565b60115460128054611e0d926001600160a01b03169190611d2190612601565b50601180546001600160a01b0319169055610f4560126000611f74565b6001611e3836600083612681565b5050505050505050565b6000611e38368280612681565b6001611ce836600083612681565b60006110f6368280612681565b6060610b768383600084600080856001600160a01b03168486604051611e90919061275a565b60006040518083038185875af1925050503d8060008114611ecd576040519150601f19603f3d011682016040523d82523d6000602084013e611ed2565b606091505b5091509150611ee2868383611eec565b9695505050505050565b606082611f0157611efc82611f48565b610b76565b8151158015611f1857506001600160a01b0384163b155b15611f4157604051639996b31560e01b81526001600160a01b0385166004820152602401610f3c565b5080610b76565b805115611f585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b508054611f8090612601565b6000825580601f10611f90575050565b601f016020900490600052602060002090810190611f7191905b80821115611fbe5760008155600101611faa565b5090565b80356001600160a01b0381168114611fd957600080fd5b919050565b60008083601f840112611ff057600080fd5b50813567ffffffffffffffff81111561200857600080fd5b6020830191508360208260051b850101111561202357600080fd5b9250929050565b60008060008060006080868803121561204257600080fd5b61204b86611fc2565b945061205960208701611fc2565b9350604086013567ffffffffffffffff81111561207557600080fd5b61208188828901611fde565b96999598509660600135949350505050565b81516001600160801b031681526020808301516102008301916120c0908401826001600160801b03169052565b5060408301516120db60408401826001600160801b03169052565b5060608301516120f660608401826001600160801b03169052565b50608083015161210d608084018262ffffff169052565b5060a083015161212860a08401826001600160801b03169052565b5060c083015161214360c08401826001600160801b03169052565b5060e083015161218960e084018262ffffff8082511683528060208301511660208401528060408301511660408401525064ffffffffff60608201511660608301525050565b50610100830151805160ff16610160840152602081015161ffff9081166101808501526040820151166101a0840152606081015164ffffffffff9081166101c08501526080820151166101e08401525092915050565b60008083601f8401126121f157600080fd5b50813567ffffffffffffffff81111561220957600080fd5b60208301915083602082850101111561202357600080fd5b60008060006040848603121561223657600080fd5b61223f84611fc2565b9250602084013567ffffffffffffffff81111561225b57600080fd5b612267868287016121df565b9497909650939450505050565b60008060006040848603121561228957600080fd5b83359250602084013567ffffffffffffffff81111561225b57600080fd5b6000806000606084860312156122bc57600080fd5b6122c584611fc2565b92506122d360208501611fc2565b9150604084013590509250925092565b600080600080608085870312156122f957600080fd5b61230285611fc2565b935061231060208601611fc2565b92506040850135801515811461232557600080fd5b9396929550929360600135925050565b60005b83811015612350578181015183820152602001612338565b50506000910152565b6020815260008251806020840152612378816040850160208701612335565b601f01601f19169190910160400192915050565b600080600080608085870312156123a257600080fd5b6123ab85611fc2565b93506123b960208601611fc2565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156123e957600080fd5b6123f288611fc2565b965061240060208901611fc2565b955061240e60408901611fc2565b9450606088013567ffffffffffffffff8082111561242b57600080fd5b6124378b838c01611fde565b909650945060808a013591508082111561245057600080fd5b5061245d8a828b01611fde565b989b979a50959850939692959293505050565b60006020828403121561248257600080fd5b610b7682611fc2565b80516001600160801b0381168114611fd957600080fd5b600080604083850312156124b557600080fd5b6124be8361248b565b91506124cc6020840161248b565b90509250929050565b805162ffffff81168114611fd957600080fd5b6000602082840312156124fa57600080fd5b610b76826124d5565b805164ffffffffff81168114611fd957600080fd5b6000806000806080858703121561252e57600080fd5b612537856124d5565b9350612545602086016124d5565b9250612553604086016124d5565b915061256160608601612503565b905092959194509250565b805161ffff81168114611fd957600080fd5b600080600080600060a0868803121561259657600080fd5b855160ff811681146125a757600080fd5b94506125b56020870161256c565b93506125c36040870161256c565b92506125d160608701612503565b91506125df60808701612503565b90509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144957600081815260208120601f850160051c810160208610156126625750805b601f850160051c820191505b81811015611ce85782815560010161266e565b67ffffffffffffffff831115612699576126996125eb565b6126ad836126a78354612601565b8361263b565b6000601f8411600181146126e157600085156126c95750838201355b600019600387901b1c1916600186901b1783556110f6565b600083815260209020601f19861690835b8281101561271257868501358255602094850194600190920191016126f2565b508682101561272f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561275357600080fd5b5051919050565b6000825161276c818460208701612335565b919091019291505056fea264697066735822122084a91b1513badbad9b3099de6423677e00cbf57bc74a29781fb273976fe7b35164736f6c63430008140033","sourceMap":"21949:5549:86:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101b95760003560e01c806378b253c6116100f9578063c70e8bd411610097578063ea9db9d311610071578063ea9db9d31461052e578063f08e95c614610541578063fdc27257146106d0578063feee3735146106e357600080fd5b8063c70e8bd41461050b578063d826f88f1461051e578063df0ccc481461052657600080fd5b80638187f516116100d35780638187f516146104b8578063a8aa1b31146104e8578063c153f4cd146104fb578063c2fb5a641461050357600080fd5b806378b253c61461030357806379c8ccf7146104925780637a51a4c6146104a557600080fd5b80634e430b5a11610166578063571eed3711610140578063571eed37146102c05780635f9c01b1146102d557806360bed5f3146102dd57806367ddb278146102f057600080fd5b80634e430b5a14610287578063505d90331461029a57806353e8079b146102ad57600080fd5b80631865c57d116101975780631865c57d1461024a5780632aac3e121461025f57806333ad78d11461027257600080fd5b806309fa1f90146101be5780630d4abdb3146101db5780630f146a3e1461021f575b600080fd5b6101c66106f6565b60405190151581526020015b60405180910390f35b6101ee6101e936600461202a565b610705565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101d2565b600f54610232906001600160a01b031681565b6040516001600160a01b0390911681526020016101d2565b61025261072e565b6040516101d29190612093565b601154610232906001600160a01b031681565b610285610280366004612221565b610b04565b005b6101ee610295366004612274565b610b32565b6101ee6102a83660046122a7565b610b7d565b6101ee6102bb3660046122e3565b610ba2565b6102c8610bc9565b6040516101d29190612359565b610232610c57565b6101ee6102eb36600461238c565b610c6b565b6101ee6102fe3660046123ce565b610c92565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526003546001600160801b038082168952600160801b918290048116898801526004548082168a8d01529190910481168886015260055462ffffff8082168a87015263010000009182900483168a8601526006549092169289019290925289518085018b526007548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff90811682870152968801528851918201895260085460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6104a03660046123ce565b610cbf565b6101ee6104b336600461202a565b610cec565b6102856104c6366004612470565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600254610232906001600160a01b031681565b6102c8610d15565b6102c8610d22565b610285610519366004612221565b610d2f565b610285610d57565b6102c8610df8565b6101ee61053c3660046123ce565b610e05565b610252604080516101208082018352600080835260208084018290528385018290526060808501839052608080860184905260a080870185905260c080880186905288518084018a52868152808601879052808a0187905280850187905260e0808a019190915289518084018b52878152808701889052808b018890528086018890528085019790975261010098890196909652885196870189526009546001600160801b038082168952600160801b91829004811689880152600a548082168a8d015291909104811688860152600b5462ffffff8082168a87015263010000009182900483168a860152600c549092169289019290925289518085018b52600d548083168252838104831682890152600160301b8104909216818c0152600160481b90910464ffffffffff908116828701529688015288519182018952600e5460ff8116835288810461ffff9081169684019690965290810490941697810197909752650100000000008304841691870191909152600160501b909104909116908401529081019190915290565b6101ee6106de3660046123ce565b610e32565b6101ee6106f13660046122e3565b610e5f565b6000610700610e86565b905090565b600061070f610f13565b61071c8686868686610f47565b50630d4abdb360e01b95945050505050565b6040805161012081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c086018590528651808301885285815280850186905280880186905280840186905260e08701528651908101875284815292830184905294820183905281018290529283015261010081019190915260006107c86002546001600160a01b031690565b9050806001600160a01b0316630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b91906124a2565b6001600160801b039081166020850152168252604080516306c6fe7560e51b815281516001600160a01b0384169263d8dfcea092600480820193918290030181865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a391906124a2565b8360400184606001826001600160801b03166001600160801b0316815250826001600160801b03166001600160801b031681525050506000816001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093d91906124e8565b62ffffff1660808401819052604051630157d2d160e31b8152600481018290529091506001600160a01b03831690630abe9688906024016040805180830381865afa158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b491906124a2565b6001600160801b0390811660c08601521660a084015260e083015160408051638d7024e560e01b815290516001600160a01b03851691638d7024e59160048083019260809291908290030181865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a389190612518565b64ffffffffff16606085015262ffffff908116604080860191909152918116602085015291909116825261010085015181516315460a2560e21b8152915190916001600160a01b0386169163551828949160048082019260a0929091908290030181865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad2919061257e565b64ffffffffff908116608087015216606085015261ffff908116604085015216602083015260ff169052509192915050565b600f80546001600160a01b0319166001600160a01b0385161790556010610b2c828483612681565b50505050565b6000610b3c610f13565b610b44610e86565b610b6157604051632def67a360e21b815260040160405180910390fd5b610b6c8484846110fd565b5063272185ad60e11b5b9392505050565b6000610b87610f13565b610b92848484611297565b5063505d903360e01b9392505050565b6000610bac610f13565b610bb88585858561144e565b506353e8079b60e01b949350505050565b60008054610bd690612601565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0290612601565b8015610c4f5780601f10610c2457610100808354040283529160200191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3257829003601f168201915b505050505081565b60006107006002546001600160a01b031690565b6000610c75610f13565b610c818585858561144e565b506360bed5f360e01b949350505050565b6000610c9c610f13565b610cab888888888888886115fc565b50630cfbb64f60e31b979650505050505050565b6000610cc9610f13565b610cd8888888888888886117b6565b506379c8ccf760e01b979650505050505050565b6000610cf6610f13565b610d038686868686611967565b50633d28d26360e11b95945050505050565b60128054610bd690612601565b60018054610bd690612601565b601180546001600160a01b0319166001600160a01b0385161790556012610b2c828483612681565b610d5f611b16565b600060038190556004819055600580546001600160981b0319908116909155600680546001600160801b0319908116909155600780546dffffffffffffffffffffffffffff19908116909155600880546effffffffffffffffffffffffffffff199081169091556009859055600a94909455600b8054909316909255600c80549091169055600d80549091169055600e80549091169055565b60108054610bd690612601565b6000610e0f610f13565b610e1e888888888888886117b6565b5063ea9db9d360e01b979650505050505050565b6000610e3c610f13565b610e4b888888888888886115fc565b5063fdc2725760e01b979650505050505050565b6000610e69610f13565b610e7585858585611b2d565b5063feee373560e01b949350505050565b600080610f02610e9e6002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612741565b90565b6001600160a01b0316301492915050565b6002546001600160a01b03163314610f4557604051634a27038360e01b81523360048201526024015b60405180910390fd5b565b6001600160a01b03851630146110f657610f648585858585611cdb565b610f6c61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611cf0565b5050505050565b611108838383611dc1565b61111061072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055505050565b306001600160a01b038416036112ac57505050565b6112b7838383611dc1565b6112bf61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055611449611cf0565b505050565b6001600160a01b0384163014610b2c5761146a84848484611dce565b61147261072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611ddc565b6001600160a01b03871630146117ad5761161b87878787878787611e2a565b61162361072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611ddc565b50505050505050565b6001600160a01b03871630146117ad576117d587878787878787611e42565b6117dd61072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556117ad611cf0565b6001600160a01b03851630146110f6576119848585858585611e4f565b61198c61072e565b80516020808301516001600160801b03928316600160801b91841682021760095560408085015160608087015191861691861690930217600a55608080860151600b805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600c80546001600160801b031916919098161790965560e08701518051600d805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff93841602179055610100968701518051600e8054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b91909316029190911790556110f6611ddc565b611b21600080611f74565b610f4560016000611f74565b6001600160a01b0384163014610b2c57611b4984848484611e5d565b611b5161072e565b80516020808301516001600160801b03928316600160801b918416820217600355604080850151606080870151918616918616909302176004556080808601516005805460a089015162ffffff9384166001600160981b031990921691909117630100000091891682021790915560c0880151600680546001600160801b031916919098161790965560e087015180516007805483890151848801519489015193861665ffffffffffff19909216919091179085168a02176dffffffffffffffff0000000000001916600160301b939094169290920264ffffffffff60481b191692909217600160481b64ffffffffff9384160217905561010096870151805160088054978301519583015196830151929094015160ff90911662ffffff199097169690961761ffff9485169098029790971769ffffffffffffff00000019169290931690940269ffffffffff000000000019161765010000000000948216949094029390931764ffffffffff60501b1916600160501b9190931602919091179055610b2c611cf0565b6000611ce8368280612681565b505050505050565b600f546001600160a01b0316611d0257565b600f5460108054611da4926001600160a01b03169190611d2190612601565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4d90612601565b8015611d9a5780601f10611d6f57610100808354040283529160200191611d9a565b820191906000526020600020905b815481529060010190602001808311611d7d57829003601f168201915b5050505050611e6a565b50600f80546001600160a01b0319169055610f4560106000611f74565b6000610b2c368280612681565b60016110f636600083612681565b6011546001600160a01b0316611dee57565b60115460128054611e0d926001600160a01b03169190611d2190612601565b50601180546001600160a01b0319169055610f4560126000611f74565b6001611e3836600083612681565b5050505050505050565b6000611e38368280612681565b6001611ce836600083612681565b60006110f6368280612681565b6060610b768383600084600080856001600160a01b03168486604051611e90919061275a565b60006040518083038185875af1925050503d8060008114611ecd576040519150601f19603f3d011682016040523d82523d6000602084013e611ed2565b606091505b5091509150611ee2868383611eec565b9695505050505050565b606082611f0157611efc82611f48565b610b76565b8151158015611f1857506001600160a01b0384163b155b15611f4157604051639996b31560e01b81526001600160a01b0385166004820152602401610f3c565b5080610b76565b805115611f585780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b508054611f8090612601565b6000825580601f10611f90575050565b601f016020900490600052602060002090810190611f7191905b80821115611fbe5760008155600101611faa565b5090565b80356001600160a01b0381168114611fd957600080fd5b919050565b60008083601f840112611ff057600080fd5b50813567ffffffffffffffff81111561200857600080fd5b6020830191508360208260051b850101111561202357600080fd5b9250929050565b60008060008060006080868803121561204257600080fd5b61204b86611fc2565b945061205960208701611fc2565b9350604086013567ffffffffffffffff81111561207557600080fd5b61208188828901611fde565b96999598509660600135949350505050565b81516001600160801b031681526020808301516102008301916120c0908401826001600160801b03169052565b5060408301516120db60408401826001600160801b03169052565b5060608301516120f660608401826001600160801b03169052565b50608083015161210d608084018262ffffff169052565b5060a083015161212860a08401826001600160801b03169052565b5060c083015161214360c08401826001600160801b03169052565b5060e083015161218960e084018262ffffff8082511683528060208301511660208401528060408301511660408401525064ffffffffff60608201511660608301525050565b50610100830151805160ff16610160840152602081015161ffff9081166101808501526040820151166101a0840152606081015164ffffffffff9081166101c08501526080820151166101e08401525092915050565b60008083601f8401126121f157600080fd5b50813567ffffffffffffffff81111561220957600080fd5b60208301915083602082850101111561202357600080fd5b60008060006040848603121561223657600080fd5b61223f84611fc2565b9250602084013567ffffffffffffffff81111561225b57600080fd5b612267868287016121df565b9497909650939450505050565b60008060006040848603121561228957600080fd5b83359250602084013567ffffffffffffffff81111561225b57600080fd5b6000806000606084860312156122bc57600080fd5b6122c584611fc2565b92506122d360208501611fc2565b9150604084013590509250925092565b600080600080608085870312156122f957600080fd5b61230285611fc2565b935061231060208601611fc2565b92506040850135801515811461232557600080fd5b9396929550929360600135925050565b60005b83811015612350578181015183820152602001612338565b50506000910152565b6020815260008251806020840152612378816040850160208701612335565b601f01601f19169190910160400192915050565b600080600080608085870312156123a257600080fd5b6123ab85611fc2565b93506123b960208601611fc2565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156123e957600080fd5b6123f288611fc2565b965061240060208901611fc2565b955061240e60408901611fc2565b9450606088013567ffffffffffffffff8082111561242b57600080fd5b6124378b838c01611fde565b909650945060808a013591508082111561245057600080fd5b5061245d8a828b01611fde565b989b979a50959850939692959293505050565b60006020828403121561248257600080fd5b610b7682611fc2565b80516001600160801b0381168114611fd957600080fd5b600080604083850312156124b557600080fd5b6124be8361248b565b91506124cc6020840161248b565b90509250929050565b805162ffffff81168114611fd957600080fd5b6000602082840312156124fa57600080fd5b610b76826124d5565b805164ffffffffff81168114611fd957600080fd5b6000806000806080858703121561252e57600080fd5b612537856124d5565b9350612545602086016124d5565b9250612553604086016124d5565b915061256160608601612503565b905092959194509250565b805161ffff81168114611fd957600080fd5b600080600080600060a0868803121561259657600080fd5b855160ff811681146125a757600080fd5b94506125b56020870161256c565b93506125c36040870161256c565b92506125d160608701612503565b91506125df60808701612503565b90509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561144957600081815260208120601f850160051c810160208610156126625750805b601f850160051c820191505b81811015611ce85782815560010161266e565b67ffffffffffffffff831115612699576126996125eb565b6126ad836126a78354612601565b8361263b565b6000601f8411600181146126e157600085156126c95750838201355b600019600387901b1c1916600186901b1783556110f6565b600083815260209020601f19861690835b8281101561271257868501358255602094850194600190920191016126f2565b508682101561272f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561275357600080fd5b5051919050565b6000825161276c818460208701612335565b919091019291505056fea264697066735822122084a91b1513badbad9b3099de6423677e00cbf57bc74a29781fb273976fe7b35164736f6c63430008140033","sourceMap":"21949:5549:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:93:41;;;:::i;:::-;;;179:14:105;;172:22;154:41;;142:2;127:18;1050:93:41;;;;;;;;4643:316;;;;;;:::i;:::-;;:::i;:::-;;;1612:20:105;1600:33;;;1582:52;;1570:2;1555:18;4643:316:41;1438:202:105;22053:27:86;;;;;-1:-1:-1;;;;;22053:27:86;;;;;;-1:-1:-1;;;;;1809:55:105;;;1791:74;;1779:2;1764:18;22053:27:86;1645:226:105;26271:793:86;;;:::i;:::-;;;;;;;:::i;22122:26::-;;;;;-1:-1:-1;;;;;22122:26:86;;;22520:134;;;;;;:::i;:::-;;:::i;:::-;;1413:328:41;;;;;;:::i;:::-;;:::i;3344:260::-;;;;;;:::i;:::-;;:::i;2747:273::-;;;;;;:::i;:::-;;:::i;136:23:103:-;;;:::i;:::-;;;;;;;:::i;795:98:41:-;;;:::i;3972:287::-;;;;;;:::i;:::-;;:::i;8249:351::-;;;;;;:::i;:::-;;:::i;22189:97:86:-;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22260:19:86;;;;;;;22267:12;22260:19;-1:-1:-1;;;;;22260:19:86;;;;;-1:-1:-1;;;22260:19:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22260:19:86;;;;;;;;;-1:-1:-1;;;22260:19:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22260:19:86;;;;;;;;;;;;;;;;;;22189:97;7496:354:41;;;;;;:::i;:::-;;:::i;5326:301::-;;;;;;:::i;:::-;;:::i;220:76:103:-;;;;;;:::i;:::-;277:4;:12;;-1:-1:-1;;;;;;277:12:103;-1:-1:-1;;;;;277:12:103;;;;;;;;;;220:76;194:19;;;;;-1:-1:-1;;;;;194:19:103;;;22154:28:86;;;:::i;165:22:103:-;;;:::i;22660:131:86:-;;;;;;:::i;:::-;;:::i;22393:121::-;;;:::i;22086:29::-;;;:::i;6037:327:41:-;;;;;;:::i;:::-;;:::i;22292:95:86:-;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22362:18:86;;;;;;;22369:11;22362:18;-1:-1:-1;;;;;22362:18:86;;;;;-1:-1:-1;;;22362:18:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22362:18:86;;;;;;;;;-1:-1:-1;;;22362:18:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22362:18:86;;;;;;;;;;;;;;;;;;22292:95;6766:324:41;;;;;;:::i;:::-;;:::i;2108:274::-;;;;;;:::i;:::-;;:::i;1050:93::-;1102:4;1125:11;:9;:11::i;:::-;1118:18;;1050:93;:::o;4643:316::-;4830:6;659:21;:19;:21::i;:::-;4852:58:::1;4864:6;4872:2;4876:16;;4894:15;4852:11;:58::i;:::-;-1:-1:-1::0;;;;4643:316:41;;;;;;;:::o;26271:793:86:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26342:14:86;26359:12;496:4:103;;-1:-1:-1;;;;;496:4:103;;400:108;26359:12:86;26342:29;;26417:6;-1:-1:-1;;;;;26417:18:86;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26382:55:86;;;26399:14;;;26382:55;;;;26490:24;;;-1:-1:-1;;;26490:24:86;;;;-1:-1:-1;;;;;26490:22:86;;;;;:24;;;;;;;;;;;:22;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26448:5;:18;;26468:5;:18;;26447:67;-1:-1:-1;;;;;26447:67:86;-1:-1:-1;;;;;26447:67:86;;;;;-1:-1:-1;;;;;26447:67:86;-1:-1:-1;;;;;26447:67:86;;;;;;26524:15;26560:6;-1:-1:-1;;;;;26560:18:86;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26543:37;;:14;;;:37;;;26638:23;;-1:-1:-1;;;26638:23:86;;;;;9908:40:105;;;26543:37:86;;-1:-1:-1;;;;;;26638:13:86;;;;;9881:18:105;;26638:23:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26591:70:86;;;26614:20;;;26591:70;;26592:20;;;26591:70;26705:26;;;;26843:33;;;-1:-1:-1;;;26843:33:86;;;;-1:-1:-1;;;;;26843:31:86;;;;;:33;;;;;;;;;;;;;;:31;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26741:135;;26808:19;;;26741:135;;;;;26792:14;;;;26741:135;;;;;;;26768:22;;;26741:135;;;;;;;26916:22;;;;27029:28;;-1:-1:-1;;;27029:28:86;;;;26916:22;;-1:-1:-1;;;;;27029:26:86;;;;;:28;;;;;;;;;;;;;;;:26;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26948:109;;;;27008:17;;;26948:109;;26992:14;;;26948:109;;;;;26977:13;;;26948:109;;26968:7;;;26948:109;;;;;-1:-1:-1;26271:793:86;;;-1:-1:-1;;26271:793:86:o;22520:134::-;22593:12;:21;;-1:-1:-1;;;;;;22593:21:86;-1:-1:-1;;;;;22593:21:86;;;;;22624:16;:23;22643:4;;22624:16;:23;:::i;:::-;;22520:134;;;:::o;1413:328:41:-;1566:6;659:21;:19;:21::i;:::-;1593:11:::1;:9;:11::i;:::-;1588:49;;1613:24;;-1:-1:-1::0;;;1613:24:41::1;;;;;;;;;;;1588:49;1648:44;1660:15;1677:14;;1648:11;:44::i;:::-;-1:-1:-1::0;;;;690:1:41::1;1413:328:::0;;;;;:::o;3344:260::-;3491:6;659:21;:19;:21::i;:::-;3513:37:::1;3530:6;3538:2;3542:7;3513:16;:37::i;:::-;-1:-1:-1::0;;;;3344:260:41;;;;;:::o;2747:273::-;2906:6;659:21;:19;:21::i;:::-;2928:44:::1;2939:6;2947:2;2951:8;2961:10;2928;:44::i;:::-;-1:-1:-1::0;;;;2747:273:41;;;;;;:::o;136:23:103:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;795:98:41:-;848:7;874:12;496:4:103;;-1:-1:-1;;;;;496:4:103;;400:108;3972:287:41;4137:6;659:21;:19;:21::i;:::-;4159:47:::1;4175:6;4183:2;4187:4;4193:12;4159:15;:47::i;:::-;-1:-1:-1::0;;;;3972:287:41;;;;;;:::o;8249:351::-;8466:6;659:21;:19;:21::i;:::-;8484:55:::1;8508:6;8516:4;8522:2;8526:3;;8531:7;;8484:23;:55::i;:::-;-1:-1:-1::0;;;;8249:351:41;;;;;;;;;:::o;7496:354::-;7714:6;659:21;:19;:21::i;:::-;7732:56:::1;7757:6;7765:4;7771:2;7775:3;;7780:7;;7732:24;:56::i;:::-;-1:-1:-1::0;;;;7496:354:41;;;;;;;;;:::o;5326:301::-;5506:6;659:21;:19;:21::i;:::-;5528:51:::1;5539:6;5547:2;5551:16;;5569:9;5528:10;:51::i;:::-;-1:-1:-1::0;;;;5326:301:41;;;;;;;:::o;22154:28:86:-;;;;;;;:::i;165:22:103:-;;;;;;;:::i;22660:131:86:-;22732:11;:20;;-1:-1:-1;;;;;;22732:20:86;-1:-1:-1;;;;;22732:20:86;;;;;22762:15;:22;22780:4;;22762:15;:22;:::i;22393:121::-;22436:13;:11;:13::i;:::-;22467:12;;22460:19;;;;;;;;;;-1:-1:-1;;;;;;22460:19:86;;;;;;;;;-1:-1:-1;;;;;;22460:19:86;;;;;;;;;-1:-1:-1;;22460:19:86;;;;;;;;;-1:-1:-1;;22460:19:86;;;;;;;22489:18;;;22460:19;22489:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22393:121::o;22086:29::-;;;;;;;:::i;6037:327:41:-;6248:6;659:21;:19;:21::i;:::-;6266:49:::1;6278:6;6286:4;6292:2;6296:3;;6301:13;;6266:11;:49::i;:::-;-1:-1:-1::0;;;;6037:327:41;;;;;;;;;:::o;6766:324::-;6976:6;659:21;:19;:21::i;:::-;6994:48:::1;7005:6;7013:4;7019:2;7023:3;;7028:13;;6994:10;:48::i;:::-;-1:-1:-1::0;;;;6766:324:41;;;;;;;;;:::o;2108:274::-;2267:6;659:21;:19;:21::i;:::-;2289:44:::1;2301:6;2309:2;2313:8;2323:9;2289:11;:44::i;:::-;-1:-1:-1::0;;;;2108:274:41;;;;;;:::o;8998:181::-;9050:4;9066:13;9082:51;9097:12;496:4:103;;-1:-1:-1;;;;;496:4:103;;400:108;9097:12:41;-1:-1:-1;;;;;9097:33:41;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4055:15:66;3932:148;9082:51:41;-1:-1:-1;;;;;9150:22:41;9167:4;9150:22;;8998:181;-1:-1:-1;;8998:181:41:o;8698:156::-;496:4:103;;-1:-1:-1;;;;;496:4:103;8765:10:41;:35;8761:86;;8809:38;;-1:-1:-1;;;8809:38:41;;8836:10;8809:38;;;1791:74:105;1764:18;;8809:38:41;;;;;;;;8761:86;8698:156::o;24107:336:86:-;-1:-1:-1;;;;;24270:23:86;;24288:4;24266:36;24295:7;24266:36;24312:64;24330:6;24338:2;24342:16;;24360:15;24312:17;:64::i;:::-;24402:10;:8;:10::i;:::-;24387:25;;;;;;;-1:-1:-1;;;;;24387:25:86;;;-1:-1:-1;;;24387:25:86;;;;;;:12;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24387:25:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24387:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24387:25:86;;;;;;;;;;;;;-1:-1:-1;;24387:25:86;-1:-1:-1;;;24387:25:86;;;;;;;;-1:-1:-1;;;;24387:25:86;;;;;-1:-1:-1;;;24387:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24387:25:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;24387:25:86;;;;;;;;-1:-1:-1;;24387:25:86;;;;;;;;;;;;;;-1:-1:-1;;;;24387:25:86;-1:-1:-1;;;24387:25:86;;;;;;;;;;;24423:13;:11;:13::i;:::-;24107:336;;;;;:::o;22797:198::-;22902:50;22920:15;22937:14;;22902:17;:50::i;:::-;22978:10;:8;:10::i;:::-;22963:25;;;;;;;-1:-1:-1;;;;;22963:25:86;;;-1:-1:-1;;;22963:25:86;;;;;;:12;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22963:25:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22963:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22963:25:86;;;;;;;;;;;;;-1:-1:-1;;22963:25:86;-1:-1:-1;;;22963:25:86;;;;;;;;-1:-1:-1;;;;22963:25:86;;;;;-1:-1:-1;;;22963:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22963:25:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;22963:25:86;;;;;;;;-1:-1:-1;;22963:25:86;;;;;;;;;;;;;;-1:-1:-1;;;;22963:25:86;-1:-1:-1;;;22963:25:86;;;;;;;;;;;-1:-1:-1;;;22797:198:86:o;23559:255::-;23680:4;-1:-1:-1;;;;;23662:23:86;;;23658:36;;23559:255;;;:::o;23658:36::-;23704:43;23727:6;23735:2;23739:7;23704:22;:43::i;:::-;23773:10;:8;:10::i;:::-;23758:25;;;;;;;-1:-1:-1;;;;;23758:25:86;;;-1:-1:-1;;;23758:25:86;;;;;;:12;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23758:25:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23758:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23758:25:86;;;;;;;;;;;;;-1:-1:-1;;23758:25:86;-1:-1:-1;;;23758:25:86;;;;;;;;-1:-1:-1;;;;23758:25:86;;;;;-1:-1:-1;;;23758:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23758:25:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;23758:25:86;;;;;;;;-1:-1:-1;;23758:25:86;;;;;;;;;;;;;;-1:-1:-1;;;;23758:25:86;-1:-1:-1;;;23758:25:86;;;;;;;;;;;23794:13;:11;:13::i;:::-;23559:255;;;:::o;23281:272::-;-1:-1:-1;;;;;23396:23:86;;23414:4;23392:36;23421:7;23392:36;23438:50;23455:6;23463:2;23467:8;23477:10;23438:16;:50::i;:::-;23513:10;:8;:10::i;:::-;23499:24;;;;;;;-1:-1:-1;;;;;23499:24:86;;;-1:-1:-1;;;23499:24:86;;;;;;:11;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23499:24:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23499:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23499:24:86;;;;;;;;;;;;;-1:-1:-1;;23499:24:86;-1:-1:-1;;;23499:24:86;;;;;;;;-1:-1:-1;;;;23499:24:86;;;;;-1:-1:-1;;;23499:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23499:24:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;23499:24:86;;;;;;;;-1:-1:-1;;23499:24:86;;;;;;;;;;;;;;-1:-1:-1;;;;23499:24:86;-1:-1:-1;;;23499:24:86;;;;;;;;;;;23534:12;:10;:12::i;25892:373::-;-1:-1:-1;;;;;26097:23:86;;26115:4;26093:36;26122:7;26093:36;26139:61;26169:6;26177:4;26183:2;26187:3;;26192:7;;26139:29;:61::i;:::-;26225:10;:8;:10::i;:::-;26211:24;;;;;;;-1:-1:-1;;;;;26211:24:86;;;-1:-1:-1;;;26211:24:86;;;;;;:11;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26211:24:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26211:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26211:24:86;;;;;;;;;;;;;-1:-1:-1;;26211:24:86;-1:-1:-1;;;26211:24:86;;;;;;;;-1:-1:-1;;;;26211:24:86;;;;;-1:-1:-1;;;26211:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26211:24:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;26211:24:86;;;;;;;;-1:-1:-1;;26211:24:86;;;;;;;;;;;;;;-1:-1:-1;;;;26211:24:86;-1:-1:-1;;;26211:24:86;;;;;;;;;;;26246:12;:10;:12::i;:::-;25892:373;;;;;;;:::o;25509:377::-;-1:-1:-1;;;;;25715:23:86;;25733:4;25711:36;25740:7;25711:36;25757:62;25788:6;25796:4;25802:2;25806:3;;25811:7;;25757:30;:62::i;:::-;25845:10;:8;:10::i;:::-;25830:25;;;;;;;-1:-1:-1;;;;;25830:25:86;;;-1:-1:-1;;;25830:25:86;;;;;;:12;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25830:25:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25830:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25830:25:86;;;;;;;;;;;;;-1:-1:-1;;25830:25:86;-1:-1:-1;;;25830:25:86;;;;;;;;-1:-1:-1;;;;25830:25:86;;;;;-1:-1:-1;;;25830:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25830:25:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;25830:25:86;;;;;;;;-1:-1:-1;;25830:25:86;;;;;;;;;;;;;;-1:-1:-1;;;;25830:25:86;-1:-1:-1;;;25830:25:86;;;;;;;;;;;25866:13;:11;:13::i;24449:320::-;-1:-1:-1;;;;;24605:23:86;;24623:4;24601:36;24630:7;24601:36;24647:57;24664:6;24672:2;24676:16;;24694:9;24647:16;:57::i;:::-;24729:10;:8;:10::i;:::-;24715:24;;;;;;;-1:-1:-1;;;;;24715:24:86;;;-1:-1:-1;;;24715:24:86;;;;;;:11;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24715:24:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24715:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24715:24:86;;;;;;;;;;;;;-1:-1:-1;;24715:24:86;-1:-1:-1;;;24715:24:86;;;;;;;;-1:-1:-1;;;;24715:24:86;;;;;-1:-1:-1;;;24715:24:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24715:24:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;24715:24:86;;;;;;;;-1:-1:-1;;24715:24:86;;;;;;;;;;;;;;-1:-1:-1;;;;24715:24:86;-1:-1:-1;;;24715:24:86;;;;;;;;;;;24750:12;:10;:12::i;302:92:103:-;344:17;351:10;;344:17;:::i;:::-;371:16;378:9;;371:16;:::i;23001:274:86:-;-1:-1:-1;;;;;23116:23:86;;23134:4;23112:36;23141:7;23112:36;23158:50;23176:6;23184:2;23188:8;23198:9;23158:17;:50::i;:::-;23234:10;:8;:10::i;:::-;23219:25;;;;;;;-1:-1:-1;;;;;23219:25:86;;;-1:-1:-1;;;23219:25:86;;;;;;:12;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23219:25:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23219:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23219:25:86;;;;;;;;;;;;;-1:-1:-1;;23219:25:86;-1:-1:-1;;;23219:25:86;;;;;;;;-1:-1:-1;;;;23219:25:86;;;;;-1:-1:-1;;;23219:25:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23219:25:86;;;;;;;;;;;;;;;;;;-1:-1:-1;;23219:25:86;;;;;;;;-1:-1:-1;;23219:25:86;;;;;;;;;;;;;;-1:-1:-1;;;;23219:25:86;-1:-1:-1;;;23219:25:86;;;;;;;;;;;23255:13;:11;:13::i;1129:132:103:-;1246:8;1233:21;1246:8;;;1233:21;:::i;:::-;;1129:132;;;;;:::o;27070:213:86:-;27116:12;;-1:-1:-1;;;;;27116:12:86;27112:39;;27070:213::o;27112:39::-;27182:12;;27196:16;27161:52;;;;-1:-1:-1;;;;;27182:12:86;;27196:16;27161:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;:52::i;:::-;-1:-1:-1;27231:12:86;27224:19;;-1:-1:-1;;;;;;27224:19:86;;;27253:23;27260:16;27231:12;27253:23;:::i;514:110:103:-;609:8;596:21;609:8;;;596:21;:::i;754:116::-;843:9;:20;855:8;;843:9;:20;:::i;27289:207:86:-;27334:11;;-1:-1:-1;;;;;27334:11:86;27330:38;;27289:207::o;27330:38::-;27399:11;;27412:15;27378:50;;;;-1:-1:-1;;;;;27399:11:86;;27412:15;27378:50;;;:::i;:::-;-1:-1:-1;27446:11:86;27439:18;;-1:-1:-1;;;;;;27439:18:86;;;27467:22;27474:15;27446:11;27467:22;:::i;1916:191:103:-;2080:9;:20;2092:8;;2080:9;:20;:::i;:::-;;1916:191;;;;;;;:::o;1717:193::-;1895:8;1882:21;1895:8;;;1882:21;:::i;1267:130::-;1370:9;:20;1382:8;;1370:9;:20;:::i;630:118::-;733:8;720:21;733:8;;;720:21;:::i;2705:151:35:-;2780:12;2811:38;2833:6;2841:4;2847:1;2780:12;3421;3435:23;3462:6;-1:-1:-1;;;;;3462:11:35;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;3180:392;-1:-1:-1;;;;;;3180:392:35:o;4625:582::-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:35;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:35;;-1:-1:-1;;;;;1809:55:105;;5121:24:35;;;1791:74:105;1764:18;;5121:24:35;1645:226:105;5041:119:35;-1:-1:-1;5180:10:35;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:35;;;;;;;;;;;5870:383;5743:516;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;206:196:105:-;274:20;;-1:-1:-1;;;;;323:54:105;;313:65;;303:93;;392:1;389;382:12;303:93;206:196;;;:::o;407:367::-;470:8;480:6;534:3;527:4;519:6;515:17;511:27;501:55;;552:1;549;542:12;501:55;-1:-1:-1;575:20:105;;618:18;607:30;;604:50;;;650:1;647;640:12;604:50;687:4;679:6;675:17;663:29;;747:3;740:4;730:6;727:1;723:14;715:6;711:27;707:38;704:47;701:67;;;764:1;761;754:12;701:67;407:367;;;;;:::o;779:654::-;892:6;900;908;916;924;977:3;965:9;956:7;952:23;948:33;945:53;;;994:1;991;984:12;945:53;1017:29;1036:9;1017:29;:::i;:::-;1007:39;;1065:38;1099:2;1088:9;1084:18;1065:38;:::i;:::-;1055:48;;1154:2;1143:9;1139:18;1126:32;1181:18;1173:6;1170:30;1167:50;;;1213:1;1210;1203:12;1167:50;1252:70;1314:7;1305:6;1294:9;1290:22;1252:70;:::i;:::-;779:654;;;;-1:-1:-1;1341:8:105;1423:2;1408:18;1395:32;;779:654;-1:-1:-1;;;;779:654:105:o;2967:1269::-;3184:13;;-1:-1:-1;;;;;3180:54:105;3162:73;;3282:4;3270:17;;;3264:24;3149:3;3134:19;;;3297:54;;3330:20;;3264:24;-1:-1:-1;;;;;1942:46:105;1930:59;;1876:119;3297:54;;3400:4;3392:6;3388:17;3382:24;3415:56;3465:4;3454:9;3450:20;3434:14;-1:-1:-1;;;;;1942:46:105;1930:59;;1876:119;3415:56;;3520:4;3512:6;3508:17;3502:24;3535:56;3585:4;3574:9;3570:20;3554:14;-1:-1:-1;;;;;1942:46:105;1930:59;;1876:119;3535:56;;3640:4;3632:6;3628:17;3622:24;3655:55;3704:4;3693:9;3689:20;3673:14;2076:8;2065:20;2053:33;;2000:92;3655:55;;3759:4;3751:6;3747:17;3741:24;3774:56;3824:4;3813:9;3809:20;3793:14;-1:-1:-1;;;;;1942:46:105;1930:59;;1876:119;3774:56;;3879:4;3871:6;3867:17;3861:24;3894:56;3944:4;3933:9;3929:20;3913:14;-1:-1:-1;;;;;1942:46:105;1930:59;;1876:119;3894:56;;3999:4;3991:6;3987:17;3981:24;4014:76;4084:4;4073:9;4069:20;4053:14;2181:8;2228:2;2220:5;2214:12;2210:21;2205:3;2198:34;2293:2;2285:4;2278:5;2274:16;2268:23;2264:32;2257:4;2252:3;2248:14;2241:56;2358:2;2350:4;2343:5;2339:16;2333:23;2329:32;2322:4;2317:3;2313:14;2306:56;;2423:12;2415:4;2408:5;2404:16;2398:23;2394:42;2387:4;2382:3;2378:14;2371:66;2097:346;;;4014:76;-1:-1:-1;4139:6:105;4127:19;;4121:26;2534:12;;2548:4;2530:23;4222:6;4207:22;;2518:36;2600:4;2589:16;;2583:23;2625:6;2663:21;;;2647:14;;;2640:45;2738:4;2727:16;;2721:23;2717:32;2701:14;;;2694:56;2798:4;2787:16;;2781:23;2823:12;2867:23;;;2851:14;;;2844:47;2944:4;2933:16;;2927:23;2923:32;2907:14;;;2900:56;4156:74;2967:1269;;;;:::o;4241:347::-;4292:8;4302:6;4356:3;4349:4;4341:6;4337:17;4333:27;4323:55;;4374:1;4371;4364:12;4323:55;-1:-1:-1;4397:20:105;;4440:18;4429:30;;4426:50;;;4472:1;4469;4462:12;4426:50;4509:4;4501:6;4497:17;4485:29;;4561:3;4554:4;4545:6;4537;4533:19;4529:30;4526:39;4523:59;;;4578:1;4575;4568:12;4593:483;4672:6;4680;4688;4741:2;4729:9;4720:7;4716:23;4712:32;4709:52;;;4757:1;4754;4747:12;4709:52;4780:29;4799:9;4780:29;:::i;:::-;4770:39;;4860:2;4849:9;4845:18;4832:32;4887:18;4879:6;4876:30;4873:50;;;4919:1;4916;4909:12;4873:50;4958:58;5008:7;4999:6;4988:9;4984:22;4958:58;:::i;:::-;4593:483;;5035:8;;-1:-1:-1;4932:84:105;;-1:-1:-1;;;;4593:483:105:o;5081:477::-;5160:6;5168;5176;5229:2;5217:9;5208:7;5204:23;5200:32;5197:52;;;5245:1;5242;5235:12;5197:52;5281:9;5268:23;5258:33;;5342:2;5331:9;5327:18;5314:32;5369:18;5361:6;5358:30;5355:50;;;5401:1;5398;5391:12;5563:328;5640:6;5648;5656;5709:2;5697:9;5688:7;5684:23;5680:32;5677:52;;;5725:1;5722;5715:12;5677:52;5748:29;5767:9;5748:29;:::i;:::-;5738:39;;5796:38;5830:2;5819:9;5815:18;5796:38;:::i;:::-;5786:48;;5881:2;5870:9;5866:18;5853:32;5843:42;;5563:328;;;;;:::o;5896:490::-;5979:6;5987;5995;6003;6056:3;6044:9;6035:7;6031:23;6027:33;6024:53;;;6073:1;6070;6063:12;6024:53;6096:29;6115:9;6096:29;:::i;:::-;6086:39;;6144:38;6178:2;6167:9;6163:18;6144:38;:::i;:::-;6134:48;;6232:2;6221:9;6217:18;6204:32;6279:5;6272:13;6265:21;6258:5;6255:32;6245:60;;6301:1;6298;6291:12;6245:60;5896:490;;;;-1:-1:-1;6324:5:105;;6376:2;6361:18;6348:32;;-1:-1:-1;;5896:490:105:o;6391:250::-;6476:1;6486:113;6500:6;6497:1;6494:13;6486:113;;;6576:11;;;6570:18;6557:11;;;6550:39;6522:2;6515:10;6486:113;;;-1:-1:-1;;6633:1:105;6615:16;;6608:27;6391:250::o;6646:394::-;6793:2;6782:9;6775:21;6756:4;6825:6;6819:13;6868:6;6863:2;6852:9;6848:18;6841:34;6884:79;6956:6;6951:2;6940:9;6936:18;6931:2;6923:6;6919:15;6884:79;:::i;:::-;7024:2;7003:15;-1:-1:-1;;6999:29:105;6984:45;;;;7031:2;6980:54;;6646:394;-1:-1:-1;;6646:394:105:o;7293:397::-;7379:6;7387;7395;7403;7456:3;7444:9;7435:7;7431:23;7427:33;7424:53;;;7473:1;7470;7463:12;7424:53;7496:29;7515:9;7496:29;:::i;:::-;7486:39;;7544:38;7578:2;7567:9;7563:18;7544:38;:::i;:::-;7293:397;;7534:48;;-1:-1:-1;;;;7629:2:105;7614:18;;7601:32;;7680:2;7665:18;7652:32;;7293:397::o;7695:997::-;7844:6;7852;7860;7868;7876;7884;7892;7945:3;7933:9;7924:7;7920:23;7916:33;7913:53;;;7962:1;7959;7952:12;7913:53;7985:29;8004:9;7985:29;:::i;:::-;7975:39;;8033:38;8067:2;8056:9;8052:18;8033:38;:::i;:::-;8023:48;;8090:38;8124:2;8113:9;8109:18;8090:38;:::i;:::-;8080:48;;8179:2;8168:9;8164:18;8151:32;8202:18;8243:2;8235:6;8232:14;8229:34;;;8259:1;8256;8249:12;8229:34;8298:70;8360:7;8351:6;8340:9;8336:22;8298:70;:::i;:::-;8387:8;;-1:-1:-1;8272:96:105;-1:-1:-1;8475:3:105;8460:19;;8447:33;;-1:-1:-1;8492:16:105;;;8489:36;;;8521:1;8518;8511:12;8489:36;;8560:72;8624:7;8613:8;8602:9;8598:24;8560:72;:::i;:::-;7695:997;;;;-1:-1:-1;7695:997:105;;-1:-1:-1;7695:997:105;;;;8534:98;;-1:-1:-1;;;7695:997:105:o;8697:186::-;8756:6;8809:2;8797:9;8788:7;8784:23;8780:32;8777:52;;;8825:1;8822;8815:12;8777:52;8848:29;8867:9;8848:29;:::i;8888:192::-;8967:13;;-1:-1:-1;;;;;9009:46:105;;8999:57;;8989:85;;9070:1;9067;9060:12;9085:293;9164:6;9172;9225:2;9213:9;9204:7;9200:23;9196:32;9193:52;;;9241:1;9238;9231:12;9193:52;9264:40;9294:9;9264:40;:::i;:::-;9254:50;;9323:49;9368:2;9357:9;9353:18;9323:49;:::i;:::-;9313:59;;9085:293;;;;;:::o;9383:165::-;9461:13;;9514:8;9503:20;;9493:31;;9483:59;;9538:1;9535;9528:12;9553:206;9622:6;9675:2;9663:9;9654:7;9650:23;9646:32;9643:52;;;9691:1;9688;9681:12;9643:52;9714:39;9743:9;9714:39;:::i;9959:169::-;10037:13;;10090:12;10079:24;;10069:35;;10059:63;;10118:1;10115;10108:12;10133:456;10226:6;10234;10242;10250;10303:3;10291:9;10282:7;10278:23;10274:33;10271:53;;;10320:1;10317;10310:12;10271:53;10343:39;10372:9;10343:39;:::i;:::-;10333:49;;10401:48;10445:2;10434:9;10430:18;10401:48;:::i;:::-;10391:58;;10468:48;10512:2;10501:9;10497:18;10468:48;:::i;:::-;10458:58;;10535:48;10579:2;10568:9;10564:18;10535:48;:::i;:::-;10525:58;;10133:456;;;;;;;:::o;10594:163::-;10672:13;;10725:6;10714:18;;10704:29;;10694:57;;10747:1;10744;10737:12;10762:607;10862:6;10870;10878;10886;10894;10947:3;10935:9;10926:7;10922:23;10918:33;10915:53;;;10964:1;10961;10954:12;10915:53;10996:9;10990:16;11046:4;11039:5;11035:16;11028:5;11025:27;11015:55;;11066:1;11063;11056:12;11015:55;11089:5;-1:-1:-1;11113:48:105;11157:2;11142:18;;11113:48;:::i;:::-;11103:58;;11180:48;11224:2;11213:9;11209:18;11180:48;:::i;:::-;11170:58;;11247:48;11291:2;11280:9;11276:18;11247:48;:::i;:::-;11237:58;;11314:49;11358:3;11347:9;11343:19;11314:49;:::i;:::-;11304:59;;10762:607;;;;;;;;:::o;11374:127::-;11435:10;11430:3;11426:20;11423:1;11416:31;11466:4;11463:1;11456:15;11490:4;11487:1;11480:15;11506:380;11585:1;11581:12;;;;11628;;;11649:61;;11703:4;11695:6;11691:17;11681:27;;11649:61;11756:2;11748:6;11745:14;11725:18;11722:38;11719:161;;11802:10;11797:3;11793:20;11790:1;11783:31;11837:4;11834:1;11827:15;11865:4;11862:1;11855:15;11719:161;;11506:380;;;:::o;12016:544::-;12117:2;12112:3;12109:11;12106:448;;;12153:1;12178:5;12174:2;12167:17;12223:4;12219:2;12209:19;12293:2;12281:10;12277:19;12274:1;12270:27;12264:4;12260:38;12329:4;12317:10;12314:20;12311:47;;;-1:-1:-1;12352:4:105;12311:47;12407:2;12402:3;12398:12;12395:1;12391:20;12385:4;12381:31;12371:41;;12462:82;12480:2;12473:5;12470:13;12462:82;;;12525:17;;;12506:1;12495:13;12462:82;;12736:1202;12858:18;12853:3;12850:27;12847:53;;;12880:18;;:::i;:::-;12909:93;12998:3;12958:38;12990:4;12984:11;12958:38;:::i;:::-;12952:4;12909:93;:::i;:::-;13028:1;13053:2;13048:3;13045:11;13070:1;13065:615;;;;13724:1;13741:3;13738:93;;;-1:-1:-1;13797:19:105;;;13784:33;13738:93;-1:-1:-1;;12693:1:105;12689:11;;;12685:24;12681:29;12671:40;12717:1;12713:11;;;12668:57;13844:78;;13038:894;;13065:615;11963:1;11956:14;;;12000:4;11987:18;;-1:-1:-1;;13101:17:105;;;13201:9;13223:229;13237:7;13234:1;13231:14;13223:229;;;13326:19;;;13313:33;13298:49;;13433:4;13418:20;;;;13386:1;13374:14;;;;13253:12;13223:229;;;13227:3;13480;13471:7;13468:16;13465:159;;;13604:1;13600:6;13594:3;13588;13585:1;13581:11;13577:21;13573:34;13569:39;13556:9;13551:3;13547:19;13534:33;13530:79;13522:6;13515:95;13465:159;;;13667:1;13661:3;13658:1;13654:11;13650:19;13644:4;13637:33;13038:894;;12736:1202;;;:::o;13943:184::-;14013:6;14066:2;14054:9;14045:7;14041:23;14037:32;14034:52;;;14082:1;14079;14072:12;14034:52;-1:-1:-1;14105:16:105;;13943:184;-1:-1:-1;13943:184:105:o;14132:287::-;14261:3;14299:6;14293:13;14315:66;14374:6;14369:3;14362:4;14354:6;14350:17;14315:66;:::i;:::-;14397:16;;;;;14132:287;-1:-1:-1;;14132:287:105:o","linkReferences":{}},"methodIdentifiers":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":"67ddb278","afterBurn(address,address,address,uint256[],uint256[])":"fdc27257","afterData()":"c2fb5a64","afterFlashLoan(address,address,bytes32,bytes32)":"60bed5f3","afterMint(address,address,bytes32[],bytes32)":"7a51a4c6","afterSwap(address,address,bool,bytes32)":"53e8079b","afterTarget()":"2aac3e12","afterTargetData()":"c153f4cd","beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":"79c8ccf7","beforeBurn(address,address,address,uint256[],uint256[])":"ea9db9d3","beforeData()":"571eed37","beforeFlashLoan(address,address,bytes32)":"505d9033","beforeMint(address,address,bytes32[],bytes32)":"0d4abdb3","beforeSwap(address,address,bool,bytes32)":"feee3735","beforeTarget()":"0f146a3e","beforeTargetData()":"df0ccc48","getAfterState()":"f08e95c6","getBeforeState()":"78b253c6","getLBPair()":"5f9c01b1","getState()":"1865c57d","isLinked()":"09fa1f90","onHooksSet(bytes32,bytes)":"4e430b5a","pair()":"a8aa1b31","reset()":"d826f88f","setAfter(address,bytes)":"c70e8bd4","setBefore(address,bytes)":"33ad78d1","setPair(address)":"8187f516"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"LBBaseHooks__InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBBaseHooks__NotLinked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"afterBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"afterData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"fees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feesReceived\",\"type\":\"bytes32\"}],\"name\":\"afterFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"afterMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"afterTarget\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"afterTargetData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"beforeBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beforeData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"beforeFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"beforeMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beforeTarget\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beforeTargetData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAfterState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeY\",\"type\":\"uint128\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint128\",\"name\":\"activeReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"activeReserveY\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"timeOfLastUpdate\",\"type\":\"uint40\"}],\"internalType\":\"struct VolatilityParameters\",\"name\":\"volatilityParameters\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"size\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"activeSize\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"firstTimestamp\",\"type\":\"uint40\"}],\"internalType\":\"struct OracleParameters\",\"name\":\"oracleParameters\",\"type\":\"tuple\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBeforeState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeY\",\"type\":\"uint128\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint128\",\"name\":\"activeReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"activeReserveY\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"timeOfLastUpdate\",\"type\":\"uint40\"}],\"internalType\":\"struct VolatilityParameters\",\"name\":\"volatilityParameters\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"size\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"activeSize\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"firstTimestamp\",\"type\":\"uint40\"}],\"internalType\":\"struct OracleParameters\",\"name\":\"oracleParameters\",\"type\":\"tuple\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeY\",\"type\":\"uint128\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint128\",\"name\":\"activeReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"activeReserveY\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"timeOfLastUpdate\",\"type\":\"uint40\"}],\"internalType\":\"struct VolatilityParameters\",\"name\":\"volatilityParameters\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"size\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"activeSize\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"firstTimestamp\",\"type\":\"uint40\"}],\"internalType\":\"struct OracleParameters\",\"name\":\"oracleParameters\",\"type\":\"tuple\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLinked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"onHooksSet\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setAfter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setBefore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pair\",\"type\":\"address\"}],\"name\":\"setPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{\"afterBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"from\":\"The address that transferred the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the transfer\",\"to\":\"The address that received the tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterBurn(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsToBurn\":\"The amounts to burn\",\"from\":\"The address that burned the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the burn\",\"to\":\"The address that received the burned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterFlashLoan(address,address,bytes32,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"fees\":\"The flashloan fees\",\"feesReceived\":\"The fees received\",\"sender\":\"The address that initiated the flash loan\",\"to\":\"The address that received the flash loaned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterMint(address,address,bytes32[],bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsIn\":\"The amounts in\",\"liquidityConfigs\":\"The liquidity configurations\",\"sender\":\"The address that initiated the mint\",\"to\":\"The address that received the minted tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterSwap(address,address,bool,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsOut\":\"The amounts out\",\"sender\":\"The address that initiated the swap\",\"swapForY\":\"Whether the swap was for token Y\",\"to\":\"The address that received the swapped tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"from\":\"The address that will transfer the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the transfer\",\"to\":\"The address that will receive the tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeBurn(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsToBurn\":\"The amounts to burn\",\"from\":\"The address that will burn the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the burn\",\"to\":\"The address that will receive the burned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeFlashLoan(address,address,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"sender\":\"The address that initiated the flash loan\",\"to\":\"The address that will receive the flash loaned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeMint(address,address,bytes32[],bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsReceived\":\"The amounts received\",\"liquidityConfigs\":\"The liquidity configurations\",\"sender\":\"The address that initiated the mint\",\"to\":\"The address that will receive the minted tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeSwap(address,address,bool,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsIn\":\"The amounts in\",\"sender\":\"The address that initiated the swap\",\"swapForY\":\"Whether the swap is for token Y\",\"to\":\"The address that will receive the swapped tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"getLBPair()\":{\"details\":\"Returns the LBPair contract\",\"returns\":{\"_0\":\"The LBPair contract\"}},\"isLinked()\":{\"details\":\"Returns whether the contract is linked to the pair or not\",\"returns\":{\"_0\":\"Whether the contract is linked to the pair or not\"}},\"onHooksSet(bytes32,bytes)\":{\"details\":\"Only callable by the pair\",\"params\":{\"hooksParameters\":\"The hooks parameters\",\"onHooksSetData\":\"The onHooksSet data\"},\"returns\":{\"_0\":\"The function selector\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"afterBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair after a batch transfer\"},\"afterBurn(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair after burning\"},\"afterFlashLoan(address,address,bytes32,bytes32)\":{\"notice\":\"Hook called by the pair after a flash loan\"},\"afterMint(address,address,bytes32[],bytes32)\":{\"notice\":\"Hook called by the pair after minting\"},\"afterSwap(address,address,bool,bytes32)\":{\"notice\":\"Hook called by the pair after a swap\"},\"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair before a batch transfer\"},\"beforeBurn(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair before burning\"},\"beforeFlashLoan(address,address,bytes32)\":{\"notice\":\"Hook called by the pair before a flash loan\"},\"beforeMint(address,address,bytes32[],bytes32)\":{\"notice\":\"Hook called by the pair before minting\"},\"beforeSwap(address,address,bool,bytes32)\":{\"notice\":\"Hook called by the pair before a swap\"},\"onHooksSet(bytes32,bytes)\":{\"notice\":\"Hook called by the pair when the hooks parameters are set\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairHooks.t.sol\":\"MockLBHooks\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBBaseHooks.sol\":{\"keccak256\":\"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1\",\"dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairHooks.t.sol\":{\"keccak256\":\"0x8ee9e72828981a5d24d3f61ccd3f63c4ed1f2385405de3768edbf2b854168d93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9322d62668e6ba562af2477422746448f8245ee58dae8bf073d7ed0480e817b6\",\"dweb:/ipfs/Qmcb4m8szBS4E9usVkd8LsKwfuGTJfHjj8GcEvsW1TfBU7\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/MockHooks.sol\":{\"keccak256\":\"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0\",\"dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"LBBaseHooks__InvalidCaller"},{"inputs":[],"type":"error","name":"LBBaseHooks__NotLinked"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"afterData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"fees","type":"bytes32"},{"internalType":"bytes32","name":"feesReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsOut","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"afterTarget","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"afterTargetData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beforeData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beforeTarget","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beforeTargetData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAfterState","outputs":[{"internalType":"struct State","name":"","type":"tuple","components":[{"internalType":"uint128","name":"reserveX","type":"uint128"},{"internalType":"uint128","name":"reserveY","type":"uint128"},{"internalType":"uint128","name":"protocolFeeX","type":"uint128"},{"internalType":"uint128","name":"protocolFeeY","type":"uint128"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint128","name":"activeReserveX","type":"uint128"},{"internalType":"uint128","name":"activeReserveY","type":"uint128"},{"internalType":"struct VolatilityParameters","name":"volatilityParameters","type":"tuple","components":[{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"},{"internalType":"uint24","name":"idReference","type":"uint24"},{"internalType":"uint40","name":"timeOfLastUpdate","type":"uint40"}]},{"internalType":"struct OracleParameters","name":"oracleParameters","type":"tuple","components":[{"internalType":"uint8","name":"sampleLifetime","type":"uint8"},{"internalType":"uint16","name":"size","type":"uint16"},{"internalType":"uint16","name":"activeSize","type":"uint16"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint40","name":"firstTimestamp","type":"uint40"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBeforeState","outputs":[{"internalType":"struct State","name":"","type":"tuple","components":[{"internalType":"uint128","name":"reserveX","type":"uint128"},{"internalType":"uint128","name":"reserveY","type":"uint128"},{"internalType":"uint128","name":"protocolFeeX","type":"uint128"},{"internalType":"uint128","name":"protocolFeeY","type":"uint128"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint128","name":"activeReserveX","type":"uint128"},{"internalType":"uint128","name":"activeReserveY","type":"uint128"},{"internalType":"struct VolatilityParameters","name":"volatilityParameters","type":"tuple","components":[{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"},{"internalType":"uint24","name":"idReference","type":"uint24"},{"internalType":"uint40","name":"timeOfLastUpdate","type":"uint40"}]},{"internalType":"struct OracleParameters","name":"oracleParameters","type":"tuple","components":[{"internalType":"uint8","name":"sampleLifetime","type":"uint8"},{"internalType":"uint16","name":"size","type":"uint16"},{"internalType":"uint16","name":"activeSize","type":"uint16"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint40","name":"firstTimestamp","type":"uint40"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBPair","outputs":[{"internalType":"contract ILBPair","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getState","outputs":[{"internalType":"struct State","name":"state","type":"tuple","components":[{"internalType":"uint128","name":"reserveX","type":"uint128"},{"internalType":"uint128","name":"reserveY","type":"uint128"},{"internalType":"uint128","name":"protocolFeeX","type":"uint128"},{"internalType":"uint128","name":"protocolFeeY","type":"uint128"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint128","name":"activeReserveX","type":"uint128"},{"internalType":"uint128","name":"activeReserveY","type":"uint128"},{"internalType":"struct VolatilityParameters","name":"volatilityParameters","type":"tuple","components":[{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"},{"internalType":"uint24","name":"idReference","type":"uint24"},{"internalType":"uint40","name":"timeOfLastUpdate","type":"uint40"}]},{"internalType":"struct OracleParameters","name":"oracleParameters","type":"tuple","components":[{"internalType":"uint8","name":"sampleLifetime","type":"uint8"},{"internalType":"uint16","name":"size","type":"uint16"},{"internalType":"uint16","name":"activeSize","type":"uint16"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint40","name":"firstTimestamp","type":"uint40"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isLinked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onHooksSet","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reset"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setAfter"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setBefore"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPair"}],"devdoc":{"kind":"dev","methods":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amounts":"The amounts","from":"The address that transferred the tokens","ids":"The token ids","sender":"The address that initiated the transfer","to":"The address that received the tokens"},"returns":{"_0":"The function selector"}},"afterBurn(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amountsToBurn":"The amounts to burn","from":"The address that burned the tokens","ids":"The token ids","sender":"The address that initiated the burn","to":"The address that received the burned tokens"},"returns":{"_0":"The function selector"}},"afterFlashLoan(address,address,bytes32,bytes32)":{"details":"Only callable by the pair","params":{"fees":"The flashloan fees","feesReceived":"The fees received","sender":"The address that initiated the flash loan","to":"The address that received the flash loaned tokens"},"returns":{"_0":"The function selector"}},"afterMint(address,address,bytes32[],bytes32)":{"details":"Only callable by the pair","params":{"amountsIn":"The amounts in","liquidityConfigs":"The liquidity configurations","sender":"The address that initiated the mint","to":"The address that received the minted tokens"},"returns":{"_0":"The function selector"}},"afterSwap(address,address,bool,bytes32)":{"details":"Only callable by the pair","params":{"amountsOut":"The amounts out","sender":"The address that initiated the swap","swapForY":"Whether the swap was for token Y","to":"The address that received the swapped tokens"},"returns":{"_0":"The function selector"}},"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amounts":"The amounts","from":"The address that will transfer the tokens","ids":"The token ids","sender":"The address that initiated the transfer","to":"The address that will receive the tokens"},"returns":{"_0":"The function selector"}},"beforeBurn(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amountsToBurn":"The amounts to burn","from":"The address that will burn the tokens","ids":"The token ids","sender":"The address that initiated the burn","to":"The address that will receive the burned tokens"},"returns":{"_0":"The function selector"}},"beforeFlashLoan(address,address,bytes32)":{"details":"Only callable by the pair","params":{"amounts":"The amounts","sender":"The address that initiated the flash loan","to":"The address that will receive the flash loaned tokens"},"returns":{"_0":"The function selector"}},"beforeMint(address,address,bytes32[],bytes32)":{"details":"Only callable by the pair","params":{"amountsReceived":"The amounts received","liquidityConfigs":"The liquidity configurations","sender":"The address that initiated the mint","to":"The address that will receive the minted tokens"},"returns":{"_0":"The function selector"}},"beforeSwap(address,address,bool,bytes32)":{"details":"Only callable by the pair","params":{"amountsIn":"The amounts in","sender":"The address that initiated the swap","swapForY":"Whether the swap is for token Y","to":"The address that will receive the swapped tokens"},"returns":{"_0":"The function selector"}},"getLBPair()":{"details":"Returns the LBPair contract","returns":{"_0":"The LBPair contract"}},"isLinked()":{"details":"Returns whether the contract is linked to the pair or not","returns":{"_0":"Whether the contract is linked to the pair or not"}},"onHooksSet(bytes32,bytes)":{"details":"Only callable by the pair","params":{"hooksParameters":"The hooks parameters","onHooksSetData":"The onHooksSet data"},"returns":{"_0":"The function selector"}}},"version":1},"userdoc":{"kind":"user","methods":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair after a batch transfer"},"afterBurn(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair after burning"},"afterFlashLoan(address,address,bytes32,bytes32)":{"notice":"Hook called by the pair after a flash loan"},"afterMint(address,address,bytes32[],bytes32)":{"notice":"Hook called by the pair after minting"},"afterSwap(address,address,bool,bytes32)":{"notice":"Hook called by the pair after a swap"},"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair before a batch transfer"},"beforeBurn(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair before burning"},"beforeFlashLoan(address,address,bytes32)":{"notice":"Hook called by the pair before a flash loan"},"beforeMint(address,address,bytes32[],bytes32)":{"notice":"Hook called by the pair before minting"},"beforeSwap(address,address,bool,bytes32)":{"notice":"Hook called by the pair before a swap"},"onHooksSet(bytes32,bytes)":{"notice":"Hook called by the pair when the hooks parameters are set"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairHooks.t.sol":"MockLBHooks"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBBaseHooks.sol":{"keccak256":"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778","urls":["bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1","dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairHooks.t.sol":{"keccak256":"0x8ee9e72828981a5d24d3f61ccd3f63c4ed1f2385405de3768edbf2b854168d93","urls":["bzz-raw://9322d62668e6ba562af2477422746448f8245ee58dae8bf073d7ed0480e817b6","dweb:/ipfs/Qmcb4m8szBS4E9usVkd8LsKwfuGTJfHjj8GcEvsW1TfBU7"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/MockHooks.sol":{"keccak256":"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3","urls":["bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0","dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":86} \ No newline at end of file diff --git a/abi/LBPairImplementation.t.sol/LBPairImplementationTest.json b/abi/LBPairImplementation.t.sol/LBPairImplementationTest.json deleted file mode 100644 index dfc2a9fa..00000000 --- a/abi/LBPairImplementation.t.sol/LBPairImplementationTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_Getters","inputs":[{"name":"tokenX","type":"address","internalType":"address"},{"name":"tokenY","type":"address","internalType":"address"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_InitializeImplementation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506177d98061002d6000396000f3fe60806040523480156200001157600080fd5b5060043610620000f15760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa914620001a4578063ba414fa614620001ae578063bad0d6fb14620001c9578063e20c9f7114620001d357600080fd5b806366d9a9a0146200016857806385226c811462000181578063916a17c6146200019a57600080fd5b80633e5e3c2311620000cc5780633e5e3c23146200013d5780633f7286f414620001475780634c83219f146200015157600080fd5b80630a9254e414620000f65780631ed7831c14620001025780632ade38801462000124575b600080fd5b62000100620001dd565b005b6200010c620002b4565b6040516200011b9190620011ee565b60405180910390f35b6200012e62000318565b6040516200011b919062001291565b6200010c62000466565b6200010c620004c8565b620001006200016236600462001381565b6200052a565b62000172620007e3565b6040516200011b9190620013d3565b6200018b620008e2565b6040516200011b9190620014a2565b62000172620009bc565b6200018b62000abb565b620001b862000b95565b60405190151581526020016200011b565b6200010062000c54565b6200010c62000ec7565b6200021d6040518060400160405280600781526020017f666163746f72790000000000000000000000000000000000000000000000000081525062000f29565b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040516200025790620011e0565b6001600160a01b039091168152602001604051809103906000f08015801562000284573d6000803e3d6000fd5b50601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b606060148054806020026020016040519081016040528092919081815260200182805480156200030e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620002ef575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200045d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000445578382906000526020600020018054620003b19062001508565b80601f0160208091040260200160405190810160405280929190818152602001828054620003df9062001508565b8015620004305780601f10620004045761010080835404028352916020019162000430565b820191906000526020600020905b8154815290600101906020018083116200041257829003601f168201915b5050505050815260200190600101906200038f565b5050505081525050815260200190600101906200033c565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200030e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620002ef575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200030e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620002ef575050505050905090565b604080516bffffffffffffffffffffffff19606086811b821660208085018290529187901b909216603484018190527fffff00000000000000000000000000000000000000000000000000000000000060f087901b16604885018190528551808603602a018152604a860187528051930192909220606a850193909352607e8401526092830152825180830360740181526094909201909252601d54600090620005df906001600160a01b0316838562000f3d565b905062000687816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200064a919062001544565b876040518060400160405280601381526020017f7465737446757a7a5f476574746572733a3a310000000000000000000000000081525062000ffa565b6200072d816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f0919062001544565b866040518060400160405280601381526020017f7465737446757a7a5f476574746572733a3a320000000000000000000000000081525062000ffa565b620007db816001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200079691906200156b565b61ffff168561ffff166040518060400160405280601381526020017f7465737446757a7a5f476574746572733a3a33000000000000000000000000008152506200106e565b505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200045d5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620008c957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620008755790505b5050505050815250508152602001906001019062000807565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200045d578382906000526020600020018054620009289062001508565b80601f0160208091040260200160405190810160405280929190818152602001828054620009569062001508565b8015620009a75780601f106200097b57610100808354040283529160200191620009a7565b820191906000526020600020905b8154815290600101906020018083116200098957829003601f168201915b50505050508152602001906001019062000906565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200045d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000aa257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000a4e5790505b50505050508152505081526020019060010190620009e0565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200045d57838290600052602060002001805462000b019062001508565b80601f016020809104026020016040519081016040528092919081815260200182805462000b2f9062001508565b801562000b805780601f1062000b545761010080835404028352916020019162000b80565b820191906000526020600020905b81548152906001019060200180831162000b6257829003601f168201915b50505050508152602001906001019062000adf565b60075460009060ff161562000bae575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562000c27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4d91906200158b565b1415905090565b604051630618f58760e51b8152632486085360e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562000ca857600080fd5b505af115801562000cbd573d6000803e3d6000fd5b5050601d546040516347973bff60e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e48201526001600160a01b0390911692506347973bff915061010401600060405180830381600087803b15801562000d3a57600080fd5b505af115801562000d4f573d6000803e3d6000fd5b5050604051630618f58760e51b815263f92ee8a960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562000da757600080fd5b505af115801562000dbc573d6000803e3d6000fd5b5050601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000e1a57600080fd5b505af115801562000e2f573d6000803e3d6000fd5b5050601d546040516347973bff60e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e48201526001600160a01b0390911692506347973bff915061010401600060405180830381600087803b15801562000eac57600080fd5b505af115801562000ec1573d6000803e3d6000fd5b50505050565b606060138054806020026020016040519081016040528092919081815260200182805480156200030e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620002ef575050505050905090565b600062000f3682620010ab565b5092915050565b600060408303516020840351845180602087010180516002830161ffca81111562000f705763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f59650508562000fe05763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906200103790869086908690600401620015a5565b60006040518083038186803b1580156200105057600080fd5b505afa15801562001065573d6000803e3d6000fd5b50505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906200103790869086908690600401620015dc565b60008082604051602001620010c19190620015fd565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001169919062001544565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620011a790859087906004016200161b565b600060405180830381600087803b158015620011c257600080fd5b505af1158015620011d7573d6000803e3d6000fd5b50505050915091565b61615c806200164883390190565b6020808252825182820181905260009190848201906040850190845b81811015620012315783516001600160a01b0316835292840192918401916001016200120a565b50909695505050505050565b60005b838110156200125a57818101518382015260200162001240565b50506000910152565b600081518084526200127d8160208601602086016200123d565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200134757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200133057605f198985030183526200131d84865162001263565b948e01949350918d0191600101620012fe565b505050978a019794505091880191600101620012b8565b50919a9950505050505050505050565b6001600160a01b03811681146200136d57600080fd5b50565b61ffff811681146200136d57600080fd5b6000806000606084860312156200139757600080fd5b8335620013a48162001357565b92506020840135620013b68162001357565b91506040840135620013c88162001370565b809150509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200149357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200147d5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062001439565b50978a01979550505091870191600101620013fb565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620014fb57603f19888603018452620014e885835162001263565b94509285019290850190600101620014c9565b5092979650505050505050565b600181811c908216806200151d57607f821691505b6020821081036200153e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200155757600080fd5b8151620015648162001357565b9392505050565b6000602082840312156200157e57600080fd5b8151620015648162001370565b6000602082840312156200159e57600080fd5b5051919050565b60006001600160a01b03808616835280851660208401525060606040830152620015d3606083018462001263565b95945050505050565b838152826020820152606060408201526000620015d3606083018462001263565b60008251620016118184602087016200123d565b9190910192915050565b6001600160a01b03831681526040602082015260006200163f604083018462001263565b94935050505056fe60c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c63430008140033a2646970667358221220f3ee7ba45f4de86fb9cb9cab1539f281cfa97c4c23f5bd67946a761f0e2d1fac64736f6c63430008140033","sourceMap":"229:1172:90:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;229:1172:90;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000f15760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa914620001a4578063ba414fa614620001ae578063bad0d6fb14620001c9578063e20c9f7114620001d357600080fd5b806366d9a9a0146200016857806385226c811462000181578063916a17c6146200019a57600080fd5b80633e5e3c2311620000cc5780633e5e3c23146200013d5780633f7286f414620001475780634c83219f146200015157600080fd5b80630a9254e414620000f65780631ed7831c14620001025780632ade38801462000124575b600080fd5b62000100620001dd565b005b6200010c620002b4565b6040516200011b9190620011ee565b60405180910390f35b6200012e62000318565b6040516200011b919062001291565b6200010c62000466565b6200010c620004c8565b620001006200016236600462001381565b6200052a565b62000172620007e3565b6040516200011b9190620013d3565b6200018b620008e2565b6040516200011b9190620014a2565b62000172620009bc565b6200018b62000abb565b620001b862000b95565b60405190151581526020016200011b565b6200010062000c54565b6200010c62000ec7565b6200021d6040518060400160405280600781526020017f666163746f72790000000000000000000000000000000000000000000000000081525062000f29565b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040516200025790620011e0565b6001600160a01b039091168152602001604051809103906000f08015801562000284573d6000803e3d6000fd5b50601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b606060148054806020026020016040519081016040528092919081815260200182805480156200030e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620002ef575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200045d57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000445578382906000526020600020018054620003b19062001508565b80601f0160208091040260200160405190810160405280929190818152602001828054620003df9062001508565b8015620004305780601f10620004045761010080835404028352916020019162000430565b820191906000526020600020905b8154815290600101906020018083116200041257829003601f168201915b5050505050815260200190600101906200038f565b5050505081525050815260200190600101906200033c565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200030e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620002ef575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200030e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620002ef575050505050905090565b604080516bffffffffffffffffffffffff19606086811b821660208085018290529187901b909216603484018190527fffff00000000000000000000000000000000000000000000000000000000000060f087901b16604885018190528551808603602a018152604a860187528051930192909220606a850193909352607e8401526092830152825180830360740181526094909201909252601d54600090620005df906001600160a01b0316838562000f3d565b905062000687816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200064a919062001544565b876040518060400160405280601381526020017f7465737446757a7a5f476574746572733a3a310000000000000000000000000081525062000ffa565b6200072d816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006f0919062001544565b866040518060400160405280601381526020017f7465737446757a7a5f476574746572733a3a320000000000000000000000000081525062000ffa565b620007db816001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200079691906200156b565b61ffff168561ffff166040518060400160405280601381526020017f7465737446757a7a5f476574746572733a3a33000000000000000000000000008152506200106e565b505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200045d5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620008c957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620008755790505b5050505050815250508152602001906001019062000807565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200045d578382906000526020600020018054620009289062001508565b80601f0160208091040260200160405190810160405280929190818152602001828054620009569062001508565b8015620009a75780601f106200097b57610100808354040283529160200191620009a7565b820191906000526020600020905b8154815290600101906020018083116200098957829003601f168201915b50505050508152602001906001019062000906565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200045d5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000aa257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000a4e5790505b50505050508152505081526020019060010190620009e0565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200045d57838290600052602060002001805462000b019062001508565b80601f016020809104026020016040519081016040528092919081815260200182805462000b2f9062001508565b801562000b805780601f1062000b545761010080835404028352916020019162000b80565b820191906000526020600020905b81548152906001019060200180831162000b6257829003601f168201915b50505050508152602001906001019062000adf565b60075460009060ff161562000bae575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562000c27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4d91906200158b565b1415905090565b604051630618f58760e51b8152632486085360e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801562000ca857600080fd5b505af115801562000cbd573d6000803e3d6000fd5b5050601d546040516347973bff60e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e48201526001600160a01b0390911692506347973bff915061010401600060405180830381600087803b15801562000d3a57600080fd5b505af115801562000d4f573d6000803e3d6000fd5b5050604051630618f58760e51b815263f92ee8a960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562000da757600080fd5b505af115801562000dbc573d6000803e3d6000fd5b5050601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000e1a57600080fd5b505af115801562000e2f573d6000803e3d6000fd5b5050601d546040516347973bff60e01b81526001600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c4820181905260e48201526001600160a01b0390911692506347973bff915061010401600060405180830381600087803b15801562000eac57600080fd5b505af115801562000ec1573d6000803e3d6000fd5b50505050565b606060138054806020026020016040519081016040528092919081815260200182805480156200030e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620002ef575050505050905090565b600062000f3682620010ab565b5092915050565b600060408303516020840351845180602087010180516002830161ffca81111562000f705763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f59650508562000fe05763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906200103790869086908690600401620015a5565b60006040518083038186803b1580156200105057600080fd5b505afa15801562001065573d6000803e3d6000fd5b50505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906200103790869086908690600401620015dc565b60008082604051602001620010c19190620015fd565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001169919062001544565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620011a790859087906004016200161b565b600060405180830381600087803b158015620011c257600080fd5b505af1158015620011d7573d6000803e3d6000fd5b50505050915091565b61615c806200164883390190565b6020808252825182820181905260009190848201906040850190845b81811015620012315783516001600160a01b0316835292840192918401916001016200120a565b50909695505050505050565b60005b838110156200125a57818101518382015260200162001240565b50506000910152565b600081518084526200127d8160208601602086016200123d565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200134757603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200133057605f198985030183526200131d84865162001263565b948e01949350918d0191600101620012fe565b505050978a019794505091880191600101620012b8565b50919a9950505050505050505050565b6001600160a01b03811681146200136d57600080fd5b50565b61ffff811681146200136d57600080fd5b6000806000606084860312156200139757600080fd5b8335620013a48162001357565b92506020840135620013b68162001357565b91506040840135620013c88162001370565b809150509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200149357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200147d5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062001439565b50978a01979550505091870191600101620013fb565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620014fb57603f19888603018452620014e885835162001263565b94509285019290850190600101620014c9565b5092979650505050505050565b600181811c908216806200151d57607f821691505b6020821081036200153e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200155757600080fd5b8151620015648162001357565b9392505050565b6000602082840312156200157e57600080fd5b8151620015648162001370565b6000602082840312156200159e57600080fd5b5051919050565b60006001600160a01b03808616835280851660208401525060606040830152620015d3606083018462001263565b95945050505050565b838152826020820152606060408201526000620015d3606083018462001263565b60008251620016118184602087016200123d565b9190910192915050565b6001600160a01b03831681526040602082015260006200163f604083018462001263565b94935050505056fe60c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c63430008140033a2646970667358221220f3ee7ba45f4de86fb9cb9cab1539f281cfa97c4c23f5bd67946a761f0e2d1fac64736f6c63430008140033","sourceMap":"229:1172:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;327:137;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;470:552:90:-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;6382:14:127;;6375:22;6357:41;;6345:2;6330:18;1243:204:1;6217:187:127;1028:371:90;;;:::i;2304:142:5:-;;;:::i;327:137:90:-;371:19;;;;;;;;;;;;;;;;;;:8;:19::i;:::-;361:7;:29;;-1:-1:-1;;361:29:90;-1:-1:-1;;;;;361:29:90;;;;;;;;;425:31;;;;;:::i;:::-;-1:-1:-1;;;;;6593:55:127;;;6575:74;;6563:2;6548:18;425:31:90;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;400:14:90;:57;;-1:-1:-1;;400:57:90;-1:-1:-1;;;;;400:57:90;;;;;;;;;;327:137::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;470:552:90:-;586:41;;;-1:-1:-1;;7298:2:127;7294:15;;;7290:24;;586:41:90;;;;7278:37:127;;;7349:15;;;;7345:24;;;7331:12;;;7324:46;;;7422:15;7426:3;7404:16;;;7400:38;7386:12;;;7379:60;;;586:41:90;;;;;;;;;7455:12:127;;;586:41:90;;576:52;;;;;;;;658:41;;;7278:37:127;;;;7331:12;;;7324:46;7386:12;;;7379:60;658:41:90;;;;;;;;;7455:12:127;;;;658:41:90;;;765:14;;-1:-1:-1;;731:61:90;;-1:-1:-1;;;;;765:14:90;658:41;576:52;731:33;:61::i;:::-;710:83;;804:66;821:4;-1:-1:-1;;;;;821:14:90;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;840:6;804:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;880;897:4;-1:-1:-1;;;;;897:14:90;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;916:6;880:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;956:59;965:4;-1:-1:-1;;;;;965:15:90;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;956:59;;984:7;956:59;;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;551:471;;;470:552;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;8178:74:127;;;1398:17:1;8268:18:127;;;8261:34;1428:1:1;;1377:7;;8151:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;1028:371:90:-;1097:53;;-1:-1:-1;;;1097:53:90;;-1:-1:-1;;;1097:53:90;;;8639:52:127;1097:15:90;;;;8612:18:127;;1097:53:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1167:14:90;;1160:57;;-1:-1:-1;;;1160:57:90;;1167:14;1160:57;;;9126:34:127;;;9176:18;;;9169:43;;;9228:18;;;9221:43;;;9280:18;;;9273:43;;;9359:19;;;9352:44;;;9412:19;;;9405:44;;;9465:19;;;9458:44;;;9518:19;;;9511:44;-1:-1:-1;;;;;1167:14:90;;;;-1:-1:-1;1160:33:90;;-1:-1:-1;9073:19:127;;1160:57:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1228:61:90;;-1:-1:-1;;;1228:61:90;;-1:-1:-1;;;1228:61:90;;;8639:52:127;1228:15:90;;-1:-1:-1;1228:15:90;;-1:-1:-1;8612:18:127;;1228:61:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1316:7:90;;1299:26;;-1:-1:-1;;;1299:26:90;;-1:-1:-1;;;;;1316:7:90;;;1299:26;;;6575:74:127;1299:8:90;;-1:-1:-1;1299:8:90;;-1:-1:-1;6548:18:127;;1299:26:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1342:14:90;;1335:57;;-1:-1:-1;;;1335:57:90;;1342:14;1335:57;;;9126:34:127;;;9176:18;;;9169:43;;;9228:18;;;9221:43;;;9280:18;;;9273:43;;;9359:19;;;9352:44;;;9412:19;;;9405:44;;;9465:19;;;9458:44;;;9518:19;;;9511:44;-1:-1:-1;;;;;1342:14:90;;;;-1:-1:-1;1335:33:90;;-1:-1:-1;9073:19:127;;1335:57:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1028:371::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;20439:125:3:-;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;1290:9525:68:-;1409:16;1584:4;1578;1574:15;1568:22;1635:4;1629;1625:15;1619:22;1678:4;1672:11;1732:10;1725:4;1719;1715:15;1711:32;1777:7;1771:14;1915:1;1903:10;1899:18;2177:6;2164:11;2161:23;2158:237;;;2288:10;2282:4;2275:24;2376:4;2370;2363:18;2158:237;9697:28;9691:4;9684:42;9819:14;9812:4;9806;9802:15;9795:39;10010:62;9996:11;9990:4;9986:22;9983:90;9955:4;9942:11;9938:22;9932:4;9928:33;9904:187;9881:4;9875;9871:15;9847:258;10144:11;10138:4;10134:22;10125:7;10118:39;10271:4;10264;10251:11;10247:22;10240:4;10234;10230:15;10227:1;10219:57;10207:69;;;10346:8;10336:230;;10459:10;10453:4;10446:24;10547:4;10541;10534:18;10336:230;10646:24;;10683;;-1:-1:-1;;10727:15:68;;10720:33;-1:-1:-1;;10773:15:68;;;10766:33;;;;-1:-1:-1;1290:9525:68;;-1:-1:-1;1290:9525:68:o;3570:134:1:-;3668:29;;-1:-1:-1;;;3668:29:1;;:11;;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3570:134;;;:::o;2386:::-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;20158:242:3:-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;20344:19;;;;;;11050:25:127;;;20293:33:3;-1:-1:-1;20344:7:3;;;;11023:18:127;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:250::-;785:1;795:113;809:6;806:1;803:13;795:113;;;885:11;;;879:18;866:11;;;859:39;831:2;824:10;795:113;;;-1:-1:-1;;942:1:127;924:16;;917:27;700:250::o;955:271::-;997:3;1035:5;1029:12;1062:6;1057:3;1050:19;1078:76;1147:6;1140:4;1135:3;1131:14;1124:4;1117:5;1113:16;1078:76;:::i;:::-;1208:2;1187:15;-1:-1:-1;;1183:29:127;1174:39;;;;1215:4;1170:50;;955:271;-1:-1:-1;;955:271:127:o;1231:1765::-;1464:2;1516:21;;;1586:13;;1489:18;;;1608:22;;;1435:4;;1464:2;1649;;1667:18;;;;1704:1;1747:15;;;1732:31;;1728:40;;1791:15;;;1435:4;;1855:1112;1871:6;1866:3;1863:15;1855:1112;;;-1:-1:-1;;1940:22:127;;;1936:36;1924:49;;1996:13;;2083:9;;-1:-1:-1;;;;;2079:58:127;2064:74;;2177:11;;2171:18;2209:15;;;2202:27;;;2290:19;;2036:15;;;2322:24;;;2503:21;;;;2369:2;2451:17;;;2439:30;;2435:39;;;2393:15;;;;2548:1;2562:296;2578:8;2573:3;2570:17;2562:296;;;2684:2;2680:7;2671:6;2663;2659:19;2655:33;2648:5;2641:48;2716:42;2751:6;2740:8;2734:15;2716:42;:::i;:::-;2787:17;;;;2706:52;-1:-1:-1;2830:14:127;;;;2606:1;2597:11;2562:296;;;-1:-1:-1;;;2945:12:127;;;;2881:6;-1:-1:-1;;2910:15:127;;;;1897:1;1888:11;1855:1112;;;-1:-1:-1;2984:6:127;;1231:1765;-1:-1:-1;;;;;;;;;;1231:1765:127:o;3001:154::-;-1:-1:-1;;;;;3080:5:127;3076:54;3069:5;3066:65;3056:93;;3145:1;3142;3135:12;3056:93;3001:154;:::o;3160:117::-;3245:6;3238:5;3234:18;3227:5;3224:29;3214:57;;3267:1;3264;3257:12;3282:527;3358:6;3366;3374;3427:2;3415:9;3406:7;3402:23;3398:32;3395:52;;;3443:1;3440;3433:12;3395:52;3482:9;3469:23;3501:31;3526:5;3501:31;:::i;:::-;3551:5;-1:-1:-1;3608:2:127;3593:18;;3580:32;3621:33;3580:32;3621:33;:::i;:::-;3673:7;-1:-1:-1;3732:2:127;3717:18;;3704:32;3745;3704;3745;:::i;:::-;3796:7;3786:17;;;3282:527;;;;;:::o;3814:1590::-;4016:4;4045:2;4085;4074:9;4070:18;4115:2;4104:9;4097:21;4138:6;4173;4167:13;4204:6;4196;4189:22;4230:2;4220:12;;4263:2;4252:9;4248:18;4241:25;;4325:2;4315:6;4312:1;4308:14;4297:9;4293:30;4289:39;4363:2;4355:6;4351:15;4384:1;4405;4415:960;4431:6;4426:3;4423:15;4415:960;;;4500:22;;;-1:-1:-1;;4496:36:127;4484:49;;4556:13;;4643:9;;-1:-1:-1;;;;;4639:58:127;4624:74;;4737:11;;4731:18;4769:15;;;4762:27;;;4850:19;;4596:15;;;4882:24;;;4972:21;;;;5017:1;;4940:2;4928:15;;;5031:236;5047:8;5042:3;5039:17;5031:236;;;5128:15;;5145:20;5124:42;5110:57;;5236:17;;;;5075:1;5066:11;;;;;5193:14;;;;5031:236;;;-1:-1:-1;5353:12:127;;;;5290:5;-1:-1:-1;;;5318:15:127;;;;4457:1;4448:11;4415:960;;;-1:-1:-1;5392:6:127;;3814:1590;-1:-1:-1;;;;;;;;;3814:1590:127:o;5409:803::-;5571:4;5600:2;5640;5629:9;5625:18;5670:2;5659:9;5652:21;5693:6;5728;5722:13;5759:6;5751;5744:22;5797:2;5786:9;5782:18;5775:25;;5859:2;5849:6;5846:1;5842:14;5831:9;5827:30;5823:39;5809:53;;5897:2;5889:6;5885:15;5918:1;5928:255;5942:6;5939:1;5936:13;5928:255;;;6035:2;6031:7;6019:9;6011:6;6007:22;6003:36;5998:3;5991:49;6063:40;6096:6;6087;6081:13;6063:40;:::i;:::-;6053:50;-1:-1:-1;6161:12:127;;;;6126:15;;;;5964:1;5957:9;5928:255;;;-1:-1:-1;6200:6:127;;5409:803;-1:-1:-1;;;;;;;5409:803:127:o;6660:380::-;6739:1;6735:12;;;;6782;;;6803:61;;6857:4;6849:6;6845:17;6835:27;;6803:61;6910:2;6902:6;6899:14;6879:18;6876:38;6873:161;;6956:10;6951:3;6947:20;6944:1;6937:31;6991:4;6988:1;6981:15;7019:4;7016:1;7009:15;6873:161;;6660:380;;;:::o;7478:267::-;7564:6;7617:2;7605:9;7596:7;7592:23;7588:32;7585:52;;;7633:1;7630;7623:12;7585:52;7665:9;7659:16;7684:31;7709:5;7684:31;:::i;:::-;7734:5;7478:267;-1:-1:-1;;;7478:267:127:o;7750:249::-;7819:6;7872:2;7860:9;7851:7;7847:23;7843:32;7840:52;;;7888:1;7885;7878:12;7840:52;7920:9;7914:16;7939:30;7963:5;7939:30;:::i;8306:184::-;8376:6;8429:2;8417:9;8408:7;8404:23;8400:32;8397:52;;;8445:1;8442;8435:12;8397:52;-1:-1:-1;8468:16:127;;8306:184;-1:-1:-1;8306:184:127:o;9797:441::-;9965:4;-1:-1:-1;;;;;10075:2:127;10067:6;10063:15;10052:9;10045:34;10127:2;10119:6;10115:15;10110:2;10099:9;10095:18;10088:43;;10167:2;10162;10151:9;10147:18;10140:30;10187:45;10228:2;10217:9;10213:18;10205:6;10187:45;:::i;:::-;10179:53;9797:441;-1:-1:-1;;;;;9797:441:127:o;10243:362::-;10448:6;10437:9;10430:25;10491:6;10486:2;10475:9;10471:18;10464:34;10534:2;10529;10518:9;10514:18;10507:30;10411:4;10554:45;10595:2;10584:9;10580:18;10572:6;10554:45;:::i;10610:289::-;10741:3;10779:6;10773:13;10795:66;10854:6;10849:3;10842:4;10834:6;10830:17;10795:66;:::i;:::-;10877:16;;;;;10610:289;-1:-1:-1;;10610:289:127:o;11342:340::-;-1:-1:-1;;;;;11523:6:127;11519:55;11508:9;11501:74;11611:2;11606;11595:9;11591:18;11584:30;11482:4;11631:45;11672:2;11661:9;11657:18;11649:6;11631:45;:::i;:::-;11623:53;11342:340;-1:-1:-1;;;;11342:340:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_Getters(address,address,uint16)":"4c83219f","testFuzz_revert_InitializeImplementation()":"bad0d6fb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"testFuzz_Getters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testFuzz_revert_InitializeImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairImplementation.t.sol\":\"LBPairImplementationTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairImplementation.t.sol\":{\"keccak256\":\"0x63a7228a0ec5fef5a84136451c8bf4ea946663d306c8eb50674bd29c197dd742\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://624dc8f7b8f10dfff4cbabef6b1a7c3282a03bc014c4e0ab2f578fae44dc67d0\",\"dweb:/ipfs/QmVt3iqiKwfULaSrnw51VQb46hgWmnQVgst3YDmE63BnUX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"tokenX","type":"address"},{"internalType":"address","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_Getters"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_InitializeImplementation"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairImplementation.t.sol":"LBPairImplementationTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairImplementation.t.sol":{"keccak256":"0x63a7228a0ec5fef5a84136451c8bf4ea946663d306c8eb50674bd29c197dd742","urls":["bzz-raw://624dc8f7b8f10dfff4cbabef6b1a7c3282a03bc014c4e0ab2f578fae44dc67d0","dweb:/ipfs/QmVt3iqiKwfULaSrnw51VQb46hgWmnQVgst3YDmE63BnUX"],"license":"MIT"}},"version":1},"id":90} \ No newline at end of file diff --git a/abi/LBPairInitialState.t.sol/LBPairInitialStateTest.json b/abi/LBPairInitialState.t.sol/LBPairInitialStateTest.json deleted file mode 100644 index 5feb1d02..00000000 --- a/abi/LBPairInitialState.t.sol/LBPairInitialStateTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_GetBin","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testFuzz_GetSwapIn","inputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testFuzz_GetSwapOut","inputs":[{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetActiveId","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetBinStep","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetFactory","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetIdFromPrice","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetNextNonEmptyBin","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetOracleParameters","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetOracleSampleAt","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetPriceFromId","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetProtocolFees","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetReserves","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetStaticFeeParameters","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetTokenX","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetTokenY","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_GetVariableFeeParameters","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_revert_SetStaticFeeParameters","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c0516201acd16200029f6000396000505060005050600061414401526201acd16000f3fe60806040523480156200001157600080fd5b5060043610620002705760003560e01c806374a73806116200015f578063b89e023311620000cc578063e01c69d51162000097578063e917490e116200007a578063e917490e14620004a4578063fecaa22314620004ae578063ff2efe4914620004c557600080fd5b8063e01c69d51462000490578063e20c9f71146200049a57600080fd5b8063b89e0233146200045b578063ba3eb7a51462000472578063ba414fa6146200047c578063c4faff2f146200048657600080fd5b8063916a17c6116200012a578063a7aa85e9116200010d578063a7aa85e91462000430578063b16a38c11462000447578063b5508aa9146200045157600080fd5b8063916a17c6146200040f5780639d26bf6e146200041957600080fd5b806374a7380614620003a9578063802f76e514620003b357806385226c8114620003ca578063889be5b714620003e357600080fd5b80633e5e3c2311620001fe578063519049b211620001c957806366d9a9a011620001ac57806366d9a9a0146200037c5780636b0ab11914620003955780637428239e146200039f57600080fd5b8063519049b21462000368578063589f9e77146200037257600080fd5b80633e5e3c2314620003175780633f7286f4146200032157806347af9fa6146200032b57806349789ef9146200034257600080fd5b80631ed7831c116200023f5780631ed7831c14620002d1578063257e0c4714620002ea57806326553f0414620002f45780632ade388014620002fe57600080fd5b806301ffc9a71462000275578063061794b314620002b15780630a9254e414620002bd5780630d7add1214620002c7575b600080fd5b6200029c6200028636600462006fb3565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620002bb620004cf565b005b620002bb62000b1d565b620002bb62000b67565b620002db62000e1b565b604051620002a8919062006fdf565b620002bb62000e7f565b620002bb62000f3c565b62000308620010f3565b604051620002a8919062007082565b620002db62001241565b620002db620012a3565b620002bb6200033c3660046200715a565b62001305565b62000359620003533660046200718a565b6200141e565b604051908152602001620002a8565b620002bb62001473565b620002bb62001b80565b6200038662001c39565b604051620002a89190620071c8565b620002bb62001d23565b620002bb62001ddf565b620002bb620020df565b620002bb620003c4366004620072a4565b62002245565b620003d4620023c3565b604051620002a89190620072d7565b620003fa620003f43660046200733d565b6200249d565b60405162ffffff9091168152602001620002a8565b62000386620024f8565b620002bb6200042a366004620072a4565b620025e2565b620002bb620004413660046200739a565b62002759565b620002bb62002bff565b620003d462002cbb565b6200029c6200046c3660046200744f565b62002d95565b620002bb62002e18565b6200029c62002f29565b620002bb62002fe8565b620002bb620031dc565b620002db6200333e565b620002bb620033a0565b620002bb620004bf3660046200746f565b620034ad565b620002bb620037b7565b60275460405163f5e2932960e01b81527002b78853aaac41bff0c3916eff1037c97a600482015262000599916001600160a01b03169063f5e2932990602401602060405180830381865afa1580156200052c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000552919062007509565b62ffffff16628003e860016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a310000000000000000000081525062003873565b60275460405163f5e2932960e01b81526f5e39658ec72a9dd7d1ad5ad1eab2671b600482015262000662916001600160a01b03169063f5e2932990602401602060405180830381865afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062007509565b62ffffff16627ffc1860016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a320000000000000000000081525062003873565b60275460405163f5e2932960e01b815271559cae6c3ce354b7f89f2e7bde1dde22bbad60048201526200072d916001600160a01b03169063f5e2932990602401602060405180830381865afa158015620006c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006e6919062007509565b62ffffff166280271060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a330000000000000000000081525062003873565b60275460405163f5e2932960e01b81526e02fd7ff556f194dc35451793a75fdb6004820152620007f5916001600160a01b03169063f5e2932990602401602060405180830381865afa15801562000788573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ae919062007509565b62ffffff16627fd8f060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a340000000000000000000081525062003873565b60275460405163f5e2932960e01b81527e0a40b1d8b5dc3e4f817cae3dfa6d7e5a39451053e2ebefe52ee47b100847966004820152620008cd916001600160a01b03169063f5e2932990602401602060405180830381865afa15801562000860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000886919062007509565b62ffffff166281388060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a350000000000000000000081525062003873565b60275460405163f5e2932960e01b81526118f8600482015262000988916001600160a01b03169063f5e2932990602401602060405180830381865afa1580156200091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000941919062007509565b62ffffff16627ec78060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a360000000000000000000081525062003873565b60275460405163f5e2932960e01b815272037c2af1323c158780abb97063dcc25af8412d600482015262000a54916001600160a01b03169063f5e2932990602401602060405180830381865afa158015620009e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a0d919062007509565b62ffffff166280303960016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a370000000000000000000081525062003873565b60275460405163f5e2932960e01b81526d4975007532de9a6fa71b6d74f0c1600482015262000b1b916001600160a01b03169063f5e2932990602401602060405180830381865afa15801562000aae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad4919062007509565b62ffffff16627fcfc760016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a380000000000000000000081525062003873565b565b62000b27620038ea565b601c54601d5462000b45916001600160a01b03908116911662004f5d565b602780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806000806000602760009054906101000a90046001600160a01b03166001600160a01b0316637ca0de306040518163ffffffff1660e01b815260040160e060405180830381865afa15801562000bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bec919062007529565b965096509650965096509650965062000c468761ffff1661138861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a31000081525062004f76565b62000c918661ffff16601e61ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a32000081525062004f76565b62000cdd8561ffff1661025861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a33000081525062004f76565b62000d298461ffff1661138861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a34000081525062004f76565b62000d778362ffffff16619c4062ffffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a35000081525062004f76565b62000dc38261ffff166103e861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a36000081525062004f76565b62000e128162ffffff166205573062ffffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a37000081525062004f76565b50505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000e7557602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e56575b5050505050905090565b602754604080516336f997b760e21b8152905162000b1b926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa15801562000ecc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef2919062007509565b62ffffff166280000062ffffff166040518060400160405280601381526020017f746573745f47657441637469766549643a3a310000000000000000000000000081525062004f76565b600080600080602760009054906101000a90046001600160a01b03166001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa15801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620075da565b93509350935093506200100c8462ffffff1660006040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3181525062004f76565b620010548362ffffff1660006040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3281525062004f76565b620010a38262ffffff166280000062ffffff166040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3381525062004f76565b620010ed8164ffffffffff1660006040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3481525062004f76565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200123857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620012205783829060005260206000200180546200118c906200763f565b80601f0160208091040260200160405190810160405280929190818152602001828054620011ba906200763f565b80156200120b5780601f10620011df576101008083540402835291602001916200120b565b820191906000526020600020905b815481529060010190602001808311620011ed57829003601f168201915b5050505050815260200190600101906200116a565b50505050815250508152602001906001019062001117565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000e75576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e56575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000e75576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e56575050505050905090565b602754604051630157d2d160e31b815262ffffff8316600482015260009182916001600160a01b0390911690630abe9688906024016040805180830381865afa15801562001357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200137d91906200767b565b91509150620013cd826001600160801b031660006040518060400160405280601281526020017f7465737446757a7a5f47657442696e3a3a31000000000000000000000000000081525062004f76565b62001419816001600160801b031660006040518060400160405280601281526020017f7465737446757a7a5f47657442696e3a3a32000000000000000000000000000081525062004f76565b505050565b6000808360ff1611801562001436575060008260ff16115b6200144d57620014478284620076c5565b62001467565b60016200145b8385620076c5565b620014679190620076e1565b60ff1690505b92915050565b600062001488600a652d79883d2000620076fd565b602754604051634c7cffbd60e01b8152628003e8600482015291925062001551916001600160a01b0390911690634c7cffbd90602401602060405180830381865afa158015620014dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001502919062007717565b7002b78853aaac41bff0c3916eff1037c97a836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a310000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152627ffc18600482015262001614916001600160a01b031690634c7cffbd90602401602060405180830381865afa158015620015a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015c6919062007717565b6f5e39658ec72a9dd7d1ad5ad1eab2671b836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a320000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152628027106004820152620016d9916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001689919062007717565b71559cae6c3ce354b7f89f2e7bde1dde22bbad836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a330000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152627fd8f060048201526200179b916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200174e919062007717565b6e02fd7ff556f194dc35451793a75fdb836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a340000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b81526281388060048201526200186c916001600160a01b031690634c7cffbd90602401602060405180830381865afa158015620017ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001810919062007717565b7e0a4351c4b3fe830000000000000000000000000000000000000000000000006040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a350000000000000000000081525062005020565b602754604051634c7cffbd60e01b81526281388060048201526200193d916001600160a01b031690634c7cffbd90602401602060405180830381865afa158015620018bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018e1919062007717565b7e0a3e12988ece370000000000000000000000000000000000000000000000006040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a36000000000000000000008152506200505d565b602754604051634c7cffbd60e01b8152627ec7806004820152620019f6916001600160a01b031690634c7cffbd90602401602060405180830381865afa1580156200198c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019b2919062007717565b6118f86305f5e1006040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a370000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b815262803039600482015262001abc916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001a45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6b919062007717565b72037c2af1323c158780abb97063dcc25af8412d836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a380000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152627fcfc7600482015262001b7d916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001b0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b31919062007717565b6d4975007532de9a6fa71b6d74f0c1836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a390000000000000000000081525062004fe1565b50565b602754604080516305fc47b360e21b8152905162000b1b926001600160a01b0316916317f11ecc9160048083019260209291908290030181865afa15801562001bcd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bf3919062007731565b61ffff16600a61ffff166040518060400160405280601281526020017f746573745f47657442696e537465703a3a31000000000000000000000000000081525062004f76565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620012385760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001d0a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001ccb5790505b5050505050815250508152602001906001019062001c5d565b60275460408051633684184360e21b8152905162000b1b926001600160a01b03169163da10610c9160048083019260209291908290030181865afa15801562001d70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d96919062007751565b601d5460408051808201909152601181527f746573745f476574546f6b656e593a3a3100000000000000000000000000000060208201526001600160a01b03909116906200509a565b60275460405163a41a01fb60e01b8152600060048201819052602482015262001e9c916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562001e33573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e59919062007509565b62ffffff1660006040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3100000000000081525062004f76565b60275460405163a41a01fb60e01b8152600160048201526000602482015262001f5d916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562001ef0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f16919062007509565b62ffffff1662ffffff80166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3200000000000081525062004f76565b60275460405163a41a01fb60e01b81526000600482015262ffffff60248201526200201c916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562001fb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd9919062007509565b62ffffff1660006040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3300000000000081525062004f76565b60275460405163a41a01fb60e01b81526001600482015262ffffff602482015262000b1b916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562002072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002098919062007509565b62ffffff1662ffffff80166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3400000000000081525062004f76565b604051630618f58760e51b81526331375e0360e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200213357600080fd5b505af115801562002148573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b158015620021a557600080fd5b505af1158015620021ba573d6000803e3d6000fd5b5050602754604051633329c28d60e11b81526000600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c48201526001600160a01b039091169250636653851a915060e4015b600060405180830381600087803b1580156200223057600080fd5b505af1158015620010ed573d6000803e3d6000fd5b602754604051630abcd78360e41b81526001600160801b03841660048201528215156024820152600091829182916001600160a01b03169063abcd783090604401606060405180830381865afa158015620022a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ca919062007771565b9250925092506200231c836001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f476574537761704f75743a3a310000000000000000000081525062004f76565b62002370826001600160801b0316866001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f476574537761704f75743a3a320000000000000000000081525062004f76565b620023bc816001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f476574537761704f75743a3a330000000000000000000081525062004f76565b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200123857838290600052602060002001805462002409906200763f565b80601f016020809104026020016040519081016040528092919081815260200182805462002437906200763f565b8015620024885780601f106200245c5761010080835404028352916020019162002488565b820191906000526020600020905b8154815290600101906020018083116200246a57829003601f168201915b505050505081526020019060010190620023e7565b600080620024b18462ffffff8716620077ba565b905060008360ff1611620024c65780620024e2565b620024d560ff841682620077d0565b620024e2906001620077ba565b9050620024ef81620050d7565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620012385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620025c957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200258a5790505b505050505081525050815260200190600101906200251c565b602754604051631cee6cdf60e31b81526001600160801b03841660048201528215156024820152600091829182916001600160a01b03169063e77366f890604401606060405180830381865afa15801562002641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002667919062007771565b925092509250620026c1836001600160801b0316866001600160801b03166040518060400160405280601581526020017f7465737446757a7a5f47657453776170496e3a3a31000000000000000000000081525062004f76565b6200270d826001600160801b031660006040518060400160405280601581526020017f7465737446757a7a5f47657453776170496e3a3a32000000000000000000000081525062004f76565b620023bc816001600160801b031660006040518060400160405280601581526020017f7465737446757a7a5f47657453776170496e3a3a33000000000000000000000081525062004f76565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200279a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027c0919062007751565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002803573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002829919062007751565b905062002838828b8862005103565b62002845818b8762005103565b60006200285385856200141e565b905060008167ffffffffffffffff811115620028735762002873620077e6565b6040519080825280602002602001820160405280156200289d578160200160208202803683370190505b50905060005b828110156200299c576000620028bb8b83896200249d565b905060008b62ffffff168262ffffff1610158015620028dd575060008960ff16115b620028ea5760006200290b565b6200290b6200290560ff8b16670de0b6b3a764000062007812565b62005112565b905060008c62ffffff168362ffffff16111580156200292d575060008960ff16115b6200293a57600062002955565b620029556200290560ff8b16670de0b6b3a764000062007812565b9050620029648282856200513e565b85858151811062002979576200297962007835565b6020026020010181815250505050508062002994906200784b565b9050620028a3565b506040516303223eab60e11b81526001600160a01b038d166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015620029f357600080fd5b505af115801562002a08573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562002a5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a82919062007867565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562002ad3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002af9919062007867565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b5957600080fd5b505af115801562002b6e573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162002ba49392919062007887565b6000604051808303816000875af115801562002bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002bee919081019062007948565b505050505050505050505050505050565b60275460408051632233163960e21b8152905162000b1b926001600160a01b0316916388cc58e49160048083019260209291908290030181865afa15801562002c4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c72919062007751565b60245460408051808201909152601281527f746573745f476574466163746f72793a3a31000000000000000000000000000060208201526001600160a01b03909116906200509a565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200123857838290600052602060002001805462002d01906200763f565b80601f016020809104026020016040519081016040528092919081815260200182805462002d2f906200763f565b801562002d805780601f1062002d545761010080835404028352916020019162002d80565b820191906000526020600020905b81548152906001019060200180831162002d6257829003601f168201915b50505050508152602001906001019062002cdf565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562002de5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e0b9190620079fd565b9998505050505050505050565b60275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa15801562002e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e8991906200767b565b9150915062002ed9826001600160801b031660006040518060400160405280601381526020017f746573745f47657452657365727665733a3a310000000000000000000000000081525062004f76565b62002f25816001600160801b031660006040518060400160405280601381526020017f746573745f47657452657365727665733a3a320000000000000000000000000081525062004f76565b5050565b60075460009060ff161562002f42575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562002fbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fe1919062007717565b1415905090565b6000806000806000602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562003044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200306a919062007a59565b94509450945094509450620030ba8560ff1660786040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a31000000000081525062004f76565b620031018461ffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a32000000000081525062004f76565b620031488361ffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a33000000000081525062004f76565b620031928264ffffffffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a34000000000081525062004f76565b620023bc8164ffffffffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a35000000000081525062004f76565b6027546040516344a050b560e11b815260016004820152600091829182916001600160a01b031690638940a16a90602401606060405180830381865afa1580156200322b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003251919062007aea565b925092509250620032a48367ffffffffffffffff1660006040518060400160405280601981526020017f746573745f4765744f7261636c6553616d706c6541743a3a310000000000000081525062004f76565b620032f18267ffffffffffffffff1660006040518060400160405280601981526020017f746573745f4765744f7261636c6553616d706c6541743a3a320000000000000081525062004f76565b620014198167ffffffffffffffff1660006040518060400160405280601981526020017f746573745f4765744f7261636c6553616d706c6541743a3a330000000000000081525062004f76565b6060601380548060200260200160405190810160405280929190818152602001828054801562000e75576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e56575050505050905090565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa158015620033eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200341191906200767b565b9150915062003461826001600160801b031660006040518060400160405280601781526020017f746573745f47657450726f746f636f6c466565733a3a3100000000000000000081525062004f76565b62002f25816001600160801b031660006040518060400160405280601781526020017f746573745f47657450726f746f636f6c466565733a3a3200000000000000000081525062004f76565b670de0b6b3a76400008311156200350b5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b60006200351983836200141e565b905060008167ffffffffffffffff811115620035395762003539620077e6565b60405190808252806020026020018201604052801562003563578160200160208202803683370190505b50905060008267ffffffffffffffff811115620035845762003584620077e6565b604051908082528060200260200182016040528015620035ae578160200160208202803683370190505b50905060005b83811015620036bc576000620035cc8983886200249d565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562003622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003648919062007717565b90508162ffffff1685848151811062003665576200366562007835565b602090810291909101015262003685818a670de0b6b3a76400006200517c565b8484815181106200369a576200369a62007835565b602002602001018181525050505080620036b4906200784b565b9050620035b4565b5060405163ca669fa760e01b81526001600160a01b038b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200371357600080fd5b505af115801562003728573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062003760908d908d908790879060040162007b71565b6000604051808303816000875af115801562003780573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620037aa919081019062007c2b565b5050505050505050505050565b602754604080516305e8746d60e01b8152905162000b1b926001600160a01b0316916305e8746d9160048083019260209291908290030181865afa15801562003804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200382a919062007751565b601c5460408051808201909152601181527f746573745f476574546f6b656e583a3a3100000000000000000000000000000060208201526001600160a01b03909116906200509a565b604051637b88583160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f710b06290620038b290879087908790879060040162007c64565b60006040518083038186803b158015620038cb57600080fd5b505afa158015620038e0573d6000803e3d6000fd5b5050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620039ec57601c54604051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b4d6c782916001600160a01b0390911690620039559062006f1c565b604051809103906000f08015801562003972573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620039b792919062007c8b565b600060405180830381600087803b158015620039d257600080fd5b505af1158015620039e7573d6000803e3d6000fd5b505050505b6006604051620039fc9062006f2a565b60ff9091168152602001604051809103906000f08015801562003a23573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062003a559062006f2a565b60ff9091168152602001604051809103906000f08015801562003a7c573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062003aae9062006f2a565b60ff9091168152602001604051809103906000f08015801562003ad5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062003b079062006f2a565b60ff9091168152602001604051809103906000f08015801562003b2e573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062003b609062006f2a565b60ff9091168152602001604051809103906000f08015801562003b87573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062003bb99062006f2a565b60ff9091168152602001604051809103906000f08015801562003be0573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162003c0f9062006f38565b604051809103906000f08015801562003c2c573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b15801562003cd257600080fd5b505af115801562003ce7573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003d6457600080fd5b505af115801562003d79573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003df657600080fd5b505af115801562003e0b573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003e8857600080fd5b505af115801562003e9d573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003f1a57600080fd5b505af115801562003f2f573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003fac57600080fd5b505af115801562003fc1573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200403857600080fd5b505af11580156200404d573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620040de57600080fd5b505af1158015620040f3573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200417a9062006f46565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620041b5573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620041e39062006f54565b6001600160a01b039091168152602001604051809103906000f08015801562004210573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200426f57600080fd5b505af115801562004284573d6000803e3d6000fd5b5050505062004292620051aa565b6200429e600a62005523565b602454602b54601c546040516001600160a01b03938416939283169290911690620042c99062006f62565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562004306573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620043419062006f70565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200437e573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200442457600080fd5b505af115801562004439573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620044ca57600080fd5b505af1158015620044df573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200457357600080fd5b505af115801562004588573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200461957600080fd5b505af11580156200462e573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620046bf57600080fd5b505af1158015620046d4573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200476557600080fd5b505af11580156200477a573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af1158015620047d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047fb919062007867565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004853573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004879919062007867565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620048d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620048f7919062007867565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200494f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004975919062007867565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620049cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049f3919062007867565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004a4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a71919062007867565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004aef919062007867565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004b47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b6d919062007867565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004bc5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004beb919062007867565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c69919062007867565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004cc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ce7919062007867565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004d3f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d65919062007867565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004dbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004de3919062007867565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004e3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e61919062007867565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004eb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004edf919062007867565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004f37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b7d919062007867565b600062004f6f838362800000620055c3565b9392505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859062004fb39086908690869060040162007caf565b60006040518083038186803b15801562004fcc57600080fd5b505afa15801562000e12573d6000803e3d6000fd5b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390620038b290879087908790879060040162007c64565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d9062004fb39086908690869060040162007caf565b604051630389490b60e61b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e25242c09062004fb39086908690869060040162007caf565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d19062004fb39086908690869060040162007cd0565b8062ffffff81168114620050fe57604051639b63641560e01b815260040160405180910390fd5b919050565b620014198383836000620055d4565b8067ffffffffffffffff81168114620050fe5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60008060006200518d8686620057d7565b91509150620051a08686868585620057f6565b9695505050505050565b601c546001600160a01b0316156200521f5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200520557600080fd5b505af11580156200521a573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620052945760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200527a57600080fd5b505af11580156200528f573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620053095760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620052ef57600080fd5b505af115801562005304573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200537e5760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200536457600080fd5b505af115801562005379573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620053f35760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620053d957600080fd5b505af1158015620053ee573d6000803e3d6000fd5b505050505b6020546001600160a01b031615620054685760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200544e57600080fd5b505af115801562005463573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620054dd5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620054c357600080fd5b505af1158015620054d8573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562000b1b5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a440923910162002215565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b158015620055ae57600080fd5b505af1158015620023bc573d6000803e3d6000fd5b600062005174848484600a620058a8565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200562a9162007cfe565b600060405180830381855afa9150503d806000811462005667576040519150601f19603f3d011682016040523d82523d6000602084013e6200566c565b606091505b5091505060008180602001905181019062005688919062007717565b9050620056c284620056bb87620056b46370a0823160e01b620056ad600c8d6200593e565b9062005964565b9062005982565b90620059ab565b8215620057cf5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200570d919062007cfe565b600060405180830381855afa9150503d80600081146200574a576040519150601f19603f3d011682016040523d82523d6000602084013e6200574f565b606091505b509150506000818060200190518101906200576b919062007717565b9050828610156200579657620057828684620077d0565b6200578e9082620077d0565b9050620057b1565b620057a28387620077d0565b620057ae9082620077ba565b90505b620038e081620056bb6318160ddd60e01b620056ad600c8d6200593e565b505050505050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200581c57838381620058135762005813620077fc565b049050620024ef565b8382106200583d576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562005918573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024ef919062007751565b6005820180546001600160a01b0319166001600160a01b03831617905560008262004f6f565b60038201805463ffffffff191660e083901c17905560008262004f6f565b6002820180546001810182556000918252602082206001600160a01b0384169101558262004f6f565b62002f258282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562005a2457602002820191906000526020600020905b81548152602001906001019080831162005a0f575b5050505050905060008362005a398362005dc8565b60405160200162005a4c92919062007d1c565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162005aa091869188910162007d4f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005adb5762005ad98762005e7c565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162005b1c91879189910162007d4f565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162005b63919062007cfe565b600060405180830381855afa9150503d806000811462005ba0576040519150601f19603f3d011682016040523d82523d6000602084013e62005ba5565b606091505b50915062005bc290508162005bbc886020620076fd565b62005e89565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562005c29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c4f919062007717565b905080821462005d065760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162003502565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562005d6a57600080fd5b505af115801562005d7f573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562005db460028b01600062006f7e565b896004016000905550505050505050505050565b606060008251602062005ddc9190620076fd565b67ffffffffffffffff81111562005df75762005df7620077e6565b6040519080825280601f01601f19166020018201604052801562005e22576020820181803683370190505b50905060005b835181101562005e7557600084828151811062005e495762005e4962007835565b60200260200101519050808260200260200184015250808062005e6c906200784b565b91505062005e28565b5092915050565b60006200146d8262005f2b565b6000806000602085511162005ea057845162005ea3565b60205b905060005b8181101562005f215762005ebe816008620076fd565b8662005ecb8388620077ba565b8151811062005ede5762005ede62007835565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005f18816200784b565b91505062005ea8565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562005f9d57602002820191906000526020600020905b81548152602001906001019080831162005f88575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062005fe99250859187910162007d4f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562006088576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200605891859187910162007d4f565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620060968362006dd7565b604051602001620060a992919062007d1c565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200611957600080fd5b505af11580156200612e573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200614f919062007cfe565b600060405180830381855afa9150503d80600081146200618c576040519150601f19603f3d011682016040523d82523d6000602084013e62006191565b606091505b509150620061ae905081620061a8876020620076fd565b62006e84565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562006210573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200623a919081019062007d8b565b5090508051600103620065de5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062006292576200629262007835565b60200260200101516040518363ffffffff1660e01b8152600401620062cc9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620062ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006310919062007717565b9050806200637b577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062006350576200635062007835565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620064305760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162003502565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200646892919062007d4f565b604051602081830303815290604052805190602001208560008151811062006494576200649462007835565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a181600081518110620064ee57620064ee62007835565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262006539918a918c910162007d4f565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c16855282528284209251909391620065a3918a918c910162007d4f565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062006c4c565b60018151111562006bdb5760005b815181101562006bd45760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062006640576200664062007835565b60200260200101516040518363ffffffff1660e01b81526004016200667a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006698573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066be919062007717565b90508062006728577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620066fd57620066fd62007835565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462006737575062006bbf565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200676f576200676f62007835565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620067c857600080fd5b505af1158015620067dd573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620067ff919062007cfe565b600060405180830381855afa9150503d80600081146200683c576040519150601f19603f3d011682016040523d82523d6000602084013e62006841565b606091505b5090925090506200685981620061a88c6020620076fd565b9650508080156200686957508186145b1562006b01577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620068a792919062007d4f565b60405160208183030381529060405280519060200120888881518110620068d257620068d262007835565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200692b576200692b62007835565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262006976918d918f910162007d4f565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c60405160200162006a0392919062007d4f565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062006a865762006a8662007835565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562006adf57600080fd5b505af115801562006af4573d6000803e3d6000fd5b5050505050505062006bd4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062006b495762006b4962007835565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562006ba257600080fd5b505af115801562006bb7573d6000803e3d6000fd5b505050505050505b8062006bcb816200784b565b915050620065ec565b5062006c4c565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162003502565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162006c909188918a910162007d4f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662006d2d5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162003502565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562006d5e60028a01600062006f7e565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162006da49188918a910162007d4f565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062006deb9190620076fd565b67ffffffffffffffff81111562006e065762006e06620077e6565b6040519080825280601f01601f19166020018201604052801562006e31576020820181803683370190505b50905060005b835181101562005e7557600084828151811062006e585762006e5862007835565b60200260200101519050808260200260200184015250808062006e7b906200784b565b91505062006e37565b6000806000602085511162006e9b57845162006e9e565b60205b905060005b8181101562005f215762006eb9816008620076fd565b8662006ec68388620077ba565b8151811062006ed95762006ed962007835565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006f13816200784b565b91505062006ea3565b610b088062007df783390190565b610bfd80620088ff83390190565b610c1880620094fc83390190565b613199806200a11483390190565b61615c806200d2ad83390190565b614c80806201340983390190565b612c13806201808983390190565b508054600082559060005260206000209081019062001b7d91905b8082111562006faf576000815560010162006f99565b5090565b60006020828403121562006fc657600080fd5b81356001600160e01b03198116811462004f6f57600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620070225783516001600160a01b03168352928401929184019160010162006ffb565b50909695505050505050565b60005b838110156200704b57818101518382015260200162007031565b50506000910152565b600081518084526200706e8160208601602086016200702e565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200713857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200712157605f198985030183526200710e84865162007054565b948e01949350918d0191600101620070ef565b505050978a019794505091880191600101620070a9565b50919a9950505050505050505050565b62ffffff8116811462001b7d57600080fd5b6000602082840312156200716d57600080fd5b813562004f6f8162007148565b60ff8116811462001b7d57600080fd5b600080604083850312156200719e57600080fd5b8235620071ab816200717a565b91506020830135620071bd816200717a565b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200727057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200725a5783516001600160e01b0319168252928b019260019290920191908b01906200722e565b50978a01979550505091870191600101620071f0565b50919998505050505050505050565b6001600160801b038116811462001b7d57600080fd5b801515811462001b7d57600080fd5b60008060408385031215620072b857600080fd5b8235620072c5816200727f565b91506020830135620071bd8162007295565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200733057603f198886030184526200731d85835162007054565b94509285019290850190600101620072fe565b5092979650505050505050565b6000806000606084860312156200735357600080fd5b8335620073608162007148565b925060208401359150604084013562007379816200717a565b809150509250925092565b6001600160a01b038116811462001b7d57600080fd5b600080600080600080600080610100898b031215620073b857600080fd5b8835620073c58162007384565b97506020890135620073d78162007384565b96506040890135620073e98162007384565b95506060890135620073fb8162007148565b94506080890135935060a0890135925060c08901356200741b816200717a565b915060e08901356200742d816200717a565b809150509295985092959890939650565b61ffff8116811462001b7d57600080fd5b6000602082840312156200746257600080fd5b813562004f6f816200743e565b600080600080600080600060e0888a0312156200748b57600080fd5b8735620074988162007384565b96506020880135620074aa8162007384565b95506040880135620074bc8162007384565b94506060880135620074ce8162007148565b93506080880135925060a0880135620074e7816200717a565b915060c0880135620074f9816200717a565b8091505092959891949750929550565b6000602082840312156200751c57600080fd5b815162004f6f8162007148565b600080600080600080600060e0888a0312156200754557600080fd5b875162007552816200743e565b602089015190975062007565816200743e565b604089015190965062007578816200743e565b60608901519095506200758b816200743e565b60808901519094506200759e8162007148565b60a0890151909350620075b1816200743e565b60c0890151909250620074f98162007148565b805164ffffffffff81168114620050fe57600080fd5b60008060008060808587031215620075f157600080fd5b8451620075fe8162007148565b6020860151909450620076118162007148565b6040860151909350620076248162007148565b91506200763460608601620075c4565b905092959194509250565b600181811c908216806200765457607f821691505b6020821081036200767557634e487b7160e01b600052602260045260246000fd5b50919050565b600080604083850312156200768f57600080fd5b82516200769c816200727f565b6020840151909250620071bd816200727f565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156200146d576200146d620076af565b60ff82811682821603908111156200146d576200146d620076af565b80820281158282048414176200146d576200146d620076af565b6000602082840312156200772a57600080fd5b5051919050565b6000602082840312156200774457600080fd5b815162004f6f816200743e565b6000602082840312156200776457600080fd5b815162004f6f8162007384565b6000806000606084860312156200778757600080fd5b835162007794816200727f565b6020850151909350620077a7816200727f565b604085015190925062007379816200727f565b808201808211156200146d576200146d620076af565b818103818111156200146d576200146d620076af565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826200783057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201620078605762007860620076af565b5060010190565b6000602082840312156200787a57600080fd5b815162004f6f8162007295565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620078d457855183529483019491830191600101620078b6565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715620079195762007919620077e6565b604052919050565b600067ffffffffffffffff8211156200793e576200793e620077e6565b5060051b60200190565b6000806000606084860312156200795e57600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200798557600080fd5b8501601f810187136200799757600080fd5b8051620079ae620079a88262007921565b620078ed565b81815260059190911b82018301908381019089831115620079ce57600080fd5b928401925b82841015620079ee57835182529284019290840190620079d3565b80955050505050509250925092565b600080600080600080600080610100898b03121562007a1b57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e08901516200742d8162007295565b600080600080600060a0868803121562007a7257600080fd5b855162007a7f816200717a565b602087015190955062007a92816200743e565b604087015190945062007aa5816200743e565b925062007ab560608701620075c4565b915062007ac560808701620075c4565b90509295509295909350565b805167ffffffffffffffff81168114620050fe57600080fd5b60008060006060848603121562007b0057600080fd5b62007b0b8462007ad1565b925062007b1b6020850162007ad1565b915062007b2b6040850162007ad1565b90509250925092565b600081518084526020808501945080840160005b8381101562007b665781518752958201959082019060010162007b48565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262007b9f608083018562007b34565b828103606084015262007bb3818562007b34565b979650505050505050565b600082601f83011262007bd057600080fd5b8151602062007be3620079a88362007921565b82815260059290921b8401810191818101908684111562007c0357600080fd5b8286015b8481101562007c20578051835291830191830162007c07565b509695505050505050565b60006020828403121562007c3e57600080fd5b815167ffffffffffffffff81111562007c5657600080fd5b620051748482850162007bbe565b848152836020820152826040820152608060608201526000620051a0608083018462007054565b6001600160a01b038316815260406020820152600062005174604083018462007054565b838152826020820152606060408201526000620024ef606083018462007054565b60006001600160a01b03808616835280851660208401525060606040830152620024ef606083018462007054565b6000825162007d128184602087016200702e565b9190910192915050565b6001600160e01b031983168152815160009062007d418160048501602087016200702e565b919091016004019392505050565b825160009082906020808701845b8381101562007d7b5781518552938201939082019060010162007d5d565b5050948252509092019392505050565b6000806040838503121562007d9f57600080fd5b825167ffffffffffffffff8082111562007db857600080fd5b62007dc68683870162007bbe565b9350602085015191508082111562007ddd57600080fd5b5062007dec8582860162007bbe565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033a2646970667358221220e5c50b5fed1241df4dbdfe4fe19f39bcaad658851f4cc2275d530bb230fcb66764736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;95:9231:87;1812:17:93;;95:9231:87;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;95:9231:87;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;95:9231:87;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002705760003560e01c806374a73806116200015f578063b89e023311620000cc578063e01c69d51162000097578063e917490e116200007a578063e917490e14620004a4578063fecaa22314620004ae578063ff2efe4914620004c557600080fd5b8063e01c69d51462000490578063e20c9f71146200049a57600080fd5b8063b89e0233146200045b578063ba3eb7a51462000472578063ba414fa6146200047c578063c4faff2f146200048657600080fd5b8063916a17c6116200012a578063a7aa85e9116200010d578063a7aa85e91462000430578063b16a38c11462000447578063b5508aa9146200045157600080fd5b8063916a17c6146200040f5780639d26bf6e146200041957600080fd5b806374a7380614620003a9578063802f76e514620003b357806385226c8114620003ca578063889be5b714620003e357600080fd5b80633e5e3c2311620001fe578063519049b211620001c957806366d9a9a011620001ac57806366d9a9a0146200037c5780636b0ab11914620003955780637428239e146200039f57600080fd5b8063519049b21462000368578063589f9e77146200037257600080fd5b80633e5e3c2314620003175780633f7286f4146200032157806347af9fa6146200032b57806349789ef9146200034257600080fd5b80631ed7831c116200023f5780631ed7831c14620002d1578063257e0c4714620002ea57806326553f0414620002f45780632ade388014620002fe57600080fd5b806301ffc9a71462000275578063061794b314620002b15780630a9254e414620002bd5780630d7add1214620002c7575b600080fd5b6200029c6200028636600462006fb3565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620002bb620004cf565b005b620002bb62000b1d565b620002bb62000b67565b620002db62000e1b565b604051620002a8919062006fdf565b620002bb62000e7f565b620002bb62000f3c565b62000308620010f3565b604051620002a8919062007082565b620002db62001241565b620002db620012a3565b620002bb6200033c3660046200715a565b62001305565b62000359620003533660046200718a565b6200141e565b604051908152602001620002a8565b620002bb62001473565b620002bb62001b80565b6200038662001c39565b604051620002a89190620071c8565b620002bb62001d23565b620002bb62001ddf565b620002bb620020df565b620002bb620003c4366004620072a4565b62002245565b620003d4620023c3565b604051620002a89190620072d7565b620003fa620003f43660046200733d565b6200249d565b60405162ffffff9091168152602001620002a8565b62000386620024f8565b620002bb6200042a366004620072a4565b620025e2565b620002bb620004413660046200739a565b62002759565b620002bb62002bff565b620003d462002cbb565b6200029c6200046c3660046200744f565b62002d95565b620002bb62002e18565b6200029c62002f29565b620002bb62002fe8565b620002bb620031dc565b620002db6200333e565b620002bb620033a0565b620002bb620004bf3660046200746f565b620034ad565b620002bb620037b7565b60275460405163f5e2932960e01b81527002b78853aaac41bff0c3916eff1037c97a600482015262000599916001600160a01b03169063f5e2932990602401602060405180830381865afa1580156200052c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000552919062007509565b62ffffff16628003e860016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a310000000000000000000081525062003873565b60275460405163f5e2932960e01b81526f5e39658ec72a9dd7d1ad5ad1eab2671b600482015262000662916001600160a01b03169063f5e2932990602401602060405180830381865afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062007509565b62ffffff16627ffc1860016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a320000000000000000000081525062003873565b60275460405163f5e2932960e01b815271559cae6c3ce354b7f89f2e7bde1dde22bbad60048201526200072d916001600160a01b03169063f5e2932990602401602060405180830381865afa158015620006c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006e6919062007509565b62ffffff166280271060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a330000000000000000000081525062003873565b60275460405163f5e2932960e01b81526e02fd7ff556f194dc35451793a75fdb6004820152620007f5916001600160a01b03169063f5e2932990602401602060405180830381865afa15801562000788573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ae919062007509565b62ffffff16627fd8f060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a340000000000000000000081525062003873565b60275460405163f5e2932960e01b81527e0a40b1d8b5dc3e4f817cae3dfa6d7e5a39451053e2ebefe52ee47b100847966004820152620008cd916001600160a01b03169063f5e2932990602401602060405180830381865afa15801562000860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000886919062007509565b62ffffff166281388060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a350000000000000000000081525062003873565b60275460405163f5e2932960e01b81526118f8600482015262000988916001600160a01b03169063f5e2932990602401602060405180830381865afa1580156200091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000941919062007509565b62ffffff16627ec78060016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a360000000000000000000081525062003873565b60275460405163f5e2932960e01b815272037c2af1323c158780abb97063dcc25af8412d600482015262000a54916001600160a01b03169063f5e2932990602401602060405180830381865afa158015620009e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a0d919062007509565b62ffffff166280303960016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a370000000000000000000081525062003873565b60275460405163f5e2932960e01b81526d4975007532de9a6fa71b6d74f0c1600482015262000b1b916001600160a01b03169063f5e2932990602401602060405180830381865afa15801562000aae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad4919062007509565b62ffffff16627fcfc760016040518060400160405280601681526020017f746573745f476574496446726f6d50726963653a3a380000000000000000000081525062003873565b565b62000b27620038ea565b601c54601d5462000b45916001600160a01b03908116911662004f5d565b602780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806000806000602760009054906101000a90046001600160a01b03166001600160a01b0316637ca0de306040518163ffffffff1660e01b815260040160e060405180830381865afa15801562000bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bec919062007529565b965096509650965096509650965062000c468761ffff1661138861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a31000081525062004f76565b62000c918661ffff16601e61ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a32000081525062004f76565b62000cdd8561ffff1661025861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a33000081525062004f76565b62000d298461ffff1661138861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a34000081525062004f76565b62000d778362ffffff16619c4062ffffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a35000081525062004f76565b62000dc38261ffff166103e861ffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a36000081525062004f76565b62000e128162ffffff166205573062ffffff166040518060400160405280601e81526020017f746573745f476574537461746963466565506172616d65746572733a3a37000081525062004f76565b50505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000e7557602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e56575b5050505050905090565b602754604080516336f997b760e21b8152905162000b1b926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa15801562000ecc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef2919062007509565b62ffffff166280000062ffffff166040518060400160405280601381526020017f746573745f47657441637469766549643a3a310000000000000000000000000081525062004f76565b600080600080602760009054906101000a90046001600160a01b03166001600160a01b0316638d7024e56040518163ffffffff1660e01b8152600401608060405180830381865afa15801562000f96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fbc9190620075da565b93509350935093506200100c8462ffffff1660006040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3181525062004f76565b620010548362ffffff1660006040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3281525062004f76565b620010a38262ffffff166280000062ffffff166040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3381525062004f76565b620010ed8164ffffffffff1660006040518060400160405280602081526020017f746573745f4765745661726961626c65466565506172616d65746572733a3a3481525062004f76565b50505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200123857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620012205783829060005260206000200180546200118c906200763f565b80601f0160208091040260200160405190810160405280929190818152602001828054620011ba906200763f565b80156200120b5780601f10620011df576101008083540402835291602001916200120b565b820191906000526020600020905b815481529060010190602001808311620011ed57829003601f168201915b5050505050815260200190600101906200116a565b50505050815250508152602001906001019062001117565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000e75576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e56575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000e75576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e56575050505050905090565b602754604051630157d2d160e31b815262ffffff8316600482015260009182916001600160a01b0390911690630abe9688906024016040805180830381865afa15801562001357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200137d91906200767b565b91509150620013cd826001600160801b031660006040518060400160405280601281526020017f7465737446757a7a5f47657442696e3a3a31000000000000000000000000000081525062004f76565b62001419816001600160801b031660006040518060400160405280601281526020017f7465737446757a7a5f47657442696e3a3a32000000000000000000000000000081525062004f76565b505050565b6000808360ff1611801562001436575060008260ff16115b6200144d57620014478284620076c5565b62001467565b60016200145b8385620076c5565b620014679190620076e1565b60ff1690505b92915050565b600062001488600a652d79883d2000620076fd565b602754604051634c7cffbd60e01b8152628003e8600482015291925062001551916001600160a01b0390911690634c7cffbd90602401602060405180830381865afa158015620014dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001502919062007717565b7002b78853aaac41bff0c3916eff1037c97a836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a310000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152627ffc18600482015262001614916001600160a01b031690634c7cffbd90602401602060405180830381865afa158015620015a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015c6919062007717565b6f5e39658ec72a9dd7d1ad5ad1eab2671b836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a320000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152628027106004820152620016d9916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001689919062007717565b71559cae6c3ce354b7f89f2e7bde1dde22bbad836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a330000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152627fd8f060048201526200179b916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001728573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200174e919062007717565b6e02fd7ff556f194dc35451793a75fdb836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a340000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b81526281388060048201526200186c916001600160a01b031690634c7cffbd90602401602060405180830381865afa158015620017ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001810919062007717565b7e0a4351c4b3fe830000000000000000000000000000000000000000000000006040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a350000000000000000000081525062005020565b602754604051634c7cffbd60e01b81526281388060048201526200193d916001600160a01b031690634c7cffbd90602401602060405180830381865afa158015620018bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018e1919062007717565b7e0a3e12988ece370000000000000000000000000000000000000000000000006040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a36000000000000000000008152506200505d565b602754604051634c7cffbd60e01b8152627ec7806004820152620019f6916001600160a01b031690634c7cffbd90602401602060405180830381865afa1580156200198c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019b2919062007717565b6118f86305f5e1006040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a370000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b815262803039600482015262001abc916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001a45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6b919062007717565b72037c2af1323c158780abb97063dcc25af8412d836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a380000000000000000000081525062004fe1565b602754604051634c7cffbd60e01b8152627fcfc7600482015262001b7d916001600160a01b031690634c7cffbd90602401602060405180830381865afa15801562001b0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b31919062007717565b6d4975007532de9a6fa71b6d74f0c1836040518060400160405280601681526020017f746573745f476574507269636546726f6d49643a3a390000000000000000000081525062004fe1565b50565b602754604080516305fc47b360e21b8152905162000b1b926001600160a01b0316916317f11ecc9160048083019260209291908290030181865afa15801562001bcd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bf3919062007731565b61ffff16600a61ffff166040518060400160405280601281526020017f746573745f47657442696e537465703a3a31000000000000000000000000000081525062004f76565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620012385760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001d0a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001ccb5790505b5050505050815250508152602001906001019062001c5d565b60275460408051633684184360e21b8152905162000b1b926001600160a01b03169163da10610c9160048083019260209291908290030181865afa15801562001d70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d96919062007751565b601d5460408051808201909152601181527f746573745f476574546f6b656e593a3a3100000000000000000000000000000060208201526001600160a01b03909116906200509a565b60275460405163a41a01fb60e01b8152600060048201819052602482015262001e9c916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562001e33573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e59919062007509565b62ffffff1660006040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3100000000000081525062004f76565b60275460405163a41a01fb60e01b8152600160048201526000602482015262001f5d916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562001ef0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f16919062007509565b62ffffff1662ffffff80166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3200000000000081525062004f76565b60275460405163a41a01fb60e01b81526000600482015262ffffff60248201526200201c916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562001fb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd9919062007509565b62ffffff1660006040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3300000000000081525062004f76565b60275460405163a41a01fb60e01b81526001600482015262ffffff602482015262000b1b916001600160a01b03169063a41a01fb90604401602060405180830381865afa15801562002072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002098919062007509565b62ffffff1662ffffff80166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3400000000000081525062004f76565b604051630618f58760e51b81526331375e0360e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200213357600080fd5b505af115801562002148573d6000803e3d6000fd5b50506024805460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063ca669fa7925001600060405180830381600087803b158015620021a557600080fd5b505af1158015620021ba573d6000803e3d6000fd5b5050602754604051633329c28d60e11b81526000600482018190526024820181905260448201819052606482018190526084820181905260a4820181905260c48201526001600160a01b039091169250636653851a915060e4015b600060405180830381600087803b1580156200223057600080fd5b505af1158015620010ed573d6000803e3d6000fd5b602754604051630abcd78360e41b81526001600160801b03841660048201528215156024820152600091829182916001600160a01b03169063abcd783090604401606060405180830381865afa158015620022a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ca919062007771565b9250925092506200231c836001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f476574537761704f75743a3a310000000000000000000081525062004f76565b62002370826001600160801b0316866001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f476574537761704f75743a3a320000000000000000000081525062004f76565b620023bc816001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f476574537761704f75743a3a330000000000000000000081525062004f76565b5050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200123857838290600052602060002001805462002409906200763f565b80601f016020809104026020016040519081016040528092919081815260200182805462002437906200763f565b8015620024885780601f106200245c5761010080835404028352916020019162002488565b820191906000526020600020905b8154815290600101906020018083116200246a57829003601f168201915b505050505081526020019060010190620023e7565b600080620024b18462ffffff8716620077ba565b905060008360ff1611620024c65780620024e2565b620024d560ff841682620077d0565b620024e2906001620077ba565b9050620024ef81620050d7565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620012385760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620025c957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200258a5790505b505050505081525050815260200190600101906200251c565b602754604051631cee6cdf60e31b81526001600160801b03841660048201528215156024820152600091829182916001600160a01b03169063e77366f890604401606060405180830381865afa15801562002641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002667919062007771565b925092509250620026c1836001600160801b0316866001600160801b03166040518060400160405280601581526020017f7465737446757a7a5f47657453776170496e3a3a31000000000000000000000081525062004f76565b6200270d826001600160801b031660006040518060400160405280601581526020017f7465737446757a7a5f47657453776170496e3a3a32000000000000000000000081525062004f76565b620023bc816001600160801b031660006040518060400160405280601581526020017f7465737446757a7a5f47657453776170496e3a3a33000000000000000000000081525062004f76565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200279a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027c0919062007751565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002803573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002829919062007751565b905062002838828b8862005103565b62002845818b8762005103565b60006200285385856200141e565b905060008167ffffffffffffffff811115620028735762002873620077e6565b6040519080825280602002602001820160405280156200289d578160200160208202803683370190505b50905060005b828110156200299c576000620028bb8b83896200249d565b905060008b62ffffff168262ffffff1610158015620028dd575060008960ff16115b620028ea5760006200290b565b6200290b6200290560ff8b16670de0b6b3a764000062007812565b62005112565b905060008c62ffffff168362ffffff16111580156200292d575060008960ff16115b6200293a57600062002955565b620029556200290560ff8b16670de0b6b3a764000062007812565b9050620029648282856200513e565b85858151811062002979576200297962007835565b6020026020010181815250505050508062002994906200784b565b9050620028a3565b506040516303223eab60e11b81526001600160a01b038d166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015620029f357600080fd5b505af115801562002a08573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562002a5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a82919062007867565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562002ad3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002af9919062007867565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b5957600080fd5b505af115801562002b6e573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162002ba49392919062007887565b6000604051808303816000875af115801562002bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002bee919081019062007948565b505050505050505050505050505050565b60275460408051632233163960e21b8152905162000b1b926001600160a01b0316916388cc58e49160048083019260209291908290030181865afa15801562002c4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c72919062007751565b60245460408051808201909152601281527f746573745f476574466163746f72793a3a31000000000000000000000000000060208201526001600160a01b03909116906200509a565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200123857838290600052602060002001805462002d01906200763f565b80601f016020809104026020016040519081016040528092919081815260200182805462002d2f906200763f565b801562002d805780601f1062002d545761010080835404028352916020019162002d80565b820191906000526020600020905b81548152906001019060200180831162002d6257829003601f168201915b50505050508152602001906001019062002cdf565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562002de5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e0b9190620079fd565b9998505050505050505050565b60275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa15801562002e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e8991906200767b565b9150915062002ed9826001600160801b031660006040518060400160405280601381526020017f746573745f47657452657365727665733a3a310000000000000000000000000081525062004f76565b62002f25816001600160801b031660006040518060400160405280601381526020017f746573745f47657452657365727665733a3a320000000000000000000000000081525062004f76565b5050565b60075460009060ff161562002f42575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562002fbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fe1919062007717565b1415905090565b6000806000806000602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562003044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200306a919062007a59565b94509450945094509450620030ba8560ff1660786040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a31000000000081525062004f76565b620031018461ffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a32000000000081525062004f76565b620031488361ffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a33000000000081525062004f76565b620031928264ffffffffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a34000000000081525062004f76565b620023bc8164ffffffffff1660006040518060400160405280601b81526020017f746573745f4765744f7261636c65506172616d65746572733a3a35000000000081525062004f76565b6027546040516344a050b560e11b815260016004820152600091829182916001600160a01b031690638940a16a90602401606060405180830381865afa1580156200322b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003251919062007aea565b925092509250620032a48367ffffffffffffffff1660006040518060400160405280601981526020017f746573745f4765744f7261636c6553616d706c6541743a3a310000000000000081525062004f76565b620032f18267ffffffffffffffff1660006040518060400160405280601981526020017f746573745f4765744f7261636c6553616d706c6541743a3a320000000000000081525062004f76565b620014198167ffffffffffffffff1660006040518060400160405280601981526020017f746573745f4765744f7261636c6553616d706c6541743a3a330000000000000081525062004f76565b6060601380548060200260200160405190810160405280929190818152602001828054801562000e75576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e56575050505050905090565b602754604080516306c6fe7560e51b8152815160009384936001600160a01b039091169263d8dfcea092600480830193928290030181865afa158015620033eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200341191906200767b565b9150915062003461826001600160801b031660006040518060400160405280601781526020017f746573745f47657450726f746f636f6c466565733a3a3100000000000000000081525062004f76565b62002f25816001600160801b031660006040518060400160405280601781526020017f746573745f47657450726f746f636f6c466565733a3a3200000000000000000081525062004f76565b670de0b6b3a76400008311156200350b5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b60006200351983836200141e565b905060008167ffffffffffffffff811115620035395762003539620077e6565b60405190808252806020026020018201604052801562003563578160200160208202803683370190505b50905060008267ffffffffffffffff811115620035845762003584620077e6565b604051908082528060200260200182016040528015620035ae578160200160208202803683370190505b50905060005b83811015620036bc576000620035cc8983886200249d565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562003622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003648919062007717565b90508162ffffff1685848151811062003665576200366562007835565b602090810291909101015262003685818a670de0b6b3a76400006200517c565b8484815181106200369a576200369a62007835565b602002602001018181525050505080620036b4906200784b565b9050620035b4565b5060405163ca669fa760e01b81526001600160a01b038b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200371357600080fd5b505af115801562003728573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062003760908d908d908790879060040162007b71565b6000604051808303816000875af115801562003780573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620037aa919081019062007c2b565b5050505050505050505050565b602754604080516305e8746d60e01b8152905162000b1b926001600160a01b0316916305e8746d9160048083019260209291908290030181865afa15801562003804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200382a919062007751565b601c5460408051808201909152601181527f746573745f476574546f6b656e583a3a3100000000000000000000000000000060208201526001600160a01b03909116906200509a565b604051637b88583160e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f710b06290620038b290879087908790879060040162007c64565b60006040518083038186803b158015620038cb57600080fd5b505afa158015620038e0573d6000803e3d6000fd5b5050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620039ec57601c54604051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b4d6c782916001600160a01b0390911690620039559062006f1c565b604051809103906000f08015801562003972573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620039b792919062007c8b565b600060405180830381600087803b158015620039d257600080fd5b505af1158015620039e7573d6000803e3d6000fd5b505050505b6006604051620039fc9062006f2a565b60ff9091168152602001604051809103906000f08015801562003a23573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062003a559062006f2a565b60ff9091168152602001604051809103906000f08015801562003a7c573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062003aae9062006f2a565b60ff9091168152602001604051809103906000f08015801562003ad5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062003b079062006f2a565b60ff9091168152602001604051809103906000f08015801562003b2e573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062003b609062006f2a565b60ff9091168152602001604051809103906000f08015801562003b87573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062003bb99062006f2a565b60ff9091168152602001604051809103906000f08015801562003be0573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162003c0f9062006f38565b604051809103906000f08015801562003c2c573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b15801562003cd257600080fd5b505af115801562003ce7573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003d6457600080fd5b505af115801562003d79573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003df657600080fd5b505af115801562003e0b573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003e8857600080fd5b505af115801562003e9d573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003f1a57600080fd5b505af115801562003f2f573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562003fac57600080fd5b505af115801562003fc1573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200403857600080fd5b505af11580156200404d573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620040de57600080fd5b505af1158015620040f3573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200417a9062006f46565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620041b5573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620041e39062006f54565b6001600160a01b039091168152602001604051809103906000f08015801562004210573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200426f57600080fd5b505af115801562004284573d6000803e3d6000fd5b5050505062004292620051aa565b6200429e600a62005523565b602454602b54601c546040516001600160a01b03938416939283169290911690620042c99062006f62565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562004306573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620043419062006f70565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200437e573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200442457600080fd5b505af115801562004439573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620044ca57600080fd5b505af1158015620044df573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200457357600080fd5b505af115801562004588573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200461957600080fd5b505af11580156200462e573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620046bf57600080fd5b505af1158015620046d4573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200476557600080fd5b505af11580156200477a573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af1158015620047d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047fb919062007867565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004853573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004879919062007867565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620048d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620048f7919062007867565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200494f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004975919062007867565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620049cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049f3919062007867565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004a4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a71919062007867565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004aef919062007867565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004b47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b6d919062007867565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004bc5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004beb919062007867565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c69919062007867565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004cc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ce7919062007867565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004d3f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d65919062007867565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004dbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004de3919062007867565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004e3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e61919062007867565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004eb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004edf919062007867565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004f37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b7d919062007867565b600062004f6f838362800000620055c3565b9392505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859062004fb39086908690869060040162007caf565b60006040518083038186803b15801562004fcc57600080fd5b505afa15801562000e12573d6000803e3d6000fd5b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390620038b290879087908790879060040162007c64565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d9062004fb39086908690869060040162007caf565b604051630389490b60e61b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e25242c09062004fb39086908690869060040162007caf565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d19062004fb39086908690869060040162007cd0565b8062ffffff81168114620050fe57604051639b63641560e01b815260040160405180910390fd5b919050565b620014198383836000620055d4565b8067ffffffffffffffff81168114620050fe5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60008060006200518d8686620057d7565b91509150620051a08686868585620057f6565b9695505050505050565b601c546001600160a01b0316156200521f5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200520557600080fd5b505af11580156200521a573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620052945760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200527a57600080fd5b505af11580156200528f573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620053095760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620052ef57600080fd5b505af115801562005304573d6000803e3d6000fd5b505050505b601f546001600160a01b0316156200537e5760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200536457600080fd5b505af115801562005379573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620053f35760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620053d957600080fd5b505af1158015620053ee573d6000803e3d6000fd5b505050505b6020546001600160a01b031615620054685760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200544e57600080fd5b505af115801562005463573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620054dd5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620054c357600080fd5b505af1158015620054d8573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562000b1b5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a440923910162002215565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b158015620055ae57600080fd5b505af1158015620023bc573d6000803e3d6000fd5b600062005174848484600a620058a8565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200562a9162007cfe565b600060405180830381855afa9150503d806000811462005667576040519150601f19603f3d011682016040523d82523d6000602084013e6200566c565b606091505b5091505060008180602001905181019062005688919062007717565b9050620056c284620056bb87620056b46370a0823160e01b620056ad600c8d6200593e565b9062005964565b9062005982565b90620059ab565b8215620057cf5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200570d919062007cfe565b600060405180830381855afa9150503d80600081146200574a576040519150601f19603f3d011682016040523d82523d6000602084013e6200574f565b606091505b509150506000818060200190518101906200576b919062007717565b9050828610156200579657620057828684620077d0565b6200578e9082620077d0565b9050620057b1565b620057a28387620077d0565b620057ae9082620077ba565b90505b620038e081620056bb6318160ddd60e01b620056ad600c8d6200593e565b505050505050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200581c57838381620058135762005813620077fc565b049050620024ef565b8382106200583d576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562005918573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024ef919062007751565b6005820180546001600160a01b0319166001600160a01b03831617905560008262004f6f565b60038201805463ffffffff191660e083901c17905560008262004f6f565b6002820180546001810182556000918252602082206001600160a01b0384169101558262004f6f565b62002f258282600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562005a2457602002820191906000526020600020905b81548152602001906001019080831162005a0f575b5050505050905060008362005a398362005dc8565b60405160200162005a4c92919062007d1c565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162005aa091869188910162007d4f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005adb5762005ad98762005e7c565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162005b1c91879189910162007d4f565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162005b63919062007cfe565b600060405180830381855afa9150503d806000811462005ba0576040519150601f19603f3d011682016040523d82523d6000602084013e62005ba5565b606091505b50915062005bc290508162005bbc886020620076fd565b62005e89565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562005c29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c4f919062007717565b905080821462005d065760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162003502565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b15801562005d6a57600080fd5b505af115801562005d7f573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff1916905562005db460028b01600062006f7e565b896004016000905550505050505050505050565b606060008251602062005ddc9190620076fd565b67ffffffffffffffff81111562005df75762005df7620077e6565b6040519080825280601f01601f19166020018201604052801562005e22576020820181803683370190505b50905060005b835181101562005e7557600084828151811062005e495762005e4962007835565b60200260200101519050808260200260200184015250808062005e6c906200784b565b91505062005e28565b5092915050565b60006200146d8262005f2b565b6000806000602085511162005ea057845162005ea3565b60205b905060005b8181101562005f215762005ebe816008620076fd565b8662005ecb8388620077ba565b8151811062005ede5762005ede62007835565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005f18816200784b565b91505062005ea8565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562005f9d57602002820191906000526020600020905b81548152602001906001019080831162005f88575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062005fe99250859187910162007d4f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562006088576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200605891859187910162007d4f565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620060968362006dd7565b604051602001620060a992919062007d1c565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200611957600080fd5b505af11580156200612e573d6000803e3d6000fd5b50505050600080866001600160a01b0316836040516200614f919062007cfe565b600060405180830381855afa9150503d80600081146200618c576040519150601f19603f3d011682016040523d82523d6000602084013e62006191565b606091505b509150620061ae905081620061a8876020620076fd565b62006e84565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562006210573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200623a919081019062007d8b565b5090508051600103620065de5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062006292576200629262007835565b60200260200101516040518363ffffffff1660e01b8152600401620062cc9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620062ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006310919062007717565b9050806200637b577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062006350576200635062007835565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620064305760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162003502565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200646892919062007d4f565b604051602081830303815290604052805190602001208560008151811062006494576200649462007835565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a181600081518110620064ee57620064ee62007835565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262006539918a918c910162007d4f565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c16855282528284209251909391620065a3918a918c910162007d4f565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062006c4c565b60018151111562006bdb5760005b815181101562006bd45760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062006640576200664062007835565b60200260200101516040518363ffffffff1660e01b81526004016200667a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006698573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066be919062007717565b90508062006728577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620066fd57620066fd62007835565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462006737575062006bbf565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200676f576200676f62007835565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620067c857600080fd5b505af1158015620067dd573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620067ff919062007cfe565b600060405180830381855afa9150503d80600081146200683c576040519150601f19603f3d011682016040523d82523d6000602084013e62006841565b606091505b5090925090506200685981620061a88c6020620076fd565b9650508080156200686957508186145b1562006b01577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620068a792919062007d4f565b60405160208183030381529060405280519060200120888881518110620068d257620068d262007835565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200692b576200692b62007835565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262006976918d918f910162007d4f565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c60405160200162006a0392919062007d4f565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062006a865762006a8662007835565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562006adf57600080fd5b505af115801562006af4573d6000803e3d6000fd5b5050505050505062006bd4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062006b495762006b4962007835565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562006ba257600080fd5b505af115801562006bb7573d6000803e3d6000fd5b505050505050505b8062006bcb816200784b565b915050620065ec565b5062006c4c565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162003502565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162006c909188918a910162007d4f565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662006d2d5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162003502565b6005890180546001600160a01b031916905560038901805463ffffffff1916905562006d5e60028a01600062006f7e565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a1684528252808320905190929162006da49188918a910162007d4f565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062006deb9190620076fd565b67ffffffffffffffff81111562006e065762006e06620077e6565b6040519080825280601f01601f19166020018201604052801562006e31576020820181803683370190505b50905060005b835181101562005e7557600084828151811062006e585762006e5862007835565b60200260200101519050808260200260200184015250808062006e7b906200784b565b91505062006e37565b6000806000602085511162006e9b57845162006e9e565b60205b905060005b8181101562005f215762006eb9816008620076fd565b8662006ec68388620077ba565b8151811062006ed95762006ed962007835565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006f13816200784b565b91505062006ea3565b610b088062007df783390190565b610bfd80620088ff83390190565b610c1880620094fc83390190565b613199806200a11483390190565b61615c806200d2ad83390190565b614c80806201340983390190565b612c13806201808983390190565b508054600082559060005260206000209081019062001b7d91905b8082111562006faf576000815560010162006f99565b5090565b60006020828403121562006fc657600080fd5b81356001600160e01b03198116811462004f6f57600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620070225783516001600160a01b03168352928401929184019160010162006ffb565b50909695505050505050565b60005b838110156200704b57818101518382015260200162007031565b50506000910152565b600081518084526200706e8160208601602086016200702e565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200713857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200712157605f198985030183526200710e84865162007054565b948e01949350918d0191600101620070ef565b505050978a019794505091880191600101620070a9565b50919a9950505050505050505050565b62ffffff8116811462001b7d57600080fd5b6000602082840312156200716d57600080fd5b813562004f6f8162007148565b60ff8116811462001b7d57600080fd5b600080604083850312156200719e57600080fd5b8235620071ab816200717a565b91506020830135620071bd816200717a565b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200727057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200725a5783516001600160e01b0319168252928b019260019290920191908b01906200722e565b50978a01979550505091870191600101620071f0565b50919998505050505050505050565b6001600160801b038116811462001b7d57600080fd5b801515811462001b7d57600080fd5b60008060408385031215620072b857600080fd5b8235620072c5816200727f565b91506020830135620071bd8162007295565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200733057603f198886030184526200731d85835162007054565b94509285019290850190600101620072fe565b5092979650505050505050565b6000806000606084860312156200735357600080fd5b8335620073608162007148565b925060208401359150604084013562007379816200717a565b809150509250925092565b6001600160a01b038116811462001b7d57600080fd5b600080600080600080600080610100898b031215620073b857600080fd5b8835620073c58162007384565b97506020890135620073d78162007384565b96506040890135620073e98162007384565b95506060890135620073fb8162007148565b94506080890135935060a0890135925060c08901356200741b816200717a565b915060e08901356200742d816200717a565b809150509295985092959890939650565b61ffff8116811462001b7d57600080fd5b6000602082840312156200746257600080fd5b813562004f6f816200743e565b600080600080600080600060e0888a0312156200748b57600080fd5b8735620074988162007384565b96506020880135620074aa8162007384565b95506040880135620074bc8162007384565b94506060880135620074ce8162007148565b93506080880135925060a0880135620074e7816200717a565b915060c0880135620074f9816200717a565b8091505092959891949750929550565b6000602082840312156200751c57600080fd5b815162004f6f8162007148565b600080600080600080600060e0888a0312156200754557600080fd5b875162007552816200743e565b602089015190975062007565816200743e565b604089015190965062007578816200743e565b60608901519095506200758b816200743e565b60808901519094506200759e8162007148565b60a0890151909350620075b1816200743e565b60c0890151909250620074f98162007148565b805164ffffffffff81168114620050fe57600080fd5b60008060008060808587031215620075f157600080fd5b8451620075fe8162007148565b6020860151909450620076118162007148565b6040860151909350620076248162007148565b91506200763460608601620075c4565b905092959194509250565b600181811c908216806200765457607f821691505b6020821081036200767557634e487b7160e01b600052602260045260246000fd5b50919050565b600080604083850312156200768f57600080fd5b82516200769c816200727f565b6020840151909250620071bd816200727f565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156200146d576200146d620076af565b60ff82811682821603908111156200146d576200146d620076af565b80820281158282048414176200146d576200146d620076af565b6000602082840312156200772a57600080fd5b5051919050565b6000602082840312156200774457600080fd5b815162004f6f816200743e565b6000602082840312156200776457600080fd5b815162004f6f8162007384565b6000806000606084860312156200778757600080fd5b835162007794816200727f565b6020850151909350620077a7816200727f565b604085015190925062007379816200727f565b808201808211156200146d576200146d620076af565b818103818111156200146d576200146d620076af565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826200783057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201620078605762007860620076af565b5060010190565b6000602082840312156200787a57600080fd5b815162004f6f8162007295565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620078d457855183529483019491830191600101620078b6565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715620079195762007919620077e6565b604052919050565b600067ffffffffffffffff8211156200793e576200793e620077e6565b5060051b60200190565b6000806000606084860312156200795e57600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200798557600080fd5b8501601f810187136200799757600080fd5b8051620079ae620079a88262007921565b620078ed565b81815260059190911b82018301908381019089831115620079ce57600080fd5b928401925b82841015620079ee57835182529284019290840190620079d3565b80955050505050509250925092565b600080600080600080600080610100898b03121562007a1b57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e08901516200742d8162007295565b600080600080600060a0868803121562007a7257600080fd5b855162007a7f816200717a565b602087015190955062007a92816200743e565b604087015190945062007aa5816200743e565b925062007ab560608701620075c4565b915062007ac560808701620075c4565b90509295509295909350565b805167ffffffffffffffff81168114620050fe57600080fd5b60008060006060848603121562007b0057600080fd5b62007b0b8462007ad1565b925062007b1b6020850162007ad1565b915062007b2b6040850162007ad1565b90509250925092565b600081518084526020808501945080840160005b8381101562007b665781518752958201959082019060010162007b48565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262007b9f608083018562007b34565b828103606084015262007bb3818562007b34565b979650505050505050565b600082601f83011262007bd057600080fd5b8151602062007be3620079a88362007921565b82815260059290921b8401810191818101908684111562007c0357600080fd5b8286015b8481101562007c20578051835291830191830162007c07565b509695505050505050565b60006020828403121562007c3e57600080fd5b815167ffffffffffffffff81111562007c5657600080fd5b620051748482850162007bbe565b848152836020820152826040820152608060608201526000620051a0608083018462007054565b6001600160a01b038316815260406020820152600062005174604083018462007054565b838152826020820152606060408201526000620024ef606083018462007054565b60006001600160a01b03808616835280851660208401525060606040830152620024ef606083018462007054565b6000825162007d128184602087016200702e565b9190910192915050565b6001600160e01b031983168152815160009062007d418160048501602087016200702e565b919091016004019392505050565b825160009082906020808701845b8381101562007d7b5781518552938201939082019060010162007d5d565b5050948252509092019392505050565b6000806040838503121562007d9f57600080fd5b825167ffffffffffffffff8082111562007db857600080fd5b62007dc68683870162007bbe565b9350602085015191508082111562007ddd57600080fd5b5062007dec8582860162007bbe565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033a2646970667358221220e5c50b5fed1241df4dbdfe4fe19f39bcaad658851f4cc2275d530bb230fcb66764736f6c63430008140033","sourceMap":"95:9231:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;6725:1600:87;;;:::i;:::-;;147:115;;;:::i;2215:1033::-;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;1076:125:87:-;;;:::i;3254:537::-;;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;1207:235:87:-;;;;;;:::i;:::-;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4508:25:105;;;4496:2;4481:18;12046:168:93;4362:177:105;4777:1942:87;;;:::i;700:132::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;559:135:87:-;;;:::i;1448:487::-;;;:::i;9083:241::-;;;:::i;8331:373::-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;8237:8:105;8225:21;;;8207:40;;8195:2;8180:18;12220:205:93;8063:190:105;3069:146:5;;;:::i;8710:367:87:-;;;;;;:::i;:::-;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;268:141:87:-;;;:::i;2157::5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;838:232:87:-;;;:::i;1243:204:1:-;;;:::i;3797:568:87:-;;;:::i;4371:400::-;;;:::i;2304:142:5:-;;;:::i;1941:268:87:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;415:138:87:-;;;:::i;6725:1600::-;6811:11;;:67;;-1:-1:-1;;;6811:67:87;;6838:39;6811:67;;;4508:25:105;6780:190:87;;-1:-1:-1;;;;;6811:11:87;;:26;;4481:18:105;;6811:67:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6780:190;;6892:15;6921:1;6780:190;;;;;;;;;;;;;;;;;:17;:190::i;:::-;7011:11;;:67;;-1:-1:-1;;;7011:67:87;;7038:39;7011:67;;;4508:25:105;6980:190:87;;-1:-1:-1;;;;;7011:11:87;;:26;;4481:18:105;;7011:67:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6980:190;;7092:15;7121:1;6980:190;;;;;;;;;;;;;;;;;:17;:190::i;:::-;7211:11;;:71;;-1:-1:-1;;;7211:71:87;;7238:43;7211:71;;;4508:25:105;7180:195:87;;-1:-1:-1;;;;;7211:11:87;;:26;;4481:18:105;;7211:71:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7180:195;;7296:16;7326:1;7180:195;;;;;;;;;;;;;;;;;:17;:195::i;:::-;7416:11;;:63;;-1:-1:-1;;;7416:63:87;;7443:35;7416:63;;;4508:25:105;7385:187:87;;-1:-1:-1;;;;;7416:11:87;;:26;;4481:18:105;;7416:63:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7385:187;;7493:16;7523:1;7385:187;;;;;;;;;;;;;;;;;:17;:187::i;:::-;7613:11;;:102;;-1:-1:-1;;;7613:102:87;;7640:74;7613:102;;;4508:25:105;7582:226:87;;-1:-1:-1;;;;;7613:11:87;;:26;;4481:18:105;;7613:102:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7582:226;;7729:16;7759:1;7582:226;;;;;;;;;;;;;;;;;:17;:226::i;:::-;7836:11;;:32;;-1:-1:-1;;;7836:32:87;;7863:4;7836:32;;;4508:25:105;7818:98:87;;-1:-1:-1;;;;;7836:11:87;;:26;;4481:18:105;;7836:32:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7818:98;;7870:16;7888:1;7818:98;;;;;;;;;;;;;;;;;:17;:98::i;:::-;7957:11;;:72;;-1:-1:-1;;;7957:72:87;;7984:44;7957:72;;;4508:25:105;7926:196:87;;-1:-1:-1;;;;;7957:11:87;;:26;;4481:18:105;;7957:72:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7926:196;;8043:16;8073:1;7926:196;;;;;;;;;;;;;;;;;:17;:196::i;:::-;8163:11;;:62;;-1:-1:-1;;;8163:62:87;;8190:34;8163:62;;;4508:25:105;8132:186:87;;-1:-1:-1;;;;;8163:11:87;;:26;;4481:18:105;;8163:62:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8132:186;;8239:16;8269:1;8132:186;;;;;;;;;;;;;;;;;:17;:186::i;:::-;6725:1600::o;147:115::-;190:13;:11;:13::i;:::-;241:7;;250:4;;228:27;;-1:-1:-1;;;;;241:7:87;;;;250:4;228:12;:27::i;:::-;214:11;:41;;-1:-1:-1;;;;;;214:41:87;-1:-1:-1;;;;;214:41:87;;;;;;;;;;147:115::o;2215:1033::-;2292:17;2323:19;2356:18;2388:22;2424:25;2463:20;2497:31;2541:11;;;;;;;;;-1:-1:-1;;;;;2541:11:87;-1:-1:-1;;;;;2541:34:87;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2278:299;;;;;;;;;;;;;;2588:75;2597:10;2588:75;;1202:5:93;2588:75:87;;;;;;;;;;;;;;;;;;;:8;:75::i;:::-;2673:79;2682:12;2673:79;;1262:2:93;2673:79:87;;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;2762:77;2771:11;2762:77;;1318:3:93;2762:77:87;;;;;;;;;;;;;;;;;;;:8;:77::i;:::-;2849:85;2858:15;2849:85;;1379:5:93;2849:85:87;;;;;;;;;;;;;;;;;;;:8;:85::i;:::-;2944:92;2953:18;2944:92;;1446:6:93;2944:92:87;;;;;;;;;;;;;;;;;;;:8;:92::i;:::-;3046:81;3055:13;3046:81;;1508:5:93;3046:81:87;;;;;;;;;;;;;;;;;;;:8;:81::i;:::-;3137:104;3146:24;3137:104;;1581:7:93;3137:104:87;;;;;;;;;;;;;;;;;;;:8;:104::i;:::-;2268:980;;;;;;;2215:1033::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;1076:125:87:-;1137:11;;:25;;;-1:-1:-1;;;1137:25:87;;;;1128:66;;-1:-1:-1;;;;;1137:11:87;;:23;;:25;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1128:66;;992:7:93;1128:66:87;;;;;;;;;;;;;;;;;;;:8;:66::i;3254:537::-;3320:28;3350:26;3378:18;3398:23;3437:11;;;;;;;;;-1:-1:-1;;;;;3437:11:87;-1:-1:-1;;;;;3437:36:87;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3319:156;;;;;;;;3486:70;3495:21;3486:70;;3518:1;3486:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;3566:68;3575:19;3566:68;;3596:1;3566:68;;;;;;;;;;;;;;;;;:8;:68::i;:::-;3644:65;3653:11;3644:65;;992:7:93;3644:65:87;;;;;;;;;;;;;;;;;;;:8;:65::i;:::-;3719;3728:16;3719:65;;3746:1;3719:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;3309:482;;;;3254:537::o;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;1207:235:87:-;1306:11;;:22;;-1:-1:-1;;;1306:22:87;;8237:8:105;8225:21;;1306:22:87;;;8207:40:105;1268:16:87;;;;-1:-1:-1;;;;;1306:11:87;;;;:18;;8180::105;;1306:22:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1267:61;;;;1339:43;1348:8;-1:-1:-1;;;;;1339:43:87;1358:1;1339:43;;;;;;;;;;;;;;;;;:8;:43::i;:::-;1392;1401:8;-1:-1:-1;;;;;1392:43:87;1411:1;1392:43;;;;;;;;;;;;;;;;;:8;:43::i;:::-;1257:185;;1207:235;:::o;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;4777:1942:87:-;4832:13;4848:32;1147:2:93;4876:4:87;4848:32;:::i;:::-;4922:11;;:43;;-1:-1:-1;;;4922:43:87;;4949:15;4922:43;;;8207:40:105;4832:48:87;;-1:-1:-1;4891:194:87;;-1:-1:-1;;;;;4922:11:87;;;;:26;;8180:18:105;;4922:43:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4979:39;5032:5;4891:194;;;;;;;;;;;;;;;;;:17;:194::i;:::-;5126:11;;:43;;-1:-1:-1;;;5126:43:87;;5153:15;5126:43;;;8207:40:105;5095:194:87;;-1:-1:-1;;;;;5126:11:87;;:26;;8180:18:105;;5126:43:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5183:39;5236:5;5095:194;;;;;;;;;;;;;;;;;:17;:194::i;:::-;5330:11;;:44;;-1:-1:-1;;;5330:44:87;;5357:16;5330:44;;;8207:40:105;5299:199:87;;-1:-1:-1;;;;;5330:11:87;;:26;;8180:18:105;;5330:44:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5388:43;5445:5;5299:199;;;;;;;;;;;;;;;;;:17;:199::i;:::-;5539:11;;:44;;-1:-1:-1;;;5539:44:87;;5566:16;5539:44;;;8207:40:105;5508:191:87;;-1:-1:-1;;;;;5539:11:87;;:26;;8180:18:105;;5539:44:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5597:35;5646:5;5508:191;;;;;;;;;;;;;;;;;:17;:191::i;:::-;5800:11;;:44;;-1:-1:-1;;;5800:44:87;;5827:16;5800:44;;;8207:40:105;5778:202:87;;-1:-1:-1;;;;;5800:11:87;;:26;;8180:18:105;;5800:44:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5858:74;5778:202;;;;;;;;;;;;;;;;;:8;:202::i;:::-;6012:11;;:44;;-1:-1:-1;;;6012:44:87;;6039:16;6012:44;;;8207:40:105;5990:202:87;;-1:-1:-1;;;;;6012:11:87;;:26;;8180:18:105;;6012:44:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6070:74;5990:202;;;;;;;;;;;;;;;;;:8;:202::i;:::-;6220:11;;:44;;-1:-1:-1;;;6220:44:87;;6247:16;6220:44;;;8207:40:105;6202:100:87;;-1:-1:-1;;;;;6220:11:87;;:26;;8180:18:105;;6220:44:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6266:4;6272:3;6202:100;;;;;;;;;;;;;;;;;:17;:100::i;:::-;6343:11;;:44;;-1:-1:-1;;;6343:44:87;;6370:16;6343:44;;;8207:40:105;6312:200:87;;-1:-1:-1;;;;;6343:11:87;;:26;;8180:18:105;;6343:44:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6401;6459:5;6312:200;;;;;;;;;;;;;;;;;:17;:200::i;:::-;6553:11;;:44;;-1:-1:-1;;;6553:44:87;;6580:16;6553:44;;;8207:40:105;6522:190:87;;-1:-1:-1;;;;;6553:11:87;;:26;;8180:18:105;;6553:44:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6611:34;6659:5;6522:190;;;;;;;;;;;;;;;;;:17;:190::i;:::-;4822:1897;4777:1942::o;700:132::-;760:11;;:24;;;-1:-1:-1;;;760:24:87;;;;751:74;;-1:-1:-1;;;;;760:11:87;;:22;;:24;;;;;;;;;;;;;;:11;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;751:74;;1147:2:93;751:74:87;;;;;;;;;;;;;;;;;;;:8;:74::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;559:135:87;626:11;;:23;;;-1:-1:-1;;;626:23:87;;;;609:78;;-1:-1:-1;;;;;626:11:87;;:21;;:23;;;;;;;;;;;;;;:11;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;660:4;;609:78;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;660:4:87;;;;609:8;:78::i;1448:487::-;1516:11;;:40;;-1:-1:-1;;;1516:40:87;;:11;:40;;;18791:41:105;;;18848:18;;;18841:49;1507:83:87;;-1:-1:-1;;;;;1516:11:87;;:30;;18764:18:105;;1516:40:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1507:83;;1558:1;1507:83;;;;;;;;;;;;;;;;;:8;:83::i;:::-;1609:11;;:39;;-1:-1:-1;;;1609:39:87;;:11;:39;;;18791:41:105;1609:11:87;18848:18:105;;;18841:49;1600:97:87;;-1:-1:-1;;;;;1609:11:87;;:30;;18764:18:105;;1609:39:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1600:97;;1650:16;1600:97;;;;;;;;;;;;;;;;;;;:8;:97::i;:::-;1717:11;;:55;;-1:-1:-1;;;1717:55:87;;:11;:55;;;18791:41:105;1755:16:87;18848:18:105;;;18841:49;1708:98:87;;-1:-1:-1;;;;;1717:11:87;;:30;;18764:18:105;;1717:55:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1708:98;;1774:1;1708:98;;;;;;;;;;;;;;;;;:8;:98::i;:::-;1825:11;;:54;;-1:-1:-1;;;1825:54:87;;:11;:54;;;18791:41:105;1862:16:87;18848:18:105;;;18841:49;1816:112:87;;-1:-1:-1;;;;;1825:11:87;;:30;;18764:18:105;;1825:54:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1816:112;;1881:16;1816:112;;;;;;;;;;;;;;;;;;;:8;:112::i;9083:241::-;9148:68;;-1:-1:-1;;;9148:68:87;;-1:-1:-1;;;9148:68:87;;;19321:52:105;9148:15:87;;;;19294:18:105;;9148:68:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9243:7:87;;;9226:26;;-1:-1:-1;;;9226:26:87;;-1:-1:-1;;;;;9243:7:87;;;9226:26;;;19530:74:105;9226:8:87;;-1:-1:-1;9226:8:87;;-1:-1:-1;19503:18:105;9226:26:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9262:11:87;;:55;;-1:-1:-1;;;9262:55:87;;:11;:55;;;20004:34:105;;;20054:18;;;20047:43;;;20106:18;;;20099:43;;;20158:18;;;20151:43;;;20237:19;;;20230:44;;;20290:19;;;20283:44;;;20343:19;;;20336:44;-1:-1:-1;;;;;9262:11:87;;;;-1:-1:-1;9262:34:87;;-1:-1:-1;19951:19:105;;9262:55:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8331:373;8475:11;;:42;;-1:-1:-1;;;8475:42:87;;-1:-1:-1;;;;;20577:47:105;;8475:42:87;;;20559:66:105;20668:14;;20661:22;20641:18;;;20634:50;8419:16:87;;;;;;-1:-1:-1;;;;;8475:11:87;;:21;;20532:18:105;;8475:42:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8418:99;;;;;;8528:47;8537:8;-1:-1:-1;;;;;8528:47:87;8547:1;8528:47;;;;;;;;;;;;;;;;;:8;:47::i;:::-;8585:60;8594:13;-1:-1:-1;;;;;8585:60:87;8609:9;-1:-1:-1;;;;;8585:60:87;;;;;;;;;;;;;;;;;;:8;:60::i;:::-;8655:42;8664:3;-1:-1:-1;;;;;8655:42:87;8669:1;8655:42;;;;;;;;;;;;;;;;;:8;:42::i;:::-;8408:296;;;8331:373;;:::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8710:367:87;8852:11;;:42;;-1:-1:-1;;;8852:42:87;;-1:-1:-1;;;;;20577:47:105;;8852:42:87;;;20559:66:105;20668:14;;20661:22;20641:18;;;20634:50;8796:20:87;;;;;;-1:-1:-1;;;;;8852:11:87;;:22;;20532:18:105;;8852:42:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8795:99;;;;;;8905:57;8914:12;-1:-1:-1;;;;;8905:57:87;8928:8;-1:-1:-1;;;;;8905:57:87;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;8972:47;8981:9;-1:-1:-1;;;;;8972:47:87;8992:1;8972:47;;;;;;;;;;;;;;;;;:8;:47::i;:::-;9029:41;9038:3;-1:-1:-1;;;;;9029:41:87;9043:1;9029:41;;;;;;;;;;;;;;;;;:8;:41::i;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;19548:55:105;;11033:19:93;;;19530:74:105;11033:13:93;;;;19503:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;22432:55:105;;;11062:41:93;;;22414:74:105;22504:18;;;22497:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;22387:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;22432:55:105;;;11113:41:93;;;22414:74:105;22504:18;;;22497:34;;;11113:15:93;;;;;22387:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;268:141:87:-;336:11;;:24;;;-1:-1:-1;;;336:24:87;;;;319:83;;-1:-1:-1;;;;;336:11:87;;:22;;:24;;;;;;;;;;;;;;:11;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;371:7;;319:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;371:7:87;;;;319:8;:83::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;25578:6:105;25566:19;;12532:26:93;;;25548:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;25521:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;838:232:87:-;929:11;;:25;;;-1:-1:-1;;;929:25:87;;;;891:16;;;;-1:-1:-1;;;;;929:11:87;;;;:23;;:25;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;890:64;;;;965:44;974:8;-1:-1:-1;;;;;965:44:87;984:1;965:44;;;;;;;;;;;;;;;;;:8;:44::i;:::-;1019;1028:8;-1:-1:-1;;;;;1019:44:87;1038:1;1019:44;;;;;;;;;;;;;;;;;:8;:44::i;:::-;880:190;;838:232::o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;22414:74:105;;;1398:17:1;22504:18:105;;;22497:34;1428:1:1;;1377:7;;22387:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;3797:568:87:-;3858:20;3880:11;3893:17;3912:18;3932:21;3969:11;;;;;;;;;-1:-1:-1;;;;;3969:11:87;-1:-1:-1;;;;;3969:31:87;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3857:145;;;;;;;;;;4013:90;4022:14;4013:90;;1111:11:68;4013:90:87;;;;;;;;;;;;;;;;;:8;:90::i;:::-;4113:48;4122:4;4113:48;;4128:1;4113:48;;;;;;;;;;;;;;;;;:8;:48::i;:::-;4171:54;4180:10;4171:54;;4192:1;4171:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;4235:55;4244:11;4235:55;;4257:1;4235:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;4300:58;4309:14;4300:58;;4325:1;4300:58;;;;;;;;;;;;;;;;;:8;:58::i;4371:400::-;4523:11;;:32;;-1:-1:-1;;;4523:32:87;;:11;:32;;;27607:44:105;4430:19:87;;;;;;-1:-1:-1;;;;;4523:11:87;;:29;;27580:18:105;;4523:32:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4429:126;;;;;;4566:54;4575:12;4566:54;;4589:1;4566:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;4630:62;4639:20;4630:62;;4661:1;4630:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;4702;4711:20;4702:62;;4733:1;4702:62;;;;;;;;;;;;;;;;;:8;:62::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1941:268:87:-;2046:11;;:29;;;-1:-1:-1;;;2046:29:87;;;;1998:21;;;;-1:-1:-1;;;;;2046:11:87;;;;:27;;:29;;;;;;;;;;;:11;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1997:78;;;;2086:53;2095:13;-1:-1:-1;;;;;2086:53:87;2110:1;2086:53;;;;;;;;;;;;;;;;;:8;:53::i;:::-;2149;2158:13;-1:-1:-1;;;;;2149:53:87;2173:1;2149:53;;;;;;;;;;;;;;;;;:8;:53::i;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;28421:2:105;11461:73:93;;;28403:21:105;28460:2;28440:18;;;28433:30;28499:26;28479:18;;;28472:54;28543:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;28763:55:105;;;11821:26:93;;;28745:74:105;28867:8;28855:21;;28835:18;;;28828:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;28718:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;19548:55:105;;11974:14:93;;;19530:74:105;11974:8:93;;;;19503:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;415:138:87:-;482:11;;:23;;;-1:-1:-1;;;482:23:87;;;;465:81;;-1:-1:-1;;;;;482:11:87;;:21;;:23;;;;;;;;;;;;;;:11;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;516:7;;465:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;516:7:87;;;;465:8;:81::i;16826:208:1:-;16979:48;;-1:-1:-1;;;16979:48:1;;:20;;;;:48;;17000:4;;17006:5;;17013:8;;17023:3;;16979:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16826:208;;;;:::o;2566:3054:93:-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;2755:7;;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;32018:4:105;32006:17;;;31988:36;;31976:2;31961:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;32018:4:105;32006:17;;;31988:36;;31976:2;31961:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;32018:4:105;32006:17;;;31988:36;;31976:2;31961:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;32018:4:105;32006:17;;;31988:36;;31976:2;31961:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;32018:4:105;32006:17;;;31988:36;;31976:2;31961:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;32018:4:105;32006:17;;;31988:36;;31976:2;31961:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;32646:74:105;32736:18;;;32729:30;;;;32795:1;32775:18;;;32768:29;32833:9;32813:18;;;32806:37;3125:8:93;;;;32860:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;33102:74:105;;;;33192:18;;;33185:30;;;;33231:18;;;33224:29;-1:-1:-1;;;33269:18:105;;;33262:34;3172:8:93;;-1:-1:-1;3172:8:93;;-1:-1:-1;33313:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;33555:74:105;;;;33645:18;;;33638:30;;;;33684:18;;;33677:29;-1:-1:-1;;;33722:18:105;;;33715:34;3213:8:93;;-1:-1:-1;3213:8:93;;-1:-1:-1;33766:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;34008:74:105;;;;34098:18;;;34091:30;;;;34137:18;;;34130:29;-1:-1:-1;;;34175:18:105;;;34168:34;3254:8:93;;-1:-1:-1;3254:8:93;;-1:-1:-1;34219:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;34461:74:105;;;;34551:18;;;34544:30;;;;34590:18;;;34583:29;-1:-1:-1;;;34628:18:105;;;34621:34;3295:8:93;;-1:-1:-1;3295:8:93;;-1:-1:-1;34672:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;34914:74:105;;;;35004:18;;;34997:30;;;;35043:18;;;35036:29;-1:-1:-1;;;35081:18:105;;;35074:34;3336:8:93;;-1:-1:-1;3336:8:93;;-1:-1:-1;35125:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;35367:74:105;35457:18;;;35450:30;35516:1;35496:18;;;35489:29;-1:-1:-1;;;35534:18:105;;;35527:33;3377:8:93;;-1:-1:-1;3377:8:93;;-1:-1:-1;35577:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;35819:74:105;35909:18;;;35902:30;35968:1;35948:18;;;35941:29;36006:10;35986:18;;;35979:38;3416:8:93;;-1:-1:-1;3416:8:93;;-1:-1:-1;36034:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;36361:15:105;;;36343:34;;36413:15;;;;36408:2;36393:18;;36386:43;36460:2;36445:18;;36438:34;36270:2;36255:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;19548:55:105;;;19530:74;;19518:2;19503:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;19530:74:105;;;;3824:7:93;;;;:31;;19503:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;37079:15:105;;;37061:34;;37131:15;;;37126:2;37111:18;;37104:43;37183:15;;;37178:2;37163:18;;37156:43;36988:2;36973:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;37079:15:105;;;37061:34;;37131:15;;;37126:2;37111:18;;37104:43;37183:15;;;37178:2;37163:18;;37156:43;36988:2;36973:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;37834:74:105;37924:18;;;37917:30;;;;37983:1;37963:18;;;37956:29;38021:8;38001:18;;;37994:36;4298:8:93;;;;38047:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;38289:74:105;38379:18;;;38372:30;38438:1;38418:18;;;38411:29;38476:8;38456:18;;;38449:36;4343:8:93;;-1:-1:-1;4343:8:93;;-1:-1:-1;38502:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;38744:74:105;38834:18;;;38827:30;;;;38893:1;38873:18;;;38866:29;38931:9;38911:18;;;38904:37;4388:8:93;;-1:-1:-1;4388:8:93;;-1:-1:-1;38958:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;39200:74:105;39290:18;;;39283:30;39349:2;39329:18;;;39322:30;39388:20;39368:18;;;39361:48;4435:8:93;;-1:-1:-1;4435:8:93;;-1:-1:-1;39426:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;39668:74:105;39758:18;;;39751:30;39817:1;39797:18;;;39790:29;39855:10;39835:18;;;39828:38;4528:8:93;;-1:-1:-1;4528:8:93;;-1:-1:-1;39883:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;40125:74:105;40215:18;;;40208:30;40274:1;40254:18;;;40247:29;40312:11;40292:18;;;40285:39;4577:8:93;;-1:-1:-1;4577:8:93;;-1:-1:-1;40341:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;22387:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;4729:4:93;;;:12;;22387:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;4789:4:93;;;:12;;22387:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;4849:4:93;;;:12;;22387:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;4909:4:93;;;:12;;22387:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;4969:4:93;;;:12;;22387:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5029:3:93;;;:11;;22387:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5088:8:93;;;:16;;22387:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5153:7:93;;;:15;;22387:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5214:4:93;;;:12;;22387:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5272:4:93;;;:12;;22387:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5330:4:93;;;:12;;22387:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5388:4:93;;;:12;;22387:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5446:4:93;;;:12;;22387:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5504:3:93;;;:11;;22387:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;22414:74:105;-1:-1:-1;;22504:18:105;;;22497:34;5561:8:93;;;:16;;22387:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7147:160::-;7217:14;7253:47;7277:6;7285;992:7;7253:23;:47::i;:::-;7243:57;7147:160;-1:-1:-1;;;7147:160:93:o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18636:288;18862:55;;-1:-1:-1;;;18862:55:1;;:20;;;;:55;;18883:4;;18889:5;;18896:15;;18913:3;;18862:55;;;:::i;14412:134::-;14510:29;;-1:-1:-1;;;14510:29:1;;:11;;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;15596:134::-;15694:29;;-1:-1:-1;;;15694:29:1;;:11;;;;:29;;15706:4;;15712:5;;15719:3;;15694:29;;;:::i;3570:134::-;3668:29;;-1:-1:-1;;;3668:29:1;;:11;;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;8711:135:78:-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;19530:74:105;6180:7:93;;;:21;;19503:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;19530:74:105;6253:7:93;;;:21;;19503:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;19530:74:105;6323:7:93;;;:21;;19503:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;19530:74:105;6393:7:93;;;:21;;19503:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;19530:74:105;6463:7:93;;;:21;;19503:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;19530:74:105;6533:7:93;;;:21;;19503:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;19530:74:105;6602:7:93;;;:21;;19503:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;19530:74:105;6675:7:93;;;:21;;19503:18:105;6675:31:93;19384:226:105;6719:422:93;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;42302:6:105;42335:15;;6788:346:93;;;42317:34:105;1202:5:93;42367:18:105;;;42360:43;;;1262:2:93;42419:18:105;;;42412:43;1318:3:93;42471:18:105;;;42464:43;42523:19;;;42516:44;;;;1446:6:93;42603:19:105;;;42596:44;1508:5:93;42656:19:105;;;42649:44;1581:7:93;42709:19:105;;;42702:44;6788:7:93;42762:19:105;;;42755:51;-1:-1:-1;;;;;6788:7:93;;:17;;42264:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7313:216;7410:14;7446:76;7480:6;7488;7496:7;1147:2;7446:33;:76::i;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;19548:55:105;;;27501:38:3;;;;19530:74:105;;;;27501:38:3;;;;;;;;;;19503:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;27748:414::-;27416:752;;27331:837;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;7535:257:93:-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;43447:15:105;;;7729:54:93;;;43429:34:105;43499:15;;;43479:18;;;43472:43;;;;43563:8;43551:21;;43531:18;;;43524:49;43621:6;43609:19;;43589:18;;;43582:47;7674:14:93;;7729:7;;;;:20;;43340:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;22432:55:105;;11664:18:8;;;22414:74:105;22504:18;;;22497:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;11664:7:8;;;;22387:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;45119:2:105;11725:175:8;;;45101:21:105;45158:3;45138:18;;;45131:31;45198:34;45178:18;;;45171:62;45269:34;45249:18;;;45242:62;45341:34;45320:19;;;45313:63;-1:-1:-1;;;45392:19:105;;;45385:46;45448:19;;11725:175:8;44917:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;45698:55:105;;11920:24:8;;;45680:74:105;45770:18;;;45763:34;;;45813:18;;;45806:34;;;11920:8:8;;;;45653:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;13395:393::-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;19548:55:105;;1990:25:8;;;19530:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;1990:11:8;;;;19503:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;22432:55:105;;;;22414:74;;22519:2;22504:18;;22497:34;22402:2;22387:18;;22240:297;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;22432:55:105;;;22414:74;;22504:18;;;22497:34;22387:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;45119:2:105;2268:187:8;;;45101:21:105;45158:3;45138:18;;;45131:31;45198:34;45178:18;;;45171:62;45269:34;45249:18;;;45242:62;45341:34;45320:19;;;45313:63;-1:-1:-1;;;45392:19:105;;;45385:46;45448:19;;2268:187:8;44917:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;46717:55:105;;;46699:74;;-1:-1:-1;;;;;;46809:33:105;;;46789:18;;;46782:61;;;;46859:18;;;46852:34;46917:2;46902:18;;46895:34;46686:3;46671:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;22432:55:105;;;;22414:74;;22519:2;22504:18;;22497:34;22402:2;22387:18;;22240:297;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;22432:55:105;;;22414:74;;22504:18;;;22497:34;22387:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;3215:8;;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;45698:55:105;;;3215:32:8;;;45680:74:105;45770:18;;;45763:34;45813:18;;;45806:34;;;45653:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;46717:55:105;;;46699:74;;-1:-1:-1;;;;;;46809:33:105;;;46789:18;;;46782:61;;;;46859:18;;;46852:34;46917:2;46902:18;;46895:34;46686:3;46671:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;45698:55:105;;;3941:29:8;;;45680:74:105;45770:18;;;45763:34;45813:18;;;45806:34;;;45653:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;45698:55:105;;;4033:29:8;;;45680:74:105;45770:18;;;45763:34;45813:18;;;45806:34;;;45653:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;47142:2:105;4107:74:8;;;47124:21:105;47161:18;;;47154:30;;;;47220:34;47200:18;;;47193:62;47291:34;47271:18;;;47264:62;47343:19;;4107:74:8;46940:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;47575:2:105;4202:162:8;;;47557:21:105;47614:2;47594:18;;;47587:30;47653:34;47633:18;;;47626:62;47724:17;47704:18;;;47697:45;47759:19;;4202:162:8;47373:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:681;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:218;948:6;945:1;942:13;934:218;;;1013:13;;-1:-1:-1;;;;;1009:62:105;997:75;;1127:15;;;;1092:12;;;;970:1;963:9;934:218;;;-1:-1:-1;1169:3:105;;497:681;-1:-1:-1;;;;;;497:681:105:o;1183:250::-;1268:1;1278:113;1292:6;1289:1;1286:13;1278:113;;;1368:11;;;1362:18;1349:11;;;1342:39;1314:2;1307:10;1278:113;;;-1:-1:-1;;1425:1:105;1407:16;;1400:27;1183:250::o;1438:271::-;1480:3;1518:5;1512:12;1545:6;1540:3;1533:19;1561:76;1630:6;1623:4;1618:3;1614:14;1607:4;1600:5;1596:16;1561:76;:::i;:::-;1691:2;1670:15;-1:-1:-1;;1666:29:105;1657:39;;;;1698:4;1653:50;;1438:271;-1:-1:-1;;1438:271:105:o;1714:1765::-;1947:2;1999:21;;;2069:13;;1972:18;;;2091:22;;;1918:4;;1947:2;2132;;2150:18;;;;2187:1;2230:15;;;2215:31;;2211:40;;2274:15;;;1918:4;;2338:1112;2354:6;2349:3;2346:15;2338:1112;;;-1:-1:-1;;2423:22:105;;;2419:36;2407:49;;2479:13;;2566:9;;-1:-1:-1;;;;;2562:58:105;2547:74;;2660:11;;2654:18;2692:15;;;2685:27;;;2773:19;;2519:15;;;2805:24;;;2986:21;;;;2852:2;2934:17;;;2922:30;;2918:39;;;2876:15;;;;3031:1;3045:296;3061:8;3056:3;3053:17;3045:296;;;3167:2;3163:7;3154:6;3146;3142:19;3138:33;3131:5;3124:48;3199:42;3234:6;3223:8;3217:15;3199:42;:::i;:::-;3270:17;;;;3189:52;-1:-1:-1;3313:14:105;;;;3089:1;3080:11;3045:296;;;-1:-1:-1;;;3428:12:105;;;;3364:6;-1:-1:-1;;3393:15:105;;;;2380:1;2371:11;2338:1112;;;-1:-1:-1;3467:6:105;;1714:1765;-1:-1:-1;;;;;;;;;;1714:1765:105:o;3484:119::-;3569:8;3562:5;3558:20;3551:5;3548:31;3538:59;;3593:1;3590;3583:12;3608:245;3666:6;3719:2;3707:9;3698:7;3694:23;3690:32;3687:52;;;3735:1;3732;3725:12;3687:52;3774:9;3761:23;3793:30;3817:5;3793:30;:::i;3858:114::-;3942:4;3935:5;3931:16;3924:5;3921:27;3911:55;;3962:1;3959;3952:12;3977:380;4041:6;4049;4102:2;4090:9;4081:7;4077:23;4073:32;4070:52;;;4118:1;4115;4108:12;4070:52;4157:9;4144:23;4176:29;4199:5;4176:29;:::i;:::-;4224:5;-1:-1:-1;4281:2:105;4266:18;;4253:32;4294:31;4253:32;4294:31;:::i;:::-;4344:7;4334:17;;;3977:380;;;;;:::o;4544:1590::-;4746:4;4775:2;4815;4804:9;4800:18;4845:2;4834:9;4827:21;4868:6;4903;4897:13;4934:6;4926;4919:22;4960:2;4950:12;;4993:2;4982:9;4978:18;4971:25;;5055:2;5045:6;5042:1;5038:14;5027:9;5023:30;5019:39;5093:2;5085:6;5081:15;5114:1;5135;5145:960;5161:6;5156:3;5153:15;5145:960;;;5230:22;;;-1:-1:-1;;5226:36:105;5214:49;;5286:13;;5373:9;;-1:-1:-1;;;;;5369:58:105;5354:74;;5467:11;;5461:18;5499:15;;;5492:27;;;5580:19;;5326:15;;;5612:24;;;5702:21;;;;5747:1;;5670:2;5658:15;;;5761:236;5777:8;5772:3;5769:17;5761:236;;;5858:15;;-1:-1:-1;;;;;;5854:42:105;5840:57;;5966:17;;;;5805:1;5796:11;;;;;5923:14;;;;5761:236;;;-1:-1:-1;6083:12:105;;;;6020:5;-1:-1:-1;;;6048:15:105;;;;5187:1;5178:11;5145:960;;;-1:-1:-1;6122:6:105;;4544:1590;-1:-1:-1;;;;;;;;;4544:1590:105:o;6139:146::-;-1:-1:-1;;;;;6218:5:105;6214:46;6207:5;6204:57;6194:85;;6275:1;6272;6265:12;6290:118;6376:5;6369:13;6362:21;6355:5;6352:32;6342:60;;6398:1;6395;6388:12;6413:382;6478:6;6486;6539:2;6527:9;6518:7;6514:23;6510:32;6507:52;;;6555:1;6552;6545:12;6507:52;6594:9;6581:23;6613:31;6638:5;6613:31;:::i;:::-;6663:5;-1:-1:-1;6720:2:105;6705:18;;6692:32;6733:30;6692:32;6733:30;:::i;6800:803::-;6962:4;6991:2;7031;7020:9;7016:18;7061:2;7050:9;7043:21;7084:6;7119;7113:13;7150:6;7142;7135:22;7188:2;7177:9;7173:18;7166:25;;7250:2;7240:6;7237:1;7233:14;7222:9;7218:30;7214:39;7200:53;;7288:2;7280:6;7276:15;7309:1;7319:255;7333:6;7330:1;7327:13;7319:255;;;7426:2;7422:7;7410:9;7402:6;7398:22;7394:36;7389:3;7382:49;7454:40;7487:6;7478;7472:13;7454:40;:::i;:::-;7444:50;-1:-1:-1;7552:12:105;;;;7517:15;;;;7355:1;7348:9;7319:255;;;-1:-1:-1;7591:6:105;;6800:803;-1:-1:-1;;;;;;;6800:803:105:o;7608:450::-;7682:6;7690;7698;7751:2;7739:9;7730:7;7726:23;7722:32;7719:52;;;7767:1;7764;7757:12;7719:52;7806:9;7793:23;7825:30;7849:5;7825:30;:::i;:::-;7874:5;-1:-1:-1;7926:2:105;7911:18;;7898:32;;-1:-1:-1;7982:2:105;7967:18;;7954:32;7995:31;7954:32;7995:31;:::i;:::-;8045:7;8035:17;;;7608:450;;;;;:::o;8258:154::-;-1:-1:-1;;;;;8337:5:105;8333:54;8326:5;8323:65;8313:93;;8402:1;8399;8392:12;8417:1099;8550:6;8558;8566;8574;8582;8590;8598;8606;8659:3;8647:9;8638:7;8634:23;8630:33;8627:53;;;8676:1;8673;8666:12;8627:53;8715:9;8702:23;8734:31;8759:5;8734:31;:::i;:::-;8784:5;-1:-1:-1;8841:2:105;8826:18;;8813:32;8854:33;8813:32;8854:33;:::i;:::-;8906:7;-1:-1:-1;8965:2:105;8950:18;;8937:32;8978:33;8937:32;8978:33;:::i;:::-;9030:7;-1:-1:-1;9089:2:105;9074:18;;9061:32;9102;9061;9102;:::i;:::-;9153:7;-1:-1:-1;9207:3:105;9192:19;;9179:33;;-1:-1:-1;9259:3:105;9244:19;;9231:33;;-1:-1:-1;9316:3:105;9301:19;;9288:33;9330:31;9288:33;9330:31;:::i;:::-;9380:7;-1:-1:-1;9439:3:105;9424:19;;9411:33;9453:31;9411:33;9453:31;:::i;:::-;9503:7;9493:17;;;8417:1099;;;;;;;;;;;:::o;9521:117::-;9606:6;9599:5;9595:18;9588:5;9585:29;9575:57;;9628:1;9625;9618:12;9643:245;9701:6;9754:2;9742:9;9733:7;9729:23;9725:32;9722:52;;;9770:1;9767;9760:12;9722:52;9809:9;9796:23;9828:30;9852:5;9828:30;:::i;9893:1030::-;10017:6;10025;10033;10041;10049;10057;10065;10118:3;10106:9;10097:7;10093:23;10089:33;10086:53;;;10135:1;10132;10125:12;10086:53;10174:9;10161:23;10193:31;10218:5;10193:31;:::i;:::-;10243:5;-1:-1:-1;10300:2:105;10285:18;;10272:32;10313:33;10272:32;10313:33;:::i;:::-;10365:7;-1:-1:-1;10424:2:105;10409:18;;10396:32;10437:33;10396:32;10437:33;:::i;:::-;10489:7;-1:-1:-1;10548:2:105;10533:18;;10520:32;10561;10520;10561;:::i;:::-;10612:7;-1:-1:-1;10666:3:105;10651:19;;10638:33;;-1:-1:-1;10723:3:105;10708:19;;10695:33;10737:31;10695:33;10737:31;:::i;:::-;10787:7;-1:-1:-1;10846:3:105;10831:19;;10818:33;10860:31;10818:33;10860:31;:::i;:::-;10910:7;10900:17;;;9893:1030;;;;;;;;;;:::o;11156:249::-;11225:6;11278:2;11266:9;11257:7;11253:23;11249:32;11246:52;;;11294:1;11291;11284:12;11246:52;11326:9;11320:16;11345:30;11369:5;11345:30;:::i;13006:1045::-;13123:6;13131;13139;13147;13155;13163;13171;13224:3;13212:9;13203:7;13199:23;13195:33;13192:53;;;13241:1;13238;13231:12;13192:53;13273:9;13267:16;13292:30;13316:5;13292:30;:::i;:::-;13391:2;13376:18;;13370:25;13341:5;;-1:-1:-1;13404:32:105;13370:25;13404:32;:::i;:::-;13507:2;13492:18;;13486:25;13455:7;;-1:-1:-1;13520:32:105;13486:25;13520:32;:::i;:::-;13623:2;13608:18;;13602:25;13571:7;;-1:-1:-1;13636:32:105;13602:25;13636:32;:::i;:::-;13739:3;13724:19;;13718:26;13687:7;;-1:-1:-1;13753:32:105;13718:26;13753:32;:::i;:::-;13856:3;13841:19;;13835:26;13804:7;;-1:-1:-1;13870:32:105;13835:26;13870:32;:::i;:::-;13973:3;13958:19;;13952:26;13921:7;;-1:-1:-1;13987:32:105;13952:26;13987:32;:::i;14056:169::-;14134:13;;14187:12;14176:24;;14166:35;;14156:63;;14215:1;14212;14205:12;14230:597;14323:6;14331;14339;14347;14400:3;14388:9;14379:7;14375:23;14371:33;14368:53;;;14417:1;14414;14407:12;14368:53;14449:9;14443:16;14468:30;14492:5;14468:30;:::i;:::-;14567:2;14552:18;;14546:25;14517:5;;-1:-1:-1;14580:32:105;14546:25;14580:32;:::i;:::-;14683:2;14668:18;;14662:25;14631:7;;-1:-1:-1;14696:32:105;14662:25;14696:32;:::i;:::-;14747:7;-1:-1:-1;14773:48:105;14817:2;14802:18;;14773:48;:::i;:::-;14763:58;;14230:597;;;;;;;:::o;14832:380::-;14911:1;14907:12;;;;14954;;;14975:61;;15029:4;15021:6;15017:17;15007:27;;14975:61;15082:2;15074:6;15071:14;15051:18;15048:38;15045:161;;15128:10;15123:3;15119:20;15116:1;15109:31;15163:4;15160:1;15153:15;15191:4;15188:1;15181:15;15045:161;;14832:380;;;:::o;15217:385::-;15296:6;15304;15357:2;15345:9;15336:7;15332:23;15328:32;15325:52;;;15373:1;15370;15363:12;15325:52;15405:9;15399:16;15424:31;15449:5;15424:31;:::i;:::-;15524:2;15509:18;;15503:25;15474:5;;-1:-1:-1;15537:33:105;15503:25;15537:33;:::i;15607:127::-;15668:10;15663:3;15659:20;15656:1;15649:31;15699:4;15696:1;15689:15;15723:4;15720:1;15713:15;15739:148;15827:4;15806:12;;;15820;;;15802:31;;15845:13;;15842:39;;;15861:18;;:::i;15892:151::-;15982:4;15975:12;;;15961;;;15957:31;;16000:14;;15997:40;;;16017:18;;:::i;16048:168::-;16121:9;;;16152;;16169:15;;;16163:22;;16149:37;16139:71;;16190:18;;:::i;16431:184::-;16501:6;16554:2;16542:9;16533:7;16529:23;16525:32;16522:52;;;16570:1;16567;16560:12;16522:52;-1:-1:-1;16593:16:105;;16431:184;-1:-1:-1;16431:184:105:o;18090:249::-;18159:6;18212:2;18200:9;18191:7;18187:23;18183:32;18180:52;;;18228:1;18225;18218:12;18180:52;18260:9;18254:16;18279:30;18303:5;18279:30;:::i;18344:267::-;18430:6;18483:2;18471:9;18462:7;18458:23;18454:32;18451:52;;;18499:1;18496;18489:12;18451:52;18531:9;18525:16;18550:31;18575:5;18550:31;:::i;20695:519::-;20783:6;20791;20799;20852:2;20840:9;20831:7;20827:23;20823:32;20820:52;;;20868:1;20865;20858:12;20820:52;20900:9;20894:16;20919:31;20944:5;20919:31;:::i;:::-;21019:2;21004:18;;20998:25;20969:5;;-1:-1:-1;21032:33:105;20998:25;21032:33;:::i;:::-;21136:2;21121:18;;21115:25;21084:7;;-1:-1:-1;21149:33:105;21115:25;21149:33;:::i;21219:125::-;21284:9;;;21305:10;;;21302:36;;;21318:18;;:::i;21349:128::-;21416:9;;;21437:11;;;21434:37;;;21451:18;;:::i;21482:127::-;21543:10;21538:3;21534:20;21531:1;21524:31;21574:4;21571:1;21564:15;21598:4;21595:1;21588:15;21614:127;21675:10;21670:3;21666:20;21663:1;21656:31;21706:4;21703:1;21696:15;21730:4;21727:1;21720:15;21746:217;21786:1;21812;21802:132;;21856:10;21851:3;21847:20;21844:1;21837:31;21891:4;21888:1;21881:15;21919:4;21916:1;21909:15;21802:132;-1:-1:-1;21948:9:105;;21746:217::o;21968:127::-;22029:10;22024:3;22020:20;22017:1;22010:31;22060:4;22057:1;22050:15;22084:4;22081:1;22074:15;22100:135;22139:3;22160:17;;;22157:43;;22180:18;;:::i;:::-;-1:-1:-1;22227:1:105;22216:13;;22100:135::o;22542:245::-;22609:6;22662:2;22650:9;22641:7;22637:23;22633:32;22630:52;;;22678:1;22675;22668:12;22630:52;22710:9;22704:16;22729:28;22751:5;22729:28;:::i;22792:854::-;22990:4;23038:2;23027:9;23023:18;-1:-1:-1;;;;;23141:2:105;23133:6;23129:15;23118:9;23111:34;23164:2;23202;23197;23186:9;23182:18;23175:30;23225:6;23260;23254:13;23291:6;23283;23276:22;23329:3;23318:9;23314:19;23307:26;;23368:2;23360:6;23356:15;23342:29;;23389:1;23399:169;23413:6;23410:1;23407:13;23399:169;;;23474:13;;23462:26;;23543:15;;;;23508:12;;;;23435:1;23428:9;23399:169;;;23403:3;;23585;23577:11;;;;23636:2;23628:6;23624:15;23619:2;23608:9;23604:18;23597:43;;;22792:854;;;;;;:::o;23651:275::-;23722:2;23716:9;23787:2;23768:13;;-1:-1:-1;;23764:27:105;23752:40;;23822:18;23807:34;;23843:22;;;23804:62;23801:88;;;23869:18;;:::i;:::-;23905:2;23898:22;23651:275;;-1:-1:-1;23651:275:105:o;23931:183::-;23991:4;24024:18;24016:6;24013:30;24010:56;;;24046:18;;:::i;:::-;-1:-1:-1;24091:1:105;24087:14;24103:4;24083:25;;23931:183::o;24119:1003::-;24232:6;24240;24248;24301:2;24289:9;24280:7;24276:23;24272:32;24269:52;;;24317:1;24314;24307:12;24269:52;24346:9;24340:16;24330:26;;24375:2;24417;24406:9;24402:18;24396:25;24386:35;;24465:2;24454:9;24450:18;24444:25;24492:18;24484:6;24481:30;24478:50;;;24524:1;24521;24514:12;24478:50;24547:22;;24600:4;24592:13;;24588:27;-1:-1:-1;24578:55:105;;24629:1;24626;24619:12;24578:55;24658:2;24652:9;24681:60;24697:43;24737:2;24697:43;:::i;:::-;24681:60;:::i;:::-;24775:15;;;24857:1;24853:10;;;;24845:19;;24841:28;;;24806:12;;;;24881:19;;;24878:39;;;24913:1;24910;24903:12;24878:39;24937:11;;;;24957:135;24973:6;24968:3;24965:15;24957:135;;;25039:10;;25027:23;;24990:12;;;;25070;;;;24957:135;;;25111:5;25101:15;;;;;;;24119:1003;;;;;:::o;25597:677::-;25727:6;25735;25743;25751;25759;25767;25775;25783;25836:3;25824:9;25815:7;25811:23;25807:33;25804:53;;;25853:1;25850;25843:12;25804:53;25882:9;25876:16;25866:26;;25932:2;25921:9;25917:18;25911:25;25901:35;;25976:2;25965:9;25961:18;25955:25;25945:35;;26020:2;26009:9;26005:18;25999:25;25989:35;;26064:3;26053:9;26049:19;26043:26;26033:36;;26109:3;26098:9;26094:19;26088:26;26078:36;;26154:3;26143:9;26139:19;26133:26;26123:36;;26202:3;26191:9;26187:19;26181:26;26216:28;26238:5;26216:28;:::i;26770:679::-;26870:6;26878;26886;26894;26902;26955:3;26943:9;26934:7;26930:23;26926:33;26923:53;;;26972:1;26969;26962:12;26923:53;27004:9;26998:16;27023:29;27046:5;27023:29;:::i;:::-;27121:2;27106:18;;27100:25;27071:5;;-1:-1:-1;27134:32:105;27100:25;27134:32;:::i;:::-;27237:2;27222:18;;27216:25;27185:7;;-1:-1:-1;27250:32:105;27216:25;27250:32;:::i;:::-;27301:7;-1:-1:-1;27327:48:105;27371:2;27356:18;;27327:48;:::i;:::-;27317:58;;27394:49;27438:3;27427:9;27423:19;27394:49;:::i;:::-;27384:59;;26770:679;;;;;;;;:::o;27662:175::-;27740:13;;27793:18;27782:30;;27772:41;;27762:69;;27827:1;27824;27817:12;27842:372;27927:6;27935;27943;27996:2;27984:9;27975:7;27971:23;27967:32;27964:52;;;28012:1;28009;28002:12;27964:52;28035:39;28064:9;28035:39;:::i;:::-;28025:49;;28093:48;28137:2;28126:9;28122:18;28093:48;:::i;:::-;28083:58;;28160:48;28204:2;28193:9;28189:18;28160:48;:::i;:::-;28150:58;;27842:372;;;;;:::o;28888:435::-;28941:3;28979:5;28973:12;29006:6;29001:3;28994:19;29032:4;29061:2;29056:3;29052:12;29045:19;;29098:2;29091:5;29087:14;29119:1;29129:169;29143:6;29140:1;29137:13;29129:169;;;29204:13;;29192:26;;29238:12;;;;29273:15;;;;29165:1;29158:9;29129:169;;;-1:-1:-1;29314:3:105;;28888:435;-1:-1:-1;;;;;28888:435:105:o;29328:688::-;29604:4;-1:-1:-1;;;;;29714:2:105;29706:6;29702:15;29691:9;29684:34;29766:2;29758:6;29754:15;29749:2;29738:9;29734:18;29727:43;;29806:3;29801:2;29790:9;29786:18;29779:31;29833:57;29885:3;29874:9;29870:19;29862:6;29833:57;:::i;:::-;29938:9;29930:6;29926:22;29921:2;29910:9;29906:18;29899:50;29966:44;30003:6;29995;29966:44;:::i;:::-;29958:52;29328:688;-1:-1:-1;;;;;;;29328:688:105:o;30021:659::-;30086:5;30139:3;30132:4;30124:6;30120:17;30116:27;30106:55;;30157:1;30154;30147:12;30106:55;30186:6;30180:13;30212:4;30236:60;30252:43;30292:2;30252:43;:::i;30236:60::-;30330:15;;;30416:1;30412:10;;;;30400:23;;30396:32;;;30361:12;;;;30440:15;;;30437:35;;;30468:1;30465;30458:12;30437:35;30504:2;30496:6;30492:15;30516:135;30532:6;30527:3;30524:15;30516:135;;;30598:10;;30586:23;;30629:12;;;;30549;;30516:135;;;-1:-1:-1;30669:5:105;30021:659;-1:-1:-1;;;;;;30021:659:105:o;30685:363::-;30780:6;30833:2;30821:9;30812:7;30808:23;30804:32;30801:52;;;30849:1;30846;30839:12;30801:52;30882:9;30876:16;30915:18;30907:6;30904:30;30901:50;;;30947:1;30944;30937:12;30901:50;30970:72;31034:7;31025:6;31014:9;31010:22;30970:72;:::i;31053:435::-;31286:6;31275:9;31268:25;31329:6;31324:2;31313:9;31309:18;31302:34;31372:6;31367:2;31356:9;31352:18;31345:34;31415:3;31410:2;31399:9;31395:18;31388:31;31249:4;31436:46;31477:3;31466:9;31462:19;31454:6;31436:46;:::i;31493:338::-;-1:-1:-1;;;;;31672:6:105;31668:55;31657:9;31650:74;31760:2;31755;31744:9;31740:18;31733:30;31631:4;31780:45;31821:2;31810:9;31806:18;31798:6;31780:45;:::i;40371:362::-;40576:6;40565:9;40558:25;40619:6;40614:2;40603:9;40599:18;40592:34;40662:2;40657;40646:9;40642:18;40635:30;40539:4;40682:45;40723:2;40712:9;40708:18;40700:6;40682:45;:::i;40738:441::-;40906:4;-1:-1:-1;;;;;41016:2:105;41008:6;41004:15;40993:9;40986:34;41068:2;41060:6;41056:15;41051:2;41040:9;41036:18;41029:43;;41108:2;41103;41092:9;41088:18;41081:30;41128:45;41169:2;41158:9;41154:18;41146:6;41128:45;:::i;42817:287::-;42946:3;42984:6;42978:13;43000:66;43059:6;43054:3;43047:4;43039:6;43035:17;43000:66;:::i;:::-;43082:16;;;;;42817:287;-1:-1:-1;;42817:287:105:o;43913:384::-;-1:-1:-1;;;;;;44098:33:105;;44086:46;;44155:13;;44068:3;;44177:74;44155:13;44240:1;44231:11;;44224:4;44212:17;;44177:74;:::i;:::-;44271:16;;;;44289:1;44267:24;;43913:384;-1:-1:-1;;;43913:384:105:o;44302:610::-;44548:13;;44491:3;;44522;;44601:4;44628:15;;;44491:3;44671:175;44685:6;44682:1;44679:13;44671:175;;;44748:13;;44734:28;;44784:14;;;;44821:15;;;;44707:1;44700:9;44671:175;;;-1:-1:-1;;44855:21:105;;;-1:-1:-1;44892:14:105;;;;;-1:-1:-1;;;44302:610:105:o;45851:614::-;45980:6;45988;46041:2;46029:9;46020:7;46016:23;46012:32;46009:52;;;46057:1;46054;46047:12;46009:52;46090:9;46084:16;46119:18;46160:2;46152:6;46149:14;46146:34;;;46176:1;46173;46166:12;46146:34;46199:72;46263:7;46254:6;46243:9;46239:22;46199:72;:::i;:::-;46189:82;;46317:2;46306:9;46302:18;46296:25;46280:41;;46346:2;46336:8;46333:16;46330:36;;;46362:1;46359;46352:12;46330:36;;46385:74;46451:7;46440:8;46429:9;46425:24;46385:74;:::i;:::-;46375:84;;;45851:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":16708,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_GetBin(uint24)":"47af9fa6","testFuzz_GetSwapIn(uint128,bool)":"9d26bf6e","testFuzz_GetSwapOut(uint128,bool)":"802f76e5","test_GetActiveId()":"257e0c47","test_GetBinStep()":"589f9e77","test_GetFactory()":"b16a38c1","test_GetIdFromPrice()":"061794b3","test_GetNextNonEmptyBin()":"7428239e","test_GetOracleParameters()":"c4faff2f","test_GetOracleSampleAt()":"e01c69d5","test_GetPriceFromId()":"519049b2","test_GetProtocolFees()":"e917490e","test_GetReserves()":"ba3eb7a5","test_GetStaticFeeParameters()":"0d7add12","test_GetTokenX()":"ff2efe49","test_GetTokenY()":"6b0ab119","test_GetVariableFeeParameters()":"26553f04","test_revert_SetStaticFeeParameters()":"74a73806"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"testFuzz_GetBin\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"testFuzz_GetSwapIn\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"testFuzz_GetSwapOut\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetActiveId\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetBinStep\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetFactory\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetIdFromPrice\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetNextNonEmptyBin\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetOracleParameters\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetOracleSampleAt\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetPriceFromId\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetProtocolFees\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetReserves\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetStaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetTokenX\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetTokenY\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetVariableFeeParameters\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_SetStaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairInitialState.t.sol\":\"LBPairInitialStateTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairInitialState.t.sol\":{\"keccak256\":\"0x2eae0263cdd958bb0f8abea1bdea51dceba31075a6a84968019ae422ac347f91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f62367f3828fb16f6a04525cf3ec94ef860a1b18c449a58b94beb8ba6bd2e18\",\"dweb:/ipfs/QmcWWLMY8ZzXB5XHnEpisQ5X7ZDDgbgDd4u3VfGCUFd3B9\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"testFuzz_GetBin"},{"inputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"testFuzz_GetSwapIn"},{"inputs":[{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"testFuzz_GetSwapOut"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetActiveId"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetBinStep"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetFactory"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetIdFromPrice"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetNextNonEmptyBin"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetOracleParameters"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetOracleSampleAt"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetPriceFromId"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetProtocolFees"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetReserves"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetStaticFeeParameters"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetTokenX"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetTokenY"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetVariableFeeParameters"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_SetStaticFeeParameters"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairInitialState.t.sol":"LBPairInitialStateTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairInitialState.t.sol":{"keccak256":"0x2eae0263cdd958bb0f8abea1bdea51dceba31075a6a84968019ae422ac347f91","urls":["bzz-raw://9f62367f3828fb16f6a04525cf3ec94ef860a1b18c449a58b94beb8ba6bd2e18","dweb:/ipfs/QmcWWLMY8ZzXB5XHnEpisQ5X7ZDDgbgDd4u3VfGCUFd3B9"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":87} \ No newline at end of file diff --git a/abi/LBPairLiquidity.t.sol/LBPairLiquidityTest.json b/abi/LBPairLiquidity.t.sol/LBPairLiquidityTest.json deleted file mode 100644 index c25b051a..00000000 --- a/abi/LBPairLiquidity.t.sol/LBPairLiquidityTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_BurnHalfTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_GetNextNonEmptyBin","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_MintTwice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_MintWithDifferentBins","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SimpleBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SimpleMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_BurnEmptyArraysOrDifferent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_BurnForZeroAmounts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_BurnMoreThanBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_BurnZeroShares","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_MintEmptyConfig","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_MintMoreThanAmountSent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_MintZeroShares","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610140604052600561010090815264616c69636560d81b610120526200003690620000a0565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b60208201526200006790620000a0565b6001600160a01b031660c0526200008461604762800000620001d3565b62ffffff1660e0523480156200009957600080fd5b50620002b8565b6000620000ad82620000b4565b5092915050565b60008082604051602001620000ca919062000224565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562000136573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015c919062000242565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200019a908590879060040162000274565b600060405180830381600087803b158015620001b557600080fd5b505af1158015620001ca573d6000803e3d6000fd5b50505050915091565b62ffffff828116828216039080821115620000ad57634e487b7160e01b600052601160045260246000fd5b60005b838110156200021b57818101518382015260200162000201565b50506000910152565b6000825162000238818460208701620001fe565b9190910192915050565b6000602082840312156200025557600080fd5b81516001600160a01b03811681146200026d57600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620002a3816060850160208701620001fe565b601f01601f1916919091016060019392505050565b60805160a05160c05160e0516201c4aa620005a26000396000818161042b015281816104b90152818161052b0152818161097901528181610bf801528181610c9e01528181610d9d015281816111d9015281816112bc01528181611d2001528181611db801528181611f0701528181611f8801528181611fc601528181611ff10152818161239a015281816123dc0152818161241e01528181612746015281816127cc015281816129ae01528181612a5201528181612ad301528181612b7a01528181613433015281816134cb0152818161361a01528181613657015281816136fd0152818161380901528181613c6601528181613d0601528181613d4101528181613dc101528181613e10015281816140490152818161417701528181614a8e01528181614af801528181614b7201528181614bf801528181614cfd01528181614e5201528181614eb001528181615012015261506d01526000818161094e01528181610fb0015281816111ae015281816113240152818161146201528181611503015281816115970152818161167101528181611cf501528181611df801528181611edc01528181611f5d0152818161203a0152818161214c0152818161236f015281816127a40152818161287d0152818161291901528181612ea8015281816134080152818161350b015281816135ef01528181613a430152818161401e015281816141df015281816143690152818161440a0152818161449e0152818161458a015281816146730152818161470f015281816147a30152818161487d0152614f8701526000818161092c015281816109bc01528181610ad50152818161108b0152818161118c01528181611cd301528181611eba01528181611f3b0152818161234d015281816133e6015281816135cd01528181613ffc0152614a610152600081816106180152818161195c01528181611a9c01528181611bbf01528181613cd901528181614acb01528181614bd001528181614cdc0152615c2101526201c4aa6000f3fe60806040523480156200001157600080fd5b5060043610620002015760003560e01c8063889be5b71162000119578063b61f5e5c11620000af578063cc6bb8c1116200007a578063cc6bb8c114620003d2578063e20c9f7114620003dc578063f8df23b614620003e6578063fecaa22314620003f057600080fd5b8063b61f5e5c146200039d578063b89e023314620003a7578063ba414fa614620003be578063c8b0266214620003c857600080fd5b8063a7aa85e911620000f0578063a7aa85e91462000368578063b0e6b725146200037f578063b5508aa91462000389578063b579ea47146200039357600080fd5b8063889be5b71462000328578063916a17c61462000354578063a3c26b2a146200035e57600080fd5b8063402eeb1f116200019b5780636387c30e11620001665780636387c30e14620002e257806366d9a9a014620002ec5780637428239e146200030557806385226c81146200030f57600080fd5b8063402eeb1f146200029e57806343024c0e14620002a857806349789ef914620002b25780634a432f9214620002d857600080fd5b80631ed7831c11620001dc5780631ed7831c14620002585780632ade388014620002715780633e5e3c23146200028a5780633f7286f4146200029457600080fd5b806301ffc9a714620002065780630a9254e4146200024257806312d2b157146200024e575b600080fd5b6200022d6200021736600462008a29565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b6200024c62000407565b005b6200024c62000472565b6200026262000696565b60405162000239919062008a55565b6200027b620006fa565b60405162000239919062008af8565b6200026262000848565b62000262620008aa565b6200024c6200090c565b6200024c6200116c565b620002c9620002c336600462008bd0565b6200184a565b60405190815260200162000239565b6200024c6200189f565b6200024c62001cb3565b620002f662002254565b60405162000239919062008c08565b6200024c6200233e565b6200031962002bea565b60405162000239919062008cbf565b6200033f6200033936600462008d37565b62002cc4565b60405162ffffff909116815260200162000239565b620002f662002d1f565b6200024c62002e09565b6200024c6200037936600462008d90565b62002f25565b6200024c620033c6565b6200031962003b45565b6200024c62003c1f565b6200024c62003d8f565b6200022d620003b836600462008e2e565b62003e9f565b6200022d62003f22565b6200024c62003fdc565b6200024c62004a57565b6200026262004d6a565b6200024c62004dcc565b6200024c6200040136600462008e54565b620050ef565b62000411620053f4565b601c54601d5462000450916001600160a01b0390811691167f000000000000000000000000000000000000000000000000000000000000000062006a1f565b602780546001600160a01b0319166001600160a01b0392909216919091179055565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff1682600081518110620004f357620004f362008efe565b60200260200101818152505060008160008151811062000517576200051762008efe565b602090810291909101015260405162ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526000805160206201c4558339815191529063f28dceb390636996a92560e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620005bb9160040162008f14565b600060405180830381600087803b158015620005d657600080fd5b505af1158015620005eb573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062000647907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562000667573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000691919081019062009081565b505050565b60606014805480602002602001604051908101604052809291908181526020018280548015620006f057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006d1575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200083f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008275783829060005260206000200180546200079390620090ba565b80601f0160208091040260200160405190810160405280929190818152602001828054620007c190620090ba565b8015620008125780601f10620007e65761010080835404028352916020019162000812565b820191906000526020600020905b815481529060010190602001808311620007f457829003601f168201915b50505050508152602001906001019062000771565b5050505081525050815260200190600101906200071e565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620006f0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006d1575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620006f0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006d1575050505050905090565b60275468056bc75e2d63100000906377359400906006908190620009a2907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000abb9216906370a0823190602401602060405180830381865afa15801562000a10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a369190620090f6565b60ff8416670de0b6b3a764000062000a4f82826200913c565b62000a5b908962009153565b62000a6791906200913c565b62000a73919062009153565b62000a7f90876200916d565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a31000000000000000000000000000081525062006a38565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bd49216906370a0823190602401602060405180830381865afa15801562000b29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b4f9190620090f6565b60ff8316670de0b6b3a764000062000b6882826200913c565b62000b74908862009153565b62000b8091906200913c565b62000b8c919062009153565b62000b9890866200916d565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a32000000000000000000000000000081525062006a38565b600062000be283836200184a565b905060005b818110156200116457600062000c1f7f0000000000000000000000000000000000000000000000000000000000000000838662002cc4565b602754604051630157d2d160e31b815262ffffff8316600482015291925060009182916001600160a01b031690630abe9688906024016040805180830381865afa15801562000c72573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c9891906200919b565b915091507f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff16101562000d9b5762000d1b826001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a33000000000000000000000000000081525062006a38565b62000d956001600160801b038216670de0b6b3a764000062000d4160ff8a16826200913c565b62000d4d908c62009153565b62000d5991906200913c565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a34000000000000000000000000000081525062006a38565b62000f97565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff160362000ed15762000e4f6001600160801b038316670de0b6b3a764000062000df360ff8b16826200913c565b62000dff908d62009153565b62000e0b91906200913c565b66038d7ea4c680006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a35000000000000000000000000000081525062006a9e565b62000d956001600160801b038216670de0b6b3a764000062000e7560ff8a16826200913c565b62000e81908c62009153565b62000e8d91906200913c565b66038d7ea4c680006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a36000000000000000000000000000081525062006a9e565b62000f4b6001600160801b038316670de0b6b3a764000062000ef760ff8b16826200913c565b62000f03908d62009153565b62000f0f91906200913c565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a37000000000000000000000000000081525062006a38565b62000f97816001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a38000000000000000000000000000081525062006a38565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff861660248301526200107292169062fdd58e90604401602060405180830381865afa1580156200100e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010349190620090f6565b60006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a39000000000000000000000000000081525062006b06565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff861660248301526200114d92169062fdd58e90604401602060405180830381865afa158015620010e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200110f9190620090f6565b60006040518060400160405280601381526020017f746573745f53696d706c654d696e743a3a31300000000000000000000000000081525062006a38565b505050806200115c90620091ca565b905062000be7565b505050505050565b60275468056bc75e2d6310000090637735940090600690819062001202907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b60006200121083836200184a565b905060008167ffffffffffffffff81111562001230576200123062008ee8565b6040519080825280602002602001820160405280156200125a578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200127b576200127b62008ee8565b604051908082528060200260200182016040528015620012a5578160200160208202803683370190505b50905060005b83811015620013d9576000620012e37f0000000000000000000000000000000000000000000000000000000000000000838862002cc4565b90508062ffffff1683838151811062001300576200130062008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff841660248301529091169062fdd58e90604401602060405180830381865afa1580156200137f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a59190620090f6565b848381518110620013ba57620013ba62008efe565b602090810291909101015250620013d181620091ca565b9050620012ab565b5060275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa15801562001425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200144b91906200919b565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015291935091506000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620014c157600080fd5b505af1158015620014d6573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062001532907f000000000000000000000000000000000000000000000000000000000000000090819088908a9060040162008f66565b6000604051808303816000875af115801562001552573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200157c919081019062009081565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620016579216906370a0823190602401602060405180830381865afa158015620015eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016119190620090f6565b836001600160801b03166040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a31000000000000000000000000000081525062006a38565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620017319216906370a0823190602401602060405180830381865afa158015620016c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016eb9190620090f6565b826001600160801b03166040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a32000000000000000000000000000081525062006a38565b60275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562001779573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200179f91906200919b565b8092508193505050620017f3826001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a33000000000000000000000000000081525062006a38565b6200183f816001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a34000000000000000000000000000081525062006a38565b505050505050505050565b6000808360ff1611801562001862575060008260ff16115b6200187957620018738284620091e6565b62001893565b6001620018878385620091e6565b62001893919062009202565b60ff1690505b92915050565b6040805160008082526001602080840182815260608501865293949293928501908036833701905050604051630618f58760e51b8152633ab7870760e01b60048201529091506000805160206201c4558339815191529063c31eb0e090602401600060405180830381600087803b1580156200191a57600080fd5b505af11580156200192f573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e91506200198b907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af1158015620019ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019d5919081019062009081565b506040805160018082528183019092529060208083019080368337019050506040805160008082526020820190925291935050604051630618f58760e51b8152633ab7870760e01b60048201529091506000805160206201c4558339815191529063c31eb0e090602401600060405180830381600087803b15801562001a5a57600080fd5b505af115801562001a6f573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062001acb907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562001aeb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b15919081019062009081565b505060408051600080825260208201818152828401808552630618f58760e51b9052633ab7870760e01b604484015292519193506000805160206201c4558339815191529163c31eb0e0916064808701929081880301818387803b15801562001b7d57600080fd5b505af115801562001b92573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062001bee907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562001c0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c38919081019062009081565b50604080516001808252818301909252906020808301908036833750506040805160028082526060820183529395509291506020830190803683375050604051630618f58760e51b8152633ab7870760e01b60048201529192506000805160206201c4558339815191529163c31eb0e09150602401620005bb565b60275468056bc75e2d6310000090637735940090600690819062001d49907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b600062001d5783836200184a565b905060008167ffffffffffffffff81111562001d775762001d7762008ee8565b60405190808252806020026020018201604052801562001da1578160200160208202803683370190505b50905060005b8281101562001eaf57600062001ddf7f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff8416602483015292935091169062fdd58e90604401602060405180830381865afa15801562001e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7b9190620090f6565b83838151811062001e905762001e9062008efe565b60209081029190910101525062001ea781620091ca565b905062001da7565b5060275462001f31907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008a8a8a600062002f25565b60275462001fb2907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008a8a60008a62002f25565b60005b828110156200224b57600062001fed7f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b90507f000000000000000000000000000000000000000000000000000000000000000062ffffff168162ffffff16036200213357602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff841660248301526200212d92169062fdd58e90604401602060405180830381865afa15801562002098573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020be9190620090f6565b848481518110620020d357620020d362008efe565b60200260200101516002620020e9919062009153565b66038d7ea4c680006040518060400160405280601d81526020017f746573745f4d696e7457697468446966666572656e7442696e733a3a3100000081525062006a9e565b62002237565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff841660248301526200223792169062fdd58e90604401602060405180830381865afa158015620021aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021d09190620090f6565b848481518110620021e557620021e562008efe565b60200260200101516002620021fb919062009153565b6040518060400160405280601d81526020017f746573745f4d696e7457697468446966666572656e7442696e733a3a3200000081525062006a38565b506200224381620091ca565b905062001fb5565b50505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200083f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200232557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620022e65790505b5050505050815250508152602001906001019062002278565b6027546006908190620023d0907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000068056bc75e2d631000006377359400878062002f25565b60006200240160ff83167f00000000000000000000000000000000000000000000000000000000000000006200921e565b6200240e9060016200923d565b9050600060016200244360ff86167f00000000000000000000000000000000000000000000000000000000000000006200923d565b6200244f91906200921e565b60275460405163a41a01fb60e01b8152600060048201819052602482018190529293506001600160a01b039091169063a41a01fb90604401602060405180830381865afa158015620024a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024cb91906200925c565b9050620025198162ffffff168462ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3100000000000081525062006a38565b60006200252786866200184a565b905060005b620025396001836200916d565b811015620026375760275460405163a41a01fb60e01b81526000600482015262ffffff851660248201526001600160a01b039091169063a41a01fb90604401602060405180830381865afa15801562002596573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025bc91906200925c565b9250620026248362ffffff16828762ffffff16620025db91906200927c565b620025e89060016200927c565b6040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3200000000000081525062006a38565b6200262f81620091ca565b90506200252c565b5060275460405163a41a01fb60e01b81526001600482015262ffffff60248201526001600160a01b039091169063a41a01fb90604401602060405180830381865afa1580156200268b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026b191906200925c565b9150620026ff8262ffffff168462ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3300000000000081525062006a38565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff168260008151811062002780576200278062008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000062ffffff1660248301529091169062fdd58e90604401602060405180830381865afa1580156200281f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028459190620090f6565b816000815181106200285b576200285b62008efe565b602090810291909101015260405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620028d757600080fd5b505af1158015620028ec573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062002948907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562002968573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002992919081019062009081565b506027546001600160a01b031663a41a01fb6000620029d360017f00000000000000000000000000000000000000000000000000000000000000006200921e565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562002a1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a4091906200925c565b935062002aba62ffffff851662002a797f000000000000000000000000000000000000000000000000000000000000000060016200923d565b62ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3400000000000081525062006a38565b6027546001600160a01b031663a41a01fb600162002af97f0000000000000000000000000000000000000000000000000000000000000000826200923d565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562002b40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b6691906200925c565b935062002be062ffffff851662002b9f60017f00000000000000000000000000000000000000000000000000000000000000006200921e565b62ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3500000000000081525062006a38565b5050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200083f57838290600052602060002001805462002c3090620090ba565b80601f016020809104026020016040519081016040528092919081815260200182805462002c5e90620090ba565b801562002caf5780601f1062002c835761010080835404028352916020019162002caf565b820191906000526020600020905b81548152906001019060200180831162002c9157829003601f168201915b50505050508152602001906001019062002c0e565b60008062002cd88462ffffff87166200927c565b905060008360ff161162002ced578062002d09565b62002cfc60ff8416826200916d565b62002d099060016200927c565b905062002d168162006b3e565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200083f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002df057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002db15790505b5050505050815250508152602001906001019062002d43565b60408051600081526020810191829052630618f58760e51b90915263296db0d960e01b60248201526000805160206201c45583398151915263c31eb0e0604483015b600060405180830381600087803b15801562002e6657600080fd5b505af115801562002e7b573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062002ed5907f0000000000000000000000000000000000000000000000000000000000000000908590829060040162009292565b6000604051808303816000875af115801562002ef5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f1f9190810190620092ca565b50505050565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002f66573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8c919062009379565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002fcf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ff5919062009379565b905062003004828b8862006b6a565b62003011818b8762006b6a565b60006200301f85856200184a565b905060008167ffffffffffffffff8111156200303f576200303f62008ee8565b60405190808252806020026020018201604052801562003069578160200160208202803683370190505b50905060005b8281101562003168576000620030878b838962002cc4565b905060008b62ffffff168262ffffff1610158015620030a9575060008960ff16115b620030b6576000620030d7565b620030d7620030d160ff8b16670de0b6b3a76400006200913c565b62006b79565b905060008c62ffffff168362ffffff1611158015620030f9575060008960ff16115b6200310657600062003121565b62003121620030d160ff8b16670de0b6b3a76400006200913c565b90506200313082828562006ba5565b85858151811062003145576200314562008efe565b602002602001018181525050505050806200316090620091ca565b90506200306f565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201c455833981519152906306447d5690602401600060405180830381600087803b158015620031ba57600080fd5b505af1158015620031cf573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562003223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032499190620093aa565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af11580156200329a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032c09190620093aa565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200332057600080fd5b505af115801562003335573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b81526004016200336b9392919062009292565b6000604051808303816000875af11580156200338b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033b59190810190620092ca565b505050505050505050505050505050565b60275468056bc75e2d631000009063773594009060069081906200345c907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b60006200346a83836200184a565b905060008167ffffffffffffffff8111156200348a576200348a62008ee8565b604051908082528060200260200182016040528015620034b4578160200160208202803683370190505b50905060005b82811015620035c2576000620034f27f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff8416602483015292935091169062fdd58e90604401602060405180830381865afa15801562003568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200358e9190620090f6565b838381518110620035a357620035a362008efe565b602090810291909101015250620035ba81620091ca565b9050620034ba565b5060275462003643907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008a8a8a8a62002f25565b60005b828110156200224b5760006200367e7f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b602754604051630157d2d160e31b815262ffffff8316600482015291925060009182916001600160a01b031690630abe9688906024016040805180830381865afa158015620036d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f791906200919b565b915091507f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff16101562003807576200377a826001600160801b031660006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3100000000000000000000000000000081525062006a38565b620038016001600160801b038216670de0b6b3a7640000620037a060ff8b16826200913c565b620037ac908d62009153565b620037b891906200913c565b620037c590600262009153565b6040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3200000000000000000000000000000081525062006a38565b62003a2a565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff16036200395757620038c86001600160801b038316670de0b6b3a76400006200385f60ff8c16826200913c565b6200386b908e62009153565b6200387791906200913c565b6200388490600262009153565b66038d7ea4c680006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3300000000000000000000000000000081525062006a9e565b620038016001600160801b038216670de0b6b3a7640000620038ee60ff8b16826200913c565b620038fa908d62009153565b6200390691906200913c565b6200391390600262009153565b66038d7ea4c680006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3400000000000000000000000000000081525062006a9e565b620039de6001600160801b038316670de0b6b3a76400006200397d60ff8c16826200913c565b62003989908e62009153565b6200399591906200913c565b620039a290600262009153565b6040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3500000000000000000000000000000081525062006a38565b62003a2a816001600160801b031660006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3600000000000000000000000000000081525062006a38565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff8616602483015262003b2e92169062fdd58e90604401602060405180830381865afa15801562003aa1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ac79190620090f6565b86868151811062003adc5762003adc62008efe565b6020026020010151600262003af2919062009153565b6040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3700000000000000000000000000000081525062006a38565b5050508062003b3d90620091ca565b905062003646565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200083f57838290600052602060002001805462003b8b90620090ba565b80601f016020809104026020016040519081016040528092919081815260200182805462003bb990620090ba565b801562003c0a5780601f1062003bde5761010080835404028352916020019162003c0a565b820191906000526020600020905b81548152906001019060200180831162003bec57829003601f168201915b50505050508152602001906001019062003b69565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff168260008151811062003ca05762003ca062008efe565b60200260200101818152505060018160008151811062003cc45762003cc462008efe565b602090810291909101015260275462003d38907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a76400008060018062002f25565b60405162ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526000805160206201c4558339815191529063f28dceb39063fd44792960e01b9060440162000574565b6040805160018082528183019092526000916020808301908036833701905050905062003de6670de0b6b3a7640000807f000000000000000000000000000000000000000000000000000000000000000062006ba5565b8160008151811062003dfc5762003dfc62008efe565b602090810291909101015260405162ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526000805160206201c4558339815191529063f28dceb390634c98d35760e11b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002e4b9160040162008f14565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562003eef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f159190620093c8565b9998505050505050505050565b60075460009060ff161562003f3b575060075460ff1690565b604051630667f9d760e41b81526000805160206201c455833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562003faf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fd59190620090f6565b1415905090565b60275468056bc75e2d6310000090637735940090600690819062004072907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b60006200408083836200184a565b905060008167ffffffffffffffff811115620040a057620040a062008ee8565b604051908082528060200260200182016040528015620040ca578160200160208202803683370190505b50905060008267ffffffffffffffff811115620040eb57620040eb62008ee8565b60405190808252806020026020018201604052801562004115578160200160208202803683370190505b50905060008367ffffffffffffffff81111562004136576200413662008ee8565b60405190808252806020026020018201604052801562004160578160200160208202803683370190505b50905060005b84811015620042e05760006200419e7f0000000000000000000000000000000000000000000000000000000000000000838962002cc4565b90508062ffffff16838381518110620041bb57620041bb62008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff84166024830152600092169062fdd58e90604401602060405180830381865afa1580156200423b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042619190620090f6565b9050620042706002826200913c565b86848151811062004285576200428562008efe565b60209081029190910101526200429d6002826200913c565b620042a990826200916d565b858481518110620042be57620042be62008efe565b602002602001018181525050505080620042d890620091ca565b905062004166565b5060275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa1580156200432c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200435291906200919b565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015291935091506000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620043c857600080fd5b505af1158015620043dd573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062004439907f000000000000000000000000000000000000000000000000000000000000000090819088908b9060040162008f66565b6000604051808303816000875af115801562004459573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004483919081019062009081565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620045709216906370a0823190602401602060405180830381865afa158015620044f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045189190620090f6565b6200452560028562009422565b6001600160801b03166402540be4006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a31000000000000000000000081525062006a9e565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200465c9216906370a0823190602401602060405180830381865afa158015620045de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046049190620090f6565b6200461160028462009422565b6001600160801b03166402540be4006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a32000000000000000000000081525062006a9e565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620046cd57600080fd5b505af1158015620046e2573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e91506200473e907f000000000000000000000000000000000000000000000000000000000000000090819088908a9060040162008f66565b6000604051808303816000875af11580156200475e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004788919081019062009081565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620048639216906370a0823190602401602060405180830381865afa158015620047f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200481d9190620090f6565b836001600160801b03166040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a33000000000000000000000081525062006a38565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200493d9216906370a0823190602401602060405180830381865afa158015620048d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620048f79190620090f6565b826001600160801b03166040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a34000000000000000000000081525062006a38565b60275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562004985573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049ab91906200919b565b8092508193505050620049ff826001600160801b031660006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a35000000000000000000000081525062006a38565b62004a4b816001600160801b031660006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a36000000000000000000000081525062006a38565b50505050505050505050565b60275462004ac1907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000806001600062002f25565b60275462004b2b907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000806001600062002f25565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff168260008151811062004bac5762004bac62008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000062ffffff1660248301529091169062fdd58e90604401602060405180830381865afa15801562004c4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c719190620090f6565b62004c7e9060016200927c565b8160008151811062004c945762004c9462008efe565b6020026020010181815250507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb36302d9c3b860e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008560008151811062004d325762004d3262008efe565b60209081029190910101516040516001600160a01b03909316602484015262ffffff9091166044830152606482015260840162000574565b60606013805480602002602001604051908101604052809291908181526020018280548015620006f0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006d1575050505050905090565b601c5460275462004df3916001600160a01b039081169116670de0b6b3a764000062006b6a565b601d5460275462004e1a916001600160a01b039081169116670de0b6b3a764000062006b6a565b60408051600280825260608201835260009260208301908036833701905050905062004e7d60006706f05b59d3b2000062004e7760017f00000000000000000000000000000000000000000000000000000000000000006200921e565b62006ba5565b8160008151811062004e935762004e9362008efe565b60200260200101818152505062004ed560006706f05b59d3b200017f000000000000000000000000000000000000000000000000000000000000000062006ba5565b8160018151811062004eeb5762004eeb62008efe565b6020908102919091010152604051630618f58760e51b815263e599af5560e01b60048201526000805160206201c4558339815191529063c31eb0e090602401600060405180830381600087803b15801562004f4557600080fd5b505af115801562004f5a573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062004fb4907f0000000000000000000000000000000000000000000000000000000000000000908590829060040162009292565b6000604051808303816000875af115801562004fd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004ffe9190810190620092ca565b505050620050376706f05b59d3b2000060007f000000000000000000000000000000000000000000000000000000000000000062006ba5565b816001815181106200504d576200504d62008efe565b6020908102919091010152620050946706f05b59d3b20001600062004e777f000000000000000000000000000000000000000000000000000000000000000060016200923d565b81600081518110620050aa57620050aa62008efe565b6020908102919091010152604051630618f58760e51b815263e599af5560e01b60048201526000805160206201c4558339815191529063c31eb0e09060240162002e4b565b670de0b6b3a76400008311156200514d5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b60006200515b83836200184a565b905060008167ffffffffffffffff8111156200517b576200517b62008ee8565b604051908082528060200260200182016040528015620051a5578160200160208202803683370190505b50905060008267ffffffffffffffff811115620051c657620051c662008ee8565b604051908082528060200260200182016040528015620051f0578160200160208202803683370190505b50905060005b83811015620052fe5760006200520e89838862002cc4565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562005264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200528a9190620090f6565b90508162ffffff16858481518110620052a757620052a762008efe565b6020908102919091010152620052c7818a670de0b6b3a764000062006be0565b848481518110620052dc57620052dc62008efe565b602002602001018181525050505080620052f690620091ca565b9050620051f6565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b1580156200535057600080fd5b505af115801562005365573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200539d908d908d908790879060040162008f66565b6000604051808303816000875af1158015620053bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620053e7919081019062009081565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620054f157601c546040516000805160206201c4558339815191529163b4d6c782916001600160a01b03909116906200545a9062008992565b604051809103906000f08015801562005477573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620054bc9291906200944b565b600060405180830381600087803b158015620054d757600080fd5b505af1158015620054ec573d6000803e3d6000fd5b505050505b60066040516200550190620089a0565b60ff9091168152602001604051809103906000f08015801562005528573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200555a90620089a0565b60ff9091168152602001604051809103906000f08015801562005581573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051600890620055b390620089a0565b60ff9091168152602001604051809103906000f080158015620055da573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200560c90620089a0565b60ff9091168152602001604051809103906000f08015801562005633573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516012906200566590620089a0565b60ff9091168152602001604051809103906000f0801580156200568c573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b0392909216919091179055604051601290620056be90620089a0565b60ff9091168152602001604051809103906000f080158015620056e5573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200571490620089ae565b604051809103906000f08015801562005731573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201c4558339815191529063c657c71890608401600060405180830381600087803b158015620057d257600080fd5b505af1158015620057e7573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200585f57600080fd5b505af115801562005874573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b158015620058ec57600080fd5b505af115801562005901573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200597957600080fd5b505af11580156200598e573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005a0657600080fd5b505af115801562005a1b573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005a9357600080fd5b505af115801562005aa8573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005b1a57600080fd5b505af115801562005b2f573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005bbb57600080fd5b505af115801562005bd0573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062005c5790620089bc565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562005c92573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162005cc090620089ca565b6001600160a01b039091168152602001604051809103906000f08015801562005ced573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562005d4c57600080fd5b505af115801562005d61573d6000803e3d6000fd5b5050505062005d6f62006c0e565b62005d7b600a62006fb3565b602454602b54601c546040516001600160a01b0393841693928316929091169062005da690620089d8565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005de3573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062005e1e90620089e6565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005e5b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201c4558339815191529063c657c71890608401600060405180830381600087803b15801562005efc57600080fd5b505af115801562005f11573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005f9d57600080fd5b505af115801562005fb2573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200604157600080fd5b505af115801562006056573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b158015620060e257600080fd5b505af1158015620060f7573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200618357600080fd5b505af115801562006198573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200622457600080fd5b505af115801562006239573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562006294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062ba9190620093aa565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006312573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063389190620093aa565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063b69190620093aa565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200640e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620064349190620093aa565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200648c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620064b29190620093aa565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200650a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065309190620093aa565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006588573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065ae9190620093aa565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006606573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200662c9190620093aa565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006684573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066aa9190620093aa565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006702573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067289190620093aa565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006780573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067a69190620093aa565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620067fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620068249190620093aa565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200687c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620068a29190620093aa565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620068fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069209190620093aa565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006978573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200699e9190620093aa565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620069f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a1c9190620093aa565b50565b600062006a30848484600a6200705a565b949350505050565b6040516388b44c8560e01b81526000805160206201c455833981519152906388b44c859062006a70908690869086906004016200946f565b60006040518083038186803b15801562006a8957600080fd5b505afa1580156200224b573d6000803e3d6000fd5b604051631ecb7d3360e01b81526000805160206201c45583398151915290631ecb7d339062006ad890879087908790879060040162009490565b60006040518083038186803b15801562006af157600080fd5b505afa15801562002be0573d6000803e3d6000fd5b604051636cd1e26960e11b81526000805160206201c4558339815191529063d9a3c4d29062006a70908690869086906004016200946f565b8062ffffff8116811462006b6557604051639b63641560e01b815260040160405180910390fd5b919050565b620006918383836000620070f0565b8067ffffffffffffffff8116811462006b655760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff8216811762006a30565b600080600062006bf18686620072eb565b9150915062006c0486868685856200730a565b9695505050505050565b601c546001600160a01b03161562006c835760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006c6957600080fd5b505af115801562006c7e573d6000803e3d6000fd5b505050505b601d546001600160a01b03161562006cf85760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006cde57600080fd5b505af115801562006cf3573d6000803e3d6000fd5b505050505b601e546001600160a01b03161562006d6d5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006d5357600080fd5b505af115801562006d68573d6000803e3d6000fd5b505050505b601f546001600160a01b03161562006de25760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006dc857600080fd5b505af115801562006ddd573d6000803e3d6000fd5b505050505b6022546001600160a01b03161562006e575760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006e3d57600080fd5b505af115801562006e52573d6000803e3d6000fd5b505050505b6020546001600160a01b03161562006ecc5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006eb257600080fd5b505af115801562006ec7573d6000803e3d6000fd5b505050505b6021546001600160a01b03161562006f415760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006f2757600080fd5b505af115801562006f3c573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562006fb15760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006f9c57600080fd5b505af115801562002f1f573d6000803e3d6000fd5b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200703e57600080fd5b505af115801562007053573d6000803e3d6000fd5b5050505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af1158015620070ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d16919062009379565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200714691620094b7565b600060405180830381855afa9150503d806000811462007183576040519150601f19603f3d011682016040523d82523d6000602084013e62007188565b606091505b50915050600081806020019051810190620071a49190620090f6565b9050620071de84620071d787620071d06370a0823160e01b620071c9600c8d620073bc565b90620073e4565b9062007402565b906200742b565b8215620011645760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620072299190620094b7565b600060405180830381855afa9150503d806000811462007266576040519150601f19603f3d011682016040523d82523d6000602084013e6200726b565b606091505b50915050600081806020019051810190620072879190620090f6565b905082861015620072b2576200729e86846200916d565b620072aa90826200916d565b9050620072cd565b620072be83876200916d565b620072ca90826200927c565b90505b62002be081620071d76318160ddd60e01b620071c9600c8d620073bc565b6000806000198385098385029250828110838203039150509250929050565b600081600003620073305783838162007327576200732762009110565b04905062002d16565b83821062007351576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c179055600082620073dd565b6002820180546001810182556000918252602082206001600160a01b03841691015582620073dd565b6200743782826200743b565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b9460009390929091830182828015620074ae57602002820191906000526020600020905b81548152602001906001019080831162007499575b50505050509050600083620074c38362007848565b604051602001620074d6929190620094d5565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200752a91869188910162009508565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007565576200756387620078fc565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620075a691879189910162009508565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620075ed9190620094b7565b600060405180830381855afa9150503d80600081146200762a576040519150601f19603f3d011682016040523d82523d6000602084013e6200762f565b606091505b5091506200764c9050816200764688602062009153565b62007909565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201c4558339815191529063667f9d7090604401602060405180830381865afa158015620076ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076d49190620090f6565b90508082146200778b5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005144565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201c455833981519152906370ca10bb90606401600060405180830381600087803b158015620077ea57600080fd5b505af1158015620077ff573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200783460028b016000620089f4565b896004016000905550505050505050505050565b60606000825160206200785c919062009153565b67ffffffffffffffff81111562007877576200787762008ee8565b6040519080825280601f01601f191660200182016040528015620078a2576020820181803683370190505b50905060005b8351811015620078f5576000848281518110620078c957620078c962008efe565b602002602001015190508082602002602001840152508080620078ec90620091ca565b915050620078a8565b5092915050565b60006200189982620079ab565b600080600060208551116200792057845162007923565b60205b905060005b81811015620079a1576200793e81600862009153565b866200794b83886200927c565b815181106200795e576200795e62008efe565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200799881620091ca565b91505062007928565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562007a1d57602002820191906000526020600020905b81548152602001906001019080831162007a08575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062007a699250859187910162009508565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562007b08576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162007ad891859187910162009508565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362007b16836200884d565b60405160200162007b29929190620094d5565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007b9957600080fd5b505af115801562007bae573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162007bcf9190620094b7565b600060405180830381855afa9150503d806000811462007c0c576040519150601f19603f3d011682016040523d82523d6000602084013e62007c11565b606091505b50915062007c2e90508162007c2887602062009153565b620088fa565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201c455833981519152906365bc9481906024016000604051808303816000875af115801562007c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007cb5919081019062009544565b5090508051600103620080595760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062007d0d5762007d0d62008efe565b60200260200101516040518363ffffffff1660e01b815260040162007d479291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007d65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007d8b9190620090f6565b90508062007df6577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062007dcb5762007dcb62008efe565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462007eab5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005144565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162007ee392919062009508565b604051602081830303815290604052805190602001208560008151811062007f0f5762007f0f62008efe565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062007f695762007f6962008efe565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007fb4918a918c910162009508565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200801e918a918c910162009508565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff191691151591909117905550620086c2565b600181511115620086515760005b81518110156200864a5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620080bb57620080bb62008efe565b60200260200101516040518363ffffffff1660e01b8152600401620080f59291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620081399190620090f6565b905080620081a3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062008178576200817862008efe565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620081b2575062008635565b82518119906000805160206201c455833981519152906370ca10bb908c90879087908110620081e557620081e562008efe565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200823e57600080fd5b505af115801562008253573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620082759190620094b7565b600060405180830381855afa9150503d8060008114620082b2576040519150601f19603f3d011682016040523d82523d6000602084013e620082b7565b606091505b509092509050620082cf8162007c288c602062009153565b965050808015620082df57508186145b1562008577577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200831d92919062009508565b6040516020818303038152906040528051906020012088888151811062008348576200834862008efe565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1848481518110620083a157620083a162008efe565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620083ec918d918f910162009508565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200847992919062009508565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620084fc57620084fc62008efe565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200855557600080fd5b505af11580156200856a573d6000803e3d6000fd5b505050505050506200864a565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620085bf57620085bf62008efe565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200861857600080fd5b505af11580156200862d573d6000803e3d6000fd5b505050505050505b806200864181620091ca565b91505062008067565b50620086c2565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162005144565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620087069188918a910162009508565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620087a35760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162005144565b6005890180546001600160a01b031916905560038901805463ffffffff19169055620087d460028a016000620089f4565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200881a9188918a910162009508565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062008861919062009153565b67ffffffffffffffff8111156200887c576200887c62008ee8565b6040519080825280601f01601f191660200182016040528015620088a7576020820181803683370190505b50905060005b8351811015620078f5576000848281518110620088ce57620088ce62008efe565b602002602001015190508082602002602001840152508080620088f190620091ca565b915050620088ad565b600080600060208551116200891157845162008914565b60205b905060005b81811015620079a1576200892f81600862009153565b866200893c83886200927c565b815181106200894f576200894f62008efe565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200898981620091ca565b91505062008919565b610b0880620095b083390190565b610bfd806200a0b883390190565b610c18806200acb583390190565b613199806200b8cd83390190565b61615c806200ea6683390190565b614c808062014bc283390190565b612c13806201984283390190565b508054600082559060005260206000209081019062006a1c91905b8082111562008a25576000815560010162008a0f565b5090565b60006020828403121562008a3c57600080fd5b81356001600160e01b031981168114620073dd57600080fd5b6020808252825182820181905260009190848201906040850190845b8181101562008a985783516001600160a01b03168352928401929184019160010162008a71565b50909695505050505050565b60005b8381101562008ac157818101518382015260200162008aa7565b50506000910152565b6000815180845262008ae481602086016020860162008aa4565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562008bae57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562008b9757605f1989850301835262008b8484865162008aca565b948e01949350918d019160010162008b65565b505050978a01979450509188019160010162008b1f565b50919a9950505050505050505050565b803560ff8116811462006b6557600080fd5b6000806040838503121562008be457600080fd5b62008bef8362008bbe565b915062008bff6020840162008bbe565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008cb057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562008c9a5783516001600160e01b0319168252928b019260019290920191908b019062008c6e565b50978a0197955050509187019160010162008c30565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008d1857603f1988860301845262008d0585835162008aca565b9450928501929085019060010162008ce6565b5092979650505050505050565b62ffffff8116811462006a1c57600080fd5b60008060006060848603121562008d4d57600080fd5b833562008d5a8162008d25565b92506020840135915062008d716040850162008bbe565b90509250925092565b6001600160a01b038116811462006a1c57600080fd5b600080600080600080600080610100898b03121562008dae57600080fd5b883562008dbb8162008d7a565b9750602089013562008dcd8162008d7a565b9650604089013562008ddf8162008d7a565b9550606089013562008df18162008d25565b94506080890135935060a0890135925062008e0f60c08a0162008bbe565b915062008e1f60e08a0162008bbe565b90509295985092959890939650565b60006020828403121562008e4157600080fd5b813561ffff81168114620073dd57600080fd5b600080600080600080600060e0888a03121562008e7057600080fd5b873562008e7d8162008d7a565b9650602088013562008e8f8162008d7a565b9550604088013562008ea18162008d7a565b9450606088013562008eb38162008d25565b93506080880135925062008eca60a0890162008bbe565b915062008eda60c0890162008bbe565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b602081526000620073dd602083018462008aca565b600081518084526020808501945080840160005b8381101562008f5b5781518752958201959082019060010162008f3d565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262008f94608083018562008f29565b828103606084015262008fa8818562008f29565b979650505050505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171562008fdf5762008fdf62008ee8565b604052919050565b600067ffffffffffffffff82111562009004576200900462008ee8565b5060051b60200190565b600082601f8301126200902057600080fd5b8151602062009039620090338362008fe7565b62008fb3565b82815260059290921b840181019181810190868411156200905957600080fd5b8286015b848110156200907657805183529183019183016200905d565b509695505050505050565b6000602082840312156200909457600080fd5b815167ffffffffffffffff811115620090ac57600080fd5b62006a30848285016200900e565b600181811c90821680620090cf57607f821691505b602082108103620090f057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200910957600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826200914e576200914e62009110565b500490565b808202811582820484141762001899576200189962009126565b8181038181111562001899576200189962009126565b80516001600160801b038116811462006b6557600080fd5b60008060408385031215620091af57600080fd5b620091ba8362009183565b915062008bff6020840162009183565b600060018201620091df57620091df62009126565b5060010190565b60ff818116838216019081111562001899576200189962009126565b60ff828116828216039081111562001899576200189962009126565b62ffffff828116828216039080821115620078f557620078f562009126565b62ffffff818116838216019080821115620078f557620078f562009126565b6000602082840312156200926f57600080fd5b8151620073dd8162008d25565b8082018082111562001899576200189962009126565b60006001600160a01b03808616835260606020840152620092b7606084018662008f29565b9150808416604084015250949350505050565b600080600060608486031215620092e057600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200930757600080fd5b8501601f810187136200931957600080fd5b80516200932a620090338262008fe7565b81815260059190911b820183019083810190898311156200934a57600080fd5b928401925b828410156200936a578351825292840192908401906200934f565b80955050505050509250925092565b6000602082840312156200938c57600080fd5b8151620073dd8162008d7a565b8051801515811462006b6557600080fd5b600060208284031215620093bd57600080fd5b620073dd8262009399565b600080600080600080600080610100898b031215620093e657600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062008e1f60e08a0162009399565b60006001600160801b03808416806200943f576200943f62009110565b92169190910492915050565b6001600160a01b038316815260406020820152600062006a30604083018462008aca565b83815282602082015260606040820152600062002d16606083018462008aca565b84815283602082015282604082015260806060820152600062006c04608083018462008aca565b60008251620094cb81846020870162008aa4565b9190910192915050565b6001600160e01b0319831681528151600090620094fa81600485016020870162008aa4565b919091016004019392505050565b825160009082906020808701845b83811015620095345781518552938201939082019060010162009516565b5050948252509092019392505050565b600080604083850312156200955857600080fd5b825167ffffffffffffffff808211156200957157600080fd5b6200957f868387016200900e565b935060208501519150808211156200959657600080fd5b50620095a5858286016200900e565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212200963a7d316d7764a77f0bc3f18b35f6afc647355bb7d8a53e3ee1df2c958a8a364736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;95:12381:88;1812:17:93;;95:12381:88;1812:17:93;;;-1:-1:-1;;;1812:17:93;;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;245:14:88;254:5;992:7:93;245:14:88;:::i;:::-;217:42;;;;95:12381;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;984:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;957:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:270:105:-;82:8;123:10;;;111;;;107:27;;146:12;;;143:135;;;200:10;195:3;191:20;188:1;181:31;235:4;232:1;225:15;263:4;260:1;253:15;289:250;374:1;384:113;398:6;395:1;392:13;384:113;;;474:11;;;468:18;455:11;;;448:39;420:2;413:10;384:113;;;-1:-1:-1;;531:1:105;513:16;;506:27;289:250::o;544:289::-;675:3;713:6;707:13;729:66;788:6;783:3;776:4;768:6;764:17;729:66;:::i;:::-;811:16;;;;;544:289;-1:-1:-1;;544:289:105:o;1020:290::-;1090:6;1143:2;1131:9;1122:7;1118:23;1114:32;1111:52;;;1159:1;1156;1149:12;1111:52;1185:16;;-1:-1:-1;;;;;1230:31:105;;1220:42;;1210:70;;1276:1;1273;1266:12;1210:70;1299:5;1020:290;-1:-1:-1;;;1020:290:105:o;1315:493::-;1521:1;1517;1512:3;1508:11;1504:19;1496:6;1492:32;1481:9;1474:51;1561:2;1556;1545:9;1541:18;1534:30;1455:4;1593:6;1587:13;1636:6;1631:2;1620:9;1616:18;1609:34;1652:79;1724:6;1719:2;1708:9;1704:18;1699:2;1691:6;1687:15;1652:79;:::i;:::-;1792:2;1771:15;-1:-1:-1;;1767:29:105;1752:45;;;;1799:2;1748:54;;1315:493;-1:-1:-1;;;1315:493:105:o;:::-;95:12381:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002015760003560e01c8063889be5b71162000119578063b61f5e5c11620000af578063cc6bb8c1116200007a578063cc6bb8c114620003d2578063e20c9f7114620003dc578063f8df23b614620003e6578063fecaa22314620003f057600080fd5b8063b61f5e5c146200039d578063b89e023314620003a7578063ba414fa614620003be578063c8b0266214620003c857600080fd5b8063a7aa85e911620000f0578063a7aa85e91462000368578063b0e6b725146200037f578063b5508aa91462000389578063b579ea47146200039357600080fd5b8063889be5b71462000328578063916a17c61462000354578063a3c26b2a146200035e57600080fd5b8063402eeb1f116200019b5780636387c30e11620001665780636387c30e14620002e257806366d9a9a014620002ec5780637428239e146200030557806385226c81146200030f57600080fd5b8063402eeb1f146200029e57806343024c0e14620002a857806349789ef914620002b25780634a432f9214620002d857600080fd5b80631ed7831c11620001dc5780631ed7831c14620002585780632ade388014620002715780633e5e3c23146200028a5780633f7286f4146200029457600080fd5b806301ffc9a714620002065780630a9254e4146200024257806312d2b157146200024e575b600080fd5b6200022d6200021736600462008a29565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b6200024c62000407565b005b6200024c62000472565b6200026262000696565b60405162000239919062008a55565b6200027b620006fa565b60405162000239919062008af8565b6200026262000848565b62000262620008aa565b6200024c6200090c565b6200024c6200116c565b620002c9620002c336600462008bd0565b6200184a565b60405190815260200162000239565b6200024c6200189f565b6200024c62001cb3565b620002f662002254565b60405162000239919062008c08565b6200024c6200233e565b6200031962002bea565b60405162000239919062008cbf565b6200033f6200033936600462008d37565b62002cc4565b60405162ffffff909116815260200162000239565b620002f662002d1f565b6200024c62002e09565b6200024c6200037936600462008d90565b62002f25565b6200024c620033c6565b6200031962003b45565b6200024c62003c1f565b6200024c62003d8f565b6200022d620003b836600462008e2e565b62003e9f565b6200022d62003f22565b6200024c62003fdc565b6200024c62004a57565b6200026262004d6a565b6200024c62004dcc565b6200024c6200040136600462008e54565b620050ef565b62000411620053f4565b601c54601d5462000450916001600160a01b0390811691167f000000000000000000000000000000000000000000000000000000000000000062006a1f565b602780546001600160a01b0319166001600160a01b0392909216919091179055565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff1682600081518110620004f357620004f362008efe565b60200260200101818152505060008160008151811062000517576200051762008efe565b602090810291909101015260405162ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526000805160206201c4558339815191529063f28dceb390636996a92560e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620005bb9160040162008f14565b600060405180830381600087803b158015620005d657600080fd5b505af1158015620005eb573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062000647907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562000667573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000691919081019062009081565b505050565b60606014805480602002602001604051908101604052809291908181526020018280548015620006f057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006d1575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200083f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620008275783829060005260206000200180546200079390620090ba565b80601f0160208091040260200160405190810160405280929190818152602001828054620007c190620090ba565b8015620008125780601f10620007e65761010080835404028352916020019162000812565b820191906000526020600020905b815481529060010190602001808311620007f457829003601f168201915b50505050508152602001906001019062000771565b5050505081525050815260200190600101906200071e565b50505050905090565b60606016805480602002602001604051908101604052809291908181526020018280548015620006f0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006d1575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620006f0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006d1575050505050905090565b60275468056bc75e2d63100000906377359400906006908190620009a2907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000abb9216906370a0823190602401602060405180830381865afa15801562000a10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a369190620090f6565b60ff8416670de0b6b3a764000062000a4f82826200913c565b62000a5b908962009153565b62000a6791906200913c565b62000a73919062009153565b62000a7f90876200916d565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a31000000000000000000000000000081525062006a38565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bd49216906370a0823190602401602060405180830381865afa15801562000b29573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b4f9190620090f6565b60ff8316670de0b6b3a764000062000b6882826200913c565b62000b74908862009153565b62000b8091906200913c565b62000b8c919062009153565b62000b9890866200916d565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a32000000000000000000000000000081525062006a38565b600062000be283836200184a565b905060005b818110156200116457600062000c1f7f0000000000000000000000000000000000000000000000000000000000000000838662002cc4565b602754604051630157d2d160e31b815262ffffff8316600482015291925060009182916001600160a01b031690630abe9688906024016040805180830381865afa15801562000c72573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c9891906200919b565b915091507f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff16101562000d9b5762000d1b826001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a33000000000000000000000000000081525062006a38565b62000d956001600160801b038216670de0b6b3a764000062000d4160ff8a16826200913c565b62000d4d908c62009153565b62000d5991906200913c565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a34000000000000000000000000000081525062006a38565b62000f97565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff160362000ed15762000e4f6001600160801b038316670de0b6b3a764000062000df360ff8b16826200913c565b62000dff908d62009153565b62000e0b91906200913c565b66038d7ea4c680006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a35000000000000000000000000000081525062006a9e565b62000d956001600160801b038216670de0b6b3a764000062000e7560ff8a16826200913c565b62000e81908c62009153565b62000e8d91906200913c565b66038d7ea4c680006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a36000000000000000000000000000081525062006a9e565b62000f4b6001600160801b038316670de0b6b3a764000062000ef760ff8b16826200913c565b62000f03908d62009153565b62000f0f91906200913c565b6040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a37000000000000000000000000000081525062006a38565b62000f97816001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a38000000000000000000000000000081525062006a38565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff861660248301526200107292169062fdd58e90604401602060405180830381865afa1580156200100e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010349190620090f6565b60006040518060400160405280601281526020017f746573745f53696d706c654d696e743a3a39000000000000000000000000000081525062006b06565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff861660248301526200114d92169062fdd58e90604401602060405180830381865afa158015620010e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200110f9190620090f6565b60006040518060400160405280601381526020017f746573745f53696d706c654d696e743a3a31300000000000000000000000000081525062006a38565b505050806200115c90620091ca565b905062000be7565b505050505050565b60275468056bc75e2d6310000090637735940090600690819062001202907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b60006200121083836200184a565b905060008167ffffffffffffffff81111562001230576200123062008ee8565b6040519080825280602002602001820160405280156200125a578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200127b576200127b62008ee8565b604051908082528060200260200182016040528015620012a5578160200160208202803683370190505b50905060005b83811015620013d9576000620012e37f0000000000000000000000000000000000000000000000000000000000000000838862002cc4565b90508062ffffff1683838151811062001300576200130062008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff841660248301529091169062fdd58e90604401602060405180830381865afa1580156200137f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a59190620090f6565b848381518110620013ba57620013ba62008efe565b602090810291909101015250620013d181620091ca565b9050620012ab565b5060275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa15801562001425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200144b91906200919b565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015291935091506000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620014c157600080fd5b505af1158015620014d6573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062001532907f000000000000000000000000000000000000000000000000000000000000000090819088908a9060040162008f66565b6000604051808303816000875af115801562001552573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200157c919081019062009081565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620016579216906370a0823190602401602060405180830381865afa158015620015eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016119190620090f6565b836001600160801b03166040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a31000000000000000000000000000081525062006a38565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620017319216906370a0823190602401602060405180830381865afa158015620016c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016eb9190620090f6565b826001600160801b03166040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a32000000000000000000000000000081525062006a38565b60275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562001779573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200179f91906200919b565b8092508193505050620017f3826001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a33000000000000000000000000000081525062006a38565b6200183f816001600160801b031660006040518060400160405280601281526020017f746573745f53696d706c654275726e3a3a34000000000000000000000000000081525062006a38565b505050505050505050565b6000808360ff1611801562001862575060008260ff16115b6200187957620018738284620091e6565b62001893565b6001620018878385620091e6565b62001893919062009202565b60ff1690505b92915050565b6040805160008082526001602080840182815260608501865293949293928501908036833701905050604051630618f58760e51b8152633ab7870760e01b60048201529091506000805160206201c4558339815191529063c31eb0e090602401600060405180830381600087803b1580156200191a57600080fd5b505af11580156200192f573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e91506200198b907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af1158015620019ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019d5919081019062009081565b506040805160018082528183019092529060208083019080368337019050506040805160008082526020820190925291935050604051630618f58760e51b8152633ab7870760e01b60048201529091506000805160206201c4558339815191529063c31eb0e090602401600060405180830381600087803b15801562001a5a57600080fd5b505af115801562001a6f573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062001acb907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562001aeb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b15919081019062009081565b505060408051600080825260208201818152828401808552630618f58760e51b9052633ab7870760e01b604484015292519193506000805160206201c4558339815191529163c31eb0e0916064808701929081880301818387803b15801562001b7d57600080fd5b505af115801562001b92573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062001bee907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562001c0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c38919081019062009081565b50604080516001808252818301909252906020808301908036833750506040805160028082526060820183529395509291506020830190803683375050604051630618f58760e51b8152633ab7870760e01b60048201529192506000805160206201c4558339815191529163c31eb0e09150602401620005bb565b60275468056bc75e2d6310000090637735940090600690819062001d49907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b600062001d5783836200184a565b905060008167ffffffffffffffff81111562001d775762001d7762008ee8565b60405190808252806020026020018201604052801562001da1578160200160208202803683370190505b50905060005b8281101562001eaf57600062001ddf7f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff8416602483015292935091169062fdd58e90604401602060405180830381865afa15801562001e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7b9190620090f6565b83838151811062001e905762001e9062008efe565b60209081029190910101525062001ea781620091ca565b905062001da7565b5060275462001f31907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008a8a8a600062002f25565b60275462001fb2907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008a8a60008a62002f25565b60005b828110156200224b57600062001fed7f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b90507f000000000000000000000000000000000000000000000000000000000000000062ffffff168162ffffff16036200213357602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff841660248301526200212d92169062fdd58e90604401602060405180830381865afa15801562002098573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020be9190620090f6565b848481518110620020d357620020d362008efe565b60200260200101516002620020e9919062009153565b66038d7ea4c680006040518060400160405280601d81526020017f746573745f4d696e7457697468446966666572656e7442696e733a3a3100000081525062006a9e565b62002237565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff841660248301526200223792169062fdd58e90604401602060405180830381865afa158015620021aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021d09190620090f6565b848481518110620021e557620021e562008efe565b60200260200101516002620021fb919062009153565b6040518060400160405280601d81526020017f746573745f4d696e7457697468446966666572656e7442696e733a3a3200000081525062006a38565b506200224381620091ca565b905062001fb5565b50505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200083f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200232557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620022e65790505b5050505050815250508152602001906001019062002278565b6027546006908190620023d0907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000068056bc75e2d631000006377359400878062002f25565b60006200240160ff83167f00000000000000000000000000000000000000000000000000000000000000006200921e565b6200240e9060016200923d565b9050600060016200244360ff86167f00000000000000000000000000000000000000000000000000000000000000006200923d565b6200244f91906200921e565b60275460405163a41a01fb60e01b8152600060048201819052602482018190529293506001600160a01b039091169063a41a01fb90604401602060405180830381865afa158015620024a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024cb91906200925c565b9050620025198162ffffff168462ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3100000000000081525062006a38565b60006200252786866200184a565b905060005b620025396001836200916d565b811015620026375760275460405163a41a01fb60e01b81526000600482015262ffffff851660248201526001600160a01b039091169063a41a01fb90604401602060405180830381865afa15801562002596573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025bc91906200925c565b9250620026248362ffffff16828762ffffff16620025db91906200927c565b620025e89060016200927c565b6040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3200000000000081525062006a38565b6200262f81620091ca565b90506200252c565b5060275460405163a41a01fb60e01b81526001600482015262ffffff60248201526001600160a01b039091169063a41a01fb90604401602060405180830381865afa1580156200268b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026b191906200925c565b9150620026ff8262ffffff168462ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3300000000000081525062006a38565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff168260008151811062002780576200278062008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000062ffffff1660248301529091169062fdd58e90604401602060405180830381865afa1580156200281f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028459190620090f6565b816000815181106200285b576200285b62008efe565b602090810291909101015260405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620028d757600080fd5b505af1158015620028ec573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062002948907f00000000000000000000000000000000000000000000000000000000000000009081908790879060040162008f66565b6000604051808303816000875af115801562002968573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002992919081019062009081565b506027546001600160a01b031663a41a01fb6000620029d360017f00000000000000000000000000000000000000000000000000000000000000006200921e565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562002a1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a4091906200925c565b935062002aba62ffffff851662002a797f000000000000000000000000000000000000000000000000000000000000000060016200923d565b62ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3400000000000081525062006a38565b6027546001600160a01b031663a41a01fb600162002af97f0000000000000000000000000000000000000000000000000000000000000000826200923d565b6040516001600160e01b031960e085901b168152911515600483015262ffffff166024820152604401602060405180830381865afa15801562002b40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b6691906200925c565b935062002be062ffffff851662002b9f60017f00000000000000000000000000000000000000000000000000000000000000006200921e565b62ffffff166040518060400160405280601a81526020017f746573745f4765744e6578744e6f6e456d70747942696e3a3a3500000000000081525062006a38565b5050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156200083f57838290600052602060002001805462002c3090620090ba565b80601f016020809104026020016040519081016040528092919081815260200182805462002c5e90620090ba565b801562002caf5780601f1062002c835761010080835404028352916020019162002caf565b820191906000526020600020905b81548152906001019060200180831162002c9157829003601f168201915b50505050508152602001906001019062002c0e565b60008062002cd88462ffffff87166200927c565b905060008360ff161162002ced578062002d09565b62002cfc60ff8416826200916d565b62002d099060016200927c565b905062002d168162006b3e565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200083f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002df057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002db15790505b5050505050815250508152602001906001019062002d43565b60408051600081526020810191829052630618f58760e51b90915263296db0d960e01b60248201526000805160206201c45583398151915263c31eb0e0604483015b600060405180830381600087803b15801562002e6657600080fd5b505af115801562002e7b573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062002ed5907f0000000000000000000000000000000000000000000000000000000000000000908590829060040162009292565b6000604051808303816000875af115801562002ef5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f1f9190810190620092ca565b50505050565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002f66573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8c919062009379565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002fcf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ff5919062009379565b905062003004828b8862006b6a565b62003011818b8762006b6a565b60006200301f85856200184a565b905060008167ffffffffffffffff8111156200303f576200303f62008ee8565b60405190808252806020026020018201604052801562003069578160200160208202803683370190505b50905060005b8281101562003168576000620030878b838962002cc4565b905060008b62ffffff168262ffffff1610158015620030a9575060008960ff16115b620030b6576000620030d7565b620030d7620030d160ff8b16670de0b6b3a76400006200913c565b62006b79565b905060008c62ffffff168362ffffff1611158015620030f9575060008960ff16115b6200310657600062003121565b62003121620030d160ff8b16670de0b6b3a76400006200913c565b90506200313082828562006ba5565b85858151811062003145576200314562008efe565b602002602001018181525050505050806200316090620091ca565b90506200306f565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201c455833981519152906306447d5690602401600060405180830381600087803b158015620031ba57600080fd5b505af1158015620031cf573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562003223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032499190620093aa565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af11580156200329a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032c09190620093aa565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200332057600080fd5b505af115801562003335573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b81526004016200336b9392919062009292565b6000604051808303816000875af11580156200338b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033b59190810190620092ca565b505050505050505050505050505050565b60275468056bc75e2d631000009063773594009060069081906200345c907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b60006200346a83836200184a565b905060008167ffffffffffffffff8111156200348a576200348a62008ee8565b604051908082528060200260200182016040528015620034b4578160200160208202803683370190505b50905060005b82811015620035c2576000620034f27f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff8416602483015292935091169062fdd58e90604401602060405180830381865afa15801562003568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200358e9190620090f6565b838381518110620035a357620035a362008efe565b602090810291909101015250620035ba81620091ca565b9050620034ba565b5060275462003643907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008a8a8a8a62002f25565b60005b828110156200224b5760006200367e7f0000000000000000000000000000000000000000000000000000000000000000838762002cc4565b602754604051630157d2d160e31b815262ffffff8316600482015291925060009182916001600160a01b031690630abe9688906024016040805180830381865afa158015620036d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f791906200919b565b915091507f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff16101562003807576200377a826001600160801b031660006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3100000000000000000000000000000081525062006a38565b620038016001600160801b038216670de0b6b3a7640000620037a060ff8b16826200913c565b620037ac908d62009153565b620037b891906200913c565b620037c590600262009153565b6040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3200000000000000000000000000000081525062006a38565b62003a2a565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff168362ffffff16036200395757620038c86001600160801b038316670de0b6b3a76400006200385f60ff8c16826200913c565b6200386b908e62009153565b6200387791906200913c565b6200388490600262009153565b66038d7ea4c680006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3300000000000000000000000000000081525062006a9e565b620038016001600160801b038216670de0b6b3a7640000620038ee60ff8b16826200913c565b620038fa908d62009153565b6200390691906200913c565b6200391390600262009153565b66038d7ea4c680006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3400000000000000000000000000000081525062006a9e565b620039de6001600160801b038316670de0b6b3a76400006200397d60ff8c16826200913c565b62003989908e62009153565b6200399591906200913c565b620039a290600262009153565b6040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3500000000000000000000000000000081525062006a38565b62003a2a816001600160801b031660006040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3600000000000000000000000000000081525062006a38565b602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff8616602483015262003b2e92169062fdd58e90604401602060405180830381865afa15801562003aa1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ac79190620090f6565b86868151811062003adc5762003adc62008efe565b6020026020010151600262003af2919062009153565b6040518060400160405280601181526020017f746573745f4d696e7454776963653a3a3700000000000000000000000000000081525062006a38565b5050508062003b3d90620091ca565b905062003646565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156200083f57838290600052602060002001805462003b8b90620090ba565b80601f016020809104026020016040519081016040528092919081815260200182805462003bb990620090ba565b801562003c0a5780601f1062003bde5761010080835404028352916020019162003c0a565b820191906000526020600020905b81548152906001019060200180831162003bec57829003601f168201915b50505050508152602001906001019062003b69565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff168260008151811062003ca05762003ca062008efe565b60200260200101818152505060018160008151811062003cc45762003cc462008efe565b602090810291909101015260275462003d38907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a76400008060018062002f25565b60405162ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526000805160206201c4558339815191529063f28dceb39063fd44792960e01b9060440162000574565b6040805160018082528183019092526000916020808301908036833701905050905062003de6670de0b6b3a7640000807f000000000000000000000000000000000000000000000000000000000000000062006ba5565b8160008151811062003dfc5762003dfc62008efe565b602090810291909101015260405162ffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201526000805160206201c4558339815191529063f28dceb390634c98d35760e11b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002e4b9160040162008f14565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562003eef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f159190620093c8565b9998505050505050505050565b60075460009060ff161562003f3b575060075460ff1690565b604051630667f9d760e41b81526000805160206201c455833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562003faf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fd59190620090f6565b1415905090565b60275468056bc75e2d6310000090637735940090600690819062004072907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008888878062002f25565b60006200408083836200184a565b905060008167ffffffffffffffff811115620040a057620040a062008ee8565b604051908082528060200260200182016040528015620040ca578160200160208202803683370190505b50905060008267ffffffffffffffff811115620040eb57620040eb62008ee8565b60405190808252806020026020018201604052801562004115578160200160208202803683370190505b50905060008367ffffffffffffffff81111562004136576200413662008ee8565b60405190808252806020026020018201604052801562004160578160200160208202803683370190505b50905060005b84811015620042e05760006200419e7f0000000000000000000000000000000000000000000000000000000000000000838962002cc4565b90508062ffffff16838381518110620041bb57620041bb62008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262ffffff84166024830152600092169062fdd58e90604401602060405180830381865afa1580156200423b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042619190620090f6565b9050620042706002826200913c565b86848151811062004285576200428562008efe565b60209081029190910101526200429d6002826200913c565b620042a990826200916d565b858481518110620042be57620042be62008efe565b602002602001018181525050505080620042d890620091ca565b905062004166565b5060275460408051630240bc6b60e21b8152815160009384936001600160a01b0390911692630902f1ac92600480830193928290030181865afa1580156200432c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200435291906200919b565b60405163ca669fa760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015291935091506000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620043c857600080fd5b505af1158015620043dd573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e915062004439907f000000000000000000000000000000000000000000000000000000000000000090819088908b9060040162008f66565b6000604051808303816000875af115801562004459573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004483919081019062009081565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620045709216906370a0823190602401602060405180830381865afa158015620044f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045189190620090f6565b6200452560028562009422565b6001600160801b03166402540be4006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a31000000000000000000000081525062006a9e565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200465c9216906370a0823190602401602060405180830381865afa158015620045de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046049190620090f6565b6200461160028462009422565b6001600160801b03166402540be4006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a32000000000000000000000081525062006a9e565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b158015620046cd57600080fd5b505af1158015620046e2573d6000803e3d6000fd5b50506027546040516364c9cfaf60e11b81526001600160a01b03909116925063c9939f5e91506200473e907f000000000000000000000000000000000000000000000000000000000000000090819088908a9060040162008f66565b6000604051808303816000875af11580156200475e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004788919081019062009081565b50601c546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620048639216906370a0823190602401602060405180830381865afa158015620047f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200481d9190620090f6565b836001600160801b03166040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a33000000000000000000000081525062006a38565b601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200493d9216906370a0823190602401602060405180830381865afa158015620048d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620048f79190620090f6565b826001600160801b03166040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a34000000000000000000000081525062006a38565b60275460408051630240bc6b60e21b815281516001600160a01b0390931692630902f1ac926004808401939192918290030181865afa15801562004985573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049ab91906200919b565b8092508193505050620049ff826001600160801b031660006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a35000000000000000000000081525062006a38565b62004a4b816001600160801b031660006040518060400160405280601581526020017f746573745f4275726e48616c6654776963653a3a36000000000000000000000081525062006a38565b50505050505050505050565b60275462004ac1907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000806001600062002f25565b60275462004b2b907f00000000000000000000000000000000000000000000000000000000000000009081906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000806001600062002f25565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000062ffffff168260008151811062004bac5762004bac62008efe565b6020908102919091010152602754604051627eeac760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000062ffffff1660248301529091169062fdd58e90604401602060405180830381865afa15801562004c4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c719190620090f6565b62004c7e9060016200927c565b8160008151811062004c945762004c9462008efe565b6020026020010181815250507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f28dceb36302d9c3b860e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008560008151811062004d325762004d3262008efe565b60209081029190910101516040516001600160a01b03909316602484015262ffffff9091166044830152606482015260840162000574565b60606013805480602002602001604051908101604052809291908181526020018280548015620006f0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006d1575050505050905090565b601c5460275462004df3916001600160a01b039081169116670de0b6b3a764000062006b6a565b601d5460275462004e1a916001600160a01b039081169116670de0b6b3a764000062006b6a565b60408051600280825260608201835260009260208301908036833701905050905062004e7d60006706f05b59d3b2000062004e7760017f00000000000000000000000000000000000000000000000000000000000000006200921e565b62006ba5565b8160008151811062004e935762004e9362008efe565b60200260200101818152505062004ed560006706f05b59d3b200017f000000000000000000000000000000000000000000000000000000000000000062006ba5565b8160018151811062004eeb5762004eeb62008efe565b6020908102919091010152604051630618f58760e51b815263e599af5560e01b60048201526000805160206201c4558339815191529063c31eb0e090602401600060405180830381600087803b15801562004f4557600080fd5b505af115801562004f5a573d6000803e3d6000fd5b505060275460405163383d15c560e01b81526001600160a01b03909116925063383d15c5915062004fb4907f0000000000000000000000000000000000000000000000000000000000000000908590829060040162009292565b6000604051808303816000875af115801562004fd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004ffe9190810190620092ca565b505050620050376706f05b59d3b2000060007f000000000000000000000000000000000000000000000000000000000000000062006ba5565b816001815181106200504d576200504d62008efe565b6020908102919091010152620050946706f05b59d3b20001600062004e777f000000000000000000000000000000000000000000000000000000000000000060016200923d565b81600081518110620050aa57620050aa62008efe565b6020908102919091010152604051630618f58760e51b815263e599af5560e01b60048201526000805160206201c4558339815191529063c31eb0e09060240162002e4b565b670de0b6b3a76400008311156200514d5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b60006200515b83836200184a565b905060008167ffffffffffffffff8111156200517b576200517b62008ee8565b604051908082528060200260200182016040528015620051a5578160200160208202803683370190505b50905060008267ffffffffffffffff811115620051c657620051c662008ee8565b604051908082528060200260200182016040528015620051f0578160200160208202803683370190505b50905060005b83811015620052fe5760006200520e89838862002cc4565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562005264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200528a9190620090f6565b90508162ffffff16858481518110620052a757620052a762008efe565b6020908102919091010152620052c7818a670de0b6b3a764000062006be0565b848481518110620052dc57620052dc62008efe565b602002602001018181525050505080620052f690620091ca565b9050620051f6565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201c4558339815191529063ca669fa790602401600060405180830381600087803b1580156200535057600080fd5b505af115801562005365573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200539d908d908d908790879060040162008f66565b6000604051808303816000875af1158015620053bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620053e7919081019062009081565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620054f157601c546040516000805160206201c4558339815191529163b4d6c782916001600160a01b03909116906200545a9062008992565b604051809103906000f08015801562005477573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620054bc9291906200944b565b600060405180830381600087803b158015620054d757600080fd5b505af1158015620054ec573d6000803e3d6000fd5b505050505b60066040516200550190620089a0565b60ff9091168152602001604051809103906000f08015801562005528573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200555a90620089a0565b60ff9091168152602001604051809103906000f08015801562005581573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051600890620055b390620089a0565b60ff9091168152602001604051809103906000f080158015620055da573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200560c90620089a0565b60ff9091168152602001604051809103906000f08015801562005633573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03929092169190911790556040516012906200566590620089a0565b60ff9091168152602001604051809103906000f0801580156200568c573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b0392909216919091179055604051601290620056be90620089a0565b60ff9091168152602001604051809103906000f080158015620056e5573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200571490620089ae565b604051809103906000f08015801562005731573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201c4558339815191529063c657c71890608401600060405180830381600087803b158015620057d257600080fd5b505af1158015620057e7573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200585f57600080fd5b505af115801562005874573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b158015620058ec57600080fd5b505af115801562005901573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200597957600080fd5b505af11580156200598e573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005a0657600080fd5b505af115801562005a1b573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005a9357600080fd5b505af115801562005aa8573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005b1a57600080fd5b505af115801562005b2f573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005bbb57600080fd5b505af115801562005bd0573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062005c5790620089bc565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562005c92573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162005cc090620089ca565b6001600160a01b039091168152602001604051809103906000f08015801562005ced573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562005d4c57600080fd5b505af115801562005d61573d6000803e3d6000fd5b5050505062005d6f62006c0e565b62005d7b600a62006fb3565b602454602b54601c546040516001600160a01b0393841693928316929091169062005da690620089d8565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005de3573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062005e1e90620089e6565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005e5b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201c4558339815191529063c657c71890608401600060405180830381600087803b15801562005efc57600080fd5b505af115801562005f11573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b15801562005f9d57600080fd5b505af115801562005fb2573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200604157600080fd5b505af115801562006056573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b158015620060e257600080fd5b505af1158015620060f7573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200618357600080fd5b505af115801562006198573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201c455833981519152925063c657c7189150608401600060405180830381600087803b1580156200622457600080fd5b505af115801562006239573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562006294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062ba9190620093aa565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006312573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063389190620093aa565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063b69190620093aa565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200640e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620064349190620093aa565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200648c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620064b29190620093aa565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200650a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065309190620093aa565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006588573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620065ae9190620093aa565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006606573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200662c9190620093aa565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006684573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620066aa9190620093aa565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006702573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067289190620093aa565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006780573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620067a69190620093aa565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620067fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620068249190620093aa565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200687c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620068a29190620093aa565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620068fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069209190620093aa565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006978573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200699e9190620093aa565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620069f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a1c9190620093aa565b50565b600062006a30848484600a6200705a565b949350505050565b6040516388b44c8560e01b81526000805160206201c455833981519152906388b44c859062006a70908690869086906004016200946f565b60006040518083038186803b15801562006a8957600080fd5b505afa1580156200224b573d6000803e3d6000fd5b604051631ecb7d3360e01b81526000805160206201c45583398151915290631ecb7d339062006ad890879087908790879060040162009490565b60006040518083038186803b15801562006af157600080fd5b505afa15801562002be0573d6000803e3d6000fd5b604051636cd1e26960e11b81526000805160206201c4558339815191529063d9a3c4d29062006a70908690869086906004016200946f565b8062ffffff8116811462006b6557604051639b63641560e01b815260040160405180910390fd5b919050565b620006918383836000620070f0565b8067ffffffffffffffff8116811462006b655760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff8216811762006a30565b600080600062006bf18686620072eb565b9150915062006c0486868685856200730a565b9695505050505050565b601c546001600160a01b03161562006c835760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006c6957600080fd5b505af115801562006c7e573d6000803e3d6000fd5b505050505b601d546001600160a01b03161562006cf85760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006cde57600080fd5b505af115801562006cf3573d6000803e3d6000fd5b505050505b601e546001600160a01b03161562006d6d5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006d5357600080fd5b505af115801562006d68573d6000803e3d6000fd5b505050505b601f546001600160a01b03161562006de25760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006dc857600080fd5b505af115801562006ddd573d6000803e3d6000fd5b505050505b6022546001600160a01b03161562006e575760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006e3d57600080fd5b505af115801562006e52573d6000803e3d6000fd5b505050505b6020546001600160a01b03161562006ecc5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006eb257600080fd5b505af115801562006ec7573d6000803e3d6000fd5b505050505b6021546001600160a01b03161562006f415760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006f2757600080fd5b505af115801562006f3c573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562006fb15760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562006f9c57600080fd5b505af115801562002f1f573d6000803e3d6000fd5b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200703e57600080fd5b505af115801562007053573d6000803e3d6000fd5b5050505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af1158015620070ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d16919062009379565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200714691620094b7565b600060405180830381855afa9150503d806000811462007183576040519150601f19603f3d011682016040523d82523d6000602084013e62007188565b606091505b50915050600081806020019051810190620071a49190620090f6565b9050620071de84620071d787620071d06370a0823160e01b620071c9600c8d620073bc565b90620073e4565b9062007402565b906200742b565b8215620011645760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620072299190620094b7565b600060405180830381855afa9150503d806000811462007266576040519150601f19603f3d011682016040523d82523d6000602084013e6200726b565b606091505b50915050600081806020019051810190620072879190620090f6565b905082861015620072b2576200729e86846200916d565b620072aa90826200916d565b9050620072cd565b620072be83876200916d565b620072ca90826200927c565b90505b62002be081620071d76318160ddd60e01b620071c9600c8d620073bc565b6000806000198385098385029250828110838203039150509250929050565b600081600003620073305783838162007327576200732762009110565b04905062002d16565b83821062007351576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c179055600082620073dd565b6002820180546001810182556000918252602082206001600160a01b03841691015582620073dd565b6200743782826200743b565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b9460009390929091830182828015620074ae57602002820191906000526020600020905b81548152602001906001019080831162007499575b50505050509050600083620074c38362007848565b604051602001620074d6929190620094d5565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a1683528152928120919450909290916200752a91869188910162009508565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007565576200756387620078fc565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620075a691879189910162009508565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620075ed9190620094b7565b600060405180830381855afa9150503d80600081146200762a576040519150601f19603f3d011682016040523d82523d6000602084013e6200762f565b606091505b5091506200764c9050816200764688602062009153565b62007909565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201c4558339815191529063667f9d7090604401602060405180830381865afa158015620076ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076d49190620090f6565b90508082146200778b5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005144565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201c455833981519152906370ca10bb90606401600060405180830381600087803b158015620077ea57600080fd5b505af1158015620077ff573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200783460028b016000620089f4565b896004016000905550505050505050505050565b60606000825160206200785c919062009153565b67ffffffffffffffff81111562007877576200787762008ee8565b6040519080825280601f01601f191660200182016040528015620078a2576020820181803683370190505b50905060005b8351811015620078f5576000848281518110620078c957620078c962008efe565b602002602001015190508082602002602001840152508080620078ec90620091ca565b915050620078a8565b5092915050565b60006200189982620079ab565b600080600060208551116200792057845162007923565b60205b905060005b81811015620079a1576200793e81600862009153565b866200794b83886200927c565b815181106200795e576200795e62008efe565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200799881620091ca565b91505062007928565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562007a1d57602002820191906000526020600020905b81548152602001906001019080831162007a08575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062007a699250859187910162009508565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562007b08576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162007ad891859187910162009508565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362007b16836200884d565b60405160200162007b29929190620094d5565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007b9957600080fd5b505af115801562007bae573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162007bcf9190620094b7565b600060405180830381855afa9150503d806000811462007c0c576040519150601f19603f3d011682016040523d82523d6000602084013e62007c11565b606091505b50915062007c2e90508162007c2887602062009153565b620088fa565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201c455833981519152906365bc9481906024016000604051808303816000875af115801562007c8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007cb5919081019062009544565b5090508051600103620080595760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062007d0d5762007d0d62008efe565b60200260200101516040518363ffffffff1660e01b815260040162007d479291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007d65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007d8b9190620090f6565b90508062007df6577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062007dcb5762007dcb62008efe565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462007eab5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005144565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162007ee392919062009508565b604051602081830303815290604052805190602001208560008151811062007f0f5762007f0f62008efe565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062007f695762007f6962008efe565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007fb4918a918c910162009508565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c168552825282842092519093916200801e918a918c910162009508565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff191691151591909117905550620086c2565b600181511115620086515760005b81518110156200864a5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a858581518110620080bb57620080bb62008efe565b60200260200101516040518363ffffffff1660e01b8152600401620080f59291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620081399190620090f6565b905080620081a3577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062008178576200817862008efe565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620081b2575062008635565b82518119906000805160206201c455833981519152906370ca10bb908c90879087908110620081e557620081e562008efe565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200823e57600080fd5b505af115801562008253573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620082759190620094b7565b600060405180830381855afa9150503d8060008114620082b2576040519150601f19603f3d011682016040523d82523d6000602084013e620082b7565b606091505b509092509050620082cf8162007c288c602062009153565b965050808015620082df57508186145b1562008577577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200831d92919062009508565b6040516020818303038152906040528051906020012088888151811062008348576200834862008efe565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1848481518110620083a157620083a162008efe565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620083ec918d918f910162009508565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200847992919062009508565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620084fc57620084fc62008efe565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200855557600080fd5b505af11580156200856a573d6000803e3d6000fd5b505050505050506200864a565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620085bf57620085bf62008efe565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200861857600080fd5b505af11580156200862d573d6000803e3d6000fd5b505050505050505b806200864181620091ca565b91505062008067565b50620086c2565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162005144565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620087069188918a910162009508565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620087a35760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162005144565b6005890180546001600160a01b031916905560038901805463ffffffff19169055620087d460028a016000620089f4565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200881a9188918a910162009508565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062008861919062009153565b67ffffffffffffffff8111156200887c576200887c62008ee8565b6040519080825280601f01601f191660200182016040528015620088a7576020820181803683370190505b50905060005b8351811015620078f5576000848281518110620088ce57620088ce62008efe565b602002602001015190508082602002602001840152508080620088f190620091ca565b915050620088ad565b600080600060208551116200891157845162008914565b60205b905060005b81811015620079a1576200892f81600862009153565b866200893c83886200927c565b815181106200894f576200894f62008efe565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200898981620091ca565b91505062008919565b610b0880620095b083390190565b610bfd806200a0b883390190565b610c18806200acb583390190565b613199806200b8cd83390190565b61615c806200ea6683390190565b614c808062014bc283390190565b612c13806201984283390190565b508054600082559060005260206000209081019062006a1c91905b8082111562008a25576000815560010162008a0f565b5090565b60006020828403121562008a3c57600080fd5b81356001600160e01b031981168114620073dd57600080fd5b6020808252825182820181905260009190848201906040850190845b8181101562008a985783516001600160a01b03168352928401929184019160010162008a71565b50909695505050505050565b60005b8381101562008ac157818101518382015260200162008aa7565b50506000910152565b6000815180845262008ae481602086016020860162008aa4565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562008bae57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562008b9757605f1989850301835262008b8484865162008aca565b948e01949350918d019160010162008b65565b505050978a01979450509188019160010162008b1f565b50919a9950505050505050505050565b803560ff8116811462006b6557600080fd5b6000806040838503121562008be457600080fd5b62008bef8362008bbe565b915062008bff6020840162008bbe565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008cb057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562008c9a5783516001600160e01b0319168252928b019260019290920191908b019062008c6e565b50978a0197955050509187019160010162008c30565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008d1857603f1988860301845262008d0585835162008aca565b9450928501929085019060010162008ce6565b5092979650505050505050565b62ffffff8116811462006a1c57600080fd5b60008060006060848603121562008d4d57600080fd5b833562008d5a8162008d25565b92506020840135915062008d716040850162008bbe565b90509250925092565b6001600160a01b038116811462006a1c57600080fd5b600080600080600080600080610100898b03121562008dae57600080fd5b883562008dbb8162008d7a565b9750602089013562008dcd8162008d7a565b9650604089013562008ddf8162008d7a565b9550606089013562008df18162008d25565b94506080890135935060a0890135925062008e0f60c08a0162008bbe565b915062008e1f60e08a0162008bbe565b90509295985092959890939650565b60006020828403121562008e4157600080fd5b813561ffff81168114620073dd57600080fd5b600080600080600080600060e0888a03121562008e7057600080fd5b873562008e7d8162008d7a565b9650602088013562008e8f8162008d7a565b9550604088013562008ea18162008d7a565b9450606088013562008eb38162008d25565b93506080880135925062008eca60a0890162008bbe565b915062008eda60c0890162008bbe565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b602081526000620073dd602083018462008aca565b600081518084526020808501945080840160005b8381101562008f5b5781518752958201959082019060010162008f3d565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262008f94608083018562008f29565b828103606084015262008fa8818562008f29565b979650505050505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171562008fdf5762008fdf62008ee8565b604052919050565b600067ffffffffffffffff82111562009004576200900462008ee8565b5060051b60200190565b600082601f8301126200902057600080fd5b8151602062009039620090338362008fe7565b62008fb3565b82815260059290921b840181019181810190868411156200905957600080fd5b8286015b848110156200907657805183529183019183016200905d565b509695505050505050565b6000602082840312156200909457600080fd5b815167ffffffffffffffff811115620090ac57600080fd5b62006a30848285016200900e565b600181811c90821680620090cf57607f821691505b602082108103620090f057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200910957600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826200914e576200914e62009110565b500490565b808202811582820484141762001899576200189962009126565b8181038181111562001899576200189962009126565b80516001600160801b038116811462006b6557600080fd5b60008060408385031215620091af57600080fd5b620091ba8362009183565b915062008bff6020840162009183565b600060018201620091df57620091df62009126565b5060010190565b60ff818116838216019081111562001899576200189962009126565b60ff828116828216039081111562001899576200189962009126565b62ffffff828116828216039080821115620078f557620078f562009126565b62ffffff818116838216019080821115620078f557620078f562009126565b6000602082840312156200926f57600080fd5b8151620073dd8162008d25565b8082018082111562001899576200189962009126565b60006001600160a01b03808616835260606020840152620092b7606084018662008f29565b9150808416604084015250949350505050565b600080600060608486031215620092e057600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200930757600080fd5b8501601f810187136200931957600080fd5b80516200932a620090338262008fe7565b81815260059190911b820183019083810190898311156200934a57600080fd5b928401925b828410156200936a578351825292840192908401906200934f565b80955050505050509250925092565b6000602082840312156200938c57600080fd5b8151620073dd8162008d7a565b8051801515811462006b6557600080fd5b600060208284031215620093bd57600080fd5b620073dd8262009399565b600080600080600080600080610100898b031215620093e657600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062008e1f60e08a0162009399565b60006001600160801b03808416806200943f576200943f62009110565b92169190910492915050565b6001600160a01b038316815260406020820152600062006a30604083018462008aca565b83815282602082015260606040820152600062002d16606083018462008aca565b84815283602082015282604082015260806060820152600062006c04608083018462008aca565b60008251620094cb81846020870162008aa4565b9190910192915050565b6001600160e01b0319831681528151600090620094fa81600485016020870162008aa4565b919091016004019392505050565b825160009082906020808701845b83811015620095345781518552938201939082019060010162009516565b5050948252509092019392505050565b600080604083850312156200955857600080fd5b825167ffffffffffffffff808211156200957157600080fd5b6200957f868387016200900e565b935060208501519150808211156200959657600080fd5b50620095a5858286016200900e565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212200963a7d316d7764a77f0bc3f18b35f6afc647355bb7d8a53e3ee1df2c958a8a364736f6c63430008140033","sourceMap":"95:12381:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;297:136:88;;;:::i;:::-;;11670:358;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;439:1611:88:-;;;:::i;4870:1089::-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4048:25:105;;;4036:2;4021:18;12046:168:93;3902:177:105;10212:843:88;;;:::i;3668:1196::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;7504:1338:88:-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;7173:8:105;7161:21;;;7143:40;;7131:2;7116:18;12220:205:93;6999:190:105;3069:146:5;;;:::i;8848:217:88:-;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2056:1606:88:-;;;:::i;2157:141:5:-;;;:::i;12034:440:88:-;;;:::i;9071:320::-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;5965:1533:88:-;;;:::i;11061:603::-;;;:::i;2304:142:5:-;;;:::i;9397:809:88:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;297:136:88:-;340:13;:11;:13::i;:::-;402:7;;411:4;;378:48;;-1:-1:-1;;;;;402:7:88;;;;411:4;417:8;378:23;:48::i;:::-;364:11;:62;;-1:-1:-1;;;;;;364:62:88;-1:-1:-1;;;;;364:62:88;;;;;;;;;;297:136::o;11670:358::-;11750:16;;;11764:1;11750:16;;;;;;;;;11727:20;;11750:16;;;;;;;;;-1:-1:-1;;11804:16:88;;;11818:1;11804:16;;;;;;;;;11727:39;;-1:-1:-1;11776:25:88;;11804:16;-1:-1:-1;11804:16:88;;;;;;;;;;;-1:-1:-1;11804:16:88;11776:44;;11840:8;11831:17;;:3;11835:1;11831:6;;;;;;;;:::i;:::-;;;;;;:17;;;;;11872:1;11858:8;11867:1;11858:11;;;;;;;;:::i;:::-;;;;;;;;;;:15;11900:69;;7173:8:105;11960::88;7161:21:105;11900:69:88;;;7143:40:105;-1:-1:-1;;;;;;;;;;;11884:15:88;;;-1:-1:-1;;;11923:35:88;7116:18:105;;11900:69:88;;;;-1:-1:-1;;11900:69:88;;;;;;;;;;;;;;-1:-1:-1;;;;;11900:69:88;-1:-1:-1;;;;;;11900:69:88;;;;;;11884:86;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11980:11:88;;:41;;-1:-1:-1;;;11980:41:88;;-1:-1:-1;;;;;11980:11:88;;;;-1:-1:-1;11980:16:88;;-1:-1:-1;11980:41:88;;11997:3;;;;12007;;12012:8;;11980:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11980:41:88;;;;;;;;;;;;:::i;:::-;;11717:311;;11670:358::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;439:1611:88:-;648:11;;503:14;;545:15;;585:1;;;;623:81;;636:5;;643:3;;-1:-1:-1;;;;;648:11:88;661:8;503:14;545:15;585:1;;623:12;:81::i;:::-;737:7;;:24;;-1:-1:-1;;;737:24:88;;-1:-1:-1;;;;;755:5:88;13194:55:105;;737:24:88;;;13176:74:105;715:136:88;;737:7;;:17;;13149:18:105;;737:24:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;773:46;;;806:4;784:18;773:46;806:4;784:18;:::i;:::-;773:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;:46;;;;:::i;:::-;763:56;;:7;:56;:::i;:::-;715:136;;;;;;;;;;;;;;;;;:8;:136::i;:::-;870:4;;:21;;-1:-1:-1;;;870:21:88;;-1:-1:-1;;;;;885:5:88;13194:55:105;;870:21:88;;;13176:74:105;861:111:88;;870:4;;:14;;13149:18:105;;870:21:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;903:46;;;936:4;914:18;903:46;936:4;914:18;:::i;:::-;903:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;:46;;;;:::i;:::-;893:56;;:7;:56;:::i;:::-;861:111;;;;;;;;;;;;;;;;;:8;:111::i;:::-;983:13;999:28;1012:6;1020;999:12;:28::i;:::-;983:44;;1042:9;1037:1007;1057:5;1053:1;:9;1037:1007;;;1083:9;1095:26;1101:8;1111:1;1114:6;1095:5;:26::i;:::-;1181:11;;:22;;-1:-1:-1;;;1181:22:88;;7173:8:105;7161:21;;1181:22:88;;;7143:40:105;1083:38:88;;-1:-1:-1;1137:19:88;;;;-1:-1:-1;;;;;1181:11:88;;:18;;7116::105;;1181:22:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1136:67;;;;1227:8;1222:13;;:2;:13;;;1218:654;;;1255:46;1264:11;-1:-1:-1;;;;;1255:46:88;1277:1;1255:46;;;;;;;;;;;;;;;;;:8;:46::i;:::-;1319:82;-1:-1:-1;;;;;1319:82:88;;1374:4;1352:18;;;;1374:4;1352:18;:::i;:::-;1341:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;1319:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;1218:654;;;1432:8;1426:14;;:2;:14;;;1422:450;;1460:97;-1:-1:-1;;;;;1460:97:88;;1524:4;1502:18;;;;1524:4;1502:18;:::i;:::-;1491:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;1530:4;1460:97;;;;;;;;;;;;;;;;;:17;:97::i;:::-;1575;-1:-1:-1;;;;;1575:97:88;;1639:4;1617:18;;;;1639:4;1617:18;:::i;:::-;1606:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;1645:4;1575:97;;;;;;;;;;;;;;;;;:17;:97::i;1422:450::-;1711:82;-1:-1:-1;;;;;1711:82:88;;1766:4;1744:18;;;;1766:4;1744:18;:::i;:::-;1733:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;1711:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;1811:46;1820:11;-1:-1:-1;;;;;1811:46:88;1833:1;1811:46;;;;;;;;;;;;;;;;;:8;:46::i;:::-;1895:11;;:30;;-1:-1:-1;;;1895:30:88;;-1:-1:-1;;;;;1917:3:88;14839:55:105;;1895:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;1886:65:88;;1895:11;;:21;;14794:18:105;;1895:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1927:1;1886:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;1974:11;;:32;;-1:-1:-1;;;1974:32:88;;-1:-1:-1;;;;;1996:5:88;14839:55:105;;1974:32:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;1965:68:88;;1974:11;;:21;;14794:18:105;;1974:32:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2008:1;1965:68;;;;;;;;;;;;;;;;;:8;:68::i;:::-;1069:975;;;1064:3;;;;:::i;:::-;;;1037:1007;;;;475:1575;;;;;439:1611::o;4870:1089::-;5079:11;;4934:14;;4976:15;;5016:1;;;;5054:81;;5067:5;;5074:3;;-1:-1:-1;;;;;5079:11:88;5092:8;4934:14;4976:15;5016:1;;5054:12;:81::i;:::-;5146:13;5162:28;5175:6;5183;5162:12;:28::i;:::-;5146:44;;5201:25;5243:5;5229:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5229:20:88;;5201:48;;5259:20;5296:5;5282:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5282:20:88;;5259:43;;5318:9;5313:179;5333:5;5329:1;:9;5313:179;;;5359:9;5371:26;5377:8;5387:1;5390:6;5371:5;:26::i;:::-;5359:38;;5421:2;5412:11;;:3;5416:1;5412:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;5451;;:30;;-1:-1:-1;;;5451:30:88;;-1:-1:-1;;;;;5473:3:88;14839:55:105;;5451:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;5451:11:88;;;;:21;;14794:18:105;;5451:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5437:8;5446:1;5437:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;-1:-1:-1;5340:3:88;;;:::i;:::-;;;5313:179;;;-1:-1:-1;5541:11:88;;:25;;;-1:-1:-1;;;5541:25:88;;;;5503:16;;;;-1:-1:-1;;;;;5541:11:88;;;;:23;;:25;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5577:13;;-1:-1:-1;;;5577:13:88;;-1:-1:-1;;;;;5586:3:88;13194:55:105;5577:13:88;;;13176:74:105;5502:64:88;;-1:-1:-1;5502:64:88;-1:-1:-1;;;;;;;;;;;;5577:8:88;;;13149:18:105;;5577:13:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5600:11:88;;:41;;-1:-1:-1;;;5600:41:88;;-1:-1:-1;;;;;5600:11:88;;;;-1:-1:-1;5600:16:88;;-1:-1:-1;5600:41:88;;5617:3;;;;5627;;5632:8;;5600:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5600:41:88;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5661:7:88;;:22;;-1:-1:-1;;;5661:22:88;;-1:-1:-1;;;;;5679:3:88;13194:55:105;;5661:22:88;;;13176:74:105;5652:64:88;;5661:7;;:17;;13149:18:105;;5661:22:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5685:8;-1:-1:-1;;;;;5652:64:88;;;;;;;;;;;;;;;;;;:8;:64::i;:::-;5735:4;;:19;;-1:-1:-1;;;5735:19:88;;-1:-1:-1;;;;;5750:3:88;13194:55:105;;5735:19:88;;;13176:74:105;5726:61:88;;5735:4;;:14;;13149:18:105;;5735:19:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5756:8;-1:-1:-1;;;;;5726:61:88;;;;;;;;;;;;;;;;;;:8;:61::i;:::-;5820:11;;:25;;;-1:-1:-1;;;5820:25:88;;;;-1:-1:-1;;;;;5820:11:88;;;;:23;;:25;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5797:48;;;;;;;;5856:43;5865:8;-1:-1:-1;;;;;5856:43:88;5875:1;5856:43;;;;;;;;;;;;;;;;;:8;:43::i;:::-;5909;5918:8;-1:-1:-1;;;;;5909:43:88;5928:1;5909:43;;;;;;;;;;;;;;;;;:8;:43::i;:::-;4906:1053;;;;;;;;;4870:1089::o;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;10212:843:88:-;10304:16;;;10281:20;10304:16;;;10372:1;10304:16;;;;10358;;;;;;;;10304;;10281:20;;10304:16;10358;;;10304;10358;;;;;-1:-1:-1;;10385:54:88;;-1:-1:-1;;;10385:54:88;;-1:-1:-1;;;10385:54:88;;;15557:52:105;10330:44:88;;-1:-1:-1;;;;;;;;;;;;10385:15:88;;;15530:18:105;;10385:54:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10449:11:88;;:41;;-1:-1:-1;;;10449:41:88;;-1:-1:-1;;;;;10449:11:88;;;;-1:-1:-1;10449:16:88;;-1:-1:-1;10449:41:88;;10466:3;;;;10476;;10481:8;;10449:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10449:41:88;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10507:16:88;;;10521:1;10507:16;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10544:16:88;;;10558:1;10544:16;;;;;;;;;10501:22;;-1:-1:-1;;10571:54:88;;-1:-1:-1;;;10571:54:88;;-1:-1:-1;;;10571:54:88;;;15557:52:105;10533:27:88;;-1:-1:-1;;;;;;;;;;;;10571:15:88;;;15530:18:105;;10571:54:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10635:11:88;;:41;;-1:-1:-1;;;10635:41:88;;-1:-1:-1;;;;;10635:11:88;;;;-1:-1:-1;10635:16:88;;-1:-1:-1;10635:41:88;;10652:3;;;;10662;;10667:8;;10635:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10635:41:88;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;10693:16:88;;;10707:1;10693:16;;;;;;10730;;;;;;;;;-1:-1:-1;;;10757:54:88;;-1:-1:-1;;;10757:54:88;;;15557:52:105;10757:54:88;;10693:16;;-1:-1:-1;;;;;;;;;;;;10757:15:88;;;15530:18:105;;;;;10757:54:88;;;;;;10707:1;10757:15;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10821:11:88;;:41;;-1:-1:-1;;;10821:41:88;;-1:-1:-1;;;;;10821:11:88;;;;-1:-1:-1;10821:16:88;;-1:-1:-1;10821:41:88;;10838:3;;;;10848;;10853:8;;10821:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10821:41:88;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10879:16:88;;;10893:1;10879:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10916:16:88;;;10930:1;10916:16;;;;;;;;10873:22;;-1:-1:-1;10916:16:88;10930:1;-1:-1:-1;10916:16:88;;;;;;;;-1:-1:-1;;10943:54:88;;-1:-1:-1;;;10943:54:88;;-1:-1:-1;;;10943:54:88;;;15557:52:105;10905:27:88;;-1:-1:-1;;;;;;;;;;;;10943:15:88;;;-1:-1:-1;15530:18:105;;10943:54:88;15413:202:105;3668:1196:88;3888:11;;3743:14;;3785:15;;3825:1;;;;3863:81;;3876:5;;3883:3;;-1:-1:-1;;;;;3888:11:88;3901:8;3743:14;3785:15;3825:1;;3863:12;:81::i;:::-;3955:13;3971:28;3984:6;3992;3971:12;:28::i;:::-;3955:44;;4009:25;4051:5;4037:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4037:20:88;;4009:48;;4073:9;4068:154;4088:5;4084:1;:9;4068:154;;;4114:9;4126:26;4132:8;4142:1;4145:6;4126:5;:26::i;:::-;4181:11;;:30;;-1:-1:-1;;;4181:30:88;;-1:-1:-1;;;;;4203:3:88;14839:55:105;;4181:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;14931:21;;-1:-1:-1;4181:11:88;;;:21;;14794:18:105;;4181:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4167:8;4176:1;4167:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;-1:-1:-1;4095:3:88;;;:::i;:::-;;;4068:154;;;-1:-1:-1;4257:11:88;;4232:76;;4245:5;;4252:3;;-1:-1:-1;;;;;4257:11:88;4270:8;4280:7;4289;4298:6;4257:11;4232:12;:76::i;:::-;4343:11;;4318:76;;4331:5;;4338:3;;-1:-1:-1;;;;;4343:11:88;4356:8;4366:7;4375;4343:11;4387:6;4318:12;:76::i;:::-;4410:9;4405:453;4425:5;4421:1;:9;4405:453;;;4451:9;4463:26;4469:8;4479:1;4482:6;4463:5;:26::i;:::-;4451:38;;4514:8;4508:14;;:2;:14;;;4504:344;;4581:11;;:30;;-1:-1:-1;;;4581:30:88;;-1:-1:-1;;;;;4603:3:88;14839:55:105;;4581:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;4542:143:88;;4581:11;;:21;;14794:18:105;;4581:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4617:8;4626:1;4617:11;;;;;;;;:::i;:::-;;;;;;;4613:1;:15;;;;:::i;:::-;4630:4;4542:143;;;;;;;;;;;;;;;;;:17;:143::i;:::-;4504:344;;;4752:11;;:30;;-1:-1:-1;;;4752:30:88;;-1:-1:-1;;;;;4774:3:88;14839:55:105;;4752:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;4743:90:88;;4752:11;;:21;;14794:18:105;;4752:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4788:8;4797:1;4788:11;;;;;;;;:::i;:::-;;;;;;;4784:1;:15;;;;:::i;:::-;4743:90;;;;;;;;;;;;;;;;;:8;:90::i;:::-;-1:-1:-1;4432:3:88;;;:::i;:::-;;;4405:453;;;;3715:1149;;;;;;3668:1196::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7504:1338:88;7636:11;;7573:1;;;;7611:96;;7624:5;;7631:3;;-1:-1:-1;;;;;7636:11:88;7649:8;7659:14;7675:15;7573:1;;7611:12;:96::i;:::-;7718:12;7733:17;;;;:8;:17;:::i;:::-;:21;;7753:1;7733:21;:::i;:::-;7718:36;-1:-1:-1;7764:14:88;7801:1;7781:17;;;;:8;:17;:::i;:::-;:21;;;;:::i;:::-;7825:11;;:40;;-1:-1:-1;;;7825:40:88;;7813:9;7825:40;;;16148:41:105;;;16205:18;;;16198:49;;;7764:38:88;;-1:-1:-1;;;;;;7825:11:88;;;;:30;;16121:18:105;;7825:40:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7813:52;;7876:49;7885:2;7876:49;;7889:5;7876:49;;;;;;;;;;;;;;;;;;;:8;:49::i;:::-;7936:13;7952:28;7965:6;7973;7952:12;:28::i;:::-;7936:44;;7996:9;7991:179;8011:9;8019:1;8011:5;:9;:::i;:::-;8007:1;:13;7991:179;;;8046:11;;:41;;-1:-1:-1;;;8046:41:88;;:11;:41;;;16148::105;16237:8;16225:21;;16205:18;;;16198:49;-1:-1:-1;;;;;8046:11:88;;;;:30;;16121:18:105;;8046:41:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8041:46;;8102:57;8111:2;8102:57;;8123:1;8115:5;:9;;;;;;:::i;:::-;:13;;8127:1;8115:13;:::i;:::-;8102:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;8022:3;;;:::i;:::-;;;7991:179;;;-1:-1:-1;8185:11:88;;:54;;-1:-1:-1;;;8185:54:88;;:11;:54;;;16148:41:105;8222:16:88;16205:18:105;;;16198:49;-1:-1:-1;;;;;8185:11:88;;;;:30;;16121:18:105;;8185:54:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8180:59;;8250:51;8259:2;8250:51;;8263:7;8250:51;;;;;;;;;;;;;;;;;;;:8;:51::i;:::-;8335:16;;;8349:1;8335:16;;;;;;;;;8312:20;;8335:16;;;;;;;;;-1:-1:-1;;8389:16:88;;;8403:1;8389:16;;;;;;;;;8312:39;;-1:-1:-1;8361:25:88;;8389:16;-1:-1:-1;8389:16:88;;;;;;;;;;;-1:-1:-1;8389:16:88;8361:44;;8425:8;8416:17;;:3;8420:1;8416:6;;;;;;;;:::i;:::-;;;;;;;;;;:17;8457:11;;:36;;-1:-1:-1;;;8457:36:88;;-1:-1:-1;;;;;8479:3:88;14839:55:105;;8457:36:88;;;14821:74:105;8484:8:88;14943::105;14931:21;14911:18;;;14904:49;8457:11:88;;;;:21;;14794:18:105;;8457:36:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8443:8;8452:1;8443:11;;;;;;;;:::i;:::-;;;;;;;;;;:50;8504:13;;-1:-1:-1;;;8504:13:88;;-1:-1:-1;;;;;8513:3:88;13194:55:105;8504:13:88;;;13176:74:105;-1:-1:-1;;;;;;;;;;;8504:8:88;;;13149:18:105;;8504:13:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:11:88;;:41;;-1:-1:-1;;;8527:41:88;;-1:-1:-1;;;;;8527:11:88;;;;-1:-1:-1;8527:16:88;;-1:-1:-1;8527:41:88;;8544:3;;;;8554;;8559:8;;8527:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8527:41:88;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8584:11:88;;-1:-1:-1;;;;;8584:11:88;:30;:11;8622:12;8584:11;8622:8;:12;:::i;:::-;8584:51;;-1:-1:-1;;;;;;8584:51:88;;;;;;;16173:14:105;;16166:22;8584:51:88;;;16148:41:105;16237:8;16225:21;16205:18;;;16198:49;16121:18;;8584:51:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8579:56;-1:-1:-1;8646:56:88;;;;8659:12;:8;8670:1;8659:12;:::i;:::-;8646:56;;;;;;;;;;;;;;;;;;;:8;:56::i;:::-;8718:11;;-1:-1:-1;;;;;8718:11:88;:30;:11;8755:12;:8;8718:11;8755:12;:::i;:::-;8718:50;;-1:-1:-1;;;;;;8718:50:88;;;;;;;16173:14:105;;16166:22;8718:50:88;;;16148:41:105;16237:8;16225:21;16205:18;;;16198:49;16121:18;;8718:50:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8713:55;-1:-1:-1;8779:56:88;;;;8792:12;8803:1;8792:8;:12;:::i;:::-;8779:56;;;;;;;;;;;;;;;;;;;:8;:56::i;:::-;7548:1294;;;;;;;;7504:1338::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8848:217:88;8930:16;;;8906:21;8930:16;;;;;;;;;-1:-1:-1;;;8956:60:88;;;-1:-1:-1;;;8956:60:88;;;15557:52:105;-1:-1:-1;;;;;;;;;;;8956:15:88;15530:18:105;;;8956:60:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9026:11:88;;:32;;-1:-1:-1;;;9026:32:88;;-1:-1:-1;;;;;9026:11:88;;;;-1:-1:-1;9026:16:88;;-1:-1:-1;9026:32:88;;9043:3;;9048:4;;9043:3;;9026:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9026:32:88;;;;;;;;;;;;:::i;:::-;;;;8896:169;8848:217::o;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;13194:55:105;;11033:19:93;;;13176:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;13149:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;19124:55:105;;;11062:41:93;;;19106:74:105;19196:18;;;19189:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;19079:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;19124:55:105;;;11113:41:93;;;19106:74:105;19196:18;;;19189:34;;;11113:15:93;;;;;19079:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2056:1606:88:-;2264:11;;2119:14;;2161:15;;2201:1;;;;2239:81;;2252:5;;2259:3;;-1:-1:-1;;;;;2264:11:88;2277:8;2119:14;2161:15;2201:1;;2239:12;:81::i;:::-;2331:13;2347:28;2360:6;2368;2347:12;:28::i;:::-;2331:44;;2385:25;2427:5;2413:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2413:20:88;;2385:48;;2449:9;2444:154;2464:5;2460:1;:9;2444:154;;;2490:9;2502:26;2508:8;2518:1;2521:6;2502:5;:26::i;:::-;2557:11;;:30;;-1:-1:-1;;;2557:30:88;;-1:-1:-1;;;;;2579:3:88;14839:55:105;;2557:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;14931:21;;-1:-1:-1;2557:11:88;;;:21;;14794:18:105;;2557:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2543:8;2552:1;2543:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;-1:-1:-1;2471:3:88;;;:::i;:::-;;;2444:154;;;-1:-1:-1;2633:11:88;;2608:81;;2621:5;;2628:3;;-1:-1:-1;;;;;2633:11:88;2646:8;2656:7;2665;2674:6;2682;2608:12;:81::i;:::-;2705:9;2700:956;2720:5;2716:1;:9;2700:956;;;2746:9;2758:26;2764:8;2774:1;2777:6;2758:5;:26::i;:::-;2844:11;;:22;;-1:-1:-1;;;2844:22:88;;7173:8:105;7161:21;;2844:22:88;;;7143:40:105;2746:38:88;;-1:-1:-1;2800:19:88;;;;-1:-1:-1;;;;;2844:11:88;;:18;;7116::105;;2844:22:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2799:67;;;;2890:8;2885:13;;:2;:13;;;2881:672;;;2918:45;2927:11;-1:-1:-1;;;;;2918:45:88;2940:1;2918:45;;;;;;;;;;;;;;;;;:8;:45::i;:::-;2981:87;-1:-1:-1;;;;;2981:87:88;;3041:4;3019:18;;;;3041:4;3019:18;:::i;:::-;3008:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;3003:43;;:1;:43;:::i;:::-;2981:87;;;;;;;;;;;;;;;;;:8;:87::i;:::-;2881:672;;;3099:8;3093:14;;:2;:14;;;3089:464;;3127:102;-1:-1:-1;;;;;3127:102:88;;3196:4;3174:18;;;;3196:4;3174:18;:::i;:::-;3163:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;3158:43;;:1;:43;:::i;:::-;3203:4;3127:102;;;;;;;;;;;;;;;;;:17;:102::i;:::-;3247;-1:-1:-1;;;;;3247:102:88;;3316:4;3294:18;;;;3316:4;3294:18;:::i;:::-;3283:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;3278:43;;:1;:43;:::i;:::-;3323:4;3247:102;;;;;;;;;;;;;;;;;:17;:102::i;3089:464::-;3388:87;-1:-1:-1;;;;;3388:87:88;;3448:4;3426:18;;;;3448:4;3426:18;:::i;:::-;3415:30;;:7;:30;:::i;:::-;:37;;;;:::i;:::-;3410:43;;:1;:43;:::i;:::-;3388:87;;;;;;;;;;;;;;;;;:8;:87::i;:::-;3493:45;3502:11;-1:-1:-1;;;;;3493:45:88;3515:1;3493:45;;;;;;;;;;;;;;;;;:8;:45::i;:::-;3576:11;;:30;;-1:-1:-1;;;3576:30:88;;-1:-1:-1;;;;;3598:3:88;14839:55:105;;3576:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;3567:78:88;;3576:11;;:21;;14794:18:105;;3576:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3612:8;3621:1;3612:11;;;;;;;;:::i;:::-;;;;;;;3608:1;:15;;;;:::i;:::-;3567:78;;;;;;;;;;;;;;;;;:8;:78::i;:::-;2732:924;;;2727:3;;;;:::i;:::-;;;2700:956;;2157:141:5;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12034:440:88;12118:16;;;12132:1;12118:16;;;;;;;;;12095:20;;12118:16;;;;;;;;;-1:-1:-1;;12172:16:88;;;12186:1;12172:16;;;;;;;;;12095:39;;-1:-1:-1;12144:25:88;;12172:16;-1:-1:-1;12172:16:88;;;;;;;;;;;-1:-1:-1;12172:16:88;12144:44;;12208:8;12199:17;;:3;12203:1;12199:6;;;;;;;;:::i;:::-;;;;;;:17;;;;;12240:1;12226:8;12235:1;12226:11;;;;;;;;:::i;:::-;;;;;;;;;;:15;12275:11;;12252:63;;12265:3;;;;-1:-1:-1;;;;;12275:11:88;12288:8;12298:4;;12275:11;;12252:12;:63::i;:::-;12342:73;;7173:8:105;12406::88;7161:21:105;12342:73:88;;;7143:40:105;-1:-1:-1;;;;;;;;;;;12326:15:88;;;-1:-1:-1;;;12365:39:88;7116:18:105;;12342:73:88;6999:190:105;9071:320:88;9152:16;;;9166:1;9152:16;;;;;;;;;9128:21;;9152:16;;;;;;;;;;;-1:-1:-1;9152:16:88;9128:40;;9188:58;9225:4;9231;9237:8;9188:36;:58::i;:::-;9178:4;9183:1;9178:7;;;;;;;;:::i;:::-;;;;;;;;;;:68;9272:69;;7173:8:105;9332::88;7161:21:105;9272:69:88;;;7143:40:105;-1:-1:-1;;;;;;;;;;;9256:15:88;;;-1:-1:-1;;;9295:35:88;7116:18:105;;9272:69:88;;;-1:-1:-1;;9272:69:88;;;;;;;;;;;;;;-1:-1:-1;;;;;9272:69:88;-1:-1:-1;;;;;;9272:69:88;;;;;;9256:86;;;;;;;;;;;;;;;:::i;12431:134:93:-;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;20272:6:105;20260:19;;12532:26:93;;;20242:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;20215:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;19106:74:105;;;1398:17:1;19196:18:105;;;19189:34;1428:1:1;;1377:7;;19079:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;5965:1533:88:-;6177:11;;6032:14;;6074:15;;6114:1;;;;6152:81;;6165:5;;6172:3;;-1:-1:-1;;;;;6177:11:88;6190:8;6032:14;6074:15;6114:1;;6152:12;:81::i;:::-;6244:13;6260:28;6273:6;6281;6260:12;:28::i;:::-;6244:44;;6299:29;6345:5;6331:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6331:20:88;;6299:52;;6361:25;6403:5;6389:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6389:20:88;;6361:48;;6419:20;6456:5;6442:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6442:20:88;;6419:43;;6478:9;6473:276;6493:5;6489:1;:9;6473:276;;;6519:9;6531:26;6537:8;6547:1;6550:6;6531:5;:26::i;:::-;6519:38;;6581:2;6572:11;;:3;6576:1;6572:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;6615;;:30;;-1:-1:-1;;;6615:30:88;;-1:-1:-1;;;;;6637:3:88;14839:55:105;;6615:30:88;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;-1:-1:-1;;6615:11:88;;:21;;14794:18:105;;6615:30:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6597:48;-1:-1:-1;6678:11:88;6688:1;6597:48;6678:11;:::i;:::-;6660:12;6673:1;6660:15;;;;;;;;:::i;:::-;;;;;;;;;;:29;6727:11;6737:1;6727:7;:11;:::i;:::-;6717:21;;:7;:21;:::i;:::-;6703:8;6712:1;6703:11;;;;;;;;:::i;:::-;;;;;;:35;;;;;6505:244;;6500:3;;;;:::i;:::-;;;6473:276;;;-1:-1:-1;6798:11:88;;:25;;;-1:-1:-1;;;6798:25:88;;;;6760:16;;;;-1:-1:-1;;;;;6798:11:88;;;;:23;;:25;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6834:13;;-1:-1:-1;;;6834:13:88;;-1:-1:-1;;;;;6843:3:88;13194:55:105;6834:13:88;;;13176:74:105;6759:64:88;;-1:-1:-1;6759:64:88;-1:-1:-1;;;;;;;;;;;;6834:8:88;;;13149:18:105;;6834:13:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6857:11:88;;:45;;-1:-1:-1;;;6857:45:88;;-1:-1:-1;;;;;6857:11:88;;;;-1:-1:-1;6857:16:88;;-1:-1:-1;6857:45:88;;6874:3;;;;6884;;6889:12;;6857:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6857:45:88;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6931:7:88;;:22;;-1:-1:-1;;;6931:22:88;;-1:-1:-1;;;;;6949:3:88;13194:55:105;;6931:22:88;;;13176:74:105;6913:86:88;;6931:7;;:17;;13149:18:105;;6931:22:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6955:12;6966:1;6955:8;:12;:::i;:::-;-1:-1:-1;;;;;6913:86:88;6969:4;6913:86;;;;;;;;;;;;;;;;;:17;:86::i;:::-;7027:4;;:19;;-1:-1:-1;;;7027:19:88;;-1:-1:-1;;;;;7042:3:88;13194:55:105;;7027:19:88;;;13176:74:105;7009:83:88;;7027:4;;:14;;13149:18:105;;7027:19:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7048:12;7059:1;7048:8;:12;:::i;:::-;-1:-1:-1;;;;;7009:83:88;7062:4;7009:83;;;;;;;;;;;;;;;;;:17;:83::i;:::-;7103:13;;-1:-1:-1;;;7103:13:88;;-1:-1:-1;;;;;7112:3:88;13194:55:105;7103:13:88;;;13176:74:105;-1:-1:-1;;;;;;;;;;;7103:8:88;;;13149:18:105;;7103:13:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7126:11:88;;:41;;-1:-1:-1;;;7126:41:88;;-1:-1:-1;;;;;7126:11:88;;;;-1:-1:-1;7126:16:88;;-1:-1:-1;7126:41:88;;7143:3;;;;7153;;7158:8;;7126:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7126:41:88;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7187:7:88;;:22;;-1:-1:-1;;;7187:22:88;;-1:-1:-1;;;;;7205:3:88;13194:55:105;;7187:22:88;;;13176:74:105;7178:67:88;;7187:7;;:17;;13149:18:105;;7187:22:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7211:8;-1:-1:-1;;;;;7178:67:88;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;7264:4;;:19;;-1:-1:-1;;;7264:19:88;;-1:-1:-1;;;;;7279:3:88;13194:55:105;;7264:19:88;;;13176:74:105;7255:64:88;;7264:4;;:14;;13149:18:105;;7264:19:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7285:8;-1:-1:-1;;;;;7255:64:88;;;;;;;;;;;;;;;;;;:8;:64::i;:::-;7353:11;;:25;;;-1:-1:-1;;;7353:25:88;;;;-1:-1:-1;;;;;7353:11:88;;;;:23;;:25;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7330:48;;;;;;;;7389:46;7398:8;-1:-1:-1;;;;;7389:46:88;7408:1;7389:46;;;;;;;;;;;;;;;;;:8;:46::i;:::-;7445;7454:8;-1:-1:-1;;;;;7445:46:88;7464:1;7445:46;;;;;;;;;;;;;;;;;:8;:46::i;:::-;6004:1494;;;;;;;;;;5965:1533::o;11061:603::-;11150:11;;11123:67;;11136:5;;;;-1:-1:-1;;;;;11150:11:88;11163:8;11173:4;;11150:11;;11123:12;:67::i;:::-;11223:11;;11200:63;;11213:3;;;;-1:-1:-1;;;;;11223:11:88;11236:8;11246:4;;11223:11;;11200:12;:63::i;:::-;11297:16;;;11311:1;11297:16;;;;;;;;;11274:20;;11297:16;;;;;;;;;-1:-1:-1;;11351:16:88;;;11365:1;11351:16;;;;;;;;;11274:39;;-1:-1:-1;11323:25:88;;11351:16;-1:-1:-1;11351:16:88;;;;;;;;;;;-1:-1:-1;11351:16:88;11323:44;;11387:8;11378:17;;:3;11382:1;11378:6;;;;;;;;:::i;:::-;;;;;;;;;;:17;11419:11;;:36;;-1:-1:-1;;;11419:36:88;;-1:-1:-1;;;;;11441:3:88;14839:55:105;;11419:36:88;;;14821:74:105;11446:8:88;14943::105;14931:21;14911:18;;;14904:49;11419:11:88;;;;:21;;14794:18:105;;11419:36:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;11458:1;11419:40;:::i;:::-;11405:8;11414:1;11405:11;;;;;;;;:::i;:::-;;;;;;:54;;;;;317:28:0;309:37;;-1:-1:-1;;;;;11470:15:88;;11522:45;;;11569:3;11574:8;11584;11593:1;11584:11;;;;;;;;:::i;:::-;;;;;;;;;;;11499:97;;-1:-1:-1;;;;;21876:55:105;;;11499:97:88;;;21858:74:105;21980:8;21968:21;;;21948:18;;;21941:49;22006:18;;;21999:34;21831:18;;11499:97:88;21642:397:105;2304:142:5;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;9397:809:88:-;9475:7;;9493:11;;9462:50;;-1:-1:-1;;;;;9475:7:88;;;;9493:11;9507:4;9462;:50::i;:::-;9535:4;;9550:11;;9522:47;;-1:-1:-1;;;;;9535:4:88;;;;9550:11;9564:4;9522;:47::i;:::-;9604:16;;;9618:1;9604:16;;;;;;;;9580:21;;9604:16;;;;;;;;;;-1:-1:-1;;9580:40:88;-1:-1:-1;9640:61:88;9677:1;9680:6;9688:12;9699:1;9688:8;:12;:::i;:::-;9640:36;:61::i;:::-;9630:4;9635:1;9630:7;;;;;;;;:::i;:::-;;;;;;:71;;;;;9721:61;9758:1;9761:10;9773:8;9721:36;:61::i;:::-;9711:4;9716:1;9711:7;;;;;;;;:::i;:::-;;;;;;;;;;:71;9792:75;;-1:-1:-1;;;9792:75:88;;-1:-1:-1;;;9792:75:88;;;15557:52:105;-1:-1:-1;;;;;;;;;;;9792:15:88;;;15530:18:105;;9792:75:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9877:11:88;;:32;;-1:-1:-1;;;9877:32:88;;-1:-1:-1;;;;;9877:11:88;;;;-1:-1:-1;9877:16:88;;-1:-1:-1;9877:32:88;;9894:3;;9899:4;;9894:3;;9877:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9877:32:88;;;;;;;;;;;;:::i;:::-;;;;9930:57;9967:6;9975:1;9978:8;9930:36;:57::i;:::-;9920:4;9925:1;9920:7;;;;;;;;:::i;:::-;;;;;;;;;;:67;10007:65;10044:10;10056:1;10059:12;:8;10070:1;10059:12;:::i;10007:65::-;9997:4;10002:1;9997:7;;;;;;;;:::i;:::-;;;;;;;;;;:75;10082;;-1:-1:-1;;;10082:75:88;;-1:-1:-1;;;10082:75:88;;;15557:52:105;-1:-1:-1;;;;;;;;;;;10082:15:88;;;15530:18:105;;10082:75:88;15413:202:105;11248:792:93;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;22246:2:105;11461:73:93;;;22228:21:105;22285:2;22265:18;;;22258:30;22324:26;22304:18;;;22297:54;22368:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;14839:55:105;;;11821:26:93;;;14821:74:105;14943:8;14931:21;;14911:18;;;14904:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;14794:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;13194:55:105;;11974:14:93;;;13176:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;13149:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;23931:4:105;23919:17;;;23901:36;;23889:2;23874:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;23931:4:105;23919:17;;;23901:36;;23889:2;23874:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;23931:4:105;23919:17;;;23901:36;;23889:2;23874:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;23931:4:105;23919:17;;;23901:36;;23889:2;23874:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;23931:4:105;23919:17;;;23901:36;;23889:2;23874:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;23931:4:105;23919:17;;;23901:36;;23889:2;23874:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;24559:74:105;24649:18;;;24642:30;;;;24708:1;24688:18;;;24681:29;24746:9;24726:18;;;24719:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;24773:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;25015:74:105;;;;25105:18;;;25098:30;;;;25144:18;;;25137:29;-1:-1:-1;;;25182:18:105;;;25175:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;25226:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;25468:74:105;;;;25558:18;;;25551:30;;;;25597:18;;;25590:29;-1:-1:-1;;;25635:18:105;;;25628:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;25679:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;25921:74:105;;;;26011:18;;;26004:30;;;;26050:18;;;26043:29;-1:-1:-1;;;26088:18:105;;;26081:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;26132:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;26374:74:105;;;;26464:18;;;26457:30;;;;26503:18;;;26496:29;-1:-1:-1;;;26541:18:105;;;26534:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;26585:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;26827:74:105;;;;26917:18;;;26910:30;;;;26956:18;;;26949:29;-1:-1:-1;;;26994:18:105;;;26987:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;27038:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;27280:74:105;27370:18;;;27363:30;27429:1;27409:18;;;27402:29;-1:-1:-1;;;27447:18:105;;;27440:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;27490:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;27732:74:105;27822:18;;;27815:30;27881:1;27861:18;;;27854:29;27919:10;27899:18;;;27892:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;27947:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;28274:15:105;;;28256:34;;28326:15;;;;28321:2;28306:18;;28299:43;28373:2;28358:18;;28351:34;28183:2;28168:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;13194:55:105;;;13176:74;;13164:2;13149:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;13176:74:105;;;;3824:7:93;;;;:31;;13149:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;28992:15:105;;;28974:34;;29044:15;;;29039:2;29024:18;;29017:43;29096:15;;;29091:2;29076:18;;29069:43;28901:2;28886:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;28992:15:105;;;28974:34;;29044:15;;;29039:2;29024:18;;29017:43;29096:15;;;29091:2;29076:18;;29069:43;28901:2;28886:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;29747:74:105;29837:18;;;29830:30;;;;29896:1;29876:18;;;29869:29;29934:8;29914:18;;;29907:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;29960:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;30202:74:105;30292:18;;;30285:30;30351:1;30331:18;;;30324:29;30389:8;30369:18;;;30362:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;30415:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;30657:74:105;30747:18;;;30740:30;;;;30806:1;30786:18;;;30779:29;30844:9;30824:18;;;30817:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;30871:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;31113:74:105;31203:18;;;31196:30;31262:2;31242:18;;;31235:30;31301:20;31281:18;;;31274:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;31339:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;31581:74:105;31671:18;;;31664:30;31730:1;31710:18;;;31703:29;31768:10;31748:18;;;31741:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;31796:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;32038:74:105;32128:18;;;32121:30;32187:1;32167:18;;;32160:29;32225:11;32205:18;;;32198:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;32254:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;19079:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;4729:4:93;;;:12;;19079:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;4789:4:93;;;:12;;19079:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;4849:4:93;;;:12;;19079:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;4909:4:93;;;:12;;19079:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;4969:4:93;;;:12;;19079:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5029:3:93;;;:11;;19079:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5088:8:93;;;:16;;19079:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5153:7:93;;;:15;;19079:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5214:4:93;;;:12;;19079:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5272:4:93;;;:12;;19079:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5330:4:93;;;:12;;19079:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5388:4:93;;;:12;;19079:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5446:4:93;;;:12;;19079:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5504:3:93;;;:11;;19079:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;19106:74:105;-1:-1:-1;;19196:18:105;;;19189:34;5561:8:93;;;:16;;19079:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;7313:216::-;7410:14;7446:76;7480:6;7488;7496:7;1147:2;7446:33;:76::i;:::-;7436:86;7313:216;-1:-1:-1;;;;7313:216:93:o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18636:288;18862:55;;-1:-1:-1;;;18862:55:1;;-1:-1:-1;;;;;;;;;;;18862:20:1;;;:55;;18883:4;;18889:5;;18896:15;;18913:3;;18862:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13228:134;13326:29;;-1:-1:-1;;;13326:29:1;;-1:-1:-1;;;;;;;;;;;13326:11:1;;;:29;;13338:4;;13344:5;;13351:3;;13326:29;;;:::i;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;8711:135:78:-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1127:317:75;956:247:82;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;13176:74:105;6180:7:93;;;:21;;13149:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;13176:74:105;6253:7:93;;;:21;;13149:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;13176:74:105;6323:7:93;;;:21;;13149:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;13176:74:105;6393:7:93;;;:21;;13149:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;13176:74:105;6463:7:93;;;:21;;13149:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;13176:74:105;6533:7:93;;;:21;;13149:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;13176:74:105;6602:7:93;;;:21;;13149:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;13176:74:105;6675:7:93;;;:21;;13149:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6638:68;6085:628::o;6719:422::-;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;34209:6:105;34242:15;;6788:346:93;;;34224:34:105;1202:5:93;34274:18:105;;;34267:43;;;1262:2:93;34326:18:105;;;34319:43;1318:3:93;34378:18:105;;;34371:43;34430:19;;;34423:44;;;;1446:6:93;34510:19:105;;;34503:44;1508:5:93;34563:19:105;;;34556:44;1581:7:93;34616:19:105;;;34609:44;6788:7:93;34669:19:105;;;34662:51;-1:-1:-1;;;;;6788:7:93;;:17;;34171:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;:::o;7535:257::-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;35062:15:105;;;7729:54:93;;;35044:34:105;35114:15;;;35094:18;;;35087:43;;;;35178:8;35166:21;;35146:18;;;35139:49;35236:6;35224:19;;35204:18;;;35197:47;7674:14:93;;7729:7;;;;:20;;34955:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;13194:55:105;;;27501:38:3;;;;13176:74:105;;;;27501:38:3;;;;;;;;;;13149:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;9337:43;9231:156;-1:-1:-1;;;9231:156:8:o;9393:143::-;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;:::-;10474:120;;:::o;10966:1095::-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;19124:55:105;;11664:18:8;;;19106:74:105;19196:18;;;19189:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;19079:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;37026:2:105;11725:175:8;;;37008:21:105;37065:3;37045:18;;;37038:31;37105:34;37085:18;;;37078:62;37176:34;37156:18;;;37149:62;37248:34;37227:19;;;37220:63;-1:-1:-1;;;37299:19:105;;;37292:46;37355:19;;11725:175:8;36824:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;37605:55:105;;11920:24:8;;;37587:74:105;37677:18;;;37670:34;;;37720:18;;;37713:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;37560:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;13395:393::-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;13194:55:105;;1990:25:8;;;13176:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;13149:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;19124:55:105;;;;19106:74;;19211:2;19196:18;;19189:34;19094:2;19079:18;;18932:297;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;19124:55:105;;;19106:74;;19196:18;;;19189:34;19079:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;37026:2:105;2268:187:8;;;37008:21:105;37065:3;37045:18;;;37038:31;37105:34;37085:18;;;37078:62;37176:34;37156:18;;;37149:62;37248:34;37227:19;;;37220:63;-1:-1:-1;;;37299:19:105;;;37292:46;37355:19;;2268:187:8;36824:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;38624:55:105;;;38606:74;;-1:-1:-1;;;;;;38716:33:105;;;38696:18;;;38689:61;;;;38766:18;;;38759:34;38824:2;38809:18;;38802:34;38593:3;38578:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;19124:55:105;;;;19106:74;;19211:2;19196:18;;19189:34;19094:2;19079:18;;18932:297;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;19124:55:105;;;19106:74;;19196:18;;;19189:34;19079:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;37605:55:105;;;3215:32:8;;;37587:74:105;37677:18;;;37670:34;37720:18;;;37713:34;;;37560:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;38624:55:105;;;38606:74;;-1:-1:-1;;;;;;38716:33:105;;;38696:18;;;38689:61;;;;38766:18;;;38759:34;38824:2;38809:18;;38802:34;38593:3;38578:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;37605:55:105;;;3941:29:8;;;37587:74:105;37677:18;;;37670:34;37720:18;;;37713:34;;;37560:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;37605:55:105;;;4033:29:8;;;37587:74:105;37677:18;;;37670:34;37720:18;;;37713:34;;;37560:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;39049:2:105;4107:74:8;;;39031:21:105;39068:18;;;39061:30;;;;39127:34;39107:18;;;39100:62;39198:34;39178:18;;;39171:62;39250:19;;4107:74:8;38847:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;39482:2:105;4202:162:8;;;39464:21:105;39521:2;39501:18;;;39494:30;39560:34;39540:18;;;39533:62;39631:17;39611:18;;;39604:45;39666:19;;4202:162:8;39280:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:681;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:218;948:6;945:1;942:13;934:218;;;1013:13;;-1:-1:-1;;;;;1009:62:105;997:75;;1127:15;;;;1092:12;;;;970:1;963:9;934:218;;;-1:-1:-1;1169:3:105;;497:681;-1:-1:-1;;;;;;497:681:105:o;1183:250::-;1268:1;1278:113;1292:6;1289:1;1286:13;1278:113;;;1368:11;;;1362:18;1349:11;;;1342:39;1314:2;1307:10;1278:113;;;-1:-1:-1;;1425:1:105;1407:16;;1400:27;1183:250::o;1438:271::-;1480:3;1518:5;1512:12;1545:6;1540:3;1533:19;1561:76;1630:6;1623:4;1618:3;1614:14;1607:4;1600:5;1596:16;1561:76;:::i;:::-;1691:2;1670:15;-1:-1:-1;;1666:29:105;1657:39;;;;1698:4;1653:50;;1438:271;-1:-1:-1;;1438:271:105:o;1714:1765::-;1947:2;1999:21;;;2069:13;;1972:18;;;2091:22;;;1918:4;;1947:2;2132;;2150:18;;;;2187:1;2230:15;;;2215:31;;2211:40;;2274:15;;;1918:4;;2338:1112;2354:6;2349:3;2346:15;2338:1112;;;-1:-1:-1;;2423:22:105;;;2419:36;2407:49;;2479:13;;2566:9;;-1:-1:-1;;;;;2562:58:105;2547:74;;2660:11;;2654:18;2692:15;;;2685:27;;;2773:19;;2519:15;;;2805:24;;;2986:21;;;;2852:2;2934:17;;;2922:30;;2918:39;;;2876:15;;;;3031:1;3045:296;3061:8;3056:3;3053:17;3045:296;;;3167:2;3163:7;3154:6;3146;3142:19;3138:33;3131:5;3124:48;3199:42;3234:6;3223:8;3217:15;3199:42;:::i;:::-;3270:17;;;;3189:52;-1:-1:-1;3313:14:105;;;;3089:1;3080:11;3045:296;;;-1:-1:-1;;;3428:12:105;;;;3364:6;-1:-1:-1;;3393:15:105;;;;2380:1;2371:11;2338:1112;;;-1:-1:-1;3467:6:105;;1714:1765;-1:-1:-1;;;;;;;;;;1714:1765:105:o;3484:156::-;3550:20;;3610:4;3599:16;;3589:27;;3579:55;;3630:1;3627;3620:12;3645:252;3709:6;3717;3770:2;3758:9;3749:7;3745:23;3741:32;3738:52;;;3786:1;3783;3776:12;3738:52;3809:27;3826:9;3809:27;:::i;:::-;3799:37;;3855:36;3887:2;3876:9;3872:18;3855:36;:::i;:::-;3845:46;;3645:252;;;;;:::o;4084:1590::-;4286:4;4315:2;4355;4344:9;4340:18;4385:2;4374:9;4367:21;4408:6;4443;4437:13;4474:6;4466;4459:22;4500:2;4490:12;;4533:2;4522:9;4518:18;4511:25;;4595:2;4585:6;4582:1;4578:14;4567:9;4563:30;4559:39;4633:2;4625:6;4621:15;4654:1;4675;4685:960;4701:6;4696:3;4693:15;4685:960;;;4770:22;;;-1:-1:-1;;4766:36:105;4754:49;;4826:13;;4913:9;;-1:-1:-1;;;;;4909:58:105;4894:74;;5007:11;;5001:18;5039:15;;;5032:27;;;5120:19;;4866:15;;;5152:24;;;5242:21;;;;5287:1;;5210:2;5198:15;;;5301:236;5317:8;5312:3;5309:17;5301:236;;;5398:15;;-1:-1:-1;;;;;;5394:42:105;5380:57;;5506:17;;;;5345:1;5336:11;;;;;5463:14;;;;5301:236;;;-1:-1:-1;5623:12:105;;;;5560:5;-1:-1:-1;;;5588:15:105;;;;4727:1;4718:11;4685:960;;;-1:-1:-1;5662:6:105;;4084:1590;-1:-1:-1;;;;;;;;;4084:1590:105:o;5679:803::-;5841:4;5870:2;5910;5899:9;5895:18;5940:2;5929:9;5922:21;5963:6;5998;5992:13;6029:6;6021;6014:22;6067:2;6056:9;6052:18;6045:25;;6129:2;6119:6;6116:1;6112:14;6101:9;6097:30;6093:39;6079:53;;6167:2;6159:6;6155:15;6188:1;6198:255;6212:6;6209:1;6206:13;6198:255;;;6305:2;6301:7;6289:9;6281:6;6277:22;6273:36;6268:3;6261:49;6333:40;6366:6;6357;6351:13;6333:40;:::i;:::-;6323:50;-1:-1:-1;6431:12:105;;;;6396:15;;;;6234:1;6227:9;6198:255;;;-1:-1:-1;6470:6:105;;5679:803;-1:-1:-1;;;;;;;5679:803:105:o;6487:119::-;6572:8;6565:5;6561:20;6554:5;6551:31;6541:59;;6596:1;6593;6586:12;6611:383;6685:6;6693;6701;6754:2;6742:9;6733:7;6729:23;6725:32;6722:52;;;6770:1;6767;6760:12;6722:52;6809:9;6796:23;6828:30;6852:5;6828:30;:::i;:::-;6877:5;-1:-1:-1;6929:2:105;6914:18;;6901:32;;-1:-1:-1;6952:36:105;6984:2;6969:18;;6952:36;:::i;:::-;6942:46;;6611:383;;;;;:::o;7194:154::-;-1:-1:-1;;;;;7273:5:105;7269:54;7262:5;7259:65;7249:93;;7338:1;7335;7328:12;7353:965;7486:6;7494;7502;7510;7518;7526;7534;7542;7595:3;7583:9;7574:7;7570:23;7566:33;7563:53;;;7612:1;7609;7602:12;7563:53;7651:9;7638:23;7670:31;7695:5;7670:31;:::i;:::-;7720:5;-1:-1:-1;7777:2:105;7762:18;;7749:32;7790:33;7749:32;7790:33;:::i;:::-;7842:7;-1:-1:-1;7901:2:105;7886:18;;7873:32;7914:33;7873:32;7914:33;:::i;:::-;7966:7;-1:-1:-1;8025:2:105;8010:18;;7997:32;8038;7997;8038;:::i;:::-;8089:7;-1:-1:-1;8143:3:105;8128:19;;8115:33;;-1:-1:-1;8195:3:105;8180:19;;8167:33;;-1:-1:-1;8219:37:105;8251:3;8236:19;;8219:37;:::i;:::-;8209:47;;8275:37;8307:3;8296:9;8292:19;8275:37;:::i;:::-;8265:47;;7353:965;;;;;;;;;;;:::o;8323:272::-;8381:6;8434:2;8422:9;8413:7;8409:23;8405:32;8402:52;;;8450:1;8447;8440:12;8402:52;8489:9;8476:23;8539:6;8532:5;8528:18;8521:5;8518:29;8508:57;;8561:1;8558;8551:12;8600:896;8724:6;8732;8740;8748;8756;8764;8772;8825:3;8813:9;8804:7;8800:23;8796:33;8793:53;;;8842:1;8839;8832:12;8793:53;8881:9;8868:23;8900:31;8925:5;8900:31;:::i;:::-;8950:5;-1:-1:-1;9007:2:105;8992:18;;8979:32;9020:33;8979:32;9020:33;:::i;:::-;9072:7;-1:-1:-1;9131:2:105;9116:18;;9103:32;9144:33;9103:32;9144:33;:::i;:::-;9196:7;-1:-1:-1;9255:2:105;9240:18;;9227:32;9268;9227;9268;:::i;:::-;9319:7;-1:-1:-1;9373:3:105;9358:19;;9345:33;;-1:-1:-1;9397:37:105;9429:3;9414:19;;9397:37;:::i;:::-;9387:47;;9453:37;9485:3;9474:9;9470:19;9453:37;:::i;:::-;9443:47;;8600:896;;;;;;;;;;:::o;9501:127::-;9562:10;9557:3;9553:20;9550:1;9543:31;9593:4;9590:1;9583:15;9617:4;9614:1;9607:15;9633:127;9694:10;9689:3;9685:20;9682:1;9675:31;9725:4;9722:1;9715:15;9749:4;9746:1;9739:15;9765:218;9912:2;9901:9;9894:21;9875:4;9932:45;9973:2;9962:9;9958:18;9950:6;9932:45;:::i;9988:435::-;10041:3;10079:5;10073:12;10106:6;10101:3;10094:19;10132:4;10161:2;10156:3;10152:12;10145:19;;10198:2;10191:5;10187:14;10219:1;10229:169;10243:6;10240:1;10237:13;10229:169;;;10304:13;;10292:26;;10338:12;;;;10373:15;;;;10265:1;10258:9;10229:169;;;-1:-1:-1;10414:3:105;;9988:435;-1:-1:-1;;;;;9988:435:105:o;10428:704::-;10720:4;-1:-1:-1;;;;;10830:2:105;10822:6;10818:15;10807:9;10800:34;10882:2;10874:6;10870:15;10865:2;10854:9;10850:18;10843:43;;10922:3;10917:2;10906:9;10902:18;10895:31;10949:57;11001:3;10990:9;10986:19;10978:6;10949:57;:::i;:::-;11054:9;11046:6;11042:22;11037:2;11026:9;11022:18;11015:50;11082:44;11119:6;11111;11082:44;:::i;:::-;11074:52;10428:704;-1:-1:-1;;;;;;;10428:704:105:o;11137:275::-;11208:2;11202:9;11273:2;11254:13;;-1:-1:-1;;11250:27:105;11238:40;;11308:18;11293:34;;11329:22;;;11290:62;11287:88;;;11355:18;;:::i;:::-;11391:2;11384:22;11137:275;;-1:-1:-1;11137:275:105:o;11417:183::-;11477:4;11510:18;11502:6;11499:30;11496:56;;;11532:18;;:::i;:::-;-1:-1:-1;11577:1:105;11573:14;11589:4;11569:25;;11417:183::o;11605:659::-;11670:5;11723:3;11716:4;11708:6;11704:17;11700:27;11690:55;;11741:1;11738;11731:12;11690:55;11770:6;11764:13;11796:4;11820:60;11836:43;11876:2;11836:43;:::i;:::-;11820:60;:::i;:::-;11914:15;;;12000:1;11996:10;;;;11984:23;;11980:32;;;11945:12;;;;12024:15;;;12021:35;;;12052:1;12049;12042:12;12021:35;12088:2;12080:6;12076:15;12100:135;12116:6;12111:3;12108:15;12100:135;;;12182:10;;12170:23;;12213:12;;;;12133;;12100:135;;;-1:-1:-1;12253:5:105;11605:659;-1:-1:-1;;;;;;11605:659:105:o;12269:363::-;12364:6;12417:2;12405:9;12396:7;12392:23;12388:32;12385:52;;;12433:1;12430;12423:12;12385:52;12466:9;12460:16;12499:18;12491:6;12488:30;12485:50;;;12531:1;12528;12521:12;12485:50;12554:72;12618:7;12609:6;12598:9;12594:22;12554:72;:::i;12637:380::-;12716:1;12712:12;;;;12759;;;12780:61;;12834:4;12826:6;12822:17;12812:27;;12780:61;12887:2;12879:6;12876:14;12856:18;12853:38;12850:161;;12933:10;12928:3;12924:20;12921:1;12914:31;12968:4;12965:1;12958:15;12996:4;12993:1;12986:15;12850:161;;12637:380;;;:::o;13261:184::-;13331:6;13384:2;13372:9;13363:7;13359:23;13355:32;13352:52;;;13400:1;13397;13390:12;13352:52;-1:-1:-1;13423:16:105;;13261:184;-1:-1:-1;13261:184:105:o;13450:127::-;13511:10;13506:3;13502:20;13499:1;13492:31;13542:4;13539:1;13532:15;13566:4;13563:1;13556:15;13582:127;13643:10;13638:3;13634:20;13631:1;13624:31;13674:4;13671:1;13664:15;13698:4;13695:1;13688:15;13714:120;13754:1;13780;13770:35;;13785:18;;:::i;:::-;-1:-1:-1;13819:9:105;;13714:120::o;13839:168::-;13912:9;;;13943;;13960:15;;;13954:22;;13940:37;13930:71;;13981:18;;:::i;14012:128::-;14079:9;;;14100:11;;;14097:37;;;14114:18;;:::i;14145:192::-;14224:13;;-1:-1:-1;;;;;14266:46:105;;14256:57;;14246:85;;14327:1;14324;14317:12;14342:293;14421:6;14429;14482:2;14470:9;14461:7;14457:23;14453:32;14450:52;;;14498:1;14495;14488:12;14450:52;14521:40;14551:9;14521:40;:::i;:::-;14511:50;;14580:49;14625:2;14614:9;14610:18;14580:49;:::i;14964:135::-;15003:3;15024:17;;;15021:43;;15044:18;;:::i;:::-;-1:-1:-1;15091:1:105;15080:13;;14964:135::o;15104:148::-;15192:4;15171:12;;;15185;;;15167:31;;15210:13;;15207:39;;;15226:18;;:::i;15257:151::-;15347:4;15340:12;;;15326;;;15322:31;;15365:14;;15362:40;;;15382:18;;:::i;15620:173::-;15688:8;15729:10;;;15717;;;15713:27;;15752:12;;;15749:38;;;15767:18;;:::i;15798:170::-;15865:8;15893:10;;;15905;;;15889:27;;15928:11;;;15925:37;;;15942:18;;:::i;16258:249::-;16327:6;16380:2;16368:9;16359:7;16355:23;16351:32;16348:52;;;16396:1;16393;16386:12;16348:52;16428:9;16422:16;16447:30;16471:5;16447:30;:::i;16788:125::-;16853:9;;;16874:10;;;16871:36;;;16887:18;;:::i;16918:498::-;17132:4;-1:-1:-1;;;;;17242:2:105;17234:6;17230:15;17219:9;17212:34;17282:2;17277;17266:9;17262:18;17255:30;17302:56;17354:2;17343:9;17339:18;17331:6;17302:56;:::i;:::-;17294:64;;17406:2;17398:6;17394:15;17389:2;17378:9;17374:18;17367:43;;16918:498;;;;;;:::o;17421:1003::-;17534:6;17542;17550;17603:2;17591:9;17582:7;17578:23;17574:32;17571:52;;;17619:1;17616;17609:12;17571:52;17648:9;17642:16;17632:26;;17677:2;17719;17708:9;17704:18;17698:25;17688:35;;17767:2;17756:9;17752:18;17746:25;17794:18;17786:6;17783:30;17780:50;;;17826:1;17823;17816:12;17780:50;17849:22;;17902:4;17894:13;;17890:27;-1:-1:-1;17880:55:105;;17931:1;17928;17921:12;17880:55;17960:2;17954:9;17983:60;17999:43;18039:2;17999:43;:::i;17983:60::-;18077:15;;;18159:1;18155:10;;;;18147:19;;18143:28;;;18108:12;;;;18183:19;;;18180:39;;;18215:1;18212;18205:12;18180:39;18239:11;;;;18259:135;18275:6;18270:3;18267:15;18259:135;;;18341:10;;18329:23;;18292:12;;;;18372;;;;18259:135;;;18413:5;18403:15;;;;;;;17421:1003;;;;;:::o;18429:267::-;18515:6;18568:2;18556:9;18547:7;18543:23;18539:32;18536:52;;;18584:1;18581;18574:12;18536:52;18616:9;18610:16;18635:31;18660:5;18635:31;:::i;19234:164::-;19310:13;;19359;;19352:21;19342:32;;19332:60;;19388:1;19385;19378:12;19403:202;19470:6;19523:2;19511:9;19502:7;19498:23;19494:32;19491:52;;;19539:1;19536;19529:12;19491:52;19562:37;19589:9;19562:37;:::i;20291:634::-;20421:6;20429;20437;20445;20453;20461;20469;20477;20530:3;20518:9;20509:7;20505:23;20501:33;20498:53;;;20547:1;20544;20537:12;20498:53;20576:9;20570:16;20560:26;;20626:2;20615:9;20611:18;20605:25;20595:35;;20670:2;20659:9;20655:18;20649:25;20639:35;;20714:2;20703:9;20699:18;20693:25;20683:35;;20758:3;20747:9;20743:19;20737:26;20727:36;;20803:3;20792:9;20788:19;20782:26;20772:36;;20848:3;20837:9;20833:19;20827:26;20817:36;;20872:47;20914:3;20903:9;20899:19;20872:47;:::i;21421:216::-;21461:1;-1:-1:-1;;;;;21548:2:105;21545:1;21541:10;21570:3;21560:37;;21577:18;;:::i;:::-;21615:10;;21611:20;;;;;21421:216;-1:-1:-1;;21421:216:105:o;23406:338::-;-1:-1:-1;;;;;23585:6:105;23581:55;23570:9;23563:74;23673:2;23668;23657:9;23653:18;23646:30;23544:4;23693:45;23734:2;23723:9;23719:18;23711:6;23693:45;:::i;32284:362::-;32489:6;32478:9;32471:25;32532:6;32527:2;32516:9;32512:18;32505:34;32575:2;32570;32559:9;32555:18;32548:30;32452:4;32595:45;32636:2;32625:9;32621:18;32613:6;32595:45;:::i;32651:435::-;32884:6;32873:9;32866:25;32927:6;32922:2;32911:9;32907:18;32900:34;32970:6;32965:2;32954:9;32950:18;32943:34;33013:3;33008:2;32997:9;32993:18;32986:31;32847:4;33034:46;33075:3;33064:9;33060:19;33052:6;33034:46;:::i;35528:287::-;35657:3;35695:6;35689:13;35711:66;35770:6;35765:3;35758:4;35750:6;35746:17;35711:66;:::i;:::-;35793:16;;;;;35528:287;-1:-1:-1;;35528:287:105:o;35820:384::-;-1:-1:-1;;;;;;36005:33:105;;35993:46;;36062:13;;35975:3;;36084:74;36062:13;36147:1;36138:11;;36131:4;36119:17;;36084:74;:::i;:::-;36178:16;;;;36196:1;36174:24;;35820:384;-1:-1:-1;;;35820:384:105:o;36209:610::-;36455:13;;36398:3;;36429;;36508:4;36535:15;;;36398:3;36578:175;36592:6;36589:1;36586:13;36578:175;;;36655:13;;36641:28;;36691:14;;;;36728:15;;;;36614:1;36607:9;36578:175;;;-1:-1:-1;;36762:21:105;;;-1:-1:-1;36799:14:105;;;;;-1:-1:-1;;;36209:610:105:o;37758:614::-;37887:6;37895;37948:2;37936:9;37927:7;37923:23;37919:32;37916:52;;;37964:1;37961;37954:12;37916:52;37997:9;37991:16;38026:18;38067:2;38059:6;38056:14;38053:34;;;38083:1;38080;38073:12;38053:34;38106:72;38170:7;38161:6;38150:9;38146:22;38106:72;:::i;:::-;38096:82;;38224:2;38213:9;38209:18;38203:25;38187:41;;38253:2;38243:8;38240:16;38237:36;;;38269:1;38266;38259:12;38237:36;;38292:74;38358:7;38347:8;38336:9;38332:24;38292:74;:::i;:::-;38282:84;;;37758:614;;;;;:::o","linkReferences":{},"immutableReferences":{"83397":[{"start":1067,"length":32},{"start":1209,"length":32},{"start":1323,"length":32},{"start":2425,"length":32},{"start":3064,"length":32},{"start":3230,"length":32},{"start":3485,"length":32},{"start":4569,"length":32},{"start":4796,"length":32},{"start":7456,"length":32},{"start":7608,"length":32},{"start":7943,"length":32},{"start":8072,"length":32},{"start":8134,"length":32},{"start":8177,"length":32},{"start":9114,"length":32},{"start":9180,"length":32},{"start":9246,"length":32},{"start":10054,"length":32},{"start":10188,"length":32},{"start":10670,"length":32},{"start":10834,"length":32},{"start":10963,"length":32},{"start":11130,"length":32},{"start":13363,"length":32},{"start":13515,"length":32},{"start":13850,"length":32},{"start":13911,"length":32},{"start":14077,"length":32},{"start":14345,"length":32},{"start":15462,"length":32},{"start":15622,"length":32},{"start":15681,"length":32},{"start":15809,"length":32},{"start":15888,"length":32},{"start":16457,"length":32},{"start":16759,"length":32},{"start":19086,"length":32},{"start":19192,"length":32},{"start":19314,"length":32},{"start":19448,"length":32},{"start":19709,"length":32},{"start":20050,"length":32},{"start":20144,"length":32},{"start":20498,"length":32},{"start":20589,"length":32}],"91782":[{"start":1560,"length":32},{"start":6492,"length":32},{"start":6812,"length":32},{"start":7103,"length":32},{"start":15577,"length":32},{"start":19147,"length":32},{"start":19408,"length":32},{"start":19676,"length":32},{"start":23585,"length":32}],"91790":[{"start":2348,"length":32},{"start":2492,"length":32},{"start":2773,"length":32},{"start":4235,"length":32},{"start":4492,"length":32},{"start":7379,"length":32},{"start":7866,"length":32},{"start":7995,"length":32},{"start":9037,"length":32},{"start":13286,"length":32},{"start":13773,"length":32},{"start":16380,"length":32},{"start":19041,"length":32}],"91798":[{"start":2382,"length":32},{"start":4016,"length":32},{"start":4526,"length":32},{"start":4900,"length":32},{"start":5218,"length":32},{"start":5379,"length":32},{"start":5527,"length":32},{"start":5745,"length":32},{"start":7413,"length":32},{"start":7672,"length":32},{"start":7900,"length":32},{"start":8029,"length":32},{"start":8250,"length":32},{"start":8524,"length":32},{"start":9071,"length":32},{"start":10148,"length":32},{"start":10365,"length":32},{"start":10521,"length":32},{"start":11944,"length":32},{"start":13320,"length":32},{"start":13579,"length":32},{"start":13807,"length":32},{"start":14915,"length":32},{"start":16414,"length":32},{"start":16863,"length":32},{"start":17257,"length":32},{"start":17418,"length":32},{"start":17566,"length":32},{"start":17802,"length":32},{"start":18035,"length":32},{"start":18191,"length":32},{"start":18339,"length":32},{"start":18557,"length":32},{"start":20359,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_BurnHalfTwice()":"c8b02662","test_GetNextNonEmptyBin()":"7428239e","test_MintTwice()":"b0e6b725","test_MintWithDifferentBins()":"6387c30e","test_SimpleBurn()":"43024c0e","test_SimpleMint()":"402eeb1f","test_revert_BurnEmptyArraysOrDifferent()":"4a432f92","test_revert_BurnForZeroAmounts()":"b579ea47","test_revert_BurnMoreThanBalance()":"cc6bb8c1","test_revert_BurnZeroShares()":"12d2b157","test_revert_MintEmptyConfig()":"a3c26b2a","test_revert_MintMoreThanAmountSent()":"f8df23b6","test_revert_MintZeroShares()":"b61f5e5c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BurnHalfTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetNextNonEmptyBin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_MintTwice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_MintWithDifferentBins\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SimpleBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SimpleMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_BurnEmptyArraysOrDifferent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_BurnForZeroAmounts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_BurnMoreThanBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_BurnZeroShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_MintEmptyConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_MintMoreThanAmountSent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_MintZeroShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairLiquidity.t.sol\":\"LBPairLiquidityTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairLiquidity.t.sol\":{\"keccak256\":\"0x1120d087c758e82b506c30f346bdcf3278d14d74ba17c2740c55453a187ca510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94b5f40d10ccce45e83a45aafbf7c842a30ec32962943358851e7259be7f63af\",\"dweb:/ipfs/QmUU3dsFcno4ScnM7d1QSaiwfJhujMWrfUXNjUVXT6gKEB\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BurnHalfTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_GetNextNonEmptyBin"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_MintTwice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_MintWithDifferentBins"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SimpleBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SimpleMint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_BurnEmptyArraysOrDifferent"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_BurnForZeroAmounts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_BurnMoreThanBalance"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_BurnZeroShares"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_MintEmptyConfig"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_MintMoreThanAmountSent"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_MintZeroShares"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairLiquidity.t.sol":"LBPairLiquidityTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairLiquidity.t.sol":{"keccak256":"0x1120d087c758e82b506c30f346bdcf3278d14d74ba17c2740c55453a187ca510","urls":["bzz-raw://94b5f40d10ccce45e83a45aafbf7c842a30ec32962943358851e7259be7f63af","dweb:/ipfs/QmUU3dsFcno4ScnM7d1QSaiwfJhujMWrfUXNjUVXT6gKEB"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/abi/LBPairOracle.t.sol/LBPairOracleTest.json b/abi/LBPairOracle.t.sol/LBPairOracleTest.json deleted file mode 100644 index c52cbe35..00000000 --- a/abi/LBPairOracle.t.sol/LBPairOracleTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_IncreaseOracleLength","inputs":[{"name":"newLength","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_1SampleAdded","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CircularOracleGetSampleAt","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_CircularOracleWith2Samples","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_GetOracleParametersEmptyOracle","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_MaxLengthOracle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c0516201c2616200035860003960008181610aa201528181610ae701528181610bfe01528181610eab01528181610fc4015281816113c0015281816114050152818161151c015281816117c5015281816118de01528181611ba201528181611be701528181611cff01528181612b5901528181612b9e01528181612cb501528181612ef20152818161300b015281816132550152818161336e0152818161376a015281816137b2015281816138c0015281816139e5015281816142dd01526143f701526000505060008181610509015261556201526201c2616000f3fe60806040523480156200001157600080fd5b5060043610620001ad5760003560e01c80638fee3aae11620000f5578063b89e02331162000097578063e20c9f71116200006e578063e20c9f71146200034f578063f0a759931462000359578063fecaa223146200036357600080fd5b8063b89e02331462000324578063ba414fa6146200033b578063c449527b146200034557600080fd5b8063a7aa85e911620000cc578063a7aa85e914620002ec578063b40805881462000303578063b5508aa9146200031a57600080fd5b80638fee3aae14620002ce578063916a17c614620002d85780639be2dac914620002e257600080fd5b80633e5e3c23116200015f57806366d9a9a0116200013657806366d9a9a0146200027057806385226c811462000289578063889be5b714620002a257600080fd5b80633e5e3c2314620002365780633f7286f4146200024057806349789ef9146200024a57600080fd5b80630a9254e411620001945780630a9254e414620001fa5780631ed7831c14620002045780632ade3880146200021d57600080fd5b806301ffc9a714620001b2578063083e06e514620001ee575b600080fd5b620001d9620001c33660046200827a565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620001f86200037a565b005b620001f8620004bb565b6200020e62000544565b604051620001e59190620082a6565b62000227620005a8565b604051620001e5919062008349565b6200020e620006f6565b6200020e62000758565b620002616200025b3660046200841f565b620007ba565b604051908152602001620001e5565b6200027a6200080f565b604051620001e591906200845d565b62000293620008f9565b604051620001e5919062008514565b620002b9620002b33660046200858c565b620009d3565b60405162ffffff9091168152602001620001e5565b620001f862000a2e565b6200027a620011e4565b620001f8620012ce565b620001f8620002fd366004620085e9565b62001fef565b620001f8620003143660046200869e565b6200248f565b62000293620028ce565b620001d9620003353660046200869e565b620029a8565b620001d962002a2b565b620001f862002ae5565b6200020e620036f5565b620001f862003757565b620001f862000374366004620086be565b620049d0565b600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa91906200876e565b64ffffffffff16945064ffffffffff16945061ffff16945061ffff16945050620004408460006040518060600160405280602681526020016201c1e46026913962004cc6565b620004678360006040518060600160405280602681526020016201be476026913962004cc6565b6200048e8260006040518060600160405280602681526020016201c1be6026913962004cc6565b620004b58160006040518060600160405280602681526020016201bfbc6026913962004cc6565b50505050565b620004c562004d35565b601c54601d54620004e3916001600160a01b03908116911662006360565b602780546001600160a01b0319166001600160a01b0392909216918217905562000542907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a764000080600a8062001fef565b565b606060148054806020026020016040519081016040528092919081815260200182805480156200059e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200057f575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620006ed57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620006d55783829060005260206000200180546200064190620087e6565b80601f01602080910402602001604051908101604052809291908181526020018280546200066f90620087e6565b8015620006c05780601f106200069457610100808354040283529160200191620006c0565b820191906000526020600020905b815481529060010190602001808311620006a257829003601f168201915b5050505050815260200190600101906200061f565b505050508152505081526020019060010190620005cc565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200059e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200057f575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200059e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200057f575050505050905090565b6000808360ff16118015620007d2575060008260ff16115b620007e957620007e3828462008838565b62000803565b6001620007f7838562008838565b62000803919062008854565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620008e057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620008a15790505b5050505050815250508152602001906001019062000833565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5783829060005260206000200180546200093f90620087e6565b80601f01602080910402602001604051908101604052809291908181526020018280546200096d90620087e6565b8015620009be5780601f106200099257610100808354040283529160200191620009be565b820191906000526020600020905b815481529060010190602001808311620009a057829003601f168201915b5050505050815260200190600101906200091d565b600080620009e78462ffffff871662008870565b905060008360ff1611620009fc578062000a18565b62000a0b60ff84168262008886565b62000a1890600162008870565b905062000a258162006379565b95945050505050565b6027546040516363deb2c360e11b8152606460048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b15801562000a7557600080fd5b505af115801562000a8a573d6000803e3d6000fd5b5050601c5462000ad092506001600160a01b031690507f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562000b4157600080fd5b505af115801562000b56573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562000bb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bdc9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000c51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c779190620088cb565b50600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562000cd2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cf891906200876e565b94509450945094505062000d488461ffff1660646040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3100000000000000000000000081525062004cc6565b62000d8f8361ffff1660016040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3200000000000000000000000081525062004cc6565b62000dd88264ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3300000000000000000000000081525062004cc6565b62000e218164ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3400000000000000000000000081525062004cc6565b6000805160206201bef583398151915263e5d6bf0262000e4342600162008870565b6040518263ffffffff1660e01b815260040162000e6291815260200190565b600060405180830381600087803b15801562000e7d57600080fd5b505af115801562000e92573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f0757600080fd5b505af115801562000f1c573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562000f7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa29190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001017573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200103d9190620088cb565b50602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562001092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010b891906200876e565b60408051808201909152601481527f746573745f3153616d706c6541646465643a3a350000000000000000000000006020820152939850919650945092506200110b915061ffff86169060649062004cc6565b620011528361ffff1660016040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3600000000000000000000000081525062004cc6565b6200119b8264ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3700000000000000000000000081525062004cc6565b620004b58164ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3800000000000000000000000081525062004cc6565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620012b557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620012765790505b5050505050815250508152602001906001019062001208565b6027546040516363deb2c360e11b8152600260048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b1580156200131557600080fd5b505af11580156200132a573d6000803e3d6000fd5b505050506000602760009054906101000a90046001600160a01b03166001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001384573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013aa9190620088e5565b601c54909150620013ee906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b1580156200145f57600080fd5b505af115801562001474573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af1158015620014d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014fa9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200156f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015959190620088cb565b506027546040516344a050b560e11b81524264ffffffffff8116600483015291600091829182916001600160a01b0390911690638940a16a90602401606060405180830381865afa158015620015ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200161591906200891d565b9250925092506000602760009054906101000a90046001600160a01b03166001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001671573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016979190620088e5565b9050620016d86001600160401b038516620016b88762ffffff8a1662008967565b6040518060600160405280602181526020016201bf156021913962004cc6565b62001708836001600160401b031660006040518060600160405280602181526020016201beb16021913962004cc6565b62001738826001600160401b031660006040518060600160405280602181526020016201c04a6021913962004cc6565b4294506000805160206201bef583398151915263e5d6bf026200175d87607962008870565b6040518263ffffffff1660e01b81526004016200177c91815260200190565b600060405180830381600087803b1580156200179757600080fd5b505af1158015620017ac573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b1580156200182157600080fd5b505af115801562001836573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562001896573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018bc9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019579190620088cb565b5062001964854262008886565b6027546040516344a050b560e11b815264ffffffffff421660048201529196508591859185916001600160a01b0390911690638940a16a90602401606060405180830381865afa158015620019bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019e391906200891d565b602754604080516336f997b760e21b81529051949b509299509097506000926001600160a01b039091169163dbe65edc9160048083019260209291908290030181865afa15801562001a39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a5f9190620088e5565b905062001ab56001600160401b03891662001a808b62ffffff891662008967565b62001a95906001600160401b03881662008870565b6040518060600160405280602181526020016201c1376021913962004cc6565b62001ae5876001600160401b031660006040518060600160405280602181526020016201c1586021913962004cc6565b62001b15866001600160401b031660006040518060600160405280602181526020016201be6d6021913962004cc6565b4298506000805160206201bef583398151915263e5d6bf0262001b3b8b6103e862008870565b6040518263ffffffff1660e01b815260040162001b5a91815260200190565b600060405180830381600087803b15801562001b7557600080fd5b505af115801562001b8a573d6000803e3d6000fd5b5050601d5462001bd092506001600160a01b031690507f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562001c4157600080fd5b505af115801562001c56573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562001cb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cdd9190620088ad565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001d52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d789190620088cb565b5062001d85894262008886565b6027546040516344a050b560e11b815264ffffffffff42166004820152919a508995508894508793506001600160a01b031690638940a16a90602401606060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0591906200891d565b60275460408051638d7024e560e01b81529051949c50929a509098506000926001600160a01b0390911691638d7024e59160048083019260809291908290030181865afa15801562001e5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e81919062008981565b505050905062001edc896001600160401b03168b8462ffffff1662001ea7919062008967565b62001ebc906001600160401b03891662008870565b6040518060600160405280602181526020016201c06b6021913962004cc6565b62001f1b6001600160401b03891662001efb8c62ffffff851662008967565b6040518060600160405280602181526020016201bf9b6021913962004cc6565b62001fe2876001600160401b03168b84602760009054906101000a90046001600160a01b03166001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa59190620088e5565b62001fb19190620089e6565b62ffffff1662001fc2919062008967565b6040518060600160405280602181526020016201bf586021913962004cc6565b5050505050505050505050565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002030573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002056919062008a05565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002099573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020bf919062008a05565b9050620020ce828b88620063a5565b620020db818b87620063a5565b6000620020e98585620007ba565b90506000816001600160401b0381111562002108576200210862008a25565b60405190808252806020026020018201604052801562002132578160200160208202803683370190505b50905060005b8281101562002231576000620021508b8389620009d3565b905060008b62ffffff168262ffffff161015801562002172575060008960ff16115b6200217f576000620021a0565b620021a06200219a60ff8b16670de0b6b3a764000062008a51565b620063b9565b905060008c62ffffff168362ffffff1611158015620021c2575060008960ff16115b620021cf576000620021ea565b620021ea6200219a60ff8b16670de0b6b3a764000062008a51565b9050620021f9828285620063e4565b8585815181106200220e576200220e62008a68565b60200260200101818152505050505080620022299062008a7e565b905062002138565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201bef5833981519152906306447d5690602401600060405180830381600087803b1580156200228357600080fd5b505af115801562002298573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af1158015620022ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023129190620088ad565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562002363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023899190620088ad565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620023e957600080fd5b505af1158015620023fe573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b8152600401620024349392919062008a9a565b6000604051808303816000875af115801562002454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200247e919081019062008b59565b505050505050505050505050505050565b6000805160206201bef5833981519152634c63e56261ffff831615801590620024bc575060648361ffff16105b6040518263ffffffff1660e01b8152600401620024dd911515815260200190565b60006040518083038186803b158015620024f657600080fd5b505afa1580156200250b573d6000803e3d6000fd5b50505050600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562002569573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258f91906200876e565b945094509450945050620025df8461ffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3181525062004cc6565b620026268361ffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3281525062004cc6565b620026708264ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3381525062004cc6565b620026ba8164ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3481525062004cc6565b6027546040516363deb2c360e11b815261ffff871660048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b1580156200270457600080fd5b505af115801562002719573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562002771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200279791906200876e565b6040805180820190915260208082527f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a359082015293985091965094509250620027ec915061ffff808716919088169062004cc6565b620028338361ffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3681525062004cc6565b6200287d8264ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3781525062004cc6565b620028c78164ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3881525062004cc6565b5050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5783829060005260206000200180546200291490620087e6565b80601f01602080910402602001604051908101604052809291908181526020018280546200294290620087e6565b8015620029935780601f10620029675761010080835404028352916020019162002993565b820191906000526020600020905b8154815290600101906020018083116200297557829003601f168201915b505050505081526020019060010190620028f2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620029f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a1e919062008c0d565b9998505050505050505050565b60075460009060ff161562002a44575060075460ff1690565b604051630667f9d760e41b81526000805160206201bef5833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562002ab8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ade9190620088cb565b1415905090565b6027546040516363deb2c360e11b8152600260048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b15801562002b2c57600080fd5b505af115801562002b41573d6000803e3d6000fd5b5050601c5462002b8792506001600160a01b031690507f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562002bf857600080fd5b505af115801562002c0d573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562002c6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c939190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562002d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2e9190620088cb565b50600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562002d89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002daf91906200876e565b94509450945094505062002de38461ffff1660026040518060600160405280602281526020016201c1156022913962004cc6565b62002e0e8361ffff1660016040518060600160405280602281526020016201bf366022913962004cc6565b62002e3b8264ffffffffff16426040518060600160405280602281526020016201c0d06022913962004cc6565b62002e688164ffffffffff16426040518060600160405280602281526020016201bfe26022913962004cc6565b6000805160206201bef583398151915263e5d6bf0262002e8a42607962008870565b6040518263ffffffff1660e01b815260040162002ea991815260200190565b600060405180830381600087803b15801562002ec457600080fd5b505af115801562002ed9573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b15801562002f4e57600080fd5b505af115801562002f63573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562002fc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fe99190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200305e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030849190620088cb565b50602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015620030d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030ff91906200876e565b60408051606081019091526022808252949950929750909550935062003139925061ffff871691600291906201c179602083013962004cc6565b620031648361ffff1660026040518060600160405280602281526020016201bf796022913962004cc6565b620031918264ffffffffff16426040518060600160405280602281526020016201c08c6022913962004cc6565b620031ca64ffffffffff8216620031aa60794262008886565b6040518060600160405280602281526020016201c0ae6022913962004cc6565b6000805160206201bef583398151915263e5d6bf02620031ed426103e862008870565b6040518263ffffffff1660e01b81526004016200320c91815260200190565b600060405180830381600087803b1580156200322757600080fd5b505af11580156200323c573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b158015620032b157600080fd5b505af1158015620032c6573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200334c9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620033c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033e79190620088cb565b50602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa1580156200343c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200346291906200876e565b6040805160608101909152602280825294995092975090955093506200349c925061ffff871691600291906201c20a602083013962004cc6565b620034c78361ffff1660026040518060600160405280602381526020016201c0046023913962004cc6565b620034f48264ffffffffff16426040518060600160405280602381526020016201be8e6023913962004cc6565b6200352e64ffffffffff82166200350e6103e84262008886565b6040518060600160405280602381526020016201c0276023913962004cc6565b6000805160206201bef583398151915263e5d6bf026200355042606462008870565b6040518263ffffffff1660e01b81526004016200356f91815260200190565b600060405180830381600087803b1580156200358a57600080fd5b505af11580156200359f573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015620035f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200361d91906200876e565b60408051606081019091526023808252949950929750909550935062003657925061ffff871691600291906201c0f2602083013962004cc6565b620036828361ffff1660026040518060600160405280602381526020016201be246023913962004cc6565b620036bb64ffffffffff83166200369b60644262008886565b6040518060600160405280602381526020016201c19b6023913962004cc6565b620004b564ffffffffff8216620036d561044c4262008886565b6040518060600160405280602381526020016201bed26023913962004cc6565b606060138054806020026020016040519081016040528092919081815260200182805480156200059e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200057f575050505050905090565b601c546200379f906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f1000000000620063a5565b601d54620037e7906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f1000000000620063a5565b6027546040516363deb2c360e11b815261ffff60048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b1580156200382f57600080fd5b505af115801562003844573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526103e860048201526000805160206201bef5833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200389257600080fd5b505af1158015620038a7573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef583398151915292506306447d569150602401600060405180830381600087803b1580156200391c57600080fd5b505af115801562003931573d6000803e3d6000fd5b5050505060005b61ffff81101562003aea57601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526402540be400602482015291169063a9059cbb906044016020604051808303816000875af11580156200399d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039c39190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562003a38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a5e9190620088cb565b506000805160206201bef583398151915263e5d6bf0262003a8142607962008870565b6040518263ffffffff1660e01b815260040162003aa091815260200190565b600060405180830381600087803b15801562003abb57600080fd5b505af115801562003ad0573d6000803e3d6000fd5b50505050808062003ae19062008a7e565b91505062003938565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003b4a57600080fd5b505af115801562003b5f573d6000803e3d6000fd5b50505050600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562003bbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003be391906200876e565b64ffffffffff16945064ffffffffff16945061ffff16945061ffff1694505062003c468461ffff6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3100000000000000000081525062004cc6565b62003c8a8361ffff6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3200000000000000000081525062004cc6565b62003cd88262003c9c60794262008886565b6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3300000000000000000081525062004cc6565b62003d288162003cec6278ff874262008886565b6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3400000000000000000081525062004cc6565b602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa15801562003d73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d999190620088e5565b6027546040516344a050b560e11b815264ffffffffff42166004820152919250600091829182916001600160a01b0390911690638940a16a90602401606060405180830381865afa15801562003df3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e1991906200891d565b6027549295509093509150600090819081906001600160a01b0316638940a16a62003e4660794262008886565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa15801562003e89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003eaf91906200891d565b9194509250905062003f276001600160401b03871662003ed662ffffff8a16607962008c76565b62003ee2908662008ca4565b6001600160401b03166040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3500000000000000000081525062004cc6565b62003f73856001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3600000000000000000081525062004cc6565b62003fbf846001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3700000000000000000081525062004cc6565b6200400b826001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3800000000000000000081525062004cc6565b62004057816001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3900000000000000000081525062004cc6565b620040c0607962004069858962008cc7565b62004075919062008cea565b6001600160401b03168862ffffff166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3130000000000000000081525062004cc6565b6200410c846001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3131000000000000000081525062004cc6565b6027546001600160a01b0316638940a16a6200412a60024262008a51565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa1580156200416d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200419391906200891d565b5090935062004239905042620041bb6001600160401b038916670de0b6b3a764000062008967565b620041c7919062008a51565b620041d460024262008a51565b620041f16001600160401b038716670de0b6b3a764000062008967565b620041fd919062008a51565b6040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3132000000000000000081525062004cc6565b506000805160206201bef5833981519152945063e5d6bf029350607992506200426991504290506103e862008870565b62004275919062008886565b6040518263ffffffff1660e01b81526004016200429491815260200190565b600060405180830381600087803b158015620042af57600080fd5b505af1158015620042c4573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b1580156200433957600080fd5b505af11580156200434e573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af1158015620043af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043d59190620088ad565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200444a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044709190620088cb565b50602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa158015620044bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044e29190620088e5565b6027546040516344a050b560e11b815264ffffffffff4216600482015262ffffff929092169250600091829182916001600160a01b0390911690638940a16a90602401606060405180830381865afa15801562004543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200456991906200891d565b6027549295509093509150600090819081906001600160a01b0316638940a16a62004597610e104262008886565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa158015620045da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200460091906200891d565b6027549295509093509150600090819081906001600160a01b0316638940a16a6200462f620151804262008886565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa15801562004672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200469891906200891d565b925092509250620046ea826001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3133000000000000000081525062004cc6565b62004736816001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3134000000000000000081525062004cc6565b62004782856001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3135000000000000000081525062004cc6565b620047ce846001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3136000000000000000081525062004cc6565b6200484d620047e562ffffff8d16610e1062008c76565b620047f290601762008c76565b620047fe908562008ca4565b6001600160401b0316876001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3137000000000000000081525062004cc6565b620048de6200486462ffffff8d166103e862008c76565b6200487762ffffff8e16610a2862008c76565b62004883908962008ca4565b6200488f919062008ca4565b6001600160401b03168a6001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3138000000000000000081525062004cc6565b6200495e6001600160401b038916620048fd62ffffff8e168d62008cc7565b6200490b9061271062008c76565b62004919906103e862008c76565b6001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3139000000000000000081525062004cc6565b6200247e6001600160401b0388166200497d62ffffff8e168d62008cc7565b6200498b906103e862008c76565b6001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3230000000000000000081525062004cc6565b670de0b6b3a764000083111562004a2e5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062004a3c8383620007ba565b90506000816001600160401b0381111562004a5b5762004a5b62008a25565b60405190808252806020026020018201604052801562004a85578160200160208202803683370190505b5090506000826001600160401b0381111562004aa55762004aa562008a25565b60405190808252806020026020018201604052801562004acf578160200160208202803683370190505b50905060005b8381101562004bdd57600062004aed898388620009d3565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562004b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b699190620088cb565b90508162ffffff1685848151811062004b865762004b8662008a68565b602090810291909101015262004ba6818a670de0b6b3a764000062006422565b84848151811062004bbb5762004bbb62008a68565b60200260200101818152505050508062004bd59062008a7e565b905062004ad5565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562004c2f57600080fd5b505af115801562004c44573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062004c7c908d908d908790879060040162008d50565b6000604051808303816000875af115801562004c9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fe2919081019062008e0a565b6040516388b44c8560e01b81526000805160206201bef5833981519152906388b44c859062004cfe9086908690869060040162008e42565b60006040518083038186803b15801562004d1757600080fd5b505afa15801562004d2c573d6000803e3d6000fd5b50505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362004e3257601c546040516000805160206201bef58339815191529163b4d6c782916001600160a01b039091169062004d9b90620081e3565b604051809103906000f08015801562004db8573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162004dfd92919062008e63565b600060405180830381600087803b15801562004e1857600080fd5b505af115801562004e2d573d6000803e3d6000fd5b505050505b600660405162004e4290620081f1565b60ff9091168152602001604051809103906000f08015801562004e69573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062004e9b90620081f1565b60ff9091168152602001604051809103906000f08015801562004ec2573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062004ef490620081f1565b60ff9091168152602001604051809103906000f08015801562004f1b573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062004f4d90620081f1565b60ff9091168152602001604051809103906000f08015801562004f74573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062004fa690620081f1565b60ff9091168152602001604051809103906000f08015801562004fcd573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062004fff90620081f1565b60ff9091168152602001604051809103906000f08015801562005026573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200505590620081ff565b604051809103906000f08015801562005072573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201bef58339815191529063c657c71890608401600060405180830381600087803b1580156200511357600080fd5b505af115801562005128573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620051a057600080fd5b505af1158015620051b5573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200522d57600080fd5b505af115801562005242573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620052ba57600080fd5b505af1158015620052cf573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200534757600080fd5b505af11580156200535c573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620053d457600080fd5b505af1158015620053e9573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200545b57600080fd5b505af115801562005470573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620054fc57600080fd5b505af115801562005511573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062005598906200820d565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620055d3573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162005601906200821b565b6001600160a01b039091168152602001604051809103906000f0801580156200562e573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200568d57600080fd5b505af1158015620056a2573d6000803e3d6000fd5b50505050620056b062006450565b620056bc600a620067f3565b602454602b54601c546040516001600160a01b03938416939283169290911690620056e79062008229565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005724573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200575f9062008237565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200579c573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201bef58339815191529063c657c71890608401600060405180830381600087803b1580156200583d57600080fd5b505af115801562005852573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620058de57600080fd5b505af1158015620058f3573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200598257600080fd5b505af115801562005997573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b15801562005a2357600080fd5b505af115801562005a38573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b15801562005ac457600080fd5b505af115801562005ad9573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b15801562005b6557600080fd5b505af115801562005b7a573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562005bd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bfb9190620088ad565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005c53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c799190620088ad565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005cd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005cf79190620088ad565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005d4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d759190620088ad565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005dcd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005df39190620088ad565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005e4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005e719190620088ad565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005ec9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005eef9190620088ad565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005f47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f6d9190620088ad565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005fc5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005feb9190620088ad565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006043573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060699190620088ad565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620060c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060e79190620088ad565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200613f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061659190620088ad565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620061bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061e39190620088ad565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200623b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062619190620088ad565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620062b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062df9190620088ad565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200635d9190620088ad565b50565b60006200637283836280000062006893565b9392505050565b8062ffffff81168114620063a057604051639b63641560e01b815260040160405180910390fd5b919050565b620063b48383836000620068a4565b505050565b806001600160401b0381168114620063a05760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600080600062006433868662006aaa565b9150915062006446868686858562006ac9565b9695505050505050565b601c546001600160a01b031615620064c55760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620064ab57600080fd5b505af1158015620064c0573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200653a5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200652057600080fd5b505af115801562006535573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620065af5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200659557600080fd5b505af1158015620065aa573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620066245760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200660a57600080fd5b505af11580156200661f573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620066995760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200667f57600080fd5b505af115801562006694573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200670e5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620066f457600080fd5b505af115801562006709573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620067835760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200676957600080fd5b505af11580156200677e573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620005425760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620067de57600080fd5b505af1158015620004b5573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200687e57600080fd5b505af1158015620028c7573d6000803e3d6000fd5b60006200641a848484600a62006b7b565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620068fa9162008e87565b600060405180830381855afa9150503d806000811462006937576040519150601f19603f3d011682016040523d82523d6000602084013e6200693c565b606091505b50915050600081806020019051810190620069589190620088cb565b905062006992846200698b87620069846370a0823160e01b6200697d600c8d62006c11565b9062006c37565b9062006c55565b9062006c7e565b821562006aa25760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620069dd919062008e87565b600060405180830381855afa9150503d806000811462006a1a576040519150601f19603f3d011682016040523d82523d6000602084013e62006a1f565b606091505b5091505060008180602001905181019062006a3b9190620088cb565b90508286101562006a665762006a52868462008886565b62006a5e908262008886565b905062006a81565b62006a72838762008886565b62006a7e908262008870565b90505b62006a9f816200698b6318160ddd60e01b6200697d600c8d62006c11565b50505b505050505050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362006aef5783838162006ae65762006ae662008a3b565b04905062000a25565b83821062006b10576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562006beb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a25919062008a05565b6005820180546001600160a01b0319166001600160a01b03831617905560008262006372565b60038201805463ffffffff191660e083901c17905560008262006372565b6002820180546001810182556000918252602082206001600160a01b0384169101558262006372565b62006c8a828262006c8e565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562006d0157602002820191906000526020600020905b81548152602001906001019080831162006cec575b5050505050905060008362006d16836200709b565b60405160200162006d2992919062008ea5565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162006d7d91869188910162008ed8565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662006db85762006db6876200714e565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162006df991879189910162008ed8565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162006e40919062008e87565b600060405180830381855afa9150503d806000811462006e7d576040519150601f19603f3d011682016040523d82523d6000602084013e62006e82565b606091505b50915062006e9f90508162006e9988602062008967565b6200715b565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201bef58339815191529063667f9d7090604401602060405180830381865afa15801562006f01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f279190620088cb565b905080821462006fde5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004a25565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201bef5833981519152906370ca10bb90606401600060405180830381600087803b1580156200703d57600080fd5b505af115801562007052573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200708760028b01600062008245565b896004016000905550505050505050505050565b6060600082516020620070af919062008967565b6001600160401b03811115620070c957620070c962008a25565b6040519080825280601f01601f191660200182016040528015620070f4576020820181803683370190505b50905060005b8351811015620071475760008482815181106200711b576200711b62008a68565b6020026020010151905080826020026020018401525080806200713e9062008a7e565b915050620070fa565b5092915050565b60006200080982620071fd565b600080600060208551116200717257845162007175565b60205b905060005b81811015620071f3576200719081600862008967565b866200719d838862008870565b81518110620071b057620071b062008a68565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620071ea8162008a7e565b9150506200717a565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200726f57602002820191906000526020600020905b8154815260200190600101908083116200725a575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905195965094919350620072bb9250859187910162008ed8565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200735a576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200732a91859187910162008ed8565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362007368836200809f565b6040516020016200737b92919062008ea5565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620073eb57600080fd5b505af115801562007400573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162007421919062008e87565b600060405180830381855afa9150503d80600081146200745e576040519150601f19603f3d011682016040523d82523d6000602084013e62007463565b606091505b509150620074809050816200747a87602062008967565b6200814b565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201bef5833981519152906365bc9481906024016000604051808303816000875af1158015620074dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007507919081019062008f14565b5090508051600103620078ab5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200755f576200755f62008a68565b60200260200101516040518363ffffffff1660e01b8152600401620075999291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620075b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620075dd9190620088cb565b90508062007648577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200761d576200761d62008a68565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620076fd5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004a25565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200773592919062008ed8565b604051602081830303815290604052805190602001208560008151811062007761576200776162008a68565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a181600081518110620077bb57620077bb62008a68565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007806918a918c910162008ed8565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162007870918a918c910162008ed8565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062007f14565b60018151111562007ea35760005b815181101562007e9c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200790d576200790d62008a68565b60200260200101516040518363ffffffff1660e01b8152600401620079479291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200798b9190620088cb565b905080620079f5577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620079ca57620079ca62008a68565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462007a04575062007e87565b82518119906000805160206201bef5833981519152906370ca10bb908c9087908790811062007a375762007a3762008a68565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b15801562007a9057600080fd5b505af115801562007aa5573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162007ac7919062008e87565b600060405180830381855afa9150503d806000811462007b04576040519150601f19603f3d011682016040523d82523d6000602084013e62007b09565b606091505b50909250905062007b21816200747a8c602062008967565b96505080801562007b3157508186145b1562007dc9577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162007b6f92919062008ed8565b6040516020818303038152906040528051906020012088888151811062007b9a5762007b9a62008a68565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a184848151811062007bf35762007bf362008a68565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262007c3e918d918f910162008ed8565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c60405160200162007ccb92919062008ed8565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007d4e5762007d4e62008a68565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007da757600080fd5b505af115801562007dbc573d6000803e3d6000fd5b5050505050505062007e9c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007e115762007e1162008a68565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007e6a57600080fd5b505af115801562007e7f573d6000803e3d6000fd5b505050505050505b8062007e938162008a7e565b915050620078b9565b5062007f14565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162004a25565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162007f589188918a910162008ed8565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007ff55760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162004a25565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200802660028a01600062008245565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200806c9188918a910162008ed8565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620080b3919062008967565b6001600160401b03811115620080cd57620080cd62008a25565b6040519080825280601f01601f191660200182016040528015620080f8576020820181803683370190505b50905060005b8351811015620071475760008482815181106200811f576200811f62008a68565b602002602001015190508082602002602001840152508080620081429062008a7e565b915050620080fe565b600080600060208551116200816257845162008165565b60205b905060005b81811015620071f3576200818081600862008967565b866200818d838862008870565b81518110620081a057620081a062008a68565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620081da8162008a7e565b9150506200816a565b610b088062008f7f83390190565b610bfd8062009a8783390190565b610c18806200a68483390190565b613199806200b29c83390190565b61615c806200e43583390190565b614c80806201459183390190565b612c13806201921183390190565b50805460008255906000526020600020908101906200635d91905b8082111562008276576000815560010162008260565b5090565b6000602082840312156200828d57600080fd5b81356001600160e01b0319811681146200637257600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620082e95783516001600160a01b031683529284019291840191600101620082c2565b50909695505050505050565b60005b8381101562008312578181015183820152602001620082f8565b50506000910152565b6000815180845262008335816020860160208601620082f5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620083ff57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015620083e857605f19898503018352620083d58486516200831b565b948e01949350918d0191600101620083b6565b505050978a01979450509188019160010162008370565b50919a9950505050505050505050565b60ff811681146200635d57600080fd5b600080604083850312156200843357600080fd5b823562008440816200840f565b9150602083013562008452816200840f565b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200850557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620084ef5783516001600160e01b0319168252928b019260019290920191908b0190620084c3565b50978a0197955050509187019160010162008485565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200856d57603f198886030184526200855a8583516200831b565b945092850192908501906001016200853b565b5092979650505050505050565b62ffffff811681146200635d57600080fd5b600080600060608486031215620085a257600080fd5b8335620085af816200857a565b9250602084013591506040840135620085c8816200840f565b809150509250925092565b6001600160a01b03811681146200635d57600080fd5b600080600080600080600080610100898b0312156200860757600080fd5b88356200861481620085d3565b975060208901356200862681620085d3565b965060408901356200863881620085d3565b955060608901356200864a816200857a565b94506080890135935060a0890135925060c08901356200866a816200840f565b915060e08901356200867c816200840f565b809150509295985092959890939650565b61ffff811681146200635d57600080fd5b600060208284031215620086b157600080fd5b813562006372816200868d565b600080600080600080600060e0888a031215620086da57600080fd5b8735620086e781620085d3565b96506020880135620086f981620085d3565b955060408801356200870b81620085d3565b945060608801356200871d816200857a565b93506080880135925060a088013562008736816200840f565b915060c088013562008748816200840f565b8091505092959891949750929550565b805164ffffffffff81168114620063a057600080fd5b600080600080600060a086880312156200878757600080fd5b855162008794816200840f565b6020870151909550620087a7816200868d565b6040870151909450620087ba816200868d565b9250620087ca6060870162008758565b9150620087da6080870162008758565b90509295509295909350565b600181811c90821680620087fb57607f821691505b6020821081036200881c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111562000809576200080962008822565b60ff828116828216039081111562000809576200080962008822565b8082018082111562000809576200080962008822565b8181038181111562000809576200080962008822565b80518015158114620063a057600080fd5b600060208284031215620088c057600080fd5b62006372826200889c565b600060208284031215620088de57600080fd5b5051919050565b600060208284031215620088f857600080fd5b815162006372816200857a565b80516001600160401b0381168114620063a057600080fd5b6000806000606084860312156200893357600080fd5b6200893e8462008905565b92506200894e6020850162008905565b91506200895e6040850162008905565b90509250925092565b808202811582820484141762000809576200080962008822565b600080600080608085870312156200899857600080fd5b8451620089a5816200857a565b6020860151909450620089b8816200857a565b6040860151909350620089cb816200857a565b9150620089db6060860162008758565b905092959194509250565b62ffffff82811682821603908082111562007147576200714762008822565b60006020828403121562008a1857600080fd5b81516200637281620085d3565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008262008a635762008a6362008a3b565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162008a935762008a9362008822565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b8181101562008ae75785518352948301949183019160010162008ac9565b5050809450505080851660408501525050949350505050565b604051601f8201601f191681016001600160401b038111828210171562008b2b5762008b2b62008a25565b604052919050565b60006001600160401b0382111562008b4f5762008b4f62008a25565b5060051b60200190565b60008060006060848603121562008b6f57600080fd5b83519250602080850151925060408501516001600160401b0381111562008b9557600080fd5b8501601f8101871362008ba757600080fd5b805162008bbe62008bb88262008b33565b62008b00565b81815260059190911b8201830190838101908983111562008bde57600080fd5b928401925b8284101562008bfe5783518252928401929084019062008be3565b80955050505050509250925092565b600080600080600080600080610100898b03121562008c2b57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062008c6760e08a016200889c565b90509295985092959890939650565b6001600160401b0381811683821602808216919082811462008c9c5762008c9c62008822565b505092915050565b6001600160401b0381811683821601908082111562007147576200714762008822565b6001600160401b0382811682821603908082111562007147576200714762008822565b60006001600160401b038084168062008d075762008d0762008a3b565b92169190910492915050565b600081518084526020808501945080840160005b8381101562008d455781518752958201959082019060010162008d27565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262008d7e608083018562008d13565b828103606084015262008d92818562008d13565b979650505050505050565b600082601f83011262008daf57600080fd5b8151602062008dc262008bb88362008b33565b82815260059290921b8401810191818101908684111562008de257600080fd5b8286015b8481101562008dff578051835291830191830162008de6565b509695505050505050565b60006020828403121562008e1d57600080fd5b81516001600160401b0381111562008e3457600080fd5b6200641a8482850162008d9d565b83815282602082015260606040820152600062000a2560608301846200831b565b6001600160a01b03831681526040602082015260006200641a60408301846200831b565b6000825162008e9b818460208701620082f5565b9190910192915050565b6001600160e01b031983168152815160009062008eca816004850160208701620082f5565b919091016004019392505050565b825160009082906020808701845b8381101562008f045781518552938201939082019060010162008ee6565b5050948252509092019392505050565b6000806040838503121562008f2857600080fd5b82516001600160401b038082111562008f4057600080fd5b62008f4e8683870162008d9d565b9350602085015191508082111562008f6557600080fd5b5062008f748582860162008d9d565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3134746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a32746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a36746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3131746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a32746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a31360000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a31746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a32746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a39746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a36746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a38746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a34746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a34746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3130746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3132746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a33746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a37746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a37746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a38746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a33746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3133746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a31746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a34746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a35746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a35746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3135746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a33746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a31746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a39a26469706673582212204930c77eabec21bd7c069f2771e9eeb244b45691fc22e2cdcea3c049b34deb6564736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;95:11936:89;1812:17:93;;95:11936:89;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;95:11936:89;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;95:11936:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001ad5760003560e01c80638fee3aae11620000f5578063b89e02331162000097578063e20c9f71116200006e578063e20c9f71146200034f578063f0a759931462000359578063fecaa223146200036357600080fd5b8063b89e02331462000324578063ba414fa6146200033b578063c449527b146200034557600080fd5b8063a7aa85e911620000cc578063a7aa85e914620002ec578063b40805881462000303578063b5508aa9146200031a57600080fd5b80638fee3aae14620002ce578063916a17c614620002d85780639be2dac914620002e257600080fd5b80633e5e3c23116200015f57806366d9a9a0116200013657806366d9a9a0146200027057806385226c811462000289578063889be5b714620002a257600080fd5b80633e5e3c2314620002365780633f7286f4146200024057806349789ef9146200024a57600080fd5b80630a9254e411620001945780630a9254e414620001fa5780631ed7831c14620002045780632ade3880146200021d57600080fd5b806301ffc9a714620001b2578063083e06e514620001ee575b600080fd5b620001d9620001c33660046200827a565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620001f86200037a565b005b620001f8620004bb565b6200020e62000544565b604051620001e59190620082a6565b62000227620005a8565b604051620001e5919062008349565b6200020e620006f6565b6200020e62000758565b620002616200025b3660046200841f565b620007ba565b604051908152602001620001e5565b6200027a6200080f565b604051620001e591906200845d565b62000293620008f9565b604051620001e5919062008514565b620002b9620002b33660046200858c565b620009d3565b60405162ffffff9091168152602001620001e5565b620001f862000a2e565b6200027a620011e4565b620001f8620012ce565b620001f8620002fd366004620085e9565b62001fef565b620001f8620003143660046200869e565b6200248f565b62000293620028ce565b620001d9620003353660046200869e565b620029a8565b620001d962002a2b565b620001f862002ae5565b6200020e620036f5565b620001f862003757565b620001f862000374366004620086be565b620049d0565b600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa91906200876e565b64ffffffffff16945064ffffffffff16945061ffff16945061ffff16945050620004408460006040518060600160405280602681526020016201c1e46026913962004cc6565b620004678360006040518060600160405280602681526020016201be476026913962004cc6565b6200048e8260006040518060600160405280602681526020016201c1be6026913962004cc6565b620004b58160006040518060600160405280602681526020016201bfbc6026913962004cc6565b50505050565b620004c562004d35565b601c54601d54620004e3916001600160a01b03908116911662006360565b602780546001600160a01b0319166001600160a01b0392909216918217905562000542907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a764000080600a8062001fef565b565b606060148054806020026020016040519081016040528092919081815260200182805480156200059e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200057f575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620006ed57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620006d55783829060005260206000200180546200064190620087e6565b80601f01602080910402602001604051908101604052809291908181526020018280546200066f90620087e6565b8015620006c05780601f106200069457610100808354040283529160200191620006c0565b820191906000526020600020905b815481529060010190602001808311620006a257829003601f168201915b5050505050815260200190600101906200061f565b505050508152505081526020019060010190620005cc565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200059e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200057f575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200059e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200057f575050505050905090565b6000808360ff16118015620007d2575060008260ff16115b620007e957620007e3828462008838565b62000803565b6001620007f7838562008838565b62000803919062008854565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620008e057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620008a15790505b5050505050815250508152602001906001019062000833565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5783829060005260206000200180546200093f90620087e6565b80601f01602080910402602001604051908101604052809291908181526020018280546200096d90620087e6565b8015620009be5780601f106200099257610100808354040283529160200191620009be565b820191906000526020600020905b815481529060010190602001808311620009a057829003601f168201915b5050505050815260200190600101906200091d565b600080620009e78462ffffff871662008870565b905060008360ff1611620009fc578062000a18565b62000a0b60ff84168262008886565b62000a1890600162008870565b905062000a258162006379565b95945050505050565b6027546040516363deb2c360e11b8152606460048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b15801562000a7557600080fd5b505af115801562000a8a573d6000803e3d6000fd5b5050601c5462000ad092506001600160a01b031690507f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562000b4157600080fd5b505af115801562000b56573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562000bb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bdc9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000c51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c779190620088cb565b50600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562000cd2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cf891906200876e565b94509450945094505062000d488461ffff1660646040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3100000000000000000000000081525062004cc6565b62000d8f8361ffff1660016040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3200000000000000000000000081525062004cc6565b62000dd88264ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3300000000000000000000000081525062004cc6565b62000e218164ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3400000000000000000000000081525062004cc6565b6000805160206201bef583398151915263e5d6bf0262000e4342600162008870565b6040518263ffffffff1660e01b815260040162000e6291815260200190565b600060405180830381600087803b15801562000e7d57600080fd5b505af115801562000e92573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b15801562000f0757600080fd5b505af115801562000f1c573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562000f7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa29190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001017573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200103d9190620088cb565b50602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562001092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010b891906200876e565b60408051808201909152601481527f746573745f3153616d706c6541646465643a3a350000000000000000000000006020820152939850919650945092506200110b915061ffff86169060649062004cc6565b620011528361ffff1660016040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3600000000000000000000000081525062004cc6565b6200119b8264ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3700000000000000000000000081525062004cc6565b620004b58164ffffffffff16426040518060400160405280601481526020017f746573745f3153616d706c6541646465643a3a3800000000000000000000000081525062004cc6565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620012b557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620012765790505b5050505050815250508152602001906001019062001208565b6027546040516363deb2c360e11b8152600260048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b1580156200131557600080fd5b505af11580156200132a573d6000803e3d6000fd5b505050506000602760009054906101000a90046001600160a01b03166001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001384573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013aa9190620088e5565b601c54909150620013ee906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b1580156200145f57600080fd5b505af115801562001474573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af1158015620014d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014fa9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200156f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015959190620088cb565b506027546040516344a050b560e11b81524264ffffffffff8116600483015291600091829182916001600160a01b0390911690638940a16a90602401606060405180830381865afa158015620015ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200161591906200891d565b9250925092506000602760009054906101000a90046001600160a01b03166001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001671573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016979190620088e5565b9050620016d86001600160401b038516620016b88762ffffff8a1662008967565b6040518060600160405280602181526020016201bf156021913962004cc6565b62001708836001600160401b031660006040518060600160405280602181526020016201beb16021913962004cc6565b62001738826001600160401b031660006040518060600160405280602181526020016201c04a6021913962004cc6565b4294506000805160206201bef583398151915263e5d6bf026200175d87607962008870565b6040518263ffffffff1660e01b81526004016200177c91815260200190565b600060405180830381600087803b1580156200179757600080fd5b505af1158015620017ac573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b1580156200182157600080fd5b505af115801562001836573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562001896573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018bc9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019579190620088cb565b5062001964854262008886565b6027546040516344a050b560e11b815264ffffffffff421660048201529196508591859185916001600160a01b0390911690638940a16a90602401606060405180830381865afa158015620019bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019e391906200891d565b602754604080516336f997b760e21b81529051949b509299509097506000926001600160a01b039091169163dbe65edc9160048083019260209291908290030181865afa15801562001a39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a5f9190620088e5565b905062001ab56001600160401b03891662001a808b62ffffff891662008967565b62001a95906001600160401b03881662008870565b6040518060600160405280602181526020016201c1376021913962004cc6565b62001ae5876001600160401b031660006040518060600160405280602181526020016201c1586021913962004cc6565b62001b15866001600160401b031660006040518060600160405280602181526020016201be6d6021913962004cc6565b4298506000805160206201bef583398151915263e5d6bf0262001b3b8b6103e862008870565b6040518263ffffffff1660e01b815260040162001b5a91815260200190565b600060405180830381600087803b15801562001b7557600080fd5b505af115801562001b8a573d6000803e3d6000fd5b5050601d5462001bd092506001600160a01b031690507f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562001c4157600080fd5b505af115801562001c56573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562001cb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cdd9190620088ad565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562001d52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d789190620088cb565b5062001d85894262008886565b6027546040516344a050b560e11b815264ffffffffff42166004820152919a508995508894508793506001600160a01b031690638940a16a90602401606060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0591906200891d565b60275460408051638d7024e560e01b81529051949c50929a509098506000926001600160a01b0390911691638d7024e59160048083019260809291908290030181865afa15801562001e5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e81919062008981565b505050905062001edc896001600160401b03168b8462ffffff1662001ea7919062008967565b62001ebc906001600160401b03891662008870565b6040518060600160405280602181526020016201c06b6021913962004cc6565b62001f1b6001600160401b03891662001efb8c62ffffff851662008967565b6040518060600160405280602181526020016201bf9b6021913962004cc6565b62001fe2876001600160401b03168b84602760009054906101000a90046001600160a01b03166001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa59190620088e5565b62001fb19190620089e6565b62ffffff1662001fc2919062008967565b6040518060600160405280602181526020016201bf586021913962004cc6565b5050505050505050505050565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002030573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002056919062008a05565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002099573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020bf919062008a05565b9050620020ce828b88620063a5565b620020db818b87620063a5565b6000620020e98585620007ba565b90506000816001600160401b0381111562002108576200210862008a25565b60405190808252806020026020018201604052801562002132578160200160208202803683370190505b50905060005b8281101562002231576000620021508b8389620009d3565b905060008b62ffffff168262ffffff161015801562002172575060008960ff16115b6200217f576000620021a0565b620021a06200219a60ff8b16670de0b6b3a764000062008a51565b620063b9565b905060008c62ffffff168362ffffff1611158015620021c2575060008960ff16115b620021cf576000620021ea565b620021ea6200219a60ff8b16670de0b6b3a764000062008a51565b9050620021f9828285620063e4565b8585815181106200220e576200220e62008a68565b60200260200101818152505050505080620022299062008a7e565b905062002138565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201bef5833981519152906306447d5690602401600060405180830381600087803b1580156200228357600080fd5b505af115801562002298573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af1158015620022ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023129190620088ad565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562002363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023899190620088ad565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620023e957600080fd5b505af1158015620023fe573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b8152600401620024349392919062008a9a565b6000604051808303816000875af115801562002454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200247e919081019062008b59565b505050505050505050505050505050565b6000805160206201bef5833981519152634c63e56261ffff831615801590620024bc575060648361ffff16105b6040518263ffffffff1660e01b8152600401620024dd911515815260200190565b60006040518083038186803b158015620024f657600080fd5b505afa1580156200250b573d6000803e3d6000fd5b50505050600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562002569573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258f91906200876e565b945094509450945050620025df8461ffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3181525062004cc6565b620026268361ffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3281525062004cc6565b620026708264ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3381525062004cc6565b620026ba8164ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3481525062004cc6565b6027546040516363deb2c360e11b815261ffff871660048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b1580156200270457600080fd5b505af115801562002719573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562002771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200279791906200876e565b6040805180820190915260208082527f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a359082015293985091965094509250620027ec915061ffff808716919088169062004cc6565b620028338361ffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3681525062004cc6565b6200287d8264ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3781525062004cc6565b620028c78164ffffffffff1660006040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3881525062004cc6565b5050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620006ed5783829060005260206000200180546200291490620087e6565b80601f01602080910402602001604051908101604052809291908181526020018280546200294290620087e6565b8015620029935780601f10620029675761010080835404028352916020019162002993565b820191906000526020600020905b8154815290600101906020018083116200297557829003601f168201915b505050505081526020019060010190620028f2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620029f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a1e919062008c0d565b9998505050505050505050565b60075460009060ff161562002a44575060075460ff1690565b604051630667f9d760e41b81526000805160206201bef5833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562002ab8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ade9190620088cb565b1415905090565b6027546040516363deb2c360e11b8152600260048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b15801562002b2c57600080fd5b505af115801562002b41573d6000803e3d6000fd5b5050601c5462002b8792506001600160a01b031690507f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000620063a5565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562002bf857600080fd5b505af115801562002c0d573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562002c6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c939190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562002d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2e9190620088cb565b50600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562002d89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002daf91906200876e565b94509450945094505062002de38461ffff1660026040518060600160405280602281526020016201c1156022913962004cc6565b62002e0e8361ffff1660016040518060600160405280602281526020016201bf366022913962004cc6565b62002e3b8264ffffffffff16426040518060600160405280602281526020016201c0d06022913962004cc6565b62002e688164ffffffffff16426040518060600160405280602281526020016201bfe26022913962004cc6565b6000805160206201bef583398151915263e5d6bf0262002e8a42607962008870565b6040518263ffffffff1660e01b815260040162002ea991815260200190565b600060405180830381600087803b15801562002ec457600080fd5b505af115801562002ed9573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b15801562002f4e57600080fd5b505af115801562002f63573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562002fc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fe99190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200305e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030849190620088cb565b50602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015620030d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030ff91906200876e565b60408051606081019091526022808252949950929750909550935062003139925061ffff871691600291906201c179602083013962004cc6565b620031648361ffff1660026040518060600160405280602281526020016201bf796022913962004cc6565b620031918264ffffffffff16426040518060600160405280602281526020016201c08c6022913962004cc6565b620031ca64ffffffffff8216620031aa60794262008886565b6040518060600160405280602281526020016201c0ae6022913962004cc6565b6000805160206201bef583398151915263e5d6bf02620031ed426103e862008870565b6040518263ffffffff1660e01b81526004016200320c91815260200190565b600060405180830381600087803b1580156200322757600080fd5b505af11580156200323c573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b158015620032b157600080fd5b505af1158015620032c6573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152662386f26fc1000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200334c9190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620033c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033e79190620088cb565b50602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa1580156200343c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200346291906200876e565b6040805160608101909152602280825294995092975090955093506200349c925061ffff871691600291906201c20a602083013962004cc6565b620034c78361ffff1660026040518060600160405280602381526020016201c0046023913962004cc6565b620034f48264ffffffffff16426040518060600160405280602381526020016201be8e6023913962004cc6565b6200352e64ffffffffff82166200350e6103e84262008886565b6040518060600160405280602381526020016201c0276023913962004cc6565b6000805160206201bef583398151915263e5d6bf026200355042606462008870565b6040518263ffffffff1660e01b81526004016200356f91815260200190565b600060405180830381600087803b1580156200358a57600080fd5b505af11580156200359f573d6000803e3d6000fd5b50505050602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa158015620035f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200361d91906200876e565b60408051606081019091526023808252949950929750909550935062003657925061ffff871691600291906201c0f2602083013962004cc6565b620036828361ffff1660026040518060600160405280602381526020016201be246023913962004cc6565b620036bb64ffffffffff83166200369b60644262008886565b6040518060600160405280602381526020016201c19b6023913962004cc6565b620004b564ffffffffff8216620036d561044c4262008886565b6040518060600160405280602381526020016201bed26023913962004cc6565b606060138054806020026020016040519081016040528092919081815260200182805480156200059e576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200057f575050505050905090565b601c546200379f906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f1000000000620063a5565b601d54620037e7906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006ec097ce7bc90715b34b9f1000000000620063a5565b6027546040516363deb2c360e11b815261ffff60048201526001600160a01b039091169063c7bd658690602401600060405180830381600087803b1580156200382f57600080fd5b505af115801562003844573d6000803e3d6000fd5b50506040516372eb5f8160e11b81526103e860048201526000805160206201bef5833981519152925063e5d6bf029150602401600060405180830381600087803b1580156200389257600080fd5b505af1158015620038a7573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef583398151915292506306447d569150602401600060405180830381600087803b1580156200391c57600080fd5b505af115801562003931573d6000803e3d6000fd5b5050505060005b61ffff81101562003aea57601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526402540be400602482015291169063a9059cbb906044016020604051808303816000875af11580156200399d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039c39190620088ad565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562003a38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a5e9190620088cb565b506000805160206201bef583398151915263e5d6bf0262003a8142607962008870565b6040518263ffffffff1660e01b815260040162003aa091815260200190565b600060405180830381600087803b15801562003abb57600080fd5b505af115801562003ad0573d6000803e3d6000fd5b50505050808062003ae19062008a7e565b91505062003938565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003b4a57600080fd5b505af115801562003b5f573d6000803e3d6000fd5b50505050600080600080602760009054906101000a90046001600160a01b03166001600160a01b031663551828946040518163ffffffff1660e01b815260040160a060405180830381865afa15801562003bbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003be391906200876e565b64ffffffffff16945064ffffffffff16945061ffff16945061ffff1694505062003c468461ffff6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3100000000000000000081525062004cc6565b62003c8a8361ffff6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3200000000000000000081525062004cc6565b62003cd88262003c9c60794262008886565b6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3300000000000000000081525062004cc6565b62003d288162003cec6278ff874262008886565b6040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3400000000000000000081525062004cc6565b602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa15801562003d73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d999190620088e5565b6027546040516344a050b560e11b815264ffffffffff42166004820152919250600091829182916001600160a01b0390911690638940a16a90602401606060405180830381865afa15801562003df3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e1991906200891d565b6027549295509093509150600090819081906001600160a01b0316638940a16a62003e4660794262008886565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa15801562003e89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003eaf91906200891d565b9194509250905062003f276001600160401b03871662003ed662ffffff8a16607962008c76565b62003ee2908662008ca4565b6001600160401b03166040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3500000000000000000081525062004cc6565b62003f73856001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3600000000000000000081525062004cc6565b62003fbf846001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3700000000000000000081525062004cc6565b6200400b826001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3800000000000000000081525062004cc6565b62004057816001600160401b031660006040518060400160405280601781526020017f746573745f4d61784c656e6774684f7261636c653a3a3900000000000000000081525062004cc6565b620040c0607962004069858962008cc7565b62004075919062008cea565b6001600160401b03168862ffffff166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3130000000000000000081525062004cc6565b6200410c846001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3131000000000000000081525062004cc6565b6027546001600160a01b0316638940a16a6200412a60024262008a51565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa1580156200416d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200419391906200891d565b5090935062004239905042620041bb6001600160401b038916670de0b6b3a764000062008967565b620041c7919062008a51565b620041d460024262008a51565b620041f16001600160401b038716670de0b6b3a764000062008967565b620041fd919062008a51565b6040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3132000000000000000081525062004cc6565b506000805160206201bef5833981519152945063e5d6bf029350607992506200426991504290506103e862008870565b62004275919062008886565b6040518263ffffffff1660e01b81526004016200429491815260200190565b600060405180830381600087803b158015620042af57600080fd5b505af1158015620042c4573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201bef5833981519152925063ca669fa79150602401600060405180830381600087803b1580156200433957600080fd5b505af11580156200434e573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152670de0b6b3a764000060248201529116925063a9059cbb91506044016020604051808303816000875af1158015620043af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043d59190620088ad565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af11580156200444a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044709190620088cb565b50602754604080516336f997b760e21b815290516000926001600160a01b03169163dbe65edc9160048083019260209291908290030181865afa158015620044bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044e29190620088e5565b6027546040516344a050b560e11b815264ffffffffff4216600482015262ffffff929092169250600091829182916001600160a01b0390911690638940a16a90602401606060405180830381865afa15801562004543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200456991906200891d565b6027549295509093509150600090819081906001600160a01b0316638940a16a62004597610e104262008886565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa158015620045da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200460091906200891d565b6027549295509093509150600090819081906001600160a01b0316638940a16a6200462f620151804262008886565b6040516001600160e01b031960e084901b16815264ffffffffff9091166004820152602401606060405180830381865afa15801562004672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200469891906200891d565b925092509250620046ea826001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3133000000000000000081525062004cc6565b62004736816001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3134000000000000000081525062004cc6565b62004782856001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3135000000000000000081525062004cc6565b620047ce846001600160401b031660006040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3136000000000000000081525062004cc6565b6200484d620047e562ffffff8d16610e1062008c76565b620047f290601762008c76565b620047fe908562008ca4565b6001600160401b0316876001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3137000000000000000081525062004cc6565b620048de6200486462ffffff8d166103e862008c76565b6200487762ffffff8e16610a2862008c76565b62004883908962008ca4565b6200488f919062008ca4565b6001600160401b03168a6001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3138000000000000000081525062004cc6565b6200495e6001600160401b038916620048fd62ffffff8e168d62008cc7565b6200490b9061271062008c76565b62004919906103e862008c76565b6001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3139000000000000000081525062004cc6565b6200247e6001600160401b0388166200497d62ffffff8e168d62008cc7565b6200498b906103e862008c76565b6001600160401b03166040518060400160405280601881526020017f746573745f4d61784c656e6774684f7261636c653a3a3230000000000000000081525062004cc6565b670de0b6b3a764000083111562004a2e5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062004a3c8383620007ba565b90506000816001600160401b0381111562004a5b5762004a5b62008a25565b60405190808252806020026020018201604052801562004a85578160200160208202803683370190505b5090506000826001600160401b0381111562004aa55762004aa562008a25565b60405190808252806020026020018201604052801562004acf578160200160208202803683370190505b50905060005b8381101562004bdd57600062004aed898388620009d3565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562004b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b699190620088cb565b90508162ffffff1685848151811062004b865762004b8662008a68565b602090810291909101015262004ba6818a670de0b6b3a764000062006422565b84848151811062004bbb5762004bbb62008a68565b60200260200101818152505050508062004bd59062008a7e565b905062004ad5565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201bef58339815191529063ca669fa790602401600060405180830381600087803b15801562004c2f57600080fd5b505af115801562004c44573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062004c7c908d908d908790879060040162008d50565b6000604051808303816000875af115801562004c9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fe2919081019062008e0a565b6040516388b44c8560e01b81526000805160206201bef5833981519152906388b44c859062004cfe9086908690869060040162008e42565b60006040518083038186803b15801562004d1757600080fd5b505afa15801562004d2c573d6000803e3d6000fd5b50505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362004e3257601c546040516000805160206201bef58339815191529163b4d6c782916001600160a01b039091169062004d9b90620081e3565b604051809103906000f08015801562004db8573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162004dfd92919062008e63565b600060405180830381600087803b15801562004e1857600080fd5b505af115801562004e2d573d6000803e3d6000fd5b505050505b600660405162004e4290620081f1565b60ff9091168152602001604051809103906000f08015801562004e69573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062004e9b90620081f1565b60ff9091168152602001604051809103906000f08015801562004ec2573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062004ef490620081f1565b60ff9091168152602001604051809103906000f08015801562004f1b573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062004f4d90620081f1565b60ff9091168152602001604051809103906000f08015801562004f74573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062004fa690620081f1565b60ff9091168152602001604051809103906000f08015801562004fcd573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062004fff90620081f1565b60ff9091168152602001604051809103906000f08015801562005026573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200505590620081ff565b604051809103906000f08015801562005072573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201bef58339815191529063c657c71890608401600060405180830381600087803b1580156200511357600080fd5b505af115801562005128573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620051a057600080fd5b505af1158015620051b5573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200522d57600080fd5b505af115801562005242573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620052ba57600080fd5b505af1158015620052cf573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200534757600080fd5b505af11580156200535c573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620053d457600080fd5b505af1158015620053e9573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200545b57600080fd5b505af115801562005470573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620054fc57600080fd5b505af115801562005511573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062005598906200820d565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620055d3573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162005601906200821b565b6001600160a01b039091168152602001604051809103906000f0801580156200562e573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200568d57600080fd5b505af1158015620056a2573d6000803e3d6000fd5b50505050620056b062006450565b620056bc600a620067f3565b602454602b54601c546040516001600160a01b03938416939283169290911690620056e79062008229565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005724573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200575f9062008237565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200579c573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201bef58339815191529063c657c71890608401600060405180830381600087803b1580156200583d57600080fd5b505af115801562005852573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b158015620058de57600080fd5b505af1158015620058f3573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b1580156200598257600080fd5b505af115801562005997573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b15801562005a2357600080fd5b505af115801562005a38573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b15801562005ac457600080fd5b505af115801562005ad9573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201bef5833981519152925063c657c7189150608401600060405180830381600087803b15801562005b6557600080fd5b505af115801562005b7a573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562005bd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bfb9190620088ad565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005c53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c799190620088ad565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005cd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005cf79190620088ad565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005d4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d759190620088ad565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005dcd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005df39190620088ad565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005e4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005e719190620088ad565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005ec9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005eef9190620088ad565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005f47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f6d9190620088ad565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005fc5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005feb9190620088ad565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006043573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060699190620088ad565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620060c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060e79190620088ad565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200613f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061659190620088ad565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620061bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620061e39190620088ad565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200623b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062619190620088ad565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620062b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062df9190620088ad565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200635d9190620088ad565b50565b60006200637283836280000062006893565b9392505050565b8062ffffff81168114620063a057604051639b63641560e01b815260040160405180910390fd5b919050565b620063b48383836000620068a4565b505050565b806001600160401b0381168114620063a05760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600080600062006433868662006aaa565b9150915062006446868686858562006ac9565b9695505050505050565b601c546001600160a01b031615620064c55760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620064ab57600080fd5b505af1158015620064c0573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200653a5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200652057600080fd5b505af115801562006535573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620065af5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200659557600080fd5b505af1158015620065aa573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620066245760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200660a57600080fd5b505af11580156200661f573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620066995760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200667f57600080fd5b505af115801562006694573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200670e5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620066f457600080fd5b505af115801562006709573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620067835760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200676957600080fd5b505af11580156200677e573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620005425760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620067de57600080fd5b505af1158015620004b5573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200687e57600080fd5b505af1158015620028c7573d6000803e3d6000fd5b60006200641a848484600a62006b7b565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620068fa9162008e87565b600060405180830381855afa9150503d806000811462006937576040519150601f19603f3d011682016040523d82523d6000602084013e6200693c565b606091505b50915050600081806020019051810190620069589190620088cb565b905062006992846200698b87620069846370a0823160e01b6200697d600c8d62006c11565b9062006c37565b9062006c55565b9062006c7e565b821562006aa25760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620069dd919062008e87565b600060405180830381855afa9150503d806000811462006a1a576040519150601f19603f3d011682016040523d82523d6000602084013e62006a1f565b606091505b5091505060008180602001905181019062006a3b9190620088cb565b90508286101562006a665762006a52868462008886565b62006a5e908262008886565b905062006a81565b62006a72838762008886565b62006a7e908262008870565b90505b62006a9f816200698b6318160ddd60e01b6200697d600c8d62006c11565b50505b505050505050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362006aef5783838162006ae65762006ae662008a3b565b04905062000a25565b83821062006b10576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562006beb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a25919062008a05565b6005820180546001600160a01b0319166001600160a01b03831617905560008262006372565b60038201805463ffffffff191660e083901c17905560008262006372565b6002820180546001810182556000918252602082206001600160a01b0384169101558262006372565b62006c8a828262006c8e565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562006d0157602002820191906000526020600020905b81548152602001906001019080831162006cec575b5050505050905060008362006d16836200709b565b60405160200162006d2992919062008ea5565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162006d7d91869188910162008ed8565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662006db85762006db6876200714e565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162006df991879189910162008ed8565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b03168460405162006e40919062008e87565b600060405180830381855afa9150503d806000811462006e7d576040519150601f19603f3d011682016040523d82523d6000602084013e62006e82565b606091505b50915062006e9f90508162006e9988602062008967565b6200715b565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201bef58339815191529063667f9d7090604401602060405180830381865afa15801562006f01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f279190620088cb565b905080821462006fde5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004a25565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201bef5833981519152906370ca10bb90606401600060405180830381600087803b1580156200703d57600080fd5b505af115801562007052573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200708760028b01600062008245565b896004016000905550505050505050505050565b6060600082516020620070af919062008967565b6001600160401b03811115620070c957620070c962008a25565b6040519080825280601f01601f191660200182016040528015620070f4576020820181803683370190505b50905060005b8351811015620071475760008482815181106200711b576200711b62008a68565b6020026020010151905080826020026020018401525080806200713e9062008a7e565b915050620070fa565b5092915050565b60006200080982620071fd565b600080600060208551116200717257845162007175565b60205b905060005b81811015620071f3576200719081600862008967565b866200719d838862008870565b81518110620071b057620071b062008a68565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620071ea8162008a7e565b9150506200717a565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200726f57602002820191906000526020600020905b8154815260200190600101908083116200725a575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905195965094919350620072bb9250859187910162008ed8565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16156200735a576001600160a01b0384166000908152602087815260408083206001600160e01b031987168452825280832090519092916200732a91859187910162008ed8565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362007368836200809f565b6040516020016200737b92919062008ea5565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620073eb57600080fd5b505af115801562007400573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162007421919062008e87565b600060405180830381855afa9150503d80600081146200745e576040519150601f19603f3d011682016040523d82523d6000602084013e62007463565b606091505b509150620074809050816200747a87602062008967565b6200814b565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201bef5833981519152906365bc9481906024016000604051808303816000875af1158015620074dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007507919081019062008f14565b5090508051600103620078ab5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d7089846000815181106200755f576200755f62008a68565b60200260200101516040518363ffffffff1660e01b8152600401620075999291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620075b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620075dd9190620088cb565b90508062007648577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588836000815181106200761d576200761d62008a68565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620076fd5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004a25565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed888887896040516020016200773592919062008ed8565b604051602081830303815290604052805190602001208560008151811062007761576200776162008a68565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a181600081518110620077bb57620077bb62008a68565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007806918a918c910162008ed8565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162007870918a918c910162008ed8565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062007f14565b60018151111562007ea35760005b815181101562007e9c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200790d576200790d62008a68565b60200260200101516040518363ffffffff1660e01b8152600401620079479291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200798b9190620088cb565b905080620079f5577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620079ca57620079ca62008a68565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462007a04575062007e87565b82518119906000805160206201bef5833981519152906370ca10bb908c9087908790811062007a375762007a3762008a68565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b15801562007a9057600080fd5b505af115801562007aa5573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162007ac7919062008e87565b600060405180830381855afa9150503d806000811462007b04576040519150601f19603f3d011682016040523d82523d6000602084013e62007b09565b606091505b50909250905062007b21816200747a8c602062008967565b96505080801562007b3157508186145b1562007dc9577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c60405160200162007b6f92919062008ed8565b6040516020818303038152906040528051906020012088888151811062007b9a5762007b9a62008a68565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a184848151811062007bf35762007bf362008a68565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262007c3e918d918f910162008ed8565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c60405160200162007ccb92919062008ed8565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007d4e5762007d4e62008a68565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007da757600080fd5b505af115801562007dbc573d6000803e3d6000fd5b5050505050505062007e9c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c87878151811062007e115762007e1162008a68565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b15801562007e6a57600080fd5b505af115801562007e7f573d6000803e3d6000fd5b505050505050505b8062007e938162008a7e565b915050620078b9565b5062007f14565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162004a25565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905190929162007f589188918a910162008ed8565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007ff55760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162004a25565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200802660028a01600062008245565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200806c9188918a910162008ed8565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620080b3919062008967565b6001600160401b03811115620080cd57620080cd62008a25565b6040519080825280601f01601f191660200182016040528015620080f8576020820181803683370190505b50905060005b8351811015620071475760008482815181106200811f576200811f62008a68565b602002602001015190508082602002602001840152508080620081429062008a7e565b915050620080fe565b600080600060208551116200816257845162008165565b60205b905060005b81811015620071f3576200818081600862008967565b866200818d838862008870565b81518110620081a057620081a062008a68565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620081da8162008a7e565b9150506200816a565b610b088062008f7f83390190565b610bfd8062009a8783390190565b610c18806200a68483390190565b613199806200b29c83390190565b61615c806200e43583390190565b614c80806201459183390190565b612c13806201921183390190565b50805460008255906000526020600020908101906200635d91905b8082111562008276576000815560010162008260565b5090565b6000602082840312156200828d57600080fd5b81356001600160e01b0319811681146200637257600080fd5b6020808252825182820181905260009190848201906040850190845b81811015620082e95783516001600160a01b031683529284019291840191600101620082c2565b50909695505050505050565b60005b8381101562008312578181015183820152602001620082f8565b50506000910152565b6000815180845262008335816020860160208601620082f5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015620083ff57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015620083e857605f19898503018352620083d58486516200831b565b948e01949350918d0191600101620083b6565b505050978a01979450509188019160010162008370565b50919a9950505050505050505050565b60ff811681146200635d57600080fd5b600080604083850312156200843357600080fd5b823562008440816200840f565b9150602083013562008452816200840f565b809150509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200850557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620084ef5783516001600160e01b0319168252928b019260019290920191908b0190620084c3565b50978a0197955050509187019160010162008485565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200856d57603f198886030184526200855a8583516200831b565b945092850192908501906001016200853b565b5092979650505050505050565b62ffffff811681146200635d57600080fd5b600080600060608486031215620085a257600080fd5b8335620085af816200857a565b9250602084013591506040840135620085c8816200840f565b809150509250925092565b6001600160a01b03811681146200635d57600080fd5b600080600080600080600080610100898b0312156200860757600080fd5b88356200861481620085d3565b975060208901356200862681620085d3565b965060408901356200863881620085d3565b955060608901356200864a816200857a565b94506080890135935060a0890135925060c08901356200866a816200840f565b915060e08901356200867c816200840f565b809150509295985092959890939650565b61ffff811681146200635d57600080fd5b600060208284031215620086b157600080fd5b813562006372816200868d565b600080600080600080600060e0888a031215620086da57600080fd5b8735620086e781620085d3565b96506020880135620086f981620085d3565b955060408801356200870b81620085d3565b945060608801356200871d816200857a565b93506080880135925060a088013562008736816200840f565b915060c088013562008748816200840f565b8091505092959891949750929550565b805164ffffffffff81168114620063a057600080fd5b600080600080600060a086880312156200878757600080fd5b855162008794816200840f565b6020870151909550620087a7816200868d565b6040870151909450620087ba816200868d565b9250620087ca6060870162008758565b9150620087da6080870162008758565b90509295509295909350565b600181811c90821680620087fb57607f821691505b6020821081036200881c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111562000809576200080962008822565b60ff828116828216039081111562000809576200080962008822565b8082018082111562000809576200080962008822565b8181038181111562000809576200080962008822565b80518015158114620063a057600080fd5b600060208284031215620088c057600080fd5b62006372826200889c565b600060208284031215620088de57600080fd5b5051919050565b600060208284031215620088f857600080fd5b815162006372816200857a565b80516001600160401b0381168114620063a057600080fd5b6000806000606084860312156200893357600080fd5b6200893e8462008905565b92506200894e6020850162008905565b91506200895e6040850162008905565b90509250925092565b808202811582820484141762000809576200080962008822565b600080600080608085870312156200899857600080fd5b8451620089a5816200857a565b6020860151909450620089b8816200857a565b6040860151909350620089cb816200857a565b9150620089db6060860162008758565b905092959194509250565b62ffffff82811682821603908082111562007147576200714762008822565b60006020828403121562008a1857600080fd5b81516200637281620085d3565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008262008a635762008a6362008a3b565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162008a935762008a9362008822565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b8181101562008ae75785518352948301949183019160010162008ac9565b5050809450505080851660408501525050949350505050565b604051601f8201601f191681016001600160401b038111828210171562008b2b5762008b2b62008a25565b604052919050565b60006001600160401b0382111562008b4f5762008b4f62008a25565b5060051b60200190565b60008060006060848603121562008b6f57600080fd5b83519250602080850151925060408501516001600160401b0381111562008b9557600080fd5b8501601f8101871362008ba757600080fd5b805162008bbe62008bb88262008b33565b62008b00565b81815260059190911b8201830190838101908983111562008bde57600080fd5b928401925b8284101562008bfe5783518252928401929084019062008be3565b80955050505050509250925092565b600080600080600080600080610100898b03121562008c2b57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062008c6760e08a016200889c565b90509295985092959890939650565b6001600160401b0381811683821602808216919082811462008c9c5762008c9c62008822565b505092915050565b6001600160401b0381811683821601908082111562007147576200714762008822565b6001600160401b0382811682821603908082111562007147576200714762008822565b60006001600160401b038084168062008d075762008d0762008a3b565b92169190910492915050565b600081518084526020808501945080840160005b8381101562008d455781518752958201959082019060010162008d27565b509495945050505050565b60006001600160a01b0380871683528086166020840152506080604083015262008d7e608083018562008d13565b828103606084015262008d92818562008d13565b979650505050505050565b600082601f83011262008daf57600080fd5b8151602062008dc262008bb88362008b33565b82815260059290921b8401810191818101908684111562008de257600080fd5b8286015b8481101562008dff578051835291830191830162008de6565b509695505050505050565b60006020828403121562008e1d57600080fd5b81516001600160401b0381111562008e3457600080fd5b6200641a8482850162008d9d565b83815282602082015260606040820152600062000a2560608301846200831b565b6001600160a01b03831681526040602082015260006200641a60408301846200831b565b6000825162008e9b818460208701620082f5565b9190910192915050565b6001600160e01b031983168152815160009062008eca816004850160208701620082f5565b919091016004019392505050565b825160009082906020808701845b8381101562008f045781518552938201939082019060010162008ee6565b5050948252509092019392505050565b6000806040838503121562008f2857600080fd5b82516001600160401b038082111562008f4057600080fd5b62008f4e8683870162008d9d565b9350602085015191508082111562008f6557600080fd5b5062008f748582860162008d9d565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3134746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a32746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a36746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3131746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a32746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a31360000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a31746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a32746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a39746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a36746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a38746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a34746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a34746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3130746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3132746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a33746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a37746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a37746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a38746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a33746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3133746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a31746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a34746573745f43697263756c61724f7261636c6547657453616d706c6541743a3a35746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a35746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a3135746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a33746573745f4765744f7261636c65506172616d6574657273456d7074794f7261636c653a3a31746573745f43697263756c61724f7261636c65576974683253616d706c65733a3a39a26469706673582212204930c77eabec21bd7c069f2771e9eeb244b45691fc22e2cdcea3c049b34deb6564736f6c63430008140033","sourceMap":"95:11936:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;11522:507:89;;;:::i;:::-;;185:189;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4134:25:105;;;4122:2;4107:18;12046:168:93;3988:177:105;2738:178:5;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;7326:8:105;7314:21;;;7296:40;;7284:2;7269:18;12220:205:93;7152:190:105;1408:1152:89;;;:::i;3069:146:5:-;;;:::i;4893:2721:89:-;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;380:1022:89:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;2566:2321:89:-;;;:::i;2304:142:5:-;;;:::i;7620:3896:89:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;11522:507:89:-;11596:12;11610:18;11630:19;11651:22;11689:11;;;;;;;;;-1:-1:-1;;;;;11689:11:89;-1:-1:-1;;;;;11689:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11593:129;;;;;;;;;;;;;;;;;11733:59;11742:4;11748:1;11733:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;11802:65;11811:10;11823:1;11802:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;11877:66;11886:11;11899:1;11877:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;11953:69;11962:14;11978:1;11953:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;11583:446;;;;11522:507::o;185:189::-;228:13;:11;:13::i;:::-;279:7;;288:4;;266:27;;-1:-1:-1;;;;;279:7:89;;;;288:4;266:12;:27::i;:::-;252:11;:41;;-1:-1:-1;;;;;;252:41:89;-1:-1:-1;;;;;252:41:89;;;;;;;;;304:63;;317:3;;;;992:7:93;348:4:89;;360:2;;304:12;:63::i;:::-;185:189::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;1408:1152:89:-;1456:11;;:37;;-1:-1:-1;;;1456:37:89;;1489:3;1456:37;;;12119:38:105;-1:-1:-1;;;;;1456:11:89;;;;:32;;12092:18:105;;1456:37:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1517:7:89;;1504:33;;-1:-1:-1;;;;;;1517:7:89;;-1:-1:-1;1527:3:89;1532:4;1504;:33::i;:::-;1547:13;;-1:-1:-1;;;1547:13:89;;-1:-1:-1;;;;;1556:3:89;12340:55:105;1547:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;1547:8:89;;;12295:18:105;;1547:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1570:7:89;;1595:11;;1570:44;;-1:-1:-1;;;1570:44:89;;-1:-1:-1;;;;;1595:11:89;;;1570:44;;;12605:74:105;1609:4:89;12695:18:105;;;12688:34;1570:7:89;;;-1:-1:-1;1570:16:89;;-1:-1:-1;12578:18:105;;1570:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1624:11:89;;:27;;-1:-1:-1;;;1624:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;1647:3:89;13362:55:105;;13342:18;;;13335:83;1624:11:89;;;;:16;;13258:18:105;;1624:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1665:11;1678:17;1697:18;1717:21;1754:11;;;;;;;;;-1:-1:-1;;;;;1754:11:89;-1:-1:-1;;;;;1754:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1662:125;;;;;;;;;1798:43;1807:4;1798:43;;1813:3;1798:43;;;;;;;;;;;;;;;;;:8;:43::i;:::-;1851:47;1860:10;1851:47;;1872:1;1851:47;;;;;;;;;;;;;;;;;:8;:47::i;:::-;1908:62;1917:11;1908:62;;1930:15;1908:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;1980:65;1989:14;1980:65;;2005:15;1980:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;-1:-1:-1;;;;;;;;;;;2056:7:89;2064:19;:15;2082:1;2064:19;:::i;:::-;2056:28;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;2056:28:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2095:13:89;;-1:-1:-1;;;2095:13:89;;-1:-1:-1;;;;;2104:3:89;12340:55:105;2095:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;2095:8:89;-1:-1:-1;2095:8:89;;-1:-1:-1;12295:18:105;;2095:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2118:7:89;;2143:11;;2118:44;;-1:-1:-1;;;2118:44:89;;-1:-1:-1;;;;;2143:11:89;;;2118:44;;;12605:74:105;2157:4:89;12695:18:105;;;12688:34;2118:7:89;;;-1:-1:-1;2118:16:89;;-1:-1:-1;12578:18:105;;2118:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2172:11:89;;:27;;-1:-1:-1;;;2172:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;2195:3:89;13362:55:105;;13342:18;;;13335:83;2172:11:89;;;;:16;;13258:18:105;;2172:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2262:11;;;;;;;;;-1:-1:-1;;;;;2262:11:89;-1:-1:-1;;;;;2262:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2306:43;;;;;;;;;;;;;;;;;2210:85;;-1:-1:-1;2210:85:89;;-1:-1:-1;2210:85:89;-1:-1:-1;2210:85:89;-1:-1:-1;2306:43:89;;-1:-1:-1;2306:43:89;;;;2321:3;;2306:8;:43::i;:::-;2359:47;2368:10;2359:47;;2380:1;2359:47;;;;;;;;;;;;;;;;;:8;:47::i;:::-;2416:62;2425:11;2416:62;;2438:15;2416:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;2488:65;2497:14;2488:65;;2513:15;2488:65;;;;;;;;;;;;;;;;;:8;:65::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4893:2721:89;4954:11;;:35;;-1:-1:-1;;;4954:35:89;;4987:1;4954:35;;;12119:38:105;-1:-1:-1;;;;;4954:11:89;;;;:32;;12092:18:105;;4954:35:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5000:19;5022:11;;;;;;;;;-1:-1:-1;;;;;5022:11:89;-1:-1:-1;;;;;5022:23:89;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5071:7;;5000:47;;-1:-1:-1;5058:33:89;;-1:-1:-1;;;;;5071:7:89;5081:3;5086:4;5058;:33::i;:::-;5101:13;;-1:-1:-1;;;5101:13:89;;-1:-1:-1;;;;;5110:3:89;12340:55:105;5101:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;5101:8:89;;;12295:18:105;;5101:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5124:7:89;;5149:11;;5124:44;;-1:-1:-1;;;5124:44:89;;-1:-1:-1;;;;;5149:11:89;;;5124:44;;;12605:74:105;5163:4:89;12695:18:105;;;12688:34;5124:7:89;;;-1:-1:-1;5124:16:89;;-1:-1:-1;12578:18:105;;5124:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5178:11:89;;:27;;-1:-1:-1;;;5178:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;5201:3:89;13362:55:105;;13342:18;;;13335:83;5178:11:89;;;;:16;;13258:18:105;;5178:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5349:11:89;;:54;;-1:-1:-1;;;5349:54:89;;5229:15;14248:12:105;14236:25;;5349:54:89;;;14218:44:105;5229:15:89;-1:-1:-1;;;;;;;;;;;5349:11:89;;;;:29;;14191:18:105;;5349:54:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5255:148;;;;;;5414:19;5436:11;;;;;;;;;-1:-1:-1;;;;;5436:11:89;-1:-1:-1;;;;;5436:23:89;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5414:47;-1:-1:-1;5472:78:89;-1:-1:-1;;;;;5472:78:89;;5495:17;5510:2;5495:17;;;;:::i;:::-;5472:78;;;;;;;;;;;;;;;;;:8;:78::i;:::-;5560:70;5569:20;-1:-1:-1;;;;;5560:70:89;5591:1;5560:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;5640;5649:20;-1:-1:-1;;;;;5640:70:89;5671:1;5640:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;5726:15;;-1:-1:-1;;;;;;;;;;;;5751:7:89;5759:21;5726:15;5777:3;5759:21;:::i;:::-;5751:30;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;5751:30:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5792:13:89;;-1:-1:-1;;;5792:13:89;;-1:-1:-1;;;;;5801:3:89;12340:55:105;5792:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;5792:8:89;-1:-1:-1;5792:8:89;;-1:-1:-1;12295:18:105;;5792:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5815:7:89;;5840:11;;5815:44;;-1:-1:-1;;;5815:44:89;;-1:-1:-1;;;;;5840:11:89;;;5815:44;;;12605:74:105;5854:4:89;12695:18:105;;;12688:34;5815:7:89;;;-1:-1:-1;5815:16:89;;-1:-1:-1;12578:18:105;;5815:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5869:11:89;;:27;;-1:-1:-1;;;5869:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;5892:3:89;13362:55:105;;13342:18;;;13335:83;5869:11:89;;;;:16;;13258:18:105;;5869:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5912:20:89;5930:2;5912:15;:20;:::i;:::-;6202:11;;:54;;-1:-1:-1;;;6202:54:89;;14248:12:105;6239:15:89;14236:25:105;6202:54:89;;;14218:44:105;5907:25:89;;-1:-1:-1;6062:12:89;;6076:20;;6098;;-1:-1:-1;;;;;6202:11:89;;;;:29;;14191:18:105;;6202:54:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6291:11;;:25;;;-1:-1:-1;;;6291:25:89;;;;6129:127;;-1:-1:-1;6129:127:89;;-1:-1:-1;6129:127:89;;-1:-1:-1;6267:21:89;;-1:-1:-1;;;;;6291:11:89;;;;:23;;:25;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6267:49;-1:-1:-1;6327:101:89;-1:-1:-1;;;;;6327:101:89;;6373:17;6388:2;6373:17;;;;:::i;:::-;6350:40;;-1:-1:-1;;;;;6350:40:89;;;:::i;:::-;6327:101;;;;;;;;;;;;;;;;;:8;:101::i;:::-;6438:70;6447:20;-1:-1:-1;;;;;6438:70:89;6469:1;6438:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;6518;6527:20;-1:-1:-1;;;;;6518:70:89;6549:1;6518:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;6604:15;;-1:-1:-1;;;;;;;;;;;;6629:7:89;6637:22;6604:15;6655:4;6637:22;:::i;:::-;6629:31;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;6629:31:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6684:4:89;;6671:30;;-1:-1:-1;;;;;;6684:4:89;;-1:-1:-1;6691:3:89;6696:4;6671;:30::i;:::-;6711:13;;-1:-1:-1;;;6711:13:89;;-1:-1:-1;;;;;6720:3:89;12340:55:105;6711:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;6711:8:89;;;12295:18:105;;6711:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6734:4:89;;6756:11;;6734:41;;-1:-1:-1;;;6734:41:89;;-1:-1:-1;;;;;6756:11:89;;;6734:41;;;12605:74:105;6770:4:89;12695:18:105;;;12688:34;6734:4:89;;;-1:-1:-1;6734:13:89;;-1:-1:-1;12578:18:105;;6734:41:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6785:11:89;;:28;;-1:-1:-1;;;6785:28:89;;:11;:28;;;13285:41:105;-1:-1:-1;;;;;6809:3:89;13362:55:105;;13342:18;;;13335:83;6785:11:89;;;;:16;;13258:18:105;;6785:28:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6829:20:89;6847:2;6829:15;:20;:::i;:::-;7099:11;;:54;;-1:-1:-1;;;7099:54:89;;14248:12:105;7136:15:89;14236:25:105;7099:54:89;;;14218:44:105;6824:25:89;;-1:-1:-1;6958:12:89;;-1:-1:-1;6972:20:89;;-1:-1:-1;6994:20:89;;-1:-1:-1;;;;;;7099:11:89;;:29;;14191:18:105;;7099:54:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7200:11;;:38;;;-1:-1:-1;;;7200:38:89;;;;7026:127;;-1:-1:-1;7026:127:89;;-1:-1:-1;7026:127:89;;-1:-1:-1;7165:28:89;;-1:-1:-1;;;;;7200:11:89;;;;:36;;:38;;;;;;;;;;;;;;:11;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7164:74;;;;;7249:103;7258:12;-1:-1:-1;;;;;7249:103:89;7312:2;7295:14;:19;;;;;;:::i;:::-;7272:42;;-1:-1:-1;;;;;7272:42:89;;;:::i;:::-;7249:103;;;;;;;;;;;;;;;;;:8;:103::i;:::-;7362:95;-1:-1:-1;;;;;7362:95:89;;7393:26;7417:2;7393:26;;;;:::i;:::-;7362:95;;;;;;;;;;;;;;;;;:8;:95::i;:::-;7467:140;7489:20;-1:-1:-1;;;;;7467:140:89;7558:2;7540:14;7512:11;;;;;;;;;-1:-1:-1;;;;;7512:11:89;-1:-1:-1;;;;;7512:23:89;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;;;:::i;:::-;7511:49;;;;;;:::i;:::-;7467:140;;;;;;;;;;;;;;;;;:8;:140::i;:::-;4944:2670;;;;;;;;;;;4893:2721::o;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;-1:-1:-1;;;;;10580:20:93;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;12340:55:105;;11033:19:93;;;12322:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;12295:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;12623:55:105;;;11062:41:93;;;12605:74:105;12695:18;;;12688:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;12578:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;12623:55:105;;;11113:41:93;;;12605:74:105;12695:18;;;12688:34;;;11113:15:93;;;;;12578:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;380:1022:89:-;-1:-1:-1;;;;;;;;;;;456:9:89;466:13;;;;;;;:32;;;495:3;483:9;:15;;;466:32;456:43;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;456:43:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:11;576:17;595:18;615:21;652:11;;;;;;;;;-1:-1:-1;;;;;652:11:89;-1:-1:-1;;;;;652:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;560:125;;;;;;;;;696:53;705:4;696:53;;711:1;696:53;;;;;;;;;;;;;;;;;:8;:53::i;:::-;759:59;768:10;759:59;;780:1;759:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;828:60;837:11;828:60;;850:1;828:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;898:63;907:14;898:63;;923:1;898:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;972:11;;:43;;-1:-1:-1;;;972:43:89;;12149:6:105;12137:19;;972:43:89;;;12119:38:105;-1:-1:-1;;;;;972:11:89;;;;:32;;12092:18:105;;972:43:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:11;;;;;;;;;-1:-1:-1;;;;;1078:11:89;-1:-1:-1;;;;;1078:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1122:61;;;;;;;;;;;;;;;;;;1026:85;;-1:-1:-1;1026:85:89;;-1:-1:-1;1026:85:89;-1:-1:-1;1026:85:89;-1:-1:-1;1122:61:89;;-1:-1:-1;1122:61:89;;;;;;;;;:8;:61::i;:::-;1193:59;1202:10;1193:59;;1214:1;1193:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;1262:60;1271:11;1262:60;;1284:1;1262:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;1332:63;1341:14;1332:63;;1357:1;1332:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;446:956;;;;380:1022;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;12149:6:105;12137:19;;12532:26:93;;;12119:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;12092:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;12605:74:105;;;1398:17:1;12695:18:105;;;12688:34;1428:1:1;;1377:7;;12578:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2566:2321:89:-;2628:11;;:35;;-1:-1:-1;;;2628:35:89;;2661:1;2628:35;;;12119:38:105;-1:-1:-1;;;;;2628:11:89;;;;:32;;12092:18:105;;2628:35:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2687:7:89;;2674:33;;-1:-1:-1;;;;;;2687:7:89;;-1:-1:-1;2697:3:89;2702:4;2674;:33::i;:::-;2717:13;;-1:-1:-1;;;2717:13:89;;-1:-1:-1;;;;;2726:3:89;12340:55:105;2717:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;2717:8:89;;;12295:18:105;;2717:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2740:7:89;;2765:11;;2740:44;;-1:-1:-1;;;2740:44:89;;-1:-1:-1;;;;;2765:11:89;;;2740:44;;;12605:74:105;2779:4:89;12695:18:105;;;12688:34;2740:7:89;;;-1:-1:-1;2740:16:89;;-1:-1:-1;12578:18:105;;2740:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2794:11:89;;:27;;-1:-1:-1;;;2794:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;2817:3:89;13362:55:105;;13342:18;;;13335:83;2794:11:89;;;;:16;;13258:18:105;;2794:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2835:11;2848:17;2867:18;2887:21;2924:11;;;;;;;;;-1:-1:-1;;;;;2924:11:89;-1:-1:-1;;;;;2924:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2832:125;;;;;;;;;2968:55;2977:4;2968:55;;2983:1;2968:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;3033:61;3042:10;3033:61;;3054:1;3033:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;3104:76;3113:11;3104:76;;3126:15;3104:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;3190:79;3199:14;3190:79;;3215:15;3190:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;-1:-1:-1;;;;;;;;;;;3280:7:89;3288:21;:15;3306:3;3288:21;:::i;:::-;3280:30;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;3280:30:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3321:13:89;;-1:-1:-1;;;3321:13:89;;-1:-1:-1;;;;;3330:3:89;12340:55:105;3321:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;3321:8:89;-1:-1:-1;3321:8:89;;-1:-1:-1;12295:18:105;;3321:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3344:7:89;;3369:11;;3344:44;;-1:-1:-1;;;3344:44:89;;-1:-1:-1;;;;;3369:11:89;;;3344:44;;;12605:74:105;3383:4:89;12695:18:105;;;12688:34;3344:7:89;;;-1:-1:-1;3344:16:89;;-1:-1:-1;12578:18:105;;3344:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3398:11:89;;:27;;-1:-1:-1;;;3398:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;3421:3:89;13362:55:105;;13342:18;;;13335:83;3398:11:89;;;;:16;;13258:18:105;;3398:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3488:11;;;;;;;;;-1:-1:-1;;;;;3488:11:89;-1:-1:-1;;;;;3488:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3532:55;;;;;;;;;;;;;3436:85;;-1:-1:-1;3436:85:89;;-1:-1:-1;3436:85:89;;-1:-1:-1;3436:85:89;-1:-1:-1;3532:55:89;;-1:-1:-1;3532:55:89;;;;3547:1;;3532:55;;;;;;:8;:55::i;:::-;3597:61;3606:10;3597:61;;3618:1;3597:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;3668:76;3677:11;3668:76;;3690:15;3668:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;3754:85;;;;3779:21;3797:3;3779:15;:21;:::i;:::-;3754:85;;;;;;;;;;;;;;;;;:8;:85::i;:::-;-1:-1:-1;;;;;;;;;;;3850:7:89;3858:22;:15;3876:4;3858:22;:::i;:::-;3850:31;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;3850:31:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3892:13:89;;-1:-1:-1;;;3892:13:89;;-1:-1:-1;;;;;3901:3:89;12340:55:105;3892:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;3892:8:89;-1:-1:-1;3892:8:89;;-1:-1:-1;12295:18:105;;3892:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3915:7:89;;3940:11;;3915:44;;-1:-1:-1;;;3915:44:89;;-1:-1:-1;;;;;3940:11:89;;;3915:44;;;12605:74:105;3954:4:89;12695:18:105;;;12688:34;3915:7:89;;;-1:-1:-1;3915:16:89;;-1:-1:-1;12578:18:105;;3915:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3969:11:89;;:27;;-1:-1:-1;;;3969:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;3992:3:89;13362:55:105;;13342:18;;;13335:83;3969:11:89;;;;:16;;13258:18:105;;3969:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4059:11;;;;;;;;;-1:-1:-1;;;;;4059:11:89;-1:-1:-1;;;;;4059:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4103:55;;;;;;;;;;;;;4007:85;;-1:-1:-1;4007:85:89;;-1:-1:-1;4007:85:89;;-1:-1:-1;4007:85:89;-1:-1:-1;4103:55:89;;-1:-1:-1;4103:55:89;;;;4118:1;;4103:55;;;;;;:8;:55::i;:::-;4168:62;4177:10;4168:62;;4189:1;4168:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;4240:77;4249:11;4240:77;;4262:15;4240:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;4327:87;;;;4352:22;4370:4;4352:15;:22;:::i;:::-;4327:87;;;;;;;;;;;;;;;;;:8;:87::i;:::-;-1:-1:-1;;;;;;;;;;;4425:7:89;4433:21;:15;4451:3;4433:21;:::i;:::-;4425:30;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;4425:30:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4518:11;;;;;;;;;-1:-1:-1;;;;;4518:11:89;-1:-1:-1;;;;;4518:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4562:56;;;;;;;;;;;;;4466:85;;-1:-1:-1;4466:85:89;;-1:-1:-1;4466:85:89;;-1:-1:-1;4466:85:89;-1:-1:-1;4562:56:89;;-1:-1:-1;4562:56:89;;;;4577:1;;4562:56;;;;;;:8;:56::i;:::-;4628:62;4637:10;4628:62;;4649:1;4628:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;4700:83;;;;4722:21;4740:3;4722:15;:21;:::i;:::-;4700:83;;;;;;;;;;;;;;;;;:8;:83::i;:::-;4793:87;;;;4818:22;4836:4;4818:15;:22;:::i;:::-;4793:87;;;;;;;;;;;;;;;;;:8;:87::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;7620:3896:89:-;7684:7;;7671:33;;-1:-1:-1;;;;;7684:7:89;7694:3;7699:4;7671;:33::i;:::-;7727:4;;7714:30;;-1:-1:-1;;;;;7727:4:89;7734:3;7739:4;7714;:30::i;:::-;7755:11;;:39;;-1:-1:-1;;;7755:39:89;;7788:5;7755:39;;;12119:38:105;-1:-1:-1;;;;;7755:11:89;;;;:32;;12092:18:105;;7755:39:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7805:14:89;;-1:-1:-1;;;7805:14:89;;7813:5;7805:14;;;4134:25:105;-1:-1:-1;;;;;;;;;;;7805:7:89;-1:-1:-1;7805:7:89;;-1:-1:-1;4107:18:105;;7805:14:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7830:18:89;;-1:-1:-1;;;7830:18:89;;-1:-1:-1;;;;;7844:3:89;12340:55:105;7830:18:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;7830:13:89;-1:-1:-1;7830:13:89;;-1:-1:-1;12295:18:105;;7830::89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7863:9;7858:191;7882:5;7878:1;:9;7858:191;;;7908:7;;7933:11;;7908:44;;-1:-1:-1;;;7908:44:89;;-1:-1:-1;;;;;7933:11:89;;;7908:44;;;12605:74:105;7947:4:89;12695:18:105;;;12688:34;7908:7:89;;;:16;;12578:18:105;;7908:44:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7966:11:89;;:27;;-1:-1:-1;;;7966:27:89;;:11;:27;;;13285:41:105;-1:-1:-1;;;;;7989:3:89;13362:55:105;;13342:18;;;13335:83;7966:11:89;;;;:16;;13258:18:105;;7966:27:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;8008:7:89;8016:21;:15;8034:3;8016:21;:::i;:::-;8008:30;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;8008:30:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7889:3;;;;;:::i;:::-;;;;7858:191;;;;317:28:0;309:37;;-1:-1:-1;;;;;8058:12:89;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8086:12;8100:18;8120:19;8141:22;8179:11;;;;;;;;;-1:-1:-1;;;;;8179:11:89;-1:-1:-1;;;;;8179:31:89;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8083:129;;;;;;;;;;;;;;;;;8223:48;8232:4;8238:5;8223:48;;;;;;;;;;;;;;;;;:8;:48::i;:::-;8281:54;8290:10;8302:5;8281:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;8345:71;8354:11;8367:21;8385:3;8367:15;:21;:::i;:::-;8345:71;;;;;;;;;;;;;;;;;:8;:71::i;:::-;8426:82;8435:14;8451:29;8469:11;8451:15;:29;:::i;:::-;8426:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;8537:11;;:25;;;-1:-1:-1;;;8537:25:89;;;;8519:15;;-1:-1:-1;;;;;8537:11:89;;:23;;:25;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8688:11;;:54;;-1:-1:-1;;;8688:54:89;;14248:12:105;8725:15:89;14236:25:105;8688:54:89;;;14218:44:105;8519:43:89;;-1:-1:-1;8588:20:89;;;;;;-1:-1:-1;;;;;8688:11:89;;;;:29;;14191:18:105;;8688:54:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8857:11;;8587:155;;-1:-1:-1;8587:155:89;;-1:-1:-1;8587:155:89;-1:-1:-1;8757:20:89;;;;;;-1:-1:-1;;;;;8857:11:89;:29;8894:21;8912:3;8894:15;:21;:::i;:::-;8857:60;;-1:-1:-1;;;;;;8857:60:89;;;;;;;14248:12:105;14236:25;;;8857:60:89;;;14218:44:105;14191:18;;8857:60:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8756:161;;-1:-1:-1;8756:161:89;-1:-1:-1;8756:161:89;-1:-1:-1;8932:90:89;-1:-1:-1;;;;;8932:90:89;;8972:22;:16;;;8991:3;8972:22;:::i;:::-;8956:38;;:13;:38;:::i;:::-;-1:-1:-1;;;;;8932:90:89;;;;;;;;;;;;;;;;;;:8;:90::i;:::-;9089:61;9098:21;-1:-1:-1;;;;;9089:61:89;9121:1;9089:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;9164;9173:21;-1:-1:-1;;;;;9164:61:89;9196:1;9164:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;9239;9248:21;-1:-1:-1;;;;;9239:61:89;9271:1;9239:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;9314;9323:21;-1:-1:-1;;;;;9314:61:89;9346:1;9314:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;9389:85;9432:3;9399:29;9415:13;9399;:29;:::i;:::-;9398:37;;;;:::i;:::-;-1:-1:-1;;;;;9389:85:89;9437:8;9389:85;;;;;;;;;;;;;;;;;;;:8;:85::i;:::-;9488:62;9497:21;-1:-1:-1;;;;;9488:62:89;9520:1;9488:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;9585:11;;-1:-1:-1;;;;;9585:11:89;:29;9622:19;9640:1;9622:15;:19;:::i;:::-;9585:58;;-1:-1:-1;;;;;;9585:58:89;;;;;;;14248:12:105;14236:25;;;9585:58:89;;;14218:44:105;14191:18;;9585:58:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9565:78:89;;-1:-1:-1;9657:202:89;;-1:-1:-1;9715:15:89;9683:29;-1:-1:-1;;;;;9683:22:89;;9708:4;9683:29;:::i;:::-;:47;;;;:::i;:::-;9781:19;9799:1;9781:15;:19;:::i;:::-;9748:29;-1:-1:-1;;;;;9748:22:89;;9773:4;9748:29;:::i;:::-;:53;;;;:::i;:::-;9657:202;;;;;;;;;;;;;;;;;:8;:202::i;:::-;-1:-1:-1;;;;;;;;;;;;9918:7:89;-1:-1:-1;9918:7:89;;-1:-1:-1;9951:3:89;;-1:-1:-1;9926:22:89;;-1:-1:-1;9926:15:89;;-1:-1:-1;9944:4:89;9926:22;:::i;:::-;:28;;;;:::i;:::-;9918:37;;;;;;;;;;;;;4134:25:105;;4122:2;4107:18;;3988:177;9918:37:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9966:13:89;;-1:-1:-1;;;9966:13:89;;-1:-1:-1;;;;;9975:3:89;12340:55:105;9966:13:89;;;12322:74:105;-1:-1:-1;;;;;;;;;;;9966:8:89;-1:-1:-1;9966:8:89;;-1:-1:-1;12295:18:105;;9966:13:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9989:4:89;;10011:11;;9989:41;;-1:-1:-1;;;9989:41:89;;-1:-1:-1;;;;;10011:11:89;;;9989:41;;;12605:74:105;10025:4:89;12695:18:105;;;12688:34;9989:4:89;;;-1:-1:-1;9989:13:89;;-1:-1:-1;12578:18:105;;9989:41:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10040:11:89;;:28;;-1:-1:-1;;;10040:28:89;;:11;:28;;;13285:41:105;-1:-1:-1;;;;;10064:3:89;13362:55:105;;13342:18;;;13335:83;10040:11:89;;;;:16;;13258:18:105;;10040:28:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10100:11:89;;:25;;;-1:-1:-1;;;10100:25:89;;;;10079:18;;-1:-1:-1;;;;;10100:11:89;;:23;;:25;;;;;;;;;;;;;;:11;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10239:11;;:54;;-1:-1:-1;;;10239:54:89;;14248:12:105;10276:15:89;14236:25:105;10239:54:89;;;14218:44:105;10079:46:89;;;;;;-1:-1:-1;10137:22:89;;;;;;-1:-1:-1;;;;;10239:11:89;;;;:29;;14191:18:105;;10239:54:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10422:11;;10136:157;;-1:-1:-1;10136:157:89;;-1:-1:-1;10136:157:89;-1:-1:-1;10305:27:89;;;;;;-1:-1:-1;;;;;10422:11:89;:29;10459:22;10477:4;10459:15;:22;:::i;:::-;10422:61;;-1:-1:-1;;;;;;10422:61:89;;;;;;;14248:12:105;14236:25;;;10422:61:89;;;14218:44:105;14191:18;;10422:61:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10609:11;;10304:179;;-1:-1:-1;10304:179:89;;-1:-1:-1;10304:179:89;-1:-1:-1;10495:26:89;;;;;;-1:-1:-1;;;;;10609:11:89;:29;10646:23;10664:5;10646:15;:23;:::i;:::-;10609:62;;-1:-1:-1;;;;;;10609:62:89;;;;;;;14248:12:105;14236:25;;;10609:62:89;;;14218:44:105;14191:18;;10609:62:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10494:177;;;;;;10682:68;10691:27;-1:-1:-1;;;;;10682:68:89;10720:1;10682:68;;;;;;;;;;;;;;;;;:8;:68::i;:::-;10760;10769:27;-1:-1:-1;;;;;10760:68:89;10798:1;10760:68;;;;;;;;;;;;;;;;;:8;:68::i;:::-;10839:69;10848:28;-1:-1:-1;;;;;10839:69:89;10878:1;10839:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;10918;10927:28;-1:-1:-1;;;;;10918:69:89;10957:1;10918:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;10998:110;11029:23;:16;;;11048:4;11029:23;:::i;:::-;:28;;11055:2;11029:28;:::i;:::-;11007:50;;:19;:50;:::i;:::-;-1:-1:-1;;;;;10998:110:89;11059:20;-1:-1:-1;;;;;10998:110:89;;;;;;;;;;;;;;;;;;:8;:110::i;:::-;11119:173;11190:23;:16;;;11209:4;11190:23;:::i;:::-;11164;:16;;;11183:4;11164:23;:::i;:::-;11141:46;;:20;:46;:::i;:::-;:72;;;;:::i;:::-;-1:-1:-1;;;;;11119:173:89;11227:15;-1:-1:-1;;;;;11119:173:89;;;;;;;;;;;;;;;;;;:8;:173::i;:::-;11302:103;-1:-1:-1;;;;;11302:103:89;;11337:22;;;;:11;:22;:::i;:::-;11336:33;;11363:6;11336:33;:::i;:::-;:40;;11372:4;11336:40;:::i;:::-;-1:-1:-1;;;;;11302:103:89;;;;;;;;;;;;;;;;;;:8;:103::i;:::-;11415:94;-1:-1:-1;;;;;11415:94:89;;11450:22;;;;:11;:22;:::i;:::-;11449:31;;11476:4;11449:31;:::i;:::-;-1:-1:-1;;;;;11415:94:89;;;;;;;;;;;;;;;;;;:8;:94::i;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;23000:2:105;11461:73:93;;;22982:21:105;23039:2;23019:18;;;23012:30;23078:26;23058:18;;;23051:54;23122:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;-1:-1:-1;;;;;11623:20:93;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;-1:-1:-1;;;;;11680:20:93;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;23342:55:105;;;11821:26:93;;;23324:74:105;23446:8;23434:21;;23414:18;;;23407:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;23297:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;12340:55:105;;11974:14:93;;;12322:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;12295:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;2566:3054:93:-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;26713:4:105;26701:17;;;26683:36;;26671:2;26656:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;26713:4:105;26701:17;;;26683:36;;26671:2;26656:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;26713:4:105;26701:17;;;26683:36;;26671:2;26656:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;26713:4:105;26701:17;;;26683:36;;26671:2;26656:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;26713:4:105;26701:17;;;26683:36;;26671:2;26656:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;26713:4:105;26701:17;;;26683:36;;26671:2;26656:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;27341:74:105;27431:18;;;27424:30;;;;27490:1;27470:18;;;27463:29;27528:9;27508:18;;;27501:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;27555:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;27797:74:105;;;;27887:18;;;27880:30;;;;27926:18;;;27919:29;-1:-1:-1;;;27964:18:105;;;27957:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;28008:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;28250:74:105;;;;28340:18;;;28333:30;;;;28379:18;;;28372:29;-1:-1:-1;;;28417:18:105;;;28410:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;28461:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;28703:74:105;;;;28793:18;;;28786:30;;;;28832:18;;;28825:29;-1:-1:-1;;;28870:18:105;;;28863:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;28914:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;29156:74:105;;;;29246:18;;;29239:30;;;;29285:18;;;29278:29;-1:-1:-1;;;29323:18:105;;;29316:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;29367:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;29609:74:105;;;;29699:18;;;29692:30;;;;29738:18;;;29731:29;-1:-1:-1;;;29776:18:105;;;29769:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;29820:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;30062:74:105;30152:18;;;30145:30;30211:1;30191:18;;;30184:29;-1:-1:-1;;;30229:18:105;;;30222:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;30272:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;30514:74:105;30604:18;;;30597:30;30663:1;30643:18;;;30636:29;30701:10;30681:18;;;30674:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;30729:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;31056:15:105;;;31038:34;;31108:15;;;;31103:2;31088:18;;31081:43;31155:2;31140:18;;31133:34;30965:2;30950:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;12340:55:105;;;12322:74;;12310:2;12295:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;12322:74:105;;;;3824:7:93;;;;:31;;12295:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;31774:15:105;;;31756:34;;31826:15;;;31821:2;31806:18;;31799:43;31878:15;;;31873:2;31858:18;;31851:43;31683:2;31668:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;31774:15:105;;;31756:34;;31826:15;;;31821:2;31806:18;;31799:43;31878:15;;;31873:2;31858:18;;31851:43;31683:2;31668:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;32529:74:105;32619:18;;;32612:30;;;;32678:1;32658:18;;;32651:29;32716:8;32696:18;;;32689:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;32742:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;32984:74:105;33074:18;;;33067:30;33133:1;33113:18;;;33106:29;33171:8;33151:18;;;33144:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;33197:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;33439:74:105;33529:18;;;33522:30;;;;33588:1;33568:18;;;33561:29;33626:9;33606:18;;;33599:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;33653:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;33895:74:105;33985:18;;;33978:30;34044:2;34024:18;;;34017:30;34083:20;34063:18;;;34056:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;34121:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;34363:74:105;34453:18;;;34446:30;34512:1;34492:18;;;34485:29;34550:10;34530:18;;;34523:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;34578:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;34820:74:105;34910:18;;;34903:30;34969:1;34949:18;;;34942:29;35007:11;34987:18;;;34980:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;35036:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;12578:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;4729:4:93;;;:12;;12578:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;4789:4:93;;;:12;;12578:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;4849:4:93;;;:12;;12578:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;4909:4:93;;;:12;;12578:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;4969:4:93;;;:12;;12578:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5029:3:93;;;:11;;12578:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5088:8:93;;;:16;;12578:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5153:7:93;;;:15;;12578:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5214:4:93;;;:12;;12578:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5272:4:93;;;:12;;12578:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5330:4:93;;;:12;;12578:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5388:4:93;;;:12;;12578:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5446:4:93;;;:12;;12578:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5504:3:93;;;:11;;12578:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;12605:74:105;-1:-1:-1;;12695:18:105;;;12688:34;5561:8:93;;;:16;;12578:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;7147:160::-;7217:14;7253:47;7277:6;7285;992:7;7253:23;:47::i;:::-;7243:57;7147:160;-1:-1:-1;;;7147:160:93:o;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;:::-;26935:117;;;:::o;8711:135:78:-;8804:1;-1:-1:-1;;;;;8785:20:78;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;12322:74:105;6180:7:93;;;:21;;12295:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;12322:74:105;6253:7:93;;;:21;;12295:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;12322:74:105;6323:7:93;;;:21;;12295:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;12322:74:105;6393:7:93;;;:21;;12295:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;12322:74:105;6463:7:93;;;:21;;12295:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;12322:74:105;6533:7:93;;;:21;;12295:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;12322:74:105;6602:7:93;;;:21;;12295:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;12322:74:105;6675:7:93;;;:21;;12295:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;36184:6:105;36217:15;;6788:346:93;;;36199:34:105;1202:5:93;36249:18:105;;;36242:43;;;1262:2:93;36301:18:105;;;36294:43;1318:3:93;36353:18:105;;;36346:43;36405:19;;;36398:44;;;;1446:6:93;36485:19:105;;;36478:44;1508:5:93;36538:19:105;;;36531:44;1581:7:93;36591:19:105;;;36584:44;6788:7:93;36644:19:105;;;36637:51;-1:-1:-1;;;;;6788:7:93;;:17;;36146:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7313:216;7410:14;7446:76;7480:6;7488;7496:7;1147:2;7446:33;:76::i;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;12340:55:105;;;27501:38:3;;;;12322:74:105;;;;27501:38:3;;;;;;;;;;12295:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;:60::-;27760:402;;27748:414;27416:752;;27331:837;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;7535:257:93:-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;37329:15:105;;;7729:54:93;;;37311:34:105;37381:15;;;37361:18;;;37354:43;;;;37445:8;37433:21;;37413:18;;;37406:49;37503:6;37491:19;;37471:18;;;37464:47;7674:14:93;;7729:7;;;;:20;;37222:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;:::-;10474:120;;:::o;10966:1095::-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;12623:55:105;;11664:18:8;;;12605:74:105;12695:18;;;12688:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;12578:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;39001:2:105;11725:175:8;;;38983:21:105;39040:3;39020:18;;;39013:31;39080:34;39060:18;;;39053:62;39151:34;39131:18;;;39124:62;39223:34;39202:19;;;39195:63;-1:-1:-1;;;39274:19:105;;;39267:46;39330:19;;11725:175:8;38799:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;39580:55:105;;11920:24:8;;;39562:74:105;39652:18;;;39645:34;;;39695:18;;;39688:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;39535:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;13395:393::-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;-1:-1:-1;;;;;13500:24:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;12340:55:105;;1990:25:8;;;12322:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;12295:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:55:105;;;;12605:74;;12710:2;12695:18;;12688:34;12593:2;12578:18;;12407:321;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;12623:55:105;;;12605:74;;12695:18;;;12688:34;12578:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;39001:2:105;2268:187:8;;;38983:21:105;39040:3;39020:18;;;39013:31;39080:34;39060:18;;;39053:62;39151:34;39131:18;;;39124:62;39223:34;39202:19;;;39195:63;-1:-1:-1;;;39274:19:105;;;39267:46;39330:19;;2268:187:8;38799:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;40599:55:105;;;40581:74;;-1:-1:-1;;;;;;40691:33:105;;;40671:18;;;40664:61;;;;40741:18;;;40734:34;40799:2;40784:18;;40777:34;40568:3;40553:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;12623:55:105;;;;12605:74;;12710:2;12695:18;;12688:34;12593:2;12578:18;;12407:321;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;12623:55:105;;;12605:74;;12695:18;;;12688:34;12578:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;39580:55:105;;;3215:32:8;;;39562:74:105;39652:18;;;39645:34;39695:18;;;39688:34;;;39535:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;40599:55:105;;;40581:74;;-1:-1:-1;;;;;;40691:33:105;;;40671:18;;;40664:61;;;;40741:18;;;40734:34;40799:2;40784:18;;40777:34;40568:3;40553:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;39580:55:105;;;3941:29:8;;;39562:74:105;39652:18;;;39645:34;39695:18;;;39688:34;;;39535:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;39580:55:105;;;4033:29:8;;;39562:74:105;39652:18;;;39645:34;39695:18;;;39688:34;;;39535:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;41024:2:105;4107:74:8;;;41006:21:105;41043:18;;;41036:30;;;;41102:34;41082:18;;;41075:62;41173:34;41153:18;;;41146:62;41225:19;;4107:74:8;40822:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;41457:2:105;4202:162:8;;;41439:21:105;41496:2;41476:18;;;41469:30;41535:34;41515:18;;;41508:62;41606:17;41586:18;;;41579:45;41641:19;;4202:162:8;41255:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;-1:-1:-1;;;;;8578:24:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:681;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:218;948:6;945:1;942:13;934:218;;;1013:13;;-1:-1:-1;;;;;1009:62:105;997:75;;1127:15;;;;1092:12;;;;970:1;963:9;934:218;;;-1:-1:-1;1169:3:105;;497:681;-1:-1:-1;;;;;;497:681:105:o;1183:250::-;1268:1;1278:113;1292:6;1289:1;1286:13;1278:113;;;1368:11;;;1362:18;1349:11;;;1342:39;1314:2;1307:10;1278:113;;;-1:-1:-1;;1425:1:105;1407:16;;1400:27;1183:250::o;1438:271::-;1480:3;1518:5;1512:12;1545:6;1540:3;1533:19;1561:76;1630:6;1623:4;1618:3;1614:14;1607:4;1600:5;1596:16;1561:76;:::i;:::-;1691:2;1670:15;-1:-1:-1;;1666:29:105;1657:39;;;;1698:4;1653:50;;1438:271;-1:-1:-1;;1438:271:105:o;1714:1765::-;1947:2;1999:21;;;2069:13;;1972:18;;;2091:22;;;1918:4;;1947:2;2132;;2150:18;;;;2187:1;2230:15;;;2215:31;;2211:40;;2274:15;;;1918:4;;2338:1112;2354:6;2349:3;2346:15;2338:1112;;;-1:-1:-1;;2423:22:105;;;2419:36;2407:49;;2479:13;;2566:9;;-1:-1:-1;;;;;2562:58:105;2547:74;;2660:11;;2654:18;2692:15;;;2685:27;;;2773:19;;2519:15;;;2805:24;;;2986:21;;;;2852:2;2934:17;;;2922:30;;2918:39;;;2876:15;;;;3031:1;3045:296;3061:8;3056:3;3053:17;3045:296;;;3167:2;3163:7;3154:6;3146;3142:19;3138:33;3131:5;3124:48;3199:42;3234:6;3223:8;3217:15;3199:42;:::i;:::-;3270:17;;;;3189:52;-1:-1:-1;3313:14:105;;;;3089:1;3080:11;3045:296;;;-1:-1:-1;;;3428:12:105;;;;3364:6;-1:-1:-1;;3393:15:105;;;;2380:1;2371:11;2338:1112;;;-1:-1:-1;3467:6:105;;1714:1765;-1:-1:-1;;;;;;;;;;1714:1765:105:o;3484:114::-;3568:4;3561:5;3557:16;3550:5;3547:27;3537:55;;3588:1;3585;3578:12;3603:380;3667:6;3675;3728:2;3716:9;3707:7;3703:23;3699:32;3696:52;;;3744:1;3741;3734:12;3696:52;3783:9;3770:23;3802:29;3825:5;3802:29;:::i;:::-;3850:5;-1:-1:-1;3907:2:105;3892:18;;3879:32;3920:31;3879:32;3920:31;:::i;:::-;3970:7;3960:17;;;3603:380;;;;;:::o;4170:1590::-;4372:4;4401:2;4441;4430:9;4426:18;4471:2;4460:9;4453:21;4494:6;4529;4523:13;4560:6;4552;4545:22;4586:2;4576:12;;4619:2;4608:9;4604:18;4597:25;;4681:2;4671:6;4668:1;4664:14;4653:9;4649:30;4645:39;4719:2;4711:6;4707:15;4740:1;4761;4771:960;4787:6;4782:3;4779:15;4771:960;;;4856:22;;;-1:-1:-1;;4852:36:105;4840:49;;4912:13;;4999:9;;-1:-1:-1;;;;;4995:58:105;4980:74;;5093:11;;5087:18;5125:15;;;5118:27;;;5206:19;;4952:15;;;5238:24;;;5328:21;;;;5373:1;;5296:2;5284:15;;;5387:236;5403:8;5398:3;5395:17;5387:236;;;5484:15;;-1:-1:-1;;;;;;5480:42:105;5466:57;;5592:17;;;;5431:1;5422:11;;;;;5549:14;;;;5387:236;;;-1:-1:-1;5709:12:105;;;;5646:5;-1:-1:-1;;;5674:15:105;;;;4813:1;4804:11;4771:960;;;-1:-1:-1;5748:6:105;;4170:1590;-1:-1:-1;;;;;;;;;4170:1590:105:o;5765:803::-;5927:4;5956:2;5996;5985:9;5981:18;6026:2;6015:9;6008:21;6049:6;6084;6078:13;6115:6;6107;6100:22;6153:2;6142:9;6138:18;6131:25;;6215:2;6205:6;6202:1;6198:14;6187:9;6183:30;6179:39;6165:53;;6253:2;6245:6;6241:15;6274:1;6284:255;6298:6;6295:1;6292:13;6284:255;;;6391:2;6387:7;6375:9;6367:6;6363:22;6359:36;6354:3;6347:49;6419:40;6452:6;6443;6437:13;6419:40;:::i;:::-;6409:50;-1:-1:-1;6517:12:105;;;;6482:15;;;;6320:1;6313:9;6284:255;;;-1:-1:-1;6556:6:105;;5765:803;-1:-1:-1;;;;;;;5765:803:105:o;6573:119::-;6658:8;6651:5;6647:20;6640:5;6637:31;6627:59;;6682:1;6679;6672:12;6697:450;6771:6;6779;6787;6840:2;6828:9;6819:7;6815:23;6811:32;6808:52;;;6856:1;6853;6846:12;6808:52;6895:9;6882:23;6914:30;6938:5;6914:30;:::i;:::-;6963:5;-1:-1:-1;7015:2:105;7000:18;;6987:32;;-1:-1:-1;7071:2:105;7056:18;;7043:32;7084:31;7043:32;7084:31;:::i;:::-;7134:7;7124:17;;;6697:450;;;;;:::o;7347:154::-;-1:-1:-1;;;;;7426:5:105;7422:54;7415:5;7412:65;7402:93;;7491:1;7488;7481:12;7506:1099;7639:6;7647;7655;7663;7671;7679;7687;7695;7748:3;7736:9;7727:7;7723:23;7719:33;7716:53;;;7765:1;7762;7755:12;7716:53;7804:9;7791:23;7823:31;7848:5;7823:31;:::i;:::-;7873:5;-1:-1:-1;7930:2:105;7915:18;;7902:32;7943:33;7902:32;7943:33;:::i;:::-;7995:7;-1:-1:-1;8054:2:105;8039:18;;8026:32;8067:33;8026:32;8067:33;:::i;:::-;8119:7;-1:-1:-1;8178:2:105;8163:18;;8150:32;8191;8150;8191;:::i;:::-;8242:7;-1:-1:-1;8296:3:105;8281:19;;8268:33;;-1:-1:-1;8348:3:105;8333:19;;8320:33;;-1:-1:-1;8405:3:105;8390:19;;8377:33;8419:31;8377:33;8419:31;:::i;:::-;8469:7;-1:-1:-1;8528:3:105;8513:19;;8500:33;8542:31;8500:33;8542:31;:::i;:::-;8592:7;8582:17;;;7506:1099;;;;;;;;;;;:::o;8610:117::-;8695:6;8688:5;8684:18;8677:5;8674:29;8664:57;;8717:1;8714;8707:12;8732:245;8790:6;8843:2;8831:9;8822:7;8818:23;8814:32;8811:52;;;8859:1;8856;8849:12;8811:52;8898:9;8885:23;8917:30;8941:5;8917:30;:::i;8982:1030::-;9106:6;9114;9122;9130;9138;9146;9154;9207:3;9195:9;9186:7;9182:23;9178:33;9175:53;;;9224:1;9221;9214:12;9175:53;9263:9;9250:23;9282:31;9307:5;9282:31;:::i;:::-;9332:5;-1:-1:-1;9389:2:105;9374:18;;9361:32;9402:33;9361:32;9402:33;:::i;:::-;9454:7;-1:-1:-1;9513:2:105;9498:18;;9485:32;9526:33;9485:32;9526:33;:::i;:::-;9578:7;-1:-1:-1;9637:2:105;9622:18;;9609:32;9650;9609;9650;:::i;:::-;9701:7;-1:-1:-1;9755:3:105;9740:19;;9727:33;;-1:-1:-1;9812:3:105;9797:19;;9784:33;9826:31;9784:33;9826:31;:::i;:::-;9876:7;-1:-1:-1;9935:3:105;9920:19;;9907:33;9949:31;9907:33;9949:31;:::i;:::-;9999:7;9989:17;;;8982:1030;;;;;;;;;;:::o;10017:169::-;10095:13;;10148:12;10137:24;;10127:35;;10117:63;;10176:1;10173;10166:12;10191:679;10291:6;10299;10307;10315;10323;10376:3;10364:9;10355:7;10351:23;10347:33;10344:53;;;10393:1;10390;10383:12;10344:53;10425:9;10419:16;10444:29;10467:5;10444:29;:::i;:::-;10542:2;10527:18;;10521:25;10492:5;;-1:-1:-1;10555:32:105;10521:25;10555:32;:::i;:::-;10658:2;10643:18;;10637:25;10606:7;;-1:-1:-1;10671:32:105;10637:25;10671:32;:::i;:::-;10722:7;-1:-1:-1;10748:48:105;10792:2;10777:18;;10748:48;:::i;:::-;10738:58;;10815:49;10859:3;10848:9;10844:19;10815:49;:::i;:::-;10805:59;;10191:679;;;;;;;;:::o;10875:380::-;10954:1;10950:12;;;;10997;;;11018:61;;11072:4;11064:6;11060:17;11050:27;;11018:61;11125:2;11117:6;11114:14;11094:18;11091:38;11088:161;;11171:10;11166:3;11162:20;11159:1;11152:31;11206:4;11203:1;11196:15;11234:4;11231:1;11224:15;11088:161;;10875:380;;;:::o;11260:127::-;11321:10;11316:3;11312:20;11309:1;11302:31;11352:4;11349:1;11342:15;11376:4;11373:1;11366:15;11392:148;11480:4;11459:12;;;11473;;;11455:31;;11498:13;;11495:39;;;11514:18;;:::i;11545:151::-;11635:4;11628:12;;;11614;;;11610:31;;11653:14;;11650:40;;;11670:18;;:::i;11701:125::-;11766:9;;;11787:10;;;11784:36;;;11800:18;;:::i;11831:128::-;11898:9;;;11919:11;;;11916:37;;;11933:18;;:::i;12733:164::-;12809:13;;12858;;12851:21;12841:32;;12831:60;;12887:1;12884;12877:12;12902:202;12969:6;13022:2;13010:9;13001:7;12997:23;12993:32;12990:52;;;13038:1;13035;13028:12;12990:52;13061:37;13088:9;13061:37;:::i;13429:184::-;13499:6;13552:2;13540:9;13531:7;13527:23;13523:32;13520:52;;;13568:1;13565;13558:12;13520:52;-1:-1:-1;13591:16:105;;13429:184;-1:-1:-1;13429:184:105:o;13820:249::-;13889:6;13942:2;13930:9;13921:7;13917:23;13913:32;13910:52;;;13958:1;13955;13948:12;13910:52;13990:9;13984:16;14009:30;14033:5;14009:30;:::i;14273:175::-;14351:13;;-1:-1:-1;;;;;14393:30:105;;14383:41;;14373:69;;14438:1;14435;14428:12;14453:372;14538:6;14546;14554;14607:2;14595:9;14586:7;14582:23;14578:32;14575:52;;;14623:1;14620;14613:12;14575:52;14646:39;14675:9;14646:39;:::i;:::-;14636:49;;14704:48;14748:2;14737:9;14733:18;14704:48;:::i;:::-;14694:58;;14771:48;14815:2;14804:9;14800:18;14771:48;:::i;:::-;14761:58;;14453:372;;;;;:::o;14830:168::-;14903:9;;;14934;;14951:15;;;14945:22;;14931:37;14921:71;;14972:18;;:::i;15331:597::-;15424:6;15432;15440;15448;15501:3;15489:9;15480:7;15476:23;15472:33;15469:53;;;15518:1;15515;15508:12;15469:53;15550:9;15544:16;15569:30;15593:5;15569:30;:::i;:::-;15668:2;15653:18;;15647:25;15618:5;;-1:-1:-1;15681:32:105;15647:25;15681:32;:::i;:::-;15784:2;15769:18;;15763:25;15732:7;;-1:-1:-1;15797:32:105;15763:25;15797:32;:::i;:::-;15848:7;-1:-1:-1;15874:48:105;15918:2;15903:18;;15874:48;:::i;:::-;15864:58;;15331:597;;;;;;;:::o;15933:173::-;16001:8;16042:10;;;16030;;;16026:27;;16065:12;;;16062:38;;;16080:18;;:::i;16111:267::-;16197:6;16250:2;16238:9;16229:7;16225:23;16221:32;16218:52;;;16266:1;16263;16256:12;16218:52;16298:9;16292:16;16317:31;16342:5;16317:31;:::i;16383:127::-;16444:10;16439:3;16435:20;16432:1;16425:31;16475:4;16472:1;16465:15;16499:4;16496:1;16489:15;16515:127;16576:10;16571:3;16567:20;16564:1;16557:31;16607:4;16604:1;16597:15;16631:4;16628:1;16621:15;16647:120;16687:1;16713;16703:35;;16718:18;;:::i;:::-;-1:-1:-1;16752:9:105;;16647:120::o;16772:127::-;16833:10;16828:3;16824:20;16821:1;16814:31;16864:4;16861:1;16854:15;16888:4;16885:1;16878:15;16904:135;16943:3;16964:17;;;16961:43;;16984:18;;:::i;:::-;-1:-1:-1;17031:1:105;17020:13;;16904:135::o;17577:854::-;17775:4;17823:2;17812:9;17808:18;-1:-1:-1;;;;;17926:2:105;17918:6;17914:15;17903:9;17896:34;17949:2;17987;17982;17971:9;17967:18;17960:30;18010:6;18045;18039:13;18076:6;18068;18061:22;18114:3;18103:9;18099:19;18092:26;;18153:2;18145:6;18141:15;18127:29;;18174:1;18184:169;18198:6;18195:1;18192:13;18184:169;;;18259:13;;18247:26;;18328:15;;;;18293:12;;;;18220:1;18213:9;18184:169;;;18188:3;;18370;18362:11;;;;18421:2;18413:6;18409:15;18404:2;18393:9;18389:18;18382:43;;;17577:854;;;;;;:::o;18436:275::-;18507:2;18501:9;18572:2;18553:13;;-1:-1:-1;;18549:27:105;18537:40;;-1:-1:-1;;;;;18592:34:105;;18628:22;;;18589:62;18586:88;;;18654:18;;:::i;:::-;18690:2;18683:22;18436:275;;-1:-1:-1;18436:275:105:o;18716:183::-;18776:4;-1:-1:-1;;;;;18801:6:105;18798:30;18795:56;;;18831:18;;:::i;:::-;-1:-1:-1;18876:1:105;18872:14;18888:4;18868:25;;18716:183::o;18904:1003::-;19017:6;19025;19033;19086:2;19074:9;19065:7;19061:23;19057:32;19054:52;;;19102:1;19099;19092:12;19054:52;19131:9;19125:16;19115:26;;19160:2;19202;19191:9;19187:18;19181:25;19171:35;;19250:2;19239:9;19235:18;19229:25;-1:-1:-1;;;;;19269:6:105;19266:30;19263:50;;;19309:1;19306;19299:12;19263:50;19332:22;;19385:4;19377:13;;19373:27;-1:-1:-1;19363:55:105;;19414:1;19411;19404:12;19363:55;19443:2;19437:9;19466:60;19482:43;19522:2;19482:43;:::i;:::-;19466:60;:::i;:::-;19560:15;;;19642:1;19638:10;;;;19630:19;;19626:28;;;19591:12;;;;19666:19;;;19663:39;;;19698:1;19695;19688:12;19663:39;19722:11;;;;19742:135;19758:6;19753:3;19750:15;19742:135;;;19824:10;;19812:23;;19775:12;;;;19855;;;;19742:135;;;19896:5;19886:15;;;;;;;18904:1003;;;;;:::o;20299:634::-;20429:6;20437;20445;20453;20461;20469;20477;20485;20538:3;20526:9;20517:7;20513:23;20509:33;20506:53;;;20555:1;20552;20545:12;20506:53;20584:9;20578:16;20568:26;;20634:2;20623:9;20619:18;20613:25;20603:35;;20678:2;20667:9;20663:18;20657:25;20647:35;;20722:2;20711:9;20707:18;20701:25;20691:35;;20766:3;20755:9;20751:19;20745:26;20735:36;;20811:3;20800:9;20796:19;20790:26;20780:36;;20856:3;20845:9;20841:19;20835:26;20825:36;;20880:47;20922:3;20911:9;20907:19;20880:47;:::i;:::-;20870:57;;20299:634;;;;;;;;;;;:::o;21959:257::-;-1:-1:-1;;;;;22080:10:105;;;22092;;;22076:27;22123:20;;;;22030:18;22162:24;;;22152:58;;22190:18;;:::i;:::-;22152:58;;21959:257;;;;:::o;22221:180::-;-1:-1:-1;;;;;22326:10:105;;;22338;;;22322:27;;22361:11;;;22358:37;;;22375:18;;:::i;22406:183::-;-1:-1:-1;;;;;22525:10:105;;;22513;;;22509:27;;22548:12;;;22545:38;;;22563:18;;:::i;22594:199::-;22633:1;-1:-1:-1;;;;;22704:2:105;22701:1;22697:10;22726:3;22716:37;;22733:18;;:::i;:::-;22771:10;;22767:20;;;;;22594:199;-1:-1:-1;;22594:199:105:o;23656:435::-;23709:3;23747:5;23741:12;23774:6;23769:3;23762:19;23800:4;23829:2;23824:3;23820:12;23813:19;;23866:2;23859:5;23855:14;23887:1;23897:169;23911:6;23908:1;23905:13;23897:169;;;23972:13;;23960:26;;24006:12;;;;24041:15;;;;23933:1;23926:9;23897:169;;;-1:-1:-1;24082:3:105;;23656:435;-1:-1:-1;;;;;23656:435:105:o;24096:688::-;24372:4;-1:-1:-1;;;;;24482:2:105;24474:6;24470:15;24459:9;24452:34;24534:2;24526:6;24522:15;24517:2;24506:9;24502:18;24495:43;;24574:3;24569:2;24558:9;24554:18;24547:31;24601:57;24653:3;24642:9;24638:19;24630:6;24601:57;:::i;:::-;24706:9;24698:6;24694:22;24689:2;24678:9;24674:18;24667:50;24734:44;24771:6;24763;24734:44;:::i;:::-;24726:52;24096:688;-1:-1:-1;;;;;;;24096:688:105:o;24789:659::-;24854:5;24907:3;24900:4;24892:6;24888:17;24884:27;24874:55;;24925:1;24922;24915:12;24874:55;24954:6;24948:13;24980:4;25004:60;25020:43;25060:2;25020:43;:::i;25004:60::-;25098:15;;;25184:1;25180:10;;;;25168:23;;25164:32;;;25129:12;;;;25208:15;;;25205:35;;;25236:1;25233;25226:12;25205:35;25272:2;25264:6;25260:15;25284:135;25300:6;25295:3;25292:15;25284:135;;;25366:10;;25354:23;;25397:12;;;;25317;;25284:135;;;-1:-1:-1;25437:5:105;24789:659;-1:-1:-1;;;;;;24789:659:105:o;25453:363::-;25548:6;25601:2;25589:9;25580:7;25576:23;25572:32;25569:52;;;25617:1;25614;25607:12;25569:52;25650:9;25644:16;-1:-1:-1;;;;;25675:6:105;25672:30;25669:50;;;25715:1;25712;25705:12;25669:50;25738:72;25802:7;25793:6;25782:9;25778:22;25738:72;:::i;25821:362::-;26026:6;26015:9;26008:25;26069:6;26064:2;26053:9;26049:18;26042:34;26112:2;26107;26096:9;26092:18;26085:30;25989:4;26132:45;26173:2;26162:9;26158:18;26150:6;26132:45;:::i;26188:338::-;-1:-1:-1;;;;;26367:6:105;26363:55;26352:9;26345:74;26455:2;26450;26439:9;26435:18;26428:30;26326:4;26475:45;26516:2;26505:9;26501:18;26493:6;26475:45;:::i;36699:287::-;36828:3;36866:6;36860:13;36882:66;36941:6;36936:3;36929:4;36921:6;36917:17;36882:66;:::i;:::-;36964:16;;;;;36699:287;-1:-1:-1;;36699:287:105:o;37795:384::-;-1:-1:-1;;;;;;37980:33:105;;37968:46;;38037:13;;37950:3;;38059:74;38037:13;38122:1;38113:11;;38106:4;38094:17;;38059:74;:::i;:::-;38153:16;;;;38171:1;38149:24;;37795:384;-1:-1:-1;;;37795:384:105:o;38184:610::-;38430:13;;38373:3;;38404;;38483:4;38510:15;;;38373:3;38553:175;38567:6;38564:1;38561:13;38553:175;;;38630:13;;38616:28;;38666:14;;;;38703:15;;;;38589:1;38582:9;38553:175;;;-1:-1:-1;;38737:21:105;;;-1:-1:-1;38774:14:105;;;;;-1:-1:-1;;;38184:610:105:o;39733:614::-;39862:6;39870;39923:2;39911:9;39902:7;39898:23;39894:32;39891:52;;;39939:1;39936;39929:12;39891:52;39972:9;39966:16;-1:-1:-1;;;;;40042:2:105;40034:6;40031:14;40028:34;;;40058:1;40055;40048:12;40028:34;40081:72;40145:7;40136:6;40125:9;40121:22;40081:72;:::i;:::-;40071:82;;40199:2;40188:9;40184:18;40178:25;40162:41;;40228:2;40218:8;40215:16;40212:36;;;40244:1;40241;40234:12;40212:36;;40267:74;40333:7;40322:8;40311:9;40307:24;40267:74;:::i;:::-;40257:84;;;39733:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":1289,"length":32},{"start":21858,"length":32}],"91798":[{"start":2722,"length":32},{"start":2791,"length":32},{"start":3070,"length":32},{"start":3755,"length":32},{"start":4036,"length":32},{"start":5056,"length":32},{"start":5125,"length":32},{"start":5404,"length":32},{"start":6085,"length":32},{"start":6366,"length":32},{"start":7074,"length":32},{"start":7143,"length":32},{"start":7423,"length":32},{"start":11097,"length":32},{"start":11166,"length":32},{"start":11445,"length":32},{"start":12018,"length":32},{"start":12299,"length":32},{"start":12885,"length":32},{"start":13166,"length":32},{"start":14186,"length":32},{"start":14258,"length":32},{"start":14528,"length":32},{"start":14821,"length":32},{"start":17117,"length":32},{"start":17399,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_IncreaseOracleLength(uint16)":"b4080588","test_1SampleAdded()":"8fee3aae","test_CircularOracleGetSampleAt()":"9be2dac9","test_CircularOracleWith2Samples()":"c449527b","test_GetOracleParametersEmptyOracle()":"083e06e5","test_MaxLengthOracle()":"f0a75993"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newLength\",\"type\":\"uint16\"}],\"name\":\"testFuzz_IncreaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_1SampleAdded\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CircularOracleGetSampleAt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CircularOracleWith2Samples\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetOracleParametersEmptyOracle\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_MaxLengthOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairOracle.t.sol\":\"LBPairOracleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairOracle.t.sol\":{\"keccak256\":\"0xbd4c24303872930d0c4d1de7a9000232b901af3a8be37dbeba8cf317e3305de0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80e55cdda3b95ef0238fc0ee0472c2ebf3497755375aac655fcc88626be757c8\",\"dweb:/ipfs/QmUPLaiFhzxKzrsXQFYf6JSRpP5yi7KAHXiA1Yw6sDjNkj\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint16","name":"newLength","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_IncreaseOracleLength"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_1SampleAdded"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CircularOracleGetSampleAt"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CircularOracleWith2Samples"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetOracleParametersEmptyOracle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_MaxLengthOracle"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairOracle.t.sol":"LBPairOracleTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairOracle.t.sol":{"keccak256":"0xbd4c24303872930d0c4d1de7a9000232b901af3a8be37dbeba8cf317e3305de0","urls":["bzz-raw://80e55cdda3b95ef0238fc0ee0472c2ebf3497755375aac655fcc88626be757c8","dweb:/ipfs/QmUPLaiFhzxKzrsXQFYf6JSRpP5yi7KAHXiA1Yw6sDjNkj"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":89} \ No newline at end of file diff --git a/abi/LBPairSwap.t.sol/LBPairSwapTest.json b/abi/LBPairSwap.t.sol/LBPairSwapTest.json deleted file mode 100644 index 4fd4c9ab..00000000 --- a/abi/LBPairSwap.t.sol/LBPairSwapTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_SwapInForX","inputs":[{"name":"amountOut","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapInForY","inputs":[{"name":"amountOut","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapOutForX","inputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SwapOutForY","inputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_SwapInsufficientAmountIn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_SwapInsufficientAmountOut","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_SwapOutOfLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c0516201a3fc6200038260003960005050600081816107d70152818161081d0152818161093601528181610a2f01528181610b0501528181610e0701528181610e4d01528181610f660152818161105f015281816111350152818161142f015281816114750152818161158e015281816116870152818161175d015281816118300152818161186a015281816118a801528181611a1f01528181611ab201528181611c2a015281816126df0152818161290e0152818161295401528181612a6d01528181612b6601528181612c3c01528181612d0f01528181612d5001528181612d9501528181612f130152612fa60152600081816104050152613c6b01526201a3fc6000f3fe60806040523480156200001157600080fd5b5060043610620001b95760003560e01c806385226c8111620000f5578063ba414fa61162000097578063cf968839116200006e578063cf968839146200038c578063e20c9f711462000396578063fecaa22314620003a057600080fd5b8063ba414fa61462000361578063bd00b4db146200036b578063c25372dd146200037557600080fd5b8063a7aa85e911620000cc578063a7aa85e91462000329578063b5508aa91462000340578063b89e0233146200034a57600080fd5b806385226c8114620002da578063889be5b714620002f3578063916a17c6146200031f57600080fd5b80633f7286f4116200015f5780634cf8f44d11620001365780634cf8f44d14620002a05780635d0f2d8a14620002b757806366d9a9a014620002c157600080fd5b80633f7286f41462000259578063452fa407146200026357806349789ef9146200027a57600080fd5b80632ade388011620001945780632ade3880146200021f578063307dd6e214620002385780633e5e3c23146200024f57600080fd5b806301ffc9a714620001be5780630a9254e414620001fa5780631ed7831c1462000206575b600080fd5b620001e5620001cf366004620069a5565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b62000204620003b7565b005b6200021062000440565b604051620001f19190620069d1565b62000229620004a4565b604051620001f1919062006a74565b620002046200024936600462006b50565b620005f2565b6200021062000bca565b6200021062000c2c565b620002046200027436600462006b50565b62000c8e565b620002916200028b36600462006b82565b620011f5565b604051908152602001620001f1565b62000204620002b136600462006b50565b6200124a565b620002046200181d565b620002cb62001ca8565b604051620001f1919062006bba565b620002e462001d92565b604051620001f1919062006c71565b6200030a6200030436600462006ceb565b62001e6c565b60405162ffffff9091168152602001620001f1565b620002cb62001ec7565b620002046200033a36600462006d42565b62001fb1565b620002e462002441565b620001e56200035b36600462006dde565b6200251b565b620001e56200259e565b6200020462002658565b620002046200038636600462006b50565b62002795565b6200020462002cfc565b62000210620030d7565b62000204620003b136600462006e04565b62003139565b620003c16200343e565b601c54601d54620003df916001600160a01b03908116911662004a66565b602780546001600160a01b0319166001600160a01b039290921691821790556200043e907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a76400008060328062001fb1565b565b606060148054806020026020016040519081016040528092919081815260200182805480156200049a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200047b575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620005e957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620005d15783829060005260206000200180546200053d9062006e96565b80601f01602080910402602001604051908101604052809291908181526020018280546200056b9062006e96565b8015620005bc5780601f106200059057610100808354040283529160200191620005bc565b820191906000526020600020905b8154815290600101906020018083116200059e57829003601f168201915b5050505050815260200190600101906200051b565b505050508152505081526020019060010190620004c8565b50505050905090565b6000805160206201a387833981519152634c63e5626001600160801b03831615801590620006315750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162000652911515815260200190565b60006040518083038186803b1580156200066b57600080fd5b505afa15801562000680573d6000803e3d6000fd5b5050602754604051631cee6cdf60e31b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063e77366f890604401606060405180830381865afa158015620006e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000708919062006ed2565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206201a38783398151915290634c63e5629060240160006040518083038186803b1580156200075f57600080fd5b505afa15801562000774573d6000803e3d6000fd5b50505050620007c4826001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72583a3a3100000000000000000081525062004a7f565b601d5462000806906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03861662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b1580156200087757600080fd5b505af11580156200088c573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620008ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000914919062006f37565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000989573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009af919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620009fe57600080fd5b505af115801562000a13573d6000803e3d6000fd5b5050601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000aeb945090911691506370a0823190602401602060405180830381865afa15801562000a87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aad919062006f55565b60006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72583a3a3200000000000000000081525062004a7f565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa15801562000b59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7f919062006f55565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72583a3a3300000000000000000081525062004a7f565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156200049a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200047b575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200049a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200047b575050505050905090565b6000805160206201a387833981519152634c63e5626001600160801b0383161580159062000ccc5750670de0b6b3a7640000836001600160801b0316105b6040518263ffffffff1660e01b815260040162000ced911515815260200190565b60006040518083038186803b15801562000d0657600080fd5b505afa15801562000d1b573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562000d7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000da3919062006ed2565b509150915062000df4816001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72583a3a310000000000000000000081525062004a7f565b601d5462000e36906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03851662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b15801562000ea757600080fd5b505af115801562000ebc573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562000f1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f44919062006f37565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000fb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fdf919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200102e57600080fd5b505af115801562001043573d6000803e3d6000fd5b5050601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200111b945090911691506370a0823190602401602060405180830381865afa158015620010b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010dd919062006f55565b60006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72583a3a320000000000000000000081525062004a7f565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa15801562001189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011af919062006f55565b846001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72583a3a330000000000000000000081525062004a7f565b6000808360ff161180156200120d575060008260ff16115b62001224576200121e828462006f85565b6200123e565b600162001232838562006f85565b6200123e919062006fa1565b60ff1690505b92915050565b6000805160206201a387833981519152634c63e5626001600160801b03831615801590620012895750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b8152600401620012aa911515815260200190565b60006040518083038186803b158015620012c357600080fd5b505afa158015620012d8573d6000803e3d6000fd5b5050602754604051631cee6cdf60e31b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063e77366f890604401606060405180830381865afa1580156200133a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001360919062006ed2565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206201a38783398151915290634c63e5629060240160006040518083038186803b158015620013b757600080fd5b505afa158015620013cc573d6000803e3d6000fd5b505050506200141c826001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72593a3a3100000000000000000081525062004a7f565b601c546200145e906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03861662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b158015620014cf57600080fd5b505af1158015620014e4573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af115801562001546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156c919062006f37565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620015e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001607919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200165657600080fd5b505af11580156200166b573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262001743945090911691506370a0823190602401602060405180830381865afa158015620016df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001705919062006f55565b60006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72593a3a3200000000000000000081525062004a7f565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa158015620017b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017d7919062006f55565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72593a3a3300000000000000000081525062004a7f565b601c5462001857906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000600162004aee565b601d5462001891906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000600162004aee565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b1580156200190257600080fd5b505af115801562001917573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152600160248201529116925063a9059cbb91506044016020604051808303816000875af115801562001971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001997919062006f37565b50604051630618f58760e51b815263439df85d60e11b60048201526000805160206201a3878339815191529063c31eb0e090602401600060405180830381600087803b158015620019e757600080fd5b505af1158015620019fc573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562001a74573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a9a919062006f55565b5060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b15801562001b0c57600080fd5b505af115801562001b21573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152600160248201529116925063a9059cbb91506044016020604051808303816000875af115801562001b7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ba1919062006f37565b50604051630618f58760e51b815263439df85d60e11b60048201526000805160206201a3878339815191529063c31eb0e0906024015b600060405180830381600087803b15801562001bf257600080fd5b505af115801562001c07573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600060048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562001c7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca5919062006f55565b50565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620005e95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001d7957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001d3a5790505b5050505050815250508152602001906001019062001ccc565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620005e957838290600052602060002001805462001dd89062006e96565b80601f016020809104026020016040519081016040528092919081815260200182805462001e069062006e96565b801562001e575780601f1062001e2b5761010080835404028352916020019162001e57565b820191906000526020600020905b81548152906001019060200180831162001e3957829003601f168201915b50505050508152602001906001019062001db6565b60008062001e808462ffffff871662006fbd565b905060008360ff161162001e95578062001eb1565b62001ea460ff84168262006fd3565b62001eb190600162006fbd565b905062001ebe8162004afd565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620005e95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001f9857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001f595790505b5050505050815250508152602001906001019062001eeb565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001ff2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002018919062006fe9565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002081919062006fe9565b905062002090828b8862004aee565b6200209d818b8762004aee565b6000620020ab8585620011f5565b905060008167ffffffffffffffff811115620020cb57620020cb62007009565b604051908082528060200260200182016040528015620020f5578160200160208202803683370190505b50905060005b82811015620021f4576000620021138b838962001e6c565b905060008b62ffffff168262ffffff161015801562002135575060008960ff16115b6200214257600062002163565b620021636200215d60ff8b16670de0b6b3a764000062007035565b62004b29565b905060008c62ffffff168362ffffff161115801562002185575060008960ff16115b62002192576000620021ad565b620021ad6200215d60ff8b16670de0b6b3a764000062007035565b9050620021bc82828562004b55565b858581518110620021d157620021d162007058565b60200260200101818152505050505080620021ec906200706e565b9050620020fb565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b1580156200224657600080fd5b505af11580156200225b573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af1158015620022af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022d5919062006f37565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562002326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200234c919062006f37565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200239b57600080fd5b505af1158015620023b0573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b8152600401620023e6939291906200708a565b6000604051808303816000875af115801562002406573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200243091908101906200714b565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620005e9578382906000526020600020018054620024879062006e96565b80601f0160208091040260200160405190810160405280929190818152602001828054620024b59062006e96565b8015620025065780601f10620024da5761010080835404028352916020019162002506565b820191906000526020600020905b815481529060010190602001808311620024e857829003601f168201915b50505050508152602001906001019062002465565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa1580156200256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002591919062007200565b9998505050505050505050565b60075460009060ff1615620025b7575060075460ff1690565b604051630667f9d760e41b81526000805160206201a387833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002651919062006f55565b1415905090565b604051630618f58760e51b8152637df801c760e01b60048201526000805160206201a3878339815191529063c31eb0e090602401600060405180830381600087803b158015620026a757600080fd5b505af1158015620026bc573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562002734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200275a919062006f55565b50604051630618f58760e51b8152637df801c760e01b60048201526000805160206201a3878339815191529063c31eb0e09060240162001bd7565b6000805160206201a387833981519152634c63e5626001600160801b03831615801590620027d35750670de0b6b3a7640000836001600160801b0316105b6040518263ffffffff1660e01b8152600401620027f4911515815260200190565b60006040518083038186803b1580156200280d57600080fd5b505afa15801562002822573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562002884573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028aa919062006ed2565b5091509150620028fb816001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72593a3a310000000000000000000081525062004a7f565b601c546200293d906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03851662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b158015620029ae57600080fd5b505af1158015620029c3573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562002a25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a4b919062006f37565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562002ac0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ae6919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b3557600080fd5b505af115801562002b4a573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262002c22945090911691506370a0823190602401602060405180830381865afa15801562002bbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002be4919062006f55565b60006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72593a3a320000000000000000000081525062004a7f565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa15801562002c90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cb6919062006f55565b846001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72593a3a330000000000000000000081525062004a7f565b601c5462002d3d906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000671bc16d674ec8000062004aee565b601d5462002d7e906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000671bc16d674ec8000062004aee565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b15801562002def57600080fd5b505af115801562002e04573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152671bc16d674ec8000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562002e65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e8b919062006f37565b50604051630618f58760e51b8152631a6d7fb160e31b60048201526000805160206201a3878339815191529063c31eb0e090602401600060405180830381600087803b15801562002edb57600080fd5b505af115801562002ef0573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562002f68573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8e919062006f55565b5060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b1580156200300057600080fd5b505af115801562003015573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152671bc16d674ec8000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200309c919062006f37565b50604051630618f58760e51b8152631a6d7fb160e31b60048201526000805160206201a3878339815191529063c31eb0e09060240162001bd7565b606060138054806020026020016040519081016040528092919081815260200182805480156200049a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200047b575050505050905090565b670de0b6b3a7640000831115620031975760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620031a58383620011f5565b905060008167ffffffffffffffff811115620031c557620031c562007009565b604051908082528060200260200182016040528015620031ef578160200160208202803683370190505b50905060008267ffffffffffffffff81111562003210576200321062007009565b6040519080825280602002602001820160405280156200323a578160200160208202803683370190505b50905060005b83811015620033485760006200325889838862001e6c565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620032ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032d4919062006f55565b90508162ffffff16858481518110620032f157620032f162007058565b602090810291909101015262003311818a670de0b6b3a764000062004b93565b84848151811062003326576200332662007058565b60200260200101818152505050508062003340906200706e565b905062003240565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b1580156200339a57600080fd5b505af1158015620033af573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e9150620033e7908d908d908790879060040162007297565b6000604051808303816000875af115801562003407573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003431919081019062007351565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200353b57601c546040516000805160206201a3878339815191529163b4d6c782916001600160a01b0390911690620034a4906200690e565b604051809103906000f080158015620034c1573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620035069291906200738a565b600060405180830381600087803b1580156200352157600080fd5b505af115801562003536573d6000803e3d6000fd5b505050505b60066040516200354b906200691c565b60ff9091168152602001604051809103906000f08015801562003572573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055604051600690620035a4906200691c565b60ff9091168152602001604051809103906000f080158015620035cb573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051600890620035fd906200691c565b60ff9091168152602001604051809103906000f08015801562003624573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062003656906200691c565b60ff9091168152602001604051809103906000f0801580156200367d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392909216919091179055604051601290620036af906200691c565b60ff9091168152602001604051809103906000f080158015620036d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062003708906200691c565b60ff9091168152602001604051809103906000f0801580156200372f573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200375e906200692a565b604051809103906000f0801580156200377b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201a3878339815191529063c657c71890608401600060405180830381600087803b1580156200381c57600080fd5b505af115801562003831573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b158015620038a957600080fd5b505af1158015620038be573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200393657600080fd5b505af11580156200394b573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b158015620039c357600080fd5b505af1158015620039d8573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003a5057600080fd5b505af115801562003a65573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003add57600080fd5b505af115801562003af2573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003b6457600080fd5b505af115801562003b79573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003c0557600080fd5b505af115801562003c1a573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062003ca19062006938565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562003cdc573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162003d0a9062006946565b6001600160a01b039091168152602001604051809103906000f08015801562003d37573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562003d9657600080fd5b505af115801562003dab573d6000803e3d6000fd5b5050505062003db962004bc1565b62003dc5600a62004f6a565b602454602b54601c546040516001600160a01b0393841693928316929091169062003df09062006954565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562003e2d573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062003e689062006962565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562003ea5573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201a3878339815191529063c657c71890608401600060405180830381600087803b15801562003f4657600080fd5b505af115801562003f5b573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003fe757600080fd5b505af115801562003ffc573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200408b57600080fd5b505af1158015620040a0573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200412c57600080fd5b505af115801562004141573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b158015620041cd57600080fd5b505af1158015620041e2573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200426e57600080fd5b505af115801562004283573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af1158015620042de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004304919062006f37565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200435c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004382919062006f37565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620043da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004400919062006f37565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004458573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200447e919062006f37565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620044d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044fc919062006f37565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200457a919062006f37565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620045d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045f8919062006f37565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004650573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004676919062006f37565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620046ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046f4919062006f37565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200474c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004772919062006f37565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620047ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047f0919062006f37565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004848573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200486e919062006f37565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620048c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620048ec919062006f37565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200496a919062006f37565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620049c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049e8919062006f37565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004a40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca5919062006f37565b600062004a7883836280000062005011565b9392505050565b6040516388b44c8560e01b81526000805160206201a387833981519152906388b44c859062004ab790869086908690600401620073ae565b60006040518083038186803b15801562004ad057600080fd5b505afa15801562004ae5573d6000803e3d6000fd5b50505050505050565b62000bc5838383600062005022565b8062ffffff8116811462004b2457604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff8116811462004b245760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600080600062004ba4868662005228565b9150915062004bb7868686858562005247565b9695505050505050565b601c546001600160a01b03161562004c365760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004c1c57600080fd5b505af115801562004c31573d6000803e3d6000fd5b505050505b601d546001600160a01b03161562004cab5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004c9157600080fd5b505af115801562004ca6573d6000803e3d6000fd5b505050505b601e546001600160a01b03161562004d205760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004d0657600080fd5b505af115801562004d1b573d6000803e3d6000fd5b505050505b601f546001600160a01b03161562004d955760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004d7b57600080fd5b505af115801562004d90573d6000803e3d6000fd5b505050505b6022546001600160a01b03161562004e0a5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004df057600080fd5b505af115801562004e05573d6000803e3d6000fd5b505050505b6020546001600160a01b03161562004e7f5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004e6557600080fd5b505af115801562004e7a573d6000803e3d6000fd5b505050505b6021546001600160a01b03161562004ef45760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004eda57600080fd5b505af115801562004eef573d6000803e3d6000fd5b505050505b6023546001600160a01b0316156200043e5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004f4f57600080fd5b505af115801562004f64573d6000803e3d6000fd5b50505050565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b15801562004ff557600080fd5b505af11580156200500a573d6000803e3d6000fd5b5050505050565b600062004b8b848484600a620052f9565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200507891620073cf565b600060405180830381855afa9150503d8060008114620050b5576040519150601f19603f3d011682016040523d82523d6000602084013e620050ba565b606091505b50915050600081806020019051810190620050d6919062006f55565b905062005110846200510987620051026370a0823160e01b620050fb600c8d6200538f565b90620053b5565b90620053d3565b90620053fc565b8215620052205760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200515b9190620073cf565b600060405180830381855afa9150503d806000811462005198576040519150601f19603f3d011682016040523d82523d6000602084013e6200519d565b606091505b50915050600081806020019051810190620051b9919062006f55565b905082861015620051e457620051d0868462006fd3565b620051dc908262006fd3565b9050620051ff565b620051f0838762006fd3565b620051fc908262006fbd565b90505b6200521d81620051096318160ddd60e01b620050fb600c8d6200538f565b50505b505050505050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200526d578383816200526457620052646200701f565b04905062001ebe565b8382106200528e576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562005369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ebe919062006fe9565b6005820180546001600160a01b0319166001600160a01b03831617905560008262004a78565b60038201805463ffffffff191660e083901c17905560008262004a78565b6002820180546001810182556000918252602082206001600160a01b0384169101558262004a78565b6200540882826200540c565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200547f57602002820191906000526020600020905b8154815260200190600101908083116200546a575b50505050509050600083620054948362005819565b604051602001620054a7929190620073ed565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620054fb91869188910162007420565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005536576200553487620058cd565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200557791879189910162007420565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620055be9190620073cf565b600060405180830381855afa9150503d8060008114620055fb576040519150601f19603f3d011682016040523d82523d6000602084013e62005600565b606091505b5091506200561d905081620056178860206200745c565b620058da565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201a3878339815191529063667f9d7090604401602060405180830381865afa1580156200567f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056a5919062006f55565b90508082146200575c5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200318e565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201a387833981519152906370ca10bb90606401600060405180830381600087803b158015620057bb57600080fd5b505af1158015620057d0573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200580560028b01600062006970565b896004016000905550505050505050505050565b60606000825160206200582d91906200745c565b67ffffffffffffffff81111562005848576200584862007009565b6040519080825280601f01601f19166020018201604052801562005873576020820181803683370190505b50905060005b8351811015620058c65760008482815181106200589a576200589a62007058565b602002602001015190508082602002602001840152508080620058bd906200706e565b91505062005879565b5092915050565b600062001244826200597c565b60008060006020855111620058f1578451620058f4565b60205b905060005b8181101562005972576200590f8160086200745c565b866200591c838862006fbd565b815181106200592f576200592f62007058565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005969816200706e565b915050620058f9565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620059ee57602002820191906000526020600020905b815481526020019060010190808311620059d9575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062005a3a9250859187910162007420565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005ad9576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162005aa991859187910162007420565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362005ae783620067c9565b60405160200162005afa929190620073ed565b60405160208183030381529060405290506000805160206201a3a783398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005b5957600080fd5b505af115801562005b6e573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005b8f9190620073cf565b600060405180830381855afa9150503d806000811462005bcc576040519150601f19603f3d011682016040523d82523d6000602084013e62005bd1565b606091505b50915062005bee90508162005be88760206200745c565b62006876565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201a387833981519152906365bc9481906024016000604051808303816000875af115801562005c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005c75919081019062007476565b5090508051600103620060085760006000805160206201a3a783398151915260001c6001600160a01b031663667f9d70898460008151811062005cbc5762005cbc62007058565b60200260200101516040518363ffffffff1660e01b815260040162005cf69291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005d14573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d3a919062006f55565b90508062005da5577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062005d7a5762005d7a62007058565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462005e5a5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200318e565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162005e9292919062007420565b604051602081830303815290604052805190602001208560008151811062005ebe5762005ebe62007058565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062005f185762005f1862007058565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262005f63918a918c910162007420565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162005fcd918a918c910162007420565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200663e565b600181511115620065cd5760005b8151811015620065c65760006000805160206201a3a783398151915260001c6001600160a01b031663667f9d708a85858151811062006059576200605962007058565b60200260200101516040518363ffffffff1660e01b8152600401620060939291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620060b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060d7919062006f55565b90508062006141577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062006116576200611662007058565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620061505750620065b1565b82518119906000805160206201a387833981519152906370ca10bb908c9087908790811062006183576200618362007058565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620061dc57600080fd5b505af1158015620061f1573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620062139190620073cf565b600060405180830381855afa9150503d806000811462006250576040519150601f19603f3d011682016040523d82523d6000602084013e62006255565b606091505b5090925090506200626d8162005be88c60206200745c565b9650508080156200627d57508186145b1562006504577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620062bb92919062007420565b60405160208183030381529060405280519060200120888881518110620062e657620062e662007058565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200633f576200633f62007058565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200638a918d918f910162007420565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200641792919062007420565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206201a3a783398151915260001c6001600160a01b03166370ca10bb8c87878151811062006489576200648962007058565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620064e257600080fd5b505af1158015620064f7573d6000803e3d6000fd5b50505050505050620065c6565b6000805160206201a3a783398151915260001c6001600160a01b03166370ca10bb8c8787815181106200653b576200653b62007058565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200659457600080fd5b505af1158015620065a9573d6000803e3d6000fd5b505050505050505b80620065bd816200706e565b91505062006016565b506200663e565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e60648201526084016200318e565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620066829188918a910162007420565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200671f5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e000000000000000000000000000000000060648201526084016200318e565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200675060028a01600062006970565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620067969188918a910162007420565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620067dd91906200745c565b67ffffffffffffffff811115620067f857620067f862007009565b6040519080825280601f01601f19166020018201604052801562006823576020820181803683370190505b50905060005b8351811015620058c65760008482815181106200684a576200684a62007058565b6020026020010151905080826020026020018401525080806200686d906200706e565b91505062006829565b600080600060208551116200688d57845162006890565b60205b905060005b818110156200597257620068ab8160086200745c565b86620068b8838862006fbd565b81518110620068cb57620068cb62007058565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006905816200706e565b91505062006895565b610b0880620074e283390190565b610bfd8062007fea83390190565b610c188062008be783390190565b61319980620097ff83390190565b61615c806200c99883390190565b614c808062012af483390190565b612c13806201777483390190565b508054600082559060005260206000209081019062001ca591905b80821115620069a157600081556001016200698b565b5090565b600060208284031215620069b857600080fd5b81356001600160e01b03198116811462004a7857600080fd5b6020808252825182820181905260009190848201906040850190845b8181101562006a145783516001600160a01b031683529284019291840191600101620069ed565b50909695505050505050565b60005b8381101562006a3d57818101518382015260200162006a23565b50506000910152565b6000815180845262006a6081602086016020860162006a20565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b2a57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b1357605f1989850301835262006b0084865162006a46565b948e01949350918d019160010162006ae1565b505050978a01979450509188019160010162006a9b565b50919a9950505050505050505050565b6001600160801b038116811462001ca557600080fd5b60006020828403121562006b6357600080fd5b813562004a788162006b3a565b803560ff8116811462004b2457600080fd5b6000806040838503121562006b9657600080fd5b62006ba18362006b70565b915062006bb16020840162006b70565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006c6257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006c4c5783516001600160e01b0319168252928b019260019290920191908b019062006c20565b50978a0197955050509187019160010162006be2565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006cca57603f1988860301845262006cb785835162006a46565b9450928501929085019060010162006c98565b5092979650505050505050565b803562ffffff8116811462004b2457600080fd5b60008060006060848603121562006d0157600080fd5b62006d0c8462006cd7565b92506020840135915062006d236040850162006b70565b90509250925092565b6001600160a01b038116811462001ca557600080fd5b600080600080600080600080610100898b03121562006d6057600080fd5b883562006d6d8162006d2c565b9750602089013562006d7f8162006d2c565b9650604089013562006d918162006d2c565b955062006da160608a0162006cd7565b94506080890135935060a0890135925062006dbf60c08a0162006b70565b915062006dcf60e08a0162006b70565b90509295985092959890939650565b60006020828403121562006df157600080fd5b813561ffff8116811462004a7857600080fd5b600080600080600080600060e0888a03121562006e2057600080fd5b873562006e2d8162006d2c565b9650602088013562006e3f8162006d2c565b9550604088013562006e518162006d2c565b945062006e616060890162006cd7565b93506080880135925062006e7860a0890162006b70565b915062006e8860c0890162006b70565b905092959891949750929550565b600181811c9082168062006eab57607f821691505b60208210810362006ecc57634e487b7160e01b600052602260045260246000fd5b50919050565b60008060006060848603121562006ee857600080fd5b835162006ef58162006b3a565b602085015190935062006f088162006b3a565b604085015190925062006f1b8162006b3a565b809150509250925092565b8051801515811462004b2457600080fd5b60006020828403121562006f4a57600080fd5b62004a788262006f26565b60006020828403121562006f6857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111562001244576200124462006f6f565b60ff828116828216039081111562001244576200124462006f6f565b8082018082111562001244576200124462006f6f565b8181038181111562001244576200124462006f6f565b60006020828403121562006ffc57600080fd5b815162004a788162006d2c565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826200705357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162007083576200708362006f6f565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620070d757855183529483019491830191600101620070b9565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200711c576200711c62007009565b604052919050565b600067ffffffffffffffff82111562007141576200714162007009565b5060051b60200190565b6000806000606084860312156200716157600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200718857600080fd5b8501601f810187136200719a57600080fd5b8051620071b1620071ab8262007124565b620070f0565b81815260059190911b82018301908381019089831115620071d157600080fd5b928401925b82841015620071f157835182529284019290840190620071d6565b80955050505050509250925092565b600080600080600080600080610100898b0312156200721e57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062006dcf60e08a0162006f26565b600081518084526020808501945080840160005b838110156200728c578151875295820195908201906001016200726e565b509495945050505050565b60006001600160a01b03808716835280861660208401525060806040830152620072c560808301856200725a565b8281036060840152620072d981856200725a565b979650505050505050565b600082601f830112620072f657600080fd5b8151602062007309620071ab8362007124565b82815260059290921b840181019181810190868411156200732957600080fd5b8286015b848110156200734657805183529183019183016200732d565b509695505050505050565b6000602082840312156200736457600080fd5b815167ffffffffffffffff8111156200737c57600080fd5b62004b8b84828501620072e4565b6001600160a01b038316815260406020820152600062004b8b604083018462006a46565b83815282602082015260606040820152600062001ebe606083018462006a46565b60008251620073e381846020870162006a20565b9190910192915050565b6001600160e01b03198316815281516000906200741281600485016020870162006a20565b919091016004019392505050565b825160009082906020808701845b838110156200744c578151855293820193908201906001016200742e565b5050948252509092019392505050565b808202811582820484141762001244576200124462006f6f565b600080604083850312156200748a57600080fd5b825167ffffffffffffffff80821115620074a357600080fd5b620074b186838701620072e4565b93506020850151915080821115620074c857600080fd5b50620074d785828601620072e4565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122084ba5c9af45435a5ab9e70e4cec40b53ce9d6af042611ee5bd12f00c2d1ee32064736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;95:4209:90;1812:17:93;;95:4209:90;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;95:4209:90;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;95:4209:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001b95760003560e01c806385226c8111620000f5578063ba414fa61162000097578063cf968839116200006e578063cf968839146200038c578063e20c9f711462000396578063fecaa22314620003a057600080fd5b8063ba414fa61462000361578063bd00b4db146200036b578063c25372dd146200037557600080fd5b8063a7aa85e911620000cc578063a7aa85e91462000329578063b5508aa91462000340578063b89e0233146200034a57600080fd5b806385226c8114620002da578063889be5b714620002f3578063916a17c6146200031f57600080fd5b80633f7286f4116200015f5780634cf8f44d11620001365780634cf8f44d14620002a05780635d0f2d8a14620002b757806366d9a9a014620002c157600080fd5b80633f7286f41462000259578063452fa407146200026357806349789ef9146200027a57600080fd5b80632ade388011620001945780632ade3880146200021f578063307dd6e214620002385780633e5e3c23146200024f57600080fd5b806301ffc9a714620001be5780630a9254e414620001fa5780631ed7831c1462000206575b600080fd5b620001e5620001cf366004620069a5565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b62000204620003b7565b005b6200021062000440565b604051620001f19190620069d1565b62000229620004a4565b604051620001f1919062006a74565b620002046200024936600462006b50565b620005f2565b6200021062000bca565b6200021062000c2c565b620002046200027436600462006b50565b62000c8e565b620002916200028b36600462006b82565b620011f5565b604051908152602001620001f1565b62000204620002b136600462006b50565b6200124a565b620002046200181d565b620002cb62001ca8565b604051620001f1919062006bba565b620002e462001d92565b604051620001f1919062006c71565b6200030a6200030436600462006ceb565b62001e6c565b60405162ffffff9091168152602001620001f1565b620002cb62001ec7565b620002046200033a36600462006d42565b62001fb1565b620002e462002441565b620001e56200035b36600462006dde565b6200251b565b620001e56200259e565b6200020462002658565b620002046200038636600462006b50565b62002795565b6200020462002cfc565b62000210620030d7565b62000204620003b136600462006e04565b62003139565b620003c16200343e565b601c54601d54620003df916001600160a01b03908116911662004a66565b602780546001600160a01b0319166001600160a01b039290921691821790556200043e907f000000000000000000000000000000000000000000000000000000000000000090819062800000670de0b6b3a76400008060328062001fb1565b565b606060148054806020026020016040519081016040528092919081815260200182805480156200049a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200047b575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015620005e957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620005d15783829060005260206000200180546200053d9062006e96565b80601f01602080910402602001604051908101604052809291908181526020018280546200056b9062006e96565b8015620005bc5780601f106200059057610100808354040283529160200191620005bc565b820191906000526020600020905b8154815290600101906020018083116200059e57829003601f168201915b5050505050815260200190600101906200051b565b505050508152505081526020019060010190620004c8565b50505050905090565b6000805160206201a387833981519152634c63e5626001600160801b03831615801590620006315750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b815260040162000652911515815260200190565b60006040518083038186803b1580156200066b57600080fd5b505afa15801562000680573d6000803e3d6000fd5b5050602754604051631cee6cdf60e31b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063e77366f890604401606060405180830381865afa158015620006e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000708919062006ed2565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206201a38783398151915290634c63e5629060240160006040518083038186803b1580156200075f57600080fd5b505afa15801562000774573d6000803e3d6000fd5b50505050620007c4826001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72583a3a3100000000000000000081525062004a7f565b601d5462000806906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03861662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b1580156200087757600080fd5b505af11580156200088c573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af1158015620008ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000914919062006f37565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000989573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009af919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620009fe57600080fd5b505af115801562000a13573d6000803e3d6000fd5b5050601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000aeb945090911691506370a0823190602401602060405180830381865afa15801562000a87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aad919062006f55565b60006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72583a3a3200000000000000000081525062004a7f565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa15801562000b59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7f919062006f55565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72583a3a3300000000000000000081525062004a7f565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156200049a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200047b575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200049a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200047b575050505050905090565b6000805160206201a387833981519152634c63e5626001600160801b0383161580159062000ccc5750670de0b6b3a7640000836001600160801b0316105b6040518263ffffffff1660e01b815260040162000ced911515815260200190565b60006040518083038186803b15801562000d0657600080fd5b505afa15801562000d1b573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260006024820181905293508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562000d7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000da3919062006ed2565b509150915062000df4816001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72583a3a310000000000000000000081525062004a7f565b601d5462000e36906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03851662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b15801562000ea757600080fd5b505af115801562000ebc573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562000f1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f44919062006f37565b5060275460405163029e02cd60e51b8152600060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562000fb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fdf919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200102e57600080fd5b505af115801562001043573d6000803e3d6000fd5b5050601d546040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526200111b945090911691506370a0823190602401602060405180830381865afa158015620010b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010dd919062006f55565b60006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72583a3a320000000000000000000081525062004a7f565b601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa15801562001189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011af919062006f55565b846001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72583a3a330000000000000000000081525062004a7f565b6000808360ff161180156200120d575060008260ff16115b62001224576200121e828462006f85565b6200123e565b600162001232838562006f85565b6200123e919062006fa1565b60ff1690505b92915050565b6000805160206201a387833981519152634c63e5626001600160801b03831615801590620012895750670de0b6b3a7640000836001600160801b031611155b6040518263ffffffff1660e01b8152600401620012aa911515815260200190565b60006040518083038186803b158015620012c357600080fd5b505afa158015620012d8573d6000803e3d6000fd5b5050602754604051631cee6cdf60e31b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063e77366f890604401606060405180830381865afa1580156200133a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001360919062006ed2565b50604051632631f2b160e11b81526001600160801b0382161515600482015291935091506000805160206201a38783398151915290634c63e5629060240160006040518083038186803b158015620013b757600080fd5b505afa158015620013cc573d6000803e3d6000fd5b505050506200141c826001600160801b031660006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72593a3a3100000000000000000081525062004a7f565b601c546200145e906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03861662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b158015620014cf57600080fd5b505af1158015620014e4573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03881660248201529116925063a9059cbb91506044016020604051808303816000875af115801562001546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156c919062006f37565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af1158015620015e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001607919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200165657600080fd5b505af11580156200166b573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262001743945090911691506370a0823190602401602060405180830381865afa158015620016df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001705919062006f55565b60006040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72593a3a3200000000000000000081525062004a7f565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa158015620017b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017d7919062006f55565b826001600160801b03166040518060400160405280601781526020017f7465737446757a7a5f537761704f7574466f72593a3a3300000000000000000081525062004a7f565b601c5462001857906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000600162004aee565b601d5462001891906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000600162004aee565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b1580156200190257600080fd5b505af115801562001917573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152600160248201529116925063a9059cbb91506044016020604051808303816000875af115801562001971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001997919062006f37565b50604051630618f58760e51b815263439df85d60e11b60048201526000805160206201a3878339815191529063c31eb0e090602401600060405180830381600087803b158015620019e757600080fd5b505af1158015620019fc573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562001a74573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a9a919062006f55565b5060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b15801562001b0c57600080fd5b505af115801562001b21573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152600160248201529116925063a9059cbb91506044016020604051808303816000875af115801562001b7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ba1919062006f37565b50604051630618f58760e51b815263439df85d60e11b60048201526000805160206201a3878339815191529063c31eb0e0906024015b600060405180830381600087803b15801562001bf257600080fd5b505af115801562001c07573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600060048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562001c7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca5919062006f55565b50565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620005e95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001d7957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001d3a5790505b5050505050815250508152602001906001019062001ccc565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620005e957838290600052602060002001805462001dd89062006e96565b80601f016020809104026020016040519081016040528092919081815260200182805462001e069062006e96565b801562001e575780601f1062001e2b5761010080835404028352916020019162001e57565b820191906000526020600020905b81548152906001019060200180831162001e3957829003601f168201915b50505050508152602001906001019062001db6565b60008062001e808462ffffff871662006fbd565b905060008360ff161162001e95578062001eb1565b62001ea460ff84168262006fd3565b62001eb190600162006fbd565b905062001ebe8162004afd565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620005e95760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001f9857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001f595790505b5050505050815250508152602001906001019062001eeb565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001ff2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002018919062006fe9565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002081919062006fe9565b905062002090828b8862004aee565b6200209d818b8762004aee565b6000620020ab8585620011f5565b905060008167ffffffffffffffff811115620020cb57620020cb62007009565b604051908082528060200260200182016040528015620020f5578160200160208202803683370190505b50905060005b82811015620021f4576000620021138b838962001e6c565b905060008b62ffffff168262ffffff161015801562002135575060008960ff16115b6200214257600062002163565b620021636200215d60ff8b16670de0b6b3a764000062007035565b62004b29565b905060008c62ffffff168362ffffff161115801562002185575060008960ff16115b62002192576000620021ad565b620021ad6200215d60ff8b16670de0b6b3a764000062007035565b9050620021bc82828562004b55565b858581518110620021d157620021d162007058565b60200260200101818152505050505080620021ec906200706e565b9050620020fb565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b1580156200224657600080fd5b505af11580156200225b573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af1158015620022af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022d5919062006f37565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562002326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200234c919062006f37565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200239b57600080fd5b505af1158015620023b0573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b8152600401620023e6939291906200708a565b6000604051808303816000875af115801562002406573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200243091908101906200714b565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015620005e9578382906000526020600020018054620024879062006e96565b80601f0160208091040260200160405190810160405280929190818152602001828054620024b59062006e96565b8015620025065780601f10620024da5761010080835404028352916020019162002506565b820191906000526020600020905b815481529060010190602001808311620024e857829003601f168201915b50505050508152602001906001019062002465565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa1580156200256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002591919062007200565b9998505050505050505050565b60075460009060ff1615620025b7575060075460ff1690565b604051630667f9d760e41b81526000805160206201a387833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156200262b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002651919062006f55565b1415905090565b604051630618f58760e51b8152637df801c760e01b60048201526000805160206201a3878339815191529063c31eb0e090602401600060405180830381600087803b158015620026a757600080fd5b505af1158015620026bc573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562002734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200275a919062006f55565b50604051630618f58760e51b8152637df801c760e01b60048201526000805160206201a3878339815191529063c31eb0e09060240162001bd7565b6000805160206201a387833981519152634c63e5626001600160801b03831615801590620027d35750670de0b6b3a7640000836001600160801b0316105b6040518263ffffffff1660e01b8152600401620027f4911515815260200190565b60006040518083038186803b1580156200280d57600080fd5b505afa15801562002822573d6000803e3d6000fd5b5050602754604051630abcd78360e41b81526001600160801b038516600482015260016024820152600093508392506001600160a01b039091169063abcd783090604401606060405180830381865afa15801562002884573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028aa919062006ed2565b5091509150620028fb816001600160801b031660006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72593a3a310000000000000000000081525062004a7f565b601c546200293d906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160801b03851662004aee565b6040516303223eab60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a387833981519152906306447d5690602401600060405180830381600087803b158015620029ae57600080fd5b505af1158015620029c3573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b0391821660048201526001600160801b03871660248201529116925063a9059cbb91506044016020604051808303816000875af115801562002a25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a4b919062006f37565b5060275460405163029e02cd60e51b8152600160048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152909116906353c059a0906044016020604051808303816000875af115801562002ac0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ae6919062006f55565b506000805160206201a3a783398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002b3557600080fd5b505af115801562002b4a573d6000803e3d6000fd5b5050601c546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262002c22945090911691506370a0823190602401602060405180830381865afa15801562002bbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002be4919062006f55565b60006040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72593a3a320000000000000000000081525062004a7f565b601d546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000bc59216906370a0823190602401602060405180830381865afa15801562002c90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cb6919062006f55565b846001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f53776170496e466f72593a3a330000000000000000000081525062004a7f565b601c5462002d3d906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000671bc16d674ec8000062004aee565b601d5462002d7e906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000671bc16d674ec8000062004aee565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b15801562002def57600080fd5b505af115801562002e04573d6000803e3d6000fd5b5050601c5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152671bc16d674ec8000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562002e65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e8b919062006f37565b50604051630618f58760e51b8152631a6d7fb160e31b60048201526000805160206201a3878339815191529063c31eb0e090602401600060405180830381600087803b15801562002edb57600080fd5b505af115801562002ef0573d6000803e3d6000fd5b505060275460405163029e02cd60e51b8152600160048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015290911692506353c059a091506044016020604051808303816000875af115801562002f68573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8e919062006f55565b5060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b1580156200300057600080fd5b505af115801562003015573d6000803e3d6000fd5b5050601d5460275460405163a9059cbb60e01b81526001600160a01b039182166004820152671bc16d674ec8000060248201529116925063a9059cbb91506044016020604051808303816000875af115801562003076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200309c919062006f37565b50604051630618f58760e51b8152631a6d7fb160e31b60048201526000805160206201a3878339815191529063c31eb0e09060240162001bd7565b606060138054806020026020016040519081016040528092919081815260200182805480156200049a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200047b575050505050905090565b670de0b6b3a7640000831115620031975760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620031a58383620011f5565b905060008167ffffffffffffffff811115620031c557620031c562007009565b604051908082528060200260200182016040528015620031ef578160200160208202803683370190505b50905060008267ffffffffffffffff81111562003210576200321062007009565b6040519080825280602002602001820160405280156200323a578160200160208202803683370190505b50905060005b83811015620033485760006200325889838862001e6c565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620032ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032d4919062006f55565b90508162ffffff16858481518110620032f157620032f162007058565b602090810291909101015262003311818a670de0b6b3a764000062004b93565b84848151811062003326576200332662007058565b60200260200101818152505050508062003340906200706e565b905062003240565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201a3878339815191529063ca669fa790602401600060405180830381600087803b1580156200339a57600080fd5b505af1158015620033af573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e9150620033e7908d908d908790879060040162007297565b6000604051808303816000875af115801562003407573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003431919081019062007351565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200353b57601c546040516000805160206201a3878339815191529163b4d6c782916001600160a01b0390911690620034a4906200690e565b604051809103906000f080158015620034c1573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b8152600401620035069291906200738a565b600060405180830381600087803b1580156200352157600080fd5b505af115801562003536573d6000803e3d6000fd5b505050505b60066040516200354b906200691c565b60ff9091168152602001604051809103906000f08015801562003572573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055604051600690620035a4906200691c565b60ff9091168152602001604051809103906000f080158015620035cb573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051600890620035fd906200691c565b60ff9091168152602001604051809103906000f08015801562003624573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062003656906200691c565b60ff9091168152602001604051809103906000f0801580156200367d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392909216919091179055604051601290620036af906200691c565b60ff9091168152602001604051809103906000f080158015620036d6573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062003708906200691c565b60ff9091168152602001604051809103906000f0801580156200372f573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200375e906200692a565b604051809103906000f0801580156200377b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201a3878339815191529063c657c71890608401600060405180830381600087803b1580156200381c57600080fd5b505af115801562003831573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b158015620038a957600080fd5b505af1158015620038be573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200393657600080fd5b505af11580156200394b573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b158015620039c357600080fd5b505af1158015620039d8573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003a5057600080fd5b505af115801562003a65573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003add57600080fd5b505af115801562003af2573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003b6457600080fd5b505af115801562003b79573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003c0557600080fd5b505af115801562003c1a573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062003ca19062006938565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562003cdc573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162003d0a9062006946565b6001600160a01b039091168152602001604051809103906000f08015801562003d37573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562003d9657600080fd5b505af115801562003dab573d6000803e3d6000fd5b5050505062003db962004bc1565b62003dc5600a62004f6a565b602454602b54601c546040516001600160a01b0393841693928316929091169062003df09062006954565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562003e2d573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062003e689062006962565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562003ea5573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201a3878339815191529063c657c71890608401600060405180830381600087803b15801562003f4657600080fd5b505af115801562003f5b573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b15801562003fe757600080fd5b505af115801562003ffc573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200408b57600080fd5b505af1158015620040a0573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200412c57600080fd5b505af115801562004141573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b158015620041cd57600080fd5b505af1158015620041e2573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201a387833981519152925063c657c7189150608401600060405180830381600087803b1580156200426e57600080fd5b505af115801562004283573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af1158015620042de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004304919062006f37565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200435c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004382919062006f37565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620043da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004400919062006f37565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004458573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200447e919062006f37565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620044d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044fc919062006f37565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200457a919062006f37565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620045d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045f8919062006f37565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004650573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004676919062006f37565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620046ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046f4919062006f37565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200474c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004772919062006f37565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620047ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047f0919062006f37565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004848573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200486e919062006f37565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620048c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620048ec919062006f37565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200496a919062006f37565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620049c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049e8919062006f37565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562004a40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ca5919062006f37565b600062004a7883836280000062005011565b9392505050565b6040516388b44c8560e01b81526000805160206201a387833981519152906388b44c859062004ab790869086908690600401620073ae565b60006040518083038186803b15801562004ad057600080fd5b505afa15801562004ae5573d6000803e3d6000fd5b50505050505050565b62000bc5838383600062005022565b8062ffffff8116811462004b2457604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff8116811462004b245760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600080600062004ba4868662005228565b9150915062004bb7868686858562005247565b9695505050505050565b601c546001600160a01b03161562004c365760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004c1c57600080fd5b505af115801562004c31573d6000803e3d6000fd5b505050505b601d546001600160a01b03161562004cab5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004c9157600080fd5b505af115801562004ca6573d6000803e3d6000fd5b505050505b601e546001600160a01b03161562004d205760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004d0657600080fd5b505af115801562004d1b573d6000803e3d6000fd5b505050505b601f546001600160a01b03161562004d955760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004d7b57600080fd5b505af115801562004d90573d6000803e3d6000fd5b505050505b6022546001600160a01b03161562004e0a5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004df057600080fd5b505af115801562004e05573d6000803e3d6000fd5b505050505b6020546001600160a01b03161562004e7f5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004e6557600080fd5b505af115801562004e7a573d6000803e3d6000fd5b505050505b6021546001600160a01b03161562004ef45760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004eda57600080fd5b505af115801562004eef573d6000803e3d6000fd5b505050505b6023546001600160a01b0316156200043e5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562004f4f57600080fd5b505af115801562004f64573d6000803e3d6000fd5b50505050565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b15801562004ff557600080fd5b505af11580156200500a573d6000803e3d6000fd5b5050505050565b600062004b8b848484600a620052f9565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200507891620073cf565b600060405180830381855afa9150503d8060008114620050b5576040519150601f19603f3d011682016040523d82523d6000602084013e620050ba565b606091505b50915050600081806020019051810190620050d6919062006f55565b905062005110846200510987620051026370a0823160e01b620050fb600c8d6200538f565b90620053b5565b90620053d3565b90620053fc565b8215620052205760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b038916916200515b9190620073cf565b600060405180830381855afa9150503d806000811462005198576040519150601f19603f3d011682016040523d82523d6000602084013e6200519d565b606091505b50915050600081806020019051810190620051b9919062006f55565b905082861015620051e457620051d0868462006fd3565b620051dc908262006fd3565b9050620051ff565b620051f0838762006fd3565b620051fc908262006fbd565b90505b6200521d81620051096318160ddd60e01b620050fb600c8d6200538f565b50505b505050505050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036200526d578383816200526457620052646200701f565b04905062001ebe565b8382106200528e576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562005369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ebe919062006fe9565b6005820180546001600160a01b0319166001600160a01b03831617905560008262004a78565b60038201805463ffffffff191660e083901c17905560008262004a78565b6002820180546001810182556000918252602082206001600160a01b0384169101558262004a78565b6200540882826200540c565b5050565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200547f57602002820191906000526020600020905b8154815260200190600101908083116200546a575b50505050509050600083620054948362005819565b604051602001620054a7929190620073ed565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620054fb91869188910162007420565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005536576200553487620058cd565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200557791879189910162007420565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620055be9190620073cf565b600060405180830381855afa9150503d8060008114620055fb576040519150601f19603f3d011682016040523d82523d6000602084013e62005600565b606091505b5091506200561d905081620056178860206200745c565b620058da565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201a3878339815191529063667f9d7090604401602060405180830381865afa1580156200567f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056a5919062006f55565b90508082146200575c5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200318e565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201a387833981519152906370ca10bb90606401600060405180830381600087803b158015620057bb57600080fd5b505af1158015620057d0573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200580560028b01600062006970565b896004016000905550505050505050505050565b60606000825160206200582d91906200745c565b67ffffffffffffffff81111562005848576200584862007009565b6040519080825280601f01601f19166020018201604052801562005873576020820181803683370190505b50905060005b8351811015620058c65760008482815181106200589a576200589a62007058565b602002602001015190508082602002602001840152508080620058bd906200706e565b91505062005879565b5092915050565b600062001244826200597c565b60008060006020855111620058f1578451620058f4565b60205b905060005b8181101562005972576200590f8160086200745c565b866200591c838862006fbd565b815181106200592f576200592f62007058565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005969816200706e565b915050620058f9565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620059ee57602002820191906000526020600020905b815481526020019060010190808311620059d9575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062005a3a9250859187910162007420565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005ad9576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162005aa991859187910162007420565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362005ae783620067c9565b60405160200162005afa929190620073ed565b60405160208183030381529060405290506000805160206201a3a783398151915260001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005b5957600080fd5b505af115801562005b6e573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005b8f9190620073cf565b600060405180830381855afa9150503d806000811462005bcc576040519150601f19603f3d011682016040523d82523d6000602084013e62005bd1565b606091505b50915062005bee90508162005be88760206200745c565b62006876565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201a387833981519152906365bc9481906024016000604051808303816000875af115801562005c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005c75919081019062007476565b5090508051600103620060085760006000805160206201a3a783398151915260001c6001600160a01b031663667f9d70898460008151811062005cbc5762005cbc62007058565b60200260200101516040518363ffffffff1660e01b815260040162005cf69291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005d14573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d3a919062006f55565b90508062005da5577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062005d7a5762005d7a62007058565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462005e5a5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200318e565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162005e9292919062007420565b604051602081830303815290604052805190602001208560008151811062005ebe5762005ebe62007058565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062005f185762005f1862007058565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262005f63918a918c910162007420565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162005fcd918a918c910162007420565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200663e565b600181511115620065cd5760005b8151811015620065c65760006000805160206201a3a783398151915260001c6001600160a01b031663667f9d708a85858151811062006059576200605962007058565b60200260200101516040518363ffffffff1660e01b8152600401620060939291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620060b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060d7919062006f55565b90508062006141577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062006116576200611662007058565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620061505750620065b1565b82518119906000805160206201a387833981519152906370ca10bb908c9087908790811062006183576200618362007058565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620061dc57600080fd5b505af1158015620061f1573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620062139190620073cf565b600060405180830381855afa9150503d806000811462006250576040519150601f19603f3d011682016040523d82523d6000602084013e62006255565b606091505b5090925090506200626d8162005be88c60206200745c565b9650508080156200627d57508186145b1562006504577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620062bb92919062007420565b60405160208183030381529060405280519060200120888881518110620062e657620062e662007058565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200633f576200633f62007058565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200638a918d918f910162007420565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200641792919062007420565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805160206201a3a783398151915260001c6001600160a01b03166370ca10bb8c87878151811062006489576200648962007058565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620064e257600080fd5b505af1158015620064f7573d6000803e3d6000fd5b50505050505050620065c6565b6000805160206201a3a783398151915260001c6001600160a01b03166370ca10bb8c8787815181106200653b576200653b62007058565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200659457600080fd5b505af1158015620065a9573d6000803e3d6000fd5b505050505050505b80620065bd816200706e565b91505062006016565b506200663e565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e60648201526084016200318e565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620066829188918a910162007420565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200671f5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e000000000000000000000000000000000060648201526084016200318e565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200675060028a01600062006970565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620067969188918a910162007420565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620067dd91906200745c565b67ffffffffffffffff811115620067f857620067f862007009565b6040519080825280601f01601f19166020018201604052801562006823576020820181803683370190505b50905060005b8351811015620058c65760008482815181106200684a576200684a62007058565b6020026020010151905080826020026020018401525080806200686d906200706e565b91505062006829565b600080600060208551116200688d57845162006890565b60205b905060005b818110156200597257620068ab8160086200745c565b86620068b8838862006fbd565b81518110620068cb57620068cb62007058565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006905816200706e565b91505062006895565b610b0880620074e283390190565b610bfd8062007fea83390190565b610c188062008be783390190565b61319980620097ff83390190565b61615c806200c99883390190565b614c808062012af483390190565b612c13806201777483390190565b508054600082559060005260206000209081019062001ca591905b80821115620069a157600081556001016200698b565b5090565b600060208284031215620069b857600080fd5b81356001600160e01b03198116811462004a7857600080fd5b6020808252825182820181905260009190848201906040850190845b8181101562006a145783516001600160a01b031683529284019291840191600101620069ed565b50909695505050505050565b60005b8381101562006a3d57818101518382015260200162006a23565b50506000910152565b6000815180845262006a6081602086016020860162006a20565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b2a57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b1357605f1989850301835262006b0084865162006a46565b948e01949350918d019160010162006ae1565b505050978a01979450509188019160010162006a9b565b50919a9950505050505050505050565b6001600160801b038116811462001ca557600080fd5b60006020828403121562006b6357600080fd5b813562004a788162006b3a565b803560ff8116811462004b2457600080fd5b6000806040838503121562006b9657600080fd5b62006ba18362006b70565b915062006bb16020840162006b70565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006c6257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006c4c5783516001600160e01b0319168252928b019260019290920191908b019062006c20565b50978a0197955050509187019160010162006be2565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006cca57603f1988860301845262006cb785835162006a46565b9450928501929085019060010162006c98565b5092979650505050505050565b803562ffffff8116811462004b2457600080fd5b60008060006060848603121562006d0157600080fd5b62006d0c8462006cd7565b92506020840135915062006d236040850162006b70565b90509250925092565b6001600160a01b038116811462001ca557600080fd5b600080600080600080600080610100898b03121562006d6057600080fd5b883562006d6d8162006d2c565b9750602089013562006d7f8162006d2c565b9650604089013562006d918162006d2c565b955062006da160608a0162006cd7565b94506080890135935060a0890135925062006dbf60c08a0162006b70565b915062006dcf60e08a0162006b70565b90509295985092959890939650565b60006020828403121562006df157600080fd5b813561ffff8116811462004a7857600080fd5b600080600080600080600060e0888a03121562006e2057600080fd5b873562006e2d8162006d2c565b9650602088013562006e3f8162006d2c565b9550604088013562006e518162006d2c565b945062006e616060890162006cd7565b93506080880135925062006e7860a0890162006b70565b915062006e8860c0890162006b70565b905092959891949750929550565b600181811c9082168062006eab57607f821691505b60208210810362006ecc57634e487b7160e01b600052602260045260246000fd5b50919050565b60008060006060848603121562006ee857600080fd5b835162006ef58162006b3a565b602085015190935062006f088162006b3a565b604085015190925062006f1b8162006b3a565b809150509250925092565b8051801515811462004b2457600080fd5b60006020828403121562006f4a57600080fd5b62004a788262006f26565b60006020828403121562006f6857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111562001244576200124462006f6f565b60ff828116828216039081111562001244576200124462006f6f565b8082018082111562001244576200124462006f6f565b8181038181111562001244576200124462006f6f565b60006020828403121562006ffc57600080fd5b815162004a788162006d2c565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826200705357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162007083576200708362006f6f565b5060010190565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620070d757855183529483019491830191600101620070b9565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156200711c576200711c62007009565b604052919050565b600067ffffffffffffffff82111562007141576200714162007009565b5060051b60200190565b6000806000606084860312156200716157600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156200718857600080fd5b8501601f810187136200719a57600080fd5b8051620071b1620071ab8262007124565b620070f0565b81815260059190911b82018301908381019089831115620071d157600080fd5b928401925b82841015620071f157835182529284019290840190620071d6565b80955050505050509250925092565b600080600080600080600080610100898b0312156200721e57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062006dcf60e08a0162006f26565b600081518084526020808501945080840160005b838110156200728c578151875295820195908201906001016200726e565b509495945050505050565b60006001600160a01b03808716835280861660208401525060806040830152620072c560808301856200725a565b8281036060840152620072d981856200725a565b979650505050505050565b600082601f830112620072f657600080fd5b8151602062007309620071ab8362007124565b82815260059290921b840181019181810190868411156200732957600080fd5b8286015b848110156200734657805183529183019183016200732d565b509695505050505050565b6000602082840312156200736457600080fd5b815167ffffffffffffffff8111156200737c57600080fd5b62004b8b84828501620072e4565b6001600160a01b038316815260406020820152600062004b8b604083018462006a46565b83815282602082015260606040820152600062001ebe606083018462006a46565b60008251620073e381846020870162006a20565b9190910192915050565b6001600160e01b03198316815281516000906200741281600485016020870162006a20565b919091016004019392505050565b825160009082906020808701845b838110156200744c578151855293820193908201906001016200742e565b5050948252509092019392505050565b808202811582820484141762001244576200124462006f6f565b600080604083850312156200748a57600080fd5b825167ffffffffffffffff80821115620074a357600080fd5b620074b186838701620072e4565b93506020850151915080821115620074c857600080fd5b50620074d785828601620072e4565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122084ba5c9af45435a5ab9e70e4cec40b53ce9d6af042611ee5bd12f00c2d1ee32064736f6c63430008140033","sourceMap":"95:4209:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;172:189:90;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;2298:659:90:-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;1000:623:90:-;;;;;;:::i;:::-;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4451:25:105;;;4439:2;4424:18;12046:168:93;4305:177:105;1629:663:90;;;;;;:::i;:::-;;:::i;3257:524::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;7557:8:105;7545:21;;;7527:40;;7515:2;7500:18;12220:205:93;7383:190:105;3069:146:5;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;2963:288:90:-;;;:::i;367:627::-;;;;;;:::i;:::-;;:::i;3787:515::-;;;:::i;2304:142:5:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;172:189:90:-;215:13;:11;:13::i;:::-;266:7;;275:4;;253:27;;-1:-1:-1;;;;;266:7:90;;;;275:4;253:12;:27::i;:::-;239:11;:41;;-1:-1:-1;;;;;;239:41:90;-1:-1:-1;;;;;239:41:90;;;;;;;;;291:63;;304:3;;;;992:7:93;335:4:90;;347:2;;291:12;:63::i;:::-;172:189::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;2298:659:90:-;-1:-1:-1;;;;;;;;;;;2363:9:90;-1:-1:-1;;;;;2373:12:90;;;;;;:32;;;2401:4;2389:8;-1:-1:-1;;;;;2389:16:90;;;2373:32;2363:43;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;2363:43:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2462:11:90;;:39;;-1:-1:-1;;;2462:39:90;;-1:-1:-1;;;;;10322:47:105;;2462:39:90;;;10304:66:105;2418:20:90;10386:18:105;;;10379:50;;;2418:20:90;-1:-1:-1;2418:20:90;;-1:-1:-1;;;;;;2462:11:90;;;;:22;;10277:18:105;;2462:39:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2512:24:90;;-1:-1:-1;;;2512:24:90;;-1:-1:-1;;;;;2522:13:90;;;;2512:24;;;445:41:105;2417:84:90;;-1:-1:-1;2417:84:90;-1:-1:-1;;;;;;;;;;;;2512:9:90;;;418:18:105;;2512:24:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2547:52;2556:12;-1:-1:-1;;;;;2547:52:90;2570:1;2547:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;2623:4;;2610:36;;-1:-1:-1;;;;;2623:4:90;2630:5;-1:-1:-1;;;;;2610:36:90;;:4;:36::i;:::-;2657:20;;-1:-1:-1;;;2657:20:90;;-1:-1:-1;;;;;2671:5:90;11136:55:105;2657:20:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;2657:13:90;;;11091:18:105;;2657:20:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2687:4:90;;2709:11;;2687:45;;-1:-1:-1;;;2687:45:90;;-1:-1:-1;;;;;2709:11:90;;;2687:45;;;11377:74:105;-1:-1:-1;;;;;11487:47:105;;11467:18;;;11460:75;2687:4:90;;;-1:-1:-1;2687:13:90;;-1:-1:-1;11350:18:105;;2687:45:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2742:11:90;;:30;;-1:-1:-1;;;2742:30:90;;:11;:30;;;12098:41:105;-1:-1:-1;;;;;2766:5:90;12175:55:105;;12155:18;;;12148:83;2742:11:90;;;;:16;;12071:18:105;;2742:30:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;2782:12:90;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2816:4:90;;:21;;-1:-1:-1;;;2816:21:90;;-1:-1:-1;;;;;2831:5:90;11136:55:105;;2816:21:90;;;11118:74:105;2807:61:90;;-1:-1:-1;2816:4:90;;;;-1:-1:-1;2816:14:90;;11091:18:105;;2816:21:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2839:1;2807:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;2887:7;;:24;;-1:-1:-1;;;2887:24:90;;-1:-1:-1;;;;;2905:5:90;11136:55:105;;2887:24:90;;;11118:74:105;2878:72:90;;2887:7;;:17;;11091:18:105;;2887:24:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2913:9;-1:-1:-1;;;;;2878:72:90;;;;;;;;;;;;;;;;;;:8;:72::i;:::-;2353:604;;2298:659;:::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;1000:623:90:-;-1:-1:-1;;;;;;;;;;;1065:9:90;-1:-1:-1;;;;;1075:13:90;;;;;;:33;;;1104:4;1092:9;-1:-1:-1;;;;;1092:16:90;;1075:33;1065:44;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;1065:44:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1165:11:90;;:39;;-1:-1:-1;;;1165:39:90;;-1:-1:-1;;;;;10322:47:105;;1165:39:90;;;10304:66:105;1121:16:90;10386:18:105;;;10379:50;;;1121:16:90;-1:-1:-1;1121:16:90;;-1:-1:-1;;;;;;1165:11:90;;;;:21;;10277:18:105;;1165:39:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1120:84;;;;;1215:52;1224:13;-1:-1:-1;;;;;1215:52:90;1239:1;1215:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;1291:4;;1278:36;;-1:-1:-1;;;;;1291:4:90;1298:5;-1:-1:-1;;;;;1278:36:90;;:4;:36::i;:::-;1325:20;;-1:-1:-1;;;1325:20:90;;-1:-1:-1;;;;;1339:5:90;11136:55:105;1325:20:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;1325:13:90;;;11091:18:105;;1325:20:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1355:4:90;;1377:11;;1355:45;;-1:-1:-1;;;1355:45:90;;-1:-1:-1;;;;;1377:11:90;;;1355:45;;;11377:74:105;-1:-1:-1;;;;;11487:47:105;;11467:18;;;11460:75;1355:4:90;;;-1:-1:-1;1355:13:90;;-1:-1:-1;11350:18:105;;1355:45:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1410:11:90;;:30;;-1:-1:-1;;;1410:30:90;;:11;:30;;;12098:41:105;-1:-1:-1;;;;;1434:5:90;12175:55:105;;12155:18;;;12148:83;1410:11:90;;;;:16;;12071:18:105;;1410:30:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;1450:12:90;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1484:4:90;;:21;;-1:-1:-1;;;1484:21:90;;-1:-1:-1;;;;;1499:5:90;11136:55:105;;1484:21:90;;;11118:74:105;1475:60:90;;-1:-1:-1;1484:4:90;;;;-1:-1:-1;1484:14:90;;11091:18:105;;1484:21:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1507:1;1475:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;1554:7;;:24;;-1:-1:-1;;;1554:24:90;;-1:-1:-1;;;;;1572:5:90;11136:55:105;;1554:24:90;;;11118:74:105;1545:71:90;;1554:7;;:17;;11091:18:105;;1554:24:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1580:9;-1:-1:-1;;;;;1545:71:90;;;;;;;;;;;;;;;;;;:8;:71::i;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;1629:663:90:-;-1:-1:-1;;;;;;;;;;;1694:9:90;-1:-1:-1;;;;;1704:12:90;;;;;;:32;;;1732:4;1720:8;-1:-1:-1;;;;;1720:16:90;;;1704:32;1694:43;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;1694:43:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1793:11:90;;:38;;-1:-1:-1;;;1793:38:90;;-1:-1:-1;;;;;10322:47:105;;1793:38:90;;;10304:66:105;1793:11:90;10386:18:105;;;10379:50;1749:20:90;;-1:-1:-1;1749:20:90;;-1:-1:-1;;;;;;1793:11:90;;;;:22;;10277:18:105;;1793:38:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1842:24:90;;-1:-1:-1;;;1842:24:90;;-1:-1:-1;;;;;1852:13:90;;;;1842:24;;;445:41:105;1748:83:90;;-1:-1:-1;1748:83:90;-1:-1:-1;;;;;;;;;;;;1842:9:90;;;418:18:105;;1842:24:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:52;1886:12;-1:-1:-1;;;;;1877:52:90;1900:1;1877:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;1953:7;;1940:39;;-1:-1:-1;;;;;1953:7:90;1963:5;-1:-1:-1;;;;;1940:39:90;;:4;:39::i;:::-;1990:20;;-1:-1:-1;;;1990:20:90;;-1:-1:-1;;;;;2004:5:90;11136:55:105;1990:20:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;1990:13:90;;;11091:18:105;;1990:20:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2020:7:90;;2045:11;;2020:48;;-1:-1:-1;;;2020:48:90;;-1:-1:-1;;;;;2045:11:90;;;2020:48;;;11377:74:105;-1:-1:-1;;;;;11487:47:105;;11467:18;;;11460:75;2020:7:90;;;-1:-1:-1;2020:16:90;;-1:-1:-1;11350:18:105;;2020:48:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2078:11:90;;:29;;-1:-1:-1;;;2078:29:90;;:11;:29;;;12098:41:105;-1:-1:-1;;;;;2101:5:90;12175:55:105;;12155:18;;;12148:83;2078:11:90;;;;:16;;12071:18:105;;2078:29:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;2117:12:90;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2151:7:90;;:24;;-1:-1:-1;;;2151:24:90;;-1:-1:-1;;;;;2169:5:90;11136:55:105;;2151:24:90;;;11118:74:105;2142:64:90;;-1:-1:-1;2151:7:90;;;;-1:-1:-1;2151:17:90;;11091:18:105;;2151:24:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2177:1;2142:64;;;;;;;;;;;;;;;;;:8;:64::i;:::-;2225:4;;:21;;-1:-1:-1;;;2225:21:90;;-1:-1:-1;;;;;2240:5:90;11136:55:105;;2225:21:90;;;11118:74:105;2216:69:90;;2225:4;;:14;;11091:18:105;;2225:21:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2248:9;-1:-1:-1;;;;;2216:69:90;;;;;;;;;;;;;;;;;;:8;:69::i;3257:524::-;3338:7;;3325:32;;-1:-1:-1;;;;;3338:7:90;3348:5;3338:7;3325:4;:32::i;:::-;3380:4;;3367:29;;-1:-1:-1;;;;;3380:4:90;3387:5;3380:4;3367;:29::i;:::-;3407:15;;-1:-1:-1;;;3407:15:90;;-1:-1:-1;;;;;3416:5:90;11136:55:105;3407:15:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;3407:8:90;;;11091:18:105;;3407:15:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3432:7:90;;3457:11;;3432:41;;-1:-1:-1;;;3432:41:90;;-1:-1:-1;;;;;3457:11:90;;;3432:41;;;13243:74:105;3432:7:90;13333:18:105;;;13326:34;3432:7:90;;;-1:-1:-1;3432:16:90;;-1:-1:-1;13216:18:105;;3432:41:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3484:63:90;;-1:-1:-1;;;3484:63:90;;-1:-1:-1;;;3484:63:90;;;13515:52:105;-1:-1:-1;;;;;;;;;;;3484:15:90;;;13488:18:105;;3484:63:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3557:11:90;;:29;;-1:-1:-1;;;3557:29:90;;:11;:29;;;12098:41:105;-1:-1:-1;;;;;3580:5:90;12175:55:105;;12155:18;;;12148:83;3557:11:90;;;;-1:-1:-1;3557:16:90;;-1:-1:-1;12071:18:105;;3557:29:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3597:15:90;;-1:-1:-1;;;3597:15:90;;-1:-1:-1;;;;;3606:5:90;11136:55:105;3597:15:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;3597:8:90;;;11091:18:105;;3597:15:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3622:4:90;;3644:11;;3622:38;;-1:-1:-1;;;3622:38:90;;-1:-1:-1;;;;;3644:11:90;;;3622:38;;;13243:74:105;3622:4:90;13333:18:105;;;13326:34;3622:4:90;;;-1:-1:-1;3622:13:90;;-1:-1:-1;13216:18:105;;3622:38:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3671:63:90;;-1:-1:-1;;;3671:63:90;;-1:-1:-1;;;3671:63:90;;;13515:52:105;-1:-1:-1;;;;;;;;;;;3671:15:90;;;13488:18:105;;3671:63:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3744:11:90;;:30;;-1:-1:-1;;;3744:30:90;;:11;:30;;;12098:41:105;-1:-1:-1;;;;;3768:5:90;12175:55:105;;12155:18;;;12148:83;3744:11:90;;;;-1:-1:-1;3744:16:90;;-1:-1:-1;12071:18:105;;3744:30:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3257:524::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:1171:93;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;11136:55:105;;11033:19:93;;;11118:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;11091:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;13261:55:105;;;11062:41:93;;;13243:74:105;13333:18;;;13326:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;13216:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;13261:55:105;;;11113:41:93;;;13243:74:105;13333:18;;;13326:34;;;11113:15:93;;;;;13216:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;17914:6:105;17902:19;;12532:26:93;;;17884:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;17857:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;13243:74:105;;;1398:17:1;13333:18:105;;;13326:34;1428:1:1;;1377:7;;13216:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2963:288:90:-;3030:62;;-1:-1:-1;;;3030:62:90;;-1:-1:-1;;;3030:62:90;;;13515:52:105;-1:-1:-1;;;;;;;;;;;3030:15:90;;;13488:18:105;;3030:62:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3102:11:90;;:29;;-1:-1:-1;;;3102:29:90;;:11;:29;;;12098:41:105;-1:-1:-1;;;;;3125:5:90;12175:55:105;;12155:18;;;12148:83;3102:11:90;;;;-1:-1:-1;3102:16:90;;-1:-1:-1;12071:18:105;;3102:29:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3142:62:90;;-1:-1:-1;;;3142:62:90;;-1:-1:-1;;;3142:62:90;;;13515:52:105;-1:-1:-1;;;;;;;;;;;3142:15:90;;;13488:18:105;;3142:62:90;13371:202:105;367:627:90;-1:-1:-1;;;;;;;;;;;432:9:90;-1:-1:-1;;;;;442:13:90;;;;;;:33;;;471:4;459:9;-1:-1:-1;;;;;459:16:90;;442:33;432:44;;;;;;;;;;;;;470:14:105;463:22;445:41;;433:2;418:18;;305:187;432:44:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;532:11:90;;:38;;-1:-1:-1;;;532:38:90;;-1:-1:-1;;;;;10322:47:105;;532:38:90;;;10304:66:105;532:11:90;10386:18:105;;;10379:50;488:16:90;;-1:-1:-1;488:16:90;;-1:-1:-1;;;;;;532:11:90;;;;:21;;10277:18:105;;532:38:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;487:83;;;;;581:52;590:13;-1:-1:-1;;;;;581:52:90;605:1;581:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;657:7;;644:39;;-1:-1:-1;;;;;657:7:90;667:5;-1:-1:-1;;;;;644:39:90;;:4;:39::i;:::-;694:20;;-1:-1:-1;;;694:20:90;;-1:-1:-1;;;;;708:5:90;11136:55:105;694:20:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;694:13:90;;;11091:18:105;;694:20:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;724:7:90;;749:11;;724:48;;-1:-1:-1;;;724:48:90;;-1:-1:-1;;;;;749:11:90;;;724:48;;;11377:74:105;-1:-1:-1;;;;;11487:47:105;;11467:18;;;11460:75;724:7:90;;;-1:-1:-1;724:16:90;;-1:-1:-1;11350:18:105;;724:48:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;782:11:90;;:29;;-1:-1:-1;;;782:29:90;;:11;:29;;;12098:41:105;-1:-1:-1;;;;;805:5:90;12175:55:105;;12155:18;;;12148:83;782:11:90;;;;:16;;12071:18:105;;782:29:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;309:37:0;;-1:-1:-1;;;;;821:12:90;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;855:7:90;;:24;;-1:-1:-1;;;855:24:90;;-1:-1:-1;;;;;873:5:90;11136:55:105;;855:24:90;;;11118:74:105;846:63:90;;-1:-1:-1;855:7:90;;;;-1:-1:-1;855:17:90;;11091:18:105;;855:24:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;881:1;846:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;928:4;;:21;;-1:-1:-1;;;928:21:90;;-1:-1:-1;;;;;943:5:90;11136:55:105;;928:21:90;;;11118:74:105;919:68:90;;928:4;;:14;;11091:18:105;;928:21:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;951:9;-1:-1:-1;;;;;919:68:90;;;;;;;;;;;;;;;;;;:8;:68::i;3787:515::-;3861:7;;3848:35;;-1:-1:-1;;;;;3861:7:90;3871:5;3878:4;3848;:35::i;:::-;3906:4;;3893:32;;-1:-1:-1;;;;;3906:4:90;3913:5;3920:4;3893;:32::i;:::-;3936:15;;-1:-1:-1;;;3936:15:90;;-1:-1:-1;;;;;3945:5:90;11136:55:105;3936:15:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;3936:8:90;;;11091:18:105;;3936:15:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3961:7:90;;3986:11;;3961:44;;-1:-1:-1;;;3961:44:90;;-1:-1:-1;;;;;3986:11:90;;;3961:44;;;13243:74:105;4000:4:90;13333:18:105;;;13326:34;3961:7:90;;;-1:-1:-1;3961:16:90;;-1:-1:-1;13216:18:105;;3961:44:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4016:56:90;;-1:-1:-1;;;4016:56:90;;-1:-1:-1;;;4016:56:90;;;13515:52:105;-1:-1:-1;;;;;;;;;;;4016:15:90;;;13488:18:105;;4016:56:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4082:11:90;;:29;;-1:-1:-1;;;4082:29:90;;:11;:29;;;12098:41:105;-1:-1:-1;;;;;4105:5:90;12175:55:105;;12155:18;;;12148:83;4082:11:90;;;;-1:-1:-1;4082:16:90;;-1:-1:-1;12071:18:105;;4082:29:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4122:15:90;;-1:-1:-1;;;4122:15:90;;-1:-1:-1;;;;;4131:5:90;11136:55:105;4122:15:90;;;11118:74:105;-1:-1:-1;;;;;;;;;;;4122:8:90;;;11091:18:105;;4122:15:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4147:4:90;;4169:11;;4147:41;;-1:-1:-1;;;4147:41:90;;-1:-1:-1;;;;;4169:11:90;;;4147:41;;;13243:74:105;4183:4:90;13333:18:105;;;13326:34;4147:4:90;;;-1:-1:-1;4147:13:90;;-1:-1:-1;13216:18:105;;4147:41:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4199:56:90;;-1:-1:-1;;;4199:56:90;;-1:-1:-1;;;4199:56:90;;;13515:52:105;-1:-1:-1;;;;;;;;;;;4199:15:90;;;13488:18:105;;4199:56:90;13371:202:105;2304:142:5;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;19404:2:105;11461:73:93;;;19386:21:105;19443:2;19423:18;;;19416:30;19482:26;19462:18;;;19455:54;19526:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;19746:55:105;;;11821:26:93;;;19728:74:105;19850:8;19838:21;;19818:18;;;19811:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;19701:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;11136:55:105;;11974:14:93;;;11118:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;11091:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;22561:4:105;22549:17;;;22531:36;;22519:2;22504:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;22561:4:105;22549:17;;;22531:36;;22519:2;22504:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;22561:4:105;22549:17;;;22531:36;;22519:2;22504:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;22561:4:105;22549:17;;;22531:36;;22519:2;22504:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;22561:4:105;22549:17;;;22531:36;;22519:2;22504:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;22561:4:105;22549:17;;;22531:36;;22519:2;22504:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;23189:74:105;23279:18;;;23272:30;;;;23338:1;23318:18;;;23311:29;23376:9;23356:18;;;23349:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;23403:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;23645:74:105;;;;23735:18;;;23728:30;;;;23774:18;;;23767:29;-1:-1:-1;;;23812:18:105;;;23805:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;23856:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;24098:74:105;;;;24188:18;;;24181:30;;;;24227:18;;;24220:29;-1:-1:-1;;;24265:18:105;;;24258:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;24309:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;24551:74:105;;;;24641:18;;;24634:30;;;;24680:18;;;24673:29;-1:-1:-1;;;24718:18:105;;;24711:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;24762:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;25004:74:105;;;;25094:18;;;25087:30;;;;25133:18;;;25126:29;-1:-1:-1;;;25171:18:105;;;25164:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;25215:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;25457:74:105;;;;25547:18;;;25540:30;;;;25586:18;;;25579:29;-1:-1:-1;;;25624:18:105;;;25617:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;25668:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;25910:74:105;26000:18;;;25993:30;26059:1;26039:18;;;26032:29;-1:-1:-1;;;26077:18:105;;;26070:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;26120:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;26362:74:105;26452:18;;;26445:30;26511:1;26491:18;;;26484:29;26549:10;26529:18;;;26522:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;26577:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;26904:15:105;;;26886:34;;26956:15;;;;26951:2;26936:18;;26929:43;27003:2;26988:18;;26981:34;26813:2;26798:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;11136:55:105;;;11118:74;;11106:2;11091:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;11118:74:105;;;;3824:7:93;;;;:31;;11091:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;27622:15:105;;;27604:34;;27674:15;;;27669:2;27654:18;;27647:43;27726:15;;;27721:2;27706:18;;27699:43;27531:2;27516:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;27622:15:105;;;27604:34;;27674:15;;;27669:2;27654:18;;27647:43;27726:15;;;27721:2;27706:18;;27699:43;27531:2;27516:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;28377:74:105;28467:18;;;28460:30;;;;28526:1;28506:18;;;28499:29;28564:8;28544:18;;;28537:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;28590:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;28832:74:105;28922:18;;;28915:30;28981:1;28961:18;;;28954:29;29019:8;28999:18;;;28992:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;29045:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;29287:74:105;29377:18;;;29370:30;;;;29436:1;29416:18;;;29409:29;29474:9;29454:18;;;29447:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;29501:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;29743:74:105;29833:18;;;29826:30;29892:2;29872:18;;;29865:30;29931:20;29911:18;;;29904:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;29969:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;30211:74:105;30301:18;;;30294:30;30360:1;30340:18;;;30333:29;30398:10;30378:18;;;30371:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;30426:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;30668:74:105;30758:18;;;30751:30;30817:1;30797:18;;;30790:29;30855:11;30835:18;;;30828:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;30884:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;13216:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;4729:4:93;;;:12;;13216:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;4789:4:93;;;:12;;13216:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;4849:4:93;;;:12;;13216:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;4909:4:93;;;:12;;13216:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;4969:4:93;;;:12;;13216:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5029:3:93;;;:11;;13216:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5088:8:93;;;:16;;13216:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5153:7:93;;;:15;;13216:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5214:4:93;;;:12;;13216:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5272:4:93;;;:12;;13216:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5330:4:93;;;:12;;13216:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5388:4:93;;;:12;;13216:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5446:4:93;;;:12;;13216:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5504:3:93;;;:11;;13216:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;13243:74:105;-1:-1:-1;;13333:18:105;;;13326:34;5561:8:93;;;:16;;13216:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7147:160::-;7217:14;7253:47;7277:6;7285;992:7;7253:23;:47::i;:::-;7243:57;7147:160;-1:-1:-1;;;7147:160:93:o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8711:::-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;11118:74:105;6180:7:93;;;:21;;11091:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;11118:74:105;6253:7:93;;;:21;;11091:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;11118:74:105;6323:7:93;;;:21;;11091:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;11118:74:105;6393:7:93;;;:21;;11091:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;11118:74:105;6463:7:93;;;:21;;11091:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;11118:74:105;6533:7:93;;;:21;;11091:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;11118:74:105;6602:7:93;;;:21;;11091:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;11118:74:105;6675:7:93;;;:21;;11091:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6085:628::o;6719:422::-;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;32399:6:105;32432:15;;6788:346:93;;;32414:34:105;1202:5:93;32464:18:105;;;32457:43;;;1262:2:93;32516:18:105;;;32509:43;1318:3:93;32568:18:105;;;32561:43;32620:19;;;32613:44;;;;1446:6:93;32700:19:105;;;32693:44;1508:5:93;32753:19:105;;;32746:44;1581:7:93;32806:19:105;;;32799:44;6788:7:93;32859:19:105;;;32852:51;-1:-1:-1;;;;;6788:7:93;;:17;;32361:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;:::o;7313:216::-;7410:14;7446:76;7480:6;7488;7496:7;1147:2;7446:33;:76::i;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;11136:55:105;;;27501:38:3;;;;11118:74:105;;;;27501:38:3;;;;;;;;;;11091:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;:60::-;27760:402;;27748:414;27416:752;;27331:837;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;7535:257:93:-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;33544:15:105;;;7729:54:93;;;33526:34:105;33596:15;;;33576:18;;;33569:43;;;;33660:8;33648:21;;33628:18;;;33621:49;33718:6;33706:19;;33686:18;;;33679:47;7674:14:93;;7729:7;;;;:20;;33437:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;:::-;10474:120;;:::o;10966:1095::-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;13261:55:105;;11664:18:8;;;13243:74:105;13333:18;;;13326:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;13216:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;35389:2:105;11725:175:8;;;35371:21:105;35428:3;35408:18;;;35401:31;35468:34;35448:18;;;35441:62;35539:34;35519:18;;;35512:62;35611:34;35590:19;;;35583:63;-1:-1:-1;;;35662:19:105;;;35655:46;35718:19;;11725:175:8;35187:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;35968:55:105;;11920:24:8;;;35950:74:105;36040:18;;;36033:34;;;36083:18;;;36076:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;35923:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;13395:393::-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;;-1:-1:-1;13775:6:8;13395:393;-1:-1:-1;;13395:393:8:o;9110:115::-;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;11136:55:105;;1990:25:8;;;11118:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;11091:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;13261:55:105;;;;13243:74;;13348:2;13333:18;;13326:34;13231:2;13216:18;;13061:305;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;13261:55:105;;;13243:74;;13333:18;;;13326:34;13216:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;35389:2:105;2268:187:8;;;35371:21:105;35428:3;35408:18;;;35401:31;35468:34;35448:18;;;35441:62;35539:34;35519:18;;;35512:62;35611:34;35590:19;;;35583:63;-1:-1:-1;;;35662:19:105;;;35655:46;35718:19;;2268:187:8;35187:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;36987:55:105;;;36969:74;;-1:-1:-1;;;;;;37079:33:105;;;37059:18;;;37052:61;;;;37129:18;;;37122:34;37187:2;37172:18;;37165:34;36956:3;36941:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;13261:55:105;;;;13243:74;;13348:2;13333:18;;13326:34;13231:2;13216:18;;13061:305;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;13261:55:105;;;13243:74;;13333:18;;;13326:34;13216:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;35968:55:105;;;3215:32:8;;;35950:74:105;36040:18;;;36033:34;36083:18;;;36076:34;;;35923:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;36987:55:105;;;36969:74;;-1:-1:-1;;;;;;37079:33:105;;;37059:18;;;37052:61;;;;37129:18;;;37122:34;37187:2;37172:18;;37165:34;36956:3;36941:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;35968:55:105;;;3941:29:8;;;35950:74:105;36040:18;;;36033:34;36083:18;;;36076:34;;;35923:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;-1:-1:-1;;;;;;;;;;;580:37:8;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;35968:55:105;;;4033:29:8;;;35950:74:105;36040:18;;;36033:34;36083:18;;;36076:34;;;35923:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;37412:2:105;4107:74:8;;;37394:21:105;37431:18;;;37424:30;;;;37490:34;37470:18;;;37463:62;37561:34;37541:18;;;37534:62;37613:19;;4107:74:8;37210:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;37845:2:105;4202:162:8;;;37827:21:105;37884:2;37864:18;;;37857:30;37923:34;37903:18;;;37896:62;37994:17;37974:18;;;37967:45;38029:19;;4202:162:8;37643:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:681;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:218;948:6;945:1;942:13;934:218;;;1013:13;;-1:-1:-1;;;;;1009:62:105;997:75;;1127:15;;;;1092:12;;;;970:1;963:9;934:218;;;-1:-1:-1;1169:3:105;;497:681;-1:-1:-1;;;;;;497:681:105:o;1183:250::-;1268:1;1278:113;1292:6;1289:1;1286:13;1278:113;;;1368:11;;;1362:18;1349:11;;;1342:39;1314:2;1307:10;1278:113;;;-1:-1:-1;;1425:1:105;1407:16;;1400:27;1183:250::o;1438:271::-;1480:3;1518:5;1512:12;1545:6;1540:3;1533:19;1561:76;1630:6;1623:4;1618:3;1614:14;1607:4;1600:5;1596:16;1561:76;:::i;:::-;1691:2;1670:15;-1:-1:-1;;1666:29:105;1657:39;;;;1698:4;1653:50;;1438:271;-1:-1:-1;;1438:271:105:o;1714:1765::-;1947:2;1999:21;;;2069:13;;1972:18;;;2091:22;;;1918:4;;1947:2;2132;;2150:18;;;;2187:1;2230:15;;;2215:31;;2211:40;;2274:15;;;1918:4;;2338:1112;2354:6;2349:3;2346:15;2338:1112;;;-1:-1:-1;;2423:22:105;;;2419:36;2407:49;;2479:13;;2566:9;;-1:-1:-1;;;;;2562:58:105;2547:74;;2660:11;;2654:18;2692:15;;;2685:27;;;2773:19;;2519:15;;;2805:24;;;2986:21;;;;2852:2;2934:17;;;2922:30;;2918:39;;;2876:15;;;;3031:1;3045:296;3061:8;3056:3;3053:17;3045:296;;;3167:2;3163:7;3154:6;3146;3142:19;3138:33;3131:5;3124:48;3199:42;3234:6;3223:8;3217:15;3199:42;:::i;:::-;3270:17;;;;3189:52;-1:-1:-1;3313:14:105;;;;3089:1;3080:11;3045:296;;;-1:-1:-1;;;3428:12:105;;;;3364:6;-1:-1:-1;;3393:15:105;;;;2380:1;2371:11;2338:1112;;;-1:-1:-1;3467:6:105;;1714:1765;-1:-1:-1;;;;;;;;;;1714:1765:105:o;3484:146::-;-1:-1:-1;;;;;3563:5:105;3559:46;3552:5;3549:57;3539:85;;3620:1;3617;3610:12;3635:247;3694:6;3747:2;3735:9;3726:7;3722:23;3718:32;3715:52;;;3763:1;3760;3753:12;3715:52;3802:9;3789:23;3821:31;3846:5;3821:31;:::i;3887:156::-;3953:20;;4013:4;4002:16;;3992:27;;3982:55;;4033:1;4030;4023:12;4048:252;4112:6;4120;4173:2;4161:9;4152:7;4148:23;4144:32;4141:52;;;4189:1;4186;4179:12;4141:52;4212:27;4229:9;4212:27;:::i;:::-;4202:37;;4258:36;4290:2;4279:9;4275:18;4258:36;:::i;:::-;4248:46;;4048:252;;;;;:::o;4487:1590::-;4689:4;4718:2;4758;4747:9;4743:18;4788:2;4777:9;4770:21;4811:6;4846;4840:13;4877:6;4869;4862:22;4903:2;4893:12;;4936:2;4925:9;4921:18;4914:25;;4998:2;4988:6;4985:1;4981:14;4970:9;4966:30;4962:39;5036:2;5028:6;5024:15;5057:1;5078;5088:960;5104:6;5099:3;5096:15;5088:960;;;5173:22;;;-1:-1:-1;;5169:36:105;5157:49;;5229:13;;5316:9;;-1:-1:-1;;;;;5312:58:105;5297:74;;5410:11;;5404:18;5442:15;;;5435:27;;;5523:19;;5269:15;;;5555:24;;;5645:21;;;;5690:1;;5613:2;5601:15;;;5704:236;5720:8;5715:3;5712:17;5704:236;;;5801:15;;-1:-1:-1;;;;;;5797:42:105;5783:57;;5909:17;;;;5748:1;5739:11;;;;;5866:14;;;;5704:236;;;-1:-1:-1;6026:12:105;;;;5963:5;-1:-1:-1;;;5991:15:105;;;;5130:1;5121:11;5088:960;;;-1:-1:-1;6065:6:105;;4487:1590;-1:-1:-1;;;;;;;;;4487:1590:105:o;6082:803::-;6244:4;6273:2;6313;6302:9;6298:18;6343:2;6332:9;6325:21;6366:6;6401;6395:13;6432:6;6424;6417:22;6470:2;6459:9;6455:18;6448:25;;6532:2;6522:6;6519:1;6515:14;6504:9;6500:30;6496:39;6482:53;;6570:2;6562:6;6558:15;6591:1;6601:255;6615:6;6612:1;6609:13;6601:255;;;6708:2;6704:7;6692:9;6684:6;6680:22;6676:36;6671:3;6664:49;6736:40;6769:6;6760;6754:13;6736:40;:::i;:::-;6726:50;-1:-1:-1;6834:12:105;;;;6799:15;;;;6637:1;6630:9;6601:255;;;-1:-1:-1;6873:6:105;;6082:803;-1:-1:-1;;;;;;;6082:803:105:o;6890:161::-;6957:20;;7017:8;7006:20;;6996:31;;6986:59;;7041:1;7038;7031:12;7056:322;7130:6;7138;7146;7199:2;7187:9;7178:7;7174:23;7170:32;7167:52;;;7215:1;7212;7205:12;7167:52;7238:28;7256:9;7238:28;:::i;:::-;7228:38;;7313:2;7302:9;7298:18;7285:32;7275:42;;7336:36;7368:2;7357:9;7353:18;7336:36;:::i;:::-;7326:46;;7056:322;;;;;:::o;7578:154::-;-1:-1:-1;;;;;7657:5:105;7653:54;7646:5;7643:65;7633:93;;7722:1;7719;7712:12;7737:898;7870:6;7878;7886;7894;7902;7910;7918;7926;7979:3;7967:9;7958:7;7954:23;7950:33;7947:53;;;7996:1;7993;7986:12;7947:53;8035:9;8022:23;8054:31;8079:5;8054:31;:::i;:::-;8104:5;-1:-1:-1;8161:2:105;8146:18;;8133:32;8174:33;8133:32;8174:33;:::i;:::-;8226:7;-1:-1:-1;8285:2:105;8270:18;;8257:32;8298:33;8257:32;8298:33;:::i;:::-;8350:7;-1:-1:-1;8376:37:105;8409:2;8394:18;;8376:37;:::i;:::-;8366:47;;8460:3;8449:9;8445:19;8432:33;8422:43;;8512:3;8501:9;8497:19;8484:33;8474:43;;8536:37;8568:3;8557:9;8553:19;8536:37;:::i;:::-;8526:47;;8592:37;8624:3;8613:9;8609:19;8592:37;:::i;:::-;8582:47;;7737:898;;;;;;;;;;;:::o;8640:272::-;8698:6;8751:2;8739:9;8730:7;8726:23;8722:32;8719:52;;;8767:1;8764;8757:12;8719:52;8806:9;8793:23;8856:6;8849:5;8845:18;8838:5;8835:29;8825:57;;8878:1;8875;8868:12;8917:829;9041:6;9049;9057;9065;9073;9081;9089;9142:3;9130:9;9121:7;9117:23;9113:33;9110:53;;;9159:1;9156;9149:12;9110:53;9198:9;9185:23;9217:31;9242:5;9217:31;:::i;:::-;9267:5;-1:-1:-1;9324:2:105;9309:18;;9296:32;9337:33;9296:32;9337:33;:::i;:::-;9389:7;-1:-1:-1;9448:2:105;9433:18;;9420:32;9461:33;9420:32;9461:33;:::i;:::-;9513:7;-1:-1:-1;9539:37:105;9572:2;9557:18;;9539:37;:::i;:::-;9529:47;;9623:3;9612:9;9608:19;9595:33;9585:43;;9647:37;9679:3;9668:9;9664:19;9647:37;:::i;:::-;9637:47;;9703:37;9735:3;9724:9;9720:19;9703:37;:::i;:::-;9693:47;;8917:829;;;;;;;;;;:::o;9751:380::-;9830:1;9826:12;;;;9873;;;9894:61;;9948:4;9940:6;9936:17;9926:27;;9894:61;10001:2;9993:6;9990:14;9970:18;9967:38;9964:161;;10047:10;10042:3;10038:20;10035:1;10028:31;10082:4;10079:1;10072:15;10110:4;10107:1;10100:15;9964:161;;9751:380;;;:::o;10440:519::-;10528:6;10536;10544;10597:2;10585:9;10576:7;10572:23;10568:32;10565:52;;;10613:1;10610;10603:12;10565:52;10645:9;10639:16;10664:31;10689:5;10664:31;:::i;:::-;10764:2;10749:18;;10743:25;10714:5;;-1:-1:-1;10777:33:105;10743:25;10777:33;:::i;:::-;10881:2;10866:18;;10860:25;10829:7;;-1:-1:-1;10894:33:105;10860:25;10894:33;:::i;:::-;10946:7;10936:17;;;10440:519;;;;;:::o;11546:164::-;11622:13;;11671;;11664:21;11654:32;;11644:60;;11700:1;11697;11690:12;11715:202;11782:6;11835:2;11823:9;11814:7;11810:23;11806:32;11803:52;;;11851:1;11848;11841:12;11803:52;11874:37;11901:9;11874:37;:::i;12242:184::-;12312:6;12365:2;12353:9;12344:7;12340:23;12336:32;12333:52;;;12381:1;12378;12371:12;12333:52;-1:-1:-1;12404:16:105;;12242:184;-1:-1:-1;12242:184:105:o;12620:127::-;12681:10;12676:3;12672:20;12669:1;12662:31;12712:4;12709:1;12702:15;12736:4;12733:1;12726:15;12752:148;12840:4;12819:12;;;12833;;;12815:31;;12858:13;;12855:39;;;12874:18;;:::i;12905:151::-;12995:4;12988:12;;;12974;;;12970:31;;13013:14;;13010:40;;;13030:18;;:::i;13578:125::-;13643:9;;;13664:10;;;13661:36;;;13677:18;;:::i;13708:128::-;13775:9;;;13796:11;;;13793:37;;;13810:18;;:::i;13841:267::-;13927:6;13980:2;13968:9;13959:7;13955:23;13951:32;13948:52;;;13996:1;13993;13986:12;13948:52;14028:9;14022:16;14047:31;14072:5;14047:31;:::i;14113:127::-;14174:10;14169:3;14165:20;14162:1;14155:31;14205:4;14202:1;14195:15;14229:4;14226:1;14219:15;14245:127;14306:10;14301:3;14297:20;14294:1;14287:31;14337:4;14334:1;14327:15;14361:4;14358:1;14351:15;14377:217;14417:1;14443;14433:132;;14487:10;14482:3;14478:20;14475:1;14468:31;14522:4;14519:1;14512:15;14550:4;14547:1;14540:15;14433:132;-1:-1:-1;14579:9:105;;14377:217::o;14599:127::-;14660:10;14655:3;14651:20;14648:1;14641:31;14691:4;14688:1;14681:15;14715:4;14712:1;14705:15;14731:135;14770:3;14791:17;;;14788:43;;14811:18;;:::i;:::-;-1:-1:-1;14858:1:105;14847:13;;14731:135::o;15404:854::-;15602:4;15650:2;15639:9;15635:18;-1:-1:-1;;;;;15753:2:105;15745:6;15741:15;15730:9;15723:34;15776:2;15814;15809;15798:9;15794:18;15787:30;15837:6;15872;15866:13;15903:6;15895;15888:22;15941:3;15930:9;15926:19;15919:26;;15980:2;15972:6;15968:15;15954:29;;16001:1;16011:169;16025:6;16022:1;16019:13;16011:169;;;16086:13;;16074:26;;16155:15;;;;16120:12;;;;16047:1;16040:9;16011:169;;;16015:3;;16197;16189:11;;;;16248:2;16240:6;16236:15;16231:2;16220:9;16216:18;16209:43;;;15404:854;;;;;;:::o;16263:275::-;16334:2;16328:9;16399:2;16380:13;;-1:-1:-1;;16376:27:105;16364:40;;16434:18;16419:34;;16455:22;;;16416:62;16413:88;;;16481:18;;:::i;:::-;16517:2;16510:22;16263:275;;-1:-1:-1;16263:275:105:o;16543:183::-;16603:4;16636:18;16628:6;16625:30;16622:56;;;16658:18;;:::i;:::-;-1:-1:-1;16703:1:105;16699:14;16715:4;16695:25;;16543:183::o;16731:1003::-;16844:6;16852;16860;16913:2;16901:9;16892:7;16888:23;16884:32;16881:52;;;16929:1;16926;16919:12;16881:52;16958:9;16952:16;16942:26;;16987:2;17029;17018:9;17014:18;17008:25;16998:35;;17077:2;17066:9;17062:18;17056:25;17104:18;17096:6;17093:30;17090:50;;;17136:1;17133;17126:12;17090:50;17159:22;;17212:4;17204:13;;17200:27;-1:-1:-1;17190:55:105;;17241:1;17238;17231:12;17190:55;17270:2;17264:9;17293:60;17309:43;17349:2;17309:43;:::i;:::-;17293:60;:::i;:::-;17387:15;;;17469:1;17465:10;;;;17457:19;;17453:28;;;17418:12;;;;17493:19;;;17490:39;;;17525:1;17522;17515:12;17490:39;17549:11;;;;17569:135;17585:6;17580:3;17577:15;17569:135;;;17651:10;;17639:23;;17602:12;;;;17682;;;;17569:135;;;17723:5;17713:15;;;;;;;16731:1003;;;;;:::o;17933:634::-;18063:6;18071;18079;18087;18095;18103;18111;18119;18172:3;18160:9;18151:7;18147:23;18143:33;18140:53;;;18189:1;18186;18179:12;18140:53;18218:9;18212:16;18202:26;;18268:2;18257:9;18253:18;18247:25;18237:35;;18312:2;18301:9;18297:18;18291:25;18281:35;;18356:2;18345:9;18341:18;18335:25;18325:35;;18400:3;18389:9;18385:19;18379:26;18369:36;;18445:3;18434:9;18430:19;18424:26;18414:36;;18490:3;18479:9;18475:19;18469:26;18459:36;;18514:47;18556:3;18545:9;18541:19;18514:47;:::i;19871:435::-;19924:3;19962:5;19956:12;19989:6;19984:3;19977:19;20015:4;20044:2;20039:3;20035:12;20028:19;;20081:2;20074:5;20070:14;20102:1;20112:169;20126:6;20123:1;20120:13;20112:169;;;20187:13;;20175:26;;20221:12;;;;20256:15;;;;20148:1;20141:9;20112:169;;;-1:-1:-1;20297:3:105;;19871:435;-1:-1:-1;;;;;19871:435:105:o;20311:688::-;20587:4;-1:-1:-1;;;;;20697:2:105;20689:6;20685:15;20674:9;20667:34;20749:2;20741:6;20737:15;20732:2;20721:9;20717:18;20710:43;;20789:3;20784:2;20773:9;20769:18;20762:31;20816:57;20868:3;20857:9;20853:19;20845:6;20816:57;:::i;:::-;20921:9;20913:6;20909:22;20904:2;20893:9;20889:18;20882:50;20949:44;20986:6;20978;20949:44;:::i;:::-;20941:52;20311:688;-1:-1:-1;;;;;;;20311:688:105:o;21004:659::-;21069:5;21122:3;21115:4;21107:6;21103:17;21099:27;21089:55;;21140:1;21137;21130:12;21089:55;21169:6;21163:13;21195:4;21219:60;21235:43;21275:2;21235:43;:::i;21219:60::-;21313:15;;;21399:1;21395:10;;;;21383:23;;21379:32;;;21344:12;;;;21423:15;;;21420:35;;;21451:1;21448;21441:12;21420:35;21487:2;21479:6;21475:15;21499:135;21515:6;21510:3;21507:15;21499:135;;;21581:10;;21569:23;;21612:12;;;;21532;;21499:135;;;-1:-1:-1;21652:5:105;21004:659;-1:-1:-1;;;;;;21004:659:105:o;21668:363::-;21763:6;21816:2;21804:9;21795:7;21791:23;21787:32;21784:52;;;21832:1;21829;21822:12;21784:52;21865:9;21859:16;21898:18;21890:6;21887:30;21884:50;;;21930:1;21927;21920:12;21884:50;21953:72;22017:7;22008:6;21997:9;21993:22;21953:72;:::i;22036:338::-;-1:-1:-1;;;;;22215:6:105;22211:55;22200:9;22193:74;22303:2;22298;22287:9;22283:18;22276:30;22174:4;22323:45;22364:2;22353:9;22349:18;22341:6;22323:45;:::i;30914:362::-;31119:6;31108:9;31101:25;31162:6;31157:2;31146:9;31142:18;31135:34;31205:2;31200;31189:9;31185:18;31178:30;31082:4;31225:45;31266:2;31255:9;31251:18;31243:6;31225:45;:::i;32914:287::-;33043:3;33081:6;33075:13;33097:66;33156:6;33151:3;33144:4;33136:6;33132:17;33097:66;:::i;:::-;33179:16;;;;;32914:287;-1:-1:-1;;32914:287:105:o;34010:384::-;-1:-1:-1;;;;;;34195:33:105;;34183:46;;34252:13;;34165:3;;34274:74;34252:13;34337:1;34328:11;;34321:4;34309:17;;34274:74;:::i;:::-;34368:16;;;;34386:1;34364:24;;34010:384;-1:-1:-1;;;34010:384:105:o;34399:610::-;34645:13;;34588:3;;34619;;34698:4;34725:15;;;34588:3;34768:175;34782:6;34779:1;34776:13;34768:175;;;34845:13;;34831:28;;34881:14;;;;34918:15;;;;34804:1;34797:9;34768:175;;;-1:-1:-1;;34952:21:105;;;-1:-1:-1;34989:14:105;;;;;-1:-1:-1;;;34399:610:105:o;35014:168::-;35087:9;;;35118;;35135:15;;;35129:22;;35115:37;35105:71;;35156:18;;:::i;36121:614::-;36250:6;36258;36311:2;36299:9;36290:7;36286:23;36282:32;36279:52;;;36327:1;36324;36317:12;36279:52;36360:9;36354:16;36389:18;36430:2;36422:6;36419:14;36416:34;;;36446:1;36443;36436:12;36416:34;36469:72;36533:7;36524:6;36513:9;36509:22;36469:72;:::i;:::-;36459:82;;36587:2;36576:9;36572:18;36566:25;36550:41;;36616:2;36606:8;36603:16;36600:36;;;36632:1;36629;36622:12;36600:36;;36655:74;36721:7;36710:8;36699:9;36695:24;36655:74;:::i;:::-;36645:84;;;36121:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":1029,"length":32},{"start":15467,"length":32}],"91790":[{"start":2007,"length":32},{"start":2077,"length":32},{"start":2358,"length":32},{"start":2607,"length":32},{"start":2821,"length":32},{"start":3591,"length":32},{"start":3661,"length":32},{"start":3942,"length":32},{"start":4191,"length":32},{"start":4405,"length":32},{"start":5167,"length":32},{"start":5237,"length":32},{"start":5518,"length":32},{"start":5767,"length":32},{"start":5981,"length":32},{"start":6192,"length":32},{"start":6250,"length":32},{"start":6312,"length":32},{"start":6687,"length":32},{"start":6834,"length":32},{"start":7210,"length":32},{"start":9951,"length":32},{"start":10510,"length":32},{"start":10580,"length":32},{"start":10861,"length":32},{"start":11110,"length":32},{"start":11324,"length":32},{"start":11535,"length":32},{"start":11600,"length":32},{"start":11669,"length":32},{"start":12051,"length":32},{"start":12198,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_SwapInForX(uint128)":"452fa407","testFuzz_SwapInForY(uint128)":"c25372dd","testFuzz_SwapOutForX(uint128)":"307dd6e2","testFuzz_SwapOutForY(uint128)":"4cf8f44d","test_revert_SwapInsufficientAmountIn()":"bd00b4db","test_revert_SwapInsufficientAmountOut()":"5d0f2d8a","test_revert_SwapOutOfLiquidity()":"cf968839"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapInForX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapInForY\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapOutForX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"}],\"name\":\"testFuzz_SwapOutForY\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_SwapInsufficientAmountIn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_SwapInsufficientAmountOut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_SwapOutOfLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBPairSwap.t.sol\":\"LBPairSwapTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBPairSwap.t.sol\":{\"keccak256\":\"0x20f197d68ef47a2700568452ae5addeda8f6197e03003994cf07be110d062168\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3021d015fa60f90a7b769451e562d1eebbdcb1ca9dd0b086e0e1f49b22b58f4\",\"dweb:/ipfs/QmNtvJeVxfB4V5wrY3KD97qt8x1q9uifPzY5sPhDZC2BqH\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint128","name":"amountOut","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapInForX"},{"inputs":[{"internalType":"uint128","name":"amountOut","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapInForY"},{"inputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapOutForX"},{"inputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SwapOutForY"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_SwapInsufficientAmountIn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_SwapInsufficientAmountOut"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_SwapOutOfLiquidity"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBPairSwap.t.sol":"LBPairSwapTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBPairSwap.t.sol":{"keccak256":"0x20f197d68ef47a2700568452ae5addeda8f6197e03003994cf07be110d062168","urls":["bzz-raw://a3021d015fa60f90a7b769451e562d1eebbdcb1ca9dd0b086e0e1f49b22b58f4","dweb:/ipfs/QmNtvJeVxfB4V5wrY3KD97qt8x1q9uifPzY5sPhDZC2BqH"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":90} \ No newline at end of file diff --git a/abi/LBQuoter.sol/LBQuoter.json b/abi/LBQuoter.sol/LBQuoter.json deleted file mode 100644 index 37debdb7..00000000 --- a/abi/LBQuoter.sol/LBQuoter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"factoryV1","type":"address","internalType":"address"},{"name":"factoryV2","type":"address","internalType":"address"},{"name":"routerV2","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"findBestPathFromAmountIn","inputs":[{"name":"route","type":"address[]","internalType":"address[]"},{"name":"amountIn","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"quote","type":"tuple","internalType":"struct LBQuoter.Quote","components":[{"name":"route","type":"address[]","internalType":"address[]"},{"name":"pairs","type":"address[]","internalType":"address[]"},{"name":"binSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"amounts","type":"uint128[]","internalType":"uint128[]"},{"name":"virtualAmountsWithoutSlippage","type":"uint128[]","internalType":"uint128[]"},{"name":"fees","type":"uint128[]","internalType":"uint128[]"}]}],"stateMutability":"view"},{"type":"function","name":"findBestPathFromAmountOut","inputs":[{"name":"route","type":"address[]","internalType":"address[]"},{"name":"amountOut","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"quote","type":"tuple","internalType":"struct LBQuoter.Quote","components":[{"name":"route","type":"address[]","internalType":"address[]"},{"name":"pairs","type":"address[]","internalType":"address[]"},{"name":"binSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"amounts","type":"uint128[]","internalType":"uint128[]"},{"name":"virtualAmountsWithoutSlippage","type":"uint128[]","internalType":"uint128[]"},{"name":"fees","type":"uint128[]","internalType":"uint128[]"}]}],"stateMutability":"view"},{"type":"function","name":"getFactoryV1","inputs":[],"outputs":[{"name":"factoryV1","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getFactoryV2","inputs":[],"outputs":[{"name":"factoryV2","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getRouterV2","inputs":[],"outputs":[{"name":"routerV2","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"error","name":"LBQuoter_InvalidLength","inputs":[]},{"type":"error","name":"SafeCast__Exceeds128Bits","inputs":[]},{"type":"error","name":"SovrynLBLibrary__AddressZero","inputs":[]},{"type":"error","name":"SovrynLBLibrary__IdenticalAddresses","inputs":[]},{"type":"error","name":"SovrynLBLibrary__InsufficientAmount","inputs":[]},{"type":"error","name":"SovrynLBLibrary__InsufficientLiquidity","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]},{"type":"error","name":"Uint256x256Math__MulShiftOverflow","inputs":[]}],"bytecode":{"object":"0x60e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033","sourceMap":"1230:12990:44:-:0;;;2447:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2555:22:44;;;;;2587;;;;;2619:20;;;1230:12990;;14:177:105;93:13;;-1:-1:-1;;;;;135:31:105;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:378::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;519:49;564:2;553:9;549:18;519:49;:::i;:::-;509:59;;196:378;;;;;:::o;:::-;1230:12990:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033","sourceMap":"1230:12990:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2766:103;2852:10;2766:103;;;-1:-1:-1;;;;;178:55:105;;;160:74;;148:2;133:18;2766:103:44;;;;;;;;3623:4136;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3217:99::-;3300:9;3217:99;;8069:4442;;;;;;:::i;:::-;;:::i;2993:103::-;3079:10;2993:103;;3623:4136;3746:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3746:18:44;3799:1;3784:16;;3780:78;;;3823:24;;-1:-1:-1;;;3823:24:44;;;;;;;;;;;3780:78;3882:5;;3868:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3868:19:44;;;-1:-1:-1;3919:16:44;;-1:-1:-1;3934:1:44;;-1:-1:-1;3919:5:44;:16;:::i;:::-;3898:37;;3973:10;3959:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3959:25:44;-1:-1:-1;3945:11:44;;;:39;4025:10;4011:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4011:25:44;-1:-1:-1;3994:14:44;;;:42;4087:10;4063:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4063:35:44;-1:-1:-1;4046:14:44;;;:52;4135:10;4121:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4121:25:44;-1:-1:-1;4108:10:44;;;:38;4186:5;4172:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4172:27:44;-1:-1:-1;4156:13:44;;;:43;4261:5;4247:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4247:27:44;;4209:5;:35;;:65;;;;4304:8;4285:5;:13;;;4299:1;4285:16;;;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1;;;;;4285:27:44;;;-1:-1:-1;;;;;4285:27:44;;;;;4363:8;4322:5;:35;;;4358:1;4322:38;;;;;;;;:::i;:::-;;;;;;:49;-1:-1:-1;;;;;4322:49:44;;;-1:-1:-1;;;;;4322:49:44;;;;;4387:9;4382:3371;4402:10;4398:1;:14;4382:3371;;;4437:10;-1:-1:-1;;;;;4437:24:44;;4433:2081;;4521:54;4609:10;-1:-1:-1;;;;;4598:36:44;;4642:5;;4648:1;4642:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4660:5;;4666;:1;4670;4666:5;:::i;:::-;4660:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4598:76;;-1:-1:-1;;;;;;4598:76:44;;;;;;;-1:-1:-1;;;;;6293:15:105;;;4598:76:44;;;6275:34:105;6345:15;;6325:18;;;6318:43;6187:18;;4598:76:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4598:76:44;;;;;;;;;;;;:::i;:::-;4521:153;;4723:1;4697:16;:23;:27;:51;;;;;4747:1;4728:5;:13;;;4742:1;4728:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4728:20:44;;4697:51;4693:1807;;;4777:9;4772:1710;4792:16;:23;4788:1;:27;4772:1710;;;4853:16;4870:1;4853:19;;;;;;;;:::i;:::-;;;;;;;:37;;;4848:1612;;4922:13;4989:5;;4995;:1;4999;4995:5;:::i;:::-;4989:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4938:63:44;4946:16;4963:1;4946:19;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;4946:36:44;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4938:63:44;;4922:79;;5046:9;-1:-1:-1;;;;;5036:31:44;;5101:16;5118:1;5101:19;;;;;;;;:::i;:::-;;;;;;;:26;;;5129:5;:13;;;5143:1;5129:16;;;;;;;;:::i;:::-;;;;;;;;;;;5036:149;;-1:-1:-1;;;;;;5036:149:44;;;;;;;-1:-1:-1;;;;;9280:55:105;;;5036:149:44;;;9262:74:105;-1:-1:-1;;;;;9372:47:105;9352:18;;;9345:75;9463:14;;9456:22;9436:18;;;9429:50;9235:18;;5036:149:44;;;;;;;;;;;;;;;;;;-1:-1:-1;5036:149:44;;;;;;;;-1:-1:-1;;5036:149:44;;;;;;;;;;;;:::i;:::-;;;5032:1402;;;-1:-1:-1;;;;;5292:17:44;;;:57;;;;-1:-1:-1;5329:13:44;;;;5343:5;:1;5347;5343:5;:::i;:::-;5329:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5313:36:44;:13;-1:-1:-1;;;;;5313:36:44;;5292:57;5288:1107;;;5389:13;;;;5412;;5403:5;:1;5407;5403:5;:::i;:::-;5389:20;;;;;;;;:::i;:::-;;;;;;:36;-1:-1:-1;;;;;5389:36:44;;;-1:-1:-1;;;;;5389:36:44;;;;;5488:16;5505:1;5488:19;;;;;;;;:::i;:::-;;;;;;;:26;;;5463:5;:11;;;5475:1;5463:14;;;;;;;;:::i;:::-;;;;;;:52;-1:-1:-1;;;;;5463:52:44;;;-1:-1:-1;;;;;5463:52:44;;;;;5580:16;5597:1;5580:19;;;;;;;;:::i;:::-;;;;;;;:27;;;5553:55;;:5;:14;;;5568:1;5553:17;;;;;;;;:::i;:::-;;;;;;:55;;;;;5666:20;5646:5;:14;;;5661:1;5646:17;;;;;;;;:::i;:::-;;;;;;:40;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;5786:15;5804:16;5821:1;5804:19;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;5804:38:44;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5786:58;;5927:295;6021:4;5980:5;:35;;;6016:1;5980:38;;;;;;;;:::i;:::-;;;;;;;:45;;;;:::i;:::-;-1:-1:-1;;;;;5927:295:44;6067:8;6117:5;:14;;;6132:1;6117:17;;;;;;;;:::i;:::-;;;;;;;6176:8;5927:11;:295::i;:::-;5882:35;;;;5918:5;:1;5922;5918:5;:::i;:::-;5882:42;;;;;;;;:::i;:::-;;;;;;:340;-1:-1:-1;;;;;5882:340:44;;;-1:-1:-1;;;;;5882:340:44;;;;;6277:53;6303:5;:13;;;6317:1;6303:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6278:41:44;6287:4;-1:-1:-1;;;;;6279:13:44;6295:4;6279:20;;;;:::i;:::-;6278:41;;;;:::i;:::-;6277:51;:53::i;:::-;6261:5;:10;;;6272:1;6261:13;;;;;;;;:::i;:::-;;;;;;:69;-1:-1:-1;;;;;6261:69:44;;;-1:-1:-1;;;;;6261:69:44;;;;;5351:1044;5288:1107;5186:1239;;;5032:1402;4892:1568;4848:1612;4817:3;;;;:::i;:::-;;;;4772:1710;;;;4693:1807;4463:2051;4433:2081;6565:10;-1:-1:-1;;;;;6565:24:44;;6561:1182;;6609:12;6643:10;-1:-1:-1;;;;;6624:38:44;;6663:5;;6669:1;6663:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6673:5;;6679;:1;6683;6679:5;:::i;:::-;6673:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6624:62;;-1:-1:-1;;;;;;6624:62:44;;;;;;;-1:-1:-1;;;;;6293:15:105;;;6624:62:44;;;6275:34:105;6345:15;;6325:18;;;6318:43;6187:18;;6624:62:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6609:77;-1:-1:-1;;;;;;6709:18:44;;;;;;:42;;;6750:1;6731:5;:13;;;6745:1;6731:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6731:20:44;;6709:42;6705:1024;;;6776:17;6795:18;6817:42;6830:4;6836:5;;6842:1;6836:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6846:5;;6852;:1;6856;6852:5;:::i;:::-;6846:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6817;:42::i;:::-;6775:84;;;;6898:1;6886:9;:13;:31;;;;;6916:1;6903:10;:14;6886:31;6882:829;;;6945:21;6969:69;6998:5;:13;;;7012:1;6998:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6969:69:44;7016:9;7027:10;6969:28;:69::i;:::-;7085:13;;;;6945:93;;-1:-1:-1;7099:5:44;:1;7103;7099:5;:::i;:::-;7085:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7069:36:44;:13;:36;7065:624;;;7160:23;:13;:21;:23::i;:::-;7137:13;;;;7151:5;:1;7155;7151:5;:::i;:::-;7137:20;;;;;;;;:::i;:::-;;;;;;:46;-1:-1:-1;;;;;7137:46:44;;;-1:-1:-1;;;;;7137:46:44;;;;;7230:4;7213:5;:11;;;7225:1;7213:14;;;;;;;;:::i;:::-;;;;;;:21;-1:-1:-1;;;;;7213:21:44;;;-1:-1:-1;;;;;7213:21:44;;;;;7309:169;:159;7364:5;:35;;;7400:1;7364:38;;;;;;;;:::i;:::-;;;;;;;7405:3;7364:44;;;;:::i;:::-;-1:-1:-1;;;;;7309:159:44;7410:16;:9;7422:4;7410:16;:::i;:::-;7428:10;7309:21;:159::i;:169::-;7264:35;;;;7300:5;:1;7304;7300:5;:::i;:::-;7264:42;;;;;;;;:::i;:::-;;;;;;:214;-1:-1:-1;;;;;7264:214:44;;;-1:-1:-1;;;;;7264:214:44;;;;;7525:8;7509:5;:10;;;7520:1;7509:13;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;7509:24:44;;;-1:-1:-1;;;;;7509:24:44;;;;;7591:20;7571:5;:14;;;7586:1;7571:17;;;;;;;;:::i;:::-;;;;;;:40;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;7661:1;7641:5;:14;;;7656:1;7641:17;;;;;;;;:::i;:::-;;;;;;:21;;;;;7065:624;6919:792;6882:829;6753:976;;6705:1024;6591:1152;6561:1182;4414:3;;;;:::i;:::-;;;;4382:3371;;;;3770:3989;3623:4136;;;;;:::o;8069:4442::-;8194:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8194:18:44;8247:1;8232:16;;8228:78;;;8271:24;;-1:-1:-1;;;8271:24:44;;;;;;;;;;;8228:78;8329:5;;8315:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8315:19:44;;;-1:-1:-1;8366:16:44;;-1:-1:-1;8381:1:44;;-1:-1:-1;8366:5:44;:16;:::i;:::-;8345:37;;8420:10;8406:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8406:25:44;-1:-1:-1;8392:11:44;;;:39;8472:10;8458:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8458:25:44;-1:-1:-1;8441:14:44;;;:42;8534:10;8510:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8510:35:44;-1:-1:-1;8493:14:44;;;:52;8585:5;8571:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8571:27:44;-1:-1:-1;8555:13:44;;;:43;8660:5;8646:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8646:27:44;-1:-1:-1;8608:35:44;;;:65;8710:10;8696:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8696:25:44;;8683:5;:10;;:38;;;;8760:9;8732:5;:13;;;8746:10;8732:25;;;;;;;;:::i;:::-;;;;;;:37;-1:-1:-1;;;;;8732:37:44;;;-1:-1:-1;;;;;8732:37:44;;;;;8829:9;8779:5;:35;;;8815:10;8779:47;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8779:59:44;;;:47;;;;;;;;;;;:59;8866:10;8849:3656;8878:5;;8849:3656;;8908:10;-1:-1:-1;;;;;8908:24:44;;8904:2227;;8992:54;-1:-1:-1;;;;;9080:10:44;9069:36;;9113:5;;9119;9123:1;9119;:5;:::i;:::-;9113:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9135:5;;9141:1;9135:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9069:76;;-1:-1:-1;;;;;;9069:76:44;;;;;;;-1:-1:-1;;;;;6293:15:105;;;9069:76:44;;;6275:34:105;6345:15;;6325:18;;;6318:43;6187:18;;9069:76:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9069:76:44;;;;;;;;;;;;:::i;:::-;8992:153;;9194:1;9168:16;:23;:27;:51;;;;;9218:1;9199:5;:13;;;9213:1;9199:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9199:20:44;;9168:51;9164:1953;;;9248:9;9243:1856;9263:16;:23;9259:1;:27;9243:1856;;;9324:16;9341:1;9324:19;;;;;;;;:::i;:::-;;;;;;;:37;;;9319:1758;;9393:13;9460:5;;9466:1;9460:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9409:59:44;9417:16;9434:1;9417:19;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;9417:36:44;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9409:59:44;;9393:75;;9512:9;-1:-1:-1;;;;;9502:30:44;;9533:16;9550:1;9533:19;;;;;;;;:::i;:::-;;;;;;;:26;;;9561:5;:13;;;9575:1;9561:16;;;;;;;;:::i;:::-;;;;;;;;;;;9502:86;;-1:-1:-1;;;;;;9502:86:44;;;;;;;-1:-1:-1;;;;;9280:55:105;;;9502:86:44;;;9262:74:105;-1:-1:-1;;;;;9372:47:105;9352:18;;;9345:75;9463:14;;9456:22;9436:18;;;9429:50;9235:18;;9502:86:44;;;;;;;;;;;;;;;;;;-1:-1:-1;9502:86:44;;;;;;;;-1:-1:-1;;9502:86:44;;;;;;;;;;;;:::i;:::-;;;9498:1553;;;-1:-1:-1;;;;;9760:18:44;;;:39;;;;-1:-1:-1;;;;;;9782:17:44;;;;9760:39;:149;;;;-1:-1:-1;9859:13:44;;;;9873:5;9877:1;9873;:5;:::i;:::-;9859:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9844:35:44;:12;-1:-1:-1;;;;;9844:35:44;;:64;;;-1:-1:-1;9883:13:44;;;;9897:5;9901:1;9897;:5;:::i;:::-;9883:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9883:25:44;9907:1;9883:25;9844:64;9719:1293;;;9982:13;;;;10005:12;;9996:5;10000:1;9996;:5;:::i;:::-;9982:20;;;;;;;;:::i;:::-;;;;;;:35;-1:-1:-1;;;;;9982:35:44;;;-1:-1:-1;;;;;9982:35:44;;;;;10084:16;10101:1;10084:19;;;;;;;;:::i;:::-;;;;;;;:26;;;10055:5;:11;;;10071:1;10067;:5;;;;:::i;:::-;10055:18;;;;;;;;:::i;:::-;;;;;;:56;-1:-1:-1;;;;;10055:56:44;;;-1:-1:-1;;;;;10055:56:44;;;;;10180:16;10197:1;10180:19;;;;;;;;:::i;:::-;;;;;;;:27;;;10149:59;;:5;:14;;;10168:1;10164;:5;;;;:::i;:::-;10149:21;;;;;;;;:::i;:::-;;;;;;;;;;:59;10246:14;;;;10270:20;;10261:5;10270:20;10261:1;:5;:::i;:::-;10246:21;;;;;;;;:::i;:::-;;;;;;:44;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;10390:15;10408:16;10425:1;10408:19;;;;;;;;:::i;:::-;;;;;;;:26;;;-1:-1:-1;;;;;10408:38:44;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10390:58;;10827:4;10531:293;10584:5;:35;;;10620:1;10584:38;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10531:293:44;10664:8;10714:5;:14;;;10733:1;10729;:5;;;;:::i;:::-;10714:21;;;;;;;;:::i;:::-;;;;;;;10778:8;10777:9;10531:11;:293::i;:::-;:300;;;;:::i;:::-;10486:35;;;;10522:5;10526:1;10522;:5;:::i;:::-;10486:42;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10486:345:44;;;:42;;;;;;;;;;;:345;10916:13;;;;10890:57;;10930:5;10934:1;10930;:5;:::i;:::-;10916:20;;;;;;;;:::i;10890:57::-;10870:10;;;;10881:5;10885:1;10881;:5;:::i;:::-;10870:17;;;;;;;;:::i;:::-;;;;;;:77;-1:-1:-1;;;;;10870:77:44;;;-1:-1:-1;;;;;10870:77:44;;;;;9944:1068;9719:1293;9617:1425;;;9498:1553;9363:1714;9319:1758;9288:3;;;;:::i;:::-;;;;9243:1856;;;;9164:1953;8934:2197;8904:2227;11149:10;-1:-1:-1;;;;;11149:24:44;;11145:1350;;11230:12;-1:-1:-1;;;;;11264:10:44;11245:38;;11284:5;;11290;11294:1;11290;:5;:::i;:::-;11284:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11298:5;;11304:1;11298:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11245:62;;-1:-1:-1;;;;;;11245:62:44;;;;;;;-1:-1:-1;;;;;6293:15:105;;;11245:62:44;;;6275:34:105;6345:15;;6325:18;;;6318:43;6187:18;;11245:62:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11230:77;-1:-1:-1;;;;;;11329:18:44;;;;;;:42;;;11370:1;11351:5;:13;;;11365:1;11351:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11351:20:44;;11329:42;11325:1156;;;11396:17;;11437:42;11450:4;11456:5;;11462;11466:1;11462;:5;:::i;:::-;11456:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11470:5;;11476:1;11470:8;;;;;;;:::i;11437:42::-;11395:84;;;;11518:1;11506:9;:13;:46;;;;;11536:5;:13;;;11550:1;11536:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11523:29:44;:10;:29;11506:46;11502:961;;;11580:20;11603:68;11631:5;:13;;;11645:1;11631:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11603:68:44;11649:9;11660:10;11603:27;:68::i;:::-;11717:13;;;;11580:91;;-1:-1:-1;11731:5:44;11735:1;11731;:5;:::i;:::-;11717:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11702:35:44;:12;:35;:64;;;-1:-1:-1;11741:13:44;;;;11755:5;11759:1;11755;:5;:::i;:::-;11741:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11741:25:44;11765:1;11741:25;11702:64;11698:743;;;11821:22;:12;:20;:22::i;:::-;11798:13;;;;11812:5;11816:1;11812;:5;:::i;:::-;11798:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11798:45:44;;;:20;;;;;;;;;;:45;11873:11;;;11894:4;;11885:5;11889:1;11885;:5;:::i;:::-;11873:18;;;;;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;11873:25:44;;;-1:-1:-1;;;;;11873:25:44;;;;;11973:245;12007:167;12066:5;:35;;;12102:1;12066:38;;;;;;;;:::i;:::-;;;;;;;12107:4;12066:45;;;;:::i;:::-;-1:-1:-1;;;;;12007:167:44;12113:16;:10;12126:3;12113:16;:::i;:::-;12131:9;12007:21;:167::i;:::-;:171;;12177:1;12007:171;:::i;11973:245::-;11928:35;;;;11964:5;11968:1;11964;:5;:::i;:::-;11928:42;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11928:290:44;;;:42;;;;;;;;;;;:290;12249:10;;;;12269:8;;12260:5;12264:1;12260;:5;:::i;:::-;12249:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12249:28:44;;;:17;;;;;;;;;;;:28;12315:14;;;;12339:20;;12330:5;12334:1;12330;:5;:::i;:::-;12315:21;;;;;;;;:::i;:::-;;;;;;:44;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;12389:14:44;;;;12413:1;;12404:5;12408:1;12404;:5;:::i;:::-;12389:21;;;;;;;;:::i;:::-;;;;;;:25;;;;;11698:743;11554:909;11502:961;11373:1108;;11325:1156;11175:1320;11145:1350;8885:3;;;;:::i;:::-;;;;8849:3656;;13678:540;13811:13;13844:8;13840:372;;;13876:143;:133;13965:6;258:3:64;13876:53:44;13903:8;13920:7;13876:26;:53::i;:::-;:71;:133;:71;:133::i;:143::-;13868:151;;13840:372;;;14058:143;:133;258:3:64;14124:53:44;14151:8;14168:7;14124:26;:53::i;:::-;14058:6;;:133;:24;:133::i;:143::-;14050:151;;13840:372;13678:540;;;;;;:::o;6249:139:78:-;6345:1;-1:-1:-1;;;;;6325:21:78;;;;6321:60;;6355:26;;-1:-1:-1;;;6355:26:78;;;;;;;;;;;6321:60;6249:139;;;:::o;12864:414:44:-;12979:16;12997;13030:14;13049:42;13076:6;13084;13049:26;:42::i;:::-;13029:62;;;13102:16;13120;13157:4;-1:-1:-1;;;;;13141:33:44;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13101:75;;;;;;;;;13219:6;-1:-1:-1;;;;;13209:16:44;:6;-1:-1:-1;;;;;13209:16:44;;:62;;13252:8;13262;13209:62;;;13229:8;13239;13209:62;13186:85;;;;-1:-1:-1;12864:414:44;-1:-1:-1;;;;;;;12864:414:44:o;1455:544:72:-;1581:17;1618:8;1630:1;1618:13;1614:63;;1640:37;;-1:-1:-1;;;1640:37:72;;;;;;;;;;;1614:63;1691:14;;;:33;;-1:-1:-1;1709:15:72;;1691:33;1687:86;;;1733:40;;-1:-1:-1;;;1733:40:72;;;;;;;;;;;1687:86;1783:23;1809:14;:8;1820:3;1809:14;:::i;:::-;1783:40;-1:-1:-1;1833:17:72;1853:28;1871:10;1783:40;1853:28;:::i;:::-;1833:48;-1:-1:-1;1891:19:72;1932:15;1913:16;:9;1925:4;1913:16;:::i;:::-;:34;;;;:::i;:::-;1891:56;-1:-1:-1;1969:23:72;1891:56;1969:9;:23;:::i;:::-;1957:35;1455:544;-1:-1:-1;;;;;;;1455:544:72:o;1005:331::-;1096:15;1127:7;1138:1;1127:12;1123:62;;1148:37;;-1:-1:-1;;;1148:37:72;;;;;;;;;;;1123:62;1199:13;;;:30;;-1:-1:-1;1216:13:72;;1199:30;1195:83;;;1238:40;;-1:-1:-1;;;1238:40:72;;;;;;;;;;;1195:83;1321:8;1299:18;1309:8;1299:7;:18;:::i;:::-;1298:31;;;;:::i;2117:493::-;2243:16;2279:9;2292:1;2279:14;2275:64;;2302:37;;-1:-1:-1;;;2302:37:72;;;;;;;;;;;2275:64;2353:14;;;:33;;-1:-1:-1;2371:15:72;;2353:33;2349:86;;;2395:40;;-1:-1:-1;;;2395:40:72;;;;;;;;;;;2349:86;2445:17;2465:21;2477:9;2465;:21;:::i;:::-;:28;;2489:4;2465:28;:::i;:::-;2445:48;-1:-1:-1;2503:19:72;2526:22;2539:9;2526:10;:22;:::i;:::-;2525:30;;2552:3;2525:30;:::i;:::-;2503:52;-1:-1:-1;2576:23:72;2503:52;2576:9;:23;:::i;:::-;:27;;2602:1;2576:27;:::i;:::-;2565:38;2117:493;-1:-1:-1;;;;;;2117:493:72:o;812:217:70:-;886:13;623:6:64;1824:42:70;258:3:64;1824:42:70;;;;1823:72;-1:-1:-1;;;1805:90:70;2185:11;;;-1:-1:-1;;2178:35:70;1004:18;1805:90;2178:35;1004:8;:18::i;:::-;996:26;812:217;-1:-1:-1;;;;;812:217:70:o;2641:485:82:-;2727:14;2754:13;2769;2786:18;2799:1;2802;2786:12;:18::i;:::-;2753:51;;;;2819:5;2828:1;2819:10;2815:40;;2849:6;2840:15;;:5;:15;;2831:24;;2815:40;2869:10;;2865:255;;2964:1;:11;;;;2955:20;;2951:68;;2984:35;;-1:-1:-1;;;2984:35:82;;;;;;;;;;;2951:68;3088:6;3082:12;;:3;:12;3072:23;;:5;:23;;3062:33;;;;2743:383;;2641:485;;;;;:::o;4594:437::-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;550:345:72:-;625:14;641;681:6;-1:-1:-1;;;;;671:16:72;:6;-1:-1:-1;;;;;671:16:72;;667:66;;696:37;;-1:-1:-1;;;696:37:72;;;;;;;;;;;667:66;771:6;-1:-1:-1;;;;;762:15:72;:6;-1:-1:-1;;;;;762:15:72;;:53;;800:6;808;762:53;;;781:6;789;762:53;743:72;;-1:-1:-1;743:72:72;-1:-1:-1;;;;;;829:20:72;;825:63;;858:30;;-1:-1:-1;;;858:30:72;;;;;;;;;;;825:63;550:345;;;;;:::o;4113:3600:81:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:64;-1:-1:-1;4252:22:81;;-1:-1:-1;4252:22:81;4240:34;-1:-1:-1;4316:1:81;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:64;-1:-1:-1;4574:1:81;-1:-1:-1;;;;;4595:41:81;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:81;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:81;;;;;13199:25:105;;;13240:18;;;13233:34;;;13172:18;;7609:35:81;;;;;;;7585:59;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:81;:::i;4113:3600::-;;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;245:146:105:-;-1:-1:-1;;;;;324:5:105;320:46;313:5;310:57;300:85;;381:1;378;371:12;300:85;245:146;:::o;396:756::-;491:6;499;507;560:2;548:9;539:7;535:23;531:32;528:52;;;576:1;573;566:12;528:52;616:9;603:23;645:18;686:2;678:6;675:14;672:34;;;702:1;699;692:12;672:34;740:6;729:9;725:22;715:32;;785:7;778:4;774:2;770:13;766:27;756:55;;807:1;804;797:12;756:55;847:2;834:16;873:2;865:6;862:14;859:34;;;889:1;886;879:12;859:34;944:7;937:4;927:6;924:1;920:14;916:2;912:23;908:34;905:47;902:67;;;965:1;962;955:12;902:67;996:4;988:13;;;;-1:-1:-1;1020:6:105;-1:-1:-1;;1061:20:105;;1048:34;1091:31;1048:34;1091:31;:::i;:::-;1141:5;1131:15;;;396:756;;;;;:::o;1157:484::-;1210:3;1248:5;1242:12;1275:6;1270:3;1263:19;1301:4;1330:2;1325:3;1321:12;1314:19;;1367:2;1360:5;1356:14;1388:1;1398:218;1412:6;1409:1;1406:13;1398:218;;;1477:13;;-1:-1:-1;;;;;1473:62:105;1461:75;;1556:12;;;;1591:15;;;;1434:1;1427:9;1398:218;;;-1:-1:-1;1632:3:105;;1157:484;-1:-1:-1;;;;;1157:484:105:o;1646:435::-;1699:3;1737:5;1731:12;1764:6;1759:3;1752:19;1790:4;1819:2;1814:3;1810:12;1803:19;;1856:2;1849:5;1845:14;1877:1;1887:169;1901:6;1898:1;1895:13;1887:169;;;1962:13;;1950:26;;1996:12;;;;2031:15;;;;1923:1;1916:9;1887:169;;2086:127;2147:10;2142:3;2138:20;2135:1;2128:31;2178:4;2175:1;2168:15;2202:4;2199:1;2192:15;2218:665;2276:3;2314:5;2308:12;2341:6;2336:3;2329:19;2367:4;2396:2;2391:3;2387:12;2380:19;;2433:2;2426:5;2422:14;2454:1;2475;2485:373;2501:6;2496:3;2493:15;2485:373;;;2570:6;2564:13;2607:1;2603:2;2600:9;2590:160;;-1:-1:-1;;;2641:31:105;;2699:4;2696:1;2689:15;2731:4;2648:1;2721:15;2590:160;2763:15;;2798:12;;;;2833:15;;;;2527:1;2518:11;2485:373;;;-1:-1:-1;2874:3:105;;2218:665;-1:-1:-1;;;;;;2218:665:105:o;2888:476::-;2941:3;2979:5;2973:12;3006:6;3001:3;2994:19;3032:4;3061:2;3056:3;3052:12;3045:19;;3098:2;3091:5;3087:14;3119:1;3129:210;3143:6;3140:1;3137:13;3129:210;;;3208:13;;-1:-1:-1;;;;;3204:54:105;3192:67;;3279:12;;;;3314:15;;;;3165:1;3158:9;3129:210;;3369:1564;3546:2;3535:9;3528:21;3509:4;3584:6;3578:13;3627:4;3622:2;3611:9;3607:18;3600:32;3655:63;3713:3;3702:9;3698:19;3684:12;3655:63;:::i;:::-;3641:77;;3767:2;3759:6;3755:15;3749:22;3794:2;3790:7;3861:2;3849:9;3841:6;3837:22;3833:31;3828:2;3817:9;3813:18;3806:59;3888:52;3933:6;3917:14;3888:52;:::i;:::-;3874:66;;3989:2;3981:6;3977:15;3971:22;3949:44;;4057:2;4045:9;4037:6;4033:22;4029:31;4024:2;4013:9;4009:18;4002:59;4084:52;4129:6;4113:14;4084:52;:::i;:::-;4070:66;;4185:2;4177:6;4173:15;4167:22;4145:44;;4254:2;4242:9;4234:6;4230:22;4226:31;4220:3;4209:9;4205:19;4198:60;4281:57;4331:6;4315:14;4281:57;:::i;:::-;4267:71;;4387:3;4379:6;4375:16;4369:23;4347:45;;4457:2;4445:9;4437:6;4433:22;4429:31;4423:3;4412:9;4408:19;4401:60;4484:52;4529:6;4513:14;4484:52;:::i;:::-;4470:66;;4585:3;4577:6;4573:16;4567:23;4545:45;;4655:2;4643:9;4635:6;4631:22;4627:31;4621:3;4610:9;4606:19;4599:60;4682:52;4727:6;4711:14;4682:52;:::i;:::-;4668:66;;4783:3;4775:6;4771:16;4765:23;4743:45;;4854:2;4842:9;4834:6;4830:22;4826:31;4819:4;4808:9;4804:20;4797:61;;4875:52;4920:6;4904:14;4875:52;:::i;4938:127::-;4999:10;4994:3;4990:20;4987:1;4980:31;5030:4;5027:1;5020:15;5054:4;5051:1;5044:15;5070:128;5137:9;;;5158:11;;;5155:37;;;5172:18;;:::i;5203:127::-;5264:10;5259:3;5255:20;5252:1;5245:31;5295:4;5292:1;5285:15;5319:4;5316:1;5309:15;5335:127;5396:10;5391:3;5387:20;5384:1;5377:31;5427:4;5424:1;5417:15;5451:4;5448:1;5441:15;5467:154;-1:-1:-1;;;;;5546:5:105;5542:54;5535:5;5532:65;5522:93;;5611:1;5608;5601:12;5626:247;5685:6;5738:2;5726:9;5717:7;5713:23;5709:32;5706:52;;;5754:1;5751;5744:12;5706:52;5793:9;5780:23;5812:31;5837:5;5812:31;:::i;:::-;5862:5;5626:247;-1:-1:-1;;;5626:247:105:o;5878:125::-;5943:9;;;5964:10;;;5961:36;;;5977:18;;:::i;6372:253::-;6444:2;6438:9;6486:4;6474:17;;6521:18;6506:34;;6542:22;;;6503:62;6500:88;;;6568:18;;:::i;:::-;6604:2;6597:22;6372:253;:::o;6630:275::-;6701:2;6695:9;6766:2;6747:13;;-1:-1:-1;;6743:27:105;6731:40;;6801:18;6786:34;;6822:22;;;6783:62;6780:88;;;6848:18;;:::i;:::-;6884:2;6877:22;6630:275;;-1:-1:-1;6630:275:105:o;6910:164::-;6986:13;;7035;;7028:21;7018:32;;7008:60;;7064:1;7061;7054:12;7079:1693;7210:6;7241:2;7284;7272:9;7263:7;7259:23;7255:32;7252:52;;;7300:1;7297;7290:12;7252:52;7333:9;7327:16;7362:18;7403:2;7395:6;7392:14;7389:34;;;7419:1;7416;7409:12;7389:34;7457:6;7446:9;7442:22;7432:32;;7502:7;7495:4;7491:2;7487:13;7483:27;7473:55;;7524:1;7521;7514:12;7473:55;7553:2;7547:9;7575:2;7571;7568:10;7565:36;;;7581:18;;:::i;:::-;7621:36;7653:2;7648;7645:1;7641:10;7637:19;7621:36;:::i;:::-;7691:15;;;7722:12;;;;-1:-1:-1;7773:1:105;7769:10;;;;7761:19;;7757:28;;;7797:19;;;7794:39;;;7829:1;7826;7819:12;7794:39;7853:11;;;;7873:869;7889:6;7884:3;7881:15;7873:869;;;7971:4;7965:3;7956:7;7952:17;7948:28;7945:118;;;8017:1;8046:2;8042;8035:14;7945:118;8089:22;;:::i;:::-;8145:3;8139:10;8197:6;8188:7;8184:20;8175:7;8172:33;8162:131;;8247:1;8276:2;8272;8265:14;8162:131;8306:22;;8362:12;;;8356:19;8388:33;8356:19;8388:33;:::i;:::-;8441:14;;;8434:31;8488:2;8526:40;8553:12;;;8526:40;:::i;:::-;8510:14;;;8503:64;8590:2;8628:40;8655:12;;;8628:40;:::i;:::-;8612:14;;;8605:64;8682:18;;7915:4;7906:14;;;;;8720:12;;;;7873:869;;8777:267;8863:6;8916:2;8904:9;8895:7;8891:23;8887:32;8884:52;;;8932:1;8929;8922:12;8884:52;8964:9;8958:16;8983:31;9008:5;8983:31;:::i;9490:519::-;9578:6;9586;9594;9647:2;9635:9;9626:7;9622:23;9618:32;9615:52;;;9663:1;9660;9653:12;9615:52;9695:9;9689:16;9714:31;9739:5;9714:31;:::i;:::-;9814:2;9799:18;;9793:25;9764:5;;-1:-1:-1;9827:33:105;9793:25;9827:33;:::i;:::-;9931:2;9916:18;;9910:25;9879:7;;-1:-1:-1;9944:33:105;9910:25;9944:33;:::i;10014:278::-;10083:6;10136:2;10124:9;10115:7;10111:23;10107:32;10104:52;;;10152:1;10149;10142:12;10104:52;10184:9;10178:16;10234:8;10227:5;10223:20;10216:5;10213:31;10203:59;;10258:1;10255;10248:12;10297:200;-1:-1:-1;;;;;10433:10:105;;;10421;;;10417:27;;10456:12;;;10453:38;;;10471:18;;:::i;:::-;10453:38;10297:200;;;;:::o;10502:168::-;10575:9;;;10606;;10623:15;;;10617:22;;10603:37;10593:71;;10644:18;;:::i;10675:127::-;10736:10;10731:3;10727:20;10724:1;10717:31;10767:4;10764:1;10757:15;10791:4;10788:1;10781:15;10807:217;10847:1;10873;10863:132;;10917:10;10912:3;10908:20;10905:1;10898:31;10952:4;10949:1;10942:15;10980:4;10977:1;10970:15;10863:132;-1:-1:-1;11009:9:105;;10807:217::o;11029:135::-;11068:3;11089:17;;;11086:43;;11109:18;;:::i;:::-;-1:-1:-1;11156:1:105;11145:13;;11029:135::o;11757:274::-;-1:-1:-1;;;;;11895:10:105;;;11907;;;11891:27;11938:20;;;;11829:34;11977:24;;;11967:58;;12005:18;;:::i;:::-;11967:58;;11757:274;;;;:::o;12036:197::-;-1:-1:-1;;;;;12158:10:105;;;12170;;;12154:27;;12193:11;;;12190:37;;;12207:18;;:::i;12238:136::-;12277:3;12305:5;12295:39;;12314:18;;:::i;:::-;-1:-1:-1;;;12350:18:105;;12238:136::o;12379:188::-;12458:13;;12511:30;12500:42;;12490:53;;12480:81;;12557:1;12554;12547:12;12572:450;12659:6;12667;12675;12728:2;12716:9;12707:7;12703:23;12699:32;12696:52;;;12744:1;12741;12734:12;12696:52;12767:40;12797:9;12767:40;:::i;:::-;12757:50;;12826:49;12871:2;12860:9;12856:18;12826:49;:::i;:::-;12816:59;;12918:2;12907:9;12903:18;12897:25;12962:10;12955:5;12951:22;12944:5;12941:33;12931:61;;12988:1;12985;12978:12","linkReferences":{},"immutableReferences":{"55613":[{"start":110,"length":32},{"start":2692,"length":32},{"start":2741,"length":32},{"start":6209,"length":32},{"start":6266,"length":32}],"55615":[{"start":262,"length":32},{"start":1024,"length":32},{"start":1073,"length":32},{"start":4475,"length":32},{"start":4532,"length":32}],"55617":[{"start":205,"length":32},{"start":1630,"length":32},{"start":5071,"length":32}]}},"methodIdentifiers":{"findBestPathFromAmountIn(address[],uint128)":"0f902a40","findBestPathFromAmountOut(address[],uint128)":"59214226","getFactoryV1()":"07da8f57","getFactoryV2()":"ca56fc72","getRouterV2()":"33141d3e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factoryV1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factoryV2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"routerV2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"LBQuoter_InvalidLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientLiquidity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"route\",\"type\":\"address[]\"},{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"}],\"name\":\"findBestPathFromAmountIn\",\"outputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"route\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"pairs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"binSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"uint128[]\",\"name\":\"amounts\",\"type\":\"uint128[]\"},{\"internalType\":\"uint128[]\",\"name\":\"virtualAmountsWithoutSlippage\",\"type\":\"uint128[]\"},{\"internalType\":\"uint128[]\",\"name\":\"fees\",\"type\":\"uint128[]\"}],\"internalType\":\"struct LBQuoter.Quote\",\"name\":\"quote\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"route\",\"type\":\"address[]\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"}],\"name\":\"findBestPathFromAmountOut\",\"outputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"route\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"pairs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"binSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"uint128[]\",\"name\":\"amounts\",\"type\":\"uint128[]\"},{\"internalType\":\"uint128[]\",\"name\":\"virtualAmountsWithoutSlippage\",\"type\":\"uint128[]\"},{\"internalType\":\"uint128[]\",\"name\":\"fees\",\"type\":\"uint128[]\"}],\"internalType\":\"struct LBQuoter.Quote\",\"name\":\"quote\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactoryV1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factoryV1\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactoryV2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factoryV2\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouterV2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"routerV2\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"factoryV1\":\"Sovryn LB Dex V1 factory address\",\"factoryV2\":\"Sovryn LB Dex V2 factory address\",\"routerV2\":\"Sovryn LB Dex V2 router address\"}},\"findBestPathFromAmountIn(address[],uint128)\":{\"params\":{\"amountIn\":\"Swap amount in\",\"route\":\"List of the tokens to go through\"},\"returns\":{\"quote\":\"The Quote structure containing the necessary element to perform the swap\"}},\"findBestPathFromAmountOut(address[],uint128)\":{\"params\":{\"amountOut\":\"Swap amount out\",\"route\":\"List of the tokens to go through\"},\"returns\":{\"quote\":\"The Quote structure containing the necessary element to perform the swap\"}},\"getFactoryV1()\":{\"returns\":{\"factoryV1\":\"Dex V1 factory address\"}},\"getFactoryV2()\":{\"returns\":{\"factoryV2\":\"Dex V2.2 factory address\"}},\"getRouterV2()\":{\"returns\":{\"routerV2\":\"Dex V2.2 router address\"}}},\"title\":\"Liquidity Book Quoter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor\"},\"findBestPathFromAmountIn(address[],uint128)\":{\"notice\":\"Finds the best path given a list of tokens and the input amount wanted from the swap\"},\"findBestPathFromAmountOut(address[],uint128)\":{\"notice\":\"Finds the best path given a list of tokens and the output amount wanted from the swap\"},\"getFactoryV1()\":{\"notice\":\"Returns the Dex V1 factory address\"},\"getFactoryV2()\":{\"notice\":\"Returns the Dex V2.2 factory address\"},\"getRouterV2()\":{\"notice\":\"Returns the Dex V2.2 router address\"}},\"notice\":\"Helper contract to determine best path through multiple markets This contract shouldn't be used on-chain as it consumes a lot of gas It should be used for off-chain purposes, like calculating the best path for a swap\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBQuoter.sol\":\"LBQuoter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"factoryV1","type":"address"},{"internalType":"address","name":"factoryV2","type":"address"},{"internalType":"address","name":"routerV2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"LBQuoter_InvalidLength"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds128Bits"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__AddressZero"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__IdenticalAddresses"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__InsufficientAmount"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__InsufficientLiquidity"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulShiftOverflow"},{"inputs":[{"internalType":"address[]","name":"route","type":"address[]"},{"internalType":"uint128","name":"amountIn","type":"uint128"}],"stateMutability":"view","type":"function","name":"findBestPathFromAmountIn","outputs":[{"internalType":"struct LBQuoter.Quote","name":"quote","type":"tuple","components":[{"internalType":"address[]","name":"route","type":"address[]"},{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"uint256[]","name":"binSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"uint128[]","name":"amounts","type":"uint128[]"},{"internalType":"uint128[]","name":"virtualAmountsWithoutSlippage","type":"uint128[]"},{"internalType":"uint128[]","name":"fees","type":"uint128[]"}]}]},{"inputs":[{"internalType":"address[]","name":"route","type":"address[]"},{"internalType":"uint128","name":"amountOut","type":"uint128"}],"stateMutability":"view","type":"function","name":"findBestPathFromAmountOut","outputs":[{"internalType":"struct LBQuoter.Quote","name":"quote","type":"tuple","components":[{"internalType":"address[]","name":"route","type":"address[]"},{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"uint256[]","name":"binSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"uint128[]","name":"amounts","type":"uint128[]"},{"internalType":"uint128[]","name":"virtualAmountsWithoutSlippage","type":"uint128[]"},{"internalType":"uint128[]","name":"fees","type":"uint128[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFactoryV1","outputs":[{"internalType":"address","name":"factoryV1","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFactoryV2","outputs":[{"internalType":"address","name":"factoryV2","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRouterV2","outputs":[{"internalType":"address","name":"routerV2","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"factoryV1":"Sovryn LB Dex V1 factory address","factoryV2":"Sovryn LB Dex V2 factory address","routerV2":"Sovryn LB Dex V2 router address"}},"findBestPathFromAmountIn(address[],uint128)":{"params":{"amountIn":"Swap amount in","route":"List of the tokens to go through"},"returns":{"quote":"The Quote structure containing the necessary element to perform the swap"}},"findBestPathFromAmountOut(address[],uint128)":{"params":{"amountOut":"Swap amount out","route":"List of the tokens to go through"},"returns":{"quote":"The Quote structure containing the necessary element to perform the swap"}},"getFactoryV1()":{"returns":{"factoryV1":"Dex V1 factory address"}},"getFactoryV2()":{"returns":{"factoryV2":"Dex V2.2 factory address"}},"getRouterV2()":{"returns":{"routerV2":"Dex V2.2 router address"}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructor"},"findBestPathFromAmountIn(address[],uint128)":{"notice":"Finds the best path given a list of tokens and the input amount wanted from the swap"},"findBestPathFromAmountOut(address[],uint128)":{"notice":"Finds the best path given a list of tokens and the output amount wanted from the swap"},"getFactoryV1()":{"notice":"Returns the Dex V1 factory address"},"getFactoryV2()":{"notice":"Returns the Dex V2.2 factory address"},"getRouterV2()":{"notice":"Returns the Dex V2.2 router address"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LBQuoter.sol":"LBQuoter"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"}},"version":1},"id":44} \ No newline at end of file diff --git a/abi/LBQuoter.t.sol/LiquidityBinQuoterTest.json b/abi/LBQuoter.t.sol/LiquidityBinQuoterTest.json deleted file mode 100644 index 7c069e53..00000000 --- a/abi/LBQuoter.t.sol/LiquidityBinQuoterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_Constructor","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_InvalidLength","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Scenario1","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_Scenario2","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_Scenario3","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_Scenario4","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b610100526200003590620000cf565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b60208201526200006690620000cf565b6001600160a01b031660c05262000081611388600a62000202565b62000092906402540be40062000202565b602c55602d80546001600160a01b0319167349d5c2bdffac6ce2bfdb6640f4f80f226bc10bab179055348015620000c857600080fd5b50620002e8565b6000620000dc82620000e3565b5092915050565b60008082604051602001620000f9919062000254565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562000165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018b919062000272565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001c99085908790600401620002a4565b600060405180830381600087803b158015620001e457600080fd5b505af1158015620001f9573d6000803e3d6000fd5b50505050915091565b80820281158282048414176200022857634e487b7160e01b600052601160045260246000fd5b92915050565b60005b838110156200024b57818101518382015260200162000231565b50506000910152565b60008251620002688184602087016200022e565b9190910192915050565b6000602082840312156200028557600080fd5b81516001600160a01b03811681146200029d57600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620002d38160608501602087016200022e565b601f01601f1916919091016060019392505050565b60805160a05160c0516201c9456200031b60003960005050600050506000818161524101526161bb01526201c9456000f3fe60806040523480156200001157600080fd5b5060043610620001ad5760003560e01c806366d9a9a011620000f5578063b5508aa91162000097578063e20c9f71116200006e578063e20c9f711462000342578063efbc8013146200034c578063fecaa223146200035657600080fd5b8063b5508aa91462000317578063b89e02331462000321578063ba414fa6146200033857600080fd5b8063889be5b711620000cc578063889be5b714620002ca578063916a17c614620002f6578063a7aa85e9146200030057600080fd5b806366d9a9a0146200028e57806385226c8114620002a75780638872168114620002c057600080fd5b80633c322dd3116200015f57806349789ef9116200013657806349789ef9146200025457806351f44d95146200027a5780635322e371146200028457600080fd5b80633c322dd314620002365780633e5e3c2314620002405780633f7286f4146200024a57600080fd5b80631ed7831c11620001945780631ed7831c14620001fa5780632ade38801462000213578063396b9c98146200022c57600080fd5b806301ffc9a714620001b25780630a9254e414620001ee575b600080fd5b620001d9620001c3366004620088cd565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620001f86200036d565b005b6200020462000df0565b604051620001e591906200893f565b6200021d62000e54565b604051620001e59190620089a8565b620001f862000fa2565b620001f8620019a7565b6200020462001be5565b6200020462001c47565b6200026b6200026536600462008a80565b62001ca9565b604051908152602001620001e5565b620001f862001cfe565b620001f8620026fd565b62000298620030d8565b604051620001e5919062008ab8565b620002b1620031c2565b604051620001e5919062008b6f565b620001f86200329c565b620002e1620002db36600462008be9565b620034a1565b60405162ffffff9091168152602001620001e5565b62000298620034fc565b620001f86200031136600462008c40565b620035e6565b620002b162003a8c565b620001d96200033236600462008cdc565b62003b66565b620001d962003be9565b6200020462003ca8565b620001f862003d0a565b620001f86200036736600462008d02565b620046dd565b60405163975a6ce960e01b815260206004820152600960248201527f6176616c616e63686500000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371ee464d90829063975a6ce990606401600060405180830381865afa158015620003f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200041d919081019062008e0a565b6302be17786040518363ffffffff1660e01b81526004016200044192919062008ea9565b6020604051808303816000875af115801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062008ecd565b5062000492620049e7565b601d54670de0b6b3a76400009069d3c21bcecceda100000090620004cd906001600160a01b031630620004c784600a62008efd565b6200605d565b601e54620004ec906001600160a01b031630620004c784600a62008efd565b601c546200050b906001600160a01b031630620004c784600a62008efd565b6022546200052a906001600160a01b031630620004c784600a62008efd565b60215462000549906001600160a01b031630620004c784600a62008efd565b602a54601e54601d546001600160a01b039283169263e8e3370092811691166200057560028762008f2d565b86600080306200058742600162008f44565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562000604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062a919062008f5a565b5050602a54601c54601d546001600160a01b03928316935063e8e337009291821691168480600080306200066042600162008f44565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af1158015620006dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000703919062008f5a565b5050602a54602254601d546001600160a01b03928316935063e8e337009291821691166200073360028762008f2d565b86600080306200074542600162008f44565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af1158015620007c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007e8919062008f5a565b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216915063659ac74b906084016020604051808303816000875af115801562000857573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087d919062008f89565b50602454601c54601d546001600160a01b039283169263659ac74b9281169116620008ad62800000603262008fa9565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015262ffffff166044820152600a60648201526084016020604051808303816000875af11580156200090e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000934919062008f89565b5060248054602254601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620009a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009c7919062008f89565b50602454602154601d546001600160a01b039283169263659ac74b9281169116620009f762800000603262008fa9565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015262ffffff166044820152600a60648201526084016020604051808303816000875af115801562000a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a7e919062008f89565b50601e54601d5460009162000aa8916001600160a01b039182169116846280000060078662006071565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000adb90849060040162008ffa565b6000604051808303816000875af115801562000afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b259190810190620091d1565b5050601c54601d5462000b6095506001600160a01b03918216945016915086905062000b5662800000603262008fa9565b6007600062006071565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000b9390849060040162008ffa565b6000604051808303816000875af115801562000bb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bdd9190810190620091d1565b5050602254601d5462000c0c95506001600160a01b039182169450169150859050628000006007600062006071565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000c3f90849060040162008ffa565b6000604051808303816000875af115801562000c5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c899190810190620091d1565b5050602154601d5462000cba95506001600160a01b03918216945016915085905062000b5662800000603262008fa9565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000ced90849060040162008ffa565b6000604051808303816000875af115801562000d0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d379190810190620091d1565b5050602154601d5462000d6895506001600160a01b03918216945016915086905062000b5662800000603262008fa9565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000d9b90849060040162008ffa565b6000604051808303816000875af115801562000dbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000de59190810190620091d1565b505050505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000e4a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e2b575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000f9957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000f8157838290600052602060002001805462000eed9062009261565b80601f016020809104026020016040519081016040528092919081815260200182805462000f1b9062009261565b801562000f6c5780601f1062000f405761010080835404028352916020019162000f6c565b820191906000526020600020905b81548152906001019060200180831162000f4e57829003601f168201915b50505050508152602001906001019062000ecb565b50505050815250508152602001906001019062000e78565b50505050905090565b604080516002808252606082018352600092602083019080368337505060225482519293506001600160a01b03169183915060009062000fe65762000fe66200929d565b6001600160a01b039283166020918202929092010152601d548251911690829060019081106200101a576200101a6200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a4090620010659086908690600401620092b3565b600060405180830381865afa15801562001083573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010ad919081019062009437565b9050620011248160800151600081518110620010cd57620010cd6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3100000000000000000000000000000081525062006209565b620011af81608001516001815181106200114257620011426200929d565b60200260200101516001600160801b031683600262001162919062009596565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a320000000000000000000000000000008152506200627d565b620012138160400151600081518110620011cd57620011cd6200929d565b602002602001015160006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3300000000000000000000000000000081525062006209565b6200128b81606001516000815181106200123157620012316200929d565b602002602001015160018111156200124d576200124d620095c4565b60006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a4090620012ca9086908690600401620092b3565b600060405180830381865afa158015620012e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001312919081019062009437565b90506200138981608001516000815181106200133257620013326200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3500000000000000000000000000000081525062006209565b620014068160800151600181518110620013a757620013a76200929d565b60200260200101516001600160801b0316836001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a360000000000000000000000000000008152506200627d565b6200146e81604001516000815181106200142457620014246200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3700000000000000000000000000000081525062006209565b620014e681606001516000815181106200148c576200148c6200929d565b60200260200101516001811115620014a857620014a8620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b031690635921422690620015219087908590600401620092b3565b600060405180830381865afa1580156200153f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001569919081019062009437565b9150620015f682608001516000815181106200158957620015896200929d565b60200260200101516001600160801b0316600283620015a99190620095da565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a390000000000000000000000000000008152506200627d565b6200166b82608001516001815181106200161457620016146200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3130000000000000000000000000000081525062006209565b620016cf82604001516000815181106200168957620016896200929d565b602002602001015160006040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3131000000000000000000000000000081525062006209565b620017478260600151600081518110620016ed57620016ed6200929d565b60200260200101516001811115620017095762001709620095c4565b60006040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b031690635921422690620017859087908590600401620092b3565b600060405180830381865afa158015620017a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017cd919081019062009437565b91506200184c8260800151600081518110620017ed57620017ed6200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f333a3a313300000000000000000000000000008152506200627d565b620018c182608001516001815181106200186a576200186a6200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3134000000000000000000000000000081525062006209565b620019298260400151600081518110620018df57620018df6200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3135000000000000000000000000000081525062006209565b620019a182606001516000815181106200194757620019476200929d565b60200260200101516001811115620019635762001963620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3136000000000000000000000000000081525062006209565b50505050565b6028546040805163198a0e9f60e11b8152905162001a63926001600160a01b0316916333141d3e9160048083019260209291908290030181865afa158015620019f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a1a919062008f89565b60255460408051808201909152601381527f746573745f436f6e7374727563746f723a3a310000000000000000000000000060208201526001600160a01b0390911690620062f4565b602854604080516307da8f5760e01b8152905162001b27926001600160a01b0316916307da8f579160048083019260209291908290030181865afa15801562001ab0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ad6919062008f89565b739ad6c38be94206ca50bb0d90783181662f0cfa106040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a3300000000000000000000000000815250620062f4565b6028546040805163652b7e3960e11b8152905162001be3926001600160a01b03169163ca56fc729160048083019260209291908290030181865afa15801562001b74573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b9a919062008f89565b60245460408051808201909152601381527f746573745f436f6e7374727563746f723a3a350000000000000000000000000060208201526001600160a01b0390911690620062f4565b565b6060601680548060200260200160405190810160405280929190818152602001828054801562000e4a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e2b575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000e4a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e2b575050505050905090565b6000808360ff1611801562001cc1575060008260ff16115b62001cd85762001cd2828462009603565b62001cf2565b600162001ce6838562009603565b62001cf291906200961f565b60ff1690505b92915050565b6040805160028082526060820183526000926020830190803683375050601e5482519293506001600160a01b03169183915060009062001d425762001d426200929d565b6001600160a01b039283166020918202929092010152601d5482519116908290600190811062001d765762001d766200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a409062001dc19086908690600401620092b3565b600060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e09919081019062009437565b905062001e80816080015160008151811062001e295762001e296200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3100000000000000000000000000000081525062006209565b62001f0b816080015160018151811062001e9e5762001e9e6200929d565b60200260200101516001600160801b031683600262001ebe919062009596565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a320000000000000000000000000000008152506200627d565b62001f6f816040015160008151811062001f295762001f296200929d565b602002602001015160006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3300000000000000000000000000000081525062006209565b62001fe7816060015160008151811062001f8d5762001f8d6200929d565b6020026020010151600181111562001fa95762001fa9620095c4565b60006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a4090620020269086908690600401620092b3565b600060405180830381865afa15801562002044573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200206e919081019062009437565b9050620020e581608001516000815181106200208e576200208e6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3500000000000000000000000000000081525062006209565b6200216281608001516001815181106200210357620021036200929d565b60200260200101516001600160801b0316836001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a360000000000000000000000000000008152506200627d565b620021ca81604001516000815181106200218057620021806200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3700000000000000000000000000000081525062006209565b620022428160600151600081518110620021e857620021e86200929d565b60200260200101516001811115620022045762002204620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b0316906359214226906200227d9087908590600401620092b3565b600060405180830381865afa1580156200229b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620022c5919081019062009437565b9150620023528260800151600081518110620022e557620022e56200929d565b60200260200101516001600160801b0316600283620023059190620095da565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a390000000000000000000000000000008152506200627d565b620023c782608001516001815181106200237057620023706200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3130000000000000000000000000000081525062006209565b6200242b8260400151600081518110620023e557620023e56200929d565b602002602001015160006040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3131000000000000000000000000000081525062006209565b620024a382606001516000815181106200244957620024496200929d565b60200260200101516001811115620024655762002465620095c4565b60006040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b031690635921422690620024e19087908590600401620092b3565b600060405180830381865afa158015620024ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002529919081019062009437565b9150620025a882608001516000815181106200254957620025496200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f313a3a313300000000000000000000000000008152506200627d565b6200261d8260800151600181518110620025c657620025c66200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3134000000000000000000000000000081525062006209565b6200268582604001516000815181106200263b576200263b6200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3135000000000000000000000000000081525062006209565b620019a18260600151600081518110620026a357620026a36200929d565b60200260200101516001811115620026bf57620026bf620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3136000000000000000000000000000081525062006209565b604080516002808252606082018352600092602083019080368337505060215482519293506001600160a01b0316918391506000906200274157620027416200929d565b6001600160a01b039283166020918202929092010152601d548251911690829060019081106200277557620027756200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a4090620027c09086908690600401620092b3565b600060405180830381865afa158015620027de573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002808919081019062009437565b90506200287f81608001516000815181106200282857620028286200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3100000000000000000000000000000081525062006209565b620028f481608001516001815181106200289d576200289d6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3200000000000000000000000000000081525062006331565b6200295c81604001516000815181106200291257620029126200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3300000000000000000000000000000081525062006209565b620029d481606001516000815181106200297a576200297a6200929d565b60200260200101516001811115620029965762002996620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a409062002a139086908690600401620092b3565b600060405180830381865afa15801562002a31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a5b919081019062009437565b905062002ad2816080015160008151811062002a7b5762002a7b6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3500000000000000000000000000000081525062006209565b62002b4f816080015160018151811062002af05762002af06200929d565b60200260200101516001600160801b0316836001600160801b031666d529ae9e8600006040518060400160405280601181526020017f746573745f5363656e6172696f343a3a360000000000000000000000000000008152506200627d565b62002bb7816040015160008151811062002b6d5762002b6d6200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3700000000000000000000000000000081525062006209565b62002c2f816060015160008151811062002bd55762002bd56200929d565b6020026020010151600181111562002bf15762002bf1620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b03169063592142269062002c6a9087908590600401620092b3565b600060405180830381865afa15801562002c88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002cb2919081019062009437565b915062002d29826080015160008151811062002cd25762002cd26200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a390000000000000000000000000000008152506200636e565b62002d9e826080015160018151811062002d475762002d476200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3130000000000000000000000000000081525062006209565b62002e06826040015160008151811062002dbc5762002dbc6200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3131000000000000000000000000000081525062006209565b62002e7e826060015160008151811062002e245762002e246200929d565b6020026020010151600181111562002e405762002e40620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b03169063592142269062002ebc9087908590600401620092b3565b600060405180830381865afa15801562002eda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f04919081019062009437565b915062002f83826080015160008151811062002f245762002f246200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f343a3a313300000000000000000000000000008152506200627d565b62002ff8826080015160018151811062002fa15762002fa16200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3134000000000000000000000000000081525062006209565b6200306082604001516000815181106200301657620030166200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3135000000000000000000000000000081525062006209565b620019a182606001516000815181106200307e576200307e6200929d565b602002602001015160018111156200309a576200309a620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3136000000000000000000000000000081525062006209565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000f995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620031a957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200316a5790505b50505050508152505081526020019060010190620030fc565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000f99578382906000526020600020018054620032089062009261565b80601f0160208091040260200160405190810160405280929190818152602001828054620032369062009261565b8015620032875780601f106200325b5761010080835404028352916020019162003287565b820191906000526020600020905b8154815290600101906020018083116200326957829003601f168201915b505050505081526020019060010190620031e6565b6040805160018082528183019092526060916020808301908036833701905050604051630618f58760e51b8152632973c80b60e01b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200331357600080fd5b505af115801562003328573d6000803e3d6000fd5b5050602854604051623e40a960e61b81526001600160a01b039091169250630f902a40915062003367908490670de0b6b3a764000090600401620092b3565b600060405180830381865afa15801562003385573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033af919081019062009437565b50604051630618f58760e51b8152632973c80b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200340457600080fd5b505af115801562003419573d6000803e3d6000fd5b5050602854604051632c90a11360e11b81526001600160a01b03909116925063592142269150620034559084906301312d0090600401620092b3565b600060405180830381865afa15801562003473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200349d919081019062009437565b5050565b600080620034b58462ffffff871662008f44565b905060008360ff1611620034ca5780620034e6565b620034d960ff8416826200963b565b620034e690600162008f44565b9050620034f381620063ab565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000f995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620035cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200358e5790505b5050505050815250508152602001906001019062003520565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003627573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200364d919062008f89565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003690573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036b6919062008f89565b9050620036c5828b886200605d565b620036d2818b876200605d565b6000620036e0858562001ca9565b905060008167ffffffffffffffff81111562003700576200370062008d94565b6040519080825280602002602001820160405280156200372a578160200160208202803683370190505b50905060005b8281101562003829576000620037488b8389620034a1565b905060008b62ffffff168262ffffff16101580156200376a575060008960ff16115b6200377757600062003798565b620037986200379260ff8b16670de0b6b3a764000062008f2d565b620063d7565b905060008c62ffffff168362ffffff1611158015620037ba575060008960ff16115b620037c7576000620037e2565b620037e26200379260ff8b16670de0b6b3a764000062008f2d565b9050620037f182828562006403565b8585815181106200380657620038066200929d565b60200260200101818152505050505080620038219062009651565b905062003730565b506040516303223eab60e11b81526001600160a01b038d166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200388057600080fd5b505af115801562003895573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af1158015620038e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200390f91906200967e565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562003960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200398691906200967e565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620039e657600080fd5b505af1158015620039fb573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162003a31939291906200969c565b6000604051808303816000875af115801562003a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a7b919081019062009702565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000f9957838290600052602060002001805462003ad29062009261565b80601f016020809104026020016040519081016040528092919081815260200182805462003b009062009261565b801562003b515780601f1062003b255761010080835404028352916020019162003b51565b820191906000526020600020905b81548152906001019060200180831162003b3357829003601f168201915b50505050508152602001906001019062003ab0565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562003bb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bdc919062009756565b9998505050505050505050565b60075460009060ff161562003c02575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562003c7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ca1919062008ecd565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562000e4a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e2b575050505050905090565b6040805160028082526060820183526000926020830190803683375050601c5482519293506001600160a01b03169183915060009062003d4e5762003d4e6200929d565b6001600160a01b039283166020918202929092010152601d5482519116908290600190811062003d825762003d826200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a409062003dcd9086908690600401620092b3565b600060405180830381865afa15801562003deb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003e15919081019062009437565b905062003e8c816080015160008151811062003e355762003e356200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3100000000000000000000000000000081525062006209565b62003f01816080015160018151811062003eaa5762003eaa6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3200000000000000000000000000000081525062006331565b62003f69816040015160008151811062003f1f5762003f1f6200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3300000000000000000000000000000081525062006209565b62003fe1816060015160008151811062003f875762003f876200929d565b6020026020010151600181111562003fa35762003fa3620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a4090620040209086908690600401620092b3565b600060405180830381865afa1580156200403e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004068919081019062009437565b9050620040df81608001516000815181106200408857620040886200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3500000000000000000000000000000081525062006209565b6200415c8160800151600181518110620040fd57620040fd6200929d565b60200260200101516001600160801b0316836001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f323a3a360000000000000000000000000000008152506200627d565b620041c081604001516000815181106200417a576200417a6200929d565b602002602001015160006040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3700000000000000000000000000000081525062006209565b620042388160600151600081518110620041de57620041de6200929d565b60200260200101516001811115620041fa57620041fa620095c4565b60006040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b031690635921422690620042739087908590600401620092b3565b600060405180830381865afa15801562004291573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620042bb919081019062009437565b9150620043328260800151600081518110620042db57620042db6200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a390000000000000000000000000000008152506200636e565b620043a782608001516001815181106200435057620043506200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3130000000000000000000000000000081525062006209565b6200440f8260400151600081518110620043c557620043c56200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3131000000000000000000000000000081525062006209565b6200448782606001516000815181106200442d576200442d6200929d565b60200260200101516001811115620044495762004449620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b031690635921422690620044c59087908590600401620092b3565b600060405180830381865afa158015620044e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200450d919081019062009437565b91506200458c82608001516000815181106200452d576200452d6200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f323a3a313300000000000000000000000000008152506200627d565b620046018260800151600181518110620045aa57620045aa6200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3134000000000000000000000000000081525062006209565b6200466582604001516000815181106200461f576200461f6200929d565b602002602001015160006040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3135000000000000000000000000000081525062006209565b620019a182606001516000815181106200468357620046836200929d565b602002602001015160018111156200469f576200469f620095c4565b60006040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3136000000000000000000000000000081525062006209565b670de0b6b3a76400008311156200473b5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062004749838362001ca9565b905060008167ffffffffffffffff81111562004769576200476962008d94565b60405190808252806020026020018201604052801562004793578160200160208202803683370190505b50905060008267ffffffffffffffff811115620047b457620047b462008d94565b604051908082528060200260200182016040528015620047de578160200160208202803683370190505b50905060005b83811015620048ec576000620047fc898388620034a1565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562004852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004878919062008ecd565b90508162ffffff168584815181106200489557620048956200929d565b6020908102919091010152620048b5818a670de0b6b3a764000062006441565b848481518110620048ca57620048ca6200929d565b602002602001018181525050505080620048e49062009651565b9050620047e4565b5060405163ca669fa760e01b81526001600160a01b038b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200494357600080fd5b505af115801562004958573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062004990908d908d9087908790600401620097b0565b6000604051808303816000875af1158015620049b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620049da9190810190620097fd565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362004ae957601c54604051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b4d6c782916001600160a01b039091169062004a529062008836565b604051809103906000f08015801562004a6f573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162004ab492919062009836565b600060405180830381600087803b15801562004acf57600080fd5b505af115801562004ae4573d6000803e3d6000fd5b505050505b600660405162004af99062008844565b60ff9091168152602001604051809103906000f08015801562004b20573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062004b529062008844565b60ff9091168152602001604051809103906000f08015801562004b79573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062004bab9062008844565b60ff9091168152602001604051809103906000f08015801562004bd2573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062004c049062008844565b60ff9091168152602001604051809103906000f08015801562004c2b573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062004c5d9062008844565b60ff9091168152602001604051809103906000f08015801562004c84573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062004cb69062008844565b60ff9091168152602001604051809103906000f08015801562004cdd573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162004d0c9062008852565b604051809103906000f08015801562004d29573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b15801562004dcf57600080fd5b505af115801562004de4573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562004e6157600080fd5b505af115801562004e76573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562004ef357600080fd5b505af115801562004f08573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562004f8557600080fd5b505af115801562004f9a573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200501757600080fd5b505af11580156200502c573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620050a957600080fd5b505af1158015620050be573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200513557600080fd5b505af11580156200514a573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620051db57600080fd5b505af1158015620051f0573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d2000090620052779062008860565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620052b2573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620052e0906200886e565b6001600160a01b039091168152602001604051809103906000f0801580156200530d573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200536c57600080fd5b505af115801562005381573d6000803e3d6000fd5b505050506200538f6200646f565b6200539b600a62006812565b602454602b54601c546040516001600160a01b03938416939283169290911690620053c6906200887c565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005403573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200543e906200888a565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200547b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200552157600080fd5b505af115801562005536573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620055c757600080fd5b505af1158015620055dc573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200567057600080fd5b505af115801562005685573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200571657600080fd5b505af11580156200572b573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620057bc57600080fd5b505af1158015620057d1573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200586257600080fd5b505af115801562005877573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af1158015620058d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058f891906200967e565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200597691906200967e565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620059ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059f491906200967e565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005a4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a7291906200967e565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005aca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005af091906200967e565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005b48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b6e91906200967e565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bec91906200967e565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005c44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c6a91906200967e565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005cc2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ce891906200967e565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005d40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d6691906200967e565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005dbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005de491906200967e565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005e3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005e6291906200967e565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005eba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ee091906200967e565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005f38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f5e91906200967e565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005fb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fdc91906200967e565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006034573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200605a91906200967e565b50565b6200606c8383836000620068b9565b505050565b6200610f604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b600080600080620061238989898962006abc565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff16815260200160008152602001620061a18a8762006dcb90919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a001620061f8426103e862008f44565b90529b9a5050505050505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859062006246908690869086906004016200985a565b60006040518083038186803b1580156200625f57600080fd5b505afa15801562006274573d6000803e3d6000fd5b50505050505050565b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390620062bc9087908790879087906004016200987b565b60006040518083038186803b158015620062d557600080fd5b505afa158015620062ea573d6000803e3d6000fd5b5050505050505050565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906200624690869086908690600401620098a2565b604051636cd1e26960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d9a3c4d29062006246908690869086906004016200985a565b6040516365d5c13560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906365d5c1359062006246908690869086906004016200985a565b8062ffffff81168114620063d257604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff81168114620063d25760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600080600062006452868662006e8f565b9150915062006465868686858562006eae565b9695505050505050565b601c546001600160a01b031615620064e45760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620064ca57600080fd5b505af1158015620064df573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620065595760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200653f57600080fd5b505af115801562006554573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620065ce5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620065b457600080fd5b505af1158015620065c9573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620066435760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200662957600080fd5b505af11580156200663e573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620066b85760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200669e57600080fd5b505af1158015620066b3573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200672d5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200671357600080fd5b505af115801562006728573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620067a25760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200678857600080fd5b505af11580156200679d573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562001be35760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620067fd57600080fd5b505af1158015620019a1573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200689d57600080fd5b505af1158015620068b2573d6000803e3d6000fd5b5050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200690f91620098d0565b600060405180830381855afa9150503d80600081146200694c576040519150601f19603f3d011682016040523d82523d6000602084013e62006951565b606091505b509150506000818060200190518101906200696d919062008ecd565b9050620069a784620069a087620069996370a0823160e01b62006992600c8d62006f60565b9062006f88565b9062006fa6565b9062006fcf565b821562006ab45760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620069f29190620098d0565b600060405180830381855afa9150503d806000811462006a2f576040519150601f19603f3d011682016040523d82523d6000602084013e62006a34565b606091505b5091505060008180602001905181019062006a50919062008ecd565b90508286101562006a7b5762006a6786846200963b565b62006a7390826200963b565b905062006a96565b62006a8783876200963b565b62006a93908262008f44565b90505b620062ea81620069a06318160ddd60e01b62006992600c8d62006f60565b505050505050565b60608080600062006acf600287620098ee565b62ffffff1660000362006b255760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e73604482015260640162004732565b600062006b3460028862009913565b90508662ffffff1667ffffffffffffffff81111562006b575762006b5762008d94565b60405190808252806020026020018201604052801562006b81578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff81111562006ba55762006ba562008d94565b60405190808252806020026020018201604052801562006bcf578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff81111562006bf35762006bf362008d94565b60405190808252806020026020018201604052801562006c1d578160200160208202803683370190505b509250600062006c2f82600162008fa9565b62006c489062ffffff16670de0b6b3a764000062008f2d565b9050600062006c5983600162008fa9565b62006c6a9062ffffff168c62008f2d565b905060005b8962ffffff1681101562006dbc5762006c8a89600162008fa9565b62006c9b9062ffffff168262008efd565b62006ca88a600162008fa9565b62006cb490866200992c565b62006cc0908d6200994e565b62ffffff1662006cd1919062008f44565b88828151811062006ce65762006ce66200929d565b6020026020010181815250508362ffffff16811162006d22578286828151811062006d155762006d156200929d565b6020026020010181815250505b8362ffffff16811062006da7578287828151811062006d455762006d456200929d565b6020026020010181815250506000821162006d6257600062006d98565b62006d98608062006d8f8a848151811062006d815762006d816200929d565b602002602001015162006fdb565b84919062006fea565b62006da4908662008f44565b94505b8062006db38162009651565b91505062006c6f565b50505050945094509450949050565b6060825167ffffffffffffffff81111562006dea5762006dea62008d94565b60405190808252806020026020018201604052801562006e14578160200160208202803683370190505b50905060005b835181101562006e88578262ffffff1684828151811062006e3f5762006e3f6200929d565b602002602001015162006e5391906200996d565b82828151811062006e685762006e686200929d565b60209081029190910101528062006e7f8162009651565b91505062006e1a565b5092915050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362006ed45783838162006ecb5762006ecb62008f17565b049050620034f3565b83821062006ef5576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c17905560008262006f81565b6002820180546001810182556000918252602082206001600160a01b0384169101558262006f81565b6200349d828262007016565b600062001cf882600a6200742d565b600060ff831684811b9061ffff6101008290031686901c90620064659087906001901b86858562006eae565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200708957602002820191906000526020600020905b81548152602001906001019080831162007074575b505050505090506000836200709e836200746a565b604051602001620070b192919062009990565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162007105918691889101620099c3565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007140576200713e8762007517565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162007181918791899101620099c3565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620071c89190620098d0565b600060405180830381855afa9150503d806000811462007205576040519150601f19603f3d011682016040523d82523d6000602084013e6200720a565b606091505b509150620072279050816200722188602062008efd565b62007524565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200728e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072b4919062008ecd565b90508082146200736b5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004732565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620073cf57600080fd5b505af1158015620073e4573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200741960028b01600062008898565b896004016000905550505050505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901620034f38282620075c6565b60606000825160206200747e919062008efd565b67ffffffffffffffff81111562007499576200749962008d94565b6040519080825280601f01601f191660200182016040528015620074c4576020820181803683370190505b50905060005b835181101562006e88576000848281518110620074eb57620074eb6200929d565b6020026020010151905080826020026020018401525080806200750e9062009651565b915050620074ca565b600062001cf88262007845565b600080600060208551116200753b5784516200753e565b60205b905060005b81811015620075bc576200755981600862008efd565b8662007566838862008f44565b815181106200757957620075796200929d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620075b38162009651565b91505062007543565b5090949350505050565b600080600083600003620075e45750600160801b915062001cf89050565b50826000811215620075f7579015906000035b62100000811015620077fd57600160801b9250846001600160801b038111156200762357911591600019045b6001821615620076355792830260801c925b800260801c60028216156200764c5792830260801c925b800260801c6004821615620076635792830260801c925b800260801c60088216156200767a5792830260801c925b800260801c6010821615620076915792830260801c925b800260801c6020821615620076a85792830260801c925b800260801c6040821615620076bf5792830260801c925b8002608090811c90821615620076d75792830260801c925b800260801c610100821615620076ef5792830260801c925b800260801c610200821615620077075792830260801c925b800260801c6104008216156200771f5792830260801c925b800260801c610800821615620077375792830260801c925b800260801c6110008216156200774f5792830260801c925b800260801c612000821615620077675792830260801c925b800260801c6140008216156200777f5792830260801c925b800260801c618000821615620077975792830260801c925b800260801c62010000821615620077b05792830260801c925b800260801c62020000821615620077c95792830260801c925b800260801c62040000821615620077e25792830260801c925b800260801c62080000821615620077fb5792830260801c925b505b826000036200782a57604051631dba598d60e11b8152600481018690526024810185905260440162004732565b81620078375782620034f3565b620034f38360001962008f2d565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620078b757602002820191906000526020600020905b815481526020019060010190808311620078a2575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200790392508591879101620099c3565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620079a2576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162007972918591879101620099c3565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620079b083620086f1565b604051602001620079c392919062009990565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007a3357600080fd5b505af115801562007a48573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162007a699190620098d0565b600060405180830381855afa9150503d806000811462007aa6576040519150601f19603f3d011682016040523d82523d6000602084013e62007aab565b606091505b50915062007ac890508162007ac287602062008efd565b6200879e565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562007b2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007b549190810190620099ff565b509050805160010362007ef85760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062007bac5762007bac6200929d565b60200260200101516040518363ffffffff1660e01b815260040162007be69291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007c04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c2a919062008ecd565b90508062007c95577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062007c6a5762007c6a6200929d565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462007d4a5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004732565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162007d82929190620099c3565b604051602081830303815290604052805190602001208560008151811062007dae5762007dae6200929d565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062007e085762007e086200929d565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007e53918a918c9101620099c3565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162007ebd918a918c9101620099c3565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062008566565b600181511115620084f55760005b8151811015620084ee5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062007f5a5762007f5a6200929d565b60200260200101516040518363ffffffff1660e01b815260040162007f949291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007fb2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fd8919062008ecd565b90508062008042577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200801757620080176200929d565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620080515750620084d9565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200808957620080896200929d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620080e257600080fd5b505af1158015620080f7573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620081199190620098d0565b600060405180830381855afa9150503d806000811462008156576040519150601f19603f3d011682016040523d82523d6000602084013e6200815b565b606091505b509092509050620081738162007ac28c602062008efd565b9650508080156200818357508186145b156200841b577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620081c1929190620099c3565b60405160208183030381529060405280519060200120888881518110620081ec57620081ec6200929d565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200824557620082456200929d565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262008290918d918f9101620099c3565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200831d929190620099c3565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620083a057620083a06200929d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620083f957600080fd5b505af11580156200840e573d6000803e3d6000fd5b50505050505050620084ee565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200846357620084636200929d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620084bc57600080fd5b505af1158015620084d1573d6000803e3d6000fd5b505050505050505b80620084e58162009651565b91505062007f06565b5062008566565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162004732565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620085aa9188918a9101620099c3565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620086475760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162004732565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200867860028a01600062008898565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620086be9188918a9101620099c3565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062008705919062008efd565b67ffffffffffffffff81111562008720576200872062008d94565b6040519080825280601f01601f1916602001820160405280156200874b576020820181803683370190505b50905060005b835181101562006e885760008482815181106200877257620087726200929d565b602002602001015190508082602002602001840152508080620087959062009651565b91505062008751565b60008060006020855111620087b5578451620087b8565b60205b905060005b81811015620075bc57620087d381600862008efd565b86620087e0838862008f44565b81518110620087f357620087f36200929d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200882d8162009651565b915050620087bd565b610b088062009a6b83390190565b610bfd806200a57383390190565b610c18806200b17083390190565b613199806200bd8883390190565b61615c806200ef2183390190565b614c80806201507d83390190565b612c138062019cfd83390190565b50805460008255906000526020600020908101906200605a91905b80821115620088c95760008155600101620088b3565b5090565b600060208284031215620088e057600080fd5b81356001600160e01b03198116811462006f8157600080fd5b600081518084526020808501945080840160005b83811015620089345781516001600160a01b0316875295820195908201906001016200890d565b509495945050505050565b60208152600062006f816020830184620088f9565b60005b838110156200897157818101518382015260200162008957565b50506000910152565b600081518084526200899481602086016020860162008954565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562008a5e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562008a4757605f1989850301835262008a348486516200897a565b948e01949350918d019160010162008a15565b505050978a019794505091880191600101620089cf565b50919a9950505050505050505050565b803560ff81168114620063d257600080fd5b6000806040838503121562008a9457600080fd5b62008a9f8362008a6e565b915062008aaf6020840162008a6e565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008b6057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562008b4a5783516001600160e01b0319168252928b019260019290920191908b019062008b1e565b50978a0197955050509187019160010162008ae0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008bc857603f1988860301845262008bb58583516200897a565b9450928501929085019060010162008b96565b5092979650505050505050565b803562ffffff81168114620063d257600080fd5b60008060006060848603121562008bff57600080fd5b62008c0a8462008bd5565b92506020840135915062008c216040850162008a6e565b90509250925092565b6001600160a01b03811681146200605a57600080fd5b600080600080600080600080610100898b03121562008c5e57600080fd5b883562008c6b8162008c2a565b9750602089013562008c7d8162008c2a565b9650604089013562008c8f8162008c2a565b955062008c9f60608a0162008bd5565b94506080890135935060a0890135925062008cbd60c08a0162008a6e565b915062008ccd60e08a0162008a6e565b90509295985092959890939650565b60006020828403121562008cef57600080fd5b813561ffff8116811462006f8157600080fd5b600080600080600080600060e0888a03121562008d1e57600080fd5b873562008d2b8162008c2a565b9650602088013562008d3d8162008c2a565b9550604088013562008d4f8162008c2a565b945062008d5f6060890162008bd5565b93506080880135925062008d7660a0890162008a6e565b915062008d8660c0890162008a6e565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562008dd05762008dd062008d94565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562008e025762008e0262008d94565b604052919050565b60006020828403121562008e1d57600080fd5b815167ffffffffffffffff8082111562008e3657600080fd5b818401915084601f83011262008e4b57600080fd5b81518181111562008e605762008e6062008d94565b62008e75601f8201601f191660200162008dd6565b915080825285602082850101111562008e8d57600080fd5b62008ea081602084016020860162008954565b50949350505050565b60408152600062008ebe60408301856200897a565b90508260208301529392505050565b60006020828403121562008ee057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762001cf85762001cf862008ee7565b634e487b7160e01b600052601260045260246000fd5b60008262008f3f5762008f3f62008f17565b500490565b8082018082111562001cf85762001cf862008ee7565b60008060006060848603121562008f7057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121562008f9c57600080fd5b815162006f818162008c2a565b62ffffff81811683821601908082111562006e885762006e8862008ee7565b600081518084526020808501945080840160005b83811015620089345781518752958201959082019060010162008fdc565b60208152620090156020820183516001600160a01b03169052565b600060208301516200903260408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e06101408181860152620090a361020086018462008fc8565b9250808601519050601f19610160818786030181880152620090c6858462008fc8565b945080880151925050610180818786030181880152620090e7858462008fc8565b945080880151925050506101a062009109818701836001600160a01b03169052565b86015190506101c062009126868201836001600160a01b03169052565b959095015193019290925250919050565b600067ffffffffffffffff82111562009154576200915462008d94565b5060051b60200190565b600082601f8301126200917057600080fd5b8151602062009189620091838362009137565b62008dd6565b82815260059290921b84018101918181019086841115620091a957600080fd5b8286015b84811015620091c65780518352918301918301620091ad565b509695505050505050565b60008060008060008060c08789031215620091eb57600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff808211156200922057600080fd5b6200922e8a838b016200915e565b935060a08901519150808211156200924557600080fd5b506200925489828a016200915e565b9150509295509295509295565b600181811c908216806200927657607f821691505b6020821081036200929757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b604081526000620092c86040830185620088f9565b90506001600160801b03831660208301529392505050565b600082601f830112620092f257600080fd5b8151602062009305620091838362009137565b82815260059290921b840181019181810190868411156200932557600080fd5b8286015b84811015620091c65780516200933f8162008c2a565b835291830191830162009329565b600082601f8301126200935f57600080fd5b8151602062009372620091838362009137565b82815260059290921b840181019181810190868411156200939257600080fd5b8286015b84811015620091c657805160028110620093b05760008081fd5b835291830191830162009396565b600082601f830112620093d057600080fd5b81516020620093e3620091838362009137565b82815260059290921b840181019181810190868411156200940357600080fd5b8286015b84811015620091c65780516001600160801b0381168114620094295760008081fd5b835291830191830162009407565b6000602082840312156200944a57600080fd5b815167ffffffffffffffff808211156200946357600080fd5b9083019060e082860312156200947857600080fd5b6200948262008daa565b8251828111156200949257600080fd5b620094a087828601620092e0565b825250602083015182811115620094b657600080fd5b620094c487828601620092e0565b602083015250604083015182811115620094dd57600080fd5b620094eb878286016200915e565b6040830152506060830151828111156200950457600080fd5b62009512878286016200934d565b6060830152506080830151828111156200952b57600080fd5b6200953987828601620093be565b60808301525060a0830151828111156200955257600080fd5b6200956087828601620093be565b60a08301525060c0830151828111156200957957600080fd5b6200958787828601620093be565b60c08301525095945050505050565b6001600160801b03818116838216028082169190828114620095bc57620095bc62008ee7565b505092915050565b634e487b7160e01b600052602160045260246000fd5b60006001600160801b0380841680620095f757620095f762008f17565b92169190910492915050565b60ff818116838216019081111562001cf85762001cf862008ee7565b60ff828116828216039081111562001cf85762001cf862008ee7565b8181038181111562001cf85762001cf862008ee7565b60006001820162009666576200966662008ee7565b5060010190565b80518015158114620063d257600080fd5b6000602082840312156200969157600080fd5b62006f81826200966d565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620096e957855183529483019491830191600101620096cb565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200971857600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200973e57600080fd5b6200974c868287016200915e565b9150509250925092565b600080600080600080600080610100898b0312156200977457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062008ccd60e08a016200966d565b60006001600160a01b03808716835280861660208401525060806040830152620097de608083018562008fc8565b8281036060840152620097f2818562008fc8565b979650505050505050565b6000602082840312156200981057600080fd5b815167ffffffffffffffff8111156200982857600080fd5b62006439848285016200915e565b6001600160a01b03831681526040602082015260006200643960408301846200897a565b838152826020820152606060408201526000620034f360608301846200897a565b8481528360208201528260408201526080606082015260006200646560808301846200897a565b60006001600160a01b03808616835280851660208401525060606040830152620034f360608301846200897a565b60008251620098e481846020870162008954565b9190910192915050565b600062ffffff8084168062009907576200990762008f17565b92169190910692915050565b600062ffffff80841680620095f757620095f762008f17565b62ffffff818116838216028082169190828114620095bc57620095bc62008ee7565b62ffffff82811682821603908082111562006e885762006e8862008ee7565b818103600083128015838313168383128216171562006e885762006e8862008ee7565b6001600160e01b0319831681528151600090620099b581600485016020870162008954565b919091016004019392505050565b825160009082906020808701845b83811015620099ef57815185529382019390820190600101620099d1565b5050948252509092019392505050565b6000806040838503121562009a1357600080fd5b825167ffffffffffffffff8082111562009a2c57600080fd5b62009a3a868387016200915e565b9350602085015191508082111562009a5157600080fd5b5062009a60858286016200915e565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033a26469706673582212203be549c3e7eaacd4bc8183ce035e793121d0714749efd83c77dbe32b0d1f08d364736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;591:11316:96;1812:17:93;;591:11316:96;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;728:47:96;1202:5:93;1147:2;728:47:96;:::i;:::-;:54;;778:4;728:54;:::i;:::-;695:87;;789:58;;;-1:-1:-1;;;;;;789:58:96;805:42;789:58;;;591:11316;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;979:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;952:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:265:105:-;87:9;;;118;;135:15;;;129:22;;115:37;105:168;;195:10;190:3;186:20;183:1;176:31;230:4;227:1;220:15;258:4;255:1;248:15;105:168;14:265;;;;:::o;284:250::-;369:1;379:113;393:6;390:1;387:13;379:113;;;469:11;;;463:18;450:11;;;443:39;415:2;408:10;379:113;;;-1:-1:-1;;526:1:105;508:16;;501:27;284:250::o;539:289::-;670:3;708:6;702:13;724:66;783:6;778:3;771:4;763:6;759:17;724:66;:::i;:::-;806:16;;;;;539:289;-1:-1:-1;;539:289:105:o;1015:290::-;1085:6;1138:2;1126:9;1117:7;1113:23;1109:32;1106:52;;;1154:1;1151;1144:12;1106:52;1180:16;;-1:-1:-1;;;;;1225:31:105;;1215:42;;1205:70;;1271:1;1268;1261:12;1205:70;1294:5;1015:290;-1:-1:-1;;;1015:290:105:o;1310:493::-;1516:1;1512;1507:3;1503:11;1499:19;1491:6;1487:32;1476:9;1469:51;1556:2;1551;1540:9;1536:18;1529:30;1450:4;1588:6;1582:13;1631:6;1626:2;1615:9;1611:18;1604:34;1647:79;1719:6;1714:2;1703:9;1699:18;1694:2;1686:6;1682:15;1647:79;:::i;:::-;1787:2;1766:15;-1:-1:-1;;1762:29:105;1747:45;;;;1794:2;1743:54;;1310:493;-1:-1:-1;;;1310:493:105:o;:::-;591:11316:96;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001ad5760003560e01c806366d9a9a011620000f5578063b5508aa91162000097578063e20c9f71116200006e578063e20c9f711462000342578063efbc8013146200034c578063fecaa223146200035657600080fd5b8063b5508aa91462000317578063b89e02331462000321578063ba414fa6146200033857600080fd5b8063889be5b711620000cc578063889be5b714620002ca578063916a17c614620002f6578063a7aa85e9146200030057600080fd5b806366d9a9a0146200028e57806385226c8114620002a75780638872168114620002c057600080fd5b80633c322dd3116200015f57806349789ef9116200013657806349789ef9146200025457806351f44d95146200027a5780635322e371146200028457600080fd5b80633c322dd314620002365780633e5e3c2314620002405780633f7286f4146200024a57600080fd5b80631ed7831c11620001945780631ed7831c14620001fa5780632ade38801462000213578063396b9c98146200022c57600080fd5b806301ffc9a714620001b25780630a9254e414620001ee575b600080fd5b620001d9620001c3366004620088cd565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620001f86200036d565b005b6200020462000df0565b604051620001e591906200893f565b6200021d62000e54565b604051620001e59190620089a8565b620001f862000fa2565b620001f8620019a7565b6200020462001be5565b6200020462001c47565b6200026b6200026536600462008a80565b62001ca9565b604051908152602001620001e5565b620001f862001cfe565b620001f8620026fd565b62000298620030d8565b604051620001e5919062008ab8565b620002b1620031c2565b604051620001e5919062008b6f565b620001f86200329c565b620002e1620002db36600462008be9565b620034a1565b60405162ffffff9091168152602001620001e5565b62000298620034fc565b620001f86200031136600462008c40565b620035e6565b620002b162003a8c565b620001d96200033236600462008cdc565b62003b66565b620001d962003be9565b6200020462003ca8565b620001f862003d0a565b620001f86200036736600462008d02565b620046dd565b60405163975a6ce960e01b815260206004820152600960248201527f6176616c616e63686500000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371ee464d90829063975a6ce990606401600060405180830381865afa158015620003f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200041d919081019062008e0a565b6302be17786040518363ffffffff1660e01b81526004016200044192919062008ea9565b6020604051808303816000875af115801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062008ecd565b5062000492620049e7565b601d54670de0b6b3a76400009069d3c21bcecceda100000090620004cd906001600160a01b031630620004c784600a62008efd565b6200605d565b601e54620004ec906001600160a01b031630620004c784600a62008efd565b601c546200050b906001600160a01b031630620004c784600a62008efd565b6022546200052a906001600160a01b031630620004c784600a62008efd565b60215462000549906001600160a01b031630620004c784600a62008efd565b602a54601e54601d546001600160a01b039283169263e8e3370092811691166200057560028762008f2d565b86600080306200058742600162008f44565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562000604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062a919062008f5a565b5050602a54601c54601d546001600160a01b03928316935063e8e337009291821691168480600080306200066042600162008f44565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af1158015620006dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000703919062008f5a565b5050602a54602254601d546001600160a01b03928316935063e8e337009291821691166200073360028762008f2d565b86600080306200074542600162008f44565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af1158015620007c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007e8919062008f5a565b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216915063659ac74b906084016020604051808303816000875af115801562000857573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087d919062008f89565b50602454601c54601d546001600160a01b039283169263659ac74b9281169116620008ad62800000603262008fa9565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015262ffffff166044820152600a60648201526084016020604051808303816000875af11580156200090e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000934919062008f89565b5060248054602254601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620009a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009c7919062008f89565b50602454602154601d546001600160a01b039283169263659ac74b9281169116620009f762800000603262008fa9565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015262ffffff166044820152600a60648201526084016020604051808303816000875af115801562000a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a7e919062008f89565b50601e54601d5460009162000aa8916001600160a01b039182169116846280000060078662006071565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000adb90849060040162008ffa565b6000604051808303816000875af115801562000afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b259190810190620091d1565b5050601c54601d5462000b6095506001600160a01b03918216945016915086905062000b5662800000603262008fa9565b6007600062006071565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000b9390849060040162008ffa565b6000604051808303816000875af115801562000bb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bdd9190810190620091d1565b5050602254601d5462000c0c95506001600160a01b039182169450169150859050628000006007600062006071565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000c3f90849060040162008ffa565b6000604051808303816000875af115801562000c5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c899190810190620091d1565b5050602154601d5462000cba95506001600160a01b03918216945016915085905062000b5662800000603262008fa9565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000ced90849060040162008ffa565b6000604051808303816000875af115801562000d0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d379190810190620091d1565b5050602154601d5462000d6895506001600160a01b03918216945016915086905062000b5662800000603262008fa9565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a9062000d9b90849060040162008ffa565b6000604051808303816000875af115801562000dbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000de59190810190620091d1565b505050505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000e4a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e2b575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000f9957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000f8157838290600052602060002001805462000eed9062009261565b80601f016020809104026020016040519081016040528092919081815260200182805462000f1b9062009261565b801562000f6c5780601f1062000f405761010080835404028352916020019162000f6c565b820191906000526020600020905b81548152906001019060200180831162000f4e57829003601f168201915b50505050508152602001906001019062000ecb565b50505050815250508152602001906001019062000e78565b50505050905090565b604080516002808252606082018352600092602083019080368337505060225482519293506001600160a01b03169183915060009062000fe65762000fe66200929d565b6001600160a01b039283166020918202929092010152601d548251911690829060019081106200101a576200101a6200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a4090620010659086908690600401620092b3565b600060405180830381865afa15801562001083573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620010ad919081019062009437565b9050620011248160800151600081518110620010cd57620010cd6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3100000000000000000000000000000081525062006209565b620011af81608001516001815181106200114257620011426200929d565b60200260200101516001600160801b031683600262001162919062009596565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a320000000000000000000000000000008152506200627d565b620012138160400151600081518110620011cd57620011cd6200929d565b602002602001015160006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3300000000000000000000000000000081525062006209565b6200128b81606001516000815181106200123157620012316200929d565b602002602001015160018111156200124d576200124d620095c4565b60006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a4090620012ca9086908690600401620092b3565b600060405180830381865afa158015620012e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001312919081019062009437565b90506200138981608001516000815181106200133257620013326200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3500000000000000000000000000000081525062006209565b620014068160800151600181518110620013a757620013a76200929d565b60200260200101516001600160801b0316836001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a360000000000000000000000000000008152506200627d565b6200146e81604001516000815181106200142457620014246200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3700000000000000000000000000000081525062006209565b620014e681606001516000815181106200148c576200148c6200929d565b60200260200101516001811115620014a857620014a8620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f333a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b031690635921422690620015219087908590600401620092b3565b600060405180830381865afa1580156200153f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001569919081019062009437565b9150620015f682608001516000815181106200158957620015896200929d565b60200260200101516001600160801b0316600283620015a99190620095da565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f333a3a390000000000000000000000000000008152506200627d565b6200166b82608001516001815181106200161457620016146200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3130000000000000000000000000000081525062006209565b620016cf82604001516000815181106200168957620016896200929d565b602002602001015160006040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3131000000000000000000000000000081525062006209565b620017478260600151600081518110620016ed57620016ed6200929d565b60200260200101516001811115620017095762001709620095c4565b60006040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b031690635921422690620017859087908590600401620092b3565b600060405180830381865afa158015620017a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017cd919081019062009437565b91506200184c8260800151600081518110620017ed57620017ed6200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f333a3a313300000000000000000000000000008152506200627d565b620018c182608001516001815181106200186a576200186a6200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3134000000000000000000000000000081525062006209565b620019298260400151600081518110620018df57620018df6200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3135000000000000000000000000000081525062006209565b620019a182606001516000815181106200194757620019476200929d565b60200260200101516001811115620019635762001963620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f333a3a3136000000000000000000000000000081525062006209565b50505050565b6028546040805163198a0e9f60e11b8152905162001a63926001600160a01b0316916333141d3e9160048083019260209291908290030181865afa158015620019f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a1a919062008f89565b60255460408051808201909152601381527f746573745f436f6e7374727563746f723a3a310000000000000000000000000060208201526001600160a01b0390911690620062f4565b602854604080516307da8f5760e01b8152905162001b27926001600160a01b0316916307da8f579160048083019260209291908290030181865afa15801562001ab0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ad6919062008f89565b739ad6c38be94206ca50bb0d90783181662f0cfa106040518060400160405280601381526020017f746573745f436f6e7374727563746f723a3a3300000000000000000000000000815250620062f4565b6028546040805163652b7e3960e11b8152905162001be3926001600160a01b03169163ca56fc729160048083019260209291908290030181865afa15801562001b74573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b9a919062008f89565b60245460408051808201909152601381527f746573745f436f6e7374727563746f723a3a350000000000000000000000000060208201526001600160a01b0390911690620062f4565b565b6060601680548060200260200160405190810160405280929190818152602001828054801562000e4a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e2b575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000e4a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e2b575050505050905090565b6000808360ff1611801562001cc1575060008260ff16115b62001cd85762001cd2828462009603565b62001cf2565b600162001ce6838562009603565b62001cf291906200961f565b60ff1690505b92915050565b6040805160028082526060820183526000926020830190803683375050601e5482519293506001600160a01b03169183915060009062001d425762001d426200929d565b6001600160a01b039283166020918202929092010152601d5482519116908290600190811062001d765762001d766200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a409062001dc19086908690600401620092b3565b600060405180830381865afa15801562001ddf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e09919081019062009437565b905062001e80816080015160008151811062001e295762001e296200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3100000000000000000000000000000081525062006209565b62001f0b816080015160018151811062001e9e5762001e9e6200929d565b60200260200101516001600160801b031683600262001ebe919062009596565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a320000000000000000000000000000008152506200627d565b62001f6f816040015160008151811062001f295762001f296200929d565b602002602001015160006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3300000000000000000000000000000081525062006209565b62001fe7816060015160008151811062001f8d5762001f8d6200929d565b6020026020010151600181111562001fa95762001fa9620095c4565b60006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a4090620020269086908690600401620092b3565b600060405180830381865afa15801562002044573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200206e919081019062009437565b9050620020e581608001516000815181106200208e576200208e6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3500000000000000000000000000000081525062006209565b6200216281608001516001815181106200210357620021036200929d565b60200260200101516001600160801b0316836001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a360000000000000000000000000000008152506200627d565b620021ca81604001516000815181106200218057620021806200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3700000000000000000000000000000081525062006209565b620022428160600151600081518110620021e857620021e86200929d565b60200260200101516001811115620022045762002204620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f313a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b0316906359214226906200227d9087908590600401620092b3565b600060405180830381865afa1580156200229b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620022c5919081019062009437565b9150620023528260800151600081518110620022e557620022e56200929d565b60200260200101516001600160801b0316600283620023059190620095da565b6001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f313a3a390000000000000000000000000000008152506200627d565b620023c782608001516001815181106200237057620023706200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3130000000000000000000000000000081525062006209565b6200242b8260400151600081518110620023e557620023e56200929d565b602002602001015160006040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3131000000000000000000000000000081525062006209565b620024a382606001516000815181106200244957620024496200929d565b60200260200101516001811115620024655762002465620095c4565b60006040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b031690635921422690620024e19087908590600401620092b3565b600060405180830381865afa158015620024ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002529919081019062009437565b9150620025a882608001516000815181106200254957620025496200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f313a3a313300000000000000000000000000008152506200627d565b6200261d8260800151600181518110620025c657620025c66200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3134000000000000000000000000000081525062006209565b6200268582604001516000815181106200263b576200263b6200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3135000000000000000000000000000081525062006209565b620019a18260600151600081518110620026a357620026a36200929d565b60200260200101516001811115620026bf57620026bf620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f313a3a3136000000000000000000000000000081525062006209565b604080516002808252606082018352600092602083019080368337505060215482519293506001600160a01b0316918391506000906200274157620027416200929d565b6001600160a01b039283166020918202929092010152601d548251911690829060019081106200277557620027756200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a4090620027c09086908690600401620092b3565b600060405180830381865afa158015620027de573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002808919081019062009437565b90506200287f81608001516000815181106200282857620028286200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3100000000000000000000000000000081525062006209565b620028f481608001516001815181106200289d576200289d6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3200000000000000000000000000000081525062006331565b6200295c81604001516000815181106200291257620029126200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3300000000000000000000000000000081525062006209565b620029d481606001516000815181106200297a576200297a6200929d565b60200260200101516001811115620029965762002996620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a409062002a139086908690600401620092b3565b600060405180830381865afa15801562002a31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a5b919081019062009437565b905062002ad2816080015160008151811062002a7b5762002a7b6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3500000000000000000000000000000081525062006209565b62002b4f816080015160018151811062002af05762002af06200929d565b60200260200101516001600160801b0316836001600160801b031666d529ae9e8600006040518060400160405280601181526020017f746573745f5363656e6172696f343a3a360000000000000000000000000000008152506200627d565b62002bb7816040015160008151811062002b6d5762002b6d6200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3700000000000000000000000000000081525062006209565b62002c2f816060015160008151811062002bd55762002bd56200929d565b6020026020010151600181111562002bf15762002bf1620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f343a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b03169063592142269062002c6a9087908590600401620092b3565b600060405180830381865afa15801562002c88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002cb2919081019062009437565b915062002d29826080015160008151811062002cd25762002cd26200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f343a3a390000000000000000000000000000008152506200636e565b62002d9e826080015160018151811062002d475762002d476200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3130000000000000000000000000000081525062006209565b62002e06826040015160008151811062002dbc5762002dbc6200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3131000000000000000000000000000081525062006209565b62002e7e826060015160008151811062002e245762002e246200929d565b6020026020010151600181111562002e405762002e40620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b03169063592142269062002ebc9087908590600401620092b3565b600060405180830381865afa15801562002eda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f04919081019062009437565b915062002f83826080015160008151811062002f245762002f246200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f343a3a313300000000000000000000000000008152506200627d565b62002ff8826080015160018151811062002fa15762002fa16200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3134000000000000000000000000000081525062006209565b6200306082604001516000815181106200301657620030166200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3135000000000000000000000000000081525062006209565b620019a182606001516000815181106200307e576200307e6200929d565b602002602001015160018111156200309a576200309a620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f343a3a3136000000000000000000000000000081525062006209565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000f995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620031a957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200316a5790505b50505050508152505081526020019060010190620030fc565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000f99578382906000526020600020018054620032089062009261565b80601f0160208091040260200160405190810160405280929190818152602001828054620032369062009261565b8015620032875780601f106200325b5761010080835404028352916020019162003287565b820191906000526020600020905b8154815290600101906020018083116200326957829003601f168201915b505050505081526020019060010190620031e6565b6040805160018082528183019092526060916020808301908036833701905050604051630618f58760e51b8152632973c80b60e01b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200331357600080fd5b505af115801562003328573d6000803e3d6000fd5b5050602854604051623e40a960e61b81526001600160a01b039091169250630f902a40915062003367908490670de0b6b3a764000090600401620092b3565b600060405180830381865afa15801562003385573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033af919081019062009437565b50604051630618f58760e51b8152632973c80b60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156200340457600080fd5b505af115801562003419573d6000803e3d6000fd5b5050602854604051632c90a11360e11b81526001600160a01b03909116925063592142269150620034559084906301312d0090600401620092b3565b600060405180830381865afa15801562003473573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200349d919081019062009437565b5050565b600080620034b58462ffffff871662008f44565b905060008360ff1611620034ca5780620034e6565b620034d960ff8416826200963b565b620034e690600162008f44565b9050620034f381620063ab565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000f995760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620035cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200358e5790505b5050505050815250508152602001906001019062003520565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003627573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200364d919062008f89565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003690573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036b6919062008f89565b9050620036c5828b886200605d565b620036d2818b876200605d565b6000620036e0858562001ca9565b905060008167ffffffffffffffff81111562003700576200370062008d94565b6040519080825280602002602001820160405280156200372a578160200160208202803683370190505b50905060005b8281101562003829576000620037488b8389620034a1565b905060008b62ffffff168262ffffff16101580156200376a575060008960ff16115b6200377757600062003798565b620037986200379260ff8b16670de0b6b3a764000062008f2d565b620063d7565b905060008c62ffffff168362ffffff1611158015620037ba575060008960ff16115b620037c7576000620037e2565b620037e26200379260ff8b16670de0b6b3a764000062008f2d565b9050620037f182828562006403565b8585815181106200380657620038066200929d565b60200260200101818152505050505080620038219062009651565b905062003730565b506040516303223eab60e11b81526001600160a01b038d166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200388057600080fd5b505af115801562003895573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af1158015620038e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200390f91906200967e565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562003960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200398691906200967e565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620039e657600080fd5b505af1158015620039fb573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162003a31939291906200969c565b6000604051808303816000875af115801562003a51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a7b919081019062009702565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000f9957838290600052602060002001805462003ad29062009261565b80601f016020809104026020016040519081016040528092919081815260200182805462003b009062009261565b801562003b515780601f1062003b255761010080835404028352916020019162003b51565b820191906000526020600020905b81548152906001019060200180831162003b3357829003601f168201915b50505050508152602001906001019062003ab0565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562003bb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bdc919062009756565b9998505050505050505050565b60075460009060ff161562003c02575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562003c7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ca1919062008ecd565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562000e4a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e2b575050505050905090565b6040805160028082526060820183526000926020830190803683375050601c5482519293506001600160a01b03169183915060009062003d4e5762003d4e6200929d565b6001600160a01b039283166020918202929092010152601d5482519116908290600190811062003d825762003d826200929d565b6001600160a01b039283166020918202929092010152602854604051623e40a960e61b8152662386f26fc10000926000921690630f902a409062003dcd9086908690600401620092b3565b600060405180830381865afa15801562003deb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003e15919081019062009437565b905062003e8c816080015160008151811062003e355762003e356200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3100000000000000000000000000000081525062006209565b62003f01816080015160018151811062003eaa5762003eaa6200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3200000000000000000000000000000081525062006331565b62003f69816040015160008151811062003f1f5762003f1f6200929d565b6020026020010151600a61ffff166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3300000000000000000000000000000081525062006209565b62003fe1816060015160008151811062003f875762003f876200929d565b6020026020010151600181111562003fa35762003fa3620095c4565b60016040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3400000000000000000000000000000081525062006209565b602854604051623e40a960e61b815268056bc75e2d6310000093506001600160a01b0390911690630f902a4090620040209086908690600401620092b3565b600060405180830381865afa1580156200403e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004068919081019062009437565b9050620040df81608001516000815181106200408857620040886200929d565b60200260200101516001600160801b0316836001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3500000000000000000000000000000081525062006209565b6200415c8160800151600181518110620040fd57620040fd6200929d565b60200260200101516001600160801b0316836001600160801b031666b1a2bc2ec500006040518060400160405280601181526020017f746573745f5363656e6172696f323a3a360000000000000000000000000000008152506200627d565b620041c081604001516000815181106200417a576200417a6200929d565b602002602001015160006040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3700000000000000000000000000000081525062006209565b620042388160600151600081518110620041de57620041de6200929d565b60200260200101516001811115620041fa57620041fa620095c4565b60006040518060400160405280601181526020017f746573745f5363656e6172696f323a3a3800000000000000000000000000000081525062006209565b602854604051632c90a11360e11b8152662386f26fc10000916001600160a01b031690635921422690620042739087908590600401620092b3565b600060405180830381865afa15801562004291573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620042bb919081019062009437565b9150620043328260800151600081518110620042db57620042db6200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601181526020017f746573745f5363656e6172696f323a3a390000000000000000000000000000008152506200636e565b620043a782608001516001815181106200435057620043506200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3130000000000000000000000000000081525062006209565b6200440f8260400151600081518110620043c557620043c56200929d565b6020026020010151600a61ffff166040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3131000000000000000000000000000081525062006209565b6200448782606001516000815181106200442d576200442d6200929d565b60200260200101516001811115620044495762004449620095c4565b60016040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3132000000000000000000000000000081525062006209565b50602854604051632c90a11360e11b815268056bc75e2d63100000916001600160a01b031690635921422690620044c59087908590600401620092b3565b600060405180830381865afa158015620044e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200450d919081019062009437565b91506200458c82608001516000815181106200452d576200452d6200929d565b60200260200101516001600160801b0316826001600160801b031666b1a2bc2ec500006040518060400160405280601281526020017f746573745f5363656e6172696f323a3a313300000000000000000000000000008152506200627d565b620046018260800151600181518110620045aa57620045aa6200929d565b60200260200101516001600160801b0316826001600160801b03166040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3134000000000000000000000000000081525062006209565b6200466582604001516000815181106200461f576200461f6200929d565b602002602001015160006040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3135000000000000000000000000000081525062006209565b620019a182606001516000815181106200468357620046836200929d565b602002602001015160018111156200469f576200469f620095c4565b60006040518060400160405280601281526020017f746573745f5363656e6172696f323a3a3136000000000000000000000000000081525062006209565b670de0b6b3a76400008311156200473b5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062004749838362001ca9565b905060008167ffffffffffffffff81111562004769576200476962008d94565b60405190808252806020026020018201604052801562004793578160200160208202803683370190505b50905060008267ffffffffffffffff811115620047b457620047b462008d94565b604051908082528060200260200182016040528015620047de578160200160208202803683370190505b50905060005b83811015620048ec576000620047fc898388620034a1565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562004852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004878919062008ecd565b90508162ffffff168584815181106200489557620048956200929d565b6020908102919091010152620048b5818a670de0b6b3a764000062006441565b848481518110620048ca57620048ca6200929d565b602002602001018181525050505080620048e49062009651565b9050620047e4565b5060405163ca669fa760e01b81526001600160a01b038b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200494357600080fd5b505af115801562004958573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062004990908d908d9087908790600401620097b0565b6000604051808303816000875af1158015620049b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620049da9190810190620097fd565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362004ae957601c54604051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b4d6c782916001600160a01b039091169062004a529062008836565b604051809103906000f08015801562004a6f573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162004ab492919062009836565b600060405180830381600087803b15801562004acf57600080fd5b505af115801562004ae4573d6000803e3d6000fd5b505050505b600660405162004af99062008844565b60ff9091168152602001604051809103906000f08015801562004b20573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062004b529062008844565b60ff9091168152602001604051809103906000f08015801562004b79573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062004bab9062008844565b60ff9091168152602001604051809103906000f08015801562004bd2573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062004c049062008844565b60ff9091168152602001604051809103906000f08015801562004c2b573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062004c5d9062008844565b60ff9091168152602001604051809103906000f08015801562004c84573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062004cb69062008844565b60ff9091168152602001604051809103906000f08015801562004cdd573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039290921691909117905560405162004d0c9062008852565b604051809103906000f08015801562004d29573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b15801562004dcf57600080fd5b505af115801562004de4573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562004e6157600080fd5b505af115801562004e76573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562004ef357600080fd5b505af115801562004f08573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562004f8557600080fd5b505af115801562004f9a573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200501757600080fd5b505af11580156200502c573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620050a957600080fd5b505af1158015620050be573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200513557600080fd5b505af11580156200514a573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620051db57600080fd5b505af1158015620051f0573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d2000090620052779062008860565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620052b2573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620052e0906200886e565b6001600160a01b039091168152602001604051809103906000f0801580156200530d573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200536c57600080fd5b505af115801562005381573d6000803e3d6000fd5b505050506200538f6200646f565b6200539b600a62006812565b602454602b54601c546040516001600160a01b03938416939283169290911690620053c6906200887c565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562005403573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b54602454604051918416931691906200543e906200888a565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200547b573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200552157600080fd5b505af115801562005536573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620055c757600080fd5b505af1158015620055dc573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200567057600080fd5b505af115801562005685573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200571657600080fd5b505af11580156200572b573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620057bc57600080fd5b505af1158015620057d1573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200586257600080fd5b505af115801562005877573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af1158015620058d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058f891906200967e565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200597691906200967e565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620059ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059f491906200967e565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005a4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a7291906200967e565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005aca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005af091906200967e565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005b48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b6e91906200967e565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bec91906200967e565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005c44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005c6a91906200967e565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005cc2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ce891906200967e565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005d40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d6691906200967e565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005dbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005de491906200967e565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005e3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005e6291906200967e565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005eba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ee091906200967e565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005f38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f5e91906200967e565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562005fb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005fdc91906200967e565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006034573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200605a91906200967e565b50565b6200606c8383836000620068b9565b505050565b6200610f604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b600080600080620061238989898962006abc565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff16815260200160008152602001620061a18a8762006dcb90919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a001620061f8426103e862008f44565b90529b9a5050505050505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859062006246908690869086906004016200985a565b60006040518083038186803b1580156200625f57600080fd5b505afa15801562006274573d6000803e3d6000fd5b50505050505050565b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390620062bc9087908790879087906004016200987b565b60006040518083038186803b158015620062d557600080fd5b505afa158015620062ea573d6000803e3d6000fd5b5050505050505050565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d1906200624690869086908690600401620098a2565b604051636cd1e26960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d9a3c4d29062006246908690869086906004016200985a565b6040516365d5c13560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906365d5c1359062006246908690869086906004016200985a565b8062ffffff81168114620063d257604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff81168114620063d25760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b600080600062006452868662006e8f565b9150915062006465868686858562006eae565b9695505050505050565b601c546001600160a01b031615620064e45760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620064ca57600080fd5b505af1158015620064df573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620065595760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200653f57600080fd5b505af115801562006554573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620065ce5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620065b457600080fd5b505af1158015620065c9573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620066435760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200662957600080fd5b505af11580156200663e573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620066b85760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200669e57600080fd5b505af1158015620066b3573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200672d5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200671357600080fd5b505af115801562006728573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620067a25760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200678857600080fd5b505af11580156200679d573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562001be35760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620067fd57600080fd5b505af1158015620019a1573d6000803e3d6000fd5b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200689d57600080fd5b505af1158015620068b2573d6000803e3d6000fd5b5050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928716916200690f91620098d0565b600060405180830381855afa9150503d80600081146200694c576040519150601f19603f3d011682016040523d82523d6000602084013e62006951565b606091505b509150506000818060200190518101906200696d919062008ecd565b9050620069a784620069a087620069996370a0823160e01b62006992600c8d62006f60565b9062006f88565b9062006fa6565b9062006fcf565b821562006ab45760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620069f29190620098d0565b600060405180830381855afa9150503d806000811462006a2f576040519150601f19603f3d011682016040523d82523d6000602084013e62006a34565b606091505b5091505060008180602001905181019062006a50919062008ecd565b90508286101562006a7b5762006a6786846200963b565b62006a7390826200963b565b905062006a96565b62006a8783876200963b565b62006a93908262008f44565b90505b620062ea81620069a06318160ddd60e01b62006992600c8d62006f60565b505050505050565b60608080600062006acf600287620098ee565b62ffffff1660000362006b255760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e73604482015260640162004732565b600062006b3460028862009913565b90508662ffffff1667ffffffffffffffff81111562006b575762006b5762008d94565b60405190808252806020026020018201604052801562006b81578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff81111562006ba55762006ba562008d94565b60405190808252806020026020018201604052801562006bcf578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff81111562006bf35762006bf362008d94565b60405190808252806020026020018201604052801562006c1d578160200160208202803683370190505b509250600062006c2f82600162008fa9565b62006c489062ffffff16670de0b6b3a764000062008f2d565b9050600062006c5983600162008fa9565b62006c6a9062ffffff168c62008f2d565b905060005b8962ffffff1681101562006dbc5762006c8a89600162008fa9565b62006c9b9062ffffff168262008efd565b62006ca88a600162008fa9565b62006cb490866200992c565b62006cc0908d6200994e565b62ffffff1662006cd1919062008f44565b88828151811062006ce65762006ce66200929d565b6020026020010181815250508362ffffff16811162006d22578286828151811062006d155762006d156200929d565b6020026020010181815250505b8362ffffff16811062006da7578287828151811062006d455762006d456200929d565b6020026020010181815250506000821162006d6257600062006d98565b62006d98608062006d8f8a848151811062006d815762006d816200929d565b602002602001015162006fdb565b84919062006fea565b62006da4908662008f44565b94505b8062006db38162009651565b91505062006c6f565b50505050945094509450949050565b6060825167ffffffffffffffff81111562006dea5762006dea62008d94565b60405190808252806020026020018201604052801562006e14578160200160208202803683370190505b50905060005b835181101562006e88578262ffffff1684828151811062006e3f5762006e3f6200929d565b602002602001015162006e5391906200996d565b82828151811062006e685762006e686200929d565b60209081029190910101528062006e7f8162009651565b91505062006e1a565b5092915050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362006ed45783838162006ecb5762006ecb62008f17565b049050620034f3565b83821062006ef5576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c17905560008262006f81565b6002820180546001810182556000918252602082206001600160a01b0384169101558262006f81565b6200349d828262007016565b600062001cf882600a6200742d565b600060ff831684811b9061ffff6101008290031686901c90620064659087906001901b86858562006eae565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200708957602002820191906000526020600020905b81548152602001906001019080831162007074575b505050505090506000836200709e836200746a565b604051602001620070b192919062009990565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162007105918691889101620099c3565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662007140576200713e8762007517565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162007181918791899101620099c3565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620071c89190620098d0565b600060405180830381855afa9150503d806000811462007205576040519150601f19603f3d011682016040523d82523d6000602084013e6200720a565b606091505b509150620072279050816200722188602062008efd565b62007524565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200728e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072b4919062008ecd565b90508082146200736b5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004732565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620073cf57600080fd5b505af1158015620073e4573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200741960028b01600062008898565b896004016000905550505050505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901620034f38282620075c6565b60606000825160206200747e919062008efd565b67ffffffffffffffff81111562007499576200749962008d94565b6040519080825280601f01601f191660200182016040528015620074c4576020820181803683370190505b50905060005b835181101562006e88576000848281518110620074eb57620074eb6200929d565b6020026020010151905080826020026020018401525080806200750e9062009651565b915050620074ca565b600062001cf88262007845565b600080600060208551116200753b5784516200753e565b60205b905060005b81811015620075bc576200755981600862008efd565b8662007566838862008f44565b815181106200757957620075796200929d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620075b38162009651565b91505062007543565b5090949350505050565b600080600083600003620075e45750600160801b915062001cf89050565b50826000811215620075f7579015906000035b62100000811015620077fd57600160801b9250846001600160801b038111156200762357911591600019045b6001821615620076355792830260801c925b800260801c60028216156200764c5792830260801c925b800260801c6004821615620076635792830260801c925b800260801c60088216156200767a5792830260801c925b800260801c6010821615620076915792830260801c925b800260801c6020821615620076a85792830260801c925b800260801c6040821615620076bf5792830260801c925b8002608090811c90821615620076d75792830260801c925b800260801c610100821615620076ef5792830260801c925b800260801c610200821615620077075792830260801c925b800260801c6104008216156200771f5792830260801c925b800260801c610800821615620077375792830260801c925b800260801c6110008216156200774f5792830260801c925b800260801c612000821615620077675792830260801c925b800260801c6140008216156200777f5792830260801c925b800260801c618000821615620077975792830260801c925b800260801c62010000821615620077b05792830260801c925b800260801c62020000821615620077c95792830260801c925b800260801c62040000821615620077e25792830260801c925b800260801c62080000821615620077fb5792830260801c925b505b826000036200782a57604051631dba598d60e11b8152600481018690526024810185905260440162004732565b81620078375782620034f3565b620034f38360001962008f2d565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b949387939192909190830182828015620078b757602002820191906000526020600020905b815481526020019060010190808311620078a2575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200790392508591879101620099c3565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620079a2576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162007972918591879101620099c3565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b600083620079b083620086f1565b604051602001620079c392919062009990565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007a3357600080fd5b505af115801562007a48573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162007a699190620098d0565b600060405180830381855afa9150503d806000811462007aa6576040519150601f19603f3d011682016040523d82523d6000602084013e62007aab565b606091505b50915062007ac890508162007ac287602062008efd565b6200879e565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562007b2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262007b549190810190620099ff565b509050805160010362007ef85760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062007bac5762007bac6200929d565b60200260200101516040518363ffffffff1660e01b815260040162007be69291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007c04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c2a919062008ecd565b90508062007c95577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062007c6a5762007c6a6200929d565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462007d4a5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162004732565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162007d82929190620099c3565b604051602081830303815290604052805190602001208560008151811062007dae5762007dae6200929d565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062007e085762007e086200929d565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262007e53918a918c9101620099c3565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162007ebd918a918c9101620099c3565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062008566565b600181511115620084f55760005b8151811015620084ee5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062007f5a5762007f5a6200929d565b60200260200101516040518363ffffffff1660e01b815260040162007f949291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562007fb2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fd8919062008ecd565b90508062008042577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200801757620080176200929d565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620080515750620084d9565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200808957620080896200929d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620080e257600080fd5b505af1158015620080f7573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620081199190620098d0565b600060405180830381855afa9150503d806000811462008156576040519150601f19603f3d011682016040523d82523d6000602084013e6200815b565b606091505b509092509050620081738162007ac28c602062008efd565b9650508080156200818357508186145b156200841b577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620081c1929190620099c3565b60405160208183030381529060405280519060200120888881518110620081ec57620081ec6200929d565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200824557620082456200929d565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262008290918d918f9101620099c3565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200831d929190620099c3565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620083a057620083a06200929d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620083f957600080fd5b505af11580156200840e573d6000803e3d6000fd5b50505050505050620084ee565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200846357620084636200929d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620084bc57600080fd5b505af1158015620084d1573d6000803e3d6000fd5b505050505050505b80620084e58162009651565b91505062007f06565b5062008566565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162004732565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620085aa9188918a9101620099c3565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff16620086475760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162004732565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200867860028a01600062008898565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620086be9188918a9101620099c3565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062008705919062008efd565b67ffffffffffffffff81111562008720576200872062008d94565b6040519080825280601f01601f1916602001820160405280156200874b576020820181803683370190505b50905060005b835181101562006e885760008482815181106200877257620087726200929d565b602002602001015190508082602002602001840152508080620087959062009651565b91505062008751565b60008060006020855111620087b5578451620087b8565b60205b905060005b81811015620075bc57620087d381600862008efd565b86620087e0838862008f44565b81518110620087f357620087f36200929d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200882d8162009651565b915050620087bd565b610b088062009a6b83390190565b610bfd806200a57383390190565b610c18806200b17083390190565b613199806200bd8883390190565b61615c806200ef2183390190565b614c80806201507d83390190565b612c138062019cfd83390190565b50805460008255906000526020600020908101906200605a91905b80821115620088c95760008155600101620088b3565b5090565b600060208284031215620088e057600080fd5b81356001600160e01b03198116811462006f8157600080fd5b600081518084526020808501945080840160005b83811015620089345781516001600160a01b0316875295820195908201906001016200890d565b509495945050505050565b60208152600062006f816020830184620088f9565b60005b838110156200897157818101518382015260200162008957565b50506000910152565b600081518084526200899481602086016020860162008954565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562008a5e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562008a4757605f1989850301835262008a348486516200897a565b948e01949350918d019160010162008a15565b505050978a019794505091880191600101620089cf565b50919a9950505050505050505050565b803560ff81168114620063d257600080fd5b6000806040838503121562008a9457600080fd5b62008a9f8362008a6e565b915062008aaf6020840162008a6e565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562008b6057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562008b4a5783516001600160e01b0319168252928b019260019290920191908b019062008b1e565b50978a0197955050509187019160010162008ae0565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008bc857603f1988860301845262008bb58583516200897a565b9450928501929085019060010162008b96565b5092979650505050505050565b803562ffffff81168114620063d257600080fd5b60008060006060848603121562008bff57600080fd5b62008c0a8462008bd5565b92506020840135915062008c216040850162008a6e565b90509250925092565b6001600160a01b03811681146200605a57600080fd5b600080600080600080600080610100898b03121562008c5e57600080fd5b883562008c6b8162008c2a565b9750602089013562008c7d8162008c2a565b9650604089013562008c8f8162008c2a565b955062008c9f60608a0162008bd5565b94506080890135935060a0890135925062008cbd60c08a0162008a6e565b915062008ccd60e08a0162008a6e565b90509295985092959890939650565b60006020828403121562008cef57600080fd5b813561ffff8116811462006f8157600080fd5b600080600080600080600060e0888a03121562008d1e57600080fd5b873562008d2b8162008c2a565b9650602088013562008d3d8162008c2a565b9550604088013562008d4f8162008c2a565b945062008d5f6060890162008bd5565b93506080880135925062008d7660a0890162008a6e565b915062008d8660c0890162008a6e565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562008dd05762008dd062008d94565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562008e025762008e0262008d94565b604052919050565b60006020828403121562008e1d57600080fd5b815167ffffffffffffffff8082111562008e3657600080fd5b818401915084601f83011262008e4b57600080fd5b81518181111562008e605762008e6062008d94565b62008e75601f8201601f191660200162008dd6565b915080825285602082850101111562008e8d57600080fd5b62008ea081602084016020860162008954565b50949350505050565b60408152600062008ebe60408301856200897a565b90508260208301529392505050565b60006020828403121562008ee057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762001cf85762001cf862008ee7565b634e487b7160e01b600052601260045260246000fd5b60008262008f3f5762008f3f62008f17565b500490565b8082018082111562001cf85762001cf862008ee7565b60008060006060848603121562008f7057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121562008f9c57600080fd5b815162006f818162008c2a565b62ffffff81811683821601908082111562006e885762006e8862008ee7565b600081518084526020808501945080840160005b83811015620089345781518752958201959082019060010162008fdc565b60208152620090156020820183516001600160a01b03169052565b600060208301516200903260408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e06101408181860152620090a361020086018462008fc8565b9250808601519050601f19610160818786030181880152620090c6858462008fc8565b945080880151925050610180818786030181880152620090e7858462008fc8565b945080880151925050506101a062009109818701836001600160a01b03169052565b86015190506101c062009126868201836001600160a01b03169052565b959095015193019290925250919050565b600067ffffffffffffffff82111562009154576200915462008d94565b5060051b60200190565b600082601f8301126200917057600080fd5b8151602062009189620091838362009137565b62008dd6565b82815260059290921b84018101918181019086841115620091a957600080fd5b8286015b84811015620091c65780518352918301918301620091ad565b509695505050505050565b60008060008060008060c08789031215620091eb57600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff808211156200922057600080fd5b6200922e8a838b016200915e565b935060a08901519150808211156200924557600080fd5b506200925489828a016200915e565b9150509295509295509295565b600181811c908216806200927657607f821691505b6020821081036200929757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b604081526000620092c86040830185620088f9565b90506001600160801b03831660208301529392505050565b600082601f830112620092f257600080fd5b8151602062009305620091838362009137565b82815260059290921b840181019181810190868411156200932557600080fd5b8286015b84811015620091c65780516200933f8162008c2a565b835291830191830162009329565b600082601f8301126200935f57600080fd5b8151602062009372620091838362009137565b82815260059290921b840181019181810190868411156200939257600080fd5b8286015b84811015620091c657805160028110620093b05760008081fd5b835291830191830162009396565b600082601f830112620093d057600080fd5b81516020620093e3620091838362009137565b82815260059290921b840181019181810190868411156200940357600080fd5b8286015b84811015620091c65780516001600160801b0381168114620094295760008081fd5b835291830191830162009407565b6000602082840312156200944a57600080fd5b815167ffffffffffffffff808211156200946357600080fd5b9083019060e082860312156200947857600080fd5b6200948262008daa565b8251828111156200949257600080fd5b620094a087828601620092e0565b825250602083015182811115620094b657600080fd5b620094c487828601620092e0565b602083015250604083015182811115620094dd57600080fd5b620094eb878286016200915e565b6040830152506060830151828111156200950457600080fd5b62009512878286016200934d565b6060830152506080830151828111156200952b57600080fd5b6200953987828601620093be565b60808301525060a0830151828111156200955257600080fd5b6200956087828601620093be565b60a08301525060c0830151828111156200957957600080fd5b6200958787828601620093be565b60c08301525095945050505050565b6001600160801b03818116838216028082169190828114620095bc57620095bc62008ee7565b505092915050565b634e487b7160e01b600052602160045260246000fd5b60006001600160801b0380841680620095f757620095f762008f17565b92169190910492915050565b60ff818116838216019081111562001cf85762001cf862008ee7565b60ff828116828216039081111562001cf85762001cf862008ee7565b8181038181111562001cf85762001cf862008ee7565b60006001820162009666576200966662008ee7565b5060010190565b80518015158114620063d257600080fd5b6000602082840312156200969157600080fd5b62006f81826200966d565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620096e957855183529483019491830191600101620096cb565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200971857600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200973e57600080fd5b6200974c868287016200915e565b9150509250925092565b600080600080600080600080610100898b0312156200977457600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062008ccd60e08a016200966d565b60006001600160a01b03808716835280861660208401525060806040830152620097de608083018562008fc8565b8281036060840152620097f2818562008fc8565b979650505050505050565b6000602082840312156200981057600080fd5b815167ffffffffffffffff8111156200982857600080fd5b62006439848285016200915e565b6001600160a01b03831681526040602082015260006200643960408301846200897a565b838152826020820152606060408201526000620034f360608301846200897a565b8481528360208201528260408201526080606082015260006200646560808301846200897a565b60006001600160a01b03808616835280851660208401525060606040830152620034f360608301846200897a565b60008251620098e481846020870162008954565b9190910192915050565b600062ffffff8084168062009907576200990762008f17565b92169190910692915050565b600062ffffff80841680620095f757620095f762008f17565b62ffffff818116838216028082169190828114620095bc57620095bc62008ee7565b62ffffff82811682821603908082111562006e885762006e8862008ee7565b818103600083128015838313168383128216171562006e885762006e8862008ee7565b6001600160e01b0319831681528151600090620099b581600485016020870162008954565b919091016004019392505050565b825160009082906020808701845b83811015620099ef57815185529382019390820190600101620099d1565b5050948252509092019392505050565b6000806040838503121562009a1357600080fd5b825167ffffffffffffffff8082111562009a2c57600080fd5b62009a3a868387016200915e565b9350602085015191508082111562009a5157600080fd5b5062009a60858286016200915e565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033a26469706673582212203be549c3e7eaacd4bc8183ce035e793121d0714749efd83c77dbe32b0d1f08d364736f6c63430008140033","sourceMap":"591:11316:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;854:2676:96;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;8075:1929:96:-;;;:::i;3536:340::-;;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4249:25:105;;;4237:2;4222:18;12046:168:93;4103:177:105;4241:1927:96;;;:::i;10010:1895::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3882:353:96:-;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;7355:8:105;7343:21;;;7325:40;;7313:2;7298:18;12220:205:93;7181:190:105;3069:146:5;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;2304:142:5:-;;;:::i;6174:1895:96:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;854:2676:96:-;917:22;;-1:-1:-1;;;917:22:96;;9751:2:105;917:22:96;;;9733:21:105;9790:1;9770:18;;;9763:29;9828:11;9808:18;;;9801:39;897:19:96;;;;;;917:9;;9857:18:105;;917:22:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;917:22:96;;;;;;;;;;;;:::i;:::-;941:8;897:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;960:13;:11;:13::i;:::-;1124:4;;1013;;1057;;1111:60;;-1:-1:-1;;;;;1124:4:96;1139;1146:24;1057:4;1146:2;:24;:::i;:::-;1111:4;:60::i;:::-;1194:4;;1181:60;;-1:-1:-1;;;;;1194:4:96;1209;1216:24;1221:19;1216:2;:24;:::i;1181:60::-;1264:7;;1251:63;;-1:-1:-1;;;;;1264:7:96;1282:4;1289:24;1294:19;1289:2;:24;:::i;1251:63::-;1337:4;;1324:60;;-1:-1:-1;;;;;1337:4:96;1352;1359:24;1364:19;1359:2;:24;:::i;1324:60::-;1407:3;;1394:59;;-1:-1:-1;;;;;1407:3:96;1421:4;1428:24;1433:19;1428:2;:24;:::i;1394:59::-;1495:8;;1538:4;;1565;;-1:-1:-1;;;;;1495:8:96;;;;:21;;1538:4;;;1565;1584:22;1605:1;1584:18;:22;:::i;:::-;1639:18;1671:1;;1709:4;1728:19;:15;1746:1;1728:19;:::i;:::-;1495:262;;;;;;-1:-1:-1;;;;;;1495:262:96;;;-1:-1:-1;;;;;12910:15:105;;;1495:262:96;;;12892:34:105;12962:15;;;12942:18;;;12935:43;12994:18;;;12987:34;;;;13037:18;;;13030:34;;;;13080:19;;;13073:35;;;;13124:19;;;13117:35;13189:15;;;13168:19;;;13161:44;13221:19;;;13214:35;;;;12803:19;;1495:262:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1768:8:96;;1811:7;;1841:4;;-1:-1:-1;;;;;1768:8:96;;;;-1:-1:-1;1768:21:96;;1811:7;;;;1841:4;1860:19;;1768:8;;1985:4;2004:19;:15;1768:8;2004:19;:::i;:::-;1768:265;;;;;;-1:-1:-1;;;;;;1768:265:96;;;-1:-1:-1;;;;;12910:15:105;;;1768:265:96;;;12892:34:105;12962:15;;;12942:18;;;12935:43;12994:18;;;12987:34;;;;13037:18;;;13030:34;;;;13080:19;;;13073:35;;;;13124:19;;;13117:35;13189:15;;;13168:19;;;13161:44;13221:19;;;13214:35;;;;12803:19;;1768:265:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2044:8:96;;2087:4;;2114;;-1:-1:-1;;;;;2044:8:96;;;;-1:-1:-1;2044:21:96;;2087:4;;;;2114;2133:22;2154:1;2133:18;:22;:::i;:::-;2188:18;2220:1;;2258:4;2277:19;:15;2295:1;2277:19;:::i;:::-;2044:262;;;;;;-1:-1:-1;;;;;;2044:262:96;;;-1:-1:-1;;;;;12910:15:105;;;2044:262:96;;;12892:34:105;12962:15;;;12942:18;;;12935:43;12994:18;;;12987:34;;;;13037:18;;;13030:34;;;;13080:19;;;13073:35;;;;13124:19;;;13117:35;13189:15;;;13168:19;;;13161:44;13221:19;;;13214:35;;;;12803:19;;2044:262:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2317:7:96;;;2338:4;;2344;;2317:58;;-1:-1:-1;;;2317:58:96;;-1:-1:-1;;;;;2338:4:96;;;2317:58;;;13897:34:105;2344:4:96;;;13947:18:105;;;13940:43;;;;992:7:93;13999:18:105;;;13992:49;1147:2:93;14057:18:105;;;14050:47;2317:7:96;;-1:-1:-1;2317:20:96;;13808:19:105;;2317:58:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2404:7:96;;2425;;2434:4;;-1:-1:-1;;;;;2404:7:96;;;;:20;;2425:7;;;2434:4;2440:11;992:7:93;2449:2:96;2440:11;:::i;:::-;2404:66;;-1:-1:-1;;;;;;2404:66:96;;;;;;;-1:-1:-1;;;;;13915:15:105;;;2404:66:96;;;13897:34:105;13967:15;;;;13947:18;;;13940:43;14031:8;14019:21;13999:18;;;13992:49;1147:2:93;14057:18:105;;;14050:47;13808:19;;2404:66:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2502:7:96;;;2523:4;;2529;;2502:58;;-1:-1:-1;;;2502:58:96;;-1:-1:-1;;;;;2523:4:96;;;2502:58;;;13897:34:105;2529:4:96;;;13947:18:105;;;13940:43;;;;992:7:93;13999:18:105;;;13992:49;1147:2:93;14057:18:105;;;14050:47;2502:7:96;;:20;;13808:19:105;;2502:58:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2589:7:96;;2610:3;;2615:4;;-1:-1:-1;;;;;2589:7:96;;;;:20;;2610:3;;;2615:4;2621:11;992:7:93;2630:2:96;2621:11;:::i;:::-;2589:62;;-1:-1:-1;;;;;;2589:62:96;;;;;;;-1:-1:-1;;;;;13915:15:105;;;2589:62:96;;;13897:34:105;13967:15;;;;13947:18;;;13940:43;14031:8;14019:21;13999:18;;;13992:49;1147:2:93;14057:18:105;;;14050:47;13808:19;;2589:62:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2805:4:96;;2811;;2711:56;;2782:69;;-1:-1:-1;;;;;2805:4:96;;;;2811;2817:19;992:7:93;2846:1:96;2711:56;2782:22;:69::i;:::-;2861:6;;:40;;-1:-1:-1;;;2861:40:96;;2711:140;;-1:-1:-1;;;;;;2861:6:96;;:19;;:40;;2711:140;;2861:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2861:40:96;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2957:7:96;;2966:4;;2934:76;;-1:-1:-1;;;;;;2957:7:96;;;;-1:-1:-1;2966:4:96;;-1:-1:-1;2972:18:96;;-1:-1:-1;2992:11:96;992:7:93;3001:2:96;2992:11;:::i;:::-;3005:1;3008;2934:22;:76::i;:::-;3020:6;;:40;;-1:-1:-1;;;3020:40:96;;2912:98;;-1:-1:-1;;;;;;3020:6:96;;:19;;:40;;2912:98;;3020:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3020:40:96;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3116:4:96;;3122;;3093:69;;-1:-1:-1;;;;;;3116:4:96;;;;-1:-1:-1;3122:4:96;;-1:-1:-1;3128:19:96;;-1:-1:-1;992:7:93;3157:1:96;3116:4;3093:22;:69::i;:::-;3172:6;;:40;;-1:-1:-1;;;3172:40:96;;3071:91;;-1:-1:-1;;;;;;3172:6:96;;:19;;:40;;3071:91;;3172:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3172:40:96;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3268:3:96;;3273:4;;3245:73;;-1:-1:-1;;;;;;3268:3:96;;;;-1:-1:-1;3273:4:96;;-1:-1:-1;3279:19:96;;-1:-1:-1;3300:11:96;992:7:93;3309:2:96;3300:11;:::i;3245:73::-;3328:6;;:40;;-1:-1:-1;;;3328:40:96;;3223:95;;-1:-1:-1;;;;;;3328:6:96;;:19;;:40;;3223:95;;3328:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3328:40:96;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3424:3:96;;3429:4;;3401:72;;-1:-1:-1;;;;;;3424:3:96;;;;-1:-1:-1;3429:4:96;;-1:-1:-1;3435:18:96;;-1:-1:-1;3455:11:96;992:7:93;3464:2:96;3455:11;:::i;3401:72::-;3483:6;;:40;;-1:-1:-1;;;3483:40:96;;3379:94;;-1:-1:-1;;;;;;3483:6:96;;:19;;:40;;3379:94;;3483:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3483:40:96;;;;;;;;;;;;:::i;:::-;;;;;;;887:2643;;;854:2676::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;8075:1929:96:-;8218:16;;;8232:1;8218:16;;;;;;;;8193:22;;8218:16;;;;;;;;-1:-1:-1;;8263:4:96;;8244:8;;;;-1:-1:-1;;;;;;8263:4:96;;8244:8;;-1:-1:-1;8263:4:96;;8244:8;;;;:::i;:::-;-1:-1:-1;;;;;8244:24:96;;;:8;;;;;;;;;:24;8297:4;;8278:8;;8297:4;;;8278:5;;8297:4;;8278:8;;;;;;:::i;:::-;-1:-1:-1;;;;;8278:24:96;;;:8;;;;;;;;;:24;8402:6;;:48;;-1:-1:-1;;;8402:48:96;;8358:4;;8339:16;;8402:6;;:31;;:48;;8434:5;;8358:4;;8402:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8402:48:96;;;;;;;;;;;;:::i;:::-;8372:78;;8461:57;8470:5;:13;;;8484:1;8470:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;8461:57:96;8488:8;-1:-1:-1;;;;;8461:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;8528:76;8546:5;:13;;;8560:1;8546:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;8528:76:96;8564:8;8575:1;8564:12;;;;:::i;:::-;-1:-1:-1;;;;;8528:76:96;8578:4;8528:76;;;;;;;;;;;;;;;;;:17;:76::i;:::-;8614:51;8623:5;:14;;;8638:1;8623:17;;;;;;;;:::i;:::-;;;;;;;8642:1;8614:51;;;;;;;;;;;;;;;;;:8;:51::i;:::-;8675:60;8692:5;:14;;;8707:1;8692:17;;;;;;;;:::i;:::-;;;;;;;8684:26;;;;;;;;:::i;:::-;8712:1;8675:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;8807:6;;:48;;-1:-1:-1;;;8807:48:96;;8783:6;;-1:-1:-1;;;;;;8807:6:96;;;;:31;;:48;;8839:5;;8783:6;;8807:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8807:48:96;;;;;;;;;;;;:::i;:::-;8799:56;;8866:57;8875:5;:13;;;8889:1;8875:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;8866:57:96;8893:8;-1:-1:-1;;;;;8866:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;8933:72;8951:5;:13;;;8965:1;8951:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;8933:72:96;8969:8;-1:-1:-1;;;;;8933:72:96;8979:4;8933:72;;;;;;;;;;;;;;;;;:17;:72::i;:::-;9015:66;9024:5;:14;;;9039:1;9024:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;9015:66:96;;;;;;;;;;;;;;;;;;;:8;:66::i;:::-;9091:60;9108:5;:14;;;9123:1;9108:17;;;;;;;;:::i;:::-;;;;;;;9100:26;;;;;;;;:::i;:::-;9128:1;9091:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;9231:6;;:50;;-1:-1:-1;;;9231:50:96;;9209:4;;-1:-1:-1;;;;;9231:6:96;;:32;;:50;;9264:5;;9209:4;;9231:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9231:50:96;;;;;;;;;;;;:::i;:::-;9223:58;;9292:77;9310:5;:13;;;9324:1;9310:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9292:77:96;9340:1;9328:9;:13;;;;:::i;:::-;-1:-1:-1;;;;;9292:77:96;9343:4;9292:77;;;;;;;;;;;;;;;;;:17;:77::i;:::-;9379:59;9388:5;:13;;;9402:1;9388:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9379:59:96;9406:9;-1:-1:-1;;;;;9379:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;9448:52;9457:5;:14;;;9472:1;9457:17;;;;;;;;:::i;:::-;;;;;;;9476:1;9448:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;9510:61;9527:5;:14;;;9542:1;9527:17;;;;;;;;:::i;:::-;;;;;;;9519:26;;;;;;;;:::i;:::-;9547:1;9510:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;-1:-1:-1;9645:6:96;;:50;;-1:-1:-1;;;9645:50:96;;9621:6;;-1:-1:-1;;;;;9645:6:96;;:32;;:50;;9678:5;;9621:6;;9645:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9645:50:96;;;;;;;;;;;;:::i;:::-;9637:58;;9706:74;9724:5;:13;;;9738:1;9724:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9706:74:96;9742:9;-1:-1:-1;;;;;9706:74:96;9753:4;9706:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;9790:59;9799:5;:13;;;9813:1;9799:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;9790:59:96;9817:9;-1:-1:-1;;;;;9790:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;9859:67;9868:5;:14;;;9883:1;9868:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;9859:67:96;;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;9936:61;9953:5;:14;;;9968:1;9953:17;;;;;;;;:::i;:::-;;;;;;;9945:26;;;;;;;;:::i;:::-;9973:1;9936:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;8113:1891;;;;8075:1929::o;3536:340::-;3603:6;;:20;;;-1:-1:-1;;;3603:20:96;;;;3586:79;;-1:-1:-1;;;;;3603:6:96;;:18;;:20;;;;;;;;;;;;;;:6;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3634:6;;3586:79;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3634:6:96;;;;3586:8;:79::i;:::-;3692:6;;:21;;;-1:-1:-1;;;3692:21:96;;;;3675:103;;-1:-1:-1;;;;;3692:6:96;;:19;;:21;;;;;;;;;;;;;;:6;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;240:42:95;3675:103:96;;;;;;;;;;;;;;;;;:8;:103::i;:::-;3805:6;;:21;;;-1:-1:-1;;;3805:21:96;;;;3788:81;;-1:-1:-1;;;;;3805:6:96;;:19;;:21;;;;;;;;;;;;;;:6;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3837:7;;3788:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3837:7:96;;;;3788:8;:81::i;:::-;3536:340::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;4241:1927:96:-;4382:16;;;4396:1;4382:16;;;;;;;;4357:22;;4382:16;;;;;;;;-1:-1:-1;;4427:4:96;;4408:8;;;;-1:-1:-1;;;;;;4427:4:96;;4408:8;;-1:-1:-1;4427:4:96;;4408:8;;;;:::i;:::-;-1:-1:-1;;;;;4408:24:96;;;:8;;;;;;;;;:24;4461:4;;4442:8;;4461:4;;;4442:5;;4461:4;;4442:8;;;;;;:::i;:::-;-1:-1:-1;;;;;4442:24:96;;;:8;;;;;;;;;:24;4566:6;;:48;;-1:-1:-1;;;4566:48:96;;4522:4;;4503:16;;4566:6;;:31;;:48;;4598:5;;4522:4;;4566:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4566:48:96;;;;;;;;;;;;:::i;:::-;4536:78;;4625:57;4634:5;:13;;;4648:1;4634:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4625:57:96;4652:8;-1:-1:-1;;;;;4625:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;4692:76;4710:5;:13;;;4724:1;4710:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4692:76:96;4728:8;4739:1;4728:12;;;;:::i;:::-;-1:-1:-1;;;;;4692:76:96;4742:4;4692:76;;;;;;;;;;;;;;;;;:17;:76::i;:::-;4778:51;4787:5;:14;;;4802:1;4787:17;;;;;;;;:::i;:::-;;;;;;;4806:1;4778:51;;;;;;;;;;;;;;;;;:8;:51::i;:::-;4839:60;4856:5;:14;;;4871:1;4856:17;;;;;;;;:::i;:::-;;;;;;;4848:26;;;;;;;;:::i;:::-;4876:1;4839:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;4971:6;;:48;;-1:-1:-1;;;4971:48:96;;4947:6;;-1:-1:-1;;;;;;4971:6:96;;;;:31;;:48;;5003:5;;4947:6;;4971:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4971:48:96;;;;;;;;;;;;:::i;:::-;4963:56;;5030:57;5039:5;:13;;;5053:1;5039:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5030:57:96;5057:8;-1:-1:-1;;;;;5030:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;5097:72;5115:5;:13;;;5129:1;5115:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5097:72:96;5133:8;-1:-1:-1;;;;;5097:72:96;5143:4;5097:72;;;;;;;;;;;;;;;;;:17;:72::i;:::-;5179:66;5188:5;:14;;;5203:1;5188:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;5179:66:96;;;;;;;;;;;;;;;;;;;:8;:66::i;:::-;5255:60;5272:5;:14;;;5287:1;5272:17;;;;;;;;:::i;:::-;;;;;;;5264:26;;;;;;;;:::i;:::-;5292:1;5255:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;5395:6;;:50;;-1:-1:-1;;;5395:50:96;;5373:4;;-1:-1:-1;;;;;5395:6:96;;:32;;:50;;5428:5;;5373:4;;5395:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5395:50:96;;;;;;;;;;;;:::i;:::-;5387:58;;5456:77;5474:5;:13;;;5488:1;5474:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5456:77:96;5504:1;5492:9;:13;;;;:::i;:::-;-1:-1:-1;;;;;5456:77:96;5507:4;5456:77;;;;;;;;;;;;;;;;;:17;:77::i;:::-;5543:59;5552:5;:13;;;5566:1;5552:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5543:59:96;5570:9;-1:-1:-1;;;;;5543:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;5612:52;5621:5;:14;;;5636:1;5621:17;;;;;;;;:::i;:::-;;;;;;;5640:1;5612:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;5674:61;5691:5;:14;;;5706:1;5691:17;;;;;;;;:::i;:::-;;;;;;;5683:26;;;;;;;;:::i;:::-;5711:1;5674:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;-1:-1:-1;5809:6:96;;:50;;-1:-1:-1;;;5809:50:96;;5785:6;;-1:-1:-1;;;;;5809:6:96;;:32;;:50;;5842:5;;5785:6;;5809:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5809:50:96;;;;;;;;;;;;:::i;:::-;5801:58;;5870:74;5888:5;:13;;;5902:1;5888:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5870:74:96;5906:9;-1:-1:-1;;;;;5870:74:96;5917:4;5870:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;5954:59;5963:5;:13;;;5977:1;5963:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5954:59:96;5981:9;-1:-1:-1;;;;;5954:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;6023:67;6032:5;:14;;;6047:1;6032:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;6023:67:96;;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;6100:61;6117:5;:14;;;6132:1;6117:17;;;;;;;;:::i;:::-;;;;;;;6109:26;;;;;;;;:::i;:::-;6137:1;6100:61;;;;;;;;;;;;;;;;;:8;:61::i;10010:1895::-;10128:16;;;10142:1;10128:16;;;;;;;;10103:22;;10128:16;;;;;;;;-1:-1:-1;;10173:3:96;;10154:8;;;;-1:-1:-1;;;;;;10173:3:96;;10154:8;;-1:-1:-1;10173:3:96;;10154:8;;;;:::i;:::-;-1:-1:-1;;;;;10154:23:96;;;:8;;;;;;;;;:23;10206:4;;10187:8;;10206:4;;;10187:5;;10206:4;;10187:8;;;;;;:::i;:::-;-1:-1:-1;;;;;10187:24:96;;;:8;;;;;;;;;:24;10311:6;;:48;;-1:-1:-1;;;10311:48:96;;10267:4;;10248:16;;10311:6;;:31;;:48;;10343:5;;10267:4;;10311:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10311:48:96;;;;;;;;;;;;:::i;:::-;10281:78;;10370:57;10379:5;:13;;;10393:1;10379:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10370:57:96;10397:8;-1:-1:-1;;;;;10370:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;10437;10446:5;:13;;;10460:1;10446:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10437:57:96;10464:8;-1:-1:-1;;;;;10437:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;10504:66;10513:5;:14;;;10528:1;10513:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;10504:66:96;;;;;;;;;;;;;;;;;;;:8;:66::i;:::-;10580:60;10597:5;:14;;;10612:1;10597:17;;;;;;;;:::i;:::-;;;;;;;10589:26;;;;;;;;:::i;:::-;10617:1;10580:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;10712:6;;:48;;-1:-1:-1;;;10712:48:96;;10688:6;;-1:-1:-1;;;;;;10712:6:96;;;;:31;;:48;;10744:5;;10688:6;;10712:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10712:48:96;;;;;;;;;;;;:::i;:::-;10704:56;;10771:57;10780:5;:13;;;10794:1;10780:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10771:57:96;10798:8;-1:-1:-1;;;;;10771:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;10838:72;10856:5;:13;;;10870:1;10856:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;10838:72:96;10874:8;-1:-1:-1;;;;;10838:72:96;10884:4;10838:72;;;;;;;;;;;;;;;;;:17;:72::i;:::-;10920:66;10929:5;:14;;;10944:1;10929:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;10920:66:96;;;;;;;;;;;;;;;;;;;:8;:66::i;:::-;10996:60;11013:5;:14;;;11028:1;11013:17;;;;;;;;:::i;:::-;;;;;;;11005:26;;;;;;;;:::i;:::-;11033:1;10996:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;11136:6;;:50;;-1:-1:-1;;;11136:50:96;;11114:4;;-1:-1:-1;;;;;11136:6:96;;:32;;:50;;11169:5;;11114:4;;11136:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11136:50:96;;;;;;;;;;;;:::i;:::-;11128:58;;11197;11206:5;:13;;;11220:1;11206:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11197:58:96;11224:9;-1:-1:-1;;;;;11197:58:96;;;;;;;;;;;;;;;;;;:8;:58::i;:::-;11265:59;11274:5;:13;;;11288:1;11274:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11265:59:96;11292:9;-1:-1:-1;;;;;11265:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;11334:67;11343:5;:14;;;11358:1;11343:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;11334:67:96;;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;11411:61;11428:5;:14;;;11443:1;11428:17;;;;;;;;:::i;:::-;;;;;;;11420:26;;;;;;;;:::i;:::-;11448:1;11411:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;-1:-1:-1;11546:6:96;;:50;;-1:-1:-1;;;11546:50:96;;11522:6;;-1:-1:-1;;;;;11546:6:96;;:32;;:50;;11579:5;;11522:6;;11546:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11546:50:96;;;;;;;;;;;;:::i;:::-;11538:58;;11607:74;11625:5;:13;;;11639:1;11625:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11607:74:96;11643:9;-1:-1:-1;;;;;11607:74:96;11654:4;11607:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;11691:59;11700:5;:13;;;11714:1;11700:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11691:59:96;11718:9;-1:-1:-1;;;;;11691:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;11760:67;11769:5;:14;;;11784:1;11769:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;11760:67:96;;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;11837:61;11854:5;:14;;;11869:1;11854:17;;;;;;;;:::i;:::-;;;;;;;11846:26;;;;;;;;:::i;:::-;11874:1;11837:61;;;;;;;;;;;;;;;;;:8;:61::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3882:353:96;3969:16;;;3983:1;3969:16;;;;;;;;;3929:22;;3969:16;;;;;;;;;;;-1:-1:-1;;3995:57:96;;-1:-1:-1;;;3995:57:96;;-1:-1:-1;;;3995:57:96;;;25630:52:105;3961:24:96;;-1:-1:-1;3995:15:96;;;;25603:18:105;;3995:57:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4062:6:96;;:44;;-1:-1:-1;;;4062:44:96;;-1:-1:-1;;;;;4062:6:96;;;;-1:-1:-1;4062:31:96;;-1:-1:-1;4062:44:96;;4094:5;;4101:4;;4062:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4062:44:96;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4116:57:96;;-1:-1:-1;;;4116:57:96;;-1:-1:-1;;;4116:57:96;;;25630:52:105;4116:15:96;;;;25603:18:105;;4116:57:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4183:6:96;;:45;;-1:-1:-1;;;4183:45:96;;-1:-1:-1;;;;;4183:6:96;;;;-1:-1:-1;4183:32:96;;-1:-1:-1;4183:45:96;;4216:5;;4223:4;;4183:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4183:45:96;;;;;;;;;;;;:::i;:::-;;3919:316;3882:353::o;12220:205:93:-;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:1171:93;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;27199:55:105;;11033:19:93;;;27181:74:105;11033:13:93;;;;27154:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;27458:55:105;;;11062:41:93;;;27440:74:105;27530:18;;;27523:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;27413:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;27458:55:105;;;11113:41:93;;;27440:74:105;27530:18;;;27523:34;;;11113:15:93;;;;;27413:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;29468:6:105;29456:19;;12532:26:93;;;29438:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;29411:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;27440:74:105;;;1398:17:1;27530:18:105;;;27523:34;1428:1:1;;1377:7;;27413:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;6174:1895:96:-;6318:16;;;6332:1;6318:16;;;;;;;;6293:22;;6318:16;;;;;;;;-1:-1:-1;;6363:7:96;;6344:8;;;;-1:-1:-1;;;;;;6363:7:96;;6344:8;;-1:-1:-1;6363:7:96;;6344:8;;;;:::i;:::-;-1:-1:-1;;;;;6344:27:96;;;:8;;;;;;;;;:27;6400:4;;6381:8;;6400:4;;;6381:5;;6400:4;;6381:8;;;;;;:::i;:::-;-1:-1:-1;;;;;6381:24:96;;;:8;;;;;;;;;:24;6505:6;;:48;;-1:-1:-1;;;6505:48:96;;6461:4;;6442:16;;6505:6;;:31;;:48;;6537:5;;6461:4;;6505:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6505:48:96;;;;;;;;;;;;:::i;:::-;6475:78;;6564:57;6573:5;:13;;;6587:1;6573:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6564:57:96;6591:8;-1:-1:-1;;;;;6564:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;6631;6640:5;:13;;;6654:1;6640:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6631:57:96;6658:8;-1:-1:-1;;;;;6631:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;6698:66;6707:5;:14;;;6722:1;6707:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;6698:66:96;;;;;;;;;;;;;;;;;;;:8;:66::i;:::-;6774:60;6791:5;:14;;;6806:1;6791:17;;;;;;;;:::i;:::-;;;;;;;6783:26;;;;;;;;:::i;:::-;6811:1;6774:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;6906:6;;:48;;-1:-1:-1;;;6906:48:96;;6882:6;;-1:-1:-1;;;;;;6906:6:96;;;;:31;;:48;;6938:5;;6882:6;;6906:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6906:48:96;;;;;;;;;;;;:::i;:::-;6898:56;;6965:57;6974:5;:13;;;6988:1;6974:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6965:57:96;6992:8;-1:-1:-1;;;;;6965:57:96;;;;;;;;;;;;;;;;;;:8;:57::i;:::-;7032:72;7050:5;:13;;;7064:1;7050:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7032:72:96;7068:8;-1:-1:-1;;;;;7032:72:96;7078:4;7032:72;;;;;;;;;;;;;;;;;:17;:72::i;:::-;7114:51;7123:5;:14;;;7138:1;7123:17;;;;;;;;:::i;:::-;;;;;;;7142:1;7114:51;;;;;;;;;;;;;;;;;:8;:51::i;:::-;7175:60;7192:5;:14;;;7207:1;7192:17;;;;;;;;:::i;:::-;;;;;;;7184:26;;;;;;;;:::i;:::-;7212:1;7175:60;;;;;;;;;;;;;;;;;:8;:60::i;:::-;7315:6;;:50;;-1:-1:-1;;;7315:50:96;;7293:4;;-1:-1:-1;;;;;7315:6:96;;:32;;:50;;7348:5;;7293:4;;7315:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7315:50:96;;;;;;;;;;;;:::i;:::-;7307:58;;7376;7385:5;:13;;;7399:1;7385:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7376:58:96;7403:9;-1:-1:-1;;;;;7376:58:96;;;;;;;;;;;;;;;;;;:8;:58::i;:::-;7444:59;7453:5;:13;;;7467:1;7453:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7444:59:96;7471:9;-1:-1:-1;;;;;7444:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;7513:67;7522:5;:14;;;7537:1;7522:17;;;;;;;;:::i;:::-;;;;;;;1147:2:93;7513:67:96;;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;7590:61;7607:5;:14;;;7622:1;7607:17;;;;;;;;:::i;:::-;;;;;;;7599:26;;;;;;;;:::i;:::-;7627:1;7590:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;-1:-1:-1;7725:6:96;;:50;;-1:-1:-1;;;7725:50:96;;7701:6;;-1:-1:-1;;;;;7725:6:96;;:32;;:50;;7758:5;;7701:6;;7725:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7725:50:96;;;;;;;;;;;;:::i;:::-;7717:58;;7786:74;7804:5;:13;;;7818:1;7804:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7786:74:96;7822:9;-1:-1:-1;;;;;7786:74:96;7833:4;7786:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;7870:59;7879:5;:13;;;7893:1;7879:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7870:59:96;7897:9;-1:-1:-1;;;;;7870:59:96;;;;;;;;;;;;;;;;;;:8;:59::i;:::-;7939:52;7948:5;:14;;;7963:1;7948:17;;;;;;;;:::i;:::-;;;;;;;7967:1;7939:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;8001:61;8018:5;:14;;;8033:1;8018:17;;;;;;;;:::i;:::-;;;;;;;8010:26;;;;;;;;:::i;:::-;8038:1;8001:61;;;;;;;;;;;;;;;;;:8;:61::i;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;30819:2:105;11461:73:93;;;30801:21:105;30858:2;30838:18;;;30831:30;30897:26;30877:18;;;30870:54;30941:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;31161:55:105;;;11821:26:93;;;31143:74:105;31265:8;31253:21;;31233:18;;;31226:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;31116:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;27199:55:105;;11974:14:93;;;27181:74:105;11974:8:93;;;;27154:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;2755:7;;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;32870:4:105;32858:17;;;32840:36;;32828:2;32813:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;32870:4:105;32858:17;;;32840:36;;32828:2;32813:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;32870:4:105;32858:17;;;32840:36;;32828:2;32813:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;32870:4:105;32858:17;;;32840:36;;32828:2;32813:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;32870:4:105;32858:17;;;32840:36;;32828:2;32813:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;32870:4:105;32858:17;;;32840:36;;32828:2;32813:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;33498:74:105;33588:18;;;33581:30;;;;33647:1;33627:18;;;33620:29;33685:9;33665:18;;;33658:37;3125:8:93;;;;33712:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;33954:74:105;;;;34044:18;;;34037:30;;;;34083:18;;;34076:29;-1:-1:-1;;;34121:18:105;;;34114:34;3172:8:93;;-1:-1:-1;3172:8:93;;-1:-1:-1;34165:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;34407:74:105;;;;34497:18;;;34490:30;;;;34536:18;;;34529:29;-1:-1:-1;;;34574:18:105;;;34567:34;3213:8:93;;-1:-1:-1;3213:8:93;;-1:-1:-1;34618:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;34860:74:105;;;;34950:18;;;34943:30;;;;34989:18;;;34982:29;-1:-1:-1;;;35027:18:105;;;35020:34;3254:8:93;;-1:-1:-1;3254:8:93;;-1:-1:-1;35071:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;35313:74:105;;;;35403:18;;;35396:30;;;;35442:18;;;35435:29;-1:-1:-1;;;35480:18:105;;;35473:34;3295:8:93;;-1:-1:-1;3295:8:93;;-1:-1:-1;35524:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;35766:74:105;;;;35856:18;;;35849:30;;;;35895:18;;;35888:29;-1:-1:-1;;;35933:18:105;;;35926:34;3336:8:93;;-1:-1:-1;3336:8:93;;-1:-1:-1;35977:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;36219:74:105;36309:18;;;36302:30;36368:1;36348:18;;;36341:29;-1:-1:-1;;;36386:18:105;;;36379:33;3377:8:93;;-1:-1:-1;3377:8:93;;-1:-1:-1;36429:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;36671:74:105;36761:18;;;36754:30;36820:1;36800:18;;;36793:29;36858:10;36838:18;;;36831:38;3416:8:93;;-1:-1:-1;3416:8:93;;-1:-1:-1;36886:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;37213:15:105;;;37195:34;;37265:15;;;;37260:2;37245:18;;37238:43;37312:2;37297:18;;37290:34;37122:2;37107:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;27199:55:105;;;27181:74;;27169:2;27154:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;27181:74:105;;;;3824:7:93;;;;:31;;27154:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;37931:15:105;;;37913:34;;37983:15;;;37978:2;37963:18;;37956:43;38035:15;;;38030:2;38015:18;;38008:43;37840:2;37825:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;37931:15:105;;;37913:34;;37983:15;;;37978:2;37963:18;;37956:43;38035:15;;;38030:2;38015:18;;38008:43;37840:2;37825:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;38686:74:105;38776:18;;;38769:30;;;;38835:1;38815:18;;;38808:29;38873:8;38853:18;;;38846:36;4298:8:93;;;;38899:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;39141:74:105;39231:18;;;39224:30;39290:1;39270:18;;;39263:29;39328:8;39308:18;;;39301:36;4343:8:93;;-1:-1:-1;4343:8:93;;-1:-1:-1;39354:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;39596:74:105;39686:18;;;39679:30;;;;39745:1;39725:18;;;39718:29;39783:9;39763:18;;;39756:37;4388:8:93;;-1:-1:-1;4388:8:93;;-1:-1:-1;39810:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;40052:74:105;40142:18;;;40135:30;40201:2;40181:18;;;40174:30;40240:20;40220:18;;;40213:48;4435:8:93;;-1:-1:-1;4435:8:93;;-1:-1:-1;40278:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;40520:74:105;40610:18;;;40603:30;40669:1;40649:18;;;40642:29;40707:10;40687:18;;;40680:38;4528:8:93;;-1:-1:-1;4528:8:93;;-1:-1:-1;40735:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;40977:74:105;41067:18;;;41060:30;41126:1;41106:18;;;41099:29;41164:11;41144:18;;;41137:39;4577:8:93;;-1:-1:-1;4577:8:93;;-1:-1:-1;41193:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;27413:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;4729:4:93;;;:12;;27413:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;4789:4:93;;;:12;;27413:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;4849:4:93;;;:12;;27413:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;4909:4:93;;;:12;;27413:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;4969:4:93;;;:12;;27413:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5029:3:93;;;:11;;27413:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5088:8:93;;;:16;;27413:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5153:7:93;;;:15;;27413:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5214:4:93;;;:12;;27413:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5272:4:93;;;:12;;27413:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5330:4:93;;;:12;;27413:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5388:4:93;;;:12;;27413:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5446:4:93;;;:12;;27413:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5504:3:93;;;:11;;27413:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;27440:74:105;-1:-1:-1;;27530:18:105;;;27523:34;5561:8:93;;;:16;;27413:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;:::-;26935:117;;;:::o;7798:1036:93:-;8003:56;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8003:56:93;8072:20;8094:30;8126;8158:17;8191:52;8207:9;8218:7;8227:10;8239:3;8191:15;:52::i;:::-;8071:172;;;;;;;;8276:551;;;;;;;;8328:6;-1:-1:-1;;;;;8276:551:93;;;;;8356:6;-1:-1:-1;;;;;8276:551:93;;;;;1147:2;8276:551;;;;;;8424:9;8276:551;;;;8456:9;8276:551;;;;8491:1;8276:551;;;;8518:1;8276:551;;;;8550:7;8276:551;;;;;;8583:1;8276:551;;;;8608:30;8630:7;8608:3;:21;;:30;;;;:::i;:::-;8276:551;;;;;;;;;;;;;;-1:-1:-1;;;;;8740:3:93;8276:551;;;;;;;;;;;;;8794:22;:15;8812:4;8794:22;:::i;:::-;8276:551;;8254:573;7798:1036;-1:-1:-1;;;;;;;;;;;7798:1036:93:o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;18636:288::-;18862:55;;-1:-1:-1;;;18862:55:1;;:20;;;;:55;;18883:4;;18889:5;;18896:15;;18913:3;;18862:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18636:288;;;;:::o;3570:134::-;3668:29;;-1:-1:-1;;;3668:29:1;;:11;;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;13228:134::-;13326:29;;-1:-1:-1;;;13326:29:1;;:11;;;;:29;;13338:4;;13344:5;;13351:3;;13326:29;;;:::i;12044:134::-;12142:29;;-1:-1:-1;;;12142:29:1;;:11;;;;:29;;12154:4;;12160:5;;12167:3;;12142:29;;;:::i;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8711:::-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;27181:74:105;6180:7:93;;;:21;;27154:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;27181:74:105;6253:7:93;;;:21;;27154:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;27181:74:105;6323:7:93;;;:21;;27154:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;27181:74:105;6393:7:93;;;:21;;27154:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;27181:74:105;6463:7:93;;;:21;;27154:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;27181:74:105;6533:7:93;;;:21;;27154:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;27181:74:105;6602:7:93;;;:21;;27154:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;27181:74:105;6675:7:93;;;:21;;27154:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;43594:6:105;43627:15;;6788:346:93;;;43609:34:105;1202:5:93;43659:18:105;;;43652:43;;;1262:2:93;43711:18:105;;;43704:43;1318:3:93;43763:18:105;;;43756:43;43815:19;;;43808:44;;;;1446:6:93;43895:19:105;;;43888:44;1508:5:93;43948:19:105;;;43941:44;1581:7:93;44001:19:105;;;43994:44;6788:7:93;44054:19:105;;;44047:51;-1:-1:-1;;;;;6788:7:93;;:17;;43556:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;:::o;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;27199:55:105;;;27501:38:3;;;;27181:74:105;;;;27501:38:3;;;;;;;;;;27154:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;27748:414::-;27416:752;;27331:837;;;;:::o;8840:1225:93:-;8991:20;;;9113:17;9159:14;9172:1;9159:10;:14;:::i;:::-;:19;;9177:1;9159:19;9155:92;;9194:42;;-1:-1:-1;;;9194:42:93;;44789:2:105;9194:42:93;;;44771:21:105;;;44808:18;;;44801:30;44867:34;44847:18;;;44840:62;44919:18;;9194:42:93;44587:356:105;9155:92:93;9257:13;9273:14;9286:1;9273:10;:14;:::i;:::-;9257:30;;9317:10;9303:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9303:25:93;;9297:31;;9369:10;9355:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9355:25:93;;9339:41;;9420:10;9406:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9406:25:93;-1:-1:-1;9390:41:93;-1:-1:-1;9441:23:93;9490:10;:6;9499:1;9490:10;:::i;:::-;9467:34;;;;363:4:64;9467:34:93;:::i;:::-;9441:60;-1:-1:-1;9511:20:93;9547:10;:6;9556:1;9547:10;:::i;:::-;9534:24;;;;:9;:24;:::i;:::-;9511:47;;9574:9;9569:490;9589:10;9585:14;;:1;:14;9569:490;;;9665:7;9669:3;9665:1;:7;:::i;:::-;9660:13;;;;:1;:13;:::i;:::-;9649:7;9653:3;9649:1;:7;:::i;:::-;9639:18;;:6;:18;:::i;:::-;9629:28;;:7;:28;:::i;:::-;:44;;;;;;:::i;:::-;9620:3;9624:1;9620:6;;;;;;;;:::i;:::-;;;;;;:53;;;;;9697:6;9692:11;;:1;:11;9688:84;;9742:15;9723:13;9737:1;9723:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9688:84;9794:6;9789:11;;:1;:11;9785:264;;9839:15;9820:13;9834:1;9820:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9900:1;9885:12;:16;:149;;10033:1;9885:149;;;9924:86;258:3:64;9979:30:93;10001:3;10005:1;10001:6;;;;;;;;:::i;:::-;;;;;;;9979:14;:30::i;:::-;9924:12;;:86;:30;:86::i;:::-;9872:162;;;;:::i;:::-;;;9785:264;9601:3;;;;:::i;:::-;;;;9569:490;;;;9145:920;;;8840:1225;;;;;;;;;:::o;685:365:94:-;805:27;875:11;:18;862:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;862:32:94;;848:46;;909:9;904:140;928:11;:18;924:1;:22;904:140;;;1024:7;1016:16;;991:11;1003:1;991:14;;;;;;;;:::i;:::-;;;;;;;984:49;;;;:::i;:::-;967:11;979:1;967:14;;;;;;;;:::i;:::-;;;;;;;;;;:66;948:3;;;;:::i;:::-;;;;904:140;;;;685:365;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;9337:43;9231:156;-1:-1:-1;;;9231:156:8:o;9393:143::-;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;5781:146:93:-;5839:13;5872:48;5899:2;1147;5872:26;:48::i;4594:437:82:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;10966:1095:8:-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;27458:55:105;;11664:18:8;;;27440:74:105;27530:18;;;27523:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;11664:7:8;;;;27413:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;46983:2:105;11725:175:8;;;46965:21:105;47022:3;47002:18;;;46995:31;47062:34;47042:18;;;47035:62;47133:34;47113:18;;;47106:62;47205:34;47184:19;;;47177:63;-1:-1:-1;;;47256:19:105;;;47249:46;47312:19;;11725:175:8;46781:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;47562:55:105;;11920:24:8;;;47544:74:105;47634:18;;;47627:34;;;47677:18;;;47670:34;;;11920:8:8;;;;47517:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;812:217:70:-;886:13;623:6:64;1824:42:70;258:3:64;1824:42:70;;;;1823:72;-1:-1:-1;;;1805:90:70;2185:11;;;-1:-1:-1;;2178:35:70;1004:18;1805:90;2178:35;1004:8;:18::i;13395:393:8:-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;9110:115;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;4113:3600:81:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:64;-1:-1:-1;4252:22:81;;-1:-1:-1;4252:22:81;4240:34;-1:-1:-1;4316:1:81;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:64;-1:-1:-1;4574:1:81;-1:-1:-1;;;;;4595:41:81;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:81;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:81;;;;;47887:25:105;;;47928:18;;;47921:34;;;47860:18;;7609:35:81;47715:246:105;7585:59:81;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:81;:::i;1264:3304:8:-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;27199:55:105;;1990:25:8;;;27181:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;1990:11:8;;;;27154:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;27458:55:105;;;;27440:74;;27545:2;27530:18;;27523:34;27428:2;27413:18;;27266:297;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;27458:55:105;;;27440:74;;27530:18;;;27523:34;27413:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;46983:2:105;2268:187:8;;;46965:21:105;47022:3;47002:18;;;46995:31;47062:34;47042:18;;;47035:62;47133:34;47113:18;;;47106:62;47205:34;47184:19;;;47177:63;-1:-1:-1;;;47256:19:105;;;47249:46;47312:19;;2268:187:8;46781:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;48832:55:105;;;48814:74;;-1:-1:-1;;;;;;48924:33:105;;;48904:18;;;48897:61;;;;48974:18;;;48967:34;49032:2;49017:18;;49010:34;48801:3;48786:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;27458:55:105;;;;27440:74;;27545:2;27530:18;;27523:34;27428:2;27413:18;;27266:297;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;27458:55:105;;;27440:74;;27530:18;;;27523:34;27413:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;3215:8;;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;47562:55:105;;;3215:32:8;;;47544:74:105;47634:18;;;47627:34;47677:18;;;47670:34;;;47517:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;48832:55:105;;;48814:74;;-1:-1:-1;;;;;;48924:33:105;;;48904:18;;;48897:61;;;;48974:18;;;48967:34;49032:2;49017:18;;49010:34;48801:3;48786:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;47562:55:105;;;3941:29:8;;;47544:74:105;47634:18;;;47627:34;47677:18;;;47670:34;;;47517:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;47562:55:105;;;4033:29:8;;;47544:74:105;47634:18;;;47627:34;47677:18;;;47670:34;;;47517:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;49257:2:105;4107:74:8;;;49239:21:105;49276:18;;;49269:30;;;;49335:34;49315:18;;;49308:62;49406:34;49386:18;;;49379:62;49458:19;;4107:74:8;49055:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;49690:2:105;4202:162:8;;;49672:21:105;49729:2;49709:18;;;49702:30;49768:34;49748:18;;;49741:62;49839:17;49819:18;;;49812:45;49874:19;;4202:162:8;49488:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;629:484;682:3;720:5;714:12;747:6;742:3;735:19;773:4;802:2;797:3;793:12;786:19;;839:2;832:5;828:14;860:1;870:218;884:6;881:1;878:13;870:218;;;949:13;;-1:-1:-1;;;;;945:62:105;933:75;;1028:12;;;;1063:15;;;;906:1;899:9;870:218;;;-1:-1:-1;1104:3:105;;629:484;-1:-1:-1;;;;;629:484:105:o;1118:261::-;1297:2;1286:9;1279:21;1260:4;1317:56;1369:2;1358:9;1354:18;1346:6;1317:56;:::i;1384:250::-;1469:1;1479:113;1493:6;1490:1;1487:13;1479:113;;;1569:11;;;1563:18;1550:11;;;1543:39;1515:2;1508:10;1479:113;;;-1:-1:-1;;1626:1:105;1608:16;;1601:27;1384:250::o;1639:271::-;1681:3;1719:5;1713:12;1746:6;1741:3;1734:19;1762:76;1831:6;1824:4;1819:3;1815:14;1808:4;1801:5;1797:16;1762:76;:::i;:::-;1892:2;1871:15;-1:-1:-1;;1867:29:105;1858:39;;;;1899:4;1854:50;;1639:271;-1:-1:-1;;1639:271:105:o;1915:1765::-;2148:2;2200:21;;;2270:13;;2173:18;;;2292:22;;;2119:4;;2148:2;2333;;2351:18;;;;2388:1;2431:15;;;2416:31;;2412:40;;2475:15;;;2119:4;;2539:1112;2555:6;2550:3;2547:15;2539:1112;;;-1:-1:-1;;2624:22:105;;;2620:36;2608:49;;2680:13;;2767:9;;-1:-1:-1;;;;;2763:58:105;2748:74;;2861:11;;2855:18;2893:15;;;2886:27;;;2974:19;;2720:15;;;3006:24;;;3187:21;;;;3053:2;3135:17;;;3123:30;;3119:39;;;3077:15;;;;3232:1;3246:296;3262:8;3257:3;3254:17;3246:296;;;3368:2;3364:7;3355:6;3347;3343:19;3339:33;3332:5;3325:48;3400:42;3435:6;3424:8;3418:15;3400:42;:::i;:::-;3471:17;;;;3390:52;-1:-1:-1;3514:14:105;;;;3290:1;3281:11;3246:296;;;-1:-1:-1;;;3629:12:105;;;;3565:6;-1:-1:-1;;3594:15:105;;;;2581:1;2572:11;2539:1112;;;-1:-1:-1;3668:6:105;;1915:1765;-1:-1:-1;;;;;;;;;;1915:1765:105:o;3685:156::-;3751:20;;3811:4;3800:16;;3790:27;;3780:55;;3831:1;3828;3821:12;3846:252;3910:6;3918;3971:2;3959:9;3950:7;3946:23;3942:32;3939:52;;;3987:1;3984;3977:12;3939:52;4010:27;4027:9;4010:27;:::i;:::-;4000:37;;4056:36;4088:2;4077:9;4073:18;4056:36;:::i;:::-;4046:46;;3846:252;;;;;:::o;4285:1590::-;4487:4;4516:2;4556;4545:9;4541:18;4586:2;4575:9;4568:21;4609:6;4644;4638:13;4675:6;4667;4660:22;4701:2;4691:12;;4734:2;4723:9;4719:18;4712:25;;4796:2;4786:6;4783:1;4779:14;4768:9;4764:30;4760:39;4834:2;4826:6;4822:15;4855:1;4876;4886:960;4902:6;4897:3;4894:15;4886:960;;;4971:22;;;-1:-1:-1;;4967:36:105;4955:49;;5027:13;;5114:9;;-1:-1:-1;;;;;5110:58:105;5095:74;;5208:11;;5202:18;5240:15;;;5233:27;;;5321:19;;5067:15;;;5353:24;;;5443:21;;;;5488:1;;5411:2;5399:15;;;5502:236;5518:8;5513:3;5510:17;5502:236;;;5599:15;;-1:-1:-1;;;;;;5595:42:105;5581:57;;5707:17;;;;5546:1;5537:11;;;;;5664:14;;;;5502:236;;;-1:-1:-1;5824:12:105;;;;5761:5;-1:-1:-1;;;5789:15:105;;;;4928:1;4919:11;4886:960;;;-1:-1:-1;5863:6:105;;4285:1590;-1:-1:-1;;;;;;;;;4285:1590:105:o;5880:803::-;6042:4;6071:2;6111;6100:9;6096:18;6141:2;6130:9;6123:21;6164:6;6199;6193:13;6230:6;6222;6215:22;6268:2;6257:9;6253:18;6246:25;;6330:2;6320:6;6317:1;6313:14;6302:9;6298:30;6294:39;6280:53;;6368:2;6360:6;6356:15;6389:1;6399:255;6413:6;6410:1;6407:13;6399:255;;;6506:2;6502:7;6490:9;6482:6;6478:22;6474:36;6469:3;6462:49;6534:40;6567:6;6558;6552:13;6534:40;:::i;:::-;6524:50;-1:-1:-1;6632:12:105;;;;6597:15;;;;6435:1;6428:9;6399:255;;;-1:-1:-1;6671:6:105;;5880:803;-1:-1:-1;;;;;;;5880:803:105:o;6688:161::-;6755:20;;6815:8;6804:20;;6794:31;;6784:59;;6839:1;6836;6829:12;6854:322;6928:6;6936;6944;6997:2;6985:9;6976:7;6972:23;6968:32;6965:52;;;7013:1;7010;7003:12;6965:52;7036:28;7054:9;7036:28;:::i;:::-;7026:38;;7111:2;7100:9;7096:18;7083:32;7073:42;;7134:36;7166:2;7155:9;7151:18;7134:36;:::i;:::-;7124:46;;6854:322;;;;;:::o;7376:154::-;-1:-1:-1;;;;;7455:5:105;7451:54;7444:5;7441:65;7431:93;;7520:1;7517;7510:12;7535:898;7668:6;7676;7684;7692;7700;7708;7716;7724;7777:3;7765:9;7756:7;7752:23;7748:33;7745:53;;;7794:1;7791;7784:12;7745:53;7833:9;7820:23;7852:31;7877:5;7852:31;:::i;:::-;7902:5;-1:-1:-1;7959:2:105;7944:18;;7931:32;7972:33;7931:32;7972:33;:::i;:::-;8024:7;-1:-1:-1;8083:2:105;8068:18;;8055:32;8096:33;8055:32;8096:33;:::i;:::-;8148:7;-1:-1:-1;8174:37:105;8207:2;8192:18;;8174:37;:::i;:::-;8164:47;;8258:3;8247:9;8243:19;8230:33;8220:43;;8310:3;8299:9;8295:19;8282:33;8272:43;;8334:37;8366:3;8355:9;8351:19;8334:37;:::i;:::-;8324:47;;8390:37;8422:3;8411:9;8407:19;8390:37;:::i;:::-;8380:47;;7535:898;;;;;;;;;;;:::o;8438:272::-;8496:6;8549:2;8537:9;8528:7;8524:23;8520:32;8517:52;;;8565:1;8562;8555:12;8517:52;8604:9;8591:23;8654:6;8647:5;8643:18;8636:5;8633:29;8623:57;;8676:1;8673;8666:12;8715:829;8839:6;8847;8855;8863;8871;8879;8887;8940:3;8928:9;8919:7;8915:23;8911:33;8908:53;;;8957:1;8954;8947:12;8908:53;8996:9;8983:23;9015:31;9040:5;9015:31;:::i;:::-;9065:5;-1:-1:-1;9122:2:105;9107:18;;9094:32;9135:33;9094:32;9135:33;:::i;:::-;9187:7;-1:-1:-1;9246:2:105;9231:18;;9218:32;9259:33;9218:32;9259:33;:::i;:::-;9311:7;-1:-1:-1;9337:37:105;9370:2;9355:18;;9337:37;:::i;:::-;9327:47;;9421:3;9410:9;9406:19;9393:33;9383:43;;9445:37;9477:3;9466:9;9462:19;9445:37;:::i;:::-;9435:47;;9501:37;9533:3;9522:9;9518:19;9501:37;:::i;:::-;9491:47;;8715:829;;;;;;;;;;:::o;9886:127::-;9947:10;9942:3;9938:20;9935:1;9928:31;9978:4;9975:1;9968:15;10002:4;9999:1;9992:15;10018:253;10090:2;10084:9;10132:4;10120:17;;10167:18;10152:34;;10188:22;;;10149:62;10146:88;;;10214:18;;:::i;:::-;10250:2;10243:22;10018:253;:::o;10276:275::-;10347:2;10341:9;10412:2;10393:13;;-1:-1:-1;;10389:27:105;10377:40;;10447:18;10432:34;;10468:22;;;10429:62;10426:88;;;10494:18;;:::i;:::-;10530:2;10523:22;10276:275;;-1:-1:-1;10276:275:105:o;10556:719::-;10636:6;10689:2;10677:9;10668:7;10664:23;10660:32;10657:52;;;10705:1;10702;10695:12;10657:52;10738:9;10732:16;10767:18;10808:2;10800:6;10797:14;10794:34;;;10824:1;10821;10814:12;10794:34;10862:6;10851:9;10847:22;10837:32;;10907:7;10900:4;10896:2;10892:13;10888:27;10878:55;;10929:1;10926;10919:12;10878:55;10958:2;10952:9;10980:2;10976;10973:10;10970:36;;;10986:18;;:::i;:::-;11028:53;11071:2;11052:13;;-1:-1:-1;;11048:27:105;11077:2;11044:36;11028:53;:::i;:::-;11015:66;;11104:2;11097:5;11090:17;11144:7;11139:2;11134;11130;11126:11;11122:20;11119:33;11116:53;;;11165:1;11162;11155:12;11116:53;11178:67;11242:2;11237;11230:5;11226:14;11221:2;11217;11213:11;11178:67;:::i;:::-;-1:-1:-1;11264:5:105;10556:719;-1:-1:-1;;;;10556:719:105:o;11280:306::-;11472:2;11461:9;11454:21;11435:4;11492:45;11533:2;11522:9;11518:18;11510:6;11492:45;:::i;:::-;11484:53;;11573:6;11568:2;11557:9;11553:18;11546:34;11280:306;;;;;:::o;11591:184::-;11661:6;11714:2;11702:9;11693:7;11689:23;11685:32;11682:52;;;11730:1;11727;11720:12;11682:52;-1:-1:-1;11753:16:105;;11591:184;-1:-1:-1;11591:184:105:o;11780:127::-;11841:10;11836:3;11832:20;11829:1;11822:31;11872:4;11869:1;11862:15;11896:4;11893:1;11886:15;11912:168;11985:9;;;12016;;12033:15;;;12027:22;;12013:37;12003:71;;12054:18;;:::i;12085:127::-;12146:10;12141:3;12137:20;12134:1;12127:31;12177:4;12174:1;12167:15;12201:4;12198:1;12191:15;12217:120;12257:1;12283;12273:35;;12288:18;;:::i;:::-;-1:-1:-1;12322:9:105;;12217:120::o;12342:125::-;12407:9;;;12428:10;;;12425:36;;;12441:18;;:::i;13260:306::-;13348:6;13356;13364;13417:2;13405:9;13396:7;13392:23;13388:32;13385:52;;;13433:1;13430;13423:12;13385:52;13462:9;13456:16;13446:26;;13512:2;13501:9;13497:18;13491:25;13481:35;;13556:2;13545:9;13541:18;13535:25;13525:35;;13260:306;;;;;:::o;14108:268::-;14195:6;14248:2;14236:9;14227:7;14223:23;14219:32;14216:52;;;14264:1;14261;14254:12;14216:52;14296:9;14290:16;14315:31;14340:5;14315:31;:::i;14381:170::-;14448:8;14476:10;;;14488;;;14472:27;;14511:11;;;14508:37;;;14525:18;;:::i;15091:434::-;15143:3;15181:5;15175:12;15208:6;15203:3;15196:19;15234:4;15263:2;15258:3;15254:12;15247:19;;15300:2;15293:5;15289:14;15321:1;15331:169;15345:6;15342:1;15339:13;15331:169;;;15406:13;;15394:26;;15440:12;;;;15475:15;;;;15367:1;15360:9;15331:169;;15530:1945;15735:2;15724:9;15717:21;15747:53;15796:2;15785:9;15781:18;15772:6;15766:13;-1:-1:-1;;;;;563:54:105;551:67;;497:127;15747:53;15698:4;15847:2;15839:6;15835:15;15829:22;15860:52;15908:2;15897:9;15893:18;15879:12;-1:-1:-1;;;;;563:54:105;551:67;;497:127;15860:52;;15966:2;15958:6;15954:15;15948:22;15943:2;15932:9;15928:18;15921:50;16026:2;16018:6;16014:15;16008:22;16002:3;15991:9;15987:19;15980:51;16086:3;16078:6;16074:16;16068:23;16062:3;16051:9;16047:19;16040:52;16147:3;16139:6;16135:16;16129:23;16123:3;16112:9;16108:19;16101:52;16208:3;16200:6;16196:16;16190:23;16184:3;16173:9;16169:19;16162:52;16251:3;16243:6;16239:16;16233:23;16275:3;16314:2;16309;16298:9;16294:18;16287:30;16354:2;16346:6;16342:15;16336:22;16326:32;;;16377:3;16416:2;16411;16400:9;16396:18;16389:30;16468:2;16460:6;16456:15;16450:22;16428:44;;;16491:6;16516:3;16555:2;16550;16539:9;16535:18;16528:30;16581:64;16640:3;16629:9;16625:19;16609:14;16581:64;:::i;:::-;16567:78;;16694:2;16686:6;16682:15;16676:22;16654:44;;16721:2;16717:7;16743:3;16810:2;16798:9;16790:6;16786:22;16782:31;16777:2;16766:9;16762:18;16755:59;16837:51;16881:6;16865:14;16837:51;:::i;:::-;16823:65;;16937:2;16929:6;16925:15;16919:22;16897:44;;;16960:3;17027:2;17015:9;17007:6;17003:22;16999:31;16994:2;16983:9;16979:18;16972:59;17054:51;17098:6;17082:14;17054:51;:::i;:::-;17040:65;;17154:2;17146:6;17142:15;17136:22;17114:44;;;;17178:3;17190:55;17240:3;17229:9;17225:19;17209:14;-1:-1:-1;;;;;563:54:105;551:67;;497:127;17190:55;17282:16;;17276:23;;-1:-1:-1;17319:3:105;17331:55;17366:19;;;17276:23;-1:-1:-1;;;;;563:54:105;551:67;;497:127;17331:55;17428:16;;;;17422:23;17402:18;;17395:51;;;;-1:-1:-1;17463:6:105;15530:1945;-1:-1:-1;15530:1945:105:o;17480:183::-;17540:4;17573:18;17565:6;17562:30;17559:56;;;17595:18;;:::i;:::-;-1:-1:-1;17640:1:105;17636:14;17652:4;17632:25;;17480:183::o;17668:659::-;17733:5;17786:3;17779:4;17771:6;17767:17;17763:27;17753:55;;17804:1;17801;17794:12;17753:55;17833:6;17827:13;17859:4;17883:60;17899:43;17939:2;17899:43;:::i;:::-;17883:60;:::i;:::-;17977:15;;;18063:1;18059:10;;;;18047:23;;18043:32;;;18008:12;;;;18087:15;;;18084:35;;;18115:1;18112;18105:12;18084:35;18151:2;18143:6;18139:15;18163:135;18179:6;18174:3;18171:15;18163:135;;;18245:10;;18233:23;;18276:12;;;;18196;;18163:135;;;-1:-1:-1;18316:5:105;17668:659;-1:-1:-1;;;;;;17668:659:105:o;18332:861::-;18497:6;18505;18513;18521;18529;18537;18590:3;18578:9;18569:7;18565:23;18561:33;18558:53;;;18607:1;18604;18597:12;18558:53;18636:9;18630:16;18620:26;;18686:2;18675:9;18671:18;18665:25;18655:35;;18730:2;18719:9;18715:18;18709:25;18699:35;;18774:2;18763:9;18759:18;18753:25;18743:35;;18822:3;18811:9;18807:19;18801:26;18846:18;18887:2;18879:6;18876:14;18873:34;;;18903:1;18900;18893:12;18873:34;18926:72;18990:7;18981:6;18970:9;18966:22;18926:72;:::i;:::-;18916:82;;19044:3;19033:9;19029:19;19023:26;19007:42;;19074:2;19064:8;19061:16;19058:36;;;19090:1;19087;19080:12;19058:36;;19113:74;19179:7;19168:8;19157:9;19153:24;19113:74;:::i;:::-;19103:84;;;18332:861;;;;;;;;:::o;19198:380::-;19277:1;19273:12;;;;19320;;;19341:61;;19395:4;19387:6;19383:17;19373:27;;19341:61;19448:2;19440:6;19437:14;19417:18;19414:38;19411:161;;19494:10;19489:3;19485:20;19482:1;19475:31;19529:4;19526:1;19519:15;19557:4;19554:1;19547:15;19411:161;;19198:380;;;:::o;19583:127::-;19644:10;19639:3;19635:20;19632:1;19625:31;19675:4;19672:1;19665:15;19699:4;19696:1;19689:15;19715:373;19922:2;19911:9;19904:21;19885:4;19942:56;19994:2;19983:9;19979:18;19971:6;19942:56;:::i;:::-;19934:64;;-1:-1:-1;;;;;20038:6:105;20034:47;20029:2;20018:9;20014:18;20007:75;19715:373;;;;;:::o;20093:734::-;20158:5;20211:3;20204:4;20196:6;20192:17;20188:27;20178:55;;20229:1;20226;20219:12;20178:55;20258:6;20252:13;20284:4;20308:60;20324:43;20364:2;20324:43;:::i;20308:60::-;20402:15;;;20488:1;20484:10;;;;20472:23;;20468:32;;;20433:12;;;;20512:15;;;20509:35;;;20540:1;20537;20530:12;20509:35;20576:2;20568:6;20564:15;20588:210;20604:6;20599:3;20596:15;20588:210;;;20677:3;20671:10;20694:31;20719:5;20694:31;:::i;:::-;20738:18;;20776:12;;;;20621;;20588:210;;20832:818;20902:5;20955:3;20948:4;20940:6;20936:17;20932:27;20922:55;;20973:1;20970;20963:12;20922:55;21002:6;20996:13;21028:4;21052:60;21068:43;21108:2;21068:43;:::i;21052:60::-;21146:15;;;21232:1;21228:10;;;;21216:23;;21212:32;;;21177:12;;;;21256:15;;;21253:35;;;21284:1;21281;21274:12;21253:35;21320:2;21312:6;21308:15;21332:289;21348:6;21343:3;21340:15;21332:289;;;21421:3;21415:10;21458:1;21451:5;21448:12;21438:110;;21502:1;21531:2;21527;21520:14;21438:110;21561:18;;21599:12;;;;21365;;21332:289;;21655:858;21720:5;21773:3;21766:4;21758:6;21754:17;21750:27;21740:55;;21791:1;21788;21781:12;21740:55;21820:6;21814:13;21846:4;21870:60;21886:43;21926:2;21886:43;:::i;21870:60::-;21964:15;;;22050:1;22046:10;;;;22034:23;;22030:32;;;21995:12;;;;22074:15;;;22071:35;;;22102:1;22099;22092:12;22071:35;22138:2;22130:6;22126:15;22150:334;22166:6;22161:3;22158:15;22150:334;;;22239:3;22233:10;-1:-1:-1;;;;;22280:5:105;22276:46;22269:5;22266:57;22256:155;;22365:1;22394:2;22390;22383:14;22256:155;22424:18;;22462:12;;;;22183;;22150:334;;22518:1766;22612:6;22665:2;22653:9;22644:7;22640:23;22636:32;22633:52;;;22681:1;22678;22671:12;22633:52;22714:9;22708:16;22743:18;22784:2;22776:6;22773:14;22770:34;;;22800:1;22797;22790:12;22770:34;22823:22;;;;22879:4;22861:16;;;22857:27;22854:47;;;22897:1;22894;22887:12;22854:47;22923:22;;:::i;:::-;22976:2;22970:9;23004:2;22994:8;22991:16;22988:36;;;23020:1;23017;23010:12;22988:36;23047:67;23106:7;23095:8;23091:2;23087:17;23047:67;:::i;:::-;23040:5;23033:82;;23154:2;23150;23146:11;23140:18;23183:2;23173:8;23170:16;23167:36;;;23199:1;23196;23189:12;23167:36;23235:67;23294:7;23283:8;23279:2;23275:17;23235:67;:::i;:::-;23230:2;23223:5;23219:14;23212:91;;23342:2;23338;23334:11;23328:18;23371:2;23361:8;23358:16;23355:36;;;23387:1;23384;23377:12;23355:36;23423:67;23482:7;23471:8;23467:2;23463:17;23423:67;:::i;:::-;23418:2;23411:5;23407:14;23400:91;;23530:2;23526;23522:11;23516:18;23559:2;23549:8;23546:16;23543:36;;;23575:1;23572;23565:12;23543:36;23611:72;23675:7;23664:8;23660:2;23656:17;23611:72;:::i;:::-;23606:2;23599:5;23595:14;23588:96;;23723:3;23719:2;23715:12;23709:19;23753:2;23743:8;23740:16;23737:36;;;23769:1;23766;23759:12;23737:36;23806:67;23865:7;23854:8;23850:2;23846:17;23806:67;:::i;:::-;23800:3;23793:5;23789:15;23782:92;;23913:3;23909:2;23905:12;23899:19;23943:2;23933:8;23930:16;23927:36;;;23959:1;23956;23949:12;23927:36;23996:67;24055:7;24044:8;24040:2;24036:17;23996:67;:::i;:::-;23990:3;23983:5;23979:15;23972:92;;24103:3;24099:2;24095:12;24089:19;24133:2;24123:8;24120:16;24117:36;;;24149:1;24146;24139:12;24117:36;24186:67;24245:7;24234:8;24230:2;24226:17;24186:67;:::i;:::-;24180:3;24169:15;;24162:92;-1:-1:-1;24173:5:105;22518:1766;-1:-1:-1;;;;;22518:1766:105:o;24289:274::-;-1:-1:-1;;;;;24427:10:105;;;24439;;;24423:27;24470:20;;;;24361:34;24509:24;;;24499:58;;24537:18;;:::i;:::-;24499:58;;24289:274;;;;:::o;24568:127::-;24629:10;24624:3;24620:20;24617:1;24610:31;24660:4;24657:1;24650:15;24684:4;24681:1;24674:15;24700:216;24740:1;-1:-1:-1;;;;;24827:2:105;24824:1;24820:10;24849:3;24839:37;;24856:18;;:::i;:::-;24894:10;;24890:20;;;;;24700:216;-1:-1:-1;;24700:216:105:o;25177:148::-;25265:4;25244:12;;;25258;;;25240:31;;25283:13;;25280:39;;;25299:18;;:::i;25330:151::-;25420:4;25413:12;;;25399;;;25395:31;;25438:14;;25435:40;;;25455:18;;:::i;26490:128::-;26557:9;;;26578:11;;;26575:37;;;26592:18;;:::i;26895:135::-;26934:3;26955:17;;;26952:43;;26975:18;;:::i;:::-;-1:-1:-1;27022:1:105;27011:13;;26895:135::o;27568:164::-;27644:13;;27693;;27686:21;27676:32;;27666:60;;27722:1;27719;27712:12;27737:202;27804:6;27857:2;27845:9;27836:7;27832:23;27828:32;27825:52;;;27873:1;27870;27863:12;27825:52;27896:37;27923:9;27896:37;:::i;27944:854::-;28142:4;28190:2;28179:9;28175:18;-1:-1:-1;;;;;28293:2:105;28285:6;28281:15;28270:9;28263:34;28316:2;28354;28349;28338:9;28334:18;28327:30;28377:6;28412;28406:13;28443:6;28435;28428:22;28481:3;28470:9;28466:19;28459:26;;28520:2;28512:6;28508:15;28494:29;;28541:1;28551:169;28565:6;28562:1;28559:13;28551:169;;;28626:13;;28614:26;;28695:15;;;;28660:12;;;;28587:1;28580:9;28551:169;;;28555:3;;28737;28729:11;;;;28788:2;28780:6;28776:15;28771:2;28760:9;28756:18;28749:43;;;27944:854;;;;;;:::o;28803:485::-;28916:6;28924;28932;28985:2;28973:9;28964:7;28960:23;28956:32;28953:52;;;29001:1;28998;28991:12;28953:52;29030:9;29024:16;29014:26;;29080:2;29069:9;29065:18;29059:25;29049:35;;29128:2;29117:9;29113:18;29107:25;29155:18;29147:6;29144:30;29141:50;;;29187:1;29184;29177:12;29141:50;29210:72;29274:7;29265:6;29254:9;29250:22;29210:72;:::i;:::-;29200:82;;;28803:485;;;;;:::o;29487:634::-;29617:6;29625;29633;29641;29649;29657;29665;29673;29726:3;29714:9;29705:7;29701:23;29697:33;29694:53;;;29743:1;29740;29733:12;29694:53;29772:9;29766:16;29756:26;;29822:2;29811:9;29807:18;29801:25;29791:35;;29866:2;29855:9;29851:18;29845:25;29835:35;;29910:2;29899:9;29895:18;29889:25;29879:35;;29954:3;29943:9;29939:19;29933:26;29923:36;;29999:3;29988:9;29984:19;29978:26;29968:36;;30044:3;30033:9;30029:19;30023:26;30013:36;;30068:47;30110:3;30099:9;30095:19;30068:47;:::i;31286:686::-;31562:4;-1:-1:-1;;;;;31672:2:105;31664:6;31660:15;31649:9;31642:34;31724:2;31716:6;31712:15;31707:2;31696:9;31692:18;31685:43;;31764:3;31759:2;31748:9;31744:18;31737:31;31791:56;31842:3;31831:9;31827:19;31819:6;31791:56;:::i;:::-;31895:9;31887:6;31883:22;31878:2;31867:9;31863:18;31856:50;31923:43;31959:6;31951;31923:43;:::i;:::-;31915:51;31286:686;-1:-1:-1;;;;;;;31286:686:105:o;31977:363::-;32072:6;32125:2;32113:9;32104:7;32100:23;32096:32;32093:52;;;32141:1;32138;32131:12;32093:52;32174:9;32168:16;32207:18;32199:6;32196:30;32193:50;;;32239:1;32236;32229:12;32193:50;32262:72;32326:7;32317:6;32306:9;32302:22;32262:72;:::i;32345:338::-;-1:-1:-1;;;;;32524:6:105;32520:55;32509:9;32502:74;32612:2;32607;32596:9;32592:18;32585:30;32483:4;32632:45;32673:2;32662:9;32658:18;32650:6;32632:45;:::i;41223:362::-;41428:6;41417:9;41410:25;41471:6;41466:2;41455:9;41451:18;41444:34;41514:2;41509;41498:9;41494:18;41487:30;41391:4;41534:45;41575:2;41564:9;41560:18;41552:6;41534:45;:::i;41590:435::-;41823:6;41812:9;41805:25;41866:6;41861:2;41850:9;41846:18;41839:34;41909:6;41904:2;41893:9;41889:18;41882:34;41952:3;41947:2;41936:9;41932:18;41925:31;41786:4;41973:46;42014:3;42003:9;41999:19;41991:6;41973:46;:::i;42030:441::-;42198:4;-1:-1:-1;;;;;42308:2:105;42300:6;42296:15;42285:9;42278:34;42360:2;42352:6;42348:15;42343:2;42332:9;42328:18;42321:43;;42400:2;42395;42384:9;42380:18;42373:30;42420:45;42461:2;42450:9;42446:18;42438:6;42420:45;:::i;44109:287::-;44238:3;44276:6;44270:13;44292:66;44351:6;44346:3;44339:4;44331:6;44327:17;44292:66;:::i;:::-;44374:16;;;;;44109:287;-1:-1:-1;;44109:287:105:o;44401:181::-;44432:1;44458:8;44493:2;44490:1;44486:10;44515:3;44505:37;;44522:18;;:::i;:::-;44560:10;;44556:20;;;;;44401:181;-1:-1:-1;;44401:181:105:o;44948:189::-;44987:1;45013:8;45048:2;45045:1;45041:10;45070:3;45060:37;;45077:18;;:::i;45142:247::-;45213:8;45253:10;;;45265;;;45249:27;45296:20;;;;45213:8;45335:24;;;45325:58;;45363:18;;:::i;45394:173::-;45462:8;45503:10;;;45491;;;45487:27;;45526:12;;;45523:38;;;45541:18;;:::i;45572:200::-;45638:9;;;45611:4;45666:9;;45694:10;;45706:12;;;45690:29;45729:12;;;45721:21;;45687:56;45684:82;;;45746:18;;:::i;45777:384::-;-1:-1:-1;;;;;;45962:33:105;;45950:46;;46019:13;;45932:3;;46041:74;46019:13;46104:1;46095:11;;46088:4;46076:17;;46041:74;:::i;:::-;46135:16;;;;46153:1;46131:24;;45777:384;-1:-1:-1;;;45777:384:105:o;46166:610::-;46412:13;;46355:3;;46386;;46465:4;46492:15;;;46355:3;46535:175;46549:6;46546:1;46543:13;46535:175;;;46612:13;;46598:28;;46648:14;;;;46685:15;;;;46571:1;46564:9;46535:175;;;-1:-1:-1;;46719:21:105;;;-1:-1:-1;46756:14:105;;;;;-1:-1:-1;;;46166:610:105:o;47966:614::-;48095:6;48103;48156:2;48144:9;48135:7;48131:23;48127:32;48124:52;;;48172:1;48169;48162:12;48124:52;48205:9;48199:16;48234:18;48275:2;48267:6;48264:14;48261:34;;;48291:1;48288;48281:12;48261:34;48314:72;48378:7;48369:6;48358:9;48354:22;48314:72;:::i;:::-;48304:82;;48432:2;48421:9;48417:18;48411:25;48395:41;;48461:2;48451:8;48448:16;48445:36;;;48477:1;48474;48467:12;48445:36;;48500:74;48566:7;48555:8;48544:9;48540:24;48500:74;:::i;:::-;48490:84;;;47966:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":21057,"length":32},{"start":25019,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_Constructor()":"3c322dd3","test_InvalidLength()":"88721681","test_Scenario1()":"51f44d95","test_Scenario2()":"efbc8013","test_Scenario3()":"396b9c98","test_Scenario4()":"5322e371"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Constructor\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_InvalidLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Scenario1\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Scenario2\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Scenario3\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Scenario4\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Market deployed: - USDT/USDC, V1 with low liquidity, V2 with high liquidity - WNATIVE/USDC, V1 with high liquidity, V2 with low liquidity - WETH/USDC, V1 with low liquidity, V2.2 with high liquidity - BNB/USDC, V2 with high liquidity, V2.2 with low liquidity Every market with low liquidity has a slighly higher price. It should be picked with small amounts but not with large amounts. All tokens are considered 18 decimals for simplification purposes.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/integration/LBQuoter.t.sol\":\"LiquidityBinQuoterTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/integration/LBQuoter.t.sol\":{\"keccak256\":\"0xee53bc43a4ecac1f7b27c39e0c361a979c4880762491a4a5c284fd7bb482fd8b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9ed626a129c3843f56923da9874c1996eeb6d3a5ad5b4603e8bc04ded9b04012\",\"dweb:/ipfs/QmTLoc8E8X3BMksbFevdhvsUPNGb62BRZNdeZBgpDAqKrc\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Constructor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_InvalidLength"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Scenario1"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Scenario2"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Scenario3"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Scenario4"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/integration/LBQuoter.t.sol":"LiquidityBinQuoterTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/integration/LBQuoter.t.sol":{"keccak256":"0xee53bc43a4ecac1f7b27c39e0c361a979c4880762491a4a5c284fd7bb482fd8b","urls":["bzz-raw://9ed626a129c3843f56923da9874c1996eeb6d3a5ad5b4603e8bc04ded9b04012","dweb:/ipfs/QmTLoc8E8X3BMksbFevdhvsUPNGb62BRZNdeZBgpDAqKrc"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":96} \ No newline at end of file diff --git a/abi/LBQuoterPriority.t.sol/LiquidityBinQuoterPriorityTest.json b/abi/LBQuoterPriority.t.sol/LiquidityBinQuoterPriorityTest.json deleted file mode 100644 index 31c46552..00000000 --- a/abi/LBQuoterPriority.t.sol/LiquidityBinQuoterPriorityTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_QuoteFromAmounOut","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_QuoteFromAmountIn","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff19166001179055601d80546001600160a01b0319167364b57f4249aa99a812212cee7daefedc40b203cd17905534801561004357600080fd5b50616032806100536000396000f3fe60806040523480156200001157600080fd5b5060043610620000f15760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa91462000197578063ba414fa614620001a1578063e20c9f7114620001bc578063f4af7f0814620001c657600080fd5b806385226c81146200016a578063916a17c61462000183578063a2797cec146200018d57600080fd5b80633e5e3c2311620000cc5780633e5e3c23146200013d5780633f7286f4146200014757806366d9a9a0146200015157600080fd5b80630a9254e414620000f65780631ed7831c14620001025780632ade38801462000124575b600080fd5b62000100620001d0565b005b6200010c620003b0565b6040516200011b919062002be2565b60405180910390f35b6200012e62000414565b6040516200011b919062002c52565b6200010c62000562565b6200010c620005c4565b6200015b62000626565b6040516200011b919062002d18565b6200017462000725565b6040516200011b919062002de7565b6200015b620007ff565b62000100620008fe565b62000174620018f1565b620001ab620019cb565b60405190151581526020016200011b565b6200010c62001a8a565b6200010062001aec565b60405163975a6ce960e01b815260206004820152600960248201527f6176616c616e63686500000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371ee464d90829063975a6ce990606401600060405180830381865afa15801562000256573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000280919081019062002ec3565b6301fc52a26040518363ffffffff1660e01b8152600401620002a492919062002f62565b6020604051808303816000875af1158015620002c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ea919062002f86565b50739ad6c38be94206ca50bb0d90783181662f0cfa10738e42f2f4101563bf679975178e880fd87d3efd4e73b4315e873dbcf96ffd0acd8ea43f689d8c20fb30604051620003389062002b8e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000375573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606060148054806020026020016040519081016040528092919081815260200182805480156200040a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620003eb575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200055957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000541578382906000526020600020018054620004ad9062002fa0565b80601f0160208091040260200160405190810160405280929190818152602001828054620004db9062002fa0565b80156200052c5780601f1062000500576101008083540402835291602001916200052c565b820191906000526020600020905b8154815290600101906020018083116200050e57829003601f168201915b5050505050815260200190600101906200048b565b50505050815250508152602001906001019062000438565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200040a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003eb575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200040a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003eb575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620005595760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200070c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620006b85790505b505050505081525050815260200190600101906200064a565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620005595783829060005260206000200180546200076b9062002fa0565b80601f0160208091040260200160405190810160405280929190818152602001828054620007999062002fa0565b8015620007ea5780601f10620007be57610100808354040283529160200191620007ea565b820191906000526020600020905b815481529060010190602001808311620007cc57829003601f168201915b50505050508152602001906001019062000749565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620005595760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620008e557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620008915790505b5050505050815250508152602001906001019062000823565b604080516002808252606082018352600092602083019080368337019050509050739702230a8ea53601f5cd2dc00fdbc13d4df4a8c7816000815181106200094a576200094a62002fdc565b60200260200101906001600160a01b031690816001600160a01b03168152505073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8160018151811062000995576200099562002fdc565b6001600160a01b039283166020918202929092010152601c54604051623e40a960e61b8152620f4240926000921690630f902a4090620009dc908690869060040162002ff2565b600060405180830381865afa158015620009fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a2491908101906200321c565b601d54604051623e40a960e61b81529192506000916001600160a01b0390911690630f902a409062000a5d908790879060040162002ff2565b600060405180830381865afa15801562000a7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000aa591908101906200321c565b905062000b2b826000015160008151811062000ac55762000ac562002fdc565b6020026020010151826000015160008151811062000ae75762000ae762002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a310000000000000081525062002add565b62000baf826000015160018151811062000b495762000b4962002fdc565b6020026020010151826000015160018151811062000b6b5762000b6b62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a320000000000000081525062002add565b62000c26826020015160008151811062000bcd5762000bcd62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a330000000000000081525062002add565b62000c9d816020015160008151811062000c445762000c4462002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a340000000000000081525062002add565b62000d21826040015160008151811062000cbb5762000cbb62002fdc565b6020026020010151826040015160008151811062000cdd5762000cdd62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a350000000000000081525062002b51565b62000d9f826060015160008151811062000d3f5762000d3f62002fdc565b6020026020010151600181111562000d5b5762000d5b6200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a360000000000000081525062002b51565b62000e1d816060015160008151811062000dbd5762000dbd62002fdc565b6020026020010151600181111562000dd95762000dd96200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a370000000000000081525062002b51565b62000eb3826080015160008151811062000e3b5762000e3b62002fdc565b60200260200101516001600160801b0316826080015160008151811062000e665762000e6662002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a380000000000000081525062002b51565b62000f49826080015160018151811062000ed15762000ed162002fdc565b60200260200101516001600160801b0316826080015160018151811062000efc5762000efc62002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a390000000000000081525062002b51565b62000fdf8260a0015160008151811062000f675762000f6762002fdc565b60200260200101516001600160801b03168260a0015160008151811062000f925762000f9262002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313000000000000081525062002b51565b620010758260a0015160018151811062000ffd5762000ffd62002fdc565b60200260200101516001600160801b03168260a0015160018151811062001028576200102862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313100000000000081525062002b51565b6200110b8260c0015160008151811062001093576200109362002fdc565b60200260200101516001600160801b03168260c00151600081518110620010be57620010be62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313200000000000081525062002b51565b73b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8460008151811062001136576200113662002fdc565b60200260200101906001600160a01b031690816001600160a01b031681525050739702230a8ea53601f5cd2dc00fdbc13d4df4a8c78460018151811062001181576200118162002fdc565b6001600160a01b039283166020918202929092010152601c54604051623e40a960e61b8152911690630f902a4090620011c1908790879060040162002ff2565b600060405180830381865afa158015620011df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200120991908101906200321c565b601d54604051623e40a960e61b81529193506001600160a01b031690630f902a40906200123d908790879060040162002ff2565b600060405180830381865afa1580156200125b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200128591908101906200321c565b90506200130b8260000151600081518110620012a557620012a562002fdc565b60200260200101518260000151600081518110620012c757620012c762002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313300000000000081525062002add565b6200138f826000015160018151811062001329576200132962002fdc565b602002602001015182600001516001815181106200134b576200134b62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313400000000000081525062002add565b620014068260200151600081518110620013ad57620013ad62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313500000000000081525062002add565b6200147d816020015160008151811062001424576200142462002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313600000000000081525062002add565b6200150182604001516000815181106200149b576200149b62002fdc565b60200260200101518260400151600081518110620014bd57620014bd62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313700000000000081525062002b51565b6200157f82606001516000815181106200151f576200151f62002fdc565b602002602001015160018111156200153b576200153b6200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313800000000000081525062002b51565b620015fd81606001516000815181106200159d576200159d62002fdc565b60200260200101516001811115620015b957620015b96200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313900000000000081525062002b51565b6200169382608001516000815181106200161b576200161b62002fdc565b60200260200101516001600160801b0316826080015160008151811062001646576200164662002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323000000000000081525062002b51565b620017298260800151600181518110620016b157620016b162002fdc565b60200260200101516001600160801b03168260800151600181518110620016dc57620016dc62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323100000000000081525062002b51565b620017bf8260a0015160008151811062001747576200174762002fdc565b60200260200101516001600160801b03168260a0015160008151811062001772576200177262002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323200000000000081525062002b51565b620018558260a00151600181518110620017dd57620017dd62002fdc565b60200260200101516001600160801b03168260a0015160018151811062001808576200180862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323300000000000081525062002b51565b620018eb8260c0015160008151811062001873576200187362002fdc565b60200260200101516001600160801b03168260c001516000815181106200189e576200189e62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323400000000000081525062002b51565b50505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000559578382906000526020600020018054620019379062002fa0565b80601f0160208091040260200160405190810160405280929190818152602001828054620019659062002fa0565b8015620019b65780601f106200198a57610100808354040283529160200191620019b6565b820191906000526020600020905b8154815290600101906020018083116200199857829003601f168201915b50505050508152602001906001019062001915565b60075460009060ff1615620019e4575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562001a5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a83919062002f86565b1415905090565b606060138054806020026020016040519081016040528092919081815260200182805480156200040a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003eb575050505050905090565b60408051600280825260608201835260009260208301908036833701905050905073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8160008151811062001b385762001b3862002fdc565b60200260200101906001600160a01b031690816001600160a01b031681525050739702230a8ea53601f5cd2dc00fdbc13d4df4a8c78160018151811062001b835762001b8362002fdc565b6001600160a01b039283166020918202929092010152601c54604051632c90a11360e11b8152620f424092600092169063592142269062001bcb908690869060040162002ff2565b600060405180830381865afa15801562001be9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c1391908101906200321c565b601d54604051632c90a11360e11b81529192506000916001600160a01b039091169063592142269062001c4d908790879060040162002ff2565b600060405180830381865afa15801562001c6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c9591908101906200321c565b905062001d1b826000015160008151811062001cb55762001cb562002fdc565b6020026020010151826000015160008151811062001cd75762001cd762002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a310000000000000081525062002add565b62001d9f826000015160018151811062001d395762001d3962002fdc565b6020026020010151826000015160018151811062001d5b5762001d5b62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a320000000000000081525062002add565b62001e16826020015160008151811062001dbd5762001dbd62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a330000000000000081525062002add565b62001e8d816020015160008151811062001e345762001e3462002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a340000000000000081525062002add565b62001f11826040015160008151811062001eab5762001eab62002fdc565b6020026020010151826040015160008151811062001ecd5762001ecd62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a350000000000000081525062002b51565b62001f8f826060015160008151811062001f2f5762001f2f62002fdc565b6020026020010151600181111562001f4b5762001f4b6200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a360000000000000081525062002b51565b6200200d816060015160008151811062001fad5762001fad62002fdc565b6020026020010151600181111562001fc95762001fc96200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a370000000000000081525062002b51565b620020a382608001516000815181106200202b576200202b62002fdc565b60200260200101516001600160801b0316826080015160008151811062002056576200205662002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a380000000000000081525062002b51565b620021398260800151600181518110620020c157620020c162002fdc565b60200260200101516001600160801b03168260800151600181518110620020ec57620020ec62002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a390000000000000081525062002b51565b620021cf8260a0015160008151811062002157576200215762002fdc565b60200260200101516001600160801b03168260a0015160008151811062002182576200218262002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313000000000000081525062002b51565b620022658260a00151600181518110620021ed57620021ed62002fdc565b60200260200101516001600160801b03168260a0015160018151811062002218576200221862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313100000000000081525062002b51565b620022fb8260c0015160008151811062002283576200228362002fdc565b60200260200101516001600160801b03168260c00151600081518110620022ae57620022ae62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313200000000000081525062002b51565b739702230a8ea53601f5cd2dc00fdbc13d4df4a8c78460008151811062002326576200232662002fdc565b60200260200101906001600160a01b031690816001600160a01b03168152505073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8460018151811062002371576200237162002fdc565b6001600160a01b039283166020918202929092010152601c54604051632c90a11360e11b8152911690635921422690620023b2908790879060040162002ff2565b600060405180830381865afa158015620023d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620023fa91908101906200321c565b601d54604051632c90a11360e11b81529193506001600160a01b0316906359214226906200242f908790879060040162002ff2565b600060405180830381865afa1580156200244d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200247791908101906200321c565b9050620024fd826000015160008151811062002497576200249762002fdc565b60200260200101518260000151600081518110620024b957620024b962002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313300000000000081525062002add565b6200258182600001516001815181106200251b576200251b62002fdc565b602002602001015182600001516001815181106200253d576200253d62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313400000000000081525062002add565b620025f882602001516000815181106200259f576200259f62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313500000000000081525062002add565b6200266f816020015160008151811062002616576200261662002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313600000000000081525062002add565b620026f382604001516000815181106200268d576200268d62002fdc565b60200260200101518260400151600081518110620026af57620026af62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313700000000000081525062002b51565b62002771826060015160008151811062002711576200271162002fdc565b602002602001015160018111156200272d576200272d6200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313800000000000081525062002b51565b620027ef81606001516000815181106200278f576200278f62002fdc565b60200260200101516001811115620027ab57620027ab6200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313900000000000081525062002b51565b6200288582608001516000815181106200280d576200280d62002fdc565b60200260200101516001600160801b0316826080015160008151811062002838576200283862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323000000000000081525062002b51565b6200291b8260800151600181518110620028a357620028a362002fdc565b60200260200101516001600160801b03168260800151600181518110620028ce57620028ce62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323100000000000081525062002b51565b620029b18260a0015160008151811062002939576200293962002fdc565b60200260200101516001600160801b03168260a0015160008151811062002964576200296462002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323200000000000081525062002b51565b62002a478260a00151600181518110620029cf57620029cf62002fdc565b60200260200101516001600160801b03168260a00151600181518110620029fa57620029fa62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323300000000000081525062002b51565b620018eb8260c0015160008151811062002a655762002a6562002fdc565b60200260200101516001600160801b03168260c0015160008151811062002a905762002a9062002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323400000000000081525062002b51565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d19062002b1a9086908690869060040162003391565b60006040518083038186803b15801562002b3357600080fd5b505afa15801562002b48573d6000803e3d6000fd5b50505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859062002b1a90869086908690600401620033c8565b612c1380620033ea83390190565b600081518084526020808501945080840160005b8381101562002bd75781516001600160a01b03168752958201959082019060010162002bb0565b509495945050505050565b60208152600062002bf7602083018462002b9c565b9392505050565b60005b8381101562002c1b57818101518382015260200162002c01565b50506000910152565b6000815180845262002c3e81602086016020860162002bfe565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002d0857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002cf157605f1989850301835262002cde84865162002c24565b948e01949350918d019160010162002cbf565b505050978a01979450509188019160010162002c79565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002dd857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002dc25783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002d7e565b50978a0197955050509187019160010162002d40565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002e4057603f1988860301845262002e2d85835162002c24565b9450928501929085019060010162002e0e565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562002e895762002e8962002e4d565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002ebb5762002ebb62002e4d565b604052919050565b60006020828403121562002ed657600080fd5b815167ffffffffffffffff8082111562002eef57600080fd5b818401915084601f83011262002f0457600080fd5b81518181111562002f195762002f1962002e4d565b62002f2e601f8201601f191660200162002e8f565b915080825285602082850101111562002f4657600080fd5b62002f5981602084016020860162002bfe565b50949350505050565b60408152600062002f77604083018562002c24565b90508260208301529392505050565b60006020828403121562002f9957600080fd5b5051919050565b600181811c9082168062002fb557607f821691505b60208210810362002fd657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60408152600062003007604083018562002b9c565b90506001600160801b03831660208301529392505050565b600067ffffffffffffffff8211156200303c576200303c62002e4d565b5060051b60200190565b600082601f8301126200305857600080fd5b81516020620030716200306b836200301f565b62002e8f565b82815260059290921b840181019181810190868411156200309157600080fd5b8286015b84811015620030c55780516001600160a01b0381168114620030b75760008081fd5b835291830191830162003095565b509695505050505050565b600082601f830112620030e257600080fd5b81516020620030f56200306b836200301f565b82815260059290921b840181019181810190868411156200311557600080fd5b8286015b84811015620030c5578051835291830191830162003119565b600082601f8301126200314457600080fd5b81516020620031576200306b836200301f565b82815260059290921b840181019181810190868411156200317757600080fd5b8286015b84811015620030c557805160028110620031955760008081fd5b83529183019183016200317b565b600082601f830112620031b557600080fd5b81516020620031c86200306b836200301f565b82815260059290921b84018101918181019086841115620031e857600080fd5b8286015b84811015620030c55780516001600160801b03811681146200320e5760008081fd5b8352918301918301620031ec565b6000602082840312156200322f57600080fd5b815167ffffffffffffffff808211156200324857600080fd5b9083019060e082860312156200325d57600080fd5b6200326762002e63565b8251828111156200327757600080fd5b620032858782860162003046565b8252506020830151828111156200329b57600080fd5b620032a98782860162003046565b602083015250604083015182811115620032c257600080fd5b620032d087828601620030d0565b604083015250606083015182811115620032e957600080fd5b620032f78782860162003132565b6060830152506080830151828111156200331057600080fd5b6200331e87828601620031a3565b60808301525060a0830151828111156200333757600080fd5b6200334587828601620031a3565b60a08301525060c0830151828111156200335e57600080fd5b6200336c87828601620031a3565b60c08301525095945050505050565b634e487b7160e01b600052602160045260246000fd5b60006001600160a01b03808616835280851660208401525060606040830152620033bf606083018462002c24565b95945050505050565b838152826020820152606060408201526000620033bf606083018462002c2456fe60e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033a2646970667358221220275c6f93940dbb18f1987129de8091c870e1570f5a103c70d8f18c4e8e5bcc5a64736f6c63430008140033","sourceMap":"223:7249:97:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;666:82:97;;;-1:-1:-1;;;;;;666:82:97;705:42;666:82;;;223:7249;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000f15760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa91462000197578063ba414fa614620001a1578063e20c9f7114620001bc578063f4af7f0814620001c657600080fd5b806385226c81146200016a578063916a17c61462000183578063a2797cec146200018d57600080fd5b80633e5e3c2311620000cc5780633e5e3c23146200013d5780633f7286f4146200014757806366d9a9a0146200015157600080fd5b80630a9254e414620000f65780631ed7831c14620001025780632ade38801462000124575b600080fd5b62000100620001d0565b005b6200010c620003b0565b6040516200011b919062002be2565b60405180910390f35b6200012e62000414565b6040516200011b919062002c52565b6200010c62000562565b6200010c620005c4565b6200015b62000626565b6040516200011b919062002d18565b6200017462000725565b6040516200011b919062002de7565b6200015b620007ff565b62000100620008fe565b62000174620018f1565b620001ab620019cb565b60405190151581526020016200011b565b6200010c62001a8a565b6200010062001aec565b60405163975a6ce960e01b815260206004820152600960248201527f6176616c616e63686500000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371ee464d90829063975a6ce990606401600060405180830381865afa15801562000256573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000280919081019062002ec3565b6301fc52a26040518363ffffffff1660e01b8152600401620002a492919062002f62565b6020604051808303816000875af1158015620002c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ea919062002f86565b50739ad6c38be94206ca50bb0d90783181662f0cfa10738e42f2f4101563bf679975178e880fd87d3efd4e73b4315e873dbcf96ffd0acd8ea43f689d8c20fb30604051620003389062002b8e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000375573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606060148054806020026020016040519081016040528092919081815260200182805480156200040a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620003eb575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200055957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000541578382906000526020600020018054620004ad9062002fa0565b80601f0160208091040260200160405190810160405280929190818152602001828054620004db9062002fa0565b80156200052c5780601f1062000500576101008083540402835291602001916200052c565b820191906000526020600020905b8154815290600101906020018083116200050e57829003601f168201915b5050505050815260200190600101906200048b565b50505050815250508152602001906001019062000438565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156200040a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003eb575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200040a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003eb575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015620005595760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200070c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620006b85790505b505050505081525050815260200190600101906200064a565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015620005595783829060005260206000200180546200076b9062002fa0565b80601f0160208091040260200160405190810160405280929190818152602001828054620007999062002fa0565b8015620007ea5780601f10620007be57610100808354040283529160200191620007ea565b820191906000526020600020905b815481529060010190602001808311620007cc57829003601f168201915b50505050508152602001906001019062000749565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015620005595760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620008e557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620008915790505b5050505050815250508152602001906001019062000823565b604080516002808252606082018352600092602083019080368337019050509050739702230a8ea53601f5cd2dc00fdbc13d4df4a8c7816000815181106200094a576200094a62002fdc565b60200260200101906001600160a01b031690816001600160a01b03168152505073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8160018151811062000995576200099562002fdc565b6001600160a01b039283166020918202929092010152601c54604051623e40a960e61b8152620f4240926000921690630f902a4090620009dc908690869060040162002ff2565b600060405180830381865afa158015620009fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a2491908101906200321c565b601d54604051623e40a960e61b81529192506000916001600160a01b0390911690630f902a409062000a5d908790879060040162002ff2565b600060405180830381865afa15801562000a7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000aa591908101906200321c565b905062000b2b826000015160008151811062000ac55762000ac562002fdc565b6020026020010151826000015160008151811062000ae75762000ae762002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a310000000000000081525062002add565b62000baf826000015160018151811062000b495762000b4962002fdc565b6020026020010151826000015160018151811062000b6b5762000b6b62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a320000000000000081525062002add565b62000c26826020015160008151811062000bcd5762000bcd62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a330000000000000081525062002add565b62000c9d816020015160008151811062000c445762000c4462002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a340000000000000081525062002add565b62000d21826040015160008151811062000cbb5762000cbb62002fdc565b6020026020010151826040015160008151811062000cdd5762000cdd62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a350000000000000081525062002b51565b62000d9f826060015160008151811062000d3f5762000d3f62002fdc565b6020026020010151600181111562000d5b5762000d5b6200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a360000000000000081525062002b51565b62000e1d816060015160008151811062000dbd5762000dbd62002fdc565b6020026020010151600181111562000dd95762000dd96200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a370000000000000081525062002b51565b62000eb3826080015160008151811062000e3b5762000e3b62002fdc565b60200260200101516001600160801b0316826080015160008151811062000e665762000e6662002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a380000000000000081525062002b51565b62000f49826080015160018151811062000ed15762000ed162002fdc565b60200260200101516001600160801b0316826080015160018151811062000efc5762000efc62002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a390000000000000081525062002b51565b62000fdf8260a0015160008151811062000f675762000f6762002fdc565b60200260200101516001600160801b03168260a0015160008151811062000f925762000f9262002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313000000000000081525062002b51565b620010758260a0015160018151811062000ffd5762000ffd62002fdc565b60200260200101516001600160801b03168260a0015160018151811062001028576200102862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313100000000000081525062002b51565b6200110b8260c0015160008151811062001093576200109362002fdc565b60200260200101516001600160801b03168260c00151600081518110620010be57620010be62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313200000000000081525062002b51565b73b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8460008151811062001136576200113662002fdc565b60200260200101906001600160a01b031690816001600160a01b031681525050739702230a8ea53601f5cd2dc00fdbc13d4df4a8c78460018151811062001181576200118162002fdc565b6001600160a01b039283166020918202929092010152601c54604051623e40a960e61b8152911690630f902a4090620011c1908790879060040162002ff2565b600060405180830381865afa158015620011df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200120991908101906200321c565b601d54604051623e40a960e61b81529193506001600160a01b031690630f902a40906200123d908790879060040162002ff2565b600060405180830381865afa1580156200125b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200128591908101906200321c565b90506200130b8260000151600081518110620012a557620012a562002fdc565b60200260200101518260000151600081518110620012c757620012c762002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313300000000000081525062002add565b6200138f826000015160018151811062001329576200132962002fdc565b602002602001015182600001516001815181106200134b576200134b62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313400000000000081525062002add565b620014068260200151600081518110620013ad57620013ad62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313500000000000081525062002add565b6200147d816020015160008151811062001424576200142462002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313600000000000081525062002add565b6200150182604001516000815181106200149b576200149b62002fdc565b60200260200101518260400151600081518110620014bd57620014bd62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313700000000000081525062002b51565b6200157f82606001516000815181106200151f576200151f62002fdc565b602002602001015160018111156200153b576200153b6200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313800000000000081525062002b51565b620015fd81606001516000815181106200159d576200159d62002fdc565b60200260200101516001811115620015b957620015b96200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a313900000000000081525062002b51565b6200169382608001516000815181106200161b576200161b62002fdc565b60200260200101516001600160801b0316826080015160008151811062001646576200164662002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323000000000000081525062002b51565b620017298260800151600181518110620016b157620016b162002fdc565b60200260200101516001600160801b03168260800151600181518110620016dc57620016dc62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323100000000000081525062002b51565b620017bf8260a0015160008151811062001747576200174762002fdc565b60200260200101516001600160801b03168260a0015160008151811062001772576200177262002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323200000000000081525062002b51565b620018558260a00151600181518110620017dd57620017dd62002fdc565b60200260200101516001600160801b03168260a0015160018151811062001808576200180862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323300000000000081525062002b51565b620018eb8260c0015160008151811062001873576200187362002fdc565b60200260200101516001600160801b03168260c001516000815181106200189e576200189e62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e74496e3a3a323400000000000081525062002b51565b50505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000559578382906000526020600020018054620019379062002fa0565b80601f0160208091040260200160405190810160405280929190818152602001828054620019659062002fa0565b8015620019b65780601f106200198a57610100808354040283529160200191620019b6565b820191906000526020600020905b8154815290600101906020018083116200199857829003601f168201915b50505050508152602001906001019062001915565b60075460009060ff1615620019e4575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562001a5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a83919062002f86565b1415905090565b606060138054806020026020016040519081016040528092919081815260200182805480156200040a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620003eb575050505050905090565b60408051600280825260608201835260009260208301908036833701905050905073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8160008151811062001b385762001b3862002fdc565b60200260200101906001600160a01b031690816001600160a01b031681525050739702230a8ea53601f5cd2dc00fdbc13d4df4a8c78160018151811062001b835762001b8362002fdc565b6001600160a01b039283166020918202929092010152601c54604051632c90a11360e11b8152620f424092600092169063592142269062001bcb908690869060040162002ff2565b600060405180830381865afa15801562001be9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c1391908101906200321c565b601d54604051632c90a11360e11b81529192506000916001600160a01b039091169063592142269062001c4d908790879060040162002ff2565b600060405180830381865afa15801562001c6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c9591908101906200321c565b905062001d1b826000015160008151811062001cb55762001cb562002fdc565b6020026020010151826000015160008151811062001cd75762001cd762002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a310000000000000081525062002add565b62001d9f826000015160018151811062001d395762001d3962002fdc565b6020026020010151826000015160018151811062001d5b5762001d5b62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a320000000000000081525062002add565b62001e16826020015160008151811062001dbd5762001dbd62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a330000000000000081525062002add565b62001e8d816020015160008151811062001e345762001e3462002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a340000000000000081525062002add565b62001f11826040015160008151811062001eab5762001eab62002fdc565b6020026020010151826040015160008151811062001ecd5762001ecd62002fdc565b60200260200101516040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a350000000000000081525062002b51565b62001f8f826060015160008151811062001f2f5762001f2f62002fdc565b6020026020010151600181111562001f4b5762001f4b6200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a360000000000000081525062002b51565b6200200d816060015160008151811062001fad5762001fad62002fdc565b6020026020010151600181111562001fc95762001fc96200337b565b60ff16600160ff166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a370000000000000081525062002b51565b620020a382608001516000815181106200202b576200202b62002fdc565b60200260200101516001600160801b0316826080015160008151811062002056576200205662002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a380000000000000081525062002b51565b620021398260800151600181518110620020c157620020c162002fdc565b60200260200101516001600160801b03168260800151600181518110620020ec57620020ec62002fdc565b60200260200101516001600160801b03166040518060400160405280601981526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a390000000000000081525062002b51565b620021cf8260a0015160008151811062002157576200215762002fdc565b60200260200101516001600160801b03168260a0015160008151811062002182576200218262002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313000000000000081525062002b51565b620022658260a00151600181518110620021ed57620021ed62002fdc565b60200260200101516001600160801b03168260a0015160018151811062002218576200221862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313100000000000081525062002b51565b620022fb8260c0015160008151811062002283576200228362002fdc565b60200260200101516001600160801b03168260c00151600081518110620022ae57620022ae62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313200000000000081525062002b51565b739702230a8ea53601f5cd2dc00fdbc13d4df4a8c78460008151811062002326576200232662002fdc565b60200260200101906001600160a01b031690816001600160a01b03168152505073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e8460018151811062002371576200237162002fdc565b6001600160a01b039283166020918202929092010152601c54604051632c90a11360e11b8152911690635921422690620023b2908790879060040162002ff2565b600060405180830381865afa158015620023d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620023fa91908101906200321c565b601d54604051632c90a11360e11b81529193506001600160a01b0316906359214226906200242f908790879060040162002ff2565b600060405180830381865afa1580156200244d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200247791908101906200321c565b9050620024fd826000015160008151811062002497576200249762002fdc565b60200260200101518260000151600081518110620024b957620024b962002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313300000000000081525062002add565b6200258182600001516001815181106200251b576200251b62002fdc565b602002602001015182600001516001815181106200253d576200253d62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313400000000000081525062002add565b620025f882602001516000815181106200259f576200259f62002fdc565b6020026020010151739b2cc8e6a2bbb56d6be4682891a91b0e48633c726040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313500000000000081525062002add565b6200266f816020015160008151811062002616576200261662002fdc565b6020026020010151731d7a1a79e2b4ef88d2323f3845246d24a3c20f1d6040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313600000000000081525062002add565b620026f382604001516000815181106200268d576200268d62002fdc565b60200260200101518260400151600081518110620026af57620026af62002fdc565b60200260200101516040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313700000000000081525062002b51565b62002771826060015160008151811062002711576200271162002fdc565b602002602001015160018111156200272d576200272d6200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313800000000000081525062002b51565b620027ef81606001516000815181106200278f576200278f62002fdc565b60200260200101516001811115620027ab57620027ab6200337b565b60ff16600160ff166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a313900000000000081525062002b51565b6200288582608001516000815181106200280d576200280d62002fdc565b60200260200101516001600160801b0316826080015160008151811062002838576200283862002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323000000000000081525062002b51565b6200291b8260800151600181518110620028a357620028a362002fdc565b60200260200101516001600160801b03168260800151600181518110620028ce57620028ce62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323100000000000081525062002b51565b620029b18260a0015160008151811062002939576200293962002fdc565b60200260200101516001600160801b03168260a0015160008151811062002964576200296462002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323200000000000081525062002b51565b62002a478260a00151600181518110620029cf57620029cf62002fdc565b60200260200101516001600160801b03168260a00151600181518110620029fa57620029fa62002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323300000000000081525062002b51565b620018eb8260c0015160008151811062002a655762002a6562002fdc565b60200260200101516001600160801b03168260c0015160008151811062002a905762002a9062002fdc565b60200260200101516001600160801b03166040518060400160405280601a81526020017f746573745f51756f746546726f6d416d6f756e4f75743a3a323400000000000081525062002b51565b604051632f2769d160e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90632f2769d19062002b1a9086908690869060040162003391565b60006040518083038186803b15801562002b3357600080fd5b505afa15801562002b48573d6000803e3d6000fd5b50505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859062002b1a90869086908690600401620033c8565b612c1380620033ea83390190565b600081518084526020808501945080840160005b8381101562002bd75781516001600160a01b03168752958201959082019060010162002bb0565b509495945050505050565b60208152600062002bf7602083018462002b9c565b9392505050565b60005b8381101562002c1b57818101518382015260200162002c01565b50506000910152565b6000815180845262002c3e81602086016020860162002bfe565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562002d0857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562002cf157605f1989850301835262002cde84865162002c24565b948e01949350918d019160010162002cbf565b505050978a01979450509188019160010162002c79565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002dd857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002dc25783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002d7e565b50978a0197955050509187019160010162002d40565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002e4057603f1988860301845262002e2d85835162002c24565b9450928501929085019060010162002e0e565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562002e895762002e8962002e4d565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002ebb5762002ebb62002e4d565b604052919050565b60006020828403121562002ed657600080fd5b815167ffffffffffffffff8082111562002eef57600080fd5b818401915084601f83011262002f0457600080fd5b81518181111562002f195762002f1962002e4d565b62002f2e601f8201601f191660200162002e8f565b915080825285602082850101111562002f4657600080fd5b62002f5981602084016020860162002bfe565b50949350505050565b60408152600062002f77604083018562002c24565b90508260208301529392505050565b60006020828403121562002f9957600080fd5b5051919050565b600181811c9082168062002fb557607f821691505b60208210810362002fd657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60408152600062003007604083018562002b9c565b90506001600160801b03831660208301529392505050565b600067ffffffffffffffff8211156200303c576200303c62002e4d565b5060051b60200190565b600082601f8301126200305857600080fd5b81516020620030716200306b836200301f565b62002e8f565b82815260059290921b840181019181810190868411156200309157600080fd5b8286015b84811015620030c55780516001600160a01b0381168114620030b75760008081fd5b835291830191830162003095565b509695505050505050565b600082601f830112620030e257600080fd5b81516020620030f56200306b836200301f565b82815260059290921b840181019181810190868411156200311557600080fd5b8286015b84811015620030c5578051835291830191830162003119565b600082601f8301126200314457600080fd5b81516020620031576200306b836200301f565b82815260059290921b840181019181810190868411156200317757600080fd5b8286015b84811015620030c557805160028110620031955760008081fd5b83529183019183016200317b565b600082601f830112620031b557600080fd5b81516020620031c86200306b836200301f565b82815260059290921b84018101918181019086841115620031e857600080fd5b8286015b84811015620030c55780516001600160801b03811681146200320e5760008081fd5b8352918301918301620031ec565b6000602082840312156200322f57600080fd5b815167ffffffffffffffff808211156200324857600080fd5b9083019060e082860312156200325d57600080fd5b6200326762002e63565b8251828111156200327757600080fd5b620032858782860162003046565b8252506020830151828111156200329b57600080fd5b620032a98782860162003046565b602083015250604083015182811115620032c257600080fd5b620032d087828601620030d0565b604083015250606083015182811115620032e957600080fd5b620032f78782860162003132565b6060830152506080830151828111156200331057600080fd5b6200331e87828601620031a3565b60808301525060a0830151828111156200333757600080fd5b6200334587828601620031a3565b60a08301525060c0830151828111156200335e57600080fd5b6200336c87828601620031a3565b60c08301525095945050505050565b634e487b7160e01b600052602160045260246000fd5b60006001600160a01b03808616835280851660208401525060606040830152620033bf606083018462002c24565b95945050505050565b838152826020820152606060408201526000620033bf606083018462002c2456fe60e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033a2646970667358221220275c6f93940dbb18f1987129de8091c870e1570f5a103c70d8f18c4e8e5bcc5a64736f6c63430008140033","sourceMap":"223:7249:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;755:232;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;993:3231:97:-;;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5638:14:105;;5631:22;5613:41;;5601:2;5586:18;1243:204:1;5473:187:105;2304:142:5;;;:::i;4230:3240:97:-;;;:::i;755:232::-;809:22;;-1:-1:-1;;;809:22:97;;5867:2:105;809:22:97;;;5849:21:105;5906:1;5886:18;;;5879:29;5944:11;5924:18;;;5917:39;789:19:97;;;;;;809:9;;5973:18:105;;809:22:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;809:22:97;;;;;;;;;;;;:::i;:::-;833:8;789:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;240:42:95;313::97;396;865:115;;;;;:::i;:::-;-1:-1:-1;;;;;8177:15:105;;;8159:34;;8229:15;;;8224:2;8209:18;;8202:43;8281:15;;;8276:2;8261:18;;8254:43;8086:2;8071:18;865:115:97;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;853:9:97;:127;;;;-1:-1:-1;;;;;853:127:97;;;;;;;;;;755:232::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;993:3231:97;1074:16;;;1088:1;1074:16;;;;;;;;1049:22;;1074:16;;;;;;;;;;-1:-1:-1;1074:16:97;1049:41;;772:42:95;1100:5:97;1106:1;1100:8;;;;;;;;:::i;:::-;;;;;;:43;-1:-1:-1;;;;;1100:43:97;;;-1:-1:-1;;;;;1100:43:97;;;;;691:42:95;1153:5:97;1159:1;1153:8;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1153:43:97;;;:8;;;;;;;;;:43;1273:9;;:51;;-1:-1:-1;;;1273:51:97;;1226:3;;1207:16;;1273:9;;:34;;:51;;1308:5;;1226:3;;1273:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1273:51:97;;;;;;;;;;;;:::i;:::-;1367:9;;:51;;-1:-1:-1;;;1367:51:97;;1240:84;;-1:-1:-1;1334:30:97;;-1:-1:-1;;;;;1367:9:97;;;;:34;;:51;;1402:5;;1409:8;;1367:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1367:51:97;;;;;;;;;;;;:::i;:::-;1334:84;;1429:75;1438:8;:14;;;1453:1;1438:17;;;;;;;;:::i;:::-;;;;;;;1457:8;:14;;;1472:1;1457:17;;;;;;;;:::i;:::-;;;;;;;1429:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;1514;1523:8;:14;;;1538:1;1523:17;;;;;;;;:::i;:::-;;;;;;;1542:8;:14;;;1557:1;1542:17;;;;;;;;:::i;:::-;;;;;;;1514:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;1600:73;1609:8;:14;;;1624:1;1609:17;;;;;;;;:::i;:::-;;;;;;;584:42;1600:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;1683:76;1692:8;:14;;;1707:1;1692:17;;;;;;;;:::i;:::-;;;;;;;492:42;1683:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;1770:81;1779:8;:17;;;1797:1;1779:20;;;;;;;;:::i;:::-;;;;;;;1801:8;:17;;;1819:1;1801:20;;;;;;;;:::i;:::-;;;;;;;1770:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;1862:95;1877:8;:17;;;1895:1;1877:20;;;;;;;;:::i;:::-;;;;;;;1871:27;;;;;;;;:::i;:::-;1862:95;;1906:20;1862:95;;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;1967;1982:8;:17;;;2000:1;1982:20;;;;;;;;:::i;:::-;;;;;;;1976:27;;;;;;;;:::i;:::-;1967:95;;2011:20;1967:95;;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;2073:79;2082:8;:16;;;2099:1;2082:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2073:79:97;2103:8;:16;;;2120:1;2103:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2073:79:97;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;2162;2171:8;:16;;;2188:1;2171:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2162:79:97;2192:8;:16;;;2209:1;2192:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2162:79:97;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;2252:170;2274:8;:38;;;2313:1;2274:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2252:170:97;2329:8;:38;;;2368:1;2329:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2252:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;2432;2454:8;:38;;;2493:1;2454:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2432:170:97;2509:8;:38;;;2548:1;2509:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2432:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;2613:74;2622:8;:13;;;2636:1;2622:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2613:74:97;2640:8;:13;;;2654:1;2640:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2613:74:97;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;691:42:95;2698:5:97;2704:1;2698:8;;;;;;;;:::i;:::-;;;;;;:43;-1:-1:-1;;;;;2698:43:97;;;-1:-1:-1;;;;;2698:43:97;;;;;772:42:95;2751:5:97;2757:1;2751:8;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2751:43:97;;;:8;;;;;;;;;:43;2816:9;;:51;;-1:-1:-1;;;2816:51:97;;:9;;;:34;;:51;;2851:5;;2858:8;;2816:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2816:51:97;;;;;;;;;;;;:::i;:::-;2888:9;;:51;;-1:-1:-1;;;2888:51:97;;2805:62;;-1:-1:-1;;;;;;2888:9:97;;:34;;:51;;2923:5;;2930:8;;2888:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2888:51:97;;;;;;;;;;;;:::i;:::-;2877:62;;2950:76;2959:8;:14;;;2974:1;2959:17;;;;;;;;:::i;:::-;;;;;;;2978:8;:14;;;2993:1;2978:17;;;;;;;;:::i;:::-;;;;;;;2950:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;3036;3045:8;:14;;;3060:1;3045:17;;;;;;;;:::i;:::-;;;;;;;3064:8;:14;;;3079:1;3064:17;;;;;;;;:::i;:::-;;;;;;;3036:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;3123:74;3132:8;:14;;;3147:1;3132:17;;;;;;;;:::i;:::-;;;;;;;584:42;3123:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;3207:77;3216:8;:14;;;3231:1;3216:17;;;;;;;;:::i;:::-;;;;;;;492:42;3207:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;3295:82;3304:8;:17;;;3322:1;3304:20;;;;;;;;:::i;:::-;;;;;;;3326:8;:17;;;3344:1;3326:20;;;;;;;;:::i;:::-;;;;;;;3295:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;3388:96;3403:8;:17;;;3421:1;3403:20;;;;;;;;:::i;:::-;;;;;;;3397:27;;;;;;;;:::i;:::-;3388:96;;3432:20;3388:96;;;;;;;;;;;;;;;;;;;:8;:96::i;:::-;3494;3509:8;:17;;;3527:1;3509:20;;;;;;;;:::i;:::-;;;;;;;3503:27;;;;;;;;:::i;:::-;3494:96;;3538:20;3494:96;;;;;;;;;;;;;;;;;;;:8;:96::i;:::-;3601:80;3610:8;:16;;;3627:1;3610:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3601:80:97;3631:8;:16;;;3648:1;3631:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3601:80:97;;;;;;;;;;;;;;;;;;:8;:80::i;:::-;3691;3700:8;:16;;;3717:1;3700:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3691:80:97;3721:8;:16;;;3738:1;3721:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3691:80:97;;;;;;;;;;;;;;;;;;:8;:80::i;:::-;3782:170;3804:8;:38;;;3843:1;3804:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3782:170:97;3859:8;:38;;;3898:1;3859:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3782:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;3962;3984:8;:38;;;4023:1;3984:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3962:170:97;4039:8;:38;;;4078:1;4039:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3962:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;4143:74;4152:8;:13;;;4166:1;4152:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4143:74:97;4170:8;:13;;;4184:1;4170:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4143:74:97;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;1039:3185;;;;993:3231::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;14689:74:105;;;1398:17:1;14779:18:105;;;14772:34;1428:1:1;;1377:7;;14662:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;4230:3240:97:-;4311:16;;;4325:1;4311:16;;;;;;;;4286:22;;4311:16;;;;;;;;;;-1:-1:-1;4311:16:97;4286:41;;691:42:95;4337:5:97;4343:1;4337:8;;;;;;;;:::i;:::-;;;;;;:43;-1:-1:-1;;;;;4337:43:97;;;-1:-1:-1;;;;;4337:43:97;;;;;772:42:95;4390:5:97;4396:1;4390:8;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4390:43:97;;;:8;;;;;;;;;:43;4511:9;;:53;;-1:-1:-1;;;4511:53:97;;4464:3;;4444:17;;4511:9;;:35;;:53;;4547:5;;4464:3;;4511:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4511:53:97;;;;;;;;;;;;:::i;:::-;4607:9;;:53;;-1:-1:-1;;;4607:53:97;;4478:86;;-1:-1:-1;4574:30:97;;-1:-1:-1;;;;;4607:9:97;;;;:35;;:53;;4643:5;;4650:9;;4607:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4607:53:97;;;;;;;;;;;;:::i;:::-;4574:86;;4671:75;4680:8;:14;;;4695:1;4680:17;;;;;;;;:::i;:::-;;;;;;;4699:8;:14;;;4714:1;4699:17;;;;;;;;:::i;:::-;;;;;;;4671:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;4756;4765:8;:14;;;4780:1;4765:17;;;;;;;;:::i;:::-;;;;;;;4784:8;:14;;;4799:1;4784:17;;;;;;;;:::i;:::-;;;;;;;4756:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;4842:73;4851:8;:14;;;4866:1;4851:17;;;;;;;;:::i;:::-;;;;;;;584:42;4842:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;4925:76;4934:8;:14;;;4949:1;4934:17;;;;;;;;:::i;:::-;;;;;;;492:42;4925:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;5012:81;5021:8;:17;;;5039:1;5021:20;;;;;;;;:::i;:::-;;;;;;;5043:8;:17;;;5061:1;5043:20;;;;;;;;:::i;:::-;;;;;;;5012:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;5104:95;5119:8;:17;;;5137:1;5119:20;;;;;;;;:::i;:::-;;;;;;;5113:27;;;;;;;;:::i;:::-;5104:95;;5148:20;5104:95;;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;5209;5224:8;:17;;;5242:1;5224:20;;;;;;;;:::i;:::-;;;;;;;5218:27;;;;;;;;:::i;:::-;5209:95;;5253:20;5209:95;;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;5315:79;5324:8;:16;;;5341:1;5324:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5315:79:97;5345:8;:16;;;5362:1;5345:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5315:79:97;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;5404;5413:8;:16;;;5430:1;5413:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5404:79:97;5434:8;:16;;;5451:1;5434:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5404:79:97;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;5494:170;5516:8;:38;;;5555:1;5516:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5494:170:97;5571:8;:38;;;5610:1;5571:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5494:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;5674;5696:8;:38;;;5735:1;5696:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5674:170:97;5751:8;:38;;;5790:1;5751:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5674:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;5855:74;5864:8;:13;;;5878:1;5864:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5855:74:97;5882:8;:13;;;5896:1;5882:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5855:74:97;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;772:42:95;5940:5:97;5946:1;5940:8;;;;;;;;:::i;:::-;;;;;;:43;-1:-1:-1;;;;;5940:43:97;;;-1:-1:-1;;;;;5940:43:97;;;;;691:42:95;5993:5:97;5999:1;5993:8;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5993:43:97;;;:8;;;;;;;;;:43;6058:9;;:53;;-1:-1:-1;;;6058:53:97;;:9;;;:35;;:53;;6094:5;;6101:9;;6058:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6058:53:97;;;;;;;;;;;;:::i;:::-;6132:9;;:53;;-1:-1:-1;;;6132:53:97;;6047:64;;-1:-1:-1;;;;;;6132:9:97;;:35;;:53;;6168:5;;6175:9;;6132:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6132:53:97;;;;;;;;;;;;:::i;:::-;6121:64;;6196:76;6205:8;:14;;;6220:1;6205:17;;;;;;;;:::i;:::-;;;;;;;6224:8;:14;;;6239:1;6224:17;;;;;;;;:::i;:::-;;;;;;;6196:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;6282;6291:8;:14;;;6306:1;6291:17;;;;;;;;:::i;:::-;;;;;;;6310:8;:14;;;6325:1;6310:17;;;;;;;;:::i;:::-;;;;;;;6282:76;;;;;;;;;;;;;;;;;:8;:76::i;:::-;6369:74;6378:8;:14;;;6393:1;6378:17;;;;;;;;:::i;:::-;;;;;;;584:42;6369:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;6453:77;6462:8;:14;;;6477:1;6462:17;;;;;;;;:::i;:::-;;;;;;;492:42;6453:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;6541:82;6550:8;:17;;;6568:1;6550:20;;;;;;;;:::i;:::-;;;;;;;6572:8;:17;;;6590:1;6572:20;;;;;;;;:::i;:::-;;;;;;;6541:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;6634:96;6649:8;:17;;;6667:1;6649:20;;;;;;;;:::i;:::-;;;;;;;6643:27;;;;;;;;:::i;:::-;6634:96;;6678:20;6634:96;;;;;;;;;;;;;;;;;;;:8;:96::i;:::-;6740;6755:8;:17;;;6773:1;6755:20;;;;;;;;:::i;:::-;;;;;;;6749:27;;;;;;;;:::i;:::-;6740:96;;6784:20;6740:96;;;;;;;;;;;;;;;;;;;:8;:96::i;:::-;6847:80;6856:8;:16;;;6873:1;6856:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6847:80:97;6877:8;:16;;;6894:1;6877:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6847:80:97;;;;;;;;;;;;;;;;;;:8;:80::i;:::-;6937;6946:8;:16;;;6963:1;6946:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6937:80:97;6967:8;:16;;;6984:1;6967:19;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6937:80:97;;;;;;;;;;;;;;;;;;:8;:80::i;:::-;7028:170;7050:8;:38;;;7089:1;7050:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7028:170:97;7105:8;:38;;;7144:1;7105:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7028:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;7208;7230:8;:38;;;7269:1;7230:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7208:170:97;7285:8;:38;;;7324:1;7285:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7208:170:97;;;;;;;;;;;;;;;;;;:8;:170::i;:::-;7389:74;7398:8;:13;;;7412:1;7398:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7389:74:97;7416:8;:13;;;7430:1;7416:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;7389:74:97;;;;;;;;;;;;;;;;;;:8;:74::i;3570:134:1:-;3668:29;;-1:-1:-1;;;3668:29:1;;:11;;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3570:134;;;:::o;2386:::-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;-1:-1:-1:-;;;;;;;;:::o;14:484:105:-;67:3;105:5;99:12;132:6;127:3;120:19;158:4;187:2;182:3;178:12;171:19;;224:2;217:5;213:14;245:1;255:218;269:6;266:1;263:13;255:218;;;334:13;;-1:-1:-1;;;;;330:62:105;318:75;;413:12;;;;448:15;;;;291:1;284:9;255:218;;;-1:-1:-1;489:3:105;;14:484;-1:-1:-1;;;;;14:484:105:o;503:261::-;682:2;671:9;664:21;645:4;702:56;754:2;743:9;739:18;731:6;702:56;:::i;:::-;694:64;503:261;-1:-1:-1;;;503:261:105:o;769:250::-;854:1;864:113;878:6;875:1;872:13;864:113;;;954:11;;;948:18;935:11;;;928:39;900:2;893:10;864:113;;;-1:-1:-1;;1011:1:105;993:16;;986:27;769:250::o;1024:271::-;1066:3;1104:5;1098:12;1131:6;1126:3;1119:19;1147:76;1216:6;1209:4;1204:3;1200:14;1193:4;1186:5;1182:16;1147:76;:::i;:::-;1277:2;1256:15;-1:-1:-1;;1252:29:105;1243:39;;;;1284:4;1239:50;;1024:271;-1:-1:-1;;1024:271:105:o;1300:1765::-;1533:2;1585:21;;;1655:13;;1558:18;;;1677:22;;;1504:4;;1533:2;1718;;1736:18;;;;1773:1;1816:15;;;1801:31;;1797:40;;1860:15;;;1504:4;;1924:1112;1940:6;1935:3;1932:15;1924:1112;;;-1:-1:-1;;2009:22:105;;;2005:36;1993:49;;2065:13;;2152:9;;-1:-1:-1;;;;;2148:58:105;2133:74;;2246:11;;2240:18;2278:15;;;2271:27;;;2359:19;;2105:15;;;2391:24;;;2572:21;;;;2438:2;2520:17;;;2508:30;;2504:39;;;2462:15;;;;2617:1;2631:296;2647:8;2642:3;2639:17;2631:296;;;2753:2;2749:7;2740:6;2732;2728:19;2724:33;2717:5;2710:48;2785:42;2820:6;2809:8;2803:15;2785:42;:::i;:::-;2856:17;;;;2775:52;-1:-1:-1;2899:14:105;;;;2675:1;2666:11;2631:296;;;-1:-1:-1;;;3014:12:105;;;;2950:6;-1:-1:-1;;2979:15:105;;;;1966:1;1957:11;1924:1112;;;-1:-1:-1;3053:6:105;;1300:1765;-1:-1:-1;;;;;;;;;;1300:1765:105:o;3070:1590::-;3272:4;3301:2;3341;3330:9;3326:18;3371:2;3360:9;3353:21;3394:6;3429;3423:13;3460:6;3452;3445:22;3486:2;3476:12;;3519:2;3508:9;3504:18;3497:25;;3581:2;3571:6;3568:1;3564:14;3553:9;3549:30;3545:39;3619:2;3611:6;3607:15;3640:1;3661;3671:960;3687:6;3682:3;3679:15;3671:960;;;3756:22;;;-1:-1:-1;;3752:36:105;3740:49;;3812:13;;3899:9;;-1:-1:-1;;;;;3895:58:105;3880:74;;3993:11;;3987:18;4025:15;;;4018:27;;;4106:19;;3852:15;;;4138:24;;;4228:21;;;;4273:1;;4196:2;4184:15;;;4287:236;4303:8;4298:3;4295:17;4287:236;;;4384:15;;4401:20;4380:42;4366:57;;4492:17;;;;4331:1;4322:11;;;;;4449:14;;;;4287:236;;;-1:-1:-1;4609:12:105;;;;4546:5;-1:-1:-1;;;4574:15:105;;;;3713:1;3704:11;3671:960;;;-1:-1:-1;4648:6:105;;3070:1590;-1:-1:-1;;;;;;;;;3070:1590:105:o;4665:803::-;4827:4;4856:2;4896;4885:9;4881:18;4926:2;4915:9;4908:21;4949:6;4984;4978:13;5015:6;5007;5000:22;5053:2;5042:9;5038:18;5031:25;;5115:2;5105:6;5102:1;5098:14;5087:9;5083:30;5079:39;5065:53;;5153:2;5145:6;5141:15;5174:1;5184:255;5198:6;5195:1;5192:13;5184:255;;;5291:2;5287:7;5275:9;5267:6;5263:22;5259:36;5254:3;5247:49;5319:40;5352:6;5343;5337:13;5319:40;:::i;:::-;5309:50;-1:-1:-1;5417:12:105;;;;5382:15;;;;5220:1;5213:9;5184:255;;;-1:-1:-1;5456:6:105;;4665:803;-1:-1:-1;;;;;;;4665:803:105:o;6002:127::-;6063:10;6058:3;6054:20;6051:1;6044:31;6094:4;6091:1;6084:15;6118:4;6115:1;6108:15;6134:253;6206:2;6200:9;6248:4;6236:17;;6283:18;6268:34;;6304:22;;;6265:62;6262:88;;;6330:18;;:::i;:::-;6366:2;6359:22;6134:253;:::o;6392:275::-;6463:2;6457:9;6528:2;6509:13;;-1:-1:-1;;6505:27:105;6493:40;;6563:18;6548:34;;6584:22;;;6545:62;6542:88;;;6610:18;;:::i;:::-;6646:2;6639:22;6392:275;;-1:-1:-1;6392:275:105:o;6672:719::-;6752:6;6805:2;6793:9;6784:7;6780:23;6776:32;6773:52;;;6821:1;6818;6811:12;6773:52;6854:9;6848:16;6883:18;6924:2;6916:6;6913:14;6910:34;;;6940:1;6937;6930:12;6910:34;6978:6;6967:9;6963:22;6953:32;;7023:7;7016:4;7012:2;7008:13;7004:27;6994:55;;7045:1;7042;7035:12;6994:55;7074:2;7068:9;7096:2;7092;7089:10;7086:36;;;7102:18;;:::i;:::-;7144:53;7187:2;7168:13;;-1:-1:-1;;7164:27:105;7193:2;7160:36;7144:53;:::i;:::-;7131:66;;7220:2;7213:5;7206:17;7260:7;7255:2;7250;7246;7242:11;7238:20;7235:33;7232:53;;;7281:1;7278;7271:12;7232:53;7294:67;7358:2;7353;7346:5;7342:14;7337:2;7333;7329:11;7294:67;:::i;:::-;-1:-1:-1;7380:5:105;6672:719;-1:-1:-1;;;;6672:719:105:o;7396:306::-;7588:2;7577:9;7570:21;7551:4;7608:45;7649:2;7638:9;7634:18;7626:6;7608:45;:::i;:::-;7600:53;;7689:6;7684:2;7673:9;7669:18;7662:34;7396:306;;;;;:::o;7707:184::-;7777:6;7830:2;7818:9;7809:7;7805:23;7801:32;7798:52;;;7846:1;7843;7836:12;7798:52;-1:-1:-1;7869:16:105;;7707:184;-1:-1:-1;7707:184:105:o;8308:380::-;8387:1;8383:12;;;;8430;;;8451:61;;8505:4;8497:6;8493:17;8483:27;;8451:61;8558:2;8550:6;8547:14;8527:18;8524:38;8521:161;;8604:10;8599:3;8595:20;8592:1;8585:31;8639:4;8636:1;8629:15;8667:4;8664:1;8657:15;8521:161;;8308:380;;;:::o;8693:127::-;8754:10;8749:3;8745:20;8742:1;8735:31;8785:4;8782:1;8775:15;8809:4;8806:1;8799:15;8825:373;9032:2;9021:9;9014:21;8995:4;9052:56;9104:2;9093:9;9089:18;9081:6;9052:56;:::i;:::-;9044:64;;-1:-1:-1;;;;;9148:6:105;9144:47;9139:2;9128:9;9124:18;9117:75;8825:373;;;;;:::o;9203:183::-;9263:4;9296:18;9288:6;9285:30;9282:56;;;9318:18;;:::i;:::-;-1:-1:-1;9363:1:105;9359:14;9375:4;9355:25;;9203:183::o;9391:866::-;9456:5;9509:3;9502:4;9494:6;9490:17;9486:27;9476:55;;9527:1;9524;9517:12;9476:55;9556:6;9550:13;9582:4;9606:60;9622:43;9662:2;9622:43;:::i;:::-;9606:60;:::i;:::-;9700:15;;;9786:1;9782:10;;;;9770:23;;9766:32;;;9731:12;;;;9810:15;;;9807:35;;;9838:1;9835;9828:12;9807:35;9874:2;9866:6;9862:15;9886:342;9902:6;9897:3;9894:15;9886:342;;;9975:3;9969:10;-1:-1:-1;;;;;10016:5:105;10012:54;10005:5;10002:65;9992:163;;10109:1;10138:2;10134;10127:14;9992:163;10168:18;;10206:12;;;;9919;;9886:342;;;-1:-1:-1;10246:5:105;9391:866;-1:-1:-1;;;;;;9391:866:105:o;10262:659::-;10327:5;10380:3;10373:4;10365:6;10361:17;10357:27;10347:55;;10398:1;10395;10388:12;10347:55;10427:6;10421:13;10453:4;10477:60;10493:43;10533:2;10493:43;:::i;10477:60::-;10571:15;;;10657:1;10653:10;;;;10641:23;;10637:32;;;10602:12;;;;10681:15;;;10678:35;;;10709:1;10706;10699:12;10678:35;10745:2;10737:6;10733:15;10757:135;10773:6;10768:3;10765:15;10757:135;;;10839:10;;10827:23;;10870:12;;;;10790;;10757:135;;10926:818;10996:5;11049:3;11042:4;11034:6;11030:17;11026:27;11016:55;;11067:1;11064;11057:12;11016:55;11096:6;11090:13;11122:4;11146:60;11162:43;11202:2;11162:43;:::i;11146:60::-;11240:15;;;11326:1;11322:10;;;;11310:23;;11306:32;;;11271:12;;;;11350:15;;;11347:35;;;11378:1;11375;11368:12;11347:35;11414:2;11406:6;11402:15;11426:289;11442:6;11437:3;11434:15;11426:289;;;11515:3;11509:10;11552:1;11545:5;11542:12;11532:110;;11596:1;11625:2;11621;11614:14;11532:110;11655:18;;11693:12;;;;11459;;11426:289;;11749:858;11814:5;11867:3;11860:4;11852:6;11848:17;11844:27;11834:55;;11885:1;11882;11875:12;11834:55;11914:6;11908:13;11940:4;11964:60;11980:43;12020:2;11980:43;:::i;11964:60::-;12058:15;;;12144:1;12140:10;;;;12128:23;;12124:32;;;12089:12;;;;12168:15;;;12165:35;;;12196:1;12193;12186:12;12165:35;12232:2;12224:6;12220:15;12244:334;12260:6;12255:3;12252:15;12244:334;;;12333:3;12327:10;-1:-1:-1;;;;;12374:5:105;12370:46;12363:5;12360:57;12350:155;;12459:1;12488:2;12484;12477:14;12350:155;12518:18;;12556:12;;;;12277;;12244:334;;12612:1766;12706:6;12759:2;12747:9;12738:7;12734:23;12730:32;12727:52;;;12775:1;12772;12765:12;12727:52;12808:9;12802:16;12837:18;12878:2;12870:6;12867:14;12864:34;;;12894:1;12891;12884:12;12864:34;12917:22;;;;12973:4;12955:16;;;12951:27;12948:47;;;12991:1;12988;12981:12;12948:47;13017:22;;:::i;:::-;13070:2;13064:9;13098:2;13088:8;13085:16;13082:36;;;13114:1;13111;13104:12;13082:36;13141:67;13200:7;13189:8;13185:2;13181:17;13141:67;:::i;:::-;13134:5;13127:82;;13248:2;13244;13240:11;13234:18;13277:2;13267:8;13264:16;13261:36;;;13293:1;13290;13283:12;13261:36;13329:67;13388:7;13377:8;13373:2;13369:17;13329:67;:::i;:::-;13324:2;13317:5;13313:14;13306:91;;13436:2;13432;13428:11;13422:18;13465:2;13455:8;13452:16;13449:36;;;13481:1;13478;13471:12;13449:36;13517:67;13576:7;13565:8;13561:2;13557:17;13517:67;:::i;:::-;13512:2;13505:5;13501:14;13494:91;;13624:2;13620;13616:11;13610:18;13653:2;13643:8;13640:16;13637:36;;;13669:1;13666;13659:12;13637:36;13705:72;13769:7;13758:8;13754:2;13750:17;13705:72;:::i;:::-;13700:2;13693:5;13689:14;13682:96;;13817:3;13813:2;13809:12;13803:19;13847:2;13837:8;13834:16;13831:36;;;13863:1;13860;13853:12;13831:36;13900:67;13959:7;13948:8;13944:2;13940:17;13900:67;:::i;:::-;13894:3;13887:5;13883:15;13876:92;;14007:3;14003:2;13999:12;13993:19;14037:2;14027:8;14024:16;14021:36;;;14053:1;14050;14043:12;14021:36;14090:67;14149:7;14138:8;14134:2;14130:17;14090:67;:::i;:::-;14084:3;14077:5;14073:15;14066:92;;14197:3;14193:2;14189:12;14183:19;14227:2;14217:8;14214:16;14211:36;;;14243:1;14240;14233:12;14211:36;14280:67;14339:7;14328:8;14324:2;14320:17;14280:67;:::i;:::-;14274:3;14263:15;;14256:92;-1:-1:-1;14267:5:105;12612:1766;-1:-1:-1;;;;;12612:1766:105:o;14383:127::-;14444:10;14439:3;14435:20;14432:1;14425:31;14475:4;14472:1;14465:15;14499:4;14496:1;14489:15;15006:441;15174:4;-1:-1:-1;;;;;15284:2:105;15276:6;15272:15;15261:9;15254:34;15336:2;15328:6;15324:15;15319:2;15308:9;15304:18;15297:43;;15376:2;15371;15360:9;15356:18;15349:30;15396:45;15437:2;15426:9;15422:18;15414:6;15396:45;:::i;:::-;15388:53;15006:441;-1:-1:-1;;;;;15006:441:105:o;15452:362::-;15657:6;15646:9;15639:25;15700:6;15695:2;15684:9;15680:18;15673:34;15743:2;15738;15727:9;15723:18;15716:30;15620:4;15763:45;15804:2;15793:9;15789:18;15781:6;15763:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_QuoteFromAmounOut()":"f4af7f08","test_QuoteFromAmountIn()":"a2797cec"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_QuoteFromAmounOut\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_QuoteFromAmountIn\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Makes sure that the new quoter picks the version 2.1 over the version 2 if both outputs are exactly the same\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/integration/LBQuoterPriority.t.sol\":\"LiquidityBinQuoterPriorityTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/integration/LBQuoterPriority.t.sol\":{\"keccak256\":\"0xb27116038a4ccfe29615f395ea335e9bc7e416253c7c34c2391cf6d9a002cff0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9ecb1139358c10788014b00acd1fa214eb80d42bce6a1ffbe527febcd68907ce\",\"dweb:/ipfs/QmXSzzfF1rQ61KwNp1FdKdPAupjCPV4eDHMTwfdnYrR6it\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"test_QuoteFromAmounOut"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_QuoteFromAmountIn"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/integration/LBQuoterPriority.t.sol":"LiquidityBinQuoterPriorityTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/integration/LBQuoterPriority.t.sol":{"keccak256":"0xb27116038a4ccfe29615f395ea335e9bc7e416253c7c34c2391cf6d9a002cff0","urls":["bzz-raw://9ecb1139358c10788014b00acd1fa214eb80d42bce6a1ffbe527febcd68907ce","dweb:/ipfs/QmXSzzfF1rQ61KwNp1FdKdPAupjCPV4eDHMTwfdnYrR6it"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":97} \ No newline at end of file diff --git a/abi/LBRouter.Liquidity.t.sol/LiquidityBinRouterTest.json b/abi/LBRouter.Liquidity.t.sol/LiquidityBinRouterTest.json deleted file mode 100644 index bb4c256d..00000000 --- a/abi/LBRouter.Liquidity.t.sol/LiquidityBinRouterTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_AddLiquidityNoSlippage","inputs":[{"name":"amountYIn","type":"uint256","internalType":"uint256"},{"name":"binNumber","type":"uint24","internalType":"uint24"},{"name":"gap","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_AddLiquidityBadId","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_AddLiquidityNATIVE","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Constructor","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_CreatePair","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_ReceiveNATIVE","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RemoveLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RemoveLiquidityNATIVE","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SweepERC20","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SweepLBTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_AddLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_AddLiquidityNATIVE","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_RemoveLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_RemoveLiquidityNATIVE","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c0516201e6c66200031c60003960008181610d5701528181610ee00152610f95015260008181611d4b015261393701526000818161294d01528181612996015281816129b7015281816129f101528181612a3701528181612a5801528181612aa401528181612ae901528181612bfc0152818161352f01528181613642015281816136c4015281816139d7015281816165b10152616ed301526201e6c66000f3fe608060405260043610620002025760003560e01c806367e2c3b91162000117578063b89e023311620000a1578063cb21bf3b116200006c578063cb21bf3b14620005d6578063e20c9f7114620005ee578063e20de7f61462000606578063fecaa223146200061e57600080fd5b8063b89e02331462000569578063ba414fa6146200058e578063c051660814620005a6578063c250f09114620005be57600080fd5b8063916a17c611620000e2578063916a17c614620004fc5780639b482ce01462000514578063a7aa85e9146200052c578063b5508aa9146200055157600080fd5b806367e2c3b9146200046b57806385226c811462000483578063889be5b714620004aa5780638eb3e70e14620004e457600080fd5b80632ade388011620001995780633f7286f411620001645780633f7286f414620003e05780634659171c14620003f857806349789ef9146200041057806366d9a9a0146200044457600080fd5b80632ade3880146200037157806337f3b96914620003985780633c322dd314620003b05780633e5e3c2314620003c857600080fd5b80631004139011620001da5780631004139014620002f557806314d98783146200031a5780631ed7831c14620003325780632602040b146200035957600080fd5b8062e44d64146200027b57806301ffc9a714620002935780630a9254e414620002dd57600080fd5b366200027657602b54600160a01b900460ff1615620002745760405162461bcd60e51b815260206004820152602360248201527f4e6f20726563656976652066756e6374696f6e206f6e2074686520636f6e74726044820152621858dd60ea1b60648201526084015b60405180910390fd5b005b600080fd5b3480156200028857600080fd5b506200027462000643565b348015620002a057600080fd5b50620002c8620002b23660046200a71c565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b348015620002ea57600080fd5b506200027462000a20565b3480156200030257600080fd5b5062000274620003143660046200a75c565b62000cbc565b3480156200032757600080fd5b506200027462001094565b3480156200033f57600080fd5b506200034a620018f0565b604051620002d491906200a79d565b3480156200036657600080fd5b506200027462001954565b3480156200037e57600080fd5b506200038962001e35565b604051620002d491906200a840565b348015620003a557600080fd5b506200027462001f83565b348015620003bd57600080fd5b50620002746200257f565b348015620003d557600080fd5b506200034a620027b5565b348015620003ed57600080fd5b506200034a62002817565b3480156200040557600080fd5b506200027462002879565b3480156200041d57600080fd5b50620004356200042f3660046200a918565b62002c79565b604051908152602001620002d4565b3480156200045157600080fd5b506200045c62002cce565b604051620002d491906200a950565b3480156200047857600080fd5b506200027462002db8565b3480156200049057600080fd5b506200049b62003238565b604051620002d491906200aa07565b348015620004b757600080fd5b50620004cf620004c93660046200aa6d565b62003312565b60405162ffffff9091168152602001620002d4565b348015620004f157600080fd5b50620002746200336f565b3480156200050957600080fd5b506200045c62003a3f565b3480156200052157600080fd5b506200027462003b29565b3480156200053957600080fd5b50620002746200054b3660046200aabb565b62004d2d565b3480156200055e57600080fd5b506200049b620051ce565b3480156200057657600080fd5b50620002c8620005883660046200ab68565b620052a8565b3480156200059b57600080fd5b50620002c86200532b565b348015620005b357600080fd5b5062000274620053e5565b348015620005cb57600080fd5b506200027462005620565b348015620005e357600080fd5b506200027462005a97565b348015620005fb57600080fd5b506200034a62005cb9565b3480156200061357600080fd5b506200027462005d1b565b3480156200062b57600080fd5b50620002746200063d3660046200ab88565b62006173565b601c54601d54670de0b6b3a7640000916007916002916000916200067b916001600160a01b0390811691168662800000878762006467565b60255460608201516040516323bf0acb60e21b8152929350600092839283928392839283926001600160a01b0390911691638efc2b2c9190620006c3908b906004016200ac57565b60006040518083038185885af1158015620006e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526200070d91908101906200ae78565b9550955095509550955095506200076c868589606001516200073091906200af1e565b6040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a31000000000000815250620065ff565b620007bf858489608001516200078391906200af1e565b6040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a32000000000000815250620065ff565b6200080184876040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a330000000000008152506200666e565b6200084383866040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a340000000000008152506200666e565b6200088b81518a62ffffff166040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a35000000000000815250620065ff565b620008d382518a62ffffff166040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a36000000000000815250620065ff565b602554602154601c5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af11580156200093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096391906200af34565b50602154601c5462000989916001600160a01b0390811691168c628000008d8d62006467565b60255460808201516040516323bf0acb60e21b81529299506001600160a01b0390911691638efc2b2c9190620009c4908b906004016200ac57565b60006040518083038185885af1158015620009e3573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000a0e91908101906200ae78565b50505050505050505050505050505050565b62000a2a620066a6565b60248054604051634cd161d360e01b8152600a60048201526001928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b15801562000a7957600080fd5b505af115801562000a8e573d6000803e3d6000fd5b5050602554601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a60648201529116925063659ac74b91506084016020604051808303816000875af115801562000afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b2291906200af34565b50602554601c54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af115801562000b8d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bb391906200af34565b50602554602354601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af115801562000c1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4491906200af34565b50601d546dffffffffffffffffffffffffffff9062000c6e906001600160a01b0316308362007cce565b601e5462000c87906001600160a01b0316308362007cce565b60215462000ca0906001600160a01b0316308362007cce565b60225462000cb9906001600160a01b0316308362007cce565b50565b62000cd9836113886dffffffffffffffffffffffffffff62007cdd565b925062000cf08262ffffff16600061019062007cdd565b915062000cff8260026200af54565b62000d0c9060016200af7e565b915062000d228162ffffff166000601462007cdd565b601e54601d5491925060009162000d4d916001600160a01b0390811691168662800000878762006467565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166101a08301526025546040516351e3938d60e11b815292935060009283928392839283928392169063a3c7271a9062000db6908a906004016200ac57565b6000604051808303816000875af115801562000dd6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000e0091908101906200ae78565b95509550955095509550955062000e438685896060015162000e2391906200af1e565b6040518060600160405280602281526020016201e64d60229139620065ff565b62000e7a8584896080015162000e5a91906200af1e565b6040518060600160405280602281526020016201e5c560229139620065ff565b62000ea084876040518060600160405280602281526020016201e66f602291396200666e565b62000ec683866040518060600160405280602281526020016201e561602291396200666e565b601e546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000f7b9216906370a0823190602401602060405180830381865afa15801562000f34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5a91906200af9d565b856040518060600160405280602281526020016201e58360229139620065ff565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620010309216906370a0823190602401602060405180830381865afa15801562000fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200100f91906200af9d565b846040518060600160405280602281526020016201e5e760229139620065ff565b6200105c81518a62ffffff166040518060600160405280602281526020016201e60960229139620065ff565b6200108882518a62ffffff166040518060600160405280602281526020016201e62b60229139620065ff565b50505050505050505050565b601e54601d54670de0b6b3a764000091600791600291600091620010cc916001600160a01b0390811691168662800000878762006467565b6025546040516351e3938d60e11b81529192506000918291829182916001600160a01b03169063a3c7271a90620011089088906004016200ac57565b6000604051808303816000875af115801562001128573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200115291908101906200ae78565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979b5095995091975095506000949093169263704037bd92506064019050608060405180830381865afa158015620011c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011ec91906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b1580156200124157600080fd5b505af115801562001256573d6000803e3d6000fd5b5050602554601e54601d54604051636110acdb60e11b8152600095508594506001600160a01b039384169363c22159b693620012ab9390821692911690600a90879081908d908d90309042906004016200b055565b60408051808303816000875af1158015620012ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012f091906200b0c8565b91509150620013388288600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3100000000000000000081525062007d2f565b6200137c8187600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3200000000000000000081525062007d2f565b620013be82886040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3300000000000000000081525062007da1565b6200140081876040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3400000000000000000081525062007da1565b60005b85518110156200150657620014f1846001600160a01b031662fdd58e308985815181106200143557620014356200b0ed565b60200260200101516040518363ffffffff1660e01b81526004016200146f9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200148d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014b391906200af9d565b60006040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a35000000000000000000815250620065ff565b80620014fd816200b103565b91505062001403565b506025546040516351e3938d60e11b81526001600160a01b039091169063a3c7271a9062001539908b906004016200ac57565b6000604051808303816000875af115801562001559573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200158391908101906200ae78565b602554601d54601e54604051636110acdb60e11b8152989f50969d50929b509099506001600160a01b039081169563c22159b695620015de95509282169350911690600a9060009081908d908d90309042906004016200b055565b60408051808303816000875af1158015620015fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162391906200b0c8565b80935081925050506200166f8288600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3600000000000000000081525062007d2f565b620016b38187600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3700000000000000000081525062007d2f565b6025546040516351e3938d60e11b81526001600160a01b039091169063a3c7271a90620016e5908b906004016200ac57565b6000604051808303816000875af115801562001705573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200172f91908101906200ae78565b949b5092995091975091955060009150505b8551811015620017ab5760028582815181106200176257620017626200b0ed565b60200260200101516200177691906200b135565b8582815181106200178b576200178b6200b0ed565b602090810291909101015280620017a2816200b103565b91505062001741565b50602554601e54601d54604051636110acdb60e11b81526001600160a01b039384169363c22159b693620017f99390821692911690600a9060009081908d908d90309042906004016200b055565b60408051808303816000875af115801562001818573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200183e91906200b0c8565b909250905062001893826200185560028a6200b135565b600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3800000000000000000081525062007d2f565b620018e381620018a56002896200b135565b600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3900000000000000000081525062007d2f565b5050505050505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200194a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200192b575b5050505050905090565b601d546025546040516340c10f1960e01b81526001600160a01b039182166004820152670de0b6b3a7640000602482018190529291909116906340c10f1990604401600060405180830381600087803b158015620019b157600080fd5b505af1158015620019c6573d6000803e3d6000fd5b5050601d546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562001a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3c91906200af9d565b602554601d546040516362c0676760e01b81526001600160a01b0391821660048201523060248201526044810186905292935016906362c0676790606401600060405180830381600087803b15801562001a9557600080fd5b505af115801562001aaa573d6000803e3d6000fd5b5050601d546040516370a0823160e01b815230600482015262001b6a93506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562001afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b2291906200af9d565b62001b2e84846200b14c565b6040518060400160405280601281526020017f746573745f537765657045524332303a3a310000000000000000000000000000815250620065ff565b60255462001b82906001600160a01b03168362007dd9565b506025546040516362c0676760e01b815260006004820152306024820152600019604482015247916001600160a01b0316906362c0676790606401600060405180830381600087803b15801562001bd857600080fd5b505af115801562001bed573d6000803e3d6000fd5b5050505062001c4047838362001c0491906200b14c565b6040518060400160405280601281526020017f746573745f537765657045524332303a3a320000000000000000000000000000815250620065ff565b601d546025546040516340c10f1960e01b81526001600160a01b039182166004820152602481018590529116906340c10f1990604401600060405180830381600087803b15801562001c9157600080fd5b505af115801562001ca6573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316635d9515b960e11b179052915163f28dceb360e01b81526000805160206201e5a5833981519152945063f28dceb3935062001d0292016200b162565b600060405180830381600087803b15801562001d1d57600080fd5b505af115801562001d32573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201e5a5833981519152925063ca669fa79150602401600060405180830381600087803b15801562001da757600080fd5b505af115801562001dbc573d6000803e3d6000fd5b5050602554601d546040516362c0676760e01b81526001600160a01b03918216600482015230602482015260448101879052911692506362c0676791506064015b600060405180830381600087803b15801562001e1857600080fd5b505af115801562001e2d573d6000803e3d6000fd5b505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001f6257838290600052602060002001805462001ece906200b177565b80601f016020809104026020016040519081016040528092919081815260200182805462001efc906200b177565b801562001f4d5780601f1062001f215761010080835404028352916020019162001f4d565b820191906000526020600020905b81548152906001019060200180831162001f2f57829003601f168201915b50505050508152602001906001019062001eac565b50505050815250508152602001906001019062001e59565b50505050905090565b601e54601d54670de0b6b3a76400009160079160029160009162001fbb916001600160a01b0390811691168662800000878762006467565b6025546040516351e3938d60e11b81529192506000918291829182916001600160a01b03169063a3c7271a9062001ff79088906004016200ac57565b6000604051808303816000875af115801562002017573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200204191908101906200ae78565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979b5095995091975095506000949093169263704037bd92506064019050608060405180830381865afa158015620020b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020db91906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b1580156200213057600080fd5b505af115801562002145573d6000803e3d6000fd5b506000805160206201e5a5833981519152925063f28dceb3915063dae7ca7d60e01b9050620021766001426200af1e565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620021d1916004016200b162565b600060405180830381600087803b158015620021ec57600080fd5b505af115801562002201573d6000803e3d6000fd5b5050602554601e54601d546001600160a01b03928316945063c22159b693509082169116600a6000808989306200223a6001426200af1e565b6040518a63ffffffff1660e01b815260040162002260999897969594939291906200b055565b60408051808303816000875af11580156200227f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022a591906200b0c8565b506000805160206201e5a5833981519152905063f28dceb36318ccfb7760e11b620022d28860016200b14c565b604051602481019190915260448101899052600060648201526084810188905260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200233c916004016200b162565b600060405180830381600087803b1580156200235757600080fd5b505af11580156200236c573d6000803e3d6000fd5b5050602554601e54601d546001600160a01b03928316945063c22159b693509082169116600a6200239f8a60016200b14c565b6000898930426040518a63ffffffff1660e01b8152600401620023cb999897969594939291906200b055565b60408051808303816000875af1158015620023ea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200241091906200b0c8565b506000805160206201e5a5833981519152905063f28dceb36318ccfb7760e11b600088620024408960016200b14c565b60405160ff9093166024840152604483019190915260648201526084810188905260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620024ab916004016200b162565b600060405180830381600087803b158015620024c657600080fd5b505af1158015620024db573d6000803e3d6000fd5b5050602554601e54601d546001600160a01b03928316945063c22159b693509082169116600a6000620025108a60016200b14c565b898930426040518a63ffffffff1660e01b81526004016200253a999897969594939291906200b055565b60408051808303816000875af115801562002559573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018e391906200b0c8565b60255460408051632233163960e21b815290516200263b926001600160a01b0316916388cc58e49160048083019260209291908290030181865afa158015620025cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025f291906200af34565b60245460408051808201909152601381527f746573745f436f6e7374727563746f723a3a310000000000000000000000000060208201526001600160a01b039091169062007e1c565b6025546040805163bb558a9f60e01b81529051620026f7926001600160a01b03169163bb558a9f9160048083019260209291908290030181865afa15801562002688573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026ae91906200af34565b602b5460408051808201909152601381527f746573745f436f6e7374727563746f723a3a330000000000000000000000000060208201526001600160a01b039091169062007e1c565b60255460408051630d93800f60e31b81529051620027b3926001600160a01b031691636c9c00789160048083019260209291908290030181865afa15801562002744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200276a91906200af34565b601c5460408051808201909152601381527f746573745f436f6e7374727563746f723a3a350000000000000000000000000060208201526001600160a01b039091169062007e1c565b565b606060168054806020026020016040519081016040528092919081815260200182805480156200194a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200192b575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200194a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200192b575050505050905090565b6024805460405163379ee80360e01b81526001600482018190526127109382019390935260448101839052600a6064820152611388608482015260a48101839052600060c4820181905260e48201939093526101048101929092526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200290357600080fd5b505af115801562002918573d6000803e3d6000fd5b5050601e54601d546280000093506000925062002945916001600160a01b03908116911684600162007e54565b9050620029907f000000000000000000000000000000000000000000000000000000000000000080836200297b6001876200b1b3565b6000670de0b6b3a76400006000600162004d2d565b620029eb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008385670de0b6b3a76400008060018062004d2d565b62002a317f0000000000000000000000000000000000000000000000000000000000000000808362002a1f6001876200b1b3565b670de0b6b3a764000060018062006173565b62002a917f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083627a12006000670de0b6b3a76400006000600162004d2d565b601e5462002ad2906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000671bc16d674ec8000062007cce565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201e5a58339815191529063ca669fa790602401600060405180830381600087803b15801562002b4357600080fd5b505af115801562002b58573d6000803e3d6000fd5b5050601e5460405163a9059cbb60e01b81526001600160a01b038581166004830152671bc16d674ec800006024830152909116925063a9059cbb91506044016020604051808303816000875af115801562002bb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bdd91906200b1d2565b5060405163029e02cd60e51b8152600160048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301528216906353c059a0906044016020604051808303816000875af115801562002c4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c7491906200af9d565b505050565b6000808360ff1611801562002c91575060008260ff16115b62002ca85762002ca282846200b1f0565b62002cc2565b600162002cb683856200b1f0565b62002cc291906200b20c565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002d9f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002d605790505b5050505050815250508152602001906001019062002cf2565b601c54601d54670de0b6b3a76400009160079160029160009162002df0916001600160a01b0390811691168662800000878762006467565b60255460608201516040516323bf0acb60e21b8152929350600092839283926001600160a01b0390911691638efc2b2c919062002e329088906004016200ac57565b60006040518083038185885af115801562002e51573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262002e7c91908101906200ae78565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979a50929850909650600095909116935063704037bd92506064019050608060405180830381865afa15801562002eef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f1591906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b15801562002f6a57600080fd5b505af115801562002f7f573d6000803e3d6000fd5b506000805160206201e5a5833981519152925063f28dceb3915063dae7ca7d60e01b905062002fb06001426200af1e565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200300b916004016200b162565b600060405180830381600087803b1580156200302657600080fd5b505af11580156200303b573d6000803e3d6000fd5b5050602554601d546001600160a01b0391821693506381c2fdfb925016600a6000808888306200306d6001426200af1e565b6040518963ffffffff1660e01b8152600401620030929897969594939291906200b228565b60408051808303816000875af1158015620030b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030d791906200b0c8565b5050602b8054600160a01b7fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90911617905560408051306024820152604480820187905282518083039091018152606490910182526020810180516001600160e01b031663047b96f760e41b179052905163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb3916200317891906004016200b162565b600060405180830381600087803b1580156200319357600080fd5b505af1158015620031a8573d6000803e3d6000fd5b5050602554601d546040516381c2fdfb60e01b81526001600160a01b0392831694506381c2fdfb9350620031f39290911690600a9060009081908a908a90309042906004016200b228565b60408051808303816000875af115801562003212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108891906200b0c8565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a5783829060005260206000200180546200327e906200b177565b80601f0160208091040260200160405190810160405280929190818152602001828054620032ac906200b177565b8015620032fd5780601f10620032d157610100808354040283529160200191620032fd565b820191906000526020600020905b815481529060010190602001808311620032df57829003601f168201915b5050505050815260200190600101906200325c565b600080620033268462ffffff87166200b14c565b905060008360ff16116200333b578062003357565b6200334a60ff8416826200af1e565b620033579060016200b14c565b9050620033648162007ef3565b9150505b9392505050565b601e54601d54600091620033a0916001600160a01b039182169116670de0b6b3a76400006280000060018662006467565b6025546001600160a01b031661018082018190526040516351e3938d60e11b815291925060009182919063a3c7271a90620033e09086906004016200ac57565b6000604051808303816000875af115801562003400573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200342a91908101906200ae78565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152939950919750600096509116935063704037bd92506064019050608060405180830381865afa1580156200349a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034c091906200afc8565b6020015190506000835167ffffffffffffffff811115620034e557620034e56200ad94565b6040519080825280602002602001820160405280156200350f578160200160208202803683370190505b50905060005b84518110156200361657826001600160a01b031662fdd58e7f00000000000000000000000000000000000000000000000000000000000000008784815181106200356357620035636200b0ed565b60200260200101516040518363ffffffff1660e01b81526004016200359d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620035bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035e191906200af9d565b828281518110620035f657620035f66200b0ed565b6020908102919091010152806200360d816200b103565b91505062003515565b50602554604051631d26c38160e31b81526001600160a01b039091169063e9361c08906200366f9085907f000000000000000000000000000000000000000000000000000000000000000090899089906004016200b291565b600060405180830381600087803b1580156200368a57600080fd5b505af11580156200369f573d6000803e3d6000fd5b5050505060005b84518110156200380d57620037f8836001600160a01b031662fdd58e7f0000000000000000000000000000000000000000000000000000000000000000888581518110620036f857620036f86200b0ed565b60200260200101516040518363ffffffff1660e01b8152600401620037329291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562003750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200377691906200af9d565b8583815181106200378b576200378b6200b0ed565b6020026020010151848481518110620037a857620037a86200b0ed565b6020026020010151620037bc91906200b14c565b6040518060400160405280601581526020017f746573745f53776565704c42546f6b656e733a3a310000000000000000000000815250620065ff565b8062003804816200b103565b915050620036a6565b506025546040516351e3938d60e11b81526001600160a01b039091169063a3c7271a90620038409088906004016200ac57565b6000604051808303816000875af115801562003860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200388a91908101906200ae78565b6040805160048082526024820183526020820180516001600160e01b0316635d9515b960e11b179052915163f28dceb360e01b8152939b509199506000805160206201e5a5833981519152965063f28dceb39550620038ee9450909250016200b162565b600060405180830381600087803b1580156200390957600080fd5b505af11580156200391e573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201e5a5833981519152925063ca669fa79150602401600060405180830381600087803b1580156200399357600080fd5b505af1158015620039a8573d6000803e3d6000fd5b5050602554604051631d26c38160e31b81526001600160a01b03909116925063e9361c08915062003a049085907f000000000000000000000000000000000000000000000000000000000000000090899089906004016200b291565b600060405180830381600087803b15801562003a1f57600080fd5b505af115801562003a34573d6000803e3d6000fd5b505050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562003b1057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162003ad15790505b5050505050815250508152602001906001019062003a63565b601d54601e54670de0b6b3a76400009160079160029160009162003b61916001600160a01b0390811691168662800000878762006467565b6040805160048082526024820183526020820180516001600160e01b031663b33f8ab960e01b179052915163f28dceb360e01b81529293506000805160206201e5a58339815191529263f28dceb39262003bbd9291016200b162565b600060405180830381600087803b15801562003bd857600080fd5b505af115801562003bed573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062003c239084906004016200ac57565b6000604051808303816000875af115801562003c43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c6d91908101906200ae78565b5050601e54601d5462003c9a95506001600160a01b03918216945016915087905062800000878762006467565b905062003ca96001846200b1b3565b62ffffff1667ffffffffffffffff81111562003cc95762003cc96200ad94565b60405190808252806020026020018201604052801562003cf3578160200160208202803683370190505b506101208201526040805160048082526024820183526020820180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201e5a58339815191529263f28dceb39262003d54929091016200b162565b600060405180830381600087803b15801562003d6f57600080fd5b505af115801562003d84573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062003dba9084906004016200ac57565b6000604051808303816000875af115801562003dda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003e0491908101906200ae78565b5050601e54601d5462003e3195506001600160a01b03918216945016915087905062800000878762006467565b905062003e406001846200b1b3565b62ffffff1667ffffffffffffffff81111562003e605762003e606200ad94565b60405190808252806020026020018201604052801562003e8a578160200160208202803683370190505b506101608201526040805160048082526024820183526020820180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201e5a58339815191529263f28dceb39262003eeb929091016200b162565b600060405180830381600087803b15801562003f0657600080fd5b505af115801562003f1b573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062003f519084906004016200ac57565b6000604051808303816000875af115801562003f71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f9b91908101906200ae78565b5050601e54601d5462003fc895506001600160a01b03918216945016915087905062800000878762006467565b905062003fda62ffffff60016200b14c565b60e0820181905261010082015160408051602481019390935260448084019290925280518084039092018252606490920182526020810180516001600160e01b031663197a55c760e11b179052905163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb3916200405991906004016200b162565b600060405180830381600087803b1580156200407457600080fd5b505af115801562004089573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620040bf9084906004016200ac57565b6000604051808303816000875af1158015620040df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200410991908101906200ae78565b5050601e54601d546200413695506001600160a01b03918216945016915087905062800000878762006467565b90506200414862ffffff60016200b14c565b610100820181905260e08201516040516000805160206201e5a58339815191529263f28dceb39263197a55c760e11b926200418f9290602401918252602082015260400190565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620041d6916004016200b162565b600060405180830381600087803b158015620041f157600080fd5b505af115801562004206573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a91506200423c9084906004016200ac57565b6000604051808303816000875af11580156200425c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200428691908101906200ae78565b5050601e54601d54620042b395506001600160a01b03918216945016915087905062800000878762006467565b90506001620042c5628000006200b2de565b620042d191906200b2fd565b816101200151600081518110620042ec57620042ec6200b0ed565b602090810291909101015260405160001960248201526000805160206201e5a58339815191529063f28dceb3906370a82e6160e11b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200436c916004016200b162565b600060405180830381600087803b1580156200438757600080fd5b505af11580156200439c573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620043d29084906004016200ac57565b6000604051808303816000875af1158015620043f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200441c91908101906200ae78565b5050601e54601d546200444995506001600160a01b03918216945016915087905062800000878762006467565b90506280000062ffffff168161012001516000815181106200446f576200446f6200b0ed565b60209081029190910101526000805160206201e5a583398151915263f28dceb36370a82e6160e11b620044a762ffffff60016200b14c565b604051602401620044ba91815260200190565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004501916004016200b162565b600060405180830381600087803b1580156200451c57600080fd5b505af115801562004531573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620045679084906004016200ac57565b6000604051808303816000875af115801562004587573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620045b191908101906200ae78565b5050601e54601d54620045de95506001600160a01b03918216945016915087905062800000878762006467565b9050620045f0600a628000006200b1b3565b62ffffff1660e082018190526005610100830181905260408051602481019390935260448301919091526280000060648084019190915281518084039091018152608490920181526020820180516001600160e01b0316637d50edab60e11b1790525163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb3916200468391906004016200b162565b600060405180830381600087803b1580156200469e57600080fd5b505af1158015620046b3573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620046e99084906004016200ac57565b6000604051808303816000875af115801562004709573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200473391908101906200ae78565b50505050505062800000600a6200474b91906200af7e565b62ffffff1660e0820181905261010082015160408051602481019390935260448301919091526280000060648084019190915281518084039091018152608490920181526020820180516001600160e01b0316637d50edab60e11b1790525163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb391620047da91906004016200b162565b600060405180830381600087803b158015620047f557600080fd5b505af11580156200480a573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620048409084906004016200ac57565b6000604051808303816000875af115801562004860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200488a91908101906200ae78565b5050601e54601d54620048b795506001600160a01b03918216945016915087905062800000878762006467565b905080606001516001620048cc91906200b14c565b60a0820181905260608201516000805160206201e5a58339815191529163f28dceb3916318ccfb7760e11b919062004907906002906200af1e565b60c08601516080870151604051602481019490945260448401929092526064830152608482015260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004978916004016200b162565b600060405180830381600087803b1580156200499357600080fd5b505af1158015620049a8573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620049de9084906004016200ac57565b6000604051808303816000875af1158015620049fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004a2891908101906200ae78565b5050601e54601d5462004a5595506001600160a01b03918216945016915087905062800000878762006467565b90508060800151600162004a6a91906200b14c565b60c082015260a081015160608201516000805160206201e5a58339815191529163f28dceb3916318ccfb7760e11b919062004aa8906002906200af1e565b60c08601516080870151604051602481019490945260448401929092526064830152608482015260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004b19916004016200b162565b600060405180830381600087803b15801562004b3457600080fd5b505af115801562004b49573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062004b7f9084906004016200ac57565b6000604051808303816000875af115801562004b9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004bc991908101906200ae78565b5050601e54601d5462004bf695506001600160a01b03918216945016915087905062800000878762006467565b905062004c056107d062007f1f565b6101c08101516040805160248101929092524260448084019190915281518084039091018152606490920181526020820180516001600160e01b031663dae7ca7d60e01b1790525163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb39162004c7d91906004016200b162565b600060405180830381600087803b15801562004c9857600080fd5b505af115801562004cad573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062004ce39084906004016200ac57565b6000604051808303816000875af115801562004d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200108891908101906200ae78565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004d6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d9491906200af34565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004dfd91906200af34565b905062004e0c828b8862007cce565b62004e19818b8762007cce565b600062004e27858562002c79565b905060008167ffffffffffffffff81111562004e475762004e476200ad94565b60405190808252806020026020018201604052801562004e71578160200160208202803683370190505b50905060005b8281101562004f7057600062004e8f8b838962003312565b905060008b62ffffff168262ffffff161015801562004eb1575060008960ff16115b62004ebe57600062004edf565b62004edf62004ed960ff8b16670de0b6b3a76400006200b135565b62007f96565b905060008c62ffffff168362ffffff161115801562004f01575060008960ff16115b62004f0e57600062004f29565b62004f2962004ed960ff8b16670de0b6b3a76400006200b135565b905062004f3882828562007fc2565b85858151811062004f4d5762004f4d6200b0ed565b6020026020010181815250505050508062004f68906200b103565b905062004e77565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201e5a5833981519152906306447d5690602401600060405180830381600087803b15801562004fc257600080fd5b505af115801562004fd7573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af11580156200502b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200505191906200b1d2565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af1158015620050a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050c891906200b1d2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200512857600080fd5b505af11580156200513d573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162005173939291906200b320565b6000604051808303816000875af115801562005193573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620051bd91908101906200b386565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a57838290600052602060002001805462005214906200b177565b80601f016020809104026020016040519081016040528092919081815260200182805462005242906200b177565b8015620052935780601f10620052675761010080835404028352916020019162005293565b820191906000526020600020905b8154815290600101906020018083116200527557829003601f168201915b505050505081526020019060010190620051f2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620052f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200531e91906200b3da565b9998505050505050505050565b60075460009060ff161562005344575060075460ff1690565b604051630667f9d760e41b81526000805160206201e5a5833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620053b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053de91906200af9d565b1415905090565b602554602254601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af11580156200544f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200547591906200af34565b5060248054604051634cd161d360e01b8152600a60048201526000928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b158015620054c557600080fd5b505af1158015620054da573d6000803e3d6000fd5b5050602554604080516001600160a01b039092166024830152600a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03166304fc2fe760e11b1790525163f28dceb360e01b81526000805160206201e5a5833981519152935063f28dceb392506200555c91906004016200b162565b600060405180830381600087803b1580156200557757600080fd5b505af11580156200558c573d6000803e3d6000fd5b5050602554602154601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a60648201529116925063659ac74b91506084016020604051808303816000875af1158015620055fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb991906200af34565b601c54601d54670de0b6b3a76400009160079160029160009162005658916001600160a01b0390811691168662800000878762006467565b60255460608201516040516323bf0acb60e21b81529293506000928392839283926001600160a01b0390921691638efc2b2c91906200569c9089906004016200ac57565b60006040518083038185885af1158015620056bb573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620056e691908101906200ae78565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979b5095995091975095506000949093169263704037bd92506064019050608060405180830381865afa1580156200575a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200578091906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b158015620057d557600080fd5b505af1158015620057ea573d6000803e3d6000fd5b5050601d546040516370a0823160e01b8152306004820152479350600092506001600160a01b03909116906370a0823190602401602060405180830381865afa1580156200583c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200586291906200af9d565b602554601d546040516381c2fdfb60e01b815292935060009283926001600160a01b03908116926381c2fdfb92620058b09290911690600a90869081908e908e90309042906004016200b228565b60408051808303816000875af1158015620058cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058f591906200b0c8565b915091506200593d818a600a6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a3100000081525062007d2f565b620059818289600a6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a3200000081525062007d2f565b620059ce476200599283876200b14c565b6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a33000000815250620065ff565b601d546040516370a0823160e01b815230600482015262005a88916001600160a01b0316906370a0823190602401602060405180830381865afa15801562005a1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a4091906200af9d565b62005a4c84866200b14c565b6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a34000000815250620065ff565b50505050505050505050505050565b6040805160048082526024820183526020820180516001600160e01b0316636c8cb79360e01b179052915163f28dceb360e01b81526000805160206201e5a58339815191529263f28dceb39262005af1929091016200b162565b600060405180830381600087803b15801562005b0c57600080fd5b505af115801562005b21573d6000803e3d6000fd5b5050602554604051600093506001600160a01b039091169150670de0b6b3a7640000908381818185875af1925050503d806000811462005b7e576040519150601f19603f3d011682016040523d82523d6000602084013e62005b83565b606091505b5050601c5490915062005ba8906001600160a01b0316670de0b6b3a764000062007dd9565b601c5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201e5a58339815191529063ca669fa790602401600060405180830381600087803b15801562005bfd57600080fd5b505af115801562005c12573d6000803e3d6000fd5b50506025546040516001600160a01b039091169250670de0b6b3a76400009150600081818185875af1925050503d806000811462005c6d576040519150601f19603f3d011682016040523d82523d6000602084013e62005c72565b606091505b50508091505062000cb9816040518060400160405280601581526020017f746573745f526563656976654e41544956453a3a31000000000000000000000081525062008000565b606060138054806020026020016040519081016040528092919081815260200182805480156200194a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200192b575050505050905090565b601d54601c54670de0b6b3a76400009160079160029160009162005d53916001600160a01b0390811691168662800000878762006467565b6040805160048082526024820183526020820180516001600160e01b031663b33f8ab960e01b179052915163f28dceb360e01b81529293506000805160206201e5a58339815191529263f28dceb39262005daf9291016200b162565b600060405180830381600087803b15801562005dca57600080fd5b505af115801562005ddf573d6000803e3d6000fd5b505060255460808401516040516323bf0acb60e21b81526001600160a01b039092169350638efc2b2c92509062005e1b9085906004016200ac57565b60006040518083038185885af115801562005e3a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262005e6591908101906200ae78565b5050601e54601d5462005e9295506001600160a01b03918216945016915087905062800000878762006467565b805160208083015160608401516080850151604080516001600160a01b03968716602482015295909316604486015260648501919091526084840181905260a4808501919091528151808503909101815260c4909301815290820180516001600160e01b031663d0a4f13b60e01b1790525163f28dceb360e01b81529192506000805160206201e5a58339815191529163f28dceb39162005f36916004016200b162565b600060405180830381600087803b15801562005f5157600080fd5b505af115801562005f66573d6000803e3d6000fd5b505060255460808401516040516323bf0acb60e21b81526001600160a01b039092169350638efc2b2c92509062005fa29085906004016200ac57565b60006040518083038185885af115801562005fc1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262005fec91908101906200ae78565b5050601c54601d546200601995506001600160a01b03918216945016915087905062800000878762006467565b805160208083015160608401516080850151604080516001600160a01b03968716602482015295909316604486015260648501919091526084840181905260a4808501919091528151808503909101815260c4909301815290820180516001600160e01b031663d0a4f13b60e01b1790525163f28dceb360e01b81529192506000805160206201e5a58339815191529163f28dceb391620060bd916004016200b162565b600060405180830381600087803b158015620060d857600080fd5b505af1158015620060ed573d6000803e3d6000fd5b505060255460808401516040516323bf0acb60e21b81526001600160a01b039092169350638efc2b2c925090620061299085906004016200ac57565b60006040518083038185885af115801562006148573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526200108891908101906200ae78565b670de0b6b3a7640000831115620061cd5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064016200026b565b6000620061db838362002c79565b905060008167ffffffffffffffff811115620061fb57620061fb6200ad94565b60405190808252806020026020018201604052801562006225578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200624657620062466200ad94565b60405190808252806020026020018201604052801562006270578160200160208202803683370190505b50905060005b838110156200637e5760006200628e89838862003312565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620062e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200630a91906200af9d565b90508162ffffff168584815181106200632757620063276200b0ed565b602090810291909101015262006347818a670de0b6b3a764000062008064565b8484815181106200635c576200635c6200b0ed565b60200260200101818152505050508062006376906200b103565b905062006276565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201e5a58339815191529063ca669fa790602401600060405180830381600087803b158015620063d057600080fd5b505af1158015620063e5573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200641d908d908d90879087906004016200b291565b6000604051808303816000875af11580156200643d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018e391908101906200b434565b62006505604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b600080600080620065198989898962008092565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff16815260200160008152602001620065978a87620083a190919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a001620065ee426103e86200b14c565b90529b9a5050505050505050505050565b6040516388b44c8560e01b81526000805160206201e5a5833981519152906388b44c859062006637908690869086906004016200b46d565b60006040518083038186803b1580156200665057600080fd5b505afa15801562006665573d6000803e3d6000fd5b50505050505050565b6040516365d5c13560e01b81526000805160206201e5a5833981519152906365d5c1359062006637908690869086906004016200b46d565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620067a357601c546040516000805160206201e5a58339815191529163b4d6c782916001600160a01b03909116906200670c906200a685565b604051809103906000f08015801562006729573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200676e9291906200b48e565b600060405180830381600087803b1580156200678957600080fd5b505af11580156200679e573d6000803e3d6000fd5b505050505b6006604051620067b3906200a693565b60ff9091168152602001604051809103906000f080158015620067da573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200680c906200a693565b60ff9091168152602001604051809103906000f08015801562006833573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062006865906200a693565b60ff9091168152602001604051809103906000f0801580156200688c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051601290620068be906200a693565b60ff9091168152602001604051809103906000f080158015620068e5573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062006917906200a693565b60ff9091168152602001604051809103906000f0801580156200693e573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062006970906200a693565b60ff9091168152602001604051809103906000f08015801562006997573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051620069c6906200a6a1565b604051809103906000f080158015620069e3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201e5a58339815191529063c657c71890608401600060405180830381600087803b15801562006a8457600080fd5b505af115801562006a99573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006b1157600080fd5b505af115801562006b26573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006b9e57600080fd5b505af115801562006bb3573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006c2b57600080fd5b505af115801562006c40573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006cb857600080fd5b505af115801562006ccd573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006d4557600080fd5b505af115801562006d5a573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006dcc57600080fd5b505af115801562006de1573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006e6d57600080fd5b505af115801562006e82573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062006f09906200a6af565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562006f44573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162006f72906200a6bd565b6001600160a01b039091168152602001604051809103906000f08015801562006f9f573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562006ffe57600080fd5b505af115801562007013573d6000803e3d6000fd5b505050506200702162008465565b6200702d600a6200880e565b602454602b54601c546040516001600160a01b0393841693928316929091169062007058906200a6cb565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562007095573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620070d0906200a6d9565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200710d573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201e5a58339815191529063c657c71890608401600060405180830381600087803b158015620071ae57600080fd5b505af1158015620071c3573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b1580156200724f57600080fd5b505af115801562007264573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b158015620072f357600080fd5b505af115801562007308573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b1580156200739457600080fd5b505af1158015620073a9573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b1580156200743557600080fd5b505af11580156200744a573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b158015620074d657600080fd5b505af1158015620074eb573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562007546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200756c91906200b1d2565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620075c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620075ea91906200b1d2565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200766891906200b1d2565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620076c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076e691906200b1d2565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200773e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776491906200b1d2565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620077bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620077e291906200b1d2565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200783a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200786091906200b1d2565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620078b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620078de91906200b1d2565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007936573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200795c91906200b1d2565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620079b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620079da91906200b1d2565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007a32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a5891906200b1d2565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007ab0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ad691906200b1d2565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b5491906200b1d2565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007bac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007bd291906200b1d2565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007c2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c5091906200b1d2565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007ca8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb991906200b1d2565b62002c74838383600062008884565b600062007cec84848462008a7f565b9050620033686040518060400160405280600c81526020017f426f756e6420526573756c7400000000000000000000000000000000000000008152508262008c72565b604051637b88583160e11b81526000805160206201e5a58339815191529063f710b0629062007d699087908790879087906004016200b4b2565b60006040518083038186803b15801562007d8257600080fd5b505afa15801562007d97573d6000803e3d6000fd5b5050505050505050565b60405163d17d4b0d60e01b81526000805160206201e5a58339815191529063d17d4b0d9062006637908690869086906004016200b46d565b60405163c88a5e6d60e01b81526001600160a01b0383166004820152602481018290526000805160206201e5a58339815191529063c88a5e6d9060440162001dfd565b604051632f2769d160e01b81526000805160206201e5a583398151915290632f2769d19062006637908690869086906004016200b4d9565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562007ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007eea91906200af34565b95945050505050565b8062ffffff8116811462007f1a57604051639b63641560e01b815260040160405180910390fd5b919050565b6000805160206201e5a583398151915263e5d6bf0262007f4083426200b14c565b6040518263ffffffff1660e01b815260040162007f5f91815260200190565b600060405180830381600087803b15801562007f7a57600080fd5b505af115801562007f8f573d6000803e3d6000fd5b5050505050565b8067ffffffffffffffff8116811462007f1a5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60405163a34edc0360e01b81526000805160206201e5a58339815191529063a34edc03906200803690859085906004016200b507565b60006040518083038186803b1580156200804f57600080fd5b505afa15801562001e2d573d6000803e3d6000fd5b600080600062008075868662008cbf565b9150915062008088868686858562008cde565b9695505050505050565b606080806000620080a56002876200b524565b62ffffff16600003620080fb5760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e7360448201526064016200026b565b60006200810a6002886200b549565b90508662ffffff1667ffffffffffffffff8111156200812d576200812d6200ad94565b60405190808252806020026020018201604052801562008157578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff8111156200817b576200817b6200ad94565b604051908082528060200260200182016040528015620081a5578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff811115620081c957620081c96200ad94565b604051908082528060200260200182016040528015620081f3578160200160208202803683370190505b5092506000620082058260016200af7e565b6200821e9062ffffff16670de0b6b3a76400006200b135565b905060006200822f8360016200af7e565b620082409062ffffff168c6200b135565b905060005b8962ffffff168110156200839257620082608960016200af7e565b620082719062ffffff16826200b56e565b6200827e8a60016200af7e565b6200828a90866200af54565b62008296908d6200b1b3565b62ffffff16620082a791906200b14c565b888281518110620082bc57620082bc6200b0ed565b6020026020010181815250508362ffffff168111620082f85782868281518110620082eb57620082eb6200b0ed565b6020026020010181815250505b8362ffffff1681106200837d57828782815181106200831b576200831b6200b0ed565b60200260200101818152505060008211620083385760006200836e565b6200836e6080620083658a84815181106200835757620083576200b0ed565b602002602001015162008d90565b84919062008d9f565b6200837a90866200b14c565b94505b8062008389816200b103565b91505062008245565b50505050945094509450949050565b6060825167ffffffffffffffff811115620083c057620083c06200ad94565b604051908082528060200260200182016040528015620083ea578160200160208202803683370190505b50905060005b83518110156200845e578262ffffff168482815181106200841557620084156200b0ed565b60200260200101516200842991906200b2fd565b8282815181106200843e576200843e6200b0ed565b60209081029190910101528062008455816200b103565b915050620083f0565b5092915050565b601c546001600160a01b031615620084da5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620084c057600080fd5b505af1158015620084d5573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200854f5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200853557600080fd5b505af11580156200854a573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620085c45760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620085aa57600080fd5b505af1158015620085bf573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620086395760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200861f57600080fd5b505af115801562008634573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620086ae5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200869457600080fd5b505af1158015620086a9573d6000803e3d6000fd5b505050505b6020546001600160a01b031615620087235760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200870957600080fd5b505af11580156200871e573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620087985760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200877e57600080fd5b505af115801562008793573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620027b35760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620087f357600080fd5b505af115801562008808573d6000803e3d6000fd5b50505050565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee803906101240162007f5f565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620088da916200b588565b600060405180830381855afa9150503d806000811462008917576040519150601f19603f3d011682016040523d82523d6000602084013e6200891c565b606091505b509150506000818060200190518101906200893891906200af9d565b905062008972846200896b87620089646370a0823160e01b6200895d600c8d62008dcb565b9062008df1565b9062008e0f565b9062008e38565b821562001e2d5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620089bd91906200b588565b600060405180830381855afa9150503d8060008114620089fa576040519150601f19603f3d011682016040523d82523d6000602084013e620089ff565b606091505b5091505060008180602001905181019062008a1b91906200af9d565b90508286101562008a465762008a3286846200af1e565b62008a3e90826200af1e565b905062008a61565b62008a5283876200af1e565b62008a5e90826200b14c565b90505b62007d97816200896b6318160ddd60e01b6200895d600c8d62008dcb565b60008183111562008af95760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e000060648201526084016200026b565b82841015801562008b0a5750818411155b1562008b1857508262003368565b600062008b2684846200af1e565b62008b339060016200b14c565b90506003851115801562008b4657508481115b1562008b615762008b5885856200b14c565b91505062003368565b62008b7060036000196200af1e565b851015801562008b8c575062008b89856000196200af1e565b81115b1562008bac5762008ba0856000196200af1e565b62008b5890846200af1e565b8285111562008c0e57600062008bc384876200af1e565b9050600062008bd383836200b5a6565b90508060000362008bea5784935050505062003368565b600162008bf882886200b14c565b62008c0491906200af1e565b9350505062008c6a565b8385101562008c6a57600062008c2586866200af1e565b9050600062008c3583836200b5a6565b90508060000362008c4c5785935050505062003368565b62008c5881866200af1e565b62008c659060016200b14c565b935050505b509392505050565b62008cbb828260405160240162008c8b9291906200b5bd565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905262008e44565b5050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362008d045783838162008cfb5762008cfb6200b11f565b04905062007eea565b83821062008d25576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b600062002cc882600a62008e4f565b600060ff831684811b9061ffff6101008290031686901c90620080889087906001901b86858562008cde565b6005820180546001600160a01b0319166001600160a01b03831617905560008262003368565b60038201805463ffffffff191660e083901c17905560008262003368565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003368565b62008cbb828262008e8c565b62000cb98162009299565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff190162007eea8282620092ba565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562008eff57602002820191906000526020600020905b81548152602001906001019080831162008eea575b5050505050905060008362008f148362009542565b60405160200162008f279291906200b5e1565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162008f7b9186918891016200b614565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662008fb65762008fb487620095ef565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162008ff79187918991016200b614565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200903e91906200b588565b600060405180830381855afa9150503d80600081146200907b576040519150601f19603f3d011682016040523d82523d6000602084013e62009080565b606091505b5091506200909d905081620090978860206200b56e565b620095fc565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201e5a58339815191529063667f9d7090604401602060405180830381865afa158015620090ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200912591906200af9d565b9050808214620091dc5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200026b565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201e5a5833981519152906370ca10bb90606401600060405180830381600087803b1580156200923b57600080fd5b505af115801562009250573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200928560028b0160006200a6e7565b896004016000905550505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080600083600003620092d85750600160801b915062002cc89050565b50826000811215620092eb579015906000035b62100000811015620094fa57600160801b9250846fffffffffffffffffffffffffffffffff8111156200932057911591600019045b6001821615620093325792830260801c925b800260801c6002821615620093495792830260801c925b800260801c6004821615620093605792830260801c925b800260801c6008821615620093775792830260801c925b800260801c60108216156200938e5792830260801c925b800260801c6020821615620093a55792830260801c925b800260801c6040821615620093bc5792830260801c925b8002608090811c90821615620093d45792830260801c925b800260801c610100821615620093ec5792830260801c925b800260801c610200821615620094045792830260801c925b800260801c6104008216156200941c5792830260801c925b800260801c610800821615620094345792830260801c925b800260801c6110008216156200944c5792830260801c925b800260801c612000821615620094645792830260801c925b800260801c6140008216156200947c5792830260801c925b800260801c618000821615620094945792830260801c925b800260801c62010000821615620094ad5792830260801c925b800260801c62020000821615620094c65792830260801c925b800260801c62040000821615620094df5792830260801c925b800260801c62080000821615620094f85792830260801c925b505b826000036200952757604051631dba598d60e11b815260048101869052602481018590526044016200026b565b8162009534578262007eea565b62007eea836000196200b135565b60606000825160206200955691906200b56e565b67ffffffffffffffff8111156200957157620095716200ad94565b6040519080825280601f01601f1916602001820160405280156200959c576020820181803683370190505b50905060005b83518110156200845e576000848281518110620095c357620095c36200b0ed565b602002602001015190508082602002602001840152508080620095e6906200b103565b915050620095a2565b600062002cc8826200969e565b600080600060208551116200961357845162009616565b60205b905060005b818110156200969457620096318160086200b56e565b866200963e83886200b14c565b815181106200965157620096516200b0ed565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200968b816200b103565b9150506200961b565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200971057602002820191906000526020600020905b815481526020019060010190808311620096fb575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200975c925085918791016200b614565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620097fb576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620097cb9185918791016200b614565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009809836200a540565b6040516020016200981c9291906200b5e1565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200988c57600080fd5b505af1158015620098a1573d6000803e3d6000fd5b50505050600080866001600160a01b031683604051620098c291906200b588565b600060405180830381855afa9150503d8060008114620098ff576040519150601f19603f3d011682016040523d82523d6000602084013e62009904565b606091505b509150620099219050816200991b8760206200b56e565b6200a5ed565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201e5a5833981519152906365bc9481906024016000604051808303816000875af11580156200997e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620099a891908101906200b650565b509050805160010362009d4c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062009a005762009a006200b0ed565b60200260200101516040518363ffffffff1660e01b815260040162009a3a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a7e91906200af9d565b90508062009ae9577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062009abe5762009abe6200b0ed565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462009b9e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200026b565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162009bd69291906200b614565b604051602081830303815290604052805190602001208560008151811062009c025762009c026200b0ed565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062009c5c5762009c5c6200b0ed565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262009ca7918a918c91016200b614565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162009d11918a918c91016200b614565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200a3b5565b6001815111156200a3445760005b81518110156200a33d5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062009dae5762009dae6200b0ed565b60200260200101516040518363ffffffff1660e01b815260040162009de89291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009e06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e2c91906200af9d565b90508062009e96577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062009e6b5762009e6b6200b0ed565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462009ea557506200a328565b82518119906000805160206201e5a5833981519152906370ca10bb908c9087908790811062009ed85762009ed86200b0ed565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b15801562009f3157600080fd5b505af115801562009f46573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162009f6891906200b588565b600060405180830381855afa9150503d806000811462009fa5576040519150601f19603f3d011682016040523d82523d6000602084013e62009faa565b606091505b50909250905062009fc2816200991b8c60206200b56e565b96505080801562009fd257508186145b156200a26a577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200a0109291906200b614565b604051602081830303815290604052805190602001208888815181106200a03b576200a03b6200b0ed565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200a094576200a0946200b0ed565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200a0df918d918f91016200b614565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200a16c9291906200b614565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200a1ef576200a1ef6200b0ed565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a24857600080fd5b505af11580156200a25d573d6000803e3d6000fd5b505050505050506200a33d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200a2b2576200a2b26200b0ed565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a30b57600080fd5b505af11580156200a320573d6000803e3d6000fd5b505050505050505b806200a334816200b103565b91505062009d5a565b506200a3b5565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e60648201526084016200026b565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200a3f99188918a91016200b614565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a4965760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e000000000000000000000000000000000060648201526084016200026b565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200a4c760028a0160006200a6e7565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200a50d9188918a91016200b614565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a55491906200b56e565b67ffffffffffffffff8111156200a56f576200a56f6200ad94565b6040519080825280601f01601f1916602001820160405280156200a59a576020820181803683370190505b50905060005b83518110156200845e5760008482815181106200a5c1576200a5c16200b0ed565b6020026020010151905080826020026020018401525080806200a5e4906200b103565b9150506200a5a0565b600080600060208551116200a6045784516200a607565b60205b905060005b8181101562009694576200a6228160086200b56e565b866200a62f83886200b14c565b815181106200a642576200a6426200b0ed565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200a67c816200b103565b9150506200a60c565b610b08806200b6bc83390190565b610bfd806200c1c483390190565b610c18806200cdc183390190565b613199806200d9d983390190565b61615c8062010b7283390190565b614c808062016cce83390190565b612c13806201b94e83390190565b508054600082559060005260206000209081019062000cb991905b808211156200a71857600081556001016200a702565b5090565b6000602082840312156200a72f57600080fd5b81356001600160e01b0319811681146200336857600080fd5b803562ffffff8116811462007f1a57600080fd5b6000806000606084860312156200a77257600080fd5b833592506200a784602085016200a748565b91506200a794604085016200a748565b90509250925092565b6020808252825182820181905260009190848201906040850190845b818110156200a7e05783516001600160a01b0316835292840192918401916001016200a7b9565b50909695505050505050565b60005b838110156200a8095781810151838201526020016200a7ef565b50506000910152565b600081518084526200a82c8160208601602086016200a7ec565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200a8f657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200a8df57605f198985030183526200a8cc8486516200a812565b948e01949350918d01916001016200a8ad565b505050978a0197945050918801916001016200a867565b50919a9950505050505050505050565b803560ff8116811462007f1a57600080fd5b600080604083850312156200a92c57600080fd5b6200a937836200a906565b91506200a947602084016200a906565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200a9f857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200a9e25783516001600160e01b0319168252928b019260019290920191908b01906200a9b6565b50978a019795505050918701916001016200a978565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200aa6057603f198886030184526200aa4d8583516200a812565b945092850192908501906001016200aa2e565b5092979650505050505050565b6000806000606084860312156200aa8357600080fd5b6200aa8e846200a748565b9250602084013591506200a794604085016200a906565b6001600160a01b038116811462000cb957600080fd5b600080600080600080600080610100898b0312156200aad957600080fd5b88356200aae6816200aaa5565b975060208901356200aaf8816200aaa5565b965060408901356200ab0a816200aaa5565b95506200ab1a60608a016200a748565b94506080890135935060a089013592506200ab3860c08a016200a906565b91506200ab4860e08a016200a906565b90509295985092959890939650565b61ffff8116811462000cb957600080fd5b6000602082840312156200ab7b57600080fd5b813562003368816200ab57565b600080600080600080600060e0888a0312156200aba457600080fd5b87356200abb1816200aaa5565b965060208801356200abc3816200aaa5565b955060408801356200abd5816200aaa5565b94506200abe5606089016200a748565b9350608088013592506200abfc60a089016200a906565b91506200ac0c60c089016200a906565b905092959891949750929550565b600081518084526020808501945080840160005b838110156200ac4c578151875295820195908201906001016200ac2e565b509495945050505050565b602081526200ac726020820183516001600160a01b03169052565b600060208301516200ac8f60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200ad006102008601846200ac1a565b9250808601519050601f196101608187860301818801526200ad2385846200ac1a565b9450808801519250506101808187860301818801526200ad4485846200ac1a565b945080880151925050506101a06200ad66818701836001600160a01b03169052565b86015190506101c06200ad83868201836001600160a01b03169052565b959095015193019290925250919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200add6576200add66200ad94565b604052919050565b600067ffffffffffffffff8211156200adfb576200adfb6200ad94565b5060051b60200190565b600082601f8301126200ae1757600080fd5b815160206200ae306200ae2a836200adde565b6200adaa565b82815260059290921b840181019181810190868411156200ae5057600080fd5b8286015b848110156200ae6d57805183529183019183016200ae54565b509695505050505050565b60008060008060008060c087890312156200ae9257600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff808211156200aec757600080fd5b6200aed58a838b016200ae05565b935060a08901519150808211156200aeec57600080fd5b506200aefb89828a016200ae05565b9150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b8181038181111562002cc85762002cc86200af08565b6000602082840312156200af4757600080fd5b815162003368816200aaa5565b62ffffff8181168382160280821691908281146200af76576200af766200af08565b505092915050565b62ffffff8181168382160190808211156200845e576200845e6200af08565b6000602082840312156200afb057600080fd5b5051919050565b8051801515811462007f1a57600080fd5b6000608082840312156200afdb57600080fd5b6040516080810181811067ffffffffffffffff821117156200b001576200b0016200ad94565b60405282516200b011816200ab57565b815260208301516200b023816200aaa5565b60208201526200b036604084016200afb7565b60408201526200b049606084016200afb7565b60608201529392505050565b60006101206001600160a01b03808d168452808c16602085015261ffff8b1660408501528960608501528860808501528160a08501526200b099828501896200ac1a565b915083820360c08501526200b0af82886200ac1a565b951660e084015250506101000152979650505050505050565b600080604083850312156200b0dc57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b6000600182016200b118576200b1186200af08565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826200b147576200b1476200b11f565b500490565b8082018082111562002cc85762002cc86200af08565b6020815260006200336860208301846200a812565b600181811c908216806200b18c57607f821691505b6020821081036200b1ad57634e487b7160e01b600052602260045260246000fd5b50919050565b62ffffff8281168282160390808211156200845e576200845e6200af08565b6000602082840312156200b1e557600080fd5b62003368826200afb7565b60ff818116838216019081111562002cc85762002cc86200af08565b60ff828116828216039081111562002cc85762002cc86200af08565b60006101006001600160a01b03808c16845261ffff8b1660208501528960408501528860608501528160808501526200b264828501896200ac1a565b915083820360a08501526200b27a82886200ac1a565b951660c0840152505060e001529695505050505050565b60006001600160a01b038087168352808616602084015250608060408301526200b2bf60808301856200ac1a565b82810360608401526200b2d381856200ac1a565b979650505050505050565b6000600160ff1b82016200b2f6576200b2f66200af08565b5060000390565b81810360008312801583831316838312821617156200845e576200845e6200af08565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200b36d578551835294830194918301916001016200b34f565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200b39c57600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200b3c257600080fd5b6200b3d0868287016200ae05565b9150509250925092565b600080600080600080600080610100898b0312156200b3f857600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015191506200ab4860e08a016200afb7565b6000602082840312156200b44757600080fd5b815167ffffffffffffffff8111156200b45f57600080fd5b62007ff8848285016200ae05565b83815282602082015260606040820152600062007eea60608301846200a812565b6001600160a01b038316815260406020820152600062007ff860408301846200a812565b8481528360208201528260408201526080606082015260006200808860808301846200a812565b60006001600160a01b0380861683528085166020840152506060604083015262007eea60608301846200a812565b821515815260406020820152600062007ff860408301846200a812565b600062ffffff808416806200b53d576200b53d6200b11f565b92169190910692915050565b600062ffffff808416806200b562576200b5626200b11f565b92169190910492915050565b808202811582820484141762002cc85762002cc86200af08565b600082516200b59c8184602087016200a7ec565b9190910192915050565b6000826200b5b8576200b5b86200b11f565b500690565b6040815260006200b5d260408301856200a812565b90508260208301529392505050565b6001600160e01b03198316815281516000906200b6068160048501602087016200a7ec565b919091016004019392505050565b825160009082906020808701845b838110156200b640578151855293820193908201906001016200b622565b5050948252509092019392505050565b600080604083850312156200b66457600080fd5b825167ffffffffffffffff808211156200b67d57600080fd5b6200b68b868387016200ae05565b935060208501519150808211156200b6a257600080fd5b506200b6b1858286016200ae05565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400337465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a347465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a350000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a327465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a367465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a377465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a387465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a317465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a33a26469706673582212200293c1d3f6ebb0398fdf3e3204c27d0dfb3572b4b034239c4532c9be4a3b0ce764736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;305:22704:91;1812:17:93;;305:22704:91;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;305:22704:91;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;305:22704:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610620002025760003560e01c806367e2c3b91162000117578063b89e023311620000a1578063cb21bf3b116200006c578063cb21bf3b14620005d6578063e20c9f7114620005ee578063e20de7f61462000606578063fecaa223146200061e57600080fd5b8063b89e02331462000569578063ba414fa6146200058e578063c051660814620005a6578063c250f09114620005be57600080fd5b8063916a17c611620000e2578063916a17c614620004fc5780639b482ce01462000514578063a7aa85e9146200052c578063b5508aa9146200055157600080fd5b806367e2c3b9146200046b57806385226c811462000483578063889be5b714620004aa5780638eb3e70e14620004e457600080fd5b80632ade388011620001995780633f7286f411620001645780633f7286f414620003e05780634659171c14620003f857806349789ef9146200041057806366d9a9a0146200044457600080fd5b80632ade3880146200037157806337f3b96914620003985780633c322dd314620003b05780633e5e3c2314620003c857600080fd5b80631004139011620001da5780631004139014620002f557806314d98783146200031a5780631ed7831c14620003325780632602040b146200035957600080fd5b8062e44d64146200027b57806301ffc9a714620002935780630a9254e414620002dd57600080fd5b366200027657602b54600160a01b900460ff1615620002745760405162461bcd60e51b815260206004820152602360248201527f4e6f20726563656976652066756e6374696f6e206f6e2074686520636f6e74726044820152621858dd60ea1b60648201526084015b60405180910390fd5b005b600080fd5b3480156200028857600080fd5b506200027462000643565b348015620002a057600080fd5b50620002c8620002b23660046200a71c565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b348015620002ea57600080fd5b506200027462000a20565b3480156200030257600080fd5b5062000274620003143660046200a75c565b62000cbc565b3480156200032757600080fd5b506200027462001094565b3480156200033f57600080fd5b506200034a620018f0565b604051620002d491906200a79d565b3480156200036657600080fd5b506200027462001954565b3480156200037e57600080fd5b506200038962001e35565b604051620002d491906200a840565b348015620003a557600080fd5b506200027462001f83565b348015620003bd57600080fd5b50620002746200257f565b348015620003d557600080fd5b506200034a620027b5565b348015620003ed57600080fd5b506200034a62002817565b3480156200040557600080fd5b506200027462002879565b3480156200041d57600080fd5b50620004356200042f3660046200a918565b62002c79565b604051908152602001620002d4565b3480156200045157600080fd5b506200045c62002cce565b604051620002d491906200a950565b3480156200047857600080fd5b506200027462002db8565b3480156200049057600080fd5b506200049b62003238565b604051620002d491906200aa07565b348015620004b757600080fd5b50620004cf620004c93660046200aa6d565b62003312565b60405162ffffff9091168152602001620002d4565b348015620004f157600080fd5b50620002746200336f565b3480156200050957600080fd5b506200045c62003a3f565b3480156200052157600080fd5b506200027462003b29565b3480156200053957600080fd5b50620002746200054b3660046200aabb565b62004d2d565b3480156200055e57600080fd5b506200049b620051ce565b3480156200057657600080fd5b50620002c8620005883660046200ab68565b620052a8565b3480156200059b57600080fd5b50620002c86200532b565b348015620005b357600080fd5b5062000274620053e5565b348015620005cb57600080fd5b506200027462005620565b348015620005e357600080fd5b506200027462005a97565b348015620005fb57600080fd5b506200034a62005cb9565b3480156200061357600080fd5b506200027462005d1b565b3480156200062b57600080fd5b50620002746200063d3660046200ab88565b62006173565b601c54601d54670de0b6b3a7640000916007916002916000916200067b916001600160a01b0390811691168662800000878762006467565b60255460608201516040516323bf0acb60e21b8152929350600092839283928392839283926001600160a01b0390911691638efc2b2c9190620006c3908b906004016200ac57565b60006040518083038185885af1158015620006e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526200070d91908101906200ae78565b9550955095509550955095506200076c868589606001516200073091906200af1e565b6040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a31000000000000815250620065ff565b620007bf858489608001516200078391906200af1e565b6040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a32000000000000815250620065ff565b6200080184876040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a330000000000008152506200666e565b6200084383866040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a340000000000008152506200666e565b6200088b81518a62ffffff166040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a35000000000000815250620065ff565b620008d382518a62ffffff166040518060400160405280601a81526020017f746573745f4164644c69717569646974794e41544956453a3a36000000000000815250620065ff565b602554602154601c5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af11580156200093d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096391906200af34565b50602154601c5462000989916001600160a01b0390811691168c628000008d8d62006467565b60255460808201516040516323bf0acb60e21b81529299506001600160a01b0390911691638efc2b2c9190620009c4908b906004016200ac57565b60006040518083038185885af1158015620009e3573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000a0e91908101906200ae78565b50505050505050505050505050505050565b62000a2a620066a6565b60248054604051634cd161d360e01b8152600a60048201526001928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b15801562000a7957600080fd5b505af115801562000a8e573d6000803e3d6000fd5b5050602554601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a60648201529116925063659ac74b91506084016020604051808303816000875af115801562000afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b2291906200af34565b50602554601c54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af115801562000b8d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bb391906200af34565b50602554602354601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af115801562000c1e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4491906200af34565b50601d546dffffffffffffffffffffffffffff9062000c6e906001600160a01b0316308362007cce565b601e5462000c87906001600160a01b0316308362007cce565b60215462000ca0906001600160a01b0316308362007cce565b60225462000cb9906001600160a01b0316308362007cce565b50565b62000cd9836113886dffffffffffffffffffffffffffff62007cdd565b925062000cf08262ffffff16600061019062007cdd565b915062000cff8260026200af54565b62000d0c9060016200af7e565b915062000d228162ffffff166000601462007cdd565b601e54601d5491925060009162000d4d916001600160a01b0390811691168662800000878762006467565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166101a08301526025546040516351e3938d60e11b815292935060009283928392839283928392169063a3c7271a9062000db6908a906004016200ac57565b6000604051808303816000875af115801562000dd6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000e0091908101906200ae78565b95509550955095509550955062000e438685896060015162000e2391906200af1e565b6040518060600160405280602281526020016201e64d60229139620065ff565b62000e7a8584896080015162000e5a91906200af1e565b6040518060600160405280602281526020016201e5c560229139620065ff565b62000ea084876040518060600160405280602281526020016201e66f602291396200666e565b62000ec683866040518060600160405280602281526020016201e561602291396200666e565b601e546040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015262000f7b9216906370a0823190602401602060405180830381865afa15801562000f34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5a91906200af9d565b856040518060600160405280602281526020016201e58360229139620065ff565b601d546040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152620010309216906370a0823190602401602060405180830381865afa15801562000fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200100f91906200af9d565b846040518060600160405280602281526020016201e5e760229139620065ff565b6200105c81518a62ffffff166040518060600160405280602281526020016201e60960229139620065ff565b6200108882518a62ffffff166040518060600160405280602281526020016201e62b60229139620065ff565b50505050505050505050565b601e54601d54670de0b6b3a764000091600791600291600091620010cc916001600160a01b0390811691168662800000878762006467565b6025546040516351e3938d60e11b81529192506000918291829182916001600160a01b03169063a3c7271a90620011089088906004016200ac57565b6000604051808303816000875af115801562001128573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200115291908101906200ae78565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979b5095995091975095506000949093169263704037bd92506064019050608060405180830381865afa158015620011c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011ec91906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b1580156200124157600080fd5b505af115801562001256573d6000803e3d6000fd5b5050602554601e54601d54604051636110acdb60e11b8152600095508594506001600160a01b039384169363c22159b693620012ab9390821692911690600a90879081908d908d90309042906004016200b055565b60408051808303816000875af1158015620012ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012f091906200b0c8565b91509150620013388288600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3100000000000000000081525062007d2f565b6200137c8187600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3200000000000000000081525062007d2f565b620013be82886040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3300000000000000000081525062007da1565b6200140081876040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3400000000000000000081525062007da1565b60005b85518110156200150657620014f1846001600160a01b031662fdd58e308985815181106200143557620014356200b0ed565b60200260200101516040518363ffffffff1660e01b81526004016200146f9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200148d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014b391906200af9d565b60006040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a35000000000000000000815250620065ff565b80620014fd816200b103565b91505062001403565b506025546040516351e3938d60e11b81526001600160a01b039091169063a3c7271a9062001539908b906004016200ac57565b6000604051808303816000875af115801562001559573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200158391908101906200ae78565b602554601d54601e54604051636110acdb60e11b8152989f50969d50929b509099506001600160a01b039081169563c22159b695620015de95509282169350911690600a9060009081908d908d90309042906004016200b055565b60408051808303816000875af1158015620015fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162391906200b0c8565b80935081925050506200166f8288600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3600000000000000000081525062007d2f565b620016b38187600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3700000000000000000081525062007d2f565b6025546040516351e3938d60e11b81526001600160a01b039091169063a3c7271a90620016e5908b906004016200ac57565b6000604051808303816000875af115801562001705573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200172f91908101906200ae78565b949b5092995091975091955060009150505b8551811015620017ab5760028582815181106200176257620017626200b0ed565b60200260200101516200177691906200b135565b8582815181106200178b576200178b6200b0ed565b602090810291909101015280620017a2816200b103565b91505062001741565b50602554601e54601d54604051636110acdb60e11b81526001600160a01b039384169363c22159b693620017f99390821692911690600a9060009081908d908d90309042906004016200b055565b60408051808303816000875af115801562001818573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200183e91906200b0c8565b909250905062001893826200185560028a6200b135565b600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3800000000000000000081525062007d2f565b620018e381620018a56002896200b135565b600a6040518060400160405280601781526020017f746573745f52656d6f76654c69717569646974793a3a3900000000000000000081525062007d2f565b5050505050505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156200194a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200192b575b5050505050905090565b601d546025546040516340c10f1960e01b81526001600160a01b039182166004820152670de0b6b3a7640000602482018190529291909116906340c10f1990604401600060405180830381600087803b158015620019b157600080fd5b505af1158015620019c6573d6000803e3d6000fd5b5050601d546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562001a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3c91906200af9d565b602554601d546040516362c0676760e01b81526001600160a01b0391821660048201523060248201526044810186905292935016906362c0676790606401600060405180830381600087803b15801562001a9557600080fd5b505af115801562001aaa573d6000803e3d6000fd5b5050601d546040516370a0823160e01b815230600482015262001b6a93506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801562001afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b2291906200af9d565b62001b2e84846200b14c565b6040518060400160405280601281526020017f746573745f537765657045524332303a3a310000000000000000000000000000815250620065ff565b60255462001b82906001600160a01b03168362007dd9565b506025546040516362c0676760e01b815260006004820152306024820152600019604482015247916001600160a01b0316906362c0676790606401600060405180830381600087803b15801562001bd857600080fd5b505af115801562001bed573d6000803e3d6000fd5b5050505062001c4047838362001c0491906200b14c565b6040518060400160405280601281526020017f746573745f537765657045524332303a3a320000000000000000000000000000815250620065ff565b601d546025546040516340c10f1960e01b81526001600160a01b039182166004820152602481018590529116906340c10f1990604401600060405180830381600087803b15801562001c9157600080fd5b505af115801562001ca6573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b0316635d9515b960e11b179052915163f28dceb360e01b81526000805160206201e5a5833981519152945063f28dceb3935062001d0292016200b162565b600060405180830381600087803b15801562001d1d57600080fd5b505af115801562001d32573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201e5a5833981519152925063ca669fa79150602401600060405180830381600087803b15801562001da757600080fd5b505af115801562001dbc573d6000803e3d6000fd5b5050602554601d546040516362c0676760e01b81526001600160a01b03918216600482015230602482015260448101879052911692506362c0676791506064015b600060405180830381600087803b15801562001e1857600080fd5b505af115801562001e2d573d6000803e3d6000fd5b505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001f6257838290600052602060002001805462001ece906200b177565b80601f016020809104026020016040519081016040528092919081815260200182805462001efc906200b177565b801562001f4d5780601f1062001f215761010080835404028352916020019162001f4d565b820191906000526020600020905b81548152906001019060200180831162001f2f57829003601f168201915b50505050508152602001906001019062001eac565b50505050815250508152602001906001019062001e59565b50505050905090565b601e54601d54670de0b6b3a76400009160079160029160009162001fbb916001600160a01b0390811691168662800000878762006467565b6025546040516351e3938d60e11b81529192506000918291829182916001600160a01b03169063a3c7271a9062001ff79088906004016200ac57565b6000604051808303816000875af115801562002017573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200204191908101906200ae78565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979b5095995091975095506000949093169263704037bd92506064019050608060405180830381865afa158015620020b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020db91906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b1580156200213057600080fd5b505af115801562002145573d6000803e3d6000fd5b506000805160206201e5a5833981519152925063f28dceb3915063dae7ca7d60e01b9050620021766001426200af1e565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620021d1916004016200b162565b600060405180830381600087803b158015620021ec57600080fd5b505af115801562002201573d6000803e3d6000fd5b5050602554601e54601d546001600160a01b03928316945063c22159b693509082169116600a6000808989306200223a6001426200af1e565b6040518a63ffffffff1660e01b815260040162002260999897969594939291906200b055565b60408051808303816000875af11580156200227f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022a591906200b0c8565b506000805160206201e5a5833981519152905063f28dceb36318ccfb7760e11b620022d28860016200b14c565b604051602481019190915260448101899052600060648201526084810188905260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200233c916004016200b162565b600060405180830381600087803b1580156200235757600080fd5b505af11580156200236c573d6000803e3d6000fd5b5050602554601e54601d546001600160a01b03928316945063c22159b693509082169116600a6200239f8a60016200b14c565b6000898930426040518a63ffffffff1660e01b8152600401620023cb999897969594939291906200b055565b60408051808303816000875af1158015620023ea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200241091906200b0c8565b506000805160206201e5a5833981519152905063f28dceb36318ccfb7760e11b600088620024408960016200b14c565b60405160ff9093166024840152604483019190915260648201526084810188905260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620024ab916004016200b162565b600060405180830381600087803b158015620024c657600080fd5b505af1158015620024db573d6000803e3d6000fd5b5050602554601e54601d546001600160a01b03928316945063c22159b693509082169116600a6000620025108a60016200b14c565b898930426040518a63ffffffff1660e01b81526004016200253a999897969594939291906200b055565b60408051808303816000875af115801562002559573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018e391906200b0c8565b60255460408051632233163960e21b815290516200263b926001600160a01b0316916388cc58e49160048083019260209291908290030181865afa158015620025cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025f291906200af34565b60245460408051808201909152601381527f746573745f436f6e7374727563746f723a3a310000000000000000000000000060208201526001600160a01b039091169062007e1c565b6025546040805163bb558a9f60e01b81529051620026f7926001600160a01b03169163bb558a9f9160048083019260209291908290030181865afa15801562002688573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026ae91906200af34565b602b5460408051808201909152601381527f746573745f436f6e7374727563746f723a3a330000000000000000000000000060208201526001600160a01b039091169062007e1c565b60255460408051630d93800f60e31b81529051620027b3926001600160a01b031691636c9c00789160048083019260209291908290030181865afa15801562002744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200276a91906200af34565b601c5460408051808201909152601381527f746573745f436f6e7374727563746f723a3a350000000000000000000000000060208201526001600160a01b039091169062007e1c565b565b606060168054806020026020016040519081016040528092919081815260200182805480156200194a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200192b575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156200194a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200192b575050505050905090565b6024805460405163379ee80360e01b81526001600482018190526127109382019390935260448101839052600a6064820152611388608482015260a48101839052600060c4820181905260e48201939093526101048101929092526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200290357600080fd5b505af115801562002918573d6000803e3d6000fd5b5050601e54601d546280000093506000925062002945916001600160a01b03908116911684600162007e54565b9050620029907f000000000000000000000000000000000000000000000000000000000000000080836200297b6001876200b1b3565b6000670de0b6b3a76400006000600162004d2d565b620029eb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008385670de0b6b3a76400008060018062004d2d565b62002a317f0000000000000000000000000000000000000000000000000000000000000000808362002a1f6001876200b1b3565b670de0b6b3a764000060018062006173565b62002a917f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083627a12006000670de0b6b3a76400006000600162004d2d565b601e5462002ad2906001600160a01b03167f0000000000000000000000000000000000000000000000000000000000000000671bc16d674ec8000062007cce565b60405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201e5a58339815191529063ca669fa790602401600060405180830381600087803b15801562002b4357600080fd5b505af115801562002b58573d6000803e3d6000fd5b5050601e5460405163a9059cbb60e01b81526001600160a01b038581166004830152671bc16d674ec800006024830152909116925063a9059cbb91506044016020604051808303816000875af115801562002bb7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bdd91906200b1d2565b5060405163029e02cd60e51b8152600160048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301528216906353c059a0906044016020604051808303816000875af115801562002c4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c7491906200af9d565b505050565b6000808360ff1611801562002c91575060008260ff16115b62002ca85762002ca282846200b1f0565b62002cc2565b600162002cb683856200b1f0565b62002cc291906200b20c565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002d9f57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162002d605790505b5050505050815250508152602001906001019062002cf2565b601c54601d54670de0b6b3a76400009160079160029160009162002df0916001600160a01b0390811691168662800000878762006467565b60255460608201516040516323bf0acb60e21b8152929350600092839283926001600160a01b0390911691638efc2b2c919062002e329088906004016200ac57565b60006040518083038185885af115801562002e51573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262002e7c91908101906200ae78565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979a50929850909650600095909116935063704037bd92506064019050608060405180830381865afa15801562002eef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f1591906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b15801562002f6a57600080fd5b505af115801562002f7f573d6000803e3d6000fd5b506000805160206201e5a5833981519152925063f28dceb3915063dae7ca7d60e01b905062002fb06001426200af1e565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200300b916004016200b162565b600060405180830381600087803b1580156200302657600080fd5b505af11580156200303b573d6000803e3d6000fd5b5050602554601d546001600160a01b0391821693506381c2fdfb925016600a6000808888306200306d6001426200af1e565b6040518963ffffffff1660e01b8152600401620030929897969594939291906200b228565b60408051808303816000875af1158015620030b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030d791906200b0c8565b5050602b8054600160a01b7fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90911617905560408051306024820152604480820187905282518083039091018152606490910182526020810180516001600160e01b031663047b96f760e41b179052905163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb3916200317891906004016200b162565b600060405180830381600087803b1580156200319357600080fd5b505af1158015620031a8573d6000803e3d6000fd5b5050602554601d546040516381c2fdfb60e01b81526001600160a01b0392831694506381c2fdfb9350620031f39290911690600a9060009081908a908a90309042906004016200b228565b60408051808303816000875af115801562003212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108891906200b0c8565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a5783829060005260206000200180546200327e906200b177565b80601f0160208091040260200160405190810160405280929190818152602001828054620032ac906200b177565b8015620032fd5780601f10620032d157610100808354040283529160200191620032fd565b820191906000526020600020905b815481529060010190602001808311620032df57829003601f168201915b5050505050815260200190600101906200325c565b600080620033268462ffffff87166200b14c565b905060008360ff16116200333b578062003357565b6200334a60ff8416826200af1e565b620033579060016200b14c565b9050620033648162007ef3565b9150505b9392505050565b601e54601d54600091620033a0916001600160a01b039182169116670de0b6b3a76400006280000060018662006467565b6025546001600160a01b031661018082018190526040516351e3938d60e11b815291925060009182919063a3c7271a90620033e09086906004016200ac57565b6000604051808303816000875af115801562003400573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200342a91908101906200ae78565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152939950919750600096509116935063704037bd92506064019050608060405180830381865afa1580156200349a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034c091906200afc8565b6020015190506000835167ffffffffffffffff811115620034e557620034e56200ad94565b6040519080825280602002602001820160405280156200350f578160200160208202803683370190505b50905060005b84518110156200361657826001600160a01b031662fdd58e7f00000000000000000000000000000000000000000000000000000000000000008784815181106200356357620035636200b0ed565b60200260200101516040518363ffffffff1660e01b81526004016200359d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620035bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035e191906200af9d565b828281518110620035f657620035f66200b0ed565b6020908102919091010152806200360d816200b103565b91505062003515565b50602554604051631d26c38160e31b81526001600160a01b039091169063e9361c08906200366f9085907f000000000000000000000000000000000000000000000000000000000000000090899089906004016200b291565b600060405180830381600087803b1580156200368a57600080fd5b505af11580156200369f573d6000803e3d6000fd5b5050505060005b84518110156200380d57620037f8836001600160a01b031662fdd58e7f0000000000000000000000000000000000000000000000000000000000000000888581518110620036f857620036f86200b0ed565b60200260200101516040518363ffffffff1660e01b8152600401620037329291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562003750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200377691906200af9d565b8583815181106200378b576200378b6200b0ed565b6020026020010151848481518110620037a857620037a86200b0ed565b6020026020010151620037bc91906200b14c565b6040518060400160405280601581526020017f746573745f53776565704c42546f6b656e733a3a310000000000000000000000815250620065ff565b8062003804816200b103565b915050620036a6565b506025546040516351e3938d60e11b81526001600160a01b039091169063a3c7271a90620038409088906004016200ac57565b6000604051808303816000875af115801562003860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200388a91908101906200ae78565b6040805160048082526024820183526020820180516001600160e01b0316635d9515b960e11b179052915163f28dceb360e01b8152939b509199506000805160206201e5a5833981519152965063f28dceb39550620038ee9450909250016200b162565b600060405180830381600087803b1580156200390957600080fd5b505af11580156200391e573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526000805160206201e5a5833981519152925063ca669fa79150602401600060405180830381600087803b1580156200399357600080fd5b505af1158015620039a8573d6000803e3d6000fd5b5050602554604051631d26c38160e31b81526001600160a01b03909116925063e9361c08915062003a049085907f000000000000000000000000000000000000000000000000000000000000000090899089906004016200b291565b600060405180830381600087803b15801562003a1f57600080fd5b505af115801562003a34573d6000803e3d6000fd5b505050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562003b1057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162003ad15790505b5050505050815250508152602001906001019062003a63565b601d54601e54670de0b6b3a76400009160079160029160009162003b61916001600160a01b0390811691168662800000878762006467565b6040805160048082526024820183526020820180516001600160e01b031663b33f8ab960e01b179052915163f28dceb360e01b81529293506000805160206201e5a58339815191529263f28dceb39262003bbd9291016200b162565b600060405180830381600087803b15801562003bd857600080fd5b505af115801562003bed573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062003c239084906004016200ac57565b6000604051808303816000875af115801562003c43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c6d91908101906200ae78565b5050601e54601d5462003c9a95506001600160a01b03918216945016915087905062800000878762006467565b905062003ca96001846200b1b3565b62ffffff1667ffffffffffffffff81111562003cc95762003cc96200ad94565b60405190808252806020026020018201604052801562003cf3578160200160208202803683370190505b506101208201526040805160048082526024820183526020820180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201e5a58339815191529263f28dceb39262003d54929091016200b162565b600060405180830381600087803b15801562003d6f57600080fd5b505af115801562003d84573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062003dba9084906004016200ac57565b6000604051808303816000875af115801562003dda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003e0491908101906200ae78565b5050601e54601d5462003e3195506001600160a01b03918216945016915087905062800000878762006467565b905062003e406001846200b1b3565b62ffffff1667ffffffffffffffff81111562003e605762003e606200ad94565b60405190808252806020026020018201604052801562003e8a578160200160208202803683370190505b506101608201526040805160048082526024820183526020820180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201e5a58339815191529263f28dceb39262003eeb929091016200b162565b600060405180830381600087803b15801562003f0657600080fd5b505af115801562003f1b573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062003f519084906004016200ac57565b6000604051808303816000875af115801562003f71573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f9b91908101906200ae78565b5050601e54601d5462003fc895506001600160a01b03918216945016915087905062800000878762006467565b905062003fda62ffffff60016200b14c565b60e0820181905261010082015160408051602481019390935260448084019290925280518084039092018252606490920182526020810180516001600160e01b031663197a55c760e11b179052905163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb3916200405991906004016200b162565b600060405180830381600087803b1580156200407457600080fd5b505af115801562004089573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620040bf9084906004016200ac57565b6000604051808303816000875af1158015620040df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200410991908101906200ae78565b5050601e54601d546200413695506001600160a01b03918216945016915087905062800000878762006467565b90506200414862ffffff60016200b14c565b610100820181905260e08201516040516000805160206201e5a58339815191529263f28dceb39263197a55c760e11b926200418f9290602401918252602082015260400190565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620041d6916004016200b162565b600060405180830381600087803b158015620041f157600080fd5b505af115801562004206573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a91506200423c9084906004016200ac57565b6000604051808303816000875af11580156200425c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200428691908101906200ae78565b5050601e54601d54620042b395506001600160a01b03918216945016915087905062800000878762006467565b90506001620042c5628000006200b2de565b620042d191906200b2fd565b816101200151600081518110620042ec57620042ec6200b0ed565b602090810291909101015260405160001960248201526000805160206201e5a58339815191529063f28dceb3906370a82e6160e11b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200436c916004016200b162565b600060405180830381600087803b1580156200438757600080fd5b505af11580156200439c573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620043d29084906004016200ac57565b6000604051808303816000875af1158015620043f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200441c91908101906200ae78565b5050601e54601d546200444995506001600160a01b03918216945016915087905062800000878762006467565b90506280000062ffffff168161012001516000815181106200446f576200446f6200b0ed565b60209081029190910101526000805160206201e5a583398151915263f28dceb36370a82e6160e11b620044a762ffffff60016200b14c565b604051602401620044ba91815260200190565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004501916004016200b162565b600060405180830381600087803b1580156200451c57600080fd5b505af115801562004531573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620045679084906004016200ac57565b6000604051808303816000875af115801562004587573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620045b191908101906200ae78565b5050601e54601d54620045de95506001600160a01b03918216945016915087905062800000878762006467565b9050620045f0600a628000006200b1b3565b62ffffff1660e082018190526005610100830181905260408051602481019390935260448301919091526280000060648084019190915281518084039091018152608490920181526020820180516001600160e01b0316637d50edab60e11b1790525163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb3916200468391906004016200b162565b600060405180830381600087803b1580156200469e57600080fd5b505af1158015620046b3573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620046e99084906004016200ac57565b6000604051808303816000875af115801562004709573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200473391908101906200ae78565b50505050505062800000600a6200474b91906200af7e565b62ffffff1660e0820181905261010082015160408051602481019390935260448301919091526280000060648084019190915281518084039091018152608490920181526020820180516001600160e01b0316637d50edab60e11b1790525163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb391620047da91906004016200b162565b600060405180830381600087803b158015620047f557600080fd5b505af11580156200480a573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620048409084906004016200ac57565b6000604051808303816000875af115801562004860573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200488a91908101906200ae78565b5050601e54601d54620048b795506001600160a01b03918216945016915087905062800000878762006467565b905080606001516001620048cc91906200b14c565b60a0820181905260608201516000805160206201e5a58339815191529163f28dceb3916318ccfb7760e11b919062004907906002906200af1e565b60c08601516080870151604051602481019490945260448401929092526064830152608482015260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004978916004016200b162565b600060405180830381600087803b1580156200499357600080fd5b505af1158015620049a8573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a9150620049de9084906004016200ac57565b6000604051808303816000875af1158015620049fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004a2891908101906200ae78565b5050601e54601d5462004a5595506001600160a01b03918216945016915087905062800000878762006467565b90508060800151600162004a6a91906200b14c565b60c082015260a081015160608201516000805160206201e5a58339815191529163f28dceb3916318ccfb7760e11b919062004aa8906002906200af1e565b60c08601516080870151604051602481019490945260448401929092526064830152608482015260a40160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004b19916004016200b162565b600060405180830381600087803b15801562004b3457600080fd5b505af115801562004b49573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062004b7f9084906004016200ac57565b6000604051808303816000875af115801562004b9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004bc991908101906200ae78565b5050601e54601d5462004bf695506001600160a01b03918216945016915087905062800000878762006467565b905062004c056107d062007f1f565b6101c08101516040805160248101929092524260448084019190915281518084039091018152606490920181526020820180516001600160e01b031663dae7ca7d60e01b1790525163f28dceb360e01b81526000805160206201e5a58339815191529163f28dceb39162004c7d91906004016200b162565b600060405180830381600087803b15801562004c9857600080fd5b505af115801562004cad573d6000803e3d6000fd5b50506025546040516351e3938d60e11b81526001600160a01b03909116925063a3c7271a915062004ce39084906004016200ac57565b6000604051808303816000875af115801562004d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200108891908101906200ae78565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004d6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d9491906200af34565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562004dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004dfd91906200af34565b905062004e0c828b8862007cce565b62004e19818b8762007cce565b600062004e27858562002c79565b905060008167ffffffffffffffff81111562004e475762004e476200ad94565b60405190808252806020026020018201604052801562004e71578160200160208202803683370190505b50905060005b8281101562004f7057600062004e8f8b838962003312565b905060008b62ffffff168262ffffff161015801562004eb1575060008960ff16115b62004ebe57600062004edf565b62004edf62004ed960ff8b16670de0b6b3a76400006200b135565b62007f96565b905060008c62ffffff168362ffffff161115801562004f01575060008960ff16115b62004f0e57600062004f29565b62004f2962004ed960ff8b16670de0b6b3a76400006200b135565b905062004f3882828562007fc2565b85858151811062004f4d5762004f4d6200b0ed565b6020026020010181815250505050508062004f68906200b103565b905062004e77565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201e5a5833981519152906306447d5690602401600060405180830381600087803b15801562004fc257600080fd5b505af115801562004fd7573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af11580156200502b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200505191906200b1d2565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af1158015620050a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050c891906200b1d2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200512857600080fd5b505af11580156200513d573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162005173939291906200b320565b6000604051808303816000875af115801562005193573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620051bd91908101906200b386565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562001f7a57838290600052602060002001805462005214906200b177565b80601f016020809104026020016040519081016040528092919081815260200182805462005242906200b177565b8015620052935780601f10620052675761010080835404028352916020019162005293565b820191906000526020600020905b8154815290600101906020018083116200527557829003601f168201915b505050505081526020019060010190620051f2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620052f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200531e91906200b3da565b9998505050505050505050565b60075460009060ff161562005344575060075460ff1690565b604051630667f9d760e41b81526000805160206201e5a5833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620053b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053de91906200af9d565b1415905090565b602554602254601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af11580156200544f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200547591906200af34565b5060248054604051634cd161d360e01b8152600a60048201526000928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b158015620054c557600080fd5b505af1158015620054da573d6000803e3d6000fd5b5050602554604080516001600160a01b039092166024830152600a60448084019190915281518084039091018152606490920181526020820180516001600160e01b03166304fc2fe760e11b1790525163f28dceb360e01b81526000805160206201e5a5833981519152935063f28dceb392506200555c91906004016200b162565b600060405180830381600087803b1580156200557757600080fd5b505af11580156200558c573d6000803e3d6000fd5b5050602554602154601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a60648201529116925063659ac74b91506084016020604051808303816000875af1158015620055fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb991906200af34565b601c54601d54670de0b6b3a76400009160079160029160009162005658916001600160a01b0390811691168662800000878762006467565b60255460608201516040516323bf0acb60e21b81529293506000928392839283926001600160a01b0390921691638efc2b2c91906200569c9089906004016200ac57565b60006040518083038185885af1158015620056bb573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620056e691908101906200ae78565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a6044840152979b5095995091975095506000949093169263704037bd92506064019050608060405180830381865afa1580156200575a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200578091906200afc8565b602001516025546040516339612d9560e21b81526001600160a01b0391821660048201526001602482015291925082169063e584b65490604401600060405180830381600087803b158015620057d557600080fd5b505af1158015620057ea573d6000803e3d6000fd5b5050601d546040516370a0823160e01b8152306004820152479350600092506001600160a01b03909116906370a0823190602401602060405180830381865afa1580156200583c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200586291906200af9d565b602554601d546040516381c2fdfb60e01b815292935060009283926001600160a01b03908116926381c2fdfb92620058b09290911690600a90869081908e908e90309042906004016200b228565b60408051808303816000875af1158015620058cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620058f591906200b0c8565b915091506200593d818a600a6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a3100000081525062007d2f565b620059818289600a6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a3200000081525062007d2f565b620059ce476200599283876200b14c565b6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a33000000815250620065ff565b601d546040516370a0823160e01b815230600482015262005a88916001600160a01b0316906370a0823190602401602060405180830381865afa15801562005a1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005a4091906200af9d565b62005a4c84866200b14c565b6040518060400160405280601d81526020017f746573745f52656d6f76654c69717569646974794e41544956453a3a34000000815250620065ff565b50505050505050505050505050565b6040805160048082526024820183526020820180516001600160e01b0316636c8cb79360e01b179052915163f28dceb360e01b81526000805160206201e5a58339815191529263f28dceb39262005af1929091016200b162565b600060405180830381600087803b15801562005b0c57600080fd5b505af115801562005b21573d6000803e3d6000fd5b5050602554604051600093506001600160a01b039091169150670de0b6b3a7640000908381818185875af1925050503d806000811462005b7e576040519150601f19603f3d011682016040523d82523d6000602084013e62005b83565b606091505b5050601c5490915062005ba8906001600160a01b0316670de0b6b3a764000062007dd9565b601c5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201e5a58339815191529063ca669fa790602401600060405180830381600087803b15801562005bfd57600080fd5b505af115801562005c12573d6000803e3d6000fd5b50506025546040516001600160a01b039091169250670de0b6b3a76400009150600081818185875af1925050503d806000811462005c6d576040519150601f19603f3d011682016040523d82523d6000602084013e62005c72565b606091505b50508091505062000cb9816040518060400160405280601581526020017f746573745f526563656976654e41544956453a3a31000000000000000000000081525062008000565b606060138054806020026020016040519081016040528092919081815260200182805480156200194a576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200192b575050505050905090565b601d54601c54670de0b6b3a76400009160079160029160009162005d53916001600160a01b0390811691168662800000878762006467565b6040805160048082526024820183526020820180516001600160e01b031663b33f8ab960e01b179052915163f28dceb360e01b81529293506000805160206201e5a58339815191529263f28dceb39262005daf9291016200b162565b600060405180830381600087803b15801562005dca57600080fd5b505af115801562005ddf573d6000803e3d6000fd5b505060255460808401516040516323bf0acb60e21b81526001600160a01b039092169350638efc2b2c92509062005e1b9085906004016200ac57565b60006040518083038185885af115801562005e3a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262005e6591908101906200ae78565b5050601e54601d5462005e9295506001600160a01b03918216945016915087905062800000878762006467565b805160208083015160608401516080850151604080516001600160a01b03968716602482015295909316604486015260648501919091526084840181905260a4808501919091528151808503909101815260c4909301815290820180516001600160e01b031663d0a4f13b60e01b1790525163f28dceb360e01b81529192506000805160206201e5a58339815191529163f28dceb39162005f36916004016200b162565b600060405180830381600087803b15801562005f5157600080fd5b505af115801562005f66573d6000803e3d6000fd5b505060255460808401516040516323bf0acb60e21b81526001600160a01b039092169350638efc2b2c92509062005fa29085906004016200ac57565b60006040518083038185885af115801562005fc1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262005fec91908101906200ae78565b5050601c54601d546200601995506001600160a01b03918216945016915087905062800000878762006467565b805160208083015160608401516080850151604080516001600160a01b03968716602482015295909316604486015260648501919091526084840181905260a4808501919091528151808503909101815260c4909301815290820180516001600160e01b031663d0a4f13b60e01b1790525163f28dceb360e01b81529192506000805160206201e5a58339815191529163f28dceb391620060bd916004016200b162565b600060405180830381600087803b158015620060d857600080fd5b505af1158015620060ed573d6000803e3d6000fd5b505060255460808401516040516323bf0acb60e21b81526001600160a01b039092169350638efc2b2c925090620061299085906004016200ac57565b60006040518083038185885af115801562006148573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526200108891908101906200ae78565b670de0b6b3a7640000831115620061cd5760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064016200026b565b6000620061db838362002c79565b905060008167ffffffffffffffff811115620061fb57620061fb6200ad94565b60405190808252806020026020018201604052801562006225578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200624657620062466200ad94565b60405190808252806020026020018201604052801562006270578160200160208202803683370190505b50905060005b838110156200637e5760006200628e89838862003312565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620062e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200630a91906200af9d565b90508162ffffff168584815181106200632757620063276200b0ed565b602090810291909101015262006347818a670de0b6b3a764000062008064565b8484815181106200635c576200635c6200b0ed565b60200260200101818152505050508062006376906200b103565b905062006276565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201e5a58339815191529063ca669fa790602401600060405180830381600087803b158015620063d057600080fd5b505af1158015620063e5573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e91506200641d908d908d90879087906004016200b291565b6000604051808303816000875af11580156200643d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018e391908101906200b434565b62006505604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b600080600080620065198989898962008092565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff16815260200160008152602001620065978a87620083a190919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a001620065ee426103e86200b14c565b90529b9a5050505050505050505050565b6040516388b44c8560e01b81526000805160206201e5a5833981519152906388b44c859062006637908690869086906004016200b46d565b60006040518083038186803b1580156200665057600080fd5b505afa15801562006665573d6000803e3d6000fd5b50505050505050565b6040516365d5c13560e01b81526000805160206201e5a5833981519152906365d5c1359062006637908690869086906004016200b46d565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b600003620067a357601c546040516000805160206201e5a58339815191529163b4d6c782916001600160a01b03909116906200670c906200a685565b604051809103906000f08015801562006729573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200676e9291906200b48e565b600060405180830381600087803b1580156200678957600080fd5b505af11580156200679e573d6000803e3d6000fd5b505050505b6006604051620067b3906200a693565b60ff9091168152602001604051809103906000f080158015620067da573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03929092169190911790556040516006906200680c906200a693565b60ff9091168152602001604051809103906000f08015801562006833573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062006865906200a693565b60ff9091168152602001604051809103906000f0801580156200688c573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055604051601290620068be906200a693565b60ff9091168152602001604051809103906000f080158015620068e5573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062006917906200a693565b60ff9091168152602001604051809103906000f0801580156200693e573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b039290921691909117905560405160129062006970906200a693565b60ff9091168152602001604051809103906000f08015801562006997573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051620069c6906200a6a1565b604051809103906000f080158015620069e3573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201e5a58339815191529063c657c71890608401600060405180830381600087803b15801562006a8457600080fd5b505af115801562006a99573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006b1157600080fd5b505af115801562006b26573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006b9e57600080fd5b505af115801562006bb3573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006c2b57600080fd5b505af115801562006c40573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006cb857600080fd5b505af115801562006ccd573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006d4557600080fd5b505af115801562006d5a573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006dcc57600080fd5b505af115801562006de1573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b15801562006e6d57600080fd5b505af115801562006e82573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062006f09906200a6af565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562006f44573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162006f72906200a6bd565b6001600160a01b039091168152602001604051809103906000f08015801562006f9f573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562006ffe57600080fd5b505af115801562007013573d6000803e3d6000fd5b505050506200702162008465565b6200702d600a6200880e565b602454602b54601c546040516001600160a01b0393841693928316929091169062007058906200a6cb565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562007095573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620070d0906200a6d9565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200710d573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201e5a58339815191529063c657c71890608401600060405180830381600087803b158015620071ae57600080fd5b505af1158015620071c3573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b1580156200724f57600080fd5b505af115801562007264573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b158015620072f357600080fd5b505af115801562007308573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b1580156200739457600080fd5b505af1158015620073a9573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b1580156200743557600080fd5b505af11580156200744a573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201e5a5833981519152925063c657c7189150608401600060405180830381600087803b158015620074d657600080fd5b505af1158015620074eb573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562007546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200756c91906200b1d2565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620075c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620075ea91906200b1d2565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200766891906200b1d2565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620076c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620076e691906200b1d2565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200773e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200776491906200b1d2565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620077bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620077e291906200b1d2565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200783a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200786091906200b1d2565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620078b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620078de91906200b1d2565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007936573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200795c91906200b1d2565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620079b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620079da91906200b1d2565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007a32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a5891906200b1d2565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007ab0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ad691906200b1d2565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007b5491906200b1d2565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007bac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007bd291906200b1d2565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007c2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c5091906200b1d2565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007ca8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cb991906200b1d2565b62002c74838383600062008884565b600062007cec84848462008a7f565b9050620033686040518060400160405280600c81526020017f426f756e6420526573756c7400000000000000000000000000000000000000008152508262008c72565b604051637b88583160e11b81526000805160206201e5a58339815191529063f710b0629062007d699087908790879087906004016200b4b2565b60006040518083038186803b15801562007d8257600080fd5b505afa15801562007d97573d6000803e3d6000fd5b5050505050505050565b60405163d17d4b0d60e01b81526000805160206201e5a58339815191529063d17d4b0d9062006637908690869086906004016200b46d565b60405163c88a5e6d60e01b81526001600160a01b0383166004820152602481018290526000805160206201e5a58339815191529063c88a5e6d9060440162001dfd565b604051632f2769d160e01b81526000805160206201e5a583398151915290632f2769d19062006637908690869086906004016200b4d9565b6024805460405163659ac74b60e01b81526001600160a01b0387811660048301528681169382019390935262ffffff8516604482015261ffff841660648201526000929091169063659ac74b906084016020604051808303816000875af115801562007ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007eea91906200af34565b95945050505050565b8062ffffff8116811462007f1a57604051639b63641560e01b815260040160405180910390fd5b919050565b6000805160206201e5a583398151915263e5d6bf0262007f4083426200b14c565b6040518263ffffffff1660e01b815260040162007f5f91815260200190565b600060405180830381600087803b15801562007f7a57600080fd5b505af115801562007f8f573d6000803e3d6000fd5b5050505050565b8067ffffffffffffffff8116811462007f1a5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60405163a34edc0360e01b81526000805160206201e5a58339815191529063a34edc03906200803690859085906004016200b507565b60006040518083038186803b1580156200804f57600080fd5b505afa15801562001e2d573d6000803e3d6000fd5b600080600062008075868662008cbf565b9150915062008088868686858562008cde565b9695505050505050565b606080806000620080a56002876200b524565b62ffffff16600003620080fb5760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e7360448201526064016200026b565b60006200810a6002886200b549565b90508662ffffff1667ffffffffffffffff8111156200812d576200812d6200ad94565b60405190808252806020026020018201604052801562008157578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff8111156200817b576200817b6200ad94565b604051908082528060200260200182016040528015620081a5578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff811115620081c957620081c96200ad94565b604051908082528060200260200182016040528015620081f3578160200160208202803683370190505b5092506000620082058260016200af7e565b6200821e9062ffffff16670de0b6b3a76400006200b135565b905060006200822f8360016200af7e565b620082409062ffffff168c6200b135565b905060005b8962ffffff168110156200839257620082608960016200af7e565b620082719062ffffff16826200b56e565b6200827e8a60016200af7e565b6200828a90866200af54565b62008296908d6200b1b3565b62ffffff16620082a791906200b14c565b888281518110620082bc57620082bc6200b0ed565b6020026020010181815250508362ffffff168111620082f85782868281518110620082eb57620082eb6200b0ed565b6020026020010181815250505b8362ffffff1681106200837d57828782815181106200831b576200831b6200b0ed565b60200260200101818152505060008211620083385760006200836e565b6200836e6080620083658a84815181106200835757620083576200b0ed565b602002602001015162008d90565b84919062008d9f565b6200837a90866200b14c565b94505b8062008389816200b103565b91505062008245565b50505050945094509450949050565b6060825167ffffffffffffffff811115620083c057620083c06200ad94565b604051908082528060200260200182016040528015620083ea578160200160208202803683370190505b50905060005b83518110156200845e578262ffffff168482815181106200841557620084156200b0ed565b60200260200101516200842991906200b2fd565b8282815181106200843e576200843e6200b0ed565b60209081029190910101528062008455816200b103565b915050620083f0565b5092915050565b601c546001600160a01b031615620084da5760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620084c057600080fd5b505af1158015620084d5573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200854f5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200853557600080fd5b505af11580156200854a573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620085c45760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620085aa57600080fd5b505af1158015620085bf573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620086395760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200861f57600080fd5b505af115801562008634573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620086ae5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200869457600080fd5b505af1158015620086a9573d6000803e3d6000fd5b505050505b6020546001600160a01b031615620087235760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200870957600080fd5b505af11580156200871e573d6000803e3d6000fd5b505050505b6021546001600160a01b031615620087985760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200877e57600080fd5b505af115801562008793573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620027b35760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620087f357600080fd5b505af115801562008808573d6000803e3d6000fd5b50505050565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee803906101240162007f5f565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620088da916200b588565b600060405180830381855afa9150503d806000811462008917576040519150601f19603f3d011682016040523d82523d6000602084013e6200891c565b606091505b509150506000818060200190518101906200893891906200af9d565b905062008972846200896b87620089646370a0823160e01b6200895d600c8d62008dcb565b9062008df1565b9062008e0f565b9062008e38565b821562001e2d5760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b03891691620089bd91906200b588565b600060405180830381855afa9150503d8060008114620089fa576040519150601f19603f3d011682016040523d82523d6000602084013e620089ff565b606091505b5091505060008180602001905181019062008a1b91906200af9d565b90508286101562008a465762008a3286846200af1e565b62008a3e90826200af1e565b905062008a61565b62008a5283876200af1e565b62008a5e90826200b14c565b90505b62007d97816200896b6318160ddd60e01b6200895d600c8d62008dcb565b60008183111562008af95760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e000060648201526084016200026b565b82841015801562008b0a5750818411155b1562008b1857508262003368565b600062008b2684846200af1e565b62008b339060016200b14c565b90506003851115801562008b4657508481115b1562008b615762008b5885856200b14c565b91505062003368565b62008b7060036000196200af1e565b851015801562008b8c575062008b89856000196200af1e565b81115b1562008bac5762008ba0856000196200af1e565b62008b5890846200af1e565b8285111562008c0e57600062008bc384876200af1e565b9050600062008bd383836200b5a6565b90508060000362008bea5784935050505062003368565b600162008bf882886200b14c565b62008c0491906200af1e565b9350505062008c6a565b8385101562008c6a57600062008c2586866200af1e565b9050600062008c3583836200b5a6565b90508060000362008c4c5785935050505062003368565b62008c5881866200af1e565b62008c659060016200b14c565b935050505b509392505050565b62008cbb828260405160240162008c8b9291906200b5bd565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905262008e44565b5050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362008d045783838162008cfb5762008cfb6200b11f565b04905062007eea565b83821062008d25576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b600062002cc882600a62008e4f565b600060ff831684811b9061ffff6101008290031686901c90620080889087906001901b86858562008cde565b6005820180546001600160a01b0319166001600160a01b03831617905560008262003368565b60038201805463ffffffff191660e083901c17905560008262003368565b6002820180546001810182556000918252602082206001600160a01b0384169101558262003368565b62008cbb828262008e8c565b62000cb98162009299565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff190162007eea8282620092ba565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b946000939092909183018282801562008eff57602002820191906000526020600020905b81548152602001906001019080831162008eea575b5050505050905060008362008f148362009542565b60405160200162008f279291906200b5e1565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a16835281529281209194509092909162008f7b9186918891016200b614565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662008fb65762008fb487620095ef565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b031988168452825280832090519091839162008ff79187918991016200b614565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200903e91906200b588565b600060405180830381855afa9150503d80600081146200907b576040519150601f19603f3d011682016040523d82523d6000602084013e62009080565b606091505b5091506200909d905081620090978860206200b56e565b620095fc565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201e5a58339815191529063667f9d7090604401602060405180830381865afa158015620090ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200912591906200af9d565b9050808214620091dc5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200026b565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201e5a5833981519152906370ca10bb90606401600060405180830381600087803b1580156200923b57600080fd5b505af115801562009250573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200928560028b0160006200a6e7565b896004016000905550505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080600083600003620092d85750600160801b915062002cc89050565b50826000811215620092eb579015906000035b62100000811015620094fa57600160801b9250846fffffffffffffffffffffffffffffffff8111156200932057911591600019045b6001821615620093325792830260801c925b800260801c6002821615620093495792830260801c925b800260801c6004821615620093605792830260801c925b800260801c6008821615620093775792830260801c925b800260801c60108216156200938e5792830260801c925b800260801c6020821615620093a55792830260801c925b800260801c6040821615620093bc5792830260801c925b8002608090811c90821615620093d45792830260801c925b800260801c610100821615620093ec5792830260801c925b800260801c610200821615620094045792830260801c925b800260801c6104008216156200941c5792830260801c925b800260801c610800821615620094345792830260801c925b800260801c6110008216156200944c5792830260801c925b800260801c612000821615620094645792830260801c925b800260801c6140008216156200947c5792830260801c925b800260801c618000821615620094945792830260801c925b800260801c62010000821615620094ad5792830260801c925b800260801c62020000821615620094c65792830260801c925b800260801c62040000821615620094df5792830260801c925b800260801c62080000821615620094f85792830260801c925b505b826000036200952757604051631dba598d60e11b815260048101869052602481018590526044016200026b565b8162009534578262007eea565b62007eea836000196200b135565b60606000825160206200955691906200b56e565b67ffffffffffffffff8111156200957157620095716200ad94565b6040519080825280601f01601f1916602001820160405280156200959c576020820181803683370190505b50905060005b83518110156200845e576000848281518110620095c357620095c36200b0ed565b602002602001015190508082602002602001840152508080620095e6906200b103565b915050620095a2565b600062002cc8826200969e565b600080600060208551116200961357845162009616565b60205b905060005b818110156200969457620096318160086200b56e565b866200963e83886200b14c565b815181106200965157620096516200b0ed565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200968b816200b103565b9150506200961b565b5090949350505050565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200971057602002820191906000526020600020905b815481526020019060010190808311620096fb575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051959650949193506200975c925085918791016200b614565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615620097fb576001600160a01b0384166000908152602087815260408083206001600160e01b03198716845282528083209051909291620097cb9185918791016200b614565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362009809836200a540565b6040516020016200981c9291906200b5e1565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200988c57600080fd5b505af1158015620098a1573d6000803e3d6000fd5b50505050600080866001600160a01b031683604051620098c291906200b588565b600060405180830381855afa9150503d8060008114620098ff576040519150601f19603f3d011682016040523d82523d6000602084013e62009904565b606091505b509150620099219050816200991b8760206200b56e565b6200a5ed565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201e5a5833981519152906365bc9481906024016000604051808303816000875af11580156200997e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620099a891908101906200b650565b509050805160010362009d4c5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062009a005762009a006200b0ed565b60200260200101516040518363ffffffff1660e01b815260040162009a3a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009a7e91906200af9d565b90508062009ae9577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062009abe5762009abe6200b0ed565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462009b9e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c4016200026b565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162009bd69291906200b614565b604051602081830303815290604052805190602001208560008151811062009c025762009c026200b0ed565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062009c5c5762009c5c6200b0ed565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262009ca7918a918c91016200b614565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162009d11918a918c91016200b614565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200a3b5565b6001815111156200a3445760005b81518110156200a33d5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a85858151811062009dae5762009dae6200b0ed565b60200260200101516040518363ffffffff1660e01b815260040162009de89291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562009e06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009e2c91906200af9d565b90508062009e96577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58984848151811062009e6b5762009e6b6200b0ed565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b83811462009ea557506200a328565b82518119906000805160206201e5a5833981519152906370ca10bb908c9087908790811062009ed85762009ed86200b0ed565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b15801562009f3157600080fd5b505af115801562009f46573d6000803e3d6000fd5b50505050600060608b6001600160a01b03168860405162009f6891906200b588565b600060405180830381855afa9150503d806000811462009fa5576040519150601f19603f3d011682016040523d82523d6000602084013e62009faa565b606091505b50909250905062009fc2816200991b8c60206200b56e565b96505080801562009fd257508186145b156200a26a577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200a0109291906200b614565b604051602081830303815290604052805190602001208888815181106200a03b576200a03b6200b0ed565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200a094576200a0946200b0ed565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f16835284528082209051929390926200a0df918d918f91016200b614565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200a16c9291906200b614565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200a1ef576200a1ef6200b0ed565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a24857600080fd5b505af11580156200a25d573d6000803e3d6000fd5b505050505050506200a33d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200a2b2576200a2b26200b0ed565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200a30b57600080fd5b505af11580156200a320573d6000803e3d6000fd5b505050505050505b806200a334816200b103565b91505062009d5a565b506200a3b5565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e60648201526084016200026b565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200a3f99188918a91016200b614565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200a4965760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e000000000000000000000000000000000060648201526084016200026b565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200a4c760028a0160006200a6e7565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a168452825280832090519092916200a50d9188918a91016200b614565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b60606000825160206200a55491906200b56e565b67ffffffffffffffff8111156200a56f576200a56f6200ad94565b6040519080825280601f01601f1916602001820160405280156200a59a576020820181803683370190505b50905060005b83518110156200845e5760008482815181106200a5c1576200a5c16200b0ed565b6020026020010151905080826020026020018401525080806200a5e4906200b103565b9150506200a5a0565b600080600060208551116200a6045784516200a607565b60205b905060005b8181101562009694576200a6228160086200b56e565b866200a62f83886200b14c565b815181106200a642576200a6426200b0ed565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791806200a67c816200b103565b9150506200a60c565b610b08806200b6bc83390190565b610bfd806200c1c483390190565b610c18806200cdc183390190565b613199806200d9d983390190565b61615c8062010b7283390190565b614c808062016cce83390190565b612c13806201b94e83390190565b508054600082559060005260206000209081019062000cb991905b808211156200a71857600081556001016200a702565b5090565b6000602082840312156200a72f57600080fd5b81356001600160e01b0319811681146200336857600080fd5b803562ffffff8116811462007f1a57600080fd5b6000806000606084860312156200a77257600080fd5b833592506200a784602085016200a748565b91506200a794604085016200a748565b90509250925092565b6020808252825182820181905260009190848201906040850190845b818110156200a7e05783516001600160a01b0316835292840192918401916001016200a7b9565b50909695505050505050565b60005b838110156200a8095781810151838201526020016200a7ef565b50506000910152565b600081518084526200a82c8160208601602086016200a7ec565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200a8f657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200a8df57605f198985030183526200a8cc8486516200a812565b948e01949350918d01916001016200a8ad565b505050978a0197945050918801916001016200a867565b50919a9950505050505050505050565b803560ff8116811462007f1a57600080fd5b600080604083850312156200a92c57600080fd5b6200a937836200a906565b91506200a947602084016200a906565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200a9f857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200a9e25783516001600160e01b0319168252928b019260019290920191908b01906200a9b6565b50978a019795505050918701916001016200a978565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200aa6057603f198886030184526200aa4d8583516200a812565b945092850192908501906001016200aa2e565b5092979650505050505050565b6000806000606084860312156200aa8357600080fd5b6200aa8e846200a748565b9250602084013591506200a794604085016200a906565b6001600160a01b038116811462000cb957600080fd5b600080600080600080600080610100898b0312156200aad957600080fd5b88356200aae6816200aaa5565b975060208901356200aaf8816200aaa5565b965060408901356200ab0a816200aaa5565b95506200ab1a60608a016200a748565b94506080890135935060a089013592506200ab3860c08a016200a906565b91506200ab4860e08a016200a906565b90509295985092959890939650565b61ffff8116811462000cb957600080fd5b6000602082840312156200ab7b57600080fd5b813562003368816200ab57565b600080600080600080600060e0888a0312156200aba457600080fd5b87356200abb1816200aaa5565b965060208801356200abc3816200aaa5565b955060408801356200abd5816200aaa5565b94506200abe5606089016200a748565b9350608088013592506200abfc60a089016200a906565b91506200ac0c60c089016200a906565b905092959891949750929550565b600081518084526020808501945080840160005b838110156200ac4c578151875295820195908201906001016200ac2e565b509495945050505050565b602081526200ac726020820183516001600160a01b03169052565b600060208301516200ac8f60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200ad006102008601846200ac1a565b9250808601519050601f196101608187860301818801526200ad2385846200ac1a565b9450808801519250506101808187860301818801526200ad4485846200ac1a565b945080880151925050506101a06200ad66818701836001600160a01b03169052565b86015190506101c06200ad83868201836001600160a01b03169052565b959095015193019290925250919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200add6576200add66200ad94565b604052919050565b600067ffffffffffffffff8211156200adfb576200adfb6200ad94565b5060051b60200190565b600082601f8301126200ae1757600080fd5b815160206200ae306200ae2a836200adde565b6200adaa565b82815260059290921b840181019181810190868411156200ae5057600080fd5b8286015b848110156200ae6d57805183529183019183016200ae54565b509695505050505050565b60008060008060008060c087890312156200ae9257600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff808211156200aec757600080fd5b6200aed58a838b016200ae05565b935060a08901519150808211156200aeec57600080fd5b506200aefb89828a016200ae05565b9150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b8181038181111562002cc85762002cc86200af08565b6000602082840312156200af4757600080fd5b815162003368816200aaa5565b62ffffff8181168382160280821691908281146200af76576200af766200af08565b505092915050565b62ffffff8181168382160190808211156200845e576200845e6200af08565b6000602082840312156200afb057600080fd5b5051919050565b8051801515811462007f1a57600080fd5b6000608082840312156200afdb57600080fd5b6040516080810181811067ffffffffffffffff821117156200b001576200b0016200ad94565b60405282516200b011816200ab57565b815260208301516200b023816200aaa5565b60208201526200b036604084016200afb7565b60408201526200b049606084016200afb7565b60608201529392505050565b60006101206001600160a01b03808d168452808c16602085015261ffff8b1660408501528960608501528860808501528160a08501526200b099828501896200ac1a565b915083820360c08501526200b0af82886200ac1a565b951660e084015250506101000152979650505050505050565b600080604083850312156200b0dc57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b6000600182016200b118576200b1186200af08565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826200b147576200b1476200b11f565b500490565b8082018082111562002cc85762002cc86200af08565b6020815260006200336860208301846200a812565b600181811c908216806200b18c57607f821691505b6020821081036200b1ad57634e487b7160e01b600052602260045260246000fd5b50919050565b62ffffff8281168282160390808211156200845e576200845e6200af08565b6000602082840312156200b1e557600080fd5b62003368826200afb7565b60ff818116838216019081111562002cc85762002cc86200af08565b60ff828116828216039081111562002cc85762002cc86200af08565b60006101006001600160a01b03808c16845261ffff8b1660208501528960408501528860608501528160808501526200b264828501896200ac1a565b915083820360a08501526200b27a82886200ac1a565b951660c0840152505060e001529695505050505050565b60006001600160a01b038087168352808616602084015250608060408301526200b2bf60808301856200ac1a565b82810360608401526200b2d381856200ac1a565b979650505050505050565b6000600160ff1b82016200b2f6576200b2f66200af08565b5060000390565b81810360008312801583831316838312821617156200845e576200845e6200af08565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200b36d578551835294830194918301916001016200b34f565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200b39c57600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200b3c257600080fd5b6200b3d0868287016200ae05565b9150509250925092565b600080600080600080600080610100898b0312156200b3f857600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c089015191506200ab4860e08a016200afb7565b6000602082840312156200b44757600080fd5b815167ffffffffffffffff8111156200b45f57600080fd5b62007ff8848285016200ae05565b83815282602082015260606040820152600062007eea60608301846200a812565b6001600160a01b038316815260406020820152600062007ff860408301846200a812565b8481528360208201528260408201526080606082015260006200808860808301846200a812565b60006001600160a01b0380861683528085166020840152506060604083015262007eea60608301846200a812565b821515815260406020820152600062007ff860408301846200a812565b600062ffffff808416806200b53d576200b53d6200b11f565b92169190910692915050565b600062ffffff808416806200b562576200b5626200b11f565b92169190910492915050565b808202811582820484141762002cc85762002cc86200af08565b600082516200b59c8184602087016200a7ec565b9190910192915050565b6000826200b5b8576200b5b86200b11f565b500690565b6040815260006200b5d260408301856200a812565b90508260208301529392505050565b6001600160e01b03198316815281516000906200b6068160048501602087016200a7ec565b919091016004019392505050565b825160009082906020808701845b838110156200b640578151855293820193908201906001016200b622565b5050948252509092019392505050565b600080604083850312156200b66457600080fd5b825167ffffffffffffffff808211156200b67d57600080fd5b6200b68b868387016200ae05565b935060208501519150808211156200b6a257600080fd5b506200b6b1858286016200ae05565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400337465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a347465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a350000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a327465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a367465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a377465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a387465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a317465737446757a7a5f4164644c69717569646974794e6f536c6970706167653a3a33a26469706673582212200293c1d3f6ebb0398fdf3e3204c27d0dfb3572b4b034239c4532c9be4a3b0ce764736f6c63430008140033","sourceMap":"305:22704:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22917:12;;-1:-1:-1;;;22917:12:91;;;;22913:88;;;22945:45;;-1:-1:-1;;;22945:45:91;;216:2:105;22945:45:91;;;198:21:105;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:105;;;338:33;388:19;;22945:45:91;;;;;;;;22913:88;305:22704;;;;;10031:1531;;;;;;;;;;;;;:::i;5626:149:93:-;;;;;;;;;;-1:-1:-1;5626:149:93;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;874:14:105;;867:22;849:41;;837:2;822:18;5626:149:93;;;;;;;;381:664:91;;;;;;;;;;;;;:::i;2923:1618::-;;;;;;;;;;-1:-1:-1;2923:1618:91;;;;;:::i;:::-;;:::i;13480:2443::-;;;;;;;;;;;;;:::i;2452:134:5:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20774:829:91:-;;;;;;;;;;;;;:::i;3360:151:5:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15929:1962:91:-;;;;;;;;;;;;;:::i;1051:319::-;;;;;;;;;;;;;:::i;3221:133:5:-;;;;;;;;;;;;;:::i;2922:141::-;;;;;;;;;;;;;:::i;1376:632:91:-;;;;;;;;;;;;;:::i;12046:168:93:-;;;;;;;;;;-1:-1:-1;12046:168:93;;;;;:::i;:::-;;:::i;:::-;;;5079:25:105;;;5067:2;5052:18;12046:168:93;4933:177:105;2738:178:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19330:1438:91:-;;;;;;;;;;;;;:::i;2592:140:5:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;;;;;-1:-1:-1;12220:205:93;;;;;:::i;:::-;;:::i;:::-;;;8019:8:105;8007:21;;;7989:40;;7977:2;7962:18;12220:205:93;7845:190:105;21609:1261:91;;;;;;;;;;;;;:::i;3069:146:5:-;;;;;;;;;;;;;:::i;4547:5478:91:-;;;;;;;;;;;;;:::i;10071:1171:93:-;;;;;;;;;;-1:-1:-1;10071:1171:93;;;;;:::i;:::-;;:::i;2157:141:5:-;;;;;;;;;;;;;:::i;12431:134:93:-;;;;;;;;;;-1:-1:-1;12431:134:93;;;;;:::i;:::-;;:::i;1243:204:1:-;;;;;;;;;;;;;:::i;2489:428:91:-;;;;;;;;;;;;;:::i;17897:1427::-;;;;;;;;;;;;;:::i;2014:469::-;;;;;;;;;;;;;:::i;2304:142:5:-;;;;;;;;;;;;;:::i;11568:1906:91:-;;;;;;;;;;;;;:::i;11248:792:93:-;;;;;;;;;;-1:-1:-1;11248:792:93;;;;;:::i;:::-;;:::i;10031:1531:91:-;10266:7;;10275:4;;10103;;10136:1;;10160;;10083:17;;10243:72;;-1:-1:-1;;;;;10266:7:91;;;;10275:4;10103;992:7:93;10136:1:91;10160;10243:22;:72::i;:::-;10585:6;;10618:27;;;;10585:82;;-1:-1:-1;;;10585:82:91;;10172:143;;-1:-1:-1;10365:20:91;;;;;;;;;;;;-1:-1:-1;;;;;10585:6:91;;;;:25;;10618:27;10585:82;;10172:143;;10585:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10585:82:91;;;;;;;;;;;;:::i;:::-;10351:316;;;;;;;;;;;;10703:95;10712:12;10756:11;10726:19;:27;;;:41;;;;:::i;:::-;10703:95;;;;;;;;;;;;;;;;;:8;:95::i;:::-;10808;10817:12;10861:11;10831:19;:27;;;:41;;;;:::i;:::-;10808:95;;;;;;;;;;;;;;;;;:8;:95::i;:::-;10913:65;10922:11;10935:12;10913:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;10988;10997:11;11010:12;10988:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;11098:73;11107:15;:22;11131:9;11098:73;;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;11181:68;11190:10;:17;11209:9;11181:68;;;;;;;;;;;;;;;;;;;:8;:68::i;:::-;11299:6;;11319:3;;11324:7;;11299:59;;-1:-1:-1;;;11299:59:91;;-1:-1:-1;;;;;11319:3:91;;;11299:59;;;15416:34:105;11324:7:91;;;15466:18:105;;;15459:43;992:7:93;15518:18:105;;;15511:49;1147:2:93;15576:18:105;;;15569:47;11299:6:91;;;:19;;15327::105;;11299:59:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11414:3:91;;11419:7;;11391:71;;-1:-1:-1;;;;;11414:3:91;;;;11419:7;11428:9;992:7:93;11447:9:91;11458:3;11391:22;:71::i;:::-;11473:6;;11506:27;;;;11473:82;;-1:-1:-1;;;11473:82:91;;11369:93;;-1:-1:-1;;;;;;11473:6:91;;;;:25;;11506:27;11473:82;;11369:93;;11473:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11473:82:91;;;;;;;;;;;;:::i;:::-;;;;;;;10073:1489;;;;;;;;;;10031:1531::o;381:664::-;424:13;:11;:13::i;:::-;448:7;;;:50;;-1:-1:-1;;;448:50:91;;1147:2:93;448:50:91;;;16066:38:105;448:7:91;16120:18:105;;;16113:50;;;;-1:-1:-1;;;;;448:7:91;;:26;;16039:18:105;;448:50:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;543:6:91;;563:4;;569;;543:57;;-1:-1:-1;;;543:57:91;;-1:-1:-1;;;;;563:4:91;;;543:57;;;15416:34:105;569:4:91;;;15466:18:105;;;15459:43;992:7:93;15518:18:105;;;15511:49;1147:2:93;15576:18:105;;;15569:47;543:6:91;;;-1:-1:-1;543:19:91;;-1:-1:-1;15327:19:105;;543:57:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;610:6:91;;630:7;;639:4;;610:60;;-1:-1:-1;;;610:60:91;;-1:-1:-1;;;;;630:7:91;;;610:60;;;15416:34:105;639:4:91;;;15466:18:105;;;15459:43;992:7:93;15518:18:105;;;15511:49;1147:2:93;15576:18:105;;;15569:47;610:6:91;;;:19;;15327::105;;610:60:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;680:6:91;;700:8;;710:4;;680:61;;-1:-1:-1;;;680:61:91;;-1:-1:-1;;;;;700:8:91;;;680:61;;;15416:34:105;710:4:91;;;15466:18:105;;;15459:43;992:7:93;15518:18:105;;;15511:49;1147:2:93;15576:18:105;;;15569:47;680:6:91;;;:19;;15327::105;;680:61:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;818:4:91;;778:17;;805:51;;-1:-1:-1;;;;;818:4:91;833;778:17;805:4;:51::i;:::-;879:4;;866:51;;-1:-1:-1;;;;;879:4:91;894;901:15;866:4;:51::i;:::-;940:3;;927:50;;-1:-1:-1;;;;;940:3:91;954:4;961:15;927:4;:50::i;:::-;1000:4;;987:51;;-1:-1:-1;;;;;1000:4:91;1015;1022:15;987:4;:51::i;:::-;414:631;381:664::o;2923:1618::-;3042:42;3048:9;3059:5;3066:17;3042:5;:42::i;:::-;3030:54;;3113:24;3119:9;3113:24;;3130:1;3133:3;3113:5;:24::i;:::-;3094:44;-1:-1:-1;3160:13:91;3094:44;3172:1;3160:13;:::i;:::-;:17;;3176:1;3160:17;:::i;:::-;3148:29;;3200:17;3206:3;3200:17;;3211:1;3214:2;3200:5;:17::i;:::-;3323:4;;3329;;3187:31;;-1:-1:-1;3229:56:91;;3300:69;;-1:-1:-1;;;;;3323:4:91;;;;3329;3335:9;992:7:93;3354:9:91;3187:31;3300:22;:69::i;:::-;-1:-1:-1;;;;;3410:3:91;3379:34;;:28;;;:34;3683:6;;:40;;-1:-1:-1;;;3683:40:91;;3229:140;;-1:-1:-1;3463:20:91;;;;;;;;;;;;3683:6;;:19;;:40;;3229:140;;3683:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3683:40:91;;;;;;;;;;;;:::i;:::-;3449:274;;;;;;;;;;;;3759:103;3768:12;3812:11;3782:19;:27;;;:41;;;;:::i;:::-;3759:103;;;;;;;;;;;;;;;;;:8;:103::i;:::-;3872;3881:12;3925:11;3895:19;:27;;;:41;;;;:::i;:::-;3872:103;;;;;;;;;;;;;;;;;:8;:103::i;:::-;3985:73;3994:11;4007:12;3985:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;4068;4077:11;4090:12;4068:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;4161:4;;:19;;-1:-1:-1;;;4161:19:91;;-1:-1:-1;;;;;4176:3:91;18393:55:105;;4161:19:91;;;18375:74:105;4152:80:91;;4161:4;;:14;;18348:18:105;;4161:19:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4182:11;4152:80;;;;;;;;;;;;;;;;;:8;:80::i;:::-;4251:4;;:19;;-1:-1:-1;;;4251:19:91;;-1:-1:-1;;;;;4266:3:91;18393:55:105;;4251:19:91;;;18375:74:105;4242:80:91;;4251:4;;:14;;18348:18:105;;4251:19:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4272:11;4242:80;;;;;;;;;;;;;;;;;:8;:80::i;:::-;4367:81;4376:15;:22;4400:9;4367:81;;;;;;;;;;;;;;;;;;;:8;:81::i;:::-;4458:76;4467:10;:17;4486:9;4458:76;;;;;;;;;;;;;;;;;;;:8;:76::i;:::-;3020:1521;;;;;;;2923:1618;;;:::o;13480:2443::-;13712:4;;13718;;13549;;13582:1;;13606;;13529:17;;13689:69;;-1:-1:-1;;;;;13712:4:91;;;;13718;13549;992:7:93;13582:1:91;13606;13689:22;:69::i;:::-;13918:6;;:40;;-1:-1:-1;;;13918:40:91;;13618:140;;-1:-1:-1;13795:20:91;;;;;;;;-1:-1:-1;;;;;13918:6:91;;:19;;:40;;13618:140;;13918:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13918:40:91;;;;;;;;;;;;:::i;:::-;13984:7;;;14013:4;;14019;;13984:58;;-1:-1:-1;;;13984:58:91;;-1:-1:-1;;;;;14013:4:91;;;13984:58;;;18949:34:105;14019:4:91;;;18999:18:105;;;18992:43;;;;1147:2:93;19051:18:105;;;19044:47;13794:164:91;;-1:-1:-1;13794:164:91;;-1:-1:-1;13794:164:91;;-1:-1:-1;13794:164:91;-1:-1:-1;13969:12:91;;13984:7;;;;:28;;-1:-1:-1;18861:18:105;;;-1:-1:-1;13984:58:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;14087:6;;14060:41;;-1:-1:-1;;;14060:41:91;;-1:-1:-1;;;;;14087:6:91;;;14060:41;;;20257:74:105;14087:6:91;20347:18:105;;;20340:50;13984:65:91;;-1:-1:-1;14060:18:91;;;;;20230::105;;14060:41:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14155:6:91;;14191:4;;14197;;14155:141;;-1:-1:-1;;;14155:141:91;;14113:18;;-1:-1:-1;14113:18:91;;-1:-1:-1;;;;;;14155:6:91;;;;:22;;:141;;14191:4;;;;14197;;;1147:2:93;;14113:18:91;;;;14227:10;;14239:15;;14264:4;;14271:15;;14155:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14112:184;;;;14307:74;14325:10;14337:12;14351:2;14307:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;14391;14409:10;14421:12;14435:2;14391:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;14476:61;14485:10;14497:12;14476:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;14547;14556:10;14568:12;14547:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;14624:9;14619:157;14643:10;:17;14639:1;:21;14619:157;;;14681:84;14690:4;-1:-1:-1;;;;;14690:14:91;;14713:4;14720:10;14731:1;14720:13;;;;;;;;:::i;:::-;;;;;;;14690:44;;;;;;;;;;;;;;;-1:-1:-1;;;;;22120:55:105;;;;22102:74;;22207:2;22192:18;;22185:34;22090:2;22075:18;;21928:297;14690:44:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14736:1;14681:84;;;;;;;;;;;;;;;;;:8;:84::i;:::-;14662:3;;;;:::i;:::-;;;;14619:157;;;-1:-1:-1;14887:6:91;;:40;;-1:-1:-1;;;14887:40:91;;-1:-1:-1;;;;;14887:6:91;;;;:19;;:40;;14907:19;;14887:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14887:40:91;;;;;;;;;;;;:::i;:::-;14965:6;;15001:4;;15007;;14965:141;;-1:-1:-1;;;14965:141:91;;14825:102;;-1:-1:-1;14825:102:91;;-1:-1:-1;14825:102:91;;-1:-1:-1;14825:102:91;;-1:-1:-1;;;;;;14965:6:91;;;;:22;;:141;;-1:-1:-1;15001:4:91;;;;-1:-1:-1;15007:4:91;;;1147:2:93;;14965:6:91;;;;14825:102;;;;15074:4;;15081:15;;14965:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14938:168;;;;;;;;15117:74;15135:10;15147:12;15161:2;15117:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;15201;15219:10;15231:12;15245:2;15201:74;;;;;;;;;;;;;;;;;:17;:74::i;:::-;15394:6;;:40;;-1:-1:-1;;;15394:40:91;;-1:-1:-1;;;;;15394:6:91;;;;:19;;:40;;15414:19;;15394:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15394:40:91;;;;;;;;;;;;:::i;:::-;15332:102;;-1:-1:-1;15332:102:91;;-1:-1:-1;15332:102:91;;-1:-1:-1;15332:102:91;;-1:-1:-1;15450:9:91;;-1:-1:-1;;15445:116:91;15469:10;:17;15465:1;:21;15445:116;;;15549:1;15528:15;15544:1;15528:18;;;;;;;;:::i;:::-;;;;;;;:22;;;;:::i;:::-;15507:15;15523:1;15507:18;;;;;;;;:::i;:::-;;;;;;;;;;:43;15488:3;;;;:::i;:::-;;;;15445:116;;;-1:-1:-1;15598:6:91;;15634:4;;15640;;15598:141;;-1:-1:-1;;;15598:141:91;;-1:-1:-1;;;;;15598:6:91;;;;:22;;:141;;15634:4;;;;15640;;;1147:2:93;;15598:6:91;;;;15670:10;;15682:15;;15707:4;;15714:15;;15598:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15571:168;;-1:-1:-1;15571:168:91;-1:-1:-1;15750:78:91;15571:168;15780:16;15795:1;15780:12;:16;:::i;:::-;15798:2;15750:78;;;;;;;;;;;;;;;;;:17;:78::i;:::-;15838;15856:10;15868:16;15883:1;15868:12;:16;:::i;:::-;15886:2;15838:78;;;;;;;;;;;;;;;;;:17;:78::i;:::-;13519:2404;;;;;;;;;;;13480:2443::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;20774:829:91:-;20849:4;;20867:6;;20849:34;;-1:-1:-1;;;20849:34:91;;-1:-1:-1;;;;;20867:6:91;;;20849:34;;;22102:74:105;20835:4:91;22192:18:105;;;22185:34;;;20835:4:91;20849;;;;;:9;;22075:18:105;;20849:34:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20918:4:91;;:29;;-1:-1:-1;;;20918:29:91;;20941:4;20918:29;;;18375:74:105;20894:21:91;;-1:-1:-1;;;;;;20918:4:91;;;;-1:-1:-1;20918:14:91;;18348:18:105;;20918:29:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20957:6;;20970:4;;20957:41;;-1:-1:-1;;;20957:41:91;;-1:-1:-1;;;;;20970:4:91;;;20957:41;;;23140:34:105;20984:4:91;23190:18:105;;;23183:43;23242:18;;;23235:34;;;20894:53:91;;-1:-1:-1;20957:6:91;;:12;;23052:18:105;;20957:41:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21017:4:91;;:29;;-1:-1:-1;;;21017:29:91;;21040:4;21017:29;;;18375:74:105;21008:85:91;;-1:-1:-1;;;;;;21017:4:91;;;;-1:-1:-1;21017:14:91;;18348:18:105;;21017:29:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21048:22;21064:6;21048:13;:22;:::i;:::-;21008:85;;;;;;;;;;;;;;;;;:8;:85::i;:::-;21117:6;;21104:29;;-1:-1:-1;;;;;21117:6:91;21126;21104:4;:29::i;:::-;-1:-1:-1;21191:6:91;;:66;;-1:-1:-1;;;21191:66:91;;:6;:66;;;23140:34:105;21232:4:91;23190:18:105;;;23183:43;-1:-1:-1;;23242:18:105;;;23235:34;21160:21:91;;-1:-1:-1;;;;;21191:6:91;;:12;;23052:18:105;;21191:66:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21267:77;21276:21;21315:6;21299:13;:22;;;;:::i;:::-;21267:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;21391:4;;21409:6;;21391:34;;-1:-1:-1;;;21391:34:91;;-1:-1:-1;;;;;21409:6:91;;;21391:34;;;22102:74:105;22192:18;;;22185:34;;;21391:4:91;;;:9;;22075:18:105;;21391:34:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21451:68:91;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21451:68:91;-1:-1:-1;;;21451:68:91;;;21435:85;;-1:-1:-1;;;21435:85:91;;-1:-1:-1;;;;;;;;;;;21435:15:91;-1:-1:-1;21435:15:91;;-1:-1:-1;21435:85:91;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21530:15:91;;-1:-1:-1;;;21530:15:91;;-1:-1:-1;;;;;21539:5:91;18393:55:105;21530:15:91;;;18375:74:105;-1:-1:-1;;;;;;;;;;;21530:8:91;-1:-1:-1;21530:8:91;;-1:-1:-1;18348:18:105;;21530:15:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21555:6:91;;21568:4;;21555:41;;-1:-1:-1;;;21555:41:91;;-1:-1:-1;;;;;21568:4:91;;;21555:41;;;23140:34:105;21582:4:91;23190:18:105;;;23183:43;23242:18;;;23235:34;;;21555:6:91;;;-1:-1:-1;21555:12:91;;-1:-1:-1;23052:18:105;;21555:41:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20808:795;;20774:829::o;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;15929:1962:91:-;16168:4;;16174;;16005;;16038:1;;16062;;15985:17;;16145:69;;-1:-1:-1;;;;;16168:4:91;;;;16174;16005;992:7:93;16038:1:91;16062;16145:22;:69::i;:::-;16374:6;;:40;;-1:-1:-1;;;16374:40:91;;16074:140;;-1:-1:-1;16251:20:91;;;;;;;;-1:-1:-1;;;;;16374:6:91;;:19;;:40;;16074:140;;16374:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16374:40:91;;;;;;;;;;;;:::i;:::-;16440:7;;;16469:4;;16475;;16440:58;;-1:-1:-1;;;16440:58:91;;-1:-1:-1;;;;;16469:4:91;;;16440:58;;;18949:34:105;16475:4:91;;;18999:18:105;;;18992:43;;;;1147:2:93;19051:18:105;;;19044:47;16250:164:91;;-1:-1:-1;16250:164:91;;-1:-1:-1;16250:164:91;;-1:-1:-1;16250:164:91;-1:-1:-1;16425:12:91;;16440:7;;;;:28;;-1:-1:-1;18861:18:105;;;-1:-1:-1;16440:58:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;16542:6;;16515:41;;-1:-1:-1;;;16515:41:91;;-1:-1:-1;;;;;16542:6:91;;;16515:41;;;20257:74:105;16542:6:91;20347:18:105;;;20340:50;16440:65:91;;-1:-1:-1;16515:18:91;;;;;20230::105;;16515:41:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;16611:15:91;-1:-1:-1;16611:15:91;;-1:-1:-1;;;;16663:45:91;-1:-1:-1;16710:19:91;16728:1;16710:15;:19;:::i;:::-;16640:107;;;;;24611:25:105;;;;16731:15:91;24652:18:105;;;24645:34;24584:18;;16640:107:91;;;-1:-1:-1;;16640:107:91;;;;;;;;;;;;;;-1:-1:-1;;;;;16640:107:91;-1:-1:-1;;;;;;16640:107:91;;;;;;16611:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16767:6:91;;16803:4;;16809;;-1:-1:-1;;;;;16767:6:91;;;;-1:-1:-1;16767:22:91;;-1:-1:-1;16803:4:91;;;;16809;1147:2:93;16767:6:91;;16839:10;16851:15;16876:4;16883:19;16767:6;16883:15;:19;:::i;:::-;16767:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;16967:15:91;-1:-1:-1;16967:15:91;-1:-1:-1;;;17087:16:91;:12;17102:1;17087:16;:::i;:::-;16996:152;;;;;24927:25:105;;;;24968:18;;;24961:34;;;17119:1:91;25011:18:105;;;25004:45;25065:18;;;25058:34;;;24899:19;;16996:152:91;;;-1:-1:-1;;16996:152:91;;;;;;;;;;;;;;-1:-1:-1;;;;;16996:152:91;-1:-1:-1;;;;;;16996:152:91;;;;;;16967:191;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17168:6:91;;17204:4;;17222;;-1:-1:-1;;;;;17168:6:91;;;;-1:-1:-1;17168:22:91;;-1:-1:-1;17204:4:91;;;;17222;1147:2:93;17270:16:91;:12;17168:6;17270:16;:::i;:::-;17300:1;17315:10;17339:15;17376:4;17395:15;17168:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;17431:15:91;-1:-1:-1;17431:15:91;-1:-1:-1;;;309:37:0;17554:12:91;17568:16;:12;17583:1;17568:16;:::i;:::-;17460:152;;26507:4:105;26495:17;;;17460:152:91;;;26477:36:105;26529:18;;;26522:34;;;;26572:18;;;26565:34;26615:18;;;26608:34;;;26449:19;;17460:152:91;;;-1:-1:-1;;17460:152:91;;;;;;;;;;;;;;-1:-1:-1;;;;;17460:152:91;-1:-1:-1;;;;;;17460:152:91;;;;;;17431:191;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17632:6:91;;17668:4;;17686;;-1:-1:-1;;;;;17632:6:91;;;;-1:-1:-1;17632:22:91;;-1:-1:-1;17668:4:91;;;;17686;1147:2:93;17632:6:91;17749:16;:12;17632:6;17749:16;:::i;:::-;17779:10;17803:15;17840:4;17859:15;17632:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1051:319::-;1119:6;;:19;;;-1:-1:-1;;;1119:19:91;;;;1102:79;;-1:-1:-1;;;;;1119:6:91;;:17;;:19;;;;;;;;;;;;;;:6;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1149:7;;1102:79;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1149:7:91;;;;1102:8;:79::i;:::-;1208:6;;:21;;;-1:-1:-1;;;1208:21:91;;;;1191:83;;-1:-1:-1;;;;;1208:6:91;;:19;;:21;;;;;;;;;;;;;;:6;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1240:9;;1191:83;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1240:9:91;;;;1191:8;:83::i;:::-;1301:6;;:19;;;-1:-1:-1;;;1301:19:91;;;;1284:79;;-1:-1:-1;;;;;1301:6:91;;:17;;:19;;;;;;;;;;;;;;:6;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1331:7;;1284:79;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1331:7:91;;;;1284:8;:79::i;:::-;1051:319::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;1376:632:91:-;1427:7;;;:58;;-1:-1:-1;;;1427:58:91;;:7;:58;;;29078:34:105;;;1448:6:91;29128:18:105;;;29121:43;;;;29180:18;;;29173:43;;;1459:2:91;29232:18:105;;;29225:43;1463:5:91;29284:19:105;;;29277:44;29364:19;;;29357:44;;;1427:7:91;29417:19:105;;;29410:44;;;29470:19;;;29463:44;;;;29523:19;;;29516:51;;;;-1:-1:-1;;;;;1427:7:91;;:17;;29025:19:105;;1427:58:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1575:4:91;;1581;;1508:7;;-1:-1:-1;1496:9:91;;-1:-1:-1;1541:52:91;;-1:-1:-1;;;;;1575:4:91;;;;1581;1508:7;1575:4;1541:33;:52::i;:::-;1525:68;-1:-1:-1;1604:53:91;1617:3;;1525:68;1635:6;1640:1;1635:2;:6;:::i;:::-;1643:1;1646:4;1652:1;1655;1604:12;:53::i;:::-;1667:52;1680:3;1685;1690:6;1698:2;1702:4;1708;1714:1;1717;1667:12;:52::i;:::-;1730:53;1746:3;;1756:6;1764;1769:1;1764:2;:6;:::i;:::-;1772:4;1778:1;1781;1730:15;:53::i;:::-;1794:54;1807:3;1812;1817:6;1825:7;1834:1;1837:4;1843:1;1846;1794:12;:54::i;:::-;1872:4;;1859:39;;-1:-1:-1;;;;;1872:4:91;1887:3;1893:4;1859;:39::i;:::-;1909:13;;-1:-1:-1;;;1909:13:91;;-1:-1:-1;;;;;1918:3:91;18393:55:105;1909:13:91;;;18375:74:105;-1:-1:-1;;;;;;;;;;;1909:8:91;;;18348:18:105;;1909:13:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1932:4:91;;:36;;-1:-1:-1;;;1932:36:91;;-1:-1:-1;;;;;22120:55:105;;;1932:36:91;;;22102:74:105;1963:4:91;22192:18:105;;;22185:34;1932:4:91;;;;-1:-1:-1;1932:13:91;;-1:-1:-1;22075:18:105;;1932:36:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1979:22:91;;-1:-1:-1;;;1979:22:91;;1991:4;1979:22;;;30467:41:105;-1:-1:-1;;;;;1997:3:91;30544:55:105;;30524:18;;;30517:83;1979:11:91;;;;;30440:18:105;;1979:22:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1417:591;;1376:632::o;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19330:1438:91;19575:7;;19584:4;;19412;;19445:1;;19469;;19392:17;;19552:72;;-1:-1:-1;;;;;19575:7:91;;;;19584:4;19412;992:7:93;19445:1:91;19469;19552:22;:72::i;:::-;19763:6;;19796:27;;;;19763:82;;-1:-1:-1;;;19763:82:91;;19481:143;;-1:-1:-1;19661:20:91;;;;;;-1:-1:-1;;;;;19763:6:91;;;;:25;;19796:27;19763:82;;19481:143;;19763:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19763:82:91;;;;;;;;;;;;:::i;:::-;19871:7;;;19900;;19909:4;;19871:61;;-1:-1:-1;;;19871:61:91;;-1:-1:-1;;;;;19900:7:91;;;19871:61;;;18949:34:105;19909:4:91;;;18999:18:105;;;18992:43;;;;1147:2:93;19051:18:105;;;19044:47;19660:185:91;;-1:-1:-1;19660:185:91;;-1:-1:-1;19660:185:91;;-1:-1:-1;19856:12:91;;19871:7;;;;-1:-1:-1;19871:28:91;;-1:-1:-1;18861:18:105;;;-1:-1:-1;19871:61:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:68;;;19976:6;;19949:41;;-1:-1:-1;;;19949:41:91;;-1:-1:-1;;;;;19976:6:91;;;19949:41;;;20257:74:105;19976:6:91;20347:18:105;;;20340:50;19871:68:91;;-1:-1:-1;19949:18:91;;;;;20230::105;;19949:41:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;20045:15:91;-1:-1:-1;20045:15:91;;-1:-1:-1;;;;20097:45:91;-1:-1:-1;20144:19:91;20162:1;20144:15;:19;:::i;:::-;20074:107;;;;;24611:25:105;;;;20165:15:91;24652:18:105;;;24645:34;24584:18;;20074:107:91;;;-1:-1:-1;;20074:107:91;;;;;;;;;;;;;;-1:-1:-1;;;;;20074:107:91;-1:-1:-1;;;;;;20074:107:91;;;;;;20045:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20201:6:91;;20243:4;;-1:-1:-1;;;;;20201:6:91;;;;-1:-1:-1;20201:28:91;;-1:-1:-1;20243:4:91;1147:2:93;20201:6:91;;20273:10;20285:15;20318:4;20326:19;20201:6;20326:15;:19;:::i;:::-;20201:154;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;20433:12:91;:19;;-1:-1:-1;;;20433:19:91;;;;;;;20491:100;;;20571:4;20491:100;;;22102:74:105;22192:18;;;;22185:34;;;20491:100:91;;;;;;;;;;22075:18:105;;;;20491:100:91;;;;;;;-1:-1:-1;;;;;20491:100:91;-1:-1:-1;;;20491:100:91;;;20462:139;;-1:-1:-1;;;20462:139:91;;-1:-1:-1;;;;;;;;;;;20462:15:91;;;:139;;20491:100;20462:139;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20611:6:91;;20653:4;;20611:150;;-1:-1:-1;;;20611:150:91;;-1:-1:-1;;;;;20611:6:91;;;;-1:-1:-1;20611:28:91;;-1:-1:-1;20611:150:91;;20653:4;;;;1147:2:93;;20611:6:91;;;;20683:10;;20695:15;;20728:4;;20736:15;;20611:150;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;;;12220:205;;;;;;:::o;21609:1261:91:-;21750:4;;21756;;21656:56;;21727:54;;-1:-1:-1;;;;;21750:4:91;;;;21756;21762;992:7:93;21750:4:91;21656:56;21727:22;:54::i;:::-;21825:6;;-1:-1:-1;;;;;21825:6:91;21792:22;;;:40;;;21913;;-1:-1:-1;;;21913:40:91;;21656:125;;-1:-1:-1;21825:6:91;;;;;21913:19;;:40;;21656:125;;21913:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21913:40:91;;;;;;;;;;;;:::i;:::-;21979:7;;;22008:4;;22014;;21979:58;;-1:-1:-1;;;21979:58:91;;-1:-1:-1;;;;;22008:4:91;;;21979:58;;;18949:34:105;22014:4:91;;;18999:18:105;;;18992:43;;;;1147:2:93;19051:18:105;;;19044:47;21842:111:91;;-1:-1:-1;21842:111:91;;-1:-1:-1;21964:12:91;;-1:-1:-1;21979:7:91;;;-1:-1:-1;21979:28:91;;-1:-1:-1;18861:18:105;;;-1:-1:-1;21979:58:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;21964:80;;22055:31;22103:10;:17;22089:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22089:32:91;;22055:66;;22136:9;22131:127;22155:10;:17;22151:1;:21;22131:127;;;22213:4;-1:-1:-1;;;;;22213:14:91;;22228:3;22233:10;22244:1;22233:13;;;;;;;;:::i;:::-;;;;;;;22213:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;22120:55:105;;;;22102:74;;22207:2;22192:18;;22185:34;22090:2;22075:18;;21928:297;22213:34:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22193:14;22208:1;22193:17;;;;;;;;:::i;:::-;;;;;;;;;;:54;22174:3;;;;:::i;:::-;;;;22131:127;;;-1:-1:-1;22268:6:91;;:59;;-1:-1:-1;;;22268:59:91;;-1:-1:-1;;;;;22268:6:91;;;;:19;;:59;;22288:4;;22294:3;;22299:10;;22311:15;;22268:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22343:9;22338:212;22362:10;:17;22358:1;:21;22338:212;;;22400:139;22426:4;-1:-1:-1;;;;;22426:14:91;;22441:3;22446:10;22457:1;22446:13;;;;;;;;:::i;:::-;;;;;;;22426:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;22120:55:105;;;;22102:74;;22207:2;22192:18;;22185:34;22090:2;22075:18;;21928:297;22426:34:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22482:15;22498:1;22482:18;;;;;;;;:::i;:::-;;;;;;;22462:14;22477:1;22462:17;;;;;;;;:::i;:::-;;;;;;;:38;;;;:::i;:::-;22400:139;;;;;;;;;;;;;;;;;:8;:139::i;:::-;22381:3;;;;:::i;:::-;;;;22338:212;;;-1:-1:-1;22597:6:91;;:40;;-1:-1:-1;;;22597:40:91;;-1:-1:-1;;;;;22597:6:91;;;;:19;;:40;;22617:19;;22597:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22597:40:91;;;;;;;;;;;;:::i;:::-;22700:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22700:68:91;-1:-1:-1;;;22700:68:91;;;22684:85;;-1:-1:-1;;;22684:85:91;;22560:77;;-1:-1:-1;22560:77:91;;-1:-1:-1;;;;;;;;;;;;22684:15:91;-1:-1:-1;22684:15:91;;-1:-1:-1;22684:85:91;;-1:-1:-1;22700:68:91;;-1:-1:-1;22684:85:91;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22779:15:91;;-1:-1:-1;;;22779:15:91;;-1:-1:-1;;;;;22788:5:91;18393:55:105;22779:15:91;;;18375:74:105;-1:-1:-1;;;;;;;;;;;22779:8:91;-1:-1:-1;22779:8:91;;-1:-1:-1;18348:18:105;;22779:15:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22804:6:91;;:59;;-1:-1:-1;;;22804:59:91;;-1:-1:-1;;;;;22804:6:91;;;;-1:-1:-1;22804:19:91;;-1:-1:-1;22804:59:91;;22824:4;;22830:3;;22835:10;;22847:15;;22804:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21646:1224;;;;;21609:1261::o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4547:5478:91;4834:4;;4840;;4620;;4653:1;;4677;;4600:17;;4811:69;;-1:-1:-1;;;;;4834:4:91;;;;4840;4620;992:7:93;4653:1:91;4677;4811:22;:69::i;:::-;4907:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4907:68:91;-1:-1:-1;;;4907:68:91;;;4891:85;;-1:-1:-1;;;4891:85:91;;4740:140;;-1:-1:-1;;;;;;;;;;;;4891:15:91;;;:85;;4907:68;4891:85;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4986:6:91;;:40;;-1:-1:-1;;;4986:40:91;;-1:-1:-1;;;;;4986:6:91;;;;-1:-1:-1;4986:19:91;;-1:-1:-1;4986:40:91;;5006:19;;4986:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4986:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5148:4:91;;5154;;5125:69;;-1:-1:-1;;;;;;5148:4:91;;;;-1:-1:-1;5154:4:91;;-1:-1:-1;5160:9:91;;-1:-1:-1;992:7:93;5179:9:91;5190:3;5125:22;:69::i;:::-;5103:91;-1:-1:-1;5248:13:91;5260:1;5248:9;:13;:::i;:::-;5235:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5235:27:91;-1:-1:-1;5204:28:91;;;:58;5289:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5289:68:91;-1:-1:-1;;;5289:68:91;;;5273:85;;-1:-1:-1;;;5273:85:91;;-1:-1:-1;;;;;;;;;;;5273:15:91;;;:85;;5289:68;;5273:85;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5368:6:91;;:40;;-1:-1:-1;;;5368:40:91;;-1:-1:-1;;;;;5368:6:91;;;;-1:-1:-1;5368:19:91;;-1:-1:-1;5368:40:91;;5388:19;;5368:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5368:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5464:4:91;;5470;;5441:69;;-1:-1:-1;;;;;;5464:4:91;;;;-1:-1:-1;5470:4:91;;-1:-1:-1;5476:9:91;;-1:-1:-1;992:7:93;5495:9:91;5506:3;5441:22;:69::i;:::-;5419:91;-1:-1:-1;5570:13:91;5582:1;5570:9;:13;:::i;:::-;5556:28;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5556:28:91;-1:-1:-1;5520:33:91;;;:64;5611:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5611:68:91;-1:-1:-1;;;5611:68:91;;;5595:85;;-1:-1:-1;;;5595:85:91;;-1:-1:-1;;;;;;;;;;;5595:15:91;;;:85;;5611:68;;5595:85;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5690:6:91;;:40;;-1:-1:-1;;;5690:40:91;;-1:-1:-1;;;;;5690:6:91;;;;-1:-1:-1;5690:19:91;;-1:-1:-1;5690:40:91;;5710:19;;5690:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5690:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;5855:4:91;;5861;;5832:69;;-1:-1:-1;;;;;;5855:4:91;;;;-1:-1:-1;5861:4:91;;-1:-1:-1;5867:9:91;;-1:-1:-1;992:7:93;5886:9:91;5897:3;5832:22;:69::i;:::-;5810:91;-1:-1:-1;5949:29:91;5957:16;5977:1;5949:29;:::i;:::-;5911:35;;;:67;;;6176:30;;;;6018:202;;;;;;24611:25:105;;;;24652:18;;;;24645:34;;;;6018:202:91;;;;;;;;;;24584:18:105;;;;6018:202:91;;;;;;;-1:-1:-1;;;;;6018:202:91;-1:-1:-1;;;6018:202:91;;;5989:241;;-1:-1:-1;;;5989:241:91;;-1:-1:-1;;;;;;;;;;;5989:15:91;;;:241;;6018:202;5989:241;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6240:6:91;;:40;;-1:-1:-1;;;6240:40:91;;-1:-1:-1;;;;;6240:6:91;;;;-1:-1:-1;6240:19:91;;-1:-1:-1;6240:40:91;;6260:19;;6240:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6240:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6336:4:91;;6342;;6313:69;;-1:-1:-1;;;;;;6336:4:91;;;;-1:-1:-1;6342:4:91;;-1:-1:-1;6348:9:91;;-1:-1:-1;992:7:93;6367:9:91;6378:3;6313:22;:69::i;:::-;6291:91;-1:-1:-1;6425:29:91;6433:16;6453:1;6425:29;:::i;:::-;6392:30;;;:62;;;6534:47;6599:35;;;6494:202;;-1:-1:-1;;;;;;;;;;;6465:15:91;;;-1:-1:-1;;;6534:47:91;6494:202;;6392:62;6494:202;;24611:25:105;;;24667:2;24652:18;;24645:34;24599:2;24584:18;;24437:248;6494:202:91;;;;-1:-1:-1;;6494:202:91;;;;;;;;;;;;;;-1:-1:-1;;;;;6494:202:91;-1:-1:-1;;;;;;6494:202:91;;;;;;6465:241;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6716:6:91;;:40;;-1:-1:-1;;;6716:40:91;;-1:-1:-1;;;;;6716:6:91;;;;-1:-1:-1;6716:19:91;;-1:-1:-1;6716:40:91;;6736:19;;6716:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6716:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6851:4:91;;6857;;6828:69;;-1:-1:-1;;;;;;6851:4:91;;;;-1:-1:-1;6857:4:91;;-1:-1:-1;6863:9:91;;-1:-1:-1;992:7:93;6882:9:91;6893:3;6828:22;:69::i;:::-;6806:91;-1:-1:-1;6968:1:91;6941:24;992:7:93;6941:24:91;:::i;:::-;:28;;;;:::i;:::-;6907:19;:28;;;6936:1;6907:31;;;;;;;;:::i;:::-;;;;;;;;;;:62;6996:83;;-1:-1:-1;;6996:83:91;;;5079:25:105;-1:-1:-1;;;;;;;;;;;6980:15:91;;;-1:-1:-1;;;7019:40:91;5052:18:105;;6996:83:91;;;-1:-1:-1;;6996:83:91;;;;;;;;;;;;;;-1:-1:-1;;;;;6996:83:91;-1:-1:-1;;;;;;6996:83:91;;;;;;6980:100;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7090:6:91;;:40;;-1:-1:-1;;;7090:40:91;;-1:-1:-1;;;;;7090:6:91;;;;-1:-1:-1;7090:19:91;;-1:-1:-1;7090:40:91;;7110:19;;7090:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7090:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;7186:4:91;;7192;;7163:69;;-1:-1:-1;;;;;;7186:4:91;;;;-1:-1:-1;7192:4:91;;-1:-1:-1;7198:9:91;;-1:-1:-1;992:7:93;7217:9:91;7228:3;7163:22;:69::i;:::-;7141:91;;992:7:93;7283:15:91;;7242:19;:28;;;7271:1;7242:31;;;;;;;;:::i;:::-;;;;;;;;;;:57;-1:-1:-1;;;;;;;;;;;7310:15:91;-1:-1:-1;;;7391:29:91;7399:16;7419:1;7391:29;:::i;:::-;7326:95;;;;;;5079:25:105;;5067:2;5052:18;;4933:177;7326:95:91;;;;-1:-1:-1;;7326:95:91;;;;;;;;;;;;;;-1:-1:-1;;;;;7326:95:91;-1:-1:-1;;;;;;7326:95:91;;;;;;7310:112;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7432:6:91;;:40;;-1:-1:-1;;;7432:40:91;;-1:-1:-1;;;;;7432:6:91;;;;-1:-1:-1;7432:19:91;;-1:-1:-1;7432:40:91;;7452:19;;7432:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7432:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;7571:4:91;;7577;;7548:69;;-1:-1:-1;;;;;;7571:4:91;;;;-1:-1:-1;7577:4:91;;-1:-1:-1;7583:9:91;;-1:-1:-1;992:7:93;7602:9:91;7613:3;7548:22;:69::i;:::-;7526:91;-1:-1:-1;7665:11:91;7674:2;992:7:93;7665:11:91;:::i;:::-;7627:49;;:35;;;:49;;;7719:1;7686:30;;;:34;;;7760:224;;;;;;34193:25:105;;;;34234:18;;;34227:34;;;;992:7:93;34277:18:105;;;;34270:49;;;;7760:224:91;;;;;;;;;;34166:18:105;;;;7760:224:91;;;;;;;-1:-1:-1;;;;;7760:224:91;-1:-1:-1;;;7760:224:91;;;7731:263;-1:-1:-1;;;7731:263:91;;-1:-1:-1;;;;;;;;;;;7731:15:91;;;:263;;7760:224;7731:263;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8004:6:91;;:40;;-1:-1:-1;;;8004:40:91;;-1:-1:-1;;;;;8004:6:91;;;;-1:-1:-1;8004:19:91;;-1:-1:-1;8004:40:91;;8024:19;;8004:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8004:40:91;;;;;;;;;;;;:::i;:::-;;;;;;;992:7:93;8102:2:91;8093:11;;;;:::i;:::-;8055:49;;:35;;;:49;;;8300:30;;;;8144:224;;;;;;34193:25:105;;;;34234:18;;;34227:34;;;;992:7:93;34277:18:105;;;;34270:49;;;;8144:224:91;;;;;;;;;;34166:18:105;;;;8144:224:91;;;;;;;-1:-1:-1;;;;;8144:224:91;-1:-1:-1;;;8144:224:91;;;8115:263;-1:-1:-1;;;8115:263:91;;-1:-1:-1;;;;;;;;;;;8115:15:91;;;:263;;8144:224;8115:263;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8388:6:91;;:40;;-1:-1:-1;;;8388:40:91;;-1:-1:-1;;;;;8388:6:91;;;;-1:-1:-1;8388:19:91;;-1:-1:-1;8388:40:91;;8408:19;;8388:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8388:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8526:4:91;;8532;;8503:69;;-1:-1:-1;;;;;;8526:4:91;;;;-1:-1:-1;8532:4:91;;-1:-1:-1;8538:9:91;;-1:-1:-1;992:7:93;8557:9:91;8568:3;8503:22;:69::i;:::-;8481:91;;8615:19;:27;;;8645:1;8615:31;;;;:::i;:::-;8582:30;;;:64;;;8841:27;;;;-1:-1:-1;;;;;;;;;;;8657:15:91;;;-1:-1:-1;;;8726:49:91;8582:64;8841:31;;8871:1;;8841:31;:::i;:::-;8890:30;;;;8938:27;;;;8686:293;;;;;34561:25:105;;;;34602:18;;;34595:34;;;;34645:18;;;34638:34;34688:18;;;34681:34;34533:19;;8686:293:91;;;-1:-1:-1;;8686:293:91;;;;;;;;;;;;;;-1:-1:-1;;;;;8686:293:91;-1:-1:-1;;;;;;8686:293:91;;;;;;8657:332;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8999:6:91;;:40;;-1:-1:-1;;;8999:40:91;;-1:-1:-1;;;;;8999:6:91;;;;-1:-1:-1;8999:19:91;;-1:-1:-1;8999:40:91;;9019:19;;8999:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8999:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;9095:4:91;;9101;;9072:69;;-1:-1:-1;;;;;;9095:4:91;;;;-1:-1:-1;9101:4:91;;-1:-1:-1;9107:9:91;;-1:-1:-1;992:7:93;9126:9:91;9137:3;9072:22;:69::i;:::-;9050:91;;9184:19;:27;;;9214:1;9184:31;;;;:::i;:::-;9151:30;;;:64;9362:30;;;;9410:27;;;;-1:-1:-1;;;;;;;;;;;9226:15:91;;;-1:-1:-1;;;9295:49:91;9362:30;9410:31;;9440:1;;9410:31;:::i;:::-;9459:30;;;;9507:27;;;;9255:293;;;;;34561:25:105;;;;34602:18;;;34595:34;;;;34645:18;;;34638:34;34688:18;;;34681:34;34533:19;;9255:293:91;;;-1:-1:-1;;9255:293:91;;;;;;;;;;;;;;-1:-1:-1;;;;;9255:293:91;-1:-1:-1;;;;;;9255:293:91;;;;;;9226:332;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9568:6:91;;:40;;-1:-1:-1;;;9568:40:91;;-1:-1:-1;;;;;9568:6:91;;;;-1:-1:-1;9568:19:91;;-1:-1:-1;9568:40:91;;9588:19;;9568:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9568:40:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;9705:4:91;;9711;;9682:69;;-1:-1:-1;;;;;;9705:4:91;;;;-1:-1:-1;9711:4:91;;-1:-1:-1;9717:9:91;;-1:-1:-1;992:7:93;9736:9:91;9747:3;9682:22;:69::i;:::-;9660:91;;9762:11;9767:5;9762:4;:11::i;:::-;9899:28;;;;9812:146;;;;;;24611:25:105;;;;9929:15:91;24652:18:105;;;;24645:34;;;;9812:146:91;;;;;;;;;;24584:18:105;;;;9812:146:91;;;;;;;-1:-1:-1;;;;;9812:146:91;-1:-1:-1;;;9812:146:91;;;9783:185;-1:-1:-1;;;9783:185:91;;-1:-1:-1;;;;;;;;;;;9783:15:91;;;:185;;9812:146;9783:185;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9978:6:91;;:40;;-1:-1:-1;;;9978:40:91;;-1:-1:-1;;;;;9978:6:91;;;;-1:-1:-1;9978:19:91;;-1:-1:-1;9978:40:91;;9998:19;;9978:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9978:40:91;;;;;;;;;;;;:::i;10071:1171:93:-;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;18393:55:105;;11033:19:93;;;18375:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;18348:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;22120:55:105;;;11062:41:93;;;22102:74:105;22192:18;;;22185:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;22075:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;22120:55:105;;;11113:41:93;;;22102:74:105;22192:18;;;22185:34;;;11113:15:93;;;;;22075:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;36522:6:105;36510:19;;12532:26:93;;;36492:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;36465:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;22102:74:105;;;1398:17:1;22192:18:105;;;22185:34;1428:1:1;;1377:7;;22075:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2489:428:91:-;2533:6;;2553:4;;2559;;2533:57;;-1:-1:-1;;;2533:57:91;;-1:-1:-1;;;;;2553:4:91;;;2533:57;;;15416:34:105;2559:4:91;;;15466:18:105;;;15459:43;992:7:93;15518:18:105;;;15511:49;1147:2:93;15576:18:105;;;15569:47;2533:6:91;;;:19;;15327::105;;2533:57:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2601:7:91;;;:51;;-1:-1:-1;;;2601:51:91;;1147:2:93;2601:51:91;;;16066:38:105;2601:7:91;16120:18:105;;;16113:50;;;;-1:-1:-1;;;;;2601:7:91;;:26;;16039:18:105;;2601:51:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2795:6:91;;2692:142;;;-1:-1:-1;;;;;2795:6:91;;;2692:142;;;37654:74:105;1147:2:93;37744:18:105;;;;37737:47;;;;2692:142:91;;;;;;;;;;37627:18:105;;;;2692:142:91;;;;;;;-1:-1:-1;;;;;2692:142:91;-1:-1:-1;;;2692:142:91;;;2663:181;-1:-1:-1;;;2663:181:91;;-1:-1:-1;;;;;;;;;;;2663:15:91;-1:-1:-1;2663:15:91;;-1:-1:-1;2663:181:91;;2692:142;2663:181;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2854:6:91;;2874:3;;2879:4;;2854:56;;-1:-1:-1;;;2854:56:91;;-1:-1:-1;;;;;2874:3:91;;;2854:56;;;15416:34:105;2879:4:91;;;15466:18:105;;;15459:43;992:7:93;15518:18:105;;;15511:49;1147:2:93;15576:18:105;;;15569:47;2854:6:91;;;-1:-1:-1;2854:19:91;;-1:-1:-1;15327:19:105;;2854:56:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17897:1427::-;18135:7;;18144:4;;17972;;18005:1;;18029;;17952:17;;18112:72;;-1:-1:-1;;;;;18135:7:91;;;;18144:4;17972;992:7:93;18005:1:91;18029;18112:22;:72::i;:::-;18344:6;;18377:27;;;;18344:82;;-1:-1:-1;;;18344:82:91;;18041:143;;-1:-1:-1;18221:20:91;;;;;;;;-1:-1:-1;;;;;18344:6:91;;;;:25;;18377:27;18344:82;;18041:143;;18344:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18344:82:91;;;;;;;;;;;;:::i;:::-;18452:7;;;18481;;18490:4;;18452:61;;-1:-1:-1;;;18452:61:91;;-1:-1:-1;;;;;18481:7:91;;;18452:61;;;18949:34:105;18490:4:91;;;18999:18:105;;;18992:43;;;;1147:2:93;19051:18:105;;;19044:47;18220:206:91;;-1:-1:-1;18220:206:91;;-1:-1:-1;18220:206:91;;-1:-1:-1;18220:206:91;-1:-1:-1;18437:12:91;;18452:7;;;;:28;;-1:-1:-1;18861:18:105;;;-1:-1:-1;18452:61:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:68;;;18557:6;;18530:41;;-1:-1:-1;;;18530:41:91;;-1:-1:-1;;;;;18557:6:91;;;18530:41;;;20257:74:105;18557:6:91;20347:18:105;;;20340:50;18452:68:91;;-1:-1:-1;18530:18:91;;;;;20230::105;;18530:41:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18671:4:91;;:29;;-1:-1:-1;;;18671:29:91;;18694:4;18671:29;;;18375:74:105;18612:21:91;;-1:-1:-1;18582:27:91;;-1:-1:-1;;;;;;18671:4:91;;;;:14;;18348:18:105;;18671:29:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18757:6;;18799:4;;18757:150;;-1:-1:-1;;;18757:150:91;;18643:57;;-1:-1:-1;18712:19:91;;;;-1:-1:-1;;;;;18757:6:91;;;;:28;;:150;;18799:4;;;;1147:2:93;;18712:19:91;;;;18829:10;;18841:15;;18874:4;;18882:15;;18757:150;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18711:196;;;;18918:82;18936:12;18950;18964:2;18918:82;;;;;;;;;;;;;;;;;:17;:82::i;:::-;19010:81;19028:11;19041:12;19055:2;19010:81;;;;;;;;;;;;;;;;;:17;:81::i;:::-;19102:100;19111:21;19134:34;19156:12;19134:19;:34;:::i;:::-;19102:100;;;;;;;;;;;;;;;;;:8;:100::i;:::-;19221:4;;:29;;-1:-1:-1;;;19221:29:91;;19244:4;19221:29;;;18375:74:105;19212:105:91;;-1:-1:-1;;;;;19221:4:91;;:14;;18348:18:105;;19221:29:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19252:31;19272:11;19252:17;:31;:::i;:::-;19212:105;;;;;;;;;;;;;;;;;:8;:105::i;:::-;17942:1382;;;;;;;;;;;;;17897:1427::o;2014:469::-;2126:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2126:71:91;-1:-1:-1;;;2126:71:91;;;2110:88;;-1:-1:-1;;;2110:88:91;;-1:-1:-1;;;;;;;;;;;2110:15:91;;;:88;;2126:71;;2110:88;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2234:6:91;;2226:37;;2209:12;;-1:-1:-1;;;;;;2234:6:91;;;;-1:-1:-1;2254:4:91;;2209:12;2226:37;2209:12;2226:37;2254:4;2234:6;2226:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2310:7:91;;2208:55;;-1:-1:-1;2297:28:91;;-1:-1:-1;;;;;2310:7:91;2320:4;2297;:28::i;:::-;2352:7;;2335:26;;-1:-1:-1;;;2335:26:91;;-1:-1:-1;;;;;2352:7:91;;;2335:26;;;18375:74:105;-1:-1:-1;;;;;;;;;;;2335:8:91;;;18348:18:105;;2335:26:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2392:6:91;;2384:37;;-1:-1:-1;;;;;2392:6:91;;;;-1:-1:-1;2412:4:91;;-1:-1:-1;2384:37:91;;;;2412:4;2392:6;2384:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2371:50;;;;;2432:44;2443:7;2432:44;;;;;;;;;;;;;;;;;:10;:44::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11568:1906:91:-;11861:4;;11867:7;;11647:4;;11680:1;;11704;;11627:17;;11838:72;;-1:-1:-1;;;;;11861:4:91;;;;11867:7;11647:4;992:7:93;11680:1:91;11704;11838:22;:72::i;:::-;11937:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11937:68:91;-1:-1:-1;;;11937:68:91;;;11921:85;;-1:-1:-1;;;11921:85:91;;11767:143;;-1:-1:-1;;;;;;;;;;;;11921:15:91;;;:85;;11937:68;11921:85;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12016:6:91;;12049:27;;;;12016:82;;-1:-1:-1;;;12016:82:91;;-1:-1:-1;;;;;12016:6:91;;;;-1:-1:-1;12016:25:91;;-1:-1:-1;12049:27:91;12016:82;;12049:19;;12016:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12016:82:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;12197:4:91;;12203;;12174:69;;-1:-1:-1;;;;;;12197:4:91;;;;-1:-1:-1;12203:4:91;;-1:-1:-1;12209:9:91;;-1:-1:-1;992:7:93;12228:9:91;12239:3;12174:22;:69::i;:::-;12408:26;;12461;;;;;12506:27;;;;12551;;;;12283:354;;;-1:-1:-1;;;;;38343:15:105;;;12283:354:91;;;38325:34:105;38395:15;;;;38375:18;;;38368:43;38427:18;;;38420:34;;;;38470:18;;;38463:34;;;38513:19;;;;38506:35;;;;12283:354:91;;;;;;;;;;38236:19:105;;;;12283:354:91;;;;;;;-1:-1:-1;;;;;12283:354:91;-1:-1:-1;;;12283:354:91;;;12254:393;-1:-1:-1;;;12254:393:91;;12408:26;;-1:-1:-1;;;;;;;;;;;;12254:15:91;;;:393;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12657:6:91;;12690:27;;;;12657:82;;-1:-1:-1;;;12657:82:91;;-1:-1:-1;;;;;12657:6:91;;;;-1:-1:-1;12657:25:91;;-1:-1:-1;12690:27:91;12657:82;;12690:19;;12657:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12657:82:91;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;12851:7:91;;12860:4;;12828:72;;-1:-1:-1;;;;;;12851:7:91;;;;-1:-1:-1;12860:4:91;;-1:-1:-1;12866:9:91;;-1:-1:-1;992:7:93;12885:9:91;12896:3;12828:22;:72::i;:::-;13065:26;;13118;;;;;13163:27;;;;13208;;;;12940:354;;;-1:-1:-1;;;;;38343:15:105;;;12940:354:91;;;38325:34:105;38395:15;;;;38375:18;;;38368:43;38427:18;;;38420:34;;;;38470:18;;;38463:34;;;38513:19;;;;38506:35;;;;12940:354:91;;;;;;;;;;38236:19:105;;;;12940:354:91;;;;;;;-1:-1:-1;;;;;12940:354:91;-1:-1:-1;;;12940:354:91;;;12911:393;-1:-1:-1;;;12911:393:91;;13065:26;;-1:-1:-1;;;;;;;;;;;;12911:15:91;;;:393;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13385:6:91;;13418:27;;;;13385:82;;-1:-1:-1;;;13385:82:91;;-1:-1:-1;;;;;13385:6:91;;;;-1:-1:-1;13385:25:91;;-1:-1:-1;13418:27:91;13385:82;;13418:19;;13385:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13385:82:91;;;;;;;;;;;;:::i;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;38754:2:105;11461:73:93;;;38736:21:105;38793:2;38773:18;;;38766:30;38832:26;38812:18;;;38805:54;38876:18;;11461:73:93;38552:348:105;11461:73:93;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;39096:55:105;;;11821:26:93;;;39078:74:105;39200:8;39188:21;;39168:18;;;39161:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;39051:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;18393:55:105;;11974:14:93;;;18375:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;18348:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;7798:1036::-;8003:56;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8003:56:93;8072:20;8094:30;8126;8158:17;8191:52;8207:9;8218:7;8227:10;8239:3;8191:15;:52::i;:::-;8071:172;;;;;;;;8276:551;;;;;;;;8328:6;-1:-1:-1;;;;;8276:551:93;;;;;8356:6;-1:-1:-1;;;;;8276:551:93;;;;;1147:2;8276:551;;;;;;8424:9;8276:551;;;;8456:9;8276:551;;;;8491:1;8276:551;;;;8518:1;8276:551;;;;8550:7;8276:551;;;;;;8583:1;8276:551;;;;8608:30;8630:7;8608:3;:21;;:30;;;;:::i;:::-;8276:551;;;;;;;;;;;;;;-1:-1:-1;;;;;8740:3:93;8276:551;;;;;;;;;;;;;8794:22;:15;8812:4;8794:22;:::i;:::-;8276:551;;8254:573;7798:1036;-1:-1:-1;;;;;;;;;;;7798:1036:93:o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;12044:::-;12142:29;;-1:-1:-1;;;12142:29:1;;-1:-1:-1;;;;;;;;;;;12142:11:1;;;:29;;12154:4;;12160:5;;12167:3;;12142:29;;;:::i;2566:3054:93:-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;41836:4:105;41824:17;;;41806:36;;41794:2;41779:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;41836:4:105;41824:17;;;41806:36;;41794:2;41779:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;41836:4:105;41824:17;;;41806:36;;41794:2;41779:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;41836:4:105;41824:17;;;41806:36;;41794:2;41779:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;41836:4:105;41824:17;;;41806:36;;41794:2;41779:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;41836:4:105;41824:17;;;41806:36;;41794:2;41779:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;42464:74:105;42554:18;;;42547:30;;;;42613:1;42593:18;;;42586:29;42651:9;42631:18;;;42624:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;42678:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;42920:74:105;;;;43010:18;;;43003:30;;;;43049:18;;;43042:29;-1:-1:-1;;;43087:18:105;;;43080:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;43131:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;43373:74:105;;;;43463:18;;;43456:30;;;;43502:18;;;43495:29;-1:-1:-1;;;43540:18:105;;;43533:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;43584:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;43826:74:105;;;;43916:18;;;43909:30;;;;43955:18;;;43948:29;-1:-1:-1;;;43993:18:105;;;43986:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;44037:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;44279:74:105;;;;44369:18;;;44362:30;;;;44408:18;;;44401:29;-1:-1:-1;;;44446:18:105;;;44439:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;44490:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;44732:74:105;;;;44822:18;;;44815:30;;;;44861:18;;;44854:29;-1:-1:-1;;;44899:18:105;;;44892:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;44943:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;45185:74:105;45275:18;;;45268:30;45334:1;45314:18;;;45307:29;-1:-1:-1;;;45352:18:105;;;45345:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;45395:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;45637:74:105;45727:18;;;45720:30;45786:1;45766:18;;;45759:29;45824:10;45804:18;;;45797:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;45852:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;23158:15:105;;;23140:34;;23210:15;;;;23205:2;23190:18;;23183:43;23257:2;23242:18;;23235:34;23067:2;23052:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;18393:55:105;;;18375:74;;18363:2;18348:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;18375:74:105;;;;3824:7:93;;;;:31;;18348:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;46897:15:105;;;46879:34;;46949:15;;;46944:2;46929:18;;46922:43;47001:15;;;46996:2;46981:18;;46974:43;46806:2;46791:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;46897:15:105;;;46879:34;;46949:15;;;46944:2;46929:18;;46922:43;47001:15;;;46996:2;46981:18;;46974:43;46806:2;46791:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;47652:74:105;47742:18;;;47735:30;;;;47801:1;47781:18;;;47774:29;47839:8;47819:18;;;47812:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;47865:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;48107:74:105;48197:18;;;48190:30;48256:1;48236:18;;;48229:29;48294:8;48274:18;;;48267:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;48320:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;48562:74:105;48652:18;;;48645:30;;;;48711:1;48691:18;;;48684:29;48749:9;48729:18;;;48722:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;48776:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;49018:74:105;49108:18;;;49101:30;49167:2;49147:18;;;49140:30;49206:20;49186:18;;;49179:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;49244:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;49486:74:105;49576:18;;;49569:30;49635:1;49615:18;;;49608:29;49673:10;49653:18;;;49646:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;49701:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;49943:74:105;50033:18;;;50026:30;50092:1;50072:18;;;50065:29;50130:11;50110:18;;;50103:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;50159:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;22075:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;4729:4:93;;;:12;;22075:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;4789:4:93;;;:12;;22075:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;4849:4:93;;;:12;;22075:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;4909:4:93;;;:12;;22075:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;4969:4:93;;;:12;;22075:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5029:3:93;;;:11;;22075:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5088:8:93;;;:16;;22075:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5153:7:93;;;:15;;22075:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5214:4:93;;;:12;;22075:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5272:4:93;;;:12;;22075:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5330:4:93;;;:12;;22075:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5388:4:93;;;:12;;22075:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5446:4:93;;;:12;;22075:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5504:3:93;;;:11;;22075:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;22102:74:105;-1:-1:-1;;22192:18:105;;;22185:34;5561:8:93;;;:16;;22075:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;2915:199:10:-;2998:14;3033:19;3040:1;3043:3;3048;3033:6;:19::i;:::-;3024:28;;3062:45;;;;;;;;;;;;;;;;;;3100:6;3062:21;:45::i;16826:208:1:-;16979:48;;-1:-1:-1;;;16979:48:1;;-1:-1:-1;;;;;;;;;;;16979:20:1;;;:48;;17000:4;;17006:5;;17013:8;;17023:3;;16979:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16826:208;;;;:::o;14412:134::-;14510:29;;-1:-1:-1;;;14510:29:1;;-1:-1:-1;;;;;;;;;;;14510:11:1;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;26720:91:3:-;26787:17;;-1:-1:-1;;;26787:17:3;;-1:-1:-1;;;;;22120:55:105;;26787:17:3;;;22102:74:105;22192:18;;;22185:34;;;-1:-1:-1;;;;;;;;;;;26787:7:3;;;22075:18:105;;26787:17:3;21928:297:105;3570:134:1;3668:29;;-1:-1:-1;;;3668:29:1;;-1:-1:-1;;;;;;;;;;;3668:11:1;;;:29;;3680:4;;3686:5;;3693:3;;3668:29;;;:::i;7535:257:93:-;7729:7;;;:54;;-1:-1:-1;;;7729:54:93;;-1:-1:-1;;;;;15434:15:105;;;7729:54:93;;;15416:34:105;15486:15;;;15466:18;;;15459:43;;;;15550:8;15538:21;;15518:18;;;15511:49;15608:6;15596:19;;15576:18;;;15569:47;7674:14:93;;7729:7;;;;:20;;15327:19:105;;7729:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7704:81;7535:257;-1:-1:-1;;;;;7535:257:93:o;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;24604:93:3:-;-1:-1:-1;;;;;;;;;;;24659:7:3;24667:22;24685:4;24667:15;:22;:::i;:::-;24659:31;;;;;;;;;;;;;5079:25:105;;5067:2;5052:18;;4933:177;24659:31:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24604:93;:::o;8711:135:78:-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;1689:113:1:-;1771:24;;-1:-1:-1;;;1771:24:1;;-1:-1:-1;;;;;;;;;;;1771:13:1;;;:24;;1785:4;;1791:3;;1771:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:247:82;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;8840:1225:93:-;8991:20;;;9113:17;9159:14;9172:1;9159:10;:14;:::i;:::-;:19;;9177:1;9159:19;9155:92;;9194:42;;-1:-1:-1;;;9194:42:93;;52300:2:105;9194:42:93;;;52282:21:105;;;52319:18;;;52312:30;52378:34;52358:18;;;52351:62;52430:18;;9194:42:93;52098:356:105;9155:92:93;9257:13;9273:14;9286:1;9273:10;:14;:::i;:::-;9257:30;;9317:10;9303:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9303:25:93;;9297:31;;9369:10;9355:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9355:25:93;;9339:41;;9420:10;9406:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9406:25:93;-1:-1:-1;9390:41:93;-1:-1:-1;9441:23:93;9490:10;:6;9499:1;9490:10;:::i;:::-;9467:34;;;;363:4:64;9467:34:93;:::i;:::-;9441:60;-1:-1:-1;9511:20:93;9547:10;:6;9556:1;9547:10;:::i;:::-;9534:24;;;;:9;:24;:::i;:::-;9511:47;;9574:9;9569:490;9589:10;9585:14;;:1;:14;9569:490;;;9665:7;9669:3;9665:1;:7;:::i;:::-;9660:13;;;;:1;:13;:::i;:::-;9649:7;9653:3;9649:1;:7;:::i;:::-;9639:18;;:6;:18;:::i;:::-;9629:28;;:7;:28;:::i;:::-;:44;;;;;;:::i;:::-;9620:3;9624:1;9620:6;;;;;;;;:::i;:::-;;;;;;:53;;;;;9697:6;9692:11;;:1;:11;9688:84;;9742:15;9723:13;9737:1;9723:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9688:84;9794:6;9789:11;;:1;:11;9785:264;;9839:15;9820:13;9834:1;9820:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9900:1;9885:12;:16;:149;;10033:1;9885:149;;;9924:86;258:3:64;9979:30:93;10001:3;10005:1;10001:6;;;;;;;;:::i;:::-;;;;;;;9979:14;:30::i;:::-;9924:12;;:86;:30;:86::i;:::-;9872:162;;;;:::i;:::-;;;9785:264;9601:3;;;;:::i;:::-;;;;9569:490;;;;9145:920;;;8840:1225;;;;;;;;;:::o;685:365:94:-;805:27;875:11;:18;862:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;862:32:94;;848:46;;909:9;904:140;928:11;:18;924:1;:22;904:140;;;1024:7;1016:16;;991:11;1003:1;991:14;;;;;;;;:::i;:::-;;;;;;;984:49;;;;:::i;:::-;967:11;979:1;967:14;;;;;;;;:::i;:::-;;;;;;;;;;:66;948:3;;;;:::i;:::-;;;;904:140;;;;685:365;;;;:::o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;18375:74:105;6180:7:93;;;:21;;18348:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;18375:74:105;6253:7:93;;;:21;;18348:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;18375:74:105;6323:7:93;;;:21;;18348:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;18375:74:105;6393:7:93;;;:21;;18348:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;18375:74:105;6463:7:93;;;:21;;18348:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;18375:74:105;6533:7:93;;;:21;;18348:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;18375:74:105;6602:7:93;;;:21;;18348:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;18375:74:105;6675:7:93;;;:21;;18348:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6085:628::o;6719:422::-;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;29063:6:105;29096:15;;6788:346:93;;;29078:34:105;1202:5:93;29128:18:105;;;29121:43;;;1262:2:93;29180:18:105;;;29173:43;1318:3:93;29232:18:105;;;29225:43;29284:19;;;29277:44;;;;1446:6:93;29364:19:105;;;29357:44;1508:5:93;29417:19:105;;;29410:44;1581:7:93;29470:19:105;;;29463:44;6788:7:93;29523:19:105;;;29516:51;-1:-1:-1;;;;;6788:7:93;;:17;;29025:19:105;;6788:346:93;28624:949:105;27331:837:3;27501:38;;;-1:-1:-1;;;;;18393:55:105;;;27501:38:3;;;;18375:74:105;;;;27501:38:3;;;;;;;;;;18348:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;1646:1263:10:-;1730:14;1771:3;1764;:10;;1756:85;;;;-1:-1:-1;;;1756:85:10;;54953:2:105;1756:85:10;;;54935:21:105;54992:2;54972:18;;;54965:30;55031:34;55011:18;;;55004:62;55102:32;55082:18;;;55075:60;55152:19;;1756:85:10;54751:426:105;1756:85:10;2075:3;2070:1;:8;;:20;;;;;2087:3;2082:1;:8;;2070:20;2066:34;;;-1:-1:-1;2099:1:10;2092:8;;2066:34;2111:12;2126:9;2132:3;2126;:9;:::i;:::-;:13;;2138:1;2126:13;:::i;:::-;2111:28;;2334:1;2329;:6;;:18;;;;;2346:1;2339:4;:8;2329:18;2325:38;;;2356:7;2362:1;2356:3;:7;:::i;:::-;2349:14;;;;;2325:38;2382:15;2396:1;-1:-1:-1;;2382:15:10;:::i;:::-;2377:1;:20;;:46;;;;-1:-1:-1;2408:15:10;2422:1;-1:-1:-1;;2408:15:10;:::i;:::-;2401:4;:22;2377:46;2373:82;;;2439:15;2453:1;-1:-1:-1;;2439:15:10;:::i;:::-;2432:23;;:3;:23;:::i;2373:82::-;2559:3;2555:1;:7;2551:352;;;2578:12;2593:7;2597:3;2593:1;:7;:::i;:::-;2578:22;-1:-1:-1;2614:11:10;2628;2635:4;2578:22;2628:11;:::i;:::-;2614:25;;2657:3;2664:1;2657:8;2653:24;;2674:3;2667:10;;;;;;;2653:24;2712:1;2700:9;2706:3;2700;:9;:::i;:::-;:13;;;;:::i;:::-;2691:22;;2564:160;;2551:352;;;2738:3;2734:1;:7;2730:173;;;2757:12;2772:7;2778:1;2772:3;:7;:::i;:::-;2757:22;-1:-1:-1;2793:11:10;2807;2814:4;2757:22;2807:11;:::i;:::-;2793:25;;2836:3;2843:1;2836:8;2832:24;;2853:3;2846:10;;;;;;;2832:24;2879:9;2885:3;2879;:9;:::i;:::-;:13;;2891:1;2879:13;:::i;:::-;2870:22;;2743:160;;2730:173;1746:1163;1646:1263;;;;;:::o;10318:162::-;10402:71;10465:2;10469;10418:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10418:54:10;;;;;;;;;;;;;;-1:-1:-1;;;;;10418:54:10;-1:-1:-1;;;10418:54:10;;;10402:15;:71::i;:::-;10318:162;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;5781:146:93:-;5839:13;5872:48;5899:2;1147;5872:26;:48::i;4594:437:82:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;4574:156;9393:143;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;9648:133:10:-;9719:55;9766:7;9745:19;9719:55::i;812:217:70:-;886:13;623:6:64;1824:42:70;258:3:64;1824:42:70;;;;1823:72;-1:-1:-1;;;1805:90:70;2185:11;;;-1:-1:-1;;2178:35:70;1004:18;1805:90;2178:35;1004:8;:18::i;10966:1095:8:-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;22120:55:105;;11664:18:8;;;22102:74:105;22192:18;;;22185:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;22075:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;56801:2:105;11725:175:8;;;56783:21:105;56840:3;56820:18;;;56813:31;56880:34;56860:18;;;56853:62;56951:34;56931:18;;;56924:62;57023:34;57002:19;;;56995:63;-1:-1:-1;;;57074:19:105;;;57067:46;57130:19;;11725:175:8;56599:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;57380:55:105;;11920:24:8;;;57362:74:105;57452:18;;;57445:34;;;57495:18;;;57488:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;57335:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;9787:381:10:-;9885:14;;779:42;10059:2;10046:16;;9861:21;;9885:14;10046:16;779:42;10095:5;10084:68;10075:77;;10012:150;;9787:381;:::o;4113:3600:81:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:64;-1:-1:-1;4252:22:81;;-1:-1:-1;4252:22:81;4240:34;-1:-1:-1;4316:1:81;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:64;-1:-1:-1;4574:1:81;4601:34;4595:41;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:81;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:81;;;;;24611:25:105;;;24652:18;;;24645:34;;;24584:18;;7609:35:81;24437:248:105;7585:59:81;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:81;:::i;13395:393:8:-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;9110:115;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;1264:3304::-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;18393:55:105;;1990:25:8;;;18375:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;18348:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;22120:55:105;;;;22102:74;;22207:2;22192:18;;22185:34;22090:2;22075:18;;21928:297;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;22120:55:105;;;22102:74;;22192:18;;;22185:34;22075:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;56801:2:105;2268:187:8;;;56783:21:105;56840:3;56820:18;;;56813:31;56880:34;56860:18;;;56853:62;56951:34;56931:18;;;56924:62;57023:34;57002:19;;;56995:63;-1:-1:-1;;;57074:19:105;;;57067:46;57130:19;;2268:187:8;56599:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;58650:55:105;;;58632:74;;-1:-1:-1;;;;;;58742:33:105;;;58722:18;;;58715:61;;;;58792:18;;;58785:34;58850:2;58835:18;;58828:34;58619:3;58604:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;22120:55:105;;;;22102:74;;22207:2;22192:18;;22185:34;22090:2;22075:18;;21928:297;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;22120:55:105;;;22102:74;;22192:18;;;22185:34;22075:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;57380:55:105;;;3215:32:8;;;57362:74:105;57452:18;;;57445:34;57495:18;;;57488:34;;;57335:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;58650:55:105;;;58632:74;;-1:-1:-1;;;;;;58742:33:105;;;58722:18;;;58715:61;;;;58792:18;;;58785:34;58850:2;58835:18;;58828:34;58619:3;58604:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;57380:55:105;;;3941:29:8;;;57362:74:105;57452:18;;;57445:34;57495:18;;;57488:34;;;57335:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;57380:55:105;;;4033:29:8;;;57362:74:105;57452:18;;;57445:34;57495:18;;;57488:34;;;57335:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;59075:2:105;4107:74:8;;;59057:21:105;59094:18;;;59087:30;;;;59153:34;59133:18;;;59126:62;59224:34;59204:18;;;59197:62;59276:19;;4107:74:8;58873:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;59508:2:105;4202:162:8;;;59490:21:105;59547:2;59527:18;;;59520:30;59586:34;59566:18;;;59559:62;59657:17;59637:18;;;59630:45;59692:19;;4202:162:8;59306:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;418:286:105:-;476:6;529:2;517:9;508:7;504:23;500:32;497:52;;;545:1;542;535:12;497:52;571:23;;-1:-1:-1;;;;;;623:32:105;;613:43;;603:71;;670:1;667;660:12;901:161;968:20;;1028:8;1017:20;;1007:31;;997:59;;1052:1;1049;1042:12;1067:324;1142:6;1150;1158;1211:2;1199:9;1190:7;1186:23;1182:32;1179:52;;;1227:1;1224;1217:12;1179:52;1263:9;1250:23;1240:33;;1292:37;1325:2;1314:9;1310:18;1292:37;:::i;:::-;1282:47;;1348:37;1381:2;1370:9;1366:18;1348:37;:::i;:::-;1338:47;;1067:324;;;;;:::o;1528:681::-;1699:2;1751:21;;;1821:13;;1724:18;;;1843:22;;;1670:4;;1699:2;1922:15;;;;1896:2;1881:18;;;1670:4;1965:218;1979:6;1976:1;1973:13;1965:218;;;2044:13;;-1:-1:-1;;;;;2040:62:105;2028:75;;2158:15;;;;2123:12;;;;2001:1;1994:9;1965:218;;;-1:-1:-1;2200:3:105;;1528:681;-1:-1:-1;;;;;;1528:681:105:o;2214:250::-;2299:1;2309:113;2323:6;2320:1;2317:13;2309:113;;;2399:11;;;2393:18;2380:11;;;2373:39;2345:2;2338:10;2309:113;;;-1:-1:-1;;2456:1:105;2438:16;;2431:27;2214:250::o;2469:271::-;2511:3;2549:5;2543:12;2576:6;2571:3;2564:19;2592:76;2661:6;2654:4;2649:3;2645:14;2638:4;2631:5;2627:16;2592:76;:::i;:::-;2722:2;2701:15;-1:-1:-1;;2697:29:105;2688:39;;;;2729:4;2684:50;;2469:271;-1:-1:-1;;2469:271:105:o;2745:1765::-;2978:2;3030:21;;;3100:13;;3003:18;;;3122:22;;;2949:4;;2978:2;3163;;3181:18;;;;3218:1;3261:15;;;3246:31;;3242:40;;3305:15;;;2949:4;;3369:1112;3385:6;3380:3;3377:15;3369:1112;;;-1:-1:-1;;3454:22:105;;;3450:36;3438:49;;3510:13;;3597:9;;-1:-1:-1;;;;;3593:58:105;3578:74;;3691:11;;3685:18;3723:15;;;3716:27;;;3804:19;;3550:15;;;3836:24;;;4017:21;;;;3883:2;3965:17;;;3953:30;;3949:39;;;3907:15;;;;4062:1;4076:296;4092:8;4087:3;4084:17;4076:296;;;4198:2;4194:7;4185:6;4177;4173:19;4169:33;4162:5;4155:48;4230:42;4265:6;4254:8;4248:15;4230:42;:::i;:::-;4301:17;;;;4220:52;-1:-1:-1;4344:14:105;;;;4120:1;4111:11;4076:296;;;-1:-1:-1;;;4459:12:105;;;;4395:6;-1:-1:-1;;4424:15:105;;;;3411:1;3402:11;3369:1112;;;-1:-1:-1;4498:6:105;;2745:1765;-1:-1:-1;;;;;;;;;;2745:1765:105:o;4515:156::-;4581:20;;4641:4;4630:16;;4620:27;;4610:55;;4661:1;4658;4651:12;4676:252;4740:6;4748;4801:2;4789:9;4780:7;4776:23;4772:32;4769:52;;;4817:1;4814;4807:12;4769:52;4840:27;4857:9;4840:27;:::i;:::-;4830:37;;4886:36;4918:2;4907:9;4903:18;4886:36;:::i;:::-;4876:46;;4676:252;;;;;:::o;5115:1590::-;5317:4;5346:2;5386;5375:9;5371:18;5416:2;5405:9;5398:21;5439:6;5474;5468:13;5505:6;5497;5490:22;5531:2;5521:12;;5564:2;5553:9;5549:18;5542:25;;5626:2;5616:6;5613:1;5609:14;5598:9;5594:30;5590:39;5664:2;5656:6;5652:15;5685:1;5706;5716:960;5732:6;5727:3;5724:15;5716:960;;;5801:22;;;-1:-1:-1;;5797:36:105;5785:49;;5857:13;;5944:9;;-1:-1:-1;;;;;5940:58:105;5925:74;;6038:11;;6032:18;6070:15;;;6063:27;;;6151:19;;5897:15;;;6183:24;;;6273:21;;;;6318:1;;6241:2;6229:15;;;6332:236;6348:8;6343:3;6340:17;6332:236;;;6429:15;;-1:-1:-1;;;;;;6425:42:105;6411:57;;6537:17;;;;6376:1;6367:11;;;;;6494:14;;;;6332:236;;;-1:-1:-1;6654:12:105;;;;6591:5;-1:-1:-1;;;6619:15:105;;;;5758:1;5749:11;5716:960;;;-1:-1:-1;6693:6:105;;5115:1590;-1:-1:-1;;;;;;;;;5115:1590:105:o;6710:803::-;6872:4;6901:2;6941;6930:9;6926:18;6971:2;6960:9;6953:21;6994:6;7029;7023:13;7060:6;7052;7045:22;7098:2;7087:9;7083:18;7076:25;;7160:2;7150:6;7147:1;7143:14;7132:9;7128:30;7124:39;7110:53;;7198:2;7190:6;7186:15;7219:1;7229:255;7243:6;7240:1;7237:13;7229:255;;;7336:2;7332:7;7320:9;7312:6;7308:22;7304:36;7299:3;7292:49;7364:40;7397:6;7388;7382:13;7364:40;:::i;:::-;7354:50;-1:-1:-1;7462:12:105;;;;7427:15;;;;7265:1;7258:9;7229:255;;;-1:-1:-1;7501:6:105;;6710:803;-1:-1:-1;;;;;;;6710:803:105:o;7518:322::-;7592:6;7600;7608;7661:2;7649:9;7640:7;7636:23;7632:32;7629:52;;;7677:1;7674;7667:12;7629:52;7700:28;7718:9;7700:28;:::i;:::-;7690:38;;7775:2;7764:9;7760:18;7747:32;7737:42;;7798:36;7830:2;7819:9;7815:18;7798:36;:::i;8040:154::-;-1:-1:-1;;;;;8119:5:105;8115:54;8108:5;8105:65;8095:93;;8184:1;8181;8174:12;8199:898;8332:6;8340;8348;8356;8364;8372;8380;8388;8441:3;8429:9;8420:7;8416:23;8412:33;8409:53;;;8458:1;8455;8448:12;8409:53;8497:9;8484:23;8516:31;8541:5;8516:31;:::i;:::-;8566:5;-1:-1:-1;8623:2:105;8608:18;;8595:32;8636:33;8595:32;8636:33;:::i;:::-;8688:7;-1:-1:-1;8747:2:105;8732:18;;8719:32;8760:33;8719:32;8760:33;:::i;:::-;8812:7;-1:-1:-1;8838:37:105;8871:2;8856:18;;8838:37;:::i;:::-;8828:47;;8922:3;8911:9;8907:19;8894:33;8884:43;;8974:3;8963:9;8959:19;8946:33;8936:43;;8998:37;9030:3;9019:9;9015:19;8998:37;:::i;:::-;8988:47;;9054:37;9086:3;9075:9;9071:19;9054:37;:::i;:::-;9044:47;;8199:898;;;;;;;;;;;:::o;9102:117::-;9187:6;9180:5;9176:18;9169:5;9166:29;9156:57;;9209:1;9206;9199:12;9224:245;9282:6;9335:2;9323:9;9314:7;9310:23;9306:32;9303:52;;;9351:1;9348;9341:12;9303:52;9390:9;9377:23;9409:30;9433:5;9409:30;:::i;9474:829::-;9598:6;9606;9614;9622;9630;9638;9646;9699:3;9687:9;9678:7;9674:23;9670:33;9667:53;;;9716:1;9713;9706:12;9667:53;9755:9;9742:23;9774:31;9799:5;9774:31;:::i;:::-;9824:5;-1:-1:-1;9881:2:105;9866:18;;9853:32;9894:33;9853:32;9894:33;:::i;:::-;9946:7;-1:-1:-1;10005:2:105;9990:18;;9977:32;10018:33;9977:32;10018:33;:::i;:::-;10070:7;-1:-1:-1;10096:37:105;10129:2;10114:18;;10096:37;:::i;:::-;10086:47;;10180:3;10169:9;10165:19;10152:33;10142:43;;10204:37;10236:3;10225:9;10221:19;10204:37;:::i;:::-;10194:47;;10260:37;10292:3;10281:9;10277:19;10260:37;:::i;:::-;10250:47;;9474:829;;;;;;;;;;:::o;10308:434::-;10360:3;10398:5;10392:12;10425:6;10420:3;10413:19;10451:4;10480:2;10475:3;10471:12;10464:19;;10517:2;10510:5;10506:14;10538:1;10548:169;10562:6;10559:1;10556:13;10548:169;;;10623:13;;10611:26;;10657:12;;;;10692:15;;;;10584:1;10577:9;10548:169;;;-1:-1:-1;10733:3:105;;10308:434;-1:-1:-1;;;;;10308:434:105:o;10747:1945::-;10952:2;10941:9;10934:21;10964:53;11013:2;11002:9;10998:18;10989:6;10983:13;-1:-1:-1;;;;;1462:54:105;1450:67;;1396:127;10964:53;10915:4;11064:2;11056:6;11052:15;11046:22;11077:52;11125:2;11114:9;11110:18;11096:12;-1:-1:-1;;;;;1462:54:105;1450:67;;1396:127;11077:52;;11183:2;11175:6;11171:15;11165:22;11160:2;11149:9;11145:18;11138:50;11243:2;11235:6;11231:15;11225:22;11219:3;11208:9;11204:19;11197:51;11303:3;11295:6;11291:16;11285:23;11279:3;11268:9;11264:19;11257:52;11364:3;11356:6;11352:16;11346:23;11340:3;11329:9;11325:19;11318:52;11425:3;11417:6;11413:16;11407:23;11401:3;11390:9;11386:19;11379:52;11468:3;11460:6;11456:16;11450:23;11492:3;11531:2;11526;11515:9;11511:18;11504:30;11571:2;11563:6;11559:15;11553:22;11543:32;;;11594:3;11633:2;11628;11617:9;11613:18;11606:30;11685:2;11677:6;11673:15;11667:22;11645:44;;;11708:6;11733:3;11772:2;11767;11756:9;11752:18;11745:30;11798:64;11857:3;11846:9;11842:19;11826:14;11798:64;:::i;:::-;11784:78;;11911:2;11903:6;11899:15;11893:22;11871:44;;11938:2;11934:7;11960:3;12027:2;12015:9;12007:6;12003:22;11999:31;11994:2;11983:9;11979:18;11972:59;12054:51;12098:6;12082:14;12054:51;:::i;:::-;12040:65;;12154:2;12146:6;12142:15;12136:22;12114:44;;;12177:3;12244:2;12232:9;12224:6;12220:22;12216:31;12211:2;12200:9;12196:18;12189:59;12271:51;12315:6;12299:14;12271:51;:::i;:::-;12257:65;;12371:2;12363:6;12359:15;12353:22;12331:44;;;;12395:3;12407:55;12457:3;12446:9;12442:19;12426:14;-1:-1:-1;;;;;1462:54:105;1450:67;;1396:127;12407:55;12499:16;;12493:23;;-1:-1:-1;12536:3:105;12548:55;12583:19;;;12493:23;-1:-1:-1;;;;;1462:54:105;1450:67;;1396:127;12548:55;12645:16;;;;12639:23;12619:18;;12612:51;;;;-1:-1:-1;12680:6:105;10747:1945;-1:-1:-1;10747:1945:105:o;12697:127::-;12758:10;12753:3;12749:20;12746:1;12739:31;12789:4;12786:1;12779:15;12813:4;12810:1;12803:15;12829:275;12900:2;12894:9;12965:2;12946:13;;-1:-1:-1;;12942:27:105;12930:40;;13000:18;12985:34;;13021:22;;;12982:62;12979:88;;;13047:18;;:::i;:::-;13083:2;13076:22;12829:275;;-1:-1:-1;12829:275:105:o;13109:183::-;13169:4;13202:18;13194:6;13191:30;13188:56;;;13224:18;;:::i;:::-;-1:-1:-1;13269:1:105;13265:14;13281:4;13261:25;;13109:183::o;13297:659::-;13362:5;13415:3;13408:4;13400:6;13396:17;13392:27;13382:55;;13433:1;13430;13423:12;13382:55;13462:6;13456:13;13488:4;13512:60;13528:43;13568:2;13528:43;:::i;:::-;13512:60;:::i;:::-;13606:15;;;13692:1;13688:10;;;;13676:23;;13672:32;;;13637:12;;;;13716:15;;;13713:35;;;13744:1;13741;13734:12;13713:35;13780:2;13772:6;13768:15;13792:135;13808:6;13803:3;13800:15;13792:135;;;13874:10;;13862:23;;13905:12;;;;13825;;13792:135;;;-1:-1:-1;13945:5:105;13297:659;-1:-1:-1;;;;;;13297:659:105:o;13961:861::-;14126:6;14134;14142;14150;14158;14166;14219:3;14207:9;14198:7;14194:23;14190:33;14187:53;;;14236:1;14233;14226:12;14187:53;14265:9;14259:16;14249:26;;14315:2;14304:9;14300:18;14294:25;14284:35;;14359:2;14348:9;14344:18;14338:25;14328:35;;14403:2;14392:9;14388:18;14382:25;14372:35;;14451:3;14440:9;14436:19;14430:26;14475:18;14516:2;14508:6;14505:14;14502:34;;;14532:1;14529;14522:12;14502:34;14555:72;14619:7;14610:6;14599:9;14595:22;14555:72;:::i;:::-;14545:82;;14673:3;14662:9;14658:19;14652:26;14636:42;;14703:2;14693:8;14690:16;14687:36;;;14719:1;14716;14709:12;14687:36;;14742:74;14808:7;14797:8;14786:9;14782:24;14742:74;:::i;:::-;14732:84;;;13961:861;;;;;;;;:::o;14827:127::-;14888:10;14883:3;14879:20;14876:1;14869:31;14919:4;14916:1;14909:15;14943:4;14940:1;14933:15;14959:128;15026:9;;;15047:11;;;15044:37;;;15061:18;;:::i;15627:268::-;15714:6;15767:2;15755:9;15746:7;15742:23;15738:32;15735:52;;;15783:1;15780;15773:12;15735:52;15815:9;15809:16;15834:31;15859:5;15834:31;:::i;17794:247::-;17865:8;17905:10;;;17917;;;17901:27;17948:20;;;;17865:8;17987:24;;;17977:58;;18015:18;;:::i;:::-;17977:58;;17794:247;;;;:::o;18046:170::-;18113:8;18141:10;;;18153;;;18137:27;;18176:11;;;18173:37;;;18190:18;;:::i;18460:184::-;18530:6;18583:2;18571:9;18562:7;18558:23;18554:32;18551:52;;;18599:1;18596;18589:12;18551:52;-1:-1:-1;18622:16:105;;18460:184;-1:-1:-1;18460:184:105:o;19102:164::-;19178:13;;19227;;19220:21;19210:32;;19200:60;;19256:1;19253;19246:12;19271:813;19377:6;19430:3;19418:9;19409:7;19405:23;19401:33;19398:53;;;19447:1;19444;19437:12;19398:53;19480:2;19474:9;19522:3;19514:6;19510:16;19592:6;19580:10;19577:22;19556:18;19544:10;19541:34;19538:62;19535:88;;;19603:18;;:::i;:::-;19639:2;19632:22;19676:16;;19701:30;19676:16;19701:30;:::i;:::-;19740:21;;19806:2;19791:18;;19785:25;19819:33;19785:25;19819:33;:::i;:::-;19880:2;19868:15;;19861:32;19926:46;19968:2;19953:18;;19926:46;:::i;:::-;19921:2;19913:6;19909:15;19902:71;20006:46;20048:2;20037:9;20033:18;20006:46;:::i;:::-;20001:2;19989:15;;19982:71;19993:6;19271:813;-1:-1:-1;;;19271:813:105:o;20401:1140::-;20869:4;20898:3;-1:-1:-1;;;;;21001:2:105;20993:6;20989:15;20978:9;20971:34;21053:2;21045:6;21041:15;21036:2;21025:9;21021:18;21014:43;21105:6;21097;21093:19;21088:2;21077:9;21073:18;21066:47;21149:6;21144:2;21133:9;21129:18;21122:34;21193:6;21187:3;21176:9;21172:19;21165:35;21237:2;21231:3;21220:9;21216:19;21209:31;21263:55;21314:2;21303:9;21299:18;21291:6;21263:55;:::i;:::-;21249:69;;21367:9;21359:6;21355:22;21349:3;21338:9;21334:19;21327:51;21395:43;21431:6;21423;21395:43;:::i;:::-;21475:15;;21469:3;21454:19;;21447:44;-1:-1:-1;;21522:3:105;21507:19;21500:35;21387:51;20401:1140;-1:-1:-1;;;;;;;20401:1140:105:o;21546:245::-;21625:6;21633;21686:2;21674:9;21665:7;21661:23;21657:32;21654:52;;;21702:1;21699;21692:12;21654:52;-1:-1:-1;;21725:16:105;;21781:2;21766:18;;;21760:25;21725:16;;21760:25;;-1:-1:-1;21546:245:105:o;21796:127::-;21857:10;21852:3;21848:20;21845:1;21838:31;21888:4;21885:1;21878:15;21912:4;21909:1;21902:15;22230:135;22269:3;22290:17;;;22287:43;;22310:18;;:::i;:::-;-1:-1:-1;22357:1:105;22346:13;;22230:135::o;22370:127::-;22431:10;22426:3;22422:20;22419:1;22412:31;22462:4;22459:1;22452:15;22486:4;22483:1;22476:15;22502:120;22542:1;22568;22558:35;;22573:18;;:::i;:::-;-1:-1:-1;22607:9:105;;22502:120::o;23280:125::-;23345:9;;;23366:10;;;23363:36;;;23379:18;;:::i;23829:218::-;23976:2;23965:9;23958:21;23939:4;23996:45;24037:2;24026:9;24022:18;24014:6;23996:45;:::i;24052:380::-;24131:1;24127:12;;;;24174;;;24195:61;;24249:4;24241:6;24237:17;24227:27;;24195:61;24302:2;24294:6;24291:14;24271:18;24268:38;24265:161;;24348:10;24343:3;24339:20;24336:1;24329:31;24383:4;24380:1;24373:15;24411:4;24408:1;24401:15;24265:161;;24052:380;;;:::o;29578:173::-;29646:8;29687:10;;;29675;;;29671:27;;29710:12;;;29707:38;;;29725:18;;:::i;30084:202::-;30151:6;30204:2;30192:9;30183:7;30179:23;30175:32;30172:52;;;30220:1;30217;30210:12;30172:52;30243:37;30270:9;30243:37;:::i;30800:148::-;30888:4;30867:12;;;30881;;;30863:31;;30906:13;;30903:39;;;30922:18;;:::i;30953:151::-;31043:4;31036:12;;;31022;;;31018:31;;31061:14;;31058:40;;;31078:18;;:::i;31560:1056::-;31997:4;32026:3;-1:-1:-1;;;;;32129:2:105;32121:6;32117:15;32106:9;32099:34;32181:6;32173;32169:19;32164:2;32153:9;32149:18;32142:47;32225:6;32220:2;32209:9;32205:18;32198:34;32268:6;32263:2;32252:9;32248:18;32241:34;32312:2;32306:3;32295:9;32291:19;32284:31;32338:55;32389:2;32378:9;32374:18;32366:6;32338:55;:::i;:::-;32324:69;;32442:9;32434:6;32430:22;32424:3;32413:9;32409:19;32402:51;32470:43;32506:6;32498;32470:43;:::i;:::-;32550:15;;32544:3;32529:19;;32522:44;-1:-1:-1;;32597:3:105;32582:19;32575:35;32462:51;31560:1056;-1:-1:-1;;;;;;31560:1056:105:o;32931:711::-;33232:4;-1:-1:-1;;;;;33342:2:105;33334:6;33330:15;33319:9;33312:34;33394:2;33386:6;33382:15;33377:2;33366:9;33362:18;33355:43;;33434:3;33429:2;33418:9;33414:18;33407:31;33461:56;33512:3;33501:9;33497:19;33489:6;33461:56;:::i;:::-;33565:9;33557:6;33553:22;33548:2;33537:9;33533:18;33526:50;33593:43;33629:6;33621;33593:43;:::i;:::-;33585:51;32931:711;-1:-1:-1;;;;;;;32931:711:105:o;33647:136::-;33682:3;-1:-1:-1;;;33703:22:105;;33700:48;;33728:18;;:::i;:::-;-1:-1:-1;33768:1:105;33764:13;;33647:136::o;33788:200::-;33854:9;;;33827:4;33882:9;;33910:10;;33922:12;;;33906:29;33945:12;;;33937:21;;33903:56;33900:82;;;33962:18;;:::i;34998:854::-;35196:4;35244:2;35233:9;35229:18;-1:-1:-1;;;;;35347:2:105;35339:6;35335:15;35324:9;35317:34;35370:2;35408;35403;35392:9;35388:18;35381:30;35431:6;35466;35460:13;35497:6;35489;35482:22;35535:3;35524:9;35520:19;35513:26;;35574:2;35566:6;35562:15;35548:29;;35595:1;35605:169;35619:6;35616:1;35613:13;35605:169;;;35680:13;;35668:26;;35749:15;;;;35714:12;;;;35641:1;35634:9;35605:169;;;35609:3;;35791;35783:11;;;;35842:2;35834:6;35830:15;35825:2;35814:9;35810:18;35803:43;;;34998:854;;;;;;:::o;35857:485::-;35970:6;35978;35986;36039:2;36027:9;36018:7;36014:23;36010:32;36007:52;;;36055:1;36052;36045:12;36007:52;36084:9;36078:16;36068:26;;36134:2;36123:9;36119:18;36113:25;36103:35;;36182:2;36171:9;36167:18;36161:25;36209:18;36201:6;36198:30;36195:50;;;36241:1;36238;36231:12;36195:50;36264:72;36328:7;36319:6;36308:9;36304:22;36264:72;:::i;:::-;36254:82;;;35857:485;;;;;:::o;36541:634::-;36671:6;36679;36687;36695;36703;36711;36719;36727;36780:3;36768:9;36759:7;36755:23;36751:33;36748:53;;;36797:1;36794;36787:12;36748:53;36826:9;36820:16;36810:26;;36876:2;36865:9;36861:18;36855:25;36845:35;;36920:2;36909:9;36905:18;36899:25;36889:35;;36964:2;36953:9;36949:18;36943:25;36933:35;;37008:3;36997:9;36993:19;36987:26;36977:36;;37053:3;37042:9;37038:19;37032:26;37022:36;;37098:3;37087:9;37083:19;37077:26;37067:36;;37122:47;37164:3;37153:9;37149:19;37122:47;:::i;40576:363::-;40671:6;40724:2;40712:9;40703:7;40699:23;40695:32;40692:52;;;40740:1;40737;40730:12;40692:52;40773:9;40767:16;40806:18;40798:6;40795:30;40792:50;;;40838:1;40835;40828:12;40792:50;40861:72;40925:7;40916:6;40905:9;40901:22;40861:72;:::i;40944:362::-;41149:6;41138:9;41131:25;41192:6;41187:2;41176:9;41172:18;41165:34;41235:2;41230;41219:9;41215:18;41208:30;41112:4;41255:45;41296:2;41285:9;41281:18;41273:6;41255:45;:::i;41311:338::-;-1:-1:-1;;;;;41490:6:105;41486:55;41475:9;41468:74;41578:2;41573;41562:9;41558:18;41551:30;41449:4;41598:45;41639:2;41628:9;41624:18;41616:6;41598:45;:::i;50189:435::-;50422:6;50411:9;50404:25;50465:6;50460:2;50449:9;50445:18;50438:34;50508:6;50503:2;50492:9;50488:18;50481:34;50551:3;50546:2;50535:9;50531:18;50524:31;50385:4;50572:46;50613:3;50602:9;50598:19;50590:6;50572:46;:::i;50629:441::-;50797:4;-1:-1:-1;;;;;50907:2:105;50899:6;50895:15;50884:9;50877:34;50959:2;50951:6;50947:15;50942:2;50931:9;50927:18;50920:43;;50999:2;50994;50983:9;50979:18;50972:30;51019:45;51060:2;51049:9;51045:18;51037:6;51019:45;:::i;51606:301::-;51791:6;51784:14;51777:22;51766:9;51759:41;51836:2;51831;51820:9;51816:18;51809:30;51740:4;51856:45;51897:2;51886:9;51882:18;51874:6;51856:45;:::i;51912:181::-;51943:1;51969:8;52004:2;52001:1;51997:10;52026:3;52016:37;;52033:18;;:::i;:::-;52071:10;;52067:20;;;;;51912:181;-1:-1:-1;;51912:181:105:o;52459:189::-;52498:1;52524:8;52559:2;52556:1;52552:10;52581:3;52571:37;;52588:18;;:::i;:::-;52626:10;;52622:20;;;;;52459:189;-1:-1:-1;;52459:189:105:o;52653:168::-;52726:9;;;52757;;52774:15;;;52768:22;;52754:37;52744:71;;52795:18;;:::i;54459:287::-;54588:3;54626:6;54620:13;54642:66;54701:6;54696:3;54689:4;54681:6;54677:17;54642:66;:::i;:::-;54724:16;;;;;54459:287;-1:-1:-1;;54459:287:105:o;55182:112::-;55214:1;55240;55230:35;;55245:18;;:::i;:::-;-1:-1:-1;55279:9:105;;55182:112::o;55299:291::-;55476:2;55465:9;55458:21;55439:4;55496:45;55537:2;55526:9;55522:18;55514:6;55496:45;:::i;:::-;55488:53;;55577:6;55572:2;55561:9;55557:18;55550:34;55299:291;;;;;:::o;55595:384::-;-1:-1:-1;;;;;;55780:33:105;;55768:46;;55837:13;;55750:3;;55859:74;55837:13;55922:1;55913:11;;55906:4;55894:17;;55859:74;:::i;:::-;55953:16;;;;55971:1;55949:24;;55595:384;-1:-1:-1;;;55595:384:105:o;55984:610::-;56230:13;;56173:3;;56204;;56283:4;56310:15;;;56173:3;56353:175;56367:6;56364:1;56361:13;56353:175;;;56430:13;;56416:28;;56466:14;;;;56503:15;;;;56389:1;56382:9;56353:175;;;-1:-1:-1;;56537:21:105;;;-1:-1:-1;56574:14:105;;;;;-1:-1:-1;;;55984:610:105:o;57784:614::-;57913:6;57921;57974:2;57962:9;57953:7;57949:23;57945:32;57942:52;;;57990:1;57987;57980:12;57942:52;58023:9;58017:16;58052:18;58093:2;58085:6;58082:14;58079:34;;;58109:1;58106;58099:12;58079:34;58132:72;58196:7;58187:6;58176:9;58172:22;58132:72;:::i;:::-;58122:82;;58250:2;58239:9;58235:18;58229:25;58213:41;;58279:2;58269:8;58266:16;58263:36;;;58295:1;58292;58285:12;58263:36;;58318:74;58384:7;58373:8;58362:9;58358:24;58318:74;:::i;:::-;58308:84;;;57784:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":10573,"length":32},{"start":10646,"length":32},{"start":10679,"length":32},{"start":10737,"length":32},{"start":10807,"length":32},{"start":10840,"length":32},{"start":10916,"length":32},{"start":10985,"length":32},{"start":11260,"length":32},{"start":13615,"length":32},{"start":13890,"length":32},{"start":14020,"length":32},{"start":14807,"length":32},{"start":26033,"length":32},{"start":28371,"length":32}],"91790":[{"start":7499,"length":32},{"start":14647,"length":32}],"91798":[{"start":3415,"length":32},{"start":3808,"length":32},{"start":3989,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_AddLiquidityNoSlippage(uint256,uint24,uint24)":"10041390","test_AddLiquidityBadId()":"4659171c","test_AddLiquidityNATIVE()":"00e44d64","test_Constructor()":"3c322dd3","test_CreatePair()":"c0516608","test_ReceiveNATIVE()":"cb21bf3b","test_RemoveLiquidity()":"14d98783","test_RemoveLiquidityNATIVE()":"c250f091","test_SweepERC20()":"2602040b","test_SweepLBTokens()":"8eb3e70e","test_revert_AddLiquidity()":"9b482ce0","test_revert_AddLiquidityNATIVE()":"e20de7f6","test_revert_RemoveLiquidity()":"37f3b969","test_revert_RemoveLiquidityNATIVE()":"67e2c3b9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountYIn\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"binNumber\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"gap\",\"type\":\"uint24\"}],\"name\":\"testFuzz_AddLiquidityNoSlippage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_AddLiquidityBadId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_AddLiquidityNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Constructor\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_CreatePair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_ReceiveNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_RemoveLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_RemoveLiquidityNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SweepERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SweepLBTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_AddLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_AddLiquidityNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_RemoveLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_RemoveLiquidityNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Test scenarios: 1. Receive 2. Create LBPair 3. Add Liquidity 4. Add liquidity NATIVE 5. Remove liquidity 6. Remove liquidity NATIVE 7. Sweep ERC20s 8. Sweep LBToken\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBRouter.Liquidity.t.sol\":\"LiquidityBinRouterTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBRouter.Liquidity.t.sol\":{\"keccak256\":\"0x2e704b78f85ff876f36a8d8c53e43b0f3ff47bc5587deee820d697005bc339d2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c48fe193f5626b9bcbaa81acb93531d9cadea83f5af3ae86b998b58e470d0eb4\",\"dweb:/ipfs/QmUuBXgxS5Xe5GsL9KTdCsrrsYDDJr7Q9tGqkNto75H9aV\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"amountYIn","type":"uint256"},{"internalType":"uint24","name":"binNumber","type":"uint24"},{"internalType":"uint24","name":"gap","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_AddLiquidityNoSlippage"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_AddLiquidityBadId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_AddLiquidityNATIVE"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Constructor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_CreatePair"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_ReceiveNATIVE"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_RemoveLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_RemoveLiquidityNATIVE"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SweepERC20"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SweepLBTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_AddLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_AddLiquidityNATIVE"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_RemoveLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_RemoveLiquidityNATIVE"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBRouter.Liquidity.t.sol":"LiquidityBinRouterTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBRouter.Liquidity.t.sol":{"keccak256":"0x2e704b78f85ff876f36a8d8c53e43b0f3ff47bc5587deee820d697005bc339d2","urls":["bzz-raw://c48fe193f5626b9bcbaa81acb93531d9cadea83f5af3ae86b998b58e470d0eb4","dweb:/ipfs/QmUuBXgxS5Xe5GsL9KTdCsrrsYDDJr7Q9tGqkNto75H9aV"],"license":"UNLICENSED"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":91} \ No newline at end of file diff --git a/abi/LBRouter.Swap.t.sol/LiquidityBinRouterSwapTest.json b/abi/LBRouter.Swap.t.sol/LiquidityBinRouterSwapTest.json deleted file mode 100644 index 04a8d97d..00000000 --- a/abi/LBRouter.Swap.t.sol/LiquidityBinRouterSwapTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_GetIdFromPrice","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_SwapExactNATIVEForTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapExactNATIVEForTokensSupportingFeeOnTransferTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapExactTokensForNATIVE","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapExactTokensForNATIVESupportingFeeOnTransferTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapExactTokensForTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapNATIVEForExactTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapTokensForExactNATIVE","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapTokensForExactTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c0516201dba7620002a660003960005050600050506000818161656901526174c501526201dba76000f3fe608060405260043610620001c75760003560e01c80636d09084011620000f3578063916a17c61162000095578063b89e0233116200006c578063b89e0233146200049f578063ba414fa614620004c4578063e20c9f7114620004dc578063fecaa22314620004f457600080fd5b8063916a17c6146200044a578063a7aa85e91462000462578063b5508aa9146200048757600080fd5b806385226c8111620000ca57806385226c8114620003d1578063889be5b714620003f85780638f8d57ea146200043257600080fd5b80636d090840146200038957806372b01c7a14620003a15780637594f3a114620003b957600080fd5b806338a637ed11620001695780633f7286f411620001405780633f7286f414620002fe5780634415cf9d146200031657806349789ef9146200032e57806366d9a9a0146200036257600080fd5b806338a637ed14620002b65780633e5e3c2314620002ce5780633f6fb2f714620002e657600080fd5b80631ed7831c116200019e5780631ed7831c14620002505780632ade388014620002775780632debd6fd146200029e57600080fd5b806301ffc9a714620001d4578063061794b3146200021e5780630a9254e4146200023857600080fd5b36620001cf57005b600080fd5b348015620001e157600080fd5b5062000209620001f336600462009c05565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b3480156200022b57600080fd5b506200023662000519565b005b3480156200024557600080fd5b5062000236620006cf565b3480156200025d57600080fd5b506200026862000b82565b60405162000215919062009c31565b3480156200028457600080fd5b506200028f62000be6565b60405162000215919062009cd4565b348015620002ab57600080fd5b506200023662000d34565b348015620002c357600080fd5b5062000236620015ed565b348015620002db57600080fd5b506200026862001ed8565b348015620002f357600080fd5b506200023662001f3a565b3480156200030b57600080fd5b5062000268620026d9565b3480156200032357600080fd5b50620002366200273b565b3480156200033b57600080fd5b50620003536200034d36600462009dac565b62002f2a565b60405190815260200162000215565b3480156200036f57600080fd5b506200037a62002f7f565b60405162000215919062009de4565b3480156200039657600080fd5b506200023662003069565b348015620003ae57600080fd5b5062000236620039e5565b348015620003c657600080fd5b506200023662004314565b348015620003de57600080fd5b50620003e96200482f565b60405162000215919062009e9b565b3480156200040557600080fd5b506200041d6200041736600462009f13565b62004909565b60405162ffffff909116815260200162000215565b3480156200043f57600080fd5b506200023662004964565b3480156200045757600080fd5b506200037a62005233565b3480156200046f57600080fd5b50620002366200048136600462009f6c565b6200531d565b3480156200049457600080fd5b50620003e9620057be565b348015620004ac57600080fd5b5062000209620004be3660046200a01b565b62005898565b348015620004d157600080fd5b50620002096200591b565b348015620004e957600080fd5b5062000268620059d5565b3480156200050157600080fd5b5062000236620005133660046200a03b565b62005a37565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015260009291169063704037bd90606401608060405180830381865afa1580156200057e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a491906200a0f6565b6020015160255460405163f96fe92560e01b81526001600160a01b0380841660048301527002b78853aaac41bff0c3916eff1037c97a602483015292935091169063f96fe92590604401602060405180830381865afa1580156200060c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063291906200a183565b506025546001600160a01b031663d0e380f28262000656628000006103e86200a1b9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015262ffffff166024820152604401602060405180830381865afa158015620006a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006cb91906200a1d8565b5050565b620006d962005d3c565b60248054604051634cd161d360e01b8152600a60048201526001928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b1580156200072857600080fd5b505af11580156200073d573d6000803e3d6000fd5b5050602554601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a60648201529116925063659ac74b91506084016020604051808303816000875af1158015620007ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d191906200a1f2565b50602554601c54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af11580156200083c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200086291906200a1f2565b50602554602354601c5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af1158015620008cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f391906200a1f2565b50601d546dffffffffffffffffffffffffffff906200091d906001600160a01b0316308362007367565b601e5462000936906001600160a01b0316308362007367565b6023546200094f906001600160a01b0316308362007367565b601e54601d5460009162000981916001600160a01b03918216911668056bc75e2d6310000062800000600f866200737b565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a90620009b49084906004016200a24f565b6000604051808303816000875af1158015620009d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009fe91908101906200a431565b5050601c54601d5462000a3695506001600160a01b03918216945016915068056bc75e2d63100000905062800000600f60006200737b565b60255460608201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c919062000a719085906004016200a24f565b60006040518083038185885af115801562000a90573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000abb91908101906200a431565b5050602354601c5462000af395506001600160a01b039182169450169150680ad78ebc5ac6200000905062800000600f60006200737b565b60255460808201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c919062000b2e9085906004016200a24f565b60006040518083038185885af115801562000b4d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000b7891908101906200a431565b5050505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000bdc57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bbd575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000d1357838290600052602060002001805462000c7f906200a4c1565b80601f016020809104026020016040519081016040528092919081815260200182805462000cad906200a4c1565b801562000cfe5780601f1062000cd25761010080835404028352916020019162000cfe565b820191906000526020600020905b81548152906001019060200180831162000ce057829003601f168201915b50505050508152602001906001019062000c5d565b50505050815250508152602001906001019062000c0a565b50505050905090565b60248054602354601c5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562000da6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dcc91906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b03861660248301526000604483018190529394509091169063a0d376cf90606401606060405180830381865afa15801562000e36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e5c91906200a515565b50601c546023549193506000925062000e82916001600160a01b03918216911662007513565b90506000805160206201da5e83398151915263f28dceb36313fab00360e21b8462000eaf6002826200a56c565b62000ebc9060016200a595565b6040516001600160801b0392831660248201529116604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262000f20916004016200a5b8565b600060405180830381600087803b15801562000f3b57600080fd5b505af115801562000f50573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b03861684843062000f814260016200a5cd565b6040518663ffffffff1660e01b815260040162000fa294939291906200a6c5565b60206040518083038185885af115801562000fc1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000fe891906200a1d8565b506023546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801562001033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200105991906200a1d8565b6025549091506000906001600160a01b031663e038e6dc6001600160801b038816620010876002886200a56c565b8630620010964260016200a5cd565b6040518663ffffffff1660e01b8152600401620010b794939291906200a6c5565b60206040518083038185885af1158015620010d6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620010fd91906200a1d8565b90506200114781620011116002876200a56c565b6200111e9060016200a595565b6001600160801b03166040518060600160405280603d81526020016201db35603d91396200768a565b6023546040516370a0823160e01b8152306004820152620011e5916001600160a01b0316906370a0823190602401602060405180830381865afa15801562001193573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011b991906200a1d8565b620011c583856200a5cd565b6040518060600160405280603d81526020016201daf8603d91396200768a565b601e54604084015180516001600160a01b03909216916000906200120d576200120d6200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200129a916004016200a5b8565b600060405180830381600087803b158015620012b557600080fd5b505af1158015620012ca573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b038816868630620012fb4260016200a5cd565b6040518663ffffffff1660e01b81526004016200131c94939291906200a6c5565b60206040518083038185885af11580156200133b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200136291906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b6200138d6001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620013e8916004016200a5b8565b600060405180830381600087803b1580156200140357600080fd5b505af115801562001418573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b038816868630620014496001426200a71b565b6040518663ffffffff1660e01b81526004016200146a94939291906200a6c5565b60206040518083038185885af115801562001489573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620014b091906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200151c92016200a5b8565b600060405180830381600087803b1580156200153757600080fd5b505af11580156200154c573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b0388168686306200157d4260016200a5cd565b6040518663ffffffff1660e01b81526004016200159e94939291906200a6c5565b60206040518083038185885af1158015620015bd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620015e491906200a1d8565b50505050505050565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa1580156200165f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200168591906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063a0d376cf90606401606060405180830381865afa158015620016f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200171691906200a515565b50601c54601d54919350600092506200173c916001600160a01b03918216911662007513565b601d546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156200178b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017b191906200a1d8565b6025549091506000906001600160a01b031663b066ea7c6001600160801b038816868630620017e24260016200a5cd565b6040518663ffffffff1660e01b81526004016200180394939291906200a6c5565b60206040518083038185885af115801562001822573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200184991906200a1d8565b90506200189681856001600160801b03166040518060400160405280602081526020017f746573745f5377617045786163744e4154495645466f72546f6b656e733a3a318152506200768a565b601d546040516370a0823160e01b815230600482015262001950916001600160a01b0316906370a0823190602401602060405180830381865afa158015620018e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200190891906200a1d8565b6200191483856200a5cd565b6040518060400160405280602081526020017f746573745f5377617045786163744e4154495645466f72546f6b656e733a3a328152506200768a565b60255460405163a0d376cf60e01b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063a0d376cf90606401606060405180830381865afa158015620019b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019d791906200a515565b5094506000805160206201da5e833981519152905063f28dceb36313fab00360e21b62001a068760016200a595565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262001a6b916004016200a5b8565b600060405180830381600087803b15801562001a8657600080fd5b505af115801562001a9b573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b03881662001ac98760016200a595565b863062001ad84260016200a5cd565b6040518663ffffffff1660e01b815260040162001af994939291906200a6c5565b60206040518083038185885af115801562001b18573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001b3f91906200a1d8565b50601e54604084015180516001600160a01b039092169160009062001b685762001b686200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262001bf5916004016200a5b8565b600060405180830381600087803b15801562001c1057600080fd5b505af115801562001c25573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b03881686863062001c564260016200a5cd565b6040518663ffffffff1660e01b815260040162001c7794939291906200a6c5565b60206040518083038185885af115801562001c96573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001cbd91906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62001ce86001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262001d43916004016200a5b8565b600060405180830381600087803b15801562001d5e57600080fd5b505af115801562001d73573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b03881686863062001da46001426200a71b565b6040518663ffffffff1660e01b815260040162001dc594939291906200a6c5565b60206040518083038185885af115801562001de4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001e0b91906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb39262001e7792016200a5b8565b600060405180830381600087803b15801562001e9257600080fd5b505af115801562001ea7573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b0388168686306200157d4260016200a5cd565b6060601680548060200260200160405190810160405280929190818152602001828054801562000bdc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bbd575050505050905090565b60248054602354601c5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562001fac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd291906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063a0d376cf90606401606060405180830381865afa1580156200203d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206391906200a515565b50602354601c549193506000925062002089916001600160a01b03918216911662007513565b90506000805160206201da5e83398151915263f28dceb36313fab00360e21b84620020b66002826200a56c565b6040516001600160801b0392831660248201529116604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200211a916004016200a5b8565b600060405180830381600087803b1580156200213557600080fd5b505af11580156200214a573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905085848430620021724260016200a5cd565b6040518663ffffffff1660e01b8152600401620021949594939291906200a731565b6020604051808303816000875af1158015620021b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021da91906200a1d8565b5060255447906000906001600160a01b0316631a24f9a987620021ff6002886200a56c565b86306200220e4260016200a5cd565b6040518663ffffffff1660e01b8152600401620022309594939291906200a731565b6020604051808303816000875af115801562002250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200227691906200a1d8565b9050620022b3816200228a6002876200a56c565b6001600160801b03166040518060600160405280603d81526020016201dabb603d91396200768a565b620022e447620022c483856200a5cd565b6040518060600160405280603d81526020016201da7e603d91396200768a565b601e54604084015180516001600160a01b039092169160019081106200230e576200230e6200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200239b916004016200a5b8565b600060405180830381600087803b158015620023b657600080fd5b505af1158015620023cb573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905087620023f08760016200a595565b8630620023ff4260016200a5cd565b6040518663ffffffff1660e01b8152600401620024219594939291906200a731565b6020604051808303816000875af115801562002441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200246791906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b620024926001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620024ed916004016200a5b8565b600060405180830381600087803b1580156200250857600080fd5b505af11580156200251d573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905087868630620025456001426200a71b565b6040518663ffffffff1660e01b8152600401620025679594939291906200a731565b6020604051808303816000875af115801562002587573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025ad91906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200261992016200a5b8565b600060405180830381600087803b1580156200263457600080fd5b505af115801562002649573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905087868630620026714260016200a5cd565b6040518663ffffffff1660e01b8152600401620026939594939291906200a731565b6020604051808303816000875af1158015620026b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015e491906200a1d8565b6060601580548060200260200160405190810160405280929190818152602001828054801562000bdc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bbd575050505050905090565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa158015620027ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027d391906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b03861660248301526000604483018190529394509091169063a0d376cf90606401606060405180830381865afa1580156200283d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200286391906200a515565b50601d54601c549193506000925062002889916001600160a01b03918216911662007513565b60255490915047906000906001600160a01b0316639ab6156b87868630620028b34260016200a5cd565b6040518663ffffffff1660e01b8152600401620028d59594939291906200a731565b6020604051808303816000875af1158015620028f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200291b91906200a1d8565b90506200296881856001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f724e41544956453a3a318152506200768a565b620029b5476200297983856200a5cd565b6040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f724e41544956453a3a328152506200768a565b60255460405163a0d376cf60e01b81526001600160a01b0387811660048301526001600160801b0389166024830152600060448301529091169063a0d376cf90606401606060405180830381865afa15801562002a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a3c91906200a515565b5094506000805160206201da5e833981519152905063f28dceb36313fab00360e21b62002a6b8760016200a595565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002ad0916004016200a5b8565b600060405180830381600087803b15801562002aeb57600080fd5b505af115801562002b00573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b90508762002b258760016200a595565b863062002b344260016200a5cd565b6040518663ffffffff1660e01b815260040162002b569594939291906200a731565b6020604051808303816000875af115801562002b76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9c91906200a1d8565b50601e54604084015180516001600160a01b0390921691600190811062002bc75762002bc76200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002c54916004016200a5b8565b600060405180830381600087803b15801562002c6f57600080fd5b505af115801562002c84573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b90508762002ca98760016200a595565b863062002cb84260016200a5cd565b6040518663ffffffff1660e01b815260040162002cda9594939291906200a731565b6020604051808303816000875af115801562002cfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2091906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62002d4b6001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002da6916004016200a5b8565b600060405180830381600087803b15801562002dc157600080fd5b505af115801562002dd6573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b90508786863062002dfe6001426200a71b565b6040518663ffffffff1660e01b815260040162002e209594939291906200a731565b6020604051808303816000875af115801562002e40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e6691906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb39262002ed292016200a5b8565b600060405180830381600087803b15801562002eed57600080fd5b505af115801562002f02573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b905087868630620026714260016200a5cd565b6000808360ff1611801562002f42575060008260ff16115b62002f595762002f5382846200a77c565b62002f73565b600162002f6783856200a77c565b62002f7391906200a798565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200305057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620030115790505b5050505050815250508152602001906001019062002fa3565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa158015620030db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200310191906200a0f6565b60200151602554604051632593e61f60e21b81526001600160a01b0380841660048301526001600160801b03861660248301526000604483018190529394509091169063964f987c90606401606060405180830381865afa1580156200316b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200319191906200a515565b5050601d54601c54919250600091620031b7916001600160a01b03908116911662007513565b601d546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801562003206573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200322c91906200a1d8565b6025549091506000906001600160a01b0316633dc8f8ec87868630620032544260016200a5cd565b6040518663ffffffff1660e01b8152600401620032769594939291906200a731565b6000604051808303816000875af115801562003296573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032c091908101906200a7b4565b90506200332a81600081518110620032dc57620032dc6200a705565b6020026020010151856001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f7245786163744e41544956453a3a318152506200768a565b601d546040516370a0823160e01b815230600482015262003403916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339c91906200a1d8565b82600081518110620033b257620033b26200a705565b602002602001015184620033c791906200a71b565b6040518060400160405280602081526020017f746573745f53776170546f6b656e73466f7245786163744e41544956453a3a328152506200768a565b602554604051632593e61f60e21b81526001600160a01b0387811660048301526001600160801b0389166024830152600060448301529091169063964f987c90606401606060405180830381865afa15801562003464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200348a91906200a515565b509094506000805160206201da5e833981519152905063f28dceb363194ee21960e31b620034ba6001886200a7ed565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200351f916004016200a5b8565b600060405180830381600087803b1580156200353a57600080fd5b505af11580156200354f573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087620035746001886200a7ed565b8630620035834260016200a5cd565b6040518663ffffffff1660e01b8152600401620035a59594939291906200a731565b6000604051808303816000875af1158015620035c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035ef91908101906200a7b4565b50601e54604084015180516001600160a01b039092169160019081106200361a576200361a6200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620036a7916004016200a5b8565b600060405180830381600087803b158015620036c257600080fd5b505af1158015620036d7573d6000803e3d6000fd5b50506025546001600160a01b03169150633dc8f8ec905087868630620036ff4260016200a5cd565b6040518663ffffffff1660e01b8152600401620037219594939291906200a731565b6000604051808303816000875af115801562003741573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200376b91908101906200a7b4565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b620037966001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620037f1916004016200a5b8565b600060405180830381600087803b1580156200380c57600080fd5b505af115801562003821573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087868630620038496001426200a71b565b6040518663ffffffff1660e01b81526004016200386b9594939291906200a731565b6000604051808303816000875af11580156200388b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620038b591908101906200a7b4565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200392192016200a5b8565b600060405180830381600087803b1580156200393c57600080fd5b505af115801562003951573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087868630620039794260016200a5cd565b6040518663ffffffff1660e01b81526004016200399b9594939291906200a731565b6000604051808303816000875af1158015620039bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015e491908101906200a7b4565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562003a57573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a7d91906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063a0d376cf90606401606060405180830381865afa15801562003ae8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b0e91906200a515565b50601e54601d549193506000925062003b34916001600160a01b03918216911662007513565b601d546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801562003b83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ba991906200a1d8565b6025549091506000906001600160a01b0316632a443fae8786863062003bd14260016200a5cd565b6040518663ffffffff1660e01b815260040162003bf39594939291906200a731565b6020604051808303816000875af115801562003c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c3991906200a1d8565b905062003c8681856001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a318152506200768a565b601d546040516370a0823160e01b815230600482015262003d40916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003cd2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cf891906200a1d8565b62003d0483856200a5cd565b6040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a328152506200768a565b60255460405163a0d376cf60e01b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063a0d376cf90606401606060405180830381865afa15801562003da1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dc791906200a515565b5094506000805160206201da5e833981519152905063f28dceb36313fab00360e21b62003df68760016200a595565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262003e5b916004016200a5b8565b600060405180830381600087803b15801562003e7657600080fd5b505af115801562003e8b573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae90508762003eb08760016200a595565b863062003ebf4260016200a5cd565b6040518663ffffffff1660e01b815260040162003ee19594939291906200a731565b6020604051808303816000875af115801562003f01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f2791906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62003f526001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262003fad916004016200a5b8565b600060405180830381600087803b15801562003fc857600080fd5b505af115801562003fdd573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae905087868630620040056001426200a71b565b6040518663ffffffff1660e01b8152600401620040279594939291906200a731565b6020604051808303816000875af115801562004047573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200406d91906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb392620040d992016200a5b8565b600060405180830381600087803b158015620040f457600080fd5b505af115801562004109573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae905087868630620041314260016200a5cd565b6040518663ffffffff1660e01b8152600401620041539594939291906200a731565b6020604051808303816000875af115801562004173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200419991906200a1d8565b50604080516002808252606082018352909160208301908036833750505060408401819052601e5481516001600160a01b039091169190600090620041e257620041e26200a705565b6001600160a01b0392831660209182029290920101526023546040850151805191909216919060019081106200421c576200421c6200a705565b6001600160a01b039283166020918202929092010152601e5460235460405191831660248301529091166044820152600a60648201526000805160206201da5e8339815191529063f28dceb390636b2471d160e11b9060840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620042bc916004016200a5b8565b600060405180830381600087803b158015620042d757600080fd5b505af1158015620042ec573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae905087868630620026714260016200a5cd565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562004386573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043ac91906200a0f6565b60200151602554604051632593e61f60e21b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063964f987c90606401606060405180830381865afa15801562004417573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200443d91906200a515565b5050601e54601d5491925060009162004463916001600160a01b03908116911662007513565b601e546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015620044b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044d891906200a1d8565b6025549091506000906001600160a01b03166392fe8e7087868630620045004260016200a5cd565b6040518663ffffffff1660e01b8152600401620045229594939291906200a731565b6000604051808303816000875af115801562004542573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200456c91908101906200a7b4565b9050620045d6816000815181106200458857620045886200a705565b6020026020010151856001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a318152506200768a565b601e546040516370a0823160e01b8152306004820152620046af916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200464891906200a1d8565b826000815181106200465e576200465e6200a705565b6020026020010151846200467391906200a71b565b6040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a328152506200768a565b602554604051632593e61f60e21b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063964f987c90606401606060405180830381865afa15801562004710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200473691906200a515565b509094506000805160206201da5e833981519152905063f28dceb363194ee21960e31b620047666001886200a7ed565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620047cb916004016200a5b8565b600060405180830381600087803b158015620047e657600080fd5b505af1158015620047fb573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087620048206001886200a7ed565b8630620036ff4260016200a5cd565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b57838290600052602060002001805462004875906200a4c1565b80601f0160208091040260200160405190810160405280929190818152602001828054620048a3906200a4c1565b8015620048f45780601f10620048c857610100808354040283529160200191620048f4565b820191906000526020600020905b815481529060010190602001808311620048d657829003601f168201915b50505050508152602001906001019062004853565b6000806200491d8462ffffff87166200a5cd565b905060008360ff16116200493257806200494e565b6200494160ff8416826200a71b565b6200494e9060016200a5cd565b90506200495b81620076f0565b95945050505050565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa158015620049d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049fc91906200a0f6565b60200151602554604051632593e61f60e21b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063964f987c90606401606060405180830381865afa15801562004a67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a8d91906200a515565b5050601c54601d5491925060009162004ab3916001600160a01b03908116911662007513565b60255490915047906000906001600160a01b0316632075ad2262004ad98660646200a595565b6001600160801b031688863062004af24260016200a5cd565b6040518663ffffffff1660e01b815260040162004b1394939291906200a6c5565b60006040518083038185885af115801562004b32573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262004b5d91908101906200a7b4565b905062004bc78160008151811062004b795762004b796200a705565b6020026020010151856001600160801b03166040518060400160405280602081526020017f746573745f537761704e4154495645466f724578616374546f6b656e733a3a318152506200768a565b62004c33478260008151811062004be25762004be26200a705565b60200260200101518462004bf791906200a71b565b6040518060400160405280602081526020017f746573745f537761704e4154495645466f724578616374546f6b656e733a3a328152506200768a565b602554604051632593e61f60e21b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063964f987c90606401606060405180830381865afa15801562004c94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cba91906200a515565b509094506000805160206201da5e833981519152905063f28dceb363194ee21960e31b62004cea6002886200a56c565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004d4f916004016200a5b8565b600060405180830381600087803b15801562004d6a57600080fd5b505af115801562004d7f573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad22905062004da36002876200a56c565b6001600160801b031688863062004dbc4260016200a5cd565b6040518663ffffffff1660e01b815260040162004ddd94939291906200a6c5565b60006040518083038185885af115801562004dfc573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262004e2791908101906200a7b4565b50601e54604084015180516001600160a01b039092169160009062004e505762004e506200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004edd916004016200a5b8565b600060405180830381600087803b15801562004ef857600080fd5b505af115801562004f0d573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad2290506001600160801b03861688863062004f3e4260016200a5cd565b6040518663ffffffff1660e01b815260040162004f5f94939291906200a6c5565b60006040518083038185885af115801562004f7e573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262004fa991908101906200a7b4565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62004fd46001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200502f916004016200a5b8565b600060405180830381600087803b1580156200504a57600080fd5b505af11580156200505f573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad2290506001600160801b038616888630620050906001426200a71b565b6040518663ffffffff1660e01b8152600401620050b194939291906200a6c5565b60006040518083038185885af1158015620050d0573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620050fb91908101906200a7b4565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200516792016200a5b8565b600060405180830381600087803b1580156200518257600080fd5b505af115801562005197573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad2290506001600160801b038616888630620051c84260016200a5cd565b6040518663ffffffff1660e01b8152600401620051e994939291906200a6c5565b60006040518083038185885af115801562005208573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620015e491908101906200a7b4565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200530457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620052c55790505b5050505050815250508152602001906001019062005257565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200535e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200538491906200a1f2565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620053c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053ed91906200a1f2565b9050620053fc828b8862007367565b62005409818b8762007367565b600062005417858562002f2a565b905060008167ffffffffffffffff8111156200543757620054376200a0cf565b60405190808252806020026020018201604052801562005461578160200160208202803683370190505b50905060005b82811015620055605760006200547f8b838962004909565b905060008b62ffffff168262ffffff1610158015620054a1575060008960ff16115b620054ae576000620054cf565b620054cf620054c960ff8b16670de0b6b3a76400006200a810565b6200771c565b905060008c62ffffff168362ffffff1611158015620054f1575060008960ff16115b620054fe57600062005519565b62005519620054c960ff8b16670de0b6b3a76400006200a810565b90506200552882828562007748565b8585815181106200553d576200553d6200a705565b6020026020010181815250505050508062005558906200a827565b905062005467565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201da5e833981519152906306447d5690602401600060405180830381600087803b158015620055b257600080fd5b505af1158015620055c7573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af11580156200561b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200564191906200a843565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562005692573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056b891906200a843565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200571857600080fd5b505af11580156200572d573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162005763939291906200a861565b6000604051808303816000875af115801562005783573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620057ad91908101906200a8c7565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b57838290600052602060002001805462005804906200a4c1565b80601f016020809104026020016040519081016040528092919081815260200182805462005832906200a4c1565b8015620058835780601f10620058575761010080835404028352916020019162005883565b820191906000526020600020905b8154815290600101906020018083116200586557829003601f168201915b505050505081526020019060010190620057e2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620058e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200590e91906200a91b565b9998505050505050505050565b60075460009060ff161562005934575060075460ff1690565b604051630667f9d760e41b81526000805160206201da5e833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620059a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059ce91906200a1d8565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562000bdc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bbd575050505050905090565b670de0b6b3a764000083111562005a955760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062005aa3838362002f2a565b905060008167ffffffffffffffff81111562005ac35762005ac36200a0cf565b60405190808252806020026020018201604052801562005aed578160200160208202803683370190505b50905060008267ffffffffffffffff81111562005b0e5762005b0e6200a0cf565b60405190808252806020026020018201604052801562005b38578160200160208202803683370190505b50905060005b8381101562005c4657600062005b5689838862004909565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562005bac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bd291906200a1d8565b90508162ffffff1685848151811062005bef5762005bef6200a705565b602090810291909101015262005c0f818a670de0b6b3a764000062007786565b84848151811062005c245762005c246200a705565b60200260200101818152505050508062005c3e906200a827565b905062005b3e565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201da5e8339815191529063ca669fa790602401600060405180830381600087803b15801562005c9857600080fd5b505af115801562005cad573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062005ce5908d908d90879087906004016200a975565b6000604051808303816000875af115801562005d05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005d2f91908101906200a7b4565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362005e3957601c546040516000805160206201da5e8339815191529163b4d6c782916001600160a01b039091169062005da29062009b6e565b604051809103906000f08015801562005dbf573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162005e049291906200a9b7565b600060405180830381600087803b15801562005e1f57600080fd5b505af115801562005e34573d6000803e3d6000fd5b505050505b600660405162005e499062009b7c565b60ff9091168152602001604051809103906000f08015801562005e70573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062005ea29062009b7c565b60ff9091168152602001604051809103906000f08015801562005ec9573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062005efb9062009b7c565b60ff9091168152602001604051809103906000f08015801562005f22573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062005f549062009b7c565b60ff9091168152602001604051809103906000f08015801562005f7b573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062005fad9062009b7c565b60ff9091168152602001604051809103906000f08015801562005fd4573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b0392909216919091179055604051601290620060069062009b7c565b60ff9091168152602001604051809103906000f0801580156200602d573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200605c9062009b8a565b604051809103906000f08015801562006079573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201da5e8339815191529063c657c71890608401600060405180830381600087803b1580156200611a57600080fd5b505af11580156200612f573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620061a757600080fd5b505af1158015620061bc573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200623457600080fd5b505af115801562006249573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620062c157600080fd5b505af1158015620062d6573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200634e57600080fd5b505af115801562006363573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620063db57600080fd5b505af1158015620063f0573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200646257600080fd5b505af115801562006477573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200650357600080fd5b505af115801562006518573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200659f9062009b98565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620065da573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620066089062009ba6565b6001600160a01b039091168152602001604051809103906000f08015801562006635573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200669457600080fd5b505af1158015620066a9573d6000803e3d6000fd5b50505050620066b7620077b4565b620066c3600a62007b5e565b602454602b54601c546040516001600160a01b03938416939283169290911690620066ee9062009bb4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200672b573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620067669062009bc2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620067a3573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201da5e8339815191529063c657c71890608401600060405180830381600087803b1580156200684457600080fd5b505af115801562006859573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620068e557600080fd5b505af1158015620068fa573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200698957600080fd5b505af11580156200699e573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b15801562006a2a57600080fd5b505af115801562006a3f573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b15801562006acb57600080fd5b505af115801562006ae0573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b15801562006b6c57600080fd5b505af115801562006b81573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562006bdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c0291906200a843565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c8091906200a843565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006cd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006cfe91906200a843565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006d56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006d7c91906200a843565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006dd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006dfa91906200a843565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006e52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e7891906200a843565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006ed0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ef691906200a843565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006f4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f7491906200a843565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006fcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ff291906200a843565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200704a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200707091906200a843565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620070c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070ee91906200a843565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007146573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200716c91906200a843565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620071c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071ea91906200a843565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200726891906200a843565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620072c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072e691906200a843565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200733e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200736491906200a843565b50565b62007376838383600062007c05565b505050565b62007419604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b6000806000806200742d8989898962007e08565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff16815260200160008152602001620074ab8a876200811790919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a00162007502426103e86200a5cd565b90529b9a5050505050505050505050565b6200753860405180606001604052806060815260200160608152602001606081525090565b60408051600180825281830190925290602080830190803683375050508082528051600a91906000906200757057620075706200a705565b60209081029190910101526040805160018082528183019092529081602001602082028036833750505060208201819052805160019190600090620075b957620075b96200a705565b60200260200101906001811115620075d557620075d56200a5e3565b90816001811115620075eb57620075eb6200a5e3565b90525060408051600280825260608201835290916020830190803683375050506040820181905280518491906000906200762957620076296200a705565b60200260200101906001600160a01b031690816001600160a01b0316815250508181604001516001815181106200766457620076646200a705565b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b6040516388b44c8560e01b81526000805160206201da5e833981519152906388b44c8590620076c2908690869086906004016200a9db565b60006040518083038186803b158015620076db57600080fd5b505afa158015620015e4573d6000803e3d6000fd5b8062ffffff811681146200771757604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff81168114620077175760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b6000806000620077978686620081db565b91509150620077aa8686868585620081fa565b9695505050505050565b601c546001600160a01b031615620078295760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200780f57600080fd5b505af115801562007824573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200789e5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200788457600080fd5b505af115801562007899573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620079135760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620078f957600080fd5b505af11580156200790e573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620079885760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200796e57600080fd5b505af115801562007983573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620079fd5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620079e357600080fd5b505af1158015620079f8573d6000803e3d6000fd5b505050505b6020546001600160a01b03161562007a725760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562007a5857600080fd5b505af115801562007a6d573d6000803e3d6000fd5b505050505b6021546001600160a01b03161562007ae75760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562007acd57600080fd5b505af115801562007ae2573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562007b5c5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562007b4257600080fd5b505af115801562007b57573d6000803e3d6000fd5b505050505b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b15801562007be957600080fd5b505af115801562007bfe573d6000803e3d6000fd5b5050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162007c5b916200a9fc565b600060405180830381855afa9150503d806000811462007c98576040519150601f19603f3d011682016040523d82523d6000602084013e62007c9d565b606091505b5091505060008180602001905181019062007cb991906200a1d8565b905062007cf38462007cec8762007ce56370a0823160e01b62007cde600c8d620082ac565b90620082d4565b90620082f2565b906200831b565b821562007e005760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162007d3e91906200a9fc565b600060405180830381855afa9150503d806000811462007d7b576040519150601f19603f3d011682016040523d82523d6000602084013e62007d80565b606091505b5091505060008180602001905181019062007d9c91906200a1d8565b90508286101562007dc75762007db386846200a71b565b62007dbf90826200a71b565b905062007de2565b62007dd383876200a71b565b62007ddf90826200a5cd565b90505b62000b788162007cec6318160ddd60e01b62007cde600c8d620082ac565b505050505050565b60608080600062007e1b6002876200aa1a565b62ffffff1660000362007e715760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e73604482015260640162005a8c565b600062007e806002886200aa3f565b90508662ffffff1667ffffffffffffffff81111562007ea35762007ea36200a0cf565b60405190808252806020026020018201604052801562007ecd578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff81111562007ef15762007ef16200a0cf565b60405190808252806020026020018201604052801562007f1b578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff81111562007f3f5762007f3f6200a0cf565b60405190808252806020026020018201604052801562007f69578160200160208202803683370190505b509250600062007f7b8260016200a1b9565b62007f949062ffffff16670de0b6b3a76400006200a810565b9050600062007fa58360016200a1b9565b62007fb69062ffffff168c6200a810565b905060005b8962ffffff16811015620081085762007fd68960016200a1b9565b62007fe79062ffffff16826200aa58565b62007ff48a60016200a1b9565b6200800090866200aa72565b6200800c908d6200aa9c565b62ffffff166200801d91906200a5cd565b8882815181106200803257620080326200a705565b6020026020010181815250508362ffffff1681116200806e57828682815181106200806157620080616200a705565b6020026020010181815250505b8362ffffff168110620080f357828782815181106200809157620080916200a705565b60200260200101818152505060008211620080ae576000620080e4565b620080e46080620080db8a8481518110620080cd57620080cd6200a705565b602002602001015162008327565b84919062008336565b620080f090866200a5cd565b94505b80620080ff816200a827565b91505062007fbb565b50505050945094509450949050565b6060825167ffffffffffffffff8111156200813657620081366200a0cf565b60405190808252806020026020018201604052801562008160578160200160208202803683370190505b50905060005b8351811015620081d4578262ffffff168482815181106200818b576200818b6200a705565b60200260200101516200819f91906200aabb565b828281518110620081b457620081b46200a705565b602090810291909101015280620081cb816200a827565b91505062008166565b5092915050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362008220578383816200821757620082176200a556565b0490506200495b565b83821062008241576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c179055600082620082cd565b6002820180546001810182556000918252602082206001600160a01b03841691015582620082cd565b620006cb828262008362565b600062002f7982600a6200876f565b600060ff831684811b9061ffff6101008290031686901c90620077aa9087906001901b868585620081fa565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b9460009390929091830182828015620083d557602002820191906000526020600020905b815481526020019060010190808311620083c0575b50505050509050600083620083ea83620087ac565b604051602001620083fd9291906200aade565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620084519186918891016200ab11565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200848c576200848a8762008859565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620084cd9187918991016200ab11565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200851491906200a9fc565b600060405180830381855afa9150503d806000811462008551576040519150601f19603f3d011682016040523d82523d6000602084013e62008556565b606091505b509150620085739050816200856d8860206200aa58565b62008866565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201da5e8339815191529063667f9d7090604401602060405180830381865afa158015620085d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085fb91906200a1d8565b9050808214620086b25760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005a8c565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201da5e833981519152906370ca10bb90606401600060405180830381600087803b1580156200871157600080fd5b505af115801562008726573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200875b60028b01600062009bd0565b896004016000905550505050505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff19016200495b828262008908565b6060600082516020620087c091906200aa58565b67ffffffffffffffff811115620087db57620087db6200a0cf565b6040519080825280601f01601f19166020018201604052801562008806576020820181803683370190505b50905060005b8351811015620081d45760008482815181106200882d576200882d6200a705565b60200260200101519050808260200260200184015250808062008850906200a827565b9150506200880c565b600062002f798262008b87565b600080600060208551116200887d57845162008880565b60205b905060005b81811015620088fe576200889b8160086200aa58565b86620088a883886200a5cd565b81518110620088bb57620088bb6200a705565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620088f5816200a827565b91505062008885565b5090949350505050565b600080600083600003620089265750600160801b915062002f799050565b5082600081121562008939579015906000035b6210000081101562008b3f57600160801b9250846001600160801b038111156200896557911591600019045b6001821615620089775792830260801c925b800260801c60028216156200898e5792830260801c925b800260801c6004821615620089a55792830260801c925b800260801c6008821615620089bc5792830260801c925b800260801c6010821615620089d35792830260801c925b800260801c6020821615620089ea5792830260801c925b800260801c604082161562008a015792830260801c925b8002608090811c9082161562008a195792830260801c925b800260801c61010082161562008a315792830260801c925b800260801c61020082161562008a495792830260801c925b800260801c61040082161562008a615792830260801c925b800260801c61080082161562008a795792830260801c925b800260801c61100082161562008a915792830260801c925b800260801c61200082161562008aa95792830260801c925b800260801c61400082161562008ac15792830260801c925b800260801c61800082161562008ad95792830260801c925b800260801c6201000082161562008af25792830260801c925b800260801c6202000082161562008b0b5792830260801c925b800260801c6204000082161562008b245792830260801c925b800260801c6208000082161562008b3d5792830260801c925b505b8260000362008b6c57604051631dba598d60e11b8152600481018690526024810185905260440162005a8c565b8162008b7957826200495b565b6200495b836000196200a810565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562008bf957602002820191906000526020600020905b81548152602001906001019080831162008be4575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062008c45925085918791016200ab11565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562008ce4576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162008cb49185918791016200ab11565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362008cf28362009a29565b60405160200162008d059291906200aade565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562008d7557600080fd5b505af115801562008d8a573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162008dab91906200a9fc565b600060405180830381855afa9150503d806000811462008de8576040519150601f19603f3d011682016040523d82523d6000602084013e62008ded565b606091505b50915062008e0a90508162008e048760206200aa58565b62009ad6565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201da5e833981519152906365bc9481906024016000604051808303816000875af115801562008e67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262008e9191908101906200ab4d565b5090508051600103620092355760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062008ee95762008ee96200a705565b60200260200101516040518363ffffffff1660e01b815260040162008f239291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008f41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008f6791906200a1d8565b90508062008fd2577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062008fa75762008fa76200a705565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620090875760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005a8c565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620090bf9291906200ab11565b6040516020818303038152906040528051906020012085600081518110620090eb57620090eb6200a705565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200914557620091456200a705565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262009190918a918c91016200ab11565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c16855282528284209251909391620091fa918a918c91016200ab11565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200989e565b6001815111156200982d5760005b8151811015620098265760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200929757620092976200a705565b60200260200101516040518363ffffffff1660e01b8152600401620092d19291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620092ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200931591906200a1d8565b9050806200937f577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200935457620093546200a705565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200938e575062009811565b82518119906000805160206201da5e833981519152906370ca10bb908c90879087908110620093c157620093c16200a705565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200941a57600080fd5b505af11580156200942f573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200945191906200a9fc565b600060405180830381855afa9150503d80600081146200948e576040519150601f19603f3d011682016040523d82523d6000602084013e62009493565b606091505b509092509050620094ab8162008e048c60206200aa58565b965050808015620094bb57508186145b1562009753577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620094f99291906200ab11565b604051602081830303815290604052805190602001208888815181106200952457620095246200a705565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200957d576200957d6200a705565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620095c8918d918f91016200ab11565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620096559291906200ab11565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620096d857620096d86200a705565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200973157600080fd5b505af115801562009746573d6000803e3d6000fd5b5050505050505062009826565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200979b576200979b6200a705565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620097f457600080fd5b505af115801562009809573d6000803e3d6000fd5b505050505050505b806200981d816200a827565b91505062009243565b506200989e565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162005a8c565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620098e29188918a91016200ab11565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200997f5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162005a8c565b6005890180546001600160a01b031916905560038901805463ffffffff19169055620099b060028a01600062009bd0565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620099f69188918a91016200ab11565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062009a3d91906200aa58565b67ffffffffffffffff81111562009a585762009a586200a0cf565b6040519080825280601f01601f19166020018201604052801562009a83576020820181803683370190505b50905060005b8351811015620081d457600084828151811062009aaa5762009aaa6200a705565b60200260200101519050808260200260200184015250808062009acd906200a827565b91505062009a89565b6000806000602085511162009aed57845162009af0565b60205b905060005b81811015620088fe5762009b0b8160086200aa58565b8662009b1883886200a5cd565b8151811062009b2b5762009b2b6200a705565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062009b65816200a827565b91505062009af5565b610b08806200abb983390190565b610bfd806200b6c183390190565b610c18806200c2be83390190565b613199806200ced683390190565b61615c806201006f83390190565b614c8080620161cb83390190565b612c13806201ae4b83390190565b50805460008255906000526020600020908101906200736491905b8082111562009c01576000815560010162009beb565b5090565b60006020828403121562009c1857600080fd5b81356001600160e01b031981168114620082cd57600080fd5b6020808252825182820181905260009190848201906040850190845b8181101562009c745783516001600160a01b03168352928401929184019160010162009c4d565b50909695505050505050565b60005b8381101562009c9d57818101518382015260200162009c83565b50506000910152565b6000815180845262009cc081602086016020860162009c80565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562009d8a57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562009d7357605f1989850301835262009d6084865162009ca6565b948e01949350918d019160010162009d41565b505050978a01979450509188019160010162009cfb565b50919a9950505050505050505050565b803560ff811681146200771757600080fd5b6000806040838503121562009dc057600080fd5b62009dcb8362009d9a565b915062009ddb6020840162009d9a565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562009e8c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562009e765783516001600160e01b0319168252928b019260019290920191908b019062009e4a565b50978a0197955050509187019160010162009e0c565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562009ef457603f1988860301845262009ee185835162009ca6565b9450928501929085019060010162009ec2565b5092979650505050505050565b62ffffff811681146200736457600080fd5b60008060006060848603121562009f2957600080fd5b833562009f368162009f01565b92506020840135915062009f4d6040850162009d9a565b90509250925092565b6001600160a01b03811681146200736457600080fd5b600080600080600080600080610100898b03121562009f8a57600080fd5b883562009f978162009f56565b9750602089013562009fa98162009f56565b9650604089013562009fbb8162009f56565b9550606089013562009fcd8162009f01565b94506080890135935060a0890135925062009feb60c08a0162009d9a565b915062009ffb60e08a0162009d9a565b90509295985092959890939650565b61ffff811681146200736457600080fd5b6000602082840312156200a02e57600080fd5b8135620082cd816200a00a565b600080600080600080600060e0888a0312156200a05757600080fd5b87356200a0648162009f56565b965060208801356200a0768162009f56565b955060408801356200a0888162009f56565b945060608801356200a09a8162009f01565b9350608088013592506200a0b160a0890162009d9a565b91506200a0c160c0890162009d9a565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b805180151581146200771757600080fd5b6000608082840312156200a10957600080fd5b6040516080810181811067ffffffffffffffff821117156200a12f576200a12f6200a0cf565b60405282516200a13f816200a00a565b815260208301516200a1518162009f56565b60208201526200a164604084016200a0e5565b60408201526200a177606084016200a0e5565b60608201529392505050565b6000602082840312156200a19657600080fd5b8151620082cd8162009f01565b634e487b7160e01b600052601160045260246000fd5b62ffffff818116838216019080821115620081d457620081d46200a1a3565b6000602082840312156200a1eb57600080fd5b5051919050565b6000602082840312156200a20557600080fd5b8151620082cd8162009f56565b600081518084526020808501945080840160005b838110156200a244578151875295820195908201906001016200a226565b509495945050505050565b602081526200a26a6020820183516001600160a01b03169052565b600060208301516200a28760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200a2f86102008601846200a212565b9250808601519050601f196101608187860301818801526200a31b85846200a212565b9450808801519250506101808187860301818801526200a33c85846200a212565b945080880151925050506101a06200a35e818701836001600160a01b03169052565b86015190506101c06200a37b868201836001600160a01b03169052565b959095015193019290925250919050565b600082601f8301126200a39e57600080fd5b8151602067ffffffffffffffff808311156200a3be576200a3be6200a0cf565b8260051b604051601f19603f830116810181811084821117156200a3e6576200a3e66200a0cf565b6040529384528581018301938381019250878511156200a40557600080fd5b83870191505b848210156200a426578151835291830191908301906200a40b565b979650505050505050565b60008060008060008060c087890312156200a44b57600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff808211156200a48057600080fd5b6200a48e8a838b016200a38c565b935060a08901519150808211156200a4a557600080fd5b506200a4b489828a016200a38c565b9150509295509295509295565b600181811c908216806200a4d657607f821691505b6020821081036200a4f757634e487b7160e01b600052602260045260246000fd5b50919050565b80516001600160801b03811681146200771757600080fd5b6000806000606084860312156200a52b57600080fd5b6200a536846200a4fd565b92506200a546602085016200a4fd565b915062009f4d604085016200a4fd565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b03808416806200a589576200a5896200a556565b92169190910492915050565b6001600160801b03818116838216019080821115620081d457620081d46200a1a3565b602081526000620082cd602083018462009ca6565b8082018082111562002f795762002f796200a1a3565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b838110156200a2445781516001600160a01b0316875295820195908201906001016200a60d565b60008151606084526200a64b60608501826200a212565b6020848101518683038783015280518084529082019350909160009190830190825b818110156200a6a8578551600281106200a69557634e487b7160e01b85526021600452602485fd5b835294840194918401916001016200a66d565b50506040860151935086810360408801526200a42681856200a5f9565b6001600160801b03851681526080602082015260006200a6e960808301866200a634565b6001600160a01b03949094166040830152506060015292915050565b634e487b7160e01b600052603260045260246000fd5b8181038181111562002f795762002f796200a1a3565b60006001600160801b03808816835280871660208401525060a060408301526200a75f60a08301866200a634565b6001600160a01b0394909416606083015250608001529392505050565b60ff818116838216019081111562002f795762002f796200a1a3565b60ff828116828216039081111562002f795762002f796200a1a3565b6000602082840312156200a7c757600080fd5b815167ffffffffffffffff8111156200a7df57600080fd5b6200777e848285016200a38c565b6001600160801b03828116828216039080821115620081d457620081d46200a1a3565b6000826200a822576200a8226200a556565b500490565b6000600182016200a83c576200a83c6200a1a3565b5060010190565b6000602082840312156200a85657600080fd5b620082cd826200a0e5565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200a8ae578551835294830194918301916001016200a890565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200a8dd57600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200a90357600080fd5b6200a911868287016200a38c565b9150509250925092565b600080600080600080600080610100898b0312156200a93957600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062009ffb60e08a016200a0e5565b60006001600160a01b038087168352808616602084015250608060408301526200a9a360808301856200a212565b82810360608401526200a42681856200a212565b6001600160a01b03831681526040602082015260006200777e604083018462009ca6565b8381528260208201526060604082015260006200495b606083018462009ca6565b600082516200aa1081846020870162009c80565b9190910192915050565b600062ffffff808416806200aa33576200aa336200a556565b92169190910692915050565b600062ffffff808416806200a589576200a5896200a556565b808202811582820484141762002f795762002f796200a1a3565b62ffffff8181168382160280821691908281146200aa94576200aa946200a1a3565b505092915050565b62ffffff828116828216039080821115620081d457620081d46200a1a3565b8181036000831280158383131683831282161715620081d457620081d46200a1a3565b6001600160e01b03198316815281516000906200ab0381600485016020870162009c80565b919091016004019392505050565b825160009082906020808701845b838110156200ab3d578151855293820193908201906001016200ab1f565b5050948252509092019392505050565b600080604083850312156200ab6157600080fd5b825167ffffffffffffffff808211156200ab7a57600080fd5b6200ab88868387016200a38c565b935060208501519150808211156200ab9f57600080fd5b506200abae858286016200a38c565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f537761704578616374546f6b656e73466f724e4154495645537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a32746573745f537761704578616374546f6b656e73466f724e4154495645537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a31746573745f5377617045786163744e4154495645466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a32746573745f5377617045786163744e4154495645466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a31a2646970667358221220e2c2f17d6506ab5bf5ef77d4418327b31a74b38f15b43d8938c656c93955a40664736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;555:19551:92;1812:17:93;;555:19551:92;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;555:19551:92;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;555:19551:92;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610620001c75760003560e01c80636d09084011620000f3578063916a17c61162000095578063b89e0233116200006c578063b89e0233146200049f578063ba414fa614620004c4578063e20c9f7114620004dc578063fecaa22314620004f457600080fd5b8063916a17c6146200044a578063a7aa85e91462000462578063b5508aa9146200048757600080fd5b806385226c8111620000ca57806385226c8114620003d1578063889be5b714620003f85780638f8d57ea146200043257600080fd5b80636d090840146200038957806372b01c7a14620003a15780637594f3a114620003b957600080fd5b806338a637ed11620001695780633f7286f411620001405780633f7286f414620002fe5780634415cf9d146200031657806349789ef9146200032e57806366d9a9a0146200036257600080fd5b806338a637ed14620002b65780633e5e3c2314620002ce5780633f6fb2f714620002e657600080fd5b80631ed7831c116200019e5780631ed7831c14620002505780632ade388014620002775780632debd6fd146200029e57600080fd5b806301ffc9a714620001d4578063061794b3146200021e5780630a9254e4146200023857600080fd5b36620001cf57005b600080fd5b348015620001e157600080fd5b5062000209620001f336600462009c05565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b3480156200022b57600080fd5b506200023662000519565b005b3480156200024557600080fd5b5062000236620006cf565b3480156200025d57600080fd5b506200026862000b82565b60405162000215919062009c31565b3480156200028457600080fd5b506200028f62000be6565b60405162000215919062009cd4565b348015620002ab57600080fd5b506200023662000d34565b348015620002c357600080fd5b5062000236620015ed565b348015620002db57600080fd5b506200026862001ed8565b348015620002f357600080fd5b506200023662001f3a565b3480156200030b57600080fd5b5062000268620026d9565b3480156200032357600080fd5b50620002366200273b565b3480156200033b57600080fd5b50620003536200034d36600462009dac565b62002f2a565b60405190815260200162000215565b3480156200036f57600080fd5b506200037a62002f7f565b60405162000215919062009de4565b3480156200039657600080fd5b506200023662003069565b348015620003ae57600080fd5b5062000236620039e5565b348015620003c657600080fd5b506200023662004314565b348015620003de57600080fd5b50620003e96200482f565b60405162000215919062009e9b565b3480156200040557600080fd5b506200041d6200041736600462009f13565b62004909565b60405162ffffff909116815260200162000215565b3480156200043f57600080fd5b506200023662004964565b3480156200045757600080fd5b506200037a62005233565b3480156200046f57600080fd5b50620002366200048136600462009f6c565b6200531d565b3480156200049457600080fd5b50620003e9620057be565b348015620004ac57600080fd5b5062000209620004be3660046200a01b565b62005898565b348015620004d157600080fd5b50620002096200591b565b348015620004e957600080fd5b5062000268620059d5565b3480156200050157600080fd5b5062000236620005133660046200a03b565b62005a37565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a604484015260009291169063704037bd90606401608060405180830381865afa1580156200057e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a491906200a0f6565b6020015160255460405163f96fe92560e01b81526001600160a01b0380841660048301527002b78853aaac41bff0c3916eff1037c97a602483015292935091169063f96fe92590604401602060405180830381865afa1580156200060c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063291906200a183565b506025546001600160a01b031663d0e380f28262000656628000006103e86200a1b9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015262ffffff166024820152604401602060405180830381865afa158015620006a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006cb91906200a1d8565b5050565b620006d962005d3c565b60248054604051634cd161d360e01b8152600a60048201526001928101929092526001600160a01b031690634cd161d390604401600060405180830381600087803b1580156200072857600080fd5b505af11580156200073d573d6000803e3d6000fd5b5050602554601e54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a60648201529116925063659ac74b91506084016020604051808303816000875af1158015620007ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d191906200a1f2565b50602554601c54601d5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af11580156200083c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200086291906200a1f2565b50602554602354601c5460405163659ac74b60e01b81526001600160a01b0392831660048201529082166024820152628000006044820152600a606482015291169063659ac74b906084016020604051808303816000875af1158015620008cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f391906200a1f2565b50601d546dffffffffffffffffffffffffffff906200091d906001600160a01b0316308362007367565b601e5462000936906001600160a01b0316308362007367565b6023546200094f906001600160a01b0316308362007367565b601e54601d5460009162000981916001600160a01b03918216911668056bc75e2d6310000062800000600f866200737b565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a90620009b49084906004016200a24f565b6000604051808303816000875af1158015620009d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009fe91908101906200a431565b5050601c54601d5462000a3695506001600160a01b03918216945016915068056bc75e2d63100000905062800000600f60006200737b565b60255460608201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c919062000a719085906004016200a24f565b60006040518083038185885af115801562000a90573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000abb91908101906200a431565b5050602354601c5462000af395506001600160a01b039182169450169150680ad78ebc5ac6200000905062800000600f60006200737b565b60255460808201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c919062000b2e9085906004016200a24f565b60006040518083038185885af115801562000b4d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000b7891908101906200a431565b5050505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000bdc57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bbd575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000d1357838290600052602060002001805462000c7f906200a4c1565b80601f016020809104026020016040519081016040528092919081815260200182805462000cad906200a4c1565b801562000cfe5780601f1062000cd25761010080835404028352916020019162000cfe565b820191906000526020600020905b81548152906001019060200180831162000ce057829003601f168201915b50505050508152602001906001019062000c5d565b50505050815250508152602001906001019062000c0a565b50505050905090565b60248054602354601c5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562000da6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dcc91906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b03861660248301526000604483018190529394509091169063a0d376cf90606401606060405180830381865afa15801562000e36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e5c91906200a515565b50601c546023549193506000925062000e82916001600160a01b03918216911662007513565b90506000805160206201da5e83398151915263f28dceb36313fab00360e21b8462000eaf6002826200a56c565b62000ebc9060016200a595565b6040516001600160801b0392831660248201529116604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262000f20916004016200a5b8565b600060405180830381600087803b15801562000f3b57600080fd5b505af115801562000f50573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b03861684843062000f814260016200a5cd565b6040518663ffffffff1660e01b815260040162000fa294939291906200a6c5565b60206040518083038185885af115801562000fc1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000fe891906200a1d8565b506023546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801562001033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200105991906200a1d8565b6025549091506000906001600160a01b031663e038e6dc6001600160801b038816620010876002886200a56c565b8630620010964260016200a5cd565b6040518663ffffffff1660e01b8152600401620010b794939291906200a6c5565b60206040518083038185885af1158015620010d6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620010fd91906200a1d8565b90506200114781620011116002876200a56c565b6200111e9060016200a595565b6001600160801b03166040518060600160405280603d81526020016201db35603d91396200768a565b6023546040516370a0823160e01b8152306004820152620011e5916001600160a01b0316906370a0823190602401602060405180830381865afa15801562001193573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011b991906200a1d8565b620011c583856200a5cd565b6040518060600160405280603d81526020016201daf8603d91396200768a565b601e54604084015180516001600160a01b03909216916000906200120d576200120d6200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200129a916004016200a5b8565b600060405180830381600087803b158015620012b557600080fd5b505af1158015620012ca573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b038816868630620012fb4260016200a5cd565b6040518663ffffffff1660e01b81526004016200131c94939291906200a6c5565b60206040518083038185885af11580156200133b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200136291906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b6200138d6001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620013e8916004016200a5b8565b600060405180830381600087803b1580156200140357600080fd5b505af115801562001418573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b038816868630620014496001426200a71b565b6040518663ffffffff1660e01b81526004016200146a94939291906200a6c5565b60206040518083038185885af115801562001489573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620014b091906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200151c92016200a5b8565b600060405180830381600087803b1580156200153757600080fd5b505af11580156200154c573d6000803e3d6000fd5b50506025546001600160a01b0316915063e038e6dc90506001600160801b0388168686306200157d4260016200a5cd565b6040518663ffffffff1660e01b81526004016200159e94939291906200a6c5565b60206040518083038185885af1158015620015bd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620015e491906200a1d8565b50505050505050565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa1580156200165f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200168591906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063a0d376cf90606401606060405180830381865afa158015620016f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200171691906200a515565b50601c54601d54919350600092506200173c916001600160a01b03918216911662007513565b601d546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156200178b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017b191906200a1d8565b6025549091506000906001600160a01b031663b066ea7c6001600160801b038816868630620017e24260016200a5cd565b6040518663ffffffff1660e01b81526004016200180394939291906200a6c5565b60206040518083038185885af115801562001822573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200184991906200a1d8565b90506200189681856001600160801b03166040518060400160405280602081526020017f746573745f5377617045786163744e4154495645466f72546f6b656e733a3a318152506200768a565b601d546040516370a0823160e01b815230600482015262001950916001600160a01b0316906370a0823190602401602060405180830381865afa158015620018e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200190891906200a1d8565b6200191483856200a5cd565b6040518060400160405280602081526020017f746573745f5377617045786163744e4154495645466f72546f6b656e733a3a328152506200768a565b60255460405163a0d376cf60e01b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063a0d376cf90606401606060405180830381865afa158015620019b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019d791906200a515565b5094506000805160206201da5e833981519152905063f28dceb36313fab00360e21b62001a068760016200a595565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262001a6b916004016200a5b8565b600060405180830381600087803b15801562001a8657600080fd5b505af115801562001a9b573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b03881662001ac98760016200a595565b863062001ad84260016200a5cd565b6040518663ffffffff1660e01b815260040162001af994939291906200a6c5565b60206040518083038185885af115801562001b18573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001b3f91906200a1d8565b50601e54604084015180516001600160a01b039092169160009062001b685762001b686200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262001bf5916004016200a5b8565b600060405180830381600087803b15801562001c1057600080fd5b505af115801562001c25573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b03881686863062001c564260016200a5cd565b6040518663ffffffff1660e01b815260040162001c7794939291906200a6c5565b60206040518083038185885af115801562001c96573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001cbd91906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62001ce86001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262001d43916004016200a5b8565b600060405180830381600087803b15801562001d5e57600080fd5b505af115801562001d73573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b03881686863062001da46001426200a71b565b6040518663ffffffff1660e01b815260040162001dc594939291906200a6c5565b60206040518083038185885af115801562001de4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062001e0b91906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb39262001e7792016200a5b8565b600060405180830381600087803b15801562001e9257600080fd5b505af115801562001ea7573d6000803e3d6000fd5b50506025546001600160a01b0316915063b066ea7c90506001600160801b0388168686306200157d4260016200a5cd565b6060601680548060200260200160405190810160405280929190818152602001828054801562000bdc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bbd575050505050905090565b60248054602354601c5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562001fac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd291906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063a0d376cf90606401606060405180830381865afa1580156200203d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206391906200a515565b50602354601c549193506000925062002089916001600160a01b03918216911662007513565b90506000805160206201da5e83398151915263f28dceb36313fab00360e21b84620020b66002826200a56c565b6040516001600160801b0392831660248201529116604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200211a916004016200a5b8565b600060405180830381600087803b1580156200213557600080fd5b505af11580156200214a573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905085848430620021724260016200a5cd565b6040518663ffffffff1660e01b8152600401620021949594939291906200a731565b6020604051808303816000875af1158015620021b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021da91906200a1d8565b5060255447906000906001600160a01b0316631a24f9a987620021ff6002886200a56c565b86306200220e4260016200a5cd565b6040518663ffffffff1660e01b8152600401620022309594939291906200a731565b6020604051808303816000875af115801562002250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200227691906200a1d8565b9050620022b3816200228a6002876200a56c565b6001600160801b03166040518060600160405280603d81526020016201dabb603d91396200768a565b620022e447620022c483856200a5cd565b6040518060600160405280603d81526020016201da7e603d91396200768a565b601e54604084015180516001600160a01b039092169160019081106200230e576200230e6200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200239b916004016200a5b8565b600060405180830381600087803b158015620023b657600080fd5b505af1158015620023cb573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905087620023f08760016200a595565b8630620023ff4260016200a5cd565b6040518663ffffffff1660e01b8152600401620024219594939291906200a731565b6020604051808303816000875af115801562002441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200246791906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b620024926001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620024ed916004016200a5b8565b600060405180830381600087803b1580156200250857600080fd5b505af11580156200251d573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905087868630620025456001426200a71b565b6040518663ffffffff1660e01b8152600401620025679594939291906200a731565b6020604051808303816000875af115801562002587573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025ad91906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200261992016200a5b8565b600060405180830381600087803b1580156200263457600080fd5b505af115801562002649573d6000803e3d6000fd5b50506025546001600160a01b03169150631a24f9a9905087868630620026714260016200a5cd565b6040518663ffffffff1660e01b8152600401620026939594939291906200a731565b6020604051808303816000875af1158015620026b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015e491906200a1d8565b6060601580548060200260200160405190810160405280929190818152602001828054801562000bdc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bbd575050505050905090565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa158015620027ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027d391906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b03861660248301526000604483018190529394509091169063a0d376cf90606401606060405180830381865afa1580156200283d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200286391906200a515565b50601d54601c549193506000925062002889916001600160a01b03918216911662007513565b60255490915047906000906001600160a01b0316639ab6156b87868630620028b34260016200a5cd565b6040518663ffffffff1660e01b8152600401620028d59594939291906200a731565b6020604051808303816000875af1158015620028f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200291b91906200a1d8565b90506200296881856001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f724e41544956453a3a318152506200768a565b620029b5476200297983856200a5cd565b6040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f724e41544956453a3a328152506200768a565b60255460405163a0d376cf60e01b81526001600160a01b0387811660048301526001600160801b0389166024830152600060448301529091169063a0d376cf90606401606060405180830381865afa15801562002a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a3c91906200a515565b5094506000805160206201da5e833981519152905063f28dceb36313fab00360e21b62002a6b8760016200a595565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002ad0916004016200a5b8565b600060405180830381600087803b15801562002aeb57600080fd5b505af115801562002b00573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b90508762002b258760016200a595565b863062002b344260016200a5cd565b6040518663ffffffff1660e01b815260040162002b569594939291906200a731565b6020604051808303816000875af115801562002b76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9c91906200a1d8565b50601e54604084015180516001600160a01b0390921691600190811062002bc75762002bc76200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002c54916004016200a5b8565b600060405180830381600087803b15801562002c6f57600080fd5b505af115801562002c84573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b90508762002ca98760016200a595565b863062002cb84260016200a5cd565b6040518663ffffffff1660e01b815260040162002cda9594939291906200a731565b6020604051808303816000875af115801562002cfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2091906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62002d4b6001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262002da6916004016200a5b8565b600060405180830381600087803b15801562002dc157600080fd5b505af115801562002dd6573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b90508786863062002dfe6001426200a71b565b6040518663ffffffff1660e01b815260040162002e209594939291906200a731565b6020604051808303816000875af115801562002e40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e6691906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb39262002ed292016200a5b8565b600060405180830381600087803b15801562002eed57600080fd5b505af115801562002f02573d6000803e3d6000fd5b50506025546001600160a01b03169150639ab6156b905087868630620026714260016200a5cd565b6000808360ff1611801562002f42575060008260ff16115b62002f595762002f5382846200a77c565b62002f73565b600162002f6783856200a77c565b62002f7391906200a798565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200305057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620030115790505b5050505050815250508152602001906001019062002fa3565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa158015620030db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200310191906200a0f6565b60200151602554604051632593e61f60e21b81526001600160a01b0380841660048301526001600160801b03861660248301526000604483018190529394509091169063964f987c90606401606060405180830381865afa1580156200316b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200319191906200a515565b5050601d54601c54919250600091620031b7916001600160a01b03908116911662007513565b601d546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801562003206573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200322c91906200a1d8565b6025549091506000906001600160a01b0316633dc8f8ec87868630620032544260016200a5cd565b6040518663ffffffff1660e01b8152600401620032769594939291906200a731565b6000604051808303816000875af115801562003296573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032c091908101906200a7b4565b90506200332a81600081518110620032dc57620032dc6200a705565b6020026020010151856001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f7245786163744e41544956453a3a318152506200768a565b601d546040516370a0823160e01b815230600482015262003403916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339c91906200a1d8565b82600081518110620033b257620033b26200a705565b602002602001015184620033c791906200a71b565b6040518060400160405280602081526020017f746573745f53776170546f6b656e73466f7245786163744e41544956453a3a328152506200768a565b602554604051632593e61f60e21b81526001600160a01b0387811660048301526001600160801b0389166024830152600060448301529091169063964f987c90606401606060405180830381865afa15801562003464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200348a91906200a515565b509094506000805160206201da5e833981519152905063f28dceb363194ee21960e31b620034ba6001886200a7ed565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200351f916004016200a5b8565b600060405180830381600087803b1580156200353a57600080fd5b505af11580156200354f573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087620035746001886200a7ed565b8630620035834260016200a5cd565b6040518663ffffffff1660e01b8152600401620035a59594939291906200a731565b6000604051808303816000875af1158015620035c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035ef91908101906200a7b4565b50601e54604084015180516001600160a01b039092169160019081106200361a576200361a6200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620036a7916004016200a5b8565b600060405180830381600087803b158015620036c257600080fd5b505af1158015620036d7573d6000803e3d6000fd5b50506025546001600160a01b03169150633dc8f8ec905087868630620036ff4260016200a5cd565b6040518663ffffffff1660e01b8152600401620037219594939291906200a731565b6000604051808303816000875af115801562003741573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200376b91908101906200a7b4565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b620037966001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620037f1916004016200a5b8565b600060405180830381600087803b1580156200380c57600080fd5b505af115801562003821573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087868630620038496001426200a71b565b6040518663ffffffff1660e01b81526004016200386b9594939291906200a731565b6000604051808303816000875af11580156200388b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620038b591908101906200a7b4565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200392192016200a5b8565b600060405180830381600087803b1580156200393c57600080fd5b505af115801562003951573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087868630620039794260016200a5cd565b6040518663ffffffff1660e01b81526004016200399b9594939291906200a731565b6000604051808303816000875af1158015620039bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015e491908101906200a7b4565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562003a57573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a7d91906200a0f6565b6020015160255460405163a0d376cf60e01b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063a0d376cf90606401606060405180830381865afa15801562003ae8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b0e91906200a515565b50601e54601d549193506000925062003b34916001600160a01b03918216911662007513565b601d546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801562003b83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ba991906200a1d8565b6025549091506000906001600160a01b0316632a443fae8786863062003bd14260016200a5cd565b6040518663ffffffff1660e01b815260040162003bf39594939291906200a731565b6020604051808303816000875af115801562003c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c3991906200a1d8565b905062003c8681856001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a318152506200768a565b601d546040516370a0823160e01b815230600482015262003d40916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003cd2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cf891906200a1d8565b62003d0483856200a5cd565b6040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a328152506200768a565b60255460405163a0d376cf60e01b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063a0d376cf90606401606060405180830381865afa15801562003da1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dc791906200a515565b5094506000805160206201da5e833981519152905063f28dceb36313fab00360e21b62003df68760016200a595565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262003e5b916004016200a5b8565b600060405180830381600087803b15801562003e7657600080fd5b505af115801562003e8b573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae90508762003eb08760016200a595565b863062003ebf4260016200a5cd565b6040518663ffffffff1660e01b815260040162003ee19594939291906200a731565b6020604051808303816000875af115801562003f01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f2791906200a1d8565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62003f526001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262003fad916004016200a5b8565b600060405180830381600087803b15801562003fc857600080fd5b505af115801562003fdd573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae905087868630620040056001426200a71b565b6040518663ffffffff1660e01b8152600401620040279594939291906200a731565b6020604051808303816000875af115801562004047573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200406d91906200a1d8565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb392620040d992016200a5b8565b600060405180830381600087803b158015620040f457600080fd5b505af115801562004109573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae905087868630620041314260016200a5cd565b6040518663ffffffff1660e01b8152600401620041539594939291906200a731565b6020604051808303816000875af115801562004173573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200419991906200a1d8565b50604080516002808252606082018352909160208301908036833750505060408401819052601e5481516001600160a01b039091169190600090620041e257620041e26200a705565b6001600160a01b0392831660209182029290920101526023546040850151805191909216919060019081106200421c576200421c6200a705565b6001600160a01b039283166020918202929092010152601e5460235460405191831660248301529091166044820152600a60648201526000805160206201da5e8339815191529063f28dceb390636b2471d160e11b9060840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620042bc916004016200a5b8565b600060405180830381600087803b158015620042d757600080fd5b505af1158015620042ec573d6000803e3d6000fd5b50506025546001600160a01b03169150632a443fae905087868630620026714260016200a5cd565b60248054601e54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa15801562004386573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043ac91906200a0f6565b60200151602554604051632593e61f60e21b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063964f987c90606401606060405180830381865afa15801562004417573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200443d91906200a515565b5050601e54601d5491925060009162004463916001600160a01b03908116911662007513565b601e546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015620044b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044d891906200a1d8565b6025549091506000906001600160a01b03166392fe8e7087868630620045004260016200a5cd565b6040518663ffffffff1660e01b8152600401620045229594939291906200a731565b6000604051808303816000875af115801562004542573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200456c91908101906200a7b4565b9050620045d6816000815181106200458857620045886200a705565b6020026020010151856001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a318152506200768a565b601e546040516370a0823160e01b8152306004820152620046af916001600160a01b0316906370a0823190602401602060405180830381865afa15801562004622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200464891906200a1d8565b826000815181106200465e576200465e6200a705565b6020026020010151846200467391906200a71b565b6040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a328152506200768a565b602554604051632593e61f60e21b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063964f987c90606401606060405180830381865afa15801562004710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200473691906200a515565b509094506000805160206201da5e833981519152905063f28dceb363194ee21960e31b620047666001886200a7ed565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b9092168252620047cb916004016200a5b8565b600060405180830381600087803b158015620047e657600080fd5b505af1158015620047fb573d6000803e3d6000fd5b50506025546001600160a01b031691506392fe8e70905087620048206001886200a7ed565b8630620036ff4260016200a5cd565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b57838290600052602060002001805462004875906200a4c1565b80601f0160208091040260200160405190810160405280929190818152602001828054620048a3906200a4c1565b8015620048f45780601f10620048c857610100808354040283529160200191620048f4565b820191906000526020600020905b815481529060010190602001808311620048d657829003601f168201915b50505050508152602001906001019062004853565b6000806200491d8462ffffff87166200a5cd565b905060008360ff16116200493257806200494e565b6200494160ff8416826200a71b565b6200494e9060016200a5cd565b90506200495b81620076f0565b95945050505050565b60248054601c54601d5460405163704037bd60e01b81526001600160a01b03928316600482015290821693810193909352600a60448401526801158e460913d0000092600092919091169063704037bd90606401608060405180830381865afa158015620049d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620049fc91906200a0f6565b60200151602554604051632593e61f60e21b81526001600160a01b0380841660048301526001600160801b0386166024830152600160448301529293506000929091169063964f987c90606401606060405180830381865afa15801562004a67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a8d91906200a515565b5050601c54601d5491925060009162004ab3916001600160a01b03908116911662007513565b60255490915047906000906001600160a01b0316632075ad2262004ad98660646200a595565b6001600160801b031688863062004af24260016200a5cd565b6040518663ffffffff1660e01b815260040162004b1394939291906200a6c5565b60006040518083038185885af115801562004b32573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262004b5d91908101906200a7b4565b905062004bc78160008151811062004b795762004b796200a705565b6020026020010151856001600160801b03166040518060400160405280602081526020017f746573745f537761704e4154495645466f724578616374546f6b656e733a3a318152506200768a565b62004c33478260008151811062004be25762004be26200a705565b60200260200101518462004bf791906200a71b565b6040518060400160405280602081526020017f746573745f537761704e4154495645466f724578616374546f6b656e733a3a328152506200768a565b602554604051632593e61f60e21b81526001600160a01b0387811660048301526001600160801b0389166024830152600160448301529091169063964f987c90606401606060405180830381865afa15801562004c94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004cba91906200a515565b509094506000805160206201da5e833981519152905063f28dceb363194ee21960e31b62004cea6002886200a56c565b6040516001600160801b039182166024820152908816604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004d4f916004016200a5b8565b600060405180830381600087803b15801562004d6a57600080fd5b505af115801562004d7f573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad22905062004da36002876200a56c565b6001600160801b031688863062004dbc4260016200a5cd565b6040518663ffffffff1660e01b815260040162004ddd94939291906200a6c5565b60006040518083038185885af115801562004dfc573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262004e2791908101906200a7b4565b50601e54604084015180516001600160a01b039092169160009062004e505762004e506200a705565b6001600160a01b039283166020918202929092010152601e54604051911660248201526000805160206201da5e8339815191529063f28dceb39063cfec0e0160e01b9060440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825262004edd916004016200a5b8565b600060405180830381600087803b15801562004ef857600080fd5b505af115801562004f0d573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad2290506001600160801b03861688863062004f3e4260016200a5cd565b6040518663ffffffff1660e01b815260040162004f5f94939291906200a6c5565b60006040518083038185885af115801562004f7e573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262004fa991908101906200a7b4565b506000805160206201da5e83398151915263f28dceb363dae7ca7d60e01b62004fd46001426200a71b565b604051602481019190915242604482015260640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526200502f916004016200a5b8565b600060405180830381600087803b1580156200504a57600080fd5b505af11580156200505f573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad2290506001600160801b038616888630620050906001426200a71b565b6040518663ffffffff1660e01b8152600401620050b194939291906200a6c5565b60006040518083038185885af1158015620050d0573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620050fb91908101906200a7b4565b50604080516000815260208082018352858301919091528151600480825260248201845291810180516001600160e01b031663b91b4d4d60e01b179052915163f28dceb360e01b81526000805160206201da5e8339815191529263f28dceb3926200516792016200a5b8565b600060405180830381600087803b1580156200518257600080fd5b505af115801562005197573d6000803e3d6000fd5b50506025546001600160a01b03169150632075ad2290506001600160801b038616888630620051c84260016200a5cd565b6040518663ffffffff1660e01b8152600401620051e994939291906200a6c5565b60006040518083038185885af115801562005208573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620015e491908101906200a7b4565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200530457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620052c55790505b5050505050815250508152602001906001019062005257565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200535e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200538491906200a1f2565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620053c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620053ed91906200a1f2565b9050620053fc828b8862007367565b62005409818b8762007367565b600062005417858562002f2a565b905060008167ffffffffffffffff8111156200543757620054376200a0cf565b60405190808252806020026020018201604052801562005461578160200160208202803683370190505b50905060005b82811015620055605760006200547f8b838962004909565b905060008b62ffffff168262ffffff1610158015620054a1575060008960ff16115b620054ae576000620054cf565b620054cf620054c960ff8b16670de0b6b3a76400006200a810565b6200771c565b905060008c62ffffff168362ffffff1611158015620054f1575060008960ff16115b620054fe57600062005519565b62005519620054c960ff8b16670de0b6b3a76400006200a810565b90506200552882828562007748565b8585815181106200553d576200553d6200a705565b6020026020010181815250505050508062005558906200a827565b905062005467565b506040516303223eab60e11b81526001600160a01b038d1660048201526000805160206201da5e833981519152906306447d5690602401600060405180830381600087803b158015620055b257600080fd5b505af1158015620055c7573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af11580156200561b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200564191906200a843565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562005692573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620056b891906200a843565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200571857600080fd5b505af11580156200572d573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162005763939291906200a861565b6000604051808303816000875af115801562005783573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620057ad91908101906200a8c7565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000d2b57838290600052602060002001805462005804906200a4c1565b80601f016020809104026020016040519081016040528092919081815260200182805462005832906200a4c1565b8015620058835780601f10620058575761010080835404028352916020019162005883565b820191906000526020600020905b8154815290600101906020018083116200586557829003601f168201915b505050505081526020019060010190620057e2565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa158015620058e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200590e91906200a91b565b9998505050505050505050565b60075460009060ff161562005934575060075460ff1690565b604051630667f9d760e41b81526000805160206201da5e833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620059a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059ce91906200a1d8565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562000bdc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bbd575050505050905090565b670de0b6b3a764000083111562005a955760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b600062005aa3838362002f2a565b905060008167ffffffffffffffff81111562005ac35762005ac36200a0cf565b60405190808252806020026020018201604052801562005aed578160200160208202803683370190505b50905060008267ffffffffffffffff81111562005b0e5762005b0e6200a0cf565b60405190808252806020026020018201604052801562005b38578160200160208202803683370190505b50905060005b8381101562005c4657600062005b5689838862004909565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa15801562005bac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005bd291906200a1d8565b90508162ffffff1685848151811062005bef5762005bef6200a705565b602090810291909101015262005c0f818a670de0b6b3a764000062007786565b84848151811062005c245762005c246200a705565b60200260200101818152505050508062005c3e906200a827565b905062005b3e565b5060405163ca669fa760e01b81526001600160a01b038b1660048201526000805160206201da5e8339815191529063ca669fa790602401600060405180830381600087803b15801562005c9857600080fd5b505af115801562005cad573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062005ce5908d908d90879087906004016200a975565b6000604051808303816000875af115801562005d05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005d2f91908101906200a7b4565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b60000362005e3957601c546040516000805160206201da5e8339815191529163b4d6c782916001600160a01b039091169062005da29062009b6e565b604051809103906000f08015801562005dbf573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b815260040162005e049291906200a9b7565b600060405180830381600087803b15801562005e1f57600080fd5b505af115801562005e34573d6000803e3d6000fd5b505050505b600660405162005e499062009b7c565b60ff9091168152602001604051809103906000f08015801562005e70573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560405160069062005ea29062009b7c565b60ff9091168152602001604051809103906000f08015801562005ec9573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405160089062005efb9062009b7c565b60ff9091168152602001604051809103906000f08015801562005f22573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905560405160129062005f549062009b7c565b60ff9091168152602001604051809103906000f08015801562005f7b573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039290921691909117905560405160129062005fad9062009b7c565b60ff9091168152602001604051809103906000f08015801562005fd4573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b0392909216919091179055604051601290620060069062009b7c565b60ff9091168152602001604051809103906000f0801580156200602d573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516200605c9062009b8a565b604051809103906000f08015801562006079573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e61746976650000000000000000000000000000000000000000000000000060648201526000805160206201da5e8339815191529063c657c71890608401600060405180830381600087803b1580156200611a57600080fd5b505af11580156200612f573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620061a757600080fd5b505af1158015620061bc573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200623457600080fd5b505af115801562006249573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620062c157600080fd5b505af1158015620062d6573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200634e57600080fd5b505af115801562006363573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620063db57600080fd5b505af1158015620063f0573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b60648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200646257600080fd5b505af115801562006477573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e00000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200650357600080fd5b505af115801562006518573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d20000906200659f9062009b98565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f080158015620065da573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169182179055604051620066089062009ba6565b6001600160a01b039091168152602001604051809103906000f08015801562006635573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b1580156200669457600080fd5b505af1158015620066a9573d6000803e3d6000fd5b50505050620066b7620077b4565b620066c3600a62007b5e565b602454602b54601c546040516001600160a01b03938416939283169290911690620066ee9062009bb4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200672b573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b5460245460405191841693169190620067669062009bc2565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620067a3573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f75746572000000000000000000000000000000000000000000000000000060648201526000805160206201da5e8339815191529063c657c71890608401600060405180830381600087803b1580156200684457600080fd5b505af115801562006859573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f746572000000000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b158015620068e557600080fd5b505af1158015620068fa573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f72790000000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b1580156200698957600080fd5b505af11580156200699e573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b15801562006a2a57600080fd5b505af115801562006a3f573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f75746572563100000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b15801562006acb57600080fd5b505af115801562006ae0573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f72795631000000000000000000000000000000000000000000000060648201526000805160206201da5e833981519152925063c657c7189150608401600060405180830381600087803b15801562006b6c57600080fd5b505af115801562006b81573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af115801562006bdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c0291906200a843565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c8091906200a843565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006cd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006cfe91906200a843565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006d56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006d7c91906200a843565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006dd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006dfa91906200a843565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006e52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e7891906200a843565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006ed0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ef691906200a843565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006f4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f7491906200a843565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562006fcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ff291906200a843565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200704a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200707091906200a843565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620070c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620070ee91906200a843565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007146573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200716c91906200a843565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620071c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620071ea91906200a843565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562007242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200726891906200a843565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620072c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620072e691906200a843565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200733e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200736491906200a843565b50565b62007376838383600062007c05565b505050565b62007419604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b6000806000806200742d8989898962007e08565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff16815260200160008152602001620074ab8a876200811790919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a00162007502426103e86200a5cd565b90529b9a5050505050505050505050565b6200753860405180606001604052806060815260200160608152602001606081525090565b60408051600180825281830190925290602080830190803683375050508082528051600a91906000906200757057620075706200a705565b60209081029190910101526040805160018082528183019092529081602001602082028036833750505060208201819052805160019190600090620075b957620075b96200a705565b60200260200101906001811115620075d557620075d56200a5e3565b90816001811115620075eb57620075eb6200a5e3565b90525060408051600280825260608201835290916020830190803683375050506040820181905280518491906000906200762957620076296200a705565b60200260200101906001600160a01b031690816001600160a01b0316815250508181604001516001815181106200766457620076646200a705565b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b6040516388b44c8560e01b81526000805160206201da5e833981519152906388b44c8590620076c2908690869086906004016200a9db565b60006040518083038186803b158015620076db57600080fd5b505afa158015620015e4573d6000803e3d6000fd5b8062ffffff811681146200771757604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff81168114620077175760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b6000806000620077978686620081db565b91509150620077aa8686868585620081fa565b9695505050505050565b601c546001600160a01b031615620078295760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200780f57600080fd5b505af115801562007824573d6000803e3d6000fd5b505050505b601d546001600160a01b0316156200789e5760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200788457600080fd5b505af115801562007899573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620079135760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620078f957600080fd5b505af11580156200790e573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620079885760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200796e57600080fd5b505af115801562007983573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620079fd5760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620079e357600080fd5b505af1158015620079f8573d6000803e3d6000fd5b505050505b6020546001600160a01b03161562007a725760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562007a5857600080fd5b505af115801562007a6d573d6000803e3d6000fd5b505050505b6021546001600160a01b03161562007ae75760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562007acd57600080fd5b505af115801562007ae2573d6000803e3d6000fd5b505050505b6023546001600160a01b03161562007b5c5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b15801562007b4257600080fd5b505af115801562007b57573d6000803e3d6000fd5b505050505b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b15801562007be957600080fd5b505af115801562007bfe573d6000803e3d6000fd5b5050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b179052915160009287169162007c5b916200a9fc565b600060405180830381855afa9150503d806000811462007c98576040519150601f19603f3d011682016040523d82523d6000602084013e62007c9d565b606091505b5091505060008180602001905181019062007cb991906200a1d8565b905062007cf38462007cec8762007ce56370a0823160e01b62007cde600c8d620082ac565b90620082d4565b90620082f2565b906200831b565b821562007e005760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162007d3e91906200a9fc565b600060405180830381855afa9150503d806000811462007d7b576040519150601f19603f3d011682016040523d82523d6000602084013e62007d80565b606091505b5091505060008180602001905181019062007d9c91906200a1d8565b90508286101562007dc75762007db386846200a71b565b62007dbf90826200a71b565b905062007de2565b62007dd383876200a71b565b62007ddf90826200a5cd565b90505b62000b788162007cec6318160ddd60e01b62007cde600c8d620082ac565b505050505050565b60608080600062007e1b6002876200aa1a565b62ffffff1660000362007e715760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e73604482015260640162005a8c565b600062007e806002886200aa3f565b90508662ffffff1667ffffffffffffffff81111562007ea35762007ea36200a0cf565b60405190808252806020026020018201604052801562007ecd578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff81111562007ef15762007ef16200a0cf565b60405190808252806020026020018201604052801562007f1b578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff81111562007f3f5762007f3f6200a0cf565b60405190808252806020026020018201604052801562007f69578160200160208202803683370190505b509250600062007f7b8260016200a1b9565b62007f949062ffffff16670de0b6b3a76400006200a810565b9050600062007fa58360016200a1b9565b62007fb69062ffffff168c6200a810565b905060005b8962ffffff16811015620081085762007fd68960016200a1b9565b62007fe79062ffffff16826200aa58565b62007ff48a60016200a1b9565b6200800090866200aa72565b6200800c908d6200aa9c565b62ffffff166200801d91906200a5cd565b8882815181106200803257620080326200a705565b6020026020010181815250508362ffffff1681116200806e57828682815181106200806157620080616200a705565b6020026020010181815250505b8362ffffff168110620080f357828782815181106200809157620080916200a705565b60200260200101818152505060008211620080ae576000620080e4565b620080e46080620080db8a8481518110620080cd57620080cd6200a705565b602002602001015162008327565b84919062008336565b620080f090866200a5cd565b94505b80620080ff816200a827565b91505062007fbb565b50505050945094509450949050565b6060825167ffffffffffffffff8111156200813657620081366200a0cf565b60405190808252806020026020018201604052801562008160578160200160208202803683370190505b50905060005b8351811015620081d4578262ffffff168482815181106200818b576200818b6200a705565b60200260200101516200819f91906200aabb565b828281518110620081b457620081b46200a705565b602090810291909101015280620081cb816200a827565b91505062008166565b5092915050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362008220578383816200821757620082176200a556565b0490506200495b565b83821062008241576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c179055600082620082cd565b6002820180546001810182556000918252602082206001600160a01b03841691015582620082cd565b620006cb828262008362565b600062002f7982600a6200876f565b600060ff831684811b9061ffff6101008290031686901c90620077aa9087906001901b868585620081fa565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b9460009390929091830182828015620083d557602002820191906000526020600020905b815481526020019060010190808311620083c0575b50505050509050600083620083ea83620087ac565b604051602001620083fd9291906200aade565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620084519186918891016200ab11565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200848c576200848a8762008859565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b0319881684528252808320905190918391620084cd9187918991016200ab11565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b0316846040516200851491906200a9fc565b600060405180830381855afa9150503d806000811462008551576040519150601f19603f3d011682016040523d82523d6000602084013e62008556565b606091505b509150620085739050816200856d8860206200aa58565b62008866565b604051630667f9d760e41b81526001600160a01b038a16600482015260248101859052909250600091506000805160206201da5e8339815191529063667f9d7090604401602060405180830381865afa158015620085d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085fb91906200a1d8565b9050808214620086b25760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005a8c565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a90526000805160206201da5e833981519152906370ca10bb90606401600060405180830381600087803b1580156200871157600080fd5b505af115801562008726573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff191690556200875b60028b01600062009bd0565b896004016000905550505050505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff19016200495b828262008908565b6060600082516020620087c091906200aa58565b67ffffffffffffffff811115620087db57620087db6200a0cf565b6040519080825280601f01601f19166020018201604052801562008806576020820181803683370190505b50905060005b8351811015620081d45760008482815181106200882d576200882d6200a705565b60200260200101519050808260200260200184015250808062008850906200a827565b9150506200880c565b600062002f798262008b87565b600080600060208551116200887d57845162008880565b60205b905060005b81811015620088fe576200889b8160086200aa58565b86620088a883886200a5cd565b81518110620088bb57620088bb6200a705565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c929092179180620088f5816200a827565b91505062008885565b5090949350505050565b600080600083600003620089265750600160801b915062002f799050565b5082600081121562008939579015906000035b6210000081101562008b3f57600160801b9250846001600160801b038111156200896557911591600019045b6001821615620089775792830260801c925b800260801c60028216156200898e5792830260801c925b800260801c6004821615620089a55792830260801c925b800260801c6008821615620089bc5792830260801c925b800260801c6010821615620089d35792830260801c925b800260801c6020821615620089ea5792830260801c925b800260801c604082161562008a015792830260801c925b8002608090811c9082161562008a195792830260801c925b800260801c61010082161562008a315792830260801c925b800260801c61020082161562008a495792830260801c925b800260801c61040082161562008a615792830260801c925b800260801c61080082161562008a795792830260801c925b800260801c61100082161562008a915792830260801c925b800260801c61200082161562008aa95792830260801c925b800260801c61400082161562008ac15792830260801c925b800260801c61800082161562008ad95792830260801c925b800260801c6201000082161562008af25792830260801c925b800260801c6202000082161562008b0b5792830260801c925b800260801c6204000082161562008b245792830260801c925b800260801c6208000082161562008b3d5792830260801c925b505b8260000362008b6c57604051631dba598d60e11b8152600481018690526024810185905260440162005a8c565b8162008b7957826200495b565b6200495b836000196200a810565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b94938793919290919083018282801562008bf957602002820191906000526020600020905b81548152602001906001019080831162008be4575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519596509491935062008c45925085918791016200ab11565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562008ce4576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162008cb49185918791016200ab11565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362008cf28362009a29565b60405160200162008d059291906200aade565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562008d7557600080fd5b505af115801562008d8a573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162008dab91906200a9fc565b600060405180830381855afa9150503d806000811462008de8576040519150601f19603f3d011682016040523d82523d6000602084013e62008ded565b606091505b50915062008e0a90508162008e048760206200aa58565b62009ad6565b6040516365bc948160e01b81526001600160a01b0389166004820152909250600091506000805160206201da5e833981519152906365bc9481906024016000604051808303816000875af115801562008e67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262008e9191908101906200ab4d565b5090508051600103620092355760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062008ee95762008ee96200a705565b60200260200101516040518363ffffffff1660e01b815260040162008f239291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562008f41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008f6791906200a1d8565b90508062008fd2577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062008fa75762008fa76200a705565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b808314620090875760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c40162005a8c565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed88888789604051602001620090bf9291906200ab11565b6040516020818303038152906040528051906020012085600081518110620090eb57620090eb6200a705565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1816000815181106200914557620091456200a705565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262009190918a918c91016200ab11565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c16855282528284209251909391620091fa918a918c91016200ab11565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055506200989e565b6001815111156200982d5760005b8151811015620098265760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200929757620092976200a705565b60200260200101516040518363ffffffff1660e01b8152600401620092d19291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620092ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200931591906200a1d8565b9050806200937f577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5898484815181106200935457620093546200a705565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b8381146200938e575062009811565b82518119906000805160206201da5e833981519152906370ca10bb908c90879087908110620093c157620093c16200a705565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b1580156200941a57600080fd5b505af11580156200942f573d6000803e3d6000fd5b50505050600060608b6001600160a01b0316886040516200945191906200a9fc565b600060405180830381855afa9150503d80600081146200948e576040519150601f19603f3d011682016040523d82523d6000602084013e62009493565b606091505b509092509050620094ab8162008e048c60206200aa58565b965050808015620094bb57508186145b1562009753577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620094f99291906200ab11565b604051602081830303815290604052805190602001208888815181106200952457620095246200a705565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18484815181106200957d576200957d6200a705565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f1683528452808220905192939092620095c8918d918f91016200ab11565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c604051602001620096559291906200ab11565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620096d857620096d86200a705565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200973157600080fd5b505af115801562009746573d6000803e3d6000fd5b5050505050505062009826565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c8787815181106200979b576200979b6200a705565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620097f457600080fd5b505af115801562009809573d6000803e3d6000fd5b505050505050505b806200981d816200a827565b91505062009243565b506200989e565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162005a8c565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a16845282528083209051909291620098e29188918a91016200ab11565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200997f5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162005a8c565b6005890180546001600160a01b031916905560038901805463ffffffff19169055620099b060028a01600062009bd0565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620099f69188918a91016200ab11565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b606060008251602062009a3d91906200aa58565b67ffffffffffffffff81111562009a585762009a586200a0cf565b6040519080825280601f01601f19166020018201604052801562009a83576020820181803683370190505b50905060005b8351811015620081d457600084828151811062009aaa5762009aaa6200a705565b60200260200101519050808260200260200184015250808062009acd906200a827565b91505062009a89565b6000806000602085511162009aed57845162009af0565b60205b905060005b81811015620088fe5762009b0b8160086200aa58565b8662009b1883886200a5cd565b8151811062009b2b5762009b2b6200a705565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062009b65816200a827565b91505062009af5565b610b08806200abb983390190565b610bfd806200b6c183390190565b610c18806200c2be83390190565b613199806200ced683390190565b61615c806201006f83390190565b614c8080620161cb83390190565b612c13806201ae4b83390190565b50805460008255906000526020600020908101906200736491905b8082111562009c01576000815560010162009beb565b5090565b60006020828403121562009c1857600080fd5b81356001600160e01b031981168114620082cd57600080fd5b6020808252825182820181905260009190848201906040850190845b8181101562009c745783516001600160a01b03168352928401929184019160010162009c4d565b50909695505050505050565b60005b8381101562009c9d57818101518382015260200162009c83565b50506000910152565b6000815180845262009cc081602086016020860162009c80565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562009d8a57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562009d7357605f1989850301835262009d6084865162009ca6565b948e01949350918d019160010162009d41565b505050978a01979450509188019160010162009cfb565b50919a9950505050505050505050565b803560ff811681146200771757600080fd5b6000806040838503121562009dc057600080fd5b62009dcb8362009d9a565b915062009ddb6020840162009d9a565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562009e8c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562009e765783516001600160e01b0319168252928b019260019290920191908b019062009e4a565b50978a0197955050509187019160010162009e0c565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562009ef457603f1988860301845262009ee185835162009ca6565b9450928501929085019060010162009ec2565b5092979650505050505050565b62ffffff811681146200736457600080fd5b60008060006060848603121562009f2957600080fd5b833562009f368162009f01565b92506020840135915062009f4d6040850162009d9a565b90509250925092565b6001600160a01b03811681146200736457600080fd5b600080600080600080600080610100898b03121562009f8a57600080fd5b883562009f978162009f56565b9750602089013562009fa98162009f56565b9650604089013562009fbb8162009f56565b9550606089013562009fcd8162009f01565b94506080890135935060a0890135925062009feb60c08a0162009d9a565b915062009ffb60e08a0162009d9a565b90509295985092959890939650565b61ffff811681146200736457600080fd5b6000602082840312156200a02e57600080fd5b8135620082cd816200a00a565b600080600080600080600060e0888a0312156200a05757600080fd5b87356200a0648162009f56565b965060208801356200a0768162009f56565b955060408801356200a0888162009f56565b945060608801356200a09a8162009f01565b9350608088013592506200a0b160a0890162009d9a565b91506200a0c160c0890162009d9a565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b805180151581146200771757600080fd5b6000608082840312156200a10957600080fd5b6040516080810181811067ffffffffffffffff821117156200a12f576200a12f6200a0cf565b60405282516200a13f816200a00a565b815260208301516200a1518162009f56565b60208201526200a164604084016200a0e5565b60408201526200a177606084016200a0e5565b60608201529392505050565b6000602082840312156200a19657600080fd5b8151620082cd8162009f01565b634e487b7160e01b600052601160045260246000fd5b62ffffff818116838216019080821115620081d457620081d46200a1a3565b6000602082840312156200a1eb57600080fd5b5051919050565b6000602082840312156200a20557600080fd5b8151620082cd8162009f56565b600081518084526020808501945080840160005b838110156200a244578151875295820195908201906001016200a226565b509495945050505050565b602081526200a26a6020820183516001600160a01b03169052565b600060208301516200a28760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200a2f86102008601846200a212565b9250808601519050601f196101608187860301818801526200a31b85846200a212565b9450808801519250506101808187860301818801526200a33c85846200a212565b945080880151925050506101a06200a35e818701836001600160a01b03169052565b86015190506101c06200a37b868201836001600160a01b03169052565b959095015193019290925250919050565b600082601f8301126200a39e57600080fd5b8151602067ffffffffffffffff808311156200a3be576200a3be6200a0cf565b8260051b604051601f19603f830116810181811084821117156200a3e6576200a3e66200a0cf565b6040529384528581018301938381019250878511156200a40557600080fd5b83870191505b848210156200a426578151835291830191908301906200a40b565b979650505050505050565b60008060008060008060c087890312156200a44b57600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff808211156200a48057600080fd5b6200a48e8a838b016200a38c565b935060a08901519150808211156200a4a557600080fd5b506200a4b489828a016200a38c565b9150509295509295509295565b600181811c908216806200a4d657607f821691505b6020821081036200a4f757634e487b7160e01b600052602260045260246000fd5b50919050565b80516001600160801b03811681146200771757600080fd5b6000806000606084860312156200a52b57600080fd5b6200a536846200a4fd565b92506200a546602085016200a4fd565b915062009f4d604085016200a4fd565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b03808416806200a589576200a5896200a556565b92169190910492915050565b6001600160801b03818116838216019080821115620081d457620081d46200a1a3565b602081526000620082cd602083018462009ca6565b8082018082111562002f795762002f796200a1a3565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b838110156200a2445781516001600160a01b0316875295820195908201906001016200a60d565b60008151606084526200a64b60608501826200a212565b6020848101518683038783015280518084529082019350909160009190830190825b818110156200a6a8578551600281106200a69557634e487b7160e01b85526021600452602485fd5b835294840194918401916001016200a66d565b50506040860151935086810360408801526200a42681856200a5f9565b6001600160801b03851681526080602082015260006200a6e960808301866200a634565b6001600160a01b03949094166040830152506060015292915050565b634e487b7160e01b600052603260045260246000fd5b8181038181111562002f795762002f796200a1a3565b60006001600160801b03808816835280871660208401525060a060408301526200a75f60a08301866200a634565b6001600160a01b0394909416606083015250608001529392505050565b60ff818116838216019081111562002f795762002f796200a1a3565b60ff828116828216039081111562002f795762002f796200a1a3565b6000602082840312156200a7c757600080fd5b815167ffffffffffffffff8111156200a7df57600080fd5b6200777e848285016200a38c565b6001600160801b03828116828216039080821115620081d457620081d46200a1a3565b6000826200a822576200a8226200a556565b500490565b6000600182016200a83c576200a83c6200a1a3565b5060010190565b6000602082840312156200a85657600080fd5b620082cd826200a0e5565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156200a8ae578551835294830194918301916001016200a890565b5050809450505080851660408501525050949350505050565b6000806000606084860312156200a8dd57600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200a90357600080fd5b6200a911868287016200a38c565b9150509250925092565b600080600080600080600080610100898b0312156200a93957600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062009ffb60e08a016200a0e5565b60006001600160a01b038087168352808616602084015250608060408301526200a9a360808301856200a212565b82810360608401526200a42681856200a212565b6001600160a01b03831681526040602082015260006200777e604083018462009ca6565b8381528260208201526060604082015260006200495b606083018462009ca6565b600082516200aa1081846020870162009c80565b9190910192915050565b600062ffffff808416806200aa33576200aa336200a556565b92169190910692915050565b600062ffffff808416806200a589576200a5896200a556565b808202811582820484141762002f795762002f796200a1a3565b62ffffff8181168382160280821691908281146200aa94576200aa946200a1a3565b505092915050565b62ffffff828116828216039080821115620081d457620081d46200a1a3565b8181036000831280158383131683831282161715620081d457620081d46200a1a3565b6001600160e01b03198316815281516000906200ab0381600485016020870162009c80565b919091016004019392505050565b825160009082906020808701845b838110156200ab3d578151855293820193908201906001016200ab1f565b5050948252509092019392505050565b600080604083850312156200ab6157600080fd5b825167ffffffffffffffff808211156200ab7a57600080fd5b6200ab88868387016200a38c565b935060208501519150808211156200ab9f57600080fd5b506200abae858286016200a38c565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d746573745f537761704578616374546f6b656e73466f724e4154495645537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a32746573745f537761704578616374546f6b656e73466f724e4154495645537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a31746573745f5377617045786163744e4154495645466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a32746573745f5377617045786163744e4154495645466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a31a2646970667358221220e2c2f17d6506ab5bf5ef77d4418327b31a74b38f15b43d8938c656c93955a40664736f6c63430008140033","sourceMap":"555:19551:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;;;;;-1:-1:-1;5626:149:93;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;1791:273:92;;;;;;;;;;;;;:::i;:::-;;611:1174;;;;;;;;;;;;;:::i;2452:134:5:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17182:2456:92:-;;;;;;;;;;;;;:::i;6465:2158::-;;;;;;;;;;;;;:::i;3221:133:5:-;;;;;;;;;;;;;:::i;14738:2438:92:-;;;;;;;;;;;;;:::i;2922:141:5:-;;;;;;;;;;;;;:::i;4279:2180:92:-;;;;;;;;;;;;;:::i;12046:168:93:-;;;;;;;;;;-1:-1:-1;12046:168:93;;;;;:::i;:::-;;:::i;:::-;;;4180:25:105;;;4168:2;4153:18;12046:168:93;4034:177:105;2738:178:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10409:2113:92:-;;;;;;;;;;;;;:::i;2070:2203::-;;;;;;;;;;;;;:::i;8629:1774::-;;;;;;;;;;;;;:::i;2592:140:5:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;;;;;-1:-1:-1;12220:205:93;;;;;:::i;:::-;;:::i;:::-;;;7305:8:105;7293:21;;;7275:40;;7263:2;7248:18;12220:205:93;7131:190:105;12528:2204:92;;;;;;;;;;;;;:::i;3069:146:5:-;;;;;;;;;;;;;:::i;10071:1171:93:-;;;;;;;;;;-1:-1:-1;10071:1171:93;;;;;:::i;:::-;;:::i;2157:141:5:-;;;;;;;;;;;;;:::i;12431:134:93:-;;;;;;;;;;-1:-1:-1;12431:134:93;;;;;:::i;:::-;;:::i;1243:204:1:-;;;;;;;;;;;;;:::i;2304:142:5:-;;;;;;;;;;;;;:::i;11248:792:93:-;;;;;;;;;;-1:-1:-1;11248:792:93;;;;;:::i;:::-;;:::i;1791:273:92:-;1859:7;;;1888:4;;1894;;1859:58;;-1:-1:-1;;;1859:58:92;;-1:-1:-1;;;;;1888:4:92;;;1859:58;;;10028:34:105;1894:4:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;1844:12:92;;1859:7;;;:28;;9940:18:105;;1859:58:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;1935:6;;:68;;-1:-1:-1;;;1935:68:92;;-1:-1:-1;;;;;11555:55:105;;;1935:68:92;;;11537:74:105;1963:39:92;11627:18:105;;;11620:34;1859:65:92;;-1:-1:-1;1935:6:92;;;:21;;11510:18:105;;1935:68:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2014:6:92;;-1:-1:-1;;;;;2014:6:92;:21;2036:4;2042:14;992:7:93;2042:5:92;:14;:::i;:::-;2014:43;;-1:-1:-1;;;;;;2014:43:92;;;;;;;-1:-1:-1;;;;;12433:55:105;;;2014:43:92;;;12415:74:105;12537:8;12525:21;12505:18;;;12498:49;12388:18;;2014:43:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1834:230;1791:273::o;611:1174::-;654:13;:11;:13::i;:::-;678:7;;;:50;;-1:-1:-1;;;678:50:92;;1147:2:93;678:50:92;;;12913:38:105;678:7:92;12967:18:105;;;12960:50;;;;-1:-1:-1;;;;;678:7:92;;:26;;12886:18:105;;678:50:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;773:6:92;;793:4;;799;;773:57;;-1:-1:-1;;;773:57:92;;-1:-1:-1;;;;;793:4:92;;;773:57;;;13347:34:105;799:4:92;;;13397:18:105;;;13390:43;992:7:93;13449:18:105;;;13442:49;1147:2:93;13507:18:105;;;13500:47;773:6:92;;;-1:-1:-1;773:19:92;;-1:-1:-1;13258:19:105;;773:57:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;840:6:92;;860:7;;869:4;;840:60;;-1:-1:-1;;;840:60:92;;-1:-1:-1;;;;;860:7:92;;;840:60;;;13347:34:105;869:4:92;;;13397:18:105;;;13390:43;992:7:93;13449:18:105;;;13442:49;1147:2:93;13507:18:105;;;13500:47;840:6:92;;;:19;;13258::105;;840:60:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;910:6:92;;930:8;;940:7;;910:64;;-1:-1:-1;;;910:64:92;;-1:-1:-1;;;;;930:8:92;;;910:64;;;13347:34:105;940:7:92;;;13397:18:105;;;13390:43;992:7:93;13449:18:105;;;13442:49;1147:2:93;13507:18:105;;;13500:47;910:6:92;;;:19;;13258::105;;910:64:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1051:4:92;;1011:17;;1038:51;;-1:-1:-1;;;;;1051:4:92;1066;1011:17;1038:4;:51::i;:::-;1112:4;;1099:51;;-1:-1:-1;;;;;1112:4:92;1127;1134:15;1099:4;:51::i;:::-;1173:8;;1160:55;;-1:-1:-1;;;;;1173:8:92;1192:4;1199:15;1160:4;:55::i;:::-;1320:4;;1326;;1226:56;;1297:57;;-1:-1:-1;;;;;1320:4:92;;;;1326;1332:6;992:7:93;1348:2:92;1226:56;1297:22;:57::i;:::-;1364:6;;:40;;-1:-1:-1;;;1364:40:92;;1226:128;;-1:-1:-1;;;;;;1364:6:92;;:19;;:40;;1226:128;;1364:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1364:40:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1460:7:92;;1469:4;;1437:60;;-1:-1:-1;;;;;;1460:7:92;;;;-1:-1:-1;1469:4:92;;-1:-1:-1;1475:6:92;;-1:-1:-1;992:7:93;1491:2:92;1460:7;1437:22;:60::i;:::-;1507:6;;1540:27;;;;1507:82;;-1:-1:-1;;;1507:82:92;;1415;;-1:-1:-1;;;;;;1507:6:92;;;;:25;;1540:27;1507:82;;1415;;1507;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1507:82:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1645:8:92;;1655:7;;1622:64;;-1:-1:-1;;;;;;1645:8:92;;;;-1:-1:-1;1655:7:92;;-1:-1:-1;1664:6:92;;-1:-1:-1;992:7:93;1680:2:92;1645:8;1622:22;:64::i;:::-;1696:6;;1729:27;;;;1696:82;;-1:-1:-1;;;1696:82:92;;1600:86;;-1:-1:-1;;;;;;1696:6:92;;;;:25;;1729:27;1696:82;;1600:86;;1696:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1696:82:92;;;;;;;;;;;;:::i;:::-;;;;;;;644:1141;;611:1174::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;17182:2456:92:-;17319:7;;;17348:8;;17358:7;;17319:65;;-1:-1:-1;;;17319:65:92;;-1:-1:-1;;;;;17348:8:92;;;17319:65;;;10028:34:105;17358:7:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;17288:5:92;;17269:16;;17319:7;;;;;:28;;9940:18:105;;17319:65:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;17434:6;;:40;;-1:-1:-1;;;17434:40:92;;-1:-1:-1;;;;;20149:55:105;;;17434:40:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;17404:25:92;20305:18:105;;;20298:50;;;17319:72:92;;-1:-1:-1;17434:6:92;;;;:17;;20104:18:105;;17434:40:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17525:7:92;;17534:8;;17401:73;;-1:-1:-1;17485:26:92;;-1:-1:-1;17514:29:92;;-1:-1:-1;;;;;17525:7:92;;;;17534:8;17514:10;:29::i;:::-;17485:58;-1:-1:-1;;;;;;;;;;;;17612:15:92;-1:-1:-1;;;17733:17:92;17752:21;17772:1;17733:17;17752:21;:::i;:::-;:25;;17776:1;17752:25;:::i;:::-;17641:150;;-1:-1:-1;;;;;21739:15:105;;;17641:150:92;;;21721:34:105;21791:15;;21771:18;;;21764:43;21641:18;;17641:150:92;;;-1:-1:-1;;17641:150:92;;;;;;;;;;;;;;-1:-1:-1;;;;;17641:150:92;-1:-1:-1;;;;;;17641:150:92;;;;;;17612:189;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17811:6:92;;-1:-1:-1;;;;;17811:6:92;;-1:-1:-1;17811:60:92;;-1:-1:-1;;;;;;17811:160:92;;17902:17;17921:4;17935;17942:19;:15;17811:6;17942:19;:::i;:::-;17811:160;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18006:8:92;;:33;;-1:-1:-1;;;18006:33:92;;18033:4;18006:33;;;24620:74:105;17982:21:92;;-1:-1:-1;;;;;18006:8:92;;:18;;24593::105;;18006:33:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18072:6;;17982:57;;-1:-1:-1;18051:17:92;;-1:-1:-1;;;;;18072:6:92;:60;-1:-1:-1;;;;;18072:164:92;;18163:21;18183:1;18163:17;:21;:::i;:::-;18186:4;18200;18207:19;:15;18225:1;18207:19;:::i;:::-;18072:164;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18050:186;-1:-1:-1;18247:111:92;18050:186;18267:21;18287:1;18267:17;:21;:::i;:::-;:25;;18291:1;18267:25;:::i;:::-;-1:-1:-1;;;;;18247:111:92;;;;;;;;;;;;;;;;;;:8;:111::i;:::-;18390:8;;:33;;-1:-1:-1;;;18390:33:92;;18417:4;18390:33;;;24620:74:105;18368:181:92;;-1:-1:-1;;;;;18390:8:92;;:18;;24593::105;;18390:33:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18437:25;18453:9;18437:13;:25;:::i;:::-;18368:181;;;;;;;;;;;;;;;;;:8;:181::i;:::-;18624:4;;18604:14;;;;:17;;-1:-1:-1;;;;;18624:4:92;;;;;;18604:17;;;;:::i;:::-;-1:-1:-1;;;;;18604:24:92;;;:17;;;;;;;;;:24;18732:4;;18654:84;;18732:4;;18654:84;;;24620:74:105;-1:-1:-1;;;;;;;;;;;18638:15:92;;;-1:-1:-1;;;18677:45:92;24593:18:105;;18654:84:92;;;-1:-1:-1;;18654:84:92;;;;;;;;;;;;;;-1:-1:-1;;;;;18654:84:92;-1:-1:-1;;;;;;18654:84:92;;;;;;18638:101;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18749:6:92;;-1:-1:-1;;;;;18749:6:92;;-1:-1:-1;18749:60:92;;-1:-1:-1;;;;;;18749:160:92;;18840:17;18859:4;18873;18880:19;:15;18749:6;18880:19;:::i;:::-;18749:160;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;18956:15:92;-1:-1:-1;;;19055:19:92;19073:1;19055:15;:19;:::i;:::-;18985:107;;;;;25144:25:105;;;;19076:15:92;25185:18:105;;;25178:34;25117:18;;18985:107:92;;;-1:-1:-1;;18985:107:92;;;;;;;;;;;;;;-1:-1:-1;;;;;18985:107:92;-1:-1:-1;;;;;;18985:107:92;;;;;;18956:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19112:6:92;;-1:-1:-1;;;;;19112:6:92;;-1:-1:-1;19112:60:92;;-1:-1:-1;;;;;;19112:160:92;;19203:17;19222:4;19236;19243:19;19112:6;19243:15;:19;:::i;:::-;19112:160;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19351:15:92;;;19364:1;19351:15;;;;;;;;19334:14;;;:32;;;;19392:68;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19392:68:92;-1:-1:-1;;;19392:68:92;;;19376:85;;-1:-1:-1;;;19376:85:92;;-1:-1:-1;;;;;;;;;;;19376:15:92;;;:85;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19471:6:92;;-1:-1:-1;;;;;19471:6:92;;-1:-1:-1;19471:60:92;;-1:-1:-1;;;;;;19471:160:92;;19562:17;19581:4;19595;19602:19;:15;19471:6;19602:19;:::i;:::-;19471:160;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17259:2379;;;;;;17182:2456::o;6465:2158::-;6573:7;;;6602;;6611:4;;6573:61;;-1:-1:-1;;;6573:61:92;;-1:-1:-1;;;;;6602:7:92;;;6573:61;;;10028:34:105;6611:4:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;6542:5:92;;6523:16;;6573:7;;;;;:28;;9940:18:105;;6573:61:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:68;;;6684:6;;:39;;-1:-1:-1;;;6684:39:92;;-1:-1:-1;;;;;20149:55:105;;;6684:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;6684:6:92;20305:18:105;;;20298:50;6573:68:92;;-1:-1:-1;6654:25:92;;6684:6;;;;:17;;20104:18:105;;6684:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6774:7:92;;6783:4;;6651:72;;-1:-1:-1;6734:26:92;;-1:-1:-1;6763:25:92;;-1:-1:-1;;;;;6774:7:92;;;;6783:4;6763:10;:25::i;:::-;6823:4;;:29;;-1:-1:-1;;;6823:29:92;;6846:4;6823:29;;;24620:74:105;6734:54:92;;-1:-1:-1;6799:21:92;;-1:-1:-1;;;;;6823:4:92;;;;:14;;24593:18:105;;6823:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6885:6;;6799:53;;-1:-1:-1;6864:17:92;;-1:-1:-1;;;;;6885:6:92;:31;-1:-1:-1;;;;;6885:131:92;;6947:17;6966:4;6980;6987:19;:15;6885:6;6987:19;:::i;:::-;6885:131;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6863:153;;7027:74;7036:9;7047:17;-1:-1:-1;;;;;7027:74:92;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;7120:4;;:29;;-1:-1:-1;;;7120:29:92;;7143:4;7120:29;;;24620:74:105;7111:102:92;;-1:-1:-1;;;;;7120:4:92;;:14;;24593:18:105;;7120:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7151:25;7167:9;7151:13;:25;:::i;:::-;7111:102;;;;;;;;;;;;;;;;;:8;:102::i;:::-;7249:6;;:39;;-1:-1:-1;;;7249:39:92;;-1:-1:-1;;;;;20149:55:105;;;7249:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;7249:6:92;20305:18:105;;;20298:50;7249:6:92;;;;:17;;20104:18:105;;7249:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7224:64:92;-1:-1:-1;;;;;;;;;;;;7357:15:92;-1:-1:-1;7357:15:92;-1:-1:-1;;;7478:21:92;7224:64;7498:1;7478:21;:::i;:::-;7386:146;;-1:-1:-1;;;;;21739:15:105;;;7386:146:92;;;21721:34:105;21791:15;;;21771:18;;;21764:43;21641:18;;7386:146:92;;;-1:-1:-1;;7386:146:92;;;;;;;;;;;;;;-1:-1:-1;;;;;7386:146:92;-1:-1:-1;;;;;;7386:146:92;;;;;;7357:185;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7552:6:92;;-1:-1:-1;;;;;7552:6:92;;-1:-1:-1;7552:31:92;;-1:-1:-1;;;;;;7552:135:92;;7614:21;:17;7552:6;7614:21;:::i;:::-;7637:4;7651;7658:19;:15;7676:1;7658:19;:::i;:::-;7552:135;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7762:4:92;;7742:14;;;;:17;;-1:-1:-1;;;;;7762:4:92;;;;;;7742:17;;;;:::i;:::-;-1:-1:-1;;;;;7742:24:92;;;:17;;;;;;;;;:24;7870:4;;7792:84;;7870:4;;7792:84;;;24620:74:105;-1:-1:-1;;;;;;;;;;;7776:15:92;;;-1:-1:-1;;;7815:45:92;24593:18:105;;7792:84:92;;;-1:-1:-1;;7792:84:92;;;;;;;;;;;;;;-1:-1:-1;;;;;7792:84:92;-1:-1:-1;;;;;;7792:84:92;;;;;;7776:101;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7887:6:92;;-1:-1:-1;;;;;7887:6:92;;-1:-1:-1;7887:31:92;;-1:-1:-1;;;;;;7887:109:92;;7936:17;7955:4;7969;7976:19;:15;7887:6;7976:19;:::i;:::-;7887:109;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;8043:15:92;-1:-1:-1;;;8142:19:92;8160:1;8142:15;:19;:::i;:::-;8072:107;;;;;25144:25:105;;;;8163:15:92;25185:18:105;;;25178:34;25117:18;;8072:107:92;;;-1:-1:-1;;8072:107:92;;;;;;;;;;;;;;-1:-1:-1;;;;;8072:107:92;-1:-1:-1;;;;;;8072:107:92;;;;;;8043:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8199:6:92;;-1:-1:-1;;;;;8199:6:92;;-1:-1:-1;8199:31:92;;-1:-1:-1;;;;;;8199:109:92;;8248:17;8267:4;8281;8288:19;8199:6;8288:15;:19;:::i;:::-;8199:109;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8387:15:92;;;8400:1;8387:15;;;;;;;;8370:14;;;:32;;;;8428:68;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8428:68:92;-1:-1:-1;;;8428:68:92;;;8412:85;;-1:-1:-1;;;8412:85:92;;-1:-1:-1;;;;;;;;;;;8412:15:92;;;:85;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8507:6:92;;-1:-1:-1;;;;;8507:6:92;;-1:-1:-1;8507:31:92;;-1:-1:-1;;;;;;8507:109:92;;8556:17;8575:4;8589;8596:19;:15;8507:6;8596:19;:::i;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;14738:2438:92:-;14875:7;;;14904:8;;14914:7;;14875:65;;-1:-1:-1;;;14875:65:92;;-1:-1:-1;;;;;14904:8:92;;;14875:65;;;10028:34:105;14914:7:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;14844:5:92;;14825:16;;14875:7;;;;;:28;;9940:18:105;;14875:65:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;14990:6;;:39;;-1:-1:-1;;;14990:39:92;;-1:-1:-1;;;;;20149:55:105;;;14990:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;14990:6:92;20305:18:105;;;20298:50;14875:72:92;;-1:-1:-1;14960:25:92;;14990:6;;;;:17;;20104:18:105;;14990:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15080:8:92;;15090:7;;14957:72;;-1:-1:-1;15040:26:92;;-1:-1:-1;15069:29:92;;-1:-1:-1;;;;;15080:8:92;;;;15090:7;15069:10;:29::i;:::-;15040:58;-1:-1:-1;;;;;;;;;;;;15167:15:92;-1:-1:-1;;;15288:17:92;15307:21;15327:1;15288:17;15307:21;:::i;:::-;15196:146;;-1:-1:-1;;;;;21739:15:105;;;15196:146:92;;;21721:34:105;21791:15;;21771:18;;;21764:43;21641:18;;15196:146:92;;;-1:-1:-1;;15196:146:92;;;;;;;;;;;;;;-1:-1:-1;;;;;15196:146:92;-1:-1:-1;;;;;;15196:146:92;;;;;;15167:185;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15362:6:92;;-1:-1:-1;;;;;15362:6:92;;-1:-1:-1;15362:60:92;;-1:-1:-1;15436:8:92;15446:17;15465:4;15487;15495:19;:15;15362:6;15495:19;:::i;:::-;15362:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15613:6:92;;15559:21;;15535;;-1:-1:-1;;;;;15613:6:92;:60;15687:8;15697:21;15717:1;15697:17;:21;:::i;:::-;15720:4;15742;15750:19;:15;15768:1;15750:19;:::i;:::-;15613:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15591:188;-1:-1:-1;15790:107:92;15591:188;15810:21;15830:1;15810:17;:21;:::i;:::-;-1:-1:-1;;;;;15790:107:92;;;;;;;;;;;;;;;;;;:8;:107::i;:::-;15907:169;15929:21;15964:25;15980:9;15964:13;:25;:::i;:::-;15907:169;;;;;;;;;;;;;;;;;:8;:169::i;:::-;16152:4;;16132:14;;;;:17;;-1:-1:-1;;;;;16152:4:92;;;;;;16132:17;;;;;;:::i;:::-;-1:-1:-1;;;;;16132:24:92;;;:17;;;;;;;;;:24;16260:4;;16182:84;;16260:4;;16182:84;;;24620:74:105;-1:-1:-1;;;;;;;;;;;16166:15:92;;;-1:-1:-1;;;16205:45:92;24593:18:105;;16182:84:92;;;-1:-1:-1;;16182:84:92;;;;;;;;;;;;;;-1:-1:-1;;;;;16182:84:92;-1:-1:-1;;;;;;16182:84:92;;;;;;16166:101;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16277:6:92;;-1:-1:-1;;;;;16277:6:92;;-1:-1:-1;16277:60:92;;-1:-1:-1;16351:8:92;16361:21;:17;16277:6;16361:21;:::i;:::-;16384:4;16406;16414:19;:15;16432:1;16414:19;:::i;:::-;16277:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;16490:15:92;-1:-1:-1;;;16589:19:92;16607:1;16589:15;:19;:::i;:::-;16519:107;;;;;25144:25:105;;;;16610:15:92;25185:18:105;;;25178:34;25117:18;;16519:107:92;;;-1:-1:-1;;16519:107:92;;;;;;;;;;;;;;-1:-1:-1;;;;;16519:107:92;-1:-1:-1;;;;;;16519:107:92;;;;;;16490:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16646:6:92;;-1:-1:-1;;;;;16646:6:92;;-1:-1:-1;16646:60:92;;-1:-1:-1;16720:8:92;16730:17;16749:4;16771;16779:19;16646:6;16779:15;:19;:::i;:::-;16646:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16887:15:92;;;16900:1;16887:15;;;;;;;;16870:14;;;:32;;;;16928:68;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16928:68:92;-1:-1:-1;;;16928:68:92;;;16912:85;;-1:-1:-1;;;16912:85:92;;-1:-1:-1;;;;;;;;;;;16912:15:92;;;:85;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17007:6:92;;-1:-1:-1;;;;;17007:6:92;;-1:-1:-1;17007:60:92;;-1:-1:-1;17081:8:92;17091:17;17110:4;17132;17140:19;:15;17007:6;17140:19;:::i;:::-;17007:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2922:141:5:-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;4279:2180:92:-;4387:7;;;4416;;4425:4;;4387:61;;-1:-1:-1;;;4387:61:92;;-1:-1:-1;;;;;4416:7:92;;;4387:61;;;10028:34:105;4425:4:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;4356:5:92;;4337:16;;4387:7;;;;;:28;;9940:18:105;;4387:61:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:68;;;4498:6;;:40;;-1:-1:-1;;;4498:40:92;;-1:-1:-1;;;;;20149:55:105;;;4498:40:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;4468:25:92;20305:18:105;;;20298:50;;;4387:68:92;;-1:-1:-1;4498:6:92;;;;:17;;20104:18:105;;4498:40:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4589:4:92;;4595:7;;4465:73;;-1:-1:-1;4549:26:92;;-1:-1:-1;4578:25:92;;-1:-1:-1;;;;;4589:4:92;;;;4595:7;4578:10;:25::i;:::-;4692:6;;4549:54;;-1:-1:-1;4638:21:92;;4614;;-1:-1:-1;;;;;4692:6:92;:31;4737:8;4747:17;4549:54;4788:4;4796:19;:15;4692:6;4796:19;:::i;:::-;4692:133;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4670:155;;4836:74;4845:9;4856:17;-1:-1:-1;;;;;4836:74:92;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;4920:94;4929:21;4952:25;4968:9;4952:13;:25;:::i;:::-;4920:94;;;;;;;;;;;;;;;;;:8;:94::i;:::-;5108:6;;:40;;-1:-1:-1;;;5108:40:92;;-1:-1:-1;;;;;20149:55:105;;;5108:40:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;5108:6:92;20305:18:105;;;20298:50;5108:6:92;;;;:17;;20104:18:105;;5108:40:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5083:65:92;-1:-1:-1;;;;;;;;;;;;5158:15:92;-1:-1:-1;5158:15:92;-1:-1:-1;;;5279:21:92;5083:65;5299:1;5279:21;:::i;:::-;5187:146;;-1:-1:-1;;;;;21739:15:105;;;5187:146:92;;;21721:34:105;21791:15;;;21771:18;;;21764:43;21641:18;;5187:146:92;;;-1:-1:-1;;5187:146:92;;;;;;;;;;;;;;-1:-1:-1;;;;;5187:146:92;-1:-1:-1;;;;;;5187:146:92;;;;;;5158:185;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5353:6:92;;-1:-1:-1;;;;;5353:6:92;;-1:-1:-1;5353:31:92;;-1:-1:-1;5398:8:92;5408:21;:17;5353:6;5408:21;:::i;:::-;5431:4;5453;5461:19;:15;5479:1;5461:19;:::i;:::-;5353:137;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5566:4:92;;5546:14;;;;:17;;-1:-1:-1;;;;;5566:4:92;;;;;;5546:17;;;;;;:::i;:::-;-1:-1:-1;;;;;5546:24:92;;;:17;;;;;;;;;:24;5674:4;;5596:84;;5674:4;;5596:84;;;24620:74:105;-1:-1:-1;;;;;;;;;;;5580:15:92;;;-1:-1:-1;;;5619:45:92;24593:18:105;;5596:84:92;;;-1:-1:-1;;5596:84:92;;;;;;;;;;;;;;-1:-1:-1;;;;;5596:84:92;-1:-1:-1;;;;;;5596:84:92;;;;;;5580:101;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5691:6:92;;-1:-1:-1;;;;;5691:6:92;;-1:-1:-1;5691:31:92;;-1:-1:-1;5736:8:92;5746:21;:17;5691:6;5746:21;:::i;:::-;5769:4;5791;5799:19;:15;5817:1;5799:19;:::i;:::-;5691:137;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;5875:15:92;-1:-1:-1;;;5974:19:92;5992:1;5974:15;:19;:::i;:::-;5904:107;;;;;25144:25:105;;;;5995:15:92;25185:18:105;;;25178:34;25117:18;;5904:107:92;;;-1:-1:-1;;5904:107:92;;;;;;;;;;;;;;-1:-1:-1;;;;;5904:107:92;-1:-1:-1;;;;;;5904:107:92;;;;;;5875:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6031:6:92;;-1:-1:-1;;;;;6031:6:92;;-1:-1:-1;6031:31:92;;-1:-1:-1;6063:8:92;6073:17;6092:4;6114;6122:19;6031:6;6122:15;:19;:::i;:::-;6031:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6221:15:92;;;6234:1;6221:15;;;;;;;;6204:14;;;:32;;;;6262:68;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6262:68:92;-1:-1:-1;;;6262:68:92;;;6246:85;;-1:-1:-1;;;6246:85:92;;-1:-1:-1;;;;;;;;;;;6246:15:92;;;:85;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6341:6:92;;-1:-1:-1;;;;;6341:6:92;;-1:-1:-1;6341:31:92;;-1:-1:-1;6373:8:92;6383:17;6402:4;6424;6432:19;:15;6341:6;6432:19;:::i;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10409:2113:92;10518:7;;;10547;;10556:4;;10518:61;;-1:-1:-1;;;10518:61:92;;-1:-1:-1;;;;;10547:7:92;;;10518:61;;;10028:34:105;10556:4:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;10487:5:92;;10467:17;;10518:7;;;;;:28;;9940:18:105;;10518:61:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:68;;;10627:6;;:40;;-1:-1:-1;;;10627:40:92;;-1:-1:-1;;;;;20149:55:105;;;10627:40:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;10597:24:92;20305:18:105;;;20298:50;;;10518:68:92;;-1:-1:-1;10627:6:92;;;;:16;;20104:18:105;;10627:40:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;10718:4:92;;10724:7;;10596:71;;-1:-1:-1;10678:26:92;;10707:25;;-1:-1:-1;;;;;10718:4:92;;;;10724:7;10707:10;:25::i;:::-;10767:4;;:29;;-1:-1:-1;;;10767:29:92;;10790:4;10767:29;;;24620:74:105;10678:54:92;;-1:-1:-1;10743:21:92;;-1:-1:-1;;;;;10767:4:92;;;;:14;;24593:18:105;;10767:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10838:6;;10743:53;;-1:-1:-1;10808:26:92;;-1:-1:-1;;;;;10838:6:92;:31;10883:9;10894:16;10912:4;10934;10942:19;:15;10838:6;10942:19;:::i;:::-;10838:133;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10838:133:92;;;;;;;;;;;;:::i;:::-;10807:164;;10982:76;10991:9;11001:1;10991:12;;;;;;;;:::i;:::-;;;;;;;11005:16;-1:-1:-1;;;;;10982:76:92;;;;;;;;;;;;;;;;;;:8;:76::i;:::-;11077:4;;:29;;-1:-1:-1;;;11077:29:92;;11100:4;11077:29;;;24620:74:105;11068:105:92;;-1:-1:-1;;;;;11077:4:92;;:14;;24593:18:105;;11077:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11124:9;11134:1;11124:12;;;;;;;;:::i;:::-;;;;;;;11108:13;:28;;;;:::i;:::-;11068:105;;;;;;;;;;;;;;;;;:8;:105::i;:::-;11207:6;;:40;;-1:-1:-1;;;11207:40:92;;-1:-1:-1;;;;;20149:55:105;;;11207:40:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;11207:6:92;20305:18:105;;;20298:50;11207:6:92;;;;:16;;20104:18:105;;11207:40:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11184:63:92;;-1:-1:-1;;;;;;;;;;;;11300:15:92;-1:-1:-1;11300:15:92;-1:-1:-1;;;11419:20:92;11438:1;11184:63;11419:20;:::i;:::-;11329:142;;-1:-1:-1;;;;;21739:15:105;;;11329:142:92;;;21721:34:105;21791:15;;;21771:18;;;21764:43;21641:18;;11329:142:92;;;-1:-1:-1;;11329:142:92;;;;;;;;;;;;;;-1:-1:-1;;;;;11329:142:92;-1:-1:-1;;;;;;11329:142:92;;;;;;11300:181;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11491:6:92;;-1:-1:-1;;;;;11491:6:92;;-1:-1:-1;11491:31:92;;-1:-1:-1;11523:9:92;11534:20;11491:6;11534:16;:20;:::i;:::-;11556:4;11570;11577:19;:15;11595:1;11577:19;:::i;:::-;11491:106;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11491:106:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11673:4:92;;11653:14;;;;:17;;-1:-1:-1;;;;;11673:4:92;;;;;;11653:17;;;;;;:::i;:::-;-1:-1:-1;;;;;11653:24:92;;;:17;;;;;;;;;:24;11781:4;;11703:84;;11781:4;;11703:84;;;24620:74:105;-1:-1:-1;;;;;;;;;;;11687:15:92;;;-1:-1:-1;;;11726:45:92;24593:18:105;;11703:84:92;;;-1:-1:-1;;11703:84:92;;;;;;;;;;;;;;-1:-1:-1;;;;;11703:84:92;-1:-1:-1;;;;;;11703:84:92;;;;;;11687:101;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11798:6:92;;-1:-1:-1;;;;;11798:6:92;;-1:-1:-1;11798:31:92;;-1:-1:-1;11830:9:92;11841:16;11859:4;11881;11889:19;:15;11798:6;11889:19;:::i;:::-;11798:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11798:111:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;11956:15:92;-1:-1:-1;;;12055:19:92;12073:1;12055:15;:19;:::i;:::-;11985:107;;;;;25144:25:105;;;;12076:15:92;25185:18:105;;;25178:34;25117:18;;11985:107:92;;;-1:-1:-1;;11985:107:92;;;;;;;;;;;;;;-1:-1:-1;;;;;11985:107:92;-1:-1:-1;;;;;;11985:107:92;;;;;;11956:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12112:6:92;;-1:-1:-1;;;;;12112:6:92;;-1:-1:-1;12112:31:92;;-1:-1:-1;12144:9:92;12155:16;12173:4;12187;12194:19;12112:6;12194:15;:19;:::i;:::-;12112:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12112:102:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12293:15:92;;;12306:1;12293:15;;;;;;;;12276:14;;;:32;;;;12334:68;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12334:68:92;-1:-1:-1;;;12334:68:92;;;12318:85;;-1:-1:-1;;;12318:85:92;;-1:-1:-1;;;;;;;;;;;12318:15:92;;;:85;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12413:6:92;;-1:-1:-1;;;;;12413:6:92;;-1:-1:-1;12413:31:92;;-1:-1:-1;12445:9:92;12456:16;12474:4;12488;12495:19;:15;12413:6;12495:19;:::i;:::-;12413:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12413:102:92;;;;;;;;;;;;:::i;2070:2203::-;2178:7;;;2207:4;;2213;;2178:58;;-1:-1:-1;;;2178:58:92;;-1:-1:-1;;;;;2207:4:92;;;2178:58;;;10028:34:105;2213:4:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;2147:5:92;;2128:16;;2178:7;;;;;:28;;9940:18:105;;2178:58:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;2286:6;;:39;;-1:-1:-1;;;2286:39:92;;-1:-1:-1;;;;;20149:55:105;;;2286:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;2286:6:92;20305:18:105;;;20298:50;2178:65:92;;-1:-1:-1;2256:25:92;;2286:6;;;;:17;;20104:18:105;;2286:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2376:4:92;;2382;;2253:72;;-1:-1:-1;2336:26:92;;-1:-1:-1;2365:22:92;;-1:-1:-1;;;;;2376:4:92;;;;2382;2365:10;:22::i;:::-;2422:4;;:29;;-1:-1:-1;;;2422:29:92;;2445:4;2422:29;;;24620:74:105;2336:51:92;;-1:-1:-1;2398:21:92;;-1:-1:-1;;;;;2422:4:92;;;;:14;;24593:18:105;;2422:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2496:6;;2398:53;;-1:-1:-1;2463:17:92;;-1:-1:-1;;;;;2496:6:92;:31;2528:8;2538:17;2557:4;2571;2578:19;:15;2496:6;2578:19;:::i;:::-;2496:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2462:136;;2609:74;2618:9;2629:17;-1:-1:-1;;;;;2609:74:92;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;2702:4;;:29;;-1:-1:-1;;;2702:29:92;;2725:4;2702:29;;;24620:74:105;2693:102:92;;-1:-1:-1;;;;;2702:4:92;;:14;;24593:18:105;;2702:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2733:25;2749:9;2733:13;:25;:::i;:::-;2693:102;;;;;;;;;;;;;;;;;:8;:102::i;:::-;2889:6;;:39;;-1:-1:-1;;;2889:39:92;;-1:-1:-1;;;;;20149:55:105;;;2889:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;2889:6:92;20305:18:105;;;20298:50;2889:6:92;;;;:17;;20104:18:105;;2889:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2864:64:92;-1:-1:-1;;;;;;;;;;;;2938:15:92;-1:-1:-1;2938:15:92;-1:-1:-1;;;3059:21:92;2864:64;3079:1;3059:21;:::i;:::-;2967:146;;-1:-1:-1;;;;;21739:15:105;;;2967:146:92;;;21721:34:105;21791:15;;;21771:18;;;21764:43;21641:18;;2967:146:92;;;-1:-1:-1;;2967:146:92;;;;;;;;;;;;;;-1:-1:-1;;;;;2967:146:92;-1:-1:-1;;;;;;2967:146:92;;;;;;2938:185;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3133:6:92;;-1:-1:-1;;;;;3133:6:92;;-1:-1:-1;3133:31:92;;-1:-1:-1;3165:8:92;3175:21;:17;3133:6;3175:21;:::i;:::-;3198:4;3212;3219:19;:15;3237:1;3219:19;:::i;:::-;3133:106;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;3286:15:92;-1:-1:-1;;;3385:19:92;3403:1;3385:15;:19;:::i;:::-;3315:107;;;;;25144:25:105;;;;3406:15:92;25185:18:105;;;25178:34;25117:18;;3315:107:92;;;-1:-1:-1;;3315:107:92;;;;;;;;;;;;;;-1:-1:-1;;;;;3315:107:92;-1:-1:-1;;;;;;3315:107:92;;;;;;3286:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3442:6:92;;-1:-1:-1;;;;;3442:6:92;;-1:-1:-1;3442:31:92;;-1:-1:-1;3474:8:92;3484:17;3503:4;3517;3524:19;3442:6;3524:15;:19;:::i;:::-;3442:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3623:15:92;;;3636:1;3623:15;;;;;;;;3606:14;;;:32;;;;3664:68;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3664:68:92;-1:-1:-1;;;3664:68:92;;;3648:85;;-1:-1:-1;;;3648:85:92;;-1:-1:-1;;;;;;;;;;;3648:15:92;;;:85;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3743:6:92;;-1:-1:-1;;;;;3743:6:92;;-1:-1:-1;3743:31:92;;-1:-1:-1;3775:8:92;3785:17;3804:4;3818;3825:19;:15;3743:6;3825:19;:::i;:::-;3743:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3917:15:92;;;3930:1;3917:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3900:14:92;;;:32;;;3962:4;;3942:17;;-1:-1:-1;;;;;3962:4:92;;;;3900:32;3962:4;;3942:17;;;;:::i;:::-;-1:-1:-1;;;;;3942:24:92;;;:17;;;;;;;;;:24;3996:8;;3976:14;;;;:17;;3996:8;;;;;3976:14;3996:8;;3976:17;;;;;;:::i;:::-;-1:-1:-1;;;;;3976:28:92;;;:17;;;;;;;;;:28;4111:4;;4117:8;;4043:101;;4111:4;;;4043:101;;;10028:34:105;4117:8:92;;;10078:18:105;;;10071:43;1147:2:93;10130:18:105;;;10123:47;-1:-1:-1;;;;;;;;;;;4014:15:92;;;-1:-1:-1;;;4066:43:92;9940:18:105;;4043:101:92;;;-1:-1:-1;;4043:101:92;;;;;;;;;;;;;;-1:-1:-1;;;;;4043:101:92;-1:-1:-1;;;;;;4043:101:92;;;;;;4014:140;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4164:6:92;;-1:-1:-1;;;;;4164:6:92;;-1:-1:-1;4164:31:92;;-1:-1:-1;4196:8:92;4206:17;4225:4;4239;4246:19;:15;4164:6;4246:19;:::i;8629:1774::-;8738:7;;;8767:4;;8773;;8738:58;;-1:-1:-1;;;8738:58:92;;-1:-1:-1;;;;;8767:4:92;;;8738:58;;;10028:34:105;8773:4:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;8707:5:92;;8687:17;;8738:7;;;;;:28;;9940:18:105;;8738:58:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;8844:6;;:39;;-1:-1:-1;;;8844:39:92;;-1:-1:-1;;;;;20149:55:105;;;8844:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;8844:6:92;20305:18:105;;;20298:50;8738:65:92;;-1:-1:-1;8814:24:92;;8844:6;;;;:16;;20104:18:105;;8844:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8934:4:92;;8940;;8813:70;;-1:-1:-1;8894:26:92;;8923:22;;-1:-1:-1;;;;;8934:4:92;;;;8940;8923:10;:22::i;:::-;8980:4;;:29;;-1:-1:-1;;;8980:29:92;;9003:4;8980:29;;;24620:74:105;8894:51:92;;-1:-1:-1;8956:21:92;;-1:-1:-1;;;;;8980:4:92;;;;:14;;24593:18:105;;8980:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9063:6;;8956:53;;-1:-1:-1;9021:26:92;;-1:-1:-1;;;;;9063:6:92;:31;9095:9;9106:16;9124:4;9138;9145:19;:15;9063:6;9145:19;:::i;:::-;9063:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9063:102:92;;;;;;;;;;;;:::i;:::-;9020:145;;9176:76;9185:9;9195:1;9185:12;;;;;;;;:::i;:::-;;;;;;;9199:16;-1:-1:-1;;;;;9176:76:92;;;;;;;;;;;;;;;;;;:8;:76::i;:::-;9271:4;;:29;;-1:-1:-1;;;9271:29:92;;9294:4;9271:29;;;24620:74:105;9262:105:92;;-1:-1:-1;;;;;9271:4:92;;:14;;24593:18:105;;9271:29:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9318:9;9328:1;9318:12;;;;;;;;:::i;:::-;;;;;;;9302:13;:28;;;;:::i;:::-;9262:105;;;;;;;;;;;;;;;;;:8;:105::i;:::-;9401:6;;:39;;-1:-1:-1;;;9401:39:92;;-1:-1:-1;;;;;20149:55:105;;;9401:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;9401:6:92;20305:18:105;;;20298:50;9401:6:92;;;;:16;;20104:18:105;;9401:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9378:62:92;;-1:-1:-1;;;;;;;;;;;;9493:15:92;-1:-1:-1;9493:15:92;-1:-1:-1;;;9612:20:92;9631:1;9378:62;9612:20;:::i;:::-;9522:142;;-1:-1:-1;;;;;21739:15:105;;;9522:142:92;;;21721:34:105;21791:15;;;21771:18;;;21764:43;21641:18;;9522:142:92;;;-1:-1:-1;;9522:142:92;;;;;;;;;;;;;;-1:-1:-1;;;;;9522:142:92;-1:-1:-1;;;;;;9522:142:92;;;;;;9493:181;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9684:6:92;;-1:-1:-1;;;;;9684:6:92;;-1:-1:-1;9684:31:92;;-1:-1:-1;9716:9:92;9727:20;9684:6;9727:16;:20;:::i;:::-;9749:4;9763;9770:19;:15;9788:1;9770:19;:::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;12528:2204:92:-;12637:7;;;12666;;12675:4;;12637:61;;-1:-1:-1;;;12637:61:92;;-1:-1:-1;;;;;12666:7:92;;;12637:61;;;10028:34:105;12675:4:92;;;10078:18:105;;;10071:43;;;;1147:2:93;10130:18:105;;;10123:47;12606:5:92;;12586:17;;12637:7;;;;;:28;;9940:18:105;;12637:61:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:68;;;12746:6;;:39;;-1:-1:-1;;;12746:39:92;;-1:-1:-1;;;;;20149:55:105;;;12746:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;12746:6:92;20305:18:105;;;20298:50;12637:68:92;;-1:-1:-1;12716:24:92;;12746:6;;;;:16;;20104:18:105;;12746:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;12836:7:92;;12845:4;;12715:70;;-1:-1:-1;12796:26:92;;12825:25;;-1:-1:-1;;;;;12836:7:92;;;;12845:4;12825:10;:25::i;:::-;13002:6;;12796:54;;-1:-1:-1;12885:21:92;;12861;;-1:-1:-1;;;;;13002:6:92;:31;13041:22;:16;13060:3;13041:22;:::i;:::-;-1:-1:-1;;;;;13002:137:92;13078:9;13089:4;13103;13110:19;:15;13128:1;13110:19;:::i;:::-;13002:137;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13002:137:92;;;;;;;;;;;;:::i;:::-;12971:168;;13150:76;13159:9;13169:1;13159:12;;;;;;;;:::i;:::-;;;;;;;13173:16;-1:-1:-1;;;;;13150:76:92;;;;;;;;;;;;;;;;;;:8;:76::i;:::-;13236:97;13245:21;13284:9;13294:1;13284:12;;;;;;;;:::i;:::-;;;;;;;13268:13;:28;;;;:::i;:::-;13236:97;;;;;;;;;;;;;;;;;:8;:97::i;:::-;13367:6;;:39;;-1:-1:-1;;;13367:39:92;;-1:-1:-1;;;;;20149:55:105;;;13367:39:92;;;20131:74:105;-1:-1:-1;;;;;20241:47:105;;20221:18;;;20214:75;13367:6:92;20305:18:105;;;20298:50;13367:6:92;;;;:16;;20104:18:105;;13367:39:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13344:62:92;;-1:-1:-1;;;;;;;;;;;;13470:15:92;-1:-1:-1;13470:15:92;-1:-1:-1;;;13589:20:92;13608:1;13344:62;13589:20;:::i;:::-;13499:142;;-1:-1:-1;;;;;21739:15:105;;;13499:142:92;;;21721:34:105;21791:15;;;21771:18;;;21764:43;21641:18;;13499:142:92;;;-1:-1:-1;;13499:142:92;;;;;;;;;;;;;;-1:-1:-1;;;;;13499:142:92;-1:-1:-1;;;;;;13499:142:92;;;;;;13470:181;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13661:6:92;;-1:-1:-1;;;;;13661:6:92;;-1:-1:-1;13661:31:92;;-1:-1:-1;13700:20:92;13719:1;13700:16;:20;:::i;:::-;-1:-1:-1;;;;;13661:135:92;13735:9;13746:4;13760;13767:19;:15;13785:1;13767:19;:::i;:::-;13661:135;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13661:135:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13871:4:92;;13851:14;;;;:17;;-1:-1:-1;;;;;13871:4:92;;;;;;13851:17;;;;:::i;:::-;-1:-1:-1;;;;;13851:24:92;;;:17;;;;;;;;;:24;13979:4;;13901:84;;13979:4;;13901:84;;;24620:74:105;-1:-1:-1;;;;;;;;;;;13885:15:92;;;-1:-1:-1;;;13924:45:92;24593:18:105;;13901:84:92;;;-1:-1:-1;;13901:84:92;;;;;;;;;;;;;;-1:-1:-1;;;;;13901:84:92;-1:-1:-1;;;;;;13901:84:92;;;;;;13885:101;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13996:6:92;;-1:-1:-1;;;;;13996:6:92;;-1:-1:-1;13996:31:92;;-1:-1:-1;;;;;;13996:109:92;;14053:9;14064:4;14078;14085:19;:15;13996:6;14085:19;:::i;:::-;13996:109;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13996:109:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;14152:15:92;-1:-1:-1;;;14251:19:92;14269:1;14251:15;:19;:::i;:::-;14181:107;;;;;25144:25:105;;;;14272:15:92;25185:18:105;;;25178:34;25117:18;;14181:107:92;;;-1:-1:-1;;14181:107:92;;;;;;;;;;;;;;-1:-1:-1;;;;;14181:107:92;-1:-1:-1;;;;;;14181:107:92;;;;;;14152:146;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14308:6:92;;-1:-1:-1;;;;;14308:6:92;;-1:-1:-1;14308:31:92;;-1:-1:-1;;;;;;14308:109:92;;14365:9;14376:4;14390;14397:19;14308:6;14397:15;:19;:::i;:::-;14308:109;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14308:109:92;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14496:15:92;;;14509:1;14496:15;;;;;;;;14479:14;;;:32;;;;14537:68;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14537:68:92;-1:-1:-1;;;14537:68:92;;;14521:85;;-1:-1:-1;;;14521:85:92;;-1:-1:-1;;;;;;;;;;;14521:15:92;;;:85;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14616:6:92;;-1:-1:-1;;;;;14616:6:92;;-1:-1:-1;14616:31:92;;-1:-1:-1;;;;;;14616:109:92;;14673:9;14684:4;14698;14705:19;:15;14616:6;14705:19;:::i;:::-;14616:109;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14616:109:92;;;;;;;;;;;;:::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:1171:93;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;24638:55:105;;11033:19:93;;;24620:74:105;-1:-1:-1;;;;;;;;;;;11033:13:93;;;24593:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;11555:55:105;;;11062:41:93;;;11537:74:105;11627:18;;;11620:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;11510:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;11555:55:105;;;11113:41:93;;;11537:74:105;11627:18;;;11620:34;;;11113:15:93;;;;;11510:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;30931:6:105;30919:19;;12532:26:93;;;30901:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;30874:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;11537:74:105;;;1398:17:1;11627:18:105;;;11620:34;1428:1:1;;1377:7;;11510:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;32282:2:105;11461:73:93;;;32264:21:105;32321:2;32301:18;;;32294:30;32360:26;32340:18;;;32333:54;32404:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;12433:55:105;;;11821:26:93;;;12415:74:105;12537:8;12525:21;;12505:18;;;12498:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;12388:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;24638:55:105;;11974:14:93;;;24620:74:105;-1:-1:-1;;;;;;;;;;;11974:8:93;;;24593:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;-1:-1:-1;;;;;;;;;;;2755:7:93;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;34333:4:105;34321:17;;;34303:36;;34291:2;34276:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;34333:4:105;34321:17;;;34303:36;;34291:2;34276:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;34333:4:105;34321:17;;;34303:36;;34291:2;34276:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;34333:4:105;34321:17;;;34303:36;;34291:2;34276:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;34333:4:105;34321:17;;;34303:36;;34291:2;34276:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;34333:4:105;34321:17;;;34303:36;;34291:2;34276:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;34961:74:105;35051:18;;;35044:30;;;;35110:1;35090:18;;;35083:29;35148:9;35128:18;;;35121:37;-1:-1:-1;;;;;;;;;;;3125:8:93;;;35175:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;35417:74:105;;;;35507:18;;;35500:30;;;;35546:18;;;35539:29;-1:-1:-1;;;35584:18:105;;;35577:34;-1:-1:-1;;;;;;;;;;;3172:8:93;-1:-1:-1;3172:8:93;;-1:-1:-1;35628:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;35870:74:105;;;;35960:18;;;35953:30;;;;35999:18;;;35992:29;-1:-1:-1;;;36037:18:105;;;36030:34;-1:-1:-1;;;;;;;;;;;3213:8:93;-1:-1:-1;3213:8:93;;-1:-1:-1;36081:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;36323:74:105;;;;36413:18;;;36406:30;;;;36452:18;;;36445:29;-1:-1:-1;;;36490:18:105;;;36483:34;-1:-1:-1;;;;;;;;;;;3254:8:93;-1:-1:-1;3254:8:93;;-1:-1:-1;36534:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;36776:74:105;;;;36866:18;;;36859:30;;;;36905:18;;;36898:29;-1:-1:-1;;;36943:18:105;;;36936:34;-1:-1:-1;;;;;;;;;;;3295:8:93;-1:-1:-1;3295:8:93;;-1:-1:-1;36987:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;37229:74:105;;;;37319:18;;;37312:30;;;;37358:18;;;37351:29;-1:-1:-1;;;37396:18:105;;;37389:34;-1:-1:-1;;;;;;;;;;;3336:8:93;-1:-1:-1;3336:8:93;;-1:-1:-1;37440:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;37682:74:105;37772:18;;;37765:30;37831:1;37811:18;;;37804:29;-1:-1:-1;;;37849:18:105;;;37842:33;-1:-1:-1;;;;;;;;;;;3377:8:93;-1:-1:-1;3377:8:93;;-1:-1:-1;37892:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;38134:74:105;38224:18;;;38217:30;38283:1;38263:18;;;38256:29;38321:10;38301:18;;;38294:38;-1:-1:-1;;;;;;;;;;;3416:8:93;-1:-1:-1;3416:8:93;;-1:-1:-1;38349:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;38676:15:105;;;38658:34;;38728:15;;;;38723:2;38708:18;;38701:43;38775:2;38760:18;;38753:34;38585:2;38570:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;24638:55:105;;;24620:74;;24608:2;24593:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;24620:74:105;;;;3824:7:93;;;;:31;;24593:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;39394:15:105;;;39376:34;;39446:15;;;39441:2;39426:18;;39419:43;39498:15;;;39493:2;39478:18;;39471:43;39303:2;39288:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;39394:15:105;;;39376:34;;39446:15;;;39441:2;39426:18;;39419:43;39498:15;;;39493:2;39478:18;;39471:43;39303:2;39288:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;40149:74:105;40239:18;;;40232:30;;;;40298:1;40278:18;;;40271:29;40336:8;40316:18;;;40309:36;-1:-1:-1;;;;;;;;;;;4298:8:93;;;40362:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;40604:74:105;40694:18;;;40687:30;40753:1;40733:18;;;40726:29;40791:8;40771:18;;;40764:36;-1:-1:-1;;;;;;;;;;;4343:8:93;-1:-1:-1;4343:8:93;;-1:-1:-1;40817:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;41059:74:105;41149:18;;;41142:30;;;;41208:1;41188:18;;;41181:29;41246:9;41226:18;;;41219:37;-1:-1:-1;;;;;;;;;;;4388:8:93;-1:-1:-1;4388:8:93;;-1:-1:-1;41273:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;41515:74:105;41605:18;;;41598:30;41664:2;41644:18;;;41637:30;41703:20;41683:18;;;41676:48;-1:-1:-1;;;;;;;;;;;4435:8:93;-1:-1:-1;4435:8:93;;-1:-1:-1;41741:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;41983:74:105;42073:18;;;42066:30;42132:1;42112:18;;;42105:29;42170:10;42150:18;;;42143:38;-1:-1:-1;;;;;;;;;;;4528:8:93;-1:-1:-1;4528:8:93;;-1:-1:-1;42198:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;42440:74:105;42530:18;;;42523:30;42589:1;42569:18;;;42562:29;42627:11;42607:18;;;42600:39;-1:-1:-1;;;;;;;;;;;4577:8:93;-1:-1:-1;4577:8:93;;-1:-1:-1;42656:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;11510:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;4729:4:93;;;:12;;11510:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;4789:4:93;;;:12;;11510:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;4849:4:93;;;:12;;11510:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;4909:4:93;;;:12;;11510:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;4969:4:93;;;:12;;11510:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5029:3:93;;;:11;;11510:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5088:8:93;;;:16;;11510:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5153:7:93;;;:15;;11510:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5214:4:93;;;:12;;11510:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5272:4:93;;;:12;;11510:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5330:4:93;;;:12;;11510:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5388:4:93;;;:12;;11510:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5446:4:93;;;:12;;11510:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5504:3:93;;;:11;;11510:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;11537:74:105;-1:-1:-1;;11627:18:105;;;11620:34;5561:8:93;;;:16;;11510:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;:::-;26935:117;;;:::o;7798:1036:93:-;8003:56;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8003:56:93;8072:20;8094:30;8126;8158:17;8191:52;8207:9;8218:7;8227:10;8239:3;8191:15;:52::i;:::-;8071:172;;;;;;;;8276:551;;;;;;;;8328:6;-1:-1:-1;;;;;8276:551:93;;;;;8356:6;-1:-1:-1;;;;;8276:551:93;;;;;1147:2;8276:551;;;;;;8424:9;8276:551;;;;8456:9;8276:551;;;;8491:1;8276:551;;;;8518:1;8276:551;;;;8550:7;8276:551;;;;;;8583:1;8276:551;;;;8608:30;8630:7;8608:3;:21;;:30;;;;:::i;:::-;8276:551;;;;;;;;;;;;;;-1:-1:-1;;;;;8740:3:93;8276:551;;;;;;;;;;;;;8794:22;:15;8812:4;8794:22;:::i;:::-;8276:551;;8254:573;7798:1036;-1:-1:-1;;;;;;;;;;;7798:1036:93:o;19644:425:92:-;19719:26;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;19719:26:92;19777:16;;;19791:1;19777:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19757:36:92;;;19803:20;;1147:2:93;;19757:36:92;:17;;19803:20;;;;:::i;:::-;;;;;;;;;;:39;19869:26;;;19893:1;19869:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19853:13:92;;;:42;;;19905:16;;19924:20;;19853:42;19919:1;;19905:16;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;19972:15:92;;;19985:1;19972:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19955:14:92;;;:32;;;19997:17;;20017:7;;19955:32;20012:1;;19997:17;;;;:::i;:::-;;;;;;:27;-1:-1:-1;;;;;19997:27:92;;;-1:-1:-1;;;;;19997:27:92;;;;;20054:8;20034:4;:14;;;20049:1;20034:17;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;20034:28:92;;;-1:-1:-1;;;;;20034:28:92;;;;;19644:425;;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10236:135:78;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8711:::-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;24620:74:105;6180:7:93;;;:21;;24593:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;24620:74:105;6253:7:93;;;:21;;24593:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;24620:74:105;6323:7:93;;;:21;;24593:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;24620:74:105;6393:7:93;;;:21;;24593:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;24620:74:105;6463:7:93;;;:21;;24593:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;24620:74:105;6533:7:93;;;:21;;24593:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;24620:74:105;6602:7:93;;;:21;;24593:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;24620:74:105;6675:7:93;;;:21;;24593:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6638:68;6085:628::o;6719:422::-;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;44171:6:105;44204:15;;6788:346:93;;;44186:34:105;1202:5:93;44236:18:105;;;44229:43;;;1262:2:93;44288:18:105;;;44281:43;1318:3:93;44340:18:105;;;44333:43;44392:19;;;44385:44;;;;1446:6:93;44472:19:105;;;44465:44;1508:5:93;44525:19:105;;;44518:44;1581:7:93;44578:19:105;;;44571:44;6788:7:93;44631:19:105;;;44624:51;-1:-1:-1;;;;;6788:7:93;;:17;;44133:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;:::o;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;24638:55:105;;;27501:38:3;;;;24620:74:105;;;;27501:38:3;;;;;;;;;;24593:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;27748:414::-;27416:752;;27331:837;;;;:::o;8840:1225:93:-;8991:20;;;9113:17;9159:14;9172:1;9159:10;:14;:::i;:::-;:19;;9177:1;9159:19;9155:92;;9194:42;;-1:-1:-1;;;9194:42:93;;45366:2:105;9194:42:93;;;45348:21:105;;;45385:18;;;45378:30;45444:34;45424:18;;;45417:62;45496:18;;9194:42:93;45164:356:105;9155:92:93;9257:13;9273:14;9286:1;9273:10;:14;:::i;:::-;9257:30;;9317:10;9303:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9303:25:93;;9297:31;;9369:10;9355:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9355:25:93;;9339:41;;9420:10;9406:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9406:25:93;-1:-1:-1;9390:41:93;-1:-1:-1;9441:23:93;9490:10;:6;9499:1;9490:10;:::i;:::-;9467:34;;;;363:4:64;9467:34:93;:::i;:::-;9441:60;-1:-1:-1;9511:20:93;9547:10;:6;9556:1;9547:10;:::i;:::-;9534:24;;;;:9;:24;:::i;:::-;9511:47;;9574:9;9569:490;9589:10;9585:14;;:1;:14;9569:490;;;9665:7;9669:3;9665:1;:7;:::i;:::-;9660:13;;;;:1;:13;:::i;:::-;9649:7;9653:3;9649:1;:7;:::i;:::-;9639:18;;:6;:18;:::i;:::-;9629:28;;:7;:28;:::i;:::-;:44;;;;;;:::i;:::-;9620:3;9624:1;9620:6;;;;;;;;:::i;:::-;;;;;;:53;;;;;9697:6;9692:11;;:1;:11;9688:84;;9742:15;9723:13;9737:1;9723:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9688:84;9794:6;9789:11;;:1;:11;9785:264;;9839:15;9820:13;9834:1;9820:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9900:1;9885:12;:16;:149;;10033:1;9885:149;;;9924:86;258:3:64;9979:30:93;10001:3;10005:1;10001:6;;;;;;;;:::i;:::-;;;;;;;9979:14;:30::i;:::-;9924:12;;:86;:30;:86::i;:::-;9872:162;;;;:::i;:::-;;;9785:264;9601:3;;;;:::i;:::-;;;;9569:490;;;;9145:920;;;8840:1225;;;;;;;;;:::o;685:365:94:-;805:27;875:11;:18;862:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;862:32:94;;848:46;;909:9;904:140;928:11;:18;924:1;:22;904:140;;;1024:7;1016:16;;991:11;1003:1;991:14;;;;;;;;:::i;:::-;;;;;;;984:49;;;;:::i;:::-;967:11;979:1;967:14;;;;;;;;:::i;:::-;;;;;;;;;;:66;948:3;;;;:::i;:::-;;;;904:140;;;;685:365;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;9337:43;9231:156;-1:-1:-1;;;9231:156:8:o;9393:143::-;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;5781:146:93:-;5839:13;5872:48;5899:2;1147;5872:26;:48::i;4594:437:82:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;10966:1095:8:-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;11555:55:105;;11664:18:8;;;11537:74:105;11627:18;;;11620:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;;;;;;;;;;;;11664:7:8;;;11510:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;47733:2:105;11725:175:8;;;47715:21:105;47772:3;47752:18;;;47745:31;47812:34;47792:18;;;47785:62;47883:34;47863:18;;;47856:62;47955:34;47934:19;;;47927:63;-1:-1:-1;;;48006:19:105;;;47999:46;48062:19;;11725:175:8;47531:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;48312:55:105;;11920:24:8;;;48294:74:105;48384:18;;;48377:34;;;48427:18;;;48420:34;;;-1:-1:-1;;;;;;;;;;;11920:8:8;;;48267:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;812:217:70:-;886:13;623:6:64;1824:42:70;258:3:64;1824:42:70;;;;1823:72;-1:-1:-1;;;1805:90:70;2185:11;;;-1:-1:-1;;2178:35:70;1004:18;1805:90;2178:35;1004:8;:18::i;13395:393:8:-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;9110:115;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;4113:3600:81:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:64;-1:-1:-1;4252:22:81;;-1:-1:-1;4252:22:81;4240:34;-1:-1:-1;4316:1:81;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:64;-1:-1:-1;4574:1:81;-1:-1:-1;;;;;4595:41:81;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:81;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:81;;;;;25144:25:105;;;25185:18;;;25178:34;;;25117:18;;7609:35:81;24970:248:105;7585:59:81;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:81;:::i;1264:3304:8:-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;24638:55:105;;1990:25:8;;;24620:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;;;;;;;;;;;;1990:11:8;;;24593:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;11555:55:105;;;;11537:74;;11642:2;11627:18;;11620:34;11525:2;11510:18;;11300:360;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;11555:55:105;;;11537:74;;11627:18;;;11620:34;11510:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;47733:2:105;2268:187:8;;;47715:21:105;47772:3;47752:18;;;47745:31;47812:34;47792:18;;;47785:62;47883:34;47863:18;;;47856:62;47955:34;47934:19;;;47927:63;-1:-1:-1;;;48006:19:105;;;47999:46;48062:19;;2268:187:8;47531:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;49582:55:105;;;49564:74;;-1:-1:-1;;;;;;49674:33:105;;;49654:18;;;49647:61;;;;49724:18;;;49717:34;49782:2;49767:18;;49760:34;49551:3;49536:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;11555:55:105;;;;11537:74;;11642:2;11627:18;;11620:34;11525:2;11510:18;;11300:360;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;11555:55:105;;;11537:74;;11627:18;;;11620:34;11510:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;-1:-1:-1;;;;;;;;;;;3215:8:8;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;48312:55:105;;;3215:32:8;;;48294:74:105;48384:18;;;48377:34;48427:18;;;48420:34;;;48267:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;49582:55:105;;;49564:74;;-1:-1:-1;;;;;;49674:33:105;;;49654:18;;;49647:61;;;;49724:18;;;49717:34;49782:2;49767:18;;49760:34;49551:3;49536:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;48312:55:105;;;3941:29:8;;;48294:74:105;48384:18;;;48377:34;48427:18;;;48420:34;;;48267:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;48312:55:105;;;4033:29:8;;;48294:74:105;48384:18;;;48377:34;48427:18;;;48420:34;;;48267:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;50007:2:105;4107:74:8;;;49989:21:105;50026:18;;;50019:30;;;;50085:34;50065:18;;;50058:62;50156:34;50136:18;;;50129:62;50208:19;;4107:74:8;49805:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;50440:2:105;4202:162:8;;;50422:21:105;50479:2;50459:18;;;50452:30;50518:34;50498:18;;;50491:62;50589:17;50569:18;;;50562:45;50624:19;;4202:162:8;50238:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;629:681;800:2;852:21;;;922:13;;825:18;;;944:22;;;771:4;;800:2;1023:15;;;;997:2;982:18;;;771:4;1066:218;1080:6;1077:1;1074:13;1066:218;;;1145:13;;-1:-1:-1;;;;;1141:62:105;1129:75;;1259:15;;;;1224:12;;;;1102:1;1095:9;1066:218;;;-1:-1:-1;1301:3:105;;629:681;-1:-1:-1;;;;;;629:681:105:o;1315:250::-;1400:1;1410:113;1424:6;1421:1;1418:13;1410:113;;;1500:11;;;1494:18;1481:11;;;1474:39;1446:2;1439:10;1410:113;;;-1:-1:-1;;1557:1:105;1539:16;;1532:27;1315:250::o;1570:271::-;1612:3;1650:5;1644:12;1677:6;1672:3;1665:19;1693:76;1762:6;1755:4;1750:3;1746:14;1739:4;1732:5;1728:16;1693:76;:::i;:::-;1823:2;1802:15;-1:-1:-1;;1798:29:105;1789:39;;;;1830:4;1785:50;;1570:271;-1:-1:-1;;1570:271:105:o;1846:1765::-;2079:2;2131:21;;;2201:13;;2104:18;;;2223:22;;;2050:4;;2079:2;2264;;2282:18;;;;2319:1;2362:15;;;2347:31;;2343:40;;2406:15;;;2050:4;;2470:1112;2486:6;2481:3;2478:15;2470:1112;;;-1:-1:-1;;2555:22:105;;;2551:36;2539:49;;2611:13;;2698:9;;-1:-1:-1;;;;;2694:58:105;2679:74;;2792:11;;2786:18;2824:15;;;2817:27;;;2905:19;;2651:15;;;2937:24;;;3118:21;;;;2984:2;3066:17;;;3054:30;;3050:39;;;3008:15;;;;3163:1;3177:296;3193:8;3188:3;3185:17;3177:296;;;3299:2;3295:7;3286:6;3278;3274:19;3270:33;3263:5;3256:48;3331:42;3366:6;3355:8;3349:15;3331:42;:::i;:::-;3402:17;;;;3321:52;-1:-1:-1;3445:14:105;;;;3221:1;3212:11;3177:296;;;-1:-1:-1;;;3560:12:105;;;;3496:6;-1:-1:-1;;3525:15:105;;;;2512:1;2503:11;2470:1112;;;-1:-1:-1;3599:6:105;;1846:1765;-1:-1:-1;;;;;;;;;;1846:1765:105:o;3616:156::-;3682:20;;3742:4;3731:16;;3721:27;;3711:55;;3762:1;3759;3752:12;3777:252;3841:6;3849;3902:2;3890:9;3881:7;3877:23;3873:32;3870:52;;;3918:1;3915;3908:12;3870:52;3941:27;3958:9;3941:27;:::i;:::-;3931:37;;3987:36;4019:2;4008:9;4004:18;3987:36;:::i;:::-;3977:46;;3777:252;;;;;:::o;4216:1590::-;4418:4;4447:2;4487;4476:9;4472:18;4517:2;4506:9;4499:21;4540:6;4575;4569:13;4606:6;4598;4591:22;4632:2;4622:12;;4665:2;4654:9;4650:18;4643:25;;4727:2;4717:6;4714:1;4710:14;4699:9;4695:30;4691:39;4765:2;4757:6;4753:15;4786:1;4807;4817:960;4833:6;4828:3;4825:15;4817:960;;;4902:22;;;-1:-1:-1;;4898:36:105;4886:49;;4958:13;;5045:9;;-1:-1:-1;;;;;5041:58:105;5026:74;;5139:11;;5133:18;5171:15;;;5164:27;;;5252:19;;4998:15;;;5284:24;;;5374:21;;;;5419:1;;5342:2;5330:15;;;5433:236;5449:8;5444:3;5441:17;5433:236;;;5530:15;;-1:-1:-1;;;;;;5526:42:105;5512:57;;5638:17;;;;5477:1;5468:11;;;;;5595:14;;;;5433:236;;;-1:-1:-1;5755:12:105;;;;5692:5;-1:-1:-1;;;5720:15:105;;;;4859:1;4850:11;4817:960;;;-1:-1:-1;5794:6:105;;4216:1590;-1:-1:-1;;;;;;;;;4216:1590:105:o;5811:803::-;5973:4;6002:2;6042;6031:9;6027:18;6072:2;6061:9;6054:21;6095:6;6130;6124:13;6161:6;6153;6146:22;6199:2;6188:9;6184:18;6177:25;;6261:2;6251:6;6248:1;6244:14;6233:9;6229:30;6225:39;6211:53;;6299:2;6291:6;6287:15;6320:1;6330:255;6344:6;6341:1;6338:13;6330:255;;;6437:2;6433:7;6421:9;6413:6;6409:22;6405:36;6400:3;6393:49;6465:40;6498:6;6489;6483:13;6465:40;:::i;:::-;6455:50;-1:-1:-1;6563:12:105;;;;6528:15;;;;6366:1;6359:9;6330:255;;;-1:-1:-1;6602:6:105;;5811:803;-1:-1:-1;;;;;;;5811:803:105:o;6619:119::-;6704:8;6697:5;6693:20;6686:5;6683:31;6673:59;;6728:1;6725;6718:12;6743:383;6817:6;6825;6833;6886:2;6874:9;6865:7;6861:23;6857:32;6854:52;;;6902:1;6899;6892:12;6854:52;6941:9;6928:23;6960:30;6984:5;6960:30;:::i;:::-;7009:5;-1:-1:-1;7061:2:105;7046:18;;7033:32;;-1:-1:-1;7084:36:105;7116:2;7101:18;;7084:36;:::i;:::-;7074:46;;6743:383;;;;;:::o;7326:154::-;-1:-1:-1;;;;;7405:5:105;7401:54;7394:5;7391:65;7381:93;;7470:1;7467;7460:12;7485:965;7618:6;7626;7634;7642;7650;7658;7666;7674;7727:3;7715:9;7706:7;7702:23;7698:33;7695:53;;;7744:1;7741;7734:12;7695:53;7783:9;7770:23;7802:31;7827:5;7802:31;:::i;:::-;7852:5;-1:-1:-1;7909:2:105;7894:18;;7881:32;7922:33;7881:32;7922:33;:::i;:::-;7974:7;-1:-1:-1;8033:2:105;8018:18;;8005:32;8046:33;8005:32;8046:33;:::i;:::-;8098:7;-1:-1:-1;8157:2:105;8142:18;;8129:32;8170;8129;8170;:::i;:::-;8221:7;-1:-1:-1;8275:3:105;8260:19;;8247:33;;-1:-1:-1;8327:3:105;8312:19;;8299:33;;-1:-1:-1;8351:37:105;8383:3;8368:19;;8351:37;:::i;:::-;8341:47;;8407:37;8439:3;8428:9;8424:19;8407:37;:::i;:::-;8397:47;;7485:965;;;;;;;;;;;:::o;8455:117::-;8540:6;8533:5;8529:18;8522:5;8519:29;8509:57;;8562:1;8559;8552:12;8577:245;8635:6;8688:2;8676:9;8667:7;8663:23;8659:32;8656:52;;;8704:1;8701;8694:12;8656:52;8743:9;8730:23;8762:30;8786:5;8762:30;:::i;8827:896::-;8951:6;8959;8967;8975;8983;8991;8999;9052:3;9040:9;9031:7;9027:23;9023:33;9020:53;;;9069:1;9066;9059:12;9020:53;9108:9;9095:23;9127:31;9152:5;9127:31;:::i;:::-;9177:5;-1:-1:-1;9234:2:105;9219:18;;9206:32;9247:33;9206:32;9247:33;:::i;:::-;9299:7;-1:-1:-1;9358:2:105;9343:18;;9330:32;9371:33;9330:32;9371:33;:::i;:::-;9423:7;-1:-1:-1;9482:2:105;9467:18;;9454:32;9495;9454;9495;:::i;:::-;9546:7;-1:-1:-1;9600:3:105;9585:19;;9572:33;;-1:-1:-1;9624:37:105;9656:3;9641:19;;9624:37;:::i;:::-;9614:47;;9680:37;9712:3;9701:9;9697:19;9680:37;:::i;:::-;9670:47;;8827:896;;;;;;;;;;:::o;10181:127::-;10242:10;10237:3;10233:20;10230:1;10223:31;10273:4;10270:1;10263:15;10297:4;10294:1;10287:15;10313:164;10389:13;;10438;;10431:21;10421:32;;10411:60;;10467:1;10464;10457:12;10482:813;10588:6;10641:3;10629:9;10620:7;10616:23;10612:33;10609:53;;;10658:1;10655;10648:12;10609:53;10691:2;10685:9;10733:3;10725:6;10721:16;10803:6;10791:10;10788:22;10767:18;10755:10;10752:34;10749:62;10746:88;;;10814:18;;:::i;:::-;10850:2;10843:22;10887:16;;10912:30;10887:16;10912:30;:::i;:::-;10951:21;;11017:2;11002:18;;10996:25;11030:33;10996:25;11030:33;:::i;:::-;11091:2;11079:15;;11072:32;11137:46;11179:2;11164:18;;11137:46;:::i;:::-;11132:2;11124:6;11120:15;11113:71;11217:46;11259:2;11248:9;11244:18;11217:46;:::i;:::-;11212:2;11200:15;;11193:71;11204:6;10482:813;-1:-1:-1;;;10482:813:105:o;11665:249::-;11734:6;11787:2;11775:9;11766:7;11762:23;11758:32;11755:52;;;11803:1;11800;11793:12;11755:52;11835:9;11829:16;11854:30;11878:5;11854:30;:::i;11919:127::-;11980:10;11975:3;11971:20;11968:1;11961:31;12011:4;12008:1;12001:15;12035:4;12032:1;12025:15;12051:170;12118:8;12146:10;;;12158;;;12142:27;;12181:11;;;12178:37;;;12195:18;;:::i;12558:184::-;12628:6;12681:2;12669:9;12660:7;12656:23;12652:32;12649:52;;;12697:1;12694;12687:12;12649:52;-1:-1:-1;12720:16:105;;12558:184;-1:-1:-1;12558:184:105:o;13558:268::-;13645:6;13698:2;13686:9;13677:7;13673:23;13669:32;13666:52;;;13714:1;13711;13704:12;13666:52;13746:9;13740:16;13765:31;13790:5;13765:31;:::i;14912:434::-;14964:3;15002:5;14996:12;15029:6;15024:3;15017:19;15055:4;15084:2;15079:3;15075:12;15068:19;;15121:2;15114:5;15110:14;15142:1;15152:169;15166:6;15163:1;15160:13;15152:169;;;15227:13;;15215:26;;15261:12;;;;15296:15;;;;15188:1;15181:9;15152:169;;;-1:-1:-1;15337:3:105;;14912:434;-1:-1:-1;;;;;14912:434:105:o;15351:1945::-;15556:2;15545:9;15538:21;15568:53;15617:2;15606:9;15602:18;15593:6;15587:13;-1:-1:-1;;;;;563:54:105;551:67;;497:127;15568:53;15519:4;15668:2;15660:6;15656:15;15650:22;15681:52;15729:2;15718:9;15714:18;15700:12;-1:-1:-1;;;;;563:54:105;551:67;;497:127;15681:52;;15787:2;15779:6;15775:15;15769:22;15764:2;15753:9;15749:18;15742:50;15847:2;15839:6;15835:15;15829:22;15823:3;15812:9;15808:19;15801:51;15907:3;15899:6;15895:16;15889:23;15883:3;15872:9;15868:19;15861:52;15968:3;15960:6;15956:16;15950:23;15944:3;15933:9;15929:19;15922:52;16029:3;16021:6;16017:16;16011:23;16005:3;15994:9;15990:19;15983:52;16072:3;16064:6;16060:16;16054:23;16096:3;16135:2;16130;16119:9;16115:18;16108:30;16175:2;16167:6;16163:15;16157:22;16147:32;;;16198:3;16237:2;16232;16221:9;16217:18;16210:30;16289:2;16281:6;16277:15;16271:22;16249:44;;;16312:6;16337:3;16376:2;16371;16360:9;16356:18;16349:30;16402:64;16461:3;16450:9;16446:19;16430:14;16402:64;:::i;:::-;16388:78;;16515:2;16507:6;16503:15;16497:22;16475:44;;16542:2;16538:7;16564:3;16631:2;16619:9;16611:6;16607:22;16603:31;16598:2;16587:9;16583:18;16576:59;16658:51;16702:6;16686:14;16658:51;:::i;:::-;16644:65;;16758:2;16750:6;16746:15;16740:22;16718:44;;;16781:3;16848:2;16836:9;16828:6;16824:22;16820:31;16815:2;16804:9;16800:18;16793:59;16875:51;16919:6;16903:14;16875:51;:::i;:::-;16861:65;;16975:2;16967:6;16963:15;16957:22;16935:44;;;;16999:3;17011:55;17061:3;17050:9;17046:19;17030:14;-1:-1:-1;;;;;563:54:105;551:67;;497:127;17011:55;17103:16;;17097:23;;-1:-1:-1;17140:3:105;17152:55;17187:19;;;17097:23;-1:-1:-1;;;;;563:54:105;551:67;;497:127;17152:55;17249:16;;;;17243:23;17223:18;;17216:51;;;;-1:-1:-1;17284:6:105;15351:1945;-1:-1:-1;15351:1945:105:o;17301:899::-;17366:5;17419:3;17412:4;17404:6;17400:17;17396:27;17386:55;;17437:1;17434;17427:12;17386:55;17466:6;17460:13;17492:4;17515:18;17552:2;17548;17545:10;17542:36;;;17558:18;;:::i;:::-;17604:2;17601:1;17597:10;17636:2;17630:9;17699:2;17695:7;17690:2;17686;17682:11;17678:25;17670:6;17666:38;17754:6;17742:10;17739:22;17734:2;17722:10;17719:18;17716:46;17713:72;;;17765:18;;:::i;:::-;17801:2;17794:22;17851:18;;;17927:15;;;17923:24;;;17885:15;;;;-1:-1:-1;17959:15:105;;;17956:35;;;17987:1;17984;17977:12;17956:35;18023:2;18015:6;18011:15;18000:26;;18035:135;18051:6;18046:3;18043:15;18035:135;;;18117:10;;18105:23;;18148:12;;;;18068;;;;18035:135;;;18188:6;17301:899;-1:-1:-1;;;;;;;17301:899:105:o;18205:861::-;18370:6;18378;18386;18394;18402;18410;18463:3;18451:9;18442:7;18438:23;18434:33;18431:53;;;18480:1;18477;18470:12;18431:53;18509:9;18503:16;18493:26;;18559:2;18548:9;18544:18;18538:25;18528:35;;18603:2;18592:9;18588:18;18582:25;18572:35;;18647:2;18636:9;18632:18;18626:25;18616:35;;18695:3;18684:9;18680:19;18674:26;18719:18;18760:2;18752:6;18749:14;18746:34;;;18776:1;18773;18766:12;18746:34;18799:72;18863:7;18854:6;18843:9;18839:22;18799:72;:::i;:::-;18789:82;;18917:3;18906:9;18902:19;18896:26;18880:42;;18947:2;18937:8;18934:16;18931:36;;;18963:1;18960;18953:12;18931:36;;18986:74;19052:7;19041:8;19030:9;19026:24;18986:74;:::i;:::-;18976:84;;;18205:861;;;;;;;;:::o;19071:380::-;19150:1;19146:12;;;;19193;;;19214:61;;19268:4;19260:6;19256:17;19246:27;;19214:61;19321:2;19313:6;19310:14;19290:18;19287:38;19284:161;;19367:10;19362:3;19358:20;19355:1;19348:31;19402:4;19399:1;19392:15;19430:4;19427:1;19420:15;19284:161;;19071:380;;;:::o;20359:192::-;20438:13;;-1:-1:-1;;;;;20480:46:105;;20470:57;;20460:85;;20541:1;20538;20531:12;20556:378;20644:6;20652;20660;20713:2;20701:9;20692:7;20688:23;20684:32;20681:52;;;20729:1;20726;20719:12;20681:52;20752:40;20782:9;20752:40;:::i;:::-;20742:50;;20811:49;20856:2;20845:9;20841:18;20811:49;:::i;:::-;20801:59;;20879:49;20924:2;20913:9;20909:18;20879:49;:::i;20939:127::-;21000:10;20995:3;20991:20;20988:1;20981:31;21031:4;21028:1;21021:15;21055:4;21052:1;21045:15;21071:216;21111:1;-1:-1:-1;;;;;21198:2:105;21195:1;21191:10;21220:3;21210:37;;21227:18;;:::i;:::-;21265:10;;21261:20;;;;;21071:216;-1:-1:-1;;21071:216:105:o;21292:197::-;-1:-1:-1;;;;;21414:10:105;;;21426;;;21410:27;;21449:11;;;21446:37;;;21463:18;;:::i;21818:218::-;21965:2;21954:9;21947:21;21928:4;21985:45;22026:2;22015:9;22011:18;22003:6;21985:45;:::i;22041:125::-;22106:9;;;22127:10;;;22124:36;;;22140:18;;:::i;22171:127::-;22232:10;22227:3;22223:20;22220:1;22213:31;22263:4;22260:1;22253:15;22287:4;22284:1;22277:15;22303:492;22364:3;22402:5;22396:12;22429:6;22424:3;22417:19;22455:4;22484:2;22479:3;22475:12;22468:19;;22521:2;22514:5;22510:14;22542:1;22552:218;22566:6;22563:1;22560:13;22552:218;;;22631:13;;-1:-1:-1;;;;;22627:62:105;22615:75;;22710:12;;;;22745:15;;;;22588:1;22581:9;22552:218;;22800:1108;22847:3;22891:5;22885:12;22918:4;22913:3;22906:17;22944:57;22995:4;22990:3;22986:14;22972:12;22944:57;:::i;:::-;23020:4;23061:14;;;23055:21;23106:14;;;23092:12;;;23085:36;23170:21;;23200:20;;;23274:23;;;;-1:-1:-1;23020:4:105;;-1:-1:-1;;23238:13:105;;;;-1:-1:-1;23346:379:105;23362:6;23357:3;23354:15;23346:379;;;23431:6;23425:13;23468:1;23464:2;23461:9;23451:160;;-1:-1:-1;;;23502:31:105;;23560:4;23557:1;23550:15;23592:4;23509:1;23582:15;23451:160;23624:17;;23700:15;;;;23663:14;;;;23388:1;23379:11;23346:379;;;23350:3;;23773:4;23766:5;23762:16;23756:23;23734:45;;23822:3;23815:5;23811:15;23804:4;23799:3;23795:14;23788:39;23843:59;23896:5;23880:14;23843:59;:::i;23913:556::-;-1:-1:-1;;;;;24176:6:105;24172:47;24161:9;24154:66;24256:3;24251:2;24240:9;24236:18;24229:31;24135:4;24277:51;24323:3;24312:9;24308:19;24300:6;24277:51;:::i;:::-;-1:-1:-1;;;;;24364:55:105;;;;24359:2;24344:18;;24337:83;-1:-1:-1;24451:2:105;24436:18;24429:34;24269:59;23913:556;-1:-1:-1;;23913:556:105:o;24705:127::-;24766:10;24761:3;24757:20;24754:1;24747:31;24797:4;24794:1;24787:15;24821:4;24818:1;24811:15;24837:128;24904:9;;;24925:11;;;24922:37;;;24939:18;;:::i;25674:674::-;25940:4;-1:-1:-1;;;;;26042:2:105;26034:6;26030:15;26019:9;26012:34;26094:2;26086:6;26082:15;26077:2;26066:9;26062:18;26055:43;;26134:3;26129:2;26118:9;26114:18;26107:31;26155:51;26201:3;26190:9;26186:19;26178:6;26155:51;:::i;:::-;-1:-1:-1;;;;;26242:55:105;;;;26237:2;26222:18;;26215:83;-1:-1:-1;26329:3:105;26314:19;26307:35;26147:59;25674:674;-1:-1:-1;;;25674:674:105:o;26353:148::-;26441:4;26420:12;;;26434;;;26416:31;;26459:13;;26456:39;;;26475:18;;:::i;26506:151::-;26596:4;26589:12;;;26575;;;26571:31;;26614:14;;26611:40;;;26631:18;;:::i;26662:363::-;26757:6;26810:2;26798:9;26789:7;26785:23;26781:32;26778:52;;;26826:1;26823;26816:12;26778:52;26859:9;26853:16;26892:18;26884:6;26881:30;26878:50;;;26924:1;26921;26914:12;26878:50;26947:72;27011:7;27002:6;26991:9;26987:22;26947:72;:::i;27030:200::-;-1:-1:-1;;;;;27166:10:105;;;27154;;;27150:27;;27189:12;;;27186:38;;;27204:18;;:::i;28633:120::-;28673:1;28699;28689:35;;28704:18;;:::i;:::-;-1:-1:-1;28738:9:105;;28633:120::o;28758:135::-;28797:3;28818:17;;;28815:43;;28838:18;;:::i;:::-;-1:-1:-1;28885:1:105;28874:13;;28758:135::o;29200:202::-;29267:6;29320:2;29308:9;29299:7;29295:23;29291:32;29288:52;;;29336:1;29333;29326:12;29288:52;29359:37;29386:9;29359:37;:::i;29407:854::-;29605:4;29653:2;29642:9;29638:18;-1:-1:-1;;;;;29756:2:105;29748:6;29744:15;29733:9;29726:34;29779:2;29817;29812;29801:9;29797:18;29790:30;29840:6;29875;29869:13;29906:6;29898;29891:22;29944:3;29933:9;29929:19;29922:26;;29983:2;29975:6;29971:15;29957:29;;30004:1;30014:169;30028:6;30025:1;30022:13;30014:169;;;30089:13;;30077:26;;30158:15;;;;30123:12;;;;30050:1;30043:9;30014:169;;;30018:3;;30200;30192:11;;;;30251:2;30243:6;30239:15;30234:2;30223:9;30219:18;30212:43;;;29407:854;;;;;;:::o;30266:485::-;30379:6;30387;30395;30448:2;30436:9;30427:7;30423:23;30419:32;30416:52;;;30464:1;30461;30454:12;30416:52;30493:9;30487:16;30477:26;;30543:2;30532:9;30528:18;30522:25;30512:35;;30591:2;30580:9;30576:18;30570:25;30618:18;30610:6;30607:30;30604:50;;;30650:1;30647;30640:12;30604:50;30673:72;30737:7;30728:6;30717:9;30713:22;30673:72;:::i;:::-;30663:82;;;30266:485;;;;;:::o;30950:634::-;31080:6;31088;31096;31104;31112;31120;31128;31136;31189:3;31177:9;31168:7;31164:23;31160:33;31157:53;;;31206:1;31203;31196:12;31157:53;31235:9;31229:16;31219:26;;31285:2;31274:9;31270:18;31264:25;31254:35;;31329:2;31318:9;31314:18;31308:25;31298:35;;31373:2;31362:9;31358:18;31352:25;31342:35;;31417:3;31406:9;31402:19;31396:26;31386:36;;31462:3;31451:9;31447:19;31441:26;31431:36;;31507:3;31496:9;31492:19;31486:26;31476:36;;31531:47;31573:3;31562:9;31558:19;31531:47;:::i;32749:686::-;33025:4;-1:-1:-1;;;;;33135:2:105;33127:6;33123:15;33112:9;33105:34;33187:2;33179:6;33175:15;33170:2;33159:9;33155:18;33148:43;;33227:3;33222:2;33211:9;33207:18;33200:31;33254:56;33305:3;33294:9;33290:19;33282:6;33254:56;:::i;:::-;33358:9;33350:6;33346:22;33341:2;33330:9;33326:18;33319:50;33386:43;33422:6;33414;33386:43;:::i;33808:338::-;-1:-1:-1;;;;;33987:6:105;33983:55;33972:9;33965:74;34075:2;34070;34059:9;34055:18;34048:30;33946:4;34095:45;34136:2;34125:9;34121:18;34113:6;34095:45;:::i;42686:362::-;42891:6;42880:9;42873:25;42934:6;42929:2;42918:9;42914:18;42907:34;42977:2;42972;42961:9;42957:18;42950:30;42854:4;42997:45;43038:2;43027:9;43023:18;43015:6;42997:45;:::i;44686:287::-;44815:3;44853:6;44847:13;44869:66;44928:6;44923:3;44916:4;44908:6;44904:17;44869:66;:::i;:::-;44951:16;;;;;44686:287;-1:-1:-1;;44686:287:105:o;44978:181::-;45009:1;45035:8;45070:2;45067:1;45063:10;45092:3;45082:37;;45099:18;;:::i;:::-;45137:10;;45133:20;;;;;44978:181;-1:-1:-1;;44978:181:105:o;45525:189::-;45564:1;45590:8;45625:2;45622:1;45618:10;45647:3;45637:37;;45654:18;;:::i;45719:168::-;45792:9;;;45823;;45840:15;;;45834:22;;45820:37;45810:71;;45861:18;;:::i;45892:247::-;45963:8;46003:10;;;46015;;;45999:27;46046:20;;;;45963:8;46085:24;;;46075:58;;46113:18;;:::i;:::-;46075:58;;45892:247;;;;:::o;46144:173::-;46212:8;46253:10;;;46241;;;46237:27;;46276:12;;;46273:38;;;46291:18;;:::i;46322:200::-;46388:9;;;46361:4;46416:9;;46444:10;;46456:12;;;46440:29;46479:12;;;46471:21;;46437:56;46434:82;;;46496:18;;:::i;46527:384::-;-1:-1:-1;;;;;;46712:33:105;;46700:46;;46769:13;;46682:3;;46791:74;46769:13;46854:1;46845:11;;46838:4;46826:17;;46791:74;:::i;:::-;46885:16;;;;46903:1;46881:24;;46527:384;-1:-1:-1;;;46527:384:105:o;46916:610::-;47162:13;;47105:3;;47136;;47215:4;47242:15;;;47105:3;47285:175;47299:6;47296:1;47293:13;47285:175;;;47362:13;;47348:28;;47398:14;;;;47435:15;;;;47321:1;47314:9;47285:175;;;-1:-1:-1;;47469:21:105;;;-1:-1:-1;47506:14:105;;;;;-1:-1:-1;;;46916:610:105:o;48716:614::-;48845:6;48853;48906:2;48894:9;48885:7;48881:23;48877:32;48874:52;;;48922:1;48919;48912:12;48874:52;48955:9;48949:16;48984:18;49025:2;49017:6;49014:14;49011:34;;;49041:1;49038;49031:12;49011:34;49064:72;49128:7;49119:6;49108:9;49104:22;49064:72;:::i;:::-;49054:82;;49182:2;49171:9;49167:18;49161:25;49145:41;;49211:2;49201:8;49198:16;49195:36;;;49227:1;49224;49217:12;49195:36;;49250:74;49316:7;49305:8;49294:9;49290:24;49250:74;:::i;:::-;49240:84;;;48716:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":25961,"length":32},{"start":29893,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_GetIdFromPrice()":"061794b3","test_SwapExactNATIVEForTokens()":"38a637ed","test_SwapExactNATIVEForTokensSupportingFeeOnTransferTokens()":"2debd6fd","test_SwapExactTokensForNATIVE()":"4415cf9d","test_SwapExactTokensForNATIVESupportingFeeOnTransferTokens()":"3f6fb2f7","test_SwapExactTokensForTokens()":"72b01c7a","test_SwapNATIVEForExactTokens()":"8f8d57ea","test_SwapTokensForExactNATIVE()":"6d090840","test_SwapTokensForExactTokens()":"7594f3a1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetIdFromPrice\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapExactNATIVEForTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapExactNATIVEForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapExactTokensForNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapExactTokensForNATIVESupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapExactTokensForTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapNATIVEForExactTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapTokensForExactNATIVE\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapTokensForExactTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This file only test single hop swaps using V2.1 pairs Test scenarios: 1. swapExactTokensForTokens 2. swapExactTokensForNATIVE 3. swapExactNATIVEForTokens 4. swapTokensForExactTokens 5. swapTokensForExactNATIVE 6. swapNATIVEForExactTokens 7. swapExactTokensForTokensSupportingFeeOnTransferTokens 8. swapExactTokensForNATIVESupportingFeeOnTransferTokens 9. swapExactNATIVEForTokensSupportingFeeOnTransferTokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBRouter.Swap.t.sol\":\"LiquidityBinRouterSwapTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/LBRouter.Swap.t.sol\":{\"keccak256\":\"0x0214d59b8b9428f76fd71e525065530234ed21cb0c75b451da76beb445a04673\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5f4c930c5feda177ef205f8ff991985ab1d0c8f6fb298846b321ebdceaf74d85\",\"dweb:/ipfs/QmSsWzQVq9QH3Xdy9J63vFHBfyfJ8vHrH9JBT8hHq54AkJ\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"test_GetIdFromPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapExactNATIVEForTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapExactNATIVEForTokensSupportingFeeOnTransferTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapExactTokensForNATIVE"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapExactTokensForNATIVESupportingFeeOnTransferTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapExactTokensForTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapNATIVEForExactTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapTokensForExactNATIVE"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapTokensForExactTokens"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBRouter.Swap.t.sol":"LiquidityBinRouterSwapTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/LBRouter.Swap.t.sol":{"keccak256":"0x0214d59b8b9428f76fd71e525065530234ed21cb0c75b451da76beb445a04673","urls":["bzz-raw://5f4c930c5feda177ef205f8ff991985ab1d0c8f6fb298846b321ebdceaf74d85","dweb:/ipfs/QmSsWzQVq9QH3Xdy9J63vFHBfyfJ8vHrH9JBT8hHq54AkJ"],"license":"UNLICENSED"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":92} \ No newline at end of file diff --git a/abi/LBRouter.sol/LBRouter.json b/abi/LBRouter.sol/LBRouter.json deleted file mode 100644 index 94eccc9b..00000000 --- a/abi/LBRouter.sol/LBRouter.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"factory2","type":"address","internalType":"contract ILBFactory"},{"name":"factoryV1","type":"address","internalType":"contract ISovrynLBFactoryV1"},{"name":"wnative","type":"address","internalType":"contract IWNATIVE"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addLiquidity","inputs":[{"name":"liquidityParameters","type":"tuple","internalType":"struct ILBRouter.LiquidityParameters","components":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"deltaIds","type":"int256[]","internalType":"int256[]"},{"name":"distributionX","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionY","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"refundTo","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountXAdded","type":"uint256","internalType":"uint256"},{"name":"amountYAdded","type":"uint256","internalType":"uint256"},{"name":"amountXLeft","type":"uint256","internalType":"uint256"},{"name":"amountYLeft","type":"uint256","internalType":"uint256"},{"name":"depositIds","type":"uint256[]","internalType":"uint256[]"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addLiquidityNATIVE","inputs":[{"name":"liquidityParameters","type":"tuple","internalType":"struct ILBRouter.LiquidityParameters","components":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"deltaIds","type":"int256[]","internalType":"int256[]"},{"name":"distributionX","type":"uint256[]","internalType":"uint256[]"},{"name":"distributionY","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"refundTo","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountXAdded","type":"uint256","internalType":"uint256"},{"name":"amountYAdded","type":"uint256","internalType":"uint256"},{"name":"amountXLeft","type":"uint256","internalType":"uint256"},{"name":"amountYLeft","type":"uint256","internalType":"uint256"},{"name":"depositIds","type":"uint256[]","internalType":"uint256[]"},{"name":"liquidityMinted","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"createLBPair","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"}],"stateMutability":"nonpayable"},{"type":"function","name":"getFactory","inputs":[],"outputs":[{"name":"lbFactory","type":"address","internalType":"contract ILBFactory"}],"stateMutability":"view"},{"type":"function","name":"getIdFromPrice","inputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"},{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"getPriceFromId","inputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"},{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapIn","inputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"amountOutLeft","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getSwapOut","inputs":[{"name":"pair","type":"address","internalType":"contract ILBPair"},{"name":"amountIn","type":"uint128","internalType":"uint128"},{"name":"swapForY","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInLeft","type":"uint128","internalType":"uint128"},{"name":"amountOut","type":"uint128","internalType":"uint128"},{"name":"fee","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getV1Factory","inputs":[],"outputs":[{"name":"factoryV1","type":"address","internalType":"contract ISovrynLBFactoryV1"}],"stateMutability":"view"},{"type":"function","name":"getWNATIVE","inputs":[],"outputs":[{"name":"wnative","type":"address","internalType":"contract IWNATIVE"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"tokenX","type":"address","internalType":"contract IERC20"},{"name":"tokenY","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeLiquidityNATIVE","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"binStep","type":"uint16","internalType":"uint16"},{"name":"amountTokenMin","type":"uint256","internalType":"uint256"},{"name":"amountNATIVEMin","type":"uint256","internalType":"uint256"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountToken","type":"uint256","internalType":"uint256"},{"name":"amountNATIVE","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactNATIVEForTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapExactNATIVEForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapExactTokensForNATIVE","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinNATIVE","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForNATIVESupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinNATIVE","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapNATIVEForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"payable"},{"type":"function","name":"swapTokensForExactNATIVE","inputs":[{"name":"amountNATIVEOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address payable"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapTokensForExactTokens","inputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"path","type":"tuple","internalType":"struct ILBRouter.Path","components":[{"name":"pairBinSteps","type":"uint256[]","internalType":"uint256[]"},{"name":"versions","type":"uint8[]","internalType":"enum ILBRouter.Version[]"},{"name":"tokenPath","type":"address[]","internalType":"contract IERC20[]"}]},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountsIn","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"sweep","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sweepLBToken","inputs":[{"name":"lbToken","type":"address","internalType":"contract ILBToken"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"LBRouter__AmountSlippageBPTooBig","inputs":[{"name":"amountSlippage","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__AmountSlippageCaught","inputs":[{"name":"amountXMin","type":"uint256","internalType":"uint256"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountYMin","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__BinReserveOverflows","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__BrokenSwapSafetyCheck","inputs":[]},{"type":"error","name":"LBRouter__DeadlineExceeded","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"currentTimestamp","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__FailedToSendNATIVE","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__IdDesiredOverflows","inputs":[{"name":"idDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__IdOverflows","inputs":[{"name":"id","type":"int256","internalType":"int256"}]},{"type":"error","name":"LBRouter__IdSlippageCaught","inputs":[{"name":"activeIdDesired","type":"uint256","internalType":"uint256"},{"name":"idSlippage","type":"uint256","internalType":"uint256"},{"name":"activeId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__InsufficientAmountOut","inputs":[{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__InvalidTokenPath","inputs":[{"name":"wrongToken","type":"address","internalType":"address"}]},{"type":"error","name":"LBRouter__InvalidVersion","inputs":[{"name":"version","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__LengthsMismatch","inputs":[]},{"type":"error","name":"LBRouter__MaxAmountInExceeded","inputs":[{"name":"amountInMax","type":"uint256","internalType":"uint256"},{"name":"amountIn","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__NotFactoryOwner","inputs":[]},{"type":"error","name":"LBRouter__PairNotCreated","inputs":[{"name":"tokenX","type":"address","internalType":"address"},{"name":"tokenY","type":"address","internalType":"address"},{"name":"binStep","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__SenderIsNotWNATIVE","inputs":[]},{"type":"error","name":"LBRouter__SwapOverflows","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__TooMuchTokensIn","inputs":[{"name":"excess","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__WrongAmounts","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"reserve","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__WrongNativeLiquidityParameters","inputs":[{"name":"tokenX","type":"address","internalType":"address"},{"name":"tokenY","type":"address","internalType":"address"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"msgValue","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBRouter__WrongTokenOrder","inputs":[]},{"type":"error","name":"PackedUint128Math__SubUnderflow","inputs":[]},{"type":"error","name":"SovrynLBLibrary__InsufficientAmount","inputs":[]},{"type":"error","name":"SovrynLBLibrary__InsufficientLiquidity","inputs":[]},{"type":"error","name":"TokenHelper__TransferFailed","inputs":[]}],"bytecode":{"object":"0x60e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c63430008140033","sourceMap":"1466:41675:45:-:0;;;2555:208;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2676:20:45;;;;;2706:22;;;;;2738:18;;;1466:41675;;14:143:105;-1:-1:-1;;;;;101:31:105;;91:42;;81:70;;147:1;144;137:12;81:70;14:143;:::o;162:621::-;316:6;324;332;385:2;373:9;364:7;360:23;356:32;353:52;;;401:1;398;391:12;353:52;433:9;427:16;452:43;489:5;452:43;:::i;:::-;564:2;549:18;;543:25;514:5;;-1:-1:-1;577:45:105;543:25;577:45;:::i;:::-;693:2;678:18;;672:25;641:7;;-1:-1:-1;706:45:105;672:25;706:45;:::i;:::-;770:7;760:17;;;162:621;;;;;:::o;:::-;1466:41675:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c63430008140033","sourceMap":"1466:41675:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2905:10;-1:-1:-1;;;;;2927:8:45;2905:31;;2901:74;;2945:30;;-1:-1:-1;;;2945:30:45;;;;;;;;;;;2901:74;1466:41675;;;;;23571:1070;;;;;;;;;;-1:-1:-1;23571:1070:45;;;;;:::i;:::-;;:::i;:::-;;;4941:25:105;;;4929:2;4914:18;23571:1070:45;;;;;;;;20823:1038;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14499:640::-;;;;;;;;;;-1:-1:-1;14499:640:45;;;;;:::i;:::-;;:::i;19240:1159::-;;;;;;;;;;-1:-1:-1;19240:1159:45;;;;;:::i;:::-;;:::i;22293:839::-;;;;;;;;;;-1:-1:-1;22293:839:45;;;;;:::i;:::-;;:::i;26228:436::-;;;;;;;;;;-1:-1:-1;26228:436:45;;;;;:::i;:::-;;:::i;6416:235::-;;;;;;;;;;-1:-1:-1;6416:235:45;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8779:55:105;;;8761:74;;8749:2;8734:18;6416:235:45;8598:243:105;3587:104:45;;;;;;;;;;-1:-1:-1;3676:8:45;3587:104;;13052:1053;;;;;;;;;;-1:-1:-1;13052:1053:45;;;;;:::i;:::-;;:::i;:::-;;;;10533:25:105;;;10589:2;10574:18;;10567:34;;;;10506:18;13052:1053:45;10359:248:105;3114:109:45;;;;;;;;;;-1:-1:-1;3207:9:45;3114:109;;8966:1748;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;17923:902::-;;;;;;;;;;-1:-1:-1;17923:902:45;;;;;:::i;:::-;;:::i;4999:272::-;;;;;;;;;;-1:-1:-1;4999:272:45;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;13126:15:105;;;13108:34;;13178:15;;;13173:2;13158:18;;13151:43;13230:15;;13210:18;;;13203:43;;;;13043:2;13028:18;4999:272:45;12853:399:105;15540:915:45;;;;;;;;;;-1:-1:-1;15540:915:45;;;;;:::i;:::-;;:::i;5735:274::-;;;;;;;;;;-1:-1:-1;5735:274:45;;;;;:::i;:::-;;:::i;7279:1047::-;;;;;;;;;;-1:-1:-1;7279:1047:45;;;;;:::i;:::-;;:::i;16798:731::-;;;;;;:::i;:::-;;:::i;3351:120::-;;;;;;;;;;-1:-1:-1;3454:10:45;3351:120;;11432:753;;;;;;;;;;-1:-1:-1;11432:753:45;;;;;:::i;:::-;;:::i;4383:137::-;;;;;;;;;;-1:-1:-1;4383:137:45;;;;;:::i;:::-;;:::i;25022:915::-;;;;;;:::i;:::-;;:::i;27011:242::-;;;;;;;;;;-1:-1:-1;27011:242:45;;;;;:::i;:::-;;:::i;4033:143::-;;;;;;;;;;-1:-1:-1;4033:143:45;;;;;:::i;:::-;;:::i;:::-;;;17200:8:105;17188:21;;;17170:40;;17158:2;17143:18;4033:143:45;17026:190:105;23571:1070:45;23851:17;23807:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;;;;;;;;1952:92;2141:17;;:24;23836:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;23935:8:::2;-1:-1:-1::0;;;;;23884:60:45::2;:4;:14;;;23899:4;:17;;;:24;23884:40;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;23884:60:45::2;;23880:175;;24002:14;::::0;::::2;::::0;24017:17;;:24;24002:40;;;::::2;;;;;:::i;:::-;;;;;;;23967:77;;-1:-1:-1::0;;;23967:77:45::2;;;;;;;-1:-1:-1::0;;;;;8779:55:105;;;;8761:74;;8749:2;8734:18;;8598:243;23880:175:45::2;24065:22;24090:59;24100:4;:17;;;24119:4;:13;;;24134:4;:14;;;24090:9;:59::i;:::-;24184:33;::::0;-1:-1:-1;;;24184:33:45;;24211:4:::2;24184:33;::::0;::::2;8761:74:105::0;24065:84:45;;-1:-1:-1;24160:21:45::2;::::0;-1:-1:-1;;;;;24184:8:45::2;:18;::::0;::::2;::::0;8734::105;;24184:33:45::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24160:57;;24228:68;24246:4;:14;;;24261:1;24246:17;;;;;;;;:::i;:::-;;;;;;;24265:10;24277:5;24283:1;24277:8;;;;;;;;:::i;:::-;;;;;;;24287;24228:17;:68::i;:::-;24307:87;24342:5;24349:4;:13;;;24364:4;:14;;;24388:4;24307:34;:87::i;:::-;24417:33;::::0;-1:-1:-1;;;24417:33:45;;24444:4:::2;24417:33;::::0;::::2;8761:74:105::0;24453:13:45;;24417:8:::2;-1:-1:-1::0;;;;;24417:18:45::2;::::0;::::2;::::0;8734::105;;24417:33:45::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;;;:::i;:::-;24405:61;;24501:9;24480:18;:30;24476:105;;;24519:62;::::0;-1:-1:-1;;;24519:62:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;24519:62:45::2;10359:248:105::0;24476:105:45::2;24592:42;24620:2;24624:9;24592:27;:42::i;:::-;23870:771;;2054:1:::1;23571:1070:::0;;;;;;;;:::o;20823:1038::-;21049:26;20989:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;21026:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;21123:8:::2;-1:-1:-1::0;;;;;21095:37:45::2;:4;:14;;;21110:1;21095:17;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;21095:37:45::2;;21091:104;;21176:4;:14;;;21191:1;21176:17;;;;;;;;:::i;21091:104::-;21206:22;21231:59;21241:4;:17;;;21260:4;:13;;;21275:4;:14;;;21231:9;:59::i;:::-;21206:84;;21312:62;21326:4;:13;;;21341:5;21348:4;:14;;;21364:9;21312:13;:62::i;:::-;21300:74;;21404:9;21389;21399:1;21389:12;;;;;;;;:::i;:::-;;;;;;;:24;21385:91;;;21452:9;21463;21473:1;21463:12;;;;;;;;:::i;:::-;;;;;;;21422:54;;-1:-1:-1::0;;;21422:54:45::2;;;;;;;;10533:25:105::0;;;10589:2;10574:18;;10567:34;10521:2;10506:18;;10359:248;21385:91:45::2;21487:50;21514:5;21520:1;21514:8;;;;;;;;:::i;:::-;;;;;;;21524:9;21534:1;21524:12;;;;;;;;:::i;:::-;;;;;;;21487:26;:50::i;:::-;21548:21;21572:78;21598:5;21605:4;:13;;;21620:4;:14;;;21636:9;21647:2;21572:25;:78::i;:::-;21548:102;;21681:9;21665:13;:25;21661:95;;;21699:57;::::0;-1:-1:-1;;;21699:57:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;21699:57:45::2;10359:248:105::0;21661:95:45::2;21783:9;21793:1;21783:12;;;;;;;;:::i;:::-;;;;;;;21771:9;:24;21767:87;;;21797:57;21817:10;21841:9;21851:1;21841:12;;;;;;;;:::i;:::-;;;;;;;21829:9;:24;;;;:::i;:::-;21797:19;:57::i;:::-;21081:780;;2054:1:::1;20823:1038:::0;;;;;;;:::o;14499:640::-;14736:17;14692:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;14721:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;14765:22:::2;14790:59;14800:4;:17;;;14819:4;:13;;;14834:4;:14;;;14790:9;:59::i;:::-;14765:84;;14860:68;14878:4;:14;;;14893:1;14878:17;;;;;;;;:::i;:::-;;;;;;;14897:10;14909:5;14915:1;14909:8;;;;;;;;:::i;:::-;;;;;;;14919;14860:17;:68::i;:::-;14951:77;14977:8;14987:5;14994:4;:13;;;15009:4;:14;;;15025:2;14951:25;:77::i;:::-;14939:89;;15058:9;15043:12;:24;15039:93;;;15076:56;::::0;-1:-1:-1;;;15076:56:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;15076:56:45::2;10359:248:105::0;15039:93:45::2;14755:384;2054:1:::1;14499:640:::0;;;;;;;;:::o;19240:1159::-;19491:26;19447:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;19476:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;19584:8:::2;-1:-1:-1::0;;;;;19533:60:45::2;:4;:14;;;19548:4;:17;;;:24;19533:40;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;19533:60:45::2;;19529:175;;19651:14;::::0;::::2;::::0;19666:17;;:24;19651:40;;;::::2;;;;;:::i;19529:175::-;19714:22;19739:59;19749:4;:17;;;19768:4;:13;;;19783:4;:14;;;19739:9;:59::i;:::-;19714:84;;19820:68;19834:4;:13;;;19849:5;19856:4;:14;;;19872:15;19820:13;:68::i;:::-;19808:80;;19918:11;19903:9;19913:1;19903:12;;;;;;;;:::i;:::-;;;;;;;:26;19899:95;;;19968:11;19981:9;19991:1;19981:12;;;;;;;;:::i;19899:95::-;20005:72;20023:4;:14;;;20038:1;20023:17;;;;;;;;:::i;:::-;;;;;;;20042:10;20054:5;20060:1;20054:8;;;;;;;;:::i;:::-;;;;;;;20064:9;20074:1;20064:12;;;;;;;;:::i;:::-;;;;;;;20005:17;:72::i;:::-;20088:22;20125:89;20151:5;20158:4;:13;;;20173:4;:14;;;20189:9;20208:4;20125:25;:89::i;:::-;20088:126;;20246:15;20229:14;:32;20225:109;;;20270:64;::::0;-1:-1:-1;;;20270:64:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;20270:64:45::2;10359:248:105::0;20225:109:45::2;20345:47;20373:2;20377:14;20345:27;:47::i;22293:839::-:0;22559:17;22515:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;22544:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;22588:22:::2;22613:59;22623:4;:17;;;22642:4;:13;;;22657:4;:14;;;22613:9;:59::i;:::-;22588:84;;22683:18;22704:4;:14;;;22719:5;:12;22704:28;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;22767:25:::2;::::0;-1:-1:-1;;;22767:25:45;;-1:-1:-1;;;;;8779:55:105;;;22767:25:45::2;::::0;::::2;8761:74:105::0;22704:28:45;;-1:-1:-1;22743:21:45::2;::::0;22767;::::2;::::0;::::2;::::0;8734:18:105;;22767:25:45::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22743:49;;22803:68;22821:4;:14;;;22836:1;22821:17;;;;;;;;:::i;:::-;;;;;;;22840:10;22852:5;22858:1;22852:8;;;;;;;;:::i;:::-;;;;;;;22862;22803:17;:68::i;:::-;22882:76;22917:5;22924:4;:13;;;22939:4;:14;;;22955:2;22882:34;:76::i;:::-;22981:25;::::0;-1:-1:-1;;;22981:25:45;;-1:-1:-1;;;;;8779:55:105;;;22981:25:45::2;::::0;::::2;8761:74:105::0;23009:13:45;;22981:21;;::::2;::::0;::::2;::::0;8734:18:105;;22981:25:45::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;22969:53;;23051:9;23036:12;:24;23032:93;;;23069:56;::::0;-1:-1:-1;;;23069:56:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;23069:56:45::2;10359:248:105::0;23032:93:45::2;22578:554;;;2054:1:::1;22293:839:::0;;;;;;;;:::o;26228:436::-;1829:9;-1:-1:-1;;;;;1813:33:45;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1799:49:45;:10;-1:-1:-1;;;;;1799:49:45;;1795:89;;1857:27;;-1:-1:-1;;;1857:27:45;;;;;;;;;;;1795:89;-1:-1:-1;;;;;26334:28:45;::::1;26330:328;;-1:-1:-1::0;;26387:6:45::1;:27;:60;;26441:6;26387:60;;;26417:21;26387:60;26378:69;;26462:31;26482:2;26486:6;26462:19;:31::i;:::-;26228:436:::0;;;:::o;26330:328::-:1;-1:-1:-1::0;;26533:6:45::1;:27;:69;;26596:6;26533:69;;;26563:30;::::0;-1:-1:-1;;;26563:30:45;;26587:4:::1;26563:30;::::0;::::1;8761:74:105::0;-1:-1:-1;;;;;26563:15:45;::::1;::::0;::::1;::::0;8734:18:105;;26563:30:45::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26524:78:::0;-1:-1:-1;26617:30:45::1;-1:-1:-1::0;;;;;26617:18:45;::::1;26636:2:::0;26524:78;26617:18:::1;:30::i;6416:235::-:0;6587:57;;-1:-1:-1;;;6587:57:45;;-1:-1:-1;;;;;18770:15:105;;;6587:57:45;;;18752:34:105;18822:15;;;18802:18;;;18795:43;18886:8;18874:21;;18854:18;;;18847:49;18944:6;18932:19;;18912:18;;;18905:47;6552:12:45;;6587:9;:22;;;;;;18663:19:105;;6587:57:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6580:64;6416:235;-1:-1:-1;;;;;6416:235:45:o;13052:1053::-;13362:19;13383:20;13343:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;13415:14:::1;13440:67;13462:5;13476:8;13487:7;13440:67;;13496:10;13440:21;:67::i;:::-;13415:93;;13533:19;13575:6;-1:-1:-1::0;;;;;13575:16:45::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13555:38:45::1;13562:8;-1:-1:-1::0;;;;;13555:38:45::1;;13533:60;;13613:14;13608:123;;13684:15:::0;;13701:14;13608:123:::1;13746:15;13763::::0;13798:86:::1;13815:6;13823:14;13839:15;13856:3;13861:7;13878:4;13798:16;:86::i;:::-;13745:139;;;;13929:14;:56;;13968:7;13977;13929:56;;;13947:7;13956;13929:56;13899:86;;;;;;;;13519:477;;;14006:37;14020:5;14027:2;14031:11;14006:13;:37::i;:::-;14053:45;14081:2;14085:12;14053:27;:45::i;:::-;13405:700;13052:1053:::0;;;;;;;;;;;;:::o;8966:1748::-;9124:20;;;;9258:27;;9124:20;9395:148;9434:26;;;;:19;:26;:::i;:::-;9462;;;;;;;;:::i;:::-;9490:19;:27;;;9519:10;9395:21;:148::i;:::-;9356:197;;9597:7;-1:-1:-1;;;;;9597:17:45;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9567:49:45;:26;;;;:19;:26;:::i;:::-;-1:-1:-1;;;;;9567:49:45;;9563:89;;9625:27;;-1:-1:-1;;;9625:27:45;;;;;;;;;;;9563:89;-1:-1:-1;;;;;9697:8:45;9667:38;:26;;;;:19;:26;:::i;:::-;-1:-1:-1;;;;;9667:38:45;;:82;;;;;9740:9;9709:19;:27;;;:40;9667:82;9663:893;;;9765:104;9783:26;;;;;;;;:::i;:::-;9811:10;9831:7;9841:19;:27;;;9765:17;:104::i;:::-;9883:55;9918:7;9928:9;9883:26;:55::i;:::-;9663:893;;;-1:-1:-1;;;;;9989:8:45;9959:38;:26;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9959:38:45;;:82;;;;;10032:9;10001:19;:27;;;:40;9959:82;9955:601;;;10057:104;10075:26;;;;:19;:26;:::i;:::-;10103:10;10123:7;10133:19;:27;;;10057:17;:104::i;9955:601::-;10334:26;;;;:19;:26;:::i;:::-;10387;;;;;;;;:::i;:::-;10268:277;;-1:-1:-1;;;10268:277:45;;-1:-1:-1;;;;;20138:15:105;;;10268:277:45;;;20120:34:105;20190:15;;20170:18;;;20163:43;10432:27:45;;;;20222:18:105;;;20215:34;10477:27:45;;;;20265:18:105;;;20258:34;10522:9:45;20308:19:105;;;20301:35;20031:19;;10268:277:45;19800:542:105;9955:601:45;10664:43;10678:19;10699:7;10664:13;:43::i;:::-;10566:141;;;;-1:-1:-1;10566:141:45;;-1:-1:-1;10566:141:45;-1:-1:-1;10566:141:45;-1:-1:-1;10566:141:45;;-1:-1:-1;8966:1748:45;-1:-1:-1;;;8966:1748:45:o;17923:902::-;18160:26;18116:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;18145:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;18198:22:::2;18223:59;18233:4;:17;;;18252:4;:13;;;18267:4;:14;;;18223:9;:59::i;:::-;18198:84;;18319:62;18333:4;:13;;;18348:5;18355:4;:14;;;18371:9;18319:13;:62::i;:::-;18307:74;;18415:11;18400:9;18410:1;18400:12;;;;;;;;:::i;:::-;;;;;;;:26;18396:95;;;18465:11;18478:9;18488:1;18478:12;;;;;;;;:::i;18396:95::-;18506:72;18524:4;:14;;;18539:1;18524:17;;;;;;;;:::i;18506:72::-;18593:22;18618:78;18644:5;18651:4;:13;;;18666:4;:14;;;18682:9;18693:2;18618:25;:78::i;:::-;18593:103;;18732:9;18715:14;:26;18711:97;;;18750:58;::::0;-1:-1:-1;;;18750:58:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;18750:58:45::2;10359:248:105::0;4999:272:45;5229:35;;-1:-1:-1;;;5229:35:45;;-1:-1:-1;;;;;20533:47:105;;5229:35:45;;;20515:66:105;20624:14;;20617:22;20597:18;;;20590:50;5128:16:45;;;;;;-1:-1:-1;;;;;5229:14:45;;;;;20488:18:105;;5229:35:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5196:68;;;;-1:-1:-1;5196:68:45;;-1:-1:-1;4999:272:45;-1:-1:-1;;;;4999:272:45:o;15540:915::-;15791:17;15747:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;15776:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;15875:8:::2;-1:-1:-1::0;;;;;15824:60:45::2;:4;:14;;;15839:4;:17;;;:24;15824:40;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;15824:60:45::2;;15820:175;;15942:14;::::0;::::2;::::0;15957:17;;:24;15942:40;;;::::2;;;;;:::i;15820:175::-;16005:22;16030:59;16040:4;:17;;;16059:4;:13;;;16074:4;:14;;;16030:9;:59::i;:::-;16005:84;;16100:68;16118:4;:14;;;16133:1;16118:17;;;;;;;;:::i;16100:68::-;16191:88;16217:8;16227:5;16234:4;:13;;;16249:4;:14;;;16273:4;16191:25;:88::i;:::-;16179:100;;16315:9;16294:18;:30;16290:105;;;16333:62;::::0;-1:-1:-1;;;16333:62:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;16333:62:45::2;10359:248:105::0;16290:105:45::2;16406:42;16434:2;16438:9;16406:27;:42::i;5735:274::-:0;5967:35;;-1:-1:-1;;;5967:35:45;;-1:-1:-1;;;;;20533:47:105;;5967:35:45;;;20515:66:105;20624:14;;20617:22;20597:18;;;20590:50;5866:20:45;;;;;;-1:-1:-1;;;;;5967:15:45;;;;;20488:18:105;;5967:35:45;20347:299:105;7279:1047:45;7415:20;;;;7549:27;;7415:20;7685:148;7724:26;;;;:19;:26;:::i;7685:148::-;7647:196;;7887:6;-1:-1:-1;;;;;7887:16:45;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7857:48:45;:26;;;;:19;:26;:::i;:::-;-1:-1:-1;;;;;7857:48:45;;7853:88;;7914:27;;-1:-1:-1;;;7914:27:45;;;;;;;;;;;7853:88;7952:103;7970:26;;;;:19;:26;:::i;7952:103::-;8065;8083:26;;;;;;;;:::i;16798:731::-;17027:17;16967:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;17004:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;17092:8:::2;-1:-1:-1::0;;;;;17064:37:45::2;:4;:14;;;17079:1;17064:17;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17064:37:45::2;;17060:104;;17145:4;:14;;;17160:1;17145:17;;;;;;;;:::i;17060:104::-;17175:22;17200:59;17210:4;:17;;;17229:4;:13;;;17244:4;:14;;;17200:9;:59::i;:::-;17175:84;;17270:47;17297:5;17303:1;17297:8;;;;;;;;:::i;:::-;;;;;;;17307:9;17270:26;:47::i;:::-;17340:78;17366:9;17377:5;17384:4;:13;;;17399:4;:14;;;17415:2;17340:25;:78::i;:::-;17328:90;;17448:9;17433:12;:24;17429:93;;;17466:56;::::0;-1:-1:-1;;;17466:56:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;17466:56:45::2;10359:248:105::0;17429:93:45::2;17050:479;2054:1:::1;16798:731:::0;;;;;;;:::o;11432:753::-;11743:15;11760;11724:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;11787:15:::1;11813:58;11835:6;11843;11851:7;11813:58;;11860:10;11813:21;:58::i;:::-;11787:85;;11882:17;11912:7;-1:-1:-1::0;;;;;11912:17:45::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11902:29:45::1;:6;-1:-1:-1::0;;;;;11902:29:45::1;;;11882:49;;11946:12;11942:69;;;11988:10:::0;;12000;11942:69:::1;12043:67;12060:7;12069:10;12081;12093:3;12098:7;12107:2;12043:16;:67::i;:::-;12022:88:::0;;-1:-1:-1;12022:88:45;-1:-1:-1;12121:57:45;::::1;;;12161:7:::0;;12170;12121:57:::1;11777:408;;11432:753:::0;;;;;;;;;;;;;:::o;4383:137::-;4490:23;;-1:-1:-1;;;4490:23:45;;17200:8:105;17188:21;;4490:23:45;;;17170:40:105;4464:7:45;;-1:-1:-1;;;;;4490:19:45;;;;;17143:18:105;;4490:23:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4483:30;;4383:137;;;;;:::o;25022:915::-;25270:17;25226:8;1974;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;2141:17;;:24;25255:4;;2141:29;;:81:::1;;-1:-1:-1::0;2198:17:45;;:24;2174:13:::1;::::0;::::1;::::0;:20;:48:::1;;2141:81;:154;;;-1:-1:-1::0;2274:14:45::1;::::0;::::1;::::0;:21;2242:17;;:24;:28:::1;::::0;2269:1:::1;2242:28;:::i;:::-;:53;;2141:154;2124:216;;;2313:27;;-1:-1:-1::0;;;2313:27:45::1;;;;;;;;;;;2124:216;25331:8:::2;-1:-1:-1::0;;;;;25303:37:45::2;:4;:14;;;25318:1;25303:17;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25303:37:45::2;;25299:104;;25384:4;:14;;;25399:1;25384:17;;;;;;;;:::i;25299:104::-;25414:22;25439:59;25449:4;:17;;;25468:4;:13;;;25483:4;:14;;;25439:9;:59::i;:::-;25414:84;;25509:18;25530:4;:14;;;25545:5;:12;25530:28;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;25593:25:::2;::::0;-1:-1:-1;;;25593:25:45;;-1:-1:-1;;;;;8779:55:105;;;25593:25:45::2;::::0;::::2;8761:74:105::0;25530:28:45;;-1:-1:-1;25569:21:45::2;::::0;25593;::::2;::::0;::::2;::::0;8734:18:105;;25593:25:45::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25569:49;;25629:47;25656:5;25662:1;25656:8;;;;;;;;:::i;25629:47::-;25687:76;25722:5;25729:4;:13;;;25744:4;:14;;;25760:2;25687:34;:76::i;:::-;25786:25;::::0;-1:-1:-1;;;25786:25:45;;-1:-1:-1;;;;;8779:55:105;;;25786:25:45::2;::::0;::::2;8761:74:105::0;25814:13:45;;25786:21;;::::2;::::0;::::2;::::0;8734:18:105;;25786:25:45::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;25774:53;;25856:9;25841:12;:24;25837:93;;;25874:56;::::0;-1:-1:-1;;;25874:56:45;;::::2;::::0;::::2;10533:25:105::0;;;10574:18;;;10567:34;;;10506:18;;25874:56:45::2;10359:248:105::0;25837:93:45::2;25289:648;;;2054:1:::1;25022:915:::0;;;;;;;:::o;27011:242::-;1829:9;-1:-1:-1;;;;;1813:33:45;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1799:49:45;:10;-1:-1:-1;;;;;1799:49:45;;1795:89;;1857:27;;-1:-1:-1;;;1857:27:45;;;;;;;;;;;1795:89;27188:58:::1;::::0;-1:-1:-1;;;27188:58:45;;-1:-1:-1;;;;;27188:25:45;::::1;::::0;::::1;::::0;:58:::1;::::0;27222:4:::1;::::0;27229:2;;27233:3;;;;27238:7;;;;27188:58:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27011:242:::0;;;;;;:::o;4033:143::-;4143:26;;-1:-1:-1;;;4143:26:45;;;;;4941:25:105;;;4118:6:45;;-1:-1:-1;;;;;4143:19:45;;;;;4914:18:105;;4143:26:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;40573:565::-;40723:22;40783:12;:19;40769:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40769:34:45;;40761:42;;40814:12;40836:16;40855:9;40865:1;40855:12;;;;;;;;:::i;:::-;;;;;;;40836:31;;40906:9;40901:221;40921:5;:12;40917:1;:16;40901:221;;;40966:9;40958:17;;41005:9;41015:1;41019;41015:5;41005:16;;;;;;;;:::i;:::-;;;;;;;40993:28;;41051:56;41060:5;41067:9;41078:12;41091:1;41078:15;;;;;;;;:::i;:::-;;;;;;;41095:8;41104:1;41095:11;;;;;;;;:::i;:::-;;;;;;;41051:8;:56::i;:::-;41040:5;41046:1;41040:8;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41040:67:45;;;:8;;;;;;;;;;;:67;40935:3;;40901:221;;;;40751:387;;40573:565;;;;;:::o;41771:182::-;41872:24;;41889:7;41872:24;41906:40;-1:-1:-1;;;;;41906:22:45;;41929:4;41935:2;41939:6;41906:22;:40::i;:::-;41771:182;;;;:::o;37063:1522::-;37253:12;37275:15;37300:17;37327:12;37350:16;37369:9;37379:1;37369:12;;;;;;;;:::i;:::-;;;;;;;37350:31;;37421:9;37416:1153;37436:5;:12;37432:1;:16;37416:1153;;;37480:5;37486:1;37480:8;;;;;;;;:::i;:::-;;;;;;;37473:15;;37516:8;37525:1;37516:11;;;;;;;;:::i;:::-;;;;;;;37506:21;;37554:9;37546:17;;37593:9;37603:1;37607;37603:5;37593:16;;;;;;;;:::i;:::-;;;;;;;37581:28;;37649:5;:12;37640:1;37644;37640:5;:21;:41;;37669:5;37675:1;37679;37675:5;37669:12;;;;;;;;:::i;:::-;;;;;;;37640:41;;;37664:2;37640:41;37628:53;-1:-1:-1;37715:10:45;37704:7;:21;;;;;;;;:::i;:::-;;37700:855;;37750:17;37769;37807:4;-1:-1:-1;;;;;37791:33:45;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37749:77;-1:-1:-1;;;;;37749:77:45;;;-1:-1:-1;;;;;37749:77:45;;;37860:9;-1:-1:-1;;;;;37852:17:45;:5;-1:-1:-1;;;;;37852:17:45;;37848:573;;;37916:21;;-1:-1:-1;;;37916:21:45;;-1:-1:-1;;;;;8779:55:105;;;37916:21:45;;;8761:74:105;37897:16:45;;37940:9;;37916:15;;;;;8734:18:105;;37916:21:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;;-1:-1:-1;37975:17:45;37995:43;37916:33;38017:9;38028;37995:21;:43::i;:::-;38065:55;;-1:-1:-1;;;38065:55:45;;38092:1;38065:55;;;23594:25:105;;;23635:18;;;23628:34;;;-1:-1:-1;;;;;23698:55:105;;;23678:18;;;23671:83;23790:3;23770:18;;;23763:31;23810:19;;;23803:30;;;;37975:63:45;;-1:-1:-1;38065:26:45;;;;;;23850:19:105;;38065:55:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37871:272;;37848:573;;;38194:21;;-1:-1:-1;;;38194:21:45;;-1:-1:-1;;;;;8779:55:105;;;38194:21:45;;;8761:74:105;38175:16:45;;38218:9;;38194:15;;;;;8734:18:105;;38194:21:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;;-1:-1:-1;38253:17:45;38273:43;38194:33;38295:9;38306;38273:21;:43::i;:::-;38343:55;;-1:-1:-1;;;38343:55:45;;;;;23594:25:105;;;38381:1:45;23635:18:105;;;23628:34;;;-1:-1:-1;;;;;23698:55:105;;;23678:18;;;23671:83;23790:3;23770:18;;;23763:31;23810:19;;;23803:30;;;;38253:63:45;;-1:-1:-1;38343:26:45;;;;;;23850:19:105;;38343:55:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38149:272;;37848:573;37727:712;;37700:855;;;38475:4;-1:-1:-1;;;;;38467:18:45;;38507:4;-1:-1:-1;;;;;38499:23:45;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38467:69;;;;;;;;;;-1:-1:-1;;;;;38486:38:45;;;;;;;38467:69;;;24609:41:105;24686:55;;;24666:18;;;24659:83;24582:18;;38467:69:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37700:855;37450:3;;37416:1153;;42949:190;43036:6;43046:1;43036:11;43032:24;;42949:190;;:::o;43032:24::-;43066:25;;-1:-1:-1;;;43066:25:45;;;;;4941::105;;;43066:8:45;-1:-1:-1;;;;;43066:17:45;;;;4914:18:105;;43066:25:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43101:31;43121:2;43125:6;43101:19;:31::i;:::-;42949:190;;:::o;30517:1174::-;30697:26;30761:9;:16;30747:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30747:31:45;;30735:43;;30884:9;30858;30868:5;:12;30858:23;;;;;;;;:::i;:::-;;;;;;;;;;:35;30921:12;;30904:781;30935:6;;30904:781;;30962:12;30977:9;30987:5;30991:1;30987;:5;:::i;:::-;30977:16;;;;;;;;:::i;:::-;;;;;;;30962:31;;31007:15;31025:8;31038:1;31034;:5;;;;:::i;:::-;31025:15;;;;;;;;:::i;:::-;;;;;;;31007:33;;31054:12;31069:5;31079:1;31075;:5;;;;:::i;:::-;31069:12;;;;;;;;:::i;:::-;;;;;;;31054:27;;31111:10;31100:21;;;;;;;;:::i;:::-;:7;:21;;;;;;;;:::i;:::-;;31096:579;;31142:17;31161:18;31200:4;-1:-1:-1;;;;;31184:33:45;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31141:78;-1:-1:-1;;;;;31141:78:45;;;-1:-1:-1;;;;;31141:78:45;;;31249:9;31259:1;31249:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;31241:20:45;:5;-1:-1:-1;;;;;31241:20:45;;31237:116;;;31312:10;31237:116;31371:18;31392:9;31402:1;31392:12;;;;;;;;:::i;:::-;;;;;;;31371:33;;31449:45;31472:9;31483:10;31449;:22;;:45;;;;;:::i;:::-;-1:-1:-1;;;;;31422:73:45;:9;31432:5;31436:1;31432;:5;:::i;:::-;31422:16;;;;;;;;:::i;:::-;;;;;;:73;;;;;31123:387;;;31096:579;;;31577:83;31595:4;31610:9;31620:1;31610:12;;;;;;;;:::i;:::-;;;;;;;31654:5;-1:-1:-1;;;;;31625:34:45;31633:4;-1:-1:-1;;;;;31625:23:45;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31625:34:45;;31577:9;:83::i;:::-;-1:-1:-1;;;;;;;31534:126:45;31535:9;31545:5;31549:1;31545;:5;:::i;:::-;31535:16;;;;;;;;:::i;:::-;;;;;;31534:126;;;;;31096:579;30948:737;;;30943:3;;;;;:::i;:::-;;;;30904:781;;;;30517:1174;;;;;;:::o;42545:207::-;42631:6;42641:1;42631:11;42627:24;;42545:207;;:::o;42627:24::-;42661:8;-1:-1:-1;;;;;42661:16:45;;42685:6;42661:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42704:41:45;;-1:-1:-1;;;;;;;42711:8:45;42704:29;;-1:-1:-1;42734:2:45;;-1:-1:-1;42738:6:45;42704:29;:41::i;35333:1399::-;35549:17;35578:12;35600:17;35627:12;35649:15;35675:16;35694:9;35704:1;35694:12;;;;;;;;:::i;:::-;;;;;;;35675:31;;35746:9;35741:975;35761:5;:12;35757:1;:16;35741:975;;;35805:5;35811:1;35805:8;;;;;;;;:::i;:::-;;;;;;;35798:15;;35841:8;35850:1;35841:11;;;;;;;;:::i;:::-;;;;;;;35831:21;;35879:9;35871:17;;35918:9;35928:1;35932;35928:5;35918:16;;;;;;;;:::i;:::-;;;;;;;35906:28;;35974:5;:12;35965:1;35969;35965:5;:21;:41;;35994:5;36000:1;36004;36000:5;35994:12;;;;;;;;:::i;:::-;;;;;;;35965:41;;;35989:2;35965:41;35953:53;-1:-1:-1;36040:10:45;36029:7;:21;;;;;;;;:::i;:::-;;36025:677;;36086:9;36096:1;36100;36096:5;36086:16;;;;;;;;:::i;:::-;;;;;;;36074:28;;36136:9;-1:-1:-1;;;;;36128:17:45;:5;-1:-1:-1;;;;;36128:17:45;;36124:237;;;36173:55;;-1:-1:-1;;;36173:55:45;;36200:1;36173:55;;;23594:25:105;;;23635:18;;;23628:34;;;-1:-1:-1;;;;;23698:55:105;;;23678:18;;;23671:83;23790:3;23770:18;;;23763:31;23810:19;;;23803:30;;;;36173:26:45;;;;;23850:19:105;;36173:55:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36025:677;;36124:237;36283:55;;-1:-1:-1;;;36283:55:45;;;;;23594:25:105;;;36321:1:45;23635:18:105;;;23628:34;;;-1:-1:-1;;;;;23698:55:105;;;23678:18;;;23671:83;23790:3;23770:18;;;23763:31;23810:19;;;23803:30;;;;36283:26:45;;;;;23850:19:105;;36283:55:45;23319:556:105;36025:677:45;36407:13;36444:4;-1:-1:-1;;;;;36436:23:45;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36527:39;;-1:-1:-1;;;36527:39:45;;-1:-1:-1;;;;;36423:38:45;;;;;;;36527:39;;;24609:41:105;;;24686:55;;;24666:18;;;24659:83;36423:38:45;-1:-1:-1;;;;;36527:48:45;;:18;;;;;24582::105;;36527:39:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2662:16:77;;;2701:6;2697:14;;;;;2549:178;36527:48:45;-1:-1:-1;;;;;36484:91:45;;;-1:-1:-1;;;;;36484:91:45;;;36602:8;36598:85;;;36624:10;36612:22;;36598:85;;;36673:10;36661:22;;36598:85;36385:317;;;36025:677;35775:3;;35741:975;;;;35568:1164;;;;;35333:1399;;;;;;;:::o;42119:231::-;42198:6;42208:1;42198:11;42194:24;;42119:231;;:::o;42194:24::-;42229:12;42246:2;-1:-1:-1;;;;;42246:7:45;42261:6;42246:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42228:44;;;42287:7;42282:61;;42303:40;;-1:-1:-1;;;42303:40:45;;-1:-1:-1;;;;;25485:55:105;;42303:40:45;;;25467:74:105;25557:18;;;25550:34;;;25440:18;;42303:40:45;25293:297:105;33296:1627:45;33502:17;33531:12;33553:15;33578:17;33605:12;33628:16;33647:9;33657:1;33647:12;;;;;;;;:::i;:::-;;;;;;;33628:31;;33681:8;33669:20;;33729:9;33724:1183;33744:5;:12;33740:1;:16;33724:1183;;;33788:5;33794:1;33788:8;;;;;;;;:::i;:::-;;;;;;;33781:15;;33824:8;33833:1;33824:11;;;;;;;;:::i;:::-;;;;;;;33814:21;;33862:9;33854:17;;33901:9;33911:1;33915;33911:5;33901:16;;;;;;;;:::i;:::-;;;;;;;33889:28;;33957:5;:12;33948:1;33952;33948:5;:21;:41;;33977:5;33983:1;33987;33983:5;33977:12;;;;;;;;:::i;:::-;;;;;;;33948:41;;;33972:2;33948:41;33936:53;-1:-1:-1;34023:10:45;34012:7;:21;;;;;;;;:::i;:::-;;34008:885;;34058:16;34076;34113:4;-1:-1:-1;;;;;34097:33:45;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34057:75;-1:-1:-1;;;;;34057:75:45;;;-1:-1:-1;;;;;34057:75:45;;;34167:9;-1:-1:-1;;;;;34159:17:45;:5;-1:-1:-1;;;;;34159:17:45;;34155:397;;;34216:42;:9;34239:8;34249;34216:22;:42::i;:::-;34284:55;;-1:-1:-1;;;34284:55:45;;34311:1;34284:55;;;23594:25:105;;;23635:18;;;23628:34;;;-1:-1:-1;;;;;23698:55:105;;;23678:18;;;23671:83;23790:3;23770:18;;;23763:31;23810:19;;;23803:30;;;;34204:54:45;;-1:-1:-1;34284:26:45;;;;;;23850:19:105;;34284:55:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34155:397;;;34406:42;:9;34429:8;34439;34406:22;:42::i;:::-;34474:55;;-1:-1:-1;;;34474:55:45;;;;;23594:25:105;;;34512:1:45;23635:18:105;;;23628:34;;;-1:-1:-1;;;;;23698:55:105;;;23678:18;;;23671:83;23790:3;23770:18;;;23763:31;23810:19;;;23803:30;;;;34394:54:45;;-1:-1:-1;34474:26:45;;;;;;23850:19:105;;34474:55:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34155:397;34035:535;;34008:885;;;34598:13;34635:4;-1:-1:-1;;;;;34627:23:45;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34718:39;;-1:-1:-1;;;34718:39:45;;-1:-1:-1;;;;;34614:38:45;;;;;;;34718:39;;;24609:41:105;;;24686:55;;;24666:18;;;24659:83;34614:38:45;-1:-1:-1;;;;;34718:48:45;;:18;;;;;24582::105;;34718:39:45;24441:307:105;34718:48:45;-1:-1:-1;;;;;34675:91:45;;;-1:-1:-1;;;;;34675:91:45;;;34793:8;34789:85;;;34815:10;34803:22;;34789:85;;;34864:10;34852:22;;34789:85;34576:317;;;34008:885;33758:3;;33724:1183;;1447:220:73;1557:66;;;-1:-1:-1;;;;;25485:55:105;;1557:66:73;;;25467:74:105;25557:18;;;;25550:34;;;1557:66:73;;;;;;;;;;25440:18:105;;;;1557:66:73;;;;;;;;;;-1:-1:-1;;;1557:66:73;;;1634:26;1648:5;1557:66;1634:13;:26::i;38963:393:45:-;39151:55;;-1:-1:-1;;;39151:55:45;;-1:-1:-1;;;;;25908:15:105;;;39151:55:45;;;25890:34:105;25960:15;;;25940:18;;;25933:43;25992:18;;;25985:34;;;39104:14:45;;39151:9;:30;;;;;;25802:18:105;;39151:55:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;-1:-1:-1;;;;;;39229:20:45;;39225:125;;39272:67;;-1:-1:-1;;;39272:67:45;;-1:-1:-1;;;;;25908:15:105;;;39272:67:45;;;25890:34:105;25960:15;;25940:18;;;25933:43;25992:18;;;25985:34;;;25802:18;;39272:67:45;25595:430:105;39225:125:45;38963:393;;;;;;:::o;32216:670::-;32427:15;32444;32472:30;32506:4;-1:-1:-1;;;;;32506:9:45;;32516:10;32528:2;32532:3;32537:7;32506:39;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32506:39:45;;;;;;;;;;;;:::i;:::-;32471:74;;32561:9;32556:160;32576:13;:20;32572:1;:24;32556:160;;;32628:26;:13;32642:1;32628:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3042:16:77;;2942:132;32628:26:45;32617:37;;-1:-1:-1;;;;;32617:37:45;;;:::i;:::-;;;32679:26;:13;32693:1;32679:16;;;;;;;;:::i;:::-;;;;;;;3395:6:77;3391:14;;3291:130;32679:26:45;32668:37;;-1:-1:-1;;;;;32668:37:45;;;:::i;:::-;;-1:-1:-1;32598:3:45;;;:::i;:::-;;;32556:160;;;;32740:10;32730:7;:20;:44;;;;32764:10;32754:7;:20;32730:44;32726:154;;;32797:72;;-1:-1:-1;;;32797:72:45;;;;;29307:25:105;;;29348:18;;;29341:34;;;29391:18;;;29384:34;;;29434:18;;;29427:34;;;29279:19;;32797:72:45;29076:391:105;32726:154:45;32461:425;32216:670;;;;;;;;;:::o;41349:154::-;41436:6;41446:1;41436:11;41432:24;;41349:154;;;:::o;41432:24::-;41466:30;-1:-1:-1;;;;;41466:18:45;;41485:2;41489:6;41466:18;:30::i;27734:2489::-;27880:20;27914;27948:19;27981;28014:27;28055:32;27836:3;:12;;;1974:8;1956:15;:26;1952:92;;;1991:53;;-1:-1:-1;;;1991:53:45;;;;;10533:25:105;;;2028:15:45;10574:18:105;;;10567:34;10506:18;;1991:53:45;10359:248:105;1952:92:45;28163:17:::1;;::::0;::::1;:3:::0;:17:::1;:::i;:::-;:24:::0;-1:-1:-1;28140:12:45::1;;::::0;::::1;:3:::0;:12:::1;:::i;:::-;:19;;:47;;:98;;;-1:-1:-1::0;28214:17:45::1;;::::0;::::1;:3:::0;:17:::1;:::i;:::-;:24:::0;-1:-1:-1;28191:12:45::1;;::::0;::::1;:3:::0;:12:::1;:::i;:::-;:19;;:47;;28140:98;28136:171;;;28265:27;;-1:-1:-1::0;;;28265:27:45::1;;;;;;;;;;;28136:171;28347:16;28325:19;::::0;::::1;;:38;::::0;:75:::1;;-1:-1:-1::0;28384:16:45::1;28367:14;::::0;::::1;;:33;28325:75;28321:186;;;28427:65;::::0;-1:-1:-1;;;28427:65:45;;28456:19:::1;::::0;::::1;;28427:65;::::0;::::1;10533:25:105::0;28477:14:45::1;::::0;::::1;;10574:18:105::0;;;10567:34;10506:18;;28427:65:45::1;10359:248:105::0;28321:186:45::1;28521:33;28571:12;;::::0;::::1;:3:::0;:12:::1;:::i;:::-;:19;;28557:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;28557:34:45::1;-1:-1:-1::0;28521:70:45;-1:-1:-1;28632:12:45::1;;::::0;::::1;:3:::0;:12:::1;:::i;:::-;:19;;28618:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;28618:34:45::1;;28605:47;;28684:17;28704:4;-1:-1:-1::0;;;;;28704:16:45::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28684:38;;;;28804:9;28787:3;:14;;;28765:3;:19;;;:36;:48;:100;;;;28846:3;:19;;;28829:3;:14;;;28817:9;:26;:48;28765:100;28740:266;;;28913:74;::::0;-1:-1:-1;;;28913:74:45;;28940:19:::1;::::0;::::1;;28913:74;::::0;::::1;30773:25:105::0;28961:14:45::1;::::0;::::1;;30814:18:105::0;;;30807:34;30857:18;;;30850:34;;;30746:18;;28913:74:45::1;30571:319:105::0;28740:266:45::1;29029:9;29024:501;29044:16;:23;29040:1;:27;29024:501;;;29096:10;29129:12;;::::0;::::1;:3:::0;:12:::1;:::i;:::-;29142:1;29129:15;;;;;;;:::i;:::-;;;;;;;29116:9;29109:35;29096:48;;29177:1;29171:3;:7;:42;;;-1:-1:-1::0;29197:16:45::1;29182:31:::0;::::1;29171:42;29167:81;;;29222:26;::::0;-1:-1:-1;;;29222:26:45;;::::1;::::0;::::1;4941:25:105::0;;;4914:18;;29222:26:45::1;4795:177:105::0;29167:81:45::1;29294:3;29270:10;29281:1;29270:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:28;29342:164:::1;29411:17;;::::0;::::1;:3:::0;:17:::1;:::i;:::-;29429:1;29411:20;;;;;;;:::i;:::-;;;;;;;29441:3;:17;;;;;;;;:::i;:::-;29459:1;29441:20;;;;;;;:::i;:::-;;;;;;;29479:3;29342:36;:164::i;:::-;29320:16;29337:1;29320:19;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:186;-1:-1:-1;29069:3:45::1;;29024:501;;;;28666:873;29553:23;29590:19:::0;29673:4:::1;-1:-1:-1::0;;;;;29673:9:45::1;;29683:3;:6;;;;;;;;;;:::i;:::-;29691:16;29709:3;:12;;;;;;;;;;:::i;:::-;29673:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;29673:49:45::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;29623:99:::0;-1:-1:-1;29623:99:45;;-1:-1:-1;29623:99:45;-1:-1:-1;29737:20:45::1;29760:32;29623:99:::0;;29760:19:::1;:32::i;:::-;-1:-1:-1::0;;;;;3042:16:77;;;-1:-1:-1;3395:6:77;3391:14;;;;-1:-1:-1;3042:16:77;-1:-1:-1;29929:14:45::1;::::0;::::1;;29914:29:::0;::::1;::::0;:62:::1;;;29962:3;:14;;;29947:12;:29;29914:62;29910:198;;;30003:90;::::0;-1:-1:-1;;;30003:90:45;;30034:14:::1;::::0;::::1;;30003:90;::::0;::::1;29307:25:105::0;29348:18;;;29341:34;;;30064:14:45::1;::::0;::::1;;29391:18:105::0;;;29384:34;29434:18;;;29427:34;;;29279:19;;30003:90:45::1;29076:391:105::0;29910:198:45::1;-1:-1:-1::0;;;;;3042:16:77;;;-1:-1:-1;3395:6:77;3391:14;;;-1:-1:-1;;;;;30171:35:45::1;;;28112:2105;;;;27734:2489:::0;;;;;;;;;:::o;39784:487::-;39912:12;;39944:7;:21;;;;;;;;:::i;:::-;;39940:325;;39988:52;;-1:-1:-1;;;39988:52:45;;-1:-1:-1;;;;;33455:15:105;;;39988:52:45;;;33437:34:105;33507:15;;;33487:18;;;33480:43;39988:10:45;:18;;;;33349::105;;39988:52:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39981:59;-1:-1:-1;;;;;;40058:18:45;;40054:98;;40085:67;;-1:-1:-1;;;40085:67:45;;-1:-1:-1;;;;;25908:15:105;;;40085:67:45;;;25890:34:105;25960:15;;25940:18;;;25933:43;25992:18;;;25985:34;;;25802:18;;40085:67:45;25595:430:105;40054:98:45;39940:325;;;40198:55;40220:6;40228;40236:7;40245;40198:21;:55::i;972:250:73:-;1101:77;;;-1:-1:-1;;;;;25908:15:105;;;1101:77:73;;;25890:34:105;25960:15;;25940:18;;;25933:43;25992:18;;;;25985:34;;;1101:77:73;;;;;;;;;;25802:18:105;;;;1101:77:73;;;;;;;;;;-1:-1:-1;;;1101:77:73;;;1189:26;1203:5;1101:77;1189:13;:26::i;:::-;1071:151;972:250;;;;:::o;1455:544:72:-;1581:17;1618:8;1630:1;1618:13;1614:63;;1640:37;;-1:-1:-1;;;1640:37:72;;;;;;;;;;;1614:63;1691:14;;;:33;;-1:-1:-1;1709:15:72;;1691:33;1687:86;;;1733:40;;-1:-1:-1;;;1733:40:72;;;;;;;;;;;1687:86;1783:23;1809:14;:8;1820:3;1809:14;:::i;:::-;1783:40;-1:-1:-1;1833:17:72;1853:28;1871:10;1783:40;1853:28;:::i;:::-;1833:48;-1:-1:-1;1891:19:72;1932:15;1913:16;:9;1925:4;1913:16;:::i;:::-;:34;;;;:::i;:::-;1891:56;-1:-1:-1;1969:23:72;1891:56;1969:9;:23;:::i;:::-;1957:35;1455:544;-1:-1:-1;;;;;;;1455:544:72:o;2117:493::-;2243:16;2279:9;2292:1;2279:14;2275:64;;2302:37;;-1:-1:-1;;;2302:37:72;;;;;;;;;;;2275:64;2353:14;;;:33;;-1:-1:-1;2371:15:72;;2353:33;2349:86;;;2395:40;;-1:-1:-1;;;2395:40:72;;;;;;;;;;;2349:86;2445:17;2465:21;2477:9;2465;:21;:::i;:::-;:28;;2489:4;2465:28;:::i;:::-;2445:48;-1:-1:-1;2503:19:72;2526:22;2539:9;2526:10;:22;:::i;:::-;2525:30;;2552:3;2525:30;:::i;:::-;2503:52;-1:-1:-1;2576:23:72;2503:52;2576:9;:23;:::i;:::-;:27;;2602:1;2576:27;:::i;:::-;2565:38;2117:493;-1:-1:-1;;;;;;2117:493:72:o;1673:757:73:-;1748:12;1807:1;1801:4;1794:15;1892:4;1886;1879;1873:11;1866:4;1860;1856:15;1853:1;1846:5;1839;1834:63;1823:74;-1:-1:-1;1823:74:73;1938:194;;;;2178:16;2211:56;;;;2334:1;2327:4;2321:11;2318:18;2309:7;2305:32;2294:43;;2171:168;;2211:56;2257:5;2245:18;2238:26;2231:34;2220:45;;2171:168;;1911:442;;1938:194;1966:16;1963:155;;;2032:16;2026:4;2020;2005:44;2083:16;2077:4;2070:30;1963:155;1911:442;2378:7;2373:50;;2394:29;;-1:-1:-1;;;2394:29:73;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1127:317:75;5540:263:77;5647:9;;;5680:5;;;;:50;;-1:-1:-1;;;;;;5689:41:77;;;;;;;5680:50;5676:121;;;5753:33;;-1:-1:-1;;;5753:33:77;;;;;;;;;;;14:127:105;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;295:18;280:34;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:275::-;475:2;469:9;540:2;521:13;;-1:-1:-1;;517:27:105;505:40;;575:18;560:34;;596:22;;;557:62;554:88;;;622:18;;:::i;:::-;658:2;651:22;404:275;;-1:-1:-1;404:275:105:o;684:183::-;744:4;777:18;769:6;766:30;763:56;;;799:18;;:::i;:::-;-1:-1:-1;844:1:105;840:14;856:4;836:25;;684:183::o;872:662::-;926:5;979:3;972:4;964:6;960:17;956:27;946:55;;997:1;994;987:12;946:55;1033:6;1020:20;1059:4;1083:60;1099:43;1139:2;1099:43;:::i;:::-;1083:60;:::i;:::-;1177:15;;;1263:1;1259:10;;;;1247:23;;1243:32;;;1208:12;;;;1287:15;;;1284:35;;;1315:1;1312;1305:12;1284:35;1351:2;1343:6;1339:15;1363:142;1379:6;1374:3;1371:15;1363:142;;;1445:17;;1433:30;;1483:12;;;;1396;;1363:142;;;-1:-1:-1;1523:5:105;872:662;-1:-1:-1;;;;;;872:662:105:o;1539:162::-;-1:-1:-1;;;;;1626:5:105;1622:54;1615:5;1612:65;1602:93;;1691:1;1688;1681:12;1602:93;1539:162;:::o;1706:150::-;1782:20;;1811:39;1782:20;1811:39;:::i;:::-;1706:150;;;:::o;1861:753::-;1923:5;1976:3;1969:4;1961:6;1957:17;1953:27;1943:55;;1994:1;1991;1984:12;1943:55;2030:6;2017:20;2056:4;2080:60;2096:43;2136:2;2096:43;:::i;2080:60::-;2174:15;;;2260:1;2256:10;;;;2244:23;;2240:32;;;2205:12;;;;2284:15;;;2281:35;;;2312:1;2309;2302:12;2281:35;2348:2;2340:6;2336:15;2360:225;2376:6;2371:3;2368:15;2360:225;;;2456:3;2443:17;2473:39;2506:5;2473:39;:::i;:::-;2525:18;;2563:12;;;;2393;;2360:225;;2619:1469;2670:5;2718:4;2706:9;2701:3;2697:19;2693:30;2690:50;;;2736:1;2733;2726:12;2690:50;2758:22;;:::i;:::-;2749:31;;2816:9;2803:23;2845:18;2886:2;2878:6;2875:14;2872:34;;;2902:1;2899;2892:12;2872:34;2929:57;2982:3;2973:6;2962:9;2958:22;2929:57;:::i;:::-;2922:5;2915:72;3006:2;2996:12;;3061:2;3050:9;3046:18;3033:32;3090:2;3080:8;3077:16;3074:36;;;3106:1;3103;3096:12;3074:36;3129:24;;3184:4;3176:13;;3172:23;-1:-1:-1;3162:51:105;;3209:1;3206;3199:12;3162:51;3245:2;3232:16;3268:60;3284:43;3324:2;3284:43;:::i;3268:60::-;3362:15;;;3444:1;3440:10;;;;3432:19;;3428:28;;;3393:12;;;;3468:15;;;3465:35;;;3496:1;3493;3486:12;3465:35;3520:11;;;;3540:302;3556:6;3551:3;3548:15;3540:302;;;3638:3;3625:17;3677:1;3668:7;3665:14;3655:112;;3721:1;3750:2;3746;3739:14;3655:112;3780:20;;3573:12;;;;3820;;;;3540:302;;;3874:5;3869:2;3862:5;3858:14;3851:29;;;;;3933:2;3922:9;3918:18;3905:32;3889:48;;3962:2;3952:8;3949:16;3946:36;;;3978:1;3975;3968:12;3946:36;;4014:67;4077:3;4066:8;4055:9;4051:24;4014:67;:::i;:::-;4009:2;4002:5;3998:14;3991:91;;2619:1469;;;;:::o;4093:697::-;4219:6;4227;4235;4243;4251;4304:3;4292:9;4283:7;4279:23;4275:33;4272:53;;;4321:1;4318;4311:12;4272:53;4357:9;4344:23;4334:33;;4414:2;4403:9;4399:18;4386:32;4376:42;;4469:2;4458:9;4454:18;4441:32;4496:18;4488:6;4485:30;4482:50;;;4528:1;4525;4518:12;4482:50;4551:55;4598:7;4589:6;4578:9;4574:22;4551:55;:::i;:::-;4541:65;;;4656:2;4645:9;4641:18;4628:32;4669:39;4702:5;4669:39;:::i;:::-;4093:697;;;;-1:-1:-1;4093:697:105;;4779:3;4764:19;4751:33;;4093:697;-1:-1:-1;;4093:697:105:o;4977:620::-;5086:6;5094;5102;5110;5163:3;5151:9;5142:7;5138:23;5134:33;5131:53;;;5180:1;5177;5170:12;5131:53;5216:9;5203:23;5193:33;;5277:2;5266:9;5262:18;5249:32;5304:18;5296:6;5293:30;5290:50;;;5336:1;5333;5326:12;5290:50;5359:55;5406:7;5397:6;5386:9;5382:22;5359:55;:::i;:::-;5349:65;;;5464:2;5453:9;5449:18;5436:32;5477:39;5510:5;5477:39;:::i;:::-;4977:620;;;;-1:-1:-1;5535:5:105;;5587:2;5572:18;5559:32;;-1:-1:-1;;4977:620:105:o;5602:435::-;5655:3;5693:5;5687:12;5720:6;5715:3;5708:19;5746:4;5775:2;5770:3;5766:12;5759:19;;5812:2;5805:5;5801:14;5833:1;5843:169;5857:6;5854:1;5851:13;5843:169;;;5918:13;;5906:26;;5952:12;;;;5987:15;;;;5879:1;5872:9;5843:169;;;-1:-1:-1;6028:3:105;;5602:435;-1:-1:-1;;;;;5602:435:105:o;6042:261::-;6221:2;6210:9;6203:21;6184:4;6241:56;6293:2;6282:9;6278:18;6270:6;6241:56;:::i;7002:488::-;7095:6;7103;7111;7164:2;7152:9;7143:7;7139:23;7135:32;7132:52;;;7180:1;7177;7170:12;7132:52;7219:9;7206:23;7238:39;7271:5;7238:39;:::i;:::-;7296:5;-1:-1:-1;7353:2:105;7338:18;;7325:32;7366:41;7325:32;7366:41;:::i;:::-;7002:488;;7426:7;;-1:-1:-1;;;7480:2:105;7465:18;;;;7452:32;;7002:488::o;7495:119::-;7580:8;7573:5;7569:20;7562:5;7559:31;7549:59;;7604:1;7601;7594:12;7619:117;7704:6;7697:5;7693:18;7686:5;7683:29;7673:57;;7726:1;7723;7716:12;7741:132;7808:20;;7837:30;7808:20;7837:30;:::i;7878:715::-;7994:6;8002;8010;8018;8071:3;8059:9;8050:7;8046:23;8042:33;8039:53;;;8088:1;8085;8078:12;8039:53;8127:9;8114:23;8146:39;8179:5;8146:39;:::i;:::-;8204:5;-1:-1:-1;8261:2:105;8246:18;;8233:32;8274:41;8233:32;8274:41;:::i;:::-;8334:7;-1:-1:-1;8393:2:105;8378:18;;8365:32;8406;8365;8406;:::i;:::-;8457:7;-1:-1:-1;8516:2:105;8501:18;;8488:32;8529;8488;8529;:::i;:::-;7878:715;;;;-1:-1:-1;7878:715:105;;-1:-1:-1;;7878:715:105:o;9095:1259::-;9290:6;9298;9306;9314;9322;9330;9338;9346;9399:3;9387:9;9378:7;9374:23;9370:33;9367:53;;;9416:1;9413;9406:12;9367:53;9455:9;9442:23;9474:39;9507:5;9474:39;:::i;:::-;9532:5;-1:-1:-1;9589:2:105;9574:18;;9561:32;9602;9561;9602;:::i;:::-;9653:7;-1:-1:-1;9707:2:105;9692:18;;9679:32;;-1:-1:-1;9758:2:105;9743:18;;9730:32;;-1:-1:-1;9813:3:105;9798:19;;9785:33;9837:18;9867:14;;;9864:34;;;9894:1;9891;9884:12;9864:34;9917:61;9970:7;9961:6;9950:9;9946:22;9917:61;:::i;:::-;9907:71;;10031:3;10020:9;10016:19;10003:33;9987:49;;10061:2;10051:8;10048:16;10045:36;;;10077:1;10074;10067:12;10045:36;;10100:63;10155:7;10144:8;10133:9;10129:24;10100:63;:::i;:::-;10090:73;;;10215:3;10204:9;10200:19;10187:33;10229:41;10262:7;10229:41;:::i;:::-;10289:7;10279:17;;;10343:3;10332:9;10328:19;10315:33;10305:43;;9095:1259;;;;;;;;;;;:::o;10863:400::-;10962:6;11015:2;11003:9;10994:7;10990:23;10986:32;10983:52;;;11031:1;11028;11021:12;10983:52;11071:9;11058:23;11104:18;11096:6;11093:30;11090:50;;;11136:1;11133;11126:12;11090:50;11159:22;;11215:3;11197:16;;;11193:26;11190:46;;;11232:1;11229;11222:12;11190:46;11255:2;10863:400;-1:-1:-1;;;10863:400:105:o;11268:753::-;11637:6;11626:9;11619:25;11680:6;11675:2;11664:9;11660:18;11653:34;11723:6;11718:2;11707:9;11703:18;11696:34;11766:6;11761:2;11750:9;11746:18;11739:34;11810:3;11804;11793:9;11789:19;11782:32;11600:4;11837:57;11889:3;11878:9;11874:19;11866:6;11837:57;:::i;:::-;11943:9;11935:6;11931:22;11925:3;11914:9;11910:19;11903:51;11971:44;12008:6;12000;11971:44;:::i;:::-;11963:52;11268:753;-1:-1:-1;;;;;;;;;11268:753:105:o;12026:146::-;-1:-1:-1;;;;;12105:5:105;12101:46;12094:5;12091:57;12081:85;;12162:1;12159;12152:12;12177:118;12263:5;12256:13;12249:21;12242:5;12239:32;12229:60;;12285:1;12282;12275:12;12300:548;12391:6;12399;12407;12460:2;12448:9;12439:7;12435:23;12431:32;12428:52;;;12476:1;12473;12466:12;12428:52;12515:9;12502:23;12534:39;12567:5;12534:39;:::i;:::-;12592:5;-1:-1:-1;12649:2:105;12634:18;;12621:32;12662:33;12621:32;12662:33;:::i;:::-;12714:7;-1:-1:-1;12773:2:105;12758:18;;12745:32;12786:30;12745:32;12786:30;:::i;:::-;12835:7;12825:17;;;12300:548;;;;;:::o;13516:1283::-;13728:6;13736;13744;13752;13760;13768;13776;13784;13792;13845:3;13833:9;13824:7;13820:23;13816:33;13813:53;;;13862:1;13859;13852:12;13813:53;13901:9;13888:23;13920:39;13953:5;13920:39;:::i;:::-;13978:5;-1:-1:-1;14035:2:105;14020:18;;14007:32;14048:41;14007:32;14048:41;:::i;:::-;14108:7;-1:-1:-1;14134:37:105;14167:2;14152:18;;14134:37;:::i;:::-;14124:47;;14218:2;14207:9;14203:18;14190:32;14180:42;;14269:3;14258:9;14254:19;14241:33;14231:43;;14325:3;14314:9;14310:19;14297:33;14349:18;14390:2;14382:6;14379:14;14376:34;;;14406:1;14403;14396:12;14376:34;14429:61;14482:7;14473:6;14462:9;14458:22;14429:61;:::i;:::-;14419:71;;14543:3;14532:9;14528:19;14515:33;14499:49;;14573:2;14563:8;14560:16;14557:36;;;14589:1;14586;14579:12;14557:36;;14612:63;14667:7;14656:8;14645:9;14641:24;14612:63;:::i;:::-;14602:73;;;14694:47;14736:3;14725:9;14721:19;14694:47;:::i;:::-;14684:57;;14788:3;14777:9;14773:19;14760:33;14750:43;;13516:1283;;;;;;;;;;;:::o;14804:411::-;14888:6;14896;14949:2;14937:9;14928:7;14924:23;14920:32;14917:52;;;14965:1;14962;14955:12;14917:52;15004:9;14991:23;15023:39;15056:5;15023:39;:::i;:::-;15081:5;-1:-1:-1;15138:2:105;15123:18;;15110:32;15151;15110;15151;:::i;:::-;15202:7;15192:17;;;14804:411;;;;;:::o;15220:367::-;15283:8;15293:6;15347:3;15340:4;15332:6;15328:17;15324:27;15314:55;;15365:1;15362;15355:12;15314:55;-1:-1:-1;15388:20:105;;15431:18;15420:30;;15417:50;;;15463:1;15460;15453:12;15417:50;15500:4;15492:6;15488:17;15476:29;;15560:3;15553:4;15543:6;15540:1;15536:14;15528:6;15524:27;15520:38;15517:47;15514:67;;;15577:1;15574;15567:12;15514:67;15220:367;;;;;:::o;15592:1084::-;15750:6;15758;15766;15774;15782;15790;15843:3;15831:9;15822:7;15818:23;15814:33;15811:53;;;15860:1;15857;15850:12;15811:53;15899:9;15886:23;15918:39;15951:5;15918:39;:::i;:::-;15976:5;-1:-1:-1;16033:2:105;16018:18;;16005:32;16046:41;16005:32;16046:41;:::i;:::-;16106:7;-1:-1:-1;16164:2:105;16149:18;;16136:32;16187:18;16217:14;;;16214:34;;;16244:1;16241;16234:12;16214:34;16283:70;16345:7;16336:6;16325:9;16321:22;16283:70;:::i;:::-;16372:8;;-1:-1:-1;16257:96:105;-1:-1:-1;16460:2:105;16445:18;;16432:32;;-1:-1:-1;16476:16:105;;;16473:36;;;16505:1;16502;16495:12;16473:36;;16544:72;16608:7;16597:8;16586:9;16582:24;16544:72;:::i;:::-;15592:1084;;;;-1:-1:-1;15592:1084:105;;-1:-1:-1;15592:1084:105;;16635:8;;15592:1084;-1:-1:-1;;;15592:1084:105:o;16681:340::-;16766:6;16774;16827:2;16815:9;16806:7;16802:23;16798:32;16795:52;;;16843:1;16840;16833:12;16795:52;16882:9;16869:23;16901:39;16934:5;16901:39;:::i;:::-;16959:5;17011:2;16996:18;;;;16983:32;;-1:-1:-1;;;16681:340:105:o;17221:127::-;17282:10;17277:3;17273:20;17270:1;17263:31;17313:4;17310:1;17303:15;17337:4;17334:1;17327:15;17353:125;17418:9;;;17439:10;;;17436:36;;;17452:18;;:::i;17483:127::-;17544:10;17539:3;17535:20;17532:1;17525:31;17575:4;17572:1;17565:15;17599:4;17596:1;17589:15;17846:184;17916:6;17969:2;17957:9;17948:7;17944:23;17940:32;17937:52;;;17985:1;17982;17975:12;17937:52;-1:-1:-1;18008:16:105;;17846:184;-1:-1:-1;17846:184:105:o;18035:128::-;18102:9;;;18123:11;;;18120:37;;;18137:18;;:::i;18168:259::-;18238:6;18291:2;18279:9;18270:7;18266:23;18262:32;18259:52;;;18307:1;18304;18297:12;18259:52;18339:9;18333:16;18358:39;18391:5;18358:39;:::i;19524:271::-;19599:6;19652:2;19640:9;19631:7;19627:23;19623:32;19620:52;;;19668:1;19665;19658:12;19620:52;19707:9;19694:23;19726:39;19759:5;19726:39;:::i;20651:519::-;20739:6;20747;20755;20808:2;20796:9;20787:7;20783:23;20779:32;20776:52;;;20824:1;20821;20814:12;20776:52;20856:9;20850:16;20875:31;20900:5;20875:31;:::i;:::-;20975:2;20960:18;;20954:25;20925:5;;-1:-1:-1;20988:33:105;20954:25;20988:33;:::i;:::-;21092:2;21077:18;;21071:25;21040:7;;-1:-1:-1;21105:33:105;21071:25;21105:33;:::i;21175:358::-;21275:6;21270:3;21263:19;21245:3;21305:66;21297:6;21294:78;21291:98;;;21385:1;21382;21375:12;21291:98;21421:6;21418:1;21414:14;21473:8;21466:5;21459:4;21454:3;21450:14;21437:45;21502:18;;;;21522:4;21498:29;;21175:358;-1:-1:-1;;;21175:358:105:o;21538:742::-;21834:4;-1:-1:-1;;;;;21944:2:105;21936:6;21932:15;21921:9;21914:34;21996:2;21988:6;21984:15;21979:2;21968:9;21964:18;21957:43;;22036:3;22031:2;22020:9;22016:18;22009:31;22063:74;22132:3;22121:9;22117:19;22109:6;22101;22063:74;:::i;:::-;22185:9;22177:6;22173:22;22168:2;22157:9;22153:18;22146:50;22213:61;22267:6;22259;22251;22213:61;:::i;22285:249::-;22354:6;22407:2;22395:9;22386:7;22382:23;22378:32;22375:52;;;22423:1;22420;22413:12;22375:52;22455:9;22449:16;22474:30;22498:5;22474:30;:::i;22539:127::-;22600:10;22595:3;22591:20;22588:1;22581:31;22631:4;22628:1;22621:15;22655:4;22652:1;22645:15;22671:188;22750:13;;-1:-1:-1;;;;;22792:42:105;;22782:53;;22772:81;;22849:1;22846;22839:12;22864:450;22951:6;22959;22967;23020:2;23008:9;22999:7;22995:23;22991:32;22988:52;;;23036:1;23033;23026:12;22988:52;23059:40;23089:9;23059:40;:::i;:::-;23049:50;;23118:49;23163:2;23152:9;23148:18;23118:49;:::i;:::-;23108:59;;23210:2;23199:9;23195:18;23189:25;23254:10;23247:5;23243:22;23236:5;23233:33;23223:61;;23280:1;23277;23270:12;24942:136;24981:3;25009:5;24999:39;;25018:18;;:::i;:::-;-1:-1:-1;;;25054:18:105;;24942:136::o;26030:919::-;26136:6;26189:3;26177:9;26168:7;26164:23;26160:33;26157:53;;;26206:1;26203;26196:12;26157:53;26239:2;26233:9;26281:3;26273:6;26269:16;26351:6;26339:10;26336:22;26315:18;26303:10;26300:34;26297:62;26294:88;;;26362:18;;:::i;:::-;26398:2;26391:22;26435:16;;26460:30;26435:16;26460:30;:::i;:::-;26499:21;;26565:2;26550:18;;26544:25;26578:41;26544:25;26578:41;:::i;:::-;26647:2;26635:15;;26628:32;26705:2;26690:18;;26684:25;26718:30;26684:25;26718:30;:::i;:::-;26776:2;26764:15;;26757:32;26834:2;26819:18;;26813:25;26847:30;26813:25;26847:30;:::i;:::-;26905:2;26893:15;;26886:32;26897:6;26030:919;-1:-1:-1;;;26030:919:105:o;27357:688::-;27633:4;-1:-1:-1;;;;;27743:2:105;27735:6;27731:15;27720:9;27713:34;27795:2;27787:6;27783:15;27778:2;27767:9;27763:18;27756:43;;27835:3;27830:2;27819:9;27815:18;27808:31;27862:57;27914:3;27903:9;27899:19;27891:6;27862:57;:::i;:::-;27967:9;27959:6;27955:22;27950:2;27939:9;27935:18;27928:50;27995:44;28032:6;28024;27995:44;:::i;28050:881::-;28145:6;28176:2;28219;28207:9;28198:7;28194:23;28190:32;28187:52;;;28235:1;28232;28225:12;28187:52;28268:9;28262:16;28301:18;28293:6;28290:30;28287:50;;;28333:1;28330;28323:12;28287:50;28356:22;;28409:4;28401:13;;28397:27;-1:-1:-1;28387:55:105;;28438:1;28435;28428:12;28387:55;28467:2;28461:9;28490:60;28506:43;28546:2;28506:43;:::i;28490:60::-;28584:15;;;28666:1;28662:10;;;;28654:19;;28650:28;;;28615:12;;;;28690:19;;;28687:39;;;28722:1;28719;28712:12;28687:39;28746:11;;;;28766:135;28782:6;28777:3;28774:15;28766:135;;;28848:10;;28836:23;;28799:12;;;;28879;;;;28766:135;;28936;28975:3;28996:17;;;28993:43;;29016:18;;:::i;:::-;-1:-1:-1;29063:1:105;29052:13;;28936:135::o;29472:545::-;29565:4;29571:6;29631:11;29618:25;29725:2;29721:7;29710:8;29694:14;29690:29;29686:43;29666:18;29662:68;29652:96;;29744:1;29741;29734:12;29652:96;29771:33;;29823:20;;;-1:-1:-1;29866:18:105;29855:30;;29852:50;;;29898:1;29895;29888:12;29852:50;29931:4;29919:17;;-1:-1:-1;29982:1:105;29978:14;;;29962;29958:35;29948:46;;29945:66;;;30007:1;30004;29997:12;31335:854;31533:4;31581:2;31570:9;31566:18;-1:-1:-1;;;;;31684:2:105;31676:6;31672:15;31661:9;31654:34;31707:2;31745;31740;31729:9;31725:18;31718:30;31768:6;31803;31797:13;31834:6;31826;31819:22;31872:3;31861:9;31857:19;31850:26;;31911:2;31903:6;31899:15;31885:29;;31932:1;31942:169;31956:6;31953:1;31950:13;31942:169;;;32017:13;;32005:26;;32086:15;;;;32051:12;;;;31978:1;31971:9;31942:169;;;31946:3;;32128;32120:11;;;;32179:2;32171:6;32167:15;32162:2;32151:9;32147:18;32140:43;;;31335:854;;;;;;:::o;32194:1003::-;32307:6;32315;32323;32376:2;32364:9;32355:7;32351:23;32347:32;32344:52;;;32392:1;32389;32382:12;32344:52;32421:9;32415:16;32405:26;;32450:2;32492;32481:9;32477:18;32471:25;32461:35;;32540:2;32529:9;32525:18;32519:25;32567:18;32559:6;32556:30;32553:50;;;32599:1;32596;32589:12;32553:50;32622:22;;32675:4;32667:13;;32663:27;-1:-1:-1;32653:55:105;;32704:1;32701;32694:12;32653:55;32733:2;32727:9;32756:60;32772:43;32812:2;32772:43;:::i;32756:60::-;32850:15;;;32932:1;32928:10;;;;32920:19;;32916:28;;;32881:12;;;;32956:19;;;32953:39;;;32988:1;32985;32978:12;32953:39;33012:11;;;;33032:135;33048:6;33043:3;33040:15;33032:135;;;33114:10;;33102:23;;33065:12;;;;33145;;;;33032:135;;;33186:5;33176:15;;;;;;;32194:1003;;;;;:::o;33534:168::-;33607:9;;;33638;;33655:15;;;33649:22;;33635:37;33625:71;;33676:18;;:::i;33707:217::-;33747:1;33773;33763:132;;33817:10;33812:3;33808:20;33805:1;33798:31;33852:4;33849:1;33842:15;33880:4;33877:1;33870:15;33763:132;-1:-1:-1;33909:9:105;;33707:217::o","linkReferences":{},"immutableReferences":{"56919":[{"start":859,"length":32},{"start":4141,"length":32},{"start":4570,"length":32},{"start":8137,"length":32},{"start":13091,"length":32}],"56922":[{"start":1168,"length":32},{"start":14919,"length":32}],"56925":[{"start":404,"length":32},{"start":755,"length":32},{"start":1506,"length":32},{"start":1728,"length":32},{"start":1948,"length":32},{"start":2271,"length":32},{"start":3180,"length":32},{"start":4744,"length":32},{"start":4900,"length":32},{"start":5259,"length":32},{"start":5390,"length":32},{"start":6225,"length":32},{"start":6886,"length":32},{"start":7631,"length":32},{"start":10024,"length":32},{"start":10951,"length":32},{"start":11077,"length":32}]}},"methodIdentifiers":{"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":"a3c7271a","addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":"8efc2b2c","createLBPair(address,address,uint24,uint16)":"659ac74b","getFactory()":"88cc58e4","getIdFromPrice(address,uint256)":"f96fe925","getPriceFromId(address,uint24)":"d0e380f2","getSwapIn(address,uint128,bool)":"964f987c","getSwapOut(address,uint128,bool)":"a0d376cf","getV1Factory()":"bb558a9f","getWNATIVE()":"6c9c0078","removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":"c22159b6","removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":"81c2fdfb","swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":"b066ea7c","swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":"e038e6dc","swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"9ab6156b","swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"1a24f9a9","swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"2a443fae","swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"4b801870","swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":"2075ad22","swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"3dc8f8ec","swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":"92fe8e70","sweep(address,address,uint256)":"62c06767","sweepLBToken(address,address,uint256[],uint256[])":"e9361c08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"factory2\",\"type\":\"address\"},{\"internalType\":\"contract ISovrynLBFactoryV1\",\"name\":\"factoryV1\",\"type\":\"address\"},{\"internalType\":\"contract IWNATIVE\",\"name\":\"wnative\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageBPTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__BinReserveOverflows\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__BrokenSwapSafetyCheck\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"LBRouter__DeadlineExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBRouter__FailedToSendNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdDesiredOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"id\",\"type\":\"int256\"}],\"name\":\"LBRouter__IdOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeId\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrongToken\",\"type\":\"address\"}],\"name\":\"LBRouter__InvalidTokenPath\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__LengthsMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"LBRouter__MaxAmountInExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__NotFactoryOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBRouter__PairNotCreated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__SenderIsNotWNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__SwapOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"excess\",\"type\":\"uint256\"}],\"name\":\"LBRouter__TooMuchTokensIn\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserve\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongAmounts\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongNativeLiquidityParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__WrongTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__SubUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenHelper__TransferFailed\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"lbFactory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getV1Factory\",\"outputs\":[{\"internalType\":\"contract ISovrynLBFactoryV1\",\"name\":\"factoryV1\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWNATIVE\",\"outputs\":[{\"internalType\":\"contract IWNATIVE\",\"name\":\"wnative\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVEMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVE\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVESupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapNATIVEForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountNATIVEOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactNATIVE\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBToken\",\"name\":\"lbToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"sweepLBToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"details\":\"This function is compliant with fee on transfer tokens\",\"params\":{\"liquidityParameters\":\"The liquidity parameters\"},\"returns\":{\"amountXAdded\":\"The amount of token X added\",\"amountXLeft\":\"The amount of token X left (sent back to liquidityParameters.refundTo)\",\"amountYAdded\":\"The amount of token Y added\",\"amountYLeft\":\"The amount of token Y left (sent back to liquidityParameters.refundTo)\",\"depositIds\":\"The ids of the deposits\",\"liquidityMinted\":\"The amount of liquidity minted\"}},\"addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"details\":\"This function is compliant with fee on transfer tokens\",\"params\":{\"liquidityParameters\":\"The liquidity parameters\"},\"returns\":{\"amountXAdded\":\"The amount of token X added\",\"amountXLeft\":\"The amount of token X left (sent back to liquidityParameters.refundTo)\",\"amountYAdded\":\"The amount of token Y added\",\"amountYLeft\":\"The amount of token Y left (sent back to liquidityParameters.refundTo)\",\"depositIds\":\"The ids of the deposits\",\"liquidityMinted\":\"The amount of liquidity minted\"}},\"constructor\":{\"params\":{\"factory2\":\"Address of LB DEX V2.2 factory\",\"factoryV1\":\"Address of LB DEX V1 factory\",\"wnative\":\"Address of WNATIVE\"}},\"createLBPair(address,address,uint24,uint16)\":{\"params\":{\"activeId\":\"The active id of the pair\",\"binStep\":\"The bin step in basis point, used to calculate log(1 + binStep)\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"},\"returns\":{\"pair\":\"The address of the newly created LBPair\"}},\"getFactory()\":{\"returns\":{\"lbFactory\":\"The address of the factory V2.1\"}},\"getIdFromPrice(address,uint256)\":{\"params\":{\"pair\":\"The address of the LBPair\",\"price\":\"The price of y per x (multiplied by 1e36)\"},\"returns\":{\"_0\":\"The id corresponding to this price\"}},\"getPriceFromId(address,uint24)\":{\"params\":{\"id\":\"The id\",\"pair\":\"The address of the LBPair\"},\"returns\":{\"_0\":\"The price corresponding to this id\"}},\"getSwapIn(address,uint128,bool)\":{\"params\":{\"amountOut\":\"The amount of token to receive\",\"pair\":\"The address of the LBPair\",\"swapForY\":\"Whether you swap X for Y (true), or Y for X (false)\"},\"returns\":{\"amountIn\":\"The amount of token to send in order to receive amountOut token\",\"amountOutLeft\":\"The amount of token Out that can't be returned due to a lack of liquidity\",\"fee\":\"The amount of fees paid in token sent\"}},\"getSwapOut(address,uint128,bool)\":{\"params\":{\"amountIn\":\"The amount of token sent\",\"pair\":\"The address of the LBPair\",\"swapForY\":\"Whether you swap X for Y (true), or Y for X (false)\"},\"returns\":{\"amountInLeft\":\"The amount of token In that can't be swapped due to a lack of liquidity\",\"amountOut\":\"The amount of token received if amountIn tokenX are sent\",\"fee\":\"The amount of fees paid in token sent\"}},\"getV1Factory()\":{\"returns\":{\"factoryV1\":\"The address of the factory V1\"}},\"getWNATIVE()\":{\"returns\":{\"wnative\":\"The address of WNATIVE\"}},\"removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"details\":\"This function is compliant with fee on transfer tokens\",\"params\":{\"amountXMin\":\"The min amount to receive of token X\",\"amountYMin\":\"The min amount to receive of token Y\",\"amounts\":\"The list of amounts to burn of each id in `_ids`\",\"binStep\":\"The bin step of the LBPair\",\"deadline\":\"The deadline of the tx\",\"ids\":\"The list of ids to burn\",\"to\":\"The address of the recipient\",\"tokenX\":\"The address of token X\",\"tokenY\":\"The address of token Y\"},\"returns\":{\"amountX\":\"Amount of token X returned\",\"amountY\":\"Amount of token Y returned\"}},\"removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"details\":\"This function is **NOT** compliant with fee on transfer tokens. This is wanted as it would make users pays the fee on transfer twice, use the `removeLiquidity` function to remove liquidity with fee on transfer tokens.\",\"params\":{\"amountNATIVEMin\":\"The min amount to receive of NATIVE\",\"amountTokenMin\":\"The min amount to receive of token\",\"amounts\":\"The list of amounts to burn of each id in `_ids`\",\"binStep\":\"The bin step of the LBPair\",\"deadline\":\"The deadline of the tx\",\"ids\":\"The list of ids to burn\",\"to\":\"The address of the recipient\",\"token\":\"The address of token\"},\"returns\":{\"amountNATIVE\":\"Amount of NATIVE returned\",\"amountToken\":\"Amount of token returned\"}},\"swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMinNATIVE\":\"The min amount of NATIVE to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMinNATIVE\":\"The min amount of NATIVE to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"details\":\"Will refund any NATIVE amount sent in excess to `msg.sender`\",\"params\":{\"amountOut\":\"The amount of tokens to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountsIn\":\"path amounts for every step of the swap\"}},\"swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountInMax\":\"The max amount of token to send\",\"amountNATIVEOut\":\"The amount of NATIVE to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountsIn\":\"path amounts for every step of the swap\"}},\"swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountInMax\":\"The max amount of token to send\",\"amountOut\":\"The amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountsIn\":\"Input amounts of the swap\"}},\"sweep(address,address,uint256)\":{\"details\":\"Only callable by the factory owner\",\"params\":{\"amount\":\"The amount to send\",\"to\":\"The address of the user to send back the tokens\",\"token\":\"The address of the token\"}},\"sweepLBToken(address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the factory owner\",\"params\":{\"amounts\":\"The list of amounts to send\",\"ids\":\"The list of token ids\",\"lbToken\":\"The address of the LBToken\",\"to\":\"The address of the user to send back the tokens\"}}},\"title\":\"Liquidity Book Router\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"notice\":\"Add liquidity while performing safety checks\"},\"addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"notice\":\"Add liquidity with NATIVE while performing safety checks\"},\"constructor\":{\"notice\":\"Constructor\"},\"createLBPair(address,address,uint24,uint16)\":{\"notice\":\"Create a liquidity bin LBPair for tokenX and tokenY using the factory\"},\"getFactory()\":{\"notice\":\"View function to get the factory V2.1 address\"},\"getIdFromPrice(address,uint256)\":{\"notice\":\"Returns the approximate id corresponding to the inputted price. Warning, the returned id may be inaccurate close to the start price of a bin\"},\"getPriceFromId(address,uint24)\":{\"notice\":\"Returns the price corresponding to the inputted id\"},\"getSwapIn(address,uint128,bool)\":{\"notice\":\"Simulate a swap in\"},\"getSwapOut(address,uint128,bool)\":{\"notice\":\"Simulate a swap out\"},\"getV1Factory()\":{\"notice\":\"View function to get the factory V1 address\"},\"getWNATIVE()\":{\"notice\":\"View function to get the WNATIVE address\"},\"removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"notice\":\"Remove liquidity while performing safety checks\"},\"removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"notice\":\"Remove NATIVE liquidity while performing safety checks\"},\"swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact NATIVE for tokens while performing safety checks\"},\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact NATIVE for tokens while performing safety checks supporting for fee on transfer tokens\"},\"swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for NATIVE while performing safety checks\"},\"swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for NATIVE while performing safety checks supporting for fee on transfer tokens\"},\"swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for tokens while performing safety checks\"},\"swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for tokens while performing safety checks supporting for fee on transfer tokens\"},\"swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps NATIVE for exact tokens while performing safety checks\"},\"swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps tokens for exact NATIVE while performing safety checks\"},\"swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps tokens for exact tokens while performing safety checks\"},\"sweep(address,address,uint256)\":{\"notice\":\"Unstuck tokens that are sent to this contract by mistake\"},\"sweepLBToken(address,address,uint256[],uint256[])\":{\"notice\":\"Unstuck LBTokens that are sent to this contract by mistake\"}},\"notice\":\"Main contract to interact with to swap and manage liquidity on Sovryn LB V2 exchange.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBRouter.sol\":\"LBRouter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract ILBFactory","name":"factory2","type":"address"},{"internalType":"contract ISovrynLBFactoryV1","name":"factoryV1","type":"address"},{"internalType":"contract IWNATIVE","name":"wnative","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"amountSlippage","type":"uint256"}],"type":"error","name":"LBRouter__AmountSlippageBPTooBig"},{"inputs":[{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}],"type":"error","name":"LBRouter__AmountSlippageCaught"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"type":"error","name":"LBRouter__BinReserveOverflows"},{"inputs":[],"type":"error","name":"LBRouter__BrokenSwapSafetyCheck"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"currentTimestamp","type":"uint256"}],"type":"error","name":"LBRouter__DeadlineExceeded"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBRouter__FailedToSendNATIVE"},{"inputs":[{"internalType":"uint256","name":"idDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"}],"type":"error","name":"LBRouter__IdDesiredOverflows"},{"inputs":[{"internalType":"int256","name":"id","type":"int256"}],"type":"error","name":"LBRouter__IdOverflows"},{"inputs":[{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"uint256","name":"activeId","type":"uint256"}],"type":"error","name":"LBRouter__IdSlippageCaught"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"type":"error","name":"LBRouter__InsufficientAmountOut"},{"inputs":[{"internalType":"address","name":"wrongToken","type":"address"}],"type":"error","name":"LBRouter__InvalidTokenPath"},{"inputs":[{"internalType":"uint256","name":"version","type":"uint256"}],"type":"error","name":"LBRouter__InvalidVersion"},{"inputs":[],"type":"error","name":"LBRouter__LengthsMismatch"},{"inputs":[{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"type":"error","name":"LBRouter__MaxAmountInExceeded"},{"inputs":[],"type":"error","name":"LBRouter__NotFactoryOwner"},{"inputs":[{"internalType":"address","name":"tokenX","type":"address"},{"internalType":"address","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"}],"type":"error","name":"LBRouter__PairNotCreated"},{"inputs":[],"type":"error","name":"LBRouter__SenderIsNotWNATIVE"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"type":"error","name":"LBRouter__SwapOverflows"},{"inputs":[{"internalType":"uint256","name":"excess","type":"uint256"}],"type":"error","name":"LBRouter__TooMuchTokensIn"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"reserve","type":"uint256"}],"type":"error","name":"LBRouter__WrongAmounts"},{"inputs":[{"internalType":"address","name":"tokenX","type":"address"},{"internalType":"address","name":"tokenY","type":"address"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"msgValue","type":"uint256"}],"type":"error","name":"LBRouter__WrongNativeLiquidityParameters"},{"inputs":[],"type":"error","name":"LBRouter__WrongTokenOrder"},{"inputs":[],"type":"error","name":"PackedUint128Math__SubUnderflow"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__InsufficientAmount"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__InsufficientLiquidity"},{"inputs":[],"type":"error","name":"TokenHelper__TransferFailed"},{"inputs":[{"internalType":"struct ILBRouter.LiquidityParameters","name":"liquidityParameters","type":"tuple","components":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"int256[]","name":"deltaIds","type":"int256[]"},{"internalType":"uint256[]","name":"distributionX","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionY","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"refundTo","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountXAdded","type":"uint256"},{"internalType":"uint256","name":"amountYAdded","type":"uint256"},{"internalType":"uint256","name":"amountXLeft","type":"uint256"},{"internalType":"uint256","name":"amountYLeft","type":"uint256"},{"internalType":"uint256[]","name":"depositIds","type":"uint256[]"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[{"internalType":"struct ILBRouter.LiquidityParameters","name":"liquidityParameters","type":"tuple","components":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint256","name":"binStep","type":"uint256"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256","name":"activeIdDesired","type":"uint256"},{"internalType":"uint256","name":"idSlippage","type":"uint256"},{"internalType":"int256[]","name":"deltaIds","type":"int256[]"},{"internalType":"uint256[]","name":"distributionX","type":"uint256[]"},{"internalType":"uint256[]","name":"distributionY","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"refundTo","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"addLiquidityNATIVE","outputs":[{"internalType":"uint256","name":"amountXAdded","type":"uint256"},{"internalType":"uint256","name":"amountYAdded","type":"uint256"},{"internalType":"uint256","name":"amountXLeft","type":"uint256"},{"internalType":"uint256","name":"amountYLeft","type":"uint256"},{"internalType":"uint256[]","name":"depositIds","type":"uint256[]"},{"internalType":"uint256[]","name":"liquidityMinted","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"createLBPair","outputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFactory","outputs":[{"internalType":"contract ILBFactory","name":"lbFactory","type":"address"}]},{"inputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function","name":"getIdFromPrice","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"},{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"view","type":"function","name":"getPriceFromId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"},{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapIn","outputs":[{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"uint128","name":"amountOutLeft","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[{"internalType":"contract ILBPair","name":"pair","type":"address"},{"internalType":"uint128","name":"amountIn","type":"uint128"},{"internalType":"bool","name":"swapForY","type":"bool"}],"stateMutability":"view","type":"function","name":"getSwapOut","outputs":[{"internalType":"uint128","name":"amountInLeft","type":"uint128"},{"internalType":"uint128","name":"amountOut","type":"uint128"},{"internalType":"uint128","name":"fee","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getV1Factory","outputs":[{"internalType":"contract ISovrynLBFactoryV1","name":"factoryV1","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWNATIVE","outputs":[{"internalType":"contract IWNATIVE","name":"wnative","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"tokenX","type":"address"},{"internalType":"contract IERC20","name":"tokenY","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint256","name":"amountXMin","type":"uint256"},{"internalType":"uint256","name":"amountYMin","type":"uint256"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint16","name":"binStep","type":"uint16"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountNATIVEMin","type":"uint256"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidityNATIVE","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountNATIVE","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactNATIVEForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapExactNATIVEForTokensSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinNATIVE","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForNATIVE","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinNATIVE","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForNATIVESupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapNATIVEForExactTokens","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountNATIVEOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactNATIVE","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"struct ILBRouter.Path","name":"path","type":"tuple","components":[{"internalType":"uint256[]","name":"pairBinSteps","type":"uint256[]"},{"internalType":"enum ILBRouter.Version[]","name":"versions","type":"uint8[]"},{"internalType":"contract IERC20[]","name":"tokenPath","type":"address[]"}]},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sweep"},{"inputs":[{"internalType":"contract ILBToken","name":"lbToken","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"sweepLBToken"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":{"details":"This function is compliant with fee on transfer tokens","params":{"liquidityParameters":"The liquidity parameters"},"returns":{"amountXAdded":"The amount of token X added","amountXLeft":"The amount of token X left (sent back to liquidityParameters.refundTo)","amountYAdded":"The amount of token Y added","amountYLeft":"The amount of token Y left (sent back to liquidityParameters.refundTo)","depositIds":"The ids of the deposits","liquidityMinted":"The amount of liquidity minted"}},"addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":{"details":"This function is compliant with fee on transfer tokens","params":{"liquidityParameters":"The liquidity parameters"},"returns":{"amountXAdded":"The amount of token X added","amountXLeft":"The amount of token X left (sent back to liquidityParameters.refundTo)","amountYAdded":"The amount of token Y added","amountYLeft":"The amount of token Y left (sent back to liquidityParameters.refundTo)","depositIds":"The ids of the deposits","liquidityMinted":"The amount of liquidity minted"}},"constructor":{"params":{"factory2":"Address of LB DEX V2.2 factory","factoryV1":"Address of LB DEX V1 factory","wnative":"Address of WNATIVE"}},"createLBPair(address,address,uint24,uint16)":{"params":{"activeId":"The active id of the pair","binStep":"The bin step in basis point, used to calculate log(1 + binStep)","tokenX":"The address of the first token","tokenY":"The address of the second token"},"returns":{"pair":"The address of the newly created LBPair"}},"getFactory()":{"returns":{"lbFactory":"The address of the factory V2.1"}},"getIdFromPrice(address,uint256)":{"params":{"pair":"The address of the LBPair","price":"The price of y per x (multiplied by 1e36)"},"returns":{"_0":"The id corresponding to this price"}},"getPriceFromId(address,uint24)":{"params":{"id":"The id","pair":"The address of the LBPair"},"returns":{"_0":"The price corresponding to this id"}},"getSwapIn(address,uint128,bool)":{"params":{"amountOut":"The amount of token to receive","pair":"The address of the LBPair","swapForY":"Whether you swap X for Y (true), or Y for X (false)"},"returns":{"amountIn":"The amount of token to send in order to receive amountOut token","amountOutLeft":"The amount of token Out that can't be returned due to a lack of liquidity","fee":"The amount of fees paid in token sent"}},"getSwapOut(address,uint128,bool)":{"params":{"amountIn":"The amount of token sent","pair":"The address of the LBPair","swapForY":"Whether you swap X for Y (true), or Y for X (false)"},"returns":{"amountInLeft":"The amount of token In that can't be swapped due to a lack of liquidity","amountOut":"The amount of token received if amountIn tokenX are sent","fee":"The amount of fees paid in token sent"}},"getV1Factory()":{"returns":{"factoryV1":"The address of the factory V1"}},"getWNATIVE()":{"returns":{"wnative":"The address of WNATIVE"}},"removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":{"details":"This function is compliant with fee on transfer tokens","params":{"amountXMin":"The min amount to receive of token X","amountYMin":"The min amount to receive of token Y","amounts":"The list of amounts to burn of each id in `_ids`","binStep":"The bin step of the LBPair","deadline":"The deadline of the tx","ids":"The list of ids to burn","to":"The address of the recipient","tokenX":"The address of token X","tokenY":"The address of token Y"},"returns":{"amountX":"Amount of token X returned","amountY":"Amount of token Y returned"}},"removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":{"details":"This function is **NOT** compliant with fee on transfer tokens. This is wanted as it would make users pays the fee on transfer twice, use the `removeLiquidity` function to remove liquidity with fee on transfer tokens.","params":{"amountNATIVEMin":"The min amount to receive of NATIVE","amountTokenMin":"The min amount to receive of token","amounts":"The list of amounts to burn of each id in `_ids`","binStep":"The bin step of the LBPair","deadline":"The deadline of the tx","ids":"The list of ids to burn","to":"The address of the recipient","token":"The address of token"},"returns":{"amountNATIVE":"Amount of NATIVE returned","amountToken":"Amount of token returned"}},"swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountOutMin":"The min amount of token to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountOut":"Output amount of the swap"}},"swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountOutMin":"The min amount of token to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountOut":"Output amount of the swap"}},"swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountIn":"The amount of token to send","amountOutMinNATIVE":"The min amount of NATIVE to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountOut":"Output amount of the swap"}},"swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountIn":"The amount of token to send","amountOutMinNATIVE":"The min amount of NATIVE to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountOut":"Output amount of the swap"}},"swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountIn":"The amount of token to send","amountOutMin":"The min amount of token to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountOut":"Output amount of the swap"}},"swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountIn":"The amount of token to send","amountOutMin":"The min amount of token to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountOut":"Output amount of the swap"}},"swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":{"details":"Will refund any NATIVE amount sent in excess to `msg.sender`","params":{"amountOut":"The amount of tokens to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountsIn":"path amounts for every step of the swap"}},"swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountInMax":"The max amount of token to send","amountNATIVEOut":"The amount of NATIVE to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountsIn":"path amounts for every step of the swap"}},"swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"params":{"amountInMax":"The max amount of token to send","amountOut":"The amount of token to receive","deadline":"The deadline of the tx","path":"The path of the swap","to":"The address of the recipient"},"returns":{"amountsIn":"Input amounts of the swap"}},"sweep(address,address,uint256)":{"details":"Only callable by the factory owner","params":{"amount":"The amount to send","to":"The address of the user to send back the tokens","token":"The address of the token"}},"sweepLBToken(address,address,uint256[],uint256[])":{"details":"Only callable by the factory owner","params":{"amounts":"The list of amounts to send","ids":"The list of token ids","lbToken":"The address of the LBToken","to":"The address of the user to send back the tokens"}}},"version":1},"userdoc":{"kind":"user","methods":{"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":{"notice":"Add liquidity while performing safety checks"},"addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))":{"notice":"Add liquidity with NATIVE while performing safety checks"},"constructor":{"notice":"Constructor"},"createLBPair(address,address,uint24,uint16)":{"notice":"Create a liquidity bin LBPair for tokenX and tokenY using the factory"},"getFactory()":{"notice":"View function to get the factory V2.1 address"},"getIdFromPrice(address,uint256)":{"notice":"Returns the approximate id corresponding to the inputted price. Warning, the returned id may be inaccurate close to the start price of a bin"},"getPriceFromId(address,uint24)":{"notice":"Returns the price corresponding to the inputted id"},"getSwapIn(address,uint128,bool)":{"notice":"Simulate a swap in"},"getSwapOut(address,uint128,bool)":{"notice":"Simulate a swap out"},"getV1Factory()":{"notice":"View function to get the factory V1 address"},"getWNATIVE()":{"notice":"View function to get the WNATIVE address"},"removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":{"notice":"Remove liquidity while performing safety checks"},"removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)":{"notice":"Remove NATIVE liquidity while performing safety checks"},"swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps exact NATIVE for tokens while performing safety checks"},"swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps exact NATIVE for tokens while performing safety checks supporting for fee on transfer tokens"},"swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps exact tokens for NATIVE while performing safety checks"},"swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps exact tokens for NATIVE while performing safety checks supporting for fee on transfer tokens"},"swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps exact tokens for tokens while performing safety checks"},"swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps exact tokens for tokens while performing safety checks supporting for fee on transfer tokens"},"swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps NATIVE for exact tokens while performing safety checks"},"swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps tokens for exact NATIVE while performing safety checks"},"swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)":{"notice":"Swaps tokens for exact tokens while performing safety checks"},"sweep(address,address,uint256)":{"notice":"Unstuck tokens that are sent to this contract by mistake"},"sweepLBToken(address,address,uint256[],uint256[])":{"notice":"Unstuck LBTokens that are sent to this contract by mistake"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LBRouter.sol":"LBRouter"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file diff --git a/abi/LBRouter.t.sol/LiquidityBinRouterForkTest.json b/abi/LBRouter.t.sol/LiquidityBinRouterForkTest.json deleted file mode 100644 index e9553fd8..00000000 --- a/abi/LBRouter.t.sol/LiquidityBinRouterForkTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_SwapExactTokensForTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapExactTokensForTokensSupportingFeeOnTransferTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SwapTokensForExactTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x600b805460ff1916600117905530608052610120604052600560e090815264616c69636560d81b61010052620000359062000086565b6001600160a01b031660a0526040805180820190915260038152623137b160e91b6020820152620000669062000086565b6001600160a01b031660c0523480156200007f57600080fd5b5062000273565b600062000093826200009a565b5092915050565b60008082604051602001620000b09190620001df565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001429190620001fd565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200018090859087906004016200022f565b600060405180830381600087803b1580156200019b57600080fd5b505af1158015620001b0573d6000803e3d6000fd5b50505050915091565b60005b83811015620001d6578181015183820152602001620001bc565b50506000910152565b60008251620001f3818460208701620001b9565b9190910192915050565b6000602082840312156200021057600080fd5b81516001600160a01b03811681146200022857600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200025e816060850160208701620001b9565b601f01601f1916919091016060019392505050565b60805160a05160c0516201ab41620002a6600039600050506000505060008181612dda0152613d5401526201ab416000f3fe60806040523480156200001157600080fd5b5060043610620001895760003560e01c80637594f3a111620000dd578063b5508aa9116200008b578063ba414fa6116200006e578063ba414fa61462000300578063e20c9f71146200030a578063fecaa223146200031457600080fd5b8063b5508aa914620002df578063b89e023314620002e957600080fd5b8063889be5b711620000c0578063889be5b71462000292578063916a17c614620002be578063a7aa85e914620002c857600080fd5b80637594f3a1146200026f57806385226c81146200027957600080fd5b80633e5e3c23116200013b57806349789ef9116200011e57806349789ef9146200022657806366d9a9a0146200024c57806372b01c7a146200026557600080fd5b80633e5e3c2314620002125780633f7286f4146200021c57600080fd5b80631998e10511620001705780631998e10514620001d65780631ed7831c14620001e05780632ade388014620001f957600080fd5b806301ffc9a7146200018e5780630a9254e414620001ca575b600080fd5b620001b56200019f366004620069b0565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620001d46200032b565b005b620001d462000ace565b620001ea62000e28565b604051620001c1919062006a22565b6200020362000e8c565b604051620001c1919062006a8b565b620001ea62000fda565b620001ea6200103c565b6200023d6200023736600462006b63565b6200109e565b604051908152602001620001c1565b62000256620010f3565b604051620001c1919062006b9b565b620001d4620011dd565b620001d462001541565b6200028362001933565b604051620001c1919062006c52565b620002a9620002a336600462006ccc565b62001a0d565b60405162ffffff9091168152602001620001c1565b6200025662001a68565b620001d4620002d936600462006d23565b62001b52565b6200028362001ff8565b620001b5620002fa36600462006dbf565b620020d2565b620001b562002155565b620001ea62002214565b620001d46200032536600462006de5565b62002276565b60405163975a6ce960e01b815260206004820152600960248201527f6176616c616e63686500000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371ee464d90829063975a6ce990606401600060405180830381865afa158015620003b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003db919081019062006eed565b6302be17786040518363ffffffff1660e01b8152600401620003ff92919062006f8c565b6020604051808303816000875af11580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000445919062006fb0565b506200045062002580565b601d5469d3c21bcecceda10000009062000481906001600160a01b0316306200047b84600a62006fe0565b62003bf6565b601e54620004a0906001600160a01b0316306200047b84600a62006fe0565b602254620004bf906001600160a01b0316306200047b84600a62006fe0565b602354620004de906001600160a01b0316306200047b84600a62006fe0565b602a54601e54601d546001600160a01b039283169263e8e3370092811691168480600080306200051042600162006ffa565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af11580156200058d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b3919062007010565b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216915063659ac74b906084016020604051808303816000875af115801562000622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200064891906200703f565b5060248054601c54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620006b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006db91906200703f565b5060248054602254601c5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af115801562000748573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076e91906200703f565b5060248054602354601c5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620007db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080191906200703f565b50601c54601d546000916200082b916001600160a01b039182169116846280000060078662003c0a565b60255460608201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c91906200086690859060040162007091565b60006040518083038185885af115801562000885573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620008b0919081019062007268565b5050601e54601d54620008df95506001600160a01b039182169450169150859050628000006007600062003c0a565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a906200091290849060040162007091565b6000604051808303816000875af115801562000932573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200095c919081019062007268565b5050602254601c546200098b95506001600160a01b039182169450169150859050628000006007600062003c0a565b60255460808201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c9190620009c690859060040162007091565b60006040518083038185885af1158015620009e5573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000a10919081019062007268565b5050602354601c5462000a3f95506001600160a01b039182169450169150859050628000006007600062003c0a565b60255460808201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c919062000a7a90859060040162007091565b60006040518083038185885af115801562000a99573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000ac4919081019062007268565b5050505050505050565b602354601e54670de0b6b3a76400009160009162000af9916001600160a01b03908116911662003da2565b60285460408201519192506000916001600160a01b0390911690630f902a409062000b2490620042e9565b856040518363ffffffff1660e01b815260040162000b44929190620072f8565b600060405180830381865afa15801562000b62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b8c91908101906200747c565b6025549091506000906001600160a01b0316634b8018708583863062000bb442600162006ffa565b6040518663ffffffff1660e01b815260040162000bd69594939291906200768d565b6020604051808303816000875af115801562000bf6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c1c919062006fb0565b905062000c82816002846080015160038151811062000c3f5762000c3f620076cb565b602002602001015162000c539190620076f7565b6001600160801b031664e8d4a510006040518060600160405280603d81526020016201aa92603d9139620043a7565b601e5460235462000ca0916001600160a01b03908116911662003da2565b60285460408201519194506001600160a01b031690630f902a409062000cc690620042e9565b866040518363ffffffff1660e01b815260040162000ce6929190620072f8565b600060405180830381865afa15801562000d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d2e91908101906200747c565b6025549092506001600160a01b0316634b801870856000863062000d5442600162006ffa565b6040518663ffffffff1660e01b815260040162000d769594939291906200768d565b6020604051808303816000875af115801562000d96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dbc919062006fb0565b905062000e22816002846080015160038151811062000ddf5762000ddf620076cb565b602002602001015162000df39190620076f7565b6001600160801b031664e8d4a510006040518060600160405280603d81526020016201aacf603d9139620043a7565b50505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000e8257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e63575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000fd157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000fb957838290600052602060002001805462000f259062007720565b80601f016020809104026020016040519081016040528092919081815260200182805462000f539062007720565b801562000fa45780601f1062000f785761010080835404028352916020019162000fa4565b820191906000526020600020905b81548152906001019060200180831162000f8657829003601f168201915b50505050508152602001906001019062000f03565b50505050815250508152602001906001019062000eb0565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000e82576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e63575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000e82576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e63575050505050905090565b6000808360ff16118015620010b6575060008260ff16115b620010cd57620010c7828462007756565b620010e7565b6001620010db838562007756565b620010e7919062007772565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000fd15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620011c457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620011855790505b5050505050815250508152602001906001019062001117565b601e54602254670de0b6b3a76400009160009162001208916001600160a01b03908116911662003da2565b60285460408201519192506000916001600160a01b0390911690630f902a40906200123390620042e9565b856040518363ffffffff1660e01b815260040162001253929190620072f8565b600060405180830381865afa15801562001271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200129b91908101906200747c565b6025549091506000906001600160a01b0316632a443fae85838630620012c342600162006ffa565b6040518663ffffffff1660e01b8152600401620012e59594939291906200768d565b6020604051808303816000875af115801562001305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200132b919062006fb0565b9050620013998183608001516003815181106200134c576200134c620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a3181525062004414565b602254601e54620013b7916001600160a01b03908116911662003da2565b60285460408201519194506001600160a01b031690630f902a4090620013dd90620042e9565b866040518363ffffffff1660e01b8152600401620013fd929190620072f8565b600060405180830381865afa1580156200141b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200144591908101906200747c565b6025549092506001600160a01b0316632a443fae85600086306200146b42600162006ffa565b6040518663ffffffff1660e01b81526004016200148d9594939291906200768d565b6020604051808303816000875af1158015620014ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d3919062006fb0565b905062000e22818360800151600381518110620014f457620014f4620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a3281525062004414565b602254601e54670de0b6b3a7640000916000916200156c916001600160a01b03908116911662003da2565b60285460408201519192506000916001600160a01b03909116906359214226906200159790620042e9565b856040518363ffffffff1660e01b8152600401620015b7929190620072f8565b600060405180830381865afa158015620015d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015ff91908101906200747c565b602554608082015180519293506000926001600160a01b03909216916392fe8e709187918590620016345762001634620076cb565b602002602001015186304260016200164d919062006ffa565b6040518663ffffffff1660e01b81526004016200166f9594939291906200778e565b6000604051808303816000875af11580156200168f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016b99190810190620077b8565b90506200174481600081518110620016d557620016d5620076cb565b60200260200101518360800151600081518110620016f757620016f7620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a3181525062004414565b601e5460225462001762916001600160a01b03908116911662003da2565b60285460408201519194506001600160a01b0316906359214226906200178890620042e9565b866040518363ffffffff1660e01b8152600401620017a8929190620072f8565b600060405180830381865afa158015620017c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017f091908101906200747c565b602554608082015180519294506001600160a01b03909116916392fe8e70918791600090620018235762001823620076cb565b602002602001015186304260016200183c919062006ffa565b6040518663ffffffff1660e01b81526004016200185e9594939291906200778e565b6000604051808303816000875af11580156200187e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018a89190810190620077b8565b905062000e2281600081518110620018c457620018c4620076cb565b60200260200101518360800151600081518110620018e657620018e6620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a3281525062004414565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000fd1578382906000526020600020018054620019799062007720565b80601f0160208091040260200160405190810160405280929190818152602001828054620019a79062007720565b8015620019f85780601f10620019cc57610100808354040283529160200191620019f8565b820191906000526020600020905b815481529060010190602001808311620019da57829003601f168201915b50505050508152602001906001019062001957565b60008062001a218462ffffff871662006ffa565b905060008360ff161162001a36578062001a52565b62001a4560ff841682620077f1565b62001a5290600162006ffa565b905062001a5f8162004488565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000fd15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001afa5790505b5050505050815250508152602001906001019062001a8c565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bb991906200703f565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bfc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c2291906200703f565b905062001c31828b8862003bf6565b62001c3e818b8762003bf6565b600062001c4c85856200109e565b905060008167ffffffffffffffff81111562001c6c5762001c6c62006e77565b60405190808252806020026020018201604052801562001c96578160200160208202803683370190505b50905060005b8281101562001d9557600062001cb48b838962001a0d565b905060008b62ffffff168262ffffff161015801562001cd6575060008960ff16115b62001ce357600062001d04565b62001d0462001cfe60ff8b16670de0b6b3a764000062007807565b620044b4565b905060008c62ffffff168362ffffff161115801562001d26575060008960ff16115b62001d3357600062001d4e565b62001d4e62001cfe60ff8b16670de0b6b3a764000062007807565b905062001d5d828285620044e0565b85858151811062001d725762001d72620076cb565b6020026020010181815250505050508062001d8d906200781e565b905062001c9c565b506040516303223eab60e11b81526001600160a01b038d166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562001e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7b91906200784b565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562001ecc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ef291906200784b565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001f5257600080fd5b505af115801562001f67573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162001f9d9392919062007869565b6000604051808303816000875af115801562001fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fe79190810190620078cf565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000fd15783829060005260206000200180546200203e9062007720565b80601f01602080910402602001604051908101604052809291908181526020018280546200206c9062007720565b8015620020bd5780601f106200209157610100808354040283529160200191620020bd565b820191906000526020600020905b8154815290600101906020018083116200209f57829003601f168201915b5050505050815260200190600101906200201c565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562002122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002148919062007923565b9998505050505050505050565b60075460009060ff16156200216e575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620021e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200220d919062006fb0565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562000e82576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e63575050505050905090565b670de0b6b3a7640000831115620022d45760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620022e283836200109e565b905060008167ffffffffffffffff81111562002302576200230262006e77565b6040519080825280602002602001820160405280156200232c578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200234d576200234d62006e77565b60405190808252806020026020018201604052801562002377578160200160208202803683370190505b50905060005b83811015620024855760006200239589838862001a0d565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620023eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002411919062006fb0565b90508162ffffff168584815181106200242e576200242e620076cb565b60209081029190910101526200244e818a670de0b6b3a76400006200451e565b848481518110620024635762002463620076cb565b6020026020010181815250505050806200247d906200781e565b90506200237d565b5060405163ca669fa760e01b81526001600160a01b038b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620024dc57600080fd5b505af1158015620024f1573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062002529908d908d90879087906004016200797d565b6000604051808303816000875af115801562002549573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025739190810190620077b8565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200268257601c54604051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b4d6c782916001600160a01b0390911690620025eb9062006919565b604051809103906000f08015801562002608573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200264d929190620079bf565b600060405180830381600087803b1580156200266857600080fd5b505af11580156200267d573d6000803e3d6000fd5b505050505b6006604051620026929062006927565b60ff9091168152602001604051809103906000f080158015620026b9573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055604051600690620026eb9062006927565b60ff9091168152602001604051809103906000f08015801562002712573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051600890620027449062006927565b60ff9091168152602001604051809103906000f0801580156200276b573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200279d9062006927565b60ff9091168152602001604051809103906000f080158015620027c4573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392909216919091179055604051601290620027f69062006927565b60ff9091168152602001604051809103906000f0801580156200281d573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516012906200284f9062006927565b60ff9091168152602001604051809103906000f08015801562002876573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051620028a59062006935565b604051809103906000f080158015620028c2573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200296857600080fd5b505af11580156200297d573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620029fa57600080fd5b505af115801562002a0f573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002a8c57600080fd5b505af115801562002aa1573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002b1e57600080fd5b505af115801562002b33573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002bb057600080fd5b505af115801562002bc5573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002c4257600080fd5b505af115801562002c57573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002cce57600080fd5b505af115801562002ce3573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002d7457600080fd5b505af115801562002d89573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062002e109062006943565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562002e4b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162002e799062006951565b6001600160a01b039091168152602001604051809103906000f08015801562002ea6573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562002f0557600080fd5b505af115801562002f1a573d6000803e3d6000fd5b5050505062002f286200454c565b62002f34600a620048f1565b602454602b54601c546040516001600160a01b0393841693928316929091169062002f5f906200695f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562002f9c573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062002fd7906200696d565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562003014573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620030ba57600080fd5b505af1158015620030cf573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200316057600080fd5b505af115801562003175573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200320957600080fd5b505af11580156200321e573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620032af57600080fd5b505af1158015620032c4573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200335557600080fd5b505af11580156200336a573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620033fb57600080fd5b505af115801562003410573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200346b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200349191906200784b565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620034e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200350f91906200784b565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003567573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200358d91906200784b565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620035e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200360b91906200784b565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200368991906200784b565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620036e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370791906200784b565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200375f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200378591906200784b565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620037dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200380391906200784b565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200385b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200388191906200784b565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620038d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038ff91906200784b565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003957573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200397d91906200784b565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620039d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039fb91906200784b565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003a53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a7991906200784b565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003ad1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003af791906200784b565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003b4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b7591906200784b565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003bcd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bf391906200784b565b50565b62003c05838383600062004998565b505050565b62003ca8604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b60008060008062003cbc8989898962004b9b565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff1681526020016000815260200162003d3a8a8762004eaa90919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a00162003d91426103e862006ffa565b90529b9a5050505050505050505050565b62003dc760405180606001604052806060815260200160608152602001606081525090565b604080516003808252608082019092529060208201606080368337505050815260408051600380825260808201909252906020820160608036833701905050602082015260408051600480825260a08201909252908160200160208202803683375050506040820152601e546001600160a01b0390811690841603620040985782816040015160008151811062003e625762003e62620076cb565b6001600160a01b039283166020918202929092010152601d5460408301518051919092169190600190811062003e9c5762003e9c620076cb565b6001600160a01b039283166020918202929092010152601c5460408301518051919092169190600290811062003ed65762003ed6620076cb565b60200260200101906001600160a01b031690816001600160a01b03168152505081816040015160038151811062003f115762003f11620076cb565b6001600160a01b039092166020928302919091019091015280518051600a919060009062003f435762003f43620076cb565b602090810291909101015280518051600a9190600190811062003f6a5762003f6a620076cb565b602090810291909101015280518051600a9190600290811062003f915762003f91620076cb565b6020026020010181815250506001816020015160008151811062003fb95762003fb9620076cb565b6020026020010190600181111562003fd55762003fd5620075db565b9081600181111562003feb5762003feb620075db565b81525050600181602001516001815181106200400b576200400b620076cb565b60200260200101906001811115620040275762004027620075db565b908160018111156200403d576200403d620075db565b81525050600181602001516002815181106200405d576200405d620076cb565b60200260200101906001811115620040795762004079620075db565b908160018111156200408f576200408f620075db565b905250620010ed565b828160400151600081518110620040b357620040b3620076cb565b6001600160a01b039283166020918202929092010152601c54604083015180519190921691906001908110620040ed57620040ed620076cb565b6001600160a01b039283166020918202929092010152601d54604083015180519190921691906002908110620041275762004127620076cb565b60200260200101906001600160a01b031690816001600160a01b031681525050818160400151600381518110620041625762004162620076cb565b6001600160a01b039092166020928302919091019091015280518051600a9190600090620041945762004194620076cb565b602090810291909101015280518051600a91906001908110620041bb57620041bb620076cb565b602090810291909101015280518051600a91906002908110620041e257620041e2620076cb565b602002602001018181525050600181602001516000815181106200420a576200420a620076cb565b60200260200101906001811115620042265762004226620075db565b908160018111156200423c576200423c620075db565b81525050600181602001516001815181106200425c576200425c620076cb565b60200260200101906001811115620042785762004278620075db565b908160018111156200428e576200428e620075db565b8152505060018160200151600281518110620042ae57620042ae620076cb565b60200260200101906001811115620042ca57620042ca620075db565b90816001811115620042e057620042e0620075db565b90525092915050565b6060815167ffffffffffffffff81111562004308576200430862006e77565b60405190808252806020026020018201604052801562004332578160200160208202803683370190505b50905060005b8251811015620043a157828181518110620043575762004357620076cb565b6020026020010151828281518110620043745762004374620076cb565b6001600160a01b03909216602092830291909101909101528062004398816200781e565b91505062004338565b50919050565b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390620043e6908790879087908790600401620079e3565b60006040518083038186803b158015620043ff57600080fd5b505afa15801562000ac4573d6000803e3d6000fd5b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590620044519086908690869060040162007a0a565b60006040518083038186803b1580156200446a57600080fd5b505afa1580156200447f573d6000803e3d6000fd5b50505050505050565b8062ffffff81168114620044af57604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff81168114620044af5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60008060006200452f868662004f6e565b9150915062004542868686858562004f8d565b9695505050505050565b601c546001600160a01b031615620045c15760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620045a757600080fd5b505af1158015620045bc573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620046365760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200461c57600080fd5b505af115801562004631573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620046ab5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200469157600080fd5b505af1158015620046a6573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620047205760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200470657600080fd5b505af11580156200471b573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620047955760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200477b57600080fd5b505af115801562004790573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200480a5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620047f057600080fd5b505af115801562004805573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200487f5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200486557600080fd5b505af11580156200487a573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620048ef5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620048da57600080fd5b505af115801562000e22573d6000803e3d6000fd5b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200497c57600080fd5b505af115801562004991573d6000803e3d6000fd5b5050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620049ee9162007a2b565b600060405180830381855afa9150503d806000811462004a2b576040519150601f19603f3d011682016040523d82523d6000602084013e62004a30565b606091505b5091505060008180602001905181019062004a4c919062006fb0565b905062004a868462004a7f8762004a786370a0823160e01b62004a71600c8d6200503f565b9062005067565b9062005085565b90620050ae565b821562004b935760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162004ad1919062007a2b565b600060405180830381855afa9150503d806000811462004b0e576040519150601f19603f3d011682016040523d82523d6000602084013e62004b13565b606091505b5091505060008180602001905181019062004b2f919062006fb0565b90508286101562004b5a5762004b468684620077f1565b62004b529082620077f1565b905062004b75565b62004b668387620077f1565b62004b72908262006ffa565b90505b62000ac48162004a7f6318160ddd60e01b62004a71600c8d6200503f565b505050505050565b60608080600062004bae60028762007a49565b62ffffff1660000362004c045760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e736044820152606401620022cb565b600062004c1360028862007a6e565b90508662ffffff1667ffffffffffffffff81111562004c365762004c3662006e77565b60405190808252806020026020018201604052801562004c60578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff81111562004c845762004c8462006e77565b60405190808252806020026020018201604052801562004cae578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff81111562004cd25762004cd262006e77565b60405190808252806020026020018201604052801562004cfc578160200160208202803683370190505b509250600062004d0e82600162007a87565b62004d279062ffffff16670de0b6b3a764000062007807565b9050600062004d3883600162007a87565b62004d499062ffffff168c62007807565b905060005b8962ffffff1681101562004e9b5762004d6989600162007a87565b62004d7a9062ffffff168262006fe0565b62004d878a600162007a87565b62004d93908662007aa6565b62004d9f908d62007ad0565b62ffffff1662004db0919062006ffa565b88828151811062004dc55762004dc5620076cb565b6020026020010181815250508362ffffff16811162004e01578286828151811062004df45762004df4620076cb565b6020026020010181815250505b8362ffffff16811062004e86578287828151811062004e245762004e24620076cb565b6020026020010181815250506000821162004e4157600062004e77565b62004e77608062004e6e8a848151811062004e605762004e60620076cb565b6020026020010151620050be565b849190620050cd565b62004e83908662006ffa565b94505b8062004e92816200781e565b91505062004d4e565b50505050945094509450949050565b6060825167ffffffffffffffff81111562004ec95762004ec962006e77565b60405190808252806020026020018201604052801562004ef3578160200160208202803683370190505b50905060005b835181101562004f67578262ffffff1684828151811062004f1e5762004f1e620076cb565b602002602001015162004f32919062007aef565b82828151811062004f475762004f47620076cb565b60209081029190910101528062004f5e816200781e565b91505062004ef9565b5092915050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362004fb35783838162004faa5762004faa620076e1565b04905062001a5f565b83821062004fd4576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c17905560008262005060565b6002820180546001810182556000918252602082206001600160a01b0384169101558262005060565b620050ba8282620050f9565b5050565b6000620010ed82600a62005510565b600060ff831684811b9061ffff6101008290031686901c90620045429087906001901b86858562004f8d565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200516c57602002820191906000526020600020905b81548152602001906001019080831162005157575b5050505050905060008362005181836200554d565b6040516020016200519492919062007b12565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620051e891869188910162007b45565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005223576200522187620055fa565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200526491879189910162007b45565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620052ab919062007a2b565b600060405180830381855afa9150503d8060008114620052e8576040519150601f19603f3d011682016040523d82523d6000602084013e620052ed565b606091505b5091506200530a9050816200530488602062006fe0565b62005607565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562005371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005397919062006fb0565b90508082146200544e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620022cb565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620054b257600080fd5b505af1158015620054c7573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff19169055620054fc60028b0160006200697b565b896004016000905550505050505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff190162001a5f8282620056a9565b606060008251602062005561919062006fe0565b67ffffffffffffffff8111156200557c576200557c62006e77565b6040519080825280601f01601f191660200182016040528015620055a7576020820181803683370190505b50905060005b835181101562004f67576000848281518110620055ce57620055ce620076cb565b602002602001015190508082602002602001840152508080620055f1906200781e565b915050620055ad565b6000620010ed8262005928565b600080600060208551116200561e57845162005621565b60205b905060005b818110156200569f576200563c81600862006fe0565b8662005649838862006ffa565b815181106200565c576200565c620076cb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005696816200781e565b91505062005626565b5090949350505050565b600080600083600003620056c75750600160801b9150620010ed9050565b50826000811215620056da579015906000035b62100000811015620058e057600160801b9250846001600160801b038111156200570657911591600019045b6001821615620057185792830260801c925b800260801c60028216156200572f5792830260801c925b800260801c6004821615620057465792830260801c925b800260801c60088216156200575d5792830260801c925b800260801c6010821615620057745792830260801c925b800260801c60208216156200578b5792830260801c925b800260801c6040821615620057a25792830260801c925b8002608090811c90821615620057ba5792830260801c925b800260801c610100821615620057d25792830260801c925b800260801c610200821615620057ea5792830260801c925b800260801c610400821615620058025792830260801c925b800260801c6108008216156200581a5792830260801c925b800260801c611000821615620058325792830260801c925b800260801c6120008216156200584a5792830260801c925b800260801c614000821615620058625792830260801c925b800260801c6180008216156200587a5792830260801c925b800260801c62010000821615620058935792830260801c925b800260801c62020000821615620058ac5792830260801c925b800260801c62040000821615620058c55792830260801c925b800260801c62080000821615620058de5792830260801c925b505b826000036200590d57604051631dba598d60e11b81526004810186905260248101859052604401620022cb565b816200591a578262001a5f565b62001a5f8360001962007807565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200599a57602002820191906000526020600020905b81548152602001906001019080831162005985575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905195965094919350620059e69250859187910162007b45565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005a85576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162005a5591859187910162007b45565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362005a9383620067d4565b60405160200162005aa692919062007b12565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005b1657600080fd5b505af115801562005b2b573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005b4c919062007a2b565b600060405180830381855afa9150503d806000811462005b89576040519150601f19603f3d011682016040523d82523d6000602084013e62005b8e565b606091505b50915062005bab90508162005ba587602062006fe0565b62006881565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562005c0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005c37919081019062007b81565b509050805160010362005fdb5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062005c8f5762005c8f620076cb565b60200260200101516040518363ffffffff1660e01b815260040162005cc99291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005ce7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d0d919062006fb0565b90508062005d78577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062005d4d5762005d4d620076cb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462005e2d5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620022cb565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162005e6592919062007b45565b604051602081830303815290604052805190602001208560008151811062005e915762005e91620076cb565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062005eeb5762005eeb620076cb565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262005f36918a918c910162007b45565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162005fa0918a918c910162007b45565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062006649565b600181511115620065d85760005b8151811015620065d15760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200603d576200603d620076cb565b60200260200101516040518363ffffffff1660e01b8152600401620060779291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006095573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060bb919062006fb0565b90508062006125577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620060fa57620060fa620076cb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620061345750620065bc565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200616c576200616c620076cb565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620061c557600080fd5b505af1158015620061da573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620061fc919062007a2b565b600060405180830381855afa9150503d806000811462006239576040519150601f19603f3d011682016040523d82523d6000602084013e6200623e565b606091505b509092509050620062568162005ba58c602062006fe0565b9650508080156200626657508186145b15620064fe577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620062a492919062007b45565b60405160208183030381529060405280519060200120888881518110620062cf57620062cf620076cb565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1848481518110620063285762006328620076cb565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262006373918d918f910162007b45565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200640092919062007b45565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620064835762006483620076cb565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620064dc57600080fd5b505af1158015620064f1573d6000803e3d6000fd5b50505050505050620065d1565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620065465762006546620076cb565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200659f57600080fd5b505af1158015620065b4573d6000803e3d6000fd5b505050505050505b80620065c8816200781e565b91505062005fe9565b5062006649565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620022cb565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200668d9188918a910162007b45565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200672a5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620022cb565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200675b60028a0160006200697b565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620067a19188918a910162007b45565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620067e8919062006fe0565b67ffffffffffffffff81111562006803576200680362006e77565b6040519080825280601f01601f1916602001820160405280156200682e576020820181803683370190505b50905060005b835181101562004f67576000848281518110620068555762006855620076cb565b60200260200101519050808260200260200184015250808062006878906200781e565b91505062006834565b60008060006020855111620068985784516200689b565b60205b905060005b818110156200569f57620068b681600862006fe0565b86620068c3838862006ffa565b81518110620068d657620068d6620076cb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006910816200781e565b915050620068a0565b610b088062007bed83390190565b610bfd80620086f583390190565b610c1880620092f283390190565b6131998062009f0a83390190565b61615c806200d0a383390190565b614c8080620131ff83390190565b612c138062017e7f83390190565b508054600082559060005260206000209081019062003bf391905b80821115620069ac576000815560010162006996565b5090565b600060208284031215620069c357600080fd5b81356001600160e01b0319811681146200506057600080fd5b600081518084526020808501945080840160005b8381101562006a175781516001600160a01b031687529582019590820190600101620069f0565b509495945050505050565b602081526000620050606020830184620069dc565b60005b8381101562006a5457818101518382015260200162006a3a565b50506000910152565b6000815180845262006a7781602086016020860162006a37565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b4157603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b2a57605f1989850301835262006b1784865162006a5d565b948e01949350918d019160010162006af8565b505050978a01979450509188019160010162006ab2565b50919a9950505050505050505050565b803560ff81168114620044af57600080fd5b6000806040838503121562006b7757600080fd5b62006b828362006b51565b915062006b926020840162006b51565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006c4357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006c2d5783516001600160e01b0319168252928b019260019290920191908b019062006c01565b50978a0197955050509187019160010162006bc3565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006cab57603f1988860301845262006c9885835162006a5d565b9450928501929085019060010162006c79565b5092979650505050505050565b803562ffffff81168114620044af57600080fd5b60008060006060848603121562006ce257600080fd5b62006ced8462006cb8565b92506020840135915062006d046040850162006b51565b90509250925092565b6001600160a01b038116811462003bf357600080fd5b600080600080600080600080610100898b03121562006d4157600080fd5b883562006d4e8162006d0d565b9750602089013562006d608162006d0d565b9650604089013562006d728162006d0d565b955062006d8260608a0162006cb8565b94506080890135935060a0890135925062006da060c08a0162006b51565b915062006db060e08a0162006b51565b90509295985092959890939650565b60006020828403121562006dd257600080fd5b813561ffff811681146200506057600080fd5b600080600080600080600060e0888a03121562006e0157600080fd5b873562006e0e8162006d0d565b9650602088013562006e208162006d0d565b9550604088013562006e328162006d0d565b945062006e426060890162006cb8565b93506080880135925062006e5960a0890162006b51565b915062006e6960c0890162006b51565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562006eb35762006eb362006e77565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562006ee55762006ee562006e77565b604052919050565b60006020828403121562006f0057600080fd5b815167ffffffffffffffff8082111562006f1957600080fd5b818401915084601f83011262006f2e57600080fd5b81518181111562006f435762006f4362006e77565b62006f58601f8201601f191660200162006eb9565b915080825285602082850101111562006f7057600080fd5b62006f8381602084016020860162006a37565b50949350505050565b60408152600062006fa1604083018562006a5d565b90508260208301529392505050565b60006020828403121562006fc357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620010ed57620010ed62006fca565b80820180821115620010ed57620010ed62006fca565b6000806000606084860312156200702657600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156200705257600080fd5b8151620050608162006d0d565b600081518084526020808501945080840160005b8381101562006a175781518752958201959082019060010162007073565b60208152620070ac6020820183516001600160a01b03169052565b60006020830151620070c960408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200713a6102008601846200705f565b9250808601519050601f196101608187860301818801526200715d85846200705f565b9450808801519250506101808187860301818801526200717e85846200705f565b945080880151925050506101a0620071a0818701836001600160a01b03169052565b86015190506101c0620071bd868201836001600160a01b03169052565b959095015193019290925250919050565b600067ffffffffffffffff821115620071eb57620071eb62006e77565b5060051b60200190565b600082601f8301126200720757600080fd5b81516020620072206200721a83620071ce565b62006eb9565b82815260059290921b840181019181810190868411156200724057600080fd5b8286015b848110156200725d578051835291830191830162007244565b509695505050505050565b60008060008060008060c087890312156200728257600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff80821115620072b757600080fd5b620072c58a838b01620071f5565b935060a0890151915080821115620072dc57600080fd5b50620072eb89828a01620071f5565b9150509295509295509295565b6040815260006200730d6040830185620069dc565b90506001600160801b03831660208301529392505050565b600082601f8301126200733757600080fd5b815160206200734a6200721a83620071ce565b82815260059290921b840181019181810190868411156200736a57600080fd5b8286015b848110156200725d578051620073848162006d0d565b83529183019183016200736e565b600082601f830112620073a457600080fd5b81516020620073b76200721a83620071ce565b82815260059290921b84018101918181019086841115620073d757600080fd5b8286015b848110156200725d57805160028110620073f55760008081fd5b8352918301918301620073db565b600082601f8301126200741557600080fd5b81516020620074286200721a83620071ce565b82815260059290921b840181019181810190868411156200744857600080fd5b8286015b848110156200725d5780516001600160801b03811681146200746e5760008081fd5b83529183019183016200744c565b6000602082840312156200748f57600080fd5b815167ffffffffffffffff80821115620074a857600080fd5b9083019060e08286031215620074bd57600080fd5b620074c762006e8d565b825182811115620074d757600080fd5b620074e58782860162007325565b825250602083015182811115620074fb57600080fd5b620075098782860162007325565b6020830152506040830151828111156200752257600080fd5b6200753087828601620071f5565b6040830152506060830151828111156200754957600080fd5b620075578782860162007392565b6060830152506080830151828111156200757057600080fd5b6200757e8782860162007403565b60808301525060a0830151828111156200759757600080fd5b620075a58782860162007403565b60a08301525060c083015182811115620075be57600080fd5b620075cc8782860162007403565b60c08301525095945050505050565b634e487b7160e01b600052602160045260246000fd5b60008151606084526200760860608501826200705f565b6020848101518683038783015280518084529082019350909160009190830190825b8181101562007665578551600281106200765257634e487b7160e01b85526021600452602485fd5b835294840194918401916001016200762a565b5050604086015193508681036040880152620076828185620069dc565b979650505050505050565b85815284602082015260a060408201526000620076ae60a0830186620075f1565b6001600160a01b0394909416606083015250608001529392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60006001600160801b0380841680620077145762007714620076e1565b92169190910492915050565b600181811c908216806200773557607f821691505b602082108103620043a157634e487b7160e01b600052602260045260246000fd5b60ff8181168382160190811115620010ed57620010ed62006fca565b60ff8281168282160390811115620010ed57620010ed62006fca565b8581526001600160801b038516602082015260a060408201526000620076ae60a0830186620075f1565b600060208284031215620077cb57600080fd5b815167ffffffffffffffff811115620077e357600080fd5b6200451684828501620071f5565b81810381811115620010ed57620010ed62006fca565b600082620078195762007819620076e1565b500490565b60006001820162007833576200783362006fca565b5060010190565b80518015158114620044af57600080fd5b6000602082840312156200785e57600080fd5b62005060826200783a565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620078b65785518352948301949183019160010162007898565b5050809450505080851660408501525050949350505050565b600080600060608486031215620078e557600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200790b57600080fd5b6200791986828701620071f5565b9150509250925092565b600080600080600080600080610100898b0312156200794157600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062006db060e08a016200783a565b60006001600160a01b03808716835280861660208401525060806040830152620079ab60808301856200705f565b82810360608401526200768281856200705f565b6001600160a01b038316815260406020820152600062004516604083018462006a5d565b84815283602082015282604082015260806060820152600062004542608083018462006a5d565b83815282602082015260606040820152600062001a5f606083018462006a5d565b6000825162007a3f81846020870162006a37565b9190910192915050565b600062ffffff8084168062007a625762007a62620076e1565b92169190910692915050565b600062ffffff80841680620077145762007714620076e1565b62ffffff81811683821601908082111562004f675762004f6762006fca565b62ffffff81811683821602808216919082811462007ac85762007ac862006fca565b505092915050565b62ffffff82811682821603908082111562004f675762004f6762006fca565b818103600083128015838313168383128216171562004f675762004f6762006fca565b6001600160e01b031983168152815160009062007b3781600485016020870162006a37565b919091016004019392505050565b825160009082906020808701845b8381101562007b715781518552938201939082019060010162007b53565b5050948252509092019392505050565b6000806040838503121562007b9557600080fd5b825167ffffffffffffffff8082111562007bae57600080fd5b62007bbc86838701620071f5565b9350602085015191508082111562007bd357600080fd5b5062007be285828601620071f5565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033746573745f537761704578616374546f6b656e73466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a31746573745f537761704578616374546f6b656e73466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a32a264697066735822122046fb7b4733995f95fc9fbbf8b780d2fdbf21fa275859a32390c9b27d96a55e1a64736f6c63430008140033","sourceMap":"3126:44:2:-:0;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;1758:4:93;1710:54;;1812:17;207:6549:98;1812:17:93;;207:6549:98;1812:17:93;;;-1:-1:-1;;;3126:44:2;1812:17:93;;;:8;:17::i;:::-;-1:-1:-1;;;;;1770:60:93;;;1876:15;;;;;;;;;;;;-1:-1:-1;;;1876:15:93;;;;;;:8;:15::i;:::-;-1:-1:-1;;;;;1836:56:93;;;207:6549:98;;;;;;;;;;;;20439:125:3;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;-1:-1:-1;;;;;;20344:19:3;;;;;709:25:105;;;20293:33:3;-1:-1:-1;20344:7:3;;;;682:18:105;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;14:250:105:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:105;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:105:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:105;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:105:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:105;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:105:o;:::-;207:6549:98;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001895760003560e01c80637594f3a111620000dd578063b5508aa9116200008b578063ba414fa6116200006e578063ba414fa61462000300578063e20c9f71146200030a578063fecaa223146200031457600080fd5b8063b5508aa914620002df578063b89e023314620002e957600080fd5b8063889be5b711620000c0578063889be5b71462000292578063916a17c614620002be578063a7aa85e914620002c857600080fd5b80637594f3a1146200026f57806385226c81146200027957600080fd5b80633e5e3c23116200013b57806349789ef9116200011e57806349789ef9146200022657806366d9a9a0146200024c57806372b01c7a146200026557600080fd5b80633e5e3c2314620002125780633f7286f4146200021c57600080fd5b80631998e10511620001705780631998e10514620001d65780631ed7831c14620001e05780632ade388014620001f957600080fd5b806301ffc9a7146200018e5780630a9254e414620001ca575b600080fd5b620001b56200019f366004620069b0565b6001600160e01b031916631eed36db60e21b1490565b60405190151581526020015b60405180910390f35b620001d46200032b565b005b620001d462000ace565b620001ea62000e28565b604051620001c1919062006a22565b6200020362000e8c565b604051620001c1919062006a8b565b620001ea62000fda565b620001ea6200103c565b6200023d6200023736600462006b63565b6200109e565b604051908152602001620001c1565b62000256620010f3565b604051620001c1919062006b9b565b620001d4620011dd565b620001d462001541565b6200028362001933565b604051620001c1919062006c52565b620002a9620002a336600462006ccc565b62001a0d565b60405162ffffff9091168152602001620001c1565b6200025662001a68565b620001d4620002d936600462006d23565b62001b52565b6200028362001ff8565b620001b5620002fa36600462006dbf565b620020d2565b620001b562002155565b620001ea62002214565b620001d46200032536600462006de5565b62002276565b60405163975a6ce960e01b815260206004820152600960248201527f6176616c616e63686500000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371ee464d90829063975a6ce990606401600060405180830381865afa158015620003b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003db919081019062006eed565b6302be17786040518363ffffffff1660e01b8152600401620003ff92919062006f8c565b6020604051808303816000875af11580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000445919062006fb0565b506200045062002580565b601d5469d3c21bcecceda10000009062000481906001600160a01b0316306200047b84600a62006fe0565b62003bf6565b601e54620004a0906001600160a01b0316306200047b84600a62006fe0565b602254620004bf906001600160a01b0316306200047b84600a62006fe0565b602354620004de906001600160a01b0316306200047b84600a62006fe0565b602a54601e54601d546001600160a01b039283169263e8e3370092811691168480600080306200051042600162006ffa565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af11580156200058d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b3919062007010565b505060248054601e54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a606484015216915063659ac74b906084016020604051808303816000875af115801562000622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200064891906200703f565b5060248054601c54601d5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620006b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006db91906200703f565b5060248054602254601c5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af115801562000748573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076e91906200703f565b5060248054602354601c5460405163659ac74b60e01b81526001600160a01b03928316600482015290821693810193909352628000006044840152600a6064840152169063659ac74b906084016020604051808303816000875af1158015620007db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200080191906200703f565b50601c54601d546000916200082b916001600160a01b039182169116846280000060078662003c0a565b60255460608201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c91906200086690859060040162007091565b60006040518083038185885af115801562000885573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620008b0919081019062007268565b5050601e54601d54620008df95506001600160a01b039182169450169150859050628000006007600062003c0a565b6025546040516351e3938d60e11b81529192506001600160a01b03169063a3c7271a906200091290849060040162007091565b6000604051808303816000875af115801562000932573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200095c919081019062007268565b5050602254601c546200098b95506001600160a01b039182169450169150859050628000006007600062003c0a565b60255460808201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c9190620009c690859060040162007091565b60006040518083038185885af1158015620009e5573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000a10919081019062007268565b5050602354601c5462000a3f95506001600160a01b039182169450169150859050628000006007600062003c0a565b60255460808201516040516323bf0acb60e21b81529293506001600160a01b0390911691638efc2b2c919062000a7a90859060040162007091565b60006040518083038185885af115801562000a99573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262000ac4919081019062007268565b5050505050505050565b602354601e54670de0b6b3a76400009160009162000af9916001600160a01b03908116911662003da2565b60285460408201519192506000916001600160a01b0390911690630f902a409062000b2490620042e9565b856040518363ffffffff1660e01b815260040162000b44929190620072f8565b600060405180830381865afa15801562000b62573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b8c91908101906200747c565b6025549091506000906001600160a01b0316634b8018708583863062000bb442600162006ffa565b6040518663ffffffff1660e01b815260040162000bd69594939291906200768d565b6020604051808303816000875af115801562000bf6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c1c919062006fb0565b905062000c82816002846080015160038151811062000c3f5762000c3f620076cb565b602002602001015162000c539190620076f7565b6001600160801b031664e8d4a510006040518060600160405280603d81526020016201aa92603d9139620043a7565b601e5460235462000ca0916001600160a01b03908116911662003da2565b60285460408201519194506001600160a01b031690630f902a409062000cc690620042e9565b866040518363ffffffff1660e01b815260040162000ce6929190620072f8565b600060405180830381865afa15801562000d04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d2e91908101906200747c565b6025549092506001600160a01b0316634b801870856000863062000d5442600162006ffa565b6040518663ffffffff1660e01b815260040162000d769594939291906200768d565b6020604051808303816000875af115801562000d96573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dbc919062006fb0565b905062000e22816002846080015160038151811062000ddf5762000ddf620076cb565b602002602001015162000df39190620076f7565b6001600160801b031664e8d4a510006040518060600160405280603d81526020016201aacf603d9139620043a7565b50505050565b6060601480548060200260200160405190810160405280929190818152602001828054801562000e8257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e63575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000fd157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000fb957838290600052602060002001805462000f259062007720565b80601f016020809104026020016040519081016040528092919081815260200182805462000f539062007720565b801562000fa45780601f1062000f785761010080835404028352916020019162000fa4565b820191906000526020600020905b81548152906001019060200180831162000f8657829003601f168201915b50505050508152602001906001019062000f03565b50505050815250508152602001906001019062000eb0565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801562000e82576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e63575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000e82576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e63575050505050905090565b6000808360ff16118015620010b6575060008260ff16115b620010cd57620010c7828462007756565b620010e7565b6001620010db838562007756565b620010e7919062007772565b60ff1690505b92915050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000fd15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620011c457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620011855790505b5050505050815250508152602001906001019062001117565b601e54602254670de0b6b3a76400009160009162001208916001600160a01b03908116911662003da2565b60285460408201519192506000916001600160a01b0390911690630f902a40906200123390620042e9565b856040518363ffffffff1660e01b815260040162001253929190620072f8565b600060405180830381865afa15801562001271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200129b91908101906200747c565b6025549091506000906001600160a01b0316632a443fae85838630620012c342600162006ffa565b6040518663ffffffff1660e01b8152600401620012e59594939291906200768d565b6020604051808303816000875af115801562001305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200132b919062006fb0565b9050620013998183608001516003815181106200134c576200134c620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a3181525062004414565b602254601e54620013b7916001600160a01b03908116911662003da2565b60285460408201519194506001600160a01b031690630f902a4090620013dd90620042e9565b866040518363ffffffff1660e01b8152600401620013fd929190620072f8565b600060405180830381865afa1580156200141b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200144591908101906200747c565b6025549092506001600160a01b0316632a443fae85600086306200146b42600162006ffa565b6040518663ffffffff1660e01b81526004016200148d9594939291906200768d565b6020604051808303816000875af1158015620014ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d3919062006fb0565b905062000e22818360800151600381518110620014f457620014f4620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f537761704578616374546f6b656e73466f72546f6b656e733a3a3281525062004414565b602254601e54670de0b6b3a7640000916000916200156c916001600160a01b03908116911662003da2565b60285460408201519192506000916001600160a01b03909116906359214226906200159790620042e9565b856040518363ffffffff1660e01b8152600401620015b7929190620072f8565b600060405180830381865afa158015620015d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015ff91908101906200747c565b602554608082015180519293506000926001600160a01b03909216916392fe8e709187918590620016345762001634620076cb565b602002602001015186304260016200164d919062006ffa565b6040518663ffffffff1660e01b81526004016200166f9594939291906200778e565b6000604051808303816000875af11580156200168f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016b99190810190620077b8565b90506200174481600081518110620016d557620016d5620076cb565b60200260200101518360800151600081518110620016f757620016f7620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a3181525062004414565b601e5460225462001762916001600160a01b03908116911662003da2565b60285460408201519194506001600160a01b0316906359214226906200178890620042e9565b866040518363ffffffff1660e01b8152600401620017a8929190620072f8565b600060405180830381865afa158015620017c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620017f091908101906200747c565b602554608082015180519294506001600160a01b03909116916392fe8e70918791600090620018235762001823620076cb565b602002602001015186304260016200183c919062006ffa565b6040518663ffffffff1660e01b81526004016200185e9594939291906200778e565b6000604051808303816000875af11580156200187e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018a89190810190620077b8565b905062000e2281600081518110620018c457620018c4620076cb565b60200260200101518360800151600081518110620018e657620018e6620076cb565b60200260200101516001600160801b03166040518060400160405280602081526020017f746573745f53776170546f6b656e73466f724578616374546f6b656e733a3a3281525062004414565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000fd1578382906000526020600020018054620019799062007720565b80601f0160208091040260200160405190810160405280929190818152602001828054620019a79062007720565b8015620019f85780601f10620019cc57610100808354040283529160200191620019f8565b820191906000526020600020905b815481529060010190602001808311620019da57829003601f168201915b50505050508152602001906001019062001957565b60008062001a218462ffffff871662006ffa565b905060008360ff161162001a36578062001a52565b62001a4560ff841682620077f1565b62001a5290600162006ffa565b905062001a5f8162004488565b95945050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000fd15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b3957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001afa5790505b5050505050815250508152602001906001019062001a8c565b6000866001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bb991906200703f565b90506000876001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bfc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c2291906200703f565b905062001c31828b8862003bf6565b62001c3e818b8762003bf6565b600062001c4c85856200109e565b905060008167ffffffffffffffff81111562001c6c5762001c6c62006e77565b60405190808252806020026020018201604052801562001c96578160200160208202803683370190505b50905060005b8281101562001d9557600062001cb48b838962001a0d565b905060008b62ffffff168262ffffff161015801562001cd6575060008960ff16115b62001ce357600062001d04565b62001d0462001cfe60ff8b16670de0b6b3a764000062007807565b620044b4565b905060008c62ffffff168362ffffff161115801562001d26575060008960ff16115b62001d3357600062001d4e565b62001d4e62001cfe60ff8b16670de0b6b3a764000062007807565b905062001d5d828285620044e0565b85858151811062001d725762001d72620076cb565b6020026020010181815250505050508062001d8d906200781e565b905062001c9c565b506040516303223eab60e11b81526001600160a01b038d166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018c90528716925063a9059cbb91506044016020604051808303816000875af115801562001e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7b91906200784b565b5060405163a9059cbb60e01b81526001600160a01b038b811660048301526024820189905284169063a9059cbb906044016020604051808303816000875af115801562001ecc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ef291906200784b565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001f5257600080fd5b505af115801562001f67573d6000803e3d6000fd5b50505050896001600160a01b031663383d15c58c838f6040518463ffffffff1660e01b815260040162001f9d9392919062007869565b6000604051808303816000875af115801562001fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fe79190810190620078cf565b505050505050505050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000fd15783829060005260206000200180546200203e9062007720565b80601f01602080910402602001604051908101604052809291908181526020018280546200206c9062007720565b8015620020bd5780601f106200209157610100808354040283529160200191620020bd565b820191906000526020600020905b8154815290600101906020018083116200209f57829003601f168201915b5050505050815260200190600101906200201c565b60248054604051632aaf12cf60e21b815261ffff841660048201526000926001600160a01b039092169163aabc4b3c910161010060405180830381865afa15801562002122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002148919062007923565b9998505050505050505050565b60075460009060ff16156200216e575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620021e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200220d919062006fb0565b1415905090565b6060601380548060200260200160405190810160405280929190818152602001828054801562000e82576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000e63575050505050905090565b670de0b6b3a7640000831115620022d45760405162461bcd60e51b815260206004820152601860248201527f50657263656e7420746f206275726e20746f6f2068696768000000000000000060448201526064015b60405180910390fd5b6000620022e283836200109e565b905060008167ffffffffffffffff81111562002302576200230262006e77565b6040519080825280602002602001820160405280156200232c578160200160208202803683370190505b50905060008267ffffffffffffffff8111156200234d576200234d62006e77565b60405190808252806020026020018201604052801562002377578160200160208202803683370190505b50905060005b83811015620024855760006200239589838862001a0d565b604051627eeac760e11b81526001600160a01b038e8116600483015262ffffff831660248301529192506000918c169062fdd58e90604401602060405180830381865afa158015620023eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002411919062006fb0565b90508162ffffff168584815181106200242e576200242e620076cb565b60209081029190910101526200244e818a670de0b6b3a76400006200451e565b848481518110620024635762002463620076cb565b6020026020010181815250505050806200247d906200781e565b90506200237d565b5060405163ca669fa760e01b81526001600160a01b038b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620024dc57600080fd5b505af1158015620024f1573d6000803e3d6000fd5b50506040516364c9cfaf60e11b81526001600160a01b038b16925063c9939f5e915062002529908d908d90879087906004016200797d565b6000604051808303816000875af115801562002549573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025739190810190620077b8565b5050505050505050505050565b601c80546001600160a01b03191673b31f66aa3c1e785363f0875a1b74e27b85fd66c79081179091553b6000036200268257601c54604051737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b4d6c782916001600160a01b0390911690620025eb9062006919565b604051809103906000f08015801562002608573d6000803e3d6000fd5b506001600160a01b0316803b806020016040519081016040528181526000908060200190933c6040518363ffffffff1660e01b81526004016200264d929190620079bf565b600060405180830381600087803b1580156200266857600080fd5b505af11580156200267d573d6000803e3d6000fd5b505050505b6006604051620026929062006927565b60ff9091168152602001604051809103906000f080158015620026b9573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b0392909216919091179055604051600690620026eb9062006927565b60ff9091168152602001604051809103906000f08015801562002712573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051600890620027449062006927565b60ff9091168152602001604051809103906000f0801580156200276b573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03929092169190911790556040516012906200279d9062006927565b60ff9091168152602001604051809103906000f080158015620027c4573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392909216919091179055604051601290620027f69062006927565b60ff9091168152602001604051809103906000f0801580156200281d573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03929092169190911790556040516012906200284f9062006927565b60ff9091168152602001604051809103906000f08015801562002876573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216919091179055604051620028a59062006935565b604051809103906000f080158015620028c2573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055601c54604080516318caf8e360e31b81529190921660048201526024810191909152600760448201527f776e6174697665000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b1580156200296857600080fd5b505af11580156200297d573d6000803e3d6000fd5b5050601d54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637573646360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620029fa57600080fd5b505af115801562002a0f573d6000803e3d6000fd5b5050601e54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152631d5cd91d60e21b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002a8c57600080fd5b505af115801562002aa1573d6000803e3d6000fd5b5050601f54604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152637762746360e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002b1e57600080fd5b505af115801562002b33573d6000803e3d6000fd5b5050602254604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152630eecae8d60e31b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002bb057600080fd5b505af115801562002bc5573d6000803e3d6000fd5b5050602054604080516318caf8e360e31b81526001600160a01b0390921660048084019190915260248301919091526044820152636c696e6b60e01b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002c4257600080fd5b505af115801562002c57573d6000803e3d6000fd5b5050602154604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600360448201526231373160e91b6064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002cce57600080fd5b505af115801562002ce3573d6000803e3d6000fd5b5050602354604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f746178546f6b656e0000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b15801562002d7457600080fd5b505af115801562002d89573d6000803e3d6000fd5b5050602a80546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d417909155602b8054909116739ad6c38be94206ca50bb0d90783181662f0cfa1017905550506040517f00000000000000000000000000000000000000000000000000000000000000009081906602d79883d200009062002e109062006943565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f08015801562002e4b573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216918217905560405162002e799062006951565b6001600160a01b039091168152602001604051809103906000f08015801562002ea6573d6000803e3d6000fd5b50602980546001600160a01b0319166001600160a01b039283169081179091556024805460405163b038478160e01b815260048101939093529092169163b03847819101600060405180830381600087803b15801562002f0557600080fd5b505af115801562002f1a573d6000803e3d6000fd5b5050505062002f286200454c565b62002f34600a620048f1565b602454602b54601c546040516001600160a01b0393841693928316929091169062002f5f906200695f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562002f9c573d6000803e3d6000fd5b50602580546001600160a01b0319166001600160a01b03928316908117909155602b546024546040519184169316919062002fd7906200696d565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562003014573d6000803e3d6000fd5b50602880546001600160a01b0319166001600160a01b03928316179055602554604080516318caf8e360e31b81529190921660048201526024810191909152600660448201527f726f7574657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890608401600060405180830381600087803b158015620030ba57600080fd5b505af1158015620030cf573d6000803e3d6000fd5b5050602854604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600660448201527f71756f74657200000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200316057600080fd5b505af115801562003175573d6000803e3d6000fd5b505060248054604080516318caf8e360e31b81526001600160a01b03909216600483015291810191909152600760448201527f666163746f7279000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200320957600080fd5b505af11580156200321e573d6000803e3d6000fd5b5050602954604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152601260448201527f70616972496d706c656d656e746174696f6e00000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620032af57600080fd5b505af1158015620032c4573d6000803e3d6000fd5b5050602a54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600860448201527f726f7574657256310000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b1580156200335557600080fd5b505af11580156200336a573d6000803e3d6000fd5b5050602b54604080516318caf8e360e31b81526001600160a01b0390921660048301526024820152600960448201527f666163746f7279563100000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c7189150608401600060405180830381600087803b158015620033fb57600080fd5b505af115801562003410573d6000803e3d6000fd5b5050601c54602a5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200346b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200349191906200784b565b50601d54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620034e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200350f91906200784b565b50601e54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003567573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200358d91906200784b565b50601f54602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620035e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200360b91906200784b565b50602254602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200368991906200784b565b50602054602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620036e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370791906200784b565b50602154602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200375f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200378591906200784b565b50602354602a5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620037dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200380391906200784b565b50601c5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200385b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200388191906200784b565b50601d5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620038d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038ff91906200784b565b50601e5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003957573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200397d91906200784b565b50601f5460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620039d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039fb91906200784b565b5060225460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003a53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a7991906200784b565b5060205460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003ad1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003af791906200784b565b5060215460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003b4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b7591906200784b565b5060235460255460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562003bcd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bf391906200784b565b50565b62003c05838383600062004998565b505050565b62003ca8604051806101e0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b60008060008062003cbc8989898962004b9b565b9350935093509350604051806101e001604052808c6001600160a01b031681526020018b6001600160a01b03168152602001600a61ffff1681526020018281526020018a815260200160008152602001600081526020018962ffffff1681526020016000815260200162003d3a8a8762004eaa90919063ffffffff16565b815260208101859052604081018490526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660608201819052608082015260a00162003d91426103e862006ffa565b90529b9a5050505050505050505050565b62003dc760405180606001604052806060815260200160608152602001606081525090565b604080516003808252608082019092529060208201606080368337505050815260408051600380825260808201909252906020820160608036833701905050602082015260408051600480825260a08201909252908160200160208202803683375050506040820152601e546001600160a01b0390811690841603620040985782816040015160008151811062003e625762003e62620076cb565b6001600160a01b039283166020918202929092010152601d5460408301518051919092169190600190811062003e9c5762003e9c620076cb565b6001600160a01b039283166020918202929092010152601c5460408301518051919092169190600290811062003ed65762003ed6620076cb565b60200260200101906001600160a01b031690816001600160a01b03168152505081816040015160038151811062003f115762003f11620076cb565b6001600160a01b039092166020928302919091019091015280518051600a919060009062003f435762003f43620076cb565b602090810291909101015280518051600a9190600190811062003f6a5762003f6a620076cb565b602090810291909101015280518051600a9190600290811062003f915762003f91620076cb565b6020026020010181815250506001816020015160008151811062003fb95762003fb9620076cb565b6020026020010190600181111562003fd55762003fd5620075db565b9081600181111562003feb5762003feb620075db565b81525050600181602001516001815181106200400b576200400b620076cb565b60200260200101906001811115620040275762004027620075db565b908160018111156200403d576200403d620075db565b81525050600181602001516002815181106200405d576200405d620076cb565b60200260200101906001811115620040795762004079620075db565b908160018111156200408f576200408f620075db565b905250620010ed565b828160400151600081518110620040b357620040b3620076cb565b6001600160a01b039283166020918202929092010152601c54604083015180519190921691906001908110620040ed57620040ed620076cb565b6001600160a01b039283166020918202929092010152601d54604083015180519190921691906002908110620041275762004127620076cb565b60200260200101906001600160a01b031690816001600160a01b031681525050818160400151600381518110620041625762004162620076cb565b6001600160a01b039092166020928302919091019091015280518051600a9190600090620041945762004194620076cb565b602090810291909101015280518051600a91906001908110620041bb57620041bb620076cb565b602090810291909101015280518051600a91906002908110620041e257620041e2620076cb565b602002602001018181525050600181602001516000815181106200420a576200420a620076cb565b60200260200101906001811115620042265762004226620075db565b908160018111156200423c576200423c620075db565b81525050600181602001516001815181106200425c576200425c620076cb565b60200260200101906001811115620042785762004278620075db565b908160018111156200428e576200428e620075db565b8152505060018160200151600281518110620042ae57620042ae620076cb565b60200260200101906001811115620042ca57620042ca620075db565b90816001811115620042e057620042e0620075db565b90525092915050565b6060815167ffffffffffffffff81111562004308576200430862006e77565b60405190808252806020026020018201604052801562004332578160200160208202803683370190505b50905060005b8251811015620043a157828181518110620043575762004357620076cb565b6020026020010151828281518110620043745762004374620076cb565b6001600160a01b03909216602092830291909101909101528062004398816200781e565b91505062004338565b50919050565b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390620043e6908790879087908790600401620079e3565b60006040518083038186803b158015620043ff57600080fd5b505afa15801562000ac4573d6000803e3d6000fd5b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590620044519086908690869060040162007a0a565b60006040518083038186803b1580156200446a57600080fd5b505afa1580156200447f573d6000803e3d6000fd5b50505050505050565b8062ffffff81168114620044af57604051639b63641560e01b815260040160405180910390fd5b919050565b8067ffffffffffffffff81168114620044af5760405163cc21feb960e01b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681175b949350505050565b60008060006200452f868662004f6e565b9150915062004542868686858562004f8d565b9695505050505050565b601c546001600160a01b031615620045c15760248054601c54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620045a757600080fd5b505af1158015620045bc573d6000803e3d6000fd5b505050505b601d546001600160a01b031615620046365760248054601d54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200461c57600080fd5b505af115801562004631573d6000803e3d6000fd5b505050505b601e546001600160a01b031615620046ab5760248054601e54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200469157600080fd5b505af1158015620046a6573d6000803e3d6000fd5b505050505b601f546001600160a01b031615620047205760248054601f54604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200470657600080fd5b505af11580156200471b573d6000803e3d6000fd5b505050505b6022546001600160a01b031615620047955760248054602254604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200477b57600080fd5b505af115801562004790573d6000803e3d6000fd5b505050505b6020546001600160a01b0316156200480a5760248054602054604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620047f057600080fd5b505af115801562004805573d6000803e3d6000fd5b505050505b6021546001600160a01b0316156200487f5760248054602154604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b1580156200486557600080fd5b505af11580156200487a573d6000803e3d6000fd5b505050505b6023546001600160a01b031615620048ef5760248054602354604051635a44092360e01b81526001600160a01b039182166004820152911691635a4409239101600060405180830381600087803b158015620048da57600080fd5b505af115801562000e22573d6000803e3d6000fd5b565b6024805460405163379ee80360e01b815261ffff84166004820152611388928101839052601e604482015261025860648201526084810192909252619c4060a48301526103e860c48301526205573060e483015260006101048301526001600160a01b03169063379ee8039061012401600060405180830381600087803b1580156200497c57600080fd5b505af115801562004991573d6000803e3d6000fd5b5050505050565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092871691620049ee9162007a2b565b600060405180830381855afa9150503d806000811462004a2b576040519150601f19603f3d011682016040523d82523d6000602084013e62004a30565b606091505b5091505060008180602001905181019062004a4c919062006fb0565b905062004a868462004a7f8762004a786370a0823160e01b62004a71600c8d6200503f565b9062005067565b9062005085565b90620050ae565b821562004b935760408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b17905290516000916001600160a01b0389169162004ad1919062007a2b565b600060405180830381855afa9150503d806000811462004b0e576040519150601f19603f3d011682016040523d82523d6000602084013e62004b13565b606091505b5091505060008180602001905181019062004b2f919062006fb0565b90508286101562004b5a5762004b468684620077f1565b62004b529082620077f1565b905062004b75565b62004b668387620077f1565b62004b72908262006ffa565b90505b62000ac48162004a7f6318160ddd60e01b62004a71600c8d6200503f565b505050505050565b60608080600062004bae60028762007a49565b62ffffff1660000362004c045760405162461bcd60e51b815260206004820181905260248201527f506c732070757420616e20756e6576656e206e756d626572206f662062696e736044820152606401620022cb565b600062004c1360028862007a6e565b90508662ffffff1667ffffffffffffffff81111562004c365762004c3662006e77565b60405190808252806020026020018201604052801562004c60578160200160208202803683370190505b5094508662ffffff1667ffffffffffffffff81111562004c845762004c8462006e77565b60405190808252806020026020018201604052801562004cae578160200160208202803683370190505b5093508662ffffff1667ffffffffffffffff81111562004cd25762004cd262006e77565b60405190808252806020026020018201604052801562004cfc578160200160208202803683370190505b509250600062004d0e82600162007a87565b62004d279062ffffff16670de0b6b3a764000062007807565b9050600062004d3883600162007a87565b62004d499062ffffff168c62007807565b905060005b8962ffffff1681101562004e9b5762004d6989600162007a87565b62004d7a9062ffffff168262006fe0565b62004d878a600162007a87565b62004d93908662007aa6565b62004d9f908d62007ad0565b62ffffff1662004db0919062006ffa565b88828151811062004dc55762004dc5620076cb565b6020026020010181815250508362ffffff16811162004e01578286828151811062004df45762004df4620076cb565b6020026020010181815250505b8362ffffff16811062004e86578287828151811062004e245762004e24620076cb565b6020026020010181815250506000821162004e4157600062004e77565b62004e77608062004e6e8a848151811062004e605762004e60620076cb565b6020026020010151620050be565b849190620050cd565b62004e83908662006ffa565b94505b8062004e92816200781e565b91505062004d4e565b50505050945094509450949050565b6060825167ffffffffffffffff81111562004ec95762004ec962006e77565b60405190808252806020026020018201604052801562004ef3578160200160208202803683370190505b50905060005b835181101562004f67578262ffffff1684828151811062004f1e5762004f1e620076cb565b602002602001015162004f32919062007aef565b82828151811062004f475762004f47620076cb565b60209081029190910101528062004f5e816200781e565b91505062004ef9565b5092915050565b6000806000198385098385029250828110838203039150509250929050565b60008160000362004fb35783838162004faa5762004faa620076e1565b04905062001a5f565b83821062004fd4576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6005820180546001600160a01b0319166001600160a01b0383161790556000825b9392505050565b60038201805463ffffffff191660e083901c17905560008262005060565b6002820180546001810182556000918252602082206001600160a01b0384169101558262005060565b620050ba8282620050f9565b5050565b6000620010ed82600a62005510565b600060ff831684811b9061ffff6101008290031686901c90620045429087906001901b86858562004f8d565b600582015460038301546004840154600285018054604080516020808402820181019092528281526001600160a01b039096169560e09590951b94600093909290918301828280156200516c57602002820191906000526020600020905b81548152602001906001019080831162005157575b5050505050905060008362005181836200554d565b6040516020016200519492919062007b12565b60408051601f198184030181528282526001600160a01b038816600090815260018b0160209081528382206001600160e01b03198a168352815292812091945090929091620051e891869188910162007b45565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1662005223576200522187620055fa565b505b6001600160a01b0385166000908152602088815260408083206001600160e01b03198816845282528083209051909183916200526491879189910162007b45565b6040516020818303038152906040528051906020012081526020019081526020016000205460001b9050600080876001600160a01b031684604051620052ab919062007a2b565b600060405180830381855afa9150503d8060008114620052e8576040519150601f19603f3d011682016040523d82523d6000602084013e620052ed565b606091505b5091506200530a9050816200530488602062006fe0565b62005607565b604051630667f9d760e41b81526001600160a01b038a1660048201526024810185905290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562005371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005397919062006fb0565b90508082146200544e5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620022cb565b6040516370ca10bb60e01b81526001600160a01b038916600482015260248101849052604481018a9052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb90606401600060405180830381600087803b158015620054b257600080fd5b505af1158015620054c7573d6000803e3d6000fd5b50505060058b0180546001600160a01b03191690555060038a01805463ffffffff19169055620054fc60028b0160006200697b565b896004016000905550505050505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff190162001a5f8282620056a9565b606060008251602062005561919062006fe0565b67ffffffffffffffff8111156200557c576200557c62006e77565b6040519080825280601f01601f191660200182016040528015620055a7576020820181803683370190505b50905060005b835181101562004f67576000848281518110620055ce57620055ce620076cb565b602002602001015190508082602002602001840152508080620055f1906200781e565b915050620055ad565b6000620010ed8262005928565b600080600060208551116200561e57845162005621565b60205b905060005b818110156200569f576200563c81600862006fe0565b8662005649838862006ffa565b815181106200565c576200565c620076cb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062005696816200781e565b91505062005626565b5090949350505050565b600080600083600003620056c75750600160801b9150620010ed9050565b50826000811215620056da579015906000035b62100000811015620058e057600160801b9250846001600160801b038111156200570657911591600019045b6001821615620057185792830260801c925b800260801c60028216156200572f5792830260801c925b800260801c6004821615620057465792830260801c925b800260801c60088216156200575d5792830260801c925b800260801c6010821615620057745792830260801c925b800260801c60208216156200578b5792830260801c925b800260801c6040821615620057a25792830260801c925b8002608090811c90821615620057ba5792830260801c925b800260801c610100821615620057d25792830260801c925b800260801c610200821615620057ea5792830260801c925b800260801c610400821615620058025792830260801c925b800260801c6108008216156200581a5792830260801c925b800260801c611000821615620058325792830260801c925b800260801c6120008216156200584a5792830260801c925b800260801c614000821615620058625792830260801c925b800260801c6180008216156200587a5792830260801c925b800260801c62010000821615620058935792830260801c925b800260801c62020000821615620058ac5792830260801c925b800260801c62040000821615620058c55792830260801c925b800260801c62080000821615620058de5792830260801c925b505b826000036200590d57604051631dba598d60e11b81526004810186905260248101859052604401620022cb565b816200591a578262001a5f565b62001a5f8360001962007807565b600581015460038201546004830154600284018054604080516020808402820181019092528281526000966001600160a01b03169560e01b9493879391929091908301828280156200599a57602002820191906000526020600020905b81548152602001906001019080831162005985575b5050506001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a1684528252808320905195965094919350620059e69250859187910162007b45565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff161562005a85576001600160a01b0384166000908152602087815260408083206001600160e01b0319871684528252808320905190929162005a5591859187910162007b45565b60405160208183030381529060405280519060200120815260200190815260200160002054945050505050919050565b60008362005a9383620067d4565b60405160200162005aa692919062007b12565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663266cf1096040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005b1657600080fd5b505af115801562005b2b573d6000803e3d6000fd5b50505050600080866001600160a01b03168360405162005b4c919062007a2b565b600060405180830381855afa9150503d806000811462005b89576040519150601f19603f3d011682016040523d82523d6000602084013e62005b8e565b606091505b50915062005bab90508162005ba587602062006fe0565b62006881565b6040516365bc948160e01b81526001600160a01b038916600482015290925060009150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024016000604051808303816000875af115801562005c0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005c37919081019062007b81565b509050805160010362005fdb5760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d70898460008151811062005c8f5762005c8f620076cb565b60200260200101516040518363ffffffff1660e01b815260040162005cc99291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562005ce7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005d0d919062006fb0565b90508062005d78577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888360008151811062005d4d5762005d4d620076cb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b80831462005e2d5760405162461bcd60e51b815260206004820152606f60248201527f73746453746f726167652066696e642853746453746f72616765293a2050616360448201527f6b656420736c6f742e205468697320776f756c642063617573652064616e676560648201527f726f7573206f76657277726974696e6720616e642063757272656e746c79206960848201526e39b713ba1039bab83837b93a32b21760891b60a482015260c401620022cb565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8888878960405160200162005e6592919062007b45565b604051602081830303815290604052805190602001208560008151811062005e915762005e91620076cb565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a18160008151811062005eeb5762005eeb620076cb565b6020908102919091018101516001600160a01b038a1660009081528c835260408082206001600160e01b03198c168352845280822090519293909262005f36918a918c910162007b45565b60408051601f1981840301815291815281516020928301208352828201939093529082016000908120939093556001600160a01b038b16835260018d810182528284206001600160e01b03198c1685528252828420925190939162005fa0918a918c910162007b45565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555062006649565b600181511115620065d85760005b8151811015620065d15760007f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663667f9d708a8585815181106200603d576200603d620076cb565b60200260200101516040518363ffffffff1660e01b8152600401620060779291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562006095573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620060bb919062006fb0565b90508062006125577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a589848481518110620060fa57620060fa620076cb565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b838114620061345750620065bc565b8251811990737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb908c908790879081106200616c576200616c620076cb565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101849052606401600060405180830381600087803b158015620061c557600080fd5b505af1158015620061da573d6000803e3d6000fd5b50505050600060608b6001600160a01b031688604051620061fc919062007a2b565b600060405180830381855afa9150503d806000811462006239576040519150601f19603f3d011682016040523d82523d6000602084013e6200623e565b606091505b509092509050620062568162005ba58c602062006fe0565b9650508080156200626657508186145b15620064fe577f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620062a492919062007b45565b60405160208183030381529060405280519060200120888881518110620062cf57620062cf620076cb565b602090810291909101810151604080516001600160a01b0390961686526001600160e01b03199094169185019190915291830152606082015260800160405180910390a1848481518110620063285762006328620076cb565b6020908102919091018101516001600160a01b038d1660009081528f835260408082206001600160e01b03198f168352845280822090519293909262006373918d918f910162007b45565b6040516020818303038152906040528051906020012081526020019081526020016000208190555060018d60010160008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160e01b0319166001600160e01b031916815260200190815260200160002060008a8c6040516020016200640092919062007b45565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620064835762006483620076cb565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b158015620064dc57600080fd5b505af1158015620064f1573d6000803e3d6000fd5b50505050505050620065d1565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166370ca10bb8c878781518110620065465762006546620076cb565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101869052606401600060405180830381600087803b1580156200659f57600080fd5b505af1158015620065b4573d6000803e3d6000fd5b505050505050505b80620065c8816200781e565b91505062005fe9565b5062006649565b6040805162461bcd60e51b81526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e6064820152608401620022cb565b6001600160a01b038716600090815260018a01602090815260408083206001600160e01b03198a168452825280832090519092916200668d9188918a910162007b45565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff166200672a5760405162461bcd60e51b815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e00000000000000000000000000000000006064820152608401620022cb565b6005890180546001600160a01b031916905560038901805463ffffffff191690556200675b60028a0160006200697b565b600060048a018190556001600160a01b038816815260208a815260408083206001600160e01b03198a16845282528083209051909291620067a19188918a910162007b45565b60405160208183030381529060405280519060200120815260200190815260200160002054975050505050505050919050565b6060600082516020620067e8919062006fe0565b67ffffffffffffffff81111562006803576200680362006e77565b6040519080825280601f01601f1916602001820160405280156200682e576020820181803683370190505b50905060005b835181101562004f67576000848281518110620068555762006855620076cb565b60200260200101519050808260200260200184015250808062006878906200781e565b91505062006834565b60008060006020855111620068985784516200689b565b60205b905060005b818110156200569f57620068b681600862006fe0565b86620068c3838862006ffa565b81518110620068d657620068d6620076cb565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c92909217918062006910816200781e565b915050620068a0565b610b088062007bed83390190565b610bfd80620086f583390190565b610c1880620092f283390190565b6131998062009f0a83390190565b61615c806200d0a383390190565b614c8080620131ff83390190565b612c138062017e7f83390190565b508054600082559060005260206000209081019062003bf391905b80821115620069ac576000815560010162006996565b5090565b600060208284031215620069c357600080fd5b81356001600160e01b0319811681146200506057600080fd5b600081518084526020808501945080840160005b8381101562006a175781516001600160a01b031687529582019590820190600101620069f0565b509495945050505050565b602081526000620050606020830184620069dc565b60005b8381101562006a5457818101518382015260200162006a3a565b50506000910152565b6000815180845262006a7781602086016020860162006a37565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006b4157603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006b2a57605f1989850301835262006b1784865162006a5d565b948e01949350918d019160010162006af8565b505050978a01979450509188019160010162006ab2565b50919a9950505050505050505050565b803560ff81168114620044af57600080fd5b6000806040838503121562006b7757600080fd5b62006b828362006b51565b915062006b926020840162006b51565b90509250929050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562006c4357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562006c2d5783516001600160e01b0319168252928b019260019290920191908b019062006c01565b50978a0197955050509187019160010162006bc3565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562006cab57603f1988860301845262006c9885835162006a5d565b9450928501929085019060010162006c79565b5092979650505050505050565b803562ffffff81168114620044af57600080fd5b60008060006060848603121562006ce257600080fd5b62006ced8462006cb8565b92506020840135915062006d046040850162006b51565b90509250925092565b6001600160a01b038116811462003bf357600080fd5b600080600080600080600080610100898b03121562006d4157600080fd5b883562006d4e8162006d0d565b9750602089013562006d608162006d0d565b9650604089013562006d728162006d0d565b955062006d8260608a0162006cb8565b94506080890135935060a0890135925062006da060c08a0162006b51565b915062006db060e08a0162006b51565b90509295985092959890939650565b60006020828403121562006dd257600080fd5b813561ffff811681146200506057600080fd5b600080600080600080600060e0888a03121562006e0157600080fd5b873562006e0e8162006d0d565b9650602088013562006e208162006d0d565b9550604088013562006e328162006d0d565b945062006e426060890162006cb8565b93506080880135925062006e5960a0890162006b51565b915062006e6960c0890162006b51565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562006eb35762006eb362006e77565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562006ee55762006ee562006e77565b604052919050565b60006020828403121562006f0057600080fd5b815167ffffffffffffffff8082111562006f1957600080fd5b818401915084601f83011262006f2e57600080fd5b81518181111562006f435762006f4362006e77565b62006f58601f8201601f191660200162006eb9565b915080825285602082850101111562006f7057600080fd5b62006f8381602084016020860162006a37565b50949350505050565b60408152600062006fa1604083018562006a5d565b90508260208301529392505050565b60006020828403121562006fc357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620010ed57620010ed62006fca565b80820180821115620010ed57620010ed62006fca565b6000806000606084860312156200702657600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156200705257600080fd5b8151620050608162006d0d565b600081518084526020808501945080840160005b8381101562006a175781518752958201959082019060010162007073565b60208152620070ac6020820183516001600160a01b03169052565b60006020830151620070c960408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526200713a6102008601846200705f565b9250808601519050601f196101608187860301818801526200715d85846200705f565b9450808801519250506101808187860301818801526200717e85846200705f565b945080880151925050506101a0620071a0818701836001600160a01b03169052565b86015190506101c0620071bd868201836001600160a01b03169052565b959095015193019290925250919050565b600067ffffffffffffffff821115620071eb57620071eb62006e77565b5060051b60200190565b600082601f8301126200720757600080fd5b81516020620072206200721a83620071ce565b62006eb9565b82815260059290921b840181019181810190868411156200724057600080fd5b8286015b848110156200725d578051835291830191830162007244565b509695505050505050565b60008060008060008060c087890312156200728257600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff80821115620072b757600080fd5b620072c58a838b01620071f5565b935060a0890151915080821115620072dc57600080fd5b50620072eb89828a01620071f5565b9150509295509295509295565b6040815260006200730d6040830185620069dc565b90506001600160801b03831660208301529392505050565b600082601f8301126200733757600080fd5b815160206200734a6200721a83620071ce565b82815260059290921b840181019181810190868411156200736a57600080fd5b8286015b848110156200725d578051620073848162006d0d565b83529183019183016200736e565b600082601f830112620073a457600080fd5b81516020620073b76200721a83620071ce565b82815260059290921b84018101918181019086841115620073d757600080fd5b8286015b848110156200725d57805160028110620073f55760008081fd5b8352918301918301620073db565b600082601f8301126200741557600080fd5b81516020620074286200721a83620071ce565b82815260059290921b840181019181810190868411156200744857600080fd5b8286015b848110156200725d5780516001600160801b03811681146200746e5760008081fd5b83529183019183016200744c565b6000602082840312156200748f57600080fd5b815167ffffffffffffffff80821115620074a857600080fd5b9083019060e08286031215620074bd57600080fd5b620074c762006e8d565b825182811115620074d757600080fd5b620074e58782860162007325565b825250602083015182811115620074fb57600080fd5b620075098782860162007325565b6020830152506040830151828111156200752257600080fd5b6200753087828601620071f5565b6040830152506060830151828111156200754957600080fd5b620075578782860162007392565b6060830152506080830151828111156200757057600080fd5b6200757e8782860162007403565b60808301525060a0830151828111156200759757600080fd5b620075a58782860162007403565b60a08301525060c083015182811115620075be57600080fd5b620075cc8782860162007403565b60c08301525095945050505050565b634e487b7160e01b600052602160045260246000fd5b60008151606084526200760860608501826200705f565b6020848101518683038783015280518084529082019350909160009190830190825b8181101562007665578551600281106200765257634e487b7160e01b85526021600452602485fd5b835294840194918401916001016200762a565b5050604086015193508681036040880152620076828185620069dc565b979650505050505050565b85815284602082015260a060408201526000620076ae60a0830186620075f1565b6001600160a01b0394909416606083015250608001529392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60006001600160801b0380841680620077145762007714620076e1565b92169190910492915050565b600181811c908216806200773557607f821691505b602082108103620043a157634e487b7160e01b600052602260045260246000fd5b60ff8181168382160190811115620010ed57620010ed62006fca565b60ff8281168282160390811115620010ed57620010ed62006fca565b8581526001600160801b038516602082015260a060408201526000620076ae60a0830186620075f1565b600060208284031215620077cb57600080fd5b815167ffffffffffffffff811115620077e357600080fd5b6200451684828501620071f5565b81810381811115620010ed57620010ed62006fca565b600082620078195762007819620076e1565b500490565b60006001820162007833576200783362006fca565b5060010190565b80518015158114620044af57600080fd5b6000602082840312156200785e57600080fd5b62005060826200783a565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015620078b65785518352948301949183019160010162007898565b5050809450505080851660408501525050949350505050565b600080600060608486031215620078e557600080fd5b8351925060208401519150604084015167ffffffffffffffff8111156200790b57600080fd5b6200791986828701620071f5565b9150509250925092565b600080600080600080600080610100898b0312156200794157600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915062006db060e08a016200783a565b60006001600160a01b03808716835280861660208401525060806040830152620079ab60808301856200705f565b82810360608401526200768281856200705f565b6001600160a01b038316815260406020820152600062004516604083018462006a5d565b84815283602082015282604082015260806060820152600062004542608083018462006a5d565b83815282602082015260606040820152600062001a5f606083018462006a5d565b6000825162007a3f81846020870162006a37565b9190910192915050565b600062ffffff8084168062007a625762007a62620076e1565b92169190910692915050565b600062ffffff80841680620077145762007714620076e1565b62ffffff81811683821601908082111562004f675762004f6762006fca565b62ffffff81811683821602808216919082811462007ac85762007ac862006fca565b505092915050565b62ffffff82811682821603908082111562004f675762004f6762006fca565b818103600083128015838313168383128216171562004f675762004f6762006fca565b6001600160e01b031983168152815160009062007b3781600485016020870162006a37565b919091016004019392505050565b825160009082906020808701845b8381101562007b715781518552938201939082019060010162007b53565b5050948252509092019392505050565b6000806040838503121562007b9557600080fd5b825167ffffffffffffffff8082111562007bae57600080fd5b62007bbc86838701620071f5565b9350602085015191508082111562007bd357600080fd5b5062007be285828601620071f5565b915050925092905056fe608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c6343000814003360a06040523480156200001157600080fd5b5060405162000bfd38038062000bfd833981016040819052620000349162000136565b336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200008b919062000207565b5060046200009a828262000207565b5050506001600160a01b038116620000cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d781620000e4565b5060ff16608052620002d3565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200014957600080fd5b815160ff811681146200015b57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018d57607f821691505b602082108103620001ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620001dd5750805b601f850160051c820191505b81811015620001fe57828155600101620001e9565b5050505b505050565b81516001600160401b0381111562000223576200022362000162565b6200023b8162000234845462000178565b84620001b4565b602080601f8311600181146200027357600084156200025a5750858301515b600019600386901b1c1916600185901b178555620001fe565b600085815260208120601f198616915b82811015620002a45788860151825594840194600190910190840162000283565b5085821015620002c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805161090e620002ef6000396000610151015261090e6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610758565b60405180910390f35b6101156101103660046107c2565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046107ec565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107c2565b610313565b005b61012961019e366004610828565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107c2565b61034c565b61012961020536600461084a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610828565b61035a565b6060600380546102529061087d565b80601f016020809104026020016040519081016040528092919081815260200182805461027e9061087d565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b6060600480546102529061087d565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b6001600160a01b03831661065957806002600082825461064e91906108b7565b909155506106cb9050565b6001600160a01b038316600090815260208190526040902054818110156106ac5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106e757600280548290039055610706565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074b91815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561078557858101830151858201604001528201610769565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107bd57600080fd5b919050565b600080604083850312156107d557600080fd5b6107de836107a6565b946020939093013593505050565b60008060006060848603121561080157600080fd5b61080a846107a6565b9250610818602085016107a6565b9150604084013590509250925092565b60006020828403121561083a57600080fd5b610843826107a6565b9392505050565b6000806040838503121561085d57600080fd5b610866836107a6565b9150610874602084016107a6565b90509250929050565b600181811c9082168061089157607f821691505b6020821081036108b157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e957634e487b7160e01b600052601160045260246000fdfea264697066735822122060af1bf6f178dcc33e2d7624fae6c8097c290090aaff055f985e68230f892cec64736f6c6343000814003360a06040523480156200001157600080fd5b506012336040518060400160405280600a8152602001694552433230204d6f636b60b01b8152506040518060400160405280600981526020016845524332304d6f636b60b81b81525081600390816200006b9190620001bb565b5060046200007a8282620001bb565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b781620000c4565b5060ff1660805262000287565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014157607f821691505b6020821081036200016257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b657600081815260208120601f850160051c81016020861015620001915750805b601f850160051c820191505b81811015620001b2578281556001016200019d565b5050505b505050565b81516001600160401b03811115620001d757620001d762000116565b620001ef81620001e884546200012c565b8462000168565b602080601f8311600181146200022757600084156200020e5750858301515b600019600386901b1c1916600185901b178555620001b2565b600085815260208120601f198616915b82811015620002585788860151825594840194600190910190840162000237565b5085821015620002775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610975620002a3600039600061015101526109756000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101dc578063a9059cbb146101e4578063dd62ed3e146101f7578063f2fde38b1461023057600080fd5b806370a0823114610190578063715018a6146101b95780638da5cb5b146101c157600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461017b57600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610243565b6040516100f99190610782565b60405180910390f35b6101156101103660046107ec565b6102d5565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610816565b6102ef565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100f9565b61018e6101893660046107ec565b610313565b005b61012961019e366004610852565b6001600160a01b031660009081526020819052604090205490565b61018e610329565b6005546040516001600160a01b0390911681526020016100f9565b6100ec61033d565b6101156101f23660046107ec565b61034c565b610129610205366004610874565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018e61023e366004610852565b61035a565b606060038054610252906108a7565b80601f016020809104026020016040519081016040528092919081815260200182805461027e906108a7565b80156102cb5780601f106102a0576101008083540402835291602001916102cb565b820191906000526020600020905b8154815290600101906020018083116102ae57829003601f168201915b5050505050905090565b6000336102e381858561039d565b60019150505b92915050565b6000336102fd8582856103af565b61030885858561042d565b506001949350505050565b61031b61048c565b61032582826104b9565b5050565b61033161048c565b61033b60006104ef565b565b606060048054610252906108a7565b6000336102e381858561042d565b61036261048c565b6001600160a01b03811661039157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61039a816104ef565b50565b6103aa8383836001610559565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610427578181101561041857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610388565b61042784848484036000610559565b50505050565b6001600160a01b03831661045757604051634b637e8f60e11b815260006004820152602401610388565b6001600160a01b0382166104815760405163ec442f0560e01b815260006004820152602401610388565b6103aa83838361062e565b6005546001600160a01b0316331461033b5760405163118cdaa760e01b8152336004820152602401610388565b6001600160a01b0382166104e35760405163ec442f0560e01b815260006004820152602401610388565b6103256000838361062e565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105835760405163e602df0560e01b815260006004820152602401610388565b6001600160a01b0383166105ad57604051634a1406b160e11b815260006004820152602401610388565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161062091815260200190565b60405180910390a350505050565b600061063b6002836108f7565b905061064984600083610658565b61042784846106588486610919565b6001600160a01b038316610683578060026000828254610678919061092c565b909155506106f59050565b6001600160a01b038316600090815260208190526040902054818110156106d65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610388565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661071157600280548290039055610730565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161077591815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107af57858101830151858201604001528201610793565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e757600080fd5b919050565b600080604083850312156107ff57600080fd5b610808836107d0565b946020939093013593505050565b60008060006060848603121561082b57600080fd5b610834846107d0565b9250610842602085016107d0565b9150604084013590509250925092565b60006020828403121561086457600080fd5b61086d826107d0565b9392505050565b6000806040838503121561088757600080fd5b610890836107d0565b915061089e602084016107d0565b90509250929050565b600181811c908216806108bb57607f821691505b6020821081036108db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261091457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156102e9576102e96108e1565b808201808211156102e9576102e96108e156fea2646970667358221220904429f87dd1e708f131c5e5a2ef37f95e3cc0521c43a457c11512002564e8e164736f6c6343000814003360806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c1efcd4162f4e79f0c4d01c964f86c924d781926983c4aa6a21ada13f33eb8364736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea26469706673582212207e0b9383fac9b92f2457c3b0324f7742ebb3412143e66716f62c336160773d9064736f6c63430008140033746573745f537761704578616374546f6b656e73466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a31746573745f537761704578616374546f6b656e73466f72546f6b656e73537570706f7274696e674665654f6e5472616e73666572546f6b656e733a3a32a264697066735822122046fb7b4733995f95fc9fbbf8b780d2fdbf21fa275859a32390c9b27d96a55e1a64736f6c63430008140033","sourceMap":"207:6549:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:149:93;;;;;;:::i;:::-;-1:-1:-1;;;;;;5727:41:93;-1:-1:-1;;;5727:41:93;;5626:149;;;;470:14:105;;463:22;445:41;;433:2;418:18;5626:149:93;;;;;;;;315:1954:98;;;:::i;:::-;;4067:1131;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;3360:151::-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;12046:168:93:-;;;;;;:::i;:::-;;:::i;:::-;;;4249:25:105;;;4237:2;4222:18;12046:168:93;4103:177:105;2738:178:5;;;:::i;:::-;;;;;;;:::i;2275:852:98:-;;;:::i;3133:928::-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12220:205:93:-;;;;;;:::i;:::-;;:::i;:::-;;;7355:8:105;7343:21;;;7325:40;;7313:2;7298:18;12220:205:93;7181:190:105;3069:146:5;;;:::i;10071:1171:93:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;12431:134:93:-;;;;;;:::i;:::-;;:::i;1243:204:1:-;;;:::i;2304:142:5:-;;;:::i;11248:792:93:-;;;;;;:::i;:::-;;:::i;315:1954:98:-;378:22;;-1:-1:-1;;;378:22:98;;9751:2:105;378:22:98;;;9733:21:105;9790:1;9770:18;;;9763:29;9828:11;9808:18;;;9801:39;358:19:98;;;;;;378:9;;9857:18:105;;378:22:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;378:22:98;;;;;;;;;;;;:::i;:::-;402:8;358:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;421:13;:11;:13::i;:::-;538:4;;471;;525:56;;-1:-1:-1;;;;;538:4:98;553;560:20;471:4;560:2;:20;:::i;:::-;525:4;:56::i;:::-;604:4;;591:56;;-1:-1:-1;;;;;604:4:98;619;626:20;631:15;626:2;:20;:::i;591:56::-;670:4;;657:56;;-1:-1:-1;;;;;670:4:98;685;692:20;697:15;692:2;:20;:::i;657:56::-;736:8;;723:60;;-1:-1:-1;;;;;736:8:98;755:4;762:20;767:15;762:2;:20;:::i;723:60::-;825:8;;868:4;;895;;-1:-1:-1;;;;;825:8:98;;;;:21;;868:4;;;895;914:15;;825:8;;1029:4;1048:19;:15;825:8;1048:19;:::i;:::-;825:252;;;;;;-1:-1:-1;;;;;;825:252:98;;;-1:-1:-1;;;;;12653:15:105;;;825:252:98;;;12635:34:105;12705:15;;;12685:18;;;12678:43;12737:18;;;12730:34;;;;12780:18;;;12773:34;;;;12823:19;;;12816:35;;;;12867:19;;;12860:35;12932:15;;;12911:19;;;12904:44;12964:19;;;12957:35;;;;12546:19;;825:252:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1088:7:98;;;1109:4;;1115;;1088:58;;-1:-1:-1;;;1088:58:98;;-1:-1:-1;;;;;1109:4:98;;;1088:58;;;13640:34:105;1115:4:98;;;13690:18:105;;;13683:43;;;;992:7:93;13742:18:105;;;13735:49;1147:2:93;13800:18:105;;;13793:47;1088:7:98;;-1:-1:-1;1088:20:98;;13551:19:105;;1088:58:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1177:7:98;;;1198;;1207:4;;1177:61;;-1:-1:-1;;;1177:61:98;;-1:-1:-1;;;;;1198:7:98;;;1177:61;;;13640:34:105;1207:4:98;;;13690:18:105;;;13683:43;;;;992:7:93;13742:18:105;;;13735:49;1147:2:93;13800:18:105;;;13793:47;1177:7:98;;:20;;13551:19:105;;1177:61:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1269:7:98;;;1290:4;;1296:7;;1269:61;;-1:-1:-1;;;1269:61:98;;-1:-1:-1;;;;;1290:4:98;;;1269:61;;;13640:34:105;1296:7:98;;;13690:18:105;;;13683:43;;;;992:7:93;13742:18:105;;;13735:49;1147:2:93;13800:18:105;;;13793:47;1269:7:98;;:20;;13551:19:105;;1269:61:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1361:7:98;;;1382:8;;1392:7;;1361:65;;-1:-1:-1;;;1361:65:98;;-1:-1:-1;;;;;1382:8:98;;;1361:65;;;13640:34:105;1392:7:98;;;13690:18:105;;;13683:43;;;;992:7:93;13742:18:105;;;13735:49;1147:2:93;13800:18:105;;;13793:47;1361:7:98;;:20;;13551:19:105;;1361:65:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1587:7:98;;1596:4;;1493:56;;1564:68;;-1:-1:-1;;;;;1587:7:98;;;;1596:4;1602:15;992:7:93;1627:1:98;1493:56;1564:22;:68::i;:::-;1642:6;;1675:27;;;;1642:82;;-1:-1:-1;;;1642:82:98;;1493:139;;-1:-1:-1;;;;;;1642:6:98;;;;:25;;1675:27;1642:82;;1493:139;;1642:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1642:82:98;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1780:4:98;;1786;;1757:65;;-1:-1:-1;;;;;;1780:4:98;;;;-1:-1:-1;1786:4:98;;-1:-1:-1;1792:15:98;;-1:-1:-1;992:7:93;1817:1:98;1780:4;1757:22;:65::i;:::-;1832:6;;:40;;-1:-1:-1;;;1832:40:98;;1735:87;;-1:-1:-1;;;;;;1832:6:98;;:19;;:40;;1735:87;;1832:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1832:40:98;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1928:4:98;;1934:7;;1905:68;;-1:-1:-1;;;;;;1928:4:98;;;;-1:-1:-1;1934:7:98;;-1:-1:-1;1943:15:98;;-1:-1:-1;992:7:93;1968:1:98;1928:4;1905:22;:68::i;:::-;1983:6;;2016:27;;;;1983:82;;-1:-1:-1;;;1983:82:98;;1883:90;;-1:-1:-1;;;;;;1983:6:98;;;;:25;;2016:27;1983:82;;1883:90;;1983:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1983:82:98;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2121:8:98;;2131:7;;2098:72;;-1:-1:-1;;;;;;2121:8:98;;;;-1:-1:-1;2131:7:98;;-1:-1:-1;2140:15:98;;-1:-1:-1;992:7:93;2165:1:98;2121:8;2098:22;:72::i;:::-;2180:6;;2213:27;;;;2180:82;;-1:-1:-1;;;2180:82:98;;2076:94;;-1:-1:-1;;;;;;2180:6:98;;;;:25;;2213:27;2180:82;;2076:94;;2180:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2180:82:98;;;;;;;;;;;;:::i;:::-;;;;;;;348:1921;;315:1954::o;4067:1131::-;4228:8;;4238:4;;4173;;4154:16;;4217:26;;-1:-1:-1;;;;;4228:8:98;;;;4238:4;4217:10;:26::i;:::-;4295:6;;4347:14;;;;4188:55;;-1:-1:-1;4253:27:98;;-1:-1:-1;;;;;4295:6:98;;;;:31;;4327:35;;:19;:35::i;:::-;4372:8;4295:87;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4295:87:98;;;;;;;;;;;;:::i;:::-;4413:6;;4253:129;;-1:-1:-1;4393:17:98;;-1:-1:-1;;;;;4413:6:98;:60;4487:8;4393:17;4500:4;4514;4521:19;:15;4413:6;4521:19;:::i;:::-;4413:137;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4393:157;;4561:143;4592:9;4622:1;4603:5;:13;;;4617:1;4603:16;;;;;;;;:::i;:::-;;;;;;;:20;;;;:::i;:::-;-1:-1:-1;;;;;4561:143:98;4625:4;4561:143;;;;;;;;;;;;;;;;;:17;:143::i;:::-;4757:4;;4763:8;;4746:26;;-1:-1:-1;;;;;4757:4:98;;;;4763:8;4746:10;:26::i;:::-;4790:6;;4842:14;;;;4739:33;;-1:-1:-1;;;;;;4790:6:98;;:31;;4822:35;;:19;:35::i;:::-;4867:8;4790:87;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4790:87:98;;;;;;;;;;;;:::i;:::-;4900:6;;4782:95;;-1:-1:-1;;;;;;4900:6:98;:60;4974:8;4900:6;4987:4;5001;5008:19;:15;4900:6;5008:19;:::i;:::-;4900:137;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4888:149;;5048:143;5079:9;5109:1;5090:5;:13;;;5104:1;5090:16;;;;;;;;:::i;:::-;;;;;;;:20;;;;:::i;:::-;-1:-1:-1;;;;;5048:143:98;5112:4;5048:143;;;;;;;;;;;;;;;;;:17;:143::i;:::-;4144:1054;;;;4067:1131::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;12046:168:93:-;12117:7;12152:1;12143:6;:10;;;:24;;;;;12166:1;12157:6;:10;;;12143:24;:64;;12192:15;12201:6;12192;:15;:::i;:::-;12143:64;;;12188:1;12170:15;12179:6;12170;:15;:::i;:::-;:19;;;;:::i;:::-;12136:71;;;;12046:168;;;;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2275:852:98;2407:4;;2413;;2352;;2333:16;;2396:22;;-1:-1:-1;;;;;2407:4:98;;;;2413;2396:10;:22::i;:::-;2470:6;;2522:14;;;;2367:51;;-1:-1:-1;2428:27:98;;-1:-1:-1;;;;;2470:6:98;;;;:31;;2502:35;;:19;:35::i;:::-;2547:8;2470:87;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2470:87:98;;;;;;;;;;;;:::i;:::-;2588:6;;2428:129;;-1:-1:-1;2568:17:98;;-1:-1:-1;;;;;2588:6:98;:31;2620:8;2568:17;2633:4;2647;2654:19;:15;2588:6;2654:19;:::i;:::-;2588:86;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2568:106;;2685:73;2694:9;2705:5;:13;;;2719:1;2705:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2685:73:98;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;2811:4;;2817;;2800:22;;-1:-1:-1;;;;;2811:4:98;;;;2817;2800:10;:22::i;:::-;2840:6;;2892:14;;;;2793:29;;-1:-1:-1;;;;;;2840:6:98;;:31;;2872:35;;:19;:35::i;:::-;2917:8;2840:87;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2840:87:98;;;;;;;;;;;;:::i;:::-;2950:6;;2832:95;;-1:-1:-1;;;;;;2950:6:98;:31;2982:8;2950:6;2995:4;3009;3016:19;:15;2950:6;3016:19;:::i;:::-;2950:86;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2938:98;;3047:73;3056:9;3067:5;:13;;;3081:1;3067:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3047:73:98;;;;;;;;;;;;;;;;;;:8;:73::i;3133:928::-;3266:4;;3272;;3211;;3191:17;;3255:22;;-1:-1:-1;;;;;3266:4:98;;;;3272;3255:10;:22::i;:::-;3329:6;;3382:14;;;;3226:51;;-1:-1:-1;3287:27:98;;-1:-1:-1;;;;;3329:6:98;;;;:32;;3362:35;;:19;:35::i;:::-;3407:9;3329:89;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3329:89:98;;;;;;;;;;;;:::i;:::-;3470:6;;3513:13;;;;:16;;3287:131;;-1:-1:-1;3429:26:98;;-1:-1:-1;;;;;3470:6:98;;;;:31;;3502:9;;3429:26;;3513:16;;;;:::i;:::-;;;;;;;3531:4;3545;3552:15;3570:1;3552:19;;;;:::i;:::-;3470:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3470:102:98;;;;;;;;;;;;:::i;:::-;3429:143;;3583:76;3592:9;3602:1;3592:12;;;;;;;;:::i;:::-;;;;;;;3606:5;:13;;;3620:1;3606:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3583:76:98;;;;;;;;;;;;;;;;;;:8;:76::i;:::-;3712:4;;3718;;3701:22;;-1:-1:-1;;;;;3712:4:98;;;;3718;3701:10;:22::i;:::-;3741:6;;3794:14;;;;3694:29;;-1:-1:-1;;;;;;3741:6:98;;:32;;3774:35;;:19;:35::i;:::-;3819:9;3741:89;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3741:89:98;;;;;;;;;;;;:::i;:::-;3865:6;;3908:13;;;;:16;;3733:97;;-1:-1:-1;;;;;;3865:6:98;;;;:31;;3897:9;;3865:6;;3908:16;;;;:::i;:::-;;;;;;;3926:4;3940;3947:15;3965:1;3947:19;;;;:::i;:::-;3865:102;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3865:102:98;;;;;;;;;;;;:::i;:::-;3841:126;;3978:76;3987:9;3997:1;3987:12;;;;;;;;:::i;:::-;;;;;;;4001:5;:13;;;4015:1;4001:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3978:76:98;;;;;;;;;;;;;;;;;;:8;:76::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:205:93;12298:6;;12329:12;12340:1;12329:12;;;;:::i;:::-;12316:25;;12365:1;12356:6;:10;;;:33;;12387:2;12356:33;;;12369:11;;;;:2;:11;:::i;:::-;:15;;12383:1;12369:15;:::i;:::-;12351:38;;12407:11;:2;:9;:11::i;:::-;12400:18;12220:205;-1:-1:-1;;;;;12220:205:93:o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:1171:93;10300:13;10316:6;-1:-1:-1;;;;;10316:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10300:34;;10344:13;10360:6;-1:-1:-1;;;;;10360:16:93;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10344:34;;10389:36;10402:6;10411:4;10417:7;10389:4;:36::i;:::-;10435;10448:6;10457:4;10463:7;10435:4;:36::i;:::-;10482:13;10498:28;10511:6;10519;10498:12;:28::i;:::-;10482:44;;10537:40;10594:5;10580:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10580:20:93;;10537:63;;10616:9;10611:412;10631:5;10627:1;:9;10611:412;;;10657:9;10669:26;10675:8;10685:1;10688:6;10669:5;:26::i;:::-;10657:38;;10710:15;10734:8;10728:14;;:2;:14;;;;:28;;;;;10755:1;10746:6;:10;;;10728:28;:74;;10801:1;10728:74;;;10759:39;10760:28;;;;363:4:64;10760:28:93;:::i;:::-;10759:37;:39::i;:::-;10710:92;;10816:15;10840:8;10834:14;;:2;:14;;;;:28;;;;;10861:1;10852:6;:10;;;10834:28;:74;;10907:1;10834:74;;;10865:39;10866:28;;;;363:4:64;10866:28:93;:::i;10865:39::-;10816:92;;10952:60;10989:8;10999;11009:2;10952:36;:60::i;:::-;10923:23;10947:1;10923:26;;;;;;;;:::i;:::-;;;;;;:89;;;;;10643:380;;;10638:3;;;;:::i;:::-;;;10611:412;;;-1:-1:-1;11033:19:93;;-1:-1:-1;;;11033:19:93;;-1:-1:-1;;;;;29777:55:105;;11033:19:93;;;29759:74:105;11033:13:93;;;;29732:18:105;;11033:19:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11062:41:93;;-1:-1:-1;;;11062:41:93;;-1:-1:-1;;;;;30036:55:105;;;11062:41:93;;;30018:74:105;30108:18;;;30101:34;;;11062:15:93;;;-1:-1:-1;11062:15:93;;-1:-1:-1;29991:18:105;;11062:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11113:41:93;;-1:-1:-1;;;11113:41:93;;-1:-1:-1;;;;;30036:55:105;;;11113:41:93;;;30018:74:105;30108:18;;;30101:34;;;11113:15:93;;;;;29991:18:105;;11113:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:0;309:37;;-1:-1:-1;;;;;11164:12:93;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:6;-1:-1:-1;;;;;11189:11:93;;11201:2;11205:23;11230:4;11189:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11189:46:93;;;;;;;;;;;;:::i;:::-;;;;10290:952;;;;10071:1171;;;;;;;;:::o;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12431:134:93;12532:7;;;:26;;-1:-1:-1;;;12532:26:93;;32046:6:105;32034:19;;12532:26:93;;;32016:38:105;12490:11:93;;-1:-1:-1;;;;;12532:7:93;;;;:17;;31989:18:105;12532:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:45;12431:134;-1:-1:-1;;;;;;;;;12431:134:93:o;1243:204:1:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;30018:74:105;;;1398:17:1;30108:18:105;;;30101:34;1428:1:1;;1377:7;;29991:18:105;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;11248:792:93:-;363:4:64;11469:13:93;:36;;11461:73;;;;-1:-1:-1;;;11461:73:93;;33397:2:105;11461:73:93;;;33379:21:105;33436:2;33416:18;;;33409:30;33475:26;33455:18;;;33448:54;33519:18;;11461:73:93;;;;;;;;;11545:13;11561:28;11574:6;11582;11561:12;:28::i;:::-;11545:44;;11600:20;11637:5;11623:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11623:20:93;;11600:43;;11653:24;11694:5;11680:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11680:20:93;;11653:47;;11716:9;11711:253;11731:5;11727:1;:9;11711:253;;;11757:9;11769:26;11775:8;11785:1;11788:6;11769:5;:26::i;:::-;11821;;-1:-1:-1;;;11821:26:93;;-1:-1:-1;;;;;33739:55:105;;;11821:26:93;;;33721:74:105;33843:8;33831:21;;33811:18;;;33804:49;11757:38:93;;-1:-1:-1;11809:9:93;;11821:16;;;;;33694:18:105;;11821:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11809:38;;11871:2;11862:11;;:3;11866:1;11862:6;;;;;;;;:::i;:::-;;;;;;;;;;:11;11900:53;:1;11918:13;363:4:64;11900:17:93;:53::i;:::-;11887:7;11895:1;11887:10;;;;;;;;:::i;:::-;;;;;;:66;;;;;11743:221;;11738:3;;;;:::i;:::-;;;11711:253;;;-1:-1:-1;11974:14:93;;-1:-1:-1;;;11974:14:93;;-1:-1:-1;;;;;29777:55:105;;11974:14:93;;;29759:74:105;11974:8:93;;;;29732:18:105;;11974:14:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;-1:-1:-1;;;11998:35:93;;-1:-1:-1;;;;;11998:11:93;;;-1:-1:-1;11998:11:93;;-1:-1:-1;11998:35:93;;12010:4;;12016:2;;12020:3;;12025:7;;11998:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11998:35:93;;;;;;;;;;;;:::i;:::-;;11451:589;;;11248:792;;;;;;;:::o;2566:3054::-;2608:7;:45;;-1:-1:-1;;;;;;2608:45:93;610:42:95;2608:45:93;;;;;;2706:28;2608:7;2706:33;2702:118;;2771:7;;2789:13;;2755:7;;;;-1:-1:-1;;;;;2771:7:93;;;;2789:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2781:27:93;;;;;;;;;;;;;;;;;;;;;;;;2755:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:118;2875:1;2861:16;;;;;:::i;:::-;35448:4:105;35436:17;;;35418:36;;35406:2;35391:18;2861:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2854:4:93;:23;;-1:-1:-1;;;;;;2854:23:93;-1:-1:-1;;;;;2854:23:93;;;;;;;;;;2894:16;;2908:1;;2894:16;;;:::i;:::-;35448:4:105;35436:17;;;35418:36;;35406:2;35391:18;2894:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2887:4:93;:23;;-1:-1:-1;;;;;;2887:23:93;-1:-1:-1;;;;;2887:23:93;;;;;;;;;;2927:16;;2941:1;;2927:16;;;:::i;:::-;35448:4:105;35436:17;;;35418:36;;35406:2;35391:18;2927:16:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2920:4:93;:23;;-1:-1:-1;;;;;;2920:23:93;-1:-1:-1;;;;;2920:23:93;;;;;;;;;;2960:17;;2974:2;;2960:17;;;:::i;:::-;35448:4:105;35436:17;;;35418:36;;35406:2;35391:18;2960:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2953:4:93;:24;;-1:-1:-1;;;;;;2953:24:93;-1:-1:-1;;;;;2953:24:93;;;;;;;;;;2994:17;;3008:2;;2994:17;;;:::i;:::-;35448:4:105;35436:17;;;35418:36;;35406:2;35391:18;2994:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2987:4:93;:24;;-1:-1:-1;;;;;;2987:24:93;-1:-1:-1;;;;;2987:24:93;;;;;;;;;;3027:17;;3041:2;;3027:17;;;:::i;:::-;35448:4:105;35436:17;;;35418:36;;35406:2;35391:18;3027:17:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3021:3:93;:23;;-1:-1:-1;;;;;;3021:23:93;-1:-1:-1;;;;;3021:23:93;;;;;;;;;;3065:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3054:8:93;:37;;-1:-1:-1;;;;;;3054:37:93;-1:-1:-1;;;;;3054:37:93;;;;;;3142:7;;3125:37;;;-1:-1:-1;;;3125:37:93;;3142:7;;;;3125:37;;;36076:74:105;36166:18;;;36159:30;;;;36225:1;36205:18;;;36198:29;36263:9;36243:18;;;36236:37;3125:8:93;;;;36290:19:105;;3125:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3189:4:93;;3172:31;;;-1:-1:-1;;;3172:31:93;;-1:-1:-1;;;;;3189:4:93;;;3172:31;;;;36532:74:105;;;;36622:18;;;36615:30;;;;36661:18;;;36654:29;-1:-1:-1;;;36699:18:105;;;36692:34;3172:8:93;;-1:-1:-1;3172:8:93;;-1:-1:-1;36743:19:105;;3172:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3230:4:93;;3213:31;;;-1:-1:-1;;;3213:31:93;;-1:-1:-1;;;;;3230:4:93;;;3213:31;;;;36985:74:105;;;;37075:18;;;37068:30;;;;37114:18;;;37107:29;-1:-1:-1;;;37152:18:105;;;37145:34;3213:8:93;;-1:-1:-1;3213:8:93;;-1:-1:-1;37196:19:105;;3213:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3271:4:93;;3254:31;;;-1:-1:-1;;;3254:31:93;;-1:-1:-1;;;;;3271:4:93;;;3254:31;;;;37438:74:105;;;;37528:18;;;37521:30;;;;37567:18;;;37560:29;-1:-1:-1;;;37605:18:105;;;37598:34;3254:8:93;;-1:-1:-1;3254:8:93;;-1:-1:-1;37649:19:105;;3254:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3312:4:93;;3295:31;;;-1:-1:-1;;;3295:31:93;;-1:-1:-1;;;;;3312:4:93;;;3295:31;;;;37891:74:105;;;;37981:18;;;37974:30;;;;38020:18;;;38013:29;-1:-1:-1;;;38058:18:105;;;38051:34;3295:8:93;;-1:-1:-1;3295:8:93;;-1:-1:-1;38102:19:105;;3295:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3353:4:93;;3336:31;;;-1:-1:-1;;;3336:31:93;;-1:-1:-1;;;;;3353:4:93;;;3336:31;;;;38344:74:105;;;;38434:18;;;38427:30;;;;38473:18;;;38466:29;-1:-1:-1;;;38511:18:105;;;38504:34;3336:8:93;;-1:-1:-1;3336:8:93;;-1:-1:-1;38555:19:105;;3336:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3394:3:93;;3377:29;;;-1:-1:-1;;;3377:29:93;;-1:-1:-1;;;;;3394:3:93;;;3377:29;;;38797:74:105;38887:18;;;38880:30;38946:1;38926:18;;;38919:29;-1:-1:-1;;;38964:18:105;;;38957:33;3377:8:93;;-1:-1:-1;3377:8:93;;-1:-1:-1;39007:19:105;;3377:29:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3433:8:93;;3416:39;;;-1:-1:-1;;;3416:39:93;;-1:-1:-1;;;;;3433:8:93;;;3416:39;;;39249:74:105;39339:18;;;39332:30;39398:1;39378:18;;;39371:29;39436:10;39416:18;;;39409:38;3416:8:93;;-1:-1:-1;3416:8:93;;-1:-1:-1;39464:19:105;;3416:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:8:93;:67;;-1:-1:-1;;;;;;3498:67:93;;;335:42:95;3498:67:93;;;;3575:9;:70;;;;;240:42:95;3575:70:93;;;-1:-1:-1;;3692:46:93;;3706:3;;;;1699:4;;3692:46;;;:::i;:::-;-1:-1:-1;;;;;39791:15:105;;;39773:34;;39843:15;;;;39838:2;39823:18;;39816:43;39890:2;39875:18;;39868:34;39700:2;39685:18;3692:46:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3682:7:93;:56;;-1:-1:-1;;;;;;3682:56:93;-1:-1:-1;;;;;3682:56:93;;;;;;;;;3769:19;;;;;:::i;:::-;-1:-1:-1;;;;;29777:55:105;;;29759:74;;29747:2;29732:18;3769:19:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3748:18:93;:40;;-1:-1:-1;;;;;;3748:40:93;-1:-1:-1;;;;;3748:40:93;;;;;;;;;3824:7;;;:60;;-1:-1:-1;;;3824:60:93;;;;;29759:74:105;;;;3824:7:93;;;;:31;;29732:18:105;3824:60:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:30;:28;:30::i;:::-;3934:42;1147:2;3934:24;:42::i;:::-;4046:7;;4055:9;;4083:7;;4033:60;;-1:-1:-1;;;;;4046:7:93;;;;4055:9;;;;4083:7;;;;4033:60;;;:::i;:::-;-1:-1:-1;;;;;40509:15:105;;;40491:34;;40561:15;;;40556:2;40541:18;;40534:43;40613:15;;;40608:2;40593:18;;40586:43;40418:2;40403:18;4033:60:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:6:93;:81;;-1:-1:-1;;;;;;4012:81:93;-1:-1:-1;;;;;4012:81:93;;;;;;;;;4172:9;;4204:7;;4138:113;;4172:9;;;;4204:7;;4012:81;4138:113;;;:::i;:::-;-1:-1:-1;;;;;40509:15:105;;;40491:34;;40561:15;;;40556:2;40541:18;;40534:43;40613:15;;;40608:2;40593:18;;40586:43;40418:2;40403:18;4138:113:93;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4129:6:93;:122;;-1:-1:-1;;;;;;4129:122:93;-1:-1:-1;;;;;4129:122:93;;;;;;4315:6;;4298:35;;;-1:-1:-1;;;4298:35:93;;4315:6;;;;4298:35;;;41264:74:105;41354:18;;;41347:30;;;;41413:1;41393:18;;;41386:29;41451:8;41431:18;;;41424:36;4298:8:93;;;;41477:19:105;;4298:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4360:6:93;;4343:35;;;-1:-1:-1;;;4343:35:93;;-1:-1:-1;;;;;4360:6:93;;;4343:35;;;41719:74:105;41809:18;;;41802:30;41868:1;41848:18;;;41841:29;41906:8;41886:18;;;41879:36;4343:8:93;;-1:-1:-1;4343:8:93;;-1:-1:-1;41932:19:105;;4343:35:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4405:7:93;;;4388:37;;;-1:-1:-1;;;4388:37:93;;-1:-1:-1;;;;;4405:7:93;;;4388:37;;;42174:74:105;42264:18;;;42257:30;;;;42323:1;42303:18;;;42296:29;42361:9;42341:18;;;42334:37;4388:8:93;;-1:-1:-1;4388:8:93;;-1:-1:-1;42388:19:105;;4388:37:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:18:93;;4435:59;;;-1:-1:-1;;;4435:59:93;;-1:-1:-1;;;;;4452:18:93;;;4435:59;;;42630:74:105;42720:18;;;42713:30;42779:2;42759:18;;;42752:30;42818:20;42798:18;;;42791:48;4435:8:93;;-1:-1:-1;4435:8:93;;-1:-1:-1;42856:19:105;;4435:59:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4545:8:93;;4528:39;;;-1:-1:-1;;;4528:39:93;;-1:-1:-1;;;;;4545:8:93;;;4528:39;;;43098:74:105;43188:18;;;43181:30;43247:1;43227:18;;;43220:29;43285:10;43265:18;;;43258:38;4528:8:93;;-1:-1:-1;4528:8:93;;-1:-1:-1;43313:19:105;;4528:39:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4594:9:93;;4577:41;;;-1:-1:-1;;;4577:41:93;;-1:-1:-1;;;;;4594:9:93;;;4577:41;;;43555:74:105;43645:18;;;43638:30;43704:1;43684:18;;;43677:29;43742:11;43722:18;;;43715:39;4577:8:93;;-1:-1:-1;4577:8:93;;-1:-1:-1;43771:19:105;;4577:41:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4666:7:93;;4690:8;;4666:53;;-1:-1:-1;;;4666:53:93;;-1:-1:-1;;;;;4690:8:93;;;4666:53;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;4666:7:93;;;-1:-1:-1;4666:15:93;;-1:-1:-1;29991:18:105;;4666:53:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4729:4:93;;4750:8;;4729:50;;-1:-1:-1;;;4729:50:93;;-1:-1:-1;;;;;4750:8:93;;;4729:50;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;4729:4:93;;;:12;;29991:18:105;;4729:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4789:4:93;;4810:8;;4789:50;;-1:-1:-1;;;4789:50:93;;-1:-1:-1;;;;;4810:8:93;;;4789:50;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;4789:4:93;;;:12;;29991:18:105;;4789:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4849:4:93;;4870:8;;4849:50;;-1:-1:-1;;;4849:50:93;;-1:-1:-1;;;;;4870:8:93;;;4849:50;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;4849:4:93;;;:12;;29991:18:105;;4849:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4909:4:93;;4930:8;;4909:50;;-1:-1:-1;;;4909:50:93;;-1:-1:-1;;;;;4930:8:93;;;4909:50;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;4909:4:93;;;:12;;29991:18:105;;4909:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4969:4:93;;4990:8;;4969:50;;-1:-1:-1;;;4969:50:93;;-1:-1:-1;;;;;4990:8:93;;;4969:50;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;4969:4:93;;;:12;;29991:18:105;;4969:50:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5029:3:93;;5049:8;;5029:49;;-1:-1:-1;;;5029:49:93;;-1:-1:-1;;;;;5049:8:93;;;5029:49;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5029:3:93;;;:11;;29991:18:105;;5029:49:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5088:8:93;;5113;;5088:54;;-1:-1:-1;;;5088:54:93;;-1:-1:-1;;;;;5113:8:93;;;5088:54;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5088:8:93;;;:16;;29991:18:105;;5088:54:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5153:7:93;;5177:6;;5153:51;;-1:-1:-1;;;5153:51:93;;-1:-1:-1;;;;;5177:6:93;;;5153:51;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5153:7:93;;;:15;;29991:18:105;;5153:51:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5214:4:93;;5235:6;;5214:48;;-1:-1:-1;;;5214:48:93;;-1:-1:-1;;;;;5235:6:93;;;5214:48;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5214:4:93;;;:12;;29991:18:105;;5214:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5272:4:93;;5293:6;;5272:48;;-1:-1:-1;;;5272:48:93;;-1:-1:-1;;;;;5293:6:93;;;5272:48;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5272:4:93;;;:12;;29991:18:105;;5272:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5330:4:93;;5351:6;;5330:48;;-1:-1:-1;;;5330:48:93;;-1:-1:-1;;;;;5351:6:93;;;5330:48;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5330:4:93;;;:12;;29991:18:105;;5330:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:4:93;;5409:6;;5388:48;;-1:-1:-1;;;5388:48:93;;-1:-1:-1;;;;;5409:6:93;;;5388:48;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5388:4:93;;;:12;;29991:18:105;;5388:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5446:4:93;;5467:6;;5446:48;;-1:-1:-1;;;5446:48:93;;-1:-1:-1;;;;;5467:6:93;;;5446:48;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5446:4:93;;;:12;;29991:18:105;;5446:48:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5504:3:93;;5524:6;;5504:47;;-1:-1:-1;;;5504:47:93;;-1:-1:-1;;;;;5524:6:93;;;5504:47;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5504:3:93;;;:11;;29991:18:105;;5504:47:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5561:8:93;;5586:6;;5561:52;;-1:-1:-1;;;5561:52:93;;-1:-1:-1;;;;;5586:6:93;;;5561:52;;;30018:74:105;-1:-1:-1;;30108:18:105;;;30101:34;5561:8:93;;;:16;;29991:18:105;;5561:52:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2566:3054::o;26935:117:3:-;27017:28;27022:5;27029:2;27033:4;27039:5;27017:4;:28::i;:::-;26935:117;;;:::o;7798:1036:93:-;8003:56;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8003:56:93;8072:20;8094:30;8126;8158:17;8191:52;8207:9;8218:7;8227:10;8239:3;8191:15;:52::i;:::-;8071:172;;;;;;;;8276:551;;;;;;;;8328:6;-1:-1:-1;;;;;8276:551:93;;;;;8356:6;-1:-1:-1;;;;;8276:551:93;;;;;1147:2;8276:551;;;;;;8424:9;8276:551;;;;8456:9;8276:551;;;;8491:1;8276:551;;;;8518:1;8276:551;;;;8550:7;8276:551;;;;;;8583:1;8276:551;;;;8608:30;8630:7;8608:3;:21;;:30;;;;:::i;:::-;8276:551;;;;;;;;;;;;;;-1:-1:-1;;;;;8740:3:93;8276:551;;;;;;;;;;;;;8794:22;:15;8812:4;8794:22;:::i;:::-;8276:551;;8254:573;7798:1036;-1:-1:-1;;;;;;;;;;;7798:1036:93:o;5204:1273:98:-;5279:26;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5279:26:98;5337:16;;;5351:1;5337:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5317:36:98;;5379:26;;;5403:1;5379:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5363:13:98;;;:42;5432:15;;;5445:1;5432:15;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5415:14:98;;;:32;5473:4;;-1:-1:-1;;;;;5473:4:98;;;5462:15;;;;5458:1013;;5513:7;5493:4;:14;;;5508:1;5493:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5493:27:98;;;:17;;;;;;;;;:27;5554:4;;5534:14;;;;:17;;5554:4;;;;;5534:14;5554:4;;5534:17;;;;;;:::i;:::-;-1:-1:-1;;;;;5534:24:98;;;:17;;;;;;;;;:24;5592:7;;5572:14;;;;:17;;5592:7;;;;;5572:14;5587:1;;5572:17;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1;;;;;5572:27:98;;;-1:-1:-1;;;;;5572:27:98;;;;;5633:8;5613:4;:14;;;5628:1;5613:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5613:28:98;;;:17;;;;;;;;;;;:28;5656:17;;:20;;1147:2:93;;5656:17:98;;;:20;;;;:::i;:::-;;;;;;;;;;:39;5709:17;;:20;;1147:2:93;;5709:17:98;5727:1;;5709:20;;;;;;:::i;:::-;;;;;;;;;;:39;5762:17;;:20;;1147:2:93;;5762:17:98;5780:1;;5762:20;;;;;;:::i;:::-;;;;;;:39;;;;;5835:20;5816:4;:13;;;5830:1;5816:16;;;;;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;5888:20;5869:4;:13;;;5883:1;5869:16;;;;;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;5941:20;5922:4;:13;;;5936:1;5922:16;;;;;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;5458:1013:98;;;6012:7;5992:4;:14;;;6007:1;5992:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5992:27:98;;;:17;;;;;;;;;:27;6053:7;;6033:14;;;;:17;;6053:7;;;;;6033:14;6053:7;;6033:17;;;;;;:::i;:::-;-1:-1:-1;;;;;6033:27:98;;;:17;;;;;;;;;:27;6094:4;;6074:14;;;;:17;;6094:4;;;;;6074:14;6089:1;;6074:17;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;6074:24:98;;;-1:-1:-1;;;;;6074:24:98;;;;;6132:8;6112:4;:14;;;6127:1;6112:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6112:28:98;;;:17;;;;;;;;;;;:28;6155:17;;:20;;1147:2:93;;6155:17:98;;;:20;;;;:::i;:::-;;;;;;;;;;:39;6208:17;;:20;;1147:2:93;;6208:17:98;6226:1;;6208:20;;;;;;:::i;:::-;;;;;;;;;;:39;6261:17;;:20;;1147:2:93;;6261:17:98;6279:1;;6261:20;;;;;;:::i;:::-;;;;;;:39;;;;;6334:20;6315:4;:13;;;6329:1;6315:16;;;;;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;6387:20;6368:4;:13;;;6382:1;6368:16;;;;;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;6440:20;6421:4;:13;;;6435:1;6421:16;;;;;;;;:::i;:::-;;;;;;:39;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;5204:1273:98;;;;:::o;6483:271::-;6558:26;6622:6;:13;6608:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6608:28:98;;6596:40;;6651:9;6646:102;6670:6;:13;6666:1;:17;6646:102;;;6727:6;6734:1;6727:9;;;;;;;;:::i;:::-;;;;;;;6704;6714:1;6704:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6704:33:98;;;:12;;;;;;;;;;;:33;6685:3;;;;:::i;:::-;;;;6646:102;;;;6483:271;;;:::o;18636:288:1:-;18862:55;;-1:-1:-1;;;18862:55:1;;:20;;;;:55;;18883:4;;18889:5;;18896:15;;18913:3;;18862:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;10236:135:78:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:78;;;;;;;;;;;10306:58;10236:135;;;:::o;8711:::-;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:78;;;;;;;;;;;1214:392:76;674:2;1398:29:75;;;;;731:2:76;1398:29:75;;;;;1383:45;1553:46:76;;;1383:45:75;;1553:46:76;1544:55;1214:392;-1:-1:-1;;;;1214:392:76:o;956:247:82:-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;956:247;-1:-1:-1;;;;;;956:247:82:o;6085:628:93:-;6156:7;;-1:-1:-1;;;;;6156:7:93;6148:30;6144:66;;6180:7;;;6202;;6180:30;;-1:-1:-1;;;6180:30:93;;-1:-1:-1;;;;;6202:7:93;;;6180:30;;;29759:74:105;6180:7:93;;;:21;;29732:18:105;6180:30:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:66;6232:4;;-1:-1:-1;;;;;6232:4:93;6224:27;6220:60;;6253:7;;;6275:4;;6253:27;;-1:-1:-1;;;6253:27:93;;-1:-1:-1;;;;;6275:4:93;;;6253:27;;;29759:74:105;6253:7:93;;;:21;;29732:18:105;6253:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6220:60;6302:4;;-1:-1:-1;;;;;6302:4:93;6294:27;6290:60;;6323:7;;;6345:4;;6323:27;;-1:-1:-1;;;6323:27:93;;-1:-1:-1;;;;;6345:4:93;;;6323:27;;;29759:74:105;6323:7:93;;;:21;;29732:18:105;6323:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6290:60;6372:4;;-1:-1:-1;;;;;6372:4:93;6364:27;6360:60;;6393:7;;;6415:4;;6393:27;;-1:-1:-1;;;6393:27:93;;-1:-1:-1;;;;;6415:4:93;;;6393:27;;;29759:74:105;6393:7:93;;;:21;;29732:18:105;6393:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:60;6442:4;;-1:-1:-1;;;;;6442:4:93;6434:27;6430:60;;6463:7;;;6485:4;;6463:27;;-1:-1:-1;;;6463:27:93;;-1:-1:-1;;;;;6485:4:93;;;6463:27;;;29759:74:105;6463:7:93;;;:21;;29732:18:105;6463:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:60;6512:4;;-1:-1:-1;;;;;6512:4:93;6504:27;6500:60;;6533:7;;;6555:4;;6533:27;;-1:-1:-1;;;6533:27:93;;-1:-1:-1;;;;;6555:4:93;;;6533:27;;;29759:74:105;6533:7:93;;;:21;;29732:18:105;6533:27:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:60;6582:3;;-1:-1:-1;;;;;6582:3:93;6574:26;6570:58;;6602:7;;;6624:3;;6602:26;;-1:-1:-1;;;6602:26:93;;-1:-1:-1;;;;;6624:3:93;;;6602:26;;;29759:74:105;6602:7:93;;;:21;;29732:18:105;6602:26:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:58;6650:8;;-1:-1:-1;;;;;6650:8:93;6642:31;6638:68;;6675:7;;;6697:8;;6675:31;;-1:-1:-1;;;6675:31:93;;-1:-1:-1;;;;;6697:8:93;;;6675:31;;;29759:74:105;6675:7:93;;;:21;;29732:18:105;6675:31:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6638:68;6085:628::o;6719:422::-;6788:7;;;:346;;-1:-1:-1;;;6788:346:93;;45726:6:105;45759:15;;6788:346:93;;;45741:34:105;1202:5:93;45791:18:105;;;45784:43;;;1262:2:93;45843:18:105;;;45836:43;1318:3:93;45895:18:105;;;45888:43;45947:19;;;45940:44;;;;1446:6:93;46027:19:105;;;46020:44;1508:5:93;46080:19:105;;;46073:44;1581:7:93;46133:19:105;;;46126:44;6788:7:93;46186:19:105;;;46179:51;-1:-1:-1;;;;;6788:7:93;;:17;;45688:19:105;;6788:346:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:422;:::o;27331:837:3:-;27501:38;;;-1:-1:-1;;;;;29777:55:105;;;27501:38:3;;;;29759:74:105;;;;27501:38:3;;;;;;;;;;29732:18:105;;;;27501:38:3;;;;;;;-1:-1:-1;;;;;27501:38:3;-1:-1:-1;;;27501:38:3;;;27484:56;;27460:20;;27484:16;;;:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27457:83;;;27550:15;27579:7;27568:30;;;;;;;;;;;;:::i;:::-;27550:48;-1:-1:-1;27635:71:3;27701:4;27635:51;27683:2;27635:38;-1:-1:-1;;;27635:22:3;:8;27651:5;27635:15;:22::i;:::-;:26;;:38::i;:::-;:47;;:51::i;:::-;:65;;:71::i;:::-;27752:6;27748:414;;;27821:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27821:34:3;-1:-1:-1;;;27821:34:3;;;27804:52;;27777:23;;-1:-1:-1;;;;;27804:16:3;;;:52;;27821:34;27804:52;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27774:82;;;27870:14;27898:10;27887:33;;;;;;;;;;;;:::i;:::-;27870:50;;27945:7;27938:4;:14;27934:144;;;27983:14;27993:4;27983:7;:14;:::i;:::-;27972:26;;;;:::i;:::-;;;27934:144;;;28048:14;28055:7;28048:4;:14;:::i;:::-;28037:26;;;;:::i;:::-;;;27934:144;28091:60;28144:6;28091:38;-1:-1:-1;;;28091:22:3;:8;28107:5;28091:15;:22::i;27748:414::-;27416:752;;27331:837;;;;:::o;8840:1225:93:-;8991:20;;;9113:17;9159:14;9172:1;9159:10;:14;:::i;:::-;:19;;9177:1;9159:19;9155:92;;9194:42;;-1:-1:-1;;;9194:42:93;;46921:2:105;9194:42:93;;;46903:21:105;;;46940:18;;;46933:30;46999:34;46979:18;;;46972:62;47051:18;;9194:42:93;46719:356:105;9155:92:93;9257:13;9273:14;9286:1;9273:10;:14;:::i;:::-;9257:30;;9317:10;9303:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9303:25:93;;9297:31;;9369:10;9355:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9355:25:93;;9339:41;;9420:10;9406:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9406:25:93;-1:-1:-1;9390:41:93;-1:-1:-1;9441:23:93;9490:10;:6;9499:1;9490:10;:::i;:::-;9467:34;;;;363:4:64;9467:34:93;:::i;:::-;9441:60;-1:-1:-1;9511:20:93;9547:10;:6;9556:1;9547:10;:::i;:::-;9534:24;;;;:9;:24;:::i;:::-;9511:47;;9574:9;9569:490;9589:10;9585:14;;:1;:14;9569:490;;;9665:7;9669:3;9665:1;:7;:::i;:::-;9660:13;;;;:1;:13;:::i;:::-;9649:7;9653:3;9649:1;:7;:::i;:::-;9639:18;;:6;:18;:::i;:::-;9629:28;;:7;:28;:::i;:::-;:44;;;;;;:::i;:::-;9620:3;9624:1;9620:6;;;;;;;;:::i;:::-;;;;;;:53;;;;;9697:6;9692:11;;:1;:11;9688:84;;9742:15;9723:13;9737:1;9723:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9688:84;9794:6;9789:11;;:1;:11;9785:264;;9839:15;9820:13;9834:1;9820:16;;;;;;;;:::i;:::-;;;;;;:34;;;;;9900:1;9885:12;:16;:149;;10033:1;9885:149;;;9924:86;258:3:64;9979:30:93;10001:3;10005:1;10001:6;;;;;;;;:::i;:::-;;;;;;;9979:14;:30::i;:::-;9924:12;;:86;:30;:86::i;:::-;9872:162;;;;:::i;:::-;;;9785:264;9601:3;;;;:::i;:::-;;;;9569:490;;;;9145:920;;;8840:1225;;;;;;;;;:::o;685:365:94:-;805:27;875:11;:18;862:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;862:32:94;;848:46;;909:9;904:140;928:11;:18;924:1;:22;904:140;;;1024:7;1016:16;;991:11;1003:1;991:14;;;;;;;;:::i;:::-;;;;;;;984:49;;;;:::i;:::-;967:11;979:1;967:14;;;;;;;;:::i;:::-;;;;;;;;;;:66;948:3;;;;:::i;:::-;;;;904:140;;;;685:365;;;;:::o;6220:547:82:-;6286:13;;-1:-1:-1;;6654:1:82;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:82;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:82:o;9231:156:8:-;4680:12;;;:22;;-1:-1:-1;;;;;;4680:22:8;-1:-1:-1;;;;;4680:22:8;;;;;-1:-1:-1;4680:12:8;9344:36;9337:43;9231:156;-1:-1:-1;;;9231:156:8:o;9393:143::-;4835:9;;;:16;;-1:-1:-1;;4835:16:8;;;;;;;;-1:-1:-1;4835:9:8;9499:30;4736:143;9698:152;5151:10;;;:47;;;;;;;9772:18;5151:47;;;;;;-1:-1:-1;;;;;5175:21:8;;5151:47;;;9833:4;9809:34;5047:179;10474:120;10554:33;10568:4;10582:3;10554:13;:33::i;:::-;10474:120;;:::o;5781:146:93:-;5839:13;5872:48;5899:2;1147;5872:26;:48::i;4594:437:82:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;10966:1095:8:-;11060:12;;;;11096:9;;;;11137:11;;;;11181:10;;;11158:33;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11060:12:8;;;;11096:9;;;;;;11046:11;;11158:33;;11181:10;;11158:33;;11181:10;11158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:17;11239:4;11245:12;11253:3;11245:7;:12::i;:::-;11222:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11222:36:8;;;;;;;;;-1:-1:-1;;;;;11273:15:8;;;;;;:10;;;11222:36;11273:15;;;;;;-1:-1:-1;;;;;;11273:21:8;;;;;;;;;11222:36;;-1:-1:-1;11273:21:8;;:15;;11305:34;;11322:3;;11327:11;;11305:34;;:::i;:::-;;;;-1:-1:-1;;11305:34:8;;;;;;;;;11295:45;;11305:34;11295:45;;;;11273:68;;;;;;;;;;-1:-1:-1;11273:68:8;;;;11268:110;;11357:10;11362:4;11357;:10::i;:::-;;11268:110;-1:-1:-1;;;;;11410:15:8;;11387:12;11410:15;;;;;;;;;;;-1:-1:-1;;;;;;11410:21:8;;;;;;;;;11442:34;;11410:21;;11387:12;;11442:34;;11459:3;;11464:11;;11442:34;;:::i;:::-;;;;;;;;;;;;;11432:45;;;;;;11410:68;;;;;;;;;;;;11402:77;;11387:92;;11490:12;11529:17;11550:3;-1:-1:-1;;;;;11550:14:8;11565:4;11550:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11526:44:8;-1:-1:-1;11591:38:8;;-1:-1:-1;11526:44:8;11612:16;11617:11;11612:2;:16;:::i;:::-;11591:14;:38::i;:::-;11664:18;;-1:-1:-1;;;11664:18:8;;-1:-1:-1;;;;;30036:55:105;;11664:18:8;;;30018:74:105;30108:18;;;30101:34;;;11584:45:8;;-1:-1:-1;11649:12:8;;-1:-1:-1;11664:7:8;;;;29991:18:105;;11664::8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11649:33;;11705:4;11697;:12;11693:218;;11725:175;;-1:-1:-1;;;11725:175:8;;49290:2:105;11725:175:8;;;49272:21:105;49329:3;49309:18;;;49302:31;49369:34;49349:18;;;49342:62;49440:34;49420:18;;;49413:62;49512:34;49491:19;;;49484:63;-1:-1:-1;;;49563:19:105;;;49556:46;49619:19;;11725:175:8;49088:556:105;11725:175:8;11920:24;;-1:-1:-1;;;11920:24:8;;-1:-1:-1;;;;;49869:55:105;;11920:24:8;;;49851:74:105;49941:18;;;49934:34;;;49984:18;;;49977:34;;;11920:8:8;;;;49824:18:105;;11920:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11961:12:8;;;11954:19;;-1:-1:-1;;;;;;11954:19:8;;;-1:-1:-1;11990:9:8;;;11983:16;;-1:-1:-1;;11983:16:8;;;12009:17;-1:-1:-1;12016:10:8;;11961:12;12009:17;:::i;:::-;12043:4;:11;;12036:18;;;11036:1025;;;;;;;;10966:1095;;:::o;812:217:70:-;886:13;623:6:64;1824:42:70;258:3:64;1824:42:70;;;;1823:72;-1:-1:-1;;;1805:90:70;2185:11;;;-1:-1:-1;;2178:35:70;1004:18;1805:90;2178:35;1004:8;:18::i;13395:393:8:-;13454:12;13478:19;13510:1;:8;13521:2;13510:13;;;;:::i;:::-;13500:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13500:24:8;;13478:46;;13539:9;13534:224;13558:1;:8;13554:1;:12;13534:224;;;13587:9;13599:1;13601;13599:4;;;;;;;;:::i;:::-;;;;;;;13587:16;;13732:1;13726;13722:2;13718:10;13714:2;13710:19;13702:6;13698:32;13691:43;13673:75;13568:3;;;;;:::i;:::-;;;;13534:224;;9110:115;9167:7;9193:25;9213:4;9193:19;:25::i;13034:304::-;13112:7;13131:11;13153;13178:2;13167:1;:8;:13;:29;;13188:1;:8;13167:29;;;13183:2;13167:29;13153:43;;13211:9;13206:106;13230:3;13226:1;:7;13206:106;;;13295:5;:1;13299;13295:5;:::i;:::-;13269:1;13271:10;13280:1;13271:6;:10;:::i;:::-;13269:13;;;;;;;;:::i;:::-;;;;;;;13261:40;;13254:47;;;;;13235:3;;;;:::i;:::-;;;;13206:106;;;-1:-1:-1;13328:3:8;;13034:304;-1:-1:-1;;;;13034:304:8:o;4113:3600:81:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:64;-1:-1:-1;4252:22:81;;-1:-1:-1;4252:22:81;4240:34;-1:-1:-1;4316:1:81;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:64;-1:-1:-1;4574:1:81;-1:-1:-1;;;;;4595:41:81;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:81;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:81;;;;;50194:25:105;;;50235:18;;;50228:34;;;50167:18;;7609:35:81;50022:246:105;7585:59:81;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:81;:::i;1264:3304:8:-;1354:12;;;;1390:9;;;;1431:11;;;;1475:10;;;1452:33;;;;;;;;;;;;;;;;;;;1321:7;;-1:-1:-1;;;;;1354:12:8;;1390:9;;;1431:11;1321:7;;1452:33;;1475:10;;1452:33;;;1475:10;1452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1536:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;1536:21:8;;;;;;;;;1568:34;;1452:33;;-1:-1:-1;1536:21:8;:15;;-1:-1:-1;1568:34:8;;-1:-1:-1;1452:33:8;;1590:11;;1568:34;;:::i;:::-;;;;-1:-1:-1;;1568:34:8;;;;;;;;;1558:45;;1568:34;1558:45;;;;1536:68;;;;;;;;;;-1:-1:-1;1536:68:8;;;;1532:174;;;-1:-1:-1;;;;;1627:15:8;;:10;:15;;;;;;;;;;;-1:-1:-1;;;;;;1627:21:8;;;;;;;;;1659:34;;1627:21;;:10;1659:34;;1676:3;;1681:11;;1659:34;;:::i;:::-;;;;;;;;;;;;;1649:45;;;;;;1627:68;;;;;;;;;;;;1620:75;;;;;;1264:3304;;;:::o;1532:174::-;1715:17;1752:4;1758:12;1766:3;1758:7;:12::i;:::-;1735:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1715:56;;588:28;580:37;;-1:-1:-1;;;;;1781:9:8;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:12;1841:17;1862:3;-1:-1:-1;;;;;1862:14:8;1877:4;1862:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:44:8;-1:-1:-1;1903:38:8;;-1:-1:-1;1838:44:8;1924:16;1929:11;1924:2;:16;:::i;:::-;1903:14;:38::i;:::-;1990:25;;-1:-1:-1;;;1990:25:8;;-1:-1:-1;;;;;29777:55:105;;1990:25:8;;;29759:74:105;1896:45:8;;-1:-1:-1;1963:22:8;;-1:-1:-1;1990:11:8;;;;29732:18:105;;1990:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1990:25:8;;;;;;;;;;;;:::i;:::-;1962:53;;;2029:5;:12;2045:1;2029:17;2025:2167;;2062:12;588:28;580:37;;-1:-1:-1;;;;;2077:7:8;;2085:3;2090:5;2096:1;2090:8;;;;;;;;:::i;:::-;;;;;;;2077:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;30036:55:105;;;;30018:74;;30123:2;30108:18;;30101:34;30006:2;29991:18;;29844:297;2077:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2062:37;-1:-1:-1;2062:37:8;2113:106;;2160:44;2181:3;2194:5;2200:1;2194:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2160:44;;;-1:-1:-1;;;;;30036:55:105;;;30018:74;;30108:18;;;30101:34;29991:18;2160:44:8;;;;;;;2113:106;2244:4;2236;:12;2232:238;;2268:187;;-1:-1:-1;;;2268:187:8;;49290:2:105;2268:187:8;;;49272:21:105;49329:3;49309:18;;;49302:31;49369:34;49349:18;;;49342:62;49440:34;49420:18;;;49413:62;49512:34;49491:19;;;49484:63;-1:-1:-1;;;49563:19:105;;;49556:46;49619:19;;2268:187:8;49088:556:105;2268:187:8;2488:86;2498:3;2503:4;2536:3;2541:11;2519:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2509:45;;;;;;2564:5;2570:1;2564:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2488:86;;;-1:-1:-1;;;;;51139:55:105;;;51121:74;;-1:-1:-1;;;;;;51231:33:105;;;51211:18;;;51204:61;;;;51281:18;;;51274:34;51339:2;51324:18;;51317:34;51108:3;51093:19;2488:86:8;;;;;;;2667:5;2673:1;2667:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2588:15:8;;2659:17;2588:15;;;;;;;;;;-1:-1:-1;;;;;;2588:21:8;;;;;;;;;2620:34;;2667:8;;2588:21;;2620:34;;2637:3;;2642:11;;2620:34;;:::i;:::-;;;;-1:-1:-1;;2620:34:8;;;;;;;;;2610:45;;2620:34;2610:45;;;;2588:68;;;;;;;;;;;;-1:-1:-1;2588:68:8;;;:88;;;;-1:-1:-1;;;;;2690:15:8;;;;2761:4;2690:10;;;:15;;;;;-1:-1:-1;;;;;;2690:21:8;;;;;;;;;2722:34;;2761:4;;-1:-1:-1;2722:34:8;;2739:3;;2744:11;;2722:34;;:::i;:::-;;;;;;;-1:-1:-1;;2722:34:8;;;;;;2712:45;;2722:34;2712:45;;;;2690:68;;;;;;;;;;-1:-1:-1;2690:68:8;:75;;-1:-1:-1;;2690:75:8;;;;;;;;;;-1:-1:-1;2025:2167:8;;;2801:1;2786:5;:12;:16;2782:1410;;;2823:9;2818:1259;2842:5;:12;2838:1;:16;2818:1259;;;2879:12;588:28;580:37;;-1:-1:-1;;;;;2894:7:8;;2902:3;2907:5;2913:1;2907:8;;;;;;;;:::i;:::-;;;;;;;2894:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;30036:55:105;;;;30018:74;;30123:2;30108:18;;30101:34;30006:2;29991:18;;29844:297;2894:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2879:37;-1:-1:-1;2879:37:8;2934:114;;2985:44;3006:3;3019:5;3025:1;3019:8;;;;;;;;:::i;:::-;;;;;;;;;;;;2985:44;;;-1:-1:-1;;;;;30036:55:105;;;30018:74;;30108:18;;;30101:34;29991:18;2985:44:8;;;;;;;2934:114;3077:4;3069;:12;3065:67;;3105:8;;;3065:67;3229:8;;3167:5;;;3215:8;;;;3224:3;;3229:5;;3235:1;;3229:8;;;;;;:::i;:::-;;;;;;;;;;;3215:32;;-1:-1:-1;;;;;;3215:32:8;;;;;;;-1:-1:-1;;;;;49869:55:105;;;3215:32:8;;;49851:74:105;49941:18;;;49934:34;49984:18;;;49977:34;;;49824:18;;3215:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:12;3317:17;3374:3;-1:-1:-1;;;;;3374:14:8;3389:4;3374:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3356:38:8;;-1:-1:-1;3356:38:8;-1:-1:-1;3423:38:8;3356;3444:16;3449:11;3444:2;:16;:::i;3423:38::-;3416:45;;3295:185;3502:7;:26;;;;;3521:7;3513:4;:15;3502:26;3498:518;;;3626:86;3636:3;3641:4;3674:3;3679:11;3657:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3647:45;;;;;;3702:5;3708:1;3702:8;;;;;;;;:::i;:::-;;;;;;;;;;;;3626:86;;;-1:-1:-1;;;;;51139:55:105;;;51121:74;;-1:-1:-1;;;;;;51231:33:105;;;51211:18;;;51204:61;;;;51281:18;;;51274:34;51339:2;51324:18;;51317:34;51108:3;51093:19;3626:86:8;;;;;;;3813:5;3819:1;3813:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3734:15:8;;3805:17;3734:15;;;;;;;;;;-1:-1:-1;;;;;;3734:21:8;;;;;;;;;3766:34;;3813:8;;3734:21;;3766:34;;3783:3;;3788:11;;3766:34;;:::i;:::-;;;;;;;;;;;;;3756:45;;;;;;3734:68;;;;;;;;;;;:88;;;;3915:4;3844;:10;;:15;3855:3;-1:-1:-1;;;;;3844:15:8;-1:-1:-1;;;;;3844:15:8;;;;;;;;;;;;:21;3860:4;-1:-1:-1;;;;;3844:21:8;;-1:-1:-1;;;;;3844:21:8;;;;;;;;;;;;;:68;3893:3;3898:11;3876:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3866:45;;;;;;3844:68;;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;588:28;580:37;;-1:-1:-1;;;;;3941:8:8;;3950:3;3955:5;3961:1;3955:8;;;;;;;;:::i;:::-;;;;;;;;;;;3941:29;;-1:-1:-1;;;;;;3941:29:8;;;;;;;-1:-1:-1;;;;;49869:55:105;;;3941:29:8;;;49851:74:105;49941:18;;;49934:34;49984:18;;;49977:34;;;49824:18;;3941:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3992:5;;;;;3498:518;588:28;580:37;;-1:-1:-1;;;;;4033:8:8;;4042:3;4047:5;4053:1;4047:8;;;;;;;;:::i;:::-;;;;;;;;;;;4033:29;;-1:-1:-1;;;;;;4033:29:8;;;;;;;-1:-1:-1;;;;;49869:55:105;;;4033:29:8;;;49851:74:105;49941:18;;;49934:34;49984:18;;;49977:34;;;49824:18;;4033:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:1216;;;2818:1259;2856:3;;;;:::i;:::-;;;;2818:1259;;;;2782:1410;;;4107:74;;;-1:-1:-1;;;4107:74:8;;51564:2:105;4107:74:8;;;51546:21:105;51583:18;;;51576:30;;;;51642:34;51622:18;;;51615:62;51713:34;51693:18;;;51686:62;51765:19;;4107:74:8;51362:428:105;2782:1410:8;-1:-1:-1;;;;;4223:15:8;;;;;;:10;;;:15;;;;;;;;-1:-1:-1;;;;;;4223:21:8;;;;;;;;;4255:34;;4223:21;;:15;4255:34;;4272:3;;4277:11;;4255:34;;:::i;:::-;;;;-1:-1:-1;;4255:34:8;;;;;;;;;4245:45;;4255:34;4245:45;;;;4223:68;;;;;;;;;;-1:-1:-1;4223:68:8;;;;4202:162;;;;-1:-1:-1;;;4202:162:8;;51997:2:105;4202:162:8;;;51979:21:105;52036:2;52016:18;;;52009:30;52075:34;52055:18;;;52048:62;52146:17;52126:18;;;52119:45;52181:19;;4202:162:8;51795:411:105;4202:162:8;4382:12;;;4375:19;;-1:-1:-1;;;;;;4375:19:8;;;4411:9;;;4404:16;;-1:-1:-1;;4404:16:8;;;4430:17;-1:-1:-1;4437:10:8;;4382:12;4430:17;:::i;:::-;4457:18;4464:11;;;4457:18;;;-1:-1:-1;;;;;4493:15:8;;;;;;;;;;;;-1:-1:-1;;;;;;4493:21:8;;;;;;;;;4525:34;;4493:21;;4457:18;4525:34;;4542:3;;4547:11;;4525:34;;:::i;:::-;;;;;;;;;;;;;4515:45;;;;;;4493:68;;;;;;;;;;;;4486:75;;;;;;;;;1264:3304;;;:::o;8473:393::-;8532:12;8556:19;8588:1;:8;8599:2;8588:13;;;;:::i;:::-;8578:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8578:24:8;;8556:46;;8617:9;8612:224;8636:1;:8;8632:1;:12;8612:224;;;8665:9;8677:1;8679;8677:4;;;;;;;;:::i;:::-;;;;;;;8665:16;;8810:1;8804;8800:2;8796:10;8792:2;8788:19;8780:6;8776:32;8769:43;8751:75;8646:3;;;;;:::i;:::-;;;;8612:224;;8163:304;8241:7;8260:11;8282;8307:2;8296:1;:8;:13;:29;;8317:1;:8;8296:29;;;8312:2;8296:29;8282:43;;8340:9;8335:106;8359:3;8355:1;:7;8335:106;;;8424:5;:1;8428;8424:5;:::i;:::-;8398:1;8400:10;8409:1;8400:6;:10;:::i;:::-;8398:13;;;;;;;;:::i;:::-;;;;;;;8390:40;;8383:47;;;;;8364:3;;;;:::i;:::-;;;;8335:106;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;629:484;682:3;720:5;714:12;747:6;742:3;735:19;773:4;802:2;797:3;793:12;786:19;;839:2;832:5;828:14;860:1;870:218;884:6;881:1;878:13;870:218;;;949:13;;-1:-1:-1;;;;;945:62:105;933:75;;1028:12;;;;1063:15;;;;906:1;899:9;870:218;;;-1:-1:-1;1104:3:105;;629:484;-1:-1:-1;;;;;629:484:105:o;1118:261::-;1297:2;1286:9;1279:21;1260:4;1317:56;1369:2;1358:9;1354:18;1346:6;1317:56;:::i;1384:250::-;1469:1;1479:113;1493:6;1490:1;1487:13;1479:113;;;1569:11;;;1563:18;1550:11;;;1543:39;1515:2;1508:10;1479:113;;;-1:-1:-1;;1626:1:105;1608:16;;1601:27;1384:250::o;1639:271::-;1681:3;1719:5;1713:12;1746:6;1741:3;1734:19;1762:76;1831:6;1824:4;1819:3;1815:14;1808:4;1801:5;1797:16;1762:76;:::i;:::-;1892:2;1871:15;-1:-1:-1;;1867:29:105;1858:39;;;;1899:4;1854:50;;1639:271;-1:-1:-1;;1639:271:105:o;1915:1765::-;2148:2;2200:21;;;2270:13;;2173:18;;;2292:22;;;2119:4;;2148:2;2333;;2351:18;;;;2388:1;2431:15;;;2416:31;;2412:40;;2475:15;;;2119:4;;2539:1112;2555:6;2550:3;2547:15;2539:1112;;;-1:-1:-1;;2624:22:105;;;2620:36;2608:49;;2680:13;;2767:9;;-1:-1:-1;;;;;2763:58:105;2748:74;;2861:11;;2855:18;2893:15;;;2886:27;;;2974:19;;2720:15;;;3006:24;;;3187:21;;;;3053:2;3135:17;;;3123:30;;3119:39;;;3077:15;;;;3232:1;3246:296;3262:8;3257:3;3254:17;3246:296;;;3368:2;3364:7;3355:6;3347;3343:19;3339:33;3332:5;3325:48;3400:42;3435:6;3424:8;3418:15;3400:42;:::i;:::-;3471:17;;;;3390:52;-1:-1:-1;3514:14:105;;;;3290:1;3281:11;3246:296;;;-1:-1:-1;;;3629:12:105;;;;3565:6;-1:-1:-1;;3594:15:105;;;;2581:1;2572:11;2539:1112;;;-1:-1:-1;3668:6:105;;1915:1765;-1:-1:-1;;;;;;;;;;1915:1765:105:o;3685:156::-;3751:20;;3811:4;3800:16;;3790:27;;3780:55;;3831:1;3828;3821:12;3846:252;3910:6;3918;3971:2;3959:9;3950:7;3946:23;3942:32;3939:52;;;3987:1;3984;3977:12;3939:52;4010:27;4027:9;4010:27;:::i;:::-;4000:37;;4056:36;4088:2;4077:9;4073:18;4056:36;:::i;:::-;4046:46;;3846:252;;;;;:::o;4285:1590::-;4487:4;4516:2;4556;4545:9;4541:18;4586:2;4575:9;4568:21;4609:6;4644;4638:13;4675:6;4667;4660:22;4701:2;4691:12;;4734:2;4723:9;4719:18;4712:25;;4796:2;4786:6;4783:1;4779:14;4768:9;4764:30;4760:39;4834:2;4826:6;4822:15;4855:1;4876;4886:960;4902:6;4897:3;4894:15;4886:960;;;4971:22;;;-1:-1:-1;;4967:36:105;4955:49;;5027:13;;5114:9;;-1:-1:-1;;;;;5110:58:105;5095:74;;5208:11;;5202:18;5240:15;;;5233:27;;;5321:19;;5067:15;;;5353:24;;;5443:21;;;;5488:1;;5411:2;5399:15;;;5502:236;5518:8;5513:3;5510:17;5502:236;;;5599:15;;-1:-1:-1;;;;;;5595:42:105;5581:57;;5707:17;;;;5546:1;5537:11;;;;;5664:14;;;;5502:236;;;-1:-1:-1;5824:12:105;;;;5761:5;-1:-1:-1;;;5789:15:105;;;;4928:1;4919:11;4886:960;;;-1:-1:-1;5863:6:105;;4285:1590;-1:-1:-1;;;;;;;;;4285:1590:105:o;5880:803::-;6042:4;6071:2;6111;6100:9;6096:18;6141:2;6130:9;6123:21;6164:6;6199;6193:13;6230:6;6222;6215:22;6268:2;6257:9;6253:18;6246:25;;6330:2;6320:6;6317:1;6313:14;6302:9;6298:30;6294:39;6280:53;;6368:2;6360:6;6356:15;6389:1;6399:255;6413:6;6410:1;6407:13;6399:255;;;6506:2;6502:7;6490:9;6482:6;6478:22;6474:36;6469:3;6462:49;6534:40;6567:6;6558;6552:13;6534:40;:::i;:::-;6524:50;-1:-1:-1;6632:12:105;;;;6597:15;;;;6435:1;6428:9;6399:255;;;-1:-1:-1;6671:6:105;;5880:803;-1:-1:-1;;;;;;;5880:803:105:o;6688:161::-;6755:20;;6815:8;6804:20;;6794:31;;6784:59;;6839:1;6836;6829:12;6854:322;6928:6;6936;6944;6997:2;6985:9;6976:7;6972:23;6968:32;6965:52;;;7013:1;7010;7003:12;6965:52;7036:28;7054:9;7036:28;:::i;:::-;7026:38;;7111:2;7100:9;7096:18;7083:32;7073:42;;7134:36;7166:2;7155:9;7151:18;7134:36;:::i;:::-;7124:46;;6854:322;;;;;:::o;7376:154::-;-1:-1:-1;;;;;7455:5:105;7451:54;7444:5;7441:65;7431:93;;7520:1;7517;7510:12;7535:898;7668:6;7676;7684;7692;7700;7708;7716;7724;7777:3;7765:9;7756:7;7752:23;7748:33;7745:53;;;7794:1;7791;7784:12;7745:53;7833:9;7820:23;7852:31;7877:5;7852:31;:::i;:::-;7902:5;-1:-1:-1;7959:2:105;7944:18;;7931:32;7972:33;7931:32;7972:33;:::i;:::-;8024:7;-1:-1:-1;8083:2:105;8068:18;;8055:32;8096:33;8055:32;8096:33;:::i;:::-;8148:7;-1:-1:-1;8174:37:105;8207:2;8192:18;;8174:37;:::i;:::-;8164:47;;8258:3;8247:9;8243:19;8230:33;8220:43;;8310:3;8299:9;8295:19;8282:33;8272:43;;8334:37;8366:3;8355:9;8351:19;8334:37;:::i;:::-;8324:47;;8390:37;8422:3;8411:9;8407:19;8390:37;:::i;:::-;8380:47;;7535:898;;;;;;;;;;;:::o;8438:272::-;8496:6;8549:2;8537:9;8528:7;8524:23;8520:32;8517:52;;;8565:1;8562;8555:12;8517:52;8604:9;8591:23;8654:6;8647:5;8643:18;8636:5;8633:29;8623:57;;8676:1;8673;8666:12;8715:829;8839:6;8847;8855;8863;8871;8879;8887;8940:3;8928:9;8919:7;8915:23;8911:33;8908:53;;;8957:1;8954;8947:12;8908:53;8996:9;8983:23;9015:31;9040:5;9015:31;:::i;:::-;9065:5;-1:-1:-1;9122:2:105;9107:18;;9094:32;9135:33;9094:32;9135:33;:::i;:::-;9187:7;-1:-1:-1;9246:2:105;9231:18;;9218:32;9259:33;9218:32;9259:33;:::i;:::-;9311:7;-1:-1:-1;9337:37:105;9370:2;9355:18;;9337:37;:::i;:::-;9327:47;;9421:3;9410:9;9406:19;9393:33;9383:43;;9445:37;9477:3;9466:9;9462:19;9445:37;:::i;:::-;9435:47;;9501:37;9533:3;9522:9;9518:19;9501:37;:::i;:::-;9491:47;;8715:829;;;;;;;;;;:::o;9886:127::-;9947:10;9942:3;9938:20;9935:1;9928:31;9978:4;9975:1;9968:15;10002:4;9999:1;9992:15;10018:253;10090:2;10084:9;10132:4;10120:17;;10167:18;10152:34;;10188:22;;;10149:62;10146:88;;;10214:18;;:::i;:::-;10250:2;10243:22;10018:253;:::o;10276:275::-;10347:2;10341:9;10412:2;10393:13;;-1:-1:-1;;10389:27:105;10377:40;;10447:18;10432:34;;10468:22;;;10429:62;10426:88;;;10494:18;;:::i;:::-;10530:2;10523:22;10276:275;;-1:-1:-1;10276:275:105:o;10556:719::-;10636:6;10689:2;10677:9;10668:7;10664:23;10660:32;10657:52;;;10705:1;10702;10695:12;10657:52;10738:9;10732:16;10767:18;10808:2;10800:6;10797:14;10794:34;;;10824:1;10821;10814:12;10794:34;10862:6;10851:9;10847:22;10837:32;;10907:7;10900:4;10896:2;10892:13;10888:27;10878:55;;10929:1;10926;10919:12;10878:55;10958:2;10952:9;10980:2;10976;10973:10;10970:36;;;10986:18;;:::i;:::-;11028:53;11071:2;11052:13;;-1:-1:-1;;11048:27:105;11077:2;11044:36;11028:53;:::i;:::-;11015:66;;11104:2;11097:5;11090:17;11144:7;11139:2;11134;11130;11126:11;11122:20;11119:33;11116:53;;;11165:1;11162;11155:12;11116:53;11178:67;11242:2;11237;11230:5;11226:14;11221:2;11217;11213:11;11178:67;:::i;:::-;-1:-1:-1;11264:5:105;10556:719;-1:-1:-1;;;;10556:719:105:o;11280:306::-;11472:2;11461:9;11454:21;11435:4;11492:45;11533:2;11522:9;11518:18;11510:6;11492:45;:::i;:::-;11484:53;;11573:6;11568:2;11557:9;11553:18;11546:34;11280:306;;;;;:::o;11591:184::-;11661:6;11714:2;11702:9;11693:7;11689:23;11685:32;11682:52;;;11730:1;11727;11720:12;11682:52;-1:-1:-1;11753:16:105;;11591:184;-1:-1:-1;11591:184:105:o;11780:127::-;11841:10;11836:3;11832:20;11829:1;11822:31;11872:4;11869:1;11862:15;11896:4;11893:1;11886:15;11912:168;11985:9;;;12016;;12033:15;;;12027:22;;12013:37;12003:71;;12054:18;;:::i;12085:125::-;12150:9;;;12171:10;;;12168:36;;;12184:18;;:::i;13003:306::-;13091:6;13099;13107;13160:2;13148:9;13139:7;13135:23;13131:32;13128:52;;;13176:1;13173;13166:12;13128:52;13205:9;13199:16;13189:26;;13255:2;13244:9;13240:18;13234:25;13224:35;;13299:2;13288:9;13284:18;13278:25;13268:35;;13003:306;;;;;:::o;13851:268::-;13938:6;13991:2;13979:9;13970:7;13966:23;13962:32;13959:52;;;14007:1;14004;13997:12;13959:52;14039:9;14033:16;14058:31;14083:5;14058:31;:::i;15740:434::-;15792:3;15830:5;15824:12;15857:6;15852:3;15845:19;15883:4;15912:2;15907:3;15903:12;15896:19;;15949:2;15942:5;15938:14;15970:1;15980:169;15994:6;15991:1;15988:13;15980:169;;;16055:13;;16043:26;;16089:12;;;;16124:15;;;;16016:1;16009:9;15980:169;;16179:1945;16384:2;16373:9;16366:21;16396:53;16445:2;16434:9;16430:18;16421:6;16415:13;-1:-1:-1;;;;;563:54:105;551:67;;497:127;16396:53;16347:4;16496:2;16488:6;16484:15;16478:22;16509:52;16557:2;16546:9;16542:18;16528:12;-1:-1:-1;;;;;563:54:105;551:67;;497:127;16509:52;;16615:2;16607:6;16603:15;16597:22;16592:2;16581:9;16577:18;16570:50;16675:2;16667:6;16663:15;16657:22;16651:3;16640:9;16636:19;16629:51;16735:3;16727:6;16723:16;16717:23;16711:3;16700:9;16696:19;16689:52;16796:3;16788:6;16784:16;16778:23;16772:3;16761:9;16757:19;16750:52;16857:3;16849:6;16845:16;16839:23;16833:3;16822:9;16818:19;16811:52;16900:3;16892:6;16888:16;16882:23;16924:3;16963:2;16958;16947:9;16943:18;16936:30;17003:2;16995:6;16991:15;16985:22;16975:32;;;17026:3;17065:2;17060;17049:9;17045:18;17038:30;17117:2;17109:6;17105:15;17099:22;17077:44;;;17140:6;17165:3;17204:2;17199;17188:9;17184:18;17177:30;17230:64;17289:3;17278:9;17274:19;17258:14;17230:64;:::i;:::-;17216:78;;17343:2;17335:6;17331:15;17325:22;17303:44;;17370:2;17366:7;17392:3;17459:2;17447:9;17439:6;17435:22;17431:31;17426:2;17415:9;17411:18;17404:59;17486:51;17530:6;17514:14;17486:51;:::i;:::-;17472:65;;17586:2;17578:6;17574:15;17568:22;17546:44;;;17609:3;17676:2;17664:9;17656:6;17652:22;17648:31;17643:2;17632:9;17628:18;17621:59;17703:51;17747:6;17731:14;17703:51;:::i;:::-;17689:65;;17803:2;17795:6;17791:15;17785:22;17763:44;;;;17827:3;17839:55;17889:3;17878:9;17874:19;17858:14;-1:-1:-1;;;;;563:54:105;551:67;;497:127;17839:55;17931:16;;17925:23;;-1:-1:-1;17968:3:105;17980:55;18015:19;;;17925:23;-1:-1:-1;;;;;563:54:105;551:67;;497:127;17980:55;18077:16;;;;18071:23;18051:18;;18044:51;;;;-1:-1:-1;18112:6:105;16179:1945;-1:-1:-1;16179:1945:105:o;18129:183::-;18189:4;18222:18;18214:6;18211:30;18208:56;;;18244:18;;:::i;:::-;-1:-1:-1;18289:1:105;18285:14;18301:4;18281:25;;18129:183::o;18317:659::-;18382:5;18435:3;18428:4;18420:6;18416:17;18412:27;18402:55;;18453:1;18450;18443:12;18402:55;18482:6;18476:13;18508:4;18532:60;18548:43;18588:2;18548:43;:::i;:::-;18532:60;:::i;:::-;18626:15;;;18712:1;18708:10;;;;18696:23;;18692:32;;;18657:12;;;;18736:15;;;18733:35;;;18764:1;18761;18754:12;18733:35;18800:2;18792:6;18788:15;18812:135;18828:6;18823:3;18820:15;18812:135;;;18894:10;;18882:23;;18925:12;;;;18845;;18812:135;;;-1:-1:-1;18965:5:105;18317:659;-1:-1:-1;;;;;;18317:659:105:o;18981:861::-;19146:6;19154;19162;19170;19178;19186;19239:3;19227:9;19218:7;19214:23;19210:33;19207:53;;;19256:1;19253;19246:12;19207:53;19285:9;19279:16;19269:26;;19335:2;19324:9;19320:18;19314:25;19304:35;;19379:2;19368:9;19364:18;19358:25;19348:35;;19423:2;19412:9;19408:18;19402:25;19392:35;;19471:3;19460:9;19456:19;19450:26;19495:18;19536:2;19528:6;19525:14;19522:34;;;19552:1;19549;19542:12;19522:34;19575:72;19639:7;19630:6;19619:9;19615:22;19575:72;:::i;:::-;19565:82;;19693:3;19682:9;19678:19;19672:26;19656:42;;19723:2;19713:8;19710:16;19707:36;;;19739:1;19736;19729:12;19707:36;;19762:74;19828:7;19817:8;19806:9;19802:24;19762:74;:::i;:::-;19752:84;;;18981:861;;;;;;;;:::o;19847:373::-;20054:2;20043:9;20036:21;20017:4;20074:56;20126:2;20115:9;20111:18;20103:6;20074:56;:::i;:::-;20066:64;;-1:-1:-1;;;;;20170:6:105;20166:47;20161:2;20150:9;20146:18;20139:75;19847:373;;;;;:::o;20225:734::-;20290:5;20343:3;20336:4;20328:6;20324:17;20320:27;20310:55;;20361:1;20358;20351:12;20310:55;20390:6;20384:13;20416:4;20440:60;20456:43;20496:2;20456:43;:::i;20440:60::-;20534:15;;;20620:1;20616:10;;;;20604:23;;20600:32;;;20565:12;;;;20644:15;;;20641:35;;;20672:1;20669;20662:12;20641:35;20708:2;20700:6;20696:15;20720:210;20736:6;20731:3;20728:15;20720:210;;;20809:3;20803:10;20826:31;20851:5;20826:31;:::i;:::-;20870:18;;20908:12;;;;20753;;20720:210;;20964:818;21034:5;21087:3;21080:4;21072:6;21068:17;21064:27;21054:55;;21105:1;21102;21095:12;21054:55;21134:6;21128:13;21160:4;21184:60;21200:43;21240:2;21200:43;:::i;21184:60::-;21278:15;;;21364:1;21360:10;;;;21348:23;;21344:32;;;21309:12;;;;21388:15;;;21385:35;;;21416:1;21413;21406:12;21385:35;21452:2;21444:6;21440:15;21464:289;21480:6;21475:3;21472:15;21464:289;;;21553:3;21547:10;21590:1;21583:5;21580:12;21570:110;;21634:1;21663:2;21659;21652:14;21570:110;21693:18;;21731:12;;;;21497;;21464:289;;21787:858;21852:5;21905:3;21898:4;21890:6;21886:17;21882:27;21872:55;;21923:1;21920;21913:12;21872:55;21952:6;21946:13;21978:4;22002:60;22018:43;22058:2;22018:43;:::i;22002:60::-;22096:15;;;22182:1;22178:10;;;;22166:23;;22162:32;;;22127:12;;;;22206:15;;;22203:35;;;22234:1;22231;22224:12;22203:35;22270:2;22262:6;22258:15;22282:334;22298:6;22293:3;22290:15;22282:334;;;22371:3;22365:10;-1:-1:-1;;;;;22412:5:105;22408:46;22401:5;22398:57;22388:155;;22497:1;22526:2;22522;22515:14;22388:155;22556:18;;22594:12;;;;22315;;22282:334;;22650:1766;22744:6;22797:2;22785:9;22776:7;22772:23;22768:32;22765:52;;;22813:1;22810;22803:12;22765:52;22846:9;22840:16;22875:18;22916:2;22908:6;22905:14;22902:34;;;22932:1;22929;22922:12;22902:34;22955:22;;;;23011:4;22993:16;;;22989:27;22986:47;;;23029:1;23026;23019:12;22986:47;23055:22;;:::i;:::-;23108:2;23102:9;23136:2;23126:8;23123:16;23120:36;;;23152:1;23149;23142:12;23120:36;23179:67;23238:7;23227:8;23223:2;23219:17;23179:67;:::i;:::-;23172:5;23165:82;;23286:2;23282;23278:11;23272:18;23315:2;23305:8;23302:16;23299:36;;;23331:1;23328;23321:12;23299:36;23367:67;23426:7;23415:8;23411:2;23407:17;23367:67;:::i;:::-;23362:2;23355:5;23351:14;23344:91;;23474:2;23470;23466:11;23460:18;23503:2;23493:8;23490:16;23487:36;;;23519:1;23516;23509:12;23487:36;23555:67;23614:7;23603:8;23599:2;23595:17;23555:67;:::i;:::-;23550:2;23543:5;23539:14;23532:91;;23662:2;23658;23654:11;23648:18;23691:2;23681:8;23678:16;23675:36;;;23707:1;23704;23697:12;23675:36;23743:72;23807:7;23796:8;23792:2;23788:17;23743:72;:::i;:::-;23738:2;23731:5;23727:14;23720:96;;23855:3;23851:2;23847:12;23841:19;23885:2;23875:8;23872:16;23869:36;;;23901:1;23898;23891:12;23869:36;23938:67;23997:7;23986:8;23982:2;23978:17;23938:67;:::i;:::-;23932:3;23925:5;23921:15;23914:92;;24045:3;24041:2;24037:12;24031:19;24075:2;24065:8;24062:16;24059:36;;;24091:1;24088;24081:12;24059:36;24128:67;24187:7;24176:8;24172:2;24168:17;24128:67;:::i;:::-;24122:3;24115:5;24111:15;24104:92;;24235:3;24231:2;24227:12;24221:19;24265:2;24255:8;24252:16;24249:36;;;24281:1;24278;24271:12;24249:36;24318:67;24377:7;24366:8;24362:2;24358:17;24318:67;:::i;:::-;24312:3;24301:15;;24294:92;-1:-1:-1;24305:5:105;22650:1766;-1:-1:-1;;;;;22650:1766:105:o;24421:127::-;24482:10;24477:3;24473:20;24470:1;24463:31;24513:4;24510:1;24503:15;24537:4;24534:1;24527:15;25050:1108;25097:3;25141:5;25135:12;25168:4;25163:3;25156:17;25194:57;25245:4;25240:3;25236:14;25222:12;25194:57;:::i;:::-;25270:4;25311:14;;;25305:21;25356:14;;;25342:12;;;25335:36;25420:21;;25450:20;;;25524:23;;;;-1:-1:-1;25270:4:105;;-1:-1:-1;;25488:13:105;;;;-1:-1:-1;25596:379:105;25612:6;25607:3;25604:15;25596:379;;;25681:6;25675:13;25718:1;25714:2;25711:9;25701:160;;-1:-1:-1;;;25752:31:105;;25810:4;25807:1;25800:15;25842:4;25759:1;25832:15;25701:160;25874:17;;25950:15;;;;25913:14;;;;25638:1;25629:11;25596:379;;;25600:3;;26023:4;26016:5;26012:16;26006:23;25984:45;;26072:3;26065:5;26061:15;26054:4;26049:3;26045:14;26038:39;26093:59;26146:5;26130:14;26093:59;:::i;:::-;26086:66;25050:1108;-1:-1:-1;;;;;;;25050:1108:105:o;26163:595::-;26458:6;26447:9;26440:25;26501:6;26496:2;26485:9;26481:18;26474:34;26544:3;26539:2;26528:9;26524:18;26517:31;26421:4;26565:51;26611:3;26600:9;26596:19;26588:6;26565:51;:::i;:::-;-1:-1:-1;;;;;26652:55:105;;;;26647:2;26632:18;;26625:83;-1:-1:-1;26739:3:105;26724:19;26717:35;26557:59;26163:595;-1:-1:-1;;;26163:595:105:o;26763:127::-;26824:10;26819:3;26815:20;26812:1;26805:31;26855:4;26852:1;26845:15;26879:4;26876:1;26869:15;26895:127;26956:10;26951:3;26947:20;26944:1;26937:31;26987:4;26984:1;26977:15;27011:4;27008:1;27001:15;27027:216;27067:1;-1:-1:-1;;;;;27154:2:105;27151:1;27147:10;27176:3;27166:37;;27183:18;;:::i;:::-;27221:10;;27217:20;;;;;27027:216;-1:-1:-1;;27027:216:105:o;27248:380::-;27327:1;27323:12;;;;27370;;;27391:61;;27445:4;27437:6;27433:17;27423:27;;27391:61;27498:2;27490:6;27487:14;27467:18;27464:38;27461:161;;27544:10;27539:3;27535:20;27532:1;27525:31;27579:4;27576:1;27569:15;27607:4;27604:1;27597:15;27633:148;27721:4;27700:12;;;27714;;;27696:31;;27739:13;;27736:39;;;27755:18;;:::i;27786:151::-;27876:4;27869:12;;;27855;;;27851:31;;27894:14;;27891:40;;;27911:18;;:::i;27942:628::-;28229:6;28218:9;28211:25;-1:-1:-1;;;;;28276:6:105;28272:47;28267:2;28256:9;28252:18;28245:75;28356:3;28351:2;28340:9;28336:18;28329:31;28192:4;28377:51;28423:3;28412:9;28408:19;28400:6;28377:51;:::i;28575:363::-;28670:6;28723:2;28711:9;28702:7;28698:23;28694:32;28691:52;;;28739:1;28736;28729:12;28691:52;28772:9;28766:16;28805:18;28797:6;28794:30;28791:50;;;28837:1;28834;28827:12;28791:50;28860:72;28924:7;28915:6;28904:9;28900:22;28860:72;:::i;28943:128::-;29010:9;;;29031:11;;;29028:37;;;29045:18;;:::i;29348:120::-;29388:1;29414;29404:35;;29419:18;;:::i;:::-;-1:-1:-1;29453:9:105;;29348:120::o;29473:135::-;29512:3;29533:17;;;29530:43;;29553:18;;:::i;:::-;-1:-1:-1;29600:1:105;29589:13;;29473:135::o;30146:164::-;30222:13;;30271;;30264:21;30254:32;;30244:60;;30300:1;30297;30290:12;30315:202;30382:6;30435:2;30423:9;30414:7;30410:23;30406:32;30403:52;;;30451:1;30448;30441:12;30403:52;30474:37;30501:9;30474:37;:::i;30522:854::-;30720:4;30768:2;30757:9;30753:18;-1:-1:-1;;;;;30871:2:105;30863:6;30859:15;30848:9;30841:34;30894:2;30932;30927;30916:9;30912:18;30905:30;30955:6;30990;30984:13;31021:6;31013;31006:22;31059:3;31048:9;31044:19;31037:26;;31098:2;31090:6;31086:15;31072:29;;31119:1;31129:169;31143:6;31140:1;31137:13;31129:169;;;31204:13;;31192:26;;31273:15;;;;31238:12;;;;31165:1;31158:9;31129:169;;;31133:3;;31315;31307:11;;;;31366:2;31358:6;31354:15;31349:2;31338:9;31334:18;31327:43;;;30522:854;;;;;;:::o;31381:485::-;31494:6;31502;31510;31563:2;31551:9;31542:7;31538:23;31534:32;31531:52;;;31579:1;31576;31569:12;31531:52;31608:9;31602:16;31592:26;;31658:2;31647:9;31643:18;31637:25;31627:35;;31706:2;31695:9;31691:18;31685:25;31733:18;31725:6;31722:30;31719:50;;;31765:1;31762;31755:12;31719:50;31788:72;31852:7;31843:6;31832:9;31828:22;31788:72;:::i;:::-;31778:82;;;31381:485;;;;;:::o;32065:634::-;32195:6;32203;32211;32219;32227;32235;32243;32251;32304:3;32292:9;32283:7;32279:23;32275:33;32272:53;;;32321:1;32318;32311:12;32272:53;32350:9;32344:16;32334:26;;32400:2;32389:9;32385:18;32379:25;32369:35;;32444:2;32433:9;32429:18;32423:25;32413:35;;32488:2;32477:9;32473:18;32467:25;32457:35;;32532:3;32521:9;32517:19;32511:26;32501:36;;32577:3;32566:9;32562:19;32556:26;32546:36;;32622:3;32611:9;32607:19;32601:26;32591:36;;32646:47;32688:3;32677:9;32673:19;32646:47;:::i;33864:686::-;34140:4;-1:-1:-1;;;;;34250:2:105;34242:6;34238:15;34227:9;34220:34;34302:2;34294:6;34290:15;34285:2;34274:9;34270:18;34263:43;;34342:3;34337:2;34326:9;34322:18;34315:31;34369:56;34420:3;34409:9;34405:19;34397:6;34369:56;:::i;:::-;34473:9;34465:6;34461:22;34456:2;34445:9;34441:18;34434:50;34501:43;34537:6;34529;34501:43;:::i;34923:338::-;-1:-1:-1;;;;;35102:6:105;35098:55;35087:9;35080:74;35190:2;35185;35174:9;35170:18;35163:30;35061:4;35210:45;35251:2;35240:9;35236:18;35228:6;35210:45;:::i;43801:435::-;44034:6;44023:9;44016:25;44077:6;44072:2;44061:9;44057:18;44050:34;44120:6;44115:2;44104:9;44100:18;44093:34;44163:3;44158:2;44147:9;44143:18;44136:31;43997:4;44184:46;44225:3;44214:9;44210:19;44202:6;44184:46;:::i;44241:362::-;44446:6;44435:9;44428:25;44489:6;44484:2;44473:9;44469:18;44462:34;44532:2;44527;44516:9;44512:18;44505:30;44409:4;44552:45;44593:2;44582:9;44578:18;44570:6;44552:45;:::i;46241:287::-;46370:3;46408:6;46402:13;46424:66;46483:6;46478:3;46471:4;46463:6;46459:17;46424:66;:::i;:::-;46506:16;;;;;46241:287;-1:-1:-1;;46241:287:105:o;46533:181::-;46564:1;46590:8;46625:2;46622:1;46618:10;46647:3;46637:37;;46654:18;;:::i;:::-;46692:10;;46688:20;;;;;46533:181;-1:-1:-1;;46533:181:105:o;47080:189::-;47119:1;47145:8;47180:2;47177:1;47173:10;47202:3;47192:37;;47209:18;;:::i;47274:170::-;47341:8;47369:10;;;47381;;;47365:27;;47404:11;;;47401:37;;;47418:18;;:::i;47449:247::-;47520:8;47560:10;;;47572;;;47556:27;47603:20;;;;47520:8;47642:24;;;47632:58;;47670:18;;:::i;:::-;47632:58;;47449:247;;;;:::o;47701:173::-;47769:8;47810:10;;;47798;;;47794:27;;47833:12;;;47830:38;;;47848:18;;:::i;47879:200::-;47945:9;;;47918:4;47973:9;;48001:10;;48013:12;;;47997:29;48036:12;;;48028:21;;47994:56;47991:82;;;48053:18;;:::i;48084:384::-;-1:-1:-1;;;;;;48269:33:105;;48257:46;;48326:13;;48239:3;;48348:74;48326:13;48411:1;48402:11;;48395:4;48383:17;;48348:74;:::i;:::-;48442:16;;;;48460:1;48438:24;;48084:384;-1:-1:-1;;;48084:384:105:o;48473:610::-;48719:13;;48662:3;;48693;;48772:4;48799:15;;;48662:3;48842:175;48856:6;48853:1;48850:13;48842:175;;;48919:13;;48905:28;;48955:14;;;;48992:15;;;;48878:1;48871:9;48842:175;;;-1:-1:-1;;49026:21:105;;;-1:-1:-1;49063:14:105;;;;;-1:-1:-1;;;48473:610:105:o;50273:614::-;50402:6;50410;50463:2;50451:9;50442:7;50438:23;50434:32;50431:52;;;50479:1;50476;50469:12;50431:52;50512:9;50506:16;50541:18;50582:2;50574:6;50571:14;50568:34;;;50598:1;50595;50588:12;50568:34;50621:72;50685:7;50676:6;50665:9;50661:22;50621:72;:::i;:::-;50611:82;;50739:2;50728:9;50724:18;50718:25;50702:41;;50768:2;50758:8;50755:16;50752:36;;;50784:1;50781;50774:12;50752:36;;50807:74;50873:7;50862:8;50851:9;50847:24;50807:74;:::i;:::-;50797:84;;;50273:614;;;;;:::o","linkReferences":{},"immutableReferences":{"91782":[{"start":11738,"length":32},{"start":15700,"length":32}]}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_SwapExactTokensForTokens()":"72b01c7a","test_SwapExactTokensForTokensSupportingFeeOnTransferTokens()":"1998e105","test_SwapTokensForExactTokens()":"7594f3a1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapExactTokensForTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SwapTokensForExactTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Pairs created: USDT/USDC V1 NATIVE/USDC V2 WETH/NATIVE V2.1 TaxToken/NATIVE V2.1\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/integration/LBRouter.t.sol\":\"LiquidityBinRouterForkTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/integration/LBRouter.t.sol\":{\"keccak256\":\"0x21c5218b3f8d47c1ea65dc7313a00c0b9a139acf0fcaca17cfc6a33f53ffb524\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://06fa5dbb30e25ada020cc9d056a31288680bcdab2f7c666396a94130fe1a2d86\",\"dweb:/ipfs/QmbNkX9JRx5vzR7MonXQvfvbdmbD8Hd5jo6W3ztw68EHw1\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapExactTokensForTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapExactTokensForTokensSupportingFeeOnTransferTokens"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SwapTokensForExactTokens"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/integration/LBRouter.t.sol":"LiquidityBinRouterForkTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/integration/LBRouter.t.sol":{"keccak256":"0x21c5218b3f8d47c1ea65dc7313a00c0b9a139acf0fcaca17cfc6a33f53ffb524","urls":["bzz-raw://06fa5dbb30e25ada020cc9d056a31288680bcdab2f7c666396a94130fe1a2d86","dweb:/ipfs/QmbNkX9JRx5vzR7MonXQvfvbdmbD8Hd5jo6W3ztw68EHw1"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":98} \ No newline at end of file diff --git a/abi/LBToken.sol/LBToken.json b/abi/LBToken.sol/LBToken.json deleted file mode 100644 index d9cd7c15..00000000 --- a/abi/LBToken.sol/LBToken.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approveForAll","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"batchBalances","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"batchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"error","name":"LBToken__AddressThisOrZero","inputs":[]},{"type":"error","name":"LBToken__BurnExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBToken__InvalidLength","inputs":[]},{"type":"error","name":"LBToken__SelfApproval","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__SpenderNotApproved","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__TransferExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approveForAll(address,bool)":"e584b654","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","batchTransferFrom(address,address,uint256[],uint256[])":"17fad7fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","symbol()":"95d89b41","totalSupply(uint256)":"bd85b039"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"batchBalances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{\"approveForAll(address,bool)\":{\"params\":{\"approved\":\"The boolean value to grant or revoke permission.\",\"spender\":\"The address of the spender.\"}},\"balanceOf(address,uint256)\":{\"params\":{\"account\":\"The address of the owner.\",\"id\":\"The token id.\"},\"returns\":{\"_0\":\"The amount of tokens of type `id` owned by `account`.\"}},\"balanceOfBatch(address[],uint256[])\":{\"params\":{\"accounts\":\"The addresses of the owners.\",\"ids\":\"The token ids.\"},\"returns\":{\"batchBalances\":\"The balance for each (account, id) pair.\"}},\"batchTransferFrom(address,address,uint256[],uint256[])\":{\"params\":{\"amounts\":\"The list of amounts to transfer for each token id in `ids`.\",\"from\":\"The address of the owner.\",\"ids\":\"The list of token ids.\",\"to\":\"The address of the recipient.\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"owner\":\"The address of the owner.\",\"spender\":\"The address of the spender.\"},\"returns\":{\"_0\":\"True if `spender` is approved to transfer `owner`'s tokens.\"}},\"name()\":{\"returns\":{\"_0\":\"The name of the token.\"}},\"symbol()\":{\"returns\":{\"_0\":\"The symbol of the token.\"}},\"totalSupply(uint256)\":{\"details\":\"This is the amount of token of type `id` minted minus the amount burned.\",\"params\":{\"id\":\"The token id.\"},\"returns\":{\"_0\":\"The total supply of that token id.\"}}},\"stateVariables\":{\"_balances\":{\"details\":\"The mapping from account to token id to account balance.\"},\"_spenderApprovals\":{\"details\":\"Mapping from account to spender approvals.\"},\"_totalSupplies\":{\"details\":\"The mapping from token id to total supply.\"}},\"title\":\"Liquidity Book Token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveForAll(address,bool)\":{\"notice\":\"Grants or revokes permission to `spender` to transfer the caller's lbTokens, according to `approved`.\"},\"balanceOf(address,uint256)\":{\"notice\":\"Returns the amount of tokens of type `id` owned by `account`.\"},\"balanceOfBatch(address[],uint256[])\":{\"notice\":\"Return the balance of multiple (account/id) pairs.\"},\"batchTransferFrom(address,address,uint256[],uint256[])\":{\"notice\":\"Batch transfers `amounts` of `ids` from `from` to `to`.\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Returns true if `spender` is approved to transfer `owner`'s tokens or if `spender` is the `owner`.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply(uint256)\":{\"notice\":\"Returns the total supply of token of type `id`. /**\"}},\"notice\":\"The LBToken is an implementation of a multi-token. It allows to create multi-ERC20 represented by their ids. Its implementation is really similar to the ERC1155 standard the main difference is that it doesn't do any call to the receiver contract to prevent reentrancy. As it's only for ERC20s, the uri function is not implemented. The contract is made for batch operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBToken.sol\":\"LBToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"LBToken__AddressThisOrZero"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__BurnExceedsBalance"},{"inputs":[],"type":"error","name":"LBToken__InvalidLength"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"LBToken__SelfApproval"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"LBToken__SpenderNotApproved"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__TransferExceedsBalance"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"approveForAll"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"batchBalances","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"batchTransferFrom"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"approveForAll(address,bool)":{"params":{"approved":"The boolean value to grant or revoke permission.","spender":"The address of the spender."}},"balanceOf(address,uint256)":{"params":{"account":"The address of the owner.","id":"The token id."},"returns":{"_0":"The amount of tokens of type `id` owned by `account`."}},"balanceOfBatch(address[],uint256[])":{"params":{"accounts":"The addresses of the owners.","ids":"The token ids."},"returns":{"batchBalances":"The balance for each (account, id) pair."}},"batchTransferFrom(address,address,uint256[],uint256[])":{"params":{"amounts":"The list of amounts to transfer for each token id in `ids`.","from":"The address of the owner.","ids":"The list of token ids.","to":"The address of the recipient."}},"isApprovedForAll(address,address)":{"params":{"owner":"The address of the owner.","spender":"The address of the spender."},"returns":{"_0":"True if `spender` is approved to transfer `owner`'s tokens."}},"name()":{"returns":{"_0":"The name of the token."}},"symbol()":{"returns":{"_0":"The symbol of the token."}},"totalSupply(uint256)":{"details":"This is the amount of token of type `id` minted minus the amount burned.","params":{"id":"The token id."},"returns":{"_0":"The total supply of that token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"approveForAll(address,bool)":{"notice":"Grants or revokes permission to `spender` to transfer the caller's lbTokens, according to `approved`."},"balanceOf(address,uint256)":{"notice":"Returns the amount of tokens of type `id` owned by `account`."},"balanceOfBatch(address[],uint256[])":{"notice":"Return the balance of multiple (account/id) pairs."},"batchTransferFrom(address,address,uint256[],uint256[])":{"notice":"Batch transfers `amounts` of `ids` from `from` to `to`."},"isApprovedForAll(address,address)":{"notice":"Returns true if `spender` is approved to transfer `owner`'s tokens or if `spender` is the `owner`."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply(uint256)":{"notice":"Returns the total supply of token of type `id`. /**"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LBToken.sol":"LBToken"},"evmVersion":"paris","libraries":{}},"sources":{"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"}},"version":1},"id":47} \ No newline at end of file diff --git a/abi/LBToken.t.sol/LBTokenCoverage.json b/abi/LBToken.t.sol/LBTokenCoverage.json deleted file mode 100644 index 838805ec..00000000 --- a/abi/LBToken.t.sol/LBTokenCoverage.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approveForAll","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"batchBalances","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"batchBurnFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintBatch","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"error","name":"LBToken__AddressThisOrZero","inputs":[]},{"type":"error","name":"LBToken__BurnExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LBToken__InvalidLength","inputs":[]},{"type":"error","name":"LBToken__SelfApproval","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__SpenderNotApproved","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"LBToken__TransferExceedsBalance","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610c23806100206000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c806395d89b4111610076578063d81d0a151161005b578063d81d0a15146101b1578063e584b654146101c4578063e985e9c5146101d757600080fd5b806395d89b4114610172578063bd85b0391461019157600080fd5b806317fad7fc116100a757806317fad7fc1461012a5780634e1273f41461013f578063805349341461015f57600080fd5b8062fdd58e146100c257806306fdde03146100e8575b600080fd5b6100d56100d03660046107d9565b6101fa565b6040519081526020015b60405180910390f35b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b6040516100df9190610803565b61013d61013836600461089d565b610223565b005b61015261014d36600461092e565b61027c565b6040516100df919061099a565b61013d61016d3660046109de565b610352565b60408051808201909152600381526213109560ea1b602082015261011d565b6100d561019f366004610a5f565b60009081526001602052604090205490565b61013d6101bf3660046109de565b6103b2565b61013d6101d2366004610a78565b61040a565b6101ea6101e5366004610ab4565b610419565b60405190151581526020016100df565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b853361022f828261042c565b6102645760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b610272888888888888610478565b5050505050505050565b6060838261028a82826105db565b8567ffffffffffffffff8111156102a3576102a3610ae7565b6040519080825280602002602001820160405280156102cc578160200160208202803683370190505b50925060005b86811015610347576103228888838181106102ef576102ef610afd565b90506020020160208101906103049190610b13565b87878481811061031657610316610afd565b905060200201356101fa565b84828151811061033457610334610afd565b60209081029190910101526001016102d2565b505050949350505050565b60005b838110156103aa576103988686868481811061037357610373610afd565b9050602002013585858581811061038c5761038c610afd565b905060200201356105fb565b806103a281610b44565b915050610355565b505050505050565b60005b838110156103aa576103f8868686848181106103d3576103d3610afd565b905060200201358585858181106103ec576103ec610afd565b9050602002013561067c565b8061040281610b44565b9150506103b5565b6104153383836106c9565b5050565b6000610425838361042c565b9392505050565b6000816001600160a01b0316836001600160a01b031614806104255750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b828161048482826105db565b8661048e8161077e565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b888110156105725760008a8a838181106104cd576104cd610afd565b90506020020135905060008989848181106104ea576104ea610afd565b600085815260208981526040909120549102929092013592505081811015610547578e83836040516358b4690f60e01b815260040161025b939291906001600160a01b039390931683526020830191909152604082015260600190565b60009283526020868152604080852092849003909255859052909120805490910190556001016104b1565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c6040516105c69493929190610ba8565b60405180910390a45050505050505050505050565b808214610415576040516340311ffd60e11b815260040160405180910390fd5b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561065857604051625b387760e31b81526001600160a01b0386166004820152602481018590526044810184905260640161025b565b60009384526001602090815260408086208054869003905592905292209103905550565b6000828152600160205260408120805483929061069a908490610bda565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b826106d38161077e565b826001600160a01b0316846001600160a01b0316036107105760405163782ee70760e01b81526001600160a01b038516600482015260240161025b565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b038116158061079c57506001600160a01b03811630145b156107ba576040516345c210e760e11b815260040160405180910390fd5b50565b80356001600160a01b03811681146107d457600080fd5b919050565b600080604083850312156107ec57600080fd5b6107f5836107bd565b946020939093013593505050565b600060208083528351808285015260005b8181101561083057858101830151858201604001528201610814565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f84011261086357600080fd5b50813567ffffffffffffffff81111561087b57600080fd5b6020830191508360208260051b850101111561089657600080fd5b9250929050565b600080600080600080608087890312156108b657600080fd5b6108bf876107bd565b95506108cd602088016107bd565b9450604087013567ffffffffffffffff808211156108ea57600080fd5b6108f68a838b01610851565b9096509450606089013591508082111561090f57600080fd5b5061091c89828a01610851565b979a9699509497509295939492505050565b6000806000806040858703121561094457600080fd5b843567ffffffffffffffff8082111561095c57600080fd5b61096888838901610851565b9096509450602087013591508082111561098157600080fd5b5061098e87828801610851565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156109d2578351835292840192918401916001016109b6565b50909695505050505050565b6000806000806000606086880312156109f657600080fd5b6109ff866107bd565b9450602086013567ffffffffffffffff80821115610a1c57600080fd5b610a2889838a01610851565b90965094506040880135915080821115610a4157600080fd5b50610a4e88828901610851565b969995985093965092949392505050565b600060208284031215610a7157600080fd5b5035919050565b60008060408385031215610a8b57600080fd5b610a94836107bd565b915060208301358015158114610aa957600080fd5b809150509250929050565b60008060408385031215610ac757600080fd5b610ad0836107bd565b9150610ade602084016107bd565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b2557600080fd5b610425826107bd565b634e487b7160e01b600052601160045260246000fd5b600060018201610b5657610b56610b2e565b5060010190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610b8f57600080fd5b8260051b80836020870137939093016020019392505050565b604081526000610bbc604083018688610b5d565b8281036020840152610bcf818587610b5d565b979650505050505050565b8082018082111561021d5761021d610b2e56fea264697066735822122030d4ed5017bbc77d470e52ded3bdf3aa2021adbd455a53bd5548088e2b4481fa64736f6c63430008140033","sourceMap":"11990:552:97:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100bd5760003560e01c806395d89b4111610076578063d81d0a151161005b578063d81d0a15146101b1578063e584b654146101c4578063e985e9c5146101d757600080fd5b806395d89b4114610172578063bd85b0391461019157600080fd5b806317fad7fc116100a757806317fad7fc1461012a5780634e1273f41461013f578063805349341461015f57600080fd5b8062fdd58e146100c257806306fdde03146100e8575b600080fd5b6100d56100d03660046107d9565b6101fa565b6040519081526020015b60405180910390f35b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b6040516100df9190610803565b61013d61013836600461089d565b610223565b005b61015261014d36600461092e565b61027c565b6040516100df919061099a565b61013d61016d3660046109de565b610352565b60408051808201909152600381526213109560ea1b602082015261011d565b6100d561019f366004610a5f565b60009081526001602052604090205490565b61013d6101bf3660046109de565b6103b2565b61013d6101d2366004610a78565b61040a565b6101ea6101e5366004610ab4565b610419565b60405190151581526020016100df565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b853361022f828261042c565b6102645760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b610272888888888888610478565b5050505050505050565b6060838261028a82826105db565b8567ffffffffffffffff8111156102a3576102a3610ae7565b6040519080825280602002602001820160405280156102cc578160200160208202803683370190505b50925060005b86811015610347576103228888838181106102ef576102ef610afd565b90506020020160208101906103049190610b13565b87878481811061031657610316610afd565b905060200201356101fa565b84828151811061033457610334610afd565b60209081029190910101526001016102d2565b505050949350505050565b60005b838110156103aa576103988686868481811061037357610373610afd565b9050602002013585858581811061038c5761038c610afd565b905060200201356105fb565b806103a281610b44565b915050610355565b505050505050565b60005b838110156103aa576103f8868686848181106103d3576103d3610afd565b905060200201358585858181106103ec576103ec610afd565b9050602002013561067c565b8061040281610b44565b9150506103b5565b6104153383836106c9565b5050565b6000610425838361042c565b9392505050565b6000816001600160a01b0316836001600160a01b031614806104255750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b828161048482826105db565b8661048e8161077e565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b888110156105725760008a8a838181106104cd576104cd610afd565b90506020020135905060008989848181106104ea576104ea610afd565b600085815260208981526040909120549102929092013592505081811015610547578e83836040516358b4690f60e01b815260040161025b939291906001600160a01b039390931683526020830191909152604082015260600190565b60009283526020868152604080852092849003909255859052909120805490910190556001016104b1565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c6040516105c69493929190610ba8565b60405180910390a45050505050505050505050565b808214610415576040516340311ffd60e11b815260040160405180910390fd5b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561065857604051625b387760e31b81526001600160a01b0386166004820152602481018590526044810184905260640161025b565b60009384526001602090815260408086208054869003905592905292209103905550565b6000828152600160205260408120805483929061069a908490610bda565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b826106d38161077e565b826001600160a01b0316846001600160a01b0316036107105760405163782ee70760e01b81526001600160a01b038516600482015260240161025b565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b038116158061079c57506001600160a01b03811630145b156107ba576040516345c210e760e11b815260040160405180910390fd5b50565b80356001600160a01b03811681146107d457600080fd5b919050565b600080604083850312156107ec57600080fd5b6107f5836107bd565b946020939093013593505050565b600060208083528351808285015260005b8181101561083057858101830151858201604001528201610814565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f84011261086357600080fd5b50813567ffffffffffffffff81111561087b57600080fd5b6020830191508360208260051b850101111561089657600080fd5b9250929050565b600080600080600080608087890312156108b657600080fd5b6108bf876107bd565b95506108cd602088016107bd565b9450604087013567ffffffffffffffff808211156108ea57600080fd5b6108f68a838b01610851565b9096509450606089013591508082111561090f57600080fd5b5061091c89828a01610851565b979a9699509497509295939492505050565b6000806000806040858703121561094457600080fd5b843567ffffffffffffffff8082111561095c57600080fd5b61096888838901610851565b9096509450602087013591508082111561098157600080fd5b5061098e87828801610851565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156109d2578351835292840192918401916001016109b6565b50909695505050505050565b6000806000806000606086880312156109f657600080fd5b6109ff866107bd565b9450602086013567ffffffffffffffff80821115610a1c57600080fd5b610a2889838a01610851565b90965094506040880135915080821115610a4157600080fd5b50610a4e88828901610851565b969995985093965092949392505050565b600060208284031215610a7157600080fd5b5035919050565b60008060408385031215610a8b57600080fd5b610a94836107bd565b915060208301358015158114610aa957600080fd5b809150509250929050565b60008060408385031215610ac757600080fd5b610ad0836107bd565b9150610ade602084016107bd565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b2557600080fd5b610425826107bd565b634e487b7160e01b600052601160045260246000fd5b600060018201610b5657610b56610b2e565b5060010190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610b8f57600080fd5b8260051b80836020870137939093016020019392505050565b604081526000610bbc604083018688610b5d565b8281036020840152610bcf818587610b5d565b979650505050505050565b8082018082111561021d5761021d610b2e56fea264697066735822122030d4ed5017bbc77d470e52ded3bdf3aa2021adbd455a53bd5548088e2b4481fa64736f6c63430008140033","sourceMap":"11990:552:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:141:47;;;;;;:::i;:::-;;:::i;:::-;;;620:25:127;;;608:2;593:18;2821:141:47;;;;;;;;1826:115;1905:29;;;;;;;;;;;;;;;;;1826:115;;;;;;;:::i;4852:256::-;;;;;;:::i;:::-;;:::i;:::-;;3205:471;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12282:258:97:-;;;;;;:::i;:::-;;:::i;2090:100:47:-;2171:12;;;;;;;;;;;;-1:-1:-1;;;2171:12:47;;;;2090:100;;2452:122;;;;;;:::i;:::-;2523:7;2549:18;;;:14;:18;;;;;;;2452:122;12032:244:97;;;;;;:::i;:::-;;:::i;4403:141:47:-;;;;;;:::i;:::-;;:::i;3983:159::-;;;;;;:::i;:::-;;:::i;:::-;;;5742:14:127;;5735:22;5717:41;;5705:2;5690:18;3983:159:47;5577:187:127;2821:141:47;-1:-1:-1;;;;;2933:18:47;;2907:7;2933:18;;;;;;;;;;;:22;;;;;;;;;2821:141;;;;;:::o;4852:256::-;5027:4;5033:10;1207:32;1225:4;1231:7;1207:17;:32::i;:::-;1202:88;;1248:42;;-1:-1:-1;;;1248:42:47;;-1:-1:-1;;;;;6022:15:127;;;1248:42:47;;;6004:34:127;6074:15;;6054:18;;;6047:43;5916:18;;1248:42:47;;;;;;;;1202:88;5059:42:::1;5078:4;5084:2;5088:3;;5093:7;;5059:18;:42::i;:::-;4852:256:::0;;;;;;;;:::o;3205:471::-;3409:30;3363:8;3380:3;1672:30;3363:8;3380:3;1672:12;:30::i;:::-;3485:8;3471:30:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3471:30:47::1;;3455:46;;3541:9;3536:124;3552:19:::0;;::::1;3536:124;;;3615:30;3625:8;;3634:1;3625:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3638:3;;3642:1;3638:6;;;;;;;:::i;:::-;;;;;;;3615:9;:30::i;:::-;3596:13;3610:1;3596:16;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:49;3573:3:::1;;3536:124;;;;3205:471:::0;;;;;;;;:::o;12282:258:97:-;12442:9;12437:97;12457:14;;;12437:97;;;12492:31;12498:4;12504:3;;12508:1;12504:6;;;;;;;:::i;:::-;;;;;;;12512:7;;12520:1;12512:10;;;;;;;:::i;:::-;;;;;;;12492:5;:31::i;:::-;12473:3;;;;:::i;:::-;;;;12437:97;;;;12282:258;;;;;:::o;12032:244::-;12180:9;12175:95;12195:14;;;12175:95;;;12230:29;12236:2;12240:3;;12244:1;12240:6;;;;;;;:::i;:::-;;;;;;;12248:7;;12256:1;12248:10;;;;;;;:::i;:::-;;;;;;;12230:5;:29::i;:::-;12211:3;;;;:::i;:::-;;;;12175:95;;4403:141:47;4492:45;4507:10;4519:7;4528:8;4492:14;:45::i;:::-;4403:141;;:::o;3983:159::-;4079:4;4102:33;4120:5;4127:7;4102:17;:33::i;:::-;4095:40;3983:159;-1:-1:-1;;;3983:159:47:o;5415:165::-;5497:4;5529:7;-1:-1:-1;;;;;5520:16:47;:5;-1:-1:-1;;;;;5520:16:47;;:53;;;-1:-1:-1;;;;;;;5540:24:47;;;;;;;:17;:24;;;;;;;;:33;;;;;;;;;;;;;;;5415:165::o;7238:865::-;7381:3;7393:7;1672:30;7381:3;7393:7;1672:12;:30::i;:::-;7438:2:::1;1468:30;1490:7;1468:21;:30::i;:::-;-1:-1:-1::0;;;;;7507:15:47;;::::2;7456:48;7507:15:::0;;;::::2;::::0;;;;;;;7581:13;;::::2;::::0;;;;;7605:427:::2;7621:14:::0;;::::2;7605:427;;;7652:10;7665:3;;7669:1;7665:6;;;;;;;:::i;:::-;;;;;;;7652:19;;7685:14;7702:7;;7710:1;7702:10;;;;;;;:::i;:::-;7727:19;7749:16:::0;;;7702:10:::2;7749:16:::0;;;;;;;;7702:10;::::2;::::0;;;::::2;;::::0;-1:-1:-1;;7783:20:47;;::::2;7779:82;;;7844:4;7850:2;7854:6;7812:49;;-1:-1:-1::0;;;7812:49:47::2;;;;;;;;;-1:-1:-1::0;;;;;7048:55:127;;;;7030:74;;7135:2;7120:18;;7113:34;;;;7178:2;7163:18;;7156:34;7018:2;7003:18;;6828:368;7779:82:47::2;7904:16;::::0;;;::::2;::::0;;;;;;;7923:20;;;::::2;7904:39:::0;;;7961:14;;;;;;:24;;;;::::2;::::0;;-1:-1:-1;8004:3:47::2;7605:427;;;;8079:2;-1:-1:-1::0;;;;;8047:49:47::2;8073:4;-1:-1:-1::0;;;;;8047:49:47::2;8061:10;-1:-1:-1::0;;;;;8047:49:47::2;;8083:3;;8088:7;;8047:49;;;;;;;;;:::i;:::-;;;;;;;;7446:657;;1712:1:::1;7238:865:::0;;;;;;;;:::o;9202:142::-;9297:7;9286;:18;9282:55;;9313:24;;-1:-1:-1;;;9313:24:47;;;;;;;;;;;6415:418;-1:-1:-1;;;;;6548:18:47;;6494:51;6548:18;;;;;;;;;;;6595:19;;;;;;;;;;;6628:16;;;6624:77;;;6653:48;;-1:-1:-1;;;6653:48:47;;-1:-1:-1;;;;;7048:55:127;;6653:48:47;;;7030:74:127;7120:18;;;7113:34;;;7163:18;;;7156:34;;;7003:18;;6653:48:47;6828:368:127;6624:77:47;6736:18;;;;:14;:18;;;;;;;;:28;;;;;;;6778:19;;;;;6800:16;;6778:38;;-1:-1:-1;6415:418:47:o;5901:191::-;5980:18;;;;:14;:18;;;;;:28;;6002:6;;5980:18;:28;;6002:6;;5980:28;:::i;:::-;;;;-1:-1:-1;;;;;;;6043:18:47;;;:9;:18;;;;;;;;;;;:22;;;;;;;:32;;;;;;;5901:191::o;8404:292::-;8505:5;1468:30;1490:7;1468:21;:30::i;:::-;8535:7:::1;-1:-1:-1::0;;;;;8526:16:47::1;:5;-1:-1:-1::0;;;;;8526:16:47::1;::::0;8522:57:::1;;8551:28;::::0;-1:-1:-1;;;8551:28:47;;-1:-1:-1;;;;;8382:55:127;;8551:28:47::1;::::0;::::1;8364:74:127::0;8337:18;;8551:28:47::1;8218:226:127::0;8522:57:47::1;-1:-1:-1::0;;;;;8590:24:47;;::::1;;::::0;;;:17:::1;:24;::::0;;;;;;;:33;;::::1;::::0;;;;;;;;;;:44;;-1:-1:-1;;8590:44:47::1;::::0;::::1;;::::0;;::::1;::::0;;;8649:40;;5717:41:127;;;8649:40:47::1;::::0;5690:18:127;8649:40:47::1;;;;;;;8404:292:::0;;;;:::o;8841:169::-;-1:-1:-1;;;;;8917:21:47;;;;:49;;-1:-1:-1;;;;;;8942:24:47;;8961:4;8942:24;8917:49;8913:90;;;8975:28;;-1:-1:-1;;;8975:28:47;;;;;;;;;;;8913:90;8841:169;:::o;14:196:127:-;82:20;;-1:-1:-1;;;;;131:54:127;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:127:o;656:548::-;768:4;797:2;826;815:9;808:21;858:6;852:13;901:6;896:2;885:9;881:18;874:34;926:1;936:140;950:6;947:1;944:13;936:140;;;1045:14;;;1041:23;;1035:30;1011:17;;;1030:2;1007:26;1000:66;965:10;;936:140;;;940:3;1125:1;1120:2;1111:6;1100:9;1096:22;1092:31;1085:42;1195:2;1188;1184:7;1179:2;1171:6;1167:15;1163:29;1152:9;1148:45;1144:54;1136:62;;;;656:548;;;;:::o;1209:367::-;1272:8;1282:6;1336:3;1329:4;1321:6;1317:17;1313:27;1303:55;;1354:1;1351;1344:12;1303:55;-1:-1:-1;1377:20:127;;1420:18;1409:30;;1406:50;;;1452:1;1449;1442:12;1406:50;1489:4;1481:6;1477:17;1465:29;;1549:3;1542:4;1532:6;1529:1;1525:14;1517:6;1513:27;1509:38;1506:47;1503:67;;;1566:1;1563;1556:12;1503:67;1209:367;;;;;:::o;1581:922::-;1721:6;1729;1737;1745;1753;1761;1814:3;1802:9;1793:7;1789:23;1785:33;1782:53;;;1831:1;1828;1821:12;1782:53;1854:29;1873:9;1854:29;:::i;:::-;1844:39;;1902:38;1936:2;1925:9;1921:18;1902:38;:::i;:::-;1892:48;;1991:2;1980:9;1976:18;1963:32;2014:18;2055:2;2047:6;2044:14;2041:34;;;2071:1;2068;2061:12;2041:34;2110:70;2172:7;2163:6;2152:9;2148:22;2110:70;:::i;:::-;2199:8;;-1:-1:-1;2084:96:127;-1:-1:-1;2287:2:127;2272:18;;2259:32;;-1:-1:-1;2303:16:127;;;2300:36;;;2332:1;2329;2322:12;2300:36;;2371:72;2435:7;2424:8;2413:9;2409:24;2371:72;:::i;:::-;1581:922;;;;-1:-1:-1;1581:922:127;;-1:-1:-1;1581:922:127;;2462:8;;1581:922;-1:-1:-1;;;1581:922:127:o;2508:773::-;2630:6;2638;2646;2654;2707:2;2695:9;2686:7;2682:23;2678:32;2675:52;;;2723:1;2720;2713:12;2675:52;2763:9;2750:23;2792:18;2833:2;2825:6;2822:14;2819:34;;;2849:1;2846;2839:12;2819:34;2888:70;2950:7;2941:6;2930:9;2926:22;2888:70;:::i;:::-;2977:8;;-1:-1:-1;2862:96:127;-1:-1:-1;3065:2:127;3050:18;;3037:32;;-1:-1:-1;3081:16:127;;;3078:36;;;3110:1;3107;3100:12;3078:36;;3149:72;3213:7;3202:8;3191:9;3187:24;3149:72;:::i;:::-;2508:773;;;;-1:-1:-1;3240:8:127;-1:-1:-1;;;;2508:773:127:o;3286:632::-;3457:2;3509:21;;;3579:13;;3482:18;;;3601:22;;;3428:4;;3457:2;3680:15;;;;3654:2;3639:18;;;3428:4;3723:169;3737:6;3734:1;3731:13;3723:169;;;3798:13;;3786:26;;3867:15;;;;3832:12;;;;3759:1;3752:9;3723:169;;;-1:-1:-1;3909:3:127;;3286:632;-1:-1:-1;;;;;;3286:632:127:o;3923:847::-;4054:6;4062;4070;4078;4086;4139:2;4127:9;4118:7;4114:23;4110:32;4107:52;;;4155:1;4152;4145:12;4107:52;4178:29;4197:9;4178:29;:::i;:::-;4168:39;;4258:2;4247:9;4243:18;4230:32;4281:18;4322:2;4314:6;4311:14;4308:34;;;4338:1;4335;4328:12;4308:34;4377:70;4439:7;4430:6;4419:9;4415:22;4377:70;:::i;:::-;4466:8;;-1:-1:-1;4351:96:127;-1:-1:-1;4554:2:127;4539:18;;4526:32;;-1:-1:-1;4570:16:127;;;4567:36;;;4599:1;4596;4589:12;4567:36;;4638:72;4702:7;4691:8;4680:9;4676:24;4638:72;:::i;:::-;3923:847;;;;-1:-1:-1;3923:847:127;;-1:-1:-1;4729:8:127;;4612:98;3923:847;-1:-1:-1;;;3923:847:127:o;4775:180::-;4834:6;4887:2;4875:9;4866:7;4862:23;4858:32;4855:52;;;4903:1;4900;4893:12;4855:52;-1:-1:-1;4926:23:127;;4775:180;-1:-1:-1;4775:180:127:o;4960:347::-;5025:6;5033;5086:2;5074:9;5065:7;5061:23;5057:32;5054:52;;;5102:1;5099;5092:12;5054:52;5125:29;5144:9;5125:29;:::i;:::-;5115:39;;5204:2;5193:9;5189:18;5176:32;5251:5;5244:13;5237:21;5230:5;5227:32;5217:60;;5273:1;5270;5263:12;5217:60;5296:5;5286:15;;;4960:347;;;;;:::o;5312:260::-;5380:6;5388;5441:2;5429:9;5420:7;5416:23;5412:32;5409:52;;;5457:1;5454;5447:12;5409:52;5480:29;5499:9;5480:29;:::i;:::-;5470:39;;5528:38;5562:2;5551:9;5547:18;5528:38;:::i;:::-;5518:48;;5312:260;;;;;:::o;6101:127::-;6162:10;6157:3;6153:20;6150:1;6143:31;6193:4;6190:1;6183:15;6217:4;6214:1;6207:15;6233:127;6294:10;6289:3;6285:20;6282:1;6275:31;6325:4;6322:1;6315:15;6349:4;6346:1;6339:15;6365:186;6424:6;6477:2;6465:9;6456:7;6452:23;6448:32;6445:52;;;6493:1;6490;6483:12;6445:52;6516:29;6535:9;6516:29;:::i;6556:127::-;6617:10;6612:3;6608:20;6605:1;6598:31;6648:4;6645:1;6638:15;6672:4;6669:1;6662:15;6688:135;6727:3;6748:17;;;6745:43;;6768:18;;:::i;:::-;-1:-1:-1;6815:1:127;6804:13;;6688:135::o;7201:358::-;7301:6;7296:3;7289:19;7271:3;7331:66;7323:6;7320:78;7317:98;;;7411:1;7408;7401:12;7317:98;7447:6;7444:1;7440:14;7499:8;7492:5;7485:4;7480:3;7476:14;7463:45;7528:18;;;;7548:4;7524:29;;7201:358;-1:-1:-1;;;7201:358:127:o;7564:519::-;7841:2;7830:9;7823:21;7804:4;7867:73;7936:2;7925:9;7921:18;7913:6;7905;7867:73;:::i;:::-;7988:9;7980:6;7976:22;7971:2;7960:9;7956:18;7949:50;8016:61;8070:6;8062;8054;8016:61;:::i;:::-;8008:69;7564:519;-1:-1:-1;;;;;;;7564:519:127:o;8088:125::-;8153:9;;;8174:10;;;8171:36;;;8187:18;;:::i","linkReferences":{}},"methodIdentifiers":{"approveForAll(address,bool)":"e584b654","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","batchBurnFrom(address,uint256[],uint256[])":"80534934","batchTransferFrom(address,address,uint256[],uint256[])":"17fad7fc","isApprovedForAll(address,address)":"e985e9c5","mintBatch(address,uint256[],uint256[])":"d81d0a15","name()":"06fdde03","symbol()":"95d89b41","totalSupply(uint256)":"bd85b039"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"batchBalances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchBurnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveForAll(address,bool)\":{\"params\":{\"approved\":\"The boolean value to grant or revoke permission.\",\"spender\":\"The address of the spender.\"}},\"balanceOf(address,uint256)\":{\"params\":{\"account\":\"The address of the owner.\",\"id\":\"The token id.\"},\"returns\":{\"_0\":\"The amount of tokens of type `id` owned by `account`.\"}},\"balanceOfBatch(address[],uint256[])\":{\"params\":{\"accounts\":\"The addresses of the owners.\",\"ids\":\"The token ids.\"},\"returns\":{\"batchBalances\":\"The balance for each (account, id) pair.\"}},\"batchTransferFrom(address,address,uint256[],uint256[])\":{\"params\":{\"amounts\":\"The list of amounts to transfer for each token id in `ids`.\",\"from\":\"The address of the owner.\",\"ids\":\"The list of token ids.\",\"to\":\"The address of the recipient.\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"owner\":\"The address of the owner.\",\"spender\":\"The address of the spender.\"},\"returns\":{\"_0\":\"True if `spender` is approved to transfer `owner`'s tokens.\"}},\"name()\":{\"returns\":{\"_0\":\"The name of the token.\"}},\"symbol()\":{\"returns\":{\"_0\":\"The symbol of the token.\"}},\"totalSupply(uint256)\":{\"details\":\"This is the amount of token of type `id` minted minus the amount burned.\",\"params\":{\"id\":\"The token id.\"},\"returns\":{\"_0\":\"The total supply of that token id.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveForAll(address,bool)\":{\"notice\":\"Grants or revokes permission to `spender` to transfer the caller's lbTokens, according to `approved`.\"},\"balanceOf(address,uint256)\":{\"notice\":\"Returns the amount of tokens of type `id` owned by `account`.\"},\"balanceOfBatch(address[],uint256[])\":{\"notice\":\"Return the balance of multiple (account/id) pairs.\"},\"batchTransferFrom(address,address,uint256[],uint256[])\":{\"notice\":\"Batch transfers `amounts` of `ids` from `from` to `to`.\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Returns true if `spender` is approved to transfer `owner`'s tokens or if `spender` is the `owner`.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply(uint256)\":{\"notice\":\"Returns the total supply of token of type `id`. /**\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBToken.t.sol\":\"LBTokenCoverage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"test/LBToken.t.sol\":{\"keccak256\":\"0x846b30cf922f049da50a1c52f360a9d9e6ae772f2b49f65258036bb0257adb6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://891fbdd2b12787cc7feeba165ced8f8bc7a1ba180063bc46ca7dbd30d9003dec\",\"dweb:/ipfs/QmYxUN4Ru7sTzKVztsN1gSJdRBgVs5SEU5ERc8FbRYAuyU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"LBToken__AddressThisOrZero"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__BurnExceedsBalance"},{"inputs":[],"type":"error","name":"LBToken__InvalidLength"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"LBToken__SelfApproval"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"LBToken__SpenderNotApproved"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"LBToken__TransferExceedsBalance"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"approveForAll"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"batchBalances","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"batchBurnFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"batchTransferFrom"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"approveForAll(address,bool)":{"params":{"approved":"The boolean value to grant or revoke permission.","spender":"The address of the spender."}},"balanceOf(address,uint256)":{"params":{"account":"The address of the owner.","id":"The token id."},"returns":{"_0":"The amount of tokens of type `id` owned by `account`."}},"balanceOfBatch(address[],uint256[])":{"params":{"accounts":"The addresses of the owners.","ids":"The token ids."},"returns":{"batchBalances":"The balance for each (account, id) pair."}},"batchTransferFrom(address,address,uint256[],uint256[])":{"params":{"amounts":"The list of amounts to transfer for each token id in `ids`.","from":"The address of the owner.","ids":"The list of token ids.","to":"The address of the recipient."}},"isApprovedForAll(address,address)":{"params":{"owner":"The address of the owner.","spender":"The address of the spender."},"returns":{"_0":"True if `spender` is approved to transfer `owner`'s tokens."}},"name()":{"returns":{"_0":"The name of the token."}},"symbol()":{"returns":{"_0":"The symbol of the token."}},"totalSupply(uint256)":{"details":"This is the amount of token of type `id` minted minus the amount burned.","params":{"id":"The token id."},"returns":{"_0":"The total supply of that token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"approveForAll(address,bool)":{"notice":"Grants or revokes permission to `spender` to transfer the caller's lbTokens, according to `approved`."},"balanceOf(address,uint256)":{"notice":"Returns the amount of tokens of type `id` owned by `account`."},"balanceOfBatch(address[],uint256[])":{"notice":"Return the balance of multiple (account/id) pairs."},"batchTransferFrom(address,address,uint256[],uint256[])":{"notice":"Batch transfers `amounts` of `ids` from `from` to `to`."},"isApprovedForAll(address,address)":{"notice":"Returns true if `spender` is approved to transfer `owner`'s tokens or if `spender` is the `owner`."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply(uint256)":{"notice":"Returns the total supply of token of type `id`. /**"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBToken.t.sol":"LBTokenCoverage"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"test/LBToken.t.sol":{"keccak256":"0x846b30cf922f049da50a1c52f360a9d9e6ae772f2b49f65258036bb0257adb6e","urls":["bzz-raw://891fbdd2b12787cc7feeba165ced8f8bc7a1ba180063bc46ca7dbd30d9003dec","dweb:/ipfs/QmYxUN4Ru7sTzKVztsN1gSJdRBgVs5SEU5ERc8FbRYAuyU"],"license":"MIT"}},"version":1},"id":97} \ No newline at end of file diff --git a/abi/LBToken.t.sol/LBTokenTest.json b/abi/LBToken.t.sol/LBTokenTest.json deleted file mode 100644 index 4ea1fed9..00000000 --- a/abi/LBToken.t.sol/LBTokenTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"idToAmount0","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"idToAmount1","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lbToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract LBTokenCoverage"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_ApprovedForAll","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_BalanceOfBatch","inputs":[{"name":"cases","type":"tuple[]","internalType":"struct LBTokenTest.BalanceCase[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"mintAmount","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_BatchBurn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"burns","type":"tuple[]","internalType":"struct LBTokenTest.BurnCase[]","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"mintAmount","type":"uint256","internalType":"uint256"},{"name":"burnAmount","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_BatchMint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"mints","type":"tuple[]","internalType":"struct LBTokenTest.MintCase[]","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"mintAmount","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_BatchTransfer","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"mints","type":"tuple[]","internalType":"struct LBTokenTest.MintCase[]","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"mintAmount","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_BatchTransferFromPartial","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"mints","type":"tuple[]","internalType":"struct LBTokenTest.MintCase[]","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"mintAmount","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_RevertFromBalanceExceeded","inputs":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_RevertOnInvalidLength","inputs":[{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SetApprovalOnSelf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Name","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_RevertForAddressZeroOrThis","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Symbol","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b50615de88061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80635f8948ff116100ee578063b5508aa911610097578063bf1efaaa11610071578063bf1efaaa14610344578063d41922d914610357578063d4b9796e1461036a578063e20c9f711461038a57600080fd5b8063b5508aa914610311578063ba414fa614610319578063ba9db7b01461033157600080fd5b806385226c81116100c857806385226c81146102e15780638c5f422c146102f6578063916a17c61461030957600080fd5b80635f8948ff146102b157806366d9a9a0146102c457806378114d2d146102d957600080fd5b80632c88fea41161015b5780633a4ca189116101355780633a4ca189146102865780633e5e3c231461028e5780633f7286f41461029657806342f917f41461029e57600080fd5b80632c88fea4146102355780632d57f2dd1461024857806334f1f9b11461025b57600080fd5b80631ed7831c1161018c5780631ed7831c146101f857806322b357511461020d5780632ade38801461022057600080fd5b80630960724e146101b35780630a9254e4146101e65780631490c7d4146101f0575b600080fd5b6101d36101c13660046145da565b601e6020526000908152604090205481565b6040519081526020015b60405180910390f35b6101ee610392565b005b6101ee6103f5565b6102006104c1565b6040516101dd9190614637565b6101ee61021b36600461466d565b610523565b61022861119c565b6040516101dd91906146ff565b6101ee6102433660046147bf565b6112de565b6101ee610256366004614898565b611789565b601c5461026e906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b6101ee611d57565b610200612041565b6102006120a1565b6101ee6102ac366004614962565b612101565b6101ee6102bf366004614a07565b61242a565b6102cc612b4d565b6040516101dd9190614a65565b6101ee612c33565b6102e9612d17565b6040516101dd9190614b18565b6101ee610304366004614b7a565b612de7565b6102cc6132bd565b6102e96133a3565b610321613473565b60405190151581526020016101dd565b6101ee61033f366004614bc8565b613528565b6101ee610352366004614a07565b613b90565b6101ee610365366004614cf4565b614283565b6101d36103783660046145da565b601d6020526000908152604090205481565b610200614419565b60405161039e906145cd565b604051809103906000f0801580156103ba573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b601c54604080516395d89b4160e01b815290516104bf926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610440573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104689190810190614d4e565b6040518060400160405280600381526020016213109560ea1b8152506040518060400160405280600e81526020017f746573745f53796d626f6c3a3a31000000000000000000000000000000000000815250614479565b565b6060601480548060200260200160405190810160405280929190818152602001828054801561051957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104fb575b5050505050905090565b601c54600080516020615d2783398151915290634c63e562906001600160a01b0387811691161480159061055f57506001600160a01b03861615155b80156105795750601c546001600160a01b03868116911614155b801561058d57506001600160a01b03851615155b80156105a75750601c546001600160a01b03868116911614155b80156105c55750846001600160a01b0316866001600160a01b031614155b6040518263ffffffff1660e01b81526004016105e5911515815260200190565b60006040518083038186803b1580156105fd57600080fd5b505afa158015610611573d6000803e3d6000fd5b5060009250600191506106219050565b60405190808252806020026020018201604052801561064a578160200160208202803683370190505b506040805160018082528183019092529192506000919060208083019080368337019050509050838260008151811061068557610685614de2565b60200260200101818152505082816000815181106106a5576106a5614de2565b6020908102919091010152601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a15906106e490899086908690600401614e28565b600060405180830381600087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b0388166004820152600080516020615d2783398151915292506306447d569150602401600060405180830381600087803b15801561076557600080fd5b505af1158015610779573d6000803e3d6000fd5b5050604080516001600160a01b038a81166024830152891660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663548f773d60e01b179052905163f28dceb360e01b8152600080516020615d27833981519152935063f28dceb392506107f69190600401614e66565b600060405180830381600087803b15801561081057600080fd5b505af1158015610824573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061085e908990899087908790600401614e79565b600060405180830381600087803b15801561087857600080fd5b505af115801561088c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ee57600080fd5b505af1158015610902573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b0389166004820152600080516020615d2783398151915292506306447d569150602401600060405180830381600087803b15801561095557600080fd5b505af1158015610969573d6000803e3d6000fd5b5050601c546040516339612d9560e21b81526001600160a01b03898116600483015260016024830152909116925063e584b6549150604401600060405180830381600087803b1580156109bb57600080fd5b505af11580156109cf573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050601c5460405163e985e9c560e01b81526001600160a01b038a811660048301528981166024830152610b009450909116915063e985e9c590604401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190614ec2565b60016040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a310000000000008152506144da565b6040516303223eab60e11b81526001600160a01b0386166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015610b4f57600080fd5b505af1158015610b63573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150610b9d908990899087908790600401614e79565b600060405180830381600087803b158015610bb757600080fd5b505af1158015610bcb573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b5050601c54604051627eeac760e11b81526001600160a01b038a8116600483015260248201899052610cf99450909116915062fdd58e90604401602060405180830381865afa158015610c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbc9190614ee4565b60006040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a3200000000000081525061450f565b601c54604051627eeac760e11b81526001600160a01b03878116600483015260248201879052610daa92169062fdd58e90604401602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190614ee4565b846040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a3300000000000081525061450f565b6040516303223eab60e11b81526001600160a01b0387166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b5050601c546040516339612d9560e21b81526001600160a01b03898116600483015260006024830152909116925063e584b6549150604401600060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ed557600080fd5b505af1158015610ee9573d6000803e3d6000fd5b5050601c5460405163e985e9c560e01b81526001600160a01b038a811660048301528981166024830152610fa49450909116915063e985e9c590604401602060405180830381865afa158015610f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f679190614ec2565b60006040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a340000000000008152506144da565b6040516303223eab60e11b81526001600160a01b0386166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b5050604080516001600160a01b038a81166024830152891660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663548f773d60e01b179052905163f28dceb360e01b8152600080516020615d27833981519152935063f28dceb392506110849190600401614e66565b600060405180830381600087803b15801561109e57600080fd5b505af11580156110b2573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc91506110ec908990899087908790600401614e79565b600060405180830381600087803b15801561110657600080fd5b505af115801561111a573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561117c57600080fd5b505af1158015611190573d6000803e3d6000fd5b50505050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156112d557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156112be57838290600052602060002001805461123190614efd565b80601f016020809104026020016040519081016040528092919081815260200182805461125d90614efd565b80156112aa5780601f1061127f576101008083540402835291602001916112aa565b820191906000526020600020905b81548152906001019060200180831161128d57829003601f168201915b505050505081526020019060010190611212565b5050505081525050815260200190600101906111c0565b50505050905090565b604051632631f2b160e11b81526000198214156004820152600080516020615d2783398151915290634c63e5629060240160006040518083038186803b15801561132757600080fd5b505afa15801561133b573d6000803e3d6000fd5b50600092506001915061134b9050565b604051908082528060200260200182016040528015611374578160200160208202803683370190505b50604080516001808252818301909252919250600091906020808301908036833701905050905083826000815181106113af576113af614de2565b60200260200101818152505082816000815181106113cf576113cf614de2565b6020908102919091010152601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a159061140f9060019086908690600401614e28565b600060405180830381600087803b15801561142957600080fd5b505af115801561143d573d6000803e3d6000fd5b5050505082600161144e9190614f4d565b8160008151811061146157611461614de2565b6020908102919091010152600080516020615d2783398151915263f28dceb36358b4690f60e01b6001876114958883614f4d565b6040516001600160a01b0390931660248401526044830191909152606482015260840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526114fd91600401614e66565b600060405180830381600087803b15801561151757600080fd5b505af115801561152b573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b15801561157657600080fd5b505af115801561158a573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc91506115c69060019060029087908790600401614e79565b600060405180830381600087803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b50600080516020615d27833981519152925063f28dceb39150625b387760e31b90506001876116238883614f4d565b6040516001600160a01b0390931660248401526044830191909152606482015260840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825261168b91600401614e66565b600060405180830381600087803b1580156116a557600080fd5b505af11580156116b9573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b15801561170457600080fd5b505af1158015611718573d6000803e3d6000fd5b5050601c54604051632014d24d60e21b81526001600160a01b039091169250638053493491506117519060019086908690600401614e28565b600060405180830381600087803b15801561176b57600080fd5b505af115801561177f573d6000803e3d6000fd5b5050505050505050565b8051604051632631f2b160e11b81529015156004820152600080516020615d2783398151915290634c63e5629060240160006040518083038186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b5060009250600191506117f59050565b60405190808252806020026020018201604052801561181e578160200160208202803683370190505b5060408051600180825281830190925291925060009190602080830190803683370190505090506000835167ffffffffffffffff811115611861576118616147e1565b60405190808252806020026020018201604052801561188a578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156118a9576118a96147e1565b6040519080825280602002602001820160405280156118d2578160200160208202803683370190505b50905060005b8551811015611b8c578551600080516020615d2783398151915290634c63e5629060009089908590811061190e5761190e614de2565b6020026020010151600001516001600160a01b0316141580156119675750601c5488516001600160a01b039091169089908590811061194f5761194f614de2565b6020026020010151600001516001600160a01b031614155b6040518263ffffffff1660e01b8152600401611987911515815260200190565b60006040518083038186803b15801561199f57600080fd5b505afa1580156119b3573d6000803e3d6000fd5b50505050600060405180604001604052808884815181106119d6576119d6614de2565b60200260200101516020015181526020018884815181106119f9576119f9614de2565b6020026020010151604001518152509050611a1381614544565b8060200151601d6000836000015181526020019081526020016000206000828254611a3e9190614f4d565b9091555050805186518790600090611a5857611a58614de2565b602002602001018181525050806020015185600081518110611a7c57611a7c614de2565b6020908102919091010152601c5487516001600160a01b039091169063d81d0a1590899085908110611ab057611ab0614de2565b60200260200101516000015188886040518463ffffffff1660e01b8152600401611adc93929190614e28565b600060405180830381600087803b158015611af657600080fd5b505af1158015611b0a573d6000803e3d6000fd5b505050508060000151848381518110611b2557611b25614de2565b602002602001018181525050868281518110611b4357611b43614de2565b602002602001015160000151838381518110611b6157611b61614de2565b6001600160a01b03909216602092830291909101909101525080611b8481614f66565b9150506118d8565b50601c546040516313849cfd60e21b81526000916001600160a01b031690634e1273f490611bc09085908790600401614f7f565b600060405180830381865afa158015611bdd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c059190810190614fad565b905060005b8651811015611d4e57611d3c828281518110611c2857611c28614de2565b6020026020010151601c60009054906101000a90046001600160a01b03166001600160a01b031662fdd58e8a8581518110611c6557611c65614de2565b6020026020010151600001518b8681518110611c8357611c83614de2565b6020026020010151602001516040518363ffffffff1660e01b8152600401611cc09291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190614ee4565b6040518060400160405280601a81526020017f7465737446757a7a5f42616c616e63654f6642617463683a3a3100000000000081525061450f565b80611d4681614f66565b915050611c0a565b50505050505050565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805160048082526024820183526020820180516001600160e01b03166345c210e760e11b179052915163f28dceb360e01b8152929350600080516020615d278339815191529263f28dceb392611df3929101614e66565b600060405180830381600087803b158015611e0d57600080fd5b505af1158015611e21573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b158015611e6c57600080fd5b505af1158015611e80573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150611ebc9060019060009087908790600401614e79565b600060405180830381600087803b158015611ed657600080fd5b505af1158015611eea573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b03166345c210e760e11b179052915163f28dceb360e01b8152600080516020615d27833981519152945063f28dceb39350611f439201614e66565b600060405180830381600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b158015611fbc57600080fd5b505af1158015611fd0573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061200b90600190849087908790600401614e79565b600060405180830381600087803b15801561202557600080fd5b505af1158015612039573d6000803e3d6000fd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610519576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104fb575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610519576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104fb575050505050905090565b600080516020615d27833981519152634c63e5626001600160a01b0383161580159061213b5750601c546001600160a01b03848116911614155b6040518263ffffffff1660e01b815260040161215b911515815260200190565b60006040518083038186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b0384166004820152600080516020615d2783398151915292506306447d569150602401600060405180830381600087803b1580156121da57600080fd5b505af11580156121ee573d6000803e3d6000fd5b5050604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663782ee70760e01b179052905163f28dceb360e01b8152600080516020615d27833981519152935063f28dceb392506122639190600401614e66565b600060405180830381600087803b15801561227d57600080fd5b505af1158015612291573d6000803e3d6000fd5b5050601c546040516339612d9560e21b81526001600160a01b03858116600483015260016024830152909116925063e584b6549150604401600060405180830381600087803b1580156122e357600080fd5b505af11580156122f7573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b5050601c5460405163e985e9c560e01b81526001600160a01b038581166004830181905260248301526124279450909116915063e985e9c590604401602060405180830381865afa1580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190614ec2565b60016040518060400160405280601d81526020017f7465737446757a7a5f536574417070726f76616c4f6e53656c663a3a310000008152506144da565b50565b600080516020615d27833981519152634c63e5626001600160a01b038516158015906124645750601c546001600160a01b03868116911614155b801561247857506001600160a01b03841615155b80156124925750601c546001600160a01b03858116911614155b80156124b05750836001600160a01b0316856001600160a01b031614155b80156124bd575060008351115b6040518263ffffffff1660e01b81526004016124dd911515815260200190565b60006040518083038186803b1580156124f557600080fd5b505afa158015612509573d6000803e3d6000fd5b505050506000815167ffffffffffffffff811115612529576125296147e1565b604051908082528060200260200182016040528015612552578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612571576125716147e1565b60405190808252806020026020018201604052801561259a578160200160208202803683370190505b50905060005b83518110156126985760008482815181106125bd576125bd614de2565b602002602001015160000151905060008583815181106125df576125df614de2565b6020908102919091018101518101516000848152601d90925260409091205490915061260d81600019615033565b8211156126235761262081600019615033565b91505b61262d8282614f4d565b6000848152601d602052604090208190558651909150839087908690811061265757612657614de2565b6020026020010181815250508185858151811061267657612676614de2565b602002602001018181525050505050808061269090614f66565b9150506125a0565b506040516303223eab60e11b81526001600160a01b0386166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b1580156126e857600080fd5b505af11580156126fc573d6000803e3d6000fd5b5050601c5460405163d81d0a1560e01b81526001600160a01b03909116925063d81d0a15915061273490889086908690600401614e28565b600060405180830381600087803b15801561274e57600080fd5b505af1158015612762573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061279c908890889087908790600401614e79565b600060405180830381600087803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561282c57600080fd5b505af1158015612840573d6000803e3d6000fd5b5050505060005b825181101561203957601c548351612933916001600160a01b03169062fdd58e90899087908690811061287c5761287c614de2565b60200260200101516040518363ffffffff1660e01b81526004016128b59291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156128d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f69190614ee4565b60006040518060400160405280601981526020017f7465737446757a7a5f42617463685472616e736665723a3a310000000000000081525061450f565b601c548351612a41916001600160a01b03169062fdd58e90889087908690811061295f5761295f614de2565b60200260200101516040518363ffffffff1660e01b81526004016129989291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156129b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d99190614ee4565b601d60008685815181106129ef576129ef614de2565b60200260200101518152602001908152602001600020546040518060400160405280601981526020017f7465737446757a7a5f42617463685472616e736665723a3a320000000000000081525061450f565b601c548351612b3b916001600160a01b03169063bd85b03990869085908110612a6c57612a6c614de2565b60200260200101516040518263ffffffff1660e01b8152600401612a9291815260200190565b602060405180830381865afa158015612aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad39190614ee4565b601d6000868581518110612ae957612ae9614de2565b60200260200101518152602001908152602001600020546040518060400160405280601981526020017f7465737446757a7a5f42617463685472616e736665723a3a330000000000000081525061450f565b80612b4581614f66565b915050612847565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156112d55760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612c1b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612bdd5790505b50505050508152505081526020019060010190612b71565b601c54604080516306fdde0360e01b815290516104bf926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015612c7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ca69190810190614d4e565b6040518060400160405280601481526020017f4c697175696469747920426f6f6b20546f6b656e0000000000000000000000008152506040518060400160405280600c81526020017f746573745f4e616d653a3a310000000000000000000000000000000000000000815250614479565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156112d5578382906000526020600020018054612d5a90614efd565b80601f0160208091040260200160405190810160405280929190818152602001828054612d8690614efd565b8015612dd35780601f10612da857610100808354040283529160200191612dd3565b820191906000526020600020905b815481529060010190602001808311612db657829003601f168201915b505050505081526020019060010190612d3b565b600080516020615d27833981519152634c63e5626001600160a01b03841615801590612e215750601c546001600160a01b03858116911614155b8015612e2e575060008351115b6040518263ffffffff1660e01b8152600401612e4e911515815260200190565b60006040518083038186803b158015612e6657600080fd5b505afa158015612e7a573d6000803e3d6000fd5b505050506000815167ffffffffffffffff811115612e9a57612e9a6147e1565b604051908082528060200260200182016040528015612ec3578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612ee257612ee26147e1565b604051908082528060200260200182016040528015612f0b578160200160208202803683370190505b50905060005b835181101561302957612f3c848281518110612f2f57612f2f614de2565b6020026020010151614544565b838181518110612f4e57612f4e614de2565b602002602001015160200151828281518110612f6c57612f6c614de2565b602002602001018181525050838181518110612f8a57612f8a614de2565b602002602001015160000151838281518110612fa857612fa8614de2565b602002602001018181525050838181518110612fc657612fc6614de2565b602002602001015160200151601d6000868481518110612fe857612fe8614de2565b602002602001015160000151815260200190815260200160002060008282546130119190614f4d565b9091555081905061302181614f66565b915050612f11565b50601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a159061305e90879086908690600401614e28565b600060405180830381600087803b15801561307857600080fd5b505af115801561308c573d6000803e3d6000fd5b5050505060005b82518110156132b657601c5483516131aa916001600160a01b03169062fdd58e9088908790869081106130c8576130c8614de2565b60200260200101516040518363ffffffff1660e01b81526004016131019291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801561311e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131429190614ee4565b601d600086858151811061315857613158614de2565b60200260200101518152602001908152602001600020546040518060400160405280601581526020017f7465737446757a7a5f42617463684d696e743a3a31000000000000000000000081525061450f565b601c5483516132a4916001600160a01b03169063bd85b039908690859081106131d5576131d5614de2565b60200260200101516040518263ffffffff1660e01b81526004016131fb91815260200190565b602060405180830381865afa158015613218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323c9190614ee4565b601d600086858151811061325257613252614de2565b60200260200101518152602001908152602001600020546040518060400160405280601581526020017f7465737446757a7a5f42617463684d696e743a3a32000000000000000000000081525061450f565b806132ae81614f66565b915050613093565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156112d55760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561338b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161334d5790505b505050505081525050815260200190600101906132e1565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156112d55783829060005260206000200180546133e690614efd565b80601f016020809104026020016040519081016040528092919081815260200182805461341290614efd565b801561345f5780601f106134345761010080835404028352916020019161345f565b820191906000526020600020905b81548152906001019060200180831161344257829003601f168201915b5050505050815260200190600101906133c7565b60075460009060ff161561348b575060075460ff1690565b604051630667f9d760e41b8152600080516020615d27833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156134fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135219190614ee4565b1415905090565b600080516020615d27833981519152634c63e5626001600160a01b038416158015906135625750601c546001600160a01b03858116911614155b801561356f575060008351115b6040518263ffffffff1660e01b815260040161358f911515815260200190565b60006040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506000815167ffffffffffffffff8111156135db576135db6147e1565b604051908082528060200260200182016040528015613604578160200160208202803683370190505b5090506000825167ffffffffffffffff811115613623576136236147e1565b60405190808252806020026020018201604052801561364c578160200160208202803683370190505b5090506000835167ffffffffffffffff81111561366b5761366b6147e1565b604051908082528060200260200182016040528015613694578160200160208202803683370190505b50905060005b845181101561382f57600060405180604001604052808784815181106136c2576136c2614de2565b60200260200101516000015181526020018784815181106136e5576136e5614de2565b60200260200101516020015181525090506136ff81614544565b61372186838151811061371457613714614de2565b6020026020010151614587565b8060200151601d600083600001518152602001908152602001600020600082825461374c9190614f4d565b9250508190555085828151811061376557613765614de2565b602002602001015160400151601e60008360000151815260200190815260200160002060008282546137979190614f4d565b9091555050805185518690849081106137b2576137b2614de2565b60200260200101818152505080602001518483815181106137d5576137d5614de2565b6020026020010181815250508582815181106137f3576137f3614de2565b60200260200101516040015183838151811061381157613811614de2565b6020908102919091010152508061382781614f66565b91505061369a565b50601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a159061386490889087908790600401614e28565b600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b5050601c54604051632014d24d60e21b81526001600160a01b039091169250638053493491506138ca90889087908690600401614e28565b600060405180830381600087803b1580156138e457600080fd5b505af11580156138f8573d6000803e3d6000fd5b5050505060005b835181101561203957601c548451613a4d916001600160a01b03169062fdd58e90899088908690811061393457613934614de2565b60200260200101516040518363ffffffff1660e01b815260040161396d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801561398a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ae9190614ee4565b601e60008785815181106139c4576139c4614de2565b6020026020010151815260200190815260200160002054601d60008886815181106139f1576139f1614de2565b6020026020010151815260200190815260200160002054613a129190615033565b6040518060400160405280601581526020017f7465737446757a7a5f42617463684275726e3a3a31000000000000000000000081525061450f565b601c548451613b7e916001600160a01b03169063bd85b03990879085908110613a7857613a78614de2565b60200260200101516040518263ffffffff1660e01b8152600401613a9e91815260200190565b602060405180830381865afa158015613abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613adf9190614ee4565b601e6000878581518110613af557613af5614de2565b6020026020010151815260200190815260200160002054601d6000888681518110613b2257613b22614de2565b6020026020010151815260200190815260200160002054613b439190615033565b6040518060400160405280601581526020017f7465737446757a7a5f42617463684275726e3a3a32000000000000000000000081525061450f565b80613b8881614f66565b9150506138ff565b600080516020615d27833981519152634c63e5626001600160a01b03851615801590613bca5750601c546001600160a01b03868116911614155b8015613bde57506001600160a01b03841615155b8015613bf85750601c546001600160a01b03858116911614155b8015613c165750836001600160a01b0316856001600160a01b031614155b8015613c23575060008351115b6040518263ffffffff1660e01b8152600401613c43911515815260200190565b60006040518083038186803b158015613c5b57600080fd5b505afa158015613c6f573d6000803e3d6000fd5b505050506000815167ffffffffffffffff811115613c8f57613c8f6147e1565b604051908082528060200260200182016040528015613cb8578160200160208202803683370190505b5090506000825167ffffffffffffffff811115613cd757613cd76147e1565b604051908082528060200260200182016040528015613d00578160200160208202803683370190505b5090506000835167ffffffffffffffff811115613d1f57613d1f6147e1565b604051908082528060200260200182016040528015613d48578160200160208202803683370190505b50905060005b8451811015613ea1576000858281518110613d6b57613d6b614de2565b60200260200101516000015190506000868381518110613d8d57613d8d614de2565b6020908102919091018101518101516000848152601d909252604090912054909150613dbb81600019615033565b821115613dd157613dce81600019615033565b91505b6000838152601d602052604081208054849290613def908490614f4d565b90915550613e009050600283615046565b6000848152601e602052604081208054909190613e1e908490614f4d565b9250508190555082878581518110613e3857613e38614de2565b60200260200101818152505081868581518110613e5757613e57614de2565b6020908102919091010152613e6d600283615046565b858581518110613e7f57613e7f614de2565b6020026020010181815250505050508080613e9990614f66565b915050613d4e565b506040516303223eab60e11b81526001600160a01b0387166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015613ef157600080fd5b505af1158015613f05573d6000803e3d6000fd5b5050601c5460405163d81d0a1560e01b81526001600160a01b03909116925063d81d0a159150613f3d90899087908790600401614e28565b600060405180830381600087803b158015613f5757600080fd5b505af1158015613f6b573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150613fa5908990899088908790600401614e79565b600060405180830381600087803b158015613fbf57600080fd5b505af1158015613fd3573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561403557600080fd5b505af1158015614049573d6000803e3d6000fd5b5050505060005b8351811015611d4e57600084828151811061406d5761406d614de2565b6020908102919091018101516000818152601e8352604080822054601d9094528120549193509061409f908390615033565b601c54604051627eeac760e11b81526001600160a01b038d8116600483015260248201879052929350614138929091169062fdd58e90604401602060405180830381865afa1580156140f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141199190614ee4565b82604051806060016040528060248152602001615d6b6024913961450f565b601c54604051627eeac760e11b81526001600160a01b038b81166004830152602482018690526141cc92169062fdd58e90604401602060405180830381865afa158015614189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ad9190614ee4565b83604051806060016040528060248152602001615d8f6024913961450f565b601c5460405163bd85b03960e01b81526004810185905261426d916001600160a01b03169063bd85b03990602401602060405180830381865afa158015614217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423b9190614ee4565b601d600086815260200190815260200160002054604051806060016040528060248152602001615d476024913961450f565b505050808061427b90614f66565b915050614050565b80518251600080516020615d2783398151915291634c63e56291148015906142ab5750835115155b6040518263ffffffff1660e01b81526004016142cb911515815260200190565b60006040518083038186803b1580156142e357600080fd5b505afa1580156142f7573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b03166340311ffd60e11b179052915163f28dceb360e01b8152600080516020615d27833981519152945063f28dceb393506143509201614e66565b600060405180830381600087803b15801561436a57600080fd5b505af115801561437e573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b1580156143c957600080fd5b505af11580156143dd573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061200b9060019060029087908790600401614e79565b60606013805480602002602001604051908101604052809291908181526020018280548015610519576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104fb575050505050905090565b6040516306decadb60e31b8152600080516020615d27833981519152906336f656d8906144ae90869086908690600401615068565b60006040518083038186803b1580156144c657600080fd5b505afa158015611d4e573d6000803e3d6000fd5b6040516326d8cf3f60e11b8152600080516020615d2783398151915290634db19e7e906144ae908690869086906004016150a1565b6040516388b44c8560e01b8152600080516020615d27833981519152906388b44c85906144ae908690869086906004016150c4565b80516020808301516000838152601d90925260409091205461456881600019615033565b8211156145815761457b81600019615033565b60208501525b50505050565b80516040808301516000838152601e602090815283822054601d90915292812054919290916145b69190615033565b905080821115614581576040840181905250505050565b610c43806150e483390190565b6000602082840312156145ec57600080fd5b5035919050565b600081518084526020808501945080840160005b8381101561462c5781516001600160a01b031687529582019590820190600101614607565b509495945050505050565b60208152600061464a60208301846145f3565b9392505050565b80356001600160a01b038116811461466857600080fd5b919050565b6000806000806080858703121561468357600080fd5b61468c85614651565b935061469a60208601614651565b93969395505050506040820135916060013590565b60005b838110156146ca5781810151838201526020016146b2565b50506000910152565b600081518084526146eb8160208601602086016146af565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156147af57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561479957605f198985030183526147878486516146d3565b948e01949350918d019160010161476b565b505050978a019794505091880191600101614726565b50919a9950505050505050505050565b600080604083850312156147d257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561481a5761481a6147e1565b60405290565b6040805190810167ffffffffffffffff8111828210171561481a5761481a6147e1565b604051601f8201601f1916810167ffffffffffffffff8111828210171561486c5761486c6147e1565b604052919050565b600067ffffffffffffffff82111561488e5761488e6147e1565b5060051b60200190565b600060208083850312156148ab57600080fd5b823567ffffffffffffffff8111156148c257600080fd5b8301601f810185136148d357600080fd5b80356148e66148e182614874565b614843565b8181526060918202830184019184820191908884111561490557600080fd5b938501935b838510156149565780858a0312156149225760008081fd5b61492a6147f7565b61493386614651565b81528587013587820152604080870135908201528352938401939185019161490a565b50979650505050505050565b60006020828403121561497457600080fd5b61464a82614651565b600082601f83011261498e57600080fd5b8135602061499e6148e183614874565b82815260069290921b840181019181810190868411156149bd57600080fd5b8286015b848110156149fc57604081890312156149da5760008081fd5b6149e2614820565b8135815284820135858201528352918301916040016149c1565b509695505050505050565b600080600060608486031215614a1c57600080fd5b614a2584614651565b9250614a3360208501614651565b9150604084013567ffffffffffffffff811115614a4f57600080fd5b614a5b8682870161497d565b9150509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015614b0957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015614af45783516001600160e01b0319168252928b019260019290920191908b0190614aca565b50978a01979550505091870191600101614a8d565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614b6d57603f19888603018452614b5b8583516146d3565b94509285019290850190600101614b3f565b5092979650505050505050565b60008060408385031215614b8d57600080fd5b614b9683614651565b9150602083013567ffffffffffffffff811115614bb257600080fd5b614bbe8582860161497d565b9150509250929050565b6000806040808486031215614bdc57600080fd5b614be584614651565b925060208085013567ffffffffffffffff811115614c0257600080fd5b8501601f81018713614c1357600080fd5b8035614c216148e182614874565b8181526060918202830184019184820191908a841115614c4057600080fd5b938501935b83851015614c885780858c031215614c5d5760008081fd5b614c656147f7565b853581528686013587820152878601358882015283529384019391850191614c45565b508096505050505050509250929050565b600082601f830112614caa57600080fd5b81356020614cba6148e183614874565b82815260059290921b84018101918181019086841115614cd957600080fd5b8286015b848110156149fc5780358352918301918301614cdd565b60008060408385031215614d0757600080fd5b823567ffffffffffffffff80821115614d1f57600080fd5b614d2b86838701614c99565b93506020850135915080821115614d4157600080fd5b50614bbe85828601614c99565b600060208284031215614d6057600080fd5b815167ffffffffffffffff80821115614d7857600080fd5b818401915084601f830112614d8c57600080fd5b815181811115614d9e57614d9e6147e1565b614db1601f8201601f1916602001614843565b9150808252856020828501011115614dc857600080fd5b614dd98160208401602086016146af565b50949350505050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561462c57815187529582019590820190600101614e0c565b6001600160a01b0384168152606060208201526000614e4a6060830185614df8565b8281036040840152614e5c8185614df8565b9695505050505050565b60208152600061464a60208301846146d3565b60006001600160a01b03808716835280861660208401525060806040830152614ea56080830185614df8565b8281036060840152614eb78185614df8565b979650505050505050565b600060208284031215614ed457600080fd5b8151801515811461464a57600080fd5b600060208284031215614ef657600080fd5b5051919050565b600181811c90821680614f1157607f821691505b602082108103614f3157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115614f6057614f60614f37565b92915050565b600060018201614f7857614f78614f37565b5060010190565b604081526000614f9260408301856145f3565b8281036020840152614fa48185614df8565b95945050505050565b60006020808385031215614fc057600080fd5b825167ffffffffffffffff811115614fd757600080fd5b8301601f81018513614fe857600080fd5b8051614ff66148e182614874565b81815260059190911b8201830190838101908783111561501557600080fd5b928401925b82841015614eb75783518252928401929084019061501a565b81810381811115614f6057614f60614f37565b60008261506357634e487b7160e01b600052601260045260246000fd5b500490565b60608152600061507b60608301866146d3565b828103602084015261508d81866146d3565b90508281036040840152614e5c81856146d3565b83151581528215156020820152606060408201526000614fa460608301846146d3565b838152826020820152606060408201526000614fa460608301846146d356fe608060405234801561001057600080fd5b50610c23806100206000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c806395d89b4111610076578063d81d0a151161005b578063d81d0a15146101b1578063e584b654146101c4578063e985e9c5146101d757600080fd5b806395d89b4114610172578063bd85b0391461019157600080fd5b806317fad7fc116100a757806317fad7fc1461012a5780634e1273f41461013f578063805349341461015f57600080fd5b8062fdd58e146100c257806306fdde03146100e8575b600080fd5b6100d56100d03660046107d9565b6101fa565b6040519081526020015b60405180910390f35b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b6040516100df9190610803565b61013d61013836600461089d565b610223565b005b61015261014d36600461092e565b61027c565b6040516100df919061099a565b61013d61016d3660046109de565b610352565b60408051808201909152600381526213109560ea1b602082015261011d565b6100d561019f366004610a5f565b60009081526001602052604090205490565b61013d6101bf3660046109de565b6103b2565b61013d6101d2366004610a78565b61040a565b6101ea6101e5366004610ab4565b610419565b60405190151581526020016100df565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b853361022f828261042c565b6102645760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b610272888888888888610478565b5050505050505050565b6060838261028a82826105db565b8567ffffffffffffffff8111156102a3576102a3610ae7565b6040519080825280602002602001820160405280156102cc578160200160208202803683370190505b50925060005b86811015610347576103228888838181106102ef576102ef610afd565b90506020020160208101906103049190610b13565b87878481811061031657610316610afd565b905060200201356101fa565b84828151811061033457610334610afd565b60209081029190910101526001016102d2565b505050949350505050565b60005b838110156103aa576103988686868481811061037357610373610afd565b9050602002013585858581811061038c5761038c610afd565b905060200201356105fb565b806103a281610b44565b915050610355565b505050505050565b60005b838110156103aa576103f8868686848181106103d3576103d3610afd565b905060200201358585858181106103ec576103ec610afd565b9050602002013561067c565b8061040281610b44565b9150506103b5565b6104153383836106c9565b5050565b6000610425838361042c565b9392505050565b6000816001600160a01b0316836001600160a01b031614806104255750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b828161048482826105db565b8661048e8161077e565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b888110156105725760008a8a838181106104cd576104cd610afd565b90506020020135905060008989848181106104ea576104ea610afd565b600085815260208981526040909120549102929092013592505081811015610547578e83836040516358b4690f60e01b815260040161025b939291906001600160a01b039390931683526020830191909152604082015260600190565b60009283526020868152604080852092849003909255859052909120805490910190556001016104b1565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c6040516105c69493929190610ba8565b60405180910390a45050505050505050505050565b808214610415576040516340311ffd60e11b815260040160405180910390fd5b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561065857604051625b387760e31b81526001600160a01b0386166004820152602481018590526044810184905260640161025b565b60009384526001602090815260408086208054869003905592905292209103905550565b6000828152600160205260408120805483929061069a908490610bda565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b826106d38161077e565b826001600160a01b0316846001600160a01b0316036107105760405163782ee70760e01b81526001600160a01b038516600482015260240161025b565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b038116158061079c57506001600160a01b03811630145b156107ba576040516345c210e760e11b815260040160405180910390fd5b50565b80356001600160a01b03811681146107d457600080fd5b919050565b600080604083850312156107ec57600080fd5b6107f5836107bd565b946020939093013593505050565b600060208083528351808285015260005b8181101561083057858101830151858201604001528201610814565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f84011261086357600080fd5b50813567ffffffffffffffff81111561087b57600080fd5b6020830191508360208260051b850101111561089657600080fd5b9250929050565b600080600080600080608087890312156108b657600080fd5b6108bf876107bd565b95506108cd602088016107bd565b9450604087013567ffffffffffffffff808211156108ea57600080fd5b6108f68a838b01610851565b9096509450606089013591508082111561090f57600080fd5b5061091c89828a01610851565b979a9699509497509295939492505050565b6000806000806040858703121561094457600080fd5b843567ffffffffffffffff8082111561095c57600080fd5b61096888838901610851565b9096509450602087013591508082111561098157600080fd5b5061098e87828801610851565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156109d2578351835292840192918401916001016109b6565b50909695505050505050565b6000806000806000606086880312156109f657600080fd5b6109ff866107bd565b9450602086013567ffffffffffffffff80821115610a1c57600080fd5b610a2889838a01610851565b90965094506040880135915080821115610a4157600080fd5b50610a4e88828901610851565b969995985093965092949392505050565b600060208284031215610a7157600080fd5b5035919050565b60008060408385031215610a8b57600080fd5b610a94836107bd565b915060208301358015158114610aa957600080fd5b809150509250929050565b60008060408385031215610ac757600080fd5b610ad0836107bd565b9150610ade602084016107bd565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b2557600080fd5b610425826107bd565b634e487b7160e01b600052601160045260246000fd5b600060018201610b5657610b56610b2e565b5060010190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610b8f57600080fd5b8260051b80836020870137939093016020019392505050565b604081526000610bbc604083018688610b5d565b8281036020840152610bcf818587610b5d565b979650505050505050565b8082018082111561021d5761021d610b2e56fea264697066735822122030d4ed5017bbc77d470e52ded3bdf3aa2021adbd455a53bd5548088e2b4481fa64736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737446757a7a5f42617463685472616e7366657246726f6d5061727469616c3a3a337465737446757a7a5f42617463685472616e7366657246726f6d5061727469616c3a3a317465737446757a7a5f42617463685472616e7366657246726f6d5061727469616c3a3a32a264697066735822122002e17c233b22d17939bd1fcb793641ef1d60ffe00cfc1ff0391b2318a397768e64736f6c63430008140033","sourceMap":"186:11802:97:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;186:11802:97;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80635f8948ff116100ee578063b5508aa911610097578063bf1efaaa11610071578063bf1efaaa14610344578063d41922d914610357578063d4b9796e1461036a578063e20c9f711461038a57600080fd5b8063b5508aa914610311578063ba414fa614610319578063ba9db7b01461033157600080fd5b806385226c81116100c857806385226c81146102e15780638c5f422c146102f6578063916a17c61461030957600080fd5b80635f8948ff146102b157806366d9a9a0146102c457806378114d2d146102d957600080fd5b80632c88fea41161015b5780633a4ca189116101355780633a4ca189146102865780633e5e3c231461028e5780633f7286f41461029657806342f917f41461029e57600080fd5b80632c88fea4146102355780632d57f2dd1461024857806334f1f9b11461025b57600080fd5b80631ed7831c1161018c5780631ed7831c146101f857806322b357511461020d5780632ade38801461022057600080fd5b80630960724e146101b35780630a9254e4146101e65780631490c7d4146101f0575b600080fd5b6101d36101c13660046145da565b601e6020526000908152604090205481565b6040519081526020015b60405180910390f35b6101ee610392565b005b6101ee6103f5565b6102006104c1565b6040516101dd9190614637565b6101ee61021b36600461466d565b610523565b61022861119c565b6040516101dd91906146ff565b6101ee6102433660046147bf565b6112de565b6101ee610256366004614898565b611789565b601c5461026e906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b6101ee611d57565b610200612041565b6102006120a1565b6101ee6102ac366004614962565b612101565b6101ee6102bf366004614a07565b61242a565b6102cc612b4d565b6040516101dd9190614a65565b6101ee612c33565b6102e9612d17565b6040516101dd9190614b18565b6101ee610304366004614b7a565b612de7565b6102cc6132bd565b6102e96133a3565b610321613473565b60405190151581526020016101dd565b6101ee61033f366004614bc8565b613528565b6101ee610352366004614a07565b613b90565b6101ee610365366004614cf4565b614283565b6101d36103783660046145da565b601d6020526000908152604090205481565b610200614419565b60405161039e906145cd565b604051809103906000f0801580156103ba573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b601c54604080516395d89b4160e01b815290516104bf926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610440573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104689190810190614d4e565b6040518060400160405280600381526020016213109560ea1b8152506040518060400160405280600e81526020017f746573745f53796d626f6c3a3a31000000000000000000000000000000000000815250614479565b565b6060601480548060200260200160405190810160405280929190818152602001828054801561051957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104fb575b5050505050905090565b601c54600080516020615d2783398151915290634c63e562906001600160a01b0387811691161480159061055f57506001600160a01b03861615155b80156105795750601c546001600160a01b03868116911614155b801561058d57506001600160a01b03851615155b80156105a75750601c546001600160a01b03868116911614155b80156105c55750846001600160a01b0316866001600160a01b031614155b6040518263ffffffff1660e01b81526004016105e5911515815260200190565b60006040518083038186803b1580156105fd57600080fd5b505afa158015610611573d6000803e3d6000fd5b5060009250600191506106219050565b60405190808252806020026020018201604052801561064a578160200160208202803683370190505b506040805160018082528183019092529192506000919060208083019080368337019050509050838260008151811061068557610685614de2565b60200260200101818152505082816000815181106106a5576106a5614de2565b6020908102919091010152601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a15906106e490899086908690600401614e28565b600060405180830381600087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b0388166004820152600080516020615d2783398151915292506306447d569150602401600060405180830381600087803b15801561076557600080fd5b505af1158015610779573d6000803e3d6000fd5b5050604080516001600160a01b038a81166024830152891660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663548f773d60e01b179052905163f28dceb360e01b8152600080516020615d27833981519152935063f28dceb392506107f69190600401614e66565b600060405180830381600087803b15801561081057600080fd5b505af1158015610824573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061085e908990899087908790600401614e79565b600060405180830381600087803b15801561087857600080fd5b505af115801561088c573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108ee57600080fd5b505af1158015610902573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b0389166004820152600080516020615d2783398151915292506306447d569150602401600060405180830381600087803b15801561095557600080fd5b505af1158015610969573d6000803e3d6000fd5b5050601c546040516339612d9560e21b81526001600160a01b03898116600483015260016024830152909116925063e584b6549150604401600060405180830381600087803b1580156109bb57600080fd5b505af11580156109cf573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050601c5460405163e985e9c560e01b81526001600160a01b038a811660048301528981166024830152610b009450909116915063e985e9c590604401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190614ec2565b60016040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a310000000000008152506144da565b6040516303223eab60e11b81526001600160a01b0386166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015610b4f57600080fd5b505af1158015610b63573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150610b9d908990899087908790600401614e79565b600060405180830381600087803b158015610bb757600080fd5b505af1158015610bcb573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b5050601c54604051627eeac760e11b81526001600160a01b038a8116600483015260248201899052610cf99450909116915062fdd58e90604401602060405180830381865afa158015610c98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbc9190614ee4565b60006040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a3200000000000081525061450f565b601c54604051627eeac760e11b81526001600160a01b03878116600483015260248201879052610daa92169062fdd58e90604401602060405180830381865afa158015610d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6e9190614ee4565b846040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a3300000000000081525061450f565b6040516303223eab60e11b81526001600160a01b0387166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b5050601c546040516339612d9560e21b81526001600160a01b03898116600483015260006024830152909116925063e584b6549150604401600060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ed557600080fd5b505af1158015610ee9573d6000803e3d6000fd5b5050601c5460405163e985e9c560e01b81526001600160a01b038a811660048301528981166024830152610fa49450909116915063e985e9c590604401602060405180830381865afa158015610f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f679190614ec2565b60006040518060400160405280601a81526020017f7465737446757a7a5f417070726f766564466f72416c6c3a3a340000000000008152506144da565b6040516303223eab60e11b81526001600160a01b0386166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b5050604080516001600160a01b038a81166024830152891660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663548f773d60e01b179052905163f28dceb360e01b8152600080516020615d27833981519152935063f28dceb392506110849190600401614e66565b600060405180830381600087803b15801561109e57600080fd5b505af11580156110b2573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc91506110ec908990899087908790600401614e79565b600060405180830381600087803b15801561110657600080fd5b505af115801561111a573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561117c57600080fd5b505af1158015611190573d6000803e3d6000fd5b50505050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156112d557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156112be57838290600052602060002001805461123190614efd565b80601f016020809104026020016040519081016040528092919081815260200182805461125d90614efd565b80156112aa5780601f1061127f576101008083540402835291602001916112aa565b820191906000526020600020905b81548152906001019060200180831161128d57829003601f168201915b505050505081526020019060010190611212565b5050505081525050815260200190600101906111c0565b50505050905090565b604051632631f2b160e11b81526000198214156004820152600080516020615d2783398151915290634c63e5629060240160006040518083038186803b15801561132757600080fd5b505afa15801561133b573d6000803e3d6000fd5b50600092506001915061134b9050565b604051908082528060200260200182016040528015611374578160200160208202803683370190505b50604080516001808252818301909252919250600091906020808301908036833701905050905083826000815181106113af576113af614de2565b60200260200101818152505082816000815181106113cf576113cf614de2565b6020908102919091010152601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a159061140f9060019086908690600401614e28565b600060405180830381600087803b15801561142957600080fd5b505af115801561143d573d6000803e3d6000fd5b5050505082600161144e9190614f4d565b8160008151811061146157611461614de2565b6020908102919091010152600080516020615d2783398151915263f28dceb36358b4690f60e01b6001876114958883614f4d565b6040516001600160a01b0390931660248401526044830191909152606482015260840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b90921682526114fd91600401614e66565b600060405180830381600087803b15801561151757600080fd5b505af115801561152b573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b15801561157657600080fd5b505af115801561158a573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc91506115c69060019060029087908790600401614e79565b600060405180830381600087803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b50600080516020615d27833981519152925063f28dceb39150625b387760e31b90506001876116238883614f4d565b6040516001600160a01b0390931660248401526044830191909152606482015260840160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e084901b909216825261168b91600401614e66565b600060405180830381600087803b1580156116a557600080fd5b505af11580156116b9573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b15801561170457600080fd5b505af1158015611718573d6000803e3d6000fd5b5050601c54604051632014d24d60e21b81526001600160a01b039091169250638053493491506117519060019086908690600401614e28565b600060405180830381600087803b15801561176b57600080fd5b505af115801561177f573d6000803e3d6000fd5b5050505050505050565b8051604051632631f2b160e11b81529015156004820152600080516020615d2783398151915290634c63e5629060240160006040518083038186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b5060009250600191506117f59050565b60405190808252806020026020018201604052801561181e578160200160208202803683370190505b5060408051600180825281830190925291925060009190602080830190803683370190505090506000835167ffffffffffffffff811115611861576118616147e1565b60405190808252806020026020018201604052801561188a578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156118a9576118a96147e1565b6040519080825280602002602001820160405280156118d2578160200160208202803683370190505b50905060005b8551811015611b8c578551600080516020615d2783398151915290634c63e5629060009089908590811061190e5761190e614de2565b6020026020010151600001516001600160a01b0316141580156119675750601c5488516001600160a01b039091169089908590811061194f5761194f614de2565b6020026020010151600001516001600160a01b031614155b6040518263ffffffff1660e01b8152600401611987911515815260200190565b60006040518083038186803b15801561199f57600080fd5b505afa1580156119b3573d6000803e3d6000fd5b50505050600060405180604001604052808884815181106119d6576119d6614de2565b60200260200101516020015181526020018884815181106119f9576119f9614de2565b6020026020010151604001518152509050611a1381614544565b8060200151601d6000836000015181526020019081526020016000206000828254611a3e9190614f4d565b9091555050805186518790600090611a5857611a58614de2565b602002602001018181525050806020015185600081518110611a7c57611a7c614de2565b6020908102919091010152601c5487516001600160a01b039091169063d81d0a1590899085908110611ab057611ab0614de2565b60200260200101516000015188886040518463ffffffff1660e01b8152600401611adc93929190614e28565b600060405180830381600087803b158015611af657600080fd5b505af1158015611b0a573d6000803e3d6000fd5b505050508060000151848381518110611b2557611b25614de2565b602002602001018181525050868281518110611b4357611b43614de2565b602002602001015160000151838381518110611b6157611b61614de2565b6001600160a01b03909216602092830291909101909101525080611b8481614f66565b9150506118d8565b50601c546040516313849cfd60e21b81526000916001600160a01b031690634e1273f490611bc09085908790600401614f7f565b600060405180830381865afa158015611bdd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c059190810190614fad565b905060005b8651811015611d4e57611d3c828281518110611c2857611c28614de2565b6020026020010151601c60009054906101000a90046001600160a01b03166001600160a01b031662fdd58e8a8581518110611c6557611c65614de2565b6020026020010151600001518b8681518110611c8357611c83614de2565b6020026020010151602001516040518363ffffffff1660e01b8152600401611cc09291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d019190614ee4565b6040518060400160405280601a81526020017f7465737446757a7a5f42616c616e63654f6642617463683a3a3100000000000081525061450f565b80611d4681614f66565b915050611c0a565b50505050505050565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805160048082526024820183526020820180516001600160e01b03166345c210e760e11b179052915163f28dceb360e01b8152929350600080516020615d278339815191529263f28dceb392611df3929101614e66565b600060405180830381600087803b158015611e0d57600080fd5b505af1158015611e21573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b158015611e6c57600080fd5b505af1158015611e80573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150611ebc9060019060009087908790600401614e79565b600060405180830381600087803b158015611ed657600080fd5b505af1158015611eea573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b03166345c210e760e11b179052915163f28dceb360e01b8152600080516020615d27833981519152945063f28dceb39350611f439201614e66565b600060405180830381600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b158015611fbc57600080fd5b505af1158015611fd0573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061200b90600190849087908790600401614e79565b600060405180830381600087803b15801561202557600080fd5b505af1158015612039573d6000803e3d6000fd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610519576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104fb575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610519576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104fb575050505050905090565b600080516020615d27833981519152634c63e5626001600160a01b0383161580159061213b5750601c546001600160a01b03848116911614155b6040518263ffffffff1660e01b815260040161215b911515815260200190565b60006040518083038186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b50506040516303223eab60e11b81526001600160a01b0384166004820152600080516020615d2783398151915292506306447d569150602401600060405180830381600087803b1580156121da57600080fd5b505af11580156121ee573d6000803e3d6000fd5b5050604080516001600160a01b03851660248083019190915282518083039091018152604490910182526020810180516001600160e01b031663782ee70760e01b179052905163f28dceb360e01b8152600080516020615d27833981519152935063f28dceb392506122639190600401614e66565b600060405180830381600087803b15801561227d57600080fd5b505af1158015612291573d6000803e3d6000fd5b5050601c546040516339612d9560e21b81526001600160a01b03858116600483015260016024830152909116925063e584b6549150604401600060405180830381600087803b1580156122e357600080fd5b505af11580156122f7573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561235957600080fd5b505af115801561236d573d6000803e3d6000fd5b5050601c5460405163e985e9c560e01b81526001600160a01b038581166004830181905260248301526124279450909116915063e985e9c590604401602060405180830381865afa1580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190614ec2565b60016040518060400160405280601d81526020017f7465737446757a7a5f536574417070726f76616c4f6e53656c663a3a310000008152506144da565b50565b600080516020615d27833981519152634c63e5626001600160a01b038516158015906124645750601c546001600160a01b03868116911614155b801561247857506001600160a01b03841615155b80156124925750601c546001600160a01b03858116911614155b80156124b05750836001600160a01b0316856001600160a01b031614155b80156124bd575060008351115b6040518263ffffffff1660e01b81526004016124dd911515815260200190565b60006040518083038186803b1580156124f557600080fd5b505afa158015612509573d6000803e3d6000fd5b505050506000815167ffffffffffffffff811115612529576125296147e1565b604051908082528060200260200182016040528015612552578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612571576125716147e1565b60405190808252806020026020018201604052801561259a578160200160208202803683370190505b50905060005b83518110156126985760008482815181106125bd576125bd614de2565b602002602001015160000151905060008583815181106125df576125df614de2565b6020908102919091018101518101516000848152601d90925260409091205490915061260d81600019615033565b8211156126235761262081600019615033565b91505b61262d8282614f4d565b6000848152601d602052604090208190558651909150839087908690811061265757612657614de2565b6020026020010181815250508185858151811061267657612676614de2565b602002602001018181525050505050808061269090614f66565b9150506125a0565b506040516303223eab60e11b81526001600160a01b0386166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b1580156126e857600080fd5b505af11580156126fc573d6000803e3d6000fd5b5050601c5460405163d81d0a1560e01b81526001600160a01b03909116925063d81d0a15915061273490889086908690600401614e28565b600060405180830381600087803b15801561274e57600080fd5b505af1158015612762573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061279c908890889087908790600401614e79565b600060405180830381600087803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561282c57600080fd5b505af1158015612840573d6000803e3d6000fd5b5050505060005b825181101561203957601c548351612933916001600160a01b03169062fdd58e90899087908690811061287c5761287c614de2565b60200260200101516040518363ffffffff1660e01b81526004016128b59291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156128d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f69190614ee4565b60006040518060400160405280601981526020017f7465737446757a7a5f42617463685472616e736665723a3a310000000000000081525061450f565b601c548351612a41916001600160a01b03169062fdd58e90889087908690811061295f5761295f614de2565b60200260200101516040518363ffffffff1660e01b81526004016129989291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156129b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d99190614ee4565b601d60008685815181106129ef576129ef614de2565b60200260200101518152602001908152602001600020546040518060400160405280601981526020017f7465737446757a7a5f42617463685472616e736665723a3a320000000000000081525061450f565b601c548351612b3b916001600160a01b03169063bd85b03990869085908110612a6c57612a6c614de2565b60200260200101516040518263ffffffff1660e01b8152600401612a9291815260200190565b602060405180830381865afa158015612aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad39190614ee4565b601d6000868581518110612ae957612ae9614de2565b60200260200101518152602001908152602001600020546040518060400160405280601981526020017f7465737446757a7a5f42617463685472616e736665723a3a330000000000000081525061450f565b80612b4581614f66565b915050612847565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156112d55760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612c1b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411612bdd5790505b50505050508152505081526020019060010190612b71565b601c54604080516306fdde0360e01b815290516104bf926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015612c7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ca69190810190614d4e565b6040518060400160405280601481526020017f4c697175696469747920426f6f6b20546f6b656e0000000000000000000000008152506040518060400160405280600c81526020017f746573745f4e616d653a3a310000000000000000000000000000000000000000815250614479565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156112d5578382906000526020600020018054612d5a90614efd565b80601f0160208091040260200160405190810160405280929190818152602001828054612d8690614efd565b8015612dd35780601f10612da857610100808354040283529160200191612dd3565b820191906000526020600020905b815481529060010190602001808311612db657829003601f168201915b505050505081526020019060010190612d3b565b600080516020615d27833981519152634c63e5626001600160a01b03841615801590612e215750601c546001600160a01b03858116911614155b8015612e2e575060008351115b6040518263ffffffff1660e01b8152600401612e4e911515815260200190565b60006040518083038186803b158015612e6657600080fd5b505afa158015612e7a573d6000803e3d6000fd5b505050506000815167ffffffffffffffff811115612e9a57612e9a6147e1565b604051908082528060200260200182016040528015612ec3578160200160208202803683370190505b5090506000825167ffffffffffffffff811115612ee257612ee26147e1565b604051908082528060200260200182016040528015612f0b578160200160208202803683370190505b50905060005b835181101561302957612f3c848281518110612f2f57612f2f614de2565b6020026020010151614544565b838181518110612f4e57612f4e614de2565b602002602001015160200151828281518110612f6c57612f6c614de2565b602002602001018181525050838181518110612f8a57612f8a614de2565b602002602001015160000151838281518110612fa857612fa8614de2565b602002602001018181525050838181518110612fc657612fc6614de2565b602002602001015160200151601d6000868481518110612fe857612fe8614de2565b602002602001015160000151815260200190815260200160002060008282546130119190614f4d565b9091555081905061302181614f66565b915050612f11565b50601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a159061305e90879086908690600401614e28565b600060405180830381600087803b15801561307857600080fd5b505af115801561308c573d6000803e3d6000fd5b5050505060005b82518110156132b657601c5483516131aa916001600160a01b03169062fdd58e9088908790869081106130c8576130c8614de2565b60200260200101516040518363ffffffff1660e01b81526004016131019291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801561311e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131429190614ee4565b601d600086858151811061315857613158614de2565b60200260200101518152602001908152602001600020546040518060400160405280601581526020017f7465737446757a7a5f42617463684d696e743a3a31000000000000000000000081525061450f565b601c5483516132a4916001600160a01b03169063bd85b039908690859081106131d5576131d5614de2565b60200260200101516040518263ffffffff1660e01b81526004016131fb91815260200190565b602060405180830381865afa158015613218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323c9190614ee4565b601d600086858151811061325257613252614de2565b60200260200101518152602001908152602001600020546040518060400160405280601581526020017f7465737446757a7a5f42617463684d696e743a3a32000000000000000000000081525061450f565b806132ae81614f66565b915050613093565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156112d55760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561338b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161334d5790505b505050505081525050815260200190600101906132e1565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156112d55783829060005260206000200180546133e690614efd565b80601f016020809104026020016040519081016040528092919081815260200182805461341290614efd565b801561345f5780601f106134345761010080835404028352916020019161345f565b820191906000526020600020905b81548152906001019060200180831161344257829003601f168201915b5050505050815260200190600101906133c7565b60075460009060ff161561348b575060075460ff1690565b604051630667f9d760e41b8152600080516020615d27833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156134fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135219190614ee4565b1415905090565b600080516020615d27833981519152634c63e5626001600160a01b038416158015906135625750601c546001600160a01b03858116911614155b801561356f575060008351115b6040518263ffffffff1660e01b815260040161358f911515815260200190565b60006040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506000815167ffffffffffffffff8111156135db576135db6147e1565b604051908082528060200260200182016040528015613604578160200160208202803683370190505b5090506000825167ffffffffffffffff811115613623576136236147e1565b60405190808252806020026020018201604052801561364c578160200160208202803683370190505b5090506000835167ffffffffffffffff81111561366b5761366b6147e1565b604051908082528060200260200182016040528015613694578160200160208202803683370190505b50905060005b845181101561382f57600060405180604001604052808784815181106136c2576136c2614de2565b60200260200101516000015181526020018784815181106136e5576136e5614de2565b60200260200101516020015181525090506136ff81614544565b61372186838151811061371457613714614de2565b6020026020010151614587565b8060200151601d600083600001518152602001908152602001600020600082825461374c9190614f4d565b9250508190555085828151811061376557613765614de2565b602002602001015160400151601e60008360000151815260200190815260200160002060008282546137979190614f4d565b9091555050805185518690849081106137b2576137b2614de2565b60200260200101818152505080602001518483815181106137d5576137d5614de2565b6020026020010181815250508582815181106137f3576137f3614de2565b60200260200101516040015183838151811061381157613811614de2565b6020908102919091010152508061382781614f66565b91505061369a565b50601c5460405163d81d0a1560e01b81526001600160a01b039091169063d81d0a159061386490889087908790600401614e28565b600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b5050601c54604051632014d24d60e21b81526001600160a01b039091169250638053493491506138ca90889087908690600401614e28565b600060405180830381600087803b1580156138e457600080fd5b505af11580156138f8573d6000803e3d6000fd5b5050505060005b835181101561203957601c548451613a4d916001600160a01b03169062fdd58e90899088908690811061393457613934614de2565b60200260200101516040518363ffffffff1660e01b815260040161396d9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801561398a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ae9190614ee4565b601e60008785815181106139c4576139c4614de2565b6020026020010151815260200190815260200160002054601d60008886815181106139f1576139f1614de2565b6020026020010151815260200190815260200160002054613a129190615033565b6040518060400160405280601581526020017f7465737446757a7a5f42617463684275726e3a3a31000000000000000000000081525061450f565b601c548451613b7e916001600160a01b03169063bd85b03990879085908110613a7857613a78614de2565b60200260200101516040518263ffffffff1660e01b8152600401613a9e91815260200190565b602060405180830381865afa158015613abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613adf9190614ee4565b601e6000878581518110613af557613af5614de2565b6020026020010151815260200190815260200160002054601d6000888681518110613b2257613b22614de2565b6020026020010151815260200190815260200160002054613b439190615033565b6040518060400160405280601581526020017f7465737446757a7a5f42617463684275726e3a3a32000000000000000000000081525061450f565b80613b8881614f66565b9150506138ff565b600080516020615d27833981519152634c63e5626001600160a01b03851615801590613bca5750601c546001600160a01b03868116911614155b8015613bde57506001600160a01b03841615155b8015613bf85750601c546001600160a01b03858116911614155b8015613c165750836001600160a01b0316856001600160a01b031614155b8015613c23575060008351115b6040518263ffffffff1660e01b8152600401613c43911515815260200190565b60006040518083038186803b158015613c5b57600080fd5b505afa158015613c6f573d6000803e3d6000fd5b505050506000815167ffffffffffffffff811115613c8f57613c8f6147e1565b604051908082528060200260200182016040528015613cb8578160200160208202803683370190505b5090506000825167ffffffffffffffff811115613cd757613cd76147e1565b604051908082528060200260200182016040528015613d00578160200160208202803683370190505b5090506000835167ffffffffffffffff811115613d1f57613d1f6147e1565b604051908082528060200260200182016040528015613d48578160200160208202803683370190505b50905060005b8451811015613ea1576000858281518110613d6b57613d6b614de2565b60200260200101516000015190506000868381518110613d8d57613d8d614de2565b6020908102919091018101518101516000848152601d909252604090912054909150613dbb81600019615033565b821115613dd157613dce81600019615033565b91505b6000838152601d602052604081208054849290613def908490614f4d565b90915550613e009050600283615046565b6000848152601e602052604081208054909190613e1e908490614f4d565b9250508190555082878581518110613e3857613e38614de2565b60200260200101818152505081868581518110613e5757613e57614de2565b6020908102919091010152613e6d600283615046565b858581518110613e7f57613e7f614de2565b6020026020010181815250505050508080613e9990614f66565b915050613d4e565b506040516303223eab60e11b81526001600160a01b0387166004820152600080516020615d27833981519152906306447d5690602401600060405180830381600087803b158015613ef157600080fd5b505af1158015613f05573d6000803e3d6000fd5b5050601c5460405163d81d0a1560e01b81526001600160a01b03909116925063d81d0a159150613f3d90899087908790600401614e28565b600060405180830381600087803b158015613f5757600080fd5b505af1158015613f6b573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc9150613fa5908990899088908790600401614e79565b600060405180830381600087803b158015613fbf57600080fd5b505af1158015613fd3573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561403557600080fd5b505af1158015614049573d6000803e3d6000fd5b5050505060005b8351811015611d4e57600084828151811061406d5761406d614de2565b6020908102919091018101516000818152601e8352604080822054601d9094528120549193509061409f908390615033565b601c54604051627eeac760e11b81526001600160a01b038d8116600483015260248201879052929350614138929091169062fdd58e90604401602060405180830381865afa1580156140f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141199190614ee4565b82604051806060016040528060248152602001615d6b6024913961450f565b601c54604051627eeac760e11b81526001600160a01b038b81166004830152602482018690526141cc92169062fdd58e90604401602060405180830381865afa158015614189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ad9190614ee4565b83604051806060016040528060248152602001615d8f6024913961450f565b601c5460405163bd85b03960e01b81526004810185905261426d916001600160a01b03169063bd85b03990602401602060405180830381865afa158015614217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423b9190614ee4565b601d600086815260200190815260200160002054604051806060016040528060248152602001615d476024913961450f565b505050808061427b90614f66565b915050614050565b80518251600080516020615d2783398151915291634c63e56291148015906142ab5750835115155b6040518263ffffffff1660e01b81526004016142cb911515815260200190565b60006040518083038186803b1580156142e357600080fd5b505afa1580156142f7573d6000803e3d6000fd5b50506040805160048082526024820183526020820180516001600160e01b03166340311ffd60e11b179052915163f28dceb360e01b8152600080516020615d27833981519152945063f28dceb393506143509201614e66565b600060405180830381600087803b15801561436a57600080fd5b505af115801561437e573d6000803e3d6000fd5b505060405163ca669fa760e01b815260016004820152600080516020615d27833981519152925063ca669fa79150602401600060405180830381600087803b1580156143c957600080fd5b505af11580156143dd573d6000803e3d6000fd5b5050601c546040516305feb5ff60e21b81526001600160a01b0390911692506317fad7fc915061200b9060019060029087908790600401614e79565b60606013805480602002602001604051908101604052809291908181526020018280548015610519576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116104fb575050505050905090565b6040516306decadb60e31b8152600080516020615d27833981519152906336f656d8906144ae90869086908690600401615068565b60006040518083038186803b1580156144c657600080fd5b505afa158015611d4e573d6000803e3d6000fd5b6040516326d8cf3f60e11b8152600080516020615d2783398151915290634db19e7e906144ae908690869086906004016150a1565b6040516388b44c8560e01b8152600080516020615d27833981519152906388b44c85906144ae908690869086906004016150c4565b80516020808301516000838152601d90925260409091205461456881600019615033565b8211156145815761457b81600019615033565b60208501525b50505050565b80516040808301516000838152601e602090815283822054601d90915292812054919290916145b69190615033565b905080821115614581576040840181905250505050565b610c43806150e483390190565b6000602082840312156145ec57600080fd5b5035919050565b600081518084526020808501945080840160005b8381101561462c5781516001600160a01b031687529582019590820190600101614607565b509495945050505050565b60208152600061464a60208301846145f3565b9392505050565b80356001600160a01b038116811461466857600080fd5b919050565b6000806000806080858703121561468357600080fd5b61468c85614651565b935061469a60208601614651565b93969395505050506040820135916060013590565b60005b838110156146ca5781810151838201526020016146b2565b50506000910152565b600081518084526146eb8160208601602086016146af565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156147af57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561479957605f198985030183526147878486516146d3565b948e01949350918d019160010161476b565b505050978a019794505091880191600101614726565b50919a9950505050505050505050565b600080604083850312156147d257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561481a5761481a6147e1565b60405290565b6040805190810167ffffffffffffffff8111828210171561481a5761481a6147e1565b604051601f8201601f1916810167ffffffffffffffff8111828210171561486c5761486c6147e1565b604052919050565b600067ffffffffffffffff82111561488e5761488e6147e1565b5060051b60200190565b600060208083850312156148ab57600080fd5b823567ffffffffffffffff8111156148c257600080fd5b8301601f810185136148d357600080fd5b80356148e66148e182614874565b614843565b8181526060918202830184019184820191908884111561490557600080fd5b938501935b838510156149565780858a0312156149225760008081fd5b61492a6147f7565b61493386614651565b81528587013587820152604080870135908201528352938401939185019161490a565b50979650505050505050565b60006020828403121561497457600080fd5b61464a82614651565b600082601f83011261498e57600080fd5b8135602061499e6148e183614874565b82815260069290921b840181019181810190868411156149bd57600080fd5b8286015b848110156149fc57604081890312156149da5760008081fd5b6149e2614820565b8135815284820135858201528352918301916040016149c1565b509695505050505050565b600080600060608486031215614a1c57600080fd5b614a2584614651565b9250614a3360208501614651565b9150604084013567ffffffffffffffff811115614a4f57600080fd5b614a5b8682870161497d565b9150509250925092565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015614b0957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015614af45783516001600160e01b0319168252928b019260019290920191908b0190614aca565b50978a01979550505091870191600101614a8d565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614b6d57603f19888603018452614b5b8583516146d3565b94509285019290850190600101614b3f565b5092979650505050505050565b60008060408385031215614b8d57600080fd5b614b9683614651565b9150602083013567ffffffffffffffff811115614bb257600080fd5b614bbe8582860161497d565b9150509250929050565b6000806040808486031215614bdc57600080fd5b614be584614651565b925060208085013567ffffffffffffffff811115614c0257600080fd5b8501601f81018713614c1357600080fd5b8035614c216148e182614874565b8181526060918202830184019184820191908a841115614c4057600080fd5b938501935b83851015614c885780858c031215614c5d5760008081fd5b614c656147f7565b853581528686013587820152878601358882015283529384019391850191614c45565b508096505050505050509250929050565b600082601f830112614caa57600080fd5b81356020614cba6148e183614874565b82815260059290921b84018101918181019086841115614cd957600080fd5b8286015b848110156149fc5780358352918301918301614cdd565b60008060408385031215614d0757600080fd5b823567ffffffffffffffff80821115614d1f57600080fd5b614d2b86838701614c99565b93506020850135915080821115614d4157600080fd5b50614bbe85828601614c99565b600060208284031215614d6057600080fd5b815167ffffffffffffffff80821115614d7857600080fd5b818401915084601f830112614d8c57600080fd5b815181811115614d9e57614d9e6147e1565b614db1601f8201601f1916602001614843565b9150808252856020828501011115614dc857600080fd5b614dd98160208401602086016146af565b50949350505050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561462c57815187529582019590820190600101614e0c565b6001600160a01b0384168152606060208201526000614e4a6060830185614df8565b8281036040840152614e5c8185614df8565b9695505050505050565b60208152600061464a60208301846146d3565b60006001600160a01b03808716835280861660208401525060806040830152614ea56080830185614df8565b8281036060840152614eb78185614df8565b979650505050505050565b600060208284031215614ed457600080fd5b8151801515811461464a57600080fd5b600060208284031215614ef657600080fd5b5051919050565b600181811c90821680614f1157607f821691505b602082108103614f3157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115614f6057614f60614f37565b92915050565b600060018201614f7857614f78614f37565b5060010190565b604081526000614f9260408301856145f3565b8281036020840152614fa48185614df8565b95945050505050565b60006020808385031215614fc057600080fd5b825167ffffffffffffffff811115614fd757600080fd5b8301601f81018513614fe857600080fd5b8051614ff66148e182614874565b81815260059190911b8201830190838101908783111561501557600080fd5b928401925b82841015614eb75783518252928401929084019061501a565b81810381811115614f6057614f60614f37565b60008261506357634e487b7160e01b600052601260045260246000fd5b500490565b60608152600061507b60608301866146d3565b828103602084015261508d81866146d3565b90508281036040840152614e5c81856146d3565b83151581528215156020820152606060408201526000614fa460608301846146d3565b838152826020820152606060408201526000614fa460608301846146d356fe608060405234801561001057600080fd5b50610c23806100206000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c806395d89b4111610076578063d81d0a151161005b578063d81d0a15146101b1578063e584b654146101c4578063e985e9c5146101d757600080fd5b806395d89b4114610172578063bd85b0391461019157600080fd5b806317fad7fc116100a757806317fad7fc1461012a5780634e1273f41461013f578063805349341461015f57600080fd5b8062fdd58e146100c257806306fdde03146100e8575b600080fd5b6100d56100d03660046107d9565b6101fa565b6040519081526020015b60405180910390f35b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b6040516100df9190610803565b61013d61013836600461089d565b610223565b005b61015261014d36600461092e565b61027c565b6040516100df919061099a565b61013d61016d3660046109de565b610352565b60408051808201909152600381526213109560ea1b602082015261011d565b6100d561019f366004610a5f565b60009081526001602052604090205490565b61013d6101bf3660046109de565b6103b2565b61013d6101d2366004610a78565b61040a565b6101ea6101e5366004610ab4565b610419565b60405190151581526020016100df565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b853361022f828261042c565b6102645760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b610272888888888888610478565b5050505050505050565b6060838261028a82826105db565b8567ffffffffffffffff8111156102a3576102a3610ae7565b6040519080825280602002602001820160405280156102cc578160200160208202803683370190505b50925060005b86811015610347576103228888838181106102ef576102ef610afd565b90506020020160208101906103049190610b13565b87878481811061031657610316610afd565b905060200201356101fa565b84828151811061033457610334610afd565b60209081029190910101526001016102d2565b505050949350505050565b60005b838110156103aa576103988686868481811061037357610373610afd565b9050602002013585858581811061038c5761038c610afd565b905060200201356105fb565b806103a281610b44565b915050610355565b505050505050565b60005b838110156103aa576103f8868686848181106103d3576103d3610afd565b905060200201358585858181106103ec576103ec610afd565b9050602002013561067c565b8061040281610b44565b9150506103b5565b6104153383836106c9565b5050565b6000610425838361042c565b9392505050565b6000816001600160a01b0316836001600160a01b031614806104255750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b828161048482826105db565b8661048e8161077e565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b888110156105725760008a8a838181106104cd576104cd610afd565b90506020020135905060008989848181106104ea576104ea610afd565b600085815260208981526040909120549102929092013592505081811015610547578e83836040516358b4690f60e01b815260040161025b939291906001600160a01b039390931683526020830191909152604082015260600190565b60009283526020868152604080852092849003909255859052909120805490910190556001016104b1565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c6040516105c69493929190610ba8565b60405180910390a45050505050505050505050565b808214610415576040516340311ffd60e11b815260040160405180910390fd5b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561065857604051625b387760e31b81526001600160a01b0386166004820152602481018590526044810184905260640161025b565b60009384526001602090815260408086208054869003905592905292209103905550565b6000828152600160205260408120805483929061069a908490610bda565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b826106d38161077e565b826001600160a01b0316846001600160a01b0316036107105760405163782ee70760e01b81526001600160a01b038516600482015260240161025b565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b038116158061079c57506001600160a01b03811630145b156107ba576040516345c210e760e11b815260040160405180910390fd5b50565b80356001600160a01b03811681146107d457600080fd5b919050565b600080604083850312156107ec57600080fd5b6107f5836107bd565b946020939093013593505050565b600060208083528351808285015260005b8181101561083057858101830151858201604001528201610814565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f84011261086357600080fd5b50813567ffffffffffffffff81111561087b57600080fd5b6020830191508360208260051b850101111561089657600080fd5b9250929050565b600080600080600080608087890312156108b657600080fd5b6108bf876107bd565b95506108cd602088016107bd565b9450604087013567ffffffffffffffff808211156108ea57600080fd5b6108f68a838b01610851565b9096509450606089013591508082111561090f57600080fd5b5061091c89828a01610851565b979a9699509497509295939492505050565b6000806000806040858703121561094457600080fd5b843567ffffffffffffffff8082111561095c57600080fd5b61096888838901610851565b9096509450602087013591508082111561098157600080fd5b5061098e87828801610851565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156109d2578351835292840192918401916001016109b6565b50909695505050505050565b6000806000806000606086880312156109f657600080fd5b6109ff866107bd565b9450602086013567ffffffffffffffff80821115610a1c57600080fd5b610a2889838a01610851565b90965094506040880135915080821115610a4157600080fd5b50610a4e88828901610851565b969995985093965092949392505050565b600060208284031215610a7157600080fd5b5035919050565b60008060408385031215610a8b57600080fd5b610a94836107bd565b915060208301358015158114610aa957600080fd5b809150509250929050565b60008060408385031215610ac757600080fd5b610ad0836107bd565b9150610ade602084016107bd565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b2557600080fd5b610425826107bd565b634e487b7160e01b600052601160045260246000fd5b600060018201610b5657610b56610b2e565b5060010190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610b8f57600080fd5b8260051b80836020870137939093016020019392505050565b604081526000610bbc604083018688610b5d565b8281036020840152610bcf818587610b5d565b979650505050505050565b8082018082111561021d5761021d610b2e56fea264697066735822122030d4ed5017bbc77d470e52ded3bdf3aa2021adbd455a53bd5548088e2b4481fa64736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d7465737446757a7a5f42617463685472616e7366657246726f6d5061727469616c3a3a337465737446757a7a5f42617463685472616e7366657246726f6d5061727469616c3a3a317465737446757a7a5f42617463685472616e7366657246726f6d5061727469616c3a3a32a264697066735822122002e17c233b22d17939bd1fcb793641ef1d60ffe00cfc1ff0391b2318a397768e64736f6c63430008140033","sourceMap":"186:11802:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;371:46;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;345:25:127;;;333:2;318:18;371:46:97;;;;;;;;773:74;;;:::i;:::-;;975:105;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;7499:1579:97:-;;;;;;:::i;:::-;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;10480:865:97:-;;;;;;:::i;:::-;;:::i;6347:1146::-;;;;;;:::i;:::-;;:::i;282:30::-;;;;;-1:-1:-1;;;;;282:30:97;;;;;;-1:-1:-1;;;;;6941:55:127;;;6923:74;;6911:2;6896:18;282:30:97;6752:251:127;9084:565:97;;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;9655:446:97:-;;;;;;:::i;:::-;;:::i;3206:1392::-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;853:116:97:-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;1086:841:97:-;;;;;;:::i;:::-;;:::i;3069:146:5:-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;11724:14:127;;11717:22;11699:41;;11687:2;11672:18;1243:204:1;11559:187:127;1933:1267:97;;;;;;:::i;:::-;;:::i;4604:1737::-;;;;;;:::i;:::-;;:::i;10107:367::-;;;;;;:::i;:::-;;:::i;319:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;2304:142:5;;;:::i;773:74:97:-;819:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;809:7:97;:31;;;;-1:-1:-1;;;;;809:31:97;;;;;;;;;;773:74::o;975:105::-;1031:7;;:16;;;-1:-1:-1;;;1031:16:97;;;;1022:51;;-1:-1:-1;;;;;1031:7:97;;:14;;:16;;;;;:7;;:16;;;;;;;:7;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1031:16:97;;;;;;;;;;;;:::i;:::-;1022:51;;;;;;;;;;;;;-1:-1:-1;;;1022:51:97;;;;;;;;;;;;;;;;;;;;:8;:51::i;:::-;975:105::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;7499:1579:97:-;7644:7;;-1:-1:-1;;;;;;;;;;;7605:9:97;;;-1:-1:-1;;;;;7628:24:97;;;7644:7;;7628:24;;;;:46;;-1:-1:-1;;;;;;7656:18:97;;;;7628:46;:72;;;;-1:-1:-1;7692:7:97;;-1:-1:-1;;;;;7678:22:97;;;7692:7;;7678:22;;7628:72;:92;;;;-1:-1:-1;;;;;;7704:16:97;;;;7628:92;:134;;;;-1:-1:-1;7754:7:97;;-1:-1:-1;;;;;7740:22:97;;;7754:7;;7740:22;;7628:134;:148;;;;;7774:2;-1:-1:-1;;;;;7766:10:97;:4;-1:-1:-1;;;;;7766:10:97;;;7628:148;7605:181;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;7605:181:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7797:20:97;;-1:-1:-1;7834:1:97;;-1:-1:-1;7820:16:97;;-1:-1:-1;7820:16:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7820:16:97;-1:-1:-1;7873:16:97;;;7887:1;7873:16;;;;;;;;;7797:39;;-1:-1:-1;7846:24:97;;7873:16;;;;;;;;;;;;-1:-1:-1;7873:16:97;7846:43;;7909:2;7900:3;7904:1;7900:6;;;;;;;;:::i;:::-;;;;;;:11;;;;;7934:6;7921:7;7929:1;7921:10;;;;;;;;:::i;:::-;;;;;;;;;;:19;7951:7;;:37;;-1:-1:-1;;;7951:37:97;;-1:-1:-1;;;;;7951:7:97;;;;:17;;:37;;7969:4;;7975:3;;7980:7;;7951:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7999:17:97;;-1:-1:-1;;;7999:17:97;;-1:-1:-1;;;;;6941:55:127;;7999:17:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;7999:13:97;-1:-1:-1;7999:13:97;;-1:-1:-1;6896:18:127;;7999:17:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8042:79:97;;;-1:-1:-1;;;;;16788:15:127;;;8042:79:97;;;16770:34:127;16840:15;;16820:18;;;;16813:43;;;;8042:79:97;;;;;;;;;;16682:18:127;;;;8042:79:97;;;;;;;-1:-1:-1;;;;;8042:79:97;-1:-1:-1;;;8042:79:97;;;8026:96;;-1:-1:-1;;;8026:96:97;;-1:-1:-1;;;;;;;;;;;8026:15:97;-1:-1:-1;8026:15:97;;-1:-1:-1;8026:96:97;;8042:79;8026:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8132:7:97;;:49;;-1:-1:-1;;;8132:49:97;;-1:-1:-1;;;;;8132:7:97;;;;-1:-1:-1;8132:25:97;;-1:-1:-1;8132:49:97;;8158:4;;8164:2;;8168:3;;8173:7;;8132:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;8191:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8216:19:97;;-1:-1:-1;;;8216:19:97;;-1:-1:-1;;;;;6941:55:127;;8216:19:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;8216:13:97;-1:-1:-1;8216:13:97;;-1:-1:-1;6896:18:127;;8216:19:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8245:7:97;;:31;;-1:-1:-1;;;8245:31:97;;-1:-1:-1;;;;;17969:55:127;;;8245:31:97;;;17951:74:127;8245:7:97;18041:18:127;;;18034:50;8245:7:97;;;;-1:-1:-1;8245:21:97;;-1:-1:-1;17924:18:127;;8245:31:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;8286:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8320:7:97;;:34;;-1:-1:-1;;;8320:34:97;;-1:-1:-1;;;;;16788:15:127;;;8320:34:97;;;16770::127;16840:15;;;16820:18;;;16813:43;8311:80:97;;-1:-1:-1;8320:7:97;;;;-1:-1:-1;8320:24:97;;16682:18:127;;8320:34:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8356:4;8311:80;;;;;;;;;;;;;;;;;:8;:80::i;:::-;8402:17;;-1:-1:-1;;;8402:17:97;;-1:-1:-1;;;;;6941:55:127;;8402:17:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;8402:13:97;;;6896:18:127;;8402:17:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8429:7:97;;:49;;-1:-1:-1;;;8429:49:97;;-1:-1:-1;;;;;8429:7:97;;;;-1:-1:-1;8429:25:97;;-1:-1:-1;8429:49:97;;8455:4;;8461:2;;8465:3;;8470:7;;8429:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;8488:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8522:7:97;;:27;;-1:-1:-1;;;8522:27:97;;-1:-1:-1;;;;;18569:55:127;;;8522:27:97;;;18551:74:127;18641:18;;;18634:34;;;8513:70:97;;-1:-1:-1;8522:7:97;;;;-1:-1:-1;8522:17:97;;18524:18:127;;8522:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8551:1;8513:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;8602:7;;:25;;-1:-1:-1;;;8602:25:97;;-1:-1:-1;;;;;18569:55:127;;;8602:25:97;;;18551:74:127;18641:18;;;18634:34;;;8593:73:97;;8602:7;;:17;;18524:18:127;;8602:25:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8629:6;8593:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;8677:19;;-1:-1:-1;;;8677:19:97;;-1:-1:-1;;;;;6941:55:127;;8677:19:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;8677:13:97;;;6896:18:127;;8677:19:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8706:7:97;;:32;;-1:-1:-1;;;8706:32:97;;-1:-1:-1;;;;;17969:55:127;;;8706:32:97;;;17951:74:127;8706:7:97;18041:18:127;;;18034:50;8706:7:97;;;;-1:-1:-1;8706:21:97;;-1:-1:-1;17924:18:127;;8706:32:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;8748:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8782:7:97;;:34;;-1:-1:-1;;;8782:34:97;;-1:-1:-1;;;;;16788:15:127;;;8782:34:97;;;16770::127;16840:15;;;16820:18;;;16813:43;8773:81:97;;-1:-1:-1;8782:7:97;;;;-1:-1:-1;8782:24:97;;16682:18:127;;8782:34:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8818:5;8773:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;8865:17;;-1:-1:-1;;;8865:17:97;;-1:-1:-1;;;;;6941:55:127;;8865:17:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;8865:13:97;;;6896:18:127;;8865:17:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8908:79:97;;;-1:-1:-1;;;;;16788:15:127;;;8908:79:97;;;16770:34:127;16840:15;;16820:18;;;;16813:43;;;;8908:79:97;;;;;;;;;;16682:18:127;;;;8908:79:97;;;;;;;-1:-1:-1;;;;;8908:79:97;-1:-1:-1;;;8908:79:97;;;8892:96;;-1:-1:-1;;;8892:96:97;;-1:-1:-1;;;;;;;;;;;8892:15:97;-1:-1:-1;8892:15:97;;-1:-1:-1;8892:96:97;;8908:79;8892:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8998:7:97;;:49;;-1:-1:-1;;;8998:49:97;;-1:-1:-1;;;;;8998:7:97;;;;-1:-1:-1;8998:25:97;;-1:-1:-1;8998:49:97;;9024:4;;9030:2;;9034:3;;9039:7;;8998:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;9057:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7595:1483;;7499:1579;;;;:::o;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;10480:865:97:-;10571:38;;-1:-1:-1;;;10571:38:97;;-1:-1:-1;;10581:27:97;;;10571:38;;;11699:41:127;-1:-1:-1;;;;;;;;;;;10571:9:97;;;11672:18:127;;10571:38:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10620:20:97;;-1:-1:-1;10657:1:97;;-1:-1:-1;10643:16:97;;-1:-1:-1;10643:16:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10643:16:97;-1:-1:-1;10696:16:97;;;10710:1;10696:16;;;;;;;;;10620:39;;-1:-1:-1;10669:24:97;;10696:16;;;;;;;;;;;;-1:-1:-1;10696:16:97;10669:43;;10732:2;10723:3;10727:1;10723:6;;;;;;;;:::i;:::-;;;;;;:11;;;;;10757:6;10744:7;10752:1;10744:10;;;;;;;;:::i;:::-;;;;;;;;;;:19;10774:7;;:43;;-1:-1:-1;;;10774:43:97;;-1:-1:-1;;;;;10774:7:97;;;;:17;;:43;;:7;;10804:3;;10809:7;;10774:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10841:6;10850:1;10841:10;;;;:::i;:::-;10828:7;10836:1;10828:10;;;;;;;;:::i;:::-;;;;;;;;;;:23;-1:-1:-1;;;;;;;;;;;10861:15:97;-1:-1:-1;;;10972:1:97;10976:2;10980:10;:6;10972:1;10980:10;:::i;:::-;10890:101;;-1:-1:-1;;;;;19735:55:127;;;10890:101:97;;;19717:74:127;19807:18;;;19800:34;;;;19850:18;;;19843:34;19690:18;;10890:101:97;;;-1:-1:-1;;10890:101:97;;;;;;;;;;;;;;-1:-1:-1;;;;;10890:101:97;-1:-1:-1;;;;;;10890:101:97;;;;;;10861:140;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11011:20:97;;-1:-1:-1;;;11011:20:97;;11028:1;11011:20;;;6923:74:127;-1:-1:-1;;;;;;;;;;;11011:8:97;-1:-1:-1;11011:8:97;;-1:-1:-1;6896:18:127;;11011:20:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11041:7:97;;:63;;-1:-1:-1;;;11041:63:97;;-1:-1:-1;;;;;11041:7:97;;;;-1:-1:-1;11041:25:97;;-1:-1:-1;11041:63:97;;:7;;11087:1;;11091:3;;11096:7;;11041:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;11115:15:97;-1:-1:-1;11115:15:97;;-1:-1:-1;;;;11167:45:97;-1:-1:-1;11222:1:97;11226:2;11230:10;:6;11222:1;11230:10;:::i;:::-;11144:97;;-1:-1:-1;;;;;19735:55:127;;;11144:97:97;;;19717:74:127;19807:18;;;19800:34;;;;19850:18;;;19843:34;19690:18;;11144:97:97;;;-1:-1:-1;;11144:97:97;;;;;;;;;;;;;;-1:-1:-1;;;;;11144:97:97;-1:-1:-1;;;;;;11144:97:97;;;;;;11115:136;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11261:20:97;;-1:-1:-1;;;11261:20:97;;11278:1;11261:20;;;6923:74:127;-1:-1:-1;;;;;;;;;;;11261:8:97;-1:-1:-1;11261:8:97;;-1:-1:-1;6896:18:127;;11261:20:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11291:7:97;;:47;;-1:-1:-1;;;11291:47:97;;-1:-1:-1;;;;;11291:7:97;;;;-1:-1:-1;11291:21:97;;-1:-1:-1;11291:47:97;;:7;;11325:3;;11330:7;;11291:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10561:784;;10480:865;;:::o;6347:1146::-;6437:12;;6427:27;;-1:-1:-1;;;6427:27:97;;6437:16;;;6427:27;;;11699:41:127;-1:-1:-1;;;;;;;;;;;6427:9:97;;;11672:18:127;;6427:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6465:21:97;;-1:-1:-1;6503:1:97;;-1:-1:-1;6489:16:97;;-1:-1:-1;6489:16:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6489:16:97;-1:-1:-1;6543:16:97;;;6557:1;6543:16;;;;;;;;;6465:40;;-1:-1:-1;6515:25:97;;6543:16;;;;;;;;;;;;-1:-1:-1;6543:16:97;6515:44;;6570:20;6607:5;:12;6593:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6593:27:97;;6570:50;;6630:25;6672:5;:12;6658:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6658:27:97;;6630:55;;6701:9;6696:536;6720:5;:12;6716:1;:16;6696:536;;;6763:8;;-1:-1:-1;;;;;;;;;;;6753:9:97;;;309:37:0;;6763:5:97;;6769:1;;6763:8;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;6763:30:97;;;:70;;;;-1:-1:-1;6825:7:97;;6797:8;;-1:-1:-1;;;;;6825:7:97;;;;6797:5;;6803:1;;6797:8;;;;;;:::i;:::-;;;;;;;:16;;;-1:-1:-1;;;;;6797:36:97;;;6763:70;6753:81;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;6753:81:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:20;6872:42;;;;;;;;6881:5;6887:1;6881:8;;;;;;;;:::i;:::-;;;;;;;:11;;;6872:42;;;;6894:5;6900:1;6894:8;;;;;;;;:::i;:::-;;;;;;;:19;;;6872:42;;;6849:65;;6928:23;6946:4;6928:17;:23::i;:::-;6990:4;:15;;;6966:11;:20;6978:4;:7;;;6966:20;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;7030:7:97;;7020;;:4;;7030:7;;7020;;;;:::i;:::-;;;;;;:17;;;;;7065:4;:15;;;7051:8;7060:1;7051:11;;;;;;;;:::i;:::-;;;;;;;;;;:29;7095:7;;7113:8;;-1:-1:-1;;;;;7095:7:97;;;;:17;;7113:5;;7119:1;;7113:8;;;;;;:::i;:::-;;;;;;;:16;;;7131:4;7137:8;7095:51;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7170:4;:7;;;7161:3;7165:1;7161:6;;;;;;;;:::i;:::-;;;;;;:16;;;;;7205:5;7211:1;7205:8;;;;;;;;:::i;:::-;;;;;;;:16;;;7191:8;7200:1;7191:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7191:30:97;;;:11;;;;;;;;;;;:30;-1:-1:-1;6734:3:97;;;;:::i;:::-;;;;6696:536;;;-1:-1:-1;7270:7:97;;:37;;-1:-1:-1;;;7270:37:97;;7242:25;;-1:-1:-1;;;;;7270:7:97;;:22;;:37;;7293:8;;7303:3;;7270:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7270:37:97;;;;;;;;;;;;:::i;:::-;7242:65;;7323:9;7318:169;7342:5;:12;7338:1;:16;7318:169;;;7375:101;7384:8;7393:1;7384:11;;;;;;;;:::i;:::-;;;;;;;7397:7;;;;;;;;;-1:-1:-1;;;;;7397:7:97;-1:-1:-1;;;;;7397:17:97;;7415:5;7421:1;7415:8;;;;;;;;:::i;:::-;;;;;;;:16;;;7433:5;7439:1;7433:8;;;;;;;;:::i;:::-;;;;;;;:11;;;7397:48;;;;;;;;;;;;;;;-1:-1:-1;;;;;18569:55:127;;;;18551:74;;18656:2;18641:18;;18634:34;18539:2;18524:18;;18377:297;7397:48:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7375:101;;;;;;;;;;;;;;;;;:8;:101::i;:::-;7356:3;;;;:::i;:::-;;;;7318:169;;;;6417:1076;;;;;6347:1146;:::o;9084:565::-;9169:16;;;9183:1;9169:16;;;;;;;;;9146:20;;9169:16;;;;;;;;;-1:-1:-1;;9222:16:97;;;9236:1;9222:16;;;;;;;;;9146:39;;-1:-1:-1;9195:24:97;;9222:16;-1:-1:-1;9222:16:97;;;;;;;;;;;-1:-1:-1;;9265:68:97;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9265:68:97;-1:-1:-1;;;9265:68:97;;;9249:85;;-1:-1:-1;;;9249:85:97;;9195:43;;-1:-1:-1;;;;;;;;;;;;9249:15:97;;;:85;;9265:68;9249:85;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9344:20:97;;-1:-1:-1;;;9344:20:97;;9361:1;9344:20;;;6923:74:127;-1:-1:-1;;;;;;;;;;;9344:8:97;-1:-1:-1;9344:8:97;;-1:-1:-1;6896:18:127;;9344:20:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9374:7:97;;:63;;-1:-1:-1;;;9374:63:97;;-1:-1:-1;;;;;9374:7:97;;;;-1:-1:-1;9374:25:97;;-1:-1:-1;9374:63:97;;:7;;;;9424:3;;9429:7;;9374:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9464:68:97;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9464:68:97;-1:-1:-1;;;9464:68:97;;;9448:85;;-1:-1:-1;;;9448:85:97;;-1:-1:-1;;;;;;;;;;;9448:15:97;-1:-1:-1;9448:15:97;;-1:-1:-1;9448:85:97;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9543:20:97;;-1:-1:-1;;;9543:20:97;;9560:1;9543:20;;;6923:74:127;-1:-1:-1;;;;;;;;;;;9543:8:97;-1:-1:-1;9543:8:97;;-1:-1:-1;6896:18:127;;9543:20:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9573:7:97;;:69;;-1:-1:-1;;;9573:69:97;;-1:-1:-1;;;;;9573:7:97;;;;-1:-1:-1;9573:25:97;;-1:-1:-1;9573:69:97;;:7;;;;9629:3;;9634:7;;9573:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9136:513;;9084:565::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;9655:446:97:-;-1:-1:-1;;;;;;;;;;;9727:9:97;-1:-1:-1;;;;;9737:21:97;;;;;;:52;;-1:-1:-1;9781:7:97;;-1:-1:-1;;;;;9762:27:97;;;9781:7;;9762:27;;9737:52;9727:63;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;9727:63:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9801:22:97;;-1:-1:-1;;;9801:22:97;;-1:-1:-1;;;;;6941:55:127;;9801:22:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;9801:13:97;-1:-1:-1;9801:13:97;;-1:-1:-1;6896:18:127;;9801:22:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9849:72:97;;;-1:-1:-1;;;;;6941:55:127;;9849:72:97;;;;6923:74:127;;;;9849:72:97;;;;;;;;;;6896:18:127;;;;9849:72:97;;;;;;;-1:-1:-1;;;;;9849:72:97;-1:-1:-1;;;9849:72:97;;;9833:89;;-1:-1:-1;;;9833:89:97;;-1:-1:-1;;;;;;;;;;;9833:15:97;-1:-1:-1;9833:15:97;;-1:-1:-1;9833:89:97;;9849:72;9833:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9932:7:97;;:36;;-1:-1:-1;;;9932:36:97;;-1:-1:-1;;;;;17969:55:127;;;9932:36:97;;;17951:74:127;9932:7:97;18041:18:127;;;18034:50;9932:7:97;;;;-1:-1:-1;9932:21:97;;-1:-1:-1;17924:18:127;;9932:36:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;9978:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10012:7:97;;:42;;-1:-1:-1;;;10012:42:97;;-1:-1:-1;;;;;16788:15:127;;;10012:42:97;;;16770:34:127;;;16820:18;;;16813:43;10003:91:97;;-1:-1:-1;10012:7:97;;;;-1:-1:-1;10012:24:97;;16682:18:127;;10012:42:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10056:4;10003:91;;;;;;;;;;;;;;;;;:8;:91::i;:::-;9655:446;:::o;3206:1392::-;-1:-1:-1;;;;;;;;;;;3308:9:97;-1:-1:-1;;;;;3331:18:97;;;;;;:46;;-1:-1:-1;3369:7:97;;-1:-1:-1;;;;;3353:24:97;;;3369:7;;3353:24;;3331:46;:66;;;;-1:-1:-1;;;;;;3381:16:97;;;;3331:66;:92;;;;-1:-1:-1;3415:7:97;;-1:-1:-1;;;;;3401:22:97;;;3415:7;;3401:22;;3331:92;:106;;;;;3435:2;-1:-1:-1;;;;;3427:10:97;:4;-1:-1:-1;;;;;3427:10:97;;;3331:106;:142;;;;;3472:1;3457:5;:12;:16;3331:142;3308:175;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;3308:175:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3494:20;3531:5;:12;3517:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3517:27:97;;3494:50;;3554:24;3595:5;:12;3581:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3581:27:97;;3554:54;;3624:9;3619:460;3643:5;:12;3639:1;:16;3619:460;;;3676:10;3689:5;3695:1;3689:8;;;;;;;;:::i;:::-;;;;;;;:11;;;3676:24;;3714:18;3735:5;3741:1;3735:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:19;;;3769:14;3786:15;;;:11;:15;;;;;;;;3735:19;;-1:-1:-1;3833:26:97;3786:15;-1:-1:-1;;3833:26:97;:::i;:::-;3820:10;:39;3816:117;;;3892:26;3912:6;-1:-1:-1;;3892:26:97;:::i;:::-;3879:39;;3816:117;3947:20;3957:10;3947:20;;:::i;:::-;3981:15;;;;:11;:15;;;;;:24;;;4020:6;;3947:20;;-1:-1:-1;3993:2:97;;4020:3;;4024:1;;4020:6;;;;;;:::i;:::-;;;;;;:11;;;;;4058:10;4045:7;4053:1;4045:10;;;;;;;;:::i;:::-;;;;;;:23;;;;;3662:417;;;3657:3;;;;;:::i;:::-;;;;3619:460;;;-1:-1:-1;4089:19:97;;-1:-1:-1;;;4089:19:97;;-1:-1:-1;;;;;6941:55:127;;4089:19:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;4089:13:97;;;6896:18:127;;4089:19:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4118:7:97;;:37;;-1:-1:-1;;;4118:37:97;;-1:-1:-1;;;;;4118:7:97;;;;-1:-1:-1;4118:17:97;;-1:-1:-1;4118:37:97;;4136:4;;4142:3;;4147:7;;4118:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4165:7:97;;:49;;-1:-1:-1;;;4165:49:97;;-1:-1:-1;;;;;4165:7:97;;;;-1:-1:-1;4165:25:97;;-1:-1:-1;4165:49:97;;4191:4;;4197:2;;4201:3;;4206:7;;4165:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;4224:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4254:9;4249:343;4273:3;:10;4269:1;:14;4249:343;;;4313:7;;4337:6;;4304:73;;-1:-1:-1;;;;;4313:7:97;;:17;;4331:4;;4337:3;;4341:1;;4337:6;;;;;;:::i;:::-;;;;;;;4313:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;18569:55:127;;;;18551:74;;18656:2;18641:18;;18634:34;18539:2;18524:18;;18377:297;4313:31:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4346:1;4304:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;4400:7;;4422:6;;4391:89;;-1:-1:-1;;;;;4400:7:97;;:17;;4418:2;;4422:3;;4426:1;;4422:6;;;;;;:::i;:::-;;;;;;;4400:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;18569:55:127;;;;18551:74;;18656:2;18641:18;;18634:34;18539:2;18524:18;;18377:297;4400:29:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4431:11;:19;4443:3;4447:1;4443:6;;;;;;;;:::i;:::-;;;;;;;4431:19;;;;;;;;;;;;4391:89;;;;;;;;;;;;;;;;;:8;:89::i;:::-;4503:7;;4523:6;;4494:87;;-1:-1:-1;;;;;4503:7:97;;:19;;4523:3;;4527:1;;4523:6;;;;;;:::i;:::-;;;;;;;4503:27;;;;;;;;;;;;;345:25:127;;333:2;318:18;;199:177;4503:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4532:11;:19;4544:3;4548:1;4544:6;;;;;;;;:::i;:::-;;;;;;;4532:19;;;;;;;;;;;;4494:87;;;;;;;;;;;;;;;;;:8;:87::i;:::-;4285:3;;;;:::i;:::-;;;;4249:343;;2738:178:5;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:116:97;907:7;;:14;;;-1:-1:-1;;;907:14:97;;;;898:64;;-1:-1:-1;;;;;907:7:97;;:12;;:14;;;;;:7;;:14;;;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;907:14:97;;;;;;;;;;;;:::i;:::-;898:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:64::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:841:97;-1:-1:-1;;;;;;;;;;;1170:9:97;-1:-1:-1;;;;;1180:16:97;;;;;;:42;;-1:-1:-1;1214:7:97;;-1:-1:-1;;;;;1200:22:97;;;1214:7;;1200:22;;1180:42;:62;;;;;1241:1;1226:5;:12;:16;1180:62;1170:73;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;1170:73:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:20;1291:5;:12;1277:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1277:27:97;;1254:50;;1314:24;1355:5;:12;1341:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1341:27:97;;1314:54;;1384:9;1379:238;1403:5;:12;1399:1;:16;1379:238;;;1436:27;1454:5;1460:1;1454:8;;;;;;;;:::i;:::-;;;;;;;1436:17;:27::i;:::-;1491:5;1497:1;1491:8;;;;;;;;:::i;:::-;;;;;;;:19;;;1478:7;1486:1;1478:10;;;;;;;;:::i;:::-;;;;;;:32;;;;;1533:5;1539:1;1533:8;;;;;;;;:::i;:::-;;;;;;;:11;;;1524:3;1528:1;1524:6;;;;;;;;:::i;:::-;;;;;;:20;;;;;1587:5;1593:1;1587:8;;;;;;;;:::i;:::-;;;;;;;:19;;;1559:11;:24;1571:5;1577:1;1571:8;;;;;;;;:::i;:::-;;;;;;;:11;;;1559:24;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;1417:3:97;;-1:-1:-1;1417:3:97;;;:::i;:::-;;;;1379:238;;;-1:-1:-1;1627:7:97;;:35;;-1:-1:-1;;;1627:35:97;;-1:-1:-1;;;;;1627:7:97;;;;:17;;:35;;1645:2;;1649:3;;1654:7;;1627:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1678:9;1673:248;1697:3;:10;1693:1;:14;1673:248;;;1737:7;;1759:6;;1728:85;;-1:-1:-1;;;;;1737:7:97;;:17;;1755:2;;1759:3;;1763:1;;1759:6;;;;;;:::i;:::-;;;;;;;1737:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;18569:55:127;;;;18551:74;;18656:2;18641:18;;18634:34;18539:2;18524:18;;18377:297;1737:29:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1768:11;:19;1780:3;1784:1;1780:6;;;;;;;;:::i;:::-;;;;;;;1768:19;;;;;;;;;;;;1728:85;;;;;;;;;;;;;;;;;:8;:85::i;:::-;1836:7;;1856:6;;1827:83;;-1:-1:-1;;;;;1836:7:97;;:19;;1856:3;;1860:1;;1856:6;;;;;;:::i;:::-;;;;;;;1836:27;;;;;;;;;;;;;345:25:127;;333:2;318:18;;199:177;1836:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1865:11;:19;1877:3;1881:1;1877:6;;;;;;;;:::i;:::-;;;;;;;1865:19;;;;;;;;;;;;1827:83;;;;;;;;;;;;;;;;;:8;:83::i;:::-;1709:3;;;;:::i;:::-;;;;1673:248;;;;1160:767;;1086:841;;:::o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;18551:74:127;;;1398:17:1;18641:18:127;;;18634:34;1428:1:1;;1377:7;;18524:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;1933:1267:97:-;-1:-1:-1;;;;;;;;;;;2019:9:97;-1:-1:-1;;;;;2029:18:97;;;;;;:46;;-1:-1:-1;2067:7:97;;-1:-1:-1;;;;;2051:24:97;;;2067:7;;2051:24;;2029:46;:66;;;;;2094:1;2079:5;:12;:16;2029:66;2019:77;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;2019:77:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2107:20;2144:5;:12;2130:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2130:27:97;;2107:50;;2167:28;2212:5;:12;2198:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2198:27:97;;2167:58;;2235:28;2280:5;:12;2266:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2266:27:97;;2235:58;;2309:9;2304:449;2328:5;:12;2324:1;:16;2304:449;;;2361:20;2384:42;;;;;;;;2393:5;2399:1;2393:8;;;;;;;;:::i;:::-;;;;;;;:11;;;2384:42;;;;2406:5;2412:1;2406:8;;;;;;;;:::i;:::-;;;;;;;:19;;;2384:42;;;2361:65;;2440:23;2458:4;2440:17;:23::i;:::-;2477:27;2495:5;2501:1;2495:8;;;;;;;;:::i;:::-;;;;;;;2477:17;:27::i;:::-;2543:4;:15;;;2519:11;:20;2531:4;:7;;;2519:20;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;2596:5;2602:1;2596:8;;;;;;;;:::i;:::-;;;;;;;:19;;;2572:11;:20;2584:4;:7;;;2572:20;;;;;;;;;;;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;2639:7:97;;2630:6;;:3;;2634:1;;2630:6;;;;;;:::i;:::-;;;;;;:16;;;;;2677:4;:15;;;2660:11;2672:1;2660:14;;;;;;;;:::i;:::-;;;;;;:32;;;;;2723:5;2729:1;2723:8;;;;;;;;:::i;:::-;;;;;;;:19;;;2706:11;2718:1;2706:14;;;;;;;;:::i;:::-;;;;;;;;;;:36;-1:-1:-1;2342:3:97;;;;:::i;:::-;;;;2304:449;;;-1:-1:-1;2763:7:97;;:41;;-1:-1:-1;;;2763:41:97;;-1:-1:-1;;;;;2763:7:97;;;;:17;;:41;;2781:4;;2787:3;;2792:11;;2763:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2814:7:97;;:45;;-1:-1:-1;;;2814:45:97;;-1:-1:-1;;;;;2814:7:97;;;;-1:-1:-1;2814:21:97;;-1:-1:-1;2814:45:97;;2836:4;;2842:3;;2847:11;;2814:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2875:9;2870:324;2894:3;:10;2890:1;:14;2870:324;;;2951:7;;2975:6;;2925:139;;-1:-1:-1;;;;;2951:7:97;;:17;;2969:4;;2975:3;;2979:1;;2975:6;;;;;;:::i;:::-;;;;;;;2951:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;18569:55:127;;;;18551:74;;18656:2;18641:18;;18634:34;18539:2;18524:18;;18377:297;2951:31:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3006:11;:19;3018:3;3022:1;3018:6;;;;;;;;:::i;:::-;;;;;;;3006:19;;;;;;;;;;;;2984:11;:19;2996:3;3000:1;2996:6;;;;;;;;:::i;:::-;;;;;;;2984:19;;;;;;;;;;;;:41;;;;:::i;:::-;2925:139;;;;;;;;;;;;;;;;;:8;:139::i;:::-;3087:7;;3107:6;;3078:105;;-1:-1:-1;;;;;3087:7:97;;:19;;3107:3;;3111:1;;3107:6;;;;;;:::i;:::-;;;;;;;3087:27;;;;;;;;;;;;;345:25:127;;333:2;318:18;;199:177;3087:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3138:11;:19;3150:3;3154:1;3150:6;;;;;;;;:::i;:::-;;;;;;;3138:19;;;;;;;;;;;;3116:11;:19;3128:3;3132:1;3128:6;;;;;;;;:::i;:::-;;;;;;;3116:19;;;;;;;;;;;;:41;;;;:::i;:::-;3078:105;;;;;;;;;;;;;;;;;:8;:105::i;:::-;2906:3;;;;:::i;:::-;;;;2870:324;;4604:1737;-1:-1:-1;;;;;;;;;;;4717:9:97;-1:-1:-1;;;;;4740:18:97;;;;;;:46;;-1:-1:-1;4778:7:97;;-1:-1:-1;;;;;4762:24:97;;;4778:7;;4762:24;;4740:46;:66;;;;-1:-1:-1;;;;;;4790:16:97;;;;4740:66;:92;;;;-1:-1:-1;4824:7:97;;-1:-1:-1;;;;;4810:22:97;;;4824:7;;4810:22;;4740:92;:106;;;;;4844:2;-1:-1:-1;;;;;4836:10:97;:4;-1:-1:-1;;;;;4836:10:97;;;4740:106;:142;;;;;4881:1;4866:5;:12;:16;4740:142;4717:175;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;4717:175:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4903:20;4940:5;:12;4926:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4926:27:97;;4903:50;;4963:24;5004:5;:12;4990:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4990:27:97;;4963:54;;5027:32;5076:5;:12;5062:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5062:27:97;;5027:62;;5105:9;5100:527;5124:5;:12;5120:1;:16;5100:527;;;5157:10;5170:5;5176:1;5170:8;;;;;;;;:::i;:::-;;;;;;;:11;;;5157:24;;5195:18;5216:5;5222:1;5216:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:19;;;5250:14;5267:15;;;:11;:15;;;;;;;;5216:19;;-1:-1:-1;5314:26:97;5267:15;-1:-1:-1;;5314:26:97;:::i;:::-;5301:10;:39;5297:117;;;5373:26;5393:6;-1:-1:-1;;5373:26:97;:::i;:::-;5360:39;;5297:117;5428:15;;;;:11;:15;;;;;:29;;5447:10;;5428:15;:29;;5447:10;;5428:29;:::i;:::-;;;;-1:-1:-1;5490:14:97;;-1:-1:-1;5503:1:97;5490:10;:14;:::i;:::-;5471:15;;;;:11;:15;;;;;:33;;:15;;;:33;;;;;:::i;:::-;;;;;;;;5528:2;5519:3;5523:1;5519:6;;;;;;;;:::i;:::-;;;;;;:11;;;;;5557:10;5544:7;5552:1;5544:10;;;;;;;;:::i;:::-;;;;;;;;;;:23;5602:14;5615:1;5602:10;:14;:::i;:::-;5581:15;5597:1;5581:18;;;;;;;;:::i;:::-;;;;;;:35;;;;;5143:484;;;5138:3;;;;;:::i;:::-;;;;5100:527;;;-1:-1:-1;5637:19:97;;-1:-1:-1;;;5637:19:97;;-1:-1:-1;;;;;6941:55:127;;5637:19:97;;;6923:74:127;-1:-1:-1;;;;;;;;;;;5637:13:97;;;6896:18:127;;5637:19:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5666:7:97;;:37;;-1:-1:-1;;;5666:37:97;;-1:-1:-1;;;;;5666:7:97;;;;-1:-1:-1;5666:17:97;;-1:-1:-1;5666:37:97;;5684:4;;5690:3;;5695:7;;5666:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5713:7:97;;:57;;-1:-1:-1;;;5713:57:97;;-1:-1:-1;;;;;5713:7:97;;;;-1:-1:-1;5713:25:97;;-1:-1:-1;5713:57:97;;5739:4;;5745:2;;5749:3;;5754:15;;5713:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;5780:12:97;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5810:9;5805:530;5829:3;:10;5825:1;:14;5805:530;;;5860:10;5873:3;5877:1;5873:6;;;;;;;;:::i;:::-;;;;;;;;;;;;5894:22;5919:15;;;:11;:15;;;;;;;5974:11;:15;;;;;;5873:6;;-1:-1:-1;5894:22:97;5974:32;;5919:15;;5974:32;:::i;:::-;6030:7;;:27;;-1:-1:-1;;;6030:27:97;;-1:-1:-1;;;;;18569:55:127;;;6030:27:97;;;18551:74:127;18641:18;;;18634:34;;;5948:58:97;;-1:-1:-1;6021:94:97;;6030:7;;;;:17;;18524:18:127;;6030:27:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6059:15;6021:94;;;;;;;;;;;;;;;;;:8;:94::i;:::-;6138:7;;:25;;-1:-1:-1;;;6138:25:97;;-1:-1:-1;;;;;18569:55:127;;;6138:25:97;;;18551:74:127;18641:18;;;18634:34;;;6129:91:97;;6138:7;;:17;;18524:18:127;;6138:25:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6165:14;6129:91;;;;;;;;;;;;;;;;;:8;:91::i;:::-;6243:7;;:23;;-1:-1:-1;;;6243:23:97;;;;;345:25:127;;;6234:90:97;;-1:-1:-1;;;;;6243:7:97;;:19;;318:18:127;;6243:23:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6268:11;:15;6280:2;6268:15;;;;;;;;;;;;6234:90;;;;;;;;;;;;;;;;;:8;:90::i;:::-;5846:489;;;5841:3;;;;;:::i;:::-;;;;5805:530;;10107:367;10238:14;;10224:10;;-1:-1:-1;;;;;;;;;;;10214:9:97;;;10224:28;;;;:47;;-1:-1:-1;10256:10:97;;:15;;10224:47;10214:58;;;;;;;;;;;;;11724:14:127;11717:22;11699:41;;11687:2;11672:18;;11559:187;10214:58:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10299:64:97;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10299:64:97;-1:-1:-1;;;10299:64:97;;;10283:81;;-1:-1:-1;;;10283:81:97;;-1:-1:-1;;;;;;;;;;;10283:15:97;-1:-1:-1;10283:15:97;;-1:-1:-1;10283:81:97;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10374:20:97;;-1:-1:-1;;;10374:20:97;;10391:1;10374:20;;;6923:74:127;-1:-1:-1;;;;;;;;;;;10374:8:97;-1:-1:-1;10374:8:97;;-1:-1:-1;6896:18:127;;10374:20:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10404:7:97;;:63;;-1:-1:-1;;;10404:63:97;;-1:-1:-1;;;;;10404:7:97;;;;-1:-1:-1;10404:25:97;;-1:-1:-1;10404:63:97;;:7;;10450:1;;10454:3;;10459:7;;10404:63;;;:::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;4348:146:1:-;4458:29;;-1:-1:-1;;;4458:29:1;;-1:-1:-1;;;;;;;;;;;4458:11:1;;;:29;;4470:4;;4476:5;;4483:3;;4458:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2136:128;2228:29;;-1:-1:-1;;;2228:29:1;;-1:-1:-1;;;;;;;;;;;2228:11:1;;;:29;;2240:4;;2246:5;;2253:3;;2228:29;;;:::i;2386:134::-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;11376:313:97:-;11462:7;;11500:15;;;;;11449:10;11543:15;;;:11;:15;;;;;;;;11586:26;11543:15;-1:-1:-1;;11586:26:97;:::i;:::-;11573:10;:39;11569:114;;;11646:26;11666:6;-1:-1:-1;;11646:26:97;:::i;:::-;11628:15;;;:44;11569:114;11439:250;;;11376:313;:::o;11695:291::-;11781:7;;11819:15;;;;;11768:10;11880:15;;;:11;:15;;;;;;;;11862:11;:15;;;;;;;11819;;11768:10;;11862:33;;11880:15;11862:33;:::i;:::-;11845:50;;11923:6;11910:10;:19;11906:74;;;11945:15;;;:24;;;11758:228;;;11695:291;:::o;-1:-1:-1:-;;;;;;;;:::o;14:180:127:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:127;;14:180;-1:-1:-1;14:180:127:o;381:484::-;434:3;472:5;466:12;499:6;494:3;487:19;525:4;554:2;549:3;545:12;538:19;;591:2;584:5;580:14;612:1;622:218;636:6;633:1;630:13;622:218;;;701:13;;-1:-1:-1;;;;;697:62:127;685:75;;780:12;;;;815:15;;;;658:1;651:9;622:218;;;-1:-1:-1;856:3:127;;381:484;-1:-1:-1;;;;;381:484:127:o;870:261::-;1049:2;1038:9;1031:21;1012:4;1069:56;1121:2;1110:9;1106:18;1098:6;1069:56;:::i;:::-;1061:64;870:261;-1:-1:-1;;;870:261:127:o;1136:196::-;1204:20;;-1:-1:-1;;;;;1253:54:127;;1243:65;;1233:93;;1322:1;1319;1312:12;1233:93;1136:196;;;:::o;1337:397::-;1423:6;1431;1439;1447;1500:3;1488:9;1479:7;1475:23;1471:33;1468:53;;;1517:1;1514;1507:12;1468:53;1540:29;1559:9;1540:29;:::i;:::-;1530:39;;1588:38;1622:2;1611:9;1607:18;1588:38;:::i;:::-;1337:397;;1578:48;;-1:-1:-1;;;;1673:2:127;1658:18;;1645:32;;1724:2;1709:18;1696:32;;1337:397::o;1739:250::-;1824:1;1834:113;1848:6;1845:1;1842:13;1834:113;;;1924:11;;;1918:18;1905:11;;;1898:39;1870:2;1863:10;1834:113;;;-1:-1:-1;;1981:1:127;1963:16;;1956:27;1739:250::o;1994:271::-;2036:3;2074:5;2068:12;2101:6;2096:3;2089:19;2117:76;2186:6;2179:4;2174:3;2170:14;2163:4;2156:5;2152:16;2117:76;:::i;:::-;2247:2;2226:15;-1:-1:-1;;2222:29:127;2213:39;;;;2254:4;2209:50;;1994:271;-1:-1:-1;;1994:271:127:o;2270:1765::-;2503:2;2555:21;;;2625:13;;2528:18;;;2647:22;;;2474:4;;2503:2;2688;;2706:18;;;;2743:1;2786:15;;;2771:31;;2767:40;;2830:15;;;2474:4;;2894:1112;2910:6;2905:3;2902:15;2894:1112;;;-1:-1:-1;;2979:22:127;;;2975:36;2963:49;;3035:13;;3122:9;;-1:-1:-1;;;;;3118:58:127;3103:74;;3216:11;;3210:18;3248:15;;;3241:27;;;3329:19;;3075:15;;;3361:24;;;3542:21;;;;3408:2;3490:17;;;3478:30;;3474:39;;;3432:15;;;;3587:1;3601:296;3617:8;3612:3;3609:17;3601:296;;;3723:2;3719:7;3710:6;3702;3698:19;3694:33;3687:5;3680:48;3755:42;3790:6;3779:8;3773:15;3755:42;:::i;:::-;3826:17;;;;3745:52;-1:-1:-1;3869:14:127;;;;3645:1;3636:11;3601:296;;;-1:-1:-1;;;3984:12:127;;;;3920:6;-1:-1:-1;;3949:15:127;;;;2936:1;2927:11;2894:1112;;;-1:-1:-1;4023:6:127;;2270:1765;-1:-1:-1;;;;;;;;;;2270:1765:127:o;4040:248::-;4108:6;4116;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;-1:-1:-1;;4208:23:127;;;4278:2;4263:18;;;4250:32;;-1:-1:-1;4040:248:127:o;4293:127::-;4354:10;4349:3;4345:20;4342:1;4335:31;4385:4;4382:1;4375:15;4409:4;4406:1;4399:15;4425:253;4497:2;4491:9;4539:4;4527:17;;4574:18;4559:34;;4595:22;;;4556:62;4553:88;;;4621:18;;:::i;:::-;4657:2;4650:22;4425:253;:::o;4683:257::-;4755:4;4749:11;;;4787:17;;4834:18;4819:34;;4855:22;;;4816:62;4813:88;;;4881:18;;:::i;4945:275::-;5016:2;5010:9;5081:2;5062:13;;-1:-1:-1;;5058:27:127;5046:40;;5116:18;5101:34;;5137:22;;;5098:62;5095:88;;;5163:18;;:::i;:::-;5199:2;5192:22;4945:275;;-1:-1:-1;4945:275:127:o;5225:194::-;5296:4;5329:18;5321:6;5318:30;5315:56;;;5351:18;;:::i;:::-;-1:-1:-1;5396:1:127;5392:14;5408:4;5388:25;;5225:194::o;5424:1323::-;5538:6;5569:2;5612;5600:9;5591:7;5587:23;5583:32;5580:52;;;5628:1;5625;5618:12;5580:52;5668:9;5655:23;5701:18;5693:6;5690:30;5687:50;;;5733:1;5730;5723:12;5687:50;5756:22;;5809:4;5801:13;;5797:27;-1:-1:-1;5787:55:127;;5838:1;5835;5828:12;5787:55;5874:2;5861:16;5897:71;5913:54;5964:2;5913:54;:::i;:::-;5897:71;:::i;:::-;6002:15;;;6064:4;6103:11;;;6095:20;;6091:29;;;6033:12;;;;5990:3;6132:19;;;6129:39;;;6164:1;6161;6154:12;6129:39;6188:11;;;;6208:509;6224:6;6219:3;6216:15;6208:509;;;6304:2;6298:3;6289:7;6285:17;6281:26;6278:116;;;6348:1;6377:2;6373;6366:14;6278:116;6420:22;;:::i;:::-;6469:23;6488:3;6469:23;:::i;:::-;6455:38;;6542:12;;;6529:26;6513:14;;;6506:50;6579:2;6630:12;;;6617:26;6601:14;;;6594:50;6657:18;;6241:12;;;;6695;;;;6208:509;;;-1:-1:-1;6736:5:127;5424:1323;-1:-1:-1;;;;;;;5424:1323:127:o;7008:186::-;7067:6;7120:2;7108:9;7099:7;7095:23;7091:32;7088:52;;;7136:1;7133;7126:12;7088:52;7159:29;7178:9;7159:29;:::i;7199:954::-;7261:5;7314:3;7307:4;7299:6;7295:17;7291:27;7281:55;;7332:1;7329;7322:12;7281:55;7368:6;7355:20;7394:4;7418:71;7434:54;7485:2;7434:54;:::i;7418:71::-;7523:15;;;7609:1;7605:10;;;;7593:23;;7589:32;;;7554:12;;;;7633:15;;;7630:35;;;7661:1;7658;7651:12;7630:35;7697:2;7689:6;7685:15;7709:415;7725:6;7720:3;7717:15;7709:415;;;7803:4;7797:3;7792;7788:13;7784:24;7781:114;;;7849:1;7878:2;7874;7867:14;7781:114;7921:22;;:::i;:::-;7970:17;;7956:32;;8037:12;;;8024:26;8008:14;;;8001:50;8064:18;;8102:12;;;;7751:4;7742:14;7709:415;;;-1:-1:-1;8142:5:127;7199:954;-1:-1:-1;;;;;;7199:954:127:o;8158:531::-;8287:6;8295;8303;8356:2;8344:9;8335:7;8331:23;8327:32;8324:52;;;8372:1;8369;8362:12;8324:52;8395:29;8414:9;8395:29;:::i;:::-;8385:39;;8443:38;8477:2;8466:9;8462:18;8443:38;:::i;:::-;8433:48;;8532:2;8521:9;8517:18;8504:32;8559:18;8551:6;8548:30;8545:50;;;8591:1;8588;8581:12;8545:50;8614:69;8675:7;8666:6;8655:9;8651:22;8614:69;:::i;:::-;8604:79;;;8158:531;;;;;:::o;8694:1590::-;8896:4;8925:2;8965;8954:9;8950:18;8995:2;8984:9;8977:21;9018:6;9053;9047:13;9084:6;9076;9069:22;9110:2;9100:12;;9143:2;9132:9;9128:18;9121:25;;9205:2;9195:6;9192:1;9188:14;9177:9;9173:30;9169:39;9243:2;9235:6;9231:15;9264:1;9285;9295:960;9311:6;9306:3;9303:15;9295:960;;;9380:22;;;-1:-1:-1;;9376:36:127;9364:49;;9436:13;;9523:9;;-1:-1:-1;;;;;9519:58:127;9504:74;;9617:11;;9611:18;9649:15;;;9642:27;;;9730:19;;9476:15;;;9762:24;;;9852:21;;;;9897:1;;9820:2;9808:15;;;9911:236;9927:8;9922:3;9919:17;9911:236;;;10008:15;;-1:-1:-1;;;;;;10004:42:127;9990:57;;10116:17;;;;9955:1;9946:11;;;;;10073:14;;;;9911:236;;;-1:-1:-1;10233:12:127;;;;10170:5;-1:-1:-1;;;10198:15:127;;;;9337:1;9328:11;9295:960;;;-1:-1:-1;10272:6:127;;8694:1590;-1:-1:-1;;;;;;;;;8694:1590:127:o;10289:803::-;10451:4;10480:2;10520;10509:9;10505:18;10550:2;10539:9;10532:21;10573:6;10608;10602:13;10639:6;10631;10624:22;10677:2;10666:9;10662:18;10655:25;;10739:2;10729:6;10726:1;10722:14;10711:9;10707:30;10703:39;10689:53;;10777:2;10769:6;10765:15;10798:1;10808:255;10822:6;10819:1;10816:13;10808:255;;;10915:2;10911:7;10899:9;10891:6;10887:22;10883:36;10878:3;10871:49;10943:40;10976:6;10967;10961:13;10943:40;:::i;:::-;10933:50;-1:-1:-1;11041:12:127;;;;11006:15;;;;10844:1;10837:9;10808:255;;;-1:-1:-1;11080:6:127;;10289:803;-1:-1:-1;;;;;;;10289:803:127:o;11097:457::-;11217:6;11225;11278:2;11266:9;11257:7;11253:23;11249:32;11246:52;;;11294:1;11291;11284:12;11246:52;11317:29;11336:9;11317:29;:::i;:::-;11307:39;;11397:2;11386:9;11382:18;11369:32;11424:18;11416:6;11413:30;11410:50;;;11456:1;11453;11446:12;11410:50;11479:69;11540:7;11531:6;11520:9;11516:22;11479:69;:::i;:::-;11469:79;;;11097:457;;;;;:::o;11751:1384::-;11871:6;11879;11910:2;11953;11941:9;11932:7;11928:23;11924:32;11921:52;;;11969:1;11966;11959:12;11921:52;11992:29;12011:9;11992:29;:::i;:::-;11982:39;;12040:2;12093;12082:9;12078:18;12065:32;12120:18;12112:6;12109:30;12106:50;;;12152:1;12149;12142:12;12106:50;12175:22;;12228:4;12220:13;;12216:27;-1:-1:-1;12206:55:127;;12257:1;12254;12247:12;12206:55;12293:2;12280:16;12316:71;12332:54;12383:2;12332:54;:::i;12316:71::-;12421:15;;;12483:4;12522:11;;;12514:20;;12510:29;;;12452:12;;;;12409:3;12551:19;;;12548:39;;;12583:1;12580;12573:12;12548:39;12607:11;;;;12627:478;12643:6;12638:3;12635:15;12627:478;;;12723:2;12717:3;12708:7;12704:17;12700:26;12697:116;;;12767:1;12796:2;12792;12785:14;12697:116;12839:22;;:::i;:::-;12888:17;;12874:32;;12955:12;;;12942:26;12926:14;;;12919:50;13018:12;;;13005:26;12989:14;;;12982:50;13045:18;;12660:12;;;;13083;;;;12627:478;;;12631:3;13124:5;13114:15;;;;;;;;11751:1384;;;;;:::o;13140:673::-;13194:5;13247:3;13240:4;13232:6;13228:17;13224:27;13214:55;;13265:1;13262;13255:12;13214:55;13301:6;13288:20;13327:4;13351:71;13367:54;13418:2;13367:54;:::i;13351:71::-;13456:15;;;13542:1;13538:10;;;;13526:23;;13522:32;;;13487:12;;;;13566:15;;;13563:35;;;13594:1;13591;13584:12;13563:35;13630:2;13622:6;13618:15;13642:142;13658:6;13653:3;13650:15;13642:142;;;13724:17;;13712:30;;13762:12;;;;13675;;13642:142;;13818:595;13936:6;13944;13997:2;13985:9;13976:7;13972:23;13968:32;13965:52;;;14013:1;14010;14003:12;13965:52;14053:9;14040:23;14082:18;14123:2;14115:6;14112:14;14109:34;;;14139:1;14136;14129:12;14109:34;14162:61;14215:7;14206:6;14195:9;14191:22;14162:61;:::i;:::-;14152:71;;14276:2;14265:9;14261:18;14248:32;14232:48;;14305:2;14295:8;14292:16;14289:36;;;14321:1;14318;14311:12;14289:36;;14344:63;14399:7;14388:8;14377:9;14373:24;14344:63;:::i;14418:719::-;14498:6;14551:2;14539:9;14530:7;14526:23;14522:32;14519:52;;;14567:1;14564;14557:12;14519:52;14600:9;14594:16;14629:18;14670:2;14662:6;14659:14;14656:34;;;14686:1;14683;14676:12;14656:34;14724:6;14713:9;14709:22;14699:32;;14769:7;14762:4;14758:2;14754:13;14750:27;14740:55;;14791:1;14788;14781:12;14740:55;14820:2;14814:9;14842:2;14838;14835:10;14832:36;;;14848:18;;:::i;:::-;14890:53;14933:2;14914:13;;-1:-1:-1;;14910:27:127;14939:2;14906:36;14890:53;:::i;:::-;14877:66;;14966:2;14959:5;14952:17;15006:7;15001:2;14996;14992;14988:11;14984:20;14981:33;14978:53;;;15027:1;15024;15017:12;14978:53;15040:67;15104:2;15099;15092:5;15088:14;15083:2;15079;15075:11;15040:67;:::i;:::-;-1:-1:-1;15126:5:127;14418:719;-1:-1:-1;;;;14418:719:127:o;15142:127::-;15203:10;15198:3;15194:20;15191:1;15184:31;15234:4;15231:1;15224:15;15258:4;15255:1;15248:15;15274:435;15327:3;15365:5;15359:12;15392:6;15387:3;15380:19;15418:4;15447:2;15442:3;15438:12;15431:19;;15484:2;15477:5;15473:14;15505:1;15515:169;15529:6;15526:1;15523:13;15515:169;;;15590:13;;15578:26;;15624:12;;;;15659:15;;;;15551:1;15544:9;15515:169;;15714:585;-1:-1:-1;;;;;16003:6:127;15999:55;15988:9;15981:74;16091:2;16086;16075:9;16071:18;16064:30;15962:4;16117:56;16169:2;16158:9;16154:18;16146:6;16117:56;:::i;:::-;16221:9;16213:6;16209:22;16204:2;16193:9;16189:18;16182:50;16249:44;16286:6;16278;16249:44;:::i;:::-;16241:52;15714:585;-1:-1:-1;;;;;;15714:585:127:o;16867:218::-;17014:2;17003:9;16996:21;16977:4;17034:45;17075:2;17064:9;17060:18;17052:6;17034:45;:::i;17090:688::-;17366:4;-1:-1:-1;;;;;17476:2:127;17468:6;17464:15;17453:9;17446:34;17528:2;17520:6;17516:15;17511:2;17500:9;17496:18;17489:43;;17568:3;17563:2;17552:9;17548:18;17541:31;17595:57;17647:3;17636:9;17632:19;17624:6;17595:57;:::i;:::-;17700:9;17692:6;17688:22;17683:2;17672:9;17668:18;17661:50;17728:44;17765:6;17757;17728:44;:::i;:::-;17720:52;17090:688;-1:-1:-1;;;;;;;17090:688:127:o;18095:277::-;18162:6;18215:2;18203:9;18194:7;18190:23;18186:32;18183:52;;;18231:1;18228;18221:12;18183:52;18263:9;18257:16;18316:5;18309:13;18302:21;18295:5;18292:32;18282:60;;18338:1;18335;18328:12;18679:184;18749:6;18802:2;18790:9;18781:7;18777:23;18773:32;18770:52;;;18818:1;18815;18808:12;18770:52;-1:-1:-1;18841:16:127;;18679:184;-1:-1:-1;18679:184:127:o;18868:380::-;18947:1;18943:12;;;;18990;;;19011:61;;19065:4;19057:6;19053:17;19043:27;;19011:61;19118:2;19110:6;19107:14;19087:18;19084:38;19081:161;;19164:10;19159:3;19155:20;19152:1;19145:31;19199:4;19196:1;19189:15;19227:4;19224:1;19217:15;19081:161;;18868:380;;;:::o;19253:127::-;19314:10;19309:3;19305:20;19302:1;19295:31;19345:4;19342:1;19335:15;19369:4;19366:1;19359:15;19385:125;19450:9;;;19471:10;;;19468:36;;;19484:18;;:::i;:::-;19385:125;;;;:::o;19888:135::-;19927:3;19948:17;;;19945:43;;19968:18;;:::i;:::-;-1:-1:-1;20015:1:127;20004:13;;19888:135::o;20028:465::-;20285:2;20274:9;20267:21;20248:4;20311:56;20363:2;20352:9;20348:18;20340:6;20311:56;:::i;:::-;20415:9;20407:6;20403:22;20398:2;20387:9;20383:18;20376:50;20443:44;20480:6;20472;20443:44;:::i;:::-;20435:52;20028:465;-1:-1:-1;;;;;20028:465:127:o;20498:892::-;20593:6;20624:2;20667;20655:9;20646:7;20642:23;20638:32;20635:52;;;20683:1;20680;20673:12;20635:52;20716:9;20710:16;20749:18;20741:6;20738:30;20735:50;;;20781:1;20778;20771:12;20735:50;20804:22;;20857:4;20849:13;;20845:27;-1:-1:-1;20835:55:127;;20886:1;20883;20876:12;20835:55;20915:2;20909:9;20938:71;20954:54;21005:2;20954:54;:::i;20938:71::-;21043:15;;;21125:1;21121:10;;;;21113:19;;21109:28;;;21074:12;;;;21149:19;;;21146:39;;;21181:1;21178;21171:12;21146:39;21205:11;;;;21225:135;21241:6;21236:3;21233:15;21225:135;;;21307:10;;21295:23;;21258:12;;;;21338;;;;21225:135;;21395:128;21462:9;;;21483:11;;;21480:37;;;21497:18;;:::i;22019:217::-;22059:1;22085;22075:132;;22129:10;22124:3;22120:20;22117:1;22110:31;22164:4;22161:1;22154:15;22192:4;22189:1;22182:15;22075:132;-1:-1:-1;22221:9:127;;22019:217::o;22241:546::-;22486:2;22475:9;22468:21;22449:4;22512:45;22553:2;22542:9;22538:18;22530:6;22512:45;:::i;:::-;22605:9;22597:6;22593:22;22588:2;22577:9;22573:18;22566:50;22639:33;22665:6;22657;22639:33;:::i;:::-;22625:47;;22720:9;22712:6;22708:22;22703:2;22692:9;22688:18;22681:50;22748:33;22774:6;22766;22748:33;:::i;22792:382::-;22999:6;22992:14;22985:22;22974:9;22967:41;23058:6;23051:14;23044:22;23039:2;23028:9;23024:18;23017:50;23103:2;23098;23087:9;23083:18;23076:30;22948:4;23123:45;23164:2;23153:9;23149:18;23141:6;23123:45;:::i;23179:362::-;23384:6;23373:9;23366:25;23427:6;23422:2;23411:9;23407:18;23400:34;23470:2;23465;23454:9;23450:18;23443:30;23347:4;23490:45;23531:2;23520:9;23516:18;23508:6;23490:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","idToAmount0(uint256)":"d4b9796e","idToAmount1(uint256)":"0960724e","lbToken()":"34f1f9b1","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_ApprovedForAll(address,address,uint256,uint256)":"22b35751","testFuzz_BalanceOfBatch((address,uint256,uint256)[])":"2d57f2dd","testFuzz_BatchBurn(address,(uint256,uint256,uint256)[])":"ba9db7b0","testFuzz_BatchMint(address,(uint256,uint256)[])":"8c5f422c","testFuzz_BatchTransfer(address,address,(uint256,uint256)[])":"5f8948ff","testFuzz_BatchTransferFromPartial(address,address,(uint256,uint256)[])":"bf1efaaa","testFuzz_RevertFromBalanceExceeded(uint256,uint256)":"2c88fea4","testFuzz_RevertOnInvalidLength(uint256[],uint256[])":"d41922d9","testFuzz_SetApprovalOnSelf(address)":"42f917f4","test_Name()":"78114d2d","test_RevertForAddressZeroOrThis()":"3a4ca189","test_Symbol()":"1490c7d4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"idToAmount0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"idToAmount1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lbToken\",\"outputs\":[{\"internalType\":\"contract LBTokenCoverage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testFuzz_ApprovedForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct LBTokenTest.BalanceCase[]\",\"name\":\"cases\",\"type\":\"tuple[]\"}],\"name\":\"testFuzz_BalanceOfBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct LBTokenTest.BurnCase[]\",\"name\":\"burns\",\"type\":\"tuple[]\"}],\"name\":\"testFuzz_BatchBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct LBTokenTest.MintCase[]\",\"name\":\"mints\",\"type\":\"tuple[]\"}],\"name\":\"testFuzz_BatchMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct LBTokenTest.MintCase[]\",\"name\":\"mints\",\"type\":\"tuple[]\"}],\"name\":\"testFuzz_BatchTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct LBTokenTest.MintCase[]\",\"name\":\"mints\",\"type\":\"tuple[]\"}],\"name\":\"testFuzz_BatchTransferFromPartial\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testFuzz_RevertFromBalanceExceeded\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"testFuzz_RevertOnInvalidLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"testFuzz_SetApprovalOnSelf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Name\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_RevertForAddressZeroOrThis\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Symbol\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/LBToken.t.sol\":\"LBTokenTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"test/LBToken.t.sol\":{\"keccak256\":\"0x846b30cf922f049da50a1c52f360a9d9e6ae772f2b49f65258036bb0257adb6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://891fbdd2b12787cc7feeba165ced8f8bc7a1ba180063bc46ca7dbd30d9003dec\",\"dweb:/ipfs/QmYxUN4Ru7sTzKVztsN1gSJdRBgVs5SEU5ERc8FbRYAuyU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"idToAmount0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"idToAmount1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lbToken","outputs":[{"internalType":"contract LBTokenCoverage","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_ApprovedForAll"},{"inputs":[{"internalType":"struct LBTokenTest.BalanceCase[]","name":"cases","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_BalanceOfBatch"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"struct LBTokenTest.BurnCase[]","name":"burns","type":"tuple[]","components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_BatchBurn"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"struct LBTokenTest.MintCase[]","name":"mints","type":"tuple[]","components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_BatchMint"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct LBTokenTest.MintCase[]","name":"mints","type":"tuple[]","components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_BatchTransfer"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"struct LBTokenTest.MintCase[]","name":"mints","type":"tuple[]","components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_BatchTransferFromPartial"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_RevertFromBalanceExceeded"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_RevertOnInvalidLength"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SetApprovalOnSelf"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Name"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_RevertForAddressZeroOrThis"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_Symbol"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/LBToken.t.sol":"LBTokenTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"test/LBToken.t.sol":{"keccak256":"0x846b30cf922f049da50a1c52f360a9d9e6ae772f2b49f65258036bb0257adb6e","urls":["bzz-raw://891fbdd2b12787cc7feeba165ced8f8bc7a1ba180063bc46ca7dbd30d9003dec","dweb:/ipfs/QmYxUN4Ru7sTzKVztsN1gSJdRBgVs5SEU5ERc8FbRYAuyU"],"license":"MIT"}},"version":1},"id":97} \ No newline at end of file diff --git a/abi/LiquidityConfigurations.sol/LiquidityConfigurations.json b/abi/LiquidityConfigurations.sol/LiquidityConfigurations.json deleted file mode 100644 index b734df9f..00000000 --- a/abi/LiquidityConfigurations.sol/LiquidityConfigurations.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"LiquidityConfigurations__InvalidConfig","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122075ba728a08561a2c7afe495c6d6ab17dc4e21f232918c0c482fbf9fc010305b664736f6c63430008140033","sourceMap":"376:3151:77:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;376:3151:77;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122075ba728a08561a2c7afe495c6d6ab17dc4e21f232918c0c482fbf9fc010305b664736f6c63430008140033","sourceMap":"376:3151:77:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LiquidityConfigurations__InvalidConfig\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Liquidity Configurations Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to encode and decode the config of a pool and interact with the encoded bytes32.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/LiquidityConfigurations.sol\":\"LiquidityConfigurations\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"LiquidityConfigurations__InvalidConfig"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/LiquidityConfigurations.sol":"LiquidityConfigurations"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"}},"version":1},"id":77} \ No newline at end of file diff --git a/abi/LiquidityConfigurations.t.sol/LiquidityConfigurationsTest.json b/abi/LiquidityConfigurations.t.sol/LiquidityConfigurationsTest.json deleted file mode 100644 index e94beb50..00000000 --- a/abi/LiquidityConfigurations.t.sol/LiquidityConfigurationsTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_DecodeParams","inputs":[{"name":"config","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_EncodeParams","inputs":[{"name":"distributionX","type":"uint64","internalType":"uint64"},{"name":"distributionY","type":"uint64","internalType":"uint64"},{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetAmountsAndId","inputs":[{"name":"config","type":"bytes32","internalType":"bytes32"},{"name":"amounts","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"LiquidityConfigurations__InvalidConfig","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506113058061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806366d9a9a01161008c578063b5508aa911610066578063b5508aa914610181578063ba414fa614610189578063dd207b1c146101a1578063e20c9f71146101b457600080fd5b806366d9a9a01461014f57806385226c8114610164578063916a17c61461017957600080fd5b80633e5e3c23116100bd5780633e5e3c231461012c5780633f7286f414610134578063581007881461013c57600080fd5b80630b5145eb146100e45780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76100f2366004610ee0565b6101bc565b005b610101610395565b60405161010e9190610ef9565b60405180910390f35b61011f6103f7565b60405161010e9190610f8c565b610101610539565b610101610599565b6100f761014a36600461104c565b6105f9565b610157610815565b60405161010e919061106e565b61016c610910565b60405161010e9190611139565b6101576109e0565b61016c610adb565b610191610bab565b604051901515815260200161010e565b6100f76101af3660046111b8565b610c66565b610101610ce2565b605881901c601882901c8272ffffffffffffffffffffffffffffffffffffff8111806101f95750670de0b6b3a76400008367ffffffffffffffff16115b806102155750670de0b6b3a76400008267ffffffffffffffff16115b1561028657604051630618f58760e51b8152637752557f60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561026d57600080fd5b505af1158015610281573d6000803e3d6000fd5b505050505b600080600061029487610d42565b9250925092506102ee8367ffffffffffffffff168767ffffffffffffffff166040518060400160405280601881526020017f7465737446757a7a5f4465636f6465506172616d733a3a310000000000000000815250610dec565b6103428267ffffffffffffffff168667ffffffffffffffff166040518060400160405280601881526020017f7465737446757a7a5f4465636f6465506172616d733a3a320000000000000000815250610dec565b61038c8162ffffff168562ffffff166040518060400160405280601881526020017f7465737446757a7a5f4465636f6465506172616d733a3a330000000000000000815250610dec565b50505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156103ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103cf575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561053057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561051957838290600052602060002001805461048c90611207565b80601f01602080910402602001604051908101604052809291908181526020018280546104b890611207565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b50505050508152602001906001019061046d565b50505050815250508152602001906001019061041b565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156103ed576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103cf575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156103ed576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103cf575050505050905090565b605882901c601883901c8372ffffffffffffffffffffffffffffffffffffff8111806106365750670de0b6b3a76400008367ffffffffffffffff16115b806106525750670de0b6b3a76400008267ffffffffffffffff16115b156106c357604051630618f58760e51b8152637752557f60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505050505b6106cc85610d42565b919450925090506fffffffffffffffffffffffffffffffff8416608085901c6000670de0b6b3a764000061070a67ffffffffffffffff881685611241565b610714919061126c565b90506000670de0b6b3a764000061074767ffffffffffffffff88166fffffffffffffffffffffffffffffffff8616611241565b610751919061126c565b90506fffffffffffffffffffffffffffffffff8216608082901b176000806107798c8c610e53565b915091506107bd82846040518060400160405280601b81526020017f7465737446757a7a5f476574416d6f756e7473416e6449643a3a310000000000815250610ea5565b6108078162ffffff168962ffffff166040518060400160405280601b81526020017f7465737446757a7a5f476574416d6f756e7473416e6449643a3a320000000000815250610dec565b505050505050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105305760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156108f857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108a55790505b50505050508152505081526020019060010190610839565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561053057838290600052602060002001805461095390611207565b80601f016020809104026020016040519081016040528092919081815260200182805461097f90611207565b80156109cc5780601f106109a1576101008083540402835291602001916109cc565b820191906000526020600020905b8154815290600101906020018083116109af57829003601f168201915b505050505081526020019060010190610934565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105305760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ac357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a705790505b50505050508152505081526020019060010190610a04565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610530578382906000526020600020018054610b1e90611207565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90611207565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b505050505081526020019060010190610aff565b60075460009060ff1615610bc3575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f919061128e565b1415905090565b6040805180820190915260188082527f7465737446757a7a5f456e636f6465506172616d733a3a310000000000000000602083015262ffffff83169084901b6affffffffffffffff00000016605886901b72ffffffffffffffff000000000000000000000016171790610cdc9082908190610dec565b50505050565b606060138054806020026020016040519081016040528092919081815260200182805480156103ed576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103cf575050505050905090565b60008080610d5a8460581c67ffffffffffffffff1690565b9250610d708460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180610dab5750670de0b6b3a76400008367ffffffffffffffff16115b80610dc75750670de0b6b3a76400008267ffffffffffffffff16115b15610de557604051637752557f60e11b815260040160405180910390fd5b9193909250565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610e27908690869086906004016112a7565b60006040518083038186803b158015610e3f57600080fd5b505afa15801561038c573d6000803e3d6000fd5b6000806000806000610e6487610d42565b670de0b6b3a764000060808a811c90930281900490921b6fffffffffffffffffffffffffffffffff998a169093029190910490971617979596505050505050565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed090610e27908690869086906004016112a7565b600060208284031215610ef257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610f3a5783516001600160a01b031683529284019291840191600101610f15565b50909695505050505050565b6000815180845260005b81811015610f6c57602081850181015186830182015201610f50565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561103c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561102657605f19898503018352611014848651610f46565b948e01949350918d0191600101610ff8565b505050978a019794505091880191600101610fb3565b50919a9950505050505050505050565b6000806040838503121561105f57600080fd5b50508035926020909101359150565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561112a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156111155783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906110d3565b50978a01979550505091870191600101611096565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561118e57603f1988860301845261117c858351610f46565b94509285019290850190600101611160565b5092979650505050505050565b803567ffffffffffffffff811681146111b357600080fd5b919050565b6000806000606084860312156111cd57600080fd5b6111d68461119b565b92506111e46020850161119b565b9150604084013562ffffff811681146111fc57600080fd5b809150509250925092565b600181811c9082168061121b57607f821691505b60208210810361123b57634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761126657634e487b7160e01b600052601160045260246000fd5b92915050565b60008261128957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156112a057600080fd5b5051919050565b8381528260208201526060604082015260006112c66060830184610f46565b9594505050505056fea2646970667358221220de3e88b0dfa99a57a60aaf54634cae4b83bb474b344233c8bc95cbb4665c91ad64736f6c63430008140033","sourceMap":"156:2315:114:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;156:2315:114;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806366d9a9a01161008c578063b5508aa911610066578063b5508aa914610181578063ba414fa614610189578063dd207b1c146101a1578063e20c9f71146101b457600080fd5b806366d9a9a01461014f57806385226c8114610164578063916a17c61461017957600080fd5b80633e5e3c23116100bd5780633e5e3c231461012c5780633f7286f414610134578063581007881461013c57600080fd5b80630b5145eb146100e45780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76100f2366004610ee0565b6101bc565b005b610101610395565b60405161010e9190610ef9565b60405180910390f35b61011f6103f7565b60405161010e9190610f8c565b610101610539565b610101610599565b6100f761014a36600461104c565b6105f9565b610157610815565b60405161010e919061106e565b61016c610910565b60405161010e9190611139565b6101576109e0565b61016c610adb565b610191610bab565b604051901515815260200161010e565b6100f76101af3660046111b8565b610c66565b610101610ce2565b605881901c601882901c8272ffffffffffffffffffffffffffffffffffffff8111806101f95750670de0b6b3a76400008367ffffffffffffffff16115b806102155750670de0b6b3a76400008267ffffffffffffffff16115b1561028657604051630618f58760e51b8152637752557f60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561026d57600080fd5b505af1158015610281573d6000803e3d6000fd5b505050505b600080600061029487610d42565b9250925092506102ee8367ffffffffffffffff168767ffffffffffffffff166040518060400160405280601881526020017f7465737446757a7a5f4465636f6465506172616d733a3a310000000000000000815250610dec565b6103428267ffffffffffffffff168667ffffffffffffffff166040518060400160405280601881526020017f7465737446757a7a5f4465636f6465506172616d733a3a320000000000000000815250610dec565b61038c8162ffffff168562ffffff166040518060400160405280601881526020017f7465737446757a7a5f4465636f6465506172616d733a3a330000000000000000815250610dec565b50505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156103ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103cf575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561053057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561051957838290600052602060002001805461048c90611207565b80601f01602080910402602001604051908101604052809291908181526020018280546104b890611207565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b50505050508152602001906001019061046d565b50505050815250508152602001906001019061041b565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156103ed576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103cf575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156103ed576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103cf575050505050905090565b605882901c601883901c8372ffffffffffffffffffffffffffffffffffffff8111806106365750670de0b6b3a76400008367ffffffffffffffff16115b806106525750670de0b6b3a76400008267ffffffffffffffff16115b156106c357604051630618f58760e51b8152637752557f60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505050505b6106cc85610d42565b919450925090506fffffffffffffffffffffffffffffffff8416608085901c6000670de0b6b3a764000061070a67ffffffffffffffff881685611241565b610714919061126c565b90506000670de0b6b3a764000061074767ffffffffffffffff88166fffffffffffffffffffffffffffffffff8616611241565b610751919061126c565b90506fffffffffffffffffffffffffffffffff8216608082901b176000806107798c8c610e53565b915091506107bd82846040518060400160405280601b81526020017f7465737446757a7a5f476574416d6f756e7473416e6449643a3a310000000000815250610ea5565b6108078162ffffff168962ffffff166040518060400160405280601b81526020017f7465737446757a7a5f476574416d6f756e7473416e6449643a3a320000000000815250610dec565b505050505050505050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105305760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156108f857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108a55790505b50505050508152505081526020019060010190610839565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561053057838290600052602060002001805461095390611207565b80601f016020809104026020016040519081016040528092919081815260200182805461097f90611207565b80156109cc5780601f106109a1576101008083540402835291602001916109cc565b820191906000526020600020905b8154815290600101906020018083116109af57829003601f168201915b505050505081526020019060010190610934565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105305760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ac357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a705790505b50505050508152505081526020019060010190610a04565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610530578382906000526020600020018054610b1e90611207565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90611207565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b505050505081526020019060010190610aff565b60075460009060ff1615610bc3575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f919061128e565b1415905090565b6040805180820190915260188082527f7465737446757a7a5f456e636f6465506172616d733a3a310000000000000000602083015262ffffff83169084901b6affffffffffffffff00000016605886901b72ffffffffffffffff000000000000000000000016171790610cdc9082908190610dec565b50505050565b606060138054806020026020016040519081016040528092919081815260200182805480156103ed576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103cf575050505050905090565b60008080610d5a8460581c67ffffffffffffffff1690565b9250610d708460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180610dab5750670de0b6b3a76400008367ffffffffffffffff16115b80610dc75750670de0b6b3a76400008267ffffffffffffffff16115b15610de557604051637752557f60e11b815260040160405180910390fd5b9193909250565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590610e27908690869086906004016112a7565b60006040518083038186803b158015610e3f57600080fd5b505afa15801561038c573d6000803e3d6000fd5b6000806000806000610e6487610d42565b670de0b6b3a764000060808a811c90930281900490921b6fffffffffffffffffffffffffffffffff998a169093029190910490971617979596505050505050565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed090610e27908690869086906004016112a7565b600060208284031215610ef257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610f3a5783516001600160a01b031683529284019291840191600101610f15565b50909695505050505050565b6000815180845260005b81811015610f6c57602081850181015186830182015201610f50565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561103c57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561102657605f19898503018352611014848651610f46565b948e01949350918d0191600101610ff8565b505050978a019794505091880191600101610fb3565b50919a9950505050505050505050565b6000806040838503121561105f57600080fd5b50508035926020909101359150565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561112a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156111155783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906110d3565b50978a01979550505091870191600101611096565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561118e57603f1988860301845261117c858351610f46565b94509285019290850190600101611160565b5092979650505050505050565b803567ffffffffffffffff811681146111b357600080fd5b919050565b6000806000606084860312156111cd57600080fd5b6111d68461119b565b92506111e46020850161119b565b9150604084013562ffffff811681146111fc57600080fd5b809150509250925092565b600181811c9082168061121b57607f821691505b60208210810361123b57634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761126657634e487b7160e01b600052601160045260246000fd5b92915050565b60008261128957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156112a057600080fd5b5051919050565b8381528260208201526060604082015260006112c66060830184610f46565b9594505050505056fea2646970667358221220de3e88b0dfa99a57a60aaf54634cae4b83bb474b344233c8bc95cbb4665c91ad64736f6c63430008140033","sourceMap":"156:2315:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;724:747;;;;;;:::i;:::-;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;1477:992:114:-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5904:14:127;;5897:22;5879:41;;5867:2;5852:18;1243:204:1;5739:187:127;337:381:114;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;724:747:114:-;839:2;820:21;;;901:2;882:21;;;828:6;982:17;964:35;;;:59;;;1019:4;1003:13;:20;;;964:59;:83;;;;1043:4;1027:13;:20;;;964:83;960:202;;;1063:88;;-1:-1:-1;;;1063:88:114;;-1:-1:-1;;;1063:88:114;;;6674:52:127;1063:15:114;;;;6647:18:127;;1063:88:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:202;1173:21;1196;1219:10;1233:21;:6;:19;:21::i;:::-;1172:82;;;;;;1265:67;1274:14;1265:67;;1290:13;1265:67;;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;1342;1351:14;1342:67;;1367:13;1342:67;;;;;;;;;;;;;;;;;;;:8;:67::i;:::-;1419:45;1428:3;1419:45;;1433:2;1419:45;;;;;;;;;;;;;;;;;;;:8;:45::i;:::-;780:691;;;;;;724:747;:::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;1477:992:114:-;1612:2;1593:21;;;1674:2;1655:21;;;1601:6;1755:17;1737:35;;;:59;;;1792:4;1776:13;:20;;;1737:59;:83;;;;1816:4;1800:13;:20;;;1737:83;1733:202;;;1836:88;;-1:-1:-1;;;1836:88:114;;-1:-1:-1;;;1836:88:114;;;6674:52:127;1836:15:114;;;;6647:18:127;;1836:88:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:202;1982:21;:6;:19;:21::i;:::-;1945:58;;-1:-1:-1;1945:58:114;-1:-1:-1;1945:58:114;-1:-1:-1;2669:8:78;2662:16;;2701:6;2697:14;;;2015:10:114;2119:4;2089:27;;;;2662:16:78;2089:27:114;:::i;:::-;:34;;;;:::i;:::-;2068:56;-1:-1:-1;2134:10:114;2185:4;2155:27;;;;:11;;;:27;:::i;:::-;:34;;;;:::i;:::-;2134:56;-1:-1:-1;2226:9:114;;;1061:6:78;1057:15;;;1035:38;2201:22:114;;2290:31;:6;2313:7;2290:22;:31::i;:::-;2250:71;;;;2332:72;2341:15;2358:14;2332:72;;;;;;;;;;;;;;;;;:8;:72::i;:::-;2414:48;2423:3;2414:48;;2428:2;2414:48;;;;;;;;;;;;;;;;;;;:8;:48::i;:::-;1553:916;;;;;;;;;;1477:992;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;7788:74:127;;;1398:17:1;7878:18:127;;;7871:34;1428:1:1;;1377:7;;7761:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;337:381:114:-;546:165;;;;;;;;;674:2:77;546:165:114;;;;;;;;1553:46:77;;;1398:29:76;;;;;;731:2:77;1398:29:76;;;;;1383:45;;;546:165:114;;1383:45:76;;;;546:8:114;:165::i;:::-;438:280;337:381;;;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;2063:513:77:-;2148:20;;;2233:42;:6;731:2;6548:20:76;6570:11;6544:38;;6410:188;2233:42:77;2217:58;-1:-1:-1;2301:42:77;:6;674:2;6548:20:76;6570:11;6544:38;;6410:188;2301:42:77;2285:58;-1:-1:-1;;5670:11:76;5644:38;;2421:17:77;2403:35;;;:64;;;777:4;2442:13;:25;;;2403:64;:93;;;;777:4;2471:13;:25;;;2403:93;2399:171;;;2519:40;;-1:-1:-1;;;2519:40:77;;;;;;;;;;;2399:171;2063:513;;;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3093:432:77;3176:7;3185:6;3204:20;3226;3248:9;3261:20;3274:6;3261:12;:20::i;:::-;3405:9;2701:6:78;2697:14;;;3438:22:77;;;3434:38;;;1057:15:78;;;2669:8;2662:16;;;3381:22:77;;;3377:38;;;;3500:9;;;1035:38:78;;3203:78:77;;-1:-1:-1;;;;;;3093:432:77:o;3826:134:1:-;3924:29;;-1:-1:-1;;;3924:29:1;;:11;;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;14:180:127:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:127;;14:180;-1:-1:-1;14:180:127:o;199:681::-;370:2;422:21;;;492:13;;395:18;;;514:22;;;341:4;;370:2;593:15;;;;567:2;552:18;;;341:4;636:218;650:6;647:1;644:13;636:218;;;715:13;;-1:-1:-1;;;;;711:62:127;699:75;;829:15;;;;794:12;;;;672:1;665:9;636:218;;;-1:-1:-1;871:3:127;;199:681;-1:-1:-1;;;;;;199:681:127:o;885:423::-;927:3;965:5;959:12;992:6;987:3;980:19;1017:1;1027:162;1041:6;1038:1;1035:13;1027:162;;;1103:4;1159:13;;;1155:22;;1149:29;1131:11;;;1127:20;;1120:59;1056:12;1027:162;;;1031:3;1234:1;1227:4;1218:6;1213:3;1209:16;1205:27;1198:38;1297:4;1290:2;1286:7;1281:2;1273:6;1269:15;1265:29;1260:3;1256:39;1252:50;1245:57;;;885:423;;;;:::o;1313:1765::-;1546:2;1598:21;;;1668:13;;1571:18;;;1690:22;;;1517:4;;1546:2;1731;;1749:18;;;;1786:1;1829:15;;;1814:31;;1810:40;;1873:15;;;1517:4;;1937:1112;1953:6;1948:3;1945:15;1937:1112;;;-1:-1:-1;;2022:22:127;;;2018:36;2006:49;;2078:13;;2165:9;;-1:-1:-1;;;;;2161:58:127;2146:74;;2259:11;;2253:18;2291:15;;;2284:27;;;2372:19;;2118:15;;;2404:24;;;2585:21;;;;2451:2;2533:17;;;2521:30;;2517:39;;;2475:15;;;;2630:1;2644:296;2660:8;2655:3;2652:17;2644:296;;;2766:2;2762:7;2753:6;2745;2741:19;2737:33;2730:5;2723:48;2798:42;2833:6;2822:8;2816:15;2798:42;:::i;:::-;2869:17;;;;2788:52;-1:-1:-1;2912:14:127;;;;2688:1;2679:11;2644:296;;;-1:-1:-1;;;3027:12:127;;;;2963:6;-1:-1:-1;;2992:15:127;;;;1979:1;1970:11;1937:1112;;;-1:-1:-1;3066:6:127;;1313:1765;-1:-1:-1;;;;;;;;;;1313:1765:127:o;3083:248::-;3151:6;3159;3212:2;3200:9;3191:7;3187:23;3183:32;3180:52;;;3228:1;3225;3218:12;3180:52;-1:-1:-1;;3251:23:127;;;3321:2;3306:18;;;3293:32;;-1:-1:-1;3083:248:127:o;3336:1590::-;3538:4;3567:2;3607;3596:9;3592:18;3637:2;3626:9;3619:21;3660:6;3695;3689:13;3726:6;3718;3711:22;3752:2;3742:12;;3785:2;3774:9;3770:18;3763:25;;3847:2;3837:6;3834:1;3830:14;3819:9;3815:30;3811:39;3885:2;3877:6;3873:15;3906:1;3927;3937:960;3953:6;3948:3;3945:15;3937:960;;;4022:22;;;-1:-1:-1;;4018:36:127;4006:49;;4078:13;;4165:9;;-1:-1:-1;;;;;4161:58:127;4146:74;;4259:11;;4253:18;4291:15;;;4284:27;;;4372:19;;4118:15;;;4404:24;;;4494:21;;;;4539:1;;4462:2;4450:15;;;4553:236;4569:8;4564:3;4561:17;4553:236;;;4650:15;;4667:20;4646:42;4632:57;;4758:17;;;;4597:1;4588:11;;;;;4715:14;;;;4553:236;;;-1:-1:-1;4875:12:127;;;;4812:5;-1:-1:-1;;;4840:15:127;;;;3979:1;3970:11;3937:960;;;-1:-1:-1;4914:6:127;;3336:1590;-1:-1:-1;;;;;;;;;3336:1590:127:o;4931:803::-;5093:4;5122:2;5162;5151:9;5147:18;5192:2;5181:9;5174:21;5215:6;5250;5244:13;5281:6;5273;5266:22;5319:2;5308:9;5304:18;5297:25;;5381:2;5371:6;5368:1;5364:14;5353:9;5349:30;5345:39;5331:53;;5419:2;5411:6;5407:15;5440:1;5450:255;5464:6;5461:1;5458:13;5450:255;;;5557:2;5553:7;5541:9;5533:6;5529:22;5525:36;5520:3;5513:49;5585:40;5618:6;5609;5603:13;5585:40;:::i;:::-;5575:50;-1:-1:-1;5683:12:127;;;;5648:15;;;;5486:1;5479:9;5450:255;;;-1:-1:-1;5722:6:127;;4931:803;-1:-1:-1;;;;;;;4931:803:127:o;5931:171::-;5998:20;;6058:18;6047:30;;6037:41;;6027:69;;6092:1;6089;6082:12;6027:69;5931:171;;;:::o;6107:418::-;6181:6;6189;6197;6250:2;6238:9;6229:7;6225:23;6221:32;6218:52;;;6266:1;6263;6256:12;6218:52;6289:28;6307:9;6289:28;:::i;:::-;6279:38;;6336:37;6369:2;6358:9;6354:18;6336:37;:::i;:::-;6326:47;;6423:2;6412:9;6408:18;6395:32;6467:8;6460:5;6456:20;6449:5;6446:31;6436:59;;6491:1;6488;6481:12;6436:59;6514:5;6504:15;;;6107:418;;;;;:::o;6737:380::-;6816:1;6812:12;;;;6859;;;6880:61;;6934:4;6926:6;6922:17;6912:27;;6880:61;6987:2;6979:6;6976:14;6956:18;6953:38;6950:161;;7033:10;7028:3;7024:20;7021:1;7014:31;7068:4;7065:1;7058:15;7096:4;7093:1;7086:15;6950:161;;6737:380;;;:::o;7122:265::-;7195:9;;;7226;;7243:15;;;7237:22;;7223:37;7213:168;;7303:10;7298:3;7294:20;7291:1;7284:31;7338:4;7335:1;7328:15;7366:4;7363:1;7356:15;7213:168;7122:265;;;;:::o;7392:217::-;7432:1;7458;7448:132;;7502:10;7497:3;7493:20;7490:1;7483:31;7537:4;7534:1;7527:15;7565:4;7562:1;7555:15;7448:132;-1:-1:-1;7594:9:127;;7392:217::o;7916:184::-;7986:6;8039:2;8027:9;8018:7;8014:23;8010:32;8007:52;;;8055:1;8052;8045:12;8007:52;-1:-1:-1;8078:16:127;;7916:184;-1:-1:-1;7916:184:127:o;8105:362::-;8310:6;8299:9;8292:25;8353:6;8348:2;8337:9;8333:18;8326:34;8396:2;8391;8380:9;8376:18;8369:30;8273:4;8416:45;8457:2;8446:9;8442:18;8434:6;8416:45;:::i;:::-;8408:53;8105:362;-1:-1:-1;;;;;8105:362:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_DecodeParams(bytes32)":"0b5145eb","testFuzz_EncodeParams(uint64,uint64,uint24)":"dd207b1c","testFuzz_GetAmountsAndId(bytes32,bytes32)":"58100788"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LiquidityConfigurations__InvalidConfig\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"config\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_DecodeParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"distributionX\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"distributionY\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"testFuzz_EncodeParams\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"config\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetAmountsAndId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/LiquidityConfigurations.t.sol\":\"LiquidityConfigurationsTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"test/libraries/math/LiquidityConfigurations.t.sol\":{\"keccak256\":\"0x601cd3923e5626638d363e143a386143dec8040ef48193d346ceb7ffff0ad72f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5d82110f960c419b886ede33811b1dc9e6f9ed406c80b976cb2070d30e6a6bb\",\"dweb:/ipfs/QmbdbS8vzB5tBLkZP4ksXBEEG41iGbATH9HzhRXSvTmFBc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"LiquidityConfigurations__InvalidConfig"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"config","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_DecodeParams"},{"inputs":[{"internalType":"uint64","name":"distributionX","type":"uint64"},{"internalType":"uint64","name":"distributionY","type":"uint64"},{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_EncodeParams"},{"inputs":[{"internalType":"bytes32","name":"config","type":"bytes32"},{"internalType":"bytes32","name":"amounts","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetAmountsAndId"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/LiquidityConfigurations.t.sol":"LiquidityConfigurationsTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"test/libraries/math/LiquidityConfigurations.t.sol":{"keccak256":"0x601cd3923e5626638d363e143a386143dec8040ef48193d346ceb7ffff0ad72f","urls":["bzz-raw://d5d82110f960c419b886ede33811b1dc9e6f9ed406c80b976cb2070d30e6a6bb","dweb:/ipfs/QmbdbS8vzB5tBLkZP4ksXBEEG41iGbATH9HzhRXSvTmFBc"],"license":"MIT"}},"version":1},"id":114} \ No newline at end of file diff --git a/abi/MockERC20.sol/MockERC20.json b/abi/MockERC20.sol/MockERC20.json deleted file mode 100644 index 277c1788..00000000 --- a/abi/MockERC20.sol/MockERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610e9e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101c5578063a9059cbb146101cd578063d505accf146101e0578063dd62ed3e146101f357600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101a557600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec61022c565b6040516100f991906109a4565b60405180910390f35b610115610110366004610a0e565b6102be565b60405190151581526020016100f9565b610138610133366004610aec565b61032b565b005b6003545b6040519081526020016100f9565b61011561015a366004610b60565b6103d4565b60025460405160ff90911681526020016100f9565b61013e6104e9565b61013e61018a366004610b9c565b6001600160a01b031660009081526004602052604090205490565b61013e6101b3366004610b9c565b60086020526000908152604090205481565b6100ec61050f565b6101156101db366004610a0e565b61051e565b6101386101ee366004610bb7565b6105b5565b61013e610201366004610c21565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60606000805461023b90610c54565b80601f016020809104026020016040519081016040528092919081815260200182805461026790610c54565b80156102b45780601f10610289576101008083540402835291602001916102b4565b820191906000526020600020905b81548152906001019060200180831161029757829003601f168201915b5050505050905090565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103199086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103835760405162461bcd60e51b815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b600061038f8482610cdd565b50600161039c8382610cdd565b506002805460ff191660ff83161790556103b4610822565b6006556103bf61083b565b60075550506009805460ff1916600117905550565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001981146104305761040b81846108de565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604090205461045390846108de565b6001600160a01b0380871660009081526004602052604080822093909355908616815220546104829084610941565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104d69087815260200190565b60405180910390a3506001949350505050565b60006006546104f6610822565b146105085761050361083b565b905090565b5060075490565b60606001805461023b90610c54565b3360009081526004602052604081205461053890836108de565b33600090815260046020526040808220929092556001600160a01b038516815220546105649083610941565b6001600160a01b0384166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103199086815260200190565b428410156106055760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161037a565b600060016106116104e9565b6001600160a01b038a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061065f83610db3565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016106d892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610736573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061076c5750876001600160a01b0316816001600160a01b0316145b6107b85760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161037a565b6001600160a01b0381811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b60006109a08061083463ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161086d9190610dcc565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc661089e610822565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000818310156109305760405162461bcd60e51b815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f7700000000604482015260640161037a565b61093a8284610e42565b9392505050565b60008061094e8385610e55565b90508381101561093a5760405162461bcd60e51b815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f770000000000000000604482015260640161037a565b4690565b600060208083528351808285015260005b818110156109d1578581018301518582016040015282016109b5565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a0957600080fd5b919050565b60008060408385031215610a2157600080fd5b610a2a836109f2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a5f57600080fd5b813567ffffffffffffffff80821115610a7a57610a7a610a38565b604051601f8301601f19908116603f01168101908282118183101715610aa257610aa2610a38565b81604052838152866020858801011115610abb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff81168114610a0957600080fd5b600080600060608486031215610b0157600080fd5b833567ffffffffffffffff80821115610b1957600080fd5b610b2587838801610a4e565b94506020860135915080821115610b3b57600080fd5b50610b4886828701610a4e565b925050610b5760408501610adb565b90509250925092565b600080600060608486031215610b7557600080fd5b610b7e846109f2565b9250610b8c602085016109f2565b9150604084013590509250925092565b600060208284031215610bae57600080fd5b61093a826109f2565b600080600080600080600060e0888a031215610bd257600080fd5b610bdb886109f2565b9650610be9602089016109f2565b95506040880135945060608801359350610c0560808901610adb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215610c3457600080fd5b610c3d836109f2565b9150610c4b602084016109f2565b90509250929050565b600181811c90821680610c6857607f821691505b602082108103610c8857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610cd857600081815260208120601f850160051c81016020861015610cb55750805b601f850160051c820191505b81811015610cd457828155600101610cc1565b5050505b505050565b815167ffffffffffffffff811115610cf757610cf7610a38565b610d0b81610d058454610c54565b84610c8e565b602080601f831160018114610d405760008415610d285750858301515b600019600386901b1c1916600185901b178555610cd4565b600085815260208120601f198616915b82811015610d6f57888601518255948401946001909101908401610d50565b5085821015610d8d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201610dc557610dc5610d9d565b5060010190565b6000808354610dda81610c54565b60018281168015610df25760018114610e0757610e36565b60ff1984168752821515830287019450610e36565b8760005260208060002060005b85811015610e2d5781548a820152908401908201610e14565b50505082870194505b50929695505050505050565b8181038181111561032557610325610d9d565b8082018082111561032557610325610d9d56fea2646970667358221220a2758abfcb10584a5216f3ab260ca6154433a759f19a133add973f501eee5c3d64736f6c63430008140033","sourceMap":"369:7950:19:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101c5578063a9059cbb146101cd578063d505accf146101e0578063dd62ed3e146101f357600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101a557600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec61022c565b6040516100f991906109a4565b60405180910390f35b610115610110366004610a0e565b6102be565b60405190151581526020016100f9565b610138610133366004610aec565b61032b565b005b6003545b6040519081526020016100f9565b61011561015a366004610b60565b6103d4565b60025460405160ff90911681526020016100f9565b61013e6104e9565b61013e61018a366004610b9c565b6001600160a01b031660009081526004602052604090205490565b61013e6101b3366004610b9c565b60086020526000908152604090205481565b6100ec61050f565b6101156101db366004610a0e565b61051e565b6101386101ee366004610bb7565b6105b5565b61013e610201366004610c21565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60606000805461023b90610c54565b80601f016020809104026020016040519081016040528092919081815260200182805461026790610c54565b80156102b45780601f10610289576101008083540402835291602001916102b4565b820191906000526020600020905b81548152906001019060200180831161029757829003601f168201915b5050505050905090565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103199086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103835760405162461bcd60e51b815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b600061038f8482610cdd565b50600161039c8382610cdd565b506002805460ff191660ff83161790556103b4610822565b6006556103bf61083b565b60075550506009805460ff1916600117905550565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001981146104305761040b81846108de565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604090205461045390846108de565b6001600160a01b0380871660009081526004602052604080822093909355908616815220546104829084610941565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104d69087815260200190565b60405180910390a3506001949350505050565b60006006546104f6610822565b146105085761050361083b565b905090565b5060075490565b60606001805461023b90610c54565b3360009081526004602052604081205461053890836108de565b33600090815260046020526040808220929092556001600160a01b038516815220546105649083610941565b6001600160a01b0384166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103199086815260200190565b428410156106055760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161037a565b600060016106116104e9565b6001600160a01b038a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061065f83610db3565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016106d892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610736573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061076c5750876001600160a01b0316816001600160a01b0316145b6107b85760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161037a565b6001600160a01b0381811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b60006109a08061083463ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161086d9190610dcc565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc661089e610822565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000818310156109305760405162461bcd60e51b815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f7700000000604482015260640161037a565b61093a8284610e42565b9392505050565b60008061094e8385610e55565b90508381101561093a5760405162461bcd60e51b815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f770000000000000000604482015260640161037a565b4690565b600060208083528351808285015260005b818110156109d1578581018301518582016040015282016109b5565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a0957600080fd5b919050565b60008060408385031215610a2157600080fd5b610a2a836109f2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a5f57600080fd5b813567ffffffffffffffff80821115610a7a57610a7a610a38565b604051601f8301601f19908116603f01168101908282118183101715610aa257610aa2610a38565b81604052838152866020858801011115610abb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff81168114610a0957600080fd5b600080600060608486031215610b0157600080fd5b833567ffffffffffffffff80821115610b1957600080fd5b610b2587838801610a4e565b94506020860135915080821115610b3b57600080fd5b50610b4886828701610a4e565b925050610b5760408501610adb565b90509250925092565b600080600060608486031215610b7557600080fd5b610b7e846109f2565b9250610b8c602085016109f2565b9150604084013590509250925092565b600060208284031215610bae57600080fd5b61093a826109f2565b600080600080600080600060e0888a031215610bd257600080fd5b610bdb886109f2565b9650610be9602089016109f2565b95506040880135945060608801359350610c0560808901610adb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215610c3457600080fd5b610c3d836109f2565b9150610c4b602084016109f2565b90509250929050565b600181811c90821680610c6857607f821691505b602082108103610c8857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610cd857600081815260208120601f850160051c81016020861015610cb55750805b601f850160051c820191505b81811015610cd457828155600101610cc1565b5050505b505050565b815167ffffffffffffffff811115610cf757610cf7610a38565b610d0b81610d058454610c54565b84610c8e565b602080601f831160018114610d405760008415610d285750858301515b600019600386901b1c1916600185901b178555610cd4565b600085815260208120601f198616915b82811015610d6f57888601518255948401946001909101908401610d50565b5085821015610d8d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201610dc557610dc5610d9d565b5060010190565b6000808354610dda81610c54565b60018281168015610df25760018114610e0757610e36565b60ff1984168752821515830287019450610e36565b8760005260208060002060005b85811015610e2d5781548a820152908401908201610e14565b50505082870194505b50929695505050505050565b8181038181111561032557610325610d9d565b8082018082111561032557610325610d9d56fea2646970667358221220a2758abfcb10584a5216f3ab260ca6154433a759f19a133add973f501eee5c3d64736f6c63430008140033","sourceMap":"369:7950:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;677:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3057:221;;;;;;:::i;:::-;;:::i;:::-;;;1192:14:127;;1185:22;1167:41;;1155:2;1140:18;3057:221:19;1027:187:127;2504:365:19;;;;;;:::i;:::-;;:::i;:::-;;1322:100;1403:12;;1322:100;;;3000:25:127;;;2988:2;2973:18;1322:100:19;2854:177:127;3578:472:19;;;;;;:::i;:::-;;:::i;877:92::-;953:9;;877:92;;953:9;;;;3511:36:127;;3499:2;3484:18;877:92:19;3369:184:127;5427:178:19;;;:::i;1428:116::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1520:17:19;1494:7;1520:17;;;:10;:17;;;;;;;1428:116;1970:41;;;;;;:::i;:::-;;;;;;;;;;;;;;775:96;;;:::i;3284:288::-;;;;;;:::i;:::-;;:::i;4239:1182::-;;;;;;:::i;:::-;;:::i;1550:142::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1659:17:19;;;1633:7;1659:17;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;1550:142;677:92;725:13;757:5;750:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;677:92;:::o;3057:221::-;3167:10;3140:4;3156:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3156:31:19;;;;;;;;;;:40;;;3212:37;3140:4;;3156:31;;3212:37;;;;3190:6;3000:25:127;;2988:2;2973:18;;2854:177;3212:37:19;;;;;;;;-1:-1:-1;3267:4:19;3057:221;;;;;:::o;2504:365::-;2611:11;;;;2610:12;2602:44;;;;-1:-1:-1;;;2602:44:19;;5394:2:127;2602:44:19;;;5376:21:127;5433:2;5413:18;;;5406:30;5472:21;5452:18;;;5445:49;5511:18;;2602:44:19;;;;;;;;;2657:5;:13;2665:5;2657;:13;:::i;:::-;-1:-1:-1;2680:7:19;:17;2690:7;2680;:17;:::i;:::-;-1:-1:-1;2707:9:19;:21;;-1:-1:-1;;2707:21:19;;;;;;;2758:14;:12;:14::i;:::-;2739:16;:33;2809:24;:22;:24::i;:::-;2782;:51;-1:-1:-1;;2844:11:19;:18;;-1:-1:-1;;2844:18:19;2858:4;2844:18;;;-1:-1:-1;2504:365:19:o;3578:472::-;-1:-1:-1;;;;;3709:16:19;;3675:4;3709:16;;;:10;:16;;;;;;;;3726:10;3709:28;;;;;;;;-1:-1:-1;;3788:22:19;;3784:80;;3843:21;3848:7;3857:6;3843:4;:21::i;:::-;-1:-1:-1;;;;;3812:16:19;;;;;;:10;:16;;;;;;;;3829:10;3812:28;;;;;;;:52;3784:80;-1:-1:-1;;;;;3899:16:19;;;;;;:10;:16;;;;;;3894:30;;3917:6;3894:4;:30::i;:::-;-1:-1:-1;;;;;3875:16:19;;;;;;;:10;:16;;;;;;:49;;;;3956:14;;;;;;;3951:28;;3972:6;3951:4;:28::i;:::-;-1:-1:-1;;;;;3934:14:19;;;;;;;:10;:14;;;;;;;:45;;;;3995:26;;;;;;;;;;4014:6;3000:25:127;;2988:2;2973:18;;2854:177;3995:26:19;;;;;;;;-1:-1:-1;4039:4:19;;3578:472;-1:-1:-1;;;;3578:472:19:o;5427:178::-;5484:7;5528:16;;5510:14;:12;:14::i;:::-;:34;:88;;5574:24;:22;:24::i;:::-;5503:95;;5427:178;:::o;5510:88::-;-1:-1:-1;5547:24:19;;;5427:178::o;775:96::-;825:13;857:7;850:14;;;;;:::i;3284:288::-;3420:10;3363:4;3409:22;;;:10;:22;;;;;;3404:36;;3433:6;3404:4;:36::i;:::-;3390:10;3379:22;;;;:10;:22;;;;;;:61;;;;-1:-1:-1;;;;;3472:14:19;;;;;;3467:28;;3488:6;3467:4;:28::i;:::-;-1:-1:-1;;;;;3450:14:19;;;;;;:10;:14;;;;;;;:45;;;;3511:32;;3520:10;;3511:32;;;;3536:6;3000:25:127;;2988:2;2973:18;;2854:177;4239:1182:19;4416:15;4404:8;:27;;4396:63;;;;-1:-1:-1;;;4396:63:19;;7946:2:127;4396:63:19;;;7928:21:127;7985:2;7965:18;;;7958:30;8024:25;8004:18;;;7997:53;8067:18;;4396:63:19;7744:347:127;4396:63:19;4470:24;4497:717;4617:18;:16;:18::i;:::-;-1:-1:-1;;;;;5026:13:19;;;;;;:6;:13;;;;;:15;;4732:157;;4919:5;;4954:7;;4991:5;;5026:15;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;4692:413:19;;;;;;8655:25:127;;;;-1:-1:-1;;;;;8777:15:127;;;8757:18;;;8750:43;8829:15;;;;8809:18;;;8802:43;8861:18;;;8854:34;8904:19;;;8897:35;8948:19;;;8941:35;;;8627:19;;4692:413:19;;;;;;;;;;;;4657:470;;;;;;4547:598;;;;;;;;-1:-1:-1;;;9245:27:127;;9297:1;9288:11;;9281:27;;;;9333:2;9324:12;;9317:28;9370:2;9361:12;;8987:392;4547:598:19;;;;-1:-1:-1;;4547:598:19;;;;;;;;;4520:639;;4547:598;4520:639;;;;4497:717;;;;;;;;;9611:25:127;9684:4;9672:17;;9652:18;;;9645:45;9706:18;;;9699:34;;;9749:18;;;9742:34;;;9583:19;;4497:717:19;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4497:717:19;;-1:-1:-1;;4497:717:19;;;-1:-1:-1;;;;;;;5233:30:19;;;;;;:59;;;5287:5;-1:-1:-1;;;;;5267:25:19;:16;-1:-1:-1;;;;;5267:25:19;;5233:59;5225:86;;;;-1:-1:-1;;;5225:86:19;;9989:2:127;5225:86:19;;;9971:21:127;10028:2;10008:18;;;10001:30;10067:16;10047:18;;;10040:44;10101:18;;5225:86:19;9787:338:127;5225:86:19;-1:-1:-1;;;;;5322:28:19;;;;;;;:10;:28;;;;;;;;:37;;;;;;;;;;;;;:45;;;5383:31;3000:25:127;;;5322:37:19;;5383:31;;;;;2973:18:127;5383:31:19;;;;;;;4386:1035;4239:1182;;;;;;;:::o;8017:300::-;8063:15;8140:12;;8297:13;;;;:::i;:::-;8287:23;;8080:237;;8017:300;:::o;5611:404::-;5676:7;5753:95;5882:5;5866:23;;;;;;:::i;:::-;;;;;;;;5907:14;5939;:12;:14::i;:::-;5725:273;;;;;;11238:25:127;;;;11279:18;;11272:34;;;;11322:18;;;11315:34;11365:18;;;11358:34;5979:4:19;11408:19:127;;;11401:84;11210:19;;5725:273:19;;;;;;;;;;;;5702:306;;;;;;5695:313;;5611:404;:::o;7038:154::-;7097:7;7129:1;7124;:6;;7116:47;;;;-1:-1:-1;;;7116:47:19;;11698:2:127;7116:47:19;;;11680:21:127;11737:2;11717:18;;;11710:30;11776;11756:18;;;11749:58;11824:18;;7116:47:19;11496:352:127;7116:47:19;7180:5;7184:1;7180;:5;:::i;:::-;7173:12;7038:154;-1:-1:-1;;;7038:154:19:o;6859:173::-;6918:7;;6949:5;6953:1;6949;:5;:::i;:::-;6937:17;;6977:1;6972;:6;;6964:43;;;;-1:-1:-1;;;6964:43:19;;12318:2:127;6964:43:19;;;12300:21:127;12357:2;12337:18;;;12330:30;12396:26;12376:18;;;12369:54;12440:18;;6964:43:19;12116:348:127;7735:276:19;7918:9;;7735:276::o;14:548:127:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:127;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:127:o;1219:127::-;1280:10;1275:3;1271:20;1268:1;1261:31;1311:4;1308:1;1301:15;1335:4;1332:1;1325:15;1351:719;1394:5;1447:3;1440:4;1432:6;1428:17;1424:27;1414:55;;1465:1;1462;1455:12;1414:55;1501:6;1488:20;1527:18;1564:2;1560;1557:10;1554:36;;;1570:18;;:::i;:::-;1645:2;1639:9;1613:2;1699:13;;-1:-1:-1;;1695:22:127;;;1719:2;1691:31;1687:40;1675:53;;;1743:18;;;1763:22;;;1740:46;1737:72;;;1789:18;;:::i;:::-;1829:10;1825:2;1818:22;1864:2;1856:6;1849:18;1910:3;1903:4;1898:2;1890:6;1886:15;1882:26;1879:35;1876:55;;;1927:1;1924;1917:12;1876:55;1991:2;1984:4;1976:6;1972:17;1965:4;1957:6;1953:17;1940:54;2038:1;2031:4;2026:2;2018:6;2014:15;2010:26;2003:37;2058:6;2049:15;;;;;;1351:719;;;;:::o;2075:156::-;2141:20;;2201:4;2190:16;;2180:27;;2170:55;;2221:1;2218;2211:12;2236:613;2331:6;2339;2347;2400:2;2388:9;2379:7;2375:23;2371:32;2368:52;;;2416:1;2413;2406:12;2368:52;2456:9;2443:23;2485:18;2526:2;2518:6;2515:14;2512:34;;;2542:1;2539;2532:12;2512:34;2565:50;2607:7;2598:6;2587:9;2583:22;2565:50;:::i;:::-;2555:60;;2668:2;2657:9;2653:18;2640:32;2624:48;;2697:2;2687:8;2684:16;2681:36;;;2713:1;2710;2703:12;2681:36;;2736:52;2780:7;2769:8;2758:9;2754:24;2736:52;:::i;:::-;2726:62;;;2807:36;2839:2;2828:9;2824:18;2807:36;:::i;:::-;2797:46;;2236:613;;;;;:::o;3036:328::-;3113:6;3121;3129;3182:2;3170:9;3161:7;3157:23;3153:32;3150:52;;;3198:1;3195;3188:12;3150:52;3221:29;3240:9;3221:29;:::i;:::-;3211:39;;3269:38;3303:2;3292:9;3288:18;3269:38;:::i;:::-;3259:48;;3354:2;3343:9;3339:18;3326:32;3316:42;;3036:328;;;;;:::o;3740:186::-;3799:6;3852:2;3840:9;3831:7;3827:23;3823:32;3820:52;;;3868:1;3865;3858:12;3820:52;3891:29;3910:9;3891:29;:::i;3931:606::-;4042:6;4050;4058;4066;4074;4082;4090;4143:3;4131:9;4122:7;4118:23;4114:33;4111:53;;;4160:1;4157;4150:12;4111:53;4183:29;4202:9;4183:29;:::i;:::-;4173:39;;4231:38;4265:2;4254:9;4250:18;4231:38;:::i;:::-;4221:48;;4316:2;4305:9;4301:18;4288:32;4278:42;;4367:2;4356:9;4352:18;4339:32;4329:42;;4390:37;4422:3;4411:9;4407:19;4390:37;:::i;:::-;4380:47;;4474:3;4463:9;4459:19;4446:33;4436:43;;4526:3;4515:9;4511:19;4498:33;4488:43;;3931:606;;;;;;;;;;:::o;4542:260::-;4610:6;4618;4671:2;4659:9;4650:7;4646:23;4642:32;4639:52;;;4687:1;4684;4677:12;4639:52;4710:29;4729:9;4710:29;:::i;:::-;4700:39;;4758:38;4792:2;4781:9;4777:18;4758:38;:::i;:::-;4748:48;;4542:260;;;;;:::o;4807:380::-;4886:1;4882:12;;;;4929;;;4950:61;;5004:4;4996:6;4992:17;4982:27;;4950:61;5057:2;5049:6;5046:14;5026:18;5023:38;5020:161;;5103:10;5098:3;5094:20;5091:1;5084:31;5138:4;5135:1;5128:15;5166:4;5163:1;5156:15;5020:161;;4807:380;;;:::o;5666:545::-;5768:2;5763:3;5760:11;5757:448;;;5804:1;5829:5;5825:2;5818:17;5874:4;5870:2;5860:19;5944:2;5932:10;5928:19;5925:1;5921:27;5915:4;5911:38;5980:4;5968:10;5965:20;5962:47;;;-1:-1:-1;6003:4:127;5962:47;6058:2;6053:3;6049:12;6046:1;6042:20;6036:4;6032:31;6022:41;;6113:82;6131:2;6124:5;6121:13;6113:82;;;6176:17;;;6157:1;6146:13;6113:82;;;6117:3;;;5757:448;5666:545;;;:::o;6387:1352::-;6513:3;6507:10;6540:18;6532:6;6529:30;6526:56;;;6562:18;;:::i;:::-;6591:97;6681:6;6641:38;6673:4;6667:11;6641:38;:::i;:::-;6635:4;6591:97;:::i;:::-;6743:4;;6807:2;6796:14;;6824:1;6819:663;;;;7526:1;7543:6;7540:89;;;-1:-1:-1;7595:19:127;;;7589:26;7540:89;-1:-1:-1;;6344:1:127;6340:11;;;6336:24;6332:29;6322:40;6368:1;6364:11;;;6319:57;7642:81;;6789:944;;6819:663;5613:1;5606:14;;;5650:4;5637:18;;-1:-1:-1;;6855:20:127;;;6973:236;6987:7;6984:1;6981:14;6973:236;;;7076:19;;;7070:26;7055:42;;7168:27;;;;7136:1;7124:14;;;;7003:19;;6973:236;;;6977:3;7237:6;7228:7;7225:19;7222:201;;;7298:19;;;7292:26;-1:-1:-1;;7381:1:127;7377:14;;;7393:3;7373:24;7369:37;7365:42;7350:58;7335:74;;7222:201;-1:-1:-1;;;;;7469:1:127;7453:14;;;7449:22;7436:36;;-1:-1:-1;6387:1352:127:o;8096:127::-;8157:10;8152:3;8148:20;8145:1;8138:31;8188:4;8185:1;8178:15;8212:4;8209:1;8202:15;8228:135;8267:3;8288:17;;;8285:43;;8308:18;;:::i;:::-;-1:-1:-1;8355:1:127;8344:13;;8228:135::o;10130:844::-;10260:3;10289:1;10322:6;10316:13;10352:36;10378:9;10352:36;:::i;:::-;10407:1;10424:18;;;10451:133;;;;10598:1;10593:356;;;;10417:532;;10451:133;-1:-1:-1;;10484:24:127;;10472:37;;10557:14;;10550:22;10538:35;;10529:45;;;-1:-1:-1;10451:133:127;;10593:356;10624:6;10621:1;10614:17;10654:4;10699:2;10696:1;10686:16;10724:1;10738:165;10752:6;10749:1;10746:13;10738:165;;;10830:14;;10817:11;;;10810:35;10873:16;;;;10767:10;;10738:165;;;10742:3;;;10932:6;10927:3;10923:16;10916:23;;10417:532;-1:-1:-1;10965:3:127;;10130:844;-1:-1:-1;;;;;;10130:844:127:o;11853:128::-;11920:9;;;11941:11;;;11938:37;;;11955:18;;:::i;11986:125::-;12051:9;;;12072:10;;;12069:36;;;12085:18;;:::i","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","initialize(string,string,uint8)":"1624f6c6","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC20.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"},\"initialize(string,string,uint8)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"notice\":\"This is a mock contract of the ERC20 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"},"initialize(string,string,uint8)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC20.sol":"MockERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/abi/MockERC721.sol/IERC721TokenReceiver.json b/abi/MockERC721.sol/IERC721TokenReceiver.json deleted file mode 100644 index b0678358..00000000 --- a/abi/MockERC721.sol/IERC721TokenReceiver.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC721.sol\":\"IERC721TokenReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC721.sol":"IERC721TokenReceiver"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/abi/MockERC721.sol/MockERC721.json b/abi/MockERC721.sol/MockERC721.json deleted file mode 100644 index ed232420..00000000 --- a/abi/MockERC721.sol/MockERC721.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610fe0806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610a9a565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610b04565b34801561014557600080fd5b5061016f610154366004610b17565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610b47565b6103c6565b005b61019a6101aa366004610b71565b6104ba565b61019a6101bd366004610b71565b6106df565b3480156101ce57600080fd5b5061019a6101dd366004610c59565b6107ce565b3480156101ee57600080fd5b5061016f6101fd366004610b17565b61084c565b34801561020e57600080fd5b5061022261021d366004610cbd565b6108b6565b60405190815260200161010e565b34801561023c57600080fd5b5061012c61092a565b34801561025157600080fd5b5061019a610260366004610cd8565b610939565b61019a610273366004610d14565b6109a5565b34801561028457600080fd5b5061012c610293366004610b17565b50606090565b3480156102a557600080fd5b506101026102b4366004610d90565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610dc3565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610dc3565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b600082815260046020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105235760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610448565b6001600160a01b0382166105795760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610448565b336001600160a01b03841614806105b357506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105d457506000818152600460205260409020546001600160a01b031633145b6106115760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161063583610e13565b90915550506001600160a01b038216600090815260036020526040812080549161065e83610e2a565b9091555050600081815260026020908152604080832080546001600160a01b0380881673ffffffffffffffffffffffffffffffffffffffff1992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106ea8383836104ba565b813b158061078a5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af115801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077e9190610e43565b6001600160e01b031916145b6107c95760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156108215760405162461bcd60e51b815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610448565b600061082d8382610eae565b50600161083a8282610eae565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b0316806108b15760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610448565b919050565b60006001600160a01b03821661090e5760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610dc3565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109b08484846104ba565b823b1580610a3c5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906109ed903390899088908890600401610f6e565b6020604051808303816000875af1158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610e43565b6001600160e01b031916145b610a7b5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b6001600160e01b031981168114610a9757600080fd5b50565b600060208284031215610aac57600080fd5b8135610ab781610a81565b9392505050565b6000815180845260005b81811015610ae457602081850181015186830182015201610ac8565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ab76020830184610abe565b600060208284031215610b2957600080fd5b5035919050565b80356001600160a01b03811681146108b157600080fd5b60008060408385031215610b5a57600080fd5b610b6383610b30565b946020939093013593505050565b600080600060608486031215610b8657600080fd5b610b8f84610b30565b9250610b9d60208501610b30565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610bde57610bde610bad565b604051601f8501601f19908116603f01168101908282118183101715610c0657610c06610bad565b81604052809350858152868686011115610c1f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610c4a57600080fd5b610ab783833560208501610bc3565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610c39565b93506020850135915080821115610ca657600080fd5b50610cb385828601610c39565b9150509250929050565b600060208284031215610ccf57600080fd5b610ab782610b30565b60008060408385031215610ceb57600080fd5b610cf483610b30565b915060208301358015158114610d0957600080fd5b809150509250929050565b60008060008060808587031215610d2a57600080fd5b610d3385610b30565b9350610d4160208601610b30565b925060408501359150606085013567ffffffffffffffff811115610d6457600080fd5b8501601f81018713610d7557600080fd5b610d8487823560208401610bc3565b91505092959194509250565b60008060408385031215610da357600080fd5b610dac83610b30565b9150610dba60208401610b30565b90509250929050565b600181811c90821680610dd757607f821691505b602082108103610df757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610e2257610e22610dfd565b506000190190565b600060018201610e3c57610e3c610dfd565b5060010190565b600060208284031215610e5557600080fd5b8151610ab781610a81565b601f8211156107c957600081815260208120601f850160051c81016020861015610e875750805b601f850160051c820191505b81811015610ea657828155600101610e93565b505050505050565b815167ffffffffffffffff811115610ec857610ec8610bad565b610edc81610ed68454610dc3565b84610e60565b602080601f831160018114610f115760008415610ef95750858301515b600019600386901b1c1916600185901b178555610ea6565b600085815260208120601f198616915b82811015610f4057888601518255948401946001909101908401610f21565b5085821015610f5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001600160a01b03808716835280861660208401525083604083015260806060830152610fa06080830184610abe565b969550505050505056fea2646970667358221220c6f1d1264b19b7e5bc7f9a31dbb6480392f287f842efda0ef87ceb480486e3cf64736f6c63430008140033","sourceMap":"381:7498:20:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610a9a565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610b04565b34801561014557600080fd5b5061016f610154366004610b17565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610b47565b6103c6565b005b61019a6101aa366004610b71565b6104ba565b61019a6101bd366004610b71565b6106df565b3480156101ce57600080fd5b5061019a6101dd366004610c59565b6107ce565b3480156101ee57600080fd5b5061016f6101fd366004610b17565b61084c565b34801561020e57600080fd5b5061022261021d366004610cbd565b6108b6565b60405190815260200161010e565b34801561023c57600080fd5b5061012c61092a565b34801561025157600080fd5b5061019a610260366004610cd8565b610939565b61019a610273366004610d14565b6109a5565b34801561028457600080fd5b5061012c610293366004610b17565b50606090565b3480156102a557600080fd5b506101026102b4366004610d90565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610dc3565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610dc3565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b600082815260046020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105235760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610448565b6001600160a01b0382166105795760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610448565b336001600160a01b03841614806105b357506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105d457506000818152600460205260409020546001600160a01b031633145b6106115760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161063583610e13565b90915550506001600160a01b038216600090815260036020526040812080549161065e83610e2a565b9091555050600081815260026020908152604080832080546001600160a01b0380881673ffffffffffffffffffffffffffffffffffffffff1992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106ea8383836104ba565b813b158061078a5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af115801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077e9190610e43565b6001600160e01b031916145b6107c95760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156108215760405162461bcd60e51b815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610448565b600061082d8382610eae565b50600161083a8282610eae565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b0316806108b15760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610448565b919050565b60006001600160a01b03821661090e5760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610dc3565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109b08484846104ba565b823b1580610a3c5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906109ed903390899088908890600401610f6e565b6020604051808303816000875af1158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610e43565b6001600160e01b031916145b610a7b5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b6001600160e01b031981168114610a9757600080fd5b50565b600060208284031215610aac57600080fd5b8135610ab781610a81565b9392505050565b6000815180845260005b81811015610ae457602081850181015186830182015201610ac8565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ab76020830184610abe565b600060208284031215610b2957600080fd5b5035919050565b80356001600160a01b03811681146108b157600080fd5b60008060408385031215610b5a57600080fd5b610b6383610b30565b946020939093013593505050565b600080600060608486031215610b8657600080fd5b610b8f84610b30565b9250610b9d60208501610b30565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610bde57610bde610bad565b604051601f8501601f19908116603f01168101908282118183101715610c0657610c06610bad565b81604052809350858152868686011115610c1f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610c4a57600080fd5b610ab783833560208501610bc3565b60008060408385031215610c6c57600080fd5b823567ffffffffffffffff80821115610c8457600080fd5b610c9086838701610c39565b93506020850135915080821115610ca657600080fd5b50610cb385828601610c39565b9150509250929050565b600060208284031215610ccf57600080fd5b610ab782610b30565b60008060408385031215610ceb57600080fd5b610cf483610b30565b915060208301358015158114610d0957600080fd5b809150509250929050565b60008060008060808587031215610d2a57600080fd5b610d3385610b30565b9350610d4160208601610b30565b925060408501359150606085013567ffffffffffffffff811115610d6457600080fd5b8501601f81018713610d7557600080fd5b610d8487823560208401610bc3565b91505092959194509250565b60008060408385031215610da357600080fd5b610dac83610b30565b9150610dba60208401610b30565b90509250929050565b600181811c90821680610dd757607f821691505b602082108103610df757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610e2257610e22610dfd565b506000190190565b600060018201610e3c57610e3c610dfd565b5060010190565b600060208284031215610e5557600080fd5b8151610ab781610a81565b601f8211156107c957600081815260208120601f850160051c81016020861015610e875750805b601f850160051c820191505b81811015610ea657828155600101610e93565b505050505050565b815167ffffffffffffffff811115610ec857610ec8610bad565b610edc81610ed68454610dc3565b84610e60565b602080601f831160018114610f115760008415610ef95750858301515b600019600386901b1c1916600185901b178555610ea6565b600085815260208120601f198616915b82811015610f4057888601518255948401946001909101908401610f21565b5085821015610f5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001600160a01b03808716835280861660208401525083604083015260806060830152610fa06080830184610abe565b969550505050505056fea2646970667358221220c6f1d1264b19b7e5bc7f9a31dbb6480392f287f842efda0ef87ceb480486e3cf64736f6c63430008140033","sourceMap":"381:7498:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5354:332;;;;;;;;;;-1:-1:-1;5354:332:20;;;;;:::i;:::-;;:::i;:::-;;;565:14:127;;558:22;540:41;;528:2;513:18;5354:332:20;;;;;;;;671:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1927:120::-;;;;;;;;;;-1:-1:-1;1927:120:20;;;;;:::i;:::-;1998:7;2024:16;;;:12;:16;;;;;;-1:-1:-1;;;;;2024:16:20;;1927:120;;;;-1:-1:-1;;;;;1594:55:127;;;1576:74;;1564:2;1549:18;1927:120:20;1430:226:127;3106:301:20;;;;;;:::i;:::-;;:::i;:::-;;3632:693;;;;;;:::i;:::-;;:::i;4331:386::-;;;;;;:::i;:::-;;:::i;2706:212::-;;;;;;;;;;-1:-1:-1;2706:212:20;;;;;:::i;:::-;;:::i;1258:158::-;;;;;;;;;;-1:-1:-1;1258:158:20;;;;;:::i;:::-;;:::i;1422:177::-;;;;;;;;;;-1:-1:-1;1422:177:20;;;;;:::i;:::-;;:::i;:::-;;;4335:25:127;;;4323:2;4308:18;1422:177:20;4189::127;769:96:20;;;;;;;;;;;;;:::i;3413:213::-;;;;;;;;;;-1:-1:-1;3413:213:20;;;;;:::i;:::-;;:::i;4723:443::-;;;;;;:::i;:::-;;:::i;871:85::-;;;;;;;;;;-1:-1:-1;871:85:20;;;;;:::i;:::-;-1:-1:-1;939:13:20;;871:85;2053:161;;;;;;;;;;-1:-1:-1;2053:161:20;;;;;:::i;:::-;-1:-1:-1;;;;;2173:24:20;;;2150:4;2173:24;;;:17;:24;;;;;;;;:34;;;;;;;;;;;;;;;2053:161;5354:332;5439:4;-1:-1:-1;;;;;;;;;5462:25:20;;;;:100;;-1:-1:-1;;;;;;;;;;5537:25:20;;;5462:100;:175;;;-1:-1:-1;;;;;;;;;;5612:25:20;;;5462:175;5455:182;5354:332;-1:-1:-1;;5354:332:20:o;671:92::-;719:13;751:5;744:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:92;:::o;3106:301::-;3194:13;3210:12;;;:8;:12;;;;;;-1:-1:-1;;;;;3210:12:20;3241:10;:19;;;:59;;-1:-1:-1;;;;;;3264:24:20;;;;;;:17;:24;;;;;;;;3289:10;3264:36;;;;;;;;;;3241:59;3233:86;;;;-1:-1:-1;;;3233:86:20;;6247:2:127;3233:86:20;;;6229:21:127;6286:2;6266:18;;;6259:30;-1:-1:-1;;;6305:18:127;;;6298:44;6359:18;;3233:86:20;;;;;;;;;3330:16;;;;:12;:16;;;;;;:26;;-1:-1:-1;;3330:26:20;-1:-1:-1;;;;;3330:26:20;;;;;;;;;3372:28;;3330:16;;3372:28;;;;;;;3184:223;3106:301;;:::o;3632:693::-;3750:12;;;;:8;:12;;;;;;-1:-1:-1;;;;;3742:20:20;;;3750:12;;3742:20;3734:43;;;;-1:-1:-1;;;3734:43:20;;6590:2:127;3734:43:20;;;6572:21:127;6629:2;6609:18;;;6602:30;6668:12;6648:18;;;6641:40;6698:18;;3734:43:20;6388:334:127;3734:43:20;-1:-1:-1;;;;;3796:16:20;;3788:46;;;;-1:-1:-1;;;3788:46:20;;6929:2:127;3788:46:20;;;6911:21:127;6968:2;6948:18;;;6941:30;7007:19;6987:18;;;6980:47;7044:18;;3788:46:20;6727:341:127;3788:46:20;3866:10;-1:-1:-1;;;;;3866:18:20;;;;:57;;-1:-1:-1;;;;;;3888:23:20;;;;;;:17;:23;;;;;;;;3912:10;3888:35;;;;;;;;;;3866:57;:91;;;-1:-1:-1;3941:16:20;;;;:12;:16;;;;;;-1:-1:-1;;;;;3941:16:20;3927:10;:30;3866:91;3845:152;;;;-1:-1:-1;;;3845:152:20;;6247:2:127;3845:152:20;;;6229:21:127;6286:2;6266:18;;;6259:30;-1:-1:-1;;;6305:18:127;;;6298:44;6359:18;;3845:152:20;6045:338:127;3845:152:20;-1:-1:-1;;;;;4173:16:20;;;;;;:10;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4202:14:20;;;;;;:10;:14;;;;;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;4229:12:20;;;;:8;:12;;;;;;;;:17;;-1:-1:-1;;;;;4229:17:20;;;-1:-1:-1;;4229:17:20;;;;;;;;4264:12;:16;;;;;;4257:23;;;;;;;4296:22;;4238:2;;4229:17;;4296:22;;;;;;3632:693;;;:::o;4331:386::-;4437:26;4450:4;4456:2;4460;4437:12;:26::i;:::-;7811:18;;7856:14;;4495:173;;-1:-1:-1;4531:67:20;;-1:-1:-1;;;4531:67:20;;;4573:10;4531:67;;;7814:34:127;-1:-1:-1;;;;;7884:15:127;;;7864:18;;;7857:43;7916:18;;;7909:34;;;7979:3;7959:18;;;7952:31;-1:-1:-1;7999:19:127;;;7992:30;4622:46:20;;4531:41;;;;4622:46;;8039:19:127;;4531:67:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4531:137:20;;4495:173;4474:236;;;;-1:-1:-1;;;4474:236:20;;8525:2:127;4474:236:20;;;8507:21:127;8564:2;8544:18;;;8537:30;-1:-1:-1;;;8583:18:127;;;8576:46;8639:18;;4474:236:20;8323:340:127;4474:236:20;4331:386;;;:::o;2706:212::-;2796:11;;;;2795:12;2787:44;;;;-1:-1:-1;;;2787:44:20;;8870:2:127;2787:44:20;;;8852:21:127;8909:2;8889:18;;;8882:30;8948:21;8928:18;;;8921:49;8987:18;;2787:44:20;8668:343:127;2787:44:20;2842:5;:13;2850:5;2842;:13;:::i;:::-;-1:-1:-1;2865:7:20;:17;2875:7;2865;:17;:::i;:::-;-1:-1:-1;;2893:11:20;:18;;-1:-1:-1;;2893:18:20;2907:4;2893:18;;;-1:-1:-1;2706:212:20:o;1258:158::-;1325:13;1367:12;;;:8;:12;;;;;;-1:-1:-1;;;;;1367:12:20;;1350:59;;;;-1:-1:-1;;;1350:59:20;;11422:2:127;1350:59:20;;;11404:21:127;11461:2;11441:18;;;11434:30;11500:12;11480:18;;;11473:40;11530:18;;1350:59:20;11220:334:127;1350:59:20;1258:158;;;:::o;1422:177::-;1494:7;-1:-1:-1;;;;;1521:19:20;;1513:44;;;;-1:-1:-1;;;1513:44:20;;11761:2:127;1513:44:20;;;11743:21:127;11800:2;11780:18;;;11773:30;11839:14;11819:18;;;11812:42;11871:18;;1513:44:20;11559:336:127;1513:44:20;-1:-1:-1;;;;;;1575:17:20;;;;;:10;:17;;;;;;;1422:177::o;769:96::-;819:13;851:7;844:14;;;;;:::i;3413:213::-;3525:10;3507:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;3507:39:20;;;;;;;;;;;;:50;;-1:-1:-1;;3507:50:20;;;;;;;;;;3573:46;;540:41:127;;;3507:39:20;;3525:10;3573:46;;513:18:127;3573:46:20;;;;;;;3413:213;;:::o;4723:443::-;4884:26;4897:4;4903:2;4907;4884:12;:26::i;:::-;7811:18;;7856:14;;4942:175;;-1:-1:-1;4978:69:20;;-1:-1:-1;;;4978:69:20;;;5071:46;-1:-1:-1;;;;;4978:41:20;;;5071:46;;4978:69;;5020:10;;5032:4;;5038:2;;5042:4;;4978:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4978:139:20;;4942:175;4921:238;;;;-1:-1:-1;;;4921:238:20;;8525:2:127;4921:238:20;;;8507:21:127;8564:2;8544:18;;;8537:30;-1:-1:-1;;;8583:18:127;;;8576:46;8639:18;;4921:238:20;8323:340:127;4921:238:20;4723:443;;;;:::o;14:131:127:-;-1:-1:-1;;;;;;88:32:127;;78:43;;68:71;;135:1;132;125:12;68:71;14:131;:::o;150:245::-;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:127:o;592:423::-;634:3;672:5;666:12;699:6;694:3;687:19;724:1;734:162;748:6;745:1;742:13;734:162;;;810:4;866:13;;;862:22;;856:29;838:11;;;834:20;;827:59;763:12;734:162;;;738:3;941:1;934:4;925:6;920:3;916:16;912:27;905:38;1004:4;997:2;993:7;988:2;980:6;976:15;972:29;967:3;963:39;959:50;952:57;;;592:423;;;;:::o;1020:220::-;1169:2;1158:9;1151:21;1132:4;1189:45;1230:2;1219:9;1215:18;1207:6;1189:45;:::i;1245:180::-;1304:6;1357:2;1345:9;1336:7;1332:23;1328:32;1325:52;;;1373:1;1370;1363:12;1325:52;-1:-1:-1;1396:23:127;;1245:180;-1:-1:-1;1245:180:127:o;1661:196::-;1729:20;;-1:-1:-1;;;;;1778:54:127;;1768:65;;1758:93;;1847:1;1844;1837:12;1862:254;1930:6;1938;1991:2;1979:9;1970:7;1966:23;1962:32;1959:52;;;2007:1;2004;1997:12;1959:52;2030:29;2049:9;2030:29;:::i;:::-;2020:39;2106:2;2091:18;;;;2078:32;;-1:-1:-1;;;1862:254:127:o;2121:328::-;2198:6;2206;2214;2267:2;2255:9;2246:7;2242:23;2238:32;2235:52;;;2283:1;2280;2273:12;2235:52;2306:29;2325:9;2306:29;:::i;:::-;2296:39;;2354:38;2388:2;2377:9;2373:18;2354:38;:::i;:::-;2344:48;;2439:2;2428:9;2424:18;2411:32;2401:42;;2121:328;;;;;:::o;2454:127::-;2515:10;2510:3;2506:20;2503:1;2496:31;2546:4;2543:1;2536:15;2570:4;2567:1;2560:15;2586:632;2651:5;2681:18;2722:2;2714:6;2711:14;2708:40;;;2728:18;;:::i;:::-;2803:2;2797:9;2771:2;2857:15;;-1:-1:-1;;2853:24:127;;;2879:2;2849:33;2845:42;2833:55;;;2903:18;;;2923:22;;;2900:46;2897:72;;;2949:18;;:::i;:::-;2989:10;2985:2;2978:22;3018:6;3009:15;;3048:6;3040;3033:22;3088:3;3079:6;3074:3;3070:16;3067:25;3064:45;;;3105:1;3102;3095:12;3064:45;3155:6;3150:3;3143:4;3135:6;3131:17;3118:44;3210:1;3203:4;3194:6;3186;3182:19;3178:30;3171:41;;;;2586:632;;;;;:::o;3223:222::-;3266:5;3319:3;3312:4;3304:6;3300:17;3296:27;3286:55;;3337:1;3334;3327:12;3286:55;3359:80;3435:3;3426:6;3413:20;3406:4;3398:6;3394:17;3359:80;:::i;3450:543::-;3538:6;3546;3599:2;3587:9;3578:7;3574:23;3570:32;3567:52;;;3615:1;3612;3605:12;3567:52;3655:9;3642:23;3684:18;3725:2;3717:6;3714:14;3711:34;;;3741:1;3738;3731:12;3711:34;3764:50;3806:7;3797:6;3786:9;3782:22;3764:50;:::i;:::-;3754:60;;3867:2;3856:9;3852:18;3839:32;3823:48;;3896:2;3886:8;3883:16;3880:36;;;3912:1;3909;3902:12;3880:36;;3935:52;3979:7;3968:8;3957:9;3953:24;3935:52;:::i;:::-;3925:62;;;3450:543;;;;;:::o;3998:186::-;4057:6;4110:2;4098:9;4089:7;4085:23;4081:32;4078:52;;;4126:1;4123;4116:12;4078:52;4149:29;4168:9;4149:29;:::i;4371:347::-;4436:6;4444;4497:2;4485:9;4476:7;4472:23;4468:32;4465:52;;;4513:1;4510;4503:12;4465:52;4536:29;4555:9;4536:29;:::i;:::-;4526:39;;4615:2;4604:9;4600:18;4587:32;4662:5;4655:13;4648:21;4641:5;4638:32;4628:60;;4684:1;4681;4674:12;4628:60;4707:5;4697:15;;;4371:347;;;;;:::o;4723:667::-;4818:6;4826;4834;4842;4895:3;4883:9;4874:7;4870:23;4866:33;4863:53;;;4912:1;4909;4902:12;4863:53;4935:29;4954:9;4935:29;:::i;:::-;4925:39;;4983:38;5017:2;5006:9;5002:18;4983:38;:::i;:::-;4973:48;;5068:2;5057:9;5053:18;5040:32;5030:42;;5123:2;5112:9;5108:18;5095:32;5150:18;5142:6;5139:30;5136:50;;;5182:1;5179;5172:12;5136:50;5205:22;;5258:4;5250:13;;5246:27;-1:-1:-1;5236:55:127;;5287:1;5284;5277:12;5236:55;5310:74;5376:7;5371:2;5358:16;5353:2;5349;5345:11;5310:74;:::i;:::-;5300:84;;;4723:667;;;;;;;:::o;5395:260::-;5463:6;5471;5524:2;5512:9;5503:7;5499:23;5495:32;5492:52;;;5540:1;5537;5530:12;5492:52;5563:29;5582:9;5563:29;:::i;:::-;5553:39;;5611:38;5645:2;5634:9;5630:18;5611:38;:::i;:::-;5601:48;;5395:260;;;;;:::o;5660:380::-;5739:1;5735:12;;;;5782;;;5803:61;;5857:4;5849:6;5845:17;5835:27;;5803:61;5910:2;5902:6;5899:14;5879:18;5876:38;5873:161;;5956:10;5951:3;5947:20;5944:1;5937:31;5991:4;5988:1;5981:15;6019:4;6016:1;6009:15;5873:161;;5660:380;;;:::o;7073:127::-;7134:10;7129:3;7125:20;7122:1;7115:31;7165:4;7162:1;7155:15;7189:4;7186:1;7179:15;7205:136;7244:3;7272:5;7262:39;;7281:18;;:::i;:::-;-1:-1:-1;;;7317:18:127;;7205:136::o;7346:135::-;7385:3;7406:17;;;7403:43;;7426:18;;:::i;:::-;-1:-1:-1;7473:1:127;7462:13;;7346:135::o;8069:249::-;8138:6;8191:2;8179:9;8170:7;8166:23;8162:32;8159:52;;;8207:1;8204;8197:12;8159:52;8239:9;8233:16;8258:30;8282:5;8258:30;:::i;9142:545::-;9244:2;9239:3;9236:11;9233:448;;;9280:1;9305:5;9301:2;9294:17;9350:4;9346:2;9336:19;9420:2;9408:10;9404:19;9401:1;9397:27;9391:4;9387:38;9456:4;9444:10;9441:20;9438:47;;;-1:-1:-1;9479:4:127;9438:47;9534:2;9529:3;9525:12;9522:1;9518:20;9512:4;9508:31;9498:41;;9589:82;9607:2;9600:5;9597:13;9589:82;;;9652:17;;;9633:1;9622:13;9589:82;;;9593:3;;;9142:545;;;:::o;9863:1352::-;9989:3;9983:10;10016:18;10008:6;10005:30;10002:56;;;10038:18;;:::i;:::-;10067:97;10157:6;10117:38;10149:4;10143:11;10117:38;:::i;:::-;10111:4;10067:97;:::i;:::-;10219:4;;10283:2;10272:14;;10300:1;10295:663;;;;11002:1;11019:6;11016:89;;;-1:-1:-1;11071:19:127;;;11065:26;11016:89;-1:-1:-1;;9820:1:127;9816:11;;;9812:24;9808:29;9798:40;9844:1;9840:11;;;9795:57;11118:81;;10265:944;;10295:663;9089:1;9082:14;;;9126:4;9113:18;;-1:-1:-1;;10331:20:127;;;10449:236;10463:7;10460:1;10457:14;10449:236;;;10552:19;;;10546:26;10531:42;;10644:27;;;;10612:1;10600:14;;;;10479:19;;10449:236;;;10453:3;10713:6;10704:7;10701:19;10698:201;;;10774:19;;;10768:26;-1:-1:-1;;10857:1:127;10853:14;;;10869:3;10849:24;10845:37;10841:42;10826:58;10811:74;;10698:201;-1:-1:-1;;;;;10945:1:127;10929:14;;;10925:22;10912:36;;-1:-1:-1;9863:1352:127:o;11900:512::-;12094:4;-1:-1:-1;;;;;12204:2:127;12196:6;12192:15;12181:9;12174:34;12256:2;12248:6;12244:15;12239:2;12228:9;12224:18;12217:43;;12296:6;12291:2;12280:9;12276:18;12269:34;12339:3;12334:2;12323:9;12319:18;12312:31;12360:46;12401:3;12390:9;12386:19;12378:6;12360:46;:::i;:::-;12352:54;11900:512;-1:-1:-1;;;;;;11900:512:127:o","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","initialize(string,string)":"4cd88b76","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC721.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"initialize(string,string)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"}},\"notice\":\"This is a mock contract of the ERC721 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC721.sol\":\"MockERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"initialize(string,string)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC721.sol":"MockERC721"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/abi/MockHooks.sol/MockHooks.json b/abi/MockHooks.sol/MockHooks.json deleted file mode 100644 index 5fb63865..00000000 --- a/abi/MockHooks.sol/MockHooks.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"afterBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterData","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"afterFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"fees","type":"bytes32","internalType":"bytes32"},{"name":"feesReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsOut","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBatchTransferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeBurn","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amountsToBurn","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeData","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"beforeFlashLoan","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amounts","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeMint","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"liquidityConfigs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"amountsReceived","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"swapForY","type":"bool","internalType":"bool"},{"name":"amountsIn","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"getLBPair","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ILBPair"}],"stateMutability":"view"},{"type":"function","name":"isLinked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"onHooksSet","inputs":[{"name":"hooksParameters","type":"bytes32","internalType":"bytes32"},{"name":"onHooksSetData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"pair","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"reset","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPair","inputs":[{"name":"_pair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"LBBaseHooks__InvalidCaller","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"LBBaseHooks__NotLinked","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610c27806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806379c8ccf7116100b2578063c2fb5a6411610081578063ea9db9d311610066578063ea9db9d3146102c3578063fdc27257146102d6578063feee3735146102e957600080fd5b8063c2fb5a64146102b3578063d826f88f146102bb57600080fd5b806379c8ccf7146102305780637a51a4c6146102435780638187f51614610256578063a8aa1b31146102a057600080fd5b806353e8079b116101095780635f9c01b1116100ee5780635f9c01b1146101ea57806360bed5f31461020a57806367ddb2781461021d57600080fd5b806353e8079b146101c2578063571eed37146101d557600080fd5b806309fa1f901461013b5780630d4abdb3146101585780634e430b5a1461019c578063505d9033146101af575b600080fd5b6101436102fc565b60405190151581526020015b60405180910390f35b61016b6101663660046107b6565b61030b565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014f565b61016b6101aa36600461081f565b610334565b61016b6101bd36600461089b565b61037e565b61016b6101d03660046108d7565b6103a3565b6101dd6103ca565b60405161014f9190610929565b6101f2610458565b6040516001600160a01b03909116815260200161014f565b61016b610218366004610977565b61046c565b61016b61022b3660046109b9565b610493565b61016b61023e3660046109b9565b6104c0565b61016b6102513660046107b6565b6104ed565b61029e610264366004610a5b565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b005b6002546101f2906001600160a01b031681565b6101dd610516565b61029e610523565b61016b6102d13660046109b9565b61053c565b61016b6102e43660046109b9565b610569565b61016b6102f73660046108d7565b610596565b60006103066105bd565b905090565b600061031561064a565b610322868686868661067b565b50630d4abdb360e01b95945050505050565b600061033e61064a565b6103466105bd565b61036357604051632def67a360e21b815260040160405180910390fd5b61036e848484610690565b5063272185ad60e11b9392505050565b600061038861064a565b610393848484610690565b5063505d903360e01b9392505050565b60006103ad61064a565b6103b9858585856106a3565b506353e8079b60e01b949350505050565b600080546103d790610a7d565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610a7d565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505081565b60006103066002546001600160a01b031690565b600061047661064a565b610482858585856106a3565b506360bed5f360e01b949350505050565b600061049d61064a565b6104ac888888888888886106b8565b50630cfbb64f60e31b979650505050505050565b60006104ca61064a565b6104d9888888888888886106d0565b506379c8ccf760e01b979650505050505050565b60006104f761064a565b61050486868686866106dd565b50633d28d26360e11b95945050505050565b600180546103d790610a7d565b61052e6000806106f8565b61053a600160006106f8565b565b600061054661064a565b610555888888888888886106d0565b5063ea9db9d360e01b979650505050505050565b600061057361064a565b610582888888888888886106b8565b5063fdc2725760e01b979650505050505050565b60006105a061064a565b6105ac858585856106eb565b5063feee373560e01b949350505050565b6000806106396105d56002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106369190610ab7565b90565b6001600160a01b0316301492915050565b6002546001600160a01b0316331461053a57604051634a27038360e01b815233600482015260240160405180910390fd5b6000610688368280610b31565b505050505050565b600061069d368280610b31565b50505050565b60016106b136600083610b31565b5050505050565b60016106c636600083610b31565b5050505050505050565b60006106c6368280610b31565b600161068836600083610b31565b60006106b1368280610b31565b50805461070490610a7d565b6000825580601f10610714575050565b601f0160209004906000526020600020908101906107329190610735565b50565b5b8082111561074a5760008155600101610736565b5090565b80356001600160a01b038116811461076557600080fd5b919050565b60008083601f84011261077c57600080fd5b50813567ffffffffffffffff81111561079457600080fd5b6020830191508360208260051b85010111156107af57600080fd5b9250929050565b6000806000806000608086880312156107ce57600080fd5b6107d78661074e565b94506107e56020870161074e565b9350604086013567ffffffffffffffff81111561080157600080fd5b61080d8882890161076a565b96999598509660600135949350505050565b60008060006040848603121561083457600080fd5b83359250602084013567ffffffffffffffff8082111561085357600080fd5b818601915086601f83011261086757600080fd5b81358181111561087657600080fd5b87602082850101111561088857600080fd5b6020830194508093505050509250925092565b6000806000606084860312156108b057600080fd5b6108b98461074e565b92506108c76020850161074e565b9150604084013590509250925092565b600080600080608085870312156108ed57600080fd5b6108f68561074e565b93506109046020860161074e565b92506040850135801515811461091957600080fd5b9396929550929360600135925050565b600060208083528351808285015260005b818110156109565785810183015185820160400152820161093a565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806080858703121561098d57600080fd5b6109968561074e565b93506109a46020860161074e565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156109d457600080fd5b6109dd8861074e565b96506109eb6020890161074e565b95506109f96040890161074e565b9450606088013567ffffffffffffffff80821115610a1657600080fd5b610a228b838c0161076a565b909650945060808a0135915080821115610a3b57600080fd5b50610a488a828b0161076a565b989b979a50959850939692959293505050565b600060208284031215610a6d57600080fd5b610a768261074e565b9392505050565b600181811c90821680610a9157607f821691505b602082108103610ab157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ac957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b601f821115610b2c57600081815260208120601f850160051c81016020861015610b0d5750805b601f850160051c820191505b8181101561068857828155600101610b19565b505050565b67ffffffffffffffff831115610b4957610b49610ad0565b610b5d83610b578354610a7d565b83610ae6565b6000601f841160018114610b915760008515610b795750838201355b600019600387901b1c1916600186901b1783556106b1565b600083815260209020601f19861690835b82811015610bc25786850135825560209485019460019092019101610ba2565b5086821015610bdf5760001960f88860031b161c19848701351681555b505060018560011b018355505050505056fea2646970667358221220807d152e5200b82d0890813e63c91c3287e3ec0bf9488b9534bdc624330825a064736f6c63430008140033","sourceMap":"96:2013:125:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101365760003560e01c806379c8ccf7116100b2578063c2fb5a6411610081578063ea9db9d311610066578063ea9db9d3146102c3578063fdc27257146102d6578063feee3735146102e957600080fd5b8063c2fb5a64146102b3578063d826f88f146102bb57600080fd5b806379c8ccf7146102305780637a51a4c6146102435780638187f51614610256578063a8aa1b31146102a057600080fd5b806353e8079b116101095780635f9c01b1116100ee5780635f9c01b1146101ea57806360bed5f31461020a57806367ddb2781461021d57600080fd5b806353e8079b146101c2578063571eed37146101d557600080fd5b806309fa1f901461013b5780630d4abdb3146101585780634e430b5a1461019c578063505d9033146101af575b600080fd5b6101436102fc565b60405190151581526020015b60405180910390f35b61016b6101663660046107b6565b61030b565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161014f565b61016b6101aa36600461081f565b610334565b61016b6101bd36600461089b565b61037e565b61016b6101d03660046108d7565b6103a3565b6101dd6103ca565b60405161014f9190610929565b6101f2610458565b6040516001600160a01b03909116815260200161014f565b61016b610218366004610977565b61046c565b61016b61022b3660046109b9565b610493565b61016b61023e3660046109b9565b6104c0565b61016b6102513660046107b6565b6104ed565b61029e610264366004610a5b565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b005b6002546101f2906001600160a01b031681565b6101dd610516565b61029e610523565b61016b6102d13660046109b9565b61053c565b61016b6102e43660046109b9565b610569565b61016b6102f73660046108d7565b610596565b60006103066105bd565b905090565b600061031561064a565b610322868686868661067b565b50630d4abdb360e01b95945050505050565b600061033e61064a565b6103466105bd565b61036357604051632def67a360e21b815260040160405180910390fd5b61036e848484610690565b5063272185ad60e11b9392505050565b600061038861064a565b610393848484610690565b5063505d903360e01b9392505050565b60006103ad61064a565b6103b9858585856106a3565b506353e8079b60e01b949350505050565b600080546103d790610a7d565b80601f016020809104026020016040519081016040528092919081815260200182805461040390610a7d565b80156104505780601f1061042557610100808354040283529160200191610450565b820191906000526020600020905b81548152906001019060200180831161043357829003601f168201915b505050505081565b60006103066002546001600160a01b031690565b600061047661064a565b610482858585856106a3565b506360bed5f360e01b949350505050565b600061049d61064a565b6104ac888888888888886106b8565b50630cfbb64f60e31b979650505050505050565b60006104ca61064a565b6104d9888888888888886106d0565b506379c8ccf760e01b979650505050505050565b60006104f761064a565b61050486868686866106dd565b50633d28d26360e11b95945050505050565b600180546103d790610a7d565b61052e6000806106f8565b61053a600160006106f8565b565b600061054661064a565b610555888888888888886106d0565b5063ea9db9d360e01b979650505050505050565b600061057361064a565b610582888888888888886106b8565b5063fdc2725760e01b979650505050505050565b60006105a061064a565b6105ac858585856106eb565b5063feee373560e01b949350505050565b6000806106396105d56002546001600160a01b031690565b6001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106369190610ab7565b90565b6001600160a01b0316301492915050565b6002546001600160a01b0316331461053a57604051634a27038360e01b815233600482015260240160405180910390fd5b6000610688368280610b31565b505050505050565b600061069d368280610b31565b50505050565b60016106b136600083610b31565b5050505050565b60016106c636600083610b31565b5050505050505050565b60006106c6368280610b31565b600161068836600083610b31565b60006106b1368280610b31565b50805461070490610a7d565b6000825580601f10610714575050565b601f0160209004906000526020600020908101906107329190610735565b50565b5b8082111561074a5760008155600101610736565b5090565b80356001600160a01b038116811461076557600080fd5b919050565b60008083601f84011261077c57600080fd5b50813567ffffffffffffffff81111561079457600080fd5b6020830191508360208260051b85010111156107af57600080fd5b9250929050565b6000806000806000608086880312156107ce57600080fd5b6107d78661074e565b94506107e56020870161074e565b9350604086013567ffffffffffffffff81111561080157600080fd5b61080d8882890161076a565b96999598509660600135949350505050565b60008060006040848603121561083457600080fd5b83359250602084013567ffffffffffffffff8082111561085357600080fd5b818601915086601f83011261086757600080fd5b81358181111561087657600080fd5b87602082850101111561088857600080fd5b6020830194508093505050509250925092565b6000806000606084860312156108b057600080fd5b6108b98461074e565b92506108c76020850161074e565b9150604084013590509250925092565b600080600080608085870312156108ed57600080fd5b6108f68561074e565b93506109046020860161074e565b92506040850135801515811461091957600080fd5b9396929550929360600135925050565b600060208083528351808285015260005b818110156109565785810183015185820160400152820161093a565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806000806080858703121561098d57600080fd5b6109968561074e565b93506109a46020860161074e565b93969395505050506040820135916060013590565b600080600080600080600060a0888a0312156109d457600080fd5b6109dd8861074e565b96506109eb6020890161074e565b95506109f96040890161074e565b9450606088013567ffffffffffffffff80821115610a1657600080fd5b610a228b838c0161076a565b909650945060808a0135915080821115610a3b57600080fd5b50610a488a828b0161076a565b989b979a50959850939692959293505050565b600060208284031215610a6d57600080fd5b610a768261074e565b9392505050565b600181811c90821680610a9157607f821691505b602082108103610ab157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ac957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b601f821115610b2c57600081815260208120601f850160051c81016020861015610b0d5750805b601f850160051c820191505b8181101561068857828155600101610b19565b505050565b67ffffffffffffffff831115610b4957610b49610ad0565b610b5d83610b578354610a7d565b83610ae6565b6000601f841160018114610b915760008515610b795750838201355b600019600387901b1c1916600186901b1783556106b1565b600083815260209020601f19861690835b82811015610bc25786850135825560209485019460019092019101610ba2565b5086821015610bdf5760001960f88860031b161c19848701351681555b505060018560011b018355505050505056fea2646970667358221220807d152e5200b82d0890813e63c91c3287e3ec0bf9488b9534bdc624330825a064736f6c63430008140033","sourceMap":"96:2013:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:93:42;;;:::i;:::-;;;179:14:127;;172:22;154:41;;142:2;127:18;1050:93:42;;;;;;;;4643:316;;;;;;:::i;:::-;;:::i;:::-;;;1612:20:127;1600:33;;;1582:52;;1570:2;1555:18;4643:316:42;1438:202:127;1413:328:42;;;;;;:::i;:::-;;:::i;3344:260::-;;;;;;:::i;:::-;;:::i;2747:273::-;;;;;;:::i;:::-;;:::i;136:23:125:-;;;:::i;:::-;;;;;;;:::i;795:98:42:-;;;:::i;:::-;;;-1:-1:-1;;;;;3869:55:127;;;3851:74;;3839:2;3824:18;795:98:42;3688:243:127;3972:287:42;;;;;;:::i;:::-;;:::i;8249:351::-;;;;;;:::i;:::-;;:::i;7496:354::-;;;;;;:::i;:::-;;:::i;5326:301::-;;;;;;:::i;:::-;;:::i;220:76:125:-;;;;;;:::i;:::-;277:4;:12;;;;-1:-1:-1;;;;;277:12:125;;;;;;;;;;220:76;;;194:19;;;;;-1:-1:-1;;;;;194:19:125;;;165:22;;;:::i;302:92::-;;;:::i;6037:327:42:-;;;;;;:::i;:::-;;:::i;6766:324::-;;;;;;:::i;:::-;;:::i;2108:274::-;;;;;;:::i;:::-;;:::i;1050:93::-;1102:4;1125:11;:9;:11::i;:::-;1118:18;;1050:93;:::o;4643:316::-;4830:6;659:21;:19;:21::i;:::-;4852:58:::1;4864:6;4872:2;4876:16;;4894:15;4852:11;:58::i;:::-;-1:-1:-1::0;;;;4643:316:42;;;;;;;:::o;1413:328::-;1566:6;659:21;:19;:21::i;:::-;1593:11:::1;:9;:11::i;:::-;1588:49;;1613:24;;-1:-1:-1::0;;;1613:24:42::1;;;;;;;;;;;1588:49;1648:44;1660:15;1677:14;;1648:11;:44::i;:::-;-1:-1:-1::0;;;;1413:328:42;;;;;:::o;3344:260::-;3491:6;659:21;:19;:21::i;:::-;3513:37:::1;3530:6;3538:2;3542:7;3513:16;:37::i;:::-;-1:-1:-1::0;;;;3344:260:42;;;;;:::o;2747:273::-;2906:6;659:21;:19;:21::i;:::-;2928:44:::1;2939:6;2947:2;2951:8;2961:10;2928;:44::i;:::-;-1:-1:-1::0;;;;2747:273:42;;;;;;:::o;136:23:125:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;795:98:42:-;848:7;874:12;496:4:125;;-1:-1:-1;;;;;496:4:125;;400:108;3972:287:42;4137:6;659:21;:19;:21::i;:::-;4159:47:::1;4175:6;4183:2;4187:4;4193:12;4159:15;:47::i;:::-;-1:-1:-1::0;;;;3972:287:42;;;;;;:::o;8249:351::-;8466:6;659:21;:19;:21::i;:::-;8484:55:::1;8508:6;8516:4;8522:2;8526:3;;8531:7;;8484:23;:55::i;:::-;-1:-1:-1::0;;;;8249:351:42;;;;;;;;;:::o;7496:354::-;7714:6;659:21;:19;:21::i;:::-;7732:56:::1;7757:6;7765:4;7771:2;7775:3;;7780:7;;7732:24;:56::i;:::-;-1:-1:-1::0;;;;7496:354:42;;;;;;;;;:::o;5326:301::-;5506:6;659:21;:19;:21::i;:::-;5528:51:::1;5539:6;5547:2;5551:16;;5569:9;5528:10;:51::i;:::-;-1:-1:-1::0;;;;5326:301:42;;;;;;;:::o;165:22:125:-;;;;;;;:::i;302:92::-;344:17;351:10;;344:17;:::i;:::-;371:16;378:9;;371:16;:::i;:::-;302:92::o;6037:327:42:-;6248:6;659:21;:19;:21::i;:::-;6266:49:::1;6278:6;6286:4;6292:2;6296:3;;6301:13;;6266:11;:49::i;:::-;-1:-1:-1::0;;;;6037:327:42;;;;;;;;;:::o;6766:324::-;6976:6;659:21;:19;:21::i;:::-;6994:48:::1;7005:6;7013:4;7019:2;7023:3;;7028:13;;6994:10;:48::i;:::-;-1:-1:-1::0;;;;6766:324:42;;;;;;;;;:::o;2108:274::-;2267:6;659:21;:19;:21::i;:::-;2289:44:::1;2301:6;2309:2;2313:8;2323:9;2289:11;:44::i;:::-;-1:-1:-1::0;;;;2108:274:42;;;;;;:::o;8998:181::-;9050:4;9066:13;9082:51;9097:12;496:4:125;;-1:-1:-1;;;;;496:4:125;;400:108;9097:12:42;-1:-1:-1;;;;;9097:33:42;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4055:15:67;3932:148;9082:51:42;-1:-1:-1;;;;;9150:22:42;9167:4;9150:22;;8998:181;-1:-1:-1;;8998:181:42:o;8698:156::-;496:4:125;;-1:-1:-1;;;;;496:4:125;8765:10:42;:35;8761:86;;8809:38;;-1:-1:-1;;;8809:38:42;;8836:10;8809:38;;;3851:74:127;3824:18;;8809:38:42;;;;;;;1129:132:125;1246:8;1233:21;1246:8;;;1233:21;:::i;:::-;;1129:132;;;;;:::o;514:110::-;609:8;596:21;609:8;;;596:21;:::i;:::-;;514:110;;;:::o;754:116::-;843:9;:20;855:8;;843:9;:20;:::i;:::-;;754:116;;;;:::o;1916:191::-;2080:9;:20;2092:8;;2080:9;:20;:::i;:::-;;1916:191;;;;;;;:::o;1717:193::-;1895:8;1882:21;1895:8;;;1882:21;:::i;1267:130::-;1370:9;:20;1382:8;;1370:9;:20;:::i;630:118::-;733:8;720:21;733:8;;;720:21;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;206:196:127:-;274:20;;-1:-1:-1;;;;;323:54:127;;313:65;;303:93;;392:1;389;382:12;303:93;206:196;;;:::o;407:367::-;470:8;480:6;534:3;527:4;519:6;515:17;511:27;501:55;;552:1;549;542:12;501:55;-1:-1:-1;575:20:127;;618:18;607:30;;604:50;;;650:1;647;640:12;604:50;687:4;679:6;675:17;663:29;;747:3;740:4;730:6;727:1;723:14;715:6;711:27;707:38;704:47;701:67;;;764:1;761;754:12;701:67;407:367;;;;;:::o;779:654::-;892:6;900;908;916;924;977:3;965:9;956:7;952:23;948:33;945:53;;;994:1;991;984:12;945:53;1017:29;1036:9;1017:29;:::i;:::-;1007:39;;1065:38;1099:2;1088:9;1084:18;1065:38;:::i;:::-;1055:48;;1154:2;1143:9;1139:18;1126:32;1181:18;1173:6;1170:30;1167:50;;;1213:1;1210;1203:12;1167:50;1252:70;1314:7;1305:6;1294:9;1290:22;1252:70;:::i;:::-;779:654;;;;-1:-1:-1;1341:8:127;1423:2;1408:18;1395:32;;779:654;-1:-1:-1;;;;779:654:127:o;1645:659::-;1724:6;1732;1740;1793:2;1781:9;1772:7;1768:23;1764:32;1761:52;;;1809:1;1806;1799:12;1761:52;1845:9;1832:23;1822:33;;1906:2;1895:9;1891:18;1878:32;1929:18;1970:2;1962:6;1959:14;1956:34;;;1986:1;1983;1976:12;1956:34;2024:6;2013:9;2009:22;1999:32;;2069:7;2062:4;2058:2;2054:13;2050:27;2040:55;;2091:1;2088;2081:12;2040:55;2131:2;2118:16;2157:2;2149:6;2146:14;2143:34;;;2173:1;2170;2163:12;2143:34;2218:7;2213:2;2204:6;2200:2;2196:15;2192:24;2189:37;2186:57;;;2239:1;2236;2229:12;2186:57;2270:2;2266;2262:11;2252:21;;2292:6;2282:16;;;;;1645:659;;;;;:::o;2309:328::-;2386:6;2394;2402;2455:2;2443:9;2434:7;2430:23;2426:32;2423:52;;;2471:1;2468;2461:12;2423:52;2494:29;2513:9;2494:29;:::i;:::-;2484:39;;2542:38;2576:2;2565:9;2561:18;2542:38;:::i;:::-;2532:48;;2627:2;2616:9;2612:18;2599:32;2589:42;;2309:328;;;;;:::o;2642:490::-;2725:6;2733;2741;2749;2802:3;2790:9;2781:7;2777:23;2773:33;2770:53;;;2819:1;2816;2809:12;2770:53;2842:29;2861:9;2842:29;:::i;:::-;2832:39;;2890:38;2924:2;2913:9;2909:18;2890:38;:::i;:::-;2880:48;;2978:2;2967:9;2963:18;2950:32;3025:5;3018:13;3011:21;3004:5;3001:32;2991:60;;3047:1;3044;3037:12;2991:60;2642:490;;;;-1:-1:-1;3070:5:127;;3122:2;3107:18;3094:32;;-1:-1:-1;;2642:490:127:o;3137:546::-;3247:4;3276:2;3305;3294:9;3287:21;3337:6;3331:13;3380:6;3375:2;3364:9;3360:18;3353:34;3405:1;3415:140;3429:6;3426:1;3423:13;3415:140;;;3524:14;;;3520:23;;3514:30;3490:17;;;3509:2;3486:26;3479:66;3444:10;;3415:140;;;3419:3;3604:1;3599:2;3590:6;3579:9;3575:22;3571:31;3564:42;3674:2;3667;3663:7;3658:2;3650:6;3646:15;3642:29;3631:9;3627:45;3623:54;3615:62;;;;3137:546;;;;:::o;3936:397::-;4022:6;4030;4038;4046;4099:3;4087:9;4078:7;4074:23;4070:33;4067:53;;;4116:1;4113;4106:12;4067:53;4139:29;4158:9;4139:29;:::i;:::-;4129:39;;4187:38;4221:2;4210:9;4206:18;4187:38;:::i;:::-;3936:397;;4177:48;;-1:-1:-1;;;;4272:2:127;4257:18;;4244:32;;4323:2;4308:18;4295:32;;3936:397::o;4338:997::-;4487:6;4495;4503;4511;4519;4527;4535;4588:3;4576:9;4567:7;4563:23;4559:33;4556:53;;;4605:1;4602;4595:12;4556:53;4628:29;4647:9;4628:29;:::i;:::-;4618:39;;4676:38;4710:2;4699:9;4695:18;4676:38;:::i;:::-;4666:48;;4733:38;4767:2;4756:9;4752:18;4733:38;:::i;:::-;4723:48;;4822:2;4811:9;4807:18;4794:32;4845:18;4886:2;4878:6;4875:14;4872:34;;;4902:1;4899;4892:12;4872:34;4941:70;5003:7;4994:6;4983:9;4979:22;4941:70;:::i;:::-;5030:8;;-1:-1:-1;4915:96:127;-1:-1:-1;5118:3:127;5103:19;;5090:33;;-1:-1:-1;5135:16:127;;;5132:36;;;5164:1;5161;5154:12;5132:36;;5203:72;5267:7;5256:8;5245:9;5241:24;5203:72;:::i;:::-;4338:997;;;;-1:-1:-1;4338:997:127;;-1:-1:-1;4338:997:127;;;;5177:98;;-1:-1:-1;;;4338:997:127:o;5340:186::-;5399:6;5452:2;5440:9;5431:7;5427:23;5423:32;5420:52;;;5468:1;5465;5458:12;5420:52;5491:29;5510:9;5491:29;:::i;:::-;5481:39;5340:186;-1:-1:-1;;;5340:186:127:o;5762:380::-;5841:1;5837:12;;;;5884;;;5905:61;;5959:4;5951:6;5947:17;5937:27;;5905:61;6012:2;6004:6;6001:14;5981:18;5978:38;5975:161;;6058:10;6053:3;6049:20;6046:1;6039:31;6093:4;6090:1;6083:15;6121:4;6118:1;6111:15;5975:161;;5762:380;;;:::o;6147:184::-;6217:6;6270:2;6258:9;6249:7;6245:23;6241:32;6238:52;;;6286:1;6283;6276:12;6238:52;-1:-1:-1;6309:16:127;;6147:184;-1:-1:-1;6147:184:127:o;6336:127::-;6397:10;6392:3;6388:20;6385:1;6378:31;6428:4;6425:1;6418:15;6452:4;6449:1;6442:15;6593:544;6694:2;6689:3;6686:11;6683:448;;;6730:1;6755:5;6751:2;6744:17;6800:4;6796:2;6786:19;6870:2;6858:10;6854:19;6851:1;6847:27;6841:4;6837:38;6906:4;6894:10;6891:20;6888:47;;;-1:-1:-1;6929:4:127;6888:47;6984:2;6979:3;6975:12;6972:1;6968:20;6962:4;6958:31;6948:41;;7039:82;7057:2;7050:5;7047:13;7039:82;;;7102:17;;;7083:1;7072:13;7039:82;;6683:448;6593:544;;;:::o;7313:1202::-;7435:18;7430:3;7427:27;7424:53;;;7457:18;;:::i;:::-;7486:93;7575:3;7535:38;7567:4;7561:11;7535:38;:::i;:::-;7529:4;7486:93;:::i;:::-;7605:1;7630:2;7625:3;7622:11;7647:1;7642:615;;;;8301:1;8318:3;8315:93;;;-1:-1:-1;8374:19:127;;;8361:33;8315:93;-1:-1:-1;;7270:1:127;7266:11;;;7262:24;7258:29;7248:40;7294:1;7290:11;;;7245:57;8421:78;;7615:894;;7642:615;6540:1;6533:14;;;6577:4;6564:18;;-1:-1:-1;;7678:17:127;;;7778:9;7800:229;7814:7;7811:1;7808:14;7800:229;;;7903:19;;;7890:33;7875:49;;8010:4;7995:20;;;;7963:1;7951:14;;;;7830:12;7800:229;;;7804:3;8057;8048:7;8045:16;8042:159;;;8181:1;8177:6;8171:3;8165;8162:1;8158:11;8154:21;8150:34;8146:39;8133:9;8128:3;8124:19;8111:33;8107:79;8099:6;8092:95;8042:159;;;8244:1;8238:3;8235:1;8231:11;8227:19;8221:4;8214:33;7615:894;;7313:1202;;;:::o","linkReferences":{}},"methodIdentifiers":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":"67ddb278","afterBurn(address,address,address,uint256[],uint256[])":"fdc27257","afterData()":"c2fb5a64","afterFlashLoan(address,address,bytes32,bytes32)":"60bed5f3","afterMint(address,address,bytes32[],bytes32)":"7a51a4c6","afterSwap(address,address,bool,bytes32)":"53e8079b","beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":"79c8ccf7","beforeBurn(address,address,address,uint256[],uint256[])":"ea9db9d3","beforeData()":"571eed37","beforeFlashLoan(address,address,bytes32)":"505d9033","beforeMint(address,address,bytes32[],bytes32)":"0d4abdb3","beforeSwap(address,address,bool,bytes32)":"feee3735","getLBPair()":"5f9c01b1","isLinked()":"09fa1f90","onHooksSet(bytes32,bytes)":"4e430b5a","pair()":"a8aa1b31","reset()":"d826f88f","setPair(address)":"8187f516"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"LBBaseHooks__InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBBaseHooks__NotLinked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"afterBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"afterData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"fees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feesReceived\",\"type\":\"bytes32\"}],\"name\":\"afterFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"afterMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"beforeBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beforeData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"beforeFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"beforeMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLinked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"onHooksSet\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pair\",\"type\":\"address\"}],\"name\":\"setPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"afterBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"from\":\"The address that transferred the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the transfer\",\"to\":\"The address that received the tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterBurn(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsToBurn\":\"The amounts to burn\",\"from\":\"The address that burned the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the burn\",\"to\":\"The address that received the burned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterFlashLoan(address,address,bytes32,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"fees\":\"The flashloan fees\",\"feesReceived\":\"The fees received\",\"sender\":\"The address that initiated the flash loan\",\"to\":\"The address that received the flash loaned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterMint(address,address,bytes32[],bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsIn\":\"The amounts in\",\"liquidityConfigs\":\"The liquidity configurations\",\"sender\":\"The address that initiated the mint\",\"to\":\"The address that received the minted tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"afterSwap(address,address,bool,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsOut\":\"The amounts out\",\"sender\":\"The address that initiated the swap\",\"swapForY\":\"Whether the swap was for token Y\",\"to\":\"The address that received the swapped tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"from\":\"The address that will transfer the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the transfer\",\"to\":\"The address that will receive the tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeBurn(address,address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsToBurn\":\"The amounts to burn\",\"from\":\"The address that will burn the tokens\",\"ids\":\"The token ids\",\"sender\":\"The address that initiated the burn\",\"to\":\"The address that will receive the burned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeFlashLoan(address,address,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amounts\":\"The amounts\",\"sender\":\"The address that initiated the flash loan\",\"to\":\"The address that will receive the flash loaned tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeMint(address,address,bytes32[],bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsReceived\":\"The amounts received\",\"liquidityConfigs\":\"The liquidity configurations\",\"sender\":\"The address that initiated the mint\",\"to\":\"The address that will receive the minted tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"beforeSwap(address,address,bool,bytes32)\":{\"details\":\"Only callable by the pair\",\"params\":{\"amountsIn\":\"The amounts in\",\"sender\":\"The address that initiated the swap\",\"swapForY\":\"Whether the swap is for token Y\",\"to\":\"The address that will receive the swapped tokens\"},\"returns\":{\"_0\":\"The function selector\"}},\"getLBPair()\":{\"details\":\"Returns the LBPair contract\",\"returns\":{\"_0\":\"The LBPair contract\"}},\"isLinked()\":{\"details\":\"Returns whether the contract is linked to the pair or not\",\"returns\":{\"_0\":\"Whether the contract is linked to the pair or not\"}},\"onHooksSet(bytes32,bytes)\":{\"details\":\"Only callable by the pair\",\"params\":{\"hooksParameters\":\"The hooks parameters\",\"onHooksSetData\":\"The onHooksSet data\"},\"returns\":{\"_0\":\"The function selector\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"afterBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair after a batch transfer\"},\"afterBurn(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair after burning\"},\"afterFlashLoan(address,address,bytes32,bytes32)\":{\"notice\":\"Hook called by the pair after a flash loan\"},\"afterMint(address,address,bytes32[],bytes32)\":{\"notice\":\"Hook called by the pair after minting\"},\"afterSwap(address,address,bool,bytes32)\":{\"notice\":\"Hook called by the pair after a swap\"},\"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair before a batch transfer\"},\"beforeBurn(address,address,address,uint256[],uint256[])\":{\"notice\":\"Hook called by the pair before burning\"},\"beforeFlashLoan(address,address,bytes32)\":{\"notice\":\"Hook called by the pair before a flash loan\"},\"beforeMint(address,address,bytes32[],bytes32)\":{\"notice\":\"Hook called by the pair before minting\"},\"beforeSwap(address,address,bool,bytes32)\":{\"notice\":\"Hook called by the pair before a swap\"},\"onHooksSet(bytes32,bytes)\":{\"notice\":\"Hook called by the pair when the hooks parameters are set\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/MockHooks.sol\":\"MockHooks\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/LBBaseHooks.sol\":{\"keccak256\":\"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1\",\"dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"test/mocks/MockHooks.sol\":{\"keccak256\":\"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0\",\"dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"LBBaseHooks__InvalidCaller"},{"inputs":[],"type":"error","name":"LBBaseHooks__NotLinked"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"afterBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"afterData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"fees","type":"bytes32"},{"internalType":"bytes32","name":"feesReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsOut","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBatchTransferFrom","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsToBurn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"beforeBurn","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beforeData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32","name":"amounts","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeFlashLoan","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"liquidityConfigs","type":"bytes32[]"},{"internalType":"bytes32","name":"amountsReceived","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeMint","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"swapForY","type":"bool"},{"internalType":"bytes32","name":"amountsIn","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLBPair","outputs":[{"internalType":"contract ILBPair","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isLinked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hooksParameters","type":"bytes32"},{"internalType":"bytes","name":"onHooksSetData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onHooksSet","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reset"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPair"}],"devdoc":{"kind":"dev","methods":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amounts":"The amounts","from":"The address that transferred the tokens","ids":"The token ids","sender":"The address that initiated the transfer","to":"The address that received the tokens"},"returns":{"_0":"The function selector"}},"afterBurn(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amountsToBurn":"The amounts to burn","from":"The address that burned the tokens","ids":"The token ids","sender":"The address that initiated the burn","to":"The address that received the burned tokens"},"returns":{"_0":"The function selector"}},"afterFlashLoan(address,address,bytes32,bytes32)":{"details":"Only callable by the pair","params":{"fees":"The flashloan fees","feesReceived":"The fees received","sender":"The address that initiated the flash loan","to":"The address that received the flash loaned tokens"},"returns":{"_0":"The function selector"}},"afterMint(address,address,bytes32[],bytes32)":{"details":"Only callable by the pair","params":{"amountsIn":"The amounts in","liquidityConfigs":"The liquidity configurations","sender":"The address that initiated the mint","to":"The address that received the minted tokens"},"returns":{"_0":"The function selector"}},"afterSwap(address,address,bool,bytes32)":{"details":"Only callable by the pair","params":{"amountsOut":"The amounts out","sender":"The address that initiated the swap","swapForY":"Whether the swap was for token Y","to":"The address that received the swapped tokens"},"returns":{"_0":"The function selector"}},"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amounts":"The amounts","from":"The address that will transfer the tokens","ids":"The token ids","sender":"The address that initiated the transfer","to":"The address that will receive the tokens"},"returns":{"_0":"The function selector"}},"beforeBurn(address,address,address,uint256[],uint256[])":{"details":"Only callable by the pair","params":{"amountsToBurn":"The amounts to burn","from":"The address that will burn the tokens","ids":"The token ids","sender":"The address that initiated the burn","to":"The address that will receive the burned tokens"},"returns":{"_0":"The function selector"}},"beforeFlashLoan(address,address,bytes32)":{"details":"Only callable by the pair","params":{"amounts":"The amounts","sender":"The address that initiated the flash loan","to":"The address that will receive the flash loaned tokens"},"returns":{"_0":"The function selector"}},"beforeMint(address,address,bytes32[],bytes32)":{"details":"Only callable by the pair","params":{"amountsReceived":"The amounts received","liquidityConfigs":"The liquidity configurations","sender":"The address that initiated the mint","to":"The address that will receive the minted tokens"},"returns":{"_0":"The function selector"}},"beforeSwap(address,address,bool,bytes32)":{"details":"Only callable by the pair","params":{"amountsIn":"The amounts in","sender":"The address that initiated the swap","swapForY":"Whether the swap is for token Y","to":"The address that will receive the swapped tokens"},"returns":{"_0":"The function selector"}},"getLBPair()":{"details":"Returns the LBPair contract","returns":{"_0":"The LBPair contract"}},"isLinked()":{"details":"Returns whether the contract is linked to the pair or not","returns":{"_0":"Whether the contract is linked to the pair or not"}},"onHooksSet(bytes32,bytes)":{"details":"Only callable by the pair","params":{"hooksParameters":"The hooks parameters","onHooksSetData":"The onHooksSet data"},"returns":{"_0":"The function selector"}}},"version":1},"userdoc":{"kind":"user","methods":{"afterBatchTransferFrom(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair after a batch transfer"},"afterBurn(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair after burning"},"afterFlashLoan(address,address,bytes32,bytes32)":{"notice":"Hook called by the pair after a flash loan"},"afterMint(address,address,bytes32[],bytes32)":{"notice":"Hook called by the pair after minting"},"afterSwap(address,address,bool,bytes32)":{"notice":"Hook called by the pair after a swap"},"beforeBatchTransferFrom(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair before a batch transfer"},"beforeBurn(address,address,address,uint256[],uint256[])":{"notice":"Hook called by the pair before burning"},"beforeFlashLoan(address,address,bytes32)":{"notice":"Hook called by the pair before a flash loan"},"beforeMint(address,address,bytes32[],bytes32)":{"notice":"Hook called by the pair before minting"},"beforeSwap(address,address,bool,bytes32)":{"notice":"Hook called by the pair before a swap"},"onHooksSet(bytes32,bytes)":{"notice":"Hook called by the pair when the hooks parameters are set"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/MockHooks.sol":"MockHooks"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/LBBaseHooks.sol":{"keccak256":"0xaead104bb499ffa322331b1077a466bb4ef6f74597e43cd1f4227b089f27f778","urls":["bzz-raw://45599fb2c7ca6408a4985d33dc6d513d6bdbfd2333882b32f09d7859010b67e1","dweb:/ipfs/QmSTEgSBRUeTRqPWwDS9ZQrxrjAcSPFtRWkKA3mu9h1qCR"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"test/mocks/MockHooks.sol":{"keccak256":"0x4daf8f583d9393a3131a87bd2affdcc16b518b0e71b4f6e898fa2b1f464752d3","urls":["bzz-raw://5c6ea4ea16f5c587a25f12b4cfdcae46dcf965bcb8bf754034ff7eb9616f6fe0","dweb:/ipfs/QmTDz1S7RmgzCRxUNPLM4qFi1fJc1fsadYAhkCjeWezTrV"],"license":"MIT"}},"version":1},"id":125} \ No newline at end of file diff --git a/abi/OracleHelper.sol/OracleHelper.json b/abi/OracleHelper.sol/OracleHelper.json deleted file mode 100644 index 115e9259..00000000 --- a/abi/OracleHelper.sol/OracleHelper.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"OracleHelper__InvalidOracleId","inputs":[]},{"type":"error","name":"OracleHelper__LookUpTimestampTooOld","inputs":[]},{"type":"error","name":"OracleHelper__NewLengthTooSmall","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b924effe784e6589d465e0766f5842f8ecf94d2493aa29348b4128eb5875ef364736f6c63430008140033","sourceMap":"728:8604:69:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;728:8604:69;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b924effe784e6589d465e0766f5842f8ecf94d2493aa29348b4128eb5875ef364736f6c63430008140033","sourceMap":"728:8604:69:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OracleHelper__InvalidOracleId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleHelper__LookUpTimestampTooOld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleHelper__NewLengthTooSmall\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Oracle Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to manage the oracle The oracle samples are stored in a single bytes32 array. Each sample is encoded as follows: 0 - 16: oracle length (16 bits) 16 - 80: cumulative id (64 bits) 80 - 144: cumulative volatility accumulator (64 bits) 144 - 208: cumulative bin crossed (64 bits) 208 - 216: sample lifetime (8 bits) 216 - 256: sample creation timestamp (40 bits)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/OracleHelper.sol\":\"OracleHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"OracleHelper__InvalidOracleId"},{"inputs":[],"type":"error","name":"OracleHelper__LookUpTimestampTooOld"},{"inputs":[],"type":"error","name":"OracleHelper__NewLengthTooSmall"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/OracleHelper.sol":"OracleHelper"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"}},"version":1},"id":69} \ No newline at end of file diff --git a/abi/OracleHelper.t.sol/OracleHelperTest.json b/abi/OracleHelper.t.sol/OracleHelperTest.json deleted file mode 100644 index 730d5a1f..00000000 --- a/abi/OracleHelper.t.sol/OracleHelperTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_IncreaseOracleLength","inputs":[{"name":"length","type":"uint16","internalType":"uint16"},{"name":"newLength","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SetAndGetSample","inputs":[{"name":"oracleId","type":"uint16","internalType":"uint16"},{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_UpdateDeltaTsGreaterThan2Minutes","inputs":[{"name":"inputs","type":"tuple","internalType":"struct OracleHelperTest.Updateinputs","components":[{"name":"oracleLength","type":"uint16","internalType":"uint16"},{"name":"oracleId","type":"uint16","internalType":"uint16"},{"name":"previousActiveId","type":"uint24","internalType":"uint24"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"previousVolatility","type":"uint24","internalType":"uint24"},{"name":"volatility","type":"uint24","internalType":"uint24"},{"name":"previousBinCrossed","type":"uint24","internalType":"uint24"},{"name":"createdAt","type":"uint40","internalType":"uint40"},{"name":"timestamp","type":"uint40","internalType":"uint40"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_UpdateDeltaTsLowerThan2Minutes","inputs":[{"name":"inputs","type":"tuple","internalType":"struct OracleHelperTest.Updateinputs","components":[{"name":"oracleLength","type":"uint16","internalType":"uint16"},{"name":"oracleId","type":"uint16","internalType":"uint16"},{"name":"previousActiveId","type":"uint24","internalType":"uint24"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"previousVolatility","type":"uint24","internalType":"uint24"},{"name":"volatility","type":"uint24","internalType":"uint24"},{"name":"previousBinCrossed","type":"uint24","internalType":"uint24"},{"name":"createdAt","type":"uint40","internalType":"uint40"},{"name":"timestamp","type":"uint40","internalType":"uint40"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_IncreaseOracleLength","inputs":[{"name":"length","type":"uint16","internalType":"uint16"},{"name":"newLength","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_SetAndGetSample","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BinarySearchCircular","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_BinarySearchSimple","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_GetSampleAtFullyInitialized","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_GetSampleAtNotFullyInitialized","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_BinarySearch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_IncreaseOracleLength","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"OracleHelper__InvalidOracleId","inputs":[]},{"type":"error","name":"OracleHelper__LookUpTimestampTooOld","inputs":[]},{"type":"error","name":"OracleHelper__NewLengthTooSmall","inputs":[]},{"type":"error","name":"SafeCast__Exceeds40Bits","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b50614a158061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063b418666a1161008c578063be0c716911610066578063be0c7169146102a5578063e20c9f71146102b8578063ebece22e146102c057600080fd5b8063b418666a14610272578063b5508aa914610285578063ba414fa61461028d57600080fd5b8063916a17c6116100bd578063916a17c61461025a578063a2dc1b0714610262578063adadc8951461026a57600080fd5b806385226c81146102325780638ce568bc1461024757600080fd5b80633f7286f41161013a57806366d9a9a01161011457806366d9a9a0146102025780636f06b2a914610217578063700009701461021f57600080fd5b80633f7286f4146101df5780634b3fa708146101e75780635f803ec3146101fa57600080fd5b80632ade38801161016b5780632ade3880146101ba5780633d9ab563146101cf5780633e5e3c23146101d757600080fd5b8063170da07b146101875780631ed7831c1461019c575b600080fd5b61019a610195366004613f8a565b6102c8565b005b6101a46108f0565b6040516101b19190614040565b60405180910390f35b6101c2610952565b6040516101b191906140d3565b61019a610a94565b6101a461132f565b6101a461138f565b61019a6101f5366004614193565b6113ef565b61019a611503565b61020a6118ff565b6040516101b191906141bd565b61019a6119e5565b61019a61022d366004614288565b611a63565b61023a611b64565b6040516101b191906142a1565b61019a610255366004614193565b611c34565b61020a611d40565b61019a611e26565b61019a6121b7565b61019a610280366004614303565b61263f565b61023a612763565b610295612833565b60405190151581526020016101b1565b61019a6102b3366004613f8a565b6128ee565b6101a4612da9565b61019a612e09565b6020810151737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629061ffff161580159061030b5750826020015161ffff16836000015161ffff1610155b801561032e575082610100015164ffffffffff168360e0015164ffffffffff1611155b8015610355575060788360e0015184610100015161034c9190614343565b64ffffffffff16115b801561036d5750620fffff8360a0015162ffffff1611155b80156103855750620fffff836080015162ffffff1611155b6040518263ffffffff1660e01b81526004016103a5911515815260200190565b60006040518083038186803b1580156103bd57600080fd5b505afa1580156103d1573d6000803e3d6000fd5b5050505060e08101516040516372eb5f8160e11b815264ffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b5050505060006104bc82600001518360e0015164ffffffffff16846040015162ffffff166104709190614368565b8460e0015164ffffffffff16856080015162ffffff166104909190614368565b8560e0015164ffffffffff168660c0015162ffffff166104b09190614368565b60008760e0015161316d565b60208301519091506104d190601c9083613218565b60006105688360a0015162ffffff16620fffff6070610558876040015161050889602001516000801b61324590919063ffffffff16565b9060007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617613290565b82821b19169190921690911b1790565b6101008401516040516372eb5f8160e11b815264ffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156105c557600080fd5b505af11580156105d9573d6000803e3d6000fd5b5050505060006105f9828560600151601c6132999092919063ffffffff16565b905060008460000151856020015161061191906143aa565b6106209061ffff1660016143cb565b905061064e826106308584613245565b6040518060600160405280602c815260200161469b602c91396133b7565b6001856000015161ffff1611156106b6576106b661067a8660200151601c61341e90919063ffffffff16565b856040518060400160405280600e81526020017f746573745f5570646174653a3a320000000000000000000000000000000000008152506133b7565b6106c1601c8261341e565b935060008560e001518661010001516106da9190614343565b64ffffffffff1690506000866040015162ffffff16876060015162ffffff1611610717578660600151876040015161071291906143de565b61072b565b8660400151876060015161072b91906143de565b9050600082886040015162ffffff166107449190614368565b8860e0015164ffffffffff16896040015162ffffff166107649190614368565b61076e91906143fa565b90506000838960a0015162ffffff166107879190614368565b8960e0015164ffffffffff168a6080015162ffffff166107a79190614368565b6107b191906143fa565b905060006107c48562ffffff8616614368565b8a60e0015164ffffffffff168b60c0015162ffffff166107e49190614368565b6107ee91906143fa565b90506108276107fc8a61344e565b61ffff168b6000015161ffff166040518060600160405280602c81526020016148cd602c913961345a565b6108666108338a613495565b67ffffffffffffffff168467ffffffffffffffff166040518060600160405280602c8152602001614941602c913961345a565b6108a56108728a6134ab565b67ffffffffffffffff168367ffffffffffffffff166040518060600160405280602c8152602001614991602c913961345a565b6108e46108b18a6134c1565b67ffffffffffffffff168267ffffffffffffffff166040518060600160405280602c81526020016147ea602c913961345a565b50505050505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561094857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161092a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610a8b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610a745783829060005260206000200180546109e79061441b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a139061441b565b8015610a605780601f10610a3557610100808354040283529160200191610a60565b820191906000526020600020905b815481529060010190602001808311610a4357829003601f168201915b5050505050815260200190600101906109c8565b505050508152505081526020019060010190610976565b50505050905090565b6000610ab16103e8620fffff607061055883610508876001613245565b9050610ac9610abf826134d7565b601c9060036134e7565b610af28160016040518060400160405280600381526020016203010160e81b81525060016135d0565b6040516372eb5f8160e11b815260646004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610b3f57600080fd5b505af1158015610b53573d6000803e3d6000fd5b50610b689250601c91508390506103e8613299565b9050610b938160016040518060400160405280600381526020016203010160e81b81525060016135d0565b6040516372eb5f8160e11b815260dd6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50610c099250601c91508390506103e8613299565b9050610c348160026040518060400160405280600381526020016203030160e81b81525060026135d0565b610c4a610c40826134d7565b601c9060046134e7565b610c74816002604051806040016040528060048152602001630182008160e11b81525060026135d0565b6040516372eb5f8160e11b815260de6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610cc157600080fd5b505af1158015610cd5573d6000803e3d6000fd5b50610cea9250601c91508390506103e8613299565b9050610d16816002604051806040016040528060048152602001630182008160e11b81525060026135d0565b6040516372eb5f8160e11b81526101566004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610d6457600080fd5b505af1158015610d78573d6000803e3d6000fd5b50610d8d9250601c91508390506103e8613299565b9050610db9816003604051806040016040528060048152602001630182020160e11b81525060036135d0565b610dcf610dc5826134d7565b601c9060056134e7565b610e128160036040518060400160405280600581526020017f030405020300000000000000000000000000000000000000000000000000000081525060036135d0565b6040516372eb5f8160e11b81526101cf6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610e6057600080fd5b505af1158015610e74573d6000803e3d6000fd5b50610e899250601c91508390506103e8613299565b9050610ece8160046040518060400160405280600581526020017f030405050300000000000000000000000000000000000000000000000000000081525060046135d0565b6040516372eb5f8160e11b81526102486004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b50610f459250601c91508390506103e8613299565b9050610f8a8160056040518060400160405280600581526020017f030405050500000000000000000000000000000000000000000000000000000081525060056135d0565b610fa0610f96826134d7565b601c9060076134e7565b610fe38160056040518060400160405280600781526020017f030405050705050000000000000000000000000000000000000000000000000081525060056135d0565b6040516372eb5f8160e11b81526102c16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b5061105a9250601c91508390506103e8613299565b905061109f8160066040518060400160405280600781526020017f030405050707050000000000000000000000000000000000000000000000000081525060066135d0565b6040516372eb5f8160e11b815261033a6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b506111169250601c91508390506103e8613299565b905061115b8160076040518060400160405280600781526020017f030405050707070000000000000000000000000000000000000000000000000081525060076135d0565b6040516372eb5f8160e11b81526103b36004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156111a957600080fd5b505af11580156111bd573d6000803e3d6000fd5b506111d29250601c91508390506103e8613299565b90506112178160016040518060400160405280600781526020017f070405050707070000000000000000000000000000000000000000000000000081525060076135d0565b61122d611223826134d7565b601c9060086134e7565b6112708160016040518060400160405280600881526020017f080405050707070700000000000000000000000000000000000000000000000081525060076135d0565b6040516372eb5f8160e11b815261042c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b506112e79250601c91508390506103e8613299565b905061132c8160026040518060400160405280600881526020017f080805050707070700000000000000000000000000000000000000000000000081525060076135d0565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610948576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161092a575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610948576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161092a575050505050905090565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261ffff80851690841611801590611424575060008461ffff16115b6040518263ffffffff1660e01b8152600401611444911515815260200190565b60006040518083038186803b15801561145c57600080fd5b505afa158015611470573d6000803e3d6000fd5b506114849250601c915060019050846134e7565b604051630618f58760e51b8152632c57574160e21b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156114d757600080fd5b505af11580156114eb573d6000803e3d6000fd5b506114ff9250601c915060019050836134e7565b5050565b6000611518600360016002600360008061316d565b9050600061153060036002600360046000600a61316d565b90506000611547600380600460056000601461316d565b9050611556601c600185613218565b611563601c600284613218565b611570601c600383613218565b600080611581601c60038381613728565b915091506115c582866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a310000000000008152506133b7565b61160581866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a320000000000008152506133b7565b611614601c6003600181613728565b809250819350505061165c82866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a330000000000008152506133b7565b61169c81856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a340000000000008152506133b7565b6116ab601c6003600981613728565b80925081935050506116f382866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a350000000000008152506133b7565b61173381856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a360000000000008152506133b7565b611742601c6003600a81613728565b809250819350505061178a82856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a370000000000008152506133b7565b6117ca81856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a380000000000008152506133b7565b6117d9601c6003600b81613728565b809250819350505061182182856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a390000000000008152506133b7565b61186181846040518060400160405280601b81526020017f746573745f42696e61727953656172636853696d706c653a3a313000000000008152506133b7565b611870601c6003601481613728565b80925081935050506118b882846040518060400160405280601b81526020017f746573745f42696e61727953656172636853696d706c653a3a313100000000008152506133b7565b6118f881846040518060400160405280601b81526020017f746573745f42696e61727953656172636853696d706c653a3a313200000000008152506133b7565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610a8b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156119cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161198f5790505b50505050508152505081526020019060010190611923565b604051630618f58760e51b815263944e113960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b50611a619250601c915060009050600a6134e7565b565b604051630618f58760e51b815263944e113960e01b6004820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611ab957600080fd5b505af1158015611acd573d6000803e3d6000fd5b50611ae09250601c915083905084613218565b604051630618f58760e51b815263944e113960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b50505050611b5f81601c61341e90919063ffffffff16565b505050565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610a8b578382906000526020600020018054611ba79061441b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd39061441b565b8015611c205780601f10611bf557610100808354040283529160200191611c20565b820191906000526020600020905b815481529060010190602001808311611c0357829003601f168201915b505050505081526020019060010190611b88565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261ffff841615801590611c6857508361ffff168361ffff16115b8015611c79575060648361ffff1611155b6040518263ffffffff1660e01b8152600401611c99911515815260200190565b60006040518083038186803b158015611cb157600080fd5b505afa158015611cc5573d6000803e3d6000fd5b5060019250611cda9150601c905082856134e7565b611ce6601c82846134e7565b611b5f611cfc611cf7601c8461341e565b61344e565b61ffff168361ffff166040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3181525061345a565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610a8b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611e0e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611dd05790505b50505050508152505081526020019060010190611d64565b6000611e3c60036001600260036000601e61316d565b90506000611e5460036002600360046005600a61316d565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611eb457600080fd5b505af1158015611ec8573d6000803e3d6000fd5b50611edf9250601c91506000905060146003613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f3f57600080fd5b505af1158015611f53573d6000803e3d6000fd5b50611f6a9250601c91506001905060146000613728565b50611f7a9050601c600184613218565b611f87601c600283613218565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b506120109250601c91506000905060146003613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561207057600080fd5b505af1158015612084573d6000803e3d6000fd5b5061209b9250601c91506001905060146000613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156120fb57600080fd5b505af115801561210f573d6000803e3d6000fd5b506121269250601c91506001905060096002613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561218657600080fd5b505af115801561219a573d6000803e3d6000fd5b506121b19250601c915060019050601f6002613728565b50505050565b60006121cd600360286032603c6003601e61316d565b905060006121e560036014601e60286005600a61316d565b905060006121fd6003601e602860326005601461316d565b905061220c601c600185613218565b612219601c600284613218565b612226601c600383613218565b6000808080612239601c6001600f61387a565b935093509350935061226c8464ffffffffff16600f6040518060600160405280602381526020016149bd6023913961345a565b61229a8367ffffffffffffffff1660146040518060600160405280602381526020016146546023913961345a565b6122c88267ffffffffffffffff16601e6040518060600160405280602381526020016146316023913961345a565b6122f68167ffffffffffffffff1660286040518060600160405280602381526020016147326023913961345a565b612304601c6001601461387a565b60408051606081019091526023808252949850929650909450925061233c9164ffffffffff8716916014916148aa602083013961345a565b61236a8367ffffffffffffffff1660196040518060600160405280602381526020016147c76023913961345a565b6123988267ffffffffffffffff1660236040518060600160405280602381526020016148166023913961345a565b6123c68167ffffffffffffffff16602d6040518060600160405280602381526020016146eb6023913961345a565b6123d4601c6001601961387a565b60408051606081019091526023808252949850929650909450925061240c9164ffffffffff871691601991614887602083013961345a565b61243a8367ffffffffffffffff16601e6040518060600160405280602481526020016146776024913961345a565b6124688267ffffffffffffffff1660286040518060600160405280602481526020016147a36024913961345a565b6124968167ffffffffffffffff16603260405180606001604052806024815260200161491d6024913961345a565b6124a4601c6001601e61387a565b6040805160608101909152602480825294985092965090945092506124dc9164ffffffffff871691601e91614863602083013961345a565b61250a8367ffffffffffffffff1660246040518060600160405280602481526020016145bf6024913961345a565b6125388267ffffffffffffffff16602e60405180606001604052806024815260200161496d6024913961345a565b6125668167ffffffffffffffff16603860405180606001604052806024815260200161477f6024913961345a565b612574601c6001602861387a565b6040805160608101909152602480825294985092965090945092506125ac9164ffffffffff8716916021916146c7602083013961345a565b6125da8367ffffffffffffffff16602860405180606001604052806024815260200161470e6024913961345a565b6126088267ffffffffffffffff1660326040518060600160405280602481526020016148f96024913961345a565b6126368167ffffffffffffffff16603c60405180606001604052806024815260200161460d6024913961345a565b50505050505050565b604051632631f2b160e11b815261ffff831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561268f57600080fd5b505afa1580156126a3573d6000803e3d6000fd5b506126b69250601c915084905083613218565b6127006126c4601c8461341e565b826040518060400160405280601b81526020017f7465737446757a7a5f536574416e6447657453616d706c653a3a3100000000008152506133b7565b6114ff601c612710600185614455565b61ffff1661ffff811061272557612725614470565b0154826040518060400160405280601b81526020017f7465737446757a7a5f536574416e6447657453616d706c653a3a3200000000008152506133b7565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610a8b5783829060005260206000200180546127a69061441b565b80601f01602080910402602001604051908101604052809291908181526020018280546127d29061441b565b801561281f5780601f106127f45761010080835404028352916020019161281f565b820191906000526020600020905b81548152906001019060200180831161280257829003601f168201915b505050505081526020019060010190612787565b60075460009060ff161561284b575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e79190614486565b1415905090565b612906816020015161ffff16600161ffff801661399d565b61ffff90811660208301819052825161292392908116919061399d565b61ffff16815260e081015161010082015161297d9164ffffffffff908116916078911611612952576000612964565b60788361010001516129649190614343565b64ffffffffff1683610100015164ffffffffff1661399d565b64ffffffffff1660e082015260a08101516129a29062ffffff166001620fffff61399d565b62ffffff90811660a083015260808201516129c391166001620fffff61399d565b62ffffff16608082015260e08101516040516372eb5f8160e11b815264ffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015612a2657600080fd5b505af1158015612a3a573d6000803e3d6000fd5b505050506000612a6882600001518360e0015164ffffffffff16846040015162ffffff166104709190614368565b6020830151909150612a7d90601c9083613218565b6000612ab48360a0015162ffffff16620fffff6070610558876040015161050889602001516000801b61324590919063ffffffff16565b6101008401516040516372eb5f8160e11b815264ffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b505050506000612b45828560600151601c6132999092919063ffffffff16565b9050612b6a81836040518060600160405280602a8152602001614839602a91396133b7565b6020840151612b7b90601c9061341e565b925060008460e00151856101000151612b949190614343565b64ffffffffff1690506000856040015162ffffff16866060015162ffffff1611612bd15785606001518660400151612bcc91906143de565b612be5565b85604001518660600151612be591906143de565b9050600082876040015162ffffff16612bfe9190614368565b8760e0015164ffffffffff16886040015162ffffff16612c1e9190614368565b612c2891906143fa565b90506000838860a0015162ffffff16612c419190614368565b8860e0015164ffffffffff16896080015162ffffff16612c619190614368565b612c6b91906143fa565b90506000612c7e8562ffffff8616614368565b8960e0015164ffffffffff168a60c0015162ffffff16612c9e9190614368565b612ca891906143fa565b9050612ce1612cb68961344e565b61ffff168a6000015161ffff166040518060600160405280602a815260200161456b602a913961345a565b612d20612ced89613495565b67ffffffffffffffff168467ffffffffffffffff166040518060600160405280602a81526020016145e3602a913961345a565b612d5f612d2c896134ab565b67ffffffffffffffff168367ffffffffffffffff166040518060600160405280602a8152602001614595602a913961345a565b612d9e612d6b896134c1565b67ffffffffffffffff168267ffffffffffffffff166040518060600160405280602a8152602001614755602a913961345a565b505050505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015610948576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161092a575050505050905090565b6000612e1e600360016002600380601e61316d565b90506000612e3660036002600360046009600a61316d565b90506000612e4d600380600460056009601461316d565b9050612e5c601c600185613218565b612e69601c600284613218565b612e76601c600383613218565b600080612e89601c600160136003613728565b91509150612ecd82856040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a31000000008152506133b7565b612f0d81856040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a32000000008152506133b7565b612f1d601c600160186003613728565b8092508193505050612f6582856040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a33000000008152506133b7565b612fa581846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a34000000008152506133b7565b612fb5601c6001601d6003613728565b8092508193505050612ffd82846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a35000000008152506133b7565b61303d81846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a36000000008152506133b7565b61304d601c6001601e6003613728565b809250819350505061309582846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a37000000008152506133b7565b6130d581866040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a38000000008152506133b7565b6130e5601c600160216003613728565b809250819350505061312d82866040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a39000000008152506133b7565b6118f881866040518060400160405280601d81526020017f746573745f42696e61727953656172636843697263756c61723a3a31300000008152506133b7565b60d81b7fffffffffff0000000000000000000000000000000000000000000000000000001660d09190911b7aff00000000000000000000000000000000000000000000000000001660909290921b79ffffffffffffffff0000000000000000000000000000000000001660509390931b71ffffffffffffffff000000000000000000001660109490941b69ffffffffffffffff00001661ffff95909516949094179290921717171790565b81613222816139eb565b818461ffff6000198601811690811061323d5761323d614470565b015550505050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b16175b90505b92915050565b6000806132a5846134d7565b90508061ffff166000036132bc57839150506133b0565b60006132c8868361341e565b905060006132d582613a10565b905060006132e283613a1c565b6132ef9060ff168361449f565b90508064ffffffffff1661330242613a2b565b64ffffffffff1611156133a85760008060006133478464ffffffffff16420361332a8c613a58565b6133338d613a64565b61333d8e8e613a75565b8a93929190613aa8565b92509250925060006133588761344e565b905064ffffffffff8616420360788111156133885750968790066001019642955060006133858c8a613245565b9b505b61339682868686858c61316d565b975050505050506133a8888585613218565b869450505050505b9392505050565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed0906133f2908690869086906004016144bd565b60006040518083038186803b15801561340a57600080fd5b505afa158015612636573d6000803e3d6000fd5b60008161342a816139eb565b8361ffff6000198501811690811061344457613444614470565b0154949350505050565b600061ffff8216613293565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906133f2908690869086906004016144bd565b60006132938260101c67ffffffffffffffff1690565b60006132938260501c67ffffffffffffffff1690565b60006132938260901c67ffffffffffffffff1690565b60006132938260d81c61ffff1690565b60006134f3848461341e565b905060006135008261344e565b90508261ffff168161ffff161061352a57604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff161461355b5761ffff8216156135545761354f868361341e565b61355d565b600061355d565b825b9050600061356a8261344e565b61ffff169050808661ffff16116135815780613587565b8561ffff165b905061ffff83165b8561ffff168110156135b95781888261ffff81106135af576135af614470565b015560010161358f565b50612636878761ffff868116881890891617613218565b6136206135dc856134d7565b61ffff168461ffff166040518060400160405280601e81526020017f5f76657269667954696d657374616d7073496473416e6453697a653a3a31000081525061345a565b60005b82518161ffff1610156136cf5760006136486136408360016144e5565b601c9061341e565b90506136bc6136568261344e565b61ffff16858461ffff168151811061367057613670614470565b602001015160f81c60f81b60f81c60ff166040518060400160405280601e81526020017f5f76657269667954696d657374616d7073496473416e6453697a653a3a32000081525061345a565b50806136c781614500565b915050613623565b5060006136dd601c85613b0d565b9150506118f88161ffff168361ffff166040518060400160405280601e81526020017f5f76657269667954696d657374616d7073496473416e6453697a653a3a33000081525061345a565b6000808080613738600186614455565b61ffff16905060008060008961ffff1690505b8385116137f6576000600161376086886143cb565b901c9050888183089a508b61ffff808d1690811061378057613780614470565b0154935061378d84613b66565b92508964ffffffffff168364ffffffffff1611156137b7576137b0600182614521565b94506137f0565b8964ffffffffff168364ffffffffff1610156137df576137d88160016143cb565b95506137f0565b838497509750505050505050613871565b5061374b565b8164ffffffffff168964ffffffffff161015613847578961ffff1660000361381c578799505b8a61ffff6000198c01811690811061383657613836614470565b015483965096505050505050613871565b8760018b089950828b61ffff808d1690811061386557613865614470565b01549650965050505050505b94509492505050565b60008060008060008061388d8989613b0d565b909250905064ffffffffff87166138c48a6138a8848c6143aa565b61ffff1661ffff81106138bd576138bd614470565b0154613b66565b64ffffffffff1611156138ea57604051631c4e7f9560e21b815260040160405180910390fd5b6138f382613b66565b95508664ffffffffff168664ffffffffff1611613935578561391483613495565b61391d846134ab565b613926856134c1565b95509550955095505050613994565b8695506000806139478b8b8b86613728565b9150915060008961395783613b66565b6139619190614343565b9050600061396e84613b66565b613978908c614343565b905061398684848484613b87565b919a50985096505050505050505b93509350935093565b60006139aa848484613ceb565b90506133b06040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082613eb3565b8061ffff1660000361132c5760405163944e113960e01b815260040160405180910390fd5b600060d882901c613293565b60006132938260d01c60ff1690565b8064ffffffffff81168114613a53576040516350dbfc8760e11b815260040160405180910390fd5b919050565b600060e882901c613293565b60006132938260701c620fffff1690565b600080613a8184613a58565b90508062ffffff168362ffffff1611613a9c57828103613aa0565b8083035b949350505050565b64ffffffffff841662ffffff848116820291848216810291841602613acc88613495565b613ad690846143fa565b9250613ae1886134ab565b613aeb90836143fa565b9150613af6886134c1565b613b0090826143fa565b9050955095509592505050565b600080613b1a848461341e565b9150613b258261344e565b90508061ffff168361ffff1614613b5f57613b43611cf7858361341e565b90508061ffff168361ffff1611613b5a5780613b5c565b825b90505b9250929050565b6000613b7182613a1c565b60ff16613b7d83613a10565b613293919061449f565b600080600080613b9688613495565b67ffffffffffffffff1690506000613bad896134ab565b67ffffffffffffffff1690506000613bc48a6134c1565b67ffffffffffffffff1690508664ffffffffff16600003613beb5791945092509050613ce1565b6000613bf68a613495565b67ffffffffffffffff1690506000613c0d8b6134ab565b67ffffffffffffffff1690506000613c248c6134c1565b67ffffffffffffffff1690508a64ffffffffff16600003613c4f5791975095509350613ce192505050565b6000613c6564ffffffffff808d16908e166143cb565b9050808b64ffffffffff1685028d64ffffffffff1689020181613c8a57613c8a614394565b049950808b64ffffffffff1684028d64ffffffffff1688020181613cb057613cb0614394565b049850808b64ffffffffff1683028d64ffffffffff1687020181613cd657613cd6614394565b049750505050505050505b9450945094915050565b600081831115613d675760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b828410158015613d775750818411155b15613d835750826133b0565b6000613d8f8484614521565b613d9a9060016143cb565b905060038511158015613dac57508481115b15613dc357613dbb85856143cb565b9150506133b0565b613dd06003600019614521565b8510158015613de95750613de685600019614521565b81115b15613e0457613dfa85600019614521565b613dbb9084614521565b82851115613e5a576000613e188487614521565b90506000613e268383614534565b905080600003613e3b578493505050506133b0565b6001613e4782886143cb565b613e519190614521565b93505050613eab565b83851015613eab576000613e6e8686614521565b90506000613e7c8383614534565b905080600003613e91578593505050506133b0565b613e9b8186614521565b613ea69060016143cb565b935050505b509392505050565b6114ff8282604051602401613ec9929190614548565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905261132c8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b604051610120810167ffffffffffffffff81118282101715613f4a57634e487b7160e01b600052604160045260246000fd5b60405290565b803561ffff81168114613a5357600080fd5b803562ffffff81168114613a5357600080fd5b803564ffffffffff81168114613a5357600080fd5b60006101208284031215613f9d57600080fd5b613fa5613f18565b613fae83613f50565b8152613fbc60208401613f50565b6020820152613fcd60408401613f62565b6040820152613fde60608401613f62565b6060820152613fef60808401613f62565b608082015261400060a08401613f62565b60a082015261401160c08401613f62565b60c082015261402260e08401613f75565b60e0820152610100614035818501613f75565b908201529392505050565b6020808252825182820181905260009190848201906040850190845b818110156140815783516001600160a01b03168352928401929184019160010161405c565b50909695505050505050565b6000815180845260005b818110156140b357602081850181015186830182015201614097565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561418357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561416d57605f1989850301835261415b84865161408d565b948e01949350918d019160010161413f565b505050978a0197945050918801916001016140fa565b50919a9950505050505050505050565b600080604083850312156141a657600080fd5b6141af83613f50565b9150613b5c60208401613f50565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561427957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156142645783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190614222565b50978a019795505050918701916001016141e5565b50919998505050505050505050565b60006020828403121561429a57600080fd5b5035919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156142f657603f198886030184526142e485835161408d565b945092850192908501906001016142c8565b5092979650505050505050565b6000806040838503121561431657600080fd5b61431f83613f50565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156143615761436161432d565b5092915050565b67ffffffffffffffff81811683821602808216919082811461438c5761438c61432d565b505092915050565b634e487b7160e01b600052601260045260246000fd5b600061ffff808416806143bf576143bf614394565b92169190910692915050565b808201808211156132935761329361432d565b62ffffff8281168282160390808211156143615761436161432d565b67ffffffffffffffff8181168382160190808211156143615761436161432d565b600181811c9082168061442f57607f821691505b60208210810361444f57634e487b7160e01b600052602260045260246000fd5b50919050565b61ffff8281168282160390808211156143615761436161432d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561449857600080fd5b5051919050565b64ffffffffff8181168382160190808211156143615761436161432d565b8381528260208201526060604082015260006144dc606083018461408d565b95945050505050565b61ffff8181168382160190808211156143615761436161432d565b600061ffff8083168181036145175761451761432d565b6001019392505050565b818103818111156132935761329361432d565b60008261454357614543614394565b500690565b60408152600061455b604083018561408d565b9050826020830152939250505056fe7465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a327465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a34746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31347465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a33746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3230746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a33746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a32746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31307465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a31746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3137746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a38746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3138746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a347465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a35746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3136746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3131746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a367465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a35746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a377465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a31746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3133746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a39746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a357465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a32746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3139746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31327465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a33746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31357465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a34746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31a264697066735822122079b39098fe5cb2be76507ee195839fde7805b35b4f229cc1e0636260bfdeb5e064736f6c63430008140033","sourceMap":"184:17340:107:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;184:17340:107;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063b418666a1161008c578063be0c716911610066578063be0c7169146102a5578063e20c9f71146102b8578063ebece22e146102c057600080fd5b8063b418666a14610272578063b5508aa914610285578063ba414fa61461028d57600080fd5b8063916a17c6116100bd578063916a17c61461025a578063a2dc1b0714610262578063adadc8951461026a57600080fd5b806385226c81146102325780638ce568bc1461024757600080fd5b80633f7286f41161013a57806366d9a9a01161011457806366d9a9a0146102025780636f06b2a914610217578063700009701461021f57600080fd5b80633f7286f4146101df5780634b3fa708146101e75780635f803ec3146101fa57600080fd5b80632ade38801161016b5780632ade3880146101ba5780633d9ab563146101cf5780633e5e3c23146101d757600080fd5b8063170da07b146101875780631ed7831c1461019c575b600080fd5b61019a610195366004613f8a565b6102c8565b005b6101a46108f0565b6040516101b19190614040565b60405180910390f35b6101c2610952565b6040516101b191906140d3565b61019a610a94565b6101a461132f565b6101a461138f565b61019a6101f5366004614193565b6113ef565b61019a611503565b61020a6118ff565b6040516101b191906141bd565b61019a6119e5565b61019a61022d366004614288565b611a63565b61023a611b64565b6040516101b191906142a1565b61019a610255366004614193565b611c34565b61020a611d40565b61019a611e26565b61019a6121b7565b61019a610280366004614303565b61263f565b61023a612763565b610295612833565b60405190151581526020016101b1565b61019a6102b3366004613f8a565b6128ee565b6101a4612da9565b61019a612e09565b6020810151737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629061ffff161580159061030b5750826020015161ffff16836000015161ffff1610155b801561032e575082610100015164ffffffffff168360e0015164ffffffffff1611155b8015610355575060788360e0015184610100015161034c9190614343565b64ffffffffff16115b801561036d5750620fffff8360a0015162ffffff1611155b80156103855750620fffff836080015162ffffff1611155b6040518263ffffffff1660e01b81526004016103a5911515815260200190565b60006040518083038186803b1580156103bd57600080fd5b505afa1580156103d1573d6000803e3d6000fd5b5050505060e08101516040516372eb5f8160e11b815264ffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b5050505060006104bc82600001518360e0015164ffffffffff16846040015162ffffff166104709190614368565b8460e0015164ffffffffff16856080015162ffffff166104909190614368565b8560e0015164ffffffffff168660c0015162ffffff166104b09190614368565b60008760e0015161316d565b60208301519091506104d190601c9083613218565b60006105688360a0015162ffffff16620fffff6070610558876040015161050889602001516000801b61324590919063ffffffff16565b9060007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617613290565b82821b19169190921690911b1790565b6101008401516040516372eb5f8160e11b815264ffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156105c557600080fd5b505af11580156105d9573d6000803e3d6000fd5b5050505060006105f9828560600151601c6132999092919063ffffffff16565b905060008460000151856020015161061191906143aa565b6106209061ffff1660016143cb565b905061064e826106308584613245565b6040518060600160405280602c815260200161469b602c91396133b7565b6001856000015161ffff1611156106b6576106b661067a8660200151601c61341e90919063ffffffff16565b856040518060400160405280600e81526020017f746573745f5570646174653a3a320000000000000000000000000000000000008152506133b7565b6106c1601c8261341e565b935060008560e001518661010001516106da9190614343565b64ffffffffff1690506000866040015162ffffff16876060015162ffffff1611610717578660600151876040015161071291906143de565b61072b565b8660400151876060015161072b91906143de565b9050600082886040015162ffffff166107449190614368565b8860e0015164ffffffffff16896040015162ffffff166107649190614368565b61076e91906143fa565b90506000838960a0015162ffffff166107879190614368565b8960e0015164ffffffffff168a6080015162ffffff166107a79190614368565b6107b191906143fa565b905060006107c48562ffffff8616614368565b8a60e0015164ffffffffff168b60c0015162ffffff166107e49190614368565b6107ee91906143fa565b90506108276107fc8a61344e565b61ffff168b6000015161ffff166040518060600160405280602c81526020016148cd602c913961345a565b6108666108338a613495565b67ffffffffffffffff168467ffffffffffffffff166040518060600160405280602c8152602001614941602c913961345a565b6108a56108728a6134ab565b67ffffffffffffffff168367ffffffffffffffff166040518060600160405280602c8152602001614991602c913961345a565b6108e46108b18a6134c1565b67ffffffffffffffff168267ffffffffffffffff166040518060600160405280602c81526020016147ea602c913961345a565b50505050505050505050565b6060601480548060200260200160405190810160405280929190818152602001828054801561094857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161092a575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610a8b57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610a745783829060005260206000200180546109e79061441b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a139061441b565b8015610a605780601f10610a3557610100808354040283529160200191610a60565b820191906000526020600020905b815481529060010190602001808311610a4357829003601f168201915b5050505050815260200190600101906109c8565b505050508152505081526020019060010190610976565b50505050905090565b6000610ab16103e8620fffff607061055883610508876001613245565b9050610ac9610abf826134d7565b601c9060036134e7565b610af28160016040518060400160405280600381526020016203010160e81b81525060016135d0565b6040516372eb5f8160e11b815260646004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610b3f57600080fd5b505af1158015610b53573d6000803e3d6000fd5b50610b689250601c91508390506103e8613299565b9050610b938160016040518060400160405280600381526020016203010160e81b81525060016135d0565b6040516372eb5f8160e11b815260dd6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50610c099250601c91508390506103e8613299565b9050610c348160026040518060400160405280600381526020016203030160e81b81525060026135d0565b610c4a610c40826134d7565b601c9060046134e7565b610c74816002604051806040016040528060048152602001630182008160e11b81525060026135d0565b6040516372eb5f8160e11b815260de6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610cc157600080fd5b505af1158015610cd5573d6000803e3d6000fd5b50610cea9250601c91508390506103e8613299565b9050610d16816002604051806040016040528060048152602001630182008160e11b81525060026135d0565b6040516372eb5f8160e11b81526101566004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610d6457600080fd5b505af1158015610d78573d6000803e3d6000fd5b50610d8d9250601c91508390506103e8613299565b9050610db9816003604051806040016040528060048152602001630182020160e11b81525060036135d0565b610dcf610dc5826134d7565b601c9060056134e7565b610e128160036040518060400160405280600581526020017f030405020300000000000000000000000000000000000000000000000000000081525060036135d0565b6040516372eb5f8160e11b81526101cf6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610e6057600080fd5b505af1158015610e74573d6000803e3d6000fd5b50610e899250601c91508390506103e8613299565b9050610ece8160046040518060400160405280600581526020017f030405050300000000000000000000000000000000000000000000000000000081525060046135d0565b6040516372eb5f8160e11b81526102486004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b50610f459250601c91508390506103e8613299565b9050610f8a8160056040518060400160405280600581526020017f030405050500000000000000000000000000000000000000000000000000000081525060056135d0565b610fa0610f96826134d7565b601c9060076134e7565b610fe38160056040518060400160405280600781526020017f030405050705050000000000000000000000000000000000000000000000000081525060056135d0565b6040516372eb5f8160e11b81526102c16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b5061105a9250601c91508390506103e8613299565b905061109f8160066040518060400160405280600781526020017f030405050707050000000000000000000000000000000000000000000000000081525060066135d0565b6040516372eb5f8160e11b815261033a6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b506111169250601c91508390506103e8613299565b905061115b8160076040518060400160405280600781526020017f030405050707070000000000000000000000000000000000000000000000000081525060076135d0565b6040516372eb5f8160e11b81526103b36004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156111a957600080fd5b505af11580156111bd573d6000803e3d6000fd5b506111d29250601c91508390506103e8613299565b90506112178160016040518060400160405280600781526020017f070405050707070000000000000000000000000000000000000000000000000081525060076135d0565b61122d611223826134d7565b601c9060086134e7565b6112708160016040518060400160405280600881526020017f080405050707070700000000000000000000000000000000000000000000000081525060076135d0565b6040516372eb5f8160e11b815261042c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b506112e79250601c91508390506103e8613299565b905061132c8160026040518060400160405280600881526020017f080805050707070700000000000000000000000000000000000000000000000081525060076135d0565b50565b60606016805480602002602001604051908101604052809291908181526020018280548015610948576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161092a575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610948576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161092a575050505050905090565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261ffff80851690841611801590611424575060008461ffff16115b6040518263ffffffff1660e01b8152600401611444911515815260200190565b60006040518083038186803b15801561145c57600080fd5b505afa158015611470573d6000803e3d6000fd5b506114849250601c915060019050846134e7565b604051630618f58760e51b8152632c57574160e21b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156114d757600080fd5b505af11580156114eb573d6000803e3d6000fd5b506114ff9250601c915060019050836134e7565b5050565b6000611518600360016002600360008061316d565b9050600061153060036002600360046000600a61316d565b90506000611547600380600460056000601461316d565b9050611556601c600185613218565b611563601c600284613218565b611570601c600383613218565b600080611581601c60038381613728565b915091506115c582866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a310000000000008152506133b7565b61160581866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a320000000000008152506133b7565b611614601c6003600181613728565b809250819350505061165c82866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a330000000000008152506133b7565b61169c81856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a340000000000008152506133b7565b6116ab601c6003600981613728565b80925081935050506116f382866040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a350000000000008152506133b7565b61173381856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a360000000000008152506133b7565b611742601c6003600a81613728565b809250819350505061178a82856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a370000000000008152506133b7565b6117ca81856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a380000000000008152506133b7565b6117d9601c6003600b81613728565b809250819350505061182182856040518060400160405280601a81526020017f746573745f42696e61727953656172636853696d706c653a3a390000000000008152506133b7565b61186181846040518060400160405280601b81526020017f746573745f42696e61727953656172636853696d706c653a3a313000000000008152506133b7565b611870601c6003601481613728565b80925081935050506118b882846040518060400160405280601b81526020017f746573745f42696e61727953656172636853696d706c653a3a313100000000008152506133b7565b6118f881846040518060400160405280601b81526020017f746573745f42696e61727953656172636853696d706c653a3a313200000000008152506133b7565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610a8b5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156119cd57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161198f5790505b50505050508152505081526020019060010190611923565b604051630618f58760e51b815263944e113960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b50611a619250601c915060009050600a6134e7565b565b604051630618f58760e51b815263944e113960e01b6004820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611ab957600080fd5b505af1158015611acd573d6000803e3d6000fd5b50611ae09250601c915083905084613218565b604051630618f58760e51b815263944e113960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015611b3357600080fd5b505af1158015611b47573d6000803e3d6000fd5b50505050611b5f81601c61341e90919063ffffffff16565b505050565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610a8b578382906000526020600020018054611ba79061441b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd39061441b565b8015611c205780601f10611bf557610100808354040283529160200191611c20565b820191906000526020600020905b815481529060010190602001808311611c0357829003601f168201915b505050505081526020019060010190611b88565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56261ffff841615801590611c6857508361ffff168361ffff16115b8015611c79575060648361ffff1611155b6040518263ffffffff1660e01b8152600401611c99911515815260200190565b60006040518083038186803b158015611cb157600080fd5b505afa158015611cc5573d6000803e3d6000fd5b5060019250611cda9150601c905082856134e7565b611ce6601c82846134e7565b611b5f611cfc611cf7601c8461341e565b61344e565b61ffff168361ffff166040518060400160405280602081526020017f7465737446757a7a5f496e6372656173654f7261636c654c656e6774683a3a3181525061345a565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610a8b5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611e0e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611dd05790505b50505050508152505081526020019060010190611d64565b6000611e3c60036001600260036000601e61316d565b90506000611e5460036002600360046005600a61316d565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611eb457600080fd5b505af1158015611ec8573d6000803e3d6000fd5b50611edf9250601c91506000905060146003613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f3f57600080fd5b505af1158015611f53573d6000803e3d6000fd5b50611f6a9250601c91506001905060146000613728565b50611f7a9050601c600184613218565b611f87601c600283613218565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b506120109250601c91506000905060146003613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561207057600080fd5b505af1158015612084573d6000803e3d6000fd5b5061209b9250601c91506001905060146000613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156120fb57600080fd5b505af115801561210f573d6000803e3d6000fd5b506121269250601c91506001905060096002613728565b50507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561218657600080fd5b505af115801561219a573d6000803e3d6000fd5b506121b19250601c915060019050601f6002613728565b50505050565b60006121cd600360286032603c6003601e61316d565b905060006121e560036014601e60286005600a61316d565b905060006121fd6003601e602860326005601461316d565b905061220c601c600185613218565b612219601c600284613218565b612226601c600383613218565b6000808080612239601c6001600f61387a565b935093509350935061226c8464ffffffffff16600f6040518060600160405280602381526020016149bd6023913961345a565b61229a8367ffffffffffffffff1660146040518060600160405280602381526020016146546023913961345a565b6122c88267ffffffffffffffff16601e6040518060600160405280602381526020016146316023913961345a565b6122f68167ffffffffffffffff1660286040518060600160405280602381526020016147326023913961345a565b612304601c6001601461387a565b60408051606081019091526023808252949850929650909450925061233c9164ffffffffff8716916014916148aa602083013961345a565b61236a8367ffffffffffffffff1660196040518060600160405280602381526020016147c76023913961345a565b6123988267ffffffffffffffff1660236040518060600160405280602381526020016148166023913961345a565b6123c68167ffffffffffffffff16602d6040518060600160405280602381526020016146eb6023913961345a565b6123d4601c6001601961387a565b60408051606081019091526023808252949850929650909450925061240c9164ffffffffff871691601991614887602083013961345a565b61243a8367ffffffffffffffff16601e6040518060600160405280602481526020016146776024913961345a565b6124688267ffffffffffffffff1660286040518060600160405280602481526020016147a36024913961345a565b6124968167ffffffffffffffff16603260405180606001604052806024815260200161491d6024913961345a565b6124a4601c6001601e61387a565b6040805160608101909152602480825294985092965090945092506124dc9164ffffffffff871691601e91614863602083013961345a565b61250a8367ffffffffffffffff1660246040518060600160405280602481526020016145bf6024913961345a565b6125388267ffffffffffffffff16602e60405180606001604052806024815260200161496d6024913961345a565b6125668167ffffffffffffffff16603860405180606001604052806024815260200161477f6024913961345a565b612574601c6001602861387a565b6040805160608101909152602480825294985092965090945092506125ac9164ffffffffff8716916021916146c7602083013961345a565b6125da8367ffffffffffffffff16602860405180606001604052806024815260200161470e6024913961345a565b6126088267ffffffffffffffff1660326040518060600160405280602481526020016148f96024913961345a565b6126368167ffffffffffffffff16603c60405180606001604052806024815260200161460d6024913961345a565b50505050505050565b604051632631f2b160e11b815261ffff831615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561268f57600080fd5b505afa1580156126a3573d6000803e3d6000fd5b506126b69250601c915084905083613218565b6127006126c4601c8461341e565b826040518060400160405280601b81526020017f7465737446757a7a5f536574416e6447657453616d706c653a3a3100000000008152506133b7565b6114ff601c612710600185614455565b61ffff1661ffff811061272557612725614470565b0154826040518060400160405280601b81526020017f7465737446757a7a5f536574416e6447657453616d706c653a3a3200000000008152506133b7565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610a8b5783829060005260206000200180546127a69061441b565b80601f01602080910402602001604051908101604052809291908181526020018280546127d29061441b565b801561281f5780601f106127f45761010080835404028352916020019161281f565b820191906000526020600020905b81548152906001019060200180831161280257829003601f168201915b505050505081526020019060010190612787565b60075460009060ff161561284b575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e79190614486565b1415905090565b612906816020015161ffff16600161ffff801661399d565b61ffff90811660208301819052825161292392908116919061399d565b61ffff16815260e081015161010082015161297d9164ffffffffff908116916078911611612952576000612964565b60788361010001516129649190614343565b64ffffffffff1683610100015164ffffffffff1661399d565b64ffffffffff1660e082015260a08101516129a29062ffffff166001620fffff61399d565b62ffffff90811660a083015260808201516129c391166001620fffff61399d565b62ffffff16608082015260e08101516040516372eb5f8160e11b815264ffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015612a2657600080fd5b505af1158015612a3a573d6000803e3d6000fd5b505050506000612a6882600001518360e0015164ffffffffff16846040015162ffffff166104709190614368565b6020830151909150612a7d90601c9083613218565b6000612ab48360a0015162ffffff16620fffff6070610558876040015161050889602001516000801b61324590919063ffffffff16565b6101008401516040516372eb5f8160e11b815264ffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b505050506000612b45828560600151601c6132999092919063ffffffff16565b9050612b6a81836040518060600160405280602a8152602001614839602a91396133b7565b6020840151612b7b90601c9061341e565b925060008460e00151856101000151612b949190614343565b64ffffffffff1690506000856040015162ffffff16866060015162ffffff1611612bd15785606001518660400151612bcc91906143de565b612be5565b85604001518660600151612be591906143de565b9050600082876040015162ffffff16612bfe9190614368565b8760e0015164ffffffffff16886040015162ffffff16612c1e9190614368565b612c2891906143fa565b90506000838860a0015162ffffff16612c419190614368565b8860e0015164ffffffffff16896080015162ffffff16612c619190614368565b612c6b91906143fa565b90506000612c7e8562ffffff8616614368565b8960e0015164ffffffffff168a60c0015162ffffff16612c9e9190614368565b612ca891906143fa565b9050612ce1612cb68961344e565b61ffff168a6000015161ffff166040518060600160405280602a815260200161456b602a913961345a565b612d20612ced89613495565b67ffffffffffffffff168467ffffffffffffffff166040518060600160405280602a81526020016145e3602a913961345a565b612d5f612d2c896134ab565b67ffffffffffffffff168367ffffffffffffffff166040518060600160405280602a8152602001614595602a913961345a565b612d9e612d6b896134c1565b67ffffffffffffffff168267ffffffffffffffff166040518060600160405280602a8152602001614755602a913961345a565b505050505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015610948576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161092a575050505050905090565b6000612e1e600360016002600380601e61316d565b90506000612e3660036002600360046009600a61316d565b90506000612e4d600380600460056009601461316d565b9050612e5c601c600185613218565b612e69601c600284613218565b612e76601c600383613218565b600080612e89601c600160136003613728565b91509150612ecd82856040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a31000000008152506133b7565b612f0d81856040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a32000000008152506133b7565b612f1d601c600160186003613728565b8092508193505050612f6582856040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a33000000008152506133b7565b612fa581846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a34000000008152506133b7565b612fb5601c6001601d6003613728565b8092508193505050612ffd82846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a35000000008152506133b7565b61303d81846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a36000000008152506133b7565b61304d601c6001601e6003613728565b809250819350505061309582846040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a37000000008152506133b7565b6130d581866040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a38000000008152506133b7565b6130e5601c600160216003613728565b809250819350505061312d82866040518060400160405280601c81526020017f746573745f42696e61727953656172636843697263756c61723a3a39000000008152506133b7565b6118f881866040518060400160405280601d81526020017f746573745f42696e61727953656172636843697263756c61723a3a31300000008152506133b7565b60d81b7fffffffffff0000000000000000000000000000000000000000000000000000001660d09190911b7aff00000000000000000000000000000000000000000000000000001660909290921b79ffffffffffffffff0000000000000000000000000000000000001660509390931b71ffffffffffffffff000000000000000000001660109490941b69ffffffffffffffff00001661ffff95909516949094179290921717171790565b81613222816139eb565b818461ffff6000198601811690811061323d5761323d614470565b015550505050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b16175b90505b92915050565b6000806132a5846134d7565b90508061ffff166000036132bc57839150506133b0565b60006132c8868361341e565b905060006132d582613a10565b905060006132e283613a1c565b6132ef9060ff168361449f565b90508064ffffffffff1661330242613a2b565b64ffffffffff1611156133a85760008060006133478464ffffffffff16420361332a8c613a58565b6133338d613a64565b61333d8e8e613a75565b8a93929190613aa8565b92509250925060006133588761344e565b905064ffffffffff8616420360788111156133885750968790066001019642955060006133858c8a613245565b9b505b61339682868686858c61316d565b975050505050506133a8888585613218565b869450505050505b9392505050565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed0906133f2908690869086906004016144bd565b60006040518083038186803b15801561340a57600080fd5b505afa158015612636573d6000803e3d6000fd5b60008161342a816139eb565b8361ffff6000198501811690811061344457613444614470565b0154949350505050565b600061ffff8216613293565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906133f2908690869086906004016144bd565b60006132938260101c67ffffffffffffffff1690565b60006132938260501c67ffffffffffffffff1690565b60006132938260901c67ffffffffffffffff1690565b60006132938260d81c61ffff1690565b60006134f3848461341e565b905060006135008261344e565b90508261ffff168161ffff161061352a57604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff161461355b5761ffff8216156135545761354f868361341e565b61355d565b600061355d565b825b9050600061356a8261344e565b61ffff169050808661ffff16116135815780613587565b8561ffff165b905061ffff83165b8561ffff168110156135b95781888261ffff81106135af576135af614470565b015560010161358f565b50612636878761ffff868116881890891617613218565b6136206135dc856134d7565b61ffff168461ffff166040518060400160405280601e81526020017f5f76657269667954696d657374616d7073496473416e6453697a653a3a31000081525061345a565b60005b82518161ffff1610156136cf5760006136486136408360016144e5565b601c9061341e565b90506136bc6136568261344e565b61ffff16858461ffff168151811061367057613670614470565b602001015160f81c60f81b60f81c60ff166040518060400160405280601e81526020017f5f76657269667954696d657374616d7073496473416e6453697a653a3a32000081525061345a565b50806136c781614500565b915050613623565b5060006136dd601c85613b0d565b9150506118f88161ffff168361ffff166040518060400160405280601e81526020017f5f76657269667954696d657374616d7073496473416e6453697a653a3a33000081525061345a565b6000808080613738600186614455565b61ffff16905060008060008961ffff1690505b8385116137f6576000600161376086886143cb565b901c9050888183089a508b61ffff808d1690811061378057613780614470565b0154935061378d84613b66565b92508964ffffffffff168364ffffffffff1611156137b7576137b0600182614521565b94506137f0565b8964ffffffffff168364ffffffffff1610156137df576137d88160016143cb565b95506137f0565b838497509750505050505050613871565b5061374b565b8164ffffffffff168964ffffffffff161015613847578961ffff1660000361381c578799505b8a61ffff6000198c01811690811061383657613836614470565b015483965096505050505050613871565b8760018b089950828b61ffff808d1690811061386557613865614470565b01549650965050505050505b94509492505050565b60008060008060008061388d8989613b0d565b909250905064ffffffffff87166138c48a6138a8848c6143aa565b61ffff1661ffff81106138bd576138bd614470565b0154613b66565b64ffffffffff1611156138ea57604051631c4e7f9560e21b815260040160405180910390fd5b6138f382613b66565b95508664ffffffffff168664ffffffffff1611613935578561391483613495565b61391d846134ab565b613926856134c1565b95509550955095505050613994565b8695506000806139478b8b8b86613728565b9150915060008961395783613b66565b6139619190614343565b9050600061396e84613b66565b613978908c614343565b905061398684848484613b87565b919a50985096505050505050505b93509350935093565b60006139aa848484613ceb565b90506133b06040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082613eb3565b8061ffff1660000361132c5760405163944e113960e01b815260040160405180910390fd5b600060d882901c613293565b60006132938260d01c60ff1690565b8064ffffffffff81168114613a53576040516350dbfc8760e11b815260040160405180910390fd5b919050565b600060e882901c613293565b60006132938260701c620fffff1690565b600080613a8184613a58565b90508062ffffff168362ffffff1611613a9c57828103613aa0565b8083035b949350505050565b64ffffffffff841662ffffff848116820291848216810291841602613acc88613495565b613ad690846143fa565b9250613ae1886134ab565b613aeb90836143fa565b9150613af6886134c1565b613b0090826143fa565b9050955095509592505050565b600080613b1a848461341e565b9150613b258261344e565b90508061ffff168361ffff1614613b5f57613b43611cf7858361341e565b90508061ffff168361ffff1611613b5a5780613b5c565b825b90505b9250929050565b6000613b7182613a1c565b60ff16613b7d83613a10565b613293919061449f565b600080600080613b9688613495565b67ffffffffffffffff1690506000613bad896134ab565b67ffffffffffffffff1690506000613bc48a6134c1565b67ffffffffffffffff1690508664ffffffffff16600003613beb5791945092509050613ce1565b6000613bf68a613495565b67ffffffffffffffff1690506000613c0d8b6134ab565b67ffffffffffffffff1690506000613c248c6134c1565b67ffffffffffffffff1690508a64ffffffffff16600003613c4f5791975095509350613ce192505050565b6000613c6564ffffffffff808d16908e166143cb565b9050808b64ffffffffff1685028d64ffffffffff1689020181613c8a57613c8a614394565b049950808b64ffffffffff1684028d64ffffffffff1688020181613cb057613cb0614394565b049850808b64ffffffffff1683028d64ffffffffff1687020181613cd657613cd6614394565b049750505050505050505b9450945094915050565b600081831115613d675760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b828410158015613d775750818411155b15613d835750826133b0565b6000613d8f8484614521565b613d9a9060016143cb565b905060038511158015613dac57508481115b15613dc357613dbb85856143cb565b9150506133b0565b613dd06003600019614521565b8510158015613de95750613de685600019614521565b81115b15613e0457613dfa85600019614521565b613dbb9084614521565b82851115613e5a576000613e188487614521565b90506000613e268383614534565b905080600003613e3b578493505050506133b0565b6001613e4782886143cb565b613e519190614521565b93505050613eab565b83851015613eab576000613e6e8686614521565b90506000613e7c8383614534565b905080600003613e91578593505050506133b0565b613e9b8186614521565b613ea69060016143cb565b935050505b509392505050565b6114ff8282604051602401613ec9929190614548565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905261132c8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b604051610120810167ffffffffffffffff81118282101715613f4a57634e487b7160e01b600052604160045260246000fd5b60405290565b803561ffff81168114613a5357600080fd5b803562ffffff81168114613a5357600080fd5b803564ffffffffff81168114613a5357600080fd5b60006101208284031215613f9d57600080fd5b613fa5613f18565b613fae83613f50565b8152613fbc60208401613f50565b6020820152613fcd60408401613f62565b6040820152613fde60608401613f62565b6060820152613fef60808401613f62565b608082015261400060a08401613f62565b60a082015261401160c08401613f62565b60c082015261402260e08401613f75565b60e0820152610100614035818501613f75565b908201529392505050565b6020808252825182820181905260009190848201906040850190845b818110156140815783516001600160a01b03168352928401929184019160010161405c565b50909695505050505050565b6000815180845260005b818110156140b357602081850181015186830182015201614097565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561418357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561416d57605f1989850301835261415b84865161408d565b948e01949350918d019160010161413f565b505050978a0197945050918801916001016140fa565b50919a9950505050505050505050565b600080604083850312156141a657600080fd5b6141af83613f50565b9150613b5c60208401613f50565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561427957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156142645783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190614222565b50978a019795505050918701916001016141e5565b50919998505050505050505050565b60006020828403121561429a57600080fd5b5035919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156142f657603f198886030184526142e485835161408d565b945092850192908501906001016142c8565b5092979650505050505050565b6000806040838503121561431657600080fd5b61431f83613f50565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156143615761436161432d565b5092915050565b67ffffffffffffffff81811683821602808216919082811461438c5761438c61432d565b505092915050565b634e487b7160e01b600052601260045260246000fd5b600061ffff808416806143bf576143bf614394565b92169190910692915050565b808201808211156132935761329361432d565b62ffffff8281168282160390808211156143615761436161432d565b67ffffffffffffffff8181168382160190808211156143615761436161432d565b600181811c9082168061442f57607f821691505b60208210810361444f57634e487b7160e01b600052602260045260246000fd5b50919050565b61ffff8281168282160390808211156143615761436161432d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561449857600080fd5b5051919050565b64ffffffffff8181168382160190808211156143615761436161432d565b8381528260208201526060604082015260006144dc606083018461408d565b95945050505050565b61ffff8181168382160190808211156143615761436161432d565b600061ffff8083168181036145175761451761432d565b6001019392505050565b818103818111156132935761329361432d565b60008261454357614543614394565b500690565b60408152600061455b604083018561408d565b9050826020830152939250505056fe7465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a327465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a34746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31347465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a33746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3230746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a33746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a32746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31307465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a31746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3137746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a38746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3138746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a347465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a35746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3136746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3131746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a367465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a35746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a377465737446757a7a5f55706461746544656c746154734c6f7765725468616e324d696e757465733a3a31746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3133746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a39746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a357465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a32746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a3139746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31327465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a33746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31357465737446757a7a5f55706461746544656c74615473477265617465725468616e324d696e757465733a3a34746573745f47657453616d706c65417446756c6c79496e697469616c697a65643a3a31a264697066735822122079b39098fe5cb2be76507ee195839fde7805b35b4f229cc1e0636260bfdeb5e064736f6c63430008140033","sourceMap":"184:17340:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10281:2580;;;;;;:::i;:::-;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;13836:3071:107:-;;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;13330:318:107:-;;;;;;:::i;:::-;;:::i;1107:1513::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;13654:176:107:-;;;:::i;761:340::-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;12867:457:107:-;;;;;;:::i;:::-;;:::i;3069:146:5:-;;;:::i;4018:815:107:-;;;:::i;4839:2586::-;;;:::i;422:333::-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;7899:14:127;;7892:22;7874:41;;7862:2;7847:18;1243:204:1;7734:187:127;7725:2550:107;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;2626:1386:107:-;;;:::i;10281:2580::-;10402:15;;;;10379:9;;;;10402:19;;;;;;:61;;;10448:6;:15;;;10425:38;;:6;:19;;;:38;;;;10402:61;:101;;;;;10487:6;:16;;;10467:36;;:6;:16;;;:36;;;;10402:101;:162;;;;;10561:3;10542:6;:16;;;10523:6;:16;;;:35;;;;:::i;:::-;:41;;;10402:162;:206;;;;;510:7:76;10568:6:107;:17;;;:40;;;;10402:206;:274;;;;;510:7:76;10628:6:107;:25;;;:48;;;;10402:274;10379:307;;;;;;;;;;;;;7899:14:127;7892:22;7874:41;;7862:2;7847:18;;7734:187;10379:307:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;10705:16:107;;;;10697:25;;-1:-1:-1;;;10697:25:107;;8415:12:127;8403:25;;;10697::107;;;8385:44:127;10697:7:107;;;;8358:18:127;;10697:25:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10733:14;10750:301;10781:6;:19;;;10848:6;:16;;;10814:50;;10821:6;:23;;;10814:31;;:50;;;;:::i;:::-;10914:6;:16;;;10878:52;;10885:6;:25;;;10878:33;;:52;;;;:::i;:::-;10980:6;:16;;;10944:52;;10951:6;:25;;;10944:33;;:52;;;;:::i;:::-;11010:1;11025:6;:16;;;10750:17;:301::i;:::-;11079:15;;;;10733:318;;-1:-1:-1;11062:41:107;;:6;;10733:318;11062:16;:41::i;:::-;11114:18;11135:178;11229:6;:17;;;11135:178;;510:7:76;1585:3:70;11135:76:107;11187:6;:23;;;11135:39;11158:6;:15;;;11143:1;11135:10;;:22;;:39;;;;:::i;:::-;:51;12248:17:70;1333:22:76;1320:36;;1398:29;1857:3:70;1398:29:76;;;;1383:45;12284:59:70;1127:317:76;11135:76:107;1337:17:76;;;1333:22;1320:36;1410:16;;;;1398:29;;;1383:45;;1127:317;11135:178:107;11332:16;;;;11324:25;;-1:-1:-1;;;11324:25:107;;8415:12:127;8403:25;;;11324::107;;;8385:44:127;11114:199:107;;-1:-1:-1;11324:7:107;;;;8358:18:127;;11324:25:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11360:21;11384:42;11398:10;11410:6;:15;;;11384:6;:13;;:42;;;;;:::i;:::-;11360:66;;11437:13;11486:6;:19;;;11468:6;:15;;;:37;;;;:::i;:::-;11460:50;;:46;;11509:1;11460:50;:::i;:::-;11437:74;-1:-1:-1;11522:103:107;11531:13;11546:30;:10;11437:74;11546:22;:30::i;:::-;11522:103;;;;;;;;;;;;;;;;;:8;:103::i;:::-;11661:1;11639:6;:19;;;:23;;;11635:98;;;11664:69;11673:33;11690:6;:15;;;11673:6;:16;;:33;;;;:::i;:::-;11708:6;11664:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;11753:24;:6;11770;11753:16;:24::i;:::-;11744:33;;11788:9;11826:6;:16;;;11807:6;:16;;;:35;;;;:::i;:::-;11800:43;;11788:55;;11854:10;11885:6;:23;;;11867:41;;:6;:15;;;:41;;;:153;;12005:6;:15;;;11979:6;:23;;;:41;;;;:::i;:::-;11867:153;;;11941:6;:23;;;11923:6;:15;;;:41;;;;:::i;:::-;11854:166;;12031:19;12140:2;12113:6;:23;;;12106:31;;:36;;;;:::i;:::-;12087:6;:16;;;12053:50;;12060:6;:23;;;12053:31;;:50;;;;:::i;:::-;:89;;;;:::i;:::-;12031:111;;12152:27;12277:2;12256:6;:17;;;12249:25;;:30;;;;:::i;:::-;12230:6;:16;;;12194:52;;12201:6;:25;;;12194:33;;:52;;;;:::i;:::-;:85;;;;:::i;:::-;12152:127;-1:-1:-1;12289:27:107;12374:16;12388:2;12374:11;;;:16;:::i;:::-;12355:6;:16;;;12319:52;;12326:6;:25;;;12319:33;;:52;;;;:::i;:::-;:71;;;;:::i;:::-;12289:101;;12401:103;12410:24;:6;:22;:24::i;:::-;12401:103;;12436:6;:19;;;12401:103;;;;;;;;;;;;;;;;;;;:8;:103::i;:::-;12514:96;12523:24;:6;:22;:24::i;:::-;12514:96;;12549:12;12514:96;;;;;;;;;;;;;;;;;;;:8;:96::i;:::-;12620:112;12629:32;:6;:30;:32::i;:::-;12620:112;;12663:20;12620:112;;;;;;;;;;;;;;;;;;;:8;:112::i;:::-;12742;12751:32;:6;:30;:32::i;:::-;12742:112;;12785:20;12742:112;;;;;;;;;;;;;;;;;;;:8;:112::i;:::-;10369:2492;;;;;;;;;10281:2580;:::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;13836:3071:107:-;13902:18;13923:132;13984:4;510:7:76;1585:3:70;13923:43:107;13984:4;13923:25;13902:18;13946:1;13923:22;:25::i;:132::-;13902:153;;14065:50;14087:24;:10;:22;:24::i;:::-;14065:6;;14113:1;14065:21;:50::i;:::-;14125:58;14153:10;14165:1;14125:58;;;;;;;;;;;;;-1:-1:-1;;;14125:58:107;;;14181:1;14125:27;:58::i;:::-;14234:12;;-1:-1:-1;;;14234:12:107;;14242:3;14234:12;;;10052:25:127;14234:7:107;;;;10025:18:127;;14234:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14270:31:107;;-1:-1:-1;14270:6:107;;-1:-1:-1;14284:10:107;;-1:-1:-1;14296:4:107;14270:13;:31::i;:::-;14257:44;;14311:58;14339:10;14351:1;14311:58;;;;;;;;;;;;;-1:-1:-1;;;14311:58:107;;;14367:1;14311:27;:58::i;:::-;14420:12;;-1:-1:-1;;;14420:12:107;;14428:3;14420:12;;;10052:25:127;14420:7:107;;;;10025:18:127;;14420:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14456:31:107;;-1:-1:-1;14456:6:107;;-1:-1:-1;14470:10:107;;-1:-1:-1;14482:4:107;14456:13;:31::i;:::-;14443:44;;14497:58;14525:10;14537:1;14497:58;;;;;;;;;;;;;-1:-1:-1;;;14497:58:107;;;14553:1;14497:27;:58::i;:::-;14606:50;14628:24;:10;:22;:24::i;:::-;14606:6;;14654:1;14606:21;:50::i;:::-;14666:60;14694:10;14706:1;14666:60;;;;;;;;;;;;;-1:-1:-1;;;14666:60:107;;;14724:1;14666:27;:60::i;:::-;14779:12;;-1:-1:-1;;;14779:12:107;;14787:3;14779:12;;;10052:25:127;14779:7:107;;;;10025:18:127;;14779:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14815:31:107;;-1:-1:-1;14815:6:107;;-1:-1:-1;14829:10:107;;-1:-1:-1;14841:4:107;14815:13;:31::i;:::-;14802:44;;14856:60;14884:10;14896:1;14856:60;;;;;;;;;;;;;-1:-1:-1;;;14856:60:107;;;14914:1;14856:27;:60::i;:::-;14969:12;;-1:-1:-1;;;14969:12:107;;14977:3;14969:12;;;10052:25:127;14969:7:107;;;;10025:18:127;;14969:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15005:31:107;;-1:-1:-1;15005:6:107;;-1:-1:-1;15019:10:107;;-1:-1:-1;15031:4:107;15005:13;:31::i;:::-;14992:44;;15046:60;15074:10;15086:1;15046:60;;;;;;;;;;;;;-1:-1:-1;;;15046:60:107;;;15104:1;15046:27;:60::i;:::-;15159:50;15181:24;:10;:22;:24::i;:::-;15159:6;;15207:1;15159:21;:50::i;:::-;15219:62;15247:10;15259:1;15219:62;;;;;;;;;;;;;;;;;15279:1;15219:27;:62::i;:::-;15336:12;;-1:-1:-1;;;15336:12:107;;15344:3;15336:12;;;10052:25:127;15336:7:107;;;;10025:18:127;;15336:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15372:31:107;;-1:-1:-1;15372:6:107;;-1:-1:-1;15386:10:107;;-1:-1:-1;15398:4:107;15372:13;:31::i;:::-;15359:44;;15413:62;15441:10;15453:1;15413:62;;;;;;;;;;;;;;;;;15473:1;15413:27;:62::i;:::-;15530:12;;-1:-1:-1;;;15530:12:107;;15538:3;15530:12;;;10052:25:127;15530:7:107;;;;10025:18:127;;15530:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15566:31:107;;-1:-1:-1;15566:6:107;;-1:-1:-1;15580:10:107;;-1:-1:-1;15592:4:107;15566:13;:31::i;:::-;15553:44;;15607:62;15635:10;15647:1;15607:62;;;;;;;;;;;;;;;;;15667:1;15607:27;:62::i;:::-;15724:50;15746:24;:10;:22;:24::i;:::-;15724:6;;15772:1;15724:21;:50::i;:::-;15784:66;15812:10;15824:1;15784:66;;;;;;;;;;;;;;;;;15848:1;15784:27;:66::i;:::-;15909:12;;-1:-1:-1;;;15909:12:107;;15917:3;15909:12;;;10052:25:127;15909:7:107;;;;10025:18:127;;15909:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15945:31:107;;-1:-1:-1;15945:6:107;;-1:-1:-1;15959:10:107;;-1:-1:-1;15971:4:107;15945:13;:31::i;:::-;15932:44;;15986:66;16014:10;16026:1;15986:66;;;;;;;;;;;;;;;;;16050:1;15986:27;:66::i;:::-;16111:12;;-1:-1:-1;;;16111:12:107;;16119:3;16111:12;;;10052:25:127;16111:7:107;;;;10025:18:127;;16111:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16147:31:107;;-1:-1:-1;16147:6:107;;-1:-1:-1;16161:10:107;;-1:-1:-1;16173:4:107;16147:13;:31::i;:::-;16134:44;;16188:66;16216:10;16228:1;16188:66;;;;;;;;;;;;;;;;;16252:1;16188:27;:66::i;:::-;16313:12;;-1:-1:-1;;;16313:12:107;;16321:3;16313:12;;;10052:25:127;16313:7:107;;;;10025:18:127;;16313:12:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16349:31:107;;-1:-1:-1;16349:6:107;;-1:-1:-1;16363:10:107;;-1:-1:-1;16375:4:107;16349:13;:31::i;:::-;16336:44;;16390:66;16418:10;16430:1;16390:66;;;;;;;;;;;;;;;;;16454:1;16390:27;:66::i;:::-;16515:50;16537:24;:10;:22;:24::i;:::-;16515:6;;16563:1;16515:21;:50::i;:::-;16575:68;16603:10;16615:1;16575:68;;;;;;;;;;;;;;;;;16641:1;16575:27;:68::i;:::-;16704:13;;-1:-1:-1;;;16704:13:107;;16712:4;16704:13;;;10052:25:127;16704:7:107;;;;10025:18:127;;16704:13:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16741:31:107;;-1:-1:-1;16741:6:107;;-1:-1:-1;16755:10:107;;-1:-1:-1;16767:4:107;16741:13;:31::i;:::-;16728:44;;16782:68;16810:10;16822:1;16782:68;;;;;;;;;;;;;;;;;16848:1;16782:27;:68::i;:::-;13892:3015;13836:3071::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;13330:318:107:-;13428:9;;13438:19;;;;;;;;;;;:33;;;13470:1;13461:6;:10;;;13438:33;13428:44;;;;;;;;;;;;;7899:14:127;7892:22;7874:41;;7862:2;7847:18;;7734:187;13428:44:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13483:32:107;;-1:-1:-1;13483:6:107;;-1:-1:-1;13505:1:107;;-1:-1:-1;13508:6:107;13483:21;:32::i;:::-;13526:70;;-1:-1:-1;;;13526:70:107;;-1:-1:-1;;;13526:70:107;;;11961:52:127;13526:15:107;;;;11934:18:127;;13526:70:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13606:35:107;;-1:-1:-1;13606:6:107;;-1:-1:-1;13628:1:107;;-1:-1:-1;13631:9:107;13606:21;:35::i;:::-;13330:318;;:::o;1107:1513::-;1161:15;1179:35;1197:1;1200;1203;1206;1209;1212;1179:17;:35::i;:::-;1161:53;;1224:15;1242:36;1260:1;1263;1266;1269;1272;1275:2;1242:17;:36::i;:::-;1224:54;;1288:15;1306:36;1324:1;1327;1330;1333;1336;1339:2;1306:17;:36::i;:::-;1288:54;-1:-1:-1;1353:28:107;:6;1370:1;1373:7;1353:16;:28::i;:::-;1391;:6;1408:1;1411:7;1391:16;:28::i;:::-;1429;:6;1446:1;1449:7;1429:16;:28::i;:::-;1469:16;;1503:28;:6;1523:1;1469:16;1523:1;1503:19;:28::i;:::-;1468:63;;;;1542:57;1551:8;1561:7;1542:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;1609:53;1618:4;1624:7;1609:53;;;;;;;;;;;;;;;;;:8;:53::i;:::-;1692:28;:6;1712:1;1715;1712;1692:19;:28::i;:::-;1673:47;;;;;;;;1731:57;1740:8;1750:7;1731:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;1798:53;1807:4;1813:7;1798:53;;;;;;;;;;;;;;;;;:8;:53::i;:::-;1881:28;:6;1901:1;1904;1901;1881:19;:28::i;:::-;1862:47;;;;;;;;1920:57;1929:8;1939:7;1920:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;1987:53;1996:4;2002:7;1987:53;;;;;;;;;;;;;;;;;:8;:53::i;:::-;2070:29;:6;2090:1;2093:2;2090:1;2070:19;:29::i;:::-;2051:48;;;;;;;;2110:57;2119:8;2129:7;2110:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;2177:53;2186:4;2192:7;2177:53;;;;;;;;;;;;;;;;;:8;:53::i;:::-;2260:29;:6;2280:1;2283:2;2280:1;2260:19;:29::i;:::-;2241:48;;;;;;;;2300:57;2309:8;2319:7;2300:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;2367:54;2376:4;2382:7;2367:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;2451:29;:6;2471:1;2474:2;2471:1;2451:19;:29::i;:::-;2432:48;;;;;;;;2491:58;2500:8;2510:7;2491:58;;;;;;;;;;;;;;;;;:8;:58::i;:::-;2559:54;2568:4;2574:7;2559:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;1151:1469;;;;;1107:1513::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13654:176:107;13717:68;;-1:-1:-1;;;13717:68:107;;-1:-1:-1;;;13717:68:107;;;11961:52:127;13717:15:107;;;;11934:18:127;;13717:68:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13795:28:107;;-1:-1:-1;13795:6:107;;-1:-1:-1;13817:1:107;;-1:-1:-1;13820:2:107;13795:21;:28::i;:::-;13654:176::o;761:340::-;867:68;;-1:-1:-1;;;867:68:107;;-1:-1:-1;;;867:68:107;;;11961:52:127;837:15:107;;867;;;;11934:18:127;;867:68:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;945:34:107;;-1:-1:-1;945:6:107;;-1:-1:-1;962:8:107;;-1:-1:-1;972:6:107;945:16;:34::i;:::-;990:68;;-1:-1:-1;;;990:68:107;;-1:-1:-1;;;990:68:107;;;11961:52:127;990:15:107;;;;11934:18:127;;990:68:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1068:26;1085:8;1068:6;:16;;:26;;;;:::i;:::-;;827:274;761:340;:::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12867:457:107;12958:9;;12968:10;;;;;;;:32;;;12994:6;12982:18;;:9;:18;;;12968:32;:52;;;;;13017:3;13004:9;:16;;;;12968:52;12958:63;;;;;;;;;;;;;7899:14:127;7892:22;7874:41;;7862:2;7847:18;;7734:187;12958:63:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13101:1:107;;-1:-1:-1;13113:39:107;;-1:-1:-1;13113:6:107;;-1:-1:-1;13101:1:107;13145:6;13113:21;:39::i;:::-;13163:42;:6;13185:8;13195:9;13163:21;:42::i;:::-;13216:101;13225:44;:26;:6;13242:8;13225:16;:26::i;:::-;:42;:44::i;:::-;13216:101;;13271:9;13216:101;;;;;;;;;;;;;;;;;;;:8;:101::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:815:107;4073:15;4091:36;4109:1;4112;4115;4118;4121;4124:2;4091:17;:36::i;:::-;4073:54;;4176:15;4194:36;4212:1;4215;4218;4221;4224;4227:2;4194:17;:36::i;:::-;4176:54;;317:28:0;309:37;;-1:-1:-1;;;;;4241:15:107;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4268:29:107;;-1:-1:-1;4268:6:107;;-1:-1:-1;4288:1:107;;-1:-1:-1;4291:2:107;4295:1;4268:19;:29::i;:::-;;;317:28:0;309:37;;-1:-1:-1;;;;;4328:15:107;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4355:29:107;;-1:-1:-1;4355:6:107;;-1:-1:-1;4375:1:107;;-1:-1:-1;4378:2:107;4382:1;4355:19;:29::i;:::-;-1:-1:-1;4413:28:107;;-1:-1:-1;4413:6:107;4430:1;4433:7;4413:16;:28::i;:::-;4451;:6;4468:1;4471:7;4451:16;:28::i;:::-;317::0;309:37;;-1:-1:-1;;;;;4490:15:107;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4517:29:107;;-1:-1:-1;4517:6:107;;-1:-1:-1;4537:1:107;;-1:-1:-1;4540:2:107;4544:1;4517:19;:29::i;:::-;;;317:28:0;309:37;;-1:-1:-1;;;;;4577:15:107;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4604:29:107;;-1:-1:-1;4604:6:107;;-1:-1:-1;4624:1:107;;-1:-1:-1;4627:2:107;4631:1;4604:19;:29::i;:::-;;;317:28:0;309:37;;-1:-1:-1;;;;;4662:15:107;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4689:28:107;;-1:-1:-1;4689:6:107;;-1:-1:-1;4709:1:107;;-1:-1:-1;4712:1:107;4715;4689:19;:28::i;:::-;;;317::0;309:37;;-1:-1:-1;;;;;4749:15:107;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4776:29:107;;-1:-1:-1;4776:6:107;;-1:-1:-1;4796:1:107;;-1:-1:-1;4799:2:107;4803:1;4776:19;:29::i;:::-;;;4063:770;;4018:815::o;4839:2586::-;4902:15;4920:39;4938:1;4941:2;4945;4949;4953:1;4956:2;4920:17;:39::i;:::-;4902:57;;5008:15;5026:39;5044:1;5047:2;5051;5055;5059:1;5062:2;5026:17;:39::i;:::-;5008:57;;5075:15;5093:39;5111:1;5114:2;5118;5122;5126:1;5129:2;5093:17;:39::i;:::-;5075:57;-1:-1:-1;5143:28:107;:6;5160:1;5163:7;5143:16;:28::i;:::-;5181;:6;5198:1;5201:7;5181:16;:28::i;:::-;5219;:6;5236:1;5239:7;5219:16;:28::i;:::-;5259:17;;;;5371:25;:6;5390:1;5393:2;5371:18;:25::i;:::-;5258:138;;;;;;;;5407:63;5416:10;5407:63;;5428:2;5407:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;5480:65;5489:12;5480:65;;5503:2;5480:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;5555:73;5564:20;5555:73;;5586:2;5555:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;5638;5647:20;5638:73;;5669:2;5638:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;5795:25;:6;5814:1;5817:2;5795:18;:25::i;:::-;5831:63;;;;;;;;;;;;;5722:98;;-1:-1:-1;5722:98:107;;-1:-1:-1;5722:98:107;;-1:-1:-1;5722:98:107;-1:-1:-1;5831:63:107;;;;;;5852:2;;5831:63;;;;;:8;:63::i;:::-;5904:65;5913:12;5904:65;;5927:2;5904:65;;;;;;;;;;;;;;;;;:8;:65::i;:::-;5979:73;5988:20;5979:73;;6010:2;5979:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;6062;6071:20;6062:73;;6093:2;6062:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;6219:25;:6;6238:1;6241:2;6219:18;:25::i;:::-;6255:63;;;;;;;;;;;;;6146:98;;-1:-1:-1;6146:98:107;;-1:-1:-1;6146:98:107;;-1:-1:-1;6146:98:107;-1:-1:-1;6255:63:107;;;;;;6276:2;;6255:63;;;;;:8;:63::i;:::-;6328:66;6337:12;6328:66;;6351:2;6328:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;6404:74;6413:20;6404:74;;6435:2;6404:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;6488;6497:20;6488:74;;6519:2;6488:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;6646:25;:6;6665:1;6668:2;6646:18;:25::i;:::-;6682:64;;;;;;;;;;;;;6573:98;;-1:-1:-1;6573:98:107;;-1:-1:-1;6573:98:107;;-1:-1:-1;6573:98:107;-1:-1:-1;6682:64:107;;;;;;6703:2;;6682:64;;;;;:8;:64::i;:::-;6756:66;6765:12;6756:66;;6779:2;6756:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;6832:74;6841:20;6832:74;;6863:2;6832:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;6916;6925:20;6916:74;;6947:2;6916:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;7074:25;:6;7093:1;7096:2;7074:18;:25::i;:::-;7110:64;;;;;;;;;;;;;7001:98;;-1:-1:-1;7001:98:107;;-1:-1:-1;7001:98:107;;-1:-1:-1;7001:98:107;-1:-1:-1;7110:64:107;;;;;;7131:2;;7110:64;;;;;:8;:64::i;:::-;7184:66;7193:12;7184:66;;7207:2;7184:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;7260:74;7269:20;7260:74;;7291:2;7260:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;7344;7353:20;7344:74;;7375:2;7344:74;;;;;;;;;;;;;;;;;:8;:74::i;:::-;4892:2533;;;;;;;4839:2586::o;422:333::-;508:23;;-1:-1:-1;;;508:23:107;;518:12;;;;;508:23;;;7874:41:127;508:9:107;;;;7847:18:127;;508:23:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:34:107;;-1:-1:-1;542:6:107;;-1:-1:-1;559:8:107;;-1:-1:-1;569:6:107;542:16;:34::i;:::-;586:75;595:26;:6;612:8;595:16;:26::i;:::-;623:6;586:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;671:77;680:6;695:12;706:1;695:8;:12;:::i;:::-;680:28;;;;;;;;;:::i;:::-;;;710:6;671:77;;;;;;;;;;;;;;;;;:8;:77::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;12506:74:127;;;1398:17:1;12596:18:127;;;12589:34;1428:1:1;;1377:7;;12479:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;7725:2550:107:-;7846:43;7852:6;:15;;;7846:43;;7869:1;7872:16;7846:43;;:5;:43::i;:::-;7821:69;;;;:15;;;:69;;;7935:19;;7929:61;;;;;;7821:69;7929:5;:61::i;:::-;7900:91;;;;8045:16;;;;8063;;;;8039:94;;;;;;;8082:3;8063:22;;;:51;;8113:1;8063:51;;;8107:3;8088:6;:16;;;:22;;;;:::i;:::-;8039:94;;8116:6;:16;;;8039:94;;:5;:94::i;:::-;8001:133;;:16;;;:133;8177:17;;;;8171:48;;;;8196:1;510:7:76;8171:5:107;:48::i;:::-;8144:76;;;;:17;;;:76;8271:25;;;;8265:56;;;8298:1;510:7:76;8265:5:107;:56::i;:::-;8230:92;;:25;;;:92;8341:16;;;;8333:25;;-1:-1:-1;;;8333:25:107;;8415:12:127;8403:25;;;8333::107;;;8385:44:127;8333:7:107;;;;8358:18:127;;8333:25:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8369:14;8386:301;8417:6;:19;;;8484:6;:16;;;8450:50;;8457:6;:23;;;8450:31;;:50;;;;:::i;8386:301::-;8715:15;;;;8369:318;;-1:-1:-1;8698:41:107;;:6;;8369:318;8698:16;:41::i;:::-;8750:18;8771:178;8865:6;:17;;;8771:178;;510:7:76;1585:3:70;8771:76:107;8823:6;:23;;;8771:39;8794:6;:15;;;8779:1;8771:10;;:22;;:39;;;;:::i;:178::-;8968:16;;;;8960:25;;-1:-1:-1;;;8960:25:107;;8415:12:127;8403:25;;;8960::107;;;8385:44:127;8750:199:107;;-1:-1:-1;8960:7:107;;;;8358:18:127;;8960:25:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8996:17;9016:42;9030:10;9042:6;:15;;;9016:6;:13;;:42;;;;;:::i;:::-;8996:62;;9069:77;9078:9;9089:10;9069:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;9183:15;;;;9166:33;;:6;;:16;:33::i;:::-;9157:42;;9210:9;9248:6;:16;;;9229:6;:16;;;:35;;;;:::i;:::-;9222:43;;9210:55;;9276:10;9307:6;:23;;;9289:41;;:6;:15;;;:41;;;:153;;9427:6;:15;;;9401:6;:23;;;:41;;;;:::i;:::-;9289:153;;;9363:6;:23;;;9345:6;:15;;;:41;;;;:::i;:::-;9276:166;;9453:19;9562:2;9535:6;:23;;;9528:31;;:36;;;;:::i;:::-;9509:6;:16;;;9475:50;;9482:6;:23;;;9475:31;;:50;;;;:::i;:::-;:89;;;;:::i;:::-;9453:111;;9574:27;9699:2;9678:6;:17;;;9671:25;;:30;;;;:::i;:::-;9652:6;:16;;;9616:52;;9623:6;:25;;;9616:33;;:52;;;;:::i;:::-;:85;;;;:::i;:::-;9574:127;-1:-1:-1;9711:27:107;9796:16;9810:2;9796:11;;;:16;:::i;:::-;9777:6;:16;;;9741:52;;9748:6;:25;;;9741:33;;:52;;;;:::i;:::-;:71;;;;:::i;:::-;9711:101;;9823;9832:24;:6;:22;:24::i;:::-;9823:101;;9858:6;:19;;;9823:101;;;;;;;;;;;;;;;;;;;:8;:101::i;:::-;9934:94;9943:24;:6;:22;:24::i;:::-;9934:94;;9969:12;9934:94;;;;;;;;;;;;;;;;;;;:8;:94::i;:::-;10038:110;10047:32;:6;:30;:32::i;:::-;10038:110;;10081:20;10038:110;;;;;;;;;;;;;;;;;;;:8;:110::i;:::-;10158;10167:32;:6;:30;:32::i;:::-;10158:110;;10201:20;10158:110;;;;;;;;;;;;;;;;;;;:8;:110::i;:::-;7811:2464;;;;;;;;7725:2550;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;2626:1386:107:-;2682:15;2700:36;2718:1;2721;2724;2727;2730;2733:2;2700:17;:36::i;:::-;2682:54;;2785:15;2803:36;2821:1;2824;2827;2830;2833;2836:2;2803:17;:36::i;:::-;2785:54;;2849:15;2867:36;2885:1;2888;2891;2894;2897;2900:2;2867:17;:36::i;:::-;2849:54;-1:-1:-1;2914:28:107;:6;2931:1;2934:7;2914:16;:28::i;:::-;2952;:6;2969:1;2972:7;2952:16;:28::i;:::-;2990;:6;3007:1;3010:7;2990:16;:28::i;:::-;3030:16;;3064:29;:6;3084:1;3087:2;3091:1;3064:19;:29::i;:::-;3029:64;;;;3104:59;3113:8;3123:7;3104:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;3173:55;3182:4;3188:7;3173:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;3258:29;:6;3278:1;3281:2;3285:1;3258:19;:29::i;:::-;3239:48;;;;;;;;3298:59;3307:8;3317:7;3298:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;3367:55;3376:4;3382:7;3367:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;3452:29;:6;3472:1;3475:2;3479:1;3452:19;:29::i;:::-;3433:48;;;;;;;;3492:59;3501:8;3511:7;3492:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;3561:55;3570:4;3576:7;3561:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;3646:29;:6;3666:1;3669:2;3673:1;3646:19;:29::i;:::-;3627:48;;;;;;;;3686:59;3695:8;3705:7;3686:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;3755:55;3764:4;3770:7;3755:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;3840:29;:6;3860:1;3863:2;3867:1;3840:19;:29::i;:::-;3821:48;;;;;;;;3880:59;3889:8;3899:7;3880:59;;;;;;;;;;;;;;;;;:8;:59::i;:::-;3949:56;3958:4;3964:7;3949:56;;;;;;;;;;;;;;;;;:8;:56::i;1442:807:80:-;1030:3;1398:29:76;;;970:3:80;1398:29:76;;;;;;910:3:80;1398:29:76;;;;;;844:2:80;1398:29:76;;;;;;779:2:80;1398:29:76;;;;;;1710:67:80;;;;;1383:45:76;;;;;;;;;;;;1442:807:80:o;6145:196:69:-;6243:8;1290:24;1305:8;1290:14;:24::i;:::-;6318:6;6287;:28:::1;-1:-1:-1::0;;6302:12:69;;6287:28;::::1;::::0;;::::1;;;;;:::i;:::-;;:37:::0;-1:-1:-1;;;;6145:196:69:o;10754:169:70:-;10831:7;1333:22:76;1320:36;;1398:29;1803:3:70;1398:29:76;;;;1383:45;10857:59:70;10850:66;;10754:169;;;;;:::o;6541:1576:69:-;6635:7;6654:15;6672:24;:10;:22;:24::i;:::-;6654:42;;6710:8;:13;;6722:1;6710:13;6706:36;;6732:10;6725:17;;;;;6706:36;6753:14;6770:27;6780:6;6788:8;6770:9;:27::i;:::-;6753:44;;6808:16;6827:26;:6;:24;:26::i;:::-;6808:45;;6863:20;6898:26;:6;:24;:26::i;:::-;6886:38;;;;:9;:38;:::i;:::-;6863:61;;6966:13;6939:40;;:24;:15;:22;:24::i;:::-;:40;;;6935:1148;;;7024:19;7045:27;7074;7105:250;7165:13;7147:31;;:15;:31;7201:24;:10;:22;:24::i;:::-;7247:37;:10;:35;:37::i;:::-;7306:31;:10;7328:8;7306:21;:31::i;:::-;7105:6;;:250;;;:13;:250::i;:::-;7023:332;;;;;;7374:13;7390:24;:6;:22;:24::i;:::-;7374:40;-1:-1:-1;7451:27:69;;;:15;:27;1111:11;7501:31;;7497:335;;;-1:-1:-1;7607:21:69;;;;7630:1;7603:29;;7729:15;;-1:-1:-1;7687:1:69;7781:32;:10;7603:29;7781:22;:32::i;:::-;7768:45;;7497:335;7859:149;7898:6;7906:12;7920:20;7942;7970:8;7981:9;7859:17;:149::i;:::-;7850:158;;6995:1028;;;;;8037:35;8047:6;8055:8;8065:6;8037:9;:35::i;:::-;8100:10;8093:17;;;;;;6541:1576;;;;;;:::o;3826:134:1:-;3924:29;;-1:-1:-1;;;3924:29:1;;:11;;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:246:69;1647:14;1620:8;1290:24;1305:8;1290:14;:24::i;:::-;1710:6;:28:::1;-1:-1:-1::0;;1725:12:69;;1710:28;::::1;::::0;;::::1;;;;;:::i;:::-;;::::0;;1509:246;-1:-1:-1;;;;1509:246:69:o;2496:125:80:-;2560:13;4727:11:76;4701:38;;2592:22:80;4567:188:76;2386:134:1;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;2896:140:80:-;2960:9;2988:41;:6;779:2;6548:20:76;6570:11;6544:38;;6410:188;3380:175:80;3452:28;3499:49;:6;844:2;6548:20:76;6570:11;6544:38;;6410:188;3869:165:80;3941:17;3977:50;:6;910:3;6548:20:76;6570:11;6544:38;;6410:188;7637:142:70;7697:15;7735:37;:6;1803:3;4705:20:76;4727:11;4701:38;;4567:188;8287:809:69;8388:14;8405:27;8415:6;8423:8;8405:9;:27::i;:::-;8388:44;;8442:13;8458:24;:6;:22;:24::i;:::-;8442:40;;8507:9;8497:19;;:6;:19;;;8493:65;;8525:33;;-1:-1:-1;;;8525:33:69;;;;;;;;;;;8493:65;8569:18;8600:8;8590:18;;:6;:18;;;:82;;8620:11;;;;:52;;8647:25;8657:6;8665;8647:9;:25::i;:::-;8590:82;;8620:52;8642:1;8590:82;;;8611:6;8590:82;8569:103;;8683:18;8704:28;:10;:26;:28::i;:::-;8683:49;;;;8766:10;8755:8;:21;;;:45;;8790:10;8755:45;;;8779:8;8755:45;;;8742:58;-1:-1:-1;8816:18:69;;;8811:174;8840:9;8836:13;;:1;:13;8811:174;;;8902:10;8866:6;8881:1;8866:17;;;;;;;:::i;:::-;;:48;8957:3;;8811:174;;;-1:-1:-1;8995:94:69;9005:6;9013:8;9069:18;9041:15;;;9024:33;;9069:18;;;9023:65;8995:9;:94::i;16913:609:107:-;17070:78;17079:24;:10;:22;:24::i;:::-;17070:78;;17105:8;17070:78;;;;;;;;;;;;;;;;;;;:8;:78::i;:::-;17164:8;17159:216;17182:5;:12;17178:1;:16;;;17159:216;;;17215:14;17232:23;17249:5;:1;17253;17249:5;:::i;:::-;17232:6;;:16;:23::i;:::-;17215:40;;17270:94;17279:24;:6;:22;:24::i;:::-;17270:94;;17319:5;17325:1;17319:8;;;;;;;;;;:::i;:::-;;;;;;;;;17313:15;;17305:24;;17270:94;;;;;;;;;;;;;;;;;:8;:94::i;:::-;-1:-1:-1;17196:3:107;;;;:::i;:::-;;;;17159:216;;;-1:-1:-1;17388:12:107;17404:39;:6;17434:8;17404:29;:39::i;:::-;17385:58;;;17454:61;17463:5;17454:61;;17470:10;17454:61;;;;;;;;;;;;;;;;;;;:8;:61::i;4650:1322:69:-;4798:7;;;;4870:10;4879:1;4870:6;:10;:::i;:::-;4855:25;;;;4891:14;4915:23;4949:15;4967:8;4949:26;;;;5008:535;5022:4;5015:3;:11;5008:535;;5042:11;5072:1;5057:10;5063:4;5057:3;:10;:::i;:::-;5056:17;;5042:31;;5148:6;5143:3;5134:7;5127:28;5115:40;-1:-1:-1;5192:6:69;:24;;;;;;;;;;;:::i;:::-;;;5183:33;;5249:28;:6;:26;:28::i;:::-;5230:47;;5315:15;5296:34;;:16;:34;;;5292:241;;;5357:7;5363:1;5357:3;:7;:::i;:::-;5350:14;;5292:241;;;5408:15;5389:34;;:16;:34;;;5385:148;;;5449:7;:3;5455:1;5449:7;:::i;:::-;5443:13;;5385:148;;;5503:6;5511;5495:23;;;;;;;;;;;;5385:148;5028:515;5008:535;;;5575:16;5557:34;;:15;:34;;;5553:413;;;5639:8;:13;;5651:1;5639:13;5635:77;;5687:6;5676:17;;5635:77;5738:6;:28;-1:-1:-1;;5753:12:69;;5738:28;;;;;;;;;:::i;:::-;;;5768:6;5730:45;;;;;;;;;;;5553:413;5879:6;5876:1;5866:8;5859:27;5847:39;-1:-1:-1;5922:6:69;5930;:24;;;;;;;;;;;:::i;:::-;;;5914:41;;;;;;;;;4650:1322;;;;;;;;:::o;2984:1313::-;3116:17;3135:19;3156:27;3185;3229:20;3251:17;3272:40;3295:6;3303:8;3272:22;:40::i;:::-;3228:84;;-1:-1:-1;3228:84:69;-1:-1:-1;3327:77:69;;;:59;:6;3342:21;3228:84;3342:8;:21;:::i;:::-;3327:37;;;;;;;;;:::i;:::-;;;:57;:59::i;:::-;:77;;;3323:152;;;3427:37;;-1:-1:-1;;;3427:37:69;;;;;;;;;;;3323:152;3498:34;:12;:32;:34::i;:::-;3485:47;;3560:15;3546:29;;:10;:29;;;3542:328;;3616:10;3644:30;:12;:28;:30::i;:::-;3692:38;:12;:36;:38::i;:::-;3748;:12;:36;:38::i;:::-;3591:209;;;;;;;;;;;;3542:328;3844:15;3831:28;;3880:18;3900;3922:59;3935:6;3943:8;3953:15;3970:10;3922:12;:59::i;:::-;3879:102;;;;3991:17;4046:15;4011:32;:10;:30;:32::i;:::-;:50;;;;:::i;:::-;3991:70;;4071:17;4109:32;:10;:30;:32::i;:::-;4091:50;;:15;:50;:::i;:::-;4071:70;-1:-1:-1;4225:65:69;:10;4255;4267;4071:70;4225:29;:65::i;:::-;4152:138;;-1:-1:-1;4152:138:69;-1:-1:-1;4152:138:69;-1:-1:-1;;;;;;;2984:1313:69;;;;;;;;:::o;2915:199:10:-;2998:14;3033:19;3040:1;3043:3;3048;3033:6;:19::i;:::-;3024:28;;3062:45;;;;;;;;;;;;;;;;;;3100:6;3062:21;:45::i;9202:128:69:-;9270:8;:13;;9282:1;9270:13;9266:57;;9292:31;;-1:-1:-1;;;9292:31:69;;;;;;;;;;;4759:150:80;4825:15;1030:3;6098:20:76;;;4859:43:80;5960:188:76;4324:148:80;4390:14;4423:42;:6;970:3;3270:20:76;3292:10;3266:37;;3134:185;9626:135:79;9719:1;9700:20;;;;;9696:58;;9729:25;;-1:-1:-1;;;9729:25:79;;;;;;;;;;;9696:58;9626:135;;;:::o;8048:142:70:-;8108:15;1857:3;5648:20:76;;;8146:37:70;5510:188:76;5673:179:70;5746:28;5810:35;:6;1585:3;5198:20:76;5220:11;5194:38;;5060:188;8512:228:70;8588:6;8606:9;8618:19;8630:6;8618:11;:19::i;:::-;8606:31;;8689:2;8678:13;;:8;:13;;;:45;;8715:8;8710:2;:13;8678:45;;;8705:2;8694:8;:13;8678:45;8671:52;8512:228;-1:-1:-1;;;;8512:228:70:o;7570:665:80:-;7865:28;;;:16;;;;:28;;;7930:29;;;:41;;;8008:18;;:30;8075:23;8091:6;8075:15;:23::i;:::-;8059:39;;;;:::i;:::-;;;8132:31;8156:6;8132:23;:31::i;:::-;8108:55;;;;:::i;:::-;;;8197:31;8221:6;8197:23;:31::i;:::-;8173:55;;;;:::i;:::-;;;7570:665;;;;;;;;;:::o;2020:471:69:-;2139:20;2161:17;2209:27;2219:6;2227:8;2209:9;:27::i;:::-;2194:42;;2259:30;:12;:28;:30::i;:::-;2246:43;;2316:10;2304:22;;:8;:22;;;2300:185;;2355:47;:29;2365:6;2373:10;2355:9;:29::i;:47::-;2342:60;;2440:10;2429:21;;:8;:21;;;:45;;2464:10;2429:45;;;2453:8;2429:45;2416:58;;2300:185;2020:471;;;;;:::o;5204:170:80:-;5272:17;5342:25;5360:6;5342:17;:25::i;:::-;5314:53;;:25;5332:6;5314:17;:25::i;:::-;:53;;;;:::i;5884:1198::-;6025:24;6051:32;6085;6133:12;6148:24;6164:7;6148:15;:24::i;:::-;6133:39;;;;6182:20;6205:32;6229:7;6205:23;:32::i;:::-;6182:55;;;;6247:20;6270:32;6294:7;6270:23;:32::i;:::-;6247:55;;;;6317:7;:12;;6328:1;6317:12;6313:83;;6346:4;;-1:-1:-1;6360:12:80;-1:-1:-1;6382:12:80;-1:-1:-1;6331:65:80;;6313:83;6407:12;6422:24;6438:7;6422:15;:24::i;:::-;6407:39;;;;6456:20;6479:32;6503:7;6479:23;:32::i;:::-;6456:55;;;;6521:20;6544:32;6568:7;6544:23;:32::i;:::-;6521:55;;;;6591:7;:12;;6602:1;6591:12;6587:83;;6620:4;;-1:-1:-1;6634:12:80;-1:-1:-1;6656:12:80;-1:-1:-1;6605:65:80;;-1:-1:-1;;;6605:65:80;6587:83;6681:19;6703:26;;;;;;:16;;:26;:::i;:::-;6681:48;;6827:11;6816:7;6809:14;;:4;:14;6799:7;6792:14;;:4;:14;:31;6791:47;;;;;:::i;:::-;;6764:75;;6940:11;6929:7;6914:22;;:12;:22;6904:7;6889:22;;:12;:22;:47;6888:63;;;;;:::i;:::-;;6853:99;;7053:11;7042:7;7027:22;;:12;:22;7017:7;7002:22;;:12;:22;:47;7001:63;;;;;:::i;:::-;;6966:99;;6123:959;;;;;;;5884:1198;;;;;;;;;:::o;1646:1263:10:-;1730:14;1771:3;1764;:10;;1756:85;;;;-1:-1:-1;;;1756:85:10;;14446:2:127;1756:85:10;;;14428:21:127;14485:2;14465:18;;;14458:30;14524:34;14504:18;;;14497:62;14595:32;14575:18;;;14568:60;14645:19;;1756:85:10;;;;;;;;2075:3;2070:1;:8;;:20;;;;;2087:3;2082:1;:8;;2070:20;2066:34;;;-1:-1:-1;2099:1:10;2092:8;;2066:34;2111:12;2126:9;2132:3;2126;:9;:::i;:::-;:13;;2138:1;2126:13;:::i;:::-;2111:28;;2334:1;2329;:6;;:18;;;;;2346:1;2339:4;:8;2329:18;2325:38;;;2356:7;2362:1;2356:3;:7;:::i;:::-;2349:14;;;;;2325:38;2382:15;2396:1;-1:-1:-1;;2382:15:10;:::i;:::-;2377:1;:20;;:46;;;;-1:-1:-1;2408:15:10;2422:1;-1:-1:-1;;2408:15:10;:::i;:::-;2401:4;:22;2377:46;2373:82;;;2439:15;2453:1;-1:-1:-1;;2439:15:10;:::i;:::-;2432:23;;:3;:23;:::i;2373:82::-;2559:3;2555:1;:7;2551:352;;;2578:12;2593:7;2597:3;2593:1;:7;:::i;:::-;2578:22;-1:-1:-1;2614:11:10;2628;2635:4;2578:22;2628:11;:::i;:::-;2614:25;;2657:3;2664:1;2657:8;2653:24;;2674:3;2667:10;;;;;;;2653:24;2712:1;2700:9;2706:3;2700;:9;:::i;:::-;:13;;;;:::i;:::-;2691:22;;2564:160;;2551:352;;;2738:3;2734:1;:7;2730:173;;;2757:12;2772:7;2778:1;2772:3;:7;:::i;:::-;2757:22;-1:-1:-1;2793:11:10;2807;2814:4;2757:22;2807:11;:::i;:::-;2793:25;;2836:3;2843:1;2836:8;2832:24;;2853:3;2846:10;;;;;;;2832:24;2879:9;2885:3;2879;:9;:::i;:::-;:13;;2891:1;2879:13;:::i;:::-;2870:22;;2743:160;;2730:173;1746:1163;1646:1263;;;;;:::o;10318:162::-;10402:71;10465:2;10469;10418:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10418:54:10;;;;;;;;;;;;;;-1:-1:-1;;;;;10418:54:10;-1:-1:-1;;;10418:54:10;;;9719:55;9766:7;9885:14;;779:42;10059:2;10046:16;;9861:21;;9885:14;10046:16;779:42;10095:5;10084:68;10075:77;;10012:150;;9787:381;:::o;14:344:127:-;81:2;75:9;123:3;111:16;;157:18;142:34;;178:22;;;139:62;136:185;;;243:10;238:3;234:20;231:1;224:31;278:4;275:1;268:15;306:4;303:1;296:15;136:185;337:2;330:22;14:344;:::o;363:159::-;430:20;;490:6;479:18;;469:29;;459:57;;512:1;509;502:12;527:161;594:20;;654:8;643:20;;633:31;;623:59;;678:1;675;668:12;693:165;760:20;;820:12;809:24;;799:35;;789:63;;848:1;845;838:12;863:876;954:6;1007:3;995:9;986:7;982:23;978:33;975:53;;;1024:1;1021;1014:12;975:53;1050:17;;:::i;:::-;1090:28;1108:9;1090:28;:::i;:::-;1083:5;1076:43;1151:37;1184:2;1173:9;1169:18;1151:37;:::i;:::-;1146:2;1139:5;1135:14;1128:61;1221:37;1254:2;1243:9;1239:18;1221:37;:::i;:::-;1216:2;1209:5;1205:14;1198:61;1291:37;1324:2;1313:9;1309:18;1291:37;:::i;:::-;1286:2;1279:5;1275:14;1268:61;1362:38;1395:3;1384:9;1380:19;1362:38;:::i;:::-;1356:3;1349:5;1345:15;1338:63;1434:38;1467:3;1456:9;1452:19;1434:38;:::i;:::-;1428:3;1421:5;1417:15;1410:63;1506:38;1539:3;1528:9;1524:19;1506:38;:::i;:::-;1500:3;1493:5;1489:15;1482:63;1578:38;1611:3;1600:9;1596:19;1578:38;:::i;:::-;1572:3;1565:5;1561:15;1554:63;1636:3;1671:37;1704:2;1693:9;1689:18;1671:37;:::i;:::-;1655:14;;;1648:61;1659:5;863:876;-1:-1:-1;;;863:876:127:o;1744:681::-;1915:2;1967:21;;;2037:13;;1940:18;;;2059:22;;;1886:4;;1915:2;2138:15;;;;2112:2;2097:18;;;1886:4;2181:218;2195:6;2192:1;2189:13;2181:218;;;2260:13;;-1:-1:-1;;;;;2256:62:127;2244:75;;2374:15;;;;2339:12;;;;2217:1;2210:9;2181:218;;;-1:-1:-1;2416:3:127;;1744:681;-1:-1:-1;;;;;;1744:681:127:o;2430:423::-;2472:3;2510:5;2504:12;2537:6;2532:3;2525:19;2562:1;2572:162;2586:6;2583:1;2580:13;2572:162;;;2648:4;2704:13;;;2700:22;;2694:29;2676:11;;;2672:20;;2665:59;2601:12;2572:162;;;2576:3;2779:1;2772:4;2763:6;2758:3;2754:16;2750:27;2743:38;2842:4;2835:2;2831:7;2826:2;2818:6;2814:15;2810:29;2805:3;2801:39;2797:50;2790:57;;;2430:423;;;;:::o;2858:1765::-;3091:2;3143:21;;;3213:13;;3116:18;;;3235:22;;;3062:4;;3091:2;3276;;3294:18;;;;3331:1;3374:15;;;3359:31;;3355:40;;3418:15;;;3062:4;;3482:1112;3498:6;3493:3;3490:15;3482:1112;;;-1:-1:-1;;3567:22:127;;;3563:36;3551:49;;3623:13;;3710:9;;-1:-1:-1;;;;;3706:58:127;3691:74;;3804:11;;3798:18;3836:15;;;3829:27;;;3917:19;;3663:15;;;3949:24;;;4130:21;;;;3996:2;4078:17;;;4066:30;;4062:39;;;4020:15;;;;4175:1;4189:296;4205:8;4200:3;4197:17;4189:296;;;4311:2;4307:7;4298:6;4290;4286:19;4282:33;4275:5;4268:48;4343:42;4378:6;4367:8;4361:15;4343:42;:::i;:::-;4414:17;;;;4333:52;-1:-1:-1;4457:14:127;;;;4233:1;4224:11;4189:296;;;-1:-1:-1;;;4572:12:127;;;;4508:6;-1:-1:-1;;4537:15:127;;;;3524:1;3515:11;3482:1112;;;-1:-1:-1;4611:6:127;;2858:1765;-1:-1:-1;;;;;;;;;;2858:1765:127:o;4628:256::-;4694:6;4702;4755:2;4743:9;4734:7;4730:23;4726:32;4723:52;;;4771:1;4768;4761:12;4723:52;4794:28;4812:9;4794:28;:::i;:::-;4784:38;;4841:37;4874:2;4863:9;4859:18;4841:37;:::i;4889:1590::-;5091:4;5120:2;5160;5149:9;5145:18;5190:2;5179:9;5172:21;5213:6;5248;5242:13;5279:6;5271;5264:22;5305:2;5295:12;;5338:2;5327:9;5323:18;5316:25;;5400:2;5390:6;5387:1;5383:14;5372:9;5368:30;5364:39;5438:2;5430:6;5426:15;5459:1;5480;5490:960;5506:6;5501:3;5498:15;5490:960;;;5575:22;;;-1:-1:-1;;5571:36:127;5559:49;;5631:13;;5718:9;;-1:-1:-1;;;;;5714:58:127;5699:74;;5812:11;;5806:18;5844:15;;;5837:27;;;5925:19;;5671:15;;;5957:24;;;6047:21;;;;6092:1;;6015:2;6003:15;;;6106:236;6122:8;6117:3;6114:17;6106:236;;;6203:15;;6220:20;6199:42;6185:57;;6311:17;;;;6150:1;6141:11;;;;;6268:14;;;;6106:236;;;-1:-1:-1;6428:12:127;;;;6365:5;-1:-1:-1;;;6393:15:127;;;;5532:1;5523:11;5490:960;;;-1:-1:-1;6467:6:127;;4889:1590;-1:-1:-1;;;;;;;;;4889:1590:127:o;6484:180::-;6543:6;6596:2;6584:9;6575:7;6571:23;6567:32;6564:52;;;6612:1;6609;6602:12;6564:52;-1:-1:-1;6635:23:127;;6484:180;-1:-1:-1;6484:180:127:o;6669:803::-;6831:4;6860:2;6900;6889:9;6885:18;6930:2;6919:9;6912:21;6953:6;6988;6982:13;7019:6;7011;7004:22;7057:2;7046:9;7042:18;7035:25;;7119:2;7109:6;7106:1;7102:14;7091:9;7087:30;7083:39;7069:53;;7157:2;7149:6;7145:15;7178:1;7188:255;7202:6;7199:1;7196:13;7188:255;;;7295:2;7291:7;7279:9;7271:6;7267:22;7263:36;7258:3;7251:49;7323:40;7356:6;7347;7341:13;7323:40;:::i;:::-;7313:50;-1:-1:-1;7421:12:127;;;;7386:15;;;;7224:1;7217:9;7188:255;;;-1:-1:-1;7460:6:127;;6669:803;-1:-1:-1;;;;;;;6669:803:127:o;7477:252::-;7544:6;7552;7605:2;7593:9;7584:7;7580:23;7576:32;7573:52;;;7621:1;7618;7611:12;7573:52;7644:28;7662:9;7644:28;:::i;:::-;7634:38;7719:2;7704:18;;;;7691:32;;-1:-1:-1;;;7477:252:127:o;7926:127::-;7987:10;7982:3;7978:20;7975:1;7968:31;8018:4;8015:1;8008:15;8042:4;8039:1;8032:15;8058:177;8126:12;8171:10;;;8159;;;8155:27;;8194:12;;;8191:38;;;8209:18;;:::i;:::-;8191:38;8058:177;;;;:::o;8440:257::-;8511:18;8561:10;;;8573;;;8557:27;8604:20;;;;8511:18;8643:24;;;8633:58;;8671:18;;:::i;:::-;8633:58;;8440:257;;;;:::o;8702:127::-;8763:10;8758:3;8754:20;8751:1;8744:31;8794:4;8791:1;8784:15;8818:4;8815:1;8808:15;8834:179;8865:1;8891:6;8924:2;8921:1;8917:10;8946:3;8936:37;;8953:18;;:::i;:::-;8991:10;;8987:20;;;;;8834:179;-1:-1:-1;;8834:179:127:o;9018:125::-;9083:9;;;9104:10;;;9101:36;;;9117:18;;:::i;9148:173::-;9216:8;9257:10;;;9245;;;9241:27;;9280:12;;;9277:38;;;9295:18;;:::i;9326:180::-;9393:18;9431:10;;;9443;;;9427:27;;9466:11;;;9463:37;;;9480:18;;:::i;9511:380::-;9590:1;9586:12;;;;9633;;;9654:61;;9708:4;9700:6;9696:17;9686:27;;9654:61;9761:2;9753:6;9750:14;9730:18;9727:38;9724:161;;9807:10;9802:3;9798:20;9795:1;9788:31;9842:4;9839:1;9832:15;9870:4;9867:1;9860:15;9724:161;;9511:380;;;:::o;12024:171::-;12092:6;12131:10;;;12119;;;12115:27;;12154:12;;;12151:38;;;12169:18;;:::i;12200:127::-;12261:10;12256:3;12252:20;12249:1;12242:31;12292:4;12289:1;12282:15;12316:4;12313:1;12306:15;12634:184;12704:6;12757:2;12745:9;12736:7;12732:23;12728:32;12725:52;;;12773:1;12770;12763:12;12725:52;-1:-1:-1;12796:16:127;;12634:184;-1:-1:-1;12634:184:127:o;12823:174::-;12890:12;12922:10;;;12934;;;12918:27;;12957:11;;;12954:37;;;12971:18;;:::i;13002:362::-;13207:6;13196:9;13189:25;13250:6;13245:2;13234:9;13230:18;13223:34;13293:2;13288;13277:9;13273:18;13266:30;13170:4;13313:45;13354:2;13343:9;13339:18;13331:6;13313:45;:::i;:::-;13305:53;13002:362;-1:-1:-1;;;;;13002:362:127:o;13736:168::-;13803:6;13829:10;;;13841;;;13825:27;;13864:11;;;13861:37;;;13878:18;;:::i;13909:197::-;13947:3;13975:6;14016:2;14009:5;14005:14;14043:2;14034:7;14031:15;14028:41;;14049:18;;:::i;:::-;14098:1;14085:15;;13909:197;-1:-1:-1;;;13909:197:127:o;14111:128::-;14178:9;;;14199:11;;;14196:37;;;14213:18;;:::i;14675:112::-;14707:1;14733;14723:35;;14738:18;;:::i;:::-;-1:-1:-1;14772:9:127;;14675:112::o;14792:291::-;14969:2;14958:9;14951:21;14932:4;14989:45;15030:2;15019:9;15015:18;15007:6;14989:45;:::i;:::-;14981:53;;15070:6;15065:2;15054:9;15050:18;15043:34;14792:291;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_IncreaseOracleLength(uint16,uint16)":"8ce568bc","testFuzz_SetAndGetSample(uint16,bytes32)":"b418666a","testFuzz_UpdateDeltaTsGreaterThan2Minutes((uint16,uint16,uint24,uint24,uint24,uint24,uint24,uint40,uint40))":"170da07b","testFuzz_UpdateDeltaTsLowerThan2Minutes((uint16,uint16,uint24,uint24,uint24,uint24,uint24,uint40,uint40))":"be0c7169","testFuzz_revert_IncreaseOracleLength(uint16,uint16)":"4b3fa708","testFuzz_revert_SetAndGetSample(bytes32)":"70000970","test_BinarySearchCircular()":"ebece22e","test_BinarySearchSimple()":"5f803ec3","test_GetSampleAtFullyInitialized()":"adadc895","test_GetSampleAtNotFullyInitialized()":"3d9ab563","test_revert_BinarySearch()":"a2dc1b07","test_revert_IncreaseOracleLength()":"6f06b2a9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OracleHelper__InvalidOracleId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleHelper__LookUpTimestampTooOld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleHelper__NewLengthTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds40Bits\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"length\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"newLength\",\"type\":\"uint16\"}],\"name\":\"testFuzz_IncreaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"oracleId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_SetAndGetSample\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"oracleLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"oracleId\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"previousActiveId\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"previousVolatility\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatility\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"previousBinCrossed\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"createdAt\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"timestamp\",\"type\":\"uint40\"}],\"internalType\":\"struct OracleHelperTest.Updateinputs\",\"name\":\"inputs\",\"type\":\"tuple\"}],\"name\":\"testFuzz_UpdateDeltaTsGreaterThan2Minutes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"oracleLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"oracleId\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"previousActiveId\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"previousVolatility\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatility\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"previousBinCrossed\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"createdAt\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"timestamp\",\"type\":\"uint40\"}],\"internalType\":\"struct OracleHelperTest.Updateinputs\",\"name\":\"inputs\",\"type\":\"tuple\"}],\"name\":\"testFuzz_UpdateDeltaTsLowerThan2Minutes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"length\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"newLength\",\"type\":\"uint16\"}],\"name\":\"testFuzz_revert_IncreaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_revert_SetAndGetSample\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BinarySearchCircular\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_BinarySearchSimple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetSampleAtFullyInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_GetSampleAtNotFullyInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_BinarySearch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_IncreaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/OracleHelper.t.sol\":\"OracleHelperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"test/libraries/OracleHelper.t.sol\":{\"keccak256\":\"0x70b7751b08bf1365d0b446040684edfa970330593c048e2a67a43fe5cd354ca5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b38c59cca04b7fe7ad40f1015a1f5dcaeef87ccc9fb5f053f0bb01b797f4004\",\"dweb:/ipfs/QmWXtxHfeXeiGMDaFGf7p93dsiThszucgxVKPNW5LUL3hU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"OracleHelper__InvalidOracleId"},{"inputs":[],"type":"error","name":"OracleHelper__LookUpTimestampTooOld"},{"inputs":[],"type":"error","name":"OracleHelper__NewLengthTooSmall"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds40Bits"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint16","name":"length","type":"uint16"},{"internalType":"uint16","name":"newLength","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_IncreaseOracleLength"},{"inputs":[{"internalType":"uint16","name":"oracleId","type":"uint16"},{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SetAndGetSample"},{"inputs":[{"internalType":"struct OracleHelperTest.Updateinputs","name":"inputs","type":"tuple","components":[{"internalType":"uint16","name":"oracleLength","type":"uint16"},{"internalType":"uint16","name":"oracleId","type":"uint16"},{"internalType":"uint24","name":"previousActiveId","type":"uint24"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint24","name":"previousVolatility","type":"uint24"},{"internalType":"uint24","name":"volatility","type":"uint24"},{"internalType":"uint24","name":"previousBinCrossed","type":"uint24"},{"internalType":"uint40","name":"createdAt","type":"uint40"},{"internalType":"uint40","name":"timestamp","type":"uint40"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_UpdateDeltaTsGreaterThan2Minutes"},{"inputs":[{"internalType":"struct OracleHelperTest.Updateinputs","name":"inputs","type":"tuple","components":[{"internalType":"uint16","name":"oracleLength","type":"uint16"},{"internalType":"uint16","name":"oracleId","type":"uint16"},{"internalType":"uint24","name":"previousActiveId","type":"uint24"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint24","name":"previousVolatility","type":"uint24"},{"internalType":"uint24","name":"volatility","type":"uint24"},{"internalType":"uint24","name":"previousBinCrossed","type":"uint24"},{"internalType":"uint40","name":"createdAt","type":"uint40"},{"internalType":"uint40","name":"timestamp","type":"uint40"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_UpdateDeltaTsLowerThan2Minutes"},{"inputs":[{"internalType":"uint16","name":"length","type":"uint16"},{"internalType":"uint16","name":"newLength","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_IncreaseOracleLength"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_SetAndGetSample"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BinarySearchCircular"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_BinarySearchSimple"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_GetSampleAtFullyInitialized"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_GetSampleAtNotFullyInitialized"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_BinarySearch"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_IncreaseOracleLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/OracleHelper.t.sol":"OracleHelperTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"test/libraries/OracleHelper.t.sol":{"keccak256":"0x70b7751b08bf1365d0b446040684edfa970330593c048e2a67a43fe5cd354ca5","urls":["bzz-raw://2b38c59cca04b7fe7ad40f1015a1f5dcaeef87ccc9fb5f053f0bb01b797f4004","dweb:/ipfs/QmWXtxHfeXeiGMDaFGf7p93dsiThszucgxVKPNW5LUL3hU"],"license":"MIT"}},"version":1},"id":107} \ No newline at end of file diff --git a/abi/Ownable.sol/Ownable.json b/abi/Ownable.sol/Ownable.json deleted file mode 100644 index 97e85726..00000000 --- a/abi/Ownable.sol/Ownable.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":"Ownable"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":25} \ No newline at end of file diff --git a/abi/Ownable2Step.sol/Ownable2Step.json b/abi/Ownable2Step.sol/Ownable2Step.json deleted file mode 100644 index 2f2d46e9..00000000 --- a/abi/Ownable2Step.sol/Ownable2Step.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOwnership()":"79ba5097","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. This extension of the {Ownable} contract includes a two-step mechanism to transfer ownership, where the new owner must call {acceptOwnership} in order to replace the old one. This can help prevent common mistakes, such as transfers of ownership to incorrect accounts, or to contracts that are unable to interact with the permission system. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":\"Ownable2Step\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":"Ownable2Step"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/abi/PackedUint128Math.sol/PackedUint128Math.json b/abi/PackedUint128Math.sol/PackedUint128Math.json deleted file mode 100644 index bdd18b01..00000000 --- a/abi/PackedUint128Math.sol/PackedUint128Math.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"PackedUint128Math__AddOverflow","inputs":[]},{"type":"error","name":"PackedUint128Math__MultiplierTooLarge","inputs":[]},{"type":"error","name":"PackedUint128Math__SubUnderflow","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e5fb7dc862d784f809b89c623c6a6f94c28bbfa6bf430f01f0a87a3b6ec7ced464736f6c63430008140033","sourceMap":"333:8226:78:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;333:8226:78;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e5fb7dc862d784f809b89c623c6a6f94c28bbfa6bf430f01f0a87a3b6ec7ced464736f6c63430008140033","sourceMap":"333:8226:78:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PackedUint128Math__AddOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__MultiplierTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__SubUnderflow\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Packed Uint128 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to encode and decode two uint128 into a single bytes32 and interact with the encoded bytes32.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/PackedUint128Math.sol\":\"PackedUint128Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"PackedUint128Math__AddOverflow"},{"inputs":[],"type":"error","name":"PackedUint128Math__MultiplierTooLarge"},{"inputs":[],"type":"error","name":"PackedUint128Math__SubUnderflow"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/PackedUint128Math.sol":"PackedUint128Math"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"}},"version":1},"id":78} \ No newline at end of file diff --git a/abi/PackedUint128Math.t.sol/PackedUint128MathTest.json b/abi/PackedUint128Math.t.sol/PackedUint128MathTest.json deleted file mode 100644 index 10ed89ba..00000000 --- a/abi/PackedUint128Math.t.sol/PackedUint128MathTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_Add","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_Decode","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_DecodeBool","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"first","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_Encode","inputs":[{"name":"x1","type":"uint128","internalType":"uint128"},{"name":"x2","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_EncodeBool","inputs":[{"name":"x","type":"uint128","internalType":"uint128"},{"name":"first","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_EncodeFirst","inputs":[{"name":"x1","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_EncodeSecond","inputs":[{"name":"x2","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GreaterThan","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_LessThan","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_ScalarMulDivBasisPointRoundDown","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"multipilier","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_Sub","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"},{"name":"y","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_decodeX","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_decodeY","inputs":[{"name":"x","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_AddOverflow","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_AddSelf","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_SubSelf","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_SubUnderflow","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"PackedUint128Math__AddOverflow","inputs":[]},{"type":"error","name":"PackedUint128Math__MultiplierTooLarge","inputs":[]},{"type":"error","name":"PackedUint128Math__SubUnderflow","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506121ac8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806373270c07116100f95780639824467d11610097578063c83cdc6411610071578063c83cdc641461033e578063d4f15efd14610351578063e20c9f7114610364578063f091df331461036c57600080fd5b80639824467d1461030b578063b5508aa91461031e578063ba414fa61461032657600080fd5b806385226c81116100d357806385226c81146102d35780638564ed26146102e857806387e25ea7146102fb578063916a17c61461030357600080fd5b806373270c07146102a55780637466b8ac146102b857806376a95679146102cb57600080fd5b80633f7286f4116101665780635575df2b116101405780635575df2b146102625780635e1fc0751461027557806366d9a9a0146102885780636ab77c011461029d57600080fd5b80633f7286f4146102345780634b5eeccb1461023c5780634f495fcc1461024f57600080fd5b8063240d13de11610197578063240d13de146102045780632ade3880146102175780633e5e3c231461022c57600080fd5b806301255dee146101be5780631213a182146101d35780631ed7831c146101e6575b600080fd5b6101d16101cc366004611c38565b610374565b005b6101d16101e1366004611c53565b6103c0565b6101ee610459565b6040516101fb9190611c75565b60405180910390f35b6101d1610212366004611cc2565b6104bb565b61021f61064c565b6040516101fb9190611d34565b6101ee61078e565b6101ee6107ee565b6101d161024a366004611c53565b61084e565b6101d161025d366004611c38565b6109b5565b6101d1610270366004611e04565b610a0c565b6101d1610283366004611e2e565b610a7b565b610290610ac8565b6040516101fb9190611e47565b6101d1610bc3565b6101d16102b3366004611f12565b610c1e565b6101d16102c6366004611c53565b610c8d565b6101d1610dc0565b6102db610e2b565b6040516101fb9190611f35565b6101d16102f6366004611c53565b610efb565b6101d1610f8c565b610290611205565b6101d1610319366004611e2e565b611300565b6102db611352565b61032e611422565b60405190151581526020016101fb565b6101d161034c366004611e2e565b6114dd565b6101d161035f366004611f97565b611582565b6101ee6115e8565b6101d1611648565b6103bd6001600160801b038216806040518060400160405280601781526020017f7465737446757a7a5f456e636f646546697273743a3a31000000000000000000815250611961565b50565b6001600160801b0382811690608084811c9184169084901c6104516103e587876119c8565b836001600160801b0316866001600160801b031610806104165750826001600160801b0316856001600160801b0316105b6040518060400160405280601481526020017f7465737446757a7a5f4c6573735468616e3a3a31000000000000000000000000815250611a0e565b505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156104b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610493575b5050505050905090565b6001600160801b0382811690608084901c906000906104dc90851684611fd7565b905060006104f66001600160801b03808716908516611fd7565b9050600061050661271084611fee565b9050600061051661271084611fee565b9050612710876001600160801b031611156105af57604051630618f58760e51b8152631514a94960e21b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050506105a98789611a4990919063ffffffff16565b50610642565b6105db826001600160801b0380166040518060600160405280602b8152602001612121602b9139611ab5565b610607816001600160801b0380166040518060600160405280602b815260200161214c602b9139611ab5565b6106426106148989611a49565b608083901b6001600160801b038516176040518060600160405280602b81526020016120f6602b9139611961565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561078557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561076e5783829060005260206000200180546106e190612010565b80601f016020809104026020016040519081016040528092919081815260200182805461070d90612010565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b5050505050815260200190600101906106c2565b505050508152505081526020019060010190610670565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156104b1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610493575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156104b1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610493575050505050905090565b81608081811c90839081901c61086b826001600160801b0361204a565b6001600160801b0316846001600160801b0316111580156108ae5750610898816001600160801b0361204a565b6001600160801b0316836001600160801b031611155b1561092e576109296108c08787611af0565b60806108cc8487612071565b6001600160801b0316901b6108e18588612071565b6001600160801b03161760001b6040518060400160405280600f81526020017f7465737446757a7a5f4164643a3a310000000000000000000000000000000000815250611961565b610451565b604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b505050506109ac8587611af090919063ffffffff16565b50505050505050565b6103bd608082901b6fffffffffffffffffffffffffffffffff1916806040518060400160405280601881526020017f7465737446757a7a5f456e636f64655365636f6e643a3a310000000000000000815250611961565b610a7781610a1b576080610a1e565b60005b6001600160801b03841660ff9190911681901b90610a3c9084611b2a565b6040518060400160405280601681526020017f7465737446757a7a5f456e636f6465426f6f6c3a3a3100000000000000000000815250611961565b5050565b6103bd608082901c806001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f6465636f6465593a3a3100000000000000000000000000815250611b52565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156107855760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610bab57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610b585790505b50505050508152505081526020019060010190610aec565b7001000000000000000000000000000000016103bd610be28280611b8d565b60408051808201909152600f81527f746573745f53756253656c663a3a3100000000000000000000000000000000006020820152600090611961565b610a7781610c2d576080610c30565b60005b60ff1683901c6001600160801b0316610c498484611bc7565b6001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f4465636f6465426f6f6c3a3a3100000000000000000000815250611b52565b81608081811c90839081901c6001600160801b0380831690851610801590610cc75750806001600160801b0316836001600160801b031610155b15610d4257610929610cd98787611b8d565b6080610ce5848761204a565b6001600160801b0316901b610cfa858861204a565b6001600160801b03161760001b6040518060400160405280600f81526020017f7465737446757a7a5f5375623a3a310000000000000000000000000000000000815250611961565b604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b505050506109ac8587611b8d90919063ffffffff16565b7001000000000000000000000000000000016103bd610ddf8280611af0565b60408051808201909152600f81527f746573745f41646453656c663a3a310000000000000000000000000000000000602082015270020000000000000000000000000000000290611961565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610785578382906000526020600020018054610e6e90612010565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9a90612010565b8015610ee75780601f10610ebc57610100808354040283529160200191610ee7565b820191906000526020600020905b815481529060010190602001808311610eca57829003601f168201915b505050505081526020019060010190610e4f565b6001600160801b0382811690608084811c9184169084901c610451610f208787611bd8565b836001600160801b0316866001600160801b03161180610f515750826001600160801b0316856001600160801b0316115b6040518060400160405280601781526020017f7465737446757a7a5f477265617465725468616e3a3a31000000000000000000815250611a0e565b60006001600160801b700100000000000000000000000000000001610ff0610fb48486611b8d565b846040518060400160405280601481526020017f746573745f537562556e646572666c6f773a3a31000000000000000000000000815250611961565b611039610ffd8386611b8d565b836040518060400160405280601481526020017f746573745f537562556e646572666c6f773a3a32000000000000000000000000815250611961565b6110826110468286611b8d565b826040518060400160405280601481526020017f746573745f537562556e646572666c6f773a3a33000000000000000000000000815250611961565b604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506111008385611b8d90919063ffffffff16565b50604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561115457600080fd5b505af1158015611168573d6000803e3d6000fd5b5050505061117f8285611b8d90919063ffffffff16565b50604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b505050506111fe8185611b8d90919063ffffffff16565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156107855760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112e857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116112955790505b50505050508152505081526020019060010190611229565b6103bd6001600160801b038216806001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f6465636f6465583a3a3100000000000000000000000000815250611b52565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561078557838290600052602060002001805461139590612010565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190612010565b801561140e5780601f106113e35761010080835404028352916020019161140e565b820191906000526020600020905b8154815290600101906020018083116113f157829003601f168201915b505050505081526020019060010190611376565b60075460009060ff161561143a575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612091565b1415905090565b60408051808201909152601281527f7465737446757a7a5f4465636f64653a3a31000000000000000000000000000060208201526001600160801b03821690608083901c9061152f9083908190611b52565b60408051808201909152601281527f7465737446757a7a5f4465636f64653a3a320000000000000000000000000000602082015261157d906001600160801b03831690608086901c90611b52565b505050565b610a77608082901b6fffffffffffffffffffffffffffffffff1981166001600160801b03851690811791176040518060400160405280601281526020017f7465737446757a7a5f456e636f64653a3a310000000000000000000000000000815250611961565b606060138054806020026020016040519081016040528092919081815260200182805480156104b1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610493575050505050905090565b604051630618f58760e51b81526316692de960e01b600482015260001990600190600160801b9070010000000000000000000000000000000190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116bb57600080fd5b505af11580156116cf573d6000803e3d6000fd5b505050506116e68385611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506117658285611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156117b957600080fd5b505af11580156117cd573d6000803e3d6000fd5b505050506117e48185611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561183857600080fd5b505af115801561184c573d6000803e3d6000fd5b505050506118638484611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506118e28483611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b505050506111fe8482611af090919063ffffffff16565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed09061199c908690869086906004016120aa565b60006040518083038186803b1580156119b457600080fd5b505afa1580156109ac573d6000803e3d6000fd5b60006001600160801b0383811690608085811c9185169085901c81841080611a015750806001600160801b0316836001600160801b0316105b9450505050505b92915050565b6040516326d8cf3f60e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634db19e7e9061199c908690869086906004016120d2565b6000816001600160801b0316600003611a6457506000611a08565b6127106001600160801b038316811015611a9157604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900416608094851c939093020490921b17919050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d9061199c908690869086906004016120aa565b81810182811080611b0c57506001600160801b03808416908216105b15611a08576040516316692de960e01b815260040160405180910390fd5b600081611b4057611b3b8360801b90565b611b4b565b6001600160801b0383165b9392505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859061199c908690869086906004016120aa565b80820382811180611ba957506001600160801b03808416908216115b15611a085760405163e599af5560e01b815260040160405180910390fd5b600081611b4057611b3b8360801c90565b60006001600160801b0383811690608085811c9185169085901c81841180611a015750806001600160801b0316836001600160801b03161194505050505092915050565b80356001600160801b0381168114611c3357600080fd5b919050565b600060208284031215611c4a57600080fd5b611b4b82611c1c565b60008060408385031215611c6657600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015611cb65783516001600160a01b031683529284019291840191600101611c91565b50909695505050505050565b60008060408385031215611cd557600080fd5b82359150611ce560208401611c1c565b90509250929050565b6000815180845260005b81811015611d1457602081850181015186830182015201611cf8565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611de457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611dce57605f19898503018352611dbc848651611cee565b948e01949350918d0191600101611da0565b505050978a019794505091880191600101611d5b565b50919a9950505050505050505050565b80358015158114611c3357600080fd5b60008060408385031215611e1757600080fd5b611e2083611c1c565b9150611ce560208401611df4565b600060208284031215611e4057600080fd5b5035919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611f0357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611eee5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611eac565b50978a01979550505091870191600101611e6f565b50919998505050505050505050565b60008060408385031215611f2557600080fd5b82359150611ce560208401611df4565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611f8a57603f19888603018452611f78858351611cee565b94509285019290850190600101611f5c565b5092979650505050505050565b60008060408385031215611faa57600080fd5b611fb383611c1c565b9150611ce560208401611c1c565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611a0857611a08611fc1565b60008261200b57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061202457607f821691505b60208210810361204457634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160801b0382811682821603908082111561206a5761206a611fc1565b5092915050565b6001600160801b0381811683821601908082111561206a5761206a611fc1565b6000602082840312156120a357600080fd5b5051919050565b8381528260208201526060604082015260006120c96060830184611cee565b95945050505050565b831515815282151560208201526060604082015260006120c96060830184611cee56fe7465737446757a7a5f5363616c61724d756c4469764261736973506f696e74526f756e64446f776e3a3a337465737446757a7a5f5363616c61724d756c4469764261736973506f696e74526f756e64446f776e3a3a317465737446757a7a5f5363616c61724d756c4469764261736973506f696e74526f756e64446f776e3a3a32a264697066735822122092ca6d235ca3af116121fdbc66b127022dbd29e65ef8139abec9c3f472fe733864736f6c63430008140033","sourceMap":"150:5961:115:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;150:5961:115;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101b95760003560e01c806373270c07116100f95780639824467d11610097578063c83cdc6411610071578063c83cdc641461033e578063d4f15efd14610351578063e20c9f7114610364578063f091df331461036c57600080fd5b80639824467d1461030b578063b5508aa91461031e578063ba414fa61461032657600080fd5b806385226c81116100d357806385226c81146102d35780638564ed26146102e857806387e25ea7146102fb578063916a17c61461030357600080fd5b806373270c07146102a55780637466b8ac146102b857806376a95679146102cb57600080fd5b80633f7286f4116101665780635575df2b116101405780635575df2b146102625780635e1fc0751461027557806366d9a9a0146102885780636ab77c011461029d57600080fd5b80633f7286f4146102345780634b5eeccb1461023c5780634f495fcc1461024f57600080fd5b8063240d13de11610197578063240d13de146102045780632ade3880146102175780633e5e3c231461022c57600080fd5b806301255dee146101be5780631213a182146101d35780631ed7831c146101e6575b600080fd5b6101d16101cc366004611c38565b610374565b005b6101d16101e1366004611c53565b6103c0565b6101ee610459565b6040516101fb9190611c75565b60405180910390f35b6101d1610212366004611cc2565b6104bb565b61021f61064c565b6040516101fb9190611d34565b6101ee61078e565b6101ee6107ee565b6101d161024a366004611c53565b61084e565b6101d161025d366004611c38565b6109b5565b6101d1610270366004611e04565b610a0c565b6101d1610283366004611e2e565b610a7b565b610290610ac8565b6040516101fb9190611e47565b6101d1610bc3565b6101d16102b3366004611f12565b610c1e565b6101d16102c6366004611c53565b610c8d565b6101d1610dc0565b6102db610e2b565b6040516101fb9190611f35565b6101d16102f6366004611c53565b610efb565b6101d1610f8c565b610290611205565b6101d1610319366004611e2e565b611300565b6102db611352565b61032e611422565b60405190151581526020016101fb565b6101d161034c366004611e2e565b6114dd565b6101d161035f366004611f97565b611582565b6101ee6115e8565b6101d1611648565b6103bd6001600160801b038216806040518060400160405280601781526020017f7465737446757a7a5f456e636f646546697273743a3a31000000000000000000815250611961565b50565b6001600160801b0382811690608084811c9184169084901c6104516103e587876119c8565b836001600160801b0316866001600160801b031610806104165750826001600160801b0316856001600160801b0316105b6040518060400160405280601481526020017f7465737446757a7a5f4c6573735468616e3a3a31000000000000000000000000815250611a0e565b505050505050565b606060148054806020026020016040519081016040528092919081815260200182805480156104b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610493575b5050505050905090565b6001600160801b0382811690608084901c906000906104dc90851684611fd7565b905060006104f66001600160801b03808716908516611fd7565b9050600061050661271084611fee565b9050600061051661271084611fee565b9050612710876001600160801b031611156105af57604051630618f58760e51b8152631514a94960e21b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050506105a98789611a4990919063ffffffff16565b50610642565b6105db826001600160801b0380166040518060600160405280602b8152602001612121602b9139611ab5565b610607816001600160801b0380166040518060600160405280602b815260200161214c602b9139611ab5565b6106426106148989611a49565b608083901b6001600160801b038516176040518060600160405280602b81526020016120f6602b9139611961565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561078557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561076e5783829060005260206000200180546106e190612010565b80601f016020809104026020016040519081016040528092919081815260200182805461070d90612010565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b5050505050815260200190600101906106c2565b505050508152505081526020019060010190610670565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156104b1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610493575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156104b1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610493575050505050905090565b81608081811c90839081901c61086b826001600160801b0361204a565b6001600160801b0316846001600160801b0316111580156108ae5750610898816001600160801b0361204a565b6001600160801b0316836001600160801b031611155b1561092e576109296108c08787611af0565b60806108cc8487612071565b6001600160801b0316901b6108e18588612071565b6001600160801b03161760001b6040518060400160405280600f81526020017f7465737446757a7a5f4164643a3a310000000000000000000000000000000000815250611961565b610451565b604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561098157600080fd5b505af1158015610995573d6000803e3d6000fd5b505050506109ac8587611af090919063ffffffff16565b50505050505050565b6103bd608082901b6fffffffffffffffffffffffffffffffff1916806040518060400160405280601881526020017f7465737446757a7a5f456e636f64655365636f6e643a3a310000000000000000815250611961565b610a7781610a1b576080610a1e565b60005b6001600160801b03841660ff9190911681901b90610a3c9084611b2a565b6040518060400160405280601681526020017f7465737446757a7a5f456e636f6465426f6f6c3a3a3100000000000000000000815250611961565b5050565b6103bd608082901c806001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f6465636f6465593a3a3100000000000000000000000000815250611b52565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156107855760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610bab57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610b585790505b50505050508152505081526020019060010190610aec565b7001000000000000000000000000000000016103bd610be28280611b8d565b60408051808201909152600f81527f746573745f53756253656c663a3a3100000000000000000000000000000000006020820152600090611961565b610a7781610c2d576080610c30565b60005b60ff1683901c6001600160801b0316610c498484611bc7565b6001600160801b03166040518060400160405280601681526020017f7465737446757a7a5f4465636f6465426f6f6c3a3a3100000000000000000000815250611b52565b81608081811c90839081901c6001600160801b0380831690851610801590610cc75750806001600160801b0316836001600160801b031610155b15610d4257610929610cd98787611b8d565b6080610ce5848761204a565b6001600160801b0316901b610cfa858861204a565b6001600160801b03161760001b6040518060400160405280600f81526020017f7465737446757a7a5f5375623a3a310000000000000000000000000000000000815250611961565b604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b505050506109ac8587611b8d90919063ffffffff16565b7001000000000000000000000000000000016103bd610ddf8280611af0565b60408051808201909152600f81527f746573745f41646453656c663a3a310000000000000000000000000000000000602082015270020000000000000000000000000000000290611961565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610785578382906000526020600020018054610e6e90612010565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9a90612010565b8015610ee75780601f10610ebc57610100808354040283529160200191610ee7565b820191906000526020600020905b815481529060010190602001808311610eca57829003601f168201915b505050505081526020019060010190610e4f565b6001600160801b0382811690608084811c9184169084901c610451610f208787611bd8565b836001600160801b0316866001600160801b03161180610f515750826001600160801b0316856001600160801b0316115b6040518060400160405280601781526020017f7465737446757a7a5f477265617465725468616e3a3a31000000000000000000815250611a0e565b60006001600160801b700100000000000000000000000000000001610ff0610fb48486611b8d565b846040518060400160405280601481526020017f746573745f537562556e646572666c6f773a3a31000000000000000000000000815250611961565b611039610ffd8386611b8d565b836040518060400160405280601481526020017f746573745f537562556e646572666c6f773a3a32000000000000000000000000815250611961565b6110826110468286611b8d565b826040518060400160405280601481526020017f746573745f537562556e646572666c6f773a3a33000000000000000000000000815250611961565b604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156110d557600080fd5b505af11580156110e9573d6000803e3d6000fd5b505050506111008385611b8d90919063ffffffff16565b50604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561115457600080fd5b505af1158015611168573d6000803e3d6000fd5b5050505061117f8285611b8d90919063ffffffff16565b50604051630618f58760e51b815263e599af5560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b505050506111fe8185611b8d90919063ffffffff16565b5050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156107855760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156112e857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116112955790505b50505050508152505081526020019060010190611229565b6103bd6001600160801b038216806001600160801b03166040518060400160405280601381526020017f7465737446757a7a5f6465636f6465583a3a3100000000000000000000000000815250611b52565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561078557838290600052602060002001805461139590612010565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190612010565b801561140e5780601f106113e35761010080835404028352916020019161140e565b820191906000526020600020905b8154815290600101906020018083116113f157829003601f168201915b505050505081526020019060010190611376565b60075460009060ff161561143a575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612091565b1415905090565b60408051808201909152601281527f7465737446757a7a5f4465636f64653a3a31000000000000000000000000000060208201526001600160801b03821690608083901c9061152f9083908190611b52565b60408051808201909152601281527f7465737446757a7a5f4465636f64653a3a320000000000000000000000000000602082015261157d906001600160801b03831690608086901c90611b52565b505050565b610a77608082901b6fffffffffffffffffffffffffffffffff1981166001600160801b03851690811791176040518060400160405280601281526020017f7465737446757a7a5f456e636f64653a3a310000000000000000000000000000815250611961565b606060138054806020026020016040519081016040528092919081815260200182805480156104b1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610493575050505050905090565b604051630618f58760e51b81526316692de960e01b600482015260001990600190600160801b9070010000000000000000000000000000000190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156116bb57600080fd5b505af11580156116cf573d6000803e3d6000fd5b505050506116e68385611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506117658285611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156117b957600080fd5b505af11580156117cd573d6000803e3d6000fd5b505050506117e48185611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561183857600080fd5b505af115801561184c573d6000803e3d6000fd5b505050506118638484611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506118e28483611af090919063ffffffff16565b50604051630618f58760e51b81526316692de960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561193657600080fd5b505af115801561194a573d6000803e3d6000fd5b505050506111fe8482611af090919063ffffffff16565b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed09061199c908690869086906004016120aa565b60006040518083038186803b1580156119b457600080fd5b505afa1580156109ac573d6000803e3d6000fd5b60006001600160801b0383811690608085811c9185169085901c81841080611a015750806001600160801b0316836001600160801b0316105b9450505050505b92915050565b6040516326d8cf3f60e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634db19e7e9061199c908690869086906004016120d2565b6000816001600160801b0316600003611a6457506000611a08565b6127106001600160801b038316811015611a9157604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900416608094851c939093020490921b17919050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d9061199c908690869086906004016120aa565b81810182811080611b0c57506001600160801b03808416908216105b15611a08576040516316692de960e01b815260040160405180910390fd5b600081611b4057611b3b8360801b90565b611b4b565b6001600160801b0383165b9392505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859061199c908690869086906004016120aa565b80820382811180611ba957506001600160801b03808416908216115b15611a085760405163e599af5560e01b815260040160405180910390fd5b600081611b4057611b3b8360801c90565b60006001600160801b0383811690608085811c9185169085901c81841180611a015750806001600160801b0316836001600160801b03161194505050505092915050565b80356001600160801b0381168114611c3357600080fd5b919050565b600060208284031215611c4a57600080fd5b611b4b82611c1c565b60008060408385031215611c6657600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015611cb65783516001600160a01b031683529284019291840191600101611c91565b50909695505050505050565b60008060408385031215611cd557600080fd5b82359150611ce560208401611c1c565b90509250929050565b6000815180845260005b81811015611d1457602081850181015186830182015201611cf8565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611de457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611dce57605f19898503018352611dbc848651611cee565b948e01949350918d0191600101611da0565b505050978a019794505091880191600101611d5b565b50919a9950505050505050505050565b80358015158114611c3357600080fd5b60008060408385031215611e1757600080fd5b611e2083611c1c565b9150611ce560208401611df4565b600060208284031215611e4057600080fd5b5035919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611f0357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611eee5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611eac565b50978a01979550505091870191600101611e6f565b50919998505050505050505050565b60008060408385031215611f2557600080fd5b82359150611ce560208401611df4565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611f8a57603f19888603018452611f78858351611cee565b94509285019290850190600101611f5c565b5092979650505050505050565b60008060408385031215611faa57600080fd5b611fb383611c1c565b9150611ce560208401611c1c565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611a0857611a08611fc1565b60008261200b57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061202457607f821691505b60208210810361204457634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160801b0382811682821603908082111561206a5761206a611fc1565b5092915050565b6001600160801b0381811683821601908082111561206a5761206a611fc1565b6000602082840312156120a357600080fd5b5051919050565b8381528260208201526060604082015260006120c96060830184611cee565b95945050505050565b831515815282151560208201526060604082015260006120c96060830184611cee56fe7465737446757a7a5f5363616c61724d756c4469764261736973506f696e74526f756e64446f776e3a3a337465737446757a7a5f5363616c61724d756c4469764261736973506f696e74526f756e64446f776e3a3a317465737446757a7a5f5363616c61724d756c4469764261736973506f696e74526f756e64446f776e3a3a32a264697066735822122092ca6d235ca3af116121fdbc66b127022dbd29e65ef8139abec9c3f472fe733864736f6c63430008140033","sourceMap":"150:5961:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:148;;;;;;:::i;:::-;;:::i;:::-;;4635:236;;;;;;:::i;:::-;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5125:984:115;;;;;;:::i;:::-;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2685:561:115:-;;;;;;:::i;:::-;;:::i;597:158::-;;;;;;:::i;:::-;;:::i;761:176::-;;;;;;:::i;:::-;;:::i;1330:140::-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;3252:157:115:-;;;:::i;1476:176::-;;;;;;:::i;:::-;;:::i;4107:522::-;;;;;;:::i;:::-;;:::i;1658:177::-;;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;4877:242:115:-;;;;;;:::i;:::-;;:::i;3415:686::-;;;:::i;3069:146:5:-;;;:::i;1191:133:115:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;7224:14:127;;7217:22;7199:41;;7187:2;7172:18;1243:204:1;7059:187:127;943:242:115;;;;;;:::i;:::-;;:::i;278:159::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;1841:838:115:-;;;:::i;443:148::-;509:75;-1:-1:-1;;;;;526:11:115;;;509:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;443:148;:::o;4635:236::-;-1:-1:-1;;;;;2662:16:78;;;;2701:6;2697:14;;;;2662:16;;;2697:14;;;4803:61:115;4812:7;2662:16:78;;4812:4:115;:7::i;:::-;4826:2;-1:-1:-1;;;;;4821:7:115;:2;-1:-1:-1;;;;;4821:7:115;;:18;;;;4837:2;-1:-1:-1;;;;;4832:7:115;:2;-1:-1:-1;;;;;4832:7:115;;4821:18;4803:61;;;;;;;;;;;;;;;;;:8;:61::i;:::-;4698:173;;;;4635:236;;:::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;5125:984:115:-;-1:-1:-1;;;;;2662:16:78;;;;2701:6;2697:14;;;;5227:10:115;;5287:25;;;;2662:16:78;5287:25:115;:::i;:::-;5274:38;-1:-1:-1;5322:10:115;5335:25;-1:-1:-1;;;;;5335:25:115;;;;:11;;:25;:::i;:::-;5322:38;-1:-1:-1;5371:10:115;5384:30;623:6:65;5384:2:115;:30;:::i;:::-;5371:43;-1:-1:-1;5424:10:115;5437:30;623:6:65;5437:2:115;:30;:::i;:::-;5424:43;;623:6:65;5482:11:115;-1:-1:-1;;;;;5482:39:115;;5478:625;;;5537:81;;-1:-1:-1;;;5537:81:115;;-1:-1:-1;;;5537:81:115;;;8187:52:127;5537:15:115;;;;8160:18:127;;5537:81:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5632:46;5666:11;5632:1;:33;;:46;;;;:::i;:::-;;5478:625;;;5709:78;5718:2;-1:-1:-1;;;;;5709:78:115;;;;;;;;;;;;;;;;;;;:8;:78::i;:::-;5801;5810:2;-1:-1:-1;;;;;5801:78:115;;;;;;;;;;;;;;;;;;;:8;:78::i;:::-;5894:198;5920:46;:1;5954:11;5920:33;:46::i;:::-;1061:6:78;1057:15;;;-1:-1:-1;;;;;5984:18:115;;1035:38:78;5894:198:115;;;;;;;;;;;;;;;;;:8;:198::i;:::-;5216:893;;;;;;5125:984;;:::o;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2685:561:115:-;2777:1;2824:3;2819:8;;;;2869:1;;2911:8;;;2942:22;2869:1;-1:-1:-1;;;;;2942:22:115;:::i;:::-;-1:-1:-1;;;;;2936:28:115;:2;-1:-1:-1;;;;;2936:28:115;;;:60;;;;-1:-1:-1;2974:22:115;2994:2;-1:-1:-1;;;;;2974:22:115;:::i;:::-;-1:-1:-1;;;;;2968:28:115;:2;-1:-1:-1;;;;;2968:28:115;;;2936:60;2932:308;;;3012:90;3021:8;:1;3027;3021:5;:8::i;:::-;3078:3;3066:7;3071:2;3066;:7;:::i;:::-;-1:-1:-1;;;;;3058:16:115;:23;;3047:7;3052:2;3047;:7;:::i;:::-;-1:-1:-1;;;;;3039:16:115;:42;3031:51;;3012:90;;;;;;;;;;;;;;;;;:8;:90::i;:::-;2932:308;;;3133:74;;-1:-1:-1;;;3133:74:115;;-1:-1:-1;;;3133:74:115;;;8187:52:127;3133:15:115;;;;8160:18:127;;3133:74:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3221:8;3227:1;3221;:5;;:8;;;;:::i;:::-;;2738:508;;;;2685:561;;:::o;597:158::-;664:84;696:3;681:18;;;-1:-1:-1;;681:18:115;;664:84;;;;;;;;;;;;;;;;;:8;:84::i;761:176::-;837:93;869:5;:15;;881:3;869:15;;;877:1;869:15;-1:-1:-1;;;;;854:10:115;;:31;;;;;;;;;888:15;;897:5;888:8;:15::i;:::-;837:93;;;;;;;;;;;;;;;;;:8;:93::i;:::-;761:176;;:::o;1330:140::-;1391:72;1422:3;1408:17;;;;-1:-1:-1;;;;;1391:72:115;;;;;;;;;;;;;;;;;;:8;:72::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3252:157:115;3328:12;3353:49;3362:8;3328:12;;3362:5;:8::i;:::-;3353:49;;;;;;;;;;;;;;;;;3380:1;;3353:8;:49::i;1476:176::-;1552:93;1584:5;:15;;1596:3;1584:15;;;1592:1;1584:15;1569:31;;;;;-1:-1:-1;;;;;1552:93:115;1603:15;1569:31;1612:5;1603:8;:15::i;:::-;-1:-1:-1;;;;;1552:93:115;;;;;;;;;;;;;;;;;;:8;:93::i;4107:522::-;4199:1;4246:3;4241:8;;;;4291:1;;4333:8;;;-1:-1:-1;;;;;4358:8:115;;;;;;;;;;:20;;;4376:2;-1:-1:-1;;;;;4370:8:115;:2;-1:-1:-1;;;;;4370:8:115;;;4358:20;4354:269;;;4394:90;4403:8;:1;4409;4403:5;:8::i;:::-;4460:3;4448:7;4453:2;4448;:7;:::i;:::-;-1:-1:-1;;;;;4440:16:115;:23;;4429:7;4434:2;4429;:7;:::i;:::-;-1:-1:-1;;;;;4421:16:115;:42;4413:51;;4394:90;;;;;;;;;;;;;;;;;:8;:90::i;4354:269::-;4515:75;;-1:-1:-1;;;4515:75:115;;-1:-1:-1;;;4515:75:115;;;8187:52:127;4515:15:115;;;;8160:18:127;;4515:75:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:8;4610:1;4604;:5;;:8;;;;:::i;1658:177::-;1734:12;1759:69;1768:8;1734:12;;1768:5;:8::i;:::-;1759:69;;;;;;;;;;;;;;;;;1794:12;;1759:8;:69::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:242:115;-1:-1:-1;;;;;2662:16:78;;;;2701:6;2697:14;;;;2662:16;;;2697:14;;;5048:64:115;5057:7;2662:16:78;;5057:4:115;:7::i;:::-;5071:2;-1:-1:-1;;;;;5066:7:115;:2;-1:-1:-1;;;;;5066:7:115;;:18;;;;5082:2;-1:-1:-1;;;;;5077:7:115;:2;-1:-1:-1;;;;;5077:7:115;;5066:18;5048:64;;;;;;;;;;;;;;;;;:8;:64::i;3415:686::-;3463:9;3525:1;-1:-1:-1;;;3600:7:115;3618:47;3627:9;3525:1;3463:9;3627:6;:9::i;:::-;3638:2;3618:47;;;;;;;;;;;;;;;;;:8;:47::i;:::-;3675;3684:9;:2;3691:1;3684:6;:9::i;:::-;3695:2;3675:47;;;;;;;;;;;;;;;;;:8;:47::i;:::-;3732;3741:9;:2;3748:1;3741:6;:9::i;:::-;3752:2;3732:47;;;;;;;;;;;;;;;;;:8;:47::i;:::-;3790:75;;-1:-1:-1;;;3790:75:115;;-1:-1:-1;;;3790:75:115;;;8187:52:127;3790:15:115;;;;8160:18:127;;3790:75:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3875:9;3881:2;3875:1;:5;;:9;;;;:::i;:::-;-1:-1:-1;3895:75:115;;-1:-1:-1;;;3895:75:115;;-1:-1:-1;;;3895:75:115;;;8187:52:127;3895:15:115;;;;8160:18:127;;3895:75:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3980:9;3986:2;3980:1;:5;;:9;;;;:::i;:::-;-1:-1:-1;4000:75:115;;-1:-1:-1;;;4000:75:115;;-1:-1:-1;;;4000:75:115;;;8187:52:127;4000:15:115;;;;8160:18:127;;4000:75:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4085:9;4091:2;4085:1;:5;;:9;;;;:::i;:::-;;3453:648;;;;3415:686::o;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1191:133:115;1252:65;-1:-1:-1;;;;;1252:65:115;;;-1:-1:-1;;;;;1252:65:115;;;;;;;;;;;;;;;;;;:8;:65::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;9216:74:127;;;1398:17:1;9306:18:127;;;9299:34;1428:1:1;;1377:7;;9189:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;943:242:115:-;1051:55;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2662:16:78;;;2701:6;2697:14;;;;1051:55:115;;2662:16:78;;;;1051:8:115;:55::i;:::-;1116:62;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1116:62:115;;;1151:3;1137:17;;;;1116:8;:62::i;:::-;993:192;;943:242;:::o;278:159::-;351:79;388:3;373:18;;;-1:-1:-1;;373:18:115;;-1:-1:-1;;;;;368:23:115;;;;;;1035:38:78;351:79:115;;;;;;;;;;;;;;;;;:8;:79::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1841:838:115:-;2059:74;;-1:-1:-1;;;2059:74:115;;-1:-1:-1;;;2059:74:115;;;8187:52:127;-1:-1:-1;;1908:17:115;1966:1;;-1:-1:-1;;;2008:8:115;2041:7;;2059:15;;;;8160:18:127;;2059:74:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:9;2149:2;2143:1;:5;;:9;;;;:::i;:::-;-1:-1:-1;2163:74:115;;-1:-1:-1;;;2163:74:115;;-1:-1:-1;;;2163:74:115;;;8187:52:127;2163:15:115;;;;8160:18:127;;2163:74:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2247:9;2253:2;2247:1;:5;;:9;;;;:::i;:::-;-1:-1:-1;2267:74:115;;-1:-1:-1;;;2267:74:115;;-1:-1:-1;;;2267:74:115;;;8187:52:127;2267:15:115;;;;8160:18:127;;2267:74:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2351:9;2357:2;2351:1;:5;;:9;;;;:::i;:::-;-1:-1:-1;2371:74:115;;-1:-1:-1;;;2371:74:115;;-1:-1:-1;;;2371:74:115;;;8187:52:127;2371:15:115;;;;8160:18:127;;2371:74:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:9;2462:1;2455:2;:6;;:9;;;;:::i;:::-;-1:-1:-1;2475:74:115;;-1:-1:-1;;;2475:74:115;;-1:-1:-1;;;2475:74:115;;;8187:52:127;2475:15:115;;;;8160:18:127;;2475:74:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2559:9;2566:1;2559:2;:6;;:9;;;;:::i;:::-;-1:-1:-1;2579:74:115;;-1:-1:-1;;;2579:74:115;;-1:-1:-1;;;2579:74:115;;;8187:52:127;2579:15:115;;;;8160:18:127;;2579:74:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2663:9;2670:1;2663:2;:6;;:9;;;;:::i;3826:134:1:-;3924:29;;-1:-1:-1;;;3924:29:1;;:11;;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6695:198:78;6752:4;-1:-1:-1;;;;;2662:16:78;;;;2701:6;2697:14;;;;2662:16;;;2697:14;;;6868:7;;;;:18;;;6884:2;-1:-1:-1;;;;;6879:7:78;:2;-1:-1:-1;;;;;6879:7:78;;6868:18;6861:25;;;;;;6695:198;;;;;:::o;2136:128:1:-;2228:29;;-1:-1:-1;;;2228:29:1;;:11;;;;:29;;2240:4;;2246:5;;2253:3;;2228:29;;;:::i;8024:533:78:-;8119:9;8144:10;-1:-1:-1;;;;;8144:15:78;8158:1;8144:15;8140:29;;-1:-1:-1;8168:1:78;8161:8;;8140:29;623:6:65;-1:-1:-1;;;;;8245:28:78;;;-1:-1:-1;8241:80:78;;;8282:39;;-1:-1:-1;;;8282:39:78;;;;;;;;;;;8241:80;-1:-1:-1;;;;;2662:16:78;;;8412:19;;8408:41;;;1038:17;2701:6;2697:14;;;8472:19;;;;8468:41;1057:15;;;1035:38;;8529:21;-1:-1:-1;8024:533:78:o;14412:134:1:-;14510:29;;-1:-1:-1;;;14510:29:1;;:11;;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;4336:262:78:-;4443:9;;;4476:5;;;;:50;;-1:-1:-1;;;;;;4485:41:78;;;;;;;4476:50;4472:120;;;4549:32;;-1:-1:-1;;;4549:32:78;;;;;;;;;;;2178:137;2240:9;2268:5;:40;;2293:15;2306:1;1778:6;1774:15;;1668:137;2293:15;2268:40;;;-1:-1:-1;;;;;1414:17:78;;2276:14;2261:47;2178:137;-1:-1:-1;;;2178:137:78:o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;5540:263:78:-;5647:9;;;5680:5;;;;:50;;-1:-1:-1;;;;;;5689:41:78;;;;;;;5680:50;5676:121;;;5753:33;;-1:-1:-1;;;5753:33:78;;;;;;;;;;;3797:128;3859:9;3887:5;:31;;3908:10;3916:1;3395:6;3391:14;;3291:130;7254:198;7311:4;-1:-1:-1;;;;;2662:16:78;;;;2701:6;2697:14;;;;2662:16;;;2697:14;;;7427:7;;;;:18;;;7443:2;-1:-1:-1;;;;;7438:7:78;:2;-1:-1:-1;;;;;7438:7:78;;7420:25;;;;;;7254:198;;;;:::o;14:188:127:-;82:20;;-1:-1:-1;;;;;131:46:127;;121:57;;111:85;;192:1;189;182:12;111:85;14:188;;;:::o;207:186::-;266:6;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;358:29;377:9;358:29;:::i;398:248::-;466:6;474;527:2;515:9;506:7;502:23;498:32;495:52;;;543:1;540;533:12;495:52;-1:-1:-1;;566:23:127;;;636:2;621:18;;;608:32;;-1:-1:-1;398:248:127:o;651:681::-;822:2;874:21;;;944:13;;847:18;;;966:22;;;793:4;;822:2;1045:15;;;;1019:2;1004:18;;;793:4;1088:218;1102:6;1099:1;1096:13;1088:218;;;1167:13;;-1:-1:-1;;;;;1163:62:127;1151:75;;1281:15;;;;1246:12;;;;1124:1;1117:9;1088:218;;;-1:-1:-1;1323:3:127;;651:681;-1:-1:-1;;;;;;651:681:127:o;1337:254::-;1405:6;1413;1466:2;1454:9;1445:7;1441:23;1437:32;1434:52;;;1482:1;1479;1472:12;1434:52;1518:9;1505:23;1495:33;;1547:38;1581:2;1570:9;1566:18;1547:38;:::i;:::-;1537:48;;1337:254;;;;;:::o;1596:423::-;1638:3;1676:5;1670:12;1703:6;1698:3;1691:19;1728:1;1738:162;1752:6;1749:1;1746:13;1738:162;;;1814:4;1870:13;;;1866:22;;1860:29;1842:11;;;1838:20;;1831:59;1767:12;1738:162;;;1742:3;1945:1;1938:4;1929:6;1924:3;1920:16;1916:27;1909:38;2008:4;2001:2;1997:7;1992:2;1984:6;1980:15;1976:29;1971:3;1967:39;1963:50;1956:57;;;1596:423;;;;:::o;2024:1765::-;2257:2;2309:21;;;2379:13;;2282:18;;;2401:22;;;2228:4;;2257:2;2442;;2460:18;;;;2497:1;2540:15;;;2525:31;;2521:40;;2584:15;;;2228:4;;2648:1112;2664:6;2659:3;2656:15;2648:1112;;;-1:-1:-1;;2733:22:127;;;2729:36;2717:49;;2789:13;;2876:9;;-1:-1:-1;;;;;2872:58:127;2857:74;;2970:11;;2964:18;3002:15;;;2995:27;;;3083:19;;2829:15;;;3115:24;;;3296:21;;;;3162:2;3244:17;;;3232:30;;3228:39;;;3186:15;;;;3341:1;3355:296;3371:8;3366:3;3363:17;3355:296;;;3477:2;3473:7;3464:6;3456;3452:19;3448:33;3441:5;3434:48;3509:42;3544:6;3533:8;3527:15;3509:42;:::i;:::-;3580:17;;;;3499:52;-1:-1:-1;3623:14:127;;;;3399:1;3390:11;3355:296;;;-1:-1:-1;;;3738:12:127;;;;3674:6;-1:-1:-1;;3703:15:127;;;;2690:1;2681:11;2648:1112;;;-1:-1:-1;3777:6:127;;2024:1765;-1:-1:-1;;;;;;;;;;2024:1765:127:o;3794:160::-;3859:20;;3915:13;;3908:21;3898:32;;3888:60;;3944:1;3941;3934:12;3959:254;4024:6;4032;4085:2;4073:9;4064:7;4060:23;4056:32;4053:52;;;4101:1;4098;4091:12;4053:52;4124:29;4143:9;4124:29;:::i;:::-;4114:39;;4172:35;4203:2;4192:9;4188:18;4172:35;:::i;4218:180::-;4277:6;4330:2;4318:9;4309:7;4305:23;4301:32;4298:52;;;4346:1;4343;4336:12;4298:52;-1:-1:-1;4369:23:127;;4218:180;-1:-1:-1;4218:180:127:o;4403:1590::-;4605:4;4634:2;4674;4663:9;4659:18;4704:2;4693:9;4686:21;4727:6;4762;4756:13;4793:6;4785;4778:22;4819:2;4809:12;;4852:2;4841:9;4837:18;4830:25;;4914:2;4904:6;4901:1;4897:14;4886:9;4882:30;4878:39;4952:2;4944:6;4940:15;4973:1;4994;5004:960;5020:6;5015:3;5012:15;5004:960;;;5089:22;;;-1:-1:-1;;5085:36:127;5073:49;;5145:13;;5232:9;;-1:-1:-1;;;;;5228:58:127;5213:74;;5326:11;;5320:18;5358:15;;;5351:27;;;5439:19;;5185:15;;;5471:24;;;5561:21;;;;5606:1;;5529:2;5517:15;;;5620:236;5636:8;5631:3;5628:17;5620:236;;;5717:15;;5734:20;5713:42;5699:57;;5825:17;;;;5664:1;5655:11;;;;;5782:14;;;;5620:236;;;-1:-1:-1;5942:12:127;;;;5879:5;-1:-1:-1;;;5907:15:127;;;;5046:1;5037:11;5004:960;;;-1:-1:-1;5981:6:127;;4403:1590;-1:-1:-1;;;;;;;;;4403:1590:127:o;5998:248::-;6063:6;6071;6124:2;6112:9;6103:7;6099:23;6095:32;6092:52;;;6140:1;6137;6130:12;6092:52;6176:9;6163:23;6153:33;;6205:35;6236:2;6225:9;6221:18;6205:35;:::i;6251:803::-;6413:4;6442:2;6482;6471:9;6467:18;6512:2;6501:9;6494:21;6535:6;6570;6564:13;6601:6;6593;6586:22;6639:2;6628:9;6624:18;6617:25;;6701:2;6691:6;6688:1;6684:14;6673:9;6669:30;6665:39;6651:53;;6739:2;6731:6;6727:15;6760:1;6770:255;6784:6;6781:1;6778:13;6770:255;;;6877:2;6873:7;6861:9;6853:6;6849:22;6845:36;6840:3;6833:49;6905:40;6938:6;6929;6923:13;6905:40;:::i;:::-;6895:50;-1:-1:-1;7003:12:127;;;;6968:15;;;;6806:1;6799:9;6770:255;;;-1:-1:-1;7042:6:127;;6251:803;-1:-1:-1;;;;;;;6251:803:127:o;7251:260::-;7319:6;7327;7380:2;7368:9;7359:7;7355:23;7351:32;7348:52;;;7396:1;7393;7386:12;7348:52;7419:29;7438:9;7419:29;:::i;:::-;7409:39;;7467:38;7501:2;7490:9;7486:18;7467:38;:::i;7516:127::-;7577:10;7572:3;7568:20;7565:1;7558:31;7608:4;7605:1;7598:15;7632:4;7629:1;7622:15;7648:168;7721:9;;;7752;;7769:15;;;7763:22;;7749:37;7739:71;;7790:18;;:::i;7821:217::-;7861:1;7887;7877:132;;7931:10;7926:3;7922:20;7919:1;7912:31;7966:4;7963:1;7956:15;7994:4;7991:1;7984:15;7877:132;-1:-1:-1;8023:9:127;;7821:217::o;8250:380::-;8329:1;8325:12;;;;8372;;;8393:61;;8447:4;8439:6;8435:17;8425:27;;8393:61;8500:2;8492:6;8489:14;8469:18;8466:38;8463:161;;8546:10;8541:3;8537:20;8534:1;8527:31;8581:4;8578:1;8571:15;8609:4;8606:1;8599:15;8463:161;;8250:380;;;:::o;8635:200::-;-1:-1:-1;;;;;8771:10:127;;;8759;;;8755:27;;8794:12;;;8791:38;;;8809:18;;:::i;:::-;8791:38;8635:200;;;;:::o;8840:197::-;-1:-1:-1;;;;;8962:10:127;;;8974;;;8958:27;;8997:11;;;8994:37;;;9011:18;;:::i;9344:184::-;9414:6;9467:2;9455:9;9446:7;9442:23;9438:32;9435:52;;;9483:1;9480;9473:12;9435:52;-1:-1:-1;9506:16:127;;9344:184;-1:-1:-1;9344:184:127:o;9533:362::-;9738:6;9727:9;9720:25;9781:6;9776:2;9765:9;9761:18;9754:34;9824:2;9819;9808:9;9804:18;9797:30;9701:4;9844:45;9885:2;9874:9;9870:18;9862:6;9844:45;:::i;:::-;9836:53;9533:362;-1:-1:-1;;;;;9533:362:127:o;9900:382::-;10107:6;10100:14;10093:22;10082:9;10075:41;10166:6;10159:14;10152:22;10147:2;10136:9;10132:18;10125:50;10211:2;10206;10195:9;10191:18;10184:30;10056:4;10231:45;10272:2;10261:9;10257:18;10249:6;10231:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_Add(bytes32,bytes32)":"4b5eeccb","testFuzz_Decode(bytes32)":"c83cdc64","testFuzz_DecodeBool(bytes32,bool)":"73270c07","testFuzz_Encode(uint128,uint128)":"d4f15efd","testFuzz_EncodeBool(uint128,bool)":"5575df2b","testFuzz_EncodeFirst(uint128)":"01255dee","testFuzz_EncodeSecond(uint128)":"4f495fcc","testFuzz_GreaterThan(bytes32,bytes32)":"8564ed26","testFuzz_LessThan(bytes32,bytes32)":"1213a182","testFuzz_ScalarMulDivBasisPointRoundDown(bytes32,uint128)":"240d13de","testFuzz_Sub(bytes32,bytes32)":"7466b8ac","testFuzz_decodeX(bytes32)":"9824467d","testFuzz_decodeY(bytes32)":"5e1fc075","test_AddOverflow()":"f091df33","test_AddSelf()":"76a95679","test_SubSelf()":"6ab77c01","test_SubUnderflow()":"87e25ea7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PackedUint128Math__AddOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__MultiplierTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__SubUnderflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_Add\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_Decode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"first\",\"type\":\"bool\"}],\"name\":\"testFuzz_DecodeBool\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"x1\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"x2\",\"type\":\"uint128\"}],\"name\":\"testFuzz_Encode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"x\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"first\",\"type\":\"bool\"}],\"name\":\"testFuzz_EncodeBool\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"x1\",\"type\":\"uint128\"}],\"name\":\"testFuzz_EncodeFirst\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"x2\",\"type\":\"uint128\"}],\"name\":\"testFuzz_EncodeSecond\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GreaterThan\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_LessThan\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"multipilier\",\"type\":\"uint128\"}],\"name\":\"testFuzz_ScalarMulDivBasisPointRoundDown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_Sub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_decodeX\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_decodeY\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_AddOverflow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_AddSelf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SubSelf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_SubUnderflow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/PackedUint128Math.t.sol\":\"PackedUint128MathTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"test/libraries/math/PackedUint128Math.t.sol\":{\"keccak256\":\"0x45c288c4f992bf8746f25d96fc2fa7c163fb9e9a82522666cf8d6ccc2ccd5ead\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1083be867419528ee666bb4ca9c3ba5430eabef79cc2b8039db9907071ef7329\",\"dweb:/ipfs/QmaiZiYTW4snFmNL9Me6v8H5PTUa9w9rcEQwBLSWqt51JX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"PackedUint128Math__AddOverflow"},{"inputs":[],"type":"error","name":"PackedUint128Math__MultiplierTooLarge"},{"inputs":[],"type":"error","name":"PackedUint128Math__SubUnderflow"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_Add"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_Decode"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bool","name":"first","type":"bool"}],"stateMutability":"pure","type":"function","name":"testFuzz_DecodeBool"},{"inputs":[{"internalType":"uint128","name":"x1","type":"uint128"},{"internalType":"uint128","name":"x2","type":"uint128"}],"stateMutability":"pure","type":"function","name":"testFuzz_Encode"},{"inputs":[{"internalType":"uint128","name":"x","type":"uint128"},{"internalType":"bool","name":"first","type":"bool"}],"stateMutability":"pure","type":"function","name":"testFuzz_EncodeBool"},{"inputs":[{"internalType":"uint128","name":"x1","type":"uint128"}],"stateMutability":"pure","type":"function","name":"testFuzz_EncodeFirst"},{"inputs":[{"internalType":"uint128","name":"x2","type":"uint128"}],"stateMutability":"pure","type":"function","name":"testFuzz_EncodeSecond"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_GreaterThan"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_LessThan"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"uint128","name":"multipilier","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_ScalarMulDivBasisPointRoundDown"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_Sub"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeX"},{"inputs":[{"internalType":"bytes32","name":"x","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_decodeY"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_AddOverflow"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_AddSelf"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_SubSelf"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_SubUnderflow"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/PackedUint128Math.t.sol":"PackedUint128MathTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"test/libraries/math/PackedUint128Math.t.sol":{"keccak256":"0x45c288c4f992bf8746f25d96fc2fa7c163fb9e9a82522666cf8d6ccc2ccd5ead","urls":["bzz-raw://1083be867419528ee666bb4ca9c3ba5430eabef79cc2b8039db9907071ef7329","dweb:/ipfs/QmaiZiYTW4snFmNL9Me6v8H5PTUa9w9rcEQwBLSWqt51JX"],"license":"MIT"}},"version":1},"id":115} \ No newline at end of file diff --git a/abi/PairParameterHelper.sol/PairParameterHelper.json b/abi/PairParameterHelper.sol/PairParameterHelper.json deleted file mode 100644 index f7636c70..00000000 --- a/abi/PairParameterHelper.sol/PairParameterHelper.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"PairParametersHelper__InvalidParameter","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6df27f7c13d69ff9bbf00f27b4e811cc4f18b72bf0a6ffbbb3ba11f2f4a0ff064736f6c63430008140033","sourceMap":"992:16990:70:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;992:16990:70;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6df27f7c13d69ff9bbf00f27b4e811cc4f18b72bf0a6ffbbb3ba11f2f4a0ff064736f6c63430008140033","sourceMap":"992:16990:70:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"details\":\"This library contains functions to get and set parameters of a pair The parameters are stored in a single bytes32 variable in the following format: [0 - 16[: base factor (16 bits) [16 - 28[: filter period (12 bits) [28 - 40[: decay period (12 bits) [40 - 54[: reduction factor (14 bits) [54 - 78[: variable fee control (24 bits) [78 - 92[: protocol share (14 bits) [92 - 112[: max volatility accumulator (20 bits) [112 - 132[: volatility accumulator (20 bits) [132 - 152[: volatility reference (20 bits) [152 - 176[: index reference (24 bits) [176 - 216[: time of last update (40 bits) [216 - 232[: oracle index (16 bits) [232 - 256[: active index (24 bits)\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Pair Parameter Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/PairParameterHelper.sol\":\"PairParameterHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"PairParametersHelper__InvalidParameter"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/PairParameterHelper.sol":"PairParameterHelper"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"}},"version":1},"id":70} \ No newline at end of file diff --git a/abi/PairParameterHelper.t.sol/PairParameterHelperTest.json b/abi/PairParameterHelper.t.sol/PairParameterHelperTest.json deleted file mode 100644 index e8d78b95..00000000 --- a/abi/PairParameterHelper.t.sol/PairParameterHelperTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_SetActiveId","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"activeId","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_SetOracleId","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"oracleId","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_SetVolatilityAccumulator","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_SetVolatilityReference","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_StaticFeeParameters","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"sfp","type":"tuple","internalType":"struct PairParameterHelperTest.StaticFeeParameters","components":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}]}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_StaticFeeParametersDirtyBits","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"sfp","type":"tuple","internalType":"struct PairParameterHelperTest.StaticFeeParameters","components":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}]}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_UpdateIdReference","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_UpdateReferences","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"sfp","type":"tuple","internalType":"struct PairParameterHelperTest.StaticFeeParameters","components":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}]},{"name":"previousTime","type":"uint40","internalType":"uint40"},{"name":"time","type":"uint40","internalType":"uint40"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_UpdateTimeOfLastUpdate","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testFuzz_UpdateVolatilityAccumulator","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"activeId","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_UpdateVolatilityParameters","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"sfp","type":"tuple","internalType":"struct PairParameterHelperTest.StaticFeeParameters","components":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}]},{"name":"previousTime","type":"uint40","internalType":"uint40"},{"name":"time","type":"uint40","internalType":"uint40"},{"name":"activeId","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_UpdateVolatilityReference","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_getBaseAndVariableFees","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_SetVolatilityAccumulator","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_SetVolatilityReference","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"volatilityReference","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_StaticFeeParameters","inputs":[{"name":"params","type":"bytes32","internalType":"bytes32"},{"name":"sfp","type":"tuple","internalType":"struct PairParameterHelperTest.StaticFeeParameters","components":[{"name":"baseFactor","type":"uint16","internalType":"uint16"},{"name":"filterPeriod","type":"uint16","internalType":"uint16"},{"name":"decayPeriod","type":"uint16","internalType":"uint16"},{"name":"reductionFactor","type":"uint16","internalType":"uint16"},{"name":"variableFeeControl","type":"uint24","internalType":"uint24"},{"name":"protocolShare","type":"uint16","internalType":"uint16"},{"name":"maxVolatilityAccumulator","type":"uint24","internalType":"uint24"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_revert_UpdateReferences","inputs":[{"name":"previousTime","type":"uint40","internalType":"uint40"},{"name":"time","type":"uint40","internalType":"uint40"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"PairParametersHelper__InvalidParameter","inputs":[]},{"type":"error","name":"SafeCast__Exceeds128Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds40Bits","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506139498061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063916a17c6116100f9578063c6663b3d11610097578063d990204e11610071578063d990204e1461035f578063e20c9f7114610372578063eb24c15f1461037a578063efd587fd1461038d57600080fd5b8063c6663b3d14610326578063cba496c314610339578063cfd2cc001461034c57600080fd5b8063aecb31d9116100d3578063aecb31d9146102e0578063b12e13e5146102f3578063b5508aa914610306578063ba414fa61461030e57600080fd5b8063916a17c6146102b2578063a01bb5e6146102ba578063a570f400146102cd57600080fd5b80633107edd7116101665780633f7286f4116101405780633f7286f41461026d57806366d9a9a0146102755780637919675e1461028a57806385226c811461029d57600080fd5b80633107edd71461023f57806337af16e0146102525780633e5e3c231461026557600080fd5b806318163a341161019757806318163a34146101f95780631ed7831c1461020c5780632ade38801461022a57600080fd5b8063026c4e62146101be57806303419357146101d35780630531e5be146101e6575b600080fd5b6101d16101cc366004612f40565b6103a0565b005b6101d16101e1366004612f40565b610453565b6101d16101f4366004612f6b565b6104e2565b6101d1610207366004612faa565b6105a6565b61021461069c565b6040516102219190612fcd565b60405180910390f35b6102326106fe565b6040516102219190613060565b6101d161024d366004612faa565b610840565b6101d16102603660046131f6565b61092a565b610214610d52565b610214610db2565b61027d610e12565b6040516102219190613247565b6101d1610298366004612faa565b610f0d565b6102a5611028565b6040516102219190613312565b61027d6110f8565b6101d16102c8366004613374565b6111f3565b6101d16102db366004612f40565b61156d565b6101d16102ee366004612faa565b6116b4565b6101d16103013660046133d7565b61179e565b6102a561197d565b610316611a4d565b6040519015158152602001610221565b6101d1610334366004612faa565b611b08565b6101d1610347366004613401565b611cda565b6101d161035a366004612faa565b611fdd565b6101d161036d366004613401565b6120d5565b610214612252565b6101d1610388366004612f6b565b6122b2565b6101d161039b366004613401565b612482565b60006103ab82612840565b905060006103b88361284e565b905061040c6103c6826128a5565b62ffffff168362ffffff166040518060400160405280601d81526020017f7465737446757a7a5f55706461746549645265666572656e63653a3a310000008152506128b6565b60408051808201909152601d81527f7465737446757a7a5f55706461746549645265666572656e63653a3a32000000602082015261044e90600090819061291d565b505050565b600061045f8242612958565b905061049361046d826129b5565b64ffffffffff164260405180606001604052806022815260200161367a602291396128b6565b604080516060810190915260228082526104de917fffffffffff0000000000000000000000000000000000000000000000000000008481169290861691906138d0602083013961291d565b5050565b60006104ee83836129c8565b90506105406104fc82612a17565b61ffff168361ffff166040518060400160405280601781526020017f7465737446757a7a5f5365744f7261636c6549643a3a310000000000000000008152506128b6565b60408051808201909152601781527f7465737446757a7a5f5365744f7261636c6549643a3a32000000000000000000602082015261044e907fffffff0000000000000000000000000000000000000000000000000000000000838116919086169061291d565b604051632631f2b160e11b8152620fffff62ffffff831611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b5050505060006106288284612a2790919063ffffffff16565b905061065f61063682612a85565b62ffffff168362ffffff16604051806060016040528060248152602001613756602491396128b6565b6040805160608101909152602480825261044e91700fffffffffffffffffffffffffffffffff198481169290871691906135e4602083013961291d565b606060148054806020026020016040519081016040528092919081815260200182805480156106f457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106d6575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561083757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561082057838290600052602060002001805461079390613426565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf90613426565b801561080c5780601f106107e15761010080835404028352916020019161080c565b820191906000526020600020905b8154815290600101906020018083116107ef57829003601f168201915b505050505081526020019060010190610774565b505050508152505081526020019060010190610722565b50505050905090565b604051632631f2b160e11b8152620fffff62ffffff8316116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561089457600080fd5b505afa1580156108a8573d6000803e3d6000fd5b5050604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156108ff57600080fd5b505af1158015610913573d6000803e3d6000fd5b5050505061044e8183612a2790919063ffffffff16565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56264ffffffffff8084169085161180159061096e5750846040015161ffff16856020015161ffff1611155b80156109845750610fff856040015161ffff1611155b801561099a5750612710856060015161ffff1611155b80156109b057506109c48560a0015161ffff1611155b80156109c85750620fffff8560c0015162ffffff1611155b6040518263ffffffff1660e01b81526004016109e8911515815260200190565b60006040518083038186803b158015610a0057600080fd5b505afa158015610a14573d6000803e3d6000fd5b50506040516372eb5f8160e11b815264ffffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b50505050610ac842610ac2856000015186602001518760400151886060015189608001518a60a001518b60c001518d612a9690979695949392919063ffffffff16565b90612958565b6040516372eb5f8160e11b815264ffffffffff83166004820152909450737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b5050505060008282610b449190613476565b64ffffffffff1690506000846020015161ffff16821015610b6d57610b68866128a5565b610b76565b610b7686612840565b62ffffff1690506000610b8887612b96565b62ffffff169050856020015161ffff168310610bcf57856040015161ffff16831015610bc457610bbf610bba88612ba7565b612b96565b610bc7565b60005b62ffffff1690505b6000610bdb8842612be5565b9050610c2a610be9826128a5565b62ffffff16846040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a31000000008152506128b6565b610c77610c3682612b96565b62ffffff16836040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a32000000008152506128b6565b610ccd610c83826129b5565b64ffffffffff168664ffffffffff166040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a33000000008152506128b6565b610d486084610ce860016a1000000000000000000000613494565b19901b82166084610d0560016a1000000000000000000000613494565b19901b60001b8a166040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a340000000081525061291d565b5050505050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156106f4576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106d6575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156106f4576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106d6575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156108375760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ef557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610ea25790505b50505050508152505081526020019060010190610e36565b6000610f18836128a5565b62ffffff1690506000818362ffffff1611610f4157610f3c62ffffff841683613494565b610f50565b610f508262ffffff8516613494565b90506000610f60612710836134a7565b610f6986612b96565b62ffffff16610f7891906134be565b9050610f8385612c5b565b62ffffff168111610f945780610fa3565b610f9d85612c5b565b62ffffff165b90506000610fb18686612c6c565b9050610fe3610fbf82612a85565b62ffffff1683604051806060016040528060278152602001613608602791396128b6565b6040805160608101909152602780825261102091700fffffffffffffffffffffffffffffffff1984811692908a169190613595602083013961291d565b505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561083757838290600052602060002001805461106b90613426565b80601f016020809104026020016040519081016040528092919081815260200182805461109790613426565b80156110e45780601f106110b9576101008083540402835291602001916110e4565b820191906000526020600020905b8154815290600101906020018083116110c757829003601f168201915b50505050508152602001906001019061104c565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156108375760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116111885790505b5050505050815250508152602001906001019061111c565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56264ffffffffff808516908616118015906112375750856040015161ffff16866020015161ffff1611155b801561124d5750610fff866040015161ffff1611155b80156112635750612710866060015161ffff1611155b801561127957506109c48660a0015161ffff1611155b80156112915750620fffff8660c0015162ffffff1611155b6040518263ffffffff1660e01b81526004016112b1911515815260200190565b60006040518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b50506040516372eb5f8160e11b815264ffffffffff86166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b5050505061138b42610ac286600001518760200151886040015189606001518a608001518b60a001518c60c001518e612a9690979695949392919063ffffffff16565b6040516372eb5f8160e11b815264ffffffffff84166004820152909550737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156113e157600080fd5b505af11580156113f5573d6000803e3d6000fd5b505050506000611418826114124289612be590919063ffffffff16565b90612c6c565b90506000611427878442612cf4565b9050611466611435826128a5565b62ffffff16611443846128a5565b62ffffff166040518060600160405280602681526020016138aa602691396128b6565b6114a361147282612b96565b62ffffff1661148084612b96565b62ffffff16604051806060016040528060268152602001613812602691396128b6565b6114e06114af82612a85565b62ffffff166114bd84612a85565b62ffffff1660405180606001604052806026815260200161362f602691396128b6565b6115196114ec826129b5565b64ffffffffff168564ffffffffff1660405180606001604052806026815260200161369c602691396128b6565b60408051606081019091526026808252611564917fffffffffff00000000000000000000000000000000000000000000000000000084811692908b16919061379c602083013961291d565b50505050505050565b600061157882612a85565b62ffffff169050600061158a83612d0c565b61ffff169050600061271061159f83856134a7565b6115a991906134d1565b9050620fffff81111561163057604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160957600080fd5b505af115801561161d573d6000803e3d6000fd5b5050505061162a84612ba7565b506116ae565b600061163b85612ba7565b905061166d61164982612b96565b62ffffff1683604051806060016040528060258152602001613655602591396128b6565b604080516060810190915260258082526116ac9172ffffffffffffffffffffffffffffffffffffff19848116929089169190613570602083013961291d565b505b50505050565b604051632631f2b160e11b8152620fffff62ffffff8316116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b5050604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561177357600080fd5b505af1158015611787573d6000803e3d6000fd5b5050505061044e8183612d1c90919063ffffffff16565b604051632631f2b160e11b815264ffffffffff828116908416116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b50506040516372eb5f8160e11b815264ffffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b5060009250611886915082905042612958565b6040516372eb5f8160e11b815264ffffffffff84166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156118dc57600080fd5b505af11580156118f0573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561195257600080fd5b505af1158015611966573d6000803e3d6000fd5b505050506116ae4282612be590919063ffffffff16565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156108375783829060005260206000200180546119c090613426565b80601f01602080910402602001604051908101604052809291908181526020018280546119ec90613426565b8015611a395780601f10611a0e57610100808354040283529160200191611a39565b820191906000526020600020905b815481529060010190602001808311611a1c57829003601f168201915b5050505050815260200190600101906119a1565b60075460009060ff1615611a65575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0191906134f3565b1415905090565b6000611b1383612840565b905060008262ffffff168262ffffff1611611b3757611b32828461350c565b611b41565b611b41838361350c565b9050611b96611b508585612d8a565b62ffffff168262ffffff166040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a310000000000000000008152506128b6565b6000611ba28585612dba565b9050611bf6611bb082612840565b62ffffff168562ffffff166040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a320000000000000000008152506128b6565b611c45611c038286612d8a565b62ffffff1660006040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a330000000000000000008152506128b6565b611c98611c528285612d8a565b62ffffff168362ffffff166040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a340000000000000000008152506128b6565b60408051808201909152601781527f7465737446757a7a5f53657441637469766549643a3a3500000000000000000060208201526116ac90600090819061291d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316634c63e562826040015161ffff16836020015161ffff1611158015611d365750610fff836040015161ffff1611155b8015611d4c5750612710836060015161ffff1611155b8015611d6257506109c48360a0015161ffff1611155b8015611d7a5750620fffff8360c0015162ffffff1611155b6040518263ffffffff1660e01b8152600401611d9a911515815260200190565b60006040518083038186803b158015611db257600080fd5b505afa158015611dc6573d6000803e3d6000fd5b50508251602084015160408501516060860151608087015160a088015160c089015162ffffff19985060009750611e2b968b9661ffff9182168b17969082168b17959082168b17949082168b179362ffffff9182168c179392168b1791168a17612a96565b9050611e58607082901c607086901c60405180606001604052806028815260200161370c6028913961291d565b611e8f611e6482612e09565b61ffff16846000015161ffff16604051806060016040528060288152602001613548602891396128b6565b611ec6611e9b82612e15565b61ffff16846020015161ffff16604051806060016040528060288152602001613838602891396128b6565b611efd611ed282612e25565b61ffff16846040015161ffff166040518060600160405280602881526020016137ea602891396128b6565b611f34611f0982612d0c565b61ffff16846060015161ffff16604051806060016040528060288152602001613860602891396128b6565b611f6d611f4082612e35565b62ffffff16846080015162ffffff166040518060600160405280602881526020016137c2602891396128b6565b611fa4611f7982612e46565b61ffff168460a0015161ffff166040518060600160405280602881526020016135bc602891396128b6565b6116ae611fb082612c5b565b62ffffff168460c0015162ffffff166040518060600160405280602881526020016136c2602891396128b6565b604051632631f2b160e11b8152620fffff62ffffff831611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b50505050600061205f8284612d1c90919063ffffffff16565b905061209661206d82612b96565b62ffffff168362ffffff166040518060600160405280602281526020016138f2602291396128b6565b6040805160608101909152602280825261044e9172ffffffffffffffffffffffffffffffffffffff1984811692908716919061377a602083013961291d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316634c63e562826040015161ffff16836020015161ffff16118061212e5750610fff836040015161ffff16115b806121425750612710836060015161ffff16115b8061215657506109c48360a0015161ffff16115b8061216c5750620fffff8360c0015162ffffff16115b6040518263ffffffff1660e01b815260040161218c911515815260200190565b60006040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b5050604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561220f57600080fd5b505af1158015612223573d6000803e3d6000fd5b50508251602084015160408501516060860151608087015160a088015160c089015161044e98508a9750612a96565b606060138054806020026020016040519081016040528092919081815260200182805480156106f4576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106d6575050505050905090565b60006122be8383612e56565b905060006122cc8484612e7a565b905061231b828461ffff166122e087612e09565b61ffff166122ee91906134a7565b6122fd906402540be4006134a7565b604051806060016040528060228152602001613734602291396128b6565b60008361ffff1661232b86612a85565b62ffffff1661233a91906134a7565b905061239782606461234b88612e35565b62ffffff1661235a85806134a7565b61236491906134a7565b61236f9060636134be565b61237991906134d1565b6040518060600160405280602281526020016136ea602291396128b6565b6fffffffffffffffffffffffffffffffff6123b283856134be565b1015612404576123ff6123c58686612ec1565b6fffffffffffffffffffffffffffffffff166123e184866134be565b604051806060016040528060228152602001613888602291396128b6565b6116ac565b604051630618f58760e51b8152632f45db3d60e21b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561245757600080fd5b505af115801561246b573d6000803e3d6000fd5b505050506110208486612ec190919063ffffffff16565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316634c63e562826040015161ffff16836020015161ffff16111580156124de5750610fff836040015161ffff1611155b80156124f45750612710836060015161ffff1611155b801561250a57506109c48360a0015161ffff1611155b80156125225750620fffff8360c0015162ffffff1611155b6040518263ffffffff1660e01b8152600401612542911515815260200190565b60006040518083038186803b15801561255a57600080fd5b505afa15801561256e573d6000803e3d6000fd5b50508251602084015160408501516060860151608087015160a088015160c0890151600098506125a697508a96959493929190612a96565b90506125f0607082901c607085901c6040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a310081525061291d565b6126446125fc82612e09565b61ffff16836000015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a32008152506128b6565b61269861265082612e15565b61ffff16836020015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a33008152506128b6565b6126ec6126a482612e25565b61ffff16836040015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a34008152506128b6565b6127406126f882612d0c565b61ffff16836060015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a35008152506128b6565b61279661274c82612e35565b62ffffff16836080015162ffffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a36008152506128b6565b6127ea6127a282612e46565b61ffff168360a0015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a37008152506128b6565b61044e6127f682612c5b565b62ffffff168360c0015162ffffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a38008152506128b6565b600060e882901c5b92915050565b60008061285a83612840565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b16175b9392505050565b60006128488260981c62ffffff1690565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906128f190869086908690600401613528565b60006040518083038186803b15801561290957600080fd5b505afa158015611564573d6000803e3d6000fd5b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed0906128f190869086908690600401613528565b60008061296483612ee0565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16175b949350505050565b60006128488260b01c64ffffffffff1690565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b161761289e565b60006128488260d81c61ffff1690565b6000620fffff8262ffffff161115612a5257604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b161761289e565b60006128488260701c620fffff1690565b60008561ffff168761ffff161180612ab35750610fff8661ffff16115b80612ac357506127108561ffff16115b80612ad357506109c48361ffff16115b80612ae55750620fffff8262ffffff16115b15612b0357604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006128488260841c620fffff1690565b600080612bb383612a85565b62ffffff1690506000612bc584612d0c565b61ffff16905061271082820204612bdc8582612d1c565b95945050505050565b600080612bf1846129b5565b612c029064ffffffffff1684613494565b9050612c0d84612e15565b61ffff168110612c5157612c208461284e565b9350612c2b84612e25565b61ffff168110612c4557612c40846000612d1c565b612c4e565b612c4e84612ba7565b93505b6129ad8484612958565b600061284882605c1c620fffff1690565b600080612c78846128a5565b62ffffff169050600080828562ffffff1611612c9b578462ffffff168303612ca4565b828562ffffff16035b91506127108202612cb487612b96565b62ffffff160190506000612cc787612c5b565b62ffffff169050808211612cdb5781612cdd565b805b9150612ce98783612a27565b979650505050505050565b6000612d008483612be5565b93506129ad8484612c6c565b60006128488260281c613fff1690565b6000620fffff8262ffffff161115612d4757604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b161761289e565b600080612d9684612840565b90508062ffffff168362ffffff1611612db1578281036129ad565b90910392915050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b161761289e565b600061ffff8216612848565b60006128488260101c610fff1690565b600061284882601c1c610fff1690565b60006128488260361c62ffffff1690565b600061284882604e1c613fff1690565b60008161ffff16612e6684612e09565b61ffff16026402540be40002905092915050565b600080612e8684612e35565b62ffffff1690508015612eba5760008361ffff16612ea386612a85565b62ffffff1602905060646063828002840201049250505b5092915050565b600061289e612ed08484612e7a565b612eda8585612e56565b01612f0d565b8064ffffffffff81168114612f08576040516350dbfc8760e11b815260040160405180910390fd5b919050565b806fffffffffffffffffffffffffffffffff81168114612f0857604051632f45db3d60e21b815260040160405180910390fd5b600060208284031215612f5257600080fd5b5035919050565b803561ffff81168114612f0857600080fd5b60008060408385031215612f7e57600080fd5b82359150612f8e60208401612f59565b90509250929050565b803562ffffff81168114612f0857600080fd5b60008060408385031215612fbd57600080fd5b82359150612f8e60208401612f97565b6020808252825182820181905260009190848201906040850190845b8181101561300e5783516001600160a01b031683529284019291840191600101612fe9565b50909695505050505050565b6000815180845260005b8181101561304057602081850181015186830182015201613024565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561311057603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156130fa57605f198985030183526130e884865161301a565b948e01949350918d01916001016130cc565b505050978a019794505091880191600101613087565b50919a9950505050505050505050565b600060e0828403121561313257600080fd5b60405160e0810181811067ffffffffffffffff8211171561316357634e487b7160e01b600052604160045260246000fd5b60405290508061317283612f59565b815261318060208401612f59565b602082015261319160408401612f59565b60408201526131a260608401612f59565b60608201526131b360808401612f97565b60808201526131c460a08401612f59565b60a08201526131d560c08401612f97565b60c08201525092915050565b803564ffffffffff81168114612f0857600080fd5b600080600080610140858703121561320d57600080fd5b8435935061321e8660208701613120565b925061322d61010086016131e1565b915061323c61012086016131e1565b905092959194509250565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561330357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156132ee5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906132ac565b50978a0197955050509187019160010161326f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561336757603f1988860301845261335585835161301a565b94509285019290850190600101613339565b5092979650505050505050565b6000806000806000610160868803121561338d57600080fd5b8535945061339e8760208801613120565b93506133ad61010087016131e1565b92506133bc61012087016131e1565b91506133cb6101408701612f97565b90509295509295909350565b600080604083850312156133ea57600080fd5b6133f3836131e1565b9150612f8e602084016131e1565b600080610100838503121561341557600080fd5b82359150612f8e8460208501613120565b600181811c9082168061343a57607f821691505b60208210810361345a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b64ffffffffff828116828216039080821115612eba57612eba613460565b8181038181111561284857612848613460565b808202811582820484141761284857612848613460565b8082018082111561284857612848613460565b6000826134ee57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561350557600080fd5b5051919050565b62ffffff828116828216039080821115612eba57612eba613460565b838152826020820152606060408201526000612bdc606083018461301a56fe7465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a327465737446757a7a5f557064617465566f6c6174696c6974795265666572656e63653a3a327465737446757a7a5f557064617465566f6c6174696c697479416363756d756c61746f723a3a327465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a377465737446757a7a5f536574566f6c6174696c697479416363756d756c61746f723a3a327465737446757a7a5f557064617465566f6c6174696c697479416363756d756c61746f723a3a317465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a337465737446757a7a5f557064617465566f6c6174696c6974795265666572656e63653a3a317465737446757a7a5f55706461746554696d654f664c6173745570646174653a3a317465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a347465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a387465737446757a7a5f67657442617365416e645661726961626c65466565733a3a327465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a317465737446757a7a5f67657442617365416e645661726961626c65466565733a3a317465737446757a7a5f536574566f6c6174696c697479416363756d756c61746f723a3a317465737446757a7a5f536574566f6c6174696c6974795265666572656e63653a3a327465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a357465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a367465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a347465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a327465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a337465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a357465737446757a7a5f67657442617365416e645661726961626c65466565733a3a337465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a317465737446757a7a5f55706461746554696d654f664c6173745570646174653a3a327465737446757a7a5f536574566f6c6174696c6974795265666572656e63653a3a31a2646970667358221220c417120b2e3c528a568a6dcb253e6696adfe510c31a016d4b22d72e81f62755264736f6c63430008140033","sourceMap":"144:16412:108:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;144:16412:108;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101b95760003560e01c8063916a17c6116100f9578063c6663b3d11610097578063d990204e11610071578063d990204e1461035f578063e20c9f7114610372578063eb24c15f1461037a578063efd587fd1461038d57600080fd5b8063c6663b3d14610326578063cba496c314610339578063cfd2cc001461034c57600080fd5b8063aecb31d9116100d3578063aecb31d9146102e0578063b12e13e5146102f3578063b5508aa914610306578063ba414fa61461030e57600080fd5b8063916a17c6146102b2578063a01bb5e6146102ba578063a570f400146102cd57600080fd5b80633107edd7116101665780633f7286f4116101405780633f7286f41461026d57806366d9a9a0146102755780637919675e1461028a57806385226c811461029d57600080fd5b80633107edd71461023f57806337af16e0146102525780633e5e3c231461026557600080fd5b806318163a341161019757806318163a34146101f95780631ed7831c1461020c5780632ade38801461022a57600080fd5b8063026c4e62146101be57806303419357146101d35780630531e5be146101e6575b600080fd5b6101d16101cc366004612f40565b6103a0565b005b6101d16101e1366004612f40565b610453565b6101d16101f4366004612f6b565b6104e2565b6101d1610207366004612faa565b6105a6565b61021461069c565b6040516102219190612fcd565b60405180910390f35b6102326106fe565b6040516102219190613060565b6101d161024d366004612faa565b610840565b6101d16102603660046131f6565b61092a565b610214610d52565b610214610db2565b61027d610e12565b6040516102219190613247565b6101d1610298366004612faa565b610f0d565b6102a5611028565b6040516102219190613312565b61027d6110f8565b6101d16102c8366004613374565b6111f3565b6101d16102db366004612f40565b61156d565b6101d16102ee366004612faa565b6116b4565b6101d16103013660046133d7565b61179e565b6102a561197d565b610316611a4d565b6040519015158152602001610221565b6101d1610334366004612faa565b611b08565b6101d1610347366004613401565b611cda565b6101d161035a366004612faa565b611fdd565b6101d161036d366004613401565b6120d5565b610214612252565b6101d1610388366004612f6b565b6122b2565b6101d161039b366004613401565b612482565b60006103ab82612840565b905060006103b88361284e565b905061040c6103c6826128a5565b62ffffff168362ffffff166040518060400160405280601d81526020017f7465737446757a7a5f55706461746549645265666572656e63653a3a310000008152506128b6565b60408051808201909152601d81527f7465737446757a7a5f55706461746549645265666572656e63653a3a32000000602082015261044e90600090819061291d565b505050565b600061045f8242612958565b905061049361046d826129b5565b64ffffffffff164260405180606001604052806022815260200161367a602291396128b6565b604080516060810190915260228082526104de917fffffffffff0000000000000000000000000000000000000000000000000000008481169290861691906138d0602083013961291d565b5050565b60006104ee83836129c8565b90506105406104fc82612a17565b61ffff168361ffff166040518060400160405280601781526020017f7465737446757a7a5f5365744f7261636c6549643a3a310000000000000000008152506128b6565b60408051808201909152601781527f7465737446757a7a5f5365744f7261636c6549643a3a32000000000000000000602082015261044e907fffffff0000000000000000000000000000000000000000000000000000000000838116919086169061291d565b604051632631f2b160e11b8152620fffff62ffffff831611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b5050505060006106288284612a2790919063ffffffff16565b905061065f61063682612a85565b62ffffff168362ffffff16604051806060016040528060248152602001613756602491396128b6565b6040805160608101909152602480825261044e91700fffffffffffffffffffffffffffffffff198481169290871691906135e4602083013961291d565b606060148054806020026020016040519081016040528092919081815260200182805480156106f457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106d6575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561083757600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561082057838290600052602060002001805461079390613426565b80601f01602080910402602001604051908101604052809291908181526020018280546107bf90613426565b801561080c5780601f106107e15761010080835404028352916020019161080c565b820191906000526020600020905b8154815290600101906020018083116107ef57829003601f168201915b505050505081526020019060010190610774565b505050508152505081526020019060010190610722565b50505050905090565b604051632631f2b160e11b8152620fffff62ffffff8316116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561089457600080fd5b505afa1580156108a8573d6000803e3d6000fd5b5050604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156108ff57600080fd5b505af1158015610913573d6000803e3d6000fd5b5050505061044e8183612a2790919063ffffffff16565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56264ffffffffff8084169085161180159061096e5750846040015161ffff16856020015161ffff1611155b80156109845750610fff856040015161ffff1611155b801561099a5750612710856060015161ffff1611155b80156109b057506109c48560a0015161ffff1611155b80156109c85750620fffff8560c0015162ffffff1611155b6040518263ffffffff1660e01b81526004016109e8911515815260200190565b60006040518083038186803b158015610a0057600080fd5b505afa158015610a14573d6000803e3d6000fd5b50506040516372eb5f8160e11b815264ffffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b50505050610ac842610ac2856000015186602001518760400151886060015189608001518a60a001518b60c001518d612a9690979695949392919063ffffffff16565b90612958565b6040516372eb5f8160e11b815264ffffffffff83166004820152909450737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015610b1e57600080fd5b505af1158015610b32573d6000803e3d6000fd5b5050505060008282610b449190613476565b64ffffffffff1690506000846020015161ffff16821015610b6d57610b68866128a5565b610b76565b610b7686612840565b62ffffff1690506000610b8887612b96565b62ffffff169050856020015161ffff168310610bcf57856040015161ffff16831015610bc457610bbf610bba88612ba7565b612b96565b610bc7565b60005b62ffffff1690505b6000610bdb8842612be5565b9050610c2a610be9826128a5565b62ffffff16846040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a31000000008152506128b6565b610c77610c3682612b96565b62ffffff16836040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a32000000008152506128b6565b610ccd610c83826129b5565b64ffffffffff168664ffffffffff166040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a33000000008152506128b6565b610d486084610ce860016a1000000000000000000000613494565b19901b82166084610d0560016a1000000000000000000000613494565b19901b60001b8a166040518060400160405280601c81526020017f7465737446757a7a5f5570646174655265666572656e6365733a3a340000000081525061291d565b5050505050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156106f4576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106d6575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156106f4576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106d6575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156108375760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610ef557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610ea25790505b50505050508152505081526020019060010190610e36565b6000610f18836128a5565b62ffffff1690506000818362ffffff1611610f4157610f3c62ffffff841683613494565b610f50565b610f508262ffffff8516613494565b90506000610f60612710836134a7565b610f6986612b96565b62ffffff16610f7891906134be565b9050610f8385612c5b565b62ffffff168111610f945780610fa3565b610f9d85612c5b565b62ffffff165b90506000610fb18686612c6c565b9050610fe3610fbf82612a85565b62ffffff1683604051806060016040528060278152602001613608602791396128b6565b6040805160608101909152602780825261102091700fffffffffffffffffffffffffffffffff1984811692908a169190613595602083013961291d565b505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561083757838290600052602060002001805461106b90613426565b80601f016020809104026020016040519081016040528092919081815260200182805461109790613426565b80156110e45780601f106110b9576101008083540402835291602001916110e4565b820191906000526020600020905b8154815290600101906020018083116110c757829003601f168201915b50505050508152602001906001019061104c565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156108375760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156111db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116111885790505b5050505050815250508152602001906001019061111c565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56264ffffffffff808516908616118015906112375750856040015161ffff16866020015161ffff1611155b801561124d5750610fff866040015161ffff1611155b80156112635750612710866060015161ffff1611155b801561127957506109c48660a0015161ffff1611155b80156112915750620fffff8660c0015162ffffff1611155b6040518263ffffffff1660e01b81526004016112b1911515815260200190565b60006040518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b50506040516372eb5f8160e11b815264ffffffffff86166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b5050505061138b42610ac286600001518760200151886040015189606001518a608001518b60a001518c60c001518e612a9690979695949392919063ffffffff16565b6040516372eb5f8160e11b815264ffffffffff84166004820152909550737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156113e157600080fd5b505af11580156113f5573d6000803e3d6000fd5b505050506000611418826114124289612be590919063ffffffff16565b90612c6c565b90506000611427878442612cf4565b9050611466611435826128a5565b62ffffff16611443846128a5565b62ffffff166040518060600160405280602681526020016138aa602691396128b6565b6114a361147282612b96565b62ffffff1661148084612b96565b62ffffff16604051806060016040528060268152602001613812602691396128b6565b6114e06114af82612a85565b62ffffff166114bd84612a85565b62ffffff1660405180606001604052806026815260200161362f602691396128b6565b6115196114ec826129b5565b64ffffffffff168564ffffffffff1660405180606001604052806026815260200161369c602691396128b6565b60408051606081019091526026808252611564917fffffffffff00000000000000000000000000000000000000000000000000000084811692908b16919061379c602083013961291d565b50505050505050565b600061157882612a85565b62ffffff169050600061158a83612d0c565b61ffff169050600061271061159f83856134a7565b6115a991906134d1565b9050620fffff81111561163057604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561160957600080fd5b505af115801561161d573d6000803e3d6000fd5b5050505061162a84612ba7565b506116ae565b600061163b85612ba7565b905061166d61164982612b96565b62ffffff1683604051806060016040528060258152602001613655602591396128b6565b604080516060810190915260258082526116ac9172ffffffffffffffffffffffffffffffffffffff19848116929089169190613570602083013961291d565b505b50505050565b604051632631f2b160e11b8152620fffff62ffffff8316116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b5050604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561177357600080fd5b505af1158015611787573d6000803e3d6000fd5b5050505061044e8183612d1c90919063ffffffff16565b604051632631f2b160e11b815264ffffffffff828116908416116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b50506040516372eb5f8160e11b815264ffffffffff85166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063e5d6bf029150602401600060405180830381600087803b15801561185f57600080fd5b505af1158015611873573d6000803e3d6000fd5b5060009250611886915082905042612958565b6040516372eb5f8160e11b815264ffffffffff84166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156118dc57600080fd5b505af11580156118f0573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561195257600080fd5b505af1158015611966573d6000803e3d6000fd5b505050506116ae4282612be590919063ffffffff16565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156108375783829060005260206000200180546119c090613426565b80601f01602080910402602001604051908101604052809291908181526020018280546119ec90613426565b8015611a395780601f10611a0e57610100808354040283529160200191611a39565b820191906000526020600020905b815481529060010190602001808311611a1c57829003601f168201915b5050505050815260200190600101906119a1565b60075460009060ff1615611a65575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0191906134f3565b1415905090565b6000611b1383612840565b905060008262ffffff168262ffffff1611611b3757611b32828461350c565b611b41565b611b41838361350c565b9050611b96611b508585612d8a565b62ffffff168262ffffff166040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a310000000000000000008152506128b6565b6000611ba28585612dba565b9050611bf6611bb082612840565b62ffffff168562ffffff166040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a320000000000000000008152506128b6565b611c45611c038286612d8a565b62ffffff1660006040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a330000000000000000008152506128b6565b611c98611c528285612d8a565b62ffffff168362ffffff166040518060400160405280601781526020017f7465737446757a7a5f53657441637469766549643a3a340000000000000000008152506128b6565b60408051808201909152601781527f7465737446757a7a5f53657441637469766549643a3a3500000000000000000060208201526116ac90600090819061291d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316634c63e562826040015161ffff16836020015161ffff1611158015611d365750610fff836040015161ffff1611155b8015611d4c5750612710836060015161ffff1611155b8015611d6257506109c48360a0015161ffff1611155b8015611d7a5750620fffff8360c0015162ffffff1611155b6040518263ffffffff1660e01b8152600401611d9a911515815260200190565b60006040518083038186803b158015611db257600080fd5b505afa158015611dc6573d6000803e3d6000fd5b50508251602084015160408501516060860151608087015160a088015160c089015162ffffff19985060009750611e2b968b9661ffff9182168b17969082168b17959082168b17949082168b179362ffffff9182168c179392168b1791168a17612a96565b9050611e58607082901c607086901c60405180606001604052806028815260200161370c6028913961291d565b611e8f611e6482612e09565b61ffff16846000015161ffff16604051806060016040528060288152602001613548602891396128b6565b611ec6611e9b82612e15565b61ffff16846020015161ffff16604051806060016040528060288152602001613838602891396128b6565b611efd611ed282612e25565b61ffff16846040015161ffff166040518060600160405280602881526020016137ea602891396128b6565b611f34611f0982612d0c565b61ffff16846060015161ffff16604051806060016040528060288152602001613860602891396128b6565b611f6d611f4082612e35565b62ffffff16846080015162ffffff166040518060600160405280602881526020016137c2602891396128b6565b611fa4611f7982612e46565b61ffff168460a0015161ffff166040518060600160405280602881526020016135bc602891396128b6565b6116ae611fb082612c5b565b62ffffff168460c0015162ffffff166040518060600160405280602881526020016136c2602891396128b6565b604051632631f2b160e11b8152620fffff62ffffff831611156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b50505050600061205f8284612d1c90919063ffffffff16565b905061209661206d82612b96565b62ffffff168362ffffff166040518060600160405280602281526020016138f2602291396128b6565b6040805160608101909152602280825261044e9172ffffffffffffffffffffffffffffffffffffff1984811692908716919061377a602083013961291d565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316634c63e562826040015161ffff16836020015161ffff16118061212e5750610fff836040015161ffff16115b806121425750612710836060015161ffff16115b8061215657506109c48360a0015161ffff16115b8061216c5750620fffff8360c0015162ffffff16115b6040518263ffffffff1660e01b815260040161218c911515815260200190565b60006040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b5050604051630618f58760e51b8152631c07203f60e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561220f57600080fd5b505af1158015612223573d6000803e3d6000fd5b50508251602084015160408501516060860151608087015160a088015160c089015161044e98508a9750612a96565b606060138054806020026020016040519081016040528092919081815260200182805480156106f4576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106d6575050505050905090565b60006122be8383612e56565b905060006122cc8484612e7a565b905061231b828461ffff166122e087612e09565b61ffff166122ee91906134a7565b6122fd906402540be4006134a7565b604051806060016040528060228152602001613734602291396128b6565b60008361ffff1661232b86612a85565b62ffffff1661233a91906134a7565b905061239782606461234b88612e35565b62ffffff1661235a85806134a7565b61236491906134a7565b61236f9060636134be565b61237991906134d1565b6040518060600160405280602281526020016136ea602291396128b6565b6fffffffffffffffffffffffffffffffff6123b283856134be565b1015612404576123ff6123c58686612ec1565b6fffffffffffffffffffffffffffffffff166123e184866134be565b604051806060016040528060228152602001613888602291396128b6565b6116ac565b604051630618f58760e51b8152632f45db3d60e21b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561245757600080fd5b505af115801561246b573d6000803e3d6000fd5b505050506110208486612ec190919063ffffffff16565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316634c63e562826040015161ffff16836020015161ffff16111580156124de5750610fff836040015161ffff1611155b80156124f45750612710836060015161ffff1611155b801561250a57506109c48360a0015161ffff1611155b80156125225750620fffff8360c0015162ffffff1611155b6040518263ffffffff1660e01b8152600401612542911515815260200190565b60006040518083038186803b15801561255a57600080fd5b505afa15801561256e573d6000803e3d6000fd5b50508251602084015160408501516060860151608087015160a088015160c0890151600098506125a697508a96959493929190612a96565b90506125f0607082901c607085901c6040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a310081525061291d565b6126446125fc82612e09565b61ffff16836000015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a32008152506128b6565b61269861265082612e15565b61ffff16836020015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a33008152506128b6565b6126ec6126a482612e25565b61ffff16836040015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a34008152506128b6565b6127406126f882612d0c565b61ffff16836060015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a35008152506128b6565b61279661274c82612e35565b62ffffff16836080015162ffffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a36008152506128b6565b6127ea6127a282612e46565b61ffff168360a0015161ffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a37008152506128b6565b61044e6127f682612c5b565b62ffffff168360c0015162ffffff166040518060400160405280601f81526020017f7465737446757a7a5f537461746963466565506172616d65746572733a3a38008152506128b6565b600060e882901c5b92915050565b60008061285a83612840565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b16175b9392505050565b60006128488260981c62ffffff1690565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906128f190869086908690600401613528565b60006040518083038186803b15801561290957600080fd5b505afa158015611564573d6000803e3d6000fd5b604051630c1fa1ed60e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1fa1ed0906128f190869086908690600401613528565b60008061296483612ee0565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16175b949350505050565b60006128488260b01c64ffffffffff1690565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b161761289e565b60006128488260d81c61ffff1690565b6000620fffff8262ffffff161115612a5257604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b161761289e565b60006128488260701c620fffff1690565b60008561ffff168761ffff161180612ab35750610fff8661ffff16115b80612ac357506127108561ffff16115b80612ad357506109c48361ffff16115b80612ae55750620fffff8262ffffff16115b15612b0357604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006128488260841c620fffff1690565b600080612bb383612a85565b62ffffff1690506000612bc584612d0c565b61ffff16905061271082820204612bdc8582612d1c565b95945050505050565b600080612bf1846129b5565b612c029064ffffffffff1684613494565b9050612c0d84612e15565b61ffff168110612c5157612c208461284e565b9350612c2b84612e25565b61ffff168110612c4557612c40846000612d1c565b612c4e565b612c4e84612ba7565b93505b6129ad8484612958565b600061284882605c1c620fffff1690565b600080612c78846128a5565b62ffffff169050600080828562ffffff1611612c9b578462ffffff168303612ca4565b828562ffffff16035b91506127108202612cb487612b96565b62ffffff160190506000612cc787612c5b565b62ffffff169050808211612cdb5781612cdd565b805b9150612ce98783612a27565b979650505050505050565b6000612d008483612be5565b93506129ad8484612c6c565b60006128488260281c613fff1690565b6000620fffff8262ffffff161115612d4757604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b161761289e565b600080612d9684612840565b90508062ffffff168362ffffff1611612db1578281036129ad565b90910392915050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b161761289e565b600061ffff8216612848565b60006128488260101c610fff1690565b600061284882601c1c610fff1690565b60006128488260361c62ffffff1690565b600061284882604e1c613fff1690565b60008161ffff16612e6684612e09565b61ffff16026402540be40002905092915050565b600080612e8684612e35565b62ffffff1690508015612eba5760008361ffff16612ea386612a85565b62ffffff1602905060646063828002840201049250505b5092915050565b600061289e612ed08484612e7a565b612eda8585612e56565b01612f0d565b8064ffffffffff81168114612f08576040516350dbfc8760e11b815260040160405180910390fd5b919050565b806fffffffffffffffffffffffffffffffff81168114612f0857604051632f45db3d60e21b815260040160405180910390fd5b600060208284031215612f5257600080fd5b5035919050565b803561ffff81168114612f0857600080fd5b60008060408385031215612f7e57600080fd5b82359150612f8e60208401612f59565b90509250929050565b803562ffffff81168114612f0857600080fd5b60008060408385031215612fbd57600080fd5b82359150612f8e60208401612f97565b6020808252825182820181905260009190848201906040850190845b8181101561300e5783516001600160a01b031683529284019291840191600101612fe9565b50909695505050505050565b6000815180845260005b8181101561304057602081850181015186830182015201613024565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561311057603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156130fa57605f198985030183526130e884865161301a565b948e01949350918d01916001016130cc565b505050978a019794505091880191600101613087565b50919a9950505050505050505050565b600060e0828403121561313257600080fd5b60405160e0810181811067ffffffffffffffff8211171561316357634e487b7160e01b600052604160045260246000fd5b60405290508061317283612f59565b815261318060208401612f59565b602082015261319160408401612f59565b60408201526131a260608401612f59565b60608201526131b360808401612f97565b60808201526131c460a08401612f59565b60a08201526131d560c08401612f97565b60c08201525092915050565b803564ffffffffff81168114612f0857600080fd5b600080600080610140858703121561320d57600080fd5b8435935061321e8660208701613120565b925061322d61010086016131e1565b915061323c61012086016131e1565b905092959194509250565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561330357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156132ee5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906132ac565b50978a0197955050509187019160010161326f565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561336757603f1988860301845261335585835161301a565b94509285019290850190600101613339565b5092979650505050505050565b6000806000806000610160868803121561338d57600080fd5b8535945061339e8760208801613120565b93506133ad61010087016131e1565b92506133bc61012087016131e1565b91506133cb6101408701612f97565b90509295509295909350565b600080604083850312156133ea57600080fd5b6133f3836131e1565b9150612f8e602084016131e1565b600080610100838503121561341557600080fd5b82359150612f8e8460208501613120565b600181811c9082168061343a57607f821691505b60208210810361345a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b64ffffffffff828116828216039080821115612eba57612eba613460565b8181038181111561284857612848613460565b808202811582820484141761284857612848613460565b8082018082111561284857612848613460565b6000826134ee57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561350557600080fd5b5051919050565b62ffffff828116828216039080821115612eba57612eba613460565b838152826020820152606060408201526000612bdc606083018461301a56fe7465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a327465737446757a7a5f557064617465566f6c6174696c6974795265666572656e63653a3a327465737446757a7a5f557064617465566f6c6174696c697479416363756d756c61746f723a3a327465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a377465737446757a7a5f536574566f6c6174696c697479416363756d756c61746f723a3a327465737446757a7a5f557064617465566f6c6174696c697479416363756d756c61746f723a3a317465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a337465737446757a7a5f557064617465566f6c6174696c6974795265666572656e63653a3a317465737446757a7a5f55706461746554696d654f664c6173745570646174653a3a317465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a347465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a387465737446757a7a5f67657442617365416e645661726961626c65466565733a3a327465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a317465737446757a7a5f67657442617365416e645661726961626c65466565733a3a317465737446757a7a5f536574566f6c6174696c697479416363756d756c61746f723a3a317465737446757a7a5f536574566f6c6174696c6974795265666572656e63653a3a327465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a357465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a367465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a347465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a327465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a337465737446757a7a5f537461746963466565506172616d65746572734469727479426974733a3a357465737446757a7a5f67657442617365416e645661726961626c65466565733a3a337465737446757a7a5f557064617465566f6c6174696c697479506172616d65746572733a3a317465737446757a7a5f55706461746554696d654f664c6173745570646174653a3a327465737446757a7a5f536574566f6c6174696c6974795265666572656e63653a3a31a2646970667358221220c417120b2e3c528a568a6dcb253e6696adfe510c31a016d4b22d72e81f62755264736f6c63430008140033","sourceMap":"144:16412:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9226:528;;;;;;:::i;:::-;;:::i;:::-;;9760:540;;;;;;:::i;:::-;;:::i;5014:477::-;;;;;;:::i;:::-;;:::i;6459:643::-;;;;;;:::i;:::-;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;7108:335:108:-;;;;;;:::i;:::-;;:::i;12302:1899::-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;11318:978:108:-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;14557:1997:108:-;;;;;;:::i;:::-;;:::i;10306:1006::-;;;;;;:::i;:::-;;:::i;6128:325::-;;;;;;:::i;:::-;;:::i;14207:344::-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;8902:14:127;;8895:22;8877:41;;8865:2;8850:18;1243:204:1;8737:187:127;7449:905:108;;;;;;:::i;:::-;;:::i;497:2036::-;;;;;;:::i;:::-;;:::i;5497:625::-;;;;;;:::i;:::-;;:::i;4219:789::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;8360:860:108:-;;;;;;:::i;:::-;;:::i;2539:1674::-;;;;;;:::i;:::-;;:::i;9226:528::-;9302:15;9320:20;:6;:18;:20::i;:::-;9302:38;;9351:17;9371:26;:6;:24;:26::i;:::-;9351:46;;9408:79;9417:26;:9;:24;:26::i;:::-;9408:79;;9445:8;9408:79;;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;9497:250;;;;;;;;;;;;;;;;;;;9539:60;;;;9497:8;:250::i;:::-;9292:462;;9226:528;:::o;9760:540::-;9841:17;9861:46;:6;9891:15;9861:29;:46::i;:::-;9841:66;;9918:96;9927:31;:9;:29;:31::i;:::-;9918:96;;9960:15;9918:96;;;;;;;;;;;;;;;;;:8;:96::i;:::-;10024:269;;;;;;;;;;;;;;;10066:67;10046:88;;;;10148:85;;;;10024:269;;;;;;:8;:269::i;:::-;9831:469;9760:540;:::o;5014:477::-;5101:17;5121:28;:6;5140:8;5121:18;:28::i;:::-;5101:48;;5160:70;5169:23;:9;:21;:23::i;:::-;5160:70;;5194:8;5160:70;;;;;;;;;;;;;;;;;;;:8;:70::i;:::-;5240:244;;;;;;;;;;;;;;;;;;;5282:60;5262:81;;;;5357:78;;;;5240:8;:244::i;6459:643::-;6572:55;;-1:-1:-1;;;6572:55:108;;510:7:76;6582:44:108;;;;;6572:55;;;8877:41:127;6572:9:108;;;;8850:18:127;;6572:55:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6638:17;6658:54;6690:21;6658:6;:31;;:54;;;;:::i;:::-;6638:74;;6723:109;6732:36;:9;:34;:36::i;:::-;6723:109;;6770:21;6723:109;;;;;;;;;;;;;;;;;;;:8;:109::i;:::-;6842:253;;;;;;;;;;;;;;;-1:-1:-1;;6864:79:108;;;;6957:76;;;;6842:253;;;;;;:8;:253::i;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;7108:335:108:-;7223:54;;-1:-1:-1;;;7223:54:108;;510:7:76;7233:43:108;;;;7223:54;;;8877:41:127;7223:9:108;;;;8850:18:127;;7223:54:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7288:84:108;;-1:-1:-1;;;7288:84:108;;-1:-1:-1;;;7288:84:108;;;9785:52:127;7288:15:108;;-1:-1:-1;7288:15:108;;-1:-1:-1;9758:18:127;;7288:84:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7382:54;7414:21;7382:6;:31;;:54;;;;:::i;12302:1899::-;12450:9;;12473:20;;;;;;;;;;;:59;;;12517:3;:15;;;12497:35;;:3;:16;;;:35;;;;12473:59;:101;;;;;355:5:76;12536:3:108;:15;;;:38;;;;12473:101;:169;;;;;623:6:65;12594:3:108;:19;;;:48;;;;12473:169;:222;;;;;549:5:65;12646:3:108;:17;;;:49;;;;12473:222;:293;;;;;510:7:76;12715:3:108;:28;;;:51;;;;12473:293;12450:326;;;;;;;;;;;;;8902:14:127;8895:22;8877:41;;8865:2;8850:18;;8737:187;12450:326:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12787:21:108;;-1:-1:-1;;;12787:21:108;;10023:12:127;10011:25;;12787:21:108;;;9993:44:127;12787:7:108;;-1:-1:-1;12787:7:108;;-1:-1:-1;9966:18:127;;12787:21:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12828:308;13120:15;12828:268;12871:3;:14;;;12899:3;:16;;;12929:3;:15;;;12958:3;:19;;;12991:3;:22;;;13027:3;:17;;;13058:3;:28;;;12828:6;:29;;:268;;;;;;;;;;:::i;:::-;:291;;:308::i;:::-;13147:13;;-1:-1:-1;;;13147:13:108;;10023:12:127;10011:25;;13147:13:108;;;9993:44:127;12819:317:108;;-1:-1:-1;13147:7:108;;;;9966:18:127;;13147:13:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13171:17;13198:12;13191:4;:19;;;;:::i;:::-;13171:39;;;;13221:19;13256:3;:16;;;13243:29;;:9;:29;;:78;;13298:23;:6;:21;:23::i;:::-;13243:78;;;13275:20;:6;:18;:20::i;:::-;13221:100;;;;13332:20;13355:31;:6;:29;:31::i;:::-;13332:54;;;;13413:3;:16;;;13400:29;;:9;:29;13396:185;;13489:3;:15;;;13476:28;;:9;:28;;:94;;13511:59;:34;:6;:32;:34::i;:::-;:57;:59::i;:::-;13476:94;;;13507:1;13476:94;13445:125;;;;13396:185;13591:17;13611:40;:6;13635:15;13611:23;:40::i;:::-;13591:60;;13662:81;13671:26;:9;:24;:26::i;:::-;13662:81;;13699:11;13662:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;13753:90;13762:34;:9;:32;:34::i;:::-;13753:90;;13798:12;13753:90;;;;;;;;;;;;;;;;;:8;:90::i;:::-;13853:79;13862:31;:9;:29;:31::i;:::-;13853:79;;13895:4;13853:79;;;;;;;;;;;;;;;;;;;:8;:79::i;:::-;13943:251;1637:3:70;13987:20:108;14006:1;13995:7;13987:20;:::i;:::-;13985:23;:61;;13965:82;;1637:3:70;14080:20:108;14099:1;14088:7;14080:20;:::i;:::-;14078:23;:61;;14070:70;;14061:6;:79;13943:251;;;;;;;;;;;;;;;;;:8;:251::i;:::-;12440:1761;;;;12302:1899;;;;:::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11318:978:108;11422:19;11444:23;:6;:21;:23::i;:::-;11422:45;;;;11477:15;11506:11;11495:8;:22;;;:72;;11545:22;;;;:11;:22;:::i;:::-;11495:72;;;11520:22;11531:11;11520:22;;;;:::i;:::-;11477:90;-1:-1:-1;11578:22:108;11637:35;623:6:65;11477:90:108;11637:35;:::i;:::-;11603:31;:6;:29;:31::i;:::-;:69;;;;;;:::i;:::-;11578:94;;11716:36;:6;:34;:36::i;:::-;11699:53;;:14;:53;:133;;11818:14;11699:133;;;11767:36;:6;:34;:36::i;:::-;11699:133;;;11682:150;-1:-1:-1;11843:17:108;11863:44;:6;11898:8;11863:34;:44::i;:::-;11843:64;;11918:105;11927:36;:9;:34;:36::i;:::-;11918:105;;11965:14;11918:105;;;;;;;;;;;;;;;;;:8;:105::i;:::-;12033:256;;;;;;;;;;;;;;;-1:-1:-1;;12055:79:108;;;;12148:76;;;;12033:256;;;;;;:8;:256::i;:::-;11412:884;;;;11318:978;;:::o;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14557:1997:108;14766:9;;14789:20;;;;;;;;;;;:59;;;14833:3;:15;;;14813:35;;:3;:16;;;:35;;;;14789:59;:101;;;;;355:5:76;14852:3:108;:15;;;:38;;;;14789:101;:169;;;;;623:6:65;14910:3:108;:19;;;:48;;;;14789:169;:222;;;;;549:5:65;14962:3:108;:17;;;:49;;;;14789:222;:293;;;;;510:7:76;15031:3:108;:28;;;:51;;;;14789:293;14766:326;;;;;;;;;;;;;8902:14:127;8895:22;8877:41;;8865:2;8850:18;;8737:187;14766:326:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15103:21:108;;-1:-1:-1;;;15103:21:108;;10023:12:127;10011:25;;15103:21:108;;;9993:44:127;15103:7:108;;-1:-1:-1;15103:7:108;;-1:-1:-1;9966:18:127;;15103:21:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15144:308;15436:15;15144:268;15187:3;:14;;;15215:3;:16;;;15245:3;:15;;;15274:3;:19;;;15307:3;:22;;;15343:3;:17;;;15374:3;:28;;;15144:6;:29;;:268;;;;;;;;;;:::i;:308::-;15463:13;;-1:-1:-1;;;15463:13:108;;10023:12:127;10011:25;;15463:13:108;;;9993:44:127;15135:317:108;;-1:-1:-1;15463:7:108;;;;9966:18:127;;15463:13:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15487:21;15511:78;15580:8;15511:40;15535:15;15511:6;:23;;:40;;;;:::i;:::-;:68;;:78::i;:::-;15487:102;-1:-1:-1;15599:17:108;15619:60;:6;15653:8;15663:15;15619:33;:60::i;:::-;15599:80;;15690:110;15699:26;:9;:24;:26::i;:::-;15690:110;;15727:30;:13;:28;:30::i;:::-;15690:110;;;;;;;;;;;;;;;;;;;:8;:110::i;:::-;15810:172;15832:34;:9;:32;:34::i;:::-;15810:172;;15880:38;:13;:36;:38::i;:::-;15810:172;;;;;;;;;;;;;;;;;;;:8;:172::i;:::-;15992:176;16014:36;:9;:34;:36::i;:::-;15992:176;;16064:40;:13;:38;:40::i;:::-;15992:176;;;;;;;;;;;;;;;;;;;:8;:176::i;:::-;16178:89;16187:31;:9;:29;:31::i;:::-;16178:89;;16220:4;16178:89;;;;;;;;;;;;;;;;;;;:8;:89::i;:::-;16278:269;;;;;;;;;;;;;;;16320:65;16300:86;;;;16400:83;;;;16278:269;;;;;;:8;:269::i;:::-;14756:1798;;14557:1997;;;;;:::o;10306:1006::-;10385:22;10410:33;:6;:31;:33::i;:::-;10385:58;;;;10453:23;10479:27;:6;:25;:27::i;:::-;10453:53;;;-1:-1:-1;10517:25:108;623:6:65;10545:32:108;10453:53;10545:14;:32;:::i;:::-;:60;;;;:::i;:::-;10517:88;;510:7:76;10620:17:108;:39;10616:690;;;10675:84;;-1:-1:-1;;;10675:84:108;;-1:-1:-1;;;10675:84:108;;;9785:52:127;10675:15:108;;;;9758:18:127;;10675:84:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10773:34;:6;:32;:34::i;:::-;;10616:690;;;10838:17;10858:34;:6;:32;:34::i;:::-;10838:54;;10907:104;10916:34;:9;:32;:34::i;:::-;10907:104;;10952:17;10907:104;;;;;;;;;;;;;;;;;:8;:104::i;:::-;11025:270;;;;;;;;;;;;;;;-1:-1:-1;;11051:79:108;;;;11148:76;;;;11025:270;;;;;;:8;:270::i;:::-;10824:482;10616:690;10375:937;;;10306:1006;:::o;6128:325::-;6239:52;;-1:-1:-1;;;6239:52:108;;510:7:76;6249:41:108;;;;6239:52;;;8877:41:127;6239:9:108;;;;8850:18:127;;6239:52:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6302:84:108;;-1:-1:-1;;;6302:84:108;;-1:-1:-1;;;6302:84:108;;;9785:52:127;6302:15:108;;-1:-1:-1;6302:15:108;;-1:-1:-1;9758:18:127;;6302:84:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6396:50;6426:19;6396:6;:29;;:50;;;;:::i;14207:344::-;14302:30;;-1:-1:-1;;;14302:30:108;;14312:19;;;;;;;;14302:30;;;8877:41:127;14302:9:108;;;;8850:18:127;;14302:30:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14343:21:108;;-1:-1:-1;;;14343:21:108;;10023:12:127;10011:25;;14343:21:108;;;9993:44:127;14343:7:108;;-1:-1:-1;14343:7:108;;-1:-1:-1;9966:18:127;;14343:21:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14375:14:108;;-1:-1:-1;14392:50:108;;-1:-1:-1;14375:14:108;;-1:-1:-1;14426:15:108;14392:33;:50::i;:::-;14453:13;;-1:-1:-1;;;14453:13:108;;10023:12:127;10011:25;;14453:13:108;;;9993:44:127;14375:67:108;;-1:-1:-1;14453:7:108;;;;9966:18:127;;14453:13:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;14477:15:108;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14504:40;14528:15;14504:6;:23;;:40;;;;:::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;11326:74:127;;;1398:17:1;11416:18:127;;;11409:34;1428:1:1;;1377:7;;11299:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;7449:905:108:-;7536:23;7562:20;:6;:18;:20::i;:::-;7536:46;;7592:14;7628:8;7609:27;;:16;:27;;;:87;;7669:27;7680:16;7669:8;:27;:::i;:::-;7609:87;;;7639:27;7658:8;7639:16;:27;:::i;:::-;7592:104;-1:-1:-1;7706:73:108;7715:27;:6;7733:8;7715:17;:27::i;:::-;7706:73;;7744:7;7706:73;;;;;;;;;;;;;;;;;;;:8;:73::i;:::-;7790:17;7810:28;:6;7829:8;7810:18;:28::i;:::-;7790:48;;7849:70;7858:23;:9;:21;:23::i;:::-;7849:70;;7883:8;7849:70;;;;;;;;;;;;;;;;;;;:8;:70::i;:::-;7929;7938:30;:9;7959:8;7938:20;:30::i;:::-;7929:70;;7970:1;7929:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;8009:84;8018:38;:9;8039:16;8018:20;:38::i;:::-;8009:84;;8058:7;8009:84;;;;;;;;;;;;;;;;;;;:8;:84::i;:::-;8103:244;;;;;;;;;;;;;;;;;;;8145:60;;;;8103:8;:244::i;497:2036::-;317:28:0;309:37;;-1:-1:-1;;;;;616:9:108;;659:3;:15;;;639:35;;:3;:16;;;:35;;;;:77;;;;;355:5:76;678:3:108;:15;;;:38;;;;639:77;:145;;;;;623:6:65;736:3:108;:19;;;:48;;;;639:145;:198;;;;;549:5:65;788:3:108;:17;;;:49;;;;639:198;:269;;;;;510:7:76;857:3:108;:28;;;:51;;;;639:269;616:302;;;;;;;;;;;;;8902:14:127;8895:22;8877:41;;8865:2;8850:18;;8737:187;616:302:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1061:14:108;;1118:16;;;;1177:15;;;;1235:19;;;;1297:22;;;;1362:17;;;;1422:28;;;;-1:-1:-1;;949:23:108;-1:-1:-1;929:17:108;;-1:-1:-1;1003:471:108;;:6;;1053:23;;;;:35;;;1110:25;;;:37;;;1169:24;;;:36;;;1227:28;;;:40;;;1289:31;;;;:43;;;1354:26;;:38;;;1414:37;:49;;1003:29;:471::i;:::-;983:491;;1485:193;1585:3:70;1507:9:108;:47;;1585:3:70;1568:6:108;:44;;1485:193;;;;;;;;;;;;;;;;;:8;:193::i;:::-;1689:95;1698:25;:9;:23;:25::i;:::-;1689:95;;1725:3;:14;;;1689:95;;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;1794:99;1803:27;:9;:25;:27::i;:::-;1794:99;;1832:3;:16;;;1794:99;;;;;;;;;;;;;;;;;;;:8;:99::i;:::-;1903:97;1912:26;:9;:24;:26::i;:::-;1903:97;;1940:3;:15;;;1903:97;;;;;;;;;;;;;;;;;;;:8;:97::i;:::-;2010:105;2019:30;:9;:28;:30::i;:::-;2010:105;;2051:3;:19;;;2010:105;;;;;;;;;;;;;;;;;;;:8;:105::i;:::-;2125:111;2134:33;:9;:31;:33::i;:::-;2125:111;;2169:3;:22;;;2125:111;;;;;;;;;;;;;;;;;;;:8;:111::i;:::-;2246:101;2255:28;:9;:26;:28::i;:::-;2246:101;;2285:3;:17;;;2246:101;;;;;;;;;;;;;;;;;;;:8;:101::i;:::-;2357:169;2379:39;:9;:37;:39::i;:::-;2357:169;;2432:3;:28;;;2357:169;;;;;;;;;;;;;;;;;;;:8;:169::i;5497:625::-;5606:53;;-1:-1:-1;;;5606:53:108;;510:7:76;5616:42:108;;;;;5606:53;;;8877:41:127;5606:9:108;;;;8850:18:127;;5606:53:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5670:17;5690:50;5720:19;5690:6;:29;;:50;;;;:::i;:::-;5670:70;;5751:103;5760:34;:9;:32;:34::i;:::-;5751:103;;5796:19;5751:103;;;;;;;;;;;;;;;;;;;:8;:103::i;:::-;5864:251;;;;;;;;;;;;;;;-1:-1:-1;;5886:79:108;;;;5979:76;;;;5864:251;;;;;;:8;:251::i;4219:789::-;317:28:0;309:37;;-1:-1:-1;;;;;4331:9:108;;4373:3;:15;;;4354:34;;:3;:16;;;:34;;;:75;;;;355:5:76;4392:3:108;:15;;;:37;;;4354:75;:142;;;;623:6:65;4449:3:108;:19;;;:47;;;4354:142;:194;;;;549:5:65;4500:3:108;:17;;;:48;;;4354:194;:264;;;;510:7:76;4568:3:108;:28;;;:50;;;4354:264;4331:297;;;;;;;;;;;;;8902:14:127;8895:22;8877:41;;8865:2;8850:18;;8737:187;4331:297:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4639:84:108;;-1:-1:-1;;;4639:84:108;;-1:-1:-1;;;4639:84:108;;;9785:52:127;4639:15:108;;-1:-1:-1;4639:15:108;;-1:-1:-1;9758:18:127;;4639:84:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4776:14:108;;4804:16;;;;4834:15;;;;4863:19;;;;4896:22;;;;4932:17;;;;4963:28;;;;4733:268;;-1:-1:-1;4733:6:108;;-1:-1:-1;4733:29:108;:268::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;8360:860:108:-;8452:15;8470:26;:6;8488:7;8470:17;:26::i;:::-;8452:44;-1:-1:-1;8506:19:108;8528:30;:6;8550:7;8528:21;:30::i;:::-;8506:52;;8569:105;8578:7;8621;8587:41;;8595:22;:6;:20;:22::i;:::-;8587:31;;:41;;;;:::i;:::-;:48;;8631:4;8587:48;:::i;:::-;8569:105;;;;;;;;;;;;;;;;;:8;:105::i;:::-;8685:12;8745:7;8700:52;;8708:33;:6;:31;:33::i;:::-;8700:42;;:52;;;;:::i;:::-;8685:67;;8762:140;8784:11;8851:3;8812:30;:6;:28;:30::i;:::-;8798:44;;:11;8805:4;;8798:11;:::i;:::-;:44;;;;:::i;:::-;:49;;8845:2;8798:49;:::i;:::-;8797:57;;;;:::i;:::-;8762:140;;;;;;;;;;;;;;;;;:8;:140::i;:::-;8941:17;8917:21;8927:11;8917:7;:21;:::i;:::-;:41;8913:301;;;8974:98;8983:27;:6;9002:7;8983:18;:27::i;:::-;8974:98;;9012:21;9022:11;9012:7;:21;:::i;:::-;8974:98;;;;;;;;;;;;;;;;;:8;:98::i;:::-;8913:301;;;9103:59;;-1:-1:-1;;;9103:59:108;;-1:-1:-1;;;9103:59:108;;;9785:52:127;9103:15:108;;;;9758:18:127;;9103:59:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9176:27;9195:7;9176:6;:18;;:27;;;;:::i;2539:1674::-;317:28:0;309:37;;-1:-1:-1;;;;;2649:9:108;;2692:3;:15;;;2672:35;;:3;:16;;;:35;;;;:77;;;;;355:5:76;2711:3:108;:15;;;:38;;;;2672:77;:145;;;;;623:6:65;2769:3:108;:19;;;:48;;;;2672:145;:198;;;;;549:5:65;2821:3:108;:17;;;:49;;;;2672:198;:269;;;;;510:7:76;2890:3:108;:28;;;:51;;;;2672:269;2649:302;;;;;;;;;;;;;8902:14:127;8895:22;8877:41;;8865:2;8850:18;;8737:187;2649:302:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3025:14:108;;3053:16;;;;3083:15;;;;3112:19;;;;3145:22;;;;3181:17;;;;3212:28;;;;2962:17;;-1:-1:-1;2982:268:108;;-1:-1:-1;2982:6:108;;3025:14;3053:16;3083:15;3112:19;3145:22;3181:17;2982:29;:268::i;:::-;2962:288;;3261:184;1585:3:70;3283:9:108;:47;;1585:3:70;3344:6:108;:44;;3261:184;;;;;;;;;;;;;;;;;:8;:184::i;:::-;3456:86;3465:25;:9;:23;:25::i;:::-;3456:86;;3492:3;:14;;;3456:86;;;;;;;;;;;;;;;;;;;:8;:86::i;:::-;3552:90;3561:27;:9;:25;:27::i;:::-;3552:90;;3590:3;:16;;;3552:90;;;;;;;;;;;;;;;;;;;:8;:90::i;:::-;3652:88;3661:26;:9;:24;:26::i;:::-;3652:88;;3689:3;:15;;;3652:88;;;;;;;;;;;;;;;;;;;:8;:88::i;:::-;3750:96;3759:30;:9;:28;:30::i;:::-;3750:96;;3791:3;:19;;;3750:96;;;;;;;;;;;;;;;;;;;:8;:96::i;:::-;3856:102;3865:33;:9;:31;:33::i;:::-;3856:102;;3900:3;:22;;;3856:102;;;;;;;;;;;;;;;;;;;:8;:102::i;:::-;3968:92;3977:28;:9;:26;:28::i;:::-;3968:92;;4007:3;:17;;;3968:92;;;;;;;;;;;;;;;;;;;:8;:92::i;:::-;4070:136;4092:39;:9;:37;:39::i;:::-;4070:136;;4133:3;:28;;;4070:136;;;;;;;;;;;;;;;;;;;:8;:136::i;8048:142:70:-;8108:15;1857:3;5648:20:76;;;8146:37:70;8135:48;8048:142;-1:-1:-1;;8048:142:70:o;14511:212::-;14577:17;14606:15;14624:19;14636:6;14624:11;:19::i;:::-;14606:37;-1:-1:-1;1333:22:76;1320:36;;1398:29;1688:3:70;1398:29:76;;;;1383:45;14660:56:70;14653:63;14511:212;-1:-1:-1;;;14511:212:70:o;6684:148::-;6747:18;6791:34;:6;1688:3;5648:20:76;5670:11;5644:38;;5510:188;2386:134:1;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3826:134;3924:29;;-1:-1:-1;;;3924:29:1;;:11;;;;:29;;3936:4;;3942:5;;3949:3;;3924:29;;;:::i;14968:251:70:-;15058:17;15087:18;15108;:9;:16;:18::i;:::-;15087:39;-1:-1:-1;1333:22:76;1320:36;;1398:29;1749:3:70;1398:29:76;;;;1383:45;15143:69:70;15136:76;14968:251;-1:-1:-1;;;;14968:251:70:o;7167:173::-;7235:23;7289:44;:6;1749:3;6098:20:76;6120:11;6094:38;;5960:188;10754:169:70;10831:7;1333:22:76;1320:36;;1398:29;1803:3:70;1398:29:76;;;;1383:45;10857:59:70;1127:317:76;7637:142:70;7697:15;7735:37;:6;1803:3;4705:20:76;4727:11;4701:38;;4567:188;11673:268:70;11761:7;510::76;11784:6:70;:28;;;11780:81;;;11821:40;;-1:-1:-1;;;11821:40:70;;;;;;;;;;;11780:81;-1:-1:-1;;1320:36:76;;1398:29;1585:3:70;1398:29:76;;;;1383:45;11879:55:70;1127:317:76;5673:179:70;5746:28;5810:35;:6;1585:3;5198:20:76;5220:11;5194:38;;5060:188;12911:1397:70;13218:17;13279:11;13264:26;;:12;:26;;;:63;;;;355:5:76;13294:11:70;:33;;;13264:63;:126;;;;623:6:65;13347:15:70;:43;;;13264:126;:174;;;;549:5:65;13394:13:70;:44;;;13264:174;:240;;;;510:7:76;13458:24:70;:46;;;13264:240;13247:315;;;13522:40;;-1:-1:-1;;;13522:40:70;;;;;;;;;;;13247:315;-1:-1:-1;1246:2:70;1398:29:76;;;;;;13585:66:70;;;;;1410:16:76;;;;1302:2:70;1398:29:76;;;;;;1410:16;;;;1362:2:70;1398:29:76;;;;;;1410:16;1421:2:70;1398:29:76;;;;;;1410:16;1479:2:70;1398:29:76;;;;;;1410:16;;;;1534:2:70;1398:29:76;;;;;;1410:16;-1:-1:-1;;1320:36:76;;;;1383:45;;12911:1397:70:o;6193:173::-;6264:26;6324:35;:6;1637:3;5198:20:76;5220:11;5194:38;;5060:188;15417:404:70;15491:7;15510:14;15527:32;15552:6;15527:24;:32::i;:::-;15510:49;;;;15569:23;15595:26;15614:6;15595:18;:26::i;:::-;15569:52;;;-1:-1:-1;623:6:65;15695:24:70;;;:52;15776:38;15799:6;15695:52;15776:22;:38::i;:::-;15769:45;15417:404;-1:-1:-1;;;;;15417:404:70:o;16958:447::-;17042:7;17061:10;17086:27;17106:6;17086:19;:27::i;:::-;17074:39;;;;:9;:39;:::i;:::-;17061:52;;17134:23;17150:6;17134:15;:23::i;:::-;17128:29;;:2;:29;17124:216;;17182:25;17200:6;17182:17;:25::i;:::-;17173:34;;17235:22;17250:6;17235:14;:22::i;:::-;17230:27;;:2;:27;:99;;17296:33;17319:6;17327:1;17296:22;:33::i;:::-;17230:99;;;17260:33;17286:6;17260:25;:33::i;:::-;17221:108;;17124:216;17357:41;17380:6;17388:9;17357:22;:41::i;5132:192::-;5208:31;5278:39;:6;1534:2;5198:20:76;5220:11;5194:38;;5060:188;16058:633:70;16151:7;16170:19;16192:22;16207:6;16192:14;:22::i;:::-;16170:44;;;;16225:15;16250:14;16320:11;16309:8;:22;;;:72;;16373:8;16359:22;;:11;:22;16309:72;;;16345:11;16334:8;:22;;;16309:72;16299:82;;623:6:65;16447:7:70;:35;16413:30;16436:6;16413:22;:30::i;:::-;16405:39;;:77;16395:88;;16504:17;16524:35;16552:6;16524:27;:35::i;:::-;16504:55;;;;16588:9;16579:6;:18;:39;;16612:6;16579:39;;;16600:9;16579:39;16570:48;;16636;16661:6;16676;16636:24;:48::i;:::-;16629:55;16058:633;-1:-1:-1;;;;;;;16058:633:70:o;17709:271::-;17844:7;17876:35;17893:6;17901:9;17876:16;:35::i;:::-;17867:44;;17928:45;17956:6;17964:8;17928:27;:45::i;3611:170::-;3678:22;3730:44;:6;1362:2;4255:20:76;4277:11;4251:38;;4117:188;11163:266:70;11249:7;510::76;11272:6:70;:28;;;11268:81;;;11309:40;;-1:-1:-1;;;11309:40:70;;;;;;;;;;;11268:81;1333:22:76;1320:36;;1398:29;1637:3:70;1398:29:76;;;;1383:45;11367:55:70;1127:317:76;8512:228:70;8588:6;8606:9;8618:19;8630:6;8618:11;:19::i;:::-;8606:31;;8689:2;8678:13;;:8;:13;;;:45;;8715:8;8710:2;:13;8678:45;;;8694:13;;;;8512:228;-1:-1:-1;;8512:228:70:o;12171:179::-;12248:17;1333:22:76;1320:36;;1398:29;1857:3:70;1398:29:76;;;;1383:45;12284:59:70;1127:317:76;2214:150:70;2276:17;4727:11:76;4701:38;;2318:39:70;4567:188:76;2673:158:70;2737:19;2783:41;:6;1246:2;3762:20:76;3784:11;3758:38;;3624:188;3136:154:70;3199:18;3243:40;:6;1302:2;3762:20:76;3784:11;3758:38;;3624:188;4117:178:70;4187:25;4245:43;:6;1421:2;5648:20:76;5670:11;5644:38;;5510:188;4608:162:70;4673:20;4721:42;:6;1479:2;4255:20:76;4277:11;4251:38;;4117:188;8954:287:70;9029:7;9210;9177:40;;9185:21;9199:6;9185:13;:21::i;:::-;9177:30;;:40;9220:4;9177:47;9170:54;;8954:287;;;;:::o;9449:615::-;9528:19;9559:26;9588:29;9610:6;9588:21;:29::i;:::-;9559:58;;;-1:-1:-1;9632:23:70;;9628:430;;9890:12;9949:7;9905:51;;9913:32;9938:6;9913:24;:32::i;:::-;9905:41;;:51;;-1:-1:-1;10030:3:70;10024:2;9989:11;;;:32;;:37;9988:45;9974:59;;9671:377;9628:430;9549:515;9449:615;;;;:::o;10318:216::-;10394:7;10444:73;10475:31;10490:6;10498:7;10475:14;:31::i;:::-;10445:27;10456:6;10464:7;10445:10;:27::i;:::-;:61;10444:71;:73::i;9626:135:79:-;9719:1;9700:20;;;;;9696:58;;9729:25;;-1:-1:-1;;;9729:25:79;;;;;;;;;;;9696:58;9626:135;;;:::o;6249:139::-;6345:1;6325:21;;;;;6321:60;;6355:26;;-1:-1:-1;;;6355:26:79;;;;;;;;;;;14:180:127;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:127;;14:180;-1:-1:-1;14:180:127:o;199:159::-;266:20;;326:6;315:18;;305:29;;295:57;;348:1;345;338:12;363:252;430:6;438;491:2;479:9;470:7;466:23;462:32;459:52;;;507:1;504;497:12;459:52;543:9;530:23;520:33;;572:37;605:2;594:9;590:18;572:37;:::i;:::-;562:47;;363:252;;;;;:::o;620:161::-;687:20;;747:8;736:20;;726:31;;716:59;;771:1;768;761:12;786:252;853:6;861;914:2;902:9;893:7;889:23;885:32;882:52;;;930:1;927;920:12;882:52;966:9;953:23;943:33;;995:37;1028:2;1017:9;1013:18;995:37;:::i;1043:681::-;1214:2;1266:21;;;1336:13;;1239:18;;;1358:22;;;1185:4;;1214:2;1437:15;;;;1411:2;1396:18;;;1185:4;1480:218;1494:6;1491:1;1488:13;1480:218;;;1559:13;;-1:-1:-1;;;;;1555:62:127;1543:75;;1673:15;;;;1638:12;;;;1516:1;1509:9;1480:218;;;-1:-1:-1;1715:3:127;;1043:681;-1:-1:-1;;;;;;1043:681:127:o;1729:423::-;1771:3;1809:5;1803:12;1836:6;1831:3;1824:19;1861:1;1871:162;1885:6;1882:1;1879:13;1871:162;;;1947:4;2003:13;;;1999:22;;1993:29;1975:11;;;1971:20;;1964:59;1900:12;1871:162;;;1875:3;2078:1;2071:4;2062:6;2057:3;2053:16;2049:27;2042:38;2141:4;2134:2;2130:7;2125:2;2117:6;2113:15;2109:29;2104:3;2100:39;2096:50;2089:57;;;1729:423;;;;:::o;2157:1765::-;2390:2;2442:21;;;2512:13;;2415:18;;;2534:22;;;2361:4;;2390:2;2575;;2593:18;;;;2630:1;2673:15;;;2658:31;;2654:40;;2717:15;;;2361:4;;2781:1112;2797:6;2792:3;2789:15;2781:1112;;;-1:-1:-1;;2866:22:127;;;2862:36;2850:49;;2922:13;;3009:9;;-1:-1:-1;;;;;3005:58:127;2990:74;;3103:11;;3097:18;3135:15;;;3128:27;;;3216:19;;2962:15;;;3248:24;;;3429:21;;;;3295:2;3377:17;;;3365:30;;3361:39;;;3319:15;;;;3474:1;3488:296;3504:8;3499:3;3496:17;3488:296;;;3610:2;3606:7;3597:6;3589;3585:19;3581:33;3574:5;3567:48;3642:42;3677:6;3666:8;3660:15;3642:42;:::i;:::-;3713:17;;;;3632:52;-1:-1:-1;3756:14:127;;;;3532:1;3523:11;3488:296;;;-1:-1:-1;;;3871:12:127;;;;3807:6;-1:-1:-1;;3836:15:127;;;;2823:1;2814:11;2781:1112;;;-1:-1:-1;3910:6:127;;2157:1765;-1:-1:-1;;;;;;;;;;2157:1765:127:o;3927:952::-;3993:5;4041:4;4029:9;4024:3;4020:19;4016:30;4013:50;;;4059:1;4056;4049:12;4013:50;4092:2;4086:9;4134:4;4126:6;4122:17;4205:6;4193:10;4190:22;4169:18;4157:10;4154:34;4151:62;4148:185;;;4255:10;4250:3;4246:20;4243:1;4236:31;4290:4;4287:1;4280:15;4318:4;4315:1;4308:15;4148:185;4349:2;4342:22;4382:6;-1:-1:-1;4382:6:127;4412:28;4430:9;4412:28;:::i;:::-;4404:6;4397:44;4474:37;4507:2;4496:9;4492:18;4474:37;:::i;:::-;4469:2;4461:6;4457:15;4450:62;4545:37;4578:2;4567:9;4563:18;4545:37;:::i;:::-;4540:2;4532:6;4528:15;4521:62;4616:37;4649:2;4638:9;4634:18;4616:37;:::i;:::-;4611:2;4603:6;4599:15;4592:62;4688:38;4721:3;4710:9;4706:19;4688:38;:::i;:::-;4682:3;4674:6;4670:16;4663:64;4761:38;4794:3;4783:9;4779:19;4761:38;:::i;:::-;4755:3;4747:6;4743:16;4736:64;4834:38;4867:3;4856:9;4852:19;4834:38;:::i;:::-;4828:3;4820:6;4816:16;4809:64;;3927:952;;;;:::o;4884:165::-;4951:20;;5011:12;5000:24;;4990:35;;4980:63;;5039:1;5036;5029:12;5054:468;5177:6;5185;5193;5201;5254:3;5242:9;5233:7;5229:23;5225:33;5222:53;;;5271:1;5268;5261:12;5222:53;5307:9;5294:23;5284:33;;5336:66;5394:7;5389:2;5378:9;5374:18;5336:66;:::i;:::-;5326:76;;5421:38;5454:3;5443:9;5439:19;5421:38;:::i;:::-;5411:48;;5478:38;5511:3;5500:9;5496:19;5478:38;:::i;:::-;5468:48;;5054:468;;;;;;;:::o;5527:1590::-;5729:4;5758:2;5798;5787:9;5783:18;5828:2;5817:9;5810:21;5851:6;5886;5880:13;5917:6;5909;5902:22;5943:2;5933:12;;5976:2;5965:9;5961:18;5954:25;;6038:2;6028:6;6025:1;6021:14;6010:9;6006:30;6002:39;6076:2;6068:6;6064:15;6097:1;6118;6128:960;6144:6;6139:3;6136:15;6128:960;;;6213:22;;;-1:-1:-1;;6209:36:127;6197:49;;6269:13;;6356:9;;-1:-1:-1;;;;;6352:58:127;6337:74;;6450:11;;6444:18;6482:15;;;6475:27;;;6563:19;;6309:15;;;6595:24;;;6685:21;;;;6730:1;;6653:2;6641:15;;;6744:236;6760:8;6755:3;6752:17;6744:236;;;6841:15;;6858:20;6837:42;6823:57;;6949:17;;;;6788:1;6779:11;;;;;6906:14;;;;6744:236;;;-1:-1:-1;7066:12:127;;;;7003:5;-1:-1:-1;;;7031:15:127;;;;6170:1;6161:11;6128:960;;;-1:-1:-1;7105:6:127;;5527:1590;-1:-1:-1;;;;;;;;;5527:1590:127:o;7122:803::-;7284:4;7313:2;7353;7342:9;7338:18;7383:2;7372:9;7365:21;7406:6;7441;7435:13;7472:6;7464;7457:22;7510:2;7499:9;7495:18;7488:25;;7572:2;7562:6;7559:1;7555:14;7544:9;7540:30;7536:39;7522:53;;7610:2;7602:6;7598:15;7631:1;7641:255;7655:6;7652:1;7649:13;7641:255;;;7748:2;7744:7;7732:9;7724:6;7720:22;7716:36;7711:3;7704:49;7776:40;7809:6;7800;7794:13;7776:40;:::i;:::-;7766:50;-1:-1:-1;7874:12:127;;;;7839:15;;;;7677:1;7670:9;7641:255;;;-1:-1:-1;7913:6:127;;7122:803;-1:-1:-1;;;;;;;7122:803:127:o;7930:541::-;8061:6;8069;8077;8085;8093;8146:3;8134:9;8125:7;8121:23;8117:33;8114:53;;;8163:1;8160;8153:12;8114:53;8199:9;8186:23;8176:33;;8228:66;8286:7;8281:2;8270:9;8266:18;8228:66;:::i;:::-;8218:76;;8313:38;8346:3;8335:9;8331:19;8313:38;:::i;:::-;8303:48;;8370:38;8403:3;8392:9;8388:19;8370:38;:::i;:::-;8360:48;;8427:38;8460:3;8449:9;8445:19;8427:38;:::i;:::-;8417:48;;7930:541;;;;;;;;:::o;8476:256::-;8542:6;8550;8603:2;8591:9;8582:7;8578:23;8574:32;8571:52;;;8619:1;8616;8609:12;8571:52;8642:28;8660:9;8642:28;:::i;:::-;8632:38;;8689:37;8722:2;8711:9;8707:18;8689:37;:::i;8929:322::-;9036:6;9044;9097:3;9085:9;9076:7;9072:23;9068:33;9065:53;;;9114:1;9111;9104:12;9065:53;9150:9;9137:23;9127:33;;9179:66;9237:7;9232:2;9221:9;9217:18;9179:66;:::i;9256:380::-;9335:1;9331:12;;;;9378;;;9399:61;;9453:4;9445:6;9441:17;9431:27;;9399:61;9506:2;9498:6;9495:14;9475:18;9472:38;9469:161;;9552:10;9547:3;9543:20;9540:1;9533:31;9587:4;9584:1;9577:15;9615:4;9612:1;9605:15;9469:161;;9256:380;;;:::o;10048:127::-;10109:10;10104:3;10100:20;10097:1;10090:31;10140:4;10137:1;10130:15;10164:4;10161:1;10154:15;10180:177;10248:12;10293:10;;;10281;;;10277:27;;10316:12;;;10313:38;;;10331:18;;:::i;10362:128::-;10429:9;;;10450:11;;;10447:37;;;10464:18;;:::i;10495:168::-;10568:9;;;10599;;10616:15;;;10610:22;;10596:37;10586:71;;10637:18;;:::i;10668:125::-;10733:9;;;10754:10;;;10751:36;;;10767:18;;:::i;10930:217::-;10970:1;10996;10986:132;;11040:10;11035:3;11031:20;11028:1;11021:31;11075:4;11072:1;11065:15;11103:4;11100:1;11093:15;10986:132;-1:-1:-1;11132:9:127;;10930:217::o;11454:184::-;11524:6;11577:2;11565:9;11556:7;11552:23;11548:32;11545:52;;;11593:1;11590;11583:12;11545:52;-1:-1:-1;11616:16:127;;11454:184;-1:-1:-1;11454:184:127:o;11643:173::-;11711:8;11752:10;;;11740;;;11736:27;;11775:12;;;11772:38;;;11790:18;;:::i;11821:362::-;12026:6;12015:9;12008:25;12069:6;12064:2;12053:9;12049:18;12042:34;12112:2;12107;12096:9;12092:18;12085:30;11989:4;12132:45;12173:2;12162:9;12158:18;12150:6;12132:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_SetActiveId(bytes32,uint24)":"c6663b3d","testFuzz_SetOracleId(bytes32,uint16)":"0531e5be","testFuzz_SetVolatilityAccumulator(bytes32,uint24)":"18163a34","testFuzz_SetVolatilityReference(bytes32,uint24)":"cfd2cc00","testFuzz_StaticFeeParameters(bytes32,(uint16,uint16,uint16,uint16,uint24,uint16,uint24))":"efd587fd","testFuzz_StaticFeeParametersDirtyBits(bytes32,(uint16,uint16,uint16,uint16,uint24,uint16,uint24))":"cba496c3","testFuzz_UpdateIdReference(bytes32)":"026c4e62","testFuzz_UpdateReferences(bytes32,(uint16,uint16,uint16,uint16,uint24,uint16,uint24),uint40,uint40)":"37af16e0","testFuzz_UpdateTimeOfLastUpdate(bytes32)":"03419357","testFuzz_UpdateVolatilityAccumulator(bytes32,uint24)":"7919675e","testFuzz_UpdateVolatilityParameters(bytes32,(uint16,uint16,uint16,uint16,uint24,uint16,uint24),uint40,uint40,uint24)":"a01bb5e6","testFuzz_UpdateVolatilityReference(bytes32)":"a570f400","testFuzz_getBaseAndVariableFees(bytes32,uint16)":"eb24c15f","testFuzz_revert_SetVolatilityAccumulator(bytes32,uint24)":"3107edd7","testFuzz_revert_SetVolatilityReference(bytes32,uint24)":"aecb31d9","testFuzz_revert_StaticFeeParameters(bytes32,(uint16,uint16,uint16,uint16,uint24,uint16,uint24))":"d990204e","testFuzz_revert_UpdateReferences(uint40,uint40)":"b12e13e5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds40Bits\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"testFuzz_SetActiveId\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"oracleId\",\"type\":\"uint16\"}],\"name\":\"testFuzz_SetOracleId\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"testFuzz_SetVolatilityAccumulator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"}],\"name\":\"testFuzz_SetVolatilityReference\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"internalType\":\"struct PairParameterHelperTest.StaticFeeParameters\",\"name\":\"sfp\",\"type\":\"tuple\"}],\"name\":\"testFuzz_StaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"internalType\":\"struct PairParameterHelperTest.StaticFeeParameters\",\"name\":\"sfp\",\"type\":\"tuple\"}],\"name\":\"testFuzz_StaticFeeParametersDirtyBits\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_UpdateIdReference\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"internalType\":\"struct PairParameterHelperTest.StaticFeeParameters\",\"name\":\"sfp\",\"type\":\"tuple\"},{\"internalType\":\"uint40\",\"name\":\"previousTime\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"name\":\"testFuzz_UpdateReferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_UpdateTimeOfLastUpdate\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"testFuzz_UpdateVolatilityAccumulator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"internalType\":\"struct PairParameterHelperTest.StaticFeeParameters\",\"name\":\"sfp\",\"type\":\"tuple\"},{\"internalType\":\"uint40\",\"name\":\"previousTime\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"testFuzz_UpdateVolatilityParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_UpdateVolatilityReference\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"testFuzz_getBaseAndVariableFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"testFuzz_revert_SetVolatilityAccumulator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"}],\"name\":\"testFuzz_revert_SetVolatilityReference\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"params\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"internalType\":\"struct PairParameterHelperTest.StaticFeeParameters\",\"name\":\"sfp\",\"type\":\"tuple\"}],\"name\":\"testFuzz_revert_StaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"previousTime\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"name\":\"testFuzz_revert_UpdateReferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/PairParameterHelper.t.sol\":\"PairParameterHelperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"test/libraries/PairParameterHelper.t.sol\":{\"keccak256\":\"0xd7e4dd5e06e2f3ade0722eef9622f8a8dcdb022ed1dc645fff96a5260ee00829\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ada3ed2db0b55c332c03ead6c21a222adc4cfe01f55bbe5e100d7e65034f1a\",\"dweb:/ipfs/QmU4BFfdrpvuXoVM14xKcc1fG5X3mQcpKRNhzf76eT2Y6q\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"PairParametersHelper__InvalidParameter"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds128Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds40Bits"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint24","name":"activeId","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_SetActiveId"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint16","name":"oracleId","type":"uint16"}],"stateMutability":"pure","type":"function","name":"testFuzz_SetOracleId"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_SetVolatilityAccumulator"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_SetVolatilityReference"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"struct PairParameterHelperTest.StaticFeeParameters","name":"sfp","type":"tuple","components":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}]}],"stateMutability":"pure","type":"function","name":"testFuzz_StaticFeeParameters"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"struct PairParameterHelperTest.StaticFeeParameters","name":"sfp","type":"tuple","components":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}]}],"stateMutability":"pure","type":"function","name":"testFuzz_StaticFeeParametersDirtyBits"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_UpdateIdReference"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"struct PairParameterHelperTest.StaticFeeParameters","name":"sfp","type":"tuple","components":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}]},{"internalType":"uint40","name":"previousTime","type":"uint40"},{"internalType":"uint40","name":"time","type":"uint40"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_UpdateReferences"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"}],"stateMutability":"view","type":"function","name":"testFuzz_UpdateTimeOfLastUpdate"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint24","name":"activeId","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_UpdateVolatilityAccumulator"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"struct PairParameterHelperTest.StaticFeeParameters","name":"sfp","type":"tuple","components":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}]},{"internalType":"uint40","name":"previousTime","type":"uint40"},{"internalType":"uint40","name":"time","type":"uint40"},{"internalType":"uint24","name":"activeId","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_UpdateVolatilityParameters"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_UpdateVolatilityReference"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_getBaseAndVariableFees"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_SetVolatilityAccumulator"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"uint24","name":"volatilityReference","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_SetVolatilityReference"},{"inputs":[{"internalType":"bytes32","name":"params","type":"bytes32"},{"internalType":"struct PairParameterHelperTest.StaticFeeParameters","name":"sfp","type":"tuple","components":[{"internalType":"uint16","name":"baseFactor","type":"uint16"},{"internalType":"uint16","name":"filterPeriod","type":"uint16"},{"internalType":"uint16","name":"decayPeriod","type":"uint16"},{"internalType":"uint16","name":"reductionFactor","type":"uint16"},{"internalType":"uint24","name":"variableFeeControl","type":"uint24"},{"internalType":"uint16","name":"protocolShare","type":"uint16"},{"internalType":"uint24","name":"maxVolatilityAccumulator","type":"uint24"}]}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_StaticFeeParameters"},{"inputs":[{"internalType":"uint40","name":"previousTime","type":"uint40"},{"internalType":"uint40","name":"time","type":"uint40"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_UpdateReferences"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/PairParameterHelper.t.sol":"PairParameterHelperTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"test/libraries/PairParameterHelper.t.sol":{"keccak256":"0xd7e4dd5e06e2f3ade0722eef9622f8a8dcdb022ed1dc645fff96a5260ee00829","urls":["bzz-raw://73ada3ed2db0b55c332c03ead6c21a222adc4cfe01f55bbe5e100d7e65034f1a","dweb:/ipfs/QmU4BFfdrpvuXoVM14xKcc1fG5X3mQcpKRNhzf76eT2Y6q"],"license":"MIT"}},"version":1},"id":108} \ No newline at end of file diff --git a/abi/PriceHelper.sol/PriceHelper.json b/abi/PriceHelper.sol/PriceHelper.json deleted file mode 100644 index dba09ca7..00000000 --- a/abi/PriceHelper.sol/PriceHelper.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5766c4851459f9e7b4548e7c108b032a98825cf92342c4e963040ff4e51308d64736f6c63430008140033","sourceMap":"414:2626:71:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;414:2626:71;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5766c4851459f9e7b4548e7c108b032a98825cf92342c4e963040ff4e51308d64736f6c63430008140033","sourceMap":"414:2626:71:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Price Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to calculate prices\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/PriceHelper.sol\":\"PriceHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/PriceHelper.sol":"PriceHelper"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"}},"version":1},"id":71} \ No newline at end of file diff --git a/abi/PriceHelper.t.sol/Math.json b/abi/PriceHelper.t.sol/Math.json deleted file mode 100644 index 6399a9aa..00000000 --- a/abi/PriceHelper.t.sol/Math.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"idFromPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"priceFromId","inputs":[{"name":"id","type":"uint24","internalType":"uint24"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"Uint128x128Math__LogUnderflow","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061067c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632aa074ae1461003b578063d0f0addf14610061575b600080fd5b61004e610049366004610580565b610088565b6040519081526020015b60405180910390f35b61007461006f3660046105bd565b61009d565b60405162ffffff9091168152602001610058565b600061009483836100a9565b90505b92915050565b600061009483836100e0565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016100d78282610125565b95945050505050565b600061271061ffff60801b608084901b1604600160801b018161010282610392565b61010b86610392565b61011591906105f6565b90506100d781628000000161049f565b6000806000836000036101415750600160801b91506100979050565b50826000811215610153579015906000035b6210000081101561034c57600160801b9250846fffffffffffffffffffffffffffffffff81111561018657911591600019045b60018216156101975792830260801c925b800260801c60028216156101ad5792830260801c925b800260801c60048216156101c35792830260801c925b800260801c60088216156101d95792830260801c925b800260801c60108216156101ef5792830260801c925b800260801c60208216156102055792830260801c925b800260801c604082161561021b5792830260801c925b8002608090811c908216156102325792830260801c925b800260801c6101008216156102495792830260801c925b800260801c6102008216156102605792830260801c925b800260801c6104008216156102775792830260801c925b800260801c61080082161561028e5792830260801c925b800260801c6110008216156102a55792830260801c925b800260801c6120008216156102bc5792830260801c925b800260801c6140008216156102d35792830260801c925b800260801c6180008216156102ea5792830260801c925b800260801c620100008216156103025792830260801c925b800260801c6202000082161561031a5792830260801c925b800260801c620400008216156103325792830260801c925b800260801c6208000082161561034a5792830260801c925b505b8260000361037b57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161038657826100d7565b6100d783600019610632565b6000816001036103a55750607f19919050565b816000036103c65760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f8000000000000000000000000000000083106103ee57506001610409565b5060001982600160fe1b81610405576104056105e0565b0492505b6000610418607f85901c6104ca565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114610494576f400000000000000000000000000000005b600081131561049257908002607f1c90600160801b821061048a579384019360019190911c905b60011d610463565b505b50500260011b919050565b8062ffffff811681146104c557604051639b63641560e01b815260040160405180910390fd5b919050565b60006fffffffffffffffffffffffffffffffff8211156104ec5750608090811c905b67ffffffffffffffff82111561050457604091821c91015b63ffffffff82111561051857602091821c91015b61ffff82111561052a57601091821c91015b60ff82111561053b57600891821c91015b600f82111561054c57600491821c91015b600382111561055d57600291821c91015b60018211156104c557600101919050565b803561ffff811681146104c557600080fd5b6000806040838503121561059357600080fd5b823562ffffff811681146105a657600080fd5b91506105b46020840161056e565b90509250929050565b600080604083850312156105d057600080fd5b823591506105b46020840161056e565b634e487b7160e01b600052601260045260246000fd5b600082610605576106056105e0565b600160ff1b82146000198414161561062d57634e487b7160e01b600052601160045260246000fd5b500590565b600082610641576106416105e0565b50049056fea26469706673582212203da2bbab1f831106b39d14c7d1da59bb6abdc91a878810cf57601581d9a6032764736f6c63430008140033","sourceMap":"4702:320:109:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632aa074ae1461003b578063d0f0addf14610061575b600080fd5b61004e610049366004610580565b610088565b6040519081526020015b60405180910390f35b61007461006f3660046105bd565b61009d565b60405162ffffff9091168152602001610058565b600061009483836100a9565b90505b92915050565b600061009483836100e0565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016100d78282610125565b95945050505050565b600061271061ffff60801b608084901b1604600160801b018161010282610392565b61010b86610392565b61011591906105f6565b90506100d781628000000161049f565b6000806000836000036101415750600160801b91506100979050565b50826000811215610153579015906000035b6210000081101561034c57600160801b9250846fffffffffffffffffffffffffffffffff81111561018657911591600019045b60018216156101975792830260801c925b800260801c60028216156101ad5792830260801c925b800260801c60048216156101c35792830260801c925b800260801c60088216156101d95792830260801c925b800260801c60108216156101ef5792830260801c925b800260801c60208216156102055792830260801c925b800260801c604082161561021b5792830260801c925b8002608090811c908216156102325792830260801c925b800260801c6101008216156102495792830260801c925b800260801c6102008216156102605792830260801c925b800260801c6104008216156102775792830260801c925b800260801c61080082161561028e5792830260801c925b800260801c6110008216156102a55792830260801c925b800260801c6120008216156102bc5792830260801c925b800260801c6140008216156102d35792830260801c925b800260801c6180008216156102ea5792830260801c925b800260801c620100008216156103025792830260801c925b800260801c6202000082161561031a5792830260801c925b800260801c620400008216156103325792830260801c925b800260801c6208000082161561034a5792830260801c925b505b8260000361037b57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161038657826100d7565b6100d783600019610632565b6000816001036103a55750607f19919050565b816000036103c65760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f8000000000000000000000000000000083106103ee57506001610409565b5060001982600160fe1b81610405576104056105e0565b0492505b6000610418607f85901c6104ca565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114610494576f400000000000000000000000000000005b600081131561049257908002607f1c90600160801b821061048a579384019360019190911c905b60011d610463565b505b50500260011b919050565b8062ffffff811681146104c557604051639b63641560e01b815260040160405180910390fd5b919050565b60006fffffffffffffffffffffffffffffffff8211156104ec5750608090811c905b67ffffffffffffffff82111561050457604091821c91015b63ffffffff82111561051857602091821c91015b61ffff82111561052a57601091821c91015b60ff82111561053b57600891821c91015b600f82111561054c57600491821c91015b600382111561055d57600291821c91015b60018211156104c557600101919050565b803561ffff811681146104c557600080fd5b6000806040838503121561059357600080fd5b823562ffffff811681146105a657600080fd5b91506105b46020840161056e565b90509250929050565b600080604083850312156105d057600080fd5b823591506105b46020840161056e565b634e487b7160e01b600052601260045260246000fd5b600082610605576106056105e0565b600160ff1b82146000198414161561062d57634e487b7160e01b600052601160045260246000fd5b500590565b600082610641576106416105e0565b50049056fea26469706673582212203da2bbab1f831106b39d14c7d1da59bb6abdc91a878810cf57601581d9a6032764736f6c63430008140033","sourceMap":"4702:320:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:143;;;;;;:::i;:::-;;:::i;:::-;;;675:25:127;;;663:2;648:18;4722:143:109;;;;;;;;4871:149;;;;;;:::i;:::-;;:::i;:::-;;;1142:8:127;1130:21;;;1112:40;;1100:2;1085:18;4871:149:109;968:190:127;4722:143:109;4793:7;4819:39;4846:2;4850:7;4819:26;:39::i;:::-;4812:46;;4722:143;;;;;:::o;4871:149::-;4946:6;4971:42;4998:5;5005:7;4971:26;:42::i;812:217:71:-;886:13;623:6:65;-1:-1:-1;;;258:3:65;1824:42:71;;;;1823:72;-1:-1:-1;;;1805:90:71;2185:11;;;-1:-1:-1;;2178:35:71;1004:18;1805:90;2178:35;1004:8;:18::i;:::-;996:26;812:217;-1:-1:-1;;;;;812:217:71:o;1242:279::-;1320:9;623:6:65;-1:-1:-1;;;258:3:65;1824:42:71;;;;1823:72;-1:-1:-1;;;1805:90:71;1320:9;1413:11;1805:90;1413:9;:11::i;:::-;1398:12;:5;:10;:12::i;:::-;:26;;;;:::i;:::-;1382:42;;1464:40;1488:6;591:7;1472:22;1464:38;:40::i;4113:3600:82:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:65;-1:-1:-1;4252:22:82;;-1:-1:-1;4252:22:82;4240:34;-1:-1:-1;4316:1:82;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:65;-1:-1:-1;4574:1:82;4601:34;4595:41;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:82;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:82;;;;;1762:25:127;;;1803:18;;;1796:34;;;1735:18;;7609:35:82;;;;;;;7585:59;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:82;:::i;1369:2370::-;1417:13;1828:1;1833;1828:6;1824:23;;-1:-1:-1;;;1843:4:82;1369:2370;-1:-1:-1;1369:2370:82:o;1824:23::-;1861:1;1866;1861:6;1857:50;;1876:31;;-1:-1:-1;;;1876:31:82;;;;;;;;;;;1857:50;1924:1;1918:7;;;;;2016:11;534:21;2045:14;;2041:219;;-1:-1:-1;2086:1:82;2041:219;;;-1:-1:-1;;;2244:1:82;-1:-1:-1;;;2244:1:82;2224:21;;;;:::i;:::-;;2220:25;;2041:219;2396:9;2408:44;496:3;2409:1;:21;;2408:42;:44::i;:::-;2699:29;496:3;2699:29;;;;;-1:-1:-1;2396:56:82;;;-1:-1:-1;2794:6:82;;;534:21;2873:14;;2869:735;;3118:27;3091:499;3156:1;3148:5;:9;3091:499;;;3199:5;;;496:3;3198:27;;-1:-1:-1;;;3313:32:82;;3309:263;;3440:15;;;;3548:1;3542:7;;;;;3309:263;3169:1;3159:11;3091:499;;;;2869:735;-1:-1:-1;;3703:13:82;3721:1;3702:20;;1369:2370;-1:-1:-1;1369:2370:82:o;10236:135:79:-;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:79;;;;;;;;;;;10306:58;10236:135;;;:::o;1675:971:75:-;1737:9;1790:34;1787:1;1784:41;1781:120;;;-1:-1:-1;1853:3:75;1849:11;;;;1781:120;1923:18;1920:1;1917:25;1914:112;;;1970:2;1966:10;;;;2000:12;1914:112;2048:10;2045:1;2042:17;2039:104;;;2087:2;2083:10;;;;2117:12;2039:104;2165:6;2162:1;2159:13;2156:100;;;2200:2;2196:10;;;;2230:12;2156:100;2278:4;2275:1;2272:11;2269:96;;;2311:1;2307:9;;;;2340:11;2269:96;2387:3;2384:1;2381:10;2378:95;;;2419:1;2415:9;;;;2448:11;2378:95;2495:3;2492:1;2489:10;2486:95;;;2527:1;2523:9;;;;2556:11;2486:95;2603:3;2600:1;2597:10;2594:36;;;2626:1;2617:11;1675:971;;;:::o;14:159:127:-;81:20;;141:6;130:18;;120:29;;110:57;;163:1;160;153:12;178:346;244:6;252;305:2;293:9;284:7;280:23;276:32;273:52;;;321:1;318;311:12;273:52;360:9;347:23;410:8;403:5;399:20;392:5;389:31;379:59;;434:1;431;424:12;379:59;457:5;-1:-1:-1;481:37:127;514:2;499:18;;481:37;:::i;:::-;471:47;;178:346;;;;;:::o;711:252::-;778:6;786;839:2;827:9;818:7;814:23;810:32;807:52;;;855:1;852;845:12;807:52;891:9;878:23;868:33;;920:37;953:2;942:9;938:18;920:37;:::i;1163:127::-;1224:10;1219:3;1215:20;1212:1;1205:31;1255:4;1252:1;1245:15;1279:4;1276:1;1269:15;1295:290;1334:1;1360;1350:35;;1365:18;;:::i;:::-;-1:-1:-1;;;1401:18:127;;-1:-1:-1;;1421:13:127;;1397:38;1394:161;;;1477:10;1472:3;1468:20;1465:1;1458:31;1512:4;1509:1;1502:15;1540:4;1537:1;1530:15;1394:161;-1:-1:-1;1569:10:127;;1295:290::o;1841:120::-;1881:1;1907;1897:35;;1912:18;;:::i;:::-;-1:-1:-1;1946:9:127;;1841:120::o","linkReferences":{}},"methodIdentifiers":{"idFromPrice(uint256,uint16)":"d0f0addf","priceFromId(uint24,uint16)":"2aa074ae"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint128x128Math__LogUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"idFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"priceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/PriceHelper.t.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/libraries/PriceHelper.t.sol\":{\"keccak256\":\"0xa15d7a64f1c5acda7a829c01e139ff0dfbdd748c39f523c6bef99d19c5811b62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e449c00f466b0a1fbb44c752c3e8df8c0ed7fb8da5366da2c376d1effc351d3a\",\"dweb:/ipfs/QmPuHaydhrtKwFBSwHAyexPxCfLemQE5wnJa6ZvyNe5cB2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"Uint128x128Math__LogUnderflow"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"pure","type":"function","name":"idFromPrice","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"pure","type":"function","name":"priceFromId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/PriceHelper.t.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/libraries/PriceHelper.t.sol":{"keccak256":"0xa15d7a64f1c5acda7a829c01e139ff0dfbdd748c39f523c6bef99d19c5811b62","urls":["bzz-raw://e449c00f466b0a1fbb44c752c3e8df8c0ed7fb8da5366da2c376d1effc351d3a","dweb:/ipfs/QmPuHaydhrtKwFBSwHAyexPxCfLemQE5wnJa6ZvyNe5cB2"],"license":"MIT"}},"version":1},"id":109} \ No newline at end of file diff --git a/abi/PriceHelper.t.sol/PriceHelperTest.json b/abi/PriceHelper.t.sol/PriceHelperTest.json deleted file mode 100644 index 47dd2f9b..00000000 --- a/abi/PriceHelper.t.sol/PriceHelperTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_Convert128x128PriceToDecimal","inputs":[{"name":"price128x128","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_ConvertDecimalPriceTo128x128","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetBase","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetExponent","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_Price","inputs":[{"name":"price","type":"uint256","internalType":"uint256"},{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testFuzz_revert_ConvertDecimalPriceTo128x128","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Price","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]},{"type":"error","name":"Uint256x256Math__MulShiftOverflow","inputs":[]}],"bytecode":{"object":"0x60a06040819052600b805460ff1916600117905561001c90610057565b604051809103906000f080158015610038573d6000803e3d6000fd5b506001600160a01b031660805234801561005157600080fd5b50610064565b61069c80611ca183390190565b608051611c2261007f60003960006107d90152611c226000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806366d9a9a0116100b2578063aa0276bb11610081578063ba414fa611610066578063ba414fa614610206578063e20c9f711461021e578063f007f5511461022657600080fd5b8063aa0276bb146101eb578063b5508aa9146101fe57600080fd5b806366d9a9a0146101a657806385226c81146101bb5780638b564f97146101d0578063916a17c6146101e357600080fd5b80633e5e3c23116100ee5780633e5e3c23146101705780633f7286f414610178578063444b5b211461018057806344ffd79a1461019357600080fd5b80631ddc5666146101205780631ed7831c1461012a5780632ade388014610148578063390322271461015d575b600080fd5b610128610239565b005b61013261052e565b60405161013f91906116ce565b60405180910390f35b610150610590565b60405161013f919061176b565b61012861016b366004611842565b6106d2565b61013261094d565b6101326109ad565b61012861018e366004611882565b610a0d565b6101286101a13660046118a6565b610a78565b6101ae610aee565b60405161013f91906118c1565b6101c3610bd4565b60405161013f919061198c565b6101286101de3660046119ee565b610ca4565b6101ae610d69565b6101286101f93660046119ee565b610e4f565b6101c3610e97565b61020e610f67565b604051901515815260200161013f565b610132611022565b6101286102343660046119ee565b611082565b6282d7d360006102536a661efdf12d1653cf34000061116e565b90506102a961026d610266600185611a1d565b600161118a565b826040518060400160405280600d81526020017f746573745f50726963653a3a31000000000000000000000000000000000000008152506111c1565b6102f66102ba610266846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3200000000000000000000000000000000000000815250611231565b627dec89915061030b65011f71fb045061116e565b905061035a61031e610266600185611a1d565b826040518060400160405280600d81526020017f746573745f50726963653a3a33000000000000000000000000000000000000008152506111c1565b6103a761036b610266846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3400000000000000000000000000000000000000815250611231565b6280104591506103c56ec097ce7bc90715b34b9f100000000061116e565b905061041b6103df6103d8600185611a1d565b606461118a565b826040518060400160405280600d81526020017f746573745f50726963653a3a35000000000000000000000000000000000000008152506111c1565b61046861042c6103d8846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3600000000000000000000000000000000000000815250611231565b628001b291506104866ec097ce7bc90715b34b9f100000000061116e565b90506104dd6104a1610499600185611a1d565b6103e861118a565b826040518060400160405280600d81526020017f746573745f50726963653a3a37000000000000000000000000000000000000008152506111c1565b61052a6104ee610499846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3800000000000000000000000000000000000000815250611231565b5050565b6060601480548060200260200160405190810160405280929190818152602001828054801561058657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610568575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156106c957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106b257838290600052602060002001805461062590611a5c565b80601f016020809104026020016040519081016040528092919081815260200182805461065190611a5c565b801561069e5780601f106106735761010080835404028352916020019161069e565b820191906000526020600020905b81548152906001019060200180831161068157829003601f168201915b505050505081526020019060010190610606565b5050505081525050815260200190600101906105b4565b50505050905090565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562680100000000000000008411801561071c5750780100000000000000000000000000000000000000000000000084105b801561072c575060008361ffff16115b801561073c575060c88361ffff16105b6040518263ffffffff1660e01b815260040161075c911515815260200190565b60006040518083038186803b15801561077457600080fd5b505afa158015610788573d6000803e3d6000fd5b5050604080516024810186905261ffff851660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663d0f0addf60e01b1790529051600093508392507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169161080b91611a96565b600060405180830381855afa9150503d8060008114610846576040519150601f19603f3d011682016040523d82523d6000602084013e61084b565b606091505b509150915081156109475760008180602001905181019061086c9190611ab2565b9050600061087a828661118a565b90506108e061271061089061ffff881682611acf565b61089a9089611ae2565b6108a49190611b0f565b826040518060400160405280601181526020017f7465737446757a7a5f50726963653a3a310000000000000000000000000000008152506111c1565b6109446127106108f461ffff881682611b31565b6108fe9089611ae2565b6109089190611b0f565b826040518060400160405280601181526020017f7465737446757a7a5f50726963653a3a32000000000000000000000000000000815250611231565b50505b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610586576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610568575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610586576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610568575050505050905090565b600062ffffff8216627fffff190190506000610a316280000062ffffff8516611b44565b9050610a7382826040518060400160405280601781526020017f7465737446757a7a5f4765744578706f6e656e743a3a3100000000000000000081525061126c565b505050565b61271061ffff60801b608083901b16818104600160801b0191600091610a9e9190611b0f565b610aac90600160801b611b31565b9050610a7382826040518060400160405280601381526020017f7465737446757a7a5f476574426173653a3a31000000000000000000000000008152506112a7565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106c95760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610bbc57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610b7e5790505b50505050508152505081526020019060010190610b12565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106c9578382906000526020600020018054610c1790611a5c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4390611a5c565b8015610c905780601f10610c6557610100808354040283529160200191610c90565b820191906000526020600020905b815481529060010190602001808311610c7357829003601f168201915b505050505081526020019060010190610bf8565b604051632631f2b160e11b8152770de0b6b3a763ffffffffffffffffffffffffffffffffffff8211156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015610d0957600080fd5b505afa158015610d1d573d6000803e3d6000fd5b505050506000610d2c8261116e565b90506000610d44836080670de0b6b3a76400006112e2565b9050610a738282604051806060016040528060288152602001611b9d602891396112a7565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106c95760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610e3757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610df95790505b50505050508152505081526020019060010190610d8d565b6000610e5a82611316565b90506000610e7283670de0b6b3a76400006080611328565b9050610a738282604051806060016040528060288152602001611bc5602891396112a7565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156106c9578382906000526020600020018054610eda90611a5c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0690611a5c565b8015610f535780601f10610f2857610100808354040283529160200191610f53565b820191906000526020600020905b815481529060010190602001808311610f3657829003601f168201915b505050505081526020019060010190610ebb565b60075460009060ff1615610f7f575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611b64565b1415905090565b60606013805480602002602001604051908101604052809291908181526020018280548015610586576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610568575050505050905090565b604051632631f2b160e11b8152770de0b6b3a763ffffffffffffffffffffffffffffffffffff82116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156110e657600080fd5b505afa1580156110fa573d6000803e3d6000fd5b5050604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561115157600080fd5b505af1158015611165573d6000803e3d6000fd5b5050505061052a815b6000611184826080670de0b6b3a76400006112e2565b92915050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016111b88282611396565b95945050505050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d906111fc90869086908690600401611b7d565b60006040518083038186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b50505050505050565b604051630389490b60e61b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e25242c0906111fc90869086908690600401611b7d565b60405163714a2f1360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063714a2f13906111fc90869086908690600401611b7d565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906111fc90869086908690600401611b7d565b600060ff831684811b9061ffff6101008290031686901c9061130c9087906001901b868585611603565b9695505050505050565b600061118482670de0b6b3a764000060805b600080600061133786866116af565b915091508160001461134d578360ff1682901c92505b801561138d57600160ff85161b811061137957604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b6000806000836000036113b25750600160801b91506111849050565b508260008112156113c4579015906000035b621000008110156115bd57600160801b9250846fffffffffffffffffffffffffffffffff8111156113f757911591600019045b60018216156114085792830260801c925b800260801c600282161561141e5792830260801c925b800260801c60048216156114345792830260801c925b800260801c600882161561144a5792830260801c925b800260801c60108216156114605792830260801c925b800260801c60208216156114765792830260801c925b800260801c604082161561148c5792830260801c925b8002608090811c908216156114a35792830260801c925b800260801c6101008216156114ba5792830260801c925b800260801c6102008216156114d15792830260801c925b800260801c6104008216156114e85792830260801c925b800260801c6108008216156114ff5792830260801c925b800260801c6110008216156115165792830260801c925b800260801c61200082161561152d5792830260801c925b800260801c6140008216156115445792830260801c925b800260801c61800082161561155b5792830260801c925b800260801c620100008216156115735792830260801c925b800260801c6202000082161561158b5792830260801c925b800260801c620400008216156115a35792830260801c925b800260801c620800008216156115bb5792830260801c925b505b826000036115ec57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b816115f757826111b8565b6111b883600019611b0f565b6000816000036116245783838161161c5761161c611af9565b0490506111b8565b838210611644576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561170f5783516001600160a01b0316835292840192918401916001016116ea565b50909695505050505050565b60005b8381101561173657818101518382015260200161171e565b50506000910152565b6000815180845261175781602086016020860161171b565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561181b57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561180557605f198985030183526117f384865161173f565b948e01949350918d01916001016117d7565b505050978a019794505091880191600101611792565b50919a9950505050505050505050565b803561ffff8116811461183d57600080fd5b919050565b6000806040838503121561185557600080fd5b823591506118656020840161182b565b90509250929050565b62ffffff8116811461187f57600080fd5b50565b60006020828403121561189457600080fd5b813561189f8161186e565b9392505050565b6000602082840312156118b857600080fd5b61189f8261182b565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561197d57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156119685783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611926565b50978a019795505050918701916001016118e9565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119e157603f198886030184526119cf85835161173f565b945092850192908501906001016119b3565b5092979650505050505050565b600060208284031215611a0057600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b62ffffff828116828216039080821115611a3957611a39611a07565b5092915050565b62ffffff818116838216019080821115611a3957611a39611a07565b600181811c90821680611a7057607f821691505b602082108103611a9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008251611aa881846020870161171b565b9190910192915050565b600060208284031215611ac457600080fd5b815161189f8161186e565b8181038181111561118457611184611a07565b808202811582820484141761118457611184611a07565b634e487b7160e01b600052601260045260246000fd5b600082611b2c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561118457611184611a07565b8181036000831280158383131683831282161715611a3957611a39611a07565b600060208284031215611b7657600080fd5b5051919050565b8381528260208201526060604082015260006111b8606083018461173f56fe7465737446757a7a5f436f6e76657274446563696d616c5072696365546f313238783132383a3a317465737446757a7a5f436f6e76657274313238783132385072696365546f446563696d616c3a3a31a2646970667358221220778df43c3cdc3ba981f7b922291ed84c91482b0c775d569281c35ba83535fb9a64736f6c63430008140033608060405234801561001057600080fd5b5061067c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632aa074ae1461003b578063d0f0addf14610061575b600080fd5b61004e610049366004610580565b610088565b6040519081526020015b60405180910390f35b61007461006f3660046105bd565b61009d565b60405162ffffff9091168152602001610058565b600061009483836100a9565b90505b92915050565b600061009483836100e0565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016100d78282610125565b95945050505050565b600061271061ffff60801b608084901b1604600160801b018161010282610392565b61010b86610392565b61011591906105f6565b90506100d781628000000161049f565b6000806000836000036101415750600160801b91506100979050565b50826000811215610153579015906000035b6210000081101561034c57600160801b9250846fffffffffffffffffffffffffffffffff81111561018657911591600019045b60018216156101975792830260801c925b800260801c60028216156101ad5792830260801c925b800260801c60048216156101c35792830260801c925b800260801c60088216156101d95792830260801c925b800260801c60108216156101ef5792830260801c925b800260801c60208216156102055792830260801c925b800260801c604082161561021b5792830260801c925b8002608090811c908216156102325792830260801c925b800260801c6101008216156102495792830260801c925b800260801c6102008216156102605792830260801c925b800260801c6104008216156102775792830260801c925b800260801c61080082161561028e5792830260801c925b800260801c6110008216156102a55792830260801c925b800260801c6120008216156102bc5792830260801c925b800260801c6140008216156102d35792830260801c925b800260801c6180008216156102ea5792830260801c925b800260801c620100008216156103025792830260801c925b800260801c6202000082161561031a5792830260801c925b800260801c620400008216156103325792830260801c925b800260801c6208000082161561034a5792830260801c925b505b8260000361037b57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161038657826100d7565b6100d783600019610632565b6000816001036103a55750607f19919050565b816000036103c65760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f8000000000000000000000000000000083106103ee57506001610409565b5060001982600160fe1b81610405576104056105e0565b0492505b6000610418607f85901c6104ca565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114610494576f400000000000000000000000000000005b600081131561049257908002607f1c90600160801b821061048a579384019360019190911c905b60011d610463565b505b50500260011b919050565b8062ffffff811681146104c557604051639b63641560e01b815260040160405180910390fd5b919050565b60006fffffffffffffffffffffffffffffffff8211156104ec5750608090811c905b67ffffffffffffffff82111561050457604091821c91015b63ffffffff82111561051857602091821c91015b61ffff82111561052a57601091821c91015b60ff82111561053b57600891821c91015b600f82111561054c57600491821c91015b600382111561055d57600291821c91015b60018211156104c557600101919050565b803561ffff811681146104c557600080fd5b6000806040838503121561059357600080fd5b823562ffffff811681146105a657600080fd5b91506105b46020840161056e565b90509250929050565b600080604083850312156105d057600080fd5b823591506105b46020840161056e565b634e487b7160e01b600052601260045260246000fd5b600082610605576106056105e0565b600160ff1b82146000198414161561062d57634e487b7160e01b600052601160045260246000fd5b500590565b600082610641576106416105e0565b50049056fea26469706673582212203da2bbab1f831106b39d14c7d1da59bb6abdc91a878810cf57601581d9a6032764736f6c63430008140033","sourceMap":"136:4564:109:-:0;;;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;237:10:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;215:32:109;;;136:4564;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061011b5760003560e01c806366d9a9a0116100b2578063aa0276bb11610081578063ba414fa611610066578063ba414fa614610206578063e20c9f711461021e578063f007f5511461022657600080fd5b8063aa0276bb146101eb578063b5508aa9146101fe57600080fd5b806366d9a9a0146101a657806385226c81146101bb5780638b564f97146101d0578063916a17c6146101e357600080fd5b80633e5e3c23116100ee5780633e5e3c23146101705780633f7286f414610178578063444b5b211461018057806344ffd79a1461019357600080fd5b80631ddc5666146101205780631ed7831c1461012a5780632ade388014610148578063390322271461015d575b600080fd5b610128610239565b005b61013261052e565b60405161013f91906116ce565b60405180910390f35b610150610590565b60405161013f919061176b565b61012861016b366004611842565b6106d2565b61013261094d565b6101326109ad565b61012861018e366004611882565b610a0d565b6101286101a13660046118a6565b610a78565b6101ae610aee565b60405161013f91906118c1565b6101c3610bd4565b60405161013f919061198c565b6101286101de3660046119ee565b610ca4565b6101ae610d69565b6101286101f93660046119ee565b610e4f565b6101c3610e97565b61020e610f67565b604051901515815260200161013f565b610132611022565b6101286102343660046119ee565b611082565b6282d7d360006102536a661efdf12d1653cf34000061116e565b90506102a961026d610266600185611a1d565b600161118a565b826040518060400160405280600d81526020017f746573745f50726963653a3a31000000000000000000000000000000000000008152506111c1565b6102f66102ba610266846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3200000000000000000000000000000000000000815250611231565b627dec89915061030b65011f71fb045061116e565b905061035a61031e610266600185611a1d565b826040518060400160405280600d81526020017f746573745f50726963653a3a33000000000000000000000000000000000000008152506111c1565b6103a761036b610266846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3400000000000000000000000000000000000000815250611231565b6280104591506103c56ec097ce7bc90715b34b9f100000000061116e565b905061041b6103df6103d8600185611a1d565b606461118a565b826040518060400160405280600d81526020017f746573745f50726963653a3a35000000000000000000000000000000000000008152506111c1565b61046861042c6103d8846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3600000000000000000000000000000000000000815250611231565b628001b291506104866ec097ce7bc90715b34b9f100000000061116e565b90506104dd6104a1610499600185611a1d565b6103e861118a565b826040518060400160405280600d81526020017f746573745f50726963653a3a37000000000000000000000000000000000000008152506111c1565b61052a6104ee610499846001611a40565b826040518060400160405280600d81526020017f746573745f50726963653a3a3800000000000000000000000000000000000000815250611231565b5050565b6060601480548060200260200160405190810160405280929190818152602001828054801561058657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610568575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156106c957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106b257838290600052602060002001805461062590611a5c565b80601f016020809104026020016040519081016040528092919081815260200182805461065190611a5c565b801561069e5780601f106106735761010080835404028352916020019161069e565b820191906000526020600020905b81548152906001019060200180831161068157829003601f168201915b505050505081526020019060010190610606565b5050505081525050815260200190600101906105b4565b50505050905090565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e562680100000000000000008411801561071c5750780100000000000000000000000000000000000000000000000084105b801561072c575060008361ffff16115b801561073c575060c88361ffff16105b6040518263ffffffff1660e01b815260040161075c911515815260200190565b60006040518083038186803b15801561077457600080fd5b505afa158015610788573d6000803e3d6000fd5b5050604080516024810186905261ffff851660448083019190915282518083039091018152606490910182526020810180516001600160e01b031663d0f0addf60e01b1790529051600093508392507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169161080b91611a96565b600060405180830381855afa9150503d8060008114610846576040519150601f19603f3d011682016040523d82523d6000602084013e61084b565b606091505b509150915081156109475760008180602001905181019061086c9190611ab2565b9050600061087a828661118a565b90506108e061271061089061ffff881682611acf565b61089a9089611ae2565b6108a49190611b0f565b826040518060400160405280601181526020017f7465737446757a7a5f50726963653a3a310000000000000000000000000000008152506111c1565b6109446127106108f461ffff881682611b31565b6108fe9089611ae2565b6109089190611b0f565b826040518060400160405280601181526020017f7465737446757a7a5f50726963653a3a32000000000000000000000000000000815250611231565b50505b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610586576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610568575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610586576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610568575050505050905090565b600062ffffff8216627fffff190190506000610a316280000062ffffff8516611b44565b9050610a7382826040518060400160405280601781526020017f7465737446757a7a5f4765744578706f6e656e743a3a3100000000000000000081525061126c565b505050565b61271061ffff60801b608083901b16818104600160801b0191600091610a9e9190611b0f565b610aac90600160801b611b31565b9050610a7382826040518060400160405280601381526020017f7465737446757a7a5f476574426173653a3a31000000000000000000000000008152506112a7565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156106c95760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610bbc57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610b7e5790505b50505050508152505081526020019060010190610b12565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156106c9578382906000526020600020018054610c1790611a5c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4390611a5c565b8015610c905780601f10610c6557610100808354040283529160200191610c90565b820191906000526020600020905b815481529060010190602001808311610c7357829003601f168201915b505050505081526020019060010190610bf8565b604051632631f2b160e11b8152770de0b6b3a763ffffffffffffffffffffffffffffffffffff8211156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015610d0957600080fd5b505afa158015610d1d573d6000803e3d6000fd5b505050506000610d2c8261116e565b90506000610d44836080670de0b6b3a76400006112e2565b9050610a738282604051806060016040528060288152602001611b9d602891396112a7565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156106c95760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610e3757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610df95790505b50505050508152505081526020019060010190610d8d565b6000610e5a82611316565b90506000610e7283670de0b6b3a76400006080611328565b9050610a738282604051806060016040528060288152602001611bc5602891396112a7565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156106c9578382906000526020600020018054610eda90611a5c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0690611a5c565b8015610f535780601f10610f2857610100808354040283529160200191610f53565b820191906000526020600020905b815481529060010190602001808311610f3657829003601f168201915b505050505081526020019060010190610ebb565b60075460009060ff1615610f7f575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611b64565b1415905090565b60606013805480602002602001604051908101604052809291908181526020018280548015610586576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610568575050505050905090565b604051632631f2b160e11b8152770de0b6b3a763ffffffffffffffffffffffffffffffffffff82116004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156110e657600080fd5b505afa1580156110fa573d6000803e3d6000fd5b5050604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561115157600080fd5b505af1158015611165573d6000803e3d6000fd5b5050505061052a815b6000611184826080670de0b6b3a76400006112e2565b92915050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016111b88282611396565b95945050505050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d906111fc90869086908690600401611b7d565b60006040518083038186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b50505050505050565b604051630389490b60e61b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e25242c0906111fc90869086908690600401611b7d565b60405163714a2f1360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063714a2f13906111fc90869086908690600401611b7d565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906111fc90869086908690600401611b7d565b600060ff831684811b9061ffff6101008290031686901c9061130c9087906001901b868585611603565b9695505050505050565b600061118482670de0b6b3a764000060805b600080600061133786866116af565b915091508160001461134d578360ff1682901c92505b801561138d57600160ff85161b811061137957604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b6000806000836000036113b25750600160801b91506111849050565b508260008112156113c4579015906000035b621000008110156115bd57600160801b9250846fffffffffffffffffffffffffffffffff8111156113f757911591600019045b60018216156114085792830260801c925b800260801c600282161561141e5792830260801c925b800260801c60048216156114345792830260801c925b800260801c600882161561144a5792830260801c925b800260801c60108216156114605792830260801c925b800260801c60208216156114765792830260801c925b800260801c604082161561148c5792830260801c925b8002608090811c908216156114a35792830260801c925b800260801c6101008216156114ba5792830260801c925b800260801c6102008216156114d15792830260801c925b800260801c6104008216156114e85792830260801c925b800260801c6108008216156114ff5792830260801c925b800260801c6110008216156115165792830260801c925b800260801c61200082161561152d5792830260801c925b800260801c6140008216156115445792830260801c925b800260801c61800082161561155b5792830260801c925b800260801c620100008216156115735792830260801c925b800260801c6202000082161561158b5792830260801c925b800260801c620400008216156115a35792830260801c925b800260801c620800008216156115bb5792830260801c925b505b826000036115ec57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b816115f757826111b8565b6111b883600019611b0f565b6000816000036116245783838161161c5761161c611af9565b0490506111b8565b838210611644576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561170f5783516001600160a01b0316835292840192918401916001016116ea565b50909695505050505050565b60005b8381101561173657818101518382015260200161171e565b50506000910152565b6000815180845261175781602086016020860161171b565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101561181b57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101561180557605f198985030183526117f384865161173f565b948e01949350918d01916001016117d7565b505050978a019794505091880191600101611792565b50919a9950505050505050505050565b803561ffff8116811461183d57600080fd5b919050565b6000806040838503121561185557600080fd5b823591506118656020840161182b565b90509250929050565b62ffffff8116811461187f57600080fd5b50565b60006020828403121561189457600080fd5b813561189f8161186e565b9392505050565b6000602082840312156118b857600080fd5b61189f8261182b565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561197d57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156119685783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611926565b50978a019795505050918701916001016118e9565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119e157603f198886030184526119cf85835161173f565b945092850192908501906001016119b3565b5092979650505050505050565b600060208284031215611a0057600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b62ffffff828116828216039080821115611a3957611a39611a07565b5092915050565b62ffffff818116838216019080821115611a3957611a39611a07565b600181811c90821680611a7057607f821691505b602082108103611a9057634e487b7160e01b600052602260045260246000fd5b50919050565b60008251611aa881846020870161171b565b9190910192915050565b600060208284031215611ac457600080fd5b815161189f8161186e565b8181038181111561118457611184611a07565b808202811582820484141761118457611184611a07565b634e487b7160e01b600052601260045260246000fd5b600082611b2c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561118457611184611a07565b8181036000831280158383131683831282161715611a3957611a39611a07565b600060208284031215611b7657600080fd5b5051919050565b8381528260208201526060604082015260006111b8606083018461173f56fe7465737446757a7a5f436f6e76657274446563696d616c5072696365546f313238783132383a3a317465737446757a7a5f436f6e76657274313238783132385072696365546f446563696d616c3a3a31a2646970667358221220778df43c3cdc3ba981f7b922291ed84c91482b0c775d569281c35ba83535fb9a64736f6c63430008140033","sourceMap":"136:4564:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:1390;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;2172:1130:109:-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;546:286:109:-;;;;;;:::i;:::-;;:::i;254:::-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;838:535:109:-;;;;;;:::i;:::-;;:::i;3069:146:5:-;;;:::i;1808:358:109:-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;6738:14:127;;6731:22;6713:41;;6701:2;6686:18;1243:204:1;6573:187:127;2304:142:5;;;:::i;1379:423:109:-;;;;;;:::i;:::-;;:::i;3308:1390::-;3366:7;3354:9;3461:54;3502:12;3461:40;:54::i;:::-;3437:78;-1:-1:-1;3525:79:109;3534:37;3561:6;3566:1;3561:2;:6;:::i;:::-;3569:1;3534:26;:37::i;:::-;3573:13;3525:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;3614;3623:37;3650:6;:2;3655:1;3650:6;:::i;3623:37::-;3662:13;3614:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;3709:7;3704:12;;3803:61;3844:19;3803:40;:61::i;:::-;3787:77;-1:-1:-1;3874:79:109;3883:37;3910:6;3915:1;3910:2;:6;:::i;3883:37::-;3922:13;3874:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;3963;3972:37;3999:6;:2;4004:1;3999:6;:::i;3972:37::-;4011:13;3963:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;4058:7;4053:12;;4138:46;4179:4;4138:40;:46::i;:::-;4122:62;-1:-1:-1;4194:81:109;4203:39;4230:6;4235:1;4230:2;:6;:::i;:::-;4238:3;4203:26;:39::i;:::-;4244:13;4194:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;4285;4294:39;4321:6;:2;4326:1;4321:6;:::i;4294:39::-;4335:13;4285:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;4382:7;4377:12;;4461:46;4502:4;4461:40;:46::i;:::-;4445:62;-1:-1:-1;4517:82:109;4526:40;4553:6;4558:1;4553:2;:6;:::i;:::-;4561:4;4526:26;:40::i;:::-;4568:13;4517:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;4609;4618:40;4645:6;:2;4650:1;4645:6;:::i;4618:40::-;4660:13;4609:82;;;;;;;;;;;;;;;;;:8;:82::i;:::-;3344:1354;;3308:1390::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;2172:1130:109:-;2348:9;;2366:7;2358:15;;:35;;;;;2385:8;2377:5;:16;2358:35;:50;;;;;2407:1;2397:7;:11;;;2358:50;:67;;;;;2422:3;2412:7;:13;;;2358:67;2348:78;;;;;;;;;;;;;6738:14:127;6731:22;6713:41;;6701:2;6686:18;;6573:187;2348:78:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2504:65:109;;;;;;7807:25:127;;;7880:6;7868:19;;7848:18;;;;7841:47;;;;2504:65:109;;;;;;;;;;7780:18:127;;;;2504:65:109;;;;;;;-1:-1:-1;;;;;2504:65:109;-1:-1:-1;;;2504:65:109;;;2479:91;;-1:-1:-1;;;;;;2487:4:109;-1:-1:-1;;;;;2479:24:109;;:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:133;;;;2585:1;2581:715;;;2602:9;2625:4;2614:26;;;;;;;;;;;;:::i;:::-;2602:38;;2654:23;2680:39;2707:2;2711:7;2680:26;:39::i;:::-;2654:65;-1:-1:-1;2905:183:109;623:6:65;2940:35:109;;;;623:6:65;2940:35:109;:::i;:::-;2931:45;;:5;:45;:::i;:::-;:73;;;;:::i;:::-;3022:15;2905:183;;;;;;;;;;;;;;;;;:8;:183::i;:::-;3102;623:6:65;3137:35:109;;;;623:6:65;3137:35:109;:::i;:::-;3128:45;;:5;:45;:::i;:::-;:73;;;;:::i;:::-;3219:15;3102:183;;;;;;;;;;;;;;;;;:8;:183::i;:::-;2588:708;;2581:715;2241:1061;;2172:1130;;:::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;546:286:109:-;611:22;2185:11:71;;;-1:-1:-1;;2178:35:71;611:52:109;-1:-1:-1;673:30:109;706:31;729:7;713:11;;;706:31;:::i;:::-;673:64;;748:77;757:15;774:23;748:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;601:231;;546:286;:::o;254:::-;623:6:65;-1:-1:-1;;;258:3:65;1824:42:71;;;;1823:72;;;-1:-1:-1;;;1805:90:71;;320:19:109;;423:34;;623:6:65;423:34:109;:::i;:::-;410:47;;-1:-1:-1;;;410:47:109;:::i;:::-;380:77;;468:65;477:11;490:19;468:65;;;;;;;;;;;;;;;;;:8;:65::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:535:109;1035:77;;-1:-1:-1;;;1035:77:109;;1054:57;1045:66;;;1035:77;;;6713:41:127;1035:9:109;;;;6686:18:127;;1035:77:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1122:20;1145:47;1186:5;1145:40;:47::i;:::-;1122:70;-1:-1:-1;1202:28:109;1233:34;:5;1257:3;1262:4;1233:23;:34::i;:::-;1202:65;;1278:88;1287:12;1301:20;1278:88;;;;;;;;;;;;;;;;;:8;:88::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1808:358:109;1901:20;1924:54;1965:12;1924:40;:54::i;:::-;1901:77;-1:-1:-1;1988:28:109;2019:41;:12;2050:4;2056:3;2019:30;:41::i;:::-;1988:72;;2071:88;2080:12;2094:20;2071:88;;;;;;;;;;;;;;;;;:8;:88::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;9614:74:127;;;1398:17:1;9704:18:127;;;9697:34;1428:1:1;;1377:7;;9587:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1379:423:109:-;1578:76;;-1:-1:-1;;;1578:76:109;;1596:57;1588:65;;1578:76;;;6713:41:127;1578:9:109;;;;6686:18:127;;1578:76:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1665:73:109;;-1:-1:-1;;;1665:73:109;;-1:-1:-1;;;1665:73:109;;;10075:52:127;1665:15:109;;-1:-1:-1;1665:15:109;;-1:-1:-1;10048:18:127;;1665:73:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1748:47;1789:5;2450:177:71;2526:7;2552:68;:5;258:3:65;363:4;2552:23:71;:68::i;:::-;2545:75;2450:177;-1:-1:-1;;2450:177:71:o;812:217::-;886:13;623:6:65;-1:-1:-1;;;258:3:65;1824:42:71;;;;1823:72;-1:-1:-1;;;1805:90:71;2185:11;;;-1:-1:-1;;2178:35:71;1004:18;1805:90;2178:35;1004:8;:18::i;:::-;996:26;812:217;-1:-1:-1;;;;;812:217:71:o;14412:134:1:-;14510:29;;-1:-1:-1;;;14510:29:1;;:11;;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14412:134;;;:::o;15596:::-;15694:29;;-1:-1:-1;;;15694:29:1;;:11;;;;:29;;15706:4;;15712:5;;15719:3;;15694:29;;;:::i;2980:132::-;3076:29;;-1:-1:-1;;;3076:29:1;;:11;;;;:29;;3088:4;;3094:5;;3101:3;;3076:29;;;:::i;2386:134::-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;4594:437:83:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;:::-;4953:71;4594:437;-1:-1:-1;;;;;;4594:437:83:o;2847:191:71:-;2930:7;2956:75;:12;363:4:65;258:3;2641:485:83;2727:14;2754:13;2769;2786:18;2799:1;2802;2786:12;:18::i;:::-;2753:51;;;;2819:5;2828:1;2819:10;2815:40;;2849:6;2840:15;;:5;:15;;2831:24;;2815:40;2869:10;;2865:255;;2964:1;:11;;;;2955:20;;2951:68;;2984:35;;-1:-1:-1;;;2984:35:83;;;;;;;;;;;2951:68;3088:6;3082:12;;:3;:12;3072:23;;:5;:23;;3062:33;;;;2865:255;2743:383;;2641:485;;;;;:::o;4113:3600:82:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:65;-1:-1:-1;4252:22:82;;-1:-1:-1;4252:22:82;4240:34;-1:-1:-1;4316:1:82;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:65;-1:-1:-1;4574:1:82;4601:34;4595:41;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:82;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:82;;;;;11040:25:127;;;11081:18;;;11074:34;;;11013:18;;7609:35:82;;;;;;;7585:59;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:82;:::i;7208:3395:83:-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:83;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;;8125:21;;8775:19;;;9064:24;;;;9459:1;8663:25;;;;9440:1;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;;;10557:15;;;;;;-1:-1:-1;;;;7208:3395:83:o;6220:547::-;6286:13;;-1:-1:-1;;6654:1:83;6651;6644:20;6693:1;6690;6686:9;6677:18;;6744:5;6740:2;6737:13;6729:5;6725:2;6721:14;6717:34;6708:43;;;6220:547;;;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:250::-;785:1;795:113;809:6;806:1;803:13;795:113;;;885:11;;;879:18;866:11;;;859:39;831:2;824:10;795:113;;;-1:-1:-1;;942:1:127;924:16;;917:27;700:250::o;955:271::-;997:3;1035:5;1029:12;1062:6;1057:3;1050:19;1078:76;1147:6;1140:4;1135:3;1131:14;1124:4;1117:5;1113:16;1078:76;:::i;:::-;1208:2;1187:15;-1:-1:-1;;1183:29:127;1174:39;;;;1215:4;1170:50;;955:271;-1:-1:-1;;955:271:127:o;1231:1765::-;1464:2;1516:21;;;1586:13;;1489:18;;;1608:22;;;1435:4;;1464:2;1649;;1667:18;;;;1704:1;1747:15;;;1732:31;;1728:40;;1791:15;;;1435:4;;1855:1112;1871:6;1866:3;1863:15;1855:1112;;;-1:-1:-1;;1940:22:127;;;1936:36;1924:49;;1996:13;;2083:9;;-1:-1:-1;;;;;2079:58:127;2064:74;;2177:11;;2171:18;2209:15;;;2202:27;;;2290:19;;2036:15;;;2322:24;;;2503:21;;;;2369:2;2451:17;;;2439:30;;2435:39;;;2393:15;;;;2548:1;2562:296;2578:8;2573:3;2570:17;2562:296;;;2684:2;2680:7;2671:6;2663;2659:19;2655:33;2648:5;2641:48;2716:42;2751:6;2740:8;2734:15;2716:42;:::i;:::-;2787:17;;;;2706:52;-1:-1:-1;2830:14:127;;;;2606:1;2597:11;2562:296;;;-1:-1:-1;;;2945:12:127;;;;2881:6;-1:-1:-1;;2910:15:127;;;;1897:1;1888:11;1855:1112;;;-1:-1:-1;2984:6:127;;1231:1765;-1:-1:-1;;;;;;;;;;1231:1765:127:o;3001:159::-;3068:20;;3128:6;3117:18;;3107:29;;3097:57;;3150:1;3147;3140:12;3097:57;3001:159;;;:::o;3165:252::-;3232:6;3240;3293:2;3281:9;3272:7;3268:23;3264:32;3261:52;;;3309:1;3306;3299:12;3261:52;3345:9;3332:23;3322:33;;3374:37;3407:2;3396:9;3392:18;3374:37;:::i;:::-;3364:47;;3165:252;;;;;:::o;3422:119::-;3507:8;3500:5;3496:20;3489:5;3486:31;3476:59;;3531:1;3528;3521:12;3476:59;3422:119;:::o;3546:245::-;3604:6;3657:2;3645:9;3636:7;3632:23;3628:32;3625:52;;;3673:1;3670;3663:12;3625:52;3712:9;3699:23;3731:30;3755:5;3731:30;:::i;:::-;3780:5;3546:245;-1:-1:-1;;;3546:245:127:o;3796:184::-;3854:6;3907:2;3895:9;3886:7;3882:23;3878:32;3875:52;;;3923:1;3920;3913:12;3875:52;3946:28;3964:9;3946:28;:::i;3985:1590::-;4187:4;4216:2;4256;4245:9;4241:18;4286:2;4275:9;4268:21;4309:6;4344;4338:13;4375:6;4367;4360:22;4401:2;4391:12;;4434:2;4423:9;4419:18;4412:25;;4496:2;4486:6;4483:1;4479:14;4468:9;4464:30;4460:39;4534:2;4526:6;4522:15;4555:1;4576;4586:960;4602:6;4597:3;4594:15;4586:960;;;4671:22;;;-1:-1:-1;;4667:36:127;4655:49;;4727:13;;4814:9;;-1:-1:-1;;;;;4810:58:127;4795:74;;4908:11;;4902:18;4940:15;;;4933:27;;;5021:19;;4767:15;;;5053:24;;;5143:21;;;;5188:1;;5111:2;5099:15;;;5202:236;5218:8;5213:3;5210:17;5202:236;;;5299:15;;5316:20;5295:42;5281:57;;5407:17;;;;5246:1;5237:11;;;;;5364:14;;;;5202:236;;;-1:-1:-1;5524:12:127;;;;5461:5;-1:-1:-1;;;5489:15:127;;;;4628:1;4619:11;4586:960;;;-1:-1:-1;5563:6:127;;3985:1590;-1:-1:-1;;;;;;;;;3985:1590:127:o;5580:803::-;5742:4;5771:2;5811;5800:9;5796:18;5841:2;5830:9;5823:21;5864:6;5899;5893:13;5930:6;5922;5915:22;5968:2;5957:9;5953:18;5946:25;;6030:2;6020:6;6017:1;6013:14;6002:9;5998:30;5994:39;5980:53;;6068:2;6060:6;6056:15;6089:1;6099:255;6113:6;6110:1;6107:13;6099:255;;;6206:2;6202:7;6190:9;6182:6;6178:22;6174:36;6169:3;6162:49;6234:40;6267:6;6258;6252:13;6234:40;:::i;:::-;6224:50;-1:-1:-1;6332:12:127;;;;6297:15;;;;6135:1;6128:9;6099:255;;;-1:-1:-1;6371:6:127;;5580:803;-1:-1:-1;;;;;;;5580:803:127:o;6388:180::-;6447:6;6500:2;6488:9;6479:7;6475:23;6471:32;6468:52;;;6516:1;6513;6506:12;6468:52;-1:-1:-1;6539:23:127;;6388:180;-1:-1:-1;6388:180:127:o;6765:127::-;6826:10;6821:3;6817:20;6814:1;6807:31;6857:4;6854:1;6847:15;6881:4;6878:1;6871:15;6897:173;6965:8;7006:10;;;6994;;;6990:27;;7029:12;;;7026:38;;;7044:18;;:::i;:::-;7026:38;6897:173;;;;:::o;7075:170::-;7142:8;7170:10;;;7182;;;7166:27;;7205:11;;;7202:37;;;7219:18;;:::i;7250:380::-;7329:1;7325:12;;;;7372;;;7393:61;;7447:4;7439:6;7435:17;7425:27;;7393:61;7500:2;7492:6;7489:14;7469:18;7466:38;7463:161;;7546:10;7541:3;7537:20;7534:1;7527:31;7581:4;7578:1;7571:15;7609:4;7606:1;7599:15;7463:161;;7250:380;;;:::o;7899:287::-;8028:3;8066:6;8060:13;8082:66;8141:6;8136:3;8129:4;8121:6;8117:17;8082:66;:::i;:::-;8164:16;;;;;7899:287;-1:-1:-1;;7899:287:127:o;8191:249::-;8260:6;8313:2;8301:9;8292:7;8288:23;8284:32;8281:52;;;8329:1;8326;8319:12;8281:52;8361:9;8355:16;8380:30;8404:5;8380:30;:::i;8445:128::-;8512:9;;;8533:11;;;8530:37;;;8547:18;;:::i;8578:168::-;8651:9;;;8682;;8699:15;;;8693:22;;8679:37;8669:71;;8720:18;;:::i;8751:127::-;8812:10;8807:3;8803:20;8800:1;8793:31;8843:4;8840:1;8833:15;8867:4;8864:1;8857:15;8883:217;8923:1;8949;8939:132;;8993:10;8988:3;8984:20;8981:1;8974:31;9028:4;9025:1;9018:15;9056:4;9053:1;9046:15;8939:132;-1:-1:-1;9085:9:127;;8883:217::o;9105:125::-;9170:9;;;9191:10;;;9188:36;;;9204:18;;:::i;9235:200::-;9301:9;;;9274:4;9329:9;;9357:10;;9369:12;;;9353:29;9392:12;;;9384:21;;9350:56;9347:82;;;9409:18;;:::i;9742:184::-;9812:6;9865:2;9853:9;9844:7;9840:23;9836:32;9833:52;;;9881:1;9878;9871:12;9833:52;-1:-1:-1;9904:16:127;;9742:184;-1:-1:-1;9742:184:127:o;10138:362::-;10343:6;10332:9;10325:25;10386:6;10381:2;10370:9;10366:18;10359:34;10429:2;10424;10413:9;10409:18;10402:30;10306:4;10449:45;10490:2;10479:9;10475:18;10467:6;10449:45;:::i","linkReferences":{},"immutableReferences":{"108260":[{"start":2009,"length":32}]}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_Convert128x128PriceToDecimal(uint256)":"aa0276bb","testFuzz_ConvertDecimalPriceTo128x128(uint256)":"8b564f97","testFuzz_GetBase(uint16)":"44ffd79a","testFuzz_GetExponent(uint24)":"444b5b21","testFuzz_Price(uint256,uint16)":"39032227","testFuzz_revert_ConvertDecimalPriceTo128x128(uint256)":"f007f551","test_Price()":"1ddc5666"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price128x128\",\"type\":\"uint256\"}],\"name\":\"testFuzz_Convert128x128PriceToDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"testFuzz_ConvertDecimalPriceTo128x128\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"testFuzz_GetBase\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"testFuzz_GetExponent\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"testFuzz_Price\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"testFuzz_revert_ConvertDecimalPriceTo128x128\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Price\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/PriceHelper.t.sol\":\"PriceHelperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/libraries/PriceHelper.t.sol\":{\"keccak256\":\"0xa15d7a64f1c5acda7a829c01e139ff0dfbdd748c39f523c6bef99d19c5811b62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e449c00f466b0a1fbb44c752c3e8df8c0ed7fb8da5366da2c376d1effc351d3a\",\"dweb:/ipfs/QmPuHaydhrtKwFBSwHAyexPxCfLemQE5wnJa6ZvyNe5cB2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulShiftOverflow"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"price128x128","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_Convert128x128PriceToDecimal"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_ConvertDecimalPriceTo128x128"},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetBase"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetExponent"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"testFuzz_Price"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_revert_ConvertDecimalPriceTo128x128"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_Price"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/PriceHelper.t.sol":"PriceHelperTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/libraries/PriceHelper.t.sol":{"keccak256":"0xa15d7a64f1c5acda7a829c01e139ff0dfbdd748c39f523c6bef99d19c5811b62","urls":["bzz-raw://e449c00f466b0a1fbb44c752c3e8df8c0ed7fb8da5366da2c376d1effc351d3a","dweb:/ipfs/QmPuHaydhrtKwFBSwHAyexPxCfLemQE5wnJa6ZvyNe5cB2"],"license":"MIT"}},"version":1},"id":109} \ No newline at end of file diff --git a/abi/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json b/abi/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json deleted file mode 100644 index 9d445ed9..00000000 --- a/abi/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This contract is a fork of the `ReentrancyGuardUpgradeable` contract from OpenZeppelin that has been modified to update the `_nonReentrantBefore` and `_nonReentrantAfter` functions to `internal` visibility. Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/ReentrancyGuardUpgradeable.sol":"ReentrancyGuardUpgradeable"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"}},"version":1},"id":72} \ No newline at end of file diff --git a/abi/ReentrancyGuardUpgradeable.t.sol/Foo.json b/abi/ReentrancyGuardUpgradeable.t.sol/Foo.json deleted file mode 100644 index 7c66ae50..00000000 --- a/abi/ReentrancyGuardUpgradeable.t.sol/Foo.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"callSelf","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"noReentrancyGuard","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"reentrancyGuarded","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b507ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b031660008115801561005b5750825b90506000826001600160401b031660011480156100775750303b155b905081158015610085575080155b156100a35760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100d157845460ff60401b1916680100000000000000001785555b6100d9610129565b831561011f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050506101b7565b61013161013b565b610139610189565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661013957604051631afcd79f60e31b815260040160405180910390fd5b61019161013b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6103ae806101c66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632fce9e3514610046578063c26a9e0d14610048578063d3c135db1461005b575b600080fd5b005b610046610056366004610298565b610065565b6100466100a4565b565b61006d6100d5565b610077308261011f565b506100a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b6100ac6100d5565b61006360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161011957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b606061012d83836000610134565b9392505050565b60608147101561015e5760405163cd78605960e01b81523060048201526024015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516101879190610349565b60006040518083038185875af1925050503d80600081146101c4576040519150601f19603f3d011682016040523d82523d6000602084013e6101c9565b606091505b50915091506101d98683836101e3565b9695505050505050565b6060826101f8576101f382610259565b61012d565b815115801561021c575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561025257604051639996b31560e01b815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610155565b508061012d565b8051156102695780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156102aa57600080fd5b813567ffffffffffffffff808211156102c257600080fd5b818401915084601f8301126102d657600080fd5b8135818111156102e8576102e8610282565b604051601f8201601f19908116603f0116810190838211818310171561031057610310610282565b8160405282815287602084870101111561032957600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825160005b8181101561036a5760208186018101518583015201610350565b50600092019182525091905056fea264697066735822122040a660f9b1870d6345d90fd351341be9a7dfe0063df9e1c7abc0a5ed0c80d84764736f6c63430008140033","sourceMap":"667:374:110:-:0;;;748:67;;;;;;;;;-1:-1:-1;8870:21:22;4302:15;;;;;;;4301:16;;-1:-1:-1;;;;;4348:14:22;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:22;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:22;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:22;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:22;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:22;;;;;4979:67;784:24:110::1;:22;:24::i;:::-;5070:14:22::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:22;;;5142:14;;-1:-1:-1;167:50:127;;5142:14:22;;155:2:127;140:18;5142:14:22;;;;;;;5066:101;4092:1081;;;;;667:374:110;;2801:111:72;6931:20:22;:18;:20::i;:::-;2871:34:72::1;:32;:34::i;:::-;2801:111::o:0;7084:141:22:-;8870:21;8560:40;;;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:22;;;;;;;;;;;2918:183:72;6931:20:22;:18;:20::i;:::-;2058:1:72::1;2649:30:::0;3071:23;2918:183::o;14:209:127:-;667:374:110;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632fce9e3514610046578063c26a9e0d14610048578063d3c135db1461005b575b600080fd5b005b610046610056366004610298565b610065565b6100466100a4565b565b61006d6100d5565b610077308261011f565b506100a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b6100ac6100d5565b61006360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161011957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b606061012d83836000610134565b9392505050565b60608147101561015e5760405163cd78605960e01b81523060048201526024015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516101879190610349565b60006040518083038185875af1925050503d80600081146101c4576040519150601f19603f3d011682016040523d82523d6000602084013e6101c9565b606091505b50915091506101d98683836101e3565b9695505050505050565b6060826101f8576101f382610259565b61012d565b815115801561021c575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561025257604051639996b31560e01b815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610155565b508061012d565b8051156102695780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156102aa57600080fd5b813567ffffffffffffffff808211156102c257600080fd5b818401915084601f8301126102d657600080fd5b8135818111156102e8576102e8610282565b604051601f8201601f19908116603f0116810190838211818310171561031057610310610282565b8160405282815287602084870101111561032957600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825160005b8181101561036a5760208186018101518583015201610350565b50600092019182525091905056fea264697066735822122040a660f9b1870d6345d90fd351341be9a7dfe0063df9e1c7abc0a5ed0c80d84764736f6c63430008140033","sourceMap":"667:374:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;994:45;;821:108;;;;;;:::i;:::-;;:::i;935:53::-;;;:::i;994:45::-;:::o;821:108::-;3512:21:72;:19;:21::i;:::-;890:32:110::1;898:4;917::::0;890:26:::1;:32::i;:::-;;3554:20:72::0;2058:1;2649:30;4232:23;3978:284;3554:20;821:108:110;:::o;935:53::-;3512:21:72;:19;:21::i;:::-;3554:20;2058:1;2649:30;4232:23;3978:284;3587:385;2649:30;3788:9;;-1:-1:-1;;3788:20:72;3784:88;;3831:30;;-1:-1:-1;;;3831:30:72;;;;;;;;;;;3784:88;2100:1;3946:19;;3587:385::o;2705:151:36:-;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;:::-;2804:45;2705:151;-1:-1:-1;;;2705:151:36:o;3180:392::-;3279:12;3331:5;3307:21;:29;3303:108;;;3359:41;;-1:-1:-1;;;3359:41:36;;3394:4;3359:41;;;1218:74:127;1191:18;;3359:41:36;;;;;;;;3303:108;3421:12;3435:23;3462:6;:11;;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;3180:392;-1:-1:-1;;;;;;3180:392:36:o;4625:582::-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;5071:18:36;;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:36;;1248:42:127;1236:55;;5121:24:36;;;1218:74:127;1191:18;;5121:24:36;1072:226:127;5041:119:36;-1:-1:-1;5180:10:36;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:36;;;;;;;;;;;14:127:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:921;214:6;267:2;255:9;246:7;242:23;238:32;235:52;;;283:1;280;273:12;235:52;323:9;310:23;352:18;393:2;385:6;382:14;379:34;;;409:1;406;399:12;379:34;447:6;436:9;432:22;422:32;;492:7;485:4;481:2;477:13;473:27;463:55;;514:1;511;504:12;463:55;550:2;537:16;572:2;568;565:10;562:36;;;578:18;;:::i;:::-;653:2;647:9;621:2;707:13;;-1:-1:-1;;703:22:127;;;727:2;699:31;695:40;683:53;;;751:18;;;771:22;;;748:46;745:72;;;797:18;;:::i;:::-;837:10;833:2;826:22;872:2;864:6;857:18;912:7;907:2;902;898;894:11;890:20;887:33;884:53;;;933:1;930;923:12;884:53;989:2;984;980;976:11;971:2;963:6;959:15;946:46;1034:1;1012:15;;;1029:2;1008:24;1001:35;;;;-1:-1:-1;1016:6:127;146:921;-1:-1:-1;;;;;146:921:127:o;1303:412::-;1432:3;1470:6;1464:13;1495:1;1505:129;1519:6;1516:1;1513:13;1505:129;;;1617:4;1601:14;;;1597:25;;1591:32;1578:11;;;1571:53;1534:12;1505:129;;;-1:-1:-1;1689:1:127;1653:16;;1678:13;;;-1:-1:-1;1653:16:127;1303:412;-1:-1:-1;1303:412:127:o","linkReferences":{}},"methodIdentifiers":{"callSelf(bytes)":"c26a9e0d","noReentrancyGuard()":"2fce9e35","reentrancyGuarded()":"d3c135db"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"callSelf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"noReentrancyGuard\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuarded\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/ReentrancyGuardUpgradeable.t.sol\":\"Foo\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"test/libraries/ReentrancyGuardUpgradeable.t.sol\":{\"keccak256\":\"0x9dc03ca3b7828f64e308a184120b6bb934aed73830a1594e3c3135c0282e61c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b46df68d0a6a2d1b7e57156b90b68830c58c7b8b52f33033cf4d7b32cdef962\",\"dweb:/ipfs/QmaJ1nWWWcTQviG4dfp1PADNHC8zYpxcnXP2zoqm4uFM2V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"callSelf"},{"inputs":[],"stateMutability":"pure","type":"function","name":"noReentrancyGuard"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reentrancyGuarded"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/ReentrancyGuardUpgradeable.t.sol":"Foo"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"test/libraries/ReentrancyGuardUpgradeable.t.sol":{"keccak256":"0x9dc03ca3b7828f64e308a184120b6bb934aed73830a1594e3c3135c0282e61c8","urls":["bzz-raw://6b46df68d0a6a2d1b7e57156b90b68830c58c7b8b52f33033cf4d7b32cdef962","dweb:/ipfs/QmaJ1nWWWcTQviG4dfp1PADNHC8zYpxcnXP2zoqm4uFM2V"],"license":"MIT"}},"version":1},"id":110} \ No newline at end of file diff --git a/abi/ReentrancyGuardUpgradeable.t.sol/ReentrancyGuardUpgradeableTest.json b/abi/ReentrancyGuardUpgradeable.t.sol/ReentrancyGuardUpgradeableTest.json deleted file mode 100644 index db557b11..00000000 --- a/abi/ReentrancyGuardUpgradeable.t.sol/ReentrancyGuardUpgradeableTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testNoReentrancyGuard","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReentrancyGuard","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506112d88061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633f7286f41161008c578063916a17c611610066578063916a17c61461016b578063b5508aa914610173578063ba414fa61461017b578063e20c9f711461019357600080fd5b80633f7286f41461013957806366d9a9a01461014157806385226c811461015657600080fd5b80631ed7831c116100bd5780631ed7831c146100fe5780632ade38801461011c5780633e5e3c231461013157600080fd5b806303b7ab07146100e45780630a9254e4146100ee5780630f3b9893146100f6575b600080fd5b6100ec61019b565b005b6100ec610224565b6100ec610287565b610106610348565b6040516101139190610a41565b60405180910390f35b6101246103aa565b6040516101139190610ad4565b6101066104ec565b61010661054c565b6101496105ac565b6040516101139190610b94565b61015e610692565b6040516101139190610c5f565b610149610762565b61015e610848565b610183610918565b6040519015158152602001610113565b6101066109d3565b601c546040805160048082526024820183526020820180516001600160e01b0316632fce9e3560e01b179052915163c26a9e0d60e01b81526001600160a01b039093169263c26a9e0d926101f0929101610cc1565b600060405180830381600087803b15801561020a57600080fd5b505af115801561021e573d6000803e3d6000fd5b50505050565b60405161023090610a33565b604051809103906000f08015801561024c573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051630618f58760e51b8152633ee5aeb560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b5050601c546040805160048082526024820183526020820180516001600160e01b031663d3c135db60e01b179052915163c26a9e0d60e01b81526001600160a01b03909316945063c26a9e0d93506101f092909101610cc1565b606060148054806020026020016040519081016040528092919081815260200182805480156103a057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610382575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104e357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104cc57838290600052602060002001805461043f90610cdb565b80601f016020809104026020016040519081016040528092919081815260200182805461046b90610cdb565b80156104b85780601f1061048d576101008083540402835291602001916104b8565b820191906000526020600020905b81548152906001019060200180831161049b57829003601f168201915b505050505081526020019060010190610420565b5050505081525050815260200190600101906103ce565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156103a0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610382575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156103a0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610382575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104e35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561067a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161063c5790505b505050505081525050815260200190600101906105d0565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104e35783829060005260206000200180546106d590610cdb565b80601f016020809104026020016040519081016040528092919081815260200182805461070190610cdb565b801561074e5780601f106107235761010080835404028352916020019161074e565b820191906000526020600020905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200190600101906106b6565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104e35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561083057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107f25790505b50505050508152505081526020019060010190610786565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104e357838290600052602060002001805461088b90610cdb565b80601f01602080910402602001604051908101604052809291908181526020018280546108b790610cdb565b80156109045780601f106108d957610100808354040283529160200191610904565b820191906000526020600020905b8154815290600101906020018083116108e757829003601f168201915b50505050508152602001906001019061086c565b60075460009060ff1615610930575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156109a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cc9190610d15565b1415905090565b606060138054806020026020016040519081016040528092919081815260200182805480156103a0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610382575050505050905090565b6105748062000d2f83390190565b6020808252825182820181905260009190848201906040850190845b81811015610a825783516001600160a01b031683529284019291840191600101610a5d565b50909695505050505050565b6000815180845260005b81811015610ab457602081850181015186830182015201610a98565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610b8457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610b6e57605f19898503018352610b5c848651610a8e565b948e01949350918d0191600101610b40565b505050978a019794505091880191600101610afb565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610c5057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610c3b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190610bf9565b50978a01979550505091870191600101610bbc565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610cb457603f19888603018452610ca2858351610a8e565b94509285019290850190600101610c86565b5092979650505050505050565b602081526000610cd46020830184610a8e565b9392505050565b600181811c90821680610cef57607f821691505b602082108103610d0f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610d2757600080fd5b505191905056fe608060405234801561001057600080fd5b507ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b031660008115801561005b5750825b90506000826001600160401b031660011480156100775750303b155b905081158015610085575080155b156100a35760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100d157845460ff60401b1916680100000000000000001785555b6100d9610129565b831561011f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050506101b7565b61013161013b565b610139610189565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661013957604051631afcd79f60e31b815260040160405180910390fd5b61019161013b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6103ae806101c66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632fce9e3514610046578063c26a9e0d14610048578063d3c135db1461005b575b600080fd5b005b610046610056366004610298565b610065565b6100466100a4565b565b61006d6100d5565b610077308261011f565b506100a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b6100ac6100d5565b61006360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161011957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b606061012d83836000610134565b9392505050565b60608147101561015e5760405163cd78605960e01b81523060048201526024015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516101879190610349565b60006040518083038185875af1925050503d80600081146101c4576040519150601f19603f3d011682016040523d82523d6000602084013e6101c9565b606091505b50915091506101d98683836101e3565b9695505050505050565b6060826101f8576101f382610259565b61012d565b815115801561021c575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561025257604051639996b31560e01b815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610155565b508061012d565b8051156102695780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156102aa57600080fd5b813567ffffffffffffffff808211156102c257600080fd5b818401915084601f8301126102d657600080fd5b8135818111156102e8576102e8610282565b604051601f8201601f19908116603f0116810190838211818310171561031057610310610282565b8160405282815287602084870101111561032957600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825160005b8181101561036a5760208186018101518583015201610350565b50600092019182525091905056fea264697066735822122040a660f9b1870d6345d90fd351341be9a7dfe0063df9e1c7abc0a5ed0c80d84764736f6c63430008140033a26469706673582212202406e70f418bf787a1c0a687a6a6940ad92f99d9a959dd9dc36b9a08fb8035de64736f6c63430008140033","sourceMap":"204:461:110:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;204:461:110;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80633f7286f41161008c578063916a17c611610066578063916a17c61461016b578063b5508aa914610173578063ba414fa61461017b578063e20c9f711461019357600080fd5b80633f7286f41461013957806366d9a9a01461014157806385226c811461015657600080fd5b80631ed7831c116100bd5780631ed7831c146100fe5780632ade38801461011c5780633e5e3c231461013157600080fd5b806303b7ab07146100e45780630a9254e4146100ee5780630f3b9893146100f6575b600080fd5b6100ec61019b565b005b6100ec610224565b6100ec610287565b610106610348565b6040516101139190610a41565b60405180910390f35b6101246103aa565b6040516101139190610ad4565b6101066104ec565b61010661054c565b6101496105ac565b6040516101139190610b94565b61015e610692565b6040516101139190610c5f565b610149610762565b61015e610848565b610183610918565b6040519015158152602001610113565b6101066109d3565b601c546040805160048082526024820183526020820180516001600160e01b0316632fce9e3560e01b179052915163c26a9e0d60e01b81526001600160a01b039093169263c26a9e0d926101f0929101610cc1565b600060405180830381600087803b15801561020a57600080fd5b505af115801561021e573d6000803e3d6000fd5b50505050565b60405161023090610a33565b604051809103906000f08015801561024c573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604051630618f58760e51b8152633ee5aeb560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b1580156102da57600080fd5b505af11580156102ee573d6000803e3d6000fd5b5050601c546040805160048082526024820183526020820180516001600160e01b031663d3c135db60e01b179052915163c26a9e0d60e01b81526001600160a01b03909316945063c26a9e0d93506101f092909101610cc1565b606060148054806020026020016040519081016040528092919081815260200182805480156103a057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610382575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156104e357600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156104cc57838290600052602060002001805461043f90610cdb565b80601f016020809104026020016040519081016040528092919081815260200182805461046b90610cdb565b80156104b85780601f1061048d576101008083540402835291602001916104b8565b820191906000526020600020905b81548152906001019060200180831161049b57829003601f168201915b505050505081526020019060010190610420565b5050505081525050815260200190600101906103ce565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156103a0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610382575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156103a0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610382575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156104e35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561067a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161063c5790505b505050505081525050815260200190600101906105d0565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156104e35783829060005260206000200180546106d590610cdb565b80601f016020809104026020016040519081016040528092919081815260200182805461070190610cdb565b801561074e5780601f106107235761010080835404028352916020019161074e565b820191906000526020600020905b81548152906001019060200180831161073157829003601f168201915b5050505050815260200190600101906106b6565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156104e35760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561083057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107f25790505b50505050508152505081526020019060010190610786565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156104e357838290600052602060002001805461088b90610cdb565b80601f01602080910402602001604051908101604052809291908181526020018280546108b790610cdb565b80156109045780601f106108d957610100808354040283529160200191610904565b820191906000526020600020905b8154815290600101906020018083116108e757829003601f168201915b50505050508152602001906001019061086c565b60075460009060ff1615610930575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156109a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cc9190610d15565b1415905090565b606060138054806020026020016040519081016040528092919081815260200182805480156103a0576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610382575050505050905090565b6105748062000d2f83390190565b6020808252825182820181905260009190848201906040850190845b81811015610a825783516001600160a01b031683529284019291840191600101610a5d565b50909695505050505050565b6000815180845260005b81811015610ab457602081850181015186830182015201610a98565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610b8457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610b6e57605f19898503018352610b5c848651610a8e565b948e01949350918d0191600101610b40565b505050978a019794505091880191600101610afb565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610c5057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610c3b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190610bf9565b50978a01979550505091870191600101610bbc565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610cb457603f19888603018452610ca2858351610a8e565b94509285019290850190600101610c86565b5092979650505050505050565b602081526000610cd46020830184610a8e565b9392505050565b600181811c90821680610cef57607f821691505b602082108103610d0f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610d2757600080fd5b505191905056fe608060405234801561001057600080fd5b507ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b031660008115801561005b5750825b90506000826001600160401b031660011480156100775750303b155b905081158015610085575080155b156100a35760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100d157845460ff60401b1916680100000000000000001785555b6100d9610129565b831561011f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050506101b7565b61013161013b565b610139610189565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661013957604051631afcd79f60e31b815260040160405180910390fd5b61019161013b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6103ae806101c66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632fce9e3514610046578063c26a9e0d14610048578063d3c135db1461005b575b600080fd5b005b610046610056366004610298565b610065565b6100466100a4565b565b61006d6100d5565b610077308261011f565b506100a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b6100ac6100d5565b61006360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161011957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b606061012d83836000610134565b9392505050565b60608147101561015e5760405163cd78605960e01b81523060048201526024015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516101879190610349565b60006040518083038185875af1925050503d80600081146101c4576040519150601f19603f3d011682016040523d82523d6000602084013e6101c9565b606091505b50915091506101d98683836101e3565b9695505050505050565b6060826101f8576101f382610259565b61012d565b815115801561021c575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561025257604051639996b31560e01b815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610155565b508061012d565b8051156102695780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156102aa57600080fd5b813567ffffffffffffffff808211156102c257600080fd5b818401915084601f8301126102d657600080fd5b8135818111156102e8576102e8610282565b604051601f8201601f19908116603f0116810190838211818310171561031057610310610282565b8160405282815287602084870101111561032957600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000825160005b8181101561036a5760208186018101518583015201610350565b50600092019182525091905056fea264697066735822122040a660f9b1870d6345d90fd351341be9a7dfe0063df9e1c7abc0a5ed0c80d84764736f6c63430008140033a26469706673582212202406e70f418bf787a1c0a687a6a6940ad92f99d9a959dd9dc36b9a08fb8035de64736f6c63430008140033","sourceMap":"204:461:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;546:117;;;:::i;:::-;;272:56;;;:::i;334:206::-;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5466:14:127;;5459:22;5441:41;;5429:2;5414:18;1243:204:1;5301:187:127;2304:142:5;;;:::i;546:117:110:-;596:3;;609:46;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;609:46:110;-1:-1:-1;;;609:46:110;;;596:60;;-1:-1:-1;;;596:60:110;;-1:-1:-1;;;;;596:3:110;;;;:12;;:60;;609:46;596:60;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;546:117::o;272:56::-;312:9;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;306:3:110;:15;;;;-1:-1:-1;;;;;306:15:110;;;;;;;;;;272:56::o;334:206::-;382:81;;-1:-1:-1;;;382:81:110;;-1:-1:-1;;;382:81:110;;;5860:52:127;382:15:110;;;;5833:18:127;;382:81:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;473:3:110;;486:46;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;486:46:110;-1:-1:-1;;;486:46:110;;;473:60;;-1:-1:-1;;;473:60:110;;-1:-1:-1;;;;;473:3:110;;;;-1:-1:-1;473:12:110;;-1:-1:-1;473:60:110;;486:46;;473:60;;:::i;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;6482:74:127;;;1398:17:1;6572:18:127;;;6565:34;1428:1:1;;1377:7;;6455:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;-1:-1:-1:-;;;;;;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:423::-;742:3;780:5;774:12;807:6;802:3;795:19;832:1;842:162;856:6;853:1;850:13;842:162;;;918:4;974:13;;;970:22;;964:29;946:11;;;942:20;;935:59;871:12;842:162;;;846:3;1049:1;1042:4;1033:6;1028:3;1024:16;1020:27;1013:38;1112:4;1105:2;1101:7;1096:2;1088:6;1084:15;1080:29;1075:3;1071:39;1067:50;1060:57;;;700:423;;;;:::o;1128:1765::-;1361:2;1413:21;;;1483:13;;1386:18;;;1505:22;;;1332:4;;1361:2;1546;;1564:18;;;;1601:1;1644:15;;;1629:31;;1625:40;;1688:15;;;1332:4;;1752:1112;1768:6;1763:3;1760:15;1752:1112;;;-1:-1:-1;;1837:22:127;;;1833:36;1821:49;;1893:13;;1980:9;;-1:-1:-1;;;;;1976:58:127;1961:74;;2074:11;;2068:18;2106:15;;;2099:27;;;2187:19;;1933:15;;;2219:24;;;2400:21;;;;2266:2;2348:17;;;2336:30;;2332:39;;;2290:15;;;;2445:1;2459:296;2475:8;2470:3;2467:17;2459:296;;;2581:2;2577:7;2568:6;2560;2556:19;2552:33;2545:5;2538:48;2613:42;2648:6;2637:8;2631:15;2613:42;:::i;:::-;2684:17;;;;2603:52;-1:-1:-1;2727:14:127;;;;2503:1;2494:11;2459:296;;;-1:-1:-1;;;2842:12:127;;;;2778:6;-1:-1:-1;;2807:15:127;;;;1794:1;1785:11;1752:1112;;;-1:-1:-1;2881:6:127;;1128:1765;-1:-1:-1;;;;;;;;;;1128:1765:127:o;2898:1590::-;3100:4;3129:2;3169;3158:9;3154:18;3199:2;3188:9;3181:21;3222:6;3257;3251:13;3288:6;3280;3273:22;3314:2;3304:12;;3347:2;3336:9;3332:18;3325:25;;3409:2;3399:6;3396:1;3392:14;3381:9;3377:30;3373:39;3447:2;3439:6;3435:15;3468:1;3489;3499:960;3515:6;3510:3;3507:15;3499:960;;;3584:22;;;-1:-1:-1;;3580:36:127;3568:49;;3640:13;;3727:9;;-1:-1:-1;;;;;3723:58:127;3708:74;;3821:11;;3815:18;3853:15;;;3846:27;;;3934:19;;3680:15;;;3966:24;;;4056:21;;;;4101:1;;4024:2;4012:15;;;4115:236;4131:8;4126:3;4123:17;4115:236;;;4212:15;;4229:20;4208:42;4194:57;;4320:17;;;;4159:1;4150:11;;;;;4277:14;;;;4115:236;;;-1:-1:-1;4437:12:127;;;;4374:5;-1:-1:-1;;;4402:15:127;;;;3541:1;3532:11;3499:960;;;-1:-1:-1;4476:6:127;;2898:1590;-1:-1:-1;;;;;;;;;2898:1590:127:o;4493:803::-;4655:4;4684:2;4724;4713:9;4709:18;4754:2;4743:9;4736:21;4777:6;4812;4806:13;4843:6;4835;4828:22;4881:2;4870:9;4866:18;4859:25;;4943:2;4933:6;4930:1;4926:14;4915:9;4911:30;4907:39;4893:53;;4981:2;4973:6;4969:15;5002:1;5012:255;5026:6;5023:1;5020:13;5012:255;;;5119:2;5115:7;5103:9;5095:6;5091:22;5087:36;5082:3;5075:49;5147:40;5180:6;5171;5165:13;5147:40;:::i;:::-;5137:50;-1:-1:-1;5245:12:127;;;;5210:15;;;;5048:1;5041:9;5012:255;;;-1:-1:-1;5284:6:127;;4493:803;-1:-1:-1;;;;;;;4493:803:127:o;5493:218::-;5640:2;5629:9;5622:21;5603:4;5660:45;5701:2;5690:9;5686:18;5678:6;5660:45;:::i;:::-;5652:53;5493:218;-1:-1:-1;;;5493:218:127:o;5923:380::-;6002:1;5998:12;;;;6045;;;6066:61;;6120:4;6112:6;6108:17;6098:27;;6066:61;6173:2;6165:6;6162:14;6142:18;6139:38;6136:161;;6219:10;6214:3;6210:20;6207:1;6200:31;6254:4;6251:1;6244:15;6282:4;6279:1;6272:15;6136:161;;5923:380;;;:::o;6610:184::-;6680:6;6733:2;6721:9;6712:7;6708:23;6704:32;6701:52;;;6749:1;6746;6739:12;6701:52;-1:-1:-1;6772:16:127;;6610:184;-1:-1:-1;6610:184:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testNoReentrancyGuard()":"03b7ab07","testReentrancyGuard()":"0f3b9893"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNoReentrancyGuard\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReentrancyGuard\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/ReentrancyGuardUpgradeable.t.sol\":\"ReentrancyGuardUpgradeableTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"test/libraries/ReentrancyGuardUpgradeable.t.sol\":{\"keccak256\":\"0x9dc03ca3b7828f64e308a184120b6bb934aed73830a1594e3c3135c0282e61c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b46df68d0a6a2d1b7e57156b90b68830c58c7b8b52f33033cf4d7b32cdef962\",\"dweb:/ipfs/QmaJ1nWWWcTQviG4dfp1PADNHC8zYpxcnXP2zoqm4uFM2V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNoReentrancyGuard"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testReentrancyGuard"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/ReentrancyGuardUpgradeable.t.sol":"ReentrancyGuardUpgradeableTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"test/libraries/ReentrancyGuardUpgradeable.t.sol":{"keccak256":"0x9dc03ca3b7828f64e308a184120b6bb934aed73830a1594e3c3135c0282e61c8","urls":["bzz-raw://6b46df68d0a6a2d1b7e57156b90b68830c58c7b8b52f33033cf4d7b32cdef962","dweb:/ipfs/QmaJ1nWWWcTQviG4dfp1PADNHC8zYpxcnXP2zoqm4uFM2V"],"license":"MIT"}},"version":1},"id":110} \ No newline at end of file diff --git a/abi/SafeCast.sol/SafeCast.json b/abi/SafeCast.sol/SafeCast.json deleted file mode 100644 index c6927473..00000000 --- a/abi/SafeCast.sol/SafeCast.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"SafeCast__Exceeds104Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds112Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds120Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds128Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds136Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds144Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds152Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds160Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds168Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds16Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds176Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds184Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds192Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds200Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds208Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds216Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds224Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds232Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds240Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds248Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds32Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds40Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds48Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds56Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds72Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds80Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds88Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds8Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds96Bits","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209240461f1050cb70798414843067f60c1c18ac342d3e5e52c2ad171bebdb2ade64736f6c63430008140033","sourceMap":"229:10748:79:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;229:10748:79;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209240461f1050cb70798414843067f60c1c18ac342d3e5e52c2ad171bebdb2ade64736f6c63430008140033","sourceMap":"229:10748:79:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds104Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds112Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds120Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds136Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds144Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds152Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds160Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds168Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds16Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds176Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds184Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds192Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds200Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds208Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds216Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds224Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds232Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds240Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds248Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds32Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds40Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds48Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds56Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds72Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds80Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds88Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds8Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds96Bits\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Safe Cast Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to safely cast uint256 to different uint types.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds104Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds112Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds120Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds128Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds136Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds144Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds152Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds160Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds168Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds16Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds176Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds184Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds192Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds200Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds208Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds216Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds224Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds232Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds240Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds248Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds32Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds40Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds48Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds56Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds72Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds80Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds88Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds8Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds96Bits"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/SafeCast.sol":"SafeCast"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"}},"version":1},"id":79} \ No newline at end of file diff --git a/abi/SafeCast.t.sol/SafeCastTest.json b/abi/SafeCast.t.sol/SafeCastTest.json deleted file mode 100644 index 99c75e4c..00000000 --- a/abi/SafeCast.t.sol/SafeCastTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_SafeCast104","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast112","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast120","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast128","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast136","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast144","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast152","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast16","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast160","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast168","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast176","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast184","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast192","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast200","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast208","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast216","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast224","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast232","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast24","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast240","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast248","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast32","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast40","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast48","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast56","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast64","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast72","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast8","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast80","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast88","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SafeCast96","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds104Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds112Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds120Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds128Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds136Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds144Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds152Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds160Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds168Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds16Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds176Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds184Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds192Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds200Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds208Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds216Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds224Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds232Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds240Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds248Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds32Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds40Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds48Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds56Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds72Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds80Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds88Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds8Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds96Bits","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b5061308c8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c80636dbe898811610186578063c1c55029116100e3578063e20c9f7111610097578063ef32ecd911610071578063ef32ecd91461058b578063f409d8841461059e578063fa295576146105b157600080fd5b8063e20c9f711461055d578063e3a62e5214610565578063e5772a251461057857600080fd5b8063d15db81d116100c8578063d15db81d14610524578063d38cc93814610537578063e067bfb41461054a57600080fd5b8063c1c55029146104fe578063c80b189b1461051157600080fd5b806385226c811161013a578063916a17c61161011f578063916a17c6146104d6578063b5508aa9146104de578063ba414fa6146104e657600080fd5b806385226c81146104ae57806389a1be22146104c357600080fd5b80637855d7121161016b5780637855d7121461047557806380afec191461048857806384b9fa751461049b57600080fd5b80636dbe89881461044f5780636fb9f1c91461046257600080fd5b80633f7286f4116102345780635408d0d7116101e8578063562fb6e9116101cd578063562fb6e9146104145780635e0011ea1461042757806366d9a9a01461043a57600080fd5b80635408d0d7146103ee57806355140fa41461040157600080fd5b80634d330754116102195780634d330754146103b55780635069a454146103c8578063521166a5146103db57600080fd5b80633f7286f41461039a5780634bfe8717146103a257600080fd5b806322e84d8e1161028b5780632d294d21116102705780632d294d211461036c5780633a5577411461037f5780633e5e3c231461039257600080fd5b806322e84d8e146103445780632ade38801461035757600080fd5b80631288c0e8116102bc5780631288c0e814610300578063128ea09c146103135780631ed7831c1461032657600080fd5b80630bf1b0a5146102d8578063109bc005146102ed575b600080fd5b6102eb6102e6366004612d22565b6105c4565b005b6102eb6102fb366004612d22565b6106a2565b6102eb61030e366004612d22565b610779565b6102eb610321366004612d22565b61086e565b61032e610945565b60405161033b9190612d3b565b60405180910390f35b6102eb610352366004612d22565b6109a7565b61035f610a9f565b60405161033b9190612dce565b6102eb61037a366004612d22565b610be1565b6102eb61038d366004612d22565b610cb8565b61032e610da4565b61032e610e04565b6102eb6103b0366004612d22565b610e64565b6102eb6103c3366004612d22565b610f5f565b6102eb6103d6366004612d22565b611036565b6102eb6103e9366004612d22565b611107565b6102eb6103fc366004612d22565b6111de565b6102eb61040f366004612d22565b6112b2565b6102eb610422366004612d22565b611389565b6102eb610435366004612d22565b611478565b61044261154f565b60405161033b9190612e8e565b6102eb61045d366004612d22565b611635565b6102eb610470366004612d22565b61171b565b6102eb610483366004612d22565b6117fe565b6102eb610496366004612d22565b6118d5565b6102eb6104a9366004612d22565b61199d565b6104b6611a74565b60405161033b9190612f59565b6102eb6104d1366004612d22565b611b44565b610442611c24565b6104b6611d0a565b6104ee611dda565b604051901515815260200161033b565b6102eb61050c366004612d22565b611e8f565b6102eb61051f366004612d22565b611f54565b6102eb610532366004612d22565b61202b565b6102eb610545366004612d22565b6120f9565b6102eb610558366004612d22565b6121d0565b61032e61229b565b6102eb610573366004612d22565b6122fb565b6102eb610586366004612d22565b6123d2565b6102eb610599366004612d22565b6124c4565b6102eb6105ac366004612d22565b6125ad565b6102eb6105bf366004612d22565b612687565b6001600160d81b0381111561064557604051630618f58760e51b81526328125e5160e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b5050505061064181612764565b5050565b61069f61065182612764565b6001600160d81b0316826001600160d81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743231363a3a31000000000000000000815250612793565b50565b6001600160f01b0381111561071f57604051630618f58760e51b8152632316809160e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b50505050610641816127fd565b61069f61072b826127fd565b6001600160f01b0316826001600160f01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743234303a3a31000000000000000000815250612793565b70ffffffffffffffffffffffffffffffffff81111561080057604051630618f58760e51b81526307f5fb6360e51b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b5050505061064181612827565b61069f61080c82612827565b70ffffffffffffffffffffffffffffffffff168270ffffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743133363a3a31000000000000000000815250612793565b66ffffffffffffff8111156108eb57604051630618f58760e51b8152638900c53960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156108ca57600080fd5b505af11580156108de573d6000803e3d6000fd5b505050506106418161285b565b61069f6108f78261285b565b66ffffffffffffff168266ffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737435363a3a3100000000000000000000815250612793565b6060601480548060200260200160405190810160405280929190818152602001828054801561099d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161097f575b5050505050905090565b71ffffffffffffffffffffffffffffffffffff811115610a2f57604051630618f58760e51b8152637696a63160e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610a0e57600080fd5b505af1158015610a22573d6000803e3d6000fd5b5050505061064181612885565b61069f610a3b82612885565b71ffffffffffffffffffffffffffffffffffff168271ffffffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743134343a3a31000000000000000000815250612793565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bd857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610bc1578382906000526020600020018054610b3490612fbb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090612fbb565b8015610bad5780601f10610b8257610100808354040283529160200191610bad565b820191906000526020600020905b815481529060010190602001808311610b9057829003601f168201915b505050505081526020019060010190610b15565b505050508152505081526020019060010190610ac3565b50505050905090565b6001600160f81b03811115610c5e57604051630618f58760e51b8152634330904360e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610c3d57600080fd5b505af1158015610c51573d6000803e3d6000fd5b50505050610641816128ba565b61069f610c6a826128ba565b6001600160f81b0316826001600160f81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743234383a3a31000000000000000000815250612793565b6dffffffffffffffffffffffffffff811115610d3c57604051630618f58760e51b8152631443fd7560e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610d1b57600080fd5b505af1158015610d2f573d6000803e3d6000fd5b50505050610641816128e4565b61069f610d48826128e4565b6dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743131323a3a31000000000000000000815250612793565b6060601680548060200260200160405190810160405280929190818152602001828054801561099d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161097f575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561099d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161097f575050505050905090565b72ffffffffffffffffffffffffffffffffffffff811115610eed57604051630618f58760e51b8152632176a06f60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b5050505061064181612915565b61069f610ef982612915565b72ffffffffffffffffffffffffffffffffffffff168272ffffffffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743135323a3a31000000000000000000815250612793565b6001600160e81b03811115610fdc57604051630618f58760e51b815263381c6f1b60e21b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b505050506106418161294b565b61069f610fe88261294b565b6001600160e81b0316826001600160e81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743233323a3a31000000000000000000815250612793565b64ffffffffff8111156110b157604051630618f58760e51b81526350dbfc8760e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561109057600080fd5b505af11580156110a4573d6000803e3d6000fd5b5050505061064181612975565b61069f6110bd82612975565b64ffffffffff168264ffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737434303a3a3100000000000000000000815250612793565b6001600160b81b0381111561118457604051630618f58760e51b8152631ed9db7d60e31b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561116357600080fd5b505af1158015611177573d6000803e3d6000fd5b505050506106418161299d565b61069f6111908261299d565b6001600160b81b0316826001600160b81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743138343a3a31000000000000000000815250612793565b65ffffffffffff81111561125a57604051630618f58760e51b815263019bc35360e21b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561123957600080fd5b505af115801561124d573d6000803e3d6000fd5b50505050610641816129c7565b61069f611266826129c7565b65ffffffffffff168265ffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737434383a3a3100000000000000000000815250612793565b6001600160a81b0381111561132f57604051630618f58760e51b8152635d103a9560e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561130e57600080fd5b505af1158015611322573d6000803e3d6000fd5b50505050610641816129f0565b61069f61133b826129f0565b6001600160a81b0316826001600160a81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743136383a3a31000000000000000000815250612793565b6effffffffffffffffffffffffffffff81111561140e57604051630618f58760e51b81526371bc071560e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b5050505061064181612a1a565b61069f61141a82612a1a565b6effffffffffffffffffffffffffffff16826effffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743132303a3a31000000000000000000815250612793565b6001600160a01b038111156114f557604051630618f58760e51b8152632de5569560e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b5050505061064181612a4c565b61069f61150182612a4c565b6001600160a01b0316826001600160a01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743136303a3a31000000000000000000815250612793565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bd85760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561161d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115df5790505b50505050508152505081526020019060010190611573565b6bffffffffffffffffffffffff8111156116b757604051630618f58760e51b8152630322c81960e51b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561169657600080fd5b505af11580156116aa573d6000803e3d6000fd5b5050505061064181612a76565b61069f6116c382612a76565b6bffffffffffffffffffffffff16826bffffffffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737439363a3a3100000000000000000000815250612793565b6affffffffffffffffffffff81111561179c57604051630618f58760e51b81526325f7d41360e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b5050505061064181612aa5565b61069f6117a882612aa5565b6affffffffffffffffffffff16826affffffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737438383a3a3100000000000000000000815250612793565b6001600160c01b0381111561187b57604051630618f58760e51b815263762bc6eb60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561185a57600080fd5b505af115801561186e573d6000803e3d6000fd5b5050505061064181612ad3565b61069f61188782612ad3565b6001600160c01b0316826001600160c01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743139323a3a31000000000000000000815250612793565b61ffff81111561194d57604051630618f58760e51b81526364ae406d60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561192c57600080fd5b505af1158015611940573d6000803e3d6000fd5b5050505061064181612afd565b61069f61195982612afd565b61ffff168261ffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737431363a3a3100000000000000000000815250612793565b6001600160c81b03811115611a1a57604051630618f58760e51b8152638c30799960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b5050505061064181612b22565b61069f611a2682612b22565b6001600160c81b0316826001600160c81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743230303a3a31000000000000000000815250612793565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610bd8578382906000526020600020018054611ab790612fbb565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae390612fbb565b8015611b305780601f10611b0557610100808354040283529160200191611b30565b820191906000526020600020905b815481529060010190602001808311611b1357829003601f168201915b505050505081526020019060010190611a98565b69ffffffffffffffffffff811115611bc457604051630618f58760e51b81526316b9d57d60e31b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015611ba357600080fd5b505af1158015611bb7573d6000803e3d6000fd5b5050505061064181612b4c565b61069f611bd082612b4c565b69ffffffffffffffffffff168269ffffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737438303a3a3100000000000000000000815250612793565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bd85760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611cf257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611cb45790505b50505050508152505081526020019060010190611c48565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610bd8578382906000526020600020018054611d4d90612fbb565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7990612fbb565b8015611dc65780601f10611d9b57610100808354040283529160200191611dc6565b820191906000526020600020905b815481529060010190602001808311611da957829003601f168201915b505050505081526020019060010190611d2e565b60075460009060ff1615611df2575060075460ff1690565b604051630667f9d760e41b8152600080516020613037833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e889190612ff5565b1415905090565b60ff811115611f0657604051630618f58760e51b815263a1102bbf60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b5050505061064181612b79565b61069f611f1282612b79565b60ff168260ff166040518060400160405280601581526020017f7465737446757a7a5f5361666543617374383a3a310000000000000000000000815250612793565b6001600160d01b03811115611fd157604051630618f58760e51b8152630e29314f60e41b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015611fb057600080fd5b505af1158015611fc4573d6000803e3d6000fd5b5050505061064181612b9d565b61069f611fdd82612b9d565b6001600160d01b0316826001600160d01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743230383a3a31000000000000000000815250612793565b63ffffffff8111156120a557604051630618f58760e51b81526304355cdd60e41b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561208457600080fd5b505af1158015612098573d6000803e3d6000fd5b5050505061064181612bc7565b61069f6120b182612bc7565b63ffffffff168263ffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737433323a3a3100000000000000000000815250612793565b6001600160b01b0381111561217657604051630618f58760e51b815263b19778dd60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561215557600080fd5b505af1158015612169573d6000803e3d6000fd5b5050505061064181612bee565b61069f61218282612bee565b6001600160b01b0316826001600160b01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743137363a3a31000000000000000000815250612793565b62ffffff81111561224957604051630618f58760e51b8152639b63641560e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561222857600080fd5b505af115801561223c573d6000803e3d6000fd5b5050505061064181612c18565b61069f61225582612c18565b62ffffff168262ffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737432343a3a3100000000000000000000815250612793565b6060601380548060200260200160405190810160405280929190818152602001828054801561099d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161097f575050505050905090565b6001600160e01b0381111561237857604051630618f58760e51b815263c137494960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561235757600080fd5b505af115801561236b573d6000803e3d6000fd5b5050505061064181612c3e565b61069f61238482612c3e565b6001600160e01b0316826001600160e01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743232343a3a31000000000000000000815250612793565b6fffffffffffffffffffffffffffffffff81111561245857604051630618f58760e51b8152632f45db3d60e21b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b5050505061064181612c68565b61069f61246482612c68565b6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743132383a3a31000000000000000000815250612793565b6cffffffffffffffffffffffffff81111561254757604051630618f58760e51b815263087ba03360e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561252657600080fd5b505af115801561253a573d6000803e3d6000fd5b5050505061064181612c9b565b61069f61255382612c9b565b6cffffffffffffffffffffffffff16826cffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743130343a3a31000000000000000000815250612793565b67ffffffffffffffff81111561262b57604051630618f58760e51b815263cc21feb960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561260a57600080fd5b505af115801561261e573d6000803e3d6000fd5b5050505061064181612ccb565b61069f61263782612ccb565b67ffffffffffffffff168267ffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737436343a3a3100000000000000000000815250612793565b68ffffffffffffffffff81111561270657604051630618f58760e51b8152633117066160e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156126e557600080fd5b505af11580156126f9573d6000803e3d6000fd5b5050505061064181612cf6565b61069f61271282612cf6565b68ffffffffffffffffff168268ffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737437323a3a3100000000000000000000815250612793565b806001600160d81b038116811461278e576040516328125e5160e01b815260040160405180910390fd5b919050565b6040516388b44c8560e01b8152600080516020613037833981519152906388b44c85906127c89086908690869060040161300e565b60006040518083038186803b1580156127e057600080fd5b505afa1580156127f4573d6000803e3d6000fd5b50505050505050565b806001600160f01b038116811461278e57604051632316809160e01b815260040160405180910390fd5b8070ffffffffffffffffffffffffffffffffff8116811461278e576040516307f5fb6360e51b815260040160405180910390fd5b8066ffffffffffffff8116811461278e57604051638900c53960e01b815260040160405180910390fd5b8071ffffffffffffffffffffffffffffffffffff8116811461278e57604051637696a63160e01b815260040160405180910390fd5b806001600160f81b038116811461278e57604051634330904360e01b815260040160405180910390fd5b806dffffffffffffffffffffffffffff8116811461278e57604051631443fd7560e11b815260040160405180910390fd5b8072ffffffffffffffffffffffffffffffffffffff8116811461278e57604051632176a06f60e01b815260040160405180910390fd5b806001600160e81b038116811461278e5760405163381c6f1b60e21b815260040160405180910390fd5b8064ffffffffff8116811461278e576040516350dbfc8760e11b815260040160405180910390fd5b806001600160b81b038116811461278e57604051631ed9db7d60e31b815260040160405180910390fd5b8065ffffffffffff8116811461278e5760405163019bc35360e21b815260040160405180910390fd5b806001600160a81b038116811461278e57604051635d103a9560e01b815260040160405180910390fd5b806effffffffffffffffffffffffffffff8116811461278e576040516371bc071560e11b815260040160405180910390fd5b806001600160a01b038116811461278e57604051632de5569560e01b815260040160405180910390fd5b806bffffffffffffffffffffffff8116811461278e57604051630322c81960e51b815260040160405180910390fd5b806affffffffffffffffffffff8116811461278e576040516325f7d41360e11b815260040160405180910390fd5b806001600160c01b038116811461278e5760405163762bc6eb60e01b815260040160405180910390fd5b8061ffff8116811461278e576040516364ae406d60e01b815260040160405180910390fd5b806001600160c81b038116811461278e57604051638c30799960e01b815260040160405180910390fd5b8069ffffffffffffffffffff8116811461278e576040516316b9d57d60e31b815260040160405180910390fd5b8060ff8116811461278e5760405163a1102bbf60e01b815260040160405180910390fd5b806001600160d01b038116811461278e57604051630e29314f60e41b815260040160405180910390fd5b8063ffffffff8116811461278e576040516304355cdd60e41b815260040160405180910390fd5b806001600160b01b038116811461278e5760405163b19778dd60e01b815260040160405180910390fd5b8062ffffff8116811461278e57604051639b63641560e01b815260040160405180910390fd5b806001600160e01b038116811461278e5760405163c137494960e01b815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff8116811461278e57604051632f45db3d60e21b815260040160405180910390fd5b806cffffffffffffffffffffffffff8116811461278e5760405163087ba03360e11b815260040160405180910390fd5b8067ffffffffffffffff8116811461278e5760405163cc21feb960e01b815260040160405180910390fd5b8068ffffffffffffffffff8116811461278e57604051633117066160e11b815260040160405180910390fd5b600060208284031215612d3457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612d7c5783516001600160a01b031683529284019291840191600101612d57565b50909695505050505050565b6000815180845260005b81811015612dae57602081850181015186830182015201612d92565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612e7e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612e6857605f19898503018352612e56848651612d88565b948e01949350918d0191600101612e3a565b505050978a019794505091880191600101612df5565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612f4a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612f355783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190612ef3565b50978a01979550505091870191600101612eb6565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612fae57603f19888603018452612f9c858351612d88565b94509285019290850190600101612f80565b5092979650505050505050565b600181811c90821680612fcf57607f821691505b602082108103612fef57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561300757600080fd5b5051919050565b83815282602082015260606040820152600061302d6060830184612d88565b9594505050505056fe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220bf7b94332e891f764515c714a209961acf07c2ea81d505c0c07324c6b704911d64736f6c63430008140033","sourceMap":"141:9243:116:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;141:9243:116;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106102d35760003560e01c80636dbe898811610186578063c1c55029116100e3578063e20c9f7111610097578063ef32ecd911610071578063ef32ecd91461058b578063f409d8841461059e578063fa295576146105b157600080fd5b8063e20c9f711461055d578063e3a62e5214610565578063e5772a251461057857600080fd5b8063d15db81d116100c8578063d15db81d14610524578063d38cc93814610537578063e067bfb41461054a57600080fd5b8063c1c55029146104fe578063c80b189b1461051157600080fd5b806385226c811161013a578063916a17c61161011f578063916a17c6146104d6578063b5508aa9146104de578063ba414fa6146104e657600080fd5b806385226c81146104ae57806389a1be22146104c357600080fd5b80637855d7121161016b5780637855d7121461047557806380afec191461048857806384b9fa751461049b57600080fd5b80636dbe89881461044f5780636fb9f1c91461046257600080fd5b80633f7286f4116102345780635408d0d7116101e8578063562fb6e9116101cd578063562fb6e9146104145780635e0011ea1461042757806366d9a9a01461043a57600080fd5b80635408d0d7146103ee57806355140fa41461040157600080fd5b80634d330754116102195780634d330754146103b55780635069a454146103c8578063521166a5146103db57600080fd5b80633f7286f41461039a5780634bfe8717146103a257600080fd5b806322e84d8e1161028b5780632d294d21116102705780632d294d211461036c5780633a5577411461037f5780633e5e3c231461039257600080fd5b806322e84d8e146103445780632ade38801461035757600080fd5b80631288c0e8116102bc5780631288c0e814610300578063128ea09c146103135780631ed7831c1461032657600080fd5b80630bf1b0a5146102d8578063109bc005146102ed575b600080fd5b6102eb6102e6366004612d22565b6105c4565b005b6102eb6102fb366004612d22565b6106a2565b6102eb61030e366004612d22565b610779565b6102eb610321366004612d22565b61086e565b61032e610945565b60405161033b9190612d3b565b60405180910390f35b6102eb610352366004612d22565b6109a7565b61035f610a9f565b60405161033b9190612dce565b6102eb61037a366004612d22565b610be1565b6102eb61038d366004612d22565b610cb8565b61032e610da4565b61032e610e04565b6102eb6103b0366004612d22565b610e64565b6102eb6103c3366004612d22565b610f5f565b6102eb6103d6366004612d22565b611036565b6102eb6103e9366004612d22565b611107565b6102eb6103fc366004612d22565b6111de565b6102eb61040f366004612d22565b6112b2565b6102eb610422366004612d22565b611389565b6102eb610435366004612d22565b611478565b61044261154f565b60405161033b9190612e8e565b6102eb61045d366004612d22565b611635565b6102eb610470366004612d22565b61171b565b6102eb610483366004612d22565b6117fe565b6102eb610496366004612d22565b6118d5565b6102eb6104a9366004612d22565b61199d565b6104b6611a74565b60405161033b9190612f59565b6102eb6104d1366004612d22565b611b44565b610442611c24565b6104b6611d0a565b6104ee611dda565b604051901515815260200161033b565b6102eb61050c366004612d22565b611e8f565b6102eb61051f366004612d22565b611f54565b6102eb610532366004612d22565b61202b565b6102eb610545366004612d22565b6120f9565b6102eb610558366004612d22565b6121d0565b61032e61229b565b6102eb610573366004612d22565b6122fb565b6102eb610586366004612d22565b6123d2565b6102eb610599366004612d22565b6124c4565b6102eb6105ac366004612d22565b6125ad565b6102eb6105bf366004612d22565b612687565b6001600160d81b0381111561064557604051630618f58760e51b81526328125e5160e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561062057600080fd5b505af1158015610634573d6000803e3d6000fd5b5050505061064181612764565b5050565b61069f61065182612764565b6001600160d81b0316826001600160d81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743231363a3a31000000000000000000815250612793565b50565b6001600160f01b0381111561071f57604051630618f58760e51b8152632316809160e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b50505050610641816127fd565b61069f61072b826127fd565b6001600160f01b0316826001600160f01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743234303a3a31000000000000000000815250612793565b70ffffffffffffffffffffffffffffffffff81111561080057604051630618f58760e51b81526307f5fb6360e51b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b5050505061064181612827565b61069f61080c82612827565b70ffffffffffffffffffffffffffffffffff168270ffffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743133363a3a31000000000000000000815250612793565b66ffffffffffffff8111156108eb57604051630618f58760e51b8152638900c53960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156108ca57600080fd5b505af11580156108de573d6000803e3d6000fd5b505050506106418161285b565b61069f6108f78261285b565b66ffffffffffffff168266ffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737435363a3a3100000000000000000000815250612793565b6060601480548060200260200160405190810160405280929190818152602001828054801561099d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161097f575b5050505050905090565b71ffffffffffffffffffffffffffffffffffff811115610a2f57604051630618f58760e51b8152637696a63160e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610a0e57600080fd5b505af1158015610a22573d6000803e3d6000fd5b5050505061064181612885565b61069f610a3b82612885565b71ffffffffffffffffffffffffffffffffffff168271ffffffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743134343a3a31000000000000000000815250612793565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bd857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610bc1578382906000526020600020018054610b3490612fbb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090612fbb565b8015610bad5780601f10610b8257610100808354040283529160200191610bad565b820191906000526020600020905b815481529060010190602001808311610b9057829003601f168201915b505050505081526020019060010190610b15565b505050508152505081526020019060010190610ac3565b50505050905090565b6001600160f81b03811115610c5e57604051630618f58760e51b8152634330904360e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610c3d57600080fd5b505af1158015610c51573d6000803e3d6000fd5b50505050610641816128ba565b61069f610c6a826128ba565b6001600160f81b0316826001600160f81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743234383a3a31000000000000000000815250612793565b6dffffffffffffffffffffffffffff811115610d3c57604051630618f58760e51b8152631443fd7560e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610d1b57600080fd5b505af1158015610d2f573d6000803e3d6000fd5b50505050610641816128e4565b61069f610d48826128e4565b6dffffffffffffffffffffffffffff16826dffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743131323a3a31000000000000000000815250612793565b6060601680548060200260200160405190810160405280929190818152602001828054801561099d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161097f575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561099d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161097f575050505050905090565b72ffffffffffffffffffffffffffffffffffffff811115610eed57604051630618f58760e51b8152632176a06f60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b5050505061064181612915565b61069f610ef982612915565b72ffffffffffffffffffffffffffffffffffffff168272ffffffffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743135323a3a31000000000000000000815250612793565b6001600160e81b03811115610fdc57604051630618f58760e51b815263381c6f1b60e21b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b505050506106418161294b565b61069f610fe88261294b565b6001600160e81b0316826001600160e81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743233323a3a31000000000000000000815250612793565b64ffffffffff8111156110b157604051630618f58760e51b81526350dbfc8760e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561109057600080fd5b505af11580156110a4573d6000803e3d6000fd5b5050505061064181612975565b61069f6110bd82612975565b64ffffffffff168264ffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737434303a3a3100000000000000000000815250612793565b6001600160b81b0381111561118457604051630618f58760e51b8152631ed9db7d60e31b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561116357600080fd5b505af1158015611177573d6000803e3d6000fd5b505050506106418161299d565b61069f6111908261299d565b6001600160b81b0316826001600160b81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743138343a3a31000000000000000000815250612793565b65ffffffffffff81111561125a57604051630618f58760e51b815263019bc35360e21b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561123957600080fd5b505af115801561124d573d6000803e3d6000fd5b50505050610641816129c7565b61069f611266826129c7565b65ffffffffffff168265ffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737434383a3a3100000000000000000000815250612793565b6001600160a81b0381111561132f57604051630618f58760e51b8152635d103a9560e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561130e57600080fd5b505af1158015611322573d6000803e3d6000fd5b50505050610641816129f0565b61069f61133b826129f0565b6001600160a81b0316826001600160a81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743136383a3a31000000000000000000815250612793565b6effffffffffffffffffffffffffffff81111561140e57604051630618f58760e51b81526371bc071560e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b5050505061064181612a1a565b61069f61141a82612a1a565b6effffffffffffffffffffffffffffff16826effffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743132303a3a31000000000000000000815250612793565b6001600160a01b038111156114f557604051630618f58760e51b8152632de5569560e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b5050505061064181612a4c565b61069f61150182612a4c565b6001600160a01b0316826001600160a01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743136303a3a31000000000000000000815250612793565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bd85760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561161d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116115df5790505b50505050508152505081526020019060010190611573565b6bffffffffffffffffffffffff8111156116b757604051630618f58760e51b8152630322c81960e51b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561169657600080fd5b505af11580156116aa573d6000803e3d6000fd5b5050505061064181612a76565b61069f6116c382612a76565b6bffffffffffffffffffffffff16826bffffffffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737439363a3a3100000000000000000000815250612793565b6affffffffffffffffffffff81111561179c57604051630618f58760e51b81526325f7d41360e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b5050505061064181612aa5565b61069f6117a882612aa5565b6affffffffffffffffffffff16826affffffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737438383a3a3100000000000000000000815250612793565b6001600160c01b0381111561187b57604051630618f58760e51b815263762bc6eb60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561185a57600080fd5b505af115801561186e573d6000803e3d6000fd5b5050505061064181612ad3565b61069f61188782612ad3565b6001600160c01b0316826001600160c01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743139323a3a31000000000000000000815250612793565b61ffff81111561194d57604051630618f58760e51b81526364ae406d60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561192c57600080fd5b505af1158015611940573d6000803e3d6000fd5b5050505061064181612afd565b61069f61195982612afd565b61ffff168261ffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737431363a3a3100000000000000000000815250612793565b6001600160c81b03811115611a1a57604051630618f58760e51b8152638c30799960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b5050505061064181612b22565b61069f611a2682612b22565b6001600160c81b0316826001600160c81b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743230303a3a31000000000000000000815250612793565b60606018805480602002602001604051908101604052809291908181526020016000905b82821015610bd8578382906000526020600020018054611ab790612fbb565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae390612fbb565b8015611b305780601f10611b0557610100808354040283529160200191611b30565b820191906000526020600020905b815481529060010190602001808311611b1357829003601f168201915b505050505081526020019060010190611a98565b69ffffffffffffffffffff811115611bc457604051630618f58760e51b81526316b9d57d60e31b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015611ba357600080fd5b505af1158015611bb7573d6000803e3d6000fd5b5050505061064181612b4c565b61069f611bd082612b4c565b69ffffffffffffffffffff168269ffffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737438303a3a3100000000000000000000815250612793565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bd85760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611cf257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411611cb45790505b50505050508152505081526020019060010190611c48565b60606017805480602002602001604051908101604052809291908181526020016000905b82821015610bd8578382906000526020600020018054611d4d90612fbb565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7990612fbb565b8015611dc65780601f10611d9b57610100808354040283529160200191611dc6565b820191906000526020600020905b815481529060010190602001808311611da957829003601f168201915b505050505081526020019060010190611d2e565b60075460009060ff1615611df2575060075460ff1690565b604051630667f9d760e41b8152600080516020613037833981519152600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e889190612ff5565b1415905090565b60ff811115611f0657604051630618f58760e51b815263a1102bbf60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b5050505061064181612b79565b61069f611f1282612b79565b60ff168260ff166040518060400160405280601581526020017f7465737446757a7a5f5361666543617374383a3a310000000000000000000000815250612793565b6001600160d01b03811115611fd157604051630618f58760e51b8152630e29314f60e41b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b158015611fb057600080fd5b505af1158015611fc4573d6000803e3d6000fd5b5050505061064181612b9d565b61069f611fdd82612b9d565b6001600160d01b0316826001600160d01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743230383a3a31000000000000000000815250612793565b63ffffffff8111156120a557604051630618f58760e51b81526304355cdd60e41b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561208457600080fd5b505af1158015612098573d6000803e3d6000fd5b5050505061064181612bc7565b61069f6120b182612bc7565b63ffffffff168263ffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737433323a3a3100000000000000000000815250612793565b6001600160b01b0381111561217657604051630618f58760e51b815263b19778dd60e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561215557600080fd5b505af1158015612169573d6000803e3d6000fd5b5050505061064181612bee565b61069f61218282612bee565b6001600160b01b0316826001600160b01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743137363a3a31000000000000000000815250612793565b62ffffff81111561224957604051630618f58760e51b8152639b63641560e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561222857600080fd5b505af115801561223c573d6000803e3d6000fd5b5050505061064181612c18565b61069f61225582612c18565b62ffffff168262ffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737432343a3a3100000000000000000000815250612793565b6060601380548060200260200160405190810160405280929190818152602001828054801561099d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161097f575050505050905090565b6001600160e01b0381111561237857604051630618f58760e51b815263c137494960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561235757600080fd5b505af115801561236b573d6000803e3d6000fd5b5050505061064181612c3e565b61069f61238482612c3e565b6001600160e01b0316826001600160e01b03166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743232343a3a31000000000000000000815250612793565b6fffffffffffffffffffffffffffffffff81111561245857604051630618f58760e51b8152632f45db3d60e21b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b5050505061064181612c68565b61069f61246482612c68565b6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743132383a3a31000000000000000000815250612793565b6cffffffffffffffffffffffffff81111561254757604051630618f58760e51b815263087ba03360e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561252657600080fd5b505af115801561253a573d6000803e3d6000fd5b5050505061064181612c9b565b61069f61255382612c9b565b6cffffffffffffffffffffffffff16826cffffffffffffffffffffffffff166040518060400160405280601781526020017f7465737446757a7a5f53616665436173743130343a3a31000000000000000000815250612793565b67ffffffffffffffff81111561262b57604051630618f58760e51b815263cc21feb960e01b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b15801561260a57600080fd5b505af115801561261e573d6000803e3d6000fd5b5050505061064181612ccb565b61069f61263782612ccb565b67ffffffffffffffff168267ffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737436343a3a3100000000000000000000815250612793565b68ffffffffffffffffff81111561270657604051630618f58760e51b8152633117066160e11b60048201526000805160206130378339815191529063c31eb0e090602401600060405180830381600087803b1580156126e557600080fd5b505af11580156126f9573d6000803e3d6000fd5b5050505061064181612cf6565b61069f61271282612cf6565b68ffffffffffffffffff168268ffffffffffffffffff166040518060400160405280601681526020017f7465737446757a7a5f536166654361737437323a3a3100000000000000000000815250612793565b806001600160d81b038116811461278e576040516328125e5160e01b815260040160405180910390fd5b919050565b6040516388b44c8560e01b8152600080516020613037833981519152906388b44c85906127c89086908690869060040161300e565b60006040518083038186803b1580156127e057600080fd5b505afa1580156127f4573d6000803e3d6000fd5b50505050505050565b806001600160f01b038116811461278e57604051632316809160e01b815260040160405180910390fd5b8070ffffffffffffffffffffffffffffffffff8116811461278e576040516307f5fb6360e51b815260040160405180910390fd5b8066ffffffffffffff8116811461278e57604051638900c53960e01b815260040160405180910390fd5b8071ffffffffffffffffffffffffffffffffffff8116811461278e57604051637696a63160e01b815260040160405180910390fd5b806001600160f81b038116811461278e57604051634330904360e01b815260040160405180910390fd5b806dffffffffffffffffffffffffffff8116811461278e57604051631443fd7560e11b815260040160405180910390fd5b8072ffffffffffffffffffffffffffffffffffffff8116811461278e57604051632176a06f60e01b815260040160405180910390fd5b806001600160e81b038116811461278e5760405163381c6f1b60e21b815260040160405180910390fd5b8064ffffffffff8116811461278e576040516350dbfc8760e11b815260040160405180910390fd5b806001600160b81b038116811461278e57604051631ed9db7d60e31b815260040160405180910390fd5b8065ffffffffffff8116811461278e5760405163019bc35360e21b815260040160405180910390fd5b806001600160a81b038116811461278e57604051635d103a9560e01b815260040160405180910390fd5b806effffffffffffffffffffffffffffff8116811461278e576040516371bc071560e11b815260040160405180910390fd5b806001600160a01b038116811461278e57604051632de5569560e01b815260040160405180910390fd5b806bffffffffffffffffffffffff8116811461278e57604051630322c81960e51b815260040160405180910390fd5b806affffffffffffffffffffff8116811461278e576040516325f7d41360e11b815260040160405180910390fd5b806001600160c01b038116811461278e5760405163762bc6eb60e01b815260040160405180910390fd5b8061ffff8116811461278e576040516364ae406d60e01b815260040160405180910390fd5b806001600160c81b038116811461278e57604051638c30799960e01b815260040160405180910390fd5b8069ffffffffffffffffffff8116811461278e576040516316b9d57d60e31b815260040160405180910390fd5b8060ff8116811461278e5760405163a1102bbf60e01b815260040160405180910390fd5b806001600160d01b038116811461278e57604051630e29314f60e41b815260040160405180910390fd5b8063ffffffff8116811461278e576040516304355cdd60e41b815260040160405180910390fd5b806001600160b01b038116811461278e5760405163b19778dd60e01b815260040160405180910390fd5b8062ffffff8116811461278e57604051639b63641560e01b815260040160405180910390fd5b806001600160e01b038116811461278e5760405163c137494960e01b815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff8116811461278e57604051632f45db3d60e21b815260040160405180910390fd5b806cffffffffffffffffffffffffff8116811461278e5760405163087ba03360e11b815260040160405180910390fd5b8067ffffffffffffffff8116811461278e5760405163cc21feb960e01b815260040160405180910390fd5b8068ffffffffffffffffff8116811461278e57604051633117066160e11b815260040160405180910390fd5b600060208284031215612d3457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612d7c5783516001600160a01b031683529284019291840191600101612d57565b50909695505050505050565b6000815180845260005b81811015612dae57602081850181015186830182015201612d92565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015612e7e57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015612e6857605f19898503018352612e56848651612d88565b948e01949350918d0191600101612e3a565b505050978a019794505091880191600101612df5565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612f4a57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015612f355783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190612ef3565b50978a01979550505091870191600101612eb6565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612fae57603f19888603018452612f9c858351612d88565b94509285019290850190600101612f80565b5092979650505050505050565b600181811c90821680612fcf57607f821691505b602082108103612fef57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561300757600080fd5b5051919050565b83815282602082015260606040820152600061302d6060830184612d88565b9594505050505056fe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da2646970667358221220bf7b94332e891f764515c714a209961acf07c2ea81d505c0c07324c6b704911d64736f6c63430008140033","sourceMap":"141:9243:116:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1406:293;;;;;;:::i;:::-;;:::i;:::-;;509;;;;;;:::i;:::-;;:::i;4396:::-;;;;;;:::i;:::-;;:::i;7351:286::-;;;;;;:::i;:::-;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4097:293:116;;;;;;:::i;:::-;;:::i;3360:151:5:-;;;:::i;:::-;;;;;;;:::i;210:293:116:-;;;;;;:::i;:::-;;:::i;5293:::-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;3798:293:116:-;;;;;;:::i;:::-;;:::i;808:::-;;;;;;:::i;:::-;;:::i;7935:286::-;;;;;;:::i;:::-;;:::i;2602:293::-;;;;;;:::i;:::-;;:::i;7643:286::-;;;;;;:::i;:::-;;:::i;3200:293::-;;;;;;:::i;:::-;;:::i;4994:::-;;;;;;:::i;:::-;;:::i;3499:::-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;5891:286:116:-;;;;;;:::i;:::-;;:::i;6183:::-;;;;;;:::i;:::-;;:::i;2303:293::-;;;;;;:::i;:::-;;:::i;8811:286::-;;;;;;:::i;:::-;;:::i;2004:293::-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;6475:286:116:-;;;;;;:::i;:::-;;:::i;3069:146:5:-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5651:14:127;;5644:22;5626:41;;5614:2;5599:18;1243:204:1;5486:187:127;9103:279:116;;;;;;:::i;:::-;;:::i;1705:293::-;;;;;;:::i;:::-;;:::i;8227:286::-;;;;;;:::i;:::-;;:::i;2901:293::-;;;;;;:::i;:::-;;:::i;8519:286::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;1107:293:116:-;;;;;;:::i;:::-;;:::i;4695:::-;;;;;;:::i;:::-;;:::i;5592:::-;;;;;;:::i;:::-;;:::i;7059:286::-;;;;;;:::i;:::-;;:::i;6767:::-;;;;;;:::i;:::-;;:::i;1406:293::-;-1:-1:-1;;;;;1470:21:116;;1466:227;;;1507:59;;-1:-1:-1;;;1507:59:116;;-1:-1:-1;;;1507:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;1507:15:116;;;5795:18:127;;1507:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:11;:1;:9;:11::i;:::-;;1406:293;:::o;1466:227::-;1622:60;1631:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;1622:60:116;1652:1;-1:-1:-1;;;;;1622:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;:::-;1406:293;:::o;509:::-;-1:-1:-1;;;;;573:21:116;;569:227;;;610:59;;-1:-1:-1;;;610:59:116;;-1:-1:-1;;;610:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;610:15:116;;;5795:18:127;;610:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;683:11;:1;:9;:11::i;569:227::-;725:60;734:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;725:60:116;755:1;-1:-1:-1;;;;;725:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;4396:293::-;4464:17;4460:21;;4456:227;;;4497:59;;-1:-1:-1;;;4497:59:116;;-1:-1:-1;;;4497:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;4497:15:116;;;5795:18:127;;4497:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4570:11;:1;:9;:11::i;4456:227::-;4612:60;4621:11;:1;:9;:11::i;:::-;4612:60;;4642:1;4612:60;;;;;;;;;;;;;;;;;;;:8;:60::i;7351:286::-;7418:16;7414:20;;7410:221;;;7450:58;;-1:-1:-1;;;7450:58:116;;-1:-1:-1;;;7450:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;7450:15:116;;;5795:18:127;;7450:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7522:10;:1;:8;:10::i;7410:221::-;7563:57;7572:10;:1;:8;:10::i;:::-;7563:57;;7591:1;7563:57;;;;;;;;;;;;;;;;;;;:8;:57::i;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;4097:293:116:-;4165:17;4161:21;;4157:227;;;4198:59;;-1:-1:-1;;;4198:59:116;;-1:-1:-1;;;4198:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;4198:15:116;;;5795:18:127;;4198:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4271:11;:1;:9;:11::i;4157:227::-;4313:60;4322:11;:1;:9;:11::i;:::-;4313:60;;4343:1;4313:60;;;;;;;;;;;;;;;;;;;:8;:60::i;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;210:293:116:-;-1:-1:-1;;;;;274:21:116;;270:227;;;311:59;;-1:-1:-1;;;311:59:116;;-1:-1:-1;;;311:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;311:15:116;;;5795:18:127;;311:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;384:11;:1;:9;:11::i;270:227::-;426:60;435:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;426:60:116;456:1;-1:-1:-1;;;;;426:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;5293:293::-;5361:17;5357:21;;5353:227;;;5394:59;;-1:-1:-1;;;5394:59:116;;-1:-1:-1;;;5394:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;5394:15:116;;;5795:18:127;;5394:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5467:11;:1;:9;:11::i;5353:227::-;5509:60;5518:11;:1;:9;:11::i;:::-;5509:60;;5539:1;5509:60;;;;;;;;;;;;;;;;;;;:8;:60::i;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;3798:293:116:-;3866:17;3862:21;;3858:227;;;3899:59;;-1:-1:-1;;;3899:59:116;;-1:-1:-1;;;3899:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;3899:15:116;;;5795:18:127;;3899:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3972:11;:1;:9;:11::i;3858:227::-;4014:60;4023:11;:1;:9;:11::i;:::-;4014:60;;4044:1;4014:60;;;;;;;;;;;;;;;;;;;:8;:60::i;808:293::-;-1:-1:-1;;;;;872:21:116;;868:227;;;909:59;;-1:-1:-1;;;909:59:116;;-1:-1:-1;;;909:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;909:15:116;;;5795:18:127;;909:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:11;:1;:9;:11::i;868:227::-;1024:60;1033:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;1024:60:116;1054:1;-1:-1:-1;;;;;1024:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;7935:286::-;8002:16;7998:20;;7994:221;;;8034:58;;-1:-1:-1;;;8034:58:116;;-1:-1:-1;;;8034:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;8034:15:116;;;5795:18:127;;8034:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8106:10;:1;:8;:10::i;7994:221::-;8147:57;8156:10;:1;:8;:10::i;:::-;8147:57;;8175:1;8147:57;;;;;;;;;;;;;;;;;;;:8;:57::i;2602:293::-;-1:-1:-1;;;;;2666:21:116;;2662:227;;;2703:59;;-1:-1:-1;;;2703:59:116;;-1:-1:-1;;;2703:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;2703:15:116;;;5795:18:127;;2703:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:11;:1;:9;:11::i;2662:227::-;2818:60;2827:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;2818:60:116;2848:1;-1:-1:-1;;;;;2818:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;7643:286::-;7710:16;7706:20;;7702:221;;;7742:58;;-1:-1:-1;;;7742:58:116;;-1:-1:-1;;;7742:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;7742:15:116;;;5795:18:127;;7742:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7814:10;:1;:8;:10::i;7702:221::-;7855:57;7864:10;:1;:8;:10::i;:::-;7855:57;;7883:1;7855:57;;;;;;;;;;;;;;;;;;;:8;:57::i;3200:293::-;-1:-1:-1;;;;;3264:21:116;;3260:227;;;3301:59;;-1:-1:-1;;;3301:59:116;;-1:-1:-1;;;3301:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;3301:15:116;;;5795:18:127;;3301:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3374:11;:1;:9;:11::i;3260:227::-;3416:60;3425:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;3416:60:116;3446:1;-1:-1:-1;;;;;3416:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;4994:293::-;5062:17;5058:21;;5054:227;;;5095:59;;-1:-1:-1;;;5095:59:116;;-1:-1:-1;;;5095:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;5095:15:116;;;5795:18:127;;5095:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:11;:1;:9;:11::i;5054:227::-;5210:60;5219:11;:1;:9;:11::i;:::-;5210:60;;5240:1;5210:60;;;;;;;;;;;;;;;;;;;:8;:60::i;3499:293::-;-1:-1:-1;;;;;3563:21:116;;3559:227;;;3600:59;;-1:-1:-1;;;3600:59:116;;-1:-1:-1;;;3600:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;3600:15:116;;;5795:18:127;;3600:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3673:11;:1;:9;:11::i;3559:227::-;3715:60;3724:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;3715:60:116;3745:1;-1:-1:-1;;;;;3715:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5891:286:116;5958:16;5954:20;;5950:221;;;5990:58;;-1:-1:-1;;;5990:58:116;;-1:-1:-1;;;5990:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;5990:15:116;;;5795:18:127;;5990:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6062:10;:1;:8;:10::i;5950:221::-;6103:57;6112:10;:1;:8;:10::i;:::-;6103:57;;6131:1;6103:57;;;;;;;;;;;;;;;;;;;:8;:57::i;6183:286::-;6250:16;6246:20;;6242:221;;;6282:58;;-1:-1:-1;;;6282:58:116;;-1:-1:-1;;;6282:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;6282:15:116;;;5795:18:127;;6282:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6354:10;:1;:8;:10::i;6242:221::-;6395:57;6404:10;:1;:8;:10::i;:::-;6395:57;;6423:1;6395:57;;;;;;;;;;;;;;;;;;;:8;:57::i;2303:293::-;-1:-1:-1;;;;;2367:21:116;;2363:227;;;2404:59;;-1:-1:-1;;;2404:59:116;;-1:-1:-1;;;2404:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;2404:15:116;;;5795:18:127;;2404:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2477:11;:1;:9;:11::i;2363:227::-;2519:60;2528:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;2519:60:116;2549:1;-1:-1:-1;;;;;2519:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;8811:286::-;8878:16;8874:20;;8870:221;;;8910:58;;-1:-1:-1;;;8910:58:116;;-1:-1:-1;;;8910:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;8910:15:116;;;5795:18:127;;8910:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8982:10;:1;:8;:10::i;8870:221::-;9023:57;9032:10;:1;:8;:10::i;:::-;9023:57;;9051:1;9023:57;;;;;;;;;;;;;;;;;;;:8;:57::i;2004:293::-;-1:-1:-1;;;;;2068:21:116;;2064:227;;;2105:59;;-1:-1:-1;;;2105:59:116;;-1:-1:-1;;;2105:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;2105:15:116;;;5795:18:127;;2105:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2178:11;:1;:9;:11::i;2064:227::-;2220:60;2229:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;2220:60:116;2250:1;-1:-1:-1;;;;;2220:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6475:286:116;6542:16;6538:20;;6534:221;;;6574:58;;-1:-1:-1;;;6574:58:116;;-1:-1:-1;;;6574:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;6574:15:116;;;5795:18:127;;6574:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6646:10;:1;:8;:10::i;6534:221::-;6687:57;6696:10;:1;:8;:10::i;:::-;6687:57;;6715:1;6687:57;;;;;;;;;;;;;;;;;;;:8;:57::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;-1:-1:-1;;;;;;;;;;;1377:39:1;;;6444:74:127;;;1398:17:1;6534:18:127;;;6527:34;1428:1:1;;1377:7;;6417:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;9103:279:116:-;9169:15;9165:19;;9161:215;;;9200:57;;-1:-1:-1;;;9200:57:116;;-1:-1:-1;;;9200:57:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;9200:15:116;;;5795:18:127;;9200:57:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9271:9;:1;:7;:9::i;9161:215::-;9311:54;9320:9;:1;:7;:9::i;:::-;9311:54;;9337:1;9311:54;;;;;;;;;;;;;;;;;;;:8;:54::i;1705:293::-;-1:-1:-1;;;;;1769:21:116;;1765:227;;;1806:59;;-1:-1:-1;;;1806:59:116;;-1:-1:-1;;;1806:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;1806:15:116;;;5795:18:127;;1806:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1879:11;:1;:9;:11::i;1765:227::-;1921:60;1930:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;1921:60:116;1951:1;-1:-1:-1;;;;;1921:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;8227:286::-;8294:16;8290:20;;8286:221;;;8326:58;;-1:-1:-1;;;8326:58:116;;-1:-1:-1;;;8326:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;8326:15:116;;;5795:18:127;;8326:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8398:10;:1;:8;:10::i;8286:221::-;8439:57;8448:10;:1;:8;:10::i;:::-;8439:57;;8467:1;8439:57;;;;;;;;;;;;;;;;;;;:8;:57::i;2901:293::-;-1:-1:-1;;;;;2965:21:116;;2961:227;;;3002:59;;-1:-1:-1;;;3002:59:116;;-1:-1:-1;;;3002:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;3002:15:116;;;5795:18:127;;3002:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3075:11;:1;:9;:11::i;2961:227::-;3117:60;3126:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;3117:60:116;3147:1;-1:-1:-1;;;;;3117:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;8519:286::-;8586:16;8582:20;;8578:221;;;8618:58;;-1:-1:-1;;;8618:58:116;;-1:-1:-1;;;8618:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;8618:15:116;;;5795:18:127;;8618:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8690:10;:1;:8;:10::i;8578:221::-;8731:57;8740:10;:1;:8;:10::i;:::-;8731:57;;8759:1;8731:57;;;;;;;;;;;;;;;;;;;:8;:57::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1107:293:116:-;-1:-1:-1;;;;;1171:21:116;;1167:227;;;1208:59;;-1:-1:-1;;;1208:59:116;;-1:-1:-1;;;1208:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;1208:15:116;;;5795:18:127;;1208:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1281:11;:1;:9;:11::i;1167:227::-;1323:60;1332:11;:1;:9;:11::i;:::-;-1:-1:-1;;;;;1323:60:116;1353:1;-1:-1:-1;;;;;1323:60:116;;;;;;;;;;;;;;;;;;:8;:60::i;4695:293::-;4763:17;4759:21;;4755:227;;;4796:59;;-1:-1:-1;;;4796:59:116;;-1:-1:-1;;;4796:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;4796:15:116;;;5795:18:127;;4796:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4869:11;:1;:9;:11::i;4755:227::-;4911:60;4920:11;:1;:9;:11::i;:::-;4911:60;;4941:1;4911:60;;;;;;;;;;;;;;;;;;;:8;:60::i;5592:293::-;5660:17;5656:21;;5652:227;;;5693:59;;-1:-1:-1;;;5693:59:116;;-1:-1:-1;;;5693:59:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;5693:15:116;;;5795:18:127;;5693:59:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5766:11;:1;:9;:11::i;5652:227::-;5808:60;5817:11;:1;:9;:11::i;:::-;5808:60;;5838:1;5808:60;;;;;;;;;;;;;;;;;;;:8;:60::i;7059:286::-;7126:16;7122:20;;7118:221;;;7158:58;;-1:-1:-1;;;7158:58:116;;-1:-1:-1;;;7158:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;7158:15:116;;;5795:18:127;;7158:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7230:10;:1;:8;:10::i;7118:221::-;7271:57;7280:10;:1;:8;:10::i;:::-;7271:57;;7299:1;7271:57;;;;;;;;;;;;;;;;;;;:8;:57::i;6767:286::-;6834:16;6830:20;;6826:221;;;6866:58;;-1:-1:-1;;;6866:58:116;;-1:-1:-1;;;6866:58:116;;;5822:52:127;-1:-1:-1;;;;;;;;;;;6866:15:116;;;5795:18:127;;6866:58:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6938:10;:1;:8;:10::i;6826:221::-;6979:57;6988:10;:1;:8;:10::i;:::-;6979:57;;7007:1;6979:57;;;;;;;;;;;;;;;;;;;:8;:57::i;2828:139:79:-;2924:1;-1:-1:-1;;;;;2904:21:79;;;;2900:60;;2934:26;;-1:-1:-1;;;2934:26:79;;;;;;;;;;;2900:60;2828:139;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;-1:-1:-1;;;;;;;;;;;2484:11:1;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;1895:139:79:-;1991:1;-1:-1:-1;;;;;1971:21:79;;;;1967:60;;2001:26;;-1:-1:-1;;;2001:26:79;;;;;;;;;;;5938:139;6034:1;6014:21;;;;;6010:60;;6044:26;;-1:-1:-1;;;6044:26:79;;;;;;;;;;;9016:135;9109:1;9090:20;;;;;9086:58;;9119:25;;-1:-1:-1;;;9119:25:79;;;;;;;;;;;5627:139;5723:1;5703:21;;;;;5699:60;;5733:26;;-1:-1:-1;;;5733:26:79;;;;;;;;;;;1584:139;1680:1;-1:-1:-1;;;;;1660:21:79;;;;1656:60;;1690:26;;-1:-1:-1;;;1690:26:79;;;;;;;;;;;6871:139;6967:1;6947:21;;;;;6943:60;;6977:26;;-1:-1:-1;;;6977:26:79;;;;;;;;;;;5316:139;5412:1;5392:21;;;;;5388:60;;5422:26;;-1:-1:-1;;;5422:26:79;;;;;;;;;;;2206:139;2302:1;-1:-1:-1;;;;;2282:21:79;;;;2278:60;;2312:26;;-1:-1:-1;;;2312:26:79;;;;;;;;;;;9626:135;9719:1;9700:20;;;;;9696:58;;9729:25;;-1:-1:-1;;;9729:25:79;;;;;;;;;;;4072:139;4168:1;-1:-1:-1;;;;;4148:21:79;;;;4144:60;;4178:26;;-1:-1:-1;;;4178:26:79;;;;;;;;;;;9321:135;9414:1;9395:20;;;;;9391:58;;9424:25;;-1:-1:-1;;;9424:25:79;;;;;;;;;;;4694:139;4790:1;-1:-1:-1;;;;;4770:21:79;;;;4766:60;;4800:26;;-1:-1:-1;;;4800:26:79;;;;;;;;;;;6560:139;6656:1;6636:21;;;;;6632:60;;6666:26;;-1:-1:-1;;;6666:26:79;;;;;;;;;;;5005:139;5101:1;-1:-1:-1;;;;;5081:21:79;;;;5077:60;;5111:26;;-1:-1:-1;;;5111:26:79;;;;;;;;;;;7491:135;7584:1;7565:20;;;;;7561:58;;7594:25;;-1:-1:-1;;;7594:25:79;;;;;;;;;;;7796:135;7889:1;7870:20;;;;;7866:58;;7899:25;;-1:-1:-1;;;7899:25:79;;;;;;;;;;;3761:139;3857:1;-1:-1:-1;;;;;3837:21:79;;;;3833:60;;3867:26;;-1:-1:-1;;;3867:26:79;;;;;;;;;;;10541:135;10634:1;10615:20;;;;;10611:58;;10644:25;;-1:-1:-1;;;10644:25:79;;;;;;;;;;;3450:139;3546:1;-1:-1:-1;;;;;3526:21:79;;;;3522:60;;3556:26;;-1:-1:-1;;;3556:26:79;;;;;;;;;;;8101:135;8194:1;8175:20;;;;;8171:58;;8204:25;;-1:-1:-1;;;8204:25:79;;;;;;;;;;;10844:131;10934:1;10916:19;;;;;10912:56;;10944:24;;-1:-1:-1;;;10944:24:79;;;;;;;;;;;3139:139;3235:1;-1:-1:-1;;;;;3215:21:79;;;;3211:60;;3245:26;;-1:-1:-1;;;3245:26:79;;;;;;;;;;;9931:135;10024:1;10005:20;;;;;10001:58;;10034:25;;-1:-1:-1;;;10034:25:79;;;;;;;;;;;4383:139;4479:1;-1:-1:-1;;;;;4459:21:79;;;;4455:60;;4489:26;;-1:-1:-1;;;4489:26:79;;;;;;;;;;;10236:135;10329:1;10310:20;;;;;10306:58;;10339:25;;-1:-1:-1;;;10339:25:79;;;;;;;;;;;2517:139;2613:1;-1:-1:-1;;;;;2593:21:79;;;;2589:60;;2623:26;;-1:-1:-1;;;2623:26:79;;;;;;;;;;;6249:139;6345:1;6325:21;;;;;6321:60;;6355:26;;-1:-1:-1;;;6355:26:79;;;;;;;;;;;7182:139;7278:1;7258:21;;;;;7254:60;;7288:26;;-1:-1:-1;;;7288:26:79;;;;;;;;;;;8711:135;8804:1;8785:20;;;;;8781:58;;8814:25;;-1:-1:-1;;;8814:25:79;;;;;;;;;;;8406:135;8499:1;8480:20;;;;;8476:58;;8509:25;;-1:-1:-1;;;8509:25:79;;;;;;;;;;;14:180:127;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:127;;14:180;-1:-1:-1;14:180:127:o;199:681::-;370:2;422:21;;;492:13;;395:18;;;514:22;;;341:4;;370:2;593:15;;;;567:2;552:18;;;341:4;636:218;650:6;647:1;644:13;636:218;;;715:13;;-1:-1:-1;;;;;711:62:127;699:75;;829:15;;;;794:12;;;;672:1;665:9;636:218;;;-1:-1:-1;871:3:127;;199:681;-1:-1:-1;;;;;;199:681:127:o;885:423::-;927:3;965:5;959:12;992:6;987:3;980:19;1017:1;1027:162;1041:6;1038:1;1035:13;1027:162;;;1103:4;1159:13;;;1155:22;;1149:29;1131:11;;;1127:20;;1120:59;1056:12;1027:162;;;1031:3;1234:1;1227:4;1218:6;1213:3;1209:16;1205:27;1198:38;1297:4;1290:2;1286:7;1281:2;1273:6;1269:15;1265:29;1260:3;1256:39;1252:50;1245:57;;;885:423;;;;:::o;1313:1765::-;1546:2;1598:21;;;1668:13;;1571:18;;;1690:22;;;1517:4;;1546:2;1731;;1749:18;;;;1786:1;1829:15;;;1814:31;;1810:40;;1873:15;;;1517:4;;1937:1112;1953:6;1948:3;1945:15;1937:1112;;;-1:-1:-1;;2022:22:127;;;2018:36;2006:49;;2078:13;;2165:9;;-1:-1:-1;;;;;2161:58:127;2146:74;;2259:11;;2253:18;2291:15;;;2284:27;;;2372:19;;2118:15;;;2404:24;;;2585:21;;;;2451:2;2533:17;;;2521:30;;2517:39;;;2475:15;;;;2630:1;2644:296;2660:8;2655:3;2652:17;2644:296;;;2766:2;2762:7;2753:6;2745;2741:19;2737:33;2730:5;2723:48;2798:42;2833:6;2822:8;2816:15;2798:42;:::i;:::-;2869:17;;;;2788:52;-1:-1:-1;2912:14:127;;;;2688:1;2679:11;2644:296;;;-1:-1:-1;;;3027:12:127;;;;2963:6;-1:-1:-1;;2992:15:127;;;;1979:1;1970:11;1937:1112;;;-1:-1:-1;3066:6:127;;1313:1765;-1:-1:-1;;;;;;;;;;1313:1765:127:o;3083:1590::-;3285:4;3314:2;3354;3343:9;3339:18;3384:2;3373:9;3366:21;3407:6;3442;3436:13;3473:6;3465;3458:22;3499:2;3489:12;;3532:2;3521:9;3517:18;3510:25;;3594:2;3584:6;3581:1;3577:14;3566:9;3562:30;3558:39;3632:2;3624:6;3620:15;3653:1;3674;3684:960;3700:6;3695:3;3692:15;3684:960;;;3769:22;;;-1:-1:-1;;3765:36:127;3753:49;;3825:13;;3912:9;;-1:-1:-1;;;;;3908:58:127;3893:74;;4006:11;;4000:18;4038:15;;;4031:27;;;4119:19;;3865:15;;;4151:24;;;4241:21;;;;4286:1;;4209:2;4197:15;;;4300:236;4316:8;4311:3;4308:17;4300:236;;;4397:15;;4414:20;4393:42;4379:57;;4505:17;;;;4344:1;4335:11;;;;;4462:14;;;;4300:236;;;-1:-1:-1;4622:12:127;;;;4559:5;-1:-1:-1;;;4587:15:127;;;;3726:1;3717:11;3684:960;;;-1:-1:-1;4661:6:127;;3083:1590;-1:-1:-1;;;;;;;;;3083:1590:127:o;4678:803::-;4840:4;4869:2;4909;4898:9;4894:18;4939:2;4928:9;4921:21;4962:6;4997;4991:13;5028:6;5020;5013:22;5066:2;5055:9;5051:18;5044:25;;5128:2;5118:6;5115:1;5111:14;5100:9;5096:30;5092:39;5078:53;;5166:2;5158:6;5154:15;5187:1;5197:255;5211:6;5208:1;5205:13;5197:255;;;5304:2;5300:7;5288:9;5280:6;5276:22;5272:36;5267:3;5260:49;5332:40;5365:6;5356;5350:13;5332:40;:::i;:::-;5322:50;-1:-1:-1;5430:12:127;;;;5395:15;;;;5233:1;5226:9;5197:255;;;-1:-1:-1;5469:6:127;;4678:803;-1:-1:-1;;;;;;;4678:803:127:o;5885:380::-;5964:1;5960:12;;;;6007;;;6028:61;;6082:4;6074:6;6070:17;6060:27;;6028:61;6135:2;6127:6;6124:14;6104:18;6101:38;6098:161;;6181:10;6176:3;6172:20;6169:1;6162:31;6216:4;6213:1;6206:15;6244:4;6241:1;6234:15;6098:161;;5885:380;;;:::o;6572:184::-;6642:6;6695:2;6683:9;6674:7;6670:23;6666:32;6663:52;;;6711:1;6708;6701:12;6663:52;-1:-1:-1;6734:16:127;;6572:184;-1:-1:-1;6572:184:127:o;6761:362::-;6966:6;6955:9;6948:25;7009:6;7004:2;6993:9;6989:18;6982:34;7052:2;7047;7036:9;7032:18;7025:30;6929:4;7072:45;7113:2;7102:9;7098:18;7090:6;7072:45;:::i;:::-;7064:53;6761:362;-1:-1:-1;;;;;6761:362:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_SafeCast104(uint256)":"ef32ecd9","testFuzz_SafeCast112(uint256)":"3a557741","testFuzz_SafeCast120(uint256)":"562fb6e9","testFuzz_SafeCast128(uint256)":"e5772a25","testFuzz_SafeCast136(uint256)":"1288c0e8","testFuzz_SafeCast144(uint256)":"22e84d8e","testFuzz_SafeCast152(uint256)":"4bfe8717","testFuzz_SafeCast16(uint256)":"80afec19","testFuzz_SafeCast160(uint256)":"5e0011ea","testFuzz_SafeCast168(uint256)":"55140fa4","testFuzz_SafeCast176(uint256)":"d38cc938","testFuzz_SafeCast184(uint256)":"521166a5","testFuzz_SafeCast192(uint256)":"7855d712","testFuzz_SafeCast200(uint256)":"84b9fa75","testFuzz_SafeCast208(uint256)":"c80b189b","testFuzz_SafeCast216(uint256)":"0bf1b0a5","testFuzz_SafeCast224(uint256)":"e3a62e52","testFuzz_SafeCast232(uint256)":"4d330754","testFuzz_SafeCast24(uint256)":"e067bfb4","testFuzz_SafeCast240(uint256)":"109bc005","testFuzz_SafeCast248(uint256)":"2d294d21","testFuzz_SafeCast32(uint256)":"d15db81d","testFuzz_SafeCast40(uint256)":"5069a454","testFuzz_SafeCast48(uint256)":"5408d0d7","testFuzz_SafeCast56(uint256)":"128ea09c","testFuzz_SafeCast64(uint256)":"f409d884","testFuzz_SafeCast72(uint256)":"fa295576","testFuzz_SafeCast8(uint256)":"c1c55029","testFuzz_SafeCast80(uint256)":"89a1be22","testFuzz_SafeCast88(uint256)":"6fb9f1c9","testFuzz_SafeCast96(uint256)":"6dbe8988"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds104Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds112Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds120Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds136Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds144Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds152Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds160Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds168Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds16Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds176Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds184Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds192Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds200Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds208Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds216Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds224Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds232Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds240Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds248Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds32Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds40Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds48Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds56Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds72Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds80Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds88Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds8Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds96Bits\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast104\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast112\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast120\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast128\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast136\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast144\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast152\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast16\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast160\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast168\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast176\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast184\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast192\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast200\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast208\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast216\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast224\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast232\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast24\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast240\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast248\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast32\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast40\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast48\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast56\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast64\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast72\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast8\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast80\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast88\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_SafeCast96\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/SafeCast.t.sol\":\"SafeCastTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"test/libraries/math/SafeCast.t.sol\":{\"keccak256\":\"0x8c4259e52c75f9c2762ba3433b1519d45dcb342cbbbeefc2e7ccc57df98ed2a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5a03a5f790182755749762314d682c2c8ffd4805a8d3f034771fbeab990d0ae\",\"dweb:/ipfs/QmRERCoaTLhsUTmvrthSrNPQXG4NMYkXqnrz9dhg9F5kux\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds104Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds112Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds120Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds128Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds136Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds144Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds152Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds160Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds168Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds16Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds176Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds184Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds192Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds200Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds208Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds216Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds224Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds232Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds240Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds248Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds32Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds40Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds48Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds56Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds72Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds80Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds88Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds8Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds96Bits"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast104"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast112"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast120"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast128"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast136"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast144"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast152"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast16"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast160"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast168"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast176"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast184"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast192"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast200"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast208"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast216"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast224"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast232"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast24"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast240"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast248"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast32"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast40"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast48"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast56"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast64"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast72"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast8"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast80"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast88"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SafeCast96"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/SafeCast.t.sol":"SafeCastTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"test/libraries/math/SafeCast.t.sol":{"keccak256":"0x8c4259e52c75f9c2762ba3433b1519d45dcb342cbbbeefc2e7ccc57df98ed2a3","urls":["bzz-raw://b5a03a5f790182755749762314d682c2c8ffd4805a8d3f034771fbeab990d0ae","dweb:/ipfs/QmRERCoaTLhsUTmvrthSrNPQXG4NMYkXqnrz9dhg9F5kux"],"license":"MIT"}},"version":1},"id":116} \ No newline at end of file diff --git a/abi/SafeERC20.sol/SafeERC20.json b/abi/SafeERC20.sol/SafeERC20.json deleted file mode 100644 index 565e8a9b..00000000 --- a/abi/SafeERC20.sol/SafeERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"SafeERC20FailedDecreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"currentAllowance","type":"uint256","internalType":"uint256"},{"name":"requestedDecrease","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ba0ab8697784727e9e8f675ffd7c94ee358bdf828d0561e1032ab1a534fa75964736f6c63430008140033","sourceMap":"750:7428:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;750:7428:35;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ba0ab8697784727e9e8f675ffd7c94ee358bdf828d0561e1032ab1a534fa75964736f6c63430008140033","sourceMap":"750:7428:35:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"type":"error","name":"SafeERC20FailedDecreaseAllowance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":"SafeERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file diff --git a/abi/SampleMath.sol/SampleMath.json b/abi/SampleMath.sol/SampleMath.json deleted file mode 100644 index cbe0ab8c..00000000 --- a/abi/SampleMath.sol/SampleMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a315909124ca7af239ed549a1f4c963cbec028eb33ec5205ad22e6e41d3d9fe64736f6c63430008140033","sourceMap":"617:7620:80:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;617:7620:80;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a315909124ca7af239ed549a1f4c963cbec028eb33ec5205ad22e6e41d3d9fe64736f6c63430008140033","sourceMap":"617:7620:80:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Sample Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to encode and decode a sample into a single bytes32 and interact with the encoded bytes32 The sample is encoded as follows: 0 - 16: oracle length (16 bits) 16 - 80: cumulative id (64 bits) 80 - 144: cumulative volatility accumulator (64 bits) 144 - 208: cumulative bin crossed (64 bits) 208 - 216: sample lifetime (8 bits) 216 - 256: sample creation timestamp (40 bits)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/SampleMath.sol\":\"SampleMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/SampleMath.sol":"SampleMath"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"}},"version":1},"id":80} \ No newline at end of file diff --git a/abi/SampleMath.t.sol/SampleMathTest.json b/abi/SampleMath.t.sol/SampleMathTest.json deleted file mode 100644 index 70015ef6..00000000 --- a/abi/SampleMath.t.sol/SampleMathTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_GetCumulativeBinCrossed","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetCumulativeId","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetCumulativeVolatility","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetOracleLength","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetSampleCreation","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetSampleLastUpdate","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_GetSampleLifetime","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_GetWeightedAverage","inputs":[{"name":"sample1","type":"bytes32","internalType":"bytes32"},{"name":"sample2","type":"bytes32","internalType":"bytes32"},{"name":"weight1","type":"uint40","internalType":"uint40"},{"name":"weight2","type":"uint40","internalType":"uint40"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_encode","inputs":[{"name":"oracleLength","type":"uint16","internalType":"uint16"},{"name":"cumulativeId","type":"uint64","internalType":"uint64"},{"name":"cumulativeVolatility","type":"uint64","internalType":"uint64"},{"name":"cumulativeBinCrossed","type":"uint64","internalType":"uint64"},{"name":"sampleLifetime","type":"uint8","internalType":"uint8"},{"name":"createdAt","type":"uint40","internalType":"uint40"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_update","inputs":[{"name":"deltaTime","type":"uint40","internalType":"uint40"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"binCrossed","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_updateWithSample","inputs":[{"name":"sample","type":"bytes32","internalType":"bytes32"},{"name":"deltaTime","type":"uint40","internalType":"uint40"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"volatilityAccumulator","type":"uint24","internalType":"uint24"},{"name":"binCrossed","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506122fc8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806366d9a9a0116100d85780639e99a6091161008c578063ba414fa611610066578063ba414fa6146102b9578063c75bf51f146102d1578063e20c9f71146102e457600080fd5b80639e99a6091461028b578063a74e4c451461029e578063b5508aa9146102b157600080fd5b806385226c81116100bd57806385226c811461025b578063916a17c614610270578063944428b31461027857600080fd5b806366d9a9a014610233578063793c62681461024857600080fd5b80633da9eb1c1161012f5780633f7286f4116101145780633f7286f41461020557806348df3bb11461020d5780635f5ed4e51461022057600080fd5b80633da9eb1c146101ea5780633e5e3c23146101fd57600080fd5b80632ade3880116101605780632ade3880146101af5780633318885b146101c4578063335d6051146101d757600080fd5b80631ed7831c1461017c578063244bd8f21461019a575b600080fd5b6101846102ec565b6040516101919190611c4a565b60405180910390f35b6101ad6101a8366004611cc4565b61034e565b005b6101b7610682565b6040516101919190611d68565b6101ad6101d2366004611e28565b6107c4565b6101ad6101e5366004611e28565b610868565b6101ad6101f8366004611e41565b610904565b610184610a5a565b610184610aba565b6101ad61021b366004611e95565b610b1a565b6101ad61022e366004611e28565b610ea4565b61023b610f53565b6040516101919190611ed0565b6101ad610256366004611e28565b61104e565b61026361117b565b6040516101919190611f9b565b61023b61124b565b6101ad610286366004612014565b611346565b6101ad610299366004611e28565b6115e6565b6101ad6102ac366004611e28565b61165b565b6102636116d0565b6102c16117a0565b6040519015158152602001610191565b6101ad6102df366004611e28565b61185b565b6101846118f8565b6060601480548060200260200160405190810160405280929190818152602001828054801561034457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610326575b5050505050905090565b600061035986611958565b9050600061036687611973565b9050600061037388611988565b905061038b62ffffff871664ffffffffff89166120af565b506103a262ffffff861664ffffffffff89166120af565b506103b962ffffff851664ffffffffff89166120af565b506103cb836001600160401b036120da565b6001600160401b03166103ea62ffffff881664ffffffffff8a166120af565b6001600160401b03161180610435575061040b826001600160401b036120da565b6001600160401b031661042a62ffffff871664ffffffffff8a166120af565b6001600160401b0316115b80610476575061044c816001600160401b036120da565b6001600160401b031661046b62ffffff861664ffffffffff8a166120af565b6001600160401b0316115b15610509577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104d957600080fd5b505af11580156104ed573d6000803e3d6000fd5b5061050192508a915089905088888861199d565b505050610678565b6000808061051a8b8b8b8b8b61199d565b919450925090506105926001600160401b03841661054464ffffffffff8d1662ffffff8d166120af565b61054e9089612101565b6001600160401b03166040518060400160405280601c81526020017f7465737446757a7a5f7570646174655769746853616d706c653a3a3100000000815250611a02565b6106036001600160401b0383166105b564ffffffffff8d1662ffffff8c166120af565b6105bf9088612101565b6001600160401b03166040518060400160405280601c81526020017f7465737446757a7a5f7570646174655769746853616d706c653a3a3200000000815250611a02565b6106746001600160401b03821661062664ffffffffff8d1662ffffff8b166120af565b6106309087612101565b6001600160401b03166040518060400160405280601c81526020017f7465737446757a7a5f7570646174655769746853616d706c653a3a3300000000815250611a02565b5050505b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156107bb57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156107a457838290600052602060002001805461071790612121565b80601f016020809104026020016040519081016040528092919081815260200182805461074390612121565b80156107905780601f1061076557610100808354040283529160200191610790565b820191906000526020600020905b81548152906001019060200180831161077357829003601f168201915b5050505050815260200190600101906106f8565b5050505081525050815260200190600101906106a6565b50505050905090565b60006107cf82611a69565b64ffffffffff16905061081f8164ffffffffff80166040518060400160405280601d81526020017f7465737446757a7a5f47657453616d706c654372656174696f6e3a3a31000000815250611a75565b60408051808201909152601d81527f7465737446757a7a5f47657453616d706c654372656174696f6e3a3a3200000060208201526108649060d884901c908390611a02565b5050565b600061087382611ab0565b61ffff1690506108bd8161ffff80166040518060400160405280601b81526020017f7465737446757a7a5f4765744f7261636c654c656e6774683a3a310000000000815250611a75565b6108648260001c61ffff16826040518060400160405280601b81526020017f7465737446757a7a5f4765744f7261636c654c656e6774683a3a320000000000815250611a02565b60008080610915818888888861199d565b919450925090506109836001600160401b03841661093f64ffffffffff8a1662ffffff8a166120af565b6001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f7570646174653a3a310000000000000000000000000000815250611a02565b6109ea6001600160401b0383166109a664ffffffffff8a1662ffffff89166120af565b6001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f7570646174653a3a320000000000000000000000000000815250611a02565b610a516001600160401b038216610a0d64ffffffffff8a1662ffffff88166120af565b6001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f7570646174653a3a330000000000000000000000000000815250611a02565b50505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610344576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610326575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610344576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610326575050505050905090565b6000610b3064ffffffffff80841690851661215b565b905080600003610bc3577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b50610bbf92508791508690508585611abc565b5050505b6000808080610bd189611958565b6001600160401b031690506000610be78a611973565b6001600160401b031690506000610bfd8b611988565b6001600160401b031690506000610c138b611958565b6001600160401b031690506000610c298c611973565b6001600160401b031690506000610c3f8d611988565b6001600160401b0316905089610c5c64ffffffffff8d168561216e565b610c6d64ffffffffff8f168961216e565b610c77919061215b565b610c81919061219b565b985089610c9564ffffffffff8d168461216e565b610ca664ffffffffff8f168861216e565b610cb0919061215b565b610cba919061219b565b975089610cce64ffffffffff8d168361216e565b610cdf64ffffffffff8f168761216e565b610ce9919061215b565b610cf3919061219b565b96505050505050506001600160401b038016831180610d1857506001600160401b0382115b80610d2957506001600160401b0381115b15610db3577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b5061050192508a91508990508888611abc565b60008080610dc38b8b8b8b611abc565b925092509250610e12836001600160401b0316876040518060400160405280601e81526020017f7465737446757a7a5f4765745765696768746564417665726167653a3a310000815250611a02565b610e5b826001600160401b0316866040518060400160405280601e81526020017f7465737446757a7a5f4765745765696768746564417665726167653a3a320000815250611a02565b610674816001600160401b0316856040518060400160405280601e81526020017f7465737446757a7a5f4765745765696768746564417665726167653a3a330000815250611a02565b6000610eaf82611958565b6001600160401b03169050610f03816001600160401b0380166040518060400160405280601b81526020017f7465737446757a7a5f47657443756d756c617469766549643a3a310000000000815250611a75565b61086460108360001c901c6001600160401b0316826040518060400160405280601b81526020017f7465737446757a7a5f47657443756d756c617469766549643a3a320000000000815250611a02565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156107bb5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561103657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610fe35790505b50505050508152505081526020019060010190610f77565b600061105982611a69565b9050600061106683611c1a565b905061107a60ff821664ffffffffff6121bd565b64ffffffffff168264ffffffffff161115611114577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b5050505061110e83611c29565b50505050565b600061111f84611c29565b905061110e64ffffffffff821661113960ff8516866121db565b64ffffffffff166040518060400160405280601f81526020017f7465737446757a7a5f47657453616d706c654c6173745570646174653a3a3100815250611a02565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156107bb5783829060005260206000200180546111be90612121565b80601f01602080910402602001604051908101604052809291908181526020018280546111ea90612121565b80156112375780601f1061120c57610100808354040283529160200191611237565b820191906000526020600020905b81548152906001019060200180831161121a57829003601f168201915b50505050508152602001906001019061119f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156107bb5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561132e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116112db5790505b5050505050815250508152602001906001019061126f565b60d881901b7fffffffffff0000000000000000000000000000000000000000000000000000001660d083901b7aff000000000000000000000000000000000000000000000000000016609085901b79ffffffffffffffff00000000000000000000000000000000000016605087901b71ffffffffffffffff0000000000000000000016601089901b69ffffffffffffffff00001661ffff8b1617171717176114346113f082611ab0565b61ffff168861ffff166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a310000000000000000000000000000815250611a02565b61148e61144082611958565b6001600160401b0316876001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a320000000000000000000000000000815250611a02565b6114e861149a82611973565b6001600160401b0316866001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a330000000000000000000000000000815250611a02565b6115426114f482611988565b6001600160401b0316856001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a340000000000000000000000000000815250611a02565b61159061154e82611c1a565b60ff168460ff166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a350000000000000000000000000000815250611a02565b610a5161159c82611a69565b64ffffffffff168364ffffffffff166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a360000000000000000000000000000815250611a02565b60006115f182611973565b6001600160401b03169050611628816001600160401b0380166040518060600160405280602381526020016122a460239139611a75565b61086460508360001c901c6001600160401b03168260405180606001604052806023815260200161225e60239139611a02565b600061166682611988565b6001600160401b0316905061169d816001600160401b03801660405180606001604052806023815260200161223b60239139611a75565b61086460908360001c901c6001600160401b03168260405180606001604052806023815260200161228160239139611a02565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156107bb57838290600052602060002001805461171390612121565b80601f016020809104026020016040519081016040528092919081815260200182805461173f90612121565b801561178c5780601f106117615761010080835404028352916020019161178c565b820191906000526020600020905b81548152906001019060200180831161176f57829003601f168201915b5050505050815260200190600101906116f4565b60075460009060ff16156117b8575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906121f9565b1415905090565b600061186682611c1a565b60ff1690506118ae8160ff80166040518060400160405280601d81526020017f7465737446757a7a5f47657453616d706c654c69666574696d653a3a31000000815250611a75565b61086460d08360001c901c60ff16826040518060400160405280601d81526020017f7465737446757a7a5f47657453616d706c654c69666574696d653a3a32000000815250611a02565b60606013805480602002602001604051908101604052809291908181526020018280548015610344576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610326575050505050905090565b600061196d8260101c6001600160401b031690565b92915050565b600061196d8260501c6001600160401b031690565b600061196d8260901c6001600160401b031690565b64ffffffffff841662ffffff8481168202918482168102918416026119c188611958565b6119cb9084612101565b92506119d688611973565b6119e09083612101565b91506119eb88611988565b6119f59082612101565b9050955095509592505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590611a3d90869086908690600401612212565b60006040518083038186803b158015611a5557600080fd5b505afa158015610a51573d6000803e3d6000fd5b600060d882901c61196d565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d90611a3d90869086908690600401612212565b600061ffff821661196d565b600080600080611acb88611958565b6001600160401b031690506000611ae189611973565b6001600160401b031690506000611af78a611988565b6001600160401b031690508664ffffffffff16600003611b1d5791945092509050611c10565b6000611b288a611958565b6001600160401b031690506000611b3e8b611973565b6001600160401b031690506000611b548c611988565b6001600160401b031690508a64ffffffffff16600003611b7e5791975095509350611c1092505050565b6000611b9464ffffffffff808d16908e1661215b565b9050808b64ffffffffff1685028d64ffffffffff1689020181611bb957611bb9612185565b049950808b64ffffffffff1684028d64ffffffffff1688020181611bdf57611bdf612185565b049850808b64ffffffffff1683028d64ffffffffff1687020181611c0557611c05612185565b049750505050505050505b9450945094915050565b600061196d8260d01c60ff1690565b6000611c3482611c1a565b60ff16611c4083611a69565b61196d91906121db565b6020808252825182820181905260009190848201906040850190845b81811015611c8b5783516001600160a01b031683529284019291840191600101611c66565b50909695505050505050565b803564ffffffffff81168114611cac57600080fd5b919050565b803562ffffff81168114611cac57600080fd5b600080600080600060a08688031215611cdc57600080fd5b85359450611cec60208701611c97565b9350611cfa60408701611cb1565b9250611d0860608701611cb1565b9150611d1660808701611cb1565b90509295509295909350565b6000815180845260005b81811015611d4857602081850181015186830182015201611d2c565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611e1857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611e0257605f19898503018352611df0848651611d22565b948e01949350918d0191600101611dd4565b505050978a019794505091880191600101611d8f565b50919a9950505050505050505050565b600060208284031215611e3a57600080fd5b5035919050565b60008060008060808587031215611e5757600080fd5b611e6085611c97565b9350611e6e60208601611cb1565b9250611e7c60408601611cb1565b9150611e8a60608601611cb1565b905092959194509250565b60008060008060808587031215611eab57600080fd5b8435935060208501359250611ec260408601611c97565b9150611e8a60608601611c97565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611f8c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611f775783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611f35565b50978a01979550505091870191600101611ef8565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611ff057603f19888603018452611fde858351611d22565b94509285019290850190600101611fc2565b5092979650505050505050565b80356001600160401b0381168114611cac57600080fd5b60008060008060008060c0878903121561202d57600080fd5b863561ffff8116811461203f57600080fd5b955061204d60208801611ffd565b945061205b60408801611ffd565b935061206960608801611ffd565b9250608087013560ff8116811461207f57600080fd5b915061208d60a08801611c97565b90509295509295509295565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038181168382160280821691908281146120d2576120d2612099565b505092915050565b6001600160401b038281168282160390808211156120fa576120fa612099565b5092915050565b6001600160401b038181168382160190808211156120fa576120fa612099565b600181811c9082168061213557607f821691505b60208210810361215557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561196d5761196d612099565b808202811582820484141761196d5761196d612099565b634e487b7160e01b600052601260045260246000fd5b6000826121b857634e487b7160e01b600052601260045260246000fd5b500490565b64ffffffffff8281168282160390808211156120fa576120fa612099565b64ffffffffff8181168382160190808211156120fa576120fa612099565b60006020828403121561220b57600080fd5b5051919050565b8381528260208201526060604082015260006122316060830184611d22565b9594505050505056fe7465737446757a7a5f47657443756d756c617469766542696e43726f737365643a3a317465737446757a7a5f47657443756d756c6174697665566f6c6174696c6974793a3a327465737446757a7a5f47657443756d756c617469766542696e43726f737365643a3a327465737446757a7a5f47657443756d756c6174697665566f6c6174696c6974793a3a31a2646970667358221220ff33bad8be875761f317536967ad5358f274c7aeb91490d13512cfd8c633634a64736f6c63430008140033","sourceMap":"143:7732:117:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;143:7732:117;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101775760003560e01c806366d9a9a0116100d85780639e99a6091161008c578063ba414fa611610066578063ba414fa6146102b9578063c75bf51f146102d1578063e20c9f71146102e457600080fd5b80639e99a6091461028b578063a74e4c451461029e578063b5508aa9146102b157600080fd5b806385226c81116100bd57806385226c811461025b578063916a17c614610270578063944428b31461027857600080fd5b806366d9a9a014610233578063793c62681461024857600080fd5b80633da9eb1c1161012f5780633f7286f4116101145780633f7286f41461020557806348df3bb11461020d5780635f5ed4e51461022057600080fd5b80633da9eb1c146101ea5780633e5e3c23146101fd57600080fd5b80632ade3880116101605780632ade3880146101af5780633318885b146101c4578063335d6051146101d757600080fd5b80631ed7831c1461017c578063244bd8f21461019a575b600080fd5b6101846102ec565b6040516101919190611c4a565b60405180910390f35b6101ad6101a8366004611cc4565b61034e565b005b6101b7610682565b6040516101919190611d68565b6101ad6101d2366004611e28565b6107c4565b6101ad6101e5366004611e28565b610868565b6101ad6101f8366004611e41565b610904565b610184610a5a565b610184610aba565b6101ad61021b366004611e95565b610b1a565b6101ad61022e366004611e28565b610ea4565b61023b610f53565b6040516101919190611ed0565b6101ad610256366004611e28565b61104e565b61026361117b565b6040516101919190611f9b565b61023b61124b565b6101ad610286366004612014565b611346565b6101ad610299366004611e28565b6115e6565b6101ad6102ac366004611e28565b61165b565b6102636116d0565b6102c16117a0565b6040519015158152602001610191565b6101ad6102df366004611e28565b61185b565b6101846118f8565b6060601480548060200260200160405190810160405280929190818152602001828054801561034457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610326575b5050505050905090565b600061035986611958565b9050600061036687611973565b9050600061037388611988565b905061038b62ffffff871664ffffffffff89166120af565b506103a262ffffff861664ffffffffff89166120af565b506103b962ffffff851664ffffffffff89166120af565b506103cb836001600160401b036120da565b6001600160401b03166103ea62ffffff881664ffffffffff8a166120af565b6001600160401b03161180610435575061040b826001600160401b036120da565b6001600160401b031661042a62ffffff871664ffffffffff8a166120af565b6001600160401b0316115b80610476575061044c816001600160401b036120da565b6001600160401b031661046b62ffffff861664ffffffffff8a166120af565b6001600160401b0316115b15610509577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104d957600080fd5b505af11580156104ed573d6000803e3d6000fd5b5061050192508a915089905088888861199d565b505050610678565b6000808061051a8b8b8b8b8b61199d565b919450925090506105926001600160401b03841661054464ffffffffff8d1662ffffff8d166120af565b61054e9089612101565b6001600160401b03166040518060400160405280601c81526020017f7465737446757a7a5f7570646174655769746853616d706c653a3a3100000000815250611a02565b6106036001600160401b0383166105b564ffffffffff8d1662ffffff8c166120af565b6105bf9088612101565b6001600160401b03166040518060400160405280601c81526020017f7465737446757a7a5f7570646174655769746853616d706c653a3a3200000000815250611a02565b6106746001600160401b03821661062664ffffffffff8d1662ffffff8b166120af565b6106309087612101565b6001600160401b03166040518060400160405280601c81526020017f7465737446757a7a5f7570646174655769746853616d706c653a3a3300000000815250611a02565b5050505b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156107bb57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156107a457838290600052602060002001805461071790612121565b80601f016020809104026020016040519081016040528092919081815260200182805461074390612121565b80156107905780601f1061076557610100808354040283529160200191610790565b820191906000526020600020905b81548152906001019060200180831161077357829003601f168201915b5050505050815260200190600101906106f8565b5050505081525050815260200190600101906106a6565b50505050905090565b60006107cf82611a69565b64ffffffffff16905061081f8164ffffffffff80166040518060400160405280601d81526020017f7465737446757a7a5f47657453616d706c654372656174696f6e3a3a31000000815250611a75565b60408051808201909152601d81527f7465737446757a7a5f47657453616d706c654372656174696f6e3a3a3200000060208201526108649060d884901c908390611a02565b5050565b600061087382611ab0565b61ffff1690506108bd8161ffff80166040518060400160405280601b81526020017f7465737446757a7a5f4765744f7261636c654c656e6774683a3a310000000000815250611a75565b6108648260001c61ffff16826040518060400160405280601b81526020017f7465737446757a7a5f4765744f7261636c654c656e6774683a3a320000000000815250611a02565b60008080610915818888888861199d565b919450925090506109836001600160401b03841661093f64ffffffffff8a1662ffffff8a166120af565b6001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f7570646174653a3a310000000000000000000000000000815250611a02565b6109ea6001600160401b0383166109a664ffffffffff8a1662ffffff89166120af565b6001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f7570646174653a3a320000000000000000000000000000815250611a02565b610a516001600160401b038216610a0d64ffffffffff8a1662ffffff88166120af565b6001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f7570646174653a3a330000000000000000000000000000815250611a02565b50505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610344576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610326575050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610344576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610326575050505050905090565b6000610b3064ffffffffff80841690851661215b565b905080600003610bc3577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b50610bbf92508791508690508585611abc565b5050505b6000808080610bd189611958565b6001600160401b031690506000610be78a611973565b6001600160401b031690506000610bfd8b611988565b6001600160401b031690506000610c138b611958565b6001600160401b031690506000610c298c611973565b6001600160401b031690506000610c3f8d611988565b6001600160401b0316905089610c5c64ffffffffff8d168561216e565b610c6d64ffffffffff8f168961216e565b610c77919061215b565b610c81919061219b565b985089610c9564ffffffffff8d168461216e565b610ca664ffffffffff8f168861216e565b610cb0919061215b565b610cba919061219b565b975089610cce64ffffffffff8d168361216e565b610cdf64ffffffffff8f168761216e565b610ce9919061215b565b610cf3919061219b565b96505050505050506001600160401b038016831180610d1857506001600160401b0382115b80610d2957506001600160401b0381115b15610db3577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b5061050192508a91508990508888611abc565b60008080610dc38b8b8b8b611abc565b925092509250610e12836001600160401b0316876040518060400160405280601e81526020017f7465737446757a7a5f4765745765696768746564417665726167653a3a310000815250611a02565b610e5b826001600160401b0316866040518060400160405280601e81526020017f7465737446757a7a5f4765745765696768746564417665726167653a3a320000815250611a02565b610674816001600160401b0316856040518060400160405280601e81526020017f7465737446757a7a5f4765745765696768746564417665726167653a3a330000815250611a02565b6000610eaf82611958565b6001600160401b03169050610f03816001600160401b0380166040518060400160405280601b81526020017f7465737446757a7a5f47657443756d756c617469766549643a3a310000000000815250611a75565b61086460108360001c901c6001600160401b0316826040518060400160405280601b81526020017f7465737446757a7a5f47657443756d756c617469766549643a3a320000000000815250611a02565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156107bb5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561103657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610fe35790505b50505050508152505081526020019060010190610f77565b600061105982611a69565b9050600061106683611c1a565b905061107a60ff821664ffffffffff6121bd565b64ffffffffff168264ffffffffff161115611114577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b5050505061110e83611c29565b50505050565b600061111f84611c29565b905061110e64ffffffffff821661113960ff8516866121db565b64ffffffffff166040518060400160405280601f81526020017f7465737446757a7a5f47657453616d706c654c6173745570646174653a3a3100815250611a02565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156107bb5783829060005260206000200180546111be90612121565b80601f01602080910402602001604051908101604052809291908181526020018280546111ea90612121565b80156112375780601f1061120c57610100808354040283529160200191611237565b820191906000526020600020905b81548152906001019060200180831161121a57829003601f168201915b50505050508152602001906001019061119f565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156107bb5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561132e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116112db5790505b5050505050815250508152602001906001019061126f565b60d881901b7fffffffffff0000000000000000000000000000000000000000000000000000001660d083901b7aff000000000000000000000000000000000000000000000000000016609085901b79ffffffffffffffff00000000000000000000000000000000000016605087901b71ffffffffffffffff0000000000000000000016601089901b69ffffffffffffffff00001661ffff8b1617171717176114346113f082611ab0565b61ffff168861ffff166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a310000000000000000000000000000815250611a02565b61148e61144082611958565b6001600160401b0316876001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a320000000000000000000000000000815250611a02565b6114e861149a82611973565b6001600160401b0316866001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a330000000000000000000000000000815250611a02565b6115426114f482611988565b6001600160401b0316856001600160401b03166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a340000000000000000000000000000815250611a02565b61159061154e82611c1a565b60ff168460ff166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a350000000000000000000000000000815250611a02565b610a5161159c82611a69565b64ffffffffff168364ffffffffff166040518060400160405280601281526020017f7465737446757a7a5f656e636f64653a3a360000000000000000000000000000815250611a02565b60006115f182611973565b6001600160401b03169050611628816001600160401b0380166040518060600160405280602381526020016122a460239139611a75565b61086460508360001c901c6001600160401b03168260405180606001604052806023815260200161225e60239139611a02565b600061166682611988565b6001600160401b0316905061169d816001600160401b03801660405180606001604052806023815260200161223b60239139611a75565b61086460908360001c901c6001600160401b03168260405180606001604052806023815260200161228160239139611a02565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156107bb57838290600052602060002001805461171390612121565b80601f016020809104026020016040519081016040528092919081815260200182805461173f90612121565b801561178c5780601f106117615761010080835404028352916020019161178c565b820191906000526020600020905b81548152906001019060200180831161176f57829003601f168201915b5050505050815260200190600101906116f4565b60075460009060ff16156117b8575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906121f9565b1415905090565b600061186682611c1a565b60ff1690506118ae8160ff80166040518060400160405280601d81526020017f7465737446757a7a5f47657453616d706c654c69666574696d653a3a31000000815250611a75565b61086460d08360001c901c60ff16826040518060400160405280601d81526020017f7465737446757a7a5f47657453616d706c654c69666574696d653a3a32000000815250611a02565b60606013805480602002602001604051908101604052809291908181526020018280548015610344576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610326575050505050905090565b600061196d8260101c6001600160401b031690565b92915050565b600061196d8260501c6001600160401b031690565b600061196d8260901c6001600160401b031690565b64ffffffffff841662ffffff8481168202918482168102918416026119c188611958565b6119cb9084612101565b92506119d688611973565b6119e09083612101565b91506119eb88611988565b6119f59082612101565b9050955095509592505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c8590611a3d90869086908690600401612212565b60006040518083038186803b158015611a5557600080fd5b505afa158015610a51573d6000803e3d6000fd5b600060d882901c61196d565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d90611a3d90869086908690600401612212565b600061ffff821661196d565b600080600080611acb88611958565b6001600160401b031690506000611ae189611973565b6001600160401b031690506000611af78a611988565b6001600160401b031690508664ffffffffff16600003611b1d5791945092509050611c10565b6000611b288a611958565b6001600160401b031690506000611b3e8b611973565b6001600160401b031690506000611b548c611988565b6001600160401b031690508a64ffffffffff16600003611b7e5791975095509350611c1092505050565b6000611b9464ffffffffff808d16908e1661215b565b9050808b64ffffffffff1685028d64ffffffffff1689020181611bb957611bb9612185565b049950808b64ffffffffff1684028d64ffffffffff1688020181611bdf57611bdf612185565b049850808b64ffffffffff1683028d64ffffffffff1687020181611c0557611c05612185565b049750505050505050505b9450945094915050565b600061196d8260d01c60ff1690565b6000611c3482611c1a565b60ff16611c4083611a69565b61196d91906121db565b6020808252825182820181905260009190848201906040850190845b81811015611c8b5783516001600160a01b031683529284019291840191600101611c66565b50909695505050505050565b803564ffffffffff81168114611cac57600080fd5b919050565b803562ffffff81168114611cac57600080fd5b600080600080600060a08688031215611cdc57600080fd5b85359450611cec60208701611c97565b9350611cfa60408701611cb1565b9250611d0860608701611cb1565b9150611d1660808701611cb1565b90509295509295909350565b6000815180845260005b81811015611d4857602081850181015186830182015201611d2c565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611e1857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611e0257605f19898503018352611df0848651611d22565b948e01949350918d0191600101611dd4565b505050978a019794505091880191600101611d8f565b50919a9950505050505050505050565b600060208284031215611e3a57600080fd5b5035919050565b60008060008060808587031215611e5757600080fd5b611e6085611c97565b9350611e6e60208601611cb1565b9250611e7c60408601611cb1565b9150611e8a60608601611cb1565b905092959194509250565b60008060008060808587031215611eab57600080fd5b8435935060208501359250611ec260408601611c97565b9150611e8a60608601611c97565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611f8c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611f775783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611f35565b50978a01979550505091870191600101611ef8565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611ff057603f19888603018452611fde858351611d22565b94509285019290850190600101611fc2565b5092979650505050505050565b80356001600160401b0381168114611cac57600080fd5b60008060008060008060c0878903121561202d57600080fd5b863561ffff8116811461203f57600080fd5b955061204d60208801611ffd565b945061205b60408801611ffd565b935061206960608801611ffd565b9250608087013560ff8116811461207f57600080fd5b915061208d60a08801611c97565b90509295509295509295565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038181168382160280821691908281146120d2576120d2612099565b505092915050565b6001600160401b038281168282160390808211156120fa576120fa612099565b5092915050565b6001600160401b038181168382160190808211156120fa576120fa612099565b600181811c9082168061213557607f821691505b60208210810361215557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561196d5761196d612099565b808202811582820484141761196d5761196d612099565b634e487b7160e01b600052601260045260246000fd5b6000826121b857634e487b7160e01b600052601260045260246000fd5b500490565b64ffffffffff8281168282160390808211156120fa576120fa612099565b64ffffffffff8181168382160190808211156120fa576120fa612099565b60006020828403121561220b57600080fd5b5051919050565b8381528260208201526060604082015260006122316060830184611d22565b9594505050505056fe7465737446757a7a5f47657443756d756c617469766542696e43726f737365643a3a317465737446757a7a5f47657443756d756c6174697665566f6c6174696c6974793a3a327465737446757a7a5f47657443756d756c617469766542696e43726f737365643a3a327465737446757a7a5f47657443756d756c6174697665566f6c6174696c6974793a3a31a2646970667358221220ff33bad8be875761f317536967ad5358f274c7aeb91490d13512cfd8c633634a64736f6c63430008140033","sourceMap":"143:7732:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6100:1773:117;;;;;;:::i;:::-;;:::i;:::-;;3360:151:5;;;:::i;:::-;;;;;;;:::i;1881:318:117:-;;;;;;:::i;:::-;;:::i;216:297::-;;;;;;:::i;:::-;;:::i;5483:611::-;;;;;;:::i;:::-;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;3670:1807:117:-;;;;;;:::i;:::-;;:::i;519:303::-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2205:532:117:-;;;;;;:::i;:::-;;:::i;2592:140:5:-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2743:921:117:-;;;;;;:::i;:::-;;:::i;828:359::-;;;;;;:::i;:::-;;:::i;1193:360::-;;;;;;:::i;:::-;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;8175:14:127;;8168:22;8150:41;;8138:2;8123:18;1243:204:1;8010:187:127;1559:316:117;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;2452:134::-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;6100:1773:117:-;6300:26;6329:24;:6;:22;:24::i;:::-;6300:53;;6363:34;6400:32;:6;:30;:32::i;:::-;6363:69;;6442:34;6479:32;:6;:30;:32::i;:::-;6442:69;-1:-1:-1;6522:28:117;;;;:17;;;:28;:::i;:::-;-1:-1:-1;6560:41:117;;;;:17;;;:41;:::i;:::-;-1:-1:-1;6611:30:117;;;;:17;;;:30;:::i;:::-;-1:-1:-1;6700:38:117;6719:19;-1:-1:-1;;;;;6700:38:117;:::i;:::-;-1:-1:-1;;;;;6669:69:117;:28;;;;:17;;;:28;:::i;:::-;-1:-1:-1;;;;;6669:69:117;;:179;;;-1:-1:-1;6802:46:117;6821:27;-1:-1:-1;;;;;6802:46:117;:::i;:::-;-1:-1:-1;;;;;6758:90:117;:41;;;;:17;;;:41;:::i;:::-;-1:-1:-1;;;;;6758:90:117;;6669:179;:278;;;-1:-1:-1;6901:46:117;6920:27;-1:-1:-1;;;;;6901:46:117;:::i;:::-;-1:-1:-1;;;;;6868:79:117;:30;;;;:17;;;:30;:::i;:::-;-1:-1:-1;;;;;6868:79:117;;6669:278;6652:1215;;;317:28:0;309:37;;-1:-1:-1;;;;;6972:15:117;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7003:69:117;;-1:-1:-1;7003:6:117;;-1:-1:-1;7017:9:117;;-1:-1:-1;7028:8:117;7038:21;7061:10;7003:13;:69::i;:::-;;;;6652:1215;;;7104:19;;;7201:69;:6;7215:9;7226:8;7236:21;7259:10;7201:13;:69::i;:::-;7103:167;;-1:-1:-1;7103:167:117;-1:-1:-1;7103:167:117;-1:-1:-1;7285:144:117;-1:-1:-1;;;;;7285:144:117;;7355:28;;;;:16;;;:28;:::i;:::-;7333:50;;:19;:50;:::i;:::-;-1:-1:-1;;;;;7285:144:117;;;;;;;;;;;;;;;;;;:8;:144::i;:::-;7443:205;-1:-1:-1;;;;;7443:205:117;;7545:41;;;;:29;;;:41;:::i;:::-;7515:71;;:27;:71;:::i;:::-;-1:-1:-1;;;;;7443:205:117;;;;;;;;;;;;;;;;;;:8;:205::i;:::-;7662:194;-1:-1:-1;;;;;7662:194:117;;7764:30;;;;:18;;;:30;:::i;:::-;7734:60;;:27;:60;:::i;:::-;-1:-1:-1;;;;;7662:194:117;;;;;;;;;;;;;;;;;;:8;:194::i;:::-;7089:778;;;6652:1215;6290:1583;;;6100:1773;;;;;:::o;3360:151:5:-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;1881:318:117:-;1957:22;1982:26;:6;:24;:26::i;:::-;1957:51;;;;2018:75;2027:14;2043:16;2018:75;;;;;;;;;;;;;;;;;;;:8;:75::i;:::-;2103:89;;;;;;;;;;;;;;;;;;;2138:3;2119:22;;;;2144:14;;2103:8;:89::i;:::-;1947:252;1881:318;:::o;216:297::-;290:20;313:24;:6;:22;:24::i;:::-;290:47;;;;347:71;356:12;370:16;347:71;;;;;;;;;;;;;;;;;;;:8;:71::i;:::-;428:78;452:6;444:15;;428:78;;462:12;428:78;;;;;;;;;;;;;;;;;:8;:78::i;5483:611::-;5637:19;;;5730:73;5637:19;5748:9;5759:8;5769:21;5792:10;5730:17;:73::i;:::-;5636:167;;-1:-1:-1;5636:167:117;-1:-1:-1;5636:167:117;-1:-1:-1;5814:74:117;-1:-1:-1;;;;;5814:74:117;;5837:28;;;;:16;;;:28;:::i;:::-;-1:-1:-1;;;;;5814:74:117;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;5898:95;-1:-1:-1;;;;;5898:95:117;;5929:41;;;;:29;;;:41;:::i;:::-;-1:-1:-1;;;;;5898:95:117;;;;;;;;;;;;;;;;;;:8;:95::i;:::-;6003:84;-1:-1:-1;;;;;6003:84:117;;6034:30;;;;:18;;;:30;:::i;:::-;-1:-1:-1;;;;;6003:84:117;;;;;;;;;;;;;;;;;;:8;:84::i;:::-;5626:468;;;5483:611;;;;:::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;3670:1807:117:-;3792:19;3814:26;;;;;;:16;;:26;:::i;:::-;3792:48;;3855:11;3870:1;3855:16;3851:131;;317:28:0;309:37;;-1:-1:-1;;;;;3887:15:117;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3918:53:117;;-1:-1:-1;3918:7:117;;-1:-1:-1;3945:7:117;;-1:-1:-1;3954:7:117;3963;3918:26;:53::i;:::-;;;;3851:131;3993:18;;;;4120:25;:7;:23;:25::i;:::-;-1:-1:-1;;;;;4105:40:117;;;4159:13;4175:33;:7;:31;:33::i;:::-;-1:-1:-1;;;;;4159:49:117;;;4222:13;4238:33;:7;:31;:33::i;:::-;-1:-1:-1;;;;;4222:49:117;;;4286:12;4301:25;:7;:23;:25::i;:::-;-1:-1:-1;;;;;4286:40:117;;;4340:13;4356:33;:7;:31;:33::i;:::-;-1:-1:-1;;;;;4340:49:117;;;4403:13;4419:33;:7;:31;:33::i;:::-;-1:-1:-1;;;;;4403:49:117;;-1:-1:-1;4516:11:117;4498:14;;;;:4;:14;:::i;:::-;4481;;;;:4;:14;:::i;:::-;:31;;;;:::i;:::-;4480:47;;;;:::i;:::-;4467:60;-1:-1:-1;4600:11:117;4581:15;;;;:5;:15;:::i;:::-;4563;;;;:5;:15;:::i;:::-;:33;;;;:::i;:::-;4562:49;;;;:::i;:::-;4541:70;-1:-1:-1;4684:11:117;4665:15;;;;:5;:15;:::i;:::-;4647;;;;:5;:15;:::i;:::-;:33;;;;:::i;:::-;4646:49;;;;:::i;:::-;4625:70;;4091:615;;;;;;-1:-1:-1;;;;;4733:29:117;;:10;:29;:70;;;-1:-1:-1;;;;;;4766:37:117;;4733:70;:127;;;-1:-1:-1;;;;;;4823:37:117;;4733:127;4716:755;;;317:28:0;309:37;;-1:-1:-1;;;;;4885:15:117;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4916:53:117;;-1:-1:-1;4916:7:117;;-1:-1:-1;4943:7:117;;-1:-1:-1;4952:7:117;4961;4916:26;:53::i;4716:755::-;5001:24;;;5113:53;:7;5140;5149;5158;5113:26;:53::i;:::-;5000:166;;;;;;5181:73;5190:17;-1:-1:-1;;;;;5181:73:117;5209:10;5181:73;;;;;;;;;;;;;;;;;:8;:73::i;:::-;5268:89;5277:25;-1:-1:-1;;;;;5268:89:117;5304:18;5268:89;;;;;;;;;;;;;;;;;:8;:89::i;:::-;5371;5380:25;-1:-1:-1;;;;;5371:89:117;5407:18;5371:89;;;;;;;;;;;;;;;;;:8;:89::i;519:303::-;593:20;616:24;:6;:22;:24::i;:::-;-1:-1:-1;;;;;593:47:117;;;650:71;659:12;-1:-1:-1;;;;;650:71:117;;;;;;;;;;;;;;;;;;;:8;:71::i;:::-;731:84;766:2;755:6;747:15;;:21;;-1:-1:-1;;;;;731:84:117;771:12;731:84;;;;;;;;;;;;;;;;;:8;:84::i;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2205:532:117;2278:21;2302:26;:6;:24;:26::i;:::-;2278:50;;2338:20;2361:26;:6;:24;:26::i;:::-;2338:49;-1:-1:-1;2419:33:117;;;;:16;:33;:::i;:::-;2402:50;;:14;:50;;;2398:333;;;317:28:0;309:37;;-1:-1:-1;;;;;2468:15:117;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:28;:6;:26;:28::i;:::-;;2268:469;;2205:532;:::o;2398:333::-;2558:23;2584:28;:6;:26;:28::i;:::-;2558:54;-1:-1:-1;2626:94:117;;;;2653:31;;;;:14;:31;:::i;:::-;2626:94;;;;;;;;;;;;;;;;;;;:8;:94::i;2592:140:5:-;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2743:921:117;1030:3:80;1398:29:76;;;;;970:3:80;1398:29:76;;;;;910:3:80;1398:29:76;;;;;844:2:80;1398:29:76;;;;;779:2:80;1398:29:76;;;;;1710:67:80;;;1383:45:76;;;;;3152:70:117;3161:24;1383:45:76;3161:22:117;:24::i;:::-;3152:70;;3187:12;3152:70;;;;;;;;;;;;;;;;;;;:8;:70::i;:::-;3232;3241:24;:6;:22;:24::i;:::-;-1:-1:-1;;;;;3232:70:117;3267:12;-1:-1:-1;;;;;3232:70:117;;;;;;;;;;;;;;;;;;:8;:70::i;:::-;3312:86;3321:32;:6;:30;:32::i;:::-;-1:-1:-1;;;;;3312:86:117;3355:20;-1:-1:-1;;;;;3312:86:117;;;;;;;;;;;;;;;;;;:8;:86::i;:::-;3408;3417:32;:6;:30;:32::i;:::-;-1:-1:-1;;;;;3408:86:117;3451:20;-1:-1:-1;;;;;3408:86:117;;;;;;;;;;;;;;;;;;:8;:86::i;:::-;3504:74;3513:26;:6;:24;:26::i;:::-;3504:74;;3541:14;3504:74;;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;3588:69;3597:26;:6;:24;:26::i;:::-;3588:69;;3625:9;3588:69;;;;;;;;;;;;;;;;;;;:8;:69::i;828:359::-;910:28;941:32;:6;:30;:32::i;:::-;-1:-1:-1;;;;;910:63:117;;;983:87;992:20;-1:-1:-1;;;;;983:87:117;;;;;;;;;;;;;;;;;;;:8;:87::i;:::-;1080:100;1115:2;1104:6;1096:15;;:21;;-1:-1:-1;;;;;1080:100:117;1120:20;1080:100;;;;;;;;;;;;;;;;;:8;:100::i;1193:360::-;1275:28;1306:32;:6;:30;:32::i;:::-;-1:-1:-1;;;;;1275:63:117;;;1348:87;1357:20;-1:-1:-1;;;;;1348:87:117;;;;;;;;;;;;;;;;;;;:8;:87::i;:::-;1445:101;1480:3;1469:6;1461:15;;:22;;-1:-1:-1;;;;;1445:101:117;1486:20;1445:101;;;;;;;;;;;;;;;;;:8;:101::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;10546:74:127;;;1398:17:1;10636:18:127;;;10629:34;1428:1:1;;1377:7;;10519:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;1559:316:117:-;1635:22;1660:26;:6;:24;:26::i;:::-;1635:51;;;;1696:74;1705:14;1721:15;1696:74;;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;1780:88;1814:3;1803:6;1795:15;;:22;;1780:88;;1820:14;1780:88;;;;;;;;;;;;;;;;;:8;:88::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;2896:140:80:-;2960:9;2988:41;:6;779:2;6548:20:76;-1:-1:-1;;;;;6544:38:76;;6410:188;2988:41:80;2981:48;2896:140;-1:-1:-1;;2896:140:80:o;3380:175::-;3452:28;3499:49;:6;844:2;6548:20:76;-1:-1:-1;;;;;6544:38:76;;6410:188;3869:165:80;3941:17;3977:50;:6;910:3;6548:20:76;-1:-1:-1;;;;;6544:38:76;;6410:188;7570:665:80;7865:28;;;:16;;;;:28;;;7930:29;;;:41;;;8008:18;;:30;8075:23;8091:6;8075:15;:23::i;:::-;8059:39;;;;:::i;:::-;;;8132:31;8156:6;8132:23;:31::i;:::-;8108:55;;;;:::i;:::-;;;8197:31;8221:6;8197:23;:31::i;:::-;8173:55;;;;:::i;:::-;;;7570:665;;;;;;;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:150:80;4825:15;1030:3;6098:20:76;;;4859:43:80;5960:188:76;14412:134:1;14510:29;;-1:-1:-1;;;14510:29:1;;:11;;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;2496:125:80:-;2560:13;4727:11:76;4701:38;;2592:22:80;4567:188:76;5884:1198:80;6025:24;6051:32;6085;6133:12;6148:24;6164:7;6148:15;:24::i;:::-;-1:-1:-1;;;;;6133:39:80;;;6182:20;6205:32;6229:7;6205:23;:32::i;:::-;-1:-1:-1;;;;;6182:55:80;;;6247:20;6270:32;6294:7;6270:23;:32::i;:::-;-1:-1:-1;;;;;6247:55:80;;;6317:7;:12;;6328:1;6317:12;6313:83;;6346:4;;-1:-1:-1;6360:12:80;-1:-1:-1;6382:12:80;-1:-1:-1;6331:65:80;;6313:83;6407:12;6422:24;6438:7;6422:15;:24::i;:::-;-1:-1:-1;;;;;6407:39:80;;;6456:20;6479:32;6503:7;6479:23;:32::i;:::-;-1:-1:-1;;;;;6456:55:80;;;6521:20;6544:32;6568:7;6544:23;:32::i;:::-;-1:-1:-1;;;;;6521:55:80;;;6591:7;:12;;6602:1;6591:12;6587:83;;6620:4;;-1:-1:-1;6634:12:80;-1:-1:-1;6656:12:80;-1:-1:-1;6605:65:80;;-1:-1:-1;;;6605:65:80;6587:83;6681:19;6703:26;;;;;;:16;;:26;:::i;:::-;6681:48;;6827:11;6816:7;6809:14;;:4;:14;6799:7;6792:14;;:4;:14;:31;6791:47;;;;;:::i;:::-;;6764:75;;6940:11;6929:7;6914:22;;:12;:22;6904:7;6889:22;;:12;:22;:47;6888:63;;;;;:::i;:::-;;6853:99;;7053:11;7042:7;7027:22;;:12;:22;7017:7;7002:22;;:12;:22;:47;7001:63;;;;;:::i;:::-;;6966:99;;6123:959;;;;;;;5884:1198;;;;;;;;;:::o;4324:148::-;4390:14;4423:42;:6;970:3;3270:20:76;3292:10;3266:37;;3134:185;5204:170:80;5272:17;5342:25;5360:6;5342:17;:25::i;:::-;5314:53;;:25;5332:6;5314:17;:25::i;:::-;:53;;;;:::i;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:165::-;767:20;;827:12;816:24;;806:35;;796:63;;855:1;852;845:12;796:63;700:165;;;:::o;870:161::-;937:20;;997:8;986:20;;976:31;;966:59;;1021:1;1018;1011:12;1036:470;1127:6;1135;1143;1151;1159;1212:3;1200:9;1191:7;1187:23;1183:33;1180:53;;;1229:1;1226;1219:12;1180:53;1265:9;1252:23;1242:33;;1294:37;1327:2;1316:9;1312:18;1294:37;:::i;:::-;1284:47;;1350:37;1383:2;1372:9;1368:18;1350:37;:::i;:::-;1340:47;;1406:37;1439:2;1428:9;1424:18;1406:37;:::i;:::-;1396:47;;1462:38;1495:3;1484:9;1480:19;1462:38;:::i;:::-;1452:48;;1036:470;;;;;;;;:::o;1511:423::-;1553:3;1591:5;1585:12;1618:6;1613:3;1606:19;1643:1;1653:162;1667:6;1664:1;1661:13;1653:162;;;1729:4;1785:13;;;1781:22;;1775:29;1757:11;;;1753:20;;1746:59;1682:12;1653:162;;;1657:3;1860:1;1853:4;1844:6;1839:3;1835:16;1831:27;1824:38;1923:4;1916:2;1912:7;1907:2;1899:6;1895:15;1891:29;1886:3;1882:39;1878:50;1871:57;;;1511:423;;;;:::o;1939:1765::-;2172:2;2224:21;;;2294:13;;2197:18;;;2316:22;;;2143:4;;2172:2;2357;;2375:18;;;;2412:1;2455:15;;;2440:31;;2436:40;;2499:15;;;2143:4;;2563:1112;2579:6;2574:3;2571:15;2563:1112;;;-1:-1:-1;;2648:22:127;;;2644:36;2632:49;;2704:13;;2791:9;;-1:-1:-1;;;;;2787:58:127;2772:74;;2885:11;;2879:18;2917:15;;;2910:27;;;2998:19;;2744:15;;;3030:24;;;3211:21;;;;3077:2;3159:17;;;3147:30;;3143:39;;;3101:15;;;;3256:1;3270:296;3286:8;3281:3;3278:17;3270:296;;;3392:2;3388:7;3379:6;3371;3367:19;3363:33;3356:5;3349:48;3424:42;3459:6;3448:8;3442:15;3424:42;:::i;:::-;3495:17;;;;3414:52;-1:-1:-1;3538:14:127;;;;3314:1;3305:11;3270:296;;;-1:-1:-1;;;3653:12:127;;;;3589:6;-1:-1:-1;;3618:15:127;;;;2605:1;2596:11;2563:1112;;;-1:-1:-1;3692:6:127;;1939:1765;-1:-1:-1;;;;;;;;;;1939:1765:127:o;3709:180::-;3768:6;3821:2;3809:9;3800:7;3796:23;3792:32;3789:52;;;3837:1;3834;3827:12;3789:52;-1:-1:-1;3860:23:127;;3709:180;-1:-1:-1;3709:180:127:o;3894:401::-;3976:6;3984;3992;4000;4053:3;4041:9;4032:7;4028:23;4024:33;4021:53;;;4070:1;4067;4060:12;4021:53;4093:28;4111:9;4093:28;:::i;:::-;4083:38;;4140:37;4173:2;4162:9;4158:18;4140:37;:::i;:::-;4130:47;;4196:37;4229:2;4218:9;4214:18;4196:37;:::i;:::-;4186:47;;4252:37;4285:2;4274:9;4270:18;4252:37;:::i;:::-;4242:47;;3894:401;;;;;;;:::o;4300:393::-;4384:6;4392;4400;4408;4461:3;4449:9;4440:7;4436:23;4432:33;4429:53;;;4478:1;4475;4468:12;4429:53;4514:9;4501:23;4491:33;;4571:2;4560:9;4556:18;4543:32;4533:42;;4594:37;4627:2;4616:9;4612:18;4594:37;:::i;:::-;4584:47;;4650:37;4683:2;4672:9;4668:18;4650:37;:::i;4698:1590::-;4900:4;4929:2;4969;4958:9;4954:18;4999:2;4988:9;4981:21;5022:6;5057;5051:13;5088:6;5080;5073:22;5114:2;5104:12;;5147:2;5136:9;5132:18;5125:25;;5209:2;5199:6;5196:1;5192:14;5181:9;5177:30;5173:39;5247:2;5239:6;5235:15;5268:1;5289;5299:960;5315:6;5310:3;5307:15;5299:960;;;5384:22;;;-1:-1:-1;;5380:36:127;5368:49;;5440:13;;5527:9;;-1:-1:-1;;;;;5523:58:127;5508:74;;5621:11;;5615:18;5653:15;;;5646:27;;;5734:19;;5480:15;;;5766:24;;;5856:21;;;;5901:1;;5824:2;5812:15;;;5915:236;5931:8;5926:3;5923:17;5915:236;;;6012:15;;6029:20;6008:42;5994:57;;6120:17;;;;5959:1;5950:11;;;;;6077:14;;;;5915:236;;;-1:-1:-1;6237:12:127;;;;6174:5;-1:-1:-1;;;6202:15:127;;;;5341:1;5332:11;5299:960;;;-1:-1:-1;6276:6:127;;4698:1590;-1:-1:-1;;;;;;;;;4698:1590:127:o;6293:803::-;6455:4;6484:2;6524;6513:9;6509:18;6554:2;6543:9;6536:21;6577:6;6612;6606:13;6643:6;6635;6628:22;6681:2;6670:9;6666:18;6659:25;;6743:2;6733:6;6730:1;6726:14;6715:9;6711:30;6707:39;6693:53;;6781:2;6773:6;6769:15;6802:1;6812:255;6826:6;6823:1;6820:13;6812:255;;;6919:2;6915:7;6903:9;6895:6;6891:22;6887:36;6882:3;6875:49;6947:40;6980:6;6971;6965:13;6947:40;:::i;:::-;6937:50;-1:-1:-1;7045:12:127;;;;7010:15;;;;6848:1;6841:9;6812:255;;;-1:-1:-1;7084:6:127;;6293:803;-1:-1:-1;;;;;;;6293:803:127:o;7101:171::-;7168:20;;-1:-1:-1;;;;;7217:30:127;;7207:41;;7197:69;;7262:1;7259;7252:12;7277:728;7374:6;7382;7390;7398;7406;7414;7467:3;7455:9;7446:7;7442:23;7438:33;7435:53;;;7484:1;7481;7474:12;7435:53;7523:9;7510:23;7573:6;7566:5;7562:18;7555:5;7552:29;7542:57;;7595:1;7592;7585:12;7542:57;7618:5;-1:-1:-1;7642:37:127;7675:2;7660:18;;7642:37;:::i;:::-;7632:47;;7698:37;7731:2;7720:9;7716:18;7698:37;:::i;:::-;7688:47;;7754:37;7787:2;7776:9;7772:18;7754:37;:::i;:::-;7744:47;;7843:3;7832:9;7828:19;7815:33;7892:4;7883:7;7879:18;7870:7;7867:31;7857:59;;7912:1;7909;7902:12;7857:59;7935:7;-1:-1:-1;7961:38:127;7994:3;7979:19;;7961:38;:::i;:::-;7951:48;;7277:728;;;;;;;;:::o;8202:127::-;8263:10;8258:3;8254:20;8251:1;8244:31;8294:4;8291:1;8284:15;8318:4;8315:1;8308:15;8334:257;-1:-1:-1;;;;;8455:10:127;;;8467;;;8451:27;8498:20;;;;8405:18;8537:24;;;8527:58;;8565:18;;:::i;:::-;8527:58;;8334:257;;;;:::o;8596:183::-;-1:-1:-1;;;;;8715:10:127;;;8703;;;8699:27;;8738:12;;;8735:38;;;8753:18;;:::i;:::-;8735:38;8596:183;;;;:::o;8784:180::-;-1:-1:-1;;;;;8889:10:127;;;8901;;;8885:27;;8924:11;;;8921:37;;;8938:18;;:::i;8969:380::-;9048:1;9044:12;;;;9091;;;9112:61;;9166:4;9158:6;9154:17;9144:27;;9112:61;9219:2;9211:6;9208:14;9188:18;9185:38;9182:161;;9265:10;9260:3;9256:20;9253:1;9246:31;9300:4;9297:1;9290:15;9328:4;9325:1;9318:15;9182:161;;8969:380;;;:::o;9354:125::-;9419:9;;;9440:10;;;9437:36;;;9453:18;;:::i;9484:168::-;9557:9;;;9588;;9605:15;;;9599:22;;9585:37;9575:71;;9626:18;;:::i;9657:127::-;9718:10;9713:3;9709:20;9706:1;9699:31;9749:4;9746:1;9739:15;9773:4;9770:1;9763:15;9789:217;9829:1;9855;9845:132;;9899:10;9894:3;9890:20;9887:1;9880:31;9934:4;9931:1;9924:15;9962:4;9959:1;9952:15;9845:132;-1:-1:-1;9991:9:127;;9789:217::o;10011:177::-;10079:12;10124:10;;;10112;;;10108:27;;10147:12;;;10144:38;;;10162:18;;:::i;10193:174::-;10260:12;10292:10;;;10304;;;10288:27;;10327:11;;;10324:37;;;10341:18;;:::i;10674:184::-;10744:6;10797:2;10785:9;10776:7;10772:23;10768:32;10765:52;;;10813:1;10810;10803:12;10765:52;-1:-1:-1;10836:16:127;;10674:184;-1:-1:-1;10674:184:127:o;10863:362::-;11068:6;11057:9;11050:25;11111:6;11106:2;11095:9;11091:18;11084:34;11154:2;11149;11138:9;11134:18;11127:30;11031:4;11174:45;11215:2;11204:9;11200:18;11192:6;11174:45;:::i;:::-;11166:53;10863:362;-1:-1:-1;;;;;10863:362:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_GetCumulativeBinCrossed(bytes32)":"a74e4c45","testFuzz_GetCumulativeId(bytes32)":"5f5ed4e5","testFuzz_GetCumulativeVolatility(bytes32)":"9e99a609","testFuzz_GetOracleLength(bytes32)":"335d6051","testFuzz_GetSampleCreation(bytes32)":"3318885b","testFuzz_GetSampleLastUpdate(bytes32)":"793c6268","testFuzz_GetSampleLifetime(bytes32)":"c75bf51f","testFuzz_GetWeightedAverage(bytes32,bytes32,uint40,uint40)":"48df3bb1","testFuzz_encode(uint16,uint64,uint64,uint64,uint8,uint40)":"944428b3","testFuzz_update(uint40,uint24,uint24,uint24)":"3da9eb1c","testFuzz_updateWithSample(bytes32,uint40,uint24,uint24,uint24)":"244bd8f2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetCumulativeBinCrossed\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetCumulativeId\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetCumulativeVolatility\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetOracleLength\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetSampleCreation\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetSampleLastUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"}],\"name\":\"testFuzz_GetSampleLifetime\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sample2\",\"type\":\"bytes32\"},{\"internalType\":\"uint40\",\"name\":\"weight1\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"weight2\",\"type\":\"uint40\"}],\"name\":\"testFuzz_GetWeightedAverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"oracleLength\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeVolatility\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeBinCrossed\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"createdAt\",\"type\":\"uint40\"}],\"name\":\"testFuzz_encode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"deltaTime\",\"type\":\"uint40\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"binCrossed\",\"type\":\"uint24\"}],\"name\":\"testFuzz_update\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sample\",\"type\":\"bytes32\"},{\"internalType\":\"uint40\",\"name\":\"deltaTime\",\"type\":\"uint40\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"binCrossed\",\"type\":\"uint24\"}],\"name\":\"testFuzz_updateWithSample\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/SampleMath.t.sol\":\"SampleMathTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"test/libraries/math/SampleMath.t.sol\":{\"keccak256\":\"0xd5deec35cfadd849f46c4624d3eae2b1e47d1f2c72c7764f803a78d417a69d6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2c3aff3609d8207f107e76c892f488df02098051292f4c0cc3558249557645a\",\"dweb:/ipfs/QmX4LEdHUfbr6p9Q2vqKHGLgcsA2ZVryeGogLxbWoUfkNu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetCumulativeBinCrossed"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetCumulativeId"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetCumulativeVolatility"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetOracleLength"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetSampleCreation"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetSampleLastUpdate"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"testFuzz_GetSampleLifetime"},{"inputs":[{"internalType":"bytes32","name":"sample1","type":"bytes32"},{"internalType":"bytes32","name":"sample2","type":"bytes32"},{"internalType":"uint40","name":"weight1","type":"uint40"},{"internalType":"uint40","name":"weight2","type":"uint40"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_GetWeightedAverage"},{"inputs":[{"internalType":"uint16","name":"oracleLength","type":"uint16"},{"internalType":"uint64","name":"cumulativeId","type":"uint64"},{"internalType":"uint64","name":"cumulativeVolatility","type":"uint64"},{"internalType":"uint64","name":"cumulativeBinCrossed","type":"uint64"},{"internalType":"uint8","name":"sampleLifetime","type":"uint8"},{"internalType":"uint40","name":"createdAt","type":"uint40"}],"stateMutability":"pure","type":"function","name":"testFuzz_encode"},{"inputs":[{"internalType":"uint40","name":"deltaTime","type":"uint40"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"binCrossed","type":"uint24"}],"stateMutability":"pure","type":"function","name":"testFuzz_update"},{"inputs":[{"internalType":"bytes32","name":"sample","type":"bytes32"},{"internalType":"uint40","name":"deltaTime","type":"uint40"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint24","name":"volatilityAccumulator","type":"uint24"},{"internalType":"uint24","name":"binCrossed","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_updateWithSample"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/SampleMath.t.sol":"SampleMathTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"test/libraries/math/SampleMath.t.sol":{"keccak256":"0xd5deec35cfadd849f46c4624d3eae2b1e47d1f2c72c7764f803a78d417a69d6f","urls":["bzz-raw://c2c3aff3609d8207f107e76c892f488df02098051292f4c0cc3558249557645a","dweb:/ipfs/QmX4LEdHUfbr6p9Q2vqKHGLgcsA2ZVryeGogLxbWoUfkNu"],"license":"MIT"}},"version":1},"id":117} \ No newline at end of file diff --git a/abi/Script.sol/Script.json b/abi/Script.sol/Script.json deleted file mode 100644 index f03bcb90..00000000 --- a/abi/Script.sol/Script.json +++ /dev/null @@ -1,766 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "IS_SCRIPT", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "methodIdentifiers": { - "IS_SCRIPT()": "f8ccbf47" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Script.sol\":\"Script\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "IS_SCRIPT", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "lib/forge-std/src/Script.sol": "Script" - }, - "libraries": {} - }, - "sources": { - "lib/forge-std/src/Base.sol": { - "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c", - "urls": [ - "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224", - "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK" - ], - "license": "MIT" - }, - "lib/forge-std/src/Script.sol": { - "keccak256": "0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2", - "urls": [ - "bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c", - "dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdChains.sol": { - "keccak256": "0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052", - "urls": [ - "bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb", - "dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdCheats.sol": { - "keccak256": "0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7", - "urls": [ - "bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2", - "dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdJson.sol": { - "keccak256": "0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763", - "urls": [ - "bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b", - "dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdMath.sol": { - "keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2", - "urls": [ - "bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92", - "dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStorage.sol": { - "keccak256": "0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811", - "urls": [ - "bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32", - "dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStyle.sol": { - "keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d", - "urls": [ - "bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8", - "dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdUtils.sol": { - "keccak256": "0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0", - "urls": [ - "bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61", - "dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX" - ], - "license": "MIT" - }, - "lib/forge-std/src/Vm.sol": { - "keccak256": "0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876", - "urls": [ - "bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533", - "dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te" - ], - "license": "MIT OR Apache-2.0" - }, - "lib/forge-std/src/console.sol": { - "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba", - "urls": [ - "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70", - "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec" - ], - "license": "MIT" - }, - "lib/forge-std/src/console2.sol": { - "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea", - "urls": [ - "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973", - "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC165.sol": { - "keccak256": "0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600", - "urls": [ - "bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc", - "dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC20.sol": { - "keccak256": "0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947", - "urls": [ - "bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7", - "dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC721.sol": { - "keccak256": "0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15", - "urls": [ - "bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f", - "dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IMulticall3.sol": { - "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a", - "urls": [ - "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0", - "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC20.sol": { - "keccak256": "0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b", - "urls": [ - "bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f", - "dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC721.sol": { - "keccak256": "0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9", - "urls": [ - "bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b", - "dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN" - ], - "license": "MIT" - }, - "lib/forge-std/src/safeconsole.sol": { - "keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381", - "urls": [ - "bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae", - "dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "lib/forge-std/src/Script.sol", - "id": 114, - "exportedSymbols": { - "Script": [ - 113 - ], - "ScriptBase": [ - 74 - ], - "StdChains": [ - 3507 - ], - "StdCheatsSafe": [ - 5567 - ], - "StdStorage": [ - 7451 - ], - "StdStyle": [ - 10301 - ], - "StdUtils": [ - 11087 - ], - "VmSafe": [ - 13989 - ], - "console": [ - 22628 - ], - "console2": [ - 30753 - ], - "safeconsole": [ - 45478 - ], - "stdJson": [ - 7277 - ], - "stdMath": [ - 7419 - ], - "stdStorageSafe": [ - 8499 - ] - }, - "nodeType": "SourceUnit", - "src": "32:800:1", - "nodes": [ - { - "id": 76, - "nodeType": "PragmaDirective", - "src": "32:31:1", - "nodes": [], - "literals": [ - "solidity", - ">=", - "0.6", - ".2", - "<", - "0.9", - ".0" - ] - }, - { - "id": 78, - "nodeType": "ImportDirective", - "src": "127:38:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/console.sol", - "file": "./console.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 22629, - "symbolAliases": [ - { - "foreign": { - "id": 77, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "135:7:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 80, - "nodeType": "ImportDirective", - "src": "166:40:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/console2.sol", - "file": "./console2.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 30754, - "symbolAliases": [ - { - "foreign": { - "id": 79, - "name": "console2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30753, - "src": "174:8:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 82, - "nodeType": "ImportDirective", - "src": "207:46:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/safeconsole.sol", - "file": "./safeconsole.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 45479, - "symbolAliases": [ - { - "foreign": { - "id": 81, - "name": "safeconsole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 45478, - "src": "215:11:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 84, - "nodeType": "ImportDirective", - "src": "254:42:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/StdChains.sol", - "file": "./StdChains.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 3508, - "symbolAliases": [ - { - "foreign": { - "id": 83, - "name": "StdChains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3507, - "src": "262:9:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 86, - "nodeType": "ImportDirective", - "src": "297:46:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/StdCheats.sol", - "file": "./StdCheats.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 6361, - "symbolAliases": [ - { - "foreign": { - "id": 85, - "name": "StdCheatsSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5567, - "src": "305:13:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 88, - "nodeType": "ImportDirective", - "src": "344:38:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/StdJson.sol", - "file": "./StdJson.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 7278, - "symbolAliases": [ - { - "foreign": { - "id": 87, - "name": "stdJson", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7277, - "src": "352:7:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 90, - "nodeType": "ImportDirective", - "src": "383:38:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/StdMath.sol", - "file": "./StdMath.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 7420, - "symbolAliases": [ - { - "foreign": { - "id": 89, - "name": "stdMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7419, - "src": "391:7:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 93, - "nodeType": "ImportDirective", - "src": "422:60:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/StdStorage.sol", - "file": "./StdStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 9091, - "symbolAliases": [ - { - "foreign": { - "id": 91, - "name": "StdStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7451, - "src": "430:10:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 92, - "name": "stdStorageSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8499, - "src": "442:14:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 95, - "nodeType": "ImportDirective", - "src": "483:40:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/StdStyle.sol", - "file": "./StdStyle.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 10302, - "symbolAliases": [ - { - "foreign": { - "id": 94, - "name": "StdStyle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 10301, - "src": "491:8:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 97, - "nodeType": "ImportDirective", - "src": "524:40:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/StdUtils.sol", - "file": "./StdUtils.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 11088, - "symbolAliases": [ - { - "foreign": { - "id": 96, - "name": "StdUtils", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11087, - "src": "532:8:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 99, - "nodeType": "ImportDirective", - "src": "565:32:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/Vm.sol", - "file": "./Vm.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 14565, - "symbolAliases": [ - { - "foreign": { - "id": 98, - "name": "VmSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13989, - "src": "573:6:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 101, - "nodeType": "ImportDirective", - "src": "619:38:1", - "nodes": [], - "absolutePath": "lib/forge-std/src/Base.sol", - "file": "./Base.sol", - "nameLocation": "-1:-1:-1", - "scope": 114, - "sourceUnit": 75, - "symbolAliases": [ - { - "foreign": { - "id": 100, - "name": "ScriptBase", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "627:10:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 113, - "nodeType": "ContractDefinition", - "src": "676:155:1", - "nodes": [ - { - "id": 112, - "nodeType": "VariableDeclaration", - "src": "800:28:1", - "nodes": [], - "constant": false, - "functionSelector": "f8ccbf47", - "mutability": "mutable", - "name": "IS_SCRIPT", - "nameLocation": "812:9:1", - "scope": 113, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 110, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "800:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": { - "hexValue": "74727565", - "id": 111, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "824:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "visibility": "public" - } - ], - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 102, - "name": "ScriptBase", - "nameLocations": [ - "704:10:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 74, - "src": "704:10:1" - }, - "id": 103, - "nodeType": "InheritanceSpecifier", - "src": "704:10:1" - }, - { - "baseName": { - "id": 104, - "name": "StdChains", - "nameLocations": [ - "716:9:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 3507, - "src": "716:9:1" - }, - "id": 105, - "nodeType": "InheritanceSpecifier", - "src": "716:9:1" - }, - { - "baseName": { - "id": 106, - "name": "StdCheatsSafe", - "nameLocations": [ - "727:13:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 5567, - "src": "727:13:1" - }, - "id": 107, - "nodeType": "InheritanceSpecifier", - "src": "727:13:1" - }, - { - "baseName": { - "id": 108, - "name": "StdUtils", - "nameLocations": [ - "742:8:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 11087, - "src": "742:8:1" - }, - "id": 109, - "nodeType": "InheritanceSpecifier", - "src": "742:8:1" - } - ], - "canonicalName": "Script", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 113, - 11087, - 5567, - 3507, - 74, - 62 - ], - "name": "Script", - "nameLocation": "694:6:1", - "scope": 114, - "usedErrors": [], - "usedEvents": [] - } - ], - "license": "MIT" - }, - "id": 1 -} \ No newline at end of file diff --git a/abi/SovrynLBLibrary.sol/SovrynLBLibrary.json b/abi/SovrynLBLibrary.sol/SovrynLBLibrary.json deleted file mode 100644 index 6d84a3f3..00000000 --- a/abi/SovrynLBLibrary.sol/SovrynLBLibrary.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"SovrynLBLibrary__AddressZero","inputs":[]},{"type":"error","name":"SovrynLBLibrary__IdenticalAddresses","inputs":[]},{"type":"error","name":"SovrynLBLibrary__InsufficientAmount","inputs":[]},{"type":"error","name":"SovrynLBLibrary__InsufficientLiquidity","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d638aef8dcc7d86601b901ded4deda0f739351af2f41d3f68632d2d7aaf0635664736f6c63430008140033","sourceMap":"227:2385:73:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;227:2385:73;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d638aef8dcc7d86601b901ded4deda0f739351af2f41d3f68632d2d7aaf0635664736f6c63430008140033","sourceMap":"227:2385:73:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SovrynLBLibrary__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientLiquidity\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Sovryn LB Library Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for Sovryn LB V1 related calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/SovrynLBLibrary.sol\":\"SovrynLBLibrary\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SovrynLBLibrary__AddressZero"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__IdenticalAddresses"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__InsufficientAmount"},{"inputs":[],"type":"error","name":"SovrynLBLibrary__InsufficientLiquidity"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/SovrynLBLibrary.sol":"SovrynLBLibrary"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"}},"version":1},"id":73} \ No newline at end of file diff --git a/abi/StdAssertions.sol/StdAssertions.json b/abi/StdAssertions.sol/StdAssertions.json deleted file mode 100644 index 54d3c55d..00000000 --- a/abi/StdAssertions.sol/StdAssertions.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdAssertions.sol\":\"StdAssertions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdAssertions.sol":"StdAssertions"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":1} \ No newline at end of file diff --git a/abi/StdChains.sol/StdChains.json b/abi/StdChains.sol/StdChains.json deleted file mode 100644 index 44d95461..00000000 --- a/abi/StdChains.sol/StdChains.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":2} \ No newline at end of file diff --git a/abi/StdCheats.sol/StdCheats.json b/abi/StdCheats.sol/StdCheats.json deleted file mode 100644 index 8f63d38d..00000000 --- a/abi/StdCheats.sol/StdCheats.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/abi/StdCheats.sol/StdCheatsSafe.json b/abi/StdCheats.sol/StdCheatsSafe.json deleted file mode 100644 index d8e7fa46..00000000 --- a/abi/StdCheats.sol/StdCheatsSafe.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/abi/StdError.sol/stdError.json b/abi/StdError.sol/stdError.json deleted file mode 100644 index 506445ad..00000000 --- a/abi/StdError.sol/stdError.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"arithmeticError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"assertionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"divisionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"encodeStorageError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"enumConversionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"indexOOBError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"memOverflowError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"popError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"zeroVarError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x61027461003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c791906101f0565b60405180910390f35b6100ba610160565b6100ba610172565b6100ba610184565b6100ba610196565b6100ba6101a8565b6100ba6101ba565b6100ba6101cc565b6100ba6101de565b604051603260248201526044015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16634e487b7160e01b17905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b8181101561021d57858101830151858201604001528201610201565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220bf8f5bad527a52cf7ce2f105a95b16089b583a12e8652152ccb3497be3a62aad64736f6c63430008140033","sourceMap":"162:850:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;162:850:4;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c791906101f0565b60405180910390f35b6100ba610160565b6100ba610172565b6100ba610184565b6100ba610196565b6100ba6101a8565b6100ba6101ba565b6100ba6101cc565b6100ba6101de565b604051603260248201526044015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16634e487b7160e01b17905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b8181101561021d57858101830151858201604001528201610201565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220bf8f5bad527a52cf7ce2f105a95b16089b583a12e8652152ccb3497be3a62aad64736f6c63430008140033","sourceMap":"162:850:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;185:86;;;:::i;461:91::-;;;:::i;277:87::-;;;:::i;831:88::-;;;:::i;654:80::-;;;:::i;925:84::-;;;:::i;558:90::-;;;:::i;370:85::-;;;:::i;740:::-;778:47;;820:4;778:47;;;726:36:127;699:18;;778:47:4;;;;-1:-1:-1;;778:47:4;;;;;;;;;;;;;;;;-1:-1:-1;;;778:47:4;;;740:85;:::o;185:86::-;224:47;;266:4;224:47;;;726:36:127;699:18;;224:47:4;573:195:127;461:91:4;505:47;;547:4;505:47;;;726:36:127;699:18;;505:47:4;573:195:127;277:87:4;317:47;;359:4;317:47;;;726:36:127;699:18;;317:47:4;573:195:127;831:88:4;872:47;;914:4;872:47;;;726:36:127;699:18;;872:47:4;573:195:127;654:80:4;687:47;;729:4;687:47;;;726:36:127;699:18;;687:47:4;573:195:127;925:84:4;962:47;;1004:4;962:47;;;726:36:127;699:18;;962:47:4;573:195:127;558:90:4;601:47;;643:4;601:47;;;726:36:127;699:18;;601:47:4;573:195:127;370:85:4;408:47;;450:4;408:47;;;726:36:127;699:18;;408:47:4;573:195:127;14:554;132:4;161:2;190;179:9;172:21;222:6;216:13;265:6;260:2;249:9;245:18;238:34;290:1;300:140;314:6;311:1;308:13;300:140;;;409:14;;;405:23;;399:30;375:17;;;394:2;371:26;364:66;329:10;;300:140;;;304:3;489:1;484:2;475:6;464:9;460:22;456:31;449:42;559:2;552;548:7;543:2;535:6;531:15;527:29;516:9;512:45;508:54;500:62;;;;14:554;;;;:::o","linkReferences":{}},"methodIdentifiers":{"arithmeticError()":"8995290f","assertionError()":"10332977","divisionError()":"fa784a44","encodeStorageError()":"d160e4de","enumConversionError()":"1de45560","indexOOBError()":"05ee8612","memOverflowError()":"986c5f68","popError()":"b22dc54d","zeroVarError()":"b67689da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"arithmeticError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"divisionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"encodeStorageError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enumConversionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexOOBError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memOverflowError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"popError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeroVarError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdError.sol\":\"stdError\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"arithmeticError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"assertionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"divisionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"encodeStorageError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"enumConversionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexOOBError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"memOverflowError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"popError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zeroVarError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdError.sol":"stdError"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"}},"version":1},"id":4} \ No newline at end of file diff --git a/abi/StdInvariant.sol/StdInvariant.json b/abi/StdInvariant.sol/StdInvariant.json deleted file mode 100644 index b38e9aa8..00000000 --- a/abi/StdInvariant.sol/StdInvariant.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdInvariant.sol\":\"StdInvariant\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdInvariant.sol":"StdInvariant"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"}},"version":1},"id":5} \ No newline at end of file diff --git a/abi/StdJson.sol/stdJson.json b/abi/StdJson.sol/stdJson.json deleted file mode 100644 index 388500c5..00000000 --- a/abi/StdJson.sol/stdJson.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122048e3faa49b4df097474734c1cbd1994aee82d24ef8de062034e3d1df5ace07b164736f6c63430008140033","sourceMap":"830:5612:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;830:5612:6;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122048e3faa49b4df097474734c1cbd1994aee82d24ef8de062034e3d1df5ace07b164736f6c63430008140033","sourceMap":"830:5612:6:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":6} \ No newline at end of file diff --git a/abi/StdMath.sol/stdMath.json b/abi/StdMath.sol/stdMath.json deleted file mode 100644 index 414f7998..00000000 --- a/abi/StdMath.sol/stdMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fdc9e50ab1a13f05c607c448223bf9f3ff1015c8030e4764cd7e87f294c7bbd464736f6c63430008140033","sourceMap":"65:1294:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:1294:7;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fdc9e50ab1a13f05c607c448223bf9f3ff1015c8030e4764cd7e87f294c7bbd464736f6c63430008140033","sourceMap":"65:1294:7:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file diff --git a/abi/StdStorage.sol/stdStorage.json b/abi/StdStorage.sol/stdStorage.json deleted file mode 100644 index 0217cff0..00000000 --- a/abi/StdStorage.sol/stdStorage.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220735750001ceed2194bf99c1c6b8168494ccfa77eb0b1cdcbe8250c657bbb0f3c64736f6c63430008140033","sourceMap":"8870:4920:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;8870:4920:8;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220735750001ceed2194bf99c1c6b8168494ccfa77eb0b1cdcbe8250c657bbb0f3c64736f6c63430008140033","sourceMap":"8870:4920:8:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":8} \ No newline at end of file diff --git a/abi/StdStorage.sol/stdStorageSafe.json b/abi/StdStorage.sol/stdStorageSafe.json deleted file mode 100644 index 9227cf4f..00000000 --- a/abi/StdStorage.sol/stdStorageSafe.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c3c42ace4dd9ea7c7596d18ce945dbdf062317b7030abf76fc6b1a3fba83c6e64736f6c63430008140033","sourceMap":"368:8500:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;368:8500:8;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c3c42ace4dd9ea7c7596d18ce945dbdf062317b7030abf76fc6b1a3fba83c6e64736f6c63430008140033","sourceMap":"368:8500:8:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":8} \ No newline at end of file diff --git a/abi/StdStyle.sol/StdStyle.json b/abi/StdStyle.sol/StdStyle.json deleted file mode 100644 index 95614d82..00000000 --- a/abi/StdStyle.sol/StdStyle.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122074df97af0cf0202efbd5692d7b7f5e8b2feed6890c06d7c0c56fe83f5e9e747664736f6c63430008140033","sourceMap":"100:10361:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;100:10361:9;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122074df97af0cf0202efbd5692d7b7f5e8b2feed6890c06d7c0c56fe83f5e9e747664736f6c63430008140033","sourceMap":"100:10361:9:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":9} \ No newline at end of file diff --git a/abi/StdUtils.sol/StdUtils.json b/abi/StdUtils.sol/StdUtils.json deleted file mode 100644 index f7cfe147..00000000 --- a/abi/StdUtils.sol/StdUtils.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"}},"version":1},"id":10} \ No newline at end of file diff --git a/abi/Test.sol/Test.json b/abi/Test.sol/Test.json deleted file mode 100644 index cf99bd8f..00000000 --- a/abi/Test.sol/Test.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Test.sol\":\"Test\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Test.sol":"Test"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"}},"version":1},"id":11} \ No newline at end of file diff --git a/abi/TestHelper.sol/TestHelper.json b/abi/TestHelper.sol/TestHelper.json deleted file mode 100644 index 474fbb0e..00000000 --- a/abi/TestHelper.sol/TestHelper.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"addLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"amountX","type":"uint256","internalType":"uint256"},{"name":"amountY","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getId","inputs":[{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"i","type":"uint256","internalType":"uint256"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"pure"},{"type":"function","name":"getTotalBins","inputs":[{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isPresetOpen","inputs":[{"name":"binStep","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"isOpen","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"lbPair","type":"address","internalType":"contract LBPair"},{"name":"activeId","type":"uint24","internalType":"uint24"},{"name":"percentToBurn","type":"uint256","internalType":"uint256"},{"name":"nbBinX","type":"uint8","internalType":"uint8"},{"name":"nbBinY","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"SafeCast__Exceeds24Bits","inputs":[]},{"type":"error","name":"SafeCast__Exceeds64Bits","inputs":[]},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addLiquidity(address,address,address,uint24,uint256,uint256,uint8,uint8)":"a7aa85e9","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getId(uint24,uint256,uint8)":"889be5b7","getTotalBins(uint8,uint8)":"49789ef9","isPresetOpen(uint16)":"b89e0233","removeLiquidity(address,address,address,uint24,uint256,uint8,uint8)":"fecaa223","setUp()":"0a9254e4","supportsInterface(bytes4)":"01ffc9a7","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"getTotalBins\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"isPresetOpen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract LBPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"percentToBurn\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"nbBinX\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"nbBinY\",\"type\":\"uint8\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/TestHelper.sol\":\"TestHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980\",\"dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1\",\"dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/ISovrynLBRouter01.sol\":{\"keccak256\":\"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a\",\"dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh\"]},\"src/interfaces/ISovrynLBRouter02.sol\":{\"keccak256\":\"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65\",\"dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/helpers/TestHelper.sol\":{\"keccak256\":\"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0\",\"dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]},\"test/integration/Addresses.sol\":{\"keccak256\":\"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac\",\"dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7\"]},\"test/mocks/ERC20.sol\":{\"keccak256\":\"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f\",\"dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y\"]},\"test/mocks/ERC20TransferTax.sol\":{\"keccak256\":\"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170\",\"dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu\"]},\"test/mocks/FlashBorrower.sol\":{\"keccak256\":\"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b\",\"dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCast__Exceeds24Bits"},{"inputs":[],"type":"error","name":"SafeCast__Exceeds64Bits"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"amountX","type":"uint256"},{"internalType":"uint256","name":"amountY","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getId","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"pure","type":"function","name":"getTotalBins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint16","name":"binStep","type":"uint16"}],"stateMutability":"view","type":"function","name":"isPresetOpen","outputs":[{"internalType":"bool","name":"isOpen","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract LBPair","name":"lbPair","type":"address"},{"internalType":"uint24","name":"activeId","type":"uint24"},{"internalType":"uint256","name":"percentToBurn","type":"uint256"},{"internalType":"uint8","name":"nbBinX","type":"uint8"},{"internalType":"uint8","name":"nbBinY","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"removeLiquidity"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/TestHelper.sol":"TestHelper"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9","urls":["bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f","dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol":{"keccak256":"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12","urls":["bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7","dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e","urls":["bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9","dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5","urls":["bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4","dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/LBFactory.sol":{"keccak256":"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4","urls":["bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235","dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA"],"license":"MIT"},"src/LBPair.sol":{"keccak256":"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc","urls":["bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c","dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6"],"license":"MIT"},"src/LBQuoter.sol":{"keccak256":"0xab8b305e366d2d0a9dd64e14488a4029ae6527762fca9b571874b8521a7c73c2","urls":["bzz-raw://9ae36b4d32bbcb0bb69b76ed09687affd246cffcff3889e9fd0a3a5a7ab7e980","dweb:/ipfs/QmRbf3vyMrMia4LNJeuVJmqJKMsNBhqiYT2TuJ55CGD5k8"],"license":"MIT"},"src/LBRouter.sol":{"keccak256":"0xfa72717b60baec6907a3746f1c5649d8c0e38c475106d8dc21e2c0cb5dcdce75","urls":["bzz-raw://d052d053b001f6458789d0173f2b3683cf2ab90232a387309577bb898e8e32c1","dweb:/ipfs/QmVqkfjvLEAoT3Cbw1uLJQ3xqf31ag13128QXhtZmgZCjx"],"license":"MIT"},"src/LBToken.sol":{"keccak256":"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3","urls":["bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11","dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBPairV1.sol":{"keccak256":"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855","urls":["bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0","dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter01.sol":{"keccak256":"0x9ad039ba618a184dd194cce6b446b8bed87e47edecda8a6d6725bdb9f5f4ad8b","urls":["bzz-raw://7fab92cdc2cd26607822cea29d40a9d811e3eda35b06df063780301fefe3a16a","dweb:/ipfs/QmaPChQiN11ecmdeUNRSEXrAshqsB14txix5gBBLGEeNqh"],"license":"GPL-3.0"},"src/interfaces/ISovrynLBRouter02.sol":{"keccak256":"0x4550e4eb5ab8b232afb0b1e240239bdcc215d3dc1606e9ff34f85cf442970fa7","urls":["bzz-raw://c6a78c9b9200457b13fbe6a9c2435cc9d0e1f43ec65469c226880230962c1d65","dweb:/ipfs/QmcWcVdQdzbCC6x6uYsKwhiZr3guoN7kG7D57nqfkcaBDx"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/BinHelper.sol":{"keccak256":"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49","urls":["bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f","dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6"],"license":"MIT"},"src/libraries/Clone.sol":{"keccak256":"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70","urls":["bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b","dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/FeeHelper.sol":{"keccak256":"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084","urls":["bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee","dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"src/libraries/ImmutableClone.sol":{"keccak256":"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151","urls":["bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156","dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr"],"license":"MIT"},"src/libraries/OracleHelper.sol":{"keccak256":"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9","urls":["bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5","dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj"],"license":"MIT"},"src/libraries/PairParameterHelper.sol":{"keccak256":"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3","urls":["bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1","dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f"],"license":"MIT"},"src/libraries/PriceHelper.sol":{"keccak256":"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a","urls":["bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e","dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft"],"license":"MIT"},"src/libraries/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7","urls":["bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9","dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv"],"license":"MIT"},"src/libraries/SovrynLBLibrary.sol":{"keccak256":"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658","urls":["bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3","dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric"],"license":"GPL-3.0"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Encoded.sol":{"keccak256":"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba","urls":["bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8","dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY"],"license":"MIT"},"src/libraries/math/LiquidityConfigurations.sol":{"keccak256":"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1","urls":["bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5","dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG"],"license":"MIT"},"src/libraries/math/PackedUint128Math.sol":{"keccak256":"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901","urls":["bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4","dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf"],"license":"MIT"},"src/libraries/math/SafeCast.sol":{"keccak256":"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed","urls":["bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e","dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva"],"license":"MIT"},"src/libraries/math/SampleMath.sol":{"keccak256":"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63","urls":["bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20","dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/helpers/TestHelper.sol":{"keccak256":"0xfd515fd0a55a60c2f85ece762b7d2efe9585dcd93a23b01889ff5d19b3a20c7c","urls":["bzz-raw://a9b7efce81dbda31e777ee3ebf6f729596de9791d8c49098635e4559e9ae8bb0","dweb:/ipfs/QmfREyJyPaPTppuvDeTv9U3RJ5QerU1gyBKRQqpc1szJQW"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"},"test/integration/Addresses.sol":{"keccak256":"0x9b2c106aca109afe2010e149996e4ee30bc4565f4a829bf0ee6911beb5dfa729","urls":["bzz-raw://7e50b16435a52c512134f2be4c30770af4f7338ded0c0d605ba414a50c0018ac","dweb:/ipfs/QmUcbs2dDcbQDnikmyQyfRHWRTZtUEEc26BGhsr3psqTs7"],"license":"UNLICENSED"},"test/mocks/ERC20.sol":{"keccak256":"0xdc98ca12557b76dfe4bef0cb90aefd9ca9bae37617a4b4d690ea8cd9038c43e6","urls":["bzz-raw://24693ef966d775c91c2327f6f597e61a0938deaa99c24638aacf9902d673d86f","dweb:/ipfs/QmUnujVqr6kXE7AP12x88dgnjv4NDMQ9mFmAPrV3f2Pv4Y"],"license":"MIT"},"test/mocks/ERC20TransferTax.sol":{"keccak256":"0xd7bbca08dc51e7ccf0510e410465020558e63d344d1eab411bf71e070aa63bfb","urls":["bzz-raw://90742dc79873f1ac1dfd97fe84b24dec5daea34ff9874017064c0d29fcb03170","dweb:/ipfs/Qmcm6HHqxYxKBzUFWCEY2fZX4gm5nUj4iier31Movni8bu"],"license":"MIT"},"test/mocks/FlashBorrower.sol":{"keccak256":"0x7c1b5a46250d67004dcf49f85195420c308f207470164a926fb34bf4cbbc1b0c","urls":["bzz-raw://fc3e2cce34d794c7290a89a2a6a1be808a484d3f05c2ec9694f383f14cde522b","dweb:/ipfs/QmRNfrw1fmDe8XHkuP9bX6Wf8B75Yae7cSUfAD7vKdYSgs"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":93} \ No newline at end of file diff --git a/abi/TokenHelper.sol/TokenHelper.json b/abi/TokenHelper.sol/TokenHelper.json deleted file mode 100644 index 47e82620..00000000 --- a/abi/TokenHelper.sol/TokenHelper.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"TokenHelper__TransferFailed","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ada7aab413899ecd3f035681b3500a4ecda073adffad665deb0a27f74aef8a3f64736f6c63430008140033","sourceMap":"641:1791:74:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;641:1791:74;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ada7aab413899ecd3f035681b3500a4ecda073adffad665deb0a27f74aef8a3f64736f6c63430008140033","sourceMap":"641:1791:74:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"TokenHelper__TransferFailed\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Token Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using TokenHelper for IERC20;` statement to your contract, which allows you to call the safe operation as `token.safeTransfer(...)`\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/TokenHelper.sol\":\"TokenHelper\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"TokenHelper__TransferFailed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/TokenHelper.sol":"TokenHelper"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"}},"version":1},"id":74} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/ERC20ReturnTrue.json b/abi/TokenHelper.t.sol/ERC20ReturnTrue.json deleted file mode 100644 index 28d81d46..00000000 --- a/abi/TokenHelper.t.sol/ERC20ReturnTrue.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60019392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea2646970667358221220954da6ebcb1533bfbf8384e867249438680ffd00baa3d0de6e74903e956d059964736f6c63430008140033","sourceMap":"2713:238:111:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60019392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea2646970667358221220954da6ebcb1533bfbf8384e867249438680ffd00baa3d0de6e74903e956d059964736f6c63430008140033","sourceMap":"2713:238:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2843:106;;;;;;:::i;:::-;2938:4;2843:106;;;;;;;;;713:14:127;;706:22;688:41;;676:2;661:18;2843:106:111;;;;;;;2744:93;;;;;;:::i;:::-;2826:4;2744:93;;;;;14:196:127;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;740:254::-;808:6;816;869:2;857:9;848:7;844:23;840:32;837:52;;;885:1;882;875:12;837:52;908:29;927:9;908:29;:::i;:::-;898:39;984:2;969:18;;;;956:32;;-1:-1:-1;;;740:254:127:o","linkReferences":{}},"methodIdentifiers":{"transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"ERC20ReturnTrue\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"ERC20ReturnTrue"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/ERC20ReturnsCustom.json b/abi/TokenHelper.t.sol/ERC20ReturnsCustom.json deleted file mode 100644 index 0c41d72e..00000000 --- a/abi/TokenHelper.t.sol/ERC20ReturnsCustom.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061017d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610083575b600080fd5b6100716100493660046100e1565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def259392505050565b60405190815260200160405180910390f35b61007161009136600461011d565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def2592915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146100dc57600080fd5b919050565b6000806000606084860312156100f657600080fd5b6100ff846100b8565b925061010d602085016100b8565b9150604084013590509250925092565b6000806040838503121561013057600080fd5b610139836100b8565b94602093909301359350505056fea26469706673582212204909a1a97c39e9931cfce57b8503ea74b6ece2dab41410800763e364d89ac88b64736f6c63430008140033","sourceMap":"3357:273:111:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610083575b600080fd5b6100716100493660046100e1565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def259392505050565b60405190815260200160405180910390f35b61007161009136600461011d565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def2592915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146100dc57600080fd5b919050565b6000806000606084860312156100f657600080fd5b6100ff846100b8565b925061010d602085016100b8565b9150604084013590509250925092565b6000806040838503121561013057600080fd5b610139836100b8565b94602093909301359350505056fea26469706673582212204909a1a97c39e9931cfce57b8503ea74b6ece2dab41410800763e364d89ac88b64736f6c63430008140033","sourceMap":"3357:273:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3506:122;;;;;;:::i;:::-;3604:17;3506:122;;;;;;;;;694:25:127;;;682:2;667:18;3506:122:111;;;;;;;3391:109;;;;;;:::i;:::-;3476:17;3391:109;;;;;14:196:127;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;730:254::-;798:6;806;859:2;847:9;838:7;834:23;830:32;827:52;;;875:1;872;865:12;827:52;898:29;917:9;898:29;:::i;:::-;888:39;974:2;959:18;;;;946:32;;-1:-1:-1;;;730:254:127:o","linkReferences":{}},"methodIdentifiers":{"transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"ERC20ReturnsCustom\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"ERC20ReturnsCustom"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/ERC20ReturnsEmpty.json b/abi/TokenHelper.t.sol/ERC20ReturnsEmpty.json deleted file mode 100644 index c1a721ee..00000000 --- a/abi/TokenHelper.t.sol/ERC20ReturnsEmpty.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146049575b600080fd5b604760423660046080565b505050565b005b6047605436600460b7565b5050565b803573ffffffffffffffffffffffffffffffffffffffff81168114607b57600080fd5b919050565b600080600060608486031215609457600080fd5b609b846058565b925060a7602085016058565b9150604084013590509250925092565b6000806040838503121560c957600080fd5b60d0836058565b94602093909301359350505056fea26469706673582212204607fb44e74e1eebef823e9728d7e622be223580e38859290b930d2b06af445b64736f6c63430008140033","sourceMap":"2953:158:111:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146049575b600080fd5b604760423660046080565b505050565b005b6047605436600460b7565b5050565b803573ffffffffffffffffffffffffffffffffffffffff81168114607b57600080fd5b919050565b600080600060608486031215609457600080fd5b609b846058565b925060a7602085016058565b9150604084013590509250925092565b6000806040838503121560c957600080fd5b60d0836058565b94602093909301359350505056fea26469706673582212204607fb44e74e1eebef823e9728d7e622be223580e38859290b930d2b06af445b64736f6c63430008140033","sourceMap":"2953:158:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3044:65;;;;;;:::i;:::-;;;;;;;2986:52;;;;;;:::i;:::-;;;;14:196:127;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;548:254::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;716:29;735:9;716:29;:::i;:::-;706:39;792:2;777:18;;;;764:32;;-1:-1:-1;;;548:254:127:o","linkReferences":{}},"methodIdentifiers":{"transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"ERC20ReturnsEmpty\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"ERC20ReturnsEmpty"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/ERC20ReturnsFalse.json b/abi/TokenHelper.t.sol/ERC20ReturnsFalse.json deleted file mode 100644 index 5f289deb..00000000 --- a/abi/TokenHelper.t.sol/ERC20ReturnsFalse.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60009392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea26469706673582212200934a6f51c8aa3af452e5975b3cae06708a049d1118391ef226f0b75877905d464736f6c63430008140033","sourceMap":"3113:242:111:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60009392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea26469706673582212200934a6f51c8aa3af452e5975b3cae06708a049d1118391ef226f0b75877905d464736f6c63430008140033","sourceMap":"3113:242:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:107;;;;;;:::i;:::-;3318:4;3246:107;;;;;;;;;713:14:127;;706:22;688:41;;676:2;661:18;3246:107:111;;;;;;;3146:94;;;;;;:::i;:::-;3205:4;3146:94;;;;;14:196:127;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;740:254::-;808:6;816;869:2;857:9;848:7;844:23;840:32;837:52;;;885:1;882;875:12;837:52;908:29;927:9;908:29;:::i;:::-;898:39;984:2;969:18;;;;956:32;;-1:-1:-1;;;740:254:127:o","linkReferences":{}},"methodIdentifiers":{"transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"ERC20ReturnsFalse\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"ERC20ReturnsFalse"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/ERC20RevertsWithMessage.json b/abi/TokenHelper.t.sol/ERC20RevertsWithMessage.json deleted file mode 100644 index 6656833d..00000000 --- a/abi/TokenHelper.t.sol/ERC20RevertsWithMessage.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061015d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610050575b600080fd5b61004e6100493660046100c1565b61005e565b005b61004e6100493660046100fd565b60405162461bcd60e51b815260040161008f9060208082526004908201526319985a5b60e21b604082015260600190565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146100bc57600080fd5b919050565b6000806000606084860312156100d657600080fd5b6100df84610098565b92506100ed60208501610098565b9150604084013590509250925092565b6000806040838503121561011057600080fd5b61011983610098565b94602093909301359350505056fea2646970667358221220a07ac434a0196a396226c3fa2969db1774f3f1c1dff96ff6b6d80413879115b464736f6c63430008140033","sourceMap":"3632:222:111:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610050575b600080fd5b61004e6100493660046100c1565b61005e565b005b61004e6100493660046100fd565b60405162461bcd60e51b815260040161008f9060208082526004908201526319985a5b60e21b604082015260600190565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146100bc57600080fd5b919050565b6000806000606084860312156100d657600080fd5b6100df84610098565b92506100ed60208501610098565b9150604084013590509250925092565b6000806040838503121561011057600080fd5b61011983610098565b94602093909301359350505056fea2646970667358221220a07ac434a0196a396226c3fa2969db1774f3f1c1dff96ff6b6d80413879115b464736f6c63430008140033","sourceMap":"3632:222:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3758:94;;;;;;:::i;:::-;;:::i;:::-;;3671:81;;;;;;:::i;3758:94::-;3831:14;;-1:-1:-1;;;3831:14:111;;;;;;1009:2:127;991:21;;;1048:1;1028:18;;;1021:29;-1:-1:-1;;;1081:2:127;1066:18;;1059:34;1125:2;1110:18;;807:327;3831:14:111;;;;;;;;14:196:127;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;548:254::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;716:29;735:9;716:29;:::i;:::-;706:39;792:2;777:18;;;;764:32;;-1:-1:-1;;;548:254:127:o","linkReferences":{}},"methodIdentifiers":{"transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"ERC20RevertsWithMessage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"ERC20RevertsWithMessage"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/ERC20RevertsWithoutMessage.json b/abi/TokenHelper.t.sol/ERC20RevertsWithoutMessage.json deleted file mode 100644 index 10fdc6b9..00000000 --- a/abi/TokenHelper.t.sol/ERC20RevertsWithoutMessage.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"transferFrom","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061010b806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146044575b600080fd5b604260323660046077565b005b6042603236600460ae565b803573ffffffffffffffffffffffffffffffffffffffff81168114607257600080fd5b919050565b600080600060608486031215608b57600080fd5b609284604f565b9250609e60208501604f565b9150604084013590509250925092565b6000806040838503121560c057600080fd5b60c783604f565b94602093909301359350505056fea264697066735822122030897b9182745ece747096e1c7f0189a3bd1a5100c64f3521ecae28c265574a864736f6c63430008140033","sourceMap":"3856:213:111:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146044575b600080fd5b604260323660046077565b005b6042603236600460ae565b803573ffffffffffffffffffffffffffffffffffffffff81168114607257600080fd5b919050565b600080600060608486031215608b57600080fd5b609284604f565b9250609e60208501604f565b9150604084013590509250925092565b6000806040838503121560c057600080fd5b60c783604f565b94602093909301359350505056fea264697066735822122030897b9182745ece747096e1c7f0189a3bd1a5100c64f3521ecae28c265574a864736f6c63430008140033","sourceMap":"3856:213:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3979:88;;;;;;:::i;:::-;;3898:75;;;;;;:::i;14:196:127:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:328::-;292:6;300;308;361:2;349:9;340:7;336:23;332:32;329:52;;;377:1;374;367:12;329:52;400:29;419:9;400:29;:::i;:::-;390:39;;448:38;482:2;471:9;467:18;448:38;:::i;:::-;438:48;;533:2;522:9;518:18;505:32;495:42;;215:328;;;;;:::o;548:254::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;716:29;735:9;716:29;:::i;:::-;706:39;792:2;777:18;;;;764:32;;-1:-1:-1;;;548:254:127:o","linkReferences":{}},"methodIdentifiers":{"transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"ERC20RevertsWithoutMessage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transfer"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"ERC20RevertsWithoutMessage"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/TokenHelperTest.json b/abi/TokenHelper.t.sol/TokenHelperTest.json deleted file mode 100644 index f9a52a17..00000000 --- a/abi/TokenHelper.t.sol/TokenHelperTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_revert_TransferOnCustom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_TransferOnFalse","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_TransferOnNoCode","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_TransferOnRevertWithMessage","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_TransferOnRevertWithoutMessage","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_transferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_transferFromEmpty","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b50611d978061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806366d9a9a0116100b2578063ba414fa611610081578063e20c9f7111610066578063e20c9f7114610202578063f452d0f81461020a578063fd85cffe1461021257600080fd5b8063ba414fa6146101e2578063dd038936146101fa57600080fd5b806366d9a9a0146101a857806385226c81146101bd578063916a17c6146101d2578063b5508aa9146101da57600080fd5b80633e5e3c231161010957806353c7c7da116100ee57806353c7c7da146101905780635a3c2f1f146101985780635f792516146101a057600080fd5b80633e5e3c23146101805780633f7286f41461018857600080fd5b8063046088a21461013b5780630a9254e4146101455780631ed7831c1461014d5780632ade38801461016b575b600080fd5b61014361021a565b005b6101436103ef565b610155610452565b6040516101629190610f72565b60405180910390f35b6101736104b4565b604051610162919061100f565b6101556105f6565b610155610656565b6101436106b6565b61014361071c565b61014361072a565b6101b06107ab565b60405161016291906110cf565b6101c56108a6565b604051610162919061119a565b6101b0610976565b6101c5610a71565b6101ea610b41565b6040519015158152602001610162565b610143610bfc565b610155610d5d565b610143610dbd565b610143610dcb565b600060405161022890610f17565b604051809103906000f080158015610244573d6000803e3d6000fd5b50604051630618f58760e51b815263197138bd60e11b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b5050601c546040516311f9fbc960e21b81526001600160a01b0385811660048301526001602483015290911692506347e7ef249150604401600060405180830381600087803b15801561030257600080fd5b505af1158015610316573d6000803e3d6000fd5b5050604051630618f58760e51b815263197138bd60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b5050601c5460405163f3fef3a360e01b81526001600160a01b03858116600483015260016024830152909116925063f3fef3a39150604401600060405180830381600087803b1580156103d457600080fd5b505af11580156103e8573d6000803e3d6000fd5b5050505050565b6040516103fb90610f24565b604051809103906000f080158015610417573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606060148054806020026020016040519081016040528092919081815260200182805480156104aa57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161048c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105ed57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105d6578382906000526020600020018054610549906111fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906111fc565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b50505050508152602001906001019061052a565b5050505081525050815260200190600101906104d8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156104aa576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161048c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156104aa576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161048c575050505050905090565b60006040516106c490610f31565b604051809103906000f0801580156106e0573d6000803e3d6000fd5b50601c546040516311f9fbc960e21b81526001600160a01b038084166004830152600160248301529293509116906347e7ef2490604401610354565b600060405161022890610f3e565b600061076a6040518060400160405280600581526020017f546f6b656e000000000000000000000000000000000000000000000000000000815250610dd9565b604051630618f58760e51b815263197138bd60e11b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401610282565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105ed5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561088e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161083b5790505b505050505081525050815260200190600101906107cf565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105ed5783829060005260206000200180546108e9906111fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610915906111fc565b80156109625780601f1061093757610100808354040283529160200191610962565b820191906000526020600020905b81548152906001019060200180831161094557829003601f168201915b5050505050815260200190600101906108ca565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105ed5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610a5957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a065790505b5050505050815250508152602001906001019061099a565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105ed578382906000526020600020018054610ab4906111fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae0906111fc565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b505050505081526020019060010190610a95565b60075460009060ff1615610b59575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190611236565b1415905090565b6000604051610c0a90610f4b565b604051809103906000f080158015610c26573d6000803e3d6000fd5b5060408051808201825260048082526319985a5b60e21b6020830152915163f28dceb360e01b8152929350737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f28dceb392610c7892910161124f565b600060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b5050601c546040516311f9fbc960e21b81526001600160a01b0385811660048301526001602483015290911692506347e7ef249150604401600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505060408051808201825260048082526319985a5b60e21b6020830152915163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb39350610354920161124f565b606060138054806020026020016040519081016040528092919081815260200182805480156104aa576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161048c575050505050905090565b600060405161022890610f58565b60006040516106c490610f65565b6000610de482610deb565b5092915050565b60008082604051602001610dff9190611269565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea49190611285565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890610ee090859087906004016112ae565b600060405180830381600087803b158015610efa57600080fd5b505af1158015610f0e573d6000803e3d6000fd5b50505050915091565b61019d806112d983390190565b6102748061147683390190565b61014e806116ea83390190565b61014e8061183883390190565b61017d8061198683390190565b61012b80611b0383390190565b61013480611c2e83390190565b6020808252825182820181905260009190848201906040850190845b81811015610fb35783516001600160a01b031683529284019291840191600101610f8e565b50909695505050505050565b60005b83811015610fda578181015183820152602001610fc2565b50506000910152565b60008151808452610ffb816020860160208601610fbf565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156110bf57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156110a957605f19898503018352611097848651610fe3565b948e01949350918d019160010161107b565b505050978a019794505091880191600101611036565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561118b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156111765783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611134565b50978a019795505050918701916001016110f7565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111ef57603f198886030184526111dd858351610fe3565b945092850192908501906001016111c1565b5092979650505050505050565b600181811c9082168061121057607f821691505b60208210810361123057634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561124857600080fd5b5051919050565b6020815260006112626020830184610fe3565b9392505050565b6000825161127b818460208701610fbf565b9190910192915050565b60006020828403121561129757600080fd5b81516001600160a01b038116811461126257600080fd5b6001600160a01b03831681526040602082015260006112d06040830184610fe3565b94935050505056fe608060405234801561001057600080fd5b5061017d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610083575b600080fd5b6100716100493660046100e1565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def259392505050565b60405190815260200160405180910390f35b61007161009136600461011d565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def2592915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146100dc57600080fd5b919050565b6000806000606084860312156100f657600080fd5b6100ff846100b8565b925061010d602085016100b8565b9150604084013590509250925092565b6000806040838503121561013057600080fd5b610139836100b8565b94602093909301359350505056fea26469706673582212204909a1a97c39e9931cfce57b8503ea74b6ece2dab41410800763e364d89ac88b64736f6c63430008140033608060405234801561001057600080fd5b50610254806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806347e7ef241461003b578063f3fef3a314610050575b600080fd5b61004e6100493660046101e6565b610063565b005b61004e61005e3660046101e6565b61007c565b6100786001600160a01b038316333084610090565b5050565b6100786001600160a01b0383163383610105565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526100fe8582610171565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261016b8482610171565b50505050565b600080600052602060008351602085016000875af190508080156101b2573d80156101a557600160005114831692506101ac565b843b151592505b506101c2565b3d156101c2573d6000803e3d6000fd5b50806101e15760405163197138bd60e11b815260040160405180910390fd5b505050565b600080604083850312156101f957600080fd5b82356001600160a01b038116811461021057600080fd5b94602093909301359350505056fea2646970667358221220872f53c5a75f35eb495e701dfe5e9335ae772db6d41c0ea05dc8f6c00cfa110c64736f6c63430008140033608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60019392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea2646970667358221220954da6ebcb1533bfbf8384e867249438680ffd00baa3d0de6e74903e956d059964736f6c63430008140033608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60009392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea26469706673582212200934a6f51c8aa3af452e5975b3cae06708a049d1118391ef226f0b75877905d464736f6c63430008140033608060405234801561001057600080fd5b5061015d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610050575b600080fd5b61004e6100493660046100c1565b61005e565b005b61004e6100493660046100fd565b60405162461bcd60e51b815260040161008f9060208082526004908201526319985a5b60e21b604082015260600190565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146100bc57600080fd5b919050565b6000806000606084860312156100d657600080fd5b6100df84610098565b92506100ed60208501610098565b9150604084013590509250925092565b6000806040838503121561011057600080fd5b61011983610098565b94602093909301359350505056fea2646970667358221220a07ac434a0196a396226c3fa2969db1774f3f1c1dff96ff6b6d80413879115b464736f6c63430008140033608060405234801561001057600080fd5b5061010b806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146044575b600080fd5b604260323660046077565b005b6042603236600460ae565b803573ffffffffffffffffffffffffffffffffffffffff81168114607257600080fd5b919050565b600080600060608486031215608b57600080fd5b609284604f565b9250609e60208501604f565b9150604084013590509250925092565b6000806040838503121560c057600080fd5b60c783604f565b94602093909301359350505056fea264697066735822122030897b9182745ece747096e1c7f0189a3bd1a5100c64f3521ecae28c265574a864736f6c63430008140033608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146049575b600080fd5b604760423660046080565b505050565b005b6047605436600460b7565b5050565b803573ffffffffffffffffffffffffffffffffffffffff81168114607b57600080fd5b919050565b600080600060608486031215609457600080fd5b609b846058565b925060a7602085016058565b9150604084013590509250925092565b6000806040838503121560c957600080fd5b60d0836058565b94602093909301359350505056fea26469706673582212204607fb44e74e1eebef823e9728d7e622be223580e38859290b930d2b06af445b64736f6c63430008140033a2646970667358221220474cb50df07637a1cbb01b41dcb4d153dcc4b26e0f231829ad2f7c452075d6a864736f6c63430008140033","sourceMap":"136:2267:111:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;136:2267:111;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101365760003560e01c806366d9a9a0116100b2578063ba414fa611610081578063e20c9f7111610066578063e20c9f7114610202578063f452d0f81461020a578063fd85cffe1461021257600080fd5b8063ba414fa6146101e2578063dd038936146101fa57600080fd5b806366d9a9a0146101a857806385226c81146101bd578063916a17c6146101d2578063b5508aa9146101da57600080fd5b80633e5e3c231161010957806353c7c7da116100ee57806353c7c7da146101905780635a3c2f1f146101985780635f792516146101a057600080fd5b80633e5e3c23146101805780633f7286f41461018857600080fd5b8063046088a21461013b5780630a9254e4146101455780631ed7831c1461014d5780632ade38801461016b575b600080fd5b61014361021a565b005b6101436103ef565b610155610452565b6040516101629190610f72565b60405180910390f35b6101736104b4565b604051610162919061100f565b6101556105f6565b610155610656565b6101436106b6565b61014361071c565b61014361072a565b6101b06107ab565b60405161016291906110cf565b6101c56108a6565b604051610162919061119a565b6101b0610976565b6101c5610a71565b6101ea610b41565b6040519015158152602001610162565b610143610bfc565b610155610d5d565b610143610dbd565b610143610dcb565b600060405161022890610f17565b604051809103906000f080158015610244573d6000803e3d6000fd5b50604051630618f58760e51b815263197138bd60e11b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b5050601c546040516311f9fbc960e21b81526001600160a01b0385811660048301526001602483015290911692506347e7ef249150604401600060405180830381600087803b15801561030257600080fd5b505af1158015610316573d6000803e3d6000fd5b5050604051630618f58760e51b815263197138bd60e11b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b5050601c5460405163f3fef3a360e01b81526001600160a01b03858116600483015260016024830152909116925063f3fef3a39150604401600060405180830381600087803b1580156103d457600080fd5b505af11580156103e8573d6000803e3d6000fd5b5050505050565b6040516103fb90610f24565b604051809103906000f080158015610417573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606060148054806020026020016040519081016040528092919081815260200182805480156104aa57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161048c575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156105ed57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156105d6578382906000526020600020018054610549906111fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610575906111fc565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b50505050508152602001906001019061052a565b5050505081525050815260200190600101906104d8565b50505050905090565b606060168054806020026020016040519081016040528092919081815260200182805480156104aa576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161048c575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156104aa576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161048c575050505050905090565b60006040516106c490610f31565b604051809103906000f0801580156106e0573d6000803e3d6000fd5b50601c546040516311f9fbc960e21b81526001600160a01b038084166004830152600160248301529293509116906347e7ef2490604401610354565b600060405161022890610f3e565b600061076a6040518060400160405280600581526020017f546f6b656e000000000000000000000000000000000000000000000000000000815250610dd9565b604051630618f58760e51b815263197138bd60e11b6004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401610282565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156105ed5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561088e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161083b5790505b505050505081525050815260200190600101906107cf565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156105ed5783829060005260206000200180546108e9906111fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610915906111fc565b80156109625780601f1061093757610100808354040283529160200191610962565b820191906000526020600020905b81548152906001019060200180831161094557829003601f168201915b5050505050815260200190600101906108ca565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156105ed5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610a5957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a065790505b5050505050815250508152602001906001019061099a565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156105ed578382906000526020600020018054610ab4906111fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae0906111fc565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b505050505081526020019060010190610a95565b60075460009060ff1615610b59575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190611236565b1415905090565b6000604051610c0a90610f4b565b604051809103906000f080158015610c26573d6000803e3d6000fd5b5060408051808201825260048082526319985a5b60e21b6020830152915163f28dceb360e01b8152929350737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f28dceb392610c7892910161124f565b600060405180830381600087803b158015610c9257600080fd5b505af1158015610ca6573d6000803e3d6000fd5b5050601c546040516311f9fbc960e21b81526001600160a01b0385811660048301526001602483015290911692506347e7ef249150604401600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505060408051808201825260048082526319985a5b60e21b6020830152915163f28dceb360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb39350610354920161124f565b606060138054806020026020016040519081016040528092919081815260200182805480156104aa576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161048c575050505050905090565b600060405161022890610f58565b60006040516106c490610f65565b6000610de482610deb565b5092915050565b60008082604051602001610dff9190611269565b60408051808303601f190181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea49190611285565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890610ee090859087906004016112ae565b600060405180830381600087803b158015610efa57600080fd5b505af1158015610f0e573d6000803e3d6000fd5b50505050915091565b61019d806112d983390190565b6102748061147683390190565b61014e806116ea83390190565b61014e8061183883390190565b61017d8061198683390190565b61012b80611b0383390190565b61013480611c2e83390190565b6020808252825182820181905260009190848201906040850190845b81811015610fb35783516001600160a01b031683529284019291840191600101610f8e565b50909695505050505050565b60005b83811015610fda578181015183820152602001610fc2565b50506000910152565b60008151808452610ffb816020860160208601610fbf565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156110bf57603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156110a957605f19898503018352611097848651610fe3565b948e01949350918d019160010161107b565b505050978a019794505091880191600101611036565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561118b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156111765783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611134565b50978a019795505050918701916001016110f7565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111ef57603f198886030184526111dd858351610fe3565b945092850192908501906001016111c1565b5092979650505050505050565b600181811c9082168061121057607f821691505b60208210810361123057634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561124857600080fd5b5051919050565b6020815260006112626020830184610fe3565b9392505050565b6000825161127b818460208701610fbf565b9190910192915050565b60006020828403121561129757600080fd5b81516001600160a01b038116811461126257600080fd5b6001600160a01b03831681526040602082015260006112d06040830184610fe3565b94935050505056fe608060405234801561001057600080fd5b5061017d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610083575b600080fd5b6100716100493660046100e1565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def259392505050565b60405190815260200160405180910390f35b61007161009136600461011d565b7f3b2564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def2592915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146100dc57600080fd5b919050565b6000806000606084860312156100f657600080fd5b6100ff846100b8565b925061010d602085016100b8565b9150604084013590509250925092565b6000806040838503121561013057600080fd5b610139836100b8565b94602093909301359350505056fea26469706673582212204909a1a97c39e9931cfce57b8503ea74b6ece2dab41410800763e364d89ac88b64736f6c63430008140033608060405234801561001057600080fd5b50610254806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806347e7ef241461003b578063f3fef3a314610050575b600080fd5b61004e6100493660046101e6565b610063565b005b61004e61005e3660046101e6565b61007c565b6100786001600160a01b038316333084610090565b5050565b6100786001600160a01b0383163383610105565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526100fe8582610171565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261016b8482610171565b50505050565b600080600052602060008351602085016000875af190508080156101b2573d80156101a557600160005114831692506101ac565b843b151592505b506101c2565b3d156101c2573d6000803e3d6000fd5b50806101e15760405163197138bd60e11b815260040160405180910390fd5b505050565b600080604083850312156101f957600080fd5b82356001600160a01b038116811461021057600080fd5b94602093909301359350505056fea2646970667358221220872f53c5a75f35eb495e701dfe5e9335ae772db6d41c0ea05dc8f6c00cfa110c64736f6c63430008140033608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60019392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea2646970667358221220954da6ebcb1533bfbf8384e867249438680ffd00baa3d0de6e74903e956d059964736f6c63430008140033608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb14605f575b600080fd5b604b6042366004609a565b60009392505050565b604051901515815260200160405180910390f35b604b606a36600460d1565b600092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114609557600080fd5b919050565b60008060006060848603121560ae57600080fd5b60b5846072565b925060c1602085016072565b9150604084013590509250925092565b6000806040838503121560e357600080fd5b60ea836072565b94602093909301359350505056fea26469706673582212200934a6f51c8aa3af452e5975b3cae06708a049d1118391ef226f0b75877905d464736f6c63430008140033608060405234801561001057600080fd5b5061015d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb14610050575b600080fd5b61004e6100493660046100c1565b61005e565b005b61004e6100493660046100fd565b60405162461bcd60e51b815260040161008f9060208082526004908201526319985a5b60e21b604082015260600190565b60405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146100bc57600080fd5b919050565b6000806000606084860312156100d657600080fd5b6100df84610098565b92506100ed60208501610098565b9150604084013590509250925092565b6000806040838503121561011057600080fd5b61011983610098565b94602093909301359350505056fea2646970667358221220a07ac434a0196a396226c3fa2969db1774f3f1c1dff96ff6b6d80413879115b464736f6c63430008140033608060405234801561001057600080fd5b5061010b806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146044575b600080fd5b604260323660046077565b005b6042603236600460ae565b803573ffffffffffffffffffffffffffffffffffffffff81168114607257600080fd5b919050565b600080600060608486031215608b57600080fd5b609284604f565b9250609e60208501604f565b9150604084013590509250925092565b6000806040838503121560c057600080fd5b60c783604f565b94602093909301359350505056fea264697066735822122030897b9182745ece747096e1c7f0189a3bd1a5100c64f3521ecae28c265574a864736f6c63430008140033608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806323b872dd146037578063a9059cbb146049575b600080fd5b604760423660046080565b505050565b005b6047605436600460b7565b5050565b803573ffffffffffffffffffffffffffffffffffffffff81168114607b57600080fd5b919050565b600080600060608486031215609457600080fd5b609b846058565b925060a7602085016058565b9150604084013590509250925092565b6000806040838503121560c957600080fd5b60d0836058565b94602093909301359350505056fea26469706673582212204607fb44e74e1eebef823e9728d7e622be223580e38859290b930d2b06af445b64736f6c63430008140033a2646970667358221220474cb50df07637a1cbb01b41dcb4d153dcc4b26e0f231829ad2f7c452075d6a864736f6c63430008140033","sourceMap":"136:2267:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:348;;;:::i;:::-;;228:60;;;:::i;2452:134:5:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;294:187:111:-;;;:::i;687:346::-;;;:::i;2069:332::-;;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5569:14:127;;5562:22;5544:41;;5532:2;5517:18;1243:204:1;5404:187:127;1393:294:111;;;:::i;2304:142:5:-;;;:::i;1693:370:111:-;;;:::i;487:194::-;;;:::i;1039:348::-;1096:15;1129:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1166:65:111;;-1:-1:-1;;;1166:65:111;;-1:-1:-1;;;1166:65:111;;;5740:52:127;1096:59:111;;-1:-1:-1;1166:15:111;;;;5713:18:127;;1166:65:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1241:5:111;;:26;;-1:-1:-1;;;1241:26:111;;-1:-1:-1;;;;;6019:55:127;;;1241:26:111;;;6001:74:127;1241:5:111;6091:18:127;;;6084:34;1241:5:111;;;;-1:-1:-1;1241:13:111;;-1:-1:-1;5974:18:127;;1241:26:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1278:65:111;;-1:-1:-1;;;1278:65:111;;-1:-1:-1;;;1278:65:111;;;5740:52:127;1278:15:111;;-1:-1:-1;1278:15:111;;-1:-1:-1;5713:18:127;;1278:65:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1353:5:111;;:27;;-1:-1:-1;;;1353:27:111;;-1:-1:-1;;;;;6019:55:127;;;1353:27:111;;;6001:74:127;1353:5:111;6091:18:127;;;6084:34;1353:5:111;;;;-1:-1:-1;1353:14:111;;-1:-1:-1;5974:18:127;;1353:27:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:301;1039:348::o;228:60::-;270:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;262:5:111;:19;;;;-1:-1:-1;;;;;262:19:111;;;;;;;;;;228:60::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;294:187:111:-;340:16;374:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;408:5:111;;:27;;-1:-1:-1;;;408:27:111;;-1:-1:-1;;;;;6019:55:127;;;408:27:111;;;6001:74:127;408:5:111;6091:18:127;;;6084:34;340:57:111;;-1:-1:-1;408:5:111;;;:13;;5974:18:127;;408:27:111;5803:321:127;687:346:111;743:15;776:23;;;;;:::i;2069:332::-;2126:15;2151:17;;;;;;;;;;;;;;;;;;:8;:17::i;:::-;2180:65;;-1:-1:-1;;;2180:65:111;;-1:-1:-1;;;2180:65:111;;;5740:52:127;2126:43:111;;-1:-1:-1;2180:15:111;;;;5713:18:127;;2180:65:111;5596:202:127;2738:178:5;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;6001:74:127;;;1398:17:1;6091:18:127;;;6084:34;1428:1:1;;1377:7;;5974:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;1393:294:111:-;1461:15;1494:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1552:13:111;;;;;;;;;;;;-1:-1:-1;;;1552:13:111;;;;1536:30;;-1:-1:-1;;;1536:30:111;;1461:64;;-1:-1:-1;1536:15:111;;;;:30;;1552:13;1536:30;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1576:5:111;;:26;;-1:-1:-1;;;1576:26:111;;-1:-1:-1;;;;;6019:55:127;;;1576:26:111;;;6001:74:127;1576:5:111;6091:18:127;;;6084:34;1576:5:111;;;;-1:-1:-1;1576:13:111;;-1:-1:-1;5974:18:127;;1576:26:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1629:13:111;;;;;;;;;;;;-1:-1:-1;;;1629:13:111;;;;1613:30;;-1:-1:-1;;;1613:30:111;;:15;;-1:-1:-1;1613:15:111;;-1:-1:-1;1613:30:111;;;;:::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1693:370:111:-;1764:15;1797:32;;;;;:::i;487:194::-;538:16;572:23;;;;;:::i;20439:125:3:-;20503:12;20537:20;20552:4;20537:14;:20::i;:::-;-1:-1:-1;20527:30:3;20439:125;-1:-1:-1;;20439:125:3:o;20158:242::-;20228:12;20242:18;20320:4;20303:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20303:22:3;;;;;;;20293:33;;20303:22;20293:33;;;;20344:19;;;;;;7668:25:127;;;20293:33:3;-1:-1:-1;20344:7:3;;;;7641:18:127;;20344:19:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20373:20;;-1:-1:-1;;;20373:20:3;;20337:26;;-1:-1:-1;20373:8:3;;;;:20;;20337:26;;20388:4;;20373:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20158:242;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:250::-;785:1;795:113;809:6;806:1;803:13;795:113;;;885:11;;;879:18;866:11;;;859:39;831:2;824:10;795:113;;;-1:-1:-1;;942:1:127;924:16;;917:27;700:250::o;955:271::-;997:3;1035:5;1029:12;1062:6;1057:3;1050:19;1078:76;1147:6;1140:4;1135:3;1131:14;1124:4;1117:5;1113:16;1078:76;:::i;:::-;1208:2;1187:15;-1:-1:-1;;1183:29:127;1174:39;;;;1215:4;1170:50;;955:271;-1:-1:-1;;955:271:127:o;1231:1765::-;1464:2;1516:21;;;1586:13;;1489:18;;;1608:22;;;1435:4;;1464:2;1649;;1667:18;;;;1704:1;1747:15;;;1732:31;;1728:40;;1791:15;;;1435:4;;1855:1112;1871:6;1866:3;1863:15;1855:1112;;;-1:-1:-1;;1940:22:127;;;1936:36;1924:49;;1996:13;;2083:9;;-1:-1:-1;;;;;2079:58:127;2064:74;;2177:11;;2171:18;2209:15;;;2202:27;;;2290:19;;2036:15;;;2322:24;;;2503:21;;;;2369:2;2451:17;;;2439:30;;2435:39;;;2393:15;;;;2548:1;2562:296;2578:8;2573:3;2570:17;2562:296;;;2684:2;2680:7;2671:6;2663;2659:19;2655:33;2648:5;2641:48;2716:42;2751:6;2740:8;2734:15;2716:42;:::i;:::-;2787:17;;;;2706:52;-1:-1:-1;2830:14:127;;;;2606:1;2597:11;2562:296;;;-1:-1:-1;;;2945:12:127;;;;2881:6;-1:-1:-1;;2910:15:127;;;;1897:1;1888:11;1855:1112;;;-1:-1:-1;2984:6:127;;1231:1765;-1:-1:-1;;;;;;;;;;1231:1765:127:o;3001:1590::-;3203:4;3232:2;3272;3261:9;3257:18;3302:2;3291:9;3284:21;3325:6;3360;3354:13;3391:6;3383;3376:22;3417:2;3407:12;;3450:2;3439:9;3435:18;3428:25;;3512:2;3502:6;3499:1;3495:14;3484:9;3480:30;3476:39;3550:2;3542:6;3538:15;3571:1;3592;3602:960;3618:6;3613:3;3610:15;3602:960;;;3687:22;;;-1:-1:-1;;3683:36:127;3671:49;;3743:13;;3830:9;;-1:-1:-1;;;;;3826:58:127;3811:74;;3924:11;;3918:18;3956:15;;;3949:27;;;4037:19;;3783:15;;;4069:24;;;4159:21;;;;4204:1;;4127:2;4115:15;;;4218:236;4234:8;4229:3;4226:17;4218:236;;;4315:15;;4332:20;4311:42;4297:57;;4423:17;;;;4262:1;4253:11;;;;;4380:14;;;;4218:236;;;-1:-1:-1;4540:12:127;;;;4477:5;-1:-1:-1;;;4505:15:127;;;;3644:1;3635:11;3602:960;;;-1:-1:-1;4579:6:127;;3001:1590;-1:-1:-1;;;;;;;;;3001:1590:127:o;4596:803::-;4758:4;4787:2;4827;4816:9;4812:18;4857:2;4846:9;4839:21;4880:6;4915;4909:13;4946:6;4938;4931:22;4984:2;4973:9;4969:18;4962:25;;5046:2;5036:6;5033:1;5029:14;5018:9;5014:30;5010:39;4996:53;;5084:2;5076:6;5072:15;5105:1;5115:255;5129:6;5126:1;5123:13;5115:255;;;5222:2;5218:7;5206:9;5198:6;5194:22;5190:36;5185:3;5178:49;5250:40;5283:6;5274;5268:13;5250:40;:::i;:::-;5240:50;-1:-1:-1;5348:12:127;;;;5313:15;;;;5151:1;5144:9;5115:255;;;-1:-1:-1;5387:6:127;;4596:803;-1:-1:-1;;;;;;;4596:803:127:o;6129:380::-;6208:1;6204:12;;;;6251;;;6272:61;;6326:4;6318:6;6314:17;6304:27;;6272:61;6379:2;6371:6;6368:14;6348:18;6345:38;6342:161;;6425:10;6420:3;6416:20;6413:1;6406:31;6460:4;6457:1;6450:15;6488:4;6485:1;6478:15;6342:161;;6129:380;;;:::o;6816:184::-;6886:6;6939:2;6927:9;6918:7;6914:23;6910:32;6907:52;;;6955:1;6952;6945:12;6907:52;-1:-1:-1;6978:16:127;;6816:184;-1:-1:-1;6816:184:127:o;7005:218::-;7152:2;7141:9;7134:21;7115:4;7172:45;7213:2;7202:9;7198:18;7190:6;7172:45;:::i;:::-;7164:53;7005:218;-1:-1:-1;;;7005:218:127:o;7228:289::-;7359:3;7397:6;7391:13;7413:66;7472:6;7467:3;7460:4;7452:6;7448:17;7413:66;:::i;:::-;7495:16;;;;;7228:289;-1:-1:-1;;7228:289:127:o;7704:313::-;7774:6;7827:2;7815:9;7806:7;7802:23;7798:32;7795:52;;;7843:1;7840;7833:12;7795:52;7875:9;7869:16;-1:-1:-1;;;;;7918:5:127;7914:54;7907:5;7904:65;7894:93;;7983:1;7980;7973:12;8022:340;-1:-1:-1;;;;;8203:6:127;8199:55;8188:9;8181:74;8291:2;8286;8275:9;8271:18;8264:30;8162:4;8311:45;8352:2;8341:9;8337:18;8329:6;8311:45;:::i;:::-;8303:53;8022:340;-1:-1:-1;;;;8022:340:127:o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_revert_TransferOnCustom()":"046088a2","test_revert_TransferOnFalse()":"5a3c2f1f","test_revert_TransferOnNoCode()":"5f792516","test_revert_TransferOnRevertWithMessage()":"dd038936","test_revert_TransferOnRevertWithoutMessage()":"f452d0f8","test_transferFrom()":"53c7c7da","test_transferFromEmpty()":"fd85cffe"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_TransferOnCustom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_TransferOnFalse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_TransferOnNoCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_TransferOnRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_revert_TransferOnRevertWithoutMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_transferFromEmpty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"TokenHelperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_TransferOnCustom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_TransferOnFalse"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_TransferOnNoCode"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_TransferOnRevertWithMessage"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_revert_TransferOnRevertWithoutMessage"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_transferFrom"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_transferFromEmpty"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"TokenHelperTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TokenHelper.t.sol/Vault.json b/abi/TokenHelper.t.sol/Vault.json deleted file mode 100644 index 87297ffc..00000000 --- a/abi/TokenHelper.t.sol/Vault.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"deposit","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"TokenHelper__TransferFailed","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610254806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806347e7ef241461003b578063f3fef3a314610050575b600080fd5b61004e6100493660046101e6565b610063565b005b61004e61005e3660046101e6565b61007c565b6100786001600160a01b038316333084610090565b5050565b6100786001600160a01b0383163383610105565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526100fe8582610171565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261016b8482610171565b50505050565b600080600052602060008351602085016000875af190508080156101b2573d80156101a557600160005114831692506101ac565b843b151592505b506101c2565b3d156101c2573d6000803e3d6000fd5b50806101e15760405163197138bd60e11b815260040160405180910390fd5b505050565b600080604083850312156101f957600080fd5b82356001600160a01b038116811461021057600080fd5b94602093909301359350505056fea2646970667358221220872f53c5a75f35eb495e701dfe5e9335ae772db6d41c0ea05dc8f6c00cfa110c64736f6c63430008140033","sourceMap":"2405:306:111:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806347e7ef241461003b578063f3fef3a314610050575b600080fd5b61004e6100493660046101e6565b610063565b005b61004e61005e3660046101e6565b61007c565b6100786001600160a01b038316333084610090565b5050565b6100786001600160a01b0383163383610105565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526100fe8582610171565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261016b8482610171565b50505050565b600080600052602060008351602085016000875af190508080156101b2573d80156101a557600160005114831692506101ac565b843b151592505b506101c2565b3d156101c2573d6000803e3d6000fd5b50806101e15760405163197138bd60e11b815260040160405180910390fd5b505050565b600080604083850312156101f957600080fd5b82356001600160a01b038116811461021057600080fd5b94602093909301359350505056fea2646970667358221220872f53c5a75f35eb495e701dfe5e9335ae772db6d41c0ea05dc8f6c00cfa110c64736f6c63430008140033","sourceMap":"2405:306:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2461:130;;;;;;:::i;:::-;;:::i;:::-;;2597:112;;;;;;:::i;:::-;;:::i;2461:130::-;2527:57;-1:-1:-1;;;;;2527:22:111;;2550:10;2570:4;2577:6;2527:22;:57::i;:::-;2461:130;;:::o;2597:112::-;2664:38;-1:-1:-1;;;;;2664:18:111;;2683:10;2695:6;2664:18;:38::i;972:250:74:-;1101:77;;;-1:-1:-1;;;;;693:15:127;;;1101:77:74;;;675:34:127;745:15;;725:18;;;718:43;777:18;;;;770:34;;;1101:77:74;;;;;;;;;;587:18:127;;;;1101:77:74;;;;;;;;;;-1:-1:-1;;;1101:77:74;;;1189:26;1203:5;1101:77;1189:13;:26::i;:::-;1071:151;972:250;;;;:::o;1447:220::-;1557:66;;;-1:-1:-1;;;;;1007:55:127;;1557:66:74;;;989:74:127;1079:18;;;;1072:34;;;1557:66:74;;;;;;;;;;962:18:127;;;;1557:66:74;;;;;;;;;;-1:-1:-1;;;1557:66:74;;;1634:26;1648:5;1557:66;1634:13;:26::i;:::-;1527:140;1447:220;;;:::o;1673:757::-;1748:12;1807:1;1801:4;1794:15;1892:4;1886;1879;1873:11;1866:4;1860;1856:15;1853:1;1846:5;1839;1834:63;1823:74;-1:-1:-1;1823:74:74;1938:194;;;;2178:16;2211:56;;;;2334:1;2327:4;2321:11;2318:18;2309:7;2305:32;2294:43;;2171:168;;2211:56;2257:5;2245:18;2238:26;2231:34;2220:45;;2171:168;;1911:442;;1938:194;1966:16;1963:155;;;2032:16;2026:4;2020;2005:44;2083:16;2077:4;2070:30;1963:155;1911:442;2378:7;2373:50;;2394:29;;-1:-1:-1;;;2394:29:74;;;;;;;;;;;2373:50;1738:692;1673:757;;:::o;14:393:127:-;98:6;106;159:2;147:9;138:7;134:23;130:32;127:52;;;175:1;172;165:12;127:52;214:9;201:23;-1:-1:-1;;;;;257:5:127;253:54;246:5;243:65;233:93;;322:1;319;312:12;233:93;345:5;397:2;382:18;;;;369:32;;-1:-1:-1;;;14:393:127:o","linkReferences":{}},"methodIdentifiers":{"deposit(address,uint256)":"47e7ef24","withdraw(address,uint256)":"f3fef3a3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"TokenHelper__TransferFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/TokenHelper.t.sol\":\"Vault\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"test/libraries/TokenHelper.t.sol\":{\"keccak256\":\"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69\",\"dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"TokenHelper__TransferFailed"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/TokenHelper.t.sol":"Vault"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"src/libraries/TokenHelper.sol":{"keccak256":"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154","urls":["bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8","dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu"],"license":"MIT"},"test/libraries/TokenHelper.t.sol":{"keccak256":"0x5aee9497eb51714a274cbc0176fd45256970474644c1a04f4a186d7c62cf2dac","urls":["bzz-raw://47d2397085f0b4010313e4e718281175b455b4f22e135684bb860812cd10df69","dweb:/ipfs/QmNYhUi78W6T6uvDsWnVav6Dbs8tkKvq3FbgQJtTB2h6bJ"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file diff --git a/abi/TreeMath.sol/TreeMath.json b/abi/TreeMath.sol/TreeMath.json deleted file mode 100644 index 884c8482..00000000 --- a/abi/TreeMath.sol/TreeMath.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053dfca7fa6a4263c2476297e4c4474f1409d95fdfd527e63238c71a503ee08d564736f6c63430008140033","sourceMap":"260:7341:81:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;260:7341:81;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053dfca7fa6a4263c2476297e4c4474f1409d95fdfd527e63238c71a503ee08d564736f6c63430008140033","sourceMap":"260:7341:81:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Tree Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to interact with a tree of TreeUint24.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/TreeMath.sol\":\"TreeMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/TreeMath.sol":"TreeMath"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file diff --git a/abi/TreeMath.t.sol/TreeMathTest.json b/abi/TreeMath.t.sol/TreeMathTest.json deleted file mode 100644 index 0f183c28..00000000 --- a/abi/TreeMath.t.sol/TreeMathTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_AddAndRemove","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_AddToTree","inputs":[{"name":"ids","type":"uint24[]","internalType":"uint24[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_FindFirst","inputs":[{"name":"ids","type":"uint24[]","internalType":"uint24[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_RemoveFromTree","inputs":[{"name":"ids","type":"uint24[]","internalType":"uint24[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_RemoveLogicAndSearchLeft","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_RemoveLogicAndSearchRight","inputs":[{"name":"id","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_FindFirst","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_FindFirstFar","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b506121808061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80638b3d7f56116100b2578063ba414fa611610081578063c35cb58611610066578063c35cb5861461022e578063dcec1ab014610241578063e20c9f711461025457600080fd5b8063ba414fa614610203578063bd049f3e1461021b57600080fd5b80638b3d7f56146101d8578063916a17c6146101eb578063af2365b5146101f3578063b5508aa9146101fb57600080fd5b80633e5e3c23116101095780634d166abf116100ee5780634d166abf1461019b57806366d9a9a0146101ae57806385226c81146101c357600080fd5b80633e5e3c231461018b5780633f7286f41461019357600080fd5b806309f3f9701461013b5780631ed7831c146101505780632ade38801461016e5780633b3d9eca14610183575b600080fd5b61014e610149366004611c7c565b61025c565b005b610158610383565b6040516101659190611ca1565b60405180910390f35b6101766103e5565b6040516101659190611d34565b61014e610527565b61015861073a565b61015861079a565b61014e6101a9366004611df4565b6107fa565b6101b661097b565b6040516101659190611e69565b6101cb610a76565b6040516101659190611f34565b61014e6101e6366004611c7c565b610b46565b6101b6610c56565b61014e610d51565b6101cb610e15565b61020b610ee5565b6040519015158152602001610165565b61014e610229366004611df4565b610fa0565b61014e61023c366004611c7c565b611219565b61014e61024f366004611df4565b6114e1565b6101586115c2565b604051632631f2b160e11b815262ffffff821615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156102ad57600080fd5b505afa1580156102c1573d6000803e3d6000fd5b505050506102d981601c61162290919063ffffffff16565b506102f06102e8600183611fac565b601c90611622565b506103326102ff601c836116bf565b62ffffff1661030f600184611fac565b62ffffff1660405180606001604052806025815260200161212660259139611807565b610348610340600183611fac565b601c90611877565b50610380610357601c836116bf565b62ffffff1662ffffff801660405180606001604052806025815260200161210160259139611807565b50565b606060148054806020026020016040519081016040528092919081815260200182805480156103db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103bd575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561051e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561050757838290600052602060002001805461047a90611fcf565b80601f01602080910402602001604051908101604052809291908181526020018280546104a690611fcf565b80156104f35780601f106104c8576101008083540402835291602001916104f3565b820191906000526020600020905b8154815290600101906020018083116104d657829003601f168201915b50505050508152602001906001019061045b565b505050508152505081526020019060010190610409565b50505050905090565b610533601c6000611622565b50610540601c6001611622565b5061054d601c6002611622565b5061059f61055d601c60026116bf565b62ffffff1660016040518060400160405280601181526020017f746573745f46696e6446697273743a3a31000000000000000000000000000000815250611807565b6105f06105ae601c60016116bf565b62ffffff1660006040518060400160405280601181526020017f746573745f46696e6446697273743a3a32000000000000000000000000000000815250611807565b6106416105ff601c600061190b565b62ffffff1660016040518060400160405280601181526020017f746573745f46696e6446697273743a3a33000000000000000000000000000000815250611807565b610692610650601c600161190b565b62ffffff1660026040518060400160405280601181526020017f746573745f46696e6446697273743a3a34000000000000000000000000000000815250611807565b6106e76106a1601c60006116bf565b62ffffff1662ffffff80166040518060400160405280601181526020017f746573745f46696e6446697273743a3a35000000000000000000000000000000815250611807565b6107386106f6601c600261190b565b62ffffff1660006040518060400160405280601181526020017f746573745f46696e6446697273743a3a36000000000000000000000000000000815250611807565b565b606060168054806020026020016040519081016040528092919081815260200182805480156103db576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103bd575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156103db576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103bd575050505050905090565b60005b818110156108425761082f83838381811061081a5761081a612009565b90506020020160208101906102e89190611c7c565b508061083a8161201f565b9150506107fd565b5060005b818110156109765760006108a384848481811061086557610865612009565b905060200201602081019061087a9190611c7c565b600881901c61ffff166000908152601e6020526040902054600160ff9092169190911b16151590565b905061090e6108d28585858181106108bd576108bd612009565b90506020020160208101906103409190611c7c565b826040518060400160405280601a81526020017f7465737446757a7a5f52656d6f766546726f6d547265653a3a31000000000000815250611a3f565b61096361092685858581811061086557610865612009565b60006040518060400160405280601a81526020017f7465737446757a7a5f52656d6f766546726f6d547265653a3a32000000000000815250611a3f565b508061096e8161201f565b915050610846565b505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561051e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610a5e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a0b5790505b5050505050815250508152602001906001019061099f565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561051e578382906000526020600020018054610ab990611fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae590611fcf565b8015610b325780601f10610b0757610100808354040283529160200191610b32565b820191906000526020600020905b815481529060010190602001808311610b1557829003601f168201915b505050505081526020019060010190610a9a565b604051632631f2b160e11b815262ffffff828116106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015610b9757600080fd5b505afa158015610bab573d6000803e3d6000fd5b50505050610bc381601c61162290919063ffffffff16565b50610bd26102e8826001612038565b50610c14610be1601c8361190b565b62ffffff16610bf1836001612038565b62ffffff166040518060600160405280602481526020016120b960249139611807565b610c22610340826001612038565b50610380610c31601c8361190b565b62ffffff1660006040518060600160405280602481526020016120dd60249139611807565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561051e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610d3957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610ce65790505b50505050508152505081526020019060010190610c7a565b610d5d601c6000611622565b50610d6c601c62ffffff611622565b50610dc0610d7e601c62ffffff6116bf565b62ffffff1660006040518060400160405280601481526020017f746573745f46696e6446697273744661723a3a31000000000000000000000000815250611807565b610738610dcf601c600061190b565b62ffffff1662ffffff80166040518060400160405280601481526020017f746573745f46696e6446697273744661723a3a32000000000000000000000000815250611807565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561051e578382906000526020600020018054610e5890611fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8490611fcf565b8015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b505050505081526020019060010190610e39565b60075460009060ff1615610efd575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f999190612054565b1415905090565b604051632631f2b160e11b81528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015610fec57600080fd5b505afa158015611000573d6000803e3d6000fd5b5050505060005b818110156110375761102483838381811061081a5761081a612009565b508061102f8161201f565b915050611007565b5060005b8181101561097657600083838381811061105757611057612009565b905060200201602081019061106c9190611c7c565b9050600061107b601c836116bf565b9050600061108a601c8461190b565b905062ffffff8281161461114857600882901c61ffff166000908152601e60205260409020546110fb90600160ff85161b16151560016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a310000000000000000000000815250611a3f565b6111488362ffffff168362ffffff161060016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a320000000000000000000000815250611a3f565b62ffffff81161561120357600881901c61ffff166000908152601e60205260409020546111b690600160ff84161b16151560016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a330000000000000000000000815250611a3f565b6112038362ffffff168262ffffff161160016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a340000000000000000000000815250611a3f565b50505080806112119061201f565b91505061103b565b611224601c82611622565b50600881901c61ffff166000908152601e602052604090205461128890600160ff84161b16151560016040518060400160405280601881526020017f7465737446757a7a5f416464416e6452656d6f76653a3a310000000000000000815250611a3f565b601c5460408051808201909152601881527f7465737446757a7a5f416464416e6452656d6f76653a3a32000000000000000060208201526112cc9190600090611a7a565b60ff601082901c166000908152601d60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a330000000000000000928201929092526113249290611a7a565b61ffff600882901c166000908152601e60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a3400000000000000009282019290925261137d9290611a7a565b611388601c82611877565b50600881901c61ffff166000908152601e60205260409020546113ec90600160ff84161b16151560006040518060400160405280601881526020017f7465737446757a7a5f416464416e6452656d6f76653a3a350000000000000000815250611a3f565b601c5460408051808201909152601881527f7465737446757a7a5f416464416e6452656d6f76653a3a36000000000000000060208201526114309190600090611807565b60ff601082901c166000908152601d60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a370000000000000000928201929092526114889290611807565b61ffff600882901c166000908152601e60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a380000000000000000928201929092526103809290611807565b60005b8181101561097657600061150384848481811061086557610865612009565b905061155a61151d85858581811061081a5761081a612009565b82156040518060400160405280601581526020017f7465737446757a7a5f416464546f547265653a3a310000000000000000000000815250611a3f565b6115af61157285858581811061086557610865612009565b60016040518060400160405280601581526020017f7465737446757a7a5f416464546f547265653a3a320000000000000000000000815250611a3f565b50806115ba8161201f565b9150506114e4565b606060138054806020026020016040519081016040528092919081815260200182805480156103db576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103bd575050505050905090565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b81178082146116b157600083815260028701602052604081208290558290036116a557600883901c6000818152600180890160205260408220805460ff88169290921b8217905593508390036116a3578654600160ff83161b1787555b505b600193505050506116b9565b600093505050505b92915050565b60008061ffff600884901c1660ff8416801561171257600082815260028701602052604081205493506116f28483611ab5565b905060001981146117105760089290921b90911792506116b9915050565b505b5060ff8116600882901c8115611789576000818152600188016020526040812054945061173f8584611ab5565b9050600019811461178757600882901b8117600081815260028a0160205260409020549550935061176f85611acc565b60ff1660088560001c901b17955050505050506116b9565b505b60ff8116915081156117f8578654935060006117a58584611ab5565b905060001981146117f657600081815260018901602052604090205494509050806117cf85611acc565b60ff16600883901b17600081815260028a0160205260409020549550935061176f85611acc565b505b5062ffffff9695505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906118429086908690869060040161206d565b60006040518083038186803b15801561185a57600080fd5b505afa15801561186e573d6000803e3d6000fd5b50505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b1981168082146116b157600083815260028701602052604081208290558190036116a55750600882901c6000818152600187810160205260408220805460ff87169290921b199091169081905591908290036116a3578654600160ff83161b1916875550600193505050506116b9565b60008061ffff600884901c1660ff80851690811461196057600082815260028701602052604081205493506119408483611b71565b9050600019811461195e5760089290921b90911792506116b9915050565b505b5060ff80821690600883901c9082146119c257600081815260018801602052604081205494506119908584611b71565b905060001981146119c057600882901b8117600081815260028a0160205260409020549550935061176f85611b80565b505b60ff81811692508214611a32578654935060006119df8584611b71565b90506000198114611a305760008181526001890160205260409020549450905080611a0985611b80565b60ff16600883901b17600081815260028a0160205260409020549550935061176f85611b80565b505b5060009695505050505050565b6040516326d8cf3f60e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634db19e7e9061184290869086908690600401612095565b604051636cd1e26960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d9a3c4d2906118429086908690869060040161206d565b6000611ac5836000198401611c1c565b9392505050565b60006fffffffffffffffffffffffffffffffff821115611aee5750608090811c905b67ffffffffffffffff821115611b0657604091821c91015b63ffffffff821115611b1a57602091821c91015b61ffff821115611b2c57601091821c91015b60ff821115611b3d57600891821c91015b600f821115611b4e57600491821c91015b6003821115611b5f57600291821c91015b6001821115611b6c576001015b919050565b6000611ac58360018401611c4e565b60008160801b8015611b9457608091508092505b8260401b90508015611ba7579150604001815b8260201b90508015611bba579150602001815b8260101b90508015611bcd579150601001815b8260081b90508015611be0579150600801815b8260041b90508015611bf3579150600401815b8260021b90508015611c06579150600201815b508160011b15611c14576001015b60ff03919050565b60ff8181031691821b916000908315611c425780611c3985611acc565b60ff1603611c46565b6000195b949350505050565b60ff81169190911c9060008215611c725781611c6984611b80565b0160ff16611ac5565b5060001992915050565b600060208284031215611c8e57600080fd5b813562ffffff81168114611ac557600080fd5b6020808252825182820181905260009190848201906040850190845b81811015611ce25783516001600160a01b031683529284019291840191600101611cbd565b50909695505050505050565b6000815180845260005b81811015611d1457602081850181015186830182015201611cf8565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611de457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611dce57605f19898503018352611dbc848651611cee565b948e01949350918d0191600101611da0565b505050978a019794505091880191600101611d5b565b50919a9950505050505050505050565b60008060208385031215611e0757600080fd5b823567ffffffffffffffff80821115611e1f57600080fd5b818501915085601f830112611e3357600080fd5b813581811115611e4257600080fd5b8660208260051b8501011115611e5757600080fd5b60209290920196919550909350505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611f2557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611f105783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611ece565b50978a01979550505091870191600101611e91565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611f8957603f19888603018452611f77858351611cee565b94509285019290850190600101611f5b565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b62ffffff828116828216039080821115611fc857611fc8611f96565b5092915050565b600181811c90821680611fe357607f821691505b60208210810361200357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006001820161203157612031611f96565b5060010190565b62ffffff818116838216019080821115611fc857611fc8611f96565b60006020828403121561206657600080fd5b5051919050565b83815282602082015260606040820152600061208c6060830184611cee565b95945050505050565b8315158152821515602082015260606040820152600061208c6060830184611cee56fe7465737446757a7a5f52656d6f76654c6f676963416e645365617263684c6566743a3a317465737446757a7a5f52656d6f76654c6f676963416e645365617263684c6566743a3a327465737446757a7a5f52656d6f76654c6f676963416e6453656172636852696768743a3a327465737446757a7a5f52656d6f76654c6f676963416e6453656172636852696768743a3a31a2646970667358221220f764ef1d2d06463ac0c8b9648a56f0564a6575e1e12981ac58a6dbd831cd7d4d64736f6c63430008140033","sourceMap":"141:4125:118:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;141:4125:118;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101365760003560e01c80638b3d7f56116100b2578063ba414fa611610081578063c35cb58611610066578063c35cb5861461022e578063dcec1ab014610241578063e20c9f711461025457600080fd5b8063ba414fa614610203578063bd049f3e1461021b57600080fd5b80638b3d7f56146101d8578063916a17c6146101eb578063af2365b5146101f3578063b5508aa9146101fb57600080fd5b80633e5e3c23116101095780634d166abf116100ee5780634d166abf1461019b57806366d9a9a0146101ae57806385226c81146101c357600080fd5b80633e5e3c231461018b5780633f7286f41461019357600080fd5b806309f3f9701461013b5780631ed7831c146101505780632ade38801461016e5780633b3d9eca14610183575b600080fd5b61014e610149366004611c7c565b61025c565b005b610158610383565b6040516101659190611ca1565b60405180910390f35b6101766103e5565b6040516101659190611d34565b61014e610527565b61015861073a565b61015861079a565b61014e6101a9366004611df4565b6107fa565b6101b661097b565b6040516101659190611e69565b6101cb610a76565b6040516101659190611f34565b61014e6101e6366004611c7c565b610b46565b6101b6610c56565b61014e610d51565b6101cb610e15565b61020b610ee5565b6040519015158152602001610165565b61014e610229366004611df4565b610fa0565b61014e61023c366004611c7c565b611219565b61014e61024f366004611df4565b6114e1565b6101586115c2565b604051632631f2b160e11b815262ffffff821615156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b1580156102ad57600080fd5b505afa1580156102c1573d6000803e3d6000fd5b505050506102d981601c61162290919063ffffffff16565b506102f06102e8600183611fac565b601c90611622565b506103326102ff601c836116bf565b62ffffff1661030f600184611fac565b62ffffff1660405180606001604052806025815260200161212660259139611807565b610348610340600183611fac565b601c90611877565b50610380610357601c836116bf565b62ffffff1662ffffff801660405180606001604052806025815260200161210160259139611807565b50565b606060148054806020026020016040519081016040528092919081815260200182805480156103db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103bd575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101561051e57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561050757838290600052602060002001805461047a90611fcf565b80601f01602080910402602001604051908101604052809291908181526020018280546104a690611fcf565b80156104f35780601f106104c8576101008083540402835291602001916104f3565b820191906000526020600020905b8154815290600101906020018083116104d657829003601f168201915b50505050508152602001906001019061045b565b505050508152505081526020019060010190610409565b50505050905090565b610533601c6000611622565b50610540601c6001611622565b5061054d601c6002611622565b5061059f61055d601c60026116bf565b62ffffff1660016040518060400160405280601181526020017f746573745f46696e6446697273743a3a31000000000000000000000000000000815250611807565b6105f06105ae601c60016116bf565b62ffffff1660006040518060400160405280601181526020017f746573745f46696e6446697273743a3a32000000000000000000000000000000815250611807565b6106416105ff601c600061190b565b62ffffff1660016040518060400160405280601181526020017f746573745f46696e6446697273743a3a33000000000000000000000000000000815250611807565b610692610650601c600161190b565b62ffffff1660026040518060400160405280601181526020017f746573745f46696e6446697273743a3a34000000000000000000000000000000815250611807565b6106e76106a1601c60006116bf565b62ffffff1662ffffff80166040518060400160405280601181526020017f746573745f46696e6446697273743a3a35000000000000000000000000000000815250611807565b6107386106f6601c600261190b565b62ffffff1660006040518060400160405280601181526020017f746573745f46696e6446697273743a3a36000000000000000000000000000000815250611807565b565b606060168054806020026020016040519081016040528092919081815260200182805480156103db576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103bd575050505050905090565b606060158054806020026020016040519081016040528092919081815260200182805480156103db576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103bd575050505050905090565b60005b818110156108425761082f83838381811061081a5761081a612009565b90506020020160208101906102e89190611c7c565b508061083a8161201f565b9150506107fd565b5060005b818110156109765760006108a384848481811061086557610865612009565b905060200201602081019061087a9190611c7c565b600881901c61ffff166000908152601e6020526040902054600160ff9092169190911b16151590565b905061090e6108d28585858181106108bd576108bd612009565b90506020020160208101906103409190611c7c565b826040518060400160405280601a81526020017f7465737446757a7a5f52656d6f766546726f6d547265653a3a31000000000000815250611a3f565b61096361092685858581811061086557610865612009565b60006040518060400160405280601a81526020017f7465737446757a7a5f52656d6f766546726f6d547265653a3a32000000000000815250611a3f565b508061096e8161201f565b915050610846565b505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101561051e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610a5e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a0b5790505b5050505050815250508152602001906001019061099f565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101561051e578382906000526020600020018054610ab990611fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae590611fcf565b8015610b325780601f10610b0757610100808354040283529160200191610b32565b820191906000526020600020905b815481529060010190602001808311610b1557829003601f168201915b505050505081526020019060010190610a9a565b604051632631f2b160e11b815262ffffff828116106004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015610b9757600080fd5b505afa158015610bab573d6000803e3d6000fd5b50505050610bc381601c61162290919063ffffffff16565b50610bd26102e8826001612038565b50610c14610be1601c8361190b565b62ffffff16610bf1836001612038565b62ffffff166040518060600160405280602481526020016120b960249139611807565b610c22610340826001612038565b50610380610c31601c8361190b565b62ffffff1660006040518060600160405280602481526020016120dd60249139611807565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101561051e5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610d3957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610ce65790505b50505050508152505081526020019060010190610c7a565b610d5d601c6000611622565b50610d6c601c62ffffff611622565b50610dc0610d7e601c62ffffff6116bf565b62ffffff1660006040518060400160405280601481526020017f746573745f46696e6446697273744661723a3a31000000000000000000000000815250611807565b610738610dcf601c600061190b565b62ffffff1662ffffff80166040518060400160405280601481526020017f746573745f46696e6446697273744661723a3a32000000000000000000000000815250611807565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101561051e578382906000526020600020018054610e5890611fcf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8490611fcf565b8015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b505050505081526020019060010190610e39565b60075460009060ff1615610efd575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f999190612054565b1415905090565b604051632631f2b160e11b81528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e5629060240160006040518083038186803b158015610fec57600080fd5b505afa158015611000573d6000803e3d6000fd5b5050505060005b818110156110375761102483838381811061081a5761081a612009565b508061102f8161201f565b915050611007565b5060005b8181101561097657600083838381811061105757611057612009565b905060200201602081019061106c9190611c7c565b9050600061107b601c836116bf565b9050600061108a601c8461190b565b905062ffffff8281161461114857600882901c61ffff166000908152601e60205260409020546110fb90600160ff85161b16151560016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a310000000000000000000000815250611a3f565b6111488362ffffff168362ffffff161060016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a320000000000000000000000815250611a3f565b62ffffff81161561120357600881901c61ffff166000908152601e60205260409020546111b690600160ff84161b16151560016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a330000000000000000000000815250611a3f565b6112038362ffffff168262ffffff161160016040518060400160405280601581526020017f7465737446757a7a5f46696e6446697273743a3a340000000000000000000000815250611a3f565b50505080806112119061201f565b91505061103b565b611224601c82611622565b50600881901c61ffff166000908152601e602052604090205461128890600160ff84161b16151560016040518060400160405280601881526020017f7465737446757a7a5f416464416e6452656d6f76653a3a310000000000000000815250611a3f565b601c5460408051808201909152601881527f7465737446757a7a5f416464416e6452656d6f76653a3a32000000000000000060208201526112cc9190600090611a7a565b60ff601082901c166000908152601d60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a330000000000000000928201929092526113249290611a7a565b61ffff600882901c166000908152601e60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a3400000000000000009282019290925261137d9290611a7a565b611388601c82611877565b50600881901c61ffff166000908152601e60205260409020546113ec90600160ff84161b16151560006040518060400160405280601881526020017f7465737446757a7a5f416464416e6452656d6f76653a3a350000000000000000815250611a3f565b601c5460408051808201909152601881527f7465737446757a7a5f416464416e6452656d6f76653a3a36000000000000000060208201526114309190600090611807565b60ff601082901c166000908152601d60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a370000000000000000928201929092526114889290611807565b61ffff600882901c166000908152601e60209081526040808320548151808301909252601882527f7465737446757a7a5f416464416e6452656d6f76653a3a380000000000000000928201929092526103809290611807565b60005b8181101561097657600061150384848481811061086557610865612009565b905061155a61151d85858581811061081a5761081a612009565b82156040518060400160405280601581526020017f7465737446757a7a5f416464546f547265653a3a310000000000000000000000815250611a3f565b6115af61157285858581811061086557610865612009565b60016040518060400160405280601581526020017f7465737446757a7a5f416464546f547265653a3a320000000000000000000000815250611a3f565b50806115ba8161201f565b9150506114e4565b606060138054806020026020016040519081016040528092919081815260200182805480156103db576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116103bd575050505050905090565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b81178082146116b157600083815260028701602052604081208290558290036116a557600883901c6000818152600180890160205260408220805460ff88169290921b8217905593508390036116a3578654600160ff83161b1787555b505b600193505050506116b9565b600093505050505b92915050565b60008061ffff600884901c1660ff8416801561171257600082815260028701602052604081205493506116f28483611ab5565b905060001981146117105760089290921b90911792506116b9915050565b505b5060ff8116600882901c8115611789576000818152600188016020526040812054945061173f8584611ab5565b9050600019811461178757600882901b8117600081815260028a0160205260409020549550935061176f85611acc565b60ff1660088560001c901b17955050505050506116b9565b505b60ff8116915081156117f8578654935060006117a58584611ab5565b905060001981146117f657600081815260018901602052604090205494509050806117cf85611acc565b60ff16600883901b17600081815260028a0160205260409020549550935061176f85611acc565b505b5062ffffff9695505050505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906118429086908690869060040161206d565b60006040518083038186803b15801561185a57600080fd5b505afa15801561186e573d6000803e3d6000fd5b50505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b1981168082146116b157600083815260028701602052604081208290558190036116a55750600882901c6000818152600187810160205260408220805460ff87169290921b199091169081905591908290036116a3578654600160ff83161b1916875550600193505050506116b9565b60008061ffff600884901c1660ff80851690811461196057600082815260028701602052604081205493506119408483611b71565b9050600019811461195e5760089290921b90911792506116b9915050565b505b5060ff80821690600883901c9082146119c257600081815260018801602052604081205494506119908584611b71565b905060001981146119c057600882901b8117600081815260028a0160205260409020549550935061176f85611b80565b505b60ff81811692508214611a32578654935060006119df8584611b71565b90506000198114611a305760008181526001890160205260409020549450905080611a0985611b80565b60ff16600883901b17600081815260028a0160205260409020549550935061176f85611b80565b505b5060009695505050505050565b6040516326d8cf3f60e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634db19e7e9061184290869086908690600401612095565b604051636cd1e26960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d9a3c4d2906118429086908690869060040161206d565b6000611ac5836000198401611c1c565b9392505050565b60006fffffffffffffffffffffffffffffffff821115611aee5750608090811c905b67ffffffffffffffff821115611b0657604091821c91015b63ffffffff821115611b1a57602091821c91015b61ffff821115611b2c57601091821c91015b60ff821115611b3d57600891821c91015b600f821115611b4e57600491821c91015b6003821115611b5f57600291821c91015b6001821115611b6c576001015b919050565b6000611ac58360018401611c4e565b60008160801b8015611b9457608091508092505b8260401b90508015611ba7579150604001815b8260201b90508015611bba579150602001815b8260101b90508015611bcd579150601001815b8260081b90508015611be0579150600801815b8260041b90508015611bf3579150600401815b8260021b90508015611c06579150600201815b508160011b15611c14576001015b60ff03919050565b60ff8181031691821b916000908315611c425780611c3985611acc565b60ff1603611c46565b6000195b949350505050565b60ff81169190911c9060008215611c725781611c6984611b80565b0160ff16611ac5565b5060001992915050565b600060208284031215611c8e57600080fd5b813562ffffff81168114611ac557600080fd5b6020808252825182820181905260009190848201906040850190845b81811015611ce25783516001600160a01b031683529284019291840191600101611cbd565b50909695505050505050565b6000815180845260005b81811015611d1457602081850181015186830182015201611cf8565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015611de457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015611dce57605f19898503018352611dbc848651611cee565b948e01949350918d0191600101611da0565b505050978a019794505091880191600101611d5b565b50919a9950505050505050505050565b60008060208385031215611e0757600080fd5b823567ffffffffffffffff80821115611e1f57600080fd5b818501915085601f830112611e3357600080fd5b813581811115611e4257600080fd5b8660208260051b8501011115611e5757600080fd5b60209290920196919550909350505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611f2557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611f105783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611ece565b50978a01979550505091870191600101611e91565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611f8957603f19888603018452611f77858351611cee565b94509285019290850190600101611f5b565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b62ffffff828116828216039080821115611fc857611fc8611f96565b5092915050565b600181811c90821680611fe357607f821691505b60208210810361200357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006001820161203157612031611f96565b5060010190565b62ffffff818116838216019080821115611fc857611fc8611f96565b60006020828403121561206657600080fd5b5051919050565b83815282602082015260606040820152600061208c6060830184611cee565b95945050505050565b8315158152821515602082015260606040820152600061208c6060830184611cee56fe7465737446757a7a5f52656d6f76654c6f676963416e645365617263684c6566743a3a317465737446757a7a5f52656d6f76654c6f676963416e645365617263684c6566743a3a327465737446757a7a5f52656d6f76654c6f676963416e6453656172636852696768743a3a327465737446757a7a5f52656d6f76654c6f676963416e6453656172636852696768743a3a31a2646970667358221220f764ef1d2d06463ac0c8b9648a56f0564a6575e1e12981ac58a6dbd831cd7d4d64736f6c63430008140033","sourceMap":"141:4125:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1858:377;;;;;;:::i;:::-;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;2618:525:118:-;;;:::i;3221:133:5:-;;;:::i;2922:141::-;;;:::i;602:445:118:-;;;;;;:::i;:::-;;:::i;2738:178:5:-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;2241:371:118:-;;;;;;:::i;:::-;;:::i;3069:146:5:-;;;:::i;3149:275:118:-;;;:::i;2157:141:5:-;;;:::i;1243:204:1:-;;;:::i;:::-;;;6364:14:127;;6357:22;6339:41;;6327:2;6312:18;1243:204:1;6199:187:127;3430:834:118;;;;;;:::i;:::-;;:::i;1053:799::-;;;;;;:::i;:::-;;:::i;262:334::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;1858:377:118:-;1932:17;;-1:-1:-1;;;1932:17:118;;1942:6;;;;;1932:17;;;6339:41:127;1932:9:118;;;;6312:18:127;;1932:17:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:13;1970:2;1960:5;:9;;:13;;;;:::i;:::-;-1:-1:-1;1983:17:118;1993:6;1998:1;1993:2;:6;:::i;:::-;1983:5;;:9;:17::i;:::-;-1:-1:-1;2011:83:118;2020:24;:5;2041:2;2020:20;:24::i;:::-;2011:83;;2046:6;2051:1;2046:2;:6;:::i;:::-;2011:83;;;;;;;;;;;;;;;;;;;:8;:83::i;:::-;2105:20;2118:6;2123:1;2118:2;:6;:::i;:::-;2105:5;;:12;:20::i;:::-;-1:-1:-1;2135:93:118;2144:24;:5;2165:2;2144:20;:24::i;:::-;2135:93;;2170:16;2135:93;;;;;;;;;;;;;;;;;;;:8;:93::i;:::-;1858:377;:::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;2618:525:118:-;2663:12;:5;2673:1;2663:9;:12::i;:::-;-1:-1:-1;2685:12:118;:5;2695:1;2685:9;:12::i;:::-;-1:-1:-1;2707:12:118;:5;2717:1;2707:9;:12::i;:::-;-1:-1:-1;2730:57:118;2739:23;:5;2760:1;2739:20;:23::i;:::-;2730:57;;2764:1;2730:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;2797;2806:23;:5;2827:1;2806:20;:23::i;:::-;2797:57;;2831:1;2797:57;;;;;;;;;;;;;;;;;:8;:57::i;:::-;2865:56;2874:22;:5;2894:1;2874:19;:22::i;:::-;2865:56;;2898:1;2865:56;;;;;;;;;;;;;;;;;:8;:56::i;:::-;2931;2940:22;:5;2960:1;2940:19;:22::i;:::-;2931:56;;2964:1;2931:56;;;;;;;;;;;;;;;;;:8;:56::i;:::-;2998:72;3007:23;:5;3028:1;3007:20;:23::i;:::-;2998:72;;3032:16;2998:72;;;;;;;;;;;;;;;;;;;:8;:72::i;:::-;3080:56;3089:22;:5;3109:1;3089:19;:22::i;:::-;3080:56;;3113:1;3080:56;;;;;;;;;;;;;;;;;:8;:56::i;:::-;2618:525::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;602:445:118:-;682:9;677:83;697:14;;;677:83;;;732:17;742:3;;746:1;742:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;732:17::-;-1:-1:-1;713:3:118;;;;:::i;:::-;;;;677:83;;;;775:9;770:271;790:14;;;770:271;;;825:13;841:22;856:3;;860:1;856:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;759:1:81;744:16;;;;;704:4;779:18;;;:11;:18;;;;;;808:1;819:15;814:20;;;808:27;;;;779:57;:62;;;627:221;841:22:118;825:38;;877:70;886:20;899:3;;903:1;899:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;886:20::-;908:8;877:70;;;;;;;;;;;;;;;;;:8;:70::i;:::-;961:69;970:22;985:3;;989:1;985:6;;;;;;;:::i;970:22::-;994:5;961:69;;;;;;;;;;;;;;;;;:8;:69::i;:::-;-1:-1:-1;806:3:118;;;;:::i;:::-;;;;770:271;;;;602:445;;:::o;2738:178:5:-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2241:371:118;2314:32;;-1:-1:-1;;;2314:32:118;;2329:16;2324:21;;;;2314:32;;;6339:41:127;2314:9:118;;;;6312:18:127;;2314:32:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2357:13;2367:2;2357:5;:9;;:13;;;;:::i;:::-;-1:-1:-1;2380:17:118;2390:6;:2;2395:1;2390:6;:::i;2380:17::-;-1:-1:-1;2407:81:118;2416:23;:5;2436:2;2416:19;:23::i;:::-;2407:81;;2441:6;:2;2446:1;2441:6;:::i;:::-;2407:81;;;;;;;;;;;;;;;;;;;:8;:81::i;:::-;2499:20;2512:6;:2;2517:1;2512:6;:::i;2499:20::-;-1:-1:-1;2529:76:118;2538:23;:5;2558:2;2538:19;:23::i;:::-;2529:76;;2563:1;2529:76;;;;;;;;;;;;;;;;;:8;:76::i;3069:146:5:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3149:275:118;3197:12;:5;3207:1;3197:9;:12::i;:::-;-1:-1:-1;3219:27:118;:5;3229:16;3219:9;:27::i;:::-;-1:-1:-1;3257:75:118;3266:38;:5;3287:16;3266:20;:38::i;:::-;3257:75;;3306:1;3257:75;;;;;;;;;;;;;;;;;:8;:75::i;:::-;3343:74;3352:22;:5;3372:1;3352:19;:22::i;:::-;3343:74;;3376:16;3343:74;;;;;;;;;;;;;;;;;;;:8;:74::i;2157:141:5:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;7707:74:127;;;1398:17:1;7797:18:127;;;7790:34;1428:1:1;;1377:7;;7680:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;3430:834:118:-;3500:25;;-1:-1:-1;;;3500:25:118;;3510:14;;;3500:25;;;6339:41:127;3500:9:118;;;;6312:18:127;;3500:25:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3541:9;3536:83;3556:14;;;3536:83;;;3591:17;3601:3;;3605:1;3601:6;;;;;;;:::i;3591:17::-;-1:-1:-1;3572:3:118;;;;:::i;:::-;;;;3536:83;;;;3634:9;3629:629;3649:14;;;3629:629;;;3684:9;3696:3;;3700:1;3696:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3684:18;-1:-1:-1;3717:17:118;3737:24;:5;3684:18;3737:20;:24::i;:::-;3717:44;-1:-1:-1;3775:16:118;3794:23;:5;3814:2;3794:19;:23::i;:::-;3775:42;-1:-1:-1;3850:16:118;3836:30;;;;3832:210;;759:1:81;744:16;;;;;704:4;779:18;;;:11;:18;;;;;;3886:67:118;;808:1:81;819:15;814:20;;808:27;779:57;:62;;3923:4:118;3886:67;;;;;;;;;;;;;;;;;:8;:67::i;:::-;3971:56;3993:2;3980:15;;:10;:15;;;3997:4;3971:56;;;;;;;;;;;;;;;;;:8;:56::i;:::-;4060:14;;;;4056:192;;759:1:81;744:16;;;;;704:4;779:18;;;:11;:18;;;;;;4094:66:118;;808:1:81;819:15;814:20;;808:27;779:57;:62;;4130:4:118;4094:66;;;;;;;;;;;;;;;;;:8;:66::i;:::-;4178:55;4199:2;4187:14;;:9;:14;;;4203:4;4178:55;;;;;;;;;;;;;;;;;:8;:55::i;:::-;3670:588;;;3665:3;;;;;:::i;:::-;;;;3629:629;;1053:799;1114:13;:5;1124:2;1114:9;:13::i;:::-;-1:-1:-1;759:1:81;744:16;;;;;704:4;779:18;;;:11;:18;;;;;;1138:62:118;;808:1:81;819:15;814:20;;808:27;779:57;:62;;1167:4:118;1138:62;;;;;;;;;;;;;;;;;:8;:62::i;:::-;1228:5;:12;1211:62;;;;;;;;;;;;;;;;;;;1228:12;;;1211:8;:62::i;:::-;1329:8;1335:2;1329:8;;;;1300:40;;;;:12;:40;;;;;;;;;1283:90;;;;;;;;;;;;;;;;;;;;;1300:40;1283:8;:90::i;:::-;1429:7;1435:1;1429:7;;;;1400:39;;;;:12;:39;;;;;;;;;1383:89;;;;;;;;;;;;;;;;;;;;;1400:39;1383:8;:89::i;:::-;1483:16;:5;1496:2;1483:12;:16::i;:::-;-1:-1:-1;759:1:81;744:16;;;;;704:4;779:18;;;:11;:18;;;;;;1510:63:118;;808:1:81;819:15;814:20;;808:27;779:57;:62;;1539:5:118;1510:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;1601:5;:12;1584:62;;;;;;;;;;;;;;;;;;;1601:12;;;1584:8;:62::i;:::-;1702:8;1708:2;1702:8;;;;1673:40;;;;:12;:40;;;;;;;;;1656:90;;;;;;;;;;;;;;;;;;;;;1673:40;1656:8;:90::i;:::-;1802:7;1808:1;1802:7;;;;1773:39;;;;:12;:39;;;;;;;;;1756:89;;;;;;;;;;;;;;;;;;;;;1773:39;1756:8;:89::i;262:334::-;337:9;332:258;352:14;;;332:258;;;387:13;403:22;418:3;;422:1;418:6;;;;;;;:::i;403:22::-;387:38;;439:63;448:17;458:3;;462:1;458:6;;;;;;;:::i;448:17::-;468:8;467:9;439:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;516;525:22;540:3;;544:1;540:6;;;;;;;:::i;525:22::-;549:4;516:63;;;;;;;;;;;;;;;;;:8;:63::i;:::-;-1:-1:-1;368:3:118;;;;:::i;:::-;;;;332:258;;2304:142:5;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;1134:713:81:-;1240:16;1255:1;1240:16;;;;1201:4;1285:17;;;:11;;;:17;;;;;;1201:4;;1240:16;1349:1;1360:15;1355:20;;1349:27;1332:45;;1392:19;;;1388:430;;1427:17;;;;:11;;;:17;;;;;:29;;;1475:11;;;1471:311;;1529:1;1521:9;;;1506:12;1557:17;;;:11;;;;:17;;;;;;;1652:15;1636:31;;1630:38;;;;1613:56;;1593:76;;1557:17;-1:-1:-1;1692:11:81;;;1688:79;;1705:62;;1728:1;1750:15;1734:31;;1728:38;1705:62;;;1688:79;1488:294;1471:311;1803:4;1796:11;;;;;;;1388:430;1835:5;1828:12;;;;;1134:713;;;;;:::o;3145:1556::-;3228:6;;3294:16;3309:1;3294:16;;;;3344:15;3339:20;;3375:8;;3371:227;;3408:17;;;;:11;;;:17;;;;;;;-1:-1:-1;3460:29:81;3408:17;3485:3;3460:16;:29::i;:::-;3439:50;;-1:-1:-1;;3508:10:81;:31;3504:83;;3572:1;3555:18;;;;:31;;;;-1:-1:-1;3541:46:81;;-1:-1:-1;;3541:46:81;3504:83;3385:213;3371:227;-1:-1:-1;3670:15:81;3654:31;;3631:1;3623:9;;;3701:8;;3697:395;;3734:17;;;;:11;;;:17;;;;;;;-1:-1:-1;3786:29:81;3734:17;3811:3;3786:16;:29::i;:::-;3765:50;;-1:-1:-1;;3834:10:81;:31;3830:252;;3917:1;3900:18;;;:31;;:13;3959:17;;;:11;;;:17;;;;;;;-1:-1:-1;3900:31:81;-1:-1:-1;4030:36:81;3959:17;4030:34;:36::i;:::-;4009:57;;4026:1;4017:4;4009:13;;:18;;:57;3995:72;;;;;;;;;3830:252;3711:381;3697:395;4130:15;4114:31;;;-1:-1:-1;4161:8:81;;4157:504;;4194:11;;;-1:-1:-1;4194:11:81;4240:29;4194:11;4265:3;4240:16;:29::i;:::-;4219:50;;-1:-1:-1;;4288:10:81;:31;4284:367;;4346:19;4392:17;;;:11;;;:17;;;;;;;-1:-1:-1;4354:10:81;-1:-1:-1;4354:10:81;4464:36;4392:17;4464:34;:36::i;:::-;4443:57;;4460:1;4443:18;;;:57;:13;4528:17;;;:11;;;:17;;;;;;;-1:-1:-1;4443:57:81;-1:-1:-1;4599:36:81;4528:17;4599:34;:36::i;4284:367::-;4171:490;4157:504;-1:-1:-1;4678:16:81;;3145:1556;-1:-1:-1;;;;;;3145:1556:81:o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;2115:731:81:-;2224:16;2239:1;2224:16;;;;2185:4;2269:17;;;:11;;;:17;;;;;;2185:4;;2224:16;2334:1;2345:15;2340:20;;2334:27;2325:37;2316:46;;2377:19;;;2373:444;;2412:17;;;;:11;;;:17;;;;;:29;;;2460:14;;;2456:325;;-1:-1:-1;2517:1:81;2509:9;;;2494:12;2548:17;;;2577:1;2548:11;;;:17;;;;;;;2599:15;2583:31;;2577:38;;;;2568:48;2548:68;;;2635:29;;;;2548:68;2509:9;2687:14;;;2683:83;;2703:63;;2727:1;2749:15;2733:31;;2727:38;2718:48;2703:63;;;2476:305;2802:4;2795:11;;;;;;;4987:1582;5069:6;;5135:16;5150:1;5135:16;;;;5185:15;5180:20;;;;5216:22;;5212:240;;5263:17;;;;:11;;;:17;;;;;;;-1:-1:-1;5315:28:81;5263:17;5339:3;5315:15;:28::i;:::-;5294:49;;-1:-1:-1;;5362:10:81;:31;5358:83;;5426:1;5409:18;;;;:31;;;;-1:-1:-1;5395:46:81;;-1:-1:-1;;5395:46:81;5358:83;5240:212;5212:240;-1:-1:-1;5524:15:81;5508:31;;;;5485:1;5477:9;;;;5555:22;;5551:409;;5602:17;;;;:11;;;:17;;;;;;;-1:-1:-1;5654:28:81;5602:17;5678:3;5654:15;:28::i;:::-;5633:49;;-1:-1:-1;;5701:10:81;:31;5697:253;;5784:1;5767:18;;;:31;;:13;5826:17;;;:11;;;:17;;;;;;;-1:-1:-1;5767:31:81;-1:-1:-1;5897:37:81;5826:17;5897:35;:37::i;5697:253::-;5579:381;5551:409;5998:15;5982:31;;;;-1:-1:-1;6029:22:81;;6025:519;;6076:11;;;-1:-1:-1;6076:11:81;6122:28;6076:11;6146:3;6122:15;:28::i;:::-;6101:49;;-1:-1:-1;;6169:10:81;:31;6165:369;;6227:19;6273:17;;;:11;;;:17;;;;;;;-1:-1:-1;6235:10:81;-1:-1:-1;6235:10:81;6345:37;6273:17;6345:35;:37::i;:::-;6324:58;;6341:1;6324:18;;;:58;:13;6410:17;;;:11;;;:17;;;;;;;-1:-1:-1;6324:58:81;-1:-1:-1;6481:37:81;6410:17;6481:35;:37::i;6165:369::-;6053:491;6025:519;-1:-1:-1;6561:1:81;;4987:1582;-1:-1:-1;;;;;;4987:1582:81:o;2136:128:1:-;2228:29;;-1:-1:-1;;;2228:29:1;;:11;;;;:29;;2240:4;;2246:5;;2253:3;;2228:29;;;:::i;13228:134::-;13326:29;;-1:-1:-1;;;13326:29:1;;:11;;;;:29;;13338:4;;13344:5;;13351:3;;13326:29;;;:::i;6902:182:81:-;6977:7;7027:40;7035:6;-1:-1:-1;;7059:7:81;;7027:31;:40::i;:::-;7020:47;6902:182;-1:-1:-1;;;6902:182:81:o;1675:971:75:-;1737:9;1790:34;1787:1;1784:41;1781:120;;;-1:-1:-1;1853:3:75;1849:11;;;;1781:120;1923:18;1920:1;1917:25;1914:112;;;1970:2;1966:10;;;;2000:12;1914:112;2048:10;2045:1;2042:17;2039:104;;;2087:2;2083:10;;;;2117:12;2039:104;2165:6;2162:1;2159:13;2156:100;;;2200:2;2196:10;;;;2230:12;2156:100;2278:4;2275:1;2272:11;2269:96;;;2311:1;2307:9;;;;2340:11;2269:96;2387:3;2384:1;2381:10;2378:95;;;2419:1;2415:9;;;;2448:11;2378:95;2495:3;2492:1;2489:10;2486:95;;;2527:1;2523:9;;;;2556:11;2486:95;2603:3;2600:1;2597:10;2594:36;;;2626:1;2617:11;2594:36;1675:971;;;:::o;7419:180:81:-;7493:7;7543:39;7551:6;7580:1;7574:7;;7543:30;:39::i;2877:1171:75:-;2940:9;3003:1;2998:3;2994:11;3035:2;3028:10;3018:88;;3065:3;3058:10;;3090:2;3085:7;;3018:88;3133:1;3129:2;3125:10;3119:16;;3165:2;3158:10;3148:97;;3193:2;-1:-1:-1;3228:2:75;3219:12;3193:2;3148:97;3272:1;3268:2;3264:10;3258:16;;3304:2;3297:10;3287:97;;3332:2;-1:-1:-1;3367:2:75;3358:12;3332:2;3287:97;3411:1;3407:2;3403:10;3397:16;;3443:2;3436:10;3426:97;;3471:2;-1:-1:-1;3506:2:75;3497:12;3471:2;3426:97;3549:1;3546;3542:9;3536:15;;3581:2;3574:10;3564:96;;3609:2;-1:-1:-1;3644:1:75;3635:11;3609:2;3564:96;3686:1;3683;3679:9;3673:15;;3718:2;3711:10;3701:96;;3746:2;-1:-1:-1;3781:1:75;3772:11;3746:2;3701:96;3823:1;3820;3816:9;3810:15;;3855:2;3848:10;3838:96;;3883:2;-1:-1:-1;3918:1:75;3909:11;3883:2;3838:96;;3971:1;3968;3964:9;3957:17;3947:51;;3994:1;3985:11;3947:51;4023:3;4019:13;;2877:1171;-1:-1:-1;2877:1171:75:o;546:342::-;678:3;:9;;;662:25;701:11;;;;616:10;;812:6;;811:60;;866:5;842:21;861:1;842:18;:21::i;:::-;:29;;;811:60;;;-1:-1:-1;;811:60:75;804:67;546:342;-1:-1:-1;;;;546:342:75:o;1226:222::-;1341:9;;;;;;;;1295:10;1373:6;;1372:59;;1428:3;1403:22;1423:1;1403:19;:22::i;:::-;:28;1372:59;;;;;-1:-1:-1;;;1383:17:75;1226:222;-1:-1:-1;;1226:222:75:o;14:274:127:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:8;223:5;219:20;212:5;209:31;199:59;;254:1;251;244:12;293:681;464:2;516:21;;;586:13;;489:18;;;608:22;;;435:4;;464:2;687:15;;;;661:2;646:18;;;435:4;730:218;744:6;741:1;738:13;730:218;;;809:13;;-1:-1:-1;;;;;805:62:127;793:75;;923:15;;;;888:12;;;;766:1;759:9;730:218;;;-1:-1:-1;965:3:127;;293:681;-1:-1:-1;;;;;;293:681:127:o;979:423::-;1021:3;1059:5;1053:12;1086:6;1081:3;1074:19;1111:1;1121:162;1135:6;1132:1;1129:13;1121:162;;;1197:4;1253:13;;;1249:22;;1243:29;1225:11;;;1221:20;;1214:59;1150:12;1121:162;;;1125:3;1328:1;1321:4;1312:6;1307:3;1303:16;1299:27;1292:38;1391:4;1384:2;1380:7;1375:2;1367:6;1363:15;1359:29;1354:3;1350:39;1346:50;1339:57;;;979:423;;;;:::o;1407:1765::-;1640:2;1692:21;;;1762:13;;1665:18;;;1784:22;;;1611:4;;1640:2;1825;;1843:18;;;;1880:1;1923:15;;;1908:31;;1904:40;;1967:15;;;1611:4;;2031:1112;2047:6;2042:3;2039:15;2031:1112;;;-1:-1:-1;;2116:22:127;;;2112:36;2100:49;;2172:13;;2259:9;;-1:-1:-1;;;;;2255:58:127;2240:74;;2353:11;;2347:18;2385:15;;;2378:27;;;2466:19;;2212:15;;;2498:24;;;2679:21;;;;2545:2;2627:17;;;2615:30;;2611:39;;;2569:15;;;;2724:1;2738:296;2754:8;2749:3;2746:17;2738:296;;;2860:2;2856:7;2847:6;2839;2835:19;2831:33;2824:5;2817:48;2892:42;2927:6;2916:8;2910:15;2892:42;:::i;:::-;2963:17;;;;2882:52;-1:-1:-1;3006:14:127;;;;2782:1;2773:11;2738:296;;;-1:-1:-1;;;3121:12:127;;;;3057:6;-1:-1:-1;;3086:15:127;;;;2073:1;2064:11;2031:1112;;;-1:-1:-1;3160:6:127;;1407:1765;-1:-1:-1;;;;;;;;;;1407:1765:127:o;3177:614::-;3262:6;3270;3323:2;3311:9;3302:7;3298:23;3294:32;3291:52;;;3339:1;3336;3329:12;3291:52;3379:9;3366:23;3408:18;3449:2;3441:6;3438:14;3435:34;;;3465:1;3462;3455:12;3435:34;3503:6;3492:9;3488:22;3478:32;;3548:7;3541:4;3537:2;3533:13;3529:27;3519:55;;3570:1;3567;3560:12;3519:55;3610:2;3597:16;3636:2;3628:6;3625:14;3622:34;;;3652:1;3649;3642:12;3622:34;3705:7;3700:2;3690:6;3687:1;3683:14;3679:2;3675:23;3671:32;3668:45;3665:65;;;3726:1;3723;3716:12;3665:65;3757:2;3749:11;;;;;3779:6;;-1:-1:-1;3177:614:127;;-1:-1:-1;;;;3177:614:127:o;3796:1590::-;3998:4;4027:2;4067;4056:9;4052:18;4097:2;4086:9;4079:21;4120:6;4155;4149:13;4186:6;4178;4171:22;4212:2;4202:12;;4245:2;4234:9;4230:18;4223:25;;4307:2;4297:6;4294:1;4290:14;4279:9;4275:30;4271:39;4345:2;4337:6;4333:15;4366:1;4387;4397:960;4413:6;4408:3;4405:15;4397:960;;;4482:22;;;-1:-1:-1;;4478:36:127;4466:49;;4538:13;;4625:9;;-1:-1:-1;;;;;4621:58:127;4606:74;;4719:11;;4713:18;4751:15;;;4744:27;;;4832:19;;4578:15;;;4864:24;;;4954:21;;;;4999:1;;4922:2;4910:15;;;5013:236;5029:8;5024:3;5021:17;5013:236;;;5110:15;;5127:20;5106:42;5092:57;;5218:17;;;;5057:1;5048:11;;;;;5175:14;;;;5013:236;;;-1:-1:-1;5335:12:127;;;;5272:5;-1:-1:-1;;;5300:15:127;;;;4439:1;4430:11;4397:960;;;-1:-1:-1;5374:6:127;;3796:1590;-1:-1:-1;;;;;;;;;3796:1590:127:o;5391:803::-;5553:4;5582:2;5622;5611:9;5607:18;5652:2;5641:9;5634:21;5675:6;5710;5704:13;5741:6;5733;5726:22;5779:2;5768:9;5764:18;5757:25;;5841:2;5831:6;5828:1;5824:14;5813:9;5809:30;5805:39;5791:53;;5879:2;5871:6;5867:15;5900:1;5910:255;5924:6;5921:1;5918:13;5910:255;;;6017:2;6013:7;6001:9;5993:6;5989:22;5985:36;5980:3;5973:49;6045:40;6078:6;6069;6063:13;6045:40;:::i;:::-;6035:50;-1:-1:-1;6143:12:127;;;;6108:15;;;;5946:1;5939:9;5910:255;;;-1:-1:-1;6182:6:127;;5391:803;-1:-1:-1;;;;;;;5391:803:127:o;6391:127::-;6452:10;6447:3;6443:20;6440:1;6433:31;6483:4;6480:1;6473:15;6507:4;6504:1;6497:15;6523:173;6591:8;6632:10;;;6620;;;6616:27;;6655:12;;;6652:38;;;6670:18;;:::i;:::-;6652:38;6523:173;;;;:::o;6701:380::-;6780:1;6776:12;;;;6823;;;6844:61;;6898:4;6890:6;6886:17;6876:27;;6844:61;6951:2;6943:6;6940:14;6920:18;6917:38;6914:161;;6997:10;6992:3;6988:20;6985:1;6978:31;7032:4;7029:1;7022:15;7060:4;7057:1;7050:15;6914:161;;6701:380;;;:::o;7086:127::-;7147:10;7142:3;7138:20;7135:1;7128:31;7178:4;7175:1;7168:15;7202:4;7199:1;7192:15;7218:135;7257:3;7278:17;;;7275:43;;7298:18;;:::i;:::-;-1:-1:-1;7345:1:127;7334:13;;7218:135::o;7358:170::-;7425:8;7453:10;;;7465;;;7449:27;;7488:11;;;7485:37;;;7502:18;;:::i;7835:184::-;7905:6;7958:2;7946:9;7937:7;7933:23;7929:32;7926:52;;;7974:1;7971;7964:12;7926:52;-1:-1:-1;7997:16:127;;7835:184;-1:-1:-1;7835:184:127:o;8024:362::-;8229:6;8218:9;8211:25;8272:6;8267:2;8256:9;8252:18;8245:34;8315:2;8310;8299:9;8295:18;8288:30;8192:4;8335:45;8376:2;8365:9;8361:18;8353:6;8335:45;:::i;:::-;8327:53;8024:362;-1:-1:-1;;;;;8024:362:127:o;8391:382::-;8598:6;8591:14;8584:22;8573:9;8566:41;8657:6;8650:14;8643:22;8638:2;8627:9;8623:18;8616:50;8702:2;8697;8686:9;8682:18;8675:30;8547:4;8722:45;8763:2;8752:9;8748:18;8740:6;8722:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_AddAndRemove(uint24)":"c35cb586","testFuzz_AddToTree(uint24[])":"dcec1ab0","testFuzz_FindFirst(uint24[])":"bd049f3e","testFuzz_RemoveFromTree(uint24[])":"4d166abf","testFuzz_RemoveLogicAndSearchLeft(uint24)":"8b3d7f56","testFuzz_RemoveLogicAndSearchRight(uint24)":"09f3f970","test_FindFirst()":"3b3d9eca","test_FindFirstFar()":"af2365b5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"testFuzz_AddAndRemove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24[]\",\"name\":\"ids\",\"type\":\"uint24[]\"}],\"name\":\"testFuzz_AddToTree\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24[]\",\"name\":\"ids\",\"type\":\"uint24[]\"}],\"name\":\"testFuzz_FindFirst\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24[]\",\"name\":\"ids\",\"type\":\"uint24[]\"}],\"name\":\"testFuzz_RemoveFromTree\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"testFuzz_RemoveLogicAndSearchLeft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"testFuzz_RemoveLogicAndSearchRight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_FindFirst\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_FindFirstFar\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/TreeMath.t.sol\":\"TreeMathTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"test/libraries/math/TreeMath.t.sol\":{\"keccak256\":\"0xc5b14241f8f455367993f6fa6d0509df076bf99fab705b56ff36460407ba2873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96c57b13850a3b40463cfdcab201660a8b02d0feb9d9afbb37955d08e63bf23c\",\"dweb:/ipfs/QmVWoepuYcbj9mgDBG82fZvTzdXow9jxkpky9tx6zFzepK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_AddAndRemove"},{"inputs":[{"internalType":"uint24[]","name":"ids","type":"uint24[]"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_AddToTree"},{"inputs":[{"internalType":"uint24[]","name":"ids","type":"uint24[]"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_FindFirst"},{"inputs":[{"internalType":"uint24[]","name":"ids","type":"uint24[]"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_RemoveFromTree"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_RemoveLogicAndSearchLeft"},{"inputs":[{"internalType":"uint24","name":"id","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_RemoveLogicAndSearchRight"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_FindFirst"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_FindFirstFar"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/TreeMath.t.sol":"TreeMathTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/TreeMath.sol":{"keccak256":"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b","urls":["bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1","dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE"],"license":"MIT"},"test/libraries/math/TreeMath.t.sol":{"keccak256":"0xc5b14241f8f455367993f6fa6d0509df076bf99fab705b56ff36460407ba2873","urls":["bzz-raw://96c57b13850a3b40463cfdcab201660a8b02d0feb9d9afbb37955d08e63bf23c","dweb:/ipfs/QmVWoepuYcbj9mgDBG82fZvTzdXow9jxkpky9tx6zFzepK"],"license":"MIT"}},"version":1},"id":118} \ No newline at end of file diff --git a/abi/Uint128x128Math.sol/Uint128x128Math.json b/abi/Uint128x128Math.sol/Uint128x128Math.json deleted file mode 100644 index 6e07f891..00000000 --- a/abi/Uint128x128Math.sol/Uint128x128Math.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"Uint128x128Math__LogUnderflow","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122083fcfc572540aef3b5b8b6dcf85373c9fe6e33cc6fe8e1a100e5caa54ca4a69264736f6c63430008140033","sourceMap":"292:7423:82:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;292:7423:82;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122083fcfc572540aef3b5b8b6dcf85373c9fe6e33cc6fe8e1a100e5caa54ca4a69264736f6c63430008140033","sourceMap":"292:7423:82:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint128x128Math__LogUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Uint128x128 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for power and log calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Uint128x128Math.sol\":\"Uint128x128Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Uint128x128Math__LogUnderflow"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/Uint128x128Math.sol":"Uint128x128Math"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"}},"version":1},"id":82} \ No newline at end of file diff --git a/abi/Uint128x128Math.t.sol/Uint128x128MathTest.json b/abi/Uint128x128Math.t.sol/Uint128x128MathTest.json deleted file mode 100644 index 0d793909..00000000 --- a/abi/Uint128x128Math.t.sol/Uint128x128MathTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_Pow","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_PowAndLog","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"Uint128x128Math__LogUnderflow","inputs":[]},{"type":"error","name":"Uint128x128Math__PowUnderflow","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"int256","internalType":"int256"}]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b5061134f8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806385226c8111610081578063ba414fa61161005b578063ba414fa614610160578063cb7f2d4f14610178578063e20c9f711461018057600080fd5b806385226c811461013b578063916a17c614610150578063b5508aa91461015857600080fd5b80633e5e3c23116100b25780633e5e3c23146101165780633f7286f41461011e57806366d9a9a01461012657600080fd5b80630b2dea9f146100d95780631ed7831c146100e35780632ade388014610101575b600080fd5b6100e1610188565b005b6100eb610205565b6040516100f89190610f73565b60405180910390f35b610109610267565b6040516100f89190611006565b6100eb6103a9565b6100eb610409565b61012e610469565b6040516100f891906110c6565b610143610564565b6040516100f89190611191565b61012e610634565b61014361072f565b6101686107ff565b60405190151581526020016100f8565b6100e16108ba565b6100eb61098f565b60006101a8620186a06101a2670de111a6b7de40006109ef565b90610a0d565b90506102026101b682610c83565b6904a975d3d9403da5b88064e8d4a510006040518060400160405280600b81526020017f746573745f506f773a3a31000000000000000000000000000000000000000000815250610ca1565b50565b6060601480548060200260200160405190810160405280929190818152602001828054801561025d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161023f575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103a057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103895783829060005260206000200180546102fc906111f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610328906111f3565b80156103755780601f1061034a57610100808354040283529160200191610375565b820191906000526020600020905b81548152906001019060200180831161035857829003601f168201915b5050505050815260200190600101906102dd565b50505050815250508152602001906001019061028b565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561025d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161023f575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561025d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161023f575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103a05760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561054c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104f95790505b5050505050815250508152602001906001019061048d565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103a05783829060005260206000200180546105a7906111f3565b80601f01602080910402602001604051908101604052809291908181526020018280546105d3906111f3565b80156106205780601f106105f557610100808354040283529160200191610620565b820191906000526020600020905b81548152906001019060200180831161060357829003601f168201915b505050505081526020019060010190610588565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103a05760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561071757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106c45790505b50505050508152505081526020019060010190610658565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103a0578382906000526020600020018054610772906111f3565b80601f016020809104026020016040519081016040528092919081815260200182805461079e906111f3565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b505050505081526020019060010190610753565b60075460009060ff1615610817575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801561088f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b3919061122d565b1415905090565b60006108cd670de111a6b7de40006109ef565b905060006108de82620186a0610a0d565b905060006108eb83610d14565b905061092e8160006040518060400160405280601181526020017f746573745f506f77416e644c6f673a3a31000000000000000000000000000000815250610e21565b61098a8161093b84610d14565b6109459190611272565b620186a064e8d4a510006040518060400160405280601181526020017f746573745f506f77416e644c6f673a3a32000000000000000000000000000000815250610e91565b505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561025d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161023f575050505050905090565b6000610a07670de0b6b3a7640000608084901b6112a0565b92915050565b600080600083600003610a295750600160801b9150610a079050565b50826000811215610a3b579015906000035b62100000811015610c3457600160801b9250846fffffffffffffffffffffffffffffffff811115610a6e57911591600019045b6001821615610a7f5792830260801c925b800260801c6002821615610a955792830260801c925b800260801c6004821615610aab5792830260801c925b800260801c6008821615610ac15792830260801c925b800260801c6010821615610ad75792830260801c925b800260801c6020821615610aed5792830260801c925b800260801c6040821615610b035792830260801c925b8002608090811c90821615610b1a5792830260801c925b800260801c610100821615610b315792830260801c925b800260801c610200821615610b485792830260801c925b800260801c610400821615610b5f5792830260801c925b800260801c610800821615610b765792830260801c925b800260801c611000821615610b8d5792830260801c925b800260801c612000821615610ba45792830260801c925b800260801c614000821615610bbb5792830260801c925b800260801c618000821615610bd25792830260801c925b800260801c62010000821615610bea5792830260801c925b800260801c62020000821615610c025792830260801c925b800260801c62040000821615610c1a5792830260801c925b800260801c62080000821615610c325792830260801c925b505b82600003610c6357604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b81610c6e5782610c7a565b610c7a836000196112a0565b95945050505050565b60006080610c9983670de0b6b3a76400006112b4565b901c92915050565b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390610cde9087908790879087906004016112cb565b60006040518083038186803b158015610cf657600080fd5b505afa158015610d0a573d6000803e3d6000fd5b5050505050505050565b600081600103610d275750607f19919050565b81600003610d485760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310610d7057506001610d8b565b5060001982600160fe1b81610d8757610d87611246565b0492505b6000610d9a607f85901c610ece565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114610e16576f400000000000000000000000000000005b6000811315610e1457908002607f1c90600160801b8210610e0c579384019360019190911c905b60011d610de5565b505b50500260011b919050565b60405163f8d33b9b60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f8d33b9b90610e5c908690869086906004016112fa565b60006040518083038186803b158015610e7457600080fd5b505afa158015610e88573d6000803e3d6000fd5b50505050505050565b604051637793beb960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ef277d7290610cde9087908790879087906004016112cb565b60006fffffffffffffffffffffffffffffffff821115610ef05750608090811c905b67ffffffffffffffff821115610f0857604091821c91015b63ffffffff821115610f1c57602091821c91015b61ffff821115610f2e57601091821c91015b60ff821115610f3f57600891821c91015b600f821115610f5057600491821c91015b6003821115610f6157600291821c91015b6001821115610f6e576001015b919050565b6020808252825182820181905260009190848201906040850190845b81811015610fb45783516001600160a01b031683529284019291840191600101610f8f565b50909695505050505050565b6000815180845260005b81811015610fe657602081850181015186830182015201610fca565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156110b657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156110a057605f1989850301835261108e848651610fc0565b948e01949350918d0191600101611072565b505050978a01979450509188019160010161102d565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561118257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561116d5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019061112b565b50978a019795505050918701916001016110ee565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111e657603f198886030184526111d4858351610fc0565b945092850192908501906001016111b8565b5092979650505050505050565b600181811c9082168061120757607f821691505b60208210810361122757634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561123f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008261128157611281611246565b600160ff1b82146000198414161561129b5761129b61125c565b500590565b6000826112af576112af611246565b500490565b8082028115828204841417610a0757610a0761125c565b8481528360208201528260408201526080606082015260006112f06080830184610fc0565b9695505050505050565b838152826020820152606060408201526000610c7a6060830184610fc056fea26469706673582212206cf1957197bb18168d0ca5a5076da87241076a37eabbcc3ae1d3a73cf80ede0c64736f6c63430008140033","sourceMap":"148:942:119:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;148:942:119;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806385226c8111610081578063ba414fa61161005b578063ba414fa614610160578063cb7f2d4f14610178578063e20c9f711461018057600080fd5b806385226c811461013b578063916a17c614610150578063b5508aa91461015857600080fd5b80633e5e3c23116100b25780633e5e3c23146101165780633f7286f41461011e57806366d9a9a01461012657600080fd5b80630b2dea9f146100d95780631ed7831c146100e35780632ade388014610101575b600080fd5b6100e1610188565b005b6100eb610205565b6040516100f89190610f73565b60405180910390f35b610109610267565b6040516100f89190611006565b6100eb6103a9565b6100eb610409565b61012e610469565b6040516100f891906110c6565b610143610564565b6040516100f89190611191565b61012e610634565b61014361072f565b6101686107ff565b60405190151581526020016100f8565b6100e16108ba565b6100eb61098f565b60006101a8620186a06101a2670de111a6b7de40006109ef565b90610a0d565b90506102026101b682610c83565b6904a975d3d9403da5b88064e8d4a510006040518060400160405280600b81526020017f746573745f506f773a3a31000000000000000000000000000000000000000000815250610ca1565b50565b6060601480548060200260200160405190810160405280929190818152602001828054801561025d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161023f575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103a057600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103895783829060005260206000200180546102fc906111f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610328906111f3565b80156103755780601f1061034a57610100808354040283529160200191610375565b820191906000526020600020905b81548152906001019060200180831161035857829003601f168201915b5050505050815260200190600101906102dd565b50505050815250508152602001906001019061028b565b50505050905090565b6060601680548060200260200160405190810160405280929190818152602001828054801561025d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161023f575050505050905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561025d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161023f575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103a05760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561054c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104f95790505b5050505050815250508152602001906001019061048d565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103a05783829060005260206000200180546105a7906111f3565b80601f01602080910402602001604051908101604052809291908181526020018280546105d3906111f3565b80156106205780601f106105f557610100808354040283529160200191610620565b820191906000526020600020905b81548152906001019060200180831161060357829003601f168201915b505050505081526020019060010190610588565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103a05760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561071757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106c45790505b50505050508152505081526020019060010190610658565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103a0578382906000526020600020018054610772906111f3565b80601f016020809104026020016040519081016040528092919081815260200182805461079e906111f3565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b505050505081526020019060010190610753565b60075460009060ff1615610817575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801561088f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b3919061122d565b1415905090565b60006108cd670de111a6b7de40006109ef565b905060006108de82620186a0610a0d565b905060006108eb83610d14565b905061092e8160006040518060400160405280601181526020017f746573745f506f77416e644c6f673a3a31000000000000000000000000000000815250610e21565b61098a8161093b84610d14565b6109459190611272565b620186a064e8d4a510006040518060400160405280601181526020017f746573745f506f77416e644c6f673a3a32000000000000000000000000000000815250610e91565b505050565b6060601380548060200260200160405190810160405280929190818152602001828054801561025d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161023f575050505050905090565b6000610a07670de0b6b3a7640000608084901b6112a0565b92915050565b600080600083600003610a295750600160801b9150610a079050565b50826000811215610a3b579015906000035b62100000811015610c3457600160801b9250846fffffffffffffffffffffffffffffffff811115610a6e57911591600019045b6001821615610a7f5792830260801c925b800260801c6002821615610a955792830260801c925b800260801c6004821615610aab5792830260801c925b800260801c6008821615610ac15792830260801c925b800260801c6010821615610ad75792830260801c925b800260801c6020821615610aed5792830260801c925b800260801c6040821615610b035792830260801c925b8002608090811c90821615610b1a5792830260801c925b800260801c610100821615610b315792830260801c925b800260801c610200821615610b485792830260801c925b800260801c610400821615610b5f5792830260801c925b800260801c610800821615610b765792830260801c925b800260801c611000821615610b8d5792830260801c925b800260801c612000821615610ba45792830260801c925b800260801c614000821615610bbb5792830260801c925b800260801c618000821615610bd25792830260801c925b800260801c62010000821615610bea5792830260801c925b800260801c62020000821615610c025792830260801c925b800260801c62040000821615610c1a5792830260801c925b800260801c62080000821615610c325792830260801c925b505b82600003610c6357604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b81610c6e5782610c7a565b610c7a836000196112a0565b95945050505050565b60006080610c9983670de0b6b3a76400006112b4565b901c92915050565b604051631ecb7d3360e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d90631ecb7d3390610cde9087908790879087906004016112cb565b60006040518083038186803b158015610cf657600080fd5b505afa158015610d0a573d6000803e3d6000fd5b5050505050505050565b600081600103610d275750607f19919050565b81600003610d485760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310610d7057506001610d8b565b5060001982600160fe1b81610d8757610d87611246565b0492505b6000610d9a607f85901c610ece565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114610e16576f400000000000000000000000000000005b6000811315610e1457908002607f1c90600160801b8210610e0c579384019360019190911c905b60011d610de5565b505b50500260011b919050565b60405163f8d33b9b60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f8d33b9b90610e5c908690869086906004016112fa565b60006040518083038186803b158015610e7457600080fd5b505afa158015610e88573d6000803e3d6000fd5b50505050505050565b604051637793beb960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ef277d7290610cde9087908790879087906004016112cb565b60006fffffffffffffffffffffffffffffffff821115610ef05750608090811c905b67ffffffffffffffff821115610f0857604091821c91015b63ffffffff821115610f1c57602091821c91015b61ffff821115610f2e57601091821c91015b60ff821115610f3f57600891821c91015b600f821115610f5057600491821c91015b6003821115610f6157600291821c91015b6001821115610f6e576001015b919050565b6020808252825182820181905260009190848201906040850190845b81811015610fb45783516001600160a01b031683529284019291840191600101610f8f565b50909695505050505050565b6000815180845260005b81811015610fe657602081850181015186830182015201610fca565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156110b657603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156110a057605f1989850301835261108e848651610fc0565b948e01949350918d0191600101611072565b505050978a01979450509188019160010161102d565b50919a9950505050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561118257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561116d5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019061112b565b50978a019795505050918701916001016110ee565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111e657603f198886030184526111d4858351610fc0565b945092850192908501906001016111b8565b5092979650505050505050565b600181811c9082168061120757607f821691505b60208210810361122757634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561123f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008261128157611281611246565b600160ff1b82146000198414161561129b5761129b61125c565b500590565b6000826112af576112af611246565b500490565b8082028115828204841417610a0757610a0761125c565b8481528360208201528260408201526080606082015260006112f06080830184610fc0565b9695505050505050565b838152826020820152606060408201526000610c7a6060830184610fc056fea26469706673582212206cf1957197bb18168d0ca5a5076da87241076a37eabbcc3ae1d3a73cf80ede0c64736f6c63430008140033","sourceMap":"148:942:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;231:192;;;:::i;:::-;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;3221:133::-;;;:::i;2922:141::-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;5466:14:127;;5459:22;5441:41;;5429:2;5414:18;1243:204:1;5301:187:127;429:317:119;;;:::i;2304:142:5:-;;;:::i;231:192:119:-;275:11;289:38;319:7;289:25;304:9;289:14;:25::i;:::-;:29;;:38::i;:::-;275:52;;338:78;356:15;367:3;356:10;:15::i;:::-;373:21;396:4;338:78;;;;;;;;;;;;;;;;;:17;:78::i;:::-;265:158;231:192::o;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3221:133::-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;6052:74:127;;;1398:17:1;6142:18:127;;;6135:34;1428:1:1;;1377:7;;6025:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;429:317:119:-;479:12;494:25;509:9;494:14;:25::i;:::-;479:40;-1:-1:-1;529:11:119;543:17;479:40;552:7;543:8;:17::i;:::-;529:31;;571:15;589:11;:4;:9;:11::i;:::-;571:29;;611:42;620:8;630:1;611:42;;;;;;;;;;;;;;;;;:8;:42::i;:::-;663:76;694:8;681:10;:3;:8;:10::i;:::-;:21;;;;:::i;:::-;704:7;713:4;663:76;;;;;;;;;;;;;;;;;:17;:76::i;:::-;469:277;;;429:317::o;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;752:108:119:-;810:7;836:17;849:4;842:3;837:8;;;836:17;:::i;:::-;829:24;752:108;-1:-1:-1;;752:108:119:o;4113:3600:82:-;4170:14;4196:11;4217:12;4244:1;4249;4244:6;4240:34;;-1:-1:-1;;;;301:17:65;-1:-1:-1;4252:22:82;;-1:-1:-1;4252:22:82;4240:34;-1:-1:-1;4316:1:82;4343;4333:12;;4330:109;;;4411:14;;;4376:1;4372:12;4330:109;4470:8;4463:4;:15;4459:3060;;;-1:-1:-1;;;301:17:65;-1:-1:-1;4574:1:82;4601:34;4595:41;;4592:161;;;4721:14;;;-1:-1:-1;;4670:20:82;4592:161;4784:3;4778:4;4774:14;4771:62;;;4810:20;;;4805:3;4801:30;;4771:62;4870:21;;4865:3;4861:31;4922:3;4912:14;;4909:62;;;4948:20;;;4943:3;4939:30;;4909:62;5008:21;;5003:3;4999:31;5060:3;5050:14;;5047:62;;;5086:20;;;5081:3;5077:30;;5047:62;5146:21;;5141:3;5137:31;5198:3;5188:14;;5185:62;;;5224:20;;;5219:3;5215:30;;5185:62;5284:21;;5279:3;5275:31;5336:4;5326:15;;5323:63;;;5363:20;;;5358:3;5354:30;;5323:63;5423:21;;5418:3;5414:31;5475:4;5465:15;;5462:63;;;5502:20;;;5497:3;5493:30;;5462:63;5562:21;;5557:3;5553:31;5614:4;5604:15;;5601:63;;;5641:20;;;5636:3;5632:30;;5601:63;5701:21;;5696:3;5692:31;;;;5743:15;;5740:63;;;5780:20;;;5775:3;5771:30;;5740:63;5840:21;;5835:3;5831:31;5892:5;5882:16;;5879:64;;;5920:20;;;5915:3;5911:30;;5879:64;5980:21;;5975:3;5971:31;6032:5;6022:16;;6019:64;;;6060:20;;;6055:3;6051:30;;6019:64;6120:21;;6115:3;6111:31;6172:5;6162:16;;6159:64;;;6200:20;;;6195:3;6191:30;;6159:64;6260:21;;6255:3;6251:31;6312:5;6302:16;;6299:64;;;6340:20;;;6335:3;6331:30;;6299:64;6400:21;;6395:3;6391:31;6452:6;6442:17;;6439:65;;;6481:20;;;6476:3;6472:30;;6439:65;6541:21;;6536:3;6532:31;6593:6;6583:17;;6580:65;;;6622:20;;;6617:3;6613:30;;6580:65;6682:21;;6677:3;6673:31;6734:6;6724:17;;6721:65;;;6763:20;;;6758:3;6754:30;;6721:65;6823:21;;6818:3;6814:31;6875:6;6865:17;;6862:65;;;6904:20;;;6899:3;6895:30;;6862:65;6964:21;;6959:3;6955:31;7016:7;7006:18;;7003:66;;;7046:20;;;7041:3;7037:30;;7003:66;7106:21;;7101:3;7097:31;7158:7;7148:18;;7145:66;;;7188:20;;;7183:3;7179:30;;7145:66;7248:21;;7243:3;7239:31;7300:7;7290:18;;7287:66;;;7330:20;;;7325:3;7321:30;;7287:66;7390:21;;7385:3;7381:31;7442:7;7432:18;;7429:66;;;7472:20;;;7467:3;7463:30;;7429:66;;4459:3060;7589:6;7599:1;7589:11;7585:59;;7609:35;;-1:-1:-1;;;7609:35:82;;;;;7128:25:127;;;7169:18;;;7162:34;;;7101:18;;7609:35:82;;;;;;;7585:59;7662:6;:44;;7700:6;7662:44;;;7671:26;7691:6;-1:-1:-1;;7671:26:82;:::i;:::-;7655:51;4113:3600;-1:-1:-1;;;;;4113:3600:82:o;866:104:119:-;920:7;960:3;947:8;:1;951:4;947:8;:::i;:::-;946:17;;;866:104;-1:-1:-1;;866:104:119:o;18636:288:1:-;18862:55;;-1:-1:-1;;;18862:55:1;;:20;;;;:55;;18883:4;;18889:5;;18896:15;;18913:3;;18862:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18636:288;;;;:::o;1369:2370:82:-;1417:13;1828:1;1833;1828:6;1824:23;;-1:-1:-1;;;1843:4:82;1369:2370;-1:-1:-1;1369:2370:82:o;1824:23::-;1861:1;1866;1861:6;1857:50;;1876:31;;-1:-1:-1;;;1876:31:82;;;;;;;;;;;1857:50;1924:1;1918:7;;;;;2016:11;534:21;2045:14;;2041:219;;-1:-1:-1;2086:1:82;2041:219;;;-1:-1:-1;;;2244:1:82;-1:-1:-1;;;2244:1:82;2224:21;;;;:::i;:::-;;2220:25;;2041:219;2396:9;2408:44;496:3;2409:1;:21;;2408:42;:44::i;:::-;2699:29;496:3;2699:29;;;;;-1:-1:-1;2396:56:82;;;-1:-1:-1;2794:6:82;;;534:21;2873:14;;2869:735;;3118:27;3091:499;3156:1;3148:5;:9;3091:499;;;3199:5;;;496:3;3198:27;;-1:-1:-1;;;3313:32:82;;3309:263;;3440:15;;;;3548:1;3542:7;;;;;3309:263;3169:1;3159:11;3091:499;;;;2869:735;-1:-1:-1;;3703:13:82;3721:1;3702:20;;1369:2370;-1:-1:-1;1369:2370:82:o;13822:132:1:-;13918:29;;-1:-1:-1;;;13918:29:1;;:11;;;;:29;;13930:4;;13936:5;;13943:3;;13918:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13822:132;;;:::o;19760:286::-;19984:55;;-1:-1:-1;;;19984:55:1;;:20;;;;:55;;20005:4;;20011:5;;20018:15;;20035:3;;19984:55;;;:::i;1675:971:75:-;1737:9;1790:34;1787:1;1784:41;1781:120;;;-1:-1:-1;1853:3:75;1849:11;;;;1781:120;1923:18;1920:1;1917:25;1914:112;;;1970:2;1966:10;;;;2000:12;1914:112;2048:10;2045:1;2042:17;2039:104;;;2087:2;2083:10;;;;2117:12;2039:104;2165:6;2162:1;2159:13;2156:100;;;2200:2;2196:10;;;;2230:12;2156:100;2278:4;2275:1;2272:11;2269:96;;;2311:1;2307:9;;;;2340:11;2269:96;2387:3;2384:1;2381:10;2378:95;;;2419:1;2415:9;;;;2448:11;2378:95;2495:3;2492:1;2489:10;2486:95;;;2527:1;2523:9;;;;2556:11;2486:95;2603:3;2600:1;2597:10;2594:36;;;2626:1;2617:11;2594:36;1675:971;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:423::-;742:3;780:5;774:12;807:6;802:3;795:19;832:1;842:162;856:6;853:1;850:13;842:162;;;918:4;974:13;;;970:22;;964:29;946:11;;;942:20;;935:59;871:12;842:162;;;846:3;1049:1;1042:4;1033:6;1028:3;1024:16;1020:27;1013:38;1112:4;1105:2;1101:7;1096:2;1088:6;1084:15;1080:29;1075:3;1071:39;1067:50;1060:57;;;700:423;;;;:::o;1128:1765::-;1361:2;1413:21;;;1483:13;;1386:18;;;1505:22;;;1332:4;;1361:2;1546;;1564:18;;;;1601:1;1644:15;;;1629:31;;1625:40;;1688:15;;;1332:4;;1752:1112;1768:6;1763:3;1760:15;1752:1112;;;-1:-1:-1;;1837:22:127;;;1833:36;1821:49;;1893:13;;1980:9;;-1:-1:-1;;;;;1976:58:127;1961:74;;2074:11;;2068:18;2106:15;;;2099:27;;;2187:19;;1933:15;;;2219:24;;;2400:21;;;;2266:2;2348:17;;;2336:30;;2332:39;;;2290:15;;;;2445:1;2459:296;2475:8;2470:3;2467:17;2459:296;;;2581:2;2577:7;2568:6;2560;2556:19;2552:33;2545:5;2538:48;2613:42;2648:6;2637:8;2631:15;2613:42;:::i;:::-;2684:17;;;;2603:52;-1:-1:-1;2727:14:127;;;;2503:1;2494:11;2459:296;;;-1:-1:-1;;;2842:12:127;;;;2778:6;-1:-1:-1;;2807:15:127;;;;1794:1;1785:11;1752:1112;;;-1:-1:-1;2881:6:127;;1128:1765;-1:-1:-1;;;;;;;;;;1128:1765:127:o;2898:1590::-;3100:4;3129:2;3169;3158:9;3154:18;3199:2;3188:9;3181:21;3222:6;3257;3251:13;3288:6;3280;3273:22;3314:2;3304:12;;3347:2;3336:9;3332:18;3325:25;;3409:2;3399:6;3396:1;3392:14;3381:9;3377:30;3373:39;3447:2;3439:6;3435:15;3468:1;3489;3499:960;3515:6;3510:3;3507:15;3499:960;;;3584:22;;;-1:-1:-1;;3580:36:127;3568:49;;3640:13;;3727:9;;-1:-1:-1;;;;;3723:58:127;3708:74;;3821:11;;3815:18;3853:15;;;3846:27;;;3934:19;;3680:15;;;3966:24;;;4056:21;;;;4101:1;;4024:2;4012:15;;;4115:236;4131:8;4126:3;4123:17;4115:236;;;4212:15;;4229:20;4208:42;4194:57;;4320:17;;;;4159:1;4150:11;;;;;4277:14;;;;4115:236;;;-1:-1:-1;4437:12:127;;;;4374:5;-1:-1:-1;;;4402:15:127;;;;3541:1;3532:11;3499:960;;;-1:-1:-1;4476:6:127;;2898:1590;-1:-1:-1;;;;;;;;;2898:1590:127:o;4493:803::-;4655:4;4684:2;4724;4713:9;4709:18;4754:2;4743:9;4736:21;4777:6;4812;4806:13;4843:6;4835;4828:22;4881:2;4870:9;4866:18;4859:25;;4943:2;4933:6;4930:1;4926:14;4915:9;4911:30;4907:39;4893:53;;4981:2;4973:6;4969:15;5002:1;5012:255;5026:6;5023:1;5020:13;5012:255;;;5119:2;5115:7;5103:9;5095:6;5091:22;5087:36;5082:3;5075:49;5147:40;5180:6;5171;5165:13;5147:40;:::i;:::-;5137:50;-1:-1:-1;5245:12:127;;;;5210:15;;;;5048:1;5041:9;5012:255;;;-1:-1:-1;5284:6:127;;4493:803;-1:-1:-1;;;;;;;4493:803:127:o;5493:380::-;5572:1;5568:12;;;;5615;;;5636:61;;5690:4;5682:6;5678:17;5668:27;;5636:61;5743:2;5735:6;5732:14;5712:18;5709:38;5706:161;;5789:10;5784:3;5780:20;5777:1;5770:31;5824:4;5821:1;5814:15;5852:4;5849:1;5842:15;5706:161;;5493:380;;;:::o;6180:184::-;6250:6;6303:2;6291:9;6282:7;6278:23;6274:32;6271:52;;;6319:1;6316;6309:12;6271:52;-1:-1:-1;6342:16:127;;6180:184;-1:-1:-1;6180:184:127:o;6369:127::-;6430:10;6425:3;6421:20;6418:1;6411:31;6461:4;6458:1;6451:15;6485:4;6482:1;6475:15;6501:127;6562:10;6557:3;6553:20;6550:1;6543:31;6593:4;6590:1;6583:15;6617:4;6614:1;6607:15;6633:193;6672:1;6698;6688:35;;6703:18;;:::i;:::-;-1:-1:-1;;;6739:18:127;;-1:-1:-1;;6759:13:127;;6735:38;6732:64;;;6776:18;;:::i;:::-;-1:-1:-1;6810:10:127;;6633:193::o;6831:120::-;6871:1;6897;6887:35;;6902:18;;:::i;:::-;-1:-1:-1;6936:9:127;;6831:120::o;7207:168::-;7280:9;;;7311;;7328:15;;;7322:22;;7308:37;7298:71;;7349:18;;:::i;7380:435::-;7613:6;7602:9;7595:25;7656:6;7651:2;7640:9;7636:18;7629:34;7699:6;7694:2;7683:9;7679:18;7672:34;7742:3;7737:2;7726:9;7722:18;7715:31;7576:4;7763:46;7804:3;7793:9;7789:19;7781:6;7763:46;:::i;:::-;7755:54;7380:435;-1:-1:-1;;;;;;7380:435:127:o;7820:358::-;8021:6;8010:9;8003:25;8064:6;8059:2;8048:9;8044:18;8037:34;8107:2;8102;8091:9;8087:18;8080:30;7984:4;8127:45;8168:2;8157:9;8153:18;8145:6;8127:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_Pow()":"0b2dea9f","test_PowAndLog()":"cb7f2d4f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint128x128Math__LogUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_Pow\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_PowAndLog\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/Uint128x128Math.t.sol\":\"Uint128x128MathTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"test/libraries/math/Uint128x128Math.t.sol\":{\"keccak256\":\"0x001209ffe2b7c522fe1a3e8d5729771db43f9eb0a27328cc5bece2b35eb48b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0650e4f48920f761493d81e3f03e062c2772a82f28c45addc9509b95f22bff7d\",\"dweb:/ipfs/QmQ5t5jKkrDzig5vUheP9Yvq87MQMqucGmBfr4SW3KzwtY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Uint128x128Math__LogUnderflow"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"int256","name":"y","type":"int256"}],"type":"error","name":"Uint128x128Math__PowUnderflow"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_Pow"},{"inputs":[],"stateMutability":"pure","type":"function","name":"test_PowAndLog"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/Uint128x128Math.t.sol":"Uint128x128MathTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2","urls":["bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009","dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Uint128x128Math.sol":{"keccak256":"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba","urls":["bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f","dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb"],"license":"MIT"},"test/libraries/math/Uint128x128Math.t.sol":{"keccak256":"0x001209ffe2b7c522fe1a3e8d5729771db43f9eb0a27328cc5bece2b35eb48b7d","urls":["bzz-raw://0650e4f48920f761493d81e3f03e062c2772a82f28c45addc9509b95f22bff7d","dweb:/ipfs/QmQ5t5jKkrDzig5vUheP9Yvq87MQMqucGmBfr4SW3KzwtY"],"license":"MIT"}},"version":1},"id":119} \ No newline at end of file diff --git a/abi/Uint256x256Math.sol/Uint256x256Math.json b/abi/Uint256x256Math.sol/Uint256x256Math.json deleted file mode 100644 index 1788c947..00000000 --- a/abi/Uint256x256Math.sol/Uint256x256Math.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]},{"type":"error","name":"Uint256x256Math__MulShiftOverflow","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122070ec58418bc3213673cba0d78bcbc07dd1d8a8e4790a1c3890ae7a3846147dc164736f6c63430008140033","sourceMap":"249:11175:83:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;249:11175:83;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122070ec58418bc3213673cba0d78bcbc07dd1d8a8e4790a1c3890ae7a3846147dc164736f6c63430008140033","sourceMap":"249:11175:83:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Trader Sovryn LB\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Uint256x256 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for full precision calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Uint256x256Math.sol\":\"Uint256x256Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulShiftOverflow"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/libraries/math/Uint256x256Math.sol":"Uint256x256Math"},"evmVersion":"paris","libraries":{}},"sources":{"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file diff --git a/abi/Uint256x256Math.t.sol/Uint256x256MathTest.json b/abi/Uint256x256Math.t.sol/Uint256x256MathTest.json deleted file mode 100644 index 9f02c4f0..00000000 --- a/abi/Uint256x256Math.t.sol/Uint256x256MathTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testFuzz_MulDivRoundDown","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_MulDivRoundUp","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_ShiftDivRoundDown","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"shift","type":"uint8","internalType":"uint8"},{"name":"denominator","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_ShiftDivRoundUp","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"shift","type":"uint8","internalType":"uint8"},{"name":"denominator","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_Sqrt","inputs":[{"name":"x","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"testFuzz_mulShiftRoundDown","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"shift","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_mulShiftRoundUp","inputs":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"},{"name":"shift","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"Uint256x256Math__MulDivOverflow","inputs":[]},{"type":"error","name":"Uint256x256Math__MulShiftOverflow","inputs":[]}],"bytecode":{"object":"0x6080604052600b805460ff1916600117905534801561001d57600080fd5b50611cbe8061002d6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063916a17c6116100b2578063ccc03f2911610081578063e41af8f511610066578063e41af8f51461020b578063e71d50d61461021e578063f96370ea1461023157600080fd5b8063ccc03f29146101f0578063e20c9f711461020357600080fd5b8063916a17c6146101b5578063b5508aa9146101bd578063ba414fa6146101c5578063bba78329146101dd57600080fd5b80633f06495c116100ee5780633f06495c146101705780633f7286f41461018357806366d9a9a01461018b57806385226c81146101a057600080fd5b80631ed7831c146101205780632ade38801461013e5780633286bd8e146101535780633e5e3c2314610168575b600080fd5b610128610244565b6040516101359190611880565b60405180910390f35b6101466102a6565b6040516101359190611913565b6101666101613660046119e4565b6103e8565b005b6101286104e2565b61016661017e366004611a19565b610542565b610128610786565b6101936107e6565b6040516101359190611a45565b6101a86108e1565b6040516101359190611b10565b6101936109b1565b6101a8610aac565b6101cd610b7c565b6040519015158152602001610135565b6101666101eb366004611b72565b610c37565b6101666101fe366004611a19565b610cf5565b610128610e96565b610166610219366004611b8b565b610ef6565b61016661022c366004611b8b565b61107e565b61016661023f3660046119e4565b6112c2565b6060601480548060200260200160405190810160405280929190818152602001828054801561029c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161027e575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103df57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103c857838290600052602060002001805461033b90611bc0565b80601f016020809104026020016040519081016040528092919081815260200182805461036790611bc0565b80156103b45780601f10610389576101008083540402835291602001916103b4565b820191906000526020600020905b81548152906001019060200180831161039757829003601f168201915b50505050508152602001906001019061031c565b5050505081525050815260200190600101906102ca565b50505050905090565b60006103f484846113b0565b91505060ff821681901c1561048257604051630618f58760e51b8152638e471a8960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561045657600080fd5b505af115801561046a573d6000803e3d6000fd5b5061047c9250869150859050846113cf565b506104dc565b6104dc6104908585856113cf565b6104a18686600160ff88161b61143d565b6040518060400160405280601d81526020017f7465737446757a7a5f6d756c5368696674526f756e64446f776e3a3a31000000815250611469565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561029c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027e575050505050905090565b806000036105d0577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105a857600080fd5b505af11580156105bc573d6000803e3d6000fd5b506105ce9250859150849050836114d9565b505b60006105dc84846113b0565b91505080158015906105ee5750808211155b1561066d57604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5061047c92508691508590508461143d565b600061067a85858561143d565b9050828061068a5761068a611bf4565b84860915610735576000198103610727577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106f957600080fd5b505af115801561070d573d6000803e3d6000fd5b5061071f9250879150869050856114d9565b505050505050565b610732600182611c20565b90505b61077f6107438686866114d9565b826040518060400160405280601981526020017f7465737446757a7a5f4d756c446976526f756e6455703a3a3100000000000000815250611469565b5050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801561029c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027e575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103df5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156108c957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108765790505b5050505050815250508152602001906001019061080a565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103df57838290600052602060002001805461092490611bc0565b80601f016020809104026020016040519081016040528092919081815260200182805461095090611bc0565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b505050505081526020019060010190610905565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103df5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610a9457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a415790505b505050505081525050815260200190600101906109d5565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103df578382906000526020600020018054610aef90611bc0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1b90611bc0565b8015610b685780601f10610b3d57610100808354040283529160200191610b68565b820191906000526020600020905b815481529060010190602001808311610b4b57829003601f168201915b505050505081526020019060010190610ad0565b60075460009060ff1615610b94575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190611c39565b1415905090565b6000610c4282611511565b9050610c8d610c518280611c52565b836040518060400160405280601081526020017f7465737446757a7a5f537172743a3a3100000000000000000000000000000000815250611583565b6000610c9a826001611c20565b905080800281808281610caf57610caf611bf4565b04036104dc576104dc81856040518060400160405280601081526020017f7465737446757a7a5f537172743a3a32000000000000000000000000000000008152506115be565b80600003610d81577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b506104dc92508591508490508361143d565b821580610d8c575081155b15610de157610ddc610d9f84848461143d565b60006040518060400160405280601b81526020017f7465737446757a7a5f4d756c446976526f756e64446f776e3a3a310000000000815250611469565b505050565b6000610ded84846113b0565b9150508015801590610dff5750808211155b15610e4257604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161062d565b6104dc610e5085858561143d565b610e5b8686866115f9565b6040518060400160405280601b81526020017f7465737446757a7a5f4d756c446976526f756e64446f776e3a3a320000000000815250611469565b6060601380548060200260200160405190810160405280929190818152602001828054801561029c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027e575050505050905090565b80600003610f82577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f5c57600080fd5b505af1158015610f70573d6000803e3d6000fd5b506104dc9250859150849050836116a8565b6000610f9484600160ff86161b6113b0565b9150508015801590610fa65750808211155b1561102457604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610ffe57600080fd5b505af1158015611012573d6000803e3d6000fd5b5061047c9250869150859050846116a8565b6104dc6110328585856116a8565b61104386600160ff88161b866115f9565b6040518060400160405280601d81526020017f7465737446757a7a5f5368696674446976526f756e64446f776e3a3a31000000815250611469565b8060000361110a577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b506104dc9250859150849050836116d2565b600061111c84600160ff86161b6113b0565b915050801580159061112e5750808211155b156111ac57604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b5061047c9250869150859050846116d2565b60006111bf85600160ff87161b856115f9565b905082806111cf576111cf611bf4565b600160ff86161b86091561127857600019810361126a577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b5061071f9250879150869050856116d2565b611275600182611c20565b90505b61077f6112868686866116d2565b826040518060400160405280601b81526020017f7465737446757a7a5f5368696674446976526f756e6455703a3a310000000000815250611469565b60006112ce84846113b0565b91505060ff821681901c1561135657604051630618f58760e51b8152638e471a8960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561133057600080fd5b505af1158015611344573d6000803e3d6000fd5b5061047c925086915085905084611708565b6104dc611364858585611708565b6113758686600160ff88161b6114d9565b6040518060400160405280601b81526020017f7465737446757a7a5f6d756c5368696674526f756e6455703a3a310000000000815250611469565b6000806000198385098385029250828110838203039150509250929050565b60008060006113de86866113b0565b91509150816000146113f4578360ff1682901c92505b801561143457600160ff85161b811061142057604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b600080600061144c86866113b0565b9150915061145d868686858561172b565b925050505b9392505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906114a490869086908690600401611c69565b60006040518083038186803b1580156114bc57600080fd5b505afa1580156114d0573d6000803e3d6000fd5b50505050505050565b60006114e684848461143d565b905081806114f6576114f6611bf4565b8385091561146257611509600182611c20565b949350505050565b60008160000361152357506000919050565b600061152e836117db565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff16905082821061157d5782611462565b50919050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d906114a490869086908690600401611c69565b604051636cd1e26960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d9a3c4d2906114a490869086908690600401611c69565b60008080600019858709858702925082811083820303915050806000036116335783828161162957611629611bf4565b0492505050611462565b80841161163f57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600060ff831684811b9061ffff6101008290031686901c9061145d9087906001901b86858561172b565b60006116df8484846116a8565b905081806116ef576116ef611bf4565b600160ff85161b85091561146257611509600182611c20565b60006117158484846113cf565b9050600160ff83161b806114f6576114f6611bf4565b60008160000361174c5783838161174457611744611bf4565b0490506117d2565b83821061176c576040516313eae71560e01b815260040160405180910390fd5b60008486880960018619810187169687900496600081900381900490910186831190950394850291909503949094049390931792505060026003840281188085028203028085028203028085028203028085028203028085028203028085029091030282025b95945050505050565b60006fffffffffffffffffffffffffffffffff8211156117fd5750608090811c905b67ffffffffffffffff82111561181557604091821c91015b63ffffffff82111561182957602091821c91015b61ffff82111561183b57601091821c91015b60ff82111561184c57600891821c91015b600f82111561185d57600491821c91015b600382111561186e57600291821c91015b600182111561187b576001015b919050565b6020808252825182820181905260009190848201906040850190845b818110156118c15783516001600160a01b03168352928401929184019160010161189c565b50909695505050505050565b6000815180845260005b818110156118f3576020818501810151868301820152016118d7565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156119c357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156119ad57605f1989850301835261199b8486516118cd565b948e01949350918d019160010161197f565b505050978a01979450509188019160010161193a565b50919a9950505050505050505050565b803560ff8116811461187b57600080fd5b6000806000606084860312156119f957600080fd5b8335925060208401359150611a10604085016119d3565b90509250925092565b600080600060608486031215611a2e57600080fd5b505081359360208301359350604090920135919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611b0157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611aec5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611aaa565b50978a01979550505091870191600101611a6d565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b6557603f19888603018452611b538583516118cd565b94509285019290850190600101611b37565b5092979650505050505050565b600060208284031215611b8457600080fd5b5035919050565b600080600060608486031215611ba057600080fd5b83359250611bb0602085016119d3565b9150604084013590509250925092565b600181811c90821680611bd457607f821691505b60208210810361157d57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611c3357611c33611c0a565b92915050565b600060208284031215611c4b57600080fd5b5051919050565b8082028115828204841417611c3357611c33611c0a565b8381528260208201526060604082015260006117d260608301846118cd56fea2646970667358221220bbd848e9b87b3c68f7ff63accfe937f0dbe0e31b2519a834172fd77c6f4b37a364736f6c63430008140033","sourceMap":"148:9705:120:-:0;;;3126:44:2;;;-1:-1:-1;;3126:44:2;3166:4;3126:44;;;148:9705:120;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061011b5760003560e01c8063916a17c6116100b2578063ccc03f2911610081578063e41af8f511610066578063e41af8f51461020b578063e71d50d61461021e578063f96370ea1461023157600080fd5b8063ccc03f29146101f0578063e20c9f711461020357600080fd5b8063916a17c6146101b5578063b5508aa9146101bd578063ba414fa6146101c5578063bba78329146101dd57600080fd5b80633f06495c116100ee5780633f06495c146101705780633f7286f41461018357806366d9a9a01461018b57806385226c81146101a057600080fd5b80631ed7831c146101205780632ade38801461013e5780633286bd8e146101535780633e5e3c2314610168575b600080fd5b610128610244565b6040516101359190611880565b60405180910390f35b6101466102a6565b6040516101359190611913565b6101666101613660046119e4565b6103e8565b005b6101286104e2565b61016661017e366004611a19565b610542565b610128610786565b6101936107e6565b6040516101359190611a45565b6101a86108e1565b6040516101359190611b10565b6101936109b1565b6101a8610aac565b6101cd610b7c565b6040519015158152602001610135565b6101666101eb366004611b72565b610c37565b6101666101fe366004611a19565b610cf5565b610128610e96565b610166610219366004611b8b565b610ef6565b61016661022c366004611b8b565b61107e565b61016661023f3660046119e4565b6112c2565b6060601480548060200260200160405190810160405280929190818152602001828054801561029c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161027e575b5050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103df57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103c857838290600052602060002001805461033b90611bc0565b80601f016020809104026020016040519081016040528092919081815260200182805461036790611bc0565b80156103b45780601f10610389576101008083540402835291602001916103b4565b820191906000526020600020905b81548152906001019060200180831161039757829003601f168201915b50505050508152602001906001019061031c565b5050505081525050815260200190600101906102ca565b50505050905090565b60006103f484846113b0565b91505060ff821681901c1561048257604051630618f58760e51b8152638e471a8960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561045657600080fd5b505af115801561046a573d6000803e3d6000fd5b5061047c9250869150859050846113cf565b506104dc565b6104dc6104908585856113cf565b6104a18686600160ff88161b61143d565b6040518060400160405280601d81526020017f7465737446757a7a5f6d756c5368696674526f756e64446f776e3a3a31000000815250611469565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561029c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027e575050505050905090565b806000036105d0577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105a857600080fd5b505af11580156105bc573d6000803e3d6000fd5b506105ce9250859150849050836114d9565b505b60006105dc84846113b0565b91505080158015906105ee5750808211155b1561066d57604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015b600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b5061047c92508691508590508461143d565b600061067a85858561143d565b9050828061068a5761068a611bf4565b84860915610735576000198103610727577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106f957600080fd5b505af115801561070d573d6000803e3d6000fd5b5061071f9250879150869050856114d9565b505050505050565b610732600182611c20565b90505b61077f6107438686866114d9565b826040518060400160405280601981526020017f7465737446757a7a5f4d756c446976526f756e6455703a3a3100000000000000815250611469565b5050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801561029c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027e575050505050905090565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103df5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156108c957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108765790505b5050505050815250508152602001906001019061080a565b60606018805480602002602001604051908101604052809291908181526020016000905b828210156103df57838290600052602060002001805461092490611bc0565b80601f016020809104026020016040519081016040528092919081815260200182805461095090611bc0565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b505050505081526020019060010190610905565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103df5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015610a9457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610a415790505b505050505081525050815260200190600101906109d5565b60606017805480602002602001604051908101604052809291908181526020016000905b828210156103df578382906000526020600020018054610aef90611bc0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1b90611bc0565b8015610b685780601f10610b3d57610100808354040283529160200191610b68565b820191906000526020600020905b815481529060010190602001808311610b4b57829003601f168201915b505050505081526020019060010190610ad0565b60075460009060ff1615610b94575060075460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190611c39565b1415905090565b6000610c4282611511565b9050610c8d610c518280611c52565b836040518060400160405280601081526020017f7465737446757a7a5f537172743a3a3100000000000000000000000000000000815250611583565b6000610c9a826001611c20565b905080800281808281610caf57610caf611bf4565b04036104dc576104dc81856040518060400160405280601081526020017f7465737446757a7a5f537172743a3a32000000000000000000000000000000008152506115be565b80600003610d81577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d5b57600080fd5b505af1158015610d6f573d6000803e3d6000fd5b506104dc92508591508490508361143d565b821580610d8c575081155b15610de157610ddc610d9f84848461143d565b60006040518060400160405280601b81526020017f7465737446757a7a5f4d756c446976526f756e64446f776e3a3a310000000000815250611469565b505050565b6000610ded84846113b0565b9150508015801590610dff5750808211155b15610e4257604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e09060240161062d565b6104dc610e5085858561143d565b610e5b8686866115f9565b6040518060400160405280601b81526020017f7465737446757a7a5f4d756c446976526f756e64446f776e3a3a320000000000815250611469565b6060601380548060200260200160405190810160405280929190818152602001828054801561029c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161027e575050505050905090565b80600003610f82577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f5c57600080fd5b505af1158015610f70573d6000803e3d6000fd5b506104dc9250859150849050836116a8565b6000610f9484600160ff86161b6113b0565b9150508015801590610fa65750808211155b1561102457604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b158015610ffe57600080fd5b505af1158015611012573d6000803e3d6000fd5b5061047c9250869150859050846116a8565b6104dc6110328585856116a8565b61104386600160ff88161b866115f9565b6040518060400160405280601d81526020017f7465737446757a7a5f5368696674446976526f756e64446f776e3a3a31000000815250611469565b8060000361110a577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b506104dc9250859150849050836116d2565b600061111c84600160ff86161b6113b0565b915050801580159061112e5750808211155b156111ac57604051630618f58760e51b81526313eae71560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b5061047c9250869150859050846116d2565b60006111bf85600160ff87161b856115f9565b905082806111cf576111cf611bf4565b600160ff86161b86091561127857600019810361126a577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b5061071f9250879150869050856116d2565b611275600182611c20565b90505b61077f6112868686866116d2565b826040518060400160405280601b81526020017f7465737446757a7a5f5368696674446976526f756e6455703a3a310000000000815250611469565b60006112ce84846113b0565b91505060ff821681901c1561135657604051630618f58760e51b8152638e471a8960e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e090602401600060405180830381600087803b15801561133057600080fd5b505af1158015611344573d6000803e3d6000fd5b5061047c925086915085905084611708565b6104dc611364858585611708565b6113758686600160ff88161b6114d9565b6040518060400160405280601b81526020017f7465737446757a7a5f6d756c5368696674526f756e6455703a3a310000000000815250611469565b6000806000198385098385029250828110838203039150509250929050565b60008060006113de86866113b0565b91509150816000146113f4578360ff1682901c92505b801561143457600160ff85161b811061142057604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b600080600061144c86866113b0565b9150915061145d868686858561172b565b925050505b9392505050565b6040516388b44c8560e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c85906114a490869086908690600401611c69565b60006040518083038186803b1580156114bc57600080fd5b505afa1580156114d0573d6000803e3d6000fd5b50505050505050565b60006114e684848461143d565b905081806114f6576114f6611bf4565b8385091561146257611509600182611c20565b949350505050565b60008160000361152357506000919050565b600061152e836117db565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff16905082821061157d5782611462565b50919050565b60405163d17d4b0d60e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d17d4b0d906114a490869086908690600401611c69565b604051636cd1e26960e11b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063d9a3c4d2906114a490869086908690600401611c69565b60008080600019858709858702925082811083820303915050806000036116335783828161162957611629611bf4565b0492505050611462565b80841161163f57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600060ff831684811b9061ffff6101008290031686901c9061145d9087906001901b86858561172b565b60006116df8484846116a8565b905081806116ef576116ef611bf4565b600160ff85161b85091561146257611509600182611c20565b60006117158484846113cf565b9050600160ff83161b806114f6576114f6611bf4565b60008160000361174c5783838161174457611744611bf4565b0490506117d2565b83821061176c576040516313eae71560e01b815260040160405180910390fd5b60008486880960018619810187169687900496600081900381900490910186831190950394850291909503949094049390931792505060026003840281188085028203028085028203028085028203028085028203028085028203028085029091030282025b95945050505050565b60006fffffffffffffffffffffffffffffffff8211156117fd5750608090811c905b67ffffffffffffffff82111561181557604091821c91015b63ffffffff82111561182957602091821c91015b61ffff82111561183b57601091821c91015b60ff82111561184c57600891821c91015b600f82111561185d57600491821c91015b600382111561186e57600291821c91015b600182111561187b576001015b919050565b6020808252825182820181905260009190848201906040850190845b818110156118c15783516001600160a01b03168352928401929184019160010161189c565b50909695505050505050565b6000815180845260005b818110156118f3576020818501810151868301820152016118d7565b506000602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156119c357603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156119ad57605f1989850301835261199b8486516118cd565b948e01949350918d019160010161197f565b505050978a01979450509188019160010161193a565b50919a9950505050505050505050565b803560ff8116811461187b57600080fd5b6000806000606084860312156119f957600080fd5b8335925060208401359150611a10604085016119d3565b90509250925092565b600080600060608486031215611a2e57600080fd5b505081359360208301359350604090920135919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611b0157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015611aec5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611aaa565b50978a01979550505091870191600101611a6d565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b6557603f19888603018452611b538583516118cd565b94509285019290850190600101611b37565b5092979650505050505050565b600060208284031215611b8457600080fd5b5035919050565b600080600060608486031215611ba057600080fd5b83359250611bb0602085016119d3565b9150604084013590509250925092565b600181811c90821680611bd457607f821691505b60208210810361157d57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611c3357611c33611c0a565b92915050565b600060208284031215611c4b57600080fd5b5051919050565b8082028115828204841417611c3357611c33611c0a565b8381528260208201526060604082015260006117d260608301846118cd56fea2646970667358221220bbd848e9b87b3c68f7ff63accfe937f0dbe0e31b2519a834172fd77c6f4b37a364736f6c63430008140033","sourceMap":"148:9705:120:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2452:134:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3360:151;;;:::i;:::-;;;;;;;:::i;2104:446:120:-;;;;;;:::i;:::-;;:::i;:::-;;3221:133:5;;;:::i;1163:935:120:-;;;;;;:::i;:::-;;:::i;2922:141:5:-;;;:::i;2738:178::-;;;:::i;:::-;;;;;;;:::i;2592:140::-;;;:::i;:::-;;;;;;;:::i;3069:146::-;;;:::i;2157:141::-;;;:::i;1243:204:1:-;;;:::i;:::-;;;6271:14:127;;6264:22;6246:41;;6234:2;6219:18;1243:204:1;6106:187:127;4842:430:120;;;;;;:::i;:::-;;:::i;231:926::-;;;;;;:::i;:::-;;:::i;2304:142:5:-;;;:::i;2998:758:120:-;;;;;;:::i;:::-;;:::i;3762:1074::-;;;;;;:::i;:::-;;:::i;2556:436::-;;;;;;:::i;:::-;;:::i;2452:134:5:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:5;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;3360:151::-;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;2104:446:120:-;2197:13;2214:15;2224:1;2227;2214:9;:15::i;:::-;2194:35;-1:-1:-1;;2243:14:120;;;;;;:19;2239:305;;2278:75;;-1:-1:-1;;;2278:75:120;;-1:-1:-1;;;2278:75:120;;;7335:52:127;2278:15:120;;;;7308:18:127;;2278:75:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2367:29:120;;-1:-1:-1;2367:1:120;;-1:-1:-1;2387:1:120;;-1:-1:-1;2390:5:120;2367:19;:29::i;:::-;;2239:305;;;2427:106;2436:29;:1;2456;2459:5;2436:19;:29::i;:::-;2467:32;:1;2485;2488;:10;;;;2467:17;:32::i;:::-;2427:106;;;;;;;;;;;;;;;;;:8;:106::i;:::-;2184:366;2104:446;;;:::o;3221:133:5:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:5;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;1163:935:120:-;1261:11;1276:1;1261:16;1257:109;;317:28:0;309:37;;-1:-1:-1;;;;;1293:15:120;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1324:31:120;;-1:-1:-1;1324:1:120;;-1:-1:-1;1340:1:120;;-1:-1:-1;1343:11:120;1324:15;:31::i;:::-;;1257:109;1379:13;1396:15;1406:1;1409;1396:9;:15::i;:::-;1376:35;-1:-1:-1;;1426:10:120;;;;;:34;;;1455:5;1440:11;:20;;1426:34;1422:670;;;1476:73;;-1:-1:-1;;;1476:73:120;;-1:-1:-1;;;1476:73:120;;;7335:52:127;1476:15:120;;;;7308:18:127;;1476:73:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1563:33:120;;-1:-1:-1;1563:1:120;;-1:-1:-1;1581:1:120;;-1:-1:-1;1584:11:120;1563:17;:33::i;1422:670::-;1627:14;1644:33;:1;1662;1665:11;1644:17;:33::i;:::-;1627:50;;1708:11;1695:25;;;;;:::i;:::-;1705:1;1702;1695:25;:30;1691:298;;-1:-1:-1;;1749:6:120;:27;1745:230;;317:28:0;309:37;;-1:-1:-1;;;;;1800:15:120;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1839:31:120;;-1:-1:-1;1839:1:120;;-1:-1:-1;1855:1:120;;-1:-1:-1;1858:11:120;1839:15;:31::i;:::-;;1892:7;;1163:935;;;:::o;1745:230::-;1945:11;1955:1;1945:11;;:::i;:::-;;;1745:230;2003:78;2012:31;:1;2028;2031:11;2012:15;:31::i;:::-;2045:6;2003:78;;;;;;;;;;;;;;;;;:8;:78::i;:::-;1613:479;1247:851;1163:935;;;:::o;2922:141:5:-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:5;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2592:140;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:146;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2157:141;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:1;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:1;;;;;1243:204::o;1298:143::-;1377:39;;-1:-1:-1;;;1377:39:1;;:7;:39;;;7966:74:127;;;1398:17:1;8056:18:127;;;8049:34;1428:1:1;;1377:7;;7939:18:127;;1377:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;4842:430:120:-;4900:13;4916:8;:1;:6;:8::i;:::-;4900:24;-1:-1:-1;4935:46:120;4944:13;4900:24;;4944:13;:::i;:::-;4959:1;4935:46;;;;;;;;;;;;;;;;;:8;:46::i;:::-;4992:18;5013:9;:5;5021:1;5013:9;:::i;:::-;4992:30;-1:-1:-1;5085:23:120;;;4992:30;;5085:23;4992:30;5127;;;;:::i;:::-;;:44;5123:133;;5191:50;5200:17;5219:1;5191:50;;;;;;;;;;;;;;;;;:8;:50::i;231:926::-;331:11;346:1;331:16;327:824;;317:28:0;309:37;;-1:-1:-1;;;;;363:15:120;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;394:33:120;;-1:-1:-1;394:1:120;;-1:-1:-1;412:1:120;;-1:-1:-1;415:11:120;394:17;:33::i;327:824::-;462:6;;;:16;;-1:-1:-1;472:6:120;;462:16;458:683;;;498:77;507:33;:1;525;528:11;507:17;:33::i;:::-;542:1;498:77;;;;;;;;;;;;;;;;;:8;:77::i;:::-;231:926;;;:::o;458:683::-;617:13;634:15;644:1;647;634:9;:15::i;:::-;614:35;-1:-1:-1;;672:10:120;;;;;:34;;;701:5;686:11;:20;;672:34;668:459;;;730:73;;-1:-1:-1;;;730:73:120;;-1:-1:-1;;;730:73:120;;;7335:52:127;730:15:120;;;;7308:18:127;;730:73:120;7191:202:127;668:459:120;905:203;939:33;:1;957;960:11;939:17;:33::i;:::-;998;1013:1;1016;1019:11;998:14;:33::i;:::-;905:203;;;;;;;;;;;;;;;;;:8;:203::i;2304:142:5:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:5;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;2998:758:120:-;3102:11;3117:1;3102:16;3098:652;;317:28:0;309:37;;-1:-1:-1;;;;;3134:15:120;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3165:39:120;;-1:-1:-1;3165:1:120;;-1:-1:-1;3185:5:120;;-1:-1:-1;3192:11:120;3165:19;:39::i;3098:652::-;3238:13;3255:24;3265:1;3268;:10;;;;3255:9;:24::i;:::-;3235:44;-1:-1:-1;;3298:10:120;;;;;:34;;;3327:5;3312:11;:20;;3298:34;3294:446;;;3352:73;;-1:-1:-1;;;3352:73:120;;-1:-1:-1;;;3352:73:120;;;7335:52:127;3352:15:120;;;;7308:18:127;;3352:73:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3443:39:120;;-1:-1:-1;3443:1:120;;-1:-1:-1;3463:5:120;;-1:-1:-1;3470:11:120;3443:19;:39::i;3294:446::-;3521:204;3551:39;:1;3571:5;3578:11;3551:19;:39::i;:::-;3612:42;3627:1;3630;:10;;;;3642:11;3612:14;:42::i;:::-;3521:204;;;;;;;;;;;;;;;;;:8;:204::i;3762:1074::-;3864:11;3879:1;3864:16;3860:970;;317:28:0;309:37;;-1:-1:-1;;;;;3896:15:120;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3927:37:120;;-1:-1:-1;3927:1:120;;-1:-1:-1;3945:5:120;;-1:-1:-1;3952:11:120;3927:17;:37::i;3860:970::-;3998:13;4015:24;4025:1;4028;:10;;;;4015:9;:24::i;:::-;3995:44;-1:-1:-1;;4058:10:120;;;;;:34;;;4087:5;4072:11;:20;;4058:34;4054:766;;;4112:73;;-1:-1:-1;;;4112:73:120;;-1:-1:-1;;;4112:73:120;;;7335:52:127;4112:15:120;;;;7308:18:127;;4112:73:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4203:37:120;;-1:-1:-1;4203:1:120;;-1:-1:-1;4221:5:120;;-1:-1:-1;4228:11:120;4203:17;:37::i;4054:766::-;4279:14;4296:42;4311:1;4314;:10;;;;4326:11;4296:14;:42::i;:::-;4279:59;;4382:11;4360:34;;;;;:::i;:::-;4370:1;:10;;;;4367:1;4360:34;:39;4356:345;;-1:-1:-1;;4427:6:120;:27;4423:260;;317:28:0;309:37;;-1:-1:-1;;;;;4482:15:120;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4525:37:120;;-1:-1:-1;4525:1:120;;-1:-1:-1;4543:5:120;;-1:-1:-1;4550:11:120;4525:17;:37::i;4423:260::-;4649:11;4659:1;4649:11;;:::i;:::-;;;4423:260;4719:86;4728:37;:1;4746:5;4753:11;4728:17;:37::i;:::-;4767:6;4719:86;;;;;;;;;;;;;;;;;:8;:86::i;2556:436::-;2647:13;2664:15;2674:1;2677;2664:9;:15::i;:::-;2644:35;-1:-1:-1;;2693:14:120;;;;;;:19;2689:297;;2728:75;;-1:-1:-1;;;2728:75:120;;-1:-1:-1;;;2728:75:120;;;7335:52:127;2728:15:120;;;;7308:18:127;;2728:75:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2817:27:120;;-1:-1:-1;2817:1:120;;-1:-1:-1;2835:1:120;;-1:-1:-1;2838:5:120;2817:17;:27::i;2689:297::-;2875:100;2884:27;:1;2902;2905:5;2884:17;:27::i;:::-;2913:30;:1;2929;2932;:10;;;;2913:15;:30::i;:::-;2875:100;;;;;;;;;;;;;;;;;:8;:100::i;5278:259::-;5341:13;;-1:-1:-1;;5424:1:120;5421;5414:20;5463:1;5460;5456:9;5447:18;;5514:5;5510:2;5507:13;5499:5;5495:2;5491:14;5487:34;5478:43;;;5278:259;;;;;:::o;2641:485:83:-;2727:14;2754:13;2769;2786:18;2799:1;2802;2786:12;:18::i;:::-;2753:51;;;;2819:5;2828:1;2819:10;2815:40;;2849:6;2840:15;;:5;:15;;2831:24;;2815:40;2869:10;;2865:255;;2964:1;:11;;;;2955:20;;2951:68;;2984:35;;-1:-1:-1;;;2984:35:83;;;;;;;;;;;2951:68;3088:6;3082:12;;:3;:12;3072:23;;:5;:23;;3062:33;;;;2865:255;2743:383;;2641:485;;;;;:::o;956:247::-;1047:14;1074:13;1089;1106:18;1119:1;1122;1106:12;:18::i;:::-;1073:51;;;;1142:54;1164:1;1167;1170:11;1183:5;1190;1142:21;:54::i;:::-;1135:61;;;;956:247;;;;;;:::o;2386:134:1:-;2484:29;;-1:-1:-1;;;2484:29:1;;:11;;;;:29;;2496:4;;2502:5;;2509:3;;2484:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:134;;;:::o;1790:222:83:-;1879:14;1914:34;1930:1;1933;1936:11;1914:15;:34::i;:::-;1905:43;;1975:11;1962:25;;;;;:::i;:::-;1972:1;1969;1962:25;:30;1958:47;;1994:11;2004:1;1994:11;;:::i;:::-;;1790:222;-1:-1:-1;;;;1790:222:83:o;10740:682::-;10788:13;10817:1;10822;10817:6;10813:20;;-1:-1:-1;10832:1:83;;10740:682;-1:-1:-1;10740:682:83:o;10813:20::-;10844:11;10858:29;10885:1;10858:26;:29::i;:::-;10947:1;10934:11;;;;;10930:19;;;10990:13;;;;10979:25;10972:33;;11045:13;;;11034:25;11027:33;;11100:13;;;11089:25;11082:33;;11155:13;;;11144:25;11137:33;;11210:13;;;11199:25;11192:33;;11265:13;;;11254:25;11247:33;;11320:13;;;11309:25;11302:33;;11354:13;;;;;11302:33;-1:-1:-1;10844:43:83;;;-1:-1:-1;11394:9:83;;;:21;;11414:1;11394:21;;;-1:-1:-1;11406:5:83;11387:28;-1:-1:-1;10740:682:83:o;14412:134:1:-;14510:29;;-1:-1:-1;;;14510:29:1;;:11;;;;:29;;14522:4;;14528:5;;14535:3;;14510:29;;;:::i;13228:134::-;13326:29;;-1:-1:-1;;;13326:29:1;;:11;;;;:29;;13338:4;;13344:5;;13351:3;;13326:29;;;:::i;5949:3902:120:-;6038:14;;;-1:-1:-1;;6575:1:120;6572;6565:20;6618:1;6615;6611:9;6602:18;;6673:5;6669:2;6666:13;6658:5;6654:2;6650:14;6646:34;6637:43;;;6775:5;6784:1;6775:10;6771:75;;6820:11;6812:5;:19;;;;;:::i;:::-;;6805:26;;;;;;6771:75;6970:5;6956:11;:19;6948:28;;;;;;7232:17;7367:11;7364:1;7361;7354:25;8745:1;7915;7900:12;;:16;;7885:32;;8020:22;;;;8726:1;:15;;8725:21;;8978;;;8974:25;;8963:36;9047:21;;;9043:25;;9032:36;9117:21;;;9113:25;;9102:36;9187:21;;;9183:25;;9172:36;9257:21;;;9253:25;;9242:36;9328:21;;;9324:25;;;9313:36;;;7870:12;8265;;;8261:23;;;8257:31;;;7481:20;;;7470:32;;;8377:12;;;;7528:21;;8118:16;;;;8368:21;;;;9792:15;;;-1:-1:-1;;;;5949:3902:120:o;4594:437:83:-;4690:14;4771:11;;;;;;;4869:19;4875:3;:12;;;4869:19;;;;;4960:64;;4771:1;;4985;:11;;4998;4771;4869:19;4960:21;:64::i;5653:244::-;5747:14;5782:41;5800:1;5803:6;5811:11;5782:17;:41::i;:::-;5773:50;;5860:11;5837:35;;;;;:::i;:::-;5847:1;:11;;;;5844:1;5837:35;:40;5833:57;;5879:11;5889:1;5879:11;;:::i;3755:214::-;3839:14;3874:31;3892:1;3895;3898:6;3874:17;:31::i;:::-;3865:40;-1:-1:-1;3932:1:83;:11;;;;;3919:25;;;;:::i;7208:3395::-;7358:14;7450:5;7459:1;7450:10;7446:3151;;7521:11;7513:5;:19;;;;;:::i;:::-;;7504:28;;7446:3151;;;7677:11;7668:5;:20;7664:66;;7697:33;;-1:-1:-1;;;7697:33:83;;;;;;;;;;;7664:66;7829:17;7964:11;7961:1;7958;7951:25;8543:1;8528:12;;:16;;8513:32;;8663:25;;;;;8495:15;8944;;;8940:29;;;8936:37;;;8078:20;;;8067:32;;;9073:15;;;8125:21;;;;8775:19;;;;9064:24;;;;;-1:-1:-1;;9459:1:83;9440;:15;;9439:21;;9703;;;9699:25;;9688:36;9776:21;;;9772:25;;9761:36;9850:21;;;9846:25;;9835:36;9924:21;;;9920:25;;9909:36;9998:21;;;9994:25;;9983:36;10073:21;;;10069:25;;;10058:36;10557:15;;7446:3151;7208:3395;;;;;;;:::o;1675:971:75:-;1737:9;1790:34;1787:1;1784:41;1781:120;;;-1:-1:-1;1853:3:75;1849:11;;;;1781:120;1923:18;1920:1;1917:25;1914:112;;;1970:2;1966:10;;;;2000:12;1914:112;2048:10;2045:1;2042:17;2039:104;;;2087:2;2083:10;;;;2117:12;2039:104;2165:6;2162:1;2159:13;2156:100;;;2200:2;2196:10;;;;2230:12;2156:100;2278:4;2275:1;2272:11;2269:96;;;2311:1;2307:9;;;;2340:11;2269:96;2387:3;2384:1;2381:10;2378:95;;;2419:1;2415:9;;;;2448:11;2378:95;2495:3;2492:1;2489:10;2486:95;;;2527:1;2523:9;;;;2556:11;2486:95;2603:3;2600:1;2597:10;2594:36;;;2626:1;2617:11;2594:36;1675:971;;;:::o;14:681:127:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:127;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:127;;14:681;-1:-1:-1;;;;;;14:681:127:o;700:423::-;742:3;780:5;774:12;807:6;802:3;795:19;832:1;842:162;856:6;853:1;850:13;842:162;;;918:4;974:13;;;970:22;;964:29;946:11;;;942:20;;935:59;871:12;842:162;;;846:3;1049:1;1042:4;1033:6;1028:3;1024:16;1020:27;1013:38;1112:4;1105:2;1101:7;1096:2;1088:6;1084:15;1080:29;1075:3;1071:39;1067:50;1060:57;;;700:423;;;;:::o;1128:1765::-;1361:2;1413:21;;;1483:13;;1386:18;;;1505:22;;;1332:4;;1361:2;1546;;1564:18;;;;1601:1;1644:15;;;1629:31;;1625:40;;1688:15;;;1332:4;;1752:1112;1768:6;1763:3;1760:15;1752:1112;;;-1:-1:-1;;1837:22:127;;;1833:36;1821:49;;1893:13;;1980:9;;-1:-1:-1;;;;;1976:58:127;1961:74;;2074:11;;2068:18;2106:15;;;2099:27;;;2187:19;;1933:15;;;2219:24;;;2400:21;;;;2266:2;2348:17;;;2336:30;;2332:39;;;2290:15;;;;2445:1;2459:296;2475:8;2470:3;2467:17;2459:296;;;2581:2;2577:7;2568:6;2560;2556:19;2552:33;2545:5;2538:48;2613:42;2648:6;2637:8;2631:15;2613:42;:::i;:::-;2684:17;;;;2603:52;-1:-1:-1;2727:14:127;;;;2503:1;2494:11;2459:296;;;-1:-1:-1;;;2842:12:127;;;;2778:6;-1:-1:-1;;2807:15:127;;;;1794:1;1785:11;1752:1112;;;-1:-1:-1;2881:6:127;;1128:1765;-1:-1:-1;;;;;;;;;;1128:1765:127:o;2898:156::-;2964:20;;3024:4;3013:16;;3003:27;;2993:55;;3044:1;3041;3034:12;3059:318;3134:6;3142;3150;3203:2;3191:9;3182:7;3178:23;3174:32;3171:52;;;3219:1;3216;3209:12;3171:52;3255:9;3242:23;3232:33;;3312:2;3301:9;3297:18;3284:32;3274:42;;3335:36;3367:2;3356:9;3352:18;3335:36;:::i;:::-;3325:46;;3059:318;;;;;:::o;3382:316::-;3459:6;3467;3475;3528:2;3516:9;3507:7;3503:23;3499:32;3496:52;;;3544:1;3541;3534:12;3496:52;-1:-1:-1;;3567:23:127;;;3637:2;3622:18;;3609:32;;-1:-1:-1;3688:2:127;3673:18;;;3660:32;;3382:316;-1:-1:-1;3382:316:127:o;3703:1590::-;3905:4;3934:2;3974;3963:9;3959:18;4004:2;3993:9;3986:21;4027:6;4062;4056:13;4093:6;4085;4078:22;4119:2;4109:12;;4152:2;4141:9;4137:18;4130:25;;4214:2;4204:6;4201:1;4197:14;4186:9;4182:30;4178:39;4252:2;4244:6;4240:15;4273:1;4294;4304:960;4320:6;4315:3;4312:15;4304:960;;;4389:22;;;-1:-1:-1;;4385:36:127;4373:49;;4445:13;;4532:9;;-1:-1:-1;;;;;4528:58:127;4513:74;;4626:11;;4620:18;4658:15;;;4651:27;;;4739:19;;4485:15;;;4771:24;;;4861:21;;;;4906:1;;4829:2;4817:15;;;4920:236;4936:8;4931:3;4928:17;4920:236;;;5017:15;;5034:20;5013:42;4999:57;;5125:17;;;;4964:1;4955:11;;;;;5082:14;;;;4920:236;;;-1:-1:-1;5242:12:127;;;;5179:5;-1:-1:-1;;;5207:15:127;;;;4346:1;4337:11;4304:960;;;-1:-1:-1;5281:6:127;;3703:1590;-1:-1:-1;;;;;;;;;3703:1590:127:o;5298:803::-;5460:4;5489:2;5529;5518:9;5514:18;5559:2;5548:9;5541:21;5582:6;5617;5611:13;5648:6;5640;5633:22;5686:2;5675:9;5671:18;5664:25;;5748:2;5738:6;5735:1;5731:14;5720:9;5716:30;5712:39;5698:53;;5786:2;5778:6;5774:15;5807:1;5817:255;5831:6;5828:1;5825:13;5817:255;;;5924:2;5920:7;5908:9;5900:6;5896:22;5892:36;5887:3;5880:49;5952:40;5985:6;5976;5970:13;5952:40;:::i;:::-;5942:50;-1:-1:-1;6050:12:127;;;;6015:15;;;;5853:1;5846:9;5817:255;;;-1:-1:-1;6089:6:127;;5298:803;-1:-1:-1;;;;;;;5298:803:127:o;6298:180::-;6357:6;6410:2;6398:9;6389:7;6385:23;6381:32;6378:52;;;6426:1;6423;6416:12;6378:52;-1:-1:-1;6449:23:127;;6298:180;-1:-1:-1;6298:180:127:o;6483:318::-;6558:6;6566;6574;6627:2;6615:9;6606:7;6602:23;6598:32;6595:52;;;6643:1;6640;6633:12;6595:52;6679:9;6666:23;6656:33;;6708:36;6740:2;6729:9;6725:18;6708:36;:::i;:::-;6698:46;;6791:2;6780:9;6776:18;6763:32;6753:42;;6483:318;;;;;:::o;6806:380::-;6885:1;6881:12;;;;6928;;;6949:61;;7003:4;6995:6;6991:17;6981:27;;6949:61;7056:2;7048:6;7045:14;7025:18;7022:38;7019:161;;7102:10;7097:3;7093:20;7090:1;7083:31;7137:4;7134:1;7127:15;7165:4;7162:1;7155:15;7398:127;7459:10;7454:3;7450:20;7447:1;7440:31;7490:4;7487:1;7480:15;7514:4;7511:1;7504:15;7530:127;7591:10;7586:3;7582:20;7579:1;7572:31;7622:4;7619:1;7612:15;7646:4;7643:1;7636:15;7662:125;7727:9;;;7748:10;;;7745:36;;;7761:18;;:::i;:::-;7662:125;;;;:::o;8094:184::-;8164:6;8217:2;8205:9;8196:7;8192:23;8188:32;8185:52;;;8233:1;8230;8223:12;8185:52;-1:-1:-1;8256:16:127;;8094:184;-1:-1:-1;8094:184:127:o;8283:168::-;8356:9;;;8387;;8404:15;;;8398:22;;8384:37;8374:71;;8425:18;;:::i;8456:362::-;8661:6;8650:9;8643:25;8704:6;8699:2;8688:9;8684:18;8677:34;8747:2;8742;8731:9;8727:18;8720:30;8624:4;8767:45;8808:2;8797:9;8793:18;8785:6;8767:45;:::i","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testFuzz_MulDivRoundDown(uint256,uint256,uint256)":"ccc03f29","testFuzz_MulDivRoundUp(uint256,uint256,uint256)":"3f06495c","testFuzz_ShiftDivRoundDown(uint256,uint8,uint256)":"e41af8f5","testFuzz_ShiftDivRoundUp(uint256,uint8,uint256)":"e71d50d6","testFuzz_Sqrt(uint256)":"bba78329","testFuzz_mulShiftRoundDown(uint256,uint256,uint8)":"3286bd8e","testFuzz_mulShiftRoundUp(uint256,uint256,uint8)":"f96370ea"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"testFuzz_MulDivRoundDown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"testFuzz_MulDivRoundUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"shift\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"testFuzz_ShiftDivRoundDown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"shift\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"testFuzz_ShiftDivRoundUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testFuzz_Sqrt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"shift\",\"type\":\"uint8\"}],\"name\":\"testFuzz_mulShiftRoundDown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"shift\",\"type\":\"uint8\"}],\"name\":\"testFuzz_mulShiftRoundUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/libraries/math/Uint256x256Math.t.sol\":\"Uint256x256MathTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4\",\"dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]},\"test/libraries/math/Uint256x256Math.t.sol\":{\"keccak256\":\"0xe30fb55fbfe4480de8f74f6d1d344b1fc8d267f0fd64558f7ba38e87e72890b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ae26dc2f1a2f388538e4d4886b72451e7ba7b7d8cbb330c8f52e54f86889305\",\"dweb:/ipfs/QmZoogB1kXcx3R7DAbxAhVLqk6Q8E9Mp1g1sX8XXYYrT79\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"Uint256x256Math__MulDivOverflow"},{"inputs":[],"type":"error","name":"Uint256x256Math__MulShiftOverflow"},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_MulDivRoundDown"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_MulDivRoundUp"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint8","name":"shift","type":"uint8"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_ShiftDivRoundDown"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint8","name":"shift","type":"uint8"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_ShiftDivRoundUp"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"stateMutability":"pure","type":"function","name":"testFuzz_Sqrt"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint8","name":"shift","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_mulShiftRoundDown"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint8","name":"shift","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_mulShiftRoundUp"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/libraries/math/Uint256x256Math.t.sol":"Uint256x256MathTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052","urls":["bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb","dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763","urls":["bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b","dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811","urls":["bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32","dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x9809a6a14dd9ad6c519574760c03ec4ddc0e0c58955a1fc4f0dcca2822fd5362","urls":["bzz-raw://12fa33c2968fa8bee1b8a2034f4d0f0cf5363008c013e928cca03896b41d39d4","dweb:/ipfs/QmfXcdjrB3JVarRVwpSEpBRQJEsS11HKiRzwr2Z517GaF1"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/libraries/math/BitMath.sol":{"keccak256":"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994","urls":["bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de","dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV"],"license":"MIT"},"src/libraries/math/Uint256x256Math.sol":{"keccak256":"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2","urls":["bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242","dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY"],"license":"MIT"},"test/libraries/math/Uint256x256Math.t.sol":{"keccak256":"0xe30fb55fbfe4480de8f74f6d1d344b1fc8d267f0fd64558f7ba38e87e72890b3","urls":["bzz-raw://4ae26dc2f1a2f388538e4d4886b72451e7ba7b7d8cbb330c8f52e54f86889305","dweb:/ipfs/QmZoogB1kXcx3R7DAbxAhVLqk6Q8E9Mp1g1sX8XXYYrT79"],"license":"MIT"}},"version":1},"id":120} \ No newline at end of file diff --git a/abi/Utils.sol/Utils.json b/abi/Utils.sol/Utils.json deleted file mode 100644 index 71e994a5..00000000 --- a/abi/Utils.sol/Utils.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea2747515e7eef0fd23efd6ad791337acbf96954457f25e4d22c4e3a4f0140f764736f6c63430008140033","sourceMap":"196:1899:94:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;196:1899:94;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea2747515e7eef0fd23efd6ad791337acbf96954457f25e4d22c4e3a4f0140f764736f6c63430008140033","sourceMap":"196:1899:94:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/Utils.sol\":\"Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c\",\"dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561\",\"dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"test/helpers/Utils.sol\":{\"keccak256\":\"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0\",\"dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/Utils.sol":"Utils"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/interfaces/ILBFactory.sol":{"keccak256":"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88","urls":["bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98","dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu"],"license":"MIT"},"src/interfaces/ILBFlashLoanCallback.sol":{"keccak256":"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62","urls":["bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56","dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc"],"license":"MIT"},"src/interfaces/ILBHooks.sol":{"keccak256":"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a","urls":["bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109","dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n"],"license":"MIT"},"src/interfaces/ILBLegacyFactory.sol":{"keccak256":"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca","urls":["bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc","dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy"],"license":"MIT"},"src/interfaces/ILBLegacyPair.sol":{"keccak256":"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a","urls":["bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf","dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob"],"license":"MIT"},"src/interfaces/ILBLegacyRouter.sol":{"keccak256":"0x40e85983bfb9dc4681672c2b8dc965c8f973a9db2e85f54120934c8cda84acf2","urls":["bzz-raw://6509125a21ee317d989a0c3e5c7821e221ed4b1d2cef0fe0518eaa277a4e102c","dweb:/ipfs/QmPVtyhp5Ekcz86i3bAk8ypaT8jN4R11iuux7TQ8fT7N4Q"],"license":"MIT"},"src/interfaces/ILBLegacyToken.sol":{"keccak256":"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727","urls":["bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15","dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY"],"license":"MIT"},"src/interfaces/ILBPair.sol":{"keccak256":"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70","urls":["bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51","dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB"],"license":"MIT"},"src/interfaces/ILBRouter.sol":{"keccak256":"0x2520a5414d86497b9c48035de29937b29f144b18dddbf4e52f0b52adad9cfb47","urls":["bzz-raw://28d23c73a3572872deaa65e872838600417949c1328f75ae5c34ed95663ed561","dweb:/ipfs/QmWwfJqGsjvtdoci4MuHXnqkPw1ctBCmAikkB1LwCr4Qf7"],"license":"MIT"},"src/interfaces/ILBToken.sol":{"keccak256":"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9","urls":["bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f","dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz"],"license":"MIT"},"src/interfaces/ISovrynLBFactoryV1.sol":{"keccak256":"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce","urls":["bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9","dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd"],"license":"GPL-3.0"},"src/interfaces/IWNATIVE.sol":{"keccak256":"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3","urls":["bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa","dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959","urls":["bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a","dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop"],"license":"MIT"},"test/helpers/Utils.sol":{"keccak256":"0xbcc7f0711ad4c778c8e231fd6405966755216043c29bfab4148c13f7f0d3946d","urls":["bzz-raw://ce638a27981ff0cfcc7bc2caf166cb0a98aa41dc1e5b93598112d7f4f7e081c0","dweb:/ipfs/QmdcGa7x1vRyBdqkqyUwh3FRWGJsMgTAokje2RWGzbZYkW"],"license":"MIT"}},"version":1},"id":94} \ No newline at end of file diff --git a/abi/Vm.sol/Vm.json b/abi/Vm.sol/Vm.json deleted file mode 100644 index e31ecd3c..00000000 --- a/abi/Vm.sol/Vm.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshot","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshots","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dumpState","inputs":[{"name":"pathToStateJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"loadAllocs","inputs":[{"name":"pathToAllocsJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readCallers","inputs":[],"outputs":[{"name":"callerMode","type":"uint8","internalType":"enum VmSafe.CallerMode"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToAndDelete","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"skip","inputs":[{"name":"skipTest","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopExpectSafeMemory","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deal(address,uint256)":"c88a5e6d","deleteSnapshot(uint256)":"a6368557","deleteSnapshots()":"421ae469","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","difficulty(uint256)":"46cc92d9","dumpState(string)":"709ecd3f","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectRevert()":"f4844814","expectRevert(bytes)":"f28dceb3","expectRevert(bytes4)":"c31eb0e0","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","isPersistent(address)":"d92d8efd","keyExists(string,string)":"528a683c","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","loadAllocs(string)":"b3a056d7","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","projectRoot()":"d930a0e6","readCallers()":"4ad0bac9","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","revertTo(uint256)":"44d7f0a4","revertToAndDelete(uint256)":"03e0aca9","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpc(string,string)":"1206c8a8","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(uint256,bytes32)":"e341eaa4","signP256(uint256,bytes32)":"83211b40","skip(bool)":"dd82d13e","sleep(uint256)":"fa9d8713","snapshot()":"9711715a","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startMappingRecording()":"3e9705c0","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","startStateDiffRecording()":"cf22e3c9","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopExpectSafeMemory()":"0956441b","stopMappingRecording()":"0d4aae9b","stopPrank()":"90c5013b","store(address,bytes32,bytes32)":"70ca10bb","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","txGasPrice(uint256)":"48f50c0f","unixTime()":"625387dc","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"deleteSnapshot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteSnapshots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToStateJson\",\"type\":\"string\"}],\"name\":\"dumpState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToAllocsJson\",\"type\":\"string\"}],\"name\":\"loadAllocs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readCallers\",\"outputs\":[{\"internalType\":\"enum VmSafe.CallerMode\",\"name\":\"callerMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToAndDelete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"skipTest\",\"type\":\"bool\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopExpectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"allowCheatcodes(address)\":{\"notice\":\"In forking mode, explicitly grant the given address cheatcode access.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"chainId(uint256)\":{\"notice\":\"Sets `block.chainid`.\"},\"clearMockedCalls()\":{\"notice\":\"Clears all mocked calls.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"coinbase(address)\":{\"notice\":\"Sets `block.coinbase`.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createFork(string)\":{\"notice\":\"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork.\"},\"createFork(string,bytes32)\":{\"notice\":\"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork.\"},\"createFork(string,uint256)\":{\"notice\":\"Creates a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createSelectFork(string)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork.\"},\"createSelectFork(string,bytes32)\":{\"notice\":\"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork.\"},\"createSelectFork(string,uint256)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deal(address,uint256)\":{\"notice\":\"Sets an address' balance.\"},\"deleteSnapshot(uint256)\":{\"notice\":\"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist.\"},\"deleteSnapshots()\":{\"notice\":\"Removes _all_ snapshots previously created by `snapshot`.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"difficulty(uint256)\":{\"notice\":\"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions.\"},\"dumpState(string)\":{\"notice\":\"Dump a genesis JSON file's `allocs` to disk.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"etch(address,bytes)\":{\"notice\":\"Sets an address' code.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"expectCall(address,bytes)\":{\"notice\":\"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match.\"},\"expectCall(address,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified calldata.\"},\"expectCall(address,uint256,bytes)\":{\"notice\":\"Expects a call to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCall(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCallMinGas(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectCallMinGas(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectEmit()\":{\"notice\":\"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmit(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmit(bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmit(bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectRevert()\":{\"notice\":\"Expects an error on next call with any revert data.\"},\"expectRevert(bytes)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectRevert(bytes4)\":{\"notice\":\"Expects an error on next call that starts with the revert data.\"},\"expectSafeMemory(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"expectSafeMemoryCall(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"fee(uint256)\":{\"notice\":\"Sets `block.basefee`.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get a `Wallet`'s nonce.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"isPersistent(address)\":{\"notice\":\"Returns true if the account is marked as persistent.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"loadAllocs(string)\":{\"notice\":\"Load a genesis JSON file's `allocs` into the in-memory revm state.\"},\"makePersistent(address)\":{\"notice\":\"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks.\"},\"makePersistent(address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address,address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address[])\":{\"notice\":\"See `makePersistent(address)`.\"},\"mockCall(address,bytes,bytes)\":{\"notice\":\"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked.\"},\"mockCall(address,uint256,bytes,bytes)\":{\"notice\":\"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity.\"},\"mockCallRevert(address,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with specified revert data.\"},\"mockCallRevert(address,uint256,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with a specific `msg.value`, with specified revert data.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"prank(address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address.\"},\"prank(address,address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input.\"},\"prevrandao(bytes32)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"readCallers()\":{\"notice\":\"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification.\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetNonce(address)\":{\"notice\":\"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts.\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"revertTo(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`.\"},\"revertToAndDelete(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist.\"},\"revokePersistent(address)\":{\"notice\":\"Revokes persistent status from the address, previously added via `makePersistent`.\"},\"revokePersistent(address[])\":{\"notice\":\"See `revokePersistent(address)`.\"},\"roll(uint256)\":{\"notice\":\"Sets `block.height`.\"},\"rollFork(bytes32)\":{\"notice\":\"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block.\"},\"rollFork(uint256)\":{\"notice\":\"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork.\"},\"rollFork(uint256,bytes32)\":{\"notice\":\"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block.\"},\"rollFork(uint256,uint256)\":{\"notice\":\"Updates the given fork to given block number.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"selectFork(uint256)\":{\"notice\":\"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"setNonce(address,uint64)\":{\"notice\":\"Sets the nonce of an account. Must be higher than the current nonce of the account.\"},\"setNonceUnsafe(address,uint64)\":{\"notice\":\"Sets the nonce of an account to an arbitrary value.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"skip(bool)\":{\"notice\":\"Marks a test as skipped. Must be called at the top of the test.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"snapshot()\":{\"notice\":\"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertTo`.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startPrank(address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called.\"},\"startPrank(address,address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopExpectSafeMemory()\":{\"notice\":\"Stops all safe memory expectation in the current subcontext.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"stopPrank()\":{\"notice\":\"Resets subsequent calls' `msg.sender` to be `address(this)`.\"},\"store(address,bytes32,bytes32)\":{\"notice\":\"Stores a value to an address' storage slot.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"transact(bytes32)\":{\"notice\":\"Fetches the given transaction from the active fork and executes it on the current state.\"},\"transact(uint256,bytes32)\":{\"notice\":\"Fetches the given transaction from the given fork and executes it on the current state.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"txGasPrice(uint256)\":{\"notice\":\"Sets `tx.gasprice`.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"warp(uint256)\":{\"notice\":\"Sets `block.timestamp`.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"}},\"notice\":\"The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used in tests, but it is not recommended to use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshot","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshots"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"pathToStateJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"dumpState"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"pathToAllocsJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"loadAllocs"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"readCallers","outputs":[{"internalType":"enum VmSafe.CallerMode","name":"callerMode","type":"uint8"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToAndDelete","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"skipTest","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"skip"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopExpectSafeMemory"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"allowCheatcodes(address)":{"notice":"In forking mode, explicitly grant the given address cheatcode access."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"chainId(uint256)":{"notice":"Sets `block.chainid`."},"clearMockedCalls()":{"notice":"Clears all mocked calls."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"coinbase(address)":{"notice":"Sets `block.coinbase`."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createFork(string)":{"notice":"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork."},"createFork(string,bytes32)":{"notice":"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork."},"createFork(string,uint256)":{"notice":"Creates a new fork with the given endpoint and block and returns the identifier of the fork."},"createSelectFork(string)":{"notice":"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork."},"createSelectFork(string,bytes32)":{"notice":"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork."},"createSelectFork(string,uint256)":{"notice":"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deal(address,uint256)":{"notice":"Sets an address' balance."},"deleteSnapshot(uint256)":{"notice":"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist."},"deleteSnapshots()":{"notice":"Removes _all_ snapshots previously created by `snapshot`."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"difficulty(uint256)":{"notice":"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions."},"dumpState(string)":{"notice":"Dump a genesis JSON file's `allocs` to disk."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"etch(address,bytes)":{"notice":"Sets an address' code."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"expectCall(address,bytes)":{"notice":"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match."},"expectCall(address,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified calldata."},"expectCall(address,uint256,bytes)":{"notice":"Expects a call to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value`, gas, and calldata."},"expectCall(address,uint256,uint64,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata."},"expectCallMinGas(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectCallMinGas(address,uint256,uint64,bytes,uint64)":{"notice":"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectEmit()":{"notice":"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmit(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmit(bool,bool,bool,bool)":{"notice":"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmit(bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectRevert()":{"notice":"Expects an error on next call with any revert data."},"expectRevert(bytes)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectRevert(bytes4)":{"notice":"Expects an error on next call that starts with the revert data."},"expectSafeMemory(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"expectSafeMemoryCall(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"fee(uint256)":{"notice":"Sets `block.basefee`."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get a `Wallet`'s nonce."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"isPersistent(address)":{"notice":"Returns true if the account is marked as persistent."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"label(address,string)":{"notice":"Labels an address in call traces."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"loadAllocs(string)":{"notice":"Load a genesis JSON file's `allocs` into the in-memory revm state."},"makePersistent(address)":{"notice":"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks."},"makePersistent(address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address,address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address[])":{"notice":"See `makePersistent(address)`."},"mockCall(address,bytes,bytes)":{"notice":"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked."},"mockCall(address,uint256,bytes,bytes)":{"notice":"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity."},"mockCallRevert(address,bytes,bytes)":{"notice":"Reverts a call to an address with specified revert data."},"mockCallRevert(address,uint256,bytes,bytes)":{"notice":"Reverts a call to an address with a specific `msg.value`, with specified revert data."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"prank(address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address."},"prank(address,address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input."},"prevrandao(bytes32)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"projectRoot()":{"notice":"Get the path of the current project root."},"readCallers()":{"notice":"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetNonce(address)":{"notice":"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"revertTo(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteSnapshot`."},"revertToAndDelete(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist."},"revokePersistent(address)":{"notice":"Revokes persistent status from the address, previously added via `makePersistent`."},"revokePersistent(address[])":{"notice":"See `revokePersistent(address)`."},"roll(uint256)":{"notice":"Sets `block.height`."},"rollFork(bytes32)":{"notice":"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block."},"rollFork(uint256)":{"notice":"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork."},"rollFork(uint256,bytes32)":{"notice":"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block."},"rollFork(uint256,uint256)":{"notice":"Updates the given fork to given block number."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"selectFork(uint256)":{"notice":"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"setEnv(string,string)":{"notice":"Sets environment variables."},"setNonce(address,uint64)":{"notice":"Sets the nonce of an account. Must be higher than the current nonce of the account."},"setNonceUnsafe(address,uint64)":{"notice":"Sets the nonce of an account to an arbitrary value."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"skip(bool)":{"notice":"Marks a test as skipped. Must be called at the top of the test."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"snapshot()":{"notice":"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertTo`."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startPrank(address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called."},"startPrank(address,address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopExpectSafeMemory()":{"notice":"Stops all safe memory expectation in the current subcontext."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"stopPrank()":{"notice":"Resets subsequent calls' `msg.sender` to be `address(this)`."},"store(address,bytes32,bytes32)":{"notice":"Stores a value to an address' storage slot."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"transact(bytes32)":{"notice":"Fetches the given transaction from the active fork and executes it on the current state."},"transact(uint256,bytes32)":{"notice":"Fetches the given transaction from the given fork and executes it on the current state."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"txGasPrice(uint256)":{"notice":"Sets `tx.gasprice`."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"warp(uint256)":{"notice":"Sets `block.timestamp`."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"Vm"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":12} \ No newline at end of file diff --git a/abi/Vm.sol/VmSafe.json b/abi/Vm.sol/VmSafe.json deleted file mode 100644 index c7d5e3cb..00000000 --- a/abi/Vm.sol/VmSafe.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","closeFile(string)":"48c3241f","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","createDir(string,bool)":"168b64d3","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","keyExists(string,string)":"528a683c","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","projectRoot()":"d930a0e6","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resumeGasMetering()":"2bcd50e0","rpc(string,string)":"1206c8a8","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(uint256,bytes32)":"e341eaa4","signP256(uint256,bytes32)":"83211b40","sleep(uint256)":"fa9d8713","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startMappingRecording()":"3e9705c0","startStateDiffRecording()":"cf22e3c9","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopMappingRecording()":"0d4aae9b","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","unixTime()":"625387dc","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get a `Wallet`'s nonce.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"}},\"notice\":\"The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may result in Script simulations differing from on-chain execution. It is recommended to only use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get a `Wallet`'s nonce."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"label(address,string)":{"notice":"Labels an address in call traces."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"projectRoot()":{"notice":"Get the path of the current project root."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"setEnv(string,string)":{"notice":"Sets environment variables."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876","urls":["bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533","dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te"],"license":"MIT OR Apache-2.0"}},"version":1},"id":12} \ No newline at end of file diff --git a/abi/WNATIVE.sol/WNATIVE.json b/abi/WNATIVE.sol/WNATIVE.json deleted file mode 100644 index 5681fb87..00000000 --- a/abi/WNATIVE.sol/WNATIVE.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506040518060400160405280600e81526020016d57726170706564204e617469766560901b81525060405180604001604052806007815260200166574e415449564560c81b8152508160039081610067919061011b565b506004610074828261011b565b5050506101da565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100a657607f821691505b6020821081036100c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561011657600081815260208120601f850160051c810160208610156100f35750805b601f850160051c820191505b81811015610112578281556001016100ff565b5050505b505050565b81516001600160401b038111156101345761013461007c565b610148816101428454610092565b846100cc565b602080601f83116001811461017d57600084156101655750858301515b600019600386901b1c1916600185901b178555610112565b600085815260208120601f198616915b828110156101ac5788860151825594840194600190910190840161018d565b50858210156101ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61091f806101e96000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c63430008140033","sourceMap":"129:402:126:-:0;;;161:51;;;;;;;;;;1897:113:32;;;;;;;;;;;;;-1:-1:-1;;;1897:113:32;;;;;;;;;;;;;;;;-1:-1:-1;;;1897:113:32;;;1971:5;1963;:13;;;;;;:::i;:::-;-1:-1:-1;1986:7:32;:17;1996:7;1986;:17;:::i;:::-;;1897:113;;129:402:126;;14:127:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:127;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:127;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:127;;;2580:26;2531:89;-1:-1:-1;;1335:1:127;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:127;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:127;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:127;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:127:o;:::-;129:402:126;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101e4578063d0e30db014610204578063dd62ed3e1461020c57600080fd5b8063313ce5671461017d57806370a082311461019957806395d89b41146101cf57600080fd5b806318160ddd116100a557806318160ddd1461011c57806323b872dd1461013b5780632e1a7d4d1461015b57600080fd5b806306fdde03146100c1578063095ea7b3146100ec575b600080fd5b3480156100cd57600080fd5b506100d6610252565b6040516100e39190610750565b60405180910390f35b3480156100f857600080fd5b5061010c6101073660046107ba565b6102e4565b60405190151581526020016100e3565b34801561012857600080fd5b506002545b6040519081526020016100e3565b34801561014757600080fd5b5061010c6101563660046107e4565b6102fe565b34801561016757600080fd5b5061017b610176366004610820565b610322565b005b34801561018957600080fd5b50604051601281526020016100e3565b3480156101a557600080fd5b5061012d6101b4366004610839565b6001600160a01b031660009081526020819052604090205490565b3480156101db57600080fd5b506100d66103cd565b3480156101f057600080fd5b5061010c6101ff3660046107ba565b6103dc565b61017b6103ea565b34801561021857600080fd5b5061012d61022736600461085b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102619061088e565b80601f016020809104026020016040519081016040528092919081815260200182805461028d9061088e565b80156102da5780601f106102af576101008083540402835291602001916102da565b820191906000526020600020905b8154815290600101906020018083116102bd57829003601f168201915b5050505050905090565b6000336102f28185856103f6565b60019150505b92915050565b60003361030c858285610408565b610317858585610486565b506001949350505050565b61032c33826104e5565b604051600090339083908381818185875af1925050503d806000811461036e576040519150601f19603f3d011682016040523d82523d6000602084013e610373565b606091505b50509050806103c95760405162461bcd60e51b815260206004820152600f60248201527f5769746864726177206661696c6564000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b6060600480546102619061088e565b6000336102f2818585610486565b6103f4333461051b565b565b6104038383836001610551565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610480578181101561047157604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61048084848484036000610551565b50505050565b6001600160a01b0383166104b057604051634b637e8f60e11b8152600060048201526024016103c0565b6001600160a01b0382166104da5760405163ec442f0560e01b8152600060048201526024016103c0565b610403838383610626565b6001600160a01b03821661050f57604051634b637e8f60e11b8152600060048201526024016103c0565b6103c982600083610626565b6001600160a01b0382166105455760405163ec442f0560e01b8152600060048201526024016103c0565b6103c960008383610626565b6001600160a01b03841661057b5760405163e602df0560e01b8152600060048201526024016103c0565b6001600160a01b0383166105a557604051634a1406b160e11b8152600060048201526024016103c0565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561048057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161061891815260200190565b60405180910390a350505050565b6001600160a01b03831661065157806002600082825461064691906108c8565b909155506106c39050565b6001600160a01b038316600090815260208190526040902054818110156106a45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166106df576002805482900390556106fe565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161074391815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561077d57858101830151858201604001528201610761565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b6108028461079e565b92506108106020850161079e565b9150604084013590509250925092565b60006020828403121561083257600080fd5b5035919050565b60006020828403121561084b57600080fd5b6108548261079e565b9392505050565b6000806040838503121561086e57600080fd5b6108778361079e565b91506108856020840161079e565b90509250929050565b600181811c908216806108a257607f821691505b6020821081036108c257634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102f857634e487b7160e01b600052601160045260246000fdfea26469706673582212202ab795b0ce94f91a024b1b71ac52b4e387b166615116741de962b87d1ded9a1864736f6c63430008140033","sourceMap":"129:402:126:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:89:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4294:186;;;;;;;;;;-1:-1:-1;4294:186:32;;;;;:::i;:::-;;:::i;:::-;;;1192:14:127;;1185:22;1167:41;;1155:2;1140:18;4294:186:32;1027:187:127;3145:97:32;;;;;;;;;;-1:-1:-1;3223:12:32;;3145:97;;;1365:25:127;;;1353:2;1338:18;3145:97:32;1219:177:127;5040:244:32;;;;;;;;;;-1:-1:-1;5040:244:32;;;;;:::i;:::-;;:::i;305:224:126:-;;;;;;;;;;-1:-1:-1;305:224:126;;;;;:::i;:::-;;:::i;:::-;;3003:82:32;;;;;;;;;;-1:-1:-1;3003:82:32;;3076:2;2061:36:127;;2049:2;2034:18;3003:82:32;1919:184:127;3300:116:32;;;;;;;;;;-1:-1:-1;3300:116:32;;;;;:::i;:::-;-1:-1:-1;;;;;3391:18:32;3365:7;3391:18;;;;;;;;;;;;3300:116;2277:93;;;;;;;;;;;;;:::i;3611:178::-;;;;;;;;;;-1:-1:-1;3611:178:32;;;;;:::i;:::-;;:::i;218:81:126:-;;;:::i;3847:140:32:-;;;;;;;;;;-1:-1:-1;3847:140:32;;;;;:::i;:::-;-1:-1:-1;;;;;3953:18:32;;;3927:7;3953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3847:140;2075:89;2120:13;2152:5;2145:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:89;:::o;4294:186::-;4367:4;735:10:37;4421:31:32;735:10:37;4437:7:32;4446:5;4421:8;:31::i;:::-;4469:4;4462:11;;;4294:186;;;;;:::o;5040:244::-;5127:4;735:10:37;5183:37:32;5199:4;735:10:37;5214:5:32;5183:15;:37::i;:::-;5230:26;5240:4;5246:2;5250:5;5230:9;:26::i;:::-;-1:-1:-1;5273:4:32;;5040:244;-1:-1:-1;;;;5040:244:32:o;305:224:126:-;359:26;365:10;377:7;359:5;:26::i;:::-;413:35;;396:12;;413:10;;436:7;;396:12;413:35;396:12;413:35;436:7;413:10;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:53;;;464:7;459:64;;487:25;;-1:-1:-1;;;487:25:126;;3361:2:127;487:25:126;;;3343:21:127;3400:2;3380:18;;;3373:30;3439:17;3419:18;;;3412:45;3474:18;;487:25:126;;;;;;;;459:64;349:180;305:224;:::o;2277:93:32:-;2324:13;2356:7;2349:14;;;;;:::i;3611:178::-;3680:4;735:10:37;3734:27:32;735:10:37;3751:2:32;3755:5;3734:9;:27::i;218:81:126:-;264:28;270:10;282:9;264:5;:28::i;:::-;218:81::o;8990:128:32:-;9074:37;9083:5;9090:7;9099:5;9106:4;9074:8;:37::i;:::-;8990:128;;;:::o;10664:477::-;-1:-1:-1;;;;;3953:18:32;;;10763:24;3953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10829:37:32;;10825:310;;10905:5;10886:16;:24;10882:130;;;10937:60;;-1:-1:-1;;;10937:60:32;;-1:-1:-1;;;;;3723:55:127;;10937:60:32;;;3705:74:127;3795:18;;;3788:34;;;3838:18;;;3831:34;;;3678:18;;10937:60:32;3503:368:127;10882:130:32;11053:57;11062:5;11069:7;11097:5;11078:16;:24;11104:5;11053:8;:57::i;:::-;10753:388;10664:477;;;:::o;5657:300::-;-1:-1:-1;;;;;5740:18:32;;5736:86;;5781:30;;-1:-1:-1;;;5781:30:32;;5808:1;5781:30;;;4022:74:127;3995:18;;5781:30:32;3876:226:127;5736:86:32;-1:-1:-1;;;;;5835:16:32;;5831:86;;5874:32;;-1:-1:-1;;;5874:32:32;;5903:1;5874:32;;;4022:74:127;3995:18;;5874:32:32;3876:226:127;5831:86:32;5926:24;5934:4;5940:2;5944:5;5926:7;:24::i;8248:206::-;-1:-1:-1;;;;;8318:21:32;;8314:89;;8362:30;;-1:-1:-1;;;8362:30:32;;8389:1;8362:30;;;4022:74:127;3995:18;;8362:30:32;3876:226:127;8314:89:32;8412:35;8420:7;8437:1;8441:5;8412:7;:35::i;7722:208::-;-1:-1:-1;;;;;7792:21:32;;7788:91;;7836:32;;-1:-1:-1;;;7836:32:32;;7865:1;7836:32;;;4022:74:127;3995:18;;7836:32:32;3876:226:127;7788:91:32;7888:35;7904:1;7908:7;7917:5;7888:7;:35::i;9950:432::-;-1:-1:-1;;;;;10062:19:32;;10058:89;;10104:32;;-1:-1:-1;;;10104:32:32;;10133:1;10104:32;;;4022:74:127;3995:18;;10104:32:32;3876:226:127;10058:89:32;-1:-1:-1;;;;;10160:21:32;;10156:90;;10204:31;;-1:-1:-1;;;10204:31:32;;10232:1;10204:31;;;4022:74:127;3995:18;;10204:31:32;3876:226:127;10156:90:32;-1:-1:-1;;;;;10255:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10300:76;;;;10350:7;-1:-1:-1;;;;;10334:31:32;10343:5;-1:-1:-1;;;;;10334:31:32;;10359:5;10334:31;;;;1365:25:127;;1353:2;1338:18;;1219:177;10334:31:32;;;;;;;;9950:432;;;;:::o;6272:1107::-;-1:-1:-1;;;;;6361:18:32;;6357:540;;6513:5;6497:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6357:540:32;;-1:-1:-1;6357:540:32;;-1:-1:-1;;;;;6571:15:32;;6549:19;6571:15;;;;;;;;;;;6604:19;;;6600:115;;;6650:50;;-1:-1:-1;;;6650:50:32;;-1:-1:-1;;;;;3723:55:127;;6650:50:32;;;3705:74:127;3795:18;;;3788:34;;;3838:18;;;3831:34;;;3678:18;;6650:50:32;3503:368:127;6600:115:32;-1:-1:-1;;;;;6835:15:32;;:9;:15;;;;;;;;;;6853:19;;;;6835:37;;6357:540;-1:-1:-1;;;;;6911:16:32;;6907:425;;7074:12;:21;;;;;;;6907:425;;;-1:-1:-1;;;;;7285:13:32;;:9;:13;;;;;;;;;;:22;;;;;;6907:425;7362:2;-1:-1:-1;;;;;7347:25:32;7356:4;-1:-1:-1;;;;;7347:25:32;;7366:5;7347:25;;;;1365::127;;1353:2;1338:18;;1219:177;7347:25:32;;;;;;;;6272:1107;;;:::o;14:548:127:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:196::-;635:20;;-1:-1:-1;;;;;684:54:127;;674:65;;664:93;;753:1;750;743:12;664:93;567:196;;;:::o;768:254::-;836:6;844;897:2;885:9;876:7;872:23;868:32;865:52;;;913:1;910;903:12;865:52;936:29;955:9;936:29;:::i;:::-;926:39;1012:2;997:18;;;;984:32;;-1:-1:-1;;;768:254:127:o;1401:328::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1586:29;1605:9;1586:29;:::i;:::-;1576:39;;1634:38;1668:2;1657:9;1653:18;1634:38;:::i;:::-;1624:48;;1719:2;1708:9;1704:18;1691:32;1681:42;;1401:328;;;;;:::o;1734:180::-;1793:6;1846:2;1834:9;1825:7;1821:23;1817:32;1814:52;;;1862:1;1859;1852:12;1814:52;-1:-1:-1;1885:23:127;;1734:180;-1:-1:-1;1734:180:127:o;2108:186::-;2167:6;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;2259:29;2278:9;2259:29;:::i;:::-;2249:39;2108:186;-1:-1:-1;;;2108:186:127:o;2299:260::-;2367:6;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;2467:29;2486:9;2467:29;:::i;:::-;2457:39;;2515:38;2549:2;2538:9;2534:18;2515:38;:::i;:::-;2505:48;;2299:260;;;;;:::o;2564:380::-;2643:1;2639:12;;;;2686;;;2707:61;;2761:4;2753:6;2749:17;2739:27;;2707:61;2814:2;2806:6;2803:14;2783:18;2780:38;2777:161;;2860:10;2855:3;2851:20;2848:1;2841:31;2895:4;2892:1;2885:15;2923:4;2920:1;2913:15;2777:161;;2564:380;;;:::o;4107:222::-;4172:9;;;4193:10;;;4190:133;;;4245:10;4240:3;4236:20;4233:1;4226:31;4280:4;4277:1;4270:15;4308:4;4305:1;4298:15","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit()":"d0e30db0","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/WNATIVE.sol\":\"WNATIVE\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc\",\"dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"test/mocks/WNATIVE.sol\":{\"keccak256\":\"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5\",\"dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the ERC. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/WNATIVE.sol":"WNATIVE"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca12be071e48f0378179113989f057819c3c1fe70e73e778fb00c9441768cb61","urls":["bzz-raw://60e10ff5a0dd6e15a89cd7e1c0190ba139772efeb696994933d2e54a23fab6cc","dweb:/ipfs/QmVt9Ndx7AiWq1qtzjS5NXsqzfhfUeEQ7XXcLLQJXFvJtK"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"test/mocks/WNATIVE.sol":{"keccak256":"0xdbbba0868467f98b7d4f1d14f87768c15bc083137d09a1c1d992e2305f7fc770","urls":["bzz-raw://72ac6f8d4220296943d4f184c921e80572a0bf71552c337d67d841aacb5313b5","dweb:/ipfs/QmVWHfdXT24TYBmEoQHZip1xJVHnpwTG41fVHCjJtNUFhK"],"license":"MIT"}},"version":1},"id":126} \ No newline at end of file diff --git a/abi/bips-config.sol/BipsConfig.json b/abi/bips-config.sol/BipsConfig.json deleted file mode 100644 index 908b50b9..00000000 --- a/abi/bips-config.sol/BipsConfig.json +++ /dev/null @@ -1,6023 +0,0 @@ -{ - "abi": [], - "bytecode": { - "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aadaf1f1c41b844d1a76616a452284d6da1bc82f6a9de859557bbcc098c61a6a64736f6c63430008140033", - "sourceMap": "59:3867:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:3867:43;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aadaf1f1c41b844d1a76616a452284d6da1bc82f6a9de859557bbcc098c61a6a64736f6c63430008140033", - "sourceMap": "59:3867:43:-:0;;;;;;;;", - "linkReferences": {} - }, - "methodIdentifiers": {}, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/config/bips-config.sol\":\"BipsConfig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"script/config/bips-config.sol\":{\"keccak256\":\"0x228acc4660164a61cd2395c1324407b6d62ebca218f4acce1cd8d63e497d833e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9330520b6139e618d0231c4162df3fa36ae995cb53acf535754a5a25d1783b69\",\"dweb:/ipfs/QmVHB3Rb9wA8g6H7yJazKnrDKP7deaE8EPx9igF9HjgJjr\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "script/config/bips-config.sol": "BipsConfig" - }, - "libraries": {} - }, - "sources": { - "script/config/bips-config.sol": { - "keccak256": "0x228acc4660164a61cd2395c1324407b6d62ebca218f4acce1cd8d63e497d833e", - "urls": [ - "bzz-raw://9330520b6139e618d0231c4162df3fa36ae995cb53acf535754a5a25d1783b69", - "dweb:/ipfs/QmVHB3Rb9wA8g6H7yJazKnrDKP7deaE8EPx9igF9HjgJjr" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "script/config/bips-config.sol", - "id": 51379, - "exportedSymbols": { - "BipsConfig": [ - 51378 - ] - }, - "nodeType": "SourceUnit", - "src": "33:3894:43", - "nodes": [ - { - "id": 50835, - "nodeType": "PragmaDirective", - "src": "33:24:43", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ] - }, - { - "id": 51378, - "nodeType": "ContractDefinition", - "src": "59:3867:43", - "nodes": [ - { - "id": 50856, - "nodeType": "StructDefinition", - "src": "84:326:43", - "nodes": [], - "canonicalName": "BipsConfig.FactoryPreset", - "members": [ - { - "constant": false, - "id": 50837, - "mutability": "mutable", - "name": "binStep", - "nameLocation": "122:7:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "115:14:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 50836, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "115:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50839, - "mutability": "mutable", - "name": "baseFactor", - "nameLocation": "146:10:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "139:17:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 50838, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "139:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50841, - "mutability": "mutable", - "name": "filterPeriod", - "nameLocation": "173:12:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "166:19:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 50840, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "166:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50843, - "mutability": "mutable", - "name": "decayPeriod", - "nameLocation": "202:11:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "195:18:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 50842, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "195:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50845, - "mutability": "mutable", - "name": "reductionFactor", - "nameLocation": "230:15:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "223:22:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 50844, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "223:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50847, - "mutability": "mutable", - "name": "variableFeeControl", - "nameLocation": "262:18:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "255:25:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 50846, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "255:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50849, - "mutability": "mutable", - "name": "protocolShare", - "nameLocation": "297:13:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "290:20:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 50848, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "290:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50851, - "mutability": "mutable", - "name": "maxVolatilityAccumulated", - "nameLocation": "327:24:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "320:31:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 50850, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "320:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50853, - "mutability": "mutable", - "name": "sampleLifetime", - "nameLocation": "368:14:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "361:21:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 50852, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "361:6:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50855, - "mutability": "mutable", - "name": "isOpen", - "nameLocation": "397:6:43", - "nodeType": "VariableDeclaration", - "scope": 50856, - "src": "392:11:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 50854, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "392:4:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "FactoryPreset", - "nameLocation": "91:13:43", - "scope": 51378, - "visibility": "public" - }, - { - "id": 51320, - "nodeType": "FunctionDefinition", - "src": "416:3186:43", - "nodes": [], - "body": { - "id": 51319, - "nodeType": "Block", - "src": "500:3102:43", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 50866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 50864, - "name": "_bp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50858, - "src": "514:3:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "31", - "id": 50865, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "521:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "514:8:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 50930, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 50928, - "name": "_bp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50858, - "src": "957:3:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "32", - "id": 50929, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "964:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "957:8:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 50994, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 50992, - "name": "_bp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50858, - "src": "1398:3:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "35", - "id": 50993, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1405:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "1398:8:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 51058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 51056, - "name": "_bp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50858, - "src": "1838:3:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "3130", - "id": 51057, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1845:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "1838:9:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 51122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 51120, - "name": "_bp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50858, - "src": "2280:3:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "3135", - "id": 51121, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2287:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "src": "2280:9:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 51186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 51184, - "name": "_bp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50858, - "src": "2722:3:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "3230", - "id": 51185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2729:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - }, - "value": "20" - }, - "src": "2722:9:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 51250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 51248, - "name": "_bp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50858, - "src": "3164:3:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "3235", - "id": 51249, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3171:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "25" - }, - "src": "3164:9:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51312, - "nodeType": "IfStatement", - "src": "3160:436:43", - "trueBody": { - "id": 51311, - "nodeType": "Block", - "src": "3175:421:43", - "statements": [ - { - "expression": { - "id": 51255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51251, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3189:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51253, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3196:7:43", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "3189:14:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3235", - "id": 51254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3206:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "25" - }, - "src": "3189:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51256, - "nodeType": "ExpressionStatement", - "src": "3189:19:43" - }, - { - "expression": { - "id": 51261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51257, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3222:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51259, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3229:10:43", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "3222:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31305f303030", - "id": 51260, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3242:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10_000" - }, - "src": "3222:26:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51262, - "nodeType": "ExpressionStatement", - "src": "3222:26:43" - }, - { - "expression": { - "id": 51267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51263, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3262:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51265, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3269:12:43", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "3262:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3330", - "id": 51266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3284:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_30_by_1", - "typeString": "int_const 30" - }, - "value": "30" - }, - "src": "3262:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51268, - "nodeType": "ExpressionStatement", - "src": "3262:24:43" - }, - { - "expression": { - "id": 51273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51269, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3300:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51271, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3307:11:43", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "3300:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "363030", - "id": 51272, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3321:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_600_by_1", - "typeString": "int_const 600" - }, - "value": "600" - }, - "src": "3300:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51274, - "nodeType": "ExpressionStatement", - "src": "3300:24:43" - }, - { - "expression": { - "id": 51279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51275, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3338:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51277, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3345:15:43", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "3338:22:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "355f303030", - "id": 51278, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3363:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000_by_1", - "typeString": "int_const 5000" - }, - "value": "5_000" - }, - "src": "3338:30:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51280, - "nodeType": "ExpressionStatement", - "src": "3338:30:43" - }, - { - "expression": { - "id": 51285, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51281, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3382:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51283, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3389:18:43", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "3382:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31355f303030", - "id": 51284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3410:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_15000_by_1", - "typeString": "int_const 15000" - }, - "value": "15_000" - }, - "src": "3382:34:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51286, - "nodeType": "ExpressionStatement", - "src": "3382:34:43" - }, - { - "expression": { - "id": 51291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51287, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3430:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51289, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3437:13:43", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "3430:20:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 51290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3453:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3430:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51292, - "nodeType": "ExpressionStatement", - "src": "3430:24:43" - }, - { - "expression": { - "id": 51297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51293, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3468:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51295, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3475:24:43", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "3468:31:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3335305f303030", - "id": 51296, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3502:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_350000_by_1", - "typeString": "int_const 350000" - }, - "value": "350_000" - }, - "src": "3468:41:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51298, - "nodeType": "ExpressionStatement", - "src": "3468:41:43" - }, - { - "expression": { - "id": 51303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51299, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3523:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51301, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3530:14:43", - "memberName": "sampleLifetime", - "nodeType": "MemberAccess", - "referencedDeclaration": 50853, - "src": "3523:21:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 51302, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3547:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "3523:27:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51304, - "nodeType": "ExpressionStatement", - "src": "3523:27:43" - }, - { - "expression": { - "id": 51309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51305, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3564:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51307, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3571:6:43", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "3564:13:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 51308, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3580:5:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3564:21:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51310, - "nodeType": "ExpressionStatement", - "src": "3564:21:43" - } - ] - } - }, - "id": 51313, - "nodeType": "IfStatement", - "src": "2718:878:43", - "trueBody": { - "id": 51247, - "nodeType": "Block", - "src": "2733:421:43", - "statements": [ - { - "expression": { - "id": 51191, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51187, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2747:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51189, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2754:7:43", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "2747:14:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3230", - "id": 51190, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2764:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - }, - "value": "20" - }, - "src": "2747:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51192, - "nodeType": "ExpressionStatement", - "src": "2747:19:43" - }, - { - "expression": { - "id": 51197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51193, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2780:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51195, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2787:10:43", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "2780:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31305f303030", - "id": 51196, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2800:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10_000" - }, - "src": "2780:26:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51198, - "nodeType": "ExpressionStatement", - "src": "2780:26:43" - }, - { - "expression": { - "id": 51203, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51199, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2820:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51201, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2827:12:43", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "2820:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3330", - "id": 51202, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2842:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_30_by_1", - "typeString": "int_const 30" - }, - "value": "30" - }, - "src": "2820:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51204, - "nodeType": "ExpressionStatement", - "src": "2820:24:43" - }, - { - "expression": { - "id": 51209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51205, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2858:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51207, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2865:11:43", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "2858:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "363030", - "id": 51208, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2879:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_600_by_1", - "typeString": "int_const 600" - }, - "value": "600" - }, - "src": "2858:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51210, - "nodeType": "ExpressionStatement", - "src": "2858:24:43" - }, - { - "expression": { - "id": 51215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51211, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2896:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51213, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2903:15:43", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "2896:22:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "355f303030", - "id": 51214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2921:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000_by_1", - "typeString": "int_const 5000" - }, - "value": "5_000" - }, - "src": "2896:30:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51216, - "nodeType": "ExpressionStatement", - "src": "2896:30:43" - }, - { - "expression": { - "id": 51221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51217, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2940:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51219, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2947:18:43", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "2940:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "32305f303030", - "id": 51220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2968:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_20000_by_1", - "typeString": "int_const 20000" - }, - "value": "20_000" - }, - "src": "2940:34:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51222, - "nodeType": "ExpressionStatement", - "src": "2940:34:43" - }, - { - "expression": { - "id": 51227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51223, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2988:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51225, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2995:13:43", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "2988:20:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 51226, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3011:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2988:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51228, - "nodeType": "ExpressionStatement", - "src": "2988:24:43" - }, - { - "expression": { - "id": 51233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51229, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3026:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51231, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3033:24:43", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "3026:31:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3335305f303030", - "id": 51232, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3060:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_350000_by_1", - "typeString": "int_const 350000" - }, - "value": "350_000" - }, - "src": "3026:41:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51234, - "nodeType": "ExpressionStatement", - "src": "3026:41:43" - }, - { - "expression": { - "id": 51239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51235, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3081:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51237, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3088:14:43", - "memberName": "sampleLifetime", - "nodeType": "MemberAccess", - "referencedDeclaration": 50853, - "src": "3081:21:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 51238, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3105:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "3081:27:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51240, - "nodeType": "ExpressionStatement", - "src": "3081:27:43" - }, - { - "expression": { - "id": 51245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51241, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "3122:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51243, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3129:6:43", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "3122:13:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 51244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3138:5:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3122:21:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51246, - "nodeType": "ExpressionStatement", - "src": "3122:21:43" - } - ] - } - }, - "id": 51314, - "nodeType": "IfStatement", - "src": "2276:1320:43", - "trueBody": { - "id": 51183, - "nodeType": "Block", - "src": "2291:421:43", - "statements": [ - { - "expression": { - "id": 51127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51123, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2305:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51125, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2312:7:43", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "2305:14:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3135", - "id": 51126, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2322:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "src": "2305:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51128, - "nodeType": "ExpressionStatement", - "src": "2305:19:43" - }, - { - "expression": { - "id": 51133, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51129, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2338:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51131, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2345:10:43", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "2338:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31305f303030", - "id": 51132, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2358:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10_000" - }, - "src": "2338:26:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51134, - "nodeType": "ExpressionStatement", - "src": "2338:26:43" - }, - { - "expression": { - "id": 51139, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51135, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2378:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51137, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2385:12:43", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "2378:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3330", - "id": 51138, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2400:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_30_by_1", - "typeString": "int_const 30" - }, - "value": "30" - }, - "src": "2378:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51140, - "nodeType": "ExpressionStatement", - "src": "2378:24:43" - }, - { - "expression": { - "id": 51145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51141, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2416:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51143, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2423:11:43", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "2416:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "363030", - "id": 51144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2437:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_600_by_1", - "typeString": "int_const 600" - }, - "value": "600" - }, - "src": "2416:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51146, - "nodeType": "ExpressionStatement", - "src": "2416:24:43" - }, - { - "expression": { - "id": 51151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51147, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2454:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51149, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2461:15:43", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "2454:22:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "355f303030", - "id": 51150, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2479:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000_by_1", - "typeString": "int_const 5000" - }, - "value": "5_000" - }, - "src": "2454:30:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51152, - "nodeType": "ExpressionStatement", - "src": "2454:30:43" - }, - { - "expression": { - "id": 51157, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51153, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2498:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51155, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2505:18:43", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "2498:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "33305f303030", - "id": 51156, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2526:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_30000_by_1", - "typeString": "int_const 30000" - }, - "value": "30_000" - }, - "src": "2498:34:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51158, - "nodeType": "ExpressionStatement", - "src": "2498:34:43" - }, - { - "expression": { - "id": 51163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51159, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2546:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51161, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2553:13:43", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "2546:20:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 51162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2569:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2546:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51164, - "nodeType": "ExpressionStatement", - "src": "2546:24:43" - }, - { - "expression": { - "id": 51169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51165, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2584:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51167, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2591:24:43", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "2584:31:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3335305f303030", - "id": 51168, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2618:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_350000_by_1", - "typeString": "int_const 350000" - }, - "value": "350_000" - }, - "src": "2584:41:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51170, - "nodeType": "ExpressionStatement", - "src": "2584:41:43" - }, - { - "expression": { - "id": 51175, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51171, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2639:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51173, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2646:14:43", - "memberName": "sampleLifetime", - "nodeType": "MemberAccess", - "referencedDeclaration": 50853, - "src": "2639:21:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 51174, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2663:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "2639:27:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51176, - "nodeType": "ExpressionStatement", - "src": "2639:27:43" - }, - { - "expression": { - "id": 51181, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51177, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2680:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51179, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2687:6:43", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "2680:13:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 51180, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2696:5:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2680:21:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51182, - "nodeType": "ExpressionStatement", - "src": "2680:21:43" - } - ] - } - }, - "id": 51315, - "nodeType": "IfStatement", - "src": "1834:1762:43", - "trueBody": { - "id": 51119, - "nodeType": "Block", - "src": "1849:421:43", - "statements": [ - { - "expression": { - "id": 51063, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51059, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1863:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51061, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1870:7:43", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "1863:14:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3130", - "id": 51062, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1880:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "1863:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51064, - "nodeType": "ExpressionStatement", - "src": "1863:19:43" - }, - { - "expression": { - "id": 51069, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51065, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1896:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51067, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1903:10:43", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "1896:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31305f303030", - "id": 51068, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1916:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10_000" - }, - "src": "1896:26:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51070, - "nodeType": "ExpressionStatement", - "src": "1896:26:43" - }, - { - "expression": { - "id": 51075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51071, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1936:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51073, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1943:12:43", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "1936:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3330", - "id": 51074, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1958:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_30_by_1", - "typeString": "int_const 30" - }, - "value": "30" - }, - "src": "1936:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51076, - "nodeType": "ExpressionStatement", - "src": "1936:24:43" - }, - { - "expression": { - "id": 51081, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51077, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1974:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51079, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1981:11:43", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "1974:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "363030", - "id": 51080, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1995:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_600_by_1", - "typeString": "int_const 600" - }, - "value": "600" - }, - "src": "1974:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51082, - "nodeType": "ExpressionStatement", - "src": "1974:24:43" - }, - { - "expression": { - "id": 51087, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51083, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2012:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51085, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2019:15:43", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "2012:22:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "355f303030", - "id": 51086, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2037:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000_by_1", - "typeString": "int_const 5000" - }, - "value": "5_000" - }, - "src": "2012:30:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51088, - "nodeType": "ExpressionStatement", - "src": "2012:30:43" - }, - { - "expression": { - "id": 51093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51089, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2056:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51091, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2063:18:43", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "2056:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "34305f303030", - "id": 51092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2084:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_40000_by_1", - "typeString": "int_const 40000" - }, - "value": "40_000" - }, - "src": "2056:34:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51094, - "nodeType": "ExpressionStatement", - "src": "2056:34:43" - }, - { - "expression": { - "id": 51099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51095, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2104:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51097, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2111:13:43", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "2104:20:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 51098, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2127:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2104:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51100, - "nodeType": "ExpressionStatement", - "src": "2104:24:43" - }, - { - "expression": { - "id": 51105, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51101, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2142:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51103, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2149:24:43", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "2142:31:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3335305f303030", - "id": 51104, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2176:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_350000_by_1", - "typeString": "int_const 350000" - }, - "value": "350_000" - }, - "src": "2142:41:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51106, - "nodeType": "ExpressionStatement", - "src": "2142:41:43" - }, - { - "expression": { - "id": 51111, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51107, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2197:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51109, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2204:14:43", - "memberName": "sampleLifetime", - "nodeType": "MemberAccess", - "referencedDeclaration": 50853, - "src": "2197:21:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 51110, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2221:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "2197:27:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51112, - "nodeType": "ExpressionStatement", - "src": "2197:27:43" - }, - { - "expression": { - "id": 51117, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51113, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "2238:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51115, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2245:6:43", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "2238:13:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 51116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2254:5:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2238:21:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51118, - "nodeType": "ExpressionStatement", - "src": "2238:21:43" - } - ] - } - }, - "id": 51316, - "nodeType": "IfStatement", - "src": "1394:2202:43", - "trueBody": { - "id": 51055, - "nodeType": "Block", - "src": "1408:420:43", - "statements": [ - { - "expression": { - "id": 50999, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50995, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1422:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50997, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1429:7:43", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "1422:14:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "35", - "id": 50998, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1439:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "1422:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51000, - "nodeType": "ExpressionStatement", - "src": "1422:18:43" - }, - { - "expression": { - "id": 51005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51001, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1454:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51003, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1461:10:43", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "1454:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "385f303030", - "id": 51004, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1474:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_8000_by_1", - "typeString": "int_const 8000" - }, - "value": "8_000" - }, - "src": "1454:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51006, - "nodeType": "ExpressionStatement", - "src": "1454:25:43" - }, - { - "expression": { - "id": 51011, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51007, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1493:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51009, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1500:12:43", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "1493:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3330", - "id": 51010, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1515:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_30_by_1", - "typeString": "int_const 30" - }, - "value": "30" - }, - "src": "1493:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51012, - "nodeType": "ExpressionStatement", - "src": "1493:24:43" - }, - { - "expression": { - "id": 51017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51013, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1531:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51015, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1538:11:43", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "1531:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "363030", - "id": 51016, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1552:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_600_by_1", - "typeString": "int_const 600" - }, - "value": "600" - }, - "src": "1531:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51018, - "nodeType": "ExpressionStatement", - "src": "1531:24:43" - }, - { - "expression": { - "id": 51023, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51019, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1569:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51021, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1576:15:43", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "1569:22:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "355f303030", - "id": 51022, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1594:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000_by_1", - "typeString": "int_const 5000" - }, - "value": "5_000" - }, - "src": "1569:30:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51024, - "nodeType": "ExpressionStatement", - "src": "1569:30:43" - }, - { - "expression": { - "id": 51029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51025, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1613:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51027, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1620:18:43", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "1613:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3132305f303030", - "id": 51028, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1641:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120000_by_1", - "typeString": "int_const 120000" - }, - "value": "120_000" - }, - "src": "1613:35:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51030, - "nodeType": "ExpressionStatement", - "src": "1613:35:43" - }, - { - "expression": { - "id": 51035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51031, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1662:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51033, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1669:13:43", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "1662:20:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 51034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1685:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1662:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51036, - "nodeType": "ExpressionStatement", - "src": "1662:24:43" - }, - { - "expression": { - "id": 51041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51037, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1700:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51039, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1707:24:43", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "1700:31:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3330305f303030", - "id": 51040, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1734:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_300000_by_1", - "typeString": "int_const 300000" - }, - "value": "300_000" - }, - "src": "1700:41:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 51042, - "nodeType": "ExpressionStatement", - "src": "1700:41:43" - }, - { - "expression": { - "id": 51047, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51043, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1755:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51045, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1762:14:43", - "memberName": "sampleLifetime", - "nodeType": "MemberAccess", - "referencedDeclaration": 50853, - "src": "1755:21:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 51046, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1779:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "1755:27:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 51048, - "nodeType": "ExpressionStatement", - "src": "1755:27:43" - }, - { - "expression": { - "id": 51053, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 51049, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1796:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51051, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1803:6:43", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "1796:13:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 51052, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1812:5:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "1796:21:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51054, - "nodeType": "ExpressionStatement", - "src": "1796:21:43" - } - ] - } - }, - "id": 51317, - "nodeType": "IfStatement", - "src": "953:2643:43", - "trueBody": { - "id": 50991, - "nodeType": "Block", - "src": "967:421:43", - "statements": [ - { - "expression": { - "id": 50935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50931, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "981:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50933, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "988:7:43", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "981:14:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "32", - "id": 50934, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "998:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "981:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50936, - "nodeType": "ExpressionStatement", - "src": "981:18:43" - }, - { - "expression": { - "id": 50941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50937, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1013:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50939, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1020:10:43", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "1013:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31355f303030", - "id": 50940, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1033:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_15000_by_1", - "typeString": "int_const 15000" - }, - "value": "15_000" - }, - "src": "1013:26:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50942, - "nodeType": "ExpressionStatement", - "src": "1013:26:43" - }, - { - "expression": { - "id": 50947, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50943, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1053:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50945, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1060:12:43", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "1053:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3130", - "id": 50946, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1075:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "1053:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50948, - "nodeType": "ExpressionStatement", - "src": "1053:24:43" - }, - { - "expression": { - "id": 50953, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50949, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1091:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50951, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1098:11:43", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "1091:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 50952, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1112:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "1091:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50954, - "nodeType": "ExpressionStatement", - "src": "1091:24:43" - }, - { - "expression": { - "id": 50959, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50955, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1129:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50957, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1136:15:43", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "1129:22:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "355f303030", - "id": 50958, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1154:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000_by_1", - "typeString": "int_const 5000" - }, - "value": "5_000" - }, - "src": "1129:30:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50960, - "nodeType": "ExpressionStatement", - "src": "1129:30:43" - }, - { - "expression": { - "id": 50965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50961, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1173:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50963, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1180:18:43", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "1173:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3530305f303030", - "id": 50964, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1201:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_500000_by_1", - "typeString": "int_const 500000" - }, - "value": "500_000" - }, - "src": "1173:35:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 50966, - "nodeType": "ExpressionStatement", - "src": "1173:35:43" - }, - { - "expression": { - "id": 50971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50967, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1222:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50969, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1229:13:43", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "1222:20:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 50970, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1245:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1222:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50972, - "nodeType": "ExpressionStatement", - "src": "1222:24:43" - }, - { - "expression": { - "id": 50977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50973, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1260:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50975, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1267:24:43", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "1260:31:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3235305f303030", - "id": 50976, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1294:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_250000_by_1", - "typeString": "int_const 250000" - }, - "value": "250_000" - }, - "src": "1260:41:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 50978, - "nodeType": "ExpressionStatement", - "src": "1260:41:43" - }, - { - "expression": { - "id": 50983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50979, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1315:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50981, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1322:14:43", - "memberName": "sampleLifetime", - "nodeType": "MemberAccess", - "referencedDeclaration": 50853, - "src": "1315:21:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 50982, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1339:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "1315:27:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50984, - "nodeType": "ExpressionStatement", - "src": "1315:27:43" - }, - { - "expression": { - "id": 50989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50985, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "1356:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50987, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1363:6:43", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "1356:13:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 50988, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1372:5:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "1356:21:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 50990, - "nodeType": "ExpressionStatement", - "src": "1356:21:43" - } - ] - } - }, - "id": 51318, - "nodeType": "IfStatement", - "src": "510:3086:43", - "trueBody": { - "id": 50927, - "nodeType": "Block", - "src": "524:423:43", - "statements": [ - { - "expression": { - "id": 50871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50867, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "538:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50869, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "545:7:43", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "538:14:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31", - "id": 50870, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "555:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "538:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50872, - "nodeType": "ExpressionStatement", - "src": "538:18:43" - }, - { - "expression": { - "id": 50877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50873, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "570:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50875, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "577:10:43", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "570:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "32305f303030", - "id": 50876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "590:6:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_20000_by_1", - "typeString": "int_const 20000" - }, - "value": "20_000" - }, - "src": "570:26:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50878, - "nodeType": "ExpressionStatement", - "src": "570:26:43" - }, - { - "expression": { - "id": 50883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50879, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "610:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50881, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "617:12:43", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "610:19:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3130", - "id": 50882, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "632:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "610:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50884, - "nodeType": "ExpressionStatement", - "src": "610:24:43" - }, - { - "expression": { - "id": 50889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50885, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "648:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50887, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "655:11:43", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "648:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 50888, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "669:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "648:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50890, - "nodeType": "ExpressionStatement", - "src": "648:24:43" - }, - { - "expression": { - "id": 50895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50891, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "686:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50893, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "693:15:43", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "686:22:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "355f303030", - "id": 50894, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "711:5:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000_by_1", - "typeString": "int_const 5000" - }, - "value": "5_000" - }, - "src": "686:30:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50896, - "nodeType": "ExpressionStatement", - "src": "686:30:43" - }, - { - "expression": { - "id": 50901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50897, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "730:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50899, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "737:18:43", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "730:25:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "325f3030305f303030", - "id": 50900, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "758:9:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_2000000_by_1", - "typeString": "int_const 2000000" - }, - "value": "2_000_000" - }, - "src": "730:37:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 50902, - "nodeType": "ExpressionStatement", - "src": "730:37:43" - }, - { - "expression": { - "id": 50907, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50903, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "781:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50905, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "788:13:43", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "781:20:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 50906, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "804:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "781:24:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50908, - "nodeType": "ExpressionStatement", - "src": "781:24:43" - }, - { - "expression": { - "id": 50913, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50909, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "819:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50911, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "826:24:43", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "819:31:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3130305f303030", - "id": 50912, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "853:7:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_100000_by_1", - "typeString": "int_const 100000" - }, - "value": "100_000" - }, - "src": "819:41:43", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "id": 50914, - "nodeType": "ExpressionStatement", - "src": "819:41:43" - }, - { - "expression": { - "id": 50919, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50915, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "874:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50917, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "881:14:43", - "memberName": "sampleLifetime", - "nodeType": "MemberAccess", - "referencedDeclaration": 50853, - "src": "874:21:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "313230", - "id": 50918, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "898:3:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_120_by_1", - "typeString": "int_const 120" - }, - "value": "120" - }, - "src": "874:27:43", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 50920, - "nodeType": "ExpressionStatement", - "src": "874:27:43" - }, - { - "expression": { - "id": 50925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 50921, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50862, - "src": "915:6:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 50923, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "922:6:43", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "915:13:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 50924, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "931:5:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "915:21:43", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 50926, - "nodeType": "ExpressionStatement", - "src": "915:21:43" - } - ] - } - } - ] - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPreset", - "nameLocation": "425:9:43", - "parameters": { - "id": 50859, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50858, - "mutability": "mutable", - "name": "_bp", - "nameLocation": "443:3:43", - "nodeType": "VariableDeclaration", - "scope": 51320, - "src": "435:11:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 50857, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "435:7:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "434:13:43" - }, - "returnParameters": { - "id": 50863, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50862, - "mutability": "mutable", - "name": "preset", - "nameLocation": "492:6:43", - "nodeType": "VariableDeclaration", - "scope": 51320, - "src": "471:27:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset" - }, - "typeName": { - "id": 50861, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 50860, - "name": "FactoryPreset", - "nameLocations": [ - "471:13:43" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 50856, - "src": "471:13:43" - }, - "referencedDeclaration": 50856, - "src": "471:13:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_storage_ptr", - "typeString": "struct BipsConfig.FactoryPreset" - } - }, - "visibility": "internal" - } - ], - "src": "470:29:43" - }, - "scope": 51378, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "id": 51377, - "nodeType": "FunctionDefinition", - "src": "3608:316:43", - "nodes": [], - "body": { - "id": 51376, - "nodeType": "Block", - "src": "3685:239:43", - "nodes": [], - "statements": [ - { - "expression": { - "id": 51332, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 51326, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3695:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "hexValue": "37", - "id": 51330, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3722:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - }, - "value": "7" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_7_by_1", - "typeString": "int_const 7" - } - ], - "id": 51329, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "3708:13:43", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (uint256[] memory)" - }, - "typeName": { - "baseType": { - "id": 51327, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3712:7:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51328, - "nodeType": "ArrayTypeName", - "src": "3712:9:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - } - }, - "id": 51331, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3708:16:43", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "src": "3695:29:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51333, - "nodeType": "ExpressionStatement", - "src": "3695:29:43" - }, - { - "expression": { - "id": 51338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 51334, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3734:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51336, - "indexExpression": { - "hexValue": "30", - "id": 51335, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3745:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3734:13:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31", - "id": 51337, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3750:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "3734:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51339, - "nodeType": "ExpressionStatement", - "src": "3734:17:43" - }, - { - "expression": { - "id": 51344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 51340, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3761:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51342, - "indexExpression": { - "hexValue": "31", - "id": 51341, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3772:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3761:13:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "32", - "id": 51343, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3777:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "3761:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51345, - "nodeType": "ExpressionStatement", - "src": "3761:17:43" - }, - { - "expression": { - "id": 51350, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 51346, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3788:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51348, - "indexExpression": { - "hexValue": "32", - "id": 51347, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3799:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3788:13:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "35", - "id": 51349, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3804:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "src": "3788:17:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51351, - "nodeType": "ExpressionStatement", - "src": "3788:17:43" - }, - { - "expression": { - "id": 51356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 51352, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3815:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51354, - "indexExpression": { - "hexValue": "33", - "id": 51353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3826:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3815:13:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3130", - "id": 51355, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3831:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "3815:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51357, - "nodeType": "ExpressionStatement", - "src": "3815:18:43" - }, - { - "expression": { - "id": 51362, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 51358, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3843:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51360, - "indexExpression": { - "hexValue": "34", - "id": 51359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3854:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3843:13:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3135", - "id": 51361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3859:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "15" - }, - "src": "3843:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51363, - "nodeType": "ExpressionStatement", - "src": "3843:18:43" - }, - { - "expression": { - "id": 51368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 51364, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3871:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51366, - "indexExpression": { - "hexValue": "35", - "id": 51365, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3882:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3871:13:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3230", - "id": 51367, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3887:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - }, - "value": "20" - }, - "src": "3871:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51369, - "nodeType": "ExpressionStatement", - "src": "3871:18:43" - }, - { - "expression": { - "id": 51374, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 51370, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51324, - "src": "3899:10:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51372, - "indexExpression": { - "hexValue": "36", - "id": 51371, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3910:1:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_6_by_1", - "typeString": "int_const 6" - }, - "value": "6" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3899:13:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3235", - "id": 51373, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3915:2:43", - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "25" - }, - "src": "3899:18:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51375, - "nodeType": "ExpressionStatement", - "src": "3899:18:43" - } - ] - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPresetList", - "nameLocation": "3617:13:43", - "parameters": { - "id": 51321, - "nodeType": "ParameterList", - "parameters": [], - "src": "3630:2:43" - }, - "returnParameters": { - "id": 51325, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 51324, - "mutability": "mutable", - "name": "presetList", - "nameLocation": "3673:10:43", - "nodeType": "VariableDeclaration", - "scope": 51377, - "src": "3656:27:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 51322, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3656:7:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51323, - "nodeType": "ArrayTypeName", - "src": "3656:9:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "3655:29:43" - }, - "scope": 51378, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "BipsConfig", - "contractDependencies": [], - "contractKind": "library", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 51378 - ], - "name": "BipsConfig", - "nameLocation": "67:10:43", - "scope": 51379, - "usedErrors": [], - "usedEvents": [] - } - ], - "license": "MIT" - }, - "id": 43 -} \ No newline at end of file diff --git a/abi/build-info/70a190e346e95840574e2adb96014a31.json b/abi/build-info/70a190e346e95840574e2adb96014a31.json deleted file mode 100644 index 3facc28b..00000000 --- a/abi/build-info/70a190e346e95840574e2adb96014a31.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"70a190e346e95840574e2adb96014a31","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/Script.sol","2":"lib/forge-std/src/StdAssertions.sol","3":"lib/forge-std/src/StdChains.sol","4":"lib/forge-std/src/StdCheats.sol","5":"lib/forge-std/src/StdError.sol","6":"lib/forge-std/src/StdInvariant.sol","7":"lib/forge-std/src/StdJson.sol","8":"lib/forge-std/src/StdMath.sol","9":"lib/forge-std/src/StdStorage.sol","10":"lib/forge-std/src/StdStyle.sol","11":"lib/forge-std/src/StdUtils.sol","12":"lib/forge-std/src/Test.sol","13":"lib/forge-std/src/Vm.sol","14":"lib/forge-std/src/console.sol","15":"lib/forge-std/src/console2.sol","16":"lib/forge-std/src/interfaces/IERC165.sol","17":"lib/forge-std/src/interfaces/IERC20.sol","18":"lib/forge-std/src/interfaces/IERC721.sol","19":"lib/forge-std/src/interfaces/IMulticall3.sol","20":"lib/forge-std/src/mocks/MockERC20.sol","21":"lib/forge-std/src/mocks/MockERC721.sol","22":"lib/forge-std/src/safeconsole.sol","23":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","24":"lib/openzeppelin-contracts/contracts/access/AccessControl.sol","25":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","26":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","27":"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol","28":"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol","29":"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol","30":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","31":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","32":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","33":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","34":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","35":"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","36":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","37":"lib/openzeppelin-contracts/contracts/utils/Address.sol","38":"lib/openzeppelin-contracts/contracts/utils/Context.sol","39":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","40":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","41":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol","42":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol","43":"script/config/bips-config.sol","44":"script/deploy-core.s.sol","45":"src/LBBaseHooks.sol","46":"src/LBFactory.sol","47":"src/LBPair.sol","48":"src/LBQuoter.sol","49":"src/LBRouter.sol","50":"src/LBToken.sol","51":"src/interfaces/ILBFactory.sol","52":"src/interfaces/ILBFlashLoanCallback.sol","53":"src/interfaces/ILBHooks.sol","54":"src/interfaces/ILBLegacyFactory.sol","55":"src/interfaces/ILBLegacyPair.sol","56":"src/interfaces/ILBLegacyRouter.sol","57":"src/interfaces/ILBLegacyToken.sol","58":"src/interfaces/ILBPair.sol","59":"src/interfaces/ILBRouter.sol","60":"src/interfaces/ILBToken.sol","61":"src/interfaces/ISovrynLBFactory.sol","62":"src/interfaces/ISovrynLBPair.sol","63":"src/interfaces/ISovrynLBRouter01.sol","64":"src/interfaces/ISovrynLBRouter02.sol","65":"src/interfaces/IWNATIVE.sol","66":"src/libraries/BinHelper.sol","67":"src/libraries/Clone.sol","68":"src/libraries/Constants.sol","69":"src/libraries/FeeHelper.sol","70":"src/libraries/Hooks.sol","71":"src/libraries/ImmutableClone.sol","72":"src/libraries/JoeLibrary.sol","73":"src/libraries/OracleHelper.sol","74":"src/libraries/PairParameterHelper.sol","75":"src/libraries/PriceHelper.sol","76":"src/libraries/ReentrancyGuardUpgradeable.sol","77":"src/libraries/TokenHelper.sol","78":"src/libraries/math/BitMath.sol","79":"src/libraries/math/Encoded.sol","80":"src/libraries/math/LiquidityConfigurations.sol","81":"src/libraries/math/PackedUint128Math.sol","82":"src/libraries/math/SafeCast.sol","83":"src/libraries/math/SampleMath.sol","84":"src/libraries/math/TreeMath.sol","85":"src/libraries/math/Uint128x128Math.sol","86":"src/libraries/math/Uint256x256Math.sol","87":"test/Faucet.t.sol","88":"test/GetOracleLength.t.sol","89":"test/Hooks.t.sol","90":"test/LBFactory.t.sol","91":"test/LBPairFees.t.sol","92":"test/LBPairFlashloan.t.sol","93":"test/LBPairHooks.t.sol","94":"test/LBPairImplementation.t.sol","95":"test/LBPairInitialState.t.sol","96":"test/LBPairLiquidity.t.sol","97":"test/LBPairOracle.t.sol","98":"test/LBPairSwap.t.sol","99":"test/LBRouter.Liquidity.t.sol","100":"test/LBRouter.Swap.t.sol","101":"test/LBToken.t.sol","102":"test/helpers/TestHelper.sol","103":"test/helpers/Utils.sol","104":"test/integration/Addresses.sol","105":"test/integration/LBQuoter.t.sol","106":"test/integration/LBQuoterPriority.t.sol","107":"test/integration/LBRouter.t.sol","108":"test/libraries/BinHelper.t.sol","109":"test/libraries/FeeHelper.t.sol","110":"test/libraries/ImmutableClone.t.sol","111":"test/libraries/OracleHelper.t.sol","112":"test/libraries/PairParameterHelper.t.sol","113":"test/libraries/PriceHelper.t.sol","114":"test/libraries/ReentrancyGuardUpgradeable.t.sol","115":"test/libraries/TokenHelper.t.sol","116":"test/libraries/math/BitMath.t.sol","117":"test/libraries/math/Encoded.t.sol","118":"test/libraries/math/LiquidityConfigurations.t.sol","119":"test/libraries/math/PackedUint128Math.t.sol","120":"test/libraries/math/SafeCast.t.sol","121":"test/libraries/math/SampleMath.t.sol","122":"test/libraries/math/TreeMath.t.sol","123":"test/libraries/math/Uint128x128Math.t.sol","124":"test/libraries/math/Uint256x256Math.t.sol","125":"test/mocks/ERC20.sol","126":"test/mocks/ERC20TransferTax.sol","127":"test/mocks/Faucet.sol","128":"test/mocks/FlashBorrower.sol","129":"test/mocks/MockHooks.sol","130":"test/mocks/WNATIVE.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/abi/build-info/babcc1f567656a0852c78b106aad030a.json b/abi/build-info/babcc1f567656a0852c78b106aad030a.json deleted file mode 100644 index fe29326e..00000000 --- a/abi/build-info/babcc1f567656a0852c78b106aad030a.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"babcc1f567656a0852c78b106aad030a","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/StdAssertions.sol","2":"lib/forge-std/src/StdChains.sol","3":"lib/forge-std/src/StdCheats.sol","4":"lib/forge-std/src/StdError.sol","5":"lib/forge-std/src/StdInvariant.sol","6":"lib/forge-std/src/StdJson.sol","7":"lib/forge-std/src/StdMath.sol","8":"lib/forge-std/src/StdStorage.sol","9":"lib/forge-std/src/StdStyle.sol","10":"lib/forge-std/src/StdUtils.sol","11":"lib/forge-std/src/Test.sol","12":"lib/forge-std/src/Vm.sol","13":"lib/forge-std/src/console.sol","14":"lib/forge-std/src/console2.sol","15":"lib/forge-std/src/interfaces/IERC165.sol","16":"lib/forge-std/src/interfaces/IERC20.sol","17":"lib/forge-std/src/interfaces/IERC721.sol","18":"lib/forge-std/src/interfaces/IMulticall3.sol","19":"lib/forge-std/src/mocks/MockERC20.sol","20":"lib/forge-std/src/mocks/MockERC721.sol","21":"lib/forge-std/src/safeconsole.sol","22":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","23":"lib/openzeppelin-contracts/contracts/access/AccessControl.sol","24":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","25":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","26":"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol","27":"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol","28":"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol","29":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","30":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","31":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","32":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","33":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","34":"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","35":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","36":"lib/openzeppelin-contracts/contracts/utils/Address.sol","37":"lib/openzeppelin-contracts/contracts/utils/Context.sol","38":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","39":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","40":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol","41":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol","42":"src/LBBaseHooks.sol","43":"src/LBFactory.sol","44":"src/LBPair.sol","45":"src/LBQuoter.sol","46":"src/LBRouter.sol","47":"src/LBToken.sol","48":"src/interfaces/ILBFactory.sol","49":"src/interfaces/ILBFlashLoanCallback.sol","50":"src/interfaces/ILBHooks.sol","51":"src/interfaces/ILBLegacyFactory.sol","52":"src/interfaces/ILBLegacyPair.sol","53":"src/interfaces/ILBLegacyRouter.sol","54":"src/interfaces/ILBLegacyToken.sol","55":"src/interfaces/ILBPair.sol","56":"src/interfaces/ILBRouter.sol","57":"src/interfaces/ILBToken.sol","58":"src/interfaces/ISovrynLBFactory.sol","59":"src/interfaces/ISovrynLBPair.sol","60":"src/interfaces/ISovrynLBRouter01.sol","61":"src/interfaces/ISovrynLBRouter02.sol","62":"src/interfaces/IWNATIVE.sol","63":"src/libraries/BinHelper.sol","64":"src/libraries/Clone.sol","65":"src/libraries/Constants.sol","66":"src/libraries/FeeHelper.sol","67":"src/libraries/Hooks.sol","68":"src/libraries/ImmutableClone.sol","69":"src/libraries/OracleHelper.sol","70":"src/libraries/PairParameterHelper.sol","71":"src/libraries/PriceHelper.sol","72":"src/libraries/ReentrancyGuardUpgradeable.sol","73":"src/libraries/SovrynLBLibrary.sol","74":"src/libraries/TokenHelper.sol","75":"src/libraries/math/BitMath.sol","76":"src/libraries/math/Encoded.sol","77":"src/libraries/math/LiquidityConfigurations.sol","78":"src/libraries/math/PackedUint128Math.sol","79":"src/libraries/math/SafeCast.sol","80":"src/libraries/math/SampleMath.sol","81":"src/libraries/math/TreeMath.sol","82":"src/libraries/math/Uint128x128Math.sol","83":"src/libraries/math/Uint256x256Math.sol","84":"test/Faucet.t.sol","85":"test/Hooks.t.sol","86":"test/LBFactory.t.sol","87":"test/LBPairFees.t.sol","88":"test/LBPairFlashloan.t.sol","89":"test/LBPairHooks.t.sol","90":"test/LBPairImplementation.t.sol","91":"test/LBPairInitialState.t.sol","92":"test/LBPairLiquidity.t.sol","93":"test/LBPairOracle.t.sol","94":"test/LBPairSwap.t.sol","95":"test/LBRouter.Liquidity.t.sol","96":"test/LBRouter.Swap.t.sol","97":"test/LBToken.t.sol","98":"test/helpers/TestHelper.sol","99":"test/helpers/Utils.sol","100":"test/integration/Addresses.sol","101":"test/integration/LBQuoter.t.sol","102":"test/integration/LBQuoterPriority.t.sol","103":"test/integration/LBRouter.t.sol","104":"test/libraries/BinHelper.t.sol","105":"test/libraries/FeeHelper.t.sol","106":"test/libraries/ImmutableClone.t.sol","107":"test/libraries/OracleHelper.t.sol","108":"test/libraries/PairParameterHelper.t.sol","109":"test/libraries/PriceHelper.t.sol","110":"test/libraries/ReentrancyGuardUpgradeable.t.sol","111":"test/libraries/TokenHelper.t.sol","112":"test/libraries/math/BitMath.t.sol","113":"test/libraries/math/Encoded.t.sol","114":"test/libraries/math/LiquidityConfigurations.t.sol","115":"test/libraries/math/PackedUint128Math.t.sol","116":"test/libraries/math/SafeCast.t.sol","117":"test/libraries/math/SampleMath.t.sol","118":"test/libraries/math/TreeMath.t.sol","119":"test/libraries/math/Uint128x128Math.t.sol","120":"test/libraries/math/Uint256x256Math.t.sol","121":"test/mocks/ERC20.sol","122":"test/mocks/ERC20TransferTax.sol","123":"test/mocks/Faucet.sol","124":"test/mocks/FlashBorrower.sol","125":"test/mocks/MockHooks.sol","126":"test/mocks/WNATIVE.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/abi/build-info/cb498ada97b6a0b63c228350928b69b2.json b/abi/build-info/cb498ada97b6a0b63c228350928b69b2.json deleted file mode 100644 index cc48c037..00000000 --- a/abi/build-info/cb498ada97b6a0b63c228350928b69b2.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"cb498ada97b6a0b63c228350928b69b2","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/StdAssertions.sol","2":"lib/forge-std/src/StdChains.sol","3":"lib/forge-std/src/StdCheats.sol","4":"lib/forge-std/src/StdError.sol","5":"lib/forge-std/src/StdInvariant.sol","6":"lib/forge-std/src/StdJson.sol","7":"lib/forge-std/src/StdMath.sol","8":"lib/forge-std/src/StdStorage.sol","9":"lib/forge-std/src/StdStyle.sol","10":"lib/forge-std/src/StdUtils.sol","11":"lib/forge-std/src/Test.sol","12":"lib/forge-std/src/Vm.sol","13":"lib/forge-std/src/console.sol","14":"lib/forge-std/src/console2.sol","15":"lib/forge-std/src/interfaces/IERC165.sol","16":"lib/forge-std/src/interfaces/IERC20.sol","17":"lib/forge-std/src/interfaces/IERC721.sol","18":"lib/forge-std/src/interfaces/IMulticall3.sol","19":"lib/forge-std/src/mocks/MockERC20.sol","20":"lib/forge-std/src/mocks/MockERC721.sol","21":"lib/forge-std/src/safeconsole.sol","22":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","23":"lib/openzeppelin-contracts/contracts/access/AccessControl.sol","24":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","25":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","26":"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol","27":"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol","28":"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol","29":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","30":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol","31":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","32":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","33":"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","34":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","35":"lib/openzeppelin-contracts/contracts/utils/Address.sol","36":"lib/openzeppelin-contracts/contracts/utils/Context.sol","37":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","38":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","39":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol","40":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol","41":"src/LBBaseHooks.sol","42":"src/LBFactory.sol","43":"src/LBPair.sol","44":"src/LBQuoter.sol","45":"src/LBRouter.sol","46":"src/LBToken.sol","47":"src/interfaces/ILBFactory.sol","48":"src/interfaces/ILBFlashLoanCallback.sol","49":"src/interfaces/ILBHooks.sol","50":"src/interfaces/ILBLegacyFactory.sol","51":"src/interfaces/ILBLegacyPair.sol","52":"src/interfaces/ILBLegacyRouter.sol","53":"src/interfaces/ILBLegacyToken.sol","54":"src/interfaces/ILBPair.sol","55":"src/interfaces/ILBRouter.sol","56":"src/interfaces/ILBToken.sol","57":"src/interfaces/ISovrynLBFactoryV1.sol","58":"src/interfaces/ISovrynLBPairV1.sol","59":"src/interfaces/ISovrynLBRouter01.sol","60":"src/interfaces/ISovrynLBRouter02.sol","61":"src/interfaces/IWNATIVE.sol","62":"src/libraries/BinHelper.sol","63":"src/libraries/Clone.sol","64":"src/libraries/Constants.sol","65":"src/libraries/FeeHelper.sol","66":"src/libraries/Hooks.sol","67":"src/libraries/ImmutableClone.sol","68":"src/libraries/OracleHelper.sol","69":"src/libraries/PairParameterHelper.sol","70":"src/libraries/PriceHelper.sol","71":"src/libraries/ReentrancyGuardUpgradeable.sol","72":"src/libraries/SovrynLBLibrary.sol","73":"src/libraries/TokenHelper.sol","74":"src/libraries/math/BitMath.sol","75":"src/libraries/math/Encoded.sol","76":"src/libraries/math/LiquidityConfigurations.sol","77":"src/libraries/math/PackedUint128Math.sol","78":"src/libraries/math/SafeCast.sol","79":"src/libraries/math/SampleMath.sol","80":"src/libraries/math/TreeMath.sol","81":"src/libraries/math/Uint128x128Math.sol","82":"src/libraries/math/Uint256x256Math.sol","83":"test/LBFactory.t.sol","84":"test/LBPairFees.t.sol","85":"test/LBPairFlashloan.t.sol","86":"test/LBPairHooks.t.sol","87":"test/LBPairInitialState.t.sol","88":"test/LBPairLiquidity.t.sol","89":"test/LBPairOracle.t.sol","90":"test/LBPairSwap.t.sol","91":"test/LBRouter.Liquidity.t.sol","92":"test/LBRouter.Swap.t.sol","93":"test/helpers/TestHelper.sol","94":"test/helpers/Utils.sol","95":"test/integration/Addresses.sol","96":"test/integration/LBQuoter.t.sol","97":"test/integration/LBQuoterPriority.t.sol","98":"test/integration/LBRouter.t.sol","99":"test/libraries/BinHelper.t.sol","100":"test/mocks/ERC20.sol","101":"test/mocks/ERC20TransferTax.sol","102":"test/mocks/FlashBorrower.sol","103":"test/mocks/MockHooks.sol","104":"test/mocks/WNATIVE.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/abi/console.sol/console.json b/abi/console.sol/console.json deleted file mode 100644 index 02444cb0..00000000 --- a/abi/console.sol/console.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122047b7507a88459e59f2e81727b734ca287acedf4e7b4dd40db1ba1d8f1234b5e764736f6c63430008140033","sourceMap":"66:66622:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:66622:13;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122047b7507a88459e59f2e81727b734ca287acedf4e7b4dd40db1ba1d8f1234b5e764736f6c63430008140033","sourceMap":"66:66622:13:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console.sol":"console"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"}},"version":1},"id":13} \ No newline at end of file diff --git a/abi/console2.sol/console2.json b/abi/console2.sol/console2.json deleted file mode 100644 index 9efc9b40..00000000 --- a/abi/console2.sol/console2.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e221cfd012208dd3520448a454655309ef8862899b16ff1e152ab551eee0e8ad64736f6c63430008140033","sourceMap":"525:69152:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;525:69152:14;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e221cfd012208dd3520448a454655309ef8862899b16ff1e152ab551eee0e8ad64736f6c63430008140033","sourceMap":"525:69152:14:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The original console.sol uses `int` and `uint` for computing function selectors, but it should use `int256` and `uint256`. This modified version fixes that. This version is recommended over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. Reference: https://github.com/NomicFoundation/hardhat/issues/2178\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console2.sol\":\"console2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console2.sol":"console2"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/abi/deploy-core.s.sol/CoreDeployer.json b/abi/deploy-core.s.sol/CoreDeployer.json deleted file mode 100644 index 5ccae100..00000000 --- a/abi/deploy-core.s.sol/CoreDeployer.json +++ /dev/null @@ -1,6233 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "IS_SCRIPT", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "run", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x600b805462ff00ff19166201000117815560e060405260a09081526a189bd897dd195cdd1b995d60aa1b60c05260809081526200004190600c90600162000056565b503480156200004f57600080fd5b506200029e565b828054828255906000526020600020908101928215620000a1579160200282015b82811115620000a15782518290620000909082620001d2565b509160200191906001019062000077565b50620000af929150620000b3565b5090565b80821115620000af576000620000ca8282620000d4565b50600101620000b3565b508054620000e29062000143565b6000825580601f10620000f3575050565b601f01602090049060005260206000209081019062000113919062000116565b50565b5b80821115620000af576000815560010162000117565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200015857607f821691505b6020821081036200017957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cd57600081815260208120601f850160051c81016020861015620001a85750805b601f850160051c820191505b81811015620001c957828155600101620001b4565b5050505b505050565b81516001600160401b03811115620001ee57620001ee6200012d565b6200020681620001ff845462000143565b846200017f565b602080601f8311600181146200023e5760008415620002255750858301515b600019600386901b1c1916600185901b178555620001c9565b600085815260208120601f198616915b828110156200026f578886015182559484019460019091019084016200024e565b50858210156200028e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b620146e280620002af6000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b6200005562000095565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b6200009362000d9d565b565b6040516360f9bb1160e01b815260206004820152601e60248201527f7363726970742f636f6e6669672f6465706c6f796d656e74732e6a736f6e00006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190606401600060405180830381865afa15801562000116573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001409190810190620031c7565b60405163c1978d1f60e01b815260206004820152601460248201527f4445504c4f5945525f505249564154455f4b45590000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90632210006490829063c1978d1f90606401602060405180830381865afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f291906200321d565b6040518263ffffffff1660e01b81526004016200021191815260200190565b6020604051808303816000875af115801562000231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025791906200324d565b90506200029a6040518060400160405280601481526020017f4465706c6f79657220616464726573733a2025730000000000000000000000008152508262000ecd565b60005b600c5481101562000d98576000620002f8600c8381548110620002c457620002c462003274565b90600052602060002001604051602001620002e09190620032c0565b60408051601f19818403018152919052859062000f1a565b90506000818060200190518101906200031291906200334e565b9050620004056040518060400160405280601581526020017f0a4465706c6f79696e672056322e31206f6e2025730000000000000000000000815250600c858154811062000364576200036462003274565b9060005260206000200180546200037b906200328a565b80601f0160208091040260200160405190810160405280929190818152602001828054620003a9906200328a565b8015620003fa5780601f10620003ce57610100808354040283529160200191620003fa565b820191906000526020600020905b815481529060010190602001808311620003dc57829003601f168201915b505050505062000fa9565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166398680034620004f2600c868154811062000451576200045162003274565b90600052602060002001805462000468906200328a565b80601f016020809104026020016040519081016040528092919081815260200182805462000496906200328a565b8015620004e75780601f10620004bb57610100808354040283529160200191620004e7565b820191906000526020600020905b815481529060010190602001808311620004c957829003601f168201915b505050505062000ff2565b606001516040518263ffffffff1660e01b815260040162000514919062003437565b6020604051808303816000875af115801562000534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055a91906200321d565b5060405163e6962cdb60e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e6962cdb90602401600060405180830381600087803b158015620005b157600080fd5b505af1158015620005c6573d6000803e3d6000fd5b505050506000848565048c27395000604051620005e39062003082565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200061e573d6000803e3d6000fd5b509050620006626040518060400160405280601681526020017f4c42466163746f7279206465706c6f796564202d2d3e000000000000000000008152508262000ecd565b60405163e6962cdb60e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e6962cdb90602401600060405180830381600087803b158015620006b857600080fd5b505af1158015620006cd573d6000803e3d6000fd5b50505050600081604051620006e29062003090565b6001600160a01b039091168152602001604051809103906000f0801580156200070f573d6000803e3d6000fd5b509050620007376040518060600160405280602281526020016201468b602291398262000ecd565b60405163e6962cdb60e01b81526001600160a01b0387166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e6962cdb90602401600060405180830381600087803b1580156200078d57600080fd5b505af1158015620007a2573d6000803e3d6000fd5b5050505060008284600001518560a00151604051620007c1906200309e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620007fe573d6000803e3d6000fd5b509050620008426040518060400160405280601581526020017f4c42526f75746572206465706c6f796564202d2d3e00000000000000000000008152508262000ecd565b604051637fec2a8d60e01b81526001600160a01b0388166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90637fec2a8d90602401600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b50505050600084600001518483604051620008c890620030ac565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000905573d6000803e3d6000fd5b509050620009496040518060400160405280601581526020017f4c4251756f746572206465706c6f796564202d2d3e00000000000000000000008152508262000ecd565b60405163b038478160e01b81526001600160a01b03848116600483015285169063b038478190602401600060405180830381600087803b1580156200098d57600080fd5b505af1158015620009a2573d6000803e3d6000fd5b50505050620009ca6040518060600160405280602781526020016201458e602791396200130f565b600085602001516001600160a01b03166380c5061e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a0f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a3591906200321d565b905060005b8181101562000b6e57602087015160405163f89a4cd560e01b8152600481018390526000916001600160a01b03169063f89a4cd590602401602060405180830381865afa15801562000a90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ab691906200324d565b604051635a44092360e01b81526001600160a01b03808316600483015291925090881690635a44092390602401600060405180830381600087803b15801562000afe57600080fd5b505af115801562000b13573d6000803e3d6000fd5b5050505062000b586040518060400160405280601b81526020017f51756f74652061737365742077686974656c6973746564202d2d3e00000000008152508262000ecd565b508062000b658162003462565b91505062000a3a565b50600062000b7b62001359565b905060005b815181101562000c9e57600062000bb383838151811062000ba55762000ba562003274565b60200260200101516200147c565b805160208201516040808401516060850151608086015160a087015160c088015160e08901516101208a0151965163379ee80360e01b815261ffff998a166004820152978916602489015294881660448801529287166064870152908616608486015262ffffff90811660a4860152941660c48401529290921660e48201529015156101048201529091506001600160a01b0389169063379ee8039061012401600060405180830381600087803b15801562000c6e57600080fd5b505af115801562000c83573d6000803e3d6000fd5b5050505050808062000c959062003462565b91505062000b80565b50604087810151905163f2fde38b60e01b81526001600160a01b0391821660048201529087169063f2fde38b90602401600060405180830381600087803b15801562000ce957600080fd5b505af115801562000cfe573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b505050505050505050505050808062000d8f9062003462565b9150506200029d565b505050565b60408051808201825260138082527f617262697472756d5f6f6e655f676f65726c6900000000000000000000000000602080840191909152835160a081018552606081019283527f417262697472756d204f6e6520476f65726c6900000000000000000000000000608082015291825262066eed82820152835163f877cb1960e01b81526004810191909152601860248201527f415242495452554d5f544553544e45545f5250435f55524c000000000000000060448201526200009393820190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb1990606401600060405180830381865afa15801562000e9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000ec59190810190620031c7565b905262001744565b62000f16828260405160240162000ee69291906200347e565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b17905262001afd565b5050565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef19062000f589086908690600401620034ab565b600060405180830381865afa15801562000f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000fa09190810190620031c7565b90505b92915050565b62000f16828260405160240162000fc2929190620034ab565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b17905262001afd565b6200101e6040518060800160405280606081526020016000815260200160608152602001606081525090565b8151600003620010a75760405162461bcd60e51b815260206004820152604360248201527f537464436861696e7320676574436861696e28737472696e67293a204368616960448201527f6e20616c6961732063616e6e6f742062652074686520656d707479207374726960648201526237339760e91b608482015260a4015b60405180910390fd5b620010b162001b1e565b600882604051620010c39190620034dd565b9081526020016040518091039020604051806080016040529081600082018054620010ee906200328a565b80601f01602080910402602001604051908101604052809291908181526020018280546200111c906200328a565b80156200116d5780601f1062001141576101008083540402835291602001916200116d565b820191906000526020600020905b8154815290600101906020018083116200114f57829003601f168201915b505050505081526020016001820154815260200160028201805462001192906200328a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011c0906200328a565b8015620012115780601f10620011e55761010080835404028352916020019162001211565b820191906000526020600020905b815481529060010190602001808311620011f357829003601f168201915b505050505081526020016003820180546200122c906200328a565b80601f01602080910402602001604051908101604052809291908181526020018280546200125a906200328a565b8015620012ab5780601f106200127f57610100808354040283529160200191620012ab565b820191906000526020600020905b8154815290600101906020018083116200128d57829003601f168201915b505050505081525050905080602001516000141582604051602001620012d29190620034fb565b60405160208183030381529060405290620013025760405162461bcd60e51b81526004016200109e919062003437565b5062000fa3828262002ad3565b620013568160405160240162001326919062003437565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001afd565b50565b60408051600780825261010082019092526060916020820160e08036833701905050905060018160008151811062001395576200139562003274565b602002602001018181525050600281600181518110620013b957620013b962003274565b602002602001018181525050600581600281518110620013dd57620013dd62003274565b602002602001018181525050600a8160038151811062001401576200140162003274565b602002602001018181525050600f8160048151811062001425576200142562003274565b60200260200101818152505060148160058151811062001449576200144962003274565b6020026020010181815250506019816006815181106200146d576200146d62003274565b60200260200101818152505090565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915281600103620015295760018152614e206020820152600a60408201526078606082018190526113886080830152621e848060a0830152600060c08301819052620186a060e0840152610100830191909152610120820152919050565b81600203620015855760028152613a986020820152600a604082015260786060820181905261138860808301526207a12060a0830152600060c083018190526203d09060e0840152610100830191909152610120820152919050565b81600503620015df5760058152611f406020820152601e6040820152610258606082015261138860808201526201d4c060a0820152600060c08201819052620493e060e08301526078610100830152610120820152919050565b81600a036200163857600a81526127106020820152601e604082015261025860608201526113886080820152619c4060a0820152600060c082018190526205573060e08301526078610100830152610120820152919050565b81600f036200169157600f81526127106020820152601e60408201526102586060820152611388608082015261753060a0820152600060c082018190526205573060e08301526078610100830152610120820152919050565b81601403620016ea57601481526127106020820152601e604082015261025860608201526113886080820152614e2060a0820152600060c082018190526205573060e08301526078610100830152610120820152919050565b816019036200173f57601981526127106020820152601e604082015261025860608201526113886080820152613a9860a0820152600060c082018190526205573060e083015260786101008301526101208201525b919050565b8151600003620017e35760405162461bcd60e51b815260206004820152604d60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e20616c6961732063616e6e6f74206265207468652060648201527f656d70747920737472696e672e00000000000000000000000000000000000000608482015260a4016200109e565b80602001516000036200185f5760405162461bcd60e51b815260206004820152603b60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e2049442063616e6e6f7420626520302e000000000060648201526084016200109e565b6200186962001b1e565b6020808201516000908152600a9091526040812080546200188a906200328a565b80601f0160208091040260200160405190810160405280929190818152602001828054620018b8906200328a565b8015620019095780601f10620018dd5761010080835404028352916020019162001909565b820191906000526020600020905b815481529060010190602001808311620018eb57829003601f168201915b505050505090508051600014806200192e575082805190602001208180519060200120145b602083015160405163348051d760e11b81526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001985573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019af9190810190620031c7565b82604051602001620019c39291906200358f565b60405160208183030381529060405290620019f35760405162461bcd60e51b81526004016200109e919062003437565b50600060088460405162001a089190620034dd565b9081526020016040518091039020600101549050600a6000828152602001908152602001600020600062001a3d9190620030ba565b60405180608001604052808460000151815260200184602001518152602001858152602001846040015181525060088560405162001a7c9190620034dd565b9081526040519081900360200190208151819062001a9b90826200369b565b50602082015160018201556040820151600282019062001abc90826200369b565b506060820151600382019062001ad390826200369b565b5050506020808401516000908152600a9091526040902062001af685826200369b565b5050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60075460ff161562001b2c57565b6007805460ff1916600117905560408051808201825260058082527f616e76696c000000000000000000000000000000000000000000000000000000602080840191909152835160a081018552606081019283527f416e76696c0000000000000000000000000000000000000000000000000000006080820152918252617a698282015283518085018552601581527f687474703a2f2f3132372e302e302e313a383534350000000000000000000000918101919091529281019290925262001bf59162002e7e565b62001c9e6040518060400160405280600781526020017f6d61696e6e65740000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f4d61696e6e6574000000000000000000000000000000000000000000000000008152508152602001600181526020016040518060600160405280603d815260200162014483603d9139905262002e7e565b62001d476040518060400160405280600681526020017f676f65726c69000000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600681526020017f476f65726c6900000000000000000000000000000000000000000000000000008152508152602001600581526020016040518060600160405280603c81526020016201464f603c9139905262002e7e565b62001df26040518060400160405280600781526020017f7365706f6c69610000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f5365706f6c696100000000000000000000000000000000000000000000000000815250815260200162aa36a781526020016040518060600160405280603d8152602001620144c0603d9139905262002e7e565b62001eb86040518060400160405280600881526020017f6f7074696d69736d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4f7074696d69736d0000000000000000000000000000000000000000000000008152508152602001600a81526020016040518060400160405280601b81526020017f68747470733a2f2f6d61696e6e65742e6f7074696d69736d2e696f000000000081525081525062002e7e565b62001f7f6040518060400160405280600f81526020017f6f7074696d69736d5f676f65726c69000000000000000000000000000000000081525060405180606001604052806040518060400160405280600f81526020017f4f7074696d69736d20476f65726c69000000000000000000000000000000000081525081526020016101a481526020016040518060400160405280601a81526020017f68747470733a2f2f676f65726c692e6f7074696d69736d2e696f00000000000081525081525062002e7e565b620020466040518060400160405280600c81526020017f617262697472756d5f6f6e65000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600c81526020017f417262697472756d204f6e650000000000000000000000000000000000000000815250815260200161a4b181526020016040518060400160405280601c81526020017f68747470733a2f2f617262312e617262697472756d2e696f2f7270630000000081525081525062002e7e565b620020f16040518060400160405280601381526020017f617262697472756d5f6f6e655f676f65726c690000000000000000000000000081525060405180606001604052806040518060400160405280601381526020017f417262697472756d204f6e6520476f65726c6900000000000000000000000000815250815260200162066eed8152602001604051806060016040528060258152602001620145df60259139905262002e7e565b620021b86040518060400160405280600d81526020017f617262697472756d5f6e6f76610000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600d81526020017f417262697472756d204e6f766100000000000000000000000000000000000000815250815260200161a4ba81526020016040518060400160405280601c81526020017f68747470733a2f2f6e6f76612e617262697472756d2e696f2f7270630000000081525081525062002e7e565b6200227e6040518060400160405280600781526020017f706f6c79676f6e0000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f506f6c79676f6e000000000000000000000000000000000000000000000000008152508152602001608981526020016040518060400160405280601781526020017f68747470733a2f2f706f6c79676f6e2d7270632e636f6d00000000000000000081525081525062002e7e565b620023296040518060400160405280600e81526020017f706f6c79676f6e5f6d756d62616900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f506f6c79676f6e204d756d62616900000000000000000000000000000000000081525081526020016201388181526020016040518060600160405280602181526020016201456d60219139905262002e7e565b620023d36040518060400160405280600981526020017f6176616c616e636865000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600981526020017f4176616c616e6368650000000000000000000000000000000000000000000000815250815260200161a86a8152602001604051806060016040528060258152602001620144fd60259139905262002e7e565b6200247d6040518060400160405280600e81526020017f6176616c616e6368655f66756a6900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f4176616c616e6368652046756a69000000000000000000000000000000000000815250815260200161a86981526020016040518060600160405280602a815260200162014604602a9139905262002e7e565b620025266040518060400160405280600f81526020017f626e625f736d6172745f636861696e000000000000000000000000000000000081525060405180606001604052806040518060400160405280600f81526020017f424e4220536d61727420436861696e00000000000000000000000000000000008152508152602001603881526020016040518060600160405280602181526020016201462e60219139905262002e7e565b620025cf6040518060400160405280601781526020017f626e625f736d6172745f636861696e5f746573746e657400000000000000000081525060405180606001604052806040518060400160405280601781526020017f424e4220536d61727420436861696e20546573746e65740000000000000000008152508152602001606181526020016040518060600160405280602781526020016201454660279139905262002e7e565b620026956040518060400160405280600c81526020017f676e6f7369735f636861696e000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600c81526020017f476e6f73697320436861696e00000000000000000000000000000000000000008152508152602001606481526020016040518060400160405280601b81526020017f68747470733a2f2f7270632e676e6f736973636861696e2e636f6d000000000081525081525062002e7e565b6200275c6040518060400160405280600881526020017f6d6f6f6e6265616d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e6265616d000000000000000000000000000000000000000000000000815250815260200161050481526020016040518060400160405280602081526020017f68747470733a2f2f7270632e6170692e6d6f6f6e6265616d2e6e6574776f726b81525081525062002e7e565b620028066040518060400160405280600981526020017f6d6f6f6e7269766572000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600981526020017f4d6f6f6e72697665720000000000000000000000000000000000000000000000815250815260200161050581526020016040518060600160405280602a8152602001620145b5602a9139905262002e7e565b620028b06040518060400160405280600881526020017f6d6f6f6e6261736500000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e62617365000000000000000000000000000000000000000000000000815250815260200161050781526020016040518060600160405280602481526020016201452260249139905262002e7e565b620029786040518060400160405280600b81526020017f626173655f676f65726c6900000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f4261736520476f65726c69000000000000000000000000000000000000000000815250815260200162014a3381526020016040518060400160405280601781526020017f68747470733a2f2f676f65726c692e626173652e6f726700000000000000000081525081525062002e7e565b62002a0d604051806040016040528060048152602001636261736560e01b8152506040518060600160405280604051806040016040528060048152602001634261736560e01b815250815260200161210581526020016040518060400160405280601881526020017f68747470733a2f2f6d61696e6e65742e626173652e6f7267000000000000000081525081525062002e7e565b620000936040518060400160405280600b81526020017f626f625f746573746e657400000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f426f6220546573746e65740000000000000000000000000000000000000000008152508152602001606f81526020016040518060400160405280601e81526020017f68747470733a2f2f746573746e65742e7270632e676f626f622e78797a2f000081525081525062002e7e565b62002aff6040518060800160405280606081526020016000815260200160608152602001606081525090565b81606001515160000362002e785760405163975a6ce960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063975a6ce99062002b4690869060040162003437565b600060405180830381865afa92505050801562002b8757506040513d6000823e601f3d908101601f1916820160405262002b849190810190620031c7565b60015b62002e72573d80801562002bb8576040519150601f19603f3d011682016040523d82523d6000602084013e62002bbd565b606091505b50600062002bcb8562002ede565b60405160200162002bdd919062003768565b60408051601f19818403018152919052600b5490915060ff161562002cdb577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d145736c8260098860405162002c419190620034dd565b9081526040519081900360200181207fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16825262002c889291600401620037ab565b600060405180830381865afa15801562002ca6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002cd09190810190620031c7565b606085015262002d62565b60405163f877cb1960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb199062002d1490849060040162003437565b600060405180830381865afa15801562002d32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d5c9190810190620031c7565b60608501525b60008560405160200162002d77919062003850565b60408051601f198184030181529082905262002d969160240162003437565b60408051601f19818403018152918152602080830180516001600160e01b0316630bc4450360e01b179052905191925060009162002dd79189910162003897565b60408051601f198184030181529082905262002df69160240162003437565b60408051601f19818403018152919052602080820180516001600160e01b031663eeaa9e6f60e01b17905285518682012084519185019190912091925090811480159062002e4a5750815160208301208114155b8062002e595750606087015151155b1562002e6757845185602001fd5b505050505062002e78565b60608301525b50919050565b6000816040015190508060098460405162002e9a9190620034dd565b9081526020016040518091039020908162002eb691906200369b565b5060408051602081018252600081529083015262002ed5838362001744565b60409091015250565b606060008290506000815167ffffffffffffffff81111562002f045762002f046200310e565b6040519080825280601f01601f19166020018201604052801562002f2f576020820181803683370190505b50905060005b82518110156200307a57600083828151811062002f565762002f5662003274565b01602001517fff00000000000000000000000000000000000000000000000000000000000000169050606160f81b811080159062002fba5750603d60f91b7fff00000000000000000000000000000000000000000000000000000000000000821611155b156200301e5762002fd1602060f883901c620038de565b60f81b83838151811062002fe95762002fe962003274565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535062003064565b8083838151811062003034576200303462003274565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b5080620030718162003462565b91505062002f35565b509392505050565b61319980620038fb83390190565b61615c8062006a9483390190565b614c80806200cbf083390190565b612c13806201187083390190565b508054620030c8906200328a565b6000825580601f10620030d9575050565b601f0160209004906000526020600020908101906200135691905b808211156200310a5760008155600101620030f4565b5090565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200314157818101518382015260200162003127565b50506000910152565b600067ffffffffffffffff808411156200316857620031686200310e565b604051601f8501601f19908116603f011681019082821181831017156200319357620031936200310e565b81604052809350858152868686011115620031ad57600080fd5b620031bd86602083018762003124565b5050509392505050565b600060208284031215620031da57600080fd5b815167ffffffffffffffff811115620031f257600080fd5b8201601f810184136200320457600080fd5b62003215848251602084016200314a565b949350505050565b6000602082840312156200323057600080fd5b5051919050565b6001600160a01b03811681146200135657600080fd5b6000602082840312156200326057600080fd5b81516200326d8162003237565b9392505050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200329f57607f821691505b60208210810362002e7857634e487b7160e01b600052602260045260246000fd5b601760f91b81526000600160008454620032da816200328a565b8184168015620032f357600181146200330d5762003342565b60ff19831687860152811515820287018501935062003342565b8760005260208060002060005b84811015620033375781548a82018901529087019082016200331a565b505050848288010193505b50919695505050505050565b600060c082840312156200336157600080fd5b60405160c0810181811067ffffffffffffffff821117156200338757620033876200310e565b6040528251620033978162003237565b81526020830151620033a98162003237565b60208201526040830151620033be8162003237565b60408201526060830151620033d38162003237565b60608201526080830151620033e88162003237565b608082015260a0830151620033fd8162003237565b60a08201529392505050565b600081518084526200342381602086016020860162003124565b601f01601f19169290920160200192915050565b60208152600062000fa0602083018462003409565b634e487b7160e01b600052601160045260246000fd5b6000600182016200347757620034776200344c565b5060010190565b60408152600062003493604083018562003409565b90506001600160a01b03831660208301529392505050565b604081526000620034c0604083018562003409565b8281036020840152620034d4818562003409565b95945050505050565b60008251620034f181846020870162003124565b9190910192915050565b7f537464436861696e7320676574436861696e28737472696e67293a204368616981527f6e207769746820616c69617320220000000000000000000000000000000000006020820152600082516200355b81602e85016020870162003124565b7f22206e6f7420666f756e642e0000000000000000000000000000000000000000602e939091019283015250603a01919050565b7f537464436861696e7320736574436861696e28737472696e672c436861696e4481527f617461293a20436861696e204944200000000000000000000000000000000000602082015260008351620035ef81602f85016020880162003124565b7f20616c7265616479207573656420627920220000000000000000000000000000602f9184019182015283516200362e81604184016020880162003124565b61111760f11b60419290910191820152604301949350505050565b601f82111562000d9857600081815260208120601f850160051c81016020861015620036725750805b601f850160051c820191505b8181101562003693578281556001016200367e565b505050505050565b815167ffffffffffffffff811115620036b857620036b86200310e565b620036d081620036c984546200328a565b8462003649565b602080601f831160018114620037085760008415620036ef5750858301515b600019600386901b1c1916600185901b17855562003693565b600085815260208120601f198616915b82811015620037395788860151825594840194600190910190840162003718565b5085821015620037585787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516200377c81846020870162003124565b7f5f5250435f55524c000000000000000000000000000000000000000000000000920191825250600801919050565b604081526000620037c0604083018562003409565b60208382038185015260008554620037d8816200328a565b80855260018281168015620037f65760018114620038115762003841565b60ff1984168787015282151560051b87018601945062003841565b896000528560002060005b84811015620038395781548982018901529083019087016200381c565b880187019550505b50929998505050505050505050565b7f696e76616c6964207270632075726c20000000000000000000000000000000008152600082516200388a81601085016020870162003124565b9190910160100192915050565b7f696e76616c6964207270632075726c3a20000000000000000000000000000000815260008251620038d181601185016020870162003124565b9190910160110192915050565b60ff828116828216039081111562000fa35762000fa36200344c56fe60806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c292f3d1ef3c045742ed41e8ecc8b9123bf922ffa5bc0f1cf31a7107e3d0c71264736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea264697066735822122049e882490fb40b1e480420f9b6652583b94a56010df7ef0806470be8b0ce0c1764736f6c6343000814003368747470733a2f2f6d61696e6e65742e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f7365706f6c69612e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f6170692e617661782e6e6574776f726b2f6578742f62632f432f72706368747470733a2f2f7270632e746573746e65742e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f7270632e616e6b722e636f6d2f6273635f746573746e65745f63686170656c68747470733a2f2f7270632d6d756d6261692e6d61746963766967696c2e636f6d4c425061697220696d706c656d656e746174696f6e20736574206f6e20666163746f727956320a68747470733a2f2f7270632e6170692e6d6f6f6e72697665722e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f676f65726c692d726f6c6c75702e617262697472756d2e696f2f72706368747470733a2f2f6170692e617661782d746573742e6e6574776f726b2f6578742f62632f432f72706368747470733a2f2f6273632d6461746173656564312e62696e616e63652e6f726768747470733a2f2f676f65726c692e696e667572612e696f2f76332f62393739346164316464663834646662386333346436626235646361323030314c425061697220696d706c656d656e746174696f6e206465706c6f796564202d2d3ea2646970667358221220c1e26da300684a7a99038eda67dbdda6c3558390263a4b3d5cce84de999539cb64736f6c63430008140033", - "sourceMap": "3126:44:3:-:0;;;-1:-1:-1;;800:28:1;;;;;719:33:44;410:3647;719:33;;;;;-1:-1:-1;;;719:33:44;;410:3647;719:33;;;;;;;-1:-1:-1;719:33:44;:::i;:::-;;410:3647;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;410:3647:44;;;-1:-1:-1;410:3647:44;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:127:130;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:130;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:130;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:130;;;2580:26;2531:89;-1:-1:-1;;1335:1:130;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:130;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:130;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:130;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:130:o;:::-;410:3647:44;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c04062261462000057578063f8ccbf471462000061575b600080fd5b6200005562000089565b005b6200005562000095565b600b54620000759062010000900460ff1681565b604051901515815260200160405180910390f35b6200009362000d9d565b565b6040516360f9bb1160e01b815260206004820152601e60248201527f7363726970742f636f6e6669672f6465706c6f796d656e74732e6a736f6e00006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190606401600060405180830381865afa15801562000116573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001409190810190620031c7565b60405163c1978d1f60e01b815260206004820152601460248201527f4445504c4f5945525f505249564154455f4b45590000000000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90632210006490829063c1978d1f90606401602060405180830381865afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f291906200321d565b6040518263ffffffff1660e01b81526004016200021191815260200190565b6020604051808303816000875af115801562000231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025791906200324d565b90506200029a6040518060400160405280601481526020017f4465706c6f79657220616464726573733a2025730000000000000000000000008152508262000ecd565b60005b600c5481101562000d98576000620002f8600c8381548110620002c457620002c462003274565b90600052602060002001604051602001620002e09190620032c0565b60408051601f19818403018152919052859062000f1a565b90506000818060200190518101906200031291906200334e565b9050620004056040518060400160405280601581526020017f0a4465706c6f79696e672056322e31206f6e2025730000000000000000000000815250600c858154811062000364576200036462003274565b9060005260206000200180546200037b906200328a565b80601f0160208091040260200160405190810160405280929190818152602001828054620003a9906200328a565b8015620003fa5780601f10620003ce57610100808354040283529160200191620003fa565b820191906000526020600020905b815481529060010190602001808311620003dc57829003601f168201915b505050505062000fa9565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166398680034620004f2600c868154811062000451576200045162003274565b90600052602060002001805462000468906200328a565b80601f016020809104026020016040519081016040528092919081815260200182805462000496906200328a565b8015620004e75780601f10620004bb57610100808354040283529160200191620004e7565b820191906000526020600020905b815481529060010190602001808311620004c957829003601f168201915b505050505062000ff2565b606001516040518263ffffffff1660e01b815260040162000514919062003437565b6020604051808303816000875af115801562000534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055a91906200321d565b5060405163e6962cdb60e01b81526001600160a01b0385166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e6962cdb90602401600060405180830381600087803b158015620005b157600080fd5b505af1158015620005c6573d6000803e3d6000fd5b505050506000848565048c27395000604051620005e39062003082565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156200061e573d6000803e3d6000fd5b509050620006626040518060400160405280601681526020017f4c42466163746f7279206465706c6f796564202d2d3e000000000000000000008152508262000ecd565b60405163e6962cdb60e01b81526001600160a01b0386166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e6962cdb90602401600060405180830381600087803b158015620006b857600080fd5b505af1158015620006cd573d6000803e3d6000fd5b50505050600081604051620006e29062003090565b6001600160a01b039091168152602001604051809103906000f0801580156200070f573d6000803e3d6000fd5b509050620007376040518060600160405280602281526020016201468b602291398262000ecd565b60405163e6962cdb60e01b81526001600160a01b0387166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e6962cdb90602401600060405180830381600087803b1580156200078d57600080fd5b505af1158015620007a2573d6000803e3d6000fd5b5050505060008284600001518560a00151604051620007c1906200309e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620007fe573d6000803e3d6000fd5b509050620008426040518060400160405280601581526020017f4c42526f75746572206465706c6f796564202d2d3e00000000000000000000008152508262000ecd565b604051637fec2a8d60e01b81526001600160a01b0388166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90637fec2a8d90602401600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b50505050600084600001518483604051620008c890620030ac565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000905573d6000803e3d6000fd5b509050620009496040518060400160405280601581526020017f4c4251756f746572206465706c6f796564202d2d3e00000000000000000000008152508262000ecd565b60405163b038478160e01b81526001600160a01b03848116600483015285169063b038478190602401600060405180830381600087803b1580156200098d57600080fd5b505af1158015620009a2573d6000803e3d6000fd5b50505050620009ca6040518060600160405280602781526020016201458e602791396200130f565b600085602001516001600160a01b03166380c5061e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a0f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a3591906200321d565b905060005b8181101562000b6e57602087015160405163f89a4cd560e01b8152600481018390526000916001600160a01b03169063f89a4cd590602401602060405180830381865afa15801562000a90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ab691906200324d565b604051635a44092360e01b81526001600160a01b03808316600483015291925090881690635a44092390602401600060405180830381600087803b15801562000afe57600080fd5b505af115801562000b13573d6000803e3d6000fd5b5050505062000b586040518060400160405280601b81526020017f51756f74652061737365742077686974656c6973746564202d2d3e00000000008152508262000ecd565b508062000b658162003462565b91505062000a3a565b50600062000b7b62001359565b905060005b815181101562000c9e57600062000bb383838151811062000ba55762000ba562003274565b60200260200101516200147c565b805160208201516040808401516060850151608086015160a087015160c088015160e08901516101208a0151965163379ee80360e01b815261ffff998a166004820152978916602489015294881660448801529287166064870152908616608486015262ffffff90811660a4860152941660c48401529290921660e48201529015156101048201529091506001600160a01b0389169063379ee8039061012401600060405180830381600087803b15801562000c6e57600080fd5b505af115801562000c83573d6000803e3d6000fd5b5050505050808062000c959062003462565b91505062000b80565b50604087810151905163f2fde38b60e01b81526001600160a01b0391821660048201529087169063f2fde38b90602401600060405180830381600087803b15801562000ce957600080fd5b505af115801562000cfe573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000d6157600080fd5b505af115801562000d76573d6000803e3d6000fd5b505050505050505050505050808062000d8f9062003462565b9150506200029d565b505050565b60408051808201825260138082527f617262697472756d5f6f6e655f676f65726c6900000000000000000000000000602080840191909152835160a081018552606081019283527f417262697472756d204f6e6520476f65726c6900000000000000000000000000608082015291825262066eed82820152835163f877cb1960e01b81526004810191909152601860248201527f415242495452554d5f544553544e45545f5250435f55524c000000000000000060448201526200009393820190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb1990606401600060405180830381865afa15801562000e9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000ec59190810190620031c7565b905262001744565b62000f16828260405160240162000ee69291906200347e565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b17905262001afd565b5050565b6040516385940ef160e01b8152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d906385940ef19062000f589086908690600401620034ab565b600060405180830381865afa15801562000f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000fa09190810190620031c7565b90505b92915050565b62000f16828260405160240162000fc2929190620034ab565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b17905262001afd565b6200101e6040518060800160405280606081526020016000815260200160608152602001606081525090565b8151600003620010a75760405162461bcd60e51b815260206004820152604360248201527f537464436861696e7320676574436861696e28737472696e67293a204368616960448201527f6e20616c6961732063616e6e6f742062652074686520656d707479207374726960648201526237339760e91b608482015260a4015b60405180910390fd5b620010b162001b1e565b600882604051620010c39190620034dd565b9081526020016040518091039020604051806080016040529081600082018054620010ee906200328a565b80601f01602080910402602001604051908101604052809291908181526020018280546200111c906200328a565b80156200116d5780601f1062001141576101008083540402835291602001916200116d565b820191906000526020600020905b8154815290600101906020018083116200114f57829003601f168201915b505050505081526020016001820154815260200160028201805462001192906200328a565b80601f0160208091040260200160405190810160405280929190818152602001828054620011c0906200328a565b8015620012115780601f10620011e55761010080835404028352916020019162001211565b820191906000526020600020905b815481529060010190602001808311620011f357829003601f168201915b505050505081526020016003820180546200122c906200328a565b80601f01602080910402602001604051908101604052809291908181526020018280546200125a906200328a565b8015620012ab5780601f106200127f57610100808354040283529160200191620012ab565b820191906000526020600020905b8154815290600101906020018083116200128d57829003601f168201915b505050505081525050905080602001516000141582604051602001620012d29190620034fb565b60405160208183030381529060405290620013025760405162461bcd60e51b81526004016200109e919062003437565b5062000fa3828262002ad3565b620013568160405160240162001326919062003437565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b17905262001afd565b50565b60408051600780825261010082019092526060916020820160e08036833701905050905060018160008151811062001395576200139562003274565b602002602001018181525050600281600181518110620013b957620013b962003274565b602002602001018181525050600581600281518110620013dd57620013dd62003274565b602002602001018181525050600a8160038151811062001401576200140162003274565b602002602001018181525050600f8160048151811062001425576200142562003274565b60200260200101818152505060148160058151811062001449576200144962003274565b6020026020010181815250506019816006815181106200146d576200146d62003274565b60200260200101818152505090565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915281600103620015295760018152614e206020820152600a60408201526078606082018190526113886080830152621e848060a0830152600060c08301819052620186a060e0840152610100830191909152610120820152919050565b81600203620015855760028152613a986020820152600a604082015260786060820181905261138860808301526207a12060a0830152600060c083018190526203d09060e0840152610100830191909152610120820152919050565b81600503620015df5760058152611f406020820152601e6040820152610258606082015261138860808201526201d4c060a0820152600060c08201819052620493e060e08301526078610100830152610120820152919050565b81600a036200163857600a81526127106020820152601e604082015261025860608201526113886080820152619c4060a0820152600060c082018190526205573060e08301526078610100830152610120820152919050565b81600f036200169157600f81526127106020820152601e60408201526102586060820152611388608082015261753060a0820152600060c082018190526205573060e08301526078610100830152610120820152919050565b81601403620016ea57601481526127106020820152601e604082015261025860608201526113886080820152614e2060a0820152600060c082018190526205573060e08301526078610100830152610120820152919050565b816019036200173f57601981526127106020820152601e604082015261025860608201526113886080820152613a9860a0820152600060c082018190526205573060e083015260786101008301526101208201525b919050565b8151600003620017e35760405162461bcd60e51b815260206004820152604d60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e20616c6961732063616e6e6f74206265207468652060648201527f656d70747920737472696e672e00000000000000000000000000000000000000608482015260a4016200109e565b80602001516000036200185f5760405162461bcd60e51b815260206004820152603b60248201527f537464436861696e7320736574436861696e28737472696e672c436861696e4460448201527f617461293a20436861696e2049442063616e6e6f7420626520302e000000000060648201526084016200109e565b6200186962001b1e565b6020808201516000908152600a9091526040812080546200188a906200328a565b80601f0160208091040260200160405190810160405280929190818152602001828054620018b8906200328a565b8015620019095780601f10620018dd5761010080835404028352916020019162001909565b820191906000526020600020905b815481529060010190602001808311620018eb57829003601f168201915b505050505090508051600014806200192e575082805190602001208180519060200120145b602083015160405163348051d760e11b81526004810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae90602401600060405180830381865afa15801562001985573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019af9190810190620031c7565b82604051602001620019c39291906200358f565b60405160208183030381529060405290620019f35760405162461bcd60e51b81526004016200109e919062003437565b50600060088460405162001a089190620034dd565b9081526020016040518091039020600101549050600a6000828152602001908152602001600020600062001a3d9190620030ba565b60405180608001604052808460000151815260200184602001518152602001858152602001846040015181525060088560405162001a7c9190620034dd565b9081526040519081900360200190208151819062001a9b90826200369b565b50602082015160018201556040820151600282019062001abc90826200369b565b506060820151600382019062001ad390826200369b565b5050506020808401516000908152600a9091526040902062001af685826200369b565b5050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60075460ff161562001b2c57565b6007805460ff1916600117905560408051808201825260058082527f616e76696c000000000000000000000000000000000000000000000000000000602080840191909152835160a081018552606081019283527f416e76696c0000000000000000000000000000000000000000000000000000006080820152918252617a698282015283518085018552601581527f687474703a2f2f3132372e302e302e313a383534350000000000000000000000918101919091529281019290925262001bf59162002e7e565b62001c9e6040518060400160405280600781526020017f6d61696e6e65740000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f4d61696e6e6574000000000000000000000000000000000000000000000000008152508152602001600181526020016040518060600160405280603d815260200162014483603d9139905262002e7e565b62001d476040518060400160405280600681526020017f676f65726c69000000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600681526020017f476f65726c6900000000000000000000000000000000000000000000000000008152508152602001600581526020016040518060600160405280603c81526020016201464f603c9139905262002e7e565b62001df26040518060400160405280600781526020017f7365706f6c69610000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f5365706f6c696100000000000000000000000000000000000000000000000000815250815260200162aa36a781526020016040518060600160405280603d8152602001620144c0603d9139905262002e7e565b62001eb86040518060400160405280600881526020017f6f7074696d69736d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4f7074696d69736d0000000000000000000000000000000000000000000000008152508152602001600a81526020016040518060400160405280601b81526020017f68747470733a2f2f6d61696e6e65742e6f7074696d69736d2e696f000000000081525081525062002e7e565b62001f7f6040518060400160405280600f81526020017f6f7074696d69736d5f676f65726c69000000000000000000000000000000000081525060405180606001604052806040518060400160405280600f81526020017f4f7074696d69736d20476f65726c69000000000000000000000000000000000081525081526020016101a481526020016040518060400160405280601a81526020017f68747470733a2f2f676f65726c692e6f7074696d69736d2e696f00000000000081525081525062002e7e565b620020466040518060400160405280600c81526020017f617262697472756d5f6f6e65000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600c81526020017f417262697472756d204f6e650000000000000000000000000000000000000000815250815260200161a4b181526020016040518060400160405280601c81526020017f68747470733a2f2f617262312e617262697472756d2e696f2f7270630000000081525081525062002e7e565b620020f16040518060400160405280601381526020017f617262697472756d5f6f6e655f676f65726c690000000000000000000000000081525060405180606001604052806040518060400160405280601381526020017f417262697472756d204f6e6520476f65726c6900000000000000000000000000815250815260200162066eed8152602001604051806060016040528060258152602001620145df60259139905262002e7e565b620021b86040518060400160405280600d81526020017f617262697472756d5f6e6f76610000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600d81526020017f417262697472756d204e6f766100000000000000000000000000000000000000815250815260200161a4ba81526020016040518060400160405280601c81526020017f68747470733a2f2f6e6f76612e617262697472756d2e696f2f7270630000000081525081525062002e7e565b6200227e6040518060400160405280600781526020017f706f6c79676f6e0000000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600781526020017f506f6c79676f6e000000000000000000000000000000000000000000000000008152508152602001608981526020016040518060400160405280601781526020017f68747470733a2f2f706f6c79676f6e2d7270632e636f6d00000000000000000081525081525062002e7e565b620023296040518060400160405280600e81526020017f706f6c79676f6e5f6d756d62616900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f506f6c79676f6e204d756d62616900000000000000000000000000000000000081525081526020016201388181526020016040518060600160405280602181526020016201456d60219139905262002e7e565b620023d36040518060400160405280600981526020017f6176616c616e636865000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600981526020017f4176616c616e6368650000000000000000000000000000000000000000000000815250815260200161a86a8152602001604051806060016040528060258152602001620144fd60259139905262002e7e565b6200247d6040518060400160405280600e81526020017f6176616c616e6368655f66756a6900000000000000000000000000000000000081525060405180606001604052806040518060400160405280600e81526020017f4176616c616e6368652046756a69000000000000000000000000000000000000815250815260200161a86981526020016040518060600160405280602a815260200162014604602a9139905262002e7e565b620025266040518060400160405280600f81526020017f626e625f736d6172745f636861696e000000000000000000000000000000000081525060405180606001604052806040518060400160405280600f81526020017f424e4220536d61727420436861696e00000000000000000000000000000000008152508152602001603881526020016040518060600160405280602181526020016201462e60219139905262002e7e565b620025cf6040518060400160405280601781526020017f626e625f736d6172745f636861696e5f746573746e657400000000000000000081525060405180606001604052806040518060400160405280601781526020017f424e4220536d61727420436861696e20546573746e65740000000000000000008152508152602001606181526020016040518060600160405280602781526020016201454660279139905262002e7e565b620026956040518060400160405280600c81526020017f676e6f7369735f636861696e000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600c81526020017f476e6f73697320436861696e00000000000000000000000000000000000000008152508152602001606481526020016040518060400160405280601b81526020017f68747470733a2f2f7270632e676e6f736973636861696e2e636f6d000000000081525081525062002e7e565b6200275c6040518060400160405280600881526020017f6d6f6f6e6265616d00000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e6265616d000000000000000000000000000000000000000000000000815250815260200161050481526020016040518060400160405280602081526020017f68747470733a2f2f7270632e6170692e6d6f6f6e6265616d2e6e6574776f726b81525081525062002e7e565b620028066040518060400160405280600981526020017f6d6f6f6e7269766572000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600981526020017f4d6f6f6e72697665720000000000000000000000000000000000000000000000815250815260200161050581526020016040518060600160405280602a8152602001620145b5602a9139905262002e7e565b620028b06040518060400160405280600881526020017f6d6f6f6e6261736500000000000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600881526020017f4d6f6f6e62617365000000000000000000000000000000000000000000000000815250815260200161050781526020016040518060600160405280602481526020016201452260249139905262002e7e565b620029786040518060400160405280600b81526020017f626173655f676f65726c6900000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f4261736520476f65726c69000000000000000000000000000000000000000000815250815260200162014a3381526020016040518060400160405280601781526020017f68747470733a2f2f676f65726c692e626173652e6f726700000000000000000081525081525062002e7e565b62002a0d604051806040016040528060048152602001636261736560e01b8152506040518060600160405280604051806040016040528060048152602001634261736560e01b815250815260200161210581526020016040518060400160405280601881526020017f68747470733a2f2f6d61696e6e65742e626173652e6f7267000000000000000081525081525062002e7e565b620000936040518060400160405280600b81526020017f626f625f746573746e657400000000000000000000000000000000000000000081525060405180606001604052806040518060400160405280600b81526020017f426f6220546573746e65740000000000000000000000000000000000000000008152508152602001606f81526020016040518060400160405280601e81526020017f68747470733a2f2f746573746e65742e7270632e676f626f622e78797a2f000081525081525062002e7e565b62002aff6040518060800160405280606081526020016000815260200160608152602001606081525090565b81606001515160000362002e785760405163975a6ce960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063975a6ce99062002b4690869060040162003437565b600060405180830381865afa92505050801562002b8757506040513d6000823e601f3d908101601f1916820160405262002b849190810190620031c7565b60015b62002e72573d80801562002bb8576040519150601f19603f3d011682016040523d82523d6000602084013e62002bbd565b606091505b50600062002bcb8562002ede565b60405160200162002bdd919062003768565b60408051601f19818403018152919052600b5490915060ff161562002cdb577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d145736c8260098860405162002c419190620034dd565b9081526040519081900360200181207fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16825262002c889291600401620037ab565b600060405180830381865afa15801562002ca6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002cd09190810190620031c7565b606085015262002d62565b60405163f877cb1960e01b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb199062002d1490849060040162003437565b600060405180830381865afa15801562002d32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d5c9190810190620031c7565b60608501525b60008560405160200162002d77919062003850565b60408051601f198184030181529082905262002d969160240162003437565b60408051601f19818403018152918152602080830180516001600160e01b0316630bc4450360e01b179052905191925060009162002dd79189910162003897565b60408051601f198184030181529082905262002df69160240162003437565b60408051601f19818403018152919052602080820180516001600160e01b031663eeaa9e6f60e01b17905285518682012084519185019190912091925090811480159062002e4a5750815160208301208114155b8062002e595750606087015151155b1562002e6757845185602001fd5b505050505062002e78565b60608301525b50919050565b6000816040015190508060098460405162002e9a9190620034dd565b9081526020016040518091039020908162002eb691906200369b565b5060408051602081018252600081529083015262002ed5838362001744565b60409091015250565b606060008290506000815167ffffffffffffffff81111562002f045762002f046200310e565b6040519080825280601f01601f19166020018201604052801562002f2f576020820181803683370190505b50905060005b82518110156200307a57600083828151811062002f565762002f5662003274565b01602001517fff00000000000000000000000000000000000000000000000000000000000000169050606160f81b811080159062002fba5750603d60f91b7fff00000000000000000000000000000000000000000000000000000000000000821611155b156200301e5762002fd1602060f883901c620038de565b60f81b83838151811062002fe95762002fe962003274565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535062003064565b8083838151811062003034576200303462003274565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b5080620030718162003462565b91505062002f35565b509392505050565b61319980620038fb83390190565b61615c8062006a9483390190565b614c80806200cbf083390190565b612c13806201187083390190565b508054620030c8906200328a565b6000825580601f10620030d9575050565b601f0160209004906000526020600020908101906200135691905b808211156200310a5760008155600101620030f4565b5090565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200314157818101518382015260200162003127565b50506000910152565b600067ffffffffffffffff808411156200316857620031686200310e565b604051601f8501601f19908116603f011681019082821181831017156200319357620031936200310e565b81604052809350858152868686011115620031ad57600080fd5b620031bd86602083018762003124565b5050509392505050565b600060208284031215620031da57600080fd5b815167ffffffffffffffff811115620031f257600080fd5b8201601f810184136200320457600080fd5b62003215848251602084016200314a565b949350505050565b6000602082840312156200323057600080fd5b5051919050565b6001600160a01b03811681146200135657600080fd5b6000602082840312156200326057600080fd5b81516200326d8162003237565b9392505050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200329f57607f821691505b60208210810362002e7857634e487b7160e01b600052602260045260246000fd5b601760f91b81526000600160008454620032da816200328a565b8184168015620032f357600181146200330d5762003342565b60ff19831687860152811515820287018501935062003342565b8760005260208060002060005b84811015620033375781548a82018901529087019082016200331a565b505050848288010193505b50919695505050505050565b600060c082840312156200336157600080fd5b60405160c0810181811067ffffffffffffffff821117156200338757620033876200310e565b6040528251620033978162003237565b81526020830151620033a98162003237565b60208201526040830151620033be8162003237565b60408201526060830151620033d38162003237565b60608201526080830151620033e88162003237565b608082015260a0830151620033fd8162003237565b60a08201529392505050565b600081518084526200342381602086016020860162003124565b601f01601f19169290920160200192915050565b60208152600062000fa0602083018462003409565b634e487b7160e01b600052601160045260246000fd5b6000600182016200347757620034776200344c565b5060010190565b60408152600062003493604083018562003409565b90506001600160a01b03831660208301529392505050565b604081526000620034c0604083018562003409565b8281036020840152620034d4818562003409565b95945050505050565b60008251620034f181846020870162003124565b9190910192915050565b7f537464436861696e7320676574436861696e28737472696e67293a204368616981527f6e207769746820616c69617320220000000000000000000000000000000000006020820152600082516200355b81602e85016020870162003124565b7f22206e6f7420666f756e642e0000000000000000000000000000000000000000602e939091019283015250603a01919050565b7f537464436861696e7320736574436861696e28737472696e672c436861696e4481527f617461293a20436861696e204944200000000000000000000000000000000000602082015260008351620035ef81602f85016020880162003124565b7f20616c7265616479207573656420627920220000000000000000000000000000602f9184019182015283516200362e81604184016020880162003124565b61111760f11b60419290910191820152604301949350505050565b601f82111562000d9857600081815260208120601f850160051c81016020861015620036725750805b601f850160051c820191505b8181101562003693578281556001016200367e565b505050505050565b815167ffffffffffffffff811115620036b857620036b86200310e565b620036d081620036c984546200328a565b8462003649565b602080601f831160018114620037085760008415620036ef5750858301515b600019600386901b1c1916600185901b17855562003693565b600085815260208120601f198616915b82811015620037395788860151825594840194600190910190840162003718565b5085821015620037585787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516200377c81846020870162003124565b7f5f5250435f55524c000000000000000000000000000000000000000000000000920191825250600801919050565b604081526000620037c0604083018562003409565b60208382038185015260008554620037d8816200328a565b80855260018281168015620037f65760018114620038115762003841565b60ff1984168787015282151560051b87018601945062003841565b896000528560002060005b84811015620038395781548982018901529083019087016200381c565b880187019550505b50929998505050505050505050565b7f696e76616c6964207270632075726c20000000000000000000000000000000008152600082516200388a81601085016020870162003124565b9190910160100192915050565b7f696e76616c6964207270632075726c3a20000000000000000000000000000000815260008251620038d181601185016020870162003124565b9190910160110192915050565b60ff828116828216039081111562000fa35762000fa36200344c56fe60806040523480156200001157600080fd5b506040516200319938038062003199833981016040819052620000349162000253565b816001600160a01b0381166200006557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000708162000100565b5067016345785d8a0000811115620000ad57604051635e8988c160e01b81526004810182905267016345785d8a000060248201526044016200005c565b620000b8836200011e565b60048190556040805160008152602081018390527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a150505062000294565b600180546001600160a01b03191690556200011b81620001e6565b50565b6001600160a01b0381166200014657604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b0390811690821681036200018757600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016200005c565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910160405180910390a15050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200024e57600080fd5b919050565b6000806000606084860312156200026957600080fd5b620002748462000236565b9250620002846020850162000236565b9150604084015190509250925092565b612ef580620002a46000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063701ab8c111610186578063aabc4b3c116100e3578063e203a31f11610097578063e92d0d5d11610071578063e92d0d5d14610627578063f2fde38b1461063a578063fd90c2be1461064d57600080fd5b8063e203a31f146105f0578063e30c397814610603578063e74b981b1461061457600080fd5b8063b0384781116100c8578063b0384781146105b7578063d547741f146105ca578063ddbfd941146105dd57600080fd5b8063aabc4b3c14610556578063af371065146105a657600080fd5b806380c5061e1161013a5780638da5cb5b1161011f5780638da5cb5b1461052a57806391d148541461053b578063a217fddf1461054e57600080fd5b806380c5061e146105145780638ce9aa1c1461051c57600080fd5b8063715018a61161016b578063715018a6146104f157806379ba5097146104f95780637daf5d661461050157600080fd5b8063701ab8c1146104ca578063704037bd146104d157600080fd5b8063379ee8031161023f5780634e937c3a116101f3578063659ac74b116101cd578063659ac74b146104845780636622e0d71461049757806369d56ea3146104b757600080fd5b80634e937c3a146104615780635a440923146104695780635b35875c1461047c57600080fd5b80633c78a941116102245780633c78a9411461042a5780634ccb20c01461043d5780634cd161d31461044e57600080fd5b8063379ee803146104045780633a2f1a911461041757600080fd5b8063248a9ca3116102965780632cc06b8c1161027b5780632cc06b8c146103cb5780632f2ff15d146103de57806336568abe146103f157600080fd5b8063248a9ca31461039557806327721842146103b857600080fd5b80630752092b116102c75780630752092b14610320578063093ff7691461034b5780631af5bacc1461036057600080fd5b806301ffc9a7146102e35780630282c9c11461030b575b600080fd5b6102f66102f13660046127ff565b610655565b60405190151581526020015b60405180910390f35b61031361068c565b6040516103029190612829565b61033361032e36600461286d565b610766565b6040516001600160a01b039091168152602001610302565b61035e6103593660046128c0565b610773565b005b6103877fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001610302565b6103876103a336600461286d565b60009081526002602052604090206001015490565b6102f66103c636600461297e565b610879565b61035e6103d936600461299b565b610886565b61035e6103ec3660046129e2565b6108d5565b61035e6103ff3660046129e2565b6108fa565b61035e610412366004612a22565b610932565b61035e610425366004612aca565b610a4e565b61035e61043836600461297e565b610b00565b6003546001600160a01b0316610333565b61035e61045c366004612b7b565b610b5e565b600654610387565b61035e61047736600461297e565b610c29565b610313610c9b565b610333610492366004612bae565b610cac565b6104aa6104a5366004612c06565b6111f7565b6040516103029190612c34565b61035e6104c5366004612ca8565b61138f565b6001610387565b6104e46104df366004612cf5565b611519565b6040516103029190612d36565b61035e611550565b61035e611564565b61033361050f36600461286d565b6115a8565b6103876115d8565b67016345785d8a0000610387565b6000546001600160a01b0316610333565b6102f66105493660046129e2565b6115e4565b610387600081565b61056961056436600461286d565b611630565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001610302565b6005546001600160a01b0316610333565b61035e6105c536600461297e565b6116f1565b61035e6105d83660046129e2565b611832565b61035e6105eb36600461297e565b611857565b61035e6105fe366004612d72565b6118c9565b6001546001600160a01b0316610333565b61035e61062236600461297e565b611935565b61035e61063536600461286d565b611946565b61035e61064836600461297e565b6119e9565b600454610387565b60006001600160e01b03198216637965db0b60e01b148061068657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600061069a6008611a5a565b90508015610762578067ffffffffffffffff8111156106bb576106bb612d8d565b6040519080825280602002602001820160405280156106e4578160200160208202803683370190505b5091506000805b8281101561075357600080610701600884611a65565b909250905061070f81611a81565b15610740578186858151811061072757610727612da3565b60209081029190910101528361073c81612dcf565b9450505b50508061074c90612dcf565b90506106eb565b5081811015610760578083525b505b5090565b6000610686600b83611a8d565b61077b611a99565b600061078c8b8b8b61ffff16611ac6565b6020015190506001600160a01b0381166107db5760405163b65ee95360e01b81526001600160a01b03808d1660048301528b16602482015261ffff8a1660448201526064015b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505050505050505050505050565b6000610686600b83611b70565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96108b081611b92565b604080516000808252602082019092526108cf91869186918691611b9c565b50505050565b6000828152600260205260409020600101546108f081611b92565b6108cf8383611ce3565b6001600160a01b03811633146109235760405163334bd91960e11b815260040160405180910390fd5b61092d8282611d0d565b505050565b61093a611a99565b60018961ffff16101561096657604051634f958e7160e01b815261ffff8a1660048201526024016107d2565b6000610978818a8a8a8a8a8a8a611d82565b905081156109905761098d81600160ff611e82565b90505b6109a0600861ffff8c1683611ea9565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610a7881611b92565b6001600160a01b0384161580610a965750836001600160a01b031916155b15610ab45760405163d43a15d160e01b815260040160405180910390fd5b610af78787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b9c92505050565b50505050505050565b610b08611a99565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b5050505050565b610b66611a99565b610b75600861ffff8416611eb6565b610b9857604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610ba9600861ffff8516611ec2565b905081151560ff82901c151503610bd3576040516311be38db60e11b815260040160405180910390fd5b610bf061ffff8416610be7838560ff611e82565b60089190611ea9565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd90600090a3505050565b610c31611a99565b610c3c600b82611ece565b610c64576040516303ce0ad960e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e90600090a250565b6060610ca76008611ee3565b905090565b6000610cbd600861ffff8416611eb6565b610ce057604051637d9160bf60e11b815261ffff831660048201526024016107d2565b6000610cf1600861ffff8516611ec2565b90506000610d076000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316149050610d2682611a81565b158015610d31575080155b15610d5b576040516304fc2fe760e11b815233600482015261ffff851660248201526044016107d2565b610d66600b87611b70565b610d8e57604051638e888ef360e01b81526001600160a01b03871660048201526024016107d2565b856001600160a01b0316876001600160a01b031603610dcb57604051632f9b185360e01b81526001600160a01b03881660048201526024016107d2565b610dd58585611ef0565b50600080610de38989611f34565b90925090506001600160a01b038216610e0f57604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b0382811660009081526007602090815260408083208585168452825280832061ffff8b1684529091529020546201000090041615610e845760405163cb27a43560e01b81526001600160a01b03808b1660048301528916602482015261ffff871660448201526064016107d2565b6005546001600160a01b031680610eae576040516328b4fcf960e21b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b821660208401528b901b1660348201527fffff00000000000000000000000000000000000000000000000000000000000060f089901b166048820152610f5b908290604a0160408051601f198184030181528282526001600160a01b03808916602085015287169183019190915261ffff8b1660608301529060800160405160208183030381529060405280519060200120611f5d565b6040805160808101825261ffff808b168083526001600160a01b0380861660208086018281528c15158789019081526000606089018181528e8716808352600786528b83208f89168085529087528c84208a855287528c84209b518c549651955193511515600160b81b0260ff60b81b19941515600160b01b02949094167fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff96909a1662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009097169b169a909a179490941792909216959095171790965560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b031916909217909155938152600d8452848120928152919092529190912091975061109e9250612018565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506110ec9190612de8565b604080516001600160a01b03909316835260208301919091520160405180910390a4846001600160a01b03166347973bff61112686612024565b61112f87612030565b61113888612040565b61114189612050565b61114a8a612060565b6111538b612071565b61115c8c612081565b6040516001600160e01b031960e08a901b16815261ffff978816600482015295871660248701529386166044860152918516606485015262ffffff9081166084850152931660a4830152821660c4820152908a1660e482015261010401600060405180830381600087803b1580156111d357600080fd5b505af11580156111e7573d6000803e3d6000fd5b5050505050505050949350505050565b60606000806112068585611f34565b6001600160a01b038083166000908152600d60209081526040808320938516835292905290812092945090925061123c82612092565b90508015611385578067ffffffffffffffff81111561125d5761125d612d8d565b6040519080825280602002602001820160405280156112af57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161127b5790505b506001600160a01b03808616600090815260076020908152604080832093881683529290529081209196505b828110156113825760006112f76112f28684611a8d565b61209c565b6040805160808101825261ffff831680825260008181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b90049091161515606082015289519192509089908490811061136e5761136e612da3565b6020908102919091010152506001016112db565b50505b5050505092915050565b611397611a99565b6000806113a48686611f34565b6001600160a01b0380831660009081526007602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b909204909116151560608301529294509092509061145e5760405163102a919160e21b81526001600160a01b0380891660048301528716602482015261ffff861660448201526064016107d2565b831515816060015115150361148557604051626ee66560e11b815260040160405180910390fd5b6001600160a01b0380841660009081526007602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f9061150890871515815260200190565b60405180910390a250505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152611548848484611ac6565b949350505050565b611558611a99565b61156260006120c6565b565b60015433906001600160a01b0316811461159c5760405163118cdaa760e01b81526001600160a01b03821660048201526024016107d2565b6115a5816120c6565b50565b6000600682815481106115bd576115bd612da3565b6000918252602090912001546001600160a01b031692915050565b6000610ca7600b612092565b60008261160257506000546001600160a01b03828116911614610686565b60008381526002602090815260408083206001600160a01b038616845290915290205460ff165b9392505050565b60008080808080808061164460088a611eb6565b61166457604051637d9160bf60e11b8152600481018a90526024016107d2565b600061167160088b611ec2565b905061167c81612024565b61ffff16985061168b81612030565b61ffff16975061169a81612040565b61ffff1696506116a981612050565b61ffff1695506116b881612060565b62ffffff1694506116c881612071565b61ffff1693506116d781612081565b62ffffff16925060ff81901c915050919395975091939597565b6116f9611a99565b306001600160a01b0316816001600160a01b03166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190612dfb565b6001600160a01b03161461179757604051630a3e70af60e11b81526001600160a01b03821660048201526024016107d2565b6005546001600160a01b0390811690821681036117d257604051630ded3b9560e31b81526001600160a01b03831660048201526024016107d2565b600580546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e91015b60405180910390a15050565b60008281526002602052604090206001015461184d81611b92565b6108cf8383611d0d565b61185f611a99565b61186a600b826120df565b61189257604051638e888ef360e01b81526001600160a01b03821660048201526024016107d2565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb390600090a250565b6118d1611a99565b6118e0600861ffff83166120f4565b61190357604051637d9160bf60e11b815261ffff821660048201526024016107d2565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1390600090a250565b61193d611a99565b6115a581612100565b61194e611a99565b60045481810361197457604051631baa31e960e21b8152600481018390526024016107d2565b67016345785d8a00008211156119ae57604051635e8988c160e01b81526004810183905267016345785d8a000060248201526044016107d2565b600482905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e509101611826565b6119f1611a99565b600180546001600160a01b0383166001600160a01b03199091168117909155611a226000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000610686826121be565b6000808080611a7486866121c9565b9097909650945050505050565b600060ff82901c610686565b600061162983836121f4565b6000546001600160a01b031633146115625760405163118cdaa760e01b81523360048201526024016107d2565b604080516080810182526000808252602082018190529181018290526060810191909152611af48484611f34565b6001600160a01b03918216600090815260076020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b03811660009081526001830160205260408120541515611629565b6115a5813361221e565b6000611bad86868661ffff16611ac6565b6020015190506001600160a01b038116611bf75760405163b65ee95360e01b81526001600160a01b0380881660048301528616602482015261ffff851660448201526064016107d2565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612e18565b03611c7b5760405163b70cd0db60e01b8152600481018490526024016107d2565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d90611ca99086908690600401612e31565b600060405180830381600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b50505050505050505050565b600082611d0357604051633e3253cf60e11b815260040160405180910390fd5b611629838361225b565b6000611d1983836115e4565b15611d7a5760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610686565b506000610686565b60008561ffff168761ffff161180611d9f5750610fff8661ffff16115b80611daf57506127108561ffff16115b80611dbf57506109c48361ffff16115b80611dd15750620fffff8262ffffff16115b15611def57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b6b0fffc00000000000000000001691909117605c9190911b6dfffff0000000000000000000000016176dffffffffffffffffffffffffffff19919091161790565b60006115488484611e94576000611e97565b60015b600180861b19929092169116841b1790565b60006115488484846122e7565b60006116298383612304565b60006116298383612310565b6000611629836001600160a01b038416612357565b606060006116298361239e565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611f2b82826123a9565b95945050505050565b600080826001600160a01b0316846001600160a01b03161115611f55579192915b509192909150565b600060408303516020840351845180602087010180516002830161ffca811115611f8f5763c8c781396000526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b036000f596505085611ffe5763301164256000526004601cfd5b90528552601f19850152603f199093019290925250919050565b60006116298383612357565b600061ffff8216610686565b60006106868260101c610fff1690565b600061068682601c1c610fff1690565b60006106868260281c613fff1690565b60006106868260361c62ffffff1690565b600061068682604e1c613fff1690565b600061068682605c1c620fffff1690565b6000610686825490565b8061ffff811681146120c1576040516364ae406d60e01b815260040160405180910390fd5b919050565b600180546001600160a01b03191690556115a581612612565b6000611629836001600160a01b038416612662565b60006116298383612755565b6001600160a01b03811661212757604051632573cfb960e21b815260040160405180910390fd5b6003546001600160a01b03908116908216810361216657600354604051634fcea97160e01b81526001600160a01b0390911660048201526024016107d2565b600380546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa708401527219101611826565b600061068682612092565b600080806121d78585611a8d565b600081815260029690960160205260409095205494959350505050565b600082600001828154811061220b5761220b612da3565b9060005260206000200154905092915050565b61222882826115e4565b6122575760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107d2565b5050565b600061226783836115e4565b611d7a5760008381526002602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561229f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610686565b600082815260028401602052604081208290556115488484612018565b60006116298383612772565b60008181526002830160205260408120548015801561233657506123348484612304565b155b156116295760405163015ab34360e11b8152600481018490526024016107d2565b6000818152600183016020526040812054611d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610686565b60606106868261278a565b6000806000836000036123c55750600160801b91506106869050565b508260008112156123d7579015906000035b621000008110156125d057600160801b9250846fffffffffffffffffffffffffffffffff81111561240a57911591600019045b600182161561241b5792830260801c925b800260801c60028216156124315792830260801c925b800260801c60048216156124475792830260801c925b800260801c600882161561245d5792830260801c925b800260801c60108216156124735792830260801c925b800260801c60208216156124895792830260801c925b800260801c604082161561249f5792830260801c925b8002608090811c908216156124b65792830260801c925b800260801c6101008216156124cd5792830260801c925b800260801c6102008216156124e45792830260801c925b800260801c6104008216156124fb5792830260801c925b800260801c6108008216156125125792830260801c925b800260801c6110008216156125295792830260801c925b800260801c6120008216156125405792830260801c925b800260801c6140008216156125575792830260801c925b800260801c61800082161561256e5792830260801c925b800260801c620100008216156125865792830260801c925b800260801c6202000082161561259e5792830260801c925b800260801c620400008216156125b65792830260801c925b800260801c620800008216156125ce5792830260801c925b505b826000036125fb57604051631dba598d60e11b815260048101869052602481018590526044016107d2565b816126065782611f2b565b611f2b83600019612e87565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600183016020526040812054801561274b576000612686600183612de8565b855490915060009061269a90600190612de8565b90508082146126ff5760008660000182815481106126ba576126ba612da3565b90600052602060002001549050808760000184815481106126dd576126dd612da3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061271057612710612ea9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610686565b6000915050610686565b600081815260028301602052604081208190556116298383612797565b60008181526001830160205260408120541515611629565b60606000611629836127a3565b60006116298383612662565b6060816000018054806020026020016040519081016040528092919081815260200182805480156127f357602002820191906000526020600020905b8154815260200190600101908083116127df575b50505050509050919050565b60006020828403121561281157600080fd5b81356001600160e01b03198116811461162957600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561286157835183529284019291840191600101612845565b50909695505050505050565b60006020828403121561287f57600080fd5b5035919050565b6001600160a01b03811681146115a557600080fd5b803561ffff811681146120c157600080fd5b803562ffffff811681146120c157600080fd5b6000806000806000806000806000806101408b8d0312156128e057600080fd5b8a356128eb81612886565b995060208b01356128fb81612886565b985061290960408c0161289b565b975061291760608c0161289b565b965061292560808c0161289b565b955061293360a08c0161289b565b945061294160c08c0161289b565b935061294f60e08c016128ad565b925061295e6101008c0161289b565b915061296d6101208c016128ad565b90509295989b9194979a5092959850565b60006020828403121561299057600080fd5b813561162981612886565b6000806000606084860312156129b057600080fd5b83356129bb81612886565b925060208401356129cb81612886565b91506129d96040850161289b565b90509250925092565b600080604083850312156129f557600080fd5b823591506020830135612a0781612886565b809150509250929050565b803580151581146120c157600080fd5b60008060008060008060008060006101208a8c031215612a4157600080fd5b612a4a8a61289b565b9850612a5860208b0161289b565b9750612a6660408b0161289b565b9650612a7460608b0161289b565b9550612a8260808b0161289b565b9450612a9060a08b016128ad565b9350612a9e60c08b0161289b565b9250612aac60e08b016128ad565b9150612abb6101008b01612a12565b90509295985092959850929598565b60008060008060008060a08789031215612ae357600080fd5b8635612aee81612886565b95506020870135612afe81612886565b9450612b0c6040880161289b565b935060608701359250608087013567ffffffffffffffff80821115612b3057600080fd5b818901915089601f830112612b4457600080fd5b813581811115612b5357600080fd5b8a6020828501011115612b6557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612b8e57600080fd5b612b978361289b565b9150612ba560208401612a12565b90509250929050565b60008060008060808587031215612bc457600080fd5b8435612bcf81612886565b93506020850135612bdf81612886565b9250612bed604086016128ad565b9150612bfb6060860161289b565b905092959194509250565b60008060408385031215612c1957600080fd5b8235612c2481612886565b91506020830135612a0781612886565b6020808252825182820181905260009190848201906040850190845b8181101561286157612c9583855161ffff81511682526001600160a01b0360208201511660208301526040810151151560408301526060810151151560608301525050565b9284019260809290920191600101612c50565b60008060008060808587031215612cbe57600080fd5b8435612cc981612886565b93506020850135612cd981612886565b9250612ce76040860161289b565b9150612bfb60608601612a12565b600080600060608486031215612d0a57600080fd5b8335612d1581612886565b92506020840135612d2581612886565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101610686565b600060208284031215612d8457600080fd5b6116298261289b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612de157612de1612db9565b5060010190565b8181038181111561068657610686612db9565b600060208284031215612e0d57600080fd5b815161162981612886565b600060208284031215612e2a57600080fd5b5051919050565b82815260006020604081840152835180604085015260005b81811015612e6557858101830151858201606001528201612e49565b506000606082860101526060601f19601f830116850101925050509392505050565b600082612ea457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122044c434169616949a5201b651b01699c4bfc6c4f0d99bb8e1d64c04a5c038ccb364736f6c6343000814003360c06040523480156200001157600080fd5b506040516200615c3803806200615c83398101604081905262000034916200010a565b6001600160a01b03811660a052306080526200004f62000056565b506200013c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001075780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011d57600080fd5b81516001600160a01b03811681146200013557600080fd5b9392505050565b60805160a051615fe56200017760003960008181610505015281816113ce015281816121da01526136a5015260006104720152615fe56000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806388cc58e411610160578063c9939f5e116100d8578063e584b6541161008c578063e985e9c511610071578063e985e9c5146106c9578063ea3446bf146106ec578063f5e29329146106ff57600080fd5b8063e584b654146106a3578063e77366f8146106b657600080fd5b8063d8dfcea0116100bd578063d8dfcea01461067b578063da10610c14610683578063dbe65edc1461069b57600080fd5b8063c9939f5e14610660578063d3b9fbe41461067357600080fd5b8063a1af5b9a1161012f578063abcd783011610114578063abcd7830146105f0578063bd85b0391461062d578063c7bd65861461064d57600080fd5b8063a1af5b9a146105c1578063a41a01fb146105c957600080fd5b806388cc58e4146105035780638940a16a146105295780638d7024e51461056757806395d89b41146105a257600080fd5b806347973bff116101f357806355182894116101c25780636653851a116101a75780636653851a14610494578063781a8915146104a75780637ca0de30146104b157600080fd5b806355182894146104285780635c60da1b1461046d57600080fd5b806347973bff146103cf5780634c7cffbd146103e25780634e1273f4146103f557806353c059a01461041557600080fd5b80630abe96881161024a57806317fad7fc1161022f57806317fad7fc146103855780631b057f6d1461039a578063383d15c5146103ad57600080fd5b80630abe96881461033457806317f11ecc1461036a57600080fd5b8062fdd58e1461027b57806305e8746d146102a157806306fdde03146102ca5780630902f1ac1461030c575b600080fd5b61028e61028936600461556c565b610712565b6040519081526020015b60405180910390f35b3660011981013560f01c90033560601c5b6040516001600160a01b039091168152602001610298565b60408051808201909152601481527f4c697175696469747920426f6f6b20546f6b656e00000000000000000000000060208201525b60405161029891906155bc565b610314610740565b604080516001600160801b03938416815292909116602083015201610298565b610314610342366004615602565b62ffffff166000908152600660205260409020546001600160801b0381169160809190911c90565b61037261077a565b60405161ffff9091168152602001610298565b610398610393366004615662565b61079b565b005b6103986103a8366004615739565b6107f6565b6103c06103bb366004615785565b610915565b60405161029893929190615828565b6103986103dd366004615859565b610b9b565b61028e6103f0366004615602565b610cf9565b6104086104033660046158f0565b610d29565b604051610298919061595c565b61028e61042336600461597f565b610dff565b610430611138565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610298565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6103986104a23660046159b6565b6111e2565b620100095461028e565b6104b961121b565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610298565b7f00000000000000000000000000000000000000000000000000000000000000006102b2565b61053c610537366004615a3c565b611283565b6040805167ffffffffffffffff94851681529284166020840152921691810191909152606001610298565b61056f611382565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610298565b60408051808201909152600381526213109560ea1b60208201526102ff565b61028e6113c2565b6105dc6105d7366004615a63565b61157a565b60405162ffffff9091168152602001610298565b6106036105fe366004615a8d565b61158d565b604080516001600160801b0394851681529284166020840152921691810191909152606001610298565b61028e61063b366004615ac5565b60009081526001602052604090205490565b61039861065b366004615ade565b611732565b61040861066e366004615662565b6117c8565b610398611af2565b610314611b86565b3660011981013560f01c90036014013560601c6102b2565b6105dc611ba1565b6103986106b1366004615af9565b611bae565b6106036106c4366004615a8d565b611bbd565b6106dc6106d7366004615b17565b611d03565b6040519015158152602001610298565b6103986106fa366004615b35565b611d0f565b6105dc61070d366004615ac5565b611fed565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b905090565b60008061077161075d60055460045461201890919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b600061073b60003660011981013560f090811c90910360280135901c905090565b6107a3612052565b62010009546107b8813389898989898961208a565b6107c687878787878761212a565b6107dd6001600080516020615f9083398151915255565b6107ed8133898989898989612188565b50505050505050565b6107fe612052565b6108066121cf565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b038116158015906108cf5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c39190615b85565b6001600160a01b031614155b156108ed57604051631b5de6eb60e01b815260040160405180910390fd5b6108f8848484612218565b506109106001600080516020615f9083398151915255565b505050565b6000806060866109248161223f565b61092c612052565b600086900361094e5760405163296db0d960e01b815260040160405180910390fd5b62010009546040805160608101909152600090808967ffffffffffffffff81111561097b5761097b615ba2565b6040519080825280602002602001820160405280156109a4578160200160208202803683370190505b5081526020018967ffffffffffffffff8111156109c3576109c3615ba2565b6040519080825280602002602001820160405280156109ec578160200160208202803683370190505b5081526020018967ffffffffffffffff811115610a0b57610a0b615ba2565b604051908082528060200260200182016040528015610a34578160200160208202803683370190505b509052600454909150610a60813660011981013560f01c90038035606090811c9160140135901c61227b565b9650610a7083338d8d8d8c6122bb565b610a7d8a8a898e86612305565b9550610a93610a8c8888612018565b829061243a565b600455604080830151835191519096506001600160a01b038d169160009133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610ae191908b90615bb8565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610b2d929190615bb8565b60405180910390a38515610b5f57610b5f863660011981013560f01c90038035606090811c9160140135901c8b612474565b610b766001600080516020615f9083398151915255565b610b8d83338d8d8d610b888d8d612018565b6124d2565b505050509450945094915050565b610ba36121cf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610bee5750825b905060008267ffffffffffffffff166001148015610c0b5750303b155b905081158015610c19575080155b15610c375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c6b57845468ff00000000000000001916680100000000000000001785555b610c73612514565b610c9f610c93610c8e8860035461252490919063ffffffff16565b612573565b8e8e8e8e8e8e8e6125c7565b8315610cea57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b6000610735610d1d60003660011981013560f090811c90910360280135901c905090565b62ffffff84169061274e565b60608382610d378282612785565b8567ffffffffffffffff811115610d5057610d50615ba2565b604051908082528060200260200182016040528015610d79578160200160208202803683370190505b50925060005b86811015610df457610dcf888883818110610d9c57610d9c615bdd565b9050602002016020810190610db19190615bf3565b878784818110610dc357610dc3615bdd565b90506020020135610712565b848281518110610de157610de1615bdd565b6020908102919091010152600101610d7f565b505050949350505050565b6000610e09612052565b6201000954600454600554600086610e3d57610e383660011981013560f01c90036014013560601c84906127a5565b610e57565b610e573660011981013560f01c90033560601c84906127da565b90506000819003610e7b57604051637df801c760e01b815260040160405180910390fd5b86610e898533898486612809565b610e93848361243a565b6003549094506000610eba60003660011981013560f090811c90910360280135901c905090565b90506000610ec78361286d565b9050610ed38342612879565b92505b62ffffff8116600090815260066020526040902054610ef68186156128ef565b61101a57610f04848361291e565b935060008080610f188488888b898e6129a6565b91945092509050821561101657610f2f8984612018565b9850610f3b8d8361243a565b9c506000610f56610f4b89612bcc565b839061ffff16612bdc565b90508015610f7757610f688b8261243a565b9a50610f748482612018565b93505b610f8b83610f85878761243a565b90612018565b62ffffff87166000908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610fd88e612c52565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b60008690036110295750611073565b60006110358684612c63565b905062ffffff8116158061104d575062ffffff818116145b1561106b57604051631a6d7fb160e31b815260040160405180910390fd5b915050610ed6565b60008990036110955760405163439df85d60e11b815260040160405180910390fd5b61109f878a612018565b60045560058690556110b3600a8483612c85565b92506110bf8382612524565b60035583156110eb576110e63660011981013560f01c90036014013560601c8a908c612da0565b611106565b6111063660011981013560f01c90033560601c8a908c612de0565b61111d6001600080516020615f9083398151915255565b61112a88338c878d612df1565b505050505050505092915050565b6003546078906000908190819081908161115182612e4e565b905061ffff8116156111d957600061116a600a83612e5e565b9650905061117781612ebc565b965061118281612ec8565b94508464ffffffffff1660000361119857600095505b61ffff8616156111d7576111c98661ffff168361ffff16816111bc576111bc615c10565b600a916001910601612ee9565b90506111d481612ec8565b93505b505b50509091929394565b6111ea612052565b6111f26121cf565b611204600354888888888888886125c7565b6107ed6001600080516020615f9083398151915255565b600080600080600080600080600354905061123581612ebc565b975061124081612f19565b965061124b81612f29565b955061125681612f39565b945061126181612f49565b935061126c81612bcc565b925061127781612f5a565b91505090919293949596565b6000806000806003549050600061129982612e4e565b905061ffff811615806112b25750428664ffffffffff16115b156112c9576000806000945094509450505061137b565b60006112d7600a8389612f6b565b91985096509450905064ffffffffff80881690821610156113775761130d6112fe8461286d565b849064ffffffffff8a1661308e565b9250600061131b8289615c3c565b90508064ffffffffff1661132e8561286d565b62ffffff1661133d9190615c5a565b6113479088615c86565b96508064ffffffffff1661135a85612c52565b62ffffff166113699190615c5a565b6113739087615c86565b9550505b5050505b9193909250565b6000806000806000600354905061139881612c52565b94506113a3816130a6565b93506113ae816130b7565b92506113b9816130c8565b91505090919293565b60006113cc612052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190615b85565b6001600160a01b0316336001600160a01b03161461147f57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c60006114da826114a25760006114a5565b60015b60ff166000856001600160801b0316116114c05760006114c3565b60015b60ff169060801b6001600160801b03919091161790565b90506114e68482612018565b9450841561155c5760058190556004546115009086612018565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261155c853660011981013560f01c90038035606090811c9160140135901c33612474565b505050506115776001600080516020615f9083398151915255565b90565b60006115868383612c63565b9392505050565b60035460009083908290816115b760003660011981013560f090811c90910360280135901c905090565b905060006115c48361286d565b90506115d08342612879565b92505b62ffffff81166000908152600660205260408120546115f39089156130db565b90506001600160801b038116156116d957600061161562ffffff84168561274e565b90506000876001600160801b0316836001600160801b031611611638578261163a565b875b9050611646868561291e565b955060008a611669576116646001600160801b0383168460806130fb565b61167e565b61167e6001600160801b038316608085613131565b9050600061168c8888613167565b905060006116a36001600160801b03841683613186565b90506116af8184615ca7565b6116b9908d615ca7565b9b506116c5848c615cc7565b9a506116d1818b615ca7565b995050505050505b856001600160801b03166000036116f05750611728565b60006116fc8984612c63565b905062ffffff81161580611714575062ffffff818116145b15611720575050611728565b9150506115d3565b5050509250925092565b61173a612052565b600354600061174882612e4e565b90508061ffff166000036117675750600161176382826131cf565b6003555b611773600a828561321e565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a250506117c56001600080516020615f9083398151915255565b50565b606086336117d68282613307565b61180b5760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b611813612052565b8515806118205750858414155b1561183e57604051633ab7870760e01b815260040160405180910390fd5b620100095461185381338c8c8c8c8c8c613353565b898767ffffffffffffffff81111561186d5761186d615ba2565b604051908082528060200260200182016040528015611896578160200160208202803683370190505b5094506000805b898110156119ea5760006118c88c8c848181106118bc576118bc615bdd565b90506020020135613399565b905060008a8a848181106118de576118de615bdd565b9050602002013590508060000361190f57604051636996a92560e01b815262ffffff83166004820152602401611802565b62ffffff8216600081815260066020908152604080832054600190925290912054909161193e908890856133c4565b600061194b838584613445565b905060008190036119765760405163fd44792960e01b815262ffffff86166004820152602401611802565b6119808382612018565b9250838203611996576119946007866134bd565b505b62ffffff851660009081526006602052604090208390558b5181908d90889081106119c3576119c3615bdd565b60209081029190910101526119d8878261243a565b9650856001019550505050505061189d565b506004546119f89082612018565b6004556040516000906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611a41908f908f908f908f90615d32565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a604051611a9093929190615d59565b60405180910390a3611abc813660011981013560f01c90038035606090811c9160140135901c8e612474565b611ad36001600080516020615f9083398151915255565b611ae38333848e8e8e8e8e61355f565b50505050509695505050505050565b611afa612052565b611b026121cf565b600354611b16611b1182612573565b6135a5565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc611b44836130b7565b611b4d846130a6565b6040805162ffffff93841681529290911660208301520160405180910390a250611b846001600080516020615f9083398151915255565b565b60055460009081906001600160801b0381169060801c610771565b600061073b60035461286d565b611bb93383836135da565b5050565b6000808080611bd56001600160801b0387168661368f565b6003549091506000611bfc60003660011981013560f090811c90910360280135901c905090565b90506000611c098361286d565b9050611c158342612879565b92505b62ffffff8116600090815260066020526040902054611c38818a156128ef565b611ca557611c46848361291e565b935060008080611c5a8488888f898d6129a6565b919450925090508215611ca157611c718884612018565b9750611c7e828d156130db565b611c88908b615ca7565b9950611c94818d6130db565b611c9e908a615ca7565b98505b5050505b6000859003611cb45750611cec565b6000611cc08a84612c63565b905062ffffff81161580611cd8575062ffffff818116145b15611ce4575050611cec565b915050611c18565b611cf684896130db565b9650505050509250925092565b60006115868383613307565b611d17612052565b6000839003611d395760405163727ab02160e11b815260040160405180910390fd5b62010009546004546000611d4c866136a0565b9050611d5a833389896137a8565b611d7e863660011981013560f01c90038035606090811c9160140135901c8a612474565b6000806001600160a01b038916631faa6b8760e01b333660011981013560f01c90033560601c3660011981013560f01c90036014013560601c8c888d8d604051602401611dd19796959493929190615da8565b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e279190615de9565b6000604051808303816000865af19150503d8060008114611e64576040519150601f19603f3d011682016040523d82523d6000602084013e611e69565b606091505b5091509150811580611e7d57508051602014155b80611ebb57507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611eb89190615e05565b14155b15611ed957604051634a57011360e01b815260040160405180910390fd5b6000611efe813660011981013560f01c90038035606090811c9160140135901c61227b565b9050611f14611f0d868661243a565b82906137fd565b15611f3257604051630e3c717160e11b815260040160405180910390fd5b6000611f3e8287612018565b6004839055600554909150611f53908261243a565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611f919061286d565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611fd36001600080516020615f9083398151915255565b611fe087338d8885613841565b5050505050505050505050565b600061073561201160003660011981013560f090811c90910360280135901c905090565b839061389d565b8082038281118061203457506001600160801b03808416908216115b156107355760405163e599af5560e01b815260040160405180910390fd5b600080516020615f9083398151915280546001190161208457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b750100000000000000000000000000000000000000000088161561212057612120886379c8ccf760e01b898989898989896040516024016120d19796959493929190615e1e565b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526138e2565b5050505050505050565b85336121368282613307565b6121665760405163548f773d60e01b81526001600160a01b03808416600483015282166024820152604401611802565b612120888888888888613946565b6001600080516020615f9083398151915255565b750200000000000000000000000000000000000000000088161561212057612120886367ddb27860e01b898989898989896040516024016120d19796959493929190615e1e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b8457604051632486085360e01b815260040160405180910390fd5b82156109105761091083634e430b5a60e01b8585856040516024016120d193929190615e74565b6001600160a01b038116158061225d57506001600160a01b03811630145b156117c5576040516345c210e760e11b815260040160405180910390fd5b60006122b384610f8561228d85613aa9565b61229687613aa9565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b741000000000000000000000000000000000000000008616156122fd576122fd86630d4abdb360e01b87878787876040516024016120d1959493929190615e8e565b505050505050565b60008061232760003660011981013560f090811c90910360280135901c905090565b60035490915060006123388261286d565b905086935060005b8881101561242d576000806123768a8d8d8681811061236157612361615bdd565b90506020020135613b1890919063ffffffff16565b91509150600080600061238c898886888c613b61565b9194509250905061239d8a83612018565b99508362ffffff168b6000015187815181106123bb576123bb615bdd565b602002602001018181525050808b6020015187815181106123de576123de615bdd565b602002602001018181525050828b60400151878151811061240157612401615bdd565b60200260200101818152505061241d8c8562ffffff1685613d6f565b8560010195505050505050612340565b5050505095945050505050565b8181018281108061245657506001600160801b03808416908216105b15610735576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156124a6576124a66001600160a01b038616846001600160801b038516613dbc565b6001600160801b038116156122fd576122fd6001600160a01b038516846001600160801b038416613dbc565b742000000000000000000000000000000000000000008616156122fd576122fd86637a51a4c660e01b87878787876040516024016120d1959493929190615e8e565b61251c613e0d565b611b84613e5b565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167fffffff000000000000000000000000000000000000000000000000000000000060e884901b1617611586565b60008061257f8361286d565b90507fffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff831675ffffff00000000000000000000000000000000000000609883901b1617611586565b61ffff87161580156125db575061ffff8616155b80156125e9575061ffff8516155b80156125f7575061ffff8416155b8015612606575062ffffff8316155b8015612614575061ffff8216155b8015612623575062ffffff8116155b15612641576040516331375e0360e11b815260040160405180910390fd5b6126518888888888888888613e63565b9750600061267460003660011981013560f090811c90910360280135901c905090565b905060006126828a84613f7c565b905060006126908284613fda565b61269a838561401a565b6126a49190615ecd565b905067016345785d8a00008111156126cf576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff190161277c828261403e565b95945050505050565b808214611bb9576040516340311ffd60e11b815260040160405180910390fd5b6000806127b28460801c90565b90506122b3816127c185613aa9565b6127cb9190615cc7565b6001600160801b031660801b90565b60006001600160801b0383166122b3816127f385613aa9565b6127fd9190615cc7565b6001600160801b031690565b74010000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261286690869063feee373560e01b9060a4016120d1565b5050505050565b600060e882901c610735565b600080612885846130c8565b6128969064ffffffffff1684615ee0565b90506128a184612f19565b61ffff1681106128e5576128b484612573565b93506128bf84612f29565b61ffff1681106128d9576128d484600061429e565b6128e2565b6128e2846135a5565b93505b6122b3848461430c565b60008161290f576129008360801c90565b6001600160801b031615611586565b50506001600160801b03161590565b60008061292a846130b7565b62ffffff169050600080828562ffffff161161294d578462ffffff168303612956565b828562ffffff16035b91506127108202612966876130a6565b62ffffff16019050600061297987612f5a565b62ffffff16905080821161298d578161298f565b805b915061299b8783613f7c565b979650505050505050565b60008080806129ba62ffffff87168961274e565b905060006129c98b89156130db565b90506000886129f4576129ef6129ea6001600160801b0384168560806130fb565b614365565b612a0c565b612a0c6129ea6001600160801b038416608086613131565b90506000612a1a8c8c613167565b90506000612a316001600160801b03841683613186565b9050612a3d8184615ca7565b92506000612a4b8a8d6130db565b9050600080856001600160801b0316836001600160801b031610612a76575084915082905085612aec565b612a896001600160801b0384168661438f565b91506000612a978385615cc7565b6001600160801b031690508e612abb57612ab66129ea8260808c6143c6565b612aca565b612aca6129ea828b60806143f0565b9150876001600160801b0316826001600160801b03161115612aea578791505b505b8d612b2657612b04836001600160801b031660801b90565b6001600160801b038216612b21846001600160801b031660801b90565b612b4e565b6001600160801b038316612b43826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611612ba0612b9a85610f85888f61243a90919063ffffffff16565b8361445e565b1115612bbf5760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b600061073582604e1c613fff1690565b6000816001600160801b0316600003612bf757506000610735565b6127106001600160801b038316811015612c2457604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b60006107358260701c620fffff1690565b600082612c7a57612c7560078361447a565b611586565b6115866007836145c6565b600080612c9184612e4e565b90508061ffff16600003612ca85783915050611586565b6000612cb48683612ee9565b90506000612cc1826146f6565b90506000612cce83614702565b612cdb9060ff1683615ef3565b90508064ffffffffff16612cee42614711565b64ffffffffff161115612d94576000806000612d338464ffffffffff164203612d168c61286d565b612d1f8d612c52565b612d298e8e614739565b8a93929190614769565b9250925092506000612d4487612ebc565b905064ffffffffff861642036078811115612d74575096879006600101964295506000612d718c8a6131cf565b9b505b612d8282868686858c6147ce565b97505050505050612d94888585614872565b50949695505050505050565b6000612dac8460801c90565b90506001600160801b03811615612dda57612dda6001600160a01b038416836001600160801b038416613dbc565b50505050565b60006001600160801b038416612dac565b74020000000000000000000000000000000000000000851615612866576040516001600160a01b038086166024830152841660448201528215156064820152608481018290526128669086906353e8079b60e01b9060a4016120d1565b60006107358260d81c61ffff1690565b600080612e6b8484612ee9565b9150612e7682612ebc565b90508061ffff168361ffff1614612eb557612e99612e948583612ee9565b612ebc565b90508061ffff168361ffff1611612eb05780612eb2565b825b90505b9250929050565b600061ffff8216610735565b6000612ed382614702565b60ff16612edf836146f6565b6107359190615ef3565b600081612ef58161489f565b8361ffff60001985018116908110612f0f57612f0f615bdd565b0154949350505050565b60006107358260101c610fff1690565b600061073582601c1c610fff1690565b60006107358260281c613fff1690565b60006107358260361c62ffffff1690565b600061073582605c1c620fffff1690565b600080600080600080612f7e8989612e5e565b909250905064ffffffffff8716612fb58a612f99848c615f11565b61ffff1661ffff8110612fae57612fae615bdd565b0154612ec8565b64ffffffffff161115612fdb57604051631c4e7f9560e21b815260040160405180910390fd5b612fe482612ec8565b95508664ffffffffff168664ffffffffff16116130265785613005836148c4565b61300e846148da565b613017856148f0565b95509550955095505050613085565b8695506000806130388b8b8b86614906565b9150915060008961304883612ec8565b6130529190615c3c565b9050600061305f84612ec8565b613069908c615c3c565b905061307784848484614a58565b919a50985096505050505050505b93509350935093565b600061309a8483612879565b93506122b3848461291e565b60006107358260841c620fffff1690565b60006107358260981c62ffffff1690565b60006107358260b01c64ffffffffff1690565b6000816130ec57612c758360801c90565b6001600160801b038316611586565b60006131088484846143f0565b9050600160ff83161b8061311e5761311e615c10565b83850915611586576122b3600182615ecd565b600061313e8484846143c6565b9050818061314e5761314e615c10565b600160ff85161b850915611586576122b3600182615ecd565b60006115866131768484613fda565b613180858561401a565b01614365565b60008161319281614bbc565b6001600160801b03808416670de0b6b3a764000081900391829160001991881602820101816131c3576131c3615c10565b049250505b5092915050565b60007fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff83167cffff00000000000000000000000000000000000000000000000000000060d884901b1617611586565b600061322a8484612ee9565b9050600061323782612ebc565b90508261ffff168161ffff161061326157604051632c57574160e21b815260040160405180910390fd5b60008461ffff168261ffff16146132925761ffff82161561328b576132868683612ee9565b613294565b6000613294565b825b905060006132a182612ebc565b61ffff169050808661ffff16116132b857806132be565b8561ffff165b905061ffff83165b8561ffff168110156132f05781888261ffff81106132e6576132e6615bdd565b01556001016132c6565b506107ed878761ffff868116881890891617614872565b6000816001600160a01b0316836001600160a01b031614806115865750506001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b74400000000000000000000000000000000000000000881615612120576121208863ea9db9d360e01b898989898989896040516024016120d19796959493929190615e1e565b8062ffffff811681146133bf57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b03831660009081526020818152604080832085845291829052909120548281101561342157604051625b387760e31b81526001600160a01b03861660048201526024810185905260448101849052606401611802565b60009384526001602090815260408086208054869003905592905292209103905550565b60006001600160801b038416608085901c82808315613478576134756129ea886001600160801b03871689614bee565b91505b6001600160801b038316156134a15761349e6129ea886001600160801b03861689614bee565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b19811680821461355357600083815260028701602052604081208290558190036135475750600882901c6000818152600187810160205260408220805460ff87169290921b19909116908190559190829003613545578654600160ff83161b191687555b505b60019350505050610735565b50600095945050505050565b74800000000000000000000000000000000000000000881615612120576121208863fdc2725760e01b898989898989896040516024016120d19796959493929190615e1e565b6000806135b183612c52565b62ffffff16905060006135c384612f39565b61ffff1690506127108282020461277c858261429e565b826135e48161223f565b826001600160a01b0316846001600160a01b0316036136215760405163782ee70760e01b81526001600160a01b0385166004820152602401611802565b6001600160a01b03848116600081815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000816130ec57612c758360801b90565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137259190615e05565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061375e90670de0b6b3a7640000908616850283015b04614365565b9250613790670de0b6b3a764000082866001600160801b0316856001600160801b031602018161375857613758615c10565b915050608081901b6001600160801b0383161761277c565b74040000000000000000000000000000000000000000841615612dda576040516001600160a01b0380851660248301528316604482015260648101829052612dda90859063505d903360e01b906084016120d1565b60006001600160801b0383811690608085811c9185169085901c8184108061299b5750806001600160801b0316836001600160801b03161094505050505092915050565b74080000000000000000000000000000000000000000851615612866576040516001600160a01b0380861660248301528416604482015260648101839052608481018290526128669086906360bed5f360e01b9060a4016120d1565b600061271061ffff60801b608084901b1604600160801b01816138bf82614c0e565b6138c886614c0e565b6138d29190615f32565b905061277c816280000001613399565b600080839050602083015160e01c602060008551602087016000865af192503d151583151615613916573d6000803e3d6000fd5b8060005160e01c14601f3d1116831692505081612dda57604051636c93cb9b60e01b815260040160405180910390fd5b82816139528282612785565b8661395c8161223f565b6001600160a01b03808a16600090815260208190526040808220928b1682528120905b88811015613a405760008a8a8381811061399b5761399b615bdd565b90506020020135905060008989848181106139b8576139b8615bdd565b600085815260208981526040909120549102929092013592505081811015613a15578e83836040516358b4690f60e01b8152600401611802939291906001600160a01b039390931683526020830191909152604082015260600190565b600092835260208681526040808520928490039092558590529091208054909101905560010161397f565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c604051613a949493929190615d32565b60405180910390a45050505050505050505050565b6040516370a0823160e01b8152306004820152600090610735906001600160a01b038416906370a0823190602401602060405180830381865afa158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea9190615e05565b6000806000806000613b2987614d1b565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83166000818152600660205260408120549091829182918290613b88908b61274e565b90506000613ba78962ffffff1660009081526001602052604090205490565b9050613bb583898484614dbe565b909650945084935062ffffff808b16908a1603613ced57613bd7878a4261308e565b96506000613be984898e89868c614f44565b90508015613ce7576000613c0784613c018985612018565b9061445e565b90506000613c22613c178b612bcc565b849061ffff16612bdc565b90508015613c4857613c348782612018565b600554909750613c44908261243a565b6005555b6000613c6286613c01613c5b8786612018565b8a9061243a565b9050613c6f838683614bee565b9950613c7d600a8c8f612c85565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e8685604051613cdb9392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b50613cf8565b613cf8858b8b615039565b851580613d03575083155b15613d2857604051634c98d35760e11b815262ffffff8a166004820152602401611802565b80600003613d3d57613d3b60078a61509f565b505b613d47838561243a565b62ffffff90991660009081526006602052604090209890985550929891975095509350505050565b60008281526001602052604081208054839290613d8d908490615ecd565b90915550506001600160a01b039092166000908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612dda848261512c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611b8457604051631afcd79f60e31b815260040160405180910390fd5b612174613e0d565b60008561ffff168761ffff161180613e805750610fff8661ffff16115b80613e9057506127108561ffff16115b80613ea057506109c48361ffff16115b80613eb25750620fffff8262ffffff16115b15613ed057604051631c07203f60e01b815260040160405180910390fd5b605c82901b6dfffff00000000000000000000000166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b6b0fffc000000000000000000016908117871797949095179092171717909117909117908a16175b9998505050505050505050565b6000620fffff8262ffffff161115613fa757604051631c07203f60e01b815260040160405180910390fd5b700fffff0000000000000000000000000000198316700fffff0000000000000000000000000000607084901b1617611586565b600080613fe684612f49565b62ffffff16905080156131c85760008361ffff1661400386612c52565b62ffffff16029050606460638280028402016131c3565b60008161ffff1661402a84612ebc565b61ffff16026402540be40002905092915050565b60008060008360000361405a5750600160801b91506107359050565b5082600081121561406c579015906000035b6210000081101561425c57600160801b9250846001600160801b0381111561409657911591600019045b60018216156140a75792830260801c925b800260801c60028216156140bd5792830260801c925b800260801c60048216156140d35792830260801c925b800260801c60088216156140e95792830260801c925b800260801c60108216156140ff5792830260801c925b800260801c60208216156141155792830260801c925b800260801c604082161561412b5792830260801c925b8002608090811c908216156141425792830260801c925b800260801c6101008216156141595792830260801c925b800260801c6102008216156141705792830260801c925b800260801c6104008216156141875792830260801c925b800260801c61080082161561419e5792830260801c925b800260801c6110008216156141b55792830260801c925b800260801c6120008216156141cc5792830260801c925b800260801c6140008216156141e35792830260801c925b800260801c6180008216156141fa5792830260801c925b800260801c620100008216156142125792830260801c925b800260801c6202000082161561422a5792830260801c925b800260801c620400008216156142425792830260801c925b800260801c6208000082161561425a5792830260801c925b505b8260000361428757604051631dba598d60e11b81526004810186905260248101859052604401611802565b81614292578261277c565b61277c83600019615f60565b6000620fffff8262ffffff1611156142c957604051631c07203f60e01b815260040160405180910390fd5b7fffffffffffffffffffffffffff00000fffffffffffffffffffffffffffffffff831672fffff000000000000000000000000000000000608484901b1617611586565b60008061431883614711565b90507fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff84167affffffffff0000000000000000000000000000000000000000000060b083901b16176122b3565b806001600160801b03811681146133bf57604051632f45db3d60e21b815260040160405180910390fd5b60008161439b81614bbc565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b600060ff831684811b9061ffff6101008290031686901c90612c489087906001901b86858561519c565b60008060006143ff8686615248565b9150915081600014614415578360ff1682901c92505b801561445557600160ff85161b811061444157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b60006001600160801b038316608084901c61277c828286615267565b60008061ffff600884901c1660ff8085169081146144cf57600082815260028701602052604081205493506144af84836152d2565b905060001981146144cd5760089290921b9091179250610735915050565b505b5060ff80821690600883901c90821461454957600081815260018801602052604081205494506144ff85846152d2565b9050600019811461454757600882901b8117600081815260028a0160205260409020549550935061452f856152e1565b60ff1660088560001c901b1795505050505050610735565b505b60ff818116925082146145b95786549350600061456685846152d2565b905060001981146145b75760008181526001890160205260409020549450905080614590856152e1565b60ff16600883901b17600081815260028a0160205260409020549550935061452f856152e1565b505b5060009695505050505050565b60008061ffff600884901c1660ff8416801561461957600082815260028701602052604081205493506145f9848361537d565b905060001981146146175760089290921b9091179250610735915050565b505b5060ff8116600882901c81156146785760008181526001880160205260408120549450614646858461537d565b9050600019811461467657600882901b8117600081815260028a0160205260409020549550935061452f8561538d565b505b60ff8116915081156146e757865493506000614694858461537d565b905060001981146146e557600081815260018901602052604090205494509050806146be8561538d565b60ff16600883901b17600081815260028a0160205260409020549550935061452f8561538d565b505b5062ffffff9695505050505050565b600060d882901c610735565b60006107358260d01c60ff1690565b8064ffffffffff811681146133bf576040516350dbfc8760e11b815260040160405180910390fd5b6000806147458461286d565b90508062ffffff168362ffffff1611614760578281036122b3565b90910392915050565b64ffffffffff841662ffffff84811682029184821681029184160261478d886148c4565b6147979084615c86565b92506147a2886148da565b6147ac9083615c86565b91506147b7886148f0565b6147c19082615c86565b9050955095509592505050565b60d082901b7aff000000000000000000000000000000000000000000000000000016609084901b79ffffffffffffffff00000000000000000000000000000000000016605086901b71ffffffffffffffff0000000000000000000016601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b7fffffffffff00000000000000000000000000000000000000000000000000000016811761299b565b8161487c8161489f565b818461ffff6000198601811690811061489757614897615bdd565b015550505050565b8061ffff166000036117c55760405163944e113960e01b815260040160405180910390fd5b60006107358260101c67ffffffffffffffff1690565b60006107358260501c67ffffffffffffffff1690565b60006107358260901c67ffffffffffffffff1690565b6000808080614916600186615f74565b61ffff16905060008060008961ffff1690505b8385116149d4576000600161493e8688615ecd565b901c9050888183089a508b61ffff808d1690811061495e5761495e615bdd565b0154935061496b84612ec8565b92508964ffffffffff168364ffffffffff1611156149955761498e600182615ee0565b94506149ce565b8964ffffffffff168364ffffffffff1610156149bd576149b6816001615ecd565b95506149ce565b838497509750505050505050614a4f565b50614929565b8164ffffffffff168964ffffffffff161015614a25578961ffff166000036149fa578799505b8a61ffff6000198c018116908110614a1457614a14615bdd565b015483965096505050505050614a4f565b8760018b089950828b61ffff808d16908110614a4357614a43615bdd565b01549650965050505050505b94509492505050565b600080600080614a67886148c4565b67ffffffffffffffff1690506000614a7e896148da565b67ffffffffffffffff1690506000614a958a6148f0565b67ffffffffffffffff1690508664ffffffffff16600003614abc5791945092509050614bb2565b6000614ac78a6148c4565b67ffffffffffffffff1690506000614ade8b6148da565b67ffffffffffffffff1690506000614af58c6148f0565b67ffffffffffffffff1690508a64ffffffffff16600003614b205791975095509350614bb292505050565b6000614b3664ffffffffff808d16908e16615ecd565b9050808b64ffffffffff1685028d64ffffffffff1689020181614b5b57614b5b615c10565b049950808b64ffffffffff1684028d64ffffffffff1688020181614b8157614b81615c10565b049850808b64ffffffffff1683028d64ffffffffff1687020181614ba757614ba7615c10565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b031611156117c557604051638630bc6b60e01b815260040160405180910390fd5b6000806000614bfd8686615248565b91509150612c48868686858561519c565b600081600103614c215750607f19919050565b81600003614c425760405163125946cf60e11b815260040160405180910390fd5b60019190911c9060006f800000000000000000000000000000008310614c6a57506001614c85565b5060001982600160fe1b81614c8157614c81615c10565b0492505b6000614c94607f85901c61538d565b707f80000000000000000000000000000000607f82901b16935060ff16905083811c6f800000000000000000000000000000008114614d10576f400000000000000000000000000000005b6000811315614d0e57908002607f1c90600160801b8210614d06579384019360019190911c905b60011d614cdf565b505b50500260011b919050565b60008080614d338460581c67ffffffffffffffff1690565b9250614d498460181c67ffffffffffffffff1690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff841180614d845750670de0b6b3a76400008367ffffffffffffffff16115b80614da05750670de0b6b3a76400008267ffffffffffffffff16115b1561137b57604051637752557f60e11b815260040160405180910390fd5b6000806001600160801b038516608086901c82614ddc838389615267565b905080600003614df6575060009350839250614a4f915050565b6000614e028a8961445e565b9050801580614e0f575086155b15614e2b57614e1d82615428565b899550955050505050614a4f565b614e36828883614bee565b95506000614e4587838a61549a565b905080831115614ee4576000614e5b8285615ee0565b9050600160801b8110614e9c57608081901c858111614e7a5780614e7c565b855b9050614e888187615ee0565b9550614e98608082901b83615ee0565b9150505b898110614ed0576000614eaf8b83615f60565b9050868111614ebe5780614ec0565b865b9050614ecc8188615ee0565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614f16614f108d8d61243a565b8b61445e565b1115614f355760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b600081600003614f5657506000612c48565b6001600160801b038416608085901c600080614f8861075d614f788d8b61243a565b88614f83818c615ecd565b613445565b91509150836001600160801b0316826001600160801b03161115614feb576000614fce614fb58c8c613167565b614fbf8487615cc7565b6001600160801b0316906154b7565b9050614fe3816001600160801b031660801b90565b95505061502b565b826001600160801b0316816001600160801b0316111561502b57600061501e6150148c8c613167565b614fbf8588615cc7565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff161080156150555750608083901b15155b8061507a57508162ffffff168162ffffff1611801561507a57506001600160801b0383115b156109105760405163227bd87160e21b815262ffffff82166004820152602401611802565b61ffff600882901c166000818152600284016020526040812054909190600160ff85161b8117808214613553576000838152600287016020526040812082905582900361354757600883901c6000818152600180890160205260408220805460ff88169290921b821790559350839003613545578654600160ff83161b1787555060019350505050610735565b600080600052602060008351602085016000875af1905080801561516d573d80156151605760016000511483169250615167565b843b151592505b5061517d565b3d1561517d573d6000803e3d6000fd5b50806109105760405163197138bd60e11b815260040160405180910390fd5b6000816000036151bd578383816151b5576151b5615c10565b04905061277c565b8382106151dd576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6000806000198385098385029250828110838203039150509250929050565b600083156152a257508083028184828161528357615283615c10565b04146152a2576040516363f1e01f60e01b815260040160405180910390fd5b82156115865760809290921b91820182811015611586576040516363f1e01f60e01b815260040160405180910390fd5b600061158683600184016154f8565b60008160801b80156152f557608091508092505b8260401b90508015615308579150604001815b8260201b9050801561531b579150602001815b8260101b9050801561532e579150601001815b8260081b90508015615341579150600801815b8260041b90508015615354579150600401815b8260021b90508015615367579150600201815b508160011b15615375576001015b60ff03919050565b6000611586836000198401615526565b60006001600160801b038211156153a65750608090811c905b67ffffffffffffffff8211156153be57604091821c91015b63ffffffff8211156153d257602091821c91015b61ffff8211156153e457601091821c91015b60ff8211156153f557600891821c91015b600f82111561540657600491821c91015b600382111561541757600291821c91015b60018211156133bf57600101919050565b60008160000361543a57506000919050565b60006154458361538d565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff1690508282106154945782611586565b50919050565b60006154a7848484614bee565b9050818061311e5761311e615c10565b6000816154c381614bbc565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a764000091909101026131c3565b60ff81169190911c906000821561551c5781615513846152e1565b0160ff16611586565b5060001992915050565b60ff8181031691821b91600090831561554c57806155438561538d565b60ff16036122b3565b506000199392505050565b6001600160a01b03811681146117c557600080fd5b6000806040838503121561557f57600080fd5b823561558a81615557565b946020939093013593505050565b60005b838110156155b357818101518382015260200161559b565b50506000910152565b60208152600082518060208401526155db816040850160208701615598565b601f01601f19169190910160400192915050565b803562ffffff811681146133bf57600080fd5b60006020828403121561561457600080fd5b611586826155ef565b60008083601f84011261562f57600080fd5b50813567ffffffffffffffff81111561564757600080fd5b6020830191508360208260051b8501011115612eb557600080fd5b6000806000806000806080878903121561567b57600080fd5b863561568681615557565b9550602087013561569681615557565b9450604087013567ffffffffffffffff808211156156b357600080fd5b6156bf8a838b0161561d565b909650945060608901359150808211156156d857600080fd5b506156e589828a0161561d565b979a9699509497509295939492505050565b60008083601f84011261570957600080fd5b50813567ffffffffffffffff81111561572157600080fd5b602083019150836020828501011115612eb557600080fd5b60008060006040848603121561574e57600080fd5b83359250602084013567ffffffffffffffff81111561576c57600080fd5b615778868287016156f7565b9497909650939450505050565b6000806000806060858703121561579b57600080fd5b84356157a681615557565b9350602085013567ffffffffffffffff8111156157c257600080fd5b6157ce8782880161561d565b90945092505060408501356157e281615557565b939692955090935050565b600081518084526020808501945080840160005b8381101561581d57815187529582019590820190600101615801565b509495945050505050565b83815282602082015260606040820152600061277c60608301846157ed565b803561ffff811681146133bf57600080fd5b600080600080600080600080610100898b03121561587657600080fd5b61587f89615847565b975061588d60208a01615847565b965061589b60408a01615847565b95506158a960608a01615847565b94506158b760808a016155ef565b93506158c560a08a01615847565b92506158d360c08a016155ef565b91506158e160e08a016155ef565b90509295985092959890939650565b6000806000806040858703121561590657600080fd5b843567ffffffffffffffff8082111561591e57600080fd5b61592a8883890161561d565b9096509450602087013591508082111561594357600080fd5b506159508782880161561d565b95989497509550505050565b60208152600061158660208301846157ed565b803580151581146133bf57600080fd5b6000806040838503121561599257600080fd5b61599b8361596f565b915060208301356159ab81615557565b809150509250929050565b600080600080600080600060e0888a0312156159d157600080fd5b6159da88615847565b96506159e860208901615847565b95506159f660408901615847565b9450615a0460608901615847565b9350615a12608089016155ef565b9250615a2060a08901615847565b9150615a2e60c089016155ef565b905092959891949750929550565b600060208284031215615a4e57600080fd5b813564ffffffffff8116811461158657600080fd5b60008060408385031215615a7657600080fd5b615a7f8361596f565b9150612eb2602084016155ef565b60008060408385031215615aa057600080fd5b82356001600160801b0381168114615ab757600080fd5b9150612eb26020840161596f565b600060208284031215615ad757600080fd5b5035919050565b600060208284031215615af057600080fd5b61158682615847565b60008060408385031215615b0c57600080fd5b8235615ab781615557565b60008060408385031215615b2a57600080fd5b823561599b81615557565b60008060008060608587031215615b4b57600080fd5b8435615b5681615557565b935060208501359250604085013567ffffffffffffffff811115615b7957600080fd5b615950878288016156f7565b600060208284031215615b9757600080fd5b815161158681615557565b634e487b7160e01b600052604160045260246000fd5b604081526000615bcb60408301856157ed565b828103602084015261277c81856157ed565b634e487b7160e01b600052603260045260246000fd5b600060208284031215615c0557600080fd5b813561158681615557565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b64ffffffffff8281168282160390808211156131c8576131c8615c26565b67ffffffffffffffff818116838216028082169190828114615c7e57615c7e615c26565b505092915050565b67ffffffffffffffff8181168382160190808211156131c8576131c8615c26565b6001600160801b038181168382160190808211156131c8576131c8615c26565b6001600160801b038281168282160390808211156131c8576131c8615c26565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615d1957600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615d46604083018688615ce7565b828103602084015261299b818587615ce7565b604081526000615d6d604083018587615ce7565b8281036020840152612c4881856157ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015284608083015260c060a0830152613f6f60c083018486615d7f565b60008251615dfb818460208701615598565b9190910192915050565b600060208284031215615e1757600080fd5b5051919050565b60006001600160a01b03808a168352808916602084015280881660408401525060a06060830152615e5360a083018688615ce7565b8281036080840152615e66818587615ce7565b9a9950505050505050505050565b83815260406020820152600061277c604083018486615d7f565b60006001600160a01b03808816835280871660208401525060806040830152615ebb608083018587615ce7565b90508260608301529695505050505050565b8082018082111561073557610735615c26565b8181038181111561073557610735615c26565b64ffffffffff8181168382160190808211156131c8576131c8615c26565b600061ffff80841680615f2657615f26615c10565b92169190910692915050565b600082615f4157615f41615c10565b600160ff1b821460001984141615615f5b57615f5b615c26565b500590565b600082615f6f57615f6f615c10565b500490565b61ffff8281168282160390808211156131c8576131c8615c2656fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026bafe6c73ad262d19a9bba75b29e329ca46413bc328c4b1008fce1ae287a3b164736f6c6343000814003360e06040523480156200001157600080fd5b5060405162004c8038038062004c8083398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051614afe6200018260003960008181610194015281816102f3015281816105e2015281816106c00152818161079c015281816108df01528181610c6c01528181611288015281816113240152818161148b0152818161150e0152818161185101528181611ae601528181611dcf0152818161272801528181612ac70152612b450152600081816104900152613a4701526000818161035b0152818161102d015281816111da01528181611fc901526133230152614afe6000f3fe6080604052600436106101845760003560e01c806392fe8e70116100d6578063bb558a9f1161007f578063e038e6dc11610059578063e038e6dc146104f4578063e9361c0814610507578063f96fe9251461052757600080fd5b8063bb558a9f14610481578063c22159b6146104b4578063d0e380f2146104d457600080fd5b8063a0d376cf116100b0578063a0d376cf1461042e578063a3c7271a1461044e578063b066ea7c1461046e57600080fd5b806392fe8e70146103a4578063964f987c146103c45780639ab6156b1461040e57600080fd5b806362c067671161013857806381c2fdfb1161011257806381c2fdfb1461031757806388cc58e41461034c5780638efc2b2c1461037f57600080fd5b806362c067671461028c578063659ac74b146102ac5780636c9c0078146102e457600080fd5b80632a443fae116101695780632a443fae1461022c5780633dc8f8ec1461024c5780634b8018701461026c57600080fd5b80631a24f9a9146101d95780632075ad221461020c57600080fd5b366101d457336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101d257604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101e557600080fd5b506101f96101f436600461401a565b61055b565b6040519081526020015b60405180910390f35b61021f61021a366004614085565b61085d565b6040516102039190614121565b34801561023857600080fd5b506101f961024736600461401a565b610abd565b34801561025857600080fd5b5061021f61026736600461401a565b610bea565b34801561027857600080fd5b506101f961028736600461401a565b610df0565b34801561029857600080fd5b506101d26102a7366004614134565b61102b565b3480156102b857600080fd5b506102cc6102c73660046141a1565b61119b565b6040516001600160a01b039091168152602001610203565b3480156102f057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b34801561032357600080fd5b506103376103323660046141fd565b611252565b60408051928352602083019190915201610203565b34801561035857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b61039261038d3660046142b8565b6113ab565b604051610203969594939291906142fb565b3480156103b057600080fd5b5061021f6103bf36600461401a565b6115fa565b3480156103d057600080fd5b506103e46103df366004614368565b61173f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610203565b34801561041a57600080fd5b506101f961042936600461401a565b6117cf565b34801561043a57600080fd5b506103e4610449366004614368565b611943565b34801561045a57600080fd5b506103926104693660046142b8565b611987565b6101f961047c366004614085565b611a64565b34801561048d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cc565b3480156104c057600080fd5b506103376104cf3660046143b3565b611bde565b3480156104e057600080fd5b506101f96104ef36600461447b565b611cd4565b6101f9610502366004614085565b611d4d565b34801561051357600080fd5b506101d2610522366004614500565b611fc7565b34801561053357600080fd5b50610547610542366004614595565b6120ea565b60405162ffffff9091168152602001610203565b6000818042111561058d5760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b845151859015806105a5575080515160208201515114155b806105c257506040810151518151516105bf9060016145d7565b14155b156105e05760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610625576106256145ea565b60200260200101516001600160a01b03161461068457604086015186515181518110610653576106536145ea565b602002602001015160405163cfec0e0160e01b815260040161058491906001600160a01b0391909116815260200190565b600061069d876000015188602001518960400151612156565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190614600565b90506107718860400151600081518110610747576107476145ea565b60200260200101513384600081518110610763576107636145ea565b60200260200101518d612266565b6107858289602001518a6040015130612287565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f9190614600565b6108199190614619565b945084891115610846576040516313fab00360e21b8152600481018a905260248101869052604401610584565b6108508786612706565b5050505095945050505050565b6060818042111561088a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b845151859015806108a2575080515160208201515114155b806108bf57506040810151518151516108bc9060016145d7565b14155b156108dd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061091e5761091e6145ea565b60200260200101516001600160a01b03161461094b578560400151600081518110610653576106536145ea565b6000610964876000015188602001518960400151612156565b905061097a87602001518289604001518b61279a565b93503484600081518110610990576109906145ea565b602002602001015111156109de5734846000815181106109b2576109b26145ea565b602002602001015160405163194ee21960e31b8152600401610584929190918252602082015260400190565b610a1c816000815181106109f4576109f46145ea565b602002602001015185600081518110610a0f57610a0f6145ea565b6020026020010151612ab9565b6000610a338289602001518a60400151888b612b70565b905088811015610a60576040516313fab00360e21b8152600481018a905260248101829052604401610584565b84600081518110610a7357610a736145ea565b6020026020010151341115610ab157610ab13386600081518110610a9957610a996145ea565b602002602001015134610aac9190614619565b612e8d565b50505050949350505050565b60008180421115610aea5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610b02575080515160208201515114155b80610b1f5750604081015151815151610b1c9060016145d7565b14155b15610b3d5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610b56876000015188602001518960400151612156565b9050610b9c8760400151600081518110610b7257610b726145ea565b60200260200101513383600081518110610b8e57610b8e6145ea565b60200260200101518c612266565b610bb1898289602001518a604001518a612f1f565b935083881115610bde576040516313fab00360e21b81526004810189905260248101859052604401610584565b50505095945050505050565b60608180421115610c175760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610c2f575080515160208201515114155b80610c4c5750604081015151815151610c499060016145d7565b14155b15610c6a5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610caf57610caf6145ea565b60200260200101516001600160a01b031614610cdd57604086015186515181518110610653576106536145ea565b6000610cf6876000015188602001518960400151612156565b9050610d0c87602001518289604001518c61279a565b93508784600081518110610d2257610d226145ea565b60200260200101511115610d445787846000815181106109b2576109b26145ea565b610da28760400151600081518110610d5e57610d5e6145ea565b60200260200101513383600081518110610d7a57610d7a6145ea565b602002602001015187600081518110610d9557610d956145ea565b6020026020010151612266565b6000610db98289602001518a604001518830612b70565b905089811015610de6576040516313fab00360e21b8152600481018b905260248101829052604401610584565b6108508782612706565b60008180421115610e1d5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580610e35575080515160208201515114155b80610e525750604081015151815151610e4f9060016145d7565b14155b15610e705760405163b91b4d4d60e01b815260040160405180910390fd5b6000610e89876000015188602001518960400151612156565b905060008760400151825181518110610ea457610ea46145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190614600565b9050610f658960400151600081518110610f3b57610f3b6145ea565b60200260200101513385600081518110610f5757610f576145ea565b60200260200101518e612266565b610f79838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190614600565b610ff09190614619565b9550858a111561101d576040516313fab00360e21b8152600481018b905260248101879052604401610584565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad919061462c565b6001600160a01b0316336001600160a01b0316146110de57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b03831661110e5760001981146110fb57806110fd565b475b90506111098282612e8d565b505050565b600019811461111d5780611185565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614600565b90506111096001600160a01b038416838361328c565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061462c565b95945050505050565b60008082804211156112805760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b60006112b38c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660016132f2565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611319919061462c565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614905080611358579899985b600080611369848e8e8e8e306133df565b915091508261137957808261137c565b81815b80975081985050505050506113928c8786613541565b61139c8684612706565b50509850989650505050505050565b6000808080606080826113e06113c460208a018a614649565b6113d460408b0160208c01614649565b8a6040013560016132f2565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611444919061462c565b6001600160a01b031661145a60208a018a614649565b6001600160a01b0316146114815760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166114b860208a018a614649565b6001600160a01b03161480156114d15750348860600135145b15611504576114f56114e960408a0160208b01614649565b33838b60800135612266565b6114ff8134612ab9565b6115db565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153e60408a0160208b01614649565b6001600160a01b03161480156115575750348860800135145b15611578576114f561156c60208a018a614649565b33838b60600135612266565b6115856020890189614649565b61159560408a0160208b01614649565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610584565b6115e58882613562565b949d939c50919a509850965090945092505050565b606081804211156116275760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b8451518590158061163f575080515160208201515114155b8061165c57506040810151518151516116599060016145d7565b14155b1561167a5760405163b91b4d4d60e01b815260040160405180910390fd5b6000611693876000015188602001518960400151612156565b90506116a987602001518289604001518c61279a565b935087846000815181106116bf576116bf6145ea565b602002602001015111156116e15787846000815181106109b2576109b26145ea565b6116fb8760400151600081518110610d5e57610d5e6145ea565b60006117128289602001518a60400151888b612b70565b905089811015610850576040516313fab00360e21b8152600481018b905260248101829052604401610584565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190614666565b91989097509095509350505050565b600081804211156117fc5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611814575080515160208201515114155b80611831575060408101515181515161182e9060016145d7565b14155b1561184f5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611894576118946145ea565b60200260200101516001600160a01b0316146118c257604086015186515181518110610653576106536145ea565b60006118db876000015188602001518960400151612156565b90506118f78760400151600081518110610b7257610b726145ea565b61190c898289602001518a6040015130612f1f565b935083881115611939576040516313fab00360e21b81526004810189905260248101859052604401610584565b610bde8685612706565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f89060440161177f565b6000808080606080826119a06113c460208a018a614649565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061462c565b6001600160a01b0316611a1a60208a018a614649565b6001600160a01b031614611a415760405163b33f8ab960e01b815260040160405180910390fd5b611a5161156c60208a018a614649565b6115db6114e960408a0160208b01614649565b60008180421115611a915760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611aa9575080515160208201515114155b80611ac65750604081015151815151611ac39060016145d7565b14155b15611ae45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611b2557611b256145ea565b60200260200101516001600160a01b031614611b52578560400151600081518110610653576106536145ea565b6000611b6b876000015188602001518960400151612156565b9050611b9181600081518110611b8357611b836145ea565b602002602001015134612ab9565b611ba6348289602001518a604001518a612f1f565b935083881115611bd3576040516313fab00360e21b81526004810189905260248101859052604401610584565b505050949350505050565b6000808280421115611c0c5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6000611c1f8d8d8d61ffff1660016132f2565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061462c565b6001600160a01b03168e6001600160a01b0316141590508015611ca6579899985b611cb4828c8c8c8c8c6133df565b90955093508015611cc3579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614600565b90505b92915050565b60008180421115611d7a5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b84515185901580611d92575080515160208201515114155b80611daf5750604081015151815151611dac9060016145d7565b14155b15611dcd5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611e0e57611e0e6145ea565b60200260200101516001600160a01b031614611e3b578560400151600081518110610653576106536145ea565b6000611e54876000015188602001518960400151612156565b905060008760400151825181518110611e6f57611e6f6145ea565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190614600565b9050611f0283600081518110611b8357611b836145ea565b611f16838a602001518b604001518b612287565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190614600565b611f8d9190614619565b9550858a1115611fba576040516313fab00360e21b8152600481018b905260248101879052604401610584565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612049919061462c565b6001600160a01b0316336001600160a01b03161461207a57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906120b0903090899089908990899089906004016146f3565b600060405180830381600087803b1580156120ca57600080fd5b505af11580156120de573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614733565b6060835167ffffffffffffffff81111561217257612172613d98565b60405190808252806020026020018201604052801561219b578160200160208202803683370190505b509050600080836000815181106121b4576121b46145ea565b6020026020010151905060005b835181101561225c578192508481600101815181106121e2576121e26145ea565b6020026020010151915061222a8383898481518110612203576122036145ea565b602002602001015189858151811061221d5761221d6145ea565b6020026020010151613a06565b84828151811061223c5761223c6145ea565b6001600160a01b03909216602092830291909101909101526001016121c1565b5050509392505050565b8015612281576122816001600160a01b038516848484613b06565b50505050565b6000806000806000866000815181106122a2576122a26145ea565b6020026020010151905060005b89518110156120de578981815181106122ca576122ca6145ea565b602002602001015192508881815181106122e6576122e66145ea565b60200260200101519450819550878160010181518110612308576123086145ea565b602002602001015191508951816001011461233f57898160010181518110612332576123326145ea565b6020026020010151612341565b865b9350600085600181111561235757612357614750565b036125fd57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c1919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156124f6576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa15801561243d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124619190614600565b0390506000612471828585613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050505050506125f6565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125659190614600565b0390506000612575828486613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b5050505050505b50506126fe565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266e919061462c565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af11580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc9190614600565b505b6001016122af565b80600003612712575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050506127968282612e8d565b5050565b6060825167ffffffffffffffff8111156127b6576127b6613d98565b6040519080825280602002602001820160405280156127df578160200160208202803683370190505b50905081818551815181106127f6576127f66145ea565b602090810291909101015283515b8015612ab057600084612818600184614619565b81518110612828576128286145ea565b602002602001015190506000876001846128429190614619565b81518110612852576128526145ea565b6020026020010151905060008760018561286c9190614619565b8151811061287c5761287c6145ea565b602002602001015190506000600181111561289957612899614750565b8260018111156128ab576128ab614750565b036129cd57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612915919061477d565b506001600160701b031691506001600160701b0316915088868151811061293e5761293e6145ea565b60200260200101516001600160a01b0316856001600160a01b0316111561296157905b6000878781518110612975576129756145ea565b60200260200101519050612994838383613c159092919063ffffffff16565b6001600160801b0316886129a960018a614619565b815181106129b9576129b96145ea565b602002602001018181525050505050612a9a565b612a66818686815181106129e3576129e36145ea565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a57919061462c565b6001600160a01b03161461173f565b50506001600160801b031685612a7d600187614619565b81518110612a8d57612a8d6145ea565b6020026020010181815250505b5050508080612aa8906147c2565b915050612804565b50949350505050565b80600003612ac5575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b2057600080fd5b505af1158015612b34573d6000803e3d6000fd5b506127969350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691508490508361328c565b60008060008060008088600081518110612b8c57612b8c6145ea565b6020026020010151905060005b8b51811015612e7e578b8181518110612bb457612bb46145ea565b602002602001015193508a8181518110612bd057612bd06145ea565b60200260200101519250819550898160010181518110612bf257612bf26145ea565b602002602001015191508b518160010114612c29578b8160010181518110612c1c57612c1c6145ea565b6020026020010151612c2b565b875b94506000836001811115612c4157612c41614750565b03612d4c57888160010181518110612c5b57612c5b6145ea565b60200260200101519650816001600160a01b0316866001600160a01b03161015612cff5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b158015612ce257600080fd5b505af1158015612cf6573d6000803e3d6000fd5b50505050612e76565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a401612cc8565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db0919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291612e4a918916906353c059a0906044015b6020604051808303816000875af1158015612e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e369190614600565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612e6e57809950612e72565b8199505b5050505b600101612b99565b50505050505095945050505050565b80600003612e99575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612ee6576040519150601f19603f3d011682016040523d82523d6000602084013e612eeb565b606091505b50509050806111095760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610584565b60008060008060008087600081518110612f3b57612f3b6145ea565b602002602001015190508a955060005b8a51811015612e7e578a8181518110612f6657612f666145ea565b60200260200101519250898181518110612f8257612f826145ea565b60200260200101519450819550888160010181518110612fa457612fa46145ea565b602002602001015191508a518160010114612fdb578a8160010181518110612fce57612fce6145ea565b6020026020010151612fdd565b875b93506000856001811115612ff357612ff3614750565b036131ad57600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305d919061477d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561311c57613099898383613b7b565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156130ff57600080fd5b505af1158015613113573d6000803e3d6000fd5b505050506131a6565b613127898284613b7b565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050505b5050613284565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613211919061462c565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291613258918816906353c059a090604401612df3565b6001600160801b031691506001600160801b03169150821561327c57809950613280565b8199505b5050505b600101612f4b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526122818482613cb4565b60405163704037bd60e01b81526001600160a01b0385811660048301528481166024830152604482018490526000917f00000000000000000000000000000000000000000000000000000000000000009091169063704037bd90606401608060405180830381865afa15801561336c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339091906147d9565b6020015190506001600160a01b0381166133d757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613416949392919061485e565b6000604051808303816000875af1158015613435573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261345d919081019061489c565b905060005b81518110156134f157613494828281518110613480576134806145ea565b60200260200101516001600160801b031690565b6134a7906001600160801b0316856145d7565b93506134cc8282815181106134be576134be6145ea565b602002602001015160801c90565b6134df906001600160801b0316846145d7565b92506134ea81614922565b9050613462565b50878310806134ff57508682105b15613535576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610584565b50965096945050505050565b8060000361354e57505050565b6111096001600160a01b038416838361328c565b600080600080606080876101c001358042111561359b5760405163dae7ca7d60e01b815260048101829052426024820152604401610584565b6135a96101408a018a61493b565b90506135b96101208b018b61493b565b90501415806135e657506135d16101608a018a61493b565b90506135e16101208b018b61493b565b905014155b156136045760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613620575062ffffff6101008a0135115b1561364f5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610584565b600061365f6101208b018b61493b565b905067ffffffffffffffff81111561367957613679613d98565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b5090506136b36101208b018b61493b565b905067ffffffffffffffff8111156136cd576136cd613d98565b6040519080825280602002602001820160405280156136f6578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d9190614733565b62ffffff169050808b61010001358c60e0013501108061378757508a60e001358b61010001358201105b156137bd57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610584565b60005b82518110156138c05760006137d96101208e018e61493b565b838181106137e9576137e96145ea565b90506020020135830190506000811280613805575062ffffff81115b15613826576040516370a82e6160e11b815260048101829052602401610584565b80878381518110613839576138396145ea565b602090810291909101015261389a6138556101408f018f61493b565b84818110613865576138656145ea565b905060200201358e80610160019061387d919061493b565b8581811061388d5761388d6145ea565b9050602002013583613d24565b8483815181106138ac576138ac6145ea565b6020908102919091010152506001016137c0565b50506000808a6001600160a01b031663383d15c58d6101800160208101906138e89190614649565b858f6101a00160208101906138fd9190614649565b6040518463ffffffff1660e01b815260040161391b93929190614985565b6000604051808303816000875af115801561393a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261396291908101906149e9565b9650909250905060006139758383613d5e565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061399f57508c60c001358a105b156139db576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610584565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b600080826001811115613a1b57613a1b614750565b03613afa5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab2919061462c565b90506001600160a01b038116613af557604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610584565b6133d7565b611249858585856132f2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052613b748582613cb4565b5050505050565b600083600003613b9e5760405163b937356b60e01b815260040160405180910390fd5b821580613ba9575081155b15613bc757604051637b03555560e01b815260040160405180910390fd5b6000613bd5856103e5614a8f565b90506000613be38483614a8f565b9050600082613bf4876103e8614a8f565b613bfe91906145d7565b9050613c0a8183614aa6565b979650505050505050565b600083600003613c385760405163b937356b60e01b815260040160405180910390fd5b821580613c43575081155b15613c6157604051637b03555560e01b815260040160405180910390fd5b6000613c6d8585614a8f565b613c79906103e8614a8f565b90506000613c878685614619565b613c93906103e5614a8f565b9050613c9f8183614aa6565b613caa9060016145d7565b9695505050505050565b600080600052602060008351602085016000875af19050808015613cf5573d8015613ce85760016000511483169250613cef565b843b151592505b50613d05565b3d15613d05573d6000803e3d6000fd5b50806111095760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff821681176133d7565b80820382811180613d7a57506001600160801b03808416908216115b15611d475760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613dd157613dd1613d98565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e0057613e00613d98565b604052919050565b600067ffffffffffffffff821115613e2257613e22613d98565b5060051b60200190565b600082601f830112613e3d57600080fd5b81356020613e52613e4d83613e08565b613dd7565b82815260059290921b84018101918181019086841115613e7157600080fd5b8286015b84811015613e8c5780358352918301918301613e75565b509695505050505050565b6001600160a01b0381168114613eac57600080fd5b50565b8035613eba81613e97565b919050565b600082601f830112613ed057600080fd5b81356020613ee0613e4d83613e08565b82815260059290921b84018101918181019086841115613eff57600080fd5b8286015b84811015613e8c578035613f1681613e97565b8352918301918301613f03565b600060608284031215613f3557600080fd5b613f3d613dae565b9050813567ffffffffffffffff80821115613f5757600080fd5b613f6385838601613e2c565b8352602091508184013581811115613f7a57600080fd5b8401601f81018613613f8b57600080fd5b8035613f99613e4d82613e08565b81815260059190911b82018401908481019088831115613fb857600080fd5b928501925b82841015613fe457833560028110613fd55760008081fd5b82529285019290850190613fbd565b808688015250505050604084013591508082111561400157600080fd5b5061400e84828501613ebf565b60408301525092915050565b600080600080600060a0868803121561403257600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561405757600080fd5b61406388828901613f23565b935050606086013561407481613e97565b949793965091946080013592915050565b6000806000806080858703121561409b57600080fd5b84359350602085013567ffffffffffffffff8111156140b957600080fd5b6140c587828801613f23565b93505060408501356140d681613e97565b9396929550929360600135925050565b600081518084526020808501945080840160005b83811015614116578151875295820195908201906001016140fa565b509495945050505050565b602081526000611d4460208301846140e6565b60008060006060848603121561414957600080fd5b833561415481613e97565b9250602084013561416481613e97565b929592945050506040919091013590565b62ffffff81168114613eac57600080fd5b61ffff81168114613eac57600080fd5b8035613eba81614186565b600080600080608085870312156141b757600080fd5b84356141c281613e97565b935060208501356141d281613e97565b925060408501356141e281614175565b915060608501356141f281614186565b939692955090935050565b600080600080600080600080610100898b03121561421a57600080fd5b883561422581613e97565b9750602089013561423581614186565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561426057600080fd5b61426c8c838d01613e2c565b955060a08b013591508082111561428257600080fd5b5061428f8b828c01613e2c565b93505060c08901356142a081613e97565b8092505060e089013590509295985092959890939650565b6000602082840312156142ca57600080fd5b813567ffffffffffffffff8111156142e157600080fd5b82016101e081850312156142f457600080fd5b9392505050565b86815285602082015284604082015283606082015260c06080820152600061432660c08301856140e6565b82810360a084015261433881856140e6565b9998505050505050505050565b6001600160801b0381168114613eac57600080fd5b8015158114613eac57600080fd5b60008060006060848603121561437d57600080fd5b833561438881613e97565b9250602084013561439881614345565b915060408401356143a88161435a565b809150509250925092565b60008060008060008060008060006101208a8c0312156143d257600080fd5b89356143dd81613e97565b985060208a01356143ed81613e97565b97506143fb60408b01614196565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561442657600080fd5b6144328d838e01613e2c565b955060c08c013591508082111561444857600080fd5b506144558c828d01613e2c565b93505061446460e08b01613eaf565b91506101008a013590509295985092959850929598565b6000806040838503121561448e57600080fd5b823561449981613e97565b915060208301356144a981614175565b809150509250929050565b60008083601f8401126144c657600080fd5b50813567ffffffffffffffff8111156144de57600080fd5b6020830191508360208260051b85010111156144f957600080fd5b9250929050565b6000806000806000806080878903121561451957600080fd5b863561452481613e97565b9550602087013561453481613e97565b9450604087013567ffffffffffffffff8082111561455157600080fd5b61455d8a838b016144b4565b9096509450606089013591508082111561457657600080fd5b5061458389828a016144b4565b979a9699509497509295939492505050565b600080604083850312156145a857600080fd5b82356145b381613e97565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611d4757611d476145c1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561461257600080fd5b5051919050565b81810381811115611d4757611d476145c1565b60006020828403121561463e57600080fd5b81516142f481613e97565b60006020828403121561465b57600080fd5b81356142f481613e97565b60008060006060848603121561467b57600080fd5b835161468681614345565b602085015190935061469781614345565b60408501519092506143a881614345565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156146da57600080fd5b8260051b80836020870137939093016020019392505050565b60006001600160a01b038089168352808816602084015250608060408301526147206080830186886146a8565b82810360608401526143388185876146a8565b60006020828403121561474557600080fd5b81516142f481614175565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b0381168114613eba57600080fd5b60008060006060848603121561479257600080fd5b61479b84614766565b92506147a960208501614766565b9150604084015163ffffffff811681146143a857600080fd5b6000816147d1576147d16145c1565b506000190190565b6000608082840312156147eb57600080fd5b6040516080810181811067ffffffffffffffff8211171561480e5761480e613d98565b604052825161481c81614186565b8152602083015161482c81613e97565b6020820152604083015161483f8161435a565b604082015260608301516148528161435a565b60608201529392505050565b60006001600160a01b0380871683528086166020840152506080604083015261488a60808301856140e6565b8281036060840152613c0a81856140e6565b600060208083850312156148af57600080fd5b825167ffffffffffffffff8111156148c657600080fd5b8301601f810185136148d757600080fd5b80516148e5613e4d82613e08565b81815260059190911b8201830190838101908783111561490457600080fd5b928401925b82841015613c0a57835182529284019290840190614909565b600060018201614934576149346145c1565b5060010190565b6000808335601e1984360301811261495257600080fd5b83018035915067ffffffffffffffff82111561496d57600080fd5b6020019150600581901b36038213156144f957600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b818110156149d0578551835294830194918301916001016149b4565b5050809450505080851660408501525050949350505050565b6000806000606084860312156149fe57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115614a2457600080fd5b8501601f81018713614a3557600080fd5b8051614a43613e4d82613e08565b81815260059190911b82018301908381019089831115614a6257600080fd5b928401925b82841015614a8057835182529284019290840190614a67565b80955050505050509250925092565b8082028115828204841417611d4757611d476145c1565b600082614ac357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c292f3d1ef3c045742ed41e8ecc8b9123bf922ffa5bc0f1cf31a7107e3d0c71264736f6c6343000814003360e06040523480156200001157600080fd5b5060405162002c1338038062002c1383398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051612ae66200012d6000396000818160cd0152818161065e01526113cf01526000818161010601528181610400015281816104310152818161117b01526111b4015260008181606e01528181610a8401528181610ab501528181611841015261187a0152612ae66000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806333141d3e1161005057806333141d3e146100cb57806359214226146100f1578063ca56fc721461010457600080fd5b806307da8f571461006c5780630f902a40146100ab575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b936600461245f565b61012a565b6040516100a29190612601565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b6100be6100ff36600461245f565b610eb2565b7f000000000000000000000000000000000000000000000000000000000000000061008e565b61016a6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561018c57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101ce915060019050856126e4565b90508067ffffffffffffffff8111156101e9576101e96126f7565b604051908082528060200260200182016040528015610212578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610231576102316126f7565b60405190808252806020026020018201604052801561025a578160200160208202803683370190505b5060408301528067ffffffffffffffff811115610279576102796126f7565b6040519080825280602002602001820160405280156102a2578160200160208202803683370190505b5060608301528067ffffffffffffffff8111156102c1576102c16126f7565b6040519080825280602002602001820160405280156102ea578160200160208202803683370190505b5060c08301528367ffffffffffffffff811115610309576103096126f7565b604051908082528060200260200182016040528015610332578160200160208202803683370190505b5060808301528367ffffffffffffffff811115610351576103516126f7565b60405190808252806020026020018201604052801561037a578160200160208202803683370190505b508260a0018190525082826080015160008151811061039b5761039b61270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103d3576103d361270d565b60200260200101906001600160801b031690816001600160801b03168152505060005b81811015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a825760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104705761047061270d565b90506020020160208101906104859190612738565b898961049287600161275c565b8181106104a1576104a161270d565b90506020020160208101906104b69190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052991908101906127d9565b905060008151118015610562575060008460800151838151811061054f5761054f61270d565b60200260200101516001600160801b0316115b15610a805760005b8151811015610a7e578181815181106105855761058561270d565b602002602001015160600151610a6c57600088886105a486600161275c565b8181106105b3576105b361270d565b90506020020160208101906105c89190612738565b6001600160a01b03168383815181106105e3576105e361270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065091906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf84848151811061069d5761069d61270d565b602002602001015160200151886080015187815181106106bf576106bf61270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610740575060408051601f3d908101601f1916820190925261073d918101906128f5565b60015b15610a6a576001600160801b0383161580156107945750608089015161076788600161275c565b815181106107775761077761270d565b60200260200101516001600160801b0316826001600160801b0316115b15610a6657608089015182906107ab89600161275c565b815181106107bb576107bb61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107ed576107ed61270d565b6020026020010151602001518960200151888151811061080f5761080f61270d565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108415761084161270d565b60200260200101516000015161ffff16896040015188815181106108675761086761270d565b60200260200101818152505060018960600151888151811061088b5761088b61270d565b602002602001019060018111156108a4576108a4612559565b908160018111156108b7576108b7612559565b8152505060008686815181106108cf576108cf61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612937565b9050610998828b60a001518a815181106109585761095861270d565b602002602001015161096a919061295c565b6001600160801b0316828c604001518b8151811061098a5761098a61270d565b602002602001015188611cc7565b60a08b01516109a88a600161275c565b815181106109b8576109b861270d565b60200260200101906001600160801b031690816001600160801b031681525050610a2e8a6080015189815181106109f1576109f161270d565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610a1f9190612983565b610a2991906129b0565b611d15565b8a60c001518981518110610a4457610a4461270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a76816129d2565b91505061056a565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e975760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610af457610af461270d565b9050602002016020810190610b099190612738565b8989610b1687600161275c565b818110610b2557610b2561270d565b9050602002016020810190610b3a9190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906128d8565b90506001600160a01b03811615801590610be95750600084608001518381518110610bd657610bd661270d565b60200260200101516001600160801b0316115b15610e9557600080610c52838a8a87818110610c0757610c0761270d565b9050602002016020810190610c1c9190612738565b8b8b610c2989600161275c565b818110610c3857610c3861270d565b9050602002016020810190610c4d9190612738565b611d44565b91509150600082118015610c665750600081115b15610e92576000610c9e87608001518681518110610c8657610c8661270d565b60200260200101516001600160801b03168484611e12565b6080880151909150610cb186600161275c565b81518110610cc157610cc161270d565b60200260200101516001600160801b0316811115610e9057610ce281611d15565b6080880151610cf287600161275c565b81518110610d0257610d0261270d565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d3957610d3961270d565b60200260200101906001600160a01b031690816001600160a01b031681525050610da5610a298860a001518781518110610d7557610d7561270d565b60200260200101516103e5610d8a91906129eb565b6001600160801b0316610d9f866103e8612983565b85611eac565b60a0880151610db587600161275c565b81518110610dc557610dc561270d565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610e0357610e0361270d565b60200260200101906001600160801b031690816001600160801b031681525050600087606001518681518110610e3b57610e3b61270d565b60200260200101906001811115610e5457610e54612559565b90816001811115610e6757610e67612559565b81525050600087604001518681518110610e8357610e8361270d565b6020026020010181815250505b505b50505b505b80610ea1816129d2565b9150506103f6565b50509392505050565b610ef26040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610f1457604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610f56915060019050856126e4565b90508067ffffffffffffffff811115610f7157610f716126f7565b604051908082528060200260200182016040528015610f9a578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610fb957610fb96126f7565b604051908082528060200260200182016040528015610fe2578160200160208202803683370190505b5060408301528067ffffffffffffffff811115611001576110016126f7565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b5060608301528367ffffffffffffffff811115611049576110496126f7565b604051908082528060200260200182016040528015611072578160200160208202803683370190505b5060808301528367ffffffffffffffff811115611091576110916126f7565b6040519080825280602002602001820160405280156110ba578160200160208202803683370190505b5060a08301528067ffffffffffffffff8111156110d9576110d96126f7565b604051908082528060200260200182016040528015611102578160200160208202803683370190505b508260c0018190525082826080015182815181106111225761112261270d565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106111595761115961270d565b6001600160801b0390921660209283029190910190910152805b8015610ea9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561183f5760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111e66001876126e4565b8181106111f5576111f561270d565b905060200201602081019061120a9190612738565b89898681811061121c5761121c61270d565b90506020020160208101906112319190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112a491908101906127d9565b9050600081511180156112dd57506000846080015183815181106112ca576112ca61270d565b60200260200101516001600160801b0316115b1561183d5760005b815181101561183b578181815181106113005761130061270d565b6020026020010151606001516118295760008888858181106113245761132461270d565b90506020020160208101906113399190612738565b6001600160a01b03168383815181106113545761135461270d565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c191906128d8565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061140e5761140e61270d565b602002602001015160200151886080015187815181106114305761143061270d565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156114b1575060408051601f3d908101601f191682019092526114ae918101906128f5565b60015b15611827576001600160801b0382161580156114d557506001600160801b03831615155b8015611553575060808901516114ec6001896126e4565b815181106114fc576114fc61270d565b60200260200101516001600160801b0316836001600160801b031610806115535750608089015161152e6001896126e4565b8151811061153e5761153e61270d565b60200260200101516001600160801b03166000145b15611823576080890151839061156a60018a6126e4565b8151811061157a5761157a61270d565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115ac576115ac61270d565b60200260200101516020015189602001516001896115ca91906126e4565b815181106115da576115da61270d565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061160c5761160c61270d565b60200260200101516000015161ffff16896040015160018961162e91906126e4565b8151811061163e5761163e61270d565b6020908102919091010152606089015160019061165b828a6126e4565b8151811061166b5761166b61270d565b6020026020010190600181111561168457611684612559565b9081600181111561169757611697612559565b8152505060008686815181106116af576116af61270d565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190612937565b90508161177b8b60a001518a815181106117385761173861270d565b60200260200101516001600160801b0316838d6040015160018d61175c91906126e4565b8151811061176c5761176c61270d565b60200260200101518915611cc7565b6117859190612a16565b60a08b015161179560018b6126e4565b815181106117a5576117a561270d565b6001600160801b039092166020928302919091019091015260808a01516117e1906117d160018b6126e4565b815181106109f1576109f161270d565b60c08b01516117f160018b6126e4565b815181106118015761180161270d565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611833816129d2565b9150506112e5565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611cb55760006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390588886118ac6001876126e4565b8181106118bb576118bb61270d565b90506020020160208101906118d09190612738565b8989868181106118e2576118e261270d565b90506020020160208101906118f79190612738565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196691906128d8565b90506001600160a01b038116158015906119a657506000846080015183815181106119935761199361270d565b60200260200101516001600160801b0316115b15611cb3576000806119f5838a8a6119bf6001896126e4565b8181106119ce576119ce61270d565b90506020020160208101906119e39190612738565b8b8b88818110610c3857610c3861270d565b91509150600082118015611a2e575085608001518481518110611a1a57611a1a61270d565b60200260200101516001600160801b031681115b15611cb0576000611a6687608001518681518110611a4e57611a4e61270d565b60200260200101516001600160801b03168484611f0d565b6080880151909150611a796001876126e4565b81518110611a8957611a8961270d565b60200260200101516001600160801b0316811080611ad757506080870151611ab26001876126e4565b81518110611ac257611ac261270d565b60200260200101516001600160801b03166000145b15611cae57611ae581611d15565b6080880151611af56001886126e4565b81518110611b0557611b0561270d565b6001600160801b039092166020928302919091018201528701518490611b2c6001886126e4565b81518110611b3c57611b3c61270d565b60200260200101906001600160a01b031690816001600160a01b031681525050611bb3611ba88860a001518781518110611b7857611b7861270d565b60200260200101516103e8611b8d91906129eb565b6001600160801b0316611ba2856103e5612983565b86611eac565b610a2990600161275c565b60a0880151611bc36001886126e4565b81518110611bd357611bd361270d565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611c046001886126e4565b81518110611c1457611c1461270d565b6001600160801b03909216602092830291909101909101526060870151600090611c3f6001886126e4565b81518110611c4f57611c4f61270d565b60200260200101906001811115611c6857611c68612559565b90816001811115611c7b57611c7b612559565b9052506040870151600090611c916001886126e4565b81518110611ca157611ca161270d565b6020026020010181815250505b505b50505b505b80611cbf81612a36565b915050611173565b60008115611cf057611ce9610a29866080611ce28888611fac565b9190611ff0565b9050611d0d565b611d0a610a296080611d028787611fac565b88919061205d565b90505b949350505050565b806001600160801b0381168114611d3f57604051632f45db3d60e21b815260040160405180910390fd5b919050565b6000806000611d538585612087565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190612a6b565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614611e00578082611e03565b81815b90999098509650505050505050565b600083600003611e355760405163b937356b60e01b815260040160405180910390fd5b821580611e40575081155b15611e5e57604051637b03555560e01b815260040160405180910390fd5b6000611e6c856103e5612983565b90506000611e7a8483612983565b9050600082611e8b876103e8612983565b611e95919061275c565b9050611ea181836129b0565b979650505050505050565b600083600003611ecf5760405163b937356b60e01b815260040160405180910390fd5b821580611eda575081155b15611ef857604051637b03555560e01b815260040160405180910390fd5b82611f038386612983565b611d0d91906129b0565b600083600003611f305760405163b937356b60e01b815260040160405180910390fd5b821580611f3b575081155b15611f5957604051637b03555560e01b815260040160405180910390fd5b6000611f658585612983565b611f71906103e8612983565b90506000611f7f86856126e4565b611f8b906103e5612983565b9050611f9781836129b0565b611fa290600161275c565b9695505050505050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611fe78282612112565b95945050505050565b6000806000611fff868661237c565b9150915081600014612015578360ff1682901c92505b8015610ea957600160ff85161b811061204157604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90611fa29087906001901b86858561239b565b600080826001600160a01b0316846001600160a01b0316036120bc5760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316106120dc5782846120df565b83835b90925090506001600160a01b03821661210b57604051632268279160e11b815260040160405180910390fd5b9250929050565b60008060008360000361212e5750600160801b91506123769050565b50826000811215612140579015906000035b6210000081101561233057600160801b9250846001600160801b0381111561216a57911591600019045b600182161561217b5792830260801c925b800260801c60028216156121915792830260801c925b800260801c60048216156121a75792830260801c925b800260801c60088216156121bd5792830260801c925b800260801c60108216156121d35792830260801c925b800260801c60208216156121e95792830260801c925b800260801c60408216156121ff5792830260801c925b8002608090811c908216156122165792830260801c925b800260801c61010082161561222d5792830260801c925b800260801c6102008216156122445792830260801c925b800260801c61040082161561225b5792830260801c925b800260801c6108008216156122725792830260801c925b800260801c6110008216156122895792830260801c925b800260801c6120008216156122a05792830260801c925b800260801c6140008216156122b75792830260801c925b800260801c6180008216156122ce5792830260801c925b800260801c620100008216156122e65792830260801c925b800260801c620200008216156122fe5792830260801c925b800260801c620400008216156123165792830260801c925b800260801c6208000082161561232e5792830260801c925b505b8260000361235f57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b8161236a5782611fe7565b611fe7836000196129b0565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816000036123bc578383816123b4576123b461299a565b049050611fe7565b8382106123dc576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461245c57600080fd5b50565b60008060006040848603121561247457600080fd5b833567ffffffffffffffff8082111561248c57600080fd5b818601915086601f8301126124a057600080fd5b8135818111156124af57600080fd5b8760208260051b85010111156124c457600080fd5b602092830195509350508401356124da81612447565b809150509250925092565b600081518084526020808501945080840160005b8381101561251e5781516001600160a01b0316875295820195908201906001016124f9565b509495945050505050565b600081518084526020808501945080840160005b8381101561251e5781518752958201959082019060010161253d565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156125bc578251600281106125aa57634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612584565b50959695505050505050565b600081518084526020808501945080840160005b8381101561251e5781516001600160801b0316875295820195908201906001016125dc565b602081526000825160e0602084015261261e6101008401826124e5565b90506020840151601f198085840301604086015261263c83836124e5565b925060408601519150808584030160608601526126598383612529565b92506060860151915080858403016080860152612676838361256f565b925060808601519150808584030160a086015261269383836125c8565b925060a08601519150808584030160c08601526126b083836125c8565b925060c08601519150808584030160e086015250611fe782826125c8565b634e487b7160e01b600052601160045260246000fd5b81810381811115612376576123766126ce565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461245c57600080fd5b60006020828403121561274a57600080fd5b813561275581612723565b9392505050565b80820180821115612376576123766126ce565b6040516080810167ffffffffffffffff81118282101715612792576127926126f7565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156127c1576127c16126f7565b604052919050565b80518015158114611d3f57600080fd5b600060208083850312156127ec57600080fd5b825167ffffffffffffffff8082111561280457600080fd5b818501915085601f83011261281857600080fd5b81518181111561282a5761282a6126f7565b612838848260051b01612798565b818152848101925060079190911b83018401908782111561285857600080fd5b928401925b81841015611ea157608084890312156128765760008081fd5b61287e61276f565b845161ffff811681146128915760008081fd5b8152848601516128a081612723565b8187015260406128b18682016127c9565b9082015260606128c28682016127c9565b908201528352608093909301929184019161285d565b6000602082840312156128ea57600080fd5b815161275581612723565b60008060006060848603121561290a57600080fd5b835161291581612447565b602085015190935061292681612447565b60408501519092506124da81612447565b60006020828403121561294957600080fd5b815162ffffff8116811461275557600080fd5b6001600160801b0382811682821603908082111561297c5761297c6126ce565b5092915050565b8082028115828204841417612376576123766126ce565b634e487b7160e01b600052601260045260246000fd5b6000826129cd57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016129e4576129e46126ce565b5060010190565b6001600160801b03818116838216028082169190828114612a0e57612a0e6126ce565b505092915050565b6001600160801b0381811683821601908082111561297c5761297c6126ce565b600081612a4557612a456126ce565b506000190190565b80516dffffffffffffffffffffffffffff81168114611d3f57600080fd5b600080600060608486031215612a8057600080fd5b612a8984612a4d565b9250612a9760208501612a4d565b9150604084015163ffffffff811681146124da57600080fdfea264697066735822122049e882490fb40b1e480420f9b6652583b94a56010df7ef0806470be8b0ce0c1764736f6c6343000814003368747470733a2f2f6d61696e6e65742e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f7365706f6c69612e696e667572612e696f2f76332f623937393461643164646638346466623863333464366262356463613230303168747470733a2f2f6170692e617661782e6e6574776f726b2f6578742f62632f432f72706368747470733a2f2f7270632e746573746e65742e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f7270632e616e6b722e636f6d2f6273635f746573746e65745f63686170656c68747470733a2f2f7270632d6d756d6261692e6d61746963766967696c2e636f6d4c425061697220696d706c656d656e746174696f6e20736574206f6e20666163746f727956320a68747470733a2f2f7270632e6170692e6d6f6f6e72697665722e6d6f6f6e6265616d2e6e6574776f726b68747470733a2f2f676f65726c692d726f6c6c75702e617262697472756d2e696f2f72706368747470733a2f2f6170692e617661782d746573742e6e6574776f726b2f6578742f62632f432f72706368747470733a2f2f6273632d6461746173656564312e62696e616e63652e6f726768747470733a2f2f676f65726c692e696e667572612e696f2f76332f62393739346164316464663834646662386333346436626235646361323030314c425061697220696d706c656d656e746174696f6e206465706c6f796564202d2d3ea2646970667358221220c1e26da300684a7a99038eda67dbdda6c3558390263a4b3d5cce84de999539cb64736f6c63430008140033", - "sourceMap": "410:3647:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;759:71;;;:::i;:::-;;836:2892;;;:::i;800:28:1:-;;;;;;;;;;;;;;;179:14:130;;172:22;154:41;;142:2;127:18;800:28:1;;;;;;;759:71:44;793:30;:28;:30::i;:::-;759:71::o;836:2892::-;889:45;;-1:-1:-1;;;889:45:44;;408:2:130;889:45:44;;;390:21:130;447:2;427:18;;;420:30;486:32;466:18;;;459:60;868:18:44;;889:11;;;;536:18:130;;889:45:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;889:45:44;;;;;;;;;;;;:::i;:::-;978:34;;-1:-1:-1;;;978:34:44;;2238:2:130;978:34:44;;;2220:21:130;2277:2;2257:18;;;2250:30;2316:22;2296:18;;;2289:50;868:66:44;;-1:-1:-1;944:16:44;;963:14;;;;;;978:10;;2356:18:130;;978:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;963:50;;;;;;;;;;;;;2720:25:130;;2708:2;2693:18;;2574:177;963:50:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;944:69;;1024:45;;;;;;;;;;;;;;;;;;1060:8;1024:11;:45::i;:::-;1085:9;1080:2642;1104:6;:13;1100:17;;1080:2642;;;1138:30;1171:55;1214:6;1221:1;1214:9;;;;;;;;:::i;:::-;;;;;;;;1192:32;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1192:32:44;;;;;;;;;1171:4;;:13;:55::i;:::-;1138:88;;1240:28;1282:17;1271:43;;;;;;;;;;;;:::i;:::-;1240:74;;1329:48;;;;;;;;;;;;;;;;;;1367:6;1374:1;1367:9;;;;;;;;:::i;:::-;;;;;;;;1329:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:11;:48::i;:::-;317:28:0;309:37;;-1:-1:-1;;;;;1392:19:44;;1412:29;1431:6;1438:1;1431:9;;;;;;;;:::i;:::-;;;;;;;;1412:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;:29::i;:::-;:36;;;1392:57;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1464:22:44;;-1:-1:-1;;;1464:22:44;;-1:-1:-1;;;;;6672:55:130;;1464:22:44;;;6654:74:130;1464:12:44;;;;6627:18:130;;1464:22:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:19;1536:8;1546;520:4;1522:48;;;;;:::i;:::-;-1:-1:-1;;;;;7020:15:130;;;7002:34;;7072:15;;;;7067:2;7052:18;;7045:43;7119:2;7104:18;;7097:34;6929:2;6914:18;1522:48:44;;;;;;;;;;;;;;;;;;;;;;;1500:70;;1584:57;;;;;;;;;;;;;;;;;;1630:9;1584:11;:57::i;:::-;1656:22;;-1:-1:-1;;;1656:22:44;;-1:-1:-1;;;;;6672:55:130;;1656:22:44;;;6654:74:130;1656:12:44;;;;6627:18:130;;1656:22:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1692:25;1731:9;1720:21;;;;;:::i;:::-;-1:-1:-1;;;;;6672:55:130;;;6654:74;;6642:2;6627:18;1720:21:44;;;;;;;;;;;;;;;;;;;;;;;1692:49;;1755:78;;;;;;;;;;;;;;;;;;1813:18;1755:11;:78::i;:::-;1848:22;;-1:-1:-1;;;1848:22:44;;-1:-1:-1;;;;;6672:55:130;;1848:22:44;;;6654:74:130;1848:12:44;;;;6627:18:130;;1848:22:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1884:17;1934:9;1978:10;:20;;;2026:10;:18;;;1904:155;;;;;:::i;:::-;-1:-1:-1;;;;;7736:15:130;;;7718:34;;7788:15;;;7783:2;7768:18;;7761:43;7840:15;;;7835:2;7820:18;;7813:43;7645:2;7630:18;1904:155:44;;;;;;;;;;;;;;;;;;;;;;;1884:175;;2073:55;;;;;;;;;;;;;;;;;;2118:8;2073:11;:55::i;:::-;2143:27;;-1:-1:-1;;;2143:27:44;;-1:-1:-1;;;;;6672:55:130;;2143:27:44;;;6654:74:130;2143:17:44;;;;6627:18:130;;2143:27:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2184:15;2232:10;:20;;;2278:9;2314:8;2202:135;;;;;:::i;:::-;-1:-1:-1;;;;;7736:15:130;;;7718:34;;7788:15;;;7783:2;7768:18;;7761:43;7840:15;;;7835:2;7820:18;;7813:43;7645:2;7630:18;2202:135:44;;;;;;;;;;;;;;;;;;;;;;;2184:153;;2351:53;;;;;;;;;;;;;;;;;;2396:6;2351:11;:53::i;:::-;2419:62;;-1:-1:-1;;;2419:62:44;;-1:-1:-1;;;;;6672:55:130;;;2419:62:44;;;6654:74:130;2419:33:44;;;;;6627:18:130;;2419:62:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2495:55;;;;;;;;;;;;;;;;;;:11;:55::i;:::-;2565:19;2604:10;:20;;;-1:-1:-1;;;;;2587:61:44;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2565:85;;2669:9;2664:284;2688:11;2684:1;:15;2664:284;;;2761:20;;;;2744:55;;-1:-1:-1;;;2744:55:44;;;;;2720:25:130;;;2724:17:44;;-1:-1:-1;;;;;2744:52:44;;;;2693:18:130;;2744:55:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2817:35;;-1:-1:-1;;;2817:35:44;;-1:-1:-1;;;;;6672:55:130;;;2817:35:44;;;6654:74:130;2724:75:44;;-1:-1:-1;2817:23:44;;;;;;6627:18:130;;2817:35:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2870:63;;;;;;;;;;;;;;;;;;2921:10;2870:11;:63::i;:::-;-1:-1:-1;2701:3:44;;;;:::i;:::-;;;;2664:284;;;;2962:27;2992:26;:24;:26::i;:::-;2962:56;;3037:9;3032:585;3052:10;:17;3048:1;:21;3032:585;;;3094:38;3135:35;3156:10;3167:1;3156:13;;;;;;;;:::i;:::-;;;;;;;3135:20;:35::i;:::-;3229:14;;3265:17;;;;3304:19;;;;;3345:18;;;;3385:22;;;;3429:25;;;;3476:20;;;;3518:31;;;;3571:13;;;;3188:414;;-1:-1:-1;;;3188:414:44;;9429:6:130;9462:15;;;3188:414:44;;;9444:34:130;9514:15;;;9494:18;;;9487:43;9566:15;;;9546:18;;;9539:43;9618:15;;;9598:18;;;9591:43;9671:15;;;9650:19;;;9643:44;9706:8;9751:15;;;9730:19;;;9723:44;9804:15;;9783:19;;;9776:44;9857:15;;;;9836:19;;;9829:44;9917:14;;9910:22;9889:19;;;9882:51;3094:76:44;;-1:-1:-1;;;;;;3188:19:44;;;;;9391::130;;3188:414:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3076:541;3071:3;;;;;:::i;:::-;;;;3032:585;;;-1:-1:-1;3659:19:44;;;;;3631:48;;-1:-1:-1;;;3631:48:44;;-1:-1:-1;;;;;6672:55:130;;;3631:48:44;;;6654:74:130;3631:27:44;;;;;;6627:18:130;;3631:48:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:0;309:37;;-1:-1:-1;;;;;3693:16:44;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1124:2598;;;;;;;;1119:3;;;;;:::i;:::-;;;;1080:2642;;;;858:2870;;836:2892::o;3734:321::-;3792:256;;;;;;;;;;;;;;;;;;;;;3859:179;;;;;;;;;;;;;;;;;;;;;3951:6;3859:179;;;;3983:40;;-1:-1:-1;;;3983:40:44;;;;;10128:21:130;;;;10185:2;10165:18;;;10158:30;10224:26;10204:18;;;10197:54;3792:256:44;;3859:179;;;3983:12;;;;10268:18:130;;3983:40:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3983:40:44;;;;;;;;;;;;:::i;:::-;3859:179;;3792:18;:256::i;6994:145:14:-;7061:71;7124:2;7128;7077:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7077:54:14;;;;;;;;;;;;;;-1:-1:-1;;;;;7077:54:14;-1:-1:-1;;;7077:54:14;;;7061:15;:71::i;:::-;6994:145;;:::o;951:141:7:-;1062:23;;-1:-1:-1;;;1062:23:7;;1031:12;;1062;;;;:23;;1075:4;;1081:3;;1062:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1062:23:7;;;;;;;;;;;;:::i;:::-;1055:30;;951:141;;;;;:::o;6693:150:14:-;6766:70;6828:2;6832;6782:53;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6782:53:14;;;;;;;;;;;;;;-1:-1:-1;;;;;6782:53:14;-1:-1:-1;;;6782:53:14;;;6766:15;:70::i;3255:524:3:-;3325:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3325:18:3;3369:10;3363:24;3391:1;3363:29;3355:109;;;;-1:-1:-1;;;3355:109:3;;11695:2:130;3355:109:3;;;11677:21:130;11734:2;11714:18;;;11707:30;11773:34;11753:18;;;11746:62;11844:34;11824:18;;;11817:62;-1:-1:-1;;;11895:19:130;;;11888:34;11939:19;;3355:109:3;;;;;;;;;3475:21;:19;:21::i;:::-;3514:6;3521:10;3514:18;;;;;;:::i;:::-;;;;;;;;;;;;;3506:26;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3563:5;:13;;;3580:1;3563:18;;3670:10;3602:96;;;;;;;;:::i;:::-;;;;;;;;;;;;;3542:167;;;;;-1:-1:-1;;;3542:167:3;;;;;;;;:::i;:::-;;3728:44;3754:10;3766:5;3728:25;:44::i;5630:121:14:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:14;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:14;-1:-1:-1;;;5701:42:14;;;5685:15;:59::i;:::-;5630:121;:::o;3608:316:43:-;3708:16;;;3722:1;3708:16;;;;;;;;;3656:27;;3708:16;;;;;;;;;;-1:-1:-1;3708:16:43;3695:29;;3750:1;3734:10;3745:1;3734:13;;;;;;;;:::i;:::-;;;;;;:17;;;;;3777:1;3761:10;3772:1;3761:13;;;;;;;;:::i;:::-;;;;;;:17;;;;;3804:1;3788:10;3799:1;3788:13;;;;;;;;:::i;:::-;;;;;;:17;;;;;3831:2;3815:10;3826:1;3815:13;;;;;;;;:::i;:::-;;;;;;:18;;;;;3859:2;3843:10;3854:1;3843:13;;;;;;;;:::i;:::-;;;;;;:18;;;;;3887:2;3871:10;3882:1;3871:13;;;;;;;;:::i;:::-;;;;;;:18;;;;;3915:2;3899:10;3910:1;3899:13;;;;;;;;:::i;:::-;;;;;;:18;;;;;3608:316;:::o;416:3186::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;514:3:43;521:1;514:8;510:3086;;555:1;538:18;;590:6;570:17;;;:26;632:2;610:19;;;:24;669:3;648:18;;;:24;;;711:5;686:22;;;:30;758:9;730:25;;;:37;538:14;781:20;;;:24;;;853:7;819:31;;;:41;874:21;;;:27;;;;915:13;;;:21;416:3186;;;:::o;510:3086::-;957:3;964:1;957:8;953:2643;;998:1;981:18;;1033:6;1013:17;;;:26;1075:2;1053:19;;;:24;1112:3;1091:18;;;:24;;;1154:5;1129:22;;;:30;1201:7;1173:25;;;:35;981:14;1222:20;;;:24;;;1294:7;1260:31;;;:41;1315:21;;;:27;;;;1356:13;;;:21;416:3186;;;:::o;953:2643::-;1398:3;1405:1;1398:8;1394:2202;;1439:1;1422:18;;1474:5;1454:17;;;:25;1515:2;1493:19;;;:24;1552:3;1531:18;;;:24;1594:5;1569:22;;;:30;1641:7;1613:25;;;:35;1422:14;1662:20;;;:24;;;1734:7;1700:31;;;:41;1779:3;1755:21;;;:27;1796:13;;;:21;416:3186;;;:::o;1394:2202::-;1838:3;1845:2;1838:9;1834:1762;;1880:2;1863:19;;1916:6;1896:17;;;:26;1958:2;1936:19;;;:24;1995:3;1974:18;;;:24;2037:5;2012:22;;;:30;2084:6;2056:25;;;:34;1863:14;2104:20;;;:24;;;2176:7;2142:31;;;:41;2221:3;2197:21;;;:27;2238:13;;;:21;416:3186;;;:::o;1834:1762::-;2280:3;2287:2;2280:9;2276:1320;;2322:2;2305:19;;2358:6;2338:17;;;:26;2400:2;2378:19;;;:24;2437:3;2416:18;;;:24;2479:5;2454:22;;;:30;2526:6;2498:25;;;:34;2305:14;2546:20;;;:24;;;2618:7;2584:31;;;:41;2663:3;2639:21;;;:27;2680:13;;;:21;416:3186;;;:::o;2276:1320::-;2722:3;2729:2;2722:9;2718:878;;2764:2;2747:19;;2800:6;2780:17;;;:26;2842:2;2820:19;;;:24;2879:3;2858:18;;;:24;2921:5;2896:22;;;:30;2968:6;2940:25;;;:34;2747:14;2988:20;;;:24;;;3060:7;3026:31;;;:41;3105:3;3081:21;;;:27;3122:13;;;:21;416:3186;;;:::o;2718:878::-;3164:3;3171:2;3164:9;3160:436;;3206:2;3189:19;;3242:6;3222:17;;;:26;3284:2;3262:19;;;:24;3321:3;3300:18;;;:24;3363:5;3338:22;;;:30;3410:6;3382:25;;;:34;3189:14;3430:20;;;:24;;;3502:7;3468:31;;;:41;3547:3;3523:21;;;:27;3564:13;;;:21;3160:436;416:3186;;;:::o;4397:1173:3:-;4519:10;4513:24;4541:1;4513:29;4492:153;;;;-1:-1:-1;;;4492:153:3;;13247:2:130;4492:153:3;;;13229:21:130;13286:2;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;13396:34;13376:18;;;13369:62;13468:15;13447:19;;;13440:44;13501:19;;4492:153:3;13045:481:130;4492:153:3;4664:5;:13;;;4681:1;4664:18;4656:90;;;;-1:-1:-1;;;4656:90:3;;13733:2:130;4656:90:3;;;13715:21:130;13772:2;13752:18;;;13745:30;13811:34;13791:18;;;13784:62;13882:29;13862:18;;;13855:57;13929:19;;4656:90:3;13531:423:130;4656:90:3;4757:21;:19;:21::i;:::-;4825:13;;;;;4788:24;4815;;;:9;:24;;;;;;4788:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:10;4871:24;4899:1;4871:29;:93;;;;4952:10;4936:28;;;;;;4920:10;4904:28;;;;;;:60;4871:93;5123:13;;;;5111:26;;-1:-1:-1;;;5111:26:3;;;;;2720:25:130;;;;5111:11:3;;;;2693:18:130;;5111:26:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5111:26:3;;;;;;;;;;;;:::i;:::-;5202:10;5002:255;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4850:431;;;;;-1:-1:-1;;;4850:431:3;;;;;;;;:::i;:::-;;5292:18;5313:6;5320:10;5313:18;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;;5292:47;;5356:9;:21;5366:10;5356:21;;;;;;;;;;;;5349:28;;;;:::i;:::-;5421:95;;;;;;;;5434:5;:10;;;5421:95;;;;5455:5;:13;;;5421:95;;;;5482:10;5421:95;;;;5502:5;:12;;;5421:95;;;5388:6;5395:10;5388:18;;;;;;:::i;:::-;;;;;;;;;;;;;;:128;;:18;;:128;;:18;:128;:::i;:::-;-1:-1:-1;5388:128:3;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5388:128:3;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5536:13:3;;;;;5526:24;;;;:9;:24;;;;;;:37;5553:10;5526:24;:37;:::i;:::-;;4482:1088;;4397:1173;;:::o;181:376:14:-;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;8283:3094:3:-;8336:20;;;;8332:33;;;8283:3094::o;8332:33::-;8375:20;:27;;-1:-1:-1;;8375:27:3;8398:4;8375:27;;;8499:86;;;;;;;;;;;;;;;;;;;;;8534:50;;;;;;;;;;;;;;;;;;;;;8553:5;8534:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8499:86;;:25;:86::i;:::-;8595:148;;;;;;;;;;;;;;;;;;8645:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8666:1;8645:88;;;;;;;;;;;;;;;;;;;;;;;8595:25;:148::i;:::-;8753:145;;;;;;;;;;;;;;;;;;8802:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8822:1;8802:86;;;;;;;;;;;;;;;;;;;;;;;8753:25;:145::i;:::-;8908:155;;;;;;;;;;;;;;;;;;8958:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8979:8;8958:95;;;;;;;;;;;;;;;;;;;;;;;8908:25;:155::i;:::-;9073:95;;;;;;;;;;;;;;;;;;9111:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9133:2;9111:56;;;;;;;;;;;;;;;;;;;;;;;;9073:25;:95::i;:::-;9178:109;;;;;;;;;;;;;;;;;;9223:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9252:3;9223:63;;;;;;;;;;;;;;;;;;;;;;;;9178:25;:109::i;:::-;9297:107;;;;;;;;;;;;;;;;;;9339:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9365:5;9339:64;;;;;;;;;;;;;;;;;;;;;;;;9297:25;:107::i;:::-;9414:153;;;;;;;;;;;;;;;;;;9476:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9509:6;9476:81;;;;;;;;;;;;;;;;;;;;;;;9414:25;:153::i;:::-;9577:109;;;;;;;;;;;;;;;;;;9620:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9647:5;9620:65;;;;;;;;;;;;;;;;;;;;;;;;9577:25;:109::i;:::-;9696:90;;;;;;;;;;;;;;;;;;9733:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9754:3;9733:52;;;;;;;;;;;;;;;;;;;;;;;;9696:25;:90::i;:::-;9796:138;;;;;;;;;;;;;;;;;;9853:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9881:5;9853:71;;;;;;;;;;;;;;;;;;;;;;;9796:25;:138::i;:::-;9944:110;;;;;;;;;;;;;;;;;;9983:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10006:5;9983:70;;;;;;;;;;;;;;;;;;;;;;;9944:25;:110::i;:::-;10064:147;;;;;;;;;;;;;;;;;;10121:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10149:5;10121:80;;;;;;;;;;;;;;;;;;;;;;;10064:25;:147::i;:::-;10221:137;;;;;;;;;;;;;;;;;;10279:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10308:2;10279:69;;;;;;;;;;;;;;;;;;;;;;;10221:25;:137::i;:::-;10368:171;;;;;;;;;;;;;;;;;;10446:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10483:2;10446:83;;;;;;;;;;;;;;;;;;;;;;;10368:25;:171::i;:::-;10549:104;;;;;;;;;;;;;;;;;;10591:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10617:3;10591:61;;;;;;;;;;;;;;;;;;;;;;;;10549:25;:104::i;:::-;10663:102;;;;;;;;;;;;;;;;;;10701:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10723:4;10701:63;;;;;;;;;;;;;;;;;;;;;;;;10663:25;:102::i;:::-;10775:136;;;;;;;;;;;;;;;;;;10827:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10850:4;10827:74;;;;;;;;;;;;;;;;;;;;;;;10775:25;:136::i;:::-;10921:106;;;;;;;;;;;;;;;;;;10959:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10981:4;10959:67;;;;;;;;;;;;;;;;;;;;;;;10921:25;:106::i;:::-;11037:100;;;;;;;;;;;;;;;;;;11078:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11103:5;11078:58;;;;;;;;;;;;;;;;;;;;;;;;11037:25;:100::i;:::-;11147:86;;;;;;;;;;;;;;-1:-1:-1;;;11147:86:3;;;11181:51;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11181:51:3;;;;;;;11199:4;11181:51;;;;;;;;;;;;;;;;;;;;;;;;11147:25;:86::i;:::-;11243:127;;;;;;;;;;;;;;;;;;11297:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11322:3;11297:63;;;;;;;;;;;;;;;;;;;;;;;;11243:25;:127::i;6429:1725::-;6556:12;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6556:12:3;6594:5;:12;;;6588:26;6618:1;6588:31;6584:1542;;6639:21;;-1:-1:-1;;;6639:21:3;;:9;;;;:21;;6649:10;;6639:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6639:21:3;;;;;;;;;;;;:::i;:::-;;;6635:1481;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:21;6850:20;6859:10;6850:8;:20::i;:::-;6833:50;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6833:50:3;;;;;;;;;6906:24;;6833:50;;-1:-1:-1;6906:24:3;;6902:214;;;1993:28;1985:37;;-1:-1:-1;;;;;6969:8:3;;6978:7;6987:14;7002:10;6987:26;;;;;;:::i;:::-;;;;;;;;;;;;;;6969:45;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6969:45:3;;;;;;;;;;;;:::i;:::-;6954:12;;;:60;6902:214;;;7076:21;;-1:-1:-1;;;7076:21:3;;:12;;;;:21;;7089:7;;7076:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7076:21:3;;;;;;;;;;;;:::i;:::-;7061:12;;;:36;6902:214;7318:29;7456:10;7419:48;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7419:48:3;;;;;;;;;;7370:99;;;;;:::i;:::-;;;;-1:-1:-1;;7370:99:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;7370:99:3;-1:-1:-1;;;7370:99:3;;;7597:49;;7370:99;;-1:-1:-1;;;7597:49:3;;7635:10;;7597:49;;:::i;:::-;;;;-1:-1:-1;;7597:49:3;;;;;;;;;;7519:146;;;;;:::i;:::-;;;;-1:-1:-1;;7519:146:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;7519:146:3;-1:-1:-1;;;7519:146:3;;;7701:14;;;;;;7770:27;;;;;;;;;7519:146;;-1:-1:-1;7701:14:3;7759:38;;;;;:80;;-1:-1:-1;7812:27:3;;;;;;7801:38;;;7759:80;7758:141;;;-1:-1:-1;7874:12:3;;;;7868:26;:31;7758:141;7733:369;;;8057:3;8051:10;8045:3;8041:2;8037:12;8030:32;7733:369;6784:1332;;;;6759:1357;6635:1481;;;6716:12;;;:27;6635:1481;-1:-1:-1;8142:5:3;6429:1725;-1:-1:-1;6429:1725:3:o;11459:305::-;11562:20;11585:5;:12;;;11562:35;;11636:6;11607:14;11622:10;11607:26;;;;;;:::i;:::-;;;;;;;;;;;;;:35;;;;;;:::i;:::-;-1:-1:-1;11652:17:3;;;;;;;;-1:-1:-1;11652:17:3;;:12;;;:17;11679:27;11688:10;11652:5;11679:8;:27::i;:::-;11716:12;;;;:21;-1:-1:-1;11459:305:3:o;5842:451::-;5901:13;5926:17;5952:3;5926:30;;5966:17;5996:4;:11;5986:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5986:22:3;;5966:42;;6023:9;6018:240;6042:4;:11;6038:1;:15;6018:240;;;6074:8;6085:4;6090:1;6085:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;6110:9:3;;;;;:22;;-1:-1:-1;;;;6123:9:3;;;;;6110:22;6106:142;;;6169:13;6180:2;6169:8;;;;:13;:::i;:::-;6162:21;;6152:4;6157:1;6152:7;;;;;;;;:::i;:::-;;;;:31;;;;;;;;;;;6106:142;;;6232:1;6222:4;6227:1;6222:7;;;;;;;;:::i;:::-;;;;:11;;;;;;;;;;;6106:142;-1:-1:-1;6055:3:3;;;;:::i;:::-;;;;6018:240;;;-1:-1:-1;6281:4:3;5842:451;-1:-1:-1;;;5842:451:3:o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;565:127:130:-;626:10;621:3;617:20;614:1;607:31;657:4;654:1;647:15;681:4;678:1;671:15;697:250;782:1;792:113;806:6;803:1;800:13;792:113;;;882:11;;;876:18;863:11;;;856:39;828:2;821:10;792:113;;;-1:-1:-1;;939:1:130;921:16;;914:27;697:250::o;952:615::-;1028:5;1058:18;1099:2;1091:6;1088:14;1085:40;;;1105:18;;:::i;:::-;1180:2;1174:9;1148:2;1234:15;;-1:-1:-1;;1230:24:130;;;1256:2;1226:33;1222:42;1210:55;;;1280:18;;;1300:22;;;1277:46;1274:72;;;1326:18;;:::i;:::-;1366:10;1362:2;1355:22;1395:6;1386:15;;1425:6;1417;1410:22;1465:3;1456:6;1451:3;1447:16;1444:25;1441:45;;;1482:1;1479;1472:12;1441:45;1495:66;1554:6;1547:4;1539:6;1535:17;1530:3;1495:66;:::i;:::-;;;;952:615;;;;;:::o;1572:459::-;1652:6;1705:2;1693:9;1684:7;1680:23;1676:32;1673:52;;;1721:1;1718;1711:12;1673:52;1754:9;1748:16;1787:18;1779:6;1776:30;1773:50;;;1819:1;1816;1809:12;1773:50;1842:22;;1895:4;1887:13;;1883:27;-1:-1:-1;1873:55:130;;1924:1;1921;1914:12;1873:55;1947:78;2017:7;2012:2;2006:9;2001:2;1997;1993:11;1947:78;:::i;:::-;1937:88;1572:459;-1:-1:-1;;;;1572:459:130:o;2385:184::-;2455:6;2508:2;2496:9;2487:7;2483:23;2479:32;2476:52;;;2524:1;2521;2514:12;2476:52;-1:-1:-1;2547:16:130;;2385:184;-1:-1:-1;2385:184:130:o;2756:154::-;-1:-1:-1;;;;;2835:5:130;2831:54;2824:5;2821:65;2811:93;;2900:1;2897;2890:12;2915:251;2985:6;3038:2;3026:9;3017:7;3013:23;3009:32;3006:52;;;3054:1;3051;3044:12;3006:52;3086:9;3080:16;3105:31;3130:5;3105:31;:::i;:::-;3155:5;2915:251;-1:-1:-1;;;2915:251:130:o;3171:127::-;3232:10;3227:3;3223:20;3220:1;3213:31;3263:4;3260:1;3253:15;3287:4;3284:1;3277:15;3303:380;3382:1;3378:12;;;;3425;;;3446:61;;3500:4;3492:6;3488:17;3478:27;;3446:61;3553:2;3545:6;3542:14;3522:18;3519:38;3516:161;;3599:10;3594:3;3590:20;3587:1;3580:31;3634:4;3631:1;3624:15;3662:4;3659:1;3652:15;3814:1004;-1:-1:-1;;;4068:3:130;4061:16;4043:3;4096:1;4117;4150:6;4144:13;4180:36;4206:9;4180:36;:::i;:::-;4232:18;;;4259:151;;;;4424:1;4419:374;;;;4225:568;;4259:151;-1:-1:-1;;4301:24:130;;4287:12;;;4280:46;4378:14;;4371:22;4359:35;;4350:45;;4346:54;;;-1:-1:-1;4259:151:130;;4419:374;4450:6;4447:1;4440:17;4480:4;4525:2;4522:1;4512:16;4550:1;4564:174;4578:6;4575:1;4572:13;4564:174;;;4665:14;;4647:11;;;4643:20;;4636:44;4708:16;;;;4593:10;;4564:174;;;4568:3;;;4780:2;4771:6;4766:3;4762:16;4758:25;4751:32;;4225:568;-1:-1:-1;4809:3:130;;3814:1004;-1:-1:-1;;;;;;3814:1004:130:o;4823:1179::-;4922:6;4975:3;4963:9;4954:7;4950:23;4946:33;4943:53;;;4992:1;4989;4982:12;4943:53;5025:2;5019:9;5067:3;5059:6;5055:16;5137:6;5125:10;5122:22;5101:18;5089:10;5086:34;5083:62;5080:88;;;5148:18;;:::i;:::-;5184:2;5177:22;5221:16;;5246:31;5221:16;5246:31;:::i;:::-;5286:21;;5352:2;5337:18;;5331:25;5365:33;5331:25;5365:33;:::i;:::-;5426:2;5414:15;;5407:32;5484:2;5469:18;;5463:25;5497:33;5463:25;5497:33;:::i;:::-;5558:2;5546:15;;5539:32;5616:2;5601:18;;5595:25;5629:33;5595:25;5629:33;:::i;:::-;5690:2;5678:15;;5671:32;5748:3;5733:19;;5727:26;5762:33;5727:26;5762:33;:::i;:::-;5823:3;5811:16;;5804:33;5882:3;5867:19;;5861:26;5896:33;5861:26;5896:33;:::i;:::-;5957:3;5945:16;;5938:33;5949:6;4823:1179;-1:-1:-1;;;4823:1179:130:o;6007:271::-;6049:3;6087:5;6081:12;6114:6;6109:3;6102:19;6130:76;6199:6;6192:4;6187:3;6183:14;6176:4;6169:5;6165:16;6130:76;:::i;:::-;6260:2;6239:15;-1:-1:-1;;6235:29:130;6226:39;;;;6267:4;6222:50;;6007:271;-1:-1:-1;;6007:271:130:o;6283:220::-;6432:2;6421:9;6414:21;6395:4;6452:45;6493:2;6482:9;6478:18;6470:6;6452:45;:::i;8798:127::-;8859:10;8854:3;8850:20;8847:1;8840:31;8890:4;8887:1;8880:15;8914:4;8911:1;8904:15;8930:135;8969:3;8990:17;;;8987:43;;9010:18;;:::i;:::-;-1:-1:-1;9057:1:130;9046:13;;8930:135::o;10297:340::-;10474:2;10463:9;10456:21;10437:4;10494:45;10535:2;10524:9;10520:18;10512:6;10494:45;:::i;:::-;10486:53;;-1:-1:-1;;;;;10579:6:130;10575:55;10570:2;10559:9;10555:18;10548:83;10297:340;;;;;:::o;10642:383::-;10839:2;10828:9;10821:21;10802:4;10865:45;10906:2;10895:9;10891:18;10883:6;10865:45;:::i;:::-;10958:9;10950:6;10946:22;10941:2;10930:9;10926:18;10919:50;10986:33;11012:6;11004;10986:33;:::i;:::-;10978:41;10642:383;-1:-1:-1;;;;;10642:383:130:o;11969:289::-;12100:3;12138:6;12132:13;12154:66;12213:6;12208:3;12201:4;12193:6;12189:17;12154:66;:::i;:::-;12236:16;;;;;11969:289;-1:-1:-1;;11969:289:130:o;12263:777::-;12626:34;12621:3;12614:47;12691:66;12686:2;12681:3;12677:12;12670:88;12596:3;12787:6;12781:13;12803:73;12869:6;12864:2;12859:3;12855:12;12850:2;12842:6;12838:15;12803:73;:::i;:::-;12940:66;12935:2;12895:16;;;;12927:11;;;12920:87;-1:-1:-1;13031:2:130;13023:11;;12263:777;-1:-1:-1;12263:777:130:o;13959:1078::-;14471:34;14466:3;14459:47;14536:17;14531:2;14526:3;14522:12;14515:39;14441:3;14583:6;14577:13;14599:73;14665:6;14660:2;14655:3;14651:12;14646:2;14638:6;14634:15;14599:73;:::i;:::-;14736:66;14731:2;14691:16;;;14723:11;;;14716:87;14828:13;;14850:74;14828:13;14910:2;14902:11;;14897:2;14885:15;;14850:74;:::i;:::-;-1:-1:-1;;;14984:2:130;14943:17;;;;14976:11;;;14969:35;15028:2;15020:11;;13959:1078;-1:-1:-1;;;;13959:1078:130:o;15042:545::-;15144:2;15139:3;15136:11;15133:448;;;15180:1;15205:5;15201:2;15194:17;15250:4;15246:2;15236:19;15320:2;15308:10;15304:19;15301:1;15297:27;15291:4;15287:38;15356:4;15344:10;15341:20;15338:47;;;-1:-1:-1;15379:4:130;15338:47;15434:2;15429:3;15425:12;15422:1;15418:20;15412:4;15408:31;15398:41;;15489:82;15507:2;15500:5;15497:13;15489:82;;;15552:17;;;15533:1;15522:13;15489:82;;;15493:3;;;15042:545;;;:::o;15763:1352::-;15889:3;15883:10;15916:18;15908:6;15905:30;15902:56;;;15938:18;;:::i;:::-;15967:97;16057:6;16017:38;16049:4;16043:11;16017:38;:::i;:::-;16011:4;15967:97;:::i;:::-;16119:4;;16183:2;16172:14;;16200:1;16195:663;;;;16902:1;16919:6;16916:89;;;-1:-1:-1;16971:19:130;;;16965:26;16916:89;-1:-1:-1;;15720:1:130;15716:11;;;15712:24;15708:29;15698:40;15744:1;15740:11;;;15695:57;17018:81;;16165:944;;16195:663;3761:1;3754:14;;;3798:4;3785:18;;-1:-1:-1;;16231:20:130;;;16349:236;16363:7;16360:1;16357:14;16349:236;;;16452:19;;;16446:26;16431:42;;16544:27;;;;16512:1;16500:14;;;;16379:19;;16349:236;;;16353:3;16613:6;16604:7;16601:19;16598:201;;;16674:19;;;16668:26;-1:-1:-1;;16757:1:130;16753:14;;;16769:3;16749:24;16745:37;16741:42;16726:58;16711:74;;16598:201;-1:-1:-1;;;;;16845:1:130;16829:14;;;16825:22;16812:36;;-1:-1:-1;15763:1352:130:o;17120:459::-;17352:3;17390:6;17384:13;17406:66;17465:6;17460:3;17453:4;17445:6;17441:17;17406:66;:::i;:::-;17533:10;17494:16;;17519:25;;;-1:-1:-1;17571:1:130;17560:13;;17120:459;-1:-1:-1;17120:459:130:o;17584:1093::-;17778:2;17767:9;17760:21;17741:4;17804:45;17845:2;17834:9;17830:18;17822:6;17804:45;:::i;:::-;17868:2;17918:9;17910:6;17906:22;17901:2;17890:9;17886:18;17879:50;17949:1;17982:6;17976:13;18012:36;18038:9;18012:36;:::i;:::-;18057:22;;;18098:1;18115:18;;;18142:152;;;;18308:1;18303:348;;;;18108:543;;18142:152;-1:-1:-1;;18187:24:130;;18170:15;;;18163:49;18262:14;;18255:22;18252:1;18248:30;18236:43;;18232:52;;;-1:-1:-1;18142:152:130;;18303:348;18334:6;18331:1;18324:17;18382:2;18379:1;18369:16;18407:1;18421:177;18435:6;18432:1;18429:13;18421:177;;;18525:14;;18504;;;18500:23;;18493:47;18568:16;;;;18450:10;;18421:177;;;18622:14;;18618:23;;;-1:-1:-1;;18108:543:130;-1:-1:-1;18668:3:130;;17584:1093;-1:-1:-1;;;;;;;;;17584:1093:130:o;18682:448::-;18944:18;18939:3;18932:31;18914:3;18992:6;18986:13;19008:75;19076:6;19071:2;19066:3;19062:12;19055:4;19047:6;19043:17;19008:75;:::i;:::-;19103:16;;;;19121:2;19099:25;;18682:448;-1:-1:-1;;18682:448:130:o;19135:449::-;19397:19;19392:3;19385:32;19367:3;19446:6;19440:13;19462:75;19530:6;19525:2;19520:3;19516:12;19509:4;19501:6;19497:17;19462:75;:::i;:::-;19557:16;;;;19575:2;19553:25;;19135:449;-1:-1:-1;;19135:449:130:o;19589:151::-;19679:4;19672:12;;;19658;;;19654:31;;19697:14;;19694:40;;;19714:18;;:::i", - "linkReferences": {} - }, - "methodIdentifiers": { - "IS_SCRIPT()": "f8ccbf47", - "run()": "c0406226", - "setUp()": "0a9254e4" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/deploy-core.s.sol\":\"CoreDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb\",\"dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b\",\"dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32\",\"dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533\",\"dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7\",\"dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9\",\"dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"script/config/bips-config.sol\":{\"keccak256\":\"0x228acc4660164a61cd2395c1324407b6d62ebca218f4acce1cd8d63e497d833e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9330520b6139e618d0231c4162df3fa36ae995cb53acf535754a5a25d1783b69\",\"dweb:/ipfs/QmVHB3Rb9wA8g6H7yJazKnrDKP7deaE8EPx9igF9HjgJjr\"]},\"script/deploy-core.s.sol\":{\"keccak256\":\"0x0f029c587ddc3fd1f3cbab63a688577c5a1908d3f8bfa9cb0a2230a8fc3baa15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9bc66858ac9ce69c8035265ed737de1e95efa8063e2e3e53fd988e2be10ebc0d\",\"dweb:/ipfs/QmcQtz5ozTK2oLqJDCXbZSmMVZ6KizMQJqYFki1CwqFEai\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235\",\"dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA\"]},\"src/LBPair.sol\":{\"keccak256\":\"0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c\",\"dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6\"]},\"src/LBQuoter.sol\":{\"keccak256\":\"0xeccd5d8873f709fa164aaa8f742675bc547e137f71a292e69104900849339ba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97ff96e368ef092930b738140565bbf34e7227b32e4e866c8891bf1d16e4e9ff\",\"dweb:/ipfs/QmRDNpvERz5brRX81qE64QmGbfPBoP15V9bqwYfXEDmNnx\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0x1888cc5b7dc98cab321022981ee8afbaabbac17f930f162402401c9b723aa7d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58d29cb3db3d8a5559ea061a402cdd5a38e73a62dbc2bf4e6b68ab7bd8745d34\",\"dweb:/ipfs/QmbZhFFyEzn1V4YZ9ifkJevhRv19meCg5UMP458YfJAEFq\"]},\"src/LBToken.sol\":{\"keccak256\":\"0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11\",\"dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98\",\"dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56\",\"dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc\",\"dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf\",\"dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0xc924d832dfd6292a90f26174d8159dd52a6b16b8b3c1ae526521637038917eea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3d4864f4b3c623ffa03ff8325c7ed084d5d9137e073779e5ddbcdfd1d9b30fb\",\"dweb:/ipfs/QmPGQ5V3NBPQRfHyrdL9G7gnw4ccYdwqR5FfufGRijnBBQ\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15\",\"dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51\",\"dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0x3faae84c13214d52f519d4dca8d48be1ad4176c75ec62816e7484555a30628ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c59c2e3322c61109e4044b80838359a2854dc416431175ca2bf6b58ec329168\",\"dweb:/ipfs/QmUXkCAiPss64mSjLnvaq4pYrQA8yhid5oqnh1B91irofL\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f\",\"dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f\",\"dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76\",\"dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f\",\"dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6\"]},\"src/libraries/Clone.sol\":{\"keccak256\":\"0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b\",\"dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009\",\"dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee\",\"dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156\",\"dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr\"]},\"src/libraries/OracleHelper.sol\":{\"keccak256\":\"0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5\",\"dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1\",\"dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e\",\"dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft\"]},\"src/libraries/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9\",\"dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3\",\"dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8\",\"dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de\",\"dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8\",\"dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5\",\"dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4\",\"dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e\",\"dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva\"]},\"src/libraries/math/SampleMath.sol\":{\"keccak256\":\"0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20\",\"dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr\"]},\"src/libraries/math/TreeMath.sol\":{\"keccak256\":\"0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1\",\"dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f\",\"dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242\",\"dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "IS_SCRIPT", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "run" - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "setUp" - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "script/deploy-core.s.sol": "CoreDeployer" - }, - "libraries": {} - }, - "sources": { - "lib/forge-std/src/Base.sol": { - "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c", - "urls": [ - "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224", - "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK" - ], - "license": "MIT" - }, - "lib/forge-std/src/Script.sol": { - "keccak256": "0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2", - "urls": [ - "bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c", - "dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdChains.sol": { - "keccak256": "0xccb4767ab5398f28b4bf258021d57b9ca226fed828ba26ec6e79fb5fc49f7052", - "urls": [ - "bzz-raw://fb5e06280d8cb198a770e8b144ba3a280f7189012a85dee338c1230bb4b7ddcb", - "dweb:/ipfs/QmY2JEmGLH6iDyNB1zwGZ97ATBwHa4s1CX27DiXzEZf7s2" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdCheats.sol": { - "keccak256": "0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7", - "urls": [ - "bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2", - "dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdJson.sol": { - "keccak256": "0x8b315e41138983b61c459c8d4e1346fa033607101df30da00a75c7cea230a763", - "urls": [ - "bzz-raw://65d5f9630ef099fdad8df7cf6227063a7d1a459dfb2d5064db7ae7963751757b", - "dweb:/ipfs/QmVpZhvjV6s2Sr4fdZx5t6BPZGqEjiCQGKw45QP8kUFzdr" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdMath.sol": { - "keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2", - "urls": [ - "bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92", - "dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStorage.sol": { - "keccak256": "0x4298f3f4cedaedb07029820b1daad2c03af45379559392201f7bf3ec71105811", - "urls": [ - "bzz-raw://6e062f36d8d1ae3c383ef8975757926eaa9c4de3a92b5f1fe2d12748bcd8db32", - "dweb:/ipfs/QmcWkv3ia5Ew4DZNcudMNSTNXZ3W2QiXTZunRd44e9BT8z" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdStyle.sol": { - "keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d", - "urls": [ - "bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8", - "dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK" - ], - "license": "MIT" - }, - "lib/forge-std/src/StdUtils.sol": { - "keccak256": "0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0", - "urls": [ - "bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61", - "dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX" - ], - "license": "MIT" - }, - "lib/forge-std/src/Vm.sol": { - "keccak256": "0x9736a4b7c4da663d441bb94dd866b7ef91bcba3b4514412c29fa8681dbc41876", - "urls": [ - "bzz-raw://76179d87219192c3b626cf1a1126931d12c0bec0ac1975f868449509f1dda533", - "dweb:/ipfs/QmTcuxaX38ReqFfbdTZks69xeMsga6XkdKeueSKvksH7te" - ], - "license": "MIT OR Apache-2.0" - }, - "lib/forge-std/src/console.sol": { - "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba", - "urls": [ - "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70", - "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec" - ], - "license": "MIT" - }, - "lib/forge-std/src/console2.sol": { - "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea", - "urls": [ - "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973", - "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC165.sol": { - "keccak256": "0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600", - "urls": [ - "bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc", - "dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC20.sol": { - "keccak256": "0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947", - "urls": [ - "bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7", - "dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IERC721.sol": { - "keccak256": "0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15", - "urls": [ - "bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f", - "dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm" - ], - "license": "MIT" - }, - "lib/forge-std/src/interfaces/IMulticall3.sol": { - "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a", - "urls": [ - "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0", - "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC20.sol": { - "keccak256": "0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b", - "urls": [ - "bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f", - "dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw" - ], - "license": "MIT" - }, - "lib/forge-std/src/mocks/MockERC721.sol": { - "keccak256": "0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9", - "urls": [ - "bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b", - "dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN" - ], - "license": "MIT" - }, - "lib/forge-std/src/safeconsole.sol": { - "keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381", - "urls": [ - "bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae", - "dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b", - "urls": [ - "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609", - "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/AccessControl.sol": { - "keccak256": "0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308", - "urls": [ - "bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80", - "dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { - "keccak256": "0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9", - "urls": [ - "bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f", - "dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { - "keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb", - "urls": [ - "bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6", - "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol": { - "keccak256": "0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12", - "urls": [ - "bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7", - "dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4", - "urls": [ - "bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009", - "dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", - "urls": [ - "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", - "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": { - "keccak256": "0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e", - "urls": [ - "bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9", - "dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { - "keccak256": "0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c", - "urls": [ - "bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e", - "dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol": { - "keccak256": "0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5", - "urls": [ - "bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4", - "dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { - "keccak256": "0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa", - "urls": [ - "bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1", - "dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA" - ], - "license": "MIT" - }, - "script/config/bips-config.sol": { - "keccak256": "0x228acc4660164a61cd2395c1324407b6d62ebca218f4acce1cd8d63e497d833e", - "urls": [ - "bzz-raw://9330520b6139e618d0231c4162df3fa36ae995cb53acf535754a5a25d1783b69", - "dweb:/ipfs/QmVHB3Rb9wA8g6H7yJazKnrDKP7deaE8EPx9igF9HjgJjr" - ], - "license": "MIT" - }, - "script/deploy-core.s.sol": { - "keccak256": "0x0f029c587ddc3fd1f3cbab63a688577c5a1908d3f8bfa9cb0a2230a8fc3baa15", - "urls": [ - "bzz-raw://9bc66858ac9ce69c8035265ed737de1e95efa8063e2e3e53fd988e2be10ebc0d", - "dweb:/ipfs/QmcQtz5ozTK2oLqJDCXbZSmMVZ6KizMQJqYFki1CwqFEai" - ], - "license": "MIT" - }, - "src/LBFactory.sol": { - "keccak256": "0xe996dc00258488c227db9a45ad6e5b2059136c816ce2fdd65e248f9be4dddae4", - "urls": [ - "bzz-raw://684fe086ed7574932c537d9dda46f9092fb2fcb9add08455cf997be7565dc235", - "dweb:/ipfs/QmWJyDkGX2sAV4xnVksCtcUSg4S7Qvy76Y1mZsJDJhZXVA" - ], - "license": "MIT" - }, - "src/LBPair.sol": { - "keccak256": "0x0a32587fe5c54fd5b0cf6fd426fcc7b8772963d2ce8838d7a589e3f2b9f802bc", - "urls": [ - "bzz-raw://b607ae66306c0e28e5cca6a6f9dd353ec44b6670be429b267c66a6b41cb5a88c", - "dweb:/ipfs/QmaKc2unoFGJsLL5cGpe6vvi3ZHv7uHHXvkVNx3MNQkdu6" - ], - "license": "MIT" - }, - "src/LBQuoter.sol": { - "keccak256": "0xeccd5d8873f709fa164aaa8f742675bc547e137f71a292e69104900849339ba0", - "urls": [ - "bzz-raw://97ff96e368ef092930b738140565bbf34e7227b32e4e866c8891bf1d16e4e9ff", - "dweb:/ipfs/QmRDNpvERz5brRX81qE64QmGbfPBoP15V9bqwYfXEDmNnx" - ], - "license": "MIT" - }, - "src/LBRouter.sol": { - "keccak256": "0x1888cc5b7dc98cab321022981ee8afbaabbac17f930f162402401c9b723aa7d0", - "urls": [ - "bzz-raw://58d29cb3db3d8a5559ea061a402cdd5a38e73a62dbc2bf4e6b68ab7bd8745d34", - "dweb:/ipfs/QmbZhFFyEzn1V4YZ9ifkJevhRv19meCg5UMP458YfJAEFq" - ], - "license": "MIT" - }, - "src/LBToken.sol": { - "keccak256": "0xb8d572e46a584a5fd98b079a2893ff11c010c8d49e0c580fd9f71b483b8c3bb3", - "urls": [ - "bzz-raw://c14c154d7e56becf8f9de568d0bd6be351ceec8e35541578fd44b4dae8d7ff11", - "dweb:/ipfs/QmcDUyQZ9m4ZsubKDmZgrEvVTeyUaqvySDHNVXt7XCx4Ma" - ], - "license": "MIT" - }, - "src/interfaces/ILBFactory.sol": { - "keccak256": "0xed93d4340ee8189a69238943a73663adbc06d2dc507dc27f06fa01d06a723d88", - "urls": [ - "bzz-raw://8701cb1adf9138a69fb8fe272b7a23b1fd132a53e2cac06ab72cb5cc59216c98", - "dweb:/ipfs/QmWE8TxPn5m8D1epczJV23a7Ag95PpAhUTJYbA6fNiVzpu" - ], - "license": "MIT" - }, - "src/interfaces/ILBFlashLoanCallback.sol": { - "keccak256": "0x8f02c16e8d7ae8a27693bc23fbe35d29b92c6db3c9238a22aca13e1add39eb62", - "urls": [ - "bzz-raw://b4fd65c9d683258d32dcd3f467634d88b2d1114394a9d9d140e7bb2d41523e56", - "dweb:/ipfs/QmdhmzvoUoxzXcFJFeM5PxGWNNBWbEDM3B8NqGF8qJ3QCc" - ], - "license": "MIT" - }, - "src/interfaces/ILBHooks.sol": { - "keccak256": "0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a", - "urls": [ - "bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109", - "dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyFactory.sol": { - "keccak256": "0x72bf0439b140b32237443d340ddee595fd2b063b5f65657389c72520cf20f2ca", - "urls": [ - "bzz-raw://9248e33a1888202df90dbbc1b9616fd84cf44f509b37717e19cb7bb54254eadc", - "dweb:/ipfs/QmVa1FUaxUya5JYHAr8z25365qtCnrMSz3q8uz1RdA19Wy" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyPair.sol": { - "keccak256": "0x006a101cb88f36ad81a7dcc17dae3c7e9b336ecc8e8897981c2ea6739dcc772a", - "urls": [ - "bzz-raw://37ef9214a00f4858934883c5692b4a23dddb0db3852c049b1f61630b2ec457bf", - "dweb:/ipfs/Qmc76ii9U4G7uqQ6GdgW4XBvBHm6qyCRmor4Zx6uBZBTob" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyRouter.sol": { - "keccak256": "0xc924d832dfd6292a90f26174d8159dd52a6b16b8b3c1ae526521637038917eea", - "urls": [ - "bzz-raw://b3d4864f4b3c623ffa03ff8325c7ed084d5d9137e073779e5ddbcdfd1d9b30fb", - "dweb:/ipfs/QmPGQ5V3NBPQRfHyrdL9G7gnw4ccYdwqR5FfufGRijnBBQ" - ], - "license": "MIT" - }, - "src/interfaces/ILBLegacyToken.sol": { - "keccak256": "0xe8eda8ede95bfedf01e1cbef81ba7958abcdd41990cf007957eb1a83766eb727", - "urls": [ - "bzz-raw://f088b7dee0db1d1a1184ae37167d2e381729c9f5c5a495f50189848ff5961a15", - "dweb:/ipfs/QmRCV1fzfQfMPov7UezumRQkTyfUdsdYaT7Scex1PqQgYY" - ], - "license": "MIT" - }, - "src/interfaces/ILBPair.sol": { - "keccak256": "0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70", - "urls": [ - "bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51", - "dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB" - ], - "license": "MIT" - }, - "src/interfaces/ILBRouter.sol": { - "keccak256": "0x3faae84c13214d52f519d4dca8d48be1ad4176c75ec62816e7484555a30628ff", - "urls": [ - "bzz-raw://5c59c2e3322c61109e4044b80838359a2854dc416431175ca2bf6b58ec329168", - "dweb:/ipfs/QmUXkCAiPss64mSjLnvaq4pYrQA8yhid5oqnh1B91irofL" - ], - "license": "MIT" - }, - "src/interfaces/ILBToken.sol": { - "keccak256": "0xb7d67955bf66ab1d822fccf69e26810c04ef2cd0870c6decb4e4cdc52994dce9", - "urls": [ - "bzz-raw://6c0d53748545af906962f17c1b1904e430ebd928984caa3e259cefcbb752349f", - "dweb:/ipfs/QmY9k3mYJRbbaX5G6xuwRnP4zKpPL1g8PC4VPFxLPJC5fz" - ], - "license": "MIT" - }, - "src/interfaces/ISovrynLBFactoryV1.sol": { - "keccak256": "0x58736bc21c199989855a1c9ea424c99a18bff9b77242a0ff88ed40b66f9f6552", - "urls": [ - "bzz-raw://3b05b9f2c4df74197a9d82a771bbadda77d24a74a3f7ea3e0f259644618cf24f", - "dweb:/ipfs/Qmd87UyK6sDyvm9nA3dmGy9Jm4Lcj12wiBVc488cqn1eKV" - ], - "license": "GPL-3.0" - }, - "src/interfaces/ISovrynLBPairV1.sol": { - "keccak256": "0x2bfd0bbfa7c4261bffb8b961ca4f25de148919bff54b3bfa7b381e805b3e8958", - "urls": [ - "bzz-raw://a446530a70e4b21f5b9ff569787aeb49cf47644d5ce1ab58a664c50f28e1bd76", - "dweb:/ipfs/QmUEo5uddaXkQ5VAG28nsoxXYmwwzuktw5yjqv9gnCxeaH" - ], - "license": "GPL-3.0" - }, - "src/interfaces/IWNATIVE.sol": { - "keccak256": "0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3", - "urls": [ - "bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa", - "dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74" - ], - "license": "MIT" - }, - "src/libraries/BinHelper.sol": { - "keccak256": "0x799d219605a3f08df9ba0e7d4aee6a6a7f0ee2e64eed09e2e3f710e99da40b49", - "urls": [ - "bzz-raw://dda5893016c8b7057b4eb55c5c623ca501863bb9f3297d8e107b5c859fea1b7f", - "dweb:/ipfs/Qmdvi9YhQ5JLyMC6Qx3zHn7NNKVt5DvFYEstDnHjP5xJJ6" - ], - "license": "MIT" - }, - "src/libraries/Clone.sol": { - "keccak256": "0x594933ba1ceef90636ac84a1af9cfc5a0be1fcb4340a8a0420fb4505a7012d70", - "urls": [ - "bzz-raw://25ed9aa543e706d2e87f29130c9e40c7b73528138b53dae5c05d664d28fae97b", - "dweb:/ipfs/QmSiFFQBhxpJdrrdYMRYX3TDhKY7cWgYPjusonV3Srp2ss" - ], - "license": "MIT" - }, - "src/libraries/Constants.sol": { - "keccak256": "0x9e8f98ab393cf7f0a7a0774b9f0f912ec5dd86fdfdd041423978f3d6acce21e2", - "urls": [ - "bzz-raw://82b49fa2c74c482822957cc7bd9ba693e077c9024451be40f4a1037e2d5cf009", - "dweb:/ipfs/QmbMP3LSYQttZhiPb2hpM7k1697HBo93Bi6DgQGoZZZ3ZD" - ], - "license": "MIT" - }, - "src/libraries/FeeHelper.sol": { - "keccak256": "0xe8705347313b3e3fa998bd3e4b9585ff4a2e7c698dc5d8bc48e1a0f99dd8a084", - "urls": [ - "bzz-raw://f148c2d49352330df0d8c51941a07035b9b73938a82bf797b2872c6872d687ee", - "dweb:/ipfs/QmRuhLphH6joRyuryx322PvZjxtA3J122G86APyg4mjMra" - ], - "license": "MIT" - }, - "src/libraries/Hooks.sol": { - "keccak256": "0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959", - "urls": [ - "bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a", - "dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop" - ], - "license": "MIT" - }, - "src/libraries/ImmutableClone.sol": { - "keccak256": "0x1d51266d73063eaac933dcfd5a26b2899f7a41df68fd6560c5e2d22bafc12151", - "urls": [ - "bzz-raw://9c1b3135eea3d13dad1ff29d66cac99b0a2716b299d1a6294eed2b50763ac156", - "dweb:/ipfs/QmVBxfcVUX9zjEa29WGrJRsJhCKp6gbMyBimbeiRWeKwEr" - ], - "license": "MIT" - }, - "src/libraries/OracleHelper.sol": { - "keccak256": "0xbc5a289b8a931f42d02af2d68fdedcb5a9cb847a5927f170b02551c5e65bf2f9", - "urls": [ - "bzz-raw://773c0b6b1e6ab9a33e81a9b55f4a76082bb88501e75dad73b9a4e18fa8f302f5", - "dweb:/ipfs/QmeSDqPcduZpSdUGn49v19Uhc8fZFgg7Sv3Lw5N9rRqWTj" - ], - "license": "MIT" - }, - "src/libraries/PairParameterHelper.sol": { - "keccak256": "0xcc632c91ba3c5d4f749fe7ed78fdb19e3bde4fc8948aa46060cd8995474dd0d3", - "urls": [ - "bzz-raw://eedc0239528182198ea0d407383013bbccbf6532bb27c5066ff0776b02fd65e1", - "dweb:/ipfs/QmR5yYS9ferSWq3VGb6Qw6v1cQeZKXgeQCzP4wvDNekx4f" - ], - "license": "MIT" - }, - "src/libraries/PriceHelper.sol": { - "keccak256": "0x7a5ddde1ce4627d417c3c9a79d2259a77a82d72b222fb4fc2aafeb6eb98fa25a", - "urls": [ - "bzz-raw://9ef81235ab850bbefe635b8556bc97f7e2103e95eca4a62e6588976f9c529d9e", - "dweb:/ipfs/Qmcwf3Sg3Awm7wHxZG56YkPwh5ghrp36jximk3ZKmvxCft" - ], - "license": "MIT" - }, - "src/libraries/ReentrancyGuardUpgradeable.sol": { - "keccak256": "0x328992de02832ed293994eaea742f5e06412ac3d1da53a75306e40332c214df7", - "urls": [ - "bzz-raw://d4bf9d254d71f805b7b33f8f06382ac6fec1e43c9b099310b82b5130ea6b17f9", - "dweb:/ipfs/QmYe968s6TQD666FJnP3FVByWPfTMXH6fWDbGV3S95jzJv" - ], - "license": "MIT" - }, - "src/libraries/SovrynLBLibrary.sol": { - "keccak256": "0xe696339e45b0da06dde7d7a0fe0cdfb3c22a86ebd35307cdf48a4cc83fcff658", - "urls": [ - "bzz-raw://4341c4415e52e8376db9a69f2a4bbbd608ec4b7ee0abeee4c032105ca70a81d3", - "dweb:/ipfs/QmdMCXCagQK1CmgzGuy8hMv4HJjUBZufUxnQeWmHEX2Ric" - ], - "license": "GPL-3.0" - }, - "src/libraries/TokenHelper.sol": { - "keccak256": "0x5d1f5984b6c6bc9cfb4cad89e754ede3b01e9430f0572819f8ba18d8c7c2e154", - "urls": [ - "bzz-raw://382a71322e45e66df0fdc85e6a2f6dd968b4a7d1bee0dea02ea8525b1bf433e8", - "dweb:/ipfs/QmW5SpmmmdjNPRAjfBEABV953nqgzmY8Tkays6wn8xL1wu" - ], - "license": "MIT" - }, - "src/libraries/math/BitMath.sol": { - "keccak256": "0x58abecbbb2ae9860495bb1758ce2b9dd35c9f2881398c03a33b720771a7d2994", - "urls": [ - "bzz-raw://791a314f4187199412daf5240dc9ab449dff3780b60316b8b1c6d7ba1bd561de", - "dweb:/ipfs/QmNQUg6wPr8YrifjvW5MtG1QstE7Gkxy5A7FTGqcGSxGFV" - ], - "license": "MIT" - }, - "src/libraries/math/Encoded.sol": { - "keccak256": "0xa6752b1d81568f242adc2bbeb45fbc143c08dade1910ce5d27ff97067c4029ba", - "urls": [ - "bzz-raw://a1adf21fef72586d0b057fe6cbabb1e928fdbb54bf89b9fa9bcf798dfeb533d8", - "dweb:/ipfs/QmQr8MgwAdZoVM4LCdXgWTtCcw8HkR6Sp9huc7U45tELwY" - ], - "license": "MIT" - }, - "src/libraries/math/LiquidityConfigurations.sol": { - "keccak256": "0x301fcfba5f0ba64d7206c57082b6adc1650aca3432a20b9f23bb2931d2d4cef1", - "urls": [ - "bzz-raw://af9cbf518b32b22e5225af0c97d729a3786604cb94fc6de6fbadb29a345f48d5", - "dweb:/ipfs/QmVrfsK4od7ew4kREYuxTEnt64LDpqMjAaLRr9HSxhqWnG" - ], - "license": "MIT" - }, - "src/libraries/math/PackedUint128Math.sol": { - "keccak256": "0xb17b0f32ed8b0388cfd76d4d2d902ab125b87e63614e1e42d8f1d628aaaa7901", - "urls": [ - "bzz-raw://86cc6eed7dfbef7d32d703840698a6b2d0d603a20125cdf327dfe3d78f77c3b4", - "dweb:/ipfs/QmaVh32AHevqAsWe75xNfog2b2Y5hGg7ksuvMnrYKhkXSf" - ], - "license": "MIT" - }, - "src/libraries/math/SafeCast.sol": { - "keccak256": "0x6f11de18a77cf44364a598890c634a59d995dfa7a3fdea360d98e4549f6727ed", - "urls": [ - "bzz-raw://d8a4477235fd194ab6464025148d1c2ff51088b0ffba4013e25a10d01c11722e", - "dweb:/ipfs/QmVNf6Psg6QXFcWa3CMmUxJkvGaN8Z2SqFafsyJukgfZva" - ], - "license": "MIT" - }, - "src/libraries/math/SampleMath.sol": { - "keccak256": "0x4fc4700a17265e56bd5f90e45ca0ed1cc1b7dec111d5957fb288265434979b63", - "urls": [ - "bzz-raw://d34922932117cbd01dd8a10d9efbc9a9ebd2ae321425ea0fe00b6a2661224f20", - "dweb:/ipfs/QmQDvaxoYCupk6fuDxicxZLmWzudTdw6fRj7i2g6Lxstfr" - ], - "license": "MIT" - }, - "src/libraries/math/TreeMath.sol": { - "keccak256": "0x0a8209a43df04fe4aec23bf55ebc3205584db66d1d09edc8475af20fa6ff0f3b", - "urls": [ - "bzz-raw://2d79b602a33078d3115803d469e75a49dec268739898fcc9934ef0489708bcf1", - "dweb:/ipfs/QmbS2TvsnMvkYnT2UtPuEPtNWYgupFptr6y3MMfGJp23dE" - ], - "license": "MIT" - }, - "src/libraries/math/Uint128x128Math.sol": { - "keccak256": "0x580596dfca3fc3ec8f058e8832fdc063f276f8c5d1232c8ba1f134d6542d24ba", - "urls": [ - "bzz-raw://5fc1bab07db13bd6bc4f76049507554a70489a9c1316994f51e481276dcd7a7f", - "dweb:/ipfs/QmaStcfFRCeLscGisCgzKpMc1tmJufgL61PRvtV9TCR5zb" - ], - "license": "MIT" - }, - "src/libraries/math/Uint256x256Math.sol": { - "keccak256": "0x7d0e41d55d3f70d45e04cb082c0a4832af2bda49ed76116b49256521bfd22cf2", - "urls": [ - "bzz-raw://01de3aa321eb2eb4e0f6098d6093ca03220156dd42c699b00f347d524f295242", - "dweb:/ipfs/QmYbm5mMWBmv7v2jzDb9vxRqTp9BaFvZk9Jhi3MLv5FcwY" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "script/deploy-core.s.sol", - "id": 51790, - "exportedSymbols": { - "BipsConfig": [ - 51378 - ], - "CoreDeployer": [ - 51789 - ], - "IERC20": [ - 47419 - ], - "ILBFactory": [ - 62330 - ], - "ILBLegacyFactory": [ - 62894 - ], - "ILBLegacyRouter": [ - 63719 - ], - "ILBRouter": [ - 64818 - ], - "ISovrynLBFactoryV1": [ - 65015 - ], - "IWNATIVE": [ - 65673 - ], - "LBFactory": [ - 54016 - ], - "LBPair": [ - 56821 - ], - "LBQuoter": [ - 58109 - ], - "LBRouter": [ - 61346 - ], - "Script": [ - 113 - ], - "ScriptBase": [ - 74 - ], - "StdChains": [ - 3507 - ], - "StdCheatsSafe": [ - 5567 - ], - "StdStorage": [ - 7451 - ], - "StdStyle": [ - 10301 - ], - "StdUtils": [ - 11087 - ], - "VmSafe": [ - 13989 - ], - "console": [ - 22628 - ], - "console2": [ - 30753 - ], - "safeconsole": [ - 45478 - ], - "stdJson": [ - 7277 - ], - "stdMath": [ - 7419 - ], - "stdStorageSafe": [ - 8499 - ] - }, - "nodeType": "SourceUnit", - "src": "33:4025:44", - "nodes": [ - { - "id": 51380, - "nodeType": "PragmaDirective", - "src": "33:24:44", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ] - }, - { - "id": 51381, - "nodeType": "ImportDirective", - "src": "59:30:44", - "nodes": [], - "absolutePath": "lib/forge-std/src/Script.sol", - "file": "forge-std/Script.sol", - "nameLocation": "-1:-1:-1", - "scope": 51790, - "sourceUnit": 114, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 51384, - "nodeType": "ImportDirective", - "src": "91:56:44", - "nodes": [], - "absolutePath": "src/LBFactory.sol", - "file": "src/LBFactory.sol", - "nameLocation": "-1:-1:-1", - "scope": 51790, - "sourceUnit": 54017, - "symbolAliases": [ - { - "foreign": { - "id": 51382, - "name": "ILBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62330, - "src": "99:10:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 51383, - "name": "LBFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 54016, - "src": "111:9:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 51391, - "nodeType": "ImportDirective", - "src": "148:116:44", - "nodes": [], - "absolutePath": "src/LBRouter.sol", - "file": "src/LBRouter.sol", - "nameLocation": "-1:-1:-1", - "scope": 51790, - "sourceUnit": 61347, - "symbolAliases": [ - { - "foreign": { - "id": 51385, - "name": "ILBRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 64818, - "src": "156:9:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 51386, - "name": "ISovrynLBFactoryV1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65015, - "src": "167:16:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 51387, - "name": "ILBLegacyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62894, - "src": "185:16:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 51388, - "name": "ILBLegacyRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63719, - "src": "203:15:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 51389, - "name": "IWNATIVE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65673, - "src": "220:8:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 51390, - "name": "LBRouter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61346, - "src": "230:8:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 51394, - "nodeType": "ImportDirective", - "src": "265:46:44", - "nodes": [], - "absolutePath": "src/LBPair.sol", - "file": "src/LBPair.sol", - "nameLocation": "-1:-1:-1", - "scope": 51790, - "sourceUnit": 56822, - "symbolAliases": [ - { - "foreign": { - "id": 51392, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47419, - "src": "273:6:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 51393, - "name": "LBPair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56821, - "src": "281:6:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 51396, - "nodeType": "ImportDirective", - "src": "312:42:44", - "nodes": [], - "absolutePath": "src/LBQuoter.sol", - "file": "src/LBQuoter.sol", - "nameLocation": "-1:-1:-1", - "scope": 51790, - "sourceUnit": 58110, - "symbolAliases": [ - { - "foreign": { - "id": 51395, - "name": "LBQuoter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58109, - "src": "320:8:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 51398, - "nodeType": "ImportDirective", - "src": "356:52:44", - "nodes": [], - "absolutePath": "script/config/bips-config.sol", - "file": "./config/bips-config.sol", - "nameLocation": "-1:-1:-1", - "scope": 51790, - "sourceUnit": 51379, - "symbolAliases": [ - { - "foreign": { - "id": 51397, - "name": "BipsConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51378, - "src": "364:10:44", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 51789, - "nodeType": "ContractDefinition", - "src": "410:3647:44", - "nodes": [ - { - "id": 51403, - "nodeType": "UsingForDirective", - "src": "448:25:44", - "nodes": [], - "global": false, - "libraryName": { - "id": 51401, - "name": "stdJson", - "nameLocations": [ - "454:7:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 7277, - "src": "454:7:44" - }, - "typeName": { - "id": 51402, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "466:6:44", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - } - }, - { - "id": 51406, - "nodeType": "VariableDeclaration", - "src": "479:45:44", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "FLASHLOAN_FEE", - "nameLocation": "504:13:44", - "scope": 51789, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 51404, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "479:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "35653132", - "id": 51405, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "520:4:44", - "typeDescriptions": { - "typeIdentifier": "t_rational_5000000000000_by_1", - "typeString": "int_const 5000000000000" - }, - "value": "5e12" - }, - "visibility": "private" - }, - { - "id": 51419, - "nodeType": "StructDefinition", - "src": "531:182:44", - "nodes": [], - "canonicalName": "CoreDeployer.Deployment", - "members": [ - { - "constant": false, - "id": 51408, - "mutability": "mutable", - "name": "factoryV1", - "nameLocation": "567:9:44", - "nodeType": "VariableDeclaration", - "scope": 51419, - "src": "559:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 51407, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "559:7:44", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 51410, - "mutability": "mutable", - "name": "factoryV2", - "nameLocation": "594:9:44", - "nodeType": "VariableDeclaration", - "scope": 51419, - "src": "586:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 51409, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "586:7:44", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 51412, - "mutability": "mutable", - "name": "multisig", - "nameLocation": "621:8:44", - "nodeType": "VariableDeclaration", - "scope": 51419, - "src": "613:16:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 51411, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "613:7:44", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 51414, - "mutability": "mutable", - "name": "routerV1", - "nameLocation": "647:8:44", - "nodeType": "VariableDeclaration", - "scope": 51419, - "src": "639:16:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 51413, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "639:7:44", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 51416, - "mutability": "mutable", - "name": "routerV2", - "nameLocation": "673:8:44", - "nodeType": "VariableDeclaration", - "scope": 51419, - "src": "665:16:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 51415, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "665:7:44", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 51418, - "mutability": "mutable", - "name": "wNative", - "nameLocation": "699:7:44", - "nodeType": "VariableDeclaration", - "scope": 51419, - "src": "691:15:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 51417, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "691:7:44", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "name": "Deployment", - "nameLocation": "538:10:44", - "scope": 51789, - "visibility": "public" - }, - { - "id": 51424, - "nodeType": "VariableDeclaration", - "src": "719:33:44", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "chains", - "nameLocation": "728:6:44", - "scope": 51789, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 51420, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "719:6:44", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 51421, - "nodeType": "ArrayTypeName", - "src": "719:8:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "value": { - "components": [ - { - "hexValue": "626f625f746573746e6574", - "id": 51422, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "738:13:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_93a0b9b630205dcc8d1f61ef80545f4e96bf600cccc7fadbee4b4f7e89c8a537", - "typeString": "literal_string \"bob_testnet\"" - }, - "value": "bob_testnet" - } - ], - "id": 51423, - "isConstant": false, - "isInlineArray": true, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "737:15:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_memory_ptr_$1_memory_ptr", - "typeString": "string memory[1] memory" - } - }, - "visibility": "internal" - }, - { - "id": 51431, - "nodeType": "FunctionDefinition", - "src": "759:71:44", - "nodes": [], - "body": { - "id": 51430, - "nodeType": "Block", - "src": "783:47:44", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 51427, - "name": "_overwriteDefaultArbitrumRPC", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51788, - "src": "793:28:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 51428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "793:30:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51429, - "nodeType": "ExpressionStatement", - "src": "793:30:44" - } - ] - }, - "functionSelector": "0a9254e4", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setUp", - "nameLocation": "768:5:44", - "parameters": { - "id": 51425, - "nodeType": "ParameterList", - "parameters": [], - "src": "773:2:44" - }, - "returnParameters": { - "id": 51426, - "nodeType": "ParameterList", - "parameters": [], - "src": "783:0:44" - }, - "scope": 51789, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 51769, - "nodeType": "FunctionDefinition", - "src": "836:2892:44", - "nodes": [], - "body": { - "id": 51768, - "nodeType": "Block", - "src": "858:2870:44", - "nodes": [], - "statements": [ - { - "assignments": [ - 51435 - ], - "declarations": [ - { - "constant": false, - "id": 51435, - "mutability": "mutable", - "name": "json", - "nameLocation": "882:4:44", - "nodeType": "VariableDeclaration", - "scope": 51768, - "src": "868:18:44", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 51434, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "868:6:44", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "id": 51440, - "initialValue": { - "arguments": [ - { - "hexValue": "7363726970742f636f6e6669672f6465706c6f796d656e74732e6a736f6e", - "id": 51438, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "901:32:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_90ef31ccfd477d03cb7f0d100284fe8a1a4471daa14ac4b2ae6d611df7c23420", - "typeString": "literal_string \"script/config/deployments.json\"" - }, - "value": "script/config/deployments.json" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_90ef31ccfd477d03cb7f0d100284fe8a1a4471daa14ac4b2ae6d611df7c23420", - "typeString": "literal_string \"script/config/deployments.json\"" - } - ], - "expression": { - "id": 51436, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "889:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51437, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "892:8:44", - "memberName": "readFile", - "nodeType": "MemberAccess", - "referencedDeclaration": 11914, - "src": "889:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$", - "typeString": "function (string memory) view external returns (string memory)" - } - }, - "id": 51439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "889:45:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "868:66:44" - }, - { - "assignments": [ - 51442 - ], - "declarations": [ - { - "constant": false, - "id": 51442, - "mutability": "mutable", - "name": "deployer", - "nameLocation": "952:8:44", - "nodeType": "VariableDeclaration", - "scope": 51768, - "src": "944:16:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 51441, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "944:7:44", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 51450, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "4445504c4f5945525f505249564154455f4b4559", - "id": 51447, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "989:22:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_10bad1b7ed687f9465c6061f1b329fcc587cd71a7cefd980390853109074c1d4", - "typeString": "literal_string \"DEPLOYER_PRIVATE_KEY\"" - }, - "value": "DEPLOYER_PRIVATE_KEY" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_10bad1b7ed687f9465c6061f1b329fcc587cd71a7cefd980390853109074c1d4", - "typeString": "literal_string \"DEPLOYER_PRIVATE_KEY\"" - } - ], - "expression": { - "id": 51445, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "978:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "981:7:44", - "memberName": "envUint", - "nodeType": "MemberAccess", - "referencedDeclaration": 11580, - "src": "978:10:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) view external returns (uint256)" - } - }, - "id": 51448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "978:34:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 51443, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "963:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51444, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "966:11:44", - "memberName": "rememberKey", - "nodeType": "MemberAccess", - "referencedDeclaration": 13941, - "src": "963:14:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_address_$", - "typeString": "function (uint256) external returns (address)" - } - }, - "id": 51449, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "963:50:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "944:69:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "4465706c6f79657220616464726573733a202573", - "id": 51454, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1036:22:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bf34df8af0eadde98b5a3dd9fe0ab0baba4d26315a4b622eae78fb8a9c24d03f", - "typeString": "literal_string \"Deployer address: %s\"" - }, - "value": "Deployer address: %s" - }, - { - "id": 51455, - "name": "deployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51442, - "src": "1060:8:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_bf34df8af0eadde98b5a3dd9fe0ab0baba4d26315a4b622eae78fb8a9c24d03f", - "typeString": "literal_string \"Deployer address: %s\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51451, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "1024:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1032:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15323, - "src": "1024:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", - "typeString": "function (string memory,address) view" - } - }, - "id": 51456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1024:45:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51457, - "nodeType": "ExpressionStatement", - "src": "1024:45:44" - }, - { - "body": { - "id": 51766, - "nodeType": "Block", - "src": "1124:2598:44", - "statements": [ - { - "assignments": [ - 51470 - ], - "declarations": [ - { - "constant": false, - "id": 51470, - "mutability": "mutable", - "name": "rawDeploymentData", - "nameLocation": "1151:17:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "1138:30:44", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 51469, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1138:5:44", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 51484, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "hexValue": "2e", - "id": 51477, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1209:3:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf", - "typeString": "literal_string \".\"" - }, - "value": "." - }, - { - "baseExpression": { - "id": 51478, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51424, - "src": "1214:6:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 51480, - "indexExpression": { - "id": 51479, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51459, - "src": "1221:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1214:9:44", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf", - "typeString": "literal_string \".\"" - }, - { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - ], - "expression": { - "id": 51475, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "1192:3:44", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 51476, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1196:12:44", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "1192:16:44", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 51481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1192:32:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 51474, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1185:6:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_string_storage_ptr_$", - "typeString": "type(string storage pointer)" - }, - "typeName": { - "id": 51473, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1185:6:44", - "typeDescriptions": {} - } - }, - "id": 51482, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1185:40:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 51471, - "name": "json", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51435, - "src": "1171:4:44", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 51472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1176:8:44", - "memberName": "parseRaw", - "nodeType": "MemberAccess", - "referencedDeclaration": 6723, - "src": "1171:13:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory,string memory) pure returns (bytes memory)" - } - }, - "id": 51483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1171:55:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1138:88:44" - }, - { - "assignments": [ - 51487 - ], - "declarations": [ - { - "constant": false, - "id": 51487, - "mutability": "mutable", - "name": "deployment", - "nameLocation": "1258:10:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "1240:28:44", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment" - }, - "typeName": { - "id": 51486, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51485, - "name": "Deployment", - "nameLocations": [ - "1240:10:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 51419, - "src": "1240:10:44" - }, - "referencedDeclaration": 51419, - "src": "1240:10:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_storage_ptr", - "typeString": "struct CoreDeployer.Deployment" - } - }, - "visibility": "internal" - } - ], - "id": 51494, - "initialValue": { - "arguments": [ - { - "id": 51490, - "name": "rawDeploymentData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51470, - "src": "1282:17:44", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 51491, - "name": "Deployment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51419, - "src": "1302:10:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Deployment_$51419_storage_ptr_$", - "typeString": "type(struct CoreDeployer.Deployment storage pointer)" - } - } - ], - "id": 51492, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1301:12:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Deployment_$51419_storage_ptr_$", - "typeString": "type(struct CoreDeployer.Deployment storage pointer)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_struct$_Deployment_$51419_storage_ptr_$", - "typeString": "type(struct CoreDeployer.Deployment storage pointer)" - } - ], - "expression": { - "id": 51488, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "1271:3:44", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 51489, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1275:6:44", - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "1271:10:44", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 51493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1271:43:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1240:74:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "0a4465706c6f79696e672056322e31206f6e202573", - "id": 51498, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1341:24:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_398b0f2014fb0121d5101b97c74d932b590cf4dd08006cb647bd9566c2b85430", - "typeString": "literal_string hex\"0a4465706c6f79696e672056322e31206f6e202573\"" - }, - "value": "\nDeploying V2.1 on %s" - }, - { - "baseExpression": { - "id": 51499, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51424, - "src": "1367:6:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 51501, - "indexExpression": { - "id": 51500, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51459, - "src": "1374:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1367:9:44", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_398b0f2014fb0121d5101b97c74d932b590cf4dd08006cb647bd9566c2b85430", - "typeString": "literal_string hex\"0a4465706c6f79696e672056322e31206f6e202573\"" - }, - { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - ], - "expression": { - "id": 51495, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "1329:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1337:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15289, - "src": "1329:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory,string memory) view" - } - }, - "id": 51502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1329:48:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51503, - "nodeType": "ExpressionStatement", - "src": "1329:48:44" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "arguments": [ - { - "baseExpression": { - "id": 51509, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51424, - "src": "1431:6:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 51511, - "indexExpression": { - "id": 51510, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51459, - "src": "1438:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1431:9:44", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - ], - "expression": { - "id": 51507, - "name": "StdChains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3507, - "src": "1412:9:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StdChains_$3507_$", - "typeString": "type(contract StdChains)" - } - }, - "id": 51508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1422:8:44", - "memberName": "getChain", - "nodeType": "MemberAccess", - "referencedDeclaration": 2842, - "src": "1412:18:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$_t_struct$_Chain_$2774_memory_ptr_$", - "typeString": "function (string memory) returns (struct StdChains.Chain memory)" - } - }, - "id": 51512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1412:29:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Chain_$2774_memory_ptr", - "typeString": "struct StdChains.Chain memory" - } - }, - "id": 51513, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1442:6:44", - "memberName": "rpcUrl", - "nodeType": "MemberAccess", - "referencedDeclaration": 2773, - "src": "1412:36:44", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 51504, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1392:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51506, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1395:16:44", - "memberName": "createSelectFork", - "nodeType": "MemberAccess", - "referencedDeclaration": 14056, - "src": "1392:19:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) external returns (uint256)" - } - }, - "id": 51514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1392:57:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51515, - "nodeType": "ExpressionStatement", - "src": "1392:57:44" - }, - { - "expression": { - "arguments": [ - { - "id": 51519, - "name": "deployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51442, - "src": "1477:8:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51516, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1464:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51518, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1467:9:44", - "memberName": "broadcast", - "nodeType": "MemberAccess", - "referencedDeclaration": 12391, - "src": "1464:12:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", - "typeString": "function (address) external" - } - }, - "id": 51520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1464:22:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51521, - "nodeType": "ExpressionStatement", - "src": "1464:22:44" - }, - { - "assignments": [ - 51524 - ], - "declarations": [ - { - "constant": false, - "id": 51524, - "mutability": "mutable", - "name": "factoryV2", - "nameLocation": "1510:9:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "1500:19:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - "typeName": { - "id": 51523, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51522, - "name": "LBFactory", - "nameLocations": [ - "1500:9:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "1500:9:44" - }, - "referencedDeclaration": 54016, - "src": "1500:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "visibility": "internal" - } - ], - "id": 51532, - "initialValue": { - "arguments": [ - { - "id": 51528, - "name": "deployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51442, - "src": "1536:8:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 51529, - "name": "deployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51442, - "src": "1546:8:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 51530, - "name": "FLASHLOAN_FEE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51406, - "src": "1556:13:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 51527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1522:13:44", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_contract$_LBFactory_$54016_$", - "typeString": "function (address,address,uint256) returns (contract LBFactory)" - }, - "typeName": { - "id": 51526, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51525, - "name": "LBFactory", - "nameLocations": [ - "1526:9:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54016, - "src": "1526:9:44" - }, - "referencedDeclaration": 54016, - "src": "1526:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - } - }, - "id": 51531, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1522:48:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1500:70:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "4c42466163746f7279206465706c6f796564202d2d3e", - "id": 51536, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1596:24:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c81f4c7f707f12ec49cf80f86e973f387dcd526cbea1bbeaaa1133407641c217", - "typeString": "literal_string \"LBFactory deployed -->\"" - }, - "value": "LBFactory deployed -->" - }, - { - "arguments": [ - { - "id": 51539, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "1630:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - ], - "id": 51538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1622:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51537, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1622:7:44", - "typeDescriptions": {} - } - }, - "id": 51540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1622:18:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c81f4c7f707f12ec49cf80f86e973f387dcd526cbea1bbeaaa1133407641c217", - "typeString": "literal_string \"LBFactory deployed -->\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51533, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "1584:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1592:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15323, - "src": "1584:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", - "typeString": "function (string memory,address) view" - } - }, - "id": 51541, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1584:57:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51542, - "nodeType": "ExpressionStatement", - "src": "1584:57:44" - }, - { - "expression": { - "arguments": [ - { - "id": 51546, - "name": "deployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51442, - "src": "1669:8:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51543, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1656:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51545, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1659:9:44", - "memberName": "broadcast", - "nodeType": "MemberAccess", - "referencedDeclaration": 12391, - "src": "1656:12:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", - "typeString": "function (address) external" - } - }, - "id": 51547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1656:22:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51548, - "nodeType": "ExpressionStatement", - "src": "1656:22:44" - }, - { - "assignments": [ - 51551 - ], - "declarations": [ - { - "constant": false, - "id": 51551, - "mutability": "mutable", - "name": "pairImplementation", - "nameLocation": "1699:18:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "1692:25:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - }, - "typeName": { - "id": 51550, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51549, - "name": "LBPair", - "nameLocations": [ - "1692:6:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 56821, - "src": "1692:6:44" - }, - "referencedDeclaration": 56821, - "src": "1692:6:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "visibility": "internal" - } - ], - "id": 51557, - "initialValue": { - "arguments": [ - { - "id": 51555, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "1731:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - ], - "id": 51554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1720:10:44", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_ILBFactory_$62330_$returns$_t_contract$_LBPair_$56821_$", - "typeString": "function (contract ILBFactory) returns (contract LBPair)" - }, - "typeName": { - "id": 51553, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51552, - "name": "LBPair", - "nameLocations": [ - "1724:6:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 56821, - "src": "1724:6:44" - }, - "referencedDeclaration": 56821, - "src": "1724:6:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - } - }, - "id": 51556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1720:21:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1692:49:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "4c425061697220696d706c656d656e746174696f6e206465706c6f796564202d2d3e", - "id": 51561, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1767:36:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fb421b8e4a284e92ebf56d85710365ba68252784bbe6fe1d2124a8f6d30f9ee5", - "typeString": "literal_string \"LBPair implementation deployed -->\"" - }, - "value": "LBPair implementation deployed -->" - }, - { - "arguments": [ - { - "id": 51564, - "name": "pairImplementation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51551, - "src": "1813:18:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - ], - "id": 51563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1805:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51562, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1805:7:44", - "typeDescriptions": {} - } - }, - "id": 51565, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1805:27:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_fb421b8e4a284e92ebf56d85710365ba68252784bbe6fe1d2124a8f6d30f9ee5", - "typeString": "literal_string \"LBPair implementation deployed -->\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51558, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "1755:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1763:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15323, - "src": "1755:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", - "typeString": "function (string memory,address) view" - } - }, - "id": 51566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1755:78:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51567, - "nodeType": "ExpressionStatement", - "src": "1755:78:44" - }, - { - "expression": { - "arguments": [ - { - "id": 51571, - "name": "deployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51442, - "src": "1861:8:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51568, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1848:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1851:9:44", - "memberName": "broadcast", - "nodeType": "MemberAccess", - "referencedDeclaration": 12391, - "src": "1848:12:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", - "typeString": "function (address) external" - } - }, - "id": 51572, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1848:22:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51573, - "nodeType": "ExpressionStatement", - "src": "1848:22:44" - }, - { - "assignments": [ - 51576 - ], - "declarations": [ - { - "constant": false, - "id": 51576, - "mutability": "mutable", - "name": "routerV2", - "nameLocation": "1893:8:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "1884:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - }, - "typeName": { - "id": 51575, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51574, - "name": "LBRouter", - "nameLocations": [ - "1884:8:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 61346, - "src": "1884:8:44" - }, - "referencedDeclaration": 61346, - "src": "1884:8:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - } - }, - "visibility": "internal" - } - ], - "id": 51590, - "initialValue": { - "arguments": [ - { - "id": 51580, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "1934:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - { - "arguments": [ - { - "expression": { - "id": 51582, - "name": "deployment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51487, - "src": "1978:10:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment memory" - } - }, - "id": 51583, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1989:9:44", - "memberName": "factoryV1", - "nodeType": "MemberAccess", - "referencedDeclaration": 51408, - "src": "1978:20:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 51581, - "name": "ISovrynLBFactoryV1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65015, - "src": "1961:16:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ISovrynLBFactoryV1_$65015_$", - "typeString": "type(contract ISovrynLBFactoryV1)" - } - }, - "id": 51584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1961:38:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$65015", - "typeString": "contract ISovrynLBFactoryV1" - } - }, - { - "arguments": [ - { - "expression": { - "id": 51586, - "name": "deployment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51487, - "src": "2026:10:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment memory" - } - }, - "id": 51587, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2037:7:44", - "memberName": "wNative", - "nodeType": "MemberAccess", - "referencedDeclaration": 51418, - "src": "2026:18:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 51585, - "name": "IWNATIVE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65673, - "src": "2017:8:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IWNATIVE_$65673_$", - "typeString": "type(contract IWNATIVE)" - } - }, - "id": 51588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2017:28:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IWNATIVE_$65673", - "typeString": "contract IWNATIVE" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - }, - { - "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$65015", - "typeString": "contract ISovrynLBFactoryV1" - }, - { - "typeIdentifier": "t_contract$_IWNATIVE_$65673", - "typeString": "contract IWNATIVE" - } - ], - "id": 51579, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1904:12:44", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_ILBFactory_$62330_$_t_contract$_ISovrynLBFactoryV1_$65015_$_t_contract$_IWNATIVE_$65673_$returns$_t_contract$_LBRouter_$61346_$", - "typeString": "function (contract ILBFactory,contract ISovrynLBFactoryV1,contract IWNATIVE) returns (contract LBRouter)" - }, - "typeName": { - "id": 51578, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51577, - "name": "LBRouter", - "nameLocations": [ - "1908:8:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 61346, - "src": "1908:8:44" - }, - "referencedDeclaration": 61346, - "src": "1908:8:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - } - } - }, - "id": 51589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1904:155:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1884:175:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "4c42526f75746572206465706c6f796564202d2d3e", - "id": 51594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2085:23:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6469402ec21459ff5c9d52d22a3d42fbe5e19d748339f38263b355f97c2ce6f3", - "typeString": "literal_string \"LBRouter deployed -->\"" - }, - "value": "LBRouter deployed -->" - }, - { - "arguments": [ - { - "id": 51597, - "name": "routerV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51576, - "src": "2118:8:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - } - ], - "id": 51596, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2110:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51595, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2110:7:44", - "typeDescriptions": {} - } - }, - "id": 51598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2110:17:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_6469402ec21459ff5c9d52d22a3d42fbe5e19d748339f38263b355f97c2ce6f3", - "typeString": "literal_string \"LBRouter deployed -->\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51591, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2073:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2081:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15323, - "src": "2073:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", - "typeString": "function (string memory,address) view" - } - }, - "id": 51599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2073:55:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51600, - "nodeType": "ExpressionStatement", - "src": "2073:55:44" - }, - { - "expression": { - "arguments": [ - { - "id": 51604, - "name": "deployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51442, - "src": "2161:8:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51601, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "2143:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2146:14:44", - "memberName": "startBroadcast", - "nodeType": "MemberAccess", - "referencedDeclaration": 12407, - "src": "2143:17:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", - "typeString": "function (address) external" - } - }, - "id": 51605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2143:27:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51606, - "nodeType": "ExpressionStatement", - "src": "2143:27:44" - }, - { - "assignments": [ - 51609 - ], - "declarations": [ - { - "constant": false, - "id": 51609, - "mutability": "mutable", - "name": "quoter", - "nameLocation": "2193:6:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "2184:15:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBQuoter_$58109", - "typeString": "contract LBQuoter" - }, - "typeName": { - "id": 51608, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51607, - "name": "LBQuoter", - "nameLocations": [ - "2184:8:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58109, - "src": "2184:8:44" - }, - "referencedDeclaration": 58109, - "src": "2184:8:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBQuoter_$58109", - "typeString": "contract LBQuoter" - } - }, - "visibility": "internal" - } - ], - "id": 51624, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 51613, - "name": "deployment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51487, - "src": "2232:10:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment memory" - } - }, - "id": 51614, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2243:9:44", - "memberName": "factoryV1", - "nodeType": "MemberAccess", - "referencedDeclaration": 51408, - "src": "2232:20:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 51617, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "2278:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - ], - "id": 51616, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2270:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51615, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2270:7:44", - "typeDescriptions": {} - } - }, - "id": 51618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2270:18:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 51621, - "name": "routerV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51576, - "src": "2314:8:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBRouter_$61346", - "typeString": "contract LBRouter" - } - ], - "id": 51620, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2306:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51619, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2306:7:44", - "typeDescriptions": {} - } - }, - "id": 51622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2306:17:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 51612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "2202:12:44", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_address_$returns$_t_contract$_LBQuoter_$58109_$", - "typeString": "function (address,address,address) returns (contract LBQuoter)" - }, - "typeName": { - "id": 51611, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51610, - "name": "LBQuoter", - "nameLocations": [ - "2206:8:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58109, - "src": "2206:8:44" - }, - "referencedDeclaration": 58109, - "src": "2206:8:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBQuoter_$58109", - "typeString": "contract LBQuoter" - } - } - }, - "id": 51623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2202:135:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBQuoter_$58109", - "typeString": "contract LBQuoter" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2184:153:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "4c4251756f746572206465706c6f796564202d2d3e", - "id": 51628, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2363:23:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_80c2cf0ec9c0087a1b25094ee44cad0182df4a054e74bd733073e66a7fa2f15e", - "typeString": "literal_string \"LBQuoter deployed -->\"" - }, - "value": "LBQuoter deployed -->" - }, - { - "arguments": [ - { - "id": 51631, - "name": "quoter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51609, - "src": "2396:6:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBQuoter_$58109", - "typeString": "contract LBQuoter" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBQuoter_$58109", - "typeString": "contract LBQuoter" - } - ], - "id": 51630, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2388:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51629, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2388:7:44", - "typeDescriptions": {} - } - }, - "id": 51632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2388:15:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_80c2cf0ec9c0087a1b25094ee44cad0182df4a054e74bd733073e66a7fa2f15e", - "typeString": "literal_string \"LBQuoter deployed -->\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51625, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2351:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2359:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15323, - "src": "2351:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", - "typeString": "function (string memory,address) view" - } - }, - "id": 51633, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2351:53:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51634, - "nodeType": "ExpressionStatement", - "src": "2351:53:44" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 51640, - "name": "pairImplementation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51551, - "src": "2461:18:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_LBPair_$56821", - "typeString": "contract LBPair" - } - ], - "id": 51639, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2453:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51638, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2453:7:44", - "typeDescriptions": {} - } - }, - "id": 51641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2453:27:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51635, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "2419:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 51637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2429:23:44", - "memberName": "setLBPairImplementation", - "nodeType": "MemberAccess", - "referencedDeclaration": 53013, - "src": "2419:33:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", - "typeString": "function (address) external" - } - }, - "id": 51642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2419:62:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51643, - "nodeType": "ExpressionStatement", - "src": "2419:62:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "4c425061697220696d706c656d656e746174696f6e20736574206f6e20666163746f727956320a", - "id": 51647, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2507:42:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ad7724ee56cc50a136bde81790d2d03f74b3e99f53f746fd1d60249fddb35328", - "typeString": "literal_string hex\"4c425061697220696d706c656d656e746174696f6e20736574206f6e20666163746f727956320a\"" - }, - "value": "LBPair implementation set on factoryV2\n" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_ad7724ee56cc50a136bde81790d2d03f74b3e99f53f746fd1d60249fddb35328", - "typeString": "literal_string hex\"4c425061697220696d706c656d656e746174696f6e20736574206f6e20666163746f727956320a\"" - } - ], - "expression": { - "id": 51644, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2495:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2503:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15159, - "src": "2495:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) view" - } - }, - "id": 51648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2495:55:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51649, - "nodeType": "ExpressionStatement", - "src": "2495:55:44" - }, - { - "assignments": [ - 51651 - ], - "declarations": [ - { - "constant": false, - "id": 51651, - "mutability": "mutable", - "name": "quoteAssets", - "nameLocation": "2573:11:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "2565:19:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 51650, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2565:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 51658, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "expression": { - "id": 51653, - "name": "deployment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51487, - "src": "2604:10:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment memory" - } - }, - "id": 51654, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2615:9:44", - "memberName": "factoryV2", - "nodeType": "MemberAccess", - "referencedDeclaration": 51410, - "src": "2604:20:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 51652, - "name": "ILBLegacyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62894, - "src": "2587:16:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ILBLegacyFactory_$62894_$", - "typeString": "type(contract ILBLegacyFactory)" - } - }, - "id": 51655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2587:38:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILBLegacyFactory_$62894", - "typeString": "contract ILBLegacyFactory" - } - }, - "id": 51656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2626:22:44", - "memberName": "getNumberOfQuoteAssets", - "nodeType": "MemberAccess", - "referencedDeclaration": 62677, - "src": "2587:61:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", - "typeString": "function () view external returns (uint256)" - } - }, - "id": 51657, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2587:63:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2565:85:44" - }, - { - "body": { - "id": 51696, - "nodeType": "Block", - "src": "2706:242:44", - "statements": [ - { - "assignments": [ - 51671 - ], - "declarations": [ - { - "constant": false, - "id": 51671, - "mutability": "mutable", - "name": "quoteAsset", - "nameLocation": "2731:10:44", - "nodeType": "VariableDeclaration", - "scope": 51696, - "src": "2724:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$47419", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 51670, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51669, - "name": "IERC20", - "nameLocations": [ - "2724:6:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 47419, - "src": "2724:6:44" - }, - "referencedDeclaration": 47419, - "src": "2724:6:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$47419", - "typeString": "contract IERC20" - } - }, - "visibility": "internal" - } - ], - "id": 51679, - "initialValue": { - "arguments": [ - { - "id": 51677, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51660, - "src": "2797:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 51673, - "name": "deployment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51487, - "src": "2761:10:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment memory" - } - }, - "id": 51674, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2772:9:44", - "memberName": "factoryV2", - "nodeType": "MemberAccess", - "referencedDeclaration": 51410, - "src": "2761:20:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 51672, - "name": "ILBLegacyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62894, - "src": "2744:16:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ILBLegacyFactory_$62894_$", - "typeString": "type(contract ILBLegacyFactory)" - } - }, - "id": 51675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2744:38:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILBLegacyFactory_$62894", - "typeString": "contract ILBLegacyFactory" - } - }, - "id": 51676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2783:13:44", - "memberName": "getQuoteAsset", - "nodeType": "MemberAccess", - "referencedDeclaration": 62685, - "src": "2744:52:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$47419_$", - "typeString": "function (uint256) view external returns (contract IERC20)" - } - }, - "id": 51678, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2744:55:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$47419", - "typeString": "contract IERC20" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2724:75:44" - }, - { - "expression": { - "arguments": [ - { - "id": 51683, - "name": "quoteAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51671, - "src": "2841:10:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$47419", - "typeString": "contract IERC20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_IERC20_$47419", - "typeString": "contract IERC20" - } - ], - "expression": { - "id": 51680, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "2817:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 51682, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2827:13:44", - "memberName": "addQuoteAsset", - "nodeType": "MemberAccess", - "referencedDeclaration": 53742, - "src": "2817:23:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$47419_$returns$__$", - "typeString": "function (contract IERC20) external" - } - }, - "id": 51684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2817:35:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51685, - "nodeType": "ExpressionStatement", - "src": "2817:35:44" - }, - { - "expression": { - "arguments": [ - { - "hexValue": "51756f74652061737365742077686974656c6973746564202d2d3e", - "id": 51689, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2882:29:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1065bd07fadf84eaa51edb4aac575013ae0b3658dac3427359d6717554b77b25", - "typeString": "literal_string \"Quote asset whitelisted -->\"" - }, - "value": "Quote asset whitelisted -->" - }, - { - "arguments": [ - { - "id": 51692, - "name": "quoteAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51671, - "src": "2921:10:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$47419", - "typeString": "contract IERC20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_IERC20_$47419", - "typeString": "contract IERC20" - } - ], - "id": 51691, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2913:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 51690, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2913:7:44", - "typeDescriptions": {} - } - }, - "id": 51693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2913:19:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_1065bd07fadf84eaa51edb4aac575013ae0b3658dac3427359d6717554b77b25", - "typeString": "literal_string \"Quote asset whitelisted -->\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51686, - "name": "console", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22628, - "src": "2870:7:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_console_$22628_$", - "typeString": "type(library console)" - } - }, - "id": 51688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2878:3:44", - "memberName": "log", - "nodeType": "MemberAccess", - "referencedDeclaration": 15323, - "src": "2870:11:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$returns$__$", - "typeString": "function (string memory,address) view" - } - }, - "id": 51694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2870:63:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51695, - "nodeType": "ExpressionStatement", - "src": "2870:63:44" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 51665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 51663, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51660, - "src": "2684:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 51664, - "name": "quoteAssets", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51651, - "src": "2688:11:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2684:15:44", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51697, - "initializationExpression": { - "assignments": [ - 51660 - ], - "declarations": [ - { - "constant": false, - "id": 51660, - "mutability": "mutable", - "name": "j", - "nameLocation": "2677:1:44", - "nodeType": "VariableDeclaration", - "scope": 51697, - "src": "2669:9:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 51659, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2669:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 51662, - "initialValue": { - "hexValue": "30", - "id": 51661, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2681:1:44", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2669:13:44" - }, - "loopExpression": { - "expression": { - "id": 51667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2701:3:44", - "subExpression": { - "id": 51666, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51660, - "src": "2701:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51668, - "nodeType": "ExpressionStatement", - "src": "2701:3:44" - }, - "nodeType": "ForStatement", - "src": "2664:284:44" - }, - { - "assignments": [ - 51702 - ], - "declarations": [ - { - "constant": false, - "id": 51702, - "mutability": "mutable", - "name": "presetList", - "nameLocation": "2979:10:44", - "nodeType": "VariableDeclaration", - "scope": 51766, - "src": "2962:27:44", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 51700, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2962:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51701, - "nodeType": "ArrayTypeName", - "src": "2962:9:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "id": 51706, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 51703, - "name": "BipsConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51378, - "src": "2992:10:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_BipsConfig_$51378_$", - "typeString": "type(library BipsConfig)" - } - }, - "id": 51704, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3003:13:44", - "memberName": "getPresetList", - "nodeType": "MemberAccess", - "referencedDeclaration": 51377, - "src": "2992:24:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "function () pure returns (uint256[] memory)" - } - }, - "id": 51705, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2992:26:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2962:56:44" - }, - { - "body": { - "id": 51752, - "nodeType": "Block", - "src": "3076:541:44", - "statements": [ - { - "assignments": [ - 51721 - ], - "declarations": [ - { - "constant": false, - "id": 51721, - "mutability": "mutable", - "name": "preset", - "nameLocation": "3126:6:44", - "nodeType": "VariableDeclaration", - "scope": 51752, - "src": "3094:38:44", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset" - }, - "typeName": { - "id": 51720, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 51719, - "name": "BipsConfig.FactoryPreset", - "nameLocations": [ - "3094:10:44", - "3105:13:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 50856, - "src": "3094:24:44" - }, - "referencedDeclaration": 50856, - "src": "3094:24:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_storage_ptr", - "typeString": "struct BipsConfig.FactoryPreset" - } - }, - "visibility": "internal" - } - ], - "id": 51728, - "initialValue": { - "arguments": [ - { - "baseExpression": { - "id": 51724, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51702, - "src": "3156:10:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51726, - "indexExpression": { - "id": 51725, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51708, - "src": "3167:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3156:13:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 51722, - "name": "BipsConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51378, - "src": "3135:10:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_BipsConfig_$51378_$", - "typeString": "type(library BipsConfig)" - } - }, - "id": 51723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3146:9:44", - "memberName": "getPreset", - "nodeType": "MemberAccess", - "referencedDeclaration": 51320, - "src": "3135:20:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_FactoryPreset_$50856_memory_ptr_$", - "typeString": "function (uint256) pure returns (struct BipsConfig.FactoryPreset memory)" - } - }, - "id": 51727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3135:35:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3094:76:44" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 51732, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3229:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51733, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3236:7:44", - "memberName": "binStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 50837, - "src": "3229:14:44", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 51734, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3265:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51735, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3272:10:44", - "memberName": "baseFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50839, - "src": "3265:17:44", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 51736, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3304:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51737, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3311:12:44", - "memberName": "filterPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50841, - "src": "3304:19:44", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 51738, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3345:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51739, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3352:11:44", - "memberName": "decayPeriod", - "nodeType": "MemberAccess", - "referencedDeclaration": 50843, - "src": "3345:18:44", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 51740, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3385:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51741, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3392:15:44", - "memberName": "reductionFactor", - "nodeType": "MemberAccess", - "referencedDeclaration": 50845, - "src": "3385:22:44", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 51742, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3429:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51743, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3436:18:44", - "memberName": "variableFeeControl", - "nodeType": "MemberAccess", - "referencedDeclaration": 50847, - "src": "3429:25:44", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "expression": { - "id": 51744, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3476:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51745, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3483:13:44", - "memberName": "protocolShare", - "nodeType": "MemberAccess", - "referencedDeclaration": 50849, - "src": "3476:20:44", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 51746, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3518:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51747, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3525:24:44", - "memberName": "maxVolatilityAccumulated", - "nodeType": "MemberAccess", - "referencedDeclaration": 50851, - "src": "3518:31:44", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "expression": { - "id": 51748, - "name": "preset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51721, - "src": "3571:6:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryPreset_$50856_memory_ptr", - "typeString": "struct BipsConfig.FactoryPreset memory" - } - }, - "id": 51749, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3578:6:44", - "memberName": "isOpen", - "nodeType": "MemberAccess", - "referencedDeclaration": 50855, - "src": "3571:13:44", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 51729, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "3188:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 51731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3198:9:44", - "memberName": "setPreset", - "nodeType": "MemberAccess", - "referencedDeclaration": 53427, - "src": "3188:19:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint24_$_t_uint16_$_t_uint24_$_t_bool_$returns$__$", - "typeString": "function (uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool) external" - } - }, - "id": 51750, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3188:414:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51751, - "nodeType": "ExpressionStatement", - "src": "3188:414:44" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 51713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 51710, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51708, - "src": "3048:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 51711, - "name": "presetList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51702, - "src": "3052:10:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 51712, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3063:6:44", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3052:17:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3048:21:44", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51753, - "initializationExpression": { - "assignments": [ - 51708 - ], - "declarations": [ - { - "constant": false, - "id": 51708, - "mutability": "mutable", - "name": "j", - "nameLocation": "3045:1:44", - "nodeType": "VariableDeclaration", - "scope": 51753, - "src": "3037:9:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 51707, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3037:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 51709, - "nodeType": "VariableDeclarationStatement", - "src": "3037:9:44" - }, - "loopExpression": { - "expression": { - "id": 51715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3071:3:44", - "subExpression": { - "id": 51714, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51708, - "src": "3071:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51716, - "nodeType": "ExpressionStatement", - "src": "3071:3:44" - }, - "nodeType": "ForStatement", - "src": "3032:585:44" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 51757, - "name": "deployment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51487, - "src": "3659:10:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Deployment_$51419_memory_ptr", - "typeString": "struct CoreDeployer.Deployment memory" - } - }, - "id": 51758, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3670:8:44", - "memberName": "multisig", - "nodeType": "MemberAccess", - "referencedDeclaration": 51412, - "src": "3659:19:44", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 51754, - "name": "factoryV2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51524, - "src": "3631:9:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LBFactory_$54016", - "typeString": "contract LBFactory" - } - }, - "id": 51756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3641:17:44", - "memberName": "transferOwnership", - "nodeType": "MemberAccess", - "referencedDeclaration": 46303, - "src": "3631:27:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", - "typeString": "function (address) external" - } - }, - "id": 51759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3631:48:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51760, - "nodeType": "ExpressionStatement", - "src": "3631:48:44" - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 51761, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "3693:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3696:13:44", - "memberName": "stopBroadcast", - "nodeType": "MemberAccess", - "referencedDeclaration": 12417, - "src": "3693:16:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", - "typeString": "function () external" - } - }, - "id": 51764, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3693:18:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51765, - "nodeType": "ExpressionStatement", - "src": "3693:18:44" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 51465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 51462, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51459, - "src": "1100:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 51463, - "name": "chains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51424, - "src": "1104:6:44", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", - "typeString": "string storage ref[] storage ref" - } - }, - "id": 51464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1111:6:44", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1104:13:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1100:17:44", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 51767, - "initializationExpression": { - "assignments": [ - 51459 - ], - "declarations": [ - { - "constant": false, - "id": 51459, - "mutability": "mutable", - "name": "i", - "nameLocation": "1093:1:44", - "nodeType": "VariableDeclaration", - "scope": 51767, - "src": "1085:9:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 51458, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1085:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 51461, - "initialValue": { - "hexValue": "30", - "id": 51460, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1097:1:44", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1085:13:44" - }, - "loopExpression": { - "expression": { - "id": 51467, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1119:3:44", - "subExpression": { - "id": 51466, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51459, - "src": "1119:1:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 51468, - "nodeType": "ExpressionStatement", - "src": "1119:3:44" - }, - "nodeType": "ForStatement", - "src": "1080:2642:44" - } - ] - }, - "functionSelector": "c0406226", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "run", - "nameLocation": "845:3:44", - "parameters": { - "id": 51432, - "nodeType": "ParameterList", - "parameters": [], - "src": "848:2:44" - }, - "returnParameters": { - "id": 51433, - "nodeType": "ParameterList", - "parameters": [], - "src": "858:0:44" - }, - "scope": 51789, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 51788, - "nodeType": "FunctionDefinition", - "src": "3734:321:44", - "nodes": [], - "body": { - "id": 51787, - "nodeType": "Block", - "src": "3782:273:44", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "617262697472756d5f6f6e655f676f65726c69", - "id": 51775, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3824:21:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9c5068a3a5cdbd747f13200fdd6f590995f99bde231a5dcfa62a5f92af1dc3d4", - "typeString": "literal_string \"arbitrum_one_goerli\"" - }, - "value": "arbitrum_one_goerli" - }, - { - "arguments": [ - { - "hexValue": "417262697472756d204f6e6520476f65726c69", - "id": 51778, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3903:21:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_57f7b6894161eb541e81676f15adf1e65eee36bdcfd592f252d22d4394480f21", - "typeString": "literal_string \"Arbitrum One Goerli\"" - }, - "value": "Arbitrum One Goerli" - }, - { - "hexValue": "343231363133", - "id": 51779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3951:6:44", - "typeDescriptions": { - "typeIdentifier": "t_rational_421613_by_1", - "typeString": "int_const 421613" - }, - "value": "421613" - }, - { - "arguments": [ - { - "hexValue": "415242495452554d5f544553544e45545f5250435f55524c", - "id": 51782, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3996:26:44", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2af0582c6d97731e994906c11854df380fe9a82defd196336c132846fbff02a0", - "typeString": "literal_string \"ARBITRUM_TESTNET_RPC_URL\"" - }, - "value": "ARBITRUM_TESTNET_RPC_URL" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_2af0582c6d97731e994906c11854df380fe9a82defd196336c132846fbff02a0", - "typeString": "literal_string \"ARBITRUM_TESTNET_RPC_URL\"" - } - ], - "expression": { - "id": 51780, - "name": "vm", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "3983:2:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Vm_$14564", - "typeString": "contract Vm" - } - }, - "id": 51781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3986:9:44", - "memberName": "envString", - "nodeType": "MemberAccess", - "referencedDeclaration": 11561, - "src": "3983:12:44", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$", - "typeString": "function (string memory) view external returns (string memory)" - } - }, - "id": 51783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3983:40:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_57f7b6894161eb541e81676f15adf1e65eee36bdcfd592f252d22d4394480f21", - "typeString": "literal_string \"Arbitrum One Goerli\"" - }, - { - "typeIdentifier": "t_rational_421613_by_1", - "typeString": "int_const 421613" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 51776, - "name": "StdChains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3507, - "src": "3859:9:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StdChains_$3507_$", - "typeString": "type(contract StdChains)" - } - }, - "id": 51777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3869:9:44", - "memberName": "ChainData", - "nodeType": "MemberAccess", - "referencedDeclaration": 2765, - "src": "3859:19:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ChainData_$2765_storage_ptr_$", - "typeString": "type(struct StdChains.ChainData storage pointer)" - } - }, - "id": 51784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "nameLocations": [ - "3897:4:44", - "3942:7:44", - "3975:6:44" - ], - "names": [ - "name", - "chainId", - "rpcUrl" - ], - "nodeType": "FunctionCall", - "src": "3859:179:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_ChainData_$2765_memory_ptr", - "typeString": "struct StdChains.ChainData memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_9c5068a3a5cdbd747f13200fdd6f590995f99bde231a5dcfa62a5f92af1dc3d4", - "typeString": "literal_string \"arbitrum_one_goerli\"" - }, - { - "typeIdentifier": "t_struct$_ChainData_$2765_memory_ptr", - "typeString": "struct StdChains.ChainData memory" - } - ], - "expression": { - "id": 51772, - "name": "StdChains", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3507, - "src": "3792:9:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_StdChains_$3507_$", - "typeString": "type(contract StdChains)" - } - }, - "id": 51774, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3802:8:44", - "memberName": "setChain", - "nodeType": "MemberAccess", - "referencedDeclaration": 3009, - "src": "3792:18:44", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_struct$_ChainData_$2765_memory_ptr_$returns$__$", - "typeString": "function (string memory,struct StdChains.ChainData memory)" - } - }, - "id": 51785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3792:256:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 51786, - "nodeType": "ExpressionStatement", - "src": "3792:256:44" - } - ] - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_overwriteDefaultArbitrumRPC", - "nameLocation": "3743:28:44", - "parameters": { - "id": 51770, - "nodeType": "ParameterList", - "parameters": [], - "src": "3771:2:44" - }, - "returnParameters": { - "id": 51771, - "nodeType": "ParameterList", - "parameters": [], - "src": "3782:0:44" - }, - "scope": 51789, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 51399, - "name": "Script", - "nameLocations": [ - "435:6:44" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 113, - "src": "435:6:44" - }, - "id": 51400, - "nodeType": "InheritanceSpecifier", - "src": "435:6:44" - } - ], - "canonicalName": "CoreDeployer", - "contractDependencies": [ - 54016, - 56821, - 58109, - 61346 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 51789, - 113, - 11087, - 5567, - 3507, - 74, - 62 - ], - "name": "CoreDeployer", - "nameLocation": "419:12:44", - "scope": 51790, - "usedErrors": [], - "usedEvents": [] - } - ], - "license": "MIT" - }, - "id": 44 -} \ No newline at end of file diff --git a/abi/draft-IERC6093.sol/IERC1155Errors.json b/abi/draft-IERC6093.sol/IERC1155Errors.json deleted file mode 100644 index dec24b82..00000000 --- a/abi/draft-IERC6093.sol/IERC1155Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC1155Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/abi/draft-IERC6093.sol/IERC20Errors.json b/abi/draft-IERC6093.sol/IERC20Errors.json deleted file mode 100644 index 12acd076..00000000 --- a/abi/draft-IERC6093.sol/IERC20Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC20Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/abi/draft-IERC6093.sol/IERC721Errors.json b/abi/draft-IERC6093.sol/IERC721Errors.json deleted file mode 100644 index c1c746f9..00000000 --- a/abi/draft-IERC6093.sol/IERC721Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC721Errors"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/abi/interfaces/IERC165.sol/IERC165.json b/abi/interfaces/IERC165.sol/IERC165.json deleted file mode 100644 index f4bbc8dd..00000000 --- a/abi/interfaces/IERC165.sol/IERC165.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "abi": [], - "bytecode": { - "object": "0x", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "linkReferences": {} - }, - "ast": { - "absolutePath": "lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol", - "id": 46432, - "exportedSymbols": { - "IERC165": [ - 48187 - ] - }, - "nodeType": "SourceUnit", - "src": "106:86:29", - "nodes": [ - { - "id": 46429, - "nodeType": "PragmaDirective", - "src": "106:24:29", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ] - }, - { - "id": 46431, - "nodeType": "ImportDirective", - "src": "132:59:29", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", - "file": "../utils/introspection/IERC165.sol", - "nameLocation": "-1:-1:-1", - "scope": 46432, - "sourceUnit": 48188, - "symbolAliases": [ - { - "foreign": { - "id": 46430, - "name": "IERC165", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48187, - "src": "140:7:29", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - } - ], - "license": "MIT" - }, - "id": 29 -} \ No newline at end of file diff --git a/abi/interfaces/IERC20.sol/IERC20.json b/abi/interfaces/IERC20.sol/IERC20.json deleted file mode 100644 index e036ece1..00000000 --- a/abi/interfaces/IERC20.sol/IERC20.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "abi": [], - "bytecode": { - "object": "0x", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "linkReferences": {} - }, - "ast": { - "absolutePath": "lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol", - "id": 46436, - "exportedSymbols": { - "IERC20": [ - 47419 - ] - }, - "nodeType": "SourceUnit", - "src": "105:76:30", - "nodes": [ - { - "id": 46433, - "nodeType": "PragmaDirective", - "src": "105:24:30", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ] - }, - { - "id": 46435, - "nodeType": "ImportDirective", - "src": "131:49:30", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "file": "../token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 46436, - "sourceUnit": 47420, - "symbolAliases": [ - { - "foreign": { - "id": 46434, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47419, - "src": "139:6:30", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - } - ], - "license": "MIT" - }, - "id": 30 -} \ No newline at end of file diff --git a/abi/introspection/IERC165.sol/IERC165.json b/abi/introspection/IERC165.sol/IERC165.json deleted file mode 100644 index 8e54bd56..00000000 --- a/abi/introspection/IERC165.sol/IERC165.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"}},"version":1},"id":39} \ No newline at end of file diff --git a/abi/proxy/utils/Initializable.sol/Initializable.json b/abi/proxy/utils/Initializable.sol/Initializable.json deleted file mode 100644 index 002d42bb..00000000 --- a/abi/proxy/utils/Initializable.sol/Initializable.json +++ /dev/null @@ -1,3056 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - } - ], - "bytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x", - "sourceMap": "", - "linkReferences": {} - }, - "methodIdentifiers": {}, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.20+commit.a1b79de6" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "InvalidInitialization" - }, - { - "inputs": [], - "type": "error", - "name": "NotInitializing" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "version", - "type": "uint64", - "indexed": false - } - ], - "type": "event", - "name": "Initialized", - "anonymous": false - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", - "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/" - ], - "optimizer": { - "enabled": true, - "runs": 800 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": "Initializable" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { - "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b", - "urls": [ - "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609", - "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", - "id": 46827, - "exportedSymbols": { - "Initializable": [ - 46826 - ] - }, - "nodeType": "SourceUnit", - "src": "113:8797:32", - "nodes": [ - { - "id": 46574, - "nodeType": "PragmaDirective", - "src": "113:24:32", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ] - }, - { - "id": 46826, - "nodeType": "ContractDefinition", - "src": "2349:6560:32", - "nodes": [ - { - "id": 46583, - "nodeType": "StructDefinition", - "src": "2685:290:32", - "nodes": [], - "canonicalName": "Initializable.InitializableStorage", - "documentation": { - "id": 46576, - "nodeType": "StructuredDocumentation", - "src": "2387:293:32", - "text": " @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable" - }, - "members": [ - { - "constant": false, - "id": 46579, - "mutability": "mutable", - "name": "_initialized", - "nameLocation": "2820:12:32", - "nodeType": "VariableDeclaration", - "scope": 46583, - "src": "2813:19:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 46578, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2813:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 46582, - "mutability": "mutable", - "name": "_initializing", - "nameLocation": "2955:13:32", - "nodeType": "VariableDeclaration", - "scope": 46583, - "src": "2950:18:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 46581, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2950:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "InitializableStorage", - "nameLocation": "2692:20:32", - "scope": 46826, - "visibility": "public" - }, - { - "id": 46586, - "nodeType": "VariableDeclaration", - "src": "3098:115:32", - "nodes": [], - "constant": true, - "mutability": "constant", - "name": "INITIALIZABLE_STORAGE", - "nameLocation": "3123:21:32", - "scope": 46826, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 46584, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3098:7:32", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "hexValue": "307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030", - "id": 46585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3147:66:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1", - "typeString": "int_const 1089...(70 digits omitted)...9600" - }, - "value": "0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00" - }, - "visibility": "private" - }, - { - "id": 46589, - "nodeType": "ErrorDefinition", - "src": "3285:30:32", - "nodes": [], - "documentation": { - "id": 46587, - "nodeType": "StructuredDocumentation", - "src": "3220:60:32", - "text": " @dev The contract is already initialized." - }, - "errorSelector": "f92ee8a9", - "name": "InvalidInitialization", - "nameLocation": "3291:21:32", - "parameters": { - "id": 46588, - "nodeType": "ParameterList", - "parameters": [], - "src": "3312:2:32" - } - }, - { - "id": 46592, - "nodeType": "ErrorDefinition", - "src": "3383:24:32", - "nodes": [], - "documentation": { - "id": 46590, - "nodeType": "StructuredDocumentation", - "src": "3321:57:32", - "text": " @dev The contract is not initializing." - }, - "errorSelector": "d7e6bcf8", - "name": "NotInitializing", - "nameLocation": "3389:15:32", - "parameters": { - "id": 46591, - "nodeType": "ParameterList", - "parameters": [], - "src": "3404:2:32" - } - }, - { - "id": 46597, - "nodeType": "EventDefinition", - "src": "3508:34:32", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 46593, - "nodeType": "StructuredDocumentation", - "src": "3413:90:32", - "text": " @dev Triggered when the contract has been initialized or reinitialized." - }, - "eventSelector": "c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2", - "name": "Initialized", - "nameLocation": "3514:11:32", - "parameters": { - "id": 46596, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 46595, - "indexed": false, - "mutability": "mutable", - "name": "version", - "nameLocation": "3533:7:32", - "nodeType": "VariableDeclaration", - "scope": 46597, - "src": "3526:14:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 46594, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "3526:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "3525:16:32" - } - }, - { - "id": 46680, - "nodeType": "ModifierDefinition", - "src": "4069:1104:32", - "nodes": [], - "body": { - "id": 46679, - "nodeType": "Block", - "src": "4092:1081:32", - "nodes": [], - "statements": [ - { - "assignments": [ - 46602 - ], - "declarations": [ - { - "constant": false, - "id": 46602, - "mutability": "mutable", - "name": "$", - "nameLocation": "4187:1:32", - "nodeType": "VariableDeclaration", - "scope": 46679, - "src": "4158:30:32", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - }, - "typeName": { - "id": 46601, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46600, - "name": "InitializableStorage", - "nameLocations": [ - "4158:20:32" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46583, - "src": "4158:20:32" - }, - "referencedDeclaration": 46583, - "src": "4158:20:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - } - }, - "visibility": "internal" - } - ], - "id": 46605, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46603, - "name": "_getInitializableStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46825, - "src": "4191:24:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$46583_storage_ptr_$", - "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" - } - }, - "id": 46604, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4191:26:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4158:59:32" - }, - { - "assignments": [ - 46607 - ], - "declarations": [ - { - "constant": false, - "id": 46607, - "mutability": "mutable", - "name": "isTopLevelCall", - "nameLocation": "4284:14:32", - "nodeType": "VariableDeclaration", - "scope": 46679, - "src": "4279:19:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 46606, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4279:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 46611, - "initialValue": { - "id": 46610, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4301:16:32", - "subExpression": { - "expression": { - "id": 46608, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46602, - "src": "4302:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46609, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4304:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "4302:15:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4279:38:32" - }, - { - "assignments": [ - 46613 - ], - "declarations": [ - { - "constant": false, - "id": 46613, - "mutability": "mutable", - "name": "initialized", - "nameLocation": "4334:11:32", - "nodeType": "VariableDeclaration", - "scope": 46679, - "src": "4327:18:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 46612, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "4327:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "id": 46616, - "initialValue": { - "expression": { - "id": 46614, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46602, - "src": "4348:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46615, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4350:12:32", - "memberName": "_initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 46579, - "src": "4348:14:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4327:35:32" - }, - { - "assignments": [ - 46618 - ], - "declarations": [ - { - "constant": false, - "id": 46618, - "mutability": "mutable", - "name": "initialSetup", - "nameLocation": "4711:12:32", - "nodeType": "VariableDeclaration", - "scope": 46679, - "src": "4706:17:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 46617, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4706:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 46624, - "initialValue": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 46623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 46621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 46619, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46613, - "src": "4726:11:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 46620, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4741:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4726:16:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 46622, - "name": "isTopLevelCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46607, - "src": "4746:14:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4726:34:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4706:54:32" - }, - { - "assignments": [ - 46626 - ], - "declarations": [ - { - "constant": false, - "id": 46626, - "mutability": "mutable", - "name": "construction", - "nameLocation": "4775:12:32", - "nodeType": "VariableDeclaration", - "scope": 46679, - "src": "4770:17:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 46625, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4770:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 46639, - "initialValue": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 46638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 46629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 46627, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46613, - "src": "4790:11:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "31", - "id": 46628, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4805:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4790:16:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 46637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "expression": { - "arguments": [ - { - "id": 46632, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "4818:4:32", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Initializable_$46826", - "typeString": "contract Initializable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Initializable_$46826", - "typeString": "contract Initializable" - } - ], - "id": 46631, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4810:7:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 46630, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4810:7:32", - "typeDescriptions": {} - } - }, - "id": 46633, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4810:13:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 46634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4824:4:32", - "memberName": "code", - "nodeType": "MemberAccess", - "src": "4810:18:32", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 46635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4829:6:32", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "4810:25:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 46636, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4839:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4810:30:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4790:50:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4770:70:32" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 46644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 46641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4855:13:32", - "subExpression": { - "id": 46640, - "name": "initialSetup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46618, - "src": "4856:12:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 46643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4872:13:32", - "subExpression": { - "id": 46642, - "name": "construction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46626, - "src": "4873:12:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4855:30:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46649, - "nodeType": "IfStatement", - "src": "4851:91:32", - "trueBody": { - "id": 46648, - "nodeType": "Block", - "src": "4887:55:32", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46645, - "name": "InvalidInitialization", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46589, - "src": "4908:21:32", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 46646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4908:23:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46647, - "nodeType": "RevertStatement", - "src": "4901:30:32" - } - ] - } - }, - { - "expression": { - "id": 46654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 46650, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46602, - "src": "4951:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46652, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "4953:12:32", - "memberName": "_initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 46579, - "src": "4951:14:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31", - "id": 46653, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4968:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4951:18:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 46655, - "nodeType": "ExpressionStatement", - "src": "4951:18:32" - }, - { - "condition": { - "id": 46656, - "name": "isTopLevelCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46607, - "src": "4983:14:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46664, - "nodeType": "IfStatement", - "src": "4979:67:32", - "trueBody": { - "id": 46663, - "nodeType": "Block", - "src": "4999:47:32", - "statements": [ - { - "expression": { - "id": 46661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 46657, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46602, - "src": "5013:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46659, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "5015:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "5013:15:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 46660, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5031:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5013:22:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46662, - "nodeType": "ExpressionStatement", - "src": "5013:22:32" - } - ] - } - }, - { - "id": 46665, - "nodeType": "PlaceholderStatement", - "src": "5055:1:32" - }, - { - "condition": { - "id": 46666, - "name": "isTopLevelCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46607, - "src": "5070:14:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46678, - "nodeType": "IfStatement", - "src": "5066:101:32", - "trueBody": { - "id": 46677, - "nodeType": "Block", - "src": "5086:81:32", - "statements": [ - { - "expression": { - "id": 46671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 46667, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46602, - "src": "5100:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46669, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "5102:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "5100:15:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 46670, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5118:5:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5100:23:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46672, - "nodeType": "ExpressionStatement", - "src": "5100:23:32" - }, - { - "eventCall": { - "arguments": [ - { - "hexValue": "31", - "id": 46674, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5154:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "id": 46673, - "name": "Initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46597, - "src": "5142:11:32", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", - "typeString": "function (uint64)" - } - }, - "id": 46675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5142:14:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46676, - "nodeType": "EmitStatement", - "src": "5137:19:32" - } - ] - } - } - ] - }, - "documentation": { - "id": 46598, - "nodeType": "StructuredDocumentation", - "src": "3548:516:32", - "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event." - }, - "name": "initializer", - "nameLocation": "4078:11:32", - "parameters": { - "id": 46599, - "nodeType": "ParameterList", - "parameters": [], - "src": "4089:2:32" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 46727, - "nodeType": "ModifierDefinition", - "src": "6252:431:32", - "nodes": [], - "body": { - "id": 46726, - "nodeType": "Block", - "src": "6291:392:32", - "nodes": [], - "statements": [ - { - "assignments": [ - 46687 - ], - "declarations": [ - { - "constant": false, - "id": 46687, - "mutability": "mutable", - "name": "$", - "nameLocation": "6386:1:32", - "nodeType": "VariableDeclaration", - "scope": 46726, - "src": "6357:30:32", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - }, - "typeName": { - "id": 46686, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46685, - "name": "InitializableStorage", - "nameLocations": [ - "6357:20:32" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46583, - "src": "6357:20:32" - }, - "referencedDeclaration": 46583, - "src": "6357:20:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - } - }, - "visibility": "internal" - } - ], - "id": 46690, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46688, - "name": "_getInitializableStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46825, - "src": "6390:24:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$46583_storage_ptr_$", - "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" - } - }, - "id": 46689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6390:26:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6357:59:32" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 46697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 46691, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46687, - "src": "6431:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46692, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6433:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "6431:15:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 46696, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 46693, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46687, - "src": "6450:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46694, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6452:12:32", - "memberName": "_initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 46579, - "src": "6450:14:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 46695, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46683, - "src": "6468:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "6450:25:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "6431:44:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46702, - "nodeType": "IfStatement", - "src": "6427:105:32", - "trueBody": { - "id": 46701, - "nodeType": "Block", - "src": "6477:55:32", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46698, - "name": "InvalidInitialization", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46589, - "src": "6498:21:32", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 46699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6498:23:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46700, - "nodeType": "RevertStatement", - "src": "6491:30:32" - } - ] - } - }, - { - "expression": { - "id": 46707, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 46703, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46687, - "src": "6541:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46705, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "6543:12:32", - "memberName": "_initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 46579, - "src": "6541:14:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 46706, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46683, - "src": "6558:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "6541:24:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 46708, - "nodeType": "ExpressionStatement", - "src": "6541:24:32" - }, - { - "expression": { - "id": 46713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 46709, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46687, - "src": "6575:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46711, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "6577:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "6575:15:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 46712, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6593:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6575:22:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46714, - "nodeType": "ExpressionStatement", - "src": "6575:22:32" - }, - { - "id": 46715, - "nodeType": "PlaceholderStatement", - "src": "6607:1:32" - }, - { - "expression": { - "id": 46720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 46716, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46687, - "src": "6618:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46718, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "6620:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "6618:15:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 46719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6636:5:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "6618:23:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46721, - "nodeType": "ExpressionStatement", - "src": "6618:23:32" - }, - { - "eventCall": { - "arguments": [ - { - "id": 46723, - "name": "version", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46683, - "src": "6668:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 46722, - "name": "Initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46597, - "src": "6656:11:32", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", - "typeString": "function (uint64)" - } - }, - "id": 46724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6656:20:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46725, - "nodeType": "EmitStatement", - "src": "6651:25:32" - } - ] - }, - "documentation": { - "id": 46681, - "nodeType": "StructuredDocumentation", - "src": "5179:1068:32", - "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event." - }, - "name": "reinitializer", - "nameLocation": "6261:13:32", - "parameters": { - "id": 46684, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 46683, - "mutability": "mutable", - "name": "version", - "nameLocation": "6282:7:32", - "nodeType": "VariableDeclaration", - "scope": 46727, - "src": "6275:14:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 46682, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "6275:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "6274:16:32" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 46735, - "nodeType": "ModifierDefinition", - "src": "6893:76:32", - "nodes": [], - "body": { - "id": 46734, - "nodeType": "Block", - "src": "6921:48:32", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46730, - "name": "_checkInitializing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46748, - "src": "6931:18:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$__$", - "typeString": "function () view" - } - }, - "id": 46731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6931:20:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46732, - "nodeType": "ExpressionStatement", - "src": "6931:20:32" - }, - { - "id": 46733, - "nodeType": "PlaceholderStatement", - "src": "6961:1:32" - } - ] - }, - "documentation": { - "id": 46728, - "nodeType": "StructuredDocumentation", - "src": "6689:199:32", - "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly." - }, - "name": "onlyInitializing", - "nameLocation": "6902:16:32", - "parameters": { - "id": 46729, - "nodeType": "ParameterList", - "parameters": [], - "src": "6918:2:32" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 46748, - "nodeType": "FunctionDefinition", - "src": "7084:141:32", - "nodes": [], - "body": { - "id": 46747, - "nodeType": "Block", - "src": "7136:89:32", - "nodes": [], - "statements": [ - { - "condition": { - "id": 46741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "7150:18:32", - "subExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46739, - "name": "_isInitializing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46816, - "src": "7151:15:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", - "typeString": "function () view returns (bool)" - } - }, - "id": 46740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7151:17:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46746, - "nodeType": "IfStatement", - "src": "7146:73:32", - "trueBody": { - "id": 46745, - "nodeType": "Block", - "src": "7170:49:32", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46742, - "name": "NotInitializing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46592, - "src": "7191:15:32", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 46743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7191:17:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46744, - "nodeType": "RevertStatement", - "src": "7184:24:32" - } - ] - } - } - ] - }, - "documentation": { - "id": 46736, - "nodeType": "StructuredDocumentation", - "src": "6975:104:32", - "text": " @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_checkInitializing", - "nameLocation": "7093:18:32", - "parameters": { - "id": 46737, - "nodeType": "ParameterList", - "parameters": [], - "src": "7111:2:32" - }, - "returnParameters": { - "id": 46738, - "nodeType": "ParameterList", - "parameters": [], - "src": "7136:0:32" - }, - "scope": 46826, - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "id": 46794, - "nodeType": "FunctionDefinition", - "src": "7711:422:32", - "nodes": [], - "body": { - "id": 46793, - "nodeType": "Block", - "src": "7760:373:32", - "nodes": [], - "statements": [ - { - "assignments": [ - 46754 - ], - "declarations": [ - { - "constant": false, - "id": 46754, - "mutability": "mutable", - "name": "$", - "nameLocation": "7855:1:32", - "nodeType": "VariableDeclaration", - "scope": 46793, - "src": "7826:30:32", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - }, - "typeName": { - "id": 46753, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46752, - "name": "InitializableStorage", - "nameLocations": [ - "7826:20:32" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46583, - "src": "7826:20:32" - }, - "referencedDeclaration": 46583, - "src": "7826:20:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - } - }, - "visibility": "internal" - } - ], - "id": 46757, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46755, - "name": "_getInitializableStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46825, - "src": "7859:24:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$46583_storage_ptr_$", - "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" - } - }, - "id": 46756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7859:26:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7826:59:32" - }, - { - "condition": { - "expression": { - "id": 46758, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46754, - "src": "7900:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46759, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7902:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "7900:15:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46764, - "nodeType": "IfStatement", - "src": "7896:76:32", - "trueBody": { - "id": 46763, - "nodeType": "Block", - "src": "7917:55:32", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46760, - "name": "InvalidInitialization", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46589, - "src": "7938:21:32", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 46761, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7938:23:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46762, - "nodeType": "RevertStatement", - "src": "7931:30:32" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "id": 46772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 46765, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46754, - "src": "7985:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46766, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7987:12:32", - "memberName": "_initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 46579, - "src": "7985:14:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 46769, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8008:6:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 46768, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "8008:6:32", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - } - ], - "id": 46767, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "8003:4:32", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 46770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8003:12:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint64", - "typeString": "type(uint64)" - } - }, - "id": 46771, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "8016:3:32", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "8003:16:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "7985:34:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 46792, - "nodeType": "IfStatement", - "src": "7981:146:32", - "trueBody": { - "id": 46791, - "nodeType": "Block", - "src": "8021:106:32", - "statements": [ - { - "expression": { - "id": 46781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 46773, - "name": "$", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46754, - "src": "8035:1:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46775, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8037:12:32", - "memberName": "_initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 46579, - "src": "8035:14:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "arguments": [ - { - "id": 46778, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8057:6:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 46777, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "8057:6:32", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - } - ], - "id": 46776, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "8052:4:32", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 46779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8052:12:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint64", - "typeString": "type(uint64)" - } - }, - "id": 46780, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "8065:3:32", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "8052:16:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "8035:33:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 46782, - "nodeType": "ExpressionStatement", - "src": "8035:33:32" - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "arguments": [ - { - "id": 46786, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8104:6:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 46785, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "8104:6:32", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - } - ], - "id": 46784, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "8099:4:32", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 46787, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8099:12:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint64", - "typeString": "type(uint64)" - } - }, - "id": 46788, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "8112:3:32", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "8099:16:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 46783, - "name": "Initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46597, - "src": "8087:11:32", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", - "typeString": "function (uint64)" - } - }, - "id": 46789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8087:29:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 46790, - "nodeType": "EmitStatement", - "src": "8082:34:32" - } - ] - } - } - ] - }, - "documentation": { - "id": 46749, - "nodeType": "StructuredDocumentation", - "src": "7231:475:32", - "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_disableInitializers", - "nameLocation": "7720:20:32", - "parameters": { - "id": 46750, - "nodeType": "ParameterList", - "parameters": [], - "src": "7740:2:32" - }, - "returnParameters": { - "id": 46751, - "nodeType": "ParameterList", - "parameters": [], - "src": "7760:0:32" - }, - "scope": 46826, - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - }, - { - "id": 46805, - "nodeType": "FunctionDefinition", - "src": "8243:128:32", - "nodes": [], - "body": { - "id": 46804, - "nodeType": "Block", - "src": "8308:63:32", - "nodes": [], - "statements": [ - { - "expression": { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46800, - "name": "_getInitializableStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46825, - "src": "8325:24:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$46583_storage_ptr_$", - "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" - } - }, - "id": 46801, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8325:26:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46802, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8352:12:32", - "memberName": "_initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 46579, - "src": "8325:39:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "functionReturnParameters": 46799, - "id": 46803, - "nodeType": "Return", - "src": "8318:46:32" - } - ] - }, - "documentation": { - "id": 46795, - "nodeType": "StructuredDocumentation", - "src": "8139:99:32", - "text": " @dev Returns the highest version that has been initialized. See {reinitializer}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getInitializedVersion", - "nameLocation": "8252:22:32", - "parameters": { - "id": 46796, - "nodeType": "ParameterList", - "parameters": [], - "src": "8274:2:32" - }, - "returnParameters": { - "id": 46799, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 46798, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 46805, - "src": "8300:6:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 46797, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "8300:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "8299:8:32" - }, - "scope": 46826, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 46816, - "nodeType": "FunctionDefinition", - "src": "8487:120:32", - "nodes": [], - "body": { - "id": 46815, - "nodeType": "Block", - "src": "8543:64:32", - "nodes": [], - "statements": [ - { - "expression": { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 46811, - "name": "_getInitializableStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 46825, - "src": "8560:24:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$46583_storage_ptr_$", - "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" - } - }, - "id": 46812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8560:26:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage storage pointer" - } - }, - "id": 46813, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8587:13:32", - "memberName": "_initializing", - "nodeType": "MemberAccess", - "referencedDeclaration": 46582, - "src": "8560:40:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 46810, - "id": 46814, - "nodeType": "Return", - "src": "8553:47:32" - } - ] - }, - "documentation": { - "id": 46806, - "nodeType": "StructuredDocumentation", - "src": "8377:105:32", - "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isInitializing", - "nameLocation": "8496:15:32", - "parameters": { - "id": 46807, - "nodeType": "ParameterList", - "parameters": [], - "src": "8511:2:32" - }, - "returnParameters": { - "id": 46810, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 46809, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 46816, - "src": "8537:4:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 46808, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "8537:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "8536:6:32" - }, - "scope": 46826, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 46825, - "nodeType": "FunctionDefinition", - "src": "8737:170:32", - "nodes": [], - "body": { - "id": 46824, - "nodeType": "Block", - "src": "8827:80:32", - "nodes": [], - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "8846:55:32", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "8860:31:32", - "value": { - "name": "INITIALIZABLE_STORAGE", - "nodeType": "YulIdentifier", - "src": "8870:21:32" - }, - "variableNames": [ - { - "name": "$.slot", - "nodeType": "YulIdentifier", - "src": "8860:6:32" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 46821, - "isOffset": false, - "isSlot": true, - "src": "8860:6:32", - "suffix": "slot", - "valueSize": 1 - }, - { - "declaration": 46586, - "isOffset": false, - "isSlot": false, - "src": "8870:21:32", - "valueSize": 1 - } - ], - "id": 46823, - "nodeType": "InlineAssembly", - "src": "8837:64:32" - } - ] - }, - "documentation": { - "id": 46817, - "nodeType": "StructuredDocumentation", - "src": "8613:67:32", - "text": " @dev Returns a pointer to the storage namespace." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getInitializableStorage", - "nameLocation": "8746:24:32", - "parameters": { - "id": 46818, - "nodeType": "ParameterList", - "parameters": [], - "src": "8770:2:32" - }, - "returnParameters": { - "id": 46822, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 46821, - "mutability": "mutable", - "name": "$", - "nameLocation": "8824:1:32", - "nodeType": "VariableDeclaration", - "scope": 46825, - "src": "8795:30:32", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - }, - "typeName": { - "id": 46820, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 46819, - "name": "InitializableStorage", - "nameLocations": [ - "8795:20:32" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 46583, - "src": "8795:20:32" - }, - "referencedDeclaration": 46583, - "src": "8795:20:32", - "typeDescriptions": { - "typeIdentifier": "t_struct$_InitializableStorage_$46583_storage_ptr", - "typeString": "struct Initializable.InitializableStorage" - } - }, - "visibility": "internal" - } - ], - "src": "8794:32:32" - }, - "scope": 46826, - "stateMutability": "pure", - "virtual": false, - "visibility": "private" - } - ], - "abstract": true, - "baseContracts": [], - "canonicalName": "Initializable", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 46575, - "nodeType": "StructuredDocumentation", - "src": "139:2209:32", - "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ====" - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 46826 - ], - "name": "Initializable", - "nameLocation": "2367:13:32", - "scope": 46827, - "usedErrors": [ - 46589, - 46592 - ], - "usedEvents": [ - 46597 - ] - } - ], - "license": "MIT" - }, - "id": 32 -} \ No newline at end of file diff --git a/abi/safeconsole.sol/safeconsole.json b/abi/safeconsole.sol/safeconsole.json deleted file mode 100644 index e797cada..00000000 --- a/abi/safeconsole.sol/safeconsole.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d68c6b1bda4012e67b2397737287a956fe6aa679bb8060235345bedd01ac130c64736f6c63430008140033","sourceMap":"163:397734:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;163:397734:21;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d68c6b1bda4012e67b2397737287a956fe6aa679bb8060235345bedd01ac130c64736f6c63430008140033","sourceMap":"163:397734:21:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"philogy \",\"details\":\"Code generated automatically by script.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/safeconsole.sol\":\"safeconsole\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/safeconsole.sol":"safeconsole"},"evmVersion":"paris","libraries":{}},"sources":{"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/abi/utils/Initializable.sol/Initializable.json b/abi/utils/Initializable.sol/Initializable.json deleted file mode 100644 index 9e4eefa7..00000000 --- a/abi/utils/Initializable.sol/Initializable.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":800},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":"Initializable"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file diff --git a/broadcast/deploy-core.s.sol/808813/run-1725380449.json b/broadcast/deploy-core.s.sol/808813/run-1725380449.json new file mode 100644 index 00000000..91bc3818 --- /dev/null +++ b/broadcast/deploy-core.s.sol/808813/run-1725380449.json @@ -0,0 +1,570 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "LBFactory", + "contractAddress": "0x869f0297749084e0256cc761867fe7ce456640fc", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x4a20d6", + "value": "0x0", + "input": "0x608060405234801562000010575f80fd5b506200001b62000021565b620000d5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d25780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61424280620000e35f395ff3fe608060405234801562000010575f80fd5b5060043610620002a0575f3560e01c8063701ab8c11162000167578063aabc4b3c11620000cf578063e203a31f116200008f578063e203a31f146200065d578063e30c39781462000674578063e74b981b146200067e578063e92d0d5d1462000695578063f2fde38b14620006ac578063fd90c2be14620006c3575f80fd5b8063aabc4b3c146200059c578063be20309414620005f1578063c1b931be1462000608578063d547741f146200062f578063ddbfd9411462000646575f80fd5b806380c5061e116200012757806380c5061e14620005485780638ce9aa1c14620005525780638da5cb5b146200056157806391d14854146200056b578063a0a0ea391462000582578063a217fddf1462000594575f80fd5b8063701ab8c114620004ef578063704037bd14620004f7578063715018a6146200051d57806379ba509714620005275780637daf5d661462000531575f80fd5b80633a2f1a91116200020b5780635a44092311620001cb5780635a44092314620004525780635b35875c1462000469578063659ac74b1462000473578063661d7ffb146200048a5780636622e0d714620004b257806369d56ea314620004d8575f80fd5b80633a2f1a9114620003f35780633c78a941146200040a5780634ccb20c014620004215780634cd161d314620004325780634e937c3a1462000449575f80fd5b8063248a9ca31162000263578063248a9ca314620003695780632772184214620003805780632cc06b8c14620003975780632f2ff15d14620003ae57806336568abe14620003c5578063379ee80314620003dc575f80fd5b806301ffc9a714620002a45780630282c9c114620002d05780630752092b14620002e9578063093ff76914620003195780631af5bacc1462000332575b5f80fd5b620002bb620002b536600462002b4e565b620006cc565b60405190151581526020015b60405180910390f35b620002da62000703565b604051620002c7919062002b77565b62000300620002fa36600462002bbc565b620007f0565b6040516001600160a01b039091168152602001620002c7565b620003306200032a36600462002c0e565b620007fe565b005b6200035a7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001620002c7565b6200035a6200037a36600462002bbc565b620008f4565b620002bb6200039136600462002cdb565b62000915565b62000330620003a836600462002cf9565b62000923565b62000330620003bf36600462002d44565b62000975565b62000330620003d636600462002d44565b62000997565b62000330620003ed36600462002d85565b620009d2565b620003306200040436600462002e3a565b62000af7565b620003306200041b36600462002cdb565b62000bae565b5f546001600160a01b031662000300565b620003306200044336600462002eee565b62000c0b565b6003546200035a565b620003306200046336600462002cdb565b62000ce1565b620002da62000d58565b620003006200048436600462002f24565b62000d6b565b6200035a7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d81565b620004c9620004c336600462002f82565b62001322565b604051620002c7919062002fb3565b62000330620004e936600462003026565b620014c6565b60016200035a565b6200050e6200050836600462003079565b6200163f565b604051620002c79190620030bc565b6200033062001679565b6200033062001690565b620003006200054236600462002bbc565b620016de565b6200035a6200170f565b67016345785d8a00006200035a565b620003006200171c565b620002bb6200057c36600462002d44565b62001750565b6002546001600160a01b031662000300565b6200035a5f81565b620005b3620005ad36600462002bbc565b620017b5565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001620002c7565b6200033062000602366004620030f9565b62001888565b7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d6200035a565b620003306200064036600462002d44565b62001a41565b620003306200065736600462002cdb565b62001a63565b620003306200066e36600462003150565b62001ada565b6200030062001b4b565b620003306200068f36600462002cdb565b62001b74565b62000330620006a636600462002bbc565b62001b89565b62000330620006bd36600462002cdb565b62001c3a565b6001546200035a565b5f6001600160e01b03198216637965db0b60e01b1480620006fd57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f62000712600562001cc3565b90508015620007ec578067ffffffffffffffff8111156200073757620007376200316c565b60405190808252806020026020018201604052801562000761578160200160208202803683370190505b5091505f805b82811015620007dc575f806200077f60058462001ccf565b90925090506200078f8162001cec565b15620007c65781868581518110620007ab57620007ab62003180565b602090810291909101015283620007c281620031a8565b9450505b505080620007d490620031a8565b905062000767565b5081811015620007ea578083525b505b5090565b5f620006fd60088362001cf8565b6200080862001d05565b5f6200081a8b8b8b61ffff1662001d3b565b6020015190506001600160a01b03811662000859578a8a8a60405163b65ee95360e01b81526004016200085093929190620031c3565b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e4015f604051808303815f87803b158015620008d0575f80fd5b505af1158015620008e3573d5f803e3d5ffd5b505050505050505050505050505050565b5f9081525f80516020620041ed833981519152602052604090206001015490565b5f620006fd60088362001de5565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96200094f8162001e07565b604080515f808252602082019092526200096f9186918691869162001e13565b50505050565b6200098082620008f4565b6200098b8162001e07565b6200096f838362001f49565b6001600160a01b0381163314620009c15760405163334bd91960e11b815260040160405180910390fd5b620009cd828262001f75565b505050565b620009dc62001d05565b60018961ffff16101562000a0a57604051634f958e7160e01b815261ffff8a16600482015260240162000850565b5f62000a1d818a8a8a8a8a8a8a62001ffd565b9050811562000a385762000a3581600160ff620020f2565b90505b62000a4a600561ffff8c16836200211a565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd905f90a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000b238162001e07565b6001600160a01b038416158062000b425750836001600160a01b031916155b1562000b615760405163d43a15d160e01b815260040160405180910390fd5b62000ba58787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525062001e1392505050565b50505050505050565b62000bb862001d05565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000bf1575f80fd5b505af115801562000c04573d5f803e3d5ffd5b5050505050565b62000c1562001d05565b62000c26600561ffff841662002128565b62000c4b57604051637d9160bf60e11b815261ffff8316600482015260240162000850565b5f62000c5d600561ffff851662002135565b905081151560ff82901c15150362000c88576040516311be38db60e11b815260040160405180910390fd5b62000ca961ffff841662000c9f838560ff620020f2565b600591906200211a565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd905f90a3505050565b62000ceb62001d05565b62000cf860088262002142565b62000d22576040516303ce0ad960e01b81526001600160a01b038216600482015260240162000850565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e905f90a250565b606062000d66600562002158565b905090565b5f62000d7d600561ffff841662002128565b62000da257604051637d9160bf60e11b815261ffff8316600482015260240162000850565b5f62000db4600561ffff851662002135565b90505f62000dc16200171c565b6001600160a01b0316336001600160a01b031614905062000de28262001cec565b15801562000dee575080155b1562000e1a576040516304fc2fe760e11b815233600482015261ffff8516602482015260440162000850565b62000e2760088762001de5565b62000e5157604051638e888ef360e01b81526001600160a01b038716600482015260240162000850565b856001600160a01b0316876001600160a01b03160362000e9057604051632f9b185360e01b81526001600160a01b038816600482015260240162000850565b62000e9c858562002166565b505f8062000eab89896200219e565b90925090506001600160a01b03821662000ed857604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b038281165f9081526004602090815260408083208585168452825280832061ffff8b168452909152902054620100009004161562000f385788888760405163cb27a43560e01b81526004016200085093929190620031c3565b5f62000f4485620021c7565b62000f4f86620021d3565b62000f5a87620021e3565b62000f6588620021f3565b62000f708962002203565b62000f7b8a62002214565b62000f868b62002224565b60405161ffff978816602482015295871660448701529386166064860152918516608485015262ffffff90811660a4850152931660c4830152821660e48201529089166101048201526101240160408051601f19818403018152918152602080830180516001600160e01b03166347973bff60e01b1790529051606086811b6bffffffffffffffffffffffff199081169383019390935285901b909116603482015260f089901b6001600160f01b03191660488201529091505f90604a016040516020818303038152906040528051906020012090505f604051806020016200106f9062002b40565b601f1982820381018352601f909101166040819052600254620010a9916001600160a01b03909116908f908f908e9089906020016200323b565b60408051601f1981840301815290829052620010c9929160200162003285565b6040516020818303038152906040529050620010e75f838362002235565b975050505060405180608001604052808761ffff168152602001866001600160a01b0316815260200184151581526020015f151581525060045f846001600160a01b03166001600160a01b031681526020019081526020015f205f836001600160a01b03166001600160a01b031681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600385908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550620012a48661ffff16600a5f856001600160a01b03166001600160a01b031681526020019081526020015f205f846001600160a01b03166001600160a01b031681526020019081526020015f20620022b790919063ffffffff16565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff886001600380549050620012f49190620032b7565b604080516001600160a01b03909316835260208301919091520160405180910390a450505050949350505050565b60605f806200133285856200219e565b6001600160a01b038083165f908152600a6020908152604080832093851683529290529081209294509092506200136982620022c4565b90508015620014bc578067ffffffffffffffff8111156200138e576200138e6200316c565b604051908082528060200260200182016040528015620013e057816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f19909201910181620013ad5790505b506001600160a01b038086165f90815260046020908152604080832093881683529290529081209196505b82811015620014b9575f6200142b62001425868462001cf8565b620022ce565b6040805160808101825261ffff83168082525f8181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b900490911615156060820152895191925090899084908110620014a457620014a462003180565b6020908102919091010152506001016200140b565b50505b5050505092915050565b620014d062001d05565b5f80620014de86866200219e565b6001600160a01b038083165f9081526004602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b9092049091161515606083015292945090925090620015835786868660405163102a919160e21b81526004016200085093929190620031c3565b8315158160600151151503620015ab57604051626ee66560e11b815260040160405180910390fd5b6001600160a01b038084165f9081526004602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f906200162e90871515815260200190565b60405180910390a250505050505050565b604080516080810182525f8082526020820181905291810182905260608101919091526200166f84848462001d3b565b90505b9392505050565b6200168362001d05565b6200168e5f620022f9565b565b33806200169c62001b4b565b6001600160a01b031614620016d05760405163118cdaa760e01b81526001600160a01b038216600482015260240162000850565b620016db81620022f9565b50565b5f60038281548110620016f557620016f562003180565b5f918252602090912001546001600160a01b031692915050565b5f62000d666008620022c4565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f826200177d57620017616200171c565b6001600160a01b0316826001600160a01b0316149050620006fd565b5f8381525f80516020620041ed833981519152602090815260408083206001600160a01b038616845290915290205460ff1662001672565b5f80808080808080620017ca60058a62002128565b620017ec57604051637d9160bf60e11b8152600481018a905260240162000850565b5f620017fa60058b62002135565b90506200180781620021c7565b61ffff1698506200181881620021d3565b61ffff1697506200182981620021e3565b61ffff1696506200183a81620021f3565b61ffff1695506200184b8162002203565b62ffffff1694506200185d8162002214565b61ffff1693506200186e8162002224565b62ffffff16925060ff81901c915050919395975091939597565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015620018ce5750825b90505f8267ffffffffffffffff166001148015620018eb5750303b155b905081158015620018fa575080155b15620019195760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200194457845460ff60401b1916600160401b1785555b6200194f8862002337565b67016345785d8a00008711156200198b57604051635e8988c160e01b81526004810188905267016345785d8a0000602482015260440162000850565b62001996896200234c565b6001879055600280546001600160a01b0319166001600160a01b038816179055604080515f8152602081018990527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a1831562001a3657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b62001a4c82620008f4565b62001a578162001e07565b6200096f838362001f75565b62001a6d62001d05565b62001a7a6008826200240b565b62001aa457604051638e888ef360e01b81526001600160a01b038216600482015260240162000850565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb3905f90a250565b62001ae462001d05565b62001af5600561ffff831662002421565b62001b1a57604051637d9160bf60e11b815261ffff8216600482015260240162000850565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be13905f90a250565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0062001740565b62001b7e62001d05565b620016db816200234c565b62001b9362001d05565b60015481810362001bbb57604051631baa31e960e21b81526004810183905260240162000850565b67016345785d8a000082111562001bf757604051635e8988c160e01b81526004810183905267016345785d8a0000602482015260440162000850565b600182905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e5091015b60405180910390a15050565b62001c4462001d05565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825562001c8a6200171c565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f620006fd826200242e565b5f80808062001cdf86866200243a565b9097909650945050505050565b5f60ff82901c620006fd565b5f62001672838362002465565b3362001d106200171c565b6001600160a01b0316146200168e5760405163118cdaa760e01b815233600482015260240162000850565b604080516080810182525f80825260208201819052918101829052606081019190915262001d6a84846200219e565b6001600160a01b039182165f90815260046020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b0381165f908152600183016020526040812054151562001672565b620016db81336200248e565b5f62001e2586868661ffff1662001d3b565b6020015190506001600160a01b03811662001e5b5785858560405163b65ee95360e01b81526004016200085093929190620031c3565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e99573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001ebf9190620032cd565b0362001ee25760405163b70cd0db60e01b81526004810184905260240162000850565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d9062001f129086908690600401620032e5565b5f604051808303815f87803b15801562001f2a575f80fd5b505af115801562001f3d573d5f803e3d5ffd5b50505050505050505050565b5f8262001f6957604051633e3253cf60e11b815260040160405180910390fd5b620016728383620024cb565b5f5f80516020620041ed83398151915262001f91848462001750565b1562001ff3575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620006fd565b5f915050620006fd565b5f8561ffff168761ffff1611806200201a5750610fff8661ffff16115b806200202b57506127108561ffff16115b806200203c57506109c48361ffff16115b806200204f5750620fffff8262ffffff16115b156200206e57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b613fff604e1b1691909117605c9190911b620fffff605c1b16176dffffffffffffffffffffffffffff19919091161790565b5f6200166f848462002105575f62002108565b60015b600180861b19929092169116841b1790565b5f6200166f84848462002569565b5f62001672838362002587565b5f62001672838362002594565b5f62001672836001600160a01b038416620025df565b60605f62001672836200262e565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016200219582826200263b565b95945050505050565b5f80826001600160a01b0316846001600160a01b03161115620021bf579192915b509192909150565b5f61ffff8216620006fd565b5f620006fd8260101c610fff1690565b5f620006fd82601c1c610fff1690565b5f620006fd8260281c613fff1690565b5f620006fd8260361c62ffffff1690565b5f620006fd82604e1c613fff1690565b5f620006fd82605c1c620fffff1690565b5f83471015620022625760405163392efb2b60e21b81524760048201526024810185905260440162000850565b81515f036200228457604051631328927760e21b815260040160405180910390fd5b8282516020840186f590506001600160a01b0381166200167257604051633a0ba96160e11b815260040160405180910390fd5b5f620016728383620025df565b5f620006fd825490565b8061ffff81168114620022f4576040516364ae406d60e01b815260040160405180910390fd5b919050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556200233382620028bb565b5050565b620023416200292b565b620016db8162002975565b6001600160a01b0381166200237457604051632573cfb960e21b815260040160405180910390fd5b5f546001600160a01b039081169082168103620023b3575f54604051634fcea97160e01b81526001600160a01b03909116600482015260240162000850565b5f80546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910162001c2e565b5f62001672836001600160a01b038416620029aa565b5f62001672838362002a94565b5f620006fd82620022c4565b5f808062002449858562001cf8565b5f81815260029690960160205260409095205494959350505050565b5f825f0182815481106200247d576200247d62003180565b905f5260205f200154905092915050565b6200249a828262001750565b620023335760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440162000850565b5f5f80516020620041ed833981519152620024e7848462001750565b62001ff3575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556200251e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620006fd565b5f82815260028401602052604081208290556200166f8484620022b7565b5f62001672838362002ab2565b5f81815260028301602052604081205480158015620025bc5750620025ba848462002587565b155b15620016725760405163015ab34360e11b81526004810184905260240162000850565b5f8181526001830160205260408120546200262657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155620006fd565b505f620006fd565b6060620006fd8262002aca565b5f805f835f03620026565750600160801b9150620006fd9050565b50825f81121562002667579015905f035b621000008110156200287557600160801b9250846fffffffffffffffffffffffffffffffff8111156200269b579115915f19045b6001821615620026ad5792830260801c925b800260801c6002821615620026c45792830260801c925b800260801c6004821615620026db5792830260801c925b800260801c6008821615620026f25792830260801c925b800260801c6010821615620027095792830260801c925b800260801c6020821615620027205792830260801c925b800260801c6040821615620027375792830260801c925b8002608090811c908216156200274f5792830260801c925b800260801c610100821615620027675792830260801c925b800260801c6102008216156200277f5792830260801c925b800260801c610400821615620027975792830260801c925b800260801c610800821615620027af5792830260801c925b800260801c611000821615620027c75792830260801c925b800260801c612000821615620027df5792830260801c925b800260801c614000821615620027f75792830260801c925b800260801c6180008216156200280f5792830260801c925b800260801c62010000821615620028285792830260801c925b800260801c62020000821615620028415792830260801c925b800260801c620400008216156200285a5792830260801c925b800260801c62080000821615620028735792830260801c925b505b825f03620028a157604051631dba598d60e11b8152600481018690526024810185905260440162000850565b81620028ae578262002195565b62002195835f19620032ff565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166200168e57604051631afcd79f60e31b815260040160405180910390fd5b6200297f6200292b565b6001600160a01b038116620016d057604051631e4fbdf760e01b81525f600482015260240162000850565b5f818152600183016020526040812054801562001ff3575f620029cf600183620032b7565b85549091505f90620029e490600190620032b7565b905080821462002a4a575f865f01828154811062002a065762002a0662003180565b905f5260205f200154905080875f01848154811062002a295762002a2962003180565b5f918252602080832090910192909255918252600188019052604090208390555b855486908062002a5e5762002a5e6200331f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050620006fd565b5f818152600283016020526040812081905562001672838362002ad8565b5f818152600183016020526040812054151562001672565b60605f620016728362002ae5565b5f620016728383620029aa565b6060815f0180548060200260200160405190810160405280929190818152602001828054801562002b3457602002820191905f5260205f20905b81548152602001906001019080831162002b1f575b50505050509050919050565b610eb9806200333483390190565b5f6020828403121562002b5f575f80fd5b81356001600160e01b03198116811462001672575f80fd5b602080825282518282018190525f9190848201906040850190845b8181101562002bb05783518352928401929184019160010162002b92565b50909695505050505050565b5f6020828403121562002bcd575f80fd5b5035919050565b6001600160a01b0381168114620016db575f80fd5b803561ffff81168114620022f4575f80fd5b803562ffffff81168114620022f4575f80fd5b5f805f805f805f805f806101408b8d03121562002c29575f80fd5b8a3562002c368162002bd4565b995060208b013562002c488162002bd4565b985062002c5860408c0162002be9565b975062002c6860608c0162002be9565b965062002c7860808c0162002be9565b955062002c8860a08c0162002be9565b945062002c9860c08c0162002be9565b935062002ca860e08c0162002bfb565b925062002cb96101008c0162002be9565b915062002cca6101208c0162002bfb565b90509295989b9194979a5092959850565b5f6020828403121562002cec575f80fd5b8135620016728162002bd4565b5f805f6060848603121562002d0c575f80fd5b833562002d198162002bd4565b9250602084013562002d2b8162002bd4565b915062002d3b6040850162002be9565b90509250925092565b5f806040838503121562002d56575f80fd5b82359150602083013562002d6a8162002bd4565b809150509250929050565b80358015158114620022f4575f80fd5b5f805f805f805f805f6101208a8c03121562002d9f575f80fd5b62002daa8a62002be9565b985062002dba60208b0162002be9565b975062002dca60408b0162002be9565b965062002dda60608b0162002be9565b955062002dea60808b0162002be9565b945062002dfa60a08b0162002bfb565b935062002e0a60c08b0162002be9565b925062002e1a60e08b0162002bfb565b915062002e2b6101008b0162002d75565b90509295985092959850929598565b5f805f805f8060a0878903121562002e50575f80fd5b863562002e5d8162002bd4565b9550602087013562002e6f8162002bd4565b945062002e7f6040880162002be9565b935060608701359250608087013567ffffffffffffffff8082111562002ea3575f80fd5b818901915089601f83011262002eb7575f80fd5b81358181111562002ec6575f80fd5b8a602082850101111562002ed8575f80fd5b6020830194508093505050509295509295509295565b5f806040838503121562002f00575f80fd5b62002f0b8362002be9565b915062002f1b6020840162002d75565b90509250929050565b5f805f806080858703121562002f38575f80fd5b843562002f458162002bd4565b9350602085013562002f578162002bd4565b925062002f676040860162002bfb565b915062002f776060860162002be9565b905092959194509250565b5f806040838503121562002f94575f80fd5b823562002fa18162002bd4565b9150602083013562002d6a8162002bd4565b602080825282518282018190525f9190848201906040850190845b8181101562002bb05762003012838551805161ffff1682526020808201516001600160a01b0316908301526040808201511515908301526060908101511515910152565b928401926080929092019160010162002fce565b5f805f80608085870312156200303a575f80fd5b8435620030478162002bd4565b93506020850135620030598162002bd4565b9250620030696040860162002be9565b915062002f776060860162002d75565b5f805f606084860312156200308c575f80fd5b8335620030998162002bd4565b92506020840135620030ab8162002bd4565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101620006fd565b5f805f80608085870312156200310d575f80fd5b84356200311a8162002bd4565b935060208501356200312c8162002bd4565b9250604085013591506060850135620031458162002bd4565b939692955090935050565b5f6020828403121562003161575f80fd5b620016728262002be9565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201620031bc57620031bc62003194565b5060010190565b6001600160a01b03938416815291909216602082015261ffff909116604082015260600190565b5f5b8381101562003206578181015183820152602001620031ec565b50505f910152565b5f815180845262003227816020860160208601620031ea565b601f01601f19169290920160200192915050565b6001600160a01b03868116825285811660208301528416604082015261ffff8316606082015260a0608082018190525f906200327a908301846200320e565b979650505050505050565b5f835162003298818460208801620031ea565b835190830190620032ae818360208801620031ea565b01949350505050565b81810381811115620006fd57620006fd62003194565b5f60208284031215620032de575f80fd5b5051919050565b828152604060208201525f6200166f60408301846200320e565b5f826200331a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffdfe60a0604052604051610eb9380380610eb9833981016040819052610022916108f6565b60408051602081019091525f8152859061003c828261043a565b506001600160a01b0390811660805260408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290515f92839290881691610087919061098c565b5f60405180830381855afa9150503d805f81146100bf576040519150601f19603f3d011682016040523d82523d5f602084013e6100c4565b606091505b50915091505f818060200190518101906100de91906109a7565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290519192505f9182916001600160a01b038a1691610124919061098c565b5f60405180830381855afa9150503d805f811461015c576040519150601f19603f3d011682016040523d82523d5f602084013e610161565b606091505b50915091505f8180602001905181019061017b91906109a7565b90508580156101875750825b6101ef5760405162461bcd60e51b815260206004820152602e60248201527f4c4250616972426561636f6e50726f78793a204661696c656420746f2067657460448201526d20746f6b656e2073796d626f6c7360901b60648201526084015b60405180910390fd5b6040805160208082019092525f90528451908501207fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4701480159061026757506040805160208082019092525f90528151908201207fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47014155b6102c45760405162461bcd60e51b815260206004820152602860248201527f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e6044820152672073796d626f6c7360c01b60648201526084016101e6565b7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec3180546001600160a01b0319166001600160a01b038c16179055887f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa5826480546001600160a01b0319166001600160a01b039290921691909117905561ffff881661036a7fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f5697384278290565b555f61037961ffff8a166104f7565b9050848282604051602001610390939291906109eb565b60408051808303601f190181529190527f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f906103cc9082610ad9565b508482826040516020016103e293929190610b94565b60408051808303601f190181529190527fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d849061041e9082610ad9565b506104298c8961043a565b505050505050505050505050610d08565b6104438261060f565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156104eb576104e6826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e09190610c16565b82610718565b505050565b6104f361078b565b5050565b60608161ffff165f036105215750506040805180820190915260018152600360fc1b602082015290565b815f5b61ffff82161561054e578061053881610c43565b91506105479050600a83610c77565b9150610524565b5f8161ffff166001600160401b0381111561056b5761056b61084f565b6040519080825280601f01601f191660200182016040528015610595576020820181803683370190505b5090505b61ffff851615610607576105ae600183610c97565b91506105bb600a86610cb9565b6105c6906030610cd9565b60f81b818361ffff16815181106105df576105df610cf4565b60200101906001600160f81b03191690815f1a905350610600600a86610c77565b9450610599565b949350505050565b806001600160a01b03163b5f0361064457604051631933b43b60e21b81526001600160a01b03821660048201526024016101e6565b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156106bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e19190610c16565b9050806001600160a01b03163b5f036104f357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016101e6565b60605f80846001600160a01b031684604051610734919061098c565b5f60405180830381855af49150503d805f811461076c576040519150601f19603f3d011682016040523d82523d5f602084013e610771565b606091505b5090925090506107828583836107ac565b95945050505050565b34156107aa5760405163b398979f60e01b815260040160405180910390fd5b565b6060826107c1576107bc8261080b565b610804565b81511580156107d857506001600160a01b0384163b155b1561080157604051639996b31560e01b81526001600160a01b03851660048201526024016101e6565b50805b9392505050565b80511561081b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461084a575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561087d578181015183820152602001610865565b50505f910152565b5f6001600160401b038084111561089e5761089e61084f565b604051601f8501601f19908116603f011681019082821181831017156108c6576108c661084f565b816040528093508581528686860111156108de575f80fd5b6108ec866020830187610863565b5050509392505050565b5f805f805f60a0868803121561090a575f80fd5b61091386610834565b945061092160208701610834565b935061092f60408701610834565b9250606086015161ffff81168114610945575f80fd5b60808701519092506001600160401b03811115610960575f80fd5b8601601f81018813610970575f80fd5b61097f88825160208401610885565b9150509295509295909350565b5f825161099d818460208701610863565b9190910192915050565b5f602082840312156109b7575f80fd5b81516001600160401b038111156109cc575f80fd5b8201601f810184136109dc575f80fd5b61060784825160208401610885565b634c42545f60e01b81525f8451610a09816004850160208901610863565b8083019050602f60f81b8060048301528551610a2c816005850160208a01610863565b60059201918201528351610a47816006840160208801610863565b0160060195945050505050565b600181811c90821680610a6857607f821691505b602082108103610a8657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104e6575f81815260208120601f850160051c81016020861015610ab25750805b601f850160051c820191505b81811015610ad157828155600101610abe565b505050505050565b81516001600160401b03811115610af257610af261084f565b610b0681610b008454610a54565b84610a8c565b602080601f831160018114610b39575f8415610b225750858301515b5f19600386901b1c1916600185901b178555610ad1565b5f85815260208120601f198616915b82811015610b6757888601518255948401946001909101908401610b48565b5085821015610b8457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4c697175696469747920426f6f6b20546f6b656e20000000000000000000000081525f8451610bcb816015850160208901610863565b8083019050602f60f81b8060158301528551610bee816016850160208a01610863565b60169201918201528351610c09816017840160208801610863565b0160170195945050505050565b5f60208284031215610c26575f80fd5b61080482610834565b634e487b7160e01b5f52601160045260245ffd5b5f61ffff808316818103610c5957610c59610c2f565b6001019392505050565b634e487b7160e01b5f52601260045260245ffd5b5f61ffff80841680610c8b57610c8b610c63565b92169190910492915050565b61ffff828116828216039080821115610cb257610cb2610c2f565b5092915050565b5f61ffff80841680610ccd57610ccd610c63565b92169190910692915050565b61ffff818116838216019080821115610cb257610cb2610c2f565b634e487b7160e01b5f52603260045260245ffd5b608051610194610d255f395f818160400152609501526101945ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061007b565b005b34801561003d575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b61008b610086610092565b610113565b565b905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061008d9190610131565b365f80375f80365f845af43d5f803e80801561012d573d5ff35b3d5ffd5b5f60208284031215610141575f80fd5b81516001600160a01b0381168114610157575f80fd5b939250505056fea264697066735822122046156875f2e2d59a9e34f834f7a857b16cb8cb63a72b2bce1fbc0af8dddbb6ef64736f6c6343000814003302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212205e723c1de9e189c2e59a601738614f6c62a10916bef2b73b70685fea797c5d1c64736f6c63430008140033", + "nonce": "0xe2", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": [ + "0x869f0297749084e0256cC761867FE7cE456640FC", + "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "0x" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xce718", + "value": "0x0", + "input": "0x60a060405260405162000e5038038062000e508339810160408190526200002691620003bc565b828162000034828262000099565b50508160405162000045906200035a565b6001600160a01b039091168152602001604051809103905ff0801580156200006f573d5f803e3d5ffd5b506001600160a01b0316608052620000906200008a60805190565b620000fe565b505050620004b3565b620000a4826200016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115620000f057620000eb8282620001ee565b505050565b620000fa62000267565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200013f5f8051602062000e30833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16200016c8162000289565b50565b806001600160a01b03163b5f03620001aa57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516200020c919062000496565b5f60405180830381855af49150503d805f811462000246576040519150601f19603f3d011682016040523d82523d5f602084013e6200024b565b606091505b5090925090506200025e858383620002ca565b95945050505050565b3415620002875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002b457604051633173bdd160e11b81525f6004820152602401620001a1565b805f8051602062000e30833981519152620001cd565b606082620002e357620002dd8262000330565b62000329565b8151158015620002fb57506001600160a01b0384163b155b156200032657604051639996b31560e01b81526001600160a01b0385166004820152602401620001a1565b50805b9392505050565b805115620003415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806200093483390190565b80516001600160a01b03811681146200037f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620003b45781810151838201526020016200039a565b50505f910152565b5f805f60608486031215620003cf575f80fd5b620003da8462000368565b9250620003ea6020850162000368565b60408501519092506001600160401b038082111562000407575f80fd5b818601915086601f8301126200041b575f80fd5b81518181111562000430576200043062000384565b604051601f8201601f19908116603f011681019083821181831017156200045b576200045b62000384565b8160405282815289602084870101111562000474575f80fd5b6200048783602083016020880162000398565b80955050505050509250925092565b5f8251620004a981846020870162000398565b9190910192915050565b608051610469620004cb5f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea2646970667358221220646db6b703a46dbf43b5303e88a0e75f2165f627cdec6f33f692542261be647a64736f6c63430008140033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000869f0297749084e0256cc761867fe7ce456640fc000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xe3", + "chainId": "0xc576d" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x70c8adc5f50a2d5f9e50f820b1529d196516489e", + "initCode": "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + } + ], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "LBPair", + "contractAddress": "0x68d00ff88f3a5987584e313b42cb11cfeee4fb39", + "function": null, + "arguments": [ + "0x8C3cD9182dbef229a36351633f470ea904e105Ac" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x65710d", + "value": "0x0", + "input": "0x60a060405234801562000010575f80fd5b5060405162005c4c38038062005c4c833981016040819052620000339162000105565b6001600160a01b0381166080526200004a62000051565b5062000134565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a25760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001025780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f6020828403121562000116575f80fd5b81516001600160a01b03811681146200012d575f80fd5b9392505050565b608051615aea620001625f395f8181610442015281816112de0152818161202801526133b80152615aea5ff3fe608060405234801561000f575f80fd5b5060043610610212575f3560e01c80638940a16a1161011f578063d3b9fbe4116100a9578063e584b65411610079578063e584b654146105b7578063e77366f8146105ca578063e985e9c5146105dd578063ea3446bf14610600578063f5e2932914610613575f80fd5b8063d3b9fbe414610597578063d8dfcea01461059f578063da10610c146105a7578063dbe65edc146105af575f80fd5b8063a41a01fb116100ef578063a41a01fb146104ee578063abcd783014610515578063bd85b03914610552578063c7bd658614610571578063c9939f5e14610584575f80fd5b80638940a16a146104665780638d7024e5146104a357806395d89b41146104de578063a1af5b9a146104e6575f80fd5b806347973bff116101a05780635518289411610170578063551828941461038c5780636653851a146103d1578063781a8915146103e45780637ca0de30146103ee57806388cc58e414610440575f80fd5b806347973bff146103335780634c7cffbd146103465780634e1273f41461035957806353c059a014610379575f80fd5b80630abe9688116101e65780630abe96881461029957806317f11ecc146102ce57806317fad7fc146102e95780631b057f6d146102fe578063383d15c514610311575f80fd5b8062fdd58e1461021657806305e8746d1461023c57806306fdde031461025c5780630902f1ac14610271575b5f80fd5b6102296102243660046150c5565b610626565b6040519081526020015b60405180910390f35b61024461064e565b6040516001600160a01b039091168152602001610233565b61026461065c565b6040516102339190615111565b61027961070c565b604080516001600160801b03938416815292909116602083015201610233565b6102796102a7366004615155565b62ffffff165f908152600660205260409020546001600160801b0381169160809190911c90565b6102d6610745565b60405161ffff9091168152602001610233565b6102fc6102f73660046151ae565b61075b565b005b6102fc61030c366004615279565b6107a7565b61032461031f3660046152c0565b6108b5565b6040516102339392919061535c565b6102fc61034136600461538b565b610b15565b610229610354366004615155565b610c5b565b61036c61036736600461541d565b610c80565b6040516102339190615483565b6102296103873660046154a4565b610d54565b610394611042565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610233565b6102fc6103df3660046154d9565b6110e8565b6201000954610229565b6103f6611112565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610233565b7f0000000000000000000000000000000000000000000000000000000000000000610244565b61047961047436600461555a565b611176565b604080516001600160401b0394851681529284166020840152921691810191909152606001610233565b6104ab61126e565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610233565b6102646112ab565b6102296112d3565b6105016104fc36600461557e565b61146d565b60405162ffffff9091168152602001610233565b6105286105233660046155a6565b61147f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610233565b6102296105603660046155db565b5f9081526001602052604090205490565b6102fc61057f3660046155f2565b611610565b61036c6105923660046151ae565b611695565b6102fc61199e565b610279611a23565b610244611a3d565b610501611a46565b6102fc6105c536600461560b565b611a52565b6105286105d83660046155a6565b611a61565b6105f06105eb366004615627565b611b96565b6040519015158152602001610233565b6102fc61060e366004615643565b611ba1565b6105016106213660046155db565b611e2c565b6001600160a01b0382165f908152602081815260408083208484529091529020545b92915050565b5f610657611e4c565b905090565b60607fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845b805461068b9061568e565b80601f01602080910402602001604051908101604052809291908181526020018280546106b79061568e565b80156107025780601f106106d957610100808354040283529160200191610702565b820191905f5260205f20905b8154815290600101906020018083116106e557829003601f168201915b5050505050905090565b5f8061073c610728600554600454611e7e90919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b5f6106575f80516020615a958339815191525490565b610763611eb8565b62010009546107788133898989898989611f02565b610786878787878787611f78565b61078e611fc2565b61079e8133898989898989611fe8565b50505050505050565b6107af611eb8565b6107b761201d565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b0381161580159061087e5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087291906156c0565b6001600160a01b031614155b1561089c57604051631b5de6eb60e01b815260040160405180910390fd5b6108a7848484612066565b506108b0611fc2565b505050565b5f806060866108c38161208d565b6108cb611eb8565b5f8690036108ec5760405163296db0d960e01b815260040160405180910390fd5b620100095460408051606081019091525f9080896001600160401b03811115610917576109176156db565b604051908082528060200260200182016040528015610940578160200160208202803683370190505b508152602001896001600160401b0381111561095e5761095e6156db565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b508152602001896001600160401b038111156109a5576109a56156db565b6040519080825280602002602001820160405280156109ce578160200160208202803683370190505b5090526004549091506109f26109e2611e4c565b6109ea6120c9565b8391906120f0565b9650610a0283338d8d8d8c61212f565b610a0f8a8a898e86612168565b9550610a25610a1e8888611e7e565b829061228c565b600455604080830151835191519096506001600160a01b038d16915f9133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610a7291908b906156ef565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610abe9291906156ef565b60405180910390a38515610ae857610ae8610ad7611e4c565b610adf6120c9565b8891908b6122c6565b610af0611fc2565b610b0783338d8d8d610b028d8d611e7e565b612324565b505050509450945094915050565b610b1d61201d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b615750825b90505f826001600160401b03166001148015610b7c5750303b155b905081158015610b8a575080155b15610ba85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bd257845460ff60401b1916600160401b1785555b610bda612355565b610c06610bfa610bf58860035461236590919063ffffffff16565b612385565b8e8e8e8e8e8e8e6123af565b8315610c4c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f610648610c745f80516020615a958339815191525490565b62ffffff841690612529565b60608382610c8e828261255f565b856001600160401b03811115610ca657610ca66156db565b604051908082528060200260200182016040528015610ccf578160200160208202803683370190505b5092505f5b86811015610d4957610d24888883818110610cf157610cf1615713565b9050602002016020810190610d069190615727565b878784818110610d1857610d18615713565b90506020020135610626565b848281518110610d3657610d36615713565b6020908102919091010152600101610cd4565b505050949350505050565b5f610d5d611eb8565b62010009546004546005545f86610d8557610d80610d796120c9565b849061257f565b610d97565b610d97610d90611e4c565b84906125b3565b90505f819003610dba57604051637df801c760e01b815260040160405180910390fd5b86610dc885338984866125e1565b610dd2848361228c565b6003549094505f610dee5f80516020615a958339815191525490565b90505f610dfa83612634565b9050610e06834261263f565b92505b62ffffff81165f90815260066020526040902054610e288186156126b3565b610f4957610e3684836126e1565b93505f8080610e498488888b898e612766565b919450925090508215610f4557610e608984611e7e565b9850610e6c8d8361228c565b9c505f610e86610e7b89612984565b839061ffff16612993565b90508015610ea757610e988b8261228c565b9a50610ea48482611e7e565b93505b610ebb83610eb5878761228c565b90611e7e565b62ffffff87165f908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610f078e612a06565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b5f869003610f575750610fa0565b5f610f628684612a16565b905062ffffff81161580610f7a575062ffffff818116145b15610f9857604051631a6d7fb160e31b815260040160405180910390fd5b915050610e09565b5f899003610fc15760405163439df85d60e11b815260040160405180910390fd5b610fcb878a611e7e565b6004556005869055610fdf600a8483612a37565b9250610feb8382612365565b600355831561100c57611007610fff6120c9565b8a908c612b49565b61101f565b61101f611017611e4c565b8a908c612b88565b611027611fc2565b61103488338c878d612b98565b505050505050505092915050565b6003546078905f908190819081908161105a82612be4565b905061ffff8116156110df575f611072600a83612bf3565b9650905061107f81612c50565b965061108a81612c5b565b94508464ffffffffff165f0361109e575f95505b61ffff8616156110dd576110cf8661ffff168361ffff16816110c2576110c2615742565b600a916001910601612c7b565b90506110da81612c5b565b93505b505b50509091929394565b6110f0611eb8565b6110f861201d565b61110a600354888888888888886123af565b61079e611fc2565b5f805f805f805f80600354905061112881612c50565b975061113381612ca9565b965061113e81612cb8565b955061114981612cc7565b945061115481612cd6565b935061115f81612984565b925061116a81612ce6565b91505090919293949596565b5f805f8060035490505f61118982612be4565b905061ffff811615806111a25750428664ffffffffff16115b156111b7575f805f9450945094505050611267565b5f6111c4600a8389612cf6565b91985096509450905064ffffffffff8088169082161015611263576111fa6111eb84612634565b849064ffffffffff8a16612e13565b92505f611207828961576a565b90508064ffffffffff1661121a85612634565b62ffffff166112299190615788565b61123390886157b3565b96508064ffffffffff1661124685612a06565b62ffffff166112559190615788565b61125f90876157b3565b9550505b5050505b9193909250565b5f805f805f600354905061128181612a06565b945061128c81612e2a565b935061129781612e3a565b92506112a281612e4a565b91505090919293565b60607f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f610680565b5f6112dc611eb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135c91906156c0565b6001600160a01b0316336001600160a01b03161461138d57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c5f6113e4826113ae575f6113b1565b60015b60ff165f856001600160801b0316116113ca575f6113cd565b60015b60ff169060801b6001600160801b03919091161790565b90506113f08482611e7e565b9450841561145e57600581905560045461140a9086611e7e565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261145e61144d611e4c565b6114556120c9565b879190336122c6565b5050505061146a611fc2565b90565b5f6114788383612a16565b9392505050565b6003545f90839082908161149e5f80516020615a958339815191525490565b90505f6114aa83612634565b90506114b6834261263f565b92505b62ffffff81165f908152600660205260408120546114d8908915612e5c565b90506001600160801b038116156115b9575f6114f962ffffff841685612529565b90505f876001600160801b0316836001600160801b03161161151b578261151d565b875b905061152986856126e1565b95505f8a61154b576115466001600160801b038316846080612e7b565b611560565b6115606001600160801b038316608085612eb0565b90505f61156d8888612ee5565b90505f6115836001600160801b03841683612f03565b905061158f81846157d3565b611599908d6157d3565b9b506115a5848c6157f3565b9a506115b1818b6157d3565b995050505050505b856001600160801b03165f036115cf5750611606565b5f6115da8984612a16565b905062ffffff811615806115f2575062ffffff818116145b156115fe575050611606565b9150506114b9565b5050509250925092565b611618611eb8565b6003545f61162582612be4565b90508061ffff165f036116435750600161163f8282612f4a565b6003555b61164f600a8285612f66565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a25050611692611fc2565b50565b606086336116a3828261304a565b6116d85760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b6116e0611eb8565b8515806116ed5750858414155b1561170b57604051633ab7870760e01b815260040160405180910390fd5b620100095461172081338c8c8c8c8c8c613094565b89876001600160401b03811115611739576117396156db565b604051908082528060200260200182016040528015611762578160200160208202803683370190505b5094505f805b898110156118ae575f6117928c8c8481811061178657611786615713565b905060200201356130c9565b90505f8a8a848181106117a7576117a7615713565b905060200201359050805f036117d757604051636996a92560e01b815262ffffff831660048201526024016116cf565b62ffffff82165f818152600660209081526040808320546001909252909120549091611805908890856130f4565b5f611811838584613173565b90505f81900361183b5760405163fd44792960e01b815262ffffff861660048201526024016116cf565b6118458382611e7e565b925083820361185b576118596007866131ea565b505b62ffffff85165f9081526006602052604090208390558b5181908d908890811061188757611887615713565b602090810291909101015261189c878261228c565b96508560010195505050505050611768565b506004546118bc9082611e7e565b6004556040515f906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611904908f908f908f908f90615843565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a60405161195393929190615869565b60405180910390a3611977611966611e4c565b61196e6120c9565b8391908e6122c6565b61197f611fc2565b61198f8333848e8e8e8e8e613288565b50505050509695505050505050565b6119a6611eb8565b6119ae61201d565b6003546119c26119bd82612385565b6132bd565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc6119f083612e3a565b6119f984612e2a565b6040805162ffffff93841681529290911660208301520160405180910390a250611a21611fc2565b565b6005545f9081906001600160801b0381169060801c61073c565b5f6106576120c9565b5f610657600354612634565b611a5d3383836132f0565b5050565b5f808080611a786001600160801b038716866133a4565b6003549091505f611a945f80516020615a958339815191525490565b90505f611aa083612634565b9050611aac834261263f565b92505b62ffffff81165f90815260066020526040902054611ace818a156126b3565b611b3a57611adc84836126e1565b93505f8080611aef8488888f898d612766565b919450925090508215611b3657611b068884611e7e565b9750611b13828d15612e5c565b611b1d908b6157d3565b9950611b29818d612e5c565b611b33908a6157d3565b98505b5050505b5f859003611b485750611b7f565b5f611b538a84612a16565b905062ffffff81161580611b6b575062ffffff818116145b15611b77575050611b7f565b915050611aaf565b611b898489612e5c565b9650505050509250925092565b5f611478838361304a565b611ba9611eb8565b5f839003611bca5760405163727ab02160e11b815260040160405180910390fd5b62010009546004545f611bdc866133b4565b9050611bea833389896134b9565b611c06611bf5611e4c565b611bfd6120c9565b8891908a6122c6565b5f806001600160a01b038916631faa6b8760e01b33611c23611e4c565b611c2b6120c9565b8c888d8d604051602401611c4597969594939291906158b6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c8391906158f8565b5f604051808303815f865af19150503d805f8114611cbc576040519150601f19603f3d011682016040523d82523d5f602084013e611cc1565b606091505b5091509150811580611cd557508051602014155b80611d1357507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611d109190615913565b14155b15611d3157604051634a57011360e01b815260040160405180910390fd5b5f611d4d611d3d611e4c565b611d456120c9565b5f91906120f0565b9050611d63611d5c868661228c565b82906134fd565b15611d8157604051630e3c717160e11b815260040160405180910390fd5b5f611d8c8287611e7e565b6004839055600554909150611da1908261228c565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611ddf90612634565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611e12611fc2565b611e1f87338d8885613540565b5050505050505050505050565b5f610648611e455f80516020615a958339815191525490565b839061358b565b5f7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315b546001600160a01b0316919050565b80820382811180611e9a57506001600160801b03808416908216115b156106485760405163e599af5560e01b815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611efc57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600160a81b881615611f6e57611f6e886379c8ccf760e01b89898989898989604051602401611f37979695949392919061592a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526135cf565b5050505050505050565b8533611f84828261304a565b611fb45760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044016116cf565b611f6e88888888888861362d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600160a91b881615611f6e57611f6e886367ddb27860e01b89898989898989604051602401611f37979695949392919061592a565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a2157604051632486085360e01b815260040160405180910390fd5b82156108b0576108b083634e430b5a60e01b858585604051602401611f379392919061597f565b6001600160a01b03811615806120ab57506001600160a01b03811630145b15611692576040516345c210e760e11b815260040160405180910390fd5b5f7f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264611e6f565b5f61212784610eb56121018561378b565b61210a8761378b565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b600160a41b8616156121605761216086630d4abdb360e01b8787878787604051602401611f37959493929190615998565b505050505050565b5f8061217f5f80516020615a958339815191525490565b6003549091505f61218f82612634565b90508693505f5b8881101561227f575f806121cb8a8d8d868181106121b6576121b6615713565b905060200201356137f790919063ffffffff16565b915091505f805f6121df898886888c61383d565b919450925090506121f08a83611e7e565b99508362ffffff168b5f0151878151811061220d5761220d615713565b602002602001018181525050808b60200151878151811061223057612230615713565b602002602001018181525050828b60400151878151811061225357612253615713565b60200260200101818152505061226f8c8562ffffff1685613a42565b8560010195505050505050612196565b5050505095945050505050565b818101828110806122a857506001600160801b03808416908216105b15610648576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156122f8576122f86001600160a01b038616846001600160801b038516613a8d565b6001600160801b03811615612160576121606001600160a01b038516846001600160801b038416613a8d565b600160a51b8616156121605761216086637a51a4c660e01b8787878787604051602401611f37959493929190615998565b61235d613ade565b611a21613b27565b5f6001600160e81b0383166001600160e81b031960e884901b1617611478565b5f8061239083612634565b905062ffffff60981b19831662ffffff60981b609883901b1617611478565b61ffff87161580156123c3575061ffff8616155b80156123d1575061ffff8516155b80156123df575061ffff8416155b80156123ee575062ffffff8316155b80156123fc575061ffff8216155b801561240b575062ffffff8116155b15612429576040516331375e0360e11b815260040160405180910390fd5b6124398888888888888888613b2f565b97505f6124515f80516020615a958339815191525490565b90505f61245e8a84613c38565b90505f61246b8284613c7f565b6124758385613cbd565b61247f91906159d6565b905067016345785d8a00008111156124aa576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016125568282613ce0565b95945050505050565b808214611a5d576040516340311ffd60e11b815260040160405180910390fd5b5f8061258b8460801c90565b90506121278161259a8561378b565b6125a491906157f3565b6001600160801b031660801b90565b5f6001600160801b038316612127816125cb8561378b565b6125d591906157f3565b6001600160801b031690565b600160a01b85161561262d576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261262d90869063feee373560e01b9060a401611f37565b5050505050565b5f60e882901c610648565b5f8061264a84612e4a565b61265b9064ffffffffff16846159e9565b905061266684612ca9565b61ffff1681106126a95761267984612385565b935061268484612cb8565b61ffff16811061269d57612698845f613f38565b6126a6565b6126a6846132bd565b93505b6121278484613f7f565b5f816126d2576126c38360801c90565b6001600160801b031615611478565b50506001600160801b03161590565b5f806126ec84612e3a565b62ffffff1690505f80828562ffffff161161270e578462ffffff168303612717565b828562ffffff16035b9150612710820261272787612e2a565b62ffffff160190505f61273987612ce6565b62ffffff16905080821161274d578161274f565b805b915061275b8783613c38565b979650505050505050565b5f80808061277962ffffff871689612529565b90505f6127878b8915612e5c565b90505f886127b1576127ac6127a76001600160801b038416856080612e7b565b613fad565b6127c9565b6127c96127a76001600160801b038416608086612eb0565b90505f6127d68c8c612ee5565b90505f6127ec6001600160801b03841683612f03565b90506127f881846157d3565b92505f6128058a8d612e5c565b90505f80856001600160801b0316836001600160801b03161061282f5750849150829050856128a4565b6128426001600160801b03841686613fd7565b91505f61284f83856157f3565b6001600160801b031690508e6128735761286e6127a78260808c61400d565b612882565b6128826127a7828b6080614036565b9150876001600160801b0316826001600160801b031611156128a2578791505b505b8d6128de576128bc836001600160801b031660801b90565b6001600160801b0382166128d9846001600160801b031660801b90565b612906565b6001600160801b0383166128fb826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61161295861295285610eb5888f61228c90919063ffffffff16565b836140a1565b11156129775760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b5f61064882604e1c613fff1690565b5f816001600160801b03165f036129ab57505f610648565b6127106001600160801b0383168110156129d857604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b5f6106488260701c620fffff1690565b5f82612a2c57612a276007836140bc565b611478565b6114786007836141fc565b5f80612a4284612be4565b90508061ffff165f03612a585783915050611478565b5f612a638683612c7b565b90505f612a6f82614322565b90505f612a7b8361432d565b612a889060ff16836159fc565b90508064ffffffffff16612a9b4261433b565b64ffffffffff161115612b3d575f805f612ade8464ffffffffff164203612ac18c612634565b612aca8d612a06565b612ad48e8e614363565b8a93929190614392565b9250925092505f612aee87612c50565b905064ffffffffff861642036078811115612b1d575096879006600101964295505f612b1a8c8a612f4a565b9b505b612b2b82868686858c6143f7565b97505050505050612b3d888585614456565b50949695505050505050565b5f612b548460801c90565b90506001600160801b03811615612b8257612b826001600160a01b038416836001600160801b038416613a8d565b50505050565b5f6001600160801b038416612b54565b600160a11b85161561262d576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261262d9086906353e8079b60e01b9060a401611f37565b5f6106488260d81c61ffff1690565b5f80612bff8484612c7b565b9150612c0a82612c50565b90508061ffff168361ffff1614612c4957612c2d612c288583612c7b565b612c50565b90508061ffff168361ffff1611612c445780612c46565b825b90505b9250929050565b5f61ffff8216610648565b5f612c658261432d565b60ff16612c7183614322565b61064891906159fc565b5f81612c8681614482565b8361ffff5f1985018116908110612c9f57612c9f615713565b0154949350505050565b5f6106488260101c610fff1690565b5f61064882601c1c610fff1690565b5f6106488260281c613fff1690565b5f6106488260361c62ffffff1690565b5f61064882605c1c620fffff1690565b5f805f805f80612d068989612bf3565b909250905064ffffffffff8716612d3d8a612d21848c615a1a565b61ffff1661ffff8110612d3657612d36615713565b0154612c5b565b64ffffffffff161115612d6357604051631c4e7f9560e21b815260040160405180910390fd5b612d6c82612c5b565b95508664ffffffffff168664ffffffffff1611612dae5785612d8d836144a6565b612d96846144ba565b612d9f856144ce565b95509550955095505050612e0a565b8695505f80612dbf8b8b8b866144e2565b915091505f89612dce83612c5b565b612dd8919061576a565b90505f612de484612c5b565b612dee908c61576a565b9050612dfc8484848461462e565b919a50985096505050505050505b93509350935093565b5f612e1e848361263f565b935061212784846126e1565b5f6106488260841c620fffff1690565b5f6106488260981c62ffffff1690565b5f6106488260b01c64ffffffffff1690565b5f81612e6c57612a278360801c90565b6001600160801b038316611478565b5f612e87848484614036565b9050600160ff83161b80612e9d57612e9d615742565b83850915611478576121276001826159d6565b5f612ebc84848461400d565b90508180612ecc57612ecc615742565b600160ff85161b850915611478576121276001826159d6565b5f611478612ef38484613c7f565b612efd8585613cbd565b01613fad565b5f81612f0e81614782565b6001600160801b03808416670de0b6b3a76400008190039182915f199188160282010181612f3e57612f3e615742565b049250505b5092915050565b5f61ffff60d81b19831661ffff60d81b60d884901b1617611478565b5f612f718484612c7b565b90505f612f7d82612c50565b90508261ffff168161ffff1610612fa757604051632c57574160e21b815260040160405180910390fd5b5f8461ffff168261ffff1614612fd65761ffff821615612fd057612fcb8683612c7b565b612fd8565b5f612fd8565b825b90505f612fe482612c50565b61ffff169050808661ffff1611612ffb5780613001565b8561ffff165b905061ffff83165b8561ffff168110156130335781888261ffff811061302957613029615713565b0155600101613009565b5061079e878761ffff868116881890891617614456565b5f816001600160a01b0316836001600160a01b031614806114785750506001600160a01b039182165f90815260026020908152604080832093909416825291909152205460ff1690565b600160a61b881615611f6e57611f6e8863ea9db9d360e01b89898989898989604051602401611f37979695949392919061592a565b8062ffffff811681146130ef57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b0383165f9081526020818152604080832085845291829052909120548281101561315057604051625b387760e31b81526001600160a01b038616600482015260248101859052604481018490526064016116cf565b5f9384526001602090815260408086208054869003905592905292209103905550565b5f6001600160801b038416608085901c828083156131a5576131a26127a7886001600160801b038716896147b4565b91505b6001600160801b038316156131ce576131cb6127a7886001600160801b038616896147b4565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c165f818152600284016020526040812054909190600160ff85161b19811680821461327d575f83815260028701602052604081208290558190036132715750600882901c5f818152600187810160205260408220805460ff87169290921b1990911690819055919082900361326f578654600160ff83161b191687555b505b60019350505050610648565b505f95945050505050565b600160a71b881615611f6e57611f6e8863fdc2725760e01b89898989898989604051602401611f37979695949392919061592a565b5f806132c883612a06565b62ffffff1690505f6132d984612cc7565b61ffff169050612710828202046125568582613f38565b826132fa8161208d565b826001600160a01b0316846001600160a01b0316036133375760405163782ee70760e01b81526001600160a01b03851660048201526024016116cf565b6001600160a01b038481165f81815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b5f81612e6c57612a278360801b90565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134369190615913565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061346f90670de0b6b3a7640000908616850283015b04613fad565b92506134a1670de0b6b3a764000082866001600160801b0316856001600160801b031602018161346957613469615742565b915050608081901b6001600160801b03831617612556565b600160a21b841615612b82576040516001600160a01b0380851660248301528316604482015260648101829052612b8290859063505d903360e01b90608401611f37565b5f6001600160801b0383811690608085811c9185169085901c8184108061275b5750806001600160801b0316836001600160801b03161094505050505092915050565b600160a31b85161561262d576040516001600160a01b03808616602483015284166044820152606481018390526084810182905261262d9086906360bed5f360e01b9060a401611f37565b5f61271061ffff60801b608084901b1604600160801b01816135ac826147d2565b6135b5866147d2565b6135bf9190615a3a565b90506125568162800000016130c9565b5f80839050602083015160e01c60205f8551602087015f865af192503d1515831516156135fe573d5f803e3d5ffd5b805f5160e01c14601f3d1116831692505081612b8257604051636c93cb9b60e01b815260040160405180910390fd5b8281613639828261255f565b866136438161208d565b6001600160a01b03808a165f90815260208190526040808220928b1682528120905b88811015613722575f8a8a8381811061368057613680615713565b9050602002013590505f89898481811061369c5761369c615713565b5f858152602089815260409091205491029290920135925050818110156136f8578e83836040516358b4690f60e01b81526004016116cf939291906001600160a01b039390931683526020830191909152604082015260600190565b5f928352602086815260408085209284900390925585905290912080549091019055600101613665565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c6040516137769493929190615843565b60405180910390a45050505050505050505050565b6040516370a0823160e01b81523060048201525f90610648906001600160a01b038416906370a0823190602401602060405180830381865afa1580156137d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a79190615913565b5f805f805f613805876148a8565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83165f818152600660205260408120549091829182918290613863908b612529565b90505f6138808962ffffff165f9081526001602052604090205490565b905061388e83898484614946565b909650945084935062ffffff808b16908a16036139c2576138b0878a42612e13565b96505f6138c184898e89868c614ac5565b905080156139bc575f6138de846138d88985611e7e565b906140a1565b90505f6138f86138ed8b612984565b849061ffff16612993565b9050801561391e5761390a8782611e7e565b60055490975061391a908261228c565b6005555b5f613937866138d86139308786611e7e565b8a9061228c565b90506139448386836147b4565b9950613952600a8c8f612a37565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e86856040516139b09392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b506139cd565b6139cd858b8b614bb4565b8515806139d8575083155b156139fd57604051634c98d35760e11b815262ffffff8a1660048201526024016116cf565b805f03613a1157613a0f60078a614c1a565b505b613a1b838561228c565b62ffffff9099165f9081526006602052604090209890985550929891975095509350505050565b5f8281526001602052604081208054839290613a5f9084906159d6565b90915550506001600160a01b039092165f908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612b828482614ca4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611a2157604051631afcd79f60e31b815260040160405180910390fd5b611fc2613ade565b5f8561ffff168761ffff161180613b4b5750610fff8661ffff16115b80613b5b57506127108561ffff16115b80613b6b57506109c48361ffff16115b80613b7d5750620fffff8262ffffff16115b15613b9b57604051631c07203f60e01b815260040160405180910390fd5b605c82901b620fffff605c1b166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b613fff604e1b16908117871797949095179092171717909117909117908a16175b9998505050505050505050565b5f620fffff8262ffffff161115613c6257604051631c07203f60e01b815260040160405180910390fd5b620fffff60701b198316620fffff60701b607084901b1617611478565b5f80613c8a84612cd6565b62ffffff1690508015612f43575f8361ffff16613ca686612a06565b62ffffff1602905060646063828002840201612f3e565b5f8161ffff16613ccc84612c50565b61ffff16026402540be40002905092915050565b5f805f835f03613cf95750600160801b91506106489050565b50825f811215613d09579015905f035b62100000811015613ef857600160801b9250846001600160801b03811115613d32579115915f19045b6001821615613d435792830260801c925b800260801c6002821615613d595792830260801c925b800260801c6004821615613d6f5792830260801c925b800260801c6008821615613d855792830260801c925b800260801c6010821615613d9b5792830260801c925b800260801c6020821615613db15792830260801c925b800260801c6040821615613dc75792830260801c925b8002608090811c90821615613dde5792830260801c925b800260801c610100821615613df55792830260801c925b800260801c610200821615613e0c5792830260801c925b800260801c610400821615613e235792830260801c925b800260801c610800821615613e3a5792830260801c925b800260801c611000821615613e515792830260801c925b800260801c612000821615613e685792830260801c925b800260801c614000821615613e7f5792830260801c925b800260801c618000821615613e965792830260801c925b800260801c62010000821615613eae5792830260801c925b800260801c62020000821615613ec65792830260801c925b800260801c62040000821615613ede5792830260801c925b800260801c62080000821615613ef65792830260801c925b505b825f03613f2257604051631dba598d60e11b815260048101869052602481018590526044016116cf565b81613f2d5782612556565b612556835f19615a66565b5f620fffff8262ffffff161115613f6257604051631c07203f60e01b815260040160405180910390fd5b620fffff60841b198316620fffff60841b608484901b1617611478565b5f80613f8a8361433b565b905064ffffffffff60b01b19841664ffffffffff60b01b60b083901b1617612127565b806001600160801b03811681146130ef57604051632f45db3d60e21b815260040160405180910390fd5b5f81613fe281614782565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b5f60ff831684811b9061ffff6101008290031686901c906129fc9087906001901b868585614d0d565b5f805f6140438686614db5565b91509150815f14614058578360ff1682901c92505b801561409857600160ff85161b811061408457604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b5f6001600160801b038316608084901c612556828286614dd2565b5f8061ffff600884901c1660ff80851690811461410e575f82815260028701602052604081205493506140ef8483614e3c565b90505f19811461410c5760089290921b9091179250610648915050565b505b5060ff80821690600883901c908214614184575f818152600188016020526040812054945061413d8584614e3c565b90505f19811461418257600882901b81175f81815260028a0160205260409020549550935061416b85614e4a565b60ff166008855f1c901b1795505050505050610648565b505b60ff818116925082146141f057865493505f6141a08584614e3c565b90505f1981146141ee575f81815260018901602052604090205494509050806141c885614e4a565b60ff16600883901b175f81815260028a0160205260409020549550935061416b85614e4a565b505b505f9695505050505050565b5f8061ffff600884901c1660ff8416801561424c575f828152600287016020526040812054935061422d8483614ee5565b90505f19811461424a5760089290921b9091179250610648915050565b505b5060ff8116600882901c81156142a8575f81815260018801602052604081205494506142788584614ee5565b90505f1981146142a657600882901b81175f81815260028a0160205260409020549550935061416b85614ef3565b505b60ff81169150811561431357865493505f6142c38584614ee5565b90505f198114614311575f81815260018901602052604090205494509050806142eb85614ef3565b60ff16600883901b175f81815260028a0160205260409020549550935061416b85614ef3565b505b5062ffffff9695505050505050565b5f60d882901c610648565b5f6106488260d01c60ff1690565b8064ffffffffff811681146130ef576040516350dbfc8760e11b815260040160405180910390fd5b5f8061436e84612634565b90508062ffffff168362ffffff161161438957828103612127565b90910392915050565b64ffffffffff841662ffffff8481168202918482168102918416026143b6886144a6565b6143c090846157b3565b92506143cb886144ba565b6143d590836157b3565b91506143e0886144ce565b6143ea90826157b3565b9050955095509592505050565b60d082901b60ff60d01b16609084901b67ffffffffffffffff60901b16605086901b67ffffffffffffffff60501b16601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b6001600160d81b031916811761275b565b8161446081614482565b818461ffff5f198601811690811061447a5761447a615713565b015550505050565b8061ffff165f036116925760405163944e113960e01b815260040160405180910390fd5b5f6106488260101c6001600160401b031690565b5f6106488260501c6001600160401b031690565b5f6106488260901c6001600160401b031690565b5f8080806144f1600186615a79565b61ffff1690505f805f8961ffff1690505b8385116145ac575f600161451686886159d6565b901c9050888183089a508b61ffff808d1690811061453657614536615713565b0154935061454384612c5b565b92508964ffffffffff168364ffffffffff16111561456d576145666001826159e9565b94506145a6565b8964ffffffffff168364ffffffffff1610156145955761458e8160016159d6565b95506145a6565b838497509750505050505050614625565b50614502565b8164ffffffffff168964ffffffffff1610156145fb578961ffff165f036145d1578799505b8a61ffff5f198c0181169081106145ea576145ea615713565b015483965096505050505050614625565b8760018b089950828b61ffff808d1690811061461957614619615713565b01549650965050505050505b94509492505050565b5f805f8061463b886144a6565b6001600160401b031690505f614650896144ba565b6001600160401b031690505f6146658a6144ce565b6001600160401b031690508664ffffffffff165f0361468a5791945092509050614778565b5f6146948a6144a6565b6001600160401b031690505f6146a98b6144ba565b6001600160401b031690505f6146be8c6144ce565b6001600160401b031690508a64ffffffffff165f036146e7579197509550935061477892505050565b5f6146fc64ffffffffff808d16908e166159d6565b9050808b64ffffffffff1685028d64ffffffffff168902018161472157614721615742565b049950808b64ffffffffff1684028d64ffffffffff168802018161474757614747615742565b049850808b64ffffffffff1683028d64ffffffffff168702018161476d5761476d615742565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b0316111561169257604051638630bc6b60e01b815260040160405180910390fd5b5f805f6147c18686614db5565b915091506129fc8686868585614d0d565b5f816001036147e45750607f19919050565b815f036148045760405163125946cf60e11b815260040160405180910390fd5b60019190911c905f6001607f1b831061481f57506001614839565b505f1982600160fe1b8161483557614835615742565b0492505b5f614847607f85901c614ef3565b60ff607f1b607f82901b16935060ff16905083811c6001607f1b811461489d576001607e1b5b5f81131561489b57908002607f1c90600160801b8210614893579384019360019190911c905b60011d61486d565b505b50500260011b919050565b5f80806148be8460581c6001600160401b031690565b92506148d38460181c6001600160401b031690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff84118061490d5750670de0b6b3a7640000836001600160401b0316115b806149285750670de0b6b3a7640000826001600160401b0316115b1561126757604051637752557f60e11b815260040160405180910390fd5b5f806001600160801b038516608086901c82614963838389614dd2565b9050805f0361497b57505f9350839250614625915050565b5f6149868a896140a1565b9050801580614993575086155b156149af576149a182614f8c565b899550955050505050614625565b6149ba8288836147b4565b95505f6149c887838a614ffa565b905080831115614a65575f6149dd82856159e9565b9050600160801b8110614a1e57608081901c8581116149fc57806149fe565b855b9050614a0a81876159e9565b9550614a1a608082901b836159e9565b9150505b898110614a51575f614a308b83615a66565b9050868111614a3f5780614a41565b865b9050614a4d81886159e9565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614a97614a918d8d61228c565b8b6140a1565b1115614ab65760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b5f815f03614ad457505f6129fc565b6001600160801b038416608085901c5f80614b05610728614af58d8b61228c565b88614b00818c6159d6565b613173565b91509150836001600160801b0316826001600160801b03161115614b67575f614b4a614b318c8c612ee5565b614b3b84876157f3565b6001600160801b031690615016565b9050614b5f816001600160801b031660801b90565b955050614ba6565b826001600160801b0316816001600160801b03161115614ba6575f614b99614b8f8c8c612ee5565b614b3b85886157f3565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff16108015614bd05750608083901b15155b80614bf557508162ffffff168162ffffff16118015614bf557506001600160801b0383115b156108b05760405163227bd87160e21b815262ffffff821660048201526024016116cf565b61ffff600882901c165f818152600284016020526040812054909190600160ff85161b811780821461327d575f838152600287016020526040812082905582900361327157600883901c5f818152600180890160205260408220805460ff88169290921b82179055935083900361326f578654600160ff83161b1787555060019350505050610648565b5f805f5260205f8351602085015f875af19050808015614ce0573d8015614cd35760015f511483169250614cda565b843b151592505b50614cee565b3d15614cee573d5f803e3d5ffd5b50806108b05760405163197138bd60e11b815260040160405180910390fd5b5f815f03614d2c57838381614d2457614d24615742565b049050612556565b838210614d4c576040516313eae71560e01b815260040160405180910390fd5b5f8486880960018619810187165f8190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b5f805f198385098385029250828110838203039150509250929050565b5f8315614e0c575080830281848281614ded57614ded615742565b0414614e0c576040516363f1e01f60e01b815260040160405180910390fd5b82156114785760809290921b91820182811015611478576040516363f1e01f60e01b815260040160405180910390fd5b5f6114788360018401615056565b5f8160801b8015614e5d57608091508092505b8260401b90508015614e70579150604001815b8260201b90508015614e83579150602001815b8260101b90508015614e96579150601001815b8260081b90508015614ea9579150600801815b8260041b90508015614ebc579150600401815b8260021b90508015614ecf579150600201815b508160011b15614edd576001015b60ff03919050565b5f611478835f198401615082565b5f6001600160801b03821115614f0b5750608090811c905b6001600160401b03821115614f2257604091821c91015b63ffffffff821115614f3657602091821c91015b61ffff821115614f4857601091821c91015b60ff821115614f5957600891821c91015b600f821115614f6a57600491821c91015b6003821115614f7b57600291821c91015b60018211156130ef57600101919050565b5f815f03614f9b57505f919050565b5f614fa583614ef3565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff169050828210614ff45782611478565b50919050565b5f6150068484846147b4565b90508180612e9d57612e9d615742565b5f8161502181614782565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a76400009190910102612f3e565b60ff81169190911c905f8215615079578161507084614e4a565b0160ff16611478565b505f1992915050565b60ff8181031691821b915f9083156150a7578061509e85614ef3565b60ff1603612127565b505f199392505050565b6001600160a01b0381168114611692575f80fd5b5f80604083850312156150d6575f80fd5b82356150e1816150b1565b946020939093013593505050565b5f5b838110156151095781810151838201526020016150f1565b50505f910152565b602081525f825180602084015261512f8160408501602087016150ef565b601f01601f19169190910160400192915050565b803562ffffff811681146130ef575f80fd5b5f60208284031215615165575f80fd5b61147882615143565b5f8083601f84011261517e575f80fd5b5081356001600160401b03811115615194575f80fd5b6020830191508360208260051b8501011115612c49575f80fd5b5f805f805f80608087890312156151c3575f80fd5b86356151ce816150b1565b955060208701356151de816150b1565b945060408701356001600160401b03808211156151f9575f80fd5b6152058a838b0161516e565b9096509450606089013591508082111561521d575f80fd5b5061522a89828a0161516e565b979a9699509497509295939492505050565b5f8083601f84011261524c575f80fd5b5081356001600160401b03811115615262575f80fd5b602083019150836020828501011115612c49575f80fd5b5f805f6040848603121561528b575f80fd5b8335925060208401356001600160401b038111156152a7575f80fd5b6152b38682870161523c565b9497909650939450505050565b5f805f80606085870312156152d3575f80fd5b84356152de816150b1565b935060208501356001600160401b038111156152f8575f80fd5b6153048782880161516e565b9094509250506040850135615318816150b1565b939692955090935050565b5f8151808452602080850194508084015f5b8381101561535157815187529582019590820190600101615335565b509495945050505050565b838152826020820152606060408201525f6125566060830184615323565b803561ffff811681146130ef575f80fd5b5f805f805f805f80610100898b0312156153a3575f80fd5b6153ac8961537a565b97506153ba60208a0161537a565b96506153c860408a0161537a565b95506153d660608a0161537a565b94506153e460808a01615143565b93506153f260a08a0161537a565b925061540060c08a01615143565b915061540e60e08a01615143565b90509295985092959890939650565b5f805f8060408587031215615430575f80fd5b84356001600160401b0380821115615446575f80fd5b6154528883890161516e565b9096509450602087013591508082111561546a575f80fd5b506154778782880161516e565b95989497509550505050565b602081525f6114786020830184615323565b803580151581146130ef575f80fd5b5f80604083850312156154b5575f80fd5b6154be83615495565b915060208301356154ce816150b1565b809150509250929050565b5f805f805f805f60e0888a0312156154ef575f80fd5b6154f88861537a565b96506155066020890161537a565b95506155146040890161537a565b94506155226060890161537a565b935061553060808901615143565b925061553e60a0890161537a565b915061554c60c08901615143565b905092959891949750929550565b5f6020828403121561556a575f80fd5b813564ffffffffff81168114611478575f80fd5b5f806040838503121561558f575f80fd5b61559883615495565b9150612c4660208401615143565b5f80604083850312156155b7575f80fd5b82356001600160801b03811681146155cd575f80fd5b9150612c4660208401615495565b5f602082840312156155eb575f80fd5b5035919050565b5f60208284031215615602575f80fd5b6114788261537a565b5f806040838503121561561c575f80fd5b82356155cd816150b1565b5f8060408385031215615638575f80fd5b82356154be816150b1565b5f805f8060608587031215615656575f80fd5b8435615661816150b1565b93506020850135925060408501356001600160401b03811115615682575f80fd5b6154778782880161523c565b600181811c908216806156a257607f821691505b602082108103614ff457634e487b7160e01b5f52602260045260245ffd5b5f602082840312156156d0575f80fd5b8151611478816150b1565b634e487b7160e01b5f52604160045260245ffd5b604081525f6157016040830185615323565b82810360208401526125568185615323565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215615737575f80fd5b8135611478816150b1565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b64ffffffffff828116828216039080821115612f4357612f43615756565b6001600160401b038181168382160280821691908281146157ab576157ab615756565b505092915050565b6001600160401b03818116838216019080821115612f4357612f43615756565b6001600160801b03818116838216019080821115612f4357612f43615756565b6001600160801b03828116828216039080821115612f4357612f43615756565b8183525f6001600160fb1b0383111561582a575f80fd5b8260051b80836020870137939093016020019392505050565b604081525f615856604083018688615813565b828103602084015261275b818587615813565b604081525f61587c604083018587615813565b82810360208401526129fc8185615323565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b038881168252878116602083015286166040820152606081018590526080810184905260c060a082018190525f90613c2b908301848661588e565b5f82516159098184602087016150ef565b9190910192915050565b5f60208284031215615923575f80fd5b5051919050565b6001600160a01b03888116825287811660208301528616604082015260a0606082018190525f9061595e9083018688615813565b8281036080840152615971818587615813565b9a9950505050505050505050565b838152604060208201525f61255660408301848661588e565b6001600160a01b038681168252851660208201526080604082018190525f906159c49083018587615813565b90508260608301529695505050505050565b8082018082111561064857610648615756565b8181038181111561064857610648615756565b64ffffffffff818116838216019080821115612f4357612f43615756565b5f61ffff80841680615a2e57615a2e615742565b92169190910692915050565b5f82615a4857615a48615742565b600160ff1b82145f1984141615615a6157615a61615756565b500590565b5f82615a7457615a74615742565b500490565b61ffff828116828216039080821115612f4357612f4361575656feff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782a264697066735822122037b662eed80f3a48d821ece4457cb654224b7b9a9899a4e0b3aebfc6e8fc6eb864736f6c634300081400330000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac", + "nonce": "0xe4", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "LBPairUpgradeableBeacon", + "contractAddress": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "function": null, + "arguments": [ + "0x68D00Ff88F3a5987584E313b42Cb11CfeeE4FB39", + "0xCF311E7375083b9513566a47B9f3e93F1FcdCfBF", + "0x8C3cD9182dbef229a36351633f470ea904e105Ac" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xa0420", + "value": "0x0", + "input": "0x608060405234801561000f575f80fd5b5060405161088638038061088683398101604081905261002e91610184565b8282806001600160a01b03811661005f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100688161009c565b50610072826100eb565b5050600380546001600160a01b0319166001600160a01b0392909216919091179055506101c49050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036101205760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461017f575f80fd5b919050565b5f805f60608486031215610196575f80fd5b61019f84610169565b92506101ad60208501610169565b91506101bb60408501610169565b90509250925092565b6106b5806101d15f395ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c8063762c51a11161006e578063762c51a11461010a5780638456cb59146101255780638da5cb5b1461012d578063a3a4d3611461013d578063b187bd261461014e578063f2fde38b14610166575f80fd5b80631af7a41f146100aa5780633659cfe6146100d45780633f4ba83a146100e95780635c60da1b146100f1578063715018a614610102575b5f80fd5b6003546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100e76100e236600461061c565b610179565b005b6100e761018d565b6001546001600160a01b03166100b7565b6100e7610316565b6100b773e919920ae49d3027566025548f12cdab4e52b59581565b6100e7610329565b5f546001600160a01b03166100b7565b6002546001600160a01b03166100b7565b61015661049d565b60405190151581526020016100cb565b6100e761017436600461061c565b6104e9565b610181610523565b61018a8161054f565b50565b5f546001600160a01b0316331480159061027c5750600354604080516360dc98df60e11b815290516001600160a01b03909216916391d1485491839163c1b931be916004808201926020929091908290030181865afa1580156101f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102169190610649565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401602060405180830381865afa158015610256573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027a9190610660565b155b156102a157604051630a33ca5d60e31b81523360048201526024015b60405180910390fd5b6102a961049d565b6102c657604051631d08162f60e11b815260040160405180910390fd5b6002546001600160a01b03166102ef5760405163a027d3f960e01b815260040160405180910390fd5b600254610304906001600160a01b031661054f565b600280546001600160a01b0319169055565b61031e610523565b6103275f6105cd565b565b5f546001600160a01b031633148015906104185750600354604080516360dc98df60e11b815290516001600160a01b03909216916391d1485491839163c1b931be916004808201926020929091908290030181865afa15801561038e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b29190610649565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401602060405180830381865afa1580156103f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104169190610660565b155b1561043857604051630a33ca5d60e31b8152336004820152602401610298565b61044061049d565b1561045e57604051636d18edcb60e01b815260040160405180910390fd5b600154600280546001600160a01b0319166001600160a01b0390921691909117905561032773e919920ae49d3027566025548f12cdab4e52b59561054f565b5f73e919920ae49d3027566025548f12cdab4e52b5956104c56001546001600160a01b031690565b6001600160a01b031614806104e457506002546001600160a01b031615155b905090565b6104f1610523565b6001600160a01b03811661051a57604051631e4fbdf760e01b81525f6004820152602401610298565b61018a816105cd565b5f546001600160a01b031633146103275760405163118cdaa760e01b8152336004820152602401610298565b806001600160a01b03163b5f036105845760405163211eb15960e21b81526001600160a01b0382166004820152602401610298565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561062c575f80fd5b81356001600160a01b0381168114610642575f80fd5b9392505050565b5f60208284031215610659575f80fd5b5051919050565b5f60208284031215610670575f80fd5b81518015158114610642575f80fdfea26469706673582212204a46ba90d224ec320a149c0f034ca3e9d78580f4b3fc45836ac551904708c80964736f6c6343000814003300000000000000000000000068d00ff88f3a5987584e313b42cb11cfeee4fb39000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf0000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac", + "nonce": "0xe5", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x31c5b", + "value": "0x0", + "input": "0xbe203094000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf0000000000000000000000000000000000000000000000000001c6bf526340000000000000000000000000004f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "nonce": "0xe6", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "LBRouter", + "contractAddress": "0x838c5172779357e60c28cc6315c8dcfa0f782786", + "function": null, + "arguments": [ + "0x8C3cD9182dbef229a36351633f470ea904e105Ac", + "0x0000000000000000000000000000000000000000", + "0x5c7bEa38BD9d825212a1BCf0cCA4b9C122f6Bd00" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x51fc46", + "value": "0x0", + "input": "0x60e060405234801562000010575f80fd5b5060405162004b7638038062004b76833981016040819052620000339162000128565b6001600160a01b0380841660805282811660a052811660c052620000566200005f565b50505062000179565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b05760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001105780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b038116811462000110575f80fd5b5f805f606084860312156200013b575f80fd5b8351620001488162000113565b60208501519093506200015b8162000113565b60408501519092506200016e8162000113565b809150509250925092565b60805160a05160c05161493f620002375f395f818161015a015281816102b1015281816105a701528181610681015281816107590152818161089a01528181610c1701528181611315015281816113ac0152818161150d01528181611590015281816118c901528181611b5501528181611e2e0152818161270301528181612a910152612b0b01525f818161045a015261392401525f818161032b01528181610fc40152818161116a0152818161201d0152613226015261493f5ff3fe60806040526004361061014a575f3560e01c806392fe8e70116100b3578063bb558a9f1161006d578063bb558a9f1461044c578063c22159b61461047e578063d0e380f21461049d578063e038e6dc146104bc578063e9361c08146104cf578063f96fe925146104ee575f80fd5b806392fe8e7014610374578063964f987c146103935780639ab6156b146103dc578063a0d376cf146103fb578063a3c7271a1461041a578063b066ea7c14610439575f80fd5b8063659ac74b11610104578063659ac74b1461026c5780636c9c0078146102a35780638129fc1c146102d557806381c2fdfb146102e957806388cc58e41461031d5780638efc2b2c1461034f575f80fd5b80631a24f9a91461019e5780632075ad22146101d05780632a443fae146101f05780633dc8f8ec1461020f5780634b8018701461022e57806362c067671461024d575f80fd5b3661019a57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461019857604051636c8cb79360e01b815260040160405180910390fd5b005b5f80fd5b3480156101a9575f80fd5b506101bd6101b8366004613ea1565b610521565b6040519081526020015b60405180910390f35b6101e36101de366004613f06565b610818565b6040516101c79190613f9b565b3480156101fb575f80fd5b506101bd61020a366004613ea1565b610a6d565b34801561021a575f80fd5b506101e3610229366004613ea1565b610b95565b348015610239575f80fd5b506101bd610248366004613ea1565b610d92565b348015610258575f80fd5b50610198610267366004613fad565b610fc2565b348015610277575f80fd5b5061028b610286366004614015565b61112c565b6040516001600160a01b0390911681526020016101c7565b3480156102ae575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b3480156102e0575f80fd5b506101986111df565b3480156102f4575f80fd5b5061030861030336600461406e565b6112e1565b604080519283526020830191909152016101c7565b348015610328575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b61036261035d366004614121565b611432565b6040516101c796959493929190614158565b34801561037f575f80fd5b506101e361038e366004613ea1565b61167c565b34801561039e575f80fd5b506103b26103ad3660046141c2565b6117bb565b604080516001600160801b03948516815292841660208401529216918101919091526060016101c7565b3480156103e7575f80fd5b506101bd6103f6366004613ea1565b611848565b348015610406575f80fd5b506103b26104153660046141c2565b6119b7565b348015610425575f80fd5b50610362610434366004614121565b6119fa565b6101bd610447366004613f06565b611ad4565b348015610457575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b348015610489575f80fd5b5061030861049836600461420a565b611c48565b3480156104a8575f80fd5b506101bd6104b73660046142c9565b611d37565b6101bd6104ca366004613f06565b611dad565b3480156104da575f80fd5b506101986104e9366004614347565b61201b565b3480156104f9575f80fd5b5061050d6105083660046143d5565b612137565b60405162ffffff90911681526020016101c7565b5f81804211156105525760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b8451518590158061056a575080515160208201515114155b806105875750604081015151815151610584906001614413565b14155b156105a55760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f015151815181106105e9576105e9614426565b60200260200101516001600160a01b0316146106485760408601518651518151811061061757610617614426565b602002602001015160405163cfec0e0160e01b815260040161054991906001600160a01b0391909116815260200190565b5f61065f875f0151886020015189604001516121a0565b6040516370a0823160e01b81523060048201529091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156106c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ea919061443a565b905061072e88604001515f8151811061070557610705614426565b602002602001015133845f8151811061072057610720614426565b60200260200101518d6122ac565b6107428289602001518a60400151306122cd565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ca919061443a565b6107d49190614451565b945084891115610801576040516313fab00360e21b8152600481018a905260248101869052604401610549565b61080b87866126e2565b5050505095945050505050565b606081804211156108455760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b8451518590158061085d575080515160208201515114155b8061087a5750604081015151815151610877906001614413565b14155b156108985760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f815181106108d8576108d8614426565b60200260200101516001600160a01b0316146109045785604001515f8151811061061757610617614426565b5f61091b875f0151886020015189604001516121a0565b905061093187602001518289604001518b612770565b935034845f8151811061094657610946614426565b602002602001015111156109935734845f8151811061096757610967614426565b602002602001015160405163194ee21960e31b8152600401610549929190918252602082015260400190565b6109cf815f815181106109a8576109a8614426565b6020026020010151855f815181106109c2576109c2614426565b6020026020010151612a84565b5f6109e58289602001518a60400151888b612b36565b905088811015610a12576040516313fab00360e21b8152600481018a905260248101829052604401610549565b845f81518110610a2457610a24614426565b6020026020010151341115610a6157610a6133865f81518110610a4957610a49614426565b602002602001015134610a5c9190614451565b612e0b565b50505050949350505050565b5f8180421115610a995760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610ab1575080515160208201515114155b80610ace5750604081015151815151610acb906001614413565b14155b15610aec5760405163b91b4d4d60e01b815260040160405180910390fd5b5f610b03875f0151886020015189604001516121a0565b9050610b4787604001515f81518110610b1e57610b1e614426565b602002602001015133835f81518110610b3957610b39614426565b60200260200101518c6122ac565b610b5c898289602001518a604001518a612e98565b935083881115610b89576040516313fab00360e21b81526004810189905260248101859052604401610549565b50505095945050505050565b60608180421115610bc25760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610bda575080515160208201515114155b80610bf75750604081015151815151610bf4906001614413565b14155b15610c155760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f01515181518110610c5957610c59614426565b60200260200101516001600160a01b031614610c875760408601518651518151811061061757610617614426565b5f610c9e875f0151886020015189604001516121a0565b9050610cb487602001518289604001518c612770565b935087845f81518110610cc957610cc9614426565b60200260200101511115610cea5787845f8151811061096757610967614426565b610d4587604001515f81518110610d0357610d03614426565b602002602001015133835f81518110610d1e57610d1e614426565b6020026020010151875f81518110610d3857610d38614426565b60200260200101516122ac565b5f610d5b8289602001518a604001518830612b36565b905089811015610d88576040516313fab00360e21b8152600481018b905260248101829052604401610549565b61080b87826126e2565b5f8180421115610dbe5760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610dd6575080515160208201515114155b80610df35750604081015151815151610df0906001614413565b14155b15610e115760405163b91b4d4d60e01b815260040160405180910390fd5b5f610e28875f0151886020015189604001516121a0565b90505f8760400151825181518110610e4257610e42614426565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192505f918316906370a0823190602401602060405180830381865afa158015610e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eba919061443a565b9050610efe89604001515f81518110610ed557610ed5614426565b602002602001015133855f81518110610ef057610ef0614426565b60200260200101518e6122ac565b610f12838a602001518b604001518b6122cd565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7d919061443a565b610f879190614451565b9550858a1115610fb4576040516313fab00360e21b8152600481018b905260248101879052604401610549565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190614464565b6001600160a01b0316336001600160a01b03161461107357604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b0383166110a2575f19811461108f5780611091565b475b905061109d8282612e0b565b505050565b5f1981146110b05780611116565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156110f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611116919061443a565b905061109d6001600160a01b03841683836131bc565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303815f875af11580156111b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d69190614464565b95945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112235750825b90505f826001600160401b0316600114801561123e5750303b155b90508115801561124c575080155b1561126a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561129457845460ff60401b1916600160401b1785555b83156112da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f80828042111561130e5760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b5f61133e8c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1661320d565b90505f816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a19190614464565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316149050806113e0579899985b5f806113f0848e8e8e8e306132d8565b9150915082611400578082611403565b81815b80975081985050505050506114198c8786613432565b61142386846126e2565b50509850989650505050505050565b5f8080806060808261146461144a60208a018a61447f565b61145a60408b0160208c0161447f565b8a6040013561320d565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c69190614464565b6001600160a01b03166114dc60208a018a61447f565b6001600160a01b0316146115035760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153a60208a018a61447f565b6001600160a01b03161480156115535750348860600135145b156115865761157761156b60408a0160208b0161447f565b33838b608001356122ac565b6115818134612a84565b61165d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166115c060408a0160208b0161447f565b6001600160a01b03161480156115d95750348860800135145b156115fa576115776115ee60208a018a61447f565b33838b606001356122ac565b611607602089018961447f565b61161760408a0160208b0161447f565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610549565b6116678882613452565b949d939c50919a509850965090945092505050565b606081804211156116a95760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b845151859015806116c1575080515160208201515114155b806116de57506040810151518151516116db906001614413565b14155b156116fc5760405163b91b4d4d60e01b815260040160405180910390fd5b5f611713875f0151886020015189604001516121a0565b905061172987602001518289604001518c612770565b935087845f8151811061173e5761173e614426565b6020026020010151111561175f5787845f8151811061096757610967614426565b61177887604001515f81518110610d0357610d03614426565b5f61178e8289602001518a60400151888b612b36565b90508981101561080b576040516313fab00360e21b8152600481018b905260248101829052604401610549565b604051630abcd78360e41b81526001600160801b038316600482015281151560248201525f90819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa158015611815573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611839919061449a565b91989097509095509350505050565b5f81804211156118745760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b8451518590158061188c575080515160208201515114155b806118a957506040810151518151516118a6906001614413565b14155b156118c75760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f0151518151811061190b5761190b614426565b60200260200101516001600160a01b0316146119395760408601518651518151811061061757610617614426565b5f611950875f0151886020015189604001516121a0565b905061196b87604001515f81518110610b1e57610b1e614426565b611980898289602001518a6040015130612e98565b9350838811156119ad576040516313fab00360e21b81526004810189905260248101859052604401610549565b610b8986856126e2565b604051631cee6cdf60e31b81526001600160801b038316600482015281151560248201525f90819081906001600160a01b0387169063e77366f8906044016117fa565b5f80808060608082611a1261144a60208a018a61447f565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a749190614464565b6001600160a01b0316611a8a60208a018a61447f565b6001600160a01b031614611ab15760405163b33f8ab960e01b815260040160405180910390fd5b611ac16115ee60208a018a61447f565b61165d61156b60408a0160208b0161447f565b5f8180421115611b005760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580611b18575080515160208201515114155b80611b355750604081015151815151611b32906001614413565b14155b15611b535760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f81518110611b9357611b93614426565b60200260200101516001600160a01b031614611bbf5785604001515f8151811061061757610617614426565b5f611bd6875f0151886020015189604001516121a0565b9050611bfb815f81518110611bed57611bed614426565b602002602001015134612a84565b611c10348289602001518a604001518a612e98565b935083881115611c3d576040516313fab00360e21b81526004810189905260248101859052604401610549565b505050949350505050565b5f808280421115611c755760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b5f611c858d8d8d61ffff1661320d565b90505f816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce89190614464565b6001600160a01b03168e6001600160a01b0316141590508015611d09579899985b611d17828c8c8c8c8c6132d8565b90955093508015611d26579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201525f906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da4919061443a565b90505b92915050565b5f8180421115611dd95760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580611df1575080515160208201515114155b80611e0e5750604081015151815151611e0b906001614413565b14155b15611e2c5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f81518110611e6c57611e6c614426565b60200260200101516001600160a01b031614611e985785604001515f8151811061061757610617614426565b5f611eaf875f0151886020015189604001516121a0565b90505f8760400151825181518110611ec957611ec9614426565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192505f918316906370a0823190602401602060405180830381865afa158015611f1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f41919061443a565b9050611f58835f81518110611bed57611bed614426565b611f6c838a602001518b604001518b6122cd565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611fb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd7919061443a565b611fe19190614451565b9550858a111561200e576040516313fab00360e21b8152600481018b905260248101879052604401610549565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209b9190614464565b6001600160a01b0316336001600160a01b0316146120cc57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc9061210290309089908990899089908990600401614509565b5f604051808303815f87803b158015612119575f80fd5b505af115801561212b573d5f803e3d5ffd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290525f906001600160a01b0384169063f5e2932990602401602060405180830381865afa15801561217c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da49190614548565b606083516001600160401b038111156121bb576121bb613c35565b6040519080825280602002602001820160405280156121e4578160200160208202803683370190505b5090505f80835f815181106121fb576121fb614426565b602002602001015190505f5b83518110156122a25781925084816001018151811061222857612228614426565b60200260200101519150612270838389848151811061224957612249614426565b602002602001015189858151811061226357612263614426565b60200260200101516138e4565b84828151811061228257612282614426565b6001600160a01b0390921660209283029190910190910152600101612207565b5050509392505050565b80156122c7576122c76001600160a01b0385168484846139d4565b50505050565b5f805f805f865f815181106122e4576122e4614426565b602002602001015190505f5b895181101561212b5789818151811061230b5761230b614426565b6020026020010151925088818151811061232757612327614426565b6020026020010151945081955087816001018151811061234957612349614426565b60200260200101519150895181600101146123805789816001018151811061237357612373614426565b6020026020010151612382565b865b93505f85600181111561239757612397614563565b036125f6575f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123fe919061458d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b03161015612511576040516370a0823160e01b81526001600160a01b0386811660048301525f9184918b16906370a0823190602401602060405180830381865afa158015612477573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061249b919061443a565b0390505f6124aa828585613a30565b60405163022c0d9f60e01b81529091506001600160a01b0388169063022c0d9f906124dd905f9085908d906004016145ce565b5f604051808303815f87803b1580156124f4575f80fd5b505af1158015612506573d5f803e3d5ffd5b5050505050506125ef565b6040516370a0823160e01b81526001600160a01b0386811660048301525f9183918b16906370a0823190602401602060405180830381865afa158015612559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061257d919061443a565b0390505f61258c828486613a30565b60405163022c0d9f60e01b81529091506001600160a01b0388169063022c0d9f906125bf9084905f908d906004016145ce565b5f604051808303815f87803b1580156125d6575f80fd5b505af11580156125e8573d5f803e3d5ffd5b5050505050505b50506126da565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612641573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126659190614464565b60405160e083901b6001600160e01b03191681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303815f875af11580156126b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d8919061443a565b505b6001016122f0565b805f036126ed575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b15801561274c575f80fd5b505af115801561275e573d5f803e3d5ffd5b5050505061276c8282612e0b565b5050565b606082516001600160401b0381111561278b5761278b613c35565b6040519080825280602002602001820160405280156127b4578160200160208202803683370190505b50905081818551815181106127cb576127cb614426565b602090810291909101015283515b8015612a7b575f846127ec600184614451565b815181106127fc576127fc614426565b602002602001015190505f876001846128159190614451565b8151811061282557612825614426565b602002602001015190505f8760018561283e9190614451565b8151811061284e5761284e614426565b602002602001015190505f600181111561286a5761286a614563565b82600181111561287c5761287c614563565b0361299a575f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e3919061458d565b506001600160701b031691506001600160701b0316915088868151811061290c5761290c614426565b60200260200101516001600160a01b0316856001600160a01b0316111561292f57905b5f87878151811061294257612942614426565b60200260200101519050612961838383613ac59092919063ffffffff16565b6001600160801b03168861297660018a614451565b8151811061298657612986614426565b602002602001018181525050505050612a65565b612a31818686815181106129b0576129b0614426565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a229190614464565b6001600160a01b0316146117bb565b50506001600160801b031685612a48600187614451565b81518110612a5857612a58614426565b6020026020010181815250505b5050508080612a73906145fb565b9150506127d9565b50949350505050565b805f03612a8f575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612ae8575f80fd5b505af1158015612afa573d5f803e3d5ffd5b5061276c9350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150849050836131bc565b5f805f805f80885f81518110612b4e57612b4e614426565b602002602001015190505f5b8b51811015612dfc578b8181518110612b7557612b75614426565b602002602001015193508a8181518110612b9157612b91614426565b60200260200101519250819550898160010181518110612bb357612bb3614426565b602002602001015191508b518160010114612bea578b8160010181518110612bdd57612bdd614426565b6020026020010151612bec565b875b94505f836001811115612c0157612c01614563565b03612cd157888160010181518110612c1b57612c1b614426565b60200260200101519650816001600160a01b0316866001600160a01b03161015612ca15760405163022c0d9f60e01b81526001600160a01b0385169063022c0d9f90612c6f905f908b908a906004016145ce565b5f604051808303815f87803b158015612c86575f80fd5b505af1158015612c98573d5f803e3d5ffd5b50505050612df4565b60405163022c0d9f60e01b81526001600160a01b0385169063022c0d9f90612c6f908a905f908a906004016145ce565b5f846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d329190614464565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292505f918291612dc8918916906353c059a0906044015b6020604051808303815f875af1158015612d90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612db4919061443a565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612dec57809950612df0565b8199505b5050505b600101612b5a565b50505050505095945050505050565b805f03612e16575050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e5f576040519150601f19603f3d011682016040523d82523d5f602084013e612e64565b606091505b505090508061109d5760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610549565b5f805f805f80875f81518110612eb057612eb0614426565b602002602001015190508a95505f5b8a51811015612dfc578a8181518110612eda57612eda614426565b60200260200101519250898181518110612ef657612ef6614426565b60200260200101519450819550888160010181518110612f1857612f18614426565b602002602001015191508a518160010114612f4f578a8160010181518110612f4257612f42614426565b6020026020010151612f51565b875b93505f856001811115612f6657612f66614563565b036130e1575f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612fa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fcd919061458d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561306e57613009898383613a30565b60405163022c0d9f60e01b81529099506001600160a01b0386169063022c0d9f9061303c905f908d908b906004016145ce565b5f604051808303815f87803b158015613053575f80fd5b505af1158015613065573d5f803e3d5ffd5b505050506130da565b613079898284613a30565b60405163022c0d9f60e01b81529099506001600160a01b0386169063022c0d9f906130ac908c905f908b906004016145ce565b5f604051808303815f87803b1580156130c3575f80fd5b505af11580156130d5573d5f803e3d5ffd5b505050505b50506131b4565b5f836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561311e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131429190614464565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292505f918291613188918816906353c059a090604401612d74565b6001600160801b031691506001600160801b0316915082156131ac578099506131b0565b8199505b5050505b600101612ebf565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526122c78482613b60565b60405163704037bd60e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063704037bd9061325f90879087908790600401614610565b608060405180830381865afa15801561327a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329e9190614634565b6020015190506001600160a01b0381166132d157838383604051636b2471d160e11b815260040161054993929190614610565b9392505050565b5f805f886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b815260040161330d94939291906146b6565b5f604051808303815f875af1158015613328573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261334f91908101906146f3565b90505f5b81518110156133e25761338582828151811061337157613371614426565b60200260200101516001600160801b031690565b613398906001600160801b031685614413565b93506133bd8282815181106133af576133af614426565b602002602001015160801c90565b6133d0906001600160801b031684614413565b92506133db81614773565b9050613353565b50878310806133f057508682105b15613426576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610549565b50965096945050505050565b805f0361343e57505050565b61109d6001600160a01b03841683836131bc565b5f805f80606080876101c00135804211156134895760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b6134976101408a018a61478b565b90506134a76101208b018b61478b565b90501415806134d457506134bf6101608a018a61478b565b90506134cf6101208b018b61478b565b905014155b156134f25760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a0135118061350e575062ffffff6101008a0135115b1561353d5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610549565b5f61354c6101208b018b61478b565b90506001600160401b0381111561356557613565613c35565b60405190808252806020026020018201604052801561358e578160200160208202803683370190505b50905061359f6101208b018b61478b565b90506001600160401b038111156135b8576135b8613c35565b6040519080825280602002602001820160405280156135e1578160200160208202803683370190505b5093505f896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613621573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136459190614548565b62ffffff169050808b61010001358c60e0013501108061366f57508a60e001358b61010001358201105b156136a557604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610549565b5f5b82518110156137a5575f6136bf6101208e018e61478b565b838181106136cf576136cf614426565b90506020020135830190505f8112806136ea575062ffffff81115b1561370b576040516370a82e6160e11b815260048101829052602401610549565b8087838151811061371e5761371e614426565b602090810291909101015261377f61373a6101408f018f61478b565b8481811061374a5761374a614426565b905060200201358e806101600190613762919061478b565b8581811061377257613772614426565b9050602002013583613bc9565b84838151811061379157613791614426565b6020908102919091010152506001016136a7565b50505f808a6001600160a01b031663383d15c58d6101800160208101906137cc919061447f565b858f6101a00160208101906137e1919061447f565b6040518463ffffffff1660e01b81526004016137ff939291906147d0565b5f604051808303815f875af115801561381a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526138419190810190614834565b965090925090505f6138538383613bfb565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061387d57508c60c001358a105b156138b9576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610549565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b5f808260018111156138f8576138f8614563565b036139c15760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398d9190614464565b90506001600160a01b0381166139bc57848484604051636b2471d160e11b815260040161054993929190614610565b6139cc565b6111d685858561320d565b949350505050565b5f6323b872dd60e01b8484846040516024016139f293929190614610565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290506112da8582613b60565b5f835f03613a515760405163b937356b60e01b815260040160405180910390fd5b821580613a5c575081155b15613a7a57604051637b03555560e01b815260040160405180910390fd5b5f613a87856103e56148d3565b90505f613a9484836148d3565b90505f82613aa4876103e86148d3565b613aae9190614413565b9050613aba81836148ea565b979650505050505050565b5f835f03613ae65760405163b937356b60e01b815260040160405180910390fd5b821580613af1575081155b15613b0f57604051637b03555560e01b815260040160405180910390fd5b5f613b1a85856148d3565b613b26906103e86148d3565b90505f613b338685614451565b613b3f906103e56148d3565b9050613b4b81836148ea565b613b56906001614413565b9695505050505050565b5f805f5260205f8351602085015f875af19050808015613b9c573d8015613b8f5760015f511483169250613b96565b843b151592505b50613baa565b3d15613baa573d5f803e3d5ffd5b508061109d5760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b67ffffffffffffffff60581b161762ffffff821681176139cc565b80820382811180613c1757506001600160801b03808416908216115b15611da75760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715613c6b57613c6b613c35565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613c9957613c99613c35565b604052919050565b5f6001600160401b03821115613cb957613cb9613c35565b5060051b60200190565b5f82601f830112613cd2575f80fd5b81356020613ce7613ce283613ca1565b613c71565b82815260059290921b84018101918181019086841115613d05575f80fd5b8286015b84811015613d205780358352918301918301613d09565b509695505050505050565b6001600160a01b0381168114613d3f575f80fd5b50565b8035613d4d81613d2b565b919050565b5f82601f830112613d61575f80fd5b81356020613d71613ce283613ca1565b82815260059290921b84018101918181019086841115613d8f575f80fd5b8286015b84811015613d20578035613da681613d2b565b8352918301918301613d93565b5f60608284031215613dc3575f80fd5b613dcb613c49565b905081356001600160401b0380821115613de3575f80fd5b613def85838601613cc3565b8352602091508184013581811115613e05575f80fd5b8401601f81018613613e15575f80fd5b8035613e23613ce282613ca1565b81815260059190911b82018401908481019088831115613e41575f80fd5b928501925b82841015613e6c57833560028110613e5d575f8081fd5b82529285019290850190613e46565b8086880152505050506040840135915080821115613e88575f80fd5b50613e9584828501613d52565b60408301525092915050565b5f805f805f60a08688031215613eb5575f80fd5b853594506020860135935060408601356001600160401b03811115613ed8575f80fd5b613ee488828901613db3565b9350506060860135613ef581613d2b565b949793965091946080013592915050565b5f805f8060808587031215613f19575f80fd5b8435935060208501356001600160401b03811115613f35575f80fd5b613f4187828801613db3565b9350506040850135613f5281613d2b565b9396929550929360600135925050565b5f8151808452602080850194508084015f5b83811015613f9057815187529582019590820190600101613f74565b509495945050505050565b602081525f611da46020830184613f62565b5f805f60608486031215613fbf575f80fd5b8335613fca81613d2b565b92506020840135613fda81613d2b565b929592945050506040919091013590565b62ffffff81168114613d3f575f80fd5b61ffff81168114613d3f575f80fd5b8035613d4d81613ffb565b5f805f8060808587031215614028575f80fd5b843561403381613d2b565b9350602085013561404381613d2b565b9250604085013561405381613feb565b9150606085013561406381613ffb565b939692955090935050565b5f805f805f805f80610100898b031215614086575f80fd5b883561409181613d2b565b975060208901356140a181613ffb565b9650604089013595506060890135945060808901356001600160401b03808211156140ca575f80fd5b6140d68c838d01613cc3565b955060a08b01359150808211156140eb575f80fd5b506140f88b828c01613cc3565b93505060c089013561410981613d2b565b8092505060e089013590509295985092959890939650565b5f60208284031215614131575f80fd5b81356001600160401b03811115614146575f80fd5b82016101e081850312156132d1575f80fd5b86815285602082015284604082015283606082015260c060808201525f61418260c0830185613f62565b82810360a08401526141948185613f62565b9998505050505050505050565b6001600160801b0381168114613d3f575f80fd5b8015158114613d3f575f80fd5b5f805f606084860312156141d4575f80fd5b83356141df81613d2b565b925060208401356141ef816141a1565b915060408401356141ff816141b5565b809150509250925092565b5f805f805f805f805f6101208a8c031215614223575f80fd5b893561422e81613d2b565b985060208a013561423e81613d2b565b975061424c60408b0161400a565b965060608a0135955060808a0135945060a08a01356001600160401b0380821115614275575f80fd5b6142818d838e01613cc3565b955060c08c0135915080821115614296575f80fd5b506142a38c828d01613cc3565b9350506142b260e08b01613d42565b91506101008a013590509295985092959850929598565b5f80604083850312156142da575f80fd5b82356142e581613d2b565b915060208301356142f581613feb565b809150509250929050565b5f8083601f840112614310575f80fd5b5081356001600160401b03811115614326575f80fd5b6020830191508360208260051b8501011115614340575f80fd5b9250929050565b5f805f805f806080878903121561435c575f80fd5b863561436781613d2b565b9550602087013561437781613d2b565b945060408701356001600160401b0380821115614392575f80fd5b61439e8a838b01614300565b909650945060608901359150808211156143b6575f80fd5b506143c389828a01614300565b979a9699509497509295939492505050565b5f80604083850312156143e6575f80fd5b82356143f181613d2b565b946020939093013593505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611da757611da76143ff565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561444a575f80fd5b5051919050565b81810381811115611da757611da76143ff565b5f60208284031215614474575f80fd5b81516132d181613d2b565b5f6020828403121561448f575f80fd5b81356132d181613d2b565b5f805f606084860312156144ac575f80fd5b83516144b7816141a1565b60208501519093506144c8816141a1565b60408501519092506141ff816141a1565b8183525f6001600160fb1b038311156144f0575f80fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b038781168252861660208201526080604082018190525f9061453590830186886144d9565b82810360608401526141948185876144d9565b5f60208284031215614558575f80fd5b81516132d181613feb565b634e487b7160e01b5f52602160045260245ffd5b80516001600160701b0381168114613d4d575f80fd5b5f805f6060848603121561459f575f80fd5b6145a884614577565b92506145b660208501614577565b9150604084015163ffffffff811681146141ff575f80fd5b92835260208301919091526001600160a01b031660408201526080606082018190525f9082015260a00190565b5f81614609576146096143ff565b505f190190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60808284031215614644575f80fd5b604051608081018181106001600160401b038211171561466657614666613c35565b604052825161467481613ffb565b8152602083015161468481613d2b565b60208201526040830151614697816141b5565b604082015260608301516146aa816141b5565b60608201529392505050565b6001600160a01b038581168252841660208201526080604082018190525f906146e190830185613f62565b8281036060840152613aba8185613f62565b5f6020808385031215614704575f80fd5b82516001600160401b03811115614719575f80fd5b8301601f81018513614729575f80fd5b8051614737613ce282613ca1565b81815260059190911b82018301908381019087831115614755575f80fd5b928401925b82841015613aba5783518252928401929084019061475a565b5f60018201614784576147846143ff565b5060010190565b5f808335601e198436030181126147a0575f80fd5b8301803591506001600160401b038211156147b9575f80fd5b6020019150600581901b3603821315614340575f80fd5b6001600160a01b0384811682526060602080840182905285519184018290525f92868201929091906080860190855b8181101561481b578551835294830194918301916001016147ff565b5050809450505080851660408501525050949350505050565b5f805f60608486031215614846575f80fd5b83519250602080850151925060408501516001600160401b0381111561486a575f80fd5b8501601f8101871361487a575f80fd5b8051614888613ce282613ca1565b81815260059190911b820183019083810190898311156148a6575f80fd5b928401925b828410156148c4578351825292840192908401906148ab565b80955050505050509250925092565b8082028115828204841417611da757611da76143ff565b5f8261490457634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212206f438991d849b5c02d55debd6c2e995dedd38bb22485864cf69eedef3463c16d64736f6c634300081400330000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00", + "nonce": "0xe7", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "function": null, + "arguments": [ + "0x838c5172779357E60C28cc6315c8DCFa0F782786", + "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "0x" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xce718", + "value": "0x0", + "input": "0x60a060405260405162000e5038038062000e508339810160408190526200002691620003bc565b828162000034828262000099565b50508160405162000045906200035a565b6001600160a01b039091168152602001604051809103905ff0801580156200006f573d5f803e3d5ffd5b506001600160a01b0316608052620000906200008a60805190565b620000fe565b505050620004b3565b620000a4826200016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115620000f057620000eb8282620001ee565b505050565b620000fa62000267565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200013f5f8051602062000e30833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16200016c8162000289565b50565b806001600160a01b03163b5f03620001aa57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516200020c919062000496565b5f60405180830381855af49150503d805f811462000246576040519150601f19603f3d011682016040523d82523d5f602084013e6200024b565b606091505b5090925090506200025e858383620002ca565b95945050505050565b3415620002875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002b457604051633173bdd160e11b81525f6004820152602401620001a1565b805f8051602062000e30833981519152620001cd565b606082620002e357620002dd8262000330565b62000329565b8151158015620002fb57506001600160a01b0384163b155b156200032657604051639996b31560e01b81526001600160a01b0385166004820152602401620001a1565b50805b9392505050565b805115620003415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806200093483390190565b80516001600160a01b03811681146200037f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620003b45781810151838201526020016200039a565b50505f910152565b5f805f60608486031215620003cf575f80fd5b620003da8462000368565b9250620003ea6020850162000368565b60408501519092506001600160401b038082111562000407575f80fd5b818601915086601f8301126200041b575f80fd5b81518181111562000430576200043062000384565b604051601f8201601f19908116603f011681019083821181831017156200045b576200045b62000384565b8160405282815289602084870101111562000474575f80fd5b6200048783602083016020880162000398565b80955050505050509250925092565b5f8251620004a981846020870162000398565b9190910192915050565b608051610469620004cb5f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea2646970667358221220646db6b703a46dbf43b5303e88a0e75f2165f627cdec6f33f692542261be647a64736f6c63430008140033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000838c5172779357e60c28cc6315c8dcfa0f782786000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xe8", + "chainId": "0xc576d" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x849502fc0c4bbdba68432a18ac26f10a81690cf8", + "initCode": "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + } + ], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "LBQuoter", + "contractAddress": "0xa87bed23e26b2bb7725173168d983ee4ec0e2b64", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x8C3cD9182dbef229a36351633f470ea904e105Ac", + "0xE1EA7bCD93232c66DE8D4D1a5e22da53803e7A69" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x2f3bdb", + "value": "0x0", + "input": "0x60e060405234801562000010575f80fd5b5060405162002b2d38038062002b2d83398101604081905262000033916200006d565b6001600160a01b0392831660805290821660a0521660c052620000b4565b80516001600160a01b038116811462000068575f80fd5b919050565b5f805f6060848603121562000080575f80fd5b6200008b8462000051565b92506200009b6020850162000051565b9150620000ab6040850162000051565b90509250925092565b60805160a05160c051612a0b620001225f395f818160ba01528181610636015261138701525f818160f3015281816103e3015281816104130152818161113e015261117601525f8181605b01528181610a5801528181610a88015281816117f4015261182c0152612a0b5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806307da8f57146100595780630f902a401461009857806333141d3e146100b857806359214226146100de578063ca56fc72146100f1575b5f80fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100a63660046123c7565b610117565b60405161008f9190612557565b7f000000000000000000000000000000000000000000000000000000000000000061007b565b6100ab6100ec3660046123c7565b610e7c565b7f000000000000000000000000000000000000000000000000000000000000000061007b565b6101576040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561017957604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250938552506101ba91506001905085612637565b9050806001600160401b038111156101d4576101d461264a565b6040519080825280602002602001820160405280156101fd578160200160208202803683370190505b506020830152806001600160401b0381111561021b5761021b61264a565b604051908082528060200260200182016040528015610244578160200160208202803683370190505b506040830152806001600160401b038111156102625761026261264a565b60405190808252806020026020018201604052801561028b578160200160208202803683370190505b506060830152806001600160401b038111156102a9576102a961264a565b6040519080825280602002602001820160405280156102d2578160200160208202803683370190505b5060c0830152836001600160401b038111156102f0576102f061264a565b604051908082528060200260200182016040528015610319578160200160208202803683370190505b506080830152836001600160401b038111156103375761033761264a565b604051908082528060200260200182016040528015610360578160200160208202803683370190505b508260a001819052508282608001515f815181106103805761038061265e565b60200260200101906001600160801b031690816001600160801b031681525050828260a001515f815181106103b7576103b761265e565b60200260200101906001600160801b031690816001600160801b0316815250505f5b81811015610e73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a56575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104525761045261265e565b90506020020160208101906104679190612686565b89896104748760016126a8565b8181106104835761048361265e565b90506020020160208101906104989190612686565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f60405180830381865afa1580156104e0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105079190810190612722565b90505f815111801561053e57505f8460800151838151811061052b5761052b61265e565b60200260200101516001600160801b0316115b15610a54575f5b8151811015610a52578181815181106105605761056061265e565b602002602001015160600151610a40575f888861057e8660016126a8565b81811061058d5761058d61265e565b90506020020160208101906105a29190612686565b6001600160a01b03168383815181106105bd576105bd61265e565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610604573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106289190612819565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf8484815181106106755761067561265e565b602002602001015160200151886080015187815181106106975761069761265e565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610718575060408051601f3d908101601f1916820190925261071591810190612834565b60015b15610a3e576001600160801b03831615801561076c5750608089015161073f8860016126a8565b8151811061074f5761074f61265e565b60200260200101516001600160801b0316826001600160801b0316115b15610a3a57608089015182906107838960016126a8565b815181106107935761079361265e565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107c5576107c561265e565b602002602001015160200151896020015188815181106107e7576107e761265e565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108195761081961265e565b60200260200101515f015161ffff168960400151888151811061083e5761083e61265e565b6020026020010181815250506001896060015188815181106108625761086261265e565b6020026020010190600181111561087b5761087b6124b5565b9081600181111561088e5761088e6124b5565b815250505f8686815181106108a5576108a561265e565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109109190612873565b905061096c828b60a001518a8151811061092c5761092c61265e565b602002602001015161093e9190612895565b6001600160801b0316828c604001518b8151811061095e5761095e61265e565b602002602001015188611c70565b60a08b015161097c8a60016126a8565b8151811061098c5761098c61265e565b60200260200101906001600160801b031690816001600160801b031681525050610a028a6080015189815181106109c5576109c561265e565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a76400006109f391906128bc565b6109fd91906128e7565b611cbd565b8a60c001518981518110610a1857610a1861265e565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a4a81612906565b915050610545565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e61575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610ac757610ac761265e565b9050602002016020810190610adc9190612686565b8989610ae98760016126a8565b818110610af857610af861265e565b9050602002016020810190610b0d9190612686565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7a9190612819565b90506001600160a01b03811615801590610bb957505f84608001518381518110610ba657610ba661265e565b60200260200101516001600160801b0316115b15610e5f575f80610c21838a8a87818110610bd657610bd661265e565b9050602002016020810190610beb9190612686565b8b8b610bf88960016126a8565b818110610c0757610c0761265e565b9050602002016020810190610c1c9190612686565b611cec565b915091505f82118015610c3357505f81115b15610e5c575f610c6a87608001518681518110610c5257610c5261265e565b60200260200101516001600160801b03168484611da7565b6080880151909150610c7d8660016126a8565b81518110610c8d57610c8d61265e565b60200260200101516001600160801b0316811115610e5a57610cae81611cbd565b6080880151610cbe8760016126a8565b81518110610cce57610cce61265e565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d0557610d0561265e565b60200260200101906001600160a01b031690816001600160a01b031681525050610d716109fd8860a001518781518110610d4157610d4161265e565b60200260200101516103e5610d56919061291e565b6001600160801b0316610d6b866103e86128bc565b85611e3c565b60a0880151610d818760016126a8565b81518110610d9157610d9161265e565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610dcf57610dcf61265e565b60200260200101906001600160801b031690816001600160801b0316815250505f87606001518681518110610e0657610e0661265e565b60200260200101906001811115610e1f57610e1f6124b5565b90816001811115610e3257610e326124b5565b815250505f87604001518681518110610e4d57610e4d61265e565b6020026020010181815250505b505b50505b505b80610e6b81612906565b9150506103d9565b50509392505050565b610ebc6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610ede57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093855250610f1f91506001905085612637565b9050806001600160401b03811115610f3957610f3961264a565b604051908082528060200260200182016040528015610f62578160200160208202803683370190505b506020830152806001600160401b03811115610f8057610f8061264a565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b506040830152806001600160401b03811115610fc757610fc761264a565b604051908082528060200260200182016040528015610ff0578160200160208202803683370190505b506060830152836001600160401b0381111561100e5761100e61264a565b604051908082528060200260200182016040528015611037578160200160208202803683370190505b506080830152836001600160401b038111156110555761105561264a565b60405190808252806020026020018201604052801561107e578160200160208202803683370190505b5060a0830152806001600160401b0381111561109c5761109c61264a565b6040519080825280602002602001820160405280156110c5578160200160208202803683370190505b508260c0018190525082826080015182815181106110e5576110e561265e565b60200260200101906001600160801b031690816001600160801b031681525050828260a00151828151811061111c5761111c61265e565b6001600160801b0390921660209283029190910190910152805b8015610e73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316156117f2575f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111a8600187612637565b8181106111b7576111b761265e565b90506020020160208101906111cc9190612686565b8989868181106111de576111de61265e565b90506020020160208101906111f39190612686565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f60405180830381865afa15801561123b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112629190810190612722565b90505f815111801561129957505f846080015183815181106112865761128661265e565b60200260200101516001600160801b0316115b156117f0575f5b81518110156117ee578181815181106112bb576112bb61265e565b6020026020010151606001516117dc575f8888858181106112de576112de61265e565b90506020020160208101906112f39190612686565b6001600160a01b031683838151811061130e5761130e61265e565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611355573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113799190612819565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c8484815181106113c6576113c661265e565b602002602001015160200151886080015187815181106113e8576113e861265e565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015611469575060408051601f3d908101601f1916820190925261146691810190612834565b60015b156117da576001600160801b03821615801561148d57506001600160801b03831615155b801561150a575060808901516114a4600189612637565b815181106114b4576114b461265e565b60200260200101516001600160801b0316836001600160801b0316108061150a575060808901516114e6600189612637565b815181106114f6576114f661265e565b60200260200101516001600160801b03165f145b156117d6576080890151839061152160018a612637565b815181106115315761153161265e565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115635761156361265e565b60200260200101516020015189602001516001896115819190612637565b815181106115915761159161265e565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106115c3576115c361265e565b60200260200101515f015161ffff1689604001516001896115e49190612637565b815181106115f4576115f461265e565b60209081029190910101526060890151600190611611828a612637565b815181106116215761162161265e565b6020026020010190600181111561163a5761163a6124b5565b9081600181111561164d5761164d6124b5565b815250505f8686815181106116645761166461265e565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116cf9190612873565b90508161172e8b60a001518a815181106116eb576116eb61265e565b60200260200101516001600160801b0316838d6040015160018d61170f9190612637565b8151811061171f5761171f61265e565b60200260200101518915611c70565b6117389190612949565b60a08b015161174860018b612637565b815181106117585761175861265e565b6001600160801b039092166020928302919091019091015260808a01516117949061178460018b612637565b815181106109c5576109c561265e565b60c08b01516117a460018b612637565b815181106117b4576117b461265e565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b806117e681612906565b9150506112a0565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611c5e575f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a43905888861185e600187612637565b81811061186d5761186d61265e565b90506020020160208101906118829190612686565b8989868181106118945761189461265e565b90506020020160208101906118a99190612686565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156118f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119169190612819565b90506001600160a01b0381161580159061195557505f846080015183815181106119425761194261265e565b60200260200101516001600160801b0316115b15611c5c575f806119a3838a8a61196d600189612637565b81811061197c5761197c61265e565b90506020020160208101906119919190612686565b8b8b88818110610c0757610c0761265e565b915091505f821180156119db5750856080015184815181106119c7576119c761265e565b60200260200101516001600160801b031681115b15611c59575f611a12876080015186815181106119fa576119fa61265e565b60200260200101516001600160801b03168484611e9b565b6080880151909150611a25600187612637565b81518110611a3557611a3561265e565b60200260200101516001600160801b0316811080611a8257506080870151611a5e600187612637565b81518110611a6e57611a6e61265e565b60200260200101516001600160801b03165f145b15611c5757611a9081611cbd565b6080880151611aa0600188612637565b81518110611ab057611ab061265e565b6001600160801b039092166020928302919091018201528701518490611ad7600188612637565b81518110611ae757611ae761265e565b60200260200101906001600160a01b031690816001600160a01b031681525050611b5e611b538860a001518781518110611b2357611b2361265e565b60200260200101516103e8611b38919061291e565b6001600160801b0316611b4d856103e56128bc565b86611e3c565b6109fd9060016126a8565b60a0880151611b6e600188612637565b81518110611b7e57611b7e61265e565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611baf600188612637565b81518110611bbf57611bbf61265e565b6001600160801b039092166020928302919091019091015260608701515f90611be9600188612637565b81518110611bf957611bf961265e565b60200260200101906001811115611c1257611c126124b5565b90816001811115611c2557611c256124b5565b90525060408701515f90611c3a600188612637565b81518110611c4a57611c4a61265e565b6020026020010181815250505b505b50505b505b80611c6881612969565b915050611136565b5f8115611c9857611c916109fd866080611c8a8888611f36565b9190611f6c565b9050611cb5565b611cb26109fd6080611caa8787611f36565b889190611fd6565b90505b949350505050565b806001600160801b0381168114611ce757604051632f45db3d60e21b815260040160405180910390fd5b919050565b5f805f611cf98585611fff565b5090505f80876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5e9190612994565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614611d95578082611d98565b81815b90999098509650505050505050565b5f835f03611dc85760405163b937356b60e01b815260040160405180910390fd5b821580611dd3575081155b15611df157604051637b03555560e01b815260040160405180910390fd5b5f611dfe856103e56128bc565b90505f611e0b84836128bc565b90505f82611e1b876103e86128bc565b611e2591906126a8565b9050611e3181836128e7565b979650505050505050565b5f835f03611e5d5760405163b937356b60e01b815260040160405180910390fd5b821580611e68575081155b15611e8657604051637b03555560e01b815260040160405180910390fd5b82611e9183866128bc565b611cb591906128e7565b5f835f03611ebc5760405163b937356b60e01b815260040160405180910390fd5b821580611ec7575081155b15611ee557604051637b03555560e01b815260040160405180910390fd5b5f611ef085856128bc565b611efc906103e86128bc565b90505f611f098685612637565b611f15906103e56128bc565b9050611f2181836128e7565b611f2c9060016126a8565b9695505050505050565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff1901611f638282612089565b95945050505050565b5f805f611f7986866122eb565b91509150815f14611f8e578360ff1682901c92505b8015610e7357600160ff85161b8110611fba57604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b5f60ff831684811b9061ffff6101008290031686901c90611f2c9087906001901b868585612308565b5f80826001600160a01b0316846001600160a01b0316036120335760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b031610612053578284612056565b83835b90925090506001600160a01b03821661208257604051632268279160e11b815260040160405180910390fd5b9250929050565b5f805f835f036120a25750600160801b91506122e59050565b50825f8112156120b2579015905f035b621000008110156122a157600160801b9250846001600160801b038111156120db579115915f19045b60018216156120ec5792830260801c925b800260801c60028216156121025792830260801c925b800260801c60048216156121185792830260801c925b800260801c600882161561212e5792830260801c925b800260801c60108216156121445792830260801c925b800260801c602082161561215a5792830260801c925b800260801c60408216156121705792830260801c925b8002608090811c908216156121875792830260801c925b800260801c61010082161561219e5792830260801c925b800260801c6102008216156121b55792830260801c925b800260801c6104008216156121cc5792830260801c925b800260801c6108008216156121e35792830260801c925b800260801c6110008216156121fa5792830260801c925b800260801c6120008216156122115792830260801c925b800260801c6140008216156122285792830260801c925b800260801c61800082161561223f5792830260801c925b800260801c620100008216156122575792830260801c925b800260801c6202000082161561226f5792830260801c925b800260801c620400008216156122875792830260801c925b800260801c6208000082161561229f5792830260801c925b505b825f036122cf57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b816122da5782611f63565b611f63835f196128e7565b92915050565b5f805f198385098385029250828110838203039150509250929050565b5f815f036123275783838161231f5761231f6128d3565b049050611f63565b838210612347576040516313eae71560e01b815260040160405180910390fd5b5f8486880960018619810187165f8190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b03811681146123c4575f80fd5b50565b5f805f604084860312156123d9575f80fd5b83356001600160401b03808211156123ef575f80fd5b818601915086601f830112612402575f80fd5b813581811115612410575f80fd5b8760208260051b8501011115612424575f80fd5b6020928301955093505084013561243a816123b0565b809150509250925092565b5f8151808452602080850194508084015f5b8381101561247c5781516001600160a01b031687529582019590820190600101612457565b509495945050505050565b5f8151808452602080850194508084015f5b8381101561247c57815187529582019590820190600101612499565b634e487b7160e01b5f52602160045260245ffd5b5f8151808452602080850194508084015f805b848110156125145782516002811061250257634e487b7160e01b83526021600452602483fd5b885296830196918301916001016124dc565b50959695505050505050565b5f8151808452602080850194508084015f5b8381101561247c5781516001600160801b031687529582019590820190600101612532565b602081525f825160e06020840152612573610100840182612445565b90506020840151601f19808584030160408601526125918383612445565b925060408601519150808584030160608601526125ae8383612487565b925060608601519150808584030160808601526125cb83836124c9565b925060808601519150808584030160a08601526125e88383612520565b925060a08601519150808584030160c08601526126058383612520565b925060c08601519150808584030160e086015250611f638282612520565b634e487b7160e01b5f52601160045260245ffd5b818103818111156122e5576122e5612623565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03811681146123c4575f80fd5b5f60208284031215612696575f80fd5b81356126a181612672565b9392505050565b808201808211156122e5576122e5612623565b604051608081016001600160401b03811182821017156126dd576126dd61264a565b60405290565b604051601f8201601f191681016001600160401b038111828210171561270b5761270b61264a565b604052919050565b80518015158114611ce7575f80fd5b5f6020808385031215612733575f80fd5b82516001600160401b0380821115612749575f80fd5b818501915085601f83011261275c575f80fd5b81518181111561276e5761276e61264a565b61277c848260051b016126e3565b818152848101925060079190911b83018401908782111561279b575f80fd5b928401925b81841015611e3157608084890312156127b8575f8081fd5b6127c06126bb565b845161ffff811681146127d2575f8081fd5b8152848601516127e181612672565b8187015260406127f2868201612713565b908201526060612803868201612713565b90820152835260809390930192918401916127a0565b5f60208284031215612829575f80fd5b81516126a181612672565b5f805f60608486031215612846575f80fd5b8351612851816123b0565b6020850151909350612862816123b0565b604085015190925061243a816123b0565b5f60208284031215612883575f80fd5b815162ffffff811681146126a1575f80fd5b6001600160801b038281168282160390808211156128b5576128b5612623565b5092915050565b80820281158282048414176122e5576122e5612623565b634e487b7160e01b5f52601260045260245ffd5b5f8261290157634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001820161291757612917612623565b5060010190565b6001600160801b0381811683821602808216919082811461294157612941612623565b505092915050565b6001600160801b038181168382160190808211156128b5576128b5612623565b5f8161297757612977612623565b505f190190565b80516001600160701b0381168114611ce7575f80fd5b5f805f606084860312156129a6575f80fd5b6129af8461297e565b92506129bd6020850161297e565b9150604084015163ffffffff8116811461243a575f80fdfea26469706673582212201fb24cc93575509844f823131c8f74102298df934ab2d634cf1328f074816a1464736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac000000000000000000000000e1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "nonce": "0xe9", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x20ac8", + "value": "0x0", + "input": "0x5a440923000000000000000000000000b5e3dbaf69a46b71fe9c055e6fa36992ae6b2c1a", + "nonce": "0xea", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000005fa95212825a474e2c75676e8d833330f261caed", + "nonce": "0xeb", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000a6b5f74ddcc75b4b561d84b19ad7fd51f0405483", + "nonce": "0xec", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000002267ae86066097ef49884aac96c63f70fe818eb3", + "nonce": "0xed", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000003e610f32806e09c2ba65b8c88a6e4f777c8cb559", + "nonce": "0xee", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a44092300000000000000000000000067bf6de7f8d4d13fba410cbe05219cb26242a7c9", + "nonce": "0xef", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000f1e7167a0b085b52a8ad02a5cc48ed2027b8b577", + "nonce": "0xf0", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000fcdac6196c22908dda4ce84fb595b1c7986346bf", + "nonce": "0xf1", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a44092300000000000000000000000087d252a68a0ac2428c6e849f4ec0b30dd3dca62b", + "nonce": "0xf2", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000febad8c0ea06e816ff21d1c772c46e02f10f2a23", + "nonce": "0xf3", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000f83a152c0a526a45e93d91c95894a19a1258e30e", + "nonce": "0xf4", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1ae75", + "value": "0x0", + "input": "0x5a4409230000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00", + "nonce": "0xf5", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x2c9f1", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000001e8480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf6", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000007a1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf7", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x26852", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000001d4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000493e00000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf8", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee803000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf9", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee803000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000007530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfa", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfb", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfc", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x11d4b", + "value": "0x0", + "input": "0xf2fde38b000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b", + "nonce": "0xfd", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1725380449, + "chain": 808813, + "commit": "1ecbbf8" +} \ No newline at end of file diff --git a/broadcast/deploy-core.s.sol/808813/run-1725380637.json b/broadcast/deploy-core.s.sol/808813/run-1725380637.json new file mode 100644 index 00000000..f86b89fc --- /dev/null +++ b/broadcast/deploy-core.s.sol/808813/run-1725380637.json @@ -0,0 +1,1806 @@ +{ + "transactions": [ + { + "hash": "0x2c9fff3b9d207441ece2925abc6b72468d6b91a0659644e20f4afc6fa39bfa7e", + "transactionType": "CREATE", + "contractName": "LBFactory", + "contractAddress": "0x869f0297749084e0256cc761867fe7ce456640fc", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x4a20d6", + "value": "0x0", + "input": "0x608060405234801562000010575f80fd5b506200001b62000021565b620000d5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d25780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61424280620000e35f395ff3fe608060405234801562000010575f80fd5b5060043610620002a0575f3560e01c8063701ab8c11162000167578063aabc4b3c11620000cf578063e203a31f116200008f578063e203a31f146200065d578063e30c39781462000674578063e74b981b146200067e578063e92d0d5d1462000695578063f2fde38b14620006ac578063fd90c2be14620006c3575f80fd5b8063aabc4b3c146200059c578063be20309414620005f1578063c1b931be1462000608578063d547741f146200062f578063ddbfd9411462000646575f80fd5b806380c5061e116200012757806380c5061e14620005485780638ce9aa1c14620005525780638da5cb5b146200056157806391d14854146200056b578063a0a0ea391462000582578063a217fddf1462000594575f80fd5b8063701ab8c114620004ef578063704037bd14620004f7578063715018a6146200051d57806379ba509714620005275780637daf5d661462000531575f80fd5b80633a2f1a91116200020b5780635a44092311620001cb5780635a44092314620004525780635b35875c1462000469578063659ac74b1462000473578063661d7ffb146200048a5780636622e0d714620004b257806369d56ea314620004d8575f80fd5b80633a2f1a9114620003f35780633c78a941146200040a5780634ccb20c014620004215780634cd161d314620004325780634e937c3a1462000449575f80fd5b8063248a9ca31162000263578063248a9ca314620003695780632772184214620003805780632cc06b8c14620003975780632f2ff15d14620003ae57806336568abe14620003c5578063379ee80314620003dc575f80fd5b806301ffc9a714620002a45780630282c9c114620002d05780630752092b14620002e9578063093ff76914620003195780631af5bacc1462000332575b5f80fd5b620002bb620002b536600462002b4e565b620006cc565b60405190151581526020015b60405180910390f35b620002da62000703565b604051620002c7919062002b77565b62000300620002fa36600462002bbc565b620007f0565b6040516001600160a01b039091168152602001620002c7565b620003306200032a36600462002c0e565b620007fe565b005b6200035a7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001620002c7565b6200035a6200037a36600462002bbc565b620008f4565b620002bb6200039136600462002cdb565b62000915565b62000330620003a836600462002cf9565b62000923565b62000330620003bf36600462002d44565b62000975565b62000330620003d636600462002d44565b62000997565b62000330620003ed36600462002d85565b620009d2565b620003306200040436600462002e3a565b62000af7565b620003306200041b36600462002cdb565b62000bae565b5f546001600160a01b031662000300565b620003306200044336600462002eee565b62000c0b565b6003546200035a565b620003306200046336600462002cdb565b62000ce1565b620002da62000d58565b620003006200048436600462002f24565b62000d6b565b6200035a7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d81565b620004c9620004c336600462002f82565b62001322565b604051620002c7919062002fb3565b62000330620004e936600462003026565b620014c6565b60016200035a565b6200050e6200050836600462003079565b6200163f565b604051620002c79190620030bc565b6200033062001679565b6200033062001690565b620003006200054236600462002bbc565b620016de565b6200035a6200170f565b67016345785d8a00006200035a565b620003006200171c565b620002bb6200057c36600462002d44565b62001750565b6002546001600160a01b031662000300565b6200035a5f81565b620005b3620005ad36600462002bbc565b620017b5565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001620002c7565b6200033062000602366004620030f9565b62001888565b7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d6200035a565b620003306200064036600462002d44565b62001a41565b620003306200065736600462002cdb565b62001a63565b620003306200066e36600462003150565b62001ada565b6200030062001b4b565b620003306200068f36600462002cdb565b62001b74565b62000330620006a636600462002bbc565b62001b89565b62000330620006bd36600462002cdb565b62001c3a565b6001546200035a565b5f6001600160e01b03198216637965db0b60e01b1480620006fd57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f62000712600562001cc3565b90508015620007ec578067ffffffffffffffff8111156200073757620007376200316c565b60405190808252806020026020018201604052801562000761578160200160208202803683370190505b5091505f805b82811015620007dc575f806200077f60058462001ccf565b90925090506200078f8162001cec565b15620007c65781868581518110620007ab57620007ab62003180565b602090810291909101015283620007c281620031a8565b9450505b505080620007d490620031a8565b905062000767565b5081811015620007ea578083525b505b5090565b5f620006fd60088362001cf8565b6200080862001d05565b5f6200081a8b8b8b61ffff1662001d3b565b6020015190506001600160a01b03811662000859578a8a8a60405163b65ee95360e01b81526004016200085093929190620031c3565b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e4015f604051808303815f87803b158015620008d0575f80fd5b505af1158015620008e3573d5f803e3d5ffd5b505050505050505050505050505050565b5f9081525f80516020620041ed833981519152602052604090206001015490565b5f620006fd60088362001de5565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96200094f8162001e07565b604080515f808252602082019092526200096f9186918691869162001e13565b50505050565b6200098082620008f4565b6200098b8162001e07565b6200096f838362001f49565b6001600160a01b0381163314620009c15760405163334bd91960e11b815260040160405180910390fd5b620009cd828262001f75565b505050565b620009dc62001d05565b60018961ffff16101562000a0a57604051634f958e7160e01b815261ffff8a16600482015260240162000850565b5f62000a1d818a8a8a8a8a8a8a62001ffd565b9050811562000a385762000a3581600160ff620020f2565b90505b62000a4a600561ffff8c16836200211a565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd905f90a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000b238162001e07565b6001600160a01b038416158062000b425750836001600160a01b031916155b1562000b615760405163d43a15d160e01b815260040160405180910390fd5b62000ba58787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525062001e1392505050565b50505050505050565b62000bb862001d05565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000bf1575f80fd5b505af115801562000c04573d5f803e3d5ffd5b5050505050565b62000c1562001d05565b62000c26600561ffff841662002128565b62000c4b57604051637d9160bf60e11b815261ffff8316600482015260240162000850565b5f62000c5d600561ffff851662002135565b905081151560ff82901c15150362000c88576040516311be38db60e11b815260040160405180910390fd5b62000ca961ffff841662000c9f838560ff620020f2565b600591906200211a565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd905f90a3505050565b62000ceb62001d05565b62000cf860088262002142565b62000d22576040516303ce0ad960e01b81526001600160a01b038216600482015260240162000850565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e905f90a250565b606062000d66600562002158565b905090565b5f62000d7d600561ffff841662002128565b62000da257604051637d9160bf60e11b815261ffff8316600482015260240162000850565b5f62000db4600561ffff851662002135565b90505f62000dc16200171c565b6001600160a01b0316336001600160a01b031614905062000de28262001cec565b15801562000dee575080155b1562000e1a576040516304fc2fe760e11b815233600482015261ffff8516602482015260440162000850565b62000e2760088762001de5565b62000e5157604051638e888ef360e01b81526001600160a01b038716600482015260240162000850565b856001600160a01b0316876001600160a01b03160362000e9057604051632f9b185360e01b81526001600160a01b038816600482015260240162000850565b62000e9c858562002166565b505f8062000eab89896200219e565b90925090506001600160a01b03821662000ed857604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b038281165f9081526004602090815260408083208585168452825280832061ffff8b168452909152902054620100009004161562000f385788888760405163cb27a43560e01b81526004016200085093929190620031c3565b5f62000f4485620021c7565b62000f4f86620021d3565b62000f5a87620021e3565b62000f6588620021f3565b62000f708962002203565b62000f7b8a62002214565b62000f868b62002224565b60405161ffff978816602482015295871660448701529386166064860152918516608485015262ffffff90811660a4850152931660c4830152821660e48201529089166101048201526101240160408051601f19818403018152918152602080830180516001600160e01b03166347973bff60e01b1790529051606086811b6bffffffffffffffffffffffff199081169383019390935285901b909116603482015260f089901b6001600160f01b03191660488201529091505f90604a016040516020818303038152906040528051906020012090505f604051806020016200106f9062002b40565b601f1982820381018352601f909101166040819052600254620010a9916001600160a01b03909116908f908f908e9089906020016200323b565b60408051601f1981840301815290829052620010c9929160200162003285565b6040516020818303038152906040529050620010e75f838362002235565b975050505060405180608001604052808761ffff168152602001866001600160a01b0316815260200184151581526020015f151581525060045f846001600160a01b03166001600160a01b031681526020019081526020015f205f836001600160a01b03166001600160a01b031681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600385908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550620012a48661ffff16600a5f856001600160a01b03166001600160a01b031681526020019081526020015f205f846001600160a01b03166001600160a01b031681526020019081526020015f20620022b790919063ffffffff16565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff886001600380549050620012f49190620032b7565b604080516001600160a01b03909316835260208301919091520160405180910390a450505050949350505050565b60605f806200133285856200219e565b6001600160a01b038083165f908152600a6020908152604080832093851683529290529081209294509092506200136982620022c4565b90508015620014bc578067ffffffffffffffff8111156200138e576200138e6200316c565b604051908082528060200260200182016040528015620013e057816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f19909201910181620013ad5790505b506001600160a01b038086165f90815260046020908152604080832093881683529290529081209196505b82811015620014b9575f6200142b62001425868462001cf8565b620022ce565b6040805160808101825261ffff83168082525f8181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b900490911615156060820152895191925090899084908110620014a457620014a462003180565b6020908102919091010152506001016200140b565b50505b5050505092915050565b620014d062001d05565b5f80620014de86866200219e565b6001600160a01b038083165f9081526004602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b9092049091161515606083015292945090925090620015835786868660405163102a919160e21b81526004016200085093929190620031c3565b8315158160600151151503620015ab57604051626ee66560e11b815260040160405180910390fd5b6001600160a01b038084165f9081526004602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f906200162e90871515815260200190565b60405180910390a250505050505050565b604080516080810182525f8082526020820181905291810182905260608101919091526200166f84848462001d3b565b90505b9392505050565b6200168362001d05565b6200168e5f620022f9565b565b33806200169c62001b4b565b6001600160a01b031614620016d05760405163118cdaa760e01b81526001600160a01b038216600482015260240162000850565b620016db81620022f9565b50565b5f60038281548110620016f557620016f562003180565b5f918252602090912001546001600160a01b031692915050565b5f62000d666008620022c4565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f826200177d57620017616200171c565b6001600160a01b0316826001600160a01b0316149050620006fd565b5f8381525f80516020620041ed833981519152602090815260408083206001600160a01b038616845290915290205460ff1662001672565b5f80808080808080620017ca60058a62002128565b620017ec57604051637d9160bf60e11b8152600481018a905260240162000850565b5f620017fa60058b62002135565b90506200180781620021c7565b61ffff1698506200181881620021d3565b61ffff1697506200182981620021e3565b61ffff1696506200183a81620021f3565b61ffff1695506200184b8162002203565b62ffffff1694506200185d8162002214565b61ffff1693506200186e8162002224565b62ffffff16925060ff81901c915050919395975091939597565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015620018ce5750825b90505f8267ffffffffffffffff166001148015620018eb5750303b155b905081158015620018fa575080155b15620019195760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200194457845460ff60401b1916600160401b1785555b6200194f8862002337565b67016345785d8a00008711156200198b57604051635e8988c160e01b81526004810188905267016345785d8a0000602482015260440162000850565b62001996896200234c565b6001879055600280546001600160a01b0319166001600160a01b038816179055604080515f8152602081018990527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a1831562001a3657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b62001a4c82620008f4565b62001a578162001e07565b6200096f838362001f75565b62001a6d62001d05565b62001a7a6008826200240b565b62001aa457604051638e888ef360e01b81526001600160a01b038216600482015260240162000850565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb3905f90a250565b62001ae462001d05565b62001af5600561ffff831662002421565b62001b1a57604051637d9160bf60e11b815261ffff8216600482015260240162000850565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be13905f90a250565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0062001740565b62001b7e62001d05565b620016db816200234c565b62001b9362001d05565b60015481810362001bbb57604051631baa31e960e21b81526004810183905260240162000850565b67016345785d8a000082111562001bf757604051635e8988c160e01b81526004810183905267016345785d8a0000602482015260440162000850565b600182905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e5091015b60405180910390a15050565b62001c4462001d05565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825562001c8a6200171c565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f620006fd826200242e565b5f80808062001cdf86866200243a565b9097909650945050505050565b5f60ff82901c620006fd565b5f62001672838362002465565b3362001d106200171c565b6001600160a01b0316146200168e5760405163118cdaa760e01b815233600482015260240162000850565b604080516080810182525f80825260208201819052918101829052606081019190915262001d6a84846200219e565b6001600160a01b039182165f90815260046020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b0381165f908152600183016020526040812054151562001672565b620016db81336200248e565b5f62001e2586868661ffff1662001d3b565b6020015190506001600160a01b03811662001e5b5785858560405163b65ee95360e01b81526004016200085093929190620031c3565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e99573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001ebf9190620032cd565b0362001ee25760405163b70cd0db60e01b81526004810184905260240162000850565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d9062001f129086908690600401620032e5565b5f604051808303815f87803b15801562001f2a575f80fd5b505af115801562001f3d573d5f803e3d5ffd5b50505050505050505050565b5f8262001f6957604051633e3253cf60e11b815260040160405180910390fd5b620016728383620024cb565b5f5f80516020620041ed83398151915262001f91848462001750565b1562001ff3575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620006fd565b5f915050620006fd565b5f8561ffff168761ffff1611806200201a5750610fff8661ffff16115b806200202b57506127108561ffff16115b806200203c57506109c48361ffff16115b806200204f5750620fffff8262ffffff16115b156200206e57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b613fff604e1b1691909117605c9190911b620fffff605c1b16176dffffffffffffffffffffffffffff19919091161790565b5f6200166f848462002105575f62002108565b60015b600180861b19929092169116841b1790565b5f6200166f84848462002569565b5f62001672838362002587565b5f62001672838362002594565b5f62001672836001600160a01b038416620025df565b60605f62001672836200262e565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016200219582826200263b565b95945050505050565b5f80826001600160a01b0316846001600160a01b03161115620021bf579192915b509192909150565b5f61ffff8216620006fd565b5f620006fd8260101c610fff1690565b5f620006fd82601c1c610fff1690565b5f620006fd8260281c613fff1690565b5f620006fd8260361c62ffffff1690565b5f620006fd82604e1c613fff1690565b5f620006fd82605c1c620fffff1690565b5f83471015620022625760405163392efb2b60e21b81524760048201526024810185905260440162000850565b81515f036200228457604051631328927760e21b815260040160405180910390fd5b8282516020840186f590506001600160a01b0381166200167257604051633a0ba96160e11b815260040160405180910390fd5b5f620016728383620025df565b5f620006fd825490565b8061ffff81168114620022f4576040516364ae406d60e01b815260040160405180910390fd5b919050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556200233382620028bb565b5050565b620023416200292b565b620016db8162002975565b6001600160a01b0381166200237457604051632573cfb960e21b815260040160405180910390fd5b5f546001600160a01b039081169082168103620023b3575f54604051634fcea97160e01b81526001600160a01b03909116600482015260240162000850565b5f80546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910162001c2e565b5f62001672836001600160a01b038416620029aa565b5f62001672838362002a94565b5f620006fd82620022c4565b5f808062002449858562001cf8565b5f81815260029690960160205260409095205494959350505050565b5f825f0182815481106200247d576200247d62003180565b905f5260205f200154905092915050565b6200249a828262001750565b620023335760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440162000850565b5f5f80516020620041ed833981519152620024e7848462001750565b62001ff3575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556200251e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620006fd565b5f82815260028401602052604081208290556200166f8484620022b7565b5f62001672838362002ab2565b5f81815260028301602052604081205480158015620025bc5750620025ba848462002587565b155b15620016725760405163015ab34360e11b81526004810184905260240162000850565b5f8181526001830160205260408120546200262657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155620006fd565b505f620006fd565b6060620006fd8262002aca565b5f805f835f03620026565750600160801b9150620006fd9050565b50825f81121562002667579015905f035b621000008110156200287557600160801b9250846fffffffffffffffffffffffffffffffff8111156200269b579115915f19045b6001821615620026ad5792830260801c925b800260801c6002821615620026c45792830260801c925b800260801c6004821615620026db5792830260801c925b800260801c6008821615620026f25792830260801c925b800260801c6010821615620027095792830260801c925b800260801c6020821615620027205792830260801c925b800260801c6040821615620027375792830260801c925b8002608090811c908216156200274f5792830260801c925b800260801c610100821615620027675792830260801c925b800260801c6102008216156200277f5792830260801c925b800260801c610400821615620027975792830260801c925b800260801c610800821615620027af5792830260801c925b800260801c611000821615620027c75792830260801c925b800260801c612000821615620027df5792830260801c925b800260801c614000821615620027f75792830260801c925b800260801c6180008216156200280f5792830260801c925b800260801c62010000821615620028285792830260801c925b800260801c62020000821615620028415792830260801c925b800260801c620400008216156200285a5792830260801c925b800260801c62080000821615620028735792830260801c925b505b825f03620028a157604051631dba598d60e11b8152600481018690526024810185905260440162000850565b81620028ae578262002195565b62002195835f19620032ff565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166200168e57604051631afcd79f60e31b815260040160405180910390fd5b6200297f6200292b565b6001600160a01b038116620016d057604051631e4fbdf760e01b81525f600482015260240162000850565b5f818152600183016020526040812054801562001ff3575f620029cf600183620032b7565b85549091505f90620029e490600190620032b7565b905080821462002a4a575f865f01828154811062002a065762002a0662003180565b905f5260205f200154905080875f01848154811062002a295762002a2962003180565b5f918252602080832090910192909255918252600188019052604090208390555b855486908062002a5e5762002a5e6200331f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050620006fd565b5f818152600283016020526040812081905562001672838362002ad8565b5f818152600183016020526040812054151562001672565b60605f620016728362002ae5565b5f620016728383620029aa565b6060815f0180548060200260200160405190810160405280929190818152602001828054801562002b3457602002820191905f5260205f20905b81548152602001906001019080831162002b1f575b50505050509050919050565b610eb9806200333483390190565b5f6020828403121562002b5f575f80fd5b81356001600160e01b03198116811462001672575f80fd5b602080825282518282018190525f9190848201906040850190845b8181101562002bb05783518352928401929184019160010162002b92565b50909695505050505050565b5f6020828403121562002bcd575f80fd5b5035919050565b6001600160a01b0381168114620016db575f80fd5b803561ffff81168114620022f4575f80fd5b803562ffffff81168114620022f4575f80fd5b5f805f805f805f805f806101408b8d03121562002c29575f80fd5b8a3562002c368162002bd4565b995060208b013562002c488162002bd4565b985062002c5860408c0162002be9565b975062002c6860608c0162002be9565b965062002c7860808c0162002be9565b955062002c8860a08c0162002be9565b945062002c9860c08c0162002be9565b935062002ca860e08c0162002bfb565b925062002cb96101008c0162002be9565b915062002cca6101208c0162002bfb565b90509295989b9194979a5092959850565b5f6020828403121562002cec575f80fd5b8135620016728162002bd4565b5f805f6060848603121562002d0c575f80fd5b833562002d198162002bd4565b9250602084013562002d2b8162002bd4565b915062002d3b6040850162002be9565b90509250925092565b5f806040838503121562002d56575f80fd5b82359150602083013562002d6a8162002bd4565b809150509250929050565b80358015158114620022f4575f80fd5b5f805f805f805f805f6101208a8c03121562002d9f575f80fd5b62002daa8a62002be9565b985062002dba60208b0162002be9565b975062002dca60408b0162002be9565b965062002dda60608b0162002be9565b955062002dea60808b0162002be9565b945062002dfa60a08b0162002bfb565b935062002e0a60c08b0162002be9565b925062002e1a60e08b0162002bfb565b915062002e2b6101008b0162002d75565b90509295985092959850929598565b5f805f805f8060a0878903121562002e50575f80fd5b863562002e5d8162002bd4565b9550602087013562002e6f8162002bd4565b945062002e7f6040880162002be9565b935060608701359250608087013567ffffffffffffffff8082111562002ea3575f80fd5b818901915089601f83011262002eb7575f80fd5b81358181111562002ec6575f80fd5b8a602082850101111562002ed8575f80fd5b6020830194508093505050509295509295509295565b5f806040838503121562002f00575f80fd5b62002f0b8362002be9565b915062002f1b6020840162002d75565b90509250929050565b5f805f806080858703121562002f38575f80fd5b843562002f458162002bd4565b9350602085013562002f578162002bd4565b925062002f676040860162002bfb565b915062002f776060860162002be9565b905092959194509250565b5f806040838503121562002f94575f80fd5b823562002fa18162002bd4565b9150602083013562002d6a8162002bd4565b602080825282518282018190525f9190848201906040850190845b8181101562002bb05762003012838551805161ffff1682526020808201516001600160a01b0316908301526040808201511515908301526060908101511515910152565b928401926080929092019160010162002fce565b5f805f80608085870312156200303a575f80fd5b8435620030478162002bd4565b93506020850135620030598162002bd4565b9250620030696040860162002be9565b915062002f776060860162002d75565b5f805f606084860312156200308c575f80fd5b8335620030998162002bd4565b92506020840135620030ab8162002bd4565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101620006fd565b5f805f80608085870312156200310d575f80fd5b84356200311a8162002bd4565b935060208501356200312c8162002bd4565b9250604085013591506060850135620031458162002bd4565b939692955090935050565b5f6020828403121562003161575f80fd5b620016728262002be9565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201620031bc57620031bc62003194565b5060010190565b6001600160a01b03938416815291909216602082015261ffff909116604082015260600190565b5f5b8381101562003206578181015183820152602001620031ec565b50505f910152565b5f815180845262003227816020860160208601620031ea565b601f01601f19169290920160200192915050565b6001600160a01b03868116825285811660208301528416604082015261ffff8316606082015260a0608082018190525f906200327a908301846200320e565b979650505050505050565b5f835162003298818460208801620031ea565b835190830190620032ae818360208801620031ea565b01949350505050565b81810381811115620006fd57620006fd62003194565b5f60208284031215620032de575f80fd5b5051919050565b828152604060208201525f6200166f60408301846200320e565b5f826200331a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffdfe60a0604052604051610eb9380380610eb9833981016040819052610022916108f6565b60408051602081019091525f8152859061003c828261043a565b506001600160a01b0390811660805260408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290515f92839290881691610087919061098c565b5f60405180830381855afa9150503d805f81146100bf576040519150601f19603f3d011682016040523d82523d5f602084013e6100c4565b606091505b50915091505f818060200190518101906100de91906109a7565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290519192505f9182916001600160a01b038a1691610124919061098c565b5f60405180830381855afa9150503d805f811461015c576040519150601f19603f3d011682016040523d82523d5f602084013e610161565b606091505b50915091505f8180602001905181019061017b91906109a7565b90508580156101875750825b6101ef5760405162461bcd60e51b815260206004820152602e60248201527f4c4250616972426561636f6e50726f78793a204661696c656420746f2067657460448201526d20746f6b656e2073796d626f6c7360901b60648201526084015b60405180910390fd5b6040805160208082019092525f90528451908501207fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4701480159061026757506040805160208082019092525f90528151908201207fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47014155b6102c45760405162461bcd60e51b815260206004820152602860248201527f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e6044820152672073796d626f6c7360c01b60648201526084016101e6565b7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec3180546001600160a01b0319166001600160a01b038c16179055887f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa5826480546001600160a01b0319166001600160a01b039290921691909117905561ffff881661036a7fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f5697384278290565b555f61037961ffff8a166104f7565b9050848282604051602001610390939291906109eb565b60408051808303601f190181529190527f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f906103cc9082610ad9565b508482826040516020016103e293929190610b94565b60408051808303601f190181529190527fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d849061041e9082610ad9565b506104298c8961043a565b505050505050505050505050610d08565b6104438261060f565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156104eb576104e6826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e09190610c16565b82610718565b505050565b6104f361078b565b5050565b60608161ffff165f036105215750506040805180820190915260018152600360fc1b602082015290565b815f5b61ffff82161561054e578061053881610c43565b91506105479050600a83610c77565b9150610524565b5f8161ffff166001600160401b0381111561056b5761056b61084f565b6040519080825280601f01601f191660200182016040528015610595576020820181803683370190505b5090505b61ffff851615610607576105ae600183610c97565b91506105bb600a86610cb9565b6105c6906030610cd9565b60f81b818361ffff16815181106105df576105df610cf4565b60200101906001600160f81b03191690815f1a905350610600600a86610c77565b9450610599565b949350505050565b806001600160a01b03163b5f0361064457604051631933b43b60e21b81526001600160a01b03821660048201526024016101e6565b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156106bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e19190610c16565b9050806001600160a01b03163b5f036104f357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016101e6565b60605f80846001600160a01b031684604051610734919061098c565b5f60405180830381855af49150503d805f811461076c576040519150601f19603f3d011682016040523d82523d5f602084013e610771565b606091505b5090925090506107828583836107ac565b95945050505050565b34156107aa5760405163b398979f60e01b815260040160405180910390fd5b565b6060826107c1576107bc8261080b565b610804565b81511580156107d857506001600160a01b0384163b155b1561080157604051639996b31560e01b81526001600160a01b03851660048201526024016101e6565b50805b9392505050565b80511561081b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461084a575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561087d578181015183820152602001610865565b50505f910152565b5f6001600160401b038084111561089e5761089e61084f565b604051601f8501601f19908116603f011681019082821181831017156108c6576108c661084f565b816040528093508581528686860111156108de575f80fd5b6108ec866020830187610863565b5050509392505050565b5f805f805f60a0868803121561090a575f80fd5b61091386610834565b945061092160208701610834565b935061092f60408701610834565b9250606086015161ffff81168114610945575f80fd5b60808701519092506001600160401b03811115610960575f80fd5b8601601f81018813610970575f80fd5b61097f88825160208401610885565b9150509295509295909350565b5f825161099d818460208701610863565b9190910192915050565b5f602082840312156109b7575f80fd5b81516001600160401b038111156109cc575f80fd5b8201601f810184136109dc575f80fd5b61060784825160208401610885565b634c42545f60e01b81525f8451610a09816004850160208901610863565b8083019050602f60f81b8060048301528551610a2c816005850160208a01610863565b60059201918201528351610a47816006840160208801610863565b0160060195945050505050565b600181811c90821680610a6857607f821691505b602082108103610a8657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104e6575f81815260208120601f850160051c81016020861015610ab25750805b601f850160051c820191505b81811015610ad157828155600101610abe565b505050505050565b81516001600160401b03811115610af257610af261084f565b610b0681610b008454610a54565b84610a8c565b602080601f831160018114610b39575f8415610b225750858301515b5f19600386901b1c1916600185901b178555610ad1565b5f85815260208120601f198616915b82811015610b6757888601518255948401946001909101908401610b48565b5085821015610b8457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4c697175696469747920426f6f6b20546f6b656e20000000000000000000000081525f8451610bcb816015850160208901610863565b8083019050602f60f81b8060158301528551610bee816016850160208a01610863565b60169201918201528351610c09816017840160208801610863565b0160170195945050505050565b5f60208284031215610c26575f80fd5b61080482610834565b634e487b7160e01b5f52601160045260245ffd5b5f61ffff808316818103610c5957610c59610c2f565b6001019392505050565b634e487b7160e01b5f52601260045260245ffd5b5f61ffff80841680610c8b57610c8b610c63565b92169190910492915050565b61ffff828116828216039080821115610cb257610cb2610c2f565b5092915050565b5f61ffff80841680610ccd57610ccd610c63565b92169190910692915050565b61ffff818116838216019080821115610cb257610cb2610c2f565b634e487b7160e01b5f52603260045260245ffd5b608051610194610d255f395f818160400152609501526101945ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061007b565b005b34801561003d575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b61008b610086610092565b610113565b565b905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061008d9190610131565b365f80375f80365f845af43d5f803e80801561012d573d5ff35b3d5ffd5b5f60208284031215610141575f80fd5b81516001600160a01b0381168114610157575f80fd5b939250505056fea264697066735822122046156875f2e2d59a9e34f834f7a857b16cb8cb63a72b2bce1fbc0af8dddbb6ef64736f6c6343000814003302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212205e723c1de9e189c2e59a601738614f6c62a10916bef2b73b70685fea797c5d1c64736f6c63430008140033", + "nonce": "0xe2", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": [ + "0x869f0297749084e0256cC761867FE7cE456640FC", + "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "0x" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xce718", + "value": "0x0", + "input": "0x60a060405260405162000e5038038062000e508339810160408190526200002691620003bc565b828162000034828262000099565b50508160405162000045906200035a565b6001600160a01b039091168152602001604051809103905ff0801580156200006f573d5f803e3d5ffd5b506001600160a01b0316608052620000906200008a60805190565b620000fe565b505050620004b3565b620000a4826200016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115620000f057620000eb8282620001ee565b505050565b620000fa62000267565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200013f5f8051602062000e30833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16200016c8162000289565b50565b806001600160a01b03163b5f03620001aa57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516200020c919062000496565b5f60405180830381855af49150503d805f811462000246576040519150601f19603f3d011682016040523d82523d5f602084013e6200024b565b606091505b5090925090506200025e858383620002ca565b95945050505050565b3415620002875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002b457604051633173bdd160e11b81525f6004820152602401620001a1565b805f8051602062000e30833981519152620001cd565b606082620002e357620002dd8262000330565b62000329565b8151158015620002fb57506001600160a01b0384163b155b156200032657604051639996b31560e01b81526001600160a01b0385166004820152602401620001a1565b50805b9392505050565b805115620003415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806200093483390190565b80516001600160a01b03811681146200037f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620003b45781810151838201526020016200039a565b50505f910152565b5f805f60608486031215620003cf575f80fd5b620003da8462000368565b9250620003ea6020850162000368565b60408501519092506001600160401b038082111562000407575f80fd5b818601915086601f8301126200041b575f80fd5b81518181111562000430576200043062000384565b604051601f8201601f19908116603f011681019083821181831017156200045b576200045b62000384565b8160405282815289602084870101111562000474575f80fd5b6200048783602083016020880162000398565b80955050505050509250925092565b5f8251620004a981846020870162000398565b9190910192915050565b608051610469620004cb5f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea2646970667358221220646db6b703a46dbf43b5303e88a0e75f2165f627cdec6f33f692542261be647a64736f6c63430008140033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000869f0297749084e0256cc761867fe7ce456640fc000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xe3", + "chainId": "0xc576d" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x70c8adc5f50a2d5f9e50f820b1529d196516489e", + "initCode": "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0x0346c55a4663f381e267a6dd0272ea2fa53d994365c62088f5967672af707677", + "transactionType": "CREATE", + "contractName": "LBPair", + "contractAddress": "0x68d00ff88f3a5987584e313b42cb11cfeee4fb39", + "function": null, + "arguments": [ + "0x8C3cD9182dbef229a36351633f470ea904e105Ac" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x65710d", + "value": "0x0", + "input": "0x60a060405234801562000010575f80fd5b5060405162005c4c38038062005c4c833981016040819052620000339162000105565b6001600160a01b0381166080526200004a62000051565b5062000134565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a25760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001025780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f6020828403121562000116575f80fd5b81516001600160a01b03811681146200012d575f80fd5b9392505050565b608051615aea620001625f395f8181610442015281816112de0152818161202801526133b80152615aea5ff3fe608060405234801561000f575f80fd5b5060043610610212575f3560e01c80638940a16a1161011f578063d3b9fbe4116100a9578063e584b65411610079578063e584b654146105b7578063e77366f8146105ca578063e985e9c5146105dd578063ea3446bf14610600578063f5e2932914610613575f80fd5b8063d3b9fbe414610597578063d8dfcea01461059f578063da10610c146105a7578063dbe65edc146105af575f80fd5b8063a41a01fb116100ef578063a41a01fb146104ee578063abcd783014610515578063bd85b03914610552578063c7bd658614610571578063c9939f5e14610584575f80fd5b80638940a16a146104665780638d7024e5146104a357806395d89b41146104de578063a1af5b9a146104e6575f80fd5b806347973bff116101a05780635518289411610170578063551828941461038c5780636653851a146103d1578063781a8915146103e45780637ca0de30146103ee57806388cc58e414610440575f80fd5b806347973bff146103335780634c7cffbd146103465780634e1273f41461035957806353c059a014610379575f80fd5b80630abe9688116101e65780630abe96881461029957806317f11ecc146102ce57806317fad7fc146102e95780631b057f6d146102fe578063383d15c514610311575f80fd5b8062fdd58e1461021657806305e8746d1461023c57806306fdde031461025c5780630902f1ac14610271575b5f80fd5b6102296102243660046150c5565b610626565b6040519081526020015b60405180910390f35b61024461064e565b6040516001600160a01b039091168152602001610233565b61026461065c565b6040516102339190615111565b61027961070c565b604080516001600160801b03938416815292909116602083015201610233565b6102796102a7366004615155565b62ffffff165f908152600660205260409020546001600160801b0381169160809190911c90565b6102d6610745565b60405161ffff9091168152602001610233565b6102fc6102f73660046151ae565b61075b565b005b6102fc61030c366004615279565b6107a7565b61032461031f3660046152c0565b6108b5565b6040516102339392919061535c565b6102fc61034136600461538b565b610b15565b610229610354366004615155565b610c5b565b61036c61036736600461541d565b610c80565b6040516102339190615483565b6102296103873660046154a4565b610d54565b610394611042565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610233565b6102fc6103df3660046154d9565b6110e8565b6201000954610229565b6103f6611112565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610233565b7f0000000000000000000000000000000000000000000000000000000000000000610244565b61047961047436600461555a565b611176565b604080516001600160401b0394851681529284166020840152921691810191909152606001610233565b6104ab61126e565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610233565b6102646112ab565b6102296112d3565b6105016104fc36600461557e565b61146d565b60405162ffffff9091168152602001610233565b6105286105233660046155a6565b61147f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610233565b6102296105603660046155db565b5f9081526001602052604090205490565b6102fc61057f3660046155f2565b611610565b61036c6105923660046151ae565b611695565b6102fc61199e565b610279611a23565b610244611a3d565b610501611a46565b6102fc6105c536600461560b565b611a52565b6105286105d83660046155a6565b611a61565b6105f06105eb366004615627565b611b96565b6040519015158152602001610233565b6102fc61060e366004615643565b611ba1565b6105016106213660046155db565b611e2c565b6001600160a01b0382165f908152602081815260408083208484529091529020545b92915050565b5f610657611e4c565b905090565b60607fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845b805461068b9061568e565b80601f01602080910402602001604051908101604052809291908181526020018280546106b79061568e565b80156107025780601f106106d957610100808354040283529160200191610702565b820191905f5260205f20905b8154815290600101906020018083116106e557829003601f168201915b5050505050905090565b5f8061073c610728600554600454611e7e90919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b5f6106575f80516020615a958339815191525490565b610763611eb8565b62010009546107788133898989898989611f02565b610786878787878787611f78565b61078e611fc2565b61079e8133898989898989611fe8565b50505050505050565b6107af611eb8565b6107b761201d565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b0381161580159061087e5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087291906156c0565b6001600160a01b031614155b1561089c57604051631b5de6eb60e01b815260040160405180910390fd5b6108a7848484612066565b506108b0611fc2565b505050565b5f806060866108c38161208d565b6108cb611eb8565b5f8690036108ec5760405163296db0d960e01b815260040160405180910390fd5b620100095460408051606081019091525f9080896001600160401b03811115610917576109176156db565b604051908082528060200260200182016040528015610940578160200160208202803683370190505b508152602001896001600160401b0381111561095e5761095e6156db565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b508152602001896001600160401b038111156109a5576109a56156db565b6040519080825280602002602001820160405280156109ce578160200160208202803683370190505b5090526004549091506109f26109e2611e4c565b6109ea6120c9565b8391906120f0565b9650610a0283338d8d8d8c61212f565b610a0f8a8a898e86612168565b9550610a25610a1e8888611e7e565b829061228c565b600455604080830151835191519096506001600160a01b038d16915f9133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610a7291908b906156ef565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610abe9291906156ef565b60405180910390a38515610ae857610ae8610ad7611e4c565b610adf6120c9565b8891908b6122c6565b610af0611fc2565b610b0783338d8d8d610b028d8d611e7e565b612324565b505050509450945094915050565b610b1d61201d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b615750825b90505f826001600160401b03166001148015610b7c5750303b155b905081158015610b8a575080155b15610ba85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bd257845460ff60401b1916600160401b1785555b610bda612355565b610c06610bfa610bf58860035461236590919063ffffffff16565b612385565b8e8e8e8e8e8e8e6123af565b8315610c4c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f610648610c745f80516020615a958339815191525490565b62ffffff841690612529565b60608382610c8e828261255f565b856001600160401b03811115610ca657610ca66156db565b604051908082528060200260200182016040528015610ccf578160200160208202803683370190505b5092505f5b86811015610d4957610d24888883818110610cf157610cf1615713565b9050602002016020810190610d069190615727565b878784818110610d1857610d18615713565b90506020020135610626565b848281518110610d3657610d36615713565b6020908102919091010152600101610cd4565b505050949350505050565b5f610d5d611eb8565b62010009546004546005545f86610d8557610d80610d796120c9565b849061257f565b610d97565b610d97610d90611e4c565b84906125b3565b90505f819003610dba57604051637df801c760e01b815260040160405180910390fd5b86610dc885338984866125e1565b610dd2848361228c565b6003549094505f610dee5f80516020615a958339815191525490565b90505f610dfa83612634565b9050610e06834261263f565b92505b62ffffff81165f90815260066020526040902054610e288186156126b3565b610f4957610e3684836126e1565b93505f8080610e498488888b898e612766565b919450925090508215610f4557610e608984611e7e565b9850610e6c8d8361228c565b9c505f610e86610e7b89612984565b839061ffff16612993565b90508015610ea757610e988b8261228c565b9a50610ea48482611e7e565b93505b610ebb83610eb5878761228c565b90611e7e565b62ffffff87165f908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610f078e612a06565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b5f869003610f575750610fa0565b5f610f628684612a16565b905062ffffff81161580610f7a575062ffffff818116145b15610f9857604051631a6d7fb160e31b815260040160405180910390fd5b915050610e09565b5f899003610fc15760405163439df85d60e11b815260040160405180910390fd5b610fcb878a611e7e565b6004556005869055610fdf600a8483612a37565b9250610feb8382612365565b600355831561100c57611007610fff6120c9565b8a908c612b49565b61101f565b61101f611017611e4c565b8a908c612b88565b611027611fc2565b61103488338c878d612b98565b505050505050505092915050565b6003546078905f908190819081908161105a82612be4565b905061ffff8116156110df575f611072600a83612bf3565b9650905061107f81612c50565b965061108a81612c5b565b94508464ffffffffff165f0361109e575f95505b61ffff8616156110dd576110cf8661ffff168361ffff16816110c2576110c2615742565b600a916001910601612c7b565b90506110da81612c5b565b93505b505b50509091929394565b6110f0611eb8565b6110f861201d565b61110a600354888888888888886123af565b61079e611fc2565b5f805f805f805f80600354905061112881612c50565b975061113381612ca9565b965061113e81612cb8565b955061114981612cc7565b945061115481612cd6565b935061115f81612984565b925061116a81612ce6565b91505090919293949596565b5f805f8060035490505f61118982612be4565b905061ffff811615806111a25750428664ffffffffff16115b156111b7575f805f9450945094505050611267565b5f6111c4600a8389612cf6565b91985096509450905064ffffffffff8088169082161015611263576111fa6111eb84612634565b849064ffffffffff8a16612e13565b92505f611207828961576a565b90508064ffffffffff1661121a85612634565b62ffffff166112299190615788565b61123390886157b3565b96508064ffffffffff1661124685612a06565b62ffffff166112559190615788565b61125f90876157b3565b9550505b5050505b9193909250565b5f805f805f600354905061128181612a06565b945061128c81612e2a565b935061129781612e3a565b92506112a281612e4a565b91505090919293565b60607f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f610680565b5f6112dc611eb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135c91906156c0565b6001600160a01b0316336001600160a01b03161461138d57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c5f6113e4826113ae575f6113b1565b60015b60ff165f856001600160801b0316116113ca575f6113cd565b60015b60ff169060801b6001600160801b03919091161790565b90506113f08482611e7e565b9450841561145e57600581905560045461140a9086611e7e565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261145e61144d611e4c565b6114556120c9565b879190336122c6565b5050505061146a611fc2565b90565b5f6114788383612a16565b9392505050565b6003545f90839082908161149e5f80516020615a958339815191525490565b90505f6114aa83612634565b90506114b6834261263f565b92505b62ffffff81165f908152600660205260408120546114d8908915612e5c565b90506001600160801b038116156115b9575f6114f962ffffff841685612529565b90505f876001600160801b0316836001600160801b03161161151b578261151d565b875b905061152986856126e1565b95505f8a61154b576115466001600160801b038316846080612e7b565b611560565b6115606001600160801b038316608085612eb0565b90505f61156d8888612ee5565b90505f6115836001600160801b03841683612f03565b905061158f81846157d3565b611599908d6157d3565b9b506115a5848c6157f3565b9a506115b1818b6157d3565b995050505050505b856001600160801b03165f036115cf5750611606565b5f6115da8984612a16565b905062ffffff811615806115f2575062ffffff818116145b156115fe575050611606565b9150506114b9565b5050509250925092565b611618611eb8565b6003545f61162582612be4565b90508061ffff165f036116435750600161163f8282612f4a565b6003555b61164f600a8285612f66565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a25050611692611fc2565b50565b606086336116a3828261304a565b6116d85760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b6116e0611eb8565b8515806116ed5750858414155b1561170b57604051633ab7870760e01b815260040160405180910390fd5b620100095461172081338c8c8c8c8c8c613094565b89876001600160401b03811115611739576117396156db565b604051908082528060200260200182016040528015611762578160200160208202803683370190505b5094505f805b898110156118ae575f6117928c8c8481811061178657611786615713565b905060200201356130c9565b90505f8a8a848181106117a7576117a7615713565b905060200201359050805f036117d757604051636996a92560e01b815262ffffff831660048201526024016116cf565b62ffffff82165f818152600660209081526040808320546001909252909120549091611805908890856130f4565b5f611811838584613173565b90505f81900361183b5760405163fd44792960e01b815262ffffff861660048201526024016116cf565b6118458382611e7e565b925083820361185b576118596007866131ea565b505b62ffffff85165f9081526006602052604090208390558b5181908d908890811061188757611887615713565b602090810291909101015261189c878261228c565b96508560010195505050505050611768565b506004546118bc9082611e7e565b6004556040515f906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611904908f908f908f908f90615843565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a60405161195393929190615869565b60405180910390a3611977611966611e4c565b61196e6120c9565b8391908e6122c6565b61197f611fc2565b61198f8333848e8e8e8e8e613288565b50505050509695505050505050565b6119a6611eb8565b6119ae61201d565b6003546119c26119bd82612385565b6132bd565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc6119f083612e3a565b6119f984612e2a565b6040805162ffffff93841681529290911660208301520160405180910390a250611a21611fc2565b565b6005545f9081906001600160801b0381169060801c61073c565b5f6106576120c9565b5f610657600354612634565b611a5d3383836132f0565b5050565b5f808080611a786001600160801b038716866133a4565b6003549091505f611a945f80516020615a958339815191525490565b90505f611aa083612634565b9050611aac834261263f565b92505b62ffffff81165f90815260066020526040902054611ace818a156126b3565b611b3a57611adc84836126e1565b93505f8080611aef8488888f898d612766565b919450925090508215611b3657611b068884611e7e565b9750611b13828d15612e5c565b611b1d908b6157d3565b9950611b29818d612e5c565b611b33908a6157d3565b98505b5050505b5f859003611b485750611b7f565b5f611b538a84612a16565b905062ffffff81161580611b6b575062ffffff818116145b15611b77575050611b7f565b915050611aaf565b611b898489612e5c565b9650505050509250925092565b5f611478838361304a565b611ba9611eb8565b5f839003611bca5760405163727ab02160e11b815260040160405180910390fd5b62010009546004545f611bdc866133b4565b9050611bea833389896134b9565b611c06611bf5611e4c565b611bfd6120c9565b8891908a6122c6565b5f806001600160a01b038916631faa6b8760e01b33611c23611e4c565b611c2b6120c9565b8c888d8d604051602401611c4597969594939291906158b6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c8391906158f8565b5f604051808303815f865af19150503d805f8114611cbc576040519150601f19603f3d011682016040523d82523d5f602084013e611cc1565b606091505b5091509150811580611cd557508051602014155b80611d1357507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611d109190615913565b14155b15611d3157604051634a57011360e01b815260040160405180910390fd5b5f611d4d611d3d611e4c565b611d456120c9565b5f91906120f0565b9050611d63611d5c868661228c565b82906134fd565b15611d8157604051630e3c717160e11b815260040160405180910390fd5b5f611d8c8287611e7e565b6004839055600554909150611da1908261228c565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611ddf90612634565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611e12611fc2565b611e1f87338d8885613540565b5050505050505050505050565b5f610648611e455f80516020615a958339815191525490565b839061358b565b5f7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315b546001600160a01b0316919050565b80820382811180611e9a57506001600160801b03808416908216115b156106485760405163e599af5560e01b815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611efc57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600160a81b881615611f6e57611f6e886379c8ccf760e01b89898989898989604051602401611f37979695949392919061592a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526135cf565b5050505050505050565b8533611f84828261304a565b611fb45760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044016116cf565b611f6e88888888888861362d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600160a91b881615611f6e57611f6e886367ddb27860e01b89898989898989604051602401611f37979695949392919061592a565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a2157604051632486085360e01b815260040160405180910390fd5b82156108b0576108b083634e430b5a60e01b858585604051602401611f379392919061597f565b6001600160a01b03811615806120ab57506001600160a01b03811630145b15611692576040516345c210e760e11b815260040160405180910390fd5b5f7f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264611e6f565b5f61212784610eb56121018561378b565b61210a8761378b565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b600160a41b8616156121605761216086630d4abdb360e01b8787878787604051602401611f37959493929190615998565b505050505050565b5f8061217f5f80516020615a958339815191525490565b6003549091505f61218f82612634565b90508693505f5b8881101561227f575f806121cb8a8d8d868181106121b6576121b6615713565b905060200201356137f790919063ffffffff16565b915091505f805f6121df898886888c61383d565b919450925090506121f08a83611e7e565b99508362ffffff168b5f0151878151811061220d5761220d615713565b602002602001018181525050808b60200151878151811061223057612230615713565b602002602001018181525050828b60400151878151811061225357612253615713565b60200260200101818152505061226f8c8562ffffff1685613a42565b8560010195505050505050612196565b5050505095945050505050565b818101828110806122a857506001600160801b03808416908216105b15610648576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156122f8576122f86001600160a01b038616846001600160801b038516613a8d565b6001600160801b03811615612160576121606001600160a01b038516846001600160801b038416613a8d565b600160a51b8616156121605761216086637a51a4c660e01b8787878787604051602401611f37959493929190615998565b61235d613ade565b611a21613b27565b5f6001600160e81b0383166001600160e81b031960e884901b1617611478565b5f8061239083612634565b905062ffffff60981b19831662ffffff60981b609883901b1617611478565b61ffff87161580156123c3575061ffff8616155b80156123d1575061ffff8516155b80156123df575061ffff8416155b80156123ee575062ffffff8316155b80156123fc575061ffff8216155b801561240b575062ffffff8116155b15612429576040516331375e0360e11b815260040160405180910390fd5b6124398888888888888888613b2f565b97505f6124515f80516020615a958339815191525490565b90505f61245e8a84613c38565b90505f61246b8284613c7f565b6124758385613cbd565b61247f91906159d6565b905067016345785d8a00008111156124aa576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016125568282613ce0565b95945050505050565b808214611a5d576040516340311ffd60e11b815260040160405180910390fd5b5f8061258b8460801c90565b90506121278161259a8561378b565b6125a491906157f3565b6001600160801b031660801b90565b5f6001600160801b038316612127816125cb8561378b565b6125d591906157f3565b6001600160801b031690565b600160a01b85161561262d576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261262d90869063feee373560e01b9060a401611f37565b5050505050565b5f60e882901c610648565b5f8061264a84612e4a565b61265b9064ffffffffff16846159e9565b905061266684612ca9565b61ffff1681106126a95761267984612385565b935061268484612cb8565b61ffff16811061269d57612698845f613f38565b6126a6565b6126a6846132bd565b93505b6121278484613f7f565b5f816126d2576126c38360801c90565b6001600160801b031615611478565b50506001600160801b03161590565b5f806126ec84612e3a565b62ffffff1690505f80828562ffffff161161270e578462ffffff168303612717565b828562ffffff16035b9150612710820261272787612e2a565b62ffffff160190505f61273987612ce6565b62ffffff16905080821161274d578161274f565b805b915061275b8783613c38565b979650505050505050565b5f80808061277962ffffff871689612529565b90505f6127878b8915612e5c565b90505f886127b1576127ac6127a76001600160801b038416856080612e7b565b613fad565b6127c9565b6127c96127a76001600160801b038416608086612eb0565b90505f6127d68c8c612ee5565b90505f6127ec6001600160801b03841683612f03565b90506127f881846157d3565b92505f6128058a8d612e5c565b90505f80856001600160801b0316836001600160801b03161061282f5750849150829050856128a4565b6128426001600160801b03841686613fd7565b91505f61284f83856157f3565b6001600160801b031690508e6128735761286e6127a78260808c61400d565b612882565b6128826127a7828b6080614036565b9150876001600160801b0316826001600160801b031611156128a2578791505b505b8d6128de576128bc836001600160801b031660801b90565b6001600160801b0382166128d9846001600160801b031660801b90565b612906565b6001600160801b0383166128fb826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61161295861295285610eb5888f61228c90919063ffffffff16565b836140a1565b11156129775760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b5f61064882604e1c613fff1690565b5f816001600160801b03165f036129ab57505f610648565b6127106001600160801b0383168110156129d857604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b5f6106488260701c620fffff1690565b5f82612a2c57612a276007836140bc565b611478565b6114786007836141fc565b5f80612a4284612be4565b90508061ffff165f03612a585783915050611478565b5f612a638683612c7b565b90505f612a6f82614322565b90505f612a7b8361432d565b612a889060ff16836159fc565b90508064ffffffffff16612a9b4261433b565b64ffffffffff161115612b3d575f805f612ade8464ffffffffff164203612ac18c612634565b612aca8d612a06565b612ad48e8e614363565b8a93929190614392565b9250925092505f612aee87612c50565b905064ffffffffff861642036078811115612b1d575096879006600101964295505f612b1a8c8a612f4a565b9b505b612b2b82868686858c6143f7565b97505050505050612b3d888585614456565b50949695505050505050565b5f612b548460801c90565b90506001600160801b03811615612b8257612b826001600160a01b038416836001600160801b038416613a8d565b50505050565b5f6001600160801b038416612b54565b600160a11b85161561262d576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261262d9086906353e8079b60e01b9060a401611f37565b5f6106488260d81c61ffff1690565b5f80612bff8484612c7b565b9150612c0a82612c50565b90508061ffff168361ffff1614612c4957612c2d612c288583612c7b565b612c50565b90508061ffff168361ffff1611612c445780612c46565b825b90505b9250929050565b5f61ffff8216610648565b5f612c658261432d565b60ff16612c7183614322565b61064891906159fc565b5f81612c8681614482565b8361ffff5f1985018116908110612c9f57612c9f615713565b0154949350505050565b5f6106488260101c610fff1690565b5f61064882601c1c610fff1690565b5f6106488260281c613fff1690565b5f6106488260361c62ffffff1690565b5f61064882605c1c620fffff1690565b5f805f805f80612d068989612bf3565b909250905064ffffffffff8716612d3d8a612d21848c615a1a565b61ffff1661ffff8110612d3657612d36615713565b0154612c5b565b64ffffffffff161115612d6357604051631c4e7f9560e21b815260040160405180910390fd5b612d6c82612c5b565b95508664ffffffffff168664ffffffffff1611612dae5785612d8d836144a6565b612d96846144ba565b612d9f856144ce565b95509550955095505050612e0a565b8695505f80612dbf8b8b8b866144e2565b915091505f89612dce83612c5b565b612dd8919061576a565b90505f612de484612c5b565b612dee908c61576a565b9050612dfc8484848461462e565b919a50985096505050505050505b93509350935093565b5f612e1e848361263f565b935061212784846126e1565b5f6106488260841c620fffff1690565b5f6106488260981c62ffffff1690565b5f6106488260b01c64ffffffffff1690565b5f81612e6c57612a278360801c90565b6001600160801b038316611478565b5f612e87848484614036565b9050600160ff83161b80612e9d57612e9d615742565b83850915611478576121276001826159d6565b5f612ebc84848461400d565b90508180612ecc57612ecc615742565b600160ff85161b850915611478576121276001826159d6565b5f611478612ef38484613c7f565b612efd8585613cbd565b01613fad565b5f81612f0e81614782565b6001600160801b03808416670de0b6b3a76400008190039182915f199188160282010181612f3e57612f3e615742565b049250505b5092915050565b5f61ffff60d81b19831661ffff60d81b60d884901b1617611478565b5f612f718484612c7b565b90505f612f7d82612c50565b90508261ffff168161ffff1610612fa757604051632c57574160e21b815260040160405180910390fd5b5f8461ffff168261ffff1614612fd65761ffff821615612fd057612fcb8683612c7b565b612fd8565b5f612fd8565b825b90505f612fe482612c50565b61ffff169050808661ffff1611612ffb5780613001565b8561ffff165b905061ffff83165b8561ffff168110156130335781888261ffff811061302957613029615713565b0155600101613009565b5061079e878761ffff868116881890891617614456565b5f816001600160a01b0316836001600160a01b031614806114785750506001600160a01b039182165f90815260026020908152604080832093909416825291909152205460ff1690565b600160a61b881615611f6e57611f6e8863ea9db9d360e01b89898989898989604051602401611f37979695949392919061592a565b8062ffffff811681146130ef57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b0383165f9081526020818152604080832085845291829052909120548281101561315057604051625b387760e31b81526001600160a01b038616600482015260248101859052604481018490526064016116cf565b5f9384526001602090815260408086208054869003905592905292209103905550565b5f6001600160801b038416608085901c828083156131a5576131a26127a7886001600160801b038716896147b4565b91505b6001600160801b038316156131ce576131cb6127a7886001600160801b038616896147b4565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c165f818152600284016020526040812054909190600160ff85161b19811680821461327d575f83815260028701602052604081208290558190036132715750600882901c5f818152600187810160205260408220805460ff87169290921b1990911690819055919082900361326f578654600160ff83161b191687555b505b60019350505050610648565b505f95945050505050565b600160a71b881615611f6e57611f6e8863fdc2725760e01b89898989898989604051602401611f37979695949392919061592a565b5f806132c883612a06565b62ffffff1690505f6132d984612cc7565b61ffff169050612710828202046125568582613f38565b826132fa8161208d565b826001600160a01b0316846001600160a01b0316036133375760405163782ee70760e01b81526001600160a01b03851660048201526024016116cf565b6001600160a01b038481165f81815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b5f81612e6c57612a278360801b90565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134369190615913565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061346f90670de0b6b3a7640000908616850283015b04613fad565b92506134a1670de0b6b3a764000082866001600160801b0316856001600160801b031602018161346957613469615742565b915050608081901b6001600160801b03831617612556565b600160a21b841615612b82576040516001600160a01b0380851660248301528316604482015260648101829052612b8290859063505d903360e01b90608401611f37565b5f6001600160801b0383811690608085811c9185169085901c8184108061275b5750806001600160801b0316836001600160801b03161094505050505092915050565b600160a31b85161561262d576040516001600160a01b03808616602483015284166044820152606481018390526084810182905261262d9086906360bed5f360e01b9060a401611f37565b5f61271061ffff60801b608084901b1604600160801b01816135ac826147d2565b6135b5866147d2565b6135bf9190615a3a565b90506125568162800000016130c9565b5f80839050602083015160e01c60205f8551602087015f865af192503d1515831516156135fe573d5f803e3d5ffd5b805f5160e01c14601f3d1116831692505081612b8257604051636c93cb9b60e01b815260040160405180910390fd5b8281613639828261255f565b866136438161208d565b6001600160a01b03808a165f90815260208190526040808220928b1682528120905b88811015613722575f8a8a8381811061368057613680615713565b9050602002013590505f89898481811061369c5761369c615713565b5f858152602089815260409091205491029290920135925050818110156136f8578e83836040516358b4690f60e01b81526004016116cf939291906001600160a01b039390931683526020830191909152604082015260600190565b5f928352602086815260408085209284900390925585905290912080549091019055600101613665565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c6040516137769493929190615843565b60405180910390a45050505050505050505050565b6040516370a0823160e01b81523060048201525f90610648906001600160a01b038416906370a0823190602401602060405180830381865afa1580156137d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a79190615913565b5f805f805f613805876148a8565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83165f818152600660205260408120549091829182918290613863908b612529565b90505f6138808962ffffff165f9081526001602052604090205490565b905061388e83898484614946565b909650945084935062ffffff808b16908a16036139c2576138b0878a42612e13565b96505f6138c184898e89868c614ac5565b905080156139bc575f6138de846138d88985611e7e565b906140a1565b90505f6138f86138ed8b612984565b849061ffff16612993565b9050801561391e5761390a8782611e7e565b60055490975061391a908261228c565b6005555b5f613937866138d86139308786611e7e565b8a9061228c565b90506139448386836147b4565b9950613952600a8c8f612a37565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e86856040516139b09392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b506139cd565b6139cd858b8b614bb4565b8515806139d8575083155b156139fd57604051634c98d35760e11b815262ffffff8a1660048201526024016116cf565b805f03613a1157613a0f60078a614c1a565b505b613a1b838561228c565b62ffffff9099165f9081526006602052604090209890985550929891975095509350505050565b5f8281526001602052604081208054839290613a5f9084906159d6565b90915550506001600160a01b039092165f908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612b828482614ca4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611a2157604051631afcd79f60e31b815260040160405180910390fd5b611fc2613ade565b5f8561ffff168761ffff161180613b4b5750610fff8661ffff16115b80613b5b57506127108561ffff16115b80613b6b57506109c48361ffff16115b80613b7d5750620fffff8262ffffff16115b15613b9b57604051631c07203f60e01b815260040160405180910390fd5b605c82901b620fffff605c1b166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b613fff604e1b16908117871797949095179092171717909117909117908a16175b9998505050505050505050565b5f620fffff8262ffffff161115613c6257604051631c07203f60e01b815260040160405180910390fd5b620fffff60701b198316620fffff60701b607084901b1617611478565b5f80613c8a84612cd6565b62ffffff1690508015612f43575f8361ffff16613ca686612a06565b62ffffff1602905060646063828002840201612f3e565b5f8161ffff16613ccc84612c50565b61ffff16026402540be40002905092915050565b5f805f835f03613cf95750600160801b91506106489050565b50825f811215613d09579015905f035b62100000811015613ef857600160801b9250846001600160801b03811115613d32579115915f19045b6001821615613d435792830260801c925b800260801c6002821615613d595792830260801c925b800260801c6004821615613d6f5792830260801c925b800260801c6008821615613d855792830260801c925b800260801c6010821615613d9b5792830260801c925b800260801c6020821615613db15792830260801c925b800260801c6040821615613dc75792830260801c925b8002608090811c90821615613dde5792830260801c925b800260801c610100821615613df55792830260801c925b800260801c610200821615613e0c5792830260801c925b800260801c610400821615613e235792830260801c925b800260801c610800821615613e3a5792830260801c925b800260801c611000821615613e515792830260801c925b800260801c612000821615613e685792830260801c925b800260801c614000821615613e7f5792830260801c925b800260801c618000821615613e965792830260801c925b800260801c62010000821615613eae5792830260801c925b800260801c62020000821615613ec65792830260801c925b800260801c62040000821615613ede5792830260801c925b800260801c62080000821615613ef65792830260801c925b505b825f03613f2257604051631dba598d60e11b815260048101869052602481018590526044016116cf565b81613f2d5782612556565b612556835f19615a66565b5f620fffff8262ffffff161115613f6257604051631c07203f60e01b815260040160405180910390fd5b620fffff60841b198316620fffff60841b608484901b1617611478565b5f80613f8a8361433b565b905064ffffffffff60b01b19841664ffffffffff60b01b60b083901b1617612127565b806001600160801b03811681146130ef57604051632f45db3d60e21b815260040160405180910390fd5b5f81613fe281614782565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b5f60ff831684811b9061ffff6101008290031686901c906129fc9087906001901b868585614d0d565b5f805f6140438686614db5565b91509150815f14614058578360ff1682901c92505b801561409857600160ff85161b811061408457604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b5f6001600160801b038316608084901c612556828286614dd2565b5f8061ffff600884901c1660ff80851690811461410e575f82815260028701602052604081205493506140ef8483614e3c565b90505f19811461410c5760089290921b9091179250610648915050565b505b5060ff80821690600883901c908214614184575f818152600188016020526040812054945061413d8584614e3c565b90505f19811461418257600882901b81175f81815260028a0160205260409020549550935061416b85614e4a565b60ff166008855f1c901b1795505050505050610648565b505b60ff818116925082146141f057865493505f6141a08584614e3c565b90505f1981146141ee575f81815260018901602052604090205494509050806141c885614e4a565b60ff16600883901b175f81815260028a0160205260409020549550935061416b85614e4a565b505b505f9695505050505050565b5f8061ffff600884901c1660ff8416801561424c575f828152600287016020526040812054935061422d8483614ee5565b90505f19811461424a5760089290921b9091179250610648915050565b505b5060ff8116600882901c81156142a8575f81815260018801602052604081205494506142788584614ee5565b90505f1981146142a657600882901b81175f81815260028a0160205260409020549550935061416b85614ef3565b505b60ff81169150811561431357865493505f6142c38584614ee5565b90505f198114614311575f81815260018901602052604090205494509050806142eb85614ef3565b60ff16600883901b175f81815260028a0160205260409020549550935061416b85614ef3565b505b5062ffffff9695505050505050565b5f60d882901c610648565b5f6106488260d01c60ff1690565b8064ffffffffff811681146130ef576040516350dbfc8760e11b815260040160405180910390fd5b5f8061436e84612634565b90508062ffffff168362ffffff161161438957828103612127565b90910392915050565b64ffffffffff841662ffffff8481168202918482168102918416026143b6886144a6565b6143c090846157b3565b92506143cb886144ba565b6143d590836157b3565b91506143e0886144ce565b6143ea90826157b3565b9050955095509592505050565b60d082901b60ff60d01b16609084901b67ffffffffffffffff60901b16605086901b67ffffffffffffffff60501b16601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b6001600160d81b031916811761275b565b8161446081614482565b818461ffff5f198601811690811061447a5761447a615713565b015550505050565b8061ffff165f036116925760405163944e113960e01b815260040160405180910390fd5b5f6106488260101c6001600160401b031690565b5f6106488260501c6001600160401b031690565b5f6106488260901c6001600160401b031690565b5f8080806144f1600186615a79565b61ffff1690505f805f8961ffff1690505b8385116145ac575f600161451686886159d6565b901c9050888183089a508b61ffff808d1690811061453657614536615713565b0154935061454384612c5b565b92508964ffffffffff168364ffffffffff16111561456d576145666001826159e9565b94506145a6565b8964ffffffffff168364ffffffffff1610156145955761458e8160016159d6565b95506145a6565b838497509750505050505050614625565b50614502565b8164ffffffffff168964ffffffffff1610156145fb578961ffff165f036145d1578799505b8a61ffff5f198c0181169081106145ea576145ea615713565b015483965096505050505050614625565b8760018b089950828b61ffff808d1690811061461957614619615713565b01549650965050505050505b94509492505050565b5f805f8061463b886144a6565b6001600160401b031690505f614650896144ba565b6001600160401b031690505f6146658a6144ce565b6001600160401b031690508664ffffffffff165f0361468a5791945092509050614778565b5f6146948a6144a6565b6001600160401b031690505f6146a98b6144ba565b6001600160401b031690505f6146be8c6144ce565b6001600160401b031690508a64ffffffffff165f036146e7579197509550935061477892505050565b5f6146fc64ffffffffff808d16908e166159d6565b9050808b64ffffffffff1685028d64ffffffffff168902018161472157614721615742565b049950808b64ffffffffff1684028d64ffffffffff168802018161474757614747615742565b049850808b64ffffffffff1683028d64ffffffffff168702018161476d5761476d615742565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b0316111561169257604051638630bc6b60e01b815260040160405180910390fd5b5f805f6147c18686614db5565b915091506129fc8686868585614d0d565b5f816001036147e45750607f19919050565b815f036148045760405163125946cf60e11b815260040160405180910390fd5b60019190911c905f6001607f1b831061481f57506001614839565b505f1982600160fe1b8161483557614835615742565b0492505b5f614847607f85901c614ef3565b60ff607f1b607f82901b16935060ff16905083811c6001607f1b811461489d576001607e1b5b5f81131561489b57908002607f1c90600160801b8210614893579384019360019190911c905b60011d61486d565b505b50500260011b919050565b5f80806148be8460581c6001600160401b031690565b92506148d38460181c6001600160401b031690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff84118061490d5750670de0b6b3a7640000836001600160401b0316115b806149285750670de0b6b3a7640000826001600160401b0316115b1561126757604051637752557f60e11b815260040160405180910390fd5b5f806001600160801b038516608086901c82614963838389614dd2565b9050805f0361497b57505f9350839250614625915050565b5f6149868a896140a1565b9050801580614993575086155b156149af576149a182614f8c565b899550955050505050614625565b6149ba8288836147b4565b95505f6149c887838a614ffa565b905080831115614a65575f6149dd82856159e9565b9050600160801b8110614a1e57608081901c8581116149fc57806149fe565b855b9050614a0a81876159e9565b9550614a1a608082901b836159e9565b9150505b898110614a51575f614a308b83615a66565b9050868111614a3f5780614a41565b865b9050614a4d81886159e9565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614a97614a918d8d61228c565b8b6140a1565b1115614ab65760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b5f815f03614ad457505f6129fc565b6001600160801b038416608085901c5f80614b05610728614af58d8b61228c565b88614b00818c6159d6565b613173565b91509150836001600160801b0316826001600160801b03161115614b67575f614b4a614b318c8c612ee5565b614b3b84876157f3565b6001600160801b031690615016565b9050614b5f816001600160801b031660801b90565b955050614ba6565b826001600160801b0316816001600160801b03161115614ba6575f614b99614b8f8c8c612ee5565b614b3b85886157f3565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff16108015614bd05750608083901b15155b80614bf557508162ffffff168162ffffff16118015614bf557506001600160801b0383115b156108b05760405163227bd87160e21b815262ffffff821660048201526024016116cf565b61ffff600882901c165f818152600284016020526040812054909190600160ff85161b811780821461327d575f838152600287016020526040812082905582900361327157600883901c5f818152600180890160205260408220805460ff88169290921b82179055935083900361326f578654600160ff83161b1787555060019350505050610648565b5f805f5260205f8351602085015f875af19050808015614ce0573d8015614cd35760015f511483169250614cda565b843b151592505b50614cee565b3d15614cee573d5f803e3d5ffd5b50806108b05760405163197138bd60e11b815260040160405180910390fd5b5f815f03614d2c57838381614d2457614d24615742565b049050612556565b838210614d4c576040516313eae71560e01b815260040160405180910390fd5b5f8486880960018619810187165f8190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b5f805f198385098385029250828110838203039150509250929050565b5f8315614e0c575080830281848281614ded57614ded615742565b0414614e0c576040516363f1e01f60e01b815260040160405180910390fd5b82156114785760809290921b91820182811015611478576040516363f1e01f60e01b815260040160405180910390fd5b5f6114788360018401615056565b5f8160801b8015614e5d57608091508092505b8260401b90508015614e70579150604001815b8260201b90508015614e83579150602001815b8260101b90508015614e96579150601001815b8260081b90508015614ea9579150600801815b8260041b90508015614ebc579150600401815b8260021b90508015614ecf579150600201815b508160011b15614edd576001015b60ff03919050565b5f611478835f198401615082565b5f6001600160801b03821115614f0b5750608090811c905b6001600160401b03821115614f2257604091821c91015b63ffffffff821115614f3657602091821c91015b61ffff821115614f4857601091821c91015b60ff821115614f5957600891821c91015b600f821115614f6a57600491821c91015b6003821115614f7b57600291821c91015b60018211156130ef57600101919050565b5f815f03614f9b57505f919050565b5f614fa583614ef3565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff169050828210614ff45782611478565b50919050565b5f6150068484846147b4565b90508180612e9d57612e9d615742565b5f8161502181614782565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a76400009190910102612f3e565b60ff81169190911c905f8215615079578161507084614e4a565b0160ff16611478565b505f1992915050565b60ff8181031691821b915f9083156150a7578061509e85614ef3565b60ff1603612127565b505f199392505050565b6001600160a01b0381168114611692575f80fd5b5f80604083850312156150d6575f80fd5b82356150e1816150b1565b946020939093013593505050565b5f5b838110156151095781810151838201526020016150f1565b50505f910152565b602081525f825180602084015261512f8160408501602087016150ef565b601f01601f19169190910160400192915050565b803562ffffff811681146130ef575f80fd5b5f60208284031215615165575f80fd5b61147882615143565b5f8083601f84011261517e575f80fd5b5081356001600160401b03811115615194575f80fd5b6020830191508360208260051b8501011115612c49575f80fd5b5f805f805f80608087890312156151c3575f80fd5b86356151ce816150b1565b955060208701356151de816150b1565b945060408701356001600160401b03808211156151f9575f80fd5b6152058a838b0161516e565b9096509450606089013591508082111561521d575f80fd5b5061522a89828a0161516e565b979a9699509497509295939492505050565b5f8083601f84011261524c575f80fd5b5081356001600160401b03811115615262575f80fd5b602083019150836020828501011115612c49575f80fd5b5f805f6040848603121561528b575f80fd5b8335925060208401356001600160401b038111156152a7575f80fd5b6152b38682870161523c565b9497909650939450505050565b5f805f80606085870312156152d3575f80fd5b84356152de816150b1565b935060208501356001600160401b038111156152f8575f80fd5b6153048782880161516e565b9094509250506040850135615318816150b1565b939692955090935050565b5f8151808452602080850194508084015f5b8381101561535157815187529582019590820190600101615335565b509495945050505050565b838152826020820152606060408201525f6125566060830184615323565b803561ffff811681146130ef575f80fd5b5f805f805f805f80610100898b0312156153a3575f80fd5b6153ac8961537a565b97506153ba60208a0161537a565b96506153c860408a0161537a565b95506153d660608a0161537a565b94506153e460808a01615143565b93506153f260a08a0161537a565b925061540060c08a01615143565b915061540e60e08a01615143565b90509295985092959890939650565b5f805f8060408587031215615430575f80fd5b84356001600160401b0380821115615446575f80fd5b6154528883890161516e565b9096509450602087013591508082111561546a575f80fd5b506154778782880161516e565b95989497509550505050565b602081525f6114786020830184615323565b803580151581146130ef575f80fd5b5f80604083850312156154b5575f80fd5b6154be83615495565b915060208301356154ce816150b1565b809150509250929050565b5f805f805f805f60e0888a0312156154ef575f80fd5b6154f88861537a565b96506155066020890161537a565b95506155146040890161537a565b94506155226060890161537a565b935061553060808901615143565b925061553e60a0890161537a565b915061554c60c08901615143565b905092959891949750929550565b5f6020828403121561556a575f80fd5b813564ffffffffff81168114611478575f80fd5b5f806040838503121561558f575f80fd5b61559883615495565b9150612c4660208401615143565b5f80604083850312156155b7575f80fd5b82356001600160801b03811681146155cd575f80fd5b9150612c4660208401615495565b5f602082840312156155eb575f80fd5b5035919050565b5f60208284031215615602575f80fd5b6114788261537a565b5f806040838503121561561c575f80fd5b82356155cd816150b1565b5f8060408385031215615638575f80fd5b82356154be816150b1565b5f805f8060608587031215615656575f80fd5b8435615661816150b1565b93506020850135925060408501356001600160401b03811115615682575f80fd5b6154778782880161523c565b600181811c908216806156a257607f821691505b602082108103614ff457634e487b7160e01b5f52602260045260245ffd5b5f602082840312156156d0575f80fd5b8151611478816150b1565b634e487b7160e01b5f52604160045260245ffd5b604081525f6157016040830185615323565b82810360208401526125568185615323565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215615737575f80fd5b8135611478816150b1565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b64ffffffffff828116828216039080821115612f4357612f43615756565b6001600160401b038181168382160280821691908281146157ab576157ab615756565b505092915050565b6001600160401b03818116838216019080821115612f4357612f43615756565b6001600160801b03818116838216019080821115612f4357612f43615756565b6001600160801b03828116828216039080821115612f4357612f43615756565b8183525f6001600160fb1b0383111561582a575f80fd5b8260051b80836020870137939093016020019392505050565b604081525f615856604083018688615813565b828103602084015261275b818587615813565b604081525f61587c604083018587615813565b82810360208401526129fc8185615323565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b038881168252878116602083015286166040820152606081018590526080810184905260c060a082018190525f90613c2b908301848661588e565b5f82516159098184602087016150ef565b9190910192915050565b5f60208284031215615923575f80fd5b5051919050565b6001600160a01b03888116825287811660208301528616604082015260a0606082018190525f9061595e9083018688615813565b8281036080840152615971818587615813565b9a9950505050505050505050565b838152604060208201525f61255660408301848661588e565b6001600160a01b038681168252851660208201526080604082018190525f906159c49083018587615813565b90508260608301529695505050505050565b8082018082111561064857610648615756565b8181038181111561064857610648615756565b64ffffffffff818116838216019080821115612f4357612f43615756565b5f61ffff80841680615a2e57615a2e615742565b92169190910692915050565b5f82615a4857615a48615742565b600160ff1b82145f1984141615615a6157615a61615756565b500590565b5f82615a7457615a74615742565b500490565b61ffff828116828216039080821115612f4357612f4361575656feff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782a264697066735822122037b662eed80f3a48d821ece4457cb654224b7b9a9899a4e0b3aebfc6e8fc6eb864736f6c634300081400330000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac", + "nonce": "0xe4", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionType": "CREATE", + "contractName": "LBPairUpgradeableBeacon", + "contractAddress": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "function": null, + "arguments": [ + "0x68D00Ff88F3a5987584E313b42Cb11CfeeE4FB39", + "0xCF311E7375083b9513566a47B9f3e93F1FcdCfBF", + "0x8C3cD9182dbef229a36351633f470ea904e105Ac" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xa0420", + "value": "0x0", + "input": "0x608060405234801561000f575f80fd5b5060405161088638038061088683398101604081905261002e91610184565b8282806001600160a01b03811661005f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100688161009c565b50610072826100eb565b5050600380546001600160a01b0319166001600160a01b0392909216919091179055506101c49050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036101205760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461017f575f80fd5b919050565b5f805f60608486031215610196575f80fd5b61019f84610169565b92506101ad60208501610169565b91506101bb60408501610169565b90509250925092565b6106b5806101d15f395ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c8063762c51a11161006e578063762c51a11461010a5780638456cb59146101255780638da5cb5b1461012d578063a3a4d3611461013d578063b187bd261461014e578063f2fde38b14610166575f80fd5b80631af7a41f146100aa5780633659cfe6146100d45780633f4ba83a146100e95780635c60da1b146100f1578063715018a614610102575b5f80fd5b6003546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100e76100e236600461061c565b610179565b005b6100e761018d565b6001546001600160a01b03166100b7565b6100e7610316565b6100b773e919920ae49d3027566025548f12cdab4e52b59581565b6100e7610329565b5f546001600160a01b03166100b7565b6002546001600160a01b03166100b7565b61015661049d565b60405190151581526020016100cb565b6100e761017436600461061c565b6104e9565b610181610523565b61018a8161054f565b50565b5f546001600160a01b0316331480159061027c5750600354604080516360dc98df60e11b815290516001600160a01b03909216916391d1485491839163c1b931be916004808201926020929091908290030181865afa1580156101f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102169190610649565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401602060405180830381865afa158015610256573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027a9190610660565b155b156102a157604051630a33ca5d60e31b81523360048201526024015b60405180910390fd5b6102a961049d565b6102c657604051631d08162f60e11b815260040160405180910390fd5b6002546001600160a01b03166102ef5760405163a027d3f960e01b815260040160405180910390fd5b600254610304906001600160a01b031661054f565b600280546001600160a01b0319169055565b61031e610523565b6103275f6105cd565b565b5f546001600160a01b031633148015906104185750600354604080516360dc98df60e11b815290516001600160a01b03909216916391d1485491839163c1b931be916004808201926020929091908290030181865afa15801561038e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b29190610649565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401602060405180830381865afa1580156103f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104169190610660565b155b1561043857604051630a33ca5d60e31b8152336004820152602401610298565b61044061049d565b1561045e57604051636d18edcb60e01b815260040160405180910390fd5b600154600280546001600160a01b0319166001600160a01b0390921691909117905561032773e919920ae49d3027566025548f12cdab4e52b59561054f565b5f73e919920ae49d3027566025548f12cdab4e52b5956104c56001546001600160a01b031690565b6001600160a01b031614806104e457506002546001600160a01b031615155b905090565b6104f1610523565b6001600160a01b03811661051a57604051631e4fbdf760e01b81525f6004820152602401610298565b61018a816105cd565b5f546001600160a01b031633146103275760405163118cdaa760e01b8152336004820152602401610298565b806001600160a01b03163b5f036105845760405163211eb15960e21b81526001600160a01b0382166004820152602401610298565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561062c575f80fd5b81356001600160a01b0381168114610642575f80fd5b9392505050565b5f60208284031215610659575f80fd5b5051919050565b5f60208284031215610670575f80fd5b81518015158114610642575f80fdfea26469706673582212204a46ba90d224ec320a149c0f034ca3e9d78580f4b3fc45836ac551904708c80964736f6c6343000814003300000000000000000000000068d00ff88f3a5987584e313b42cb11cfeee4fb39000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf0000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac", + "nonce": "0xe5", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x31c5b", + "value": "0x0", + "input": "0xbe203094000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf0000000000000000000000000000000000000000000000000001c6bf526340000000000000000000000000004f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "nonce": "0xe6", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdf9d4772d6e50d602cea2d8f3023f67c5ef61d10da87c853cde83891a229e208", + "transactionType": "CREATE", + "contractName": "LBRouter", + "contractAddress": "0x838c5172779357e60c28cc6315c8dcfa0f782786", + "function": null, + "arguments": [ + "0x8C3cD9182dbef229a36351633f470ea904e105Ac", + "0x0000000000000000000000000000000000000000", + "0x5c7bEa38BD9d825212a1BCf0cCA4b9C122f6Bd00" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x51fc46", + "value": "0x0", + "input": "0x60e060405234801562000010575f80fd5b5060405162004b7638038062004b76833981016040819052620000339162000128565b6001600160a01b0380841660805282811660a052811660c052620000566200005f565b50505062000179565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b05760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001105780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b038116811462000110575f80fd5b5f805f606084860312156200013b575f80fd5b8351620001488162000113565b60208501519093506200015b8162000113565b60408501519092506200016e8162000113565b809150509250925092565b60805160a05160c05161493f620002375f395f818161015a015281816102b1015281816105a701528181610681015281816107590152818161089a01528181610c1701528181611315015281816113ac0152818161150d01528181611590015281816118c901528181611b5501528181611e2e0152818161270301528181612a910152612b0b01525f818161045a015261392401525f818161032b01528181610fc40152818161116a0152818161201d0152613226015261493f5ff3fe60806040526004361061014a575f3560e01c806392fe8e70116100b3578063bb558a9f1161006d578063bb558a9f1461044c578063c22159b61461047e578063d0e380f21461049d578063e038e6dc146104bc578063e9361c08146104cf578063f96fe925146104ee575f80fd5b806392fe8e7014610374578063964f987c146103935780639ab6156b146103dc578063a0d376cf146103fb578063a3c7271a1461041a578063b066ea7c14610439575f80fd5b8063659ac74b11610104578063659ac74b1461026c5780636c9c0078146102a35780638129fc1c146102d557806381c2fdfb146102e957806388cc58e41461031d5780638efc2b2c1461034f575f80fd5b80631a24f9a91461019e5780632075ad22146101d05780632a443fae146101f05780633dc8f8ec1461020f5780634b8018701461022e57806362c067671461024d575f80fd5b3661019a57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461019857604051636c8cb79360e01b815260040160405180910390fd5b005b5f80fd5b3480156101a9575f80fd5b506101bd6101b8366004613ea1565b610521565b6040519081526020015b60405180910390f35b6101e36101de366004613f06565b610818565b6040516101c79190613f9b565b3480156101fb575f80fd5b506101bd61020a366004613ea1565b610a6d565b34801561021a575f80fd5b506101e3610229366004613ea1565b610b95565b348015610239575f80fd5b506101bd610248366004613ea1565b610d92565b348015610258575f80fd5b50610198610267366004613fad565b610fc2565b348015610277575f80fd5b5061028b610286366004614015565b61112c565b6040516001600160a01b0390911681526020016101c7565b3480156102ae575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b3480156102e0575f80fd5b506101986111df565b3480156102f4575f80fd5b5061030861030336600461406e565b6112e1565b604080519283526020830191909152016101c7565b348015610328575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b61036261035d366004614121565b611432565b6040516101c796959493929190614158565b34801561037f575f80fd5b506101e361038e366004613ea1565b61167c565b34801561039e575f80fd5b506103b26103ad3660046141c2565b6117bb565b604080516001600160801b03948516815292841660208401529216918101919091526060016101c7565b3480156103e7575f80fd5b506101bd6103f6366004613ea1565b611848565b348015610406575f80fd5b506103b26104153660046141c2565b6119b7565b348015610425575f80fd5b50610362610434366004614121565b6119fa565b6101bd610447366004613f06565b611ad4565b348015610457575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b348015610489575f80fd5b5061030861049836600461420a565b611c48565b3480156104a8575f80fd5b506101bd6104b73660046142c9565b611d37565b6101bd6104ca366004613f06565b611dad565b3480156104da575f80fd5b506101986104e9366004614347565b61201b565b3480156104f9575f80fd5b5061050d6105083660046143d5565b612137565b60405162ffffff90911681526020016101c7565b5f81804211156105525760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b8451518590158061056a575080515160208201515114155b806105875750604081015151815151610584906001614413565b14155b156105a55760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f015151815181106105e9576105e9614426565b60200260200101516001600160a01b0316146106485760408601518651518151811061061757610617614426565b602002602001015160405163cfec0e0160e01b815260040161054991906001600160a01b0391909116815260200190565b5f61065f875f0151886020015189604001516121a0565b6040516370a0823160e01b81523060048201529091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156106c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ea919061443a565b905061072e88604001515f8151811061070557610705614426565b602002602001015133845f8151811061072057610720614426565b60200260200101518d6122ac565b6107428289602001518a60400151306122cd565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ca919061443a565b6107d49190614451565b945084891115610801576040516313fab00360e21b8152600481018a905260248101869052604401610549565b61080b87866126e2565b5050505095945050505050565b606081804211156108455760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b8451518590158061085d575080515160208201515114155b8061087a5750604081015151815151610877906001614413565b14155b156108985760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f815181106108d8576108d8614426565b60200260200101516001600160a01b0316146109045785604001515f8151811061061757610617614426565b5f61091b875f0151886020015189604001516121a0565b905061093187602001518289604001518b612770565b935034845f8151811061094657610946614426565b602002602001015111156109935734845f8151811061096757610967614426565b602002602001015160405163194ee21960e31b8152600401610549929190918252602082015260400190565b6109cf815f815181106109a8576109a8614426565b6020026020010151855f815181106109c2576109c2614426565b6020026020010151612a84565b5f6109e58289602001518a60400151888b612b36565b905088811015610a12576040516313fab00360e21b8152600481018a905260248101829052604401610549565b845f81518110610a2457610a24614426565b6020026020010151341115610a6157610a6133865f81518110610a4957610a49614426565b602002602001015134610a5c9190614451565b612e0b565b50505050949350505050565b5f8180421115610a995760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610ab1575080515160208201515114155b80610ace5750604081015151815151610acb906001614413565b14155b15610aec5760405163b91b4d4d60e01b815260040160405180910390fd5b5f610b03875f0151886020015189604001516121a0565b9050610b4787604001515f81518110610b1e57610b1e614426565b602002602001015133835f81518110610b3957610b39614426565b60200260200101518c6122ac565b610b5c898289602001518a604001518a612e98565b935083881115610b89576040516313fab00360e21b81526004810189905260248101859052604401610549565b50505095945050505050565b60608180421115610bc25760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610bda575080515160208201515114155b80610bf75750604081015151815151610bf4906001614413565b14155b15610c155760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f01515181518110610c5957610c59614426565b60200260200101516001600160a01b031614610c875760408601518651518151811061061757610617614426565b5f610c9e875f0151886020015189604001516121a0565b9050610cb487602001518289604001518c612770565b935087845f81518110610cc957610cc9614426565b60200260200101511115610cea5787845f8151811061096757610967614426565b610d4587604001515f81518110610d0357610d03614426565b602002602001015133835f81518110610d1e57610d1e614426565b6020026020010151875f81518110610d3857610d38614426565b60200260200101516122ac565b5f610d5b8289602001518a604001518830612b36565b905089811015610d88576040516313fab00360e21b8152600481018b905260248101829052604401610549565b61080b87826126e2565b5f8180421115610dbe5760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610dd6575080515160208201515114155b80610df35750604081015151815151610df0906001614413565b14155b15610e115760405163b91b4d4d60e01b815260040160405180910390fd5b5f610e28875f0151886020015189604001516121a0565b90505f8760400151825181518110610e4257610e42614426565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192505f918316906370a0823190602401602060405180830381865afa158015610e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eba919061443a565b9050610efe89604001515f81518110610ed557610ed5614426565b602002602001015133855f81518110610ef057610ef0614426565b60200260200101518e6122ac565b610f12838a602001518b604001518b6122cd565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7d919061443a565b610f879190614451565b9550858a1115610fb4576040516313fab00360e21b8152600481018b905260248101879052604401610549565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190614464565b6001600160a01b0316336001600160a01b03161461107357604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b0383166110a2575f19811461108f5780611091565b475b905061109d8282612e0b565b505050565b5f1981146110b05780611116565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156110f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611116919061443a565b905061109d6001600160a01b03841683836131bc565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303815f875af11580156111b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d69190614464565b95945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112235750825b90505f826001600160401b0316600114801561123e5750303b155b90508115801561124c575080155b1561126a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561129457845460ff60401b1916600160401b1785555b83156112da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f80828042111561130e5760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b5f61133e8c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1661320d565b90505f816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a19190614464565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316149050806113e0579899985b5f806113f0848e8e8e8e306132d8565b9150915082611400578082611403565b81815b80975081985050505050506114198c8786613432565b61142386846126e2565b50509850989650505050505050565b5f8080806060808261146461144a60208a018a61447f565b61145a60408b0160208c0161447f565b8a6040013561320d565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c69190614464565b6001600160a01b03166114dc60208a018a61447f565b6001600160a01b0316146115035760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153a60208a018a61447f565b6001600160a01b03161480156115535750348860600135145b156115865761157761156b60408a0160208b0161447f565b33838b608001356122ac565b6115818134612a84565b61165d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166115c060408a0160208b0161447f565b6001600160a01b03161480156115d95750348860800135145b156115fa576115776115ee60208a018a61447f565b33838b606001356122ac565b611607602089018961447f565b61161760408a0160208b0161447f565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610549565b6116678882613452565b949d939c50919a509850965090945092505050565b606081804211156116a95760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b845151859015806116c1575080515160208201515114155b806116de57506040810151518151516116db906001614413565b14155b156116fc5760405163b91b4d4d60e01b815260040160405180910390fd5b5f611713875f0151886020015189604001516121a0565b905061172987602001518289604001518c612770565b935087845f8151811061173e5761173e614426565b6020026020010151111561175f5787845f8151811061096757610967614426565b61177887604001515f81518110610d0357610d03614426565b5f61178e8289602001518a60400151888b612b36565b90508981101561080b576040516313fab00360e21b8152600481018b905260248101829052604401610549565b604051630abcd78360e41b81526001600160801b038316600482015281151560248201525f90819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa158015611815573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611839919061449a565b91989097509095509350505050565b5f81804211156118745760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b8451518590158061188c575080515160208201515114155b806118a957506040810151518151516118a6906001614413565b14155b156118c75760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f0151518151811061190b5761190b614426565b60200260200101516001600160a01b0316146119395760408601518651518151811061061757610617614426565b5f611950875f0151886020015189604001516121a0565b905061196b87604001515f81518110610b1e57610b1e614426565b611980898289602001518a6040015130612e98565b9350838811156119ad576040516313fab00360e21b81526004810189905260248101859052604401610549565b610b8986856126e2565b604051631cee6cdf60e31b81526001600160801b038316600482015281151560248201525f90819081906001600160a01b0387169063e77366f8906044016117fa565b5f80808060608082611a1261144a60208a018a61447f565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a749190614464565b6001600160a01b0316611a8a60208a018a61447f565b6001600160a01b031614611ab15760405163b33f8ab960e01b815260040160405180910390fd5b611ac16115ee60208a018a61447f565b61165d61156b60408a0160208b0161447f565b5f8180421115611b005760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580611b18575080515160208201515114155b80611b355750604081015151815151611b32906001614413565b14155b15611b535760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f81518110611b9357611b93614426565b60200260200101516001600160a01b031614611bbf5785604001515f8151811061061757610617614426565b5f611bd6875f0151886020015189604001516121a0565b9050611bfb815f81518110611bed57611bed614426565b602002602001015134612a84565b611c10348289602001518a604001518a612e98565b935083881115611c3d576040516313fab00360e21b81526004810189905260248101859052604401610549565b505050949350505050565b5f808280421115611c755760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b5f611c858d8d8d61ffff1661320d565b90505f816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce89190614464565b6001600160a01b03168e6001600160a01b0316141590508015611d09579899985b611d17828c8c8c8c8c6132d8565b90955093508015611d26579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201525f906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da4919061443a565b90505b92915050565b5f8180421115611dd95760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580611df1575080515160208201515114155b80611e0e5750604081015151815151611e0b906001614413565b14155b15611e2c5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f81518110611e6c57611e6c614426565b60200260200101516001600160a01b031614611e985785604001515f8151811061061757610617614426565b5f611eaf875f0151886020015189604001516121a0565b90505f8760400151825181518110611ec957611ec9614426565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192505f918316906370a0823190602401602060405180830381865afa158015611f1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f41919061443a565b9050611f58835f81518110611bed57611bed614426565b611f6c838a602001518b604001518b6122cd565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611fb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd7919061443a565b611fe19190614451565b9550858a111561200e576040516313fab00360e21b8152600481018b905260248101879052604401610549565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209b9190614464565b6001600160a01b0316336001600160a01b0316146120cc57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc9061210290309089908990899089908990600401614509565b5f604051808303815f87803b158015612119575f80fd5b505af115801561212b573d5f803e3d5ffd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290525f906001600160a01b0384169063f5e2932990602401602060405180830381865afa15801561217c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da49190614548565b606083516001600160401b038111156121bb576121bb613c35565b6040519080825280602002602001820160405280156121e4578160200160208202803683370190505b5090505f80835f815181106121fb576121fb614426565b602002602001015190505f5b83518110156122a25781925084816001018151811061222857612228614426565b60200260200101519150612270838389848151811061224957612249614426565b602002602001015189858151811061226357612263614426565b60200260200101516138e4565b84828151811061228257612282614426565b6001600160a01b0390921660209283029190910190910152600101612207565b5050509392505050565b80156122c7576122c76001600160a01b0385168484846139d4565b50505050565b5f805f805f865f815181106122e4576122e4614426565b602002602001015190505f5b895181101561212b5789818151811061230b5761230b614426565b6020026020010151925088818151811061232757612327614426565b6020026020010151945081955087816001018151811061234957612349614426565b60200260200101519150895181600101146123805789816001018151811061237357612373614426565b6020026020010151612382565b865b93505f85600181111561239757612397614563565b036125f6575f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123fe919061458d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b03161015612511576040516370a0823160e01b81526001600160a01b0386811660048301525f9184918b16906370a0823190602401602060405180830381865afa158015612477573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061249b919061443a565b0390505f6124aa828585613a30565b60405163022c0d9f60e01b81529091506001600160a01b0388169063022c0d9f906124dd905f9085908d906004016145ce565b5f604051808303815f87803b1580156124f4575f80fd5b505af1158015612506573d5f803e3d5ffd5b5050505050506125ef565b6040516370a0823160e01b81526001600160a01b0386811660048301525f9183918b16906370a0823190602401602060405180830381865afa158015612559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061257d919061443a565b0390505f61258c828486613a30565b60405163022c0d9f60e01b81529091506001600160a01b0388169063022c0d9f906125bf9084905f908d906004016145ce565b5f604051808303815f87803b1580156125d6575f80fd5b505af11580156125e8573d5f803e3d5ffd5b5050505050505b50506126da565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612641573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126659190614464565b60405160e083901b6001600160e01b03191681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303815f875af11580156126b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d8919061443a565b505b6001016122f0565b805f036126ed575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b15801561274c575f80fd5b505af115801561275e573d5f803e3d5ffd5b5050505061276c8282612e0b565b5050565b606082516001600160401b0381111561278b5761278b613c35565b6040519080825280602002602001820160405280156127b4578160200160208202803683370190505b50905081818551815181106127cb576127cb614426565b602090810291909101015283515b8015612a7b575f846127ec600184614451565b815181106127fc576127fc614426565b602002602001015190505f876001846128159190614451565b8151811061282557612825614426565b602002602001015190505f8760018561283e9190614451565b8151811061284e5761284e614426565b602002602001015190505f600181111561286a5761286a614563565b82600181111561287c5761287c614563565b0361299a575f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e3919061458d565b506001600160701b031691506001600160701b0316915088868151811061290c5761290c614426565b60200260200101516001600160a01b0316856001600160a01b0316111561292f57905b5f87878151811061294257612942614426565b60200260200101519050612961838383613ac59092919063ffffffff16565b6001600160801b03168861297660018a614451565b8151811061298657612986614426565b602002602001018181525050505050612a65565b612a31818686815181106129b0576129b0614426565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a229190614464565b6001600160a01b0316146117bb565b50506001600160801b031685612a48600187614451565b81518110612a5857612a58614426565b6020026020010181815250505b5050508080612a73906145fb565b9150506127d9565b50949350505050565b805f03612a8f575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612ae8575f80fd5b505af1158015612afa573d5f803e3d5ffd5b5061276c9350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150849050836131bc565b5f805f805f80885f81518110612b4e57612b4e614426565b602002602001015190505f5b8b51811015612dfc578b8181518110612b7557612b75614426565b602002602001015193508a8181518110612b9157612b91614426565b60200260200101519250819550898160010181518110612bb357612bb3614426565b602002602001015191508b518160010114612bea578b8160010181518110612bdd57612bdd614426565b6020026020010151612bec565b875b94505f836001811115612c0157612c01614563565b03612cd157888160010181518110612c1b57612c1b614426565b60200260200101519650816001600160a01b0316866001600160a01b03161015612ca15760405163022c0d9f60e01b81526001600160a01b0385169063022c0d9f90612c6f905f908b908a906004016145ce565b5f604051808303815f87803b158015612c86575f80fd5b505af1158015612c98573d5f803e3d5ffd5b50505050612df4565b60405163022c0d9f60e01b81526001600160a01b0385169063022c0d9f90612c6f908a905f908a906004016145ce565b5f846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d329190614464565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292505f918291612dc8918916906353c059a0906044015b6020604051808303815f875af1158015612d90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612db4919061443a565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612dec57809950612df0565b8199505b5050505b600101612b5a565b50505050505095945050505050565b805f03612e16575050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e5f576040519150601f19603f3d011682016040523d82523d5f602084013e612e64565b606091505b505090508061109d5760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610549565b5f805f805f80875f81518110612eb057612eb0614426565b602002602001015190508a95505f5b8a51811015612dfc578a8181518110612eda57612eda614426565b60200260200101519250898181518110612ef657612ef6614426565b60200260200101519450819550888160010181518110612f1857612f18614426565b602002602001015191508a518160010114612f4f578a8160010181518110612f4257612f42614426565b6020026020010151612f51565b875b93505f856001811115612f6657612f66614563565b036130e1575f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612fa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fcd919061458d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561306e57613009898383613a30565b60405163022c0d9f60e01b81529099506001600160a01b0386169063022c0d9f9061303c905f908d908b906004016145ce565b5f604051808303815f87803b158015613053575f80fd5b505af1158015613065573d5f803e3d5ffd5b505050506130da565b613079898284613a30565b60405163022c0d9f60e01b81529099506001600160a01b0386169063022c0d9f906130ac908c905f908b906004016145ce565b5f604051808303815f87803b1580156130c3575f80fd5b505af11580156130d5573d5f803e3d5ffd5b505050505b50506131b4565b5f836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561311e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131429190614464565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292505f918291613188918816906353c059a090604401612d74565b6001600160801b031691506001600160801b0316915082156131ac578099506131b0565b8199505b5050505b600101612ebf565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526122c78482613b60565b60405163704037bd60e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063704037bd9061325f90879087908790600401614610565b608060405180830381865afa15801561327a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329e9190614634565b6020015190506001600160a01b0381166132d157838383604051636b2471d160e11b815260040161054993929190614610565b9392505050565b5f805f886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b815260040161330d94939291906146b6565b5f604051808303815f875af1158015613328573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261334f91908101906146f3565b90505f5b81518110156133e25761338582828151811061337157613371614426565b60200260200101516001600160801b031690565b613398906001600160801b031685614413565b93506133bd8282815181106133af576133af614426565b602002602001015160801c90565b6133d0906001600160801b031684614413565b92506133db81614773565b9050613353565b50878310806133f057508682105b15613426576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610549565b50965096945050505050565b805f0361343e57505050565b61109d6001600160a01b03841683836131bc565b5f805f80606080876101c00135804211156134895760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b6134976101408a018a61478b565b90506134a76101208b018b61478b565b90501415806134d457506134bf6101608a018a61478b565b90506134cf6101208b018b61478b565b905014155b156134f25760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a0135118061350e575062ffffff6101008a0135115b1561353d5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610549565b5f61354c6101208b018b61478b565b90506001600160401b0381111561356557613565613c35565b60405190808252806020026020018201604052801561358e578160200160208202803683370190505b50905061359f6101208b018b61478b565b90506001600160401b038111156135b8576135b8613c35565b6040519080825280602002602001820160405280156135e1578160200160208202803683370190505b5093505f896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613621573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136459190614548565b62ffffff169050808b61010001358c60e0013501108061366f57508a60e001358b61010001358201105b156136a557604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610549565b5f5b82518110156137a5575f6136bf6101208e018e61478b565b838181106136cf576136cf614426565b90506020020135830190505f8112806136ea575062ffffff81115b1561370b576040516370a82e6160e11b815260048101829052602401610549565b8087838151811061371e5761371e614426565b602090810291909101015261377f61373a6101408f018f61478b565b8481811061374a5761374a614426565b905060200201358e806101600190613762919061478b565b8581811061377257613772614426565b9050602002013583613bc9565b84838151811061379157613791614426565b6020908102919091010152506001016136a7565b50505f808a6001600160a01b031663383d15c58d6101800160208101906137cc919061447f565b858f6101a00160208101906137e1919061447f565b6040518463ffffffff1660e01b81526004016137ff939291906147d0565b5f604051808303815f875af115801561381a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526138419190810190614834565b965090925090505f6138538383613bfb565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061387d57508c60c001358a105b156138b9576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610549565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b5f808260018111156138f8576138f8614563565b036139c15760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398d9190614464565b90506001600160a01b0381166139bc57848484604051636b2471d160e11b815260040161054993929190614610565b6139cc565b6111d685858561320d565b949350505050565b5f6323b872dd60e01b8484846040516024016139f293929190614610565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290506112da8582613b60565b5f835f03613a515760405163b937356b60e01b815260040160405180910390fd5b821580613a5c575081155b15613a7a57604051637b03555560e01b815260040160405180910390fd5b5f613a87856103e56148d3565b90505f613a9484836148d3565b90505f82613aa4876103e86148d3565b613aae9190614413565b9050613aba81836148ea565b979650505050505050565b5f835f03613ae65760405163b937356b60e01b815260040160405180910390fd5b821580613af1575081155b15613b0f57604051637b03555560e01b815260040160405180910390fd5b5f613b1a85856148d3565b613b26906103e86148d3565b90505f613b338685614451565b613b3f906103e56148d3565b9050613b4b81836148ea565b613b56906001614413565b9695505050505050565b5f805f5260205f8351602085015f875af19050808015613b9c573d8015613b8f5760015f511483169250613b96565b843b151592505b50613baa565b3d15613baa573d5f803e3d5ffd5b508061109d5760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b67ffffffffffffffff60581b161762ffffff821681176139cc565b80820382811180613c1757506001600160801b03808416908216115b15611da75760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715613c6b57613c6b613c35565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613c9957613c99613c35565b604052919050565b5f6001600160401b03821115613cb957613cb9613c35565b5060051b60200190565b5f82601f830112613cd2575f80fd5b81356020613ce7613ce283613ca1565b613c71565b82815260059290921b84018101918181019086841115613d05575f80fd5b8286015b84811015613d205780358352918301918301613d09565b509695505050505050565b6001600160a01b0381168114613d3f575f80fd5b50565b8035613d4d81613d2b565b919050565b5f82601f830112613d61575f80fd5b81356020613d71613ce283613ca1565b82815260059290921b84018101918181019086841115613d8f575f80fd5b8286015b84811015613d20578035613da681613d2b565b8352918301918301613d93565b5f60608284031215613dc3575f80fd5b613dcb613c49565b905081356001600160401b0380821115613de3575f80fd5b613def85838601613cc3565b8352602091508184013581811115613e05575f80fd5b8401601f81018613613e15575f80fd5b8035613e23613ce282613ca1565b81815260059190911b82018401908481019088831115613e41575f80fd5b928501925b82841015613e6c57833560028110613e5d575f8081fd5b82529285019290850190613e46565b8086880152505050506040840135915080821115613e88575f80fd5b50613e9584828501613d52565b60408301525092915050565b5f805f805f60a08688031215613eb5575f80fd5b853594506020860135935060408601356001600160401b03811115613ed8575f80fd5b613ee488828901613db3565b9350506060860135613ef581613d2b565b949793965091946080013592915050565b5f805f8060808587031215613f19575f80fd5b8435935060208501356001600160401b03811115613f35575f80fd5b613f4187828801613db3565b9350506040850135613f5281613d2b565b9396929550929360600135925050565b5f8151808452602080850194508084015f5b83811015613f9057815187529582019590820190600101613f74565b509495945050505050565b602081525f611da46020830184613f62565b5f805f60608486031215613fbf575f80fd5b8335613fca81613d2b565b92506020840135613fda81613d2b565b929592945050506040919091013590565b62ffffff81168114613d3f575f80fd5b61ffff81168114613d3f575f80fd5b8035613d4d81613ffb565b5f805f8060808587031215614028575f80fd5b843561403381613d2b565b9350602085013561404381613d2b565b9250604085013561405381613feb565b9150606085013561406381613ffb565b939692955090935050565b5f805f805f805f80610100898b031215614086575f80fd5b883561409181613d2b565b975060208901356140a181613ffb565b9650604089013595506060890135945060808901356001600160401b03808211156140ca575f80fd5b6140d68c838d01613cc3565b955060a08b01359150808211156140eb575f80fd5b506140f88b828c01613cc3565b93505060c089013561410981613d2b565b8092505060e089013590509295985092959890939650565b5f60208284031215614131575f80fd5b81356001600160401b03811115614146575f80fd5b82016101e081850312156132d1575f80fd5b86815285602082015284604082015283606082015260c060808201525f61418260c0830185613f62565b82810360a08401526141948185613f62565b9998505050505050505050565b6001600160801b0381168114613d3f575f80fd5b8015158114613d3f575f80fd5b5f805f606084860312156141d4575f80fd5b83356141df81613d2b565b925060208401356141ef816141a1565b915060408401356141ff816141b5565b809150509250925092565b5f805f805f805f805f6101208a8c031215614223575f80fd5b893561422e81613d2b565b985060208a013561423e81613d2b565b975061424c60408b0161400a565b965060608a0135955060808a0135945060a08a01356001600160401b0380821115614275575f80fd5b6142818d838e01613cc3565b955060c08c0135915080821115614296575f80fd5b506142a38c828d01613cc3565b9350506142b260e08b01613d42565b91506101008a013590509295985092959850929598565b5f80604083850312156142da575f80fd5b82356142e581613d2b565b915060208301356142f581613feb565b809150509250929050565b5f8083601f840112614310575f80fd5b5081356001600160401b03811115614326575f80fd5b6020830191508360208260051b8501011115614340575f80fd5b9250929050565b5f805f805f806080878903121561435c575f80fd5b863561436781613d2b565b9550602087013561437781613d2b565b945060408701356001600160401b0380821115614392575f80fd5b61439e8a838b01614300565b909650945060608901359150808211156143b6575f80fd5b506143c389828a01614300565b979a9699509497509295939492505050565b5f80604083850312156143e6575f80fd5b82356143f181613d2b565b946020939093013593505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611da757611da76143ff565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561444a575f80fd5b5051919050565b81810381811115611da757611da76143ff565b5f60208284031215614474575f80fd5b81516132d181613d2b565b5f6020828403121561448f575f80fd5b81356132d181613d2b565b5f805f606084860312156144ac575f80fd5b83516144b7816141a1565b60208501519093506144c8816141a1565b60408501519092506141ff816141a1565b8183525f6001600160fb1b038311156144f0575f80fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b038781168252861660208201526080604082018190525f9061453590830186886144d9565b82810360608401526141948185876144d9565b5f60208284031215614558575f80fd5b81516132d181613feb565b634e487b7160e01b5f52602160045260245ffd5b80516001600160701b0381168114613d4d575f80fd5b5f805f6060848603121561459f575f80fd5b6145a884614577565b92506145b660208501614577565b9150604084015163ffffffff811681146141ff575f80fd5b92835260208301919091526001600160a01b031660408201526080606082018190525f9082015260a00190565b5f81614609576146096143ff565b505f190190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60808284031215614644575f80fd5b604051608081018181106001600160401b038211171561466657614666613c35565b604052825161467481613ffb565b8152602083015161468481613d2b565b60208201526040830151614697816141b5565b604082015260608301516146aa816141b5565b60608201529392505050565b6001600160a01b038581168252841660208201526080604082018190525f906146e190830185613f62565b8281036060840152613aba8185613f62565b5f6020808385031215614704575f80fd5b82516001600160401b03811115614719575f80fd5b8301601f81018513614729575f80fd5b8051614737613ce282613ca1565b81815260059190911b82018301908381019087831115614755575f80fd5b928401925b82841015613aba5783518252928401929084019061475a565b5f60018201614784576147846143ff565b5060010190565b5f808335601e198436030181126147a0575f80fd5b8301803591506001600160401b038211156147b9575f80fd5b6020019150600581901b3603821315614340575f80fd5b6001600160a01b0384811682526060602080840182905285519184018290525f92868201929091906080860190855b8181101561481b578551835294830194918301916001016147ff565b5050809450505080851660408501525050949350505050565b5f805f60608486031215614846575f80fd5b83519250602080850151925060408501516001600160401b0381111561486a575f80fd5b8501601f8101871361487a575f80fd5b8051614888613ce282613ca1565b81815260059190911b820183019083810190898311156148a6575f80fd5b928401925b828410156148c4578351825292840192908401906148ab565b80955050505050509250925092565b8082028115828204841417611da757611da76143ff565b5f8261490457634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212206f438991d849b5c02d55debd6c2e995dedd38bb22485864cf69eedef3463c16d64736f6c634300081400330000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00", + "nonce": "0xe7", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "function": null, + "arguments": [ + "0x838c5172779357E60C28cc6315c8DCFa0F782786", + "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "0x" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xce718", + "value": "0x0", + "input": "0x60a060405260405162000e5038038062000e508339810160408190526200002691620003bc565b828162000034828262000099565b50508160405162000045906200035a565b6001600160a01b039091168152602001604051809103905ff0801580156200006f573d5f803e3d5ffd5b506001600160a01b0316608052620000906200008a60805190565b620000fe565b505050620004b3565b620000a4826200016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115620000f057620000eb8282620001ee565b505050565b620000fa62000267565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200013f5f8051602062000e30833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16200016c8162000289565b50565b806001600160a01b03163b5f03620001aa57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516200020c919062000496565b5f60405180830381855af49150503d805f811462000246576040519150601f19603f3d011682016040523d82523d5f602084013e6200024b565b606091505b5090925090506200025e858383620002ca565b95945050505050565b3415620002875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002b457604051633173bdd160e11b81525f6004820152602401620001a1565b805f8051602062000e30833981519152620001cd565b606082620002e357620002dd8262000330565b62000329565b8151158015620002fb57506001600160a01b0384163b155b156200032657604051639996b31560e01b81526001600160a01b0385166004820152602401620001a1565b50805b9392505050565b805115620003415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806200093483390190565b80516001600160a01b03811681146200037f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620003b45781810151838201526020016200039a565b50505f910152565b5f805f60608486031215620003cf575f80fd5b620003da8462000368565b9250620003ea6020850162000368565b60408501519092506001600160401b038082111562000407575f80fd5b818601915086601f8301126200041b575f80fd5b81518181111562000430576200043062000384565b604051601f8201601f19908116603f011681019083821181831017156200045b576200045b62000384565b8160405282815289602084870101111562000474575f80fd5b6200048783602083016020880162000398565b80955050505050509250925092565b5f8251620004a981846020870162000398565b9190910192915050565b608051610469620004cb5f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea2646970667358221220646db6b703a46dbf43b5303e88a0e75f2165f627cdec6f33f692542261be647a64736f6c63430008140033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000838c5172779357e60c28cc6315c8dcfa0f782786000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xe8", + "chainId": "0xc576d" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x849502fc0c4bbdba68432a18ac26f10a81690cf8", + "initCode": "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0x5de5d529c09153953883f6c6a8221873dff9beadf5c7d9389c33d3bf237d7da4", + "transactionType": "CREATE", + "contractName": "LBQuoter", + "contractAddress": "0xa87bed23e26b2bb7725173168d983ee4ec0e2b64", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x8C3cD9182dbef229a36351633f470ea904e105Ac", + "0xE1EA7bCD93232c66DE8D4D1a5e22da53803e7A69" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x2f3bdb", + "value": "0x0", + "input": "0x60e060405234801562000010575f80fd5b5060405162002b2d38038062002b2d83398101604081905262000033916200006d565b6001600160a01b0392831660805290821660a0521660c052620000b4565b80516001600160a01b038116811462000068575f80fd5b919050565b5f805f6060848603121562000080575f80fd5b6200008b8462000051565b92506200009b6020850162000051565b9150620000ab6040850162000051565b90509250925092565b60805160a05160c051612a0b620001225f395f818160ba01528181610636015261138701525f818160f3015281816103e3015281816104130152818161113e015261117601525f8181605b01528181610a5801528181610a88015281816117f4015261182c0152612a0b5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806307da8f57146100595780630f902a401461009857806333141d3e146100b857806359214226146100de578063ca56fc72146100f1575b5f80fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100a63660046123c7565b610117565b60405161008f9190612557565b7f000000000000000000000000000000000000000000000000000000000000000061007b565b6100ab6100ec3660046123c7565b610e7c565b7f000000000000000000000000000000000000000000000000000000000000000061007b565b6101576040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561017957604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250938552506101ba91506001905085612637565b9050806001600160401b038111156101d4576101d461264a565b6040519080825280602002602001820160405280156101fd578160200160208202803683370190505b506020830152806001600160401b0381111561021b5761021b61264a565b604051908082528060200260200182016040528015610244578160200160208202803683370190505b506040830152806001600160401b038111156102625761026261264a565b60405190808252806020026020018201604052801561028b578160200160208202803683370190505b506060830152806001600160401b038111156102a9576102a961264a565b6040519080825280602002602001820160405280156102d2578160200160208202803683370190505b5060c0830152836001600160401b038111156102f0576102f061264a565b604051908082528060200260200182016040528015610319578160200160208202803683370190505b506080830152836001600160401b038111156103375761033761264a565b604051908082528060200260200182016040528015610360578160200160208202803683370190505b508260a001819052508282608001515f815181106103805761038061265e565b60200260200101906001600160801b031690816001600160801b031681525050828260a001515f815181106103b7576103b761265e565b60200260200101906001600160801b031690816001600160801b0316815250505f5b81811015610e73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a56575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104525761045261265e565b90506020020160208101906104679190612686565b89896104748760016126a8565b8181106104835761048361265e565b90506020020160208101906104989190612686565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f60405180830381865afa1580156104e0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105079190810190612722565b90505f815111801561053e57505f8460800151838151811061052b5761052b61265e565b60200260200101516001600160801b0316115b15610a54575f5b8151811015610a52578181815181106105605761056061265e565b602002602001015160600151610a40575f888861057e8660016126a8565b81811061058d5761058d61265e565b90506020020160208101906105a29190612686565b6001600160a01b03168383815181106105bd576105bd61265e565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610604573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106289190612819565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf8484815181106106755761067561265e565b602002602001015160200151886080015187815181106106975761069761265e565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610718575060408051601f3d908101601f1916820190925261071591810190612834565b60015b15610a3e576001600160801b03831615801561076c5750608089015161073f8860016126a8565b8151811061074f5761074f61265e565b60200260200101516001600160801b0316826001600160801b0316115b15610a3a57608089015182906107838960016126a8565b815181106107935761079361265e565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107c5576107c561265e565b602002602001015160200151896020015188815181106107e7576107e761265e565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108195761081961265e565b60200260200101515f015161ffff168960400151888151811061083e5761083e61265e565b6020026020010181815250506001896060015188815181106108625761086261265e565b6020026020010190600181111561087b5761087b6124b5565b9081600181111561088e5761088e6124b5565b815250505f8686815181106108a5576108a561265e565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109109190612873565b905061096c828b60a001518a8151811061092c5761092c61265e565b602002602001015161093e9190612895565b6001600160801b0316828c604001518b8151811061095e5761095e61265e565b602002602001015188611c70565b60a08b015161097c8a60016126a8565b8151811061098c5761098c61265e565b60200260200101906001600160801b031690816001600160801b031681525050610a028a6080015189815181106109c5576109c561265e565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a76400006109f391906128bc565b6109fd91906128e7565b611cbd565b8a60c001518981518110610a1857610a1861265e565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a4a81612906565b915050610545565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e61575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610ac757610ac761265e565b9050602002016020810190610adc9190612686565b8989610ae98760016126a8565b818110610af857610af861265e565b9050602002016020810190610b0d9190612686565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7a9190612819565b90506001600160a01b03811615801590610bb957505f84608001518381518110610ba657610ba661265e565b60200260200101516001600160801b0316115b15610e5f575f80610c21838a8a87818110610bd657610bd661265e565b9050602002016020810190610beb9190612686565b8b8b610bf88960016126a8565b818110610c0757610c0761265e565b9050602002016020810190610c1c9190612686565b611cec565b915091505f82118015610c3357505f81115b15610e5c575f610c6a87608001518681518110610c5257610c5261265e565b60200260200101516001600160801b03168484611da7565b6080880151909150610c7d8660016126a8565b81518110610c8d57610c8d61265e565b60200260200101516001600160801b0316811115610e5a57610cae81611cbd565b6080880151610cbe8760016126a8565b81518110610cce57610cce61265e565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d0557610d0561265e565b60200260200101906001600160a01b031690816001600160a01b031681525050610d716109fd8860a001518781518110610d4157610d4161265e565b60200260200101516103e5610d56919061291e565b6001600160801b0316610d6b866103e86128bc565b85611e3c565b60a0880151610d818760016126a8565b81518110610d9157610d9161265e565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610dcf57610dcf61265e565b60200260200101906001600160801b031690816001600160801b0316815250505f87606001518681518110610e0657610e0661265e565b60200260200101906001811115610e1f57610e1f6124b5565b90816001811115610e3257610e326124b5565b815250505f87604001518681518110610e4d57610e4d61265e565b6020026020010181815250505b505b50505b505b80610e6b81612906565b9150506103d9565b50509392505050565b610ebc6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610ede57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093855250610f1f91506001905085612637565b9050806001600160401b03811115610f3957610f3961264a565b604051908082528060200260200182016040528015610f62578160200160208202803683370190505b506020830152806001600160401b03811115610f8057610f8061264a565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b506040830152806001600160401b03811115610fc757610fc761264a565b604051908082528060200260200182016040528015610ff0578160200160208202803683370190505b506060830152836001600160401b0381111561100e5761100e61264a565b604051908082528060200260200182016040528015611037578160200160208202803683370190505b506080830152836001600160401b038111156110555761105561264a565b60405190808252806020026020018201604052801561107e578160200160208202803683370190505b5060a0830152806001600160401b0381111561109c5761109c61264a565b6040519080825280602002602001820160405280156110c5578160200160208202803683370190505b508260c0018190525082826080015182815181106110e5576110e561265e565b60200260200101906001600160801b031690816001600160801b031681525050828260a00151828151811061111c5761111c61265e565b6001600160801b0390921660209283029190910190910152805b8015610e73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316156117f2575f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111a8600187612637565b8181106111b7576111b761265e565b90506020020160208101906111cc9190612686565b8989868181106111de576111de61265e565b90506020020160208101906111f39190612686565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f60405180830381865afa15801561123b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112629190810190612722565b90505f815111801561129957505f846080015183815181106112865761128661265e565b60200260200101516001600160801b0316115b156117f0575f5b81518110156117ee578181815181106112bb576112bb61265e565b6020026020010151606001516117dc575f8888858181106112de576112de61265e565b90506020020160208101906112f39190612686565b6001600160a01b031683838151811061130e5761130e61265e565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611355573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113799190612819565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c8484815181106113c6576113c661265e565b602002602001015160200151886080015187815181106113e8576113e861265e565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015611469575060408051601f3d908101601f1916820190925261146691810190612834565b60015b156117da576001600160801b03821615801561148d57506001600160801b03831615155b801561150a575060808901516114a4600189612637565b815181106114b4576114b461265e565b60200260200101516001600160801b0316836001600160801b0316108061150a575060808901516114e6600189612637565b815181106114f6576114f661265e565b60200260200101516001600160801b03165f145b156117d6576080890151839061152160018a612637565b815181106115315761153161265e565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115635761156361265e565b60200260200101516020015189602001516001896115819190612637565b815181106115915761159161265e565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106115c3576115c361265e565b60200260200101515f015161ffff1689604001516001896115e49190612637565b815181106115f4576115f461265e565b60209081029190910101526060890151600190611611828a612637565b815181106116215761162161265e565b6020026020010190600181111561163a5761163a6124b5565b9081600181111561164d5761164d6124b5565b815250505f8686815181106116645761166461265e565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116cf9190612873565b90508161172e8b60a001518a815181106116eb576116eb61265e565b60200260200101516001600160801b0316838d6040015160018d61170f9190612637565b8151811061171f5761171f61265e565b60200260200101518915611c70565b6117389190612949565b60a08b015161174860018b612637565b815181106117585761175861265e565b6001600160801b039092166020928302919091019091015260808a01516117949061178460018b612637565b815181106109c5576109c561265e565b60c08b01516117a460018b612637565b815181106117b4576117b461265e565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b806117e681612906565b9150506112a0565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611c5e575f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a43905888861185e600187612637565b81811061186d5761186d61265e565b90506020020160208101906118829190612686565b8989868181106118945761189461265e565b90506020020160208101906118a99190612686565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156118f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119169190612819565b90506001600160a01b0381161580159061195557505f846080015183815181106119425761194261265e565b60200260200101516001600160801b0316115b15611c5c575f806119a3838a8a61196d600189612637565b81811061197c5761197c61265e565b90506020020160208101906119919190612686565b8b8b88818110610c0757610c0761265e565b915091505f821180156119db5750856080015184815181106119c7576119c761265e565b60200260200101516001600160801b031681115b15611c59575f611a12876080015186815181106119fa576119fa61265e565b60200260200101516001600160801b03168484611e9b565b6080880151909150611a25600187612637565b81518110611a3557611a3561265e565b60200260200101516001600160801b0316811080611a8257506080870151611a5e600187612637565b81518110611a6e57611a6e61265e565b60200260200101516001600160801b03165f145b15611c5757611a9081611cbd565b6080880151611aa0600188612637565b81518110611ab057611ab061265e565b6001600160801b039092166020928302919091018201528701518490611ad7600188612637565b81518110611ae757611ae761265e565b60200260200101906001600160a01b031690816001600160a01b031681525050611b5e611b538860a001518781518110611b2357611b2361265e565b60200260200101516103e8611b38919061291e565b6001600160801b0316611b4d856103e56128bc565b86611e3c565b6109fd9060016126a8565b60a0880151611b6e600188612637565b81518110611b7e57611b7e61265e565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611baf600188612637565b81518110611bbf57611bbf61265e565b6001600160801b039092166020928302919091019091015260608701515f90611be9600188612637565b81518110611bf957611bf961265e565b60200260200101906001811115611c1257611c126124b5565b90816001811115611c2557611c256124b5565b90525060408701515f90611c3a600188612637565b81518110611c4a57611c4a61265e565b6020026020010181815250505b505b50505b505b80611c6881612969565b915050611136565b5f8115611c9857611c916109fd866080611c8a8888611f36565b9190611f6c565b9050611cb5565b611cb26109fd6080611caa8787611f36565b889190611fd6565b90505b949350505050565b806001600160801b0381168114611ce757604051632f45db3d60e21b815260040160405180910390fd5b919050565b5f805f611cf98585611fff565b5090505f80876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5e9190612994565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614611d95578082611d98565b81815b90999098509650505050505050565b5f835f03611dc85760405163b937356b60e01b815260040160405180910390fd5b821580611dd3575081155b15611df157604051637b03555560e01b815260040160405180910390fd5b5f611dfe856103e56128bc565b90505f611e0b84836128bc565b90505f82611e1b876103e86128bc565b611e2591906126a8565b9050611e3181836128e7565b979650505050505050565b5f835f03611e5d5760405163b937356b60e01b815260040160405180910390fd5b821580611e68575081155b15611e8657604051637b03555560e01b815260040160405180910390fd5b82611e9183866128bc565b611cb591906128e7565b5f835f03611ebc5760405163b937356b60e01b815260040160405180910390fd5b821580611ec7575081155b15611ee557604051637b03555560e01b815260040160405180910390fd5b5f611ef085856128bc565b611efc906103e86128bc565b90505f611f098685612637565b611f15906103e56128bc565b9050611f2181836128e7565b611f2c9060016126a8565b9695505050505050565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff1901611f638282612089565b95945050505050565b5f805f611f7986866122eb565b91509150815f14611f8e578360ff1682901c92505b8015610e7357600160ff85161b8110611fba57604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b5f60ff831684811b9061ffff6101008290031686901c90611f2c9087906001901b868585612308565b5f80826001600160a01b0316846001600160a01b0316036120335760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b031610612053578284612056565b83835b90925090506001600160a01b03821661208257604051632268279160e11b815260040160405180910390fd5b9250929050565b5f805f835f036120a25750600160801b91506122e59050565b50825f8112156120b2579015905f035b621000008110156122a157600160801b9250846001600160801b038111156120db579115915f19045b60018216156120ec5792830260801c925b800260801c60028216156121025792830260801c925b800260801c60048216156121185792830260801c925b800260801c600882161561212e5792830260801c925b800260801c60108216156121445792830260801c925b800260801c602082161561215a5792830260801c925b800260801c60408216156121705792830260801c925b8002608090811c908216156121875792830260801c925b800260801c61010082161561219e5792830260801c925b800260801c6102008216156121b55792830260801c925b800260801c6104008216156121cc5792830260801c925b800260801c6108008216156121e35792830260801c925b800260801c6110008216156121fa5792830260801c925b800260801c6120008216156122115792830260801c925b800260801c6140008216156122285792830260801c925b800260801c61800082161561223f5792830260801c925b800260801c620100008216156122575792830260801c925b800260801c6202000082161561226f5792830260801c925b800260801c620400008216156122875792830260801c925b800260801c6208000082161561229f5792830260801c925b505b825f036122cf57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b816122da5782611f63565b611f63835f196128e7565b92915050565b5f805f198385098385029250828110838203039150509250929050565b5f815f036123275783838161231f5761231f6128d3565b049050611f63565b838210612347576040516313eae71560e01b815260040160405180910390fd5b5f8486880960018619810187165f8190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b03811681146123c4575f80fd5b50565b5f805f604084860312156123d9575f80fd5b83356001600160401b03808211156123ef575f80fd5b818601915086601f830112612402575f80fd5b813581811115612410575f80fd5b8760208260051b8501011115612424575f80fd5b6020928301955093505084013561243a816123b0565b809150509250925092565b5f8151808452602080850194508084015f5b8381101561247c5781516001600160a01b031687529582019590820190600101612457565b509495945050505050565b5f8151808452602080850194508084015f5b8381101561247c57815187529582019590820190600101612499565b634e487b7160e01b5f52602160045260245ffd5b5f8151808452602080850194508084015f805b848110156125145782516002811061250257634e487b7160e01b83526021600452602483fd5b885296830196918301916001016124dc565b50959695505050505050565b5f8151808452602080850194508084015f5b8381101561247c5781516001600160801b031687529582019590820190600101612532565b602081525f825160e06020840152612573610100840182612445565b90506020840151601f19808584030160408601526125918383612445565b925060408601519150808584030160608601526125ae8383612487565b925060608601519150808584030160808601526125cb83836124c9565b925060808601519150808584030160a08601526125e88383612520565b925060a08601519150808584030160c08601526126058383612520565b925060c08601519150808584030160e086015250611f638282612520565b634e487b7160e01b5f52601160045260245ffd5b818103818111156122e5576122e5612623565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03811681146123c4575f80fd5b5f60208284031215612696575f80fd5b81356126a181612672565b9392505050565b808201808211156122e5576122e5612623565b604051608081016001600160401b03811182821017156126dd576126dd61264a565b60405290565b604051601f8201601f191681016001600160401b038111828210171561270b5761270b61264a565b604052919050565b80518015158114611ce7575f80fd5b5f6020808385031215612733575f80fd5b82516001600160401b0380821115612749575f80fd5b818501915085601f83011261275c575f80fd5b81518181111561276e5761276e61264a565b61277c848260051b016126e3565b818152848101925060079190911b83018401908782111561279b575f80fd5b928401925b81841015611e3157608084890312156127b8575f8081fd5b6127c06126bb565b845161ffff811681146127d2575f8081fd5b8152848601516127e181612672565b8187015260406127f2868201612713565b908201526060612803868201612713565b90820152835260809390930192918401916127a0565b5f60208284031215612829575f80fd5b81516126a181612672565b5f805f60608486031215612846575f80fd5b8351612851816123b0565b6020850151909350612862816123b0565b604085015190925061243a816123b0565b5f60208284031215612883575f80fd5b815162ffffff811681146126a1575f80fd5b6001600160801b038281168282160390808211156128b5576128b5612623565b5092915050565b80820281158282048414176122e5576122e5612623565b634e487b7160e01b5f52601260045260245ffd5b5f8261290157634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001820161291757612917612623565b5060010190565b6001600160801b0381811683821602808216919082811461294157612941612623565b505092915050565b6001600160801b038181168382160190808211156128b5576128b5612623565b5f8161297757612977612623565b505f190190565b80516001600160701b0381168114611ce7575f80fd5b5f805f606084860312156129a6575f80fd5b6129af8461297e565b92506129bd6020850161297e565b9150604084015163ffffffff8116811461243a575f80fdfea26469706673582212201fb24cc93575509844f823131c8f74102298df934ab2d634cf1328f074816a1464736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac000000000000000000000000e1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "nonce": "0xe9", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2f6df7462934a446fb1ed3a4eebfb1c368fc7b43fb7ec0da879e5db4a440bec8", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x20ac8", + "value": "0x0", + "input": "0x5a440923000000000000000000000000b5e3dbaf69a46b71fe9c055e6fa36992ae6b2c1a", + "nonce": "0xea", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x188bbd9b115e59a4bd18dc1ae54e34b997420384f380b43dd6a89efa22bf041d", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000005fa95212825a474e2c75676e8d833330f261caed", + "nonce": "0xeb", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c763ae81e91df2398a8f1ea6994b80864c20ba8225a7fa6e0d4452496980b80", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000a6b5f74ddcc75b4b561d84b19ad7fd51f0405483", + "nonce": "0xec", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x00d9f0fe32326fa8d5fdae2aa4eed4d7d2256aff8c53e128a08fd6419315ea82", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000002267ae86066097ef49884aac96c63f70fe818eb3", + "nonce": "0xed", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xee52e52b8539a1d1115446a7e2d515ae7c8e6330ccdeb2a55b36497a6a118da1", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000003e610f32806e09c2ba65b8c88a6e4f777c8cb559", + "nonce": "0xee", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xfd72f31060f4fcf32e0066bbf5083b62b0a8ab00391420484985cf5c2f0b4153", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a44092300000000000000000000000067bf6de7f8d4d13fba410cbe05219cb26242a7c9", + "nonce": "0xef", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9fb1775e7b77a7019437adfcaa541c97c4a76c1d1216b36c7dd71f9e2d71dfc2", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000f1e7167a0b085b52a8ad02a5cc48ed2027b8b577", + "nonce": "0xf0", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4134f70ba6d476aa48706bc4a332fa81cb09f470d7b4c71d955bc8c285f130e1", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000fcdac6196c22908dda4ce84fb595b1c7986346bf", + "nonce": "0xf1", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa286e5d6cabdfa450ad4b1755ecb9493487708140fe891ed1bfc773a8a566381", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a44092300000000000000000000000087d252a68a0ac2428c6e849f4ec0b30dd3dca62b", + "nonce": "0xf2", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x13c6ceca85ed0ee8379db6f504d5ac07b41e8d99914eed639346fc13177a2152", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000febad8c0ea06e816ff21d1c772c46e02f10f2a23", + "nonce": "0xf3", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x48ee5deb302d988fdf182f58c18c728d6fd320f63b90bb048b930f3ed45948a4", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000f83a152c0a526a45e93d91c95894a19a1258e30e", + "nonce": "0xf4", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x3cb4cab0b911164f9664b1c432f92183c9a0dc1b4ffca8ffc8cdca6554ddb9f0", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1ae75", + "value": "0x0", + "input": "0x5a4409230000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00", + "nonce": "0xf5", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x2c9f1", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000001e8480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf6", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000007a1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf7", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x26852", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000001d4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000493e00000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf8", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee803000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf9", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee803000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000007530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfa", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfb", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfc", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x10f4411c2af26f81b991f3c04757bc7e0b868c3b1f694ed232db32def4a26cd0", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x11d4b", + "value": "0x0", + "input": "0xf2fde38b000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b", + "nonce": "0xfd", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x39b0eb", + "logs": [ + { + "address": "0x869f0297749084e0256cc761867fe7ce456640fc", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0x2c9fff3b9d207441ece2925abc6b72468d6b91a0659644e20f4afc6fa39bfa7e", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004010000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2c9fff3b9d207441ece2925abc6b72468d6b91a0659644e20f4afc6fa39bfa7e", + "transactionIndex": "0x1", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "gasUsed": "0x390591", + "effectiveGasPrice": "0xfd", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x869f0297749084e0256cc761867fe7ce456640fc", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x2f02e821940bd", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x257c6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x439dc3", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000869f0297749084e0256cc761867fe7ce456640fc" + ], + "data": "0x", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x70c8adc5f50a2d5f9e50f820b1529d196516489e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + ], + "data": "0x", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c8adc5f50a2d5f9e50f820b1529d196516489e", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "logIndex": "0x3", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000002000000001000000000000000000000000000000000000000000000000000000000000110000040000000000000000002000001000200000000000000000000000000000000020000000000000000000800000000800000000000000000000000400000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000020000000010000000000000000000000000420000000000000004020000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "gasUsed": "0x9ecd8", + "effectiveGasPrice": "0xfd", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0xa90921ffb46c", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x86c9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x91a5f5", + "logs": [ + { + "address": "0x68d00ff88f3a5987584e313b42cb11cfeee4fb39", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0x0346c55a4663f381e267a6dd0272ea2fa53d994365c62088f5967672af707677", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020800000000000000000000000080000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0346c55a4663f381e267a6dd0272ea2fa53d994365c62088f5967672af707677", + "transactionIndex": "0x3", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "gasUsed": "0x4e0832", + "effectiveGasPrice": "0xfd", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x68d00ff88f3a5987584e313b42cb11cfeee4fb39", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x4273a53b96349", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x34fcc" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x85fc2", + "logs": [ + { + "address": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000068d00ff88f3a5987584e313b42cb11cfeee4fb39" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000040000000000800000000000000000000000000000000400000000000200000000041000000000000000000000000000000000000000001000000000000000000000000040000000000000000000000000000000000000000000020000000000000000000000000000000000100000000000000000020000000000000000000000000000000000000000000000100000000000000000000", + "type": "0x2", + "transactionHash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionIndex": "0x1", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x7b468", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x5d91a6c657dc", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x4a9c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xaa04f", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c6bf52634000", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000200000000840000200000000000000000080000000000000000000000000000000000000000000000000000000000008000000000000000004800000000000000000000000000000000000000000000024004000000000000020000100000000000000004000000000000000000000000100000000000000000000", + "type": "0x2", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x2408d", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x9f8d5fd925a", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x7f3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x49b123", + "logs": [ + { + "address": "0x838c5172779357e60c28cc6315c8dcfa0f782786", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xdf9d4772d6e50d602cea2d8f3023f67c5ef61d10da87c853cde83891a229e208", + "transactionIndex": "0x3", + "logIndex": "0x6", + "removed": false + } + ], + "logsBloom": "0x00000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000001000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdf9d4772d6e50d602cea2d8f3023f67c5ef61d10da87c853cde83891a229e208", + "transactionIndex": "0x3", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x3f10d4", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x838c5172779357e60c28cc6315c8dcfa0f782786", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x2a7aa59899cd7", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x21df3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x539dfb", + "logs": [ + { + "address": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000838c5172779357e60c28cc6315c8dcfa0f782786" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0x849502fc0c4bbdba68432a18ac26f10a81690cf8", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000849502fc0c4bbdba68432a18ac26f10a81690cf8", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000002000000800000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000002000001000000000000000000000000000000000000020000000000010000000800000000a00000000000000000000000400000000000000000000000100000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000001000020000000010000000000000000000000000400000000000000004020000020000000000020000008200000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x9ecd8", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0xa919eaf268e2", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x86d6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x77f369", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5de5d529c09153953883f6c6a8221873dff9beadf5c7d9389c33d3bf237d7da4", + "transactionIndex": "0x5", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x24556e", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0xa87bed23e26b2bb7725173168d983ee4ec0e2b64", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x187807ac97e90", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x1382d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x796de6", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000b5e3dbaf69a46b71fe9c055e6fa36992ae6b2c1a" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x2f6df7462934a446fb1ed3a4eebfb1c368fc7b43fb7ec0da879e5db4a440bec8", + "transactionIndex": "0x6", + "logIndex": "0xa", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000040000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2f6df7462934a446fb1ed3a4eebfb1c368fc7b43fb7ec0da879e5db4a440bec8", + "transactionIndex": "0x6", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x17a7d", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7aa597", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000005fa95212825a474e2c75676e8d833330f261caed" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x188bbd9b115e59a4bd18dc1ae54e34b997420384f380b43dd6a89efa22bf041d", + "transactionIndex": "0x7", + "logIndex": "0xb", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000100000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x188bbd9b115e59a4bd18dc1ae54e34b997420384f380b43dd6a89efa22bf041d", + "transactionIndex": "0x7", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7bdd48", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000a6b5f74ddcc75b4b561d84b19ad7fd51f0405483" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x1c763ae81e91df2398a8f1ea6994b80864c20ba8225a7fa6e0d4452496980b80", + "transactionIndex": "0x8", + "logIndex": "0xc", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000080000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000220000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1c763ae81e91df2398a8f1ea6994b80864c20ba8225a7fa6e0d4452496980b80", + "transactionIndex": "0x8", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7d14f9", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000002267ae86066097ef49884aac96c63f70fe818eb3" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x00d9f0fe32326fa8d5fdae2aa4eed4d7d2256aff8c53e128a08fd6419315ea82", + "transactionIndex": "0x9", + "logIndex": "0xd", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000020020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x00d9f0fe32326fa8d5fdae2aa4eed4d7d2256aff8c53e128a08fd6419315ea82", + "transactionIndex": "0x9", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7e4caa", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000003e610f32806e09c2ba65b8c88a6e4f777c8cb559" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xee52e52b8539a1d1115446a7e2d515ae7c8e6330ccdeb2a55b36497a6a118da1", + "transactionIndex": "0xa", + "logIndex": "0xe", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000008000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xee52e52b8539a1d1115446a7e2d515ae7c8e6330ccdeb2a55b36497a6a118da1", + "transactionIndex": "0xa", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7f845b", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x00000000000000000000000067bf6de7f8d4d13fba410cbe05219cb26242a7c9" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xfd72f31060f4fcf32e0066bbf5083b62b0a8ab00391420484985cf5c2f0b4153", + "transactionIndex": "0xb", + "logIndex": "0xf", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd72f31060f4fcf32e0066bbf5083b62b0a8ab00391420484985cf5c2f0b4153", + "transactionIndex": "0xb", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x80bc0c", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000f1e7167a0b085b52a8ad02a5cc48ed2027b8b577" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x9fb1775e7b77a7019437adfcaa541c97c4a76c1d1216b36c7dd71f9e2d71dfc2", + "transactionIndex": "0xc", + "logIndex": "0x10", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000004000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9fb1775e7b77a7019437adfcaa541c97c4a76c1d1216b36c7dd71f9e2d71dfc2", + "transactionIndex": "0xc", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x81f3bd", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000fcdac6196c22908dda4ce84fb595b1c7986346bf" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x4134f70ba6d476aa48706bc4a332fa81cb09f470d7b4c71d955bc8c285f130e1", + "transactionIndex": "0xd", + "logIndex": "0x11", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000100000000000000000000000000000000000000000020000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4134f70ba6d476aa48706bc4a332fa81cb09f470d7b4c71d955bc8c285f130e1", + "transactionIndex": "0xd", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x832b6e", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x00000000000000000000000087d252a68a0ac2428c6e849f4ec0b30dd3dca62b" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xa286e5d6cabdfa450ad4b1755ecb9493487708140fe891ed1bfc773a8a566381", + "transactionIndex": "0xe", + "logIndex": "0x12", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa286e5d6cabdfa450ad4b1755ecb9493487708140fe891ed1bfc773a8a566381", + "transactionIndex": "0xe", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x84631f", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000febad8c0ea06e816ff21d1c772c46e02f10f2a23" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x13c6ceca85ed0ee8379db6f504d5ac07b41e8d99914eed639346fc13177a2152", + "transactionIndex": "0xf", + "logIndex": "0x13", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000020000000000000000000000100000000000002004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x13c6ceca85ed0ee8379db6f504d5ac07b41e8d99914eed639346fc13177a2152", + "transactionIndex": "0xf", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x859ad0", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000f83a152c0a526a45e93d91c95894a19a1258e30e" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x48ee5deb302d988fdf182f58c18c728d6fd320f63b90bb048b930f3ed45948a4", + "transactionIndex": "0x10", + "logIndex": "0x14", + "removed": false + } + ], + "logsBloom": "0x00000000000000040800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000420000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x48ee5deb302d988fdf182f58c18c728d6fd320f63b90bb048b930f3ed45948a4", + "transactionIndex": "0x10", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x86d275", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x3cb4cab0b911164f9664b1c432f92183c9a0dc1b4ffca8ffc8cdca6554ddb9f0", + "transactionIndex": "0x11", + "logIndex": "0x15", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000010000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000100020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x3cb4cab0b911164f9664b1c432f92183c9a0dc1b4ffca8ffc8cdca6554ddb9f0", + "transactionIndex": "0x11", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137a5", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x88baa0", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000001e8480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionIndex": "0x12", + "logIndex": "0x16", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionIndex": "0x12", + "logIndex": "0x17", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020040000008000000800000000000000000000000000000000040000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000060000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionIndex": "0x12", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1e82b", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x812127f2109", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x66f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8a5fff", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000002" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000007a1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d090", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionIndex": "0x13", + "logIndex": "0x18", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionIndex": "0x13", + "logIndex": "0x19", + "removed": false + } + ], + "logsBloom": "0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000008000002000000000000000", + "type": "0x2", + "transactionHash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionIndex": "0x13", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8c056a", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000005" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000001d4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000493e0", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionIndex": "0x14", + "logIndex": "0x1a", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionIndex": "0x14", + "logIndex": "0x1b", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000008010000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000001000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionIndex": "0x14", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a56b", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x833a46489f4", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x68a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8daac9", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x000000000000000000000000000000000000000000000000000000000000000a" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000009c4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionIndex": "0x15", + "logIndex": "0x1c", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionIndex": "0x15", + "logIndex": "0x1d", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000020000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionIndex": "0x15", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8f5028", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x000000000000000000000000000000000000000000000000000000000000000f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000753000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionIndex": "0x16", + "logIndex": "0x1e", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionIndex": "0x16", + "logIndex": "0x1f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000008000000800000000000000000000000000000000000000000000000002000000000000020000000000000000000800000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000200000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionIndex": "0x16", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x812127f2109", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x66f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x90f587", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000014" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionIndex": "0x17", + "logIndex": "0x20", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionIndex": "0x17", + "logIndex": "0x21", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000400000000000000000000000000000000000020000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionIndex": "0x17", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x929ae6", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000019" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000003a9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionIndex": "0x18", + "logIndex": "0x22", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000019", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionIndex": "0x18", + "logIndex": "0x23", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000020000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000008000000000", + "type": "0x2", + "transactionHash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionIndex": "0x18", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x936973", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700", + "0x000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "0x000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x10f4411c2af26f81b991f3c04757bc7e0b868c3b1f694ed232db32def4a26cd0", + "transactionIndex": "0x19", + "logIndex": "0x24", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000200000000040000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000002000000000010000000000000000000000000020000000000000004000000100000000000000004000000000000000000000000100000000000000000000", + "type": "0x2", + "transactionHash": "0x10f4411c2af26f81b991f3c04757bc7e0b868c3b1f694ed232db32def4a26cd0", + "transactionIndex": "0x19", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0xce8d", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1725380637, + "chain": 808813, + "commit": "1ecbbf8" +} \ No newline at end of file diff --git a/broadcast/deploy-core.s.sol/808813/run-latest.json b/broadcast/deploy-core.s.sol/808813/run-latest.json new file mode 100644 index 00000000..f86b89fc --- /dev/null +++ b/broadcast/deploy-core.s.sol/808813/run-latest.json @@ -0,0 +1,1806 @@ +{ + "transactions": [ + { + "hash": "0x2c9fff3b9d207441ece2925abc6b72468d6b91a0659644e20f4afc6fa39bfa7e", + "transactionType": "CREATE", + "contractName": "LBFactory", + "contractAddress": "0x869f0297749084e0256cc761867fe7ce456640fc", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x4a20d6", + "value": "0x0", + "input": "0x608060405234801562000010575f80fd5b506200001b62000021565b620000d5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d25780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61424280620000e35f395ff3fe608060405234801562000010575f80fd5b5060043610620002a0575f3560e01c8063701ab8c11162000167578063aabc4b3c11620000cf578063e203a31f116200008f578063e203a31f146200065d578063e30c39781462000674578063e74b981b146200067e578063e92d0d5d1462000695578063f2fde38b14620006ac578063fd90c2be14620006c3575f80fd5b8063aabc4b3c146200059c578063be20309414620005f1578063c1b931be1462000608578063d547741f146200062f578063ddbfd9411462000646575f80fd5b806380c5061e116200012757806380c5061e14620005485780638ce9aa1c14620005525780638da5cb5b146200056157806391d14854146200056b578063a0a0ea391462000582578063a217fddf1462000594575f80fd5b8063701ab8c114620004ef578063704037bd14620004f7578063715018a6146200051d57806379ba509714620005275780637daf5d661462000531575f80fd5b80633a2f1a91116200020b5780635a44092311620001cb5780635a44092314620004525780635b35875c1462000469578063659ac74b1462000473578063661d7ffb146200048a5780636622e0d714620004b257806369d56ea314620004d8575f80fd5b80633a2f1a9114620003f35780633c78a941146200040a5780634ccb20c014620004215780634cd161d314620004325780634e937c3a1462000449575f80fd5b8063248a9ca31162000263578063248a9ca314620003695780632772184214620003805780632cc06b8c14620003975780632f2ff15d14620003ae57806336568abe14620003c5578063379ee80314620003dc575f80fd5b806301ffc9a714620002a45780630282c9c114620002d05780630752092b14620002e9578063093ff76914620003195780631af5bacc1462000332575b5f80fd5b620002bb620002b536600462002b4e565b620006cc565b60405190151581526020015b60405180910390f35b620002da62000703565b604051620002c7919062002b77565b62000300620002fa36600462002bbc565b620007f0565b6040516001600160a01b039091168152602001620002c7565b620003306200032a36600462002c0e565b620007fe565b005b6200035a7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b604051908152602001620002c7565b6200035a6200037a36600462002bbc565b620008f4565b620002bb6200039136600462002cdb565b62000915565b62000330620003a836600462002cf9565b62000923565b62000330620003bf36600462002d44565b62000975565b62000330620003d636600462002d44565b62000997565b62000330620003ed36600462002d85565b620009d2565b620003306200040436600462002e3a565b62000af7565b620003306200041b36600462002cdb565b62000bae565b5f546001600160a01b031662000300565b620003306200044336600462002eee565b62000c0b565b6003546200035a565b620003306200046336600462002cdb565b62000ce1565b620002da62000d58565b620003006200048436600462002f24565b62000d6b565b6200035a7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d81565b620004c9620004c336600462002f82565b62001322565b604051620002c7919062002fb3565b62000330620004e936600462003026565b620014c6565b60016200035a565b6200050e6200050836600462003079565b6200163f565b604051620002c79190620030bc565b6200033062001679565b6200033062001690565b620003006200054236600462002bbc565b620016de565b6200035a6200170f565b67016345785d8a00006200035a565b620003006200171c565b620002bb6200057c36600462002d44565b62001750565b6002546001600160a01b031662000300565b6200035a5f81565b620005b3620005ad36600462002bbc565b620017b5565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e082015261010001620002c7565b6200033062000602366004620030f9565b62001888565b7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d6200035a565b620003306200064036600462002d44565b62001a41565b620003306200065736600462002cdb565b62001a63565b620003306200066e36600462003150565b62001ada565b6200030062001b4b565b620003306200068f36600462002cdb565b62001b74565b62000330620006a636600462002bbc565b62001b89565b62000330620006bd36600462002cdb565b62001c3a565b6001546200035a565b5f6001600160e01b03198216637965db0b60e01b1480620006fd57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f62000712600562001cc3565b90508015620007ec578067ffffffffffffffff8111156200073757620007376200316c565b60405190808252806020026020018201604052801562000761578160200160208202803683370190505b5091505f805b82811015620007dc575f806200077f60058462001ccf565b90925090506200078f8162001cec565b15620007c65781868581518110620007ab57620007ab62003180565b602090810291909101015283620007c281620031a8565b9450505b505080620007d490620031a8565b905062000767565b5081811015620007ea578083525b505b5090565b5f620006fd60088362001cf8565b6200080862001d05565b5f6200081a8b8b8b61ffff1662001d3b565b6020015190506001600160a01b03811662000859578a8a8a60405163b65ee95360e01b81526004016200085093929190620031c3565b60405180910390fd5b604051633329c28d60e11b815261ffff808a16600483015280891660248301528088166044830152808716606483015262ffffff808716608484015290851660a4830152831660c48201526001600160a01b03821690636653851a9060e4015f604051808303815f87803b158015620008d0575f80fd5b505af1158015620008e3573d5f803e3d5ffd5b505050505050505050505050505050565b5f9081525f80516020620041ed833981519152602052604090206001015490565b5f620006fd60088362001de5565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa96200094f8162001e07565b604080515f808252602082019092526200096f9186918691869162001e13565b50505050565b6200098082620008f4565b6200098b8162001e07565b6200096f838362001f49565b6001600160a01b0381163314620009c15760405163334bd91960e11b815260040160405180910390fd5b620009cd828262001f75565b505050565b620009dc62001d05565b60018961ffff16101562000a0a57604051634f958e7160e01b815261ffff8a16600482015260240162000850565b5f62000a1d818a8a8a8a8a8a8a62001ffd565b9050811562000a385762000a3581600160ff620020f2565b90505b62000a4a600561ffff8c16836200211a565b506040805161ffff8b811682528a8116602083015289811682840152888116606083015262ffffff888116608084015287821660a0840152861660c08301529151918c16917f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a289181900360e00190a26040518215159061ffff8c16907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd905f90a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000b238162001e07565b6001600160a01b038416158062000b425750836001600160a01b031916155b1562000b615760405163d43a15d160e01b815260040160405180910390fd5b62000ba58787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525062001e1392505050565b50505050505050565b62000bb862001d05565b806001600160a01b031663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000bf1575f80fd5b505af115801562000c04573d5f803e3d5ffd5b5050505050565b62000c1562001d05565b62000c26600561ffff841662002128565b62000c4b57604051637d9160bf60e11b815261ffff8316600482015260240162000850565b5f62000c5d600561ffff851662002135565b905081151560ff82901c15150362000c88576040516311be38db60e11b815260040160405180910390fd5b62000ca961ffff841662000c9f838560ff620020f2565b600591906200211a565b506040518215159061ffff8516907f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd905f90a3505050565b62000ceb62001d05565b62000cf860088262002142565b62000d22576040516303ce0ad960e01b81526001600160a01b038216600482015260240162000850565b6040516001600160a01b038216907f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e905f90a250565b606062000d66600562002158565b905090565b5f62000d7d600561ffff841662002128565b62000da257604051637d9160bf60e11b815261ffff8316600482015260240162000850565b5f62000db4600561ffff851662002135565b90505f62000dc16200171c565b6001600160a01b0316336001600160a01b031614905062000de28262001cec565b15801562000dee575080155b1562000e1a576040516304fc2fe760e11b815233600482015261ffff8516602482015260440162000850565b62000e2760088762001de5565b62000e5157604051638e888ef360e01b81526001600160a01b038716600482015260240162000850565b856001600160a01b0316876001600160a01b03160362000e9057604051632f9b185360e01b81526001600160a01b038816600482015260240162000850565b62000e9c858562002166565b505f8062000eab89896200219e565b90925090506001600160a01b03821662000ed857604051632573cfb960e21b815260040160405180910390fd5b6001600160a01b038281165f9081526004602090815260408083208585168452825280832061ffff8b168452909152902054620100009004161562000f385788888760405163cb27a43560e01b81526004016200085093929190620031c3565b5f62000f4485620021c7565b62000f4f86620021d3565b62000f5a87620021e3565b62000f6588620021f3565b62000f708962002203565b62000f7b8a62002214565b62000f868b62002224565b60405161ffff978816602482015295871660448701529386166064860152918516608485015262ffffff90811660a4850152931660c4830152821660e48201529089166101048201526101240160408051601f19818403018152918152602080830180516001600160e01b03166347973bff60e01b1790529051606086811b6bffffffffffffffffffffffff199081169383019390935285901b909116603482015260f089901b6001600160f01b03191660488201529091505f90604a016040516020818303038152906040528051906020012090505f604051806020016200106f9062002b40565b601f1982820381018352601f909101166040819052600254620010a9916001600160a01b03909116908f908f908e9089906020016200323b565b60408051601f1981840301815290829052620010c9929160200162003285565b6040516020818303038152906040529050620010e75f838362002235565b975050505060405180608001604052808761ffff168152602001866001600160a01b0316815260200184151581526020015f151581525060045f846001600160a01b03166001600160a01b031681526020019081526020015f205f836001600160a01b03166001600160a01b031681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600385908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550620012a48661ffff16600a5f856001600160a01b03166001600160a01b031681526020019081526020015f205f846001600160a01b03166001600160a01b031681526020019081526020015f20620022b790919063ffffffff16565b508561ffff16886001600160a01b03168a6001600160a01b03167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff886001600380549050620012f49190620032b7565b604080516001600160a01b03909316835260208301919091520160405180910390a450505050949350505050565b60605f806200133285856200219e565b6001600160a01b038083165f908152600a6020908152604080832093851683529290529081209294509092506200136982620022c4565b90508015620014bc578067ffffffffffffffff8111156200138e576200138e6200316c565b604051908082528060200260200182016040528015620013e057816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f19909201910181620013ad5790505b506001600160a01b038086165f90815260046020908152604080832093881683529290529081209196505b82811015620014b9575f6200142b62001425868462001cf8565b620022ce565b6040805160808101825261ffff83168082525f8181526020888152848220546001600160a01b03620100008204168286015260ff600160b01b8204811615159686019690965292909152879052600160b81b900490911615156060820152895191925090899084908110620014a457620014a462003180565b6020908102919091010152506001016200140b565b50505b5050505092915050565b620014d062001d05565b5f80620014de86866200219e565b6001600160a01b038083165f9081526004602090815260408083208486168452825280832061ffff808c1685529083529281902081516080810183529054938416815262010000840490941691840182905260ff600160b01b84048116151591850191909152600160b81b9092049091161515606083015292945090925090620015835786868660405163102a919160e21b81526004016200085093929190620031c3565b8315158160600151151503620015ab57604051626ee66560e11b815260040160405180910390fd5b6001600160a01b038084165f9081526004602090815260408083208685168452825280832061ffff8a1684528252918290208054881515600160b81b0260ff60b81b1990911617905583015190519116907f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f906200162e90871515815260200190565b60405180910390a250505050505050565b604080516080810182525f8082526020820181905291810182905260608101919091526200166f84848462001d3b565b90505b9392505050565b6200168362001d05565b6200168e5f620022f9565b565b33806200169c62001b4b565b6001600160a01b031614620016d05760405163118cdaa760e01b81526001600160a01b038216600482015260240162000850565b620016db81620022f9565b50565b5f60038281548110620016f557620016f562003180565b5f918252602090912001546001600160a01b031692915050565b5f62000d666008620022c4565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f826200177d57620017616200171c565b6001600160a01b0316826001600160a01b0316149050620006fd565b5f8381525f80516020620041ed833981519152602090815260408083206001600160a01b038616845290915290205460ff1662001672565b5f80808080808080620017ca60058a62002128565b620017ec57604051637d9160bf60e11b8152600481018a905260240162000850565b5f620017fa60058b62002135565b90506200180781620021c7565b61ffff1698506200181881620021d3565b61ffff1697506200182981620021e3565b61ffff1696506200183a81620021f3565b61ffff1695506200184b8162002203565b62ffffff1694506200185d8162002214565b61ffff1693506200186e8162002224565b62ffffff16925060ff81901c915050919395975091939597565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015620018ce5750825b90505f8267ffffffffffffffff166001148015620018eb5750303b155b905081158015620018fa575080155b15620019195760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200194457845460ff60401b1916600160401b1785555b6200194f8862002337565b67016345785d8a00008711156200198b57604051635e8988c160e01b81526004810188905267016345785d8a0000602482015260440162000850565b62001996896200234c565b6001879055600280546001600160a01b0319166001600160a01b038816179055604080515f8152602081018990527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50910160405180910390a1831562001a3657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b62001a4c82620008f4565b62001a578162001e07565b6200096f838362001f75565b62001a6d62001d05565b62001a7a6008826200240b565b62001aa457604051638e888ef360e01b81526001600160a01b038216600482015260240162000850565b6040516001600160a01b038216907f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb3905f90a250565b62001ae462001d05565b62001af5600561ffff831662002421565b62001b1a57604051637d9160bf60e11b815261ffff8216600482015260240162000850565b60405161ffff8216907fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be13905f90a250565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0062001740565b62001b7e62001d05565b620016db816200234c565b62001b9362001d05565b60015481810362001bbb57604051631baa31e960e21b81526004810183905260240162000850565b67016345785d8a000082111562001bf757604051635e8988c160e01b81526004810183905267016345785d8a0000602482015260440162000850565b600182905560408051828152602081018490527f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e5091015b60405180910390a15050565b62001c4462001d05565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825562001c8a6200171c565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f620006fd826200242e565b5f80808062001cdf86866200243a565b9097909650945050505050565b5f60ff82901c620006fd565b5f62001672838362002465565b3362001d106200171c565b6001600160a01b0316146200168e5760405163118cdaa760e01b815233600482015260240162000850565b604080516080810182525f80825260208201819052918101829052606081019190915262001d6a84846200219e565b6001600160a01b039182165f90815260046020908152604080832093851683529281528282209582529485528190208151608081018352905461ffff811682526201000081049093169481019490945260ff600160b01b83048116151591850191909152600160b81b90910416151560608301525092915050565b6001600160a01b0381165f908152600183016020526040812054151562001672565b620016db81336200248e565b5f62001e2586868661ffff1662001d3b565b6020015190506001600160a01b03811662001e5b5785858560405163b65ee95360e01b81526004016200085093929190620031c3565b82816001600160a01b031663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e99573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001ebf9190620032cd565b0362001ee25760405163b70cd0db60e01b81526004810184905260240162000850565b604051631b057f6d60e01b81526001600160a01b03821690631b057f6d9062001f129086908690600401620032e5565b5f604051808303815f87803b15801562001f2a575f80fd5b505af115801562001f3d573d5f803e3d5ffd5b50505050505050505050565b5f8262001f6957604051633e3253cf60e11b815260040160405180910390fd5b620016728383620024cb565b5f5f80516020620041ed83398151915262001f91848462001750565b1562001ff3575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620006fd565b5f915050620006fd565b5f8561ffff168761ffff1611806200201a5750610fff8661ffff16115b806200202b57506127108561ffff16115b806200203c57506109c48361ffff16115b806200204f5750620fffff8262ffffff16115b156200206e57604051631c07203f60e01b815260040160405180910390fd5b5060109590951b630fff00001661ffff9690961695909517601c9390931b64fff0000000169290921760289190911b663fff0000000000161760369190911b693fffffc00000000000001617604e9290921b613fff604e1b1691909117605c9190911b620fffff605c1b16176dffffffffffffffffffffffffffff19919091161790565b5f6200166f848462002105575f62002108565b60015b600180861b19929092169116841b1790565b5f6200166f84848462002569565b5f62001672838362002587565b5f62001672838362002594565b5f62001672836001600160a01b038416620025df565b60605f62001672836200262e565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016200219582826200263b565b95945050505050565b5f80826001600160a01b0316846001600160a01b03161115620021bf579192915b509192909150565b5f61ffff8216620006fd565b5f620006fd8260101c610fff1690565b5f620006fd82601c1c610fff1690565b5f620006fd8260281c613fff1690565b5f620006fd8260361c62ffffff1690565b5f620006fd82604e1c613fff1690565b5f620006fd82605c1c620fffff1690565b5f83471015620022625760405163392efb2b60e21b81524760048201526024810185905260440162000850565b81515f036200228457604051631328927760e21b815260040160405180910390fd5b8282516020840186f590506001600160a01b0381166200167257604051633a0ba96160e11b815260040160405180910390fd5b5f620016728383620025df565b5f620006fd825490565b8061ffff81168114620022f4576040516364ae406d60e01b815260040160405180910390fd5b919050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556200233382620028bb565b5050565b620023416200292b565b620016db8162002975565b6001600160a01b0381166200237457604051632573cfb960e21b815260040160405180910390fd5b5f546001600160a01b039081169082168103620023b3575f54604051634fcea97160e01b81526001600160a01b03909116600482015260240162000850565b5f80546001600160a01b0319166001600160a01b0384811691821790925560408051928416835260208301919091527f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721910162001c2e565b5f62001672836001600160a01b038416620029aa565b5f62001672838362002a94565b5f620006fd82620022c4565b5f808062002449858562001cf8565b5f81815260029690960160205260409095205494959350505050565b5f825f0182815481106200247d576200247d62003180565b905f5260205f200154905092915050565b6200249a828262001750565b620023335760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440162000850565b5f5f80516020620041ed833981519152620024e7848462001750565b62001ff3575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556200251e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620006fd565b5f82815260028401602052604081208290556200166f8484620022b7565b5f62001672838362002ab2565b5f81815260028301602052604081205480158015620025bc5750620025ba848462002587565b155b15620016725760405163015ab34360e11b81526004810184905260240162000850565b5f8181526001830160205260408120546200262657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155620006fd565b505f620006fd565b6060620006fd8262002aca565b5f805f835f03620026565750600160801b9150620006fd9050565b50825f81121562002667579015905f035b621000008110156200287557600160801b9250846fffffffffffffffffffffffffffffffff8111156200269b579115915f19045b6001821615620026ad5792830260801c925b800260801c6002821615620026c45792830260801c925b800260801c6004821615620026db5792830260801c925b800260801c6008821615620026f25792830260801c925b800260801c6010821615620027095792830260801c925b800260801c6020821615620027205792830260801c925b800260801c6040821615620027375792830260801c925b8002608090811c908216156200274f5792830260801c925b800260801c610100821615620027675792830260801c925b800260801c6102008216156200277f5792830260801c925b800260801c610400821615620027975792830260801c925b800260801c610800821615620027af5792830260801c925b800260801c611000821615620027c75792830260801c925b800260801c612000821615620027df5792830260801c925b800260801c614000821615620027f75792830260801c925b800260801c6180008216156200280f5792830260801c925b800260801c62010000821615620028285792830260801c925b800260801c62020000821615620028415792830260801c925b800260801c620400008216156200285a5792830260801c925b800260801c62080000821615620028735792830260801c925b505b825f03620028a157604051631dba598d60e11b8152600481018690526024810185905260440162000850565b81620028ae578262002195565b62002195835f19620032ff565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166200168e57604051631afcd79f60e31b815260040160405180910390fd5b6200297f6200292b565b6001600160a01b038116620016d057604051631e4fbdf760e01b81525f600482015260240162000850565b5f818152600183016020526040812054801562001ff3575f620029cf600183620032b7565b85549091505f90620029e490600190620032b7565b905080821462002a4a575f865f01828154811062002a065762002a0662003180565b905f5260205f200154905080875f01848154811062002a295762002a2962003180565b5f918252602080832090910192909255918252600188019052604090208390555b855486908062002a5e5762002a5e6200331f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050620006fd565b5f818152600283016020526040812081905562001672838362002ad8565b5f818152600183016020526040812054151562001672565b60605f620016728362002ae5565b5f620016728383620029aa565b6060815f0180548060200260200160405190810160405280929190818152602001828054801562002b3457602002820191905f5260205f20905b81548152602001906001019080831162002b1f575b50505050509050919050565b610eb9806200333483390190565b5f6020828403121562002b5f575f80fd5b81356001600160e01b03198116811462001672575f80fd5b602080825282518282018190525f9190848201906040850190845b8181101562002bb05783518352928401929184019160010162002b92565b50909695505050505050565b5f6020828403121562002bcd575f80fd5b5035919050565b6001600160a01b0381168114620016db575f80fd5b803561ffff81168114620022f4575f80fd5b803562ffffff81168114620022f4575f80fd5b5f805f805f805f805f806101408b8d03121562002c29575f80fd5b8a3562002c368162002bd4565b995060208b013562002c488162002bd4565b985062002c5860408c0162002be9565b975062002c6860608c0162002be9565b965062002c7860808c0162002be9565b955062002c8860a08c0162002be9565b945062002c9860c08c0162002be9565b935062002ca860e08c0162002bfb565b925062002cb96101008c0162002be9565b915062002cca6101208c0162002bfb565b90509295989b9194979a5092959850565b5f6020828403121562002cec575f80fd5b8135620016728162002bd4565b5f805f6060848603121562002d0c575f80fd5b833562002d198162002bd4565b9250602084013562002d2b8162002bd4565b915062002d3b6040850162002be9565b90509250925092565b5f806040838503121562002d56575f80fd5b82359150602083013562002d6a8162002bd4565b809150509250929050565b80358015158114620022f4575f80fd5b5f805f805f805f805f6101208a8c03121562002d9f575f80fd5b62002daa8a62002be9565b985062002dba60208b0162002be9565b975062002dca60408b0162002be9565b965062002dda60608b0162002be9565b955062002dea60808b0162002be9565b945062002dfa60a08b0162002bfb565b935062002e0a60c08b0162002be9565b925062002e1a60e08b0162002bfb565b915062002e2b6101008b0162002d75565b90509295985092959850929598565b5f805f805f8060a0878903121562002e50575f80fd5b863562002e5d8162002bd4565b9550602087013562002e6f8162002bd4565b945062002e7f6040880162002be9565b935060608701359250608087013567ffffffffffffffff8082111562002ea3575f80fd5b818901915089601f83011262002eb7575f80fd5b81358181111562002ec6575f80fd5b8a602082850101111562002ed8575f80fd5b6020830194508093505050509295509295509295565b5f806040838503121562002f00575f80fd5b62002f0b8362002be9565b915062002f1b6020840162002d75565b90509250929050565b5f805f806080858703121562002f38575f80fd5b843562002f458162002bd4565b9350602085013562002f578162002bd4565b925062002f676040860162002bfb565b915062002f776060860162002be9565b905092959194509250565b5f806040838503121562002f94575f80fd5b823562002fa18162002bd4565b9150602083013562002d6a8162002bd4565b602080825282518282018190525f9190848201906040850190845b8181101562002bb05762003012838551805161ffff1682526020808201516001600160a01b0316908301526040808201511515908301526060908101511515910152565b928401926080929092019160010162002fce565b5f805f80608085870312156200303a575f80fd5b8435620030478162002bd4565b93506020850135620030598162002bd4565b9250620030696040860162002be9565b915062002f776060860162002d75565b5f805f606084860312156200308c575f80fd5b8335620030998162002bd4565b92506020840135620030ab8162002bd4565b929592945050506040919091013590565b815161ffff1681526020808301516001600160a01b03169082015260408083015115159082015260608083015115159082015260808101620006fd565b5f805f80608085870312156200310d575f80fd5b84356200311a8162002bd4565b935060208501356200312c8162002bd4565b9250604085013591506060850135620031458162002bd4565b939692955090935050565b5f6020828403121562003161575f80fd5b620016728262002be9565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201620031bc57620031bc62003194565b5060010190565b6001600160a01b03938416815291909216602082015261ffff909116604082015260600190565b5f5b8381101562003206578181015183820152602001620031ec565b50505f910152565b5f815180845262003227816020860160208601620031ea565b601f01601f19169290920160200192915050565b6001600160a01b03868116825285811660208301528416604082015261ffff8316606082015260a0608082018190525f906200327a908301846200320e565b979650505050505050565b5f835162003298818460208801620031ea565b835190830190620032ae818360208801620031ea565b01949350505050565b81810381811115620006fd57620006fd62003194565b5f60208284031215620032de575f80fd5b5051919050565b828152604060208201525f6200166f60408301846200320e565b5f826200331a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffdfe60a0604052604051610eb9380380610eb9833981016040819052610022916108f6565b60408051602081019091525f8152859061003c828261043a565b506001600160a01b0390811660805260408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290515f92839290881691610087919061098c565b5f60405180830381855afa9150503d805f81146100bf576040519150601f19603f3d011682016040523d82523d5f602084013e6100c4565b606091505b50915091505f818060200190518101906100de91906109a7565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290519192505f9182916001600160a01b038a1691610124919061098c565b5f60405180830381855afa9150503d805f811461015c576040519150601f19603f3d011682016040523d82523d5f602084013e610161565b606091505b50915091505f8180602001905181019061017b91906109a7565b90508580156101875750825b6101ef5760405162461bcd60e51b815260206004820152602e60248201527f4c4250616972426561636f6e50726f78793a204661696c656420746f2067657460448201526d20746f6b656e2073796d626f6c7360901b60648201526084015b60405180910390fd5b6040805160208082019092525f90528451908501207fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4701480159061026757506040805160208082019092525f90528151908201207fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47014155b6102c45760405162461bcd60e51b815260206004820152602860248201527f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e6044820152672073796d626f6c7360c01b60648201526084016101e6565b7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec3180546001600160a01b0319166001600160a01b038c16179055887f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa5826480546001600160a01b0319166001600160a01b039290921691909117905561ffff881661036a7fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f5697384278290565b555f61037961ffff8a166104f7565b9050848282604051602001610390939291906109eb565b60408051808303601f190181529190527f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f906103cc9082610ad9565b508482826040516020016103e293929190610b94565b60408051808303601f190181529190527fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d849061041e9082610ad9565b506104298c8961043a565b505050505050505050505050610d08565b6104438261060f565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156104eb576104e6826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e09190610c16565b82610718565b505050565b6104f361078b565b5050565b60608161ffff165f036105215750506040805180820190915260018152600360fc1b602082015290565b815f5b61ffff82161561054e578061053881610c43565b91506105479050600a83610c77565b9150610524565b5f8161ffff166001600160401b0381111561056b5761056b61084f565b6040519080825280601f01601f191660200182016040528015610595576020820181803683370190505b5090505b61ffff851615610607576105ae600183610c97565b91506105bb600a86610cb9565b6105c6906030610cd9565b60f81b818361ffff16815181106105df576105df610cf4565b60200101906001600160f81b03191690815f1a905350610600600a86610c77565b9450610599565b949350505050565b806001600160a01b03163b5f0361064457604051631933b43b60e21b81526001600160a01b03821660048201526024016101e6565b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156106bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e19190610c16565b9050806001600160a01b03163b5f036104f357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016101e6565b60605f80846001600160a01b031684604051610734919061098c565b5f60405180830381855af49150503d805f811461076c576040519150601f19603f3d011682016040523d82523d5f602084013e610771565b606091505b5090925090506107828583836107ac565b95945050505050565b34156107aa5760405163b398979f60e01b815260040160405180910390fd5b565b6060826107c1576107bc8261080b565b610804565b81511580156107d857506001600160a01b0384163b155b1561080157604051639996b31560e01b81526001600160a01b03851660048201526024016101e6565b50805b9392505050565b80511561081b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461084a575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561087d578181015183820152602001610865565b50505f910152565b5f6001600160401b038084111561089e5761089e61084f565b604051601f8501601f19908116603f011681019082821181831017156108c6576108c661084f565b816040528093508581528686860111156108de575f80fd5b6108ec866020830187610863565b5050509392505050565b5f805f805f60a0868803121561090a575f80fd5b61091386610834565b945061092160208701610834565b935061092f60408701610834565b9250606086015161ffff81168114610945575f80fd5b60808701519092506001600160401b03811115610960575f80fd5b8601601f81018813610970575f80fd5b61097f88825160208401610885565b9150509295509295909350565b5f825161099d818460208701610863565b9190910192915050565b5f602082840312156109b7575f80fd5b81516001600160401b038111156109cc575f80fd5b8201601f810184136109dc575f80fd5b61060784825160208401610885565b634c42545f60e01b81525f8451610a09816004850160208901610863565b8083019050602f60f81b8060048301528551610a2c816005850160208a01610863565b60059201918201528351610a47816006840160208801610863565b0160060195945050505050565b600181811c90821680610a6857607f821691505b602082108103610a8657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104e6575f81815260208120601f850160051c81016020861015610ab25750805b601f850160051c820191505b81811015610ad157828155600101610abe565b505050505050565b81516001600160401b03811115610af257610af261084f565b610b0681610b008454610a54565b84610a8c565b602080601f831160018114610b39575f8415610b225750858301515b5f19600386901b1c1916600185901b178555610ad1565b5f85815260208120601f198616915b82811015610b6757888601518255948401946001909101908401610b48565b5085821015610b8457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4c697175696469747920426f6f6b20546f6b656e20000000000000000000000081525f8451610bcb816015850160208901610863565b8083019050602f60f81b8060158301528551610bee816016850160208a01610863565b60169201918201528351610c09816017840160208801610863565b0160170195945050505050565b5f60208284031215610c26575f80fd5b61080482610834565b634e487b7160e01b5f52601160045260245ffd5b5f61ffff808316818103610c5957610c59610c2f565b6001019392505050565b634e487b7160e01b5f52601260045260245ffd5b5f61ffff80841680610c8b57610c8b610c63565b92169190910492915050565b61ffff828116828216039080821115610cb257610cb2610c2f565b5092915050565b5f61ffff80841680610ccd57610ccd610c63565b92169190910692915050565b61ffff818116838216019080821115610cb257610cb2610c2f565b634e487b7160e01b5f52603260045260245ffd5b608051610194610d255f395f818160400152609501526101945ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061007b565b005b34801561003d575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006040516001600160a01b03909116815260200160405180910390f35b61008b610086610092565b610113565b565b905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061008d9190610131565b365f80375f80365f845af43d5f803e80801561012d573d5ff35b3d5ffd5b5f60208284031215610141575f80fd5b81516001600160a01b0381168114610157575f80fd5b939250505056fea264697066735822122046156875f2e2d59a9e34f834f7a857b16cb8cb63a72b2bce1fbc0af8dddbb6ef64736f6c6343000814003302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212205e723c1de9e189c2e59a601738614f6c62a10916bef2b73b70685fea797c5d1c64736f6c63430008140033", + "nonce": "0xe2", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": [ + "0x869f0297749084e0256cC761867FE7cE456640FC", + "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "0x" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xce718", + "value": "0x0", + "input": "0x60a060405260405162000e5038038062000e508339810160408190526200002691620003bc565b828162000034828262000099565b50508160405162000045906200035a565b6001600160a01b039091168152602001604051809103905ff0801580156200006f573d5f803e3d5ffd5b506001600160a01b0316608052620000906200008a60805190565b620000fe565b505050620004b3565b620000a4826200016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115620000f057620000eb8282620001ee565b505050565b620000fa62000267565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200013f5f8051602062000e30833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16200016c8162000289565b50565b806001600160a01b03163b5f03620001aa57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516200020c919062000496565b5f60405180830381855af49150503d805f811462000246576040519150601f19603f3d011682016040523d82523d5f602084013e6200024b565b606091505b5090925090506200025e858383620002ca565b95945050505050565b3415620002875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002b457604051633173bdd160e11b81525f6004820152602401620001a1565b805f8051602062000e30833981519152620001cd565b606082620002e357620002dd8262000330565b62000329565b8151158015620002fb57506001600160a01b0384163b155b156200032657604051639996b31560e01b81526001600160a01b0385166004820152602401620001a1565b50805b9392505050565b805115620003415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806200093483390190565b80516001600160a01b03811681146200037f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620003b45781810151838201526020016200039a565b50505f910152565b5f805f60608486031215620003cf575f80fd5b620003da8462000368565b9250620003ea6020850162000368565b60408501519092506001600160401b038082111562000407575f80fd5b818601915086601f8301126200041b575f80fd5b81518181111562000430576200043062000384565b604051601f8201601f19908116603f011681019083821181831017156200045b576200045b62000384565b8160405282815289602084870101111562000474575f80fd5b6200048783602083016020880162000398565b80955050505050509250925092565b5f8251620004a981846020870162000398565b9190910192915050565b608051610469620004cb5f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea2646970667358221220646db6b703a46dbf43b5303e88a0e75f2165f627cdec6f33f692542261be647a64736f6c63430008140033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000869f0297749084e0256cc761867fe7ce456640fc000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xe3", + "chainId": "0xc576d" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x70c8adc5f50a2d5f9e50f820b1529d196516489e", + "initCode": "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0x0346c55a4663f381e267a6dd0272ea2fa53d994365c62088f5967672af707677", + "transactionType": "CREATE", + "contractName": "LBPair", + "contractAddress": "0x68d00ff88f3a5987584e313b42cb11cfeee4fb39", + "function": null, + "arguments": [ + "0x8C3cD9182dbef229a36351633f470ea904e105Ac" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x65710d", + "value": "0x0", + "input": "0x60a060405234801562000010575f80fd5b5060405162005c4c38038062005c4c833981016040819052620000339162000105565b6001600160a01b0381166080526200004a62000051565b5062000134565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a25760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001025780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f6020828403121562000116575f80fd5b81516001600160a01b03811681146200012d575f80fd5b9392505050565b608051615aea620001625f395f8181610442015281816112de0152818161202801526133b80152615aea5ff3fe608060405234801561000f575f80fd5b5060043610610212575f3560e01c80638940a16a1161011f578063d3b9fbe4116100a9578063e584b65411610079578063e584b654146105b7578063e77366f8146105ca578063e985e9c5146105dd578063ea3446bf14610600578063f5e2932914610613575f80fd5b8063d3b9fbe414610597578063d8dfcea01461059f578063da10610c146105a7578063dbe65edc146105af575f80fd5b8063a41a01fb116100ef578063a41a01fb146104ee578063abcd783014610515578063bd85b03914610552578063c7bd658614610571578063c9939f5e14610584575f80fd5b80638940a16a146104665780638d7024e5146104a357806395d89b41146104de578063a1af5b9a146104e6575f80fd5b806347973bff116101a05780635518289411610170578063551828941461038c5780636653851a146103d1578063781a8915146103e45780637ca0de30146103ee57806388cc58e414610440575f80fd5b806347973bff146103335780634c7cffbd146103465780634e1273f41461035957806353c059a014610379575f80fd5b80630abe9688116101e65780630abe96881461029957806317f11ecc146102ce57806317fad7fc146102e95780631b057f6d146102fe578063383d15c514610311575f80fd5b8062fdd58e1461021657806305e8746d1461023c57806306fdde031461025c5780630902f1ac14610271575b5f80fd5b6102296102243660046150c5565b610626565b6040519081526020015b60405180910390f35b61024461064e565b6040516001600160a01b039091168152602001610233565b61026461065c565b6040516102339190615111565b61027961070c565b604080516001600160801b03938416815292909116602083015201610233565b6102796102a7366004615155565b62ffffff165f908152600660205260409020546001600160801b0381169160809190911c90565b6102d6610745565b60405161ffff9091168152602001610233565b6102fc6102f73660046151ae565b61075b565b005b6102fc61030c366004615279565b6107a7565b61032461031f3660046152c0565b6108b5565b6040516102339392919061535c565b6102fc61034136600461538b565b610b15565b610229610354366004615155565b610c5b565b61036c61036736600461541d565b610c80565b6040516102339190615483565b6102296103873660046154a4565b610d54565b610394611042565b6040805160ff909616865261ffff9485166020870152939092169284019290925264ffffffffff918216606084015216608082015260a001610233565b6102fc6103df3660046154d9565b6110e8565b6201000954610229565b6103f6611112565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015262ffffff9081166080850152931660a08301529190911660c082015260e001610233565b7f0000000000000000000000000000000000000000000000000000000000000000610244565b61047961047436600461555a565b611176565b604080516001600160401b0394851681529284166020840152921691810191909152606001610233565b6104ab61126e565b6040805162ffffff95861681529385166020850152919093169082015264ffffffffff9091166060820152608001610233565b6102646112ab565b6102296112d3565b6105016104fc36600461557e565b61146d565b60405162ffffff9091168152602001610233565b6105286105233660046155a6565b61147f565b604080516001600160801b0394851681529284166020840152921691810191909152606001610233565b6102296105603660046155db565b5f9081526001602052604090205490565b6102fc61057f3660046155f2565b611610565b61036c6105923660046151ae565b611695565b6102fc61199e565b610279611a23565b610244611a3d565b610501611a46565b6102fc6105c536600461560b565b611a52565b6105286105d83660046155a6565b611a61565b6105f06105eb366004615627565b611b96565b6040519015158152602001610233565b6102fc61060e366004615643565b611ba1565b6105016106213660046155db565b611e2c565b6001600160a01b0382165f908152602081815260408083208484529091529020545b92915050565b5f610657611e4c565b905090565b60607fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845b805461068b9061568e565b80601f01602080910402602001604051908101604052809291908181526020018280546106b79061568e565b80156107025780601f106106d957610100808354040283529160200191610702565b820191905f5260205f20905b8154815290600101906020018083116106e557829003601f168201915b5050505050905090565b5f8061073c610728600554600454611e7e90919063ffffffff16565b6001600160801b0381169160809190911c90565b90939092509050565b5f6106575f80516020615a958339815191525490565b610763611eb8565b62010009546107788133898989898989611f02565b610786878787878787611f78565b61078e611fc2565b61079e8133898989898989611fe8565b50505050505050565b6107af611eb8565b6107b761201d565b62010009839055604080518481529051849133917f4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d9349181900360200190a26001600160a01b0381161580159061087e5750306001600160a01b0316816001600160a01b0316635f9c01b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087291906156c0565b6001600160a01b031614155b1561089c57604051631b5de6eb60e01b815260040160405180910390fd5b6108a7848484612066565b506108b0611fc2565b505050565b5f806060866108c38161208d565b6108cb611eb8565b5f8690036108ec5760405163296db0d960e01b815260040160405180910390fd5b620100095460408051606081019091525f9080896001600160401b03811115610917576109176156db565b604051908082528060200260200182016040528015610940578160200160208202803683370190505b508152602001896001600160401b0381111561095e5761095e6156db565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b508152602001896001600160401b038111156109a5576109a56156db565b6040519080825280602002602001820160405280156109ce578160200160208202803683370190505b5090526004549091506109f26109e2611e4c565b6109ea6120c9565b8391906120f0565b9650610a0283338d8d8d8c61212f565b610a0f8a8a898e86612168565b9550610a25610a1e8888611e7e565b829061228c565b600455604080830151835191519096506001600160a01b038d16915f9133917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb91610a7291908b906156ef565b60405180910390a4815160208301516040516001600160a01b038e169233927f87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a92610abe9291906156ef565b60405180910390a38515610ae857610ae8610ad7611e4c565b610adf6120c9565b8891908b6122c6565b610af0611fc2565b610b0783338d8d8d610b028d8d611e7e565b612324565b505050509450945094915050565b610b1d61201d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b615750825b90505f826001600160401b03166001148015610b7c5750303b155b905081158015610b8a575080155b15610ba85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bd257845460ff60401b1916600160401b1785555b610bda612355565b610c06610bfa610bf58860035461236590919063ffffffff16565b612385565b8e8e8e8e8e8e8e6123af565b8315610c4c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f610648610c745f80516020615a958339815191525490565b62ffffff841690612529565b60608382610c8e828261255f565b856001600160401b03811115610ca657610ca66156db565b604051908082528060200260200182016040528015610ccf578160200160208202803683370190505b5092505f5b86811015610d4957610d24888883818110610cf157610cf1615713565b9050602002016020810190610d069190615727565b878784818110610d1857610d18615713565b90506020020135610626565b848281518110610d3657610d36615713565b6020908102919091010152600101610cd4565b505050949350505050565b5f610d5d611eb8565b62010009546004546005545f86610d8557610d80610d796120c9565b849061257f565b610d97565b610d97610d90611e4c565b84906125b3565b90505f819003610dba57604051637df801c760e01b815260040160405180910390fd5b86610dc885338984866125e1565b610dd2848361228c565b6003549094505f610dee5f80516020615a958339815191525490565b90505f610dfa83612634565b9050610e06834261263f565b92505b62ffffff81165f90815260066020526040902054610e288186156126b3565b610f4957610e3684836126e1565b93505f8080610e498488888b898e612766565b919450925090508215610f4557610e608984611e7e565b9850610e6c8d8361228c565b9c505f610e86610e7b89612984565b839061ffff16612993565b90508015610ea757610e988b8261228c565b9a50610ea48482611e7e565b93505b610ebb83610eb5878761228c565b90611e7e565b62ffffff87165f908152600660205260409020556001600160a01b038f16337fad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70888787610f078e612a06565b6040805162ffffff9586168152602081019490945283019190915290911660608201526080810186905260a0810185905260c00160405180910390a3505b5050505b5f869003610f575750610fa0565b5f610f628684612a16565b905062ffffff81161580610f7a575062ffffff818116145b15610f9857604051631a6d7fb160e31b815260040160405180910390fd5b915050610e09565b5f899003610fc15760405163439df85d60e11b815260040160405180910390fd5b610fcb878a611e7e565b6004556005869055610fdf600a8483612a37565b9250610feb8382612365565b600355831561100c57611007610fff6120c9565b8a908c612b49565b61101f565b61101f611017611e4c565b8a908c612b88565b611027611fc2565b61103488338c878d612b98565b505050505050505092915050565b6003546078905f908190819081908161105a82612be4565b905061ffff8116156110df575f611072600a83612bf3565b9650905061107f81612c50565b965061108a81612c5b565b94508464ffffffffff165f0361109e575f95505b61ffff8616156110dd576110cf8661ffff168361ffff16816110c2576110c2615742565b600a916001910601612c7b565b90506110da81612c5b565b93505b505b50509091929394565b6110f0611eb8565b6110f861201d565b61110a600354888888888888886123af565b61079e611fc2565b5f805f805f805f80600354905061112881612c50565b975061113381612ca9565b965061113e81612cb8565b955061114981612cc7565b945061115481612cd6565b935061115f81612984565b925061116a81612ce6565b91505090919293949596565b5f805f8060035490505f61118982612be4565b905061ffff811615806111a25750428664ffffffffff16115b156111b7575f805f9450945094505050611267565b5f6111c4600a8389612cf6565b91985096509450905064ffffffffff8088169082161015611263576111fa6111eb84612634565b849064ffffffffff8a16612e13565b92505f611207828961576a565b90508064ffffffffff1661121a85612634565b62ffffff166112299190615788565b61123390886157b3565b96508064ffffffffff1661124685612a06565b62ffffff166112559190615788565b61125f90876157b3565b9550505b5050505b9193909250565b5f805f805f600354905061128181612a06565b945061128c81612e2a565b935061129781612e3a565b92506112a281612e4a565b91505090919293565b60607f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f610680565b5f6112dc611eb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135c91906156c0565b6001600160a01b0316336001600160a01b03161461138d57604051630f8937c560e21b815260040160405180910390fd5b6005546001600160801b038116608082901c5f6113e4826113ae575f6113b1565b60015b60ff165f856001600160801b0316116113ca575f6113cd565b60015b60ff169060801b6001600160801b03919091161790565b90506113f08482611e7e565b9450841561145e57600581905560045461140a9086611e7e565b60045560405185815233907f3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e329060200160405180910390a261145e61144d611e4c565b6114556120c9565b879190336122c6565b5050505061146a611fc2565b90565b5f6114788383612a16565b9392505050565b6003545f90839082908161149e5f80516020615a958339815191525490565b90505f6114aa83612634565b90506114b6834261263f565b92505b62ffffff81165f908152600660205260408120546114d8908915612e5c565b90506001600160801b038116156115b9575f6114f962ffffff841685612529565b90505f876001600160801b0316836001600160801b03161161151b578261151d565b875b905061152986856126e1565b95505f8a61154b576115466001600160801b038316846080612e7b565b611560565b6115606001600160801b038316608085612eb0565b90505f61156d8888612ee5565b90505f6115836001600160801b03841683612f03565b905061158f81846157d3565b611599908d6157d3565b9b506115a5848c6157f3565b9a506115b1818b6157d3565b995050505050505b856001600160801b03165f036115cf5750611606565b5f6115da8984612a16565b905062ffffff811615806115f2575062ffffff818116145b156115fe575050611606565b9150506114b9565b5050509250925092565b611618611eb8565b6003545f61162582612be4565b90508061ffff165f036116435750600161163f8282612f4a565b6003555b61164f600a8285612f66565b60405161ffff8416815233907fc975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d69060200160405180910390a25050611692611fc2565b50565b606086336116a3828261304a565b6116d85760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044015b60405180910390fd5b6116e0611eb8565b8515806116ed5750858414155b1561170b57604051633ab7870760e01b815260040160405180910390fd5b620100095461172081338c8c8c8c8c8c613094565b89876001600160401b03811115611739576117396156db565b604051908082528060200260200182016040528015611762578160200160208202803683370190505b5094505f805b898110156118ae575f6117928c8c8481811061178657611786615713565b905060200201356130c9565b90505f8a8a848181106117a7576117a7615713565b905060200201359050805f036117d757604051636996a92560e01b815262ffffff831660048201526024016116cf565b62ffffff82165f818152600660209081526040808320546001909252909120549091611805908890856130f4565b5f611811838584613173565b90505f81900361183b5760405163fd44792960e01b815262ffffff861660048201526024016116cf565b6118458382611e7e565b925083820361185b576118596007866131ea565b505b62ffffff85165f9081526006602052604090208390558b5181908d908890811061188757611887615713565b602090810291909101015261189c878261228c565b96508560010195505050505050611768565b506004546118bc9082611e7e565b6004556040515f906001600160a01b0384169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90611904908f908f908f908f90615843565b60405180910390a48a6001600160a01b0316336001600160a01b03167fa32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb243508c8c8a60405161195393929190615869565b60405180910390a3611977611966611e4c565b61196e6120c9565b8391908e6122c6565b61197f611fc2565b61198f8333848e8e8e8e8e613288565b50505050509695505050505050565b6119a6611eb8565b6119ae61201d565b6003546119c26119bd82612385565b6132bd565b600355337f282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc6119f083612e3a565b6119f984612e2a565b6040805162ffffff93841681529290911660208301520160405180910390a250611a21611fc2565b565b6005545f9081906001600160801b0381169060801c61073c565b5f6106576120c9565b5f610657600354612634565b611a5d3383836132f0565b5050565b5f808080611a786001600160801b038716866133a4565b6003549091505f611a945f80516020615a958339815191525490565b90505f611aa083612634565b9050611aac834261263f565b92505b62ffffff81165f90815260066020526040902054611ace818a156126b3565b611b3a57611adc84836126e1565b93505f8080611aef8488888f898d612766565b919450925090508215611b3657611b068884611e7e565b9750611b13828d15612e5c565b611b1d908b6157d3565b9950611b29818d612e5c565b611b33908a6157d3565b98505b5050505b5f859003611b485750611b7f565b5f611b538a84612a16565b905062ffffff81161580611b6b575062ffffff818116145b15611b77575050611b7f565b915050611aaf565b611b898489612e5c565b9650505050509250925092565b5f611478838361304a565b611ba9611eb8565b5f839003611bca5760405163727ab02160e11b815260040160405180910390fd5b62010009546004545f611bdc866133b4565b9050611bea833389896134b9565b611c06611bf5611e4c565b611bfd6120c9565b8891908a6122c6565b5f806001600160a01b038916631faa6b8760e01b33611c23611e4c565b611c2b6120c9565b8c888d8d604051602401611c4597969594939291906158b6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611c8391906158f8565b5f604051808303815f865af19150503d805f8114611cbc576040519150601f19603f3d011682016040523d82523d5f602084013e611cc1565b606091505b5091509150811580611cd557508051602014155b80611d1357507fab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c281806020019051810190611d109190615913565b14155b15611d3157604051634a57011360e01b815260040160405180910390fd5b5f611d4d611d3d611e4c565b611d456120c9565b5f91906120f0565b9050611d63611d5c868661228c565b82906134fd565b15611d8157604051630e3c717160e11b815260040160405180910390fd5b5f611d8c8287611e7e565b6004839055600554909150611da1908261228c565b6005556003546001600160a01b038c169033907fd126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d90611ddf90612634565b6040805162ffffff9092168252602082018f905281018590526060810185905260800160405180910390a3611e12611fc2565b611e1f87338d8885613540565b5050505050505050505050565b5f610648611e455f80516020615a958339815191525490565b839061358b565b5f7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315b546001600160a01b0316919050565b80820382811180611e9a57506001600160801b03808416908216115b156106485760405163e599af5560e01b815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901611efc57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600160a81b881615611f6e57611f6e886379c8ccf760e01b89898989898989604051602401611f37979695949392919061592a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526135cf565b5050505050505050565b8533611f84828261304a565b611fb45760405163548f773d60e01b81526001600160a01b038084166004830152821660248201526044016116cf565b611f6e88888888888861362d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600160a91b881615611f6e57611f6e886367ddb27860e01b89898989898989604051602401611f37979695949392919061592a565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a2157604051632486085360e01b815260040160405180910390fd5b82156108b0576108b083634e430b5a60e01b858585604051602401611f379392919061597f565b6001600160a01b03811615806120ab57506001600160a01b03811630145b15611692576040516345c210e760e11b815260040160405180910390fd5b5f7f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264611e6f565b5f61212784610eb56121018561378b565b61210a8761378b565b6001600160801b03169060801b6001600160801b03919091161790565b949350505050565b600160a41b8616156121605761216086630d4abdb360e01b8787878787604051602401611f37959493929190615998565b505050505050565b5f8061217f5f80516020615a958339815191525490565b6003549091505f61218f82612634565b90508693505f5b8881101561227f575f806121cb8a8d8d868181106121b6576121b6615713565b905060200201356137f790919063ffffffff16565b915091505f805f6121df898886888c61383d565b919450925090506121f08a83611e7e565b99508362ffffff168b5f0151878151811061220d5761220d615713565b602002602001018181525050808b60200151878151811061223057612230615713565b602002602001018181525050828b60400151878151811061225357612253615713565b60200260200101818152505061226f8c8562ffffff1685613a42565b8560010195505050505050612196565b5050505095945050505050565b818101828110806122a857506001600160801b03808416908216105b15610648576040516316692de960e01b815260040160405180910390fd5b6001600160801b038416608085901c81156122f8576122f86001600160a01b038616846001600160801b038516613a8d565b6001600160801b03811615612160576121606001600160a01b038516846001600160801b038416613a8d565b600160a51b8616156121605761216086637a51a4c660e01b8787878787604051602401611f37959493929190615998565b61235d613ade565b611a21613b27565b5f6001600160e81b0383166001600160e81b031960e884901b1617611478565b5f8061239083612634565b905062ffffff60981b19831662ffffff60981b609883901b1617611478565b61ffff87161580156123c3575061ffff8616155b80156123d1575061ffff8516155b80156123df575061ffff8416155b80156123ee575062ffffff8316155b80156123fc575061ffff8216155b801561240b575062ffffff8116155b15612429576040516331375e0360e11b815260040160405180910390fd5b6124398888888888888888613b2f565b97505f6124515f80516020615a958339815191525490565b90505f61245e8a84613c38565b90505f61246b8284613c7f565b6124758385613cbd565b61247f91906159d6565b905067016345785d8a00008111156124aa576040516372db9c0b60e11b815260040160405180910390fd5b50505060038890556040805161ffff8981168252888116602083015287811682840152868116606083015262ffffff868116608084015290851660a0830152831660c0820152905133917fd09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046919081900360e00190a25050505050505050565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016125568282613ce0565b95945050505050565b808214611a5d576040516340311ffd60e11b815260040160405180910390fd5b5f8061258b8460801c90565b90506121278161259a8561378b565b6125a491906157f3565b6001600160801b031660801b90565b5f6001600160801b038316612127816125cb8561378b565b6125d591906157f3565b6001600160801b031690565b600160a01b85161561262d576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261262d90869063feee373560e01b9060a401611f37565b5050505050565b5f60e882901c610648565b5f8061264a84612e4a565b61265b9064ffffffffff16846159e9565b905061266684612ca9565b61ffff1681106126a95761267984612385565b935061268484612cb8565b61ffff16811061269d57612698845f613f38565b6126a6565b6126a6846132bd565b93505b6121278484613f7f565b5f816126d2576126c38360801c90565b6001600160801b031615611478565b50506001600160801b03161590565b5f806126ec84612e3a565b62ffffff1690505f80828562ffffff161161270e578462ffffff168303612717565b828562ffffff16035b9150612710820261272787612e2a565b62ffffff160190505f61273987612ce6565b62ffffff16905080821161274d578161274f565b805b915061275b8783613c38565b979650505050505050565b5f80808061277962ffffff871689612529565b90505f6127878b8915612e5c565b90505f886127b1576127ac6127a76001600160801b038416856080612e7b565b613fad565b6127c9565b6127c96127a76001600160801b038416608086612eb0565b90505f6127d68c8c612ee5565b90505f6127ec6001600160801b03841683612f03565b90506127f881846157d3565b92505f6128058a8d612e5c565b90505f80856001600160801b0316836001600160801b03161061282f5750849150829050856128a4565b6128426001600160801b03841686613fd7565b91505f61284f83856157f3565b6001600160801b031690508e6128735761286e6127a78260808c61400d565b612882565b6128826127a7828b6080614036565b9150876001600160801b0316826001600160801b031611156128a2578791505b505b8d6128de576128bc836001600160801b031660801b90565b6001600160801b0382166128d9846001600160801b031660801b90565b612906565b6001600160801b0383166128fb826001600160801b031660801b90565b6001600160801b0384165b809b50819c50829d50505050505050505050507d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b61161295861295285610eb5888f61228c90919063ffffffff16565b836140a1565b11156129775760405163a2d7652760e01b815260040160405180910390fd5b5096509650969350505050565b5f61064882604e1c613fff1690565b5f816001600160801b03165f036129ab57505f610648565b6127106001600160801b0383168110156129d857604051631514a94960e21b815260040160405180910390fd5b6001600160801b03848116840282900490608086811c86028490049183169082901b175b9695505050505050565b5f6106488260701c620fffff1690565b5f82612a2c57612a276007836140bc565b611478565b6114786007836141fc565b5f80612a4284612be4565b90508061ffff165f03612a585783915050611478565b5f612a638683612c7b565b90505f612a6f82614322565b90505f612a7b8361432d565b612a889060ff16836159fc565b90508064ffffffffff16612a9b4261433b565b64ffffffffff161115612b3d575f805f612ade8464ffffffffff164203612ac18c612634565b612aca8d612a06565b612ad48e8e614363565b8a93929190614392565b9250925092505f612aee87612c50565b905064ffffffffff861642036078811115612b1d575096879006600101964295505f612b1a8c8a612f4a565b9b505b612b2b82868686858c6143f7565b97505050505050612b3d888585614456565b50949695505050505050565b5f612b548460801c90565b90506001600160801b03811615612b8257612b826001600160a01b038416836001600160801b038416613a8d565b50505050565b5f6001600160801b038416612b54565b600160a11b85161561262d576040516001600160a01b0380861660248301528416604482015282151560648201526084810182905261262d9086906353e8079b60e01b9060a401611f37565b5f6106488260d81c61ffff1690565b5f80612bff8484612c7b565b9150612c0a82612c50565b90508061ffff168361ffff1614612c4957612c2d612c288583612c7b565b612c50565b90508061ffff168361ffff1611612c445780612c46565b825b90505b9250929050565b5f61ffff8216610648565b5f612c658261432d565b60ff16612c7183614322565b61064891906159fc565b5f81612c8681614482565b8361ffff5f1985018116908110612c9f57612c9f615713565b0154949350505050565b5f6106488260101c610fff1690565b5f61064882601c1c610fff1690565b5f6106488260281c613fff1690565b5f6106488260361c62ffffff1690565b5f61064882605c1c620fffff1690565b5f805f805f80612d068989612bf3565b909250905064ffffffffff8716612d3d8a612d21848c615a1a565b61ffff1661ffff8110612d3657612d36615713565b0154612c5b565b64ffffffffff161115612d6357604051631c4e7f9560e21b815260040160405180910390fd5b612d6c82612c5b565b95508664ffffffffff168664ffffffffff1611612dae5785612d8d836144a6565b612d96846144ba565b612d9f856144ce565b95509550955095505050612e0a565b8695505f80612dbf8b8b8b866144e2565b915091505f89612dce83612c5b565b612dd8919061576a565b90505f612de484612c5b565b612dee908c61576a565b9050612dfc8484848461462e565b919a50985096505050505050505b93509350935093565b5f612e1e848361263f565b935061212784846126e1565b5f6106488260841c620fffff1690565b5f6106488260981c62ffffff1690565b5f6106488260b01c64ffffffffff1690565b5f81612e6c57612a278360801c90565b6001600160801b038316611478565b5f612e87848484614036565b9050600160ff83161b80612e9d57612e9d615742565b83850915611478576121276001826159d6565b5f612ebc84848461400d565b90508180612ecc57612ecc615742565b600160ff85161b850915611478576121276001826159d6565b5f611478612ef38484613c7f565b612efd8585613cbd565b01613fad565b5f81612f0e81614782565b6001600160801b03808416670de0b6b3a76400008190039182915f199188160282010181612f3e57612f3e615742565b049250505b5092915050565b5f61ffff60d81b19831661ffff60d81b60d884901b1617611478565b5f612f718484612c7b565b90505f612f7d82612c50565b90508261ffff168161ffff1610612fa757604051632c57574160e21b815260040160405180910390fd5b5f8461ffff168261ffff1614612fd65761ffff821615612fd057612fcb8683612c7b565b612fd8565b5f612fd8565b825b90505f612fe482612c50565b61ffff169050808661ffff1611612ffb5780613001565b8561ffff165b905061ffff83165b8561ffff168110156130335781888261ffff811061302957613029615713565b0155600101613009565b5061079e878761ffff868116881890891617614456565b5f816001600160a01b0316836001600160a01b031614806114785750506001600160a01b039182165f90815260026020908152604080832093909416825291909152205460ff1690565b600160a61b881615611f6e57611f6e8863ea9db9d360e01b89898989898989604051602401611f37979695949392919061592a565b8062ffffff811681146130ef57604051639b63641560e01b815260040160405180910390fd5b919050565b6001600160a01b0383165f9081526020818152604080832085845291829052909120548281101561315057604051625b387760e31b81526001600160a01b038616600482015260248101859052604481018490526064016116cf565b5f9384526001602090815260408086208054869003905592905292209103905550565b5f6001600160801b038416608085901c828083156131a5576131a26127a7886001600160801b038716896147b4565b91505b6001600160801b038316156131ce576131cb6127a7886001600160801b038616896147b4565b90505b608081901b6001600160801b0383161798975050505050505050565b61ffff600882901c165f818152600284016020526040812054909190600160ff85161b19811680821461327d575f83815260028701602052604081208290558190036132715750600882901c5f818152600187810160205260408220805460ff87169290921b1990911690819055919082900361326f578654600160ff83161b191687555b505b60019350505050610648565b505f95945050505050565b600160a71b881615611f6e57611f6e8863fdc2725760e01b89898989898989604051602401611f37979695949392919061592a565b5f806132c883612a06565b62ffffff1690505f6132d984612cc7565b61ffff169050612710828202046125568582613f38565b826132fa8161208d565b826001600160a01b0316846001600160a01b0316036133375760405163782ee70760e01b81526001600160a01b03851660048201526024016116cf565b6001600160a01b038481165f81815260026020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b5f81612e6c57612a278360801b90565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd90c2be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613412573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134369190615913565b90506001600160801b0383811690608085901c90670de0b6b3a763ffff9061346f90670de0b6b3a7640000908616850283015b04613fad565b92506134a1670de0b6b3a764000082866001600160801b0316856001600160801b031602018161346957613469615742565b915050608081901b6001600160801b03831617612556565b600160a21b841615612b82576040516001600160a01b0380851660248301528316604482015260648101829052612b8290859063505d903360e01b90608401611f37565b5f6001600160801b0383811690608085811c9185169085901c8184108061275b5750806001600160801b0316836001600160801b03161094505050505092915050565b600160a31b85161561262d576040516001600160a01b03808616602483015284166044820152606481018390526084810182905261262d9086906360bed5f360e01b9060a401611f37565b5f61271061ffff60801b608084901b1604600160801b01816135ac826147d2565b6135b5866147d2565b6135bf9190615a3a565b90506125568162800000016130c9565b5f80839050602083015160e01c60205f8551602087015f865af192503d1515831516156135fe573d5f803e3d5ffd5b805f5160e01c14601f3d1116831692505081612b8257604051636c93cb9b60e01b815260040160405180910390fd5b8281613639828261255f565b866136438161208d565b6001600160a01b03808a165f90815260208190526040808220928b1682528120905b88811015613722575f8a8a8381811061368057613680615713565b9050602002013590505f89898481811061369c5761369c615713565b5f858152602089815260409091205491029290920135925050818110156136f8578e83836040516358b4690f60e01b81526004016116cf939291906001600160a01b039390931683526020830191909152604082015260600190565b5f928352602086815260408085209284900390925585905290912080549091019055600101613665565b50896001600160a01b03168b6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8c8c8c8c6040516137769493929190615843565b60405180910390a45050505050505050505050565b6040516370a0823160e01b81523060048201525f90610648906001600160a01b038416906370a0823190602401602060405180830381865afa1580156137d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a79190615913565b5f805f805f613805876148a8565b670de0b6b3a764000060808a811c90930281900490921b6001600160801b03998a169093029190910490971617979596505050505050565b62ffffff83165f818152600660205260408120549091829182918290613863908b612529565b90505f6138808962ffffff165f9081526001602052604090205490565b905061388e83898484614946565b909650945084935062ffffff808b16908a16036139c2576138b0878a42612e13565b96505f6138c184898e89868c614ac5565b905080156139bc575f6138de846138d88985611e7e565b906140a1565b90505f6138f86138ed8b612984565b849061ffff16612993565b9050801561391e5761390a8782611e7e565b60055490975061391a908261228c565b6005555b5f613937866138d86139308786611e7e565b8a9061228c565b90506139448386836147b4565b9950613952600a8c8f612a37565b9a508a600381905550336001600160a01b03167f3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff48e86856040516139b09392919062ffffff9390931683526020830191909152604082015260600190565b60405180910390a25050505b506139cd565b6139cd858b8b614bb4565b8515806139d8575083155b156139fd57604051634c98d35760e11b815262ffffff8a1660048201526024016116cf565b805f03613a1157613a0f60078a614c1a565b505b613a1b838561228c565b62ffffff9099165f9081526006602052604090209890985550929891975095509350505050565b5f8281526001602052604081208054839290613a5f9084906159d6565b90915550506001600160a01b039092165f908152602081815260408083209383529290522080549091019055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612b828482614ca4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611a2157604051631afcd79f60e31b815260040160405180910390fd5b611fc2613ade565b5f8561ffff168761ffff161180613b4b5750610fff8661ffff16115b80613b5b57506127108561ffff16115b80613b6b57506109c48361ffff16115b80613b7d5750620fffff8262ffffff16115b15613b9b57604051631c07203f60e01b815260040160405180910390fd5b605c82901b620fffff605c1b166dffffffffffffffffffffffffffff1991821661ffff8a1690811760108a901b630fff000016908117601c8a901b64fff00000001690811760288a901b663fff00000000001690811760368a901b693fffffc000000000000016908117604e8a901b613fff604e1b16908117871797949095179092171717909117909117908a16175b9998505050505050505050565b5f620fffff8262ffffff161115613c6257604051631c07203f60e01b815260040160405180910390fd5b620fffff60701b198316620fffff60701b607084901b1617611478565b5f80613c8a84612cd6565b62ffffff1690508015612f43575f8361ffff16613ca686612a06565b62ffffff1602905060646063828002840201612f3e565b5f8161ffff16613ccc84612c50565b61ffff16026402540be40002905092915050565b5f805f835f03613cf95750600160801b91506106489050565b50825f811215613d09579015905f035b62100000811015613ef857600160801b9250846001600160801b03811115613d32579115915f19045b6001821615613d435792830260801c925b800260801c6002821615613d595792830260801c925b800260801c6004821615613d6f5792830260801c925b800260801c6008821615613d855792830260801c925b800260801c6010821615613d9b5792830260801c925b800260801c6020821615613db15792830260801c925b800260801c6040821615613dc75792830260801c925b8002608090811c90821615613dde5792830260801c925b800260801c610100821615613df55792830260801c925b800260801c610200821615613e0c5792830260801c925b800260801c610400821615613e235792830260801c925b800260801c610800821615613e3a5792830260801c925b800260801c611000821615613e515792830260801c925b800260801c612000821615613e685792830260801c925b800260801c614000821615613e7f5792830260801c925b800260801c618000821615613e965792830260801c925b800260801c62010000821615613eae5792830260801c925b800260801c62020000821615613ec65792830260801c925b800260801c62040000821615613ede5792830260801c925b800260801c62080000821615613ef65792830260801c925b505b825f03613f2257604051631dba598d60e11b815260048101869052602481018590526044016116cf565b81613f2d5782612556565b612556835f19615a66565b5f620fffff8262ffffff161115613f6257604051631c07203f60e01b815260040160405180910390fd5b620fffff60841b198316620fffff60841b608484901b1617611478565b5f80613f8a8361433b565b905064ffffffffff60b01b19841664ffffffffff60b01b60b083901b1617612127565b806001600160801b03811681146130ef57604051632f45db3d60e21b815260040160405180910390fd5b5f81613fe281614782565b670de0b6b3a7640000670de0b6b3a763ffff6001600160801b03868116908616020104949350505050565b5f60ff831684811b9061ffff6101008290031686901c906129fc9087906001901b868585614d0d565b5f805f6140438686614db5565b91509150815f14614058578360ff1682901c92505b801561409857600160ff85161b811061408457604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b5f6001600160801b038316608084901c612556828286614dd2565b5f8061ffff600884901c1660ff80851690811461410e575f82815260028701602052604081205493506140ef8483614e3c565b90505f19811461410c5760089290921b9091179250610648915050565b505b5060ff80821690600883901c908214614184575f818152600188016020526040812054945061413d8584614e3c565b90505f19811461418257600882901b81175f81815260028a0160205260409020549550935061416b85614e4a565b60ff166008855f1c901b1795505050505050610648565b505b60ff818116925082146141f057865493505f6141a08584614e3c565b90505f1981146141ee575f81815260018901602052604090205494509050806141c885614e4a565b60ff16600883901b175f81815260028a0160205260409020549550935061416b85614e4a565b505b505f9695505050505050565b5f8061ffff600884901c1660ff8416801561424c575f828152600287016020526040812054935061422d8483614ee5565b90505f19811461424a5760089290921b9091179250610648915050565b505b5060ff8116600882901c81156142a8575f81815260018801602052604081205494506142788584614ee5565b90505f1981146142a657600882901b81175f81815260028a0160205260409020549550935061416b85614ef3565b505b60ff81169150811561431357865493505f6142c38584614ee5565b90505f198114614311575f81815260018901602052604090205494509050806142eb85614ef3565b60ff16600883901b175f81815260028a0160205260409020549550935061416b85614ef3565b505b5062ffffff9695505050505050565b5f60d882901c610648565b5f6106488260d01c60ff1690565b8064ffffffffff811681146130ef576040516350dbfc8760e11b815260040160405180910390fd5b5f8061436e84612634565b90508062ffffff168362ffffff161161438957828103612127565b90910392915050565b64ffffffffff841662ffffff8481168202918482168102918416026143b6886144a6565b6143c090846157b3565b92506143cb886144ba565b6143d590836157b3565b91506143e0886144ce565b6143ea90826157b3565b9050955095509592505050565b60d082901b60ff60d01b16609084901b67ffffffffffffffff60901b16605086901b67ffffffffffffffff60501b16601088901b69ffffffffffffffff00001661ffff8a161717171760d882901b6001600160d81b031916811761275b565b8161446081614482565b818461ffff5f198601811690811061447a5761447a615713565b015550505050565b8061ffff165f036116925760405163944e113960e01b815260040160405180910390fd5b5f6106488260101c6001600160401b031690565b5f6106488260501c6001600160401b031690565b5f6106488260901c6001600160401b031690565b5f8080806144f1600186615a79565b61ffff1690505f805f8961ffff1690505b8385116145ac575f600161451686886159d6565b901c9050888183089a508b61ffff808d1690811061453657614536615713565b0154935061454384612c5b565b92508964ffffffffff168364ffffffffff16111561456d576145666001826159e9565b94506145a6565b8964ffffffffff168364ffffffffff1610156145955761458e8160016159d6565b95506145a6565b838497509750505050505050614625565b50614502565b8164ffffffffff168964ffffffffff1610156145fb578961ffff165f036145d1578799505b8a61ffff5f198c0181169081106145ea576145ea615713565b015483965096505050505050614625565b8760018b089950828b61ffff808d1690811061461957614619615713565b01549650965050505050505b94509492505050565b5f805f8061463b886144a6565b6001600160401b031690505f614650896144ba565b6001600160401b031690505f6146658a6144ce565b6001600160401b031690508664ffffffffff165f0361468a5791945092509050614778565b5f6146948a6144a6565b6001600160401b031690505f6146a98b6144ba565b6001600160401b031690505f6146be8c6144ce565b6001600160401b031690508a64ffffffffff165f036146e7579197509550935061477892505050565b5f6146fc64ffffffffff808d16908e166159d6565b9050808b64ffffffffff1685028d64ffffffffff168902018161472157614721615742565b049950808b64ffffffffff1684028d64ffffffffff168802018161474757614747615742565b049850808b64ffffffffff1683028d64ffffffffff168702018161476d5761476d615742565b049750505050505050505b9450945094915050565b67016345785d8a0000816001600160801b0316111561169257604051638630bc6b60e01b815260040160405180910390fd5b5f805f6147c18686614db5565b915091506129fc8686868585614d0d565b5f816001036147e45750607f19919050565b815f036148045760405163125946cf60e11b815260040160405180910390fd5b60019190911c905f6001607f1b831061481f57506001614839565b505f1982600160fe1b8161483557614835615742565b0492505b5f614847607f85901c614ef3565b60ff607f1b607f82901b16935060ff16905083811c6001607f1b811461489d576001607e1b5b5f81131561489b57908002607f1c90600160801b8210614893579384019360019190911c905b60011d61486d565b505b50500260011b919050565b5f80806148be8460581c6001600160401b031690565b92506148d38460181c6001600160401b031690565b91505062ffffff831672ffffffffffffffffffffffffffffffffffffff84118061490d5750670de0b6b3a7640000836001600160401b0316115b806149285750670de0b6b3a7640000826001600160401b0316115b1561126757604051637752557f60e11b815260040160405180910390fd5b5f806001600160801b038516608086901c82614963838389614dd2565b9050805f0361497b57505f9350839250614625915050565b5f6149868a896140a1565b9050801580614993575086155b156149af576149a182614f8c565b899550955050505050614625565b6149ba8288836147b4565b95505f6149c887838a614ffa565b905080831115614a65575f6149dd82856159e9565b9050600160801b8110614a1e57608081901c8581116149fc57806149fe565b855b9050614a0a81876159e9565b9550614a1a608082901b836159e9565b9150505b898110614a51575f614a308b83615a66565b9050868111614a3f5780614a41565b865b9050614a4d81886159e9565b9650505b608085901b6001600160801b038716179a50505b7d09745258e83de0d0f4e400fce79aca44773dd596d31a6d336ca2a775b611614a97614a918d8d61228c565b8b6140a1565b1115614ab65760405163a2d7652760e01b815260040160405180910390fd5b50949997985050505050505050565b5f815f03614ad457505f6129fc565b6001600160801b038416608085901c5f80614b05610728614af58d8b61228c565b88614b00818c6159d6565b613173565b91509150836001600160801b0316826001600160801b03161115614b67575f614b4a614b318c8c612ee5565b614b3b84876157f3565b6001600160801b031690615016565b9050614b5f816001600160801b031660801b90565b955050614ba6565b826001600160801b0316816001600160801b03161115614ba6575f614b99614b8f8c8c612ee5565b614b3b85886157f3565b6001600160801b03169550505b505050509695505050505050565b8162ffffff168162ffffff16108015614bd05750608083901b15155b80614bf557508162ffffff168162ffffff16118015614bf557506001600160801b0383115b156108b05760405163227bd87160e21b815262ffffff821660048201526024016116cf565b61ffff600882901c165f818152600284016020526040812054909190600160ff85161b811780821461327d575f838152600287016020526040812082905582900361327157600883901c5f818152600180890160205260408220805460ff88169290921b82179055935083900361326f578654600160ff83161b1787555060019350505050610648565b5f805f5260205f8351602085015f875af19050808015614ce0573d8015614cd35760015f511483169250614cda565b843b151592505b50614cee565b3d15614cee573d5f803e3d5ffd5b50806108b05760405163197138bd60e11b815260040160405180910390fd5b5f815f03614d2c57838381614d2457614d24615742565b049050612556565b838210614d4c576040516313eae71560e01b815260040160405180910390fd5b5f8486880960018619810187165f8190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b5f805f198385098385029250828110838203039150509250929050565b5f8315614e0c575080830281848281614ded57614ded615742565b0414614e0c576040516363f1e01f60e01b815260040160405180910390fd5b82156114785760809290921b91820182811015611478576040516363f1e01f60e01b815260040160405180910390fd5b5f6114788360018401615056565b5f8160801b8015614e5d57608091508092505b8260401b90508015614e70579150604001815b8260201b90508015614e83579150602001815b8260101b90508015614e96579150601001815b8260081b90508015614ea9579150600801815b8260041b90508015614ebc579150600401815b8260021b90508015614ecf579150600201815b508160011b15614edd576001015b60ff03919050565b5f611478835f198401615082565b5f6001600160801b03821115614f0b5750608090811c905b6001600160401b03821115614f2257604091821c91015b63ffffffff821115614f3657602091821c91015b61ffff821115614f4857601091821c91015b60ff821115614f5957600891821c91015b600f821115614f6a57600491821c91015b6003821115614f7b57600291821c91015b60018211156130ef57600101919050565b5f815f03614f9b57505f919050565b5f614fa583614ef3565b600181811c607f1681811b9086901c01811c80860401811c80860401811c80860401811c80860401811c80860401811c80860401901c9384900493925060ff169050828210614ff45782611478565b50919050565b5f6150068484846147b4565b90508180612e9d57612e9d615742565b5f8161502181614782565b6ec097ce7bc90715b34b9f1000000000806001600160801b03868116908616908102670de0b6b3a76400009190910102612f3e565b60ff81169190911c905f8215615079578161507084614e4a565b0160ff16611478565b505f1992915050565b60ff8181031691821b915f9083156150a7578061509e85614ef3565b60ff1603612127565b505f199392505050565b6001600160a01b0381168114611692575f80fd5b5f80604083850312156150d6575f80fd5b82356150e1816150b1565b946020939093013593505050565b5f5b838110156151095781810151838201526020016150f1565b50505f910152565b602081525f825180602084015261512f8160408501602087016150ef565b601f01601f19169190910160400192915050565b803562ffffff811681146130ef575f80fd5b5f60208284031215615165575f80fd5b61147882615143565b5f8083601f84011261517e575f80fd5b5081356001600160401b03811115615194575f80fd5b6020830191508360208260051b8501011115612c49575f80fd5b5f805f805f80608087890312156151c3575f80fd5b86356151ce816150b1565b955060208701356151de816150b1565b945060408701356001600160401b03808211156151f9575f80fd5b6152058a838b0161516e565b9096509450606089013591508082111561521d575f80fd5b5061522a89828a0161516e565b979a9699509497509295939492505050565b5f8083601f84011261524c575f80fd5b5081356001600160401b03811115615262575f80fd5b602083019150836020828501011115612c49575f80fd5b5f805f6040848603121561528b575f80fd5b8335925060208401356001600160401b038111156152a7575f80fd5b6152b38682870161523c565b9497909650939450505050565b5f805f80606085870312156152d3575f80fd5b84356152de816150b1565b935060208501356001600160401b038111156152f8575f80fd5b6153048782880161516e565b9094509250506040850135615318816150b1565b939692955090935050565b5f8151808452602080850194508084015f5b8381101561535157815187529582019590820190600101615335565b509495945050505050565b838152826020820152606060408201525f6125566060830184615323565b803561ffff811681146130ef575f80fd5b5f805f805f805f80610100898b0312156153a3575f80fd5b6153ac8961537a565b97506153ba60208a0161537a565b96506153c860408a0161537a565b95506153d660608a0161537a565b94506153e460808a01615143565b93506153f260a08a0161537a565b925061540060c08a01615143565b915061540e60e08a01615143565b90509295985092959890939650565b5f805f8060408587031215615430575f80fd5b84356001600160401b0380821115615446575f80fd5b6154528883890161516e565b9096509450602087013591508082111561546a575f80fd5b506154778782880161516e565b95989497509550505050565b602081525f6114786020830184615323565b803580151581146130ef575f80fd5b5f80604083850312156154b5575f80fd5b6154be83615495565b915060208301356154ce816150b1565b809150509250929050565b5f805f805f805f60e0888a0312156154ef575f80fd5b6154f88861537a565b96506155066020890161537a565b95506155146040890161537a565b94506155226060890161537a565b935061553060808901615143565b925061553e60a0890161537a565b915061554c60c08901615143565b905092959891949750929550565b5f6020828403121561556a575f80fd5b813564ffffffffff81168114611478575f80fd5b5f806040838503121561558f575f80fd5b61559883615495565b9150612c4660208401615143565b5f80604083850312156155b7575f80fd5b82356001600160801b03811681146155cd575f80fd5b9150612c4660208401615495565b5f602082840312156155eb575f80fd5b5035919050565b5f60208284031215615602575f80fd5b6114788261537a565b5f806040838503121561561c575f80fd5b82356155cd816150b1565b5f8060408385031215615638575f80fd5b82356154be816150b1565b5f805f8060608587031215615656575f80fd5b8435615661816150b1565b93506020850135925060408501356001600160401b03811115615682575f80fd5b6154778782880161523c565b600181811c908216806156a257607f821691505b602082108103614ff457634e487b7160e01b5f52602260045260245ffd5b5f602082840312156156d0575f80fd5b8151611478816150b1565b634e487b7160e01b5f52604160045260245ffd5b604081525f6157016040830185615323565b82810360208401526125568185615323565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215615737575f80fd5b8135611478816150b1565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b64ffffffffff828116828216039080821115612f4357612f43615756565b6001600160401b038181168382160280821691908281146157ab576157ab615756565b505092915050565b6001600160401b03818116838216019080821115612f4357612f43615756565b6001600160801b03818116838216019080821115612f4357612f43615756565b6001600160801b03828116828216039080821115612f4357612f43615756565b8183525f6001600160fb1b0383111561582a575f80fd5b8260051b80836020870137939093016020019392505050565b604081525f615856604083018688615813565b828103602084015261275b818587615813565b604081525f61587c604083018587615813565b82810360208401526129fc8185615323565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b038881168252878116602083015286166040820152606081018590526080810184905260c060a082018190525f90613c2b908301848661588e565b5f82516159098184602087016150ef565b9190910192915050565b5f60208284031215615923575f80fd5b5051919050565b6001600160a01b03888116825287811660208301528616604082015260a0606082018190525f9061595e9083018688615813565b8281036080840152615971818587615813565b9a9950505050505050505050565b838152604060208201525f61255660408301848661588e565b6001600160a01b038681168252851660208201526080604082018190525f906159c49083018587615813565b90508260608301529695505050505050565b8082018082111561064857610648615756565b8181038181111561064857610648615756565b64ffffffffff818116838216019080821115612f4357612f43615756565b5f61ffff80841680615a2e57615a2e615742565b92169190910692915050565b5f82615a4857615a48615742565b600160ff1b82145f1984141615615a6157615a61615756565b500590565b5f82615a7457615a74615742565b500490565b61ffff828116828216039080821115612f4357612f4361575656feff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782a264697066735822122037b662eed80f3a48d821ece4457cb654224b7b9a9899a4e0b3aebfc6e8fc6eb864736f6c634300081400330000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac", + "nonce": "0xe4", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionType": "CREATE", + "contractName": "LBPairUpgradeableBeacon", + "contractAddress": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "function": null, + "arguments": [ + "0x68D00Ff88F3a5987584E313b42Cb11CfeeE4FB39", + "0xCF311E7375083b9513566a47B9f3e93F1FcdCfBF", + "0x8C3cD9182dbef229a36351633f470ea904e105Ac" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xa0420", + "value": "0x0", + "input": "0x608060405234801561000f575f80fd5b5060405161088638038061088683398101604081905261002e91610184565b8282806001600160a01b03811661005f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100688161009c565b50610072826100eb565b5050600380546001600160a01b0319166001600160a01b0392909216919091179055506101c49050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036101205760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461017f575f80fd5b919050565b5f805f60608486031215610196575f80fd5b61019f84610169565b92506101ad60208501610169565b91506101bb60408501610169565b90509250925092565b6106b5806101d15f395ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c8063762c51a11161006e578063762c51a11461010a5780638456cb59146101255780638da5cb5b1461012d578063a3a4d3611461013d578063b187bd261461014e578063f2fde38b14610166575f80fd5b80631af7a41f146100aa5780633659cfe6146100d45780633f4ba83a146100e95780635c60da1b146100f1578063715018a614610102575b5f80fd5b6003546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6100e76100e236600461061c565b610179565b005b6100e761018d565b6001546001600160a01b03166100b7565b6100e7610316565b6100b773e919920ae49d3027566025548f12cdab4e52b59581565b6100e7610329565b5f546001600160a01b03166100b7565b6002546001600160a01b03166100b7565b61015661049d565b60405190151581526020016100cb565b6100e761017436600461061c565b6104e9565b610181610523565b61018a8161054f565b50565b5f546001600160a01b0316331480159061027c5750600354604080516360dc98df60e11b815290516001600160a01b03909216916391d1485491839163c1b931be916004808201926020929091908290030181865afa1580156101f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102169190610649565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401602060405180830381865afa158015610256573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027a9190610660565b155b156102a157604051630a33ca5d60e31b81523360048201526024015b60405180910390fd5b6102a961049d565b6102c657604051631d08162f60e11b815260040160405180910390fd5b6002546001600160a01b03166102ef5760405163a027d3f960e01b815260040160405180910390fd5b600254610304906001600160a01b031661054f565b600280546001600160a01b0319169055565b61031e610523565b6103275f6105cd565b565b5f546001600160a01b031633148015906104185750600354604080516360dc98df60e11b815290516001600160a01b03909216916391d1485491839163c1b931be916004808201926020929091908290030181865afa15801561038e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b29190610649565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401602060405180830381865afa1580156103f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104169190610660565b155b1561043857604051630a33ca5d60e31b8152336004820152602401610298565b61044061049d565b1561045e57604051636d18edcb60e01b815260040160405180910390fd5b600154600280546001600160a01b0319166001600160a01b0390921691909117905561032773e919920ae49d3027566025548f12cdab4e52b59561054f565b5f73e919920ae49d3027566025548f12cdab4e52b5956104c56001546001600160a01b031690565b6001600160a01b031614806104e457506002546001600160a01b031615155b905090565b6104f1610523565b6001600160a01b03811661051a57604051631e4fbdf760e01b81525f6004820152602401610298565b61018a816105cd565b5f546001600160a01b031633146103275760405163118cdaa760e01b8152336004820152602401610298565b806001600160a01b03163b5f036105845760405163211eb15960e21b81526001600160a01b0382166004820152602401610298565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561062c575f80fd5b81356001600160a01b0381168114610642575f80fd5b9392505050565b5f60208284031215610659575f80fd5b5051919050565b5f60208284031215610670575f80fd5b81518015158114610642575f80fdfea26469706673582212204a46ba90d224ec320a149c0f034ca3e9d78580f4b3fc45836ac551904708c80964736f6c6343000814003300000000000000000000000068d00ff88f3a5987584e313b42cb11cfeee4fb39000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf0000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac", + "nonce": "0xe5", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x31c5b", + "value": "0x0", + "input": "0xbe203094000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf0000000000000000000000000000000000000000000000000001c6bf526340000000000000000000000000004f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "nonce": "0xe6", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdf9d4772d6e50d602cea2d8f3023f67c5ef61d10da87c853cde83891a229e208", + "transactionType": "CREATE", + "contractName": "LBRouter", + "contractAddress": "0x838c5172779357e60c28cc6315c8dcfa0f782786", + "function": null, + "arguments": [ + "0x8C3cD9182dbef229a36351633f470ea904e105Ac", + "0x0000000000000000000000000000000000000000", + "0x5c7bEa38BD9d825212a1BCf0cCA4b9C122f6Bd00" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x51fc46", + "value": "0x0", + "input": "0x60e060405234801562000010575f80fd5b5060405162004b7638038062004b76833981016040819052620000339162000128565b6001600160a01b0380841660805282811660a052811660c052620000566200005f565b50505062000179565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000b05760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001105780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b038116811462000110575f80fd5b5f805f606084860312156200013b575f80fd5b8351620001488162000113565b60208501519093506200015b8162000113565b60408501519092506200016e8162000113565b809150509250925092565b60805160a05160c05161493f620002375f395f818161015a015281816102b1015281816105a701528181610681015281816107590152818161089a01528181610c1701528181611315015281816113ac0152818161150d01528181611590015281816118c901528181611b5501528181611e2e0152818161270301528181612a910152612b0b01525f818161045a015261392401525f818161032b01528181610fc40152818161116a0152818161201d0152613226015261493f5ff3fe60806040526004361061014a575f3560e01c806392fe8e70116100b3578063bb558a9f1161006d578063bb558a9f1461044c578063c22159b61461047e578063d0e380f21461049d578063e038e6dc146104bc578063e9361c08146104cf578063f96fe925146104ee575f80fd5b806392fe8e7014610374578063964f987c146103935780639ab6156b146103dc578063a0d376cf146103fb578063a3c7271a1461041a578063b066ea7c14610439575f80fd5b8063659ac74b11610104578063659ac74b1461026c5780636c9c0078146102a35780638129fc1c146102d557806381c2fdfb146102e957806388cc58e41461031d5780638efc2b2c1461034f575f80fd5b80631a24f9a91461019e5780632075ad22146101d05780632a443fae146101f05780633dc8f8ec1461020f5780634b8018701461022e57806362c067671461024d575f80fd5b3661019a57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461019857604051636c8cb79360e01b815260040160405180910390fd5b005b5f80fd5b3480156101a9575f80fd5b506101bd6101b8366004613ea1565b610521565b6040519081526020015b60405180910390f35b6101e36101de366004613f06565b610818565b6040516101c79190613f9b565b3480156101fb575f80fd5b506101bd61020a366004613ea1565b610a6d565b34801561021a575f80fd5b506101e3610229366004613ea1565b610b95565b348015610239575f80fd5b506101bd610248366004613ea1565b610d92565b348015610258575f80fd5b50610198610267366004613fad565b610fc2565b348015610277575f80fd5b5061028b610286366004614015565b61112c565b6040516001600160a01b0390911681526020016101c7565b3480156102ae575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b3480156102e0575f80fd5b506101986111df565b3480156102f4575f80fd5b5061030861030336600461406e565b6112e1565b604080519283526020830191909152016101c7565b348015610328575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b61036261035d366004614121565b611432565b6040516101c796959493929190614158565b34801561037f575f80fd5b506101e361038e366004613ea1565b61167c565b34801561039e575f80fd5b506103b26103ad3660046141c2565b6117bb565b604080516001600160801b03948516815292841660208401529216918101919091526060016101c7565b3480156103e7575f80fd5b506101bd6103f6366004613ea1565b611848565b348015610406575f80fd5b506103b26104153660046141c2565b6119b7565b348015610425575f80fd5b50610362610434366004614121565b6119fa565b6101bd610447366004613f06565b611ad4565b348015610457575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061028b565b348015610489575f80fd5b5061030861049836600461420a565b611c48565b3480156104a8575f80fd5b506101bd6104b73660046142c9565b611d37565b6101bd6104ca366004613f06565b611dad565b3480156104da575f80fd5b506101986104e9366004614347565b61201b565b3480156104f9575f80fd5b5061050d6105083660046143d5565b612137565b60405162ffffff90911681526020016101c7565b5f81804211156105525760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b8451518590158061056a575080515160208201515114155b806105875750604081015151815151610584906001614413565b14155b156105a55760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f015151815181106105e9576105e9614426565b60200260200101516001600160a01b0316146106485760408601518651518151811061061757610617614426565b602002602001015160405163cfec0e0160e01b815260040161054991906001600160a01b0391909116815260200190565b5f61065f875f0151886020015189604001516121a0565b6040516370a0823160e01b81523060048201529091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156106c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ea919061443a565b905061072e88604001515f8151811061070557610705614426565b602002602001015133845f8151811061072057610720614426565b60200260200101518d6122ac565b6107428289602001518a60400151306122cd565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ca919061443a565b6107d49190614451565b945084891115610801576040516313fab00360e21b8152600481018a905260248101869052604401610549565b61080b87866126e2565b5050505095945050505050565b606081804211156108455760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b8451518590158061085d575080515160208201515114155b8061087a5750604081015151815151610877906001614413565b14155b156108985760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f815181106108d8576108d8614426565b60200260200101516001600160a01b0316146109045785604001515f8151811061061757610617614426565b5f61091b875f0151886020015189604001516121a0565b905061093187602001518289604001518b612770565b935034845f8151811061094657610946614426565b602002602001015111156109935734845f8151811061096757610967614426565b602002602001015160405163194ee21960e31b8152600401610549929190918252602082015260400190565b6109cf815f815181106109a8576109a8614426565b6020026020010151855f815181106109c2576109c2614426565b6020026020010151612a84565b5f6109e58289602001518a60400151888b612b36565b905088811015610a12576040516313fab00360e21b8152600481018a905260248101829052604401610549565b845f81518110610a2457610a24614426565b6020026020010151341115610a6157610a6133865f81518110610a4957610a49614426565b602002602001015134610a5c9190614451565b612e0b565b50505050949350505050565b5f8180421115610a995760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610ab1575080515160208201515114155b80610ace5750604081015151815151610acb906001614413565b14155b15610aec5760405163b91b4d4d60e01b815260040160405180910390fd5b5f610b03875f0151886020015189604001516121a0565b9050610b4787604001515f81518110610b1e57610b1e614426565b602002602001015133835f81518110610b3957610b39614426565b60200260200101518c6122ac565b610b5c898289602001518a604001518a612e98565b935083881115610b89576040516313fab00360e21b81526004810189905260248101859052604401610549565b50505095945050505050565b60608180421115610bc25760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610bda575080515160208201515114155b80610bf75750604081015151815151610bf4906001614413565b14155b15610c155760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f01515181518110610c5957610c59614426565b60200260200101516001600160a01b031614610c875760408601518651518151811061061757610617614426565b5f610c9e875f0151886020015189604001516121a0565b9050610cb487602001518289604001518c612770565b935087845f81518110610cc957610cc9614426565b60200260200101511115610cea5787845f8151811061096757610967614426565b610d4587604001515f81518110610d0357610d03614426565b602002602001015133835f81518110610d1e57610d1e614426565b6020026020010151875f81518110610d3857610d38614426565b60200260200101516122ac565b5f610d5b8289602001518a604001518830612b36565b905089811015610d88576040516313fab00360e21b8152600481018b905260248101829052604401610549565b61080b87826126e2565b5f8180421115610dbe5760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580610dd6575080515160208201515114155b80610df35750604081015151815151610df0906001614413565b14155b15610e115760405163b91b4d4d60e01b815260040160405180910390fd5b5f610e28875f0151886020015189604001516121a0565b90505f8760400151825181518110610e4257610e42614426565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192505f918316906370a0823190602401602060405180830381865afa158015610e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eba919061443a565b9050610efe89604001515f81518110610ed557610ed5614426565b602002602001015133855f81518110610ef057610ef0614426565b60200260200101518e6122ac565b610f12838a602001518b604001518b6122cd565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015610f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7d919061443a565b610f879190614451565b9550858a1115610fb4576040516313fab00360e21b8152600481018b905260248101879052604401610549565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190614464565b6001600160a01b0316336001600160a01b03161461107357604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b0383166110a2575f19811461108f5780611091565b475b905061109d8282612e0b565b505050565b5f1981146110b05780611116565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156110f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611116919061443a565b905061109d6001600160a01b03841683836131bc565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303815f875af11580156111b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d69190614464565b95945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112235750825b90505f826001600160401b0316600114801561123e5750303b155b90508115801561124c575080155b1561126a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561129457845460ff60401b1916600160401b1785555b83156112da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f80828042111561130e5760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b5f61133e8c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1661320d565b90505f816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a19190614464565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316149050806113e0579899985b5f806113f0848e8e8e8e306132d8565b9150915082611400578082611403565b81815b80975081985050505050506114198c8786613432565b61142386846126e2565b50509850989650505050505050565b5f8080806060808261146461144a60208a018a61447f565b61145a60408b0160208c0161447f565b8a6040013561320d565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c69190614464565b6001600160a01b03166114dc60208a018a61447f565b6001600160a01b0316146115035760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661153a60208a018a61447f565b6001600160a01b03161480156115535750348860600135145b156115865761157761156b60408a0160208b0161447f565b33838b608001356122ac565b6115818134612a84565b61165d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166115c060408a0160208b0161447f565b6001600160a01b03161480156115d95750348860800135145b156115fa576115776115ee60208a018a61447f565b33838b606001356122ac565b611607602089018961447f565b61161760408a0160208b0161447f565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610549565b6116678882613452565b949d939c50919a509850965090945092505050565b606081804211156116a95760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b845151859015806116c1575080515160208201515114155b806116de57506040810151518151516116db906001614413565b14155b156116fc5760405163b91b4d4d60e01b815260040160405180910390fd5b5f611713875f0151886020015189604001516121a0565b905061172987602001518289604001518c612770565b935087845f8151811061173e5761173e614426565b6020026020010151111561175f5787845f8151811061096757610967614426565b61177887604001515f81518110610d0357610d03614426565b5f61178e8289602001518a60400151888b612b36565b90508981101561080b576040516313fab00360e21b8152600481018b905260248101829052604401610549565b604051630abcd78360e41b81526001600160801b038316600482015281151560248201525f90819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa158015611815573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611839919061449a565b91989097509095509350505050565b5f81804211156118745760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b8451518590158061188c575080515160208201515114155b806118a957506040810151518151516118a6906001614413565b14155b156118c75760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151875f0151518151811061190b5761190b614426565b60200260200101516001600160a01b0316146119395760408601518651518151811061061757610617614426565b5f611950875f0151886020015189604001516121a0565b905061196b87604001515f81518110610b1e57610b1e614426565b611980898289602001518a6040015130612e98565b9350838811156119ad576040516313fab00360e21b81526004810189905260248101859052604401610549565b610b8986856126e2565b604051631cee6cdf60e31b81526001600160801b038316600482015281151560248201525f90819081906001600160a01b0387169063e77366f8906044016117fa565b5f80808060608082611a1261144a60208a018a61447f565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a749190614464565b6001600160a01b0316611a8a60208a018a61447f565b6001600160a01b031614611ab15760405163b33f8ab960e01b815260040160405180910390fd5b611ac16115ee60208a018a61447f565b61165d61156b60408a0160208b0161447f565b5f8180421115611b005760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580611b18575080515160208201515114155b80611b355750604081015151815151611b32906001614413565b14155b15611b535760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f81518110611b9357611b93614426565b60200260200101516001600160a01b031614611bbf5785604001515f8151811061061757610617614426565b5f611bd6875f0151886020015189604001516121a0565b9050611bfb815f81518110611bed57611bed614426565b602002602001015134612a84565b611c10348289602001518a604001518a612e98565b935083881115611c3d576040516313fab00360e21b81526004810189905260248101859052604401610549565b505050949350505050565b5f808280421115611c755760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b5f611c858d8d8d61ffff1661320d565b90505f816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce89190614464565b6001600160a01b03168e6001600160a01b0316141590508015611d09579899985b611d17828c8c8c8c8c6132d8565b90955093508015611d26579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201525f906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da4919061443a565b90505b92915050565b5f8180421115611dd95760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b84515185901580611df1575080515160208201515114155b80611e0e5750604081015151815151611e0b906001614413565b14155b15611e2c5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686604001515f81518110611e6c57611e6c614426565b60200260200101516001600160a01b031614611e985785604001515f8151811061061757610617614426565b5f611eaf875f0151886020015189604001516121a0565b90505f8760400151825181518110611ec957611ec9614426565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192505f918316906370a0823190602401602060405180830381865afa158015611f1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f41919061443a565b9050611f58835f81518110611bed57611bed614426565b611f6c838a602001518b604001518b6122cd565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015611fb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd7919061443a565b611fe19190614451565b9550858a111561200e576040516313fab00360e21b8152600481018b905260248101879052604401610549565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209b9190614464565b6001600160a01b0316336001600160a01b0316146120cc57604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc9061210290309089908990899089908990600401614509565b5f604051808303815f87803b158015612119575f80fd5b505af115801561212b573d5f803e3d5ffd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290525f906001600160a01b0384169063f5e2932990602401602060405180830381865afa15801561217c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da49190614548565b606083516001600160401b038111156121bb576121bb613c35565b6040519080825280602002602001820160405280156121e4578160200160208202803683370190505b5090505f80835f815181106121fb576121fb614426565b602002602001015190505f5b83518110156122a25781925084816001018151811061222857612228614426565b60200260200101519150612270838389848151811061224957612249614426565b602002602001015189858151811061226357612263614426565b60200260200101516138e4565b84828151811061228257612282614426565b6001600160a01b0390921660209283029190910190910152600101612207565b5050509392505050565b80156122c7576122c76001600160a01b0385168484846139d4565b50505050565b5f805f805f865f815181106122e4576122e4614426565b602002602001015190505f5b895181101561212b5789818151811061230b5761230b614426565b6020026020010151925088818151811061232757612327614426565b6020026020010151945081955087816001018151811061234957612349614426565b60200260200101519150895181600101146123805789816001018151811061237357612373614426565b6020026020010151612382565b865b93505f85600181111561239757612397614563565b036125f6575f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123fe919061458d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b03161015612511576040516370a0823160e01b81526001600160a01b0386811660048301525f9184918b16906370a0823190602401602060405180830381865afa158015612477573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061249b919061443a565b0390505f6124aa828585613a30565b60405163022c0d9f60e01b81529091506001600160a01b0388169063022c0d9f906124dd905f9085908d906004016145ce565b5f604051808303815f87803b1580156124f4575f80fd5b505af1158015612506573d5f803e3d5ffd5b5050505050506125ef565b6040516370a0823160e01b81526001600160a01b0386811660048301525f9183918b16906370a0823190602401602060405180830381865afa158015612559573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061257d919061443a565b0390505f61258c828486613a30565b60405163022c0d9f60e01b81529091506001600160a01b0388169063022c0d9f906125bf9084905f908d906004016145ce565b5f604051808303815f87803b1580156125d6575f80fd5b505af11580156125e8573d5f803e3d5ffd5b5050505050505b50506126da565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612641573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126659190614464565b60405160e083901b6001600160e01b03191681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303815f875af11580156126b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d8919061443a565b505b6001016122f0565b805f036126ed575050565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b15801561274c575f80fd5b505af115801561275e573d5f803e3d5ffd5b5050505061276c8282612e0b565b5050565b606082516001600160401b0381111561278b5761278b613c35565b6040519080825280602002602001820160405280156127b4578160200160208202803683370190505b50905081818551815181106127cb576127cb614426565b602090810291909101015283515b8015612a7b575f846127ec600184614451565b815181106127fc576127fc614426565b602002602001015190505f876001846128159190614451565b8151811061282557612825614426565b602002602001015190505f8760018561283e9190614451565b8151811061284e5761284e614426565b602002602001015190505f600181111561286a5761286a614563565b82600181111561287c5761287c614563565b0361299a575f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e3919061458d565b506001600160701b031691506001600160701b0316915088868151811061290c5761290c614426565b60200260200101516001600160a01b0316856001600160a01b0316111561292f57905b5f87878151811061294257612942614426565b60200260200101519050612961838383613ac59092919063ffffffff16565b6001600160801b03168861297660018a614451565b8151811061298657612986614426565b602002602001018181525050505050612a65565b612a31818686815181106129b0576129b0614426565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a229190614464565b6001600160a01b0316146117bb565b50506001600160801b031685612a48600187614451565b81518110612a5857612a58614426565b6020026020010181815250505b5050508080612a73906145fb565b9150506127d9565b50949350505050565b805f03612a8f575050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612ae8575f80fd5b505af1158015612afa573d5f803e3d5ffd5b5061276c9350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150849050836131bc565b5f805f805f80885f81518110612b4e57612b4e614426565b602002602001015190505f5b8b51811015612dfc578b8181518110612b7557612b75614426565b602002602001015193508a8181518110612b9157612b91614426565b60200260200101519250819550898160010181518110612bb357612bb3614426565b602002602001015191508b518160010114612bea578b8160010181518110612bdd57612bdd614426565b6020026020010151612bec565b875b94505f836001811115612c0157612c01614563565b03612cd157888160010181518110612c1b57612c1b614426565b60200260200101519650816001600160a01b0316866001600160a01b03161015612ca15760405163022c0d9f60e01b81526001600160a01b0385169063022c0d9f90612c6f905f908b908a906004016145ce565b5f604051808303815f87803b158015612c86575f80fd5b505af1158015612c98573d5f803e3d5ffd5b50505050612df4565b60405163022c0d9f60e01b81526001600160a01b0385169063022c0d9f90612c6f908a905f908a906004016145ce565b5f846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d329190614464565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292505f918291612dc8918916906353c059a0906044015b6020604051808303815f875af1158015612d90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612db4919061443a565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b031691508215612dec57809950612df0565b8199505b5050505b600101612b5a565b50505050505095945050505050565b805f03612e16575050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e5f576040519150601f19603f3d011682016040523d82523d5f602084013e612e64565b606091505b505090508061109d5760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610549565b5f805f805f80875f81518110612eb057612eb0614426565b602002602001015190508a95505f5b8a51811015612dfc578a8181518110612eda57612eda614426565b60200260200101519250898181518110612ef657612ef6614426565b60200260200101519450819550888160010181518110612f1857612f18614426565b602002602001015191508a518160010114612f4f578a8160010181518110612f4257612f42614426565b6020026020010151612f51565b875b93505f856001811115612f6657612f66614563565b036130e1575f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612fa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fcd919061458d565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b0316101561306e57613009898383613a30565b60405163022c0d9f60e01b81529099506001600160a01b0386169063022c0d9f9061303c905f908d908b906004016145ce565b5f604051808303815f87803b158015613053575f80fd5b505af1158015613065573d5f803e3d5ffd5b505050506130da565b613079898284613a30565b60405163022c0d9f60e01b81529099506001600160a01b0386169063022c0d9f906130ac908c905f908b906004016145ce565b5f604051808303815f87803b1580156130c3575f80fd5b505af11580156130d5573d5f803e3d5ffd5b505050505b50506131b4565b5f836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561311e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131429190614464565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292505f918291613188918816906353c059a090604401612d74565b6001600160801b031691506001600160801b0316915082156131ac578099506131b0565b8199505b5050505b600101612ebf565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526122c78482613b60565b60405163704037bd60e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063704037bd9061325f90879087908790600401614610565b608060405180830381865afa15801561327a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329e9190614634565b6020015190506001600160a01b0381166132d157838383604051636b2471d160e11b815260040161054993929190614610565b9392505050565b5f805f886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b815260040161330d94939291906146b6565b5f604051808303815f875af1158015613328573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261334f91908101906146f3565b90505f5b81518110156133e25761338582828151811061337157613371614426565b60200260200101516001600160801b031690565b613398906001600160801b031685614413565b93506133bd8282815181106133af576133af614426565b602002602001015160801c90565b6133d0906001600160801b031684614413565b92506133db81614773565b9050613353565b50878310806133f057508682105b15613426576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610549565b50965096945050505050565b805f0361343e57505050565b61109d6001600160a01b03841683836131bc565b5f805f80606080876101c00135804211156134895760405163dae7ca7d60e01b815260048101829052426024820152604401610549565b6134976101408a018a61478b565b90506134a76101208b018b61478b565b90501415806134d457506134bf6101608a018a61478b565b90506134cf6101208b018b61478b565b905014155b156134f25760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a0135118061350e575062ffffff6101008a0135115b1561353d5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610549565b5f61354c6101208b018b61478b565b90506001600160401b0381111561356557613565613c35565b60405190808252806020026020018201604052801561358e578160200160208202803683370190505b50905061359f6101208b018b61478b565b90506001600160401b038111156135b8576135b8613c35565b6040519080825280602002602001820160405280156135e1578160200160208202803683370190505b5093505f896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613621573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136459190614548565b62ffffff169050808b61010001358c60e0013501108061366f57508a60e001358b61010001358201105b156136a557604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610549565b5f5b82518110156137a5575f6136bf6101208e018e61478b565b838181106136cf576136cf614426565b90506020020135830190505f8112806136ea575062ffffff81115b1561370b576040516370a82e6160e11b815260048101829052602401610549565b8087838151811061371e5761371e614426565b602090810291909101015261377f61373a6101408f018f61478b565b8481811061374a5761374a614426565b905060200201358e806101600190613762919061478b565b8581811061377257613772614426565b9050602002013583613bc9565b84838151811061379157613791614426565b6020908102919091010152506001016136a7565b50505f808a6001600160a01b031663383d15c58d6101800160208101906137cc919061447f565b858f6101a00160208101906137e1919061447f565b6040518463ffffffff1660e01b81526004016137ff939291906147d0565b5f604051808303815f875af115801561381a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526138419190810190614834565b965090925090505f6138538383613bfb565b6001600160801b0381169b50608081901c9a50905060a08d01358b108061387d57508c60c001358a105b156138b9576040516318ccfb7760e11b815260a08e01356004820152602481018c905260c08e01356044820152606481018b9052608401610549565b6001600160801b0382169850608082901c6001600160801b0316975050505050509295509295509295565b5f808260018111156138f8576138f8614563565b036139c15760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015613969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398d9190614464565b90506001600160a01b0381166139bc57848484604051636b2471d160e11b815260040161054993929190614610565b6139cc565b6111d685858561320d565b949350505050565b5f6323b872dd60e01b8484846040516024016139f293929190614610565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290506112da8582613b60565b5f835f03613a515760405163b937356b60e01b815260040160405180910390fd5b821580613a5c575081155b15613a7a57604051637b03555560e01b815260040160405180910390fd5b5f613a87856103e56148d3565b90505f613a9484836148d3565b90505f82613aa4876103e86148d3565b613aae9190614413565b9050613aba81836148ea565b979650505050505050565b5f835f03613ae65760405163b937356b60e01b815260040160405180910390fd5b821580613af1575081155b15613b0f57604051637b03555560e01b815260040160405180910390fd5b5f613b1a85856148d3565b613b26906103e86148d3565b90505f613b338685614451565b613b3f906103e56148d3565b9050613b4b81836148ea565b613b56906001614413565b9695505050505050565b5f805f5260205f8351602085015f875af19050808015613b9c573d8015613b8f5760015f511483169250613b96565b843b151592505b50613baa565b3d15613baa573d5f803e3d5ffd5b508061109d5760405163197138bd60e11b815260040160405180910390fd5b601882901b6affffffffffffffff00000016605884901b67ffffffffffffffff60581b161762ffffff821681176139cc565b80820382811180613c1757506001600160801b03808416908216115b15611da75760405163e599af5560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715613c6b57613c6b613c35565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613c9957613c99613c35565b604052919050565b5f6001600160401b03821115613cb957613cb9613c35565b5060051b60200190565b5f82601f830112613cd2575f80fd5b81356020613ce7613ce283613ca1565b613c71565b82815260059290921b84018101918181019086841115613d05575f80fd5b8286015b84811015613d205780358352918301918301613d09565b509695505050505050565b6001600160a01b0381168114613d3f575f80fd5b50565b8035613d4d81613d2b565b919050565b5f82601f830112613d61575f80fd5b81356020613d71613ce283613ca1565b82815260059290921b84018101918181019086841115613d8f575f80fd5b8286015b84811015613d20578035613da681613d2b565b8352918301918301613d93565b5f60608284031215613dc3575f80fd5b613dcb613c49565b905081356001600160401b0380821115613de3575f80fd5b613def85838601613cc3565b8352602091508184013581811115613e05575f80fd5b8401601f81018613613e15575f80fd5b8035613e23613ce282613ca1565b81815260059190911b82018401908481019088831115613e41575f80fd5b928501925b82841015613e6c57833560028110613e5d575f8081fd5b82529285019290850190613e46565b8086880152505050506040840135915080821115613e88575f80fd5b50613e9584828501613d52565b60408301525092915050565b5f805f805f60a08688031215613eb5575f80fd5b853594506020860135935060408601356001600160401b03811115613ed8575f80fd5b613ee488828901613db3565b9350506060860135613ef581613d2b565b949793965091946080013592915050565b5f805f8060808587031215613f19575f80fd5b8435935060208501356001600160401b03811115613f35575f80fd5b613f4187828801613db3565b9350506040850135613f5281613d2b565b9396929550929360600135925050565b5f8151808452602080850194508084015f5b83811015613f9057815187529582019590820190600101613f74565b509495945050505050565b602081525f611da46020830184613f62565b5f805f60608486031215613fbf575f80fd5b8335613fca81613d2b565b92506020840135613fda81613d2b565b929592945050506040919091013590565b62ffffff81168114613d3f575f80fd5b61ffff81168114613d3f575f80fd5b8035613d4d81613ffb565b5f805f8060808587031215614028575f80fd5b843561403381613d2b565b9350602085013561404381613d2b565b9250604085013561405381613feb565b9150606085013561406381613ffb565b939692955090935050565b5f805f805f805f80610100898b031215614086575f80fd5b883561409181613d2b565b975060208901356140a181613ffb565b9650604089013595506060890135945060808901356001600160401b03808211156140ca575f80fd5b6140d68c838d01613cc3565b955060a08b01359150808211156140eb575f80fd5b506140f88b828c01613cc3565b93505060c089013561410981613d2b565b8092505060e089013590509295985092959890939650565b5f60208284031215614131575f80fd5b81356001600160401b03811115614146575f80fd5b82016101e081850312156132d1575f80fd5b86815285602082015284604082015283606082015260c060808201525f61418260c0830185613f62565b82810360a08401526141948185613f62565b9998505050505050505050565b6001600160801b0381168114613d3f575f80fd5b8015158114613d3f575f80fd5b5f805f606084860312156141d4575f80fd5b83356141df81613d2b565b925060208401356141ef816141a1565b915060408401356141ff816141b5565b809150509250925092565b5f805f805f805f805f6101208a8c031215614223575f80fd5b893561422e81613d2b565b985060208a013561423e81613d2b565b975061424c60408b0161400a565b965060608a0135955060808a0135945060a08a01356001600160401b0380821115614275575f80fd5b6142818d838e01613cc3565b955060c08c0135915080821115614296575f80fd5b506142a38c828d01613cc3565b9350506142b260e08b01613d42565b91506101008a013590509295985092959850929598565b5f80604083850312156142da575f80fd5b82356142e581613d2b565b915060208301356142f581613feb565b809150509250929050565b5f8083601f840112614310575f80fd5b5081356001600160401b03811115614326575f80fd5b6020830191508360208260051b8501011115614340575f80fd5b9250929050565b5f805f805f806080878903121561435c575f80fd5b863561436781613d2b565b9550602087013561437781613d2b565b945060408701356001600160401b0380821115614392575f80fd5b61439e8a838b01614300565b909650945060608901359150808211156143b6575f80fd5b506143c389828a01614300565b979a9699509497509295939492505050565b5f80604083850312156143e6575f80fd5b82356143f181613d2b565b946020939093013593505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611da757611da76143ff565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561444a575f80fd5b5051919050565b81810381811115611da757611da76143ff565b5f60208284031215614474575f80fd5b81516132d181613d2b565b5f6020828403121561448f575f80fd5b81356132d181613d2b565b5f805f606084860312156144ac575f80fd5b83516144b7816141a1565b60208501519093506144c8816141a1565b60408501519092506141ff816141a1565b8183525f6001600160fb1b038311156144f0575f80fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b038781168252861660208201526080604082018190525f9061453590830186886144d9565b82810360608401526141948185876144d9565b5f60208284031215614558575f80fd5b81516132d181613feb565b634e487b7160e01b5f52602160045260245ffd5b80516001600160701b0381168114613d4d575f80fd5b5f805f6060848603121561459f575f80fd5b6145a884614577565b92506145b660208501614577565b9150604084015163ffffffff811681146141ff575f80fd5b92835260208301919091526001600160a01b031660408201526080606082018190525f9082015260a00190565b5f81614609576146096143ff565b505f190190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60808284031215614644575f80fd5b604051608081018181106001600160401b038211171561466657614666613c35565b604052825161467481613ffb565b8152602083015161468481613d2b565b60208201526040830151614697816141b5565b604082015260608301516146aa816141b5565b60608201529392505050565b6001600160a01b038581168252841660208201526080604082018190525f906146e190830185613f62565b8281036060840152613aba8185613f62565b5f6020808385031215614704575f80fd5b82516001600160401b03811115614719575f80fd5b8301601f81018513614729575f80fd5b8051614737613ce282613ca1565b81815260059190911b82018301908381019087831115614755575f80fd5b928401925b82841015613aba5783518252928401929084019061475a565b5f60018201614784576147846143ff565b5060010190565b5f808335601e198436030181126147a0575f80fd5b8301803591506001600160401b038211156147b9575f80fd5b6020019150600581901b3603821315614340575f80fd5b6001600160a01b0384811682526060602080840182905285519184018290525f92868201929091906080860190855b8181101561481b578551835294830194918301916001016147ff565b5050809450505080851660408501525050949350505050565b5f805f60608486031215614846575f80fd5b83519250602080850151925060408501516001600160401b0381111561486a575f80fd5b8501601f8101871361487a575f80fd5b8051614888613ce282613ca1565b81815260059190911b820183019083810190898311156148a6575f80fd5b928401925b828410156148c4578351825292840192908401906148ab565b80955050505050509250925092565b8082028115828204841417611da757611da76143ff565b5f8261490457634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212206f438991d849b5c02d55debd6c2e995dedd38bb22485864cf69eedef3463c16d64736f6c634300081400330000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00", + "nonce": "0xe7", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "function": null, + "arguments": [ + "0x838c5172779357E60C28cc6315c8DCFa0F782786", + "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "0x" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0xce718", + "value": "0x0", + "input": "0x60a060405260405162000e5038038062000e508339810160408190526200002691620003bc565b828162000034828262000099565b50508160405162000045906200035a565b6001600160a01b039091168152602001604051809103905ff0801580156200006f573d5f803e3d5ffd5b506001600160a01b0316608052620000906200008a60805190565b620000fe565b505050620004b3565b620000a4826200016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115620000f057620000eb8282620001ee565b505050565b620000fa62000267565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200013f5f8051602062000e30833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16200016c8162000289565b50565b806001600160a01b03163b5f03620001aa57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516200020c919062000496565b5f60405180830381855af49150503d805f811462000246576040519150601f19603f3d011682016040523d82523d5f602084013e6200024b565b606091505b5090925090506200025e858383620002ca565b95945050505050565b3415620002875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002b457604051633173bdd160e11b81525f6004820152602401620001a1565b805f8051602062000e30833981519152620001cd565b606082620002e357620002dd8262000330565b62000329565b8151158015620002fb57506001600160a01b0384163b155b156200032657604051639996b31560e01b81526001600160a01b0385166004820152602401620001a1565b50805b9392505050565b805115620003415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104fc806200093483390190565b80516001600160a01b03811681146200037f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620003b45781810151838201526020016200039a565b50505f910152565b5f805f60608486031215620003cf575f80fd5b620003da8462000368565b9250620003ea6020850162000368565b60408501519092506001600160401b038082111562000407575f80fd5b818601915086601f8301126200041b575f80fd5b81518181111562000430576200043062000384565b604051601f8201601f19908116603f011681019083821181831017156200045b576200045b62000384565b8160405282815289602084870101111562000474575f80fd5b6200048783602083016020880162000398565b80955050505050509250925092565b5f8251620004a981846020870162000398565b9190910192915050565b608051610469620004cb5f395f601001526104695ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516102069190610407565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff80821115610381575f80fd5b818501915085601f830112610394575f80fd5b8135818111156103a6576103a661032a565b604051601f8201601f19908116603f011681019083821181831017156103ce576103ce61032a565b816040528281528860208487010111156103e6575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f82515f5b81811015610426576020818601810151858301520161040c565b505f92019182525091905056fea2646970667358221220646db6b703a46dbf43b5303e88a0e75f2165f627cdec6f33f692542261be647a64736f6c63430008140033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000838c5172779357e60c28cc6315c8dcfa0f782786000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xe8", + "chainId": "0xc576d" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x849502fc0c4bbdba68432a18ac26f10a81690cf8", + "initCode": "0x608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212206deafae6c04642359fe9e3e220350c20dfcc25467957cb4a699e2aac0a47cc2e64736f6c63430008140033000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0x5de5d529c09153953883f6c6a8221873dff9beadf5c7d9389c33d3bf237d7da4", + "transactionType": "CREATE", + "contractName": "LBQuoter", + "contractAddress": "0xa87bed23e26b2bb7725173168d983ee4ec0e2b64", + "function": null, + "arguments": [ + "0x0000000000000000000000000000000000000000", + "0x8C3cD9182dbef229a36351633f470ea904e105Ac", + "0xE1EA7bCD93232c66DE8D4D1a5e22da53803e7A69" + ], + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "gas": "0x2f3bdb", + "value": "0x0", + "input": "0x60e060405234801562000010575f80fd5b5060405162002b2d38038062002b2d83398101604081905262000033916200006d565b6001600160a01b0392831660805290821660a0521660c052620000b4565b80516001600160a01b038116811462000068575f80fd5b919050565b5f805f6060848603121562000080575f80fd5b6200008b8462000051565b92506200009b6020850162000051565b9150620000ab6040850162000051565b90509250925092565b60805160a05160c051612a0b620001225f395f818160ba01528181610636015261138701525f818160f3015281816103e3015281816104130152818161113e015261117601525f8181605b01528181610a5801528181610a88015281816117f4015261182c0152612a0b5ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806307da8f57146100595780630f902a401461009857806333141d3e146100b857806359214226146100de578063ca56fc72146100f1575b5f80fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100ab6100a63660046123c7565b610117565b60405161008f9190612557565b7f000000000000000000000000000000000000000000000000000000000000000061007b565b6100ab6100ec3660046123c7565b610e7c565b7f000000000000000000000000000000000000000000000000000000000000000061007b565b6101576040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561017957604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250938552506101ba91506001905085612637565b9050806001600160401b038111156101d4576101d461264a565b6040519080825280602002602001820160405280156101fd578160200160208202803683370190505b506020830152806001600160401b0381111561021b5761021b61264a565b604051908082528060200260200182016040528015610244578160200160208202803683370190505b506040830152806001600160401b038111156102625761026261264a565b60405190808252806020026020018201604052801561028b578160200160208202803683370190505b506060830152806001600160401b038111156102a9576102a961264a565b6040519080825280602002602001820160405280156102d2578160200160208202803683370190505b5060c0830152836001600160401b038111156102f0576102f061264a565b604051908082528060200260200182016040528015610319578160200160208202803683370190505b506080830152836001600160401b038111156103375761033761264a565b604051908082528060200260200182016040528015610360578160200160208202803683370190505b508260a001819052508282608001515f815181106103805761038061265e565b60200260200101906001600160801b031690816001600160801b031681525050828260a001515f815181106103b7576103b761265e565b60200260200101906001600160801b031690816001600160801b0316815250505f5b81811015610e73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610a56575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106104525761045261265e565b90506020020160208101906104679190612686565b89896104748760016126a8565b8181106104835761048361265e565b90506020020160208101906104989190612686565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f60405180830381865afa1580156104e0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105079190810190612722565b90505f815111801561053e57505f8460800151838151811061052b5761052b61265e565b60200260200101516001600160801b0316115b15610a54575f5b8151811015610a52578181815181106105605761056061265e565b602002602001015160600151610a40575f888861057e8660016126a8565b81811061058d5761058d61265e565b90506020020160208101906105a29190612686565b6001600160a01b03168383815181106105bd576105bd61265e565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610604573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106289190612819565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf8484815181106106755761067561265e565b602002602001015160200151886080015187815181106106975761069761265e565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015610718575060408051601f3d908101601f1916820190925261071591810190612834565b60015b15610a3e576001600160801b03831615801561076c5750608089015161073f8860016126a8565b8151811061074f5761074f61265e565b60200260200101516001600160801b0316826001600160801b0316115b15610a3a57608089015182906107838960016126a8565b815181106107935761079361265e565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106107c5576107c561265e565b602002602001015160200151896020015188815181106107e7576107e761265e565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106108195761081961265e565b60200260200101515f015161ffff168960400151888151811061083e5761083e61265e565b6020026020010181815250506001896060015188815181106108625761086261265e565b6020026020010190600181111561087b5761087b6124b5565b9081600181111561088e5761088e6124b5565b815250505f8686815181106108a5576108a561265e565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109109190612873565b905061096c828b60a001518a8151811061092c5761092c61265e565b602002602001015161093e9190612895565b6001600160801b0316828c604001518b8151811061095e5761095e61265e565b602002602001015188611c70565b60a08b015161097c8a60016126a8565b8151811061098c5761098c61265e565b60200260200101906001600160801b031690816001600160801b031681525050610a028a6080015189815181106109c5576109c561265e565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a76400006109f391906128bc565b6109fd91906128e7565b611cbd565b8a60c001518981518110610a1857610a1861265e565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80610a4a81612906565b915050610545565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e61575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a43905888885818110610ac757610ac761265e565b9050602002016020810190610adc9190612686565b8989610ae98760016126a8565b818110610af857610af861265e565b9050602002016020810190610b0d9190612686565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7a9190612819565b90506001600160a01b03811615801590610bb957505f84608001518381518110610ba657610ba661265e565b60200260200101516001600160801b0316115b15610e5f575f80610c21838a8a87818110610bd657610bd661265e565b9050602002016020810190610beb9190612686565b8b8b610bf88960016126a8565b818110610c0757610c0761265e565b9050602002016020810190610c1c9190612686565b611cec565b915091505f82118015610c3357505f81115b15610e5c575f610c6a87608001518681518110610c5257610c5261265e565b60200260200101516001600160801b03168484611da7565b6080880151909150610c7d8660016126a8565b81518110610c8d57610c8d61265e565b60200260200101516001600160801b0316811115610e5a57610cae81611cbd565b6080880151610cbe8760016126a8565b81518110610cce57610cce61265e565b60200260200101906001600160801b031690816001600160801b0316815250508387602001518681518110610d0557610d0561265e565b60200260200101906001600160a01b031690816001600160a01b031681525050610d716109fd8860a001518781518110610d4157610d4161265e565b60200260200101516103e5610d56919061291e565b6001600160801b0316610d6b866103e86128bc565b85611e3c565b60a0880151610d818760016126a8565b81518110610d9157610d9161265e565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008760c001518681518110610dcf57610dcf61265e565b60200260200101906001600160801b031690816001600160801b0316815250505f87606001518681518110610e0657610e0661265e565b60200260200101906001811115610e1f57610e1f6124b5565b90816001811115610e3257610e326124b5565b815250505f87604001518681518110610e4d57610e4d61265e565b6020026020010181815250505b505b50505b505b80610e6b81612906565b9150506103d9565b50509392505050565b610ebc6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6002831015610ede57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093855250610f1f91506001905085612637565b9050806001600160401b03811115610f3957610f3961264a565b604051908082528060200260200182016040528015610f62578160200160208202803683370190505b506020830152806001600160401b03811115610f8057610f8061264a565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b506040830152806001600160401b03811115610fc757610fc761264a565b604051908082528060200260200182016040528015610ff0578160200160208202803683370190505b506060830152836001600160401b0381111561100e5761100e61264a565b604051908082528060200260200182016040528015611037578160200160208202803683370190505b506080830152836001600160401b038111156110555761105561264a565b60405190808252806020026020018201604052801561107e578160200160208202803683370190505b5060a0830152806001600160401b0381111561109c5761109c61264a565b6040519080825280602002602001820160405280156110c5578160200160208202803683370190505b508260c0018190525082826080015182815181106110e5576110e561265e565b60200260200101906001600160801b031690816001600160801b031681525050828260a00151828151811061111c5761111c61265e565b6001600160801b0390921660209283029190910190910152805b8015610e73577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316156117f2575f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886111a8600187612637565b8181106111b7576111b761265e565b90506020020160208101906111cc9190612686565b8989868181106111de576111de61265e565b90506020020160208101906111f39190612686565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f60405180830381865afa15801561123b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112629190810190612722565b90505f815111801561129957505f846080015183815181106112865761128661265e565b60200260200101516001600160801b0316115b156117f0575f5b81518110156117ee578181815181106112bb576112bb61265e565b6020026020010151606001516117dc575f8888858181106112de576112de61265e565b90506020020160208101906112f39190612686565b6001600160a01b031683838151811061130e5761130e61265e565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611355573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113799190612819565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c8484815181106113c6576113c661265e565b602002602001015160200151886080015187815181106113e8576113e861265e565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa925050508015611469575060408051601f3d908101601f1916820190925261146691810190612834565b60015b156117da576001600160801b03821615801561148d57506001600160801b03831615155b801561150a575060808901516114a4600189612637565b815181106114b4576114b461265e565b60200260200101516001600160801b0316836001600160801b0316108061150a575060808901516114e6600189612637565b815181106114f6576114f661265e565b60200260200101516001600160801b03165f145b156117d6576080890151839061152160018a612637565b815181106115315761153161265e565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106115635761156361265e565b60200260200101516020015189602001516001896115819190612637565b815181106115915761159161265e565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106115c3576115c361265e565b60200260200101515f015161ffff1689604001516001896115e49190612637565b815181106115f4576115f461265e565b60209081029190910101526060890151600190611611828a612637565b815181106116215761162161265e565b6020026020010190600181111561163a5761163a6124b5565b9081600181111561164d5761164d6124b5565b815250505f8686815181106116645761166461265e565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116cf9190612873565b90508161172e8b60a001518a815181106116eb576116eb61265e565b60200260200101516001600160801b0316838d6040015160018d61170f9190612637565b8151811061171f5761171f61265e565b60200260200101518915611c70565b6117389190612949565b60a08b015161174860018b612637565b815181106117585761175861265e565b6001600160801b039092166020928302919091019091015260808a01516117949061178460018b612637565b815181106109c5576109c561265e565b60c08b01516117a460018b612637565b815181106117b4576117b461265e565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b806117e681612906565b9150506112a0565b505b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611c5e575f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a43905888861185e600187612637565b81811061186d5761186d61265e565b90506020020160208101906118829190612686565b8989868181106118945761189461265e565b90506020020160208101906118a99190612686565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156118f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119169190612819565b90506001600160a01b0381161580159061195557505f846080015183815181106119425761194261265e565b60200260200101516001600160801b0316115b15611c5c575f806119a3838a8a61196d600189612637565b81811061197c5761197c61265e565b90506020020160208101906119919190612686565b8b8b88818110610c0757610c0761265e565b915091505f821180156119db5750856080015184815181106119c7576119c761265e565b60200260200101516001600160801b031681115b15611c59575f611a12876080015186815181106119fa576119fa61265e565b60200260200101516001600160801b03168484611e9b565b6080880151909150611a25600187612637565b81518110611a3557611a3561265e565b60200260200101516001600160801b0316811080611a8257506080870151611a5e600187612637565b81518110611a6e57611a6e61265e565b60200260200101516001600160801b03165f145b15611c5757611a9081611cbd565b6080880151611aa0600188612637565b81518110611ab057611ab061265e565b6001600160801b039092166020928302919091018201528701518490611ad7600188612637565b81518110611ae757611ae761265e565b60200260200101906001600160a01b031690816001600160a01b031681525050611b5e611b538860a001518781518110611b2357611b2361265e565b60200260200101516103e8611b38919061291e565b6001600160801b0316611b4d856103e56128bc565b86611e3c565b6109fd9060016126a8565b60a0880151611b6e600188612637565b81518110611b7e57611b7e61265e565b6001600160801b039092166020928302919091019091015260c0870151660aa87bee53800090611baf600188612637565b81518110611bbf57611bbf61265e565b6001600160801b039092166020928302919091019091015260608701515f90611be9600188612637565b81518110611bf957611bf961265e565b60200260200101906001811115611c1257611c126124b5565b90816001811115611c2557611c256124b5565b90525060408701515f90611c3a600188612637565b81518110611c4a57611c4a61265e565b6020026020010181815250505b505b50505b505b80611c6881612969565b915050611136565b5f8115611c9857611c916109fd866080611c8a8888611f36565b9190611f6c565b9050611cb5565b611cb26109fd6080611caa8787611f36565b889190611fd6565b90505b949350505050565b806001600160801b0381168114611ce757604051632f45db3d60e21b815260040160405180910390fd5b919050565b5f805f611cf98585611fff565b5090505f80876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5e9190612994565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614611d95578082611d98565b81815b90999098509650505050505050565b5f835f03611dc85760405163b937356b60e01b815260040160405180910390fd5b821580611dd3575081155b15611df157604051637b03555560e01b815260040160405180910390fd5b5f611dfe856103e56128bc565b90505f611e0b84836128bc565b90505f82611e1b876103e86128bc565b611e2591906126a8565b9050611e3181836128e7565b979650505050505050565b5f835f03611e5d5760405163b937356b60e01b815260040160405180910390fd5b821580611e68575081155b15611e8657604051637b03555560e01b815260040160405180910390fd5b82611e9183866128bc565b611cb591906128e7565b5f835f03611ebc5760405163b937356b60e01b815260040160405180910390fd5b821580611ec7575081155b15611ee557604051637b03555560e01b815260040160405180910390fd5b5f611ef085856128bc565b611efc906103e86128bc565b90505f611f098685612637565b611f15906103e56128bc565b9050611f2181836128e7565b611f2c9060016126a8565b9695505050505050565b5f61271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff1901611f638282612089565b95945050505050565b5f805f611f7986866122eb565b91509150815f14611f8e578360ff1682901c92505b8015610e7357600160ff85161b8110611fba57604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b5f60ff831684811b9061ffff6101008290031686901c90611f2c9087906001901b868585612308565b5f80826001600160a01b0316846001600160a01b0316036120335760405163827524a360e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b031610612053578284612056565b83835b90925090506001600160a01b03821661208257604051632268279160e11b815260040160405180910390fd5b9250929050565b5f805f835f036120a25750600160801b91506122e59050565b50825f8112156120b2579015905f035b621000008110156122a157600160801b9250846001600160801b038111156120db579115915f19045b60018216156120ec5792830260801c925b800260801c60028216156121025792830260801c925b800260801c60048216156121185792830260801c925b800260801c600882161561212e5792830260801c925b800260801c60108216156121445792830260801c925b800260801c602082161561215a5792830260801c925b800260801c60408216156121705792830260801c925b8002608090811c908216156121875792830260801c925b800260801c61010082161561219e5792830260801c925b800260801c6102008216156121b55792830260801c925b800260801c6104008216156121cc5792830260801c925b800260801c6108008216156121e35792830260801c925b800260801c6110008216156121fa5792830260801c925b800260801c6120008216156122115792830260801c925b800260801c6140008216156122285792830260801c925b800260801c61800082161561223f5792830260801c925b800260801c620100008216156122575792830260801c925b800260801c6202000082161561226f5792830260801c925b800260801c620400008216156122875792830260801c925b800260801c6208000082161561229f5792830260801c925b505b825f036122cf57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b816122da5782611f63565b611f63835f196128e7565b92915050565b5f805f198385098385029250828110838203039150509250929050565b5f815f036123275783838161231f5761231f6128d3565b049050611f63565b838210612347576040516313eae71560e01b815260040160405180910390fd5b5f8486880960018619810187165f8190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b03811681146123c4575f80fd5b50565b5f805f604084860312156123d9575f80fd5b83356001600160401b03808211156123ef575f80fd5b818601915086601f830112612402575f80fd5b813581811115612410575f80fd5b8760208260051b8501011115612424575f80fd5b6020928301955093505084013561243a816123b0565b809150509250925092565b5f8151808452602080850194508084015f5b8381101561247c5781516001600160a01b031687529582019590820190600101612457565b509495945050505050565b5f8151808452602080850194508084015f5b8381101561247c57815187529582019590820190600101612499565b634e487b7160e01b5f52602160045260245ffd5b5f8151808452602080850194508084015f805b848110156125145782516002811061250257634e487b7160e01b83526021600452602483fd5b885296830196918301916001016124dc565b50959695505050505050565b5f8151808452602080850194508084015f5b8381101561247c5781516001600160801b031687529582019590820190600101612532565b602081525f825160e06020840152612573610100840182612445565b90506020840151601f19808584030160408601526125918383612445565b925060408601519150808584030160608601526125ae8383612487565b925060608601519150808584030160808601526125cb83836124c9565b925060808601519150808584030160a08601526125e88383612520565b925060a08601519150808584030160c08601526126058383612520565b925060c08601519150808584030160e086015250611f638282612520565b634e487b7160e01b5f52601160045260245ffd5b818103818111156122e5576122e5612623565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03811681146123c4575f80fd5b5f60208284031215612696575f80fd5b81356126a181612672565b9392505050565b808201808211156122e5576122e5612623565b604051608081016001600160401b03811182821017156126dd576126dd61264a565b60405290565b604051601f8201601f191681016001600160401b038111828210171561270b5761270b61264a565b604052919050565b80518015158114611ce7575f80fd5b5f6020808385031215612733575f80fd5b82516001600160401b0380821115612749575f80fd5b818501915085601f83011261275c575f80fd5b81518181111561276e5761276e61264a565b61277c848260051b016126e3565b818152848101925060079190911b83018401908782111561279b575f80fd5b928401925b81841015611e3157608084890312156127b8575f8081fd5b6127c06126bb565b845161ffff811681146127d2575f8081fd5b8152848601516127e181612672565b8187015260406127f2868201612713565b908201526060612803868201612713565b90820152835260809390930192918401916127a0565b5f60208284031215612829575f80fd5b81516126a181612672565b5f805f60608486031215612846575f80fd5b8351612851816123b0565b6020850151909350612862816123b0565b604085015190925061243a816123b0565b5f60208284031215612883575f80fd5b815162ffffff811681146126a1575f80fd5b6001600160801b038281168282160390808211156128b5576128b5612623565b5092915050565b80820281158282048414176122e5576122e5612623565b634e487b7160e01b5f52601260045260245ffd5b5f8261290157634e487b7160e01b5f52601260045260245ffd5b500490565b5f6001820161291757612917612623565b5060010190565b6001600160801b0381811683821602808216919082811461294157612941612623565b505092915050565b6001600160801b038181168382160190808211156128b5576128b5612623565b5f8161297757612977612623565b505f190190565b80516001600160701b0381168114611ce7575f80fd5b5f805f606084860312156129a6575f80fd5b6129af8461297e565b92506129bd6020850161297e565b9150604084015163ffffffff8116811461243a575f80fdfea26469706673582212201fb24cc93575509844f823131c8f74102298df934ab2d634cf1328f074816a1464736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000008c3cd9182dbef229a36351633f470ea904e105ac000000000000000000000000e1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "nonce": "0xe9", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2f6df7462934a446fb1ed3a4eebfb1c368fc7b43fb7ec0da879e5db4a440bec8", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x20ac8", + "value": "0x0", + "input": "0x5a440923000000000000000000000000b5e3dbaf69a46b71fe9c055e6fa36992ae6b2c1a", + "nonce": "0xea", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x188bbd9b115e59a4bd18dc1ae54e34b997420384f380b43dd6a89efa22bf041d", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000005fa95212825a474e2c75676e8d833330f261caed", + "nonce": "0xeb", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c763ae81e91df2398a8f1ea6994b80864c20ba8225a7fa6e0d4452496980b80", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000a6b5f74ddcc75b4b561d84b19ad7fd51f0405483", + "nonce": "0xec", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x00d9f0fe32326fa8d5fdae2aa4eed4d7d2256aff8c53e128a08fd6419315ea82", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000002267ae86066097ef49884aac96c63f70fe818eb3", + "nonce": "0xed", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xee52e52b8539a1d1115446a7e2d515ae7c8e6330ccdeb2a55b36497a6a118da1", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a4409230000000000000000000000003e610f32806e09c2ba65b8c88a6e4f777c8cb559", + "nonce": "0xee", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xfd72f31060f4fcf32e0066bbf5083b62b0a8ab00391420484985cf5c2f0b4153", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a44092300000000000000000000000067bf6de7f8d4d13fba410cbe05219cb26242a7c9", + "nonce": "0xef", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9fb1775e7b77a7019437adfcaa541c97c4a76c1d1216b36c7dd71f9e2d71dfc2", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000f1e7167a0b085b52a8ad02a5cc48ed2027b8b577", + "nonce": "0xf0", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4134f70ba6d476aa48706bc4a332fa81cb09f470d7b4c71d955bc8c285f130e1", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000fcdac6196c22908dda4ce84fb595b1c7986346bf", + "nonce": "0xf1", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa286e5d6cabdfa450ad4b1755ecb9493487708140fe891ed1bfc773a8a566381", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a44092300000000000000000000000087d252a68a0ac2428c6e849f4ec0b30dd3dca62b", + "nonce": "0xf2", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x13c6ceca85ed0ee8379db6f504d5ac07b41e8d99914eed639346fc13177a2152", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000febad8c0ea06e816ff21d1c772c46e02f10f2a23", + "nonce": "0xf3", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x48ee5deb302d988fdf182f58c18c728d6fd320f63b90bb048b930f3ed45948a4", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1c7d9", + "value": "0x0", + "input": "0x5a440923000000000000000000000000f83a152c0a526a45e93d91c95894a19a1258e30e", + "nonce": "0xf4", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x3cb4cab0b911164f9664b1c432f92183c9a0dc1b4ffca8ffc8cdca6554ddb9f0", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x1ae75", + "value": "0x0", + "input": "0x5a4409230000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00", + "nonce": "0xf5", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x2c9f1", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000001e8480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf6", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000007a1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf7", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x26852", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000001d4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000493e00000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf8", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee803000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xf9", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee803000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000007530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfa", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfb", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x24603", + "value": "0x0", + "input": "0x379ee80300000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000557300000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xfc", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x10f4411c2af26f81b991f3c04757bc7e0b868c3b1f694ed232db32def4a26cd0", + "transactionType": "CALL", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "gas": "0x11d4b", + "value": "0x0", + "input": "0xf2fde38b000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b", + "nonce": "0xfd", + "chainId": "0xc576d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x39b0eb", + "logs": [ + { + "address": "0x869f0297749084e0256cc761867fe7ce456640fc", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0x2c9fff3b9d207441ece2925abc6b72468d6b91a0659644e20f4afc6fa39bfa7e", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004010000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2c9fff3b9d207441ece2925abc6b72468d6b91a0659644e20f4afc6fa39bfa7e", + "transactionIndex": "0x1", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "gasUsed": "0x390591", + "effectiveGasPrice": "0xfd", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x869f0297749084e0256cc761867fe7ce456640fc", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x2f02e821940bd", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x257c6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x439dc3", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000869f0297749084e0256cc761867fe7ce456640fc" + ], + "data": "0x", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x70c8adc5f50a2d5f9e50f820b1529d196516489e", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + ], + "data": "0x", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c8adc5f50a2d5f9e50f820b1529d196516489e", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "logIndex": "0x3", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000002000000001000000000000000000000000000000000000000000000000000000000000110000040000000000000000002000001000200000000000000000000000000000000020000000000000000000800000000800000000000000000000000400000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000020000000010000000000000000000000000420000000000000004020000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc325008c5b97747ead2e7168f573a65f0453abf4f221e56c505001cdcd14e768", + "transactionIndex": "0x2", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "gasUsed": "0x9ecd8", + "effectiveGasPrice": "0xfd", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0xa90921ffb46c", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x86c9" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x91a5f5", + "logs": [ + { + "address": "0x68d00ff88f3a5987584e313b42cb11cfeee4fb39", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "transactionHash": "0x0346c55a4663f381e267a6dd0272ea2fa53d994365c62088f5967672af707677", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020800000000000000000000000080000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0346c55a4663f381e267a6dd0272ea2fa53d994365c62088f5967672af707677", + "transactionIndex": "0x3", + "blockHash": "0x0d820dc7ab2f2456a1515b11146a2b407fe1dfa76aba1584a00f00919a27d609", + "blockNumber": "0x171a57", + "gasUsed": "0x4e0832", + "effectiveGasPrice": "0xfd", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x68d00ff88f3a5987584e313b42cb11cfeee4fb39", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x4273a53b96349", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x34fcc" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x85fc2", + "logs": [ + { + "address": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000068d00ff88f3a5987584e313b42cb11cfeee4fb39" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000040000000000800000000000000000000000000000000400000000000200000000041000000000000000000000000000000000000000001000000000000000000000000040000000000000000000000000000000000000000000020000000000000000000000000000000000100000000000000000020000000000000000000000000000000000000000000000100000000000000000000", + "type": "0x2", + "transactionHash": "0x984f7f625ff005e44faa764c5fda09b37ed0478e20116c07b6302faad55033c7", + "transactionIndex": "0x1", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x7b468", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x4f39f44c022c7a79fa78e71f74f0ef2cfcee10a4", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x5d91a6c657dc", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x4a9c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xaa04f", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c6bf52634000", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000200000000840000200000000000000000080000000000000000000000000000000000000000000000000000000000008000000000000000004800000000000000000000000000000000000000000000024004000000000000020000100000000000000004000000000000000000000000100000000000000000000", + "type": "0x2", + "transactionHash": "0x49f93d300d07a8555199221d2275cc46c40761acd35bacd6e896d6fa5762feb8", + "transactionIndex": "0x2", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x2408d", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x9f8d5fd925a", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x7f3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x49b123", + "logs": [ + { + "address": "0x838c5172779357e60c28cc6315c8dcfa0f782786", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xdf9d4772d6e50d602cea2d8f3023f67c5ef61d10da87c853cde83891a229e208", + "transactionIndex": "0x3", + "logIndex": "0x6", + "removed": false + } + ], + "logsBloom": "0x00000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000001000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdf9d4772d6e50d602cea2d8f3023f67c5ef61d10da87c853cde83891a229e208", + "transactionIndex": "0x3", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x3f10d4", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0x838c5172779357e60c28cc6315c8dcfa0f782786", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x2a7aa59899cd7", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x21df3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x539dfb", + "logs": [ + { + "address": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000838c5172779357e60c28cc6315c8dcfa0f782786" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0x849502fc0c4bbdba68432a18ac26f10a81690cf8", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000849502fc0c4bbdba68432a18ac26f10a81690cf8", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000002000000800000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000002000001000000000000000000000000000000000000020000000000010000000800000000a00000000000000000000000400000000000000000000000100000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000001000020000000010000000000000000000000000400000000000000004020000020000000000020000008200000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x57bc8aa50e80c34991ab9b2b1d035f1bd15f32196699e57b4e5c04689c22a1f1", + "transactionIndex": "0x4", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x9ecd8", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0xe1ea7bcd93232c66de8d4d1a5e22da53803e7a69", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0xa919eaf268e2", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x86d6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x77f369", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5de5d529c09153953883f6c6a8221873dff9beadf5c7d9389c33d3bf237d7da4", + "transactionIndex": "0x5", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x24556e", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": null, + "contractAddress": "0xa87bed23e26b2bb7725173168d983ee4ec0e2b64", + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x187807ac97e90", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x1382d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x796de6", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000b5e3dbaf69a46b71fe9c055e6fa36992ae6b2c1a" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x2f6df7462934a446fb1ed3a4eebfb1c368fc7b43fb7ec0da879e5db4a440bec8", + "transactionIndex": "0x6", + "logIndex": "0xa", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000040000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2f6df7462934a446fb1ed3a4eebfb1c368fc7b43fb7ec0da879e5db4a440bec8", + "transactionIndex": "0x6", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x17a7d", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7aa597", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000005fa95212825a474e2c75676e8d833330f261caed" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x188bbd9b115e59a4bd18dc1ae54e34b997420384f380b43dd6a89efa22bf041d", + "transactionIndex": "0x7", + "logIndex": "0xb", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000100000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x188bbd9b115e59a4bd18dc1ae54e34b997420384f380b43dd6a89efa22bf041d", + "transactionIndex": "0x7", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7bdd48", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000a6b5f74ddcc75b4b561d84b19ad7fd51f0405483" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x1c763ae81e91df2398a8f1ea6994b80864c20ba8225a7fa6e0d4452496980b80", + "transactionIndex": "0x8", + "logIndex": "0xc", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000080000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000220000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1c763ae81e91df2398a8f1ea6994b80864c20ba8225a7fa6e0d4452496980b80", + "transactionIndex": "0x8", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7d14f9", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000002267ae86066097ef49884aac96c63f70fe818eb3" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x00d9f0fe32326fa8d5fdae2aa4eed4d7d2256aff8c53e128a08fd6419315ea82", + "transactionIndex": "0x9", + "logIndex": "0xd", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000020020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x00d9f0fe32326fa8d5fdae2aa4eed4d7d2256aff8c53e128a08fd6419315ea82", + "transactionIndex": "0x9", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7e4caa", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000003e610f32806e09c2ba65b8c88a6e4f777c8cb559" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xee52e52b8539a1d1115446a7e2d515ae7c8e6330ccdeb2a55b36497a6a118da1", + "transactionIndex": "0xa", + "logIndex": "0xe", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000008000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xee52e52b8539a1d1115446a7e2d515ae7c8e6330ccdeb2a55b36497a6a118da1", + "transactionIndex": "0xa", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7f845b", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x00000000000000000000000067bf6de7f8d4d13fba410cbe05219cb26242a7c9" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xfd72f31060f4fcf32e0066bbf5083b62b0a8ab00391420484985cf5c2f0b4153", + "transactionIndex": "0xb", + "logIndex": "0xf", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfd72f31060f4fcf32e0066bbf5083b62b0a8ab00391420484985cf5c2f0b4153", + "transactionIndex": "0xb", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x80bc0c", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000f1e7167a0b085b52a8ad02a5cc48ed2027b8b577" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x9fb1775e7b77a7019437adfcaa541c97c4a76c1d1216b36c7dd71f9e2d71dfc2", + "transactionIndex": "0xc", + "logIndex": "0x10", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000004000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9fb1775e7b77a7019437adfcaa541c97c4a76c1d1216b36c7dd71f9e2d71dfc2", + "transactionIndex": "0xc", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x81f3bd", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000fcdac6196c22908dda4ce84fb595b1c7986346bf" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x4134f70ba6d476aa48706bc4a332fa81cb09f470d7b4c71d955bc8c285f130e1", + "transactionIndex": "0xd", + "logIndex": "0x11", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000100000000000000000000000000000000000000000020000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4134f70ba6d476aa48706bc4a332fa81cb09f470d7b4c71d955bc8c285f130e1", + "transactionIndex": "0xd", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x832b6e", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x00000000000000000000000087d252a68a0ac2428c6e849f4ec0b30dd3dca62b" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xa286e5d6cabdfa450ad4b1755ecb9493487708140fe891ed1bfc773a8a566381", + "transactionIndex": "0xe", + "logIndex": "0x12", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa286e5d6cabdfa450ad4b1755ecb9493487708140fe891ed1bfc773a8a566381", + "transactionIndex": "0xe", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x84631f", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000febad8c0ea06e816ff21d1c772c46e02f10f2a23" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x13c6ceca85ed0ee8379db6f504d5ac07b41e8d99914eed639346fc13177a2152", + "transactionIndex": "0xf", + "logIndex": "0x13", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000020000000000000000000000100000000000002004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x13c6ceca85ed0ee8379db6f504d5ac07b41e8d99914eed639346fc13177a2152", + "transactionIndex": "0xf", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x859ad0", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x000000000000000000000000f83a152c0a526a45e93d91c95894a19a1258e30e" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x48ee5deb302d988fdf182f58c18c728d6fd320f63b90bb048b930f3ed45948a4", + "transactionIndex": "0x10", + "logIndex": "0x14", + "removed": false + } + ], + "logsBloom": "0x00000000000000040800000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000420000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x48ee5deb302d988fdf182f58c18c728d6fd320f63b90bb048b930f3ed45948a4", + "transactionIndex": "0x10", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137b1", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x86d275", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "0x0000000000000000000000005c7bea38bd9d825212a1bcf0cca4b9c122f6bd00" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x3cb4cab0b911164f9664b1c432f92183c9a0dc1b4ffca8ffc8cdca6554ddb9f0", + "transactionIndex": "0x11", + "logIndex": "0x15", + "removed": false + } + ], + "logsBloom": "0x00000000000000000800000000000004000000000000000000000000000000000000000000000010000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000100020000000000000000000000100000000000000004000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x3cb4cab0b911164f9664b1c432f92183c9a0dc1b4ffca8ffc8cdca6554ddb9f0", + "transactionIndex": "0x11", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x137a5", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x88baa0", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000001e8480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionIndex": "0x12", + "logIndex": "0x16", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionIndex": "0x12", + "logIndex": "0x17", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020040000008000000800000000000000000000000000000000040000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000060000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0x463b4b2589f8e6998a11c0dba9b7b5fbce9bf8ce6e4ddb1f7ad657042c83e2ff", + "transactionIndex": "0x12", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1e82b", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x812127f2109", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x66f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8a5fff", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000002" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000007a1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d090", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionIndex": "0x13", + "logIndex": "0x18", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionIndex": "0x13", + "logIndex": "0x19", + "removed": false + } + ], + "logsBloom": "0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000008000002000000000000000", + "type": "0x2", + "transactionHash": "0x150fa8e96d0aa99118b795ab3658ec5ef389ba9861f6d6761c05d2699a629670", + "transactionIndex": "0x13", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8c056a", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000005" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000001d4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000493e0", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionIndex": "0x14", + "logIndex": "0x1a", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionIndex": "0x14", + "logIndex": "0x1b", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000008010000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000001000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0xb81874f3113f9c42f9a0a9c2908972183b1add7fd8d97db8a2b0dc703c17f489", + "transactionIndex": "0x14", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a56b", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x833a46489f4", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x68a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8daac9", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x000000000000000000000000000000000000000000000000000000000000000a" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000009c4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionIndex": "0x15", + "logIndex": "0x1c", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionIndex": "0x15", + "logIndex": "0x1d", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000020000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0xe1927c59b6342383516edcf1753a8b1863ee5965124f906ec03b0fb502bae536", + "transactionIndex": "0x15", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8f5028", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x000000000000000000000000000000000000000000000000000000000000000f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000753000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionIndex": "0x16", + "logIndex": "0x1e", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionIndex": "0x16", + "logIndex": "0x1f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000008000000800000000000000000000000000000000000000000000000002000000000000020000000000000000000800000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000200000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0x5b196d77a6407deb77acddfbb152516a8b94128b8229114ac4ad58b7f68d015c", + "transactionIndex": "0x16", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x812127f2109", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x66f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x90f587", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000014" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000004e2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionIndex": "0x17", + "logIndex": "0x20", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionIndex": "0x17", + "logIndex": "0x21", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000000000080000000000000000000000000000000400000000000000000000000000000000000020000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000000000000000", + "type": "0x2", + "transactionHash": "0x92ae194dad27992aaa9182b9464a1cbd1190df3e67b5520f52b858e4bf7e049a", + "transactionIndex": "0x17", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x929ae6", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "0x0000000000000000000000000000000000000000000000000000000000000019" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000003a9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055730", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionIndex": "0x18", + "logIndex": "0x22", + "removed": false + }, + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "0x0000000000000000000000000000000000000000000000000000000000000019", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionIndex": "0x18", + "logIndex": "0x23", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000020000000008000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000800000000000000020000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000020000000000000000020000100000000000000004000000000000000000000000000002000008000000000", + "type": "0x2", + "transactionHash": "0x4c88ec1bcbe358c9634531784c749074b442839523e0ada74e19d46a9564df33", + "transactionIndex": "0x18", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0x1a55f", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x822db71d57e", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x67c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x936973", + "logs": [ + { + "address": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "topics": [ + "0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700", + "0x000000000000000000000000cf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "0x000000000000000000000000c4038db3b22400380ae43542d507a2fe71d79b7b" + ], + "data": "0x", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "transactionHash": "0x10f4411c2af26f81b991f3c04757bc7e0b868c3b1f694ed232db32def4a26cd0", + "transactionIndex": "0x19", + "logIndex": "0x24", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000200000000040000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000002000000000010000000000000000000000000020000000000000004000000100000000000000004000000000000000000000000100000000000000000000", + "type": "0x2", + "transactionHash": "0x10f4411c2af26f81b991f3c04757bc7e0b868c3b1f694ed232db32def4a26cd0", + "transactionIndex": "0x19", + "blockHash": "0x6a356da6ccf3af3e10e12a9b271cf0f9662bfc9235d8cb1b623e8d1eee32e873", + "blockNumber": "0x171a58", + "gasUsed": "0xce8d", + "effectiveGasPrice": "0xfe", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x8c3cd9182dbef229a36351633f470ea904e105ac", + "contractAddress": null, + "l1BaseFeeScalar": "0xa6fe0", + "l1BlobBaseFee": "0x6277de9", + "l1BlobBaseFeeScalar": "0x0", + "l1Fee": "0x7d691c6f519", + "l1GasPrice": "0x1d55f7ae4", + "l1GasUsed": "0x640" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1725380637, + "chain": 808813, + "commit": "1ecbbf8" +} \ No newline at end of file diff --git a/broadcast/deploy-paused-target.s.sol/808813/run-1724395807.json b/broadcast/deploy-paused-target.s.sol/808813/run-1724395807.json new file mode 100644 index 00000000..ce218bc0 --- /dev/null +++ b/broadcast/deploy-paused-target.s.sol/808813/run-1724395807.json @@ -0,0 +1,32 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE2", + "contractName": "PausedTarget", + "contractAddress": "0xE919920aE49d3027566025548f12cDaB4E52b595", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x191b1", + "value": "0x0", + "data": "0xef436b289465e416c88261613eee35d9bde1ba86bfdfd99c69274ca46680e71f6080604052348015600f57600080fd5b50604b80601d6000396000f3fe608060408190526306d39fcd60e41b8152600490fdfea26469706673582212201f2d0401c2780882e56c24aaf4f090433956219f7bfec85a6b4e62fd104c8d8b64736f6c63430008140033", + "nonce": "0xd9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1724395807, + "chain": 808813, + "multi": false, + "commit": "a7b16c2" +} \ No newline at end of file diff --git a/broadcast/deploy-paused-target.s.sol/808813/run-1724395861.json b/broadcast/deploy-paused-target.s.sol/808813/run-1724395861.json new file mode 100644 index 00000000..02cb7720 --- /dev/null +++ b/broadcast/deploy-paused-target.s.sol/808813/run-1724395861.json @@ -0,0 +1,34 @@ +{ + "transactions": [ + { + "hash": "0x683e273969c6000a6ccd5dfc6c1dc9fc21cca7e0aa1712a9d2cd4438dc248896", + "transactionType": "CREATE2", + "contractName": "PausedTarget", + "contractAddress": "0xE919920aE49d3027566025548f12cDaB4E52b595", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x191b1", + "value": "0x0", + "data": "0xef436b289465e416c88261613eee35d9bde1ba86bfdfd99c69274ca46680e71f6080604052348015600f57600080fd5b50604b80601d6000396000f3fe608060408190526306d39fcd60e41b8152600490fdfea26469706673582212201f2d0401c2780882e56c24aaf4f090433956219f7bfec85a6b4e62fd104c8d8b64736f6c63430008140033", + "nonce": "0xd9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x683e273969c6000a6ccd5dfc6c1dc9fc21cca7e0aa1712a9d2cd4438dc248896" + ], + "returns": {}, + "timestamp": 1724395861, + "chain": 808813, + "multi": false, + "commit": "a7b16c2" +} \ No newline at end of file diff --git a/broadcast/deploy-paused-target.s.sol/808813/run-1724395868.json b/broadcast/deploy-paused-target.s.sol/808813/run-1724395868.json new file mode 100644 index 00000000..3d9a0875 --- /dev/null +++ b/broadcast/deploy-paused-target.s.sol/808813/run-1724395868.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x683e273969c6000a6ccd5dfc6c1dc9fc21cca7e0aa1712a9d2cd4438dc248896", + "transactionType": "CREATE2", + "contractName": "PausedTarget", + "contractAddress": "0xE919920aE49d3027566025548f12cDaB4E52b595", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x191b1", + "value": "0x0", + "data": "0xef436b289465e416c88261613eee35d9bde1ba86bfdfd99c69274ca46680e71f6080604052348015600f57600080fd5b50604b80601d6000396000f3fe608060408190526306d39fcd60e41b8152600490fdfea26469706673582212201f2d0401c2780882e56c24aaf4f090433956219f7bfec85a6b4e62fd104c8d8b64736f6c63430008140033", + "nonce": "0xd9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x683e273969c6000a6ccd5dfc6c1dc9fc21cca7e0aa1712a9d2cd4438dc248896", + "transactionIndex": "0x1", + "blockHash": "0x8a008b61e56ebad9ee5105e233cc0c92c9219c38ef3b209c82d6fc4ac14395a7", + "blockNumber": "0xf96f8", + "from": "0xCF311E7375083b9513566a47B9f3e93F1FcdCfBF", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x1e9d8", + "gasUsed": "0x112b2", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05efc" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1724395868, + "chain": 808813, + "multi": false, + "commit": "a7b16c2" +} \ No newline at end of file diff --git a/broadcast/deploy-paused-target.s.sol/808813/run-latest.json b/broadcast/deploy-paused-target.s.sol/808813/run-latest.json new file mode 100644 index 00000000..3d9a0875 --- /dev/null +++ b/broadcast/deploy-paused-target.s.sol/808813/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x683e273969c6000a6ccd5dfc6c1dc9fc21cca7e0aa1712a9d2cd4438dc248896", + "transactionType": "CREATE2", + "contractName": "PausedTarget", + "contractAddress": "0xE919920aE49d3027566025548f12cDaB4E52b595", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0xcf311e7375083b9513566a47b9f3e93f1fcdcfbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x191b1", + "value": "0x0", + "data": "0xef436b289465e416c88261613eee35d9bde1ba86bfdfd99c69274ca46680e71f6080604052348015600f57600080fd5b50604b80601d6000396000f3fe608060408190526306d39fcd60e41b8152600490fdfea26469706673582212201f2d0401c2780882e56c24aaf4f090433956219f7bfec85a6b4e62fd104c8d8b64736f6c63430008140033", + "nonce": "0xd9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x683e273969c6000a6ccd5dfc6c1dc9fc21cca7e0aa1712a9d2cd4438dc248896", + "transactionIndex": "0x1", + "blockHash": "0x8a008b61e56ebad9ee5105e233cc0c92c9219c38ef3b209c82d6fc4ac14395a7", + "blockNumber": "0xf96f8", + "from": "0xCF311E7375083b9513566a47B9f3e93F1FcdCfBF", + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "cumulativeGasUsed": "0x1e9d8", + "gasUsed": "0x112b2", + "contractAddress": null, + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05efc" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1724395868, + "chain": 808813, + "multi": false, + "commit": "a7b16c2" +} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index cec4f570..4a0d6a1f 100644 --- a/foundry.toml +++ b/foundry.toml @@ -3,16 +3,21 @@ src = 'src' out = 'abi' libs = ['lib'] solc_version = "0.8.20" -evm_version = 'paris' +evm_version = 'cancun' optimizer = true -optimizer_runs = 800 +optimizer_runs = 200 +ast = true +build_info = true +extra_output = ["storageLayout"] +ffi = true -fs_permissions = [{ access = "read", path = "./"}] +fs_permissions = [{ access = "read", path = "./"}, { access = "read-write", path = "./script/config/deployments.json"}] [fuzz] runs = 1024 [rpc_endpoints] +bob_testnet = "https://bob-sepolia.rpc.gobob.xyz/" avalanche = "https://api.avax.network/ext/bc/C/rpc" fuji = "https://api.avax-test.network/ext/bc/C/rpc" diff --git a/lib/forge-std b/lib/forge-std index 21577a0f..07263d19 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 21577a0fafc0490e13cc44c3f6138f2e2708f56e +Subproject commit 07263d193d621c4b2b0ce8b4d54af58f6957d97d diff --git a/lib/openzeppelin-foundry-upgrades b/lib/openzeppelin-foundry-upgrades new file mode 160000 index 00000000..1f6690ab --- /dev/null +++ b/lib/openzeppelin-foundry-upgrades @@ -0,0 +1 @@ +Subproject commit 1f6690ab7e353d0e9e569235f81e2611c5b7097d diff --git a/remappings.txt b/remappings.txt index 70f38720..c0fc38fe 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,4 +1,5 @@ ds-test/=lib/forge-std/lib/ds-test/src/ forge-std/=lib/forge-std/src/ +src/=src/ @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ \ No newline at end of file diff --git a/script/config/deployment_assets.json b/script/config/deployment_assets.json new file mode 100644 index 00000000..589624c4 --- /dev/null +++ b/script/config/deployment_assets.json @@ -0,0 +1,34 @@ +{ + "bob_testnet": { + "quoteAssets": [ + "0xb5E3dbAF69A46B71Fe9c055e6Fa36992ae6b2c1A", + "0x5fA95212825a474E2C75676e8D833330F261CaeD", + "0xA6b5f74DDCc75b4b561D84B19Ad7FD51f0405483", + "0x2267Ae86066097EF49884Aac96c63f70fE818eb3", + "0x3E610F32806e09C2Ba65b8c88A6E4f777c8Cb559", + "0x67bF6DE7f8d4d13FBa410CBe05219cB26242A7C9", + "0xf1e7167A0b085B52A8ad02A5Cc48eD2027b8B577", + "0xfCDaC6196C22908ddA4CE84fb595B1C7986346bF", + "0x87d252A68a0AC2428C6e849f4Ec0b30DD3DCA62B", + "0xFEbad8c0EA06e816FF21D1c772c46E02F10F2A23", + "0xf83A152C0A526a45E93D91c95894a19A1258E30E", + "0x5c7bEa38BD9d825212a1BCf0cCA4b9C122f6Bd00" + ] + }, + "anvil": { + "quoteAssets": [ + "0xb5E3dbAF69A46B71Fe9c055e6Fa36992ae6b2c1A", + "0x5fA95212825a474E2C75676e8D833330F261CaeD", + "0xA6b5f74DDCc75b4b561D84B19Ad7FD51f0405483", + "0x2267Ae86066097EF49884Aac96c63f70fE818eb3", + "0x3E610F32806e09C2Ba65b8c88A6E4f777c8Cb559", + "0x67bF6DE7f8d4d13FBa410CBe05219cB26242A7C9", + "0xf1e7167A0b085B52A8ad02A5Cc48eD2027b8B577", + "0xfCDaC6196C22908ddA4CE84fb595B1C7986346bF", + "0x87d252A68a0AC2428C6e849f4Ec0b30DD3DCA62B", + "0xFEbad8c0EA06e816FF21D1c772c46E02F10F2A23", + "0xf83A152C0A526a45E93D91c95894a19A1258E30E", + "0x5c7bEa38BD9d825212a1BCf0cCA4b9C122f6Bd00" + ] + } +} diff --git a/script/config/deployments.json b/script/config/deployments.json index 402c9db3..6e66eb1f 100644 --- a/script/config/deployments.json +++ b/script/config/deployments.json @@ -1,12 +1,26 @@ { "bob_testnet": { "factory_v1": "0x0000000000000000000000000000000000000000", - "factory_v2": "0x6EE3D064a0D00a8489c85eE47C5C4A0720e35764", - "factory_v2_1": "0x0000000000000000000000000000000000000000", - "multisig": "0xCF311E7375083b9513566a47B9f3e93F1FcdCfBF", - "router_v1": "0x0000000000000000000000000000000000000000", - "router_v2": "0x0000000000000000000000000000000000000000", - "router_v2_1": "0x0000000000000000000000000000000000000000", - "w_native": "0xd5cF70706C54Ec4E8a999De340EC7C9C22fd999C" + "factory_v2": "0x8C3cD9182dbef229a36351633f470ea904e105Ac", + "fee_recipient": "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "lb_pair_implementation": "0x68D00Ff88F3a5987584E313b42Cb11CfeeE4FB39", + "lb_pair_upgradeable_beacon": "0x4F39F44C022C7a79FA78E71f74F0eF2CFcEe10A4", + "owner": "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "proxy_admin": "0x70c8AdC5f50A2D5F9e50f820B1529D196516489E", + "quoter": "0xa87Bed23E26b2Bb7725173168D983eE4Ec0e2b64", + "router_v2": "0xE1EA7bCD93232c66DE8D4D1a5e22da53803e7A69", + "w_native": "0x5c7bEa38BD9d825212a1BCf0cCA4b9C122f6Bd00" + }, + "anvil": { + "factoryV1": "0x0000000000000000000000000000000000000000", + "factoryV2": "0x0000000000000000000000000000000000000000", + "fee_recipient": "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "lb_pair_implementation": "0x0000000000000000000000000000000000000000", + "lb_pair_upgradeable_beacon": "0x0000000000000000000000000000000000000000", + "owner": "0xC4038db3b22400380ae43542D507a2fe71d79b7B", + "proxy_admin": "0x0000000000000000000000000000000000000000", + "quoter": "0x0000000000000000000000000000000000000000", + "routerV2": "0x0000000000000000000000000000000000000000", + "wNative": "0x0000000000000000000000000000000000000000" } } diff --git a/script/deploy-core.s.sol b/script/deploy-core.s.sol index b0c35ba5..1905cf18 100644 --- a/script/deploy-core.s.sol +++ b/script/deploy-core.s.sol @@ -10,79 +10,148 @@ import {IERC20, LBPair} from "src/LBPair.sol"; import {LBQuoter} from "src/LBQuoter.sol"; import {BipsConfig} from "./config/bips-config.sol"; +import {LBPairUpgradeableBeacon} from "src/LBPairUpgradeableBeacon.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import { Options } from "openzeppelin-foundry-upgrades/Options.sol"; +import {IDeployment} from "./interfaces/IDeployment.sol"; + contract CoreDeployer is Script { using stdJson for string; - uint256 private constant FLASHLOAN_FEE = 5e12; - - struct Deployment { - address factoryV1; - address factoryV2; - address multisig; - address routerV1; - address routerV2; - address wNative; - } + uint256 private constant FLASHLOAN_FEE = 0.05e16; //0.05% + address deployer; + // string[] chains = ["anvil"]; string[] chains = ["bob_testnet"]; function setUp() public { - _overwriteDefaultArbitrumRPC(); + // _overwriteDefaultArbitrumRPC(); } function run() public { - string memory json = vm.readFile("script/config/deployments.json"); - address deployer = vm.rememberKey(vm.envUint("DEPLOYER_PRIVATE_KEY")); + string memory jsonAssets = vm.readFile("script/config/deployment_assets.json"); + deployer = tx.origin; + uint256 envPK = vm.envOr("DEPLOYER_PRIVATE_KEY", uint256(0)); + if(envPK != 0 && vm.envBool("USE_ENV_PK")) { + // CLI command would look like USE_ENV_PK=true forge script ... + deployer = vm.addr(envPK); + } console.log("Deployer address: %s", deployer); + address factoryV2; + address routerV2; + address lbPairUpgradeableBeacon; + address lbPairImplementation; + address quoter; + for (uint256 i = 0; i < chains.length; i++) { - bytes memory rawDeploymentData = json.parseRaw(string(abi.encodePacked(".", chains[i]))); - Deployment memory deployment = abi.decode(rawDeploymentData, (Deployment)); + vm.createSelectFork(StdChains.getChain(chains[i]).rpcUrl); + vm.startBroadcast(deployer); - console.log("\nDeploying V2.1 on %s", chains[i]); + bytes memory quoteAssetsRaw = jsonAssets.parseRaw(string(abi.encodePacked(".", chains[i],".quoteAssets"))); + console.log("quoteAssetsRaw"); + console.logBytes(quoteAssetsRaw); + address[] memory quoteAssets = abi.decode(quoteAssetsRaw, (address[])); + console.log("quoteAssets ->"); + for (uint256 i = 0; i < quoteAssets.length; i++) { + console.log(quoteAssets[i]); + } + console.log("quoteAssets <-"); + + string memory jsonBase = vm.readFile("script/config/deployments.json"); + bytes memory rawDeploymentData = jsonBase.parseRaw(string(abi.encodePacked(".", chains[i]))); + //console.logBytes(rawDeploymentData); + IDeployment.Deployment memory deployment = abi.decode(rawDeploymentData, (IDeployment.Deployment)); + + console.log("\nDeploying V2 on %s", chains[i]); + + if(deployment.factoryV2 == address(0)) { + console.log("Deploying factory v2..."); + factoryV2 = Upgrades.deployTransparentProxy( + "LBFactory.sol", + deployment.owner, + "" + ); - vm.createSelectFork(StdChains.getChain(chains[i]).rpcUrl); + deployment.factoryV2 = factoryV2; + console.log("LBFactory deployed -->", factoryV2); + } else { + factoryV2 = deployment.factoryV2; + } - vm.broadcast(deployer); - LBFactory factoryV2 = new LBFactory(deployer, deployer, FLASHLOAN_FEE); - console.log("LBFactory deployed -->", address(factoryV2)); + if(deployment.lbPairImplementation == address(0)) { + console.log("Deploying lbPairImplementation..."); + lbPairImplementation = address(new LBPair(ILBFactory(factoryV2))); + deployment.lbPairImplementation = lbPairImplementation; + console.log("lbPairImplementation deployed -->", lbPairImplementation); + } else { + lbPairImplementation = deployment.lbPairImplementation; + } - vm.broadcast(deployer); - LBPair pairImplementation = new LBPair(factoryV2); - console.log("LBPair implementation deployed -->", address(pairImplementation)); + + if(deployment.lbPairUpgradeableBeacon == address(0)) { + console.log("Deploying lbPairUpgradeableBeacon..."); + lbPairUpgradeableBeacon = address(new LBPairUpgradeableBeacon(lbPairImplementation, deployer, factoryV2)); + deployment.lbPairUpgradeableBeacon = lbPairUpgradeableBeacon; + console.log("lbPairUpgradeableBeacon deployed -->", lbPairUpgradeableBeacon); + } else { + lbPairUpgradeableBeacon = deployment.lbPairUpgradeableBeacon; + } - vm.broadcast(deployer); - LBRouter routerV2 = new LBRouter( - factoryV2, - ISovrynLBFactoryV1(deployment.factoryV1), - IWNATIVE(deployment.wNative) - ); - console.log("LBRouter deployed -->", address(routerV2)); + console.log("initializing lbFactory..."); + LBFactory(factoryV2).initialize(deployment.feeRecipient, deployer, FLASHLOAN_FEE, lbPairUpgradeableBeacon); + console.log("LBFactory initialized, owner --> ", LBFactory(factoryV2).owner()); + + if(deployment.routerV2 == address(0)) { + Options memory opts; + opts.constructorData = abi.encode(ILBFactory(factoryV2), ISovrynLBFactoryV1(deployment.factoryV1), IWNATIVE(deployment.wNative)); + console.log("Deploying routerV2..."); + routerV2 = Upgrades.deployTransparentProxy( + "LBRouter.sol", + deployment.owner, + "", + opts + ); + console.log("LBRouter deployed -->", routerV2); + } else { + routerV2 = deployment.routerV2; + } - vm.startBroadcast(deployer); - LBQuoter quoter = new LBQuoter( - deployment.factoryV1, - address(factoryV2), - address(routerV2) - ); - console.log("LBQuoter deployed -->", address(quoter)); - - factoryV2.setLBPairImplementation(address(pairImplementation)); - console.log("LBPair implementation set on factoryV2\n"); - - uint256 quoteAssets = ILBLegacyFactory(deployment.factoryV2).getNumberOfQuoteAssets(); - for (uint256 j = 0; j < quoteAssets; j++) { - IERC20 quoteAsset = ILBLegacyFactory(deployment.factoryV2).getQuoteAsset(j); - factoryV2.addQuoteAsset(quoteAsset); + deployment.routerV2 = routerV2; + + + if(deployment.quoter == address(0)) { + console.log("Deploying LBQuoter..."); + quoter = address(new LBQuoter( + deployment.factoryV1, + factoryV2, + routerV2 + )); + deployment.quoter = quoter; + console.log("LBQuoter deployed -->", address(quoter)); + } else { + quoter = deployment.quoter; + } + // Serialize the updated deployment struct back to JSON + // @dev Moving the updatedJsonBase assignment down will cause Stack too deep issue + string memory updatedJsonBase = jsonBase.serialize(string(abi.encodePacked(".", chains[i])), abi.encode(deployment)); + + // address[] memory quoteAssets = deployment.quoteAssets; + for (uint256 j = 0; j < quoteAssets.length; j++) { + IERC20 quoteAsset = IERC20(quoteAssets[j]); + if(LBFactory(factoryV2).isQuoteAsset(quoteAsset)) continue; + + /** Add asset quote asset */ + LBFactory(factoryV2).addQuoteAsset(quoteAsset); console.log("Quote asset whitelisted -->", address(quoteAsset)); } uint256[] memory presetList = BipsConfig.getPresetList(); for (uint256 j; j < presetList.length; j++) { BipsConfig.FactoryPreset memory preset = BipsConfig.getPreset(presetList[j]); - factoryV2.setPreset( + LBFactory(factoryV2).setPreset( preset.binStep, preset.baseFactor, preset.filterPeriod, @@ -95,19 +164,26 @@ contract CoreDeployer is Script { ); } - factoryV2.transferOwnership(deployment.multisig); + LBFactory(factoryV2).transferOwnership(deployment.owner); + + console.log("The new pendingOwner: ", LBFactory(factoryV2).pendingOwner()); + console.log("Please accept the ownership of factory at: ", address(factoryV2)); + vm.stopBroadcast(); + //@todo this approach messes up the json formatting - need to find the right way: + // Write the updated JSON back to the file + // vm.writeFile("script/config/deployments.json", abi.decode(updatedJsonBase)); } } - function _overwriteDefaultArbitrumRPC() private { - StdChains.setChain( - "arbitrum_one_goerli", - StdChains.ChainData({ - name: "Arbitrum One Goerli", - chainId: 421613, - rpcUrl: vm.envString("ARBITRUM_TESTNET_RPC_URL") - }) - ); - } + // function _overwriteDefaultArbitrumRPC() private { + // StdChains.setChain( + // "arbitrum_one_goerli", + // StdChains.ChainData({ + // name: "Arbitrum One Goerli", + // chainId: 421613, + // rpcUrl: vm.envString("ARBITRUM_TESTNET_RPC_URL") + // }) + // ); + // } } diff --git a/script/deploy-paused-target.s.sol b/script/deploy-paused-target.s.sol new file mode 100644 index 00000000..f5005f06 --- /dev/null +++ b/script/deploy-paused-target.s.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import {PausedTarget} from "src/PausedTarget.sol"; // Adjust the import path according to your project structure + +/** + * @notice this a deployment script for Paused target contract. + * PausedTarget contract is a placeholder contract that is used as the beacon implementation when it's paused. + * Since we can't use the non-contract (e.g: 0x0, 0x1) as the implementation of the beacon, so we will use this contract instead. + */ +contract DeployPausedTarget is Script { + error Create2FailedDeployment(); + string[] chains = ["bob_testnet"]; + + // this is the forge deterministic deployer https://book.getfoundry.sh/tutorials/create2-tutorial + address FOUNDRY_DETERMINISTIC_DEPLOYER = 0x4e59b44847b379578588920cA78FbF26c0B4956C; + + function run() external { + address deployedAddress; + // Define salt and initialize the contract creation code + bytes32 salt = keccak256(abi.encodePacked("paused-target")); + // bytecode of PausedTarget.sol was generated in this commit https://github.com/DistributedCollective/sovryn-lb-dex/blob/fbae24c77ad1c718199ae1be28320356566255cb/src/PausedTarget.sol + bytes memory bytecode = hex"6080604052348015600f57600080fd5b50604b80601d6000396000f3fe608060408190526306d39fcd60e41b8152600490fdfea26469706673582212201f2d0401c2780882e56c24aaf4f090433956219f7bfec85a6b4e62fd104c8d8b64736f6c63430008140033"; // type(PausedTarget).creationCode; + address deployer = tx.origin; + uint256 envPK = vm.envOr("DEPLOYER_PRIVATE_KEY", uint256(0)); + if(envPK != 0 && vm.envBool("USE_ENV_PK")) { + // CLI command would look like USE_ENV_PK=true forge script ... + deployer = vm.addr(envPK); + } + + console.log("deployer: ", deployer); + + // Calculate deterministic address + address deterministicAddress = computeAddress(salt, keccak256(bytecode), FOUNDRY_DETERMINISTIC_DEPLOYER); + + console.log("Deterministic PausedTarget address will be:", deterministicAddress); + + // Deploy the contract + for (uint256 i = 0; i < chains.length; i++) { + vm.createSelectFork(StdChains.getChain(chains[i]).rpcUrl); + console.log("\nDeploying PausedTarget on %s", chains[i]); + vm.startBroadcast(deployer); + deployedAddress = deployCode(bytecode, salt); + vm.stopBroadcast(); + console.log("Contract deployed at:", deployedAddress); + } + + // Assert to ensure deployment happened at the deterministic address + require(deployedAddress == address(0xE919920aE49d3027566025548f12cDaB4E52b595), "Deployment failed at deterministic address: 1"); + require(deployedAddress == deterministicAddress, "Deployment failed at deterministic address: 2"); + } + + // Helper function to deploy using create2 + // In this case, the create2 will deploy the bytecode by interacting with the forge deterministic deployer contract 0x4e59b44847b379578588920cA78FbF26c0B4956C + function deployCode(bytes memory code, bytes32 salt) internal returns (address) { + address addr; + assembly { + addr := create2(0, add(code, 0x20), mload(code), salt) + if iszero(extcodesize(addr)) { revert(0, 0) } + } + return addr; + } + + function computeAddress(bytes32 salt, bytes32 creationCodeHash, address deployer) internal pure returns (address addr) { + assembly { + let ptr := mload(0x40) + + mstore(add(ptr, 0x40), creationCodeHash) + mstore(add(ptr, 0x20), salt) + mstore(ptr, deployer) + let start := add(ptr, 0x0b) + mstore8(start, 0xff) + addr := keccak256(start, 85) + } + } +} diff --git a/script/interfaces/IDeployment.sol b/script/interfaces/IDeployment.sol new file mode 100644 index 00000000..ab2053de --- /dev/null +++ b/script/interfaces/IDeployment.sol @@ -0,0 +1,16 @@ +pragma solidity ^0.8.20; + +contract IDeployment { + struct Deployment { + address factoryV1; + address factoryV2; + address feeRecipient; + address lbPairImplementation; + address lbPairUpgradeableBeacon; + address owner; + address proxyAdmin; + address quoter; + address routerV2; + address wNative; + } +} \ No newline at end of file diff --git a/script/query-proxy.s.sol b/script/query-proxy.s.sol new file mode 100644 index 00000000..98fe3c3f --- /dev/null +++ b/script/query-proxy.s.sol @@ -0,0 +1,22 @@ +pragma solidity ^0.8.20; +import "forge-std/Script.sol"; +import {Vm} from "forge-std/Vm.sol"; +import {ERC1967Utils} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol"; + +contract QueryProxy is Script { + function getAdminAddress(address proxy) external view returns (address) { + address CHEATCODE_ADDRESS = 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D; + Vm vm = Vm(CHEATCODE_ADDRESS); + + bytes32 adminSlot = vm.load(proxy, ERC1967Utils.ADMIN_SLOT); + return address(uint160(uint256(adminSlot))); + } + + function getImplementation(address proxy) external view returns (address) { + address CHEATCODE_ADDRESS = 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D; + Vm vm = Vm(CHEATCODE_ADDRESS); + + bytes32 adminSlot = vm.load(proxy, ERC1967Utils.IMPLEMENTATION_SLOT); + return address(uint160(uint256(adminSlot))); + } +} \ No newline at end of file diff --git a/src/BaseUpgradeableBeacon.sol b/src/BaseUpgradeableBeacon.sol new file mode 100644 index 00000000..c44191c3 --- /dev/null +++ b/src/BaseUpgradeableBeacon.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MIT +// Inspired by OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/UpgradeableBeacon.sol) + +pragma solidity ^0.8.20; + +import {IBeacon} from "@openzeppelin/contracts/proxy/beacon/IBeacon.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; + +/** + * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their + * implementation contract, which is where they will delegate all function calls. + * + * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon. + */ +contract BaseUpgradeableBeacon is IBeacon, Ownable { + address private _implementation; + + /** + * @dev The `implementation` of the beacon is invalid. + */ + error BeaconInvalidImplementation(address implementation); + + /** + * @dev Emitted when the implementation returned by the beacon is changed. + */ + event Upgraded(address indexed implementation); + + /** + * @dev Sets the address of the initial implementation, and the initial owner who can upgrade the beacon. + */ + constructor(address implementation_, address initialOwner) Ownable(initialOwner) { + _setImplementation(implementation_); + } + + /** + * @dev Returns the current implementation address. + */ + function implementation() public view virtual returns (address) { + return _implementation; + } + + /** + * @dev Upgrades the beacon to a new implementation. + * + * Emits an {Upgraded} event. + * + * Requirements: + * + * - msg.sender must be the owner of the contract. + * - `newImplementation` must be a contract. + */ + function upgradeTo(address newImplementation) public virtual onlyOwner { + _setImplementation(newImplementation); + } + + /** + * @dev Sets the implementation contract address for this beacon + * + * Requirements: + * + * - `newImplementation` must be a contract. + */ + function _setImplementation(address newImplementation) internal { + if (newImplementation.code.length == 0) { + revert BeaconInvalidImplementation(newImplementation); + } + _implementation = newImplementation; + emit Upgraded(newImplementation); + } +} diff --git a/src/LBFactory.sol b/src/LBFactory.sol index a8862891..98700fa3 100644 --- a/src/LBFactory.sol +++ b/src/LBFactory.sol @@ -4,9 +4,10 @@ pragma solidity ^0.8.20; import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import {EnumerableMap} from "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; -import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; +import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import {Ownable2Step, Ownable} from "@openzeppelin/contracts/access/Ownable2Step.sol"; +import {Ownable2StepUpgradeable, OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import {UpgradeableBeacon} from "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol"; import {PairParameterHelper} from "./libraries/PairParameterHelper.sol"; import {Encoded} from "./libraries/math/Encoded.sol"; @@ -18,15 +19,17 @@ import {Hooks} from "./libraries/Hooks.sol"; import {ILBFactory} from "./interfaces/ILBFactory.sol"; import {ILBPair} from "./interfaces/ILBPair.sol"; import {ILBHooks} from "./interfaces/ILBHooks.sol"; +import {LBPairBeaconProxy} from "./LBPairBeaconProxy.sol"; +import {Create2} from "@openzeppelin/contracts/utils/Create2.sol"; + /** * @title Liquidity Book Factory - * @author Trader Sovryn LB * @notice Contract used to deploy and register new LBPairs. * Enables setting fee parameters, flashloan fees and LBPair implementation. * Unless the `isOpen` is `true`, only the owner of the factory can create pairs. */ -contract LBFactory is Ownable2Step, AccessControl, ILBFactory { +contract LBFactory is Ownable2StepUpgradeable, AccessControlUpgradeable, ILBFactory { using SafeCast for uint256; using Encoded for bytes32; using PairParameterHelper for bytes32; @@ -35,6 +38,7 @@ contract LBFactory is Ownable2Step, AccessControl, ILBFactory { using EnumerableMap for EnumerableMap.UintToUintMap; bytes32 public constant LB_HOOKS_MANAGER_ROLE = keccak256("LB_HOOKS_MANAGER_ROLE"); + bytes32 public constant LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = keccak256("LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE"); uint256 private constant _OFFSET_IS_PRESET_OPEN = 255; @@ -45,7 +49,7 @@ contract LBFactory is Ownable2Step, AccessControl, ILBFactory { address private _feeRecipient; uint256 private _flashLoanFee; - address private _lbPairImplementation; + address private _lbPairBeacon; ILBPair[] private _allLBPairs; @@ -67,17 +71,26 @@ contract LBFactory is Ownable2Step, AccessControl, ILBFactory { */ mapping(IERC20 => mapping(IERC20 => EnumerableSet.UintSet)) private _availableLBPairBinSteps; + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + /** - * @notice Constructor + * @notice Initializer function * @param feeRecipient The address of the fee recipient * @param flashLoanFee The value of the fee for flash loan */ - constructor(address feeRecipient, address initialOwner, uint256 flashLoanFee) Ownable(initialOwner) { + function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) initializer external { + __Ownable_init(initialOwner); + if (flashLoanFee > _MAX_FLASHLOAN_FEE) revert LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE); _setFeeRecipient(feeRecipient); _flashLoanFee = flashLoanFee; + _lbPairBeacon = lbPairBeaconAddress; emit FlashLoanFeeSet(0, flashLoanFee); } @@ -114,11 +127,11 @@ contract LBFactory is Ownable2Step, AccessControl, ILBFactory { } /** - * @notice Get the address of the LBPair implementation - * @return lbPairImplementation The address of the LBPair implementation + * @notice Get the address of the LBPair beacon + * @return lbPairBeacon The address of the LBPair beacon */ - function getLBPairImplementation() external view override returns (address lbPairImplementation) { - return _lbPairImplementation; + function getLBPairBeacon() external view override returns (address lbPairBeacon) { + return _lbPairBeacon; } /** @@ -299,24 +312,9 @@ contract LBFactory is Ownable2Step, AccessControl, ILBFactory { } } - /** - * @notice Set the LBPair implementation address - * @dev Needs to be called by the owner - * @param newLBPairImplementation The address of the implementation - */ - function setLBPairImplementation(address newLBPairImplementation) external override onlyOwner { - if (ILBPair(newLBPairImplementation).getFactory() != this) { - revert LBFactory__LBPairSafetyCheckFailed(newLBPairImplementation); - } - - address oldLBPairImplementation = _lbPairImplementation; - if (oldLBPairImplementation == newLBPairImplementation) { - revert LBFactory__SameImplementation(newLBPairImplementation); - } - - _lbPairImplementation = newLBPairImplementation; - - emit LBPairImplementationSet(oldLBPairImplementation, newLBPairImplementation); + // Getter function for the constant variable + function getPauserRole() external pure returns (bytes32) { + return LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE; } /** @@ -357,17 +355,26 @@ contract LBFactory is Ownable2Step, AccessControl, ILBFactory { } { - address implementation = _lbPairImplementation; + bytes memory data = abi.encodeWithSignature("initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)", + preset.getBaseFactor(), + preset.getFilterPeriod(), + preset.getDecayPeriod(), + preset.getReductionFactor(), + preset.getVariableFeeControl(), + preset.getProtocolShare(), + preset.getMaxVolatilityAccumulator(), + activeId + ); - if (implementation == address(0)) revert LBFactory__ImplementationNotSet(); + bytes32 salt = keccak256(abi.encodePacked(tokenA, tokenB, binStep)); - pair = ILBPair( - ImmutableClone.cloneDeterministic( - implementation, - abi.encodePacked(tokenX, tokenY, binStep), - keccak256(abi.encode(tokenA, tokenB, binStep)) - ) + bytes memory bytecode = abi.encodePacked( + type(LBPairBeaconProxy).creationCode, + abi.encode(_lbPairBeacon, tokenX, tokenY, binStep, data) ); + + // Deterministic deployment + pair = ILBPair(Create2.deploy(0, salt, bytecode)); } _lbPairsInfo[tokenA][tokenB][binStep] = @@ -377,17 +384,6 @@ contract LBFactory is Ownable2Step, AccessControl, ILBFactory { _availableLBPairBinSteps[tokenA][tokenB].add(binStep); emit LBPairCreated(tokenX, tokenY, binStep, pair, _allLBPairs.length - 1); - - pair.initialize( - preset.getBaseFactor(), - preset.getFilterPeriod(), - preset.getDecayPeriod(), - preset.getReductionFactor(), - preset.getVariableFeeControl(), - preset.getProtocolShare(), - preset.getMaxVolatilityAccumulator(), - activeId - ); } /** diff --git a/src/LBPair.sol b/src/LBPair.sol index 284abe28..4160a143 100644 --- a/src/LBPair.sol +++ b/src/LBPair.sol @@ -1,11 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; - import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {BinHelper} from "./libraries/BinHelper.sol"; -import {Clone} from "./libraries/Clone.sol"; import {Constants} from "./libraries/Constants.sol"; import {FeeHelper} from "./libraries/FeeHelper.sol"; import {LiquidityConfigurations} from "./libraries/math/LiquidityConfigurations.sol"; @@ -24,13 +22,14 @@ import {TreeMath} from "./libraries/math/TreeMath.sol"; import {Uint256x256Math} from "./libraries/math/Uint256x256Math.sol"; import {Hooks} from "./libraries/Hooks.sol"; import {ILBHooks} from "./interfaces/ILBHooks.sol"; +import {LBPairUnstructuredStorage} from "./LBPairUnstructuredStorage.sol"; +import {StorageSlot} from "@openzeppelin/contracts/utils/StorageSlot.sol"; /** * @title Liquidity Book Pair - * @author Trader Sovryn LB * @notice The Liquidity Book Pair contract is the core contract of the Liquidity Book protocol */ -contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { +contract LBPair is LBToken, ReentrancyGuardUpgradeable, LBPairUnstructuredStorage, ILBPair { using BinHelper for bytes32; using FeeHelper for uint128; using LiquidityConfigurations for bytes32; @@ -57,7 +56,6 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { uint256 private constant _MAX_TOTAL_FEE = 0.1e18; // 10% - address public immutable override implementation; ILBFactory private immutable _factory; bytes32 private _parameters; @@ -78,14 +76,12 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { */ constructor(ILBFactory factory_) { _factory = factory_; - implementation = address(this); _disableInitializers(); } /** * @notice Initialize the Liquidity Book Pair fee parameters and active id - * @dev Can only be called by the Liquidity Book Factory * @param baseFactor The base factor for the static fee * @param filterPeriod The filter period for the static fee * @param decayPeriod The decay period for the static fee @@ -119,6 +115,22 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { ); } + /** + * @notice Returns the name of the pair token. + * @return The name of the pair token. + */ + function name() external override(ILBToken, LBToken) view returns (string memory) { + return StorageSlot.getStringSlot(_SLOT_PAIR_NAME).value; + } + + /** + * @notice Returns the symbol of the pair token, usually a shorter version of the name. + * @return The symbol of the pair token. + */ + function symbol() external override(ILBToken, LBToken) view returns (string memory) { + return StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL).value; + } + /** * @notice Returns the Liquidity Book Factory * @return factory The Liquidity Book Factory @@ -131,7 +143,7 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { * @notice Returns the token X of the Liquidity Book Pair * @return tokenX The address of the token X */ - function getTokenX() external pure override returns (IERC20 tokenX) { + function getTokenX() external view override returns (IERC20 tokenX) { return _tokenX(); } @@ -139,7 +151,7 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { * @notice Returns the token Y of the Liquidity Book Pair * @return tokenY The address of the token Y */ - function getTokenY() external pure override returns (IERC20 tokenY) { + function getTokenY() external view override returns (IERC20 tokenY) { return _tokenY(); } @@ -149,7 +161,7 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { * For example, a bin step of 1 means that the price of the next bin is 0.01% higher than the price of the previous bin. * @return binStep The bin step of the Liquidity Book Pair, in 10_000th */ - function getBinStep() external pure override returns (uint16) { + function getBinStep() external view override returns (uint16) { return _binStep(); } @@ -345,7 +357,7 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { * @param id The id of the bin * @return price The price corresponding to this id */ - function getPriceFromId(uint24 id) external pure override returns (uint256 price) { + function getPriceFromId(uint24 id) external view override returns (uint256 price) { price = id.getPriceFromId(_binStep()); } @@ -356,7 +368,7 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { * @param price The price of y per x as a 128.128-binary fixed-point number * @return id The id of the bin corresponding to this price */ - function getIdFromPrice(uint256 price) external pure override returns (uint24 id) { + function getIdFromPrice(uint256 price) external view override returns (uint24 id) { id = price.getIdFromPrice(_binStep()); } @@ -807,7 +819,6 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { /** * @notice Sets the static fee parameters of the pool - * @dev Can only be called by the factory * @param baseFactor The base factor of the static fee * @param filterPeriod The filter period of the static fee * @param decayPeriod The decay period of the static fee @@ -839,7 +850,6 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { /** * @notice Sets the hooks parameter of the pool - * @dev Can only be called by the factory * @param hooksParameters The hooks parameter * @param onHooksSetData The data to be passed to the onHooksSet function of the hooks contract */ @@ -862,7 +872,6 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { /** * @notice Forces the decay of the volatility reference variables - * @dev Can only be called by the factory */ function forceDecay() external override nonReentrant onlyFactory { bytes32 parameters = _parameters; @@ -900,24 +909,24 @@ contract LBPair is LBToken, ReentrancyGuardUpgradeable, Clone, ILBPair { * @dev Returns the address of the token X * @return The address of the token X */ - function _tokenX() internal pure returns (IERC20) { - return IERC20(_getArgAddress(0)); + function _tokenX() internal view returns (IERC20) { + return IERC20(StorageSlot.getAddressSlot(_SLOT_TOKEN_X).value); } /** * @dev Returns the address of the token Y * @return The address of the token Y */ - function _tokenY() internal pure returns (IERC20) { - return IERC20(_getArgAddress(20)); + function _tokenY() internal view returns (IERC20) { + return IERC20(StorageSlot.getAddressSlot(_SLOT_TOKEN_Y).value); } /** * @dev Returns the bin step of the pool, in basis points - * @return The bin step of the pool + * @return binStep The bin step of the pool */ - function _binStep() internal pure returns (uint16) { - return _getArgUint16(40); + function _binStep() internal view returns (uint16) { + return uint16(StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value); } /** diff --git a/src/LBPairBeaconProxy.sol b/src/LBPairBeaconProxy.sol new file mode 100644 index 00000000..74480fcb --- /dev/null +++ b/src/LBPairBeaconProxy.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-3 +pragma solidity 0.8.20; + +import {BeaconProxy, ERC1967Utils} from "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol"; +import {StorageSlot} from "@openzeppelin/contracts/utils/StorageSlot.sol"; +import {LBPairUnstructuredStorage} from "./LBPairUnstructuredStorage.sol"; +import {StringUtils} from "./libraries/StringUtils.sol"; + + +interface IOwnable { + function owner() external view returns (address); +} + +/** + * @dev this is the Proxy contract of the LBPair. + * @dev this contract instantiates LBPair contract via OZ Beacon Proxy (LBPairUpgradeableBeacon in this case). + */ +contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage { + + using StringUtils for uint16; + receive() external payable {} + + constructor(address _beaconAddress, address _tokenX, address _tokenY, uint16 _binStep, bytes memory _data) payable BeaconProxy(_beaconAddress, "") { + (bool successSymbolX, bytes memory symbolXData) = _tokenX.staticcall(abi.encodeWithSignature("symbol()")); + string memory tokenXSymbol = abi.decode(symbolXData, (string)); + + (bool successSymbolY, bytes memory symbolYData) = _tokenY.staticcall(abi.encodeWithSignature("symbol()")); + string memory tokenYSymbol = abi.decode(symbolYData, (string)); + + require(successSymbolX && successSymbolY , "LBPairBeaconProxy: Failed to get token symbols"); + require( + keccak256(bytes(tokenXSymbol)) != keccak256(bytes("")) && + keccak256(bytes(tokenYSymbol)) != keccak256(bytes("")), + "LBPairBeaconProxy: Invalid token symbols" + ); + + StorageSlot.getAddressSlot(_SLOT_TOKEN_X).value = _tokenX; + StorageSlot.getAddressSlot(_SLOT_TOKEN_Y).value = _tokenY; + StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value = _binStep; + string memory binStepStr = _binStep.uint16ToString(); + StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL).value = string.concat("LBT_", tokenXSymbol, "/", tokenYSymbol, "/", binStepStr); + StorageSlot.getStringSlot(_SLOT_PAIR_NAME).value = string.concat("Liquidity Book Token ", tokenXSymbol, "/", tokenYSymbol,"/", binStepStr); + + ERC1967Utils.upgradeBeaconToAndCall(_beaconAddress, _data); + } + + function getLBPairBeacon() external view returns (address) { + return _getBeacon(); + } +} \ No newline at end of file diff --git a/src/LBPairUnstructuredStorage.sol b/src/LBPairUnstructuredStorage.sol new file mode 100644 index 00000000..95b668c2 --- /dev/null +++ b/src/LBPairUnstructuredStorage.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-3 +pragma solidity 0.8.20; + +contract LBPairUnstructuredStorage { + bytes32 internal constant _SLOT_TOKEN_X = 0x3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec31; // keccak256(abi.encode(uint256(keccak256("sovrynlbdex.pair.storage.TokenX")) - 1)); + bytes32 internal constant _SLOT_TOKEN_Y = 0x7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264; // keccak256(abi.encode(uint256(keccak256("sovrynlbdex.pair.storage.TokenY")) - 1)); + bytes32 internal constant _SLOT_BIN_STEP = 0xff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782; // keccak256(abi.encode(uint256(keccak256("sovrynlbdex.pair.storage.BinStep")) - 1)); + bytes32 internal constant _SLOT_PAIR_SYMBOL = 0x64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f; // keccak256(abi.encode(uint256(keccak256("sovrynlbdex.pair.storage.PairTokenSymbol")) - 1)); + bytes32 internal constant _SLOT_PAIR_NAME = 0xd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d84; // keccak256(abi.encode(uint256(keccak256("sovrynlbdex.pair.storage.PairTokenName")) - 1)); + +} \ No newline at end of file diff --git a/src/LBPairUpgradeableBeacon.sol b/src/LBPairUpgradeableBeacon.sol new file mode 100644 index 00000000..0587041e --- /dev/null +++ b/src/LBPairUpgradeableBeacon.sol @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: GPL-3 + +pragma solidity 0.8.20; + +import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol"; +import {BaseUpgradeableBeacon} from "./BaseUpgradeableBeacon.sol"; +import {ILBFactory} from "./interfaces/ILBFactory.sol"; +import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol"; + +contract LBPairUpgradeableBeacon is BaseUpgradeableBeacon { + error Beacon__UnauthorizedCaller(address caller); + error Beacon__IsPaused(); + error Beacon__IsNotPaused(); + error Beacon__NoPausedImplementation(); + + address private _pausedImplementation; + ILBFactory private _lbFactoryAddress; + + // @notice this is a deterministic PausedTarget contract address that is used as the beacon implementation when it's paused. The contract will revert on any function call. It is used because we cant utilize non-contract (i.e. 0x0 or 0x1) as the implementation of the beacon. + address public constant TARGET_PAUSED_CONTRACT_ADDRESS = 0xE919920aE49d3027566025548f12cDaB4E52b595; + + modifier onlyAuthorized() { + if(msg.sender != owner() && !IAccessControl(address(_lbFactoryAddress)).hasRole(_lbFactoryAddress.getPauserRole(), msg.sender)) revert Beacon__UnauthorizedCaller(msg.sender); + _; + } + + modifier whenNotPaused() { + if(isPaused()) revert Beacon__IsPaused(); + _; + } + + modifier whenPaused() { + if(!isPaused()) revert Beacon__IsNotPaused(); + _; + } + + constructor (address _implementation, address _owner, address _factoryAddress) BaseUpgradeableBeacon(_implementation, _owner) { + _lbFactoryAddress = ILBFactory(_factoryAddress); + } + + /** + * @notice toggle function to pause + * Can only be called by owner of this contract or admin addresses that is stored in the factory + * Can only be called when contract is not in paused mode + * Will set the implementation to TARGET_PAUSED_CONTRACT_ADDRESS + */ + function pause() external virtual onlyAuthorized whenNotPaused { + _pausedImplementation = implementation(); + _setImplementation(TARGET_PAUSED_CONTRACT_ADDRESS); + } + + /** + * @notice toggle function to unpause + * Can only be called by owner of this contract or admin addresses that is stored in the factory + * Can only be called when contract is in paused mode + * Will set the implementation from TARGET_PAUSED_CONTRACT_ADDRESS to the paused implementation + */ + function unpause() external virtual onlyAuthorized whenPaused { + if(_pausedImplementation == address(0)) revert Beacon__NoPausedImplementation(); + _setImplementation(_pausedImplementation); + _pausedImplementation = address(0); + } + + /** + * @notice function to check if contract is in paused mode. + * @return true if contract paused, otherwise will return false. + */ + function isPaused() public view returns(bool){ + return implementation() == address(TARGET_PAUSED_CONTRACT_ADDRESS) || _pausedImplementation != address(0); + } + + /** + * @notice getter function for paused implementation + * @return paused implementation address + */ + function pausedImplementation() external view returns(address) { + return _pausedImplementation; + } + + /** + * @notice getter function for lbFactoryAddress + * @return lb factory address + */ + function lbFactoryAddress() external view returns(address) { + return address(_lbFactoryAddress); + } +} \ No newline at end of file diff --git a/src/LBQuoter.sol b/src/LBQuoter.sol index 1d1aa822..414cd670 100644 --- a/src/LBQuoter.sol +++ b/src/LBQuoter.sol @@ -21,7 +21,6 @@ import {ILBRouter} from "./interfaces/ILBRouter.sol"; /** * @title Liquidity Book Quoter - * @author Trader Sovryn LB * @notice Helper contract to determine best path through multiple markets * This contract shouldn't be used on-chain as it consumes a lot of gas * It should be used for off-chain purposes, like calculating the best path for a swap diff --git a/src/LBRouter.sol b/src/LBRouter.sol index 4021fc0b..c954d963 100644 --- a/src/LBRouter.sol +++ b/src/LBRouter.sol @@ -24,19 +24,22 @@ import {ISovrynLBFactoryV1} from "./interfaces/ISovrynLBFactoryV1.sol"; import {ILBLegacyFactory} from "./interfaces/ILBLegacyFactory.sol"; import {ILBFactory} from "./interfaces/ILBFactory.sol"; import {IWNATIVE} from "./interfaces/IWNATIVE.sol"; +import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; /** * @title Liquidity Book Router - * @author Trader Sovryn LB * @notice Main contract to interact with to swap and manage liquidity on Sovryn LB V2 exchange. */ -contract LBRouter is ILBRouter { +contract LBRouter is Initializable, ILBRouter { using TokenHelper for IERC20; using SovrynLBLibrary for uint256; using PackedUint128Math for bytes32; + /// @custom:oz-upgrades-unsafe-allow state-variable-immutable ILBFactory private immutable _factory2; + /// @custom:oz-upgrades-unsafe-allow state-variable-immutable ISovrynLBFactoryV1 private immutable _factoryV1; + /// @custom:oz-upgrades-unsafe-allow state-variable-immutable IWNATIVE private immutable _wnative; modifier onlyFactoryOwner() { @@ -58,11 +61,11 @@ contract LBRouter is ILBRouter { } /** - * @notice Constructor * @param factory2 Address of LB DEX V2.2 factory * @param factoryV1 Address of LB DEX V1 factory * @param wnative Address of WNATIVE */ + /// @custom:oz-upgrades-unsafe-allow constructor constructor( ILBFactory factory2, ISovrynLBFactoryV1 factoryV1, @@ -71,8 +74,12 @@ contract LBRouter is ILBRouter { _factory2 = factory2; _factoryV1 = factoryV1; _wnative = wnative; + + _disableInitializers(); } + function initialize() initializer external {} + /** * @dev Receive function that only accept NATIVE from the WNATIVE contract */ @@ -202,7 +209,7 @@ contract LBRouter is ILBRouter { { ILBPair lbPair = ILBPair( _getLBPairInformation( - liquidityParameters.tokenX, liquidityParameters.tokenY, liquidityParameters.binStep, Version.V2 + liquidityParameters.tokenX, liquidityParameters.tokenY, liquidityParameters.binStep ) ); if (liquidityParameters.tokenX != lbPair.getTokenX()) revert LBRouter__WrongTokenOrder(); @@ -240,7 +247,7 @@ contract LBRouter is ILBRouter { { ILBPair _LBPair = ILBPair( _getLBPairInformation( - liquidityParameters.tokenX, liquidityParameters.tokenY, liquidityParameters.binStep, Version.V2 + liquidityParameters.tokenX, liquidityParameters.tokenY, liquidityParameters.binStep ) ); if (liquidityParameters.tokenX != _LBPair.getTokenX()) revert LBRouter__WrongTokenOrder(); @@ -291,7 +298,7 @@ contract LBRouter is ILBRouter { address to, uint256 deadline ) external override ensure(deadline) returns (uint256 amountX, uint256 amountY) { - ILBPair _LBPair = ILBPair(_getLBPairInformation(tokenX, tokenY, binStep, Version.V2)); + ILBPair _LBPair = ILBPair(_getLBPairInformation(tokenX, tokenY, binStep)); bool isWrongOrder = tokenX != _LBPair.getTokenX(); if (isWrongOrder) (amountXMin, amountYMin) = (amountYMin, amountXMin); @@ -327,7 +334,7 @@ contract LBRouter is ILBRouter { address payable to, uint256 deadline ) external override ensure(deadline) returns (uint256 amountToken, uint256 amountNATIVE) { - ILBPair lbPair = ILBPair(_getLBPairInformation(token, IERC20(_wnative), binStep, Version.V2)); + ILBPair lbPair = ILBPair(_getLBPairInformation(token, IERC20(_wnative), binStep)); { bool isNATIVETokenY = IERC20(_wnative) == lbPair.getTokenY(); @@ -961,10 +968,9 @@ contract LBRouter is ILBRouter { * @param tokenX The address of the tokenX * @param tokenY The address of the tokenY * @param binStep The bin step of the LBPair - * @param version The version of the LBPair * @return lbPair The address of the LBPair */ - function _getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep, Version version) + function _getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep) private view returns (address lbPair) @@ -994,7 +1000,7 @@ contract LBRouter is ILBRouter { pair = _factoryV1.getPair(address(tokenX), address(tokenY)); if (pair == address(0)) revert LBRouter__PairNotCreated(address(tokenX), address(tokenY), binStep); } else { - pair = address(_getLBPairInformation(tokenX, tokenY, binStep, version)); + pair = address(_getLBPairInformation(tokenX, tokenY, binStep)); } } diff --git a/src/LBToken.sol b/src/LBToken.sol index 4ee4bb8e..28750a86 100644 --- a/src/LBToken.sol +++ b/src/LBToken.sol @@ -6,7 +6,6 @@ import {ILBToken} from "./interfaces/ILBToken.sol"; /** * @title Liquidity Book Token - * @author Trader Sovryn LB * @notice The LBToken is an implementation of a multi-token. * It allows to create multi-ERC20 represented by their ids. * Its implementation is really similar to the ERC1155 standard the main difference @@ -58,7 +57,7 @@ abstract contract LBToken is ILBToken { * @notice Returns the name of the token. * @return The name of the token. */ - function name() public view virtual override returns (string memory) { + function name() external view virtual override returns (string memory) { return "Liquidity Book Token"; } @@ -66,7 +65,7 @@ abstract contract LBToken is ILBToken { * @notice Returns the symbol of the token, usually a shorter version of the name. * @return The symbol of the token. */ - function symbol() public view virtual override returns (string memory) { + function symbol() external view virtual override returns (string memory) { return "LBT"; } diff --git a/src/PausedTarget.sol b/src/PausedTarget.sol new file mode 100644 index 00000000..6af4e39f --- /dev/null +++ b/src/PausedTarget.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.20; + +/** + * @notice This is a placeholder contract that is used as the beacon implementation when it's paused. + * Since we can't use the non-contract (e.g: 0x0, 0x1) as the implementation of the beacon, so we will use this contract instead. + */ +contract PausedTarget { + error ContractIsPaused(); + constructor() {} + + fallback() external payable { + revert ContractIsPaused(); + } +} diff --git a/src/artifacts/LBFactory.json b/src/artifacts/LBFactory.json index e193f6fa..35ac6dc0 100644 --- a/src/artifacts/LBFactory.json +++ b/src/artifacts/LBFactory.json @@ -32,3257 +32,1552 @@ "data": { "bytecode": { "functionDebugData": { - "@_3549": { + "@_5122": { "entryPoint": null, - "id": 3549, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_429": { - "entryPoint": null, - "id": 429, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@_setFeeRecipient_4841": { - "entryPoint": 426, - "id": 4841, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@_transferOwnership_525": { - "entryPoint": 840, - "id": 525, - "parameterSlots": 1, + "id": 5122, + "parameterSlots": 0, "returnSlots": 0 }, - "@_transferOwnership_587": { - "entryPoint": 370, - "id": 587, - "parameterSlots": 1, + "@_disableInitializers_916": { + "entryPoint": 39, + "id": 916, + "parameterSlots": 0, "returnSlots": 0 }, - "abi_decode_t_address_fromMemory": { - "entryPoint": 1112, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint256_fromMemory": { - "entryPoint": 1168, - "id": null, - "parameterSlots": 2, + "@_getInitializableStorage_947": { + "entryPoint": 299, + "id": 947, + "parameterSlots": 0, "returnSlots": 1 }, - "abi_decode_tuple_t_addresst_addresst_uint256_fromMemory": { - "entryPoint": 1190, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_encode_t_address_to_t_address_fromStack": { - "entryPoint": 1279, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": { - "entryPoint": 1440, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_uint256_to_t_uint256_fromStack": { - "entryPoint": 1323, + "abi_encode_t_uint64_to_t_uint64_fromStack": { + "entryPoint": 357, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": 1296, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": 374, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { - "entryPoint": 1500, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 1457, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 1340, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "allocate_unbounded": { - "entryPoint": null, - "id": null, - "parameterSlots": 0, - "returnSlots": 1 - }, - "cleanup_t_address": { - "entryPoint": 1068, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_rational_0_by_1": { - "entryPoint": 1383, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint160": { - "entryPoint": 1037, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint256": { - "entryPoint": 1134, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_rational_0_by_1_to_t_uint256": { - "entryPoint": 1401, + "cleanup_t_uint64": { + "entryPoint": 338, "id": null, "parameterSlots": 1, "returnSlots": 1 - }, - "identity": { - "entryPoint": 1392, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { - "entryPoint": null, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { - "entryPoint": 1033, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "validator_revert_t_address": { - "entryPoint": 1087, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_uint256": { - "entryPoint": 1143, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", - "src": "0:3851:26", + "src": "0:456:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "47:35:26", + "src": "51:57:40", "statements": [ { "nodeType": "YulAssignment", - "src": "57:19:26", + "src": "61:41:40", "value": { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "76:5:40" + }, { "kind": "number", "nodeType": "YulLiteral", - "src": "73:2:26", + "src": "83:18:40", "type": "", - "value": "64" + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "mload", + "name": "and", "nodeType": "YulIdentifier", - "src": "67:5:26" + "src": "72:3:40" }, "nodeType": "YulFunctionCall", - "src": "67:9:26" + "src": "72:30:40" }, "variableNames": [ { - "name": "memPtr", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "57:6:26" + "src": "61:7:40" } ] } ] }, - "name": "allocate_unbounded", + "name": "cleanup_t_uint64", "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33:5:40", + "type": "" + } + ], "returnVariables": [ { - "name": "memPtr", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "40:6:26", + "src": "43:7:40", "type": "" } ], - "src": "7:75:26" + "src": "7:101:40" }, { "body": { "nodeType": "YulBlock", - "src": "177:28:26", + "src": "177:52:40", "statements": [ { "expression": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "194:1:26", - "type": "", - "value": "0" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "194:3:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "197:1:26", - "type": "", - "value": "0" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "216:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "199:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "199:23:40" } ], "functionName": { - "name": "revert", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "187:6:26" + "src": "187:6:40" }, "nodeType": "YulFunctionCall", - "src": "187:12:26" + "src": "187:36:40" }, "nodeType": "YulExpressionStatement", - "src": "187:12:26" + "src": "187:36:40" } ] }, - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", "nodeType": "YulFunctionDefinition", - "src": "88:117:26" + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "165:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "172:3:40", + "type": "" + } + ], + "src": "114:115:40" }, { "body": { "nodeType": "YulBlock", - "src": "300:28:26", + "src": "331:122:40", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "341:26:40", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "317:1:26", - "type": "", - "value": "0" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "353:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "320:1:26", + "src": "364:2:40", "type": "", - "value": "0" + "value": "32" } ], "functionName": { - "name": "revert", + "name": "add", "nodeType": "YulIdentifier", - "src": "310:6:26" + "src": "349:3:40" }, "nodeType": "YulFunctionCall", - "src": "310:12:26" + "src": "349:18:40" }, - "nodeType": "YulExpressionStatement", - "src": "310:12:26" - } - ] - }, - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulFunctionDefinition", - "src": "211:117:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "379:81:26", - "statements": [ + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "341:4:40" + } + ] + }, { - "nodeType": "YulAssignment", - "src": "389:65:26", - "value": { + "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "404:5:26" + "src": "419:6:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "411:42:26", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "432:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "443:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "428:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "428:17:40" } ], "functionName": { - "name": "and", + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", "nodeType": "YulIdentifier", - "src": "400:3:26" + "src": "377:41:40" }, "nodeType": "YulFunctionCall", - "src": "400:54:26" + "src": "377:69:40" }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "389:7:26" - } - ] + "nodeType": "YulExpressionStatement", + "src": "377:69:40" } ] }, - "name": "cleanup_t_uint160", + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "303:9:40", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "361:5:26", + "src": "315:6:40", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "tail", "nodeType": "YulTypedName", - "src": "371:7:26", + "src": "326:4:40", "type": "" } ], - "src": "334:126:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "511:51:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "521:35:26", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "550:5:26" - } - ], - "functionName": { - "name": "cleanup_t_uint160", - "nodeType": "YulIdentifier", - "src": "532:17:26" - }, - "nodeType": "YulFunctionCall", - "src": "532:24:26" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "521:7:26" - } - ] - } - ] - }, - "name": "cleanup_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "493:5:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "503:7:26", - "type": "" - } - ], - "src": "466:96:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "611:79:26", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "668:16:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "677:1:26", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "680:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "670:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "670:12:26" - }, - "nodeType": "YulExpressionStatement", - "src": "670:12:26" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "634:5:26" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "659:5:26" - } - ], - "functionName": { - "name": "cleanup_t_address", - "nodeType": "YulIdentifier", - "src": "641:17:26" - }, - "nodeType": "YulFunctionCall", - "src": "641:24:26" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "631:2:26" - }, - "nodeType": "YulFunctionCall", - "src": "631:35:26" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "624:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "624:43:26" - }, - "nodeType": "YulIf", - "src": "621:63:26" - } - ] - }, - "name": "validator_revert_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "604:5:26", - "type": "" - } - ], - "src": "568:122:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "759:80:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "769:22:26", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "784:6:26" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "778:5:26" - }, - "nodeType": "YulFunctionCall", - "src": "778:13:26" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "769:5:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "827:5:26" - } - ], - "functionName": { - "name": "validator_revert_t_address", - "nodeType": "YulIdentifier", - "src": "800:26:26" - }, - "nodeType": "YulFunctionCall", - "src": "800:33:26" - }, - "nodeType": "YulExpressionStatement", - "src": "800:33:26" - } - ] - }, - "name": "abi_decode_t_address_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "737:6:26", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "745:3:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "753:5:26", - "type": "" - } - ], - "src": "696:143:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "890:32:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "900:16:26", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "911:5:26" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "900:7:26" - } - ] - } - ] - }, - "name": "cleanup_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "872:5:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "882:7:26", - "type": "" - } - ], - "src": "845:77:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "971:79:26", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1028:16:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1037:1:26", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1040:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1030:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "1030:12:26" - }, - "nodeType": "YulExpressionStatement", - "src": "1030:12:26" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "994:5:26" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1019:5:26" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "1001:17:26" - }, - "nodeType": "YulFunctionCall", - "src": "1001:24:26" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "991:2:26" - }, - "nodeType": "YulFunctionCall", - "src": "991:35:26" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "984:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "984:43:26" - }, - "nodeType": "YulIf", - "src": "981:63:26" - } - ] - }, - "name": "validator_revert_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "964:5:26", - "type": "" - } - ], - "src": "928:122:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1119:80:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1129:22:26", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1144:6:26" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1138:5:26" - }, - "nodeType": "YulFunctionCall", - "src": "1138:13:26" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1129:5:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1187:5:26" - } - ], - "functionName": { - "name": "validator_revert_t_uint256", - "nodeType": "YulIdentifier", - "src": "1160:26:26" - }, - "nodeType": "YulFunctionCall", - "src": "1160:33:26" - }, - "nodeType": "YulExpressionStatement", - "src": "1160:33:26" - } - ] - }, - "name": "abi_decode_t_uint256_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1097:6:26", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "1105:3:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "1113:5:26", - "type": "" - } - ], - "src": "1056:143:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1316:552:26", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1362:83:26", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "1364:77:26" - }, - "nodeType": "YulFunctionCall", - "src": "1364:79:26" - }, - "nodeType": "YulExpressionStatement", - "src": "1364:79:26" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1337:7:26" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1346:9:26" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1333:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "1333:23:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1358:2:26", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1329:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "1329:32:26" - }, - "nodeType": "YulIf", - "src": "1326:119:26" - }, - { - "nodeType": "YulBlock", - "src": "1455:128:26", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1470:15:26", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1484:1:26", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1474:6:26", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1499:74:26", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1545:9:26" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1556:6:26" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1541:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "1541:22:26" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1565:7:26" - } - ], - "functionName": { - "name": "abi_decode_t_address_fromMemory", - "nodeType": "YulIdentifier", - "src": "1509:31:26" - }, - "nodeType": "YulFunctionCall", - "src": "1509:64:26" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1499:6:26" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "1593:129:26", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1608:16:26", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1622:2:26", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1612:6:26", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1638:74:26", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1684:9:26" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1695:6:26" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1680:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "1680:22:26" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1704:7:26" - } - ], - "functionName": { - "name": "abi_decode_t_address_fromMemory", - "nodeType": "YulIdentifier", - "src": "1648:31:26" - }, - "nodeType": "YulFunctionCall", - "src": "1648:64:26" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1638:6:26" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "1732:129:26", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1747:16:26", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1761:2:26", - "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1751:6:26", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1777:74:26", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1823:9:26" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1834:6:26" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1819:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "1819:22:26" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1843:7:26" - } - ], - "functionName": { - "name": "abi_decode_t_uint256_fromMemory", - "nodeType": "YulIdentifier", - "src": "1787:31:26" - }, - "nodeType": "YulFunctionCall", - "src": "1787:64:26" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1777:6:26" - } - ] - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_addresst_addresst_uint256_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1270:9:26", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1281:7:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1293:6:26", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1301:6:26", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1309:6:26", - "type": "" - } - ], - "src": "1205:663:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1939:53:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "1956:3:26" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1979:5:26" - } - ], - "functionName": { - "name": "cleanup_t_address", - "nodeType": "YulIdentifier", - "src": "1961:17:26" - }, - "nodeType": "YulFunctionCall", - "src": "1961:24:26" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1949:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "1949:37:26" - }, - "nodeType": "YulExpressionStatement", - "src": "1949:37:26" - } - ] - }, - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "1927:5:26", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "1934:3:26", - "type": "" - } - ], - "src": "1874:118:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2096:124:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2106:26:26", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2118:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2129:2:26", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2114:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "2114:18:26" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2106:4:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2186:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2199:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2210:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2195:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "2195:17:26" - } - ], - "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "2142:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "2142:71:26" - }, - "nodeType": "YulExpressionStatement", - "src": "2142:71:26" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2068:9:26", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2080:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2091:4:26", - "type": "" - } - ], - "src": "1998:222:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2291:53:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "2308:3:26" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2331:5:26" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "2313:17:26" - }, - "nodeType": "YulFunctionCall", - "src": "2313:24:26" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2301:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "2301:37:26" - }, - "nodeType": "YulExpressionStatement", - "src": "2301:37:26" - } - ] - }, - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2279:5:26", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "2286:3:26", - "type": "" - } - ], - "src": "2226:118:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2476:206:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2486:26:26", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2498:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2509:2:26", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2494:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "2494:18:26" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2486:4:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2566:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2579:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2590:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2575:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "2575:17:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "2522:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "2522:71:26" - }, - "nodeType": "YulExpressionStatement", - "src": "2522:71:26" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2647:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2660:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2671:2:26", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2656:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "2656:18:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "2603:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "2603:72:26" - }, - "nodeType": "YulExpressionStatement", - "src": "2603:72:26" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2440:9:26", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2452:6:26", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2460:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2471:4:26", - "type": "" - } - ], - "src": "2350:332:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2741:32:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2751:16:26", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2762:5:26" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "2751:7:26" - } - ] - } - ] - }, - "name": "cleanup_t_rational_0_by_1", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2723:5:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "2733:7:26", - "type": "" - } - ], - "src": "2688:85:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2811:28:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2821:12:26", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2828:5:26" - }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "2821:3:26" - } - ] - } - ] - }, - "name": "identity", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2797:5:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "ret", - "nodeType": "YulTypedName", - "src": "2807:3:26", - "type": "" - } - ], - "src": "2779:60:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2913:90:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2923:74:26", - "value": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2989:5:26" - } - ], - "functionName": { - "name": "cleanup_t_rational_0_by_1", - "nodeType": "YulIdentifier", - "src": "2963:25:26" - }, - "nodeType": "YulFunctionCall", - "src": "2963:32:26" - } - ], - "functionName": { - "name": "identity", - "nodeType": "YulIdentifier", - "src": "2954:8:26" - }, - "nodeType": "YulFunctionCall", - "src": "2954:42:26" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "2936:17:26" - }, - "nodeType": "YulFunctionCall", - "src": "2936:61:26" - }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "2923:9:26" - } - ] - } - ] - }, - "name": "convert_t_rational_0_by_1_to_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2893:5:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", - "nodeType": "YulTypedName", - "src": "2903:9:26", - "type": "" - } - ], - "src": "2845:158:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3082:74:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3099:3:26" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3143:5:26" - } - ], - "functionName": { - "name": "convert_t_rational_0_by_1_to_t_uint256", - "nodeType": "YulIdentifier", - "src": "3104:38:26" - }, - "nodeType": "YulFunctionCall", - "src": "3104:45:26" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3092:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "3092:58:26" - }, - "nodeType": "YulExpressionStatement", - "src": "3092:58:26" - } - ] - }, - "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "3070:5:26", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "3077:3:26", - "type": "" - } - ], - "src": "3009:147:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3296:214:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3306:26:26", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3318:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3329:2:26", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3314:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "3314:18:26" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3306:4:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3394:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3407:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3418:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3403:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "3403:17:26" - } - ], - "functionName": { - "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "3342:51:26" - }, - "nodeType": "YulFunctionCall", - "src": "3342:79:26" - }, - "nodeType": "YulExpressionStatement", - "src": "3342:79:26" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3475:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3488:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3499:2:26", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3484:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "3484:18:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "3431:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "3431:72:26" - }, - "nodeType": "YulExpressionStatement", - "src": "3431:72:26" - } - ] - }, - "name": "abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3260:9:26", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3272:6:26", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3280:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3291:4:26", - "type": "" - } - ], - "src": "3162:348:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3642:206:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3652:26:26", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3664:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3675:2:26", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3660:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "3660:18:26" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3652:4:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3732:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3745:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3756:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3741:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "3741:17:26" - } - ], - "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "3688:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "3688:71:26" - }, - "nodeType": "YulExpressionStatement", - "src": "3688:71:26" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3813:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3826:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3837:2:26", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3822:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "3822:18:26" - } - ], - "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "3769:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "3769:72:26" - }, - "nodeType": "YulExpressionStatement", - "src": "3769:72:26" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3606:9:26", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3618:6:26", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3626:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3637:4:26", - "type": "" - } - ], - "src": "3516:332:26" + "src": "235:218:40" } ] }, - "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_rational_0_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n}\n", - "id": 26, + "contents": "{\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 40, "language": "Yul", "name": "#utility.yul" } ], "linkReferences": {}, - "object": "608060405234801562000010575f80fd5b506040516200574d3803806200574d8339818101604052810190620000369190620004a6565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000aa575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a1919062000510565b60405180910390fd5b620000bb816200017260201b60201c565b5067016345785d8a000081111562000116578067016345785d8a00006040517f5e8988c10000000000000000000000000000000000000000000000000000000081526004016200010d9291906200053c565b60405180910390fd5b6200012783620001aa60201b60201c565b806004819055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e505f8260405162000161929190620005b1565b60405180910390a150505062000607565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620001a7816200034860201b60201c565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000210576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620002c95760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f4fcea971000000000000000000000000000000000000000000000000000000008152600401620002c0919062000510565b60405180910390fd5b8160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa7084015272181836040516200033c929190620005dc565b60405180910390a15050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000438826200040d565b9050919050565b6200044a816200042c565b811462000455575f80fd5b50565b5f8151905062000468816200043f565b92915050565b5f819050919050565b62000482816200046e565b81146200048d575f80fd5b50565b5f81519050620004a08162000477565b92915050565b5f805f60608486031215620004c057620004bf62000409565b5b5f620004cf8682870162000458565b9350506020620004e28682870162000458565b9250506040620004f58682870162000490565b9150509250925092565b6200050a816200042c565b82525050565b5f602082019050620005255f830184620004ff565b92915050565b62000536816200046e565b82525050565b5f604082019050620005515f8301856200052b565b6200056060208301846200052b565b9392505050565b5f819050919050565b5f819050919050565b5f62000599620005936200058d8462000567565b62000570565b6200046e565b9050919050565b620005ab8162000579565b82525050565b5f604082019050620005c65f830185620005a0565b620005d560208301846200052b565b9392505050565b5f604082019050620005f15f830185620004ff565b620006006020830184620004ff565b9392505050565b61513880620006155f395ff3fe608060405234801561000f575f80fd5b506004361061025c575f3560e01c8063701ab8c111610144578063aabc4b3c116100c1578063e203a31f11610085578063e203a31f14610711578063e30c39781461072d578063e74b981b1461074b578063e92d0d5d14610767578063f2fde38b14610783578063fd90c2be1461079f5761025c565b8063aabc4b3c14610668578063af3710651461069f578063b0384781146106bd578063d547741f146106d9578063ddbfd941146106f55761025c565b806380c5061e1161010857806380c5061e146105c05780638ce9aa1c146105de5780638da5cb5b146105fc57806391d148541461061a578063a217fddf1461064a5761025c565b8063701ab8c11461052e578063704037bd1461054c578063715018a61461057c57806379ba5097146105865780637daf5d66146105905761025c565b8063379ee803116101dd5780634e937c3a116101a15780634e937c3a1461045a5780635a440923146104785780635b35875c14610494578063659ac74b146104b25780636622e0d7146104e257806369d56ea3146105125761025c565b8063379ee803146103cc5780633a2f1a91146103e85780633c78a941146104045780634ccb20c0146104205780634cd161d31461043e5761025c565b8063248a9ca311610224578063248a9ca31461031857806327721842146103485780632cc06b8c146103785780632f2ff15d1461039457806336568abe146103b05761025c565b806301ffc9a7146102605780630282c9c1146102905780630752092b146102ae578063093ff769146102de5780631af5bacc146102fa575b5f80fd5b61027a60048036038101906102759190613dfb565b6107bd565b6040516102879190613e40565b60405180910390f35b610298610836565b6040516102a59190613f19565b60405180910390f35b6102c860048036038101906102c39190613f63565b610922565b6040516102d59190614008565b60405180910390f35b6102f860048036038101906102f391906140dc565b61093e565b005b610302610a4f565b60405161030f91906141cd565b60405180910390f35b610332600480360381019061032d9190614210565b610a73565b60405161033f91906141cd565b60405180910390f35b610362600480360381019061035d919061423b565b610a90565b60405161036f9190613e40565b60405180910390f35b610392600480360381019061038d9190614266565b610aac565b005b6103ae60048036038101906103a991906142e0565b610b37565b005b6103ca60048036038101906103c591906142e0565b610b59565b005b6103e660048036038101906103e19190614348565b610bd4565b005b61040260048036038101906103fd919061446d565b610d0f565b005b61041e6004803603810190610419919061453e565b610e2c565b005b610428610e92565b6040516104359190614578565b60405180910390f35b61045860048036038101906104539190614591565b610eba565b005b610462610ff3565b60405161046f91906145de565b60405180910390f35b610492600480360381019061048d919061423b565b610fff565b005b61049c6110a2565b6040516104a99190613f19565b60405180910390f35b6104cc60048036038101906104c791906145f7565b6110b3565b6040516104d9919061467b565b60405180910390f35b6104fc60048036038101906104f79190614694565b61189b565b60405161050991906147fa565b60405180910390f35b61052c6004803603810190610527919061481a565b611b27565b005b610536611e37565b60405161054391906145de565b60405180910390f35b6105666004803603810190610561919061487e565b611e3f565b6040516105739190614921565b60405180910390f35b610584611e5b565b005b61058e611e6e565b005b6105aa60048036038101906105a59190613f63565b611efc565b6040516105b7919061467b565b60405180910390f35b6105c8611f40565b6040516105d591906145de565b60405180910390f35b6105e6611f50565b6040516105f391906145de565b60405180910390f35b610604611f5f565b6040516106119190614578565b60405180910390f35b610634600480360381019061062f91906142e0565b611f86565b6040516106419190613e40565b60405180910390f35b610652611fe0565b60405161065f91906141cd565b60405180910390f35b610682600480360381019061067d9190613f63565b611fe6565b60405161069698979695949392919061493a565b60405180910390f35b6106a76120e9565b6040516106b49190614578565b60405180910390f35b6106d760048036038101906106d291906149b6565b612111565b005b6106f360048036038101906106ee91906142e0565b612307565b005b61070f600480360381019061070a919061423b565b612329565b005b61072b600480360381019061072691906149e1565b6123cc565b005b610735612461565b6040516107429190614578565b60405180910390f35b610765600480360381019061076091906149b6565b612489565b005b610781600480360381019061077c9190613f63565b61249d565b005b61079d600480360381019061079891906149b6565b61258a565b005b6107a7612636565b6040516107b491906145de565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061082f575061082e8261263f565b5b9050919050565b60605f61084360086126a8565b90505f81111561091e578067ffffffffffffffff81111561086757610866614a0c565b5b6040519080825280602002602001820160405280156108955781602001602082028036833780820191505090505b5091505f805b8281101561090f575f806108b98360086126bb90919063ffffffff16565b915091506108c8815f1b6126e2565b156108fc57818685815181106108e1576108e0614a39565b5b60200260200101818152505083806108f890614a93565b9450505b50508061090890614a93565b905061089b565b508181101561091c578083525b505b5090565b5f61093782600b6126fe90919063ffffffff16565b9050919050565b610946612715565b5f6109568b8b8b61ffff1661279c565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109d0578a8a8a6040517fb65ee9530000000000000000000000000000000000000000000000000000000081526004016109c793929190614b0a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16636653851a898989898989896040518863ffffffff1660e01b8152600401610a159796959493929190614b5d565b5f604051808303815f87803b158015610a2c575f80fd5b505af1158015610a3e573d5f803e3d5ffd5b505050505050505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b5f60025f8381526020019081526020015f20600101549050919050565b5f610aa582600b6128f890919063ffffffff16565b9050919050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610ad681612925565b610b318484845f801b5f67ffffffffffffffff811115610af957610af8614a0c565b5b6040519080825280601f01601f191660200182016040528015610b2b5781602001600182028036833780820191505090505b50612939565b50505050565b610b4082610a73565b610b4981612925565b610b538383612ae3565b50505050565b610b61612b31565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc5576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcf8282612b38565b505050565b610bdc612715565b60018961ffff161015610c2657886040517f4f958e71000000000000000000000000000000000000000000000000000000008152600401610c1d9190614bca565b60405180910390fd5b5f610c48898989898989895f801b612c2290979695949392919063ffffffff16565b90508115610c6a57610c67600160ff83612dbf9092919063ffffffff16565b90505b610c868a61ffff16825f1c6008612de69092919063ffffffff16565b508961ffff167f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a288a8a8a8a8a8a8a604051610cc79796959493929190614c13565b60405180910390a28115158a61ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610d3981612925565b5f73ffffffffffffffffffffffffffffffffffffffff16610d5985612e01565b73ffffffffffffffffffffffffffffffffffffffff161480610d9c57505f60a01b610d8385612e0c565b73ffffffffffffffffffffffffffffffffffffffff1916145b15610dd3576040517fd43a15d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e238787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612939565b50505050505050565b610e34612715565b8073ffffffffffffffffffffffffffffffffffffffff1663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e79575f80fd5b505af1158015610e8b573d5f803e3d5ffd5b5050505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ec2612715565b610eda8261ffff166008612e1590919063ffffffff16565b610f1b57816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401610f129190614bca565b60405180910390fd5b5f610f348361ffff166008612e2c90919063ffffffff16565b5f1b9050811515610f4f60ff83612e4590919063ffffffff16565b151503610f88576040517f237c71b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb98361ffff16610fa68460ff85612dbf9092919063ffffffff16565b5f1c6008612de69092919063ffffffff16565b508115158361ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a3505050565b5f600680549050905090565b611007612715565b61101b81600b612e5490919063ffffffff16565b61105c57806040517f03ce0ad90000000000000000000000000000000000000000000000000000000081526004016110539190614008565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e60405160405180910390a250565b60606110ae6008612e81565b905090565b5f6110cc8261ffff166008612e1590919063ffffffff16565b61110d57816040517ffb22c17e0000000000000000000000000000000000000000000000000000000081526004016111049190614bca565b60405180910390fd5b5f6111268361ffff166008612e2c90919063ffffffff16565b5f1b90505f611133611f5f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905061116c826126e2565b158015611177575080155b156111bb5733846040517f09f85fce0000000000000000000000000000000000000000000000000000000081526004016111b2929190614c80565b60405180910390fd5b6111cf86600b6128f890919063ffffffff16565b61121057856040517f8e888ef30000000000000000000000000000000000000000000000000000000081526004016112079190614008565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361128057866040517f2f9b18530000000000000000000000000000000000000000000000000000000081526004016112779190614008565b60405180910390fd5b61128a8585612ea0565b505f806112978989612ed6565b915091505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611300576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611421578888876040517fcb27a43500000000000000000000000000000000000000000000000000000000815260040161141893929190614b0a565b60405180910390fd5b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ab576040517fa2d3f3e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611503818b8b8a6040516020016114c493929190614d20565b60405160208183030381529060405285858b6040516020016114e893929190614d5c565b60405160208183030381529060405280519060200120612f24565b95505060405180608001604052808761ffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200184151581526020015f151581525060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600685908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117658661ffff16600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612fdf90919063ffffffff16565b508561ffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506117cd9190614d91565b6040516117db929190614dc4565b60405180910390a48473ffffffffffffffffffffffffffffffffffffffff166347973bff61180886612ff6565b61181187613011565b61181a8861302d565b61182389613049565b61182c8a613065565b6118358b613081565b61183e8c61309d565b8f6040518963ffffffff1660e01b8152600401611862989796959493929190614deb565b5f604051808303815f87803b158015611879575f80fd5b505af115801561188b573d5f803e3d5ffd5b5050505050505050949350505050565b60605f806118a98585612ed6565b915091505f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f611932826130b9565b90505f811115611b1d578067ffffffffffffffff81111561195657611955614a0c565b5b60405190808252806020026020018201604052801561198f57816020015b61197c613d5c565b8152602001906001900390816119745790505b5094505f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b82811015611b1a575f611a33611a2e83876130cc90919063ffffffff16565b6130e3565b905060405180608001604052808261ffff168152602001845f8461ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001845f8461ffff1681526020019081526020015f205f0160169054906101000a900460ff1615158152602001845f8461ffff1681526020019081526020015f205f0160179054906101000a900460ff161515815250888381518110611b0357611b02614a39565b5b602002602001018190525050806001019050611a0f565b50505b5050505092915050565b611b2f612715565b5f80611b3b8686612ed6565b915091505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8661ffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1603611cf7578686866040517f40aa4644000000000000000000000000000000000000000000000000000000008152600401611cee93929190614b0a565b60405180910390fd5b8315158160600151151503611d37576040517eddccca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8761ffff1681526020019081526020015f205f0160176101000a81548160ff021916908315150217905550806020015173ffffffffffffffffffffffffffffffffffffffff167f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f85604051611e269190613e40565b60405180910390a250505050505050565b5f6001905090565b611e47613d5c565b611e5284848461279c565b90509392505050565b611e63612715565b611e6c5f613129565b565b5f611e77612b31565b90508073ffffffffffffffffffffffffffffffffffffffff16611e98612461565b73ffffffffffffffffffffffffffffffffffffffff1614611ef057806040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611ee79190614578565b60405180910390fd5b611ef981613129565b50565b5f60068281548110611f1157611f10614a39565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f611f4b600b613159565b905090565b5f67016345785d8a0000905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f1b8303611fcd57611f98611f5f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611fda565b611fd7838361316c565b90505b92915050565b5f801b81565b5f805f805f805f80612002896008612e1590919063ffffffff16565b61204357886040517ffb22c17e00000000000000000000000000000000000000000000000000000000815260040161203a91906145de565b60405180910390fd5b5f6120588a6008612e2c90919063ffffffff16565b5f1b905061206581612ff6565b61ffff16985061207481613011565b61ffff1697506120838161302d565b61ffff16965061209281613049565b61ffff1695506120a181613065565b62ffffff1694506120b181613081565b61ffff1693506120c08161309d565b62ffffff1692506120db60ff82612e4590919063ffffffff16565b915050919395975091939597565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612119612715565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612179573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219d9190614ea2565b73ffffffffffffffffffffffffffffffffffffffff16146121f557806040517f147ce15e0000000000000000000000000000000000000000000000000000000081526004016121ec9190614578565b60405180910390fd5b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361228a57816040517f6f69dca80000000000000000000000000000000000000000000000000000000081526004016122819190614578565b60405180910390fd5b8160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e81836040516122fb929190614ecd565b60405180910390a15050565b61231082610a73565b61231981612925565b6123238383612b38565b50505050565b612331612715565b61234581600b6131d090919063ffffffff16565b61238657806040517f8e888ef300000000000000000000000000000000000000000000000000000000815260040161237d9190614008565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb360405160405180910390a250565b6123d4612715565b6123ec8161ffff1660086131fd90919063ffffffff16565b61242d57806040517ffb22c17e0000000000000000000000000000000000000000000000000000000081526004016124249190614bca565b60405180910390fd5b8061ffff167fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1360405160405180910390a250565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612491612715565b61249a81613214565b50565b6124a5612715565b5f60045490508181036124ef57816040517f6ea8c7a40000000000000000000000000000000000000000000000000000000081526004016124e691906145de565b60405180910390fd5b67016345785d8a0000821115612546578167016345785d8a00006040517f5e8988c100000000000000000000000000000000000000000000000000000000815260040161253d929190614ef4565b60405180910390fd5b816004819055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50818360405161257e929190614ef4565b60405180910390a15050565b612592612715565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166125f1611f5f565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f600454905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f6126b4825f016133ac565b9050919050565b5f805f806126cb865f01866133bf565b91509150815f1c815f1c9350935050509250929050565b5f6126f760ff83612e4590919063ffffffff16565b9050919050565b5f61270b835f01836133fa565b5f1c905092915050565b61271d612b31565b73ffffffffffffffffffffffffffffffffffffffff1661273b611f5f565b73ffffffffffffffffffffffffffffffffffffffff161461279a5761275e612b31565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016127919190614578565b60405180910390fd5b565b6127a4613d5c565b6127ae8484612ed6565b809450819550505060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090509392505050565b5f61291d835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613421565b905092915050565b61293681612931612b31565b613441565b50565b5f61294986868661ffff1661279c565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129c3578585856040517fb65ee9530000000000000000000000000000000000000000000000000000000081526004016129ba93929190614b0a565b60405180910390fd5b828173ffffffffffffffffffffffffffffffffffffffff1663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a319190614f2f565b03612a7357826040517fb70cd0db000000000000000000000000000000000000000000000000000000008152600401612a6a91906141cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16631b057f6d84846040518363ffffffff1660e01b8152600401612aae929190614fe4565b5f604051808303815f87803b158015612ac5575f80fd5b505af1158015612ad7573d5f803e3d5ffd5b50505050505050505050565b5f805f1b8303612b1f576040517f7c64a79e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b298383613492565b905092915050565b5f33905090565b5f612b438383611f86565b15612c18575f60025f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550612bb5612b31565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050612c1c565b5f90505b92915050565b5f8561ffff168761ffff161180612c3e5750610fff8661ffff16115b80612c4e57506127108561ffff16115b80612c5e57506109c48361ffff16115b80612c705750620fffff8262ffffff16115b15612ca7576040517f1c07203f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612cc48861ffff1661ffff5f8461357c909392919063ffffffff16565b9050612ce48761ffff16610fff60108461357c909392919063ffffffff16565b9050612d048661ffff16610fff601c8461357c909392919063ffffffff16565b9050612d248561ffff16613fff60288461357c909392919063ffffffff16565b9050612d468462ffffff1662ffffff60368461357c909392919063ffffffff16565b9050612d668361ffff16613fff604e8461357c909392919063ffffffff16565b9050612d888262ffffff16620fffff605c8461357c909392919063ffffffff16565b9050612db1815f1c6dffffffffffffffffffffffffffff5f8c61357c909392919063ffffffff16565b905098975050505050505050565b5f612ddd8484612dcf575f612dd2565b60015b60ff1660018561357c565b90509392505050565b5f612df8845f01845f1b845f1b613596565b90509392505050565b5f815f1c9050919050565b5f819050919050565b5f612e24835f01835f1b6135cd565b905092915050565b5f612e3b835f01835f1b6135eb565b5f1c905092915050565b5f600183831c16905092915050565b5f612e79835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613667565b905092915050565b60605f612e8f835f016136ce565b905060608190508092505050919050565b5f80612eab836136e2565b90505f612eb785613712565b9050612ecc818361372590919063ffffffff16565b9250505092915050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115612f1757828480945081955050505b8383915091509250929050565b5f60408303516020840351845180602087010180516002830161ffca811115612f545763c8c781395f526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b035ff5965086612fc05763301164255f526004601cfd5b8183528389528460208a03528560408a03525050505050509392505050565b5f612fee835f01835f1b613667565b905092915050565b5f61300a5f83613a2b90919063ffffffff16565b9050919050565b5f613026601083613a3b90919063ffffffff16565b9050919050565b5f613042601c83613a3b90919063ffffffff16565b9050919050565b5f61305e602883613a4b90919063ffffffff16565b9050919050565b5f61307a603683613a5b90919063ffffffff16565b9050919050565b5f613096604e83613a4b90919063ffffffff16565b9050919050565b5f6130b2605c83613a6c90919063ffffffff16565b9050919050565b5f6130c5825f01613a7d565b9050919050565b5f6130d9835f01836133fa565b5f1c905092915050565b5f818291508161ffff1614613124576040517f64ae406d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561315681613a8c565b50565b5f613165825f01613a7d565b9050919050565b5f60025f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f6131f5835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613b4d565b905092915050565b5f61320c835f01835f1b613c49565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613279576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361332f5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f4fcea9710000000000000000000000000000000000000000000000000000000081526004016133269190614578565b60405180910390fd5b8160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa7084015272181836040516133a0929190614ecd565b60405180910390a15050565b5f6133b8825f01613c7d565b9050919050565b5f805f6133d784865f01613c9090919063ffffffff16565b905080856002015f8381526020019081526020015f205492509250509250929050565b5f825f0182815481106134105761340f614a39565b5b905f5260205f200154905092915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b61344b8282611f86565b61348e5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613485929190615012565b60405180910390fd5b5050565b5f61349d8383611f86565b61357257600160025f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061350f612b31565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050613576565b5f90505b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f81846002015f8581526020019081526020015f20819055506135c483855f01613ca590919063ffffffff16565b90509392505050565b5f6135e382845f01613cba90919063ffffffff16565b905092915050565b5f80836002015f8481526020019081526020015f205490505f801b8114801561361b575061361984846135cd565b155b1561365d57826040517f02b5668600000000000000000000000000000000000000000000000000000000815260040161365491906141cd565b60405180910390fd5b8091505092915050565b5f6136728383613421565b6136c457825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f2081905550600190506136c8565b5f90505b92915050565b60606136db825f01613ccf565b9050919050565b5f612710608060ff168361ffff16901b81613700576136ff615039565b5b04608060ff166001901b019050919050565b5f628000008262ffffff16039050919050565b5f805f80840361374157608060ff166001901b92505050613a25565b8390505f81121561375657805f039050811591505b621000008110156139a257608060ff166001901b9250846fffffffffffffffffffffffffffffffff86111561379057805f19049050821592505b60018216156137a25780840260801c93505b80810260801c905060028216156137bc5780840260801c93505b80810260801c905060048216156137d65780840260801c93505b80810260801c905060088216156137f05780840260801c93505b80810260801c9050601082161561380a5780840260801c93505b80810260801c905060208216156138245780840260801c93505b80810260801c9050604082161561383e5780840260801c93505b80810260801c905060808216156138585780840260801c93505b80810260801c90506101008216156138735780840260801c93505b80810260801c905061020082161561388e5780840260801c93505b80810260801c90506104008216156138a95780840260801c93505b80810260801c90506108008216156138c45780840260801c93505b80810260801c90506110008216156138df5780840260801c93505b80810260801c90506120008216156138fa5780840260801c93505b80810260801c90506140008216156139155780840260801c93505b80810260801c90506180008216156139305780840260801c93505b80810260801c90506201000082161561394c5780840260801c93505b80810260801c9050620200008216156139685780840260801c93505b80810260801c9050620400008216156139845780840260801c93505b80810260801c9050620800008216156139a05780840260801c93505b505b5f83036139e85784846040517f3b74b31a0000000000000000000000000000000000000000000000000000000081526004016139df92919061507e565b60405180910390fd5b816139f35782613a20565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613a1f91906150a5565b5b925050505b92915050565b5f61ffff83831c16905092915050565b5f610fff83831c16905092915050565b5f613fff83831c16905092915050565b5f62ffffff83831c16905092915050565b5f620fffff83831c16905092915050565b5f815f01805490509050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80836001015f8481526020019081526020015f205490505f8114613c3e575f600182613b7a9190614d91565b90505f6001865f0180549050613b909190614d91565b9050808214613bf6575f865f018281548110613baf57613bae614a39565b5b905f5260205f200154905080875f018481548110613bd057613bcf614a39565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480613c0957613c086150d5565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050613c43565b5f9150505b92915050565b5f826002015f8381526020019081526020015f205f9055613c7582845f01613cee90919063ffffffff16565b905092915050565b5f613c89825f01613a7d565b9050919050565b5f613c9d835f01836133fa565b905092915050565b5f613cb2835f0183613667565b905092915050565b5f613cc7835f0183613421565b905092915050565b60605f613cdd835f01613d03565b905060608190508092505050919050565b5f613cfb835f0183613b4d565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015613d5057602002820191905f5260205f20905b815481526020019060010190808311613d3c575b50505050509050919050565b60405180608001604052805f61ffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613dda81613da6565b8114613de4575f80fd5b50565b5f81359050613df581613dd1565b92915050565b5f60208284031215613e1057613e0f613d9e565b5b5f613e1d84828501613de7565b91505092915050565b5f8115159050919050565b613e3a81613e26565b82525050565b5f602082019050613e535f830184613e31565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b613e9481613e82565b82525050565b5f613ea58383613e8b565b60208301905092915050565b5f602082019050919050565b5f613ec782613e59565b613ed18185613e63565b9350613edc83613e73565b805f5b83811015613f0c578151613ef38882613e9a565b9750613efe83613eb1565b925050600181019050613edf565b5085935050505092915050565b5f6020820190508181035f830152613f318184613ebd565b905092915050565b613f4281613e82565b8114613f4c575f80fd5b50565b5f81359050613f5d81613f39565b92915050565b5f60208284031215613f7857613f77613d9e565b5b5f613f8584828501613f4f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613fd0613fcb613fc684613f8e565b613fad565b613f8e565b9050919050565b5f613fe182613fb6565b9050919050565b5f613ff282613fd7565b9050919050565b61400281613fe8565b82525050565b5f60208201905061401b5f830184613ff9565b92915050565b5f61402b82613f8e565b9050919050565b5f61403c82614021565b9050919050565b61404c81614032565b8114614056575f80fd5b50565b5f8135905061406781614043565b92915050565b5f61ffff82169050919050565b6140838161406d565b811461408d575f80fd5b50565b5f8135905061409e8161407a565b92915050565b5f62ffffff82169050919050565b6140bb816140a4565b81146140c5575f80fd5b50565b5f813590506140d6816140b2565b92915050565b5f805f805f805f805f806101408b8d0312156140fb576140fa613d9e565b5b5f6141088d828e01614059565b9a505060206141198d828e01614059565b995050604061412a8d828e01614090565b985050606061413b8d828e01614090565b975050608061414c8d828e01614090565b96505060a061415d8d828e01614090565b95505060c061416e8d828e01614090565b94505060e061417f8d828e016140c8565b9350506101006141918d828e01614090565b9250506101206141a38d828e016140c8565b9150509295989b9194979a5092959850565b5f819050919050565b6141c7816141b5565b82525050565b5f6020820190506141e05f8301846141be565b92915050565b6141ef816141b5565b81146141f9575f80fd5b50565b5f8135905061420a816141e6565b92915050565b5f6020828403121561422557614224613d9e565b5b5f614232848285016141fc565b91505092915050565b5f602082840312156142505761424f613d9e565b5b5f61425d84828501614059565b91505092915050565b5f805f6060848603121561427d5761427c613d9e565b5b5f61428a86828701614059565b935050602061429b86828701614059565b92505060406142ac86828701614090565b9150509250925092565b6142bf81614021565b81146142c9575f80fd5b50565b5f813590506142da816142b6565b92915050565b5f80604083850312156142f6576142f5613d9e565b5b5f614303858286016141fc565b9250506020614314858286016142cc565b9150509250929050565b61432781613e26565b8114614331575f80fd5b50565b5f813590506143428161431e565b92915050565b5f805f805f805f805f6101208a8c03121561436657614365613d9e565b5b5f6143738c828d01614090565b99505060206143848c828d01614090565b98505060406143958c828d01614090565b97505060606143a68c828d01614090565b96505060806143b78c828d01614090565b95505060a06143c88c828d016140c8565b94505060c06143d98c828d01614090565b93505060e06143ea8c828d016140c8565b9250506101006143fc8c828d01614334565b9150509295985092959850929598565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261442d5761442c61440c565b5b8235905067ffffffffffffffff81111561444a57614449614410565b5b60208301915083600182028301111561446657614465614414565b5b9250929050565b5f805f805f8060a0878903121561448757614486613d9e565b5b5f61449489828a01614059565b96505060206144a589828a01614059565b95505060406144b689828a01614090565b94505060606144c789828a016141fc565b935050608087013567ffffffffffffffff8111156144e8576144e7613da2565b5b6144f489828a01614418565b92509250509295509295509295565b5f61450d82614021565b9050919050565b61451d81614503565b8114614527575f80fd5b50565b5f8135905061453881614514565b92915050565b5f6020828403121561455357614552613d9e565b5b5f6145608482850161452a565b91505092915050565b61457281614021565b82525050565b5f60208201905061458b5f830184614569565b92915050565b5f80604083850312156145a7576145a6613d9e565b5b5f6145b485828601614090565b92505060206145c585828601614334565b9150509250929050565b6145d881613e82565b82525050565b5f6020820190506145f15f8301846145cf565b92915050565b5f805f806080858703121561460f5761460e613d9e565b5b5f61461c87828801614059565b945050602061462d87828801614059565b935050604061463e878288016140c8565b925050606061464f87828801614090565b91505092959194509250565b5f61466582613fd7565b9050919050565b6146758161465b565b82525050565b5f60208201905061468e5f83018461466c565b92915050565b5f80604083850312156146aa576146a9613d9e565b5b5f6146b785828601614059565b92505060206146c885828601614059565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147048161406d565b82525050565b6147138161465b565b82525050565b61472281613e26565b82525050565b608082015f82015161473c5f8501826146fb565b50602082015161474f602085018261470a565b5060408201516147626040850182614719565b5060608201516147756060850182614719565b50505050565b5f6147868383614728565b60808301905092915050565b5f602082019050919050565b5f6147a8826146d2565b6147b281856146dc565b93506147bd836146ec565b805f5b838110156147ed5781516147d4888261477b565b97506147df83614792565b9250506001810190506147c0565b5085935050505092915050565b5f6020820190508181035f830152614812818461479e565b905092915050565b5f805f806080858703121561483257614831613d9e565b5b5f61483f87828801614059565b945050602061485087828801614059565b935050604061486187828801614090565b925050606061487287828801614334565b91505092959194509250565b5f805f6060848603121561489557614894613d9e565b5b5f6148a286828701614059565b93505060206148b386828701614059565b92505060406148c486828701613f4f565b9150509250925092565b608082015f8201516148e25f8501826146fb565b5060208201516148f5602085018261470a565b5060408201516149086040850182614719565b50606082015161491b6060850182614719565b50505050565b5f6080820190506149345f8301846148ce565b92915050565b5f6101008201905061494e5f83018b6145cf565b61495b602083018a6145cf565b61496860408301896145cf565b61497560608301886145cf565b61498260808301876145cf565b61498f60a08301866145cf565b61499c60c08301856145cf565b6149a960e0830184613e31565b9998505050505050505050565b5f602082840312156149cb576149ca613d9e565b5b5f6149d8848285016142cc565b91505092915050565b5f602082840312156149f6576149f5613d9e565b5b5f614a0384828501614090565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614a9d82613e82565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614acf57614ace614a66565b5b600182019050919050565b5f614af4614aef614aea8461406d565b613fad565b613e82565b9050919050565b614b0481614ada565b82525050565b5f606082019050614b1d5f830186613ff9565b614b2a6020830185613ff9565b614b376040830184614afb565b949350505050565b614b488161406d565b82525050565b614b57816140a4565b82525050565b5f60e082019050614b705f83018a614b3f565b614b7d6020830189614b3f565b614b8a6040830188614b3f565b614b976060830187614b3f565b614ba46080830186614b4e565b614bb160a0830185614b3f565b614bbe60c0830184614b4e565b98975050505050505050565b5f602082019050614bdd5f830184614afb565b92915050565b5f614bfd614bf8614bf3846140a4565b613fad565b613e82565b9050919050565b614c0d81614be3565b82525050565b5f60e082019050614c265f83018a614afb565b614c336020830189614afb565b614c406040830188614afb565b614c4d6060830187614afb565b614c5a6080830186614c04565b614c6760a0830185614afb565b614c7460c0830184614c04565b98975050505050505050565b5f604082019050614c935f830185614569565b614ca06020830184614afb565b9392505050565b5f8160601b9050919050565b5f614cbd82614ca7565b9050919050565b5f614cce82614cb3565b9050919050565b614ce6614ce182613fe8565b614cc4565b82525050565b5f8160f01b9050919050565b5f614d0282614cec565b9050919050565b614d1a614d158261406d565b614cf8565b82525050565b5f614d2b8286614cd5565b601482019150614d3b8285614cd5565b601482019150614d4b8284614d09565b600282019150819050949350505050565b5f606082019050614d6f5f830186613ff9565b614d7c6020830185613ff9565b614d896040830184614b3f565b949350505050565b5f614d9b82613e82565b9150614da683613e82565b9250828203905081811115614dbe57614dbd614a66565b5b92915050565b5f604082019050614dd75f83018561466c565b614de460208301846145cf565b9392505050565b5f61010082019050614dff5f83018b614b3f565b614e0c602083018a614b3f565b614e196040830189614b3f565b614e266060830188614b3f565b614e336080830187614b4e565b614e4060a0830186614b3f565b614e4d60c0830185614b4e565b614e5a60e0830184614b4e565b9998505050505050505050565b5f614e7182614021565b9050919050565b614e8181614e67565b8114614e8b575f80fd5b50565b5f81519050614e9c81614e78565b92915050565b5f60208284031215614eb757614eb6613d9e565b5b5f614ec484828501614e8e565b91505092915050565b5f604082019050614ee05f830185614569565b614eed6020830184614569565b9392505050565b5f604082019050614f075f8301856145cf565b614f1460208301846145cf565b9392505050565b5f81519050614f29816141e6565b92915050565b5f60208284031215614f4457614f43613d9e565b5b5f614f5184828501614f1b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614f91578082015181840152602081019050614f76565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614fb682614f5a565b614fc08185614f64565b9350614fd0818560208601614f74565b614fd981614f9c565b840191505092915050565b5f604082019050614ff75f8301856141be565b81810360208301526150098184614fac565b90509392505050565b5f6040820190506150255f830185614569565b61503260208301846141be565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f819050919050565b61507881615066565b82525050565b5f6040820190506150915f8301856145cf565b61509e602083018461506f565b9392505050565b5f6150af82613e82565b91506150ba83613e82565b9250826150ca576150c9615039565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d904f1501d2f531c2cd19c96e7745fb5b4ec59fe642f722d5d5cbd72c2c467b764736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x574D CODESIZE SUB DUP1 PUSH3 0x574D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x36 SWAP2 SWAP1 PUSH3 0x4A6 JUMP JUMPDEST DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xAA JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xA1 SWAP2 SWAP1 PUSH3 0x510 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xBB DUP2 PUSH3 0x172 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH8 0x16345785D8A0000 DUP2 GT ISZERO PUSH3 0x116 JUMPI DUP1 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x10D SWAP3 SWAP2 SWAP1 PUSH3 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x127 DUP4 PUSH3 0x1AA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 PUSH0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x161 SWAP3 SWAP2 SWAP1 PUSH3 0x5B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP PUSH3 0x607 JUMP JUMPDEST PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH3 0x1A7 DUP2 PUSH3 0x348 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x210 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x2C9 JUMPI PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH32 0x4FCEA97100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2C0 SWAP2 SWAP1 PUSH3 0x510 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x33C SWAP3 SWAP2 SWAP1 PUSH3 0x5DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x438 DUP3 PUSH3 0x40D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x44A DUP2 PUSH3 0x42C JUMP JUMPDEST DUP2 EQ PUSH3 0x455 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x468 DUP2 PUSH3 0x43F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x482 DUP2 PUSH3 0x46E JUMP JUMPDEST DUP2 EQ PUSH3 0x48D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x4A0 DUP2 PUSH3 0x477 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x4C0 JUMPI PUSH3 0x4BF PUSH3 0x409 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4CF DUP7 DUP3 DUP8 ADD PUSH3 0x458 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x4E2 DUP7 DUP3 DUP8 ADD PUSH3 0x458 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x4F5 DUP7 DUP3 DUP8 ADD PUSH3 0x490 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x50A DUP2 PUSH3 0x42C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x525 PUSH0 DUP4 ADD DUP5 PUSH3 0x4FF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x536 DUP2 PUSH3 0x46E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x551 PUSH0 DUP4 ADD DUP6 PUSH3 0x52B JUMP JUMPDEST PUSH3 0x560 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x52B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x599 PUSH3 0x593 PUSH3 0x58D DUP5 PUSH3 0x567 JUMP JUMPDEST PUSH3 0x570 JUMP JUMPDEST PUSH3 0x46E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5AB DUP2 PUSH3 0x579 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5C6 PUSH0 DUP4 ADD DUP6 PUSH3 0x5A0 JUMP JUMPDEST PUSH3 0x5D5 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x52B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5F1 PUSH0 DUP4 ADD DUP6 PUSH3 0x4FF JUMP JUMPDEST PUSH3 0x600 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4FF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x5138 DUP1 PUSH3 0x615 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x701AB8C1 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xAABC4B3C GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE203A31F GT PUSH2 0x85 JUMPI DUP1 PUSH4 0xE203A31F EQ PUSH2 0x711 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xE92D0D5D EQ PUSH2 0x767 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x783 JUMPI DUP1 PUSH4 0xFD90C2BE EQ PUSH2 0x79F JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xAABC4B3C EQ PUSH2 0x668 JUMPI DUP1 PUSH4 0xAF371065 EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xB0384781 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xDDBFD941 EQ PUSH2 0x6F5 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x80C5061E GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x80C5061E EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0x8CE9AA1C EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x64A JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x701AB8C1 EQ PUSH2 0x52E JUMPI DUP1 PUSH4 0x704037BD EQ PUSH2 0x54C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x586 JUMPI DUP1 PUSH4 0x7DAF5D66 EQ PUSH2 0x590 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x379EE803 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4E937C3A GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x4E937C3A EQ PUSH2 0x45A JUMPI DUP1 PUSH4 0x5A440923 EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x5B35875C EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0x6622E0D7 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x69D56EA3 EQ PUSH2 0x512 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x379EE803 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0x3A2F1A91 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x3C78A941 EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0x4CCB20C0 EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0x4CD161D3 EQ PUSH2 0x43E JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x224 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x27721842 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2CC06B8C EQ PUSH2 0x378 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3B0 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x282C9C1 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x752092B EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x93FF769 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0x1AF5BACC EQ PUSH2 0x2FA JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x275 SWAP2 SWAP1 PUSH2 0x3DFB JUMP JUMPDEST PUSH2 0x7BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x287 SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x298 PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A5 SWAP2 SWAP1 PUSH2 0x3F19 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D5 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F3 SWAP2 SWAP1 PUSH2 0x40DC JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x302 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x332 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x32D SWAP2 SWAP1 PUSH2 0x4210 JUMP JUMPDEST PUSH2 0xA73 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x362 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x423B JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x36F SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x392 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x38D SWAP2 SWAP1 PUSH2 0x4266 JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3AE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A9 SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C5 SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0xB59 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x4348 JUMP JUMPDEST PUSH2 0xBD4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x402 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FD SWAP2 SWAP1 PUSH2 0x446D JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x453E JUMP JUMPDEST PUSH2 0xE2C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x428 PUSH2 0xE92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x4591 JUMP JUMPDEST PUSH2 0xEBA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x462 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x492 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x48D SWAP2 SWAP1 PUSH2 0x423B JUMP JUMPDEST PUSH2 0xFFF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x49C PUSH2 0x10A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A9 SWAP2 SWAP1 PUSH2 0x3F19 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4C7 SWAP2 SWAP1 PUSH2 0x45F7 JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x467B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4F7 SWAP2 SWAP1 PUSH2 0x4694 JUMP JUMPDEST PUSH2 0x189B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0x47FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x52C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x527 SWAP2 SWAP1 PUSH2 0x481A JUMP JUMPDEST PUSH2 0x1B27 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x536 PUSH2 0x1E37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x543 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x566 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x561 SWAP2 SWAP1 PUSH2 0x487E JUMP JUMPDEST PUSH2 0x1E3F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x573 SWAP2 SWAP1 PUSH2 0x4921 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x584 PUSH2 0x1E5B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58E PUSH2 0x1E6E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5AA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A5 SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x1EFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B7 SWAP2 SWAP1 PUSH2 0x467B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5C8 PUSH2 0x1F40 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5D5 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5E6 PUSH2 0x1F50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5F3 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x604 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x611 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x634 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62F SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0x1F86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x652 PUSH2 0x1FE0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65F SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x682 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x1FE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x696 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x493A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6A7 PUSH2 0x20E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6D2 SWAP2 SWAP1 PUSH2 0x49B6 JUMP JUMPDEST PUSH2 0x2111 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6EE SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0x2307 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x70A SWAP2 SWAP1 PUSH2 0x423B JUMP JUMPDEST PUSH2 0x2329 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x72B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x726 SWAP2 SWAP1 PUSH2 0x49E1 JUMP JUMPDEST PUSH2 0x23CC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x735 PUSH2 0x2461 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x742 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x765 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x760 SWAP2 SWAP1 PUSH2 0x49B6 JUMP JUMPDEST PUSH2 0x2489 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x781 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x77C SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x249D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x79D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x798 SWAP2 SWAP1 PUSH2 0x49B6 JUMP JUMPDEST PUSH2 0x258A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7A7 PUSH2 0x2636 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B4 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x82F JUMPI POP PUSH2 0x82E DUP3 PUSH2 0x263F JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x843 PUSH1 0x8 PUSH2 0x26A8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH2 0x91E JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x867 JUMPI PUSH2 0x866 PUSH2 0x4A0C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x895 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x90F JUMPI PUSH0 DUP1 PUSH2 0x8B9 DUP4 PUSH1 0x8 PUSH2 0x26BB SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x8C8 DUP2 PUSH0 SHL PUSH2 0x26E2 JUMP JUMPDEST ISZERO PUSH2 0x8FC JUMPI DUP2 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x8E1 JUMPI PUSH2 0x8E0 PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP1 PUSH2 0x8F8 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP DUP1 PUSH2 0x908 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST SWAP1 POP PUSH2 0x89B JUMP JUMPDEST POP DUP2 DUP2 LT ISZERO PUSH2 0x91C JUMPI DUP1 DUP4 MSTORE JUMPDEST POP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x937 DUP3 PUSH1 0xB PUSH2 0x26FE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x946 PUSH2 0x2715 JUMP JUMPDEST PUSH0 PUSH2 0x956 DUP12 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0x279C JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9D0 JUMPI DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9C7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6653851A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA15 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B5D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xAA5 DUP3 PUSH1 0xB PUSH2 0x28F8 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH2 0xAD6 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH2 0xB31 DUP5 DUP5 DUP5 PUSH0 DUP1 SHL PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAF9 JUMPI PUSH2 0xAF8 PUSH2 0x4A0C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB2B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH2 0x2939 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB40 DUP3 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0xB49 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH2 0xB53 DUP4 DUP4 PUSH2 0x2AE3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB61 PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBC5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBCF DUP3 DUP3 PUSH2 0x2B38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xBDC PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x1 DUP10 PUSH2 0xFFFF AND LT ISZERO PUSH2 0xC26 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0x4F958E7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1D SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC48 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH0 DUP1 SHL PUSH2 0x2C22 SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0xC6A JUMPI PUSH2 0xC67 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH2 0x2DBF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xC86 DUP11 PUSH2 0xFFFF AND DUP3 PUSH0 SHR PUSH1 0x8 PUSH2 0x2DE6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP10 PUSH2 0xFFFF AND PUSH32 0x839844A256A87F87C9C835117D9A1C40BE013954064C937072ACB32D36DB6A28 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0xCC7 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP2 ISZERO ISZERO DUP11 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH2 0xD39 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD59 DUP6 PUSH2 0x2E01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xD9C JUMPI POP PUSH0 PUSH1 0xA0 SHL PUSH2 0xD83 DUP6 PUSH2 0x2E0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD43A15D100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE23 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x2939 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE34 PUSH2 0x2715 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3B9FBE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE79 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE8B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xEC2 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0xEDA DUP3 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E15 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF1B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF12 SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xF34 DUP4 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E2C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP DUP2 ISZERO ISZERO PUSH2 0xF4F PUSH1 0xFF DUP4 PUSH2 0x2E45 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO SUB PUSH2 0xF88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x237C71B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFB9 DUP4 PUSH2 0xFFFF AND PUSH2 0xFA6 DUP5 PUSH1 0xFF DUP6 PUSH2 0x2DBF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHR PUSH1 0x8 PUSH2 0x2DE6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP2 ISZERO ISZERO DUP4 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x6 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1007 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x101B DUP2 PUSH1 0xB PUSH2 0x2E54 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x105C JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x3CE0AD900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1053 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x84CC2115995684DCB0CD3D3A9565E3D32F075DE81DB70C8DC3A719B2A47AF67E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x10AE PUSH1 0x8 PUSH2 0x2E81 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x10CC DUP3 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E15 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x110D JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1104 SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1126 DUP4 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E2C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH2 0x1133 PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x116C DUP3 PUSH2 0x26E2 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1177 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x11BB JUMPI CALLER DUP5 PUSH1 0x40 MLOAD PUSH32 0x9F85FCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B2 SWAP3 SWAP2 SWAP1 PUSH2 0x4C80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11CF DUP7 PUSH1 0xB PUSH2 0x28F8 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1210 JUMPI DUP6 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1207 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1280 JUMPI DUP7 PUSH1 0x40 MLOAD PUSH32 0x2F9B185300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1277 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x128A DUP6 DUP6 PUSH2 0x2EA0 JUMP JUMPDEST POP PUSH0 DUP1 PUSH2 0x1297 DUP10 DUP10 PUSH2 0x2ED6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1300 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x7 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1421 JUMPI DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH32 0xCB27A43500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1418 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14AB JUMPI PUSH1 0x40 MLOAD PUSH32 0xA2D3F3E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1503 DUP2 DUP12 DUP12 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14C4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D20 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 DUP6 DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14E8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2F24 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x7 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x6 DUP6 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1765 DUP7 PUSH2 0xFFFF AND PUSH1 0xD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH2 0x2FDF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP6 PUSH2 0xFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C8D104B27C6B7F4492017A6F5CF3803043688934EBCAA6A03540BEEAF976AFF DUP9 PUSH1 0x1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP PUSH2 0x17CD SWAP2 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17DB SWAP3 SWAP2 SWAP1 PUSH2 0x4DC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x47973BFF PUSH2 0x1808 DUP7 PUSH2 0x2FF6 JUMP JUMPDEST PUSH2 0x1811 DUP8 PUSH2 0x3011 JUMP JUMPDEST PUSH2 0x181A DUP9 PUSH2 0x302D JUMP JUMPDEST PUSH2 0x1823 DUP10 PUSH2 0x3049 JUMP JUMPDEST PUSH2 0x182C DUP11 PUSH2 0x3065 JUMP JUMPDEST PUSH2 0x1835 DUP12 PUSH2 0x3081 JUMP JUMPDEST PUSH2 0x183E DUP13 PUSH2 0x309D JUMP JUMPDEST DUP16 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1862 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DEB JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1879 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 PUSH2 0x18A9 DUP6 DUP6 PUSH2 0x2ED6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0xD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 PUSH2 0x1932 DUP3 PUSH2 0x30B9 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH2 0x1B1D JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1956 JUMPI PUSH2 0x1955 PUSH2 0x4A0C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x198F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x197C PUSH2 0x3D5C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1974 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH0 PUSH1 0x7 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1B1A JUMPI PUSH0 PUSH2 0x1A33 PUSH2 0x1A2E DUP4 DUP8 PUSH2 0x30CC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x30E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE POP DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1B03 JUMPI PUSH2 0x1B02 PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1A0F JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1B2F PUSH2 0x2715 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1B3B DUP7 DUP7 PUSH2 0x2ED6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0x7 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CF7 JUMPI DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x40AA464400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CEE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP2 PUSH1 0x60 ADD MLOAD ISZERO ISZERO SUB PUSH2 0x1D37 JUMPI PUSH1 0x40 MLOAD PUSH31 0xDDCCCA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x7 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x44CF35361C9FF3C8C1397EC6410D5495CC481FEAEF35C9AF11DA1A637107DE4F DUP6 PUSH1 0x40 MLOAD PUSH2 0x1E26 SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1E47 PUSH2 0x3D5C JUMP JUMPDEST PUSH2 0x1E52 DUP5 DUP5 DUP5 PUSH2 0x279C JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E63 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x1E6C PUSH0 PUSH2 0x3129 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x1E77 PUSH2 0x2B31 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1E98 PUSH2 0x2461 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1EF0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE7 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1EF9 DUP2 PUSH2 0x3129 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1F11 JUMPI PUSH2 0x1F10 PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1F4B PUSH1 0xB PUSH2 0x3159 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0x16345785D8A0000 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH2 0x1FCD JUMPI PUSH2 0x1F98 PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0x1FD7 DUP4 DUP4 PUSH2 0x316C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x2002 DUP10 PUSH1 0x8 PUSH2 0x2E15 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2043 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x203A SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2058 DUP11 PUSH1 0x8 PUSH2 0x2E2C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH2 0x2065 DUP2 PUSH2 0x2FF6 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 POP PUSH2 0x2074 DUP2 PUSH2 0x3011 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP8 POP PUSH2 0x2083 DUP2 PUSH2 0x302D JUMP JUMPDEST PUSH2 0xFFFF AND SWAP7 POP PUSH2 0x2092 DUP2 PUSH2 0x3049 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP6 POP PUSH2 0x20A1 DUP2 PUSH2 0x3065 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP5 POP PUSH2 0x20B1 DUP2 PUSH2 0x3081 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP4 POP PUSH2 0x20C0 DUP2 PUSH2 0x309D JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP3 POP PUSH2 0x20DB PUSH1 0xFF DUP3 PUSH2 0x2E45 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2119 PUSH2 0x2715 JUMP JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88CC58E4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2179 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219D SWAP2 SWAP1 PUSH2 0x4EA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x21F5 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x147CE15E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21EC SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x228A JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6F69DCA800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2281 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x900D0E3D359F50E4F923ECDC06B401E07DBB9F485E17B07BCFC91A13000B277E DUP2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x22FB SWAP3 SWAP2 SWAP1 PUSH2 0x4ECD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2310 DUP3 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x2319 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH2 0x2323 DUP4 DUP4 PUSH2 0x2B38 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2331 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x2345 DUP2 PUSH1 0xB PUSH2 0x31D0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2386 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x237D SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB767739217755D8AF5A2BA75B181A19FA1750F8BB701F09311CB19A90140CB3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x23D4 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x23EC DUP2 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x31FD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x242D JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2424 SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xFFFF AND PUSH32 0xDD86B848BB56FF540CAA68683FA467D0E7EB5F8B2D44E4EE435742EEEAE9BE13 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2491 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x249A DUP2 PUSH2 0x3214 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x24A5 PUSH2 0x2715 JUMP JUMPDEST PUSH0 PUSH1 0x4 SLOAD SWAP1 POP DUP2 DUP2 SUB PUSH2 0x24EF JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6EA8C7A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24E6 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0x16345785D8A0000 DUP3 GT ISZERO PUSH2 0x2546 JUMPI DUP2 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x253D SWAP3 SWAP2 SWAP1 PUSH2 0x4EF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x257E SWAP3 SWAP2 SWAP1 PUSH2 0x4EF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2592 PUSH2 0x2715 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x25F1 PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 PUSH1 0x4 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x26B4 DUP3 PUSH0 ADD PUSH2 0x33AC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x26CB DUP7 PUSH0 ADD DUP7 PUSH2 0x33BF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SHR DUP2 PUSH0 SHR SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x26F7 PUSH1 0xFF DUP4 PUSH2 0x2E45 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x270B DUP4 PUSH0 ADD DUP4 PUSH2 0x33FA JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x271D PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x273B PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x279A JUMPI PUSH2 0x275E PUSH2 0x2B31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2791 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x27A4 PUSH2 0x3D5C JUMP JUMPDEST PUSH2 0x27AE DUP5 DUP5 PUSH2 0x2ED6 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP PUSH1 0x7 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x291D DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH2 0x3421 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2936 DUP2 PUSH2 0x2931 PUSH2 0x2B31 JUMP JUMPDEST PUSH2 0x3441 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x2949 DUP7 DUP7 DUP7 PUSH2 0xFFFF AND PUSH2 0x279C JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x29C3 JUMPI DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29BA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x781A8915 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A0D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A31 SWAP2 SWAP1 PUSH2 0x4F2F JUMP JUMPDEST SUB PUSH2 0x2A73 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xB70CD0DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B057F6D DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AAE SWAP3 SWAP2 SWAP1 PUSH2 0x4FE4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AC5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AD7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH2 0x2B1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C64A79E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B29 DUP4 DUP4 PUSH2 0x3492 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x2B43 DUP4 DUP4 PUSH2 0x1F86 JUMP JUMPDEST ISZERO PUSH2 0x2C18 JUMPI PUSH0 PUSH1 0x2 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x2BB5 PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x2C1C JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND DUP8 PUSH2 0xFFFF AND GT DUP1 PUSH2 0x2C3E JUMPI POP PUSH2 0xFFF DUP7 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH2 0x2C4E JUMPI POP PUSH2 0x2710 DUP6 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH2 0x2C5E JUMPI POP PUSH2 0x9C4 DUP4 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH2 0x2C70 JUMPI POP PUSH3 0xFFFFF DUP3 PUSH3 0xFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x2CA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1C07203F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CC4 DUP9 PUSH2 0xFFFF AND PUSH2 0xFFFF PUSH0 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2CE4 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x10 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D04 DUP7 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x1C DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D24 DUP6 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x28 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D46 DUP5 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH1 0x36 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D66 DUP4 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x4E DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D88 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFF PUSH1 0x5C DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2DB1 DUP2 PUSH0 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 DUP13 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2DDD DUP5 DUP5 PUSH2 0x2DCF JUMPI PUSH0 PUSH2 0x2DD2 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP6 PUSH2 0x357C JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2DF8 DUP5 PUSH0 ADD DUP5 PUSH0 SHL DUP5 PUSH0 SHL PUSH2 0x3596 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2E24 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x35CD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2E3B DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x35EB JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2E79 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x2E8F DUP4 PUSH0 ADD PUSH2 0x36CE JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2EAB DUP4 PUSH2 0x36E2 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x2EB7 DUP6 PUSH2 0x3712 JUMP JUMPDEST SWAP1 POP PUSH2 0x2ECC DUP2 DUP4 PUSH2 0x3725 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2F17 JUMPI DUP3 DUP5 DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP JUMPDEST DUP4 DUP4 SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 SUB MLOAD PUSH1 0x20 DUP5 SUB MLOAD DUP5 MLOAD DUP1 PUSH1 0x20 DUP8 ADD ADD DUP1 MLOAD PUSH1 0x2 DUP4 ADD PUSH2 0xFFCA DUP2 GT ISZERO PUSH2 0x2F54 JUMPI PUSH4 0xC8C78139 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH13 0x5AF43D3D93803E603357FD5BF3 DUP10 MSTORE DUP10 PUSH1 0xD DUP11 SUB MSTORE PUSH30 0x6100003D81600A3D39F3363D3D373D3D3D3D610000806035363936013D73 DUP2 PUSH1 0x48 SHL OR PUSH1 0x35 DUP3 ADD PUSH1 0xD8 SHL OR PUSH1 0x21 DUP11 SUB MSTORE DUP1 PUSH1 0xF0 SHL DUP4 MSTORE DUP8 PUSH1 0x3F DUP3 ADD PUSH1 0x1F DUP12 SUB PUSH0 CREATE2 SWAP7 POP DUP7 PUSH2 0x2FC0 JUMPI PUSH4 0x30116425 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST DUP2 DUP4 MSTORE DUP4 DUP10 MSTORE DUP5 PUSH1 0x20 DUP11 SUB MSTORE DUP6 PUSH1 0x40 DUP11 SUB MSTORE POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2FEE DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x300A PUSH0 DUP4 PUSH2 0x3A2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3026 PUSH1 0x10 DUP4 PUSH2 0x3A3B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3042 PUSH1 0x1C DUP4 PUSH2 0x3A3B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x305E PUSH1 0x28 DUP4 PUSH2 0x3A4B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x307A PUSH1 0x36 DUP4 PUSH2 0x3A5B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3096 PUSH1 0x4E DUP4 PUSH2 0x3A4B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x30B2 PUSH1 0x5C DUP4 PUSH2 0x3A6C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x30C5 DUP3 PUSH0 ADD PUSH2 0x3A7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x30D9 DUP4 PUSH0 ADD DUP4 PUSH2 0x33FA JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP3 SWAP2 POP DUP2 PUSH2 0xFFFF AND EQ PUSH2 0x3124 JUMPI PUSH1 0x40 MLOAD PUSH32 0x64AE406D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH2 0x3156 DUP2 PUSH2 0x3A8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x3165 DUP3 PUSH0 ADD PUSH2 0x3A7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x31F5 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH2 0x3B4D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x320C DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x3C49 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3279 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x332F JUMPI PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH32 0x4FCEA97100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3326 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x33A0 SWAP3 SWAP2 SWAP1 PUSH2 0x4ECD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x33B8 DUP3 PUSH0 ADD PUSH2 0x3C7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH2 0x33D7 DUP5 DUP7 PUSH0 ADD PUSH2 0x3C90 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3410 JUMPI PUSH2 0x340F PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344B DUP3 DUP3 PUSH2 0x1F86 JUMP JUMPDEST PUSH2 0x348E JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3485 SWAP3 SWAP2 SWAP1 PUSH2 0x5012 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x349D DUP4 DUP4 PUSH2 0x1F86 JUMP JUMPDEST PUSH2 0x3572 JUMPI PUSH1 0x1 PUSH1 0x2 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x350F PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x3576 JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP5 PUSH1 0x2 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x35C4 DUP4 DUP6 PUSH0 ADD PUSH2 0x3CA5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x35E3 DUP3 DUP5 PUSH0 ADD PUSH2 0x3CBA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x2 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP1 SHL DUP2 EQ DUP1 ISZERO PUSH2 0x361B JUMPI POP PUSH2 0x3619 DUP5 DUP5 PUSH2 0x35CD JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x365D JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x2B5668600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3654 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3672 DUP4 DUP4 PUSH2 0x3421 JUMP JUMPDEST PUSH2 0x36C4 JUMPI DUP3 PUSH0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH0 ADD DUP1 SLOAD SWAP1 POP DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP PUSH2 0x36C8 JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x36DB DUP3 PUSH0 ADD PUSH2 0x3CCF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2710 PUSH1 0x80 PUSH1 0xFF AND DUP4 PUSH2 0xFFFF AND SWAP1 SHL DUP2 PUSH2 0x3700 JUMPI PUSH2 0x36FF PUSH2 0x5039 JUMP JUMPDEST JUMPDEST DIV PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x800000 DUP3 PUSH3 0xFFFFFF AND SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 DUP5 SUB PUSH2 0x3741 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP POP POP PUSH2 0x3A25 JUMP JUMPDEST DUP4 SWAP1 POP PUSH0 DUP2 SLT ISZERO PUSH2 0x3756 JUMPI DUP1 PUSH0 SUB SWAP1 POP DUP2 ISZERO SWAP2 POP JUMPDEST PUSH3 0x100000 DUP2 LT ISZERO PUSH2 0x39A2 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 GT ISZERO PUSH2 0x3790 JUMPI DUP1 PUSH0 NOT DIV SWAP1 POP DUP3 ISZERO SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x37A2 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x37BC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x37D6 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x37F0 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x380A JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x3824 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x383E JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x3858 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x3873 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x388E JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x38A9 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x38C4 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x38DF JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x38FA JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x3915 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x3930 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x394C JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x3968 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x3984 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x39A0 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST POP JUMPDEST PUSH0 DUP4 SUB PUSH2 0x39E8 JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3B74B31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39DF SWAP3 SWAP2 SWAP1 PUSH2 0x507E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x39F3 JUMPI DUP3 PUSH2 0x3A20 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3A1F SWAP2 SWAP1 PUSH2 0x50A5 JUMP JUMPDEST JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3FFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 EQ PUSH2 0x3C3E JUMPI PUSH0 PUSH1 0x1 DUP3 PUSH2 0x3B7A SWAP2 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP7 PUSH0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x3B90 SWAP2 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x3BF6 JUMPI PUSH0 DUP7 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3BAF JUMPI PUSH2 0x3BAE PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3BD0 JUMPI PUSH2 0x3BCF PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP8 PUSH1 0x1 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP6 PUSH0 ADD DUP1 SLOAD DUP1 PUSH2 0x3C09 JUMPI PUSH2 0x3C08 PUSH2 0x50D5 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x3C43 JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH2 0x3C75 DUP3 DUP5 PUSH0 ADD PUSH2 0x3CEE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3C89 DUP3 PUSH0 ADD PUSH2 0x3A7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3C9D DUP4 PUSH0 ADD DUP4 PUSH2 0x33FA JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3CB2 DUP4 PUSH0 ADD DUP4 PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3CC7 DUP4 PUSH0 ADD DUP4 PUSH2 0x3421 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x3CDD DUP4 PUSH0 ADD PUSH2 0x3D03 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3CFB DUP4 PUSH0 ADD DUP4 PUSH2 0x3B4D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x3D50 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x3D3C JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3DDA DUP2 PUSH2 0x3DA6 JUMP JUMPDEST DUP2 EQ PUSH2 0x3DE4 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3DF5 DUP2 PUSH2 0x3DD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E10 JUMPI PUSH2 0x3E0F PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x3E1D DUP5 DUP3 DUP6 ADD PUSH2 0x3DE7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E3A DUP2 PUSH2 0x3E26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3E53 PUSH0 DUP4 ADD DUP5 PUSH2 0x3E31 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E94 DUP2 PUSH2 0x3E82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3EA5 DUP4 DUP4 PUSH2 0x3E8B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3EC7 DUP3 PUSH2 0x3E59 JUMP JUMPDEST PUSH2 0x3ED1 DUP2 DUP6 PUSH2 0x3E63 JUMP JUMPDEST SWAP4 POP PUSH2 0x3EDC DUP4 PUSH2 0x3E73 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F0C JUMPI DUP2 MLOAD PUSH2 0x3EF3 DUP9 DUP3 PUSH2 0x3E9A JUMP JUMPDEST SWAP8 POP PUSH2 0x3EFE DUP4 PUSH2 0x3EB1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3EDF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x3F31 DUP2 DUP5 PUSH2 0x3EBD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3F42 DUP2 PUSH2 0x3E82 JUMP JUMPDEST DUP2 EQ PUSH2 0x3F4C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F5D DUP2 PUSH2 0x3F39 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F78 JUMPI PUSH2 0x3F77 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x3F85 DUP5 DUP3 DUP6 ADD PUSH2 0x3F4F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3FD0 PUSH2 0x3FCB PUSH2 0x3FC6 DUP5 PUSH2 0x3F8E JUMP JUMPDEST PUSH2 0x3FAD JUMP JUMPDEST PUSH2 0x3F8E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3FE1 DUP3 PUSH2 0x3FB6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3FF2 DUP3 PUSH2 0x3FD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4002 DUP2 PUSH2 0x3FE8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x401B PUSH0 DUP4 ADD DUP5 PUSH2 0x3FF9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x402B DUP3 PUSH2 0x3F8E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x403C DUP3 PUSH2 0x4021 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x404C DUP2 PUSH2 0x4032 JUMP JUMPDEST DUP2 EQ PUSH2 0x4056 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4067 DUP2 PUSH2 0x4043 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4083 DUP2 PUSH2 0x406D JUMP JUMPDEST DUP2 EQ PUSH2 0x408D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x409E DUP2 PUSH2 0x407A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x40BB DUP2 PUSH2 0x40A4 JUMP JUMPDEST DUP2 EQ PUSH2 0x40C5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x40D6 DUP2 PUSH2 0x40B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x40FB JUMPI PUSH2 0x40FA PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4108 DUP14 DUP3 DUP15 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4119 DUP14 DUP3 DUP15 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x412A DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x413B DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x414C DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x415D DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x416E DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x417F DUP14 DUP3 DUP15 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 PUSH2 0x4191 DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x120 PUSH2 0x41A3 DUP14 DUP3 DUP15 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x41C7 DUP2 PUSH2 0x41B5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x41E0 PUSH0 DUP4 ADD DUP5 PUSH2 0x41BE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x41EF DUP2 PUSH2 0x41B5 JUMP JUMPDEST DUP2 EQ PUSH2 0x41F9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x420A DUP2 PUSH2 0x41E6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4225 JUMPI PUSH2 0x4224 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4232 DUP5 DUP3 DUP6 ADD PUSH2 0x41FC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4250 JUMPI PUSH2 0x424F PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x425D DUP5 DUP3 DUP6 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x427D JUMPI PUSH2 0x427C PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x428A DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x429B DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x42AC DUP7 DUP3 DUP8 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x42BF DUP2 PUSH2 0x4021 JUMP JUMPDEST DUP2 EQ PUSH2 0x42C9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x42DA DUP2 PUSH2 0x42B6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x42F6 JUMPI PUSH2 0x42F5 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4303 DUP6 DUP3 DUP7 ADD PUSH2 0x41FC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4314 DUP6 DUP3 DUP7 ADD PUSH2 0x42CC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x4327 DUP2 PUSH2 0x3E26 JUMP JUMPDEST DUP2 EQ PUSH2 0x4331 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4342 DUP2 PUSH2 0x431E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x4366 JUMPI PUSH2 0x4365 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4373 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x4384 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x4395 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x43A6 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x43B7 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH2 0x43C8 DUP13 DUP3 DUP14 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH2 0x43D9 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x43EA DUP13 DUP3 DUP14 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x43FC DUP13 DUP3 DUP14 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x442D JUMPI PUSH2 0x442C PUSH2 0x440C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x444A JUMPI PUSH2 0x4449 PUSH2 0x4410 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4466 JUMPI PUSH2 0x4465 PUSH2 0x4414 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4487 JUMPI PUSH2 0x4486 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4494 DUP10 DUP3 DUP11 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x44A5 DUP10 DUP3 DUP11 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x44B6 DUP10 DUP3 DUP11 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x44C7 DUP10 DUP3 DUP11 ADD PUSH2 0x41FC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44E8 JUMPI PUSH2 0x44E7 PUSH2 0x3DA2 JUMP JUMPDEST JUMPDEST PUSH2 0x44F4 DUP10 DUP3 DUP11 ADD PUSH2 0x4418 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH2 0x450D DUP3 PUSH2 0x4021 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x451D DUP2 PUSH2 0x4503 JUMP JUMPDEST DUP2 EQ PUSH2 0x4527 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4538 DUP2 PUSH2 0x4514 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4553 JUMPI PUSH2 0x4552 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4560 DUP5 DUP3 DUP6 ADD PUSH2 0x452A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4572 DUP2 PUSH2 0x4021 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x458B PUSH0 DUP4 ADD DUP5 PUSH2 0x4569 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45A7 JUMPI PUSH2 0x45A6 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x45B4 DUP6 DUP3 DUP7 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45C5 DUP6 DUP3 DUP7 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x45D8 DUP2 PUSH2 0x3E82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x45F1 PUSH0 DUP4 ADD DUP5 PUSH2 0x45CF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x460F JUMPI PUSH2 0x460E PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x461C DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x462D DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x463E DUP8 DUP3 DUP9 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x464F DUP8 DUP3 DUP9 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH2 0x4665 DUP3 PUSH2 0x3FD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4675 DUP2 PUSH2 0x465B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x468E PUSH0 DUP4 ADD DUP5 PUSH2 0x466C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46AA JUMPI PUSH2 0x46A9 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x46B7 DUP6 DUP3 DUP7 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x46C8 DUP6 DUP3 DUP7 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4704 DUP2 PUSH2 0x406D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4713 DUP2 PUSH2 0x465B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4722 DUP2 PUSH2 0x3E26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH2 0x473C PUSH0 DUP6 ADD DUP3 PUSH2 0x46FB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x474F PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x470A JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4762 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4775 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4786 DUP4 DUP4 PUSH2 0x4728 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x47A8 DUP3 PUSH2 0x46D2 JUMP JUMPDEST PUSH2 0x47B2 DUP2 DUP6 PUSH2 0x46DC JUMP JUMPDEST SWAP4 POP PUSH2 0x47BD DUP4 PUSH2 0x46EC JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47ED JUMPI DUP2 MLOAD PUSH2 0x47D4 DUP9 DUP3 PUSH2 0x477B JUMP JUMPDEST SWAP8 POP PUSH2 0x47DF DUP4 PUSH2 0x4792 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x47C0 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x4812 DUP2 DUP5 PUSH2 0x479E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4832 JUMPI PUSH2 0x4831 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x483F DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4850 DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4861 DUP8 DUP3 DUP9 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4872 DUP8 DUP3 DUP9 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4895 JUMPI PUSH2 0x4894 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x48A2 DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x48B3 DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x48C4 DUP7 DUP3 DUP8 ADD PUSH2 0x3F4F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH2 0x48E2 PUSH0 DUP6 ADD DUP3 PUSH2 0x46FB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x48F5 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x470A JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4908 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x491B PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4934 PUSH0 DUP4 ADD DUP5 PUSH2 0x48CE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH2 0x494E PUSH0 DUP4 ADD DUP12 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x495B PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4968 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4975 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4982 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x498F PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x499C PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x49A9 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x3E31 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49CB JUMPI PUSH2 0x49CA PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x49D8 DUP5 DUP3 DUP6 ADD PUSH2 0x42CC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49F6 JUMPI PUSH2 0x49F5 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4A03 DUP5 DUP3 DUP6 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x4A9D DUP3 PUSH2 0x3E82 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x4ACF JUMPI PUSH2 0x4ACE PUSH2 0x4A66 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4AF4 PUSH2 0x4AEF PUSH2 0x4AEA DUP5 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x3FAD JUMP JUMPDEST PUSH2 0x3E82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4B04 DUP2 PUSH2 0x4ADA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4B1D PUSH0 DUP4 ADD DUP7 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4B2A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4B37 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4AFB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4B48 DUP2 PUSH2 0x406D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4B57 DUP2 PUSH2 0x40A4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x4B70 PUSH0 DUP4 ADD DUP11 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4B7D PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4B8A PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4B97 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4BA4 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x4BB1 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4BBE PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4B4E JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4BDD PUSH0 DUP4 ADD DUP5 PUSH2 0x4AFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4BFD PUSH2 0x4BF8 PUSH2 0x4BF3 DUP5 PUSH2 0x40A4 JUMP JUMPDEST PUSH2 0x3FAD JUMP JUMPDEST PUSH2 0x3E82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4C0D DUP2 PUSH2 0x4BE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x4C26 PUSH0 DUP4 ADD DUP11 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C33 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C40 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C4D PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C5A PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4C04 JUMP JUMPDEST PUSH2 0x4C67 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C74 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4C04 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4C93 PUSH0 DUP4 ADD DUP6 PUSH2 0x4569 JUMP JUMPDEST PUSH2 0x4CA0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4AFB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x60 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4CBD DUP3 PUSH2 0x4CA7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4CCE DUP3 PUSH2 0x4CB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4CE6 PUSH2 0x4CE1 DUP3 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0x4CC4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0xF0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4D02 DUP3 PUSH2 0x4CEC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4D1A PUSH2 0x4D15 DUP3 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x4CF8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4D2B DUP3 DUP7 PUSH2 0x4CD5 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4D3B DUP3 DUP6 PUSH2 0x4CD5 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4D4B DUP3 DUP5 PUSH2 0x4D09 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4D6F PUSH0 DUP4 ADD DUP7 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4D7C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4D89 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4B3F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4D9B DUP3 PUSH2 0x3E82 JUMP JUMPDEST SWAP2 POP PUSH2 0x4DA6 DUP4 PUSH2 0x3E82 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x4DBE JUMPI PUSH2 0x4DBD PUSH2 0x4A66 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4DD7 PUSH0 DUP4 ADD DUP6 PUSH2 0x466C JUMP JUMPDEST PUSH2 0x4DE4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH2 0x4DFF PUSH0 DUP4 ADD DUP12 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E0C PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E19 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E26 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E33 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x4E40 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E4D PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x4E5A PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x4B4E JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4E71 DUP3 PUSH2 0x4021 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E81 DUP2 PUSH2 0x4E67 JUMP JUMPDEST DUP2 EQ PUSH2 0x4E8B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E9C DUP2 PUSH2 0x4E78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EB7 JUMPI PUSH2 0x4EB6 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4EC4 DUP5 DUP3 DUP6 ADD PUSH2 0x4E8E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4EE0 PUSH0 DUP4 ADD DUP6 PUSH2 0x4569 JUMP JUMPDEST PUSH2 0x4EED PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4569 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F07 PUSH0 DUP4 ADD DUP6 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4F14 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x4F29 DUP2 PUSH2 0x41E6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F44 JUMPI PUSH2 0x4F43 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4F51 DUP5 DUP3 DUP6 ADD PUSH2 0x4F1B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4F91 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4F76 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4FB6 DUP3 PUSH2 0x4F5A JUMP JUMPDEST PUSH2 0x4FC0 DUP2 DUP6 PUSH2 0x4F64 JUMP JUMPDEST SWAP4 POP PUSH2 0x4FD0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4F74 JUMP JUMPDEST PUSH2 0x4FD9 DUP2 PUSH2 0x4F9C JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4FF7 PUSH0 DUP4 ADD DUP6 PUSH2 0x41BE JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x5009 DUP2 DUP5 PUSH2 0x4FAC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5025 PUSH0 DUP4 ADD DUP6 PUSH2 0x4569 JUMP JUMPDEST PUSH2 0x5032 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x41BE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5078 DUP2 PUSH2 0x5066 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5091 PUSH0 DUP4 ADD DUP6 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x509E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x506F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x50AF DUP3 PUSH2 0x3E82 JUMP JUMPDEST SWAP2 POP PUSH2 0x50BA DUP4 PUSH2 0x3E82 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x50CA JUMPI PUSH2 0x50C9 PUSH2 0x5039 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 DIV CALL POP SAR 0x2F MSTORE8 SHR 0x2C 0xD1 SWAP13 SWAP7 0xE7 PUSH21 0x5FB5B4EC59FE642F722D5D5CBD72C2C467B764736F PUSH13 0x63430008140033000000000000 ", - "sourceMap": "1263:28002:10:-:0;;;3139:355;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3225:12;1297:1:2;1273:26;;:12;:26;;;1269:95;;1350:1;1322:31;;;;;;;;;;;:::i;:::-;;;;;;;;1269:95;1373:32;1392:12;1373:18;;;:32;;:::i;:::-;1225:187;1854:6:10::1;3253:12;:33;3249:111;;;3327:12;1854:6;3295:65;;;;;;;;;;;;:::i;:::-;;;;;;;;3249:111;3371:30;3388:12;3371:16;;;:30;;:::i;:::-;3428:12;3412:13;:28;;;;3455:32;3471:1;3474:12;3455:32;;;;;;;:::i;:::-;;;;;;;;3139:355:::0;;;1263:28002;;1886:153:3;1975:13;;1968:20;;;;;;;;;;;1998:34;2023:8;1998:24;;;:34;;:::i;:::-;1886:153;:::o;25588:383:10:-;25683:1;25659:26;;:12;:26;;;25655:63;;25694:24;;;;;;;;;;;;;;25655:63;25729:23;25755:13;;;;;;;;;;;25729:39;;25801:12;25782:31;;:15;:31;;;25778:86;;25850:13;;;;;;;;;;;25822:42;;;;;;;;;;;:::i;:::-;;;;;;;;25778:86;25891:12;25875:13;;:28;;;;;;;;;;;;;;;;;;25918:46;25934:15;25951:12;25918:46;;;;;;;:::i;:::-;;;;;;;;25645:326;25588:383;:::o;2912:187:2:-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;88:117:26:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:77::-;882:7;911:5;900:16;;845:77;;;:::o;928:122::-;1001:24;1019:5;1001:24;:::i;:::-;994:5;991:35;981:63;;1040:1;1037;1030:12;981:63;928:122;:::o;1056:143::-;1113:5;1144:6;1138:13;1129:22;;1160:33;1187:5;1160:33;:::i;:::-;1056:143;;;;:::o;1205:663::-;1293:6;1301;1309;1358:2;1346:9;1337:7;1333:23;1329:32;1326:119;;;1364:79;;:::i;:::-;1326:119;1484:1;1509:64;1565:7;1556:6;1545:9;1541:22;1509:64;:::i;:::-;1499:74;;1455:128;1622:2;1648:64;1704:7;1695:6;1684:9;1680:22;1648:64;:::i;:::-;1638:74;;1593:129;1761:2;1787:64;1843:7;1834:6;1823:9;1819:22;1787:64;:::i;:::-;1777:74;;1732:129;1205:663;;;;;:::o;1874:118::-;1961:24;1979:5;1961:24;:::i;:::-;1956:3;1949:37;1874:118;;:::o;1998:222::-;2091:4;2129:2;2118:9;2114:18;2106:26;;2142:71;2210:1;2199:9;2195:17;2186:6;2142:71;:::i;:::-;1998:222;;;;:::o;2226:118::-;2313:24;2331:5;2313:24;:::i;:::-;2308:3;2301:37;2226:118;;:::o;2350:332::-;2471:4;2509:2;2498:9;2494:18;2486:26;;2522:71;2590:1;2579:9;2575:17;2566:6;2522:71;:::i;:::-;2603:72;2671:2;2660:9;2656:18;2647:6;2603:72;:::i;:::-;2350:332;;;;;:::o;2688:85::-;2733:7;2762:5;2751:16;;2688:85;;;:::o;2779:60::-;2807:3;2828:5;2821:12;;2779:60;;;:::o;2845:158::-;2903:9;2936:61;2954:42;2963:32;2989:5;2963:32;:::i;:::-;2954:42;:::i;:::-;2936:61;:::i;:::-;2923:74;;2845:158;;;:::o;3009:147::-;3104:45;3143:5;3104:45;:::i;:::-;3099:3;3092:58;3009:147;;:::o;3162:348::-;3291:4;3329:2;3318:9;3314:18;3306:26;;3342:79;3418:1;3407:9;3403:17;3394:6;3342:79;:::i;:::-;3431:72;3499:2;3488:9;3484:18;3475:6;3431:72;:::i;:::-;3162:348;;;;;:::o;3516:332::-;3637:4;3675:2;3664:9;3660:18;3652:26;;3688:71;3756:1;3745:9;3741:17;3732:6;3688:71;:::i;:::-;3769:72;3837:2;3826:9;3822:18;3813:6;3769:72;:::i;:::-;3516:332;;;;;:::o;1263:28002:10:-;;;;;;;" + "object": "608060405234801562000010575f80fd5b50620000216200002760201b60201c565b62000191565b5f620000386200012b60201b60201c565b9050805f0160089054906101000a900460ff161562000083576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1614620001285767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff6040516200011f919062000176565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b620001708162000152565b82525050565b5f6020820190506200018b5f83018462000165565b92915050565b617503806200019f5f395ff3fe608060405234801562000010575f80fd5b5060043610620002ae575f3560e01c8063701ab8c1116200016f578063aabc4b3c11620000d3578063e203a31f1162000091578063e203a31f1462000847578063e30c39781462000867578063e74b981b1462000889578063e92d0d5d14620008a9578063f2fde38b14620008c9578063fd90c2be14620008e957620002ae565b8063aabc4b3c1462000788578063be20309414620007c5578063c1b931be14620007e5578063d547741f1462000807578063ddbfd941146200082757620002ae565b806380c5061e116200012d57806380c5061e14620006a85780638ce9aa1c14620006ca5780638da5cb5b14620006ec57806391d14854146200070e578063a0a0ea391462000744578063a217fddf146200076657620002ae565b8063701ab8c11462000602578063704037bd1462000624578063715018a6146200065a57806379ba509714620006665780637daf5d66146200067257620002ae565b80633a2f1a9111620002175780635a44092311620001d55780635a44092314620005125780635b35875c1462000532578063659ac74b1462000554578063661d7ffb146200058a5780636622e0d714620005ac57806369d56ea314620005e257620002ae565b80633a2f1a91146200046e5780633c78a941146200048e5780634ccb20c014620004ae5780634cd161d314620004d05780634e937c3a14620004f057620002ae565b8063248a9ca31162000271578063248a9ca314620003825780632772184214620003b85780632cc06b8c14620003ee5780632f2ff15d146200040e57806336568abe146200042e578063379ee803146200044e57620002ae565b806301ffc9a714620002b25780630282c9c114620002e85780630752092b146200030a578063093ff76914620003405780631af5bacc1462000360575b5f80fd5b620002d06004803603810190620002ca9190620044b5565b6200090b565b604051620002df919062004501565b60405180910390f35b620002f262000987565b604051620003019190620045ec565b60405180910390f35b6200032860048036038101906200032291906200463d565b62000a89565b604051620003379190620046f3565b60405180910390f35b6200035e6004803603810190620003589190620047dc565b62000aa7565b005b6200036a62000bc3565b604051620003799190620048e6565b60405180910390f35b620003a060048036038101906200039a919062004930565b62000be7565b604051620003af9190620048e6565b60405180910390f35b620003d66004803603810190620003d0919062004960565b62000c13565b604051620003e5919062004501565b60405180910390f35b6200040c600480360381019062000406919062004990565b62000c31565b005b6200042c600480360381019062000426919062004a18565b62000cc4565b005b6200044c600480360381019062000446919062004a18565b62000cec565b005b6200046c600480360381019062000466919062004a8c565b62000d6c565b005b6200048c600480360381019062000486919062004bcf565b62000eb5565b005b620004ac6004803603810190620004a6919062004cb7565b62000fdc565b005b620004b862001046565b604051620004c7919062004cf8565b60405180910390f35b620004ee6004803603810190620004e8919062004d13565b6200106d565b005b620004fa620011b6565b60405162000509919062004d69565b60405180910390f35b6200053060048036038101906200052a919062004960565b620011c2565b005b6200053c6200126c565b6040516200054b9190620045ec565b60405180910390f35b6200057260048036038101906200056c919062004d84565b6200127f565b60405162000581919062004e17565b60405180910390f35b6200059462001aba565b604051620005a39190620048e6565b60405180910390f35b620005ca6004803603810190620005c4919062004e32565b62001ade565b604051620005d9919062004fbb565b60405180910390f35b620006006004803603810190620005fa919062004fdd565b62001d7f565b005b6200060c62002099565b6040516200061b919062004d69565b60405180910390f35b6200064260048036038101906200063c91906200504c565b620020a1565b60405162000651919062005100565b60405180910390f35b62000664620020c1565b005b62000670620020d8565b005b6200069060048036038101906200068a91906200463d565b6200216f565b6040516200069f919062004e17565b60405180910390f35b620006b2620021b6565b604051620006c1919062004d69565b60405180910390f35b620006d4620021c8565b604051620006e3919062004d69565b60405180910390f35b620006f6620021d7565b60405162000705919062004cf8565b60405180910390f35b6200072c600480360381019062000726919062004a18565b6200220e565b6040516200073b919062004501565b60405180910390f35b6200074e6200226e565b6040516200075d919062004cf8565b60405180910390f35b6200077062002296565b6040516200077f9190620048e6565b60405180910390f35b620007a66004803603810190620007a091906200463d565b6200229c565b604051620007bc9897969594939291906200511b565b60405180910390f35b620007e36004803603810190620007dd9190620051a7565b620023b6565b005b620007ef6200262d565b604051620007fe9190620048e6565b60405180910390f35b6200082560048036038101906200081f919062004a18565b62002654565b005b6200084560048036038101906200083f919062004960565b6200267c565b005b6200086560048036038101906200085f919062005216565b62002726565b005b62000871620027c2565b60405162000880919062004cf8565b60405180910390f35b620008a76004803603810190620008a1919062005246565b620027f9565b005b620008c76004803603810190620008c191906200463d565b62002811565b005b620008e76004803603810190620008e1919062005246565b62002908565b005b620008f3620029c7565b60405162000902919062004d69565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806200098057506200097f82620029d0565b5b9050919050565b60605f62000996600562002a39565b90505f81111562000a85578067ffffffffffffffff811115620009be57620009bd62005276565b5b604051908082528060200260200182016040528015620009ed5781602001602082028036833780820191505090505b5091505f805b8281101562000a75575f8062000a1483600562002a4e90919063ffffffff16565b9150915062000a25815f1b62002a77565b1562000a5f578186858151811062000a425762000a41620052a3565b5b602002602001018181525050838062000a5b90620052fd565b9450505b50508062000a6d90620052fd565b9050620009f3565b508181101562000a83578083525b505b5090565b5f62000aa082600862002a9590919063ffffffff16565b9050919050565b62000ab162002aae565b5f62000ac38b8b8b61ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b40578a8a8a6040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162000b379392919062005381565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16636653851a898989898989896040518863ffffffff1660e01b815260040162000b879796959493929190620053de565b5f604051808303815f87803b15801562000b9f575f80fd5b505af115801562000bb2573d5f803e3d5ffd5b505050505050505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b5f8062000bf362002c9e565b9050805f015f8481526020019081526020015f2060010154915050919050565b5f62000c2a82600862002cc590919063ffffffff16565b9050919050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000c5d8162002cf4565b62000cbe8484845f801b5f67ffffffffffffffff81111562000c845762000c8362005276565b5b6040519080825280601f01601f19166020018201604052801562000cb75781602001600182028036833780820191505090505b5062002d0c565b50505050565b62000ccf8262000be7565b62000cda8162002cf4565b62000ce6838362002ec5565b50505050565b62000cf662002f16565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000d5b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000d67828262002f1d565b505050565b62000d7662002aae565b60018961ffff16101562000dc357886040517f4f958e7100000000000000000000000000000000000000000000000000000000815260040162000dba919062005459565b60405180910390fd5b5f62000de7898989898989895f801b6200301d90979695949392919063ffffffff16565b9050811562000e0c5762000e09600160ff83620031cf9092919063ffffffff16565b90505b62000e2a8a61ffff16825f1c6005620031fa9092919063ffffffff16565b508961ffff167f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a288a8a8a8a8a8a8a60405162000e6d9796959493929190620054ac565b60405180910390a28115158a61ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000ee18162002cf4565b5f73ffffffffffffffffffffffffffffffffffffffff1662000f038562003217565b73ffffffffffffffffffffffffffffffffffffffff16148062000f4957505f60a01b62000f308562003222565b73ffffffffffffffffffffffffffffffffffffffff1916145b1562000f81576040517fd43a15d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000fd38787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505062002d0c565b50505050505050565b62000fe662002aae565b8073ffffffffffffffffffffffffffffffffffffffff1663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200102c575f80fd5b505af11580156200103f573d5f803e3d5ffd5b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200107762002aae565b620010918261ffff1660056200322b90919063ffffffff16565b620010d557816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620010cc919062005459565b60405180910390fd5b5f620010f08361ffff1660056200324490919063ffffffff16565b5f1b90508115156200110d60ff836200325f90919063ffffffff16565b15150362001147576040517f237c71b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200117c8361ffff16620011688460ff85620031cf9092919063ffffffff16565b5f1c6005620031fa9092919063ffffffff16565b508115158361ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a3505050565b5f600380549050905090565b620011cc62002aae565b620011e28160086200326e90919063ffffffff16565b6200122657806040517f03ce0ad90000000000000000000000000000000000000000000000000000000081526004016200121d9190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e60405160405180910390a250565b60606200127a60056200329d565b905090565b5f6200129a8261ffff1660056200322b90919063ffffffff16565b620012de57816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620012d5919062005459565b60405180910390fd5b5f620012f98361ffff1660056200324490919063ffffffff16565b5f1b90505f62001308620021d7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050620013438262002a77565b1580156200134f575080155b15620013965733846040517f09f85fce0000000000000000000000000000000000000000000000000000000081526004016200138d92919062005527565b60405180910390fd5b620013ac86600862002cc590919063ffffffff16565b620013f057856040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620013e79190620046f3565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036200146357866040517f2f9b18530000000000000000000000000000000000000000000000000000000081526004016200145a9190620046f3565b60405180910390fd5b6200146f8585620032be565b505f806200147e8989620032fa565b915091505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620014e8576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200160c578888876040517fcb27a435000000000000000000000000000000000000000000000000000000008152600401620016039392919062005381565b60405180910390fd5b5f620016188562003349565b620016238662003366565b6200162e8762003384565b6200163988620033a2565b6200164489620033c0565b6200164f8a620033de565b6200165a8b620033fc565b8e6040516024016200167498979695949392919062005552565b6040516020818303038152906040527f47973bff000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f8383896040516020016200170b9392919062005665565b6040516020818303038152906040528051906020012090505f60405180602001620017369062004403565b6020820181038252601f19601f8201166040525060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8c87604051602001620017869594939291906200573b565b604051602081830303815290604052604051602001620017a8929190620057dd565b6040516020818303038152906040529050620017c65f83836200341a565b975050505060405180608001604052808761ffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200184151581526020015f151581525060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600385908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062001a2c8661ffff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206200351890919063ffffffff16565b508561ffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff88600160038054905062001a96919062005804565b60405162001aa69291906200583e565b60405180910390a450505050949350505050565b7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d81565b60605f8062001aee8585620032fa565b915091505f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f62001b798262003531565b90505f81111562001d75578067ffffffffffffffff81111562001ba15762001ba062005276565b5b60405190808252806020026020018201604052801562001bde57816020015b62001bca62004411565b81526020019060019003908162001bc05790505b5094505f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b8281101562001d72575f62001c8762001c8183876200354690919063ffffffff16565b6200355f565b905060405180608001604052808261ffff168152602001845f8461ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001845f8461ffff1681526020019081526020015f205f0160169054906101000a900460ff1615158152602001845f8461ffff1681526020019081526020015f205f0160179054906101000a900460ff16151581525088838151811062001d5a5762001d59620052a3565b5b60200260200101819052505080600101905062001c5e565b50505b5050505092915050565b62001d8962002aae565b5f8062001d978686620032fa565b915091505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8661ffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff160362001f56578686866040517f40aa464400000000000000000000000000000000000000000000000000000000815260040162001f4d9392919062005381565b60405180910390fd5b831515816060015115150362001f97576040517eddccca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8761ffff1681526020019081526020015f205f0160176101000a81548160ff021916908315150217905550806020015173ffffffffffffffffffffffffffffffffffffffff167f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f8560405162002088919062004501565b60405180910390a250505050505050565b5f6001905090565b620020ab62004411565b620020b884848462002b3e565b90509392505050565b620020cb62002aae565b620020d65f620035a6565b565b5f620020e362002f16565b90508073ffffffffffffffffffffffffffffffffffffffff1662002106620027c2565b73ffffffffffffffffffffffffffffffffffffffff16146200216157806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002158919062004cf8565b60405180910390fd5b6200216c81620035a6565b50565b5f60038281548110620021875762002186620052a3565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f620021c36008620035e7565b905090565b5f67016345785d8a0000905090565b5f80620021e3620035fc565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f805f1b8303620022595762002223620021d7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905062002268565b62002265838362003623565b90505b92915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f801b81565b5f805f805f805f80620022ba8960056200322b90919063ffffffff16565b620022fe57886040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620022f5919062004d69565b60405180910390fd5b5f620023158a60056200324490919063ffffffff16565b5f1b9050620023248162003349565b61ffff169850620023358162003366565b61ffff169750620023468162003384565b61ffff1696506200235781620033a2565b61ffff1695506200236881620033c0565b62ffffff1694506200237a81620033de565b61ffff1693506200238b81620033fc565b62ffffff169250620023a860ff826200325f90919063ffffffff16565b915050919395975091939597565b5f620023c162003696565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156200240a5750825b90505f60018367ffffffffffffffff161480156200243e57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156200244d575080155b1562002485576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620024d3576001855f0160086101000a81548160ff0219169083151502179055505b620024de88620036bd565b67016345785d8a000087111562002538578667016345785d8a00006040517f5e8988c10000000000000000000000000000000000000000000000000000000081526004016200252f92919062005869565b60405180910390fd5b6200254389620036d5565b866001819055508560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e505f88604051620025bd929190620058d5565b60405180910390a1831562002622575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162002619919062005954565b60405180910390a15b505050505050505050565b5f7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d905090565b6200265f8262000be7565b6200266a8162002cf4565b62002676838362002f1d565b50505050565b6200268662002aae565b6200269c8160086200386f90919063ffffffff16565b620026e057806040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620026d79190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb360405160405180910390a250565b6200273062002aae565b6200274a8161ffff1660056200389e90919063ffffffff16565b6200278e57806040517ffb22c17e00000000000000000000000000000000000000000000000000000000815260040162002785919062005459565b60405180910390fd5b8061ffff167fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1360405160405180910390a250565b5f80620027ce620038b7565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6200280362002aae565b6200280e81620036d5565b50565b6200281b62002aae565b5f60015490508181036200286857816040517f6ea8c7a40000000000000000000000000000000000000000000000000000000081526004016200285f919062004d69565b60405180910390fd5b67016345785d8a0000821115620028c2578167016345785d8a00006040517f5e8988c1000000000000000000000000000000000000000000000000000000008152600401620028b992919062005869565b60405180910390fd5b816001819055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e508183604051620028fc92919062005869565b60405180910390a15050565b6200291262002aae565b5f6200291d620038b7565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1662002981620021d7565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f600154905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f62002a47825f01620038de565b9050919050565b5f805f8062002a60865f0186620038f3565b91509150815f1c815f1c9350935050509250929050565b5f62002a8e60ff836200325f90919063ffffffff16565b9050919050565b5f62002aa4835f018362003930565b5f1c905092915050565b62002ab862002f16565b73ffffffffffffffffffffffffffffffffffffffff1662002ad8620021d7565b73ffffffffffffffffffffffffffffffffffffffff161462002b3c5762002afe62002f16565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002b33919062004cf8565b60405180910390fd5b565b62002b4862004411565b62002b548484620032fa565b809450819550505060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090509392505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b5f62002cec835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6200395a565b905092915050565b62002d098162002d0362002f16565b6200397a565b50565b5f62002d1e86868661ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362002d9b578585856040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162002d929392919062005381565b60405180910390fd5b828173ffffffffffffffffffffffffffffffffffffffff1663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002de6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e0c919062005985565b0362002e5157826040517fb70cd0db00000000000000000000000000000000000000000000000000000000815260040162002e489190620048e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16631b057f6d84846040518363ffffffff1660e01b815260040162002e8e929190620059b5565b5f604051808303815f87803b15801562002ea6575f80fd5b505af115801562002eb9573d5f803e3d5ffd5b50505050505050505050565b5f805f1b830362002f02576040517f7c64a79e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62002f0e8383620039d0565b905092915050565b5f33905090565b5f8062002f2962002c9e565b905062002f3784846200220e565b1562003012575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062002fad62002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600191505062003017565b5f9150505b92915050565b5f8561ffff168761ffff1611806200303a5750610fff8661ffff16115b806200304b57506127108561ffff16115b806200305c57506109c48361ffff16115b806200306f5750620fffff8262ffffff16115b15620030a7576040517f1c07203f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620030c68861ffff1661ffff5f8462003ad0909392919063ffffffff16565b9050620030e88761ffff16610fff60108462003ad0909392919063ffffffff16565b90506200310a8661ffff16610fff601c8462003ad0909392919063ffffffff16565b90506200312c8561ffff16613fff60288462003ad0909392919063ffffffff16565b9050620031508462ffffff1662ffffff60368462003ad0909392919063ffffffff16565b9050620031728361ffff16613fff604e8462003ad0909392919063ffffffff16565b9050620031968262ffffff16620fffff605c8462003ad0909392919063ffffffff16565b9050620031c1815f1c6dffffffffffffffffffffffffffff5f8c62003ad0909392919063ffffffff16565b905098975050505050505050565b5f620031f18484620031e2575f620031e5565b60015b60ff1660018562003ad0565b90509392505050565b5f6200320e845f01845f1b845f1b62003aea565b90509392505050565b5f815f1c9050919050565b5f819050919050565b5f6200323c835f01835f1b62003b23565b905092915050565b5f62003255835f01835f1b62003b43565b5f1c905092915050565b5f600183831c16905092915050565b5f62003295835f018373ffffffffffffffffffffffffffffffffffffffff165f1b62003bc5565b905092915050565b60605f620032ad835f0162003c30565b905060608190508092505050919050565b5f80620032cb8362003c46565b90505f620032d98562003c79565b9050620032f0818362003c8c90919063ffffffff16565b9250505092915050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156200333c57828480945081955050505b8383915091509250929050565b5f6200335f5f8362003fb290919063ffffffff16565b9050919050565b5f6200337d60108362003fc290919063ffffffff16565b9050919050565b5f6200339b601c8362003fc290919063ffffffff16565b9050919050565b5f620033b960288362003fd290919063ffffffff16565b9050919050565b5f620033d760368362003fe290919063ffffffff16565b9050919050565b5f620033f5604e8362003fd290919063ffffffff16565b9050919050565b5f62003413605c8362003ff390919063ffffffff16565b9050919050565b5f83471015620034655747846040517fe4bbecac0000000000000000000000000000000000000000000000000000000081526004016200345c92919062005869565b60405180910390fd5b5f825103620034a0576040517f4ca249dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282516020840186f590505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362003511576040517f741752c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b5f62003529835f01835f1b62003bc5565b905092915050565b5f6200353f825f0162004004565b9050919050565b5f62003555835f018362003930565b5f1c905092915050565b5f818291508161ffff1614620035a1576040517f64ae406d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f620035b1620038b7565b9050805f015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620035e38262004013565b5050565b5f620035f5825f0162004004565b9050919050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f806200362f62002c9e565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b620036c7620040e6565b620036d28162004129565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200373b576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620037f1575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f4fcea971000000000000000000000000000000000000000000000000000000008152600401620037e8919062004cf8565b60405180910390fd5b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721818360405162003863929190620059e7565b60405180910390a15050565b5f62003896835f018373ffffffffffffffffffffffffffffffffffffffff165f1b620041b4565b905092915050565b5f620038af835f01835f1b620042c0565b905092915050565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00905090565b5f620038ec825f01620042f6565b9050919050565b5f805f6200390d84865f016200430b90919063ffffffff16565b905080856002015f8381526020019081526020015f205492509250509250929050565b5f825f018281548110620039495762003948620052a3565b5b905f5260205f200154905092915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6200398682826200220e565b620039cc5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401620039c392919062005a12565b60405180910390fd5b5050565b5f80620039dc62002c9e565b9050620039ea84846200220e565b62003ac5576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062003a6062002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062003aca565b5f9150505b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f81846002015f8581526020019081526020015f208190555062003b1a83855f016200432290919063ffffffff16565b90509392505050565b5f62003b3b82845f016200433990919063ffffffff16565b905092915050565b5f80836002015f8481526020019081526020015f205490505f801b8114801562003b76575062003b74848462003b23565b155b1562003bbb57826040517f02b5668600000000000000000000000000000000000000000000000000000000815260040162003bb29190620048e6565b60405180910390fd5b8091505092915050565b5f62003bd283836200395a565b62003c2657825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f20819055506001905062003c2a565b5f90505b92915050565b606062003c3f825f0162004350565b9050919050565b5f612710608060ff168361ffff16901b8162003c675762003c6662005a3d565b5b04608060ff166001901b019050919050565b5f628000008262ffffff16039050919050565b5f805f80840362003caa57608060ff166001901b9250505062003fac565b8390505f81121562003cc057805f039050811591505b6210000081101562003f2257608060ff166001901b9250846fffffffffffffffffffffffffffffffff86111562003cfc57805f19049050821592505b600182161562003d0f5780840260801c93505b80810260801c9050600282161562003d2a5780840260801c93505b80810260801c9050600482161562003d455780840260801c93505b80810260801c9050600882161562003d605780840260801c93505b80810260801c9050601082161562003d7b5780840260801c93505b80810260801c9050602082161562003d965780840260801c93505b80810260801c9050604082161562003db15780840260801c93505b80810260801c9050608082161562003dcc5780840260801c93505b80810260801c905061010082161562003de85780840260801c93505b80810260801c905061020082161562003e045780840260801c93505b80810260801c905061040082161562003e205780840260801c93505b80810260801c905061080082161562003e3c5780840260801c93505b80810260801c905061100082161562003e585780840260801c93505b80810260801c905061200082161562003e745780840260801c93505b80810260801c905061400082161562003e905780840260801c93505b80810260801c905061800082161562003eac5780840260801c93505b80810260801c90506201000082161562003ec95780840260801c93505b80810260801c90506202000082161562003ee65780840260801c93505b80810260801c90506204000082161562003f035780840260801c93505b80810260801c90506208000082161562003f205780840260801c93505b505b5f830362003f6b5784846040517f3b74b31a00000000000000000000000000000000000000000000000000000000815260040162003f6292919062005a84565b60405180910390fd5b8162003f78578262003fa7565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62003fa6919062005aaf565b5b925050505b92915050565b5f61ffff83831c16905092915050565b5f610fff83831c16905092915050565b5f613fff83831c16905092915050565b5f62ffffff83831c16905092915050565b5f620fffff83831c16905092915050565b5f815f01805490509050919050565b5f6200401e620035fc565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b620040f062004371565b62004127576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b62004133620040e6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620041a6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200419d919062004cf8565b60405180910390fd5b620041b181620035a6565b50565b5f80836001015f8481526020019081526020015f205490505f8114620042b5575f600182620041e4919062005804565b90505f6001865f0180549050620041fc919062005804565b905080821462004269575f865f0182815481106200421f576200421e620052a3565b5b905f5260205f200154905080875f018481548110620042435762004242620052a3565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f018054806200427f576200427e62005ae6565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050620042ba565b5f9150505b92915050565b5f826002015f8381526020019081526020015f205f9055620042ee82845f016200439190919063ffffffff16565b905092915050565b5f62004304825f0162004004565b9050919050565b5f6200431a835f018362003930565b905092915050565b5f62004331835f018362003bc5565b905092915050565b5f62004348835f01836200395a565b905092915050565b60605f62004360835f01620043a8565b905060608190508092505050919050565b5f6200437c62003696565b5f0160089054906101000a900460ff16905090565b5f620043a0835f0183620041b4565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015620043f757602002820191905f5260205f20905b815481526020019060010190808311620043e2575b50505050509050919050565b6119ba8062005b1483390190565b60405180608001604052805f61ffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62004491816200445b565b81146200449c575f80fd5b50565b5f81359050620044af8162004486565b92915050565b5f60208284031215620044cd57620044cc62004453565b5b5f620044dc848285016200449f565b91505092915050565b5f8115159050919050565b620044fb81620044e5565b82525050565b5f602082019050620045165f830184620044f0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b620045598162004545565b82525050565b5f6200456c83836200454e565b60208301905092915050565b5f602082019050919050565b5f62004590826200451c565b6200459c818562004526565b9350620045a98362004536565b805f5b83811015620045df578151620045c388826200455f565b9750620045d08362004578565b925050600181019050620045ac565b5085935050505092915050565b5f6020820190508181035f83015262004606818462004584565b905092915050565b620046198162004545565b811462004624575f80fd5b50565b5f8135905062004637816200460e565b92915050565b5f6020828403121562004655576200465462004453565b5b5f620046648482850162004627565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f620046b5620046af620046a9846200466d565b6200468c565b6200466d565b9050919050565b5f620046c88262004695565b9050919050565b5f620046db82620046bc565b9050919050565b620046ed81620046cf565b82525050565b5f602082019050620047085f830184620046e2565b92915050565b5f6200471a826200466d565b9050919050565b5f6200472d826200470e565b9050919050565b6200473f8162004721565b81146200474a575f80fd5b50565b5f813590506200475d8162004734565b92915050565b5f61ffff82169050919050565b6200477b8162004763565b811462004786575f80fd5b50565b5f81359050620047998162004770565b92915050565b5f62ffffff82169050919050565b620047b8816200479f565b8114620047c3575f80fd5b50565b5f81359050620047d681620047ad565b92915050565b5f805f805f805f805f806101408b8d031215620047fe57620047fd62004453565b5b5f6200480d8d828e016200474d565b9a50506020620048208d828e016200474d565b9950506040620048338d828e0162004789565b9850506060620048468d828e0162004789565b9750506080620048598d828e0162004789565b96505060a06200486c8d828e0162004789565b95505060c06200487f8d828e0162004789565b94505060e0620048928d828e01620047c6565b935050610100620048a68d828e0162004789565b925050610120620048ba8d828e01620047c6565b9150509295989b9194979a5092959850565b5f819050919050565b620048e081620048cc565b82525050565b5f602082019050620048fb5f830184620048d5565b92915050565b6200490c81620048cc565b811462004917575f80fd5b50565b5f813590506200492a8162004901565b92915050565b5f6020828403121562004948576200494762004453565b5b5f62004957848285016200491a565b91505092915050565b5f6020828403121562004978576200497762004453565b5b5f62004987848285016200474d565b91505092915050565b5f805f60608486031215620049aa57620049a962004453565b5b5f620049b9868287016200474d565b9350506020620049cc868287016200474d565b9250506040620049df8682870162004789565b9150509250925092565b620049f4816200470e565b8114620049ff575f80fd5b50565b5f8135905062004a1281620049e9565b92915050565b5f806040838503121562004a315762004a3062004453565b5b5f62004a40858286016200491a565b925050602062004a538582860162004a02565b9150509250929050565b62004a6881620044e5565b811462004a73575f80fd5b50565b5f8135905062004a868162004a5d565b92915050565b5f805f805f805f805f6101208a8c03121562004aad5762004aac62004453565b5b5f62004abc8c828d0162004789565b995050602062004acf8c828d0162004789565b985050604062004ae28c828d0162004789565b975050606062004af58c828d0162004789565b965050608062004b088c828d0162004789565b95505060a062004b1b8c828d01620047c6565b94505060c062004b2e8c828d0162004789565b93505060e062004b418c828d01620047c6565b92505061010062004b558c828d0162004a76565b9150509295985092959850929598565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011262004b895762004b8862004b65565b5b8235905067ffffffffffffffff81111562004ba95762004ba862004b69565b5b60208301915083600182028301111562004bc85762004bc762004b6d565b5b9250929050565b5f805f805f8060a0878903121562004bec5762004beb62004453565b5b5f62004bfb89828a016200474d565b965050602062004c0e89828a016200474d565b955050604062004c2189828a0162004789565b945050606062004c3489828a016200491a565b935050608087013567ffffffffffffffff81111562004c585762004c5762004457565b5b62004c6689828a0162004b71565b92509250509295509295509295565b5f62004c81826200470e565b9050919050565b62004c938162004c75565b811462004c9e575f80fd5b50565b5f8135905062004cb18162004c88565b92915050565b5f6020828403121562004ccf5762004cce62004453565b5b5f62004cde8482850162004ca1565b91505092915050565b62004cf2816200470e565b82525050565b5f60208201905062004d0d5f83018462004ce7565b92915050565b5f806040838503121562004d2c5762004d2b62004453565b5b5f62004d3b8582860162004789565b925050602062004d4e8582860162004a76565b9150509250929050565b62004d638162004545565b82525050565b5f60208201905062004d7e5f83018462004d58565b92915050565b5f805f806080858703121562004d9f5762004d9e62004453565b5b5f62004dae878288016200474d565b945050602062004dc1878288016200474d565b935050604062004dd487828801620047c6565b925050606062004de78782880162004789565b91505092959194509250565b5f62004dff82620046bc565b9050919050565b62004e118162004df3565b82525050565b5f60208201905062004e2c5f83018462004e06565b92915050565b5f806040838503121562004e4b5762004e4a62004453565b5b5f62004e5a858286016200474d565b925050602062004e6d858286016200474d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b62004eab8162004763565b82525050565b62004ebc8162004df3565b82525050565b62004ecd81620044e5565b82525050565b608082015f82015162004ee95f85018262004ea0565b50602082015162004efe602085018262004eb1565b50604082015162004f13604085018262004ec2565b50606082015162004f28606085018262004ec2565b50505050565b5f62004f3b838362004ed3565b60808301905092915050565b5f602082019050919050565b5f62004f5f8262004e77565b62004f6b818562004e81565b935062004f788362004e91565b805f5b8381101562004fae57815162004f92888262004f2e565b975062004f9f8362004f47565b92505060018101905062004f7b565b5085935050505092915050565b5f6020820190508181035f83015262004fd5818462004f53565b905092915050565b5f805f806080858703121562004ff85762004ff762004453565b5b5f62005007878288016200474d565b94505060206200501a878288016200474d565b93505060406200502d8782880162004789565b9250506060620050408782880162004a76565b91505092959194509250565b5f805f6060848603121562005066576200506562004453565b5b5f62005075868287016200474d565b935050602062005088868287016200474d565b92505060406200509b8682870162004627565b9150509250925092565b608082015f820151620050bb5f85018262004ea0565b506020820151620050d0602085018262004eb1565b506040820151620050e5604085018262004ec2565b506060820151620050fa606085018262004ec2565b50505050565b5f608082019050620051155f830184620050a5565b92915050565b5f61010082019050620051315f83018b62004d58565b62005140602083018a62004d58565b6200514f604083018962004d58565b6200515e606083018862004d58565b6200516d608083018762004d58565b6200517c60a083018662004d58565b6200518b60c083018562004d58565b6200519a60e0830184620044f0565b9998505050505050505050565b5f805f8060808587031215620051c257620051c162004453565b5b5f620051d18782880162004a02565b9450506020620051e48782880162004a02565b9350506040620051f78782880162004627565b92505060606200520a8782880162004a02565b91505092959194509250565b5f602082840312156200522e576200522d62004453565b5b5f6200523d8482850162004789565b91505092915050565b5f602082840312156200525e576200525d62004453565b5b5f6200526d8482850162004a02565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620053098262004545565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200533e576200533d620052d0565b5b600182019050919050565b5f62005369620053636200535d8462004763565b6200468c565b62004545565b9050919050565b6200537b8162005349565b82525050565b5f606082019050620053965f830186620046e2565b620053a56020830185620046e2565b620053b4604083018462005370565b949350505050565b620053c78162004763565b82525050565b620053d8816200479f565b82525050565b5f60e082019050620053f35f83018a620053bc565b620054026020830189620053bc565b620054116040830188620053bc565b620054206060830187620053bc565b6200542f6080830186620053cd565b6200543e60a0830185620053bc565b6200544d60c0830184620053cd565b98975050505050505050565b5f6020820190506200546e5f83018462005370565b92915050565b5f620054946200548e62005488846200479f565b6200468c565b62004545565b9050919050565b620054a68162005474565b82525050565b5f60e082019050620054c15f83018a62005370565b620054d0602083018962005370565b620054df604083018862005370565b620054ee606083018762005370565b620054fd60808301866200549b565b6200550c60a083018562005370565b6200551b60c08301846200549b565b98975050505050505050565b5f6040820190506200553c5f83018562004ce7565b6200554b602083018462005370565b9392505050565b5f61010082019050620055685f83018b620053bc565b62005577602083018a620053bc565b620055866040830189620053bc565b620055956060830188620053bc565b620055a46080830187620053cd565b620055b360a0830186620053bc565b620055c260c0830185620053cd565b620055d160e0830184620053cd565b9998505050505050505050565b5f8160601b9050919050565b5f620055f682620055de565b9050919050565b5f6200560982620055ea565b9050919050565b620056256200561f82620046cf565b620055fd565b82525050565b5f8160f01b9050919050565b5f62005643826200562b565b9050919050565b6200565f620056598262004763565b62005637565b82525050565b5f62005672828662005610565b60148201915062005684828562005610565b6014820191506200569682846200564a565b600282019150819050949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015620056e0578082015181840152602081019050620056c3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200570782620056a7565b620057138185620056b1565b935062005725818560208601620056c1565b6200573081620056eb565b840191505092915050565b5f60a082019050620057505f83018862004ce7565b6200575f6020830187620046e2565b6200576e6040830186620046e2565b6200577d6060830185620053bc565b8181036080830152620057918184620056fb565b90509695505050505050565b5f81905092915050565b5f620057b382620056a7565b620057bf81856200579d565b9350620057d1818560208601620056c1565b80840191505092915050565b5f620057ea8285620057a7565b9150620057f88284620057a7565b91508190509392505050565b5f620058108262004545565b91506200581d8362004545565b9250828203905081811115620058385762005837620052d0565b5b92915050565b5f604082019050620058535f83018562004e06565b62005862602083018462004d58565b9392505050565b5f6040820190506200587e5f83018562004d58565b6200588d602083018462004d58565b9392505050565b5f819050919050565b5f620058bd620058b7620058b18462005894565b6200468c565b62004545565b9050919050565b620058cf816200589d565b82525050565b5f604082019050620058ea5f830185620058c4565b620058f9602083018462004d58565b9392505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6200593c62005936620059308462005900565b6200468c565b62005909565b9050919050565b6200594e816200591c565b82525050565b5f602082019050620059695f83018462005943565b92915050565b5f815190506200597f8162004901565b92915050565b5f602082840312156200599d576200599c62004453565b5b5f620059ac848285016200596f565b91505092915050565b5f604082019050620059ca5f830185620048d5565b8181036020830152620059de8184620056fb565b90509392505050565b5f604082019050620059fc5f83018562004ce7565b62005a0b602083018462004ce7565b9392505050565b5f60408201905062005a275f83018562004ce7565b62005a366020830184620048d5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f819050919050565b62005a7e8162005a6a565b82525050565b5f60408201905062005a995f83018562004d58565b62005aa8602083018462005a73565b9392505050565b5f62005abb8262004545565b915062005ac88362004545565b92508262005adb5762005ada62005a3d565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe60a0604052604051620019ba380380620019ba833981810160405281019062000029919062000dab565b8460405180602001604052805f8152506200004b82826200059d60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505f808573ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516200012c919062000e98565b5f60405180830381855afa9150503d805f811462000166576040519150601f19603f3d011682016040523d82523d5f602084013e6200016b565b606091505b50915091505f8180602001905181019062000187919062000f61565b90505f808773ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000234919062000e98565b5f60405180830381855afa9150503d805f81146200026e576040519150601f19603f3d011682016040523d82523d5f602084013e62000273565b606091505b50915091505f818060200190518101906200028f919062000f61565b90508580156200029c5750825b620002de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d59062001034565b60405180910390fd5b60405180602001604052805f8152508051906020012084805190602001201415801562000327575060405180602001604052805f81525080519060200120818051906020012014155b62000369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036090620010c8565b60405180910390fd5b896200039d7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088620004107f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa582645f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508761ffff16620004877fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f569738427825f1b620006a160201b60201c565b5f01819055505f620004a38961ffff16620006aa60201b60201c565b9050848282604051602001620004bc939291906200117e565b604051602081830303815290604052620004fe7f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f5f1b6200083060201b60201c565b5f0190816200050e919062001414565b5084828260405160200162000526939291906200151e565b604051602081830303815290604052620005687fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845f1b6200083060201b60201c565b5f01908162000578919062001414565b506200058b8c896200059d60201b60201c565b5050505050505050505050506200177e565b620005ae826200083960201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a25f8151111562000683576200067c8273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000649573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200066f919062001587565b82620009df60201b60201c565b5062000694565b6200069362000a6b60201b60201c565b5b5050565b5f819050919050565b5f819050919050565b60605f8261ffff1603620006f6576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506200082b565b5f8290505f5b5f8261ffff16146200072f5780806200071590620015e4565b915050600a826200072791906200163f565b9150620006fc565b5f8161ffff1667ffffffffffffffff81111562000751576200075062000c4f565b5b6040519080825280601f01601f191660200182016040528015620007845781602001600182028036833780820191505090505b5090505b5f8561ffff16146200082457600182620007a3919062001676565b9150600a85620007b49190620016b2565b6030620007c29190620016e9565b60f81b818361ffff1681518110620007df57620007de62001725565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856200081c91906200163f565b945062000788565b8093505050505b919050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036200089757806040517f64ced0ec0000000000000000000000000000000000000000000000000000000081526004016200088e919062001763565b60405180910390fd5b80620008cb7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000955573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200097b919062001587565b90505f8173ffffffffffffffffffffffffffffffffffffffff163b03620009db57806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401620009d2919062001763565b60405180910390fd5b5050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405162000a0a919062000e98565b5f60405180830381855af49150503d805f811462000a44576040519150601f19603f3d011682016040523d82523d5f602084013e62000a49565b606091505b509150915062000a6185838362000aa860201b60201c565b9250505092915050565b5f34111562000aa6576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60608262000ac75762000ac18262000b4460201b60201c565b62000b3c565b5f825114801562000aee57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1562000b3357836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040162000b2a919062001763565b60405180910390fd5b81905062000b3d565b5b9392505050565b5f8151111562000b575780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bc58262000b9a565b9050919050565b62000bd78162000bb9565b811462000be2575f80fd5b50565b5f8151905062000bf58162000bcc565b92915050565b5f61ffff82169050919050565b62000c138162000bfb565b811462000c1e575f80fd5b50565b5f8151905062000c318162000c08565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000c878262000c3f565b810181811067ffffffffffffffff8211171562000ca95762000ca862000c4f565b5b80604052505050565b5f62000cbd62000b89565b905062000ccb828262000c7c565b919050565b5f67ffffffffffffffff82111562000ced5762000cec62000c4f565b5b62000cf88262000c3f565b9050602081019050919050565b5f5b8381101562000d2457808201518184015260208101905062000d07565b5f8484015250505050565b5f62000d4562000d3f8462000cd0565b62000cb2565b90508281526020810184848401111562000d645762000d6362000c3b565b5b62000d7184828562000d05565b509392505050565b5f82601f83011262000d905762000d8f62000c37565b5b815162000da284826020860162000d2f565b91505092915050565b5f805f805f60a0868803121562000dc75762000dc662000b92565b5b5f62000dd68882890162000be5565b955050602062000de98882890162000be5565b945050604062000dfc8882890162000be5565b935050606062000e0f8882890162000c21565b925050608086015167ffffffffffffffff81111562000e335762000e3262000b96565b5b62000e418882890162000d79565b9150509295509295909350565b5f81519050919050565b5f81905092915050565b5f62000e6e8262000e4e565b62000e7a818562000e58565b935062000e8c81856020860162000d05565b80840191505092915050565b5f62000ea5828462000e62565b915081905092915050565b5f67ffffffffffffffff82111562000ecd5762000ecc62000c4f565b5b62000ed88262000c3f565b9050602081019050919050565b5f62000efb62000ef58462000eb0565b62000cb2565b90508281526020810184848401111562000f1a5762000f1962000c3b565b5b62000f2784828562000d05565b509392505050565b5f82601f83011262000f465762000f4562000c37565b5b815162000f5884826020860162000ee5565b91505092915050565b5f6020828403121562000f795762000f7862000b92565b5b5f82015167ffffffffffffffff81111562000f995762000f9862000b96565b5b62000fa78482850162000f2f565b91505092915050565b5f82825260208201905092915050565b7f4c4250616972426561636f6e50726f78793a204661696c656420746f206765745f8201527f20746f6b656e2073796d626f6c73000000000000000000000000000000000000602082015250565b5f6200101c602e8362000fb0565b9150620010298262000fc0565b604082019050919050565b5f6020820190508181035f8301526200104d816200100e565b9050919050565b7f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e5f8201527f2073796d626f6c73000000000000000000000000000000000000000000000000602082015250565b5f620010b060288362000fb0565b9150620010bd8262001054565b604082019050919050565b5f6020820190508181035f830152620010e181620010a2565b9050919050565b7f4c42545f00000000000000000000000000000000000000000000000000000000815250565b5f81519050919050565b5f81905092915050565b5f6200112e826200110e565b6200113a818562001118565b93506200114c81856020860162000d05565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b5f6200118a82620010e8565b6004820191506200119c828662001122565b9150620011a98262001158565b600182019150620011bb828562001122565b9150620011c88262001158565b600182019150620011da828462001122565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200122c57607f821691505b602082108103620012425762001241620011e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620012a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001269565b620012b2868362001269565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620012fc620012f6620012f084620012ca565b620012d3565b620012ca565b9050919050565b5f819050919050565b6200131783620012dc565b6200132f620013268262001303565b84845462001275565b825550505050565b5f90565b6200134562001337565b620013528184846200130c565b505050565b5b8181101562001379576200136d5f826200133b565b60018101905062001358565b5050565b601f821115620013c857620013928162001248565b6200139d846200125a565b81016020851015620013ad578190505b620013c5620013bc856200125a565b83018262001357565b50505b505050565b5f82821c905092915050565b5f620013ea5f1984600802620013cd565b1980831691505092915050565b5f620014048383620013d9565b9150826002028217905092915050565b6200141f826200110e565b67ffffffffffffffff8111156200143b576200143a62000c4f565b5b62001447825462001214565b620014548282856200137d565b5f60209050601f8311600181146200148a575f841562001475578287015190505b620014818582620013f7565b865550620014f0565b601f1984166200149a8662001248565b5f5b82811015620014c3578489015182556001820191506020850194506020810190506200149c565b86831015620014e35784890151620014df601f891682620013d9565b8355505b6001600288020188555050505b505050505050565b7f4c697175696469747920426f6f6b20546f6b656e200000000000000000000000815250565b5f6200152a82620014f8565b6015820191506200153c828662001122565b9150620015498262001158565b6001820191506200155b828562001122565b9150620015688262001158565b6001820191506200157a828462001122565b9150819050949350505050565b5f602082840312156200159f576200159e62000b92565b5b5f620015ae8482850162000be5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620015f08262000bfb565b915061ffff8203620016075762001606620015b7565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200164b8262000bfb565b9150620016588362000bfb565b9250826200166b576200166a62001612565b5b828204905092915050565b5f620016828262000bfb565b91506200168f8362000bfb565b9250828203905061ffff811115620016ac57620016ab620015b7565b5b92915050565b5f620016be8262000bfb565b9150620016cb8362000bfb565b925082620016de57620016dd62001612565b5b828206905092915050565b5f620016f58262000bfb565b9150620017028362000bfb565b9250828201905061ffff8111156200171f576200171e620015b7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6200175d8162000bb9565b82525050565b5f602082019050620017785f83018462001752565b92915050565b608051610223620017975f395f61011801526102235ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061005c565b005b34801561003d575f80fd5b5061004661006e565b604051610053919061017b565b60405180910390f35b61006c61006761007c565b6100f6565b565b5f610077610115565b905090565b5f610085610115565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f191906101c2565b905090565b365f80375f80365f845af43d5f803e805f8114610111573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101658261013c565b9050919050565b6101758161015b565b82525050565b5f60208201905061018e5f83018461016c565b92915050565b5f80fd5b6101a18161015b565b81146101ab575f80fd5b50565b5f815190506101bc81610198565b92915050565b5f602082840312156101d7576101d6610194565b5b5f6101e4848285016101ae565b9150509291505056fea2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033a2646970667358221220408f674abc88915a00048d86f4f02c24344fb5b67b185d05ce64c6c9aedc7e7c64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH3 0x21 PUSH3 0x27 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x191 JUMP JUMPDEST PUSH0 PUSH3 0x38 PUSH3 0x12B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x83 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 AND DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH3 0x128 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD PUSH3 0x11F SWAP2 SWAP1 PUSH3 0x176 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x170 DUP2 PUSH3 0x152 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x18B PUSH0 DUP4 ADD DUP5 PUSH3 0x165 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7503 DUP1 PUSH3 0x19F PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x2AE JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x701AB8C1 GT PUSH3 0x16F JUMPI DUP1 PUSH4 0xAABC4B3C GT PUSH3 0xD3 JUMPI DUP1 PUSH4 0xE203A31F GT PUSH3 0x91 JUMPI DUP1 PUSH4 0xE203A31F EQ PUSH3 0x847 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH3 0x867 JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH3 0x889 JUMPI DUP1 PUSH4 0xE92D0D5D EQ PUSH3 0x8A9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x8C9 JUMPI DUP1 PUSH4 0xFD90C2BE EQ PUSH3 0x8E9 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0xAABC4B3C EQ PUSH3 0x788 JUMPI DUP1 PUSH4 0xBE203094 EQ PUSH3 0x7C5 JUMPI DUP1 PUSH4 0xC1B931BE EQ PUSH3 0x7E5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x807 JUMPI DUP1 PUSH4 0xDDBFD941 EQ PUSH3 0x827 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x80C5061E GT PUSH3 0x12D JUMPI DUP1 PUSH4 0x80C5061E EQ PUSH3 0x6A8 JUMPI DUP1 PUSH4 0x8CE9AA1C EQ PUSH3 0x6CA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x6EC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x70E JUMPI DUP1 PUSH4 0xA0A0EA39 EQ PUSH3 0x744 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x766 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x701AB8C1 EQ PUSH3 0x602 JUMPI DUP1 PUSH4 0x704037BD EQ PUSH3 0x624 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x65A JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH3 0x666 JUMPI DUP1 PUSH4 0x7DAF5D66 EQ PUSH3 0x672 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 GT PUSH3 0x217 JUMPI DUP1 PUSH4 0x5A440923 GT PUSH3 0x1D5 JUMPI DUP1 PUSH4 0x5A440923 EQ PUSH3 0x512 JUMPI DUP1 PUSH4 0x5B35875C EQ PUSH3 0x532 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH3 0x554 JUMPI DUP1 PUSH4 0x661D7FFB EQ PUSH3 0x58A JUMPI DUP1 PUSH4 0x6622E0D7 EQ PUSH3 0x5AC JUMPI DUP1 PUSH4 0x69D56EA3 EQ PUSH3 0x5E2 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 EQ PUSH3 0x46E JUMPI DUP1 PUSH4 0x3C78A941 EQ PUSH3 0x48E JUMPI DUP1 PUSH4 0x4CCB20C0 EQ PUSH3 0x4AE JUMPI DUP1 PUSH4 0x4CD161D3 EQ PUSH3 0x4D0 JUMPI DUP1 PUSH4 0x4E937C3A EQ PUSH3 0x4F0 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH3 0x271 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x382 JUMPI DUP1 PUSH4 0x27721842 EQ PUSH3 0x3B8 JUMPI DUP1 PUSH4 0x2CC06B8C EQ PUSH3 0x3EE JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x40E JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x42E JUMPI DUP1 PUSH4 0x379EE803 EQ PUSH3 0x44E JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x2B2 JUMPI DUP1 PUSH4 0x282C9C1 EQ PUSH3 0x2E8 JUMPI DUP1 PUSH4 0x752092B EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x93FF769 EQ PUSH3 0x340 JUMPI DUP1 PUSH4 0x1AF5BACC EQ PUSH3 0x360 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH3 0x2D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x2CA SWAP2 SWAP1 PUSH3 0x44B5 JUMP JUMPDEST PUSH3 0x90B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x2DF SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x2F2 PUSH3 0x987 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x301 SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x322 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0xA89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x337 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x35E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x358 SWAP2 SWAP1 PUSH3 0x47DC JUMP JUMPDEST PUSH3 0xAA7 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x36A PUSH3 0xBC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x379 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x39A SWAP2 SWAP1 PUSH3 0x4930 JUMP JUMPDEST PUSH3 0xBE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3AF SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x3D0 SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0xC13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3E5 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x406 SWAP2 SWAP1 PUSH3 0x4990 JUMP JUMPDEST PUSH3 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x42C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x426 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCC4 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x44C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x446 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCEC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x466 SWAP2 SWAP1 PUSH3 0x4A8C JUMP JUMPDEST PUSH3 0xD6C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x48C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x486 SWAP2 SWAP1 PUSH3 0x4BCF JUMP JUMPDEST PUSH3 0xEB5 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4A6 SWAP2 SWAP1 PUSH3 0x4CB7 JUMP JUMPDEST PUSH3 0xFDC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4B8 PUSH3 0x1046 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x4C7 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x4EE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4E8 SWAP2 SWAP1 PUSH3 0x4D13 JUMP JUMPDEST PUSH3 0x106D JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4FA PUSH3 0x11B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x509 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x530 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x52A SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x11C2 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x53C PUSH3 0x126C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x54B SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x572 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x56C SWAP2 SWAP1 PUSH3 0x4D84 JUMP JUMPDEST PUSH3 0x127F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x581 SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x594 PUSH3 0x1ABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5A3 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x5CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5C4 SWAP2 SWAP1 PUSH3 0x4E32 JUMP JUMPDEST PUSH3 0x1ADE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5D9 SWAP2 SWAP1 PUSH3 0x4FBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x600 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5FA SWAP2 SWAP1 PUSH3 0x4FDD JUMP JUMPDEST PUSH3 0x1D7F JUMP JUMPDEST STOP JUMPDEST PUSH3 0x60C PUSH3 0x2099 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x61B SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x642 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x63C SWAP2 SWAP1 PUSH3 0x504C JUMP JUMPDEST PUSH3 0x20A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x651 SWAP2 SWAP1 PUSH3 0x5100 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x664 PUSH3 0x20C1 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x670 PUSH3 0x20D8 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x690 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x68A SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x216F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x69F SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6B2 PUSH3 0x21B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6C1 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6D4 PUSH3 0x21C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6E3 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6F6 PUSH3 0x21D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x705 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x72C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x726 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x220E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x73B SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x74E PUSH3 0x226E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x75D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x770 PUSH3 0x2296 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x77F SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7A0 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x229C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7BC SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x511B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7DD SWAP2 SWAP1 PUSH3 0x51A7 JUMP JUMPDEST PUSH3 0x23B6 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x7EF PUSH3 0x262D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7FE SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x825 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x81F SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x2654 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x845 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x83F SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x267C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x865 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x85F SWAP2 SWAP1 PUSH3 0x5216 JUMP JUMPDEST PUSH3 0x2726 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x871 PUSH3 0x27C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x880 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x8A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8A1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x27F9 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8C1 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x2811 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8E1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x2908 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8F3 PUSH3 0x29C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x902 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH3 0x980 JUMPI POP PUSH3 0x97F DUP3 PUSH3 0x29D0 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x996 PUSH1 0x5 PUSH3 0x2A39 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0xA85 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x9BE JUMPI PUSH3 0x9BD PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x9ED JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0xA75 JUMPI PUSH0 DUP1 PUSH3 0xA14 DUP4 PUSH1 0x5 PUSH3 0x2A4E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xA25 DUP2 PUSH0 SHL PUSH3 0x2A77 JUMP JUMPDEST ISZERO PUSH3 0xA5F JUMPI DUP2 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH3 0xA42 JUMPI PUSH3 0xA41 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP1 PUSH3 0xA5B SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP DUP1 PUSH3 0xA6D SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP1 POP PUSH3 0x9F3 JUMP JUMPDEST POP DUP2 DUP2 LT ISZERO PUSH3 0xA83 JUMPI DUP1 DUP4 MSTORE JUMPDEST POP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0xAA0 DUP3 PUSH1 0x8 PUSH3 0x2A95 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xAB1 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0xAC3 DUP12 DUP12 DUP12 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xB40 JUMPI DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB37 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6653851A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB87 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x53DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xB9F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xBB2 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0xBF3 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xC2A DUP3 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xC5D DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCBE DUP5 DUP5 DUP5 PUSH0 DUP1 SHL PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xC84 JUMPI PUSH3 0xC83 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xCB7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCCF DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0xCDA DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCE6 DUP4 DUP4 PUSH3 0x2EC5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCF6 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0xD5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xD67 DUP3 DUP3 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH3 0xD76 PUSH3 0x2AAE JUMP JUMPDEST PUSH1 0x1 DUP10 PUSH2 0xFFFF AND LT ISZERO PUSH3 0xDC3 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0x4F958E7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xDBA SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0xDE7 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH0 DUP1 SHL PUSH3 0x301D SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH3 0xE0C JUMPI PUSH3 0xE09 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH3 0xE2A DUP11 PUSH2 0xFFFF AND DUP3 PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP10 PUSH2 0xFFFF AND PUSH32 0x839844A256A87F87C9C835117D9A1C40BE013954064C937072ACB32D36DB6A28 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH3 0xE6D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x54AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP2 ISZERO ISZERO DUP11 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xEE1 DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF03 DUP6 PUSH3 0x3217 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH3 0xF49 JUMPI POP PUSH0 PUSH1 0xA0 SHL PUSH3 0xF30 DUP6 PUSH3 0x3222 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST ISZERO PUSH3 0xF81 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD43A15D100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFD3 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0xFE6 PUSH3 0x2AAE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3B9FBE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x102C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x103F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x1077 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x1091 DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x10D5 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x10CC SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x10F0 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP DUP2 ISZERO ISZERO PUSH3 0x110D PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO SUB PUSH3 0x1147 JUMPI PUSH1 0x40 MLOAD PUSH32 0x237C71B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x117C DUP4 PUSH2 0xFFFF AND PUSH3 0x1168 DUP5 PUSH1 0xFF DUP6 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP2 ISZERO ISZERO DUP4 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x11CC PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x11E2 DUP2 PUSH1 0x8 PUSH3 0x326E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x1226 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x3CE0AD900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x121D SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x84CC2115995684DCB0CD3D3A9565E3D32F075DE81DB70C8DC3A719B2A47AF67E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x127A PUSH1 0x5 PUSH3 0x329D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x129A DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x12DE JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x12D5 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x12F9 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH3 0x1308 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x1343 DUP3 PUSH3 0x2A77 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH3 0x134F JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x1396 JUMPI CALLER DUP5 PUSH1 0x40 MLOAD PUSH32 0x9F85FCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x138D SWAP3 SWAP2 SWAP1 PUSH3 0x5527 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x13AC DUP7 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x13F0 JUMPI DUP6 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x13E7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1463 JUMPI DUP7 PUSH1 0x40 MLOAD PUSH32 0x2F9B185300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x145A SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x146F DUP6 DUP6 PUSH3 0x32BE JUMP JUMPDEST POP PUSH0 DUP1 PUSH3 0x147E DUP10 DUP10 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x14E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x160C JUMPI DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH32 0xCB27A43500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1603 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x1618 DUP6 PUSH3 0x3349 JUMP JUMPDEST PUSH3 0x1623 DUP7 PUSH3 0x3366 JUMP JUMPDEST PUSH3 0x162E DUP8 PUSH3 0x3384 JUMP JUMPDEST PUSH3 0x1639 DUP9 PUSH3 0x33A2 JUMP JUMPDEST PUSH3 0x1644 DUP10 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0x164F DUP11 PUSH3 0x33DE JUMP JUMPDEST PUSH3 0x165A DUP12 PUSH3 0x33FC JUMP JUMPDEST DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x1674 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5552 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x47973BFF00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH0 DUP4 DUP4 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x170B SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5665 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH3 0x1736 SWAP1 PUSH3 0x4403 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP14 DUP14 DUP13 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1786 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x573B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17A8 SWAP3 SWAP2 SWAP1 PUSH3 0x57DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH3 0x17C6 PUSH0 DUP4 DUP4 PUSH3 0x341A JUMP JUMPDEST SWAP8 POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x3 DUP6 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x1A2C DUP7 PUSH2 0xFFFF AND PUSH1 0xA PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH3 0x3518 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP6 PUSH2 0xFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C8D104B27C6B7F4492017A6F5CF3803043688934EBCAA6A03540BEEAF976AFF DUP9 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH3 0x1A96 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x1AA6 SWAP3 SWAP2 SWAP1 PUSH3 0x583E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 PUSH3 0x1AEE DUP6 DUP6 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0xA PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 PUSH3 0x1B79 DUP3 PUSH3 0x3531 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0x1D75 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1BA1 JUMPI PUSH3 0x1BA0 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1BDE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH3 0x1BCA PUSH3 0x4411 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x1BC0 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH0 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x1D72 JUMPI PUSH0 PUSH3 0x1C87 PUSH3 0x1C81 DUP4 DUP8 PUSH3 0x3546 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x355F JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE POP DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x1D5A JUMPI PUSH3 0x1D59 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH3 0x1C5E JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1D89 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x1D97 DUP7 DUP7 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1F56 JUMPI DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x40AA464400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1F4D SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP2 PUSH1 0x60 ADD MLOAD ISZERO ISZERO SUB PUSH3 0x1F97 JUMPI PUSH1 0x40 MLOAD PUSH31 0xDDCCCA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x44CF35361C9FF3C8C1397EC6410D5495CC481FEAEF35C9AF11DA1A637107DE4F DUP6 PUSH1 0x40 MLOAD PUSH3 0x2088 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x20AB PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x20B8 DUP5 DUP5 DUP5 PUSH3 0x2B3E JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x20CB PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x20D6 PUSH0 PUSH3 0x35A6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH3 0x20E3 PUSH3 0x2F16 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2106 PUSH3 0x27C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2161 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2158 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x216C DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x2187 JUMPI PUSH3 0x2186 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x21C3 PUSH1 0x8 PUSH3 0x35E7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0x16345785D8A0000 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x21E3 PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2259 JUMPI PUSH3 0x2223 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x2268 JUMP JUMPDEST PUSH3 0x2265 DUP4 DUP4 PUSH3 0x3623 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x22BA DUP10 PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x22FE JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x22F5 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x2315 DUP11 PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH3 0x2324 DUP2 PUSH3 0x3349 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 POP PUSH3 0x2335 DUP2 PUSH3 0x3366 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP8 POP PUSH3 0x2346 DUP2 PUSH3 0x3384 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP7 POP PUSH3 0x2357 DUP2 PUSH3 0x33A2 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP6 POP PUSH3 0x2368 DUP2 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP5 POP PUSH3 0x237A DUP2 PUSH3 0x33DE JUMP JUMPDEST PUSH2 0xFFFF AND SWAP4 POP PUSH3 0x238B DUP2 PUSH3 0x33FC JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP3 POP PUSH3 0x23A8 PUSH1 0xFF DUP3 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH0 PUSH3 0x23C1 PUSH3 0x3696 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x240A JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x243E JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0x244D JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x2485 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH3 0x24D3 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH3 0x24DE DUP9 PUSH3 0x36BD JUMP JUMPDEST PUSH8 0x16345785D8A0000 DUP8 GT ISZERO PUSH3 0x2538 JUMPI DUP7 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x252F SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2543 DUP10 PUSH3 0x36D5 JUMP JUMPDEST DUP7 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x2 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 PUSH0 DUP9 PUSH1 0x40 MLOAD PUSH3 0x25BD SWAP3 SWAP2 SWAP1 PUSH3 0x58D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP4 ISZERO PUSH3 0x2622 JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH3 0x2619 SWAP2 SWAP1 PUSH3 0x5954 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x265F DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0x266A DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0x2676 DUP4 DUP4 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0x2686 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x269C DUP2 PUSH1 0x8 PUSH3 0x386F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x26E0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x26D7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB767739217755D8AF5A2BA75B181A19FA1750F8BB701F09311CB19A90140CB3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH3 0x2730 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x274A DUP2 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x389E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x278E JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2785 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xFFFF AND PUSH32 0xDD86B848BB56FF540CAA68683FA467D0E7EB5F8B2D44E4EE435742EEEAE9BE13 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x27CE PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH3 0x2803 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x280E DUP2 PUSH3 0x36D5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x281B PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP DUP2 DUP2 SUB PUSH3 0x2868 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6EA8C7A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x285F SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0x16345785D8A0000 DUP3 GT ISZERO PUSH3 0x28C2 JUMPI DUP2 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x28B9 SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x28FC SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH3 0x2912 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0x291D PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2981 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A47 DUP3 PUSH0 ADD PUSH3 0x38DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x2A60 DUP7 PUSH0 ADD DUP7 PUSH3 0x38F3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SHR DUP2 PUSH0 SHR SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A8E PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2AA4 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2AB8 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2AD8 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2B3C JUMPI PUSH3 0x2AFE PUSH3 0x2F16 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2B33 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x2B48 PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x2B54 DUP5 DUP5 PUSH3 0x32FA JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x2CEC DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2D09 DUP2 PUSH3 0x2D03 PUSH3 0x2F16 JUMP JUMPDEST PUSH3 0x397A JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH3 0x2D1E DUP7 DUP7 DUP7 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x2D9B JUMPI DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D92 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x781A8915 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2DE6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E0C SWAP2 SWAP1 PUSH3 0x5985 JUMP JUMPDEST SUB PUSH3 0x2E51 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xB70CD0DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E48 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B057F6D DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E8E SWAP3 SWAP2 SWAP1 PUSH3 0x59B5 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2EA6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x2EB9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2F02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C64A79E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2F0E DUP4 DUP4 PUSH3 0x39D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x2F29 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x2F37 DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST ISZERO PUSH3 0x3012 JUMPI PUSH0 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x2FAD PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3017 JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND DUP8 PUSH2 0xFFFF AND GT DUP1 PUSH3 0x303A JUMPI POP PUSH2 0xFFF DUP7 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x304B JUMPI POP PUSH2 0x2710 DUP6 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x305C JUMPI POP PUSH2 0x9C4 DUP4 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x306F JUMPI POP PUSH3 0xFFFFF DUP3 PUSH3 0xFFFFFF AND GT JUMPDEST ISZERO PUSH3 0x30A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1C07203F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x30C6 DUP9 PUSH2 0xFFFF AND PUSH2 0xFFFF PUSH0 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x30E8 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x10 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x310A DUP7 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x1C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x312C DUP6 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x28 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3150 DUP5 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH1 0x36 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3172 DUP4 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x4E DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3196 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFF PUSH1 0x5C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x31C1 DUP2 PUSH0 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 DUP13 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x31F1 DUP5 DUP5 PUSH3 0x31E2 JUMPI PUSH0 PUSH3 0x31E5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP6 PUSH3 0x3AD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x320E DUP5 PUSH0 ADD DUP5 PUSH0 SHL DUP5 PUSH0 SHL PUSH3 0x3AEA JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x323C DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B23 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3255 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B43 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3295 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x32AD DUP4 PUSH0 ADD PUSH3 0x3C30 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x32CB DUP4 PUSH3 0x3C46 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH3 0x32D9 DUP6 PUSH3 0x3C79 JUMP JUMPDEST SWAP1 POP PUSH3 0x32F0 DUP2 DUP4 PUSH3 0x3C8C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x333C JUMPI DUP3 DUP5 DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP JUMPDEST DUP4 DUP4 SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x335F PUSH0 DUP4 PUSH3 0x3FB2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x337D PUSH1 0x10 DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x339B PUSH1 0x1C DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33B9 PUSH1 0x28 DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33D7 PUSH1 0x36 DUP4 PUSH3 0x3FE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33F5 PUSH1 0x4E DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3413 PUSH1 0x5C DUP4 PUSH3 0x3FF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 SELFBALANCE LT ISZERO PUSH3 0x3465 JUMPI SELFBALANCE DUP5 PUSH1 0x40 MLOAD PUSH32 0xE4BBECAC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x345C SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 MLOAD SUB PUSH3 0x34A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD DUP7 CREATE2 SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x3511 JUMPI PUSH1 0x40 MLOAD PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3529 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x353F DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3555 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP3 SWAP2 POP DUP2 PUSH2 0xFFFF AND EQ PUSH3 0x35A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x64AE406D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x35B1 PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH3 0x35E3 DUP3 PUSH3 0x4013 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH3 0x35F5 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x362F PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x36C7 PUSH3 0x40E6 JUMP JUMPDEST PUSH3 0x36D2 DUP2 PUSH3 0x4129 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x373B JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x37F1 JUMPI PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH32 0x4FCEA97100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x37E8 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x3863 SWAP3 SWAP2 SWAP1 PUSH3 0x59E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3896 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x38AF DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x42C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0x237E158222E3E6968B72B9DB0D8043AACF074AD9F650F0D1606B4D82EE432C00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x38EC DUP3 PUSH0 ADD PUSH3 0x42F6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH3 0x390D DUP5 DUP7 PUSH0 ADD PUSH3 0x430B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x3949 JUMPI PUSH3 0x3948 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x3986 DUP3 DUP3 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x39CC JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x39C3 SWAP3 SWAP2 SWAP1 PUSH3 0x5A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x39DC PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x39EA DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x3AC5 JUMPI PUSH1 0x1 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x3A60 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3ACA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP5 PUSH1 0x2 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH3 0x3B1A DUP4 DUP6 PUSH0 ADD PUSH3 0x4322 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3B3B DUP3 DUP5 PUSH0 ADD PUSH3 0x4339 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x2 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP1 SHL DUP2 EQ DUP1 ISZERO PUSH3 0x3B76 JUMPI POP PUSH3 0x3B74 DUP5 DUP5 PUSH3 0x3B23 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH3 0x3BBB JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x2B5668600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3BB2 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3BD2 DUP4 DUP4 PUSH3 0x395A JUMP JUMPDEST PUSH3 0x3C26 JUMPI DUP3 PUSH0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH0 ADD DUP1 SLOAD SWAP1 POP DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP PUSH3 0x3C2A JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x3C3F DUP3 PUSH0 ADD PUSH3 0x4350 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2710 PUSH1 0x80 PUSH1 0xFF AND DUP4 PUSH2 0xFFFF AND SWAP1 SHL DUP2 PUSH3 0x3C67 JUMPI PUSH3 0x3C66 PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DIV PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x800000 DUP3 PUSH3 0xFFFFFF AND SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 DUP5 SUB PUSH3 0x3CAA JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP POP POP PUSH3 0x3FAC JUMP JUMPDEST DUP4 SWAP1 POP PUSH0 DUP2 SLT ISZERO PUSH3 0x3CC0 JUMPI DUP1 PUSH0 SUB SWAP1 POP DUP2 ISZERO SWAP2 POP JUMPDEST PUSH3 0x100000 DUP2 LT ISZERO PUSH3 0x3F22 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 GT ISZERO PUSH3 0x3CFC JUMPI DUP1 PUSH0 NOT DIV SWAP1 POP DUP3 ISZERO SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH3 0x3D0F JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH3 0x3D2A JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x4 DUP3 AND ISZERO PUSH3 0x3D45 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x8 DUP3 AND ISZERO PUSH3 0x3D60 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x10 DUP3 AND ISZERO PUSH3 0x3D7B JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x20 DUP3 AND ISZERO PUSH3 0x3D96 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x40 DUP3 AND ISZERO PUSH3 0x3DB1 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x80 DUP3 AND ISZERO PUSH3 0x3DCC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x100 DUP3 AND ISZERO PUSH3 0x3DE8 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x200 DUP3 AND ISZERO PUSH3 0x3E04 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x400 DUP3 AND ISZERO PUSH3 0x3E20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x800 DUP3 AND ISZERO PUSH3 0x3E3C JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x1000 DUP3 AND ISZERO PUSH3 0x3E58 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x2000 DUP3 AND ISZERO PUSH3 0x3E74 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x4000 DUP3 AND ISZERO PUSH3 0x3E90 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x8000 DUP3 AND ISZERO PUSH3 0x3EAC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x10000 DUP3 AND ISZERO PUSH3 0x3EC9 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x20000 DUP3 AND ISZERO PUSH3 0x3EE6 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x40000 DUP3 AND ISZERO PUSH3 0x3F03 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x80000 DUP3 AND ISZERO PUSH3 0x3F20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST POP JUMPDEST PUSH0 DUP4 SUB PUSH3 0x3F6B JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3B74B31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3F62 SWAP3 SWAP2 SWAP1 PUSH3 0x5A84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH3 0x3F78 JUMPI DUP3 PUSH3 0x3FA7 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x3FA6 SWAP2 SWAP1 PUSH3 0x5AAF JUMP JUMPDEST JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3FFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x401E PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP3 DUP3 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH3 0x40F0 PUSH3 0x4371 JUMP JUMPDEST PUSH3 0x4127 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x4133 PUSH3 0x40E6 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x41A6 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x419D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x41B1 DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 EQ PUSH3 0x42B5 JUMPI PUSH0 PUSH1 0x1 DUP3 PUSH3 0x41E4 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP7 PUSH0 ADD DUP1 SLOAD SWAP1 POP PUSH3 0x41FC SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x4269 JUMPI PUSH0 DUP7 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x421F JUMPI PUSH3 0x421E PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x4243 JUMPI PUSH3 0x4242 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP8 PUSH1 0x1 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP6 PUSH0 ADD DUP1 SLOAD DUP1 PUSH3 0x427F JUMPI PUSH3 0x427E PUSH3 0x5AE6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x42BA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH3 0x42EE DUP3 DUP5 PUSH0 ADD PUSH3 0x4391 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4304 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x431A DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4331 DUP4 PUSH0 ADD DUP4 PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4348 DUP4 PUSH0 ADD DUP4 PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x4360 DUP4 PUSH0 ADD PUSH3 0x43A8 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x437C PUSH3 0x3696 JUMP JUMPDEST PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x43A0 DUP4 PUSH0 ADD DUP4 PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x43F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x43E2 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x19BA DUP1 PUSH3 0x5B14 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4491 DUP2 PUSH3 0x445B JUMP JUMPDEST DUP2 EQ PUSH3 0x449C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x44AF DUP2 PUSH3 0x4486 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x44CD JUMPI PUSH3 0x44CC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x44DC DUP5 DUP3 DUP6 ADD PUSH3 0x449F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x44FB DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4516 PUSH0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4559 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x456C DUP4 DUP4 PUSH3 0x454E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4590 DUP3 PUSH3 0x451C JUMP JUMPDEST PUSH3 0x459C DUP2 DUP6 PUSH3 0x4526 JUMP JUMPDEST SWAP4 POP PUSH3 0x45A9 DUP4 PUSH3 0x4536 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x45DF JUMPI DUP2 MLOAD PUSH3 0x45C3 DUP9 DUP3 PUSH3 0x455F JUMP JUMPDEST SWAP8 POP PUSH3 0x45D0 DUP4 PUSH3 0x4578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x45AC JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4606 DUP2 DUP5 PUSH3 0x4584 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4619 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP2 EQ PUSH3 0x4624 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4637 DUP2 PUSH3 0x460E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4655 JUMPI PUSH3 0x4654 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4664 DUP5 DUP3 DUP6 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46B5 PUSH3 0x46AF PUSH3 0x46A9 DUP5 PUSH3 0x466D JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46C8 DUP3 PUSH3 0x4695 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46DB DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x46ED DUP2 PUSH3 0x46CF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4708 PUSH0 DUP4 ADD DUP5 PUSH3 0x46E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x471A DUP3 PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x472D DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x473F DUP2 PUSH3 0x4721 JUMP JUMPDEST DUP2 EQ PUSH3 0x474A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x475D DUP2 PUSH3 0x4734 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x477B DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP2 EQ PUSH3 0x4786 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4799 DUP2 PUSH3 0x4770 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x47B8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP2 EQ PUSH3 0x47C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x47D6 DUP2 PUSH3 0x47AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH3 0x47FE JUMPI PUSH3 0x47FD PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x480D DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH3 0x4820 DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH3 0x4833 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH3 0x4846 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH3 0x4859 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH3 0x486C DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH3 0x487F DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH3 0x4892 DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 PUSH3 0x48A6 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x120 PUSH3 0x48BA DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x48E0 DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x48FB PUSH0 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x490C DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP2 EQ PUSH3 0x4917 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x492A DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4948 JUMPI PUSH3 0x4947 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4957 DUP5 DUP3 DUP6 ADD PUSH3 0x491A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4978 JUMPI PUSH3 0x4977 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4987 DUP5 DUP3 DUP6 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x49AA JUMPI PUSH3 0x49A9 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x49B9 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x49CC DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x49DF DUP7 DUP3 DUP8 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x49F4 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP2 EQ PUSH3 0x49FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A12 DUP2 PUSH3 0x49E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4A31 JUMPI PUSH3 0x4A30 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4A40 DUP6 DUP3 DUP7 ADD PUSH3 0x491A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4A53 DUP6 DUP3 DUP7 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4A68 DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP2 EQ PUSH3 0x4A73 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A86 DUP2 PUSH3 0x4A5D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH3 0x4AAD JUMPI PUSH3 0x4AAC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4ABC DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH3 0x4ACF DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH3 0x4AE2 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH3 0x4AF5 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH3 0x4B08 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH3 0x4B1B DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH3 0x4B2E DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH3 0x4B41 DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH3 0x4B55 DUP13 DUP3 DUP14 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x4B89 JUMPI PUSH3 0x4B88 PUSH3 0x4B65 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4BA9 JUMPI PUSH3 0x4BA8 PUSH3 0x4B69 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH3 0x4BC8 JUMPI PUSH3 0x4BC7 PUSH3 0x4B6D JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x4BEC JUMPI PUSH3 0x4BEB PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4BFB DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH3 0x4C0E DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH3 0x4C21 DUP10 DUP3 DUP11 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH3 0x4C34 DUP10 DUP3 DUP11 ADD PUSH3 0x491A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4C58 JUMPI PUSH3 0x4C57 PUSH3 0x4457 JUMP JUMPDEST JUMPDEST PUSH3 0x4C66 DUP10 DUP3 DUP11 ADD PUSH3 0x4B71 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH3 0x4C81 DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4C93 DUP2 PUSH3 0x4C75 JUMP JUMPDEST DUP2 EQ PUSH3 0x4C9E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4CB1 DUP2 PUSH3 0x4C88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4CCF JUMPI PUSH3 0x4CCE PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4CDE DUP5 DUP3 DUP6 ADD PUSH3 0x4CA1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4CF2 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D0D PUSH0 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4D2C JUMPI PUSH3 0x4D2B PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4D3B DUP6 DUP3 DUP7 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4D4E DUP6 DUP3 DUP7 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4D63 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D7E PUSH0 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4D9F JUMPI PUSH3 0x4D9E PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4DAE DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x4DC1 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x4DD4 DUP8 DUP3 DUP9 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x4DE7 DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH3 0x4DFF DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4E11 DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4E2C PUSH0 DUP4 ADD DUP5 PUSH3 0x4E06 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4E4B JUMPI PUSH3 0x4E4A PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4E5A DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4E6D DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4EAB DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4EBC DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4ECD DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x4EE9 PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x4EFE PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x4F13 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x4F28 PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4F3B DUP4 DUP4 PUSH3 0x4ED3 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4F5F DUP3 PUSH3 0x4E77 JUMP JUMPDEST PUSH3 0x4F6B DUP2 DUP6 PUSH3 0x4E81 JUMP JUMPDEST SWAP4 POP PUSH3 0x4F78 DUP4 PUSH3 0x4E91 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x4FAE JUMPI DUP2 MLOAD PUSH3 0x4F92 DUP9 DUP3 PUSH3 0x4F2E JUMP JUMPDEST SWAP8 POP PUSH3 0x4F9F DUP4 PUSH3 0x4F47 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x4F7B JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4FD5 DUP2 DUP5 PUSH3 0x4F53 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4FF8 JUMPI PUSH3 0x4FF7 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5007 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x501A DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x502D DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x5040 DUP8 DUP3 DUP9 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x5066 JUMPI PUSH3 0x5065 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5075 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x5088 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x509B DUP7 DUP3 DUP8 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x50BB PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x50D0 PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x50E5 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x50FA PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH3 0x5115 PUSH0 DUP4 ADD DUP5 PUSH3 0x50A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5131 PUSH0 DUP4 ADD DUP12 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5140 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x514F PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x515E PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x516D PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x517C PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x518B PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x519A PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x51C2 JUMPI PUSH3 0x51C1 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x51D1 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x51E4 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x51F7 DUP8 DUP3 DUP9 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x520A DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x522E JUMPI PUSH3 0x522D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x523D DUP5 DUP3 DUP6 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x525E JUMPI PUSH3 0x525D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x526D DUP5 DUP3 DUP6 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x5309 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH3 0x533E JUMPI PUSH3 0x533D PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5369 PUSH3 0x5363 PUSH3 0x535D DUP5 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x537B DUP2 PUSH3 0x5349 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH3 0x5396 PUSH0 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53A5 PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53B4 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH3 0x53C7 DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x53D8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x53F3 PUSH0 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5402 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5411 PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5420 PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x542F PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x543E PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x544D PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x546E PUSH0 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5494 PUSH3 0x548E PUSH3 0x5488 DUP5 PUSH3 0x479F JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x54A6 DUP2 PUSH3 0x5474 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x54C1 PUSH0 DUP4 ADD DUP11 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54D0 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54DF PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54EE PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54FD PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x549B JUMP JUMPDEST PUSH3 0x550C PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x551B PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x549B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x553C PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x554B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5568 PUSH0 DUP4 ADD DUP12 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5577 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5586 PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5595 PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55A4 PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55B3 PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55C2 PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55D1 PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x60 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x55F6 DUP3 PUSH3 0x55DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5609 DUP3 PUSH3 0x55EA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5625 PUSH3 0x561F DUP3 PUSH3 0x46CF JUMP JUMPDEST PUSH3 0x55FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0xF0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5643 DUP3 PUSH3 0x562B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x565F PUSH3 0x5659 DUP3 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x5637 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5672 DUP3 DUP7 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5684 DUP3 DUP6 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5696 DUP3 DUP5 PUSH3 0x564A JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x56E0 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x56C3 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5707 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x5713 DUP2 DUP6 PUSH3 0x56B1 JUMP JUMPDEST SWAP4 POP PUSH3 0x5725 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST PUSH3 0x5730 DUP2 PUSH3 0x56EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH3 0x5750 PUSH0 DUP4 ADD DUP9 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x575F PUSH1 0x20 DUP4 ADD DUP8 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x576E PUSH1 0x40 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x577D PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH3 0x5791 DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57B3 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x57BF DUP2 DUP6 PUSH3 0x579D JUMP JUMPDEST SWAP4 POP PUSH3 0x57D1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57EA DUP3 DUP6 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP PUSH3 0x57F8 DUP3 DUP5 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5810 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x581D DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH3 0x5838 JUMPI PUSH3 0x5837 PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5853 PUSH0 DUP4 ADD DUP6 PUSH3 0x4E06 JUMP JUMPDEST PUSH3 0x5862 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x587E PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x588D PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x58BD PUSH3 0x58B7 PUSH3 0x58B1 DUP5 PUSH3 0x5894 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x58CF DUP2 PUSH3 0x589D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x58EA PUSH0 DUP4 ADD DUP6 PUSH3 0x58C4 JUMP JUMPDEST PUSH3 0x58F9 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x593C PUSH3 0x5936 PUSH3 0x5930 DUP5 PUSH3 0x5900 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x5909 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x594E DUP2 PUSH3 0x591C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x5969 PUSH0 DUP4 ADD DUP5 PUSH3 0x5943 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x597F DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x599D JUMPI PUSH3 0x599C PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x59AC DUP5 DUP3 DUP6 ADD PUSH3 0x596F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59CA PUSH0 DUP4 ADD DUP6 PUSH3 0x48D5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0x59DE DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59FC PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A0B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A27 PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A36 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5A7E DUP2 PUSH3 0x5A6A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A99 PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5AA8 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5A73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5ABB DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x5AC8 DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x5ADB JUMPI PUSH3 0x5ADA PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH3 0x19BA CODESIZE SUB DUP1 PUSH3 0x19BA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x29 SWAP2 SWAP1 PUSH3 0xDAB JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH3 0x4B DUP3 DUP3 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP PUSH0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x12C SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x16B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x187 SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x234 SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x26E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x273 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x28F SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP DUP6 DUP1 ISZERO PUSH3 0x29C JUMPI POP DUP3 JUMPDEST PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D5 SWAP1 PUSH3 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO DUP1 ISZERO PUSH3 0x327 JUMPI POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO JUMPDEST PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x360 SWAP1 PUSH3 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH3 0x39D PUSH32 0x3441AB29B24DAF7A3FD59500B0E08396EC08EC96F5CC2D0362924CDD45CFEC31 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP9 PUSH3 0x410 PUSH32 0x7E1935766B7C49E7482A018A5EE52CA183A2DDFCB6810787916934079AA58264 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 PUSH2 0xFFFF AND PUSH3 0x487 PUSH32 0xFF057B3B4D4500DDA208CDE5D654DB7AA2EC63AC10AB9F9956A1F56973842782 PUSH0 SHL PUSH3 0x6A1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD DUP2 SWAP1 SSTORE POP PUSH0 PUSH3 0x4A3 DUP10 PUSH2 0xFFFF AND PUSH3 0x6AA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x4BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x117E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x4FE PUSH32 0x64FB4ECF63A4059A0BB1412609335673D4954BFF8E9740D216D9469D190CBB3F PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x50E SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x526 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x151E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x568 PUSH32 0xD668863F064048EE8C87390227CA6556D110ECF41306C7B64AAB5C1C530B2D84 PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x578 SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP PUSH3 0x58B DUP13 DUP10 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x177E JUMP JUMPDEST PUSH3 0x5AE DUP3 PUSH3 0x839 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0x683 JUMPI PUSH3 0x67C DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x649 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x66F SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST DUP3 PUSH3 0x9DF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x694 JUMP JUMPDEST PUSH3 0x693 PUSH3 0xA6B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP3 PUSH2 0xFFFF AND SUB PUSH3 0x6F6 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH3 0x82B JUMP JUMPDEST PUSH0 DUP3 SWAP1 POP PUSH0 JUMPDEST PUSH0 DUP3 PUSH2 0xFFFF AND EQ PUSH3 0x72F JUMPI DUP1 DUP1 PUSH3 0x715 SWAP1 PUSH3 0x15E4 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA DUP3 PUSH3 0x727 SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP2 POP PUSH3 0x6FC JUMP JUMPDEST PUSH0 DUP2 PUSH2 0xFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x751 JUMPI PUSH3 0x750 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x784 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND EQ PUSH3 0x824 JUMPI PUSH1 0x1 DUP3 PUSH3 0x7A3 SWAP2 SWAP1 PUSH3 0x1676 JUMP JUMPDEST SWAP2 POP PUSH1 0xA DUP6 PUSH3 0x7B4 SWAP2 SWAP1 PUSH3 0x16B2 JUMP JUMPDEST PUSH1 0x30 PUSH3 0x7C2 SWAP2 SWAP1 PUSH3 0x16E9 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH3 0x7DF JUMPI PUSH3 0x7DE PUSH3 0x1725 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP6 PUSH3 0x81C SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP5 POP PUSH3 0x788 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x897 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x64CED0EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x88E SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x8CB PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x955 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x97B SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x9DB JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9D2 SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xA0A SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0xA44 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xA49 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xA61 DUP6 DUP4 DUP4 PUSH3 0xAA8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH3 0xAA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0xAC7 JUMPI PUSH3 0xAC1 DUP3 PUSH3 0xB44 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xB3C JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH3 0xAEE JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH3 0xB33 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB2A SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH3 0xB3D JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0xB57 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xBC5 DUP3 PUSH3 0xB9A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xBD7 DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP2 EQ PUSH3 0xBE2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xBF5 DUP2 PUSH3 0xBCC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xC13 DUP2 PUSH3 0xBFB JUMP JUMPDEST DUP2 EQ PUSH3 0xC1E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xC31 DUP2 PUSH3 0xC08 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xC87 DUP3 PUSH3 0xC3F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0xCA9 JUMPI PUSH3 0xCA8 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xCBD PUSH3 0xB89 JUMP JUMPDEST SWAP1 POP PUSH3 0xCCB DUP3 DUP3 PUSH3 0xC7C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xCED JUMPI PUSH3 0xCEC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xCF8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xD24 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0xD07 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xD45 PUSH3 0xD3F DUP5 PUSH3 0xCD0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xD64 JUMPI PUSH3 0xD63 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xD71 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xD90 JUMPI PUSH3 0xD8F PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xDA2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xD2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0xDC7 JUMPI PUSH3 0xDC6 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0xDD6 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0xDE9 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0xDFC DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0xE0F DUP9 DUP3 DUP10 ADD PUSH3 0xC21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xE33 JUMPI PUSH3 0xE32 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xE41 DUP9 DUP3 DUP10 ADD PUSH3 0xD79 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xE6E DUP3 PUSH3 0xE4E JUMP JUMPDEST PUSH3 0xE7A DUP2 DUP6 PUSH3 0xE58 JUMP JUMPDEST SWAP4 POP PUSH3 0xE8C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xEA5 DUP3 DUP5 PUSH3 0xE62 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xECD JUMPI PUSH3 0xECC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xED8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xEFB PUSH3 0xEF5 DUP5 PUSH3 0xEB0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xF1A JUMPI PUSH3 0xF19 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xF27 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xF46 JUMPI PUSH3 0xF45 PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xF58 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xEE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xF79 JUMPI PUSH3 0xF78 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xF99 JUMPI PUSH3 0xF98 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xFA7 DUP5 DUP3 DUP6 ADD PUSH3 0xF2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A204661696C656420746F20676574 PUSH0 DUP3 ADD MSTORE PUSH32 0x20746F6B656E2073796D626F6C73000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x101C PUSH1 0x2E DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x1029 DUP3 PUSH3 0xFC0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x104D DUP2 PUSH3 0x100E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A20496E76616C696420746F6B656E PUSH0 DUP3 ADD MSTORE PUSH32 0x2073796D626F6C73000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x10B0 PUSH1 0x28 DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x10BD DUP3 PUSH3 0x1054 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x10E1 DUP2 PUSH3 0x10A2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C42545F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x112E DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH3 0x113A DUP2 DUP6 PUSH3 0x1118 JUMP JUMPDEST SWAP4 POP PUSH3 0x114C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2F00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x118A DUP3 PUSH3 0x10E8 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH3 0x119C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11A9 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11BB DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11C8 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11DA DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x122C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1242 JUMPI PUSH3 0x1241 PUSH3 0x11E7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH3 0x12A6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x1269 JUMP JUMPDEST PUSH3 0x12B2 DUP7 DUP4 PUSH3 0x1269 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x12FC PUSH3 0x12F6 PUSH3 0x12F0 DUP5 PUSH3 0x12CA JUMP JUMPDEST PUSH3 0x12D3 JUMP JUMPDEST PUSH3 0x12CA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1317 DUP4 PUSH3 0x12DC JUMP JUMPDEST PUSH3 0x132F PUSH3 0x1326 DUP3 PUSH3 0x1303 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x1275 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x1345 PUSH3 0x1337 JUMP JUMPDEST PUSH3 0x1352 DUP2 DUP5 DUP5 PUSH3 0x130C JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1379 JUMPI PUSH3 0x136D PUSH0 DUP3 PUSH3 0x133B JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1358 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x13C8 JUMPI PUSH3 0x1392 DUP2 PUSH3 0x1248 JUMP JUMPDEST PUSH3 0x139D DUP5 PUSH3 0x125A JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x13AD JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x13C5 PUSH3 0x13BC DUP6 PUSH3 0x125A JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x1357 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x13EA PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x13CD JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1404 DUP4 DUP4 PUSH3 0x13D9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x141F DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x143B JUMPI PUSH3 0x143A PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0x1447 DUP3 SLOAD PUSH3 0x1214 JUMP JUMPDEST PUSH3 0x1454 DUP3 DUP3 DUP6 PUSH3 0x137D JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x148A JUMPI PUSH0 DUP5 ISZERO PUSH3 0x1475 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x1481 DUP6 DUP3 PUSH3 0x13F7 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x14F0 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x149A DUP7 PUSH3 0x1248 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x14C3 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x149C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x14E3 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x14DF PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x13D9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4C697175696469747920426F6F6B20546F6B656E200000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x152A DUP3 PUSH3 0x14F8 JUMP JUMPDEST PUSH1 0x15 DUP3 ADD SWAP2 POP PUSH3 0x153C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1549 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x155B DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1568 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x157A DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x159F JUMPI PUSH3 0x159E PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x15AE DUP5 DUP3 DUP6 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x15F0 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH2 0xFFFF DUP3 SUB PUSH3 0x1607 JUMPI PUSH3 0x1606 PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x164B DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1658 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x166B JUMPI PUSH3 0x166A PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1682 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x168F DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x16AC JUMPI PUSH3 0x16AB PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16BE DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x16CB DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x16DE JUMPI PUSH3 0x16DD PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16F5 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1702 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x171F JUMPI PUSH3 0x171E PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0x175D DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1778 PUSH0 DUP4 ADD DUP5 PUSH3 0x1752 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x223 PUSH3 0x1797 PUSH0 CODECOPY PUSH0 PUSH2 0x118 ADD MSTORE PUSH2 0x223 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0A0EA39 EQ PUSH2 0x32 JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH2 0x30 PUSH2 0x5C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x46 PUSH2 0x6E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53 SWAP2 SWAP1 PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x67 PUSH2 0x7C JUMP JUMPDEST PUSH2 0xF6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x77 PUSH2 0x115 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85 PUSH2 0x115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0x111 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x165 DUP3 PUSH2 0x13C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x175 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x18E PUSH0 DUP4 ADD DUP5 PUSH2 0x16C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A1 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP2 EQ PUSH2 0x1AB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC DUP2 PUSH2 0x198 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH2 0x1D6 PUSH2 0x194 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1E4 DUP5 DUP3 DUP6 ADD PUSH2 0x1AE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xF 0xAC 0xD1 PUSH26 0xFF68AFE8C4F5F51E9F66C8A009AF1F057180AF91B116A45A1361 0xC6 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH DUP16 PUSH8 0x4ABC88915A00048D DUP7 DELEGATECALL CREATE 0x2C 0x24 CALLVALUE 0x4F 0xB5 0xB6 PUSH28 0x185D05CE64C6C9AEDC7E7C64736F6C63430008140033000000000000 ", + "sourceMap": "1541:27793:21:-:0;;;3448:53;;;;;;;;;;3472:22;:20;;;:22;;:::i;:::-;1541:27793;;7711:422:3;7826:30;7859:26;:24;;;:26;;:::i;:::-;7826:59;;7900:1;:15;;;;;;;;;;;;7896:76;;;7938:23;;;;;;;;;;;;;;7896:76;8003:16;7985:34;;:1;:14;;;;;;;;;;;;:34;;;7981:146;;8052:16;8035:1;:14;;;:33;;;;;;;;;;;;;;;;;;8087:29;8099:16;8087:29;;;;;;:::i;:::-;;;;;;;;7981:146;7760:373;7711:422::o;8737:170::-;8795:30;8870:21;8860:31;;8737:170;:::o;7:101:40:-;43:7;83:18;76:5;72:30;61:41;;7:101;;;:::o;114:115::-;199:23;216:5;199:23;:::i;:::-;194:3;187:36;114:115;;:::o;235:218::-;326:4;364:2;353:9;349:18;341:26;;377:69;443:1;432:9;428:17;419:6;377:69;:::i;:::-;235:218;;;;:::o;1541:27793:21:-;;;;;;;" }, "deployedBytecode": { "functionDebugData": { - "@DEFAULT_ADMIN_ROLE_29": { - "entryPoint": 8160, - "id": 29, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": 8854, + "id": 28, "parameterSlots": 0, "returnSlots": 0 }, - "@LB_HOOKS_MANAGER_ROLE_3466": { - "entryPoint": 2639, - "id": 3466, + "@LB_HOOKS_MANAGER_ROLE_5062": { + "entryPoint": 3011, + "id": 5062, "parameterSlots": 0, "returnSlots": 0 }, - "@_add_2842": { - "entryPoint": 13927, - "id": 2842, + "@LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE_5067": { + "entryPoint": 6842, + "id": 5067, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Ownable_init_554": { + "entryPoint": 14013, + "id": 554, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@__Ownable_init_unchained_581": { + "entryPoint": 16681, + "id": 581, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_add_4432": { + "entryPoint": 15301, + "id": 4432, "parameterSlots": 2, "returnSlots": 1 }, - "@_at_2976": { - "entryPoint": 13306, - "id": 2976, + "@_at_4566": { + "entryPoint": 14640, + "id": 4566, "parameterSlots": 2, "returnSlots": 1 }, - "@_checkOwner_463": { - "entryPoint": 10005, - "id": 463, + "@_checkInitializing_870": { + "entryPoint": 16614, + "id": 870, "parameterSlots": 0, "returnSlots": 0 }, - "@_checkRole_114": { - "entryPoint": 13377, - "id": 114, - "parameterSlots": 2, + "@_checkOwner_622": { + "entryPoint": 10926, + "id": 622, + "parameterSlots": 0, "returnSlots": 0 }, - "@_checkRole_93": { - "entryPoint": 10533, - "id": 93, + "@_checkRole_129": { + "entryPoint": 11508, + "id": 129, "parameterSlots": 1, "returnSlots": 0 }, - "@_contains_2945": { - "entryPoint": 13345, - "id": 2945, + "@_checkRole_150": { + "entryPoint": 14714, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_4535": { + "entryPoint": 14682, + "id": 4535, "parameterSlots": 2, "returnSlots": 1 }, - "@_getLBPairInformation_4890": { - "entryPoint": 10140, - "id": 4890, + "@_getAccessControlStorage_46": { + "entryPoint": 11422, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_947": { + "entryPoint": 13974, + "id": 947, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getLBPairInformation_6476": { + "entryPoint": 11070, + "id": 6476, "parameterSlots": 3, "returnSlots": 1 }, - "@_grantRole_256": { - "entryPoint": 13458, - "id": 256, + "@_getOwnable2StepStorage_388": { + "entryPoint": 14519, + "id": 388, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getOwnableStorage_525": { + "entryPoint": 13820, + "id": 525, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 14800, + "id": 315, "parameterSlots": 2, "returnSlots": 1 }, - "@_grantRole_5035": { - "entryPoint": 10979, - "id": 5035, + "@_grantRole_6621": { + "entryPoint": 11973, + "id": 6621, "parameterSlots": 2, "returnSlots": 1 }, - "@_isPresetOpen_4803": { - "entryPoint": 9954, - "id": 4803, + "@_isInitializing_938": { + "entryPoint": 17265, + "id": 938, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_isPresetOpen_6389": { + "entryPoint": 10871, + "id": 6389, "parameterSlots": 1, "returnSlots": 1 }, - "@_length_2959": { - "entryPoint": 14973, - "id": 2959, + "@_length_4549": { + "entryPoint": 16388, + "id": 4549, "parameterSlots": 1, "returnSlots": 1 }, - "@_msgSender_702": { - "entryPoint": 11057, - "id": 702, + "@_msgSender_976": { + "entryPoint": 12054, + "id": 976, "parameterSlots": 0, "returnSlots": 1 }, - "@_remove_2926": { - "entryPoint": 15181, - "id": 2926, + "@_remove_4516": { + "entryPoint": 16820, + "id": 4516, "parameterSlots": 2, "returnSlots": 1 }, - "@_revokeRole_294": { - "entryPoint": 11064, - "id": 294, + "@_revokeRole_361": { + "entryPoint": 12061, + "id": 361, "parameterSlots": 2, "returnSlots": 1 }, - "@_setFeeRecipient_4841": { - "entryPoint": 12820, - "id": 4841, + "@_setFeeRecipient_6427": { + "entryPoint": 14037, + "id": 6427, "parameterSlots": 1, "returnSlots": 0 }, - "@_setLBHooksParametersOnPair_4983": { - "entryPoint": 10553, - "id": 4983, + "@_setLBHooksParametersOnPair_6569": { + "entryPoint": 11532, + "id": 6569, "parameterSlots": 5, "returnSlots": 0 }, - "@_sortTokens_4923": { - "entryPoint": 11990, - "id": 4923, + "@_sortTokens_6509": { + "entryPoint": 13050, + "id": 6509, "parameterSlots": 2, "returnSlots": 2 }, - "@_transferOwnership_525": { - "entryPoint": 14988, - "id": 525, + "@_transferOwnership_474": { + "entryPoint": 13734, + "id": 474, "parameterSlots": 1, "returnSlots": 0 }, - "@_transferOwnership_587": { - "entryPoint": 12585, - "id": 587, + "@_transferOwnership_693": { + "entryPoint": 16403, + "id": 693, "parameterSlots": 1, "returnSlots": 0 }, - "@_values_2990": { - "entryPoint": 15619, - "id": 2990, + "@_values_4580": { + "entryPoint": 17320, + "id": 4580, "parameterSlots": 1, "returnSlots": 1 }, - "@acceptOwnership_611": { - "entryPoint": 7790, - "id": 611, + "@acceptOwnership_498": { + "entryPoint": 8408, + "id": 498, "parameterSlots": 0, "returnSlots": 0 }, - "@addQuoteAsset_4762": { - "entryPoint": 4095, - "id": 4762, + "@addQuoteAsset_6348": { + "entryPoint": 4546, + "id": 6348, "parameterSlots": 1, "returnSlots": 0 }, - "@add_3012": { - "entryPoint": 15525, - "id": 3012, + "@add_4602": { + "entryPoint": 17186, + "id": 4602, "parameterSlots": 2, "returnSlots": 1 }, - "@add_3142": { - "entryPoint": 11860, - "id": 3142, + "@add_4732": { + "entryPoint": 12910, + "id": 4732, "parameterSlots": 2, "returnSlots": 1 }, - "@add_3293": { - "entryPoint": 12255, - "id": 3293, + "@add_4883": { + "entryPoint": 13592, + "id": 4883, "parameterSlots": 2, "returnSlots": 1 }, - "@at_1110": { - "entryPoint": 9915, - "id": 1110, + "@at_2482": { + "entryPoint": 14579, + "id": 2482, "parameterSlots": 2, "returnSlots": 2 }, - "@at_3081": { - "entryPoint": 15504, - "id": 3081, + "@at_2700": { + "entryPoint": 10830, + "id": 2700, "parameterSlots": 2, - "returnSlots": 1 + "returnSlots": 2 }, - "@at_3238": { - "entryPoint": 9982, - "id": 3238, + "@at_4671": { + "entryPoint": 17163, + "id": 4671, "parameterSlots": 2, "returnSlots": 1 }, - "@at_3371": { - "entryPoint": 12492, - "id": 3371, + "@at_4828": { + "entryPoint": 10901, + "id": 4828, "parameterSlots": 2, "returnSlots": 1 }, - "@at_892": { - "entryPoint": 13247, - "id": 892, + "@at_4961": { + "entryPoint": 13638, + "id": 4961, "parameterSlots": 2, - "returnSlots": 2 - }, - "@cloneDeterministic_7203": { - "entryPoint": 12068, - "id": 7203, - "parameterSlots": 3, "returnSlots": 1 }, - "@contains_1061": { - "entryPoint": 11797, - "id": 1061, + "@contains_2438": { + "entryPoint": 15139, + "id": 2438, "parameterSlots": 2, "returnSlots": 1 }, - "@contains_3048": { - "entryPoint": 15546, - "id": 3048, + "@contains_2651": { + "entryPoint": 12843, + "id": 2651, "parameterSlots": 2, "returnSlots": 1 }, - "@contains_3196": { - "entryPoint": 10488, - "id": 3196, + "@contains_4638": { + "entryPoint": 17209, + "id": 4638, "parameterSlots": 2, "returnSlots": 1 }, - "@contains_848": { - "entryPoint": 13773, - "id": 848, + "@contains_4786": { + "entryPoint": 11461, + "id": 4786, "parameterSlots": 2, "returnSlots": 1 }, - "@createLBPair_4277": { - "entryPoint": 4275, - "id": 4277, + "@createLBPair_5863": { + "entryPoint": 4735, + "id": 5863, "parameterSlots": 4, "returnSlots": 1 }, - "@decodeBool_8483": { - "entryPoint": 11845, - "id": 8483, + "@decodeBool_10387": { + "entryPoint": 12895, + "id": 10387, "parameterSlots": 2, "returnSlots": 1 }, - "@decodeUint12_8507": { - "entryPoint": 14907, - "id": 8507, + "@decodeUint12_10411": { + "entryPoint": 16322, + "id": 10411, "parameterSlots": 2, "returnSlots": 1 }, - "@decodeUint14_8519": { - "entryPoint": 14923, - "id": 8519, + "@decodeUint14_10423": { + "entryPoint": 16338, + "id": 10423, "parameterSlots": 2, "returnSlots": 1 }, - "@decodeUint16_8531": { - "entryPoint": 14891, - "id": 8531, + "@decodeUint16_10435": { + "entryPoint": 16306, + "id": 10435, "parameterSlots": 2, "returnSlots": 1 }, - "@decodeUint20_8543": { - "entryPoint": 14956, - "id": 8543, + "@decodeUint20_10447": { + "entryPoint": 16371, + "id": 10447, "parameterSlots": 2, "returnSlots": 1 }, - "@decodeUint24_8555": { - "entryPoint": 14939, - "id": 8555, + "@decodeUint24_10459": { + "entryPoint": 16354, + "id": 10459, "parameterSlots": 2, "returnSlots": 1 }, - "@forceDecay_4857": { - "entryPoint": 3628, - "id": 4857, + "@deploy_2189": { + "entryPoint": 13338, + "id": 2189, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@forceDecay_6443": { + "entryPoint": 4060, + "id": 6443, "parameterSlots": 1, "returnSlots": 0 }, - "@getAllBinSteps_3803": { - "entryPoint": 4258, - "id": 3803, + "@getAllBinSteps_5421": { + "entryPoint": 4716, + "id": 5421, "parameterSlots": 0, "returnSlots": 1 }, - "@getAllLBPairs_3988": { - "entryPoint": 6299, - "id": 3988, + "@getAllLBPairs_5606": { + "entryPoint": 6878, + "id": 5606, "parameterSlots": 2, "returnSlots": 1 }, - "@getBaseFactor_7335": { - "entryPoint": 12278, - "id": 7335, + "@getBaseFactor_9158": { + "entryPoint": 13129, + "id": 9158, "parameterSlots": 1, "returnSlots": 1 }, - "@getBase_8236": { - "entryPoint": 14050, - "id": 8236, + "@getBase_10059": { + "entryPoint": 15430, + "id": 10059, "parameterSlots": 1, "returnSlots": 1 }, - "@getDecayPeriod_7367": { - "entryPoint": 12333, - "id": 7367, + "@getDecayPeriod_9190": { + "entryPoint": 13188, + "id": 9190, "parameterSlots": 1, "returnSlots": 1 }, - "@getExponent_8256": { - "entryPoint": 14098, - "id": 8256, + "@getExponent_10079": { + "entryPoint": 15481, + "id": 10079, "parameterSlots": 1, "returnSlots": 1 }, - "@getFeeRecipient_3569": { - "entryPoint": 3730, - "id": 3569, + "@getFeeRecipient_5187": { + "entryPoint": 4166, + "id": 5187, "parameterSlots": 0, "returnSlots": 1 }, - "@getFilterPeriod_7351": { - "entryPoint": 12305, - "id": 7351, + "@getFilterPeriod_9174": { + "entryPoint": 13158, + "id": 9174, "parameterSlots": 1, "returnSlots": 1 }, - "@getFlags_6741": { - "entryPoint": 11788, - "id": 6741, + "@getFlags_8564": { + "entryPoint": 12834, + "id": 8564, "parameterSlots": 1, "returnSlots": 1 }, - "@getFlashLoanFee_3589": { - "entryPoint": 9782, - "id": 3589, + "@getFlashLoanFee_5207": { + "entryPoint": 10695, + "id": 5207, "parameterSlots": 0, "returnSlots": 1 }, - "@getHooks_6695": { - "entryPoint": 11777, - "id": 6695, + "@getHooks_8518": { + "entryPoint": 12823, + "id": 8518, "parameterSlots": 1, "returnSlots": 1 }, - "@getLBPairAtIndex_3625": { - "entryPoint": 7932, - "id": 3625, + "@getLBPairAtIndex_5243": { + "entryPoint": 8559, + "id": 5243, "parameterSlots": 1, "returnSlots": 1 }, - "@getLBPairImplementation_3599": { - "entryPoint": 8425, - "id": 3599, + "@getLBPairBeacon_5217": { + "entryPoint": 8814, + "id": 5217, "parameterSlots": 0, "returnSlots": 1 }, - "@getLBPairInformation_3697": { - "entryPoint": 7743, - "id": 3697, + "@getLBPairInformation_5315": { + "entryPoint": 8353, + "id": 5315, "parameterSlots": 3, "returnSlots": 1 }, - "@getMaxFlashLoanFee_3579": { - "entryPoint": 8016, - "id": 3579, + "@getMaxFlashLoanFee_5197": { + "entryPoint": 8648, + "id": 5197, "parameterSlots": 0, "returnSlots": 1 }, - "@getMaxVolatilityAccumulator_7431": { - "entryPoint": 12445, - "id": 7431, + "@getMaxVolatilityAccumulator_9254": { + "entryPoint": 13308, + "id": 9254, "parameterSlots": 1, "returnSlots": 1 }, - "@getMinBinStep_3559": { - "entryPoint": 7735, - "id": 3559, + "@getMinBinStep_5177": { + "entryPoint": 8345, + "id": 5177, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getNumberOfLBPairs_5228": { + "entryPoint": 4534, + "id": 5228, "parameterSlots": 0, "returnSlots": 1 }, - "@getNumberOfLBPairs_3610": { - "entryPoint": 4083, - "id": 3610, + "@getNumberOfQuoteAssets_5255": { + "entryPoint": 8630, + "id": 5255, "parameterSlots": 0, "returnSlots": 1 }, - "@getNumberOfQuoteAssets_3637": { - "entryPoint": 8000, - "id": 3637, + "@getOpenBinSteps_5495": { + "entryPoint": 2439, + "id": 5495, "parameterSlots": 0, "returnSlots": 1 }, - "@getOpenBinSteps_3877": { - "entryPoint": 2102, - "id": 3877, + "@getPauserRole_5614": { + "entryPoint": 9773, + "id": 5614, "parameterSlots": 0, "returnSlots": 1 }, - "@getPreset_3790": { - "entryPoint": 8166, - "id": 3790, + "@getPreset_5408": { + "entryPoint": 8860, + "id": 5408, "parameterSlots": 1, "returnSlots": 8 }, - "@getPriceFromId_8172": { - "entryPoint": 11936, - "id": 8172, + "@getPriceFromId_9995": { + "entryPoint": 12990, + "id": 9995, "parameterSlots": 2, "returnSlots": 1 }, - "@getProtocolShare_7415": { - "entryPoint": 12417, - "id": 7415, + "@getProtocolShare_9238": { + "entryPoint": 13278, + "id": 9238, "parameterSlots": 1, "returnSlots": 1 }, - "@getQuoteAssetAtIndex_3655": { - "entryPoint": 2338, - "id": 3655, + "@getQuoteAssetAtIndex_5273": { + "entryPoint": 2697, + "id": 5273, "parameterSlots": 1, "returnSlots": 1 }, - "@getReductionFactor_7383": { - "entryPoint": 12361, - "id": 7383, + "@getReductionFactor_9206": { + "entryPoint": 13218, + "id": 9206, "parameterSlots": 1, "returnSlots": 1 }, - "@getRoleAdmin_128": { - "entryPoint": 2675, - "id": 128, + "@getRoleAdmin_171": { + "entryPoint": 3047, + "id": 171, "parameterSlots": 1, "returnSlots": 1 }, - "@getVariableFeeControl_7399": { - "entryPoint": 12389, - "id": 7399, + "@getVariableFeeControl_9222": { + "entryPoint": 13248, + "id": 9222, "parameterSlots": 1, "returnSlots": 1 }, - "@get_1168": { - "entryPoint": 11820, - "id": 1168, + "@get_2562": { + "entryPoint": 15171, + "id": 2562, "parameterSlots": 2, "returnSlots": 1 }, - "@get_972": { - "entryPoint": 13803, - "id": 972, + "@get_2758": { + "entryPoint": 12868, + "id": 2758, "parameterSlots": 2, "returnSlots": 1 }, - "@grantRole_147": { - "entryPoint": 2871, - "id": 147, + "@grantRole_190": { + "entryPoint": 3268, + "id": 190, "parameterSlots": 2, "returnSlots": 0 }, - "@hasRole_5010": { - "entryPoint": 8070, - "id": 5010, + "@hasRole_116": { + "entryPoint": 13859, + "id": 116, "parameterSlots": 2, "returnSlots": 1 }, - "@hasRole_80": { - "entryPoint": 12652, - "id": 80, + "@hasRole_6596": { + "entryPoint": 8718, + "id": 6596, "parameterSlots": 2, "returnSlots": 1 }, - "@isQuoteAsset_3674": { - "entryPoint": 2704, - "id": 3674, + "@initialize_5167": { + "entryPoint": 9142, + "id": 5167, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@isQuoteAsset_5292": { + "entryPoint": 3091, + "id": 5292, "parameterSlots": 1, "returnSlots": 1 }, - "@keys_1198": { - "entryPoint": 11905, - "id": 1198, + "@keys_2578": { + "entryPoint": 15408, + "id": 2578, "parameterSlots": 1, "returnSlots": 1 }, - "@keys_988": { - "entryPoint": 14030, - "id": 988, + "@keys_2788": { + "entryPoint": 12957, + "id": 2788, "parameterSlots": 1, "returnSlots": 1 }, - "@length_1076": { - "entryPoint": 9896, - "id": 1076, + "@length_2453": { + "entryPoint": 14558, + "id": 2453, "parameterSlots": 1, "returnSlots": 1 }, - "@length_3063": { - "entryPoint": 15485, - "id": 3063, + "@length_2666": { + "entryPoint": 10809, + "id": 2666, "parameterSlots": 1, "returnSlots": 1 }, - "@length_3211": { - "entryPoint": 12633, - "id": 3211, + "@length_4653": { + "entryPoint": 17142, + "id": 4653, "parameterSlots": 1, "returnSlots": 1 }, - "@length_3350": { - "entryPoint": 12473, - "id": 3350, + "@length_4801": { + "entryPoint": 13799, + "id": 4801, "parameterSlots": 1, "returnSlots": 1 }, - "@length_863": { - "entryPoint": 13228, - "id": 863, + "@length_4940": { + "entryPoint": 13617, + "id": 4940, "parameterSlots": 1, "returnSlots": 1 }, - "@owner_446": { - "entryPoint": 8031, - "id": 446, + "@owner_605": { + "entryPoint": 8663, + "id": 605, "parameterSlots": 0, "returnSlots": 1 }, - "@pendingOwner_550": { - "entryPoint": 9313, - "id": 550, + "@pendingOwner_422": { + "entryPoint": 10178, + "id": 422, "parameterSlots": 0, "returnSlots": 1 }, - "@pow_9565": { - "entryPoint": 14117, - "id": 9565, + "@pow_11469": { + "entryPoint": 15500, + "id": 11469, "parameterSlots": 2, "returnSlots": 1 }, - "@removeLBHooksOnPair_4679": { - "entryPoint": 2732, - "id": 4679, + "@removeLBHooksOnPair_6265": { + "entryPoint": 3121, + "id": 6265, "parameterSlots": 3, "returnSlots": 0 }, - "@removePreset_4533": { - "entryPoint": 9164, - "id": 4533, + "@removePreset_6119": { + "entryPoint": 10022, + "id": 6119, "parameterSlots": 1, "returnSlots": 0 }, - "@removeQuoteAsset_4790": { - "entryPoint": 9001, - "id": 4790, + "@removeQuoteAsset_6376": { + "entryPoint": 9852, + "id": 6376, "parameterSlots": 1, "returnSlots": 0 }, - "@remove_1040": { - "entryPoint": 12797, - "id": 1040, + "@remove_2420": { + "entryPoint": 17088, + "id": 2420, "parameterSlots": 2, "returnSlots": 1 }, - "@remove_3030": { - "entryPoint": 15598, - "id": 3030, + "@remove_2630": { + "entryPoint": 14494, + "id": 2630, "parameterSlots": 2, "returnSlots": 1 }, - "@remove_3169": { - "entryPoint": 12752, - "id": 3169, + "@remove_4620": { + "entryPoint": 17297, + "id": 4620, "parameterSlots": 2, "returnSlots": 1 }, - "@remove_830": { - "entryPoint": 15433, - "id": 830, + "@remove_4759": { + "entryPoint": 14447, + "id": 4759, "parameterSlots": 2, "returnSlots": 1 }, - "@renounceOwnership_477": { - "entryPoint": 7771, - "id": 477, + "@renounceOwnership_636": { + "entryPoint": 8385, + "id": 636, "parameterSlots": 0, "returnSlots": 0 }, - "@renounceRole_189": { - "entryPoint": 2905, - "id": 189, + "@renounceRole_232": { + "entryPoint": 3308, + "id": 232, "parameterSlots": 2, "returnSlots": 0 }, - "@revokeRole_166": { - "entryPoint": 8967, - "id": 166, + "@revokeRole_209": { + "entryPoint": 9812, + "id": 209, "parameterSlots": 2, "returnSlots": 0 }, - "@safe16_9317": { - "entryPoint": 12515, - "id": 9317, + "@safe16_11221": { + "entryPoint": 13663, + "id": 11221, "parameterSlots": 1, "returnSlots": 1 }, - "@setBool_8457": { - "entryPoint": 11711, - "id": 8457, + "@setBool_10361": { + "entryPoint": 12751, + "id": 10361, "parameterSlots": 3, "returnSlots": 1 }, - "@setFeeRecipient_4693": { - "entryPoint": 9353, - "id": 4693, + "@setFeeRecipient_6279": { + "entryPoint": 10233, + "id": 6279, "parameterSlots": 1, "returnSlots": 0 }, - "@setFeesParametersOnPair_4601": { - "entryPoint": 2366, - "id": 4601, + "@setFeesParametersOnPair_6187": { + "entryPoint": 2727, + "id": 6187, "parameterSlots": 10, "returnSlots": 0 }, - "@setFlashLoanFee_4733": { - "entryPoint": 9373, - "id": 4733, + "@setFlashLoanFee_6319": { + "entryPoint": 10257, + "id": 6319, "parameterSlots": 1, "returnSlots": 0 }, - "@setLBHooksParametersOnPair_4651": { - "entryPoint": 3343, - "id": 4651, + "@setLBHooksParametersOnPair_6237": { + "entryPoint": 3765, + "id": 6237, "parameterSlots": 6, "returnSlots": 0 }, - "@setLBPairIgnored_4360": { - "entryPoint": 6951, - "id": 4360, + "@setLBPairIgnored_5946": { + "entryPoint": 7551, + "id": 5946, "parameterSlots": 4, "returnSlots": 0 }, - "@setLBPairImplementation_4033": { - "entryPoint": 8465, - "id": 4033, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@setPresetOpenState_4509": { - "entryPoint": 3770, - "id": 4509, + "@setPresetOpenState_6095": { + "entryPoint": 4205, + "id": 6095, "parameterSlots": 2, "returnSlots": 0 }, - "@setPreset_4447": { - "entryPoint": 3028, - "id": 4447, + "@setPreset_6033": { + "entryPoint": 3436, + "id": 6033, "parameterSlots": 9, "returnSlots": 0 }, - "@setStaticFeeParameters_7873": { - "entryPoint": 11298, - "id": 7873, + "@setStaticFeeParameters_9696": { + "entryPoint": 12317, + "id": 9696, "parameterSlots": 8, "returnSlots": 1 }, - "@set_1019": { - "entryPoint": 11750, - "id": 1019, - "parameterSlots": 3, + "@set_10338": { + "entryPoint": 15056, + "id": 10338, + "parameterSlots": 4, "returnSlots": 1 }, - "@set_806": { - "entryPoint": 13718, - "id": 806, + "@set_2396": { + "entryPoint": 15082, + "id": 2396, "parameterSlots": 3, "returnSlots": 1 }, - "@set_8434": { - "entryPoint": 13692, - "id": 8434, - "parameterSlots": 4, + "@set_2609": { + "entryPoint": 12794, + "id": 2609, + "parameterSlots": 3, "returnSlots": 1 }, - "@supportsInterface_62": { - "entryPoint": 1981, - "id": 62, + "@supportsInterface_1033": { + "entryPoint": 10704, + "id": 1033, "parameterSlots": 1, "returnSlots": 1 }, - "@supportsInterface_743": { - "entryPoint": 9791, - "id": 743, + "@supportsInterface_91": { + "entryPoint": 2315, + "id": 91, "parameterSlots": 1, "returnSlots": 1 }, - "@transferOwnership_570": { - "entryPoint": 9610, - "id": 570, + "@transferOwnership_450": { + "entryPoint": 10504, + "id": 450, "parameterSlots": 1, "returnSlots": 0 }, - "@values_3111": { - "entryPoint": 15567, - "id": 3111, + "@values_4701": { + "entryPoint": 17232, + "id": 4701, "parameterSlots": 1, "returnSlots": 1 }, "abi_decode_t_address": { - "entryPoint": 17100, + "entryPoint": 18946, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_bool": { - "entryPoint": 17204, + "entryPoint": 19062, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_bytes32": { - "entryPoint": 16892, + "entryPoint": 18714, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_bytes32_fromMemory": { - "entryPoint": 20251, + "entryPoint": 22895, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_bytes4": { - "entryPoint": 15847, + "entryPoint": 17567, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_bytes_calldata_ptr": { - "entryPoint": 17432, + "entryPoint": 19313, "id": null, "parameterSlots": 2, "returnSlots": 2 }, - "abi_decode_t_contract$_IERC20_$690": { - "entryPoint": 16473, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_contract$_ILBFactory_$5501_fromMemory": { - "entryPoint": 20110, + "abi_decode_t_contract$_IERC20_$1838": { + "entryPoint": 18253, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_decode_t_contract$_ILBPair_$6147": { - "entryPoint": 17706, + "abi_decode_t_contract$_ILBPair_$7970": { + "entryPoint": 19617, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_uint16": { - "entryPoint": 16528, + "entryPoint": 18313, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_uint24": { - "entryPoint": 16584, + "entryPoint": 18374, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_t_uint256": { - "entryPoint": 16207, + "entryPoint": 17959, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_address": { - "entryPoint": 18870, + "entryPoint": 21062, "id": null, "parameterSlots": 2, "returnSlots": 1 }, + "abi_decode_tuple_t_addresst_addresst_uint256t_address": { + "entryPoint": 20903, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, "abi_decode_tuple_t_bytes32": { - "entryPoint": 16912, + "entryPoint": 18736, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_bytes32_fromMemory": { - "entryPoint": 20271, + "entryPoint": 22917, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_bytes32t_address": { - "entryPoint": 17120, + "entryPoint": 18968, "id": null, "parameterSlots": 2, "returnSlots": 2 }, "abi_decode_tuple_t_bytes4": { - "entryPoint": 15867, + "entryPoint": 17589, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_decode_tuple_t_contract$_IERC20_$690": { - "entryPoint": 16955, + "abi_decode_tuple_t_contract$_IERC20_$1838": { + "entryPoint": 18784, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690": { - "entryPoint": 18068, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838": { + "entryPoint": 20018, "id": null, "parameterSlots": 2, "returnSlots": 2 }, - "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16": { - "entryPoint": 16998, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16": { + "entryPoint": 18832, "id": null, "parameterSlots": 2, "returnSlots": 3 }, - "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_bool": { - "entryPoint": 18458, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bool": { + "entryPoint": 20445, "id": null, "parameterSlots": 2, "returnSlots": 4 }, - "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_bytes32t_bytes_calldata_ptr": { - "entryPoint": 17517, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bytes32t_bytes_calldata_ptr": { + "entryPoint": 19407, "id": null, "parameterSlots": 2, "returnSlots": 6 }, - "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24": { - "entryPoint": 16604, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24": { + "entryPoint": 18396, "id": null, "parameterSlots": 2, "returnSlots": 10 }, - "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint24t_uint16": { - "entryPoint": 17911, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint24t_uint16": { + "entryPoint": 19844, "id": null, "parameterSlots": 2, "returnSlots": 4 }, - "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint256": { - "entryPoint": 18558, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint256": { + "entryPoint": 20556, "id": null, "parameterSlots": 2, "returnSlots": 3 }, - "abi_decode_tuple_t_contract$_ILBFactory_$5501_fromMemory": { - "entryPoint": 20130, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_contract$_ILBPair_$6147": { - "entryPoint": 17726, + "abi_decode_tuple_t_contract$_ILBPair_$7970": { + "entryPoint": 19639, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_uint16": { - "entryPoint": 18913, + "entryPoint": 21014, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_decode_tuple_t_uint16t_bool": { - "entryPoint": 17809, + "entryPoint": 19731, "id": null, "parameterSlots": 2, "returnSlots": 2 }, "abi_decode_tuple_t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24t_bool": { - "entryPoint": 17224, + "entryPoint": 19084, "id": null, "parameterSlots": 2, "returnSlots": 9 }, "abi_decode_tuple_t_uint256": { - "entryPoint": 16227, + "entryPoint": 17981, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr": { - "entryPoint": 18299, + "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr": { + "entryPoint": 20270, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encodeUpdatedPos_t_uint256_to_t_uint256": { - "entryPoint": 16026, + "entryPoint": 17759, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_t_address_to_t_address_fromStack": { - "entryPoint": 17769, + "entryPoint": 19687, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack": { - "entryPoint": 18334, + "abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack": { + "entryPoint": 20307, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { - "entryPoint": 16061, + "entryPoint": 17796, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_t_bool_to_t_bool": { - "entryPoint": 18201, + "entryPoint": 20162, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_bool_to_t_bool_fromStack": { - "entryPoint": 15921, + "entryPoint": 17648, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_bytes32_to_t_bytes32_fromStack": { - "entryPoint": 16830, + "entryPoint": 18645, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack": { - "entryPoint": 20396, + "entryPoint": 22267, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack": { - "entryPoint": 16377, + "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 22439, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack": { + "entryPoint": 18146, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_t_contract$_IERC20_$690_to_t_address_nonPadded_inplace_fromStack": { - "entryPoint": 19669, + "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack": { + "entryPoint": 22032, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_t_contract$_ILBPair_$6147_to_t_address": { - "entryPoint": 18186, + "abi_encode_t_contract$_ILBPair_$7970_to_t_address": { + "entryPoint": 20145, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_t_contract$_ILBPair_$6147_to_t_address_fromStack": { - "entryPoint": 18028, + "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack": { + "entryPoint": 19974, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_int256_to_t_int256_fromStack": { - "entryPoint": 20591, + "entryPoint": 23155, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": { + "entryPoint": 22724, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack": { + "entryPoint": 22851, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr": { - "entryPoint": 18216, + "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr": { + "entryPoint": 20179, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr_fromStack": { - "entryPoint": 18638, + "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack": { + "entryPoint": 20645, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint16_to_t_uint16": { - "entryPoint": 18171, + "entryPoint": 20128, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint16_to_t_uint16_fromStack": { - "entryPoint": 19263, + "entryPoint": 21436, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack": { - "entryPoint": 19721, + "entryPoint": 22090, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint16_to_t_uint256_fromStack": { - "entryPoint": 19195, + "entryPoint": 21360, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint24_to_t_uint24_fromStack": { - "entryPoint": 19278, + "entryPoint": 21453, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint24_to_t_uint256_fromStack": { - "entryPoint": 19460, + "entryPoint": 21659, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint256_to_t_uint256": { - "entryPoint": 16011, + "entryPoint": 17742, "id": null, "parameterSlots": 2, "returnSlots": 0 }, "abi_encode_t_uint256_to_t_uint256_fromStack": { - "entryPoint": 17871, + "entryPoint": 19800, "id": null, "parameterSlots": 2, "returnSlots": 0 }, - "abi_encode_tuple_packed_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed": { - "entryPoint": 19744, + "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 22493, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 22117, "id": null, "parameterSlots": 4, "returnSlots": 1 }, "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": 17784, + "entryPoint": 19704, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { - "entryPoint": 20173, + "entryPoint": 23015, "id": null, "parameterSlots": 3, "returnSlots": 1 }, "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { - "entryPoint": 20498, + "entryPoint": 23058, "id": null, "parameterSlots": 3, "returnSlots": 1 }, + "abi_encode_tuple_t_address_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint16_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 22331, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, "abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed": { - "entryPoint": 19584, + "entryPoint": 21799, "id": null, "parameterSlots": 3, "returnSlots": 1 }, - "abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 18426, + "abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 20411, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 16153, + "entryPoint": 17900, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { - "entryPoint": 15936, + "entryPoint": 17665, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { - "entryPoint": 16845, + "entryPoint": 18662, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 20452, + "entryPoint": 22965, "id": null, "parameterSlots": 3, "returnSlots": 1 }, - "abi_encode_tuple_t_contract$_IERC20_$690__to_t_address__fromStack_reversed": { - "entryPoint": 16392, + "abi_encode_tuple_t_contract$_IERC20_$1838__to_t_address__fromStack_reversed": { + "entryPoint": 18163, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_encode_tuple_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint16__fromStack_reversed": { - "entryPoint": 19804, + "abi_encode_tuple_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 21377, "id": null, "parameterSlots": 4, "returnSlots": 1 }, - "abi_encode_tuple_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed": { - "entryPoint": 19210, + "abi_encode_tuple_t_contract$_ILBPair_$7970__to_t_address__fromStack_reversed": { + "entryPoint": 19991, "id": null, - "parameterSlots": 4, + "parameterSlots": 2, "returnSlots": 1 }, - "abi_encode_tuple_t_contract$_ILBPair_$6147__to_t_address__fromStack_reversed": { - "entryPoint": 18043, + "abi_encode_tuple_t_contract$_ILBPair_$7970_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 22590, "id": null, - "parameterSlots": 2, + "parameterSlots": 3, "returnSlots": 1 }, - "abi_encode_tuple_t_contract$_ILBPair_$6147_t_uint256__to_t_address_t_uint256__fromStack_reversed": { - "entryPoint": 19908, + "abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 22741, "id": null, "parameterSlots": 3, "returnSlots": 1 }, - "abi_encode_tuple_t_struct$_LBPairInformation_$5157_memory_ptr__to_t_struct$_LBPairInformation_$5157_memory_ptr__fromStack_reversed": { - "entryPoint": 18721, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": 22868, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_LBPairInformation_$6974_memory_ptr__to_t_struct$_LBPairInformation_$6974_memory_ptr__fromStack_reversed": { + "entryPoint": 20736, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed": { - "entryPoint": 19402, + "entryPoint": 21593, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed": { - "entryPoint": 19293, + "entryPoint": 21470, "id": null, "parameterSlots": 8, "returnSlots": 1 }, "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 19475, + "entryPoint": 21676, "id": null, "parameterSlots": 8, "returnSlots": 1 }, "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed": { - "entryPoint": 19947, + "entryPoint": 21842, "id": null, "parameterSlots": 9, "returnSlots": 1 }, "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { - "entryPoint": 17886, + "entryPoint": 19817, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed": { - "entryPoint": 20606, + "entryPoint": 23172, "id": null, "parameterSlots": 3, "returnSlots": 1 }, "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 20212, + "entryPoint": 22633, "id": null, "parameterSlots": 3, "returnSlots": 1 }, "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed": { - "entryPoint": 18746, + "entryPoint": 20763, "id": null, "parameterSlots": 9, "returnSlots": 1 @@ -3293,356 +1588,380 @@ "parameterSlots": 0, "returnSlots": 1 }, - "array_dataslot_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr": { - "entryPoint": 18156, + "array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 20113, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 15987, + "entryPoint": 17718, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "array_length_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr": { - "entryPoint": 18130, + "array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 20087, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "array_length_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 15961, + "entryPoint": 17692, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "array_length_t_bytes_memory_ptr": { - "entryPoint": 20314, + "entryPoint": 22183, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "array_nextElement_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr": { - "entryPoint": 18322, + "array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 20295, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 16049, + "entryPoint": 17784, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack": { - "entryPoint": 18140, + "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack": { + "entryPoint": 20097, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { - "entryPoint": 15971, + "entryPoint": 17702, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": { - "entryPoint": 20324, + "entryPoint": 22193, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 22429, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "checked_div_t_uint256": { - "entryPoint": 20645, + "entryPoint": 23215, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "checked_sub_t_uint256": { - "entryPoint": 19857, + "entryPoint": 22532, "id": null, "parameterSlots": 2, "returnSlots": 1 }, "cleanup_t_address": { - "entryPoint": 16417, + "entryPoint": 18190, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "cleanup_t_bool": { - "entryPoint": 15910, + "entryPoint": 17637, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "cleanup_t_bytes32": { - "entryPoint": 16821, + "entryPoint": 18636, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "cleanup_t_bytes4": { - "entryPoint": 15782, + "entryPoint": 17499, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_IERC20_$1838": { + "entryPoint": 18209, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_contract$_IERC20_$690": { - "entryPoint": 16434, + "cleanup_t_contract$_ILBPair_$7970": { + "entryPoint": 19573, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_contract$_ILBFactory_$5501": { - "entryPoint": 20071, + "cleanup_t_int256": { + "entryPoint": 23146, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_contract$_ILBPair_$6147": { - "entryPoint": 17667, + "cleanup_t_rational_0_by_1": { + "entryPoint": 22676, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_int256": { - "entryPoint": 20582, + "cleanup_t_rational_1_by_1": { + "entryPoint": 22784, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "cleanup_t_uint16": { - "entryPoint": 16493, + "entryPoint": 18275, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "cleanup_t_uint160": { - "entryPoint": 16270, + "entryPoint": 18029, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "cleanup_t_uint24": { - "entryPoint": 16548, + "entryPoint": 18335, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "cleanup_t_uint256": { - "entryPoint": 16002, + "entryPoint": 17733, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint64": { + "entryPoint": 22793, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_IERC20_$1838_to_t_address": { + "entryPoint": 18127, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ILBPair_$7970_to_t_address": { + "entryPoint": 19955, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "convert_t_contract$_IERC20_$690_to_t_address": { - "entryPoint": 16360, + "convert_t_rational_0_by_1_to_t_uint256": { + "entryPoint": 22685, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "convert_t_contract$_ILBPair_$6147_to_t_address": { - "entryPoint": 18011, + "convert_t_rational_1_by_1_to_t_uint64": { + "entryPoint": 22812, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "convert_t_uint160_to_t_address": { - "entryPoint": 16343, + "entryPoint": 18108, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "convert_t_uint160_to_t_uint160": { - "entryPoint": 16310, + "entryPoint": 18069, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "convert_t_uint16_to_t_uint256": { - "entryPoint": 19162, + "entryPoint": 21321, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "convert_t_uint24_to_t_uint256": { - "entryPoint": 19427, + "entryPoint": 21620, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "copy_memory_to_memory_with_cleanup": { - "entryPoint": 20340, + "entryPoint": 22209, "id": null, "parameterSlots": 3, "returnSlots": 0 }, "identity": { - "entryPoint": 16301, + "entryPoint": 18060, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "increment_t_uint256": { - "entryPoint": 19091, + "entryPoint": 21245, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "leftAlign_t_address": { - "entryPoint": 19652, + "entryPoint": 22013, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "leftAlign_t_uint16": { - "entryPoint": 19704, + "entryPoint": 22071, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "leftAlign_t_uint160": { - "entryPoint": 19635, + "entryPoint": 21994, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "panic_error_0x11": { - "entryPoint": 19046, + "entryPoint": 21200, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "panic_error_0x12": { - "entryPoint": 20537, + "entryPoint": 23101, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "panic_error_0x31": { - "entryPoint": 20693, + "entryPoint": 23270, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "panic_error_0x32": { - "entryPoint": 19001, + "entryPoint": 21155, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "panic_error_0x41": { - "entryPoint": 18956, + "entryPoint": 21110, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { - "entryPoint": 17424, + "entryPoint": 19305, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { - "entryPoint": 17420, + "entryPoint": 19301, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { - "entryPoint": 17428, + "entryPoint": 19309, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { - "entryPoint": 15778, + "entryPoint": 17495, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { - "entryPoint": 15774, + "entryPoint": 17491, "id": null, "parameterSlots": 0, "returnSlots": 0 }, "round_up_to_mul_of_32": { - "entryPoint": 20380, + "entryPoint": 22251, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "shift_left_240": { - "entryPoint": 19692, + "entryPoint": 22059, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "shift_left_96": { - "entryPoint": 19623, + "entryPoint": 21982, "id": null, "parameterSlots": 1, "returnSlots": 1 }, "validator_revert_t_address": { - "entryPoint": 17078, + "entryPoint": 18921, "id": null, "parameterSlots": 1, "returnSlots": 0 }, "validator_revert_t_bool": { - "entryPoint": 17182, + "entryPoint": 19037, "id": null, "parameterSlots": 1, "returnSlots": 0 }, "validator_revert_t_bytes32": { - "entryPoint": 16870, + "entryPoint": 18689, "id": null, "parameterSlots": 1, "returnSlots": 0 }, "validator_revert_t_bytes4": { - "entryPoint": 15825, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_contract$_IERC20_$690": { - "entryPoint": 16451, + "entryPoint": 17542, "id": null, "parameterSlots": 1, "returnSlots": 0 }, - "validator_revert_t_contract$_ILBFactory_$5501": { - "entryPoint": 20088, + "validator_revert_t_contract$_IERC20_$1838": { + "entryPoint": 18228, "id": null, "parameterSlots": 1, "returnSlots": 0 }, - "validator_revert_t_contract$_ILBPair_$6147": { - "entryPoint": 17684, + "validator_revert_t_contract$_ILBPair_$7970": { + "entryPoint": 19592, "id": null, "parameterSlots": 1, "returnSlots": 0 }, "validator_revert_t_uint16": { - "entryPoint": 16506, + "entryPoint": 18288, "id": null, "parameterSlots": 1, "returnSlots": 0 }, "validator_revert_t_uint24": { - "entryPoint": 16562, + "entryPoint": 18349, "id": null, "parameterSlots": 1, "returnSlots": 0 }, "validator_revert_t_uint256": { - "entryPoint": 16185, + "entryPoint": 17934, "id": null, "parameterSlots": 1, "returnSlots": 0 @@ -3652,22 +1971,22 @@ { "ast": { "nodeType": "YulBlock", - "src": "0:40228:26", + "src": "0:42986:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "47:35:26", + "src": "47:35:40", "statements": [ { "nodeType": "YulAssignment", - "src": "57:19:26", + "src": "57:19:40", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "73:2:26", + "src": "73:2:40", "type": "", "value": "64" } @@ -3675,16 +1994,16 @@ "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "67:5:26" + "src": "67:5:40" }, "nodeType": "YulFunctionCall", - "src": "67:9:26" + "src": "67:9:40" }, "variableNames": [ { "name": "memPtr", "nodeType": "YulIdentifier", - "src": "57:6:26" + "src": "57:6:40" } ] } @@ -3696,16 +2015,16 @@ { "name": "memPtr", "nodeType": "YulTypedName", - "src": "40:6:26", + "src": "40:6:40", "type": "" } ], - "src": "7:75:26" + "src": "7:75:40" }, { "body": { "nodeType": "YulBlock", - "src": "177:28:26", + "src": "177:28:40", "statements": [ { "expression": { @@ -3713,14 +2032,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "194:1:26", + "src": "194:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "197:1:26", + "src": "197:1:40", "type": "", "value": "0" } @@ -3728,24 +2047,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "187:6:26" + "src": "187:6:40" }, "nodeType": "YulFunctionCall", - "src": "187:12:26" + "src": "187:12:40" }, "nodeType": "YulExpressionStatement", - "src": "187:12:26" + "src": "187:12:40" } ] }, "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulFunctionDefinition", - "src": "88:117:26" + "src": "88:117:40" }, { "body": { "nodeType": "YulBlock", - "src": "300:28:26", + "src": "300:28:40", "statements": [ { "expression": { @@ -3753,14 +2072,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "317:1:26", + "src": "317:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "320:1:26", + "src": "320:1:40", "type": "", "value": "0" } @@ -3768,39 +2087,39 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "310:6:26" + "src": "310:6:40" }, "nodeType": "YulFunctionCall", - "src": "310:12:26" + "src": "310:12:40" }, "nodeType": "YulExpressionStatement", - "src": "310:12:26" + "src": "310:12:40" } ] }, "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulFunctionDefinition", - "src": "211:117:26" + "src": "211:117:40" }, { "body": { "nodeType": "YulBlock", - "src": "378:105:26", + "src": "378:105:40", "statements": [ { "nodeType": "YulAssignment", - "src": "388:89:26", + "src": "388:89:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "403:5:26" + "src": "403:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "410:66:26", + "src": "410:66:40", "type": "", "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" } @@ -3808,16 +2127,16 @@ "functionName": { "name": "and", "nodeType": "YulIdentifier", - "src": "399:3:26" + "src": "399:3:40" }, "nodeType": "YulFunctionCall", - "src": "399:78:26" + "src": "399:78:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "388:7:26" + "src": "388:7:40" } ] } @@ -3829,7 +2148,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "360:5:26", + "src": "360:5:40", "type": "" } ], @@ -3837,21 +2156,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "370:7:26", + "src": "370:7:40", "type": "" } ], - "src": "334:149:26" + "src": "334:149:40" }, { "body": { "nodeType": "YulBlock", - "src": "531:78:26", + "src": "531:78:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "587:16:26", + "src": "587:16:40", "statements": [ { "expression": { @@ -3859,14 +2178,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "596:1:26", + "src": "596:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "599:1:26", + "src": "599:1:40", "type": "", "value": "0" } @@ -3874,13 +2193,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "589:6:26" + "src": "589:6:40" }, "nodeType": "YulFunctionCall", - "src": "589:12:26" + "src": "589:12:40" }, "nodeType": "YulExpressionStatement", - "src": "589:12:26" + "src": "589:12:40" } ] }, @@ -3891,44 +2210,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "554:5:26" + "src": "554:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "578:5:26" + "src": "578:5:40" } ], "functionName": { "name": "cleanup_t_bytes4", "nodeType": "YulIdentifier", - "src": "561:16:26" + "src": "561:16:40" }, "nodeType": "YulFunctionCall", - "src": "561:23:26" + "src": "561:23:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "551:2:26" + "src": "551:2:40" }, "nodeType": "YulFunctionCall", - "src": "551:34:26" + "src": "551:34:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "544:6:26" + "src": "544:6:40" }, "nodeType": "YulFunctionCall", - "src": "544:42:26" + "src": "544:42:40" }, "nodeType": "YulIf", - "src": "541:62:26" + "src": "541:62:40" } ] }, @@ -3938,41 +2257,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "524:5:26", + "src": "524:5:40", "type": "" } ], - "src": "489:120:26" + "src": "489:120:40" }, { "body": { "nodeType": "YulBlock", - "src": "666:86:26", + "src": "666:86:40", "statements": [ { "nodeType": "YulAssignment", - "src": "676:29:26", + "src": "676:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "698:6:26" + "src": "698:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "685:12:26" + "src": "685:12:40" }, "nodeType": "YulFunctionCall", - "src": "685:20:26" + "src": "685:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "676:5:26" + "src": "676:5:40" } ] }, @@ -3982,19 +2301,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "740:5:26" + "src": "740:5:40" } ], "functionName": { "name": "validator_revert_t_bytes4", "nodeType": "YulIdentifier", - "src": "714:25:26" + "src": "714:25:40" }, "nodeType": "YulFunctionCall", - "src": "714:32:26" + "src": "714:32:40" }, "nodeType": "YulExpressionStatement", - "src": "714:32:26" + "src": "714:32:40" } ] }, @@ -4004,13 +2323,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "644:6:26", + "src": "644:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "652:3:26", + "src": "652:3:40", "type": "" } ], @@ -4018,21 +2337,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "660:5:26", + "src": "660:5:40", "type": "" } ], - "src": "615:137:26" + "src": "615:137:40" }, { "body": { "nodeType": "YulBlock", - "src": "823:262:26", + "src": "823:262:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "869:83:26", + "src": "869:83:40", "statements": [ { "expression": { @@ -4040,13 +2359,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "871:77:26" + "src": "871:77:40" }, "nodeType": "YulFunctionCall", - "src": "871:79:26" + "src": "871:79:40" }, "nodeType": "YulExpressionStatement", - "src": "871:79:26" + "src": "871:79:40" } ] }, @@ -4057,26 +2376,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "844:7:26" + "src": "844:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "853:9:26" + "src": "853:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "840:3:26" + "src": "840:3:40" }, "nodeType": "YulFunctionCall", - "src": "840:23:26" + "src": "840:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "865:2:26", + "src": "865:2:40", "type": "", "value": "32" } @@ -4084,25 +2403,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "836:3:26" + "src": "836:3:40" }, "nodeType": "YulFunctionCall", - "src": "836:32:26" + "src": "836:32:40" }, "nodeType": "YulIf", - "src": "833:119:26" + "src": "833:119:40" }, { "nodeType": "YulBlock", - "src": "962:116:26", + "src": "962:116:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "977:15:26", + "src": "977:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "991:1:26", + "src": "991:1:40", "type": "", "value": "0" }, @@ -4110,14 +2429,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "981:6:26", + "src": "981:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "1006:62:26", + "src": "1006:62:40", "value": { "arguments": [ { @@ -4125,41 +2444,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1040:9:26" + "src": "1040:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "1051:6:26" + "src": "1051:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1036:3:26" + "src": "1036:3:40" }, "nodeType": "YulFunctionCall", - "src": "1036:22:26" + "src": "1036:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "1060:7:26" + "src": "1060:7:40" } ], "functionName": { "name": "abi_decode_t_bytes4", "nodeType": "YulIdentifier", - "src": "1016:19:26" + "src": "1016:19:40" }, "nodeType": "YulFunctionCall", - "src": "1016:52:26" + "src": "1016:52:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "1006:6:26" + "src": "1006:6:40" } ] } @@ -4173,13 +2492,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "793:9:26", + "src": "793:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "804:7:26", + "src": "804:7:40", "type": "" } ], @@ -4187,20 +2506,20 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "816:6:26", + "src": "816:6:40", "type": "" } ], - "src": "758:327:26" + "src": "758:327:40" }, { "body": { "nodeType": "YulBlock", - "src": "1133:48:26", + "src": "1133:48:40", "statements": [ { "nodeType": "YulAssignment", - "src": "1143:32:26", + "src": "1143:32:40", "value": { "arguments": [ { @@ -4208,31 +2527,31 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "1168:5:26" + "src": "1168:5:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "1161:6:26" + "src": "1161:6:40" }, "nodeType": "YulFunctionCall", - "src": "1161:13:26" + "src": "1161:13:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "1154:6:26" + "src": "1154:6:40" }, "nodeType": "YulFunctionCall", - "src": "1154:21:26" + "src": "1154:21:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "1143:7:26" + "src": "1143:7:40" } ] } @@ -4244,7 +2563,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "1115:5:26", + "src": "1115:5:40", "type": "" } ], @@ -4252,16 +2571,16 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "1125:7:26", + "src": "1125:7:40", "type": "" } ], - "src": "1091:90:26" + "src": "1091:90:40" }, { "body": { "nodeType": "YulBlock", - "src": "1246:50:26", + "src": "1246:50:40", "statements": [ { "expression": { @@ -4269,35 +2588,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "1263:3:26" + "src": "1263:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1283:5:26" + "src": "1283:5:40" } ], "functionName": { "name": "cleanup_t_bool", "nodeType": "YulIdentifier", - "src": "1268:14:26" + "src": "1268:14:40" }, "nodeType": "YulFunctionCall", - "src": "1268:21:26" + "src": "1268:21:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "1256:6:26" + "src": "1256:6:40" }, "nodeType": "YulFunctionCall", - "src": "1256:34:26" + "src": "1256:34:40" }, "nodeType": "YulExpressionStatement", - "src": "1256:34:26" + "src": "1256:34:40" } ] }, @@ -4307,37 +2626,37 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "1234:5:26", + "src": "1234:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "1241:3:26", + "src": "1241:3:40", "type": "" } ], - "src": "1187:109:26" + "src": "1187:109:40" }, { "body": { "nodeType": "YulBlock", - "src": "1394:118:26", + "src": "1394:118:40", "statements": [ { "nodeType": "YulAssignment", - "src": "1404:26:26", + "src": "1404:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1416:9:26" + "src": "1416:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1427:2:26", + "src": "1427:2:40", "type": "", "value": "32" } @@ -4345,16 +2664,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1412:3:26" + "src": "1412:3:40" }, "nodeType": "YulFunctionCall", - "src": "1412:18:26" + "src": "1412:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "1404:4:26" + "src": "1404:4:40" } ] }, @@ -4364,19 +2683,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "1478:6:26" + "src": "1478:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1491:9:26" + "src": "1491:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1502:1:26", + "src": "1502:1:40", "type": "", "value": "0" } @@ -4384,22 +2703,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1487:3:26" + "src": "1487:3:40" }, "nodeType": "YulFunctionCall", - "src": "1487:17:26" + "src": "1487:17:40" } ], "functionName": { "name": "abi_encode_t_bool_to_t_bool_fromStack", "nodeType": "YulIdentifier", - "src": "1440:37:26" + "src": "1440:37:40" }, "nodeType": "YulFunctionCall", - "src": "1440:65:26" + "src": "1440:65:40" }, "nodeType": "YulExpressionStatement", - "src": "1440:65:26" + "src": "1440:65:40" } ] }, @@ -4409,13 +2728,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "1366:9:26", + "src": "1366:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "1378:6:26", + "src": "1378:6:40", "type": "" } ], @@ -4423,41 +2742,41 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "1389:4:26", + "src": "1389:4:40", "type": "" } ], - "src": "1302:210:26" + "src": "1302:210:40" }, { "body": { "nodeType": "YulBlock", - "src": "1592:40:26", + "src": "1592:40:40", "statements": [ { "nodeType": "YulAssignment", - "src": "1603:22:26", + "src": "1603:22:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1619:5:26" + "src": "1619:5:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "1613:5:26" + "src": "1613:5:40" }, "nodeType": "YulFunctionCall", - "src": "1613:12:26" + "src": "1613:12:40" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "1603:6:26" + "src": "1603:6:40" } ] } @@ -4469,7 +2788,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "1575:5:26", + "src": "1575:5:40", "type": "" } ], @@ -4477,16 +2796,16 @@ { "name": "length", "nodeType": "YulTypedName", - "src": "1585:6:26", + "src": "1585:6:40", "type": "" } ], - "src": "1518:114:26" + "src": "1518:114:40" }, { "body": { "nodeType": "YulBlock", - "src": "1749:73:26", + "src": "1749:73:40", "statements": [ { "expression": { @@ -4494,39 +2813,39 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "1766:3:26" + "src": "1766:3:40" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "1771:6:26" + "src": "1771:6:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "1759:6:26" + "src": "1759:6:40" }, "nodeType": "YulFunctionCall", - "src": "1759:19:26" + "src": "1759:19:40" }, "nodeType": "YulExpressionStatement", - "src": "1759:19:26" + "src": "1759:19:40" }, { "nodeType": "YulAssignment", - "src": "1787:29:26", + "src": "1787:29:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "1806:3:26" + "src": "1806:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1811:4:26", + "src": "1811:4:40", "type": "", "value": "0x20" } @@ -4534,16 +2853,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1802:3:26" + "src": "1802:3:40" }, "nodeType": "YulFunctionCall", - "src": "1802:14:26" + "src": "1802:14:40" }, "variableNames": [ { "name": "updated_pos", "nodeType": "YulIdentifier", - "src": "1787:11:26" + "src": "1787:11:40" } ] } @@ -4555,13 +2874,13 @@ { "name": "pos", "nodeType": "YulTypedName", - "src": "1721:3:26", + "src": "1721:3:40", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "1726:6:26", + "src": "1726:6:40", "type": "" } ], @@ -4569,47 +2888,47 @@ { "name": "updated_pos", "nodeType": "YulTypedName", - "src": "1737:11:26", + "src": "1737:11:40", "type": "" } ], - "src": "1638:184:26" + "src": "1638:184:40" }, { "body": { "nodeType": "YulBlock", - "src": "1900:60:26", + "src": "1900:60:40", "statements": [ { "nodeType": "YulAssignment", - "src": "1910:11:26", + "src": "1910:11:40", "value": { "name": "ptr", "nodeType": "YulIdentifier", - "src": "1918:3:26" + "src": "1918:3:40" }, "variableNames": [ { "name": "data", "nodeType": "YulIdentifier", - "src": "1910:4:26" + "src": "1910:4:40" } ] }, { "nodeType": "YulAssignment", - "src": "1931:22:26", + "src": "1931:22:40", "value": { "arguments": [ { "name": "ptr", "nodeType": "YulIdentifier", - "src": "1943:3:26" + "src": "1943:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1948:4:26", + "src": "1948:4:40", "type": "", "value": "0x20" } @@ -4617,16 +2936,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1939:3:26" + "src": "1939:3:40" }, "nodeType": "YulFunctionCall", - "src": "1939:14:26" + "src": "1939:14:40" }, "variableNames": [ { "name": "data", "nodeType": "YulIdentifier", - "src": "1931:4:26" + "src": "1931:4:40" } ] } @@ -4638,7 +2957,7 @@ { "name": "ptr", "nodeType": "YulTypedName", - "src": "1887:3:26", + "src": "1887:3:40", "type": "" } ], @@ -4646,30 +2965,30 @@ { "name": "data", "nodeType": "YulTypedName", - "src": "1895:4:26", + "src": "1895:4:40", "type": "" } ], - "src": "1828:132:26" + "src": "1828:132:40" }, { "body": { "nodeType": "YulBlock", - "src": "2011:32:26", + "src": "2011:32:40", "statements": [ { "nodeType": "YulAssignment", - "src": "2021:16:26", + "src": "2021:16:40", "value": { "name": "value", "nodeType": "YulIdentifier", - "src": "2032:5:26" + "src": "2032:5:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "2021:7:26" + "src": "2021:7:40" } ] } @@ -4681,7 +3000,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "1993:5:26", + "src": "1993:5:40", "type": "" } ], @@ -4689,16 +3008,16 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "2003:7:26", + "src": "2003:7:40", "type": "" } ], - "src": "1966:77:26" + "src": "1966:77:40" }, { "body": { "nodeType": "YulBlock", - "src": "2104:53:26", + "src": "2104:53:40", "statements": [ { "expression": { @@ -4706,35 +3025,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "2121:3:26" + "src": "2121:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "2144:5:26" + "src": "2144:5:40" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "2126:17:26" + "src": "2126:17:40" }, "nodeType": "YulFunctionCall", - "src": "2126:24:26" + "src": "2126:24:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "2114:6:26" + "src": "2114:6:40" }, "nodeType": "YulFunctionCall", - "src": "2114:37:26" + "src": "2114:37:40" }, "nodeType": "YulExpressionStatement", - "src": "2114:37:26" + "src": "2114:37:40" } ] }, @@ -4744,22 +3063,22 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "2092:5:26", + "src": "2092:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "2099:3:26", + "src": "2099:3:40", "type": "" } ], - "src": "2049:108:26" + "src": "2049:108:40" }, { "body": { "nodeType": "YulBlock", - "src": "2243:99:26", + "src": "2243:99:40", "statements": [ { "expression": { @@ -4767,39 +3086,39 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "2287:6:26" + "src": "2287:6:40" }, { "name": "pos", "nodeType": "YulIdentifier", - "src": "2295:3:26" + "src": "2295:3:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256", "nodeType": "YulIdentifier", - "src": "2253:33:26" + "src": "2253:33:40" }, "nodeType": "YulFunctionCall", - "src": "2253:46:26" + "src": "2253:46:40" }, "nodeType": "YulExpressionStatement", - "src": "2253:46:26" + "src": "2253:46:40" }, { "nodeType": "YulAssignment", - "src": "2308:28:26", + "src": "2308:28:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "2326:3:26" + "src": "2326:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "2331:4:26", + "src": "2331:4:40", "type": "", "value": "0x20" } @@ -4807,16 +3126,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "2322:3:26" + "src": "2322:3:40" }, "nodeType": "YulFunctionCall", - "src": "2322:14:26" + "src": "2322:14:40" }, "variableNames": [ { "name": "updatedPos", "nodeType": "YulIdentifier", - "src": "2308:10:26" + "src": "2308:10:40" } ] } @@ -4828,13 +3147,13 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "2216:6:26", + "src": "2216:6:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "2224:3:26", + "src": "2224:3:40", "type": "" } ], @@ -4842,31 +3161,31 @@ { "name": "updatedPos", "nodeType": "YulTypedName", - "src": "2232:10:26", + "src": "2232:10:40", "type": "" } ], - "src": "2163:179:26" + "src": "2163:179:40" }, { "body": { "nodeType": "YulBlock", - "src": "2423:38:26", + "src": "2423:38:40", "statements": [ { "nodeType": "YulAssignment", - "src": "2433:22:26", + "src": "2433:22:40", "value": { "arguments": [ { "name": "ptr", "nodeType": "YulIdentifier", - "src": "2445:3:26" + "src": "2445:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "2450:4:26", + "src": "2450:4:40", "type": "", "value": "0x20" } @@ -4874,16 +3193,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "2441:3:26" + "src": "2441:3:40" }, "nodeType": "YulFunctionCall", - "src": "2441:14:26" + "src": "2441:14:40" }, "variableNames": [ { "name": "next", "nodeType": "YulIdentifier", - "src": "2433:4:26" + "src": "2433:4:40" } ] } @@ -4895,7 +3214,7 @@ { "name": "ptr", "nodeType": "YulTypedName", - "src": "2410:3:26", + "src": "2410:3:40", "type": "" } ], @@ -4903,118 +3222,118 @@ { "name": "next", "nodeType": "YulTypedName", - "src": "2418:4:26", + "src": "2418:4:40", "type": "" } ], - "src": "2348:113:26" + "src": "2348:113:40" }, { "body": { "nodeType": "YulBlock", - "src": "2621:608:26", + "src": "2621:608:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "2631:68:26", + "src": "2631:68:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "2693:5:26" + "src": "2693:5:40" } ], "functionName": { "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "2645:47:26" + "src": "2645:47:40" }, "nodeType": "YulFunctionCall", - "src": "2645:54:26" + "src": "2645:54:40" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", - "src": "2635:6:26", + "src": "2635:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "2708:93:26", + "src": "2708:93:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "2789:3:26" + "src": "2789:3:40" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "2794:6:26" + "src": "2794:6:40" } ], "functionName": { "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "2715:73:26" + "src": "2715:73:40" }, "nodeType": "YulFunctionCall", - "src": "2715:86:26" + "src": "2715:86:40" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "2708:3:26" + "src": "2708:3:40" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "2810:71:26", + "src": "2810:71:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "2875:5:26" + "src": "2875:5:40" } ], "functionName": { "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "2825:49:26" + "src": "2825:49:40" }, "nodeType": "YulFunctionCall", - "src": "2825:56:26" + "src": "2825:56:40" }, "variables": [ { "name": "baseRef", "nodeType": "YulTypedName", - "src": "2814:7:26", + "src": "2814:7:40", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "2890:21:26", + "src": "2890:21:40", "value": { "name": "baseRef", "nodeType": "YulIdentifier", - "src": "2904:7:26" + "src": "2904:7:40" }, "variables": [ { "name": "srcPtr", "nodeType": "YulTypedName", - "src": "2894:6:26", + "src": "2894:6:40", "type": "" } ] @@ -5022,92 +3341,92 @@ { "body": { "nodeType": "YulBlock", - "src": "2980:224:26", + "src": "2980:224:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "2994:34:26", + "src": "2994:34:40", "value": { "arguments": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "3021:6:26" + "src": "3021:6:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "3015:5:26" + "src": "3015:5:40" }, "nodeType": "YulFunctionCall", - "src": "3015:13:26" + "src": "3015:13:40" }, "variables": [ { "name": "elementValue0", "nodeType": "YulTypedName", - "src": "2998:13:26", + "src": "2998:13:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "3041:70:26", + "src": "3041:70:40", "value": { "arguments": [ { "name": "elementValue0", "nodeType": "YulIdentifier", - "src": "3092:13:26" + "src": "3092:13:40" }, { "name": "pos", "nodeType": "YulIdentifier", - "src": "3107:3:26" + "src": "3107:3:40" } ], "functionName": { "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", "nodeType": "YulIdentifier", - "src": "3048:43:26" + "src": "3048:43:40" }, "nodeType": "YulFunctionCall", - "src": "3048:63:26" + "src": "3048:63:40" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "3041:3:26" + "src": "3041:3:40" } ] }, { "nodeType": "YulAssignment", - "src": "3124:70:26", + "src": "3124:70:40", "value": { "arguments": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "3187:6:26" + "src": "3187:6:40" } ], "functionName": { "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "3134:52:26" + "src": "3134:52:40" }, "nodeType": "YulFunctionCall", - "src": "3134:60:26" + "src": "3134:60:40" }, "variableNames": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "3124:6:26" + "src": "3124:6:40" } ] } @@ -5118,41 +3437,41 @@ { "name": "i", "nodeType": "YulIdentifier", - "src": "2942:1:26" + "src": "2942:1:40" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "2945:6:26" + "src": "2945:6:40" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", - "src": "2939:2:26" + "src": "2939:2:40" }, "nodeType": "YulFunctionCall", - "src": "2939:13:26" + "src": "2939:13:40" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", - "src": "2953:18:26", + "src": "2953:18:40", "statements": [ { "nodeType": "YulAssignment", - "src": "2955:14:26", + "src": "2955:14:40", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", - "src": "2964:1:26" + "src": "2964:1:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "2967:1:26", + "src": "2967:1:40", "type": "", "value": "1" } @@ -5160,16 +3479,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "2960:3:26" + "src": "2960:3:40" }, "nodeType": "YulFunctionCall", - "src": "2960:9:26" + "src": "2960:9:40" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", - "src": "2955:1:26" + "src": "2955:1:40" } ] } @@ -5177,15 +3496,15 @@ }, "pre": { "nodeType": "YulBlock", - "src": "2924:14:26", + "src": "2924:14:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "2926:10:26", + "src": "2926:10:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "2935:1:26", + "src": "2935:1:40", "type": "", "value": "0" }, @@ -5193,28 +3512,28 @@ { "name": "i", "nodeType": "YulTypedName", - "src": "2930:1:26", + "src": "2930:1:40", "type": "" } ] } ] }, - "src": "2920:284:26" + "src": "2920:284:40" }, { "nodeType": "YulAssignment", - "src": "3213:10:26", + "src": "3213:10:40", "value": { "name": "pos", "nodeType": "YulIdentifier", - "src": "3220:3:26" + "src": "3220:3:40" }, "variableNames": [ { "name": "end", "nodeType": "YulIdentifier", - "src": "3213:3:26" + "src": "3213:3:40" } ] } @@ -5226,13 +3545,13 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "2600:5:26", + "src": "2600:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "2607:3:26", + "src": "2607:3:40", "type": "" } ], @@ -5240,31 +3559,31 @@ { "name": "end", "nodeType": "YulTypedName", - "src": "2616:3:26", + "src": "2616:3:40", "type": "" } ], - "src": "2497:732:26" + "src": "2497:732:40" }, { "body": { "nodeType": "YulBlock", - "src": "3383:225:26", + "src": "3383:225:40", "statements": [ { "nodeType": "YulAssignment", - "src": "3393:26:26", + "src": "3393:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "3405:9:26" + "src": "3405:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "3416:2:26", + "src": "3416:2:40", "type": "", "value": "32" } @@ -5272,16 +3591,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "3401:3:26" + "src": "3401:3:40" }, "nodeType": "YulFunctionCall", - "src": "3401:18:26" + "src": "3401:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "3393:4:26" + "src": "3393:4:40" } ] }, @@ -5293,12 +3612,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "3440:9:26" + "src": "3440:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "3451:1:26", + "src": "3451:1:40", "type": "", "value": "0" } @@ -5306,73 +3625,73 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "3436:3:26" + "src": "3436:3:40" }, "nodeType": "YulFunctionCall", - "src": "3436:17:26" + "src": "3436:17:40" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "3459:4:26" + "src": "3459:4:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "3465:9:26" + "src": "3465:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "3455:3:26" + "src": "3455:3:40" }, "nodeType": "YulFunctionCall", - "src": "3455:20:26" + "src": "3455:20:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "3429:6:26" + "src": "3429:6:40" }, "nodeType": "YulFunctionCall", - "src": "3429:47:26" + "src": "3429:47:40" }, "nodeType": "YulExpressionStatement", - "src": "3429:47:26" + "src": "3429:47:40" }, { "nodeType": "YulAssignment", - "src": "3485:116:26", + "src": "3485:116:40", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "3587:6:26" + "src": "3587:6:40" }, { "name": "tail", "nodeType": "YulIdentifier", - "src": "3596:4:26" + "src": "3596:4:40" } ], "functionName": { "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "3493:93:26" + "src": "3493:93:40" }, "nodeType": "YulFunctionCall", - "src": "3493:108:26" + "src": "3493:108:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "3485:4:26" + "src": "3485:4:40" } ] } @@ -5384,13 +3703,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "3355:9:26", + "src": "3355:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "3367:6:26", + "src": "3367:6:40", "type": "" } ], @@ -5398,21 +3717,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "3378:4:26", + "src": "3378:4:40", "type": "" } ], - "src": "3235:373:26" + "src": "3235:373:40" }, { "body": { "nodeType": "YulBlock", - "src": "3657:79:26", + "src": "3657:79:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "3714:16:26", + "src": "3714:16:40", "statements": [ { "expression": { @@ -5420,14 +3739,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "3723:1:26", + "src": "3723:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "3726:1:26", + "src": "3726:1:40", "type": "", "value": "0" } @@ -5435,13 +3754,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "3716:6:26" + "src": "3716:6:40" }, "nodeType": "YulFunctionCall", - "src": "3716:12:26" + "src": "3716:12:40" }, "nodeType": "YulExpressionStatement", - "src": "3716:12:26" + "src": "3716:12:40" } ] }, @@ -5452,44 +3771,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "3680:5:26" + "src": "3680:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "3705:5:26" + "src": "3705:5:40" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "3687:17:26" + "src": "3687:17:40" }, "nodeType": "YulFunctionCall", - "src": "3687:24:26" + "src": "3687:24:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "3677:2:26" + "src": "3677:2:40" }, "nodeType": "YulFunctionCall", - "src": "3677:35:26" + "src": "3677:35:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "3670:6:26" + "src": "3670:6:40" }, "nodeType": "YulFunctionCall", - "src": "3670:43:26" + "src": "3670:43:40" }, "nodeType": "YulIf", - "src": "3667:63:26" + "src": "3667:63:40" } ] }, @@ -5499,41 +3818,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "3650:5:26", + "src": "3650:5:40", "type": "" } ], - "src": "3614:122:26" + "src": "3614:122:40" }, { "body": { "nodeType": "YulBlock", - "src": "3794:87:26", + "src": "3794:87:40", "statements": [ { "nodeType": "YulAssignment", - "src": "3804:29:26", + "src": "3804:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "3826:6:26" + "src": "3826:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "3813:12:26" + "src": "3813:12:40" }, "nodeType": "YulFunctionCall", - "src": "3813:20:26" + "src": "3813:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "3804:5:26" + "src": "3804:5:40" } ] }, @@ -5543,19 +3862,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "3869:5:26" + "src": "3869:5:40" } ], "functionName": { "name": "validator_revert_t_uint256", "nodeType": "YulIdentifier", - "src": "3842:26:26" + "src": "3842:26:40" }, "nodeType": "YulFunctionCall", - "src": "3842:33:26" + "src": "3842:33:40" }, "nodeType": "YulExpressionStatement", - "src": "3842:33:26" + "src": "3842:33:40" } ] }, @@ -5565,13 +3884,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "3772:6:26", + "src": "3772:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "3780:3:26", + "src": "3780:3:40", "type": "" } ], @@ -5579,21 +3898,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "3788:5:26", + "src": "3788:5:40", "type": "" } ], - "src": "3742:139:26" + "src": "3742:139:40" }, { "body": { "nodeType": "YulBlock", - "src": "3953:263:26", + "src": "3953:263:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "3999:83:26", + "src": "3999:83:40", "statements": [ { "expression": { @@ -5601,13 +3920,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "4001:77:26" + "src": "4001:77:40" }, "nodeType": "YulFunctionCall", - "src": "4001:79:26" + "src": "4001:79:40" }, "nodeType": "YulExpressionStatement", - "src": "4001:79:26" + "src": "4001:79:40" } ] }, @@ -5618,26 +3937,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "3974:7:26" + "src": "3974:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "3983:9:26" + "src": "3983:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "3970:3:26" + "src": "3970:3:40" }, "nodeType": "YulFunctionCall", - "src": "3970:23:26" + "src": "3970:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "3995:2:26", + "src": "3995:2:40", "type": "", "value": "32" } @@ -5645,25 +3964,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "3966:3:26" + "src": "3966:3:40" }, "nodeType": "YulFunctionCall", - "src": "3966:32:26" + "src": "3966:32:40" }, "nodeType": "YulIf", - "src": "3963:119:26" + "src": "3963:119:40" }, { "nodeType": "YulBlock", - "src": "4092:117:26", + "src": "4092:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "4107:15:26", + "src": "4107:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "4121:1:26", + "src": "4121:1:40", "type": "", "value": "0" }, @@ -5671,14 +3990,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "4111:6:26", + "src": "4111:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "4136:63:26", + "src": "4136:63:40", "value": { "arguments": [ { @@ -5686,41 +4005,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "4171:9:26" + "src": "4171:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "4182:6:26" + "src": "4182:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "4167:3:26" + "src": "4167:3:40" }, "nodeType": "YulFunctionCall", - "src": "4167:22:26" + "src": "4167:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "4191:7:26" + "src": "4191:7:40" } ], "functionName": { "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "4146:20:26" + "src": "4146:20:40" }, "nodeType": "YulFunctionCall", - "src": "4146:53:26" + "src": "4146:53:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "4136:6:26" + "src": "4136:6:40" } ] } @@ -5734,13 +4053,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "3923:9:26", + "src": "3923:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "3934:7:26", + "src": "3934:7:40", "type": "" } ], @@ -5748,31 +4067,31 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "3946:6:26", + "src": "3946:6:40", "type": "" } ], - "src": "3887:329:26" + "src": "3887:329:40" }, { "body": { "nodeType": "YulBlock", - "src": "4267:81:26", + "src": "4267:81:40", "statements": [ { "nodeType": "YulAssignment", - "src": "4277:65:26", + "src": "4277:65:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "4292:5:26" + "src": "4292:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4299:42:26", + "src": "4299:42:40", "type": "", "value": "0xffffffffffffffffffffffffffffffffffffffff" } @@ -5780,16 +4099,16 @@ "functionName": { "name": "and", "nodeType": "YulIdentifier", - "src": "4288:3:26" + "src": "4288:3:40" }, "nodeType": "YulFunctionCall", - "src": "4288:54:26" + "src": "4288:54:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "4277:7:26" + "src": "4277:7:40" } ] } @@ -5801,7 +4120,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4249:5:26", + "src": "4249:5:40", "type": "" } ], @@ -5809,30 +4128,30 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "4259:7:26", + "src": "4259:7:40", "type": "" } ], - "src": "4222:126:26" + "src": "4222:126:40" }, { "body": { "nodeType": "YulBlock", - "src": "4386:28:26", + "src": "4386:28:40", "statements": [ { "nodeType": "YulAssignment", - "src": "4396:12:26", + "src": "4396:12:40", "value": { "name": "value", "nodeType": "YulIdentifier", - "src": "4403:5:26" + "src": "4403:5:40" }, "variableNames": [ { "name": "ret", "nodeType": "YulIdentifier", - "src": "4396:3:26" + "src": "4396:3:40" } ] } @@ -5844,7 +4163,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4372:5:26", + "src": "4372:5:40", "type": "" } ], @@ -5852,20 +4171,20 @@ { "name": "ret", "nodeType": "YulTypedName", - "src": "4382:3:26", + "src": "4382:3:40", "type": "" } ], - "src": "4354:60:26" + "src": "4354:60:40" }, { "body": { "nodeType": "YulBlock", - "src": "4480:82:26", + "src": "4480:82:40", "statements": [ { "nodeType": "YulAssignment", - "src": "4490:66:26", + "src": "4490:66:40", "value": { "arguments": [ { @@ -5875,40 +4194,40 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "4548:5:26" + "src": "4548:5:40" } ], "functionName": { "name": "cleanup_t_uint160", "nodeType": "YulIdentifier", - "src": "4530:17:26" + "src": "4530:17:40" }, "nodeType": "YulFunctionCall", - "src": "4530:24:26" + "src": "4530:24:40" } ], "functionName": { "name": "identity", "nodeType": "YulIdentifier", - "src": "4521:8:26" + "src": "4521:8:40" }, "nodeType": "YulFunctionCall", - "src": "4521:34:26" + "src": "4521:34:40" } ], "functionName": { "name": "cleanup_t_uint160", "nodeType": "YulIdentifier", - "src": "4503:17:26" + "src": "4503:17:40" }, "nodeType": "YulFunctionCall", - "src": "4503:53:26" + "src": "4503:53:40" }, "variableNames": [ { "name": "converted", "nodeType": "YulIdentifier", - "src": "4490:9:26" + "src": "4490:9:40" } ] } @@ -5920,7 +4239,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4460:5:26", + "src": "4460:5:40", "type": "" } ], @@ -5928,41 +4247,41 @@ { "name": "converted", "nodeType": "YulTypedName", - "src": "4470:9:26", + "src": "4470:9:40", "type": "" } ], - "src": "4420:142:26" + "src": "4420:142:40" }, { "body": { "nodeType": "YulBlock", - "src": "4628:66:26", + "src": "4628:66:40", "statements": [ { "nodeType": "YulAssignment", - "src": "4638:50:26", + "src": "4638:50:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "4682:5:26" + "src": "4682:5:40" } ], "functionName": { "name": "convert_t_uint160_to_t_uint160", "nodeType": "YulIdentifier", - "src": "4651:30:26" + "src": "4651:30:40" }, "nodeType": "YulFunctionCall", - "src": "4651:37:26" + "src": "4651:37:40" }, "variableNames": [ { "name": "converted", "nodeType": "YulIdentifier", - "src": "4638:9:26" + "src": "4638:9:40" } ] } @@ -5974,7 +4293,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "4608:5:26", + "src": "4608:5:40", "type": "" } ], @@ -5982,53 +4301,53 @@ { "name": "converted", "nodeType": "YulTypedName", - "src": "4618:9:26", + "src": "4618:9:40", "type": "" } ], - "src": "4568:126:26" + "src": "4568:126:40" }, { "body": { "nodeType": "YulBlock", - "src": "4774:66:26", + "src": "4775:66:40", "statements": [ { "nodeType": "YulAssignment", - "src": "4784:50:26", + "src": "4785:50:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "4828:5:26" + "src": "4829:5:40" } ], "functionName": { "name": "convert_t_uint160_to_t_address", "nodeType": "YulIdentifier", - "src": "4797:30:26" + "src": "4798:30:40" }, "nodeType": "YulFunctionCall", - "src": "4797:37:26" + "src": "4798:37:40" }, "variableNames": [ { "name": "converted", "nodeType": "YulIdentifier", - "src": "4784:9:26" + "src": "4785:9:40" } ] } ] }, - "name": "convert_t_contract$_IERC20_$690_to_t_address", + "name": "convert_t_contract$_IERC20_$1838_to_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "4754:5:26", + "src": "4755:5:40", "type": "" } ], @@ -6036,16 +4355,16 @@ { "name": "converted", "nodeType": "YulTypedName", - "src": "4764:9:26", + "src": "4765:9:40", "type": "" } ], - "src": "4700:140:26" + "src": "4700:141:40" }, { "body": { "nodeType": "YulBlock", - "src": "4925:80:26", + "src": "4927:81:40", "statements": [ { "expression": { @@ -6053,75 +4372,75 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "4942:3:26" + "src": "4944:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "4992:5:26" + "src": "4995:5:40" } ], "functionName": { - "name": "convert_t_contract$_IERC20_$690_to_t_address", + "name": "convert_t_contract$_IERC20_$1838_to_t_address", "nodeType": "YulIdentifier", - "src": "4947:44:26" + "src": "4949:45:40" }, "nodeType": "YulFunctionCall", - "src": "4947:51:26" + "src": "4949:52:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "4935:6:26" + "src": "4937:6:40" }, "nodeType": "YulFunctionCall", - "src": "4935:64:26" + "src": "4937:65:40" }, "nodeType": "YulExpressionStatement", - "src": "4935:64:26" + "src": "4937:65:40" } ] }, - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack", + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "4913:5:26", + "src": "4915:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "4920:3:26", + "src": "4922:3:40", "type": "" } ], - "src": "4846:159:26" + "src": "4847:161:40" }, { "body": { "nodeType": "YulBlock", - "src": "5123:138:26", + "src": "5127:139:40", "statements": [ { "nodeType": "YulAssignment", - "src": "5133:26:26", + "src": "5137:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5145:9:26" + "src": "5149:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5156:2:26", + "src": "5160:2:40", "type": "", "value": "32" } @@ -6129,16 +4448,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5141:3:26" + "src": "5145:3:40" }, "nodeType": "YulFunctionCall", - "src": "5141:18:26" + "src": "5145:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "5133:4:26" + "src": "5137:4:40" } ] }, @@ -6148,19 +4467,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "5227:6:26" + "src": "5232:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5240:9:26" + "src": "5245:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5251:1:26", + "src": "5256:1:40", "type": "", "value": "0" } @@ -6168,38 +4487,38 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5236:3:26" + "src": "5241:3:40" }, "nodeType": "YulFunctionCall", - "src": "5236:17:26" + "src": "5241:17:40" } ], "functionName": { - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack", + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "5169:57:26" + "src": "5173:58:40" }, "nodeType": "YulFunctionCall", - "src": "5169:85:26" + "src": "5173:86:40" }, "nodeType": "YulExpressionStatement", - "src": "5169:85:26" + "src": "5173:86:40" } ] }, - "name": "abi_encode_tuple_t_contract$_IERC20_$690__to_t_address__fromStack_reversed", + "name": "abi_encode_tuple_t_contract$_IERC20_$1838__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "5095:9:26", + "src": "5099:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "5107:6:26", + "src": "5111:6:40", "type": "" } ], @@ -6207,41 +4526,41 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "5118:4:26", + "src": "5122:4:40", "type": "" } ], - "src": "5011:250:26" + "src": "5014:252:40" }, { "body": { "nodeType": "YulBlock", - "src": "5312:51:26", + "src": "5317:51:40", "statements": [ { "nodeType": "YulAssignment", - "src": "5322:35:26", + "src": "5327:35:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "5351:5:26" + "src": "5356:5:40" } ], "functionName": { "name": "cleanup_t_uint160", "nodeType": "YulIdentifier", - "src": "5333:17:26" + "src": "5338:17:40" }, "nodeType": "YulFunctionCall", - "src": "5333:24:26" + "src": "5338:24:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "5322:7:26" + "src": "5327:7:40" } ] } @@ -6253,7 +4572,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "5294:5:26", + "src": "5299:5:40", "type": "" } ], @@ -6261,53 +4580,53 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "5304:7:26", + "src": "5309:7:40", "type": "" } ], - "src": "5267:96:26" + "src": "5272:96:40" }, { "body": { "nodeType": "YulBlock", - "src": "5428:51:26", + "src": "5434:51:40", "statements": [ { "nodeType": "YulAssignment", - "src": "5438:35:26", + "src": "5444:35:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "5467:5:26" + "src": "5473:5:40" } ], "functionName": { "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "5449:17:26" + "src": "5455:17:40" }, "nodeType": "YulFunctionCall", - "src": "5449:24:26" + "src": "5455:24:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "5438:7:26" + "src": "5444:7:40" } ] } ] }, - "name": "cleanup_t_contract$_IERC20_$690", + "name": "cleanup_t_contract$_IERC20_$1838", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "5410:5:26", + "src": "5416:5:40", "type": "" } ], @@ -6315,21 +4634,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "5420:7:26", + "src": "5426:7:40", "type": "" } ], - "src": "5369:110:26" + "src": "5374:111:40" }, { "body": { "nodeType": "YulBlock", - "src": "5542:93:26", + "src": "5549:94:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "5613:16:26", + "src": "5621:16:40", "statements": [ { "expression": { @@ -6337,14 +4656,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "5622:1:26", + "src": "5630:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5625:1:26", + "src": "5633:1:40", "type": "", "value": "0" } @@ -6352,13 +4671,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "5615:6:26" + "src": "5623:6:40" }, "nodeType": "YulFunctionCall", - "src": "5615:12:26" + "src": "5623:12:40" }, "nodeType": "YulExpressionStatement", - "src": "5615:12:26" + "src": "5623:12:40" } ] }, @@ -6369,88 +4688,88 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "5565:5:26" + "src": "5572:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "5604:5:26" + "src": "5612:5:40" } ], "functionName": { - "name": "cleanup_t_contract$_IERC20_$690", + "name": "cleanup_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "5572:31:26" + "src": "5579:32:40" }, "nodeType": "YulFunctionCall", - "src": "5572:38:26" + "src": "5579:39:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "5562:2:26" + "src": "5569:2:40" }, "nodeType": "YulFunctionCall", - "src": "5562:49:26" + "src": "5569:50:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "5555:6:26" + "src": "5562:6:40" }, "nodeType": "YulFunctionCall", - "src": "5555:57:26" + "src": "5562:58:40" }, "nodeType": "YulIf", - "src": "5552:77:26" + "src": "5559:78:40" } ] }, - "name": "validator_revert_t_contract$_IERC20_$690", + "name": "validator_revert_t_contract$_IERC20_$1838", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "5535:5:26", + "src": "5542:5:40", "type": "" } ], - "src": "5485:150:26" + "src": "5491:152:40" }, { "body": { "nodeType": "YulBlock", - "src": "5707:101:26", + "src": "5716:102:40", "statements": [ { "nodeType": "YulAssignment", - "src": "5717:29:26", + "src": "5726:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "5739:6:26" + "src": "5748:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "5726:12:26" + "src": "5735:12:40" }, "nodeType": "YulFunctionCall", - "src": "5726:20:26" + "src": "5735:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "5717:5:26" + "src": "5726:5:40" } ] }, @@ -6460,35 +4779,35 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "5796:5:26" + "src": "5806:5:40" } ], "functionName": { - "name": "validator_revert_t_contract$_IERC20_$690", + "name": "validator_revert_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "5755:40:26" + "src": "5764:41:40" }, "nodeType": "YulFunctionCall", - "src": "5755:47:26" + "src": "5764:48:40" }, "nodeType": "YulExpressionStatement", - "src": "5755:47:26" + "src": "5764:48:40" } ] }, - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "5685:6:26", + "src": "5694:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "5693:3:26", + "src": "5702:3:40", "type": "" } ], @@ -6496,31 +4815,31 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "5701:5:26", + "src": "5710:5:40", "type": "" } ], - "src": "5641:167:26" + "src": "5649:169:40" }, { "body": { "nodeType": "YulBlock", - "src": "5858:45:26", + "src": "5868:45:40", "statements": [ { "nodeType": "YulAssignment", - "src": "5868:29:26", + "src": "5878:29:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "5883:5:26" + "src": "5893:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5890:6:26", + "src": "5900:6:40", "type": "", "value": "0xffff" } @@ -6528,16 +4847,16 @@ "functionName": { "name": "and", "nodeType": "YulIdentifier", - "src": "5879:3:26" + "src": "5889:3:40" }, "nodeType": "YulFunctionCall", - "src": "5879:18:26" + "src": "5889:18:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "5868:7:26" + "src": "5878:7:40" } ] } @@ -6549,7 +4868,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "5840:5:26", + "src": "5850:5:40", "type": "" } ], @@ -6557,21 +4876,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "5850:7:26", + "src": "5860:7:40", "type": "" } ], - "src": "5814:89:26" + "src": "5824:89:40" }, { "body": { "nodeType": "YulBlock", - "src": "5951:78:26", + "src": "5961:78:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "6007:16:26", + "src": "6017:16:40", "statements": [ { "expression": { @@ -6579,14 +4898,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "6016:1:26", + "src": "6026:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6019:1:26", + "src": "6029:1:40", "type": "", "value": "0" } @@ -6594,13 +4913,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "6009:6:26" + "src": "6019:6:40" }, "nodeType": "YulFunctionCall", - "src": "6009:12:26" + "src": "6019:12:40" }, "nodeType": "YulExpressionStatement", - "src": "6009:12:26" + "src": "6019:12:40" } ] }, @@ -6611,44 +4930,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "5974:5:26" + "src": "5984:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "5998:5:26" + "src": "6008:5:40" } ], "functionName": { "name": "cleanup_t_uint16", "nodeType": "YulIdentifier", - "src": "5981:16:26" + "src": "5991:16:40" }, "nodeType": "YulFunctionCall", - "src": "5981:23:26" + "src": "5991:23:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "5971:2:26" + "src": "5981:2:40" }, "nodeType": "YulFunctionCall", - "src": "5971:34:26" + "src": "5981:34:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "5964:6:26" + "src": "5974:6:40" }, "nodeType": "YulFunctionCall", - "src": "5964:42:26" + "src": "5974:42:40" }, "nodeType": "YulIf", - "src": "5961:62:26" + "src": "5971:62:40" } ] }, @@ -6658,41 +4977,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "5944:5:26", + "src": "5954:5:40", "type": "" } ], - "src": "5909:120:26" + "src": "5919:120:40" }, { "body": { "nodeType": "YulBlock", - "src": "6086:86:26", + "src": "6096:86:40", "statements": [ { "nodeType": "YulAssignment", - "src": "6096:29:26", + "src": "6106:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "6118:6:26" + "src": "6128:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "6105:12:26" + "src": "6115:12:40" }, "nodeType": "YulFunctionCall", - "src": "6105:20:26" + "src": "6115:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "6096:5:26" + "src": "6106:5:40" } ] }, @@ -6702,19 +5021,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "6160:5:26" + "src": "6170:5:40" } ], "functionName": { "name": "validator_revert_t_uint16", "nodeType": "YulIdentifier", - "src": "6134:25:26" + "src": "6144:25:40" }, "nodeType": "YulFunctionCall", - "src": "6134:32:26" + "src": "6144:32:40" }, "nodeType": "YulExpressionStatement", - "src": "6134:32:26" + "src": "6144:32:40" } ] }, @@ -6724,13 +5043,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "6064:6:26", + "src": "6074:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "6072:3:26", + "src": "6082:3:40", "type": "" } ], @@ -6738,31 +5057,31 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "6080:5:26", + "src": "6090:5:40", "type": "" } ], - "src": "6035:137:26" + "src": "6045:137:40" }, { "body": { "nodeType": "YulBlock", - "src": "6222:47:26", + "src": "6232:47:40", "statements": [ { "nodeType": "YulAssignment", - "src": "6232:31:26", + "src": "6242:31:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "6247:5:26" + "src": "6257:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6254:8:26", + "src": "6264:8:40", "type": "", "value": "0xffffff" } @@ -6770,16 +5089,16 @@ "functionName": { "name": "and", "nodeType": "YulIdentifier", - "src": "6243:3:26" + "src": "6253:3:40" }, "nodeType": "YulFunctionCall", - "src": "6243:20:26" + "src": "6253:20:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "6232:7:26" + "src": "6242:7:40" } ] } @@ -6791,7 +5110,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "6204:5:26", + "src": "6214:5:40", "type": "" } ], @@ -6799,21 +5118,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "6214:7:26", + "src": "6224:7:40", "type": "" } ], - "src": "6178:91:26" + "src": "6188:91:40" }, { "body": { "nodeType": "YulBlock", - "src": "6317:78:26", + "src": "6327:78:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "6373:16:26", + "src": "6383:16:40", "statements": [ { "expression": { @@ -6821,14 +5140,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "6382:1:26", + "src": "6392:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6385:1:26", + "src": "6395:1:40", "type": "", "value": "0" } @@ -6836,13 +5155,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "6375:6:26" + "src": "6385:6:40" }, "nodeType": "YulFunctionCall", - "src": "6375:12:26" + "src": "6385:12:40" }, "nodeType": "YulExpressionStatement", - "src": "6375:12:26" + "src": "6385:12:40" } ] }, @@ -6853,44 +5172,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "6340:5:26" + "src": "6350:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "6364:5:26" + "src": "6374:5:40" } ], "functionName": { "name": "cleanup_t_uint24", "nodeType": "YulIdentifier", - "src": "6347:16:26" + "src": "6357:16:40" }, "nodeType": "YulFunctionCall", - "src": "6347:23:26" + "src": "6357:23:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "6337:2:26" + "src": "6347:2:40" }, "nodeType": "YulFunctionCall", - "src": "6337:34:26" + "src": "6347:34:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "6330:6:26" + "src": "6340:6:40" }, "nodeType": "YulFunctionCall", - "src": "6330:42:26" + "src": "6340:42:40" }, "nodeType": "YulIf", - "src": "6327:62:26" + "src": "6337:62:40" } ] }, @@ -6900,41 +5219,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "6310:5:26", + "src": "6320:5:40", "type": "" } ], - "src": "6275:120:26" + "src": "6285:120:40" }, { "body": { "nodeType": "YulBlock", - "src": "6452:86:26", + "src": "6462:86:40", "statements": [ { "nodeType": "YulAssignment", - "src": "6462:29:26", + "src": "6472:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "6484:6:26" + "src": "6494:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "6471:12:26" + "src": "6481:12:40" }, "nodeType": "YulFunctionCall", - "src": "6471:20:26" + "src": "6481:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "6462:5:26" + "src": "6472:5:40" } ] }, @@ -6944,19 +5263,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "6526:5:26" + "src": "6536:5:40" } ], "functionName": { "name": "validator_revert_t_uint24", "nodeType": "YulIdentifier", - "src": "6500:25:26" + "src": "6510:25:40" }, "nodeType": "YulFunctionCall", - "src": "6500:32:26" + "src": "6510:32:40" }, "nodeType": "YulExpressionStatement", - "src": "6500:32:26" + "src": "6510:32:40" } ] }, @@ -6966,13 +5285,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "6430:6:26", + "src": "6440:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "6438:3:26", + "src": "6448:3:40", "type": "" } ], @@ -6980,21 +5299,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "6446:5:26", + "src": "6456:5:40", "type": "" } ], - "src": "6401:137:26" + "src": "6411:137:40" }, { "body": { "nodeType": "YulBlock", - "src": "6783:1442:26", + "src": "6795:1444:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "6830:83:26", + "src": "6842:83:40", "statements": [ { "expression": { @@ -7002,13 +5321,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "6832:77:26" + "src": "6844:77:40" }, "nodeType": "YulFunctionCall", - "src": "6832:79:26" + "src": "6844:79:40" }, "nodeType": "YulExpressionStatement", - "src": "6832:79:26" + "src": "6844:79:40" } ] }, @@ -7019,26 +5338,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "6804:7:26" + "src": "6816:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "6813:9:26" + "src": "6825:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "6800:3:26" + "src": "6812:3:40" }, "nodeType": "YulFunctionCall", - "src": "6800:23:26" + "src": "6812:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6825:3:26", + "src": "6837:3:40", "type": "", "value": "320" } @@ -7046,25 +5365,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "6796:3:26" + "src": "6808:3:40" }, "nodeType": "YulFunctionCall", - "src": "6796:33:26" + "src": "6808:33:40" }, "nodeType": "YulIf", - "src": "6793:120:26" + "src": "6805:120:40" }, { "nodeType": "YulBlock", - "src": "6923:131:26", + "src": "6935:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "6938:15:26", + "src": "6950:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "6952:1:26", + "src": "6964:1:40", "type": "", "value": "0" }, @@ -7072,14 +5391,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "6942:6:26", + "src": "6954:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "6967:77:26", + "src": "6979:78:40", "value": { "arguments": [ { @@ -7087,41 +5406,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7016:9:26" + "src": "7029:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7027:6:26" + "src": "7040:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7012:3:26" + "src": "7025:3:40" }, "nodeType": "YulFunctionCall", - "src": "7012:22:26" + "src": "7025:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7036:7:26" + "src": "7049:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "6977:34:26" + "src": "6989:35:40" }, "nodeType": "YulFunctionCall", - "src": "6977:67:26" + "src": "6989:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "6967:6:26" + "src": "6979:6:40" } ] } @@ -7129,15 +5448,15 @@ }, { "nodeType": "YulBlock", - "src": "7064:132:26", + "src": "7077:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7079:16:26", + "src": "7092:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "7093:2:26", + "src": "7106:2:40", "type": "", "value": "32" }, @@ -7145,14 +5464,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7083:6:26", + "src": "7096:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "7109:77:26", + "src": "7122:78:40", "value": { "arguments": [ { @@ -7160,41 +5479,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7158:9:26" + "src": "7172:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7169:6:26" + "src": "7183:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7154:3:26" + "src": "7168:3:40" }, "nodeType": "YulFunctionCall", - "src": "7154:22:26" + "src": "7168:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7178:7:26" + "src": "7192:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "7119:34:26" + "src": "7132:35:40" }, "nodeType": "YulFunctionCall", - "src": "7119:67:26" + "src": "7132:68:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "7109:6:26" + "src": "7122:6:40" } ] } @@ -7202,15 +5521,15 @@ }, { "nodeType": "YulBlock", - "src": "7206:117:26", + "src": "7220:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7221:16:26", + "src": "7235:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "7235:2:26", + "src": "7249:2:40", "type": "", "value": "64" }, @@ -7218,14 +5537,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7225:6:26", + "src": "7239:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "7251:62:26", + "src": "7265:62:40", "value": { "arguments": [ { @@ -7233,41 +5552,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7285:9:26" + "src": "7299:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7296:6:26" + "src": "7310:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7281:3:26" + "src": "7295:3:40" }, "nodeType": "YulFunctionCall", - "src": "7281:22:26" + "src": "7295:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7305:7:26" + "src": "7319:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "7261:19:26" + "src": "7275:19:40" }, "nodeType": "YulFunctionCall", - "src": "7261:52:26" + "src": "7275:52:40" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "7251:6:26" + "src": "7265:6:40" } ] } @@ -7275,15 +5594,15 @@ }, { "nodeType": "YulBlock", - "src": "7333:117:26", + "src": "7347:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7348:16:26", + "src": "7362:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "7362:2:26", + "src": "7376:2:40", "type": "", "value": "96" }, @@ -7291,14 +5610,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7352:6:26", + "src": "7366:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "7378:62:26", + "src": "7392:62:40", "value": { "arguments": [ { @@ -7306,41 +5625,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7412:9:26" + "src": "7426:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7423:6:26" + "src": "7437:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7408:3:26" + "src": "7422:3:40" }, "nodeType": "YulFunctionCall", - "src": "7408:22:26" + "src": "7422:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7432:7:26" + "src": "7446:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "7388:19:26" + "src": "7402:19:40" }, "nodeType": "YulFunctionCall", - "src": "7388:52:26" + "src": "7402:52:40" }, "variableNames": [ { "name": "value3", "nodeType": "YulIdentifier", - "src": "7378:6:26" + "src": "7392:6:40" } ] } @@ -7348,15 +5667,15 @@ }, { "nodeType": "YulBlock", - "src": "7460:118:26", + "src": "7474:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7475:17:26", + "src": "7489:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "7489:3:26", + "src": "7503:3:40", "type": "", "value": "128" }, @@ -7364,14 +5683,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7479:6:26", + "src": "7493:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "7506:62:26", + "src": "7520:62:40", "value": { "arguments": [ { @@ -7379,41 +5698,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7540:9:26" + "src": "7554:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7551:6:26" + "src": "7565:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7536:3:26" + "src": "7550:3:40" }, "nodeType": "YulFunctionCall", - "src": "7536:22:26" + "src": "7550:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7560:7:26" + "src": "7574:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "7516:19:26" + "src": "7530:19:40" }, "nodeType": "YulFunctionCall", - "src": "7516:52:26" + "src": "7530:52:40" }, "variableNames": [ { "name": "value4", "nodeType": "YulIdentifier", - "src": "7506:6:26" + "src": "7520:6:40" } ] } @@ -7421,15 +5740,15 @@ }, { "nodeType": "YulBlock", - "src": "7588:118:26", + "src": "7602:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7603:17:26", + "src": "7617:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "7617:3:26", + "src": "7631:3:40", "type": "", "value": "160" }, @@ -7437,14 +5756,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7607:6:26", + "src": "7621:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "7634:62:26", + "src": "7648:62:40", "value": { "arguments": [ { @@ -7452,41 +5771,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7668:9:26" + "src": "7682:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7679:6:26" + "src": "7693:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7664:3:26" + "src": "7678:3:40" }, "nodeType": "YulFunctionCall", - "src": "7664:22:26" + "src": "7678:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7688:7:26" + "src": "7702:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "7644:19:26" + "src": "7658:19:40" }, "nodeType": "YulFunctionCall", - "src": "7644:52:26" + "src": "7658:52:40" }, "variableNames": [ { "name": "value5", "nodeType": "YulIdentifier", - "src": "7634:6:26" + "src": "7648:6:40" } ] } @@ -7494,15 +5813,15 @@ }, { "nodeType": "YulBlock", - "src": "7716:118:26", + "src": "7730:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7731:17:26", + "src": "7745:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "7745:3:26", + "src": "7759:3:40", "type": "", "value": "192" }, @@ -7510,14 +5829,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7735:6:26", + "src": "7749:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "7762:62:26", + "src": "7776:62:40", "value": { "arguments": [ { @@ -7525,41 +5844,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7796:9:26" + "src": "7810:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7807:6:26" + "src": "7821:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7792:3:26" + "src": "7806:3:40" }, "nodeType": "YulFunctionCall", - "src": "7792:22:26" + "src": "7806:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7816:7:26" + "src": "7830:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "7772:19:26" + "src": "7786:19:40" }, "nodeType": "YulFunctionCall", - "src": "7772:52:26" + "src": "7786:52:40" }, "variableNames": [ { "name": "value6", "nodeType": "YulIdentifier", - "src": "7762:6:26" + "src": "7776:6:40" } ] } @@ -7567,15 +5886,15 @@ }, { "nodeType": "YulBlock", - "src": "7844:118:26", + "src": "7858:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7859:17:26", + "src": "7873:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "7873:3:26", + "src": "7887:3:40", "type": "", "value": "224" }, @@ -7583,14 +5902,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7863:6:26", + "src": "7877:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "7890:62:26", + "src": "7904:62:40", "value": { "arguments": [ { @@ -7598,41 +5917,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7924:9:26" + "src": "7938:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "7935:6:26" + "src": "7949:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7920:3:26" + "src": "7934:3:40" }, "nodeType": "YulFunctionCall", - "src": "7920:22:26" + "src": "7934:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7944:7:26" + "src": "7958:7:40" } ], "functionName": { "name": "abi_decode_t_uint24", "nodeType": "YulIdentifier", - "src": "7900:19:26" + "src": "7914:19:40" }, "nodeType": "YulFunctionCall", - "src": "7900:52:26" + "src": "7914:52:40" }, "variableNames": [ { "name": "value7", "nodeType": "YulIdentifier", - "src": "7890:6:26" + "src": "7904:6:40" } ] } @@ -7640,15 +5959,15 @@ }, { "nodeType": "YulBlock", - "src": "7972:118:26", + "src": "7986:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "7987:17:26", + "src": "8001:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "8001:3:26", + "src": "8015:3:40", "type": "", "value": "256" }, @@ -7656,14 +5975,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "7991:6:26", + "src": "8005:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "8018:62:26", + "src": "8032:62:40", "value": { "arguments": [ { @@ -7671,41 +5990,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "8052:9:26" + "src": "8066:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "8063:6:26" + "src": "8077:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "8048:3:26" + "src": "8062:3:40" }, "nodeType": "YulFunctionCall", - "src": "8048:22:26" + "src": "8062:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "8072:7:26" + "src": "8086:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "8028:19:26" + "src": "8042:19:40" }, "nodeType": "YulFunctionCall", - "src": "8028:52:26" + "src": "8042:52:40" }, "variableNames": [ { "name": "value8", "nodeType": "YulIdentifier", - "src": "8018:6:26" + "src": "8032:6:40" } ] } @@ -7713,15 +6032,15 @@ }, { "nodeType": "YulBlock", - "src": "8100:118:26", + "src": "8114:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "8115:17:26", + "src": "8129:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "8129:3:26", + "src": "8143:3:40", "type": "", "value": "288" }, @@ -7729,14 +6048,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "8119:6:26", + "src": "8133:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "8146:62:26", + "src": "8160:62:40", "value": { "arguments": [ { @@ -7744,41 +6063,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "8180:9:26" + "src": "8194:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "8191:6:26" + "src": "8205:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "8176:3:26" + "src": "8190:3:40" }, "nodeType": "YulFunctionCall", - "src": "8176:22:26" + "src": "8190:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "8200:7:26" + "src": "8214:7:40" } ], "functionName": { "name": "abi_decode_t_uint24", "nodeType": "YulIdentifier", - "src": "8156:19:26" + "src": "8170:19:40" }, "nodeType": "YulFunctionCall", - "src": "8156:52:26" + "src": "8170:52:40" }, "variableNames": [ { "name": "value9", "nodeType": "YulIdentifier", - "src": "8146:6:26" + "src": "8160:6:40" } ] } @@ -7786,19 +6105,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "6681:9:26", + "src": "6693:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "6692:7:26", + "src": "6704:7:40", "type": "" } ], @@ -7806,84 +6125,84 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "6704:6:26", + "src": "6716:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "6712:6:26", + "src": "6724:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "6720:6:26", + "src": "6732:6:40", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "6728:6:26", + "src": "6740:6:40", "type": "" }, { "name": "value4", "nodeType": "YulTypedName", - "src": "6736:6:26", + "src": "6748:6:40", "type": "" }, { "name": "value5", "nodeType": "YulTypedName", - "src": "6744:6:26", + "src": "6756:6:40", "type": "" }, { "name": "value6", "nodeType": "YulTypedName", - "src": "6752:6:26", + "src": "6764:6:40", "type": "" }, { "name": "value7", "nodeType": "YulTypedName", - "src": "6760:6:26", + "src": "6772:6:40", "type": "" }, { "name": "value8", "nodeType": "YulTypedName", - "src": "6768:6:26", + "src": "6780:6:40", "type": "" }, { "name": "value9", "nodeType": "YulTypedName", - "src": "6776:6:26", + "src": "6788:6:40", "type": "" } ], - "src": "6544:1681:26" + "src": "6554:1685:40" }, { "body": { "nodeType": "YulBlock", - "src": "8276:32:26", + "src": "8290:32:40", "statements": [ { "nodeType": "YulAssignment", - "src": "8286:16:26", + "src": "8300:16:40", "value": { "name": "value", "nodeType": "YulIdentifier", - "src": "8297:5:26" + "src": "8311:5:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "8286:7:26" + "src": "8300:7:40" } ] } @@ -7895,7 +6214,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "8258:5:26", + "src": "8272:5:40", "type": "" } ], @@ -7903,16 +6222,16 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "8268:7:26", + "src": "8282:7:40", "type": "" } ], - "src": "8231:77:26" + "src": "8245:77:40" }, { "body": { "nodeType": "YulBlock", - "src": "8379:53:26", + "src": "8393:53:40", "statements": [ { "expression": { @@ -7920,35 +6239,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "8396:3:26" + "src": "8410:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "8419:5:26" + "src": "8433:5:40" } ], "functionName": { "name": "cleanup_t_bytes32", "nodeType": "YulIdentifier", - "src": "8401:17:26" + "src": "8415:17:40" }, "nodeType": "YulFunctionCall", - "src": "8401:24:26" + "src": "8415:24:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "8389:6:26" + "src": "8403:6:40" }, "nodeType": "YulFunctionCall", - "src": "8389:37:26" + "src": "8403:37:40" }, "nodeType": "YulExpressionStatement", - "src": "8389:37:26" + "src": "8403:37:40" } ] }, @@ -7958,37 +6277,37 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "8367:5:26", + "src": "8381:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "8374:3:26", + "src": "8388:3:40", "type": "" } ], - "src": "8314:118:26" + "src": "8328:118:40" }, { "body": { "nodeType": "YulBlock", - "src": "8536:124:26", + "src": "8550:124:40", "statements": [ { "nodeType": "YulAssignment", - "src": "8546:26:26", + "src": "8560:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "8558:9:26" + "src": "8572:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8569:2:26", + "src": "8583:2:40", "type": "", "value": "32" } @@ -7996,16 +6315,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "8554:3:26" + "src": "8568:3:40" }, "nodeType": "YulFunctionCall", - "src": "8554:18:26" + "src": "8568:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "8546:4:26" + "src": "8560:4:40" } ] }, @@ -8015,19 +6334,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "8626:6:26" + "src": "8640:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "8639:9:26" + "src": "8653:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8650:1:26", + "src": "8664:1:40", "type": "", "value": "0" } @@ -8035,22 +6354,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "8635:3:26" + "src": "8649:3:40" }, "nodeType": "YulFunctionCall", - "src": "8635:17:26" + "src": "8649:17:40" } ], "functionName": { "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", "nodeType": "YulIdentifier", - "src": "8582:43:26" + "src": "8596:43:40" }, "nodeType": "YulFunctionCall", - "src": "8582:71:26" + "src": "8596:71:40" }, "nodeType": "YulExpressionStatement", - "src": "8582:71:26" + "src": "8596:71:40" } ] }, @@ -8060,13 +6379,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "8508:9:26", + "src": "8522:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "8520:6:26", + "src": "8534:6:40", "type": "" } ], @@ -8074,21 +6393,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "8531:4:26", + "src": "8545:4:40", "type": "" } ], - "src": "8438:222:26" + "src": "8452:222:40" }, { "body": { "nodeType": "YulBlock", - "src": "8709:79:26", + "src": "8723:79:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "8766:16:26", + "src": "8780:16:40", "statements": [ { "expression": { @@ -8096,14 +6415,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8775:1:26", + "src": "8789:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8778:1:26", + "src": "8792:1:40", "type": "", "value": "0" } @@ -8111,13 +6430,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "8768:6:26" + "src": "8782:6:40" }, "nodeType": "YulFunctionCall", - "src": "8768:12:26" + "src": "8782:12:40" }, "nodeType": "YulExpressionStatement", - "src": "8768:12:26" + "src": "8782:12:40" } ] }, @@ -8128,44 +6447,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "8732:5:26" + "src": "8746:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "8757:5:26" + "src": "8771:5:40" } ], "functionName": { "name": "cleanup_t_bytes32", "nodeType": "YulIdentifier", - "src": "8739:17:26" + "src": "8753:17:40" }, "nodeType": "YulFunctionCall", - "src": "8739:24:26" + "src": "8753:24:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "8729:2:26" + "src": "8743:2:40" }, "nodeType": "YulFunctionCall", - "src": "8729:35:26" + "src": "8743:35:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "8722:6:26" + "src": "8736:6:40" }, "nodeType": "YulFunctionCall", - "src": "8722:43:26" + "src": "8736:43:40" }, "nodeType": "YulIf", - "src": "8719:63:26" + "src": "8733:63:40" } ] }, @@ -8175,41 +6494,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "8702:5:26", + "src": "8716:5:40", "type": "" } ], - "src": "8666:122:26" + "src": "8680:122:40" }, { "body": { "nodeType": "YulBlock", - "src": "8846:87:26", + "src": "8860:87:40", "statements": [ { "nodeType": "YulAssignment", - "src": "8856:29:26", + "src": "8870:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "8878:6:26" + "src": "8892:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "8865:12:26" + "src": "8879:12:40" }, "nodeType": "YulFunctionCall", - "src": "8865:20:26" + "src": "8879:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "8856:5:26" + "src": "8870:5:40" } ] }, @@ -8219,19 +6538,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "8921:5:26" + "src": "8935:5:40" } ], "functionName": { "name": "validator_revert_t_bytes32", "nodeType": "YulIdentifier", - "src": "8894:26:26" + "src": "8908:26:40" }, "nodeType": "YulFunctionCall", - "src": "8894:33:26" + "src": "8908:33:40" }, "nodeType": "YulExpressionStatement", - "src": "8894:33:26" + "src": "8908:33:40" } ] }, @@ -8241,13 +6560,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "8824:6:26", + "src": "8838:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "8832:3:26", + "src": "8846:3:40", "type": "" } ], @@ -8255,21 +6574,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "8840:5:26", + "src": "8854:5:40", "type": "" } ], - "src": "8794:139:26" + "src": "8808:139:40" }, { "body": { "nodeType": "YulBlock", - "src": "9005:263:26", + "src": "9019:263:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "9051:83:26", + "src": "9065:83:40", "statements": [ { "expression": { @@ -8277,13 +6596,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "9053:77:26" + "src": "9067:77:40" }, "nodeType": "YulFunctionCall", - "src": "9053:79:26" + "src": "9067:79:40" }, "nodeType": "YulExpressionStatement", - "src": "9053:79:26" + "src": "9067:79:40" } ] }, @@ -8294,26 +6613,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "9026:7:26" + "src": "9040:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9035:9:26" + "src": "9049:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "9022:3:26" + "src": "9036:3:40" }, "nodeType": "YulFunctionCall", - "src": "9022:23:26" + "src": "9036:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "9047:2:26", + "src": "9061:2:40", "type": "", "value": "32" } @@ -8321,25 +6640,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "9018:3:26" + "src": "9032:3:40" }, "nodeType": "YulFunctionCall", - "src": "9018:32:26" + "src": "9032:32:40" }, "nodeType": "YulIf", - "src": "9015:119:26" + "src": "9029:119:40" }, { "nodeType": "YulBlock", - "src": "9144:117:26", + "src": "9158:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "9159:15:26", + "src": "9173:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "9173:1:26", + "src": "9187:1:40", "type": "", "value": "0" }, @@ -8347,14 +6666,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "9163:6:26", + "src": "9177:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "9188:63:26", + "src": "9202:63:40", "value": { "arguments": [ { @@ -8362,41 +6681,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9223:9:26" + "src": "9237:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "9234:6:26" + "src": "9248:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "9219:3:26" + "src": "9233:3:40" }, "nodeType": "YulFunctionCall", - "src": "9219:22:26" + "src": "9233:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "9243:7:26" + "src": "9257:7:40" } ], "functionName": { "name": "abi_decode_t_bytes32", "nodeType": "YulIdentifier", - "src": "9198:20:26" + "src": "9212:20:40" }, "nodeType": "YulFunctionCall", - "src": "9198:53:26" + "src": "9212:53:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "9188:6:26" + "src": "9202:6:40" } ] } @@ -8410,13 +6729,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "8975:9:26", + "src": "8989:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "8986:7:26", + "src": "9000:7:40", "type": "" } ], @@ -8424,21 +6743,21 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "8998:6:26", + "src": "9012:6:40", "type": "" } ], - "src": "8939:329:26" + "src": "8953:329:40" }, { "body": { "nodeType": "YulBlock", - "src": "9354:277:26", + "src": "9369:278:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "9400:83:26", + "src": "9415:83:40", "statements": [ { "expression": { @@ -8446,13 +6765,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "9402:77:26" + "src": "9417:77:40" }, "nodeType": "YulFunctionCall", - "src": "9402:79:26" + "src": "9417:79:40" }, "nodeType": "YulExpressionStatement", - "src": "9402:79:26" + "src": "9417:79:40" } ] }, @@ -8463,26 +6782,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "9375:7:26" + "src": "9390:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9384:9:26" + "src": "9399:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "9371:3:26" + "src": "9386:3:40" }, "nodeType": "YulFunctionCall", - "src": "9371:23:26" + "src": "9386:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "9396:2:26", + "src": "9411:2:40", "type": "", "value": "32" } @@ -8490,25 +6809,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "9367:3:26" + "src": "9382:3:40" }, "nodeType": "YulFunctionCall", - "src": "9367:32:26" + "src": "9382:32:40" }, "nodeType": "YulIf", - "src": "9364:119:26" + "src": "9379:119:40" }, { "nodeType": "YulBlock", - "src": "9493:131:26", + "src": "9508:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "9508:15:26", + "src": "9523:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "9522:1:26", + "src": "9537:1:40", "type": "", "value": "0" }, @@ -8516,14 +6835,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "9512:6:26", + "src": "9527:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "9537:77:26", + "src": "9552:78:40", "value": { "arguments": [ { @@ -8531,41 +6850,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9586:9:26" + "src": "9602:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "9597:6:26" + "src": "9613:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "9582:3:26" + "src": "9598:3:40" }, "nodeType": "YulFunctionCall", - "src": "9582:22:26" + "src": "9598:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "9606:7:26" + "src": "9622:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "9547:34:26" + "src": "9562:35:40" }, "nodeType": "YulFunctionCall", - "src": "9547:67:26" + "src": "9562:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "9537:6:26" + "src": "9552:6:40" } ] } @@ -8573,19 +6892,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "9324:9:26", + "src": "9339:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "9335:7:26", + "src": "9350:7:40", "type": "" } ], @@ -8593,21 +6912,21 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "9347:6:26", + "src": "9362:6:40", "type": "" } ], - "src": "9274:357:26" + "src": "9288:359:40" }, { "body": { "nodeType": "YulBlock", - "src": "9764:546:26", + "src": "9782:548:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "9810:83:26", + "src": "9828:83:40", "statements": [ { "expression": { @@ -8615,13 +6934,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "9812:77:26" + "src": "9830:77:40" }, "nodeType": "YulFunctionCall", - "src": "9812:79:26" + "src": "9830:79:40" }, "nodeType": "YulExpressionStatement", - "src": "9812:79:26" + "src": "9830:79:40" } ] }, @@ -8632,26 +6951,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "9785:7:26" + "src": "9803:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9794:9:26" + "src": "9812:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "9781:3:26" + "src": "9799:3:40" }, "nodeType": "YulFunctionCall", - "src": "9781:23:26" + "src": "9799:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "9806:2:26", + "src": "9824:2:40", "type": "", "value": "96" } @@ -8659,25 +6978,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "9777:3:26" + "src": "9795:3:40" }, "nodeType": "YulFunctionCall", - "src": "9777:32:26" + "src": "9795:32:40" }, "nodeType": "YulIf", - "src": "9774:119:26" + "src": "9792:119:40" }, { "nodeType": "YulBlock", - "src": "9903:131:26", + "src": "9921:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "9918:15:26", + "src": "9936:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "9932:1:26", + "src": "9950:1:40", "type": "", "value": "0" }, @@ -8685,14 +7004,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "9922:6:26", + "src": "9940:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "9947:77:26", + "src": "9965:78:40", "value": { "arguments": [ { @@ -8700,41 +7019,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "9996:9:26" + "src": "10015:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "10007:6:26" + "src": "10026:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "9992:3:26" + "src": "10011:3:40" }, "nodeType": "YulFunctionCall", - "src": "9992:22:26" + "src": "10011:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "10016:7:26" + "src": "10035:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "9957:34:26" + "src": "9975:35:40" }, "nodeType": "YulFunctionCall", - "src": "9957:67:26" + "src": "9975:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "9947:6:26" + "src": "9965:6:40" } ] } @@ -8742,15 +7061,15 @@ }, { "nodeType": "YulBlock", - "src": "10044:132:26", + "src": "10063:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "10059:16:26", + "src": "10078:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "10073:2:26", + "src": "10092:2:40", "type": "", "value": "32" }, @@ -8758,14 +7077,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "10063:6:26", + "src": "10082:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "10089:77:26", + "src": "10108:78:40", "value": { "arguments": [ { @@ -8773,41 +7092,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "10138:9:26" + "src": "10158:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "10149:6:26" + "src": "10169:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "10134:3:26" + "src": "10154:3:40" }, "nodeType": "YulFunctionCall", - "src": "10134:22:26" + "src": "10154:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "10158:7:26" + "src": "10178:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "10099:34:26" + "src": "10118:35:40" }, "nodeType": "YulFunctionCall", - "src": "10099:67:26" + "src": "10118:68:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "10089:6:26" + "src": "10108:6:40" } ] } @@ -8815,15 +7134,15 @@ }, { "nodeType": "YulBlock", - "src": "10186:117:26", + "src": "10206:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "10201:16:26", + "src": "10221:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "10215:2:26", + "src": "10235:2:40", "type": "", "value": "64" }, @@ -8831,14 +7150,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "10205:6:26", + "src": "10225:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "10231:62:26", + "src": "10251:62:40", "value": { "arguments": [ { @@ -8846,41 +7165,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "10265:9:26" + "src": "10285:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "10276:6:26" + "src": "10296:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "10261:3:26" + "src": "10281:3:40" }, "nodeType": "YulFunctionCall", - "src": "10261:22:26" + "src": "10281:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "10285:7:26" + "src": "10305:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "10241:19:26" + "src": "10261:19:40" }, "nodeType": "YulFunctionCall", - "src": "10241:52:26" + "src": "10261:52:40" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "10231:6:26" + "src": "10251:6:40" } ] } @@ -8888,19 +7207,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "9718:9:26", + "src": "9736:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "9729:7:26", + "src": "9747:7:40", "type": "" } ], @@ -8908,33 +7227,33 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "9741:6:26", + "src": "9759:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "9749:6:26", + "src": "9767:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "9757:6:26", + "src": "9775:6:40", "type": "" } ], - "src": "9637:673:26" + "src": "9653:677:40" }, { "body": { "nodeType": "YulBlock", - "src": "10359:79:26", + "src": "10379:79:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "10416:16:26", + "src": "10436:16:40", "statements": [ { "expression": { @@ -8942,14 +7261,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "10425:1:26", + "src": "10445:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "10428:1:26", + "src": "10448:1:40", "type": "", "value": "0" } @@ -8957,13 +7276,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "10418:6:26" + "src": "10438:6:40" }, "nodeType": "YulFunctionCall", - "src": "10418:12:26" + "src": "10438:12:40" }, "nodeType": "YulExpressionStatement", - "src": "10418:12:26" + "src": "10438:12:40" } ] }, @@ -8974,44 +7293,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "10382:5:26" + "src": "10402:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "10407:5:26" + "src": "10427:5:40" } ], "functionName": { "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "10389:17:26" + "src": "10409:17:40" }, "nodeType": "YulFunctionCall", - "src": "10389:24:26" + "src": "10409:24:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "10379:2:26" + "src": "10399:2:40" }, "nodeType": "YulFunctionCall", - "src": "10379:35:26" + "src": "10399:35:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "10372:6:26" + "src": "10392:6:40" }, "nodeType": "YulFunctionCall", - "src": "10372:43:26" + "src": "10392:43:40" }, "nodeType": "YulIf", - "src": "10369:63:26" + "src": "10389:63:40" } ] }, @@ -9021,41 +7340,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "10352:5:26", + "src": "10372:5:40", "type": "" } ], - "src": "10316:122:26" + "src": "10336:122:40" }, { "body": { "nodeType": "YulBlock", - "src": "10496:87:26", + "src": "10516:87:40", "statements": [ { "nodeType": "YulAssignment", - "src": "10506:29:26", + "src": "10526:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "10528:6:26" + "src": "10548:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "10515:12:26" + "src": "10535:12:40" }, "nodeType": "YulFunctionCall", - "src": "10515:20:26" + "src": "10535:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "10506:5:26" + "src": "10526:5:40" } ] }, @@ -9065,19 +7384,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "10571:5:26" + "src": "10591:5:40" } ], "functionName": { "name": "validator_revert_t_address", "nodeType": "YulIdentifier", - "src": "10544:26:26" + "src": "10564:26:40" }, "nodeType": "YulFunctionCall", - "src": "10544:33:26" + "src": "10564:33:40" }, "nodeType": "YulExpressionStatement", - "src": "10544:33:26" + "src": "10564:33:40" } ] }, @@ -9087,13 +7406,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "10474:6:26", + "src": "10494:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "10482:3:26", + "src": "10502:3:40", "type": "" } ], @@ -9101,21 +7420,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "10490:5:26", + "src": "10510:5:40", "type": "" } ], - "src": "10444:139:26" + "src": "10464:139:40" }, { "body": { "nodeType": "YulBlock", - "src": "10672:391:26", + "src": "10692:391:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "10718:83:26", + "src": "10738:83:40", "statements": [ { "expression": { @@ -9123,13 +7442,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "10720:77:26" + "src": "10740:77:40" }, "nodeType": "YulFunctionCall", - "src": "10720:79:26" + "src": "10740:79:40" }, "nodeType": "YulExpressionStatement", - "src": "10720:79:26" + "src": "10740:79:40" } ] }, @@ -9140,26 +7459,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "10693:7:26" + "src": "10713:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "10702:9:26" + "src": "10722:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "10689:3:26" + "src": "10709:3:40" }, "nodeType": "YulFunctionCall", - "src": "10689:23:26" + "src": "10709:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "10714:2:26", + "src": "10734:2:40", "type": "", "value": "64" } @@ -9167,25 +7486,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "10685:3:26" + "src": "10705:3:40" }, "nodeType": "YulFunctionCall", - "src": "10685:32:26" + "src": "10705:32:40" }, "nodeType": "YulIf", - "src": "10682:119:26" + "src": "10702:119:40" }, { "nodeType": "YulBlock", - "src": "10811:117:26", + "src": "10831:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "10826:15:26", + "src": "10846:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "10840:1:26", + "src": "10860:1:40", "type": "", "value": "0" }, @@ -9193,14 +7512,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "10830:6:26", + "src": "10850:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "10855:63:26", + "src": "10875:63:40", "value": { "arguments": [ { @@ -9208,41 +7527,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "10890:9:26" + "src": "10910:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "10901:6:26" + "src": "10921:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "10886:3:26" + "src": "10906:3:40" }, "nodeType": "YulFunctionCall", - "src": "10886:22:26" + "src": "10906:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "10910:7:26" + "src": "10930:7:40" } ], "functionName": { "name": "abi_decode_t_bytes32", "nodeType": "YulIdentifier", - "src": "10865:20:26" + "src": "10885:20:40" }, "nodeType": "YulFunctionCall", - "src": "10865:53:26" + "src": "10885:53:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "10855:6:26" + "src": "10875:6:40" } ] } @@ -9250,15 +7569,15 @@ }, { "nodeType": "YulBlock", - "src": "10938:118:26", + "src": "10958:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "10953:16:26", + "src": "10973:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "10967:2:26", + "src": "10987:2:40", "type": "", "value": "32" }, @@ -9266,14 +7585,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "10957:6:26", + "src": "10977:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "10983:63:26", + "src": "11003:63:40", "value": { "arguments": [ { @@ -9281,41 +7600,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "11018:9:26" + "src": "11038:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "11029:6:26" + "src": "11049:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "11014:3:26" + "src": "11034:3:40" }, "nodeType": "YulFunctionCall", - "src": "11014:22:26" + "src": "11034:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "11038:7:26" + "src": "11058:7:40" } ], "functionName": { "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "10993:20:26" + "src": "11013:20:40" }, "nodeType": "YulFunctionCall", - "src": "10993:53:26" + "src": "11013:53:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "10983:6:26" + "src": "11003:6:40" } ] } @@ -9329,13 +7648,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "10634:9:26", + "src": "10654:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "10645:7:26", + "src": "10665:7:40", "type": "" } ], @@ -9343,27 +7662,27 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "10657:6:26", + "src": "10677:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "10665:6:26", + "src": "10685:6:40", "type": "" } ], - "src": "10589:474:26" + "src": "10609:474:40" }, { "body": { "nodeType": "YulBlock", - "src": "11109:76:26", + "src": "11129:76:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "11163:16:26", + "src": "11183:16:40", "statements": [ { "expression": { @@ -9371,14 +7690,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "11172:1:26", + "src": "11192:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "11175:1:26", + "src": "11195:1:40", "type": "", "value": "0" } @@ -9386,13 +7705,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "11165:6:26" + "src": "11185:6:40" }, "nodeType": "YulFunctionCall", - "src": "11165:12:26" + "src": "11185:12:40" }, "nodeType": "YulExpressionStatement", - "src": "11165:12:26" + "src": "11185:12:40" } ] }, @@ -9403,44 +7722,44 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "11132:5:26" + "src": "11152:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "11154:5:26" + "src": "11174:5:40" } ], "functionName": { "name": "cleanup_t_bool", "nodeType": "YulIdentifier", - "src": "11139:14:26" + "src": "11159:14:40" }, "nodeType": "YulFunctionCall", - "src": "11139:21:26" + "src": "11159:21:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "11129:2:26" + "src": "11149:2:40" }, "nodeType": "YulFunctionCall", - "src": "11129:32:26" + "src": "11149:32:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "11122:6:26" + "src": "11142:6:40" }, "nodeType": "YulFunctionCall", - "src": "11122:40:26" + "src": "11142:40:40" }, "nodeType": "YulIf", - "src": "11119:60:26" + "src": "11139:60:40" } ] }, @@ -9450,41 +7769,41 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "11102:5:26", + "src": "11122:5:40", "type": "" } ], - "src": "11069:116:26" + "src": "11089:116:40" }, { "body": { "nodeType": "YulBlock", - "src": "11240:84:26", + "src": "11260:84:40", "statements": [ { "nodeType": "YulAssignment", - "src": "11250:29:26", + "src": "11270:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "11272:6:26" + "src": "11292:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "11259:12:26" + "src": "11279:12:40" }, "nodeType": "YulFunctionCall", - "src": "11259:20:26" + "src": "11279:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "11250:5:26" + "src": "11270:5:40" } ] }, @@ -9494,19 +7813,19 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "11312:5:26" + "src": "11332:5:40" } ], "functionName": { "name": "validator_revert_t_bool", "nodeType": "YulIdentifier", - "src": "11288:23:26" + "src": "11308:23:40" }, "nodeType": "YulFunctionCall", - "src": "11288:30:26" + "src": "11308:30:40" }, "nodeType": "YulExpressionStatement", - "src": "11288:30:26" + "src": "11308:30:40" } ] }, @@ -9516,13 +7835,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "11218:6:26", + "src": "11238:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "11226:3:26", + "src": "11246:3:40", "type": "" } ], @@ -9530,21 +7849,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "11234:5:26", + "src": "11254:5:40", "type": "" } ], - "src": "11191:133:26" + "src": "11211:133:40" }, { "body": { "nodeType": "YulBlock", - "src": "11521:1282:26", + "src": "11541:1282:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "11568:83:26", + "src": "11588:83:40", "statements": [ { "expression": { @@ -9552,13 +7871,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "11570:77:26" + "src": "11590:77:40" }, "nodeType": "YulFunctionCall", - "src": "11570:79:26" + "src": "11590:79:40" }, "nodeType": "YulExpressionStatement", - "src": "11570:79:26" + "src": "11590:79:40" } ] }, @@ -9569,26 +7888,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "11542:7:26" + "src": "11562:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "11551:9:26" + "src": "11571:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "11538:3:26" + "src": "11558:3:40" }, "nodeType": "YulFunctionCall", - "src": "11538:23:26" + "src": "11558:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "11563:3:26", + "src": "11583:3:40", "type": "", "value": "288" } @@ -9596,25 +7915,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "11534:3:26" + "src": "11554:3:40" }, "nodeType": "YulFunctionCall", - "src": "11534:33:26" + "src": "11554:33:40" }, "nodeType": "YulIf", - "src": "11531:120:26" + "src": "11551:120:40" }, { "nodeType": "YulBlock", - "src": "11661:116:26", + "src": "11681:116:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "11676:15:26", + "src": "11696:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "11690:1:26", + "src": "11710:1:40", "type": "", "value": "0" }, @@ -9622,14 +7941,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "11680:6:26", + "src": "11700:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "11705:62:26", + "src": "11725:62:40", "value": { "arguments": [ { @@ -9637,41 +7956,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "11739:9:26" + "src": "11759:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "11750:6:26" + "src": "11770:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "11735:3:26" + "src": "11755:3:40" }, "nodeType": "YulFunctionCall", - "src": "11735:22:26" + "src": "11755:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "11759:7:26" + "src": "11779:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "11715:19:26" + "src": "11735:19:40" }, "nodeType": "YulFunctionCall", - "src": "11715:52:26" + "src": "11735:52:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "11705:6:26" + "src": "11725:6:40" } ] } @@ -9679,15 +7998,15 @@ }, { "nodeType": "YulBlock", - "src": "11787:117:26", + "src": "11807:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "11802:16:26", + "src": "11822:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "11816:2:26", + "src": "11836:2:40", "type": "", "value": "32" }, @@ -9695,14 +8014,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "11806:6:26", + "src": "11826:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "11832:62:26", + "src": "11852:62:40", "value": { "arguments": [ { @@ -9710,41 +8029,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "11866:9:26" + "src": "11886:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "11877:6:26" + "src": "11897:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "11862:3:26" + "src": "11882:3:40" }, "nodeType": "YulFunctionCall", - "src": "11862:22:26" + "src": "11882:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "11886:7:26" + "src": "11906:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "11842:19:26" + "src": "11862:19:40" }, "nodeType": "YulFunctionCall", - "src": "11842:52:26" + "src": "11862:52:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "11832:6:26" + "src": "11852:6:40" } ] } @@ -9752,15 +8071,15 @@ }, { "nodeType": "YulBlock", - "src": "11914:117:26", + "src": "11934:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "11929:16:26", + "src": "11949:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "11943:2:26", + "src": "11963:2:40", "type": "", "value": "64" }, @@ -9768,14 +8087,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "11933:6:26", + "src": "11953:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "11959:62:26", + "src": "11979:62:40", "value": { "arguments": [ { @@ -9783,41 +8102,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "11993:9:26" + "src": "12013:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "12004:6:26" + "src": "12024:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "11989:3:26" + "src": "12009:3:40" }, "nodeType": "YulFunctionCall", - "src": "11989:22:26" + "src": "12009:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "12013:7:26" + "src": "12033:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "11969:19:26" + "src": "11989:19:40" }, "nodeType": "YulFunctionCall", - "src": "11969:52:26" + "src": "11989:52:40" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "11959:6:26" + "src": "11979:6:40" } ] } @@ -9825,15 +8144,15 @@ }, { "nodeType": "YulBlock", - "src": "12041:117:26", + "src": "12061:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "12056:16:26", + "src": "12076:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "12070:2:26", + "src": "12090:2:40", "type": "", "value": "96" }, @@ -9841,14 +8160,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "12060:6:26", + "src": "12080:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "12086:62:26", + "src": "12106:62:40", "value": { "arguments": [ { @@ -9856,41 +8175,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "12120:9:26" + "src": "12140:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "12131:6:26" + "src": "12151:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "12116:3:26" + "src": "12136:3:40" }, "nodeType": "YulFunctionCall", - "src": "12116:22:26" + "src": "12136:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "12140:7:26" + "src": "12160:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "12096:19:26" + "src": "12116:19:40" }, "nodeType": "YulFunctionCall", - "src": "12096:52:26" + "src": "12116:52:40" }, "variableNames": [ { "name": "value3", "nodeType": "YulIdentifier", - "src": "12086:6:26" + "src": "12106:6:40" } ] } @@ -9898,15 +8217,15 @@ }, { "nodeType": "YulBlock", - "src": "12168:118:26", + "src": "12188:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "12183:17:26", + "src": "12203:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "12197:3:26", + "src": "12217:3:40", "type": "", "value": "128" }, @@ -9914,14 +8233,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "12187:6:26", + "src": "12207:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "12214:62:26", + "src": "12234:62:40", "value": { "arguments": [ { @@ -9929,41 +8248,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "12248:9:26" + "src": "12268:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "12259:6:26" + "src": "12279:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "12244:3:26" + "src": "12264:3:40" }, "nodeType": "YulFunctionCall", - "src": "12244:22:26" + "src": "12264:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "12268:7:26" + "src": "12288:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "12224:19:26" + "src": "12244:19:40" }, "nodeType": "YulFunctionCall", - "src": "12224:52:26" + "src": "12244:52:40" }, "variableNames": [ { "name": "value4", "nodeType": "YulIdentifier", - "src": "12214:6:26" + "src": "12234:6:40" } ] } @@ -9971,15 +8290,15 @@ }, { "nodeType": "YulBlock", - "src": "12296:118:26", + "src": "12316:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "12311:17:26", + "src": "12331:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "12325:3:26", + "src": "12345:3:40", "type": "", "value": "160" }, @@ -9987,14 +8306,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "12315:6:26", + "src": "12335:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "12342:62:26", + "src": "12362:62:40", "value": { "arguments": [ { @@ -10002,41 +8321,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "12376:9:26" + "src": "12396:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "12387:6:26" + "src": "12407:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "12372:3:26" + "src": "12392:3:40" }, "nodeType": "YulFunctionCall", - "src": "12372:22:26" + "src": "12392:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "12396:7:26" + "src": "12416:7:40" } ], "functionName": { "name": "abi_decode_t_uint24", "nodeType": "YulIdentifier", - "src": "12352:19:26" + "src": "12372:19:40" }, "nodeType": "YulFunctionCall", - "src": "12352:52:26" + "src": "12372:52:40" }, "variableNames": [ { "name": "value5", "nodeType": "YulIdentifier", - "src": "12342:6:26" + "src": "12362:6:40" } ] } @@ -10044,15 +8363,15 @@ }, { "nodeType": "YulBlock", - "src": "12424:118:26", + "src": "12444:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "12439:17:26", + "src": "12459:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "12453:3:26", + "src": "12473:3:40", "type": "", "value": "192" }, @@ -10060,14 +8379,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "12443:6:26", + "src": "12463:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "12470:62:26", + "src": "12490:62:40", "value": { "arguments": [ { @@ -10075,41 +8394,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "12504:9:26" + "src": "12524:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "12515:6:26" + "src": "12535:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "12500:3:26" + "src": "12520:3:40" }, "nodeType": "YulFunctionCall", - "src": "12500:22:26" + "src": "12520:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "12524:7:26" + "src": "12544:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "12480:19:26" + "src": "12500:19:40" }, "nodeType": "YulFunctionCall", - "src": "12480:52:26" + "src": "12500:52:40" }, "variableNames": [ { "name": "value6", "nodeType": "YulIdentifier", - "src": "12470:6:26" + "src": "12490:6:40" } ] } @@ -10117,15 +8436,15 @@ }, { "nodeType": "YulBlock", - "src": "12552:118:26", + "src": "12572:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "12567:17:26", + "src": "12587:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "12581:3:26", + "src": "12601:3:40", "type": "", "value": "224" }, @@ -10133,14 +8452,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "12571:6:26", + "src": "12591:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "12598:62:26", + "src": "12618:62:40", "value": { "arguments": [ { @@ -10148,41 +8467,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "12632:9:26" + "src": "12652:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "12643:6:26" + "src": "12663:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "12628:3:26" + "src": "12648:3:40" }, "nodeType": "YulFunctionCall", - "src": "12628:22:26" + "src": "12648:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "12652:7:26" + "src": "12672:7:40" } ], "functionName": { "name": "abi_decode_t_uint24", "nodeType": "YulIdentifier", - "src": "12608:19:26" + "src": "12628:19:40" }, "nodeType": "YulFunctionCall", - "src": "12608:52:26" + "src": "12628:52:40" }, "variableNames": [ { "name": "value7", "nodeType": "YulIdentifier", - "src": "12598:6:26" + "src": "12618:6:40" } ] } @@ -10190,15 +8509,15 @@ }, { "nodeType": "YulBlock", - "src": "12680:116:26", + "src": "12700:116:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "12695:17:26", + "src": "12715:17:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "12709:3:26", + "src": "12729:3:40", "type": "", "value": "256" }, @@ -10206,14 +8525,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "12699:6:26", + "src": "12719:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "12726:60:26", + "src": "12746:60:40", "value": { "arguments": [ { @@ -10221,41 +8540,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "12758:9:26" + "src": "12778:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "12769:6:26" + "src": "12789:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "12754:3:26" + "src": "12774:3:40" }, "nodeType": "YulFunctionCall", - "src": "12754:22:26" + "src": "12774:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "12778:7:26" + "src": "12798:7:40" } ], "functionName": { "name": "abi_decode_t_bool", "nodeType": "YulIdentifier", - "src": "12736:17:26" + "src": "12756:17:40" }, "nodeType": "YulFunctionCall", - "src": "12736:50:26" + "src": "12756:50:40" }, "variableNames": [ { "name": "value8", "nodeType": "YulIdentifier", - "src": "12726:6:26" + "src": "12746:6:40" } ] } @@ -10269,13 +8588,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "11427:9:26", + "src": "11447:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "11438:7:26", + "src": "11458:7:40", "type": "" } ], @@ -10283,64 +8602,64 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "11450:6:26", + "src": "11470:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "11458:6:26", + "src": "11478:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "11466:6:26", + "src": "11486:6:40", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "11474:6:26", + "src": "11494:6:40", "type": "" }, { "name": "value4", "nodeType": "YulTypedName", - "src": "11482:6:26", + "src": "11502:6:40", "type": "" }, { "name": "value5", "nodeType": "YulTypedName", - "src": "11490:6:26", + "src": "11510:6:40", "type": "" }, { "name": "value6", "nodeType": "YulTypedName", - "src": "11498:6:26", + "src": "11518:6:40", "type": "" }, { "name": "value7", "nodeType": "YulTypedName", - "src": "11506:6:26", + "src": "11526:6:40", "type": "" }, { "name": "value8", "nodeType": "YulTypedName", - "src": "11514:6:26", + "src": "11534:6:40", "type": "" } ], - "src": "11330:1473:26" + "src": "11350:1473:40" }, { "body": { "nodeType": "YulBlock", - "src": "12898:28:26", + "src": "12918:28:40", "statements": [ { "expression": { @@ -10348,14 +8667,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "12915:1:26", + "src": "12935:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "12918:1:26", + "src": "12938:1:40", "type": "", "value": "0" } @@ -10363,24 +8682,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "12908:6:26" + "src": "12928:6:40" }, "nodeType": "YulFunctionCall", - "src": "12908:12:26" + "src": "12928:12:40" }, "nodeType": "YulExpressionStatement", - "src": "12908:12:26" + "src": "12928:12:40" } ] }, "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", "nodeType": "YulFunctionDefinition", - "src": "12809:117:26" + "src": "12829:117:40" }, { "body": { "nodeType": "YulBlock", - "src": "13021:28:26", + "src": "13041:28:40", "statements": [ { "expression": { @@ -10388,14 +8707,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "13038:1:26", + "src": "13058:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "13041:1:26", + "src": "13061:1:40", "type": "", "value": "0" } @@ -10403,24 +8722,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "13031:6:26" + "src": "13051:6:40" }, "nodeType": "YulFunctionCall", - "src": "13031:12:26" + "src": "13051:12:40" }, "nodeType": "YulExpressionStatement", - "src": "13031:12:26" + "src": "13051:12:40" } ] }, "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", "nodeType": "YulFunctionDefinition", - "src": "12932:117:26" + "src": "12952:117:40" }, { "body": { "nodeType": "YulBlock", - "src": "13144:28:26", + "src": "13164:28:40", "statements": [ { "expression": { @@ -10428,14 +8747,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "13161:1:26", + "src": "13181:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "13164:1:26", + "src": "13184:1:40", "type": "", "value": "0" } @@ -10443,29 +8762,29 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "13154:6:26" + "src": "13174:6:40" }, "nodeType": "YulFunctionCall", - "src": "13154:12:26" + "src": "13174:12:40" }, "nodeType": "YulExpressionStatement", - "src": "13154:12:26" + "src": "13174:12:40" } ] }, "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", "nodeType": "YulFunctionDefinition", - "src": "13055:117:26" + "src": "13075:117:40" }, { "body": { "nodeType": "YulBlock", - "src": "13265:478:26", + "src": "13285:478:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "13314:83:26", + "src": "13334:83:40", "statements": [ { "expression": { @@ -10473,13 +8792,13 @@ "functionName": { "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", "nodeType": "YulIdentifier", - "src": "13316:77:26" + "src": "13336:77:40" }, "nodeType": "YulFunctionCall", - "src": "13316:79:26" + "src": "13336:79:40" }, "nodeType": "YulExpressionStatement", - "src": "13316:79:26" + "src": "13336:79:40" } ] }, @@ -10492,12 +8811,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "13293:6:26" + "src": "13313:6:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "13301:4:26", + "src": "13321:4:40", "type": "", "value": "0x1f" } @@ -10505,68 +8824,68 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "13289:3:26" + "src": "13309:3:40" }, "nodeType": "YulFunctionCall", - "src": "13289:17:26" + "src": "13309:17:40" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "13308:3:26" + "src": "13328:3:40" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "13285:3:26" + "src": "13305:3:40" }, "nodeType": "YulFunctionCall", - "src": "13285:27:26" + "src": "13305:27:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "13278:6:26" + "src": "13298:6:40" }, "nodeType": "YulFunctionCall", - "src": "13278:35:26" + "src": "13298:35:40" }, "nodeType": "YulIf", - "src": "13275:122:26" + "src": "13295:122:40" }, { "nodeType": "YulAssignment", - "src": "13406:30:26", + "src": "13426:30:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "13429:6:26" + "src": "13449:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "13416:12:26" + "src": "13436:12:40" }, "nodeType": "YulFunctionCall", - "src": "13416:20:26" + "src": "13436:20:40" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "13406:6:26" + "src": "13426:6:40" } ] }, { "body": { "nodeType": "YulBlock", - "src": "13479:83:26", + "src": "13499:83:40", "statements": [ { "expression": { @@ -10574,13 +8893,13 @@ "functionName": { "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", "nodeType": "YulIdentifier", - "src": "13481:77:26" + "src": "13501:77:40" }, "nodeType": "YulFunctionCall", - "src": "13481:79:26" + "src": "13501:79:40" }, "nodeType": "YulExpressionStatement", - "src": "13481:79:26" + "src": "13501:79:40" } ] }, @@ -10589,12 +8908,12 @@ { "name": "length", "nodeType": "YulIdentifier", - "src": "13451:6:26" + "src": "13471:6:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "13459:18:26", + "src": "13479:18:40", "type": "", "value": "0xffffffffffffffff" } @@ -10602,28 +8921,28 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "13448:2:26" + "src": "13468:2:40" }, "nodeType": "YulFunctionCall", - "src": "13448:30:26" + "src": "13468:30:40" }, "nodeType": "YulIf", - "src": "13445:117:26" + "src": "13465:117:40" }, { "nodeType": "YulAssignment", - "src": "13571:29:26", + "src": "13591:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "13587:6:26" + "src": "13607:6:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "13595:4:26", + "src": "13615:4:40", "type": "", "value": "0x20" } @@ -10631,23 +8950,23 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "13583:3:26" + "src": "13603:3:40" }, "nodeType": "YulFunctionCall", - "src": "13583:17:26" + "src": "13603:17:40" }, "variableNames": [ { "name": "arrayPos", "nodeType": "YulIdentifier", - "src": "13571:8:26" + "src": "13591:8:40" } ] }, { "body": { "nodeType": "YulBlock", - "src": "13654:83:26", + "src": "13674:83:40", "statements": [ { "expression": { @@ -10655,13 +8974,13 @@ "functionName": { "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", "nodeType": "YulIdentifier", - "src": "13656:77:26" + "src": "13676:77:40" }, "nodeType": "YulFunctionCall", - "src": "13656:79:26" + "src": "13676:79:40" }, "nodeType": "YulExpressionStatement", - "src": "13656:79:26" + "src": "13676:79:40" } ] }, @@ -10672,19 +8991,19 @@ { "name": "arrayPos", "nodeType": "YulIdentifier", - "src": "13619:8:26" + "src": "13639:8:40" }, { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "13633:6:26" + "src": "13653:6:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "13641:4:26", + "src": "13661:4:40", "type": "", "value": "0x01" } @@ -10692,36 +9011,36 @@ "functionName": { "name": "mul", "nodeType": "YulIdentifier", - "src": "13629:3:26" + "src": "13649:3:40" }, "nodeType": "YulFunctionCall", - "src": "13629:17:26" + "src": "13649:17:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "13615:3:26" + "src": "13635:3:40" }, "nodeType": "YulFunctionCall", - "src": "13615:32:26" + "src": "13635:32:40" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "13649:3:26" + "src": "13669:3:40" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "13612:2:26" + "src": "13632:2:40" }, "nodeType": "YulFunctionCall", - "src": "13612:41:26" + "src": "13632:41:40" }, "nodeType": "YulIf", - "src": "13609:128:26" + "src": "13629:128:40" } ] }, @@ -10731,13 +9050,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "13232:6:26", + "src": "13252:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "13240:3:26", + "src": "13260:3:40", "type": "" } ], @@ -10745,27 +9064,27 @@ { "name": "arrayPos", "nodeType": "YulTypedName", - "src": "13248:8:26", + "src": "13268:8:40", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "13258:6:26", + "src": "13278:6:40", "type": "" } ], - "src": "13191:552:26" + "src": "13211:552:40" }, { "body": { "nodeType": "YulBlock", - "src": "13929:983:26", + "src": "13951:985:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "13976:83:26", + "src": "13998:83:40", "statements": [ { "expression": { @@ -10773,13 +9092,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "13978:77:26" + "src": "14000:77:40" }, "nodeType": "YulFunctionCall", - "src": "13978:79:26" + "src": "14000:79:40" }, "nodeType": "YulExpressionStatement", - "src": "13978:79:26" + "src": "14000:79:40" } ] }, @@ -10790,26 +9109,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "13950:7:26" + "src": "13972:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "13959:9:26" + "src": "13981:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "13946:3:26" + "src": "13968:3:40" }, "nodeType": "YulFunctionCall", - "src": "13946:23:26" + "src": "13968:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "13971:3:26", + "src": "13993:3:40", "type": "", "value": "160" } @@ -10817,25 +9136,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "13942:3:26" + "src": "13964:3:40" }, "nodeType": "YulFunctionCall", - "src": "13942:33:26" + "src": "13964:33:40" }, "nodeType": "YulIf", - "src": "13939:120:26" + "src": "13961:120:40" }, { "nodeType": "YulBlock", - "src": "14069:131:26", + "src": "14091:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14084:15:26", + "src": "14106:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14098:1:26", + "src": "14120:1:40", "type": "", "value": "0" }, @@ -10843,14 +9162,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14088:6:26", + "src": "14110:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14113:77:26", + "src": "14135:78:40", "value": { "arguments": [ { @@ -10858,41 +9177,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14162:9:26" + "src": "14185:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14173:6:26" + "src": "14196:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14158:3:26" + "src": "14181:3:40" }, "nodeType": "YulFunctionCall", - "src": "14158:22:26" + "src": "14181:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14182:7:26" + "src": "14205:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "14123:34:26" + "src": "14145:35:40" }, "nodeType": "YulFunctionCall", - "src": "14123:67:26" + "src": "14145:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "14113:6:26" + "src": "14135:6:40" } ] } @@ -10900,15 +9219,15 @@ }, { "nodeType": "YulBlock", - "src": "14210:132:26", + "src": "14233:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14225:16:26", + "src": "14248:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14239:2:26", + "src": "14262:2:40", "type": "", "value": "32" }, @@ -10916,14 +9235,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14229:6:26", + "src": "14252:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14255:77:26", + "src": "14278:78:40", "value": { "arguments": [ { @@ -10931,41 +9250,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14304:9:26" + "src": "14328:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14315:6:26" + "src": "14339:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14300:3:26" + "src": "14324:3:40" }, "nodeType": "YulFunctionCall", - "src": "14300:22:26" + "src": "14324:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14324:7:26" + "src": "14348:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "14265:34:26" + "src": "14288:35:40" }, "nodeType": "YulFunctionCall", - "src": "14265:67:26" + "src": "14288:68:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "14255:6:26" + "src": "14278:6:40" } ] } @@ -10973,15 +9292,15 @@ }, { "nodeType": "YulBlock", - "src": "14352:117:26", + "src": "14376:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14367:16:26", + "src": "14391:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14381:2:26", + "src": "14405:2:40", "type": "", "value": "64" }, @@ -10989,14 +9308,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14371:6:26", + "src": "14395:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14397:62:26", + "src": "14421:62:40", "value": { "arguments": [ { @@ -11004,41 +9323,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14431:9:26" + "src": "14455:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14442:6:26" + "src": "14466:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14427:3:26" + "src": "14451:3:40" }, "nodeType": "YulFunctionCall", - "src": "14427:22:26" + "src": "14451:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14451:7:26" + "src": "14475:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "14407:19:26" + "src": "14431:19:40" }, "nodeType": "YulFunctionCall", - "src": "14407:52:26" + "src": "14431:52:40" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "14397:6:26" + "src": "14421:6:40" } ] } @@ -11046,15 +9365,15 @@ }, { "nodeType": "YulBlock", - "src": "14479:118:26", + "src": "14503:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14494:16:26", + "src": "14518:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14508:2:26", + "src": "14532:2:40", "type": "", "value": "96" }, @@ -11062,14 +9381,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14498:6:26", + "src": "14522:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14524:63:26", + "src": "14548:63:40", "value": { "arguments": [ { @@ -11077,41 +9396,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14559:9:26" + "src": "14583:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14570:6:26" + "src": "14594:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14555:3:26" + "src": "14579:3:40" }, "nodeType": "YulFunctionCall", - "src": "14555:22:26" + "src": "14579:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14579:7:26" + "src": "14603:7:40" } ], "functionName": { "name": "abi_decode_t_bytes32", "nodeType": "YulIdentifier", - "src": "14534:20:26" + "src": "14558:20:40" }, "nodeType": "YulFunctionCall", - "src": "14534:53:26" + "src": "14558:53:40" }, "variableNames": [ { "name": "value3", "nodeType": "YulIdentifier", - "src": "14524:6:26" + "src": "14548:6:40" } ] } @@ -11119,11 +9438,11 @@ }, { "nodeType": "YulBlock", - "src": "14607:298:26", + "src": "14631:298:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14622:47:26", + "src": "14646:47:40", "value": { "arguments": [ { @@ -11131,12 +9450,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14653:9:26" + "src": "14677:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "14664:3:26", + "src": "14688:3:40", "type": "", "value": "128" } @@ -11144,25 +9463,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14649:3:26" + "src": "14673:3:40" }, "nodeType": "YulFunctionCall", - "src": "14649:19:26" + "src": "14673:19:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "14636:12:26" + "src": "14660:12:40" }, "nodeType": "YulFunctionCall", - "src": "14636:33:26" + "src": "14660:33:40" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "14626:6:26", + "src": "14650:6:40", "type": "" } ] @@ -11170,7 +9489,7 @@ { "body": { "nodeType": "YulBlock", - "src": "14716:83:26", + "src": "14740:83:40", "statements": [ { "expression": { @@ -11178,13 +9497,13 @@ "functionName": { "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulIdentifier", - "src": "14718:77:26" + "src": "14742:77:40" }, "nodeType": "YulFunctionCall", - "src": "14718:79:26" + "src": "14742:79:40" }, "nodeType": "YulExpressionStatement", - "src": "14718:79:26" + "src": "14742:79:40" } ] }, @@ -11193,12 +9512,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "14688:6:26" + "src": "14712:6:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "14696:18:26", + "src": "14720:18:40", "type": "", "value": "0xffffffffffffffff" } @@ -11206,17 +9525,17 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "14685:2:26" + "src": "14709:2:40" }, "nodeType": "YulFunctionCall", - "src": "14685:30:26" + "src": "14709:30:40" }, "nodeType": "YulIf", - "src": "14682:117:26" + "src": "14706:117:40" }, { "nodeType": "YulAssignment", - "src": "14813:82:26", + "src": "14837:82:40", "value": { "arguments": [ { @@ -11224,46 +9543,46 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14867:9:26" + "src": "14891:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14878:6:26" + "src": "14902:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14863:3:26" + "src": "14887:3:40" }, "nodeType": "YulFunctionCall", - "src": "14863:22:26" + "src": "14887:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14887:7:26" + "src": "14911:7:40" } ], "functionName": { "name": "abi_decode_t_bytes_calldata_ptr", "nodeType": "YulIdentifier", - "src": "14831:31:26" + "src": "14855:31:40" }, "nodeType": "YulFunctionCall", - "src": "14831:64:26" + "src": "14855:64:40" }, "variableNames": [ { "name": "value4", "nodeType": "YulIdentifier", - "src": "14813:6:26" + "src": "14837:6:40" }, { "name": "value5", "nodeType": "YulIdentifier", - "src": "14821:6:26" + "src": "14845:6:40" } ] } @@ -11271,19 +9590,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_bytes32t_bytes_calldata_ptr", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bytes32t_bytes_calldata_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "13859:9:26", + "src": "13881:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "13870:7:26", + "src": "13892:7:40", "type": "" } ], @@ -11291,83 +9610,83 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "13882:6:26", + "src": "13904:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "13890:6:26", + "src": "13912:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "13898:6:26", + "src": "13920:6:40", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "13906:6:26", + "src": "13928:6:40", "type": "" }, { "name": "value4", "nodeType": "YulTypedName", - "src": "13914:6:26", + "src": "13936:6:40", "type": "" }, { "name": "value5", "nodeType": "YulTypedName", - "src": "13922:6:26", + "src": "13944:6:40", "type": "" } ], - "src": "13749:1163:26" + "src": "13769:1167:40" }, { "body": { "nodeType": "YulBlock", - "src": "14979:51:26", + "src": "15003:51:40", "statements": [ { "nodeType": "YulAssignment", - "src": "14989:35:26", + "src": "15013:35:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "15018:5:26" + "src": "15042:5:40" } ], "functionName": { "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "15000:17:26" + "src": "15024:17:40" }, "nodeType": "YulFunctionCall", - "src": "15000:24:26" + "src": "15024:24:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "14989:7:26" + "src": "15013:7:40" } ] } ] }, - "name": "cleanup_t_contract$_ILBPair_$6147", + "name": "cleanup_t_contract$_ILBPair_$7970", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "14961:5:26", + "src": "14985:5:40", "type": "" } ], @@ -11375,21 +9694,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "14971:7:26", + "src": "14995:7:40", "type": "" } ], - "src": "14918:112:26" + "src": "14942:112:40" }, { "body": { "nodeType": "YulBlock", - "src": "15095:95:26", + "src": "15119:95:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "15168:16:26", + "src": "15192:16:40", "statements": [ { "expression": { @@ -11397,14 +9716,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "15177:1:26", + "src": "15201:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "15180:1:26", + "src": "15204:1:40", "type": "", "value": "0" } @@ -11412,13 +9731,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "15170:6:26" + "src": "15194:6:40" }, "nodeType": "YulFunctionCall", - "src": "15170:12:26" + "src": "15194:12:40" }, "nodeType": "YulExpressionStatement", - "src": "15170:12:26" + "src": "15194:12:40" } ] }, @@ -11429,88 +9748,88 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "15118:5:26" + "src": "15142:5:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "15159:5:26" + "src": "15183:5:40" } ], "functionName": { - "name": "cleanup_t_contract$_ILBPair_$6147", + "name": "cleanup_t_contract$_ILBPair_$7970", "nodeType": "YulIdentifier", - "src": "15125:33:26" + "src": "15149:33:40" }, "nodeType": "YulFunctionCall", - "src": "15125:40:26" + "src": "15149:40:40" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "15115:2:26" + "src": "15139:2:40" }, "nodeType": "YulFunctionCall", - "src": "15115:51:26" + "src": "15139:51:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "15108:6:26" + "src": "15132:6:40" }, "nodeType": "YulFunctionCall", - "src": "15108:59:26" + "src": "15132:59:40" }, "nodeType": "YulIf", - "src": "15105:79:26" + "src": "15129:79:40" } ] }, - "name": "validator_revert_t_contract$_ILBPair_$6147", + "name": "validator_revert_t_contract$_ILBPair_$7970", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "15088:5:26", + "src": "15112:5:40", "type": "" } ], - "src": "15036:154:26" + "src": "15060:154:40" }, { "body": { "nodeType": "YulBlock", - "src": "15264:103:26", + "src": "15288:103:40", "statements": [ { "nodeType": "YulAssignment", - "src": "15274:29:26", + "src": "15298:29:40", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "15296:6:26" + "src": "15320:6:40" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "15283:12:26" + "src": "15307:12:40" }, "nodeType": "YulFunctionCall", - "src": "15283:20:26" + "src": "15307:20:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "15274:5:26" + "src": "15298:5:40" } ] }, @@ -11520,35 +9839,35 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "15355:5:26" + "src": "15379:5:40" } ], "functionName": { - "name": "validator_revert_t_contract$_ILBPair_$6147", + "name": "validator_revert_t_contract$_ILBPair_$7970", "nodeType": "YulIdentifier", - "src": "15312:42:26" + "src": "15336:42:40" }, "nodeType": "YulFunctionCall", - "src": "15312:49:26" + "src": "15336:49:40" }, "nodeType": "YulExpressionStatement", - "src": "15312:49:26" + "src": "15336:49:40" } ] }, - "name": "abi_decode_t_contract$_ILBPair_$6147", + "name": "abi_decode_t_contract$_ILBPair_$7970", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "15242:6:26", + "src": "15266:6:40", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "15250:3:26", + "src": "15274:3:40", "type": "" } ], @@ -11556,21 +9875,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "15258:5:26", + "src": "15282:5:40", "type": "" } ], - "src": "15196:171:26" + "src": "15220:171:40" }, { "body": { "nodeType": "YulBlock", - "src": "15455:279:26", + "src": "15479:279:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "15501:83:26", + "src": "15525:83:40", "statements": [ { "expression": { @@ -11578,13 +9897,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "15503:77:26" + "src": "15527:77:40" }, "nodeType": "YulFunctionCall", - "src": "15503:79:26" + "src": "15527:79:40" }, "nodeType": "YulExpressionStatement", - "src": "15503:79:26" + "src": "15527:79:40" } ] }, @@ -11595,26 +9914,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "15476:7:26" + "src": "15500:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "15485:9:26" + "src": "15509:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "15472:3:26" + "src": "15496:3:40" }, "nodeType": "YulFunctionCall", - "src": "15472:23:26" + "src": "15496:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "15497:2:26", + "src": "15521:2:40", "type": "", "value": "32" } @@ -11622,25 +9941,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "15468:3:26" + "src": "15492:3:40" }, "nodeType": "YulFunctionCall", - "src": "15468:32:26" + "src": "15492:32:40" }, "nodeType": "YulIf", - "src": "15465:119:26" + "src": "15489:119:40" }, { "nodeType": "YulBlock", - "src": "15594:133:26", + "src": "15618:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "15609:15:26", + "src": "15633:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "15623:1:26", + "src": "15647:1:40", "type": "", "value": "0" }, @@ -11648,14 +9967,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "15613:6:26", + "src": "15637:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "15638:79:26", + "src": "15662:79:40", "value": { "arguments": [ { @@ -11663,41 +9982,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "15689:9:26" + "src": "15713:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "15700:6:26" + "src": "15724:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "15685:3:26" + "src": "15709:3:40" }, "nodeType": "YulFunctionCall", - "src": "15685:22:26" + "src": "15709:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "15709:7:26" + "src": "15733:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBPair_$6147", + "name": "abi_decode_t_contract$_ILBPair_$7970", "nodeType": "YulIdentifier", - "src": "15648:36:26" + "src": "15672:36:40" }, "nodeType": "YulFunctionCall", - "src": "15648:69:26" + "src": "15672:69:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "15638:6:26" + "src": "15662:6:40" } ] } @@ -11705,19 +10024,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_ILBPair_$6147", + "name": "abi_decode_tuple_t_contract$_ILBPair_$7970", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "15425:9:26", + "src": "15449:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "15436:7:26", + "src": "15460:7:40", "type": "" } ], @@ -11725,16 +10044,16 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "15448:6:26", + "src": "15472:6:40", "type": "" } ], - "src": "15373:361:26" + "src": "15397:361:40" }, { "body": { "nodeType": "YulBlock", - "src": "15805:53:26", + "src": "15829:53:40", "statements": [ { "expression": { @@ -11742,35 +10061,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "15822:3:26" + "src": "15846:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "15845:5:26" + "src": "15869:5:40" } ], "functionName": { "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "15827:17:26" + "src": "15851:17:40" }, "nodeType": "YulFunctionCall", - "src": "15827:24:26" + "src": "15851:24:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "15815:6:26" + "src": "15839:6:40" }, "nodeType": "YulFunctionCall", - "src": "15815:37:26" + "src": "15839:37:40" }, "nodeType": "YulExpressionStatement", - "src": "15815:37:26" + "src": "15839:37:40" } ] }, @@ -11780,37 +10099,37 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "15793:5:26", + "src": "15817:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "15800:3:26", + "src": "15824:3:40", "type": "" } ], - "src": "15740:118:26" + "src": "15764:118:40" }, { "body": { "nodeType": "YulBlock", - "src": "15962:124:26", + "src": "15986:124:40", "statements": [ { "nodeType": "YulAssignment", - "src": "15972:26:26", + "src": "15996:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "15984:9:26" + "src": "16008:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "15995:2:26", + "src": "16019:2:40", "type": "", "value": "32" } @@ -11818,16 +10137,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "15980:3:26" + "src": "16004:3:40" }, "nodeType": "YulFunctionCall", - "src": "15980:18:26" + "src": "16004:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "15972:4:26" + "src": "15996:4:40" } ] }, @@ -11837,19 +10156,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "16052:6:26" + "src": "16076:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16065:9:26" + "src": "16089:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "16076:1:26", + "src": "16100:1:40", "type": "", "value": "0" } @@ -11857,22 +10176,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16061:3:26" + "src": "16085:3:40" }, "nodeType": "YulFunctionCall", - "src": "16061:17:26" + "src": "16085:17:40" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "16008:43:26" + "src": "16032:43:40" }, "nodeType": "YulFunctionCall", - "src": "16008:71:26" + "src": "16032:71:40" }, "nodeType": "YulExpressionStatement", - "src": "16008:71:26" + "src": "16032:71:40" } ] }, @@ -11882,13 +10201,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "15934:9:26", + "src": "15958:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "15946:6:26", + "src": "15970:6:40", "type": "" } ], @@ -11896,21 +10215,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "15957:4:26", + "src": "15981:4:40", "type": "" } ], - "src": "15864:222:26" + "src": "15888:222:40" }, { "body": { "nodeType": "YulBlock", - "src": "16171:387:26", + "src": "16195:387:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "16217:83:26", + "src": "16241:83:40", "statements": [ { "expression": { @@ -11918,13 +10237,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "16219:77:26" + "src": "16243:77:40" }, "nodeType": "YulFunctionCall", - "src": "16219:79:26" + "src": "16243:79:40" }, "nodeType": "YulExpressionStatement", - "src": "16219:79:26" + "src": "16243:79:40" } ] }, @@ -11935,26 +10254,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16192:7:26" + "src": "16216:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16201:9:26" + "src": "16225:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "16188:3:26" + "src": "16212:3:40" }, "nodeType": "YulFunctionCall", - "src": "16188:23:26" + "src": "16212:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "16213:2:26", + "src": "16237:2:40", "type": "", "value": "64" } @@ -11962,25 +10281,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "16184:3:26" + "src": "16208:3:40" }, "nodeType": "YulFunctionCall", - "src": "16184:32:26" + "src": "16208:32:40" }, "nodeType": "YulIf", - "src": "16181:119:26" + "src": "16205:119:40" }, { "nodeType": "YulBlock", - "src": "16310:116:26", + "src": "16334:116:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "16325:15:26", + "src": "16349:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "16339:1:26", + "src": "16363:1:40", "type": "", "value": "0" }, @@ -11988,14 +10307,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "16329:6:26", + "src": "16353:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "16354:62:26", + "src": "16378:62:40", "value": { "arguments": [ { @@ -12003,41 +10322,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16388:9:26" + "src": "16412:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "16399:6:26" + "src": "16423:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16384:3:26" + "src": "16408:3:40" }, "nodeType": "YulFunctionCall", - "src": "16384:22:26" + "src": "16408:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16408:7:26" + "src": "16432:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "16364:19:26" + "src": "16388:19:40" }, "nodeType": "YulFunctionCall", - "src": "16364:52:26" + "src": "16388:52:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "16354:6:26" + "src": "16378:6:40" } ] } @@ -12045,15 +10364,15 @@ }, { "nodeType": "YulBlock", - "src": "16436:115:26", + "src": "16460:115:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "16451:16:26", + "src": "16475:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "16465:2:26", + "src": "16489:2:40", "type": "", "value": "32" }, @@ -12061,14 +10380,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "16455:6:26", + "src": "16479:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "16481:60:26", + "src": "16505:60:40", "value": { "arguments": [ { @@ -12076,41 +10395,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16513:9:26" + "src": "16537:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "16524:6:26" + "src": "16548:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16509:3:26" + "src": "16533:3:40" }, "nodeType": "YulFunctionCall", - "src": "16509:22:26" + "src": "16533:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16533:7:26" + "src": "16557:7:40" } ], "functionName": { "name": "abi_decode_t_bool", "nodeType": "YulIdentifier", - "src": "16491:17:26" + "src": "16515:17:40" }, "nodeType": "YulFunctionCall", - "src": "16491:50:26" + "src": "16515:50:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "16481:6:26" + "src": "16505:6:40" } ] } @@ -12124,13 +10443,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "16133:9:26", + "src": "16157:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "16144:7:26", + "src": "16168:7:40", "type": "" } ], @@ -12138,22 +10457,22 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "16156:6:26", + "src": "16180:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "16164:6:26", + "src": "16188:6:40", "type": "" } ], - "src": "16092:466:26" + "src": "16116:466:40" }, { "body": { "nodeType": "YulBlock", - "src": "16629:53:26", + "src": "16653:53:40", "statements": [ { "expression": { @@ -12161,35 +10480,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "16646:3:26" + "src": "16670:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "16669:5:26" + "src": "16693:5:40" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "16651:17:26" + "src": "16675:17:40" }, "nodeType": "YulFunctionCall", - "src": "16651:24:26" + "src": "16675:24:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "16639:6:26" + "src": "16663:6:40" }, "nodeType": "YulFunctionCall", - "src": "16639:37:26" + "src": "16663:37:40" }, "nodeType": "YulExpressionStatement", - "src": "16639:37:26" + "src": "16663:37:40" } ] }, @@ -12199,37 +10518,37 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "16617:5:26", + "src": "16641:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "16624:3:26", + "src": "16648:3:40", "type": "" } ], - "src": "16564:118:26" + "src": "16588:118:40" }, { "body": { "nodeType": "YulBlock", - "src": "16786:124:26", + "src": "16810:124:40", "statements": [ { "nodeType": "YulAssignment", - "src": "16796:26:26", + "src": "16820:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16808:9:26" + "src": "16832:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "16819:2:26", + "src": "16843:2:40", "type": "", "value": "32" } @@ -12237,16 +10556,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16804:3:26" + "src": "16828:3:40" }, "nodeType": "YulFunctionCall", - "src": "16804:18:26" + "src": "16828:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "16796:4:26" + "src": "16820:4:40" } ] }, @@ -12256,19 +10575,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "16876:6:26" + "src": "16900:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16889:9:26" + "src": "16913:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "16900:1:26", + "src": "16924:1:40", "type": "", "value": "0" } @@ -12276,22 +10595,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16885:3:26" + "src": "16909:3:40" }, "nodeType": "YulFunctionCall", - "src": "16885:17:26" + "src": "16909:17:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "16832:43:26" + "src": "16856:43:40" }, "nodeType": "YulFunctionCall", - "src": "16832:71:26" + "src": "16856:71:40" }, "nodeType": "YulExpressionStatement", - "src": "16832:71:26" + "src": "16856:71:40" } ] }, @@ -12301,13 +10620,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "16758:9:26", + "src": "16782:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "16770:6:26", + "src": "16794:6:40", "type": "" } ], @@ -12315,21 +10634,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "16781:4:26", + "src": "16805:4:40", "type": "" } ], - "src": "16688:222:26" + "src": "16712:222:40" }, { "body": { "nodeType": "YulBlock", - "src": "17059:674:26", + "src": "17085:676:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "17106:83:26", + "src": "17132:83:40", "statements": [ { "expression": { @@ -12337,13 +10656,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "17108:77:26" + "src": "17134:77:40" }, "nodeType": "YulFunctionCall", - "src": "17108:79:26" + "src": "17134:79:40" }, "nodeType": "YulExpressionStatement", - "src": "17108:79:26" + "src": "17134:79:40" } ] }, @@ -12354,26 +10673,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "17080:7:26" + "src": "17106:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "17089:9:26" + "src": "17115:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "17076:3:26" + "src": "17102:3:40" }, "nodeType": "YulFunctionCall", - "src": "17076:23:26" + "src": "17102:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "17101:3:26", + "src": "17127:3:40", "type": "", "value": "128" } @@ -12381,25 +10700,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "17072:3:26" + "src": "17098:3:40" }, "nodeType": "YulFunctionCall", - "src": "17072:33:26" + "src": "17098:33:40" }, "nodeType": "YulIf", - "src": "17069:120:26" + "src": "17095:120:40" }, { "nodeType": "YulBlock", - "src": "17199:131:26", + "src": "17225:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "17214:15:26", + "src": "17240:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "17228:1:26", + "src": "17254:1:40", "type": "", "value": "0" }, @@ -12407,14 +10726,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "17218:6:26", + "src": "17244:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "17243:77:26", + "src": "17269:78:40", "value": { "arguments": [ { @@ -12422,41 +10741,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "17292:9:26" + "src": "17319:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "17303:6:26" + "src": "17330:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "17288:3:26" + "src": "17315:3:40" }, "nodeType": "YulFunctionCall", - "src": "17288:22:26" + "src": "17315:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "17312:7:26" + "src": "17339:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "17253:34:26" + "src": "17279:35:40" }, "nodeType": "YulFunctionCall", - "src": "17253:67:26" + "src": "17279:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "17243:6:26" + "src": "17269:6:40" } ] } @@ -12464,15 +10783,15 @@ }, { "nodeType": "YulBlock", - "src": "17340:132:26", + "src": "17367:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "17355:16:26", + "src": "17382:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "17369:2:26", + "src": "17396:2:40", "type": "", "value": "32" }, @@ -12480,14 +10799,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "17359:6:26", + "src": "17386:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "17385:77:26", + "src": "17412:78:40", "value": { "arguments": [ { @@ -12495,41 +10814,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "17434:9:26" + "src": "17462:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "17445:6:26" + "src": "17473:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "17430:3:26" + "src": "17458:3:40" }, "nodeType": "YulFunctionCall", - "src": "17430:22:26" + "src": "17458:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "17454:7:26" + "src": "17482:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "17395:34:26" + "src": "17422:35:40" }, "nodeType": "YulFunctionCall", - "src": "17395:67:26" + "src": "17422:68:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "17385:6:26" + "src": "17412:6:40" } ] } @@ -12537,15 +10856,15 @@ }, { "nodeType": "YulBlock", - "src": "17482:117:26", + "src": "17510:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "17497:16:26", + "src": "17525:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "17511:2:26", + "src": "17539:2:40", "type": "", "value": "64" }, @@ -12553,14 +10872,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "17501:6:26", + "src": "17529:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "17527:62:26", + "src": "17555:62:40", "value": { "arguments": [ { @@ -12568,41 +10887,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "17561:9:26" + "src": "17589:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "17572:6:26" + "src": "17600:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "17557:3:26" + "src": "17585:3:40" }, "nodeType": "YulFunctionCall", - "src": "17557:22:26" + "src": "17585:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "17581:7:26" + "src": "17609:7:40" } ], "functionName": { "name": "abi_decode_t_uint24", "nodeType": "YulIdentifier", - "src": "17537:19:26" + "src": "17565:19:40" }, "nodeType": "YulFunctionCall", - "src": "17537:52:26" + "src": "17565:52:40" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "17527:6:26" + "src": "17555:6:40" } ] } @@ -12610,15 +10929,15 @@ }, { "nodeType": "YulBlock", - "src": "17609:117:26", + "src": "17637:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "17624:16:26", + "src": "17652:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "17638:2:26", + "src": "17666:2:40", "type": "", "value": "96" }, @@ -12626,14 +10945,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "17628:6:26", + "src": "17656:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "17654:62:26", + "src": "17682:62:40", "value": { "arguments": [ { @@ -12641,41 +10960,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "17688:9:26" + "src": "17716:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "17699:6:26" + "src": "17727:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "17684:3:26" + "src": "17712:3:40" }, "nodeType": "YulFunctionCall", - "src": "17684:22:26" + "src": "17712:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "17708:7:26" + "src": "17736:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "17664:19:26" + "src": "17692:19:40" }, "nodeType": "YulFunctionCall", - "src": "17664:52:26" + "src": "17692:52:40" }, "variableNames": [ { "name": "value3", "nodeType": "YulIdentifier", - "src": "17654:6:26" + "src": "17682:6:40" } ] } @@ -12683,19 +11002,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint24t_uint16", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint24t_uint16", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "17005:9:26", + "src": "17031:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "17016:7:26", + "src": "17042:7:40", "type": "" } ], @@ -12703,71 +11022,71 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "17028:6:26", + "src": "17054:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "17036:6:26", + "src": "17062:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "17044:6:26", + "src": "17070:6:40", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "17052:6:26", + "src": "17078:6:40", "type": "" } ], - "src": "16916:817:26" + "src": "16940:821:40" }, { "body": { "nodeType": "YulBlock", - "src": "17815:66:26", + "src": "17843:66:40", "statements": [ { "nodeType": "YulAssignment", - "src": "17825:50:26", + "src": "17853:50:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "17869:5:26" + "src": "17897:5:40" } ], "functionName": { "name": "convert_t_uint160_to_t_address", "nodeType": "YulIdentifier", - "src": "17838:30:26" + "src": "17866:30:40" }, "nodeType": "YulFunctionCall", - "src": "17838:37:26" + "src": "17866:37:40" }, "variableNames": [ { "name": "converted", "nodeType": "YulIdentifier", - "src": "17825:9:26" + "src": "17853:9:40" } ] } ] }, - "name": "convert_t_contract$_ILBPair_$6147_to_t_address", + "name": "convert_t_contract$_ILBPair_$7970_to_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "17795:5:26", + "src": "17823:5:40", "type": "" } ], @@ -12775,16 +11094,16 @@ { "name": "converted", "nodeType": "YulTypedName", - "src": "17805:9:26", + "src": "17833:9:40", "type": "" } ], - "src": "17739:142:26" + "src": "17767:142:40" }, { "body": { "nodeType": "YulBlock", - "src": "17968:82:26", + "src": "17996:82:40", "statements": [ { "expression": { @@ -12792,75 +11111,75 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "17985:3:26" + "src": "18013:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "18037:5:26" + "src": "18065:5:40" } ], "functionName": { - "name": "convert_t_contract$_ILBPair_$6147_to_t_address", + "name": "convert_t_contract$_ILBPair_$7970_to_t_address", "nodeType": "YulIdentifier", - "src": "17990:46:26" + "src": "18018:46:40" }, "nodeType": "YulFunctionCall", - "src": "17990:53:26" + "src": "18018:53:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "17978:6:26" + "src": "18006:6:40" }, "nodeType": "YulFunctionCall", - "src": "17978:66:26" + "src": "18006:66:40" }, "nodeType": "YulExpressionStatement", - "src": "17978:66:26" + "src": "18006:66:40" } ] }, - "name": "abi_encode_t_contract$_ILBPair_$6147_to_t_address_fromStack", + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "17956:5:26", + "src": "17984:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "17963:3:26", + "src": "17991:3:40", "type": "" } ], - "src": "17887:163:26" + "src": "17915:163:40" }, { "body": { "nodeType": "YulBlock", - "src": "18170:140:26", + "src": "18198:140:40", "statements": [ { "nodeType": "YulAssignment", - "src": "18180:26:26", + "src": "18208:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "18192:9:26" + "src": "18220:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "18203:2:26", + "src": "18231:2:40", "type": "", "value": "32" } @@ -12868,16 +11187,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "18188:3:26" + "src": "18216:3:40" }, "nodeType": "YulFunctionCall", - "src": "18188:18:26" + "src": "18216:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "18180:4:26" + "src": "18208:4:40" } ] }, @@ -12887,19 +11206,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "18276:6:26" + "src": "18304:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "18289:9:26" + "src": "18317:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "18300:1:26", + "src": "18328:1:40", "type": "", "value": "0" } @@ -12907,38 +11226,38 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "18285:3:26" + "src": "18313:3:40" }, "nodeType": "YulFunctionCall", - "src": "18285:17:26" + "src": "18313:17:40" } ], "functionName": { - "name": "abi_encode_t_contract$_ILBPair_$6147_to_t_address_fromStack", + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "18216:59:26" + "src": "18244:59:40" }, "nodeType": "YulFunctionCall", - "src": "18216:87:26" + "src": "18244:87:40" }, "nodeType": "YulExpressionStatement", - "src": "18216:87:26" + "src": "18244:87:40" } ] }, - "name": "abi_encode_tuple_t_contract$_ILBPair_$6147__to_t_address__fromStack_reversed", + "name": "abi_encode_tuple_t_contract$_ILBPair_$7970__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "18142:9:26", + "src": "18170:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "18154:6:26", + "src": "18182:6:40", "type": "" } ], @@ -12946,21 +11265,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "18165:4:26", + "src": "18193:4:40", "type": "" } ], - "src": "18056:254:26" + "src": "18084:254:40" }, { "body": { "nodeType": "YulBlock", - "src": "18427:419:26", + "src": "18457:421:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "18473:83:26", + "src": "18503:83:40", "statements": [ { "expression": { @@ -12968,13 +11287,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "18475:77:26" + "src": "18505:77:40" }, "nodeType": "YulFunctionCall", - "src": "18475:79:26" + "src": "18505:79:40" }, "nodeType": "YulExpressionStatement", - "src": "18475:79:26" + "src": "18505:79:40" } ] }, @@ -12985,26 +11304,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "18448:7:26" + "src": "18478:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "18457:9:26" + "src": "18487:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "18444:3:26" + "src": "18474:3:40" }, "nodeType": "YulFunctionCall", - "src": "18444:23:26" + "src": "18474:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "18469:2:26", + "src": "18499:2:40", "type": "", "value": "64" } @@ -13012,25 +11331,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "18440:3:26" + "src": "18470:3:40" }, "nodeType": "YulFunctionCall", - "src": "18440:32:26" + "src": "18470:32:40" }, "nodeType": "YulIf", - "src": "18437:119:26" + "src": "18467:119:40" }, { "nodeType": "YulBlock", - "src": "18566:131:26", + "src": "18596:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "18581:15:26", + "src": "18611:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "18595:1:26", + "src": "18625:1:40", "type": "", "value": "0" }, @@ -13038,14 +11357,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "18585:6:26", + "src": "18615:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "18610:77:26", + "src": "18640:78:40", "value": { "arguments": [ { @@ -13053,41 +11372,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "18659:9:26" + "src": "18690:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "18670:6:26" + "src": "18701:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "18655:3:26" + "src": "18686:3:40" }, "nodeType": "YulFunctionCall", - "src": "18655:22:26" + "src": "18686:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "18679:7:26" + "src": "18710:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "18620:34:26" + "src": "18650:35:40" }, "nodeType": "YulFunctionCall", - "src": "18620:67:26" + "src": "18650:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "18610:6:26" + "src": "18640:6:40" } ] } @@ -13095,15 +11414,15 @@ }, { "nodeType": "YulBlock", - "src": "18707:132:26", + "src": "18738:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "18722:16:26", + "src": "18753:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "18736:2:26", + "src": "18767:2:40", "type": "", "value": "32" }, @@ -13111,14 +11430,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "18726:6:26", + "src": "18757:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "18752:77:26", + "src": "18783:78:40", "value": { "arguments": [ { @@ -13126,41 +11445,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "18801:9:26" + "src": "18833:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "18812:6:26" + "src": "18844:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "18797:3:26" + "src": "18829:3:40" }, "nodeType": "YulFunctionCall", - "src": "18797:22:26" + "src": "18829:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "18821:7:26" + "src": "18853:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "18762:34:26" + "src": "18793:35:40" }, "nodeType": "YulFunctionCall", - "src": "18762:67:26" + "src": "18793:68:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "18752:6:26" + "src": "18783:6:40" } ] } @@ -13168,19 +11487,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "18389:9:26", + "src": "18419:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "18400:7:26", + "src": "18430:7:40", "type": "" } ], @@ -13188,59 +11507,59 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "18412:6:26", + "src": "18442:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "18420:6:26", + "src": "18450:6:40", "type": "" } ], - "src": "18316:530:26" + "src": "18344:534:40" }, { "body": { "nodeType": "YulBlock", - "src": "18961:40:26", + "src": "18993:40:40", "statements": [ { "nodeType": "YulAssignment", - "src": "18972:22:26", + "src": "19004:22:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "18988:5:26" + "src": "19020:5:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "18982:5:26" + "src": "19014:5:40" }, "nodeType": "YulFunctionCall", - "src": "18982:12:26" + "src": "19014:12:40" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "18972:6:26" + "src": "19004:6:40" } ] } ] }, - "name": "array_length_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr", + "name": "array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "18944:5:26", + "src": "18976:5:40", "type": "" } ], @@ -13248,16 +11567,16 @@ { "name": "length", "nodeType": "YulTypedName", - "src": "18954:6:26", + "src": "18986:6:40", "type": "" } ], - "src": "18852:149:26" + "src": "18884:149:40" }, { "body": { "nodeType": "YulBlock", - "src": "19153:73:26", + "src": "19185:73:40", "statements": [ { "expression": { @@ -13265,39 +11584,39 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "19170:3:26" + "src": "19202:3:40" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "19175:6:26" + "src": "19207:6:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "19163:6:26" + "src": "19195:6:40" }, "nodeType": "YulFunctionCall", - "src": "19163:19:26" + "src": "19195:19:40" }, "nodeType": "YulExpressionStatement", - "src": "19163:19:26" + "src": "19195:19:40" }, { "nodeType": "YulAssignment", - "src": "19191:29:26", + "src": "19223:29:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "19210:3:26" + "src": "19242:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "19215:4:26", + "src": "19247:4:40", "type": "", "value": "0x20" } @@ -13305,34 +11624,34 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "19206:3:26" + "src": "19238:3:40" }, "nodeType": "YulFunctionCall", - "src": "19206:14:26" + "src": "19238:14:40" }, "variableNames": [ { "name": "updated_pos", "nodeType": "YulIdentifier", - "src": "19191:11:26" + "src": "19223:11:40" } ] } ] }, - "name": "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack", + "name": "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "pos", "nodeType": "YulTypedName", - "src": "19125:3:26", + "src": "19157:3:40", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "19130:6:26", + "src": "19162:6:40", "type": "" } ], @@ -13340,47 +11659,47 @@ { "name": "updated_pos", "nodeType": "YulTypedName", - "src": "19141:11:26", + "src": "19173:11:40", "type": "" } ], - "src": "19007:219:26" + "src": "19039:219:40" }, { "body": { "nodeType": "YulBlock", - "src": "19339:60:26", + "src": "19371:60:40", "statements": [ { "nodeType": "YulAssignment", - "src": "19349:11:26", + "src": "19381:11:40", "value": { "name": "ptr", "nodeType": "YulIdentifier", - "src": "19357:3:26" + "src": "19389:3:40" }, "variableNames": [ { "name": "data", "nodeType": "YulIdentifier", - "src": "19349:4:26" + "src": "19381:4:40" } ] }, { "nodeType": "YulAssignment", - "src": "19370:22:26", + "src": "19402:22:40", "value": { "arguments": [ { "name": "ptr", "nodeType": "YulIdentifier", - "src": "19382:3:26" + "src": "19414:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "19387:4:26", + "src": "19419:4:40", "type": "", "value": "0x20" } @@ -13388,28 +11707,28 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "19378:3:26" + "src": "19410:3:40" }, "nodeType": "YulFunctionCall", - "src": "19378:14:26" + "src": "19410:14:40" }, "variableNames": [ { "name": "data", "nodeType": "YulIdentifier", - "src": "19370:4:26" + "src": "19402:4:40" } ] } ] }, - "name": "array_dataslot_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr", + "name": "array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "ptr", "nodeType": "YulTypedName", - "src": "19326:3:26", + "src": "19358:3:40", "type": "" } ], @@ -13417,16 +11736,16 @@ { "name": "data", "nodeType": "YulTypedName", - "src": "19334:4:26", + "src": "19366:4:40", "type": "" } ], - "src": "19232:167:26" + "src": "19264:167:40" }, { "body": { "nodeType": "YulBlock", - "src": "19458:52:26", + "src": "19490:52:40", "statements": [ { "expression": { @@ -13434,35 +11753,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "19475:3:26" + "src": "19507:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "19497:5:26" + "src": "19529:5:40" } ], "functionName": { "name": "cleanup_t_uint16", "nodeType": "YulIdentifier", - "src": "19480:16:26" + "src": "19512:16:40" }, "nodeType": "YulFunctionCall", - "src": "19480:23:26" + "src": "19512:23:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "19468:6:26" + "src": "19500:6:40" }, "nodeType": "YulFunctionCall", - "src": "19468:36:26" + "src": "19500:36:40" }, "nodeType": "YulExpressionStatement", - "src": "19468:36:26" + "src": "19500:36:40" } ] }, @@ -13472,22 +11791,22 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "19446:5:26", + "src": "19478:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "19453:3:26", + "src": "19485:3:40", "type": "" } ], - "src": "19405:105:26" + "src": "19437:105:40" }, { "body": { "nodeType": "YulBlock", - "src": "19587:82:26", + "src": "19619:82:40", "statements": [ { "expression": { @@ -13495,60 +11814,60 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "19604:3:26" + "src": "19636:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "19656:5:26" + "src": "19688:5:40" } ], "functionName": { - "name": "convert_t_contract$_ILBPair_$6147_to_t_address", + "name": "convert_t_contract$_ILBPair_$7970_to_t_address", "nodeType": "YulIdentifier", - "src": "19609:46:26" + "src": "19641:46:40" }, "nodeType": "YulFunctionCall", - "src": "19609:53:26" + "src": "19641:53:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "19597:6:26" + "src": "19629:6:40" }, "nodeType": "YulFunctionCall", - "src": "19597:66:26" + "src": "19629:66:40" }, "nodeType": "YulExpressionStatement", - "src": "19597:66:26" + "src": "19629:66:40" } ] }, - "name": "abi_encode_t_contract$_ILBPair_$6147_to_t_address", + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "19575:5:26", + "src": "19607:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "19582:3:26", + "src": "19614:3:40", "type": "" } ], - "src": "19516:153:26" + "src": "19548:153:40" }, { "body": { "nodeType": "YulBlock", - "src": "19724:50:26", + "src": "19756:50:40", "statements": [ { "expression": { @@ -13556,35 +11875,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "19741:3:26" + "src": "19773:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "19761:5:26" + "src": "19793:5:40" } ], "functionName": { "name": "cleanup_t_bool", "nodeType": "YulIdentifier", - "src": "19746:14:26" + "src": "19778:14:40" }, "nodeType": "YulFunctionCall", - "src": "19746:21:26" + "src": "19778:21:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "19734:6:26" + "src": "19766:6:40" }, "nodeType": "YulFunctionCall", - "src": "19734:34:26" + "src": "19766:34:40" }, "nodeType": "YulExpressionStatement", - "src": "19734:34:26" + "src": "19766:34:40" } ] }, @@ -13594,37 +11913,37 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "19712:5:26", + "src": "19744:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "19719:3:26", + "src": "19751:3:40", "type": "" } ], - "src": "19675:99:26" + "src": "19707:99:40" }, { "body": { "nodeType": "YulBlock", - "src": "19988:769:26", + "src": "20020:769:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "19998:26:26", + "src": "20030:26:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "20014:3:26" + "src": "20046:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20019:4:26", + "src": "20051:4:40", "type": "", "value": "0x80" } @@ -13632,27 +11951,27 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20010:3:26" + "src": "20042:3:40" }, "nodeType": "YulFunctionCall", - "src": "20010:14:26" + "src": "20042:14:40" }, "variables": [ { "name": "tail", "nodeType": "YulTypedName", - "src": "20002:4:26", + "src": "20034:4:40", "type": "" } ] }, { "nodeType": "YulBlock", - "src": "20034:165:26", + "src": "20066:165:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "20072:43:26", + "src": "20104:43:40", "value": { "arguments": [ { @@ -13660,12 +11979,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "20102:5:26" + "src": "20134:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20109:4:26", + "src": "20141:4:40", "type": "", "value": "0x00" } @@ -13673,25 +11992,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20098:3:26" + "src": "20130:3:40" }, "nodeType": "YulFunctionCall", - "src": "20098:16:26" + "src": "20130:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "20092:5:26" + "src": "20124:5:40" }, "nodeType": "YulFunctionCall", - "src": "20092:23:26" + "src": "20124:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "20076:12:26", + "src": "20108:12:40", "type": "" } ] @@ -13702,19 +12021,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "20160:12:26" + "src": "20192:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "20178:3:26" + "src": "20210:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20183:4:26", + "src": "20215:4:40", "type": "", "value": "0x00" } @@ -13722,32 +12041,32 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20174:3:26" + "src": "20206:3:40" }, "nodeType": "YulFunctionCall", - "src": "20174:14:26" + "src": "20206:14:40" } ], "functionName": { "name": "abi_encode_t_uint16_to_t_uint16", "nodeType": "YulIdentifier", - "src": "20128:31:26" + "src": "20160:31:40" }, "nodeType": "YulFunctionCall", - "src": "20128:61:26" + "src": "20160:61:40" }, "nodeType": "YulExpressionStatement", - "src": "20128:61:26" + "src": "20160:61:40" } ] }, { "nodeType": "YulBlock", - "src": "20209:182:26", + "src": "20241:182:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "20246:43:26", + "src": "20278:43:40", "value": { "arguments": [ { @@ -13755,12 +12074,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "20276:5:26" + "src": "20308:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20283:4:26", + "src": "20315:4:40", "type": "", "value": "0x20" } @@ -13768,25 +12087,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20272:3:26" + "src": "20304:3:40" }, "nodeType": "YulFunctionCall", - "src": "20272:16:26" + "src": "20304:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "20266:5:26" + "src": "20298:5:40" }, "nodeType": "YulFunctionCall", - "src": "20266:23:26" + "src": "20298:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "20250:12:26", + "src": "20282:12:40", "type": "" } ] @@ -13797,19 +12116,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "20352:12:26" + "src": "20384:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "20370:3:26" + "src": "20402:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20375:4:26", + "src": "20407:4:40", "type": "", "value": "0x20" } @@ -13817,32 +12136,32 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20366:3:26" + "src": "20398:3:40" }, "nodeType": "YulFunctionCall", - "src": "20366:14:26" + "src": "20398:14:40" } ], "functionName": { - "name": "abi_encode_t_contract$_ILBPair_$6147_to_t_address", + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address", "nodeType": "YulIdentifier", - "src": "20302:49:26" + "src": "20334:49:40" }, "nodeType": "YulFunctionCall", - "src": "20302:79:26" + "src": "20334:79:40" }, "nodeType": "YulExpressionStatement", - "src": "20302:79:26" + "src": "20334:79:40" } ] }, { "nodeType": "YulBlock", - "src": "20401:168:26", + "src": "20433:168:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "20446:43:26", + "src": "20478:43:40", "value": { "arguments": [ { @@ -13850,12 +12169,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "20476:5:26" + "src": "20508:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20483:4:26", + "src": "20515:4:40", "type": "", "value": "0x40" } @@ -13863,25 +12182,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20472:3:26" + "src": "20504:3:40" }, "nodeType": "YulFunctionCall", - "src": "20472:16:26" + "src": "20504:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "20466:5:26" + "src": "20498:5:40" }, "nodeType": "YulFunctionCall", - "src": "20466:23:26" + "src": "20498:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "20450:12:26", + "src": "20482:12:40", "type": "" } ] @@ -13892,19 +12211,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "20530:12:26" + "src": "20562:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "20548:3:26" + "src": "20580:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20553:4:26", + "src": "20585:4:40", "type": "", "value": "0x40" } @@ -13912,32 +12231,32 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20544:3:26" + "src": "20576:3:40" }, "nodeType": "YulFunctionCall", - "src": "20544:14:26" + "src": "20576:14:40" } ], "functionName": { "name": "abi_encode_t_bool_to_t_bool", "nodeType": "YulIdentifier", - "src": "20502:27:26" + "src": "20534:27:40" }, "nodeType": "YulFunctionCall", - "src": "20502:57:26" + "src": "20534:57:40" }, "nodeType": "YulExpressionStatement", - "src": "20502:57:26" + "src": "20534:57:40" } ] }, { "nodeType": "YulBlock", - "src": "20579:171:26", + "src": "20611:171:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "20627:43:26", + "src": "20659:43:40", "value": { "arguments": [ { @@ -13945,12 +12264,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "20657:5:26" + "src": "20689:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20664:4:26", + "src": "20696:4:40", "type": "", "value": "0x60" } @@ -13958,25 +12277,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20653:3:26" + "src": "20685:3:40" }, "nodeType": "YulFunctionCall", - "src": "20653:16:26" + "src": "20685:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "20647:5:26" + "src": "20679:5:40" }, "nodeType": "YulFunctionCall", - "src": "20647:23:26" + "src": "20679:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "20631:12:26", + "src": "20663:12:40", "type": "" } ] @@ -13987,19 +12306,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "20711:12:26" + "src": "20743:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "20729:3:26" + "src": "20761:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20734:4:26", + "src": "20766:4:40", "type": "", "value": "0x60" } @@ -14007,49 +12326,49 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20725:3:26" + "src": "20757:3:40" }, "nodeType": "YulFunctionCall", - "src": "20725:14:26" + "src": "20757:14:40" } ], "functionName": { "name": "abi_encode_t_bool_to_t_bool", "nodeType": "YulIdentifier", - "src": "20683:27:26" + "src": "20715:27:40" }, "nodeType": "YulFunctionCall", - "src": "20683:57:26" + "src": "20715:57:40" }, "nodeType": "YulExpressionStatement", - "src": "20683:57:26" + "src": "20715:57:40" } ] } ] }, - "name": "abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr", + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "19975:5:26", + "src": "20007:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "19982:3:26", + "src": "20014:3:40", "type": "" } ], - "src": "19862:895:26" + "src": "19894:895:40" }, { "body": { "nodeType": "YulBlock", - "src": "20913:169:26", + "src": "20945:169:40", "statements": [ { "expression": { @@ -14057,39 +12376,39 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "21027:6:26" + "src": "21059:6:40" }, { "name": "pos", "nodeType": "YulIdentifier", - "src": "21035:3:26" + "src": "21067:3:40" } ], "functionName": { - "name": "abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr", + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", "nodeType": "YulIdentifier", - "src": "20923:103:26" + "src": "20955:103:40" }, "nodeType": "YulFunctionCall", - "src": "20923:116:26" + "src": "20955:116:40" }, "nodeType": "YulExpressionStatement", - "src": "20923:116:26" + "src": "20955:116:40" }, { "nodeType": "YulAssignment", - "src": "21048:28:26", + "src": "21080:28:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "21066:3:26" + "src": "21098:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "21071:4:26", + "src": "21103:4:40", "type": "", "value": "0x80" } @@ -14097,34 +12416,34 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21062:3:26" + "src": "21094:3:40" }, "nodeType": "YulFunctionCall", - "src": "21062:14:26" + "src": "21094:14:40" }, "variableNames": [ { "name": "updatedPos", "nodeType": "YulIdentifier", - "src": "21048:10:26" + "src": "21080:10:40" } ] } ] }, - "name": "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr", + "name": "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value0", "nodeType": "YulTypedName", - "src": "20886:6:26", + "src": "20918:6:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "20894:3:26", + "src": "20926:3:40", "type": "" } ], @@ -14132,31 +12451,31 @@ { "name": "updatedPos", "nodeType": "YulTypedName", - "src": "20902:10:26", + "src": "20934:10:40", "type": "" } ], - "src": "20763:319:26" + "src": "20795:319:40" }, { "body": { "nodeType": "YulBlock", - "src": "21198:38:26", + "src": "21230:38:40", "statements": [ { "nodeType": "YulAssignment", - "src": "21208:22:26", + "src": "21240:22:40", "value": { "arguments": [ { "name": "ptr", "nodeType": "YulIdentifier", - "src": "21220:3:26" + "src": "21252:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "21225:4:26", + "src": "21257:4:40", "type": "", "value": "0x20" } @@ -14164,28 +12483,28 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21216:3:26" + "src": "21248:3:40" }, "nodeType": "YulFunctionCall", - "src": "21216:14:26" + "src": "21248:14:40" }, "variableNames": [ { "name": "next", "nodeType": "YulIdentifier", - "src": "21208:4:26" + "src": "21240:4:40" } ] } ] }, - "name": "array_nextElement_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr", + "name": "array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "ptr", "nodeType": "YulTypedName", - "src": "21185:3:26", + "src": "21217:3:40", "type": "" } ], @@ -14193,118 +12512,118 @@ { "name": "next", "nodeType": "YulTypedName", - "src": "21193:4:26", + "src": "21225:4:40", "type": "" } ], - "src": "21088:148:26" + "src": "21120:148:40" }, { "body": { "nodeType": "YulBlock", - "src": "21522:818:26", + "src": "21554:818:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "21532:103:26", + "src": "21564:103:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "21629:5:26" + "src": "21661:5:40" } ], "functionName": { - "name": "array_length_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr", + "name": "array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "21546:82:26" + "src": "21578:82:40" }, "nodeType": "YulFunctionCall", - "src": "21546:89:26" + "src": "21578:89:40" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", - "src": "21536:6:26", + "src": "21568:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "21644:128:26", + "src": "21676:128:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "21760:3:26" + "src": "21792:3:40" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "21765:6:26" + "src": "21797:6:40" } ], "functionName": { - "name": "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack", + "name": "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "21651:108:26" + "src": "21683:108:40" }, "nodeType": "YulFunctionCall", - "src": "21651:121:26" + "src": "21683:121:40" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "21644:3:26" + "src": "21676:3:40" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "21781:106:26", + "src": "21813:106:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "21881:5:26" + "src": "21913:5:40" } ], "functionName": { - "name": "array_dataslot_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr", + "name": "array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "21796:84:26" + "src": "21828:84:40" }, "nodeType": "YulFunctionCall", - "src": "21796:91:26" + "src": "21828:91:40" }, "variables": [ { "name": "baseRef", "nodeType": "YulTypedName", - "src": "21785:7:26", + "src": "21817:7:40", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "21896:21:26", + "src": "21928:21:40", "value": { "name": "baseRef", "nodeType": "YulIdentifier", - "src": "21910:7:26" + "src": "21942:7:40" }, "variables": [ { "name": "srcPtr", "nodeType": "YulTypedName", - "src": "21900:6:26", + "src": "21932:6:40", "type": "" } ] @@ -14312,92 +12631,92 @@ { "body": { "nodeType": "YulBlock", - "src": "21986:329:26", + "src": "22018:329:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "22000:34:26", + "src": "22032:34:40", "value": { "arguments": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "22027:6:26" + "src": "22059:6:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "22021:5:26" + "src": "22053:5:40" }, "nodeType": "YulFunctionCall", - "src": "22021:13:26" + "src": "22053:13:40" }, "variables": [ { "name": "elementValue0", "nodeType": "YulTypedName", - "src": "22004:13:26", + "src": "22036:13:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "22047:140:26", + "src": "22079:140:40", "value": { "arguments": [ { "name": "elementValue0", "nodeType": "YulIdentifier", - "src": "22168:13:26" + "src": "22200:13:40" }, { "name": "pos", "nodeType": "YulIdentifier", - "src": "22183:3:26" + "src": "22215:3:40" } ], "functionName": { - "name": "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr", + "name": "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", "nodeType": "YulIdentifier", - "src": "22054:113:26" + "src": "22086:113:40" }, "nodeType": "YulFunctionCall", - "src": "22054:133:26" + "src": "22086:133:40" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "22047:3:26" + "src": "22079:3:40" } ] }, { "nodeType": "YulAssignment", - "src": "22200:105:26", + "src": "22232:105:40", "value": { "arguments": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "22298:6:26" + "src": "22330:6:40" } ], "functionName": { - "name": "array_nextElement_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr", + "name": "array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "22210:87:26" + "src": "22242:87:40" }, "nodeType": "YulFunctionCall", - "src": "22210:95:26" + "src": "22242:95:40" }, "variableNames": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "22200:6:26" + "src": "22232:6:40" } ] } @@ -14408,41 +12727,41 @@ { "name": "i", "nodeType": "YulIdentifier", - "src": "21948:1:26" + "src": "21980:1:40" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "21951:6:26" + "src": "21983:6:40" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", - "src": "21945:2:26" + "src": "21977:2:40" }, "nodeType": "YulFunctionCall", - "src": "21945:13:26" + "src": "21977:13:40" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", - "src": "21959:18:26", + "src": "21991:18:40", "statements": [ { "nodeType": "YulAssignment", - "src": "21961:14:26", + "src": "21993:14:40", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", - "src": "21970:1:26" + "src": "22002:1:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "21973:1:26", + "src": "22005:1:40", "type": "", "value": "1" } @@ -14450,16 +12769,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21966:3:26" + "src": "21998:3:40" }, "nodeType": "YulFunctionCall", - "src": "21966:9:26" + "src": "21998:9:40" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", - "src": "21961:1:26" + "src": "21993:1:40" } ] } @@ -14467,15 +12786,15 @@ }, "pre": { "nodeType": "YulBlock", - "src": "21930:14:26", + "src": "21962:14:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "21932:10:26", + "src": "21964:10:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "21941:1:26", + "src": "21973:1:40", "type": "", "value": "0" }, @@ -14483,46 +12802,46 @@ { "name": "i", "nodeType": "YulTypedName", - "src": "21936:1:26", + "src": "21968:1:40", "type": "" } ] } ] }, - "src": "21926:389:26" + "src": "21958:389:40" }, { "nodeType": "YulAssignment", - "src": "22324:10:26", + "src": "22356:10:40", "value": { "name": "pos", "nodeType": "YulIdentifier", - "src": "22331:3:26" + "src": "22363:3:40" }, "variableNames": [ { "name": "end", "nodeType": "YulIdentifier", - "src": "22324:3:26" + "src": "22356:3:40" } ] } ] }, - "name": "abi_encode_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack", + "name": "abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "21501:5:26", + "src": "21533:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "21508:3:26", + "src": "21540:3:40", "type": "" } ], @@ -14530,31 +12849,31 @@ { "name": "end", "nodeType": "YulTypedName", - "src": "21517:3:26", + "src": "21549:3:40", "type": "" } ], - "src": "21328:1012:26" + "src": "21360:1012:40" }, { "body": { "nodeType": "YulBlock", - "src": "22564:295:26", + "src": "22596:295:40", "statements": [ { "nodeType": "YulAssignment", - "src": "22574:26:26", + "src": "22606:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "22586:9:26" + "src": "22618:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "22597:2:26", + "src": "22629:2:40", "type": "", "value": "32" } @@ -14562,16 +12881,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "22582:3:26" + "src": "22614:3:40" }, "nodeType": "YulFunctionCall", - "src": "22582:18:26" + "src": "22614:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "22574:4:26" + "src": "22606:4:40" } ] }, @@ -14583,12 +12902,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "22621:9:26" + "src": "22653:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "22632:1:26", + "src": "22664:1:40", "type": "", "value": "0" } @@ -14596,91 +12915,91 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "22617:3:26" + "src": "22649:3:40" }, "nodeType": "YulFunctionCall", - "src": "22617:17:26" + "src": "22649:17:40" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "22640:4:26" + "src": "22672:4:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "22646:9:26" + "src": "22678:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "22636:3:26" + "src": "22668:3:40" }, "nodeType": "YulFunctionCall", - "src": "22636:20:26" + "src": "22668:20:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "22610:6:26" + "src": "22642:6:40" }, "nodeType": "YulFunctionCall", - "src": "22610:47:26" + "src": "22642:47:40" }, "nodeType": "YulExpressionStatement", - "src": "22610:47:26" + "src": "22642:47:40" }, { "nodeType": "YulAssignment", - "src": "22666:186:26", + "src": "22698:186:40", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "22838:6:26" + "src": "22870:6:40" }, { "name": "tail", "nodeType": "YulIdentifier", - "src": "22847:4:26" + "src": "22879:4:40" } ], "functionName": { - "name": "abi_encode_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack", + "name": "abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "22674:163:26" + "src": "22706:163:40" }, "nodeType": "YulFunctionCall", - "src": "22674:178:26" + "src": "22706:178:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "22666:4:26" + "src": "22698:4:40" } ] } ] }, - "name": "abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "22536:9:26", + "src": "22568:9:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "22548:6:26", + "src": "22580:6:40", "type": "" } ], @@ -14688,21 +13007,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "22559:4:26", + "src": "22591:4:40", "type": "" } ], - "src": "22346:513:26" + "src": "22378:513:40" }, { "body": { "nodeType": "YulBlock", - "src": "23006:672:26", + "src": "23040:674:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "23053:83:26", + "src": "23087:83:40", "statements": [ { "expression": { @@ -14710,13 +13029,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "23055:77:26" + "src": "23089:77:40" }, "nodeType": "YulFunctionCall", - "src": "23055:79:26" + "src": "23089:79:40" }, "nodeType": "YulExpressionStatement", - "src": "23055:79:26" + "src": "23089:79:40" } ] }, @@ -14727,26 +13046,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "23027:7:26" + "src": "23061:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "23036:9:26" + "src": "23070:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "23023:3:26" + "src": "23057:3:40" }, "nodeType": "YulFunctionCall", - "src": "23023:23:26" + "src": "23057:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "23048:3:26", + "src": "23082:3:40", "type": "", "value": "128" } @@ -14754,25 +13073,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "23019:3:26" + "src": "23053:3:40" }, "nodeType": "YulFunctionCall", - "src": "23019:33:26" + "src": "23053:33:40" }, "nodeType": "YulIf", - "src": "23016:120:26" + "src": "23050:120:40" }, { "nodeType": "YulBlock", - "src": "23146:131:26", + "src": "23180:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "23161:15:26", + "src": "23195:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "23175:1:26", + "src": "23209:1:40", "type": "", "value": "0" }, @@ -14780,14 +13099,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "23165:6:26", + "src": "23199:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "23190:77:26", + "src": "23224:78:40", "value": { "arguments": [ { @@ -14795,41 +13114,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "23239:9:26" + "src": "23274:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "23250:6:26" + "src": "23285:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "23235:3:26" + "src": "23270:3:40" }, "nodeType": "YulFunctionCall", - "src": "23235:22:26" + "src": "23270:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "23259:7:26" + "src": "23294:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "23200:34:26" + "src": "23234:35:40" }, "nodeType": "YulFunctionCall", - "src": "23200:67:26" + "src": "23234:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "23190:6:26" + "src": "23224:6:40" } ] } @@ -14837,15 +13156,15 @@ }, { "nodeType": "YulBlock", - "src": "23287:132:26", + "src": "23322:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "23302:16:26", + "src": "23337:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "23316:2:26", + "src": "23351:2:40", "type": "", "value": "32" }, @@ -14853,14 +13172,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "23306:6:26", + "src": "23341:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "23332:77:26", + "src": "23367:78:40", "value": { "arguments": [ { @@ -14868,41 +13187,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "23381:9:26" + "src": "23417:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "23392:6:26" + "src": "23428:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "23377:3:26" + "src": "23413:3:40" }, "nodeType": "YulFunctionCall", - "src": "23377:22:26" + "src": "23413:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "23401:7:26" + "src": "23437:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "23342:34:26" + "src": "23377:35:40" }, "nodeType": "YulFunctionCall", - "src": "23342:67:26" + "src": "23377:68:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "23332:6:26" + "src": "23367:6:40" } ] } @@ -14910,15 +13229,15 @@ }, { "nodeType": "YulBlock", - "src": "23429:117:26", + "src": "23465:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "23444:16:26", + "src": "23480:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "23458:2:26", + "src": "23494:2:40", "type": "", "value": "64" }, @@ -14926,14 +13245,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "23448:6:26", + "src": "23484:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "23474:62:26", + "src": "23510:62:40", "value": { "arguments": [ { @@ -14941,41 +13260,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "23508:9:26" + "src": "23544:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "23519:6:26" + "src": "23555:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "23504:3:26" + "src": "23540:3:40" }, "nodeType": "YulFunctionCall", - "src": "23504:22:26" + "src": "23540:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "23528:7:26" + "src": "23564:7:40" } ], "functionName": { "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "23484:19:26" + "src": "23520:19:40" }, "nodeType": "YulFunctionCall", - "src": "23484:52:26" + "src": "23520:52:40" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "23474:6:26" + "src": "23510:6:40" } ] } @@ -14983,15 +13302,15 @@ }, { "nodeType": "YulBlock", - "src": "23556:115:26", + "src": "23592:115:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "23571:16:26", + "src": "23607:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "23585:2:26", + "src": "23621:2:40", "type": "", "value": "96" }, @@ -14999,14 +13318,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "23575:6:26", + "src": "23611:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "23601:60:26", + "src": "23637:60:40", "value": { "arguments": [ { @@ -15014,41 +13333,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "23633:9:26" + "src": "23669:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "23644:6:26" + "src": "23680:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "23629:3:26" + "src": "23665:3:40" }, "nodeType": "YulFunctionCall", - "src": "23629:22:26" + "src": "23665:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "23653:7:26" + "src": "23689:7:40" } ], "functionName": { "name": "abi_decode_t_bool", "nodeType": "YulIdentifier", - "src": "23611:17:26" + "src": "23647:17:40" }, "nodeType": "YulFunctionCall", - "src": "23611:50:26" + "src": "23647:50:40" }, "variableNames": [ { "name": "value3", "nodeType": "YulIdentifier", - "src": "23601:6:26" + "src": "23637:6:40" } ] } @@ -15056,19 +13375,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_bool", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bool", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "22952:9:26", + "src": "22986:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "22963:7:26", + "src": "22997:7:40", "type": "" } ], @@ -15076,39 +13395,39 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "22975:6:26", + "src": "23009:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "22983:6:26", + "src": "23017:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "22991:6:26", + "src": "23025:6:40", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "22999:6:26", + "src": "23033:6:40", "type": "" } ], - "src": "22865:813:26" + "src": "22897:817:40" }, { "body": { "nodeType": "YulBlock", - "src": "23812:547:26", + "src": "23850:549:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "23858:83:26", + "src": "23896:83:40", "statements": [ { "expression": { @@ -15116,13 +13435,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "23860:77:26" + "src": "23898:77:40" }, "nodeType": "YulFunctionCall", - "src": "23860:79:26" + "src": "23898:79:40" }, "nodeType": "YulExpressionStatement", - "src": "23860:79:26" + "src": "23898:79:40" } ] }, @@ -15133,26 +13452,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "23833:7:26" + "src": "23871:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "23842:9:26" + "src": "23880:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "23829:3:26" + "src": "23867:3:40" }, "nodeType": "YulFunctionCall", - "src": "23829:23:26" + "src": "23867:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "23854:2:26", + "src": "23892:2:40", "type": "", "value": "96" } @@ -15160,25 +13479,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "23825:3:26" + "src": "23863:3:40" }, "nodeType": "YulFunctionCall", - "src": "23825:32:26" + "src": "23863:32:40" }, "nodeType": "YulIf", - "src": "23822:119:26" + "src": "23860:119:40" }, { "nodeType": "YulBlock", - "src": "23951:131:26", + "src": "23989:132:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "23966:15:26", + "src": "24004:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "23980:1:26", + "src": "24018:1:40", "type": "", "value": "0" }, @@ -15186,14 +13505,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "23970:6:26", + "src": "24008:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "23995:77:26", + "src": "24033:78:40", "value": { "arguments": [ { @@ -15201,41 +13520,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "24044:9:26" + "src": "24083:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "24055:6:26" + "src": "24094:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24040:3:26" + "src": "24079:3:40" }, "nodeType": "YulFunctionCall", - "src": "24040:22:26" + "src": "24079:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "24064:7:26" + "src": "24103:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "24005:34:26" + "src": "24043:35:40" }, "nodeType": "YulFunctionCall", - "src": "24005:67:26" + "src": "24043:68:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "23995:6:26" + "src": "24033:6:40" } ] } @@ -15243,15 +13562,15 @@ }, { "nodeType": "YulBlock", - "src": "24092:132:26", + "src": "24131:133:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "24107:16:26", + "src": "24146:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "24121:2:26", + "src": "24160:2:40", "type": "", "value": "32" }, @@ -15259,14 +13578,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "24111:6:26", + "src": "24150:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "24137:77:26", + "src": "24176:78:40", "value": { "arguments": [ { @@ -15274,41 +13593,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "24186:9:26" + "src": "24226:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "24197:6:26" + "src": "24237:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24182:3:26" + "src": "24222:3:40" }, "nodeType": "YulFunctionCall", - "src": "24182:22:26" + "src": "24222:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "24206:7:26" + "src": "24246:7:40" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$690", + "name": "abi_decode_t_contract$_IERC20_$1838", "nodeType": "YulIdentifier", - "src": "24147:34:26" + "src": "24186:35:40" }, "nodeType": "YulFunctionCall", - "src": "24147:67:26" + "src": "24186:68:40" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "24137:6:26" + "src": "24176:6:40" } ] } @@ -15316,15 +13635,15 @@ }, { "nodeType": "YulBlock", - "src": "24234:118:26", + "src": "24274:118:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "24249:16:26", + "src": "24289:16:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "24263:2:26", + "src": "24303:2:40", "type": "", "value": "64" }, @@ -15332,14 +13651,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "24253:6:26", + "src": "24293:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "24279:63:26", + "src": "24319:63:40", "value": { "arguments": [ { @@ -15347,41 +13666,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "24314:9:26" + "src": "24354:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "24325:6:26" + "src": "24365:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24310:3:26" + "src": "24350:3:40" }, "nodeType": "YulFunctionCall", - "src": "24310:22:26" + "src": "24350:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "24334:7:26" + "src": "24374:7:40" } ], "functionName": { "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "24289:20:26" + "src": "24329:20:40" }, "nodeType": "YulFunctionCall", - "src": "24289:53:26" + "src": "24329:53:40" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "24279:6:26" + "src": "24319:6:40" } ] } @@ -15389,19 +13708,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint256", + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "23766:9:26", + "src": "23804:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "23777:7:26", + "src": "23815:7:40", "type": "" } ], @@ -15409,43 +13728,43 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "23789:6:26", + "src": "23827:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "23797:6:26", + "src": "23835:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "23805:6:26", + "src": "23843:6:40", "type": "" } ], - "src": "23684:675:26" + "src": "23720:679:40" }, { "body": { "nodeType": "YulBlock", - "src": "24583:769:26", + "src": "24623:769:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "24593:26:26", + "src": "24633:26:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "24609:3:26" + "src": "24649:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "24614:4:26", + "src": "24654:4:40", "type": "", "value": "0x80" } @@ -15453,27 +13772,27 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24605:3:26" + "src": "24645:3:40" }, "nodeType": "YulFunctionCall", - "src": "24605:14:26" + "src": "24645:14:40" }, "variables": [ { "name": "tail", "nodeType": "YulTypedName", - "src": "24597:4:26", + "src": "24637:4:40", "type": "" } ] }, { "nodeType": "YulBlock", - "src": "24629:165:26", + "src": "24669:165:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "24667:43:26", + "src": "24707:43:40", "value": { "arguments": [ { @@ -15481,12 +13800,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "24697:5:26" + "src": "24737:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "24704:4:26", + "src": "24744:4:40", "type": "", "value": "0x00" } @@ -15494,25 +13813,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24693:3:26" + "src": "24733:3:40" }, "nodeType": "YulFunctionCall", - "src": "24693:16:26" + "src": "24733:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "24687:5:26" + "src": "24727:5:40" }, "nodeType": "YulFunctionCall", - "src": "24687:23:26" + "src": "24727:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "24671:12:26", + "src": "24711:12:40", "type": "" } ] @@ -15523,19 +13842,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "24755:12:26" + "src": "24795:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "24773:3:26" + "src": "24813:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "24778:4:26", + "src": "24818:4:40", "type": "", "value": "0x00" } @@ -15543,32 +13862,32 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24769:3:26" + "src": "24809:3:40" }, "nodeType": "YulFunctionCall", - "src": "24769:14:26" + "src": "24809:14:40" } ], "functionName": { "name": "abi_encode_t_uint16_to_t_uint16", "nodeType": "YulIdentifier", - "src": "24723:31:26" + "src": "24763:31:40" }, "nodeType": "YulFunctionCall", - "src": "24723:61:26" + "src": "24763:61:40" }, "nodeType": "YulExpressionStatement", - "src": "24723:61:26" + "src": "24763:61:40" } ] }, { "nodeType": "YulBlock", - "src": "24804:182:26", + "src": "24844:182:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "24841:43:26", + "src": "24881:43:40", "value": { "arguments": [ { @@ -15576,12 +13895,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "24871:5:26" + "src": "24911:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "24878:4:26", + "src": "24918:4:40", "type": "", "value": "0x20" } @@ -15589,25 +13908,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24867:3:26" + "src": "24907:3:40" }, "nodeType": "YulFunctionCall", - "src": "24867:16:26" + "src": "24907:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "24861:5:26" + "src": "24901:5:40" }, "nodeType": "YulFunctionCall", - "src": "24861:23:26" + "src": "24901:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "24845:12:26", + "src": "24885:12:40", "type": "" } ] @@ -15618,19 +13937,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "24947:12:26" + "src": "24987:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "24965:3:26" + "src": "25005:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "24970:4:26", + "src": "25010:4:40", "type": "", "value": "0x20" } @@ -15638,32 +13957,32 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "24961:3:26" + "src": "25001:3:40" }, "nodeType": "YulFunctionCall", - "src": "24961:14:26" + "src": "25001:14:40" } ], "functionName": { - "name": "abi_encode_t_contract$_ILBPair_$6147_to_t_address", + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address", "nodeType": "YulIdentifier", - "src": "24897:49:26" + "src": "24937:49:40" }, "nodeType": "YulFunctionCall", - "src": "24897:79:26" + "src": "24937:79:40" }, "nodeType": "YulExpressionStatement", - "src": "24897:79:26" + "src": "24937:79:40" } ] }, { "nodeType": "YulBlock", - "src": "24996:168:26", + "src": "25036:168:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "25041:43:26", + "src": "25081:43:40", "value": { "arguments": [ { @@ -15671,12 +13990,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "25071:5:26" + "src": "25111:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "25078:4:26", + "src": "25118:4:40", "type": "", "value": "0x40" } @@ -15684,25 +14003,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "25067:3:26" + "src": "25107:3:40" }, "nodeType": "YulFunctionCall", - "src": "25067:16:26" + "src": "25107:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "25061:5:26" + "src": "25101:5:40" }, "nodeType": "YulFunctionCall", - "src": "25061:23:26" + "src": "25101:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "25045:12:26", + "src": "25085:12:40", "type": "" } ] @@ -15713,19 +14032,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "25125:12:26" + "src": "25165:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "25143:3:26" + "src": "25183:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "25148:4:26", + "src": "25188:4:40", "type": "", "value": "0x40" } @@ -15733,32 +14052,32 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "25139:3:26" + "src": "25179:3:40" }, "nodeType": "YulFunctionCall", - "src": "25139:14:26" + "src": "25179:14:40" } ], "functionName": { "name": "abi_encode_t_bool_to_t_bool", "nodeType": "YulIdentifier", - "src": "25097:27:26" + "src": "25137:27:40" }, "nodeType": "YulFunctionCall", - "src": "25097:57:26" + "src": "25137:57:40" }, "nodeType": "YulExpressionStatement", - "src": "25097:57:26" + "src": "25137:57:40" } ] }, { "nodeType": "YulBlock", - "src": "25174:171:26", + "src": "25214:171:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "25222:43:26", + "src": "25262:43:40", "value": { "arguments": [ { @@ -15766,12 +14085,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "25252:5:26" + "src": "25292:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "25259:4:26", + "src": "25299:4:40", "type": "", "value": "0x60" } @@ -15779,25 +14098,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "25248:3:26" + "src": "25288:3:40" }, "nodeType": "YulFunctionCall", - "src": "25248:16:26" + "src": "25288:16:40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "25242:5:26" + "src": "25282:5:40" }, "nodeType": "YulFunctionCall", - "src": "25242:23:26" + "src": "25282:23:40" }, "variables": [ { "name": "memberValue0", "nodeType": "YulTypedName", - "src": "25226:12:26", + "src": "25266:12:40", "type": "" } ] @@ -15808,19 +14127,19 @@ { "name": "memberValue0", "nodeType": "YulIdentifier", - "src": "25306:12:26" + "src": "25346:12:40" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "25324:3:26" + "src": "25364:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "25329:4:26", + "src": "25369:4:40", "type": "", "value": "0x60" } @@ -15828,64 +14147,64 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "25320:3:26" + "src": "25360:3:40" }, "nodeType": "YulFunctionCall", - "src": "25320:14:26" + "src": "25360:14:40" } ], "functionName": { "name": "abi_encode_t_bool_to_t_bool", "nodeType": "YulIdentifier", - "src": "25278:27:26" + "src": "25318:27:40" }, "nodeType": "YulFunctionCall", - "src": "25278:57:26" + "src": "25318:57:40" }, "nodeType": "YulExpressionStatement", - "src": "25278:57:26" + "src": "25318:57:40" } ] } ] }, - "name": "abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr_fromStack", + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "24570:5:26", + "src": "24610:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "24577:3:26", + "src": "24617:3:40", "type": "" } ], - "src": "24447:905:26" + "src": "24487:905:40" }, { "body": { "nodeType": "YulBlock", - "src": "25526:195:26", + "src": "25566:195:40", "statements": [ { "nodeType": "YulAssignment", - "src": "25536:27:26", + "src": "25576:27:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "25548:9:26" + "src": "25588:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "25559:3:26", + "src": "25599:3:40", "type": "", "value": "128" } @@ -15893,16 +14212,126 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "25544:3:26" + "src": "25584:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25584:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25576:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25727:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25740:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25751:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25736:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25736:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25613:113:40" + }, + "nodeType": "YulFunctionCall", + "src": "25613:141:40" + }, + "nodeType": "YulExpressionStatement", + "src": "25613:141:40" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_LBPairInformation_$6974_memory_ptr__to_t_struct$_LBPairInformation_$6974_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25538:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25550:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25561:4:40", + "type": "" + } + ], + "src": "25398:363:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26055:697:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26065:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26077:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26088:3:40", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26073:3:40" }, "nodeType": "YulFunctionCall", - "src": "25544:19:26" + "src": "26073:19:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "25536:4:26" + "src": "26065:4:40" } ] }, @@ -15910,535 +14339,831 @@ "expression": { "arguments": [ { - "name": "value0", + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26146:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26159:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26170:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26155:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26155:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26102:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26102:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26102:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", "nodeType": "YulIdentifier", - "src": "25687:6:26" + "src": "26227:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "25700:9:26" + "src": "26240:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "25711:1:26", + "src": "26251:2:40", "type": "", - "value": "0" + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "25696:3:26" + "src": "26236:3:40" }, "nodeType": "YulFunctionCall", - "src": "25696:17:26" + "src": "26236:18:40" } ], "functionName": { - "name": "abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr_fromStack", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "25573:113:26" + "src": "26183:43:40" }, "nodeType": "YulFunctionCall", - "src": "25573:141:26" + "src": "26183:72:40" }, "nodeType": "YulExpressionStatement", - "src": "25573:141:26" - } - ] - }, - "name": "abi_encode_tuple_t_struct$_LBPairInformation_$5157_memory_ptr__to_t_struct$_LBPairInformation_$5157_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "25498:9:26", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "25510:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "25521:4:26", - "type": "" - } - ], - "src": "25358:363:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "26015:697:26", - "statements": [ + "src": "26183:72:40" + }, { - "nodeType": "YulAssignment", - "src": "26025:27:26", - "value": { + "expression": { "arguments": [ { - "name": "headStart", + "name": "value2", "nodeType": "YulIdentifier", - "src": "26037:9:26" + "src": "26309:6:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "26048:3:26", - "type": "", - "value": "256" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26322:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26333:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26318:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26318:18:40" } ], "functionName": { - "name": "add", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26033:3:26" + "src": "26265:43:40" }, "nodeType": "YulFunctionCall", - "src": "26033:19:26" + "src": "26265:72:40" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "26025:4:26" - } - ] + "nodeType": "YulExpressionStatement", + "src": "26265:72:40" }, { "expression": { "arguments": [ { - "name": "value0", + "name": "value3", "nodeType": "YulIdentifier", - "src": "26106:6:26" + "src": "26391:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26119:9:26" + "src": "26404:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26130:1:26", + "src": "26415:2:40", "type": "", - "value": "0" + "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26115:3:26" + "src": "26400:3:40" }, "nodeType": "YulFunctionCall", - "src": "26115:17:26" + "src": "26400:18:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26062:43:26" + "src": "26347:43:40" }, "nodeType": "YulFunctionCall", - "src": "26062:71:26" + "src": "26347:72:40" }, "nodeType": "YulExpressionStatement", - "src": "26062:71:26" + "src": "26347:72:40" }, { "expression": { "arguments": [ { - "name": "value1", + "name": "value4", "nodeType": "YulIdentifier", - "src": "26187:6:26" + "src": "26473:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26200:9:26" + "src": "26486:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26211:2:26", + "src": "26497:3:40", "type": "", - "value": "32" + "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26196:3:26" + "src": "26482:3:40" }, "nodeType": "YulFunctionCall", - "src": "26196:18:26" + "src": "26482:19:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26143:43:26" + "src": "26429:43:40" }, "nodeType": "YulFunctionCall", - "src": "26143:72:26" + "src": "26429:73:40" }, "nodeType": "YulExpressionStatement", - "src": "26143:72:26" + "src": "26429:73:40" }, { "expression": { "arguments": [ { - "name": "value2", + "name": "value5", "nodeType": "YulIdentifier", - "src": "26269:6:26" + "src": "26556:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26282:9:26" + "src": "26569:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26293:2:26", + "src": "26580:3:40", "type": "", - "value": "64" + "value": "160" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26278:3:26" + "src": "26565:3:40" }, "nodeType": "YulFunctionCall", - "src": "26278:18:26" + "src": "26565:19:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26225:43:26" + "src": "26512:43:40" }, "nodeType": "YulFunctionCall", - "src": "26225:72:26" + "src": "26512:73:40" }, "nodeType": "YulExpressionStatement", - "src": "26225:72:26" + "src": "26512:73:40" }, { "expression": { "arguments": [ { - "name": "value3", + "name": "value6", "nodeType": "YulIdentifier", - "src": "26351:6:26" + "src": "26639:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26364:9:26" + "src": "26652:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26375:2:26", + "src": "26663:3:40", "type": "", - "value": "96" + "value": "192" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26360:3:26" + "src": "26648:3:40" }, "nodeType": "YulFunctionCall", - "src": "26360:18:26" + "src": "26648:19:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26307:43:26" + "src": "26595:43:40" }, "nodeType": "YulFunctionCall", - "src": "26307:72:26" + "src": "26595:73:40" }, "nodeType": "YulExpressionStatement", - "src": "26307:72:26" + "src": "26595:73:40" }, { "expression": { "arguments": [ { - "name": "value4", + "name": "value7", "nodeType": "YulIdentifier", - "src": "26433:6:26" + "src": "26716:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26446:9:26" + "src": "26729:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26457:3:26", + "src": "26740:3:40", "type": "", - "value": "128" + "value": "224" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26442:3:26" + "src": "26725:3:40" }, "nodeType": "YulFunctionCall", - "src": "26442:19:26" + "src": "26725:19:40" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "abi_encode_t_bool_to_t_bool_fromStack", "nodeType": "YulIdentifier", - "src": "26389:43:26" + "src": "26678:37:40" }, "nodeType": "YulFunctionCall", - "src": "26389:73:26" + "src": "26678:67:40" }, "nodeType": "YulExpressionStatement", - "src": "26389:73:26" + "src": "26678:67:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25971:9:40", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "25983:6:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "25991:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "25999:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "26007:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "26015:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "26023:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26031:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26039:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26050:4:40", + "type": "" + } + ], + "src": "25767:985:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26875:648:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "26922:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "26924:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "26924:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26924:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26896:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26905:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26892:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26892:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26917:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "26888:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26888:33:40" + }, + "nodeType": "YulIf", + "src": "26885:120:40" + }, + { + "nodeType": "YulBlock", + "src": "27015:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27030:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27044:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27034:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27059:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27094:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27105:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27090:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27090:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27114:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "27069:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "27069:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27059:6:40" + } + ] + } + ] }, { - "expression": { - "arguments": [ - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "26516:6:26" + "nodeType": "YulBlock", + "src": "27142:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27157:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27171:2:40", + "type": "", + "value": "32" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27161:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27187:63:40", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "26529:9:26" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27222:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27233:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27218:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27218:22:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "26540:3:26", - "type": "", - "value": "160" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27242:7:40" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "26525:3:26" + "src": "27197:20:40" }, "nodeType": "YulFunctionCall", - "src": "26525:19:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "26472:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "26472:73:26" - }, - "nodeType": "YulExpressionStatement", - "src": "26472:73:26" + "src": "27197:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27187:6:40" + } + ] + } + ] }, { - "expression": { - "arguments": [ - { - "name": "value6", - "nodeType": "YulIdentifier", - "src": "26599:6:26" + "nodeType": "YulBlock", + "src": "27270:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27285:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27299:2:40", + "type": "", + "value": "64" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27289:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27315:63:40", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "26612:9:26" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27350:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27361:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27346:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27346:22:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "26623:3:26", - "type": "", - "value": "192" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27370:7:40" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "26608:3:26" + "src": "27325:20:40" }, "nodeType": "YulFunctionCall", - "src": "26608:19:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "26555:43:26" - }, - "nodeType": "YulFunctionCall", - "src": "26555:73:26" - }, - "nodeType": "YulExpressionStatement", - "src": "26555:73:26" + "src": "27325:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "27315:6:40" + } + ] + } + ] }, { - "expression": { - "arguments": [ - { - "name": "value7", - "nodeType": "YulIdentifier", - "src": "26676:6:26" + "nodeType": "YulBlock", + "src": "27398:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27413:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27427:2:40", + "type": "", + "value": "96" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27417:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27443:63:40", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "26689:9:26" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27478:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27489:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27474:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27474:22:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "26700:3:26", - "type": "", - "value": "224" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27498:7:40" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "26685:3:26" + "src": "27453:20:40" }, "nodeType": "YulFunctionCall", - "src": "26685:19:26" - } - ], - "functionName": { - "name": "abi_encode_t_bool_to_t_bool_fromStack", - "nodeType": "YulIdentifier", - "src": "26638:37:26" - }, - "nodeType": "YulFunctionCall", - "src": "26638:67:26" - }, - "nodeType": "YulExpressionStatement", - "src": "26638:67:26" + "src": "27453:53:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "27443:6:40" + } + ] + } + ] } ] }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed", + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "25931:9:26", - "type": "" - }, - { - "name": "value7", - "nodeType": "YulTypedName", - "src": "25943:6:26", - "type": "" - }, - { - "name": "value6", - "nodeType": "YulTypedName", - "src": "25951:6:26", + "src": "26821:9:40", "type": "" }, { - "name": "value5", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "25959:6:26", + "src": "26832:7:40", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "value4", + "name": "value0", "nodeType": "YulTypedName", - "src": "25967:6:26", + "src": "26844:6:40", "type": "" }, { - "name": "value3", + "name": "value1", "nodeType": "YulTypedName", - "src": "25975:6:26", + "src": "26852:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "25983:6:26", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "25991:6:26", + "src": "26860:6:40", "type": "" }, { - "name": "value0", - "nodeType": "YulTypedName", - "src": "25999:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", + "name": "value3", "nodeType": "YulTypedName", - "src": "26010:4:26", + "src": "26868:6:40", "type": "" } ], - "src": "25727:985:26" + "src": "26758:765:40" }, { "body": { "nodeType": "YulBlock", - "src": "26784:263:26", + "src": "27594:262:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "26830:83:26", + "src": "27640:83:40", "statements": [ { "expression": { @@ -16446,13 +15171,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "26832:77:26" + "src": "27642:77:40" }, "nodeType": "YulFunctionCall", - "src": "26832:79:26" + "src": "27642:79:40" }, "nodeType": "YulExpressionStatement", - "src": "26832:79:26" + "src": "27642:79:40" } ] }, @@ -16463,26 +15188,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "26805:7:26" + "src": "27615:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26814:9:26" + "src": "27624:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "26801:3:26" + "src": "27611:3:40" }, "nodeType": "YulFunctionCall", - "src": "26801:23:26" + "src": "27611:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26826:2:26", + "src": "27636:2:40", "type": "", "value": "32" } @@ -16490,25 +15215,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "26797:3:26" + "src": "27607:3:40" }, "nodeType": "YulFunctionCall", - "src": "26797:32:26" + "src": "27607:32:40" }, "nodeType": "YulIf", - "src": "26794:119:26" + "src": "27604:119:40" }, { "nodeType": "YulBlock", - "src": "26923:117:26", + "src": "27733:116:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "26938:15:26", + "src": "27748:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "26952:1:26", + "src": "27762:1:40", "type": "", "value": "0" }, @@ -16516,14 +15241,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "26942:6:26", + "src": "27752:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "26967:63:26", + "src": "27777:62:40", "value": { "arguments": [ { @@ -16531,41 +15256,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "27002:9:26" + "src": "27811:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "27013:6:26" + "src": "27822:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26998:3:26" + "src": "27807:3:40" }, "nodeType": "YulFunctionCall", - "src": "26998:22:26" + "src": "27807:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "27022:7:26" + "src": "27831:7:40" } ], "functionName": { - "name": "abi_decode_t_address", + "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "26977:20:26" + "src": "27787:19:40" }, "nodeType": "YulFunctionCall", - "src": "26977:53:26" + "src": "27787:52:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "26967:6:26" + "src": "27777:6:40" } ] } @@ -16573,19 +15298,19 @@ } ] }, - "name": "abi_decode_tuple_t_address", + "name": "abi_decode_tuple_t_uint16", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "26754:9:26", + "src": "27564:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "26765:7:26", + "src": "27575:7:40", "type": "" } ], @@ -16593,21 +15318,21 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "26777:6:26", + "src": "27587:6:40", "type": "" } ], - "src": "26718:329:26" + "src": "27529:327:40" }, { "body": { "nodeType": "YulBlock", - "src": "27118:262:26", + "src": "27928:263:40", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "27164:83:26", + "src": "27974:83:40", "statements": [ { "expression": { @@ -16615,13 +15340,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "27166:77:26" + "src": "27976:77:40" }, "nodeType": "YulFunctionCall", - "src": "27166:79:26" + "src": "27976:79:40" }, "nodeType": "YulExpressionStatement", - "src": "27166:79:26" + "src": "27976:79:40" } ] }, @@ -16632,26 +15357,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "27139:7:26" + "src": "27949:7:40" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "27148:9:26" + "src": "27958:9:40" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "27135:3:26" + "src": "27945:3:40" }, "nodeType": "YulFunctionCall", - "src": "27135:23:26" + "src": "27945:23:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27160:2:26", + "src": "27970:2:40", "type": "", "value": "32" } @@ -16659,25 +15384,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "27131:3:26" + "src": "27941:3:40" }, "nodeType": "YulFunctionCall", - "src": "27131:32:26" + "src": "27941:32:40" }, "nodeType": "YulIf", - "src": "27128:119:26" + "src": "27938:119:40" }, { "nodeType": "YulBlock", - "src": "27257:116:26", + "src": "28067:117:40", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "27272:15:26", + "src": "28082:15:40", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "27286:1:26", + "src": "28096:1:40", "type": "", "value": "0" }, @@ -16685,14 +15410,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "27276:6:26", + "src": "28086:6:40", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "27301:62:26", + "src": "28111:63:40", "value": { "arguments": [ { @@ -16700,41 +15425,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "27335:9:26" + "src": "28146:9:40" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "27346:6:26" + "src": "28157:6:40" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "27331:3:26" + "src": "28142:3:40" }, "nodeType": "YulFunctionCall", - "src": "27331:22:26" + "src": "28142:22:40" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "27355:7:26" + "src": "28166:7:40" } ], "functionName": { - "name": "abi_decode_t_uint16", + "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "27311:19:26" + "src": "28121:20:40" }, "nodeType": "YulFunctionCall", - "src": "27311:52:26" + "src": "28121:53:40" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "27301:6:26" + "src": "28111:6:40" } ] } @@ -16742,19 +15467,19 @@ } ] }, - "name": "abi_decode_tuple_t_uint16", + "name": "abi_decode_tuple_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "27088:9:26", + "src": "27898:9:40", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "27099:7:26", + "src": "27909:7:40", "type": "" } ], @@ -16762,16 +15487,16 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "27111:6:26", + "src": "27921:6:40", "type": "" } ], - "src": "27053:327:26" + "src": "27862:329:40" }, { "body": { "nodeType": "YulBlock", - "src": "27414:152:26", + "src": "28225:152:40", "statements": [ { "expression": { @@ -16779,14 +15504,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27431:1:26", + "src": "28242:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27434:77:26", + "src": "28245:77:40", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -16794,13 +15519,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "27424:6:26" + "src": "28235:6:40" }, "nodeType": "YulFunctionCall", - "src": "27424:88:26" + "src": "28235:88:40" }, "nodeType": "YulExpressionStatement", - "src": "27424:88:26" + "src": "28235:88:40" }, { "expression": { @@ -16808,14 +15533,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27528:1:26", + "src": "28339:1:40", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27531:4:26", + "src": "28342:4:40", "type": "", "value": "0x41" } @@ -16823,13 +15548,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "27521:6:26" + "src": "28332:6:40" }, "nodeType": "YulFunctionCall", - "src": "27521:15:26" + "src": "28332:15:40" }, "nodeType": "YulExpressionStatement", - "src": "27521:15:26" + "src": "28332:15:40" }, { "expression": { @@ -16837,14 +15562,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27552:1:26", + "src": "28363:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27555:4:26", + "src": "28366:4:40", "type": "", "value": "0x24" } @@ -16852,24 +15577,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "27545:6:26" + "src": "28356:6:40" }, "nodeType": "YulFunctionCall", - "src": "27545:15:26" + "src": "28356:15:40" }, "nodeType": "YulExpressionStatement", - "src": "27545:15:26" + "src": "28356:15:40" } ] }, "name": "panic_error_0x41", "nodeType": "YulFunctionDefinition", - "src": "27386:180:26" + "src": "28197:180:40" }, { "body": { "nodeType": "YulBlock", - "src": "27600:152:26", + "src": "28411:152:40", "statements": [ { "expression": { @@ -16877,14 +15602,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27617:1:26", + "src": "28428:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27620:77:26", + "src": "28431:77:40", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -16892,13 +15617,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "27610:6:26" + "src": "28421:6:40" }, "nodeType": "YulFunctionCall", - "src": "27610:88:26" + "src": "28421:88:40" }, "nodeType": "YulExpressionStatement", - "src": "27610:88:26" + "src": "28421:88:40" }, { "expression": { @@ -16906,14 +15631,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27714:1:26", + "src": "28525:1:40", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27717:4:26", + "src": "28528:4:40", "type": "", "value": "0x32" } @@ -16921,13 +15646,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "27707:6:26" + "src": "28518:6:40" }, "nodeType": "YulFunctionCall", - "src": "27707:15:26" + "src": "28518:15:40" }, "nodeType": "YulExpressionStatement", - "src": "27707:15:26" + "src": "28518:15:40" }, { "expression": { @@ -16935,14 +15660,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27738:1:26", + "src": "28549:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27741:4:26", + "src": "28552:4:40", "type": "", "value": "0x24" } @@ -16950,24 +15675,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "27731:6:26" + "src": "28542:6:40" }, "nodeType": "YulFunctionCall", - "src": "27731:15:26" + "src": "28542:15:40" }, "nodeType": "YulExpressionStatement", - "src": "27731:15:26" + "src": "28542:15:40" } ] }, "name": "panic_error_0x32", "nodeType": "YulFunctionDefinition", - "src": "27572:180:26" + "src": "28383:180:40" }, { "body": { "nodeType": "YulBlock", - "src": "27786:152:26", + "src": "28597:152:40", "statements": [ { "expression": { @@ -16975,14 +15700,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27803:1:26", + "src": "28614:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27806:77:26", + "src": "28617:77:40", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -16990,13 +15715,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "27796:6:26" + "src": "28607:6:40" }, "nodeType": "YulFunctionCall", - "src": "27796:88:26" + "src": "28607:88:40" }, "nodeType": "YulExpressionStatement", - "src": "27796:88:26" + "src": "28607:88:40" }, { "expression": { @@ -17004,14 +15729,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27900:1:26", + "src": "28711:1:40", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27903:4:26", + "src": "28714:4:40", "type": "", "value": "0x11" } @@ -17019,13 +15744,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "27893:6:26" + "src": "28704:6:40" }, "nodeType": "YulFunctionCall", - "src": "27893:15:26" + "src": "28704:15:40" }, "nodeType": "YulExpressionStatement", - "src": "27893:15:26" + "src": "28704:15:40" }, { "expression": { @@ -17033,14 +15758,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "27924:1:26", + "src": "28735:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27927:4:26", + "src": "28738:4:40", "type": "", "value": "0x24" } @@ -17048,56 +15773,56 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "27917:6:26" + "src": "28728:6:40" }, "nodeType": "YulFunctionCall", - "src": "27917:15:26" + "src": "28728:15:40" }, "nodeType": "YulExpressionStatement", - "src": "27917:15:26" + "src": "28728:15:40" } ] }, "name": "panic_error_0x11", "nodeType": "YulFunctionDefinition", - "src": "27758:180:26" + "src": "28569:180:40" }, { "body": { "nodeType": "YulBlock", - "src": "27987:190:26", + "src": "28798:190:40", "statements": [ { "nodeType": "YulAssignment", - "src": "27997:33:26", + "src": "28808:33:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "28024:5:26" + "src": "28835:5:40" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "28006:17:26" + "src": "28817:17:40" }, "nodeType": "YulFunctionCall", - "src": "28006:24:26" + "src": "28817:24:40" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "27997:5:26" + "src": "28808:5:40" } ] }, { "body": { "nodeType": "YulBlock", - "src": "28120:22:26", + "src": "28931:22:40", "statements": [ { "expression": { @@ -17105,13 +15830,13 @@ "functionName": { "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "28122:16:26" + "src": "28933:16:40" }, "nodeType": "YulFunctionCall", - "src": "28122:18:26" + "src": "28933:18:40" }, "nodeType": "YulExpressionStatement", - "src": "28122:18:26" + "src": "28933:18:40" } ] }, @@ -17120,163 +15845,493 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "28045:5:26" + "src": "28856:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "28052:66:26", + "src": "28863:66:40", "type": "", "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" } ], "functionName": { - "name": "eq", + "name": "eq", + "nodeType": "YulIdentifier", + "src": "28853:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "28853:77:40" + }, + "nodeType": "YulIf", + "src": "28850:103:40" + }, + { + "nodeType": "YulAssignment", + "src": "28962:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28973:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28980:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28969:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28969:13:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "28962:3:40" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "28784:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "28794:3:40", + "type": "" + } + ], + "src": "28755:233:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29053:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29063:65:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29120:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "29103:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "29103:23:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "29094:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "29094:33:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "29076:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "29076:52:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "29063:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint16_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29033:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "29043:9:40", + "type": "" + } + ], + "src": "28994:140:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29204:65:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29221:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29256:5:40" + } + ], + "functionName": { + "name": "convert_t_uint16_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "29226:29:40" + }, + "nodeType": "YulFunctionCall", + "src": "29226:36:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29214:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "29214:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29214:49:40" + } + ] + }, + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29192:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29199:3:40", + "type": "" + } + ], + "src": "29140:129:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29458:317:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29468:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29480:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29491:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29476:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29476:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "29468:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "29563:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29576:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29587:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29572:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29572:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "29504:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "29504:86:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29504:86:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29659:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29672:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29683:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29668:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29668:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "28042:2:26" + "src": "29600:58:40" }, "nodeType": "YulFunctionCall", - "src": "28042:77:26" + "src": "29600:87:40" }, - "nodeType": "YulIf", - "src": "28039:103:26" + "nodeType": "YulExpressionStatement", + "src": "29600:87:40" }, { - "nodeType": "YulAssignment", - "src": "28151:20:26", - "value": { + "expression": { "arguments": [ { - "name": "value", + "name": "value2", "nodeType": "YulIdentifier", - "src": "28162:5:26" + "src": "29740:6:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "28169:1:26", - "type": "", - "value": "1" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29753:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29764:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29749:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29749:18:40" } ], "functionName": { - "name": "add", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "28158:3:26" + "src": "29697:42:40" }, "nodeType": "YulFunctionCall", - "src": "28158:13:26" + "src": "29697:71:40" }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "28151:3:26" - } - ] + "nodeType": "YulExpressionStatement", + "src": "29697:71:40" } ] }, - "name": "increment_t_uint256", + "name": "abi_encode_tuple_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "29414:9:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "29426:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "29434:6:40", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "27973:5:26", + "src": "29442:6:40", "type": "" } ], "returnVariables": [ { - "name": "ret", + "name": "tail", "nodeType": "YulTypedName", - "src": "27983:3:26", + "src": "29453:4:40", "type": "" } ], - "src": "27944:233:26" + "src": "29275:500:40" }, { "body": { "nodeType": "YulBlock", - "src": "28242:81:26", + "src": "29844:52:40", "statements": [ { - "nodeType": "YulAssignment", - "src": "28252:65:26", - "value": { + "expression": { "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29861:3:40" + }, { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "28309:5:26" - } - ], - "functionName": { - "name": "cleanup_t_uint16", - "nodeType": "YulIdentifier", - "src": "28292:16:26" - }, - "nodeType": "YulFunctionCall", - "src": "28292:23:26" + "name": "value", + "nodeType": "YulIdentifier", + "src": "29883:5:40" } ], "functionName": { - "name": "identity", + "name": "cleanup_t_uint16", "nodeType": "YulIdentifier", - "src": "28283:8:26" + "src": "29866:16:40" }, "nodeType": "YulFunctionCall", - "src": "28283:33:26" + "src": "29866:23:40" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "28265:17:26" + "src": "29854:6:40" }, "nodeType": "YulFunctionCall", - "src": "28265:52:26" + "src": "29854:36:40" }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "28252:9:26" - } - ] + "nodeType": "YulExpressionStatement", + "src": "29854:36:40" } ] }, - "name": "convert_t_uint16_to_t_uint256", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "28222:5:26", + "src": "29832:5:40", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "converted", + "name": "pos", "nodeType": "YulTypedName", - "src": "28232:9:26", + "src": "29839:3:40", "type": "" } ], - "src": "28183:140:26" + "src": "29781:115:40" }, { "body": { "nodeType": "YulBlock", - "src": "28393:65:26", + "src": "29965:52:40", "statements": [ { "expression": { @@ -17284,251 +16339,447 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "28410:3:26" + "src": "29982:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "28445:5:26" + "src": "30004:5:40" } ], "functionName": { - "name": "convert_t_uint16_to_t_uint256", + "name": "cleanup_t_uint24", "nodeType": "YulIdentifier", - "src": "28415:29:26" + "src": "29987:16:40" }, "nodeType": "YulFunctionCall", - "src": "28415:36:26" + "src": "29987:23:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "28403:6:26" + "src": "29975:6:40" }, "nodeType": "YulFunctionCall", - "src": "28403:49:26" + "src": "29975:36:40" }, "nodeType": "YulExpressionStatement", - "src": "28403:49:26" + "src": "29975:36:40" } ] }, - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "28381:5:26", + "src": "29953:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "28388:3:26", + "src": "29960:3:40", "type": "" } ], - "src": "28329:129:26" + "src": "29902:115:40" }, { "body": { "nodeType": "YulBlock", - "src": "28645:315:26", + "src": "30275:606:40", "statements": [ { "nodeType": "YulAssignment", - "src": "28655:26:26", + "src": "30285:27:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "28667:9:26" + "src": "30297:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "28678:2:26", + "src": "30308:3:40", "type": "", - "value": "96" + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30293:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30293:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30285:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30364:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30377:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30388:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30373:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30373:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30322:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30322:69:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30322:69:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30443:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30456:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30467:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30452:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30452:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30401:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30401:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30401:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "30523:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30536:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30547:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30532:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30532:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30481:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30481:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30481:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "30603:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30616:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30627:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30612:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30612:18:40" } ], "functionName": { - "name": "add", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "28663:3:26" + "src": "30561:41:40" }, "nodeType": "YulFunctionCall", - "src": "28663:18:26" + "src": "30561:70:40" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "28655:4:26" - } - ] + "nodeType": "YulExpressionStatement", + "src": "30561:70:40" }, { "expression": { "arguments": [ { - "name": "value0", + "name": "value4", "nodeType": "YulIdentifier", - "src": "28749:6:26" + "src": "30683:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "28762:9:26" + "src": "30696:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "28773:1:26", + "src": "30707:3:40", "type": "", - "value": "0" + "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "28758:3:26" + "src": "30692:3:40" }, "nodeType": "YulFunctionCall", - "src": "28758:17:26" + "src": "30692:19:40" } ], "functionName": { - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulIdentifier", - "src": "28691:57:26" + "src": "30641:41:40" }, "nodeType": "YulFunctionCall", - "src": "28691:85:26" + "src": "30641:71:40" }, "nodeType": "YulExpressionStatement", - "src": "28691:85:26" + "src": "30641:71:40" }, { "expression": { "arguments": [ { - "name": "value1", + "name": "value5", "nodeType": "YulIdentifier", - "src": "28844:6:26" + "src": "30764:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "28857:9:26" + "src": "30777:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "28868:2:26", + "src": "30788:3:40", "type": "", - "value": "32" + "value": "160" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "28853:3:26" + "src": "30773:3:40" }, "nodeType": "YulFunctionCall", - "src": "28853:18:26" + "src": "30773:19:40" } ], "functionName": { - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "28786:57:26" + "src": "30722:41:40" }, "nodeType": "YulFunctionCall", - "src": "28786:86:26" + "src": "30722:71:40" }, "nodeType": "YulExpressionStatement", - "src": "28786:86:26" + "src": "30722:71:40" }, { "expression": { "arguments": [ { - "name": "value2", + "name": "value6", "nodeType": "YulIdentifier", - "src": "28925:6:26" + "src": "30845:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "28938:9:26" + "src": "30858:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "28949:2:26", + "src": "30869:3:40", "type": "", - "value": "64" + "value": "192" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "28934:3:26" + "src": "30854:3:40" }, "nodeType": "YulFunctionCall", - "src": "28934:18:26" + "src": "30854:19:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulIdentifier", - "src": "28882:42:26" + "src": "30803:41:40" }, "nodeType": "YulFunctionCall", - "src": "28882:71:26" + "src": "30803:71:40" }, "nodeType": "YulExpressionStatement", - "src": "28882:71:26" + "src": "30803:71:40" } ] }, - "name": "abi_encode_tuple_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed", + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "28601:9:26", + "src": "30199:9:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "30211:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "30219:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "30227:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "30235:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "28613:6:26", + "src": "30243:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "28621:6:26", + "src": "30251:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "28629:6:26", + "src": "30259:6:40", "type": "" } ], @@ -17536,77 +16787,202 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "28640:4:26", + "src": "30270:4:40", "type": "" } ], - "src": "28464:496:26" + "src": "30023:858:40" }, { "body": { "nodeType": "YulBlock", - "src": "29029:52:26", + "src": "30984:123:40", "statements": [ + { + "nodeType": "YulAssignment", + "src": "30994:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31006:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31017:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31002:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31002:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30994:4:40" + } + ] + }, { "expression": { "arguments": [ { - "name": "pos", + "name": "value0", "nodeType": "YulIdentifier", - "src": "29046:3:26" + "src": "31073:6:40" }, { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "29068:5:26" + "src": "31086:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31097:1:40", + "type": "", + "value": "0" } ], "functionName": { - "name": "cleanup_t_uint16", + "name": "add", "nodeType": "YulIdentifier", - "src": "29051:16:26" + "src": "31082:3:40" }, "nodeType": "YulFunctionCall", - "src": "29051:23:26" + "src": "31082:17:40" } ], "functionName": { - "name": "mstore", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29039:6:26" + "src": "31030:42:40" }, "nodeType": "YulFunctionCall", - "src": "29039:36:26" + "src": "31030:70:40" }, "nodeType": "YulExpressionStatement", - "src": "29039:36:26" + "src": "31030:70:40" } ] }, - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", "nodeType": "YulTypedName", - "src": "29017:5:26", + "src": "30956:9:40", "type": "" }, { - "name": "pos", + "name": "value0", + "nodeType": "YulTypedName", + "src": "30968:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30979:4:40", + "type": "" + } + ], + "src": "30887:220:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31172:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "31182:65:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "31239:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint24", + "nodeType": "YulIdentifier", + "src": "31222:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "31222:23:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "31213:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "31213:33:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "31195:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "31195:52:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "31182:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint24_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "31152:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", "nodeType": "YulTypedName", - "src": "29024:3:26", + "src": "31162:9:40", "type": "" } ], - "src": "28966:115:26" + "src": "31113:140:40" }, { "body": { "nodeType": "YulBlock", - "src": "29150:52:26", + "src": "31323:65:40", "statements": [ { "expression": { @@ -17614,75 +16990,75 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "29167:3:26" + "src": "31340:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "29189:5:26" + "src": "31375:5:40" } ], "functionName": { - "name": "cleanup_t_uint24", + "name": "convert_t_uint24_to_t_uint256", "nodeType": "YulIdentifier", - "src": "29172:16:26" + "src": "31345:29:40" }, "nodeType": "YulFunctionCall", - "src": "29172:23:26" + "src": "31345:36:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "29160:6:26" + "src": "31333:6:40" }, "nodeType": "YulFunctionCall", - "src": "29160:36:26" + "src": "31333:49:40" }, "nodeType": "YulExpressionStatement", - "src": "29160:36:26" + "src": "31333:49:40" } ] }, - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "abi_encode_t_uint24_to_t_uint256_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "29138:5:26", + "src": "31311:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "29145:3:26", + "src": "31318:3:40", "type": "" } ], - "src": "29087:115:26" + "src": "31259:129:40" }, { "body": { "nodeType": "YulBlock", - "src": "29460:606:26", + "src": "31653:613:40", "statements": [ { "nodeType": "YulAssignment", - "src": "29470:27:26", + "src": "31663:27:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29482:9:26" + "src": "31675:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "29493:3:26", + "src": "31686:3:40", "type": "", "value": "224" } @@ -17690,16 +17066,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29478:3:26" + "src": "31671:3:40" }, "nodeType": "YulFunctionCall", - "src": "29478:19:26" + "src": "31671:19:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "29470:4:26" + "src": "31663:4:40" } ] }, @@ -17709,19 +17085,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "29549:6:26" + "src": "31743:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29562:9:26" + "src": "31756:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "29573:1:26", + "src": "31767:1:40", "type": "", "value": "0" } @@ -17729,22 +17105,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29558:3:26" + "src": "31752:3:40" }, "nodeType": "YulFunctionCall", - "src": "29558:17:26" + "src": "31752:17:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29507:41:26" + "src": "31700:42:40" }, "nodeType": "YulFunctionCall", - "src": "29507:69:26" + "src": "31700:70:40" }, "nodeType": "YulExpressionStatement", - "src": "29507:69:26" + "src": "31700:70:40" }, { "expression": { @@ -17752,19 +17128,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "29628:6:26" + "src": "31823:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29641:9:26" + "src": "31836:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "29652:2:26", + "src": "31847:2:40", "type": "", "value": "32" } @@ -17772,22 +17148,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29637:3:26" + "src": "31832:3:40" }, "nodeType": "YulFunctionCall", - "src": "29637:18:26" + "src": "31832:18:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29586:41:26" + "src": "31780:42:40" }, "nodeType": "YulFunctionCall", - "src": "29586:70:26" + "src": "31780:71:40" }, "nodeType": "YulExpressionStatement", - "src": "29586:70:26" + "src": "31780:71:40" }, { "expression": { @@ -17795,19 +17171,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "29708:6:26" + "src": "31904:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29721:9:26" + "src": "31917:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "29732:2:26", + "src": "31928:2:40", "type": "", "value": "64" } @@ -17815,22 +17191,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29717:3:26" + "src": "31913:3:40" }, "nodeType": "YulFunctionCall", - "src": "29717:18:26" + "src": "31913:18:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29666:41:26" + "src": "31861:42:40" }, "nodeType": "YulFunctionCall", - "src": "29666:70:26" + "src": "31861:71:40" }, "nodeType": "YulExpressionStatement", - "src": "29666:70:26" + "src": "31861:71:40" }, { "expression": { @@ -17838,19 +17214,19 @@ { "name": "value3", "nodeType": "YulIdentifier", - "src": "29788:6:26" + "src": "31985:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29801:9:26" + "src": "31998:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "29812:2:26", + "src": "32009:2:40", "type": "", "value": "96" } @@ -17858,22 +17234,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29797:3:26" + "src": "31994:3:40" }, "nodeType": "YulFunctionCall", - "src": "29797:18:26" + "src": "31994:18:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29746:41:26" + "src": "31942:42:40" }, "nodeType": "YulFunctionCall", - "src": "29746:70:26" + "src": "31942:71:40" }, "nodeType": "YulExpressionStatement", - "src": "29746:70:26" + "src": "31942:71:40" }, { "expression": { @@ -17881,19 +17257,19 @@ { "name": "value4", "nodeType": "YulIdentifier", - "src": "29868:6:26" + "src": "32066:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29881:9:26" + "src": "32079:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "29892:3:26", + "src": "32090:3:40", "type": "", "value": "128" } @@ -17901,22 +17277,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29877:3:26" + "src": "32075:3:40" }, "nodeType": "YulFunctionCall", - "src": "29877:19:26" + "src": "32075:19:40" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "abi_encode_t_uint24_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29826:41:26" + "src": "32023:42:40" }, "nodeType": "YulFunctionCall", - "src": "29826:71:26" + "src": "32023:72:40" }, "nodeType": "YulExpressionStatement", - "src": "29826:71:26" + "src": "32023:72:40" }, { "expression": { @@ -17924,19 +17300,19 @@ { "name": "value5", "nodeType": "YulIdentifier", - "src": "29949:6:26" + "src": "32148:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29962:9:26" + "src": "32161:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "29973:3:26", + "src": "32172:3:40", "type": "", "value": "160" } @@ -17944,22 +17320,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29958:3:26" + "src": "32157:3:40" }, "nodeType": "YulFunctionCall", - "src": "29958:19:26" + "src": "32157:19:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29907:41:26" + "src": "32105:42:40" }, "nodeType": "YulFunctionCall", - "src": "29907:71:26" + "src": "32105:72:40" }, "nodeType": "YulExpressionStatement", - "src": "29907:71:26" + "src": "32105:72:40" }, { "expression": { @@ -17967,19 +17343,19 @@ { "name": "value6", "nodeType": "YulIdentifier", - "src": "30030:6:26" + "src": "32230:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "30043:9:26" + "src": "32243:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "30054:3:26", + "src": "32254:3:40", "type": "", "value": "192" } @@ -17987,74 +17363,74 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "30039:3:26" + "src": "32239:3:40" }, "nodeType": "YulFunctionCall", - "src": "30039:19:26" + "src": "32239:19:40" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "abi_encode_t_uint24_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "29988:41:26" + "src": "32187:42:40" }, "nodeType": "YulFunctionCall", - "src": "29988:71:26" + "src": "32187:72:40" }, "nodeType": "YulExpressionStatement", - "src": "29988:71:26" + "src": "32187:72:40" } ] }, - "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed", + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "29384:9:26", + "src": "31577:9:40", "type": "" }, { "name": "value6", "nodeType": "YulTypedName", - "src": "29396:6:26", + "src": "31589:6:40", "type": "" }, { "name": "value5", "nodeType": "YulTypedName", - "src": "29404:6:26", + "src": "31597:6:40", "type": "" }, { "name": "value4", "nodeType": "YulTypedName", - "src": "29412:6:26", + "src": "31605:6:40", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "29420:6:26", + "src": "31613:6:40", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "29428:6:26", + "src": "31621:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "29436:6:26", + "src": "31629:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "29444:6:26", + "src": "31637:6:40", "type": "" } ], @@ -18062,295 +17438,207 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "29455:4:26", + "src": "31648:4:40", "type": "" } ], - "src": "29208:858:26" + "src": "31394:872:40" }, { "body": { "nodeType": "YulBlock", - "src": "30169:123:26", + "src": "32397:205:40", "statements": [ { "nodeType": "YulAssignment", - "src": "30179:26:26", + "src": "32407:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "30191:9:26" + "src": "32419:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "30202:2:26", + "src": "32430:2:40", "type": "", - "value": "32" + "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "30187:3:26" + "src": "32415:3:40" }, "nodeType": "YulFunctionCall", - "src": "30187:18:26" + "src": "32415:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "30179:4:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "30258:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "30271:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "30282:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "30267:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "30267:17:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "30215:42:26" - }, - "nodeType": "YulFunctionCall", - "src": "30215:70:26" - }, - "nodeType": "YulExpressionStatement", - "src": "30215:70:26" - } - ] - }, - "name": "abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "30141:9:26", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "30153:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "30164:4:26", - "type": "" - } - ], - "src": "30072:220:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "30357:81:26", - "statements": [ + "src": "32407:4:40" + } + ] + }, { - "nodeType": "YulAssignment", - "src": "30367:65:26", - "value": { + "expression": { "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32487:6:40" + }, { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "30424:5:26" - } - ], - "functionName": { - "name": "cleanup_t_uint24", - "nodeType": "YulIdentifier", - "src": "30407:16:26" - }, - "nodeType": "YulFunctionCall", - "src": "30407:23:26" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32500:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32511:1:40", + "type": "", + "value": "0" } ], "functionName": { - "name": "identity", + "name": "add", "nodeType": "YulIdentifier", - "src": "30398:8:26" + "src": "32496:3:40" }, "nodeType": "YulFunctionCall", - "src": "30398:33:26" + "src": "32496:17:40" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "30380:17:26" + "src": "32443:43:40" }, "nodeType": "YulFunctionCall", - "src": "30380:52:26" + "src": "32443:71:40" }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "30367:9:26" - } - ] - } - ] - }, - "name": "convert_t_uint24_to_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "30337:5:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", - "nodeType": "YulTypedName", - "src": "30347:9:26", - "type": "" - } - ], - "src": "30298:140:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "30508:65:26", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "32443:71:40" + }, { "expression": { "arguments": [ { - "name": "pos", + "name": "value1", "nodeType": "YulIdentifier", - "src": "30525:3:26" + "src": "32567:6:40" }, { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "30560:5:26" + "src": "32580:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32591:2:40", + "type": "", + "value": "32" } ], "functionName": { - "name": "convert_t_uint24_to_t_uint256", + "name": "add", "nodeType": "YulIdentifier", - "src": "30530:29:26" + "src": "32576:3:40" }, "nodeType": "YulFunctionCall", - "src": "30530:36:26" + "src": "32576:18:40" } ], "functionName": { - "name": "mstore", + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "30518:6:26" + "src": "32524:42:40" }, "nodeType": "YulFunctionCall", - "src": "30518:49:26" + "src": "32524:71:40" }, "nodeType": "YulExpressionStatement", - "src": "30518:49:26" + "src": "32524:71:40" } ] }, - "name": "abi_encode_t_uint24_to_t_uint256_fromStack", + "name": "abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", "nodeType": "YulTypedName", - "src": "30496:5:26", + "src": "32361:9:40", "type": "" }, { - "name": "pos", + "name": "value1", + "nodeType": "YulTypedName", + "src": "32373:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32381:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", "nodeType": "YulTypedName", - "src": "30503:3:26", + "src": "32392:4:40", "type": "" } ], - "src": "30444:129:26" + "src": "32272:330:40" }, { "body": { "nodeType": "YulBlock", - "src": "30838:613:26", + "src": "32886:687:40", "statements": [ { "nodeType": "YulAssignment", - "src": "30848:27:26", + "src": "32896:27:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "30860:9:26" + "src": "32908:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "30871:3:26", + "src": "32919:3:40", "type": "", - "value": "224" + "value": "256" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "30856:3:26" + "src": "32904:3:40" }, "nodeType": "YulFunctionCall", - "src": "30856:19:26" + "src": "32904:19:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "30848:4:26" + "src": "32896:4:40" } ] }, @@ -18360,19 +17648,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "30928:6:26" + "src": "32975:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "30941:9:26" + "src": "32988:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "30952:1:26", + "src": "32999:1:40", "type": "", "value": "0" } @@ -18380,22 +17668,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "30937:3:26" + "src": "32984:3:40" }, "nodeType": "YulFunctionCall", - "src": "30937:17:26" + "src": "32984:17:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "30885:42:26" + "src": "32933:41:40" }, "nodeType": "YulFunctionCall", - "src": "30885:70:26" + "src": "32933:69:40" }, "nodeType": "YulExpressionStatement", - "src": "30885:70:26" + "src": "32933:69:40" }, { "expression": { @@ -18403,19 +17691,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "31008:6:26" + "src": "33054:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31021:9:26" + "src": "33067:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "31032:2:26", + "src": "33078:2:40", "type": "", "value": "32" } @@ -18423,22 +17711,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31017:3:26" + "src": "33063:3:40" }, "nodeType": "YulFunctionCall", - "src": "31017:18:26" + "src": "33063:18:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "30965:42:26" + "src": "33012:41:40" }, "nodeType": "YulFunctionCall", - "src": "30965:71:26" + "src": "33012:70:40" }, "nodeType": "YulExpressionStatement", - "src": "30965:71:26" + "src": "33012:70:40" }, { "expression": { @@ -18446,19 +17734,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "31089:6:26" + "src": "33134:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31102:9:26" + "src": "33147:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "31113:2:26", + "src": "33158:2:40", "type": "", "value": "64" } @@ -18466,22 +17754,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31098:3:26" + "src": "33143:3:40" }, "nodeType": "YulFunctionCall", - "src": "31098:18:26" + "src": "33143:18:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "31046:42:26" + "src": "33092:41:40" }, "nodeType": "YulFunctionCall", - "src": "31046:71:26" + "src": "33092:70:40" }, "nodeType": "YulExpressionStatement", - "src": "31046:71:26" + "src": "33092:70:40" }, { "expression": { @@ -18489,19 +17777,19 @@ { "name": "value3", "nodeType": "YulIdentifier", - "src": "31170:6:26" + "src": "33214:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31183:9:26" + "src": "33227:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "31194:2:26", + "src": "33238:2:40", "type": "", "value": "96" } @@ -18509,22 +17797,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31179:3:26" + "src": "33223:3:40" }, "nodeType": "YulFunctionCall", - "src": "31179:18:26" + "src": "33223:18:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "31127:42:26" + "src": "33172:41:40" }, "nodeType": "YulFunctionCall", - "src": "31127:71:26" + "src": "33172:70:40" }, "nodeType": "YulExpressionStatement", - "src": "31127:71:26" + "src": "33172:70:40" }, { "expression": { @@ -18532,19 +17820,19 @@ { "name": "value4", "nodeType": "YulIdentifier", - "src": "31251:6:26" + "src": "33294:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31264:9:26" + "src": "33307:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "31275:3:26", + "src": "33318:3:40", "type": "", "value": "128" } @@ -18552,22 +17840,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31260:3:26" + "src": "33303:3:40" }, "nodeType": "YulFunctionCall", - "src": "31260:19:26" + "src": "33303:19:40" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint256_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulIdentifier", - "src": "31208:42:26" + "src": "33252:41:40" }, "nodeType": "YulFunctionCall", - "src": "31208:72:26" + "src": "33252:71:40" }, "nodeType": "YulExpressionStatement", - "src": "31208:72:26" + "src": "33252:71:40" }, { "expression": { @@ -18575,19 +17863,19 @@ { "name": "value5", "nodeType": "YulIdentifier", - "src": "31333:6:26" + "src": "33375:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31346:9:26" + "src": "33388:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "31357:3:26", + "src": "33399:3:40", "type": "", "value": "160" } @@ -18595,22 +17883,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31342:3:26" + "src": "33384:3:40" }, "nodeType": "YulFunctionCall", - "src": "31342:19:26" + "src": "33384:19:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "31290:42:26" + "src": "33333:41:40" }, "nodeType": "YulFunctionCall", - "src": "31290:72:26" + "src": "33333:71:40" }, "nodeType": "YulExpressionStatement", - "src": "31290:72:26" + "src": "33333:71:40" }, { "expression": { @@ -18618,19 +17906,19 @@ { "name": "value6", "nodeType": "YulIdentifier", - "src": "31415:6:26" + "src": "33456:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31428:9:26" + "src": "33469:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "31439:3:26", + "src": "33480:3:40", "type": "", "value": "192" } @@ -18638,233 +17926,123 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31424:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "31424:19:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint24_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "31372:42:26" - }, - "nodeType": "YulFunctionCall", - "src": "31372:72:26" - }, - "nodeType": "YulExpressionStatement", - "src": "31372:72:26" - } - ] - }, - "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "30762:9:26", - "type": "" - }, - { - "name": "value6", - "nodeType": "YulTypedName", - "src": "30774:6:26", - "type": "" - }, - { - "name": "value5", - "nodeType": "YulTypedName", - "src": "30782:6:26", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "30790:6:26", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "30798:6:26", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "30806:6:26", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "30814:6:26", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "30822:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "30833:4:26", - "type": "" - } - ], - "src": "30579:872:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "31582:205:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "31592:26:26", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "31604:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "31615:2:26", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "31600:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "31600:18:26" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "31592:4:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "31672:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "31685:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "31696:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "31681:3:26" + "src": "33465:3:40" }, "nodeType": "YulFunctionCall", - "src": "31681:17:26" + "src": "33465:19:40" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulIdentifier", - "src": "31628:43:26" + "src": "33414:41:40" }, "nodeType": "YulFunctionCall", - "src": "31628:71:26" + "src": "33414:71:40" }, "nodeType": "YulExpressionStatement", - "src": "31628:71:26" + "src": "33414:71:40" }, { "expression": { "arguments": [ { - "name": "value1", + "name": "value7", "nodeType": "YulIdentifier", - "src": "31752:6:26" + "src": "33537:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31765:9:26" + "src": "33550:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "31776:2:26", + "src": "33561:3:40", "type": "", - "value": "32" + "value": "224" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31761:3:26" + "src": "33546:3:40" }, "nodeType": "YulFunctionCall", - "src": "31761:18:26" + "src": "33546:19:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulIdentifier", - "src": "31709:42:26" + "src": "33495:41:40" }, "nodeType": "YulFunctionCall", - "src": "31709:71:26" + "src": "33495:71:40" }, "nodeType": "YulExpressionStatement", - "src": "31709:71:26" + "src": "33495:71:40" } ] }, - "name": "abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed", + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32802:9:40", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "32814:6:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "32822:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "32830:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "32838:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "32846:6:40", + "type": "" + }, + { + "name": "value2", "nodeType": "YulTypedName", - "src": "31546:9:26", + "src": "32854:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "31558:6:26", + "src": "32862:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "31566:6:26", + "src": "32870:6:40", "type": "" } ], @@ -18872,48 +18050,48 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "31577:4:26", + "src": "32881:4:40", "type": "" } ], - "src": "31457:330:26" + "src": "32608:965:40" }, { "body": { "nodeType": "YulBlock", - "src": "31835:52:26", + "src": "33621:52:40", "statements": [ { "nodeType": "YulAssignment", - "src": "31845:35:26", + "src": "33631:35:40", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "31870:2:26", + "src": "33656:2:40", "type": "", "value": "96" }, { "name": "value", "nodeType": "YulIdentifier", - "src": "31874:5:26" + "src": "33660:5:40" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", - "src": "31866:3:26" + "src": "33652:3:40" }, "nodeType": "YulFunctionCall", - "src": "31866:14:26" + "src": "33652:14:40" }, "variableNames": [ { "name": "newValue", "nodeType": "YulIdentifier", - "src": "31845:8:26" + "src": "33631:8:40" } ] } @@ -18925,7 +18103,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "31816:5:26", + "src": "33602:5:40", "type": "" } ], @@ -18933,41 +18111,41 @@ { "name": "newValue", "nodeType": "YulTypedName", - "src": "31826:8:26", + "src": "33612:8:40", "type": "" } ], - "src": "31793:94:26" + "src": "33579:94:40" }, { "body": { "nodeType": "YulBlock", - "src": "31940:47:26", + "src": "33726:47:40", "statements": [ { "nodeType": "YulAssignment", - "src": "31950:31:26", + "src": "33736:31:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "31975:5:26" + "src": "33761:5:40" } ], "functionName": { "name": "shift_left_96", "nodeType": "YulIdentifier", - "src": "31961:13:26" + "src": "33747:13:40" }, "nodeType": "YulFunctionCall", - "src": "31961:20:26" + "src": "33747:20:40" }, "variableNames": [ { "name": "aligned", "nodeType": "YulIdentifier", - "src": "31950:7:26" + "src": "33736:7:40" } ] } @@ -18979,7 +18157,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "31922:5:26", + "src": "33708:5:40", "type": "" } ], @@ -18987,41 +18165,41 @@ { "name": "aligned", "nodeType": "YulTypedName", - "src": "31932:7:26", + "src": "33718:7:40", "type": "" } ], - "src": "31893:94:26" + "src": "33679:94:40" }, { "body": { "nodeType": "YulBlock", - "src": "32040:53:26", + "src": "33826:53:40", "statements": [ { "nodeType": "YulAssignment", - "src": "32050:37:26", + "src": "33836:37:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "32081:5:26" + "src": "33867:5:40" } ], "functionName": { "name": "leftAlign_t_uint160", "nodeType": "YulIdentifier", - "src": "32061:19:26" + "src": "33847:19:40" }, "nodeType": "YulFunctionCall", - "src": "32061:26:26" + "src": "33847:26:40" }, "variableNames": [ { "name": "aligned", "nodeType": "YulIdentifier", - "src": "32050:7:26" + "src": "33836:7:40" } ] } @@ -19033,7 +18211,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "32022:5:26", + "src": "33808:5:40", "type": "" } ], @@ -19041,16 +18219,16 @@ { "name": "aligned", "nodeType": "YulTypedName", - "src": "32032:7:26", + "src": "33818:7:40", "type": "" } ], - "src": "31993:100:26" + "src": "33779:100:40" }, { "body": { "nodeType": "YulBlock", - "src": "32196:101:26", + "src": "33983:102:40", "statements": [ { "expression": { @@ -19058,7 +18236,7 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "32213:3:26" + "src": "34000:3:40" }, { "arguments": [ @@ -19067,94 +18245,94 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "32283:5:26" + "src": "34071:5:40" } ], "functionName": { - "name": "convert_t_contract$_IERC20_$690_to_t_address", + "name": "convert_t_contract$_IERC20_$1838_to_t_address", "nodeType": "YulIdentifier", - "src": "32238:44:26" + "src": "34025:45:40" }, "nodeType": "YulFunctionCall", - "src": "32238:51:26" + "src": "34025:52:40" } ], "functionName": { "name": "leftAlign_t_address", "nodeType": "YulIdentifier", - "src": "32218:19:26" + "src": "34005:19:40" }, "nodeType": "YulFunctionCall", - "src": "32218:72:26" + "src": "34005:73:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "32206:6:26" + "src": "33993:6:40" }, "nodeType": "YulFunctionCall", - "src": "32206:85:26" + "src": "33993:86:40" }, "nodeType": "YulExpressionStatement", - "src": "32206:85:26" + "src": "33993:86:40" } ] }, - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_nonPadded_inplace_fromStack", + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "32184:5:26", + "src": "33971:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "32191:3:26", + "src": "33978:3:40", "type": "" } ], - "src": "32099:198:26" + "src": "33885:200:40" }, { "body": { "nodeType": "YulBlock", - "src": "32346:53:26", + "src": "34134:53:40", "statements": [ { "nodeType": "YulAssignment", - "src": "32356:36:26", + "src": "34144:36:40", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "32381:3:26", + "src": "34169:3:40", "type": "", "value": "240" }, { "name": "value", "nodeType": "YulIdentifier", - "src": "32386:5:26" + "src": "34174:5:40" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", - "src": "32377:3:26" + "src": "34165:3:40" }, "nodeType": "YulFunctionCall", - "src": "32377:15:26" + "src": "34165:15:40" }, "variableNames": [ { "name": "newValue", "nodeType": "YulIdentifier", - "src": "32356:8:26" + "src": "34144:8:40" } ] } @@ -19166,7 +18344,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "32327:5:26", + "src": "34115:5:40", "type": "" } ], @@ -19174,41 +18352,41 @@ { "name": "newValue", "nodeType": "YulTypedName", - "src": "32337:8:26", + "src": "34125:8:40", "type": "" } ], - "src": "32303:96:26" + "src": "34091:96:40" }, { "body": { "nodeType": "YulBlock", - "src": "32451:48:26", + "src": "34239:48:40", "statements": [ { "nodeType": "YulAssignment", - "src": "32461:32:26", + "src": "34249:32:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "32487:5:26" + "src": "34275:5:40" } ], "functionName": { "name": "shift_left_240", "nodeType": "YulIdentifier", - "src": "32472:14:26" + "src": "34260:14:40" }, "nodeType": "YulFunctionCall", - "src": "32472:21:26" + "src": "34260:21:40" }, "variableNames": [ { "name": "aligned", "nodeType": "YulIdentifier", - "src": "32461:7:26" + "src": "34249:7:40" } ] } @@ -19218,740 +18396,1025 @@ "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "value", + "nodeType": "YulTypedName", + "src": "34221:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "aligned", + "nodeType": "YulTypedName", + "src": "34231:7:40", + "type": "" + } + ], + "src": "34193:94:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34374:72:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34391:3:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34432:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "34415:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "34415:23:40" + } + ], + "functionName": { + "name": "leftAlign_t_uint16", + "nodeType": "YulIdentifier", + "src": "34396:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "34396:43:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34384:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "34384:56:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34384:56:40" + } + ] + }, + "name": "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34362:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "34369:3:40", + "type": "" + } + ], + "src": "34293:153:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34652:393:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "34740:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34749:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "34663:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "34663:90:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34663:90:40" + }, + { + "nodeType": "YulAssignment", + "src": "34762:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34773:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34778:2:40", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34769:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34769:12:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34762:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "34868:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34877:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "34791:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "34791:90:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34791:90:40" + }, + { + "nodeType": "YulAssignment", + "src": "34890:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34901:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34906:2:40", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34897:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34897:12:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34890:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "34979:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34988:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "34919:59:40" + }, + "nodeType": "YulFunctionCall", + "src": "34919:73:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34919:73:40" + }, + { + "nodeType": "YulAssignment", + "src": "35001:18:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35012:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35017:1:40", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35008:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35008:11:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35001:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "35029:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35036:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "35029:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "34615:3:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "34621:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "34629:6:40", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "32433:5:26", + "src": "34637:6:40", "type": "" } ], "returnVariables": [ { - "name": "aligned", + "name": "end", "nodeType": "YulTypedName", - "src": "32443:7:26", + "src": "34648:3:40", "type": "" } ], - "src": "32405:94:26" + "src": "34452:593:40" }, { "body": { "nodeType": "YulBlock", - "src": "32586:72:26", + "src": "35109:40:40", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "35120:22:40", + "value": { "arguments": [ { - "name": "pos", + "name": "value", "nodeType": "YulIdentifier", - "src": "32603:3:26" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "32644:5:26" - } - ], - "functionName": { - "name": "cleanup_t_uint16", - "nodeType": "YulIdentifier", - "src": "32627:16:26" - }, - "nodeType": "YulFunctionCall", - "src": "32627:23:26" - } - ], - "functionName": { - "name": "leftAlign_t_uint16", - "nodeType": "YulIdentifier", - "src": "32608:18:26" - }, - "nodeType": "YulFunctionCall", - "src": "32608:43:26" + "src": "35136:5:40" } ], "functionName": { - "name": "mstore", + "name": "mload", "nodeType": "YulIdentifier", - "src": "32596:6:26" + "src": "35130:5:40" }, "nodeType": "YulFunctionCall", - "src": "32596:56:26" + "src": "35130:12:40" }, - "nodeType": "YulExpressionStatement", - "src": "32596:56:26" + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35120:6:40" + } + ] } ] }, - "name": "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack", + "name": "array_length_t_bytes_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "32574:5:26", + "src": "35092:5:40", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "pos", + "name": "length", "nodeType": "YulTypedName", - "src": "32581:3:26", + "src": "35102:6:40", "type": "" } ], - "src": "32505:153:26" + "src": "35051:98:40" }, { "body": { "nodeType": "YulBlock", - "src": "32862:391:26", + "src": "35250:73:40", "statements": [ { "expression": { "arguments": [ { - "name": "value0", + "name": "pos", "nodeType": "YulIdentifier", - "src": "32949:6:26" + "src": "35267:3:40" }, { - "name": "pos", + "name": "length", "nodeType": "YulIdentifier", - "src": "32958:3:26" + "src": "35272:6:40" } ], "functionName": { - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_nonPadded_inplace_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "32873:75:26" + "src": "35260:6:40" }, "nodeType": "YulFunctionCall", - "src": "32873:89:26" + "src": "35260:19:40" }, "nodeType": "YulExpressionStatement", - "src": "32873:89:26" + "src": "35260:19:40" }, { "nodeType": "YulAssignment", - "src": "32971:19:26", + "src": "35288:29:40", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "32982:3:26" + "src": "35307:3:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "32987:2:26", + "src": "35312:4:40", "type": "", - "value": "20" + "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "32978:3:26" + "src": "35303:3:40" }, "nodeType": "YulFunctionCall", - "src": "32978:12:26" + "src": "35303:14:40" }, "variableNames": [ { - "name": "pos", + "name": "updated_pos", "nodeType": "YulIdentifier", - "src": "32971:3:26" + "src": "35288:11:40" } ] - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "33076:6:26" - }, - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "33085:3:26" - } - ], - "functionName": { - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_nonPadded_inplace_fromStack", - "nodeType": "YulIdentifier", - "src": "33000:75:26" - }, - "nodeType": "YulFunctionCall", - "src": "33000:89:26" - }, - "nodeType": "YulExpressionStatement", - "src": "33000:89:26" - }, + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "35222:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "35227:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "35238:11:40", + "type": "" + } + ], + "src": "35155:168:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35391:184:40", + "statements": [ { - "nodeType": "YulAssignment", - "src": "33098:19:26", + "nodeType": "YulVariableDeclaration", + "src": "35401:10:40", "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "33109:3:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33114:2:26", - "type": "", - "value": "20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "33105:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "33105:12:26" + "kind": "number", + "nodeType": "YulLiteral", + "src": "35410:1:40", + "type": "", + "value": "0" }, - "variableNames": [ + "variables": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "33098:3:26" + "name": "i", + "nodeType": "YulTypedName", + "src": "35405:1:40", + "type": "" } ] }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "35470:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "35495:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35500:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35491:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35491:11:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "35514:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35519:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35510:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35510:11:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "35504:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "35504:18:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35484:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "35484:39:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35484:39:40" + } + ] + }, + "condition": { "arguments": [ { - "name": "value2", + "name": "i", "nodeType": "YulIdentifier", - "src": "33187:6:26" + "src": "35431:1:40" }, { - "name": "pos", + "name": "length", "nodeType": "YulIdentifier", - "src": "33196:3:26" + "src": "35434:6:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack", + "name": "lt", "nodeType": "YulIdentifier", - "src": "33127:59:26" + "src": "35428:2:40" }, "nodeType": "YulFunctionCall", - "src": "33127:73:26" + "src": "35428:13:40" }, - "nodeType": "YulExpressionStatement", - "src": "33127:73:26" + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "35442:19:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35444:15:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35453:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35456:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35449:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35449:10:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35444:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "35424:3:40", + "statements": [] + }, + "src": "35420:113:40" }, { - "nodeType": "YulAssignment", - "src": "33209:18:26", - "value": { + "expression": { "arguments": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "33220:3:26" + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "35553:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35558:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35549:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35549:16:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "33225:1:26", + "src": "35567:1:40", "type": "", - "value": "2" + "value": "0" } ], "functionName": { - "name": "add", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "33216:3:26" + "src": "35542:6:40" }, "nodeType": "YulFunctionCall", - "src": "33216:11:26" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "33209:3:26" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "33237:10:26", - "value": { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "33244:3:26" + "src": "35542:27:40" }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "33237:3:26" - } - ] + "nodeType": "YulExpressionStatement", + "src": "35542:27:40" } ] }, - "name": "abi_encode_tuple_packed_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed", + "name": "copy_memory_to_memory_with_cleanup", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", - "nodeType": "YulTypedName", - "src": "32825:3:26", - "type": "" - }, - { - "name": "value2", + "name": "src", "nodeType": "YulTypedName", - "src": "32831:6:26", + "src": "35373:3:40", "type": "" }, { - "name": "value1", + "name": "dst", "nodeType": "YulTypedName", - "src": "32839:6:26", + "src": "35378:3:40", "type": "" }, { - "name": "value0", - "nodeType": "YulTypedName", - "src": "32847:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", + "name": "length", "nodeType": "YulTypedName", - "src": "32858:3:26", + "src": "35383:6:40", "type": "" } ], - "src": "32664:589:26" + "src": "35329:246:40" }, { "body": { "nodeType": "YulBlock", - "src": "33439:314:26", + "src": "35629:54:40", "statements": [ { "nodeType": "YulAssignment", - "src": "33449:26:26", + "src": "35639:38:40", "value": { "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "33461:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33472:2:26", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "33457:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "33457:18:26" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "33449:4:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "33543:6:26" - }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "33556:9:26" + "src": "35657:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "33567:1:26", + "src": "35664:2:40", "type": "", - "value": "0" + "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "33552:3:26" + "src": "35653:3:40" }, "nodeType": "YulFunctionCall", - "src": "33552:17:26" - } - ], - "functionName": { - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "33485:57:26" - }, - "nodeType": "YulFunctionCall", - "src": "33485:85:26" - }, - "nodeType": "YulExpressionStatement", - "src": "33485:85:26" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "33638:6:26" + "src": "35653:14:40" }, { "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "33651:9:26" - }, { "kind": "number", "nodeType": "YulLiteral", - "src": "33662:2:26", + "src": "35673:2:40", "type": "", - "value": "32" + "value": "31" } ], "functionName": { - "name": "add", + "name": "not", "nodeType": "YulIdentifier", - "src": "33647:3:26" + "src": "35669:3:40" }, "nodeType": "YulFunctionCall", - "src": "33647:18:26" + "src": "35669:7:40" } ], "functionName": { - "name": "abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack", + "name": "and", "nodeType": "YulIdentifier", - "src": "33580:57:26" + "src": "35649:3:40" }, "nodeType": "YulFunctionCall", - "src": "33580:86:26" + "src": "35649:28:40" }, - "nodeType": "YulExpressionStatement", - "src": "33580:86:26" - }, - { - "expression": { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "33718:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "33731:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33742:2:26", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "33727:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "33727:18:26" - } - ], - "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "variableNames": [ + { + "name": "result", "nodeType": "YulIdentifier", - "src": "33676:41:26" - }, - "nodeType": "YulFunctionCall", - "src": "33676:70:26" - }, - "nodeType": "YulExpressionStatement", - "src": "33676:70:26" + "src": "35639:6:40" + } + ] } ] }, - "name": "abi_encode_tuple_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint16__fromStack_reversed", + "name": "round_up_to_mul_of_32", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "33395:9:26", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "33407:6:26", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "33415:6:26", - "type": "" - }, - { - "name": "value0", + "name": "value", "nodeType": "YulTypedName", - "src": "33423:6:26", + "src": "35612:5:40", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "result", "nodeType": "YulTypedName", - "src": "33434:4:26", + "src": "35622:6:40", "type": "" } ], - "src": "33259:494:26" + "src": "35581:102:40" }, { "body": { "nodeType": "YulBlock", - "src": "33804:149:26", + "src": "35779:283:40", "statements": [ { - "nodeType": "YulAssignment", - "src": "33814:25:26", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "33837:1:26" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "33819:17:26" - }, - "nodeType": "YulFunctionCall", - "src": "33819:20:26" - }, - "variableNames": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "33814:1:26" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "33848:25:26", + "nodeType": "YulVariableDeclaration", + "src": "35789:52:40", "value": { "arguments": [ { - "name": "y", + "name": "value", "nodeType": "YulIdentifier", - "src": "33871:1:26" + "src": "35835:5:40" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "array_length_t_bytes_memory_ptr", "nodeType": "YulIdentifier", - "src": "33853:17:26" + "src": "35803:31:40" }, "nodeType": "YulFunctionCall", - "src": "33853:20:26" + "src": "35803:38:40" }, - "variableNames": [ + "variables": [ { - "name": "y", - "nodeType": "YulIdentifier", - "src": "33848:1:26" + "name": "length", + "nodeType": "YulTypedName", + "src": "35793:6:40", + "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "33882:17:26", + "src": "35850:77:40", "value": { "arguments": [ { - "name": "x", + "name": "pos", "nodeType": "YulIdentifier", - "src": "33894:1:26" + "src": "35915:3:40" }, { - "name": "y", + "name": "length", "nodeType": "YulIdentifier", - "src": "33897:1:26" + "src": "35920:6:40" } ], "functionName": { - "name": "sub", + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "33890:3:26" + "src": "35857:57:40" }, "nodeType": "YulFunctionCall", - "src": "33890:9:26" + "src": "35857:70:40" }, "variableNames": [ { - "name": "diff", + "name": "pos", "nodeType": "YulIdentifier", - "src": "33882:4:26" + "src": "35850:3:40" } ] }, { - "body": { - "nodeType": "YulBlock", - "src": "33924:22:26", - "statements": [ + "expression": { + "arguments": [ { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", + "arguments": [ + { + "name": "value", "nodeType": "YulIdentifier", - "src": "33926:16:26" + "src": "35975:5:40" }, - "nodeType": "YulFunctionCall", - "src": "33926:18:26" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35982:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35971:3:40" }, - "nodeType": "YulExpressionStatement", - "src": "33926:18:26" + "nodeType": "YulFunctionCall", + "src": "35971:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35989:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35994:6:40" } - ] + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "35936:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "35936:65:40" }, - "condition": { + "nodeType": "YulExpressionStatement", + "src": "35936:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "36010:46:40", + "value": { "arguments": [ { - "name": "diff", + "name": "pos", "nodeType": "YulIdentifier", - "src": "33915:4:26" + "src": "36021:3:40" }, { - "name": "x", - "nodeType": "YulIdentifier", - "src": "33921:1:26" + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "36048:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "36026:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "36026:29:40" } ], "functionName": { - "name": "gt", + "name": "add", "nodeType": "YulIdentifier", - "src": "33912:2:26" + "src": "36017:3:40" }, "nodeType": "YulFunctionCall", - "src": "33912:11:26" + "src": "36017:39:40" }, - "nodeType": "YulIf", - "src": "33909:37:26" + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "36010:3:40" + } + ] } ] }, - "name": "checked_sub_t_uint256", + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "x", + "name": "value", "nodeType": "YulTypedName", - "src": "33790:1:26", + "src": "35760:5:40", "type": "" }, { - "name": "y", + "name": "pos", "nodeType": "YulTypedName", - "src": "33793:1:26", + "src": "35767:3:40", "type": "" } ], "returnVariables": [ { - "name": "diff", + "name": "end", "nodeType": "YulTypedName", - "src": "33799:4:26", + "src": "35775:3:40", "type": "" } ], - "src": "33759:194:26" + "src": "35689:373:40" }, { "body": { "nodeType": "YulBlock", - "src": "34101:222:26", + "src": "36324:551:40", "statements": [ { "nodeType": "YulAssignment", - "src": "34111:26:26", + "src": "36334:27:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "34123:9:26" + "src": "36346:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34134:2:26", + "src": "36357:3:40", "type": "", - "value": "64" + "value": "160" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "34119:3:26" + "src": "36342:3:40" }, "nodeType": "YulFunctionCall", - "src": "34119:18:26" + "src": "36342:19:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "34111:4:26" + "src": "36334:4:40" } ] }, @@ -19961,19 +19424,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "34207:6:26" + "src": "36415:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "34220:9:26" + "src": "36428:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34231:1:26", + "src": "36439:1:40", "type": "", "value": "0" } @@ -19981,22 +19444,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "34216:3:26" + "src": "36424:3:40" }, "nodeType": "YulFunctionCall", - "src": "34216:17:26" + "src": "36424:17:40" } ], "functionName": { - "name": "abi_encode_t_contract$_ILBPair_$6147_to_t_address_fromStack", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "34147:59:26" + "src": "36371:43:40" }, "nodeType": "YulFunctionCall", - "src": "34147:87:26" + "src": "36371:71:40" }, "nodeType": "YulExpressionStatement", - "src": "34147:87:26" + "src": "36371:71:40" }, { "expression": { @@ -20004,19 +19467,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "34288:6:26" + "src": "36511:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "34301:9:26" + "src": "36524:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34312:2:26", + "src": "36535:2:40", "type": "", "value": "32" } @@ -20024,44 +19487,239 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "34297:3:26" + "src": "36520:3:40" }, "nodeType": "YulFunctionCall", - "src": "34297:18:26" + "src": "36520:18:40" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "36452:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "36452:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36452:87:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "36608:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36621:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36632:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36617:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36617:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "36549:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "36549:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36549:87:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "36688:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36701:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36712:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36697:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36697:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "36646:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "36646:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36646:70:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36737:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36748:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36733:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36733:19:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36758:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36764:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "36754:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36754:20:40" + } + ], + "functionName": { + "name": "mstore", "nodeType": "YulIdentifier", - "src": "34244:43:26" + "src": "36726:6:40" }, "nodeType": "YulFunctionCall", - "src": "34244:72:26" + "src": "36726:49:40" }, "nodeType": "YulExpressionStatement", - "src": "34244:72:26" + "src": "36726:49:40" + }, + { + "nodeType": "YulAssignment", + "src": "36784:84:40", + "value": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "36854:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36863:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "36792:61:40" + }, + "nodeType": "YulFunctionCall", + "src": "36792:76:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36784:4:40" + } + ] } ] }, - "name": "abi_encode_tuple_t_contract$_ILBPair_$6147_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "name": "abi_encode_tuple_t_address_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint16_t_bytes_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "34065:9:26", + "src": "36264:9:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "36276:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "36284:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "36292:6:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "34077:6:26", + "src": "36300:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "34085:6:26", + "src": "36308:6:40", "type": "" } ], @@ -20069,649 +19727,712 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "34096:4:26", + "src": "36319:4:40", + "type": "" + } + ], + "src": "36068:807:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36994:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37004:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37019:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "37004:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "36966:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "36971:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "36982:11:40", "type": "" } ], - "src": "33959:364:26" + "src": "36881:147:40" }, { "body": { "nodeType": "YulBlock", - "src": "34607:687:26", + "src": "37142:278:40", "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "37152:52:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "37198:5:40" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "37166:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "37166:38:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "37156:6:40", + "type": "" + } + ] + }, { "nodeType": "YulAssignment", - "src": "34617:27:26", + "src": "37213:95:40", "value": { "arguments": [ { - "name": "headStart", + "name": "pos", "nodeType": "YulIdentifier", - "src": "34629:9:26" + "src": "37296:3:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34640:3:26", - "type": "", - "value": "256" + "name": "length", + "nodeType": "YulIdentifier", + "src": "37301:6:40" } ], "functionName": { - "name": "add", + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", "nodeType": "YulIdentifier", - "src": "34625:3:26" + "src": "37220:75:40" }, "nodeType": "YulFunctionCall", - "src": "34625:19:26" + "src": "37220:88:40" }, "variableNames": [ { - "name": "tail", + "name": "pos", "nodeType": "YulIdentifier", - "src": "34617:4:26" + "src": "37213:3:40" } ] }, { "expression": { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "34696:6:26" - }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "34709:9:26" + "src": "37356:5:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34720:1:26", + "src": "37363:4:40", "type": "", - "value": "0" + "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "34705:3:26" + "src": "37352:3:40" }, "nodeType": "YulFunctionCall", - "src": "34705:17:26" + "src": "37352:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37370:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "37375:6:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "copy_memory_to_memory_with_cleanup", "nodeType": "YulIdentifier", - "src": "34654:41:26" + "src": "37317:34:40" }, "nodeType": "YulFunctionCall", - "src": "34654:69:26" + "src": "37317:65:40" }, "nodeType": "YulExpressionStatement", - "src": "34654:69:26" + "src": "37317:65:40" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "37391:23:40", + "value": { "arguments": [ { - "name": "value1", + "name": "pos", "nodeType": "YulIdentifier", - "src": "34775:6:26" + "src": "37402:3:40" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "34788:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34799:2:26", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "34784:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "34784:18:26" + "name": "length", + "nodeType": "YulIdentifier", + "src": "37407:6:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "add", "nodeType": "YulIdentifier", - "src": "34733:41:26" + "src": "37398:3:40" }, "nodeType": "YulFunctionCall", - "src": "34733:70:26" + "src": "37398:16:40" }, - "nodeType": "YulExpressionStatement", - "src": "34733:70:26" - }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "37391:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "37123:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "37130:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "37138:3:40", + "type": "" + } + ], + "src": "37034:386:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37606:247:40", + "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "37617:100:40", + "value": { "arguments": [ { - "name": "value2", + "name": "value0", "nodeType": "YulIdentifier", - "src": "34855:6:26" + "src": "37704:6:40" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "34868:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34879:2:26", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "34864:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "34864:18:26" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37713:3:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", "nodeType": "YulIdentifier", - "src": "34813:41:26" + "src": "37624:79:40" }, "nodeType": "YulFunctionCall", - "src": "34813:70:26" + "src": "37624:93:40" }, - "nodeType": "YulExpressionStatement", - "src": "34813:70:26" + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37617:3:40" + } + ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "37727:100:40", + "value": { "arguments": [ { - "name": "value3", + "name": "value1", "nodeType": "YulIdentifier", - "src": "34935:6:26" + "src": "37814:6:40" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "34948:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34959:2:26", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "34944:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "34944:18:26" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37823:3:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", "nodeType": "YulIdentifier", - "src": "34893:41:26" + "src": "37734:79:40" }, "nodeType": "YulFunctionCall", - "src": "34893:70:26" + "src": "37734:93:40" }, - "nodeType": "YulExpressionStatement", - "src": "34893:70:26" + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37727:3:40" + } + ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "37837:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37844:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "37837:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "37577:3:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "37583:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "37591:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "37602:3:40", + "type": "" + } + ], + "src": "37426:427:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37904:149:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37914:25:40", + "value": { "arguments": [ { - "name": "value4", + "name": "x", "nodeType": "YulIdentifier", - "src": "35015:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "35028:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35039:3:26", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "35024:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "35024:19:26" + "src": "37937:1:40" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "34973:41:26" + "src": "37919:17:40" }, "nodeType": "YulFunctionCall", - "src": "34973:71:26" + "src": "37919:20:40" }, - "nodeType": "YulExpressionStatement", - "src": "34973:71:26" + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "37914:1:40" + } + ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "37948:25:40", + "value": { "arguments": [ { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "35096:6:26" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "35109:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35120:3:26", - "type": "", - "value": "160" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "35105:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "35105:19:26" + "name": "y", + "nodeType": "YulIdentifier", + "src": "37971:1:40" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "35054:41:26" + "src": "37953:17:40" }, "nodeType": "YulFunctionCall", - "src": "35054:71:26" + "src": "37953:20:40" }, - "nodeType": "YulExpressionStatement", - "src": "35054:71:26" + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "37948:1:40" + } + ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "37982:17:40", + "value": { "arguments": [ { - "name": "value6", + "name": "x", "nodeType": "YulIdentifier", - "src": "35177:6:26" + "src": "37994:1:40" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "35190:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35201:3:26", - "type": "", - "value": "192" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "35186:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "35186:19:26" + "name": "y", + "nodeType": "YulIdentifier", + "src": "37997:1:40" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "sub", "nodeType": "YulIdentifier", - "src": "35135:41:26" + "src": "37990:3:40" }, "nodeType": "YulFunctionCall", - "src": "35135:71:26" + "src": "37990:9:40" }, - "nodeType": "YulExpressionStatement", - "src": "35135:71:26" + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "37982:4:40" + } + ] }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "38024:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "38026:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "38026:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38026:18:40" + } + ] + }, + "condition": { "arguments": [ { - "name": "value7", + "name": "diff", "nodeType": "YulIdentifier", - "src": "35258:6:26" + "src": "38015:4:40" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "35271:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35282:3:26", - "type": "", - "value": "224" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "35267:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "35267:19:26" + "name": "x", + "nodeType": "YulIdentifier", + "src": "38021:1:40" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "gt", "nodeType": "YulIdentifier", - "src": "35216:41:26" + "src": "38012:2:40" }, "nodeType": "YulFunctionCall", - "src": "35216:71:26" + "src": "38012:11:40" }, - "nodeType": "YulExpressionStatement", - "src": "35216:71:26" + "nodeType": "YulIf", + "src": "38009:37:40" } ] }, - "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed", + "name": "checked_sub_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "34523:9:26", - "type": "" - }, - { - "name": "value7", - "nodeType": "YulTypedName", - "src": "34535:6:26", - "type": "" - }, - { - "name": "value6", - "nodeType": "YulTypedName", - "src": "34543:6:26", - "type": "" - }, - { - "name": "value5", - "nodeType": "YulTypedName", - "src": "34551:6:26", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "34559:6:26", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "34567:6:26", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "34575:6:26", - "type": "" - }, - { - "name": "value1", + "name": "x", "nodeType": "YulTypedName", - "src": "34583:6:26", + "src": "37890:1:40", "type": "" }, { - "name": "value0", + "name": "y", "nodeType": "YulTypedName", - "src": "34591:6:26", + "src": "37893:1:40", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "diff", "nodeType": "YulTypedName", - "src": "34602:4:26", + "src": "37899:4:40", "type": "" } ], - "src": "34329:965:26" + "src": "37859:194:40" }, { "body": { "nodeType": "YulBlock", - "src": "35364:51:26", + "src": "38201:222:40", "statements": [ { "nodeType": "YulAssignment", - "src": "35374:35:26", + "src": "38211:26:40", "value": { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "35403:5:26" + "src": "38223:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38234:2:40", + "type": "", + "value": "64" } ], "functionName": { - "name": "cleanup_t_address", + "name": "add", "nodeType": "YulIdentifier", - "src": "35385:17:26" + "src": "38219:3:40" }, "nodeType": "YulFunctionCall", - "src": "35385:24:26" + "src": "38219:18:40" }, "variableNames": [ { - "name": "cleaned", + "name": "tail", "nodeType": "YulIdentifier", - "src": "35374:7:26" + "src": "38211:4:40" } ] - } - ] - }, - "name": "cleanup_t_contract$_ILBFactory_$5501", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "35346:5:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "35356:7:26", - "type": "" - } - ], - "src": "35300:115:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "35483:98:26", - "statements": [ + }, { - "body": { - "nodeType": "YulBlock", - "src": "35559:16:26", - "statements": [ + "expression": { + "arguments": [ { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35568:1:26", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35571:1:26", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38307:6:40" + }, + { + "arguments": [ + { + "name": "headStart", "nodeType": "YulIdentifier", - "src": "35561:6:26" + "src": "38320:9:40" }, - "nodeType": "YulFunctionCall", - "src": "35561:12:26" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38331:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38316:3:40" }, - "nodeType": "YulExpressionStatement", - "src": "35561:12:26" + "nodeType": "YulFunctionCall", + "src": "38316:17:40" } - ] + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "38247:59:40" + }, + "nodeType": "YulFunctionCall", + "src": "38247:87:40" }, - "condition": { + "nodeType": "YulExpressionStatement", + "src": "38247:87:40" + }, + { + "expression": { "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38388:6:40" + }, { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "35506:5:26" + "src": "38401:9:40" }, { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "35550:5:26" - } - ], - "functionName": { - "name": "cleanup_t_contract$_ILBFactory_$5501", - "nodeType": "YulIdentifier", - "src": "35513:36:26" - }, - "nodeType": "YulFunctionCall", - "src": "35513:43:26" + "kind": "number", + "nodeType": "YulLiteral", + "src": "38412:2:40", + "type": "", + "value": "32" } ], "functionName": { - "name": "eq", + "name": "add", "nodeType": "YulIdentifier", - "src": "35503:2:26" + "src": "38397:3:40" }, "nodeType": "YulFunctionCall", - "src": "35503:54:26" + "src": "38397:18:40" } ], "functionName": { - "name": "iszero", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "35496:6:26" + "src": "38344:43:40" }, "nodeType": "YulFunctionCall", - "src": "35496:62:26" + "src": "38344:72:40" }, - "nodeType": "YulIf", - "src": "35493:82:26" + "nodeType": "YulExpressionStatement", + "src": "38344:72:40" } ] }, - "name": "validator_revert_t_contract$_ILBFactory_$5501", + "name": "abi_encode_tuple_t_contract$_ILBPair_$7970_t_uint256__to_t_address_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38165:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38177:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38185:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", "nodeType": "YulTypedName", - "src": "35476:5:26", + "src": "38196:4:40", "type": "" } ], - "src": "35421:160:26" + "src": "38059:364:40" }, { "body": { "nodeType": "YulBlock", - "src": "35669:99:26", + "src": "38555:206:40", "statements": [ { "nodeType": "YulAssignment", - "src": "35679:22:26", + "src": "38565:26:40", "value": { "arguments": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "35694:6:26" + "src": "38577:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38588:2:40", + "type": "", + "value": "64" } ], "functionName": { - "name": "mload", + "name": "add", "nodeType": "YulIdentifier", - "src": "35688:5:26" + "src": "38573:3:40" }, "nodeType": "YulFunctionCall", - "src": "35688:13:26" + "src": "38573:18:40" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "35679:5:26" + "src": "38565:4:40" } ] }, @@ -20719,397 +20440,321 @@ "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "35756:5:26" - } - ], - "functionName": { - "name": "validator_revert_t_contract$_ILBFactory_$5501", - "nodeType": "YulIdentifier", - "src": "35710:45:26" - }, - "nodeType": "YulFunctionCall", - "src": "35710:52:26" - }, - "nodeType": "YulExpressionStatement", - "src": "35710:52:26" - } - ] - }, - "name": "abi_decode_t_contract$_ILBFactory_$5501_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "35647:6:26", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "35655:3:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "35663:5:26", - "type": "" - } - ], - "src": "35587:181:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "35870:293:26", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "35916:83:26", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "35918:77:26" - }, - "nodeType": "YulFunctionCall", - "src": "35918:79:26" - }, - "nodeType": "YulExpressionStatement", - "src": "35918:79:26" - } - ] - }, - "condition": { - "arguments": [ + "src": "38645:6:40" + }, { "arguments": [ { - "name": "dataEnd", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "35891:7:26" + "src": "38658:9:40" }, { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "35900:9:26" + "kind": "number", + "nodeType": "YulLiteral", + "src": "38669:1:40", + "type": "", + "value": "0" } ], "functionName": { - "name": "sub", + "name": "add", "nodeType": "YulIdentifier", - "src": "35887:3:26" + "src": "38654:3:40" }, "nodeType": "YulFunctionCall", - "src": "35887:23:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35912:2:26", - "type": "", - "value": "32" + "src": "38654:17:40" } ], "functionName": { - "name": "slt", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "35883:3:26" + "src": "38601:43:40" }, "nodeType": "YulFunctionCall", - "src": "35883:32:26" + "src": "38601:71:40" }, - "nodeType": "YulIf", - "src": "35880:119:26" + "nodeType": "YulExpressionStatement", + "src": "38601:71:40" }, { - "nodeType": "YulBlock", - "src": "36009:147:26", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "36024:15:26", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36038:1:26", - "type": "", - "value": "0" + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38726:6:40" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "36028:6:26", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "36053:93:26", - "value": { + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "36118:9:26" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "36129:6:26" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "36114:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "36114:22:26" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38739:9:40" }, { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "36138:7:26" + "kind": "number", + "nodeType": "YulLiteral", + "src": "38750:2:40", + "type": "", + "value": "32" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBFactory_$5501_fromMemory", + "name": "add", "nodeType": "YulIdentifier", - "src": "36063:50:26" + "src": "38735:3:40" }, "nodeType": "YulFunctionCall", - "src": "36063:83:26" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "36053:6:26" - } - ] - } - ] + "src": "38735:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "38682:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "38682:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38682:72:40" } ] }, - "name": "abi_decode_tuple_t_contract$_ILBFactory_$5501_fromMemory", + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "35840:9:26", + "src": "38519:9:40", "type": "" }, { - "name": "dataEnd", + "name": "value1", + "nodeType": "YulTypedName", + "src": "38531:6:40", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "35851:7:26", + "src": "38539:6:40", "type": "" } ], "returnVariables": [ { - "name": "value0", + "name": "tail", "nodeType": "YulTypedName", - "src": "35863:6:26", + "src": "38550:4:40", "type": "" } ], - "src": "35774:389:26" + "src": "38429:332:40" }, { "body": { "nodeType": "YulBlock", - "src": "36295:206:26", + "src": "38820:32:40", "statements": [ { "nodeType": "YulAssignment", - "src": "36305:26:26", + "src": "38830:16:40", "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "36317:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36328:2:26", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "36313:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "36313:18:26" + "name": "value", + "nodeType": "YulIdentifier", + "src": "38841:5:40" }, "variableNames": [ { - "name": "tail", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "36305:4:26" + "src": "38830:7:40" } ] - }, + } + ] + }, + "name": "cleanup_t_rational_0_by_1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "38802:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "38812:7:40", + "type": "" + } + ], + "src": "38767:85:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38926:90:40", + "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "38936:74:40", + "value": { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "36385:6:26" - }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "36398:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36409:1:26", - "type": "", - "value": "0" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39002:5:40" + } + ], + "functionName": { + "name": "cleanup_t_rational_0_by_1", + "nodeType": "YulIdentifier", + "src": "38976:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "38976:32:40" } ], "functionName": { - "name": "add", + "name": "identity", "nodeType": "YulIdentifier", - "src": "36394:3:26" + "src": "38967:8:40" }, "nodeType": "YulFunctionCall", - "src": "36394:17:26" + "src": "38967:42:40" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "36341:43:26" + "src": "38949:17:40" }, "nodeType": "YulFunctionCall", - "src": "36341:71:26" + "src": "38949:61:40" }, - "nodeType": "YulExpressionStatement", - "src": "36341:71:26" - }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "38936:9:40" + } + ] + } + ] + }, + "name": "convert_t_rational_0_by_1_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "38906:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "38916:9:40", + "type": "" + } + ], + "src": "38858:158:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39095:74:40", + "statements": [ { "expression": { "arguments": [ { - "name": "value1", + "name": "pos", "nodeType": "YulIdentifier", - "src": "36466:6:26" + "src": "39112:3:40" }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "36479:9:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36490:2:26", - "type": "", - "value": "32" + "src": "39156:5:40" } ], "functionName": { - "name": "add", + "name": "convert_t_rational_0_by_1_to_t_uint256", "nodeType": "YulIdentifier", - "src": "36475:3:26" + "src": "39117:38:40" }, "nodeType": "YulFunctionCall", - "src": "36475:18:26" + "src": "39117:45:40" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "36422:43:26" + "src": "39105:6:40" }, "nodeType": "YulFunctionCall", - "src": "36422:72:26" + "src": "39105:58:40" }, "nodeType": "YulExpressionStatement", - "src": "36422:72:26" + "src": "39105:58:40" } ] }, - "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "36259:9:26", - "type": "" - }, - { - "name": "value1", + "name": "value", "nodeType": "YulTypedName", - "src": "36271:6:26", + "src": "39083:5:40", "type": "" }, { - "name": "value0", - "nodeType": "YulTypedName", - "src": "36279:6:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", + "name": "pos", "nodeType": "YulTypedName", - "src": "36290:4:26", + "src": "39090:3:40", "type": "" } ], - "src": "36169:332:26" + "src": "39022:147:40" }, { "body": { "nodeType": "YulBlock", - "src": "36633:206:26", + "src": "39309:214:40", "statements": [ { "nodeType": "YulAssignment", - "src": "36643:26:26", + "src": "39319:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "36655:9:26" + "src": "39331:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "36666:2:26", + "src": "39342:2:40", "type": "", "value": "64" } @@ -21117,16 +20762,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "36651:3:26" + "src": "39327:3:40" }, "nodeType": "YulFunctionCall", - "src": "36651:18:26" + "src": "39327:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "36643:4:26" + "src": "39319:4:40" } ] }, @@ -21136,19 +20781,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "36723:6:26" + "src": "39407:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "36736:9:26" + "src": "39420:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "36747:1:26", + "src": "39431:1:40", "type": "", "value": "0" } @@ -21156,22 +20801,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "36732:3:26" + "src": "39416:3:40" }, "nodeType": "YulFunctionCall", - "src": "36732:17:26" + "src": "39416:17:40" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "36679:43:26" + "src": "39355:51:40" }, "nodeType": "YulFunctionCall", - "src": "36679:71:26" + "src": "39355:79:40" }, "nodeType": "YulExpressionStatement", - "src": "36679:71:26" + "src": "39355:79:40" }, { "expression": { @@ -21179,19 +20824,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "36804:6:26" + "src": "39488:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "36817:9:26" + "src": "39501:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "36828:2:26", + "src": "39512:2:40", "type": "", "value": "32" } @@ -21199,44 +20844,44 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "36813:3:26" + "src": "39497:3:40" }, "nodeType": "YulFunctionCall", - "src": "36813:18:26" + "src": "39497:18:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "36760:43:26" + "src": "39444:43:40" }, "nodeType": "YulFunctionCall", - "src": "36760:72:26" + "src": "39444:72:40" }, "nodeType": "YulExpressionStatement", - "src": "36760:72:26" + "src": "39444:72:40" } ] }, - "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "name": "abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "36597:9:26", + "src": "39273:9:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "36609:6:26", + "src": "39285:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "36617:6:26", + "src": "39293:6:40", "type": "" } ], @@ -21244,798 +20889,693 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "36628:4:26", - "type": "" - } - ], - "src": "36507:332:26" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "36908:80:26", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "36918:22:26", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "36933:6:26" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "36927:5:26" - }, - "nodeType": "YulFunctionCall", - "src": "36927:13:26" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "36918:5:26" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "36976:5:26" - } - ], - "functionName": { - "name": "validator_revert_t_bytes32", - "nodeType": "YulIdentifier", - "src": "36949:26:26" - }, - "nodeType": "YulFunctionCall", - "src": "36949:33:26" - }, - "nodeType": "YulExpressionStatement", - "src": "36949:33:26" - } - ] - }, - "name": "abi_decode_t_bytes32_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "36886:6:26", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "36894:3:26", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "36902:5:26", + "src": "39304:4:40", "type": "" } ], - "src": "36845:143:26" + "src": "39175:348:40" }, { "body": { "nodeType": "YulBlock", - "src": "37071:274:26", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "37117:83:26", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "37119:77:26" - }, - "nodeType": "YulFunctionCall", - "src": "37119:79:26" - }, - "nodeType": "YulExpressionStatement", - "src": "37119:79:26" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "37092:7:26" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "37101:9:26" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "37088:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "37088:23:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37113:2:26", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "37084:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "37084:32:26" - }, - "nodeType": "YulIf", - "src": "37081:119:26" - }, - { - "nodeType": "YulBlock", - "src": "37210:128:26", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "37225:15:26", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37239:1:26", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "37229:6:26", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "37254:74:26", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "37300:9:26" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "37311:6:26" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "37296:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "37296:22:26" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "37320:7:26" - } - ], - "functionName": { - "name": "abi_decode_t_bytes32_fromMemory", - "nodeType": "YulIdentifier", - "src": "37264:31:26" - }, - "nodeType": "YulFunctionCall", - "src": "37264:64:26" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "37254:6:26" - } - ] + "src": "39582:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39592:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39603:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "39592:7:40" } ] } ] }, - "name": "abi_decode_tuple_t_bytes32_fromMemory", + "name": "cleanup_t_rational_1_by_1", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "37041:9:26", - "type": "" - }, - { - "name": "dataEnd", + "name": "value", "nodeType": "YulTypedName", - "src": "37052:7:26", + "src": "39564:5:40", "type": "" } ], "returnVariables": [ { - "name": "value0", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "37064:6:26", + "src": "39574:7:40", "type": "" } ], - "src": "36994:351:26" + "src": "39529:85:40" }, { "body": { "nodeType": "YulBlock", - "src": "37409:40:26", + "src": "39664:57:40", "statements": [ { "nodeType": "YulAssignment", - "src": "37420:22:26", + "src": "39674:41:40", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "37436:5:26" + "src": "39689:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39696:18:40", + "type": "", + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "mload", + "name": "and", "nodeType": "YulIdentifier", - "src": "37430:5:26" + "src": "39685:3:40" }, "nodeType": "YulFunctionCall", - "src": "37430:12:26" + "src": "39685:30:40" }, "variableNames": [ { - "name": "length", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "37420:6:26" + "src": "39674:7:40" } ] } ] }, - "name": "array_length_t_bytes_memory_ptr", + "name": "cleanup_t_uint64", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "37392:5:26", + "src": "39646:5:40", "type": "" } ], "returnVariables": [ { - "name": "length", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "37402:6:26", + "src": "39656:7:40", "type": "" } ], - "src": "37351:98:26" + "src": "39620:101:40" }, { "body": { "nodeType": "YulBlock", - "src": "37550:73:26", + "src": "39794:89:40", "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "37567:3:26" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "37572:6:26" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "37560:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "37560:19:26" - }, - "nodeType": "YulExpressionStatement", - "src": "37560:19:26" - }, { "nodeType": "YulAssignment", - "src": "37588:29:26", + "src": "39804:73:40", "value": { "arguments": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "37607:3:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37612:4:26", - "type": "", - "value": "0x20" + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39869:5:40" + } + ], + "functionName": { + "name": "cleanup_t_rational_1_by_1", + "nodeType": "YulIdentifier", + "src": "39843:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "39843:32:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "39834:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "39834:42:40" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint64", "nodeType": "YulIdentifier", - "src": "37603:3:26" + "src": "39817:16:40" }, "nodeType": "YulFunctionCall", - "src": "37603:14:26" + "src": "39817:60:40" }, "variableNames": [ { - "name": "updated_pos", + "name": "converted", "nodeType": "YulIdentifier", - "src": "37588:11:26" + "src": "39804:9:40" } ] } ] }, - "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "name": "convert_t_rational_1_by_1_to_t_uint64", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", - "nodeType": "YulTypedName", - "src": "37522:3:26", - "type": "" - }, - { - "name": "length", + "name": "value", "nodeType": "YulTypedName", - "src": "37527:6:26", + "src": "39774:5:40", "type": "" } ], "returnVariables": [ { - "name": "updated_pos", + "name": "converted", "nodeType": "YulTypedName", - "src": "37538:11:26", + "src": "39784:9:40", "type": "" } ], - "src": "37455:168:26" + "src": "39727:156:40" }, { "body": { "nodeType": "YulBlock", - "src": "37691:184:26", + "src": "39961:73:40", "statements": [ { - "nodeType": "YulVariableDeclaration", - "src": "37701:10:26", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37710:1:26", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "37705:1:26", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "37770:63:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "37795:3:26" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "37800:1:26" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "37791:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "37791:11:26" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "37814:3:26" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "37819:1:26" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "37810:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "37810:11:26" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "37804:5:26" - }, - "nodeType": "YulFunctionCall", - "src": "37804:18:26" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "37784:6:26" - }, - "nodeType": "YulFunctionCall", - "src": "37784:39:26" - }, - "nodeType": "YulExpressionStatement", - "src": "37784:39:26" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "name": "i", + "name": "pos", "nodeType": "YulIdentifier", - "src": "37731:1:26" + "src": "39978:3:40" }, { - "name": "length", - "nodeType": "YulIdentifier", - "src": "37734:6:26" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "40021:5:40" + } + ], + "functionName": { + "name": "convert_t_rational_1_by_1_to_t_uint64", + "nodeType": "YulIdentifier", + "src": "39983:37:40" + }, + "nodeType": "YulFunctionCall", + "src": "39983:44:40" } ], "functionName": { - "name": "lt", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "37728:2:26" + "src": "39971:6:40" }, "nodeType": "YulFunctionCall", - "src": "37728:13:26" + "src": "39971:57:40" }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "37742:19:26", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "39971:57:40" + } + ] + }, + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "39949:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "39956:3:40", + "type": "" + } + ], + "src": "39889:145:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40145:131:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40155:26:40", + "value": { + "arguments": [ { - "nodeType": "YulAssignment", - "src": "37744:15:26", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "37753:1:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37756:2:26", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "37749:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "37749:10:26" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "37744:1:26" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "37724:3:26", - "statements": [] + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40167:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40178:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40163:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40163:18:40" }, - "src": "37720:113:26" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40155:4:40" + } + ] }, { "expression": { "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "40242:6:40" + }, { "arguments": [ { - "name": "dst", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "37853:3:26" + "src": "40255:9:40" }, { - "name": "length", - "nodeType": "YulIdentifier", - "src": "37858:6:26" + "kind": "number", + "nodeType": "YulLiteral", + "src": "40266:1:40", + "type": "", + "value": "0" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "37849:3:26" + "src": "40251:3:40" }, "nodeType": "YulFunctionCall", - "src": "37849:16:26" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37867:1:26", - "type": "", - "value": "0" + "src": "40251:17:40" } ], "functionName": { - "name": "mstore", + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", "nodeType": "YulIdentifier", - "src": "37842:6:26" + "src": "40191:50:40" }, "nodeType": "YulFunctionCall", - "src": "37842:27:26" + "src": "40191:78:40" }, "nodeType": "YulExpressionStatement", - "src": "37842:27:26" + "src": "40191:78:40" } ] }, - "name": "copy_memory_to_memory_with_cleanup", + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "src", + "name": "headStart", "nodeType": "YulTypedName", - "src": "37673:3:26", + "src": "40117:9:40", "type": "" }, { - "name": "dst", + "name": "value0", "nodeType": "YulTypedName", - "src": "37678:3:26", + "src": "40129:6:40", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "length", + "name": "tail", "nodeType": "YulTypedName", - "src": "37683:6:26", + "src": "40140:4:40", "type": "" } ], - "src": "37629:246:26" + "src": "40040:236:40" }, { "body": { "nodeType": "YulBlock", - "src": "37929:54:26", + "src": "40345:80:40", "statements": [ { "nodeType": "YulAssignment", - "src": "37939:38:26", + "src": "40355:22:40", "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "40370:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "40364:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "40364:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "40355:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "40413:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "40386:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "40386:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40386:33:40" + } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "40323:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "40331:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "40339:5:40", + "type": "" + } + ], + "src": "40282:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40508:274:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "40554:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "40556:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "40556:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40556:79:40" + } + ] + }, + "condition": { "arguments": [ { "arguments": [ { - "name": "value", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "37957:5:26" + "src": "40529:7:40" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37964:2:26", - "type": "", - "value": "31" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40538:9:40" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "37953:3:26" + "src": "40525:3:40" }, "nodeType": "YulFunctionCall", - "src": "37953:14:26" + "src": "40525:23:40" }, { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37973:2:26", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "37969:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "37969:7:26" + "kind": "number", + "nodeType": "YulLiteral", + "src": "40550:2:40", + "type": "", + "value": "32" } ], "functionName": { - "name": "and", + "name": "slt", "nodeType": "YulIdentifier", - "src": "37949:3:26" + "src": "40521:3:40" }, "nodeType": "YulFunctionCall", - "src": "37949:28:26" + "src": "40521:32:40" }, - "variableNames": [ + "nodeType": "YulIf", + "src": "40518:119:40" + }, + { + "nodeType": "YulBlock", + "src": "40647:128:40", + "statements": [ { - "name": "result", - "nodeType": "YulIdentifier", - "src": "37939:6:26" + "nodeType": "YulVariableDeclaration", + "src": "40662:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40676:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "40666:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "40691:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40737:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "40748:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40733:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40733:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "40757:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "40701:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "40701:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "40691:6:40" + } + ] } ] } ] }, - "name": "round_up_to_mul_of_32", + "name": "abi_decode_tuple_t_bytes32_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "40478:9:40", + "type": "" + }, + { + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "37912:5:26", + "src": "40489:7:40", "type": "" } ], "returnVariables": [ { - "name": "result", + "name": "value0", "nodeType": "YulTypedName", - "src": "37922:6:26", + "src": "40501:6:40", "type": "" } ], - "src": "37881:102:26" + "src": "40431:351:40" }, { "body": { "nodeType": "YulBlock", - "src": "38079:283:26", + "src": "40932:275:40", "statements": [ { - "nodeType": "YulVariableDeclaration", - "src": "38089:52:26", + "nodeType": "YulAssignment", + "src": "40942:26:40", "value": { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "38135:5:26" + "src": "40954:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40965:2:40", + "type": "", + "value": "64" } ], "functionName": { - "name": "array_length_t_bytes_memory_ptr", + "name": "add", "nodeType": "YulIdentifier", - "src": "38103:31:26" + "src": "40950:3:40" }, "nodeType": "YulFunctionCall", - "src": "38103:38:26" + "src": "40950:18:40" }, - "variables": [ + "variableNames": [ { - "name": "length", - "nodeType": "YulTypedName", - "src": "38093:6:26", - "type": "" + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40942:4:40" } ] }, { - "nodeType": "YulAssignment", - "src": "38150:77:26", - "value": { + "expression": { "arguments": [ { - "name": "pos", + "name": "value0", "nodeType": "YulIdentifier", - "src": "38215:3:26" + "src": "41022:6:40" }, { - "name": "length", - "nodeType": "YulIdentifier", - "src": "38220:6:26" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41035:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41046:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41031:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41031:17:40" } ], "functionName": { - "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", "nodeType": "YulIdentifier", - "src": "38157:57:26" + "src": "40978:43:40" }, "nodeType": "YulFunctionCall", - "src": "38157:70:26" + "src": "40978:71:40" }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "38150:3:26" - } - ] + "nodeType": "YulExpressionStatement", + "src": "40978:71:40" }, { "expression": { @@ -22043,138 +21583,144 @@ { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "38275:5:26" + "src": "41070:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "38282:4:26", + "src": "41081:2:40", "type": "", - "value": "0x20" + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "38271:3:26" + "src": "41066:3:40" }, "nodeType": "YulFunctionCall", - "src": "38271:16:26" - }, - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "38289:3:26" + "src": "41066:18:40" }, { - "name": "length", - "nodeType": "YulIdentifier", - "src": "38294:6:26" + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41090:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41096:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41086:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41086:20:40" } ], "functionName": { - "name": "copy_memory_to_memory_with_cleanup", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "38236:34:26" + "src": "41059:6:40" }, "nodeType": "YulFunctionCall", - "src": "38236:65:26" + "src": "41059:48:40" }, "nodeType": "YulExpressionStatement", - "src": "38236:65:26" + "src": "41059:48:40" }, { "nodeType": "YulAssignment", - "src": "38310:46:26", + "src": "41116:84:40", "value": { "arguments": [ { - "name": "pos", + "name": "value1", "nodeType": "YulIdentifier", - "src": "38321:3:26" + "src": "41186:6:40" }, { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "38348:6:26" - } - ], - "functionName": { - "name": "round_up_to_mul_of_32", - "nodeType": "YulIdentifier", - "src": "38326:21:26" - }, - "nodeType": "YulFunctionCall", - "src": "38326:29:26" + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41195:4:40" } ], "functionName": { - "name": "add", + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "38317:3:26" + "src": "41124:61:40" }, "nodeType": "YulFunctionCall", - "src": "38317:39:26" + "src": "41124:76:40" }, "variableNames": [ { - "name": "end", + "name": "tail", "nodeType": "YulIdentifier", - "src": "38310:3:26" + "src": "41116:4:40" } ] } ] }, - "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "name": "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", "nodeType": "YulTypedName", - "src": "38060:5:26", + "src": "40896:9:40", "type": "" }, { - "name": "pos", + "name": "value1", + "nodeType": "YulTypedName", + "src": "40908:6:40", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "38067:3:26", + "src": "40916:6:40", "type": "" } ], "returnVariables": [ { - "name": "end", + "name": "tail", "nodeType": "YulTypedName", - "src": "38075:3:26", + "src": "40927:4:40", "type": "" } ], - "src": "37989:373:26" + "src": "40788:419:40" }, { "body": { "nodeType": "YulBlock", - "src": "38512:275:26", + "src": "41339:206:40", "statements": [ { "nodeType": "YulAssignment", - "src": "38522:26:26", + "src": "41349:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "38534:9:26" + "src": "41361:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "38545:2:26", + "src": "41372:2:40", "type": "", "value": "64" } @@ -22182,16 +21728,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "38530:3:26" + "src": "41357:3:40" }, "nodeType": "YulFunctionCall", - "src": "38530:18:26" + "src": "41357:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "38522:4:26" + "src": "41349:4:40" } ] }, @@ -22201,19 +21747,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "38602:6:26" + "src": "41429:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "38615:9:26" + "src": "41442:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "38626:1:26", + "src": "41453:1:40", "type": "", "value": "0" } @@ -22221,37 +21767,42 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "38611:3:26" + "src": "41438:3:40" }, "nodeType": "YulFunctionCall", - "src": "38611:17:26" + "src": "41438:17:40" } ], "functionName": { - "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "38558:43:26" + "src": "41385:43:40" }, "nodeType": "YulFunctionCall", - "src": "38558:71:26" + "src": "41385:71:40" }, "nodeType": "YulExpressionStatement", - "src": "38558:71:26" + "src": "41385:71:40" }, { "expression": { "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "41510:6:40" + }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "38650:9:26" + "src": "41523:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "38661:2:26", + "src": "41534:2:40", "type": "", "value": "32" } @@ -22259,97 +21810,44 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "38646:3:26" - }, - "nodeType": "YulFunctionCall", - "src": "38646:18:26" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "38670:4:26" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "38676:9:26" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "38666:3:26" + "src": "41519:3:40" }, "nodeType": "YulFunctionCall", - "src": "38666:20:26" + "src": "41519:18:40" } ], "functionName": { - "name": "mstore", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "38639:6:26" + "src": "41466:43:40" }, "nodeType": "YulFunctionCall", - "src": "38639:48:26" + "src": "41466:72:40" }, "nodeType": "YulExpressionStatement", - "src": "38639:48:26" - }, - { - "nodeType": "YulAssignment", - "src": "38696:84:26", - "value": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "38766:6:26" - }, - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "38775:4:26" - } - ], - "functionName": { - "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "38704:61:26" - }, - "nodeType": "YulFunctionCall", - "src": "38704:76:26" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "38696:4:26" - } - ] + "src": "41466:72:40" } ] }, - "name": "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "38476:9:26", + "src": "41303:9:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "38488:6:26", + "src": "41315:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "38496:6:26", + "src": "41323:6:40", "type": "" } ], @@ -22357,31 +21855,31 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "38507:4:26", + "src": "41334:4:40", "type": "" } ], - "src": "38368:419:26" + "src": "41213:332:40" }, { "body": { "nodeType": "YulBlock", - "src": "38919:206:26", + "src": "41677:206:40", "statements": [ { "nodeType": "YulAssignment", - "src": "38929:26:26", + "src": "41687:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "38941:9:26" + "src": "41699:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "38952:2:26", + "src": "41710:2:40", "type": "", "value": "64" } @@ -22389,16 +21887,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "38937:3:26" + "src": "41695:3:40" }, "nodeType": "YulFunctionCall", - "src": "38937:18:26" + "src": "41695:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "38929:4:26" + "src": "41687:4:40" } ] }, @@ -22408,19 +21906,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "39009:6:26" + "src": "41767:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39022:9:26" + "src": "41780:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39033:1:26", + "src": "41791:1:40", "type": "", "value": "0" } @@ -22428,22 +21926,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39018:3:26" + "src": "41776:3:40" }, "nodeType": "YulFunctionCall", - "src": "39018:17:26" + "src": "41776:17:40" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "38965:43:26" + "src": "41723:43:40" }, "nodeType": "YulFunctionCall", - "src": "38965:71:26" + "src": "41723:71:40" }, "nodeType": "YulExpressionStatement", - "src": "38965:71:26" + "src": "41723:71:40" }, { "expression": { @@ -22451,19 +21949,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "39090:6:26" + "src": "41848:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39103:9:26" + "src": "41861:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39114:2:26", + "src": "41872:2:40", "type": "", "value": "32" } @@ -22471,22 +21969,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39099:3:26" + "src": "41857:3:40" }, "nodeType": "YulFunctionCall", - "src": "39099:18:26" + "src": "41857:18:40" } ], "functionName": { "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", "nodeType": "YulIdentifier", - "src": "39046:43:26" + "src": "41804:43:40" }, "nodeType": "YulFunctionCall", - "src": "39046:72:26" + "src": "41804:72:40" }, "nodeType": "YulExpressionStatement", - "src": "39046:72:26" + "src": "41804:72:40" } ] }, @@ -22496,19 +21994,19 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "38883:9:26", + "src": "41641:9:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "38895:6:26", + "src": "41653:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "38903:6:26", + "src": "41661:6:40", "type": "" } ], @@ -22516,16 +22014,16 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "38914:4:26", + "src": "41672:4:40", "type": "" } ], - "src": "38793:332:26" + "src": "41551:332:40" }, { "body": { "nodeType": "YulBlock", - "src": "39159:152:26", + "src": "41917:152:40", "statements": [ { "expression": { @@ -22533,14 +22031,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "39176:1:26", + "src": "41934:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39179:77:26", + "src": "41937:77:40", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -22548,13 +22046,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "39169:6:26" + "src": "41927:6:40" }, "nodeType": "YulFunctionCall", - "src": "39169:88:26" + "src": "41927:88:40" }, "nodeType": "YulExpressionStatement", - "src": "39169:88:26" + "src": "41927:88:40" }, { "expression": { @@ -22562,14 +22060,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "39273:1:26", + "src": "42031:1:40", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39276:4:26", + "src": "42034:4:40", "type": "", "value": "0x12" } @@ -22577,13 +22075,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "39266:6:26" + "src": "42024:6:40" }, "nodeType": "YulFunctionCall", - "src": "39266:15:26" + "src": "42024:15:40" }, "nodeType": "YulExpressionStatement", - "src": "39266:15:26" + "src": "42024:15:40" }, { "expression": { @@ -22591,14 +22089,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "39297:1:26", + "src": "42055:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39300:4:26", + "src": "42058:4:40", "type": "", "value": "0x24" } @@ -22606,38 +22104,38 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "39290:6:26" + "src": "42048:6:40" }, "nodeType": "YulFunctionCall", - "src": "39290:15:26" + "src": "42048:15:40" }, "nodeType": "YulExpressionStatement", - "src": "39290:15:26" + "src": "42048:15:40" } ] }, "name": "panic_error_0x12", "nodeType": "YulFunctionDefinition", - "src": "39131:180:26" + "src": "41889:180:40" }, { "body": { "nodeType": "YulBlock", - "src": "39361:32:26", + "src": "42119:32:40", "statements": [ { "nodeType": "YulAssignment", - "src": "39371:16:26", + "src": "42129:16:40", "value": { "name": "value", "nodeType": "YulIdentifier", - "src": "39382:5:26" + "src": "42140:5:40" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "39371:7:26" + "src": "42129:7:40" } ] } @@ -22649,7 +22147,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "39343:5:26", + "src": "42101:5:40", "type": "" } ], @@ -22657,16 +22155,16 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "39353:7:26", + "src": "42111:7:40", "type": "" } ], - "src": "39317:76:26" + "src": "42075:76:40" }, { "body": { "nodeType": "YulBlock", - "src": "39462:52:26", + "src": "42220:52:40", "statements": [ { "expression": { @@ -22674,35 +22172,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "39479:3:26" + "src": "42237:3:40" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "39501:5:26" + "src": "42259:5:40" } ], "functionName": { "name": "cleanup_t_int256", "nodeType": "YulIdentifier", - "src": "39484:16:26" + "src": "42242:16:40" }, "nodeType": "YulFunctionCall", - "src": "39484:23:26" + "src": "42242:23:40" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "39472:6:26" + "src": "42230:6:40" }, "nodeType": "YulFunctionCall", - "src": "39472:36:26" + "src": "42230:36:40" }, "nodeType": "YulExpressionStatement", - "src": "39472:36:26" + "src": "42230:36:40" } ] }, @@ -22712,37 +22210,37 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "39450:5:26", + "src": "42208:5:40", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "39457:3:26", + "src": "42215:3:40", "type": "" } ], - "src": "39399:115:26" + "src": "42157:115:40" }, { "body": { "nodeType": "YulBlock", - "src": "39644:204:26", + "src": "42402:204:40", "statements": [ { "nodeType": "YulAssignment", - "src": "39654:26:26", + "src": "42412:26:40", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39666:9:26" + "src": "42424:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39677:2:26", + "src": "42435:2:40", "type": "", "value": "64" } @@ -22750,16 +22248,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39662:3:26" + "src": "42420:3:40" }, "nodeType": "YulFunctionCall", - "src": "39662:18:26" + "src": "42420:18:40" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "39654:4:26" + "src": "42412:4:40" } ] }, @@ -22769,19 +22267,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "39734:6:26" + "src": "42492:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39747:9:26" + "src": "42505:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39758:1:26", + "src": "42516:1:40", "type": "", "value": "0" } @@ -22789,22 +22287,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39743:3:26" + "src": "42501:3:40" }, "nodeType": "YulFunctionCall", - "src": "39743:17:26" + "src": "42501:17:40" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "39690:43:26" + "src": "42448:43:40" }, "nodeType": "YulFunctionCall", - "src": "39690:71:26" + "src": "42448:71:40" }, "nodeType": "YulExpressionStatement", - "src": "39690:71:26" + "src": "42448:71:40" }, { "expression": { @@ -22812,19 +22310,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "39813:6:26" + "src": "42571:6:40" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39826:9:26" + "src": "42584:9:40" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39837:2:26", + "src": "42595:2:40", "type": "", "value": "32" } @@ -22832,22 +22330,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39822:3:26" + "src": "42580:3:40" }, "nodeType": "YulFunctionCall", - "src": "39822:18:26" + "src": "42580:18:40" } ], "functionName": { "name": "abi_encode_t_int256_to_t_int256_fromStack", "nodeType": "YulIdentifier", - "src": "39771:41:26" + "src": "42529:41:40" }, "nodeType": "YulFunctionCall", - "src": "39771:70:26" + "src": "42529:70:40" }, "nodeType": "YulExpressionStatement", - "src": "39771:70:26" + "src": "42529:70:40" } ] }, @@ -22857,19 +22355,19 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "39608:9:26", + "src": "42366:9:40", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "39620:6:26", + "src": "42378:6:40", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "39628:6:26", + "src": "42386:6:40", "type": "" } ], @@ -22877,75 +22375,75 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "39639:4:26", + "src": "42397:4:40", "type": "" } ], - "src": "39520:328:26" + "src": "42278:328:40" }, { "body": { "nodeType": "YulBlock", - "src": "39896:143:26", + "src": "42654:143:40", "statements": [ { "nodeType": "YulAssignment", - "src": "39906:25:26", + "src": "42664:25:40", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "39929:1:26" + "src": "42687:1:40" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "39911:17:26" + "src": "42669:17:40" }, "nodeType": "YulFunctionCall", - "src": "39911:20:26" + "src": "42669:20:40" }, "variableNames": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "39906:1:26" + "src": "42664:1:40" } ] }, { "nodeType": "YulAssignment", - "src": "39940:25:26", + "src": "42698:25:40", "value": { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "39963:1:26" + "src": "42721:1:40" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "39945:17:26" + "src": "42703:17:40" }, "nodeType": "YulFunctionCall", - "src": "39945:20:26" + "src": "42703:20:40" }, "variableNames": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "39940:1:26" + "src": "42698:1:40" } ] }, { "body": { "nodeType": "YulBlock", - "src": "39987:22:26", + "src": "42745:22:40", "statements": [ { "expression": { @@ -22953,13 +22451,13 @@ "functionName": { "name": "panic_error_0x12", "nodeType": "YulIdentifier", - "src": "39989:16:26" + "src": "42747:16:40" }, "nodeType": "YulFunctionCall", - "src": "39989:18:26" + "src": "42747:18:40" }, "nodeType": "YulExpressionStatement", - "src": "39989:18:26" + "src": "42747:18:40" } ] }, @@ -22968,49 +22466,49 @@ { "name": "y", "nodeType": "YulIdentifier", - "src": "39984:1:26" + "src": "42742:1:40" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "39977:6:26" + "src": "42735:6:40" }, "nodeType": "YulFunctionCall", - "src": "39977:9:26" + "src": "42735:9:40" }, "nodeType": "YulIf", - "src": "39974:35:26" + "src": "42732:35:40" }, { "nodeType": "YulAssignment", - "src": "40019:14:26", + "src": "42777:14:40", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "40028:1:26" + "src": "42786:1:40" }, { "name": "y", "nodeType": "YulIdentifier", - "src": "40031:1:26" + "src": "42789:1:40" } ], "functionName": { "name": "div", "nodeType": "YulIdentifier", - "src": "40024:3:26" + "src": "42782:3:40" }, "nodeType": "YulFunctionCall", - "src": "40024:9:26" + "src": "42782:9:40" }, "variableNames": [ { "name": "r", "nodeType": "YulIdentifier", - "src": "40019:1:26" + "src": "42777:1:40" } ] } @@ -23022,13 +22520,13 @@ { "name": "x", "nodeType": "YulTypedName", - "src": "39885:1:26", + "src": "42643:1:40", "type": "" }, { "name": "y", "nodeType": "YulTypedName", - "src": "39888:1:26", + "src": "42646:1:40", "type": "" } ], @@ -23036,16 +22534,16 @@ { "name": "r", "nodeType": "YulTypedName", - "src": "39894:1:26", + "src": "42652:1:40", "type": "" } ], - "src": "39854:185:26" + "src": "42612:185:40" }, { "body": { "nodeType": "YulBlock", - "src": "40073:152:26", + "src": "42831:152:40", "statements": [ { "expression": { @@ -23053,14 +22551,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "40090:1:26", + "src": "42848:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "40093:77:26", + "src": "42851:77:40", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -23068,13 +22566,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "40083:6:26" + "src": "42841:6:40" }, "nodeType": "YulFunctionCall", - "src": "40083:88:26" + "src": "42841:88:40" }, "nodeType": "YulExpressionStatement", - "src": "40083:88:26" + "src": "42841:88:40" }, { "expression": { @@ -23082,14 +22580,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "40187:1:26", + "src": "42945:1:40", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "40190:4:26", + "src": "42948:4:40", "type": "", "value": "0x31" } @@ -23097,13 +22595,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "40180:6:26" + "src": "42938:6:40" }, "nodeType": "YulFunctionCall", - "src": "40180:15:26" + "src": "42938:15:40" }, "nodeType": "YulExpressionStatement", - "src": "40180:15:26" + "src": "42938:15:40" }, { "expression": { @@ -23111,14 +22609,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "40211:1:26", + "src": "42969:1:40", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "40214:4:26", + "src": "42972:4:40", "type": "", "value": "0x24" } @@ -23126,67 +22624,70 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "40204:6:26" + "src": "42962:6:40" }, "nodeType": "YulFunctionCall", - "src": "40204:15:26" + "src": "42962:15:40" }, "nodeType": "YulExpressionStatement", - "src": "40204:15:26" + "src": "42962:15:40" } ] }, "name": "panic_error_0x31", "nodeType": "YulFunctionDefinition", - "src": "40045:180:26" + "src": "42803:180:40" } ] }, - "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IERC20_$690_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$690_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$690__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC20_$690(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$690(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$690(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$690(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC20_$690(value)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n function cleanup_t_uint24(value) -> cleaned {\n cleaned := and(value, 0xffffff)\n }\n\n function validator_revert_t_uint24(value) {\n if iszero(eq(value, cleanup_t_uint24(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint24(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint24(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n if slt(sub(dataEnd, headStart), 320) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 288\n\n value9 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ILBPair_$6147(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBPair_$6147(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBPair_$6147(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBPair_$6147(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBPair_$6147(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6147(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6147(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint16t_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint24t_uint16(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_ILBPair_$6147_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBPair_$6147_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$6147_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$6147__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBPair_$6147_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint16_to_t_uint16(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_t_contract$_ILBPair_$6147_to_t_address(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$6147_to_t_address(value))\n }\n\n function abi_encode_t_bool_to_t_bool(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n // struct ILBFactory.LBPairInformation -> struct ILBFactory.LBPairInformation\n function abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr(value, pos) {\n let tail := add(pos, 0x80)\n\n {\n // binStep\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint16_to_t_uint16(memberValue0, add(pos, 0x00))\n }\n\n {\n // LBPair\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_contract$_ILBPair_$6147_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // createdByOwner\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x40))\n }\n\n {\n // ignoredForRouting\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x60))\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr(value0, pos) -> updatedPos {\n abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr(value0, pos)\n updatedPos := add(pos, 0x80)\n }\n\n function array_nextElement_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct ILBFactory.LBPairInformation[] -> struct ILBFactory.LBPairInformation[]\n function abi_encode_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$5157_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint16t_bool(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$690t_contract$_IERC20_$690t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$690(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct ILBFactory.LBPairInformation -> struct ILBFactory.LBPairInformation\n function abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x80)\n\n {\n // binStep\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint16_to_t_uint16(memberValue0, add(pos, 0x00))\n }\n\n {\n // LBPair\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_contract$_ILBPair_$6147_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // createdByOwner\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x40))\n }\n\n {\n // ignoredForRouting\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x60))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_LBPairInformation_$5157_memory_ptr__to_t_struct$_LBPairInformation_$5157_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_struct$_LBPairInformation_$5157_memory_ptr_to_t_struct$_LBPairInformation_$5157_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed(headStart , value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n abi_encode_t_bool_to_t_bool_fromStack(value7, add(headStart, 224))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function convert_t_uint16_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint16(value)))\n }\n\n function abi_encode_t_uint16_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint16_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_t_uint24_to_t_uint24_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 224)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value6, add(headStart, 192))\n\n }\n\n function abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_uint24_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint24(value)))\n }\n\n function abi_encode_t_uint24_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint24_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 224)\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n }\n\n function abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function shift_left_96(value) -> newValue {\n newValue :=\n\n shl(96, value)\n\n }\n\n function leftAlign_t_uint160(value) -> aligned {\n aligned := shift_left_96(value)\n }\n\n function leftAlign_t_address(value) -> aligned {\n aligned := leftAlign_t_uint160(value)\n }\n\n function abi_encode_t_contract$_IERC20_$690_to_t_address_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_address(convert_t_contract$_IERC20_$690_to_t_address(value)))\n }\n\n function shift_left_240(value) -> newValue {\n newValue :=\n\n shl(240, value)\n\n }\n\n function leftAlign_t_uint16(value) -> aligned {\n aligned := shift_left_240(value)\n }\n\n function abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint16(cleanup_t_uint16(value)))\n }\n\n function abi_encode_tuple_packed_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n abi_encode_t_contract$_IERC20_$690_to_t_address_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 20)\n\n abi_encode_t_contract$_IERC20_$690_to_t_address_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 20)\n\n abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack(value2, pos)\n pos := add(pos, 2)\n\n end := pos\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$690_t_contract$_IERC20_$690_t_uint16__to_t_address_t_address_t_uint16__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$690_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$6147_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ILBPair_$6147_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed(headStart , value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value6, add(headStart, 192))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value7, add(headStart, 224))\n\n }\n\n function cleanup_t_contract$_ILBFactory_$5501(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBFactory_$5501(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBFactory_$5501(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBFactory_$5501_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBFactory_$5501(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBFactory_$5501_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBFactory_$5501_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_int256_to_t_int256_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", - "id": 26, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IERC20_$1838_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$1838_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$1838__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC20_$1838(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$1838(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$1838(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$1838(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC20_$1838(value)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n function cleanup_t_uint24(value) -> cleaned {\n cleaned := and(value, 0xffffff)\n }\n\n function validator_revert_t_uint24(value) {\n if iszero(eq(value, cleanup_t_uint24(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint24(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint24(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n if slt(sub(dataEnd, headStart), 320) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 288\n\n value9 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ILBPair_$7970(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBPair_$7970(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBPair_$7970(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBPair_$7970(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBPair_$7970(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$7970(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$7970(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint16t_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint24t_uint16(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_ILBPair_$7970_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$7970_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$7970__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint16_to_t_uint16(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_t_contract$_ILBPair_$7970_to_t_address(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$7970_to_t_address(value))\n }\n\n function abi_encode_t_bool_to_t_bool(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n // struct ILBFactory.LBPairInformation -> struct ILBFactory.LBPairInformation\n function abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(value, pos) {\n let tail := add(pos, 0x80)\n\n {\n // binStep\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint16_to_t_uint16(memberValue0, add(pos, 0x00))\n }\n\n {\n // LBPair\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_contract$_ILBPair_$7970_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // createdByOwner\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x40))\n }\n\n {\n // ignoredForRouting\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x60))\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(value0, pos) -> updatedPos {\n abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(value0, pos)\n updatedPos := add(pos, 0x80)\n }\n\n function array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct ILBFactory.LBPairInformation[] -> struct ILBFactory.LBPairInformation[]\n function abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bool(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct ILBFactory.LBPairInformation -> struct ILBFactory.LBPairInformation\n function abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x80)\n\n {\n // binStep\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint16_to_t_uint16(memberValue0, add(pos, 0x00))\n }\n\n {\n // LBPair\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_contract$_ILBPair_$7970_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // createdByOwner\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x40))\n }\n\n {\n // ignoredForRouting\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x60))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_LBPairInformation_$6974_memory_ptr__to_t_struct$_LBPairInformation_$6974_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed(headStart , value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n abi_encode_t_bool_to_t_bool_fromStack(value7, add(headStart, 224))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function convert_t_uint16_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint16(value)))\n }\n\n function abi_encode_t_uint16_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint16_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_t_uint24_to_t_uint24_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 224)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value6, add(headStart, 192))\n\n }\n\n function abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_uint24_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint24(value)))\n }\n\n function abi_encode_t_uint24_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint24_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 224)\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n }\n\n function abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed(headStart , value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value6, add(headStart, 192))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value7, add(headStart, 224))\n\n }\n\n function shift_left_96(value) -> newValue {\n newValue :=\n\n shl(96, value)\n\n }\n\n function leftAlign_t_uint160(value) -> aligned {\n aligned := shift_left_96(value)\n }\n\n function leftAlign_t_address(value) -> aligned {\n aligned := leftAlign_t_uint160(value)\n }\n\n function abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_address(convert_t_contract$_IERC20_$1838_to_t_address(value)))\n }\n\n function shift_left_240(value) -> newValue {\n newValue :=\n\n shl(240, value)\n\n }\n\n function leftAlign_t_uint16(value) -> aligned {\n aligned := shift_left_240(value)\n }\n\n function abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint16(cleanup_t_uint16(value)))\n }\n\n function abi_encode_tuple_packed_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 20)\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 20)\n\n abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack(value2, pos)\n pos := add(pos, 2)\n\n end := pos\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint16_t_bytes_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value4, tail)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$7970_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_rational_0_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint64(value) -> converted {\n converted := cleanup_t_uint64(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint64(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_int256_to_t_int256_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", + "id": 40, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": {}, "linkReferences": {}, - "object": "608060405234801561000f575f80fd5b506004361061025c575f3560e01c8063701ab8c111610144578063aabc4b3c116100c1578063e203a31f11610085578063e203a31f14610711578063e30c39781461072d578063e74b981b1461074b578063e92d0d5d14610767578063f2fde38b14610783578063fd90c2be1461079f5761025c565b8063aabc4b3c14610668578063af3710651461069f578063b0384781146106bd578063d547741f146106d9578063ddbfd941146106f55761025c565b806380c5061e1161010857806380c5061e146105c05780638ce9aa1c146105de5780638da5cb5b146105fc57806391d148541461061a578063a217fddf1461064a5761025c565b8063701ab8c11461052e578063704037bd1461054c578063715018a61461057c57806379ba5097146105865780637daf5d66146105905761025c565b8063379ee803116101dd5780634e937c3a116101a15780634e937c3a1461045a5780635a440923146104785780635b35875c14610494578063659ac74b146104b25780636622e0d7146104e257806369d56ea3146105125761025c565b8063379ee803146103cc5780633a2f1a91146103e85780633c78a941146104045780634ccb20c0146104205780634cd161d31461043e5761025c565b8063248a9ca311610224578063248a9ca31461031857806327721842146103485780632cc06b8c146103785780632f2ff15d1461039457806336568abe146103b05761025c565b806301ffc9a7146102605780630282c9c1146102905780630752092b146102ae578063093ff769146102de5780631af5bacc146102fa575b5f80fd5b61027a60048036038101906102759190613dfb565b6107bd565b6040516102879190613e40565b60405180910390f35b610298610836565b6040516102a59190613f19565b60405180910390f35b6102c860048036038101906102c39190613f63565b610922565b6040516102d59190614008565b60405180910390f35b6102f860048036038101906102f391906140dc565b61093e565b005b610302610a4f565b60405161030f91906141cd565b60405180910390f35b610332600480360381019061032d9190614210565b610a73565b60405161033f91906141cd565b60405180910390f35b610362600480360381019061035d919061423b565b610a90565b60405161036f9190613e40565b60405180910390f35b610392600480360381019061038d9190614266565b610aac565b005b6103ae60048036038101906103a991906142e0565b610b37565b005b6103ca60048036038101906103c591906142e0565b610b59565b005b6103e660048036038101906103e19190614348565b610bd4565b005b61040260048036038101906103fd919061446d565b610d0f565b005b61041e6004803603810190610419919061453e565b610e2c565b005b610428610e92565b6040516104359190614578565b60405180910390f35b61045860048036038101906104539190614591565b610eba565b005b610462610ff3565b60405161046f91906145de565b60405180910390f35b610492600480360381019061048d919061423b565b610fff565b005b61049c6110a2565b6040516104a99190613f19565b60405180910390f35b6104cc60048036038101906104c791906145f7565b6110b3565b6040516104d9919061467b565b60405180910390f35b6104fc60048036038101906104f79190614694565b61189b565b60405161050991906147fa565b60405180910390f35b61052c6004803603810190610527919061481a565b611b27565b005b610536611e37565b60405161054391906145de565b60405180910390f35b6105666004803603810190610561919061487e565b611e3f565b6040516105739190614921565b60405180910390f35b610584611e5b565b005b61058e611e6e565b005b6105aa60048036038101906105a59190613f63565b611efc565b6040516105b7919061467b565b60405180910390f35b6105c8611f40565b6040516105d591906145de565b60405180910390f35b6105e6611f50565b6040516105f391906145de565b60405180910390f35b610604611f5f565b6040516106119190614578565b60405180910390f35b610634600480360381019061062f91906142e0565b611f86565b6040516106419190613e40565b60405180910390f35b610652611fe0565b60405161065f91906141cd565b60405180910390f35b610682600480360381019061067d9190613f63565b611fe6565b60405161069698979695949392919061493a565b60405180910390f35b6106a76120e9565b6040516106b49190614578565b60405180910390f35b6106d760048036038101906106d291906149b6565b612111565b005b6106f360048036038101906106ee91906142e0565b612307565b005b61070f600480360381019061070a919061423b565b612329565b005b61072b600480360381019061072691906149e1565b6123cc565b005b610735612461565b6040516107429190614578565b60405180910390f35b610765600480360381019061076091906149b6565b612489565b005b610781600480360381019061077c9190613f63565b61249d565b005b61079d600480360381019061079891906149b6565b61258a565b005b6107a7612636565b6040516107b491906145de565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061082f575061082e8261263f565b5b9050919050565b60605f61084360086126a8565b90505f81111561091e578067ffffffffffffffff81111561086757610866614a0c565b5b6040519080825280602002602001820160405280156108955781602001602082028036833780820191505090505b5091505f805b8281101561090f575f806108b98360086126bb90919063ffffffff16565b915091506108c8815f1b6126e2565b156108fc57818685815181106108e1576108e0614a39565b5b60200260200101818152505083806108f890614a93565b9450505b50508061090890614a93565b905061089b565b508181101561091c578083525b505b5090565b5f61093782600b6126fe90919063ffffffff16565b9050919050565b610946612715565b5f6109568b8b8b61ffff1661279c565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109d0578a8a8a6040517fb65ee9530000000000000000000000000000000000000000000000000000000081526004016109c793929190614b0a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16636653851a898989898989896040518863ffffffff1660e01b8152600401610a159796959493929190614b5d565b5f604051808303815f87803b158015610a2c575f80fd5b505af1158015610a3e573d5f803e3d5ffd5b505050505050505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b5f60025f8381526020019081526020015f20600101549050919050565b5f610aa582600b6128f890919063ffffffff16565b9050919050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610ad681612925565b610b318484845f801b5f67ffffffffffffffff811115610af957610af8614a0c565b5b6040519080825280601f01601f191660200182016040528015610b2b5781602001600182028036833780820191505090505b50612939565b50505050565b610b4082610a73565b610b4981612925565b610b538383612ae3565b50505050565b610b61612b31565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc5576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcf8282612b38565b505050565b610bdc612715565b60018961ffff161015610c2657886040517f4f958e71000000000000000000000000000000000000000000000000000000008152600401610c1d9190614bca565b60405180910390fd5b5f610c48898989898989895f801b612c2290979695949392919063ffffffff16565b90508115610c6a57610c67600160ff83612dbf9092919063ffffffff16565b90505b610c868a61ffff16825f1c6008612de69092919063ffffffff16565b508961ffff167f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a288a8a8a8a8a8a8a604051610cc79796959493929190614c13565b60405180910390a28115158a61ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9610d3981612925565b5f73ffffffffffffffffffffffffffffffffffffffff16610d5985612e01565b73ffffffffffffffffffffffffffffffffffffffff161480610d9c57505f60a01b610d8385612e0c565b73ffffffffffffffffffffffffffffffffffffffff1916145b15610dd3576040517fd43a15d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e238787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612939565b50505050505050565b610e34612715565b8073ffffffffffffffffffffffffffffffffffffffff1663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e79575f80fd5b505af1158015610e8b573d5f803e3d5ffd5b5050505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ec2612715565b610eda8261ffff166008612e1590919063ffffffff16565b610f1b57816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401610f129190614bca565b60405180910390fd5b5f610f348361ffff166008612e2c90919063ffffffff16565b5f1b9050811515610f4f60ff83612e4590919063ffffffff16565b151503610f88576040517f237c71b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb98361ffff16610fa68460ff85612dbf9092919063ffffffff16565b5f1c6008612de69092919063ffffffff16565b508115158361ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a3505050565b5f600680549050905090565b611007612715565b61101b81600b612e5490919063ffffffff16565b61105c57806040517f03ce0ad90000000000000000000000000000000000000000000000000000000081526004016110539190614008565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e60405160405180910390a250565b60606110ae6008612e81565b905090565b5f6110cc8261ffff166008612e1590919063ffffffff16565b61110d57816040517ffb22c17e0000000000000000000000000000000000000000000000000000000081526004016111049190614bca565b60405180910390fd5b5f6111268361ffff166008612e2c90919063ffffffff16565b5f1b90505f611133611f5f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905061116c826126e2565b158015611177575080155b156111bb5733846040517f09f85fce0000000000000000000000000000000000000000000000000000000081526004016111b2929190614c80565b60405180910390fd5b6111cf86600b6128f890919063ffffffff16565b61121057856040517f8e888ef30000000000000000000000000000000000000000000000000000000081526004016112079190614008565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361128057866040517f2f9b18530000000000000000000000000000000000000000000000000000000081526004016112779190614008565b60405180910390fd5b61128a8585612ea0565b505f806112978989612ed6565b915091505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611300576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611421578888876040517fcb27a43500000000000000000000000000000000000000000000000000000000815260040161141893929190614b0a565b60405180910390fd5b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ab576040517fa2d3f3e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611503818b8b8a6040516020016114c493929190614d20565b60405160208183030381529060405285858b6040516020016114e893929190614d5c565b60405160208183030381529060405280519060200120612f24565b95505060405180608001604052808761ffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200184151581526020015f151581525060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600685908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117658661ffff16600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612fdf90919063ffffffff16565b508561ffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff8860016006805490506117cd9190614d91565b6040516117db929190614dc4565b60405180910390a48473ffffffffffffffffffffffffffffffffffffffff166347973bff61180886612ff6565b61181187613011565b61181a8861302d565b61182389613049565b61182c8a613065565b6118358b613081565b61183e8c61309d565b8f6040518963ffffffff1660e01b8152600401611862989796959493929190614deb565b5f604051808303815f87803b158015611879575f80fd5b505af115801561188b573d5f803e3d5ffd5b5050505050505050949350505050565b60605f806118a98585612ed6565b915091505f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f611932826130b9565b90505f811115611b1d578067ffffffffffffffff81111561195657611955614a0c565b5b60405190808252806020026020018201604052801561198f57816020015b61197c613d5c565b8152602001906001900390816119745790505b5094505f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b82811015611b1a575f611a33611a2e83876130cc90919063ffffffff16565b6130e3565b905060405180608001604052808261ffff168152602001845f8461ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001845f8461ffff1681526020019081526020015f205f0160169054906101000a900460ff1615158152602001845f8461ffff1681526020019081526020015f205f0160179054906101000a900460ff161515815250888381518110611b0357611b02614a39565b5b602002602001018190525050806001019050611a0f565b50505b5050505092915050565b611b2f612715565b5f80611b3b8686612ed6565b915091505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8661ffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1603611cf7578686866040517f40aa4644000000000000000000000000000000000000000000000000000000008152600401611cee93929190614b0a565b60405180910390fd5b8315158160600151151503611d37576040517eddccca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8761ffff1681526020019081526020015f205f0160176101000a81548160ff021916908315150217905550806020015173ffffffffffffffffffffffffffffffffffffffff167f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f85604051611e269190613e40565b60405180910390a250505050505050565b5f6001905090565b611e47613d5c565b611e5284848461279c565b90509392505050565b611e63612715565b611e6c5f613129565b565b5f611e77612b31565b90508073ffffffffffffffffffffffffffffffffffffffff16611e98612461565b73ffffffffffffffffffffffffffffffffffffffff1614611ef057806040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611ee79190614578565b60405180910390fd5b611ef981613129565b50565b5f60068281548110611f1157611f10614a39565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f611f4b600b613159565b905090565b5f67016345785d8a0000905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f1b8303611fcd57611f98611f5f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611fda565b611fd7838361316c565b90505b92915050565b5f801b81565b5f805f805f805f80612002896008612e1590919063ffffffff16565b61204357886040517ffb22c17e00000000000000000000000000000000000000000000000000000000815260040161203a91906145de565b60405180910390fd5b5f6120588a6008612e2c90919063ffffffff16565b5f1b905061206581612ff6565b61ffff16985061207481613011565b61ffff1697506120838161302d565b61ffff16965061209281613049565b61ffff1695506120a181613065565b62ffffff1694506120b181613081565b61ffff1693506120c08161309d565b62ffffff1692506120db60ff82612e4590919063ffffffff16565b915050919395975091939597565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612119612715565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166388cc58e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612179573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219d9190614ea2565b73ffffffffffffffffffffffffffffffffffffffff16146121f557806040517f147ce15e0000000000000000000000000000000000000000000000000000000081526004016121ec9190614578565b60405180910390fd5b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361228a57816040517f6f69dca80000000000000000000000000000000000000000000000000000000081526004016122819190614578565b60405180910390fd5b8160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e81836040516122fb929190614ecd565b60405180910390a15050565b61231082610a73565b61231981612925565b6123238383612b38565b50505050565b612331612715565b61234581600b6131d090919063ffffffff16565b61238657806040517f8e888ef300000000000000000000000000000000000000000000000000000000815260040161237d9190614008565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb360405160405180910390a250565b6123d4612715565b6123ec8161ffff1660086131fd90919063ffffffff16565b61242d57806040517ffb22c17e0000000000000000000000000000000000000000000000000000000081526004016124249190614bca565b60405180910390fd5b8061ffff167fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1360405160405180910390a250565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612491612715565b61249a81613214565b50565b6124a5612715565b5f60045490508181036124ef57816040517f6ea8c7a40000000000000000000000000000000000000000000000000000000081526004016124e691906145de565b60405180910390fd5b67016345785d8a0000821115612546578167016345785d8a00006040517f5e8988c100000000000000000000000000000000000000000000000000000000815260040161253d929190614ef4565b60405180910390fd5b816004819055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50818360405161257e929190614ef4565b60405180910390a15050565b612592612715565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166125f1611f5f565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f600454905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f6126b4825f016133ac565b9050919050565b5f805f806126cb865f01866133bf565b91509150815f1c815f1c9350935050509250929050565b5f6126f760ff83612e4590919063ffffffff16565b9050919050565b5f61270b835f01836133fa565b5f1c905092915050565b61271d612b31565b73ffffffffffffffffffffffffffffffffffffffff1661273b611f5f565b73ffffffffffffffffffffffffffffffffffffffff161461279a5761275e612b31565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016127919190614578565b60405180910390fd5b565b6127a4613d5c565b6127ae8484612ed6565b809450819550505060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090509392505050565b5f61291d835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613421565b905092915050565b61293681612931612b31565b613441565b50565b5f61294986868661ffff1661279c565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129c3578585856040517fb65ee9530000000000000000000000000000000000000000000000000000000081526004016129ba93929190614b0a565b60405180910390fd5b828173ffffffffffffffffffffffffffffffffffffffff1663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a319190614f2f565b03612a7357826040517fb70cd0db000000000000000000000000000000000000000000000000000000008152600401612a6a91906141cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16631b057f6d84846040518363ffffffff1660e01b8152600401612aae929190614fe4565b5f604051808303815f87803b158015612ac5575f80fd5b505af1158015612ad7573d5f803e3d5ffd5b50505050505050505050565b5f805f1b8303612b1f576040517f7c64a79e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b298383613492565b905092915050565b5f33905090565b5f612b438383611f86565b15612c18575f60025f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550612bb5612b31565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050612c1c565b5f90505b92915050565b5f8561ffff168761ffff161180612c3e5750610fff8661ffff16115b80612c4e57506127108561ffff16115b80612c5e57506109c48361ffff16115b80612c705750620fffff8262ffffff16115b15612ca7576040517f1c07203f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612cc48861ffff1661ffff5f8461357c909392919063ffffffff16565b9050612ce48761ffff16610fff60108461357c909392919063ffffffff16565b9050612d048661ffff16610fff601c8461357c909392919063ffffffff16565b9050612d248561ffff16613fff60288461357c909392919063ffffffff16565b9050612d468462ffffff1662ffffff60368461357c909392919063ffffffff16565b9050612d668361ffff16613fff604e8461357c909392919063ffffffff16565b9050612d888262ffffff16620fffff605c8461357c909392919063ffffffff16565b9050612db1815f1c6dffffffffffffffffffffffffffff5f8c61357c909392919063ffffffff16565b905098975050505050505050565b5f612ddd8484612dcf575f612dd2565b60015b60ff1660018561357c565b90509392505050565b5f612df8845f01845f1b845f1b613596565b90509392505050565b5f815f1c9050919050565b5f819050919050565b5f612e24835f01835f1b6135cd565b905092915050565b5f612e3b835f01835f1b6135eb565b5f1c905092915050565b5f600183831c16905092915050565b5f612e79835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613667565b905092915050565b60605f612e8f835f016136ce565b905060608190508092505050919050565b5f80612eab836136e2565b90505f612eb785613712565b9050612ecc818361372590919063ffffffff16565b9250505092915050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115612f1757828480945081955050505b8383915091509250929050565b5f60408303516020840351845180602087010180516002830161ffca811115612f545763c8c781395f526004601cfd5b6c5af43d3d93803e603357fd5bf3895289600d8a03527d6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d738160481b176035820160d81b1760218a03528060f01b835287603f8201601f8b035ff5965086612fc05763301164255f526004601cfd5b8183528389528460208a03528560408a03525050505050509392505050565b5f612fee835f01835f1b613667565b905092915050565b5f61300a5f83613a2b90919063ffffffff16565b9050919050565b5f613026601083613a3b90919063ffffffff16565b9050919050565b5f613042601c83613a3b90919063ffffffff16565b9050919050565b5f61305e602883613a4b90919063ffffffff16565b9050919050565b5f61307a603683613a5b90919063ffffffff16565b9050919050565b5f613096604e83613a4b90919063ffffffff16565b9050919050565b5f6130b2605c83613a6c90919063ffffffff16565b9050919050565b5f6130c5825f01613a7d565b9050919050565b5f6130d9835f01836133fa565b5f1c905092915050565b5f818291508161ffff1614613124576040517f64ae406d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561315681613a8c565b50565b5f613165825f01613a7d565b9050919050565b5f60025f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f6131f5835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613b4d565b905092915050565b5f61320c835f01835f1b613c49565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613279576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361332f5760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f4fcea9710000000000000000000000000000000000000000000000000000000081526004016133269190614578565b60405180910390fd5b8160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa7084015272181836040516133a0929190614ecd565b60405180910390a15050565b5f6133b8825f01613c7d565b9050919050565b5f805f6133d784865f01613c9090919063ffffffff16565b905080856002015f8381526020019081526020015f205492509250509250929050565b5f825f0182815481106134105761340f614a39565b5b905f5260205f200154905092915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b61344b8282611f86565b61348e5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613485929190615012565b60405180910390fd5b5050565b5f61349d8383611f86565b61357257600160025f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061350f612b31565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050613576565b5f90505b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f81846002015f8581526020019081526020015f20819055506135c483855f01613ca590919063ffffffff16565b90509392505050565b5f6135e382845f01613cba90919063ffffffff16565b905092915050565b5f80836002015f8481526020019081526020015f205490505f801b8114801561361b575061361984846135cd565b155b1561365d57826040517f02b5668600000000000000000000000000000000000000000000000000000000815260040161365491906141cd565b60405180910390fd5b8091505092915050565b5f6136728383613421565b6136c457825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f2081905550600190506136c8565b5f90505b92915050565b60606136db825f01613ccf565b9050919050565b5f612710608060ff168361ffff16901b81613700576136ff615039565b5b04608060ff166001901b019050919050565b5f628000008262ffffff16039050919050565b5f805f80840361374157608060ff166001901b92505050613a25565b8390505f81121561375657805f039050811591505b621000008110156139a257608060ff166001901b9250846fffffffffffffffffffffffffffffffff86111561379057805f19049050821592505b60018216156137a25780840260801c93505b80810260801c905060028216156137bc5780840260801c93505b80810260801c905060048216156137d65780840260801c93505b80810260801c905060088216156137f05780840260801c93505b80810260801c9050601082161561380a5780840260801c93505b80810260801c905060208216156138245780840260801c93505b80810260801c9050604082161561383e5780840260801c93505b80810260801c905060808216156138585780840260801c93505b80810260801c90506101008216156138735780840260801c93505b80810260801c905061020082161561388e5780840260801c93505b80810260801c90506104008216156138a95780840260801c93505b80810260801c90506108008216156138c45780840260801c93505b80810260801c90506110008216156138df5780840260801c93505b80810260801c90506120008216156138fa5780840260801c93505b80810260801c90506140008216156139155780840260801c93505b80810260801c90506180008216156139305780840260801c93505b80810260801c90506201000082161561394c5780840260801c93505b80810260801c9050620200008216156139685780840260801c93505b80810260801c9050620400008216156139845780840260801c93505b80810260801c9050620800008216156139a05780840260801c93505b505b5f83036139e85784846040517f3b74b31a0000000000000000000000000000000000000000000000000000000081526004016139df92919061507e565b60405180910390fd5b816139f35782613a20565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613a1f91906150a5565b5b925050505b92915050565b5f61ffff83831c16905092915050565b5f610fff83831c16905092915050565b5f613fff83831c16905092915050565b5f62ffffff83831c16905092915050565b5f620fffff83831c16905092915050565b5f815f01805490509050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80836001015f8481526020019081526020015f205490505f8114613c3e575f600182613b7a9190614d91565b90505f6001865f0180549050613b909190614d91565b9050808214613bf6575f865f018281548110613baf57613bae614a39565b5b905f5260205f200154905080875f018481548110613bd057613bcf614a39565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480613c0957613c086150d5565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050613c43565b5f9150505b92915050565b5f826002015f8381526020019081526020015f205f9055613c7582845f01613cee90919063ffffffff16565b905092915050565b5f613c89825f01613a7d565b9050919050565b5f613c9d835f01836133fa565b905092915050565b5f613cb2835f0183613667565b905092915050565b5f613cc7835f0183613421565b905092915050565b60605f613cdd835f01613d03565b905060608190508092505050919050565b5f613cfb835f0183613b4d565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015613d5057602002820191905f5260205f20905b815481526020019060010190808311613d3c575b50505050509050919050565b60405180608001604052805f61ffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613dda81613da6565b8114613de4575f80fd5b50565b5f81359050613df581613dd1565b92915050565b5f60208284031215613e1057613e0f613d9e565b5b5f613e1d84828501613de7565b91505092915050565b5f8115159050919050565b613e3a81613e26565b82525050565b5f602082019050613e535f830184613e31565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b613e9481613e82565b82525050565b5f613ea58383613e8b565b60208301905092915050565b5f602082019050919050565b5f613ec782613e59565b613ed18185613e63565b9350613edc83613e73565b805f5b83811015613f0c578151613ef38882613e9a565b9750613efe83613eb1565b925050600181019050613edf565b5085935050505092915050565b5f6020820190508181035f830152613f318184613ebd565b905092915050565b613f4281613e82565b8114613f4c575f80fd5b50565b5f81359050613f5d81613f39565b92915050565b5f60208284031215613f7857613f77613d9e565b5b5f613f8584828501613f4f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613fd0613fcb613fc684613f8e565b613fad565b613f8e565b9050919050565b5f613fe182613fb6565b9050919050565b5f613ff282613fd7565b9050919050565b61400281613fe8565b82525050565b5f60208201905061401b5f830184613ff9565b92915050565b5f61402b82613f8e565b9050919050565b5f61403c82614021565b9050919050565b61404c81614032565b8114614056575f80fd5b50565b5f8135905061406781614043565b92915050565b5f61ffff82169050919050565b6140838161406d565b811461408d575f80fd5b50565b5f8135905061409e8161407a565b92915050565b5f62ffffff82169050919050565b6140bb816140a4565b81146140c5575f80fd5b50565b5f813590506140d6816140b2565b92915050565b5f805f805f805f805f806101408b8d0312156140fb576140fa613d9e565b5b5f6141088d828e01614059565b9a505060206141198d828e01614059565b995050604061412a8d828e01614090565b985050606061413b8d828e01614090565b975050608061414c8d828e01614090565b96505060a061415d8d828e01614090565b95505060c061416e8d828e01614090565b94505060e061417f8d828e016140c8565b9350506101006141918d828e01614090565b9250506101206141a38d828e016140c8565b9150509295989b9194979a5092959850565b5f819050919050565b6141c7816141b5565b82525050565b5f6020820190506141e05f8301846141be565b92915050565b6141ef816141b5565b81146141f9575f80fd5b50565b5f8135905061420a816141e6565b92915050565b5f6020828403121561422557614224613d9e565b5b5f614232848285016141fc565b91505092915050565b5f602082840312156142505761424f613d9e565b5b5f61425d84828501614059565b91505092915050565b5f805f6060848603121561427d5761427c613d9e565b5b5f61428a86828701614059565b935050602061429b86828701614059565b92505060406142ac86828701614090565b9150509250925092565b6142bf81614021565b81146142c9575f80fd5b50565b5f813590506142da816142b6565b92915050565b5f80604083850312156142f6576142f5613d9e565b5b5f614303858286016141fc565b9250506020614314858286016142cc565b9150509250929050565b61432781613e26565b8114614331575f80fd5b50565b5f813590506143428161431e565b92915050565b5f805f805f805f805f6101208a8c03121561436657614365613d9e565b5b5f6143738c828d01614090565b99505060206143848c828d01614090565b98505060406143958c828d01614090565b97505060606143a68c828d01614090565b96505060806143b78c828d01614090565b95505060a06143c88c828d016140c8565b94505060c06143d98c828d01614090565b93505060e06143ea8c828d016140c8565b9250506101006143fc8c828d01614334565b9150509295985092959850929598565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261442d5761442c61440c565b5b8235905067ffffffffffffffff81111561444a57614449614410565b5b60208301915083600182028301111561446657614465614414565b5b9250929050565b5f805f805f8060a0878903121561448757614486613d9e565b5b5f61449489828a01614059565b96505060206144a589828a01614059565b95505060406144b689828a01614090565b94505060606144c789828a016141fc565b935050608087013567ffffffffffffffff8111156144e8576144e7613da2565b5b6144f489828a01614418565b92509250509295509295509295565b5f61450d82614021565b9050919050565b61451d81614503565b8114614527575f80fd5b50565b5f8135905061453881614514565b92915050565b5f6020828403121561455357614552613d9e565b5b5f6145608482850161452a565b91505092915050565b61457281614021565b82525050565b5f60208201905061458b5f830184614569565b92915050565b5f80604083850312156145a7576145a6613d9e565b5b5f6145b485828601614090565b92505060206145c585828601614334565b9150509250929050565b6145d881613e82565b82525050565b5f6020820190506145f15f8301846145cf565b92915050565b5f805f806080858703121561460f5761460e613d9e565b5b5f61461c87828801614059565b945050602061462d87828801614059565b935050604061463e878288016140c8565b925050606061464f87828801614090565b91505092959194509250565b5f61466582613fd7565b9050919050565b6146758161465b565b82525050565b5f60208201905061468e5f83018461466c565b92915050565b5f80604083850312156146aa576146a9613d9e565b5b5f6146b785828601614059565b92505060206146c885828601614059565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147048161406d565b82525050565b6147138161465b565b82525050565b61472281613e26565b82525050565b608082015f82015161473c5f8501826146fb565b50602082015161474f602085018261470a565b5060408201516147626040850182614719565b5060608201516147756060850182614719565b50505050565b5f6147868383614728565b60808301905092915050565b5f602082019050919050565b5f6147a8826146d2565b6147b281856146dc565b93506147bd836146ec565b805f5b838110156147ed5781516147d4888261477b565b97506147df83614792565b9250506001810190506147c0565b5085935050505092915050565b5f6020820190508181035f830152614812818461479e565b905092915050565b5f805f806080858703121561483257614831613d9e565b5b5f61483f87828801614059565b945050602061485087828801614059565b935050604061486187828801614090565b925050606061487287828801614334565b91505092959194509250565b5f805f6060848603121561489557614894613d9e565b5b5f6148a286828701614059565b93505060206148b386828701614059565b92505060406148c486828701613f4f565b9150509250925092565b608082015f8201516148e25f8501826146fb565b5060208201516148f5602085018261470a565b5060408201516149086040850182614719565b50606082015161491b6060850182614719565b50505050565b5f6080820190506149345f8301846148ce565b92915050565b5f6101008201905061494e5f83018b6145cf565b61495b602083018a6145cf565b61496860408301896145cf565b61497560608301886145cf565b61498260808301876145cf565b61498f60a08301866145cf565b61499c60c08301856145cf565b6149a960e0830184613e31565b9998505050505050505050565b5f602082840312156149cb576149ca613d9e565b5b5f6149d8848285016142cc565b91505092915050565b5f602082840312156149f6576149f5613d9e565b5b5f614a0384828501614090565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614a9d82613e82565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614acf57614ace614a66565b5b600182019050919050565b5f614af4614aef614aea8461406d565b613fad565b613e82565b9050919050565b614b0481614ada565b82525050565b5f606082019050614b1d5f830186613ff9565b614b2a6020830185613ff9565b614b376040830184614afb565b949350505050565b614b488161406d565b82525050565b614b57816140a4565b82525050565b5f60e082019050614b705f83018a614b3f565b614b7d6020830189614b3f565b614b8a6040830188614b3f565b614b976060830187614b3f565b614ba46080830186614b4e565b614bb160a0830185614b3f565b614bbe60c0830184614b4e565b98975050505050505050565b5f602082019050614bdd5f830184614afb565b92915050565b5f614bfd614bf8614bf3846140a4565b613fad565b613e82565b9050919050565b614c0d81614be3565b82525050565b5f60e082019050614c265f83018a614afb565b614c336020830189614afb565b614c406040830188614afb565b614c4d6060830187614afb565b614c5a6080830186614c04565b614c6760a0830185614afb565b614c7460c0830184614c04565b98975050505050505050565b5f604082019050614c935f830185614569565b614ca06020830184614afb565b9392505050565b5f8160601b9050919050565b5f614cbd82614ca7565b9050919050565b5f614cce82614cb3565b9050919050565b614ce6614ce182613fe8565b614cc4565b82525050565b5f8160f01b9050919050565b5f614d0282614cec565b9050919050565b614d1a614d158261406d565b614cf8565b82525050565b5f614d2b8286614cd5565b601482019150614d3b8285614cd5565b601482019150614d4b8284614d09565b600282019150819050949350505050565b5f606082019050614d6f5f830186613ff9565b614d7c6020830185613ff9565b614d896040830184614b3f565b949350505050565b5f614d9b82613e82565b9150614da683613e82565b9250828203905081811115614dbe57614dbd614a66565b5b92915050565b5f604082019050614dd75f83018561466c565b614de460208301846145cf565b9392505050565b5f61010082019050614dff5f83018b614b3f565b614e0c602083018a614b3f565b614e196040830189614b3f565b614e266060830188614b3f565b614e336080830187614b4e565b614e4060a0830186614b3f565b614e4d60c0830185614b4e565b614e5a60e0830184614b4e565b9998505050505050505050565b5f614e7182614021565b9050919050565b614e8181614e67565b8114614e8b575f80fd5b50565b5f81519050614e9c81614e78565b92915050565b5f60208284031215614eb757614eb6613d9e565b5b5f614ec484828501614e8e565b91505092915050565b5f604082019050614ee05f830185614569565b614eed6020830184614569565b9392505050565b5f604082019050614f075f8301856145cf565b614f1460208301846145cf565b9392505050565b5f81519050614f29816141e6565b92915050565b5f60208284031215614f4457614f43613d9e565b5b5f614f5184828501614f1b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015614f91578082015181840152602081019050614f76565b5f8484015250505050565b5f601f19601f8301169050919050565b5f614fb682614f5a565b614fc08185614f64565b9350614fd0818560208601614f74565b614fd981614f9c565b840191505092915050565b5f604082019050614ff75f8301856141be565b81810360208301526150098184614fac565b90509392505050565b5f6040820190506150255f830185614569565b61503260208301846141be565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f819050919050565b61507881615066565b82525050565b5f6040820190506150915f8301856145cf565b61509e602083018461506f565b9392505050565b5f6150af82613e82565b91506150ba83613e82565b9250826150ca576150c9615039565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d904f1501d2f531c2cd19c96e7745fb5b4ec59fe642f722d5d5cbd72c2c467b764736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x701AB8C1 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xAABC4B3C GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xE203A31F GT PUSH2 0x85 JUMPI DUP1 PUSH4 0xE203A31F EQ PUSH2 0x711 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x72D JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xE92D0D5D EQ PUSH2 0x767 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x783 JUMPI DUP1 PUSH4 0xFD90C2BE EQ PUSH2 0x79F JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0xAABC4B3C EQ PUSH2 0x668 JUMPI DUP1 PUSH4 0xAF371065 EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xB0384781 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xDDBFD941 EQ PUSH2 0x6F5 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x80C5061E GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x80C5061E EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0x8CE9AA1C EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x64A JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x701AB8C1 EQ PUSH2 0x52E JUMPI DUP1 PUSH4 0x704037BD EQ PUSH2 0x54C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x586 JUMPI DUP1 PUSH4 0x7DAF5D66 EQ PUSH2 0x590 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x379EE803 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4E937C3A GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x4E937C3A EQ PUSH2 0x45A JUMPI DUP1 PUSH4 0x5A440923 EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x5B35875C EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0x6622E0D7 EQ PUSH2 0x4E2 JUMPI DUP1 PUSH4 0x69D56EA3 EQ PUSH2 0x512 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x379EE803 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0x3A2F1A91 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x3C78A941 EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0x4CCB20C0 EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0x4CD161D3 EQ PUSH2 0x43E JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x224 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0x27721842 EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2CC06B8C EQ PUSH2 0x378 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3B0 JUMPI PUSH2 0x25C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0x282C9C1 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x752092B EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0x93FF769 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0x1AF5BACC EQ PUSH2 0x2FA JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x27A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x275 SWAP2 SWAP1 PUSH2 0x3DFB JUMP JUMPDEST PUSH2 0x7BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x287 SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x298 PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A5 SWAP2 SWAP1 PUSH2 0x3F19 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x922 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D5 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F3 SWAP2 SWAP1 PUSH2 0x40DC JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x302 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x332 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x32D SWAP2 SWAP1 PUSH2 0x4210 JUMP JUMPDEST PUSH2 0xA73 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x362 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x35D SWAP2 SWAP1 PUSH2 0x423B JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x36F SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x392 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x38D SWAP2 SWAP1 PUSH2 0x4266 JUMP JUMPDEST PUSH2 0xAAC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3AE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A9 SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0xB37 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C5 SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0xB59 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3E1 SWAP2 SWAP1 PUSH2 0x4348 JUMP JUMPDEST PUSH2 0xBD4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x402 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3FD SWAP2 SWAP1 PUSH2 0x446D JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x453E JUMP JUMPDEST PUSH2 0xE2C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x428 PUSH2 0xE92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x4591 JUMP JUMPDEST PUSH2 0xEBA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x462 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x492 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x48D SWAP2 SWAP1 PUSH2 0x423B JUMP JUMPDEST PUSH2 0xFFF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x49C PUSH2 0x10A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A9 SWAP2 SWAP1 PUSH2 0x3F19 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4C7 SWAP2 SWAP1 PUSH2 0x45F7 JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x467B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4F7 SWAP2 SWAP1 PUSH2 0x4694 JUMP JUMPDEST PUSH2 0x189B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x509 SWAP2 SWAP1 PUSH2 0x47FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x52C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x527 SWAP2 SWAP1 PUSH2 0x481A JUMP JUMPDEST PUSH2 0x1B27 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x536 PUSH2 0x1E37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x543 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x566 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x561 SWAP2 SWAP1 PUSH2 0x487E JUMP JUMPDEST PUSH2 0x1E3F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x573 SWAP2 SWAP1 PUSH2 0x4921 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x584 PUSH2 0x1E5B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58E PUSH2 0x1E6E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5AA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A5 SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x1EFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B7 SWAP2 SWAP1 PUSH2 0x467B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5C8 PUSH2 0x1F40 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5D5 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5E6 PUSH2 0x1F50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5F3 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x604 PUSH2 0x1F5F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x611 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x634 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62F SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0x1F86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x641 SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x652 PUSH2 0x1FE0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65F SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x682 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x1FE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x696 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x493A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6A7 PUSH2 0x20E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6D2 SWAP2 SWAP1 PUSH2 0x49B6 JUMP JUMPDEST PUSH2 0x2111 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6EE SWAP2 SWAP1 PUSH2 0x42E0 JUMP JUMPDEST PUSH2 0x2307 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x70F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x70A SWAP2 SWAP1 PUSH2 0x423B JUMP JUMPDEST PUSH2 0x2329 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x72B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x726 SWAP2 SWAP1 PUSH2 0x49E1 JUMP JUMPDEST PUSH2 0x23CC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x735 PUSH2 0x2461 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x742 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x765 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x760 SWAP2 SWAP1 PUSH2 0x49B6 JUMP JUMPDEST PUSH2 0x2489 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x781 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x77C SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST PUSH2 0x249D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x79D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x798 SWAP2 SWAP1 PUSH2 0x49B6 JUMP JUMPDEST PUSH2 0x258A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7A7 PUSH2 0x2636 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B4 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x82F JUMPI POP PUSH2 0x82E DUP3 PUSH2 0x263F JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x843 PUSH1 0x8 PUSH2 0x26A8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH2 0x91E JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x867 JUMPI PUSH2 0x866 PUSH2 0x4A0C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x895 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x90F JUMPI PUSH0 DUP1 PUSH2 0x8B9 DUP4 PUSH1 0x8 PUSH2 0x26BB SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x8C8 DUP2 PUSH0 SHL PUSH2 0x26E2 JUMP JUMPDEST ISZERO PUSH2 0x8FC JUMPI DUP2 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x8E1 JUMPI PUSH2 0x8E0 PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP1 PUSH2 0x8F8 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP DUP1 PUSH2 0x908 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST SWAP1 POP PUSH2 0x89B JUMP JUMPDEST POP DUP2 DUP2 LT ISZERO PUSH2 0x91C JUMPI DUP1 DUP4 MSTORE JUMPDEST POP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x937 DUP3 PUSH1 0xB PUSH2 0x26FE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x946 PUSH2 0x2715 JUMP JUMPDEST PUSH0 PUSH2 0x956 DUP12 DUP12 DUP12 PUSH2 0xFFFF AND PUSH2 0x279C JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9D0 JUMPI DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9C7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6653851A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA15 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B5D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xAA5 DUP3 PUSH1 0xB PUSH2 0x28F8 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH2 0xAD6 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH2 0xB31 DUP5 DUP5 DUP5 PUSH0 DUP1 SHL PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAF9 JUMPI PUSH2 0xAF8 PUSH2 0x4A0C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB2B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH2 0x2939 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB40 DUP3 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0xB49 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH2 0xB53 DUP4 DUP4 PUSH2 0x2AE3 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xB61 PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBC5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBCF DUP3 DUP3 PUSH2 0x2B38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xBDC PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x1 DUP10 PUSH2 0xFFFF AND LT ISZERO PUSH2 0xC26 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0x4F958E7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1D SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC48 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH0 DUP1 SHL PUSH2 0x2C22 SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0xC6A JUMPI PUSH2 0xC67 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH2 0x2DBF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0xC86 DUP11 PUSH2 0xFFFF AND DUP3 PUSH0 SHR PUSH1 0x8 PUSH2 0x2DE6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP10 PUSH2 0xFFFF AND PUSH32 0x839844A256A87F87C9C835117D9A1C40BE013954064C937072ACB32D36DB6A28 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0xCC7 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP2 ISZERO ISZERO DUP11 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH2 0xD39 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xD59 DUP6 PUSH2 0x2E01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xD9C JUMPI POP PUSH0 PUSH1 0xA0 SHL PUSH2 0xD83 DUP6 PUSH2 0x2E0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST ISZERO PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD43A15D100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE23 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x2939 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE34 PUSH2 0x2715 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3B9FBE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE79 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE8B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xEC2 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0xEDA DUP3 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E15 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF1B JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF12 SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xF34 DUP4 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E2C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP DUP2 ISZERO ISZERO PUSH2 0xF4F PUSH1 0xFF DUP4 PUSH2 0x2E45 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO SUB PUSH2 0xF88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x237C71B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFB9 DUP4 PUSH2 0xFFFF AND PUSH2 0xFA6 DUP5 PUSH1 0xFF DUP6 PUSH2 0x2DBF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHR PUSH1 0x8 PUSH2 0x2DE6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP2 ISZERO ISZERO DUP4 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x6 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1007 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x101B DUP2 PUSH1 0xB PUSH2 0x2E54 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x105C JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x3CE0AD900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1053 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x84CC2115995684DCB0CD3D3A9565E3D32F075DE81DB70C8DC3A719B2A47AF67E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x10AE PUSH1 0x8 PUSH2 0x2E81 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x10CC DUP3 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E15 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x110D JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1104 SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1126 DUP4 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x2E2C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH2 0x1133 PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x116C DUP3 PUSH2 0x26E2 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1177 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x11BB JUMPI CALLER DUP5 PUSH1 0x40 MLOAD PUSH32 0x9F85FCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B2 SWAP3 SWAP2 SWAP1 PUSH2 0x4C80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11CF DUP7 PUSH1 0xB PUSH2 0x28F8 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1210 JUMPI DUP6 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1207 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1280 JUMPI DUP7 PUSH1 0x40 MLOAD PUSH32 0x2F9B185300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1277 SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x128A DUP6 DUP6 PUSH2 0x2EA0 JUMP JUMPDEST POP PUSH0 DUP1 PUSH2 0x1297 DUP10 DUP10 PUSH2 0x2ED6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1300 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x7 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1421 JUMPI DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH32 0xCB27A43500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1418 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x14AB JUMPI PUSH1 0x40 MLOAD PUSH32 0xA2D3F3E400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1503 DUP2 DUP12 DUP12 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14C4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D20 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP6 DUP6 DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x14E8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2F24 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x7 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x6 DUP6 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1765 DUP7 PUSH2 0xFFFF AND PUSH1 0xD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH2 0x2FDF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP6 PUSH2 0xFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C8D104B27C6B7F4492017A6F5CF3803043688934EBCAA6A03540BEEAF976AFF DUP9 PUSH1 0x1 PUSH1 0x6 DUP1 SLOAD SWAP1 POP PUSH2 0x17CD SWAP2 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17DB SWAP3 SWAP2 SWAP1 PUSH2 0x4DC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x47973BFF PUSH2 0x1808 DUP7 PUSH2 0x2FF6 JUMP JUMPDEST PUSH2 0x1811 DUP8 PUSH2 0x3011 JUMP JUMPDEST PUSH2 0x181A DUP9 PUSH2 0x302D JUMP JUMPDEST PUSH2 0x1823 DUP10 PUSH2 0x3049 JUMP JUMPDEST PUSH2 0x182C DUP11 PUSH2 0x3065 JUMP JUMPDEST PUSH2 0x1835 DUP12 PUSH2 0x3081 JUMP JUMPDEST PUSH2 0x183E DUP13 PUSH2 0x309D JUMP JUMPDEST DUP16 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1862 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DEB JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1879 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x188B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 PUSH2 0x18A9 DUP6 DUP6 PUSH2 0x2ED6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0xD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 PUSH2 0x1932 DUP3 PUSH2 0x30B9 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH2 0x1B1D JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1956 JUMPI PUSH2 0x1955 PUSH2 0x4A0C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x198F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x197C PUSH2 0x3D5C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1974 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH0 PUSH1 0x7 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1B1A JUMPI PUSH0 PUSH2 0x1A33 PUSH2 0x1A2E DUP4 DUP8 PUSH2 0x30CC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x30E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE POP DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1B03 JUMPI PUSH2 0x1B02 PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x1A0F JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1B2F PUSH2 0x2715 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1B3B DUP7 DUP7 PUSH2 0x2ED6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0x7 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1CF7 JUMPI DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x40AA464400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CEE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP2 PUSH1 0x60 ADD MLOAD ISZERO ISZERO SUB PUSH2 0x1D37 JUMPI PUSH1 0x40 MLOAD PUSH31 0xDDCCCA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x7 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x44CF35361C9FF3C8C1397EC6410D5495CC481FEAEF35C9AF11DA1A637107DE4F DUP6 PUSH1 0x40 MLOAD PUSH2 0x1E26 SWAP2 SWAP1 PUSH2 0x3E40 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1E47 PUSH2 0x3D5C JUMP JUMPDEST PUSH2 0x1E52 DUP5 DUP5 DUP5 PUSH2 0x279C JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E63 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x1E6C PUSH0 PUSH2 0x3129 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x1E77 PUSH2 0x2B31 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1E98 PUSH2 0x2461 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1EF0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE7 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1EF9 DUP2 PUSH2 0x3129 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x6 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1F11 JUMPI PUSH2 0x1F10 PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1F4B PUSH1 0xB PUSH2 0x3159 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0x16345785D8A0000 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH2 0x1FCD JUMPI PUSH2 0x1F98 PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0x1FD7 DUP4 DUP4 PUSH2 0x316C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x2002 DUP10 PUSH1 0x8 PUSH2 0x2E15 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2043 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x203A SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2058 DUP11 PUSH1 0x8 PUSH2 0x2E2C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH2 0x2065 DUP2 PUSH2 0x2FF6 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 POP PUSH2 0x2074 DUP2 PUSH2 0x3011 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP8 POP PUSH2 0x2083 DUP2 PUSH2 0x302D JUMP JUMPDEST PUSH2 0xFFFF AND SWAP7 POP PUSH2 0x2092 DUP2 PUSH2 0x3049 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP6 POP PUSH2 0x20A1 DUP2 PUSH2 0x3065 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP5 POP PUSH2 0x20B1 DUP2 PUSH2 0x3081 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP4 POP PUSH2 0x20C0 DUP2 PUSH2 0x309D JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP3 POP PUSH2 0x20DB PUSH1 0xFF DUP3 PUSH2 0x2E45 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2119 PUSH2 0x2715 JUMP JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88CC58E4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2179 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219D SWAP2 SWAP1 PUSH2 0x4EA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x21F5 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x147CE15E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21EC SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x228A JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6F69DCA800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2281 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x900D0E3D359F50E4F923ECDC06B401E07DBB9F485E17B07BCFC91A13000B277E DUP2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x22FB SWAP3 SWAP2 SWAP1 PUSH2 0x4ECD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2310 DUP3 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x2319 DUP2 PUSH2 0x2925 JUMP JUMPDEST PUSH2 0x2323 DUP4 DUP4 PUSH2 0x2B38 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2331 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x2345 DUP2 PUSH1 0xB PUSH2 0x31D0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2386 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x237D SWAP2 SWAP1 PUSH2 0x4008 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB767739217755D8AF5A2BA75B181A19FA1750F8BB701F09311CB19A90140CB3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x23D4 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x23EC DUP2 PUSH2 0xFFFF AND PUSH1 0x8 PUSH2 0x31FD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x242D JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2424 SWAP2 SWAP1 PUSH2 0x4BCA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xFFFF AND PUSH32 0xDD86B848BB56FF540CAA68683FA467D0E7EB5F8B2D44E4EE435742EEEAE9BE13 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2491 PUSH2 0x2715 JUMP JUMPDEST PUSH2 0x249A DUP2 PUSH2 0x3214 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x24A5 PUSH2 0x2715 JUMP JUMPDEST PUSH0 PUSH1 0x4 SLOAD SWAP1 POP DUP2 DUP2 SUB PUSH2 0x24EF JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6EA8C7A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24E6 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0x16345785D8A0000 DUP3 GT ISZERO PUSH2 0x2546 JUMPI DUP2 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x253D SWAP3 SWAP2 SWAP1 PUSH2 0x4EF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x257E SWAP3 SWAP2 SWAP1 PUSH2 0x4EF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x2592 PUSH2 0x2715 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x25F1 PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 PUSH1 0x4 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x26B4 DUP3 PUSH0 ADD PUSH2 0x33AC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x26CB DUP7 PUSH0 ADD DUP7 PUSH2 0x33BF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SHR DUP2 PUSH0 SHR SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x26F7 PUSH1 0xFF DUP4 PUSH2 0x2E45 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x270B DUP4 PUSH0 ADD DUP4 PUSH2 0x33FA JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x271D PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x273B PUSH2 0x1F5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x279A JUMPI PUSH2 0x275E PUSH2 0x2B31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2791 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x27A4 PUSH2 0x3D5C JUMP JUMPDEST PUSH2 0x27AE DUP5 DUP5 PUSH2 0x2ED6 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP PUSH1 0x7 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x291D DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH2 0x3421 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2936 DUP2 PUSH2 0x2931 PUSH2 0x2B31 JUMP JUMPDEST PUSH2 0x3441 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x2949 DUP7 DUP7 DUP7 PUSH2 0xFFFF AND PUSH2 0x279C JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x29C3 JUMPI DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29BA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x781A8915 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A0D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A31 SWAP2 SWAP1 PUSH2 0x4F2F JUMP JUMPDEST SUB PUSH2 0x2A73 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xB70CD0DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A6A SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B057F6D DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AAE SWAP3 SWAP2 SWAP1 PUSH2 0x4FE4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AC5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AD7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH2 0x2B1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C64A79E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B29 DUP4 DUP4 PUSH2 0x3492 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x2B43 DUP4 DUP4 PUSH2 0x1F86 JUMP JUMPDEST ISZERO PUSH2 0x2C18 JUMPI PUSH0 PUSH1 0x2 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x2BB5 PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x2C1C JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND DUP8 PUSH2 0xFFFF AND GT DUP1 PUSH2 0x2C3E JUMPI POP PUSH2 0xFFF DUP7 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH2 0x2C4E JUMPI POP PUSH2 0x2710 DUP6 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH2 0x2C5E JUMPI POP PUSH2 0x9C4 DUP4 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH2 0x2C70 JUMPI POP PUSH3 0xFFFFF DUP3 PUSH3 0xFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x2CA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1C07203F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2CC4 DUP9 PUSH2 0xFFFF AND PUSH2 0xFFFF PUSH0 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2CE4 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x10 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D04 DUP7 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x1C DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D24 DUP6 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x28 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D46 DUP5 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH1 0x36 DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D66 DUP4 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x4E DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2D88 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFF PUSH1 0x5C DUP5 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x2DB1 DUP2 PUSH0 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 DUP13 PUSH2 0x357C SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2DDD DUP5 DUP5 PUSH2 0x2DCF JUMPI PUSH0 PUSH2 0x2DD2 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP6 PUSH2 0x357C JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2DF8 DUP5 PUSH0 ADD DUP5 PUSH0 SHL DUP5 PUSH0 SHL PUSH2 0x3596 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2E24 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x35CD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2E3B DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x35EB JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2E79 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x2E8F DUP4 PUSH0 ADD PUSH2 0x36CE JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2EAB DUP4 PUSH2 0x36E2 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x2EB7 DUP6 PUSH2 0x3712 JUMP JUMPDEST SWAP1 POP PUSH2 0x2ECC DUP2 DUP4 PUSH2 0x3725 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2F17 JUMPI DUP3 DUP5 DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP JUMPDEST DUP4 DUP4 SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 SUB MLOAD PUSH1 0x20 DUP5 SUB MLOAD DUP5 MLOAD DUP1 PUSH1 0x20 DUP8 ADD ADD DUP1 MLOAD PUSH1 0x2 DUP4 ADD PUSH2 0xFFCA DUP2 GT ISZERO PUSH2 0x2F54 JUMPI PUSH4 0xC8C78139 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH13 0x5AF43D3D93803E603357FD5BF3 DUP10 MSTORE DUP10 PUSH1 0xD DUP11 SUB MSTORE PUSH30 0x6100003D81600A3D39F3363D3D373D3D3D3D610000806035363936013D73 DUP2 PUSH1 0x48 SHL OR PUSH1 0x35 DUP3 ADD PUSH1 0xD8 SHL OR PUSH1 0x21 DUP11 SUB MSTORE DUP1 PUSH1 0xF0 SHL DUP4 MSTORE DUP8 PUSH1 0x3F DUP3 ADD PUSH1 0x1F DUP12 SUB PUSH0 CREATE2 SWAP7 POP DUP7 PUSH2 0x2FC0 JUMPI PUSH4 0x30116425 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST DUP2 DUP4 MSTORE DUP4 DUP10 MSTORE DUP5 PUSH1 0x20 DUP11 SUB MSTORE DUP6 PUSH1 0x40 DUP11 SUB MSTORE POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2FEE DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x300A PUSH0 DUP4 PUSH2 0x3A2B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3026 PUSH1 0x10 DUP4 PUSH2 0x3A3B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3042 PUSH1 0x1C DUP4 PUSH2 0x3A3B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x305E PUSH1 0x28 DUP4 PUSH2 0x3A4B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x307A PUSH1 0x36 DUP4 PUSH2 0x3A5B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3096 PUSH1 0x4E DUP4 PUSH2 0x3A4B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x30B2 PUSH1 0x5C DUP4 PUSH2 0x3A6C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x30C5 DUP3 PUSH0 ADD PUSH2 0x3A7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x30D9 DUP4 PUSH0 ADD DUP4 PUSH2 0x33FA JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP3 SWAP2 POP DUP2 PUSH2 0xFFFF AND EQ PUSH2 0x3124 JUMPI PUSH1 0x40 MLOAD PUSH32 0x64AE406D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH2 0x3156 DUP2 PUSH2 0x3A8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x3165 DUP3 PUSH0 ADD PUSH2 0x3A7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x31F5 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH2 0x3B4D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x320C DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH2 0x3C49 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3279 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x332F JUMPI PUSH1 0x3 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH32 0x4FCEA97100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3326 SWAP2 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x3 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x33A0 SWAP3 SWAP2 SWAP1 PUSH2 0x4ECD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x33B8 DUP3 PUSH0 ADD PUSH2 0x3C7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH2 0x33D7 DUP5 DUP7 PUSH0 ADD PUSH2 0x3C90 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3410 JUMPI PUSH2 0x340F PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344B DUP3 DUP3 PUSH2 0x1F86 JUMP JUMPDEST PUSH2 0x348E JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3485 SWAP3 SWAP2 SWAP1 PUSH2 0x5012 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x349D DUP4 DUP4 PUSH2 0x1F86 JUMP JUMPDEST PUSH2 0x3572 JUMPI PUSH1 0x1 PUSH1 0x2 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x350F PUSH2 0x2B31 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x3576 JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP5 PUSH1 0x2 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x35C4 DUP4 DUP6 PUSH0 ADD PUSH2 0x3CA5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x35E3 DUP3 DUP5 PUSH0 ADD PUSH2 0x3CBA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x2 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP1 SHL DUP2 EQ DUP1 ISZERO PUSH2 0x361B JUMPI POP PUSH2 0x3619 DUP5 DUP5 PUSH2 0x35CD JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x365D JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x2B5668600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3654 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3672 DUP4 DUP4 PUSH2 0x3421 JUMP JUMPDEST PUSH2 0x36C4 JUMPI DUP3 PUSH0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH0 ADD DUP1 SLOAD SWAP1 POP DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP PUSH2 0x36C8 JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x36DB DUP3 PUSH0 ADD PUSH2 0x3CCF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2710 PUSH1 0x80 PUSH1 0xFF AND DUP4 PUSH2 0xFFFF AND SWAP1 SHL DUP2 PUSH2 0x3700 JUMPI PUSH2 0x36FF PUSH2 0x5039 JUMP JUMPDEST JUMPDEST DIV PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x800000 DUP3 PUSH3 0xFFFFFF AND SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 DUP5 SUB PUSH2 0x3741 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP POP POP PUSH2 0x3A25 JUMP JUMPDEST DUP4 SWAP1 POP PUSH0 DUP2 SLT ISZERO PUSH2 0x3756 JUMPI DUP1 PUSH0 SUB SWAP1 POP DUP2 ISZERO SWAP2 POP JUMPDEST PUSH3 0x100000 DUP2 LT ISZERO PUSH2 0x39A2 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 GT ISZERO PUSH2 0x3790 JUMPI DUP1 PUSH0 NOT DIV SWAP1 POP DUP3 ISZERO SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x37A2 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x37BC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x37D6 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x37F0 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x380A JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x3824 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x383E JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x3858 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x3873 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x388E JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x38A9 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x38C4 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x38DF JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x38FA JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x3915 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x3930 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x394C JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x3968 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x3984 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x39A0 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST POP JUMPDEST PUSH0 DUP4 SUB PUSH2 0x39E8 JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3B74B31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39DF SWAP3 SWAP2 SWAP1 PUSH2 0x507E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x39F3 JUMPI DUP3 PUSH2 0x3A20 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3A1F SWAP2 SWAP1 PUSH2 0x50A5 JUMP JUMPDEST JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3FFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 EQ PUSH2 0x3C3E JUMPI PUSH0 PUSH1 0x1 DUP3 PUSH2 0x3B7A SWAP2 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP7 PUSH0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x3B90 SWAP2 SWAP1 PUSH2 0x4D91 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x3BF6 JUMPI PUSH0 DUP7 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3BAF JUMPI PUSH2 0x3BAE PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3BD0 JUMPI PUSH2 0x3BCF PUSH2 0x4A39 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP8 PUSH1 0x1 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP6 PUSH0 ADD DUP1 SLOAD DUP1 PUSH2 0x3C09 JUMPI PUSH2 0x3C08 PUSH2 0x50D5 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x3C43 JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH2 0x3C75 DUP3 DUP5 PUSH0 ADD PUSH2 0x3CEE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3C89 DUP3 PUSH0 ADD PUSH2 0x3A7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3C9D DUP4 PUSH0 ADD DUP4 PUSH2 0x33FA JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3CB2 DUP4 PUSH0 ADD DUP4 PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3CC7 DUP4 PUSH0 ADD DUP4 PUSH2 0x3421 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x3CDD DUP4 PUSH0 ADD PUSH2 0x3D03 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3CFB DUP4 PUSH0 ADD DUP4 PUSH2 0x3B4D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x3D50 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x3D3C JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3DDA DUP2 PUSH2 0x3DA6 JUMP JUMPDEST DUP2 EQ PUSH2 0x3DE4 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3DF5 DUP2 PUSH2 0x3DD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E10 JUMPI PUSH2 0x3E0F PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x3E1D DUP5 DUP3 DUP6 ADD PUSH2 0x3DE7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E3A DUP2 PUSH2 0x3E26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3E53 PUSH0 DUP4 ADD DUP5 PUSH2 0x3E31 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3E94 DUP2 PUSH2 0x3E82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3EA5 DUP4 DUP4 PUSH2 0x3E8B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3EC7 DUP3 PUSH2 0x3E59 JUMP JUMPDEST PUSH2 0x3ED1 DUP2 DUP6 PUSH2 0x3E63 JUMP JUMPDEST SWAP4 POP PUSH2 0x3EDC DUP4 PUSH2 0x3E73 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F0C JUMPI DUP2 MLOAD PUSH2 0x3EF3 DUP9 DUP3 PUSH2 0x3E9A JUMP JUMPDEST SWAP8 POP PUSH2 0x3EFE DUP4 PUSH2 0x3EB1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3EDF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x3F31 DUP2 DUP5 PUSH2 0x3EBD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3F42 DUP2 PUSH2 0x3E82 JUMP JUMPDEST DUP2 EQ PUSH2 0x3F4C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F5D DUP2 PUSH2 0x3F39 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F78 JUMPI PUSH2 0x3F77 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x3F85 DUP5 DUP3 DUP6 ADD PUSH2 0x3F4F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3FD0 PUSH2 0x3FCB PUSH2 0x3FC6 DUP5 PUSH2 0x3F8E JUMP JUMPDEST PUSH2 0x3FAD JUMP JUMPDEST PUSH2 0x3F8E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3FE1 DUP3 PUSH2 0x3FB6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x3FF2 DUP3 PUSH2 0x3FD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4002 DUP2 PUSH2 0x3FE8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x401B PUSH0 DUP4 ADD DUP5 PUSH2 0x3FF9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x402B DUP3 PUSH2 0x3F8E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x403C DUP3 PUSH2 0x4021 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x404C DUP2 PUSH2 0x4032 JUMP JUMPDEST DUP2 EQ PUSH2 0x4056 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4067 DUP2 PUSH2 0x4043 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4083 DUP2 PUSH2 0x406D JUMP JUMPDEST DUP2 EQ PUSH2 0x408D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x409E DUP2 PUSH2 0x407A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x40BB DUP2 PUSH2 0x40A4 JUMP JUMPDEST DUP2 EQ PUSH2 0x40C5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x40D6 DUP2 PUSH2 0x40B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x40FB JUMPI PUSH2 0x40FA PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4108 DUP14 DUP3 DUP15 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH2 0x4119 DUP14 DUP3 DUP15 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH2 0x412A DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH2 0x413B DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH2 0x414C DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH2 0x415D DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH2 0x416E DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH2 0x417F DUP14 DUP3 DUP15 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 PUSH2 0x4191 DUP14 DUP3 DUP15 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x120 PUSH2 0x41A3 DUP14 DUP3 DUP15 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x41C7 DUP2 PUSH2 0x41B5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x41E0 PUSH0 DUP4 ADD DUP5 PUSH2 0x41BE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x41EF DUP2 PUSH2 0x41B5 JUMP JUMPDEST DUP2 EQ PUSH2 0x41F9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x420A DUP2 PUSH2 0x41E6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4225 JUMPI PUSH2 0x4224 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4232 DUP5 DUP3 DUP6 ADD PUSH2 0x41FC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4250 JUMPI PUSH2 0x424F PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x425D DUP5 DUP3 DUP6 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x427D JUMPI PUSH2 0x427C PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x428A DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x429B DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x42AC DUP7 DUP3 DUP8 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x42BF DUP2 PUSH2 0x4021 JUMP JUMPDEST DUP2 EQ PUSH2 0x42C9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x42DA DUP2 PUSH2 0x42B6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x42F6 JUMPI PUSH2 0x42F5 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4303 DUP6 DUP3 DUP7 ADD PUSH2 0x41FC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4314 DUP6 DUP3 DUP7 ADD PUSH2 0x42CC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x4327 DUP2 PUSH2 0x3E26 JUMP JUMPDEST DUP2 EQ PUSH2 0x4331 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4342 DUP2 PUSH2 0x431E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x4366 JUMPI PUSH2 0x4365 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4373 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x4384 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x4395 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x43A6 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x43B7 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH2 0x43C8 DUP13 DUP3 DUP14 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH2 0x43D9 DUP13 DUP3 DUP14 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x43EA DUP13 DUP3 DUP14 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x43FC DUP13 DUP3 DUP14 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x442D JUMPI PUSH2 0x442C PUSH2 0x440C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x444A JUMPI PUSH2 0x4449 PUSH2 0x4410 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4466 JUMPI PUSH2 0x4465 PUSH2 0x4414 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4487 JUMPI PUSH2 0x4486 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4494 DUP10 DUP3 DUP11 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x44A5 DUP10 DUP3 DUP11 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0x44B6 DUP10 DUP3 DUP11 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0x44C7 DUP10 DUP3 DUP11 ADD PUSH2 0x41FC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44E8 JUMPI PUSH2 0x44E7 PUSH2 0x3DA2 JUMP JUMPDEST JUMPDEST PUSH2 0x44F4 DUP10 DUP3 DUP11 ADD PUSH2 0x4418 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH2 0x450D DUP3 PUSH2 0x4021 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x451D DUP2 PUSH2 0x4503 JUMP JUMPDEST DUP2 EQ PUSH2 0x4527 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4538 DUP2 PUSH2 0x4514 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4553 JUMPI PUSH2 0x4552 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4560 DUP5 DUP3 DUP6 ADD PUSH2 0x452A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4572 DUP2 PUSH2 0x4021 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x458B PUSH0 DUP4 ADD DUP5 PUSH2 0x4569 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45A7 JUMPI PUSH2 0x45A6 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x45B4 DUP6 DUP3 DUP7 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x45C5 DUP6 DUP3 DUP7 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x45D8 DUP2 PUSH2 0x3E82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x45F1 PUSH0 DUP4 ADD DUP5 PUSH2 0x45CF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x460F JUMPI PUSH2 0x460E PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x461C DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x462D DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x463E DUP8 DUP3 DUP9 ADD PUSH2 0x40C8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x464F DUP8 DUP3 DUP9 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH2 0x4665 DUP3 PUSH2 0x3FD7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4675 DUP2 PUSH2 0x465B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x468E PUSH0 DUP4 ADD DUP5 PUSH2 0x466C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46AA JUMPI PUSH2 0x46A9 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x46B7 DUP6 DUP3 DUP7 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x46C8 DUP6 DUP3 DUP7 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4704 DUP2 PUSH2 0x406D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4713 DUP2 PUSH2 0x465B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4722 DUP2 PUSH2 0x3E26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH2 0x473C PUSH0 DUP6 ADD DUP3 PUSH2 0x46FB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x474F PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x470A JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4762 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4775 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4786 DUP4 DUP4 PUSH2 0x4728 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x47A8 DUP3 PUSH2 0x46D2 JUMP JUMPDEST PUSH2 0x47B2 DUP2 DUP6 PUSH2 0x46DC JUMP JUMPDEST SWAP4 POP PUSH2 0x47BD DUP4 PUSH2 0x46EC JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47ED JUMPI DUP2 MLOAD PUSH2 0x47D4 DUP9 DUP3 PUSH2 0x477B JUMP JUMPDEST SWAP8 POP PUSH2 0x47DF DUP4 PUSH2 0x4792 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x47C0 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x4812 DUP2 DUP5 PUSH2 0x479E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4832 JUMPI PUSH2 0x4831 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x483F DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4850 DUP8 DUP3 DUP9 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4861 DUP8 DUP3 DUP9 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4872 DUP8 DUP3 DUP9 ADD PUSH2 0x4334 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4895 JUMPI PUSH2 0x4894 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x48A2 DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x48B3 DUP7 DUP3 DUP8 ADD PUSH2 0x4059 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x48C4 DUP7 DUP3 DUP8 ADD PUSH2 0x3F4F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH2 0x48E2 PUSH0 DUP6 ADD DUP3 PUSH2 0x46FB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x48F5 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x470A JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4908 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x491B PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x4719 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4934 PUSH0 DUP4 ADD DUP5 PUSH2 0x48CE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH2 0x494E PUSH0 DUP4 ADD DUP12 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x495B PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4968 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4975 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4982 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x498F PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x499C PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x49A9 PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x3E31 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49CB JUMPI PUSH2 0x49CA PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x49D8 DUP5 DUP3 DUP6 ADD PUSH2 0x42CC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x49F6 JUMPI PUSH2 0x49F5 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4A03 DUP5 DUP3 DUP6 ADD PUSH2 0x4090 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x4A9D DUP3 PUSH2 0x3E82 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x4ACF JUMPI PUSH2 0x4ACE PUSH2 0x4A66 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4AF4 PUSH2 0x4AEF PUSH2 0x4AEA DUP5 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x3FAD JUMP JUMPDEST PUSH2 0x3E82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4B04 DUP2 PUSH2 0x4ADA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4B1D PUSH0 DUP4 ADD DUP7 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4B2A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4B37 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4AFB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4B48 DUP2 PUSH2 0x406D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4B57 DUP2 PUSH2 0x40A4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x4B70 PUSH0 DUP4 ADD DUP11 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4B7D PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4B8A PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4B97 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4BA4 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x4BB1 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4BBE PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4B4E JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4BDD PUSH0 DUP4 ADD DUP5 PUSH2 0x4AFB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4BFD PUSH2 0x4BF8 PUSH2 0x4BF3 DUP5 PUSH2 0x40A4 JUMP JUMPDEST PUSH2 0x3FAD JUMP JUMPDEST PUSH2 0x3E82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4C0D DUP2 PUSH2 0x4BE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x4C26 PUSH0 DUP4 ADD DUP11 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C33 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C40 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C4D PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C5A PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x4C04 JUMP JUMPDEST PUSH2 0x4C67 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4AFB JUMP JUMPDEST PUSH2 0x4C74 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4C04 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4C93 PUSH0 DUP4 ADD DUP6 PUSH2 0x4569 JUMP JUMPDEST PUSH2 0x4CA0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4AFB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x60 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4CBD DUP3 PUSH2 0x4CA7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4CCE DUP3 PUSH2 0x4CB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4CE6 PUSH2 0x4CE1 DUP3 PUSH2 0x3FE8 JUMP JUMPDEST PUSH2 0x4CC4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0xF0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4D02 DUP3 PUSH2 0x4CEC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4D1A PUSH2 0x4D15 DUP3 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x4CF8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4D2B DUP3 DUP7 PUSH2 0x4CD5 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4D3B DUP3 DUP6 PUSH2 0x4CD5 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH2 0x4D4B DUP3 DUP5 PUSH2 0x4D09 JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4D6F PUSH0 DUP4 ADD DUP7 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4D7C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x3FF9 JUMP JUMPDEST PUSH2 0x4D89 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x4B3F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4D9B DUP3 PUSH2 0x3E82 JUMP JUMPDEST SWAP2 POP PUSH2 0x4DA6 DUP4 PUSH2 0x3E82 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x4DBE JUMPI PUSH2 0x4DBD PUSH2 0x4A66 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4DD7 PUSH0 DUP4 ADD DUP6 PUSH2 0x466C JUMP JUMPDEST PUSH2 0x4DE4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH2 0x4DFF PUSH0 DUP4 ADD DUP12 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E0C PUSH1 0x20 DUP4 ADD DUP11 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E19 PUSH1 0x40 DUP4 ADD DUP10 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E26 PUSH1 0x60 DUP4 ADD DUP9 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E33 PUSH1 0x80 DUP4 ADD DUP8 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x4E40 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x4B3F JUMP JUMPDEST PUSH2 0x4E4D PUSH1 0xC0 DUP4 ADD DUP6 PUSH2 0x4B4E JUMP JUMPDEST PUSH2 0x4E5A PUSH1 0xE0 DUP4 ADD DUP5 PUSH2 0x4B4E JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4E71 DUP3 PUSH2 0x4021 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E81 DUP2 PUSH2 0x4E67 JUMP JUMPDEST DUP2 EQ PUSH2 0x4E8B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E9C DUP2 PUSH2 0x4E78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EB7 JUMPI PUSH2 0x4EB6 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4EC4 DUP5 DUP3 DUP6 ADD PUSH2 0x4E8E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4EE0 PUSH0 DUP4 ADD DUP6 PUSH2 0x4569 JUMP JUMPDEST PUSH2 0x4EED PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4569 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F07 PUSH0 DUP4 ADD DUP6 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x4F14 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x4F29 DUP2 PUSH2 0x41E6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F44 JUMPI PUSH2 0x4F43 PUSH2 0x3D9E JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x4F51 DUP5 DUP3 DUP6 ADD PUSH2 0x4F1B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4F91 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4F76 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4FB6 DUP3 PUSH2 0x4F5A JUMP JUMPDEST PUSH2 0x4FC0 DUP2 DUP6 PUSH2 0x4F64 JUMP JUMPDEST SWAP4 POP PUSH2 0x4FD0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4F74 JUMP JUMPDEST PUSH2 0x4FD9 DUP2 PUSH2 0x4F9C JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4FF7 PUSH0 DUP4 ADD DUP6 PUSH2 0x41BE JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x5009 DUP2 DUP5 PUSH2 0x4FAC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5025 PUSH0 DUP4 ADD DUP6 PUSH2 0x4569 JUMP JUMPDEST PUSH2 0x5032 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x41BE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5078 DUP2 PUSH2 0x5066 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5091 PUSH0 DUP4 ADD DUP6 PUSH2 0x45CF JUMP JUMPDEST PUSH2 0x509E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x506F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x50AF DUP3 PUSH2 0x3E82 JUMP JUMPDEST SWAP2 POP PUSH2 0x50BA DUP4 PUSH2 0x3E82 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x50CA JUMPI PUSH2 0x50C9 PUSH2 0x5039 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 DIV CALL POP SAR 0x2F MSTORE8 SHR 0x2C 0xD1 SWAP13 SWAP7 0xE7 PUSH21 0x5FB5B4EC59FE642F722D5D5CBD72C2C467B764736F PUSH13 0x63430008140033000000000000 ", - "sourceMap": "1263:28002:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9083:677:10;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5787:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20493:802;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1600:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3810:120:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6166:151:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22786:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4226:136:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5328:245;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16985:1139:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21882:504;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26167:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3808:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18504:532;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4824:126;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24527:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8810:133;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12363:2404;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10017:1133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15338:695;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3598:114;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6703:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:101:2;;;:::i;:::-;;2119:229:3;;;:::i;:::-;;5142:131:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5435:148;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4031:120;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1638:85:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28576:203:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2187:49:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7660:992:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;4563:142;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11341:624;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4642:138:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25062:244:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19262:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1232:99:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23371:122:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23810:448;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1524:178:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4286:118:10;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:202:0;2650:4;2688:32;2673:47;;;:11;:47;;;;:87;;;;2724:36;2748:11;2724:23;:36::i;:::-;2673:87;2666:94;;2565:202;;;:::o;9083:677:10:-;9142:28;9182:14;9199:17;:8;:15;:17::i;:::-;9182:34;;9240:1;9231:6;:10;9227:527;;;9285:6;9271:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9257:35;;9307:13;9340:9;9335:268;9355:6;9351:1;:10;9335:268;;;9387:15;9404:14;9422;9434:1;9422:8;:11;;:14;;;;:::i;:::-;9386:50;;;;9459:30;9481:6;9473:15;;9459:13;:30::i;:::-;9455:134;;;9534:7;9513:11;9525:5;9513:18;;;;;;;;:::i;:::-;;;;;;;:28;;;;;9563:7;;;;;:::i;:::-;;;;9455:134;9368:235;;9363:3;;;;:::i;:::-;;;9335:268;;;;9629:6;9621:5;:14;9617:127;;;9706:5;9693:11;9686:26;9617:127;9243:511;9227:527;9172:588;9083:677;:::o;5787:153::-;5864:12;5902:30;5926:5;5902:20;:23;;:30;;;;:::i;:::-;5888:45;;5787:153;;;:::o;20493:802::-;1531:13:2;:11;:13::i;:::-;20862:14:10::1;20879:46;20901:6;20909;20917:7;20879:46;;:21;:46::i;:::-;:53;;;20862:70;;20974:1;20947:29;;20955:6;20947:29;;::::0;20943:94:::1;;21013:6;21021;21029:7;20985:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;20943:94;21048:6;:29;;;21091:10;21115:12;21141:11;21166:15;21195:18;21227:13;21254:24;21048:240;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20852:443;20493:802:::0;;;;;;;;;;:::o;1600:82::-;1648:34;1600:82;:::o;3810:120:0:-;3875:7;3901:6;:12;3908:4;3901:12;;;;;;;;;;;:22;;;3894:29;;3810:120;;;:::o;6166:151:10:-;6234:12;6265:45;6303:5;6265:20;:29;;:45;;;;:::i;:::-;6258:52;;6166:151;;;:::o;22786:239::-;1648:34;2464:16:0;2475:4;2464:10;:16::i;:::-;22949:69:10::1;22977:6;22985;22993:7;23002:1;22949:69:::0;::::1;23015:1;23005:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22949:27;:69::i;:::-;22786:239:::0;;;;:::o;4226:136:0:-;4300:18;4313:4;4300:12;:18::i;:::-;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;:::-;;4226:136:::0;;;:::o;5328:245::-;5443:12;:10;:12::i;:::-;5421:34;;:18;:34;;;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;16985:1139:10:-;1531:13:2;:11;:13::i;:::-;1790:1:10::1;17319:7;:23;;;17315:69;;;17376:7;17351:33;;;;;;;;;;;:::i;:::-;;;;;;;;17315:69;17395:14;17412:244;17459:10;17483:12;17509:11;17534:15;17563:18;17595:13;17622:24;17420:1;17412:10:::0;::::1;:33;;:244;;;;;;;;;;:::i;:::-;17395:261;;17671:6;17667:90;;;17702:44;17717:4;1739:3;17702:6;:14;;:44;;;;;:::i;:::-;17693:53;;17667:90;17767:38;17780:7;17767:38;;17797:6;17789:15;;17767:8;:12;;:38;;;;;:::i;:::-;;17844:7;17821:241;;;17865:10;17889:12;17915:11;17940:15;17969:18;18001:13;18028:24;17821:241;;;;;;;;;;;;:::i;:::-;;;;;;;;18110:6;18078:39;;18101:7;18078:39;;;;;;;;;;;;17305:819;16985:1139:::0;;;;;;;;;:::o;21882:504::-;1648:34;2464:16:0;2475:4;2464:10;:16::i;:::-;22173:1:10::1;22130:45;;:31;22145:15;22130:14;:31::i;:::-;:45;;;:85;;;;22214:1;22179:36;;:31;22194:15;22179:14;:31::i;:::-;:36;;;;22130:85;22126:158;;;22238:35;;;;;;;;;;;;;;22126:158;22294:85;22322:6;22330;22338:7;22347:15;22364:14;;22294:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;:85::i;:::-;21882:504:::0;;;;;;;:::o;26167:96::-;1531:13:2;:11;:13::i;:::-;26239:4:10::1;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26167:96:::0;:::o;3808:118::-;3867:20;3906:13;;;;;;;;;;;3899:20;;3808:118;:::o;18504:532::-;1531:13:2;:11;:13::i;:::-;18604:26:10::1;18622:7;18604:26;;:8;:17;;:26;;;;:::i;:::-;18599:78;;18669:7;18639:38;;;;;;;;;;;:::i;:::-;;;;;;;;18599:78;18688:14;18713:21;18726:7;18713:21;;:8;:12;;:21;;;;:::i;:::-;18705:30;;18688:47;;18795:6;18750:51;;:41;1739:3;18750:6;:17;;:41;;;;:::i;:::-;:51;;::::0;18746:140:::1;;18824:51;;;;;;;;;;;;;;18746:140;18896:78;18909:7;18896:78;;18926:46;18941:6;1739:3;18926:6;:14;;:46;;;;;:::i;:::-;18918:55;;18896:8;:12;;:78;;;;;:::i;:::-;;19022:6;18990:39;;19013:7;18990:39;;;;;;;;;;;;18589:447;18504:532:::0;;:::o;4824:126::-;4886:20;4925:11;:18;;;;4918:25;;4824:126;:::o;24527:264::-;1531:13:2;:11;:13::i;:::-;24612:45:10::1;24645:10;24612:20;:24;;:45;;;;:::i;:::-;24607:135;;24720:10;24680:51;;;;;;;;;;;:::i;:::-;;;;;;;;24607:135;24773:10;24757:27;;;;;;;;;;;;24527:264:::0;:::o;8810:133::-;8868:34;8921:15;:8;:13;:15::i;:::-;8914:22;;8810:133;:::o;12363:2404::-;12499:12;12532:26;12550:7;12532:26;;:8;:17;;:26;;;;:::i;:::-;12527:78;;12597:7;12567:38;;;;;;;;;;;:::i;:::-;;;;;;;;12527:78;12616:14;12641:21;12654:7;12641:21;;:8;:12;;:21;;;;:::i;:::-;12633:30;;12616:47;;12673:12;12702:7;:5;:7::i;:::-;12688:21;;:10;:21;;;12673:36;;12725:21;12739:6;12725:13;:21::i;:::-;12724:22;:34;;;;;12751:7;12750:8;12724:34;12720:126;;;12815:10;12827:7;12781:54;;;;;;;;;;;;:::i;:::-;;;;;;;;12720:126;12861:46;12899:6;12861:20;:29;;:46;;;;:::i;:::-;12856:103;;12952:6;12916:43;;;;;;;;;;;:::i;:::-;;;;;;;;12856:103;12984:6;12974:16;;:6;:16;;;12970:66;;13029:6;12999:37;;;;;;;;;;;:::i;:::-;;;;;;;;12970:66;13117:45;13144:8;13154:7;13117:26;:45::i;:::-;;13281:13;13296;13313:27;13325:6;13333;13313:11;:27::i;:::-;13280:60;;;;13419:1;13392:29;;13400:6;13392:29;;;13388:66;;13430:24;;;;;;;;;;;;;;13388:66;13533:1;13468:67;;13476:12;:20;13489:6;13476:20;;;;;;;;;;;;;;;:28;13497:6;13476:28;;;;;;;;;;;;;;;:37;13505:7;13476:37;;;;;;;;;;;;;:44;;;;;;;;;;;;13468:67;;;13464:160;;13589:6;13597;13605:7;13558:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;13464:160;13648:22;13673:21;;;;;;;;;;;13648:46;;13739:1;13713:28;;:14;:28;;;13709:74;;13750:33;;;;;;;;;;;;;;13709:74;13830:218;13885:14;13938:6;13946;13954:7;13921:41;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14005:6;14013;14021:7;13994:35;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13984:46;;;;;;13830:33;:218::i;:::-;13798:264;;13634:439;14135:102;;;;;;;;14163:7;14135:102;;;;;;14180:4;14135:102;;;;;;14202:7;14135:102;;;;;;14230:5;14135:102;;;;;14083:12;:20;14096:6;14083:20;;;;;;;;;;;;;;;:28;14104:6;14083:28;;;;;;;;;;;;;;;:37;14112:7;14083:37;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14248:11;14265:4;14248:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14280:53;14325:7;14280:53;;:24;:32;14305:6;14280:32;;;;;;;;;;;;;;;:40;14313:6;14280:40;;;;;;;;;;;;;;;:44;;:53;;;;:::i;:::-;;14379:7;14349:68;;14371:6;14349:68;;14363:6;14349:68;;;14388:4;14415:1;14394:11;:18;;;;:22;;;;:::i;:::-;14349:68;;;;;;;:::i;:::-;;;;;;;;14428:4;:15;;;14457:22;:6;:20;:22::i;:::-;14493:24;:6;:22;:24::i;:::-;14531:23;:6;:21;:23::i;:::-;14568:27;:6;:25;:27::i;:::-;14609:30;:6;:28;:30::i;:::-;14653:25;:6;:23;:25::i;:::-;14692:36;:6;:34;:36::i;:::-;14742:8;14428:332;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12517:2250;;;;12363:2404;;;;;;:::o;10017:1133::-;10134:43;10218:13;10233;10250:27;10262:6;10270;10250:11;:27::i;:::-;10217:60;;;;10292:40;10335:24;:32;10360:6;10335:32;;;;;;;;;;;;;;;:40;10368:6;10335:40;;;;;;;;;;;;;;;10292:83;;10390:14;10407:19;:10;:17;:19::i;:::-;10390:36;;10454:1;10445:6;:10;10441:693;;;10518:6;10494:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10475:50;;10544:57;10604:12;:20;10617:6;10604:20;;;;;;;;;;;;;;;:28;10625:6;10604:28;;;;;;;;;;;;;;;10544:88;;10656:9;10651:469;10675:6;10671:1;:10;10651:469;;;10710:14;10727:25;:16;10741:1;10727:10;:13;;:16;;;;:::i;:::-;:23;:25::i;:::-;10710:42;;10797:304;;;;;;;;10850:7;10797:304;;;;;;10891:11;:20;10903:7;10891:20;;;;;;;;;;;;;:27;;;;;;;;;;;;10797:304;;;;;;10960:11;:20;10972:7;10960:20;;;;;;;;;;;;;:35;;;;;;;;;;;;10797:304;;;;;;11040:11;:20;11052:7;11040:20;;;;;;;;;;;;;:38;;;;;;;;;;;;10797:304;;;;;10775:16;10792:1;10775:19;;;;;;;;:::i;:::-;;;;;;;:326;;;;10688:432;10683:3;;;;;10651:469;;;;10457:677;10441:693;10193:951;;;;10017:1133;;;;:::o;15338:695::-;1531:13:2;:11;:13::i;:::-;15463::10::1;15478::::0;15495:27:::1;15507:6;15515;15495:11;:27::i;:::-;15462:60;;;;15533:40;15576:12;:20;15589:6;15576:20;;;;;;;;;;;;;;;:28;15597:6;15576:28;;;;;;;;;;;;;;;:37;15605:7;15576:37;;;;;;;;;;;;;15533:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;15670:1;15627:45;;15635:15;:22;;;15627:45;;::::0;15623:137:::1;;15725:6;15733;15741:7;15695:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;15623:137;15811:7;15774:44;;:15;:33;;;:44;;::::0;15770:106:::1;;15827:49;;;;;;;;;;;;;;15770:106;15945:7;15887:12;:20;15900:6;15887:20;;;;;;;;;;;;;;;:28;15908:6;15887:28;;;;;;;;;;;;;;;:37;15916:7;15887:37;;;;;;;;;;;;;:55;;;:65;;;;;;;;;;;;;;;;;;15994:15;:22;;;15968:58;;;16018:7;15968:58;;;;;;:::i;:::-;;;;;;;;15452:581;;;15338:695:::0;;;;:::o;3598:114::-;3655:18;1790:1;3685:20;;3598:114;:::o;6703:259::-;6844:42;;:::i;:::-;6909:46;6931:6;6939;6947:7;6909:21;:46::i;:::-;6902:53;;6703:259;;;;;:::o;2293:101:2:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2119:229:3:-;2171:14;2188:12;:10;:12::i;:::-;2171:29;;2232:6;2214:24;;:14;:12;:14::i;:::-;:24;;;2210:96;;2288:6;2261:34;;;;;;;;;;;:::i;:::-;;;;;;;;2210:96;2315:26;2334:6;2315:18;:26::i;:::-;2161:187;2119:229::o;5142:131:10:-;5215:14;5248:11;5260:5;5248:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5241:25;;5142:131;;;:::o;5435:148::-;5501:27;5547:29;:20;:27;:29::i;:::-;5540:36;;5435:148;:::o;4031:120::-;4093:14;1854:6;4119:25;;4031:120;:::o;1638:85:2:-;1684:7;1710:6;;;;;;;;;;;1703:13;;1638:85;:::o;28576:203:10:-;28654:4;2232::0;28682:18:10;;28674:4;:26;28670:57;;28720:7;:5;:7::i;:::-;28709:18;;:7;:18;;;28702:25;;;;28670:57;28744:28;28758:4;28764:7;28744:13;:28::i;:::-;28737:35;;28576:203;;;;;:::o;2187:49:0:-;2232:4;2187:49;;;:::o;7660:992:10:-;7773:18;7805:20;7839:19;7872:23;7909:26;7949:21;7984:32;8030:11;8071:26;8089:7;8071:8;:17;;:26;;;;:::i;:::-;8066:78;;8136:7;8106:38;;;;;;;;;;;:::i;:::-;;;;;;;;8066:78;8155:14;8180:21;8193:7;8180:8;:12;;:21;;;;:::i;:::-;8172:30;;8155:47;;8226:22;:6;:20;:22::i;:::-;8213:35;;;;8273:24;:6;:22;:24::i;:::-;8258:39;;;;8321:23;:6;:21;:23::i;:::-;8307:37;;;;8372:27;:6;:25;:27::i;:::-;8354:45;;;;8430:30;:6;:28;:30::i;:::-;8409:51;;;;8486:25;:6;:23;:25::i;:::-;8470:41;;;;8548:36;:6;:34;:36::i;:::-;8521:63;;;;8604:41;1739:3;8604:6;:17;;:41;;;;:::i;:::-;8595:50;;8056:596;7660:992;;;;;;;;;:::o;4563:142::-;4630:28;4677:21;;;;;;;;;;;4670:28;;4563:142;:::o;11341:624::-;1531:13:2;:11;:13::i;:::-;11498:4:10::1;11449:53;;11457:23;11449:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;11445:150;;11560:23;11525:59;;;;;;;;;;;:::i;:::-;;;;;;;;11445:150;11605:31;11639:21;;;;;;;;;;;11605:55;;11701:23;11674:50;;:23;:50;;::::0;11670:142:::1;;11777:23;11747:54;;;;;;;;;;;:::i;:::-;;;;;;;;11670:142;11846:23;11822:21;;:47;;;;;;;;;;;;;;;;;;11885:73;11909:23;11934;11885:73;;;;;;;:::i;:::-;;;;;;;;11435:530;11341:624:::0;:::o;4642:138:0:-;4717:18;4730:4;4717:12;:18::i;:::-;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;:::-;;4642:138:::0;;;:::o;25062:244:10:-;1531:13:2;:11;:13::i;:::-;25150:48:10::1;25186:10;25150:20;:27;;:48;;;;:::i;:::-;25145:109;;25243:10;25207:47;;;;;;;;;;;:::i;:::-;;;;;;;;25145:109;25288:10;25270:29;;;;;;;;;;;;25062:244:::0;:::o;19262:197::-;1531:13:2;:11;:13::i;:::-;19343:24:10::1;19359:7;19343:24;;:8;:15;;:24;;;;:::i;:::-;19338:76;;19406:7;19376:38;;;;;;;;;;;:::i;:::-;;;;;;;;19338:76;19444:7;19430:22;;;;;;;;;;;;19262:197:::0;:::o;1232:99:3:-;1285:7;1311:13;;;;;;;;;;;1304:20;;1232:99;:::o;23371:122:10:-;1531:13:2;:11;:13::i;:::-;23456:30:10::1;23473:12;23456:16;:30::i;:::-;23371:122:::0;:::o;23810:448::-;1531:13:2;:11;:13::i;:::-;23895:23:10::1;23921:13;;23895:39;;23968:12;23949:15;:31:::0;23945:85:::1;;24017:12;23989:41;;;;;;;;;;;:::i;:::-;;;;;;;;23945:85;1854:6;24044:12;:33;24040:111;;;24118:12;1854:6;24086:65;;;;;;;;;;;;:::i;:::-;;;;;;;;24040:111;24178:12;24162:13;:28;;;;24205:46;24221:15;24238:12;24205:46;;;;;;;:::i;:::-;;;;;;;;23885:373;23810:448:::0;:::o;1524:178:3:-;1531:13:2;:11;:13::i;:::-;1629:8:3::1;1613:13;;:24;;;;;;;;;;;;;;;;;;1686:8;1652:43;;1677:7;:5;:7::i;:::-;1652:43;;;;;;;;;;;;1524:178:::0;:::o;4286:118:10:-;4345:20;4384:13;;4377:20;;4286:118;:::o;763:146:6:-;839:4;877:25;862:40;;;:11;:40;;;;855:47;;763:146;;;:::o;7009:117:8:-;7075:7;7101:18;7108:3;:10;;7101:6;:18::i;:::-;7094:25;;7009:117;;;:::o;7463:211::-;7540:7;7549;7569:11;7582:13;7599:21;7602:3;:10;;7614:5;7599:2;:21::i;:::-;7568:52;;;;7646:3;7638:12;;7660:5;7652:14;;7630:37;;;;;;7463:211;;;;;:::o;25312:133:10:-;25374:4;25397:41;1739:3;25397:6;:17;;:41;;;;:::i;:::-;25390:48;;25312:133;;;:::o;9574:156:9:-;9648:7;9698:22;9702:3;:10;;9714:5;9698:3;:22::i;:::-;9690:31;;9667:56;;9574:156;;;;:::o;1796:162:2:-;1866:12;:10;:12::i;:::-;1855:23;;:7;:5;:7::i;:::-;:23;;;1851:101;;1928:12;:10;:12::i;:::-;1901:40;;;;;;;;;;;:::i;:::-;;;;;;;;1851:101;1796:162::o;26631:271:10:-;26755:24;;:::i;:::-;26814:27;26826:6;26834;26814:11;:27::i;:::-;26795:46;;;;;;;;26858:12;:20;26871:6;26858:20;;;;;;;;;;;;;;;:28;26879:6;26858:28;;;;;;;;;;;;;;;:37;26887:7;26858:37;;;;;;;;;;;26851:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26631:271;;;;;:::o;8871:165:9:-;8951:4;8974:55;8984:3;:10;;9020:5;9004:23;;8996:32;;8974:9;:55::i;:::-;8967:62;;8871:165;;;;:::o;3199:103:0:-;3265:30;3276:4;3282:12;:10;:12::i;:::-;3265:10;:30::i;:::-;3199:103;:::o;27743:571:10:-;27945:14;27962:46;27984:6;27992;28000:7;27962:46;;:21;:46::i;:::-;:53;;;27945:70;;28057:1;28030:29;;28038:6;28030:29;;;28026:94;;28096:6;28104;28112:7;28068:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;28026:94;28167:15;28134:6;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;28130:108;;28222:15;28191:47;;;;;;;;;;;:::i;:::-;;;;;;;;28130:108;28249:6;:25;;;28275:15;28292:14;28249:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27935:379;27743:571;;;;;:::o;29035:228::-;29113:4;2232::0;29141:18:10;;29133:4;:26;29129:79;;29168:40;;;;;;;;;;;;;;29129:79;29225:31;29242:4;29248:7;29225:16;:31::i;:::-;29218:38;;29035:228;;;;:::o;656:96:5:-;709:7;735:10;728:17;;656:96;:::o;6730:317:0:-;6808:4;6828:22;6836:4;6842:7;6828;:22::i;:::-;6824:217;;;6898:5;6866:6;:12;6873:4;6866:12;;;;;;;;;;;:20;;:29;6887:7;6866:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;6949:12;:10;:12::i;:::-;6922:40;;6940:7;6922:40;;6934:4;6922:40;;;;;;;;;;6983:4;6976:11;;;;6824:217;7025:5;7018:12;;6730:317;;;;;:::o;12905:1397:19:-;13212:17;13273:11;13258:26;;:12;:26;;;:63;;;;349:5:22;13288:11:19;:33;;;13258:63;:126;;;;617:6:16;13341:15:19;:43;;;13258:126;:174;;;;543:5:16;13388:13:19;:44;;;13258:174;:240;;;;504:7:22;13452:24:19;:46;;;13258:240;13241:315;;;13516:40;;;;;;;;;;;;;;13241:315;13579:66;13593:10;13579:66;;452:6:22;1184:1:19;13579:9;:13;;:66;;;;;;:::i;:::-;13567:78;;13667:70;13681:12;13667:70;;349:5:22;1240:2:19;13667:9;:13;;:70;;;;;;:::i;:::-;13655:82;;13759:68;13773:11;13759:68;;349:5:22;1296:2:19;13759:9;:13;;:68;;;;;;:::i;:::-;13747:80;;13849:76;13863:15;13849:76;;400:6:22;1356:2:19;13849:9;:13;;:76;;;;;;:::i;:::-;13837:88;;13947:78;13961:18;13947:78;;557:8:22;1415:2:19;13947:9;:13;;:78;;;;;;:::i;:::-;13935:90;;14047:72;14061:13;14047:72;;400:6:22;1473:2:19;14047:9;:13;;:72;;;;;;:::i;:::-;14035:84;;14141:80;14155:24;14141:80;;504:7:22;1528:2:19;14141:9;:13;;:80;;;;;;:::i;:::-;14129:92;;14239:56;14258:9;14250:18;;1911:30;14293:1;14239:6;:10;;:56;;;;;;:::i;:::-;14232:63;;12905:1397;;;;;;;;;;:::o;1754:180:22:-;1841:18;1878:49;1882:7;1891;:15;;1905:1;1891:15;;;1901:1;1891:15;1878:49;;251:3;1920:6;1878:3;:49::i;:::-;1871:56;;1754:180;;;;;:::o;6246:161:8:-;6332:4;6355:45;6359:3;:10;;6379:3;6371:12;;6393:5;6385:14;;6355:3;:45::i;:::-;6348:52;;6246:161;;;;;:::o;3932:148:17:-;3998:13;4055:15;4047:24;;4023:50;;3932:148;;;:::o;4730:130::-;4796:13;4837:15;4821:32;;4730:130;;;:::o;6781:145:8:-;6862:4;6885:34;6894:3;:10;;6914:3;6906:12;;6885:8;:34::i;:::-;6878:41;;6781:145;;;;:::o;8183:147::-;8259:7;8293:29;8297:3;:10;;8317:3;8309:12;;8293:3;:29::i;:::-;8285:38;;8278:45;;8183:147;;;;:::o;2680:187:22:-;2756:12;2840:10;2830:7;2822:6;2818:20;2814:37;2803:48;;2680:187;;;;:::o;8316:150:9:-;8386:4;8409:50;8414:3;:10;;8450:5;8434:23;;8426:32;;8409:4;:50::i;:::-;8402:57;;8316:150;;;;:::o;8880:298:8:-;8944:16;8972:22;8997:16;9002:3;:10;;8997:4;:16::i;:::-;8972:41;;9023:23;9133:5;9123:15;;9165:6;9158:13;;;;8880:298;;;:::o;806:217:20:-;880:13;905:12;920:16;928:7;920;:16::i;:::-;905:31;;946:15;964;976:2;964:11;:15::i;:::-;946:33;;998:18;1007:8;998:4;:8;;:18;;;;:::i;:::-;990:26;;895:128;;806:217;;;;:::o;27149:195:10:-;27222:6;27230;27261;27252:15;;:6;:15;;;27248:56;;;27289:6;27297;27269:35;;;;;;;;27248:56;27322:6;27330;27314:23;;;;27149:195;;;;;:::o;1284:9525:18:-;1403:16;1578:4;1572;1568:15;1562:22;1629:4;1623;1619:15;1613:22;1672:4;1666:11;1726:10;1719:4;1713;1709:15;1705:32;1771:7;1765:14;1909:1;1897:10;1893:18;2171:6;2158:11;2155:23;2152:237;;;2282:10;2276:4;2269:24;2370:4;2364;2357:18;2152:237;9691:28;9685:4;9678:42;9813:14;9806:4;9800;9796:15;9789:39;10004:62;9990:11;9984:4;9980:22;9977:90;9949:4;9936:11;9932:22;9926:4;9922:33;9898:187;9875:4;9869;9865:15;9841:258;10138:11;10132:4;10128:22;10119:7;10112:39;10265:4;10258;10245:11;10241:22;10234:4;10228;10224:15;10221:1;10213:57;10201:69;;10340:8;10330:230;;10453:10;10447:4;10440:24;10541:4;10535;10528:18;10330:230;10656:7;10647;10640:24;10690:10;10684:4;10677:24;10738:8;10731:4;10725;10721:15;10714:33;10784:8;10777:4;10771;10767:15;10760:33;1444:9359;;;;;;1284:9525;;;;;:::o;10804:129:9:-;10871:4;10894:32;10899:3;:10;;10919:5;10911:14;;10894:4;:32::i;:::-;10887:39;;10804:129;;;;:::o;2208:150:19:-;2270:17;2312:39;1184:1;2312:6;:19;;:39;;;;:::i;:::-;2299:52;;2208:150;;;:::o;2667:158::-;2731:19;2777:41;1240:2;2777:6;:19;;:41;;;;:::i;:::-;2762:56;;2667:158;;;:::o;3130:154::-;3193:18;3237:40;1296:2;3237:6;:19;;:40;;;;:::i;:::-;3223:54;;3130:154;;;:::o;3605:170::-;3672:22;3724:44;1356:2;3724:6;:19;;:44;;;;:::i;:::-;3706:62;;3605:170;;;:::o;4111:178::-;4181:25;4239:43;1415:2;4239:6;:19;;:43;;;;:::i;:::-;4218:64;;4111:178;;;:::o;4602:162::-;4667:20;4715:42;1473:2;4715:6;:19;;:42;;;;:::i;:::-;4699:58;;4602:162;;;:::o;5126:192::-;5202:31;5272:39;1528:2;5272:6;:19;;:39;;;;:::i;:::-;5245:66;;5126:192;;;:::o;11542:112:9:-;11602:7;11628:19;11636:3;:10;;11628:7;:19::i;:::-;11621:26;;11542:112;;;:::o;11996:135::-;12067:7;12101:22;12105:3;:10;;12117:5;12101:3;:22::i;:::-;12093:31;;12086:38;;11996:135;;;;:::o;10535::23:-;10585:8;10628:1;10621;10610:13;;;10609:20;;;10605:58;;10638:25;;;;;;;;;;;;;;10605:58;10535:135;;;:::o;1886:153:3:-;1975:13;;1968:20;;;;;;;;;;;1998:34;2023:8;1998:24;:34::i;:::-;1886:153;:::o;9117:115:9:-;9180:7;9206:19;9214:3;:10;;9206:7;:19::i;:::-;9199:26;;9117:115;;;:::o;2854:136:0:-;2931:4;2954:6;:12;2961:4;2954:12;;;;;;;;;;;:20;;:29;2975:7;2954:29;;;;;;;;;;;;;;;;;;;;;;;;;2947:36;;2854:136;;;;:::o;8634:156:9:-;8707:4;8730:53;8738:3;:10;;8774:5;8758:23;;8750:32;;8730:7;:53::i;:::-;8723:60;;8634:156;;;;:::o;6566:136:8:-;6640:4;6663:32;6670:3;:10;;6690:3;6682:12;;6663:6;:32::i;:::-;6656:39;;6566:136;;;;:::o;25588:383:10:-;25683:1;25659:26;;:12;:26;;;25655:63;;25694:24;;;;;;;;;;;;;;25655:63;25729:23;25755:13;;;;;;;;;;;25729:39;;25801:12;25782:31;;:15;:31;;;25778:86;;25850:13;;;;;;;;;;;25822:42;;;;;;;;;;;:::i;:::-;;;;;;;;25778:86;25891:12;25875:13;;:28;;;;;;;;;;;;;;;;;;25918:46;25934:15;25951:12;25918:46;;;;;;;:::i;:::-;;;;;;;;25645:326;25588:383;:::o;3716:123:8:-;3788:7;3814:18;:3;:9;;:16;:18::i;:::-;3807:25;;3716:123;;;:::o;4192:191::-;4275:7;4284;4303:11;4317:19;4330:5;4317:3;:9;;:12;;:19;;;;:::i;:::-;4303:33;;4354:3;4359;:11;;:16;4371:3;4359:16;;;;;;;;;;;;4346:30;;;;;4192:191;;;;;:::o;4923:118:9:-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;;5009:25;;4923:118;;;;:::o;4264:129::-;4337:4;4385:1;4360:3;:14;;:21;4375:5;4360:21;;;;;;;;;;;;:26;;4353:33;;4264:129;;;;:::o;3432:197:0:-;3520:22;3528:4;3534:7;3520;:22::i;:::-;3515:108;;3598:7;3607:4;3565:47;;;;;;;;;;;;:::i;:::-;;;;;;;;3515:108;3432:197;;:::o;6179:316::-;6256:4;6277:22;6285:4;6291:7;6277;:22::i;:::-;6272:217;;6347:4;6315:6;:12;6322:4;6315:12;;;;;;;;;;;:20;;:29;6336:7;6315:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6397:12;:10;:12::i;:::-;6370:40;;6388:7;6370:40;;6382:4;6370:40;;;;;;;;;;6431:4;6424:11;;;;6272:217;6473:5;6466:12;;6179:316;;;;;:::o;1121:317:22:-;1243:18;1343:4;1335:6;1331:17;1327:22;1318:7;1314:36;1300:50;;1415:4;1408:5;1404:16;1396:6;1392:29;1380:10;1377:45;1363:59;;1121:317;;;;;;:::o;2901:174:8:-;2993:4;3028:5;3009:3;:11;;:16;3021:3;3009:16;;;;;;;;;;;:24;;;;3050:18;3064:3;3050;:9;;:13;;:18;;;;:::i;:::-;3043:25;;2901:174;;;;;:::o;3486:140::-;3573:4;3596:23;3615:3;3596;:9;;:18;;:23;;;;:::i;:::-;3589:30;;3486:140;;;;:::o;4973:274::-;5055:7;5074:13;5090:3;:11;;:16;5102:3;5090:16;;;;;;;;;;;;5074:32;;5129:1;5120:10;;:5;:10;:33;;;;;5135:18;5144:3;5149;5135:8;:18::i;:::-;5134:19;5120:33;5116:103;;;5204:3;5176:32;;;;;;;;;;;:::i;:::-;;;;;;;;5116:103;5235:5;5228:12;;;4973:274;;;;:::o;2241:406:9:-;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;2362:3;:11;;2379:5;2362:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2544:3;:11;;:18;;;;2520:3;:14;;:21;2535:5;2520:21;;;;;;;;;;;:42;;;;2583:4;2576:11;;;;2320:321;2625:5;2618:12;;2241:406;;;;;:::o;5797:130:8:-;5867:16;5902:18;:3;:9;;:16;:18::i;:::-;5895:25;;5797:130;;;:::o;1693:213:20:-;1749:7;617:6:16;252:3;1818:42:20;;1826:7;1818:16;;:42;;1817:72;;;;;:::i;:::-;;;252:3:16;295:17;;:1;:17;;1799:90:20;1792:97;;1693:213;;;:::o;2068:156::-;2123:6;585:7;2187:2;2179:11;;2172:35;2165:42;;2068:156;;;:::o;4107:3600:24:-;4164:14;4190:11;4211:12;4243:1;4238;:6;4234:34;;252:3:16;295:17;;:1;:17;;4246:22:24;;;;;;4234:34;4310:1;4302:9;;4337:1;4331:4;4327:12;4324:109;;;4373:4;4370:1;4366:12;4358:20;;4412:6;4405:14;4395:24;;4324:109;4464:8;4457:4;:15;4453:3060;;;252:3:16;295:17;;:1;:17;;4488:24:24;;4568:1;4595:34;4592:1;4589:41;4586:161;;;4676:7;4672:1;4668:6;4664:20;4653:31;;4722:6;4715:14;4705:24;;4586:161;4778:3;4772:4;4768:14;4765:62;;;4816:7;4808:6;4804:20;4799:3;4795:30;4785:40;;4765:62;4877:7;4868;4864:21;4859:3;4855:31;4844:42;;4916:3;4910:4;4906:14;4903:62;;;4954:7;4946:6;4942:20;4937:3;4933:30;4923:40;;4903:62;5015:7;5006;5002:21;4997:3;4993:31;4982:42;;5054:3;5048:4;5044:14;5041:62;;;5092:7;5084:6;5080:20;5075:3;5071:30;5061:40;;5041:62;5153:7;5144;5140:21;5135:3;5131:31;5120:42;;5192:3;5186:4;5182:14;5179:62;;;5230:7;5222:6;5218:20;5213:3;5209:30;5199:40;;5179:62;5291:7;5282;5278:21;5273:3;5269:31;5258:42;;5330:4;5324;5320:15;5317:63;;;5369:7;5361:6;5357:20;5352:3;5348:30;5338:40;;5317:63;5430:7;5421;5417:21;5412:3;5408:31;5397:42;;5469:4;5463;5459:15;5456:63;;;5508:7;5500:6;5496:20;5491:3;5487:30;5477:40;;5456:63;5569:7;5560;5556:21;5551:3;5547:31;5536:42;;5608:4;5602;5598:15;5595:63;;;5647:7;5639:6;5635:20;5630:3;5626:30;5616:40;;5595:63;5708:7;5699;5695:21;5690:3;5686:31;5675:42;;5747:4;5741;5737:15;5734:63;;;5786:7;5778:6;5774:20;5769:3;5765:30;5755:40;;5734:63;5847:7;5838;5834:21;5829:3;5825:31;5814:42;;5886:5;5880:4;5876:16;5873:64;;;5926:7;5918:6;5914:20;5909:3;5905:30;5895:40;;5873:64;5987:7;5978;5974:21;5969:3;5965:31;5954:42;;6026:5;6020:4;6016:16;6013:64;;;6066:7;6058:6;6054:20;6049:3;6045:30;6035:40;;6013:64;6127:7;6118;6114:21;6109:3;6105:31;6094:42;;6166:5;6160:4;6156:16;6153:64;;;6206:7;6198:6;6194:20;6189:3;6185:30;6175:40;;6153:64;6267:7;6258;6254:21;6249:3;6245:31;6234:42;;6306:5;6300:4;6296:16;6293:64;;;6346:7;6338:6;6334:20;6329:3;6325:30;6315:40;;6293:64;6407:7;6398;6394:21;6389:3;6385:31;6374:42;;6446:6;6440:4;6436:17;6433:65;;;6487:7;6479:6;6475:20;6470:3;6466:30;6456:40;;6433:65;6548:7;6539;6535:21;6530:3;6526:31;6515:42;;6587:6;6581:4;6577:17;6574:65;;;6628:7;6620:6;6616:20;6611:3;6607:30;6597:40;;6574:65;6689:7;6680;6676:21;6671:3;6667:31;6656:42;;6728:6;6722:4;6718:17;6715:65;;;6769:7;6761:6;6757:20;6752:3;6748:30;6738:40;;6715:65;6830:7;6821;6817:21;6812:3;6808:31;6797:42;;6869:6;6863:4;6859:17;6856:65;;;6910:7;6902:6;6898:20;6893:3;6889:30;6879:40;;6856:65;6971:7;6962;6958:21;6953:3;6949:31;6938:42;;7010:7;7004:4;7000:18;6997:66;;;7052:7;7044:6;7040:20;7035:3;7031:30;7021:40;;6997:66;7113:7;7104;7100:21;7095:3;7091:31;7080:42;;7152:7;7146:4;7142:18;7139:66;;;7194:7;7186:6;7182:20;7177:3;7173:30;7163:40;;7139:66;7255:7;7246;7242:21;7237:3;7233:31;7222:42;;7294:7;7288:4;7284:18;7281:66;;;7336:7;7328:6;7324:20;7319:3;7315:30;7305:40;;7281:66;7397:7;7388;7384:21;7379:3;7375:31;7364:42;;7436:7;7430:4;7426:18;7423:66;;;7478:7;7470:6;7466:20;7461:3;7457:30;7447:40;;7423:66;4535:2968;4453:3060;7593:1;7583:6;:11;7579:59;;7633:1;7636;7603:35;;;;;;;;;;;;:::i;:::-;;;;;;;;7579:59;7656:6;:44;;7694:6;7656:44;;;7685:6;7665:17;:26;;;;:::i;:::-;7656:44;7649:51;;;;4107:3600;;;;;:::o;4561:188:22:-;4639:12;4721:11;4711:7;4703:6;4699:20;4695:38;4686:47;;4561:188;;;;:::o;3618:::-;3696:12;3778:11;3768:7;3760:6;3756:20;3752:38;3743:47;;3618:188;;;;:::o;4111:::-;4189:12;4271:11;4261:7;4253:6;4249:20;4245:38;4236:47;;4111:188;;;;:::o;5504:::-;5582:12;5664:11;5654:7;5646:6;5642:20;5638:38;5629:47;;5504:188;;;;:::o;5054:::-;5132:12;5214:11;5204:7;5196:6;5192:20;5188:38;5179:47;;5054:188;;;;:::o;4474:107:9:-;4530:7;4556:3;:11;;:18;;;;4549:25;;4474:107;;;:::o;2912:187:2:-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;2815:1368:9:-;2881:4;2991:16;3010:3;:14;;:21;3025:5;3010:21;;;;;;;;;;;;2991:40;;3058:1;3046:8;:13;3042:1135;;3413:18;3445:1;3434:8;:12;;;;:::i;:::-;3413:33;;3460:17;3501:1;3480:3;:11;;:18;;;;:22;;;;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;:35;;;;3872:8;3844:3;:14;;:25;3859:9;3844:25;;;;;;;;;;;:36;;;;3546:349;3517:378;3973:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;3042:1135;4161:5;4154:12;;;2815:1368;;;;;:::o;3243:164:8:-;3323:4;3346:3;:11;;:16;3358:3;3346:16;;;;;;;;;;;3339:23;;;3379:21;3396:3;3379;:9;;:16;;:21;;;;:::i;:::-;3372:28;;3243:164;;;;:::o;6650:115:9:-;6713:7;6739:19;6747:3;:10;;6739:7;:19::i;:::-;6732:26;;6650:115;;;:::o;7107:129::-;7181:7;7207:22;7211:3;:10;;7223:5;7207:3;:22::i;:::-;7200:29;;7107:129;;;;:::o;5930:123::-;6000:4;6023:23;6028:3;:10;;6040:5;6023:4;:23::i;:::-;6016:30;;5930:123;;;;:::o;6431:138::-;6511:4;6534:28;6544:3;:10;;6556:5;6534:9;:28::i;:::-;6527:35;;6431:138;;;;:::o;7776:300::-;7839:16;7867:22;7892:19;7900:3;:10;;7892:7;:19::i;:::-;7867:44;;7921:23;8031:5;8021:15;;8063:6;8056:13;;;;7776:300;;;:::o;6221:129::-;6294:4;6317:26;6325:3;:10;;6337:5;6317:7;:26::i;:::-;6310:33;;6221:129;;;;:::o;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:26:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:114::-;1585:6;1619:5;1613:12;1603:22;;1518:114;;;:::o;1638:184::-;1737:11;1771:6;1766:3;1759:19;1811:4;1806:3;1802:14;1787:29;;1638:184;;;;:::o;1828:132::-;1895:4;1918:3;1910:11;;1948:4;1943:3;1939:14;1931:22;;1828:132;;;:::o;1966:77::-;2003:7;2032:5;2021:16;;1966:77;;;:::o;2049:108::-;2126:24;2144:5;2126:24;:::i;:::-;2121:3;2114:37;2049:108;;:::o;2163:179::-;2232:10;2253:46;2295:3;2287:6;2253:46;:::i;:::-;2331:4;2326:3;2322:14;2308:28;;2163:179;;;;:::o;2348:113::-;2418:4;2450;2445:3;2441:14;2433:22;;2348:113;;;:::o;2497:732::-;2616:3;2645:54;2693:5;2645:54;:::i;:::-;2715:86;2794:6;2789:3;2715:86;:::i;:::-;2708:93;;2825:56;2875:5;2825:56;:::i;:::-;2904:7;2935:1;2920:284;2945:6;2942:1;2939:13;2920:284;;;3021:6;3015:13;3048:63;3107:3;3092:13;3048:63;:::i;:::-;3041:70;;3134:60;3187:6;3134:60;:::i;:::-;3124:70;;2980:224;2967:1;2964;2960:9;2955:14;;2920:284;;;2924:14;3220:3;3213:10;;2621:608;;;2497:732;;;;:::o;3235:373::-;3378:4;3416:2;3405:9;3401:18;3393:26;;3465:9;3459:4;3455:20;3451:1;3440:9;3436:17;3429:47;3493:108;3596:4;3587:6;3493:108;:::i;:::-;3485:116;;3235:373;;;;:::o;3614:122::-;3687:24;3705:5;3687:24;:::i;:::-;3680:5;3677:35;3667:63;;3726:1;3723;3716:12;3667:63;3614:122;:::o;3742:139::-;3788:5;3826:6;3813:20;3804:29;;3842:33;3869:5;3842:33;:::i;:::-;3742:139;;;;:::o;3887:329::-;3946:6;3995:2;3983:9;3974:7;3970:23;3966:32;3963:119;;;4001:79;;:::i;:::-;3963:119;4121:1;4146:53;4191:7;4182:6;4171:9;4167:22;4146:53;:::i;:::-;4136:63;;4092:117;3887:329;;;;:::o;4222:126::-;4259:7;4299:42;4292:5;4288:54;4277:65;;4222:126;;;:::o;4354:60::-;4382:3;4403:5;4396:12;;4354:60;;;:::o;4420:142::-;4470:9;4503:53;4521:34;4530:24;4548:5;4530:24;:::i;:::-;4521:34;:::i;:::-;4503:53;:::i;:::-;4490:66;;4420:142;;;:::o;4568:126::-;4618:9;4651:37;4682:5;4651:37;:::i;:::-;4638:50;;4568:126;;;:::o;4700:140::-;4764:9;4797:37;4828:5;4797:37;:::i;:::-;4784:50;;4700:140;;;:::o;4846:159::-;4947:51;4992:5;4947:51;:::i;:::-;4942:3;4935:64;4846:159;;:::o;5011:250::-;5118:4;5156:2;5145:9;5141:18;5133:26;;5169:85;5251:1;5240:9;5236:17;5227:6;5169:85;:::i;:::-;5011:250;;;;:::o;5267:96::-;5304:7;5333:24;5351:5;5333:24;:::i;:::-;5322:35;;5267:96;;;:::o;5369:110::-;5420:7;5449:24;5467:5;5449:24;:::i;:::-;5438:35;;5369:110;;;:::o;5485:150::-;5572:38;5604:5;5572:38;:::i;:::-;5565:5;5562:49;5552:77;;5625:1;5622;5615:12;5552:77;5485:150;:::o;5641:167::-;5701:5;5739:6;5726:20;5717:29;;5755:47;5796:5;5755:47;:::i;:::-;5641:167;;;;:::o;5814:89::-;5850:7;5890:6;5883:5;5879:18;5868:29;;5814:89;;;:::o;5909:120::-;5981:23;5998:5;5981:23;:::i;:::-;5974:5;5971:34;5961:62;;6019:1;6016;6009:12;5961:62;5909:120;:::o;6035:137::-;6080:5;6118:6;6105:20;6096:29;;6134:32;6160:5;6134:32;:::i;:::-;6035:137;;;;:::o;6178:91::-;6214:7;6254:8;6247:5;6243:20;6232:31;;6178:91;;;:::o;6275:120::-;6347:23;6364:5;6347:23;:::i;:::-;6340:5;6337:34;6327:62;;6385:1;6382;6375:12;6327:62;6275:120;:::o;6401:137::-;6446:5;6484:6;6471:20;6462:29;;6500:32;6526:5;6500:32;:::i;:::-;6401:137;;;;:::o;6544:1681::-;6704:6;6712;6720;6728;6736;6744;6752;6760;6768;6776;6825:3;6813:9;6804:7;6800:23;6796:33;6793:120;;;6832:79;;:::i;:::-;6793:120;6952:1;6977:67;7036:7;7027:6;7016:9;7012:22;6977:67;:::i;:::-;6967:77;;6923:131;7093:2;7119:67;7178:7;7169:6;7158:9;7154:22;7119:67;:::i;:::-;7109:77;;7064:132;7235:2;7261:52;7305:7;7296:6;7285:9;7281:22;7261:52;:::i;:::-;7251:62;;7206:117;7362:2;7388:52;7432:7;7423:6;7412:9;7408:22;7388:52;:::i;:::-;7378:62;;7333:117;7489:3;7516:52;7560:7;7551:6;7540:9;7536:22;7516:52;:::i;:::-;7506:62;;7460:118;7617:3;7644:52;7688:7;7679:6;7668:9;7664:22;7644:52;:::i;:::-;7634:62;;7588:118;7745:3;7772:52;7816:7;7807:6;7796:9;7792:22;7772:52;:::i;:::-;7762:62;;7716:118;7873:3;7900:52;7944:7;7935:6;7924:9;7920:22;7900:52;:::i;:::-;7890:62;;7844:118;8001:3;8028:52;8072:7;8063:6;8052:9;8048:22;8028:52;:::i;:::-;8018:62;;7972:118;8129:3;8156:52;8200:7;8191:6;8180:9;8176:22;8156:52;:::i;:::-;8146:62;;8100:118;6544:1681;;;;;;;;;;;;;:::o;8231:77::-;8268:7;8297:5;8286:16;;8231:77;;;:::o;8314:118::-;8401:24;8419:5;8401:24;:::i;:::-;8396:3;8389:37;8314:118;;:::o;8438:222::-;8531:4;8569:2;8558:9;8554:18;8546:26;;8582:71;8650:1;8639:9;8635:17;8626:6;8582:71;:::i;:::-;8438:222;;;;:::o;8666:122::-;8739:24;8757:5;8739:24;:::i;:::-;8732:5;8729:35;8719:63;;8778:1;8775;8768:12;8719:63;8666:122;:::o;8794:139::-;8840:5;8878:6;8865:20;8856:29;;8894:33;8921:5;8894:33;:::i;:::-;8794:139;;;;:::o;8939:329::-;8998:6;9047:2;9035:9;9026:7;9022:23;9018:32;9015:119;;;9053:79;;:::i;:::-;9015:119;9173:1;9198:53;9243:7;9234:6;9223:9;9219:22;9198:53;:::i;:::-;9188:63;;9144:117;8939:329;;;;:::o;9274:357::-;9347:6;9396:2;9384:9;9375:7;9371:23;9367:32;9364:119;;;9402:79;;:::i;:::-;9364:119;9522:1;9547:67;9606:7;9597:6;9586:9;9582:22;9547:67;:::i;:::-;9537:77;;9493:131;9274:357;;;;:::o;9637:673::-;9741:6;9749;9757;9806:2;9794:9;9785:7;9781:23;9777:32;9774:119;;;9812:79;;:::i;:::-;9774:119;9932:1;9957:67;10016:7;10007:6;9996:9;9992:22;9957:67;:::i;:::-;9947:77;;9903:131;10073:2;10099:67;10158:7;10149:6;10138:9;10134:22;10099:67;:::i;:::-;10089:77;;10044:132;10215:2;10241:52;10285:7;10276:6;10265:9;10261:22;10241:52;:::i;:::-;10231:62;;10186:117;9637:673;;;;;:::o;10316:122::-;10389:24;10407:5;10389:24;:::i;:::-;10382:5;10379:35;10369:63;;10428:1;10425;10418:12;10369:63;10316:122;:::o;10444:139::-;10490:5;10528:6;10515:20;10506:29;;10544:33;10571:5;10544:33;:::i;:::-;10444:139;;;;:::o;10589:474::-;10657:6;10665;10714:2;10702:9;10693:7;10689:23;10685:32;10682:119;;;10720:79;;:::i;:::-;10682:119;10840:1;10865:53;10910:7;10901:6;10890:9;10886:22;10865:53;:::i;:::-;10855:63;;10811:117;10967:2;10993:53;11038:7;11029:6;11018:9;11014:22;10993:53;:::i;:::-;10983:63;;10938:118;10589:474;;;;;:::o;11069:116::-;11139:21;11154:5;11139:21;:::i;:::-;11132:5;11129:32;11119:60;;11175:1;11172;11165:12;11119:60;11069:116;:::o;11191:133::-;11234:5;11272:6;11259:20;11250:29;;11288:30;11312:5;11288:30;:::i;:::-;11191:133;;;;:::o;11330:1473::-;11450:6;11458;11466;11474;11482;11490;11498;11506;11514;11563:3;11551:9;11542:7;11538:23;11534:33;11531:120;;;11570:79;;:::i;:::-;11531:120;11690:1;11715:52;11759:7;11750:6;11739:9;11735:22;11715:52;:::i;:::-;11705:62;;11661:116;11816:2;11842:52;11886:7;11877:6;11866:9;11862:22;11842:52;:::i;:::-;11832:62;;11787:117;11943:2;11969:52;12013:7;12004:6;11993:9;11989:22;11969:52;:::i;:::-;11959:62;;11914:117;12070:2;12096:52;12140:7;12131:6;12120:9;12116:22;12096:52;:::i;:::-;12086:62;;12041:117;12197:3;12224:52;12268:7;12259:6;12248:9;12244:22;12224:52;:::i;:::-;12214:62;;12168:118;12325:3;12352:52;12396:7;12387:6;12376:9;12372:22;12352:52;:::i;:::-;12342:62;;12296:118;12453:3;12480:52;12524:7;12515:6;12504:9;12500:22;12480:52;:::i;:::-;12470:62;;12424:118;12581:3;12608:52;12652:7;12643:6;12632:9;12628:22;12608:52;:::i;:::-;12598:62;;12552:118;12709:3;12736:50;12778:7;12769:6;12758:9;12754:22;12736:50;:::i;:::-;12726:60;;12680:116;11330:1473;;;;;;;;;;;:::o;12809:117::-;12918:1;12915;12908:12;12932:117;13041:1;13038;13031:12;13055:117;13164:1;13161;13154:12;13191:552;13248:8;13258:6;13308:3;13301:4;13293:6;13289:17;13285:27;13275:122;;13316:79;;:::i;:::-;13275:122;13429:6;13416:20;13406:30;;13459:18;13451:6;13448:30;13445:117;;;13481:79;;:::i;:::-;13445:117;13595:4;13587:6;13583:17;13571:29;;13649:3;13641:4;13633:6;13629:17;13619:8;13615:32;13612:41;13609:128;;;13656:79;;:::i;:::-;13609:128;13191:552;;;;;:::o;13749:1163::-;13882:6;13890;13898;13906;13914;13922;13971:3;13959:9;13950:7;13946:23;13942:33;13939:120;;;13978:79;;:::i;:::-;13939:120;14098:1;14123:67;14182:7;14173:6;14162:9;14158:22;14123:67;:::i;:::-;14113:77;;14069:131;14239:2;14265:67;14324:7;14315:6;14304:9;14300:22;14265:67;:::i;:::-;14255:77;;14210:132;14381:2;14407:52;14451:7;14442:6;14431:9;14427:22;14407:52;:::i;:::-;14397:62;;14352:117;14508:2;14534:53;14579:7;14570:6;14559:9;14555:22;14534:53;:::i;:::-;14524:63;;14479:118;14664:3;14653:9;14649:19;14636:33;14696:18;14688:6;14685:30;14682:117;;;14718:79;;:::i;:::-;14682:117;14831:64;14887:7;14878:6;14867:9;14863:22;14831:64;:::i;:::-;14813:82;;;;14607:298;13749:1163;;;;;;;;:::o;14918:112::-;14971:7;15000:24;15018:5;15000:24;:::i;:::-;14989:35;;14918:112;;;:::o;15036:154::-;15125:40;15159:5;15125:40;:::i;:::-;15118:5;15115:51;15105:79;;15180:1;15177;15170:12;15105:79;15036:154;:::o;15196:171::-;15258:5;15296:6;15283:20;15274:29;;15312:49;15355:5;15312:49;:::i;:::-;15196:171;;;;:::o;15373:361::-;15448:6;15497:2;15485:9;15476:7;15472:23;15468:32;15465:119;;;15503:79;;:::i;:::-;15465:119;15623:1;15648:69;15709:7;15700:6;15689:9;15685:22;15648:69;:::i;:::-;15638:79;;15594:133;15373:361;;;;:::o;15740:118::-;15827:24;15845:5;15827:24;:::i;:::-;15822:3;15815:37;15740:118;;:::o;15864:222::-;15957:4;15995:2;15984:9;15980:18;15972:26;;16008:71;16076:1;16065:9;16061:17;16052:6;16008:71;:::i;:::-;15864:222;;;;:::o;16092:466::-;16156:6;16164;16213:2;16201:9;16192:7;16188:23;16184:32;16181:119;;;16219:79;;:::i;:::-;16181:119;16339:1;16364:52;16408:7;16399:6;16388:9;16384:22;16364:52;:::i;:::-;16354:62;;16310:116;16465:2;16491:50;16533:7;16524:6;16513:9;16509:22;16491:50;:::i;:::-;16481:60;;16436:115;16092:466;;;;;:::o;16564:118::-;16651:24;16669:5;16651:24;:::i;:::-;16646:3;16639:37;16564:118;;:::o;16688:222::-;16781:4;16819:2;16808:9;16804:18;16796:26;;16832:71;16900:1;16889:9;16885:17;16876:6;16832:71;:::i;:::-;16688:222;;;;:::o;16916:817::-;17028:6;17036;17044;17052;17101:3;17089:9;17080:7;17076:23;17072:33;17069:120;;;17108:79;;:::i;:::-;17069:120;17228:1;17253:67;17312:7;17303:6;17292:9;17288:22;17253:67;:::i;:::-;17243:77;;17199:131;17369:2;17395:67;17454:7;17445:6;17434:9;17430:22;17395:67;:::i;:::-;17385:77;;17340:132;17511:2;17537:52;17581:7;17572:6;17561:9;17557:22;17537:52;:::i;:::-;17527:62;;17482:117;17638:2;17664:52;17708:7;17699:6;17688:9;17684:22;17664:52;:::i;:::-;17654:62;;17609:117;16916:817;;;;;;;:::o;17739:142::-;17805:9;17838:37;17869:5;17838:37;:::i;:::-;17825:50;;17739:142;;;:::o;17887:163::-;17990:53;18037:5;17990:53;:::i;:::-;17985:3;17978:66;17887:163;;:::o;18056:254::-;18165:4;18203:2;18192:9;18188:18;18180:26;;18216:87;18300:1;18289:9;18285:17;18276:6;18216:87;:::i;:::-;18056:254;;;;:::o;18316:530::-;18412:6;18420;18469:2;18457:9;18448:7;18444:23;18440:32;18437:119;;;18475:79;;:::i;:::-;18437:119;18595:1;18620:67;18679:7;18670:6;18659:9;18655:22;18620:67;:::i;:::-;18610:77;;18566:131;18736:2;18762:67;18821:7;18812:6;18801:9;18797:22;18762:67;:::i;:::-;18752:77;;18707:132;18316:530;;;;;:::o;18852:149::-;18954:6;18988:5;18982:12;18972:22;;18852:149;;;:::o;19007:219::-;19141:11;19175:6;19170:3;19163:19;19215:4;19210:3;19206:14;19191:29;;19007:219;;;;:::o;19232:167::-;19334:4;19357:3;19349:11;;19387:4;19382:3;19378:14;19370:22;;19232:167;;;:::o;19405:105::-;19480:23;19497:5;19480:23;:::i;:::-;19475:3;19468:36;19405:105;;:::o;19516:153::-;19609:53;19656:5;19609:53;:::i;:::-;19604:3;19597:66;19516:153;;:::o;19675:99::-;19746:21;19761:5;19746:21;:::i;:::-;19741:3;19734:34;19675:99;;:::o;19862:895::-;20019:4;20014:3;20010:14;20109:4;20102:5;20098:16;20092:23;20128:61;20183:4;20178:3;20174:14;20160:12;20128:61;:::i;:::-;20034:165;20283:4;20276:5;20272:16;20266:23;20302:79;20375:4;20370:3;20366:14;20352:12;20302:79;:::i;:::-;20209:182;20483:4;20476:5;20472:16;20466:23;20502:57;20553:4;20548:3;20544:14;20530:12;20502:57;:::i;:::-;20401:168;20664:4;20657:5;20653:16;20647:23;20683:57;20734:4;20729:3;20725:14;20711:12;20683:57;:::i;:::-;20579:171;19988:769;19862:895;;:::o;20763:319::-;20902:10;20923:116;21035:3;21027:6;20923:116;:::i;:::-;21071:4;21066:3;21062:14;21048:28;;20763:319;;;;:::o;21088:148::-;21193:4;21225;21220:3;21216:14;21208:22;;21088:148;;;:::o;21328:1012::-;21517:3;21546:89;21629:5;21546:89;:::i;:::-;21651:121;21765:6;21760:3;21651:121;:::i;:::-;21644:128;;21796:91;21881:5;21796:91;:::i;:::-;21910:7;21941:1;21926:389;21951:6;21948:1;21945:13;21926:389;;;22027:6;22021:13;22054:133;22183:3;22168:13;22054:133;:::i;:::-;22047:140;;22210:95;22298:6;22210:95;:::i;:::-;22200:105;;21986:329;21973:1;21970;21966:9;21961:14;;21926:389;;;21930:14;22331:3;22324:10;;21522:818;;;21328:1012;;;;:::o;22346:513::-;22559:4;22597:2;22586:9;22582:18;22574:26;;22646:9;22640:4;22636:20;22632:1;22621:9;22617:17;22610:47;22674:178;22847:4;22838:6;22674:178;:::i;:::-;22666:186;;22346:513;;;;:::o;22865:813::-;22975:6;22983;22991;22999;23048:3;23036:9;23027:7;23023:23;23019:33;23016:120;;;23055:79;;:::i;:::-;23016:120;23175:1;23200:67;23259:7;23250:6;23239:9;23235:22;23200:67;:::i;:::-;23190:77;;23146:131;23316:2;23342:67;23401:7;23392:6;23381:9;23377:22;23342:67;:::i;:::-;23332:77;;23287:132;23458:2;23484:52;23528:7;23519:6;23508:9;23504:22;23484:52;:::i;:::-;23474:62;;23429:117;23585:2;23611:50;23653:7;23644:6;23633:9;23629:22;23611:50;:::i;:::-;23601:60;;23556:115;22865:813;;;;;;;:::o;23684:675::-;23789:6;23797;23805;23854:2;23842:9;23833:7;23829:23;23825:32;23822:119;;;23860:79;;:::i;:::-;23822:119;23980:1;24005:67;24064:7;24055:6;24044:9;24040:22;24005:67;:::i;:::-;23995:77;;23951:131;24121:2;24147:67;24206:7;24197:6;24186:9;24182:22;24147:67;:::i;:::-;24137:77;;24092:132;24263:2;24289:53;24334:7;24325:6;24314:9;24310:22;24289:53;:::i;:::-;24279:63;;24234:118;23684:675;;;;;:::o;24447:905::-;24614:4;24609:3;24605:14;24704:4;24697:5;24693:16;24687:23;24723:61;24778:4;24773:3;24769:14;24755:12;24723:61;:::i;:::-;24629:165;24878:4;24871:5;24867:16;24861:23;24897:79;24970:4;24965:3;24961:14;24947:12;24897:79;:::i;:::-;24804:182;25078:4;25071:5;25067:16;25061:23;25097:57;25148:4;25143:3;25139:14;25125:12;25097:57;:::i;:::-;24996:168;25259:4;25252:5;25248:16;25242:23;25278:57;25329:4;25324:3;25320:14;25306:12;25278:57;:::i;:::-;25174:171;24583:769;24447:905;;:::o;25358:363::-;25521:4;25559:3;25548:9;25544:19;25536:27;;25573:141;25711:1;25700:9;25696:17;25687:6;25573:141;:::i;:::-;25358:363;;;;:::o;25727:985::-;26010:4;26048:3;26037:9;26033:19;26025:27;;26062:71;26130:1;26119:9;26115:17;26106:6;26062:71;:::i;:::-;26143:72;26211:2;26200:9;26196:18;26187:6;26143:72;:::i;:::-;26225;26293:2;26282:9;26278:18;26269:6;26225:72;:::i;:::-;26307;26375:2;26364:9;26360:18;26351:6;26307:72;:::i;:::-;26389:73;26457:3;26446:9;26442:19;26433:6;26389:73;:::i;:::-;26472;26540:3;26529:9;26525:19;26516:6;26472:73;:::i;:::-;26555;26623:3;26612:9;26608:19;26599:6;26555:73;:::i;:::-;26638:67;26700:3;26689:9;26685:19;26676:6;26638:67;:::i;:::-;25727:985;;;;;;;;;;;:::o;26718:329::-;26777:6;26826:2;26814:9;26805:7;26801:23;26797:32;26794:119;;;26832:79;;:::i;:::-;26794:119;26952:1;26977:53;27022:7;27013:6;27002:9;26998:22;26977:53;:::i;:::-;26967:63;;26923:117;26718:329;;;;:::o;27053:327::-;27111:6;27160:2;27148:9;27139:7;27135:23;27131:32;27128:119;;;27166:79;;:::i;:::-;27128:119;27286:1;27311:52;27355:7;27346:6;27335:9;27331:22;27311:52;:::i;:::-;27301:62;;27257:116;27053:327;;;;:::o;27386:180::-;27434:77;27431:1;27424:88;27531:4;27528:1;27521:15;27555:4;27552:1;27545:15;27572:180;27620:77;27617:1;27610:88;27717:4;27714:1;27707:15;27741:4;27738:1;27731:15;27758:180;27806:77;27803:1;27796:88;27903:4;27900:1;27893:15;27927:4;27924:1;27917:15;27944:233;27983:3;28006:24;28024:5;28006:24;:::i;:::-;27997:33;;28052:66;28045:5;28042:77;28039:103;;28122:18;;:::i;:::-;28039:103;28169:1;28162:5;28158:13;28151:20;;27944:233;;;:::o;28183:140::-;28232:9;28265:52;28283:33;28292:23;28309:5;28292:23;:::i;:::-;28283:33;:::i;:::-;28265:52;:::i;:::-;28252:65;;28183:140;;;:::o;28329:129::-;28415:36;28445:5;28415:36;:::i;:::-;28410:3;28403:49;28329:129;;:::o;28464:496::-;28640:4;28678:2;28667:9;28663:18;28655:26;;28691:85;28773:1;28762:9;28758:17;28749:6;28691:85;:::i;:::-;28786:86;28868:2;28857:9;28853:18;28844:6;28786:86;:::i;:::-;28882:71;28949:2;28938:9;28934:18;28925:6;28882:71;:::i;:::-;28464:496;;;;;;:::o;28966:115::-;29051:23;29068:5;29051:23;:::i;:::-;29046:3;29039:36;28966:115;;:::o;29087:::-;29172:23;29189:5;29172:23;:::i;:::-;29167:3;29160:36;29087:115;;:::o;29208:858::-;29455:4;29493:3;29482:9;29478:19;29470:27;;29507:69;29573:1;29562:9;29558:17;29549:6;29507:69;:::i;:::-;29586:70;29652:2;29641:9;29637:18;29628:6;29586:70;:::i;:::-;29666;29732:2;29721:9;29717:18;29708:6;29666:70;:::i;:::-;29746;29812:2;29801:9;29797:18;29788:6;29746:70;:::i;:::-;29826:71;29892:3;29881:9;29877:19;29868:6;29826:71;:::i;:::-;29907;29973:3;29962:9;29958:19;29949:6;29907:71;:::i;:::-;29988;30054:3;30043:9;30039:19;30030:6;29988:71;:::i;:::-;29208:858;;;;;;;;;;:::o;30072:220::-;30164:4;30202:2;30191:9;30187:18;30179:26;;30215:70;30282:1;30271:9;30267:17;30258:6;30215:70;:::i;:::-;30072:220;;;;:::o;30298:140::-;30347:9;30380:52;30398:33;30407:23;30424:5;30407:23;:::i;:::-;30398:33;:::i;:::-;30380:52;:::i;:::-;30367:65;;30298:140;;;:::o;30444:129::-;30530:36;30560:5;30530:36;:::i;:::-;30525:3;30518:49;30444:129;;:::o;30579:872::-;30833:4;30871:3;30860:9;30856:19;30848:27;;30885:70;30952:1;30941:9;30937:17;30928:6;30885:70;:::i;:::-;30965:71;31032:2;31021:9;31017:18;31008:6;30965:71;:::i;:::-;31046;31113:2;31102:9;31098:18;31089:6;31046:71;:::i;:::-;31127;31194:2;31183:9;31179:18;31170:6;31127:71;:::i;:::-;31208:72;31275:3;31264:9;31260:19;31251:6;31208:72;:::i;:::-;31290;31357:3;31346:9;31342:19;31333:6;31290:72;:::i;:::-;31372;31439:3;31428:9;31424:19;31415:6;31372:72;:::i;:::-;30579:872;;;;;;;;;;:::o;31457:330::-;31577:4;31615:2;31604:9;31600:18;31592:26;;31628:71;31696:1;31685:9;31681:17;31672:6;31628:71;:::i;:::-;31709;31776:2;31765:9;31761:18;31752:6;31709:71;:::i;:::-;31457:330;;;;;:::o;31793:94::-;31826:8;31874:5;31870:2;31866:14;31845:35;;31793:94;;;:::o;31893:::-;31932:7;31961:20;31975:5;31961:20;:::i;:::-;31950:31;;31893:94;;;:::o;31993:100::-;32032:7;32061:26;32081:5;32061:26;:::i;:::-;32050:37;;31993:100;;;:::o;32099:198::-;32218:72;32238:51;32283:5;32238:51;:::i;:::-;32218:72;:::i;:::-;32213:3;32206:85;32099:198;;:::o;32303:96::-;32337:8;32386:5;32381:3;32377:15;32356:36;;32303:96;;;:::o;32405:94::-;32443:7;32472:21;32487:5;32472:21;:::i;:::-;32461:32;;32405:94;;;:::o;32505:153::-;32608:43;32627:23;32644:5;32627:23;:::i;:::-;32608:43;:::i;:::-;32603:3;32596:56;32505:153;;:::o;32664:589::-;32858:3;32873:89;32958:3;32949:6;32873:89;:::i;:::-;32987:2;32982:3;32978:12;32971:19;;33000:89;33085:3;33076:6;33000:89;:::i;:::-;33114:2;33109:3;33105:12;33098:19;;33127:73;33196:3;33187:6;33127:73;:::i;:::-;33225:1;33220:3;33216:11;33209:18;;33244:3;33237:10;;32664:589;;;;;;:::o;33259:494::-;33434:4;33472:2;33461:9;33457:18;33449:26;;33485:85;33567:1;33556:9;33552:17;33543:6;33485:85;:::i;:::-;33580:86;33662:2;33651:9;33647:18;33638:6;33580:86;:::i;:::-;33676:70;33742:2;33731:9;33727:18;33718:6;33676:70;:::i;:::-;33259:494;;;;;;:::o;33759:194::-;33799:4;33819:20;33837:1;33819:20;:::i;:::-;33814:25;;33853:20;33871:1;33853:20;:::i;:::-;33848:25;;33897:1;33894;33890:9;33882:17;;33921:1;33915:4;33912:11;33909:37;;;33926:18;;:::i;:::-;33909:37;33759:194;;;;:::o;33959:364::-;34096:4;34134:2;34123:9;34119:18;34111:26;;34147:87;34231:1;34220:9;34216:17;34207:6;34147:87;:::i;:::-;34244:72;34312:2;34301:9;34297:18;34288:6;34244:72;:::i;:::-;33959:364;;;;;:::o;34329:965::-;34602:4;34640:3;34629:9;34625:19;34617:27;;34654:69;34720:1;34709:9;34705:17;34696:6;34654:69;:::i;:::-;34733:70;34799:2;34788:9;34784:18;34775:6;34733:70;:::i;:::-;34813;34879:2;34868:9;34864:18;34855:6;34813:70;:::i;:::-;34893;34959:2;34948:9;34944:18;34935:6;34893:70;:::i;:::-;34973:71;35039:3;35028:9;35024:19;35015:6;34973:71;:::i;:::-;35054;35120:3;35109:9;35105:19;35096:6;35054:71;:::i;:::-;35135;35201:3;35190:9;35186:19;35177:6;35135:71;:::i;:::-;35216;35282:3;35271:9;35267:19;35258:6;35216:71;:::i;:::-;34329:965;;;;;;;;;;;:::o;35300:115::-;35356:7;35385:24;35403:5;35385:24;:::i;:::-;35374:35;;35300:115;;;:::o;35421:160::-;35513:43;35550:5;35513:43;:::i;:::-;35506:5;35503:54;35493:82;;35571:1;35568;35561:12;35493:82;35421:160;:::o;35587:181::-;35663:5;35694:6;35688:13;35679:22;;35710:52;35756:5;35710:52;:::i;:::-;35587:181;;;;:::o;35774:389::-;35863:6;35912:2;35900:9;35891:7;35887:23;35883:32;35880:119;;;35918:79;;:::i;:::-;35880:119;36038:1;36063:83;36138:7;36129:6;36118:9;36114:22;36063:83;:::i;:::-;36053:93;;36009:147;35774:389;;;;:::o;36169:332::-;36290:4;36328:2;36317:9;36313:18;36305:26;;36341:71;36409:1;36398:9;36394:17;36385:6;36341:71;:::i;:::-;36422:72;36490:2;36479:9;36475:18;36466:6;36422:72;:::i;:::-;36169:332;;;;;:::o;36507:::-;36628:4;36666:2;36655:9;36651:18;36643:26;;36679:71;36747:1;36736:9;36732:17;36723:6;36679:71;:::i;:::-;36760:72;36828:2;36817:9;36813:18;36804:6;36760:72;:::i;:::-;36507:332;;;;;:::o;36845:143::-;36902:5;36933:6;36927:13;36918:22;;36949:33;36976:5;36949:33;:::i;:::-;36845:143;;;;:::o;36994:351::-;37064:6;37113:2;37101:9;37092:7;37088:23;37084:32;37081:119;;;37119:79;;:::i;:::-;37081:119;37239:1;37264:64;37320:7;37311:6;37300:9;37296:22;37264:64;:::i;:::-;37254:74;;37210:128;36994:351;;;;:::o;37351:98::-;37402:6;37436:5;37430:12;37420:22;;37351:98;;;:::o;37455:168::-;37538:11;37572:6;37567:3;37560:19;37612:4;37607:3;37603:14;37588:29;;37455:168;;;;:::o;37629:246::-;37710:1;37720:113;37734:6;37731:1;37728:13;37720:113;;;37819:1;37814:3;37810:11;37804:18;37800:1;37795:3;37791:11;37784:39;37756:2;37753:1;37749:10;37744:15;;37720:113;;;37867:1;37858:6;37853:3;37849:16;37842:27;37691:184;37629:246;;;:::o;37881:102::-;37922:6;37973:2;37969:7;37964:2;37957:5;37953:14;37949:28;37939:38;;37881:102;;;:::o;37989:373::-;38075:3;38103:38;38135:5;38103:38;:::i;:::-;38157:70;38220:6;38215:3;38157:70;:::i;:::-;38150:77;;38236:65;38294:6;38289:3;38282:4;38275:5;38271:16;38236:65;:::i;:::-;38326:29;38348:6;38326:29;:::i;:::-;38321:3;38317:39;38310:46;;38079:283;37989:373;;;;:::o;38368:419::-;38507:4;38545:2;38534:9;38530:18;38522:26;;38558:71;38626:1;38615:9;38611:17;38602:6;38558:71;:::i;:::-;38676:9;38670:4;38666:20;38661:2;38650:9;38646:18;38639:48;38704:76;38775:4;38766:6;38704:76;:::i;:::-;38696:84;;38368:419;;;;;:::o;38793:332::-;38914:4;38952:2;38941:9;38937:18;38929:26;;38965:71;39033:1;39022:9;39018:17;39009:6;38965:71;:::i;:::-;39046:72;39114:2;39103:9;39099:18;39090:6;39046:72;:::i;:::-;38793:332;;;;;:::o;39131:180::-;39179:77;39176:1;39169:88;39276:4;39273:1;39266:15;39300:4;39297:1;39290:15;39317:76;39353:7;39382:5;39371:16;;39317:76;;;:::o;39399:115::-;39484:23;39501:5;39484:23;:::i;:::-;39479:3;39472:36;39399:115;;:::o;39520:328::-;39639:4;39677:2;39666:9;39662:18;39654:26;;39690:71;39758:1;39747:9;39743:17;39734:6;39690:71;:::i;:::-;39771:70;39837:2;39826:9;39822:18;39813:6;39771:70;:::i;:::-;39520:328;;;;;:::o;39854:185::-;39894:1;39911:20;39929:1;39911:20;:::i;:::-;39906:25;;39945:20;39963:1;39945:20;:::i;:::-;39940:25;;39984:1;39974:35;;39989:18;;:::i;:::-;39974:35;40031:1;40028;40024:9;40019:14;;39854:185;;;;:::o;40045:180::-;40093:77;40090:1;40083:88;40190:4;40187:1;40180:15;40214:4;40211:1;40204:15" + "object": "608060405234801562000010575f80fd5b5060043610620002ae575f3560e01c8063701ab8c1116200016f578063aabc4b3c11620000d3578063e203a31f1162000091578063e203a31f1462000847578063e30c39781462000867578063e74b981b1462000889578063e92d0d5d14620008a9578063f2fde38b14620008c9578063fd90c2be14620008e957620002ae565b8063aabc4b3c1462000788578063be20309414620007c5578063c1b931be14620007e5578063d547741f1462000807578063ddbfd941146200082757620002ae565b806380c5061e116200012d57806380c5061e14620006a85780638ce9aa1c14620006ca5780638da5cb5b14620006ec57806391d14854146200070e578063a0a0ea391462000744578063a217fddf146200076657620002ae565b8063701ab8c11462000602578063704037bd1462000624578063715018a6146200065a57806379ba509714620006665780637daf5d66146200067257620002ae565b80633a2f1a9111620002175780635a44092311620001d55780635a44092314620005125780635b35875c1462000532578063659ac74b1462000554578063661d7ffb146200058a5780636622e0d714620005ac57806369d56ea314620005e257620002ae565b80633a2f1a91146200046e5780633c78a941146200048e5780634ccb20c014620004ae5780634cd161d314620004d05780634e937c3a14620004f057620002ae565b8063248a9ca31162000271578063248a9ca314620003825780632772184214620003b85780632cc06b8c14620003ee5780632f2ff15d146200040e57806336568abe146200042e578063379ee803146200044e57620002ae565b806301ffc9a714620002b25780630282c9c114620002e85780630752092b146200030a578063093ff76914620003405780631af5bacc1462000360575b5f80fd5b620002d06004803603810190620002ca9190620044b5565b6200090b565b604051620002df919062004501565b60405180910390f35b620002f262000987565b604051620003019190620045ec565b60405180910390f35b6200032860048036038101906200032291906200463d565b62000a89565b604051620003379190620046f3565b60405180910390f35b6200035e6004803603810190620003589190620047dc565b62000aa7565b005b6200036a62000bc3565b604051620003799190620048e6565b60405180910390f35b620003a060048036038101906200039a919062004930565b62000be7565b604051620003af9190620048e6565b60405180910390f35b620003d66004803603810190620003d0919062004960565b62000c13565b604051620003e5919062004501565b60405180910390f35b6200040c600480360381019062000406919062004990565b62000c31565b005b6200042c600480360381019062000426919062004a18565b62000cc4565b005b6200044c600480360381019062000446919062004a18565b62000cec565b005b6200046c600480360381019062000466919062004a8c565b62000d6c565b005b6200048c600480360381019062000486919062004bcf565b62000eb5565b005b620004ac6004803603810190620004a6919062004cb7565b62000fdc565b005b620004b862001046565b604051620004c7919062004cf8565b60405180910390f35b620004ee6004803603810190620004e8919062004d13565b6200106d565b005b620004fa620011b6565b60405162000509919062004d69565b60405180910390f35b6200053060048036038101906200052a919062004960565b620011c2565b005b6200053c6200126c565b6040516200054b9190620045ec565b60405180910390f35b6200057260048036038101906200056c919062004d84565b6200127f565b60405162000581919062004e17565b60405180910390f35b6200059462001aba565b604051620005a39190620048e6565b60405180910390f35b620005ca6004803603810190620005c4919062004e32565b62001ade565b604051620005d9919062004fbb565b60405180910390f35b620006006004803603810190620005fa919062004fdd565b62001d7f565b005b6200060c62002099565b6040516200061b919062004d69565b60405180910390f35b6200064260048036038101906200063c91906200504c565b620020a1565b60405162000651919062005100565b60405180910390f35b62000664620020c1565b005b62000670620020d8565b005b6200069060048036038101906200068a91906200463d565b6200216f565b6040516200069f919062004e17565b60405180910390f35b620006b2620021b6565b604051620006c1919062004d69565b60405180910390f35b620006d4620021c8565b604051620006e3919062004d69565b60405180910390f35b620006f6620021d7565b60405162000705919062004cf8565b60405180910390f35b6200072c600480360381019062000726919062004a18565b6200220e565b6040516200073b919062004501565b60405180910390f35b6200074e6200226e565b6040516200075d919062004cf8565b60405180910390f35b6200077062002296565b6040516200077f9190620048e6565b60405180910390f35b620007a66004803603810190620007a091906200463d565b6200229c565b604051620007bc9897969594939291906200511b565b60405180910390f35b620007e36004803603810190620007dd9190620051a7565b620023b6565b005b620007ef6200262d565b604051620007fe9190620048e6565b60405180910390f35b6200082560048036038101906200081f919062004a18565b62002654565b005b6200084560048036038101906200083f919062004960565b6200267c565b005b6200086560048036038101906200085f919062005216565b62002726565b005b62000871620027c2565b60405162000880919062004cf8565b60405180910390f35b620008a76004803603810190620008a1919062005246565b620027f9565b005b620008c76004803603810190620008c191906200463d565b62002811565b005b620008e76004803603810190620008e1919062005246565b62002908565b005b620008f3620029c7565b60405162000902919062004d69565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806200098057506200097f82620029d0565b5b9050919050565b60605f62000996600562002a39565b90505f81111562000a85578067ffffffffffffffff811115620009be57620009bd62005276565b5b604051908082528060200260200182016040528015620009ed5781602001602082028036833780820191505090505b5091505f805b8281101562000a75575f8062000a1483600562002a4e90919063ffffffff16565b9150915062000a25815f1b62002a77565b1562000a5f578186858151811062000a425762000a41620052a3565b5b602002602001018181525050838062000a5b90620052fd565b9450505b50508062000a6d90620052fd565b9050620009f3565b508181101562000a83578083525b505b5090565b5f62000aa082600862002a9590919063ffffffff16565b9050919050565b62000ab162002aae565b5f62000ac38b8b8b61ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b40578a8a8a6040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162000b379392919062005381565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16636653851a898989898989896040518863ffffffff1660e01b815260040162000b879796959493929190620053de565b5f604051808303815f87803b15801562000b9f575f80fd5b505af115801562000bb2573d5f803e3d5ffd5b505050505050505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b5f8062000bf362002c9e565b9050805f015f8481526020019081526020015f2060010154915050919050565b5f62000c2a82600862002cc590919063ffffffff16565b9050919050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000c5d8162002cf4565b62000cbe8484845f801b5f67ffffffffffffffff81111562000c845762000c8362005276565b5b6040519080825280601f01601f19166020018201604052801562000cb75781602001600182028036833780820191505090505b5062002d0c565b50505050565b62000ccf8262000be7565b62000cda8162002cf4565b62000ce6838362002ec5565b50505050565b62000cf662002f16565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000d5b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000d67828262002f1d565b505050565b62000d7662002aae565b60018961ffff16101562000dc357886040517f4f958e7100000000000000000000000000000000000000000000000000000000815260040162000dba919062005459565b60405180910390fd5b5f62000de7898989898989895f801b6200301d90979695949392919063ffffffff16565b9050811562000e0c5762000e09600160ff83620031cf9092919063ffffffff16565b90505b62000e2a8a61ffff16825f1c6005620031fa9092919063ffffffff16565b508961ffff167f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a288a8a8a8a8a8a8a60405162000e6d9796959493929190620054ac565b60405180910390a28115158a61ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000ee18162002cf4565b5f73ffffffffffffffffffffffffffffffffffffffff1662000f038562003217565b73ffffffffffffffffffffffffffffffffffffffff16148062000f4957505f60a01b62000f308562003222565b73ffffffffffffffffffffffffffffffffffffffff1916145b1562000f81576040517fd43a15d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000fd38787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505062002d0c565b50505050505050565b62000fe662002aae565b8073ffffffffffffffffffffffffffffffffffffffff1663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200102c575f80fd5b505af11580156200103f573d5f803e3d5ffd5b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200107762002aae565b620010918261ffff1660056200322b90919063ffffffff16565b620010d557816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620010cc919062005459565b60405180910390fd5b5f620010f08361ffff1660056200324490919063ffffffff16565b5f1b90508115156200110d60ff836200325f90919063ffffffff16565b15150362001147576040517f237c71b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200117c8361ffff16620011688460ff85620031cf9092919063ffffffff16565b5f1c6005620031fa9092919063ffffffff16565b508115158361ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a3505050565b5f600380549050905090565b620011cc62002aae565b620011e28160086200326e90919063ffffffff16565b6200122657806040517f03ce0ad90000000000000000000000000000000000000000000000000000000081526004016200121d9190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e60405160405180910390a250565b60606200127a60056200329d565b905090565b5f6200129a8261ffff1660056200322b90919063ffffffff16565b620012de57816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620012d5919062005459565b60405180910390fd5b5f620012f98361ffff1660056200324490919063ffffffff16565b5f1b90505f62001308620021d7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050620013438262002a77565b1580156200134f575080155b15620013965733846040517f09f85fce0000000000000000000000000000000000000000000000000000000081526004016200138d92919062005527565b60405180910390fd5b620013ac86600862002cc590919063ffffffff16565b620013f057856040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620013e79190620046f3565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036200146357866040517f2f9b18530000000000000000000000000000000000000000000000000000000081526004016200145a9190620046f3565b60405180910390fd5b6200146f8585620032be565b505f806200147e8989620032fa565b915091505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620014e8576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200160c578888876040517fcb27a435000000000000000000000000000000000000000000000000000000008152600401620016039392919062005381565b60405180910390fd5b5f620016188562003349565b620016238662003366565b6200162e8762003384565b6200163988620033a2565b6200164489620033c0565b6200164f8a620033de565b6200165a8b620033fc565b8e6040516024016200167498979695949392919062005552565b6040516020818303038152906040527f47973bff000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f8383896040516020016200170b9392919062005665565b6040516020818303038152906040528051906020012090505f60405180602001620017369062004403565b6020820181038252601f19601f8201166040525060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8c87604051602001620017869594939291906200573b565b604051602081830303815290604052604051602001620017a8929190620057dd565b6040516020818303038152906040529050620017c65f83836200341a565b975050505060405180608001604052808761ffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200184151581526020015f151581525060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600385908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062001a2c8661ffff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206200351890919063ffffffff16565b508561ffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff88600160038054905062001a96919062005804565b60405162001aa69291906200583e565b60405180910390a450505050949350505050565b7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d81565b60605f8062001aee8585620032fa565b915091505f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f62001b798262003531565b90505f81111562001d75578067ffffffffffffffff81111562001ba15762001ba062005276565b5b60405190808252806020026020018201604052801562001bde57816020015b62001bca62004411565b81526020019060019003908162001bc05790505b5094505f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b8281101562001d72575f62001c8762001c8183876200354690919063ffffffff16565b6200355f565b905060405180608001604052808261ffff168152602001845f8461ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001845f8461ffff1681526020019081526020015f205f0160169054906101000a900460ff1615158152602001845f8461ffff1681526020019081526020015f205f0160179054906101000a900460ff16151581525088838151811062001d5a5762001d59620052a3565b5b60200260200101819052505080600101905062001c5e565b50505b5050505092915050565b62001d8962002aae565b5f8062001d978686620032fa565b915091505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8661ffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff160362001f56578686866040517f40aa464400000000000000000000000000000000000000000000000000000000815260040162001f4d9392919062005381565b60405180910390fd5b831515816060015115150362001f97576040517eddccca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8761ffff1681526020019081526020015f205f0160176101000a81548160ff021916908315150217905550806020015173ffffffffffffffffffffffffffffffffffffffff167f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f8560405162002088919062004501565b60405180910390a250505050505050565b5f6001905090565b620020ab62004411565b620020b884848462002b3e565b90509392505050565b620020cb62002aae565b620020d65f620035a6565b565b5f620020e362002f16565b90508073ffffffffffffffffffffffffffffffffffffffff1662002106620027c2565b73ffffffffffffffffffffffffffffffffffffffff16146200216157806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002158919062004cf8565b60405180910390fd5b6200216c81620035a6565b50565b5f60038281548110620021875762002186620052a3565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f620021c36008620035e7565b905090565b5f67016345785d8a0000905090565b5f80620021e3620035fc565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f805f1b8303620022595762002223620021d7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905062002268565b62002265838362003623565b90505b92915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f801b81565b5f805f805f805f80620022ba8960056200322b90919063ffffffff16565b620022fe57886040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620022f5919062004d69565b60405180910390fd5b5f620023158a60056200324490919063ffffffff16565b5f1b9050620023248162003349565b61ffff169850620023358162003366565b61ffff169750620023468162003384565b61ffff1696506200235781620033a2565b61ffff1695506200236881620033c0565b62ffffff1694506200237a81620033de565b61ffff1693506200238b81620033fc565b62ffffff169250620023a860ff826200325f90919063ffffffff16565b915050919395975091939597565b5f620023c162003696565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156200240a5750825b90505f60018367ffffffffffffffff161480156200243e57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156200244d575080155b1562002485576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620024d3576001855f0160086101000a81548160ff0219169083151502179055505b620024de88620036bd565b67016345785d8a000087111562002538578667016345785d8a00006040517f5e8988c10000000000000000000000000000000000000000000000000000000081526004016200252f92919062005869565b60405180910390fd5b6200254389620036d5565b866001819055508560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e505f88604051620025bd929190620058d5565b60405180910390a1831562002622575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162002619919062005954565b60405180910390a15b505050505050505050565b5f7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d905090565b6200265f8262000be7565b6200266a8162002cf4565b62002676838362002f1d565b50505050565b6200268662002aae565b6200269c8160086200386f90919063ffffffff16565b620026e057806040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620026d79190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb360405160405180910390a250565b6200273062002aae565b6200274a8161ffff1660056200389e90919063ffffffff16565b6200278e57806040517ffb22c17e00000000000000000000000000000000000000000000000000000000815260040162002785919062005459565b60405180910390fd5b8061ffff167fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1360405160405180910390a250565b5f80620027ce620038b7565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6200280362002aae565b6200280e81620036d5565b50565b6200281b62002aae565b5f60015490508181036200286857816040517f6ea8c7a40000000000000000000000000000000000000000000000000000000081526004016200285f919062004d69565b60405180910390fd5b67016345785d8a0000821115620028c2578167016345785d8a00006040517f5e8988c1000000000000000000000000000000000000000000000000000000008152600401620028b992919062005869565b60405180910390fd5b816001819055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e508183604051620028fc92919062005869565b60405180910390a15050565b6200291262002aae565b5f6200291d620038b7565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1662002981620021d7565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f600154905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f62002a47825f01620038de565b9050919050565b5f805f8062002a60865f0186620038f3565b91509150815f1c815f1c9350935050509250929050565b5f62002a8e60ff836200325f90919063ffffffff16565b9050919050565b5f62002aa4835f018362003930565b5f1c905092915050565b62002ab862002f16565b73ffffffffffffffffffffffffffffffffffffffff1662002ad8620021d7565b73ffffffffffffffffffffffffffffffffffffffff161462002b3c5762002afe62002f16565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002b33919062004cf8565b60405180910390fd5b565b62002b4862004411565b62002b548484620032fa565b809450819550505060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090509392505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b5f62002cec835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6200395a565b905092915050565b62002d098162002d0362002f16565b6200397a565b50565b5f62002d1e86868661ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362002d9b578585856040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162002d929392919062005381565b60405180910390fd5b828173ffffffffffffffffffffffffffffffffffffffff1663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002de6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e0c919062005985565b0362002e5157826040517fb70cd0db00000000000000000000000000000000000000000000000000000000815260040162002e489190620048e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16631b057f6d84846040518363ffffffff1660e01b815260040162002e8e929190620059b5565b5f604051808303815f87803b15801562002ea6575f80fd5b505af115801562002eb9573d5f803e3d5ffd5b50505050505050505050565b5f805f1b830362002f02576040517f7c64a79e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62002f0e8383620039d0565b905092915050565b5f33905090565b5f8062002f2962002c9e565b905062002f3784846200220e565b1562003012575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062002fad62002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600191505062003017565b5f9150505b92915050565b5f8561ffff168761ffff1611806200303a5750610fff8661ffff16115b806200304b57506127108561ffff16115b806200305c57506109c48361ffff16115b806200306f5750620fffff8262ffffff16115b15620030a7576040517f1c07203f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620030c68861ffff1661ffff5f8462003ad0909392919063ffffffff16565b9050620030e88761ffff16610fff60108462003ad0909392919063ffffffff16565b90506200310a8661ffff16610fff601c8462003ad0909392919063ffffffff16565b90506200312c8561ffff16613fff60288462003ad0909392919063ffffffff16565b9050620031508462ffffff1662ffffff60368462003ad0909392919063ffffffff16565b9050620031728361ffff16613fff604e8462003ad0909392919063ffffffff16565b9050620031968262ffffff16620fffff605c8462003ad0909392919063ffffffff16565b9050620031c1815f1c6dffffffffffffffffffffffffffff5f8c62003ad0909392919063ffffffff16565b905098975050505050505050565b5f620031f18484620031e2575f620031e5565b60015b60ff1660018562003ad0565b90509392505050565b5f6200320e845f01845f1b845f1b62003aea565b90509392505050565b5f815f1c9050919050565b5f819050919050565b5f6200323c835f01835f1b62003b23565b905092915050565b5f62003255835f01835f1b62003b43565b5f1c905092915050565b5f600183831c16905092915050565b5f62003295835f018373ffffffffffffffffffffffffffffffffffffffff165f1b62003bc5565b905092915050565b60605f620032ad835f0162003c30565b905060608190508092505050919050565b5f80620032cb8362003c46565b90505f620032d98562003c79565b9050620032f0818362003c8c90919063ffffffff16565b9250505092915050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156200333c57828480945081955050505b8383915091509250929050565b5f6200335f5f8362003fb290919063ffffffff16565b9050919050565b5f6200337d60108362003fc290919063ffffffff16565b9050919050565b5f6200339b601c8362003fc290919063ffffffff16565b9050919050565b5f620033b960288362003fd290919063ffffffff16565b9050919050565b5f620033d760368362003fe290919063ffffffff16565b9050919050565b5f620033f5604e8362003fd290919063ffffffff16565b9050919050565b5f62003413605c8362003ff390919063ffffffff16565b9050919050565b5f83471015620034655747846040517fe4bbecac0000000000000000000000000000000000000000000000000000000081526004016200345c92919062005869565b60405180910390fd5b5f825103620034a0576040517f4ca249dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282516020840186f590505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362003511576040517f741752c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b5f62003529835f01835f1b62003bc5565b905092915050565b5f6200353f825f0162004004565b9050919050565b5f62003555835f018362003930565b5f1c905092915050565b5f818291508161ffff1614620035a1576040517f64ae406d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f620035b1620038b7565b9050805f015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620035e38262004013565b5050565b5f620035f5825f0162004004565b9050919050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f806200362f62002c9e565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b620036c7620040e6565b620036d28162004129565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200373b576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620037f1575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f4fcea971000000000000000000000000000000000000000000000000000000008152600401620037e8919062004cf8565b60405180910390fd5b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721818360405162003863929190620059e7565b60405180910390a15050565b5f62003896835f018373ffffffffffffffffffffffffffffffffffffffff165f1b620041b4565b905092915050565b5f620038af835f01835f1b620042c0565b905092915050565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00905090565b5f620038ec825f01620042f6565b9050919050565b5f805f6200390d84865f016200430b90919063ffffffff16565b905080856002015f8381526020019081526020015f205492509250509250929050565b5f825f018281548110620039495762003948620052a3565b5b905f5260205f200154905092915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6200398682826200220e565b620039cc5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401620039c392919062005a12565b60405180910390fd5b5050565b5f80620039dc62002c9e565b9050620039ea84846200220e565b62003ac5576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062003a6062002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062003aca565b5f9150505b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f81846002015f8581526020019081526020015f208190555062003b1a83855f016200432290919063ffffffff16565b90509392505050565b5f62003b3b82845f016200433990919063ffffffff16565b905092915050565b5f80836002015f8481526020019081526020015f205490505f801b8114801562003b76575062003b74848462003b23565b155b1562003bbb57826040517f02b5668600000000000000000000000000000000000000000000000000000000815260040162003bb29190620048e6565b60405180910390fd5b8091505092915050565b5f62003bd283836200395a565b62003c2657825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f20819055506001905062003c2a565b5f90505b92915050565b606062003c3f825f0162004350565b9050919050565b5f612710608060ff168361ffff16901b8162003c675762003c6662005a3d565b5b04608060ff166001901b019050919050565b5f628000008262ffffff16039050919050565b5f805f80840362003caa57608060ff166001901b9250505062003fac565b8390505f81121562003cc057805f039050811591505b6210000081101562003f2257608060ff166001901b9250846fffffffffffffffffffffffffffffffff86111562003cfc57805f19049050821592505b600182161562003d0f5780840260801c93505b80810260801c9050600282161562003d2a5780840260801c93505b80810260801c9050600482161562003d455780840260801c93505b80810260801c9050600882161562003d605780840260801c93505b80810260801c9050601082161562003d7b5780840260801c93505b80810260801c9050602082161562003d965780840260801c93505b80810260801c9050604082161562003db15780840260801c93505b80810260801c9050608082161562003dcc5780840260801c93505b80810260801c905061010082161562003de85780840260801c93505b80810260801c905061020082161562003e045780840260801c93505b80810260801c905061040082161562003e205780840260801c93505b80810260801c905061080082161562003e3c5780840260801c93505b80810260801c905061100082161562003e585780840260801c93505b80810260801c905061200082161562003e745780840260801c93505b80810260801c905061400082161562003e905780840260801c93505b80810260801c905061800082161562003eac5780840260801c93505b80810260801c90506201000082161562003ec95780840260801c93505b80810260801c90506202000082161562003ee65780840260801c93505b80810260801c90506204000082161562003f035780840260801c93505b80810260801c90506208000082161562003f205780840260801c93505b505b5f830362003f6b5784846040517f3b74b31a00000000000000000000000000000000000000000000000000000000815260040162003f6292919062005a84565b60405180910390fd5b8162003f78578262003fa7565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62003fa6919062005aaf565b5b925050505b92915050565b5f61ffff83831c16905092915050565b5f610fff83831c16905092915050565b5f613fff83831c16905092915050565b5f62ffffff83831c16905092915050565b5f620fffff83831c16905092915050565b5f815f01805490509050919050565b5f6200401e620035fc565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b620040f062004371565b62004127576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b62004133620040e6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620041a6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200419d919062004cf8565b60405180910390fd5b620041b181620035a6565b50565b5f80836001015f8481526020019081526020015f205490505f8114620042b5575f600182620041e4919062005804565b90505f6001865f0180549050620041fc919062005804565b905080821462004269575f865f0182815481106200421f576200421e620052a3565b5b905f5260205f200154905080875f018481548110620042435762004242620052a3565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f018054806200427f576200427e62005ae6565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050620042ba565b5f9150505b92915050565b5f826002015f8381526020019081526020015f205f9055620042ee82845f016200439190919063ffffffff16565b905092915050565b5f62004304825f0162004004565b9050919050565b5f6200431a835f018362003930565b905092915050565b5f62004331835f018362003bc5565b905092915050565b5f62004348835f01836200395a565b905092915050565b60605f62004360835f01620043a8565b905060608190508092505050919050565b5f6200437c62003696565b5f0160089054906101000a900460ff16905090565b5f620043a0835f0183620041b4565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015620043f757602002820191905f5260205f20905b815481526020019060010190808311620043e2575b50505050509050919050565b6119ba8062005b1483390190565b60405180608001604052805f61ffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62004491816200445b565b81146200449c575f80fd5b50565b5f81359050620044af8162004486565b92915050565b5f60208284031215620044cd57620044cc62004453565b5b5f620044dc848285016200449f565b91505092915050565b5f8115159050919050565b620044fb81620044e5565b82525050565b5f602082019050620045165f830184620044f0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b620045598162004545565b82525050565b5f6200456c83836200454e565b60208301905092915050565b5f602082019050919050565b5f62004590826200451c565b6200459c818562004526565b9350620045a98362004536565b805f5b83811015620045df578151620045c388826200455f565b9750620045d08362004578565b925050600181019050620045ac565b5085935050505092915050565b5f6020820190508181035f83015262004606818462004584565b905092915050565b620046198162004545565b811462004624575f80fd5b50565b5f8135905062004637816200460e565b92915050565b5f6020828403121562004655576200465462004453565b5b5f620046648482850162004627565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f620046b5620046af620046a9846200466d565b6200468c565b6200466d565b9050919050565b5f620046c88262004695565b9050919050565b5f620046db82620046bc565b9050919050565b620046ed81620046cf565b82525050565b5f602082019050620047085f830184620046e2565b92915050565b5f6200471a826200466d565b9050919050565b5f6200472d826200470e565b9050919050565b6200473f8162004721565b81146200474a575f80fd5b50565b5f813590506200475d8162004734565b92915050565b5f61ffff82169050919050565b6200477b8162004763565b811462004786575f80fd5b50565b5f81359050620047998162004770565b92915050565b5f62ffffff82169050919050565b620047b8816200479f565b8114620047c3575f80fd5b50565b5f81359050620047d681620047ad565b92915050565b5f805f805f805f805f806101408b8d031215620047fe57620047fd62004453565b5b5f6200480d8d828e016200474d565b9a50506020620048208d828e016200474d565b9950506040620048338d828e0162004789565b9850506060620048468d828e0162004789565b9750506080620048598d828e0162004789565b96505060a06200486c8d828e0162004789565b95505060c06200487f8d828e0162004789565b94505060e0620048928d828e01620047c6565b935050610100620048a68d828e0162004789565b925050610120620048ba8d828e01620047c6565b9150509295989b9194979a5092959850565b5f819050919050565b620048e081620048cc565b82525050565b5f602082019050620048fb5f830184620048d5565b92915050565b6200490c81620048cc565b811462004917575f80fd5b50565b5f813590506200492a8162004901565b92915050565b5f6020828403121562004948576200494762004453565b5b5f62004957848285016200491a565b91505092915050565b5f6020828403121562004978576200497762004453565b5b5f62004987848285016200474d565b91505092915050565b5f805f60608486031215620049aa57620049a962004453565b5b5f620049b9868287016200474d565b9350506020620049cc868287016200474d565b9250506040620049df8682870162004789565b9150509250925092565b620049f4816200470e565b8114620049ff575f80fd5b50565b5f8135905062004a1281620049e9565b92915050565b5f806040838503121562004a315762004a3062004453565b5b5f62004a40858286016200491a565b925050602062004a538582860162004a02565b9150509250929050565b62004a6881620044e5565b811462004a73575f80fd5b50565b5f8135905062004a868162004a5d565b92915050565b5f805f805f805f805f6101208a8c03121562004aad5762004aac62004453565b5b5f62004abc8c828d0162004789565b995050602062004acf8c828d0162004789565b985050604062004ae28c828d0162004789565b975050606062004af58c828d0162004789565b965050608062004b088c828d0162004789565b95505060a062004b1b8c828d01620047c6565b94505060c062004b2e8c828d0162004789565b93505060e062004b418c828d01620047c6565b92505061010062004b558c828d0162004a76565b9150509295985092959850929598565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011262004b895762004b8862004b65565b5b8235905067ffffffffffffffff81111562004ba95762004ba862004b69565b5b60208301915083600182028301111562004bc85762004bc762004b6d565b5b9250929050565b5f805f805f8060a0878903121562004bec5762004beb62004453565b5b5f62004bfb89828a016200474d565b965050602062004c0e89828a016200474d565b955050604062004c2189828a0162004789565b945050606062004c3489828a016200491a565b935050608087013567ffffffffffffffff81111562004c585762004c5762004457565b5b62004c6689828a0162004b71565b92509250509295509295509295565b5f62004c81826200470e565b9050919050565b62004c938162004c75565b811462004c9e575f80fd5b50565b5f8135905062004cb18162004c88565b92915050565b5f6020828403121562004ccf5762004cce62004453565b5b5f62004cde8482850162004ca1565b91505092915050565b62004cf2816200470e565b82525050565b5f60208201905062004d0d5f83018462004ce7565b92915050565b5f806040838503121562004d2c5762004d2b62004453565b5b5f62004d3b8582860162004789565b925050602062004d4e8582860162004a76565b9150509250929050565b62004d638162004545565b82525050565b5f60208201905062004d7e5f83018462004d58565b92915050565b5f805f806080858703121562004d9f5762004d9e62004453565b5b5f62004dae878288016200474d565b945050602062004dc1878288016200474d565b935050604062004dd487828801620047c6565b925050606062004de78782880162004789565b91505092959194509250565b5f62004dff82620046bc565b9050919050565b62004e118162004df3565b82525050565b5f60208201905062004e2c5f83018462004e06565b92915050565b5f806040838503121562004e4b5762004e4a62004453565b5b5f62004e5a858286016200474d565b925050602062004e6d858286016200474d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b62004eab8162004763565b82525050565b62004ebc8162004df3565b82525050565b62004ecd81620044e5565b82525050565b608082015f82015162004ee95f85018262004ea0565b50602082015162004efe602085018262004eb1565b50604082015162004f13604085018262004ec2565b50606082015162004f28606085018262004ec2565b50505050565b5f62004f3b838362004ed3565b60808301905092915050565b5f602082019050919050565b5f62004f5f8262004e77565b62004f6b818562004e81565b935062004f788362004e91565b805f5b8381101562004fae57815162004f92888262004f2e565b975062004f9f8362004f47565b92505060018101905062004f7b565b5085935050505092915050565b5f6020820190508181035f83015262004fd5818462004f53565b905092915050565b5f805f806080858703121562004ff85762004ff762004453565b5b5f62005007878288016200474d565b94505060206200501a878288016200474d565b93505060406200502d8782880162004789565b9250506060620050408782880162004a76565b91505092959194509250565b5f805f6060848603121562005066576200506562004453565b5b5f62005075868287016200474d565b935050602062005088868287016200474d565b92505060406200509b8682870162004627565b9150509250925092565b608082015f820151620050bb5f85018262004ea0565b506020820151620050d0602085018262004eb1565b506040820151620050e5604085018262004ec2565b506060820151620050fa606085018262004ec2565b50505050565b5f608082019050620051155f830184620050a5565b92915050565b5f61010082019050620051315f83018b62004d58565b62005140602083018a62004d58565b6200514f604083018962004d58565b6200515e606083018862004d58565b6200516d608083018762004d58565b6200517c60a083018662004d58565b6200518b60c083018562004d58565b6200519a60e0830184620044f0565b9998505050505050505050565b5f805f8060808587031215620051c257620051c162004453565b5b5f620051d18782880162004a02565b9450506020620051e48782880162004a02565b9350506040620051f78782880162004627565b92505060606200520a8782880162004a02565b91505092959194509250565b5f602082840312156200522e576200522d62004453565b5b5f6200523d8482850162004789565b91505092915050565b5f602082840312156200525e576200525d62004453565b5b5f6200526d8482850162004a02565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620053098262004545565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200533e576200533d620052d0565b5b600182019050919050565b5f62005369620053636200535d8462004763565b6200468c565b62004545565b9050919050565b6200537b8162005349565b82525050565b5f606082019050620053965f830186620046e2565b620053a56020830185620046e2565b620053b4604083018462005370565b949350505050565b620053c78162004763565b82525050565b620053d8816200479f565b82525050565b5f60e082019050620053f35f83018a620053bc565b620054026020830189620053bc565b620054116040830188620053bc565b620054206060830187620053bc565b6200542f6080830186620053cd565b6200543e60a0830185620053bc565b6200544d60c0830184620053cd565b98975050505050505050565b5f6020820190506200546e5f83018462005370565b92915050565b5f620054946200548e62005488846200479f565b6200468c565b62004545565b9050919050565b620054a68162005474565b82525050565b5f60e082019050620054c15f83018a62005370565b620054d0602083018962005370565b620054df604083018862005370565b620054ee606083018762005370565b620054fd60808301866200549b565b6200550c60a083018562005370565b6200551b60c08301846200549b565b98975050505050505050565b5f6040820190506200553c5f83018562004ce7565b6200554b602083018462005370565b9392505050565b5f61010082019050620055685f83018b620053bc565b62005577602083018a620053bc565b620055866040830189620053bc565b620055956060830188620053bc565b620055a46080830187620053cd565b620055b360a0830186620053bc565b620055c260c0830185620053cd565b620055d160e0830184620053cd565b9998505050505050505050565b5f8160601b9050919050565b5f620055f682620055de565b9050919050565b5f6200560982620055ea565b9050919050565b620056256200561f82620046cf565b620055fd565b82525050565b5f8160f01b9050919050565b5f62005643826200562b565b9050919050565b6200565f620056598262004763565b62005637565b82525050565b5f62005672828662005610565b60148201915062005684828562005610565b6014820191506200569682846200564a565b600282019150819050949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015620056e0578082015181840152602081019050620056c3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200570782620056a7565b620057138185620056b1565b935062005725818560208601620056c1565b6200573081620056eb565b840191505092915050565b5f60a082019050620057505f83018862004ce7565b6200575f6020830187620046e2565b6200576e6040830186620046e2565b6200577d6060830185620053bc565b8181036080830152620057918184620056fb565b90509695505050505050565b5f81905092915050565b5f620057b382620056a7565b620057bf81856200579d565b9350620057d1818560208601620056c1565b80840191505092915050565b5f620057ea8285620057a7565b9150620057f88284620057a7565b91508190509392505050565b5f620058108262004545565b91506200581d8362004545565b9250828203905081811115620058385762005837620052d0565b5b92915050565b5f604082019050620058535f83018562004e06565b62005862602083018462004d58565b9392505050565b5f6040820190506200587e5f83018562004d58565b6200588d602083018462004d58565b9392505050565b5f819050919050565b5f620058bd620058b7620058b18462005894565b6200468c565b62004545565b9050919050565b620058cf816200589d565b82525050565b5f604082019050620058ea5f830185620058c4565b620058f9602083018462004d58565b9392505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6200593c62005936620059308462005900565b6200468c565b62005909565b9050919050565b6200594e816200591c565b82525050565b5f602082019050620059695f83018462005943565b92915050565b5f815190506200597f8162004901565b92915050565b5f602082840312156200599d576200599c62004453565b5b5f620059ac848285016200596f565b91505092915050565b5f604082019050620059ca5f830185620048d5565b8181036020830152620059de8184620056fb565b90509392505050565b5f604082019050620059fc5f83018562004ce7565b62005a0b602083018462004ce7565b9392505050565b5f60408201905062005a275f83018562004ce7565b62005a366020830184620048d5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f819050919050565b62005a7e8162005a6a565b82525050565b5f60408201905062005a995f83018562004d58565b62005aa8602083018462005a73565b9392505050565b5f62005abb8262004545565b915062005ac88362004545565b92508262005adb5762005ada62005a3d565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe60a0604052604051620019ba380380620019ba833981810160405281019062000029919062000dab565b8460405180602001604052805f8152506200004b82826200059d60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505f808573ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516200012c919062000e98565b5f60405180830381855afa9150503d805f811462000166576040519150601f19603f3d011682016040523d82523d5f602084013e6200016b565b606091505b50915091505f8180602001905181019062000187919062000f61565b90505f808773ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000234919062000e98565b5f60405180830381855afa9150503d805f81146200026e576040519150601f19603f3d011682016040523d82523d5f602084013e62000273565b606091505b50915091505f818060200190518101906200028f919062000f61565b90508580156200029c5750825b620002de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d59062001034565b60405180910390fd5b60405180602001604052805f8152508051906020012084805190602001201415801562000327575060405180602001604052805f81525080519060200120818051906020012014155b62000369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036090620010c8565b60405180910390fd5b896200039d7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088620004107f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa582645f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508761ffff16620004877fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f569738427825f1b620006a160201b60201c565b5f01819055505f620004a38961ffff16620006aa60201b60201c565b9050848282604051602001620004bc939291906200117e565b604051602081830303815290604052620004fe7f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f5f1b6200083060201b60201c565b5f0190816200050e919062001414565b5084828260405160200162000526939291906200151e565b604051602081830303815290604052620005687fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845f1b6200083060201b60201c565b5f01908162000578919062001414565b506200058b8c896200059d60201b60201c565b5050505050505050505050506200177e565b620005ae826200083960201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a25f8151111562000683576200067c8273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000649573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200066f919062001587565b82620009df60201b60201c565b5062000694565b6200069362000a6b60201b60201c565b5b5050565b5f819050919050565b5f819050919050565b60605f8261ffff1603620006f6576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506200082b565b5f8290505f5b5f8261ffff16146200072f5780806200071590620015e4565b915050600a826200072791906200163f565b9150620006fc565b5f8161ffff1667ffffffffffffffff81111562000751576200075062000c4f565b5b6040519080825280601f01601f191660200182016040528015620007845781602001600182028036833780820191505090505b5090505b5f8561ffff16146200082457600182620007a3919062001676565b9150600a85620007b49190620016b2565b6030620007c29190620016e9565b60f81b818361ffff1681518110620007df57620007de62001725565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856200081c91906200163f565b945062000788565b8093505050505b919050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036200089757806040517f64ced0ec0000000000000000000000000000000000000000000000000000000081526004016200088e919062001763565b60405180910390fd5b80620008cb7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000955573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200097b919062001587565b90505f8173ffffffffffffffffffffffffffffffffffffffff163b03620009db57806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401620009d2919062001763565b60405180910390fd5b5050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405162000a0a919062000e98565b5f60405180830381855af49150503d805f811462000a44576040519150601f19603f3d011682016040523d82523d5f602084013e62000a49565b606091505b509150915062000a6185838362000aa860201b60201c565b9250505092915050565b5f34111562000aa6576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60608262000ac75762000ac18262000b4460201b60201c565b62000b3c565b5f825114801562000aee57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1562000b3357836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040162000b2a919062001763565b60405180910390fd5b81905062000b3d565b5b9392505050565b5f8151111562000b575780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bc58262000b9a565b9050919050565b62000bd78162000bb9565b811462000be2575f80fd5b50565b5f8151905062000bf58162000bcc565b92915050565b5f61ffff82169050919050565b62000c138162000bfb565b811462000c1e575f80fd5b50565b5f8151905062000c318162000c08565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000c878262000c3f565b810181811067ffffffffffffffff8211171562000ca95762000ca862000c4f565b5b80604052505050565b5f62000cbd62000b89565b905062000ccb828262000c7c565b919050565b5f67ffffffffffffffff82111562000ced5762000cec62000c4f565b5b62000cf88262000c3f565b9050602081019050919050565b5f5b8381101562000d2457808201518184015260208101905062000d07565b5f8484015250505050565b5f62000d4562000d3f8462000cd0565b62000cb2565b90508281526020810184848401111562000d645762000d6362000c3b565b5b62000d7184828562000d05565b509392505050565b5f82601f83011262000d905762000d8f62000c37565b5b815162000da284826020860162000d2f565b91505092915050565b5f805f805f60a0868803121562000dc75762000dc662000b92565b5b5f62000dd68882890162000be5565b955050602062000de98882890162000be5565b945050604062000dfc8882890162000be5565b935050606062000e0f8882890162000c21565b925050608086015167ffffffffffffffff81111562000e335762000e3262000b96565b5b62000e418882890162000d79565b9150509295509295909350565b5f81519050919050565b5f81905092915050565b5f62000e6e8262000e4e565b62000e7a818562000e58565b935062000e8c81856020860162000d05565b80840191505092915050565b5f62000ea5828462000e62565b915081905092915050565b5f67ffffffffffffffff82111562000ecd5762000ecc62000c4f565b5b62000ed88262000c3f565b9050602081019050919050565b5f62000efb62000ef58462000eb0565b62000cb2565b90508281526020810184848401111562000f1a5762000f1962000c3b565b5b62000f2784828562000d05565b509392505050565b5f82601f83011262000f465762000f4562000c37565b5b815162000f5884826020860162000ee5565b91505092915050565b5f6020828403121562000f795762000f7862000b92565b5b5f82015167ffffffffffffffff81111562000f995762000f9862000b96565b5b62000fa78482850162000f2f565b91505092915050565b5f82825260208201905092915050565b7f4c4250616972426561636f6e50726f78793a204661696c656420746f206765745f8201527f20746f6b656e2073796d626f6c73000000000000000000000000000000000000602082015250565b5f6200101c602e8362000fb0565b9150620010298262000fc0565b604082019050919050565b5f6020820190508181035f8301526200104d816200100e565b9050919050565b7f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e5f8201527f2073796d626f6c73000000000000000000000000000000000000000000000000602082015250565b5f620010b060288362000fb0565b9150620010bd8262001054565b604082019050919050565b5f6020820190508181035f830152620010e181620010a2565b9050919050565b7f4c42545f00000000000000000000000000000000000000000000000000000000815250565b5f81519050919050565b5f81905092915050565b5f6200112e826200110e565b6200113a818562001118565b93506200114c81856020860162000d05565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b5f6200118a82620010e8565b6004820191506200119c828662001122565b9150620011a98262001158565b600182019150620011bb828562001122565b9150620011c88262001158565b600182019150620011da828462001122565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200122c57607f821691505b602082108103620012425762001241620011e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620012a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001269565b620012b2868362001269565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620012fc620012f6620012f084620012ca565b620012d3565b620012ca565b9050919050565b5f819050919050565b6200131783620012dc565b6200132f620013268262001303565b84845462001275565b825550505050565b5f90565b6200134562001337565b620013528184846200130c565b505050565b5b8181101562001379576200136d5f826200133b565b60018101905062001358565b5050565b601f821115620013c857620013928162001248565b6200139d846200125a565b81016020851015620013ad578190505b620013c5620013bc856200125a565b83018262001357565b50505b505050565b5f82821c905092915050565b5f620013ea5f1984600802620013cd565b1980831691505092915050565b5f620014048383620013d9565b9150826002028217905092915050565b6200141f826200110e565b67ffffffffffffffff8111156200143b576200143a62000c4f565b5b62001447825462001214565b620014548282856200137d565b5f60209050601f8311600181146200148a575f841562001475578287015190505b620014818582620013f7565b865550620014f0565b601f1984166200149a8662001248565b5f5b82811015620014c3578489015182556001820191506020850194506020810190506200149c565b86831015620014e35784890151620014df601f891682620013d9565b8355505b6001600288020188555050505b505050505050565b7f4c697175696469747920426f6f6b20546f6b656e200000000000000000000000815250565b5f6200152a82620014f8565b6015820191506200153c828662001122565b9150620015498262001158565b6001820191506200155b828562001122565b9150620015688262001158565b6001820191506200157a828462001122565b9150819050949350505050565b5f602082840312156200159f576200159e62000b92565b5b5f620015ae8482850162000be5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620015f08262000bfb565b915061ffff8203620016075762001606620015b7565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200164b8262000bfb565b9150620016588362000bfb565b9250826200166b576200166a62001612565b5b828204905092915050565b5f620016828262000bfb565b91506200168f8362000bfb565b9250828203905061ffff811115620016ac57620016ab620015b7565b5b92915050565b5f620016be8262000bfb565b9150620016cb8362000bfb565b925082620016de57620016dd62001612565b5b828206905092915050565b5f620016f58262000bfb565b9150620017028362000bfb565b9250828201905061ffff8111156200171f576200171e620015b7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6200175d8162000bb9565b82525050565b5f602082019050620017785f83018462001752565b92915050565b608051610223620017975f395f61011801526102235ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061005c565b005b34801561003d575f80fd5b5061004661006e565b604051610053919061017b565b60405180910390f35b61006c61006761007c565b6100f6565b565b5f610077610115565b905090565b5f610085610115565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f191906101c2565b905090565b365f80375f80365f845af43d5f803e805f8114610111573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101658261013c565b9050919050565b6101758161015b565b82525050565b5f60208201905061018e5f83018461016c565b92915050565b5f80fd5b6101a18161015b565b81146101ab575f80fd5b50565b5f815190506101bc81610198565b92915050565b5f602082840312156101d7576101d6610194565b5b5f6101e4848285016101ae565b9150509291505056fea2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033a2646970667358221220408f674abc88915a00048d86f4f02c24344fb5b67b185d05ce64c6c9aedc7e7c64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x2AE JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x701AB8C1 GT PUSH3 0x16F JUMPI DUP1 PUSH4 0xAABC4B3C GT PUSH3 0xD3 JUMPI DUP1 PUSH4 0xE203A31F GT PUSH3 0x91 JUMPI DUP1 PUSH4 0xE203A31F EQ PUSH3 0x847 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH3 0x867 JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH3 0x889 JUMPI DUP1 PUSH4 0xE92D0D5D EQ PUSH3 0x8A9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x8C9 JUMPI DUP1 PUSH4 0xFD90C2BE EQ PUSH3 0x8E9 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0xAABC4B3C EQ PUSH3 0x788 JUMPI DUP1 PUSH4 0xBE203094 EQ PUSH3 0x7C5 JUMPI DUP1 PUSH4 0xC1B931BE EQ PUSH3 0x7E5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x807 JUMPI DUP1 PUSH4 0xDDBFD941 EQ PUSH3 0x827 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x80C5061E GT PUSH3 0x12D JUMPI DUP1 PUSH4 0x80C5061E EQ PUSH3 0x6A8 JUMPI DUP1 PUSH4 0x8CE9AA1C EQ PUSH3 0x6CA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x6EC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x70E JUMPI DUP1 PUSH4 0xA0A0EA39 EQ PUSH3 0x744 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x766 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x701AB8C1 EQ PUSH3 0x602 JUMPI DUP1 PUSH4 0x704037BD EQ PUSH3 0x624 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x65A JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH3 0x666 JUMPI DUP1 PUSH4 0x7DAF5D66 EQ PUSH3 0x672 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 GT PUSH3 0x217 JUMPI DUP1 PUSH4 0x5A440923 GT PUSH3 0x1D5 JUMPI DUP1 PUSH4 0x5A440923 EQ PUSH3 0x512 JUMPI DUP1 PUSH4 0x5B35875C EQ PUSH3 0x532 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH3 0x554 JUMPI DUP1 PUSH4 0x661D7FFB EQ PUSH3 0x58A JUMPI DUP1 PUSH4 0x6622E0D7 EQ PUSH3 0x5AC JUMPI DUP1 PUSH4 0x69D56EA3 EQ PUSH3 0x5E2 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 EQ PUSH3 0x46E JUMPI DUP1 PUSH4 0x3C78A941 EQ PUSH3 0x48E JUMPI DUP1 PUSH4 0x4CCB20C0 EQ PUSH3 0x4AE JUMPI DUP1 PUSH4 0x4CD161D3 EQ PUSH3 0x4D0 JUMPI DUP1 PUSH4 0x4E937C3A EQ PUSH3 0x4F0 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH3 0x271 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x382 JUMPI DUP1 PUSH4 0x27721842 EQ PUSH3 0x3B8 JUMPI DUP1 PUSH4 0x2CC06B8C EQ PUSH3 0x3EE JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x40E JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x42E JUMPI DUP1 PUSH4 0x379EE803 EQ PUSH3 0x44E JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x2B2 JUMPI DUP1 PUSH4 0x282C9C1 EQ PUSH3 0x2E8 JUMPI DUP1 PUSH4 0x752092B EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x93FF769 EQ PUSH3 0x340 JUMPI DUP1 PUSH4 0x1AF5BACC EQ PUSH3 0x360 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH3 0x2D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x2CA SWAP2 SWAP1 PUSH3 0x44B5 JUMP JUMPDEST PUSH3 0x90B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x2DF SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x2F2 PUSH3 0x987 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x301 SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x322 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0xA89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x337 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x35E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x358 SWAP2 SWAP1 PUSH3 0x47DC JUMP JUMPDEST PUSH3 0xAA7 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x36A PUSH3 0xBC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x379 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x39A SWAP2 SWAP1 PUSH3 0x4930 JUMP JUMPDEST PUSH3 0xBE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3AF SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x3D0 SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0xC13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3E5 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x406 SWAP2 SWAP1 PUSH3 0x4990 JUMP JUMPDEST PUSH3 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x42C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x426 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCC4 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x44C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x446 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCEC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x466 SWAP2 SWAP1 PUSH3 0x4A8C JUMP JUMPDEST PUSH3 0xD6C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x48C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x486 SWAP2 SWAP1 PUSH3 0x4BCF JUMP JUMPDEST PUSH3 0xEB5 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4A6 SWAP2 SWAP1 PUSH3 0x4CB7 JUMP JUMPDEST PUSH3 0xFDC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4B8 PUSH3 0x1046 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x4C7 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x4EE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4E8 SWAP2 SWAP1 PUSH3 0x4D13 JUMP JUMPDEST PUSH3 0x106D JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4FA PUSH3 0x11B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x509 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x530 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x52A SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x11C2 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x53C PUSH3 0x126C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x54B SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x572 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x56C SWAP2 SWAP1 PUSH3 0x4D84 JUMP JUMPDEST PUSH3 0x127F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x581 SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x594 PUSH3 0x1ABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5A3 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x5CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5C4 SWAP2 SWAP1 PUSH3 0x4E32 JUMP JUMPDEST PUSH3 0x1ADE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5D9 SWAP2 SWAP1 PUSH3 0x4FBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x600 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5FA SWAP2 SWAP1 PUSH3 0x4FDD JUMP JUMPDEST PUSH3 0x1D7F JUMP JUMPDEST STOP JUMPDEST PUSH3 0x60C PUSH3 0x2099 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x61B SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x642 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x63C SWAP2 SWAP1 PUSH3 0x504C JUMP JUMPDEST PUSH3 0x20A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x651 SWAP2 SWAP1 PUSH3 0x5100 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x664 PUSH3 0x20C1 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x670 PUSH3 0x20D8 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x690 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x68A SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x216F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x69F SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6B2 PUSH3 0x21B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6C1 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6D4 PUSH3 0x21C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6E3 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6F6 PUSH3 0x21D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x705 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x72C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x726 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x220E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x73B SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x74E PUSH3 0x226E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x75D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x770 PUSH3 0x2296 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x77F SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7A0 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x229C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7BC SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x511B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7DD SWAP2 SWAP1 PUSH3 0x51A7 JUMP JUMPDEST PUSH3 0x23B6 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x7EF PUSH3 0x262D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7FE SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x825 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x81F SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x2654 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x845 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x83F SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x267C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x865 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x85F SWAP2 SWAP1 PUSH3 0x5216 JUMP JUMPDEST PUSH3 0x2726 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x871 PUSH3 0x27C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x880 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x8A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8A1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x27F9 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8C1 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x2811 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8E1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x2908 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8F3 PUSH3 0x29C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x902 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH3 0x980 JUMPI POP PUSH3 0x97F DUP3 PUSH3 0x29D0 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x996 PUSH1 0x5 PUSH3 0x2A39 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0xA85 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x9BE JUMPI PUSH3 0x9BD PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x9ED JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0xA75 JUMPI PUSH0 DUP1 PUSH3 0xA14 DUP4 PUSH1 0x5 PUSH3 0x2A4E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xA25 DUP2 PUSH0 SHL PUSH3 0x2A77 JUMP JUMPDEST ISZERO PUSH3 0xA5F JUMPI DUP2 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH3 0xA42 JUMPI PUSH3 0xA41 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP1 PUSH3 0xA5B SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP DUP1 PUSH3 0xA6D SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP1 POP PUSH3 0x9F3 JUMP JUMPDEST POP DUP2 DUP2 LT ISZERO PUSH3 0xA83 JUMPI DUP1 DUP4 MSTORE JUMPDEST POP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0xAA0 DUP3 PUSH1 0x8 PUSH3 0x2A95 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xAB1 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0xAC3 DUP12 DUP12 DUP12 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xB40 JUMPI DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB37 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6653851A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB87 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x53DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xB9F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xBB2 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0xBF3 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xC2A DUP3 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xC5D DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCBE DUP5 DUP5 DUP5 PUSH0 DUP1 SHL PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xC84 JUMPI PUSH3 0xC83 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xCB7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCCF DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0xCDA DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCE6 DUP4 DUP4 PUSH3 0x2EC5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCF6 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0xD5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xD67 DUP3 DUP3 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH3 0xD76 PUSH3 0x2AAE JUMP JUMPDEST PUSH1 0x1 DUP10 PUSH2 0xFFFF AND LT ISZERO PUSH3 0xDC3 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0x4F958E7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xDBA SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0xDE7 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH0 DUP1 SHL PUSH3 0x301D SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH3 0xE0C JUMPI PUSH3 0xE09 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH3 0xE2A DUP11 PUSH2 0xFFFF AND DUP3 PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP10 PUSH2 0xFFFF AND PUSH32 0x839844A256A87F87C9C835117D9A1C40BE013954064C937072ACB32D36DB6A28 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH3 0xE6D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x54AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP2 ISZERO ISZERO DUP11 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xEE1 DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF03 DUP6 PUSH3 0x3217 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH3 0xF49 JUMPI POP PUSH0 PUSH1 0xA0 SHL PUSH3 0xF30 DUP6 PUSH3 0x3222 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST ISZERO PUSH3 0xF81 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD43A15D100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFD3 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0xFE6 PUSH3 0x2AAE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3B9FBE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x102C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x103F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x1077 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x1091 DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x10D5 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x10CC SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x10F0 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP DUP2 ISZERO ISZERO PUSH3 0x110D PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO SUB PUSH3 0x1147 JUMPI PUSH1 0x40 MLOAD PUSH32 0x237C71B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x117C DUP4 PUSH2 0xFFFF AND PUSH3 0x1168 DUP5 PUSH1 0xFF DUP6 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP2 ISZERO ISZERO DUP4 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x11CC PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x11E2 DUP2 PUSH1 0x8 PUSH3 0x326E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x1226 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x3CE0AD900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x121D SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x84CC2115995684DCB0CD3D3A9565E3D32F075DE81DB70C8DC3A719B2A47AF67E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x127A PUSH1 0x5 PUSH3 0x329D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x129A DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x12DE JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x12D5 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x12F9 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH3 0x1308 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x1343 DUP3 PUSH3 0x2A77 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH3 0x134F JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x1396 JUMPI CALLER DUP5 PUSH1 0x40 MLOAD PUSH32 0x9F85FCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x138D SWAP3 SWAP2 SWAP1 PUSH3 0x5527 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x13AC DUP7 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x13F0 JUMPI DUP6 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x13E7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1463 JUMPI DUP7 PUSH1 0x40 MLOAD PUSH32 0x2F9B185300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x145A SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x146F DUP6 DUP6 PUSH3 0x32BE JUMP JUMPDEST POP PUSH0 DUP1 PUSH3 0x147E DUP10 DUP10 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x14E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x160C JUMPI DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH32 0xCB27A43500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1603 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x1618 DUP6 PUSH3 0x3349 JUMP JUMPDEST PUSH3 0x1623 DUP7 PUSH3 0x3366 JUMP JUMPDEST PUSH3 0x162E DUP8 PUSH3 0x3384 JUMP JUMPDEST PUSH3 0x1639 DUP9 PUSH3 0x33A2 JUMP JUMPDEST PUSH3 0x1644 DUP10 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0x164F DUP11 PUSH3 0x33DE JUMP JUMPDEST PUSH3 0x165A DUP12 PUSH3 0x33FC JUMP JUMPDEST DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x1674 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5552 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x47973BFF00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH0 DUP4 DUP4 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x170B SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5665 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH3 0x1736 SWAP1 PUSH3 0x4403 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP14 DUP14 DUP13 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1786 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x573B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17A8 SWAP3 SWAP2 SWAP1 PUSH3 0x57DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH3 0x17C6 PUSH0 DUP4 DUP4 PUSH3 0x341A JUMP JUMPDEST SWAP8 POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x3 DUP6 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x1A2C DUP7 PUSH2 0xFFFF AND PUSH1 0xA PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH3 0x3518 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP6 PUSH2 0xFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C8D104B27C6B7F4492017A6F5CF3803043688934EBCAA6A03540BEEAF976AFF DUP9 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH3 0x1A96 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x1AA6 SWAP3 SWAP2 SWAP1 PUSH3 0x583E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 PUSH3 0x1AEE DUP6 DUP6 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0xA PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 PUSH3 0x1B79 DUP3 PUSH3 0x3531 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0x1D75 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1BA1 JUMPI PUSH3 0x1BA0 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1BDE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH3 0x1BCA PUSH3 0x4411 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x1BC0 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH0 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x1D72 JUMPI PUSH0 PUSH3 0x1C87 PUSH3 0x1C81 DUP4 DUP8 PUSH3 0x3546 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x355F JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE POP DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x1D5A JUMPI PUSH3 0x1D59 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH3 0x1C5E JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1D89 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x1D97 DUP7 DUP7 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1F56 JUMPI DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x40AA464400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1F4D SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP2 PUSH1 0x60 ADD MLOAD ISZERO ISZERO SUB PUSH3 0x1F97 JUMPI PUSH1 0x40 MLOAD PUSH31 0xDDCCCA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x44CF35361C9FF3C8C1397EC6410D5495CC481FEAEF35C9AF11DA1A637107DE4F DUP6 PUSH1 0x40 MLOAD PUSH3 0x2088 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x20AB PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x20B8 DUP5 DUP5 DUP5 PUSH3 0x2B3E JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x20CB PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x20D6 PUSH0 PUSH3 0x35A6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH3 0x20E3 PUSH3 0x2F16 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2106 PUSH3 0x27C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2161 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2158 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x216C DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x2187 JUMPI PUSH3 0x2186 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x21C3 PUSH1 0x8 PUSH3 0x35E7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0x16345785D8A0000 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x21E3 PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2259 JUMPI PUSH3 0x2223 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x2268 JUMP JUMPDEST PUSH3 0x2265 DUP4 DUP4 PUSH3 0x3623 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x22BA DUP10 PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x22FE JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x22F5 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x2315 DUP11 PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH3 0x2324 DUP2 PUSH3 0x3349 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 POP PUSH3 0x2335 DUP2 PUSH3 0x3366 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP8 POP PUSH3 0x2346 DUP2 PUSH3 0x3384 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP7 POP PUSH3 0x2357 DUP2 PUSH3 0x33A2 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP6 POP PUSH3 0x2368 DUP2 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP5 POP PUSH3 0x237A DUP2 PUSH3 0x33DE JUMP JUMPDEST PUSH2 0xFFFF AND SWAP4 POP PUSH3 0x238B DUP2 PUSH3 0x33FC JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP3 POP PUSH3 0x23A8 PUSH1 0xFF DUP3 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH0 PUSH3 0x23C1 PUSH3 0x3696 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x240A JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x243E JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0x244D JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x2485 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH3 0x24D3 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH3 0x24DE DUP9 PUSH3 0x36BD JUMP JUMPDEST PUSH8 0x16345785D8A0000 DUP8 GT ISZERO PUSH3 0x2538 JUMPI DUP7 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x252F SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2543 DUP10 PUSH3 0x36D5 JUMP JUMPDEST DUP7 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x2 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 PUSH0 DUP9 PUSH1 0x40 MLOAD PUSH3 0x25BD SWAP3 SWAP2 SWAP1 PUSH3 0x58D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP4 ISZERO PUSH3 0x2622 JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH3 0x2619 SWAP2 SWAP1 PUSH3 0x5954 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x265F DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0x266A DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0x2676 DUP4 DUP4 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0x2686 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x269C DUP2 PUSH1 0x8 PUSH3 0x386F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x26E0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x26D7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB767739217755D8AF5A2BA75B181A19FA1750F8BB701F09311CB19A90140CB3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH3 0x2730 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x274A DUP2 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x389E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x278E JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2785 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xFFFF AND PUSH32 0xDD86B848BB56FF540CAA68683FA467D0E7EB5F8B2D44E4EE435742EEEAE9BE13 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x27CE PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH3 0x2803 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x280E DUP2 PUSH3 0x36D5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x281B PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP DUP2 DUP2 SUB PUSH3 0x2868 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6EA8C7A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x285F SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0x16345785D8A0000 DUP3 GT ISZERO PUSH3 0x28C2 JUMPI DUP2 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x28B9 SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x28FC SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH3 0x2912 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0x291D PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2981 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A47 DUP3 PUSH0 ADD PUSH3 0x38DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x2A60 DUP7 PUSH0 ADD DUP7 PUSH3 0x38F3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SHR DUP2 PUSH0 SHR SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A8E PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2AA4 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2AB8 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2AD8 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2B3C JUMPI PUSH3 0x2AFE PUSH3 0x2F16 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2B33 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x2B48 PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x2B54 DUP5 DUP5 PUSH3 0x32FA JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x2CEC DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2D09 DUP2 PUSH3 0x2D03 PUSH3 0x2F16 JUMP JUMPDEST PUSH3 0x397A JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH3 0x2D1E DUP7 DUP7 DUP7 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x2D9B JUMPI DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D92 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x781A8915 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2DE6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E0C SWAP2 SWAP1 PUSH3 0x5985 JUMP JUMPDEST SUB PUSH3 0x2E51 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xB70CD0DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E48 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B057F6D DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E8E SWAP3 SWAP2 SWAP1 PUSH3 0x59B5 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2EA6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x2EB9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2F02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C64A79E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2F0E DUP4 DUP4 PUSH3 0x39D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x2F29 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x2F37 DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST ISZERO PUSH3 0x3012 JUMPI PUSH0 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x2FAD PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3017 JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND DUP8 PUSH2 0xFFFF AND GT DUP1 PUSH3 0x303A JUMPI POP PUSH2 0xFFF DUP7 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x304B JUMPI POP PUSH2 0x2710 DUP6 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x305C JUMPI POP PUSH2 0x9C4 DUP4 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x306F JUMPI POP PUSH3 0xFFFFF DUP3 PUSH3 0xFFFFFF AND GT JUMPDEST ISZERO PUSH3 0x30A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1C07203F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x30C6 DUP9 PUSH2 0xFFFF AND PUSH2 0xFFFF PUSH0 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x30E8 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x10 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x310A DUP7 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x1C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x312C DUP6 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x28 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3150 DUP5 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH1 0x36 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3172 DUP4 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x4E DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3196 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFF PUSH1 0x5C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x31C1 DUP2 PUSH0 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 DUP13 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x31F1 DUP5 DUP5 PUSH3 0x31E2 JUMPI PUSH0 PUSH3 0x31E5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP6 PUSH3 0x3AD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x320E DUP5 PUSH0 ADD DUP5 PUSH0 SHL DUP5 PUSH0 SHL PUSH3 0x3AEA JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x323C DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B23 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3255 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B43 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3295 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x32AD DUP4 PUSH0 ADD PUSH3 0x3C30 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x32CB DUP4 PUSH3 0x3C46 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH3 0x32D9 DUP6 PUSH3 0x3C79 JUMP JUMPDEST SWAP1 POP PUSH3 0x32F0 DUP2 DUP4 PUSH3 0x3C8C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x333C JUMPI DUP3 DUP5 DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP JUMPDEST DUP4 DUP4 SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x335F PUSH0 DUP4 PUSH3 0x3FB2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x337D PUSH1 0x10 DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x339B PUSH1 0x1C DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33B9 PUSH1 0x28 DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33D7 PUSH1 0x36 DUP4 PUSH3 0x3FE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33F5 PUSH1 0x4E DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3413 PUSH1 0x5C DUP4 PUSH3 0x3FF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 SELFBALANCE LT ISZERO PUSH3 0x3465 JUMPI SELFBALANCE DUP5 PUSH1 0x40 MLOAD PUSH32 0xE4BBECAC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x345C SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 MLOAD SUB PUSH3 0x34A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD DUP7 CREATE2 SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x3511 JUMPI PUSH1 0x40 MLOAD PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3529 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x353F DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3555 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP3 SWAP2 POP DUP2 PUSH2 0xFFFF AND EQ PUSH3 0x35A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x64AE406D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x35B1 PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH3 0x35E3 DUP3 PUSH3 0x4013 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH3 0x35F5 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x362F PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x36C7 PUSH3 0x40E6 JUMP JUMPDEST PUSH3 0x36D2 DUP2 PUSH3 0x4129 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x373B JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x37F1 JUMPI PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH32 0x4FCEA97100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x37E8 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x3863 SWAP3 SWAP2 SWAP1 PUSH3 0x59E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3896 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x38AF DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x42C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0x237E158222E3E6968B72B9DB0D8043AACF074AD9F650F0D1606B4D82EE432C00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x38EC DUP3 PUSH0 ADD PUSH3 0x42F6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH3 0x390D DUP5 DUP7 PUSH0 ADD PUSH3 0x430B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x3949 JUMPI PUSH3 0x3948 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x3986 DUP3 DUP3 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x39CC JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x39C3 SWAP3 SWAP2 SWAP1 PUSH3 0x5A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x39DC PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x39EA DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x3AC5 JUMPI PUSH1 0x1 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x3A60 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3ACA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP5 PUSH1 0x2 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH3 0x3B1A DUP4 DUP6 PUSH0 ADD PUSH3 0x4322 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3B3B DUP3 DUP5 PUSH0 ADD PUSH3 0x4339 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x2 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP1 SHL DUP2 EQ DUP1 ISZERO PUSH3 0x3B76 JUMPI POP PUSH3 0x3B74 DUP5 DUP5 PUSH3 0x3B23 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH3 0x3BBB JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x2B5668600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3BB2 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3BD2 DUP4 DUP4 PUSH3 0x395A JUMP JUMPDEST PUSH3 0x3C26 JUMPI DUP3 PUSH0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH0 ADD DUP1 SLOAD SWAP1 POP DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP PUSH3 0x3C2A JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x3C3F DUP3 PUSH0 ADD PUSH3 0x4350 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2710 PUSH1 0x80 PUSH1 0xFF AND DUP4 PUSH2 0xFFFF AND SWAP1 SHL DUP2 PUSH3 0x3C67 JUMPI PUSH3 0x3C66 PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DIV PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x800000 DUP3 PUSH3 0xFFFFFF AND SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 DUP5 SUB PUSH3 0x3CAA JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP POP POP PUSH3 0x3FAC JUMP JUMPDEST DUP4 SWAP1 POP PUSH0 DUP2 SLT ISZERO PUSH3 0x3CC0 JUMPI DUP1 PUSH0 SUB SWAP1 POP DUP2 ISZERO SWAP2 POP JUMPDEST PUSH3 0x100000 DUP2 LT ISZERO PUSH3 0x3F22 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 GT ISZERO PUSH3 0x3CFC JUMPI DUP1 PUSH0 NOT DIV SWAP1 POP DUP3 ISZERO SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH3 0x3D0F JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH3 0x3D2A JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x4 DUP3 AND ISZERO PUSH3 0x3D45 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x8 DUP3 AND ISZERO PUSH3 0x3D60 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x10 DUP3 AND ISZERO PUSH3 0x3D7B JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x20 DUP3 AND ISZERO PUSH3 0x3D96 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x40 DUP3 AND ISZERO PUSH3 0x3DB1 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x80 DUP3 AND ISZERO PUSH3 0x3DCC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x100 DUP3 AND ISZERO PUSH3 0x3DE8 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x200 DUP3 AND ISZERO PUSH3 0x3E04 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x400 DUP3 AND ISZERO PUSH3 0x3E20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x800 DUP3 AND ISZERO PUSH3 0x3E3C JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x1000 DUP3 AND ISZERO PUSH3 0x3E58 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x2000 DUP3 AND ISZERO PUSH3 0x3E74 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x4000 DUP3 AND ISZERO PUSH3 0x3E90 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x8000 DUP3 AND ISZERO PUSH3 0x3EAC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x10000 DUP3 AND ISZERO PUSH3 0x3EC9 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x20000 DUP3 AND ISZERO PUSH3 0x3EE6 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x40000 DUP3 AND ISZERO PUSH3 0x3F03 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x80000 DUP3 AND ISZERO PUSH3 0x3F20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST POP JUMPDEST PUSH0 DUP4 SUB PUSH3 0x3F6B JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3B74B31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3F62 SWAP3 SWAP2 SWAP1 PUSH3 0x5A84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH3 0x3F78 JUMPI DUP3 PUSH3 0x3FA7 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x3FA6 SWAP2 SWAP1 PUSH3 0x5AAF JUMP JUMPDEST JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3FFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x401E PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP3 DUP3 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH3 0x40F0 PUSH3 0x4371 JUMP JUMPDEST PUSH3 0x4127 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x4133 PUSH3 0x40E6 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x41A6 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x419D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x41B1 DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 EQ PUSH3 0x42B5 JUMPI PUSH0 PUSH1 0x1 DUP3 PUSH3 0x41E4 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP7 PUSH0 ADD DUP1 SLOAD SWAP1 POP PUSH3 0x41FC SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x4269 JUMPI PUSH0 DUP7 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x421F JUMPI PUSH3 0x421E PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x4243 JUMPI PUSH3 0x4242 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP8 PUSH1 0x1 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP6 PUSH0 ADD DUP1 SLOAD DUP1 PUSH3 0x427F JUMPI PUSH3 0x427E PUSH3 0x5AE6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x42BA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH3 0x42EE DUP3 DUP5 PUSH0 ADD PUSH3 0x4391 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4304 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x431A DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4331 DUP4 PUSH0 ADD DUP4 PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4348 DUP4 PUSH0 ADD DUP4 PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x4360 DUP4 PUSH0 ADD PUSH3 0x43A8 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x437C PUSH3 0x3696 JUMP JUMPDEST PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x43A0 DUP4 PUSH0 ADD DUP4 PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x43F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x43E2 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x19BA DUP1 PUSH3 0x5B14 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4491 DUP2 PUSH3 0x445B JUMP JUMPDEST DUP2 EQ PUSH3 0x449C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x44AF DUP2 PUSH3 0x4486 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x44CD JUMPI PUSH3 0x44CC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x44DC DUP5 DUP3 DUP6 ADD PUSH3 0x449F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x44FB DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4516 PUSH0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4559 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x456C DUP4 DUP4 PUSH3 0x454E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4590 DUP3 PUSH3 0x451C JUMP JUMPDEST PUSH3 0x459C DUP2 DUP6 PUSH3 0x4526 JUMP JUMPDEST SWAP4 POP PUSH3 0x45A9 DUP4 PUSH3 0x4536 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x45DF JUMPI DUP2 MLOAD PUSH3 0x45C3 DUP9 DUP3 PUSH3 0x455F JUMP JUMPDEST SWAP8 POP PUSH3 0x45D0 DUP4 PUSH3 0x4578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x45AC JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4606 DUP2 DUP5 PUSH3 0x4584 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4619 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP2 EQ PUSH3 0x4624 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4637 DUP2 PUSH3 0x460E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4655 JUMPI PUSH3 0x4654 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4664 DUP5 DUP3 DUP6 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46B5 PUSH3 0x46AF PUSH3 0x46A9 DUP5 PUSH3 0x466D JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46C8 DUP3 PUSH3 0x4695 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46DB DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x46ED DUP2 PUSH3 0x46CF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4708 PUSH0 DUP4 ADD DUP5 PUSH3 0x46E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x471A DUP3 PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x472D DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x473F DUP2 PUSH3 0x4721 JUMP JUMPDEST DUP2 EQ PUSH3 0x474A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x475D DUP2 PUSH3 0x4734 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x477B DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP2 EQ PUSH3 0x4786 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4799 DUP2 PUSH3 0x4770 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x47B8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP2 EQ PUSH3 0x47C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x47D6 DUP2 PUSH3 0x47AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH3 0x47FE JUMPI PUSH3 0x47FD PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x480D DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH3 0x4820 DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH3 0x4833 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH3 0x4846 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH3 0x4859 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH3 0x486C DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH3 0x487F DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH3 0x4892 DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 PUSH3 0x48A6 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x120 PUSH3 0x48BA DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x48E0 DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x48FB PUSH0 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x490C DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP2 EQ PUSH3 0x4917 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x492A DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4948 JUMPI PUSH3 0x4947 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4957 DUP5 DUP3 DUP6 ADD PUSH3 0x491A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4978 JUMPI PUSH3 0x4977 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4987 DUP5 DUP3 DUP6 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x49AA JUMPI PUSH3 0x49A9 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x49B9 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x49CC DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x49DF DUP7 DUP3 DUP8 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x49F4 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP2 EQ PUSH3 0x49FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A12 DUP2 PUSH3 0x49E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4A31 JUMPI PUSH3 0x4A30 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4A40 DUP6 DUP3 DUP7 ADD PUSH3 0x491A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4A53 DUP6 DUP3 DUP7 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4A68 DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP2 EQ PUSH3 0x4A73 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A86 DUP2 PUSH3 0x4A5D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH3 0x4AAD JUMPI PUSH3 0x4AAC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4ABC DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH3 0x4ACF DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH3 0x4AE2 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH3 0x4AF5 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH3 0x4B08 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH3 0x4B1B DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH3 0x4B2E DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH3 0x4B41 DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH3 0x4B55 DUP13 DUP3 DUP14 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x4B89 JUMPI PUSH3 0x4B88 PUSH3 0x4B65 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4BA9 JUMPI PUSH3 0x4BA8 PUSH3 0x4B69 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH3 0x4BC8 JUMPI PUSH3 0x4BC7 PUSH3 0x4B6D JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x4BEC JUMPI PUSH3 0x4BEB PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4BFB DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH3 0x4C0E DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH3 0x4C21 DUP10 DUP3 DUP11 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH3 0x4C34 DUP10 DUP3 DUP11 ADD PUSH3 0x491A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4C58 JUMPI PUSH3 0x4C57 PUSH3 0x4457 JUMP JUMPDEST JUMPDEST PUSH3 0x4C66 DUP10 DUP3 DUP11 ADD PUSH3 0x4B71 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH3 0x4C81 DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4C93 DUP2 PUSH3 0x4C75 JUMP JUMPDEST DUP2 EQ PUSH3 0x4C9E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4CB1 DUP2 PUSH3 0x4C88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4CCF JUMPI PUSH3 0x4CCE PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4CDE DUP5 DUP3 DUP6 ADD PUSH3 0x4CA1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4CF2 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D0D PUSH0 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4D2C JUMPI PUSH3 0x4D2B PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4D3B DUP6 DUP3 DUP7 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4D4E DUP6 DUP3 DUP7 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4D63 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D7E PUSH0 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4D9F JUMPI PUSH3 0x4D9E PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4DAE DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x4DC1 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x4DD4 DUP8 DUP3 DUP9 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x4DE7 DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH3 0x4DFF DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4E11 DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4E2C PUSH0 DUP4 ADD DUP5 PUSH3 0x4E06 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4E4B JUMPI PUSH3 0x4E4A PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4E5A DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4E6D DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4EAB DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4EBC DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4ECD DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x4EE9 PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x4EFE PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x4F13 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x4F28 PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4F3B DUP4 DUP4 PUSH3 0x4ED3 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4F5F DUP3 PUSH3 0x4E77 JUMP JUMPDEST PUSH3 0x4F6B DUP2 DUP6 PUSH3 0x4E81 JUMP JUMPDEST SWAP4 POP PUSH3 0x4F78 DUP4 PUSH3 0x4E91 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x4FAE JUMPI DUP2 MLOAD PUSH3 0x4F92 DUP9 DUP3 PUSH3 0x4F2E JUMP JUMPDEST SWAP8 POP PUSH3 0x4F9F DUP4 PUSH3 0x4F47 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x4F7B JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4FD5 DUP2 DUP5 PUSH3 0x4F53 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4FF8 JUMPI PUSH3 0x4FF7 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5007 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x501A DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x502D DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x5040 DUP8 DUP3 DUP9 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x5066 JUMPI PUSH3 0x5065 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5075 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x5088 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x509B DUP7 DUP3 DUP8 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x50BB PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x50D0 PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x50E5 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x50FA PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH3 0x5115 PUSH0 DUP4 ADD DUP5 PUSH3 0x50A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5131 PUSH0 DUP4 ADD DUP12 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5140 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x514F PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x515E PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x516D PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x517C PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x518B PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x519A PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x51C2 JUMPI PUSH3 0x51C1 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x51D1 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x51E4 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x51F7 DUP8 DUP3 DUP9 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x520A DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x522E JUMPI PUSH3 0x522D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x523D DUP5 DUP3 DUP6 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x525E JUMPI PUSH3 0x525D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x526D DUP5 DUP3 DUP6 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x5309 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH3 0x533E JUMPI PUSH3 0x533D PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5369 PUSH3 0x5363 PUSH3 0x535D DUP5 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x537B DUP2 PUSH3 0x5349 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH3 0x5396 PUSH0 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53A5 PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53B4 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH3 0x53C7 DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x53D8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x53F3 PUSH0 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5402 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5411 PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5420 PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x542F PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x543E PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x544D PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x546E PUSH0 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5494 PUSH3 0x548E PUSH3 0x5488 DUP5 PUSH3 0x479F JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x54A6 DUP2 PUSH3 0x5474 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x54C1 PUSH0 DUP4 ADD DUP11 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54D0 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54DF PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54EE PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54FD PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x549B JUMP JUMPDEST PUSH3 0x550C PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x551B PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x549B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x553C PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x554B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5568 PUSH0 DUP4 ADD DUP12 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5577 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5586 PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5595 PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55A4 PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55B3 PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55C2 PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55D1 PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x60 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x55F6 DUP3 PUSH3 0x55DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5609 DUP3 PUSH3 0x55EA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5625 PUSH3 0x561F DUP3 PUSH3 0x46CF JUMP JUMPDEST PUSH3 0x55FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0xF0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5643 DUP3 PUSH3 0x562B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x565F PUSH3 0x5659 DUP3 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x5637 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5672 DUP3 DUP7 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5684 DUP3 DUP6 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5696 DUP3 DUP5 PUSH3 0x564A JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x56E0 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x56C3 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5707 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x5713 DUP2 DUP6 PUSH3 0x56B1 JUMP JUMPDEST SWAP4 POP PUSH3 0x5725 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST PUSH3 0x5730 DUP2 PUSH3 0x56EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH3 0x5750 PUSH0 DUP4 ADD DUP9 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x575F PUSH1 0x20 DUP4 ADD DUP8 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x576E PUSH1 0x40 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x577D PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH3 0x5791 DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57B3 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x57BF DUP2 DUP6 PUSH3 0x579D JUMP JUMPDEST SWAP4 POP PUSH3 0x57D1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57EA DUP3 DUP6 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP PUSH3 0x57F8 DUP3 DUP5 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5810 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x581D DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH3 0x5838 JUMPI PUSH3 0x5837 PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5853 PUSH0 DUP4 ADD DUP6 PUSH3 0x4E06 JUMP JUMPDEST PUSH3 0x5862 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x587E PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x588D PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x58BD PUSH3 0x58B7 PUSH3 0x58B1 DUP5 PUSH3 0x5894 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x58CF DUP2 PUSH3 0x589D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x58EA PUSH0 DUP4 ADD DUP6 PUSH3 0x58C4 JUMP JUMPDEST PUSH3 0x58F9 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x593C PUSH3 0x5936 PUSH3 0x5930 DUP5 PUSH3 0x5900 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x5909 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x594E DUP2 PUSH3 0x591C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x5969 PUSH0 DUP4 ADD DUP5 PUSH3 0x5943 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x597F DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x599D JUMPI PUSH3 0x599C PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x59AC DUP5 DUP3 DUP6 ADD PUSH3 0x596F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59CA PUSH0 DUP4 ADD DUP6 PUSH3 0x48D5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0x59DE DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59FC PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A0B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A27 PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A36 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5A7E DUP2 PUSH3 0x5A6A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A99 PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5AA8 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5A73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5ABB DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x5AC8 DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x5ADB JUMPI PUSH3 0x5ADA PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH3 0x19BA CODESIZE SUB DUP1 PUSH3 0x19BA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x29 SWAP2 SWAP1 PUSH3 0xDAB JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH3 0x4B DUP3 DUP3 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP PUSH0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x12C SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x16B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x187 SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x234 SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x26E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x273 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x28F SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP DUP6 DUP1 ISZERO PUSH3 0x29C JUMPI POP DUP3 JUMPDEST PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D5 SWAP1 PUSH3 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO DUP1 ISZERO PUSH3 0x327 JUMPI POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO JUMPDEST PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x360 SWAP1 PUSH3 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH3 0x39D PUSH32 0x3441AB29B24DAF7A3FD59500B0E08396EC08EC96F5CC2D0362924CDD45CFEC31 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP9 PUSH3 0x410 PUSH32 0x7E1935766B7C49E7482A018A5EE52CA183A2DDFCB6810787916934079AA58264 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 PUSH2 0xFFFF AND PUSH3 0x487 PUSH32 0xFF057B3B4D4500DDA208CDE5D654DB7AA2EC63AC10AB9F9956A1F56973842782 PUSH0 SHL PUSH3 0x6A1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD DUP2 SWAP1 SSTORE POP PUSH0 PUSH3 0x4A3 DUP10 PUSH2 0xFFFF AND PUSH3 0x6AA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x4BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x117E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x4FE PUSH32 0x64FB4ECF63A4059A0BB1412609335673D4954BFF8E9740D216D9469D190CBB3F PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x50E SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x526 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x151E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x568 PUSH32 0xD668863F064048EE8C87390227CA6556D110ECF41306C7B64AAB5C1C530B2D84 PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x578 SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP PUSH3 0x58B DUP13 DUP10 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x177E JUMP JUMPDEST PUSH3 0x5AE DUP3 PUSH3 0x839 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0x683 JUMPI PUSH3 0x67C DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x649 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x66F SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST DUP3 PUSH3 0x9DF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x694 JUMP JUMPDEST PUSH3 0x693 PUSH3 0xA6B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP3 PUSH2 0xFFFF AND SUB PUSH3 0x6F6 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH3 0x82B JUMP JUMPDEST PUSH0 DUP3 SWAP1 POP PUSH0 JUMPDEST PUSH0 DUP3 PUSH2 0xFFFF AND EQ PUSH3 0x72F JUMPI DUP1 DUP1 PUSH3 0x715 SWAP1 PUSH3 0x15E4 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA DUP3 PUSH3 0x727 SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP2 POP PUSH3 0x6FC JUMP JUMPDEST PUSH0 DUP2 PUSH2 0xFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x751 JUMPI PUSH3 0x750 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x784 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND EQ PUSH3 0x824 JUMPI PUSH1 0x1 DUP3 PUSH3 0x7A3 SWAP2 SWAP1 PUSH3 0x1676 JUMP JUMPDEST SWAP2 POP PUSH1 0xA DUP6 PUSH3 0x7B4 SWAP2 SWAP1 PUSH3 0x16B2 JUMP JUMPDEST PUSH1 0x30 PUSH3 0x7C2 SWAP2 SWAP1 PUSH3 0x16E9 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH3 0x7DF JUMPI PUSH3 0x7DE PUSH3 0x1725 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP6 PUSH3 0x81C SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP5 POP PUSH3 0x788 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x897 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x64CED0EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x88E SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x8CB PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x955 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x97B SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x9DB JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9D2 SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xA0A SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0xA44 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xA49 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xA61 DUP6 DUP4 DUP4 PUSH3 0xAA8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH3 0xAA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0xAC7 JUMPI PUSH3 0xAC1 DUP3 PUSH3 0xB44 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xB3C JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH3 0xAEE JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH3 0xB33 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB2A SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH3 0xB3D JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0xB57 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xBC5 DUP3 PUSH3 0xB9A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xBD7 DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP2 EQ PUSH3 0xBE2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xBF5 DUP2 PUSH3 0xBCC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xC13 DUP2 PUSH3 0xBFB JUMP JUMPDEST DUP2 EQ PUSH3 0xC1E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xC31 DUP2 PUSH3 0xC08 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xC87 DUP3 PUSH3 0xC3F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0xCA9 JUMPI PUSH3 0xCA8 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xCBD PUSH3 0xB89 JUMP JUMPDEST SWAP1 POP PUSH3 0xCCB DUP3 DUP3 PUSH3 0xC7C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xCED JUMPI PUSH3 0xCEC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xCF8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xD24 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0xD07 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xD45 PUSH3 0xD3F DUP5 PUSH3 0xCD0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xD64 JUMPI PUSH3 0xD63 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xD71 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xD90 JUMPI PUSH3 0xD8F PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xDA2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xD2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0xDC7 JUMPI PUSH3 0xDC6 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0xDD6 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0xDE9 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0xDFC DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0xE0F DUP9 DUP3 DUP10 ADD PUSH3 0xC21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xE33 JUMPI PUSH3 0xE32 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xE41 DUP9 DUP3 DUP10 ADD PUSH3 0xD79 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xE6E DUP3 PUSH3 0xE4E JUMP JUMPDEST PUSH3 0xE7A DUP2 DUP6 PUSH3 0xE58 JUMP JUMPDEST SWAP4 POP PUSH3 0xE8C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xEA5 DUP3 DUP5 PUSH3 0xE62 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xECD JUMPI PUSH3 0xECC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xED8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xEFB PUSH3 0xEF5 DUP5 PUSH3 0xEB0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xF1A JUMPI PUSH3 0xF19 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xF27 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xF46 JUMPI PUSH3 0xF45 PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xF58 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xEE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xF79 JUMPI PUSH3 0xF78 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xF99 JUMPI PUSH3 0xF98 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xFA7 DUP5 DUP3 DUP6 ADD PUSH3 0xF2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A204661696C656420746F20676574 PUSH0 DUP3 ADD MSTORE PUSH32 0x20746F6B656E2073796D626F6C73000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x101C PUSH1 0x2E DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x1029 DUP3 PUSH3 0xFC0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x104D DUP2 PUSH3 0x100E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A20496E76616C696420746F6B656E PUSH0 DUP3 ADD MSTORE PUSH32 0x2073796D626F6C73000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x10B0 PUSH1 0x28 DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x10BD DUP3 PUSH3 0x1054 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x10E1 DUP2 PUSH3 0x10A2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C42545F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x112E DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH3 0x113A DUP2 DUP6 PUSH3 0x1118 JUMP JUMPDEST SWAP4 POP PUSH3 0x114C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2F00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x118A DUP3 PUSH3 0x10E8 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH3 0x119C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11A9 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11BB DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11C8 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11DA DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x122C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1242 JUMPI PUSH3 0x1241 PUSH3 0x11E7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH3 0x12A6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x1269 JUMP JUMPDEST PUSH3 0x12B2 DUP7 DUP4 PUSH3 0x1269 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x12FC PUSH3 0x12F6 PUSH3 0x12F0 DUP5 PUSH3 0x12CA JUMP JUMPDEST PUSH3 0x12D3 JUMP JUMPDEST PUSH3 0x12CA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1317 DUP4 PUSH3 0x12DC JUMP JUMPDEST PUSH3 0x132F PUSH3 0x1326 DUP3 PUSH3 0x1303 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x1275 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x1345 PUSH3 0x1337 JUMP JUMPDEST PUSH3 0x1352 DUP2 DUP5 DUP5 PUSH3 0x130C JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1379 JUMPI PUSH3 0x136D PUSH0 DUP3 PUSH3 0x133B JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1358 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x13C8 JUMPI PUSH3 0x1392 DUP2 PUSH3 0x1248 JUMP JUMPDEST PUSH3 0x139D DUP5 PUSH3 0x125A JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x13AD JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x13C5 PUSH3 0x13BC DUP6 PUSH3 0x125A JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x1357 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x13EA PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x13CD JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1404 DUP4 DUP4 PUSH3 0x13D9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x141F DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x143B JUMPI PUSH3 0x143A PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0x1447 DUP3 SLOAD PUSH3 0x1214 JUMP JUMPDEST PUSH3 0x1454 DUP3 DUP3 DUP6 PUSH3 0x137D JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x148A JUMPI PUSH0 DUP5 ISZERO PUSH3 0x1475 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x1481 DUP6 DUP3 PUSH3 0x13F7 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x14F0 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x149A DUP7 PUSH3 0x1248 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x14C3 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x149C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x14E3 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x14DF PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x13D9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4C697175696469747920426F6F6B20546F6B656E200000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x152A DUP3 PUSH3 0x14F8 JUMP JUMPDEST PUSH1 0x15 DUP3 ADD SWAP2 POP PUSH3 0x153C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1549 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x155B DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1568 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x157A DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x159F JUMPI PUSH3 0x159E PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x15AE DUP5 DUP3 DUP6 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x15F0 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH2 0xFFFF DUP3 SUB PUSH3 0x1607 JUMPI PUSH3 0x1606 PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x164B DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1658 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x166B JUMPI PUSH3 0x166A PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1682 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x168F DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x16AC JUMPI PUSH3 0x16AB PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16BE DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x16CB DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x16DE JUMPI PUSH3 0x16DD PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16F5 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1702 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x171F JUMPI PUSH3 0x171E PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0x175D DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1778 PUSH0 DUP4 ADD DUP5 PUSH3 0x1752 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x223 PUSH3 0x1797 PUSH0 CODECOPY PUSH0 PUSH2 0x118 ADD MSTORE PUSH2 0x223 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0A0EA39 EQ PUSH2 0x32 JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH2 0x30 PUSH2 0x5C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x46 PUSH2 0x6E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53 SWAP2 SWAP1 PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x67 PUSH2 0x7C JUMP JUMPDEST PUSH2 0xF6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x77 PUSH2 0x115 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85 PUSH2 0x115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0x111 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x165 DUP3 PUSH2 0x13C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x175 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x18E PUSH0 DUP4 ADD DUP5 PUSH2 0x16C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A1 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP2 EQ PUSH2 0x1AB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC DUP2 PUSH2 0x198 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH2 0x1D6 PUSH2 0x194 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1E4 DUP5 DUP3 DUP6 ADD PUSH2 0x1AE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xF 0xAC 0xD1 PUSH26 0xFF68AFE8C4F5F51E9F66C8A009AF1F057180AF91B116A45A1361 0xC6 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH DUP16 PUSH8 0x4ABC88915A00048D DUP7 DELEGATECALL CREATE 0x2C 0x24 CALLVALUE 0x4F 0xB5 0xB6 PUSH28 0x185D05CE64C6C9AEDC7E7C64736F6C63430008140033000000000000 ", + "sourceMap": "1541:27793:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9698:677:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6402:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20562:802;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1900:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4759:191:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6781:151:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22855:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5246:136:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6348:245;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17054:1139:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21951:504;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26236:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4471:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18573:532;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5439:126;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24596:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9425:133;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12340:2496;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1988:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10632:1133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15407:695;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4261:114;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7318:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3155:101:2;;;:::i;:::-;;3132:229:1;;;:::i;:::-;;5757:131:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6050:148;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4694:120;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2441:144:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28645:203:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5202:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2317:49:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8275:992:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3682:475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11820:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5662:138:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25131:244:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19331:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2038:168:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23440:122:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23879:448;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2399:247:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4949:118:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3443:202:0;3528:4;3566:32;3551:47;;;:11;:47;;;;:87;;;;3602:36;3626:11;3602:23;:36::i;:::-;3551:87;3544:94;;3443:202;;;:::o;9698:677:21:-;9757:28;9797:14;9814:17;:8;:15;:17::i;:::-;9797:34;;9855:1;9846:6;:10;9842:527;;;9900:6;9886:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9872:35;;9922:13;9955:9;9950:268;9970:6;9966:1;:10;9950:268;;;10002:15;10019:14;10037;10049:1;10037:8;:11;;:14;;;;:::i;:::-;10001:50;;;;10074:30;10096:6;10088:15;;10074:13;:30::i;:::-;10070:134;;;10149:7;10128:11;10140:5;10128:18;;;;;;;;:::i;:::-;;;;;;;:28;;;;;10178:7;;;;;:::i;:::-;;;;10070:134;9983:235;;9978:3;;;;:::i;:::-;;;9950:268;;;;10244:6;10236:5;:14;10232:127;;;10321:5;10308:11;10301:26;10232:127;9858:511;9842:527;9787:588;9698:677;:::o;6402:153::-;6479:12;6517:30;6541:5;6517:20;:23;;:30;;;;:::i;:::-;6503:45;;6402:153;;;:::o;20562:802::-;2334:13:2;:11;:13::i;:::-;20931:14:21::1;20948:46;20970:6;20978;20986:7;20948:46;;:21;:46::i;:::-;:53;;;20931:70;;21043:1;21016:29;;21024:6;21016:29;;::::0;21012:94:::1;;21082:6;21090;21098:7;21054:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;21012:94;21117:6;:29;;;21160:10;21184:12;21210:11;21235:15;21264:18;21296:13;21323:24;21117:240;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20921:443;20562:802:::0;;;;;;;;;;:::o;1900:82::-;1948:34;1900:82;:::o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4843:59;;4919:1;:8;;:14;4928:4;4919:14;;;;;;;;;;;:24;;;4912:31;;;4759:191;;;:::o;6781:151:21:-;6849:12;6880:45;6918:5;6880:20;:29;;:45;;;;:::i;:::-;6873:52;;6781:151;;;:::o;22855:239::-;1948:34;3191:16:0;3202:4;3191:10;:16::i;:::-;23018:69:21::1;23046:6;23054;23062:7;23071:1;23018:69:::0;::::1;23084:1;23074:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23018:27;:69::i;:::-;22855:239:::0;;;;:::o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;6463:12;:10;:12::i;:::-;6441:34;;:18;:34;;;6437:102;;6498:30;;;;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;17054:1139:21:-;2334:13:2;:11;:13::i;:::-;2218:1:21::1;17388:7;:23;;;17384:69;;;17445:7;17420:33;;;;;;;;;;;:::i;:::-;;;;;;;;17384:69;17464:14;17481:244;17528:10;17552:12;17578:11;17603:15;17632:18;17664:13;17691:24;17489:1;17481:10:::0;::::1;:33;;:244;;;;;;;;;;:::i;:::-;17464:261;;17740:6;17736:90;;;17771:44;17786:4;2167:3;17771:6;:14;;:44;;;;;:::i;:::-;17762:53;;17736:90;17836:38;17849:7;17836:38;;17866:6;17858:15;;17836:8;:12;;:38;;;;;:::i;:::-;;17913:7;17890:241;;;17934:10;17958:12;17984:11;18009:15;18038:18;18070:13;18097:24;17890:241;;;;;;;;;;;;:::i;:::-;;;;;;;;18179:6;18147:39;;18170:7;18147:39;;;;;;;;;;;;17374:819;17054:1139:::0;;;;;;;;;:::o;21951:504::-;1948:34;3191:16:0;3202:4;3191:10;:16::i;:::-;22242:1:21::1;22199:45;;:31;22214:15;22199:14;:31::i;:::-;:45;;;:85;;;;22283:1;22248:36;;:31;22263:15;22248:14;:31::i;:::-;:36;;;;22199:85;22195:158;;;22307:35;;;;;;;;;;;;;;22195:158;22363:85;22391:6;22399;22407:7;22416:15;22433:14;;22363:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;:85::i;:::-;21951:504:::0;;;;;;;:::o;26236:96::-;2334:13:2;:11;:13::i;:::-;26308:4:21::1;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26236:96:::0;:::o;4471:118::-;4530:20;4569:13;;;;;;;;;;;4562:20;;4471:118;:::o;18573:532::-;2334:13:2;:11;:13::i;:::-;18673:26:21::1;18691:7;18673:26;;:8;:17;;:26;;;;:::i;:::-;18668:78;;18738:7;18708:38;;;;;;;;;;;:::i;:::-;;;;;;;;18668:78;18757:14;18782:21;18795:7;18782:21;;:8;:12;;:21;;;;:::i;:::-;18774:30;;18757:47;;18864:6;18819:51;;:41;2167:3;18819:6;:17;;:41;;;;:::i;:::-;:51;;::::0;18815:140:::1;;18893:51;;;;;;;;;;;;;;18815:140;18965:78;18978:7;18965:78;;18995:46;19010:6;2167:3;18995:6;:14;;:46;;;;;:::i;:::-;18987:55;;18965:8;:12;;:78;;;;;:::i;:::-;;19091:6;19059:39;;19082:7;19059:39;;;;;;;;;;;;18658:447;18573:532:::0;;:::o;5439:126::-;5501:20;5540:11;:18;;;;5533:25;;5439:126;:::o;24596:264::-;2334:13:2;:11;:13::i;:::-;24681:45:21::1;24714:10;24681:20;:24;;:45;;;;:::i;:::-;24676:135;;24789:10;24749:51;;;;;;;;;;;:::i;:::-;;;;;;;;24676:135;24842:10;24826:27;;;;;;;;;;;;24596:264:::0;:::o;9425:133::-;9483:34;9536:15;:8;:13;:15::i;:::-;9529:22;;9425:133;:::o;12340:2496::-;12476:12;12509:26;12527:7;12509:26;;:8;:17;;:26;;;;:::i;:::-;12504:78;;12574:7;12544:38;;;;;;;;;;;:::i;:::-;;;;;;;;12504:78;12593:14;12618:21;12631:7;12618:21;;:8;:12;;:21;;;;:::i;:::-;12610:30;;12593:47;;12650:12;12679:7;:5;:7::i;:::-;12665:21;;:10;:21;;;12650:36;;12702:21;12716:6;12702:13;:21::i;:::-;12701:22;:34;;;;;12728:7;12727:8;12701:34;12697:126;;;12792:10;12804:7;12758:54;;;;;;;;;;;;:::i;:::-;;;;;;;;12697:126;12838:46;12876:6;12838:20;:29;;:46;;;;:::i;:::-;12833:103;;12929:6;12893:43;;;;;;;;;;;:::i;:::-;;;;;;;;12833:103;12961:6;12951:16;;:6;:16;;;12947:66;;13006:6;12976:37;;;;;;;;;;;:::i;:::-;;;;;;;;12947:66;13094:45;13121:8;13131:7;13094:26;:45::i;:::-;;13258:13;13273;13290:27;13302:6;13310;13290:11;:27::i;:::-;13257:60;;;;13396:1;13369:29;;13377:6;13369:29;;;13365:66;;13407:24;;;;;;;;;;;;;;13365:66;13510:1;13445:67;;13453:12;:20;13466:6;13453:20;;;;;;;;;;;;;;;:28;13474:6;13453:28;;;;;;;;;;;;;;;:37;13482:7;13453:37;;;;;;;;;;;;;:44;;;;;;;;;;;;13445:67;;;13441:160;;13566:6;13574;13582:7;13535:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;13441:160;13625:17;13756:22;:6;:20;:22::i;:::-;13796:24;:6;:22;:24::i;:::-;13838:23;:6;:21;:23::i;:::-;13879:27;:6;:25;:27::i;:::-;13924:30;:6;:28;:30::i;:::-;13972:25;:6;:23;:25::i;:::-;14015:36;:6;:34;:36::i;:::-;14069:8;13645:446;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13625:466;;14106:12;14148:6;14156;14164:7;14131:41;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14121:52;;;;;;14106:67;;14188:21;14246:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;14311:13;;;;;;;;;;;14326:6;14334;14342:7;14351:4;14300:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14212:158;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14188:182;;14440:33;14455:1;14458:4;14464:8;14440:14;:33::i;:::-;14425:49;;13611:874;;;14547:102;;;;;;;;14575:7;14547:102;;;;;;14592:4;14547:102;;;;;;14614:7;14547:102;;;;;;14642:5;14547:102;;;;;14495:12;:20;14508:6;14495:20;;;;;;;;;;;;;;;:28;14516:6;14495:28;;;;;;;;;;;;;;;:37;14524:7;14495:37;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14660:11;14677:4;14660:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14692:53;14737:7;14692:53;;:24;:32;14717:6;14692:32;;;;;;;;;;;;;;;:40;14725:6;14692:40;;;;;;;;;;;;;;;:44;;:53;;;;:::i;:::-;;14791:7;14761:68;;14783:6;14761:68;;14775:6;14761:68;;;14800:4;14827:1;14806:11;:18;;;;:22;;;;:::i;:::-;14761:68;;;;;;;:::i;:::-;;;;;;;;12494:2342;;;;12340:2496;;;;;;:::o;1988:122::-;2056:54;1988:122;:::o;10632:1133::-;10749:43;10833:13;10848;10865:27;10877:6;10885;10865:11;:27::i;:::-;10832:60;;;;10907:40;10950:24;:32;10975:6;10950:32;;;;;;;;;;;;;;;:40;10983:6;10950:40;;;;;;;;;;;;;;;10907:83;;11005:14;11022:19;:10;:17;:19::i;:::-;11005:36;;11069:1;11060:6;:10;11056:693;;;11133:6;11109:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11090:50;;11159:57;11219:12;:20;11232:6;11219:20;;;;;;;;;;;;;;;:28;11240:6;11219:28;;;;;;;;;;;;;;;11159:88;;11271:9;11266:469;11290:6;11286:1;:10;11266:469;;;11325:14;11342:25;:16;11356:1;11342:10;:13;;:16;;;;:::i;:::-;:23;:25::i;:::-;11325:42;;11412:304;;;;;;;;11465:7;11412:304;;;;;;11506:11;:20;11518:7;11506:20;;;;;;;;;;;;;:27;;;;;;;;;;;;11412:304;;;;;;11575:11;:20;11587:7;11575:20;;;;;;;;;;;;;:35;;;;;;;;;;;;11412:304;;;;;;11655:11;:20;11667:7;11655:20;;;;;;;;;;;;;:38;;;;;;;;;;;;11412:304;;;;;11390:16;11407:1;11390:19;;;;;;;;:::i;:::-;;;;;;;:326;;;;11303:432;11298:3;;;;;11266:469;;;;11072:677;11056:693;10808:951;;;;10632:1133;;;;:::o;15407:695::-;2334:13:2;:11;:13::i;:::-;15532::21::1;15547::::0;15564:27:::1;15576:6;15584;15564:11;:27::i;:::-;15531:60;;;;15602:40;15645:12;:20;15658:6;15645:20;;;;;;;;;;;;;;;:28;15666:6;15645:28;;;;;;;;;;;;;;;:37;15674:7;15645:37;;;;;;;;;;;;;15602:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;15739:1;15696:45;;15704:15;:22;;;15696:45;;::::0;15692:137:::1;;15794:6;15802;15810:7;15764:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;15692:137;15880:7;15843:44;;:15;:33;;;:44;;::::0;15839:106:::1;;15896:49;;;;;;;;;;;;;;15839:106;16014:7;15956:12;:20;15969:6;15956:20;;;;;;;;;;;;;;;:28;15977:6;15956:28;;;;;;;;;;;;;;;:37;15985:7;15956:37;;;;;;;;;;;;;:55;;;:65;;;;;;;;;;;;;;;;;;16063:15;:22;;;16037:58;;;16087:7;16037:58;;;;;;:::i;:::-;;;;;;;;15521:581;;;15407:695:::0;;;;:::o;4261:114::-;4318:18;2218:1;4348:20;;4261:114;:::o;7318:259::-;7459:42;;:::i;:::-;7524:46;7546:6;7554;7562:7;7524:21;:46::i;:::-;7517:53;;7318:259;;;;;:::o;3155:101:2:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;3132:229:1:-;3184:14;3201:12;:10;:12::i;:::-;3184:29;;3245:6;3227:24;;:14;:12;:14::i;:::-;:24;;;3223:96;;3301:6;3274:34;;;;;;;;;;;:::i;:::-;;;;;;;;3223:96;3328:26;3347:6;3328:18;:26::i;:::-;3174:187;3132:229::o;5757:131:21:-;5830:14;5863:11;5875:5;5863:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5856:25;;5757:131;;;:::o;6050:148::-;6116:27;6162:29;:20;:27;:29::i;:::-;6155:36;;6050:148;:::o;4694:120::-;4756:14;2282:6;4782:25;;4694:120;:::o;2441:144:2:-;2487:7;2506:24;2533:20;:18;:20::i;:::-;2506:47;;2570:1;:8;;;;;;;;;;;;2563:15;;;2441:144;:::o;28645:203:21:-;28723:4;2362::0;28751:18:21;;28743:4;:26;28739:57;;28789:7;:5;:7::i;:::-;28778:18;;:7;:18;;;28771:25;;;;28739:57;28813:28;28827:4;28833:7;28813:13;:28::i;:::-;28806:35;;28645:203;;;;;:::o;5202:118::-;5261:20;5300:13;;;;;;;;;;;5293:20;;5202:118;:::o;2317:49:0:-;2362:4;2317:49;;;:::o;8275:992:21:-;8388:18;8420:20;8454:19;8487:23;8524:26;8564:21;8599:32;8645:11;8686:26;8704:7;8686:8;:17;;:26;;;;:::i;:::-;8681:78;;8751:7;8721:38;;;;;;;;;;;:::i;:::-;;;;;;;;8681:78;8770:14;8795:21;8808:7;8795:8;:12;;:21;;;;:::i;:::-;8787:30;;8770:47;;8841:22;:6;:20;:22::i;:::-;8828:35;;;;8888:24;:6;:22;:24::i;:::-;8873:39;;;;8936:23;:6;:21;:23::i;:::-;8922:37;;;;8987:27;:6;:25;:27::i;:::-;8969:45;;;;9045:30;:6;:28;:30::i;:::-;9024:51;;;;9101:25;:6;:23;:25::i;:::-;9085:41;;;;9163:36;:6;:34;:36::i;:::-;9136:63;;;;9219:41;2167:3;9219:6;:17;;:41;;;;:::i;:::-;9210:50;;8671:596;8275:992;;;;;;;;;:::o;3682:475::-;4158:30:3;4191:26;:24;:26::i;:::-;4158:59;;4279:19;4302:1;:15;;;;;;;;;;;;4301:16;4279:38;;4327:18;4348:1;:14;;;;;;;;;;;;4327:35;;4706:17;4741:1;4726:11;:16;;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4805:1;4790:11;:16;;;:50;;;;;4839:1;4818:4;4810:25;;;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4968:1;4951;:14;;;:18;;;;;;;;;;;;;;;;;;4983:14;4979:67;;;5031:4;5013:1;:15;;;:22;;;;;;;;;;;;;;;;;;4979:67;3828:28:21::1;3843:12;3828:14;:28::i;:::-;2282:6;3871:12;:33;3867:111;;;3945:12;2282:6;3913:65;;;;;;;;;;;;:::i;:::-;;;;;;;;3867:111;3989:30;4006:12;3989:16;:30::i;:::-;4046:12;4030:13;:28;;;;4084:19;4068:13;;:35;;;;;;;;;;;;;;;;;;4118:32;4134:1;4137:12;4118:32;;;;;;;:::i;:::-;;;;;;;;5070:14:3::0;5066:101;;;5118:5;5100:1;:15;;;:23;;;;;;;;;;;;;;;;;;5142:14;5154:1;5142:14;;;;;;:::i;:::-;;;;;;;;5066:101;4092:1081;;;;;3682:475:21;;;;:::o;11820:122::-;11868:7;2056:54;11887:48;;11820:122;:::o;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;:::-;;5662:138:::0;;;:::o;25131:244:21:-;2334:13:2;:11;:13::i;:::-;25219:48:21::1;25255:10;25219:20;:27;;:48;;;;:::i;:::-;25214:109;;25312:10;25276:47;;;;;;;;;;;:::i;:::-;;;;;;;;25214:109;25357:10;25339:29;;;;;;;;;;;;25131:244:::0;:::o;19331:197::-;2334:13:2;:11;:13::i;:::-;19412:24:21::1;19428:7;19412:24;;:8;:15;;:24;;;;:::i;:::-;19407:76;;19475:7;19445:38;;;;;;;;;;;:::i;:::-;;;;;;;;19407:76;19513:7;19499:22;;;;;;;;;;;;19331:197:::0;:::o;2038:168:1:-;2091:7;2110:29;2142:25;:23;:25::i;:::-;2110:57;;2184:1;:15;;;;;;;;;;;;2177:22;;;2038:168;:::o;23440:122:21:-;2334:13:2;:11;:13::i;:::-;23525:30:21::1;23542:12;23525:16;:30::i;:::-;23440:122:::0;:::o;23879:448::-;2334:13:2;:11;:13::i;:::-;23964:23:21::1;23990:13;;23964:39;;24037:12;24018:15;:31:::0;24014:85:::1;;24086:12;24058:41;;;;;;;;;;;:::i;:::-;;;;;;;;24014:85;2282:6;24113:12;:33;24109:111;;;24187:12;2282:6;24155:65;;;;;;;;;;;;:::i;:::-;;;;;;;;24109:111;24247:12;24231:13;:28;;;;24274:46;24290:15;24307:12;24274:46;;;;;;;:::i;:::-;;;;;;;;23954:373;23879:448:::0;:::o;2399:247:1:-;2334:13:2;:11;:13::i;:::-;2488:29:1::1;2520:25;:23;:25::i;:::-;2488:57;;2573:8;2555:1;:15;;;:26;;;;;;;;;;;;;;;;;;2630:8;2596:43;;2621:7;:5;:7::i;:::-;2596:43;;;;;;;;;;;;2478:168;2399:247:::0;:::o;4949:118:21:-;5008:20;5047:13;;5040:20;;4949:118;:::o;1035:146:5:-;1111:4;1149:25;1134:40;;;:11;:40;;;;1127:47;;1035:146;;;:::o;7009:117:19:-;7075:7;7101:18;7108:3;:10;;7101:6;:18::i;:::-;7094:25;;7009:117;;;:::o;7463:211::-;7540:7;7549;7569:11;7582:13;7599:21;7602:3;:10;;7614:5;7599:2;:21::i;:::-;7568:52;;;;7646:3;7638:12;;7660:5;7652:14;;7630:37;;;;;;7463:211;;;;;:::o;25381:133:21:-;25443:4;25466:41;2167:3;25466:6;:17;;:41;;;;:::i;:::-;25459:48;;25381:133;;;:::o;9574:156:20:-;9648:7;9698:22;9702:3;:10;;9714:5;9698:3;:22::i;:::-;9690:31;;9667:56;;9574:156;;;;:::o;2658:162:2:-;2728:12;:10;:12::i;:::-;2717:23;;:7;:5;:7::i;:::-;:23;;;2713:101;;2790:12;:10;:12::i;:::-;2763:40;;;;;;;;;;;:::i;:::-;;;;;;;;2713:101;2658:162::o;26700:271:21:-;26824:24;;:::i;:::-;26883:27;26895:6;26903;26883:11;:27::i;:::-;26864:46;;;;;;;;26927:12;:20;26940:6;26927:20;;;;;;;;;;;;;;;:28;26948:6;26927:28;;;;;;;;;;;;;;;:37;26956:7;26927:37;;;;;;;;;;;26920:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26700:271;;;;;:::o;2787:177:0:-;2845:30;2920:28;2910:38;;2787:177;:::o;8871:165:20:-;8951:4;8974:55;8984:3;:10;;9020:5;9004:23;;8996:32;;8974:9;:55::i;:::-;8967:62;;8871:165;;;;:::o;4148:103:0:-;4214:30;4225:4;4231:12;:10;:12::i;:::-;4214:10;:30::i;:::-;4148:103;:::o;27812:571:21:-;28014:14;28031:46;28053:6;28061;28069:7;28031:46;;:21;:46::i;:::-;:53;;;28014:70;;28126:1;28099:29;;28107:6;28099:29;;;28095:94;;28165:6;28173;28181:7;28137:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;28095:94;28236:15;28203:6;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;28199:108;;28291:15;28260:47;;;;;;;;;;;:::i;:::-;;;;;;;;28199:108;28318:6;:25;;;28344:15;28361:14;28318:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28004:379;27812:571;;;;;:::o;29104:228::-;29182:4;2362::0;29210:18:21;;29202:4;:26;29198:79;;29237:40;;;;;;;;;;;;;;29198:79;29294:31;29311:4;29317:7;29294:16;:31::i;:::-;29287:38;;29104:228;;;;:::o;887:96:4:-;940:7;966:10;959:17;;887:96;:::o;7892:388:0:-;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:1;:8;;:14;8106:4;8097:14;;;;;;;;;;;:22;;:31;8120:7;8097:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8182:12;:10;:12::i;:::-;8155:40;;8173:7;8155:40;;8167:4;8155:40;;;;;;;;;;8216:4;8209:11;;;;;8055:219;8258:5;8251:12;;;7892:388;;;;;:::o;12883:1397:32:-;13190:17;13251:11;13236:26;;:12;:26;;;:63;;;;327:5:36;13266:11:32;:33;;;13236:63;:126;;;;595:6:29;13319:15:32;:43;;;13236:126;:174;;;;521:5:29;13366:13:32;:44;;;13236:174;:240;;;;482:7:36;13430:24:32;:46;;;13236:240;13219:315;;;13494:40;;;;;;;;;;;;;;13219:315;13557:66;13571:10;13557:66;;430:6:36;1162:1:32;13557:9;:13;;:66;;;;;;:::i;:::-;13545:78;;13645:70;13659:12;13645:70;;327:5:36;1218:2:32;13645:9;:13;;:70;;;;;;:::i;:::-;13633:82;;13737:68;13751:11;13737:68;;327:5:36;1274:2:32;13737:9;:13;;:68;;;;;;:::i;:::-;13725:80;;13827:76;13841:15;13827:76;;378:6:36;1334:2:32;13827:9;:13;;:76;;;;;;:::i;:::-;13815:88;;13925:78;13939:18;13925:78;;535:8:36;1393:2:32;13925:9;:13;;:78;;;;;;:::i;:::-;13913:90;;14025:72;14039:13;14025:72;;378:6:36;1451:2:32;14025:9;:13;;:72;;;;;;:::i;:::-;14013:84;;14119:80;14133:24;14119:80;;482:7:36;1506:2:32;14119:9;:13;;:80;;;;;;:::i;:::-;14107:92;;14217:56;14236:9;14228:18;;1889:30;14271:1;14217:6;:10;;:56;;;;;;:::i;:::-;14210:63;;12883:1397;;;;;;;;;;:::o;1732:180:36:-;1819:18;1856:49;1860:7;1869;:15;;1883:1;1869:15;;;1879:1;1869:15;1856:49;;229:3;1898:6;1856:3;:49::i;:::-;1849:56;;1732:180;;;;;:::o;6246:161:19:-;6332:4;6355:45;6359:3;:10;;6379:3;6371:12;;6393:5;6385:14;;6355:3;:45::i;:::-;6348:52;;6246:161;;;;;:::o;3932:148:30:-;3998:13;4055:15;4047:24;;4023:50;;3932:148;;;:::o;4730:130::-;4796:13;4837:15;4821:32;;4730:130;;;:::o;6781:145:19:-;6862:4;6885:34;6894:3;:10;;6914:3;6906:12;;6885:8;:34::i;:::-;6878:41;;6781:145;;;;:::o;8183:147::-;8259:7;8293:29;8297:3;:10;;8317:3;8309:12;;8293:3;:29::i;:::-;8285:38;;8278:45;;8183:147;;;;:::o;2658:187:36:-;2734:12;2818:10;2808:7;2800:6;2796:20;2792:37;2781:48;;2658:187;;;;:::o;8316:150:20:-;8386:4;8409:50;8414:3;:10;;8450:5;8434:23;;8426:32;;8409:4;:50::i;:::-;8402:57;;8316:150;;;;:::o;8880:298:19:-;8944:16;8972:22;8997:16;9002:3;:10;;8997:4;:16::i;:::-;8972:41;;9023:23;9133:5;9123:15;;9165:6;9158:13;;;;8880:298;;;:::o;784:217:33:-;858:13;883:12;898:16;906:7;898;:16::i;:::-;883:31;;924:15;942;954:2;942:11;:15::i;:::-;924:33;;976:18;985:8;976:4;:8;;:18;;;;:::i;:::-;968:26;;873:128;;784:217;;;;:::o;27218:195:21:-;27291:6;27299;27330;27321:15;;:6;:15;;;27317:56;;;27358:6;27366;27338:35;;;;;;;;27317:56;27391:6;27399;27383:23;;;;27218:195;;;;;:::o;2186:150:32:-;2248:17;2290:39;1162:1;2290:6;:19;;:39;;;;:::i;:::-;2277:52;;2186:150;;;:::o;2645:158::-;2709:19;2755:41;1218:2;2755:6;:19;;:41;;;;:::i;:::-;2740:56;;2645:158;;;:::o;3108:154::-;3171:18;3215:40;1274:2;3215:6;:19;;:40;;;;:::i;:::-;3201:54;;3108:154;;;:::o;3583:170::-;3650:22;3702:44;1334:2;3702:6;:19;;:44;;;;:::i;:::-;3684:62;;3583:170;;;:::o;4089:178::-;4159:25;4217:43;1393:2;4217:6;:19;;:43;;;;:::i;:::-;4196:64;;4089:178;;;:::o;4580:162::-;4645:20;4693:42;1451:2;4693:6;:19;;:42;;;;:::i;:::-;4677:58;;4580:162;;;:::o;5104:192::-;5180:31;5250:39;1506:2;5250:6;:19;;:39;;;;:::i;:::-;5223:66;;5104:192;;;:::o;1413:573:16:-;1500:12;1552:6;1528:21;:30;1524:125;;;1608:21;1631:6;1581:57;;;;;;;;;;;;:::i;:::-;;;;;;;;1524:125;1681:1;1662:8;:15;:20;1658:80;;1705:22;;;;;;;;;;;;;;1658:80;1875:4;1864:8;1858:15;1851:4;1841:8;1837:19;1829:6;1821:59;1813:67;;1919:1;1903:18;;:4;:18;;;1899:81;;1944:25;;;;;;;;;;;;;;1899:81;1413:573;;;;;:::o;10804:129:20:-;10871:4;10894:32;10899:3;:10;;10919:5;10911:14;;10894:4;:32::i;:::-;10887:39;;10804:129;;;;:::o;11542:112::-;11602:7;11628:19;11636:3;:10;;11628:7;:19::i;:::-;11621:26;;11542:112;;;:::o;11996:135::-;12067:7;12101:22;12105:3;:10;;12117:5;12101:3;:22::i;:::-;12093:31;;12086:38;;11996:135;;;;:::o;10513::37:-;10563:8;10606:1;10599;10588:13;;;10587:20;;;10583:58;;10616:25;;;;;;;;;;;;;;10583:58;10513:135;;;:::o;2830:222:1:-;2912:29;2944:25;:23;:25::i;:::-;2912:57;;2986:1;:15;;;2979:22;;;;;;;;;;;3011:34;3036:8;3011:24;:34::i;:::-;2902:150;2830:222;:::o;9117:115:20:-;9180:7;9206:19;9214:3;:10;;9206:7;:19::i;:::-;9199:26;;9117:115;;;:::o;1192:159:2:-;1244:24;1313:22;1303:32;;1192:159;:::o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3825:59;;3901:1;:8;;:14;3910:4;3901:14;;;;;;;;;;;:22;;:31;3924:7;3901:31;;;;;;;;;;;;;;;;;;;;;;;;;3894:38;;;3732:207;;;;:::o;8737:170:3:-;8795:30;8870:21;8860:31;;8737:170;:::o;1847:127:2:-;6931:20:3;:18;:20::i;:::-;1929:38:2::1;1954:12;1929:24;:38::i;:::-;1847:127:::0;:::o;25657:383:21:-;25752:1;25728:26;;:12;:26;;;25724:63;;25763:24;;;;;;;;;;;;;;25724:63;25798:23;25824:13;;;;;;;;;;;25798:39;;25870:12;25851:31;;:15;:31;;;25847:86;;25919:13;;;;;;;;;;25891:42;;;;;;;;;;;:::i;:::-;;;;;;;;25847:86;25960:12;25944:13;;:28;;;;;;;;;;;;;;;;;;25987:46;26003:15;26020:12;25987:46;;;;;;;:::i;:::-;;;;;;;;25714:326;25657:383;:::o;8634:156:20:-;8707:4;8730:53;8738:3;:10;;8774:5;8758:23;;8750:32;;8730:7;:53::i;:::-;8723:60;;8634:156;;;;:::o;6566:136:19:-;6640:4;6663:32;6670:3;:10;;6690:3;6682:12;;6663:6;:32::i;:::-;6656:39;;6566:136;;;;:::o;1545:174:1:-;1602:29;1676:27;1666:37;;1545:174;:::o;3716:123:19:-;3788:7;3814:18;:3;:9;;:16;:18::i;:::-;3807:25;;3716:123;;;:::o;4192:191::-;4275:7;4284;4303:11;4317:19;4330:5;4317:3;:9;;:12;;:19;;;;:::i;:::-;4303:33;;4354:3;4359;:11;;:16;4371:3;4359:16;;;;;;;;;;;;4346:30;;;;;4192:191;;;;;:::o;4923:118:20:-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;;5009:25;;4923:118;;;;:::o;4264:129::-;4337:4;4385:1;4360:3;:14;;:21;4375:5;4360:21;;;;;;;;;;;;:26;;4353:33;;4264:129;;;;:::o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;;;;;;;;;;;:::i;:::-;;;;;;;;4464:108;4381:197;;:::o;7270:387::-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7509:4;7475:1;:8;;:14;7484:4;7475:14;;;;;;;;;;;:22;;:31;7498:7;7475:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;7559:12;:10;:12::i;:::-;7532:40;;7550:7;7532:40;;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;7270:387;;;;;:::o;1099:317:36:-;1221:18;1321:4;1313:6;1309:17;1305:22;1296:7;1292:36;1278:50;;1393:4;1386:5;1382:16;1374:6;1370:29;1358:10;1355:45;1341:59;;1099:317;;;;;;:::o;2901:174:19:-;2993:4;3028:5;3009:3;:11;;:16;3021:3;3009:16;;;;;;;;;;;:24;;;;3050:18;3064:3;3050;:9;;:13;;:18;;;;:::i;:::-;3043:25;;2901:174;;;;;:::o;3486:140::-;3573:4;3596:23;3615:3;3596;:9;;:18;;:23;;;;:::i;:::-;3589:30;;3486:140;;;;:::o;4973:274::-;5055:7;5074:13;5090:3;:11;;:16;5102:3;5090:16;;;;;;;;;;;;5074:32;;5129:1;5120:10;;:5;:10;:33;;;;;5135:18;5144:3;5149;5135:8;:18::i;:::-;5134:19;5120:33;5116:103;;;5204:3;5176:32;;;;;;;;;;;:::i;:::-;;;;;;;;5116:103;5235:5;5228:12;;;4973:274;;;;:::o;2241:406:20:-;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;2362:3;:11;;2379:5;2362:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2544:3;:11;;:18;;;;2520:3;:14;;:21;2535:5;2520:21;;;;;;;;;;;:42;;;;2583:4;2576:11;;;;2320:321;2625:5;2618:12;;2241:406;;;;;:::o;5797:130:19:-;5867:16;5902:18;:3;:9;;:16;:18::i;:::-;5895:25;;5797:130;;;:::o;1671:213:33:-;1727:7;595:6:29;230:3;1796:42:33;;1804:7;1796:16;;:42;;1795:72;;;;;:::i;:::-;;;230:3:29;273:17;;:1;:17;;1777:90:33;1770:97;;1671:213;;;:::o;2046:156::-;2101:6;563:7;2165:2;2157:11;;2150:35;2143:42;;2046:156;;;:::o;4085:3600:38:-;4142:14;4168:11;4189:12;4221:1;4216;:6;4212:34;;230:3:29;273:17;;:1;:17;;4224:22:38;;;;;;4212:34;4288:1;4280:9;;4315:1;4309:4;4305:12;4302:109;;;4351:4;4348:1;4344:12;4336:20;;4390:6;4383:14;4373:24;;4302:109;4442:8;4435:4;:15;4431:3060;;;230:3:29;273:17;;:1;:17;;4466:24:38;;4546:1;4573:34;4570:1;4567:41;4564:161;;;4654:7;4650:1;4646:6;4642:20;4631:31;;4700:6;4693:14;4683:24;;4564:161;4756:3;4750:4;4746:14;4743:62;;;4794:7;4786:6;4782:20;4777:3;4773:30;4763:40;;4743:62;4855:7;4846;4842:21;4837:3;4833:31;4822:42;;4894:3;4888:4;4884:14;4881:62;;;4932:7;4924:6;4920:20;4915:3;4911:30;4901:40;;4881:62;4993:7;4984;4980:21;4975:3;4971:31;4960:42;;5032:3;5026:4;5022:14;5019:62;;;5070:7;5062:6;5058:20;5053:3;5049:30;5039:40;;5019:62;5131:7;5122;5118:21;5113:3;5109:31;5098:42;;5170:3;5164:4;5160:14;5157:62;;;5208:7;5200:6;5196:20;5191:3;5187:30;5177:40;;5157:62;5269:7;5260;5256:21;5251:3;5247:31;5236:42;;5308:4;5302;5298:15;5295:63;;;5347:7;5339:6;5335:20;5330:3;5326:30;5316:40;;5295:63;5408:7;5399;5395:21;5390:3;5386:31;5375:42;;5447:4;5441;5437:15;5434:63;;;5486:7;5478:6;5474:20;5469:3;5465:30;5455:40;;5434:63;5547:7;5538;5534:21;5529:3;5525:31;5514:42;;5586:4;5580;5576:15;5573:63;;;5625:7;5617:6;5613:20;5608:3;5604:30;5594:40;;5573:63;5686:7;5677;5673:21;5668:3;5664:31;5653:42;;5725:4;5719;5715:15;5712:63;;;5764:7;5756:6;5752:20;5747:3;5743:30;5733:40;;5712:63;5825:7;5816;5812:21;5807:3;5803:31;5792:42;;5864:5;5858:4;5854:16;5851:64;;;5904:7;5896:6;5892:20;5887:3;5883:30;5873:40;;5851:64;5965:7;5956;5952:21;5947:3;5943:31;5932:42;;6004:5;5998:4;5994:16;5991:64;;;6044:7;6036:6;6032:20;6027:3;6023:30;6013:40;;5991:64;6105:7;6096;6092:21;6087:3;6083:31;6072:42;;6144:5;6138:4;6134:16;6131:64;;;6184:7;6176:6;6172:20;6167:3;6163:30;6153:40;;6131:64;6245:7;6236;6232:21;6227:3;6223:31;6212:42;;6284:5;6278:4;6274:16;6271:64;;;6324:7;6316:6;6312:20;6307:3;6303:30;6293:40;;6271:64;6385:7;6376;6372:21;6367:3;6363:31;6352:42;;6424:6;6418:4;6414:17;6411:65;;;6465:7;6457:6;6453:20;6448:3;6444:30;6434:40;;6411:65;6526:7;6517;6513:21;6508:3;6504:31;6493:42;;6565:6;6559:4;6555:17;6552:65;;;6606:7;6598:6;6594:20;6589:3;6585:30;6575:40;;6552:65;6667:7;6658;6654:21;6649:3;6645:31;6634:42;;6706:6;6700:4;6696:17;6693:65;;;6747:7;6739:6;6735:20;6730:3;6726:30;6716:40;;6693:65;6808:7;6799;6795:21;6790:3;6786:31;6775:42;;6847:6;6841:4;6837:17;6834:65;;;6888:7;6880:6;6876:20;6871:3;6867:30;6857:40;;6834:65;6949:7;6940;6936:21;6931:3;6927:31;6916:42;;6988:7;6982:4;6978:18;6975:66;;;7030:7;7022:6;7018:20;7013:3;7009:30;6999:40;;6975:66;7091:7;7082;7078:21;7073:3;7069:31;7058:42;;7130:7;7124:4;7120:18;7117:66;;;7172:7;7164:6;7160:20;7155:3;7151:30;7141:40;;7117:66;7233:7;7224;7220:21;7215:3;7211:31;7200:42;;7272:7;7266:4;7262:18;7259:66;;;7314:7;7306:6;7302:20;7297:3;7293:30;7283:40;;7259:66;7375:7;7366;7362:21;7357:3;7353:31;7342:42;;7414:7;7408:4;7404:18;7401:66;;;7456:7;7448:6;7444:20;7439:3;7435:30;7425:40;;7401:66;4513:2968;4431:3060;7571:1;7561:6;:11;7557:59;;7611:1;7614;7581:35;;;;;;;;;;;;:::i;:::-;;;;;;;;7557:59;7634:6;:44;;7672:6;7634:44;;;7663:6;7643:17;:26;;;;:::i;:::-;7634:44;7627:51;;;;4085:3600;;;;;:::o;4539:188:36:-;4617:12;4699:11;4689:7;4681:6;4677:20;4673:38;4664:47;;4539:188;;;;:::o;3596:::-;3674:12;3756:11;3746:7;3738:6;3734:20;3730:38;3721:47;;3596:188;;;;:::o;4089:::-;4167:12;4249:11;4239:7;4231:6;4227:20;4223:38;4214:47;;4089:188;;;;:::o;5482:::-;5560:12;5642:11;5632:7;5624:6;5620:20;5616:38;5607:47;;5482:188;;;;:::o;5032:::-;5110:12;5192:11;5182:7;5174:6;5170:20;5166:38;5157:47;;5032:188;;;;:::o;4474:107:20:-;4530:7;4556:3;:11;;:18;;;;4549:25;;4474:107;;;:::o;3774:248:2:-;3847:24;3874:20;:18;:20::i;:::-;3847:47;;3904:16;3923:1;:8;;;;;;;;;;;;3904:27;;3952:8;3941:1;:8;;;:19;;;;;;;;;;;;;;;;;;4006:8;3975:40;;3996:8;3975:40;;;;;;;;;;;;3837:185;;3774:248;:::o;7084:141:3:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;;;;;;;;;;;;;7146:73;7084:141::o;1980:235:2:-;6931:20:3;:18;:20::i;:::-;2100:1:2::1;2076:26;;:12;:26;;::::0;2072:95:::1;;2153:1;2125:31;;;;;;;;;;;:::i;:::-;;;;;;;;2072:95;2176:32;2195:12;2176:18;:32::i;:::-;1980:235:::0;:::o;2815:1368:20:-;2881:4;2991:16;3010:3;:14;;:21;3025:5;3010:21;;;;;;;;;;;;2991:40;;3058:1;3046:8;:13;3042:1135;;3413:18;3445:1;3434:8;:12;;;;:::i;:::-;3413:33;;3460:17;3501:1;3480:3;:11;;:18;;;;:22;;;;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;:35;;;;3872:8;3844:3;:14;;:25;3859:9;3844:25;;;;;;;;;;;:36;;;;3546:349;3517:378;3973:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;3042:1135;4161:5;4154:12;;;2815:1368;;;;;:::o;3243:164:19:-;3323:4;3346:3;:11;;:16;3358:3;3346:16;;;;;;;;;;;3339:23;;;3379:21;3396:3;3379;:9;;:16;;:21;;;;:::i;:::-;3372:28;;3243:164;;;;:::o;6650:115:20:-;6713:7;6739:19;6747:3;:10;;6739:7;:19::i;:::-;6732:26;;6650:115;;;:::o;7107:129::-;7181:7;7207:22;7211:3;:10;;7223:5;7207:3;:22::i;:::-;7200:29;;7107:129;;;;:::o;5930:123::-;6000:4;6023:23;6028:3;:10;;6040:5;6023:4;:23::i;:::-;6016:30;;5930:123;;;;:::o;6431:138::-;6511:4;6534:28;6544:3;:10;;6556:5;6534:9;:28::i;:::-;6527:35;;6431:138;;;;:::o;7776:300::-;7839:16;7867:22;7892:19;7900:3;:10;;7892:7;:19::i;:::-;7867:44;;7921:23;8031:5;8021:15;;8063:6;8056:13;;;;7776:300;;;:::o;8487:120:3:-;8537:4;8560:26;:24;:26::i;:::-;:40;;;;;;;;;;;;8553:47;;8487:120;:::o;6221:129:20:-;6294:4;6317:26;6325:3;:10;;6337:5;6317:7;:26::i;:::-;6310:33;;6221:129;;;;:::o;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:40:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:114::-;1585:6;1619:5;1613:12;1603:22;;1518:114;;;:::o;1638:184::-;1737:11;1771:6;1766:3;1759:19;1811:4;1806:3;1802:14;1787:29;;1638:184;;;;:::o;1828:132::-;1895:4;1918:3;1910:11;;1948:4;1943:3;1939:14;1931:22;;1828:132;;;:::o;1966:77::-;2003:7;2032:5;2021:16;;1966:77;;;:::o;2049:108::-;2126:24;2144:5;2126:24;:::i;:::-;2121:3;2114:37;2049:108;;:::o;2163:179::-;2232:10;2253:46;2295:3;2287:6;2253:46;:::i;:::-;2331:4;2326:3;2322:14;2308:28;;2163:179;;;;:::o;2348:113::-;2418:4;2450;2445:3;2441:14;2433:22;;2348:113;;;:::o;2497:732::-;2616:3;2645:54;2693:5;2645:54;:::i;:::-;2715:86;2794:6;2789:3;2715:86;:::i;:::-;2708:93;;2825:56;2875:5;2825:56;:::i;:::-;2904:7;2935:1;2920:284;2945:6;2942:1;2939:13;2920:284;;;3021:6;3015:13;3048:63;3107:3;3092:13;3048:63;:::i;:::-;3041:70;;3134:60;3187:6;3134:60;:::i;:::-;3124:70;;2980:224;2967:1;2964;2960:9;2955:14;;2920:284;;;2924:14;3220:3;3213:10;;2621:608;;;2497:732;;;;:::o;3235:373::-;3378:4;3416:2;3405:9;3401:18;3393:26;;3465:9;3459:4;3455:20;3451:1;3440:9;3436:17;3429:47;3493:108;3596:4;3587:6;3493:108;:::i;:::-;3485:116;;3235:373;;;;:::o;3614:122::-;3687:24;3705:5;3687:24;:::i;:::-;3680:5;3677:35;3667:63;;3726:1;3723;3716:12;3667:63;3614:122;:::o;3742:139::-;3788:5;3826:6;3813:20;3804:29;;3842:33;3869:5;3842:33;:::i;:::-;3742:139;;;;:::o;3887:329::-;3946:6;3995:2;3983:9;3974:7;3970:23;3966:32;3963:119;;;4001:79;;:::i;:::-;3963:119;4121:1;4146:53;4191:7;4182:6;4171:9;4167:22;4146:53;:::i;:::-;4136:63;;4092:117;3887:329;;;;:::o;4222:126::-;4259:7;4299:42;4292:5;4288:54;4277:65;;4222:126;;;:::o;4354:60::-;4382:3;4403:5;4396:12;;4354:60;;;:::o;4420:142::-;4470:9;4503:53;4521:34;4530:24;4548:5;4530:24;:::i;:::-;4521:34;:::i;:::-;4503:53;:::i;:::-;4490:66;;4420:142;;;:::o;4568:126::-;4618:9;4651:37;4682:5;4651:37;:::i;:::-;4638:50;;4568:126;;;:::o;4700:141::-;4765:9;4798:37;4829:5;4798:37;:::i;:::-;4785:50;;4700:141;;;:::o;4847:161::-;4949:52;4995:5;4949:52;:::i;:::-;4944:3;4937:65;4847:161;;:::o;5014:252::-;5122:4;5160:2;5149:9;5145:18;5137:26;;5173:86;5256:1;5245:9;5241:17;5232:6;5173:86;:::i;:::-;5014:252;;;;:::o;5272:96::-;5309:7;5338:24;5356:5;5338:24;:::i;:::-;5327:35;;5272:96;;;:::o;5374:111::-;5426:7;5455:24;5473:5;5455:24;:::i;:::-;5444:35;;5374:111;;;:::o;5491:152::-;5579:39;5612:5;5579:39;:::i;:::-;5572:5;5569:50;5559:78;;5633:1;5630;5623:12;5559:78;5491:152;:::o;5649:169::-;5710:5;5748:6;5735:20;5726:29;;5764:48;5806:5;5764:48;:::i;:::-;5649:169;;;;:::o;5824:89::-;5860:7;5900:6;5893:5;5889:18;5878:29;;5824:89;;;:::o;5919:120::-;5991:23;6008:5;5991:23;:::i;:::-;5984:5;5981:34;5971:62;;6029:1;6026;6019:12;5971:62;5919:120;:::o;6045:137::-;6090:5;6128:6;6115:20;6106:29;;6144:32;6170:5;6144:32;:::i;:::-;6045:137;;;;:::o;6188:91::-;6224:7;6264:8;6257:5;6253:20;6242:31;;6188:91;;;:::o;6285:120::-;6357:23;6374:5;6357:23;:::i;:::-;6350:5;6347:34;6337:62;;6395:1;6392;6385:12;6337:62;6285:120;:::o;6411:137::-;6456:5;6494:6;6481:20;6472:29;;6510:32;6536:5;6510:32;:::i;:::-;6411:137;;;;:::o;6554:1685::-;6716:6;6724;6732;6740;6748;6756;6764;6772;6780;6788;6837:3;6825:9;6816:7;6812:23;6808:33;6805:120;;;6844:79;;:::i;:::-;6805:120;6964:1;6989:68;7049:7;7040:6;7029:9;7025:22;6989:68;:::i;:::-;6979:78;;6935:132;7106:2;7132:68;7192:7;7183:6;7172:9;7168:22;7132:68;:::i;:::-;7122:78;;7077:133;7249:2;7275:52;7319:7;7310:6;7299:9;7295:22;7275:52;:::i;:::-;7265:62;;7220:117;7376:2;7402:52;7446:7;7437:6;7426:9;7422:22;7402:52;:::i;:::-;7392:62;;7347:117;7503:3;7530:52;7574:7;7565:6;7554:9;7550:22;7530:52;:::i;:::-;7520:62;;7474:118;7631:3;7658:52;7702:7;7693:6;7682:9;7678:22;7658:52;:::i;:::-;7648:62;;7602:118;7759:3;7786:52;7830:7;7821:6;7810:9;7806:22;7786:52;:::i;:::-;7776:62;;7730:118;7887:3;7914:52;7958:7;7949:6;7938:9;7934:22;7914:52;:::i;:::-;7904:62;;7858:118;8015:3;8042:52;8086:7;8077:6;8066:9;8062:22;8042:52;:::i;:::-;8032:62;;7986:118;8143:3;8170:52;8214:7;8205:6;8194:9;8190:22;8170:52;:::i;:::-;8160:62;;8114:118;6554:1685;;;;;;;;;;;;;:::o;8245:77::-;8282:7;8311:5;8300:16;;8245:77;;;:::o;8328:118::-;8415:24;8433:5;8415:24;:::i;:::-;8410:3;8403:37;8328:118;;:::o;8452:222::-;8545:4;8583:2;8572:9;8568:18;8560:26;;8596:71;8664:1;8653:9;8649:17;8640:6;8596:71;:::i;:::-;8452:222;;;;:::o;8680:122::-;8753:24;8771:5;8753:24;:::i;:::-;8746:5;8743:35;8733:63;;8792:1;8789;8782:12;8733:63;8680:122;:::o;8808:139::-;8854:5;8892:6;8879:20;8870:29;;8908:33;8935:5;8908:33;:::i;:::-;8808:139;;;;:::o;8953:329::-;9012:6;9061:2;9049:9;9040:7;9036:23;9032:32;9029:119;;;9067:79;;:::i;:::-;9029:119;9187:1;9212:53;9257:7;9248:6;9237:9;9233:22;9212:53;:::i;:::-;9202:63;;9158:117;8953:329;;;;:::o;9288:359::-;9362:6;9411:2;9399:9;9390:7;9386:23;9382:32;9379:119;;;9417:79;;:::i;:::-;9379:119;9537:1;9562:68;9622:7;9613:6;9602:9;9598:22;9562:68;:::i;:::-;9552:78;;9508:132;9288:359;;;;:::o;9653:677::-;9759:6;9767;9775;9824:2;9812:9;9803:7;9799:23;9795:32;9792:119;;;9830:79;;:::i;:::-;9792:119;9950:1;9975:68;10035:7;10026:6;10015:9;10011:22;9975:68;:::i;:::-;9965:78;;9921:132;10092:2;10118:68;10178:7;10169:6;10158:9;10154:22;10118:68;:::i;:::-;10108:78;;10063:133;10235:2;10261:52;10305:7;10296:6;10285:9;10281:22;10261:52;:::i;:::-;10251:62;;10206:117;9653:677;;;;;:::o;10336:122::-;10409:24;10427:5;10409:24;:::i;:::-;10402:5;10399:35;10389:63;;10448:1;10445;10438:12;10389:63;10336:122;:::o;10464:139::-;10510:5;10548:6;10535:20;10526:29;;10564:33;10591:5;10564:33;:::i;:::-;10464:139;;;;:::o;10609:474::-;10677:6;10685;10734:2;10722:9;10713:7;10709:23;10705:32;10702:119;;;10740:79;;:::i;:::-;10702:119;10860:1;10885:53;10930:7;10921:6;10910:9;10906:22;10885:53;:::i;:::-;10875:63;;10831:117;10987:2;11013:53;11058:7;11049:6;11038:9;11034:22;11013:53;:::i;:::-;11003:63;;10958:118;10609:474;;;;;:::o;11089:116::-;11159:21;11174:5;11159:21;:::i;:::-;11152:5;11149:32;11139:60;;11195:1;11192;11185:12;11139:60;11089:116;:::o;11211:133::-;11254:5;11292:6;11279:20;11270:29;;11308:30;11332:5;11308:30;:::i;:::-;11211:133;;;;:::o;11350:1473::-;11470:6;11478;11486;11494;11502;11510;11518;11526;11534;11583:3;11571:9;11562:7;11558:23;11554:33;11551:120;;;11590:79;;:::i;:::-;11551:120;11710:1;11735:52;11779:7;11770:6;11759:9;11755:22;11735:52;:::i;:::-;11725:62;;11681:116;11836:2;11862:52;11906:7;11897:6;11886:9;11882:22;11862:52;:::i;:::-;11852:62;;11807:117;11963:2;11989:52;12033:7;12024:6;12013:9;12009:22;11989:52;:::i;:::-;11979:62;;11934:117;12090:2;12116:52;12160:7;12151:6;12140:9;12136:22;12116:52;:::i;:::-;12106:62;;12061:117;12217:3;12244:52;12288:7;12279:6;12268:9;12264:22;12244:52;:::i;:::-;12234:62;;12188:118;12345:3;12372:52;12416:7;12407:6;12396:9;12392:22;12372:52;:::i;:::-;12362:62;;12316:118;12473:3;12500:52;12544:7;12535:6;12524:9;12520:22;12500:52;:::i;:::-;12490:62;;12444:118;12601:3;12628:52;12672:7;12663:6;12652:9;12648:22;12628:52;:::i;:::-;12618:62;;12572:118;12729:3;12756:50;12798:7;12789:6;12778:9;12774:22;12756:50;:::i;:::-;12746:60;;12700:116;11350:1473;;;;;;;;;;;:::o;12829:117::-;12938:1;12935;12928:12;12952:117;13061:1;13058;13051:12;13075:117;13184:1;13181;13174:12;13211:552;13268:8;13278:6;13328:3;13321:4;13313:6;13309:17;13305:27;13295:122;;13336:79;;:::i;:::-;13295:122;13449:6;13436:20;13426:30;;13479:18;13471:6;13468:30;13465:117;;;13501:79;;:::i;:::-;13465:117;13615:4;13607:6;13603:17;13591:29;;13669:3;13661:4;13653:6;13649:17;13639:8;13635:32;13632:41;13629:128;;;13676:79;;:::i;:::-;13629:128;13211:552;;;;;:::o;13769:1167::-;13904:6;13912;13920;13928;13936;13944;13993:3;13981:9;13972:7;13968:23;13964:33;13961:120;;;14000:79;;:::i;:::-;13961:120;14120:1;14145:68;14205:7;14196:6;14185:9;14181:22;14145:68;:::i;:::-;14135:78;;14091:132;14262:2;14288:68;14348:7;14339:6;14328:9;14324:22;14288:68;:::i;:::-;14278:78;;14233:133;14405:2;14431:52;14475:7;14466:6;14455:9;14451:22;14431:52;:::i;:::-;14421:62;;14376:117;14532:2;14558:53;14603:7;14594:6;14583:9;14579:22;14558:53;:::i;:::-;14548:63;;14503:118;14688:3;14677:9;14673:19;14660:33;14720:18;14712:6;14709:30;14706:117;;;14742:79;;:::i;:::-;14706:117;14855:64;14911:7;14902:6;14891:9;14887:22;14855:64;:::i;:::-;14837:82;;;;14631:298;13769:1167;;;;;;;;:::o;14942:112::-;14995:7;15024:24;15042:5;15024:24;:::i;:::-;15013:35;;14942:112;;;:::o;15060:154::-;15149:40;15183:5;15149:40;:::i;:::-;15142:5;15139:51;15129:79;;15204:1;15201;15194:12;15129:79;15060:154;:::o;15220:171::-;15282:5;15320:6;15307:20;15298:29;;15336:49;15379:5;15336:49;:::i;:::-;15220:171;;;;:::o;15397:361::-;15472:6;15521:2;15509:9;15500:7;15496:23;15492:32;15489:119;;;15527:79;;:::i;:::-;15489:119;15647:1;15672:69;15733:7;15724:6;15713:9;15709:22;15672:69;:::i;:::-;15662:79;;15618:133;15397:361;;;;:::o;15764:118::-;15851:24;15869:5;15851:24;:::i;:::-;15846:3;15839:37;15764:118;;:::o;15888:222::-;15981:4;16019:2;16008:9;16004:18;15996:26;;16032:71;16100:1;16089:9;16085:17;16076:6;16032:71;:::i;:::-;15888:222;;;;:::o;16116:466::-;16180:6;16188;16237:2;16225:9;16216:7;16212:23;16208:32;16205:119;;;16243:79;;:::i;:::-;16205:119;16363:1;16388:52;16432:7;16423:6;16412:9;16408:22;16388:52;:::i;:::-;16378:62;;16334:116;16489:2;16515:50;16557:7;16548:6;16537:9;16533:22;16515:50;:::i;:::-;16505:60;;16460:115;16116:466;;;;;:::o;16588:118::-;16675:24;16693:5;16675:24;:::i;:::-;16670:3;16663:37;16588:118;;:::o;16712:222::-;16805:4;16843:2;16832:9;16828:18;16820:26;;16856:71;16924:1;16913:9;16909:17;16900:6;16856:71;:::i;:::-;16712:222;;;;:::o;16940:821::-;17054:6;17062;17070;17078;17127:3;17115:9;17106:7;17102:23;17098:33;17095:120;;;17134:79;;:::i;:::-;17095:120;17254:1;17279:68;17339:7;17330:6;17319:9;17315:22;17279:68;:::i;:::-;17269:78;;17225:132;17396:2;17422:68;17482:7;17473:6;17462:9;17458:22;17422:68;:::i;:::-;17412:78;;17367:133;17539:2;17565:52;17609:7;17600:6;17589:9;17585:22;17565:52;:::i;:::-;17555:62;;17510:117;17666:2;17692:52;17736:7;17727:6;17716:9;17712:22;17692:52;:::i;:::-;17682:62;;17637:117;16940:821;;;;;;;:::o;17767:142::-;17833:9;17866:37;17897:5;17866:37;:::i;:::-;17853:50;;17767:142;;;:::o;17915:163::-;18018:53;18065:5;18018:53;:::i;:::-;18013:3;18006:66;17915:163;;:::o;18084:254::-;18193:4;18231:2;18220:9;18216:18;18208:26;;18244:87;18328:1;18317:9;18313:17;18304:6;18244:87;:::i;:::-;18084:254;;;;:::o;18344:534::-;18442:6;18450;18499:2;18487:9;18478:7;18474:23;18470:32;18467:119;;;18505:79;;:::i;:::-;18467:119;18625:1;18650:68;18710:7;18701:6;18690:9;18686:22;18650:68;:::i;:::-;18640:78;;18596:132;18767:2;18793:68;18853:7;18844:6;18833:9;18829:22;18793:68;:::i;:::-;18783:78;;18738:133;18344:534;;;;;:::o;18884:149::-;18986:6;19020:5;19014:12;19004:22;;18884:149;;;:::o;19039:219::-;19173:11;19207:6;19202:3;19195:19;19247:4;19242:3;19238:14;19223:29;;19039:219;;;;:::o;19264:167::-;19366:4;19389:3;19381:11;;19419:4;19414:3;19410:14;19402:22;;19264:167;;;:::o;19437:105::-;19512:23;19529:5;19512:23;:::i;:::-;19507:3;19500:36;19437:105;;:::o;19548:153::-;19641:53;19688:5;19641:53;:::i;:::-;19636:3;19629:66;19548:153;;:::o;19707:99::-;19778:21;19793:5;19778:21;:::i;:::-;19773:3;19766:34;19707:99;;:::o;19894:895::-;20051:4;20046:3;20042:14;20141:4;20134:5;20130:16;20124:23;20160:61;20215:4;20210:3;20206:14;20192:12;20160:61;:::i;:::-;20066:165;20315:4;20308:5;20304:16;20298:23;20334:79;20407:4;20402:3;20398:14;20384:12;20334:79;:::i;:::-;20241:182;20515:4;20508:5;20504:16;20498:23;20534:57;20585:4;20580:3;20576:14;20562:12;20534:57;:::i;:::-;20433:168;20696:4;20689:5;20685:16;20679:23;20715:57;20766:4;20761:3;20757:14;20743:12;20715:57;:::i;:::-;20611:171;20020:769;19894:895;;:::o;20795:319::-;20934:10;20955:116;21067:3;21059:6;20955:116;:::i;:::-;21103:4;21098:3;21094:14;21080:28;;20795:319;;;;:::o;21120:148::-;21225:4;21257;21252:3;21248:14;21240:22;;21120:148;;;:::o;21360:1012::-;21549:3;21578:89;21661:5;21578:89;:::i;:::-;21683:121;21797:6;21792:3;21683:121;:::i;:::-;21676:128;;21828:91;21913:5;21828:91;:::i;:::-;21942:7;21973:1;21958:389;21983:6;21980:1;21977:13;21958:389;;;22059:6;22053:13;22086:133;22215:3;22200:13;22086:133;:::i;:::-;22079:140;;22242:95;22330:6;22242:95;:::i;:::-;22232:105;;22018:329;22005:1;22002;21998:9;21993:14;;21958:389;;;21962:14;22363:3;22356:10;;21554:818;;;21360:1012;;;;:::o;22378:513::-;22591:4;22629:2;22618:9;22614:18;22606:26;;22678:9;22672:4;22668:20;22664:1;22653:9;22649:17;22642:47;22706:178;22879:4;22870:6;22706:178;:::i;:::-;22698:186;;22378:513;;;;:::o;22897:817::-;23009:6;23017;23025;23033;23082:3;23070:9;23061:7;23057:23;23053:33;23050:120;;;23089:79;;:::i;:::-;23050:120;23209:1;23234:68;23294:7;23285:6;23274:9;23270:22;23234:68;:::i;:::-;23224:78;;23180:132;23351:2;23377:68;23437:7;23428:6;23417:9;23413:22;23377:68;:::i;:::-;23367:78;;23322:133;23494:2;23520:52;23564:7;23555:6;23544:9;23540:22;23520:52;:::i;:::-;23510:62;;23465:117;23621:2;23647:50;23689:7;23680:6;23669:9;23665:22;23647:50;:::i;:::-;23637:60;;23592:115;22897:817;;;;;;;:::o;23720:679::-;23827:6;23835;23843;23892:2;23880:9;23871:7;23867:23;23863:32;23860:119;;;23898:79;;:::i;:::-;23860:119;24018:1;24043:68;24103:7;24094:6;24083:9;24079:22;24043:68;:::i;:::-;24033:78;;23989:132;24160:2;24186:68;24246:7;24237:6;24226:9;24222:22;24186:68;:::i;:::-;24176:78;;24131:133;24303:2;24329:53;24374:7;24365:6;24354:9;24350:22;24329:53;:::i;:::-;24319:63;;24274:118;23720:679;;;;;:::o;24487:905::-;24654:4;24649:3;24645:14;24744:4;24737:5;24733:16;24727:23;24763:61;24818:4;24813:3;24809:14;24795:12;24763:61;:::i;:::-;24669:165;24918:4;24911:5;24907:16;24901:23;24937:79;25010:4;25005:3;25001:14;24987:12;24937:79;:::i;:::-;24844:182;25118:4;25111:5;25107:16;25101:23;25137:57;25188:4;25183:3;25179:14;25165:12;25137:57;:::i;:::-;25036:168;25299:4;25292:5;25288:16;25282:23;25318:57;25369:4;25364:3;25360:14;25346:12;25318:57;:::i;:::-;25214:171;24623:769;24487:905;;:::o;25398:363::-;25561:4;25599:3;25588:9;25584:19;25576:27;;25613:141;25751:1;25740:9;25736:17;25727:6;25613:141;:::i;:::-;25398:363;;;;:::o;25767:985::-;26050:4;26088:3;26077:9;26073:19;26065:27;;26102:71;26170:1;26159:9;26155:17;26146:6;26102:71;:::i;:::-;26183:72;26251:2;26240:9;26236:18;26227:6;26183:72;:::i;:::-;26265;26333:2;26322:9;26318:18;26309:6;26265:72;:::i;:::-;26347;26415:2;26404:9;26400:18;26391:6;26347:72;:::i;:::-;26429:73;26497:3;26486:9;26482:19;26473:6;26429:73;:::i;:::-;26512;26580:3;26569:9;26565:19;26556:6;26512:73;:::i;:::-;26595;26663:3;26652:9;26648:19;26639:6;26595:73;:::i;:::-;26678:67;26740:3;26729:9;26725:19;26716:6;26678:67;:::i;:::-;25767:985;;;;;;;;;;;:::o;26758:765::-;26844:6;26852;26860;26868;26917:3;26905:9;26896:7;26892:23;26888:33;26885:120;;;26924:79;;:::i;:::-;26885:120;27044:1;27069:53;27114:7;27105:6;27094:9;27090:22;27069:53;:::i;:::-;27059:63;;27015:117;27171:2;27197:53;27242:7;27233:6;27222:9;27218:22;27197:53;:::i;:::-;27187:63;;27142:118;27299:2;27325:53;27370:7;27361:6;27350:9;27346:22;27325:53;:::i;:::-;27315:63;;27270:118;27427:2;27453:53;27498:7;27489:6;27478:9;27474:22;27453:53;:::i;:::-;27443:63;;27398:118;26758:765;;;;;;;:::o;27529:327::-;27587:6;27636:2;27624:9;27615:7;27611:23;27607:32;27604:119;;;27642:79;;:::i;:::-;27604:119;27762:1;27787:52;27831:7;27822:6;27811:9;27807:22;27787:52;:::i;:::-;27777:62;;27733:116;27529:327;;;;:::o;27862:329::-;27921:6;27970:2;27958:9;27949:7;27945:23;27941:32;27938:119;;;27976:79;;:::i;:::-;27938:119;28096:1;28121:53;28166:7;28157:6;28146:9;28142:22;28121:53;:::i;:::-;28111:63;;28067:117;27862:329;;;;:::o;28197:180::-;28245:77;28242:1;28235:88;28342:4;28339:1;28332:15;28366:4;28363:1;28356:15;28383:180;28431:77;28428:1;28421:88;28528:4;28525:1;28518:15;28552:4;28549:1;28542:15;28569:180;28617:77;28614:1;28607:88;28714:4;28711:1;28704:15;28738:4;28735:1;28728:15;28755:233;28794:3;28817:24;28835:5;28817:24;:::i;:::-;28808:33;;28863:66;28856:5;28853:77;28850:103;;28933:18;;:::i;:::-;28850:103;28980:1;28973:5;28969:13;28962:20;;28755:233;;;:::o;28994:140::-;29043:9;29076:52;29094:33;29103:23;29120:5;29103:23;:::i;:::-;29094:33;:::i;:::-;29076:52;:::i;:::-;29063:65;;28994:140;;;:::o;29140:129::-;29226:36;29256:5;29226:36;:::i;:::-;29221:3;29214:49;29140:129;;:::o;29275:500::-;29453:4;29491:2;29480:9;29476:18;29468:26;;29504:86;29587:1;29576:9;29572:17;29563:6;29504:86;:::i;:::-;29600:87;29683:2;29672:9;29668:18;29659:6;29600:87;:::i;:::-;29697:71;29764:2;29753:9;29749:18;29740:6;29697:71;:::i;:::-;29275:500;;;;;;:::o;29781:115::-;29866:23;29883:5;29866:23;:::i;:::-;29861:3;29854:36;29781:115;;:::o;29902:::-;29987:23;30004:5;29987:23;:::i;:::-;29982:3;29975:36;29902:115;;:::o;30023:858::-;30270:4;30308:3;30297:9;30293:19;30285:27;;30322:69;30388:1;30377:9;30373:17;30364:6;30322:69;:::i;:::-;30401:70;30467:2;30456:9;30452:18;30443:6;30401:70;:::i;:::-;30481;30547:2;30536:9;30532:18;30523:6;30481:70;:::i;:::-;30561;30627:2;30616:9;30612:18;30603:6;30561:70;:::i;:::-;30641:71;30707:3;30696:9;30692:19;30683:6;30641:71;:::i;:::-;30722;30788:3;30777:9;30773:19;30764:6;30722:71;:::i;:::-;30803;30869:3;30858:9;30854:19;30845:6;30803:71;:::i;:::-;30023:858;;;;;;;;;;:::o;30887:220::-;30979:4;31017:2;31006:9;31002:18;30994:26;;31030:70;31097:1;31086:9;31082:17;31073:6;31030:70;:::i;:::-;30887:220;;;;:::o;31113:140::-;31162:9;31195:52;31213:33;31222:23;31239:5;31222:23;:::i;:::-;31213:33;:::i;:::-;31195:52;:::i;:::-;31182:65;;31113:140;;;:::o;31259:129::-;31345:36;31375:5;31345:36;:::i;:::-;31340:3;31333:49;31259:129;;:::o;31394:872::-;31648:4;31686:3;31675:9;31671:19;31663:27;;31700:70;31767:1;31756:9;31752:17;31743:6;31700:70;:::i;:::-;31780:71;31847:2;31836:9;31832:18;31823:6;31780:71;:::i;:::-;31861;31928:2;31917:9;31913:18;31904:6;31861:71;:::i;:::-;31942;32009:2;31998:9;31994:18;31985:6;31942:71;:::i;:::-;32023:72;32090:3;32079:9;32075:19;32066:6;32023:72;:::i;:::-;32105;32172:3;32161:9;32157:19;32148:6;32105:72;:::i;:::-;32187;32254:3;32243:9;32239:19;32230:6;32187:72;:::i;:::-;31394:872;;;;;;;;;;:::o;32272:330::-;32392:4;32430:2;32419:9;32415:18;32407:26;;32443:71;32511:1;32500:9;32496:17;32487:6;32443:71;:::i;:::-;32524;32591:2;32580:9;32576:18;32567:6;32524:71;:::i;:::-;32272:330;;;;;:::o;32608:965::-;32881:4;32919:3;32908:9;32904:19;32896:27;;32933:69;32999:1;32988:9;32984:17;32975:6;32933:69;:::i;:::-;33012:70;33078:2;33067:9;33063:18;33054:6;33012:70;:::i;:::-;33092;33158:2;33147:9;33143:18;33134:6;33092:70;:::i;:::-;33172;33238:2;33227:9;33223:18;33214:6;33172:70;:::i;:::-;33252:71;33318:3;33307:9;33303:19;33294:6;33252:71;:::i;:::-;33333;33399:3;33388:9;33384:19;33375:6;33333:71;:::i;:::-;33414;33480:3;33469:9;33465:19;33456:6;33414:71;:::i;:::-;33495;33561:3;33550:9;33546:19;33537:6;33495:71;:::i;:::-;32608:965;;;;;;;;;;;:::o;33579:94::-;33612:8;33660:5;33656:2;33652:14;33631:35;;33579:94;;;:::o;33679:::-;33718:7;33747:20;33761:5;33747:20;:::i;:::-;33736:31;;33679:94;;;:::o;33779:100::-;33818:7;33847:26;33867:5;33847:26;:::i;:::-;33836:37;;33779:100;;;:::o;33885:200::-;34005:73;34025:52;34071:5;34025:52;:::i;:::-;34005:73;:::i;:::-;34000:3;33993:86;33885:200;;:::o;34091:96::-;34125:8;34174:5;34169:3;34165:15;34144:36;;34091:96;;;:::o;34193:94::-;34231:7;34260:21;34275:5;34260:21;:::i;:::-;34249:32;;34193:94;;;:::o;34293:153::-;34396:43;34415:23;34432:5;34415:23;:::i;:::-;34396:43;:::i;:::-;34391:3;34384:56;34293:153;;:::o;34452:593::-;34648:3;34663:90;34749:3;34740:6;34663:90;:::i;:::-;34778:2;34773:3;34769:12;34762:19;;34791:90;34877:3;34868:6;34791:90;:::i;:::-;34906:2;34901:3;34897:12;34890:19;;34919:73;34988:3;34979:6;34919:73;:::i;:::-;35017:1;35012:3;35008:11;35001:18;;35036:3;35029:10;;34452:593;;;;;;:::o;35051:98::-;35102:6;35136:5;35130:12;35120:22;;35051:98;;;:::o;35155:168::-;35238:11;35272:6;35267:3;35260:19;35312:4;35307:3;35303:14;35288:29;;35155:168;;;;:::o;35329:246::-;35410:1;35420:113;35434:6;35431:1;35428:13;35420:113;;;35519:1;35514:3;35510:11;35504:18;35500:1;35495:3;35491:11;35484:39;35456:2;35453:1;35449:10;35444:15;;35420:113;;;35567:1;35558:6;35553:3;35549:16;35542:27;35391:184;35329:246;;;:::o;35581:102::-;35622:6;35673:2;35669:7;35664:2;35657:5;35653:14;35649:28;35639:38;;35581:102;;;:::o;35689:373::-;35775:3;35803:38;35835:5;35803:38;:::i;:::-;35857:70;35920:6;35915:3;35857:70;:::i;:::-;35850:77;;35936:65;35994:6;35989:3;35982:4;35975:5;35971:16;35936:65;:::i;:::-;36026:29;36048:6;36026:29;:::i;:::-;36021:3;36017:39;36010:46;;35779:283;35689:373;;;;:::o;36068:807::-;36319:4;36357:3;36346:9;36342:19;36334:27;;36371:71;36439:1;36428:9;36424:17;36415:6;36371:71;:::i;:::-;36452:87;36535:2;36524:9;36520:18;36511:6;36452:87;:::i;:::-;36549;36632:2;36621:9;36617:18;36608:6;36549:87;:::i;:::-;36646:70;36712:2;36701:9;36697:18;36688:6;36646:70;:::i;:::-;36764:9;36758:4;36754:20;36748:3;36737:9;36733:19;36726:49;36792:76;36863:4;36854:6;36792:76;:::i;:::-;36784:84;;36068:807;;;;;;;;:::o;36881:147::-;36982:11;37019:3;37004:18;;36881:147;;;;:::o;37034:386::-;37138:3;37166:38;37198:5;37166:38;:::i;:::-;37220:88;37301:6;37296:3;37220:88;:::i;:::-;37213:95;;37317:65;37375:6;37370:3;37363:4;37356:5;37352:16;37317:65;:::i;:::-;37407:6;37402:3;37398:16;37391:23;;37142:278;37034:386;;;;:::o;37426:427::-;37602:3;37624:93;37713:3;37704:6;37624:93;:::i;:::-;37617:100;;37734:93;37823:3;37814:6;37734:93;:::i;:::-;37727:100;;37844:3;37837:10;;37426:427;;;;;:::o;37859:194::-;37899:4;37919:20;37937:1;37919:20;:::i;:::-;37914:25;;37953:20;37971:1;37953:20;:::i;:::-;37948:25;;37997:1;37994;37990:9;37982:17;;38021:1;38015:4;38012:11;38009:37;;;38026:18;;:::i;:::-;38009:37;37859:194;;;;:::o;38059:364::-;38196:4;38234:2;38223:9;38219:18;38211:26;;38247:87;38331:1;38320:9;38316:17;38307:6;38247:87;:::i;:::-;38344:72;38412:2;38401:9;38397:18;38388:6;38344:72;:::i;:::-;38059:364;;;;;:::o;38429:332::-;38550:4;38588:2;38577:9;38573:18;38565:26;;38601:71;38669:1;38658:9;38654:17;38645:6;38601:71;:::i;:::-;38682:72;38750:2;38739:9;38735:18;38726:6;38682:72;:::i;:::-;38429:332;;;;;:::o;38767:85::-;38812:7;38841:5;38830:16;;38767:85;;;:::o;38858:158::-;38916:9;38949:61;38967:42;38976:32;39002:5;38976:32;:::i;:::-;38967:42;:::i;:::-;38949:61;:::i;:::-;38936:74;;38858:158;;;:::o;39022:147::-;39117:45;39156:5;39117:45;:::i;:::-;39112:3;39105:58;39022:147;;:::o;39175:348::-;39304:4;39342:2;39331:9;39327:18;39319:26;;39355:79;39431:1;39420:9;39416:17;39407:6;39355:79;:::i;:::-;39444:72;39512:2;39501:9;39497:18;39488:6;39444:72;:::i;:::-;39175:348;;;;;:::o;39529:85::-;39574:7;39603:5;39592:16;;39529:85;;;:::o;39620:101::-;39656:7;39696:18;39689:5;39685:30;39674:41;;39620:101;;;:::o;39727:156::-;39784:9;39817:60;39834:42;39843:32;39869:5;39843:32;:::i;:::-;39834:42;:::i;:::-;39817:60;:::i;:::-;39804:73;;39727:156;;;:::o;39889:145::-;39983:44;40021:5;39983:44;:::i;:::-;39978:3;39971:57;39889:145;;:::o;40040:236::-;40140:4;40178:2;40167:9;40163:18;40155:26;;40191:78;40266:1;40255:9;40251:17;40242:6;40191:78;:::i;:::-;40040:236;;;;:::o;40282:143::-;40339:5;40370:6;40364:13;40355:22;;40386:33;40413:5;40386:33;:::i;:::-;40282:143;;;;:::o;40431:351::-;40501:6;40550:2;40538:9;40529:7;40525:23;40521:32;40518:119;;;40556:79;;:::i;:::-;40518:119;40676:1;40701:64;40757:7;40748:6;40737:9;40733:22;40701:64;:::i;:::-;40691:74;;40647:128;40431:351;;;;:::o;40788:419::-;40927:4;40965:2;40954:9;40950:18;40942:26;;40978:71;41046:1;41035:9;41031:17;41022:6;40978:71;:::i;:::-;41096:9;41090:4;41086:20;41081:2;41070:9;41066:18;41059:48;41124:76;41195:4;41186:6;41124:76;:::i;:::-;41116:84;;40788:419;;;;;:::o;41213:332::-;41334:4;41372:2;41361:9;41357:18;41349:26;;41385:71;41453:1;41442:9;41438:17;41429:6;41385:71;:::i;:::-;41466:72;41534:2;41523:9;41519:18;41510:6;41466:72;:::i;:::-;41213:332;;;;;:::o;41551:::-;41672:4;41710:2;41699:9;41695:18;41687:26;;41723:71;41791:1;41780:9;41776:17;41767:6;41723:71;:::i;:::-;41804:72;41872:2;41861:9;41857:18;41848:6;41804:72;:::i;:::-;41551:332;;;;;:::o;41889:180::-;41937:77;41934:1;41927:88;42034:4;42031:1;42024:15;42058:4;42055:1;42048:15;42075:76;42111:7;42140:5;42129:16;;42075:76;;;:::o;42157:115::-;42242:23;42259:5;42242:23;:::i;:::-;42237:3;42230:36;42157:115;;:::o;42278:328::-;42397:4;42435:2;42424:9;42420:18;42412:26;;42448:71;42516:1;42505:9;42501:17;42492:6;42448:71;:::i;:::-;42529:70;42595:2;42584:9;42580:18;42571:6;42529:70;:::i;:::-;42278:328;;;;;:::o;42612:185::-;42652:1;42669:20;42687:1;42669:20;:::i;:::-;42664:25;;42703:20;42721:1;42703:20;:::i;:::-;42698:25;;42742:1;42732:35;;42747:18;;:::i;:::-;42732:35;42789:1;42786;42782:9;42777:14;;42612:185;;;;:::o;42803:180::-;42851:77;42848:1;42841:88;42948:4;42945:1;42938:15;42972:4;42969:1;42962:15" }, "gasEstimates": { "creation": { - "codeDepositCost": "4158400", + "codeDepositCost": "5991000", "executionCost": "infinite", "totalCost": "infinite" }, "external": { - "DEFAULT_ADMIN_ROLE()": "463", + "DEFAULT_ADMIN_ROLE()": "485", "LB_HOOKS_MANAGER_ROLE()": "460", - "acceptOwnership()": "54761", + "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE()": "436", + "acceptOwnership()": "infinite", "addQuoteAsset(address)": "infinite", "createLBPair(address,address,uint24,uint16)": "infinite", "forceDecay(address)": "infinite", "getAllBinSteps()": "infinite", "getAllLBPairs(address,address)": "infinite", - "getFeeRecipient()": "2627", + "getFeeRecipient()": "2605", "getFlashLoanFee()": "2586", "getLBPairAtIndex(uint256)": "infinite", - "getLBPairImplementation()": "2582", + "getLBPairBeacon()": "2648", "getLBPairInformation(address,address,uint256)": "infinite", "getMaxFlashLoanFee()": "399", "getMinBinStep()": "378", - "getNumberOfLBPairs()": "2485", + "getNumberOfLBPairs()": "2574", "getNumberOfQuoteAssets()": "2579", "getOpenBinSteps()": "infinite", + "getPauserRole()": "421", "getPreset(uint256)": "infinite", "getQuoteAssetAtIndex(uint256)": "infinite", "getRoleAdmin(bytes32)": "infinite", "grantRole(bytes32,address)": "infinite", - "hasRole(bytes32,address)": "3309", + "hasRole(bytes32,address)": "3361", + "initialize(address,address,uint256,address)": "infinite", "isQuoteAsset(address)": "infinite", - "owner()": "2604", - "pendingOwner()": "2581", + "owner()": "2656", + "pendingOwner()": "2633", "removeLBHooksOnPair(address,address,uint16)": "infinite", "removePreset(uint16)": "infinite", "removeQuoteAsset(address)": "infinite", @@ -23198,7 +22699,6 @@ "setFlashLoanFee(uint256)": "infinite", "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": "infinite", "setLBPairIgnored(address,address,uint16,bool)": "infinite", - "setLBPairImplementation(address)": "infinite", "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": "infinite", "setPresetOpenState(uint16,bool)": "infinite", "supportsInterface(bytes4)": "764", @@ -23216,6 +22716,7 @@ "methodIdentifiers": { "DEFAULT_ADMIN_ROLE()": "a217fddf", "LB_HOOKS_MANAGER_ROLE()": "1af5bacc", + "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE()": "661d7ffb", "acceptOwnership()": "79ba5097", "addQuoteAsset(address)": "5a440923", "createLBPair(address,address,uint24,uint16)": "659ac74b", @@ -23225,18 +22726,20 @@ "getFeeRecipient()": "4ccb20c0", "getFlashLoanFee()": "fd90c2be", "getLBPairAtIndex(uint256)": "7daf5d66", - "getLBPairImplementation()": "af371065", + "getLBPairBeacon()": "a0a0ea39", "getLBPairInformation(address,address,uint256)": "704037bd", "getMaxFlashLoanFee()": "8ce9aa1c", "getMinBinStep()": "701ab8c1", "getNumberOfLBPairs()": "4e937c3a", "getNumberOfQuoteAssets()": "80c5061e", "getOpenBinSteps()": "0282c9c1", + "getPauserRole()": "c1b931be", "getPreset(uint256)": "aabc4b3c", "getQuoteAssetAtIndex(uint256)": "0752092b", "getRoleAdmin(bytes32)": "248a9ca3", "grantRole(bytes32,address)": "2f2ff15d", "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,uint256,address)": "be203094", "isQuoteAsset(address)": "27721842", "owner()": "8da5cb5b", "pendingOwner()": "e30c3978", @@ -23251,7 +22754,6 @@ "setFlashLoanFee(uint256)": "e92d0d5d", "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": "3a2f1a91", "setLBPairIgnored(address,address,uint16,bool)": "69d56ea3", - "setLBPairImplementation(address)": "b0384781", "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": "379ee803", "setPresetOpenState(uint16,bool)": "4cd161d3", "supportsInterface(bytes4)": "01ffc9a7", @@ -23260,23 +22762,7 @@ }, "abi": [ { - "inputs": [ - { - "internalType": "address", - "name": "feeRecipient", - "type": "address" - }, - { - "internalType": "address", - "name": "initialOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "flashLoanFee", - "type": "uint256" - } - ], + "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, @@ -23301,6 +22787,32 @@ "name": "AccessControlUnauthorizedAccount", "type": "error" }, + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + }, { "inputs": [ { @@ -23312,6 +22824,11 @@ "name": "EnumerableMapNonexistentKey", "type": "error" }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, { "inputs": [], "name": "LBFactory__AddressZero", @@ -23371,11 +22888,6 @@ "name": "LBFactory__IdenticalAddresses", "type": "error" }, - { - "inputs": [], - "name": "LBFactory__ImplementationNotSet", - "type": "error" - }, { "inputs": [], "name": "LBFactory__InvalidHooksParameters", @@ -23558,6 +23070,11 @@ "name": "LBFactory__SameImplementation", "type": "error" }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, { "inputs": [ { @@ -23644,6 +23161,19 @@ "name": "FlashLoanFeeSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -23971,6 +23501,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "acceptOwnership", @@ -24144,11 +23687,11 @@ }, { "inputs": [], - "name": "getLBPairImplementation", + "name": "getLBPairBeacon", "outputs": [ { "internalType": "address", - "name": "lbPairImplementation", + "name": "lbPairBeacon", "type": "address" } ], @@ -24271,6 +23814,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getPauserRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [ { @@ -24405,6 +23961,34 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "address", + "name": "initialOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lbPairBeaconAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -24687,19 +24271,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newLBPairImplementation", - "type": "address" - } - ], - "name": "setLBPairImplementation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/src/artifacts/LBFactory_metadata.json b/src/artifacts/LBFactory_metadata.json index 65b5e581..9625c4b3 100644 --- a/src/artifacts/LBFactory_metadata.json +++ b/src/artifacts/LBFactory_metadata.json @@ -6,23 +6,7 @@ "output": { "abi": [ { - "inputs": [ - { - "internalType": "address", - "name": "feeRecipient", - "type": "address" - }, - { - "internalType": "address", - "name": "initialOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "flashLoanFee", - "type": "uint256" - } - ], + "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, @@ -47,6 +31,32 @@ "name": "AccessControlUnauthorizedAccount", "type": "error" }, + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + }, { "inputs": [ { @@ -58,6 +68,11 @@ "name": "EnumerableMapNonexistentKey", "type": "error" }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, { "inputs": [], "name": "LBFactory__AddressZero", @@ -117,11 +132,6 @@ "name": "LBFactory__IdenticalAddresses", "type": "error" }, - { - "inputs": [], - "name": "LBFactory__ImplementationNotSet", - "type": "error" - }, { "inputs": [], "name": "LBFactory__InvalidHooksParameters", @@ -304,6 +314,11 @@ "name": "LBFactory__SameImplementation", "type": "error" }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, { "inputs": [ { @@ -390,6 +405,19 @@ "name": "FlashLoanFeeSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -717,6 +745,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "acceptOwnership", @@ -890,11 +931,11 @@ }, { "inputs": [], - "name": "getLBPairImplementation", + "name": "getLBPairBeacon", "outputs": [ { "internalType": "address", - "name": "lbPairImplementation", + "name": "lbPairBeacon", "type": "address" } ], @@ -1017,6 +1058,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getPauserRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [ { @@ -1151,6 +1205,34 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "address", + "name": "initialOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lbPairBeaconAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1433,19 +1515,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newLBPairImplementation", - "type": "address" - } - ], - "name": "setLBPairImplementation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1551,7 +1620,6 @@ } ], "devdoc": { - "author": "Trader Joe", "errors": { "AccessControlBadConfirmation()": [ { @@ -1563,11 +1631,36 @@ "details": "The `account` is missing a role." } ], + "Create2EmptyBytecode()": [ + { + "details": "There's no code to deploy." + } + ], + "Create2FailedDeployment()": [ + { + "details": "The deployment failed." + } + ], + "Create2InsufficientBalance(uint256,uint256)": [ + { + "details": "Not enough balance for performing a CREATE2 deploy." + } + ], "EnumerableMapNonexistentKey(bytes32)": [ { "details": "Query for a nonexistent map key." } ], + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ], "OwnableInvalidOwner(address)": [ { "details": "The owner is not a valid owner account. (eg. `address(0)`)" @@ -1580,6 +1673,9 @@ ] }, "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + }, "RoleAdminChanged(bytes32,bytes32,bytes32)": { "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this." }, @@ -1602,10 +1698,7 @@ } }, "constructor": { - "params": { - "feeRecipient": "The address of the fee recipient", - "flashLoanFee": "The value of the fee for flash loan" - } + "custom:oz-upgrades-unsafe-allow": "constructor" }, "createLBPair(address,address,uint24,uint16)": { "params": { @@ -1656,9 +1749,9 @@ "lbPair": "The address of the LBPair at index `index`" } }, - "getLBPairImplementation()": { + "getLBPairBeacon()": { "returns": { - "lbPairImplementation": "The address of the LBPair implementation" + "lbPairBeacon": "The address of the LBPair beacon" } }, "getLBPairInformation(address,address,uint256)": { @@ -1734,6 +1827,12 @@ "_0": "Whether the account has the role or not" } }, + "initialize(address,address,uint256,address)": { + "params": { + "feeRecipient": "The address of the fee recipient", + "flashLoanFee": "The value of the fee for flash loan" + } + }, "isQuoteAsset(address)": { "params": { "token": "The address of the asset" @@ -1823,12 +1922,6 @@ "tokenY": "The address of the second token of the pair" } }, - "setLBPairImplementation(address)": { - "details": "Needs to be called by the owner", - "params": { - "newLBPairImplementation": "The address of the implementation" - } - }, "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": { "details": "Needs to be called by the owner Reverts if: - The binStep is lower than the minimum bin step", "params": { @@ -1873,9 +1966,6 @@ "addQuoteAsset(address)": { "notice": "Function to add an asset to the whitelist of quote assets" }, - "constructor": { - "notice": "Constructor" - }, "createLBPair(address,address,uint24,uint16)": { "notice": "Create a liquidity bin LBPair for tokenX and tokenY" }, @@ -1897,8 +1987,8 @@ "getLBPairAtIndex(uint256)": { "notice": "View function to return the LBPair created at index `index`" }, - "getLBPairImplementation()": { - "notice": "Get the address of the LBPair implementation" + "getLBPairBeacon()": { + "notice": "Get the address of the LBPair beacon" }, "getLBPairInformation(address,address,uint256)": { "notice": "Returns the LBPairInformation if it exists, if not, then the address 0 is returned. The order doesn't matter" @@ -1927,6 +2017,9 @@ "hasRole(bytes32,address)": { "notice": "Returns whether the caller has the role or not, only the owner has the DEFAULT_ADMIN_ROLE" }, + "initialize(address,address,uint256,address)": { + "notice": "Initializer function" + }, "isQuoteAsset(address)": { "notice": "View function to return whether a token is a quotedAsset (true) or not (false)" }, @@ -1954,9 +2047,6 @@ "setLBPairIgnored(address,address,uint16,bool)": { "notice": "Function to set whether the pair is ignored or not for routing, it will make the pair unusable by the router" }, - "setLBPairImplementation(address)": { - "notice": "Set the LBPair implementation address" - }, "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": { "notice": "Sets the preset parameters of a bin step" }, @@ -1985,16 +2075,57 @@ ":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":forge-std/=lib/forge-std/src/" + ":forge-std/=lib/forge-std/src/", + ":src/=src/" ] }, "sources": { - "lib/openzeppelin-contracts/contracts/access/AccessControl.sol": { - "keccak256": "0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308", + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "keccak256": "0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225", "license": "MIT", "urls": [ - "bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80", - "dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z" + "bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45", + "dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN" + ] + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol": { + "keccak256": "0x72a2cb65884e565b059fdf43b1c8e074a2128d4456c467cabfcebd28f2f4c336", + "license": "MIT", + "urls": [ + "bzz-raw://6ed917865e6ddc26ddefbd9376bb36a258e40dac98ed4836e54c8920c8982d22", + "dweb:/ipfs/QmNonmf4PWnH2CzyTGmrgDkfzRz1uQaZdCQYQRaMpX3YNB" + ] + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a", + "license": "MIT", + "urls": [ + "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6", + "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2" + ] + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b", + "license": "MIT", + "urls": [ + "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609", + "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM" + ] + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397", + "license": "MIT", + "urls": [ + "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9", + "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV" + ] + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "keccak256": "0xddfe0afa85367153020524d383fe0bc9a1545f343019ddf33f98f392887047f0", + "license": "MIT", + "urls": [ + "bzz-raw://62f3df350ce83190e81673e424dd47d9ee8ffb121a6f72994c75c8ae3fc9dded", + "dweb:/ipfs/QmaA2CMuqESmdgVao4XzCL4aRwcZW1xjUXpY7RqHZfQoAV" ] }, "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { @@ -2013,12 +2144,44 @@ "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a" ] }, - "lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol": { - "keccak256": "0x08b074ae1b12e70ce24d1335086ec5a418934311a6771d9f61fe24d392050e12", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "keccak256": "0x06bd04b0d6af06424c58c24ad861ac4fbe68ae729c199127f4b64361a0629510", + "license": "MIT", + "urls": [ + "bzz-raw://8a9228dd927facb9a400333848e8cf616c7a7f30693563d98a963266dc8ae28a", + "dweb:/ipfs/Qmehe5JAWCK7g8A9VkS9LpfiNkYzXkrxnXfpvtuqbrA9BA" + ] + }, + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol": { + "keccak256": "0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd", + "license": "MIT", + "urls": [ + "bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac", + "dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e" + ] + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol": { + "keccak256": "0x25052a8e6c783ab01f98a9ac7f521649be60b9963f352e2453997ba8fbc2d285", "license": "MIT", "urls": [ - "bzz-raw://e2fd900a8f8244fc0a49bae1ca1bd5815884f248a2306b8e7dc68011c25803b7", - "dweb:/ipfs/Qmd4EaujSR74x7EqziRDfqgc6Tv2nzRQDSaxKXcU1ybxbA" + "bzz-raw://94ba3d98053a310582febe79742e566a36073f1f2645ddc772c638c84ae93b88", + "dweb:/ipfs/QmTHUMHniPNJ9H2Ui2zgk35CZDSThg2nQ8j5sNXaNarL9D" + ] + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": { + "keccak256": "0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c", + "license": "MIT", + "urls": [ + "bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa", + "dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM" + ] + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol": { + "keccak256": "0x5920bac7215d12961e23b207f6e81a1d64aa4935a4469abe95b64a96a3c3007b", + "license": "MIT", + "urls": [ + "bzz-raw://b34bb828c45c3a4ebf6c2c585971abf5089e61357a3818a2900c7e85b74a1299", + "dweb:/ipfs/QmewGAzKsPXYfSjCKxuH1SekKxtdyzhdbdyxjF5gohLigt" ] }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { @@ -2029,6 +2192,14 @@ "dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN" ] }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721", + "license": "MIT", + "urls": [ + "bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245", + "dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y" + ] + }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", "license": "MIT", @@ -2037,12 +2208,20 @@ "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" ] }, - "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": { - "keccak256": "0x6fac27fb1885a1d9fd2ce3f8fac4e44a6596ca4d44207c9ef2541ba8c941291e", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol": { + "keccak256": "0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e", "license": "MIT", "urls": [ - "bzz-raw://2079378abdb36baec15c23bc2353b73a3d28d1d0610b436b0c1c4e6fa61d65c9", - "dweb:/ipfs/QmVZkRFMzKW7sLaugKSTbMNnUBKWF3QDsoMi5uoQFyVMjf" + "bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420", + "dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR" + ] + }, + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": { + "keccak256": "0x70d9a9cf8d5cc830d7396505ef8eb9686bd0c60a29c6644bd6cc278f9bab8ebe", + "license": "MIT", + "urls": [ + "bzz-raw://719abb402c11be12355088da587ffd971fee1b035b5aa6b1ba3b1a9493d3c1d7", + "dweb:/ipfs/QmanHMFVDqVtZAFFaH1CeGQWoHWsFnWHH75fCrguwi77Hq" ] }, "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { @@ -2070,27 +2249,43 @@ ] }, "src/LBFactory.sol": { - "keccak256": "0x22eb0aa534285d73a73a04eaf0fbec53f680a7273edd9ea9c0215ae38e652711", + "keccak256": "0x4357528177127b0aa5dae3bda1bd8a085954c39be364d28763e8240c5778e33f", "license": "MIT", "urls": [ - "bzz-raw://7537b3e55fc893a89b6571d4f1f230c9720b54402d0eed5df93c7855c2000641", - "dweb:/ipfs/QmYJhnyULK72GtrPuzuUjSnSU1Ug4XnwMnzx9Bo35vSMjW" + "bzz-raw://01f6b53f5ae61f431780acc158fea89a77c6de5f6c43d0a389307bd22a8e9dbe", + "dweb:/ipfs/QmZ723Q6wkD9SbwsEz8okjAf8UHbv5xngw8DHvV2BVmSMG" + ] + }, + "src/LBPairBeaconProxy.sol": { + "keccak256": "0x9ef05f6a2b5f9ad4deffb5635999f953d03bdeeca73682a84896c45a44060e7e", + "license": "GPL-3", + "urls": [ + "bzz-raw://2845d3a65804c8b3f84317b9aef108e46a9e55a7c84295523e0c027e80e24a75", + "dweb:/ipfs/Qmb3PjAJWVWi1RCz7dy8RjPyAnDRJBU6nnVtxuPo6Pu7Vf" + ] + }, + "src/LBPairUnstructuredStorage.sol": { + "keccak256": "0x0624f033c86f4ba1f900d99163241f879157509e1e93af85fc3418ec87463dcd", + "license": "GPL-3", + "urls": [ + "bzz-raw://aa622c89b893cc8fea94879e9a7a9d71d265df923f3b884426e2c830cdc8ddca", + "dweb:/ipfs/QmVM8gFUGnnBSfLJF3mtGYKDChMC5Mt5Q3d6RsEPJ7LpLd" ] }, "src/interfaces/ILBFactory.sol": { - "keccak256": "0x03806497102c036a26e13fc7734c7eb2dc2e746a7e07bba9743e49c696d5e83c", + "keccak256": "0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53", "license": "MIT", "urls": [ - "bzz-raw://3cff60a63ce5e38fcd7634d6f0c10062b17eb9906cdee51163631164f848af2e", - "dweb:/ipfs/QmeR1WY7ccnUxdQYCgGjnMzuUkqnwNErcLoS8jG7QPYcq8" + "bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e", + "dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK" ] }, "src/interfaces/ILBFlashLoanCallback.sol": { - "keccak256": "0x0595b40912fd6ba4c3ea7d6739e467b4381c9d6cc85218c5bd3536c9fb4ecc2b", + "keccak256": "0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b", "license": "MIT", "urls": [ - "bzz-raw://5a8f1cdd283a42c87aa87f9d39734e40e7d054a436c86fc6594cb6c2627bd85e", - "dweb:/ipfs/QmQfaLb1FTPcCs7vQ6qf7SXuqgQzXLAWnaMyZkixkNN8WE" + "bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a", + "dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt" ] }, "src/interfaces/ILBHooks.sol": { @@ -2102,27 +2297,27 @@ ] }, "src/interfaces/ILBPair.sol": { - "keccak256": "0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70", + "keccak256": "0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d", "license": "MIT", "urls": [ - "bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51", - "dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB" + "bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d", + "dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW" ] }, "src/interfaces/ILBToken.sol": { - "keccak256": "0x6ec82e130bfcee455420f5b6025dd9f6237654c5d081b1a929de1c4ac942387a", + "keccak256": "0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7", "license": "MIT", "urls": [ - "bzz-raw://ba0a398ffeea4227ce9eee3a76c97a47a8ac39ac2b85cda60bc24a93c5c7386a", - "dweb:/ipfs/QmP1oUtTGG6PWu1n9T7n38iQVKMsDavhA9kCyLSjWTEgLt" + "bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6", + "dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg" ] }, "src/libraries/Constants.sol": { - "keccak256": "0xeb531944284c1a12410b47605869a65f7a3d6f97e24e9dff5a9b8972e9dd6e5a", + "keccak256": "0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401", "license": "MIT", "urls": [ - "bzz-raw://4840c7e6de5c27bd9c46bed582bdaa9e7de4b9d3e9441a4b7b0de40f6ae1e7ca", - "dweb:/ipfs/QmNZnqNc2MayvLR3VsmPZ3tzhkFkPgD3J7tKLwWr6mzFxM" + "bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65", + "dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ" ] }, "src/libraries/Hooks.sol": { @@ -2134,67 +2329,75 @@ ] }, "src/libraries/ImmutableClone.sol": { - "keccak256": "0x128845623787e6d43d1827defe114499d8c917fd3fea8f1a783ae42174076ddc", + "keccak256": "0xb11421c05ec91ca74a2ce9c9108fb6a13be96177a072383c8e02490be28590bd", "license": "MIT", "urls": [ - "bzz-raw://1f653b932ebff34f5c39f8536e80da6a4f5778285210c2602a8f9766faf3d7fc", - "dweb:/ipfs/Qmc8hSHLbyx7dvwpd9aHCRp9GFqYH3kWqyXzRC7kFoDrAj" + "bzz-raw://3589fceccbeb601e4a2565797acad2ffcc6000ea682ce158d367c541d3d6054a", + "dweb:/ipfs/QmNz2CLyArtuxTE652mtVfVKysZ8hY99RdssPUjKhVx7ZL" ] }, "src/libraries/PairParameterHelper.sol": { - "keccak256": "0x53163f663dad415ede2e5f0705700268445eb0586070fb253ff65f9afbcc1a8b", + "keccak256": "0xd75796a09915a4ce7fd69894504bb21d8f4b6b8fd96b9d863422911313f9dd71", "license": "MIT", "urls": [ - "bzz-raw://4f07672f538f7b0a4b826379f988d5cd17c93eab371b8dee597a2228f2c1533d", - "dweb:/ipfs/Qmaq2AUCiRzrqnWPVE7TH62ZTUcYJ4cXSGGRQV4q8ASELZ" + "bzz-raw://c38fa6ee12c97e1aa1b33ae4cca16f52c1712b7b7a2222dc0cdf61f087ab6e1b", + "dweb:/ipfs/QmUXVXUhAtZufsRKKEujphnQLhEmiADw215LMcpjooiERr" ] }, "src/libraries/PriceHelper.sol": { - "keccak256": "0xe660c07d0812609a65bcdccc1d7212116e8075c3a86cf9b15ead3639b0f9fdb7", + "keccak256": "0xe8af4af39a9063fa569aa161f0fb0b81825131c102b8504deebe142f79f918a6", "license": "MIT", "urls": [ - "bzz-raw://61c85e1bc1107f22b13c3c5e43fdda89eb6ed3f9ab9df123e18914b24f3ff054", - "dweb:/ipfs/QmUewajrhnmLPJ7qgDmXb4FZbNJdtArxGu5eQca8Mo1YTb" + "bzz-raw://1b6e1bcd23acaf79754aed4eb8f32ca3f1712696396a6f06511a6422f73da01f", + "dweb:/ipfs/QmNZjn3byK4aDYMC5xYPKWCjVUoSmUQgeaHx14q9iA412N" + ] + }, + "src/libraries/StringUtils.sol": { + "keccak256": "0x9734a4e165526a7590c5303bc983a552eadd5a6e20143a4ea731bca9413320d4", + "license": "GPL-3.0", + "urls": [ + "bzz-raw://1239d261c4e0e136106e30dae7766c3fb6f8ee5867db31c265740236f3ada40f", + "dweb:/ipfs/QmfYnsyuxNZrK8gp4JbDqjfdoEDhFqsQRkK54Ht68jUDqE" ] }, "src/libraries/math/BitMath.sol": { - "keccak256": "0x7b359776521706ae1291cbf8707919aaa5cb78d59b9dfbe5393322c393250b1f", + "keccak256": "0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546", "license": "MIT", "urls": [ - "bzz-raw://bb9fe4accf6abda06f8b4ba02f86d37df109e4b8d14b78a848eb4b4cee359485", - "dweb:/ipfs/QmSTkrek6fhvgiato8tC6ARz4M11Ynqgyuy7d2QeGiWXEG" + "bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d", + "dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5" ] }, "src/libraries/math/Encoded.sol": { - "keccak256": "0xd7caeb3b8c48ac9015c89a5fc6e6387a421359c0d773b6cd276baa17eb8c4c3f", + "keccak256": "0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee", "license": "MIT", "urls": [ - "bzz-raw://100c723b4e0739a2fcb9e6f429c0db1583392a92bb8e85af41f1e1b3f632ab50", - "dweb:/ipfs/QmSCWAoZfo8hS4ZUUcohahc93pMLSUXFHLfkpLq7QBkPBz" + "bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1", + "dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew" ] }, "src/libraries/math/SafeCast.sol": { - "keccak256": "0x3e22926e8f7d352568f01a896860c83b3ab35b47a0ed9a0f2e780a82aa52f4a8", + "keccak256": "0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257", "license": "MIT", "urls": [ - "bzz-raw://3fc2ade1520197ab28ad6292a1d70d3182b9741030ad69c8a915b4c09ebec1f5", - "dweb:/ipfs/QmYRtP5AiMXCpiBPrmuWd2R1mYGyuXoa24GeZJRUBSS7wH" + "bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e", + "dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD" ] }, "src/libraries/math/Uint128x128Math.sol": { - "keccak256": "0xe84206e2561ef32aef2d23ce5022f0174898a26d4d60346675e7a7fd76054fc0", + "keccak256": "0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a", "license": "MIT", "urls": [ - "bzz-raw://4238023aeb54caf0d245b00063b37a736142413d3040a175b8d5765ee148242d", - "dweb:/ipfs/QmSqvRJAxtCLjkp19rW8jxzvocr6e478u2Ge5iLyJojJXF" + "bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94", + "dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU" ] }, "src/libraries/math/Uint256x256Math.sol": { - "keccak256": "0xa85a6d3be7cdf95ec9b246d36c3843de738af3df11fcc2bf8bf6e15c350870d6", + "keccak256": "0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f", "license": "MIT", "urls": [ - "bzz-raw://ffa97dbe1dc755a243a81a2590e3f25e5399549351a941c2835cca190a0a3fa0", - "dweb:/ipfs/QmbKUhSjHj1Y48dCPfiYSLybQ8miYfQ99EWsWdP8orpeaB" + "bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea", + "dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M" ] } }, diff --git a/src/artifacts/LBRouter.json b/src/artifacts/LBRouter.json index 338fac8d..a5518757 100644 --- a/src/artifacts/LBRouter.json +++ b/src/artifacts/LBRouter.json @@ -32,47 +32,59 @@ "data": { "bytecode": { "functionDebugData": { - "@_458": { + "@_692": { "entryPoint": null, - "id": 458, - "parameterSlots": 6, + "id": 692, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_disableInitializers_369": { + "entryPoint": 235, + "id": 369, + "parameterSlots": 0, "returnSlots": 0 }, - "abi_decode_t_contract$_IJoeFactory_$3809_fromMemory": { - "entryPoint": 545, + "@_getInitializableStorage_400": { + "entryPoint": 495, + "id": 400, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBFactory_$4236_fromMemory": { + "entryPoint": 632, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_decode_t_contract$_ILBFactory_$4517_fromMemory": { - "entryPoint": 479, + "abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory": { + "entryPoint": 698, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_decode_t_contract$_ILBLegacyFactory_$5081_fromMemory": { - "entryPoint": 611, + "abi_decode_t_contract$_IWNATIVE_$7175_fromMemory": { + "entryPoint": 764, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_decode_t_contract$_ILBLegacyRouter_$5906_fromMemory": { - "entryPoint": 677, + "abi_decode_tuple_t_contract$_ILBFactory_$4236t_contract$_ISovrynLBFactoryV1_$6916t_contract$_IWNATIVE_$7175_fromMemory": { + "entryPoint": 786, "id": null, "parameterSlots": 2, - "returnSlots": 1 + "returnSlots": 3 }, - "abi_decode_t_contract$_IWNATIVE_$7164_fromMemory": { - "entryPoint": 743, + "abi_encode_t_uint64_to_t_uint64_fromStack": { + "entryPoint": 894, "id": null, "parameterSlots": 2, - "returnSlots": 1 + "returnSlots": 0 }, - "abi_decode_tuple_t_contract$_ILBFactory_$4517t_contract$_IJoeFactory_$3809t_contract$_ILBLegacyFactory_$5081t_contract$_ILBLegacyRouter_$5906t_contract$_ILBFactory_$4517t_contract$_IWNATIVE_$7164_fromMemory": { - "entryPoint": 765, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": 911, "id": null, "parameterSlots": 2, - "returnSlots": 6 + "returnSlots": 1 }, "allocate_unbounded": { "entryPoint": null, @@ -81,43 +93,37 @@ "returnSlots": 1 }, "cleanup_t_address": { - "entryPoint": 416, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_contract$_IJoeFactory_$3809": { - "entryPoint": 501, + "entryPoint": 569, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_contract$_ILBFactory_$4517": { - "entryPoint": 435, + "cleanup_t_contract$_ILBFactory_$4236": { + "entryPoint": 588, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_contract$_ILBLegacyFactory_$5081": { - "entryPoint": 567, + "cleanup_t_contract$_ISovrynLBFactoryV1_$6916": { + "entryPoint": 654, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_contract$_ILBLegacyRouter_$5906": { - "entryPoint": 633, + "cleanup_t_contract$_IWNATIVE_$7175": { + "entryPoint": 720, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_contract$_IWNATIVE_$7164": { - "entryPoint": 699, + "cleanup_t_uint160": { + "entryPoint": 538, "id": null, "parameterSlots": 1, "returnSlots": 1 }, - "cleanup_t_uint160": { - "entryPoint": 385, + "cleanup_t_uint64": { + "entryPoint": 875, "id": null, "parameterSlots": 1, "returnSlots": 1 @@ -129,37 +135,25 @@ "returnSlots": 0 }, "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { - "entryPoint": 381, + "entryPoint": 534, "id": null, "parameterSlots": 0, "returnSlots": 0 }, - "validator_revert_t_contract$_IJoeFactory_$3809": { - "entryPoint": 520, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_contract$_ILBFactory_$4517": { - "entryPoint": 454, + "validator_revert_t_contract$_ILBFactory_$4236": { + "entryPoint": 607, "id": null, "parameterSlots": 1, "returnSlots": 0 }, - "validator_revert_t_contract$_ILBLegacyFactory_$5081": { - "entryPoint": 586, + "validator_revert_t_contract$_ISovrynLBFactoryV1_$6916": { + "entryPoint": 673, "id": null, "parameterSlots": 1, "returnSlots": 0 }, - "validator_revert_t_contract$_ILBLegacyRouter_$5906": { - "entryPoint": 652, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_contract$_IWNATIVE_$7164": { - "entryPoint": 718, + "validator_revert_t_contract$_IWNATIVE_$7175": { + "entryPoint": 739, "id": null, "parameterSlots": 1, "returnSlots": 0 @@ -169,22 +163,22 @@ { "ast": { "nodeType": "YulBlock", - "src": "0:4373:33", + "src": "0:3264:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "47:35:33", + "src": "47:35:34", "statements": [ { "nodeType": "YulAssignment", - "src": "57:19:33", + "src": "57:19:34", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "73:2:33", + "src": "73:2:34", "type": "", "value": "64" } @@ -192,16 +186,16 @@ "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "67:5:33" + "src": "67:5:34" }, "nodeType": "YulFunctionCall", - "src": "67:9:33" + "src": "67:9:34" }, "variableNames": [ { "name": "memPtr", "nodeType": "YulIdentifier", - "src": "57:6:33" + "src": "57:6:34" } ] } @@ -213,16 +207,16 @@ { "name": "memPtr", "nodeType": "YulTypedName", - "src": "40:6:33", + "src": "40:6:34", "type": "" } ], - "src": "7:75:33" + "src": "7:75:34" }, { "body": { "nodeType": "YulBlock", - "src": "177:28:33", + "src": "177:28:34", "statements": [ { "expression": { @@ -230,14 +224,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "194:1:33", + "src": "194:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "197:1:33", + "src": "197:1:34", "type": "", "value": "0" } @@ -245,24 +239,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "187:6:33" + "src": "187:6:34" }, "nodeType": "YulFunctionCall", - "src": "187:12:33" + "src": "187:12:34" }, "nodeType": "YulExpressionStatement", - "src": "187:12:33" + "src": "187:12:34" } ] }, "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulFunctionDefinition", - "src": "88:117:33" + "src": "88:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "300:28:33", + "src": "300:28:34", "statements": [ { "expression": { @@ -270,14 +264,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "317:1:33", + "src": "317:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "320:1:33", + "src": "320:1:34", "type": "", "value": "0" } @@ -285,39 +279,39 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "310:6:33" + "src": "310:6:34" }, "nodeType": "YulFunctionCall", - "src": "310:12:33" + "src": "310:12:34" }, "nodeType": "YulExpressionStatement", - "src": "310:12:33" + "src": "310:12:34" } ] }, "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulFunctionDefinition", - "src": "211:117:33" + "src": "211:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "379:81:33", + "src": "379:81:34", "statements": [ { "nodeType": "YulAssignment", - "src": "389:65:33", + "src": "389:65:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "404:5:33" + "src": "404:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "411:42:33", + "src": "411:42:34", "type": "", "value": "0xffffffffffffffffffffffffffffffffffffffff" } @@ -325,16 +319,16 @@ "functionName": { "name": "and", "nodeType": "YulIdentifier", - "src": "400:3:33" + "src": "400:3:34" }, "nodeType": "YulFunctionCall", - "src": "400:54:33" + "src": "400:54:34" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "389:7:33" + "src": "389:7:34" } ] } @@ -346,7 +340,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "361:5:33", + "src": "361:5:34", "type": "" } ], @@ -354,41 +348,41 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "371:7:33", + "src": "371:7:34", "type": "" } ], - "src": "334:126:33" + "src": "334:126:34" }, { "body": { "nodeType": "YulBlock", - "src": "511:51:33", + "src": "511:51:34", "statements": [ { "nodeType": "YulAssignment", - "src": "521:35:33", + "src": "521:35:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "550:5:33" + "src": "550:5:34" } ], "functionName": { "name": "cleanup_t_uint160", "nodeType": "YulIdentifier", - "src": "532:17:33" + "src": "532:17:34" }, "nodeType": "YulFunctionCall", - "src": "532:24:33" + "src": "532:24:34" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "521:7:33" + "src": "521:7:34" } ] } @@ -400,7 +394,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "493:5:33", + "src": "493:5:34", "type": "" } ], @@ -408,53 +402,53 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "503:7:33", + "src": "503:7:34", "type": "" } ], - "src": "466:96:33" + "src": "466:96:34" }, { "body": { "nodeType": "YulBlock", - "src": "632:51:33", + "src": "632:51:34", "statements": [ { "nodeType": "YulAssignment", - "src": "642:35:33", + "src": "642:35:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "671:5:33" + "src": "671:5:34" } ], "functionName": { "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "653:17:33" + "src": "653:17:34" }, "nodeType": "YulFunctionCall", - "src": "653:24:33" + "src": "653:24:34" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "642:7:33" + "src": "642:7:34" } ] } ] }, - "name": "cleanup_t_contract$_ILBFactory_$4517", + "name": "cleanup_t_contract$_ILBFactory_$4236", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "614:5:33", + "src": "614:5:34", "type": "" } ], @@ -462,21 +456,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "624:7:33", + "src": "624:7:34", "type": "" } ], - "src": "568:115:33" + "src": "568:115:34" }, { "body": { "nodeType": "YulBlock", - "src": "751:98:33", + "src": "751:98:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "827:16:33", + "src": "827:16:34", "statements": [ { "expression": { @@ -484,14 +478,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "836:1:33", + "src": "836:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "839:1:33", + "src": "839:1:34", "type": "", "value": "0" } @@ -499,13 +493,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "829:6:33" + "src": "829:6:34" }, "nodeType": "YulFunctionCall", - "src": "829:12:33" + "src": "829:12:34" }, "nodeType": "YulExpressionStatement", - "src": "829:12:33" + "src": "829:12:34" } ] }, @@ -516,88 +510,88 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "774:5:33" + "src": "774:5:34" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "818:5:33" + "src": "818:5:34" } ], "functionName": { - "name": "cleanup_t_contract$_ILBFactory_$4517", + "name": "cleanup_t_contract$_ILBFactory_$4236", "nodeType": "YulIdentifier", - "src": "781:36:33" + "src": "781:36:34" }, "nodeType": "YulFunctionCall", - "src": "781:43:33" + "src": "781:43:34" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "771:2:33" + "src": "771:2:34" }, "nodeType": "YulFunctionCall", - "src": "771:54:33" + "src": "771:54:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "764:6:33" + "src": "764:6:34" }, "nodeType": "YulFunctionCall", - "src": "764:62:33" + "src": "764:62:34" }, "nodeType": "YulIf", - "src": "761:82:33" + "src": "761:82:34" } ] }, - "name": "validator_revert_t_contract$_ILBFactory_$4517", + "name": "validator_revert_t_contract$_ILBFactory_$4236", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "744:5:33", + "src": "744:5:34", "type": "" } ], - "src": "689:160:33" + "src": "689:160:34" }, { "body": { "nodeType": "YulBlock", - "src": "937:99:33", + "src": "937:99:34", "statements": [ { "nodeType": "YulAssignment", - "src": "947:22:33", + "src": "947:22:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "962:6:33" + "src": "962:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "956:5:33" + "src": "956:5:34" }, "nodeType": "YulFunctionCall", - "src": "956:13:33" + "src": "956:13:34" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "947:5:33" + "src": "947:5:34" } ] }, @@ -607,35 +601,35 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "1024:5:33" + "src": "1024:5:34" } ], "functionName": { - "name": "validator_revert_t_contract$_ILBFactory_$4517", + "name": "validator_revert_t_contract$_ILBFactory_$4236", "nodeType": "YulIdentifier", - "src": "978:45:33" + "src": "978:45:34" }, "nodeType": "YulFunctionCall", - "src": "978:52:33" + "src": "978:52:34" }, "nodeType": "YulExpressionStatement", - "src": "978:52:33" + "src": "978:52:34" } ] }, - "name": "abi_decode_t_contract$_ILBFactory_$4517_fromMemory", + "name": "abi_decode_t_contract$_ILBFactory_$4236_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "915:6:33", + "src": "915:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "923:3:33", + "src": "923:3:34", "type": "" } ], @@ -643,53 +637,53 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "931:5:33", + "src": "931:5:34", "type": "" } ], - "src": "855:181:33" + "src": "855:181:34" }, { "body": { "nodeType": "YulBlock", - "src": "1107:51:33", + "src": "1114:51:34", "statements": [ { "nodeType": "YulAssignment", - "src": "1117:35:33", + "src": "1124:35:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1146:5:33" + "src": "1153:5:34" } ], "functionName": { "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "1128:17:33" + "src": "1135:17:34" }, "nodeType": "YulFunctionCall", - "src": "1128:24:33" + "src": "1135:24:34" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "1117:7:33" + "src": "1124:7:34" } ] } ] }, - "name": "cleanup_t_contract$_IJoeFactory_$3809", + "name": "cleanup_t_contract$_ISovrynLBFactoryV1_$6916", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "1089:5:33", + "src": "1096:5:34", "type": "" } ], @@ -697,21 +691,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "1099:7:33", + "src": "1106:7:34", "type": "" } ], - "src": "1042:116:33" + "src": "1042:123:34" }, { "body": { "nodeType": "YulBlock", - "src": "1227:99:33", + "src": "1241:106:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "1304:16:33", + "src": "1325:16:34", "statements": [ { "expression": { @@ -719,14 +713,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "1313:1:33", + "src": "1334:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1316:1:33", + "src": "1337:1:34", "type": "", "value": "0" } @@ -734,13 +728,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "1306:6:33" + "src": "1327:6:34" }, "nodeType": "YulFunctionCall", - "src": "1306:12:33" + "src": "1327:12:34" }, "nodeType": "YulExpressionStatement", - "src": "1306:12:33" + "src": "1327:12:34" } ] }, @@ -751,88 +745,88 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "1250:5:33" + "src": "1264:5:34" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1295:5:33" + "src": "1316:5:34" } ], "functionName": { - "name": "cleanup_t_contract$_IJoeFactory_$3809", + "name": "cleanup_t_contract$_ISovrynLBFactoryV1_$6916", "nodeType": "YulIdentifier", - "src": "1257:37:33" + "src": "1271:44:34" }, "nodeType": "YulFunctionCall", - "src": "1257:44:33" + "src": "1271:51:34" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "1247:2:33" + "src": "1261:2:34" }, "nodeType": "YulFunctionCall", - "src": "1247:55:33" + "src": "1261:62:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "1240:6:33" + "src": "1254:6:34" }, "nodeType": "YulFunctionCall", - "src": "1240:63:33" + "src": "1254:70:34" }, "nodeType": "YulIf", - "src": "1237:83:33" + "src": "1251:90:34" } ] }, - "name": "validator_revert_t_contract$_IJoeFactory_$3809", + "name": "validator_revert_t_contract$_ISovrynLBFactoryV1_$6916", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "1220:5:33", + "src": "1234:5:34", "type": "" } ], - "src": "1164:162:33" + "src": "1171:176:34" }, { "body": { "nodeType": "YulBlock", - "src": "1415:100:33", + "src": "1443:107:34", "statements": [ { "nodeType": "YulAssignment", - "src": "1425:22:33", + "src": "1453:22:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "1440:6:33" + "src": "1468:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "1434:5:33" + "src": "1462:5:34" }, "nodeType": "YulFunctionCall", - "src": "1434:13:33" + "src": "1462:13:34" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1425:5:33" + "src": "1453:5:34" } ] }, @@ -842,35 +836,35 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "1503:5:33" + "src": "1538:5:34" } ], "functionName": { - "name": "validator_revert_t_contract$_IJoeFactory_$3809", + "name": "validator_revert_t_contract$_ISovrynLBFactoryV1_$6916", "nodeType": "YulIdentifier", - "src": "1456:46:33" + "src": "1484:53:34" }, "nodeType": "YulFunctionCall", - "src": "1456:53:33" + "src": "1484:60:34" }, "nodeType": "YulExpressionStatement", - "src": "1456:53:33" + "src": "1484:60:34" } ] }, - "name": "abi_decode_t_contract$_IJoeFactory_$3809_fromMemory", + "name": "abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "1393:6:33", + "src": "1421:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "1401:3:33", + "src": "1429:3:34", "type": "" } ], @@ -878,53 +872,53 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "1409:5:33", + "src": "1437:5:34", "type": "" } ], - "src": "1332:183:33" + "src": "1353:197:34" }, { "body": { "nodeType": "YulBlock", - "src": "1591:51:33", + "src": "1618:51:34", "statements": [ { "nodeType": "YulAssignment", - "src": "1601:35:33", + "src": "1628:35:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1630:5:33" + "src": "1657:5:34" } ], "functionName": { "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "1612:17:33" + "src": "1639:17:34" }, "nodeType": "YulFunctionCall", - "src": "1612:24:33" + "src": "1639:24:34" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "1601:7:33" + "src": "1628:7:34" } ] } ] }, - "name": "cleanup_t_contract$_ILBLegacyFactory_$5081", + "name": "cleanup_t_contract$_IWNATIVE_$7175", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "1573:5:33", + "src": "1600:5:34", "type": "" } ], @@ -932,21 +926,21 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "1583:7:33", + "src": "1610:7:34", "type": "" } ], - "src": "1521:121:33" + "src": "1556:113:34" }, { "body": { "nodeType": "YulBlock", - "src": "1716:104:33", + "src": "1735:96:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "1798:16:33", + "src": "1809:16:34", "statements": [ { "expression": { @@ -954,14 +948,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "1807:1:33", + "src": "1818:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1810:1:33", + "src": "1821:1:34", "type": "", "value": "0" } @@ -969,13 +963,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "1800:6:33" + "src": "1811:6:34" }, "nodeType": "YulFunctionCall", - "src": "1800:12:33" + "src": "1811:12:34" }, "nodeType": "YulExpressionStatement", - "src": "1800:12:33" + "src": "1811:12:34" } ] }, @@ -986,88 +980,88 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "1739:5:33" + "src": "1758:5:34" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1789:5:33" + "src": "1800:5:34" } ], "functionName": { - "name": "cleanup_t_contract$_ILBLegacyFactory_$5081", + "name": "cleanup_t_contract$_IWNATIVE_$7175", "nodeType": "YulIdentifier", - "src": "1746:42:33" + "src": "1765:34:34" }, "nodeType": "YulFunctionCall", - "src": "1746:49:33" + "src": "1765:41:34" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "1736:2:33" + "src": "1755:2:34" }, "nodeType": "YulFunctionCall", - "src": "1736:60:33" + "src": "1755:52:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "1729:6:33" + "src": "1748:6:34" }, "nodeType": "YulFunctionCall", - "src": "1729:68:33" + "src": "1748:60:34" }, "nodeType": "YulIf", - "src": "1726:88:33" + "src": "1745:80:34" } ] }, - "name": "validator_revert_t_contract$_ILBLegacyFactory_$5081", + "name": "validator_revert_t_contract$_IWNATIVE_$7175", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "1709:5:33", + "src": "1728:5:34", "type": "" } ], - "src": "1648:172:33" + "src": "1675:156:34" }, { "body": { "nodeType": "YulBlock", - "src": "1914:105:33", + "src": "1917:97:34", "statements": [ { "nodeType": "YulAssignment", - "src": "1924:22:33", + "src": "1927:22:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "1939:6:33" + "src": "1942:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "1933:5:33" + "src": "1936:5:34" }, "nodeType": "YulFunctionCall", - "src": "1933:13:33" + "src": "1936:13:34" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "1924:5:33" + "src": "1927:5:34" } ] }, @@ -1077,35 +1071,35 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "2007:5:33" + "src": "2002:5:34" } ], "functionName": { - "name": "validator_revert_t_contract$_ILBLegacyFactory_$5081", + "name": "validator_revert_t_contract$_IWNATIVE_$7175", "nodeType": "YulIdentifier", - "src": "1955:51:33" + "src": "1958:43:34" }, "nodeType": "YulFunctionCall", - "src": "1955:58:33" + "src": "1958:50:34" }, "nodeType": "YulExpressionStatement", - "src": "1955:58:33" + "src": "1958:50:34" } ] }, - "name": "abi_decode_t_contract$_ILBLegacyFactory_$5081_fromMemory", + "name": "abi_decode_t_contract$_IWNATIVE_$7175_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "1892:6:33", + "src": "1895:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "1900:3:33", + "src": "1903:3:34", "type": "" } ], @@ -1113,104 +1107,35 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "1908:5:33", - "type": "" - } - ], - "src": "1826:193:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2094:51:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2104:35:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2133:5:33" - } - ], - "functionName": { - "name": "cleanup_t_address", - "nodeType": "YulIdentifier", - "src": "2115:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "2115:24:33" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "2104:7:33" - } - ] - } - ] - }, - "name": "cleanup_t_contract$_ILBLegacyRouter_$5906", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2076:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "2086:7:33", + "src": "1911:5:34", "type": "" } ], - "src": "2025:120:33" + "src": "1837:177:34" }, { "body": { "nodeType": "YulBlock", - "src": "2218:103:33", + "src": "2194:615:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "2299:16:33", + "src": "2240:83:34", "statements": [ { "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2308:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2311:1:33", - "type": "", - "value": "0" - } - ], + "arguments": [], "functionName": { - "name": "revert", + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "2301:6:33" + "src": "2242:77:34" }, "nodeType": "YulFunctionCall", - "src": "2301:12:33" + "src": "2242:79:34" }, "nodeType": "YulExpressionStatement", - "src": "2301:12:33" + "src": "2242:79:34" } ] }, @@ -1219,182 +1144,350 @@ { "arguments": [ { - "name": "value", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "2241:5:33" + "src": "2215:7:34" }, { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2290:5:33" - } - ], - "functionName": { - "name": "cleanup_t_contract$_ILBLegacyRouter_$5906", - "nodeType": "YulIdentifier", - "src": "2248:41:33" - }, - "nodeType": "YulFunctionCall", - "src": "2248:48:33" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2224:9:34" } ], "functionName": { - "name": "eq", + "name": "sub", "nodeType": "YulIdentifier", - "src": "2238:2:33" + "src": "2211:3:34" }, "nodeType": "YulFunctionCall", - "src": "2238:59:33" + "src": "2211:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2236:2:34", + "type": "", + "value": "96" } ], "functionName": { - "name": "iszero", + "name": "slt", "nodeType": "YulIdentifier", - "src": "2231:6:33" + "src": "2207:3:34" }, "nodeType": "YulFunctionCall", - "src": "2231:67:33" + "src": "2207:32:34" }, "nodeType": "YulIf", - "src": "2228:87:33" - } - ] - }, - "name": "validator_revert_t_contract$_ILBLegacyRouter_$5906", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2211:5:33", - "type": "" - } - ], - "src": "2151:170:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2414:104:33", - "statements": [ + "src": "2204:119:34" + }, { - "nodeType": "YulAssignment", - "src": "2424:22:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2439:6:33" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2433:5:33" + "nodeType": "YulBlock", + "src": "2333:147:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2348:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2362:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2352:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "2433:13:33" - }, - "variableNames": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2424:5:33" + "nodeType": "YulAssignment", + "src": "2377:93:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2442:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2453:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2438:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2438:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2462:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBFactory_$4236_fromMemory", + "nodeType": "YulIdentifier", + "src": "2387:50:34" + }, + "nodeType": "YulFunctionCall", + "src": "2387:83:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2377:6:34" + } + ] } ] }, { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2506:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_contract$_ILBLegacyRouter_$5906", - "nodeType": "YulIdentifier", - "src": "2455:50:33" + "nodeType": "YulBlock", + "src": "2490:156:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2505:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2519:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2509:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "2455:57:33" - }, - "nodeType": "YulExpressionStatement", - "src": "2455:57:33" - } - ] - }, - "name": "abi_decode_t_contract$_ILBLegacyRouter_$5906_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "2392:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "2400:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2408:5:33", - "type": "" - } - ], - "src": "2327:191:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2586:51:33", - "statements": [ + { + "nodeType": "YulAssignment", + "src": "2535:101:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2608:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2619:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2604:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2604:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2628:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory", + "nodeType": "YulIdentifier", + "src": "2545:58:34" + }, + "nodeType": "YulFunctionCall", + "src": "2545:91:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2535:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "2656:146:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2671:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2685:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2675:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2701:91:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2764:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2775:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2760:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2760:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2784:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IWNATIVE_$7175_fromMemory", + "nodeType": "YulIdentifier", + "src": "2711:48:34" + }, + "nodeType": "YulFunctionCall", + "src": "2711:81:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2701:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBFactory_$4236t_contract$_ISovrynLBFactoryV1_$6916t_contract$_IWNATIVE_$7175_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2148:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2159:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2171:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2179:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2187:6:34", + "type": "" + } + ], + "src": "2020:789:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2859:57:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "2596:35:33", + "src": "2869:41:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "2625:5:33" + "src": "2884:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2891:18:34", + "type": "", + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "cleanup_t_address", + "name": "and", "nodeType": "YulIdentifier", - "src": "2607:17:33" + "src": "2880:3:34" }, "nodeType": "YulFunctionCall", - "src": "2607:24:33" + "src": "2880:30:34" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "2596:7:33" + "src": "2869:7:34" } ] } ] }, - "name": "cleanup_t_contract$_IWNATIVE_$7164", + "name": "cleanup_t_uint64", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "2568:5:33", + "src": "2841:5:34", "type": "" } ], @@ -1402,142 +1495,109 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "2578:7:33", + "src": "2851:7:34", "type": "" } ], - "src": "2524:113:33" + "src": "2815:101:34" }, { "body": { "nodeType": "YulBlock", - "src": "2703:96:33", + "src": "2985:52:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "2777:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2786:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2789:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2779:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "2779:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "2779:12:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3002:3:34" + }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "2726:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2768:5:33" - } - ], - "functionName": { - "name": "cleanup_t_contract$_IWNATIVE_$7164", - "nodeType": "YulIdentifier", - "src": "2733:34:33" - }, - "nodeType": "YulFunctionCall", - "src": "2733:41:33" + "src": "3024:5:34" } ], "functionName": { - "name": "eq", + "name": "cleanup_t_uint64", "nodeType": "YulIdentifier", - "src": "2723:2:33" + "src": "3007:16:34" }, "nodeType": "YulFunctionCall", - "src": "2723:52:33" + "src": "3007:23:34" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "2716:6:33" + "src": "2995:6:34" }, "nodeType": "YulFunctionCall", - "src": "2716:60:33" + "src": "2995:36:34" }, - "nodeType": "YulIf", - "src": "2713:80:33" + "nodeType": "YulExpressionStatement", + "src": "2995:36:34" } ] }, - "name": "validator_revert_t_contract$_IWNATIVE_$7164", + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "2696:5:33", + "src": "2973:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2980:3:34", "type": "" } ], - "src": "2643:156:33" + "src": "2922:115:34" }, { "body": { "nodeType": "YulBlock", - "src": "2885:97:33", + "src": "3139:122:34", "statements": [ { "nodeType": "YulAssignment", - "src": "2895:22:33", + "src": "3149:26:34", "value": { "arguments": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "2910:6:33" + "src": "3161:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3172:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "mload", + "name": "add", "nodeType": "YulIdentifier", - "src": "2904:5:33" + "src": "3157:3:34" }, "nodeType": "YulFunctionCall", - "src": "2904:13:33" + "src": "3157:18:34" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "2895:5:33" + "src": "3149:4:34" } ] }, @@ -1545,5824 +1605,1810 @@ "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "2970:5:33" + "src": "3227:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3240:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3251:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3236:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3236:17:34" } ], "functionName": { - "name": "validator_revert_t_contract$_IWNATIVE_$7164", + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", "nodeType": "YulIdentifier", - "src": "2926:43:33" + "src": "3185:41:34" }, "nodeType": "YulFunctionCall", - "src": "2926:50:33" + "src": "3185:69:34" }, "nodeType": "YulExpressionStatement", - "src": "2926:50:33" + "src": "3185:69:34" } ] }, - "name": "abi_decode_t_contract$_IWNATIVE_$7164_fromMemory", + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulTypedName", - "src": "2863:6:33", + "src": "3111:9:34", "type": "" }, { - "name": "end", + "name": "value0", "nodeType": "YulTypedName", - "src": "2871:3:33", + "src": "3123:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "tail", "nodeType": "YulTypedName", - "src": "2879:5:33", + "src": "3134:4:34", "type": "" } ], - "src": "2805:177:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3274:1096:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3321:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "3323:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "3323:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "3323:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3295:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3304:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3291:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3291:23:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3316:3:33", - "type": "", - "value": "192" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "3287:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3287:33:33" - }, - "nodeType": "YulIf", - "src": "3284:120:33" - }, - { - "nodeType": "YulBlock", - "src": "3414:147:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3429:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3443:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3433:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3458:93:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3523:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3534:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3519:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3519:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3543:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_ILBFactory_$4517_fromMemory", - "nodeType": "YulIdentifier", - "src": "3468:50:33" - }, - "nodeType": "YulFunctionCall", - "src": "3468:83:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3458:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "3571:149:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3586:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3600:2:33", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3590:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3616:94:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3682:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3693:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3678:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3678:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3702:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IJoeFactory_$3809_fromMemory", - "nodeType": "YulIdentifier", - "src": "3626:51:33" - }, - "nodeType": "YulFunctionCall", - "src": "3626:84:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3616:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "3730:154:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3745:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3759:2:33", - "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3749:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3775:99:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3846:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3857:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3842:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3842:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3866:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_ILBLegacyFactory_$5081_fromMemory", - "nodeType": "YulIdentifier", - "src": "3785:56:33" - }, - "nodeType": "YulFunctionCall", - "src": "3785:89:33" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "3775:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "3894:153:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3909:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3923:2:33", - "type": "", - "value": "96" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3913:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3939:98:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4009:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4020:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4005:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4005:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4029:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_ILBLegacyRouter_$5906_fromMemory", - "nodeType": "YulIdentifier", - "src": "3949:55:33" - }, - "nodeType": "YulFunctionCall", - "src": "3949:88:33" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "3939:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "4057:149:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "4072:17:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4086:3:33", - "type": "", - "value": "128" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "4076:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4103:93:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4168:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4179:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4164:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4164:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4188:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_ILBFactory_$4517_fromMemory", - "nodeType": "YulIdentifier", - "src": "4113:50:33" - }, - "nodeType": "YulFunctionCall", - "src": "4113:83:33" - }, - "variableNames": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "4103:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "4216:147:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "4231:17:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4245:3:33", - "type": "", - "value": "160" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "4235:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4262:91:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4325:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4336:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4321:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4321:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4345:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IWNATIVE_$7164_fromMemory", - "nodeType": "YulIdentifier", - "src": "4272:48:33" - }, - "nodeType": "YulFunctionCall", - "src": "4272:81:33" - }, - "variableNames": [ - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "4262:6:33" - } - ] - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_contract$_ILBFactory_$4517t_contract$_IJoeFactory_$3809t_contract$_ILBLegacyFactory_$5081t_contract$_ILBLegacyRouter_$5906t_contract$_ILBFactory_$4517t_contract$_IWNATIVE_$7164_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3204:9:33", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "3215:7:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3227:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3235:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "3243:6:33", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "3251:6:33", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "3259:6:33", - "type": "" - }, - { - "name": "value5", - "nodeType": "YulTypedName", - "src": "3267:6:33", - "type": "" - } - ], - "src": "2988:1382:33" - } - ] - }, - "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_ILBFactory_$4517(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBFactory_$4517(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBFactory_$4517(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBFactory_$4517_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBFactory_$4517(value)\n }\n\n function cleanup_t_contract$_IJoeFactory_$3809(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IJoeFactory_$3809(value) {\n if iszero(eq(value, cleanup_t_contract$_IJoeFactory_$3809(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IJoeFactory_$3809_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IJoeFactory_$3809(value)\n }\n\n function cleanup_t_contract$_ILBLegacyFactory_$5081(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBLegacyFactory_$5081(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBLegacyFactory_$5081(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBLegacyFactory_$5081_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBLegacyFactory_$5081(value)\n }\n\n function cleanup_t_contract$_ILBLegacyRouter_$5906(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBLegacyRouter_$5906(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBLegacyRouter_$5906(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBLegacyRouter_$5906_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBLegacyRouter_$5906(value)\n }\n\n function cleanup_t_contract$_IWNATIVE_$7164(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IWNATIVE_$7164(value) {\n if iszero(eq(value, cleanup_t_contract$_IWNATIVE_$7164(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IWNATIVE_$7164_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IWNATIVE_$7164(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBFactory_$4517t_contract$_IJoeFactory_$3809t_contract$_ILBLegacyFactory_$5081t_contract$_ILBLegacyRouter_$5906t_contract$_ILBFactory_$4517t_contract$_IWNATIVE_$7164_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBFactory_$4517_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IJoeFactory_$3809_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_contract$_ILBLegacyFactory_$5081_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_contract$_ILBLegacyRouter_$5906_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_contract$_ILBFactory_$4517_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_contract$_IWNATIVE_$7164_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", - "id": 33, - "language": "Yul", - "name": "#utility.yul" - } - ], - "linkReferences": {}, - "object": "61014060405234801562000011575f80fd5b5060405162007db138038062007db18339818101604052810190620000379190620002fd565b8573ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff168152505050505050505062000395565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620001ac8262000181565b9050919050565b5f620001bf82620001a0565b9050919050565b620001d181620001b3565b8114620001dc575f80fd5b50565b5f81519050620001ef81620001c6565b92915050565b5f6200020182620001a0565b9050919050565b6200021381620001f5565b81146200021e575f80fd5b50565b5f81519050620002318162000208565b92915050565b5f6200024382620001a0565b9050919050565b620002558162000237565b811462000260575f80fd5b50565b5f8151905062000273816200024a565b92915050565b5f6200028582620001a0565b9050919050565b620002978162000279565b8114620002a2575f80fd5b50565b5f81519050620002b5816200028c565b92915050565b5f620002c782620001a0565b9050919050565b620002d981620002bb565b8114620002e4575f80fd5b50565b5f81519050620002f781620002ce565b92915050565b5f805f805f8060c087890312156200031a57620003196200017d565b5b5f6200032989828a01620001df565b96505060206200033c89828a0162000221565b95505060406200034f89828a0162000263565b94505060606200036289828a01620002a5565b93505060806200037589828a01620001df565b92505060a06200038889828a01620002e7565b9150509295509295509295565b60805160a05160c05160e051610100516101205161792c620004855f395f818161018b015281816108360152818161092401528181610a1701528181610bd6015281816110870152818161188d01528181611929015281816119dc01528181611bbf01528181611c6401528181612125015281816125a7015281816129ea0152818161361d01528181613c130152613c9501525f818161271a015261396801525f81816118b401526148ef01525f8181612741015261534f01525f818161157f01526149c201525f81816115a5015281816117e301528181611a7901528181612c7e0152614a69015261792c5ff3fe608060405260043610610184575f3560e01c806392fe8e70116100d0578063ba84652311610089578063d0e380f211610063578063d0e380f2146106a8578063e038e6dc146106e4578063e9361c0814610714578063f96fe9251461073c57610210565b8063ba84652314610617578063bb558a9f14610641578063c22159b61461066b57610210565b806392fe8e70146104b2578063964f987c146104ee5780639ab6156b1461052c578063a0d376cf14610568578063a3c7271a146105a6578063b066ea7c146105e757610210565b806362c067671161013d57806371d1974a1161011757806371d1974a146103ec57806381c2fdfb1461041657806388cc58e4146104535780638efc2b2c1461047d57610210565b806362c067671461035e578063659ac74b146103865780636c9c0078146103c257610210565b80631a24f9a9146102145780632075ad22146102505780632a443fae146102805780633dc8f8ec146102bc5780634b801870146102f85780635c5035cb1461033457610210565b36610210577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461020e576040517f6c8cb79300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b34801561021f575f80fd5b5061023a60048036038101906102359190615d32565b610778565b6040516102479190615dd4565b60405180910390f35b61026a60048036038101906102659190615e17565b610b17565b6040516102779190615f4e565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190615f6e565b610e45565b6040516102b39190615dd4565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190615d32565b610fc8565b6040516102ef9190615f4e565b60405180910390f35b348015610303575f80fd5b5061031e60048036038101906103199190615f6e565b6112d7565b60405161032b9190615dd4565b60405180910390f35b34801561033f575f80fd5b5061034861157c565b604051610355919061605c565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190616075565b6115a3565b005b348015610391575f80fd5b506103ac60048036038101906103a79190616134565b6117e0565b6040516103b991906161b8565b60405180910390f35b3480156103cd575f80fd5b506103d661188a565b6040516103e391906161f1565b60405180910390f35b3480156103f7575f80fd5b506104006118b1565b60405161040d919061622a565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190616243565b6118d8565b60405161044a92919061632c565b60405180910390f35b34801561045e575f80fd5b50610467611a76565b604051610474919061605c565b60405180910390f35b61049760048036038101906104929190616376565b611a9d565b6040516104a9969594939291906163bd565b60405180910390f35b3480156104bd575f80fd5b506104d860048036038101906104d39190615f6e565b611da4565b6040516104e59190615f4e565b60405180910390f35b3480156104f9575f80fd5b50610514600480360381019061050f91906164df565b611fd5565b6040516105239392919061653e565b60405180910390f35b348015610537575f80fd5b50610552600480360381019061054d9190615d32565b612067565b60405161055f9190615dd4565b60405180910390f35b348015610573575f80fd5b5061058e600480360381019061058991906164df565b6122c8565b60405161059d9392919061653e565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190616376565b61235a565b6040516105de969594939291906163bd565b60405180910390f35b61060160048036038101906105fc9190615e17565b6124e9565b60405161060e9190615dd4565b60405180910390f35b348015610622575f80fd5b5061062b612717565b6040516106389190616593565b60405180910390f35b34801561064c575f80fd5b5061065561273e565b60405161066291906165cc565b60405180910390f35b348015610676575f80fd5b50610691600480360381019061068c91906165e5565b612765565b60405161069f92919061632c565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c991906166e1565b6128ab565b6040516106db9190615dd4565b60405180910390f35b6106fe60048036038101906106f99190615e17565b61292c565b60405161070b9190615dd4565b60405180910390f35b34801561071f575f80fd5b5061073a600480360381019061073591906167b3565b612c7c565b005b348015610747575f80fd5b50610762600480360381019061075d9190616856565b612de5565b60405161076f91906168a3565b60405180910390f35b5f81804211156107c15780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016107b892919061632c565b60405180910390fd5b845f815f01515114806107dd5750805f01515181602001515114155b806107fd57508060400151516001825f0151516107fa91906168e9565b14155b15610834576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106108865761088561691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610908578560400151865f015151815181106108c4576108c361691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016108ff9190616958565b60405180910390fd5b5f61091f875f015188602001518960400151612e66565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161097b9190616958565b602060405180830381865afa158015610996573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ba9190616985565b9050610a0088604001515f815181106109d6576109d561691c565b5b602002602001015133845f815181106109f2576109f161691c565b5b60200260200101518d612fa3565b610a148289602001518a6040015130612fdf565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a6e9190616958565b602060405180830381865afa158015610a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aad9190616985565b610ab791906169b0565b945084891115610b005788856040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610af792919061632c565b60405180910390fd5b610b0a8786613613565b5050505095945050505050565b60608180421115610b615780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610b5892919061632c565b60405180910390fd5b845f815f0151511480610b7d5750805f01515181602001515114155b80610b9d57508060400151516001825f015151610b9a91906168e9565b14155b15610bd4576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110610c2257610c2161691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ca05785604001515f81518110610c5c57610c5b61691c565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401610c979190616958565b60405180910390fd5b5f610cb7875f015188602001518960400151612e66565b9050610ccd87602001518289604001518b6136b0565b935034845f81518110610ce357610ce261691c565b5b60200260200101511115610d4a5734845f81518110610d0557610d0461691c565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401610d4192919061632c565b60405180910390fd5b610d88815f81518110610d6057610d5f61691c565b5b6020026020010151855f81518110610d7b57610d7a61691c565b5b6020026020010151613c09565b5f610d9e8289602001518a60400151888b613cde565b905088811015610de75788816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610dde92919061632c565b60405180910390fd5b845f81518110610dfa57610df961691c565b5b6020026020010151341115610e3957610e3833865f81518110610e2057610e1f61691c565b5b602002602001015134610e3391906169b0565b6141d9565b5b50505050949350505050565b5f8180421115610e8e5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610e8592919061632c565b60405180910390fd5b845f815f0151511480610eaa5750805f01515181602001515114155b80610eca57508060400151516001825f015151610ec791906168e9565b14155b15610f01576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f18875f015188602001518960400151612e66565b9050610f5e87604001515f81518110610f3457610f3361691c565b5b602002602001015133835f81518110610f5057610f4f61691c565b5b60200260200101518c612fa3565b610f73898289602001518a604001518a614293565b935083881115610fbc5787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610fb392919061632c565b60405180910390fd5b50505095945050505050565b606081804211156110125780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161100992919061632c565b60405180910390fd5b845f815f015151148061102e5750805f01515181602001515114155b8061104e57508060400151516001825f01515161104b91906168e9565b14155b15611085576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106110d7576110d661691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611159578560400151865f015151815181106111155761111461691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016111509190616958565b60405180910390fd5b5f611170875f015188602001518960400151612e66565b905061118687602001518289604001518c6136b0565b935087845f8151811061119c5761119b61691c565b5b602002602001015111156112035787845f815181106111be576111bd61691c565b5b60200260200101516040517fca7710c80000000000000000000000000000000000000000000000000000000081526004016111fa92919061632c565b60405180910390fd5b61126187604001515f8151811061121d5761121c61691c565b5b602002602001015133835f815181106112395761123861691c565b5b6020026020010151875f815181106112545761125361691c565b5b6020026020010151612fa3565b5f6112778289602001518a604001518830613cde565b9050898110156112c05789816040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016112b792919061632c565b60405180910390fd5b6112ca8782613613565b5050505095945050505050565b5f81804211156113205780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161131792919061632c565b60405180910390fd5b845f815f015151148061133c5750805f01515181602001515114155b8061135c57508060400151516001825f01515161135991906168e9565b14155b15611393576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6113aa875f015188602001518960400151612e66565b90505f87604001518251815181106113c5576113c461691c565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b81526004016114099190616958565b602060405180830381865afa158015611424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114489190616985565b905061148e89604001515f815181106114645761146361691c565b5b602002602001015133855f815181106114805761147f61691c565b5b60200260200101518e612fa3565b6114a2838a602001518b604001518b612fdf565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016114dc9190616958565b602060405180830381865afa1580156114f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151b9190616985565b61152591906169b0565b9550858a111561156e5789866040517f4feac00c00000000000000000000000000000000000000000000000000000000815260040161156592919061632c565b60405180910390fd5b505050505095945050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163091906169f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611694576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611707577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116f457806116f6565b475b905061170282826141d9565b6117db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461173457806117ad565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161176d9190616958565b602060405180830381865afa158015611788573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ac9190616985565b5b90506117da82828573ffffffffffffffffffffffffffffffffffffffff166148359092919063ffffffff16565b5b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663659ac74b868686866040518563ffffffff1660e01b81526004016118409493929190616a51565b6020604051808303815f875af115801561185c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118809190616aa8565b9050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f8082804211156119225780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161191992919061632c565b60405180910390fd5b5f6119548c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660036148c0565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c49190616ae7565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614905080611a2457898b809b50819c5050505b5f80611a34848e8e8e8e30614b87565b9150915082611a44578082611a47565b81815b8097508198505050505050611a5d8c8786614d10565b611a678684613613565b50509850989650505050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f805f806060805f611ad9885f016020810190611aba9190616b12565b896020016020810190611acd9190616b12565b8a6040013560036148c0565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b489190616ae7565b73ffffffffffffffffffffffffffffffffffffffff16885f016020810190611b709190616b12565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16885f016020810190611c069190616b12565b73ffffffffffffffffffffffffffffffffffffffff16148015611c2c5750348860600135145b15611c6257611c53886020016020810190611c479190616b12565b33838b60800135612fa3565b611c5d8134613c09565b611d78565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16886020016020810190611cac9190616b12565b73ffffffffffffffffffffffffffffffffffffffff16148015611cd25750348860800135145b15611d0757611cf8885f016020810190611cec9190616b12565b33838b60600135612fa3565b611d028134613c09565b611d77565b875f016020810190611d199190616b12565b886020016020810190611d2c9190616b12565b89606001358a60800135346040517fd0a4f13b000000000000000000000000000000000000000000000000000000008152600401611d6e959493929190616b3d565b60405180910390fd5b5b611d828882614d49565b809750819850829950839a50849b50859c505050505050505091939550919395565b60608180421115611dee5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611de592919061632c565b60405180910390fd5b845f815f0151511480611e0a5750805f01515181602001515114155b80611e2a57508060400151516001825f015151611e2791906168e9565b14155b15611e61576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611e78875f015188602001518960400151612e66565b9050611e8e87602001518289604001518c6136b0565b935087845f81518110611ea457611ea361691c565b5b60200260200101511115611f0b5787845f81518110611ec657611ec561691c565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401611f0292919061632c565b60405180910390fd5b611f6987604001515f81518110611f2557611f2461691c565b5b602002602001015133835f81518110611f4157611f4061691c565b5b6020026020010151875f81518110611f5c57611f5b61691c565b5b6020026020010151612fa3565b5f611f7f8289602001518a60400151888b613cde565b905089811015611fc85789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401611fbf92919061632c565b60405180910390fd5b5050505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663abcd783086866040518363ffffffff1660e01b8152600401612013929190616b9d565b606060405180830381865afa15801561202e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120529190616bd8565b80935081945082955050505093509350939050565b5f81804211156120b05780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016120a792919061632c565b60405180910390fd5b845f815f01515114806120cc5750805f01515181602001515114155b806120ec57508060400151516001825f0151516120e991906168e9565b14155b15612123576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106121755761217461691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146121f7578560400151865f015151815181106121b3576121b261691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016121ee9190616958565b60405180910390fd5b5f61220e875f015188602001518960400151612e66565b905061225487604001515f8151811061222a5761222961691c565b5b602002602001015133835f815181106122465761224561691c565b5b60200260200101518c612fa3565b612269898289602001518a6040015130614293565b9350838811156122b25787846040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016122a992919061632c565b60405180910390fd5b6122bc8685613613565b50505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663e77366f886866040518363ffffffff1660e01b8152600401612306929190616b9d565b606060405180830381865afa158015612321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123459190616bd8565b80935081945082955050505093509350939050565b5f805f806060805f612396885f0160208101906123779190616b12565b89602001602081019061238a9190616b12565b8a6040013560036148c0565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124059190616ae7565b73ffffffffffffffffffffffffffffffffffffffff16885f01602081019061242d9190616b12565b73ffffffffffffffffffffffffffffffffffffffff161461247a576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61249b885f01602081019061248f9190616b12565b33838b60600135612fa3565b6124bd8860200160208101906124b19190616b12565b33838b60800135612fa3565b6124c78882614d49565b809750819850829950839a50849b50859c505050505050505091939550919395565b5f81804211156125325780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161252992919061632c565b60405180910390fd5b845f815f015151148061254e5750805f01515181602001515114155b8061256e57508060400151516001825f01515161256b91906168e9565b14155b156125a5576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f815181106125f3576125f261691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146126715785604001515f8151811061262d5761262c61691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016126689190616958565b60405180910390fd5b5f612688875f015188602001518960400151612e66565b90506126ae815f815181106126a05761269f61691c565b5b602002602001015134613c09565b6126c3348289602001518a604001518a614293565b93508388111561270c5787846040517f4feac00c00000000000000000000000000000000000000000000000000000000815260040161270392919061632c565b60405180910390fd5b505050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f8082804211156127af5780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016127a692919061632c565b60405180910390fd5b5f6127c18d8d8d61ffff1660036148c0565b90505f8173ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128319190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614159050801561287357898b809b50819c5050505b612881828c8c8c8c8c614b87565b8095508196505050801561289a57838580955081965050505b505050995099975050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16634c7cffbd836040518263ffffffff1660e01b81526004016128e591906168a3565b602060405180830381865afa158015612900573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129249190616985565b905092915050565b5f81804211156129755780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161296c92919061632c565b60405180910390fd5b845f815f01515114806129915750805f01515181602001515114155b806129b157508060400151516001825f0151516129ae91906168e9565b14155b156129e8576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612a3657612a3561691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612ab45785604001515f81518110612a7057612a6f61691c565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401612aab9190616958565b60405180910390fd5b5f612acb875f015188602001518960400151612e66565b90505f8760400151825181518110612ae657612ae561691c565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612b2a9190616958565b602060405180830381865afa158015612b45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b699190616985565b9050612b8f835f81518110612b8157612b8061691c565b5b602002602001015134613c09565b612ba3838a602001518b604001518b612fdf565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401612bdd9190616958565b602060405180830381865afa158015612bf8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c1c9190616985565b612c2691906169b0565b9550858a1115612c6f5789866040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612c6692919061632c565b60405180910390fd5b5050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0991906169f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d6d576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166317fad7fc3087878787876040518763ffffffff1660e01b8152600401612db096959493929190616c90565b5f604051808303815f87803b158015612dc7575f80fd5b505af1158015612dd9573d5f803e3d5ffd5b50505050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663f5e29329836040518263ffffffff1660e01b8152600401612e1f9190615dd4565b602060405180830381865afa158015612e3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e5e9190616cf9565b905092915050565b6060835167ffffffffffffffff811115612e8357612e826158f0565b5b604051908082528060200260200182016040528015612eb15781602001602082028036833780820191505090505b5090505f80835f81518110612ec957612ec861691c565b5b602002602001015190505f5b8351811015612f9957819250846001820181518110612ef757612ef661691c565b5b60200260200101519150612f418383898481518110612f1957612f1861691c565b5b6020026020010151898581518110612f3457612f3361691c565b5b6020026020010151615321565b848281518110612f5457612f5361691c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050612ed5565b5050509392505050565b5f810315612fd957612fd88383838773ffffffffffffffffffffffffffffffffffffffff16615479909392919063ffffffff16565b5b50505050565b5f805f805f865f81518110612ff757612ff661691c565b5b602002602001015190505f5b89518110156136075789818151811061301f5761301e61691c565b5b6020026020010151925088818151811061303c5761303b61691c565b5b6020026020010151945081955087600182018151811061305f5761305e61691c565b5b60200260200101519150895160018201146130975789600182018151811061308a5761308961691c565b5b6020026020010151613099565b865b93505f60038111156130ae576130ad616d24565b5b8560038111156130c1576130c0616d24565b5b0361339d575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613111573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131359190616dcd565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161015613294575f828973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016131c99190616958565b602060405180830381865afa1580156131e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132089190616985565b0390505f6132218484846155079092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f838b6040518463ffffffff1660e01b815260040161326093929190616e89565b5f604051808303815f87803b158015613277575f80fd5b505af1158015613289573d5f803e3d5ffd5b505050505050613396565b5f818973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016132cf9190616958565b602060405180830381865afa1580156132ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061330e9190616985565b0390505f6133278385846155079092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f825f8b6040518463ffffffff1660e01b815260040161336693929190616ed1565b5f604051808303815f87803b15801561337d575f80fd5b505af115801561338f573d5f803e3d5ffd5b5050505050505b50506135fc565b600160038111156133b1576133b0616d24565b5b8560038111156133c4576133c3616d24565b5b036134e4578273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561342e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134529190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b815260040161349e929190616f19565b60408051808303815f875af11580156134b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134dd9190616f40565b50506135fb565b8273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613549573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061356d9190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b81526004016135b9929190616f19565b6020604051808303815f875af11580156135d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135f99190616fb1565b505b5b806001019050613003565b50505050505050505050565b5f8103156136ac577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016136749190615dd4565b5f604051808303815f87803b15801561368b575f80fd5b505af115801561369d573d5f803e3d5ffd5b505050506136ab82826141d9565b5b5050565b6060825167ffffffffffffffff8111156136cd576136cc6158f0565b5b6040519080825280602002602001820160405280156136fb5781602001602082028036833780820191505090505b50905081818551815181106137135761371261691c565b5b6020026020010181815250505f845190505b5f8114613c00575f8460018361373b91906169b0565b8151811061374c5761374b61691c565b5b602002602001015190505f8760018461376591906169b0565b815181106137765761377561691c565b5b602002602001015190505f8760018561378f91906169b0565b815181106137a05761379f61691c565b5b602002602001015190505f60038111156137bd576137bc616d24565b5b8260038111156137d0576137cf616d24565b5b0361393a575f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613820573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138449190616dcd565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915088868151811061387c5761387b61691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156138c257808280925081935050505b5f8787815181106138d6576138d561691c565b5b602002602001015190506138f58383836155d99092919063ffffffff16565b6fffffffffffffffffffffffffffffffff168860018961391591906169b0565b815181106139265761392561691c565b5b602002602001018181525050505050613bea565b6001600381111561394e5761394d616d24565b5b82600381111561396157613960616d24565b5b03613ae6577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635bdd4b7c828787815181106139b6576139b561691c565b5b60200260200101518673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166316dc165b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a429190616ae7565b73ffffffffffffffffffffffffffffffffffffffff16146040518463ffffffff1660e01b8152600401613a779392919061702c565b6040805180830381865afa158015613a91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ab59190616f40565b5085600186613ac491906169b0565b81518110613ad557613ad461691c565b5b602002602001018181525050613be9565b613ba581868681518110613afd57613afc61691c565b5b60200260200101518573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b899190616ae7565b73ffffffffffffffffffffffffffffffffffffffff1614611fd5565b826fffffffffffffffffffffffffffffffff16925090505085600186613bcb91906169b0565b81518110613bdc57613bdb61691c565b5b6020026020010181815250505b5b5050508080613bf890617061565b915050613725565b50949350505050565b5f810315613cda577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015613c77575f80fd5b505af1158015613c89573d5f803e3d5ffd5b5050505050613cd982827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166148359092919063ffffffff16565b5b5050565b5f805f805f80885f81518110613cf757613cf661691c565b5b602002602001015190505f5b8b518110156141ca578b8181518110613d1f57613d1e61691c565b5b602002602001015193508a8181518110613d3c57613d3b61691c565b5b60200260200101519250819550896001820181518110613d5f57613d5e61691c565b5b602002602001015191508b516001820114613d97578b6001820181518110613d8a57613d8961691c565b5b6020026020010151613d99565b875b94505f6003811115613dae57613dad616d24565b5b836003811115613dc157613dc0616d24565b5b03613ef957886001820181518110613ddc57613ddb61691c565b5b602002602001015196508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015613e89578373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f89886040518463ffffffff1660e01b8152600401613e5793929190616e89565b5f604051808303815f87803b158015613e6e575f80fd5b505af1158015613e80573d5f803e3d5ffd5b50505050613ef4565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f885f886040518463ffffffff1660e01b8152600401613ec693929190616ed1565b5f604051808303815f87803b158015613edd575f80fd5b505af1158015613eef573d5f803e3d5ffd5b505050505b6141bf565b60016003811115613f0d57613f0c616d24565b5b836003811115613f2057613f1f616d24565b5b0361405d575f8473ffffffffffffffffffffffffffffffffffffffff1663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f939190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f808673ffffffffffffffffffffffffffffffffffffffff166353c059a0848a6040518363ffffffff1660e01b8152600401614000929190616f19565b60408051808303815f875af115801561401b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061403f9190616f40565b91509150821561405157809950614055565b8199505b5050506141be565b5f8473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140cb9190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f806141808773ffffffffffffffffffffffffffffffffffffffff166353c059a0858b6040518363ffffffff1660e01b815260040161413b929190616f19565b6020604051808303815f875af1158015614157573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061417b9190616fb1565b6156b2565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff16915082156141b6578099506141ba565b8199505b5050505b5b806001019050613d03565b50505050505095945050505050565b5f81031561428f575f8273ffffffffffffffffffffffffffffffffffffffff1682604051614206906170b2565b5f6040518083038185875af1925050503d805f8114614240576040519150601f19603f3d011682016040523d82523d5f602084013e614245565b606091505b505090508061428d5782826040517f47b96f700000000000000000000000000000000000000000000000000000000081526004016142849291906170c6565b60405180910390fd5b505b5050565b5f805f805f80875f815181106142ac576142ab61691c565b5b602002602001015190508a95505f5b8a51811015614826578a81815181106142d7576142d661691c565b5b602002602001015192508981815181106142f4576142f361691c565b5b602002602001015194508195508860018201815181106143175761431661691c565b5b602002602001015191508a51600182011461434f578a60018201815181106143425761434161691c565b5b6020026020010151614351565b875b93505f600381111561436657614365616d24565b5b85600381111561437957614378616d24565b5b03614555575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156143c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143ed9190616dcd565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156144cc5761445b82828b6155079092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f8b896040518463ffffffff1660e01b815260040161449a93929190616e89565b5f604051808303815f87803b1580156144b1575f80fd5b505af11580156144c3573d5f803e3d5ffd5b5050505061454e565b6144e181838b6155079092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8a5f896040518463ffffffff1660e01b815260040161452093929190616ed1565b5f604051808303815f87803b158015614537575f80fd5b505af1158015614549573d5f803e3d5ffd5b505050505b505061481b565b6001600381111561456957614568616d24565b5b85600381111561457c5761457b616d24565b5b036146b9575f8373ffffffffffffffffffffffffffffffffffffffff1663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145ef9190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f808573ffffffffffffffffffffffffffffffffffffffff166353c059a084896040518363ffffffff1660e01b815260040161465c929190616f19565b60408051808303815f875af1158015614677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061469b9190616f40565b9150915082156146ad578099506146b1565b8199505b50505061481a565b5f8373ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614703573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147279190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f806147dc8673ffffffffffffffffffffffffffffffffffffffff166353c059a0858a6040518363ffffffff1660e01b8152600401614797929190616f19565b6020604051808303815f875af11580156147b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147d79190616fb1565b6156b2565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff169150821561481257809950614816565b8199505b5050505b5b8060010190506142bb565b50505050505095945050505050565b5f63a9059cbb60e01b83836040516024016148519291906170c6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506148ba84826156d4565b50505050565b5f600160038111156148d5576148d4616d24565b5b8260038111156148e8576148e7616d24565b5b03614994577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8686866040518463ffffffff1660e01b815260040161494a939291906170ed565b608060405180830381865afa158015614965573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061498991906171fa565b602001519050614b0b565b600260038111156149a8576149a7616d24565b5b8260038111156149bb576149ba616d24565b5b03614a67577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8686866040518463ffffffff1660e01b8152600401614a1d939291906170ed565b608060405180830381865afa158015614a38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a5c919061729a565b602001519050614b0a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8686866040518463ffffffff1660e01b8152600401614ac4939291906170ed565b608060405180830381865afa158015614adf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b03919061729a565b6020015190505b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614b7f578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401614b76939291906172c5565b60405180910390fd5b949350505050565b5f805f8873ffffffffffffffffffffffffffffffffffffffff1663c9939f5e338689896040518563ffffffff1660e01b8152600401614bc994939291906172fa565b5f604051808303815f875af1158015614be4573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190614c0c919061740b565b90505f5b8151811015614cae57614c3c828281518110614c2f57614c2e61691c565b5b602002602001015161575e565b6fffffffffffffffffffffffffffffffff1684614c5991906168e9565b9350614c7e828281518110614c7157614c7061691c565b5b6020026020010151615779565b6fffffffffffffffffffffffffffffffff1683614c9b91906168e9565b925080614ca790617452565b9050614c10565b5087831080614cbc57508682105b15614d0457878388846040517f3199f6ee000000000000000000000000000000000000000000000000000000008152600401614cfb9493929190617499565b60405180910390fd5b50965096945050505050565b5f810315614d4457614d4382828573ffffffffffffffffffffffffffffffffffffffff166148359092919063ffffffff16565b5b505050565b5f805f80606080876101c0013580421115614d9d5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401614d9492919061632c565b60405180910390fd5b88806101400190614dae91906174e8565b905089806101200190614dc1919061754a565b9050141580614df4575088806101600190614ddc91906174e8565b905089806101200190614def919061754a565b905014155b15614e2b576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62ffffff80168960e001351180614e4b575062ffffff8016896101000135115b15614e98578860e001358961010001356040517f32f4ab8e000000000000000000000000000000000000000000000000000000008152600401614e8f92919061632c565b60405180910390fd5b5f89806101200190614eaa919061754a565b905067ffffffffffffffff811115614ec557614ec46158f0565b5b604051908082528060200260200182016040528015614ef35781602001602082028036833780820191505090505b50905089806101200190614f07919061754a565b905067ffffffffffffffff811115614f2257614f216158f0565b5b604051908082528060200260200182016040528015614f505781602001602082028036833780820191505090505b5093505f8973ffffffffffffffffffffffffffffffffffffffff1663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614f9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614fc19190616cf9565b62ffffff169050808b61010001358c60e00135011080614feb57508a60e001358b61010001358201105b1561503a578a60e001358b6101000135826040517ffaa1db56000000000000000000000000000000000000000000000000000000008152600401615031939291906175ac565b60405180910390fd5b5f5b825181101561516d575f8c806101200190615057919061754a565b838181106150685761506761691c565b5b90506020020135830190505f811280615085575062ffffff801681115b156150c757806040517fe1505cc20000000000000000000000000000000000000000000000000000000081526004016150be91906175f9565b60405180910390fd5b808783815181106150db576150da61691c565b5b6020026020010181815250506151428d8061014001906150fb91906174e8565b8481811061510c5761510b61691c565b5b905060200201358e80610160019061512491906174e8565b858181106151355761513461691c565b5b9050602002013583615785565b8483815181106151555761515461691c565b5b6020026020010181815250505080600101905061503c565b50505f808a73ffffffffffffffffffffffffffffffffffffffff1663383d15c58d6101800160208101906151a19190617612565b858f6101a00160208101906151b69190617612565b6040518463ffffffff1660e01b81526004016151d4939291906176f4565b5f604051808303815f875af11580156151ef573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061521791906177c5565b8097508193508294505050505f615237828461580690919063ffffffff16565b90506152428161575e565b6fffffffffffffffffffffffffffffffff169a5061525f81615779565b6fffffffffffffffffffffffffffffffff1699508c60a001358b108061528857508c60c001358a105b156152d8578c60a001358b8e60c001358c6040517f3199f6ee0000000000000000000000000000000000000000000000000000000081526004016152cf9493929190617499565b60405180910390fd5b6152e18261575e565b6fffffffffffffffffffffffffffffffff1698506152fe82615779565b6fffffffffffffffffffffffffffffffff16975050505050509295509295509295565b5f80600381111561533557615334616d24565b5b82600381111561534857615347616d24565b5b03615462577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b81526004016153a8929190617831565b602060405180830381865afa1580156153c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906153e791906169f7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361545d578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401615454939291906172c5565b60405180910390fd5b615471565b61546e858585856148c0565b90505b949350505050565b5f6323b872dd60e01b848484604051602401615497939291906172c5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905061550085826156d4565b5050505050565b5f808403615541576040517fb229ed3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83148061554e57505f82145b15615585576040517f98c59a2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e5856155949190617858565b90505f83826155a39190617858565b90505f826103e8876155b59190617858565b6155bf91906168e9565b905080826155cd91906178c6565b93505050509392505050565b5f808403615613576040517fb229ed3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83148061562057505f82145b15615657576040517f98c59a2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e885856156679190617858565b6156719190617858565b90505f6103e5868561568391906169b0565b61568d9190617858565b90506001818361569d91906178c6565b6156a791906168e9565b925050509392505050565b5f806fffffffffffffffffffffffffffffffff831691508260801c9050915091565b5f805f5260205f8351602085015f875af19050805f8114615712573d5f81146157055760015f51148316925061570c565b843b151592505b50615721565b3d15615720573d5f803e3d5ffd5b5b5080615759576040517f32e2717a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f8160801c9050919050565b5f6157b08467ffffffffffffffff1667ffffffffffffffff60588461587e909392919063ffffffff16565b90506157dc8367ffffffffffffffff1667ffffffffffffffff60188461587e909392919063ffffffff16565b90506157fd8262ffffff1662ffffff5f8461587e909392919063ffffffff16565b90509392505050565b5f8183039050828111806158415750825f1c6fffffffffffffffffffffffffffffffff16815f1c6fffffffffffffffffffffffffffffffff16115b15615878576040517fe599af5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6158bb816158a9565b81146158c5575f80fd5b50565b5f813590506158d6816158b2565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b615926826158e0565b810181811067ffffffffffffffff82111715615945576159446158f0565b5b80604052505050565b5f615957615898565b9050615963828261591d565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561598a576159896158f0565b5b602082029050602081019050919050565b5f80fd5b5f6159b16159ac84615970565b61594e565b905080838252602082019050602084028301858111156159d4576159d361599b565b5b835b818110156159fd57806159e988826158c8565b8452602084019350506020810190506159d6565b5050509392505050565b5f82601f830112615a1b57615a1a61596c565b5b8135615a2b84826020860161599f565b91505092915050565b5f67ffffffffffffffff821115615a4e57615a4d6158f0565b5b602082029050602081019050919050565b60048110615a6b575f80fd5b50565b5f81359050615a7c81615a5f565b92915050565b5f615a94615a8f84615a34565b61594e565b90508083825260208201905060208402830185811115615ab757615ab661599b565b5b835b81811015615ae05780615acc8882615a6e565b845260208401935050602081019050615ab9565b5050509392505050565b5f82601f830112615afe57615afd61596c565b5b8135615b0e848260208601615a82565b91505092915050565b5f67ffffffffffffffff821115615b3157615b306158f0565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f615b6b82615b42565b9050919050565b5f615b7c82615b61565b9050919050565b615b8c81615b72565b8114615b96575f80fd5b50565b5f81359050615ba781615b83565b92915050565b5f615bbf615bba84615b17565b61594e565b90508083825260208201905060208402830185811115615be257615be161599b565b5b835b81811015615c0b5780615bf78882615b99565b845260208401935050602081019050615be4565b5050509392505050565b5f82601f830112615c2957615c2861596c565b5b8135615c39848260208601615bad565b91505092915050565b5f60608284031215615c5757615c566158dc565b5b615c61606061594e565b90505f82013567ffffffffffffffff811115615c8057615c7f615968565b5b615c8c84828501615a07565b5f83015250602082013567ffffffffffffffff811115615caf57615cae615968565b5b615cbb84828501615aea565b602083015250604082013567ffffffffffffffff811115615cdf57615cde615968565b5b615ceb84828501615c15565b60408301525092915050565b5f615d0182615b42565b9050919050565b615d1181615cf7565b8114615d1b575f80fd5b50565b5f81359050615d2c81615d08565b92915050565b5f805f805f60a08688031215615d4b57615d4a6158a1565b5b5f615d58888289016158c8565b9550506020615d69888289016158c8565b945050604086013567ffffffffffffffff811115615d8a57615d896158a5565b5b615d9688828901615c42565b9350506060615da788828901615d1e565b9250506080615db8888289016158c8565b9150509295509295909350565b615dce816158a9565b82525050565b5f602082019050615de75f830184615dc5565b92915050565b615df681615b61565b8114615e00575f80fd5b50565b5f81359050615e1181615ded565b92915050565b5f805f8060808587031215615e2f57615e2e6158a1565b5b5f615e3c878288016158c8565b945050602085013567ffffffffffffffff811115615e5d57615e5c6158a5565b5b615e6987828801615c42565b9350506040615e7a87828801615e03565b9250506060615e8b878288016158c8565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615ec9816158a9565b82525050565b5f615eda8383615ec0565b60208301905092915050565b5f602082019050919050565b5f615efc82615e97565b615f068185615ea1565b9350615f1183615eb1565b805f5b83811015615f41578151615f288882615ecf565b9750615f3383615ee6565b925050600181019050615f14565b5085935050505092915050565b5f6020820190508181035f830152615f668184615ef2565b905092915050565b5f805f805f60a08688031215615f8757615f866158a1565b5b5f615f94888289016158c8565b9550506020615fa5888289016158c8565b945050604086013567ffffffffffffffff811115615fc657615fc56158a5565b5b615fd288828901615c42565b9350506060615fe388828901615e03565b9250506080615ff4888289016158c8565b9150509295509295909350565b5f819050919050565b5f61602461601f61601a84615b42565b616001565b615b42565b9050919050565b5f6160358261600a565b9050919050565b5f6160468261602b565b9050919050565b6160568161603c565b82525050565b5f60208201905061606f5f83018461604d565b92915050565b5f805f6060848603121561608c5761608b6158a1565b5b5f61609986828701615b99565b93505060206160aa86828701615e03565b92505060406160bb868287016158c8565b9150509250925092565b5f62ffffff82169050919050565b6160dc816160c5565b81146160e6575f80fd5b50565b5f813590506160f7816160d3565b92915050565b5f61ffff82169050919050565b616113816160fd565b811461611d575f80fd5b50565b5f8135905061612e8161610a565b92915050565b5f805f806080858703121561614c5761614b6158a1565b5b5f61615987828801615b99565b945050602061616a87828801615b99565b935050604061617b878288016160e9565b925050606061618c87828801616120565b91505092959194509250565b5f6161a28261602b565b9050919050565b6161b281616198565b82525050565b5f6020820190506161cb5f8301846161a9565b92915050565b5f6161db8261602b565b9050919050565b6161eb816161d1565b82525050565b5f6020820190506162045f8301846161e2565b92915050565b5f6162148261602b565b9050919050565b6162248161620a565b82525050565b5f60208201905061623d5f83018461621b565b92915050565b5f805f805f805f80610100898b0312156162605761625f6158a1565b5b5f61626d8b828c01615b99565b985050602061627e8b828c01616120565b975050604061628f8b828c016158c8565b96505060606162a08b828c016158c8565b955050608089013567ffffffffffffffff8111156162c1576162c06158a5565b5b6162cd8b828c01615a07565b94505060a089013567ffffffffffffffff8111156162ee576162ed6158a5565b5b6162fa8b828c01615a07565b93505060c061630b8b828c01615d1e565b92505060e061631c8b828c016158c8565b9150509295985092959890939650565b5f60408201905061633f5f830185615dc5565b61634c6020830184615dc5565b9392505050565b5f80fd5b5f6101e0828403121561636d5761636c616353565b5b81905092915050565b5f6020828403121561638b5761638a6158a1565b5b5f82013567ffffffffffffffff8111156163a8576163a76158a5565b5b6163b484828501616357565b91505092915050565b5f60c0820190506163d05f830189615dc5565b6163dd6020830188615dc5565b6163ea6040830187615dc5565b6163f76060830186615dc5565b81810360808301526164098185615ef2565b905081810360a083015261641d8184615ef2565b9050979650505050505050565b5f61643482615b61565b9050919050565b6164448161642a565b811461644e575f80fd5b50565b5f8135905061645f8161643b565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61648981616465565b8114616493575f80fd5b50565b5f813590506164a481616480565b92915050565b5f8115159050919050565b6164be816164aa565b81146164c8575f80fd5b50565b5f813590506164d9816164b5565b92915050565b5f805f606084860312156164f6576164f56158a1565b5b5f61650386828701616451565b935050602061651486828701616496565b9250506040616525868287016164cb565b9150509250925092565b61653881616465565b82525050565b5f6060820190506165515f83018661652f565b61655e602083018561652f565b61656b604083018461652f565b949350505050565b5f61657d8261602b565b9050919050565b61658d81616573565b82525050565b5f6020820190506165a65f830184616584565b92915050565b5f6165b68261602b565b9050919050565b6165c6816165ac565b82525050565b5f6020820190506165df5f8301846165bd565b92915050565b5f805f805f805f805f6101208a8c031215616603576166026158a1565b5b5f6166108c828d01615b99565b99505060206166218c828d01615b99565b98505060406166328c828d01616120565b97505060606166438c828d016158c8565b96505060806166548c828d016158c8565b95505060a08a013567ffffffffffffffff811115616675576166746158a5565b5b6166818c828d01615a07565b94505060c08a013567ffffffffffffffff8111156166a2576166a16158a5565b5b6166ae8c828d01615a07565b93505060e06166bf8c828d01615e03565b9250506101006166d18c828d016158c8565b9150509295985092959850929598565b5f80604083850312156166f7576166f66158a1565b5b5f61670485828601616451565b9250506020616715858286016160e9565b9150509250929050565b5f61672982615b61565b9050919050565b6167398161671f565b8114616743575f80fd5b50565b5f8135905061675481616730565b92915050565b5f80fd5b5f8083601f8401126167735761677261596c565b5b8235905067ffffffffffffffff8111156167905761678f61675a565b5b6020830191508360208202830111156167ac576167ab61599b565b5b9250929050565b5f805f805f80608087890312156167cd576167cc6158a1565b5b5f6167da89828a01616746565b96505060206167eb89828a01615e03565b955050604087013567ffffffffffffffff81111561680c5761680b6158a5565b5b61681889828a0161675e565b9450945050606087013567ffffffffffffffff81111561683b5761683a6158a5565b5b61684789828a0161675e565b92509250509295509295509295565b5f806040838503121561686c5761686b6158a1565b5b5f61687985828601616451565b925050602061688a858286016158c8565b9150509250929050565b61689d816160c5565b82525050565b5f6020820190506168b65f830184616894565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6168f3826158a9565b91506168fe836158a9565b9250828201905080821115616916576169156168bc565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61695281615b61565b82525050565b5f60208201905061696b5f830184616949565b92915050565b5f8151905061697f816158b2565b92915050565b5f6020828403121561699a576169996158a1565b5b5f6169a784828501616971565b91505092915050565b5f6169ba826158a9565b91506169c5836158a9565b92508282039050818111156169dd576169dc6168bc565b5b92915050565b5f815190506169f181615ded565b92915050565b5f60208284031215616a0c57616a0b6158a1565b5b5f616a19848285016169e3565b91505092915050565b5f616a2c8261602b565b9050919050565b616a3c81616a22565b82525050565b616a4b816160fd565b82525050565b5f608082019050616a645f830187616a33565b616a716020830186616a33565b616a7e6040830185616894565b616a8b6060830184616a42565b95945050505050565b5f81519050616aa28161643b565b92915050565b5f60208284031215616abd57616abc6158a1565b5b5f616aca84828501616a94565b91505092915050565b5f81519050616ae181615b83565b92915050565b5f60208284031215616afc57616afb6158a1565b5b5f616b0984828501616ad3565b91505092915050565b5f60208284031215616b2757616b266158a1565b5b5f616b3484828501615b99565b91505092915050565b5f60a082019050616b505f830188616949565b616b5d6020830187616949565b616b6a6040830186615dc5565b616b776060830185615dc5565b616b846080830184615dc5565b9695505050505050565b616b97816164aa565b82525050565b5f604082019050616bb05f83018561652f565b616bbd6020830184616b8e565b9392505050565b5f81519050616bd281616480565b92915050565b5f805f60608486031215616bef57616bee6158a1565b5b5f616bfc86828701616bc4565b9350506020616c0d86828701616bc4565b9250506040616c1e86828701616bc4565b9150509250925092565b5f80fd5b82818337505050565b5f616c408385615ea1565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115616c7357616c72616c28565b5b602083029250616c84838584616c2c565b82840190509392505050565b5f608082019050616ca35f830189616949565b616cb06020830188616949565b8181036040830152616cc3818688616c35565b90508181036060830152616cd8818486616c35565b9050979650505050505050565b5f81519050616cf3816160d3565b92915050565b5f60208284031215616d0e57616d0d6158a1565b5b5f616d1b84828501616ce5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6dffffffffffffffffffffffffffff82169050919050565b616d7381616d51565b8114616d7d575f80fd5b50565b5f81519050616d8e81616d6a565b92915050565b5f63ffffffff82169050919050565b616dac81616d94565b8114616db6575f80fd5b50565b5f81519050616dc781616da3565b92915050565b5f805f60608486031215616de457616de36158a1565b5b5f616df186828701616d80565b9350506020616e0286828701616d80565b9250506040616e1386828701616db9565b9150509250925092565b5f819050919050565b5f616e40616e3b616e3684616e1d565b616001565b6158a9565b9050919050565b616e5081616e26565b82525050565b5f82825260208201905092915050565b50565b5f616e745f83616e56565b9150616e7f82616e66565b5f82019050919050565b5f608082019050616e9c5f830186616e47565b616ea96020830185615dc5565b616eb66040830184616949565b8181036060830152616ec781616e69565b9050949350505050565b5f608082019050616ee45f830186615dc5565b616ef16020830185616e47565b616efe6040830184616949565b8181036060830152616f0f81616e69565b9050949350505050565b5f604082019050616f2c5f830185616b8e565b616f396020830184616949565b9392505050565b5f8060408385031215616f5657616f556158a1565b5b5f616f6385828601616971565b9250506020616f7485828601616971565b9150509250929050565b5f819050919050565b616f9081616f7e565b8114616f9a575f80fd5b50565b5f81519050616fab81616f87565b92915050565b5f60208284031215616fc657616fc56158a1565b5b5f616fd384828501616f9d565b91505092915050565b5f616fe68261602b565b9050919050565b616ff681616fdc565b82525050565b5f61701661701161700c84616465565b616001565b6158a9565b9050919050565b61702681616ffc565b82525050565b5f60608201905061703f5f830186616fed565b61704c602083018561701d565b6170596040830184616b8e565b949350505050565b5f61706b826158a9565b91505f820361707d5761707c6168bc565b5b600182039050919050565b5f81905092915050565b5f61709d5f83617088565b91506170a882616e66565b5f82019050919050565b5f6170bc82617092565b9150819050919050565b5f6040820190506170d95f830185616949565b6170e66020830184615dc5565b9392505050565b5f6060820190506171005f830186616a33565b61710d6020830185616a33565b61711a6040830184615dc5565b949350505050565b5f815190506171308161610a565b92915050565b5f61714082615b61565b9050919050565b61715081617136565b811461715a575f80fd5b50565b5f8151905061716b81617147565b92915050565b5f8151905061717f816164b5565b92915050565b5f6080828403121561719a576171996158dc565b5b6171a4608061594e565b90505f6171b384828501617122565b5f8301525060206171c68482850161715d565b60208301525060406171da84828501617171565b60408301525060606171ee84828501617171565b60608301525092915050565b5f6080828403121561720f5761720e6158a1565b5b5f61721c84828501617185565b91505092915050565b5f6080828403121561723a576172396158dc565b5b617244608061594e565b90505f61725384828501617122565b5f83015250602061726684828501616a94565b602083015250604061727a84828501617171565b604083015250606061728e84828501617171565b60608301525092915050565b5f608082840312156172af576172ae6158a1565b5b5f6172bc84828501617225565b91505092915050565b5f6060820190506172d85f830186616949565b6172e56020830185616949565b6172f26040830184615dc5565b949350505050565b5f60808201905061730d5f830187616949565b61731a6020830186616949565b818103604083015261732c8185615ef2565b905081810360608301526173408184615ef2565b905095945050505050565b5f67ffffffffffffffff821115617365576173646158f0565b5b602082029050602081019050919050565b5f6173886173838461734b565b61594e565b905080838252602082019050602084028301858111156173ab576173aa61599b565b5b835b818110156173d457806173c08882616f9d565b8452602084019350506020810190506173ad565b5050509392505050565b5f82601f8301126173f2576173f161596c565b5b8151617402848260208601617376565b91505092915050565b5f602082840312156174205761741f6158a1565b5b5f82015167ffffffffffffffff81111561743d5761743c6158a5565b5b617449848285016173de565b91505092915050565b5f61745c826158a9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361748e5761748d6168bc565b5b600182019050919050565b5f6080820190506174ac5f830187615dc5565b6174b96020830186615dc5565b6174c66040830185615dc5565b6174d36060830184615dc5565b95945050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112617504576175036174dc565b5b80840192508235915067ffffffffffffffff821115617526576175256174e0565b5b602083019250602082023603831315617542576175416174e4565b5b509250929050565b5f8083356001602003843603038112617566576175656174dc565b5b80840192508235915067ffffffffffffffff821115617588576175876174e0565b5b6020830192506020820236038313156175a4576175a36174e4565b5b509250929050565b5f6060820190506175bf5f830186615dc5565b6175cc6020830185615dc5565b6175d96040830184615dc5565b949350505050565b5f819050919050565b6175f3816175e1565b82525050565b5f60208201905061760c5f8301846175ea565b92915050565b5f60208284031215617627576176266158a1565b5b5f61763484828501615e03565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61766f81616f7e565b82525050565b5f6176808383617666565b60208301905092915050565b5f602082019050919050565b5f6176a28261763d565b6176ac8185617647565b93506176b783617657565b805f5b838110156176e75781516176ce8882617675565b97506176d98361768c565b9250506001810190506176ba565b5085935050505092915050565b5f6060820190506177075f830186616949565b81810360208301526177198185617698565b90506177286040830184616949565b949350505050565b5f61774261773d84615970565b61594e565b905080838252602082019050602084028301858111156177655761776461599b565b5b835b8181101561778e578061777a8882616971565b845260208401935050602081019050617767565b5050509392505050565b5f82601f8301126177ac576177ab61596c565b5b81516177bc848260208601617730565b91505092915050565b5f805f606084860312156177dc576177db6158a1565b5b5f6177e986828701616f9d565b93505060206177fa86828701616f9d565b925050604084015167ffffffffffffffff81111561781b5761781a6158a5565b5b61782786828701617798565b9150509250925092565b5f6040820190506178445f830185616949565b6178516020830184616949565b9392505050565b5f617862826158a9565b915061786d836158a9565b925082820261787b816158a9565b91508282048414831517617892576178916168bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6178d0826158a9565b91506178db836158a9565b9250826178eb576178ea617899565b5b82820490509291505056fea264697066735822122015ff779b1f3e06be3f48b2be62e5423313c5f815fb176a2fd491fea47135ef0b64736f6c63430008140033", - "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x7DB1 CODESIZE SUB DUP1 PUSH3 0x7DB1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x2FD JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xE0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x100 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x120 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP POP POP POP POP PUSH3 0x395 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x1AC DUP3 PUSH3 0x181 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x1BF DUP3 PUSH3 0x1A0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1D1 DUP2 PUSH3 0x1B3 JUMP JUMPDEST DUP2 EQ PUSH3 0x1DC JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x1EF DUP2 PUSH3 0x1C6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x201 DUP3 PUSH3 0x1A0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x213 DUP2 PUSH3 0x1F5 JUMP JUMPDEST DUP2 EQ PUSH3 0x21E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x231 DUP2 PUSH3 0x208 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x243 DUP3 PUSH3 0x1A0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x255 DUP2 PUSH3 0x237 JUMP JUMPDEST DUP2 EQ PUSH3 0x260 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x273 DUP2 PUSH3 0x24A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x285 DUP3 PUSH3 0x1A0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x297 DUP2 PUSH3 0x279 JUMP JUMPDEST DUP2 EQ PUSH3 0x2A2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x2B5 DUP2 PUSH3 0x28C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x2C7 DUP3 PUSH3 0x1A0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x2D9 DUP2 PUSH3 0x2BB JUMP JUMPDEST DUP2 EQ PUSH3 0x2E4 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x2F7 DUP2 PUSH3 0x2CE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x31A JUMPI PUSH3 0x319 PUSH3 0x17D JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x329 DUP10 DUP3 DUP11 ADD PUSH3 0x1DF JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH3 0x33C DUP10 DUP3 DUP11 ADD PUSH3 0x221 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH3 0x34F DUP10 DUP3 DUP11 ADD PUSH3 0x263 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH3 0x362 DUP10 DUP3 DUP11 ADD PUSH3 0x2A5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH3 0x375 DUP10 DUP3 DUP11 ADD PUSH3 0x1DF JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 PUSH3 0x388 DUP10 DUP3 DUP11 ADD PUSH3 0x2E7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x792C PUSH3 0x485 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x18B ADD MSTORE DUP2 DUP2 PUSH2 0x836 ADD MSTORE DUP2 DUP2 PUSH2 0x924 ADD MSTORE DUP2 DUP2 PUSH2 0xA17 ADD MSTORE DUP2 DUP2 PUSH2 0xBD6 ADD MSTORE DUP2 DUP2 PUSH2 0x1087 ADD MSTORE DUP2 DUP2 PUSH2 0x188D ADD MSTORE DUP2 DUP2 PUSH2 0x1929 ADD MSTORE DUP2 DUP2 PUSH2 0x19DC ADD MSTORE DUP2 DUP2 PUSH2 0x1BBF ADD MSTORE DUP2 DUP2 PUSH2 0x1C64 ADD MSTORE DUP2 DUP2 PUSH2 0x2125 ADD MSTORE DUP2 DUP2 PUSH2 0x25A7 ADD MSTORE DUP2 DUP2 PUSH2 0x29EA ADD MSTORE DUP2 DUP2 PUSH2 0x361D ADD MSTORE DUP2 DUP2 PUSH2 0x3C13 ADD MSTORE PUSH2 0x3C95 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x271A ADD MSTORE PUSH2 0x3968 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x18B4 ADD MSTORE PUSH2 0x48EF ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x2741 ADD MSTORE PUSH2 0x534F ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x157F ADD MSTORE PUSH2 0x49C2 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x15A5 ADD MSTORE DUP2 DUP2 PUSH2 0x17E3 ADD MSTORE DUP2 DUP2 PUSH2 0x1A79 ADD MSTORE DUP2 DUP2 PUSH2 0x2C7E ADD MSTORE PUSH2 0x4A69 ADD MSTORE PUSH2 0x792C PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x184 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92FE8E70 GT PUSH2 0xD0 JUMPI DUP1 PUSH4 0xBA846523 GT PUSH2 0x89 JUMPI DUP1 PUSH4 0xD0E380F2 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xD0E380F2 EQ PUSH2 0x6A8 JUMPI DUP1 PUSH4 0xE038E6DC EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0xE9361C08 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xF96FE925 EQ PUSH2 0x73C JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0xBA846523 EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xBB558A9F EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0xC22159B6 EQ PUSH2 0x66B JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x92FE8E70 EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0x964F987C EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x9AB6156B EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0xA0D376CF EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0xA3C7271A EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0xB066EA7C EQ PUSH2 0x5E7 JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x62C06767 GT PUSH2 0x13D JUMPI DUP1 PUSH4 0x71D1974A GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x71D1974A EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x81C2FDFB EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0x8EFC2B2C EQ PUSH2 0x47D JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x62C06767 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x3C2 JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x1A24F9A9 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x2075AD22 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x2A443FAE EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x3DC8F8EC EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x4B801870 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x5C5035CB EQ PUSH2 0x334 JUMPI PUSH2 0x210 JUMP JUMPDEST CALLDATASIZE PUSH2 0x210 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x20E JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C8CB79300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x235 SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH2 0x778 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x265 SWAP2 SWAP1 PUSH2 0x5E17 JUMP JUMPDEST PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x277 SWAP2 SWAP1 PUSH2 0x5F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x5F6E JUMP JUMPDEST PUSH2 0xE45 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH2 0xFC8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EF SWAP2 SWAP1 PUSH2 0x5F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x31E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x5F6E JUMP JUMPDEST PUSH2 0x12D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x348 PUSH2 0x157C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x355 SWAP2 SWAP1 PUSH2 0x605C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x384 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37F SWAP2 SWAP1 PUSH2 0x6075 JUMP JUMPDEST PUSH2 0x15A3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x6134 JUMP JUMPDEST PUSH2 0x17E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0x61B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x188A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E3 SWAP2 SWAP1 PUSH2 0x61F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x18B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x40D SWAP2 SWAP1 PUSH2 0x622A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x437 SWAP2 SWAP1 PUSH2 0x6243 JUMP JUMPDEST PUSH2 0x18D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x44A SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1A76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x474 SWAP2 SWAP1 PUSH2 0x605C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x492 SWAP2 SWAP1 PUSH2 0x6376 JUMP JUMPDEST PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A9 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x63BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D3 SWAP2 SWAP1 PUSH2 0x5F6E JUMP JUMPDEST PUSH2 0x1DA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E5 SWAP2 SWAP1 PUSH2 0x5F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x514 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50F SWAP2 SWAP1 PUSH2 0x64DF JUMP JUMPDEST PUSH2 0x1FD5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x523 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x653E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x537 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x573 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x58E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x589 SWAP2 SWAP1 PUSH2 0x64DF JUMP JUMPDEST PUSH2 0x22C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x59D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x653E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5C7 SWAP2 SWAP1 PUSH2 0x6376 JUMP JUMPDEST PUSH2 0x235A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5DE SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x63BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x601 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5FC SWAP2 SWAP1 PUSH2 0x5E17 JUMP JUMPDEST PUSH2 0x24E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60E SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x62B PUSH2 0x2717 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x638 SWAP2 SWAP1 PUSH2 0x6593 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x655 PUSH2 0x273E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x662 SWAP2 SWAP1 PUSH2 0x65CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x676 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x691 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x68C SWAP2 SWAP1 PUSH2 0x65E5 JUMP JUMPDEST PUSH2 0x2765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x69F SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6CE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0x66E1 JUMP JUMPDEST PUSH2 0x28AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6DB SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6FE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F9 SWAP2 SWAP1 PUSH2 0x5E17 JUMP JUMPDEST PUSH2 0x292C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x70B SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x73A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x735 SWAP2 SWAP1 PUSH2 0x67B3 JUMP JUMPDEST PUSH2 0x2C7C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x762 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x6856 JUMP JUMPDEST PUSH2 0x2DE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x76F SWAP2 SWAP1 PUSH2 0x68A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x7C1 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B8 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x7DD JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x7FD JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x7FA SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x834 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x886 JUMPI PUSH2 0x885 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x908 JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x8C4 JUMPI PUSH2 0x8C3 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x91F DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x97B SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP PUSH2 0xA00 DUP9 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x9D6 JUMPI PUSH2 0x9D5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x9F2 JUMPI PUSH2 0x9F1 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0xA14 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x2FDF JUMP JUMPDEST DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA6E SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA89 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAD SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST PUSH2 0xAB7 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST SWAP5 POP DUP5 DUP10 GT ISZERO PUSH2 0xB00 JUMPI DUP9 DUP6 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAF7 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB0A DUP8 DUP7 PUSH2 0x3613 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xB61 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB58 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xB7D JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xB9D JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xB9A SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xBD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC22 JUMPI PUSH2 0xC21 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xCA0 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC5C JUMPI PUSH2 0xC5B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC97 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xCB7 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x36B0 JUMP JUMPDEST SWAP4 POP CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCE3 JUMPI PUSH2 0xCE2 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xD4A JUMPI CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD05 JUMPI PUSH2 0xD04 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD41 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD88 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD60 JUMPI PUSH2 0xD5F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD7B JUMPI PUSH2 0xD7A PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3C09 JUMP JUMPDEST PUSH0 PUSH2 0xD9E DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3CDE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI DUP9 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDDE SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xDFA JUMPI PUSH2 0xDF9 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0xE39 JUMPI PUSH2 0xE38 CALLER DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xE20 JUMPI PUSH2 0xE1F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0xE33 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST PUSH2 0x41D9 JUMP JUMPDEST JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xE8E JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE85 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xEAA JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xECA JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xEC7 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xF01 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xF18 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0xF5E DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xF34 JUMPI PUSH2 0xF33 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xF50 JUMPI PUSH2 0xF4F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0xF73 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x4293 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0xFBC JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFB3 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1012 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1009 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x102E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x104E JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x104B SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1085 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x10D7 JUMPI PUSH2 0x10D6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1159 JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1115 JUMPI PUSH2 0x1114 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1150 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1170 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x1186 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x36B0 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x119C JUMPI PUSH2 0x119B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1203 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x11BE JUMPI PUSH2 0x11BD PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11FA SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1261 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x121D JUMPI PUSH2 0x121C PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1239 JUMPI PUSH2 0x1238 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1254 JUMPI PUSH2 0x1253 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH0 PUSH2 0x1277 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 ADDRESS PUSH2 0x3CDE JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x12C0 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12B7 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CA DUP8 DUP3 PUSH2 0x3613 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1320 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1317 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x133C JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x135C JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1359 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1393 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x13AA DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x13C5 JUMPI PUSH2 0x13C4 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1409 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1424 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1448 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP PUSH2 0x148E DUP10 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1464 JUMPI PUSH2 0x1463 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1480 JUMPI PUSH2 0x147F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x14A2 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x2FDF JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14DC SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x151B SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST PUSH2 0x1525 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x156E JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1565 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1630 SWAP2 SWAP1 PUSH2 0x69F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1694 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1707 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x16F4 JUMPI DUP1 PUSH2 0x16F6 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x1702 DUP3 DUP3 PUSH2 0x41D9 JUMP JUMPDEST PUSH2 0x17DB JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1734 JUMPI DUP1 PUSH2 0x17AD JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x176D SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1788 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17AC SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x17DA DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4835 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x659AC74B DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1840 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A51 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x185C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1880 SWAP2 SWAP1 PUSH2 0x6AA8 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1922 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1919 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1954 DUP13 PUSH32 0x0 DUP14 PUSH2 0xFFFF AND PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C4 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP1 PUSH2 0x1A24 JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH0 DUP1 PUSH2 0x1A34 DUP5 DUP15 DUP15 DUP15 DUP15 ADDRESS PUSH2 0x4B87 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1A44 JUMPI DUP1 DUP3 PUSH2 0x1A47 JUMP JUMPDEST DUP2 DUP2 JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP POP POP POP POP POP PUSH2 0x1A5D DUP13 DUP8 DUP7 PUSH2 0x4D10 JUMP JUMPDEST PUSH2 0x1A67 DUP7 DUP5 PUSH2 0x3613 JUMP JUMPDEST POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x1AD9 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1ABA SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1ACD SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B24 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B48 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B70 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1BBD JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C06 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1C2C JUMPI POP CALLVALUE DUP9 PUSH1 0x60 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1C62 JUMPI PUSH2 0x1C53 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C47 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x1C5D DUP2 CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x1D78 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CAC SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1CD2 JUMPI POP CALLVALUE DUP9 PUSH1 0x80 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1D07 JUMPI PUSH2 0x1CF8 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CEC SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x1D02 DUP2 CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x1D77 JUMP JUMPDEST DUP8 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D19 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D2C SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP10 PUSH1 0x60 ADD CALLDATALOAD DUP11 PUSH1 0x80 ADD CALLDATALOAD CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xD0A4F13B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D6E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6B3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x1D82 DUP9 DUP3 PUSH2 0x4D49 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1DEE JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DE5 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x1E0A JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x1E2A JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1E27 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E78 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E8E DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x36B0 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1EA4 JUMPI PUSH2 0x1EA3 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F0B JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1EC6 JUMPI PUSH2 0x1EC5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F02 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F69 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F25 JUMPI PUSH2 0x1F24 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F41 JUMPI PUSH2 0x1F40 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F5C JUMPI PUSH2 0x1F5B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH0 PUSH2 0x1F7F DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3CDE JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x1FC8 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FBF SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xABCD7830 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2013 SWAP3 SWAP2 SWAP1 PUSH2 0x6B9D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x202E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2052 SWAP2 SWAP1 PUSH2 0x6BD8 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x20B0 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20A7 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x20CC JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x20EC JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x20E9 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x2123 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2175 JUMPI PUSH2 0x2174 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x21F7 JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x21B3 JUMPI PUSH2 0x21B2 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21EE SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x220E DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x2254 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x222A JUMPI PUSH2 0x2229 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2246 JUMPI PUSH2 0x2245 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x2269 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x4293 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x22B2 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A9 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22BC DUP7 DUP6 PUSH2 0x3613 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE77366F8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2306 SWAP3 SWAP2 SWAP1 PUSH2 0x6B9D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2321 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2345 SWAP2 SWAP1 PUSH2 0x6BD8 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x2396 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2377 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x238A SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23E1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x242D SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x247A JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x249B DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x248F SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x24BD DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x24B1 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x24C7 DUP9 DUP3 PUSH2 0x4D49 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2532 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2529 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x254E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x256E JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x256B SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x25F3 JUMPI PUSH2 0x25F2 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2671 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x262D JUMPI PUSH2 0x262C PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2668 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2688 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x26AE DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x26A0 JUMPI PUSH2 0x269F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x26C3 CALLVALUE DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x4293 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x270C JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2703 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x27AF JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A6 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x27C1 DUP14 DUP14 DUP14 PUSH2 0xFFFF AND PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x280D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2831 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x2873 JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH2 0x2881 DUP3 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x4B87 JUMP JUMPDEST DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP DUP1 ISZERO PUSH2 0x289A JUMPI DUP4 DUP6 DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP JUMPDEST POP POP POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7CFFBD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28E5 SWAP2 SWAP1 PUSH2 0x68A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2900 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2924 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2975 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x296C SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x2991 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x29B1 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x29AE SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x29E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A36 JUMPI PUSH2 0x2A35 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2AB4 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A70 JUMPI PUSH2 0x2A6F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AAB SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2ACB DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2AE6 JUMPI PUSH2 0x2AE5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B2A SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B45 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B69 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B8F DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2B81 JUMPI PUSH2 0x2B80 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x2BA3 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x2FDF JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BDD SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BF8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C1C SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST PUSH2 0x2C26 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x2C6F JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C66 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D09 SWAP2 SWAP1 PUSH2 0x69F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2D6D JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17FAD7FC ADDRESS DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2DB0 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C90 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DC7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DD9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5E29329 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E1F SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E3A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E5E SWAP2 SWAP1 PUSH2 0x6CF9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E83 JUMPI PUSH2 0x2E82 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2EB1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 DUP1 DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2EC9 JUMPI PUSH2 0x2EC8 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2F99 JUMPI DUP2 SWAP3 POP DUP5 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2EF7 JUMPI PUSH2 0x2EF6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH2 0x2F41 DUP4 DUP4 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F19 JUMPI PUSH2 0x2F18 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2F34 JUMPI PUSH2 0x2F33 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5321 JUMP JUMPDEST DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F54 JUMPI PUSH2 0x2F53 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2ED5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x2FD9 JUMPI PUSH2 0x2FD8 DUP4 DUP4 DUP4 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5479 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2FF7 JUMPI PUSH2 0x2FF6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x3607 JUMPI DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x301F JUMPI PUSH2 0x301E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x303C JUMPI PUSH2 0x303B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP8 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x305F JUMPI PUSH2 0x305E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP10 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3097 JUMPI DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x308A JUMPI PUSH2 0x3089 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3099 JUMP JUMPDEST DUP7 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30AE JUMPI PUSH2 0x30AD PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30C1 JUMPI PUSH2 0x30C0 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x339D JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3111 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3135 SWAP2 SWAP1 PUSH2 0x6DCD JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3294 JUMPI PUSH0 DUP3 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x31C9 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31E4 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3208 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3221 DUP5 DUP5 DUP5 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP4 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3260 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E89 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3277 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3289 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x3396 JUMP JUMPDEST PUSH0 DUP2 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32CF SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x330E SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3327 DUP4 DUP6 DUP5 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP3 PUSH0 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3366 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6ED1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x337D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x338F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP PUSH2 0x35FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33B1 JUMPI PUSH2 0x33B0 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33C4 JUMPI PUSH2 0x33C3 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x34E4 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB7D19FC4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x342E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3452 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x349E SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34B9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34DD SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST POP POP PUSH2 0x35FB JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3549 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x356D SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35B9 SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35D5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35F9 SWAP2 SWAP1 PUSH2 0x6FB1 JUMP JUMPDEST POP JUMPDEST JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3003 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x36AC JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3674 SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x368B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x369D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x36AB DUP3 DUP3 PUSH2 0x41D9 JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36CD JUMPI PUSH2 0x36CC PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x36FB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 DUP6 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3713 JUMPI PUSH2 0x3712 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH0 DUP5 MLOAD SWAP1 POP JUMPDEST PUSH0 DUP2 EQ PUSH2 0x3C00 JUMPI PUSH0 DUP5 PUSH1 0x1 DUP4 PUSH2 0x373B SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x374C JUMPI PUSH2 0x374B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP5 PUSH2 0x3765 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3776 JUMPI PUSH2 0x3775 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP6 PUSH2 0x378F SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x37A0 JUMPI PUSH2 0x379F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37BD JUMPI PUSH2 0x37BC PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37D0 JUMPI PUSH2 0x37CF PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x393A JUMPI PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3820 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3844 SWAP2 SWAP1 PUSH2 0x6DCD JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x387C JUMPI PUSH2 0x387B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x38C2 JUMPI DUP1 DUP3 DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP JUMPDEST PUSH0 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x38D6 JUMPI PUSH2 0x38D5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x38F5 DUP4 DUP4 DUP4 PUSH2 0x55D9 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x1 DUP10 PUSH2 0x3915 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3926 JUMPI PUSH2 0x3925 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP POP PUSH2 0x3BEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x394E JUMPI PUSH2 0x394D PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3961 JUMPI PUSH2 0x3960 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3AE6 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5BDD4B7C DUP3 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x39B6 JUMPI PUSH2 0x39B5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16DC165B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A1E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A42 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A77 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x702C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A91 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3AB5 SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3AC4 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3AD5 JUMPI PUSH2 0x3AD4 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH2 0x3BA5 DUP2 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3AFD JUMPI PUSH2 0x3AFC PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B65 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B89 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1FD5 JUMP JUMPDEST DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP SWAP1 POP POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3BCB SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3BDC JUMPI PUSH2 0x3BDB PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x3BF8 SWAP1 PUSH2 0x7061 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3725 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3CDA JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C77 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C89 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3CD9 DUP3 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4835 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP9 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3CF7 JUMPI PUSH2 0x3CF6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x41CA JUMPI DUP12 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3D1F JUMPI PUSH2 0x3D1E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3D3C JUMPI PUSH2 0x3D3B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP2 SWAP6 POP DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3D5F JUMPI PUSH2 0x3D5E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP12 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3D97 JUMPI DUP12 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3D8A JUMPI PUSH2 0x3D89 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3D99 JUMP JUMPDEST DUP8 JUMPDEST SWAP5 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DAE JUMPI PUSH2 0x3DAD PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DC1 JUMPI PUSH2 0x3DC0 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3EF9 JUMPI DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3DDC JUMPI PUSH2 0x3DDB PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3E89 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E57 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E89 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E6E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E80 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3EF4 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP9 PUSH0 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3EC6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6ED1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EDD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EEF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x41BF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F0D JUMPI PUSH2 0x3F0C PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F20 JUMPI PUSH2 0x3F1F PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x405D JUMPI PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB7D19FC4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F6F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F93 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4000 SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x401B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x403F SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 ISZERO PUSH2 0x4051 JUMPI DUP1 SWAP10 POP PUSH2 0x4055 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP PUSH2 0x41BE JUMP JUMPDEST PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40A7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x40CB SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x4180 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x413B SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4157 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x417B SWAP2 SWAP1 PUSH2 0x6FB1 JUMP JUMPDEST PUSH2 0x56B2 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x41B6 JUMPI DUP1 SWAP10 POP PUSH2 0x41BA JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3D03 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x428F JUMPI PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x4206 SWAP1 PUSH2 0x70B2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x4240 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4245 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x428D JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x47B96F7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4284 SWAP3 SWAP2 SWAP1 PUSH2 0x70C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x42AC JUMPI PUSH2 0x42AB PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP11 SWAP6 POP PUSH0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x4826 JUMPI DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x42D7 JUMPI PUSH2 0x42D6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x42F4 JUMPI PUSH2 0x42F3 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4317 JUMPI PUSH2 0x4316 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP11 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x434F JUMPI DUP11 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4342 JUMPI PUSH2 0x4341 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4351 JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4366 JUMPI PUSH2 0x4365 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4379 JUMPI PUSH2 0x4378 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4555 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43C9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x43ED SWAP2 SWAP1 PUSH2 0x6DCD JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x44CC JUMPI PUSH2 0x445B DUP3 DUP3 DUP12 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP12 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x449A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E89 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x454E JUMP JUMPDEST PUSH2 0x44E1 DUP2 DUP4 DUP12 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP11 PUSH0 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4520 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6ED1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4537 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4549 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH2 0x481B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4569 JUMPI PUSH2 0x4568 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x457C JUMPI PUSH2 0x457B PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x46B9 JUMPI PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB7D19FC4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45CB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x45EF SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 DUP10 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x465C SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4677 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x469B SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 ISZERO PUSH2 0x46AD JUMPI DUP1 SWAP10 POP PUSH2 0x46B1 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP PUSH2 0x481A JUMP JUMPDEST PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4703 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4727 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x47DC DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4797 SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47B3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47D7 SWAP2 SWAP1 PUSH2 0x6FB1 JUMP JUMPDEST PUSH2 0x56B2 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x4812 JUMPI DUP1 SWAP10 POP PUSH2 0x4816 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x42BB JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4851 SWAP3 SWAP2 SWAP1 PUSH2 0x70C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x48BA DUP5 DUP3 PUSH2 0x56D4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48D5 JUMPI PUSH2 0x48D4 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48E8 JUMPI PUSH2 0x48E7 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4994 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x494A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x70ED JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4965 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4989 SWAP2 SWAP1 PUSH2 0x71FA JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x4B0B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x49A8 JUMPI PUSH2 0x49A7 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x49BB JUMPI PUSH2 0x49BA PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4A67 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4A1D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x70ED JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A38 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4A5C SWAP2 SWAP1 PUSH2 0x729A JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x4B0A JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AC4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x70ED JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4ADF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B03 SWAP2 SWAP1 PUSH2 0x729A JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP JUMPDEST JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4B7F JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4B76 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC9939F5E CALLER DUP7 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BC9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72FA JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4BE4 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C0C SWAP2 SWAP1 PUSH2 0x740B JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4CAE JUMPI PUSH2 0x4C3C DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4C2F JUMPI PUSH2 0x4C2E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x575E JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x4C59 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP4 POP PUSH2 0x4C7E DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4C71 JUMPI PUSH2 0x4C70 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5779 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x4C9B SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP3 POP DUP1 PUSH2 0x4CA7 SWAP1 PUSH2 0x7452 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C10 JUMP JUMPDEST POP DUP8 DUP4 LT DUP1 PUSH2 0x4CBC JUMPI POP DUP7 DUP3 LT JUMPDEST ISZERO PUSH2 0x4D04 JUMPI DUP8 DUP4 DUP9 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4CFB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x4D44 JUMPI PUSH2 0x4D43 DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4835 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 DUP8 PUSH2 0x1C0 ADD CALLDATALOAD DUP1 TIMESTAMP GT ISZERO PUSH2 0x4D9D JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D94 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x4DAE SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4DC1 SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP EQ ISZERO DUP1 PUSH2 0x4DF4 JUMPI POP DUP9 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x4DDC SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4DEF SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP EQ ISZERO JUMPDEST ISZERO PUSH2 0x4E2B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH1 0xE0 ADD CALLDATALOAD GT DUP1 PUSH2 0x4E4B JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH2 0x100 ADD CALLDATALOAD GT JUMPDEST ISZERO PUSH2 0x4E98 JUMPI DUP9 PUSH1 0xE0 ADD CALLDATALOAD DUP10 PUSH2 0x100 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH32 0x32F4AB8E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8F SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4EAA SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4EC5 JUMPI PUSH2 0x4EC4 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4EF3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4F07 SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4F22 JUMPI PUSH2 0x4F21 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4F50 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP4 POP PUSH0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBE65EDC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4F9D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4FC1 SWAP2 SWAP1 PUSH2 0x6CF9 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 POP DUP1 DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP13 PUSH1 0xE0 ADD CALLDATALOAD ADD LT DUP1 PUSH2 0x4FEB JUMPI POP DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 ADD LT JUMPDEST ISZERO PUSH2 0x503A JUMPI DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x40 MLOAD PUSH32 0xFAA1DB5600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5031 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x75AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x516D JUMPI PUSH0 DUP13 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x5057 SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x5068 JUMPI PUSH2 0x5067 PUSH2 0x691C JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 ADD SWAP1 POP PUSH0 DUP2 SLT DUP1 PUSH2 0x5085 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP2 GT JUMPDEST ISZERO PUSH2 0x50C7 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xE1505CC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x50BE SWAP2 SWAP1 PUSH2 0x75F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x50DB JUMPI PUSH2 0x50DA PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x5142 DUP14 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x50FB SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x510C JUMPI PUSH2 0x510B PUSH2 0x691C JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP15 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x5124 SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x5135 JUMPI PUSH2 0x5134 PUSH2 0x691C JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0x5785 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5155 JUMPI PUSH2 0x5154 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x503C JUMP JUMPDEST POP POP PUSH0 DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x383D15C5 DUP14 PUSH2 0x180 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51A1 SWAP2 SWAP1 PUSH2 0x7612 JUMP JUMPDEST DUP6 DUP16 PUSH2 0x1A0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51B6 SWAP2 SWAP1 PUSH2 0x7612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x51D4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x76F4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x51EF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5217 SWAP2 SWAP1 PUSH2 0x77C5 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP4 POP DUP3 SWAP5 POP POP POP POP PUSH0 PUSH2 0x5237 DUP3 DUP5 PUSH2 0x5806 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x5242 DUP2 PUSH2 0x575E JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP11 POP PUSH2 0x525F DUP2 PUSH2 0x5779 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP10 POP DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 LT DUP1 PUSH2 0x5288 JUMPI POP DUP13 PUSH1 0xC0 ADD CALLDATALOAD DUP11 LT JUMPDEST ISZERO PUSH2 0x52D8 JUMPI DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP13 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x52CF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52E1 DUP3 PUSH2 0x575E JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP9 POP PUSH2 0x52FE DUP3 PUSH2 0x5779 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5335 JUMPI PUSH2 0x5334 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5348 JUMPI PUSH2 0x5347 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x5462 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x53A8 SWAP3 SWAP2 SWAP1 PUSH2 0x7831 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x53E7 SWAP2 SWAP1 PUSH2 0x69F7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x545D JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5454 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x546E DUP6 DUP6 DUP6 DUP6 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5497 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x5500 DUP6 DUP3 PUSH2 0x56D4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x5541 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB229ED3300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x554E JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x5585 JUMPI PUSH1 0x40 MLOAD PUSH32 0x98C59A2900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E5 DUP6 PUSH2 0x5594 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH0 DUP4 DUP3 PUSH2 0x55A3 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH2 0x3E8 DUP8 PUSH2 0x55B5 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST PUSH2 0x55BF SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH2 0x55CD SWAP2 SWAP1 PUSH2 0x78C6 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x5613 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB229ED3300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x5620 JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x5657 JUMPI PUSH1 0x40 MLOAD PUSH32 0x98C59A2900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E8 DUP6 DUP6 PUSH2 0x5667 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST PUSH2 0x5671 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x3E5 DUP7 DUP6 PUSH2 0x5683 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST PUSH2 0x568D SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP4 PUSH2 0x569D SWAP2 SWAP1 PUSH2 0x78C6 JUMP JUMPDEST PUSH2 0x56A7 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 POP DUP3 PUSH1 0x80 SHR SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH0 DUP8 GAS CALL SWAP1 POP DUP1 PUSH0 DUP2 EQ PUSH2 0x5712 JUMPI RETURNDATASIZE PUSH0 DUP2 EQ PUSH2 0x5705 JUMPI PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND SWAP3 POP PUSH2 0x570C JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO ISZERO SWAP3 POP JUMPDEST POP PUSH2 0x5721 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x5720 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST JUMPDEST POP DUP1 PUSH2 0x5759 JUMPI PUSH1 0x40 MLOAD PUSH32 0x32E2717A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x80 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x57B0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x58 DUP5 PUSH2 0x587E SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x57DC DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x18 DUP5 PUSH2 0x587E SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x57FD DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH0 DUP5 PUSH2 0x587E SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP4 SUB SWAP1 POP DUP3 DUP2 GT DUP1 PUSH2 0x5841 JUMPI POP DUP3 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x5878 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE599AF5500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x58BB DUP2 PUSH2 0x58A9 JUMP JUMPDEST DUP2 EQ PUSH2 0x58C5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x58D6 DUP2 PUSH2 0x58B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x5926 DUP3 PUSH2 0x58E0 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5945 JUMPI PUSH2 0x5944 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5957 PUSH2 0x5898 JUMP JUMPDEST SWAP1 POP PUSH2 0x5963 DUP3 DUP3 PUSH2 0x591D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x598A JUMPI PUSH2 0x5989 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x59B1 PUSH2 0x59AC DUP5 PUSH2 0x5970 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x59D4 JUMPI PUSH2 0x59D3 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x59FD JUMPI DUP1 PUSH2 0x59E9 DUP9 DUP3 PUSH2 0x58C8 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x59D6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5A1B JUMPI PUSH2 0x5A1A PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5A2B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x599F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5A4E JUMPI PUSH2 0x5A4D PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x5A6B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5A7C DUP2 PUSH2 0x5A5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5A94 PUSH2 0x5A8F DUP5 PUSH2 0x5A34 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5AB7 JUMPI PUSH2 0x5AB6 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5AE0 JUMPI DUP1 PUSH2 0x5ACC DUP9 DUP3 PUSH2 0x5A6E JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5AB9 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5AFE JUMPI PUSH2 0x5AFD PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5B0E DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x5A82 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5B31 JUMPI PUSH2 0x5B30 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5B6B DUP3 PUSH2 0x5B42 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5B7C DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5B8C DUP2 PUSH2 0x5B72 JUMP JUMPDEST DUP2 EQ PUSH2 0x5B96 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5BA7 DUP2 PUSH2 0x5B83 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5BBF PUSH2 0x5BBA DUP5 PUSH2 0x5B17 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5BE2 JUMPI PUSH2 0x5BE1 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5C0B JUMPI DUP1 PUSH2 0x5BF7 DUP9 DUP3 PUSH2 0x5B99 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5BE4 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5C29 JUMPI PUSH2 0x5C28 PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5C39 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x5BAD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C57 JUMPI PUSH2 0x5C56 PUSH2 0x58DC JUMP JUMPDEST JUMPDEST PUSH2 0x5C61 PUSH1 0x60 PUSH2 0x594E JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C80 JUMPI PUSH2 0x5C7F PUSH2 0x5968 JUMP JUMPDEST JUMPDEST PUSH2 0x5C8C DUP5 DUP3 DUP6 ADD PUSH2 0x5A07 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5CAF JUMPI PUSH2 0x5CAE PUSH2 0x5968 JUMP JUMPDEST JUMPDEST PUSH2 0x5CBB DUP5 DUP3 DUP6 ADD PUSH2 0x5AEA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5CDF JUMPI PUSH2 0x5CDE PUSH2 0x5968 JUMP JUMPDEST JUMPDEST PUSH2 0x5CEB DUP5 DUP3 DUP6 ADD PUSH2 0x5C15 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D01 DUP3 PUSH2 0x5B42 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D11 DUP2 PUSH2 0x5CF7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D1B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D2C DUP2 PUSH2 0x5D08 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5D4B JUMPI PUSH2 0x5D4A PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5D58 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5D69 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5D8A JUMPI PUSH2 0x5D89 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x5D96 DUP9 DUP3 DUP10 ADD PUSH2 0x5C42 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x5DA7 DUP9 DUP3 DUP10 ADD PUSH2 0x5D1E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x5DB8 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x5DCE DUP2 PUSH2 0x58A9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5DE7 PUSH0 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5DF6 DUP2 PUSH2 0x5B61 JUMP JUMPDEST DUP2 EQ PUSH2 0x5E00 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5E11 DUP2 PUSH2 0x5DED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5E2F JUMPI PUSH2 0x5E2E PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5E3C DUP8 DUP3 DUP9 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5E5D JUMPI PUSH2 0x5E5C PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x5E69 DUP8 DUP3 DUP9 ADD PUSH2 0x5C42 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5E7A DUP8 DUP3 DUP9 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x5E8B DUP8 DUP3 DUP9 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5EC9 DUP2 PUSH2 0x58A9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5EDA DUP4 DUP4 PUSH2 0x5EC0 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5EFC DUP3 PUSH2 0x5E97 JUMP JUMPDEST PUSH2 0x5F06 DUP2 DUP6 PUSH2 0x5EA1 JUMP JUMPDEST SWAP4 POP PUSH2 0x5F11 DUP4 PUSH2 0x5EB1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F41 JUMPI DUP2 MLOAD PUSH2 0x5F28 DUP9 DUP3 PUSH2 0x5ECF JUMP JUMPDEST SWAP8 POP PUSH2 0x5F33 DUP4 PUSH2 0x5EE6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5F14 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x5F66 DUP2 DUP5 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5F87 JUMPI PUSH2 0x5F86 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5F94 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5FA5 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5FC6 JUMPI PUSH2 0x5FC5 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x5FD2 DUP9 DUP3 DUP10 ADD PUSH2 0x5C42 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x5FE3 DUP9 DUP3 DUP10 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x5FF4 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6024 PUSH2 0x601F PUSH2 0x601A DUP5 PUSH2 0x5B42 JUMP JUMPDEST PUSH2 0x6001 JUMP JUMPDEST PUSH2 0x5B42 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6035 DUP3 PUSH2 0x600A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6046 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6056 DUP2 PUSH2 0x603C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x606F PUSH0 DUP4 ADD DUP5 PUSH2 0x604D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x608C JUMPI PUSH2 0x608B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6099 DUP7 DUP3 DUP8 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x60AA DUP7 DUP3 DUP8 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x60BB DUP7 DUP3 DUP8 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x60DC DUP2 PUSH2 0x60C5 JUMP JUMPDEST DUP2 EQ PUSH2 0x60E6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x60F7 DUP2 PUSH2 0x60D3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6113 DUP2 PUSH2 0x60FD JUMP JUMPDEST DUP2 EQ PUSH2 0x611D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x612E DUP2 PUSH2 0x610A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x614C JUMPI PUSH2 0x614B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6159 DUP8 DUP3 DUP9 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x616A DUP8 DUP3 DUP9 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x617B DUP8 DUP3 DUP9 ADD PUSH2 0x60E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x618C DUP8 DUP3 DUP9 ADD PUSH2 0x6120 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH2 0x61A2 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x61B2 DUP2 PUSH2 0x6198 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x61CB PUSH0 DUP4 ADD DUP5 PUSH2 0x61A9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x61DB DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x61EB DUP2 PUSH2 0x61D1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6204 PUSH0 DUP4 ADD DUP5 PUSH2 0x61E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6214 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6224 DUP2 PUSH2 0x620A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x623D PUSH0 DUP4 ADD DUP5 PUSH2 0x621B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x6260 JUMPI PUSH2 0x625F PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x626D DUP12 DUP3 DUP13 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x627E DUP12 DUP3 DUP13 ADD PUSH2 0x6120 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x628F DUP12 DUP3 DUP13 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x62A0 DUP12 DUP3 DUP13 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x62C1 JUMPI PUSH2 0x62C0 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x62CD DUP12 DUP3 DUP13 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x62EE JUMPI PUSH2 0x62ED PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x62FA DUP12 DUP3 DUP13 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x630B DUP12 DUP3 DUP13 ADD PUSH2 0x5D1E JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 PUSH2 0x631C DUP12 DUP3 DUP13 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x633F PUSH0 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x634C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x636D JUMPI PUSH2 0x636C PUSH2 0x6353 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x638B JUMPI PUSH2 0x638A PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x63A8 JUMPI PUSH2 0x63A7 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x63B4 DUP5 DUP3 DUP6 ADD PUSH2 0x6357 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x63D0 PUSH0 DUP4 ADD DUP10 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x63DD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x63EA PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x63F7 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x6409 DUP2 DUP6 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x641D DUP2 DUP5 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6434 DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6444 DUP2 PUSH2 0x642A JUMP JUMPDEST DUP2 EQ PUSH2 0x644E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x645F DUP2 PUSH2 0x643B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6489 DUP2 PUSH2 0x6465 JUMP JUMPDEST DUP2 EQ PUSH2 0x6493 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x64A4 DUP2 PUSH2 0x6480 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x64BE DUP2 PUSH2 0x64AA JUMP JUMPDEST DUP2 EQ PUSH2 0x64C8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x64D9 DUP2 PUSH2 0x64B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x64F6 JUMPI PUSH2 0x64F5 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6503 DUP7 DUP3 DUP8 ADD PUSH2 0x6451 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6514 DUP7 DUP3 DUP8 ADD PUSH2 0x6496 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6525 DUP7 DUP3 DUP8 ADD PUSH2 0x64CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x6538 DUP2 PUSH2 0x6465 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6551 PUSH0 DUP4 ADD DUP7 PUSH2 0x652F JUMP JUMPDEST PUSH2 0x655E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x652F JUMP JUMPDEST PUSH2 0x656B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x652F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x657D DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x658D DUP2 PUSH2 0x6573 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x65A6 PUSH0 DUP4 ADD DUP5 PUSH2 0x6584 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x65B6 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x65C6 DUP2 PUSH2 0x65AC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x65DF PUSH0 DUP4 ADD DUP5 PUSH2 0x65BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x6603 JUMPI PUSH2 0x6602 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6610 DUP13 DUP3 DUP14 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x6621 DUP13 DUP3 DUP14 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x6632 DUP13 DUP3 DUP14 ADD PUSH2 0x6120 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x6643 DUP13 DUP3 DUP14 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x6654 DUP13 DUP3 DUP14 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6675 JUMPI PUSH2 0x6674 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x6681 DUP13 DUP3 DUP14 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x66A2 JUMPI PUSH2 0x66A1 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x66AE DUP13 DUP3 DUP14 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x66BF DUP13 DUP3 DUP14 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x66D1 DUP13 DUP3 DUP14 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x66F7 JUMPI PUSH2 0x66F6 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6704 DUP6 DUP3 DUP7 ADD PUSH2 0x6451 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6715 DUP6 DUP3 DUP7 ADD PUSH2 0x60E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6729 DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6739 DUP2 PUSH2 0x671F JUMP JUMPDEST DUP2 EQ PUSH2 0x6743 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6754 DUP2 PUSH2 0x6730 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6773 JUMPI PUSH2 0x6772 PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6790 JUMPI PUSH2 0x678F PUSH2 0x675A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x67AC JUMPI PUSH2 0x67AB PUSH2 0x599B JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x67CD JUMPI PUSH2 0x67CC PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x67DA DUP10 DUP3 DUP11 ADD PUSH2 0x6746 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x67EB DUP10 DUP3 DUP11 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x680C JUMPI PUSH2 0x680B PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x6818 DUP10 DUP3 DUP11 ADD PUSH2 0x675E JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x683B JUMPI PUSH2 0x683A PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x6847 DUP10 DUP3 DUP11 ADD PUSH2 0x675E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x686C JUMPI PUSH2 0x686B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6879 DUP6 DUP3 DUP7 ADD PUSH2 0x6451 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688A DUP6 DUP3 DUP7 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x689D DUP2 PUSH2 0x60C5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x68B6 PUSH0 DUP4 ADD DUP5 PUSH2 0x6894 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x68F3 DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x68FE DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x6916 JUMPI PUSH2 0x6915 PUSH2 0x68BC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x6952 DUP2 PUSH2 0x5B61 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x696B PUSH0 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x697F DUP2 PUSH2 0x58B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x699A JUMPI PUSH2 0x6999 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x69A7 DUP5 DUP3 DUP6 ADD PUSH2 0x6971 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x69BA DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x69C5 DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x69DD JUMPI PUSH2 0x69DC PUSH2 0x68BC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x69F1 DUP2 PUSH2 0x5DED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A0C JUMPI PUSH2 0x6A0B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6A19 DUP5 DUP3 DUP6 ADD PUSH2 0x69E3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6A2C DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6A3C DUP2 PUSH2 0x6A22 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x6A4B DUP2 PUSH2 0x60FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6A64 PUSH0 DUP4 ADD DUP8 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x6A71 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x6A7E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x6894 JUMP JUMPDEST PUSH2 0x6A8B PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x6A42 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6AA2 DUP2 PUSH2 0x643B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6ABD JUMPI PUSH2 0x6ABC PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6ACA DUP5 DUP3 DUP6 ADD PUSH2 0x6A94 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6AE1 DUP2 PUSH2 0x5B83 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AFC JUMPI PUSH2 0x6AFB PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6B09 DUP5 DUP3 DUP6 ADD PUSH2 0x6AD3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6B27 JUMPI PUSH2 0x6B26 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6B34 DUP5 DUP3 DUP6 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x6B50 PUSH0 DUP4 ADD DUP9 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x6B5D PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x6B6A PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6B77 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6B84 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6B97 DUP2 PUSH2 0x64AA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6BB0 PUSH0 DUP4 ADD DUP6 PUSH2 0x652F JUMP JUMPDEST PUSH2 0x6BBD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6B8E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6BD2 DUP2 PUSH2 0x6480 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6BEF JUMPI PUSH2 0x6BEE PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6BFC DUP7 DUP3 DUP8 ADD PUSH2 0x6BC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6C0D DUP7 DUP3 DUP8 ADD PUSH2 0x6BC4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6C1E DUP7 DUP3 DUP8 ADD PUSH2 0x6BC4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6C40 DUP4 DUP6 PUSH2 0x5EA1 JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6C73 JUMPI PUSH2 0x6C72 PUSH2 0x6C28 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6C84 DUP4 DUP6 DUP5 PUSH2 0x6C2C JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6CA3 PUSH0 DUP4 ADD DUP10 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x6CB0 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x6CC3 DUP2 DUP7 DUP9 PUSH2 0x6C35 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6CD8 DUP2 DUP5 DUP7 PUSH2 0x6C35 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6CF3 DUP2 PUSH2 0x60D3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D0E JUMPI PUSH2 0x6D0D PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6D1B DUP5 DUP3 DUP6 ADD PUSH2 0x6CE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D73 DUP2 PUSH2 0x6D51 JUMP JUMPDEST DUP2 EQ PUSH2 0x6D7D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6D8E DUP2 PUSH2 0x6D6A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6DAC DUP2 PUSH2 0x6D94 JUMP JUMPDEST DUP2 EQ PUSH2 0x6DB6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6DC7 DUP2 PUSH2 0x6DA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6DE4 JUMPI PUSH2 0x6DE3 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6DF1 DUP7 DUP3 DUP8 ADD PUSH2 0x6D80 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6E02 DUP7 DUP3 DUP8 ADD PUSH2 0x6D80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6E13 DUP7 DUP3 DUP8 ADD PUSH2 0x6DB9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6E40 PUSH2 0x6E3B PUSH2 0x6E36 DUP5 PUSH2 0x6E1D JUMP JUMPDEST PUSH2 0x6001 JUMP JUMPDEST PUSH2 0x58A9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6E50 DUP2 PUSH2 0x6E26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x6E74 PUSH0 DUP4 PUSH2 0x6E56 JUMP JUMPDEST SWAP2 POP PUSH2 0x6E7F DUP3 PUSH2 0x6E66 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6E9C PUSH0 DUP4 ADD DUP7 PUSH2 0x6E47 JUMP JUMPDEST PUSH2 0x6EA9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6EB6 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6EC7 DUP2 PUSH2 0x6E69 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6EE4 PUSH0 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6EF1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6E47 JUMP JUMPDEST PUSH2 0x6EFE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6F0F DUP2 PUSH2 0x6E69 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6F2C PUSH0 DUP4 ADD DUP6 PUSH2 0x6B8E JUMP JUMPDEST PUSH2 0x6F39 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6F56 JUMPI PUSH2 0x6F55 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6F63 DUP6 DUP3 DUP7 ADD PUSH2 0x6971 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6F74 DUP6 DUP3 DUP7 ADD PUSH2 0x6971 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F90 DUP2 PUSH2 0x6F7E JUMP JUMPDEST DUP2 EQ PUSH2 0x6F9A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6FAB DUP2 PUSH2 0x6F87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6FC6 JUMPI PUSH2 0x6FC5 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6FD3 DUP5 DUP3 DUP6 ADD PUSH2 0x6F9D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6FE6 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6FF6 DUP2 PUSH2 0x6FDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7016 PUSH2 0x7011 PUSH2 0x700C DUP5 PUSH2 0x6465 JUMP JUMPDEST PUSH2 0x6001 JUMP JUMPDEST PUSH2 0x58A9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7026 DUP2 PUSH2 0x6FFC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x703F PUSH0 DUP4 ADD DUP7 PUSH2 0x6FED JUMP JUMPDEST PUSH2 0x704C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x701D JUMP JUMPDEST PUSH2 0x7059 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6B8E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x706B DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x707D JUMPI PUSH2 0x707C PUSH2 0x68BC JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x709D PUSH0 DUP4 PUSH2 0x7088 JUMP JUMPDEST SWAP2 POP PUSH2 0x70A8 DUP3 PUSH2 0x6E66 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x70BC DUP3 PUSH2 0x7092 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x70D9 PUSH0 DUP4 ADD DUP6 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x70E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x7100 PUSH0 DUP4 ADD DUP7 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x710D PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x711A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x7130 DUP2 PUSH2 0x610A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7140 DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7150 DUP2 PUSH2 0x7136 JUMP JUMPDEST DUP2 EQ PUSH2 0x715A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x716B DUP2 PUSH2 0x7147 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x717F DUP2 PUSH2 0x64B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x719A JUMPI PUSH2 0x7199 PUSH2 0x58DC JUMP JUMPDEST JUMPDEST PUSH2 0x71A4 PUSH1 0x80 PUSH2 0x594E JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x71B3 DUP5 DUP3 DUP6 ADD PUSH2 0x7122 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x71C6 DUP5 DUP3 DUP6 ADD PUSH2 0x715D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x71DA DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x71EE DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x720F JUMPI PUSH2 0x720E PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x721C DUP5 DUP3 DUP6 ADD PUSH2 0x7185 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x723A JUMPI PUSH2 0x7239 PUSH2 0x58DC JUMP JUMPDEST JUMPDEST PUSH2 0x7244 PUSH1 0x80 PUSH2 0x594E JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x7253 DUP5 DUP3 DUP6 ADD PUSH2 0x7122 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x7266 DUP5 DUP3 DUP6 ADD PUSH2 0x6A94 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x727A DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x728E DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72AF JUMPI PUSH2 0x72AE PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x72BC DUP5 DUP3 DUP6 ADD PUSH2 0x7225 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x72D8 PUSH0 DUP4 ADD DUP7 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x72E5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x72F2 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x730D PUSH0 DUP4 ADD DUP8 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x731A PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x732C DUP2 DUP6 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x7340 DUP2 DUP5 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x7365 JUMPI PUSH2 0x7364 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x7388 PUSH2 0x7383 DUP5 PUSH2 0x734B JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73AB JUMPI PUSH2 0x73AA PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x73D4 JUMPI DUP1 PUSH2 0x73C0 DUP9 DUP3 PUSH2 0x6F9D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x73AD JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x73F2 JUMPI PUSH2 0x73F1 PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x7402 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x7376 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7420 JUMPI PUSH2 0x741F PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x743D JUMPI PUSH2 0x743C PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x7449 DUP5 DUP3 DUP6 ADD PUSH2 0x73DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x745C DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x748E JUMPI PUSH2 0x748D PUSH2 0x68BC JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x74AC PUSH0 DUP4 ADD DUP8 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x74B9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x74C6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x74D3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x7504 JUMPI PUSH2 0x7503 PUSH2 0x74DC JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x7526 JUMPI PUSH2 0x7525 PUSH2 0x74E0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x7542 JUMPI PUSH2 0x7541 PUSH2 0x74E4 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x7566 JUMPI PUSH2 0x7565 PUSH2 0x74DC JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x7588 JUMPI PUSH2 0x7587 PUSH2 0x74E0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x75A4 JUMPI PUSH2 0x75A3 PUSH2 0x74E4 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x75BF PUSH0 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x75CC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x75D9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x75F3 DUP2 PUSH2 0x75E1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x760C PUSH0 DUP4 ADD DUP5 PUSH2 0x75EA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7627 JUMPI PUSH2 0x7626 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x7634 DUP5 DUP3 DUP6 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x766F DUP2 PUSH2 0x6F7E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7680 DUP4 DUP4 PUSH2 0x7666 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x76A2 DUP3 PUSH2 0x763D JUMP JUMPDEST PUSH2 0x76AC DUP2 DUP6 PUSH2 0x7647 JUMP JUMPDEST SWAP4 POP PUSH2 0x76B7 DUP4 PUSH2 0x7657 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x76E7 JUMPI DUP2 MLOAD PUSH2 0x76CE DUP9 DUP3 PUSH2 0x7675 JUMP JUMPDEST SWAP8 POP PUSH2 0x76D9 DUP4 PUSH2 0x768C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x76BA JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x7707 PUSH0 DUP4 ADD DUP7 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x7719 DUP2 DUP6 PUSH2 0x7698 JUMP JUMPDEST SWAP1 POP PUSH2 0x7728 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7742 PUSH2 0x773D DUP5 PUSH2 0x5970 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x7765 JUMPI PUSH2 0x7764 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x778E JUMPI DUP1 PUSH2 0x777A DUP9 DUP3 PUSH2 0x6971 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7767 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x77AC JUMPI PUSH2 0x77AB PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x77BC DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x7730 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x77DC JUMPI PUSH2 0x77DB PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x77E9 DUP7 DUP3 DUP8 ADD PUSH2 0x6F9D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x77FA DUP7 DUP3 DUP8 ADD PUSH2 0x6F9D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x781B JUMPI PUSH2 0x781A PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x7827 DUP7 DUP3 DUP8 ADD PUSH2 0x7798 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x7844 PUSH0 DUP4 ADD DUP6 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x7851 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7862 DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x786D DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x787B DUP2 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x7892 JUMPI PUSH2 0x7891 PUSH2 0x68BC JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x78D0 DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x78DB DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x78EB JUMPI PUSH2 0x78EA PUSH2 0x7899 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO SELFDESTRUCT PUSH24 0x9B1F3E06BE3F48B2BE62E5423313C5F815FB176A2FD491FE LOG4 PUSH18 0x35EF0B64736F6C6343000814003300000000 ", - "sourceMap": "1416:44371:4:-:0;;;2806:428;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3045:10;3031:24;;;;;;;;;;3079:10;3065:24;;;;;;;;;;3112:9;3099:22;;;;;;;;;;3148:13;3131:30;;;;;;;;;;3187:12;3171:28;;;;;;;;;;3220:7;3209:18;;;;;;;;;;2806:428;;;;;;1416:44371;;88:117:33;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:115::-;624:7;653:24;671:5;653:24;:::i;:::-;642:35;;568:115;;;:::o;689:160::-;781:43;818:5;781:43;:::i;:::-;774:5;771:54;761:82;;839:1;836;829:12;761:82;689:160;:::o;855:181::-;931:5;962:6;956:13;947:22;;978:52;1024:5;978:52;:::i;:::-;855:181;;;;:::o;1042:116::-;1099:7;1128:24;1146:5;1128:24;:::i;:::-;1117:35;;1042:116;;;:::o;1164:162::-;1257:44;1295:5;1257:44;:::i;:::-;1250:5;1247:55;1237:83;;1316:1;1313;1306:12;1237:83;1164:162;:::o;1332:183::-;1409:5;1440:6;1434:13;1425:22;;1456:53;1503:5;1456:53;:::i;:::-;1332:183;;;;:::o;1521:121::-;1583:7;1612:24;1630:5;1612:24;:::i;:::-;1601:35;;1521:121;;;:::o;1648:172::-;1746:49;1789:5;1746:49;:::i;:::-;1739:5;1736:60;1726:88;;1810:1;1807;1800:12;1726:88;1648:172;:::o;1826:193::-;1908:5;1939:6;1933:13;1924:22;;1955:58;2007:5;1955:58;:::i;:::-;1826:193;;;;:::o;2025:120::-;2086:7;2115:24;2133:5;2115:24;:::i;:::-;2104:35;;2025:120;;;:::o;2151:170::-;2248:48;2290:5;2248:48;:::i;:::-;2241:5;2238:59;2228:87;;2311:1;2308;2301:12;2228:87;2151:170;:::o;2327:191::-;2408:5;2439:6;2433:13;2424:22;;2455:57;2506:5;2455:57;:::i;:::-;2327:191;;;;:::o;2524:113::-;2578:7;2607:24;2625:5;2607:24;:::i;:::-;2596:35;;2524:113;;;:::o;2643:156::-;2733:41;2768:5;2733:41;:::i;:::-;2726:5;2723:52;2713:80;;2789:1;2786;2779:12;2713:80;2643:156;:::o;2805:177::-;2879:5;2910:6;2904:13;2895:22;;2926:50;2970:5;2926:50;:::i;:::-;2805:177;;;;:::o;2988:1382::-;3227:6;3235;3243;3251;3259;3267;3316:3;3304:9;3295:7;3291:23;3287:33;3284:120;;;3323:79;;:::i;:::-;3284:120;3443:1;3468:83;3543:7;3534:6;3523:9;3519:22;3468:83;:::i;:::-;3458:93;;3414:147;3600:2;3626:84;3702:7;3693:6;3682:9;3678:22;3626:84;:::i;:::-;3616:94;;3571:149;3759:2;3785:89;3866:7;3857:6;3846:9;3842:22;3785:89;:::i;:::-;3775:99;;3730:154;3923:2;3949:88;4029:7;4020:6;4009:9;4005:22;3949:88;:::i;:::-;3939:98;;3894:153;4086:3;4113:83;4188:7;4179:6;4168:9;4164:22;4113:83;:::i;:::-;4103:93;;4057:149;4245:3;4272:81;4345:7;4336:6;4325:9;4321:22;4272:81;:::i;:::-;4262:91;;4216:147;2988:1382;;;;;;;;:::o;1416:44371:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@_474": { - "entryPoint": null, - "id": 474, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@_addLiquidity_2445": { - "entryPoint": 19785, - "id": 2445, - "parameterSlots": 2, - "returnSlots": 6 - }, - "@_callAndCatch_10550": { - "entryPoint": 22228, - "id": 10550, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_getAmountsIn_2633": { - "entryPoint": 14000, - "id": 2633, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@_getLBPairInformation_3449": { - "entryPoint": 18624, - "id": 3449, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@_getPair_3519": { - "entryPoint": 21281, - "id": 3519, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@_getPairs_3598": { - "entryPoint": 11878, - "id": 3598, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@_removeLiquidity_2715": { - "entryPoint": 19335, - "id": 2715, - "parameterSlots": 6, - "returnSlots": 2 - }, - "@_safeTransferFrom_3649": { - "entryPoint": 12195, - "id": 3649, - "parameterSlots": 4, - "returnSlots": 0 - }, - "@_safeTransferNative_3680": { - "entryPoint": 16857, - "id": 3680, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_safeTransfer_3622": { - "entryPoint": 19728, - "id": 3622, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_swapExactTokensForTokens_2946": { - "entryPoint": 17043, - "id": 2946, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@_swapSupportingFeeOnTransferTokens_3359": { - "entryPoint": 12255, - "id": 3359, - "parameterSlots": 4, - "returnSlots": 0 - }, - "@_swapTokensForExactTokens_3156": { - "entryPoint": 15582, - "id": 3156, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@_wNativeDepositAndTransfer_3709": { - "entryPoint": 15369, - "id": 3709, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_wNativeWithdrawAndTransfer_3734": { - "entryPoint": 13843, - "id": 3734, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@addLiquidityNATIVE_903": { - "entryPoint": 6813, - "id": 903, - "parameterSlots": 1, - "returnSlots": 6 - }, - "@addLiquidity_753": { - "entryPoint": 9050, - "id": 753, - "parameterSlots": 1, - "returnSlots": 6 - }, - "@createLBPair_665": { - "entryPoint": 6112, - "id": 665, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@decodeX_11118": { - "entryPoint": 22366, - "id": 11118, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@decodeY_11128": { - "entryPoint": 22393, - "id": 11128, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@decode_11108": { - "entryPoint": 22194, - "id": 11108, - "parameterSlots": 1, - "returnSlots": 2 - }, - "@encodeParams_10925": { - "entryPoint": 22405, - "id": 10925, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@getAmountIn_9433": { - "entryPoint": 21977, - "id": 9433, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@getAmountOut_9378": { - "entryPoint": 21767, - "id": 9378, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@getFactoryV2_1_496": { - "entryPoint": 5500, - "id": 496, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@getFactory_485": { - "entryPoint": 6774, - "id": 485, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@getIdFromPrice_558": { - "entryPoint": 11749, - "id": 558, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@getLegacyFactory_507": { - "entryPoint": 6321, - "id": 507, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@getLegacyRouter_529": { - "entryPoint": 10007, - "id": 529, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@getPriceFromId_576": { - "entryPoint": 10411, - "id": 576, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@getSwapIn_606": { - "entryPoint": 8149, - "id": 606, - "parameterSlots": 3, - "returnSlots": 3 - }, - "@getSwapOut_636": { - "entryPoint": 8904, - "id": 636, - "parameterSlots": 3, - "returnSlots": 3 - }, - "@getV1Factory_518": { - "entryPoint": 10046, - "id": 518, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@getWNATIVE_540": { - "entryPoint": 6282, - "id": 540, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@removeLiquidityNATIVE_1102": { - "entryPoint": 6360, - "id": 1102, - "parameterSlots": 8, - "returnSlots": 2 - }, - "@removeLiquidity_992": { - "entryPoint": 10085, - "id": 992, - "parameterSlots": 9, - "returnSlots": 2 - }, - "@safeTransferFrom_10503": { - "entryPoint": 21625, - "id": 10503, - "parameterSlots": 4, - "returnSlots": 0 - }, - "@safeTransfer_10531": { - "entryPoint": 18485, - "id": 10531, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@set_10694": { - "entryPoint": 22654, - "id": 10694, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@sub_11241": { - "entryPoint": 22534, - "id": 11241, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@swapExactNATIVEForTokensSupportingFeeOnTransferTokens_2056": { - "entryPoint": 10540, - "id": 2056, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@swapExactNATIVEForTokens_1366": { - "entryPoint": 9449, - "id": 1366, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@swapExactTokensForNATIVESupportingFeeOnTransferTokens_1949": { - "entryPoint": 1912, - "id": 1949, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@swapExactTokensForNATIVE_1280": { - "entryPoint": 8295, - "id": 1280, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@swapExactTokensForTokensSupportingFeeOnTransferTokens_1825": { - "entryPoint": 4823, - "id": 1825, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@swapExactTokensForTokens_1175": { - "entryPoint": 3653, - "id": 1175, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@swapNATIVEForExactTokens_1730": { - "entryPoint": 2839, - "id": 1730, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@swapTokensForExactNATIVE_1599": { - "entryPoint": 4040, - "id": 1599, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@swapTokensForExactTokens_1467": { - "entryPoint": 7588, - "id": 1467, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@sweepLBToken_2162": { - "entryPoint": 11388, - "id": 2162, - "parameterSlots": 6, - "returnSlots": 0 - }, - "@sweep_2131": { - "entryPoint": 5539, - "id": 2131, - "parameterSlots": 3, - "returnSlots": 0 - }, - "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { - "entryPoint": 29558, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_decode_available_length_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr": { - "entryPoint": 23469, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_decode_available_length_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr": { - "entryPoint": 23170, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 22943, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { - "entryPoint": 30512, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_decode_t_address": { - "entryPoint": 24067, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_address_fromMemory": { - "entryPoint": 27107, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_address_payable": { - "entryPoint": 23838, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { - "entryPoint": 29662, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr": { - "entryPoint": 23573, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr": { - "entryPoint": 23274, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr": { - "entryPoint": 26462, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 23047, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { - "entryPoint": 30616, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_bool": { - "entryPoint": 25803, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_bool_fromMemory": { - "entryPoint": 29041, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_bytes32_fromMemory": { - "entryPoint": 28573, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_contract$_IERC20_$225": { - "entryPoint": 23449, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_contract$_IERC20_$225_fromMemory": { - "entryPoint": 27347, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_contract$_ILBLegacyPair_$5497_fromMemory": { - "entryPoint": 29021, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_contract$_ILBPair_$6473": { - "entryPoint": 25681, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_contract$_ILBPair_$6473_fromMemory": { - "entryPoint": 27284, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_contract$_ILBToken_$7148": { - "entryPoint": 26438, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_enum$_Version_$6610": { - "entryPoint": 23150, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory": { - "entryPoint": 29221, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory": { - "entryPoint": 29061, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_struct$_LiquidityParameters_$6647_calldata_ptr": { - "entryPoint": 25431, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_struct$_Path_$6660_memory_ptr": { - "entryPoint": 23618, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint112_fromMemory": { - "entryPoint": 28032, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint128": { - "entryPoint": 25750, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint128_fromMemory": { - "entryPoint": 27588, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint16": { - "entryPoint": 24864, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint16_fromMemory": { - "entryPoint": 28962, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint24": { - "entryPoint": 24809, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint24_fromMemory": { - "entryPoint": 27877, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint256": { - "entryPoint": 22728, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint256_fromMemory": { - "entryPoint": 26993, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_t_uint32_fromMemory": { - "entryPoint": 28089, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_address": { - "entryPoint": 30226, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_address_fromMemory": { - "entryPoint": 27127, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { - "entryPoint": 29707, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes32_fromMemory": { - "entryPoint": 28593, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes32t_bytes32t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { - "entryPoint": 30661, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_contract$_IERC20_$225": { - "entryPoint": 27410, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_contract$_IERC20_$225_fromMemory": { - "entryPoint": 27367, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_contract$_IERC20_$225t_addresst_uint256": { - "entryPoint": 24693, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_contract$_IERC20_$225t_contract$_IERC20_$225t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256": { - "entryPoint": 26085, - "id": null, - "parameterSlots": 2, - "returnSlots": 9 - }, - "abi_decode_tuple_t_contract$_IERC20_$225t_contract$_IERC20_$225t_uint24t_uint16": { - "entryPoint": 24884, - "id": null, - "parameterSlots": 2, - "returnSlots": 4 - }, - "abi_decode_tuple_t_contract$_IERC20_$225t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256": { - "entryPoint": 25155, - "id": null, - "parameterSlots": 2, - "returnSlots": 8 - }, - "abi_decode_tuple_t_contract$_ILBPair_$6473_fromMemory": { - "entryPoint": 27304, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_contract$_ILBPair_$6473t_uint128t_bool": { - "entryPoint": 25823, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_contract$_ILBPair_$6473t_uint24": { - "entryPoint": 26337, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_contract$_ILBPair_$6473t_uint256": { - "entryPoint": 26710, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_contract$_ILBToken_$7148t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr": { - "entryPoint": 26547, - "id": null, - "parameterSlots": 2, - "returnSlots": 6 - }, - "abi_decode_tuple_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory": { - "entryPoint": 29338, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory": { - "entryPoint": 29178, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_struct$_LiquidityParameters_$6647_calldata_ptr": { - "entryPoint": 25462, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory": { - "entryPoint": 28109, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory": { - "entryPoint": 27608, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_uint24_fromMemory": { - "entryPoint": 27897, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_uint256_fromMemory": { - "entryPoint": 27013, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_uint256t_struct$_Path_$6660_memory_ptrt_addresst_uint256": { - "entryPoint": 24087, - "id": null, - "parameterSlots": 2, - "returnSlots": 4 - }, - "abi_decode_tuple_t_uint256t_uint256_fromMemory": { - "entryPoint": 28480, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6660_memory_ptrt_address_payablet_uint256": { - "entryPoint": 23858, - "id": null, - "parameterSlots": 2, - "returnSlots": 5 - }, - "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6660_memory_ptrt_addresst_uint256": { - "entryPoint": 24430, - "id": null, - "parameterSlots": 2, - "returnSlots": 5 - }, - "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32": { - "entryPoint": 30325, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encodeUpdatedPos_t_uint256_to_t_uint256": { - "entryPoint": 24271, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_t_address_to_t_address_fromStack": { - "entryPoint": 26953, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": { - "entryPoint": 30360, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { - "entryPoint": 27701, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { - "entryPoint": 24306, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_t_bool_to_t_bool_fromStack": { - "entryPoint": 27534, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_bytes32_to_t_bytes32": { - "entryPoint": 30310, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack": { - "entryPoint": 27187, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_IJoeFactory_$3809_to_t_address_fromStack": { - "entryPoint": 26045, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_ILBFactory_$4517_to_t_address_fromStack": { - "entryPoint": 24653, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_ILBLegacyFactory_$5081_to_t_address_fromStack": { - "entryPoint": 25115, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_ILBLegacyPair_$5497_to_t_address_fromStack": { - "entryPoint": 28653, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_ILBLegacyRouter_$5906_to_t_address_fromStack": { - "entryPoint": 25988, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_ILBPair_$6473_to_t_address_fromStack": { - "entryPoint": 25001, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_contract$_IWNATIVE_$7164_to_t_address_fromStack": { - "entryPoint": 25058, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_int256_to_t_int256_fromStack": { - "entryPoint": 30186, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": { - "entryPoint": 28231, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack": { - "entryPoint": 28265, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { - "entryPoint": 28818, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_t_uint128_to_t_uint128_fromStack": { - "entryPoint": 25903, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_uint128_to_t_uint256_fromStack": { - "entryPoint": 28701, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_uint16_to_t_uint16_fromStack": { - "entryPoint": 27202, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_uint24_to_t_uint24_fromStack": { - "entryPoint": 26772, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_uint256_to_t_uint256": { - "entryPoint": 24256, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_t_uint256_to_t_uint256_fromStack": { - "entryPoint": 24005, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { - "entryPoint": 28850, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": 26968, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { - "entryPoint": 30769, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 27792, - "id": null, - "parameterSlots": 7, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 29434, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { - "entryPoint": 29381, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 27453, - "id": null, - "parameterSlots": 6, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__to_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__fromStack_reversed": { - "entryPoint": 30452, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { - "entryPoint": 28870, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 24398, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed": { - "entryPoint": 28441, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_IERC20_$225_t_contract$_IERC20_$225_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed": { - "entryPoint": 27217, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_IERC20_$225_t_contract$_IERC20_$225_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { - "entryPoint": 28909, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_IJoeFactory_$3809__to_t_address__fromStack_reversed": { - "entryPoint": 26060, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_ILBFactory_$4517__to_t_address__fromStack_reversed": { - "entryPoint": 24668, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_ILBLegacyFactory_$5081__to_t_address__fromStack_reversed": { - "entryPoint": 25130, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_ILBLegacyPair_$5497_t_uint128_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed": { - "entryPoint": 28716, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_ILBLegacyRouter_$5906__to_t_address__fromStack_reversed": { - "entryPoint": 26003, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_ILBPair_$6473__to_t_address__fromStack_reversed": { - "entryPoint": 25016, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_IWNATIVE_$7164__to_t_address__fromStack_reversed": { - "entryPoint": 25073, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed": { - "entryPoint": 30201, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 28297, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed": { - "entryPoint": 27549, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed": { - "entryPoint": 25918, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed": { - "entryPoint": 26787, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { - "entryPoint": 24020, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 28369, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 25388, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 30124, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 29849, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 25533, - "id": null, - "parameterSlots": 7, - "returnSlots": 1 - }, - "access_calldata_tail_t_array$_t_int256_$dyn_calldata_ptr": { - "entryPoint": 30026, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr": { - "entryPoint": 29928, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "allocate_memory": { - "entryPoint": 22862, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "allocate_unbounded": { - "entryPoint": 22680, - "id": null, - "parameterSlots": 0, - "returnSlots": 1 - }, - "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr": { - "entryPoint": 29515, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_allocation_size_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr": { - "entryPoint": 23319, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_allocation_size_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr": { - "entryPoint": 23092, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 22896, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr": { - "entryPoint": 30295, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 24241, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_length_t_array$_t_bytes32_$dyn_memory_ptr": { - "entryPoint": 30269, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_length_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 24215, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr": { - "entryPoint": 30348, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": { - "entryPoint": 24294, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": { - "entryPoint": 30279, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { - "entryPoint": 24225, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": { - "entryPoint": 28246, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { - "entryPoint": 28808, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_add_t_uint256": { - "entryPoint": 26857, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_div_t_uint256": { - "entryPoint": 30918, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_mul_t_uint256": { - "entryPoint": 30808, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_sub_t_uint256": { - "entryPoint": 27056, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "cleanup_t_address": { - "entryPoint": 23393, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_address_payable": { - "entryPoint": 23799, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_bool": { - "entryPoint": 25770, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_bytes32": { - "entryPoint": 28542, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_contract$_IERC20_$225": { - "entryPoint": 23410, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_contract$_ILBLegacyPair_$5497": { - "entryPoint": 28982, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_contract$_ILBPair_$6473": { - "entryPoint": 25642, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_contract$_ILBToken_$7148": { - "entryPoint": 26399, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_int256": { - "entryPoint": 30177, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_rational_0_by_1": { - "entryPoint": 28189, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint112": { - "entryPoint": 27985, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint128": { - "entryPoint": 25701, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint16": { - "entryPoint": 24829, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint160": { - "entryPoint": 23362, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint24": { - "entryPoint": 24773, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint256": { - "entryPoint": 22697, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "cleanup_t_uint32": { - "entryPoint": 28052, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_IERC20_$225_to_t_address": { - "entryPoint": 27170, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_IJoeFactory_$3809_to_t_address": { - "entryPoint": 26028, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_ILBFactory_$4517_to_t_address": { - "entryPoint": 24636, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_ILBLegacyFactory_$5081_to_t_address": { - "entryPoint": 25098, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_ILBLegacyPair_$5497_to_t_address": { - "entryPoint": 28636, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_ILBLegacyRouter_$5906_to_t_address": { - "entryPoint": 25971, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_ILBPair_$6473_to_t_address": { - "entryPoint": 24984, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_contract$_IWNATIVE_$7164_to_t_address": { - "entryPoint": 25041, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_rational_0_by_1_to_t_uint256": { - "entryPoint": 28198, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_uint128_to_t_uint256": { - "entryPoint": 28668, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_uint160_to_t_address": { - "entryPoint": 24619, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "convert_t_uint160_to_t_uint160": { - "entryPoint": 24586, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "copy_calldata_to_memory": { - "entryPoint": 27692, - "id": null, - "parameterSlots": 3, - "returnSlots": 0 - }, - "decrement_t_uint256": { - "entryPoint": 28769, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "finalize_allocation": { - "entryPoint": 22813, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "identity": { - "entryPoint": 24577, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "increment_t_uint256": { - "entryPoint": 29778, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "panic_error_0x11": { - "entryPoint": 26812, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x12": { - "entryPoint": 30873, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x21": { - "entryPoint": 27940, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x32": { - "entryPoint": 26908, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x41": { - "entryPoint": 22768, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { - "entryPoint": 26458, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { - "entryPoint": 22892, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a": { - "entryPoint": 29920, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d": { - "entryPoint": 25427, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f": { - "entryPoint": 22748, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad": { - "entryPoint": 29916, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421": { - "entryPoint": 22888, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { - "entryPoint": 22939, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e": { - "entryPoint": 29924, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { - "entryPoint": 22693, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec": { - "entryPoint": 27688, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { - "entryPoint": 22689, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "round_up_to_mul_of_32": { - "entryPoint": 22752, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470": { - "entryPoint": 28262, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_address": { - "entryPoint": 24045, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_address_payable": { - "entryPoint": 23816, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_bool": { - "entryPoint": 25781, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_bytes32": { - "entryPoint": 28551, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_contract$_IERC20_$225": { - "entryPoint": 23427, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_contract$_ILBLegacyPair_$5497": { - "entryPoint": 28999, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_contract$_ILBPair_$6473": { - "entryPoint": 25659, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_contract$_ILBToken_$7148": { - "entryPoint": 26416, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_enum$_Version_$6610": { - "entryPoint": 23135, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_uint112": { - "entryPoint": 28010, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_uint128": { - "entryPoint": 25728, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_uint16": { - "entryPoint": 24842, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_uint24": { - "entryPoint": 24787, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_uint256": { - "entryPoint": 22706, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - }, - "validator_revert_t_uint32": { - "entryPoint": 28067, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:67627:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "47:35:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "57:19:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "73:2:33", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "67:5:33" - }, - "nodeType": "YulFunctionCall", - "src": "67:9:33" - }, - "variableNames": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "57:6:33" - } - ] - } - ] - }, - "name": "allocate_unbounded", - "nodeType": "YulFunctionDefinition", - "returnVariables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "40:6:33", - "type": "" - } - ], - "src": "7:75:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "177:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "194:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "197:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "187:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "187:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "187:12:33" - } - ] - }, - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulFunctionDefinition", - "src": "88:117:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "300:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "317:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "320:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "310:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "310:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "310:12:33" - } - ] - }, - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulFunctionDefinition", - "src": "211:117:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "379:32:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "389:16:33", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "400:5:33" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "389:7:33" - } - ] - } - ] - }, - "name": "cleanup_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "361:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "371:7:33", - "type": "" - } - ], - "src": "334:77:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "460:79:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "517:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "526:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "529:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "519:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "519:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "519:12:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "483:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "508:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "490:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "490:24:33" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "480:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "480:35:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "473:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "473:43:33" - }, - "nodeType": "YulIf", - "src": "470:63:33" - } - ] - }, - "name": "validator_revert_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "453:5:33", - "type": "" - } - ], - "src": "417:122:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "597:87:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "607:29:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "629:6:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "616:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "616:20:33" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "607:5:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "672:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_uint256", - "nodeType": "YulIdentifier", - "src": "645:26:33" - }, - "nodeType": "YulFunctionCall", - "src": "645:33:33" - }, - "nodeType": "YulExpressionStatement", - "src": "645:33:33" - } - ] - }, - "name": "abi_decode_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "575:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "583:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "591:5:33", - "type": "" - } - ], - "src": "545:139:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "779:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "796:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "799:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "789:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "789:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "789:12:33" - } - ] - }, - "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", - "nodeType": "YulFunctionDefinition", - "src": "690:117:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "861:54:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "871:38:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "889:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "896:2:33", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "885:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "885:14:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "905:2:33", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "901:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "901:7:33" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "881:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "881:28:33" - }, - "variableNames": [ - { - "name": "result", - "nodeType": "YulIdentifier", - "src": "871:6:33" - } - ] - } - ] - }, - "name": "round_up_to_mul_of_32", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "844:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "result", - "nodeType": "YulTypedName", - "src": "854:6:33", - "type": "" - } - ], - "src": "813:102:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "949:152:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "966:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "969:77:33", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "959:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "959:88:33" - }, - "nodeType": "YulExpressionStatement", - "src": "959:88:33" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1063:1:33", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1066:4:33", - "type": "", - "value": "0x41" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1056:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "1056:15:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1056:15:33" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1087:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1090:4:33", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1080:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "1080:15:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1080:15:33" - } - ] - }, - "name": "panic_error_0x41", - "nodeType": "YulFunctionDefinition", - "src": "921:180:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1150:238:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1160:58:33", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1182:6:33" - }, - { - "arguments": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "1212:4:33" - } - ], - "functionName": { - "name": "round_up_to_mul_of_32", - "nodeType": "YulIdentifier", - "src": "1190:21:33" - }, - "nodeType": "YulFunctionCall", - "src": "1190:27:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1178:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "1178:40:33" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "1164:10:33", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1329:22:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "1331:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "1331:18:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1331:18:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1272:10:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1284:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1269:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "1269:34:33" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1308:10:33" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1320:6:33" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1305:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "1305:22:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "1266:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "1266:62:33" - }, - "nodeType": "YulIf", - "src": "1263:88:33" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1367:2:33", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1371:10:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1360:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "1360:22:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1360:22:33" - } - ] - }, - "name": "finalize_allocation", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "1136:6:33", - "type": "" - }, - { - "name": "size", - "nodeType": "YulTypedName", - "src": "1144:4:33", - "type": "" - } - ], - "src": "1107:281:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1435:88:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1445:30:33", - "value": { - "arguments": [], - "functionName": { - "name": "allocate_unbounded", - "nodeType": "YulIdentifier", - "src": "1455:18:33" - }, - "nodeType": "YulFunctionCall", - "src": "1455:20:33" - }, - "variableNames": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1445:6:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1504:6:33" - }, - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "1512:4:33" - } - ], - "functionName": { - "name": "finalize_allocation", - "nodeType": "YulIdentifier", - "src": "1484:19:33" - }, - "nodeType": "YulFunctionCall", - "src": "1484:33:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1484:33:33" - } - ] - }, - "name": "allocate_memory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "1419:4:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "1428:6:33", - "type": "" - } - ], - "src": "1394:129:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1618:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1635:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1638:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1628:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "1628:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1628:12:33" - } - ] - }, - "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", - "nodeType": "YulFunctionDefinition", - "src": "1529:117:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1741:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1758:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1761:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1751:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "1751:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1751:12:33" - } - ] - }, - "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", - "nodeType": "YulFunctionDefinition", - "src": "1652:117:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1857:229:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1962:22:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "1964:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "1964:18:33" - }, - "nodeType": "YulExpressionStatement", - "src": "1964:18:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1934:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1942:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1931:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "1931:30:33" - }, - "nodeType": "YulIf", - "src": "1928:56:33" - }, - { - "nodeType": "YulAssignment", - "src": "1994:25:33", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2006:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2014:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "2002:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "2002:17:33" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "1994:4:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2056:23:33", - "value": { - "arguments": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "2068:4:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2074:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2064:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "2064:15:33" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "2056:4:33" - } - ] - } - ] - }, - "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "1841:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "1852:4:33", - "type": "" - } - ], - "src": "1775:311:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2181:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2198:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2201:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2191:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "2191:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "2191:12:33" - } - ] - }, - "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", - "nodeType": "YulFunctionDefinition", - "src": "2092:117:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2334:608:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2344:90:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2426:6:33" - } - ], - "functionName": { - "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "2369:56:33" - }, - "nodeType": "YulFunctionCall", - "src": "2369:64:33" - } - ], - "functionName": { - "name": "allocate_memory", - "nodeType": "YulIdentifier", - "src": "2353:15:33" - }, - "nodeType": "YulFunctionCall", - "src": "2353:81:33" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "2344:5:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2443:16:33", - "value": { - "name": "array", - "nodeType": "YulIdentifier", - "src": "2454:5:33" - }, - "variables": [ - { - "name": "dst", - "nodeType": "YulTypedName", - "src": "2447:3:33", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "2476:5:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2483:6:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2469:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "2469:21:33" - }, - "nodeType": "YulExpressionStatement", - "src": "2469:21:33" - }, - { - "nodeType": "YulAssignment", - "src": "2499:23:33", - "value": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "2510:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2517:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2506:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "2506:16:33" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "2499:3:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2532:44:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2550:6:33" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2562:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2570:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "2558:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "2558:17:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2546:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "2546:30:33" - }, - "variables": [ - { - "name": "srcEnd", - "nodeType": "YulTypedName", - "src": "2536:6:33", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2604:103:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", - "nodeType": "YulIdentifier", - "src": "2618:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "2618:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "2618:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "srcEnd", - "nodeType": "YulIdentifier", - "src": "2591:6:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "2599:3:33" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2588:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "2588:15:33" - }, - "nodeType": "YulIf", - "src": "2585:122:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2792:144:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2807:21:33", - "value": { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2825:3:33" - }, - "variables": [ - { - "name": "elementPos", - "nodeType": "YulTypedName", - "src": "2811:10:33", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "2849:3:33" - }, - { - "arguments": [ - { - "name": "elementPos", - "nodeType": "YulIdentifier", - "src": "2875:10:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "2887:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint256", - "nodeType": "YulIdentifier", - "src": "2854:20:33" - }, - "nodeType": "YulFunctionCall", - "src": "2854:37:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2842:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "2842:50:33" - }, - "nodeType": "YulExpressionStatement", - "src": "2842:50:33" - }, - { - "nodeType": "YulAssignment", - "src": "2905:21:33", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "2916:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2921:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2912:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "2912:14:33" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "2905:3:33" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2745:3:33" - }, - { - "name": "srcEnd", - "nodeType": "YulIdentifier", - "src": "2750:6:33" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2742:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "2742:15:33" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "2758:25:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2760:21:33", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2771:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2776:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2767:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "2767:14:33" - }, - "variableNames": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2760:3:33" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "2720:21:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2722:17:33", - "value": { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2733:6:33" - }, - "variables": [ - { - "name": "src", - "nodeType": "YulTypedName", - "src": "2726:3:33", - "type": "" - } - ] - } - ] - }, - "src": "2716:220:33" - } - ] - }, - "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "2304:6:33", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "2312:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "2320:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "2328:5:33", - "type": "" - } - ], - "src": "2232:710:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3042:293:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3091:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", - "nodeType": "YulIdentifier", - "src": "3093:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "3093:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "3093:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3070:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3078:4:33", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3066:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3066:17:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "3085:3:33" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "3062:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3062:27:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3055:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "3055:35:33" - }, - "nodeType": "YulIf", - "src": "3052:122:33" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3183:34:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3210:6:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3197:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "3197:20:33" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "3187:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3226:103:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3302:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3310:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3298:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3298:17:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3317:6:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "3325:3:33" - } - ], - "functionName": { - "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "3235:62:33" - }, - "nodeType": "YulFunctionCall", - "src": "3235:94:33" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "3226:5:33" - } - ] - } - ] - }, - "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3020:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "3028:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "3036:5:33", - "type": "" - } - ], - "src": "2965:370:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3435:229:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3540:22:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "3542:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "3542:18:33" - }, - "nodeType": "YulExpressionStatement", - "src": "3542:18:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3512:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3520:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3509:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "3509:30:33" - }, - "nodeType": "YulIf", - "src": "3506:56:33" - }, - { - "nodeType": "YulAssignment", - "src": "3572:25:33", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3584:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3592:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "3580:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3580:17:33" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "3572:4:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3634:23:33", - "value": { - "arguments": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "3646:4:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3652:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3642:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "3642:15:33" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "3634:4:33" - } - ] - } - ] - }, - "name": "array_allocation_size_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "3419:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "3430:4:33", - "type": "" - } - ], - "src": "3341:323:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3725:56:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3759:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3768:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3771:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3761:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "3761:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "3761:12:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3748:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3755:1:33", - "type": "", - "value": "4" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3745:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "3745:12:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3738:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "3738:20:33" - }, - "nodeType": "YulIf", - "src": "3735:40:33" - } - ] - }, - "name": "validator_revert_t_enum$_Version_$6610", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "3718:5:33", - "type": "" - } - ], - "src": "3670:111:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3851:99:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3861:29:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3883:6:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3870:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "3870:20:33" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3861:5:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3938:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_enum$_Version_$6610", - "nodeType": "YulIdentifier", - "src": "3899:38:33" - }, - "nodeType": "YulFunctionCall", - "src": "3899:45:33" - }, - "nodeType": "YulExpressionStatement", - "src": "3899:45:33" - } - ] - }, - "name": "abi_decode_t_enum$_Version_$6610", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3829:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "3837:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "3845:5:33", - "type": "" - } - ], - "src": "3787:163:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4102:632:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4112:102:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "4206:6:33" - } - ], - "functionName": { - "name": "array_allocation_size_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "4137:68:33" - }, - "nodeType": "YulFunctionCall", - "src": "4137:76:33" - } - ], - "functionName": { - "name": "allocate_memory", - "nodeType": "YulIdentifier", - "src": "4121:15:33" - }, - "nodeType": "YulFunctionCall", - "src": "4121:93:33" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "4112:5:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4223:16:33", - "value": { - "name": "array", - "nodeType": "YulIdentifier", - "src": "4234:5:33" - }, - "variables": [ - { - "name": "dst", - "nodeType": "YulTypedName", - "src": "4227:3:33", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "4256:5:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "4263:6:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4249:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "4249:21:33" - }, - "nodeType": "YulExpressionStatement", - "src": "4249:21:33" - }, - { - "nodeType": "YulAssignment", - "src": "4279:23:33", - "value": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "4290:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4297:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4286:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4286:16:33" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "4279:3:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4312:44:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4330:6:33" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "4342:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4350:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "4338:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4338:17:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4326:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4326:30:33" - }, - "variables": [ - { - "name": "srcEnd", - "nodeType": "YulTypedName", - "src": "4316:6:33", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4384:103:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", - "nodeType": "YulIdentifier", - "src": "4398:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "4398:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "4398:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "srcEnd", - "nodeType": "YulIdentifier", - "src": "4371:6:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "4379:3:33" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4368:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "4368:15:33" - }, - "nodeType": "YulIf", - "src": "4365:122:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4572:156:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "4587:21:33", - "value": { - "name": "src", - "nodeType": "YulIdentifier", - "src": "4605:3:33" - }, - "variables": [ - { - "name": "elementPos", - "nodeType": "YulTypedName", - "src": "4591:10:33", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "4629:3:33" - }, - { - "arguments": [ - { - "name": "elementPos", - "nodeType": "YulIdentifier", - "src": "4667:10:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "4679:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_enum$_Version_$6610", - "nodeType": "YulIdentifier", - "src": "4634:32:33" - }, - "nodeType": "YulFunctionCall", - "src": "4634:49:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4622:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "4622:62:33" - }, - "nodeType": "YulExpressionStatement", - "src": "4622:62:33" - }, - { - "nodeType": "YulAssignment", - "src": "4697:21:33", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "4708:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4713:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4704:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4704:14:33" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "4697:3:33" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "4525:3:33" - }, - { - "name": "srcEnd", - "nodeType": "YulIdentifier", - "src": "4530:6:33" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "4522:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "4522:15:33" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "4538:25:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4540:21:33", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "4551:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4556:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4547:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4547:14:33" - }, - "variableNames": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "4540:3:33" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "4500:21:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "4502:17:33", - "value": { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4513:6:33" - }, - "variables": [ - { - "name": "src", - "nodeType": "YulTypedName", - "src": "4506:3:33", - "type": "" - } - ] - } - ] - }, - "src": "4496:232:33" - } - ] - }, - "name": "abi_decode_available_length_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "4072:6:33", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "4080:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "4088:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "4096:5:33", - "type": "" - } - ], - "src": "3988:746:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4861:305:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "4910:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", - "nodeType": "YulIdentifier", - "src": "4912:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "4912:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "4912:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4889:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4897:4:33", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4885:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4885:17:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "4904:3:33" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "4881:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4881:27:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "4874:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "4874:35:33" - }, - "nodeType": "YulIf", - "src": "4871:122:33" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5002:34:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "5029:6:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5016:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "5016:20:33" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "5006:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5045:115:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "5133:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5141:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5129:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5129:17:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "5148:6:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "5156:3:33" - } - ], - "functionName": { - "name": "abi_decode_available_length_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "5054:74:33" - }, - "nodeType": "YulFunctionCall", - "src": "5054:106:33" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "5045:5:33" - } - ] - } - ] - }, - "name": "abi_decode_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "4839:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "4847:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "4855:5:33", - "type": "" - } - ], - "src": "4772:394:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5268:229:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "5373:22:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "5375:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "5375:18:33" - }, - "nodeType": "YulExpressionStatement", - "src": "5375:18:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "5345:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5353:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5342:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5342:30:33" - }, - "nodeType": "YulIf", - "src": "5339:56:33" - }, - { - "nodeType": "YulAssignment", - "src": "5405:25:33", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "5417:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5425:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "5413:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5413:17:33" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "5405:4:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5467:23:33", - "value": { - "arguments": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "5479:4:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5485:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5475:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5475:15:33" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "5467:4:33" - } - ] - } - ] - }, - "name": "array_allocation_size_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "5252:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "5263:4:33", - "type": "" - } - ], - "src": "5172:325:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5548:81:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5558:65:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "5573:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5580:42:33", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "5569:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5569:54:33" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "5558:7:33" - } - ] - } - ] - }, - "name": "cleanup_t_uint160", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "5530:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "5540:7:33", - "type": "" - } - ], - "src": "5503:126:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5680:51:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5690:35:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "5719:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint160", - "nodeType": "YulIdentifier", - "src": "5701:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "5701:24:33" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "5690:7:33" - } - ] - } - ] - }, - "name": "cleanup_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "5662:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "5672:7:33", - "type": "" - } - ], - "src": "5635:96:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5796:51:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5806:35:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "5835:5:33" - } - ], - "functionName": { - "name": "cleanup_t_address", - "nodeType": "YulIdentifier", - "src": "5817:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "5817:24:33" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "5806:7:33" - } - ] - } - ] - }, - "name": "cleanup_t_contract$_IERC20_$225", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "5778:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "5788:7:33", - "type": "" - } - ], - "src": "5737:110:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5910:93:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "5981:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5990:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5993:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5983:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "5983:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "5983:12:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "5933:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "5972:5:33" - } - ], - "functionName": { - "name": "cleanup_t_contract$_IERC20_$225", - "nodeType": "YulIdentifier", - "src": "5940:31:33" - }, - "nodeType": "YulFunctionCall", - "src": "5940:38:33" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "5930:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5930:49:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "5923:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "5923:57:33" - }, - "nodeType": "YulIf", - "src": "5920:77:33" - } - ] - }, - "name": "validator_revert_t_contract$_IERC20_$225", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "5903:5:33", - "type": "" - } - ], - "src": "5853:150:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6075:101:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6085:29:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "6107:6:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "6094:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "6094:20:33" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "6085:5:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "6164:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_contract$_IERC20_$225", - "nodeType": "YulIdentifier", - "src": "6123:40:33" - }, - "nodeType": "YulFunctionCall", - "src": "6123:47:33" - }, - "nodeType": "YulExpressionStatement", - "src": "6123:47:33" - } - ] - }, - "name": "abi_decode_t_contract$_IERC20_$225", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "6053:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "6061:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "6069:5:33", - "type": "" - } - ], - "src": "6009:167:33" - }, + "src": "3043:218:34" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_ILBFactory_$4236(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBFactory_$4236(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBFactory_$4236(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBFactory_$4236_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBFactory_$4236(value)\n }\n\n function cleanup_t_contract$_ISovrynLBFactoryV1_$6916(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISovrynLBFactoryV1_$6916(value) {\n if iszero(eq(value, cleanup_t_contract$_ISovrynLBFactoryV1_$6916(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISovrynLBFactoryV1_$6916(value)\n }\n\n function cleanup_t_contract$_IWNATIVE_$7175(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IWNATIVE_$7175(value) {\n if iszero(eq(value, cleanup_t_contract$_IWNATIVE_$7175(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IWNATIVE_$7175_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IWNATIVE_$7175(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBFactory_$4236t_contract$_ISovrynLBFactoryV1_$6916t_contract$_IWNATIVE_$7175_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBFactory_$4236_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_contract$_IWNATIVE_$7175_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 34, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60e060405234801562000010575f80fd5b506040516200750338038062007503833981810160405281019062000036919062000312565b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050620000e2620000eb60201b60201c565b505050620003aa565b5f620000fc620001ef60201b60201c565b9050805f0160089054906101000a900460ff161562000147576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1614620001ec5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051620001e391906200038f565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000245826200021a565b9050919050565b5f620002588262000239565b9050919050565b6200026a816200024c565b811462000275575f80fd5b50565b5f8151905062000288816200025f565b92915050565b5f6200029a8262000239565b9050919050565b620002ac816200028e565b8114620002b7575f80fd5b50565b5f81519050620002ca81620002a1565b92915050565b5f620002dc8262000239565b9050919050565b620002ee81620002d0565b8114620002f9575f80fd5b50565b5f815190506200030c81620002e3565b92915050565b5f805f606084860312156200032c576200032b62000216565b5b5f6200033b8682870162000278565b93505060206200034e86828701620002ba565b92505060406200036186828701620002fc565b9150509250925092565b5f67ffffffffffffffff82169050919050565b62000389816200036b565b82525050565b5f602082019050620003a45f8301846200037e565b92915050565b60805160a05160c05161709b620004685f395f818161015501528181610798015281816108860152818161097901528181610b3801528181610fe9015281816117c8015281816119b401528181611a6501528181611c4601528181611ceb015281816121ac0152818161262c01528181612a46015281816135310152818161397a01526139fc01525f818161279f0152614c6a01525f81816114e00152818161171e01528181611b0201528181612cda0152614387015261709b5ff3fe60806040526004361061014e575f3560e01c806392fe8e70116100b5578063bb558a9f1161006e578063bb558a9f146105a3578063c22159b6146105cd578063d0e380f21461060a578063e038e6dc14610646578063e9361c0814610676578063f96fe9251461069e576101da565b806392fe8e701461043e578063964f987c1461047a5780639ab6156b146104b8578063a0d376cf146104f4578063a3c7271a14610532578063b066ea7c14610573576101da565b8063659ac74b11610107578063659ac74b146103265780636c9c0078146103625780638129fc1c1461038c57806381c2fdfb146103a257806388cc58e4146103df5780638efc2b2c14610409576101da565b80631a24f9a9146101de5780632075ad221461021a5780632a443fae1461024a5780633dc8f8ec146102865780634b801870146102c257806362c06767146102fe576101da565b366101da577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d8576040517f6c8cb79300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b3480156101e9575f80fd5b5061020460048036038101906101ff919061564c565b6106da565b60405161021191906156ee565b60405180910390f35b610234600480360381019061022f9190615731565b610a79565b6040516102419190615868565b60405180910390f35b348015610255575f80fd5b50610270600480360381019061026b9190615888565b610da7565b60405161027d91906156ee565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a7919061564c565b610f2a565b6040516102b99190615868565b60405180910390f35b3480156102cd575f80fd5b506102e860048036038101906102e39190615888565b611239565b6040516102f591906156ee565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f919061591b565b6114de565b005b348015610331575f80fd5b5061034c600480360381019061034791906159da565b61171b565b6040516103599190615a99565b60405180910390f35b34801561036d575f80fd5b506103766117c5565b6040516103839190615ad2565b60405180910390f35b348015610397575f80fd5b506103a06117ec565b005b3480156103ad575f80fd5b506103c860048036038101906103c39190615aeb565b611963565b6040516103d6929190615bd4565b60405180910390f35b3480156103ea575f80fd5b506103f3611aff565b6040516104009190615c1b565b60405180910390f35b610423600480360381019061041e9190615c57565b611b26565b60405161043596959493929190615c9e565b60405180910390f35b348015610449575f80fd5b50610464600480360381019061045f9190615888565b611e2b565b6040516104719190615868565b60405180910390f35b348015610485575f80fd5b506104a0600480360381019061049b9190615dc0565b61205c565b6040516104af93929190615e1f565b60405180910390f35b3480156104c3575f80fd5b506104de60048036038101906104d9919061564c565b6120ee565b6040516104eb91906156ee565b60405180910390f35b3480156104ff575f80fd5b5061051a60048036038101906105159190615dc0565b61234f565b60405161052993929190615e1f565b60405180910390f35b34801561053d575f80fd5b5061055860048036038101906105539190615c57565b6123e1565b60405161056a96959493929190615c9e565b60405180910390f35b61058d60048036038101906105889190615731565b61256e565b60405161059a91906156ee565b60405180910390f35b3480156105ae575f80fd5b506105b761279c565b6040516105c49190615e74565b60405180910390f35b3480156105d8575f80fd5b506105f360048036038101906105ee9190615e8d565b6127c3565b604051610601929190615bd4565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190615f89565b612907565b60405161063d91906156ee565b60405180910390f35b610660600480360381019061065b9190615731565b612988565b60405161066d91906156ee565b60405180910390f35b348015610681575f80fd5b5061069c6004803603810190610697919061605b565b612cd8565b005b3480156106a9575f80fd5b506106c460048036038101906106bf91906160fe565b612e41565b6040516106d1919061614b565b60405180910390f35b5f81804211156107235780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161071a929190615bd4565b60405180910390fd5b845f815f015151148061073f5750805f01515181602001515114155b8061075f57508060400151516001825f01515161075c9190616191565b14155b15610796576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106107e8576107e76161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461086a578560400151865f01515181518110610826576108256161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016108619190616200565b60405180910390fd5b5f610881875f015188602001518960400151612ec2565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dd9190616200565b602060405180830381865afa1580156108f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091c919061622d565b905061096288604001515f81518110610938576109376161c4565b5b602002602001015133845f81518110610954576109536161c4565b5b60200260200101518d612fff565b6109768289602001518a604001513061303b565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109d09190616200565b602060405180830381865afa1580156109eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f919061622d565b610a199190616258565b945084891115610a625788856040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610a59929190615bd4565b60405180910390fd5b610a6c8786613527565b5050505095945050505050565b60608180421115610ac35780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610aba929190615bd4565b60405180910390fd5b845f815f0151511480610adf5750805f01515181602001515114155b80610aff57508060400151516001825f015151610afc9190616191565b14155b15610b36576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110610b8457610b836161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c025785604001515f81518110610bbe57610bbd6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401610bf99190616200565b60405180910390fd5b5f610c19875f015188602001518960400151612ec2565b9050610c2f87602001518289604001518b6135c4565b935034845f81518110610c4557610c446161c4565b5b60200260200101511115610cac5734845f81518110610c6757610c666161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401610ca3929190615bd4565b60405180910390fd5b610cea815f81518110610cc257610cc16161c4565b5b6020026020010151855f81518110610cdd57610cdc6161c4565b5b6020026020010151613970565b5f610d008289602001518a60400151888b613a45565b905088811015610d495788816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610d40929190615bd4565b60405180910390fd5b845f81518110610d5c57610d5b6161c4565b5b6020026020010151341115610d9b57610d9a33865f81518110610d8257610d816161c4565b5b602002602001015134610d959190616258565b613ddb565b5b50505050949350505050565b5f8180421115610df05780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610de7929190615bd4565b60405180910390fd5b845f815f0151511480610e0c5750805f01515181602001515114155b80610e2c57508060400151516001825f015151610e299190616191565b14155b15610e63576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e7a875f015188602001518960400151612ec2565b9050610ec087604001515f81518110610e9657610e956161c4565b5b602002602001015133835f81518110610eb257610eb16161c4565b5b60200260200101518c612fff565b610ed5898289602001518a604001518a613e95565b935083881115610f1e5787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610f15929190615bd4565b60405180910390fd5b50505095945050505050565b60608180421115610f745780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610f6b929190615bd4565b60405180910390fd5b845f815f0151511480610f905750805f01515181602001515114155b80610fb057508060400151516001825f015151610fad9190616191565b14155b15610fe7576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f01515181518110611039576110386161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146110bb578560400151865f01515181518110611077576110766161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016110b29190616200565b60405180910390fd5b5f6110d2875f015188602001518960400151612ec2565b90506110e887602001518289604001518c6135c4565b935087845f815181106110fe576110fd6161c4565b5b602002602001015111156111655787845f815181106111205761111f6161c4565b5b60200260200101516040517fca7710c800000000000000000000000000000000000000000000000000000000815260040161115c929190615bd4565b60405180910390fd5b6111c387604001515f8151811061117f5761117e6161c4565b5b602002602001015133835f8151811061119b5761119a6161c4565b5b6020026020010151875f815181106111b6576111b56161c4565b5b6020026020010151612fff565b5f6111d98289602001518a604001518830613a45565b9050898110156112225789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401611219929190615bd4565b60405180910390fd5b61122c8782613527565b5050505095945050505050565b5f81804211156112825780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611279929190615bd4565b60405180910390fd5b845f815f015151148061129e5750805f01515181602001515114155b806112be57508060400151516001825f0151516112bb9190616191565b14155b156112f5576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61130c875f015188602001518960400151612ec2565b90505f8760400151825181518110611327576113266161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b815260040161136b9190616200565b602060405180830381865afa158015611386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113aa919061622d565b90506113f089604001515f815181106113c6576113c56161c4565b5b602002602001015133855f815181106113e2576113e16161c4565b5b60200260200101518e612fff565b611404838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b815260040161143e9190616200565b602060405180830381865afa158015611459573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147d919061622d565b6114879190616258565b9550858a11156114d05789866040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016114c7929190615bd4565b60405180910390fd5b505050505095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611547573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156b919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cf576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611642577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461162f5780611631565b475b905061163d8282613ddb565b611716565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461166f57806116e8565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116a89190616200565b602060405180830381865afa1580156116c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e7919061622d565b5b905061171582828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663659ac74b868686866040518563ffffffff1660e01b815260040161177b94939291906162f9565b6020604051808303815f875af1158015611797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bb9190616350565b9050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f6117f561435d565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561183d5750825b90505f60018367ffffffffffffffff1614801561187057505f3073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801561187e575080155b156118b5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611902576001855f0160086101000a81548160ff0219169083151502179055505b831561195c575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161195391906163c7565b60405180910390a15b5050505050565b5f8082804211156119ad5780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016119a4929190615bd4565b60405180910390fd5b5f6119dd8c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614905080611aad57898b809b50819c5050505b5f80611abd848e8e8e8e306144a2565b9150915082611acd578082611ad0565b81815b8097508198505050505050611ae68c878661462b565b611af08684613527565b50509850989650505050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f805f806060805f611b60885f016020810190611b43919061641f565b896020016020810190611b56919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcf91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f016020810190611bf7919061641f565b73ffffffffffffffffffffffffffffffffffffffff1614611c44576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16885f016020810190611c8d919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611cb35750348860600135145b15611ce957611cda886020016020810190611cce919061641f565b33838b60800135612fff565b611ce48134613970565b611dff565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16886020016020810190611d33919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611d595750348860800135145b15611d8e57611d7f885f016020810190611d73919061641f565b33838b60600135612fff565b611d898134613970565b611dfe565b875f016020810190611da0919061641f565b886020016020810190611db3919061641f565b89606001358a60800135346040517fd0a4f13b000000000000000000000000000000000000000000000000000000008152600401611df595949392919061644a565b60405180910390fd5b5b611e098882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b60608180421115611e755780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611e6c929190615bd4565b60405180910390fd5b845f815f0151511480611e915750805f01515181602001515114155b80611eb157508060400151516001825f015151611eae9190616191565b14155b15611ee8576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611eff875f015188602001518960400151612ec2565b9050611f1587602001518289604001518c6135c4565b935087845f81518110611f2b57611f2a6161c4565b5b60200260200101511115611f925787845f81518110611f4d57611f4c6161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401611f89929190615bd4565b60405180910390fd5b611ff087604001515f81518110611fac57611fab6161c4565b5b602002602001015133835f81518110611fc857611fc76161c4565b5b6020026020010151875f81518110611fe357611fe26161c4565b5b6020026020010151612fff565b5f6120068289602001518a60400151888b613a45565b90508981101561204f5789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612046929190615bd4565b60405180910390fd5b5050505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663abcd783086866040518363ffffffff1660e01b815260040161209a9291906164aa565b606060405180830381865afa1580156120b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120d991906164e5565b80935081945082955050505093509350939050565b5f81804211156121375780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161212e929190615bd4565b60405180910390fd5b845f815f01515114806121535750805f01515181602001515114155b8061217357508060400151516001825f0151516121709190616191565b14155b156121aa576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106121fc576121fb6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461227e578560400151865f0151518151811061223a576122396161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016122759190616200565b60405180910390fd5b5f612295875f015188602001518960400151612ec2565b90506122db87604001515f815181106122b1576122b06161c4565b5b602002602001015133835f815181106122cd576122cc6161c4565b5b60200260200101518c612fff565b6122f0898289602001518a6040015130613e95565b9350838811156123395787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612330929190615bd4565b60405180910390fd5b6123438685613527565b50505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663e77366f886866040518363ffffffff1660e01b815260040161238d9291906164aa565b606060405180830381865afa1580156123a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cc91906164e5565b80935081945082955050505093509350939050565b5f805f806060805f61241b885f0160208101906123fe919061641f565b896020016020810190612411919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f0160208101906124b2919061641f565b73ffffffffffffffffffffffffffffffffffffffff16146124ff576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612520885f016020810190612514919061641f565b33838b60600135612fff565b612542886020016020810190612536919061641f565b33838b60800135612fff565b61254c8882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b5f81804211156125b75780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016125ae929190615bd4565b60405180910390fd5b845f815f01515114806125d35750805f01515181602001515114155b806125f357508060400151516001825f0151516125f09190616191565b14155b1561262a576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612678576126776161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146126f65785604001515f815181106126b2576126b16161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016126ed9190616200565b60405180910390fd5b5f61270d875f015188602001518960400151612ec2565b9050612733815f81518110612725576127246161c4565b5b602002602001015134613970565b612748348289602001518a604001518a613e95565b9350838811156127915787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612788929190615bd4565b60405180910390fd5b505050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f80828042111561280d5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401612804929190615bd4565b60405180910390fd5b5f61281d8d8d8d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612869573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff161415905080156128cf57898b809b50819c5050505b6128dd828c8c8c8c8c6144a2565b809550819650505080156128f657838580955081965050505b505050995099975050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16634c7cffbd836040518263ffffffff1660e01b8152600401612941919061614b565b602060405180830381865afa15801561295c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612980919061622d565b905092915050565b5f81804211156129d15780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016129c8929190615bd4565b60405180910390fd5b845f815f01515114806129ed5750805f01515181602001515114155b80612a0d57508060400151516001825f015151612a0a9190616191565b14155b15612a44576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612a9257612a916161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612b105785604001515f81518110612acc57612acb6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401612b079190616200565b60405180910390fd5b5f612b27875f015188602001518960400151612ec2565b90505f8760400151825181518110612b4257612b416161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612b869190616200565b602060405180830381865afa158015612ba1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc5919061622d565b9050612beb835f81518110612bdd57612bdc6161c4565b5b602002602001015134613970565b612bff838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401612c399190616200565b602060405180830381865afa158015612c54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c78919061622d565b612c829190616258565b9550858a1115612ccb5789866040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612cc2929190615bd4565b60405180910390fd5b5050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d65919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166317fad7fc3087878787876040518763ffffffff1660e01b8152600401612e0c9695949392919061659d565b5f604051808303815f87803b158015612e23575f80fd5b505af1158015612e35573d5f803e3d5ffd5b50505050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663f5e29329836040518263ffffffff1660e01b8152600401612e7b91906156ee565b602060405180830381865afa158015612e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eba9190616606565b905092915050565b6060835167ffffffffffffffff811115612edf57612ede61520a565b5b604051908082528060200260200182016040528015612f0d5781602001602082028036833780820191505090505b5090505f80835f81518110612f2557612f246161c4565b5b602002602001015190505f5b8351811015612ff557819250846001820181518110612f5357612f526161c4565b5b60200260200101519150612f9d8383898481518110612f7557612f746161c4565b5b6020026020010151898581518110612f9057612f8f6161c4565b5b6020026020010151614c3c565b848281518110612fb057612faf6161c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050612f31565b5050509392505050565b5f810315613035576130348383838773ffffffffffffffffffffffffffffffffffffffff16614d93909392919063ffffffff16565b5b50505050565b5f805f805f865f81518110613053576130526161c4565b5b602002602001015190505f5b895181101561351b5789818151811061307b5761307a6161c4565b5b60200260200101519250888181518110613098576130976161c4565b5b602002602001015194508195508760018201815181106130bb576130ba6161c4565b5b60200260200101519150895160018201146130f3578960018201815181106130e6576130e56161c4565b5b60200260200101516130f5565b865b93505f600181111561310a57613109616631565b5b85600181111561311d5761311c616631565b5b036133f9575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561316d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061319191906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156132f0575f828973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016132259190616200565b602060405180830381865afa158015613240573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613264919061622d565b0390505f61327d848484614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f838b6040518463ffffffff1660e01b81526004016132bc93929190616796565b5f604051808303815f87803b1580156132d3575f80fd5b505af11580156132e5573d5f803e3d5ffd5b5050505050506133f2565b5f818973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b815260040161332b9190616200565b602060405180830381865afa158015613346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336a919061622d565b0390505f613383838584614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f825f8b6040518463ffffffff1660e01b81526004016133c2939291906167de565b5f604051808303815f87803b1580156133d9575f80fd5b505af11580156133eb573d5f803e3d5ffd5b5050505050505b5050613510565b8273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561345e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348291906163f4565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b81526004016134ce929190616826565b6020604051808303815f875af11580156134ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061350e9190616880565b505b80600101905061305f565b50505050505050505050565b5f8103156135c0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161358891906156ee565b5f604051808303815f87803b15801561359f575f80fd5b505af11580156135b1573d5f803e3d5ffd5b505050506135bf8282613ddb565b5b5050565b6060825167ffffffffffffffff8111156135e1576135e061520a565b5b60405190808252806020026020018201604052801561360f5781602001602082028036833780820191505090505b5090508181855181518110613627576136266161c4565b5b6020026020010181815250505f845190505b5f8114613967575f8460018361364f9190616258565b815181106136605761365f6161c4565b5b602002602001015190505f876001846136799190616258565b8151811061368a576136896161c4565b5b602002602001015190505f876001856136a39190616258565b815181106136b4576136b36161c4565b5b602002602001015190505f60018111156136d1576136d0616631565b5b8260018111156136e4576136e3616631565b5b0361384e575f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613734573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061375891906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508886815181106137905761378f6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156137d657808280925081935050505b5f8787815181106137ea576137e96161c4565b5b60200260200101519050613809838383614ef39092919063ffffffff16565b6fffffffffffffffffffffffffffffffff16886001896138299190616258565b8151811061383a576138396161c4565b5b602002602001018181525050505050613951565b61390d81868681518110613865576138646161c4565b5b60200260200101518573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f191906163f4565b73ffffffffffffffffffffffffffffffffffffffff161461205c565b826fffffffffffffffffffffffffffffffff169250905050856001866139339190616258565b81518110613944576139436161c4565b5b6020026020010181815250505b505050808061395f906168ab565b915050613639565b50949350505050565b5f810315613a41577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156139de575f80fd5b505af11580156139f0573d5f803e3d5ffd5b5050505050613a4082827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b5050565b5f805f805f80885f81518110613a5e57613a5d6161c4565b5b602002602001015190505f5b8b51811015613dcc578b8181518110613a8657613a856161c4565b5b602002602001015193508a8181518110613aa357613aa26161c4565b5b60200260200101519250819550896001820181518110613ac657613ac56161c4565b5b602002602001015191508b516001820114613afe578b6001820181518110613af157613af06161c4565b5b6020026020010151613b00565b875b94505f6001811115613b1557613b14616631565b5b836001811115613b2857613b27616631565b5b03613c6057886001820181518110613b4357613b426161c4565b5b602002602001015196508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015613bf0578373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f89886040518463ffffffff1660e01b8152600401613bbe93929190616796565b5f604051808303815f87803b158015613bd5575f80fd5b505af1158015613be7573d5f803e3d5ffd5b50505050613c5b565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f885f886040518463ffffffff1660e01b8152600401613c2d939291906167de565b5f604051808303815f87803b158015613c44575f80fd5b505af1158015613c56573d5f803e3d5ffd5b505050505b613dc1565b5f8473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613caa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cce91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f80613d838773ffffffffffffffffffffffffffffffffffffffff166353c059a0858b6040518363ffffffff1660e01b8152600401613d3e929190616826565b6020604051808303815f875af1158015613d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d7e9190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff1691508215613db957809950613dbd565b8199505b5050505b806001019050613a6a565b50505050505095945050505050565b5f810315613e91575f8273ffffffffffffffffffffffffffffffffffffffff1682604051613e08906168fc565b5f6040518083038185875af1925050503d805f8114613e42576040519150601f19603f3d011682016040523d82523d5f602084013e613e47565b606091505b5050905080613e8f5782826040517f47b96f70000000000000000000000000000000000000000000000000000000008152600401613e86929190616910565b60405180910390fd5b505b5050565b5f805f805f80875f81518110613eae57613ead6161c4565b5b602002602001015190508a95505f5b8a518110156142c3578a8181518110613ed957613ed86161c4565b5b60200260200101519250898181518110613ef657613ef56161c4565b5b60200260200101519450819550886001820181518110613f1957613f186161c4565b5b602002602001015191508a516001820114613f51578a6001820181518110613f4457613f436161c4565b5b6020026020010151613f53565b875b93505f6001811115613f6857613f67616631565b5b856001811115613f7b57613f7a616631565b5b03614157575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fef91906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156140ce5761405d82828b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f8b896040518463ffffffff1660e01b815260040161409c93929190616796565b5f604051808303815f87803b1580156140b3575f80fd5b505af11580156140c5573d5f803e3d5ffd5b50505050614150565b6140e381838b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8a5f896040518463ffffffff1660e01b8152600401614122939291906167de565b5f604051808303815f87803b158015614139575f80fd5b505af115801561414b573d5f803e3d5ffd5b505050505b50506142b8565b5f8373ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141c591906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f8061427a8673ffffffffffffffffffffffffffffffffffffffff166353c059a0858a6040518363ffffffff1660e01b8152600401614235929190616826565b6020604051808303815f875af1158015614251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142759190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff16915082156142b0578099506142b4565b8199505b5050505b806001019050613ebd565b50505050505095945050505050565b5f63a9059cbb60e01b83836040516024016142ee929190616910565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506143578482614fee565b50505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8585856040518463ffffffff1660e01b81526004016143e293929190616937565b608060405180830381865afa1580156143fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144219190616a09565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361449b578383836040517fd648e3a200000000000000000000000000000000000000000000000000000000815260040161449293929190616a34565b60405180910390fd5b9392505050565b5f805f8873ffffffffffffffffffffffffffffffffffffffff1663c9939f5e338689896040518563ffffffff1660e01b81526004016144e49493929190616a69565b5f604051808303815f875af11580156144ff573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906145279190616b7a565b90505f5b81518110156145c95761455782828151811061454a576145496161c4565b5b6020026020010151615078565b6fffffffffffffffffffffffffffffffff16846145749190616191565b935061459982828151811061458c5761458b6161c4565b5b6020026020010151615093565b6fffffffffffffffffffffffffffffffff16836145b69190616191565b9250806145c290616bc1565b905061452b565b50878310806145d757508682105b1561461f57878388846040517f3199f6ee0000000000000000000000000000000000000000000000000000000081526004016146169493929190616c08565b60405180910390fd5b50965096945050505050565b5f81031561465f5761465e82828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f805f80606080876101c00135804211156146b85780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016146af929190615bd4565b60405180910390fd5b888061014001906146c99190616c57565b9050898061012001906146dc9190616cb9565b905014158061470f5750888061016001906146f79190616c57565b90508980610120019061470a9190616cb9565b905014155b15614746576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62ffffff80168960e001351180614766575062ffffff8016896101000135115b156147b3578860e001358961010001356040517f32f4ab8e0000000000000000000000000000000000000000000000000000000081526004016147aa929190615bd4565b60405180910390fd5b5f898061012001906147c59190616cb9565b905067ffffffffffffffff8111156147e0576147df61520a565b5b60405190808252806020026020018201604052801561480e5781602001602082028036833780820191505090505b509050898061012001906148229190616cb9565b905067ffffffffffffffff81111561483d5761483c61520a565b5b60405190808252806020026020018201604052801561486b5781602001602082028036833780820191505090505b5093505f8973ffffffffffffffffffffffffffffffffffffffff1663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156148b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148dc9190616606565b62ffffff169050808b61010001358c60e0013501108061490657508a60e001358b61010001358201105b15614955578a60e001358b6101000135826040517ffaa1db5600000000000000000000000000000000000000000000000000000000815260040161494c93929190616d1b565b60405180910390fd5b5f5b8251811015614a88575f8c8061012001906149729190616cb9565b83818110614983576149826161c4565b5b90506020020135830190505f8112806149a0575062ffffff801681115b156149e257806040517fe1505cc20000000000000000000000000000000000000000000000000000000081526004016149d99190616d68565b60405180910390fd5b808783815181106149f6576149f56161c4565b5b602002602001018181525050614a5d8d806101400190614a169190616c57565b84818110614a2757614a266161c4565b5b905060200201358e806101600190614a3f9190616c57565b85818110614a5057614a4f6161c4565b5b905060200201358361509f565b848381518110614a7057614a6f6161c4565b5b60200260200101818152505050806001019050614957565b50505f808a73ffffffffffffffffffffffffffffffffffffffff1663383d15c58d610180016020810190614abc9190616d81565b858f6101a0016020810190614ad19190616d81565b6040518463ffffffff1660e01b8152600401614aef93929190616e63565b5f604051808303815f875af1158015614b0a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190614b329190616f34565b8097508193508294505050505f614b52828461512090919063ffffffff16565b9050614b5d81615078565b6fffffffffffffffffffffffffffffffff169a50614b7a81615093565b6fffffffffffffffffffffffffffffffff1699508c60a001358b1080614ba357508c60c001358a105b15614bf3578c60a001358b8e60c001358c6040517f3199f6ee000000000000000000000000000000000000000000000000000000008152600401614bea9493929190616c08565b60405180910390fd5b614bfc82615078565b6fffffffffffffffffffffffffffffffff169850614c1982615093565b6fffffffffffffffffffffffffffffffff16975050505050509295509295509295565b5f806001811115614c5057614c4f616631565b5b826001811115614c6357614c62616631565b5b03614d7d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b8152600401614cc3929190616fa0565b602060405180830381865afa158015614cde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d02919061629f565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614d78578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401614d6f93929190616a34565b60405180910390fd5b614d8b565b614d88858585614384565b90505b949350505050565b5f6323b872dd60e01b848484604051602401614db193929190616a34565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050614e1a8582614fee565b5050505050565b5f808403614e5b576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614e6857505f82145b15614e9f576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e585614eae9190616fc7565b90505f8382614ebd9190616fc7565b90505f826103e887614ecf9190616fc7565b614ed99190616191565b90508082614ee79190617035565b93505050509392505050565b5f808403614f2d576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614f3a57505f82145b15614f71576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e88585614f819190616fc7565b614f8b9190616fc7565b90505f6103e58685614f9d9190616258565b614fa79190616fc7565b905060018183614fb79190617035565b614fc19190616191565b925050509392505050565b5f806fffffffffffffffffffffffffffffffff831691508260801c9050915091565b5f805f5260205f8351602085015f875af19050805f811461502c573d5f811461501f5760015f511483169250615026565b843b151592505b5061503b565b3d1561503a573d5f803e3d5ffd5b5b5080615073576040517f32e2717a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f8160801c9050919050565b5f6150ca8467ffffffffffffffff1667ffffffffffffffff605884615198909392919063ffffffff16565b90506150f68367ffffffffffffffff1667ffffffffffffffff601884615198909392919063ffffffff16565b90506151178262ffffff1662ffffff5f84615198909392919063ffffffff16565b90509392505050565b5f81830390508281118061515b5750825f1c6fffffffffffffffffffffffffffffffff16815f1c6fffffffffffffffffffffffffffffffff16115b15615192576040517fe599af5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6151d5816151c3565b81146151df575f80fd5b50565b5f813590506151f0816151cc565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b615240826151fa565b810181811067ffffffffffffffff8211171561525f5761525e61520a565b5b80604052505050565b5f6152716151b2565b905061527d8282615237565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156152a4576152a361520a565b5b602082029050602081019050919050565b5f80fd5b5f6152cb6152c68461528a565b615268565b905080838252602082019050602084028301858111156152ee576152ed6152b5565b5b835b81811015615317578061530388826151e2565b8452602084019350506020810190506152f0565b5050509392505050565b5f82601f83011261533557615334615286565b5b81356153458482602086016152b9565b91505092915050565b5f67ffffffffffffffff8211156153685761536761520a565b5b602082029050602081019050919050565b60028110615385575f80fd5b50565b5f8135905061539681615379565b92915050565b5f6153ae6153a98461534e565b615268565b905080838252602082019050602084028301858111156153d1576153d06152b5565b5b835b818110156153fa57806153e68882615388565b8452602084019350506020810190506153d3565b5050509392505050565b5f82601f83011261541857615417615286565b5b813561542884826020860161539c565b91505092915050565b5f67ffffffffffffffff82111561544b5761544a61520a565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6154858261545c565b9050919050565b5f6154968261547b565b9050919050565b6154a68161548c565b81146154b0575f80fd5b50565b5f813590506154c18161549d565b92915050565b5f6154d96154d484615431565b615268565b905080838252602082019050602084028301858111156154fc576154fb6152b5565b5b835b81811015615525578061551188826154b3565b8452602084019350506020810190506154fe565b5050509392505050565b5f82601f83011261554357615542615286565b5b81356155538482602086016154c7565b91505092915050565b5f60608284031215615571576155706151f6565b5b61557b6060615268565b90505f82013567ffffffffffffffff81111561559a57615599615282565b5b6155a684828501615321565b5f83015250602082013567ffffffffffffffff8111156155c9576155c8615282565b5b6155d584828501615404565b602083015250604082013567ffffffffffffffff8111156155f9576155f8615282565b5b6156058482850161552f565b60408301525092915050565b5f61561b8261545c565b9050919050565b61562b81615611565b8114615635575f80fd5b50565b5f8135905061564681615622565b92915050565b5f805f805f60a08688031215615665576156646151bb565b5b5f615672888289016151e2565b9550506020615683888289016151e2565b945050604086013567ffffffffffffffff8111156156a4576156a36151bf565b5b6156b08882890161555c565b93505060606156c188828901615638565b92505060806156d2888289016151e2565b9150509295509295909350565b6156e8816151c3565b82525050565b5f6020820190506157015f8301846156df565b92915050565b6157108161547b565b811461571a575f80fd5b50565b5f8135905061572b81615707565b92915050565b5f805f8060808587031215615749576157486151bb565b5b5f615756878288016151e2565b945050602085013567ffffffffffffffff811115615777576157766151bf565b5b6157838782880161555c565b93505060406157948782880161571d565b92505060606157a5878288016151e2565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6157e3816151c3565b82525050565b5f6157f483836157da565b60208301905092915050565b5f602082019050919050565b5f615816826157b1565b61582081856157bb565b935061582b836157cb565b805f5b8381101561585b57815161584288826157e9565b975061584d83615800565b92505060018101905061582e565b5085935050505092915050565b5f6020820190508181035f830152615880818461580c565b905092915050565b5f805f805f60a086880312156158a1576158a06151bb565b5b5f6158ae888289016151e2565b95505060206158bf888289016151e2565b945050604086013567ffffffffffffffff8111156158e0576158df6151bf565b5b6158ec8882890161555c565b93505060606158fd8882890161571d565b925050608061590e888289016151e2565b9150509295509295909350565b5f805f60608486031215615932576159316151bb565b5b5f61593f868287016154b3565b93505060206159508682870161571d565b9250506040615961868287016151e2565b9150509250925092565b5f62ffffff82169050919050565b6159828161596b565b811461598c575f80fd5b50565b5f8135905061599d81615979565b92915050565b5f61ffff82169050919050565b6159b9816159a3565b81146159c3575f80fd5b50565b5f813590506159d4816159b0565b92915050565b5f805f80608085870312156159f2576159f16151bb565b5b5f6159ff878288016154b3565b9450506020615a10878288016154b3565b9350506040615a218782880161598f565b9250506060615a32878288016159c6565b91505092959194509250565b5f819050919050565b5f615a61615a5c615a578461545c565b615a3e565b61545c565b9050919050565b5f615a7282615a47565b9050919050565b5f615a8382615a68565b9050919050565b615a9381615a79565b82525050565b5f602082019050615aac5f830184615a8a565b92915050565b5f615abc82615a68565b9050919050565b615acc81615ab2565b82525050565b5f602082019050615ae55f830184615ac3565b92915050565b5f805f805f805f80610100898b031215615b0857615b076151bb565b5b5f615b158b828c016154b3565b9850506020615b268b828c016159c6565b9750506040615b378b828c016151e2565b9650506060615b488b828c016151e2565b955050608089013567ffffffffffffffff811115615b6957615b686151bf565b5b615b758b828c01615321565b94505060a089013567ffffffffffffffff811115615b9657615b956151bf565b5b615ba28b828c01615321565b93505060c0615bb38b828c01615638565b92505060e0615bc48b828c016151e2565b9150509295985092959890939650565b5f604082019050615be75f8301856156df565b615bf460208301846156df565b9392505050565b5f615c0582615a68565b9050919050565b615c1581615bfb565b82525050565b5f602082019050615c2e5f830184615c0c565b92915050565b5f80fd5b5f6101e08284031215615c4e57615c4d615c34565b5b81905092915050565b5f60208284031215615c6c57615c6b6151bb565b5b5f82013567ffffffffffffffff811115615c8957615c886151bf565b5b615c9584828501615c38565b91505092915050565b5f60c082019050615cb15f8301896156df565b615cbe60208301886156df565b615ccb60408301876156df565b615cd860608301866156df565b8181036080830152615cea818561580c565b905081810360a0830152615cfe818461580c565b9050979650505050505050565b5f615d158261547b565b9050919050565b615d2581615d0b565b8114615d2f575f80fd5b50565b5f81359050615d4081615d1c565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b615d6a81615d46565b8114615d74575f80fd5b50565b5f81359050615d8581615d61565b92915050565b5f8115159050919050565b615d9f81615d8b565b8114615da9575f80fd5b50565b5f81359050615dba81615d96565b92915050565b5f805f60608486031215615dd757615dd66151bb565b5b5f615de486828701615d32565b9350506020615df586828701615d77565b9250506040615e0686828701615dac565b9150509250925092565b615e1981615d46565b82525050565b5f606082019050615e325f830186615e10565b615e3f6020830185615e10565b615e4c6040830184615e10565b949350505050565b5f615e5e82615a68565b9050919050565b615e6e81615e54565b82525050565b5f602082019050615e875f830184615e65565b92915050565b5f805f805f805f805f6101208a8c031215615eab57615eaa6151bb565b5b5f615eb88c828d016154b3565b9950506020615ec98c828d016154b3565b9850506040615eda8c828d016159c6565b9750506060615eeb8c828d016151e2565b9650506080615efc8c828d016151e2565b95505060a08a013567ffffffffffffffff811115615f1d57615f1c6151bf565b5b615f298c828d01615321565b94505060c08a013567ffffffffffffffff811115615f4a57615f496151bf565b5b615f568c828d01615321565b93505060e0615f678c828d0161571d565b925050610100615f798c828d016151e2565b9150509295985092959850929598565b5f8060408385031215615f9f57615f9e6151bb565b5b5f615fac85828601615d32565b9250506020615fbd8582860161598f565b9150509250929050565b5f615fd18261547b565b9050919050565b615fe181615fc7565b8114615feb575f80fd5b50565b5f81359050615ffc81615fd8565b92915050565b5f80fd5b5f8083601f84011261601b5761601a615286565b5b8235905067ffffffffffffffff81111561603857616037616002565b5b602083019150836020820283011115616054576160536152b5565b5b9250929050565b5f805f805f8060808789031215616075576160746151bb565b5b5f61608289828a01615fee565b965050602061609389828a0161571d565b955050604087013567ffffffffffffffff8111156160b4576160b36151bf565b5b6160c089828a01616006565b9450945050606087013567ffffffffffffffff8111156160e3576160e26151bf565b5b6160ef89828a01616006565b92509250509295509295509295565b5f8060408385031215616114576161136151bb565b5b5f61612185828601615d32565b9250506020616132858286016151e2565b9150509250929050565b6161458161596b565b82525050565b5f60208201905061615e5f83018461613c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61619b826151c3565b91506161a6836151c3565b92508282019050808211156161be576161bd616164565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6161fa8161547b565b82525050565b5f6020820190506162135f8301846161f1565b92915050565b5f81519050616227816151cc565b92915050565b5f60208284031215616242576162416151bb565b5b5f61624f84828501616219565b91505092915050565b5f616262826151c3565b915061626d836151c3565b925082820390508181111561628557616284616164565b5b92915050565b5f8151905061629981615707565b92915050565b5f602082840312156162b4576162b36151bb565b5b5f6162c18482850161628b565b91505092915050565b5f6162d482615a68565b9050919050565b6162e4816162ca565b82525050565b6162f3816159a3565b82525050565b5f60808201905061630c5f8301876162db565b61631960208301866162db565b616326604083018561613c565b61633360608301846162ea565b95945050505050565b5f8151905061634a81615d1c565b92915050565b5f60208284031215616365576163646151bb565b5b5f6163728482850161633c565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6163b16163ac6163a78461637b565b615a3e565b616384565b9050919050565b6163c181616397565b82525050565b5f6020820190506163da5f8301846163b8565b92915050565b5f815190506163ee8161549d565b92915050565b5f60208284031215616409576164086151bb565b5b5f616416848285016163e0565b91505092915050565b5f60208284031215616434576164336151bb565b5b5f616441848285016154b3565b91505092915050565b5f60a08201905061645d5f8301886161f1565b61646a60208301876161f1565b61647760408301866156df565b61648460608301856156df565b61649160808301846156df565b9695505050505050565b6164a481615d8b565b82525050565b5f6040820190506164bd5f830185615e10565b6164ca602083018461649b565b9392505050565b5f815190506164df81615d61565b92915050565b5f805f606084860312156164fc576164fb6151bb565b5b5f616509868287016164d1565b935050602061651a868287016164d1565b925050604061652b868287016164d1565b9150509250925092565b5f80fd5b82818337505050565b5f61654d83856157bb565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156165805761657f616535565b5b602083029250616591838584616539565b82840190509392505050565b5f6080820190506165b05f8301896161f1565b6165bd60208301886161f1565b81810360408301526165d0818688616542565b905081810360608301526165e5818486616542565b9050979650505050505050565b5f8151905061660081615979565b92915050565b5f6020828403121561661b5761661a6151bb565b5b5f616628848285016165f2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6dffffffffffffffffffffffffffff82169050919050565b6166808161665e565b811461668a575f80fd5b50565b5f8151905061669b81616677565b92915050565b5f63ffffffff82169050919050565b6166b9816166a1565b81146166c3575f80fd5b50565b5f815190506166d4816166b0565b92915050565b5f805f606084860312156166f1576166f06151bb565b5b5f6166fe8682870161668d565b935050602061670f8682870161668d565b9250506040616720868287016166c6565b9150509250925092565b5f819050919050565b5f61674d6167486167438461672a565b615a3e565b6151c3565b9050919050565b61675d81616733565b82525050565b5f82825260208201905092915050565b50565b5f6167815f83616763565b915061678c82616773565b5f82019050919050565b5f6080820190506167a95f830186616754565b6167b660208301856156df565b6167c360408301846161f1565b81810360608301526167d481616776565b9050949350505050565b5f6080820190506167f15f8301866156df565b6167fe6020830185616754565b61680b60408301846161f1565b818103606083015261681c81616776565b9050949350505050565b5f6040820190506168395f83018561649b565b61684660208301846161f1565b9392505050565b5f819050919050565b61685f8161684d565b8114616869575f80fd5b50565b5f8151905061687a81616856565b92915050565b5f60208284031215616895576168946151bb565b5b5f6168a28482850161686c565b91505092915050565b5f6168b5826151c3565b91505f82036168c7576168c6616164565b5b600182039050919050565b5f81905092915050565b5f6168e75f836168d2565b91506168f282616773565b5f82019050919050565b5f616906826168dc565b9150819050919050565b5f6040820190506169235f8301856161f1565b61693060208301846156df565b9392505050565b5f60608201905061694a5f8301866162db565b61695760208301856162db565b61696460408301846156df565b949350505050565b5f8151905061697a816159b0565b92915050565b5f8151905061698e81615d96565b92915050565b5f608082840312156169a9576169a86151f6565b5b6169b36080615268565b90505f6169c28482850161696c565b5f8301525060206169d58482850161633c565b60208301525060406169e984828501616980565b60408301525060606169fd84828501616980565b60608301525092915050565b5f60808284031215616a1e57616a1d6151bb565b5b5f616a2b84828501616994565b91505092915050565b5f606082019050616a475f8301866161f1565b616a5460208301856161f1565b616a6160408301846156df565b949350505050565b5f608082019050616a7c5f8301876161f1565b616a8960208301866161f1565b8181036040830152616a9b818561580c565b90508181036060830152616aaf818461580c565b905095945050505050565b5f67ffffffffffffffff821115616ad457616ad361520a565b5b602082029050602081019050919050565b5f616af7616af284616aba565b615268565b90508083825260208201905060208402830185811115616b1a57616b196152b5565b5b835b81811015616b435780616b2f888261686c565b845260208401935050602081019050616b1c565b5050509392505050565b5f82601f830112616b6157616b60615286565b5b8151616b71848260208601616ae5565b91505092915050565b5f60208284031215616b8f57616b8e6151bb565b5b5f82015167ffffffffffffffff811115616bac57616bab6151bf565b5b616bb884828501616b4d565b91505092915050565b5f616bcb826151c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203616bfd57616bfc616164565b5b600182019050919050565b5f608082019050616c1b5f8301876156df565b616c2860208301866156df565b616c3560408301856156df565b616c4260608301846156df565b95945050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112616c7357616c72616c4b565b5b80840192508235915067ffffffffffffffff821115616c9557616c94616c4f565b5b602083019250602082023603831315616cb157616cb0616c53565b5b509250929050565b5f8083356001602003843603038112616cd557616cd4616c4b565b5b80840192508235915067ffffffffffffffff821115616cf757616cf6616c4f565b5b602083019250602082023603831315616d1357616d12616c53565b5b509250929050565b5f606082019050616d2e5f8301866156df565b616d3b60208301856156df565b616d4860408301846156df565b949350505050565b5f819050919050565b616d6281616d50565b82525050565b5f602082019050616d7b5f830184616d59565b92915050565b5f60208284031215616d9657616d956151bb565b5b5f616da38482850161571d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b616dde8161684d565b82525050565b5f616def8383616dd5565b60208301905092915050565b5f602082019050919050565b5f616e1182616dac565b616e1b8185616db6565b9350616e2683616dc6565b805f5b83811015616e56578151616e3d8882616de4565b9750616e4883616dfb565b925050600181019050616e29565b5085935050505092915050565b5f606082019050616e765f8301866161f1565b8181036020830152616e888185616e07565b9050616e9760408301846161f1565b949350505050565b5f616eb1616eac8461528a565b615268565b90508083825260208201905060208402830185811115616ed457616ed36152b5565b5b835b81811015616efd5780616ee98882616219565b845260208401935050602081019050616ed6565b5050509392505050565b5f82601f830112616f1b57616f1a615286565b5b8151616f2b848260208601616e9f565b91505092915050565b5f805f60608486031215616f4b57616f4a6151bb565b5b5f616f588682870161686c565b9350506020616f698682870161686c565b925050604084015167ffffffffffffffff811115616f8a57616f896151bf565b5b616f9686828701616f07565b9150509250925092565b5f604082019050616fb35f8301856161f1565b616fc060208301846161f1565b9392505050565b5f616fd1826151c3565b9150616fdc836151c3565b9250828202616fea816151c3565b9150828204841483151761700157617000616164565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61703f826151c3565b915061704a836151c3565b92508261705a57617059617008565b5b82820490509291505056fea26469706673582212200e309a78c4164f5b8b6e48c22021a99aca2bb60332bc12d21314fee29f34eefc64736f6c63430008140033", + "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x7503 CODESIZE SUB DUP1 PUSH3 0x7503 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x36 SWAP2 SWAP1 PUSH3 0x312 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH3 0xE2 PUSH3 0xEB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH3 0x3AA JUMP JUMPDEST PUSH0 PUSH3 0xFC PUSH3 0x1EF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x147 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 AND DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH3 0x1EC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD PUSH3 0x1E3 SWAP2 SWAP1 PUSH3 0x38F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x245 DUP3 PUSH3 0x21A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x258 DUP3 PUSH3 0x239 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x26A DUP2 PUSH3 0x24C JUMP JUMPDEST DUP2 EQ PUSH3 0x275 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x288 DUP2 PUSH3 0x25F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x29A DUP3 PUSH3 0x239 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x2AC DUP2 PUSH3 0x28E JUMP JUMPDEST DUP2 EQ PUSH3 0x2B7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x2CA DUP2 PUSH3 0x2A1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x2DC DUP3 PUSH3 0x239 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x2EE DUP2 PUSH3 0x2D0 JUMP JUMPDEST DUP2 EQ PUSH3 0x2F9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x30C DUP2 PUSH3 0x2E3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x32C JUMPI PUSH3 0x32B PUSH3 0x216 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x33B DUP7 DUP3 DUP8 ADD PUSH3 0x278 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x34E DUP7 DUP3 DUP8 ADD PUSH3 0x2BA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x361 DUP7 DUP3 DUP8 ADD PUSH3 0x2FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x389 DUP2 PUSH3 0x36B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x3A4 PUSH0 DUP4 ADD DUP5 PUSH3 0x37E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x709B PUSH3 0x468 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x155 ADD MSTORE DUP2 DUP2 PUSH2 0x798 ADD MSTORE DUP2 DUP2 PUSH2 0x886 ADD MSTORE DUP2 DUP2 PUSH2 0x979 ADD MSTORE DUP2 DUP2 PUSH2 0xB38 ADD MSTORE DUP2 DUP2 PUSH2 0xFE9 ADD MSTORE DUP2 DUP2 PUSH2 0x17C8 ADD MSTORE DUP2 DUP2 PUSH2 0x19B4 ADD MSTORE DUP2 DUP2 PUSH2 0x1A65 ADD MSTORE DUP2 DUP2 PUSH2 0x1C46 ADD MSTORE DUP2 DUP2 PUSH2 0x1CEB ADD MSTORE DUP2 DUP2 PUSH2 0x21AC ADD MSTORE DUP2 DUP2 PUSH2 0x262C ADD MSTORE DUP2 DUP2 PUSH2 0x2A46 ADD MSTORE DUP2 DUP2 PUSH2 0x3531 ADD MSTORE DUP2 DUP2 PUSH2 0x397A ADD MSTORE PUSH2 0x39FC ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x279F ADD MSTORE PUSH2 0x4C6A ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x14E0 ADD MSTORE DUP2 DUP2 PUSH2 0x171E ADD MSTORE DUP2 DUP2 PUSH2 0x1B02 ADD MSTORE DUP2 DUP2 PUSH2 0x2CDA ADD MSTORE PUSH2 0x4387 ADD MSTORE PUSH2 0x709B PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92FE8E70 GT PUSH2 0xB5 JUMPI DUP1 PUSH4 0xBB558A9F GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xBB558A9F EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xC22159B6 EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0xD0E380F2 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0xE038E6DC EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xE9361C08 EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xF96FE925 EQ PUSH2 0x69E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x92FE8E70 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x964F987C EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0x9AB6156B EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0xA0D376CF EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xA3C7271A EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xB066EA7C EQ PUSH2 0x573 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x659AC74B GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x81C2FDFB EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x8EFC2B2C EQ PUSH2 0x409 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1A24F9A9 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x2075AD22 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x2A443FAE EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x3DC8F8EC EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x4B801870 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x62C06767 EQ PUSH2 0x2FE JUMPI PUSH2 0x1DA JUMP JUMPDEST CALLDATASIZE PUSH2 0x1DA JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C8CB79300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0xDA7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0xF2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0x591B JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x59DA JUMP JUMPDEST PUSH2 0x171B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x359 SWAP2 SWAP1 PUSH2 0x5A99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x376 PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x383 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x17EC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x5AEB JUMP JUMPDEST PUSH2 0x1963 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D6 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x1AFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 SWAP1 PUSH2 0x5C1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x423 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41E SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x1B26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x464 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45F SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1E2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x471 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x205C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x20EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4EB SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x51A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x515 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x234F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x529 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x558 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x553 SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x23E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x56A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x58D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x256E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x59A SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B7 PUSH2 0x279C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C4 SWAP2 SWAP1 PUSH2 0x5E74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5EE SWAP2 SWAP1 PUSH2 0x5E8D JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x601 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x630 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62B SWAP2 SWAP1 PUSH2 0x5F89 JUMP JUMPDEST PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x65B SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x2988 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x69C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x697 SWAP2 SWAP1 PUSH2 0x605B JUMP JUMPDEST PUSH2 0x2CD8 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6BF SWAP2 SWAP1 PUSH2 0x60FE JUMP JUMPDEST PUSH2 0x2E41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D1 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x723 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71A SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x73F JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x75F JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x75C SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x796 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x7E8 JUMPI PUSH2 0x7E7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86A JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x826 JUMPI PUSH2 0x825 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x861 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x881 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8DD SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91C SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x962 DUP9 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x954 JUMPI PUSH2 0x953 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x976 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x303B JUMP JUMPDEST DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D0 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA0F SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP5 POP DUP5 DUP10 GT ISZERO PUSH2 0xA62 JUMPI DUP9 DUP6 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA59 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA6C DUP8 DUP7 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xAC3 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xADF JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xAFF JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xAFC SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB84 JUMPI PUSH2 0xB83 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC02 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xBBE JUMPI PUSH2 0xBBD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF9 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC19 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xC2F DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC45 JUMPI PUSH2 0xC44 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xCAC JUMPI CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC67 JUMPI PUSH2 0xC66 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA3 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCEA DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCC2 JUMPI PUSH2 0xCC1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCDD JUMPI PUSH2 0xCDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3970 JUMP JUMPDEST PUSH0 PUSH2 0xD00 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 LT ISZERO PUSH2 0xD49 JUMPI DUP9 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD40 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD5C JUMPI PUSH2 0xD5B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0xD9B JUMPI PUSH2 0xD9A CALLER DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD82 JUMPI PUSH2 0xD81 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0xD95 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xDF0 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xE0C JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xE2C JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xE29 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xE7A DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xEC0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xE96 JUMPI PUSH2 0xE95 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xEB2 JUMPI PUSH2 0xEB1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0xED5 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0xF1E JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF15 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xF74 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF6B SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xF90 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xFB0 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xFAD SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xFE7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1039 JUMPI PUSH2 0x1038 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10BB JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1077 JUMPI PUSH2 0x1076 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B2 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x10D2 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E8 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x10FE JUMPI PUSH2 0x10FD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1165 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1120 JUMPI PUSH2 0x111F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x115C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11C3 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x117F JUMPI PUSH2 0x117E PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x119B JUMPI PUSH2 0x119A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x11B6 JUMPI PUSH2 0x11B5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x11D9 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 ADDRESS PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x1222 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1219 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x122C DUP8 DUP3 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1282 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1279 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x129E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x12BE JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x12BB SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x12F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x130C DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1327 JUMPI PUSH2 0x1326 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x136B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1386 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13AA SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x13F0 DUP10 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13C6 JUMPI PUSH2 0x13C5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13E2 JUMPI PUSH2 0x13E1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1404 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1459 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x147D SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x14D0 JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14C7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15CF JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1642 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x162F JUMPI DUP1 PUSH2 0x1631 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x163D DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST PUSH2 0x1716 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x166F JUMPI DUP1 PUSH2 0x16E8 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16E7 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x1715 DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x659AC74B DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x177B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x62F9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1797 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17BB SWAP2 SWAP1 PUSH2 0x6350 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x17F5 PUSH2 0x435D JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x183D JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1870 JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x18B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH2 0x1902 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST DUP4 ISZERO PUSH2 0x195C JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x1953 SWAP2 SWAP1 PUSH2 0x63C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x19AD JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19A4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x19DD DUP13 PUSH32 0x0 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A29 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A4D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP1 PUSH2 0x1AAD JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH0 DUP1 PUSH2 0x1ABD DUP5 DUP15 DUP15 DUP15 DUP15 ADDRESS PUSH2 0x44A2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1ACD JUMPI DUP1 DUP3 PUSH2 0x1AD0 JUMP JUMPDEST DUP2 DUP2 JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP POP POP POP POP POP PUSH2 0x1AE6 DUP13 DUP8 DUP7 PUSH2 0x462B JUMP JUMPDEST PUSH2 0x1AF0 DUP7 DUP5 PUSH2 0x3527 JUMP JUMPDEST POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x1B60 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B43 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B56 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BAB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCF SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1BF7 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C8D SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1CB3 JUMPI POP CALLVALUE DUP9 PUSH1 0x60 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1CE9 JUMPI PUSH2 0x1CDA DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CCE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1CE4 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFF JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1D59 JUMPI POP CALLVALUE DUP9 PUSH1 0x80 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1D8E JUMPI PUSH2 0x1D7F DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D73 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1D89 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFE JUMP JUMPDEST DUP8 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DA0 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DB3 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x60 ADD CALLDATALOAD DUP11 PUSH1 0x80 ADD CALLDATALOAD CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xD0A4F13B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x644A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x1E09 DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1E75 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E6C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x1E91 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x1EB1 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1EAE SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1EE8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1EFF DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F15 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F2B JUMPI PUSH2 0x1F2A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F92 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F4D JUMPI PUSH2 0x1F4C PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F89 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1FF0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FAC JUMPI PUSH2 0x1FAB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FC8 JUMPI PUSH2 0x1FC7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FE3 JUMPI PUSH2 0x1FE2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x2006 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x204F JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2046 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xABCD7830 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x209A SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20D9 SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2137 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x212E SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x2153 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2173 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2170 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x21AA JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x21FC JUMPI PUSH2 0x21FB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x227E JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x223A JUMPI PUSH2 0x2239 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2275 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2295 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x22DB DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22B1 JUMPI PUSH2 0x22B0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22CD JUMPI PUSH2 0x22CC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x22F0 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2339 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2343 DUP7 DUP6 PUSH2 0x3527 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE77366F8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x238D SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23A8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23CC SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x241B DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x23FE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2411 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2466 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x248A SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x24B2 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24FF JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2520 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2514 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x2542 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2536 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x254C DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x25B7 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25AE SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x25D3 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x25F3 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x25F0 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2678 JUMPI PUSH2 0x2677 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x26F6 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x26B2 JUMPI PUSH2 0x26B1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26ED SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x270D DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2733 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2725 JUMPI PUSH2 0x2724 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2748 CALLVALUE DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2791 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2788 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x280D JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2804 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x281D DUP14 DUP14 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2869 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x288D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x28CF JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH2 0x28DD DUP3 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x44A2 JUMP JUMPDEST DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP DUP1 ISZERO PUSH2 0x28F6 JUMPI DUP4 DUP6 DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP JUMPDEST POP POP POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7CFFBD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2941 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x295C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2980 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x29D1 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C8 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x29ED JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2A0D JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2A0A SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x2A44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A92 JUMPI PUSH2 0x2A91 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B10 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2ACC JUMPI PUSH2 0x2ACB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B07 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2B27 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2B42 JUMPI PUSH2 0x2B41 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B86 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC5 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x2BEB DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2BDD JUMPI PUSH2 0x2BDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2BFF DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C39 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C54 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C78 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x2C82 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x2CCB JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CC2 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D41 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D65 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2DC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17FAD7FC ADDRESS DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E0C SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x659D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E23 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E35 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5E29329 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7B SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBA SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EDF JUMPI PUSH2 0x2EDE PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F0D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 DUP1 DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2F25 JUMPI PUSH2 0x2F24 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2FF5 JUMPI DUP2 SWAP3 POP DUP5 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2F53 JUMPI PUSH2 0x2F52 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH2 0x2F9D DUP4 DUP4 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F75 JUMPI PUSH2 0x2F74 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2F90 JUMPI PUSH2 0x2F8F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4C3C JUMP JUMPDEST DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2FB0 JUMPI PUSH2 0x2FAF PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2F31 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3035 JUMPI PUSH2 0x3034 DUP4 DUP4 DUP4 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D93 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3053 JUMPI PUSH2 0x3052 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x351B JUMPI DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x307B JUMPI PUSH2 0x307A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3098 JUMPI PUSH2 0x3097 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP8 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30BB JUMPI PUSH2 0x30BA PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP10 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x30F3 JUMPI DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30E6 JUMPI PUSH2 0x30E5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x30F5 JUMP JUMPDEST DUP7 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x310A JUMPI PUSH2 0x3109 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x311D JUMPI PUSH2 0x311C PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x33F9 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x316D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3191 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x32F0 JUMPI PUSH0 DUP3 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3225 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3240 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3264 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x327D DUP5 DUP5 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP4 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32D3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32E5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x33F2 JUMP JUMPDEST PUSH0 DUP2 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x332B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3346 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x336A SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3383 DUP4 DUP6 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP3 PUSH0 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33D9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP PUSH2 0x3510 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x345E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3482 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34CE SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x350E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x305F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x35C0 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3588 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x359F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x35BF DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35E1 JUMPI PUSH2 0x35E0 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x360F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 DUP6 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3627 JUMPI PUSH2 0x3626 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH0 DUP5 MLOAD SWAP1 POP JUMPDEST PUSH0 DUP2 EQ PUSH2 0x3967 JUMPI PUSH0 DUP5 PUSH1 0x1 DUP4 PUSH2 0x364F SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3660 JUMPI PUSH2 0x365F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP5 PUSH2 0x3679 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x368A JUMPI PUSH2 0x3689 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP6 PUSH2 0x36A3 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x36B4 JUMPI PUSH2 0x36B3 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36D1 JUMPI PUSH2 0x36D0 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36E4 JUMPI PUSH2 0x36E3 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x384E JUMPI PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3734 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3758 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x37D6 JUMPI DUP1 DUP3 DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP JUMPDEST PUSH0 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x37EA JUMPI PUSH2 0x37E9 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3809 DUP4 DUP4 DUP4 PUSH2 0x4EF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x1 DUP10 PUSH2 0x3829 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x383A JUMPI PUSH2 0x3839 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP POP PUSH2 0x3951 JUMP JUMPDEST PUSH2 0x390D DUP2 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3865 JUMPI PUSH2 0x3864 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38CD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38F1 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x205C JUMP JUMPDEST DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP SWAP1 POP POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3933 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3944 JUMPI PUSH2 0x3943 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x395F SWAP1 PUSH2 0x68AB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3639 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3A41 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39DE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39F0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3A40 DUP3 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP9 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3A5E JUMPI PUSH2 0x3A5D PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x3DCC JUMPI DUP12 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A86 JUMPI PUSH2 0x3A85 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3AA3 JUMPI PUSH2 0x3AA2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP2 SWAP6 POP DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AC6 JUMPI PUSH2 0x3AC5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP12 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3AFE JUMPI DUP12 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AF1 JUMPI PUSH2 0x3AF0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3B00 JUMP JUMPDEST DUP8 JUMPDEST SWAP5 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B15 JUMPI PUSH2 0x3B14 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B28 JUMPI PUSH2 0x3B27 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3C60 JUMPI DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3B43 JUMPI PUSH2 0x3B42 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3BF0 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BBE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BD5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BE7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3C5B JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP9 PUSH0 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C2D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C44 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C56 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x3DC1 JUMP JUMPDEST PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CAA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CCE SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x3D83 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D3E SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D5A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D7E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x3DB9 JUMPI DUP1 SWAP10 POP PUSH2 0x3DBD JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3A6A JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3E91 JUMPI PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E08 SWAP1 PUSH2 0x68FC JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E42 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E47 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E8F JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x47B96F7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E86 SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3EAE JUMPI PUSH2 0x3EAD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP11 SWAP6 POP PUSH0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x42C3 JUMPI DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3ED9 JUMPI PUSH2 0x3ED8 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3EF6 JUMPI PUSH2 0x3EF5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F19 JUMPI PUSH2 0x3F18 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP11 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3F51 JUMPI DUP11 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F44 JUMPI PUSH2 0x3F43 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3F53 JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F68 JUMPI PUSH2 0x3F67 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F7B JUMPI PUSH2 0x3F7A PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4157 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FCB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3FEF SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x40CE JUMPI PUSH2 0x405D DUP3 DUP3 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP12 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x409C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40C5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4150 JUMP JUMPDEST PUSH2 0x40E3 DUP2 DUP4 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP11 PUSH0 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4122 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4139 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x414B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH2 0x42B8 JUMP JUMPDEST PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41A1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41C5 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x427A DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4235 SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4251 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4275 SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x42B0 JUMPI DUP1 SWAP10 POP PUSH2 0x42B4 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3EBD JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x42EE SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4357 DUP5 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6937 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43FD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4421 SWAP2 SWAP1 PUSH2 0x6A09 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x449B JUMPI DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4492 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC9939F5E CALLER DUP7 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44E4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A69 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44FF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4527 SWAP2 SWAP1 PUSH2 0x6B7A JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x45C9 JUMPI PUSH2 0x4557 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x454A JUMPI PUSH2 0x4549 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x4574 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP4 POP PUSH2 0x4599 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x458C JUMPI PUSH2 0x458B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x45B6 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP DUP1 PUSH2 0x45C2 SWAP1 PUSH2 0x6BC1 JUMP JUMPDEST SWAP1 POP PUSH2 0x452B JUMP JUMPDEST POP DUP8 DUP4 LT DUP1 PUSH2 0x45D7 JUMPI POP DUP7 DUP3 LT JUMPDEST ISZERO PUSH2 0x461F JUMPI DUP8 DUP4 DUP9 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4616 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x465F JUMPI PUSH2 0x465E DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 DUP8 PUSH2 0x1C0 ADD CALLDATALOAD DUP1 TIMESTAMP GT ISZERO PUSH2 0x46B8 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46AF SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x46C9 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x46DC SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO DUP1 PUSH2 0x470F JUMPI POP DUP9 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x46F7 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x470A SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO JUMPDEST ISZERO PUSH2 0x4746 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH1 0xE0 ADD CALLDATALOAD GT DUP1 PUSH2 0x4766 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH2 0x100 ADD CALLDATALOAD GT JUMPDEST ISZERO PUSH2 0x47B3 JUMPI DUP9 PUSH1 0xE0 ADD CALLDATALOAD DUP10 PUSH2 0x100 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH32 0x32F4AB8E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x47AA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x47C5 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47E0 JUMPI PUSH2 0x47DF PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x480E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4822 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x483D JUMPI PUSH2 0x483C PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x486B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP4 POP PUSH0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBE65EDC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48B8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48DC SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 POP DUP1 DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP13 PUSH1 0xE0 ADD CALLDATALOAD ADD LT DUP1 PUSH2 0x4906 JUMPI POP DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 ADD LT JUMPDEST ISZERO PUSH2 0x4955 JUMPI DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x40 MLOAD PUSH32 0xFAA1DB5600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x494C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6D1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x4A88 JUMPI PUSH0 DUP13 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4972 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x4983 JUMPI PUSH2 0x4982 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 ADD SWAP1 POP PUSH0 DUP2 SLT DUP1 PUSH2 0x49A0 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP2 GT JUMPDEST ISZERO PUSH2 0x49E2 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xE1505CC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x49D9 SWAP2 SWAP1 PUSH2 0x6D68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x49F6 JUMPI PUSH2 0x49F5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x4A5D DUP14 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x4A16 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x4A27 JUMPI PUSH2 0x4A26 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP15 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x4A3F SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x4A50 JUMPI PUSH2 0x4A4F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0x509F JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A70 JUMPI PUSH2 0x4A6F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4957 JUMP JUMPDEST POP POP PUSH0 DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x383D15C5 DUP14 PUSH2 0x180 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4ABC SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST DUP6 DUP16 PUSH2 0x1A0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4AD1 SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AEF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E63 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B0A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B32 SWAP2 SWAP1 PUSH2 0x6F34 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP4 POP DUP3 SWAP5 POP POP POP POP PUSH0 PUSH2 0x4B52 DUP3 DUP5 PUSH2 0x5120 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4B5D DUP2 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP11 POP PUSH2 0x4B7A DUP2 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP10 POP DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 LT DUP1 PUSH2 0x4BA3 JUMPI POP DUP13 PUSH1 0xC0 ADD CALLDATALOAD DUP11 LT JUMPDEST ISZERO PUSH2 0x4BF3 JUMPI DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP13 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BEA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BFC DUP3 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP9 POP PUSH2 0x4C19 DUP3 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C50 JUMPI PUSH2 0x4C4F PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C63 JUMPI PUSH2 0x4C62 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4D7D JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4CC3 SWAP3 SWAP2 SWAP1 PUSH2 0x6FA0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CDE JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D02 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4D78 JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D6F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D8B JUMP JUMPDEST PUSH2 0x4D88 DUP6 DUP6 DUP6 PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DB1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4E1A DUP6 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4E5B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4E68 JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4E9F JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E5 DUP6 PUSH2 0x4EAE SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP4 DUP3 PUSH2 0x4EBD SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH2 0x3E8 DUP8 PUSH2 0x4ECF SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4ED9 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH2 0x4EE7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4F2D JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4F3A JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4F71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E8 DUP6 DUP6 PUSH2 0x4F81 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4F8B SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x3E5 DUP7 DUP6 PUSH2 0x4F9D SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x4FA7 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP4 PUSH2 0x4FB7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST PUSH2 0x4FC1 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 POP DUP3 PUSH1 0x80 SHR SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH0 DUP8 GAS CALL SWAP1 POP DUP1 PUSH0 DUP2 EQ PUSH2 0x502C JUMPI RETURNDATASIZE PUSH0 DUP2 EQ PUSH2 0x501F JUMPI PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND SWAP3 POP PUSH2 0x5026 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO ISZERO SWAP3 POP JUMPDEST POP PUSH2 0x503B JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x503A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST JUMPDEST POP DUP1 PUSH2 0x5073 JUMPI PUSH1 0x40 MLOAD PUSH32 0x32E2717A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x80 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x50CA DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x58 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x50F6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x18 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x5117 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH0 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP4 SUB SWAP1 POP DUP3 DUP2 GT DUP1 PUSH2 0x515B JUMPI POP DUP3 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x5192 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE599AF5500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x51D5 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP2 EQ PUSH2 0x51DF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x51F0 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x5240 DUP3 PUSH2 0x51FA JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x525F JUMPI PUSH2 0x525E PUSH2 0x520A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5271 PUSH2 0x51B2 JUMP JUMPDEST SWAP1 POP PUSH2 0x527D DUP3 DUP3 PUSH2 0x5237 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH2 0x52A3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x52CB PUSH2 0x52C6 DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x52EE JUMPI PUSH2 0x52ED PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5317 JUMPI DUP1 PUSH2 0x5303 DUP9 DUP3 PUSH2 0x51E2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x52F0 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5335 JUMPI PUSH2 0x5334 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5345 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x52B9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5368 JUMPI PUSH2 0x5367 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x5385 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5396 DUP2 PUSH2 0x5379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x53AE PUSH2 0x53A9 DUP5 PUSH2 0x534E JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x53D1 JUMPI PUSH2 0x53D0 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x53FA JUMPI DUP1 PUSH2 0x53E6 DUP9 DUP3 PUSH2 0x5388 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x53D3 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5418 JUMPI PUSH2 0x5417 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5428 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x539C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x544B JUMPI PUSH2 0x544A PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5485 DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5496 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x54A6 DUP2 PUSH2 0x548C JUMP JUMPDEST DUP2 EQ PUSH2 0x54B0 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x54C1 DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x54D9 PUSH2 0x54D4 DUP5 PUSH2 0x5431 JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x54FC JUMPI PUSH2 0x54FB PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5525 JUMPI DUP1 PUSH2 0x5511 DUP9 DUP3 PUSH2 0x54B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x54FE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5543 JUMPI PUSH2 0x5542 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5553 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x54C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5571 JUMPI PUSH2 0x5570 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x557B PUSH1 0x60 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x559A JUMPI PUSH2 0x5599 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55A6 DUP5 DUP3 DUP6 ADD PUSH2 0x5321 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55C9 JUMPI PUSH2 0x55C8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55D5 DUP5 DUP3 DUP6 ADD PUSH2 0x5404 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55F9 JUMPI PUSH2 0x55F8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x5605 DUP5 DUP3 DUP6 ADD PUSH2 0x552F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x561B DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x562B DUP2 PUSH2 0x5611 JUMP JUMPDEST DUP2 EQ PUSH2 0x5635 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5646 DUP2 PUSH2 0x5622 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5665 JUMPI PUSH2 0x5664 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5672 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5683 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x56A4 JUMPI PUSH2 0x56A3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x56B0 DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x56C1 DUP9 DUP3 DUP10 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x56D2 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x56E8 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5701 PUSH0 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5710 DUP2 PUSH2 0x547B JUMP JUMPDEST DUP2 EQ PUSH2 0x571A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x572B DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5749 JUMPI PUSH2 0x5748 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5756 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5777 JUMPI PUSH2 0x5776 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5783 DUP8 DUP3 DUP9 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5794 DUP8 DUP3 DUP9 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x57A5 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x57E3 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x57F4 DUP4 DUP4 PUSH2 0x57DA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5816 DUP3 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x5820 DUP2 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH2 0x582B DUP4 PUSH2 0x57CB JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x585B JUMPI DUP2 MLOAD PUSH2 0x5842 DUP9 DUP3 PUSH2 0x57E9 JUMP JUMPDEST SWAP8 POP PUSH2 0x584D DUP4 PUSH2 0x5800 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x582E JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x5880 DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x58A1 JUMPI PUSH2 0x58A0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x58AE DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x58BF DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x58E0 JUMPI PUSH2 0x58DF PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x58EC DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x58FD DUP9 DUP3 DUP10 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x590E DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5932 JUMPI PUSH2 0x5931 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x593F DUP7 DUP3 DUP8 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5950 DUP7 DUP3 DUP8 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5961 DUP7 DUP3 DUP8 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5982 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP2 EQ PUSH2 0x598C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x599D DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x59B9 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP2 EQ PUSH2 0x59C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59D4 DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x59F2 JUMPI PUSH2 0x59F1 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x59FF DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x5A10 DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5A21 DUP8 DUP3 DUP9 ADD PUSH2 0x598F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x5A32 DUP8 DUP3 DUP9 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A61 PUSH2 0x5A5C PUSH2 0x5A57 DUP5 PUSH2 0x545C JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A72 DUP3 PUSH2 0x5A47 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A83 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5A93 DUP2 PUSH2 0x5A79 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AAC PUSH0 DUP4 ADD DUP5 PUSH2 0x5A8A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5ABC DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5ACC DUP2 PUSH2 0x5AB2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AE5 PUSH0 DUP4 ADD DUP5 PUSH2 0x5AC3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x5B08 JUMPI PUSH2 0x5B07 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5B15 DUP12 DUP3 DUP13 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x5B26 DUP12 DUP3 DUP13 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x5B37 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x5B48 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B69 JUMPI PUSH2 0x5B68 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5B75 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B96 JUMPI PUSH2 0x5B95 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5BA2 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x5BB3 DUP12 DUP3 DUP13 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 PUSH2 0x5BC4 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5BE7 PUSH0 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5BF4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C05 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5C15 DUP2 PUSH2 0x5BFB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5C2E PUSH0 DUP4 ADD DUP5 PUSH2 0x5C0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C4E JUMPI PUSH2 0x5C4D PUSH2 0x5C34 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C6C JUMPI PUSH2 0x5C6B PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C89 JUMPI PUSH2 0x5C88 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5C95 DUP5 DUP3 DUP6 ADD PUSH2 0x5C38 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x5CB1 PUSH0 DUP4 ADD DUP10 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CBE PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CCB PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CD8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x5CEA DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x5CFE DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D15 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D25 DUP2 PUSH2 0x5D0B JUMP JUMPDEST DUP2 EQ PUSH2 0x5D2F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D40 DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D6A DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D74 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D85 DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D9F DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP2 EQ PUSH2 0x5DA9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5DBA DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5DD7 JUMPI PUSH2 0x5DD6 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5DE4 DUP7 DUP3 DUP8 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5DF5 DUP7 DUP3 DUP8 ADD PUSH2 0x5D77 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5E06 DUP7 DUP3 DUP8 ADD PUSH2 0x5DAC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x5E19 DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5E32 PUSH0 DUP4 ADD DUP7 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E3F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E4C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5E10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5E5E DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5E6E DUP2 PUSH2 0x5E54 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5E87 PUSH0 DUP4 ADD DUP5 PUSH2 0x5E65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x5EAB JUMPI PUSH2 0x5EAA PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5EB8 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x5EC9 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x5EDA DUP13 DUP3 DUP14 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x5EEB DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x5EFC DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F1D JUMPI PUSH2 0x5F1C PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F29 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4A JUMPI PUSH2 0x5F49 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F56 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x5F67 DUP13 DUP3 DUP14 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x5F79 DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F9F JUMPI PUSH2 0x5F9E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5FAC DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FBD DUP6 DUP3 DUP7 ADD PUSH2 0x598F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5FD1 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5FE1 DUP2 PUSH2 0x5FC7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5FEB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5FFC DUP2 PUSH2 0x5FD8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x601B JUMPI PUSH2 0x601A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6038 JUMPI PUSH2 0x6037 PUSH2 0x6002 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x6054 JUMPI PUSH2 0x6053 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x6075 JUMPI PUSH2 0x6074 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6082 DUP10 DUP3 DUP11 ADD PUSH2 0x5FEE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x6093 DUP10 DUP3 DUP11 ADD PUSH2 0x571D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60B4 JUMPI PUSH2 0x60B3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60C0 DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60E3 JUMPI PUSH2 0x60E2 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60EF DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6114 JUMPI PUSH2 0x6113 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6121 DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6132 DUP6 DUP3 DUP7 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x6145 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x615E PUSH0 DUP4 ADD DUP5 PUSH2 0x613C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x619B DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x61A6 DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x61BE JUMPI PUSH2 0x61BD PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x61FA DUP2 PUSH2 0x547B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6213 PUSH0 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6227 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6242 JUMPI PUSH2 0x6241 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x624F DUP5 DUP3 DUP6 ADD PUSH2 0x6219 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6262 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x626D DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x6285 JUMPI PUSH2 0x6284 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6299 DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x62B4 JUMPI PUSH2 0x62B3 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x62C1 DUP5 DUP3 DUP6 ADD PUSH2 0x628B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x62D4 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x62E4 DUP2 PUSH2 0x62CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x62F3 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x630C PUSH0 DUP4 ADD DUP8 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6319 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6326 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x613C JUMP JUMPDEST PUSH2 0x6333 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x62EA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x634A DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6365 JUMPI PUSH2 0x6364 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6372 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x63B1 PUSH2 0x63AC PUSH2 0x63A7 DUP5 PUSH2 0x637B JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x6384 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x63C1 DUP2 PUSH2 0x6397 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x63DA PUSH0 DUP4 ADD DUP5 PUSH2 0x63B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x63EE DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6409 JUMPI PUSH2 0x6408 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6416 DUP5 DUP3 DUP6 ADD PUSH2 0x63E0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6434 JUMPI PUSH2 0x6433 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6441 DUP5 DUP3 DUP6 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x645D PUSH0 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x646A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6477 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6484 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6491 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x64A4 DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x64BD PUSH0 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x64CA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x649B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x64DF DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x64FC JUMPI PUSH2 0x64FB PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6509 DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x651A DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x652B DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x654D DUP4 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6580 JUMPI PUSH2 0x657F PUSH2 0x6535 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6591 DUP4 DUP6 DUP5 PUSH2 0x6539 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x65B0 PUSH0 DUP4 ADD DUP10 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x65BD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x65D0 DUP2 DUP7 DUP9 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x65E5 DUP2 DUP5 DUP7 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6600 DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x661B JUMPI PUSH2 0x661A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6628 DUP5 DUP3 DUP6 ADD PUSH2 0x65F2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6680 DUP2 PUSH2 0x665E JUMP JUMPDEST DUP2 EQ PUSH2 0x668A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x669B DUP2 PUSH2 0x6677 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x66B9 DUP2 PUSH2 0x66A1 JUMP JUMPDEST DUP2 EQ PUSH2 0x66C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x66D4 DUP2 PUSH2 0x66B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x66F1 JUMPI PUSH2 0x66F0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x66FE DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x670F DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6720 DUP7 DUP3 DUP8 ADD PUSH2 0x66C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x674D PUSH2 0x6748 PUSH2 0x6743 DUP5 PUSH2 0x672A JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x51C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x675D DUP2 PUSH2 0x6733 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x6781 PUSH0 DUP4 PUSH2 0x6763 JUMP JUMPDEST SWAP2 POP PUSH2 0x678C DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67A9 PUSH0 DUP4 ADD DUP7 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x67B6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67C3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x67D4 DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67F1 PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67FE PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x680B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x681C DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6839 PUSH0 DUP4 ADD DUP6 PUSH2 0x649B JUMP JUMPDEST PUSH2 0x6846 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x685F DUP2 PUSH2 0x684D JUMP JUMPDEST DUP2 EQ PUSH2 0x6869 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x687A DUP2 PUSH2 0x6856 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6895 JUMPI PUSH2 0x6894 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x68A2 DUP5 DUP3 DUP6 ADD PUSH2 0x686C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68B5 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x68C7 JUMPI PUSH2 0x68C6 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68E7 PUSH0 DUP4 PUSH2 0x68D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x68F2 DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6906 DUP3 PUSH2 0x68DC JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6923 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6930 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x694A PUSH0 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6957 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6964 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x697A DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x698E DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x69A9 JUMPI PUSH2 0x69A8 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x69B3 PUSH1 0x80 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x69C2 DUP5 DUP3 DUP6 ADD PUSH2 0x696C JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x69D5 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x69E9 DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x69FD DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A1E JUMPI PUSH2 0x6A1D PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6A2B DUP5 DUP3 DUP6 ADD PUSH2 0x6994 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6A47 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A54 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A61 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6A7C PUSH0 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A89 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x6A9B DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6AAF DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6AD4 JUMPI PUSH2 0x6AD3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6AF7 PUSH2 0x6AF2 DUP5 PUSH2 0x6ABA JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6B1A JUMPI PUSH2 0x6B19 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6B43 JUMPI DUP1 PUSH2 0x6B2F DUP9 DUP3 PUSH2 0x686C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6B1C JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6B61 JUMPI PUSH2 0x6B60 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6B71 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6B8F JUMPI PUSH2 0x6B8E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6BAC JUMPI PUSH2 0x6BAB PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6BB8 DUP5 DUP3 DUP6 ADD PUSH2 0x6B4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6BCB DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x6BFD JUMPI PUSH2 0x6BFC PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6C1B PUSH0 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C28 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C35 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C42 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6C73 JUMPI PUSH2 0x6C72 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6C95 JUMPI PUSH2 0x6C94 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6CB1 JUMPI PUSH2 0x6CB0 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6CD5 JUMPI PUSH2 0x6CD4 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6CF7 JUMPI PUSH2 0x6CF6 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6D13 JUMPI PUSH2 0x6D12 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6D2E PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D3B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D48 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D62 DUP2 PUSH2 0x6D50 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6D7B PUSH0 DUP4 ADD DUP5 PUSH2 0x6D59 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D96 JUMPI PUSH2 0x6D95 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6DA3 DUP5 DUP3 DUP6 ADD PUSH2 0x571D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6DDE DUP2 PUSH2 0x684D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6DEF DUP4 DUP4 PUSH2 0x6DD5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6E11 DUP3 PUSH2 0x6DAC JUMP JUMPDEST PUSH2 0x6E1B DUP2 DUP6 PUSH2 0x6DB6 JUMP JUMPDEST SWAP4 POP PUSH2 0x6E26 DUP4 PUSH2 0x6DC6 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6E56 JUMPI DUP2 MLOAD PUSH2 0x6E3D DUP9 DUP3 PUSH2 0x6DE4 JUMP JUMPDEST SWAP8 POP PUSH2 0x6E48 DUP4 PUSH2 0x6DFB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x6E29 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6E76 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x6E88 DUP2 DUP6 PUSH2 0x6E07 JUMP JUMPDEST SWAP1 POP PUSH2 0x6E97 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6EB1 PUSH2 0x6EAC DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6ED4 JUMPI PUSH2 0x6ED3 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6EFD JUMPI DUP1 PUSH2 0x6EE9 DUP9 DUP3 PUSH2 0x6219 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6ED6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6F1B JUMPI PUSH2 0x6F1A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6F2B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6E9F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F4B JUMPI PUSH2 0x6F4A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6F58 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F69 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F8A JUMPI PUSH2 0x6F89 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6F96 DUP7 DUP3 DUP8 ADD PUSH2 0x6F07 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6FB3 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6FC0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6FD1 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x6FDC DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x6FEA DUP2 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x7001 JUMPI PUSH2 0x7000 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x703F DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x704A DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x705A JUMPI PUSH2 0x7059 PUSH2 0x7008 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE ADDRESS SWAP11 PUSH25 0xC4164F5B8B6E48C22021A99ACA2BB60332BC12D21314FEE29F CALLVALUE 0xEE 0xFC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1523:41876:5:-:0;;;2851:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2984:8;2972:20;;;;;;;;;;3015:9;3002:22;;;;;;;;;;3045:7;3034:18;;;;;;;;;;3063:22;:20;;;:22;;:::i;:::-;2851:241;;;1523:41876;;7711:422:1;7826:30;7859:26;:24;;;:26;;:::i;:::-;7826:59;;7900:1;:15;;;;;;;;;;;;7896:76;;;7938:23;;;;;;;;;;;;;;7896:76;8003:16;7985:34;;:1;:14;;;;;;;;;;;;:34;;;7981:146;;8052:16;8035:1;:14;;;:33;;;;;;;;;;;;;;;;;;8087:29;8099:16;8087:29;;;;;;:::i;:::-;;;;;;;;7981:146;7760:373;7711:422::o;8737:170::-;8795:30;8870:21;8860:31;;8737:170;:::o;88:117:34:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:115::-;624:7;653:24;671:5;653:24;:::i;:::-;642:35;;568:115;;;:::o;689:160::-;781:43;818:5;781:43;:::i;:::-;774:5;771:54;761:82;;839:1;836;829:12;761:82;689:160;:::o;855:181::-;931:5;962:6;956:13;947:22;;978:52;1024:5;978:52;:::i;:::-;855:181;;;;:::o;1042:123::-;1106:7;1135:24;1153:5;1135:24;:::i;:::-;1124:35;;1042:123;;;:::o;1171:176::-;1271:51;1316:5;1271:51;:::i;:::-;1264:5;1261:62;1251:90;;1337:1;1334;1327:12;1251:90;1171:176;:::o;1353:197::-;1437:5;1468:6;1462:13;1453:22;;1484:60;1538:5;1484:60;:::i;:::-;1353:197;;;;:::o;1556:113::-;1610:7;1639:24;1657:5;1639:24;:::i;:::-;1628:35;;1556:113;;;:::o;1675:156::-;1765:41;1800:5;1765:41;:::i;:::-;1758:5;1755:52;1745:80;;1821:1;1818;1811:12;1745:80;1675:156;:::o;1837:177::-;1911:5;1942:6;1936:13;1927:22;;1958:50;2002:5;1958:50;:::i;:::-;1837:177;;;;:::o;2020:789::-;2171:6;2179;2187;2236:2;2224:9;2215:7;2211:23;2207:32;2204:119;;;2242:79;;:::i;:::-;2204:119;2362:1;2387:83;2462:7;2453:6;2442:9;2438:22;2387:83;:::i;:::-;2377:93;;2333:147;2519:2;2545:91;2628:7;2619:6;2608:9;2604:22;2545:91;:::i;:::-;2535:101;;2490:156;2685:2;2711:81;2784:7;2775:6;2764:9;2760:22;2711:81;:::i;:::-;2701:91;;2656:146;2020:789;;;;;:::o;2815:101::-;2851:7;2891:18;2884:5;2880:30;2869:41;;2815:101;;;:::o;2922:115::-;3007:23;3024:5;3007:23;:::i;:::-;3002:3;2995:36;2922:115;;:::o;3043:218::-;3134:4;3172:2;3161:9;3157:18;3149:26;;3185:69;3251:1;3240:9;3236:17;3227:6;3185:69;:::i;:::-;3043:218;;;;:::o;1523:41876:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_714": { + "entryPoint": null, + "id": 714, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_addLiquidity_2644": { + "entryPoint": 18020, + "id": 2644, + "parameterSlots": 2, + "returnSlots": 6 + }, + "@_callAndCatch_10561": { + "entryPoint": 20462, + "id": 10561, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_getAmountsIn_2799": { + "entryPoint": 13764, + "id": 2799, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@_getInitializableStorage_400": { + "entryPoint": 17245, + "id": 400, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getLBPairInformation_3477": { + "entryPoint": 17284, + "id": 3477, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_getPair_3546": { + "entryPoint": 19516, + "id": 3546, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@_getPairs_3625": { + "entryPoint": 11970, + "id": 3625, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_removeLiquidity_2881": { + "entryPoint": 17570, + "id": 2881, + "parameterSlots": 6, + "returnSlots": 2 + }, + "@_safeTransferFrom_3676": { + "entryPoint": 12287, + "id": 3676, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_safeTransferNative_3707": { + "entryPoint": 15835, + "id": 3707, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_safeTransfer_3649": { + "entryPoint": 17963, + "id": 3649, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_swapExactTokensForTokens_3074": { + "entryPoint": 16021, + "id": 3074, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@_swapSupportingFeeOnTransferTokens_3429": { + "entryPoint": 12347, + "id": 3429, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_swapTokensForExactTokens_3246": { + "entryPoint": 14917, + "id": 3246, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@_wNativeDepositAndTransfer_3736": { + "entryPoint": 14704, + "id": 3736, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_wNativeWithdrawAndTransfer_3761": { + "entryPoint": 13607, + "id": 3761, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addLiquidityNATIVE_1106": { + "entryPoint": 6950, + "id": 1106, + "parameterSlots": 1, + "returnSlots": 6 + }, + "@addLiquidity_958": { + "entryPoint": 9185, + "id": 958, + "parameterSlots": 1, + "returnSlots": 6 + }, + "@createLBPair_872": { + "entryPoint": 5915, + "id": 872, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@decodeX_11129": { + "entryPoint": 20600, + "id": 11129, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decodeY_11139": { + "entryPoint": 20627, + "id": 11139, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decode_11119": { + "entryPoint": 20428, + "id": 11119, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@encodeParams_10936": { + "entryPoint": 20639, + "id": 10936, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@getAmountIn_10475": { + "entryPoint": 20211, + "id": 10475, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@getAmountOut_10420": { + "entryPoint": 20001, + "id": 10420, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@getFactory_725": { + "entryPoint": 6911, + "id": 725, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getIdFromPrice_765": { + "entryPoint": 11841, + "id": 765, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getPriceFromId_783": { + "entryPoint": 10503, + "id": 783, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getSwapIn_813": { + "entryPoint": 8284, + "id": 813, + "parameterSlots": 3, + "returnSlots": 3 + }, + "@getSwapOut_843": { + "entryPoint": 9039, + "id": 843, + "parameterSlots": 3, + "returnSlots": 3 + }, + "@getV1Factory_736": { + "entryPoint": 10140, + "id": 736, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWNATIVE_747": { + "entryPoint": 6085, + "id": 747, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@initialize_698": { + "entryPoint": 6124, + "id": 698, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@removeLiquidityNATIVE_1301": { + "entryPoint": 6499, + "id": 1301, + "parameterSlots": 8, + "returnSlots": 2 + }, + "@removeLiquidity_1193": { + "entryPoint": 10179, + "id": 1193, + "parameterSlots": 9, + "returnSlots": 2 + }, + "@safeTransferFrom_10514": { + "entryPoint": 19859, + "id": 10514, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransfer_10542": { + "entryPoint": 17106, + "id": 10542, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@set_10705": { + "entryPoint": 20888, + "id": 10705, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@sub_11252": { + "entryPoint": 20768, + "id": 11252, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@swapExactNATIVEForTokensSupportingFeeOnTransferTokens_2255": { + "entryPoint": 10632, + "id": 2255, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@swapExactNATIVEForTokens_1565": { + "entryPoint": 9582, + "id": 1565, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@swapExactTokensForNATIVESupportingFeeOnTransferTokens_2148": { + "entryPoint": 1754, + "id": 2148, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapExactTokensForNATIVE_1479": { + "entryPoint": 8430, + "id": 1479, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapExactTokensForTokensSupportingFeeOnTransferTokens_2024": { + "entryPoint": 4665, + "id": 2024, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapExactTokensForTokens_1374": { + "entryPoint": 3495, + "id": 1374, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapNATIVEForExactTokens_1929": { + "entryPoint": 2681, + "id": 1929, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@swapTokensForExactNATIVE_1798": { + "entryPoint": 3882, + "id": 1798, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapTokensForExactTokens_1666": { + "entryPoint": 7723, + "id": 1666, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@sweepLBToken_2361": { + "entryPoint": 11480, + "id": 2361, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@sweep_2330": { + "entryPoint": 5342, + "id": 2330, + "parameterSlots": 3, + "returnSlots": 0 + }, + "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { + "entryPoint": 27365, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr": { + "entryPoint": 21703, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr": { + "entryPoint": 21404, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21177, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { + "entryPoint": 28319, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_t_address": { + "entryPoint": 22301, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 25227, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_address_payable": { + "entryPoint": 22072, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { + "entryPoint": 27469, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr": { + "entryPoint": 21807, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr": { + "entryPoint": 21508, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr": { + "entryPoint": 24582, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21281, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { + "entryPoint": 28423, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bool": { + "entryPoint": 23980, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bool_fromMemory": { + "entryPoint": 27008, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes32_fromMemory": { + "entryPoint": 26732, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_IERC20_$479": { + "entryPoint": 21683, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_IERC20_$479_fromMemory": { + "entryPoint": 25568, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBPair_$6187": { + "entryPoint": 23858, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBPair_$6187_fromMemory": { + "entryPoint": 25404, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBToken_$6842": { + "entryPoint": 24558, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_enum$_Version_$6322": { + "entryPoint": 21384, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory": { + "entryPoint": 27028, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr": { + "entryPoint": 23608, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_struct$_Path_$6372_memory_ptr": { + "entryPoint": 21852, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint112_fromMemory": { + "entryPoint": 26253, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint128": { + "entryPoint": 23927, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint128_fromMemory": { + "entryPoint": 25809, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint16": { + "entryPoint": 22982, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint16_fromMemory": { + "entryPoint": 26988, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint24": { + "entryPoint": 22927, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint24_fromMemory": { + "entryPoint": 26098, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 20962, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256_fromMemory": { + "entryPoint": 25113, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint32_fromMemory": { + "entryPoint": 26310, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 28033, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 25247, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { + "entryPoint": 27514, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 26752, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_bytes32t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { + "entryPoint": 28468, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC20_$479": { + "entryPoint": 25631, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$479_fromMemory": { + "entryPoint": 25588, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_addresst_uint256": { + "entryPoint": 22811, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256": { + "entryPoint": 24205, + "id": null, + "parameterSlots": 2, + "returnSlots": 9 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint24t_uint16": { + "entryPoint": 23002, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256": { + "entryPoint": 23275, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187_fromMemory": { + "entryPoint": 25424, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint128t_bool": { + "entryPoint": 24000, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint24": { + "entryPoint": 24457, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint256": { + "entryPoint": 24830, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_contract$_ILBToken_$6842t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr": { + "entryPoint": 24667, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory": { + "entryPoint": 27145, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_struct$_LiquidityParameters_$6359_calldata_ptr": { + "entryPoint": 23639, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory": { + "entryPoint": 26330, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory": { + "entryPoint": 25829, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint24_fromMemory": { + "entryPoint": 26118, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 25133, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256": { + "entryPoint": 22321, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_address_payablet_uint256": { + "entryPoint": 22092, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256": { + "entryPoint": 22664, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32": { + "entryPoint": 28132, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encodeUpdatedPos_t_uint256_to_t_uint256": { + "entryPoint": 22505, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 25073, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": { + "entryPoint": 28167, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 25922, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 22540, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_bool_to_t_bool_fromStack": { + "entryPoint": 25755, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bytes32_to_t_bytes32": { + "entryPoint": 28117, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack": { + "entryPoint": 25307, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack": { + "entryPoint": 23564, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack": { + "entryPoint": 23178, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack": { + "entryPoint": 24165, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack": { + "entryPoint": 23235, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_int256_to_t_int256_fromStack": { + "entryPoint": 27993, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": { + "entryPoint": 26452, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack": { + "entryPoint": 25528, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack": { + "entryPoint": 26486, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 26844, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_uint128_to_t_uint128_fromStack": { + "entryPoint": 24080, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint16_to_t_uint16_fromStack": { + "entryPoint": 25322, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint24_to_t_uint24_fromStack": { + "entryPoint": 24892, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256": { + "entryPoint": 22490, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 22239, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 26876, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 25088, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 28576, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 26013, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 27241, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 27188, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 25674, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__to_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__fromStack_reversed": { + "entryPoint": 28259, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 26896, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 22632, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed": { + "entryPoint": 26662, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed": { + "entryPoint": 25337, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 26935, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ILBFactory_$4236__to_t_address__fromStack_reversed": { + "entryPoint": 23579, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ILBPair_$6187__to_t_address__fromStack_reversed": { + "entryPoint": 23193, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ISovrynLBFactoryV1_$6916__to_t_address__fromStack_reversed": { + "entryPoint": 24180, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IWNATIVE_$7175__to_t_address__fromStack_reversed": { + "entryPoint": 23250, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed": { + "entryPoint": 28008, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 26518, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": 25543, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed": { + "entryPoint": 25770, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed": { + "entryPoint": 24095, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed": { + "entryPoint": 24907, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 22254, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 26590, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 23508, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 27931, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 27656, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23710, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "access_calldata_tail_t_array$_t_int256_$dyn_calldata_ptr": { + "entryPoint": 27833, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr": { + "entryPoint": 27735, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "allocate_memory": { + "entryPoint": 21096, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": 20914, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 27322, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr": { + "entryPoint": 21553, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr": { + "entryPoint": 21326, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21130, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 28102, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 22475, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 28076, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 22449, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 28155, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 22528, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": { + "entryPoint": 28086, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 22459, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": { + "entryPoint": 26467, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 26834, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 24977, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 28725, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 28615, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 25176, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 21627, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_address_payable": { + "entryPoint": 22033, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 23947, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bytes32": { + "entryPoint": 26701, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_IERC20_$479": { + "entryPoint": 21644, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_ILBPair_$6187": { + "entryPoint": 23819, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_ILBToken_$6842": { + "entryPoint": 24519, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_int256": { + "entryPoint": 27984, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_rational_0_by_1": { + "entryPoint": 26410, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_rational_1_by_1": { + "entryPoint": 25467, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint112": { + "entryPoint": 26206, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint128": { + "entryPoint": 23878, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint16": { + "entryPoint": 22947, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 21596, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint24": { + "entryPoint": 22891, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 20931, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint32": { + "entryPoint": 26273, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint64": { + "entryPoint": 25476, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_IERC20_$479_to_t_address": { + "entryPoint": 25290, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ILBFactory_$4236_to_t_address": { + "entryPoint": 23547, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ILBPair_$6187_to_t_address": { + "entryPoint": 23161, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address": { + "entryPoint": 24148, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_IWNATIVE_$7175_to_t_address": { + "entryPoint": 23218, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_rational_0_by_1_to_t_uint256": { + "entryPoint": 26419, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_rational_1_by_1_to_t_uint64": { + "entryPoint": 25495, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_address": { + "entryPoint": 23144, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_uint160": { + "entryPoint": 23111, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_calldata_to_memory": { + "entryPoint": 25913, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "decrement_t_uint256": { + "entryPoint": 26795, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 21047, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "identity": { + "entryPoint": 23102, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 27585, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 24932, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": 28680, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x21": { + "entryPoint": 26161, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 25028, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 21002, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { + "entryPoint": 24578, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { + "entryPoint": 21126, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a": { + "entryPoint": 27727, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d": { + "entryPoint": 23604, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f": { + "entryPoint": 20982, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad": { + "entryPoint": 27723, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421": { + "entryPoint": 21122, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { + "entryPoint": 21173, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e": { + "entryPoint": 27731, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": 20927, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec": { + "entryPoint": 25909, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 20923, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 20986, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470": { + "entryPoint": 26483, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 22279, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_address_payable": { + "entryPoint": 22050, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bool": { + "entryPoint": 23958, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bytes32": { + "entryPoint": 26710, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_IERC20_$479": { + "entryPoint": 21661, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_ILBPair_$6187": { + "entryPoint": 23836, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_ILBToken_$6842": { + "entryPoint": 24536, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_enum$_Version_$6322": { + "entryPoint": 21369, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint112": { + "entryPoint": 26231, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint128": { + "entryPoint": 23905, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint16": { + "entryPoint": 22960, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint24": { + "entryPoint": 22905, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 20940, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint32": { + "entryPoint": 26288, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:63587:34", + "statements": [ { "body": { "nodeType": "YulBlock", - "src": "6323:636:33", + "src": "47:35:34", "statements": [ { "nodeType": "YulAssignment", - "src": "6333:104:33", + "src": "57:19:34", "value": { "arguments": [ { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "6429:6:33" - } - ], - "functionName": { - "name": "array_allocation_size_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "6358:70:33" - }, - "nodeType": "YulFunctionCall", - "src": "6358:78:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "allocate_memory", + "name": "mload", "nodeType": "YulIdentifier", - "src": "6342:15:33" + "src": "67:5:34" }, "nodeType": "YulFunctionCall", - "src": "6342:95:33" + "src": "67:9:34" }, "variableNames": [ { - "name": "array", + "name": "memPtr", "nodeType": "YulIdentifier", - "src": "6333:5:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6446:16:33", - "value": { - "name": "array", - "nodeType": "YulIdentifier", - "src": "6457:5:33" - }, - "variables": [ - { - "name": "dst", - "nodeType": "YulTypedName", - "src": "6450:3:33", - "type": "" + "src": "57:6:34" } ] - }, + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:34", + "type": "" + } + ], + "src": "7:75:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:34", + "statements": [ { "expression": { "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "6479:5:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "6486:6:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6472:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "6472:21:33" - }, - "nodeType": "YulExpressionStatement", - "src": "6472:21:33" - }, - { - "nodeType": "YulAssignment", - "src": "6502:23:33", - "value": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "6513:5:33" - }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6520:4:33", + "src": "194:1:34", "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6509:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6509:16:33" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "6502:3:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6535:44:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "6553:6:33" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "6565:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6573:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "6561:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6561:17:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6549:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6549:30:33" - }, - "variables": [ - { - "name": "srcEnd", - "nodeType": "YulTypedName", - "src": "6539:6:33", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6607:103:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", - "nodeType": "YulIdentifier", - "src": "6621:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "6621:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "6621:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "srcEnd", - "nodeType": "YulIdentifier", - "src": "6594:6:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "6602:3:33" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "6591:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "6591:15:33" - }, - "nodeType": "YulIf", - "src": "6588:122:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6795:158:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "6810:21:33", - "value": { - "name": "src", - "nodeType": "YulIdentifier", - "src": "6828:3:33" - }, - "variables": [ - { - "name": "elementPos", - "nodeType": "YulTypedName", - "src": "6814:10:33", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "6852:3:33" - }, - { - "arguments": [ - { - "name": "elementPos", - "nodeType": "YulIdentifier", - "src": "6892:10:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "6904:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", - "nodeType": "YulIdentifier", - "src": "6857:34:33" - }, - "nodeType": "YulFunctionCall", - "src": "6857:51:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6845:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "6845:64:33" - }, - "nodeType": "YulExpressionStatement", - "src": "6845:64:33" + "value": "0" }, { - "nodeType": "YulAssignment", - "src": "6922:21:33", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "6933:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6938:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6929:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6929:14:33" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "6922:3:33" - } - ] + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:34", + "type": "", + "value": "0" } - ] + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:34" }, - "condition": { + "nodeType": "YulExpressionStatement", + "src": "187:12:34" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:34", + "statements": [ + { + "expression": { "arguments": [ { - "name": "src", - "nodeType": "YulIdentifier", - "src": "6748:3:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:34", + "type": "", + "value": "0" }, { - "name": "srcEnd", - "nodeType": "YulIdentifier", - "src": "6753:6:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "lt", + "name": "revert", "nodeType": "YulIdentifier", - "src": "6745:2:33" + "src": "310:6:34" }, "nodeType": "YulFunctionCall", - "src": "6745:15:33" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "6761:25:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6763:21:33", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "6774:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6779:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6770:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6770:14:33" - }, - "variableNames": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "6763:3:33" - } - ] - } - ] + "src": "310:12:34" }, - "pre": { - "nodeType": "YulBlock", - "src": "6723:21:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "6725:17:33", - "value": { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "6736:6:33" - }, - "variables": [ - { - "name": "src", - "nodeType": "YulTypedName", - "src": "6729:3:33", - "type": "" - } - ] - } - ] + "nodeType": "YulExpressionStatement", + "src": "310:12:34" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:32:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:16:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "400:5:34" }, - "src": "6719:234:33" + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:34" + } + ] } ] }, - "name": "abi_decode_available_length_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr", + "name": "cleanup_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", - "nodeType": "YulTypedName", - "src": "6293:6:33", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "6301:6:33", - "type": "" - }, - { - "name": "end", + "name": "value", "nodeType": "YulTypedName", - "src": "6309:3:33", + "src": "361:5:34", "type": "" } ], "returnVariables": [ { - "name": "array", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "6317:5:33", + "src": "371:7:34", "type": "" } ], - "src": "6207:752:33" + "src": "334:77:34" }, { "body": { "nodeType": "YulBlock", - "src": "7081:307:33", + "src": "460:79:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "7130:83:33", + "src": "517:16:34", "statements": [ { "expression": { - "arguments": [], + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "526:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "529:1:34", + "type": "", + "value": "0" + } + ], "functionName": { - "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "name": "revert", "nodeType": "YulIdentifier", - "src": "7132:77:33" + "src": "519:6:34" }, "nodeType": "YulFunctionCall", - "src": "7132:79:33" + "src": "519:12:34" }, "nodeType": "YulExpressionStatement", - "src": "7132:79:33" + "src": "519:12:34" } ] }, @@ -7370,519 +3416,453 @@ "arguments": [ { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "483:5:34" + }, { "arguments": [ { - "name": "offset", + "name": "value", "nodeType": "YulIdentifier", - "src": "7109:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7117:4:33", - "type": "", - "value": "0x1f" + "src": "508:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "7105:3:33" + "src": "490:17:34" }, "nodeType": "YulFunctionCall", - "src": "7105:17:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7124:3:33" + "src": "490:24:34" } ], "functionName": { - "name": "slt", + "name": "eq", "nodeType": "YulIdentifier", - "src": "7101:3:33" + "src": "480:2:34" }, "nodeType": "YulFunctionCall", - "src": "7101:27:33" + "src": "480:35:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "7094:6:33" + "src": "473:6:34" }, "nodeType": "YulFunctionCall", - "src": "7094:35:33" + "src": "473:43:34" }, "nodeType": "YulIf", - "src": "7091:122:33" - }, + "src": "470:63:34" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "453:5:34", + "type": "" + } + ], + "src": "417:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "597:87:34", + "statements": [ { - "nodeType": "YulVariableDeclaration", - "src": "7222:34:33", + "nodeType": "YulAssignment", + "src": "607:29:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "7249:6:33" + "src": "629:6:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "7236:12:33" + "src": "616:12:34" }, "nodeType": "YulFunctionCall", - "src": "7236:20:33" + "src": "616:20:34" }, - "variables": [ + "variableNames": [ { - "name": "length", - "nodeType": "YulTypedName", - "src": "7226:6:33", - "type": "" + "name": "value", + "nodeType": "YulIdentifier", + "src": "607:5:34" } ] }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "672:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "645:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "645:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "645:33:34" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "575:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "583:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "591:5:34", + "type": "" + } + ], + "src": "545:139:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "779:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "796:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "799:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "789:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "789:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "789:12:34" + } + ] + }, + "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", + "nodeType": "YulFunctionDefinition", + "src": "690:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "861:54:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "7265:117:33", + "src": "871:38:34", "value": { "arguments": [ { "arguments": [ { - "name": "offset", + "name": "value", "nodeType": "YulIdentifier", - "src": "7355:6:33" + "src": "889:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7363:4:33", + "src": "896:2:34", "type": "", - "value": "0x20" + "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7351:3:33" + "src": "885:3:34" }, "nodeType": "YulFunctionCall", - "src": "7351:17:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "7370:6:33" + "src": "885:14:34" }, { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7378:3:33" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "905:2:34", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "901:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "901:7:34" } ], "functionName": { - "name": "abi_decode_available_length_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr", + "name": "and", "nodeType": "YulIdentifier", - "src": "7274:76:33" + "src": "881:3:34" }, "nodeType": "YulFunctionCall", - "src": "7274:108:33" + "src": "881:28:34" }, "variableNames": [ { - "name": "array", + "name": "result", "nodeType": "YulIdentifier", - "src": "7265:5:33" + "src": "871:6:34" } ] } ] }, - "name": "abi_decode_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr", + "name": "round_up_to_mul_of_32", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", - "nodeType": "YulTypedName", - "src": "7059:6:33", - "type": "" - }, - { - "name": "end", + "name": "value", "nodeType": "YulTypedName", - "src": "7067:3:33", + "src": "844:5:34", "type": "" } ], "returnVariables": [ { - "name": "array", + "name": "result", "nodeType": "YulTypedName", - "src": "7075:5:33", + "src": "854:6:34", "type": "" } ], - "src": "6990:398:33" + "src": "813:102:34" }, { "body": { "nodeType": "YulBlock", - "src": "7500:1253:33", + "src": "949:152:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "7544:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", - "nodeType": "YulIdentifier", - "src": "7546:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "7546:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "7546:79:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "arguments": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7521:3:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7526:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "7517:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7517:19:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "966:1:34", + "type": "", + "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7538:4:33", + "src": "969:77:34", "type": "", - "value": "0x60" + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } ], "functionName": { - "name": "slt", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "7513:3:33" + "src": "959:6:34" }, "nodeType": "YulFunctionCall", - "src": "7513:30:33" + "src": "959:88:34" }, - "nodeType": "YulIf", - "src": "7510:117:33" + "nodeType": "YulExpressionStatement", + "src": "959:88:34" }, { - "nodeType": "YulAssignment", - "src": "7636:30:33", - "value": { + "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "7661:4:33", + "src": "1063:1:34", "type": "", - "value": "0x60" + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1066:4:34", + "type": "", + "value": "0x41" } ], "functionName": { - "name": "allocate_memory", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "7645:15:33" + "src": "1056:6:34" }, "nodeType": "YulFunctionCall", - "src": "7645:21:33" + "src": "1056:15:34" }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7636:5:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "1056:15:34" }, { - "nodeType": "YulBlock", - "src": "7676:343:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "7719:45:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7750:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7761:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7746:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7746:17:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "7733:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "7733:31:33" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "7723:6:33", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7811:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", - "nodeType": "YulIdentifier", - "src": "7813:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "7813:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "7813:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "7783:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7791:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "7780:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "7780:30:33" - }, - "nodeType": "YulIf", - "src": "7777:117:33" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7919:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7926:4:33", - "type": "", - "value": "0x00" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7915:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7915:16:33" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7983:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "7994:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7979:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7979:22:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "8003:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "7933:45:33" - }, - "nodeType": "YulFunctionCall", - "src": "7933:74:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7908:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "7908:100:33" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1087:1:34", + "type": "", + "value": "0" }, - "nodeType": "YulExpressionStatement", - "src": "7908:100:33" - } - ] - }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1090:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1080:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1080:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1080:15:34" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "921:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1150:238:34", + "statements": [ { - "nodeType": "YulBlock", - "src": "8029:352:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "8068:46:33", - "value": { + "nodeType": "YulVariableDeclaration", + "src": "1160:58:34", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1182:6:34" + }, + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "8099:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8110:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8095:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8095:18:33" + "name": "size", + "nodeType": "YulIdentifier", + "src": "1212:4:34" } ], "functionName": { - "name": "calldataload", + "name": "round_up_to_mul_of_32", "nodeType": "YulIdentifier", - "src": "8082:12:33" + "src": "1190:21:34" }, "nodeType": "YulFunctionCall", - "src": "8082:32:33" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "8072:6:33", - "type": "" - } - ] + "src": "1190:27:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1178:3:34" }, + "nodeType": "YulFunctionCall", + "src": "1178:40:34" + }, + "variables": [ { - "body": { - "nodeType": "YulBlock", - "src": "8161:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", - "nodeType": "YulIdentifier", - "src": "8163:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "8163:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "8163:79:33" - } - ] - }, - "condition": { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1164:10:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1329:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1331:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "1331:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1331:18:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ { - "name": "offset", + "name": "newFreePtr", "nodeType": "YulIdentifier", - "src": "8133:6:33" + "src": "1272:10:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8141:18:33", + "src": "1284:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -7890,477 +3870,483 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "8130:2:33" + "src": "1269:2:34" }, "nodeType": "YulFunctionCall", - "src": "8130:30:33" + "src": "1269:34:34" }, - "nodeType": "YulIf", - "src": "8127:117:33" - }, - { - "expression": { + { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8269:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8276:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8265:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8265:16:33" + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1308:10:34" }, { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "8345:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "8356:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8341:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8341:22:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "8365:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "8283:57:33" - }, - "nodeType": "YulFunctionCall", - "src": "8283:86:33" + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1320:6:34" } ], "functionName": { - "name": "mstore", + "name": "lt", "nodeType": "YulIdentifier", - "src": "8258:6:33" + "src": "1305:2:34" }, "nodeType": "YulFunctionCall", - "src": "8258:112:33" + "src": "1305:22:34" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1266:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "1266:62:34" + }, + "nodeType": "YulIf", + "src": "1263:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1367:2:34", + "type": "", + "value": "64" }, - "nodeType": "YulExpressionStatement", - "src": "8258:112:33" + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1371:10:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1360:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1360:22:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1360:22:34" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1136:6:34", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1144:4:34", + "type": "" + } + ], + "src": "1107:281:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1435:88:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1445:30:34", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1455:18:34" + }, + "nodeType": "YulFunctionCall", + "src": "1455:20:34" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1445:6:34" } ] }, { - "nodeType": "YulBlock", - "src": "8391:355:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "8431:46:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "8462:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8473:2:33", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8458:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8458:18:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "8445:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "8445:32:33" + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1504:6:34" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1512:4:34" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1484:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "1484:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:33:34" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1419:4:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1428:6:34", + "type": "" + } + ], + "src": "1394:129:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1618:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1635:1:34", + "type": "", + "value": "0" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "8435:6:33", - "type": "" - } - ] + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1638:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1628:6:34" }, - { - "body": { - "nodeType": "YulBlock", - "src": "8524:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", - "nodeType": "YulIdentifier", - "src": "8526:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "8526:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "8526:79:33" - } - ] + "nodeType": "YulFunctionCall", + "src": "1628:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1628:12:34" + } + ] + }, + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulFunctionDefinition", + "src": "1529:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1741:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1758:1:34", + "type": "", + "value": "0" }, - "condition": { - "arguments": [ - { - "name": "offset", + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1761:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1751:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1751:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1751:12:34" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "1652:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1857:229:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1962:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", "nodeType": "YulIdentifier", - "src": "8496:6:33" + "src": "1964:16:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8504:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "8493:2:33" + "nodeType": "YulFunctionCall", + "src": "1964:18:34" }, - "nodeType": "YulFunctionCall", - "src": "8493:30:33" + "nodeType": "YulExpressionStatement", + "src": "1964:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1934:6:34" }, - "nodeType": "YulIf", - "src": "8490:117:33" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1942:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1931:2:34" }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8632:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8639:4:33", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8628:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8628:16:33" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "8710:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "8721:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8706:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8706:22:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "8730:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "8646:59:33" - }, - "nodeType": "YulFunctionCall", - "src": "8646:88:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8621:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "8621:114:33" + "nodeType": "YulFunctionCall", + "src": "1931:30:34" + }, + "nodeType": "YulIf", + "src": "1928:56:34" + }, + { + "nodeType": "YulAssignment", + "src": "1994:25:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2006:6:34" }, - "nodeType": "YulExpressionStatement", - "src": "8621:114:33" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2014:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2002:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2002:17:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1994:4:34" } ] - } - ] - }, - "name": "abi_decode_t_struct$_Path_$6660_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "7475:9:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "7486:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "7494:5:33", - "type": "" - } - ], - "src": "7423:1330:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8812:51:33", - "statements": [ + }, { "nodeType": "YulAssignment", - "src": "8822:35:33", + "src": "2056:23:34", "value": { "arguments": [ { - "name": "value", + "name": "size", "nodeType": "YulIdentifier", - "src": "8851:5:33" + "src": "2068:4:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2074:4:34", + "type": "", + "value": "0x20" } ], "functionName": { - "name": "cleanup_t_uint160", + "name": "add", "nodeType": "YulIdentifier", - "src": "8833:17:33" + "src": "2064:3:34" }, "nodeType": "YulFunctionCall", - "src": "8833:24:33" + "src": "2064:15:34" }, "variableNames": [ { - "name": "cleaned", + "name": "size", "nodeType": "YulIdentifier", - "src": "8822:7:33" + "src": "2056:4:34" } ] } ] }, - "name": "cleanup_t_address_payable", + "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "length", "nodeType": "YulTypedName", - "src": "8794:5:33", + "src": "1841:6:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "size", "nodeType": "YulTypedName", - "src": "8804:7:33", + "src": "1852:4:34", "type": "" } ], - "src": "8759:104:33" + "src": "1775:311:34" }, { "body": { "nodeType": "YulBlock", - "src": "8920:87:33", + "src": "2181:28:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "8985:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8994:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8997:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "8987:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "8987:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "8987:12:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8943:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8976:5:33" - } - ], - "functionName": { - "name": "cleanup_t_address_payable", - "nodeType": "YulIdentifier", - "src": "8950:25:33" - }, - "nodeType": "YulFunctionCall", - "src": "8950:32:33" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "8940:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "8940:43:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "2198:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2201:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "iszero", + "name": "revert", "nodeType": "YulIdentifier", - "src": "8933:6:33" + "src": "2191:6:34" }, "nodeType": "YulFunctionCall", - "src": "8933:51:33" + "src": "2191:12:34" }, - "nodeType": "YulIf", - "src": "8930:71:33" + "nodeType": "YulExpressionStatement", + "src": "2191:12:34" } ] }, - "name": "validator_revert_t_address_payable", + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "8913:5:33", - "type": "" - } - ], - "src": "8869:138:33" + "src": "2092:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "9073:95:33", + "src": "2334:608:34", "statements": [ { "nodeType": "YulAssignment", - "src": "9083:29:33", + "src": "2344:90:34", "value": { "arguments": [ { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "9105:6:33" + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2426:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2369:56:34" + }, + "nodeType": "YulFunctionCall", + "src": "2369:64:34" } ], "functionName": { - "name": "calldataload", + "name": "allocate_memory", "nodeType": "YulIdentifier", - "src": "9092:12:33" + "src": "2353:15:34" }, "nodeType": "YulFunctionCall", - "src": "9092:20:33" + "src": "2353:81:34" }, "variableNames": [ { - "name": "value", + "name": "array", "nodeType": "YulIdentifier", - "src": "9083:5:33" + "src": "2344:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2443:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2454:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2447:3:34", + "type": "" } ] }, @@ -8368,818 +4354,1339 @@ "expression": { "arguments": [ { - "name": "value", + "name": "array", "nodeType": "YulIdentifier", - "src": "9156:5:33" + "src": "2476:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2483:6:34" } ], "functionName": { - "name": "validator_revert_t_address_payable", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "9121:34:33" + "src": "2469:6:34" }, "nodeType": "YulFunctionCall", - "src": "9121:41:33" + "src": "2469:21:34" }, "nodeType": "YulExpressionStatement", - "src": "9121:41:33" - } - ] - }, - "name": "abi_decode_t_address_payable", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "9051:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "9059:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "9067:5:33", - "type": "" - } - ], - "src": "9013:155:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9338:967:33", - "statements": [ + "src": "2469:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "2499:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2510:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2517:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2506:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2506:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2499:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2532:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2550:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2562:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2570:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2558:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2558:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2546:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2546:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "2536:6:34", + "type": "" + } + ] + }, { "body": { "nodeType": "YulBlock", - "src": "9385:83:33", + "src": "2604:103:34", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", "nodeType": "YulIdentifier", - "src": "9387:77:33" + "src": "2618:77:34" }, "nodeType": "YulFunctionCall", - "src": "9387:79:33" + "src": "2618:79:34" }, "nodeType": "YulExpressionStatement", - "src": "9387:79:33" + "src": "2618:79:34" } ] }, "condition": { "arguments": [ { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "9359:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "9368:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "9355:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "9355:23:33" + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2591:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9380:3:33", - "type": "", - "value": "160" + "name": "end", + "nodeType": "YulIdentifier", + "src": "2599:3:34" } ], "functionName": { - "name": "slt", + "name": "gt", "nodeType": "YulIdentifier", - "src": "9351:3:33" + "src": "2588:2:34" }, "nodeType": "YulFunctionCall", - "src": "9351:33:33" + "src": "2588:15:34" }, "nodeType": "YulIf", - "src": "9348:120:33" + "src": "2585:122:34" }, { - "nodeType": "YulBlock", - "src": "9478:117:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "9493:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9507:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "9497:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "9522:63:33", - "value": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "2792:144:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2807:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2825:3:34" + }, + "variables": [ { - "arguments": [ - { - "name": "headStart", + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "2811:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2849:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "2875:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2887:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "9557:9:33" + "src": "2854:20:34" }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "9568:6:33" - } - ], - "functionName": { - "name": "add", + "nodeType": "YulFunctionCall", + "src": "2854:37:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2842:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "2842:50:34" + }, + "nodeType": "YulExpressionStatement", + "src": "2842:50:34" + }, + { + "nodeType": "YulAssignment", + "src": "2905:21:34", + "value": { + "arguments": [ + { + "name": "dst", "nodeType": "YulIdentifier", - "src": "9553:3:33" + "src": "2916:3:34" }, - "nodeType": "YulFunctionCall", - "src": "9553:22:33" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2921:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2912:3:34" }, + "nodeType": "YulFunctionCall", + "src": "2912:14:34" + }, + "variableNames": [ { - "name": "dataEnd", + "name": "dst", "nodeType": "YulIdentifier", - "src": "9577:7:33" + "src": "2905:3:34" } - ], - "functionName": { - "name": "abi_decode_t_uint256", - "nodeType": "YulIdentifier", - "src": "9532:20:33" - }, - "nodeType": "YulFunctionCall", - "src": "9532:53:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "9522:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "9605:118:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "9620:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9634:2:33", - "type": "", - "value": "32" + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2745:3:34" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "9624:6:33", - "type": "" - } - ] + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2750:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2742:2:34" }, - { - "nodeType": "YulAssignment", - "src": "9650:63:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "9685:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "9696:6:33" - } - ], - "functionName": { - "name": "add", + "nodeType": "YulFunctionCall", + "src": "2742:15:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2758:25:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2760:21:34", + "value": { + "arguments": [ + { + "name": "src", "nodeType": "YulIdentifier", - "src": "9681:3:33" + "src": "2771:3:34" }, - "nodeType": "YulFunctionCall", - "src": "9681:22:33" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2776:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2767:3:34" }, + "nodeType": "YulFunctionCall", + "src": "2767:14:34" + }, + "variableNames": [ { - "name": "dataEnd", + "name": "src", "nodeType": "YulIdentifier", - "src": "9705:7:33" + "src": "2760:3:34" } - ], - "functionName": { - "name": "abi_decode_t_uint256", + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2720:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2722:17:34", + "value": { + "name": "offset", "nodeType": "YulIdentifier", - "src": "9660:20:33" + "src": "2733:6:34" }, - "nodeType": "YulFunctionCall", - "src": "9660:53:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "9650:6:33" - } - ] - } - ] - }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2726:3:34", + "type": "" + } + ] + } + ] + }, + "src": "2716:220:34" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2304:6:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2312:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2320:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2328:5:34", + "type": "" + } + ], + "src": "2232:710:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3042:293:34", + "statements": [ { - "nodeType": "YulBlock", - "src": "9733:300:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "9748:46:33", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "3091:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3093:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "3093:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3093:79:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "9779:9:33" + "src": "3070:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "9790:2:33", + "src": "3078:4:34", "type": "", - "value": "64" + "value": "0x1f" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "9775:3:33" + "src": "3066:3:34" }, "nodeType": "YulFunctionCall", - "src": "9775:18:33" + "src": "3066:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3085:3:34" } ], "functionName": { - "name": "calldataload", + "name": "slt", "nodeType": "YulIdentifier", - "src": "9762:12:33" + "src": "3062:3:34" }, "nodeType": "YulFunctionCall", - "src": "9762:32:33" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "9752:6:33", - "type": "" - } - ] + "src": "3062:27:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3055:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "3055:35:34" + }, + "nodeType": "YulIf", + "src": "3052:122:34" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3183:34:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3210:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3197:12:34" }, + "nodeType": "YulFunctionCall", + "src": "3197:20:34" + }, + "variables": [ { - "body": { - "nodeType": "YulBlock", - "src": "9841:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulIdentifier", - "src": "9843:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "9843:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "9843:79:33" - } - ] - }, - "condition": { + "name": "length", + "nodeType": "YulTypedName", + "src": "3187:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3226:103:34", + "value": { + "arguments": [ + { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "9813:6:33" + "src": "3302:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "9821:18:33", + "src": "3310:4:34", "type": "", - "value": "0xffffffffffffffff" + "value": "0x20" } ], "functionName": { - "name": "gt", + "name": "add", "nodeType": "YulIdentifier", - "src": "9810:2:33" + "src": "3298:3:34" }, "nodeType": "YulFunctionCall", - "src": "9810:30:33" + "src": "3298:17:34" }, - "nodeType": "YulIf", - "src": "9807:117:33" + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3317:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3325:3:34" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "3235:62:34" }, + "nodeType": "YulFunctionCall", + "src": "3235:94:34" + }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "9938:85:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "9995:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "10006:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9991:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "9991:22:33" - }, - { - "name": "dataEnd", + "name": "array", + "nodeType": "YulIdentifier", + "src": "3226:5:34" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3020:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3028:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3036:5:34", + "type": "" + } + ], + "src": "2965:370:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3435:229:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3540:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", "nodeType": "YulIdentifier", - "src": "10015:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_struct$_Path_$6660_memory_ptr", - "nodeType": "YulIdentifier", - "src": "9948:42:33" + "src": "3542:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "3542:18:34" }, - "nodeType": "YulFunctionCall", - "src": "9948:75:33" + "nodeType": "YulExpressionStatement", + "src": "3542:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3512:6:34" }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "9938:6:33" - } - ] - } - ] + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3520:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3509:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "3509:30:34" + }, + "nodeType": "YulIf", + "src": "3506:56:34" }, { - "nodeType": "YulBlock", - "src": "10043:126:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "10058:16:33", - "value": { + "nodeType": "YulAssignment", + "src": "3572:25:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3584:6:34" + }, + { "kind": "number", "nodeType": "YulLiteral", - "src": "10072:2:33", + "src": "3592:4:34", "type": "", - "value": "96" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "10062:6:33", - "type": "" - } - ] + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3580:3:34" }, + "nodeType": "YulFunctionCall", + "src": "3580:17:34" + }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "10088:71:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10131:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "10142:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10127:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "10127:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "10151:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_address_payable", - "nodeType": "YulIdentifier", - "src": "10098:28:33" - }, - "nodeType": "YulFunctionCall", - "src": "10098:61:33" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "10088:6:33" - } - ] + "name": "size", + "nodeType": "YulIdentifier", + "src": "3572:4:34" } ] }, { - "nodeType": "YulBlock", - "src": "10179:119:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "10194:17:33", - "value": { + "nodeType": "YulAssignment", + "src": "3634:23:34", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3646:4:34" + }, + { "kind": "number", "nodeType": "YulLiteral", - "src": "10208:3:33", + "src": "3652:4:34", "type": "", - "value": "128" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "10198:6:33", - "type": "" - } - ] + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3642:3:34" }, + "nodeType": "YulFunctionCall", + "src": "3642:15:34" + }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "10225:63:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10260:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "10271:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10256:3:33" + "name": "size", + "nodeType": "YulIdentifier", + "src": "3634:4:34" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3419:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3430:4:34", + "type": "" + } + ], + "src": "3341:323:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3725:56:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3759:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3768:1:34", + "type": "", + "value": "0" }, - "nodeType": "YulFunctionCall", - "src": "10256:22:33" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3771:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3761:6:34" }, + "nodeType": "YulFunctionCall", + "src": "3761:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3761:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ { - "name": "dataEnd", + "name": "value", "nodeType": "YulIdentifier", - "src": "10280:7:33" + "src": "3748:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3755:1:34", + "type": "", + "value": "2" } ], "functionName": { - "name": "abi_decode_t_uint256", + "name": "lt", "nodeType": "YulIdentifier", - "src": "10235:20:33" + "src": "3745:2:34" }, "nodeType": "YulFunctionCall", - "src": "10235:53:33" - }, - "variableNames": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "10225:6:33" - } - ] + "src": "3745:12:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3738:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "3738:20:34" + }, + "nodeType": "YulIf", + "src": "3735:40:34" + } + ] + }, + "name": "validator_revert_t_enum$_Version_$6322", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3718:5:34", + "type": "" + } + ], + "src": "3670:111:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3851:99:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3861:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3883:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3870:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "3870:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3861:5:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3938:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_enum$_Version_$6322", + "nodeType": "YulIdentifier", + "src": "3899:38:34" + }, + "nodeType": "YulFunctionCall", + "src": "3899:45:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3899:45:34" } ] }, - "name": "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6660_memory_ptrt_address_payablet_uint256", + "name": "abi_decode_t_enum$_Version_$6322", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "9276:9:33", + "src": "3829:6:34", "type": "" }, { - "name": "dataEnd", + "name": "end", "nodeType": "YulTypedName", - "src": "9287:7:33", + "src": "3837:3:34", "type": "" } ], "returnVariables": [ { - "name": "value0", - "nodeType": "YulTypedName", - "src": "9299:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "9307:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "9315:6:33", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "9323:6:33", - "type": "" - }, - { - "name": "value4", + "name": "value", "nodeType": "YulTypedName", - "src": "9331:6:33", + "src": "3845:5:34", "type": "" } ], - "src": "9174:1131:33" + "src": "3787:163:34" }, { "body": { "nodeType": "YulBlock", - "src": "10376:53:33", + "src": "4102:632:34", "statements": [ + { + "nodeType": "YulAssignment", + "src": "4112:102:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4206:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "4137:68:34" + }, + "nodeType": "YulFunctionCall", + "src": "4137:76:34" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "4121:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "4121:93:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4112:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4223:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4234:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "4227:3:34", + "type": "" + } + ] + }, { "expression": { "arguments": [ { - "name": "pos", + "name": "array", + "nodeType": "YulIdentifier", + "src": "4256:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4263:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4249:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "4249:21:34" + }, + "nodeType": "YulExpressionStatement", + "src": "4249:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "4279:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4290:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4297:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4286:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4286:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4279:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4312:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4330:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4342:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4350:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4338:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4338:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4326:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4326:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "4316:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4384:103:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "4398:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "4398:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "4398:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4371:6:34" + }, + { + "name": "end", "nodeType": "YulIdentifier", - "src": "10393:3:33" + "src": "4379:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4368:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "4368:15:34" + }, + "nodeType": "YulIf", + "src": "4365:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4572:156:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4587:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4605:3:34" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "4591:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4629:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "4667:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4679:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_enum$_Version_$6322", + "nodeType": "YulIdentifier", + "src": "4634:32:34" + }, + "nodeType": "YulFunctionCall", + "src": "4634:49:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4622:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "4622:62:34" + }, + "nodeType": "YulExpressionStatement", + "src": "4622:62:34" }, { - "arguments": [ + "nodeType": "YulAssignment", + "src": "4697:21:34", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4708:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4713:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4704:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4704:14:34" + }, + "variableNames": [ { - "name": "value", + "name": "dst", "nodeType": "YulIdentifier", - "src": "10416:5:33" + "src": "4697:3:34" } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "10398:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "10398:24:33" + ] } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10386:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "10386:37:33" + ] }, - "nodeType": "YulExpressionStatement", - "src": "10386:37:33" - } - ] - }, - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "10364:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "10371:3:33", - "type": "" - } - ], - "src": "10311:118:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "10533:124:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "10543:26:33", - "value": { + "condition": { "arguments": [ { - "name": "headStart", + "name": "src", "nodeType": "YulIdentifier", - "src": "10555:9:33" + "src": "4525:3:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10566:2:33", - "type": "", - "value": "32" + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4530:6:34" } ], "functionName": { - "name": "add", + "name": "lt", "nodeType": "YulIdentifier", - "src": "10551:3:33" + "src": "4522:2:34" }, "nodeType": "YulFunctionCall", - "src": "10551:18:33" + "src": "4522:15:34" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "10543:4:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "10623:6:33" - }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "4538:25:34", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "nodeType": "YulAssignment", + "src": "4540:21:34", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4551:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4556:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", "nodeType": "YulIdentifier", - "src": "10636:9:33" + "src": "4547:3:34" }, + "nodeType": "YulFunctionCall", + "src": "4547:14:34" + }, + "variableNames": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10647:1:33", - "type": "", - "value": "0" + "name": "src", + "nodeType": "YulIdentifier", + "src": "4540:3:34" } - ], - "functionName": { - "name": "add", + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "4500:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4502:17:34", + "value": { + "name": "offset", "nodeType": "YulIdentifier", - "src": "10632:3:33" + "src": "4513:6:34" }, - "nodeType": "YulFunctionCall", - "src": "10632:17:33" + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "4506:3:34", + "type": "" + } + ] } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "10579:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "10579:71:33" + ] }, - "nodeType": "YulExpressionStatement", - "src": "10579:71:33" + "src": "4496:232:34" } ] }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "name": "abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "10505:9:33", + "src": "4072:6:34", "type": "" }, { - "name": "value0", + "name": "length", + "nodeType": "YulTypedName", + "src": "4080:6:34", + "type": "" + }, + { + "name": "end", "nodeType": "YulTypedName", - "src": "10517:6:33", + "src": "4088:3:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "array", "nodeType": "YulTypedName", - "src": "10528:4:33", + "src": "4096:5:34", "type": "" } ], - "src": "10435:222:33" + "src": "3988:746:34" }, { "body": { "nodeType": "YulBlock", - "src": "10706:79:33", + "src": "4861:305:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "10763:16:33", + "src": "4910:83:34", "statements": [ { "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10772:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10775:1:33", - "type": "", - "value": "0" - } - ], + "arguments": [], "functionName": { - "name": "revert", + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", "nodeType": "YulIdentifier", - "src": "10765:6:33" + "src": "4912:77:34" }, "nodeType": "YulFunctionCall", - "src": "10765:12:33" + "src": "4912:79:34" }, "nodeType": "YulExpressionStatement", - "src": "10765:12:33" + "src": "4912:79:34" } ] }, @@ -9187,1563 +5694,2174 @@ "arguments": [ { "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "10729:5:33" - }, { "arguments": [ { - "name": "value", + "name": "offset", "nodeType": "YulIdentifier", - "src": "10754:5:33" + "src": "4889:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4897:4:34", + "type": "", + "value": "0x1f" } ], "functionName": { - "name": "cleanup_t_address", + "name": "add", "nodeType": "YulIdentifier", - "src": "10736:17:33" + "src": "4885:3:34" }, "nodeType": "YulFunctionCall", - "src": "10736:24:33" + "src": "4885:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4904:3:34" } ], "functionName": { - "name": "eq", + "name": "slt", "nodeType": "YulIdentifier", - "src": "10726:2:33" + "src": "4881:3:34" }, "nodeType": "YulFunctionCall", - "src": "10726:35:33" + "src": "4881:27:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "10719:6:33" + "src": "4874:6:34" }, "nodeType": "YulFunctionCall", - "src": "10719:43:33" + "src": "4874:35:34" }, "nodeType": "YulIf", - "src": "10716:63:33" - } - ] - }, - "name": "validator_revert_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "10699:5:33", - "type": "" - } - ], - "src": "10663:122:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "10843:87:33", - "statements": [ + "src": "4871:122:34" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5002:34:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5029:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5016:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "5016:20:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5006:6:34", + "type": "" + } + ] + }, { "nodeType": "YulAssignment", - "src": "10853:29:33", + "src": "5045:115:34", "value": { "arguments": [ { - "name": "offset", + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5133:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5141:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5129:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "5129:17:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5148:6:34" + }, + { + "name": "end", "nodeType": "YulIdentifier", - "src": "10875:6:33" + "src": "5156:3:34" } ], "functionName": { - "name": "calldataload", + "name": "abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "10862:12:33" + "src": "5054:74:34" }, "nodeType": "YulFunctionCall", - "src": "10862:20:33" + "src": "5054:106:34" }, "variableNames": [ { - "name": "value", + "name": "array", "nodeType": "YulIdentifier", - "src": "10853:5:33" + "src": "5045:5:34" } ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "10918:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_address", - "nodeType": "YulIdentifier", - "src": "10891:26:33" - }, - "nodeType": "YulFunctionCall", - "src": "10891:33:33" - }, - "nodeType": "YulExpressionStatement", - "src": "10891:33:33" } ] }, - "name": "abi_decode_t_address", + "name": "abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "10821:6:33", + "src": "4839:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "10829:3:33", + "src": "4847:3:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "array", "nodeType": "YulTypedName", - "src": "10837:5:33", + "src": "4855:5:34", "type": "" } ], - "src": "10791:139:33" + "src": "4772:394:34" }, { "body": { "nodeType": "YulBlock", - "src": "11075:830:33", + "src": "5268:229:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "11122:83:33", + "src": "5373:22:34", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "name": "panic_error_0x41", "nodeType": "YulIdentifier", - "src": "11124:77:33" + "src": "5375:16:34" }, "nodeType": "YulFunctionCall", - "src": "11124:79:33" + "src": "5375:18:34" }, "nodeType": "YulExpressionStatement", - "src": "11124:79:33" + "src": "5375:18:34" } ] }, "condition": { "arguments": [ { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "11096:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11105:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "11092:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "11092:23:33" + "name": "length", + "nodeType": "YulIdentifier", + "src": "5345:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "11117:3:33", + "src": "5353:18:34", "type": "", - "value": "128" + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "slt", + "name": "gt", "nodeType": "YulIdentifier", - "src": "11088:3:33" + "src": "5342:2:34" }, "nodeType": "YulFunctionCall", - "src": "11088:33:33" + "src": "5342:30:34" }, "nodeType": "YulIf", - "src": "11085:120:33" + "src": "5339:56:34" }, { - "nodeType": "YulBlock", - "src": "11215:117:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "11230:15:33", - "value": { + "nodeType": "YulAssignment", + "src": "5405:25:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5417:6:34" + }, + { "kind": "number", "nodeType": "YulLiteral", - "src": "11244:1:33", + "src": "5425:4:34", "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "11234:6:33", - "type": "" - } - ] + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5413:3:34" }, + "nodeType": "YulFunctionCall", + "src": "5413:17:34" + }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "11259:63:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11294:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "11305:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11290:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "11290:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "11314:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint256", - "nodeType": "YulIdentifier", - "src": "11269:20:33" - }, - "nodeType": "YulFunctionCall", - "src": "11269:53:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "11259:6:33" - } - ] + "name": "size", + "nodeType": "YulIdentifier", + "src": "5405:4:34" } ] }, { - "nodeType": "YulBlock", - "src": "11342:300:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "11357:46:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11388:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11399:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11384:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "11384:18:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "11371:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "11371:32:33" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "11361:6:33", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11450:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulIdentifier", - "src": "11452:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "11452:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "11452:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "11422:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11430:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "11419:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "11419:30:33" - }, - "nodeType": "YulIf", - "src": "11416:117:33" - }, - { - "nodeType": "YulAssignment", - "src": "11547:85:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11604:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "11615:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11600:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "11600:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "11624:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_struct$_Path_$6660_memory_ptr", - "nodeType": "YulIdentifier", - "src": "11557:42:33" - }, - "nodeType": "YulFunctionCall", - "src": "11557:75:33" + "nodeType": "YulAssignment", + "src": "5467:23:34", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5479:4:34" }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "11547:6:33" - } - ] + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5485:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5475:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "5475:15:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5467:4:34" } ] - }, + } + ] + }, + "name": "array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5252:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "5263:4:34", + "type": "" + } + ], + "src": "5172:325:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5548:81:34", + "statements": [ { - "nodeType": "YulBlock", - "src": "11652:118:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "11667:16:33", - "value": { + "nodeType": "YulAssignment", + "src": "5558:65:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5573:5:34" + }, + { "kind": "number", "nodeType": "YulLiteral", - "src": "11681:2:33", + "src": "5580:42:34", "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "11671:6:33", - "type": "" - } - ] + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5569:3:34" }, + "nodeType": "YulFunctionCall", + "src": "5569:54:34" + }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "11697:63:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11732:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "11743:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11728:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "11728:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "11752:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_address", - "nodeType": "YulIdentifier", - "src": "11707:20:33" - }, - "nodeType": "YulFunctionCall", - "src": "11707:53:33" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "11697:6:33" - } - ] + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5558:7:34" } ] - }, + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5530:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5540:7:34", + "type": "" + } + ], + "src": "5503:126:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5680:51:34", + "statements": [ { - "nodeType": "YulBlock", - "src": "11780:118:33", - "statements": [ + "nodeType": "YulAssignment", + "src": "5690:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5719:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "5701:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "5701:24:34" + }, + "variableNames": [ { - "nodeType": "YulVariableDeclaration", - "src": "11795:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11809:2:33", - "type": "", - "value": "96" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "11799:6:33", - "type": "" - } - ] + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5690:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5662:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5672:7:34", + "type": "" + } + ], + "src": "5635:96:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5796:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5806:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5835:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "5817:17:34" }, + "nodeType": "YulFunctionCall", + "src": "5817:24:34" + }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "11825:63:33", - "value": { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5806:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_IERC20_$479", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5778:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5788:7:34", + "type": "" + } + ], + "src": "5737:110:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5910:93:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5981:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5990:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5993:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5983:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "5983:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "5983:12:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5933:5:34" + }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11860:9:33" - }, - { - "name": "offset", + "name": "value", "nodeType": "YulIdentifier", - "src": "11871:6:33" + "src": "5972:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_contract$_IERC20_$479", "nodeType": "YulIdentifier", - "src": "11856:3:33" + "src": "5940:31:34" }, "nodeType": "YulFunctionCall", - "src": "11856:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "11880:7:33" + "src": "5940:38:34" } ], "functionName": { - "name": "abi_decode_t_uint256", + "name": "eq", "nodeType": "YulIdentifier", - "src": "11835:20:33" + "src": "5930:2:34" }, "nodeType": "YulFunctionCall", - "src": "11835:53:33" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "11825:6:33" - } - ] - } - ] + "src": "5930:49:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5923:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "5923:57:34" + }, + "nodeType": "YulIf", + "src": "5920:77:34" } ] }, - "name": "abi_decode_tuple_t_uint256t_struct$_Path_$6660_memory_ptrt_addresst_uint256", + "name": "validator_revert_t_contract$_IERC20_$479", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "11021:9:33", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "11032:7:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "11044:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "11052:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "11060:6:33", - "type": "" - }, - { - "name": "value3", + "name": "value", "nodeType": "YulTypedName", - "src": "11068:6:33", + "src": "5903:5:34", "type": "" } ], - "src": "10936:969:33" + "src": "5853:150:34" }, { "body": { "nodeType": "YulBlock", - "src": "11985:40:33", + "src": "6075:101:34", "statements": [ { "nodeType": "YulAssignment", - "src": "11996:22:33", + "src": "6085:29:34", "value": { "arguments": [ { - "name": "value", + "name": "offset", "nodeType": "YulIdentifier", - "src": "12012:5:33" + "src": "6107:6:34" } ], "functionName": { - "name": "mload", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "12006:5:33" + "src": "6094:12:34" }, "nodeType": "YulFunctionCall", - "src": "12006:12:33" + "src": "6094:20:34" }, "variableNames": [ { - "name": "length", + "name": "value", "nodeType": "YulIdentifier", - "src": "11996:6:33" + "src": "6085:5:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6164:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "6123:40:34" + }, + "nodeType": "YulFunctionCall", + "src": "6123:47:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6123:47:34" } ] }, - "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "name": "abi_decode_t_contract$_IERC20_$479", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "offset", + "nodeType": "YulTypedName", + "src": "6053:6:34", + "type": "" + }, + { + "name": "end", "nodeType": "YulTypedName", - "src": "11968:5:33", + "src": "6061:3:34", "type": "" } ], "returnVariables": [ { - "name": "length", + "name": "value", "nodeType": "YulTypedName", - "src": "11978:6:33", + "src": "6069:5:34", "type": "" } ], - "src": "11911:114:33" + "src": "6009:167:34" }, { "body": { "nodeType": "YulBlock", - "src": "12142:73:33", + "src": "6323:636:34", "statements": [ + { + "nodeType": "YulAssignment", + "src": "6333:104:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6429:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "6358:70:34" + }, + "nodeType": "YulFunctionCall", + "src": "6358:78:34" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6342:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "6342:95:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6333:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6446:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6457:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6450:3:34", + "type": "" + } + ] + }, { "expression": { "arguments": [ { - "name": "pos", + "name": "array", + "nodeType": "YulIdentifier", + "src": "6479:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6486:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6472:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "6472:21:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6472:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "6502:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6513:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6520:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6509:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6509:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6502:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6535:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6553:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6565:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6573:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6561:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6561:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6549:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6549:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "6539:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6607:103:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "6621:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "6621:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6621:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", "nodeType": "YulIdentifier", - "src": "12159:3:33" + "src": "6594:6:34" }, { - "name": "length", + "name": "end", "nodeType": "YulIdentifier", - "src": "12164:6:33" + "src": "6602:3:34" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "12152:6:33" + "src": "6591:2:34" }, "nodeType": "YulFunctionCall", - "src": "12152:19:33" + "src": "6591:15:34" }, - "nodeType": "YulExpressionStatement", - "src": "12152:19:33" + "nodeType": "YulIf", + "src": "6588:122:34" }, { - "nodeType": "YulAssignment", - "src": "12180:29:33", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "6795:158:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6810:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6828:3:34" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "6814:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6852:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "6892:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6904:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "6857:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "6857:51:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6845:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "6845:64:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6845:64:34" + }, + { + "nodeType": "YulAssignment", + "src": "6922:21:34", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6933:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6938:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6929:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6929:14:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6922:3:34" + } + ] + } + ] + }, + "condition": { "arguments": [ { - "name": "pos", + "name": "src", "nodeType": "YulIdentifier", - "src": "12199:3:33" + "src": "6748:3:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12204:4:33", - "type": "", - "value": "0x20" + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "6753:6:34" } ], "functionName": { - "name": "add", + "name": "lt", "nodeType": "YulIdentifier", - "src": "12195:3:33" + "src": "6745:2:34" }, "nodeType": "YulFunctionCall", - "src": "12195:14:33" + "src": "6745:15:34" }, - "variableNames": [ - { - "name": "updated_pos", - "nodeType": "YulIdentifier", - "src": "12180:11:33" - } - ] + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "6761:25:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6763:21:34", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6774:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6779:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6770:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6770:14:34" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6763:3:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "6723:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6725:17:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6736:6:34" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "6729:3:34", + "type": "" + } + ] + } + ] + }, + "src": "6719:234:34" } ] }, - "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "name": "abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", + "name": "offset", "nodeType": "YulTypedName", - "src": "12114:3:33", + "src": "6293:6:34", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "12119:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "updated_pos", - "nodeType": "YulTypedName", - "src": "12130:11:33", + "src": "6301:6:34", "type": "" - } - ], - "src": "12031:184:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "12293:60:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "12303:11:33", - "value": { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "12311:3:33" - }, - "variableNames": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "12303:4:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "12324:22:33", - "value": { - "arguments": [ - { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "12336:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12341:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12332:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "12332:14:33" - }, - "variableNames": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "12324:4:33" - } - ] - } - ] - }, - "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ + }, { - "name": "ptr", + "name": "end", "nodeType": "YulTypedName", - "src": "12280:3:33", + "src": "6309:3:34", "type": "" } ], "returnVariables": [ { - "name": "data", + "name": "array", "nodeType": "YulTypedName", - "src": "12288:4:33", + "src": "6317:5:34", "type": "" } ], - "src": "12221:132:33" + "src": "6207:752:34" }, { "body": { "nodeType": "YulBlock", - "src": "12414:53:33", + "src": "7081:307:34", "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "7130:83:34", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12431:3:33" - }, + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "7132:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "7132:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7132:79:34" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { - "name": "value", + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7109:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7117:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7105:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7105:17:34" + }, + { + "name": "end", "nodeType": "YulIdentifier", - "src": "12454:5:33" + "src": "7124:3:34" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "slt", "nodeType": "YulIdentifier", - "src": "12436:17:33" + "src": "7101:3:34" }, "nodeType": "YulFunctionCall", - "src": "12436:24:33" + "src": "7101:27:34" } ], "functionName": { - "name": "mstore", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "12424:6:33" + "src": "7094:6:34" }, "nodeType": "YulFunctionCall", - "src": "12424:37:33" + "src": "7094:35:34" }, - "nodeType": "YulExpressionStatement", - "src": "12424:37:33" - } - ] - }, - "name": "abi_encode_t_uint256_to_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "12402:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "12409:3:33", - "type": "" - } - ], - "src": "12359:108:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "12553:99:33", - "statements": [ + "nodeType": "YulIf", + "src": "7091:122:34" + }, { - "expression": { + "nodeType": "YulVariableDeclaration", + "src": "7222:34:34", + "value": { "arguments": [ { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "12597:6:33" - }, - { - "name": "pos", + "name": "offset", "nodeType": "YulIdentifier", - "src": "12605:3:33" + "src": "7249:6:34" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "12563:33:33" + "src": "7236:12:34" }, "nodeType": "YulFunctionCall", - "src": "12563:46:33" + "src": "7236:20:34" }, - "nodeType": "YulExpressionStatement", - "src": "12563:46:33" + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "7226:6:34", + "type": "" + } + ] }, { "nodeType": "YulAssignment", - "src": "12618:28:33", + "src": "7265:117:34", "value": { "arguments": [ { - "name": "pos", + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7355:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7363:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7351:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7351:17:34" + }, + { + "name": "length", "nodeType": "YulIdentifier", - "src": "12636:3:33" + "src": "7370:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12641:4:33", - "type": "", - "value": "0x20" + "name": "end", + "nodeType": "YulIdentifier", + "src": "7378:3:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "12632:3:33" + "src": "7274:76:34" }, "nodeType": "YulFunctionCall", - "src": "12632:14:33" + "src": "7274:108:34" }, "variableNames": [ { - "name": "updatedPos", + "name": "array", "nodeType": "YulIdentifier", - "src": "12618:10:33" + "src": "7265:5:34" } ] } ] }, - "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "name": "abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value0", + "name": "offset", "nodeType": "YulTypedName", - "src": "12526:6:33", + "src": "7059:6:34", "type": "" }, { - "name": "pos", + "name": "end", "nodeType": "YulTypedName", - "src": "12534:3:33", + "src": "7067:3:34", "type": "" } ], "returnVariables": [ { - "name": "updatedPos", + "name": "array", "nodeType": "YulTypedName", - "src": "12542:10:33", + "src": "7075:5:34", "type": "" } ], - "src": "12473:179:33" + "src": "6990:398:34" }, { "body": { "nodeType": "YulBlock", - "src": "12733:38:33", + "src": "7500:1253:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "12743:22:33", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "7544:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", + "nodeType": "YulIdentifier", + "src": "7546:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "7546:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7546:79:34" + } + ] + }, + "condition": { "arguments": [ { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "12755:3:33" + "arguments": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7521:3:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7526:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7517:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7517:19:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "12760:4:33", + "src": "7538:4:34", "type": "", - "value": "0x20" + "value": "0x60" } ], "functionName": { - "name": "add", + "name": "slt", "nodeType": "YulIdentifier", - "src": "12751:3:33" + "src": "7513:3:34" }, "nodeType": "YulFunctionCall", - "src": "12751:14:33" + "src": "7513:30:34" }, - "variableNames": [ - { - "name": "next", - "nodeType": "YulIdentifier", - "src": "12743:4:33" - } - ] - } - ] - }, - "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "ptr", - "nodeType": "YulTypedName", - "src": "12720:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "next", - "nodeType": "YulTypedName", - "src": "12728:4:33", - "type": "" - } - ], - "src": "12658:113:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "12931:608:33", - "statements": [ + "nodeType": "YulIf", + "src": "7510:117:34" + }, { - "nodeType": "YulVariableDeclaration", - "src": "12941:68:33", + "nodeType": "YulAssignment", + "src": "7636:30:34", "value": { "arguments": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "13003:5:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "7661:4:34", + "type": "", + "value": "0x60" } ], "functionName": { - "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "name": "allocate_memory", "nodeType": "YulIdentifier", - "src": "12955:47:33" + "src": "7645:15:34" }, "nodeType": "YulFunctionCall", - "src": "12955:54:33" + "src": "7645:21:34" }, - "variables": [ + "variableNames": [ { - "name": "length", - "nodeType": "YulTypedName", - "src": "12945:6:33", - "type": "" + "name": "value", + "nodeType": "YulIdentifier", + "src": "7636:5:34" } ] }, { - "nodeType": "YulAssignment", - "src": "13018:93:33", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13099:3:33" + "nodeType": "YulBlock", + "src": "7676:343:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7719:45:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7750:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7761:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7746:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7746:17:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7733:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "7733:31:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7723:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7811:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulIdentifier", + "src": "7813:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "7813:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7813:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7783:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7791:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7780:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "7780:30:34" }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "13104:6:33" - } - ], - "functionName": { - "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "13025:73:33" - }, - "nodeType": "YulFunctionCall", - "src": "13025:86:33" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13018:3:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "13120:71:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "13185:5:33" - } - ], - "functionName": { - "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", - "nodeType": "YulIdentifier", - "src": "13135:49:33" + "nodeType": "YulIf", + "src": "7777:117:34" }, - "nodeType": "YulFunctionCall", - "src": "13135:56:33" - }, - "variables": [ { - "name": "baseRef", - "nodeType": "YulTypedName", - "src": "13124:7:33", - "type": "" + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7919:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7926:4:34", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7915:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7915:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7983:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7994:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7979:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7979:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8003:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "7933:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "7933:74:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7908:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "7908:100:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7908:100:34" } ] }, { - "nodeType": "YulVariableDeclaration", - "src": "13200:21:33", - "value": { - "name": "baseRef", - "nodeType": "YulIdentifier", - "src": "13214:7:33" - }, - "variables": [ + "nodeType": "YulBlock", + "src": "8029:352:34", + "statements": [ { - "name": "srcPtr", - "nodeType": "YulTypedName", - "src": "13204:6:33", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13290:224:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "13304:34:33", - "value": { - "arguments": [ - { - "name": "srcPtr", + "nodeType": "YulVariableDeclaration", + "src": "8068:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8099:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8110:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", "nodeType": "YulIdentifier", - "src": "13331:6:33" - } - ], - "functionName": { - "name": "mload", + "src": "8095:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8095:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8082:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "8082:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8072:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8161:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulIdentifier", + "src": "8163:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "8163:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8163:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", "nodeType": "YulIdentifier", - "src": "13325:5:33" + "src": "8133:6:34" }, - "nodeType": "YulFunctionCall", - "src": "13325:13:33" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8141:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8130:2:34" }, - "variables": [ + "nodeType": "YulFunctionCall", + "src": "8130:30:34" + }, + "nodeType": "YulIf", + "src": "8127:117:34" + }, + { + "expression": { + "arguments": [ { - "name": "elementValue0", - "nodeType": "YulTypedName", - "src": "13308:13:33", - "type": "" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8269:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8276:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8265:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8265:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8345:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8356:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8341:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8341:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8365:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "8283:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "8283:86:34" } - ] + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8258:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "8258:112:34" }, - { - "nodeType": "YulAssignment", - "src": "13351:70:33", - "value": { - "arguments": [ - { - "name": "elementValue0", + "nodeType": "YulExpressionStatement", + "src": "8258:112:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8391:355:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8431:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8462:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8473:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", "nodeType": "YulIdentifier", - "src": "13402:13:33" + "src": "8458:3:34" }, - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13417:3:33" - } - ], - "functionName": { - "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", - "nodeType": "YulIdentifier", - "src": "13358:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "13358:63:33" + "nodeType": "YulFunctionCall", + "src": "8458:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8445:12:34" }, - "variableNames": [ + "nodeType": "YulFunctionCall", + "src": "8445:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8435:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8524:83:34", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13351:3:33" + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulIdentifier", + "src": "8526:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "8526:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8526:79:34" } ] }, - { - "nodeType": "YulAssignment", - "src": "13434:70:33", - "value": { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "13497:6:33" - } - ], - "functionName": { - "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "condition": { + "arguments": [ + { + "name": "offset", "nodeType": "YulIdentifier", - "src": "13444:52:33" + "src": "8496:6:34" }, - "nodeType": "YulFunctionCall", - "src": "13444:60:33" - }, - "variableNames": [ { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "13434:6:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "8504:18:34", + "type": "", + "value": "0xffffffffffffffff" } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "13252:1:33" + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8493:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "8493:30:34" }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "13255:6:33" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "13249:2:33" + "nodeType": "YulIf", + "src": "8490:117:34" }, - "nodeType": "YulFunctionCall", - "src": "13249:13:33" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "13263:18:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "13265:14:33", - "value": { - "arguments": [ - { - "name": "i", + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8632:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8639:4:34", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", "nodeType": "YulIdentifier", - "src": "13274:1:33" + "src": "8628:3:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13277:1:33", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13270:3:33" + "nodeType": "YulFunctionCall", + "src": "8628:16:34" }, - "nodeType": "YulFunctionCall", - "src": "13270:9:33" - }, - "variableNames": [ { - "name": "i", - "nodeType": "YulIdentifier", - "src": "13265:1:33" + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8710:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8721:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8706:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8706:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8730:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "8646:59:34" + }, + "nodeType": "YulFunctionCall", + "src": "8646:88:34" } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "13234:14:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "13236:10:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13245:1:33", - "type": "", - "value": "0" + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8621:6:34" }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "13240:1:33", - "type": "" - } - ] - } - ] - }, - "src": "13230:284:33" - }, - { - "nodeType": "YulAssignment", - "src": "13523:10:33", - "value": { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13530:3:33" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "13523:3:33" + "nodeType": "YulFunctionCall", + "src": "8621:114:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8621:114:34" } ] } ] }, - "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", "nodeType": "YulTypedName", - "src": "12910:5:33", + "src": "7475:9:34", "type": "" }, { - "name": "pos", + "name": "end", "nodeType": "YulTypedName", - "src": "12917:3:33", + "src": "7486:3:34", "type": "" } ], "returnVariables": [ { - "name": "end", + "name": "value", "nodeType": "YulTypedName", - "src": "12926:3:33", + "src": "7494:5:34", "type": "" } ], - "src": "12807:732:33" + "src": "7423:1330:34" }, { "body": { "nodeType": "YulBlock", - "src": "13693:225:33", + "src": "8812:51:34", "statements": [ { "nodeType": "YulAssignment", - "src": "13703:26:33", + "src": "8822:35:34", "value": { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "13715:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13726:2:33", - "type": "", - "value": "32" + "src": "8851:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint160", "nodeType": "YulIdentifier", - "src": "13711:3:33" + "src": "8833:17:34" }, "nodeType": "YulFunctionCall", - "src": "13711:18:33" + "src": "8833:24:34" }, "variableNames": [ { - "name": "tail", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "13703:4:33" + "src": "8822:7:34" } ] - }, + } + ] + }, + "name": "cleanup_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8794:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "8804:7:34", + "type": "" + } + ], + "src": "8759:104:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8920:87:34", + "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "8985:16:34", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8994:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8997:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", "nodeType": "YulIdentifier", - "src": "13750:9:33" + "src": "8987:6:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13761:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13746:3:33" + "nodeType": "YulFunctionCall", + "src": "8987:12:34" }, - "nodeType": "YulFunctionCall", - "src": "13746:17:33" - }, + "nodeType": "YulExpressionStatement", + "src": "8987:12:34" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "13769:4:33" + "src": "8943:5:34" }, { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13775:9:33" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8976:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address_payable", + "nodeType": "YulIdentifier", + "src": "8950:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "8950:32:34" } ], "functionName": { - "name": "sub", + "name": "eq", "nodeType": "YulIdentifier", - "src": "13765:3:33" + "src": "8940:2:34" }, "nodeType": "YulFunctionCall", - "src": "13765:20:33" + "src": "8940:43:34" } ], "functionName": { - "name": "mstore", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "13739:6:33" + "src": "8933:6:34" }, "nodeType": "YulFunctionCall", - "src": "13739:47:33" + "src": "8933:51:34" }, - "nodeType": "YulExpressionStatement", - "src": "13739:47:33" - }, + "nodeType": "YulIf", + "src": "8930:71:34" + } + ] + }, + "name": "validator_revert_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8913:5:34", + "type": "" + } + ], + "src": "8869:138:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9073:95:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "13795:116:33", + "src": "9083:29:34", "value": { "arguments": [ { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "13897:6:33" - }, - { - "name": "tail", + "name": "offset", "nodeType": "YulIdentifier", - "src": "13906:4:33" + "src": "9105:6:34" } ], "functionName": { - "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "13803:93:33" + "src": "9092:12:34" }, "nodeType": "YulFunctionCall", - "src": "13803:108:33" + "src": "9092:20:34" }, "variableNames": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "13795:4:33" + "src": "9083:5:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9156:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_address_payable", + "nodeType": "YulIdentifier", + "src": "9121:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "9121:41:34" + }, + "nodeType": "YulExpressionStatement", + "src": "9121:41:34" } ] }, - "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "name": "abi_decode_t_address_payable", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "13665:9:33", + "src": "9051:6:34", "type": "" }, { - "name": "value0", + "name": "end", "nodeType": "YulTypedName", - "src": "13677:6:33", + "src": "9059:3:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value", "nodeType": "YulTypedName", - "src": "13688:4:33", + "src": "9067:5:34", "type": "" } ], - "src": "13545:373:33" + "src": "9013:155:34" }, { "body": { "nodeType": "YulBlock", - "src": "14080:959:33", + "src": "9338:967:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "14127:83:33", + "src": "9385:83:34", "statements": [ { "expression": { @@ -10751,13 +7869,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "14129:77:33" + "src": "9387:77:34" }, "nodeType": "YulFunctionCall", - "src": "14129:79:33" + "src": "9387:79:34" }, "nodeType": "YulExpressionStatement", - "src": "14129:79:33" + "src": "9387:79:34" } ] }, @@ -10768,26 +7886,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14101:7:33" + "src": "9359:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14110:9:33" + "src": "9368:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "14097:3:33" + "src": "9355:3:34" }, "nodeType": "YulFunctionCall", - "src": "14097:23:33" + "src": "9355:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "14122:3:33", + "src": "9380:3:34", "type": "", "value": "160" } @@ -10795,25 +7913,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "14093:3:33" + "src": "9351:3:34" }, "nodeType": "YulFunctionCall", - "src": "14093:33:33" + "src": "9351:33:34" }, "nodeType": "YulIf", - "src": "14090:120:33" + "src": "9348:120:34" }, { "nodeType": "YulBlock", - "src": "14220:117:33", + "src": "9478:117:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14235:15:33", + "src": "9493:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14249:1:33", + "src": "9507:1:34", "type": "", "value": "0" }, @@ -10821,14 +7939,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14239:6:33", + "src": "9497:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14264:63:33", + "src": "9522:63:34", "value": { "arguments": [ { @@ -10836,41 +7954,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14299:9:33" + "src": "9557:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14310:6:33" + "src": "9568:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14295:3:33" + "src": "9553:3:34" }, "nodeType": "YulFunctionCall", - "src": "14295:22:33" + "src": "9553:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14319:7:33" + "src": "9577:7:34" } ], "functionName": { "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "14274:20:33" + "src": "9532:20:34" }, "nodeType": "YulFunctionCall", - "src": "14274:53:33" + "src": "9532:53:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "14264:6:33" + "src": "9522:6:34" } ] } @@ -10878,15 +7996,15 @@ }, { "nodeType": "YulBlock", - "src": "14347:118:33", + "src": "9605:118:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14362:16:33", + "src": "9620:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14376:2:33", + "src": "9634:2:34", "type": "", "value": "32" }, @@ -10894,14 +8012,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14366:6:33", + "src": "9624:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14392:63:33", + "src": "9650:63:34", "value": { "arguments": [ { @@ -10909,41 +8027,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14427:9:33" + "src": "9685:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14438:6:33" + "src": "9696:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14423:3:33" + "src": "9681:3:34" }, "nodeType": "YulFunctionCall", - "src": "14423:22:33" + "src": "9681:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14447:7:33" + "src": "9705:7:34" } ], "functionName": { "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "14402:20:33" + "src": "9660:20:34" }, "nodeType": "YulFunctionCall", - "src": "14402:53:33" + "src": "9660:53:34" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "14392:6:33" + "src": "9650:6:34" } ] } @@ -10951,11 +8069,11 @@ }, { "nodeType": "YulBlock", - "src": "14475:300:33", + "src": "9733:300:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14490:46:33", + "src": "9748:46:34", "value": { "arguments": [ { @@ -10963,12 +8081,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14521:9:33" + "src": "9779:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "14532:2:33", + "src": "9790:2:34", "type": "", "value": "64" } @@ -10976,25 +8094,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14517:3:33" + "src": "9775:3:34" }, "nodeType": "YulFunctionCall", - "src": "14517:18:33" + "src": "9775:18:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "14504:12:33" + "src": "9762:12:34" }, "nodeType": "YulFunctionCall", - "src": "14504:32:33" + "src": "9762:32:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "14494:6:33", + "src": "9752:6:34", "type": "" } ] @@ -11002,7 +8120,7 @@ { "body": { "nodeType": "YulBlock", - "src": "14583:83:33", + "src": "9841:83:34", "statements": [ { "expression": { @@ -11010,13 +8128,13 @@ "functionName": { "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulIdentifier", - "src": "14585:77:33" + "src": "9843:77:34" }, "nodeType": "YulFunctionCall", - "src": "14585:79:33" + "src": "9843:79:34" }, "nodeType": "YulExpressionStatement", - "src": "14585:79:33" + "src": "9843:79:34" } ] }, @@ -11025,12 +8143,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "14555:6:33" + "src": "9813:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "14563:18:33", + "src": "9821:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -11038,17 +8156,17 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "14552:2:33" + "src": "9810:2:34" }, "nodeType": "YulFunctionCall", - "src": "14552:30:33" + "src": "9810:30:34" }, "nodeType": "YulIf", - "src": "14549:117:33" + "src": "9807:117:34" }, { "nodeType": "YulAssignment", - "src": "14680:85:33", + "src": "9938:85:34", "value": { "arguments": [ { @@ -11056,41 +8174,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14737:9:33" + "src": "9995:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14748:6:33" + "src": "10006:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14733:3:33" + "src": "9991:3:34" }, "nodeType": "YulFunctionCall", - "src": "14733:22:33" + "src": "9991:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14757:7:33" + "src": "10015:7:34" } ], "functionName": { - "name": "abi_decode_t_struct$_Path_$6660_memory_ptr", + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", "nodeType": "YulIdentifier", - "src": "14690:42:33" + "src": "9948:42:34" }, "nodeType": "YulFunctionCall", - "src": "14690:75:33" + "src": "9948:75:34" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "14680:6:33" + "src": "9938:6:34" } ] } @@ -11098,15 +8216,15 @@ }, { "nodeType": "YulBlock", - "src": "14785:118:33", + "src": "10043:126:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14800:16:33", + "src": "10058:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14814:2:33", + "src": "10072:2:34", "type": "", "value": "96" }, @@ -11114,14 +8232,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14804:6:33", + "src": "10062:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14830:63:33", + "src": "10088:71:34", "value": { "arguments": [ { @@ -11129,41 +8247,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14865:9:33" + "src": "10131:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "14876:6:33" + "src": "10142:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14861:3:33" + "src": "10127:3:34" }, "nodeType": "YulFunctionCall", - "src": "14861:22:33" + "src": "10127:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "14885:7:33" + "src": "10151:7:34" } ], "functionName": { - "name": "abi_decode_t_address", + "name": "abi_decode_t_address_payable", "nodeType": "YulIdentifier", - "src": "14840:20:33" + "src": "10098:28:34" }, "nodeType": "YulFunctionCall", - "src": "14840:53:33" + "src": "10098:61:34" }, "variableNames": [ { "name": "value3", "nodeType": "YulIdentifier", - "src": "14830:6:33" + "src": "10088:6:34" } ] } @@ -11171,15 +8289,15 @@ }, { "nodeType": "YulBlock", - "src": "14913:119:33", + "src": "10179:119:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "14928:17:33", + "src": "10194:17:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "14942:3:33", + "src": "10208:3:34", "type": "", "value": "128" }, @@ -11187,14 +8305,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "14932:6:33", + "src": "10198:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "14959:63:33", + "src": "10225:63:34", "value": { "arguments": [ { @@ -11202,41 +8320,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "14994:9:33" + "src": "10260:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "15005:6:33" + "src": "10271:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "14990:3:33" + "src": "10256:3:34" }, "nodeType": "YulFunctionCall", - "src": "14990:22:33" + "src": "10256:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "15014:7:33" + "src": "10280:7:34" } ], "functionName": { "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "14969:20:33" + "src": "10235:20:34" }, "nodeType": "YulFunctionCall", - "src": "14969:53:33" + "src": "10235:53:34" }, "variableNames": [ { "name": "value4", "nodeType": "YulIdentifier", - "src": "14959:6:33" + "src": "10225:6:34" } ] } @@ -11244,19 +8362,19 @@ } ] }, - "name": "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6660_memory_ptrt_addresst_uint256", + "name": "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_address_payablet_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "14018:9:33", + "src": "9276:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "14029:7:33", + "src": "9287:7:34", "type": "" } ], @@ -11264,360 +8382,337 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "14041:6:33", + "src": "9299:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "14049:6:33", + "src": "9307:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "14057:6:33", + "src": "9315:6:34", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "14065:6:33", + "src": "9323:6:34", "type": "" }, { - "name": "value4", - "nodeType": "YulTypedName", - "src": "14073:6:33", - "type": "" - } - ], - "src": "13924:1115:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15077:28:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "15087:12:33", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "15094:5:33" - }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "15087:3:33" - } - ] - } - ] - }, - "name": "identity", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "15063:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "ret", - "nodeType": "YulTypedName", - "src": "15073:3:33", - "type": "" - } - ], - "src": "15045:60:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15171:82:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "15181:66:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "15239:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint160", - "nodeType": "YulIdentifier", - "src": "15221:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "15221:24:33" - } - ], - "functionName": { - "name": "identity", - "nodeType": "YulIdentifier", - "src": "15212:8:33" - }, - "nodeType": "YulFunctionCall", - "src": "15212:34:33" - } - ], - "functionName": { - "name": "cleanup_t_uint160", - "nodeType": "YulIdentifier", - "src": "15194:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "15194:53:33" - }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "15181:9:33" - } - ] - } - ] - }, - "name": "convert_t_uint160_to_t_uint160", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "15151:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", + "name": "value4", "nodeType": "YulTypedName", - "src": "15161:9:33", + "src": "9331:6:34", "type": "" } ], - "src": "15111:142:33" + "src": "9174:1131:34" }, { "body": { "nodeType": "YulBlock", - "src": "15319:66:33", + "src": "10376:53:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "15329:50:33", - "value": { + "expression": { "arguments": [ { - "name": "value", + "name": "pos", "nodeType": "YulIdentifier", - "src": "15373:5:33" + "src": "10393:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10416:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "10398:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "10398:24:34" } ], "functionName": { - "name": "convert_t_uint160_to_t_uint160", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "15342:30:33" + "src": "10386:6:34" }, "nodeType": "YulFunctionCall", - "src": "15342:37:33" + "src": "10386:37:34" }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "15329:9:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "10386:37:34" } ] }, - "name": "convert_t_uint160_to_t_address", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "15299:5:33", + "src": "10364:5:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "converted", + "name": "pos", "nodeType": "YulTypedName", - "src": "15309:9:33", + "src": "10371:3:34", "type": "" } ], - "src": "15259:126:33" + "src": "10311:118:34" }, { "body": { "nodeType": "YulBlock", - "src": "15470:66:33", + "src": "10533:124:34", "statements": [ { "nodeType": "YulAssignment", - "src": "15480:50:33", + "src": "10543:26:34", "value": { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "15524:5:33" + "src": "10555:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10566:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "convert_t_uint160_to_t_address", + "name": "add", "nodeType": "YulIdentifier", - "src": "15493:30:33" + "src": "10551:3:34" }, "nodeType": "YulFunctionCall", - "src": "15493:37:33" + "src": "10551:18:34" }, "variableNames": [ { - "name": "converted", + "name": "tail", "nodeType": "YulIdentifier", - "src": "15480:9:33" + "src": "10543:4:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10623:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10636:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10647:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10632:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "10632:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "10579:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "10579:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "10579:71:34" } ] }, - "name": "convert_t_contract$_ILBFactory_$4517_to_t_address", + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10505:9:34", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "15450:5:33", + "src": "10517:6:34", "type": "" } ], "returnVariables": [ { - "name": "converted", + "name": "tail", "nodeType": "YulTypedName", - "src": "15460:9:33", + "src": "10528:4:34", "type": "" } ], - "src": "15391:145:33" + "src": "10435:222:34" }, { "body": { "nodeType": "YulBlock", - "src": "15626:85:33", + "src": "10706:79:34", "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "10763:16:34", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "15643:3:33" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10772:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10775:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10765:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "10765:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "10765:12:34" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "15698:5:33" + "src": "10729:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10754:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "10736:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "10736:24:34" } ], "functionName": { - "name": "convert_t_contract$_ILBFactory_$4517_to_t_address", + "name": "eq", "nodeType": "YulIdentifier", - "src": "15648:49:33" + "src": "10726:2:34" }, "nodeType": "YulFunctionCall", - "src": "15648:56:33" + "src": "10726:35:34" } ], "functionName": { - "name": "mstore", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "15636:6:33" + "src": "10719:6:34" }, "nodeType": "YulFunctionCall", - "src": "15636:69:33" + "src": "10719:43:34" }, - "nodeType": "YulExpressionStatement", - "src": "15636:69:33" + "nodeType": "YulIf", + "src": "10716:63:34" } ] }, - "name": "abi_encode_t_contract$_ILBFactory_$4517_to_t_address_fromStack", + "name": "validator_revert_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "15614:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "15621:3:33", + "src": "10699:5:34", "type": "" } ], - "src": "15542:169:33" + "src": "10663:122:34" }, { "body": { "nodeType": "YulBlock", - "src": "15834:143:33", + "src": "10843:87:34", "statements": [ { "nodeType": "YulAssignment", - "src": "15844:26:33", + "src": "10853:29:34", "value": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "15856:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15867:2:33", - "type": "", - "value": "32" + "src": "10875:6:34" } ], "functionName": { - "name": "add", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "15852:3:33" + "src": "10862:12:34" }, "nodeType": "YulFunctionCall", - "src": "15852:18:33" + "src": "10862:20:34" }, "variableNames": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "15844:4:33" + "src": "10853:5:34" } ] }, @@ -11625,82 +8720,59 @@ "expression": { "arguments": [ { - "name": "value0", + "name": "value", "nodeType": "YulIdentifier", - "src": "15943:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15956:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15967:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15952:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "15952:17:33" + "src": "10918:5:34" } ], "functionName": { - "name": "abi_encode_t_contract$_ILBFactory_$4517_to_t_address_fromStack", + "name": "validator_revert_t_address", "nodeType": "YulIdentifier", - "src": "15880:62:33" + "src": "10891:26:34" }, "nodeType": "YulFunctionCall", - "src": "15880:90:33" + "src": "10891:33:34" }, "nodeType": "YulExpressionStatement", - "src": "15880:90:33" + "src": "10891:33:34" } ] }, - "name": "abi_encode_tuple_t_contract$_ILBFactory_$4517__to_t_address__fromStack_reversed", + "name": "abi_decode_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "15806:9:33", + "src": "10821:6:34", "type": "" }, { - "name": "value0", + "name": "end", "nodeType": "YulTypedName", - "src": "15818:6:33", + "src": "10829:3:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value", "nodeType": "YulTypedName", - "src": "15829:4:33", + "src": "10837:5:34", "type": "" } ], - "src": "15717:260:33" + "src": "10791:139:34" }, { "body": { "nodeType": "YulBlock", - "src": "16097:533:33", + "src": "11075:830:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "16143:83:33", + "src": "11122:83:34", "statements": [ { "expression": { @@ -11708,13 +8780,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "16145:77:33" + "src": "11124:77:34" }, "nodeType": "YulFunctionCall", - "src": "16145:79:33" + "src": "11124:79:34" }, "nodeType": "YulExpressionStatement", - "src": "16145:79:33" + "src": "11124:79:34" } ] }, @@ -11725,67 +8797,214 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16118:7:33" + "src": "11096:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11105:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11092:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11092:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11117:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11088:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11088:33:34" + }, + "nodeType": "YulIf", + "src": "11085:120:34" + }, + { + "nodeType": "YulBlock", + "src": "11215:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11230:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11244:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11234:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11259:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11294:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11305:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11290:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11290:22:34" }, { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16127:9:33" + "src": "11314:7:34" } ], "functionName": { - "name": "sub", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "16114:3:33" + "src": "11269:20:34" }, "nodeType": "YulFunctionCall", - "src": "16114:23:33" + "src": "11269:53:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16139:2:33", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "16110:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "16110:32:33" - }, - "nodeType": "YulIf", - "src": "16107:119:33" + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11259:6:34" + } + ] + } + ] }, { "nodeType": "YulBlock", - "src": "16236:131:33", + "src": "11342:300:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "16251:15:33", + "src": "11357:46:34", "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16265:1:33", - "type": "", - "value": "0" + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11388:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11399:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11384:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11384:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11371:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "11371:32:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "16255:6:33", + "src": "11361:6:34", "type": "" } ] }, + { + "body": { + "nodeType": "YulBlock", + "src": "11450:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "11452:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "11452:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "11452:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11422:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11430:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11419:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "11419:30:34" + }, + "nodeType": "YulIf", + "src": "11416:117:34" + }, { "nodeType": "YulAssignment", - "src": "16280:77:33", + "src": "11547:85:34", "value": { "arguments": [ { @@ -11793,41 +9012,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16329:9:33" + "src": "11604:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "16340:6:33" + "src": "11615:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16325:3:33" + "src": "11600:3:34" }, "nodeType": "YulFunctionCall", - "src": "16325:22:33" + "src": "11600:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16349:7:33" + "src": "11624:7:34" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", "nodeType": "YulIdentifier", - "src": "16290:34:33" + "src": "11557:42:34" }, "nodeType": "YulFunctionCall", - "src": "16290:67:33" + "src": "11557:75:34" }, "variableNames": [ { - "name": "value0", + "name": "value1", "nodeType": "YulIdentifier", - "src": "16280:6:33" + "src": "11547:6:34" } ] } @@ -11835,30 +9054,30 @@ }, { "nodeType": "YulBlock", - "src": "16377:118:33", + "src": "11652:118:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "16392:16:33", + "src": "11667:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "16406:2:33", + "src": "11681:2:34", "type": "", - "value": "32" + "value": "64" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "16396:6:33", + "src": "11671:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "16422:63:33", + "src": "11697:63:34", "value": { "arguments": [ { @@ -11866,41 +9085,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16457:9:33" + "src": "11732:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "16468:6:33" + "src": "11743:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16453:3:33" + "src": "11728:3:34" }, "nodeType": "YulFunctionCall", - "src": "16453:22:33" + "src": "11728:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16477:7:33" + "src": "11752:7:34" } ], "functionName": { "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "16432:20:33" + "src": "11707:20:34" }, "nodeType": "YulFunctionCall", - "src": "16432:53:33" + "src": "11707:53:34" }, "variableNames": [ { - "name": "value1", + "name": "value2", "nodeType": "YulIdentifier", - "src": "16422:6:33" + "src": "11697:6:34" } ] } @@ -11908,30 +9127,30 @@ }, { "nodeType": "YulBlock", - "src": "16505:118:33", + "src": "11780:118:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "16520:16:33", + "src": "11795:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "16534:2:33", + "src": "11809:2:34", "type": "", - "value": "64" + "value": "96" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "16524:6:33", + "src": "11799:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "16550:63:33", + "src": "11825:63:34", "value": { "arguments": [ { @@ -11939,41 +9158,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "16585:9:33" + "src": "11860:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "16596:6:33" + "src": "11871:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "16581:3:33" + "src": "11856:3:34" }, "nodeType": "YulFunctionCall", - "src": "16581:22:33" + "src": "11856:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "16605:7:33" + "src": "11880:7:34" } ], "functionName": { "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "16560:20:33" + "src": "11835:20:34" }, "nodeType": "YulFunctionCall", - "src": "16560:53:33" + "src": "11835:53:34" }, "variableNames": [ { - "name": "value2", + "name": "value3", "nodeType": "YulIdentifier", - "src": "16550:6:33" + "src": "11825:6:34" } ] } @@ -11981,19 +9200,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$225t_addresst_uint256", + "name": "abi_decode_tuple_t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "16051:9:33", + "src": "11021:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "16062:7:33", + "src": "11032:7:34", "type": "" } ], @@ -12001,1048 +9220,823 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "16074:6:33", + "src": "11044:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "16082:6:33", + "src": "11052:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "16090:6:33", + "src": "11060:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "11068:6:34", "type": "" } ], - "src": "15983:647:33" + "src": "10936:969:34" }, { "body": { "nodeType": "YulBlock", - "src": "16680:47:33", + "src": "11985:40:34", "statements": [ { "nodeType": "YulAssignment", - "src": "16690:31:33", + "src": "11996:22:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "16705:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16712:8:33", - "type": "", - "value": "0xffffff" + "src": "12012:5:34" } ], "functionName": { - "name": "and", + "name": "mload", "nodeType": "YulIdentifier", - "src": "16701:3:33" + "src": "12006:5:34" }, "nodeType": "YulFunctionCall", - "src": "16701:20:33" + "src": "12006:12:34" }, "variableNames": [ { - "name": "cleaned", + "name": "length", "nodeType": "YulIdentifier", - "src": "16690:7:33" + "src": "11996:6:34" } ] } ] }, - "name": "cleanup_t_uint24", + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "16662:5:33", + "src": "11968:5:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "length", "nodeType": "YulTypedName", - "src": "16672:7:33", + "src": "11978:6:34", "type": "" } ], - "src": "16636:91:33" + "src": "11911:114:34" }, { "body": { "nodeType": "YulBlock", - "src": "16775:78:33", + "src": "12142:73:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "16831:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16840:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16843:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "16833:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "16833:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "16833:12:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "16798:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "16822:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint24", - "nodeType": "YulIdentifier", - "src": "16805:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "16805:23:33" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "16795:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "16795:34:33" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12159:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12164:6:34" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "16788:6:33" + "src": "12152:6:34" }, "nodeType": "YulFunctionCall", - "src": "16788:42:33" + "src": "12152:19:34" }, - "nodeType": "YulIf", - "src": "16785:62:33" - } - ] - }, - "name": "validator_revert_t_uint24", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "16768:5:33", - "type": "" - } - ], - "src": "16733:120:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "16910:86:33", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "12152:19:34" + }, { "nodeType": "YulAssignment", - "src": "16920:29:33", + "src": "12180:29:34", "value": { "arguments": [ { - "name": "offset", + "name": "pos", "nodeType": "YulIdentifier", - "src": "16942:6:33" + "src": "12199:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12204:4:34", + "type": "", + "value": "0x20" } ], "functionName": { - "name": "calldataload", + "name": "add", "nodeType": "YulIdentifier", - "src": "16929:12:33" + "src": "12195:3:34" }, "nodeType": "YulFunctionCall", - "src": "16929:20:33" + "src": "12195:14:34" }, "variableNames": [ { - "name": "value", + "name": "updated_pos", "nodeType": "YulIdentifier", - "src": "16920:5:33" + "src": "12180:11:34" } ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "16984:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_uint24", - "nodeType": "YulIdentifier", - "src": "16958:25:33" - }, - "nodeType": "YulFunctionCall", - "src": "16958:32:33" - }, - "nodeType": "YulExpressionStatement", - "src": "16958:32:33" } ] }, - "name": "abi_decode_t_uint24", + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "pos", "nodeType": "YulTypedName", - "src": "16888:6:33", + "src": "12114:3:34", "type": "" }, { - "name": "end", + "name": "length", "nodeType": "YulTypedName", - "src": "16896:3:33", + "src": "12119:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "updated_pos", "nodeType": "YulTypedName", - "src": "16904:5:33", + "src": "12130:11:34", "type": "" } ], - "src": "16859:137:33" + "src": "12031:184:34" }, { "body": { "nodeType": "YulBlock", - "src": "17046:45:33", + "src": "12293:60:34", "statements": [ { "nodeType": "YulAssignment", - "src": "17056:29:33", + "src": "12303:11:34", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "12311:3:34" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12303:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12324:22:34", "value": { "arguments": [ { - "name": "value", + "name": "ptr", "nodeType": "YulIdentifier", - "src": "17071:5:33" + "src": "12336:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "17078:6:33", + "src": "12341:4:34", "type": "", - "value": "0xffff" + "value": "0x20" } ], "functionName": { - "name": "and", + "name": "add", "nodeType": "YulIdentifier", - "src": "17067:3:33" + "src": "12332:3:34" }, "nodeType": "YulFunctionCall", - "src": "17067:18:33" + "src": "12332:14:34" }, "variableNames": [ { - "name": "cleaned", + "name": "data", "nodeType": "YulIdentifier", - "src": "17056:7:33" + "src": "12324:4:34" } ] } ] }, - "name": "cleanup_t_uint16", + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "ptr", "nodeType": "YulTypedName", - "src": "17028:5:33", + "src": "12280:3:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "data", "nodeType": "YulTypedName", - "src": "17038:7:33", + "src": "12288:4:34", "type": "" } ], - "src": "17002:89:33" + "src": "12221:132:34" }, { "body": { "nodeType": "YulBlock", - "src": "17139:78:33", + "src": "12414:53:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "17195:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17204:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17207:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "17197:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "17197:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "17197:12:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12431:3:34" + }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "17162:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "17186:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint16", - "nodeType": "YulIdentifier", - "src": "17169:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "17169:23:33" + "src": "12454:5:34" } ], "functionName": { - "name": "eq", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "17159:2:33" + "src": "12436:17:34" }, "nodeType": "YulFunctionCall", - "src": "17159:34:33" + "src": "12436:24:34" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "17152:6:33" + "src": "12424:6:34" }, "nodeType": "YulFunctionCall", - "src": "17152:42:33" + "src": "12424:37:34" }, - "nodeType": "YulIf", - "src": "17149:62:33" + "nodeType": "YulExpressionStatement", + "src": "12424:37:34" } ] }, - "name": "validator_revert_t_uint16", + "name": "abi_encode_t_uint256_to_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "17132:5:33", + "src": "12402:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12409:3:34", "type": "" } ], - "src": "17097:120:33" + "src": "12359:108:34" }, { "body": { "nodeType": "YulBlock", - "src": "17274:86:33", + "src": "12553:99:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "17284:29:33", - "value": { + "expression": { "arguments": [ { - "name": "offset", + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12597:6:34" + }, + { + "name": "pos", "nodeType": "YulIdentifier", - "src": "17306:6:33" + "src": "12605:3:34" } ], "functionName": { - "name": "calldataload", + "name": "abi_encode_t_uint256_to_t_uint256", "nodeType": "YulIdentifier", - "src": "17293:12:33" + "src": "12563:33:34" }, "nodeType": "YulFunctionCall", - "src": "17293:20:33" + "src": "12563:46:34" }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "17284:5:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "12563:46:34" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "12618:28:34", + "value": { "arguments": [ { - "name": "value", + "name": "pos", "nodeType": "YulIdentifier", - "src": "17348:5:33" + "src": "12636:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12641:4:34", + "type": "", + "value": "0x20" } ], "functionName": { - "name": "validator_revert_t_uint16", + "name": "add", "nodeType": "YulIdentifier", - "src": "17322:25:33" + "src": "12632:3:34" }, "nodeType": "YulFunctionCall", - "src": "17322:32:33" + "src": "12632:14:34" }, - "nodeType": "YulExpressionStatement", - "src": "17322:32:33" + "variableNames": [ + { + "name": "updatedPos", + "nodeType": "YulIdentifier", + "src": "12618:10:34" + } + ] } ] }, - "name": "abi_decode_t_uint16", + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "value0", "nodeType": "YulTypedName", - "src": "17252:6:33", + "src": "12526:6:34", "type": "" }, { - "name": "end", + "name": "pos", "nodeType": "YulTypedName", - "src": "17260:3:33", + "src": "12534:3:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "updatedPos", "nodeType": "YulTypedName", - "src": "17268:5:33", + "src": "12542:10:34", "type": "" } ], - "src": "17223:137:33" + "src": "12473:179:34" }, { "body": { "nodeType": "YulBlock", - "src": "17509:674:33", + "src": "12733:38:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "17556:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "17558:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "17558:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "17558:79:33" - } - ] - }, - "condition": { + "nodeType": "YulAssignment", + "src": "12743:22:34", + "value": { "arguments": [ { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "17530:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17539:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "17526:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "17526:23:33" + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "12755:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "17551:3:33", + "src": "12760:4:34", "type": "", - "value": "128" + "value": "0x20" } ], "functionName": { - "name": "slt", + "name": "add", "nodeType": "YulIdentifier", - "src": "17522:3:33" + "src": "12751:3:34" }, "nodeType": "YulFunctionCall", - "src": "17522:33:33" + "src": "12751:14:34" }, - "nodeType": "YulIf", - "src": "17519:120:33" - }, - { - "nodeType": "YulBlock", - "src": "17649:131:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "17664:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17678:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "17668:6:33", - "type": "" - } - ] - }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "17693:77:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17742:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "17753:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17738:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "17738:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "17762:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", - "nodeType": "YulIdentifier", - "src": "17703:34:33" - }, - "nodeType": "YulFunctionCall", - "src": "17703:67:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "17693:6:33" - } - ] + "name": "next", + "nodeType": "YulIdentifier", + "src": "12743:4:34" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "12720:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nodeType": "YulTypedName", + "src": "12728:4:34", + "type": "" + } + ], + "src": "12658:113:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12931:608:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12941:68:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13003:5:34" + } + ], + "functionName": { + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "12955:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "12955:54:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "12945:6:34", + "type": "" } ] }, { - "nodeType": "YulBlock", - "src": "17790:132:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "17805:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17819:2:33", - "type": "", - "value": "32" + "nodeType": "YulAssignment", + "src": "13018:93:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13099:3:34" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "17809:6:33", - "type": "" - } - ] + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13104:6:34" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13025:73:34" }, + "nodeType": "YulFunctionCall", + "src": "13025:86:34" + }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "17835:77:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17884:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "17895:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17880:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "17880:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "17904:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", - "nodeType": "YulIdentifier", - "src": "17845:34:33" - }, - "nodeType": "YulFunctionCall", - "src": "17845:67:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "17835:6:33" - } - ] + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13018:3:34" } ] }, { - "nodeType": "YulBlock", - "src": "17932:117:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "17947:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17961:2:33", - "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "17951:6:33", - "type": "" - } - ] + "nodeType": "YulVariableDeclaration", + "src": "13120:71:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13185:5:34" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "13135:49:34" }, + "nodeType": "YulFunctionCall", + "src": "13135:56:34" + }, + "variables": [ { - "nodeType": "YulAssignment", - "src": "17977:62:33", - "value": { - "arguments": [ + "name": "baseRef", + "nodeType": "YulTypedName", + "src": "13124:7:34", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13200:21:34", + "value": { + "name": "baseRef", + "nodeType": "YulIdentifier", + "src": "13214:7:34" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "13204:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13290:224:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13304:34:34", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "13331:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13325:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "13325:13:34" + }, + "variables": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18011:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "18022:6:33" - } - ], - "functionName": { - "name": "add", + "name": "elementValue0", + "nodeType": "YulTypedName", + "src": "13308:13:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13351:70:34", + "value": { + "arguments": [ + { + "name": "elementValue0", "nodeType": "YulIdentifier", - "src": "18007:3:33" + "src": "13402:13:34" }, - "nodeType": "YulFunctionCall", - "src": "18007:22:33" + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13417:3:34" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "13358:43:34" }, + "nodeType": "YulFunctionCall", + "src": "13358:63:34" + }, + "variableNames": [ { - "name": "dataEnd", + "name": "pos", "nodeType": "YulIdentifier", - "src": "18031:7:33" + "src": "13351:3:34" } - ], - "functionName": { - "name": "abi_decode_t_uint24", - "nodeType": "YulIdentifier", - "src": "17987:19:33" - }, - "nodeType": "YulFunctionCall", - "src": "17987:52:33" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "17977:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "18059:117:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "18074:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18088:2:33", - "type": "", - "value": "96" + ] }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "18078:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "18104:62:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18138:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "18149:6:33" - } - ], - "functionName": { - "name": "add", + { + "nodeType": "YulAssignment", + "src": "13434:70:34", + "value": { + "arguments": [ + { + "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "18134:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "18134:22:33" + "src": "13497:6:34" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "13444:52:34" }, + "nodeType": "YulFunctionCall", + "src": "13444:60:34" + }, + "variableNames": [ { - "name": "dataEnd", + "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "18158:7:33" + "src": "13434:6:34" } - ], - "functionName": { - "name": "abi_decode_t_uint16", - "nodeType": "YulIdentifier", - "src": "18114:19:33" - }, - "nodeType": "YulFunctionCall", - "src": "18114:52:33" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "18104:6:33" - } - ] - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_contract$_IERC20_$225t_contract$_IERC20_$225t_uint24t_uint16", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "17455:9:33", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "17466:7:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "17478:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "17486:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "17494:6:33", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "17502:6:33", - "type": "" - } - ], - "src": "17366:817:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18265:66:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "18275:50:33", - "value": { + ] + } + ] + }, + "condition": { "arguments": [ { - "name": "value", + "name": "i", + "nodeType": "YulIdentifier", + "src": "13252:1:34" + }, + { + "name": "length", "nodeType": "YulIdentifier", - "src": "18319:5:33" + "src": "13255:6:34" } ], "functionName": { - "name": "convert_t_uint160_to_t_address", + "name": "lt", "nodeType": "YulIdentifier", - "src": "18288:30:33" + "src": "13249:2:34" }, "nodeType": "YulFunctionCall", - "src": "18288:37:33" + "src": "13249:13:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "13263:18:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13265:14:34", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "13274:1:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13277:1:34", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13270:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "13270:9:34" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "13265:1:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "13234:14:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13236:10:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13245:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "13240:1:34", + "type": "" + } + ] + } + ] + }, + "src": "13230:284:34" + }, + { + "nodeType": "YulAssignment", + "src": "13523:10:34", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13530:3:34" }, "variableNames": [ { - "name": "converted", + "name": "end", "nodeType": "YulIdentifier", - "src": "18275:9:33" + "src": "13523:3:34" } ] } ] }, - "name": "convert_t_contract$_ILBPair_$6473_to_t_address", + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "18245:5:33", + "src": "12910:5:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "converted", + "name": "pos", "nodeType": "YulTypedName", - "src": "18255:9:33", + "src": "12917:3:34", "type": "" } ], - "src": "18189:142:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18418:82:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "18435:3:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "18487:5:33" - } - ], - "functionName": { - "name": "convert_t_contract$_ILBPair_$6473_to_t_address", - "nodeType": "YulIdentifier", - "src": "18440:46:33" - }, - "nodeType": "YulFunctionCall", - "src": "18440:53:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18428:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "18428:66:33" - }, - "nodeType": "YulExpressionStatement", - "src": "18428:66:33" - } - ] - }, - "name": "abi_encode_t_contract$_ILBPair_$6473_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "18406:5:33", - "type": "" - }, + "returnVariables": [ { - "name": "pos", + "name": "end", "nodeType": "YulTypedName", - "src": "18413:3:33", + "src": "12926:3:34", "type": "" } ], - "src": "18337:163:33" + "src": "12807:732:34" }, { "body": { "nodeType": "YulBlock", - "src": "18620:140:33", + "src": "13693:225:34", "statements": [ { "nodeType": "YulAssignment", - "src": "18630:26:33", + "src": "13703:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "18642:9:33" + "src": "13715:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "18653:2:33", + "src": "13726:2:34", "type": "", "value": "32" } @@ -13050,38 +10044,33 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "18638:3:33" + "src": "13711:3:34" }, "nodeType": "YulFunctionCall", - "src": "18638:18:33" + "src": "13711:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "18630:4:33" + "src": "13703:4:34" } ] }, { "expression": { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "18726:6:33" - }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "18739:9:33" + "src": "13750:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "18750:1:33", + "src": "13761:1:34", "type": "", "value": "0" } @@ -13089,510 +10078,672 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "18735:3:33" + "src": "13746:3:34" }, "nodeType": "YulFunctionCall", - "src": "18735:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_contract$_ILBPair_$6473_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "18666:59:33" - }, - "nodeType": "YulFunctionCall", - "src": "18666:87:33" - }, - "nodeType": "YulExpressionStatement", - "src": "18666:87:33" - } - ] - }, - "name": "abi_encode_tuple_t_contract$_ILBPair_$6473__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "18592:9:33", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "18604:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "18615:4:33", - "type": "" - } - ], - "src": "18506:254:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18843:66:33", - "statements": [ + "src": "13746:17:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13769:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13775:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13765:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "13765:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13739:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "13739:47:34" + }, + "nodeType": "YulExpressionStatement", + "src": "13739:47:34" + }, { "nodeType": "YulAssignment", - "src": "18853:50:33", + "src": "13795:116:34", "value": { "arguments": [ { - "name": "value", + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13897:6:34" + }, + { + "name": "tail", "nodeType": "YulIdentifier", - "src": "18897:5:33" + "src": "13906:4:34" } ], "functionName": { - "name": "convert_t_uint160_to_t_address", + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "18866:30:33" + "src": "13803:93:34" }, "nodeType": "YulFunctionCall", - "src": "18866:37:33" + "src": "13803:108:34" }, "variableNames": [ { - "name": "converted", + "name": "tail", "nodeType": "YulIdentifier", - "src": "18853:9:33" + "src": "13795:4:34" } ] } ] }, - "name": "convert_t_contract$_IWNATIVE_$7164_to_t_address", + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", "nodeType": "YulTypedName", - "src": "18823:5:33", + "src": "13665:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13677:6:34", "type": "" } ], "returnVariables": [ { - "name": "converted", + "name": "tail", "nodeType": "YulTypedName", - "src": "18833:9:33", + "src": "13688:4:34", "type": "" } ], - "src": "18766:143:33" + "src": "13545:373:34" }, { "body": { "nodeType": "YulBlock", - "src": "18997:83:33", + "src": "14080:959:34", "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "14127:83:34", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "19014:3:33" - }, + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "14129:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "14129:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "14129:79:34" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { - "name": "value", + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14101:7:34" + }, + { + "name": "headStart", "nodeType": "YulIdentifier", - "src": "19067:5:33" + "src": "14110:9:34" } ], "functionName": { - "name": "convert_t_contract$_IWNATIVE_$7164_to_t_address", + "name": "sub", "nodeType": "YulIdentifier", - "src": "19019:47:33" + "src": "14097:3:34" }, "nodeType": "YulFunctionCall", - "src": "19019:54:33" + "src": "14097:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14122:3:34", + "type": "", + "value": "160" } ], "functionName": { - "name": "mstore", + "name": "slt", "nodeType": "YulIdentifier", - "src": "19007:6:33" + "src": "14093:3:34" }, "nodeType": "YulFunctionCall", - "src": "19007:67:33" + "src": "14093:33:34" }, - "nodeType": "YulExpressionStatement", - "src": "19007:67:33" - } - ] - }, - "name": "abi_encode_t_contract$_IWNATIVE_$7164_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "18985:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "18992:3:33", - "type": "" - } - ], - "src": "18915:165:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19201:141:33", - "statements": [ + "nodeType": "YulIf", + "src": "14090:120:34" + }, { - "nodeType": "YulAssignment", - "src": "19211:26:33", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19223:9:33" + "nodeType": "YulBlock", + "src": "14220:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14235:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14249:1:34", + "type": "", + "value": "0" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14239:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14264:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14299:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14310:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14295:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14295:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14319:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "14274:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "14274:53:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14264:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14347:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14362:16:34", + "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "19234:2:33", + "src": "14376:2:34", "type": "", "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19219:3:33" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14366:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "19219:18:33" - }, - "variableNames": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "19211:4:33" + "nodeType": "YulAssignment", + "src": "14392:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14427:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14438:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14423:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14423:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14447:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "14402:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "14402:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14392:6:34" + } + ] } ] }, { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19308:6:33" + "nodeType": "YulBlock", + "src": "14475:300:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14490:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14521:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14532:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14517:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14517:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "14504:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "14504:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14494:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14583:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "14585:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "14585:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "14585:79:34" + } + ] }, - { + "condition": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "19321:9:33" + "src": "14555:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "19332:1:33", + "src": "14563:18:34", "type": "", - "value": "0" + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "add", + "name": "gt", "nodeType": "YulIdentifier", - "src": "19317:3:33" + "src": "14552:2:34" }, "nodeType": "YulFunctionCall", - "src": "19317:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_contract$_IWNATIVE_$7164_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "19247:60:33" - }, - "nodeType": "YulFunctionCall", - "src": "19247:88:33" - }, - "nodeType": "YulExpressionStatement", - "src": "19247:88:33" - } - ] - }, - "name": "abi_encode_tuple_t_contract$_IWNATIVE_$7164__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "19173:9:33", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "19185:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "19196:4:33", - "type": "" - } - ], - "src": "19086:256:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19433:66:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "19443:50:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "19487:5:33" - } - ], - "functionName": { - "name": "convert_t_uint160_to_t_address", - "nodeType": "YulIdentifier", - "src": "19456:30:33" + "src": "14552:30:34" + }, + "nodeType": "YulIf", + "src": "14549:117:34" }, - "nodeType": "YulFunctionCall", - "src": "19456:37:33" - }, - "variableNames": [ { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "19443:9:33" + "nodeType": "YulAssignment", + "src": "14680:85:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14737:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14748:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14733:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14733:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14757:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", + "nodeType": "YulIdentifier", + "src": "14690:42:34" + }, + "nodeType": "YulFunctionCall", + "src": "14690:75:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14680:6:34" + } + ] } ] - } - ] - }, - "name": "convert_t_contract$_ILBLegacyFactory_$5081_to_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "19413:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", - "nodeType": "YulTypedName", - "src": "19423:9:33", - "type": "" - } - ], - "src": "19348:151:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19595:91:33", - "statements": [ + }, { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "19612:3:33" + "nodeType": "YulBlock", + "src": "14785:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14800:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14814:2:34", + "type": "", + "value": "96" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14804:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14830:63:34", + "value": { "arguments": [ { - "name": "value", + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14865:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14876:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14861:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14861:22:34" + }, + { + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "19673:5:33" + "src": "14885:7:34" } ], "functionName": { - "name": "convert_t_contract$_ILBLegacyFactory_$5081_to_t_address", + "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "19617:55:33" + "src": "14840:20:34" }, "nodeType": "YulFunctionCall", - "src": "19617:62:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19605:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "19605:75:33" - }, - "nodeType": "YulExpressionStatement", - "src": "19605:75:33" - } - ] - }, - "name": "abi_encode_t_contract$_ILBLegacyFactory_$5081_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "19583:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "19590:3:33", - "type": "" - } - ], - "src": "19505:181:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19815:149:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "19825:26:33", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19837:9:33" + "src": "14840:53:34" }, - { + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "14830:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14913:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14928:17:34", + "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "19848:2:33", + "src": "14942:3:34", "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19833:3:33" + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14932:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "19833:18:33" - }, - "variableNames": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "19825:4:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19930:6:33" - }, - { + "nodeType": "YulAssignment", + "src": "14959:63:34", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19943:9:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14994:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15005:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14990:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14990:22:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19954:1:33", - "type": "", - "value": "0" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15014:7:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "19939:3:33" + "src": "14969:20:34" }, "nodeType": "YulFunctionCall", - "src": "19939:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_contract$_ILBLegacyFactory_$5081_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "19861:68:33" - }, - "nodeType": "YulFunctionCall", - "src": "19861:96:33" - }, - "nodeType": "YulExpressionStatement", - "src": "19861:96:33" + "src": "14969:53:34" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "14959:6:34" + } + ] + } + ] } ] }, - "name": "abi_encode_tuple_t_contract$_ILBLegacyFactory_$5081__to_t_address__fromStack_reversed", + "name": "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "19787:9:33", + "src": "14018:9:34", "type": "" }, { - "name": "value0", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "19799:6:33", + "src": "14029:7:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value0", + "nodeType": "YulTypedName", + "src": "14041:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "14049:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "14057:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "14065:6:34", + "type": "" + }, + { + "name": "value4", "nodeType": "YulTypedName", - "src": "19810:4:33", + "src": "14073:6:34", "type": "" } ], - "src": "19692:272:33" + "src": "13924:1115:34" }, { "body": { "nodeType": "YulBlock", - "src": "20226:1555:33", + "src": "15159:533:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "20273:83:33", + "src": "15205:83:34", "statements": [ { "expression": { @@ -13600,13 +10751,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "20275:77:33" + "src": "15207:77:34" }, "nodeType": "YulFunctionCall", - "src": "20275:79:33" + "src": "15207:79:34" }, "nodeType": "YulExpressionStatement", - "src": "20275:79:33" + "src": "15207:79:34" } ] }, @@ -13617,52 +10768,52 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "20247:7:33" + "src": "15180:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "20256:9:33" + "src": "15189:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "20243:3:33" + "src": "15176:3:34" }, "nodeType": "YulFunctionCall", - "src": "20243:23:33" + "src": "15176:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "20268:3:33", + "src": "15201:2:34", "type": "", - "value": "256" + "value": "96" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "20239:3:33" + "src": "15172:3:34" }, "nodeType": "YulFunctionCall", - "src": "20239:33:33" + "src": "15172:32:34" }, "nodeType": "YulIf", - "src": "20236:120:33" + "src": "15169:119:34" }, { "nodeType": "YulBlock", - "src": "20366:131:33", + "src": "15298:131:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "20381:15:33", + "src": "15313:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "20395:1:33", + "src": "15327:1:34", "type": "", "value": "0" }, @@ -13670,14 +10821,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "20385:6:33", + "src": "15317:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "20410:77:33", + "src": "15342:77:34", "value": { "arguments": [ { @@ -13685,41 +10836,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "20459:9:33" + "src": "15391:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "20470:6:33" + "src": "15402:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20455:3:33" + "src": "15387:3:34" }, "nodeType": "YulFunctionCall", - "src": "20455:22:33" + "src": "15387:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "20479:7:33" + "src": "15411:7:34" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", + "name": "abi_decode_t_contract$_IERC20_$479", "nodeType": "YulIdentifier", - "src": "20420:34:33" + "src": "15352:34:34" }, "nodeType": "YulFunctionCall", - "src": "20420:67:33" + "src": "15352:67:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "20410:6:33" + "src": "15342:6:34" } ] } @@ -13727,15 +10878,15 @@ }, { "nodeType": "YulBlock", - "src": "20507:117:33", + "src": "15439:118:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "20522:16:33", + "src": "15454:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "20536:2:33", + "src": "15468:2:34", "type": "", "value": "32" }, @@ -13743,14 +10894,87 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "20526:6:33", + "src": "15458:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15484:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15519:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15530:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15515:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15515:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15539:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "15494:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "15494:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15484:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "15567:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15582:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15596:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15586:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "20552:62:33", + "src": "15612:63:34", "value": { "arguments": [ { @@ -13758,292 +10982,664 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "20586:9:33" + "src": "15647:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "20597:6:33" + "src": "15658:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "20582:3:33" + "src": "15643:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15643:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15667:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "15622:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "15622:53:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15612:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15113:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15124:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15136:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "15144:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "15152:6:34", + "type": "" + } + ], + "src": "15045:647:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15742:47:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15752:31:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15767:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15774:8:34", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15763:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15763:20:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "15752:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15724:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "15734:7:34", + "type": "" + } + ], + "src": "15698:91:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15837:78:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15893:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15902:1:34", + "type": "", + "value": "0" }, - "nodeType": "YulFunctionCall", - "src": "20582:22:33" - }, - { - "name": "dataEnd", + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15905:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", "nodeType": "YulIdentifier", - "src": "20606:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint16", - "nodeType": "YulIdentifier", - "src": "20562:19:33" + "src": "15895:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "15895:12:34" }, - "nodeType": "YulFunctionCall", - "src": "20562:52:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "20552:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "20634:118:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "20649:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20663:2:33", - "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "20653:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "20679:63:33", - "value": { + "nodeType": "YulExpressionStatement", + "src": "15895:12:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15860:5:34" + }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "20714:9:33" - }, - { - "name": "offset", + "name": "value", "nodeType": "YulIdentifier", - "src": "20725:6:33" + "src": "15884:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint24", "nodeType": "YulIdentifier", - "src": "20710:3:33" + "src": "15867:16:34" }, "nodeType": "YulFunctionCall", - "src": "20710:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "20734:7:33" + "src": "15867:23:34" } ], "functionName": { - "name": "abi_decode_t_uint256", + "name": "eq", "nodeType": "YulIdentifier", - "src": "20689:20:33" + "src": "15857:2:34" }, "nodeType": "YulFunctionCall", - "src": "20689:53:33" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "20679:6:33" - } - ] + "src": "15857:34:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15850:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "15850:42:34" + }, + "nodeType": "YulIf", + "src": "15847:62:34" + } + ] + }, + "name": "validator_revert_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15830:5:34", + "type": "" + } + ], + "src": "15795:120:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15972:86:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15982:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16004:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15991:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "15991:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15982:5:34" } ] }, { - "nodeType": "YulBlock", - "src": "20762:118:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "20777:16:33", - "value": { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16046:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint24", + "nodeType": "YulIdentifier", + "src": "16020:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "16020:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16020:32:34" + } + ] + }, + "name": "abi_decode_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15950:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15958:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15966:5:34", + "type": "" + } + ], + "src": "15921:137:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16108:45:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16118:29:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16133:5:34" + }, + { "kind": "number", "nodeType": "YulLiteral", - "src": "20791:2:33", + "src": "16140:6:34", "type": "", - "value": "96" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "20781:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "20807:63:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "20842:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "20853:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20838:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "20838:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "20862:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint256", - "nodeType": "YulIdentifier", - "src": "20817:20:33" - }, - "nodeType": "YulFunctionCall", - "src": "20817:53:33" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "20807:6:33" - } - ] + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16129:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "16129:18:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "16118:7:34" } ] - }, + } + ] + }, + "name": "cleanup_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16090:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "16100:7:34", + "type": "" + } + ], + "src": "16064:89:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16201:78:34", + "statements": [ { - "nodeType": "YulBlock", - "src": "20890:304:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "20905:47:33", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "16257:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16266:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16269:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16259:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "16259:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16259:12:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16224:5:34" + }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "20936:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20947:3:33", - "type": "", - "value": "128" + "src": "16248:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint16", "nodeType": "YulIdentifier", - "src": "20932:3:33" + "src": "16231:16:34" }, "nodeType": "YulFunctionCall", - "src": "20932:19:33" + "src": "16231:23:34" } ], "functionName": { - "name": "calldataload", + "name": "eq", "nodeType": "YulIdentifier", - "src": "20919:12:33" + "src": "16221:2:34" }, "nodeType": "YulFunctionCall", - "src": "20919:33:33" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "20909:6:33", - "type": "" - } - ] + "src": "16221:34:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16214:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "16214:42:34" + }, + "nodeType": "YulIf", + "src": "16211:62:34" + } + ] + }, + "name": "validator_revert_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16194:5:34", + "type": "" + } + ], + "src": "16159:120:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16336:86:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16346:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16368:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "16355:12:34" }, + "nodeType": "YulFunctionCall", + "src": "16355:20:34" + }, + "variableNames": [ { - "body": { - "nodeType": "YulBlock", - "src": "20999:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulIdentifier", - "src": "21001:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "21001:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "21001:79:33" - } - ] - }, - "condition": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16346:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16410:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "16384:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "16384:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16384:32:34" + } + ] + }, + "name": "abi_decode_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16314:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "16322:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16330:5:34", + "type": "" + } + ], + "src": "16285:137:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16571:674:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16618:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "16620:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "16620:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16620:79:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ { - "name": "offset", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "20971:6:33" + "src": "16592:7:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20979:18:33", - "type": "", - "value": "0xffffffffffffffff" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16601:9:34" } ], "functionName": { - "name": "gt", + "name": "sub", "nodeType": "YulIdentifier", - "src": "20968:2:33" + "src": "16588:3:34" }, "nodeType": "YulFunctionCall", - "src": "20968:30:33" + "src": "16588:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16613:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "16584:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "16584:33:34" + }, + "nodeType": "YulIf", + "src": "16581:120:34" + }, + { + "nodeType": "YulBlock", + "src": "16711:131:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16726:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16740:1:34", + "type": "", + "value": "0" }, - "nodeType": "YulIf", - "src": "20965:117:33" + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16730:6:34", + "type": "" + } + ] }, { "nodeType": "YulAssignment", - "src": "21096:88:33", + "src": "16755:77:34", "value": { "arguments": [ { @@ -14051,41 +11647,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "21156:9:33" + "src": "16804:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "21167:6:33" + "src": "16815:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21152:3:33" + "src": "16800:3:34" }, "nodeType": "YulFunctionCall", - "src": "21152:22:33" + "src": "16800:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "21176:7:33" + "src": "16824:7:34" } ], "functionName": { - "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "name": "abi_decode_t_contract$_IERC20_$479", "nodeType": "YulIdentifier", - "src": "21106:45:33" + "src": "16765:34:34" }, "nodeType": "YulFunctionCall", - "src": "21106:78:33" + "src": "16765:67:34" }, "variableNames": [ { - "name": "value4", + "name": "value0", "nodeType": "YulIdentifier", - "src": "21096:6:33" + "src": "16755:6:34" } ] } @@ -14093,104 +11689,30 @@ }, { "nodeType": "YulBlock", - "src": "21204:304:33", + "src": "16852:132:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "21219:47:33", + "src": "16867:16:34", "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "21250:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "21261:3:33", - "type": "", - "value": "160" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "21246:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "21246:19:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "21233:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "21233:33:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "16881:2:34", + "type": "", + "value": "32" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "21223:6:33", + "src": "16871:6:34", "type": "" } ] }, - { - "body": { - "nodeType": "YulBlock", - "src": "21313:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulIdentifier", - "src": "21315:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "21315:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "21315:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "21285:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "21293:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "21282:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "21282:30:33" - }, - "nodeType": "YulIf", - "src": "21279:117:33" - }, { "nodeType": "YulAssignment", - "src": "21410:88:33", + "src": "16897:77:34", "value": { "arguments": [ { @@ -14198,41 +11720,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "21470:9:33" + "src": "16946:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "21481:6:33" + "src": "16957:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21466:3:33" + "src": "16942:3:34" }, "nodeType": "YulFunctionCall", - "src": "21466:22:33" + "src": "16942:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "21490:7:33" + "src": "16966:7:34" } ], "functionName": { - "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "name": "abi_decode_t_contract$_IERC20_$479", "nodeType": "YulIdentifier", - "src": "21420:45:33" + "src": "16907:34:34" }, "nodeType": "YulFunctionCall", - "src": "21420:78:33" + "src": "16907:67:34" }, "variableNames": [ { - "name": "value5", + "name": "value1", "nodeType": "YulIdentifier", - "src": "21410:6:33" + "src": "16897:6:34" } ] } @@ -14240,30 +11762,30 @@ }, { "nodeType": "YulBlock", - "src": "21518:127:33", + "src": "16994:117:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "21533:17:33", + "src": "17009:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "21547:3:33", + "src": "17023:2:34", "type": "", - "value": "192" + "value": "64" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "21537:6:33", + "src": "17013:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "21564:71:33", + "src": "17039:62:34", "value": { "arguments": [ { @@ -14271,41 +11793,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "21607:9:33" + "src": "17073:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "21618:6:33" + "src": "17084:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21603:3:33" + "src": "17069:3:34" }, "nodeType": "YulFunctionCall", - "src": "21603:22:33" + "src": "17069:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "21627:7:33" + "src": "17093:7:34" } ], "functionName": { - "name": "abi_decode_t_address_payable", + "name": "abi_decode_t_uint24", "nodeType": "YulIdentifier", - "src": "21574:28:33" + "src": "17049:19:34" }, "nodeType": "YulFunctionCall", - "src": "21574:61:33" + "src": "17049:52:34" }, "variableNames": [ { - "name": "value6", + "name": "value2", "nodeType": "YulIdentifier", - "src": "21564:6:33" + "src": "17039:6:34" } ] } @@ -14313,30 +11835,30 @@ }, { "nodeType": "YulBlock", - "src": "21655:119:33", + "src": "17121:117:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "21670:17:33", + "src": "17136:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "21684:3:33", + "src": "17150:2:34", "type": "", - "value": "224" + "value": "96" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "21674:6:33", + "src": "17140:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "21701:63:33", + "src": "17166:62:34", "value": { "arguments": [ { @@ -14344,41 +11866,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "21736:9:33" + "src": "17200:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "21747:6:33" + "src": "17211:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21732:3:33" + "src": "17196:3:34" }, "nodeType": "YulFunctionCall", - "src": "21732:22:33" + "src": "17196:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "21756:7:33" + "src": "17220:7:34" } ], "functionName": { - "name": "abi_decode_t_uint256", + "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "21711:20:33" + "src": "17176:19:34" }, "nodeType": "YulFunctionCall", - "src": "21711:53:33" + "src": "17176:52:34" }, "variableNames": [ { - "name": "value7", + "name": "value3", "nodeType": "YulIdentifier", - "src": "21701:6:33" + "src": "17166:6:34" } ] } @@ -14386,110 +11908,374 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$225t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256", + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint24t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16517:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "16528:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16540:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16548:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "16556:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "16564:6:34", + "type": "" + } + ], + "src": "16428:817:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17283:28:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17293:12:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17300:5:34" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "17293:3:34" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17269:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "17279:3:34", + "type": "" + } + ], + "src": "17251:60:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17377:82:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17387:66:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17445:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "17427:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "17427:24:34" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "17418:8:34" + }, + "nodeType": "YulFunctionCall", + "src": "17418:34:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "17400:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "17400:53:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "17387:9:34" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17357:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "17367:9:34", + "type": "" + } + ], + "src": "17317:142:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17525:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17535:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17579:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulIdentifier", + "src": "17548:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "17548:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "17535:9:34" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "20140:9:33", - "type": "" - }, - { - "name": "dataEnd", + "name": "value", "nodeType": "YulTypedName", - "src": "20151:7:33", + "src": "17505:5:34", "type": "" } ], "returnVariables": [ { - "name": "value0", - "nodeType": "YulTypedName", - "src": "20163:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "20171:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "20179:6:33", - "type": "" - }, - { - "name": "value3", + "name": "converted", "nodeType": "YulTypedName", - "src": "20187:6:33", + "src": "17515:9:34", "type": "" - }, + } + ], + "src": "17465:126:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17673:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17683:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17727:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "17696:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "17696:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "17683:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_ILBPair_$6187_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "name": "value4", + "name": "value", "nodeType": "YulTypedName", - "src": "20195:6:33", + "src": "17653:5:34", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "value5", + "name": "converted", "nodeType": "YulTypedName", - "src": "20203:6:33", + "src": "17663:9:34", "type": "" - }, + } + ], + "src": "17597:142:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17826:82:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17843:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17895:5:34" + } + ], + "functionName": { + "name": "convert_t_contract$_ILBPair_$6187_to_t_address", + "nodeType": "YulIdentifier", + "src": "17848:46:34" + }, + "nodeType": "YulFunctionCall", + "src": "17848:53:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17836:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "17836:66:34" + }, + "nodeType": "YulExpressionStatement", + "src": "17836:66:34" + } + ] + }, + "name": "abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "name": "value6", + "name": "value", "nodeType": "YulTypedName", - "src": "20211:6:33", + "src": "17814:5:34", "type": "" }, { - "name": "value7", + "name": "pos", "nodeType": "YulTypedName", - "src": "20219:6:33", + "src": "17821:3:34", "type": "" } ], - "src": "19970:1811:33" + "src": "17745:163:34" }, { "body": { "nodeType": "YulBlock", - "src": "21913:206:33", + "src": "18028:140:34", "statements": [ { "nodeType": "YulAssignment", - "src": "21923:26:33", + "src": "18038:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "21935:9:33" + "src": "18050:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "21946:2:33", + "src": "18061:2:34", "type": "", - "value": "64" + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "21931:3:33" + "src": "18046:3:34" }, "nodeType": "YulFunctionCall", - "src": "21931:18:33" + "src": "18046:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "21923:4:33" + "src": "18038:4:34" } ] }, @@ -14499,19 +12285,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "22003:6:33" + "src": "18134:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "22016:9:33" + "src": "18147:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "22027:1:33", + "src": "18158:1:34", "type": "", "value": "0" } @@ -14519,87 +12305,263 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "22012:3:33" + "src": "18143:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "18143:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "18074:59:34" + }, + "nodeType": "YulFunctionCall", + "src": "18074:87:34" + }, + "nodeType": "YulExpressionStatement", + "src": "18074:87:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_ILBPair_$6187__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18000:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18012:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18023:4:34", + "type": "" + } + ], + "src": "17914:254:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18251:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18261:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18305:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "18274:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "18274:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "18261:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_IWNATIVE_$7175_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18231:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "18241:9:34", + "type": "" + } + ], + "src": "18174:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18405:83:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18422:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18475:5:34" + } + ], + "functionName": { + "name": "convert_t_contract$_IWNATIVE_$7175_to_t_address", + "nodeType": "YulIdentifier", + "src": "18427:47:34" }, "nodeType": "YulFunctionCall", - "src": "22012:17:33" + "src": "18427:54:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18415:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "18415:67:34" + }, + "nodeType": "YulExpressionStatement", + "src": "18415:67:34" + } + ] + }, + "name": "abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18393:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "18400:3:34", + "type": "" + } + ], + "src": "18323:165:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18609:141:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18619:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18631:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18642:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "add", "nodeType": "YulIdentifier", - "src": "21959:43:33" + "src": "18627:3:34" }, "nodeType": "YulFunctionCall", - "src": "21959:71:33" + "src": "18627:18:34" }, - "nodeType": "YulExpressionStatement", - "src": "21959:71:33" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18619:4:34" + } + ] }, { "expression": { "arguments": [ { - "name": "value1", + "name": "value0", "nodeType": "YulIdentifier", - "src": "22084:6:33" + "src": "18716:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "22097:9:33" + "src": "18729:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "22108:2:33", + "src": "18740:1:34", "type": "", - "value": "32" + "value": "0" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "22093:3:33" + "src": "18725:3:34" }, "nodeType": "YulFunctionCall", - "src": "22093:18:33" + "src": "18725:17:34" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "22040:43:33" + "src": "18655:60:34" }, "nodeType": "YulFunctionCall", - "src": "22040:72:33" + "src": "18655:88:34" }, "nodeType": "YulExpressionStatement", - "src": "22040:72:33" + "src": "18655:88:34" } ] }, - "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "name": "abi_encode_tuple_t_contract$_IWNATIVE_$7175__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "21877:9:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "21889:6:33", + "src": "18581:9:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "21897:6:33", + "src": "18593:6:34", "type": "" } ], @@ -14607,75 +12569,35 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "21908:4:33", + "src": "18604:4:34", "type": "" } ], - "src": "21787:332:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "22214:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "22231:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "22234:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "22224:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "22224:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "22224:12:33" - } - ] - }, - "name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", - "nodeType": "YulFunctionDefinition", - "src": "22125:117:33" + "src": "18494:256:34" }, { "body": { "nodeType": "YulBlock", - "src": "22383:153:33", + "src": "19012:1555:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "22423:83:33", + "src": "19059:83:34", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "22425:77:33" + "src": "19061:77:34" }, "nodeType": "YulFunctionCall", - "src": "22425:79:33" + "src": "19061:79:34" }, "nodeType": "YulExpressionStatement", - "src": "22425:79:33" + "src": "19061:79:34" } ] }, @@ -14684,162 +12606,342 @@ { "arguments": [ { - "name": "end", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "22404:3:33" + "src": "19033:7:34" }, { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "22409:6:33" + "src": "19042:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "22400:3:33" + "src": "19029:3:34" }, "nodeType": "YulFunctionCall", - "src": "22400:16:33" + "src": "19029:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "22418:3:33", + "src": "19054:3:34", "type": "", - "value": "480" + "value": "256" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "22396:3:33" + "src": "19025:3:34" }, "nodeType": "YulFunctionCall", - "src": "22396:26:33" + "src": "19025:33:34" }, "nodeType": "YulIf", - "src": "22393:113:33" + "src": "19022:120:34" }, { - "nodeType": "YulAssignment", - "src": "22515:15:33", - "value": { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "22524:6:33" - }, - "variableNames": [ + "nodeType": "YulBlock", + "src": "19152:131:34", + "statements": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "22515:5:33" + "nodeType": "YulVariableDeclaration", + "src": "19167:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19181:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19171:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19196:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19245:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19256:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19241:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19241:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19265:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "19206:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "19206:67:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19196:6:34" + } + ] } ] - } - ] - }, - "name": "abi_decode_t_struct$_LiquidityParameters_$6647_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "22361:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "22369:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "22377:5:33", - "type": "" - } - ], - "src": "22292:244:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "22647:462:33", - "statements": [ + }, { - "body": { - "nodeType": "YulBlock", - "src": "22693:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "22695:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "22695:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "22695:79:33" - } - ] - }, - "condition": { - "arguments": [ - { + "nodeType": "YulBlock", + "src": "19293:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19308:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19322:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19312:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19338:62:34", + "value": { "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19372:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19383:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19368:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19368:22:34" + }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "22668:7:33" + "src": "19392:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "19348:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "19348:52:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "19338:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "19420:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19435:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19449:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19439:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19465:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19500:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19511:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19496:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19496:22:34" }, { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "22677:9:33" + "src": "19520:7:34" } ], "functionName": { - "name": "sub", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "22664:3:33" + "src": "19475:20:34" }, "nodeType": "YulFunctionCall", - "src": "22664:23:33" + "src": "19475:53:34" }, - { + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "19465:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "19548:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19563:16:34", + "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "22689:2:33", + "src": "19577:2:34", "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "22660:3:33" + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19567:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "22660:32:33" - }, - "nodeType": "YulIf", - "src": "22657:119:33" + { + "nodeType": "YulAssignment", + "src": "19593:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19628:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19639:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19624:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19624:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19648:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "19603:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "19603:53:34" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "19593:6:34" + } + ] + } + ] }, { "nodeType": "YulBlock", - "src": "22786:316:33", + "src": "19676:304:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "22801:45:33", + "src": "19691:47:34", "value": { "arguments": [ { @@ -14847,38 +12949,38 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "22832:9:33" + "src": "19722:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "22843:1:33", + "src": "19733:3:34", "type": "", - "value": "0" + "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "22828:3:33" + "src": "19718:3:34" }, "nodeType": "YulFunctionCall", - "src": "22828:17:33" + "src": "19718:19:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "22815:12:33" + "src": "19705:12:34" }, "nodeType": "YulFunctionCall", - "src": "22815:31:33" + "src": "19705:33:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "22805:6:33", + "src": "19695:6:34", "type": "" } ] @@ -14886,7 +12988,7 @@ { "body": { "nodeType": "YulBlock", - "src": "22893:83:33", + "src": "19785:83:34", "statements": [ { "expression": { @@ -14894,13 +12996,13 @@ "functionName": { "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulIdentifier", - "src": "22895:77:33" + "src": "19787:77:34" }, "nodeType": "YulFunctionCall", - "src": "22895:79:33" + "src": "19787:79:34" }, "nodeType": "YulExpressionStatement", - "src": "22895:79:33" + "src": "19787:79:34" } ] }, @@ -14909,12 +13011,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "22865:6:33" + "src": "19757:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "22873:18:33", + "src": "19765:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -14922,17 +13024,17 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "22862:2:33" + "src": "19754:2:34" }, "nodeType": "YulFunctionCall", - "src": "22862:30:33" + "src": "19754:30:34" }, "nodeType": "YulIf", - "src": "22859:117:33" + "src": "19751:117:34" }, { "nodeType": "YulAssignment", - "src": "22990:102:33", + "src": "19882:88:34", "value": { "arguments": [ { @@ -14940,951 +13042,719 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "23064:9:33" + "src": "19942:9:34" }, { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "23075:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "23060:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "23060:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "23084:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_struct$_LiquidityParameters_$6647_calldata_ptr", - "nodeType": "YulIdentifier", - "src": "23000:59:33" - }, - "nodeType": "YulFunctionCall", - "src": "23000:92:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "22990:6:33" - } - ] - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_struct$_LiquidityParameters_$6647_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "22617:9:33", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "22628:7:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "22640:6:33", - "type": "" - } - ], - "src": "22542:567:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "23453:739:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "23463:27:33", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "23475:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "23486:3:33", - "type": "", - "value": "192" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "23471:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "23471:19:33" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "23463:4:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "23544:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "23557:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "23568:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "23553:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "23553:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "23500:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "23500:71:33" - }, - "nodeType": "YulExpressionStatement", - "src": "23500:71:33" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "23625:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "23638:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "23649:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "23634:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "23634:18:33" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "23581:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "23581:72:33" - }, - "nodeType": "YulExpressionStatement", - "src": "23581:72:33" - }, - { - "expression": { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "23707:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "23720:9:33" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19953:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19938:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19938:22:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "23731:2:33", - "type": "", - "value": "64" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19962:7:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "23716:3:33" + "src": "19892:45:34" }, "nodeType": "YulFunctionCall", - "src": "23716:18:33" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "23663:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "23663:72:33" - }, - "nodeType": "YulExpressionStatement", - "src": "23663:72:33" + "src": "19892:78:34" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "19882:6:34" + } + ] + } + ] }, { - "expression": { - "arguments": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "23789:6:33" - }, - { + "nodeType": "YulBlock", + "src": "19990:304:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20005:47:34", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "23802:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "23813:2:33", - "type": "", - "value": "96" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20036:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20047:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20032:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20032:19:34" } ], "functionName": { - "name": "add", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "23798:3:33" + "src": "20019:12:34" }, "nodeType": "YulFunctionCall", - "src": "23798:18:33" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "23745:43:33" + "src": "20019:33:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20009:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "23745:72:33" - }, - "nodeType": "YulExpressionStatement", - "src": "23745:72:33" - }, - { - "expression": { - "arguments": [ - { + { + "body": { + "nodeType": "YulBlock", + "src": "20099:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "20101:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "20101:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "20101:79:34" + } + ] + }, + "condition": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "23838:9:33" + "src": "20071:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "23849:3:33", + "src": "20079:18:34", "type": "", - "value": "128" + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "add", + "name": "gt", "nodeType": "YulIdentifier", - "src": "23834:3:33" + "src": "20068:2:34" }, "nodeType": "YulFunctionCall", - "src": "23834:19:33" + "src": "20068:30:34" }, - { + "nodeType": "YulIf", + "src": "20065:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "20196:88:34", + "value": { "arguments": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "23859:4:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20256:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20267:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20252:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20252:22:34" }, { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "23865:9:33" + "src": "20276:7:34" } ], "functionName": { - "name": "sub", + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "23855:3:33" + "src": "20206:45:34" }, "nodeType": "YulFunctionCall", - "src": "23855:20:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "23827:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "23827:49:33" - }, - "nodeType": "YulExpressionStatement", - "src": "23827:49:33" - }, - { - "nodeType": "YulAssignment", - "src": "23885:116:33", - "value": { - "arguments": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "23987:6:33" + "src": "20206:78:34" }, - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "23996:4:33" - } - ], - "functionName": { - "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "23893:93:33" - }, - "nodeType": "YulFunctionCall", - "src": "23893:108:33" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "23885:4:33" + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "20196:6:34" + } + ] } ] }, { - "expression": { - "arguments": [ - { + "nodeType": "YulBlock", + "src": "20304:127:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20319:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20333:3:34", + "type": "", + "value": "192" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20323:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20350:71:34", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "24022:9:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20393:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20404:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20389:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20389:22:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "24033:3:33", - "type": "", - "value": "160" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "20413:7:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_address_payable", "nodeType": "YulIdentifier", - "src": "24018:3:33" + "src": "20360:28:34" }, "nodeType": "YulFunctionCall", - "src": "24018:19:33" + "src": "20360:61:34" }, - { + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "20350:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20441:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20456:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20470:3:34", + "type": "", + "value": "224" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20460:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20487:63:34", + "value": { "arguments": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "24043:4:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20522:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20533:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20518:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20518:22:34" }, { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "24049:9:33" + "src": "20542:7:34" } ], "functionName": { - "name": "sub", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "24039:3:33" + "src": "20497:20:34" }, "nodeType": "YulFunctionCall", - "src": "24039:20:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "24011:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "24011:49:33" - }, - "nodeType": "YulExpressionStatement", - "src": "24011:49:33" - }, - { - "nodeType": "YulAssignment", - "src": "24069:116:33", - "value": { - "arguments": [ - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "24171:6:33" + "src": "20497:53:34" }, - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "24180:4:33" - } - ], - "functionName": { - "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "24077:93:33" - }, - "nodeType": "YulFunctionCall", - "src": "24077:108:33" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "24069:4:33" + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "20487:6:34" + } + ] } ] } ] }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "23385:9:33", + "src": "18926:9:34", "type": "" }, { - "name": "value5", + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "18937:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", "nodeType": "YulTypedName", - "src": "23397:6:33", + "src": "18949:6:34", "type": "" }, { - "name": "value4", + "name": "value1", "nodeType": "YulTypedName", - "src": "23405:6:33", + "src": "18957:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "18965:6:34", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "23413:6:33", + "src": "18973:6:34", "type": "" }, { - "name": "value2", + "name": "value4", "nodeType": "YulTypedName", - "src": "23421:6:33", + "src": "18981:6:34", "type": "" }, { - "name": "value1", + "name": "value5", "nodeType": "YulTypedName", - "src": "23429:6:33", + "src": "18989:6:34", "type": "" }, { - "name": "value0", + "name": "value6", "nodeType": "YulTypedName", - "src": "23437:6:33", + "src": "18997:6:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "tail", + "name": "value7", "nodeType": "YulTypedName", - "src": "23448:4:33", + "src": "19005:6:34", "type": "" } ], - "src": "23115:1077:33" + "src": "18756:1811:34" }, { "body": { "nodeType": "YulBlock", - "src": "24259:51:33", + "src": "20699:206:34", "statements": [ { "nodeType": "YulAssignment", - "src": "24269:35:33", + "src": "20709:26:34", "value": { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "24298:5:33" + "src": "20721:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20732:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "cleanup_t_address", + "name": "add", "nodeType": "YulIdentifier", - "src": "24280:17:33" + "src": "20717:3:34" }, "nodeType": "YulFunctionCall", - "src": "24280:24:33" + "src": "20717:18:34" }, "variableNames": [ { - "name": "cleaned", + "name": "tail", "nodeType": "YulIdentifier", - "src": "24269:7:33" + "src": "20709:4:34" } ] - } - ] - }, - "name": "cleanup_t_contract$_ILBPair_$6473", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "24241:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "24251:7:33", - "type": "" - } - ], - "src": "24198:112:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "24375:95:33", - "statements": [ + }, { - "body": { - "nodeType": "YulBlock", - "src": "24448:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "24457:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "24460:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "24450:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "24450:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "24450:12:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "20789:6:34" + }, { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "24398:5:33" + "src": "20802:9:34" }, { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "24439:5:33" - } - ], - "functionName": { - "name": "cleanup_t_contract$_ILBPair_$6473", - "nodeType": "YulIdentifier", - "src": "24405:33:33" - }, - "nodeType": "YulFunctionCall", - "src": "24405:40:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "20813:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "eq", + "name": "add", "nodeType": "YulIdentifier", - "src": "24395:2:33" + "src": "20798:3:34" }, "nodeType": "YulFunctionCall", - "src": "24395:51:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "24388:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "24388:59:33" - }, - "nodeType": "YulIf", - "src": "24385:79:33" - } - ] - }, - "name": "validator_revert_t_contract$_ILBPair_$6473", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "24368:5:33", - "type": "" - } - ], - "src": "24316:154:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "24544:103:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "24554:29:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "24576:6:33" + "src": "20798:17:34" } ], "functionName": { - "name": "calldataload", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "24563:12:33" + "src": "20745:43:34" }, "nodeType": "YulFunctionCall", - "src": "24563:20:33" + "src": "20745:71:34" }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "24554:5:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "20745:71:34" }, { "expression": { "arguments": [ { - "name": "value", + "name": "value1", "nodeType": "YulIdentifier", - "src": "24635:5:33" + "src": "20870:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20883:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20894:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20879:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20879:18:34" } ], "functionName": { - "name": "validator_revert_t_contract$_ILBPair_$6473", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "24592:42:33" + "src": "20826:43:34" }, "nodeType": "YulFunctionCall", - "src": "24592:49:33" + "src": "20826:72:34" }, "nodeType": "YulExpressionStatement", - "src": "24592:49:33" + "src": "20826:72:34" } ] }, - "name": "abi_decode_t_contract$_ILBPair_$6473", + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20663:9:34", + "type": "" + }, + { + "name": "value1", "nodeType": "YulTypedName", - "src": "24522:6:33", + "src": "20675:6:34", "type": "" }, { - "name": "end", + "name": "value0", "nodeType": "YulTypedName", - "src": "24530:3:33", + "src": "20683:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "tail", "nodeType": "YulTypedName", - "src": "24538:5:33", + "src": "20694:4:34", "type": "" } ], - "src": "24476:171:33" + "src": "20573:332:34" }, { "body": { "nodeType": "YulBlock", - "src": "24698:73:33", + "src": "20990:66:34", "statements": [ { "nodeType": "YulAssignment", - "src": "24708:57:33", + "src": "21000:50:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "24723:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "24730:34:33", - "type": "", - "value": "0xffffffffffffffffffffffffffffffff" + "src": "21044:5:34" } ], "functionName": { - "name": "and", + "name": "convert_t_uint160_to_t_address", "nodeType": "YulIdentifier", - "src": "24719:3:33" + "src": "21013:30:34" }, "nodeType": "YulFunctionCall", - "src": "24719:46:33" + "src": "21013:37:34" }, "variableNames": [ { - "name": "cleaned", + "name": "converted", "nodeType": "YulIdentifier", - "src": "24708:7:33" + "src": "21000:9:34" } ] } ] }, - "name": "cleanup_t_uint128", + "name": "convert_t_contract$_ILBFactory_$4236_to_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "24680:5:33", + "src": "20970:5:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "converted", "nodeType": "YulTypedName", - "src": "24690:7:33", + "src": "20980:9:34", "type": "" } ], - "src": "24653:118:33" + "src": "20911:145:34" }, { "body": { "nodeType": "YulBlock", - "src": "24820:79:33", + "src": "21146:85:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "24877:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "24886:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "24889:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "24879:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "24879:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "24879:12:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21163:3:34" + }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "24843:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "24868:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint128", - "nodeType": "YulIdentifier", - "src": "24850:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "24850:24:33" + "src": "21218:5:34" } ], "functionName": { - "name": "eq", + "name": "convert_t_contract$_ILBFactory_$4236_to_t_address", "nodeType": "YulIdentifier", - "src": "24840:2:33" + "src": "21168:49:34" }, "nodeType": "YulFunctionCall", - "src": "24840:35:33" + "src": "21168:56:34" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "24833:6:33" + "src": "21156:6:34" }, "nodeType": "YulFunctionCall", - "src": "24833:43:33" + "src": "21156:69:34" }, - "nodeType": "YulIf", - "src": "24830:63:33" + "nodeType": "YulExpressionStatement", + "src": "21156:69:34" } ] }, - "name": "validator_revert_t_uint128", + "name": "abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "24813:5:33", + "src": "21134:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "21141:3:34", "type": "" } ], - "src": "24777:122:33" + "src": "21062:169:34" }, { "body": { "nodeType": "YulBlock", - "src": "24957:87:33", + "src": "21354:143:34", "statements": [ { "nodeType": "YulAssignment", - "src": "24967:29:33", + "src": "21364:26:34", "value": { "arguments": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "24989:6:33" + "src": "21376:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21387:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "calldataload", + "name": "add", "nodeType": "YulIdentifier", - "src": "24976:12:33" + "src": "21372:3:34" }, "nodeType": "YulFunctionCall", - "src": "24976:20:33" + "src": "21372:18:34" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "24967:5:33" + "src": "21364:4:34" } ] }, @@ -15892,153 +13762,136 @@ "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "25032:5:33" + "src": "21463:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21476:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21487:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21472:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "21472:17:34" } ], "functionName": { - "name": "validator_revert_t_uint128", + "name": "abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "25005:26:33" + "src": "21400:62:34" }, "nodeType": "YulFunctionCall", - "src": "25005:33:33" + "src": "21400:90:34" }, "nodeType": "YulExpressionStatement", - "src": "25005:33:33" + "src": "21400:90:34" } ] }, - "name": "abi_decode_t_uint128", + "name": "abi_encode_tuple_t_contract$_ILBFactory_$4236__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulTypedName", - "src": "24935:6:33", + "src": "21326:9:34", "type": "" }, { - "name": "end", + "name": "value0", "nodeType": "YulTypedName", - "src": "24943:3:33", + "src": "21338:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "tail", "nodeType": "YulTypedName", - "src": "24951:5:33", + "src": "21349:4:34", "type": "" } ], - "src": "24905:139:33" + "src": "21237:260:34" }, { "body": { "nodeType": "YulBlock", - "src": "25092:48:33", + "src": "21592:28:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "25102:32:33", - "value": { + "expression": { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "25127:5:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "25120:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "25120:13:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "21609:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21612:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "iszero", + "name": "revert", "nodeType": "YulIdentifier", - "src": "25113:6:33" + "src": "21602:6:34" }, "nodeType": "YulFunctionCall", - "src": "25113:21:33" + "src": "21602:12:34" }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "25102:7:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "21602:12:34" } ] }, - "name": "cleanup_t_bool", + "name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "25074:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "25084:7:33", - "type": "" - } - ], - "src": "25050:90:33" + "src": "21503:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "25186:76:33", + "src": "21761:153:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "25240:16:33", + "src": "21801:83:34", "statements": [ { "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "25249:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "25252:1:33", - "type": "", - "value": "0" - } - ], + "arguments": [], "functionName": { - "name": "revert", + "name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", "nodeType": "YulIdentifier", - "src": "25242:6:33" + "src": "21803:77:34" }, "nodeType": "YulFunctionCall", - "src": "25242:12:33" + "src": "21803:79:34" }, "nodeType": "YulExpressionStatement", - "src": "25242:12:33" + "src": "21803:79:34" } ] }, @@ -16047,128 +13900,74 @@ { "arguments": [ { - "name": "value", + "name": "end", "nodeType": "YulIdentifier", - "src": "25209:5:33" + "src": "21782:3:34" }, { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "25231:5:33" - } - ], - "functionName": { - "name": "cleanup_t_bool", - "nodeType": "YulIdentifier", - "src": "25216:14:33" - }, - "nodeType": "YulFunctionCall", - "src": "25216:21:33" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "21787:6:34" } ], "functionName": { - "name": "eq", + "name": "sub", "nodeType": "YulIdentifier", - "src": "25206:2:33" + "src": "21778:3:34" }, "nodeType": "YulFunctionCall", - "src": "25206:32:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "25199:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "25199:40:33" - }, - "nodeType": "YulIf", - "src": "25196:60:33" - } - ] - }, - "name": "validator_revert_t_bool", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "25179:5:33", - "type": "" - } - ], - "src": "25146:116:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "25317:84:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "25327:29:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "25349:6:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "25336:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "25336:20:33" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "25327:5:33" - } - ] - }, - { - "expression": { - "arguments": [ + "src": "21778:16:34" + }, { - "name": "value", - "nodeType": "YulIdentifier", - "src": "25389:5:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "21796:3:34", + "type": "", + "value": "480" } ], "functionName": { - "name": "validator_revert_t_bool", + "name": "slt", "nodeType": "YulIdentifier", - "src": "25365:23:33" + "src": "21774:3:34" }, "nodeType": "YulFunctionCall", - "src": "25365:30:33" + "src": "21774:26:34" }, - "nodeType": "YulExpressionStatement", - "src": "25365:30:33" + "nodeType": "YulIf", + "src": "21771:113:34" + }, + { + "nodeType": "YulAssignment", + "src": "21893:15:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "21902:6:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21893:5:34" + } + ] } ] }, - "name": "abi_decode_t_bool", + "name": "abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "25295:6:33", + "src": "21739:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "25303:3:33", + "src": "21747:3:34", "type": "" } ], @@ -16176,21 +13975,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "25311:5:33", + "src": "21755:5:34", "type": "" } ], - "src": "25268:133:33" + "src": "21670:244:34" }, { "body": { "nodeType": "YulBlock", - "src": "25520:532:33", + "src": "22025:462:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "25566:83:33", + "src": "22071:83:34", "statements": [ { "expression": { @@ -16198,13 +13997,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "25568:77:33" + "src": "22073:77:34" }, "nodeType": "YulFunctionCall", - "src": "25568:79:33" + "src": "22073:79:34" }, "nodeType": "YulExpressionStatement", - "src": "25568:79:33" + "src": "22073:79:34" } ] }, @@ -16215,67 +14014,48 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "25541:7:33" + "src": "22046:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "25550:9:33" + "src": "22055:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "25537:3:33" + "src": "22042:3:34" }, "nodeType": "YulFunctionCall", - "src": "25537:23:33" + "src": "22042:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "25562:2:33", + "src": "22067:2:34", "type": "", - "value": "96" + "value": "32" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "25533:3:33" + "src": "22038:3:34" }, "nodeType": "YulFunctionCall", - "src": "25533:32:33" + "src": "22038:32:34" }, "nodeType": "YulIf", - "src": "25530:119:33" + "src": "22035:119:34" }, { "nodeType": "YulBlock", - "src": "25659:133:33", + "src": "22164:316:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "25674:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "25688:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "25678:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "25703:79:33", + "src": "22179:45:34", "value": { "arguments": [ { @@ -16283,145 +14063,92 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "25754:9:33" + "src": "22210:9:34" }, { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "25765:6:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "22221:1:34", + "type": "", + "value": "0" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "25750:3:33" + "src": "22206:3:34" }, "nodeType": "YulFunctionCall", - "src": "25750:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "25774:7:33" + "src": "22206:17:34" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBPair_$6473", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "25713:36:33" + "src": "22193:12:34" }, "nodeType": "YulFunctionCall", - "src": "25713:69:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "25703:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "25802:118:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "25817:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "25831:2:33", - "type": "", - "value": "32" + "src": "22193:31:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "25821:6:33", + "src": "22183:6:34", "type": "" } ] }, { - "nodeType": "YulAssignment", - "src": "25847:63:33", - "value": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "22271:83:34", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulIdentifier", - "src": "25882:9:33" + "src": "22273:77:34" }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "25893:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "25878:3:33" + "nodeType": "YulFunctionCall", + "src": "22273:79:34" }, - "nodeType": "YulFunctionCall", - "src": "25878:22:33" - }, + "nodeType": "YulExpressionStatement", + "src": "22273:79:34" + } + ] + }, + "condition": { + "arguments": [ { - "name": "dataEnd", + "name": "offset", "nodeType": "YulIdentifier", - "src": "25902:7:33" + "src": "22243:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22251:18:34", + "type": "", + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "abi_decode_t_uint128", + "name": "gt", "nodeType": "YulIdentifier", - "src": "25857:20:33" + "src": "22240:2:34" }, "nodeType": "YulFunctionCall", - "src": "25857:53:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "25847:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "25930:115:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "25945:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "25959:2:33", - "type": "", - "value": "64" + "src": "22240:30:34" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "25949:6:33", - "type": "" - } - ] + "nodeType": "YulIf", + "src": "22237:117:34" }, { "nodeType": "YulAssignment", - "src": "25975:60:33", + "src": "22368:102:34", "value": { "arguments": [ { @@ -16429,41 +14156,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26007:9:33" + "src": "22442:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "26018:6:33" + "src": "22453:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26003:3:33" + "src": "22438:3:34" }, "nodeType": "YulFunctionCall", - "src": "26003:22:33" + "src": "22438:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "26027:7:33" + "src": "22462:7:34" } ], "functionName": { - "name": "abi_decode_t_bool", + "name": "abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr", "nodeType": "YulIdentifier", - "src": "25985:17:33" + "src": "22378:59:34" }, "nodeType": "YulFunctionCall", - "src": "25985:50:33" + "src": "22378:92:34" }, "variableNames": [ { - "name": "value2", + "name": "value0", "nodeType": "YulIdentifier", - "src": "25975:6:33" + "src": "22368:6:34" } ] } @@ -16471,19 +14198,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_ILBPair_$6473t_uint128t_bool", + "name": "abi_decode_tuple_t_struct$_LiquidityParameters_$6359_calldata_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "25474:9:33", + "src": "21995:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "25485:7:33", + "src": "22006:7:34", "type": "" } ], @@ -16491,121 +14218,48 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "25497:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "25505:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "25513:6:33", - "type": "" - } - ], - "src": "25407:645:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "26123:53:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "26140:3:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "26163:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint128", - "nodeType": "YulIdentifier", - "src": "26145:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "26145:24:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "26133:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "26133:37:33" - }, - "nodeType": "YulExpressionStatement", - "src": "26133:37:33" - } - ] - }, - "name": "abi_encode_t_uint128_to_t_uint128_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "26111:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "26118:3:33", + "src": "22018:6:34", "type": "" } ], - "src": "26058:118:33" + "src": "21920:567:34" }, { "body": { "nodeType": "YulBlock", - "src": "26336:288:33", + "src": "22831:739:34", "statements": [ { "nodeType": "YulAssignment", - "src": "26346:26:33", + "src": "22841:27:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26358:9:33" + "src": "22853:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26369:2:33", + "src": "22864:3:34", "type": "", - "value": "96" + "value": "192" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26354:3:33" + "src": "22849:3:34" }, "nodeType": "YulFunctionCall", - "src": "26354:18:33" + "src": "22849:19:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "26346:4:33" + "src": "22841:4:34" } ] }, @@ -16615,19 +14269,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "26426:6:33" + "src": "22922:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26439:9:33" + "src": "22935:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26450:1:33", + "src": "22946:1:34", "type": "", "value": "0" } @@ -16635,22 +14289,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26435:3:33" + "src": "22931:3:34" }, "nodeType": "YulFunctionCall", - "src": "26435:17:33" + "src": "22931:17:34" } ], "functionName": { - "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26382:43:33" + "src": "22878:43:34" }, "nodeType": "YulFunctionCall", - "src": "26382:71:33" + "src": "22878:71:34" }, "nodeType": "YulExpressionStatement", - "src": "26382:71:33" + "src": "22878:71:34" }, { "expression": { @@ -16658,19 +14312,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "26507:6:33" + "src": "23003:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26520:9:33" + "src": "23016:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26531:2:33", + "src": "23027:2:34", "type": "", "value": "32" } @@ -16678,22 +14332,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26516:3:33" + "src": "23012:3:34" }, "nodeType": "YulFunctionCall", - "src": "26516:18:33" + "src": "23012:18:34" } ], "functionName": { - "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26463:43:33" + "src": "22959:43:34" }, "nodeType": "YulFunctionCall", - "src": "26463:72:33" + "src": "22959:72:34" }, "nodeType": "YulExpressionStatement", - "src": "26463:72:33" + "src": "22959:72:34" }, { "expression": { @@ -16701,19 +14355,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "26589:6:33" + "src": "23085:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "26602:9:33" + "src": "23098:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "26613:2:33", + "src": "23109:2:34", "type": "", "value": "64" } @@ -16721,275 +14375,293 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "26598:3:33" + "src": "23094:3:34" }, "nodeType": "YulFunctionCall", - "src": "26598:18:33" + "src": "23094:18:34" } ], "functionName": { - "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26545:43:33" + "src": "23041:43:34" }, "nodeType": "YulFunctionCall", - "src": "26545:72:33" + "src": "23041:72:34" }, "nodeType": "YulExpressionStatement", - "src": "26545:72:33" - } - ] - }, - "name": "abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "26292:9:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "26304:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "26312:6:33", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "26320:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "26331:4:33", - "type": "" - } - ], - "src": "26182:442:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "26714:66:33", - "statements": [ + "src": "23041:72:34" + }, { - "nodeType": "YulAssignment", - "src": "26724:50:33", - "value": { + "expression": { "arguments": [ { - "name": "value", + "name": "value3", "nodeType": "YulIdentifier", - "src": "26768:5:33" + "src": "23167:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23180:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23191:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23176:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23176:18:34" } ], "functionName": { - "name": "convert_t_uint160_to_t_address", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "26737:30:33" + "src": "23123:43:34" }, "nodeType": "YulFunctionCall", - "src": "26737:37:33" + "src": "23123:72:34" }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "26724:9:33" - } - ] - } - ] - }, - "name": "convert_t_contract$_ILBLegacyRouter_$5906_to_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "26694:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", - "nodeType": "YulTypedName", - "src": "26704:9:33", - "type": "" - } - ], - "src": "26630:150:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "26875:90:33", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "23123:72:34" + }, { "expression": { "arguments": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "26892:3:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23216:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23227:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23212:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23212:19:34" }, { "arguments": [ { - "name": "value", + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23237:4:34" + }, + { + "name": "headStart", "nodeType": "YulIdentifier", - "src": "26952:5:33" + "src": "23243:9:34" } ], "functionName": { - "name": "convert_t_contract$_ILBLegacyRouter_$5906_to_t_address", + "name": "sub", "nodeType": "YulIdentifier", - "src": "26897:54:33" + "src": "23233:3:34" }, "nodeType": "YulFunctionCall", - "src": "26897:61:33" + "src": "23233:20:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "26885:6:33" + "src": "23205:6:34" }, "nodeType": "YulFunctionCall", - "src": "26885:74:33" + "src": "23205:49:34" }, "nodeType": "YulExpressionStatement", - "src": "26885:74:33" - } - ] - }, - "name": "abi_encode_t_contract$_ILBLegacyRouter_$5906_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "26863:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "26870:3:33", - "type": "" - } - ], - "src": "26786:179:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "27093:148:33", - "statements": [ + "src": "23205:49:34" + }, { "nodeType": "YulAssignment", - "src": "27103:26:33", + "src": "23263:116:34", "value": { "arguments": [ { - "name": "headStart", + "name": "value4", "nodeType": "YulIdentifier", - "src": "27115:9:33" + "src": "23365:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "27126:2:33", - "type": "", - "value": "32" + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23374:4:34" } ], "functionName": { - "name": "add", + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "27111:3:33" + "src": "23271:93:34" }, "nodeType": "YulFunctionCall", - "src": "27111:18:33" + "src": "23271:108:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "27103:4:33" + "src": "23263:4:34" } ] }, { "expression": { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "27207:6:33" - }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "27220:9:33" + "src": "23400:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "27231:1:33", + "src": "23411:3:34", "type": "", - "value": "0" + "value": "160" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "27216:3:33" + "src": "23396:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23396:19:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23421:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23427:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "23417:3:34" }, "nodeType": "YulFunctionCall", - "src": "27216:17:33" + "src": "23417:20:34" } ], "functionName": { - "name": "abi_encode_t_contract$_ILBLegacyRouter_$5906_to_t_address_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "27139:67:33" + "src": "23389:6:34" }, "nodeType": "YulFunctionCall", - "src": "27139:95:33" + "src": "23389:49:34" }, "nodeType": "YulExpressionStatement", - "src": "27139:95:33" + "src": "23389:49:34" + }, + { + "nodeType": "YulAssignment", + "src": "23447:116:34", + "value": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "23549:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23558:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "23455:93:34" + }, + "nodeType": "YulFunctionCall", + "src": "23455:108:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23447:4:34" + } + ] } ] }, - "name": "abi_encode_tuple_t_contract$_ILBLegacyRouter_$5906__to_t_address__fromStack_reversed", + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "27065:9:33", + "src": "22763:9:34", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "22775:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "22783:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "22791:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "22799:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "22807:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "27077:6:33", + "src": "22815:6:34", "type": "" } ], @@ -16997,163 +14669,196 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "27088:4:33", + "src": "22826:4:34", "type": "" } ], - "src": "26971:270:33" + "src": "22493:1077:34" }, { "body": { "nodeType": "YulBlock", - "src": "27327:66:33", + "src": "23637:51:34", "statements": [ { "nodeType": "YulAssignment", - "src": "27337:50:33", + "src": "23647:35:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "27381:5:33" + "src": "23676:5:34" } ], "functionName": { - "name": "convert_t_uint160_to_t_address", + "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "27350:30:33" + "src": "23658:17:34" }, "nodeType": "YulFunctionCall", - "src": "27350:37:33" + "src": "23658:24:34" }, "variableNames": [ { - "name": "converted", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "27337:9:33" + "src": "23647:7:34" } ] } ] }, - "name": "convert_t_contract$_IJoeFactory_$3809_to_t_address", + "name": "cleanup_t_contract$_ILBPair_$6187", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "27307:5:33", + "src": "23619:5:34", "type": "" } ], "returnVariables": [ { - "name": "converted", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "27317:9:33", + "src": "23629:7:34", "type": "" } ], - "src": "27247:146:33" + "src": "23576:112:34" }, { "body": { "nodeType": "YulBlock", - "src": "27484:86:33", + "src": "23753:95:34", "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "23826:16:34", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "27501:3:33" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23835:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23838:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "23828:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "23828:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "23828:12:34" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "27557:5:33" + "src": "23776:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23817:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_ILBPair_$6187", + "nodeType": "YulIdentifier", + "src": "23783:33:34" + }, + "nodeType": "YulFunctionCall", + "src": "23783:40:34" } ], "functionName": { - "name": "convert_t_contract$_IJoeFactory_$3809_to_t_address", + "name": "eq", "nodeType": "YulIdentifier", - "src": "27506:50:33" + "src": "23773:2:34" }, "nodeType": "YulFunctionCall", - "src": "27506:57:33" + "src": "23773:51:34" } ], "functionName": { - "name": "mstore", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "27494:6:33" + "src": "23766:6:34" }, "nodeType": "YulFunctionCall", - "src": "27494:70:33" + "src": "23766:59:34" }, - "nodeType": "YulExpressionStatement", - "src": "27494:70:33" + "nodeType": "YulIf", + "src": "23763:79:34" } ] }, - "name": "abi_encode_t_contract$_IJoeFactory_$3809_to_t_address_fromStack", + "name": "validator_revert_t_contract$_ILBPair_$6187", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "27472:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "27479:3:33", + "src": "23746:5:34", "type": "" } ], - "src": "27399:171:33" + "src": "23694:154:34" }, { "body": { "nodeType": "YulBlock", - "src": "27694:144:33", + "src": "23922:103:34", "statements": [ { "nodeType": "YulAssignment", - "src": "27704:26:33", + "src": "23932:29:34", "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "27716:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "27727:2:33", - "type": "", - "value": "32" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23954:6:34" } ], "functionName": { - "name": "add", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "27712:3:33" + "src": "23941:12:34" }, "nodeType": "YulFunctionCall", - "src": "27712:18:33" + "src": "23941:20:34" }, "variableNames": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "27704:4:33" + "src": "23932:5:34" } ] }, @@ -17161,753 +14866,632 @@ "expression": { "arguments": [ { - "name": "value0", + "name": "value", "nodeType": "YulIdentifier", - "src": "27804:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "27817:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "27828:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "27813:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "27813:17:33" + "src": "24013:5:34" } ], "functionName": { - "name": "abi_encode_t_contract$_IJoeFactory_$3809_to_t_address_fromStack", + "name": "validator_revert_t_contract$_ILBPair_$6187", "nodeType": "YulIdentifier", - "src": "27740:63:33" + "src": "23970:42:34" }, "nodeType": "YulFunctionCall", - "src": "27740:91:33" + "src": "23970:49:34" }, "nodeType": "YulExpressionStatement", - "src": "27740:91:33" + "src": "23970:49:34" } ] }, - "name": "abi_encode_tuple_t_contract$_IJoeFactory_$3809__to_t_address__fromStack_reversed", + "name": "abi_decode_t_contract$_ILBPair_$6187", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "27666:9:33", + "src": "23900:6:34", "type": "" }, { - "name": "value0", + "name": "end", "nodeType": "YulTypedName", - "src": "27678:6:33", + "src": "23908:3:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value", "nodeType": "YulTypedName", - "src": "27689:4:33", + "src": "23916:5:34", "type": "" } ], - "src": "27576:262:33" + "src": "23854:171:34" }, { "body": { "nodeType": "YulBlock", - "src": "28123:1690:33", + "src": "24076:73:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "28170:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "28172:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "28172:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "28172:79:33" - } - ] - }, - "condition": { + "nodeType": "YulAssignment", + "src": "24086:57:34", + "value": { "arguments": [ { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "28144:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "28153:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "28140:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "28140:23:33" + "name": "value", + "nodeType": "YulIdentifier", + "src": "24101:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "28165:3:33", + "src": "24108:34:34", "type": "", - "value": "288" + "value": "0xffffffffffffffffffffffffffffffff" } ], "functionName": { - "name": "slt", + "name": "and", "nodeType": "YulIdentifier", - "src": "28136:3:33" + "src": "24097:3:34" }, "nodeType": "YulFunctionCall", - "src": "28136:33:33" + "src": "24097:46:34" }, - "nodeType": "YulIf", - "src": "28133:120:33" - }, - { - "nodeType": "YulBlock", - "src": "28263:131:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "28278:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "28292:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "28282:6:33", - "type": "" - } - ] - }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "28307:77:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "28356:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "28367:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "28352:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "28352:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "28376:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", - "nodeType": "YulIdentifier", - "src": "28317:34:33" - }, - "nodeType": "YulFunctionCall", - "src": "28317:67:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "28307:6:33" - } - ] + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "24086:7:34" } ] - }, + } + ] + }, + "name": "cleanup_t_uint128", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24058:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "24068:7:34", + "type": "" + } + ], + "src": "24031:118:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24198:79:34", + "statements": [ { - "nodeType": "YulBlock", - "src": "28404:132:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "28419:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "28433:2:33", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "28423:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "28449:77:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "28498:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "28509:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "28494:3:33" + "body": { + "nodeType": "YulBlock", + "src": "24255:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24264:1:34", + "type": "", + "value": "0" }, - "nodeType": "YulFunctionCall", - "src": "28494:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "28518:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", - "nodeType": "YulIdentifier", - "src": "28459:34:33" - }, - "nodeType": "YulFunctionCall", - "src": "28459:67:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "28449:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "28546:117:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "28561:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "28575:2:33", - "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "28565:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "28591:62:33", - "value": { + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24267:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "24257:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24257:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24257:12:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24221:5:34" + }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "28625:9:33" - }, - { - "name": "offset", + "name": "value", "nodeType": "YulIdentifier", - "src": "28636:6:33" + "src": "24246:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint128", "nodeType": "YulIdentifier", - "src": "28621:3:33" + "src": "24228:17:34" }, "nodeType": "YulFunctionCall", - "src": "28621:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "28645:7:33" + "src": "24228:24:34" } ], "functionName": { - "name": "abi_decode_t_uint16", + "name": "eq", "nodeType": "YulIdentifier", - "src": "28601:19:33" + "src": "24218:2:34" }, "nodeType": "YulFunctionCall", - "src": "28601:52:33" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "28591:6:33" - } - ] + "src": "24218:35:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24211:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24211:43:34" + }, + "nodeType": "YulIf", + "src": "24208:63:34" + } + ] + }, + "name": "validator_revert_t_uint128", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24191:5:34", + "type": "" + } + ], + "src": "24155:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24335:87:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24345:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24367:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "24354:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "24354:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24345:5:34" } ] }, { - "nodeType": "YulBlock", - "src": "28673:118:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "28688:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "28702:2:33", - "type": "", - "value": "96" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "28692:6:33", - "type": "" - } - ] + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24410:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint128", + "nodeType": "YulIdentifier", + "src": "24383:26:34" }, - { - "nodeType": "YulAssignment", - "src": "28718:63:33", - "value": { + "nodeType": "YulFunctionCall", + "src": "24383:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24383:33:34" + } + ] + }, + "name": "abi_decode_t_uint128", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24313:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "24321:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24329:5:34", + "type": "" + } + ], + "src": "24283:139:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24470:48:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24480:32:34", + "value": { + "arguments": [ + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "28753:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "28764:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "28749:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "28749:22:33" - }, - { - "name": "dataEnd", + "name": "value", "nodeType": "YulIdentifier", - "src": "28773:7:33" + "src": "24505:5:34" } ], "functionName": { - "name": "abi_decode_t_uint256", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "28728:20:33" + "src": "24498:6:34" }, "nodeType": "YulFunctionCall", - "src": "28728:53:33" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "28718:6:33" - } - ] + "src": "24498:13:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24491:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24491:21:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "24480:7:34" } ] - }, + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24452:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "24462:7:34", + "type": "" + } + ], + "src": "24428:90:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24564:76:34", + "statements": [ { - "nodeType": "YulBlock", - "src": "28801:119:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "28816:17:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "28830:3:33", - "type": "", - "value": "128" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "28820:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "28847:63:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "28882:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "28893:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "28878:3:33" + "body": { + "nodeType": "YulBlock", + "src": "24618:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24627:1:34", + "type": "", + "value": "0" }, - "nodeType": "YulFunctionCall", - "src": "28878:22:33" - }, - { - "name": "dataEnd", + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24630:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", "nodeType": "YulIdentifier", - "src": "28902:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint256", - "nodeType": "YulIdentifier", - "src": "28857:20:33" + "src": "24620:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24620:12:34" }, - "nodeType": "YulFunctionCall", - "src": "28857:53:33" - }, - "variableNames": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "28847:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "28930:304:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "28945:47:33", - "value": { + "nodeType": "YulExpressionStatement", + "src": "24620:12:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24587:5:34" + }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "28976:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "28987:3:33", - "type": "", - "value": "160" + "src": "24609:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_bool", "nodeType": "YulIdentifier", - "src": "28972:3:33" + "src": "24594:14:34" }, "nodeType": "YulFunctionCall", - "src": "28972:19:33" + "src": "24594:21:34" } ], "functionName": { - "name": "calldataload", + "name": "eq", "nodeType": "YulIdentifier", - "src": "28959:12:33" + "src": "24584:2:34" }, "nodeType": "YulFunctionCall", - "src": "28959:33:33" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "28949:6:33", - "type": "" - } - ] + "src": "24584:32:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24577:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24577:40:34" + }, + "nodeType": "YulIf", + "src": "24574:60:34" + } + ] + }, + "name": "validator_revert_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24557:5:34", + "type": "" + } + ], + "src": "24524:116:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24695:84:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24705:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24727:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "24714:12:34" }, + "nodeType": "YulFunctionCall", + "src": "24714:20:34" + }, + "variableNames": [ { - "body": { - "nodeType": "YulBlock", - "src": "29039:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulIdentifier", - "src": "29041:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "29041:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "29041:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", + "name": "value", + "nodeType": "YulIdentifier", + "src": "24705:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24767:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "24743:23:34" + }, + "nodeType": "YulFunctionCall", + "src": "24743:30:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24743:30:34" + } + ] + }, + "name": "abi_decode_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24673:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "24681:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24689:5:34", + "type": "" + } + ], + "src": "24646:133:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24898:532:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "24944:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "29011:6:33" + "src": "24946:77:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "29019:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "29008:2:33" + "nodeType": "YulFunctionCall", + "src": "24946:79:34" }, - "nodeType": "YulFunctionCall", - "src": "29008:30:33" - }, - "nodeType": "YulIf", - "src": "29005:117:33" - }, - { - "nodeType": "YulAssignment", - "src": "29136:88:33", - "value": { + "nodeType": "YulExpressionStatement", + "src": "24946:79:34" + } + ] + }, + "condition": { + "arguments": [ + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "29196:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "29207:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "29192:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "29192:22:33" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24919:7:34" }, { - "name": "dataEnd", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "29216:7:33" + "src": "24928:9:34" } ], "functionName": { - "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "name": "sub", "nodeType": "YulIdentifier", - "src": "29146:45:33" + "src": "24915:3:34" }, "nodeType": "YulFunctionCall", - "src": "29146:78:33" + "src": "24915:23:34" }, - "variableNames": [ - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "29136:6:33" - } - ] - } - ] + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24940:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "24911:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "24911:32:34" + }, + "nodeType": "YulIf", + "src": "24908:119:34" }, { "nodeType": "YulBlock", - "src": "29244:304:33", + "src": "25037:133:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "29259:47:33", + "src": "25052:15:34", "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "29290:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "29301:3:33", - "type": "", - "value": "192" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "29286:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "29286:19:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "29273:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "29273:33:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "25066:1:34", + "type": "", + "value": "0" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "29263:6:33", + "src": "25056:6:34", "type": "" } ] }, - { - "body": { - "nodeType": "YulBlock", - "src": "29353:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulIdentifier", - "src": "29355:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "29355:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "29355:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "29325:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "29333:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "29322:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "29322:30:33" - }, - "nodeType": "YulIf", - "src": "29319:117:33" - }, { "nodeType": "YulAssignment", - "src": "29450:88:33", + "src": "25081:79:34", "value": { "arguments": [ { @@ -17915,41 +15499,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29510:9:33" + "src": "25132:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "29521:6:33" + "src": "25143:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29506:3:33" + "src": "25128:3:34" }, "nodeType": "YulFunctionCall", - "src": "29506:22:33" + "src": "25128:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "29530:7:33" + "src": "25152:7:34" } ], "functionName": { - "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "name": "abi_decode_t_contract$_ILBPair_$6187", "nodeType": "YulIdentifier", - "src": "29460:45:33" + "src": "25091:36:34" }, "nodeType": "YulFunctionCall", - "src": "29460:78:33" + "src": "25091:69:34" }, "variableNames": [ { - "name": "value6", + "name": "value0", "nodeType": "YulIdentifier", - "src": "29450:6:33" + "src": "25081:6:34" } ] } @@ -17957,30 +15541,30 @@ }, { "nodeType": "YulBlock", - "src": "29558:119:33", + "src": "25180:118:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "29573:17:33", + "src": "25195:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "29587:3:33", + "src": "25209:2:34", "type": "", - "value": "224" + "value": "32" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "29577:6:33", + "src": "25199:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "29604:63:33", + "src": "25225:63:34", "value": { "arguments": [ { @@ -17988,41 +15572,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29639:9:33" + "src": "25260:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "29650:6:33" + "src": "25271:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29635:3:33" + "src": "25256:3:34" }, "nodeType": "YulFunctionCall", - "src": "29635:22:33" + "src": "25256:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "29659:7:33" + "src": "25280:7:34" } ], "functionName": { - "name": "abi_decode_t_address", + "name": "abi_decode_t_uint128", "nodeType": "YulIdentifier", - "src": "29614:20:33" + "src": "25235:20:34" }, "nodeType": "YulFunctionCall", - "src": "29614:53:33" + "src": "25235:53:34" }, "variableNames": [ { - "name": "value7", + "name": "value1", "nodeType": "YulIdentifier", - "src": "29604:6:33" + "src": "25225:6:34" } ] } @@ -18030,30 +15614,30 @@ }, { "nodeType": "YulBlock", - "src": "29687:119:33", + "src": "25308:115:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "29702:17:33", + "src": "25323:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "29716:3:33", + "src": "25337:2:34", "type": "", - "value": "256" + "value": "64" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "29706:6:33", + "src": "25327:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "29733:63:33", + "src": "25353:60:34", "value": { "arguments": [ { @@ -18061,41 +15645,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "29768:9:33" + "src": "25385:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "29779:6:33" + "src": "25396:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "29764:3:33" + "src": "25381:3:34" }, "nodeType": "YulFunctionCall", - "src": "29764:22:33" + "src": "25381:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "29788:7:33" + "src": "25405:7:34" } ], "functionName": { - "name": "abi_decode_t_uint256", + "name": "abi_decode_t_bool", "nodeType": "YulIdentifier", - "src": "29743:20:33" + "src": "25363:17:34" }, "nodeType": "YulFunctionCall", - "src": "29743:53:33" + "src": "25363:50:34" }, "variableNames": [ { - "name": "value8", + "name": "value2", "nodeType": "YulIdentifier", - "src": "29733:6:33" + "src": "25353:6:34" } ] } @@ -18103,19 +15687,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$225t_contract$_IERC20_$225t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256", + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint128t_bool", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "28029:9:33", + "src": "24852:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "28040:7:33", + "src": "24863:7:34", "type": "" } ], @@ -18123,492 +15707,444 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "28052:6:33", + "src": "24875:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "28060:6:33", + "src": "24883:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "28068:6:33", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "28076:6:33", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "28084:6:33", + "src": "24891:6:34", "type": "" - }, - { - "name": "value5", - "nodeType": "YulTypedName", - "src": "28092:6:33", - "type": "" - }, - { - "name": "value6", - "nodeType": "YulTypedName", - "src": "28100:6:33", - "type": "" - }, + } + ], + "src": "24785:645:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25501:53:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25518:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25541:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint128", + "nodeType": "YulIdentifier", + "src": "25523:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "25523:24:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25511:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "25511:37:34" + }, + "nodeType": "YulExpressionStatement", + "src": "25511:37:34" + } + ] + }, + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "name": "value7", + "name": "value", "nodeType": "YulTypedName", - "src": "28108:6:33", + "src": "25489:5:34", "type": "" }, { - "name": "value8", + "name": "pos", "nodeType": "YulTypedName", - "src": "28116:6:33", + "src": "25496:3:34", "type": "" } ], - "src": "27844:1969:33" + "src": "25436:118:34" }, { "body": { "nodeType": "YulBlock", - "src": "29917:406:33", + "src": "25714:288:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "29963:83:33", - "statements": [ + "nodeType": "YulAssignment", + "src": "25724:26:34", + "value": { + "arguments": [ { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "29965:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "29965:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "29965:79:33" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25736:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25747:2:34", + "type": "", + "value": "96" } - ] + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25732:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25732:18:34" }, - "condition": { + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25724:4:34" + } + ] + }, + { + "expression": { "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25804:6:34" + }, { "arguments": [ { - "name": "dataEnd", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "29938:7:33" + "src": "25817:9:34" }, { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "29947:9:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "25828:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "sub", + "name": "add", "nodeType": "YulIdentifier", - "src": "29934:3:33" + "src": "25813:3:34" }, "nodeType": "YulFunctionCall", - "src": "29934:23:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "29959:2:33", - "type": "", - "value": "64" + "src": "25813:17:34" } ], "functionName": { - "name": "slt", + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", "nodeType": "YulIdentifier", - "src": "29930:3:33" + "src": "25760:43:34" }, "nodeType": "YulFunctionCall", - "src": "29930:32:33" + "src": "25760:71:34" }, - "nodeType": "YulIf", - "src": "29927:119:33" + "nodeType": "YulExpressionStatement", + "src": "25760:71:34" }, { - "nodeType": "YulBlock", - "src": "30056:133:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "30071:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "30085:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "30075:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "30100:79:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "30151:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "30162:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "30147:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "30147:22:33" - }, + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "25885:6:34" + }, + { + "arguments": [ { - "name": "dataEnd", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "30171:7:33" + "src": "25898:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25909:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBPair_$6473", + "name": "add", "nodeType": "YulIdentifier", - "src": "30110:36:33" + "src": "25894:3:34" }, "nodeType": "YulFunctionCall", - "src": "30110:69:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "30100:6:33" - } - ] - } - ] + "src": "25894:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulIdentifier", + "src": "25841:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "25841:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "25841:72:34" }, { - "nodeType": "YulBlock", - "src": "30199:117:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "30214:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "30228:2:33", - "type": "", - "value": "32" + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "25967:6:34" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "30218:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "30244:62:33", - "value": { + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "30278:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "30289:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "30274:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "30274:22:33" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25980:9:34" }, { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "30298:7:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "25991:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "abi_decode_t_uint24", + "name": "add", "nodeType": "YulIdentifier", - "src": "30254:19:33" + "src": "25976:3:34" }, "nodeType": "YulFunctionCall", - "src": "30254:52:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "30244:6:33" - } - ] - } - ] + "src": "25976:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulIdentifier", + "src": "25923:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "25923:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "25923:72:34" } ] }, - "name": "abi_decode_tuple_t_contract$_ILBPair_$6473t_uint24", + "name": "abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "29879:9:33", + "src": "25670:9:34", "type": "" }, { - "name": "dataEnd", + "name": "value2", "nodeType": "YulTypedName", - "src": "29890:7:33", + "src": "25682:6:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "value0", + "name": "value1", "nodeType": "YulTypedName", - "src": "29902:6:33", + "src": "25690:6:34", "type": "" }, { - "name": "value1", + "name": "value0", + "nodeType": "YulTypedName", + "src": "25698:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", "nodeType": "YulTypedName", - "src": "29910:6:33", + "src": "25709:4:34", "type": "" } ], - "src": "29819:504:33" + "src": "25560:442:34" }, { "body": { "nodeType": "YulBlock", - "src": "30391:51:33", + "src": "26095:66:34", "statements": [ { "nodeType": "YulAssignment", - "src": "30401:35:33", + "src": "26105:50:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "30430:5:33" + "src": "26149:5:34" } ], "functionName": { - "name": "cleanup_t_address", + "name": "convert_t_uint160_to_t_address", "nodeType": "YulIdentifier", - "src": "30412:17:33" + "src": "26118:30:34" }, "nodeType": "YulFunctionCall", - "src": "30412:24:33" + "src": "26118:37:34" }, "variableNames": [ { - "name": "cleaned", + "name": "converted", "nodeType": "YulIdentifier", - "src": "30401:7:33" + "src": "26105:9:34" } ] } ] }, - "name": "cleanup_t_contract$_ILBToken_$7148", + "name": "convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "30373:5:33", + "src": "26075:5:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "converted", "nodeType": "YulTypedName", - "src": "30383:7:33", + "src": "26085:9:34", "type": "" } ], - "src": "30329:113:33" + "src": "26008:153:34" }, { "body": { "nodeType": "YulBlock", - "src": "30508:96:33", + "src": "26259:93:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "30582:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "30591:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "30594:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "30584:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "30584:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "30584:12:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26276:3:34" + }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "30531:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "30573:5:33" - } - ], - "functionName": { - "name": "cleanup_t_contract$_ILBToken_$7148", - "nodeType": "YulIdentifier", - "src": "30538:34:33" - }, - "nodeType": "YulFunctionCall", - "src": "30538:41:33" + "src": "26339:5:34" } ], "functionName": { - "name": "eq", + "name": "convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address", "nodeType": "YulIdentifier", - "src": "30528:2:33" + "src": "26281:57:34" }, "nodeType": "YulFunctionCall", - "src": "30528:52:33" + "src": "26281:64:34" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "30521:6:33" + "src": "26269:6:34" }, "nodeType": "YulFunctionCall", - "src": "30521:60:33" + "src": "26269:77:34" }, - "nodeType": "YulIf", - "src": "30518:80:33" + "nodeType": "YulExpressionStatement", + "src": "26269:77:34" } ] }, - "name": "validator_revert_t_contract$_ILBToken_$7148", + "name": "abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "30501:5:33", + "src": "26247:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26254:3:34", "type": "" } ], - "src": "30448:156:33" + "src": "26167:185:34" }, { "body": { "nodeType": "YulBlock", - "src": "30679:104:33", + "src": "26483:151:34", "statements": [ { "nodeType": "YulAssignment", - "src": "30689:29:33", + "src": "26493:26:34", "value": { "arguments": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "30711:6:33" + "src": "26505:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26516:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "calldataload", + "name": "add", "nodeType": "YulIdentifier", - "src": "30698:12:33" + "src": "26501:3:34" }, "nodeType": "YulFunctionCall", - "src": "30698:20:33" + "src": "26501:18:34" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "30689:5:33" + "src": "26493:4:34" } ] }, @@ -18616,113 +16152,96 @@ "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "30771:5:33" + "src": "26600:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26613:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26624:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26609:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "26609:17:34" } ], "functionName": { - "name": "validator_revert_t_contract$_ILBToken_$7148", + "name": "abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "30727:43:33" + "src": "26529:70:34" }, "nodeType": "YulFunctionCall", - "src": "30727:50:33" + "src": "26529:98:34" }, "nodeType": "YulExpressionStatement", - "src": "30727:50:33" + "src": "26529:98:34" } ] }, - "name": "abi_decode_t_contract$_ILBToken_$7148", + "name": "abi_encode_tuple_t_contract$_ISovrynLBFactoryV1_$6916__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulTypedName", - "src": "30657:6:33", + "src": "26455:9:34", "type": "" }, { - "name": "end", + "name": "value0", "nodeType": "YulTypedName", - "src": "30665:3:33", + "src": "26467:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "tail", "nodeType": "YulTypedName", - "src": "30673:5:33", + "src": "26478:4:34", "type": "" } ], - "src": "30610:173:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "30878:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "30895:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "30898:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "30888:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "30888:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "30888:12:33" - } - ] - }, - "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", - "nodeType": "YulFunctionDefinition", - "src": "30789:117:33" + "src": "26358:276:34" }, { "body": { "nodeType": "YulBlock", - "src": "31019:478:33", + "src": "26919:1690:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "31068:83:33", + "src": "26966:83:34", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "31070:77:33" + "src": "26968:77:34" }, "nodeType": "YulFunctionCall", - "src": "31070:79:33" + "src": "26968:79:34" }, "nodeType": "YulExpressionStatement", - "src": "31070:79:33" + "src": "26968:79:34" } ] }, @@ -18731,369 +16250,361 @@ { "arguments": [ { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "31047:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "31055:4:33", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "31043:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "31043:17:33" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26940:7:34" }, { - "name": "end", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "31062:3:33" + "src": "26949:9:34" } ], "functionName": { - "name": "slt", + "name": "sub", "nodeType": "YulIdentifier", - "src": "31039:3:33" + "src": "26936:3:34" }, "nodeType": "YulFunctionCall", - "src": "31039:27:33" + "src": "26936:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26961:3:34", + "type": "", + "value": "288" } ], "functionName": { - "name": "iszero", + "name": "slt", "nodeType": "YulIdentifier", - "src": "31032:6:33" + "src": "26932:3:34" }, "nodeType": "YulFunctionCall", - "src": "31032:35:33" + "src": "26932:33:34" }, "nodeType": "YulIf", - "src": "31029:122:33" + "src": "26929:120:34" }, { - "nodeType": "YulAssignment", - "src": "31160:30:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "31183:6:33" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "31170:12:33" + "nodeType": "YulBlock", + "src": "27059:131:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27074:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27088:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27078:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "31170:20:33" - }, - "variableNames": [ { - "name": "length", - "nodeType": "YulIdentifier", - "src": "31160:6:33" + "nodeType": "YulAssignment", + "src": "27103:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27152:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27163:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27148:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27148:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27172:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "27113:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "27113:67:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27103:6:34" + } + ] } ] }, { - "body": { - "nodeType": "YulBlock", - "src": "31233:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", - "nodeType": "YulIdentifier", - "src": "31235:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "31235:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "31235:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "31205:6:33" - }, - { + "nodeType": "YulBlock", + "src": "27200:132:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27215:16:34", + "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "31213:18:33", + "src": "27229:2:34", "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "31202:2:33" + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27219:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "31202:30:33" - }, - "nodeType": "YulIf", - "src": "31199:117:33" + { + "nodeType": "YulAssignment", + "src": "27245:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27294:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27305:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27290:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27290:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27314:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "27255:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "27255:67:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27245:6:34" + } + ] + } + ] }, { - "nodeType": "YulAssignment", - "src": "31325:29:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "31341:6:33" - }, - { + "nodeType": "YulBlock", + "src": "27342:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27357:16:34", + "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "31349:4:33", + "src": "27371:2:34", "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "31337:3:33" + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27361:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "31337:17:33" - }, - "variableNames": [ { - "name": "arrayPos", - "nodeType": "YulIdentifier", - "src": "31325:8:33" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "31408:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", - "nodeType": "YulIdentifier", - "src": "31410:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "31410:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "31410:79:33" - } - ] - }, - "condition": { - "arguments": [ - { + "nodeType": "YulAssignment", + "src": "27387:62:34", + "value": { "arguments": [ - { - "name": "arrayPos", - "nodeType": "YulIdentifier", - "src": "31373:8:33" - }, { "arguments": [ { - "name": "length", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "31387:6:33" + "src": "27421:9:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "31395:4:33", - "type": "", - "value": "0x20" + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27432:6:34" } ], "functionName": { - "name": "mul", + "name": "add", "nodeType": "YulIdentifier", - "src": "31383:3:33" + "src": "27417:3:34" }, "nodeType": "YulFunctionCall", - "src": "31383:17:33" + "src": "27417:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27441:7:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_uint16", "nodeType": "YulIdentifier", - "src": "31369:3:33" + "src": "27397:19:34" }, "nodeType": "YulFunctionCall", - "src": "31369:32:33" + "src": "27397:52:34" }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "31403:3:33" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "31366:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "31366:41:33" - }, - "nodeType": "YulIf", - "src": "31363:128:33" - } - ] - }, - "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "30986:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "30994:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "arrayPos", - "nodeType": "YulTypedName", - "src": "31002:8:33", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "31012:6:33", - "type": "" - } - ], - "src": "30929:568:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "31707:1055:33", - "statements": [ + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "27387:6:34" + } + ] + } + ] + }, { - "body": { - "nodeType": "YulBlock", - "src": "31754:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "31756:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "31756:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "31756:79:33" - } - ] - }, - "condition": { - "arguments": [ - { + "nodeType": "YulBlock", + "src": "27469:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27484:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27498:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27488:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27514:63:34", + "value": { "arguments": [ { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "31728:7:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27549:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27560:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27545:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27545:22:34" }, { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "31737:9:33" + "src": "27569:7:34" } ], "functionName": { - "name": "sub", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "31724:3:33" + "src": "27524:20:34" }, "nodeType": "YulFunctionCall", - "src": "31724:23:33" + "src": "27524:53:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "31749:3:33", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "31720:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "31720:33:33" - }, - "nodeType": "YulIf", - "src": "31717:120:33" + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "27514:6:34" + } + ] + } + ] }, { "nodeType": "YulBlock", - "src": "31847:134:33", + "src": "27597:119:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "31862:15:33", + "src": "27612:17:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "31876:1:33", + "src": "27626:3:34", "type": "", - "value": "0" + "value": "128" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "31866:6:33", + "src": "27616:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "31891:80:33", + "src": "27643:63:34", "value": { "arguments": [ { @@ -19101,41 +16612,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "31943:9:33" + "src": "27678:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "31954:6:33" + "src": "27689:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "31939:3:33" + "src": "27674:3:34" }, "nodeType": "YulFunctionCall", - "src": "31939:22:33" + "src": "27674:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "31963:7:33" + "src": "27698:7:34" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBToken_$7148", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "31901:37:33" + "src": "27653:20:34" }, "nodeType": "YulFunctionCall", - "src": "31901:70:33" + "src": "27653:53:34" }, "variableNames": [ { - "name": "value0", + "name": "value4", "nodeType": "YulIdentifier", - "src": "31891:6:33" + "src": "27643:6:34" } ] } @@ -19143,30 +16654,104 @@ }, { "nodeType": "YulBlock", - "src": "31991:118:33", + "src": "27726:304:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "32006:16:33", + "src": "27741:47:34", "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "32020:2:33", - "type": "", - "value": "32" + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27772:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27783:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27768:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27768:19:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "27755:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "27755:33:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "32010:6:33", + "src": "27745:6:34", "type": "" } ] }, + { + "body": { + "nodeType": "YulBlock", + "src": "27835:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "27837:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "27837:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "27837:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27807:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27815:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "27804:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "27804:30:34" + }, + "nodeType": "YulIf", + "src": "27801:117:34" + }, { "nodeType": "YulAssignment", - "src": "32036:63:33", + "src": "27932:88:34", "value": { "arguments": [ { @@ -19174,41 +16759,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "32071:9:33" + "src": "27992:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "32082:6:33" + "src": "28003:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "32067:3:33" + "src": "27988:3:34" }, "nodeType": "YulFunctionCall", - "src": "32067:22:33" + "src": "27988:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "32091:7:33" + "src": "28012:7:34" } ], "functionName": { - "name": "abi_decode_t_address", + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "32046:20:33" + "src": "27942:45:34" }, "nodeType": "YulFunctionCall", - "src": "32046:53:33" + "src": "27942:78:34" }, "variableNames": [ { - "name": "value1", + "name": "value5", "nodeType": "YulIdentifier", - "src": "32036:6:33" + "src": "27932:6:34" } ] } @@ -19216,11 +16801,11 @@ }, { "nodeType": "YulBlock", - "src": "32119:313:33", + "src": "28040:304:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "32134:46:33", + "src": "28055:47:34", "value": { "arguments": [ { @@ -19228,38 +16813,38 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "32165:9:33" + "src": "28086:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "32176:2:33", + "src": "28097:3:34", "type": "", - "value": "64" + "value": "192" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "32161:3:33" + "src": "28082:3:34" }, "nodeType": "YulFunctionCall", - "src": "32161:18:33" + "src": "28082:19:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "32148:12:33" + "src": "28069:12:34" }, "nodeType": "YulFunctionCall", - "src": "32148:32:33" + "src": "28069:33:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "32138:6:33", + "src": "28059:6:34", "type": "" } ] @@ -19267,7 +16852,7 @@ { "body": { "nodeType": "YulBlock", - "src": "32227:83:33", + "src": "28149:83:34", "statements": [ { "expression": { @@ -19275,13 +16860,13 @@ "functionName": { "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulIdentifier", - "src": "32229:77:33" + "src": "28151:77:34" }, "nodeType": "YulFunctionCall", - "src": "32229:79:33" + "src": "28151:79:34" }, "nodeType": "YulExpressionStatement", - "src": "32229:79:33" + "src": "28151:79:34" } ] }, @@ -19290,12 +16875,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "32199:6:33" + "src": "28121:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "32207:18:33", + "src": "28129:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -19303,17 +16888,17 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "32196:2:33" + "src": "28118:2:34" }, "nodeType": "YulFunctionCall", - "src": "32196:30:33" + "src": "28118:30:34" }, "nodeType": "YulIf", - "src": "32193:117:33" + "src": "28115:117:34" }, { "nodeType": "YulAssignment", - "src": "32324:98:33", + "src": "28246:88:34", "value": { "arguments": [ { @@ -19321,46 +16906,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "32394:9:33" + "src": "28306:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "32405:6:33" + "src": "28317:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "32390:3:33" + "src": "28302:3:34" }, "nodeType": "YulFunctionCall", - "src": "32390:22:33" + "src": "28302:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "32414:7:33" + "src": "28326:7:34" } ], "functionName": { - "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "32342:47:33" + "src": "28256:45:34" }, "nodeType": "YulFunctionCall", - "src": "32342:80:33" + "src": "28256:78:34" }, "variableNames": [ { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "32324:6:33" - }, - { - "name": "value3", + "name": "value6", "nodeType": "YulIdentifier", - "src": "32332:6:33" + "src": "28246:6:34" } ] } @@ -19368,11 +16948,30 @@ }, { "nodeType": "YulBlock", - "src": "32442:313:33", + "src": "28354:119:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "32457:46:33", + "src": "28369:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28383:3:34", + "type": "", + "value": "224" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "28373:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "28400:63:34", "value": { "arguments": [ { @@ -19380,92 +16979,72 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "32488:9:33" + "src": "28435:9:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "32499:2:33", - "type": "", - "value": "96" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28446:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "32484:3:33" + "src": "28431:3:34" }, "nodeType": "YulFunctionCall", - "src": "32484:18:33" + "src": "28431:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28455:7:34" } ], "functionName": { - "name": "calldataload", + "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "32471:12:33" + "src": "28410:20:34" }, "nodeType": "YulFunctionCall", - "src": "32471:32:33" + "src": "28410:53:34" + }, + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "28400:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "28483:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "28498:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28512:3:34", + "type": "", + "value": "256" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "32461:6:33", + "src": "28502:6:34", "type": "" } ] }, - { - "body": { - "nodeType": "YulBlock", - "src": "32550:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", - "nodeType": "YulIdentifier", - "src": "32552:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "32552:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "32552:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "32522:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "32530:18:33", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "32519:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "32519:30:33" - }, - "nodeType": "YulIf", - "src": "32516:117:33" - }, { "nodeType": "YulAssignment", - "src": "32647:98:33", + "src": "28529:63:34", "value": { "arguments": [ { @@ -19473,46 +17052,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "32717:9:33" + "src": "28564:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "32728:6:33" + "src": "28575:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "32713:3:33" + "src": "28560:3:34" }, "nodeType": "YulFunctionCall", - "src": "32713:22:33" + "src": "28560:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "32737:7:33" + "src": "28584:7:34" } ], "functionName": { - "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "32665:47:33" + "src": "28539:20:34" }, "nodeType": "YulFunctionCall", - "src": "32665:80:33" + "src": "28539:53:34" }, "variableNames": [ { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "32647:6:33" - }, - { - "name": "value5", + "name": "value8", "nodeType": "YulIdentifier", - "src": "32655:6:33" + "src": "28529:6:34" } ] } @@ -19520,19 +17094,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_ILBToken_$7148t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr", + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "31637:9:33", + "src": "26825:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "31648:7:33", + "src": "26836:7:34", "type": "" } ], @@ -19540,51 +17114,69 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "31660:6:33", + "src": "26848:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "31668:6:33", + "src": "26856:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "31676:6:33", + "src": "26864:6:34", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "31684:6:33", + "src": "26872:6:34", "type": "" }, { "name": "value4", "nodeType": "YulTypedName", - "src": "31692:6:33", + "src": "26880:6:34", "type": "" }, { "name": "value5", "nodeType": "YulTypedName", - "src": "31700:6:33", + "src": "26888:6:34", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "26896:6:34", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "26904:6:34", + "type": "" + }, + { + "name": "value8", + "nodeType": "YulTypedName", + "src": "26912:6:34", "type": "" } ], - "src": "31503:1259:33" + "src": "26640:1969:34" }, { "body": { "nodeType": "YulBlock", - "src": "32867:407:33", + "src": "28713:406:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "32913:83:33", + "src": "28759:83:34", "statements": [ { "expression": { @@ -19592,13 +17184,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "32915:77:33" + "src": "28761:77:34" }, "nodeType": "YulFunctionCall", - "src": "32915:79:33" + "src": "28761:79:34" }, "nodeType": "YulExpressionStatement", - "src": "32915:79:33" + "src": "28761:79:34" } ] }, @@ -19609,26 +17201,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "32888:7:33" + "src": "28734:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "32897:9:33" + "src": "28743:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "32884:3:33" + "src": "28730:3:34" }, "nodeType": "YulFunctionCall", - "src": "32884:23:33" + "src": "28730:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "32909:2:33", + "src": "28755:2:34", "type": "", "value": "64" } @@ -19636,25 +17228,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "32880:3:33" + "src": "28726:3:34" }, "nodeType": "YulFunctionCall", - "src": "32880:32:33" + "src": "28726:32:34" }, "nodeType": "YulIf", - "src": "32877:119:33" + "src": "28723:119:34" }, { "nodeType": "YulBlock", - "src": "33006:133:33", + "src": "28852:133:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "33021:15:33", + "src": "28867:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "33035:1:33", + "src": "28881:1:34", "type": "", "value": "0" }, @@ -19662,14 +17254,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "33025:6:33", + "src": "28871:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "33050:79:33", + "src": "28896:79:34", "value": { "arguments": [ { @@ -19677,41 +17269,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "33101:9:33" + "src": "28947:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "33112:6:33" + "src": "28958:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "33097:3:33" + "src": "28943:3:34" }, "nodeType": "YulFunctionCall", - "src": "33097:22:33" + "src": "28943:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "33121:7:33" + "src": "28967:7:34" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBPair_$6473", + "name": "abi_decode_t_contract$_ILBPair_$6187", "nodeType": "YulIdentifier", - "src": "33060:36:33" + "src": "28906:36:34" }, "nodeType": "YulFunctionCall", - "src": "33060:69:33" + "src": "28906:69:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "33050:6:33" + "src": "28896:6:34" } ] } @@ -19719,15 +17311,15 @@ }, { "nodeType": "YulBlock", - "src": "33149:118:33", + "src": "28995:117:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "33164:16:33", + "src": "29010:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "33178:2:33", + "src": "29024:2:34", "type": "", "value": "32" }, @@ -19735,14 +17327,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "33168:6:33", + "src": "29014:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "33194:63:33", + "src": "29040:62:34", "value": { "arguments": [ { @@ -19750,41 +17342,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "33229:9:33" + "src": "29074:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "33240:6:33" + "src": "29085:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "33225:3:33" + "src": "29070:3:34" }, "nodeType": "YulFunctionCall", - "src": "33225:22:33" + "src": "29070:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "33249:7:33" + "src": "29094:7:34" } ], "functionName": { - "name": "abi_decode_t_uint256", + "name": "abi_decode_t_uint24", "nodeType": "YulIdentifier", - "src": "33204:20:33" + "src": "29050:19:34" }, "nodeType": "YulFunctionCall", - "src": "33204:53:33" + "src": "29050:52:34" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "33194:6:33" + "src": "29040:6:34" } ] } @@ -19792,19 +17384,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_ILBPair_$6473t_uint256", + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint24", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "32829:9:33", + "src": "28675:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "32840:7:33", + "src": "28686:7:34", "type": "" } ], @@ -19812,894 +17404,1059 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "32852:6:33", + "src": "28698:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "32860:6:33", + "src": "28706:6:34", "type": "" } ], - "src": "32768:506:33" + "src": "28615:504:34" }, { "body": { "nodeType": "YulBlock", - "src": "33343:52:33", + "src": "29187:51:34", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "29197:35:34", + "value": { "arguments": [ { - "name": "pos", + "name": "value", "nodeType": "YulIdentifier", - "src": "33360:3:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "33382:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint24", - "nodeType": "YulIdentifier", - "src": "33365:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "33365:23:33" + "src": "29226:5:34" } ], "functionName": { - "name": "mstore", + "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "33353:6:33" + "src": "29208:17:34" }, "nodeType": "YulFunctionCall", - "src": "33353:36:33" + "src": "29208:24:34" }, - "nodeType": "YulExpressionStatement", - "src": "33353:36:33" + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "29197:7:34" + } + ] } ] }, - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "cleanup_t_contract$_ILBToken_$6842", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "33331:5:33", + "src": "29169:5:34", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "pos", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "33338:3:33", + "src": "29179:7:34", "type": "" } ], - "src": "33280:115:33" + "src": "29125:113:34" }, { "body": { "nodeType": "YulBlock", - "src": "33497:122:33", + "src": "29304:96:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "33507:26:33", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "33519:9:33" - }, + "body": { + "nodeType": "YulBlock", + "src": "29378:16:34", + "statements": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33530:2:33", - "type": "", - "value": "32" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29387:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29390:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29380:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "29380:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "29380:12:34" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "33515:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "33515:18:33" + ] }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "33507:4:33" - } - ] - }, - { - "expression": { + "condition": { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "33585:6:33" - }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "33598:9:33" + "src": "29327:5:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33609:1:33", - "type": "", - "value": "0" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29369:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_ILBToken_$6842", + "nodeType": "YulIdentifier", + "src": "29334:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "29334:41:34" } ], "functionName": { - "name": "add", + "name": "eq", "nodeType": "YulIdentifier", - "src": "33594:3:33" + "src": "29324:2:34" }, "nodeType": "YulFunctionCall", - "src": "33594:17:33" + "src": "29324:52:34" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "33543:41:33" + "src": "29317:6:34" }, "nodeType": "YulFunctionCall", - "src": "33543:69:33" + "src": "29317:60:34" }, - "nodeType": "YulExpressionStatement", - "src": "33543:69:33" + "nodeType": "YulIf", + "src": "29314:80:34" } ] }, - "name": "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed", + "name": "validator_revert_t_contract$_ILBToken_$6842", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "33469:9:33", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "33481:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", + "name": "value", "nodeType": "YulTypedName", - "src": "33492:4:33", + "src": "29297:5:34", "type": "" } ], - "src": "33401:218:33" + "src": "29244:156:34" }, { "body": { "nodeType": "YulBlock", - "src": "33653:152:33", + "src": "29475:104:34", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "29485:29:34", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33670:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33673:77:33", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "29507:6:34" } ], "functionName": { - "name": "mstore", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "33663:6:33" + "src": "29494:12:34" }, "nodeType": "YulFunctionCall", - "src": "33663:88:33" + "src": "29494:20:34" }, - "nodeType": "YulExpressionStatement", - "src": "33663:88:33" + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29485:5:34" + } + ] }, { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33767:1:33", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "33770:4:33", - "type": "", - "value": "0x11" + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29567:5:34" } ], "functionName": { - "name": "mstore", + "name": "validator_revert_t_contract$_ILBToken_$6842", "nodeType": "YulIdentifier", - "src": "33760:6:33" + "src": "29523:43:34" }, "nodeType": "YulFunctionCall", - "src": "33760:15:33" + "src": "29523:50:34" }, "nodeType": "YulExpressionStatement", - "src": "33760:15:33" - }, + "src": "29523:50:34" + } + ] + }, + "name": "abi_decode_t_contract$_ILBToken_$6842", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "29453:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29461:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29469:5:34", + "type": "" + } + ], + "src": "29406:173:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29674:28:34", + "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "33791:1:33", + "src": "29691:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "33794:4:33", + "src": "29694:1:34", "type": "", - "value": "0x24" + "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "33784:6:33" + "src": "29684:6:34" }, "nodeType": "YulFunctionCall", - "src": "33784:15:33" + "src": "29684:12:34" }, "nodeType": "YulExpressionStatement", - "src": "33784:15:33" + "src": "29684:12:34" } ] }, - "name": "panic_error_0x11", + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", "nodeType": "YulFunctionDefinition", - "src": "33625:180:33" + "src": "29585:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "33855:147:33", + "src": "29815:478:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "33865:25:33", - "value": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "29864:83:34", + "statements": [ { - "name": "x", - "nodeType": "YulIdentifier", - "src": "33888:1:33" + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "29866:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "29866:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "29866:79:34" } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "33870:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "33870:20:33" + ] }, - "variableNames": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "33865:1:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "33899:25:33", - "value": { + "condition": { "arguments": [ { - "name": "y", - "nodeType": "YulIdentifier", - "src": "33922:1:33" + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "29843:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29851:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29839:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "29839:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "29858:3:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "29835:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "29835:27:34" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "33904:17:33" + "src": "29828:6:34" }, "nodeType": "YulFunctionCall", - "src": "33904:20:33" + "src": "29828:35:34" }, - "variableNames": [ - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "33899:1:33" - } - ] + "nodeType": "YulIf", + "src": "29825:122:34" }, { "nodeType": "YulAssignment", - "src": "33933:16:33", + "src": "29956:30:34", "value": { "arguments": [ { - "name": "x", - "nodeType": "YulIdentifier", - "src": "33944:1:33" - }, - { - "name": "y", + "name": "offset", "nodeType": "YulIdentifier", - "src": "33947:1:33" + "src": "29979:6:34" } ], "functionName": { - "name": "add", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "33940:3:33" + "src": "29966:12:34" }, "nodeType": "YulFunctionCall", - "src": "33940:9:33" + "src": "29966:20:34" }, "variableNames": [ { - "name": "sum", + "name": "length", "nodeType": "YulIdentifier", - "src": "33933:3:33" + "src": "29956:6:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "33973:22:33", + "src": "30029:83:34", "statements": [ { "expression": { "arguments": [], "functionName": { - "name": "panic_error_0x11", + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", "nodeType": "YulIdentifier", - "src": "33975:16:33" + "src": "30031:77:34" }, "nodeType": "YulFunctionCall", - "src": "33975:18:33" + "src": "30031:79:34" }, "nodeType": "YulExpressionStatement", - "src": "33975:18:33" + "src": "30031:79:34" } ] }, "condition": { "arguments": [ { - "name": "x", - "nodeType": "YulIdentifier", - "src": "33965:1:33" - }, - { - "name": "sum", + "name": "length", "nodeType": "YulIdentifier", - "src": "33968:3:33" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "33962:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "33962:10:33" - }, - "nodeType": "YulIf", - "src": "33959:36:33" - } - ] - }, - "name": "checked_add_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "33842:1:33", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "33845:1:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "sum", - "nodeType": "YulTypedName", - "src": "33851:3:33", - "type": "" - } - ], - "src": "33811:191:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "34036:152:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34053:1:33", - "type": "", - "value": "0" + "src": "30001:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34056:77:33", + "src": "30009:18:34", "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "34046:6:33" + "src": "29998:2:34" }, "nodeType": "YulFunctionCall", - "src": "34046:88:33" + "src": "29998:30:34" }, - "nodeType": "YulExpressionStatement", - "src": "34046:88:33" + "nodeType": "YulIf", + "src": "29995:117:34" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "30121:29:34", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34150:1:33", - "type": "", - "value": "4" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30137:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34153:4:33", + "src": "30145:4:34", "type": "", - "value": "0x32" + "value": "0x20" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "34143:6:33" + "src": "30133:3:34" }, "nodeType": "YulFunctionCall", - "src": "34143:15:33" + "src": "30133:17:34" }, - "nodeType": "YulExpressionStatement", - "src": "34143:15:33" + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "30121:8:34" + } + ] }, { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34174:1:33", - "type": "", - "value": "0" - }, + "body": { + "nodeType": "YulBlock", + "src": "30204:83:34", + "statements": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34177:4:33", - "type": "", - "value": "0x24" + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "30206:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "30206:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "30206:79:34" } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "34167:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "34167:15:33" + ] }, - "nodeType": "YulExpressionStatement", - "src": "34167:15:33" - } - ] - }, - "name": "panic_error_0x32", - "nodeType": "YulFunctionDefinition", - "src": "34008:180:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "34259:53:33", - "statements": [ - { - "expression": { + "condition": { "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "34276:3:33" - }, { "arguments": [ { - "name": "value", + "name": "arrayPos", "nodeType": "YulIdentifier", - "src": "34299:5:33" + "src": "30169:8:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30183:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30191:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "30179:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30179:17:34" } ], "functionName": { - "name": "cleanup_t_address", + "name": "add", "nodeType": "YulIdentifier", - "src": "34281:17:33" + "src": "30165:3:34" }, "nodeType": "YulFunctionCall", - "src": "34281:24:33" + "src": "30165:32:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "30199:3:34" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "34269:6:33" + "src": "30162:2:34" }, "nodeType": "YulFunctionCall", - "src": "34269:37:33" + "src": "30162:41:34" }, - "nodeType": "YulExpressionStatement", - "src": "34269:37:33" + "nodeType": "YulIf", + "src": "30159:128:34" } ] }, - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "offset", "nodeType": "YulTypedName", - "src": "34247:5:33", + "src": "29782:6:34", "type": "" }, { - "name": "pos", + "name": "end", + "nodeType": "YulTypedName", + "src": "29790:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "29798:8:34", + "type": "" + }, + { + "name": "length", "nodeType": "YulTypedName", - "src": "34254:3:33", + "src": "29808:6:34", "type": "" } ], - "src": "34194:118:33" + "src": "29725:568:34" }, { "body": { "nodeType": "YulBlock", - "src": "34416:124:33", + "src": "30503:1055:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "34426:26:33", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "30550:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "30552:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "30552:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "30552:79:34" + } + ] + }, + "condition": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "34438:9:33" + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "30524:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30533:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30520:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30520:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34449:2:33", + "src": "30545:3:34", "type": "", - "value": "32" + "value": "128" } ], "functionName": { - "name": "add", + "name": "slt", "nodeType": "YulIdentifier", - "src": "34434:3:33" + "src": "30516:3:34" }, "nodeType": "YulFunctionCall", - "src": "34434:18:33" + "src": "30516:33:34" }, - "variableNames": [ + "nodeType": "YulIf", + "src": "30513:120:34" + }, + { + "nodeType": "YulBlock", + "src": "30643:134:34", + "statements": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "34426:4:33" + "nodeType": "YulVariableDeclaration", + "src": "30658:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30672:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30662:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "30687:80:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30739:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30750:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30735:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30735:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "30759:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBToken_$6842", + "nodeType": "YulIdentifier", + "src": "30697:37:34" + }, + "nodeType": "YulFunctionCall", + "src": "30697:70:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30687:6:34" + } + ] } ] }, { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "34506:6:33" + "nodeType": "YulBlock", + "src": "30787:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30802:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30816:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30806:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "30832:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30867:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30878:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30863:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30863:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "30887:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "30842:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "30842:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30832:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "30915:313:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30930:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30961:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30972:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30957:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30957:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "30944:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "30944:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30934:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31023:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "31025:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "31025:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "31025:79:34" + } + ] }, - { + "condition": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "34519:9:33" + "src": "30995:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "34530:1:33", + "src": "31003:18:34", "type": "", - "value": "0" + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "add", + "name": "gt", "nodeType": "YulIdentifier", - "src": "34515:3:33" + "src": "30992:2:34" }, "nodeType": "YulFunctionCall", - "src": "34515:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "34462:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "34462:71:33" - }, - "nodeType": "YulExpressionStatement", - "src": "34462:71:33" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "34388:9:33", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "34400:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "34411:4:33", - "type": "" - } - ], - "src": "34318:222:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "34609:80:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "34619:22:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "34634:6:33" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "34628:5:33" + "src": "30992:30:34" + }, + "nodeType": "YulIf", + "src": "30989:117:34" }, - "nodeType": "YulFunctionCall", - "src": "34628:13:33" - }, - "variableNames": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "34619:5:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "34677:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_uint256", - "nodeType": "YulIdentifier", - "src": "34650:26:33" - }, - "nodeType": "YulFunctionCall", - "src": "34650:33:33" - }, - "nodeType": "YulExpressionStatement", - "src": "34650:33:33" - } - ] - }, - "name": "abi_decode_t_uint256_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "34587:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "34595:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "34603:5:33", - "type": "" - } - ], - "src": "34546:143:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "34772:274:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "34818:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "34820:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "34820:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "34820:79:33" - } - ] - }, - "condition": { - "arguments": [ - { + "nodeType": "YulAssignment", + "src": "31120:98:34", + "value": { "arguments": [ { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "34793:7:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31190:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31201:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31186:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31186:22:34" }, { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "34802:9:33" + "src": "31210:7:34" } ], "functionName": { - "name": "sub", + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", "nodeType": "YulIdentifier", - "src": "34789:3:33" + "src": "31138:47:34" }, "nodeType": "YulFunctionCall", - "src": "34789:23:33" + "src": "31138:80:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34814:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "34785:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "34785:32:33" - }, - "nodeType": "YulIf", - "src": "34782:119:33" + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "31120:6:34" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "31128:6:34" + } + ] + } + ] }, { "nodeType": "YulBlock", - "src": "34911:128:33", + "src": "31238:313:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "34926:15:33", + "src": "31253:46:34", "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "34940:1:33", - "type": "", - "value": "0" + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31284:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31295:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31280:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31280:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "31267:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "31267:32:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "34930:6:33", + "src": "31257:6:34", "type": "" } ] }, + { + "body": { + "nodeType": "YulBlock", + "src": "31346:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "31348:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "31348:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "31348:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31318:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31326:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "31315:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "31315:30:34" + }, + "nodeType": "YulIf", + "src": "31312:117:34" + }, { "nodeType": "YulAssignment", - "src": "34955:74:33", + "src": "31443:98:34", "value": { "arguments": [ { @@ -20707,41 +18464,46 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "35001:9:33" + "src": "31513:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "35012:6:33" + "src": "31524:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "34997:3:33" + "src": "31509:3:34" }, "nodeType": "YulFunctionCall", - "src": "34997:22:33" + "src": "31509:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "35021:7:33" + "src": "31533:7:34" } ], "functionName": { - "name": "abi_decode_t_uint256_fromMemory", + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", "nodeType": "YulIdentifier", - "src": "34965:31:33" + "src": "31461:47:34" }, "nodeType": "YulFunctionCall", - "src": "34965:64:33" + "src": "31461:80:34" }, "variableNames": [ { - "name": "value0", + "name": "value4", + "nodeType": "YulIdentifier", + "src": "31443:6:34" + }, + { + "name": "value5", "nodeType": "YulIdentifier", - "src": "34955:6:33" + "src": "31451:6:34" } ] } @@ -20749,19 +18511,19 @@ } ] }, - "name": "abi_decode_tuple_t_uint256_fromMemory", + "name": "abi_decode_tuple_t_contract$_ILBToken_$6842t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "34742:9:33", + "src": "30433:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "34753:7:33", + "src": "30444:7:34", "type": "" } ], @@ -20769,265 +18531,51 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "34765:6:33", - "type": "" - } - ], - "src": "34695:351:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "35097:149:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "35107:25:33", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "35130:1:33" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "35112:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "35112:20:33" - }, - "variableNames": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "35107:1:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "35141:25:33", - "value": { - "arguments": [ - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "35164:1:33" - } - ], - "functionName": { - "name": "cleanup_t_uint256", - "nodeType": "YulIdentifier", - "src": "35146:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "35146:20:33" - }, - "variableNames": [ - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "35141:1:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "35175:17:33", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "35187:1:33" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "35190:1:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "35183:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "35183:9:33" - }, - "variableNames": [ - { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "35175:4:33" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "35217:22:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "35219:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "35219:18:33" - }, - "nodeType": "YulExpressionStatement", - "src": "35219:18:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "35208:4:33" - }, - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "35214:1:33" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "35205:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "35205:11:33" - }, - "nodeType": "YulIf", - "src": "35202:37:33" - } - ] - }, - "name": "checked_sub_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "35083:1:33", + "src": "30456:6:34", "type": "" }, { - "name": "y", + "name": "value1", "nodeType": "YulTypedName", - "src": "35086:1:33", + "src": "30464:6:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "diff", + "name": "value2", "nodeType": "YulTypedName", - "src": "35092:4:33", + "src": "30472:6:34", "type": "" - } - ], - "src": "35052:194:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "35315:80:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "35325:22:33", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "35340:6:33" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "35334:5:33" - }, - "nodeType": "YulFunctionCall", - "src": "35334:13:33" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "35325:5:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "35383:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_address", - "nodeType": "YulIdentifier", - "src": "35356:26:33" - }, - "nodeType": "YulFunctionCall", - "src": "35356:33:33" - }, - "nodeType": "YulExpressionStatement", - "src": "35356:33:33" - } - ] - }, - "name": "abi_decode_t_address_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ + }, { - "name": "offset", + "name": "value3", "nodeType": "YulTypedName", - "src": "35293:6:33", + "src": "30480:6:34", "type": "" }, { - "name": "end", + "name": "value4", "nodeType": "YulTypedName", - "src": "35301:3:33", + "src": "30488:6:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "value", + "name": "value5", "nodeType": "YulTypedName", - "src": "35309:5:33", + "src": "30496:6:34", "type": "" } ], - "src": "35252:143:33" + "src": "30299:1259:34" }, { "body": { "nodeType": "YulBlock", - "src": "35478:274:33", + "src": "31663:407:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "35524:83:33", + "src": "31709:83:34", "statements": [ { "expression": { @@ -21035,13 +18583,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "35526:77:33" + "src": "31711:77:34" }, "nodeType": "YulFunctionCall", - "src": "35526:79:33" + "src": "31711:79:34" }, "nodeType": "YulExpressionStatement", - "src": "35526:79:33" + "src": "31711:79:34" } ] }, @@ -21050,69 +18598,142 @@ { "arguments": [ { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "35499:7:33" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "31684:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31693:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "31680:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31680:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31705:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "31676:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31676:32:34" + }, + "nodeType": "YulIf", + "src": "31673:119:34" + }, + { + "nodeType": "YulBlock", + "src": "31802:133:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "31817:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31831:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "31821:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31846:79:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31897:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31908:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31893:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31893:22:34" }, { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "35508:9:33" + "src": "31917:7:34" } ], "functionName": { - "name": "sub", + "name": "abi_decode_t_contract$_ILBPair_$6187", "nodeType": "YulIdentifier", - "src": "35495:3:33" + "src": "31856:36:34" }, "nodeType": "YulFunctionCall", - "src": "35495:23:33" + "src": "31856:69:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "35520:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "35491:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "35491:32:33" - }, - "nodeType": "YulIf", - "src": "35488:119:33" + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "31846:6:34" + } + ] + } + ] }, { "nodeType": "YulBlock", - "src": "35617:128:33", + "src": "31945:118:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "35632:15:33", + "src": "31960:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "35646:1:33", + "src": "31974:2:34", "type": "", - "value": "0" + "value": "32" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "35636:6:33", + "src": "31964:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "35661:74:33", + "src": "31990:63:34", "value": { "arguments": [ { @@ -21120,41 +18741,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "35707:9:33" + "src": "32025:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "35718:6:33" + "src": "32036:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "35703:3:33" + "src": "32021:3:34" }, "nodeType": "YulFunctionCall", - "src": "35703:22:33" + "src": "32021:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "35727:7:33" + "src": "32045:7:34" } ], "functionName": { - "name": "abi_decode_t_address_fromMemory", + "name": "abi_decode_t_uint256", "nodeType": "YulIdentifier", - "src": "35671:31:33" + "src": "32000:20:34" }, "nodeType": "YulFunctionCall", - "src": "35671:64:33" + "src": "32000:53:34" }, "variableNames": [ { - "name": "value0", + "name": "value1", "nodeType": "YulIdentifier", - "src": "35661:6:33" + "src": "31990:6:34" } ] } @@ -21162,19 +18783,19 @@ } ] }, - "name": "abi_decode_tuple_t_address_fromMemory", + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "35448:9:33", + "src": "31625:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "35459:7:33", + "src": "31636:7:34", "type": "" } ], @@ -21182,131 +18803,22 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "35471:6:33", - "type": "" - } - ], - "src": "35401:351:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "35832:66:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "35842:50:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "35886:5:33" - } - ], - "functionName": { - "name": "convert_t_uint160_to_t_address", - "nodeType": "YulIdentifier", - "src": "35855:30:33" - }, - "nodeType": "YulFunctionCall", - "src": "35855:37:33" - }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "35842:9:33" - } - ] - } - ] - }, - "name": "convert_t_contract$_IERC20_$225_to_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "35812:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", - "nodeType": "YulTypedName", - "src": "35822:9:33", - "type": "" - } - ], - "src": "35758:140:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "35983:80:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "36000:3:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "36050:5:33" - } - ], - "functionName": { - "name": "convert_t_contract$_IERC20_$225_to_t_address", - "nodeType": "YulIdentifier", - "src": "36005:44:33" - }, - "nodeType": "YulFunctionCall", - "src": "36005:51:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "35993:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "35993:64:33" - }, - "nodeType": "YulExpressionStatement", - "src": "35993:64:33" - } - ] - }, - "name": "abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "35971:5:33", + "src": "31648:6:34", "type": "" }, { - "name": "pos", + "name": "value1", "nodeType": "YulTypedName", - "src": "35978:3:33", + "src": "31656:6:34", "type": "" } ], - "src": "35904:159:33" + "src": "31564:506:34" }, { "body": { "nodeType": "YulBlock", - "src": "36132:52:33", + "src": "32139:52:34", "statements": [ { "expression": { @@ -21314,300 +18826,153 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "36149:3:33" + "src": "32156:3:34" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "36171:5:33" + "src": "32178:5:34" } ], "functionName": { - "name": "cleanup_t_uint16", + "name": "cleanup_t_uint24", "nodeType": "YulIdentifier", - "src": "36154:16:33" + "src": "32161:16:34" }, "nodeType": "YulFunctionCall", - "src": "36154:23:33" + "src": "32161:23:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "36142:6:33" + "src": "32149:6:34" }, "nodeType": "YulFunctionCall", - "src": "36142:36:33" + "src": "32149:36:34" }, "nodeType": "YulExpressionStatement", - "src": "36142:36:33" + "src": "32149:36:34" } ] }, - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "36120:5:33", + "src": "32127:5:34", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "36127:3:33", + "src": "32134:3:34", "type": "" } ], - "src": "36069:115:33" + "src": "32076:115:34" }, { "body": { "nodeType": "YulBlock", - "src": "36396:395:33", + "src": "32293:122:34", "statements": [ { "nodeType": "YulAssignment", - "src": "36406:27:33", + "src": "32303:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "36418:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36429:3:33", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "36414:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "36414:19:33" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "36406:4:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "36501:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "36514:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36525:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "36510:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "36510:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "36443:57:33" - }, - "nodeType": "YulFunctionCall", - "src": "36443:85:33" - }, - "nodeType": "YulExpressionStatement", - "src": "36443:85:33" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "36596:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "36609:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36620:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "36605:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "36605:18:33" - } - ], - "functionName": { - "name": "abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "36538:57:33" - }, - "nodeType": "YulFunctionCall", - "src": "36538:86:33" - }, - "nodeType": "YulExpressionStatement", - "src": "36538:86:33" - }, - { - "expression": { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "36676:6:33" + "src": "32315:9:34" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "36689:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "36700:2:33", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "36685:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "36685:18:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "32326:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "name": "add", "nodeType": "YulIdentifier", - "src": "36634:41:33" + "src": "32311:3:34" }, "nodeType": "YulFunctionCall", - "src": "36634:70:33" + "src": "32311:18:34" }, - "nodeType": "YulExpressionStatement", - "src": "36634:70:33" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32303:4:34" + } + ] }, { "expression": { "arguments": [ { - "name": "value3", + "name": "value0", "nodeType": "YulIdentifier", - "src": "36756:6:33" + "src": "32381:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "36769:9:33" + "src": "32394:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "36780:2:33", + "src": "32405:1:34", "type": "", - "value": "96" + "value": "0" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "36765:3:33" + "src": "32390:3:34" }, "nodeType": "YulFunctionCall", - "src": "36765:18:33" + "src": "32390:17:34" } ], "functionName": { - "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulIdentifier", - "src": "36714:41:33" + "src": "32339:41:34" }, "nodeType": "YulFunctionCall", - "src": "36714:70:33" + "src": "32339:69:34" }, "nodeType": "YulExpressionStatement", - "src": "36714:70:33" + "src": "32339:69:34" } ] }, - "name": "abi_encode_tuple_t_contract$_IERC20_$225_t_contract$_IERC20_$225_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed", + "name": "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "36344:9:33", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "36356:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "36364:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "36372:6:33", + "src": "32265:9:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "36380:6:33", + "src": "32277:6:34", "type": "" } ], @@ -21615,290 +18980,469 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "36391:4:33", + "src": "32288:4:34", "type": "" } ], - "src": "36190:601:33" + "src": "32197:218:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32449:152:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32466:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32469:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32459:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32459:88:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32459:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32563:1:34", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32566:4:34", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32556:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32556:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32556:15:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32587:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32590:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "32580:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32580:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32580:15:34" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "32421:180:34" }, { "body": { "nodeType": "YulBlock", - "src": "36876:96:33", + "src": "32651:147:34", "statements": [ { "nodeType": "YulAssignment", - "src": "36886:22:33", + "src": "32661:25:34", "value": { "arguments": [ { - "name": "offset", + "name": "x", "nodeType": "YulIdentifier", - "src": "36901:6:33" + "src": "32684:1:34" } ], "functionName": { - "name": "mload", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "36895:5:33" + "src": "32666:17:34" }, "nodeType": "YulFunctionCall", - "src": "36895:13:33" + "src": "32666:20:34" }, "variableNames": [ { - "name": "value", + "name": "x", "nodeType": "YulIdentifier", - "src": "36886:5:33" + "src": "32661:1:34" } ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "32695:25:34", + "value": { "arguments": [ { - "name": "value", + "name": "y", + "nodeType": "YulIdentifier", + "src": "32718:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "32700:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "32700:20:34" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "32695:1:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "32729:16:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "32740:1:34" + }, + { + "name": "y", "nodeType": "YulIdentifier", - "src": "36960:5:33" + "src": "32743:1:34" } ], "functionName": { - "name": "validator_revert_t_contract$_ILBPair_$6473", + "name": "add", "nodeType": "YulIdentifier", - "src": "36917:42:33" + "src": "32736:3:34" }, "nodeType": "YulFunctionCall", - "src": "36917:49:33" + "src": "32736:9:34" }, - "nodeType": "YulExpressionStatement", - "src": "36917:49:33" + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "32729:3:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32769:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "32771:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "32771:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32771:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "32761:1:34" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "32764:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "32758:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "32758:10:34" + }, + "nodeType": "YulIf", + "src": "32755:36:34" } ] }, - "name": "abi_decode_t_contract$_ILBPair_$6473_fromMemory", + "name": "checked_add_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "x", "nodeType": "YulTypedName", - "src": "36854:6:33", + "src": "32638:1:34", "type": "" }, { - "name": "end", + "name": "y", "nodeType": "YulTypedName", - "src": "36862:3:33", + "src": "32641:1:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "sum", "nodeType": "YulTypedName", - "src": "36870:5:33", + "src": "32647:3:34", "type": "" } ], - "src": "36797:175:33" + "src": "32607:191:34" }, { "body": { "nodeType": "YulBlock", - "src": "37071:290:33", + "src": "32832:152:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "37117:83:33", - "statements": [ + "expression": { + "arguments": [ { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "37119:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "37119:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "37119:79:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "32849:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32852:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } - ] + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32842:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32842:88:34" }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "37092:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "37101:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "37088:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "37088:23:33" + "nodeType": "YulExpressionStatement", + "src": "32842:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32946:1:34", + "type": "", + "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "37113:2:33", + "src": "32949:4:34", "type": "", - "value": "32" + "value": "0x32" } ], "functionName": { - "name": "slt", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "37084:3:33" + "src": "32939:6:34" }, "nodeType": "YulFunctionCall", - "src": "37084:32:33" + "src": "32939:15:34" }, - "nodeType": "YulIf", - "src": "37081:119:33" + "nodeType": "YulExpressionStatement", + "src": "32939:15:34" }, { - "nodeType": "YulBlock", - "src": "37210:144:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "37225:15:33", - "value": { + "expression": { + "arguments": [ + { "kind": "number", "nodeType": "YulLiteral", - "src": "37239:1:33", + "src": "32970:1:34", "type": "", "value": "0" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "37229:6:33", - "type": "" - } - ] + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32973:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "32963:6:34" }, - { - "nodeType": "YulAssignment", - "src": "37254:90:33", - "value": { + "nodeType": "YulFunctionCall", + "src": "32963:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32963:15:34" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "32804:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33055:53:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33072:3:34" + }, + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "37316:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "37327:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "37312:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "37312:22:33" - }, - { - "name": "dataEnd", + "name": "value", "nodeType": "YulIdentifier", - "src": "37336:7:33" + "src": "33095:5:34" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBPair_$6473_fromMemory", + "name": "cleanup_t_address", "nodeType": "YulIdentifier", - "src": "37264:47:33" + "src": "33077:17:34" }, "nodeType": "YulFunctionCall", - "src": "37264:80:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "37254:6:33" - } - ] - } - ] + "src": "33077:24:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33065:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "33065:37:34" + }, + "nodeType": "YulExpressionStatement", + "src": "33065:37:34" } ] }, - "name": "abi_decode_tuple_t_contract$_ILBPair_$6473_fromMemory", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "value", "nodeType": "YulTypedName", - "src": "37041:9:33", + "src": "33043:5:34", "type": "" }, { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "37052:7:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", + "name": "pos", "nodeType": "YulTypedName", - "src": "37064:6:33", + "src": "33050:3:34", "type": "" } ], - "src": "36978:383:33" + "src": "32990:118:34" }, { "body": { "nodeType": "YulBlock", - "src": "37444:94:33", + "src": "33212:124:34", "statements": [ { "nodeType": "YulAssignment", - "src": "37454:22:33", + "src": "33222:26:34", "value": { "arguments": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "37469:6:33" + "src": "33234:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33245:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "mload", + "name": "add", "nodeType": "YulIdentifier", - "src": "37463:5:33" + "src": "33230:3:34" }, "nodeType": "YulFunctionCall", - "src": "37463:13:33" + "src": "33230:18:34" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "37454:5:33" + "src": "33222:4:34" } ] }, @@ -21906,228 +19450,162 @@ "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "37526:5:33" + "src": "33302:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33315:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33326:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33311:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33311:17:34" } ], "functionName": { - "name": "validator_revert_t_contract$_IERC20_$225", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "37485:40:33" + "src": "33258:43:34" }, "nodeType": "YulFunctionCall", - "src": "37485:47:33" + "src": "33258:71:34" }, "nodeType": "YulExpressionStatement", - "src": "37485:47:33" + "src": "33258:71:34" } ] }, - "name": "abi_decode_t_contract$_IERC20_$225_fromMemory", + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulTypedName", - "src": "37422:6:33", + "src": "33184:9:34", "type": "" }, { - "name": "end", + "name": "value0", "nodeType": "YulTypedName", - "src": "37430:3:33", + "src": "33196:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "tail", "nodeType": "YulTypedName", - "src": "37438:5:33", + "src": "33207:4:34", "type": "" } ], - "src": "37367:171:33" + "src": "33114:222:34" }, { "body": { "nodeType": "YulBlock", - "src": "37635:288:33", + "src": "33405:80:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "37681:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "37683:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "37683:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "37683:79:33" - } - ] - }, - "condition": { + "nodeType": "YulAssignment", + "src": "33415:22:34", + "value": { "arguments": [ { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "37656:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "37665:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "37652:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "37652:23:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37677:2:33", - "type": "", - "value": "32" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "33430:6:34" } ], "functionName": { - "name": "slt", + "name": "mload", "nodeType": "YulIdentifier", - "src": "37648:3:33" + "src": "33424:5:34" }, "nodeType": "YulFunctionCall", - "src": "37648:32:33" + "src": "33424:13:34" }, - "nodeType": "YulIf", - "src": "37645:119:33" - }, - { - "nodeType": "YulBlock", - "src": "37774:142:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "37789:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "37803:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "37793:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "37818:88:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "37878:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "37889:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "37874:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "37874:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "37898:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225_fromMemory", - "nodeType": "YulIdentifier", - "src": "37828:45:33" - }, - "nodeType": "YulFunctionCall", - "src": "37828:78:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "37818:6:33" - } - ] + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33415:5:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33473:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "33446:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "33446:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "33446:33:34" } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$225_fromMemory", + "name": "abi_decode_t_uint256_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "37605:9:33", + "src": "33383:6:34", "type": "" }, { - "name": "dataEnd", + "name": "end", "nodeType": "YulTypedName", - "src": "37616:7:33", + "src": "33391:3:34", "type": "" } ], "returnVariables": [ { - "name": "value0", + "name": "value", "nodeType": "YulTypedName", - "src": "37628:6:33", + "src": "33399:5:34", "type": "" } ], - "src": "37544:379:33" + "src": "33342:143:34" }, { "body": { "nodeType": "YulBlock", - "src": "38009:277:33", + "src": "33568:274:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "38055:83:33", + "src": "33614:83:34", "statements": [ { "expression": { @@ -22135,13 +19613,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "38057:77:33" + "src": "33616:77:34" }, "nodeType": "YulFunctionCall", - "src": "38057:79:33" + "src": "33616:79:34" }, "nodeType": "YulExpressionStatement", - "src": "38057:79:33" + "src": "33616:79:34" } ] }, @@ -22152,26 +19630,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "38030:7:33" + "src": "33589:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "38039:9:33" + "src": "33598:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "38026:3:33" + "src": "33585:3:34" }, "nodeType": "YulFunctionCall", - "src": "38026:23:33" + "src": "33585:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "38051:2:33", + "src": "33610:2:34", "type": "", "value": "32" } @@ -22179,25 +19657,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "38022:3:33" + "src": "33581:3:34" }, "nodeType": "YulFunctionCall", - "src": "38022:32:33" + "src": "33581:32:34" }, "nodeType": "YulIf", - "src": "38019:119:33" + "src": "33578:119:34" }, { "nodeType": "YulBlock", - "src": "38148:131:33", + "src": "33707:128:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "38163:15:33", + "src": "33722:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "38177:1:33", + "src": "33736:1:34", "type": "", "value": "0" }, @@ -22205,14 +19683,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "38167:6:33", + "src": "33726:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "38192:77:33", + "src": "33751:74:34", "value": { "arguments": [ { @@ -22220,41 +19698,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "38241:9:33" + "src": "33797:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "38252:6:33" + "src": "33808:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "38237:3:33" + "src": "33793:3:34" }, "nodeType": "YulFunctionCall", - "src": "38237:22:33" + "src": "33793:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "38261:7:33" + "src": "33817:7:34" } ], "functionName": { - "name": "abi_decode_t_contract$_IERC20_$225", + "name": "abi_decode_t_uint256_fromMemory", "nodeType": "YulIdentifier", - "src": "38202:34:33" + "src": "33761:31:34" }, "nodeType": "YulFunctionCall", - "src": "38202:67:33" + "src": "33761:64:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "38192:6:33" + "src": "33751:6:34" } ] } @@ -22262,19 +19740,19 @@ } ] }, - "name": "abi_decode_tuple_t_contract$_IERC20_$225", + "name": "abi_decode_tuple_t_uint256_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "37979:9:33", + "src": "33538:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "37990:7:33", + "src": "33549:7:34", "type": "" } ], @@ -22282,322 +19760,544 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "38002:6:33", + "src": "33561:6:34", "type": "" } ], - "src": "37929:357:33" + "src": "33491:351:34" }, { "body": { "nodeType": "YulBlock", - "src": "38502:454:33", + "src": "33893:149:34", "statements": [ { "nodeType": "YulAssignment", - "src": "38512:27:33", + "src": "33903:25:34", "value": { "arguments": [ { - "name": "headStart", + "name": "x", "nodeType": "YulIdentifier", - "src": "38524:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "38535:3:33", - "type": "", - "value": "160" + "src": "33926:1:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "38520:3:33" + "src": "33908:17:34" }, "nodeType": "YulFunctionCall", - "src": "38520:19:33" + "src": "33908:20:34" }, "variableNames": [ { - "name": "tail", + "name": "x", "nodeType": "YulIdentifier", - "src": "38512:4:33" + "src": "33903:1:34" } ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "33937:25:34", + "value": { "arguments": [ { - "name": "value0", + "name": "y", "nodeType": "YulIdentifier", - "src": "38593:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "38606:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "38617:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "38602:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "38602:17:33" + "src": "33960:1:34" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "38549:43:33" + "src": "33942:17:34" }, "nodeType": "YulFunctionCall", - "src": "38549:71:33" + "src": "33942:20:34" }, - "nodeType": "YulExpressionStatement", - "src": "38549:71:33" + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "33937:1:34" + } + ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "33971:17:34", + "value": { "arguments": [ { - "name": "value1", + "name": "x", "nodeType": "YulIdentifier", - "src": "38674:6:33" + "src": "33983:1:34" }, { - "arguments": [ - { - "name": "headStart", + "name": "y", + "nodeType": "YulIdentifier", + "src": "33986:1:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "33979:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33979:9:34" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "33971:4:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34013:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "38687:9:33" + "src": "34015:16:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "38698:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "38683:3:33" + "nodeType": "YulFunctionCall", + "src": "34015:18:34" }, - "nodeType": "YulFunctionCall", - "src": "38683:18:33" + "nodeType": "YulExpressionStatement", + "src": "34015:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "34004:4:34" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "34010:1:34" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "gt", "nodeType": "YulIdentifier", - "src": "38630:43:33" + "src": "34001:2:34" }, "nodeType": "YulFunctionCall", - "src": "38630:72:33" + "src": "34001:11:34" }, - "nodeType": "YulExpressionStatement", - "src": "38630:72:33" + "nodeType": "YulIf", + "src": "33998:37:34" + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "33879:1:34", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "33882:1:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "33888:4:34", + "type": "" + } + ], + "src": "33848:194:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34111:80:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34121:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "34136:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "34130:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "34130:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34121:5:34" + } + ] }, { "expression": { "arguments": [ { - "name": "value2", + "name": "value", "nodeType": "YulIdentifier", - "src": "38756:6:33" - }, + "src": "34179:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "34152:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "34152:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "34152:33:34" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "34089:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "34097:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34105:5:34", + "type": "" + } + ], + "src": "34048:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34274:274:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "34320:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "34322:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "34322:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "34322:79:34" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "38769:9:33" + "src": "34295:7:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "38780:2:33", - "type": "", - "value": "64" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34304:9:34" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "38765:3:33" + "src": "34291:3:34" }, "nodeType": "YulFunctionCall", - "src": "38765:18:33" + "src": "34291:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34316:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "slt", "nodeType": "YulIdentifier", - "src": "38712:43:33" + "src": "34287:3:34" }, "nodeType": "YulFunctionCall", - "src": "38712:72:33" + "src": "34287:32:34" }, - "nodeType": "YulExpressionStatement", - "src": "38712:72:33" + "nodeType": "YulIf", + "src": "34284:119:34" }, { - "expression": { - "arguments": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "38838:6:33" + "nodeType": "YulBlock", + "src": "34413:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "34428:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34442:1:34", + "type": "", + "value": "0" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "34432:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "34457:74:34", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "38851:9:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34503:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "34514:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34499:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "34499:22:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "38862:2:33", - "type": "", - "value": "96" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "34523:7:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_address_fromMemory", "nodeType": "YulIdentifier", - "src": "38847:3:33" + "src": "34467:31:34" }, "nodeType": "YulFunctionCall", - "src": "38847:18:33" + "src": "34467:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "34457:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34244:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "34255:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "34267:6:34", + "type": "" + } + ], + "src": "34197:351:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34628:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34638:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34682:5:34" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "convert_t_uint160_to_t_address", "nodeType": "YulIdentifier", - "src": "38794:43:33" + "src": "34651:30:34" }, "nodeType": "YulFunctionCall", - "src": "38794:72:33" + "src": "34651:37:34" }, - "nodeType": "YulExpressionStatement", - "src": "38794:72:33" - }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "34638:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_IERC20_$479_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34608:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "34618:9:34", + "type": "" + } + ], + "src": "34554:140:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34779:80:34", + "statements": [ { "expression": { "arguments": [ { - "name": "value4", + "name": "pos", "nodeType": "YulIdentifier", - "src": "38920:6:33" + "src": "34796:3:34" }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "38933:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "38944:3:33", - "type": "", - "value": "128" + "src": "34846:5:34" } ], "functionName": { - "name": "add", + "name": "convert_t_contract$_IERC20_$479_to_t_address", "nodeType": "YulIdentifier", - "src": "38929:3:33" + "src": "34801:44:34" }, "nodeType": "YulFunctionCall", - "src": "38929:19:33" + "src": "34801:51:34" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "38876:43:33" + "src": "34789:6:34" }, "nodeType": "YulFunctionCall", - "src": "38876:73:33" + "src": "34789:64:34" }, "nodeType": "YulExpressionStatement", - "src": "38876:73:33" + "src": "34789:64:34" } ] }, - "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "38442:9:33", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "38454:6:33", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "38462:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "38470:6:33", - "type": "" - }, - { - "name": "value1", + "name": "value", "nodeType": "YulTypedName", - "src": "38478:6:33", + "src": "34767:5:34", "type": "" }, { - "name": "value0", - "nodeType": "YulTypedName", - "src": "38486:6:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", + "name": "pos", "nodeType": "YulTypedName", - "src": "38497:4:33", + "src": "34774:3:34", "type": "" } ], - "src": "38292:664:33" + "src": "34700:159:34" }, { "body": { "nodeType": "YulBlock", - "src": "39021:50:33", + "src": "34928:52:34", "statements": [ { "expression": { @@ -22605,92 +20305,92 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "39038:3:33" + "src": "34945:3:34" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "39058:5:33" + "src": "34967:5:34" } ], "functionName": { - "name": "cleanup_t_bool", + "name": "cleanup_t_uint16", "nodeType": "YulIdentifier", - "src": "39043:14:33" + "src": "34950:16:34" }, "nodeType": "YulFunctionCall", - "src": "39043:21:33" + "src": "34950:23:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "39031:6:33" + "src": "34938:6:34" }, "nodeType": "YulFunctionCall", - "src": "39031:34:33" + "src": "34938:36:34" }, "nodeType": "YulExpressionStatement", - "src": "39031:34:33" + "src": "34938:36:34" } ] }, - "name": "abi_encode_t_bool_to_t_bool_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "39009:5:33", + "src": "34916:5:34", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "39016:3:33", + "src": "34923:3:34", "type": "" } ], - "src": "38962:109:33" + "src": "34865:115:34" }, { "body": { "nodeType": "YulBlock", - "src": "39197:200:33", + "src": "35192:395:34", "statements": [ { "nodeType": "YulAssignment", - "src": "39207:26:33", + "src": "35202:27:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39219:9:33" + "src": "35214:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39230:2:33", + "src": "35225:3:34", "type": "", - "value": "64" + "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39215:3:33" + "src": "35210:3:34" }, "nodeType": "YulFunctionCall", - "src": "39215:18:33" + "src": "35210:19:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "39207:4:33" + "src": "35202:4:34" } ] }, @@ -22698,109 +20398,207 @@ "expression": { "arguments": [ { - "name": "value0", + "name": "value0", + "nodeType": "YulIdentifier", + "src": "35297:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35310:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35321:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35306:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35306:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "35239:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "35239:85:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35239:85:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "35392:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35405:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35416:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35401:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35401:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "35334:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "35334:86:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35334:86:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", "nodeType": "YulIdentifier", - "src": "39287:6:33" + "src": "35472:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39300:9:33" + "src": "35485:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39311:1:33", + "src": "35496:2:34", "type": "", - "value": "0" + "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39296:3:33" + "src": "35481:3:34" }, "nodeType": "YulFunctionCall", - "src": "39296:17:33" + "src": "35481:18:34" } ], "functionName": { - "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", "nodeType": "YulIdentifier", - "src": "39243:43:33" + "src": "35430:41:34" }, "nodeType": "YulFunctionCall", - "src": "39243:71:33" + "src": "35430:70:34" }, "nodeType": "YulExpressionStatement", - "src": "39243:71:33" + "src": "35430:70:34" }, { "expression": { "arguments": [ { - "name": "value1", + "name": "value3", "nodeType": "YulIdentifier", - "src": "39362:6:33" + "src": "35552:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39375:9:33" + "src": "35565:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39386:2:33", + "src": "35576:2:34", "type": "", - "value": "32" + "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "39371:3:33" + "src": "35561:3:34" }, "nodeType": "YulFunctionCall", - "src": "39371:18:33" + "src": "35561:18:34" } ], "functionName": { - "name": "abi_encode_t_bool_to_t_bool_fromStack", + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", "nodeType": "YulIdentifier", - "src": "39324:37:33" + "src": "35510:41:34" }, "nodeType": "YulFunctionCall", - "src": "39324:66:33" + "src": "35510:70:34" }, "nodeType": "YulExpressionStatement", - "src": "39324:66:33" + "src": "35510:70:34" } ] }, - "name": "abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed", + "name": "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "39161:9:33", + "src": "35140:9:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "35152:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "35160:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "39173:6:33", + "src": "35168:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "39181:6:33", + "src": "35176:6:34", "type": "" } ], @@ -22808,41 +20606,41 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "39192:4:33", + "src": "35187:4:34", "type": "" } ], - "src": "39077:320:33" + "src": "34986:601:34" }, { "body": { "nodeType": "YulBlock", - "src": "39466:80:33", + "src": "35672:96:34", "statements": [ { "nodeType": "YulAssignment", - "src": "39476:22:33", + "src": "35682:22:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "39491:6:33" + "src": "35697:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "39485:5:33" + "src": "35691:5:34" }, "nodeType": "YulFunctionCall", - "src": "39485:13:33" + "src": "35691:13:34" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "39476:5:33" + "src": "35682:5:34" } ] }, @@ -22852,35 +20650,35 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "39534:5:33" + "src": "35756:5:34" } ], "functionName": { - "name": "validator_revert_t_uint128", + "name": "validator_revert_t_contract$_ILBPair_$6187", "nodeType": "YulIdentifier", - "src": "39507:26:33" + "src": "35713:42:34" }, "nodeType": "YulFunctionCall", - "src": "39507:33:33" + "src": "35713:49:34" }, "nodeType": "YulExpressionStatement", - "src": "39507:33:33" + "src": "35713:49:34" } ] }, - "name": "abi_decode_t_uint128_fromMemory", + "name": "abi_decode_t_contract$_ILBPair_$6187_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "39444:6:33", + "src": "35650:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "39452:3:33", + "src": "35658:3:34", "type": "" } ], @@ -22888,21 +20686,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "39460:5:33", + "src": "35666:5:34", "type": "" } ], - "src": "39403:143:33" + "src": "35593:175:34" }, { "body": { "nodeType": "YulBlock", - "src": "39663:552:33", + "src": "35867:290:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "39709:83:33", + "src": "35913:83:34", "statements": [ { "expression": { @@ -22910,13 +20708,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "39711:77:33" + "src": "35915:77:34" }, "nodeType": "YulFunctionCall", - "src": "39711:79:33" + "src": "35915:79:34" }, "nodeType": "YulExpressionStatement", - "src": "39711:79:33" + "src": "35915:79:34" } ] }, @@ -22927,52 +20725,52 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "39684:7:33" + "src": "35888:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "39693:9:33" + "src": "35897:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "39680:3:33" + "src": "35884:3:34" }, "nodeType": "YulFunctionCall", - "src": "39680:23:33" + "src": "35884:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "39705:2:33", + "src": "35909:2:34", "type": "", - "value": "96" + "value": "32" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "39676:3:33" + "src": "35880:3:34" }, "nodeType": "YulFunctionCall", - "src": "39676:32:33" + "src": "35880:32:34" }, "nodeType": "YulIf", - "src": "39673:119:33" + "src": "35877:119:34" }, { "nodeType": "YulBlock", - "src": "39802:128:33", + "src": "36006:144:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "39817:15:33", + "src": "36021:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "39831:1:33", + "src": "36035:1:34", "type": "", "value": "0" }, @@ -22980,160 +20778,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "39821:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "39846:74:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "39892:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "39903:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "39888:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "39888:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "39912:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint128_fromMemory", - "nodeType": "YulIdentifier", - "src": "39856:31:33" - }, - "nodeType": "YulFunctionCall", - "src": "39856:64:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "39846:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "39940:129:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "39955:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "39969:2:33", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "39959:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "39985:74:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "40031:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "40042:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "40027:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "40027:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "40051:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint128_fromMemory", - "nodeType": "YulIdentifier", - "src": "39995:31:33" - }, - "nodeType": "YulFunctionCall", - "src": "39995:64:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "39985:6:33" - } - ] - } - ] - }, - { - "nodeType": "YulBlock", - "src": "40079:129:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "40094:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "40108:2:33", - "type": "", - "value": "64" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "40098:6:33", + "src": "36025:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "40124:74:33", + "src": "36050:90:34", "value": { "arguments": [ { @@ -23141,865 +20793,683 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "40170:9:33" + "src": "36112:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "40181:6:33" + "src": "36123:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "40166:3:33" + "src": "36108:3:34" }, "nodeType": "YulFunctionCall", - "src": "40166:22:33" + "src": "36108:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "40190:7:33" + "src": "36132:7:34" } ], "functionName": { - "name": "abi_decode_t_uint128_fromMemory", - "nodeType": "YulIdentifier", - "src": "40134:31:33" - }, - "nodeType": "YulFunctionCall", - "src": "40134:64:33" - }, - "variableNames": [ - { - "name": "value2", + "name": "abi_decode_t_contract$_ILBPair_$6187_fromMemory", "nodeType": "YulIdentifier", - "src": "40124:6:33" - } - ] - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "39617:9:33", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "39628:7:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "39640:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "39648:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "39656:6:33", - "type": "" - } - ], - "src": "39552:663:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "40310:28:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "40327:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "40330:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "40320:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "40320:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "40320:12:33" - } - ] - }, - "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", - "nodeType": "YulFunctionDefinition", - "src": "40221:117:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "40395:47:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "40418:3:33" - }, - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "40423:3:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "40428:6:33" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "40405:12:33" - }, - "nodeType": "YulFunctionCall", - "src": "40405:30:33" - }, - "nodeType": "YulExpressionStatement", - "src": "40405:30:33" + "src": "36060:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "36060:80:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "36050:6:34" + } + ] + } + ] } ] }, - "name": "copy_calldata_to_memory", + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "src", + "name": "headStart", "nodeType": "YulTypedName", - "src": "40377:3:33", + "src": "35837:9:34", "type": "" }, { - "name": "dst", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "40382:3:33", + "src": "35848:7:34", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "length", + "name": "value0", "nodeType": "YulTypedName", - "src": "40387:6:33", + "src": "35860:6:34", "type": "" } ], - "src": "40344:98:33" + "src": "35774:383:34" }, { "body": { "nodeType": "YulBlock", - "src": "40610:405:33", + "src": "36216:32:34", "statements": [ { "nodeType": "YulAssignment", - "src": "40620:93:33", + "src": "36226:16:34", "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "40701:3:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "40706:6:33" - } - ], - "functionName": { - "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", - "nodeType": "YulIdentifier", - "src": "40627:73:33" - }, - "nodeType": "YulFunctionCall", - "src": "40627:86:33" + "name": "value", + "nodeType": "YulIdentifier", + "src": "36237:5:34" }, "variableNames": [ { - "name": "pos", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "40620:3:33" + "src": "36226:7:34" } ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "40805:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", - "nodeType": "YulIdentifier", - "src": "40807:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "40807:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "40807:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "40729:6:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "40737:66:33", - "type": "", - "value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "40726:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "40726:78:33" - }, - "nodeType": "YulIf", - "src": "40723:165:33" - }, + } + ] + }, + "name": "cleanup_t_rational_1_by_1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36198:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "36208:7:34", + "type": "" + } + ], + "src": "36163:85:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36298:57:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "40897:27:33", + "src": "36308:41:34", "value": { "arguments": [ { - "name": "length", + "name": "value", "nodeType": "YulIdentifier", - "src": "40911:6:33" + "src": "36323:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "40919:4:33", + "src": "36330:18:34", "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "40907:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "40907:17:33" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "40897:6:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "40958:5:33" - }, - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "40965:3:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "40970:6:33" - } - ], - "functionName": { - "name": "copy_calldata_to_memory", - "nodeType": "YulIdentifier", - "src": "40934:23:33" - }, - "nodeType": "YulFunctionCall", - "src": "40934:43:33" - }, - "nodeType": "YulExpressionStatement", - "src": "40934:43:33" - }, - { - "nodeType": "YulAssignment", - "src": "40986:23:33", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "40997:3:33" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "41002:6:33" + "value": "0xffffffffffffffff" } ], "functionName": { - "name": "add", + "name": "and", "nodeType": "YulIdentifier", - "src": "40993:3:33" + "src": "36319:3:34" }, "nodeType": "YulFunctionCall", - "src": "40993:16:33" + "src": "36319:30:34" }, "variableNames": [ { - "name": "end", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "40986:3:33" + "src": "36308:7:34" } ] } ] }, - "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "name": "cleanup_t_uint64", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "start", - "nodeType": "YulTypedName", - "src": "40583:5:33", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "40590:6:33", - "type": "" - }, - { - "name": "pos", + "name": "value", "nodeType": "YulTypedName", - "src": "40598:3:33", + "src": "36280:5:34", "type": "" } ], "returnVariables": [ { - "name": "end", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "40606:3:33", + "src": "36290:7:34", "type": "" } ], - "src": "40478:537:33" + "src": "36254:101:34" }, { "body": { "nodeType": "YulBlock", - "src": "41323:593:33", + "src": "36428:89:34", "statements": [ { "nodeType": "YulAssignment", - "src": "41333:27:33", + "src": "36438:73:34", "value": { "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "41345:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "41356:3:33", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "41341:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "41341:19:33" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "41333:4:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "41414:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "41427:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "41438:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "41423:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "41423:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "41370:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "41370:71:33" - }, - "nodeType": "YulExpressionStatement", - "src": "41370:71:33" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "41495:6:33" - }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "41508:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "41519:2:33", - "type": "", - "value": "32" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "36503:5:34" + } + ], + "functionName": { + "name": "cleanup_t_rational_1_by_1", + "nodeType": "YulIdentifier", + "src": "36477:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "36477:32:34" } ], "functionName": { - "name": "add", + "name": "identity", "nodeType": "YulIdentifier", - "src": "41504:3:33" + "src": "36468:8:34" }, "nodeType": "YulFunctionCall", - "src": "41504:18:33" + "src": "36468:42:34" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "cleanup_t_uint64", "nodeType": "YulIdentifier", - "src": "41451:43:33" + "src": "36451:16:34" }, "nodeType": "YulFunctionCall", - "src": "41451:72:33" + "src": "36451:60:34" }, - "nodeType": "YulExpressionStatement", - "src": "41451:72:33" - }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "36438:9:34" + } + ] + } + ] + }, + "name": "convert_t_rational_1_by_1_to_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36408:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "36418:9:34", + "type": "" + } + ], + "src": "36361:156:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36595:73:34", + "statements": [ { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "41544:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "41555:2:33", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "41540:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "41540:18:33" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "36612:3:34" }, { "arguments": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "41564:4:33" - }, - { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "41570:9:33" + "src": "36655:5:34" } ], "functionName": { - "name": "sub", + "name": "convert_t_rational_1_by_1_to_t_uint64", "nodeType": "YulIdentifier", - "src": "41560:3:33" + "src": "36617:37:34" }, "nodeType": "YulFunctionCall", - "src": "41560:20:33" + "src": "36617:44:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "41533:6:33" + "src": "36605:6:34" }, "nodeType": "YulFunctionCall", - "src": "41533:48:33" + "src": "36605:57:34" }, "nodeType": "YulExpressionStatement", - "src": "41533:48:33" - }, + "src": "36605:57:34" + } + ] + }, + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36583:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "36590:3:34", + "type": "" + } + ], + "src": "36523:145:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36779:131:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "41590:126:33", + "src": "36789:26:34", "value": { "arguments": [ { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "41694:6:33" - }, - { - "name": "value3", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "41702:6:33" + "src": "36801:9:34" }, { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "41711:4:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "36812:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "name": "add", "nodeType": "YulIdentifier", - "src": "41598:95:33" + "src": "36797:3:34" }, "nodeType": "YulFunctionCall", - "src": "41598:118:33" + "src": "36797:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "41590:4:33" + "src": "36789:4:34" } ] }, { "expression": { "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "36876:6:34" + }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "41737:9:33" + "src": "36889:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "41748:2:33", + "src": "36900:1:34", "type": "", - "value": "96" + "value": "0" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "41733:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "41733:18:33" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "41757:4:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "41763:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "41753:3:33" + "src": "36885:3:34" }, "nodeType": "YulFunctionCall", - "src": "41753:20:33" + "src": "36885:17:34" } ], "functionName": { - "name": "mstore", + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", "nodeType": "YulIdentifier", - "src": "41726:6:33" + "src": "36825:50:34" }, "nodeType": "YulFunctionCall", - "src": "41726:48:33" + "src": "36825:78:34" }, "nodeType": "YulExpressionStatement", - "src": "41726:48:33" - }, + "src": "36825:78:34" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36751:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "36763:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36774:4:34", + "type": "" + } + ], + "src": "36674:236:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36993:94:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "41783:126:33", + "src": "37003:22:34", "value": { "arguments": [ { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "41887:6:33" - }, - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "41895:6:33" - }, - { - "name": "tail", + "name": "offset", "nodeType": "YulIdentifier", - "src": "41904:4:33" + "src": "37018:6:34" } ], "functionName": { - "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "name": "mload", "nodeType": "YulIdentifier", - "src": "41791:95:33" + "src": "37012:5:34" }, "nodeType": "YulFunctionCall", - "src": "41791:118:33" + "src": "37012:13:34" }, "variableNames": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "41783:4:33" + "src": "37003:5:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "37075:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "37034:40:34" + }, + "nodeType": "YulFunctionCall", + "src": "37034:47:34" + }, + "nodeType": "YulExpressionStatement", + "src": "37034:47:34" } ] }, - "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "name": "abi_decode_t_contract$_IERC20_$479_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "41255:9:33", - "type": "" - }, - { - "name": "value5", - "nodeType": "YulTypedName", - "src": "41267:6:33", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "41275:6:33", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "41283:6:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "41291:6:33", - "type": "" - }, - { - "name": "value1", + "name": "offset", "nodeType": "YulTypedName", - "src": "41299:6:33", + "src": "36971:6:34", "type": "" }, { - "name": "value0", + "name": "end", "nodeType": "YulTypedName", - "src": "41307:6:33", + "src": "36979:3:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value", "nodeType": "YulTypedName", - "src": "41318:4:33", + "src": "36987:5:34", "type": "" } ], - "src": "41021:895:33" + "src": "36916:171:34" }, { "body": { "nodeType": "YulBlock", - "src": "41984:79:33", + "src": "37184:288:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "41994:22:33", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "37230:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "37232:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "37232:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "37232:79:34" + } + ] + }, + "condition": { "arguments": [ { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "42009:6:33" + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "37205:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37214:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "37201:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37201:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37226:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "mload", + "name": "slt", "nodeType": "YulIdentifier", - "src": "42003:5:33" + "src": "37197:3:34" }, "nodeType": "YulFunctionCall", - "src": "42003:13:33" + "src": "37197:32:34" }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "41994:5:33" - } - ] + "nodeType": "YulIf", + "src": "37194:119:34" }, { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "42051:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_uint24", - "nodeType": "YulIdentifier", - "src": "42025:25:33" + "nodeType": "YulBlock", + "src": "37323:142:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "37338:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37352:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "37342:6:34", + "type": "" + } + ] }, - "nodeType": "YulFunctionCall", - "src": "42025:32:33" - }, - "nodeType": "YulExpressionStatement", - "src": "42025:32:33" + { + "nodeType": "YulAssignment", + "src": "37367:88:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37427:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "37438:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37423:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37423:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "37447:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479_fromMemory", + "nodeType": "YulIdentifier", + "src": "37377:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "37377:78:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "37367:6:34" + } + ] + } + ] } ] }, - "name": "abi_decode_t_uint24_fromMemory", + "name": "abi_decode_tuple_t_contract$_IERC20_$479_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulTypedName", - "src": "41962:6:33", + "src": "37154:9:34", "type": "" }, { - "name": "end", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "41970:3:33", + "src": "37165:7:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "value0", "nodeType": "YulTypedName", - "src": "41978:5:33", + "src": "37177:6:34", "type": "" } ], - "src": "41922:141:33" + "src": "37093:379:34" }, { "body": { "nodeType": "YulBlock", - "src": "42145:273:33", + "src": "37558:277:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "42191:83:33", + "src": "37604:83:34", "statements": [ { "expression": { @@ -24007,13 +21477,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "42193:77:33" + "src": "37606:77:34" }, "nodeType": "YulFunctionCall", - "src": "42193:79:33" + "src": "37606:79:34" }, "nodeType": "YulExpressionStatement", - "src": "42193:79:33" + "src": "37606:79:34" } ] }, @@ -24024,26 +21494,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "42166:7:33" + "src": "37579:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "42175:9:33" + "src": "37588:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "42162:3:33" + "src": "37575:3:34" }, "nodeType": "YulFunctionCall", - "src": "42162:23:33" + "src": "37575:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "42187:2:33", + "src": "37600:2:34", "type": "", "value": "32" } @@ -24051,25 +21521,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "42158:3:33" + "src": "37571:3:34" }, "nodeType": "YulFunctionCall", - "src": "42158:32:33" + "src": "37571:32:34" }, "nodeType": "YulIf", - "src": "42155:119:33" + "src": "37568:119:34" }, { "nodeType": "YulBlock", - "src": "42284:127:33", + "src": "37697:131:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "42299:15:33", + "src": "37712:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "42313:1:33", + "src": "37726:1:34", "type": "", "value": "0" }, @@ -24077,14 +21547,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "42303:6:33", + "src": "37716:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "42328:73:33", + "src": "37741:77:34", "value": { "arguments": [ { @@ -24092,41 +21562,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "42373:9:33" + "src": "37790:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "42384:6:33" + "src": "37801:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "42369:3:33" + "src": "37786:3:34" }, "nodeType": "YulFunctionCall", - "src": "42369:22:33" + "src": "37786:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "42393:7:33" + "src": "37810:7:34" } ], "functionName": { - "name": "abi_decode_t_uint24_fromMemory", + "name": "abi_decode_t_contract$_IERC20_$479", "nodeType": "YulIdentifier", - "src": "42338:30:33" + "src": "37751:34:34" }, "nodeType": "YulFunctionCall", - "src": "42338:63:33" + "src": "37751:67:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "42328:6:33" + "src": "37741:6:34" } ] } @@ -24134,19 +21604,19 @@ } ] }, - "name": "abi_decode_tuple_t_uint24_fromMemory", + "name": "abi_decode_tuple_t_contract$_IERC20_$479", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "42115:9:33", + "src": "37528:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "42126:7:33", + "src": "37539:7:34", "type": "" } ], @@ -24154,543 +21624,567 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "42138:6:33", + "src": "37551:6:34", "type": "" } ], - "src": "42069:349:33" + "src": "37478:357:34" }, { "body": { "nodeType": "YulBlock", - "src": "42452:152:33", + "src": "38051:454:34", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "38061:27:34", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42469:1:33", - "type": "", - "value": "0" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38073:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "42472:77:33", + "src": "38084:3:34", "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + "value": "160" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "42462:6:33" + "src": "38069:3:34" }, "nodeType": "YulFunctionCall", - "src": "42462:88:33" + "src": "38069:19:34" }, - "nodeType": "YulExpressionStatement", - "src": "42462:88:33" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38061:4:34" + } + ] }, { "expression": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42566:1:33", - "type": "", - "value": "4" + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38142:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42569:4:33", - "type": "", - "value": "0x21" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38155:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38166:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38151:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38151:17:34" } ], "functionName": { - "name": "mstore", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "42559:6:33" + "src": "38098:43:34" }, "nodeType": "YulFunctionCall", - "src": "42559:15:33" + "src": "38098:71:34" }, "nodeType": "YulExpressionStatement", - "src": "42559:15:33" + "src": "38098:71:34" }, { "expression": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42590:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42593:4:33", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "42583:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "42583:15:33" - }, - "nodeType": "YulExpressionStatement", - "src": "42583:15:33" - } - ] - }, - "name": "panic_error_0x21", - "nodeType": "YulFunctionDefinition", - "src": "42424:180:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "42655:69:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "42665:53:33", - "value": { - "arguments": [ - { - "name": "value", + "name": "value1", "nodeType": "YulIdentifier", - "src": "42680:5:33" + "src": "38223:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42687:30:33", - "type": "", - "value": "0xffffffffffffffffffffffffffff" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38236:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38247:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38232:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38232:18:34" } ], "functionName": { - "name": "and", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "42676:3:33" + "src": "38179:43:34" }, - "nodeType": "YulFunctionCall", - "src": "42676:42:33" - }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "42665:7:33" - } - ] - } - ] - }, - "name": "cleanup_t_uint112", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "42637:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "42647:7:33", - "type": "" - } - ], - "src": "42610:114:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "42773:79:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "42830:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42839:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "42842:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "42832:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "42832:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "42832:12:33" - } - ] + "nodeType": "YulFunctionCall", + "src": "38179:72:34" }, - "condition": { + "nodeType": "YulExpressionStatement", + "src": "38179:72:34" + }, + { + "expression": { "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "38305:6:34" + }, { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "42796:5:33" + "src": "38318:9:34" }, { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "42821:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint112", - "nodeType": "YulIdentifier", - "src": "42803:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "42803:24:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "38329:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "eq", + "name": "add", "nodeType": "YulIdentifier", - "src": "42793:2:33" + "src": "38314:3:34" }, "nodeType": "YulFunctionCall", - "src": "42793:35:33" + "src": "38314:18:34" } ], "functionName": { - "name": "iszero", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "42786:6:33" + "src": "38261:43:34" }, "nodeType": "YulFunctionCall", - "src": "42786:43:33" + "src": "38261:72:34" }, - "nodeType": "YulIf", - "src": "42783:63:33" - } - ] - }, - "name": "validator_revert_t_uint112", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "42766:5:33", - "type": "" - } - ], - "src": "42730:122:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "42921:80:33", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "38261:72:34" + }, { - "nodeType": "YulAssignment", - "src": "42931:22:33", - "value": { + "expression": { "arguments": [ { - "name": "offset", + "name": "value3", "nodeType": "YulIdentifier", - "src": "42946:6:33" + "src": "38387:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38400:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38411:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38396:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38396:18:34" } ], "functionName": { - "name": "mload", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "42940:5:33" + "src": "38343:43:34" }, "nodeType": "YulFunctionCall", - "src": "42940:13:33" + "src": "38343:72:34" }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "42931:5:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "38343:72:34" }, { "expression": { "arguments": [ { - "name": "value", + "name": "value4", "nodeType": "YulIdentifier", - "src": "42989:5:33" + "src": "38469:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38482:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38493:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38478:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38478:19:34" } ], "functionName": { - "name": "validator_revert_t_uint112", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "42962:26:33" + "src": "38425:43:34" }, "nodeType": "YulFunctionCall", - "src": "42962:33:33" + "src": "38425:73:34" }, "nodeType": "YulExpressionStatement", - "src": "42962:33:33" + "src": "38425:73:34" } ] }, - "name": "abi_decode_t_uint112_fromMemory", + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulTypedName", - "src": "42899:6:33", + "src": "37991:9:34", "type": "" }, { - "name": "end", + "name": "value4", + "nodeType": "YulTypedName", + "src": "38003:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "38011:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "38019:6:34", + "type": "" + }, + { + "name": "value1", "nodeType": "YulTypedName", - "src": "42907:3:33", + "src": "38027:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38035:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "tail", "nodeType": "YulTypedName", - "src": "42915:5:33", + "src": "38046:4:34", "type": "" } ], - "src": "42858:143:33" + "src": "37841:664:34" }, { "body": { "nodeType": "YulBlock", - "src": "43051:49:33", + "src": "38570:50:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "43061:33:33", - "value": { + "expression": { "arguments": [ { - "name": "value", + "name": "pos", "nodeType": "YulIdentifier", - "src": "43076:5:33" + "src": "38587:3:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "43083:10:33", - "type": "", - "value": "0xffffffff" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "38607:5:34" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "38592:14:34" + }, + "nodeType": "YulFunctionCall", + "src": "38592:21:34" } ], "functionName": { - "name": "and", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "43072:3:33" + "src": "38580:6:34" }, "nodeType": "YulFunctionCall", - "src": "43072:22:33" + "src": "38580:34:34" }, - "variableNames": [ - { - "name": "cleaned", - "nodeType": "YulIdentifier", - "src": "43061:7:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "38580:34:34" } ] }, - "name": "cleanup_t_uint32", + "name": "abi_encode_t_bool_to_t_bool_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", - "src": "43033:5:33", + "src": "38558:5:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "cleaned", + "name": "pos", "nodeType": "YulTypedName", - "src": "43043:7:33", + "src": "38565:3:34", "type": "" } ], - "src": "43007:93:33" + "src": "38511:109:34" }, { "body": { "nodeType": "YulBlock", - "src": "43148:78:33", + "src": "38746:200:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "43204:16:33", - "statements": [ + "nodeType": "YulAssignment", + "src": "38756:26:34", + "value": { + "arguments": [ { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "43213:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "43216:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38768:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38779:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38764:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38764:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38756:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38836:6:34" + }, + { + "arguments": [ + { + "name": "headStart", "nodeType": "YulIdentifier", - "src": "43206:6:33" + "src": "38849:9:34" }, - "nodeType": "YulFunctionCall", - "src": "43206:12:33" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38860:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38845:3:34" }, - "nodeType": "YulExpressionStatement", - "src": "43206:12:33" + "nodeType": "YulFunctionCall", + "src": "38845:17:34" } - ] + ], + "functionName": { + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulIdentifier", + "src": "38792:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "38792:71:34" }, - "condition": { + "nodeType": "YulExpressionStatement", + "src": "38792:71:34" + }, + { + "expression": { "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38911:6:34" + }, { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "43171:5:33" + "src": "38924:9:34" }, { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "43195:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint32", - "nodeType": "YulIdentifier", - "src": "43178:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "43178:23:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "38935:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "eq", + "name": "add", "nodeType": "YulIdentifier", - "src": "43168:2:33" + "src": "38920:3:34" }, "nodeType": "YulFunctionCall", - "src": "43168:34:33" + "src": "38920:18:34" } ], "functionName": { - "name": "iszero", + "name": "abi_encode_t_bool_to_t_bool_fromStack", "nodeType": "YulIdentifier", - "src": "43161:6:33" + "src": "38873:37:34" }, "nodeType": "YulFunctionCall", - "src": "43161:42:33" + "src": "38873:66:34" }, - "nodeType": "YulIf", - "src": "43158:62:33" + "nodeType": "YulExpressionStatement", + "src": "38873:66:34" } ] }, - "name": "validator_revert_t_uint32", + "name": "abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38710:9:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38722:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38730:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", "nodeType": "YulTypedName", - "src": "43141:5:33", + "src": "38741:4:34", "type": "" } ], - "src": "43106:120:33" + "src": "38626:320:34" }, { "body": { "nodeType": "YulBlock", - "src": "43294:79:33", + "src": "39015:80:34", "statements": [ { "nodeType": "YulAssignment", - "src": "43304:22:33", + "src": "39025:22:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "43319:6:33" + "src": "39040:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "43313:5:33" + "src": "39034:5:34" }, "nodeType": "YulFunctionCall", - "src": "43313:13:33" + "src": "39034:13:34" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "43304:5:33" + "src": "39025:5:34" } ] }, @@ -24700,35 +22194,35 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "43361:5:33" + "src": "39083:5:34" } ], "functionName": { - "name": "validator_revert_t_uint32", + "name": "validator_revert_t_uint128", "nodeType": "YulIdentifier", - "src": "43335:25:33" + "src": "39056:26:34" }, "nodeType": "YulFunctionCall", - "src": "43335:32:33" + "src": "39056:33:34" }, "nodeType": "YulExpressionStatement", - "src": "43335:32:33" + "src": "39056:33:34" } ] }, - "name": "abi_decode_t_uint32_fromMemory", + "name": "abi_decode_t_uint128_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "43272:6:33", + "src": "38993:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "43280:3:33", + "src": "39001:3:34", "type": "" } ], @@ -24736,21 +22230,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "43288:5:33", + "src": "39009:5:34", "type": "" } ], - "src": "43232:141:33" + "src": "38952:143:34" }, { "body": { "nodeType": "YulBlock", - "src": "43489:551:33", + "src": "39212:552:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "43535:83:33", + "src": "39258:83:34", "statements": [ { "expression": { @@ -24758,13 +22252,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "43537:77:33" + "src": "39260:77:34" }, "nodeType": "YulFunctionCall", - "src": "43537:79:33" + "src": "39260:79:34" }, "nodeType": "YulExpressionStatement", - "src": "43537:79:33" + "src": "39260:79:34" } ] }, @@ -24775,26 +22269,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "43510:7:33" + "src": "39233:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "43519:9:33" + "src": "39242:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "43506:3:33" + "src": "39229:3:34" }, "nodeType": "YulFunctionCall", - "src": "43506:23:33" + "src": "39229:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "43531:2:33", + "src": "39254:2:34", "type": "", "value": "96" } @@ -24802,25 +22296,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "43502:3:33" + "src": "39225:3:34" }, "nodeType": "YulFunctionCall", - "src": "43502:32:33" + "src": "39225:32:34" }, "nodeType": "YulIf", - "src": "43499:119:33" + "src": "39222:119:34" }, { "nodeType": "YulBlock", - "src": "43628:128:33", + "src": "39351:128:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "43643:15:33", + "src": "39366:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "43657:1:33", + "src": "39380:1:34", "type": "", "value": "0" }, @@ -24828,14 +22322,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "43647:6:33", + "src": "39370:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "43672:74:33", + "src": "39395:74:34", "value": { "arguments": [ { @@ -24843,41 +22337,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "43718:9:33" + "src": "39441:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "43729:6:33" + "src": "39452:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "43714:3:33" + "src": "39437:3:34" }, "nodeType": "YulFunctionCall", - "src": "43714:22:33" + "src": "39437:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "43738:7:33" + "src": "39461:7:34" } ], "functionName": { - "name": "abi_decode_t_uint112_fromMemory", + "name": "abi_decode_t_uint128_fromMemory", "nodeType": "YulIdentifier", - "src": "43682:31:33" + "src": "39405:31:34" }, "nodeType": "YulFunctionCall", - "src": "43682:64:33" + "src": "39405:64:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "43672:6:33" + "src": "39395:6:34" } ] } @@ -24885,15 +22379,15 @@ }, { "nodeType": "YulBlock", - "src": "43766:129:33", + "src": "39489:129:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "43781:16:33", + "src": "39504:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "43795:2:33", + "src": "39518:2:34", "type": "", "value": "32" }, @@ -24901,14 +22395,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "43785:6:33", + "src": "39508:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "43811:74:33", + "src": "39534:74:34", "value": { "arguments": [ { @@ -24916,41 +22410,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "43857:9:33" + "src": "39580:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "43868:6:33" + "src": "39591:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "43853:3:33" + "src": "39576:3:34" }, "nodeType": "YulFunctionCall", - "src": "43853:22:33" + "src": "39576:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "43877:7:33" + "src": "39600:7:34" } ], "functionName": { - "name": "abi_decode_t_uint112_fromMemory", + "name": "abi_decode_t_uint128_fromMemory", "nodeType": "YulIdentifier", - "src": "43821:31:33" + "src": "39544:31:34" }, "nodeType": "YulFunctionCall", - "src": "43821:64:33" + "src": "39544:64:34" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "43811:6:33" + "src": "39534:6:34" } ] } @@ -24958,15 +22452,15 @@ }, { "nodeType": "YulBlock", - "src": "43905:128:33", + "src": "39628:129:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "43920:16:33", + "src": "39643:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "43934:2:33", + "src": "39657:2:34", "type": "", "value": "64" }, @@ -24974,14 +22468,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "43924:6:33", + "src": "39647:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "43950:73:33", + "src": "39673:74:34", "value": { "arguments": [ { @@ -24989,41 +22483,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "43995:9:33" + "src": "39719:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "44006:6:33" + "src": "39730:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "43991:3:33" + "src": "39715:3:34" }, "nodeType": "YulFunctionCall", - "src": "43991:22:33" + "src": "39715:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "44015:7:33" + "src": "39739:7:34" } ], "functionName": { - "name": "abi_decode_t_uint32_fromMemory", + "name": "abi_decode_t_uint128_fromMemory", "nodeType": "YulIdentifier", - "src": "43960:30:33" + "src": "39683:31:34" }, "nodeType": "YulFunctionCall", - "src": "43960:63:33" + "src": "39683:64:34" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "43950:6:33" + "src": "39673:6:34" } ] } @@ -25031,19 +22525,19 @@ } ] }, - "name": "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory", + "name": "abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "43443:9:33", + "src": "39166:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "43454:7:33", + "src": "39177:7:34", "type": "" } ], @@ -25051,350 +22545,743 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "43466:6:33", + "src": "39189:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "43474:6:33", + "src": "39197:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "43482:6:33", + "src": "39205:6:34", + "type": "" + } + ], + "src": "39101:663:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39859:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39876:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39879:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "39869:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "39869:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "39869:12:34" + } + ] + }, + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulFunctionDefinition", + "src": "39770:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39944:47:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "39967:3:34" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "39972:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "39977:6:34" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "39954:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "39954:30:34" + }, + "nodeType": "YulExpressionStatement", + "src": "39954:30:34" + } + ] + }, + "name": "copy_calldata_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "39926:3:34", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "39931:3:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "39936:6:34", "type": "" } ], - "src": "43379:661:33" + "src": "39893:98:34" }, { "body": { "nodeType": "YulBlock", - "src": "44099:32:33", + "src": "40159:405:34", "statements": [ { "nodeType": "YulAssignment", - "src": "44109:16:33", + "src": "40169:93:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40250:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40255:6:34" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "40176:73:34" + }, + "nodeType": "YulFunctionCall", + "src": "40176:86:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40169:3:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40354:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulIdentifier", + "src": "40356:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "40356:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "40356:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40278:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40286:66:34", + "type": "", + "value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "40275:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "40275:78:34" + }, + "nodeType": "YulIf", + "src": "40272:165:34" + }, + { + "nodeType": "YulAssignment", + "src": "40446:27:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40460:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40468:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "40456:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "40456:17:34" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40446:6:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "40507:5:34" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40514:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40519:6:34" + } + ], + "functionName": { + "name": "copy_calldata_to_memory", + "nodeType": "YulIdentifier", + "src": "40483:23:34" + }, + "nodeType": "YulFunctionCall", + "src": "40483:43:34" + }, + "nodeType": "YulExpressionStatement", + "src": "40483:43:34" + }, + { + "nodeType": "YulAssignment", + "src": "40535:23:34", "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "44120:5:33" + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40546:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40551:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40542:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "40542:16:34" }, "variableNames": [ { - "name": "cleaned", + "name": "end", "nodeType": "YulIdentifier", - "src": "44109:7:33" + "src": "40535:3:34" } ] } ] }, - "name": "cleanup_t_rational_0_by_1", + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "start", + "nodeType": "YulTypedName", + "src": "40132:5:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "40139:6:34", + "type": "" + }, + { + "name": "pos", "nodeType": "YulTypedName", - "src": "44081:5:33", + "src": "40147:3:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "end", "nodeType": "YulTypedName", - "src": "44091:7:33", + "src": "40155:3:34", "type": "" } ], - "src": "44046:85:33" + "src": "40027:537:34" }, { "body": { "nodeType": "YulBlock", - "src": "44205:90:33", + "src": "40872:593:34", "statements": [ { "nodeType": "YulAssignment", - "src": "44215:74:33", + "src": "40882:27:34", "value": { "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40894:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40905:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40890:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "40890:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40882:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "40963:6:34" + }, { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "44281:5:33" - } - ], - "functionName": { - "name": "cleanup_t_rational_0_by_1", - "nodeType": "YulIdentifier", - "src": "44255:25:33" - }, - "nodeType": "YulFunctionCall", - "src": "44255:32:33" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40976:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40987:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "identity", + "name": "add", "nodeType": "YulIdentifier", - "src": "44246:8:33" + "src": "40972:3:34" }, "nodeType": "YulFunctionCall", - "src": "44246:42:33" + "src": "40972:17:34" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "44228:17:33" + "src": "40919:43:34" }, "nodeType": "YulFunctionCall", - "src": "44228:61:33" + "src": "40919:71:34" }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "44215:9:33" - } - ] - } - ] - }, - "name": "convert_t_rational_0_by_1_to_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "44185:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", - "nodeType": "YulTypedName", - "src": "44195:9:33", - "type": "" - } - ], - "src": "44137:158:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "44374:74:33", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "40919:71:34" + }, { "expression": { "arguments": [ { - "name": "pos", + "name": "value1", "nodeType": "YulIdentifier", - "src": "44391:3:33" + "src": "41044:6:34" }, { "arguments": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41057:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41068:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41053:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41053:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "41000:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "41000:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "41000:72:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41093:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41104:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41089:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41089:18:34" + }, + { + "arguments": [ + { + "name": "tail", "nodeType": "YulIdentifier", - "src": "44435:5:33" + "src": "41113:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41119:9:34" } ], "functionName": { - "name": "convert_t_rational_0_by_1_to_t_uint256", + "name": "sub", "nodeType": "YulIdentifier", - "src": "44396:38:33" + "src": "41109:3:34" }, "nodeType": "YulFunctionCall", - "src": "44396:45:33" + "src": "41109:20:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "44384:6:33" + "src": "41082:6:34" }, "nodeType": "YulFunctionCall", - "src": "44384:58:33" + "src": "41082:48:34" }, "nodeType": "YulExpressionStatement", - "src": "44384:58:33" - } - ] - }, - "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "44362:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "44369:3:33", - "type": "" - } - ], - "src": "44301:147:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "44549:73:33", - "statements": [ + "src": "41082:48:34" + }, { - "expression": { + "nodeType": "YulAssignment", + "src": "41139:126:34", + "value": { "arguments": [ { - "name": "pos", + "name": "value2", "nodeType": "YulIdentifier", - "src": "44566:3:33" + "src": "41243:6:34" }, { - "name": "length", + "name": "value3", + "nodeType": "YulIdentifier", + "src": "41251:6:34" + }, + { + "name": "tail", "nodeType": "YulIdentifier", - "src": "44571:6:33" + "src": "41260:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "41147:95:34" + }, + "nodeType": "YulFunctionCall", + "src": "41147:118:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41139:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41286:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41297:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41282:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41282:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41306:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41312:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41302:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41302:20:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "44559:6:33" + "src": "41275:6:34" }, "nodeType": "YulFunctionCall", - "src": "44559:19:33" + "src": "41275:48:34" }, "nodeType": "YulExpressionStatement", - "src": "44559:19:33" + "src": "41275:48:34" }, { "nodeType": "YulAssignment", - "src": "44587:29:33", + "src": "41332:126:34", "value": { "arguments": [ { - "name": "pos", + "name": "value4", "nodeType": "YulIdentifier", - "src": "44606:3:33" + "src": "41436:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "44611:4:33", - "type": "", - "value": "0x20" + "name": "value5", + "nodeType": "YulIdentifier", + "src": "41444:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41453:4:34" } ], "functionName": { - "name": "add", + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "44602:3:33" + "src": "41340:95:34" }, "nodeType": "YulFunctionCall", - "src": "44602:14:33" + "src": "41340:118:34" }, "variableNames": [ { - "name": "updated_pos", + "name": "tail", "nodeType": "YulIdentifier", - "src": "44587:11:33" + "src": "41332:4:34" } ] } ] }, - "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", + "name": "headStart", "nodeType": "YulTypedName", - "src": "44521:3:33", + "src": "40804:9:34", "type": "" }, { - "name": "length", + "name": "value5", "nodeType": "YulTypedName", - "src": "44526:6:33", + "src": "40816:6:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "updated_pos", + "name": "value4", + "nodeType": "YulTypedName", + "src": "40824:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "40832:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "40840:6:34", + "type": "" + }, + { + "name": "value1", "nodeType": "YulTypedName", - "src": "44537:11:33", + "src": "40848:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "40856:6:34", "type": "" } ], - "src": "44454:168:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "44734:8:33", - "statements": [] - }, - "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "nodeType": "YulFunctionDefinition", - "parameters": [ + "returnVariables": [ { - "name": "memPtr", + "name": "tail", "nodeType": "YulTypedName", - "src": "44726:6:33", + "src": "40867:4:34", "type": "" } ], - "src": "44628:114:33" + "src": "40570:895:34" }, { "body": { "nodeType": "YulBlock", - "src": "44893:217:33", + "src": "41533:79:34", "statements": [ { "nodeType": "YulAssignment", - "src": "44903:72:33", + "src": "41543:22:34", "value": { "arguments": [ { - "name": "pos", + "name": "offset", "nodeType": "YulIdentifier", - "src": "44968:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "44973:1:33", - "type": "", - "value": "0" + "src": "41558:6:34" } ], "functionName": { - "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "name": "mload", "nodeType": "YulIdentifier", - "src": "44910:57:33" + "src": "41552:5:34" }, "nodeType": "YulFunctionCall", - "src": "44910:65:33" + "src": "41552:13:34" }, "variableNames": [ { - "name": "pos", + "name": "value", "nodeType": "YulIdentifier", - "src": "44903:3:33" + "src": "41543:5:34" } ] }, @@ -25402,702 +23289,750 @@ "expression": { "arguments": [ { - "name": "pos", + "name": "value", "nodeType": "YulIdentifier", - "src": "45073:3:33" + "src": "41600:5:34" } ], "functionName": { - "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "name": "validator_revert_t_uint24", "nodeType": "YulIdentifier", - "src": "44984:88:33" + "src": "41574:25:34" }, "nodeType": "YulFunctionCall", - "src": "44984:93:33" + "src": "41574:32:34" }, "nodeType": "YulExpressionStatement", - "src": "44984:93:33" - }, - { - "nodeType": "YulAssignment", - "src": "45086:18:33", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "45097:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "45102:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "45093:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "45093:11:33" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "45086:3:33" - } - ] + "src": "41574:32:34" } ] }, - "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", + "name": "abi_decode_t_uint24_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", + "name": "offset", + "nodeType": "YulTypedName", + "src": "41511:6:34", + "type": "" + }, + { + "name": "end", "nodeType": "YulTypedName", - "src": "44881:3:33", + "src": "41519:3:34", "type": "" } ], "returnVariables": [ { - "name": "end", + "name": "value", "nodeType": "YulTypedName", - "src": "44889:3:33", + "src": "41527:5:34", "type": "" } ], - "src": "44748:362:33" + "src": "41471:141:34" }, { "body": { "nodeType": "YulBlock", - "src": "45378:502:33", + "src": "41694:273:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "45388:27:33", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "41740:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "41742:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "41742:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "41742:79:34" + } + ] + }, + "condition": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "45400:9:33" + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "41715:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41724:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41711:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41711:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "45411:3:33", + "src": "41736:2:34", "type": "", - "value": "128" + "value": "32" } ], "functionName": { - "name": "add", + "name": "slt", "nodeType": "YulIdentifier", - "src": "45396:3:33" + "src": "41707:3:34" }, "nodeType": "YulFunctionCall", - "src": "45396:19:33" + "src": "41707:32:34" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "45388:4:33" - } - ] + "nodeType": "YulIf", + "src": "41704:119:34" }, { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "45477:6:33" + "nodeType": "YulBlock", + "src": "41833:127:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "41848:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41862:1:34", + "type": "", + "value": "0" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "41852:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "41877:73:34", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "45490:9:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41922:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "41933:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41918:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41918:22:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "45501:1:33", - "type": "", - "value": "0" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "41942:7:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_uint24_fromMemory", "nodeType": "YulIdentifier", - "src": "45486:3:33" + "src": "41887:30:34" }, "nodeType": "YulFunctionCall", - "src": "45486:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "45425:51:33" - }, - "nodeType": "YulFunctionCall", - "src": "45425:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "45425:79:33" - }, + "src": "41887:63:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "41877:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint24_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "41664:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "41675:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "41687:6:34", + "type": "" + } + ], + "src": "41618:349:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42001:152:34", + "statements": [ { "expression": { "arguments": [ { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "45558:6:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "42018:1:34", + "type": "", + "value": "0" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "45571:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "45582:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "45567:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "45567:18:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "42021:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "45514:43:33" + "src": "42011:6:34" }, "nodeType": "YulFunctionCall", - "src": "45514:72:33" + "src": "42011:88:34" }, "nodeType": "YulExpressionStatement", - "src": "45514:72:33" + "src": "42011:88:34" }, { "expression": { "arguments": [ { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "45640:6:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "42115:1:34", + "type": "", + "value": "4" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "45653:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "45664:2:33", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "45649:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "45649:18:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "42118:4:34", + "type": "", + "value": "0x21" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "45596:43:33" + "src": "42108:6:34" }, "nodeType": "YulFunctionCall", - "src": "45596:72:33" + "src": "42108:15:34" }, "nodeType": "YulExpressionStatement", - "src": "45596:72:33" + "src": "42108:15:34" }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "45689:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "45700:2:33", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "45685:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "45685:18:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "42139:1:34", + "type": "", + "value": "0" }, { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "45709:4:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "45715:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "45705:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "45705:20:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "42142:4:34", + "type": "", + "value": "0x24" } ], "functionName": { - "name": "mstore", + "name": "revert", "nodeType": "YulIdentifier", - "src": "45678:6:33" + "src": "42132:6:34" }, "nodeType": "YulFunctionCall", - "src": "45678:48:33" + "src": "42132:15:34" }, "nodeType": "YulExpressionStatement", - "src": "45678:48:33" - }, + "src": "42132:15:34" + } + ] + }, + "name": "panic_error_0x21", + "nodeType": "YulFunctionDefinition", + "src": "41973:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42204:69:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "45735:138:33", + "src": "42214:53:34", "value": { "arguments": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "45868:4:33" + "src": "42229:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42236:30:34", + "type": "", + "value": "0xffffffffffffffffffffffffffff" } ], "functionName": { - "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", + "name": "and", "nodeType": "YulIdentifier", - "src": "45743:123:33" + "src": "42225:3:34" }, "nodeType": "YulFunctionCall", - "src": "45743:130:33" + "src": "42225:42:34" }, "variableNames": [ { - "name": "tail", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "45735:4:33" + "src": "42214:7:34" } ] } ] }, - "name": "abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed", + "name": "cleanup_t_uint112", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "45334:9:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "45346:6:33", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "45354:6:33", - "type": "" - }, - { - "name": "value0", + "name": "value", "nodeType": "YulTypedName", - "src": "45362:6:33", + "src": "42186:5:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "45373:4:33", + "src": "42196:7:34", "type": "" } ], - "src": "45116:764:33" + "src": "42159:114:34" }, { "body": { "nodeType": "YulBlock", - "src": "46148:502:33", + "src": "42322:79:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "46158:27:33", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "46170:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46181:3:33", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "46166:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "46166:19:33" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "46158:4:33" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "46239:6:33" - }, + "body": { + "nodeType": "YulBlock", + "src": "42379:16:34", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42388:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42391:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", "nodeType": "YulIdentifier", - "src": "46252:9:33" + "src": "42381:6:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46263:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "46248:3:33" + "nodeType": "YulFunctionCall", + "src": "42381:12:34" }, - "nodeType": "YulFunctionCall", - "src": "46248:17:33" + "nodeType": "YulExpressionStatement", + "src": "42381:12:34" } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "46195:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "46195:71:33" + ] }, - "nodeType": "YulExpressionStatement", - "src": "46195:71:33" - }, - { - "expression": { + "condition": { "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "46328:6:33" - }, { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "46341:9:33" + "src": "42345:5:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46352:2:33", - "type": "", - "value": "32" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42370:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint112", + "nodeType": "YulIdentifier", + "src": "42352:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "42352:24:34" } ], "functionName": { - "name": "add", + "name": "eq", "nodeType": "YulIdentifier", - "src": "46337:3:33" + "src": "42342:2:34" }, "nodeType": "YulFunctionCall", - "src": "46337:18:33" + "src": "42342:35:34" } ], "functionName": { - "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "46276:51:33" + "src": "42335:6:34" }, "nodeType": "YulFunctionCall", - "src": "46276:80:33" + "src": "42335:43:34" }, - "nodeType": "YulExpressionStatement", - "src": "46276:80:33" - }, + "nodeType": "YulIf", + "src": "42332:63:34" + } + ] + }, + "name": "validator_revert_t_uint112", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42315:5:34", + "type": "" + } + ], + "src": "42279:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42470:80:34", + "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "42480:22:34", + "value": { "arguments": [ { - "name": "value2", + "name": "offset", "nodeType": "YulIdentifier", - "src": "46410:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "46423:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46434:2:33", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "46419:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "46419:18:33" + "src": "42495:6:34" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "mload", "nodeType": "YulIdentifier", - "src": "46366:43:33" + "src": "42489:5:34" }, "nodeType": "YulFunctionCall", - "src": "46366:72:33" + "src": "42489:13:34" }, - "nodeType": "YulExpressionStatement", - "src": "46366:72:33" + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42480:5:34" + } + ] }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "46459:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46470:2:33", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "46455:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "46455:18:33" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "46479:4:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "46485:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "46475:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "46475:20:33" + "name": "value", + "nodeType": "YulIdentifier", + "src": "42538:5:34" } ], "functionName": { - "name": "mstore", + "name": "validator_revert_t_uint112", "nodeType": "YulIdentifier", - "src": "46448:6:33" + "src": "42511:26:34" }, "nodeType": "YulFunctionCall", - "src": "46448:48:33" + "src": "42511:33:34" }, "nodeType": "YulExpressionStatement", - "src": "46448:48:33" - }, + "src": "42511:33:34" + } + ] + }, + "name": "abi_decode_t_uint112_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42448:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "42456:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42464:5:34", + "type": "" + } + ], + "src": "42407:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42600:49:34", + "statements": [ { "nodeType": "YulAssignment", - "src": "46505:138:33", + "src": "42610:33:34", "value": { "arguments": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "46638:4:33" + "src": "42625:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42632:10:34", + "type": "", + "value": "0xffffffff" } ], "functionName": { - "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", + "name": "and", "nodeType": "YulIdentifier", - "src": "46513:123:33" + "src": "42621:3:34" }, "nodeType": "YulFunctionCall", - "src": "46513:130:33" + "src": "42621:22:34" }, "variableNames": [ { - "name": "tail", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "46505:4:33" + "src": "42610:7:34" } ] } ] }, - "name": "abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed", + "name": "cleanup_t_uint32", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "46104:9:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "46116:6:33", - "type": "" - }, - { - "name": "value1", + "name": "value", "nodeType": "YulTypedName", - "src": "46124:6:33", + "src": "42582:5:34", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "value0", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "46132:6:33", + "src": "42592:7:34", "type": "" } ], - "returnVariables": [ + "src": "42556:93:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42697:78:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "42753:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42762:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42765:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "42755:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42755:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42755:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42720:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42744:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint32", + "nodeType": "YulIdentifier", + "src": "42727:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "42727:23:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "42717:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "42717:34:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "42710:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42710:42:34" + }, + "nodeType": "YulIf", + "src": "42707:62:34" + } + ] + }, + "name": "validator_revert_t_uint32", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "name": "tail", + "name": "value", "nodeType": "YulTypedName", - "src": "46143:4:33", + "src": "42690:5:34", "type": "" } ], - "src": "45886:764:33" + "src": "42655:120:34" }, { "body": { "nodeType": "YulBlock", - "src": "46776:200:33", + "src": "42843:79:34", "statements": [ { "nodeType": "YulAssignment", - "src": "46786:26:33", + "src": "42853:22:34", "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "46798:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46809:2:33", - "type": "", - "value": "64" + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "42868:6:34" } ], "functionName": { - "name": "add", + "name": "mload", "nodeType": "YulIdentifier", - "src": "46794:3:33" + "src": "42862:5:34" }, "nodeType": "YulFunctionCall", - "src": "46794:18:33" + "src": "42862:13:34" }, "variableNames": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "46786:4:33" + "src": "42853:5:34" } ] }, @@ -26105,131 +24040,59 @@ "expression": { "arguments": [ { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "46860:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "46873:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46884:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "46869:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "46869:17:33" - } - ], - "functionName": { - "name": "abi_encode_t_bool_to_t_bool_fromStack", - "nodeType": "YulIdentifier", - "src": "46822:37:33" - }, - "nodeType": "YulFunctionCall", - "src": "46822:65:33" - }, - "nodeType": "YulExpressionStatement", - "src": "46822:65:33" - }, - { - "expression": { - "arguments": [ - { - "name": "value1", + "name": "value", "nodeType": "YulIdentifier", - "src": "46941:6:33" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "46954:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "46965:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "46950:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "46950:18:33" + "src": "42910:5:34" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "validator_revert_t_uint32", "nodeType": "YulIdentifier", - "src": "46897:43:33" + "src": "42884:25:34" }, "nodeType": "YulFunctionCall", - "src": "46897:72:33" + "src": "42884:32:34" }, "nodeType": "YulExpressionStatement", - "src": "46897:72:33" + "src": "42884:32:34" } ] }, - "name": "abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed", + "name": "abi_decode_t_uint32_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "46740:9:33", - "type": "" - }, - { - "name": "value1", + "name": "offset", "nodeType": "YulTypedName", - "src": "46752:6:33", + "src": "42821:6:34", "type": "" }, { - "name": "value0", + "name": "end", "nodeType": "YulTypedName", - "src": "46760:6:33", + "src": "42829:3:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value", "nodeType": "YulTypedName", - "src": "46771:4:33", + "src": "42837:5:34", "type": "" } ], - "src": "46656:320:33" + "src": "42781:141:34" }, { "body": { "nodeType": "YulBlock", - "src": "47076:413:33", + "src": "43038:551:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "47122:83:33", + "src": "43084:83:34", "statements": [ { "expression": { @@ -26237,13 +24100,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "47124:77:33" + "src": "43086:77:34" }, "nodeType": "YulFunctionCall", - "src": "47124:79:33" + "src": "43086:79:34" }, "nodeType": "YulExpressionStatement", - "src": "47124:79:33" + "src": "43086:79:34" } ] }, @@ -26254,52 +24117,52 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "47097:7:33" + "src": "43059:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "47106:9:33" + "src": "43068:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "47093:3:33" + "src": "43055:3:34" }, "nodeType": "YulFunctionCall", - "src": "47093:23:33" + "src": "43055:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "47118:2:33", + "src": "43080:2:34", "type": "", - "value": "64" + "value": "96" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "47089:3:33" + "src": "43051:3:34" }, "nodeType": "YulFunctionCall", - "src": "47089:32:33" + "src": "43051:32:34" }, "nodeType": "YulIf", - "src": "47086:119:33" + "src": "43048:119:34" }, { "nodeType": "YulBlock", - "src": "47215:128:33", + "src": "43177:128:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "47230:15:33", + "src": "43192:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "47244:1:33", + "src": "43206:1:34", "type": "", "value": "0" }, @@ -26307,14 +24170,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "47234:6:33", + "src": "43196:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "47259:74:33", + "src": "43221:74:34", "value": { "arguments": [ { @@ -26322,41 +24185,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "47305:9:33" + "src": "43267:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "47316:6:33" + "src": "43278:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "47301:3:33" + "src": "43263:3:34" }, "nodeType": "YulFunctionCall", - "src": "47301:22:33" + "src": "43263:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "47325:7:33" + "src": "43287:7:34" } ], "functionName": { - "name": "abi_decode_t_uint256_fromMemory", + "name": "abi_decode_t_uint112_fromMemory", "nodeType": "YulIdentifier", - "src": "47269:31:33" + "src": "43231:31:34" }, "nodeType": "YulFunctionCall", - "src": "47269:64:33" + "src": "43231:64:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "47259:6:33" + "src": "43221:6:34" } ] } @@ -26364,15 +24227,15 @@ }, { "nodeType": "YulBlock", - "src": "47353:129:33", + "src": "43315:129:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "47368:16:33", + "src": "43330:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "47382:2:33", + "src": "43344:2:34", "type": "", "value": "32" }, @@ -26380,14 +24243,87 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "47372:6:33", + "src": "43334:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "43360:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "43406:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "43417:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "43402:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "43402:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "43426:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint112_fromMemory", + "nodeType": "YulIdentifier", + "src": "43370:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "43370:64:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "43360:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "43454:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "43469:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "43483:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "43473:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "47398:74:33", + "src": "43499:73:34", "value": { "arguments": [ { @@ -26395,253 +24331,527 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "47444:9:33" + "src": "43544:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "47455:6:33" + "src": "43555:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "43540:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "43540:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "43564:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint32_fromMemory", + "nodeType": "YulIdentifier", + "src": "43509:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "43509:63:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "43499:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "42992:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "43003:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "43015:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "43023:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "43031:6:34", + "type": "" + } + ], + "src": "42928:661:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43648:32:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "43658:16:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43669:5:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "43658:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_rational_0_by_1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "43630:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "43640:7:34", + "type": "" + } + ], + "src": "43595:85:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43754:90:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "43764:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43830:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_rational_0_by_1", "nodeType": "YulIdentifier", - "src": "47440:3:33" + "src": "43804:25:34" }, "nodeType": "YulFunctionCall", - "src": "47440:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "47464:7:33" + "src": "43804:32:34" } ], "functionName": { - "name": "abi_decode_t_uint256_fromMemory", + "name": "identity", "nodeType": "YulIdentifier", - "src": "47408:31:33" + "src": "43795:8:34" }, "nodeType": "YulFunctionCall", - "src": "47408:64:33" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "47398:6:33" - } - ] + "src": "43795:42:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "43777:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "43777:61:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "43764:9:34" } ] } ] }, - "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory", + "name": "convert_t_rational_0_by_1_to_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "value", "nodeType": "YulTypedName", - "src": "47038:9:33", + "src": "43734:5:34", "type": "" - }, + } + ], + "returnVariables": [ { - "name": "dataEnd", + "name": "converted", "nodeType": "YulTypedName", - "src": "47049:7:33", + "src": "43744:9:34", "type": "" } ], - "returnVariables": [ + "src": "43686:158:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43923:74:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43940:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43984:5:34" + } + ], + "functionName": { + "name": "convert_t_rational_0_by_1_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "43945:38:34" + }, + "nodeType": "YulFunctionCall", + "src": "43945:45:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "43933:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "43933:58:34" + }, + "nodeType": "YulExpressionStatement", + "src": "43933:58:34" + } + ] + }, + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ { - "name": "value0", + "name": "value", "nodeType": "YulTypedName", - "src": "47061:6:33", + "src": "43911:5:34", "type": "" }, { - "name": "value1", + "name": "pos", "nodeType": "YulTypedName", - "src": "47069:6:33", + "src": "43918:3:34", "type": "" } ], - "src": "46982:507:33" + "src": "43850:147:34" }, { "body": { "nodeType": "YulBlock", - "src": "47540:32:33", + "src": "44098:73:34", "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44115:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "44120:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "44108:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "44108:19:34" + }, + "nodeType": "YulExpressionStatement", + "src": "44108:19:34" + }, { "nodeType": "YulAssignment", - "src": "47550:16:33", + "src": "44136:29:34", "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "47561:5:33" + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44155:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44160:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44151:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "44151:14:34" }, "variableNames": [ { - "name": "cleaned", + "name": "updated_pos", "nodeType": "YulIdentifier", - "src": "47550:7:33" + "src": "44136:11:34" } ] } ] }, - "name": "cleanup_t_bytes32", + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "pos", + "nodeType": "YulTypedName", + "src": "44070:3:34", + "type": "" + }, + { + "name": "length", "nodeType": "YulTypedName", - "src": "47522:5:33", + "src": "44075:6:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "44086:11:34", + "type": "" + } + ], + "src": "44003:168:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44283:8:34", + "statements": [] + }, + "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", "nodeType": "YulTypedName", - "src": "47532:7:33", + "src": "44275:6:34", "type": "" } ], - "src": "47495:77:33" + "src": "44177:114:34" }, { "body": { "nodeType": "YulBlock", - "src": "47621:79:33", + "src": "44442:217:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "47678:16:33", - "statements": [ + "nodeType": "YulAssignment", + "src": "44452:72:34", + "value": { + "arguments": [ { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "47687:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "47690:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "47680:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "47680:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "47680:12:33" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44517:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44522:1:34", + "type": "", + "value": "0" } - ] + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "44459:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "44459:65:34" }, - "condition": { + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44452:3:34" + } + ] + }, + { + "expression": { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "47644:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "47669:5:33" - } - ], - "functionName": { - "name": "cleanup_t_bytes32", - "nodeType": "YulIdentifier", - "src": "47651:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "47651:24:33" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "47641:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "47641:35:33" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44622:3:34" } ], "functionName": { - "name": "iszero", + "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "nodeType": "YulIdentifier", - "src": "47634:6:33" + "src": "44533:88:34" }, "nodeType": "YulFunctionCall", - "src": "47634:43:33" + "src": "44533:93:34" }, - "nodeType": "YulIf", - "src": "47631:63:33" + "nodeType": "YulExpressionStatement", + "src": "44533:93:34" + }, + { + "nodeType": "YulAssignment", + "src": "44635:18:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44646:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44651:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44642:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "44642:11:34" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "44635:3:34" + } + ] } ] }, - "name": "validator_revert_t_bytes32", + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "pos", + "nodeType": "YulTypedName", + "src": "44430:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", "nodeType": "YulTypedName", - "src": "47614:5:33", + "src": "44438:3:34", "type": "" } ], - "src": "47578:122:33" + "src": "44297:362:34" }, { "body": { "nodeType": "YulBlock", - "src": "47769:80:33", + "src": "44927:502:34", "statements": [ { "nodeType": "YulAssignment", - "src": "47779:22:33", + "src": "44937:27:34", "value": { "arguments": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "47794:6:33" + "src": "44949:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44960:3:34", + "type": "", + "value": "128" } ], "functionName": { - "name": "mload", + "name": "add", "nodeType": "YulIdentifier", - "src": "47788:5:33" + "src": "44945:3:34" }, "nodeType": "YulFunctionCall", - "src": "47788:13:33" + "src": "44945:19:34" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "47779:5:33" + "src": "44937:4:34" } ] }, @@ -26649,507 +24859,293 @@ "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "47837:5:33" + "src": "45026:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45039:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45050:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45035:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45035:17:34" } ], "functionName": { - "name": "validator_revert_t_bytes32", + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "47810:26:33" + "src": "44974:51:34" }, "nodeType": "YulFunctionCall", - "src": "47810:33:33" + "src": "44974:79:34" }, "nodeType": "YulExpressionStatement", - "src": "47810:33:33" - } - ] - }, - "name": "abi_decode_t_bytes32_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "47747:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "47755:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "47763:5:33", - "type": "" - } - ], - "src": "47706:143:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "47932:274:33", - "statements": [ + "src": "44974:79:34" + }, { - "body": { - "nodeType": "YulBlock", - "src": "47978:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "47980:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "47980:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "47980:79:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "45107:6:34" + }, { "arguments": [ { - "name": "dataEnd", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "47953:7:33" + "src": "45120:9:34" }, { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "47962:9:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "45131:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "sub", + "name": "add", "nodeType": "YulIdentifier", - "src": "47949:3:33" + "src": "45116:3:34" }, "nodeType": "YulFunctionCall", - "src": "47949:23:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "47974:2:33", - "type": "", - "value": "32" + "src": "45116:18:34" } ], "functionName": { - "name": "slt", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "47945:3:33" + "src": "45063:43:34" }, "nodeType": "YulFunctionCall", - "src": "47945:32:33" + "src": "45063:72:34" }, - "nodeType": "YulIf", - "src": "47942:119:33" + "nodeType": "YulExpressionStatement", + "src": "45063:72:34" }, { - "nodeType": "YulBlock", - "src": "48071:128:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "48086:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "48100:1:33", - "type": "", - "value": "0" + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "45189:6:34" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "48090:6:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "48115:74:33", - "value": { + { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "48161:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "48172:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "48157:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "48157:22:33" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45202:9:34" }, { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "48181:7:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "45213:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "abi_decode_t_bytes32_fromMemory", + "name": "add", "nodeType": "YulIdentifier", - "src": "48125:31:33" + "src": "45198:3:34" }, "nodeType": "YulFunctionCall", - "src": "48125:64:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "48115:6:33" - } - ] - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes32_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "47902:9:33", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "47913:7:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "47925:6:33", - "type": "" - } - ], - "src": "47855:351:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "48294:66:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "48304:50:33", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "48348:5:33" + "src": "45198:18:34" } ], "functionName": { - "name": "convert_t_uint160_to_t_address", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "48317:30:33" + "src": "45145:43:34" }, "nodeType": "YulFunctionCall", - "src": "48317:37:33" + "src": "45145:72:34" }, - "variableNames": [ - { - "name": "converted", - "nodeType": "YulIdentifier", - "src": "48304:9:33" - } - ] - } - ] - }, - "name": "convert_t_contract$_ILBLegacyPair_$5497_to_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "48274:5:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "converted", - "nodeType": "YulTypedName", - "src": "48284:9:33", - "type": "" - } - ], - "src": "48212:148:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "48453:88:33", - "statements": [ + "nodeType": "YulExpressionStatement", + "src": "45145:72:34" + }, { "expression": { "arguments": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "48470:3:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45238:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45249:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45234:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45234:18:34" }, { "arguments": [ { - "name": "value", + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45258:4:34" + }, + { + "name": "headStart", "nodeType": "YulIdentifier", - "src": "48528:5:33" + "src": "45264:9:34" } ], "functionName": { - "name": "convert_t_contract$_ILBLegacyPair_$5497_to_t_address", + "name": "sub", "nodeType": "YulIdentifier", - "src": "48475:52:33" + "src": "45254:3:34" }, "nodeType": "YulFunctionCall", - "src": "48475:59:33" + "src": "45254:20:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "48463:6:33" + "src": "45227:6:34" }, "nodeType": "YulFunctionCall", - "src": "48463:72:33" + "src": "45227:48:34" }, "nodeType": "YulExpressionStatement", - "src": "48463:72:33" - } - ] - }, - "name": "abi_encode_t_contract$_ILBLegacyPair_$5497_to_t_address_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "48441:5:33", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "48448:3:33", - "type": "" - } - ], - "src": "48366:175:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "48607:82:33", - "statements": [ + "src": "45227:48:34" + }, { "nodeType": "YulAssignment", - "src": "48617:66:33", + "src": "45284:138:34", "value": { "arguments": [ { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "48675:5:33" - } - ], - "functionName": { - "name": "cleanup_t_uint128", - "nodeType": "YulIdentifier", - "src": "48657:17:33" - }, - "nodeType": "YulFunctionCall", - "src": "48657:24:33" - } - ], - "functionName": { - "name": "identity", - "nodeType": "YulIdentifier", - "src": "48648:8:33" - }, - "nodeType": "YulFunctionCall", - "src": "48648:34:33" + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45417:4:34" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "48630:17:33" + "src": "45292:123:34" }, "nodeType": "YulFunctionCall", - "src": "48630:53:33" + "src": "45292:130:34" }, "variableNames": [ { - "name": "converted", + "name": "tail", "nodeType": "YulIdentifier", - "src": "48617:9:33" + "src": "45284:4:34" } ] } ] }, - "name": "convert_t_uint128_to_t_uint256", + "name": "abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", "nodeType": "YulTypedName", - "src": "48587:5:33", + "src": "44883:9:34", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "converted", + "name": "value2", "nodeType": "YulTypedName", - "src": "48597:9:33", + "src": "44895:6:34", "type": "" - } - ], - "src": "48547:142:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "48760:66:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "48777:3:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "48813:5:33" - } - ], - "functionName": { - "name": "convert_t_uint128_to_t_uint256", - "nodeType": "YulIdentifier", - "src": "48782:30:33" - }, - "nodeType": "YulFunctionCall", - "src": "48782:37:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "48770:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "48770:50:33" - }, - "nodeType": "YulExpressionStatement", - "src": "48770:50:33" - } - ] - }, - "name": "abi_encode_t_uint128_to_t_uint256_fromStack", - "nodeType": "YulFunctionDefinition", - "parameters": [ + }, { - "name": "value", + "name": "value1", "nodeType": "YulTypedName", - "src": "48748:5:33", + "src": "44903:6:34", "type": "" }, { - "name": "pos", + "name": "value0", "nodeType": "YulTypedName", - "src": "48755:3:33", + "src": "44911:6:34", "type": "" } ], - "src": "48695:131:33" + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "44922:4:34", + "type": "" + } + ], + "src": "44665:764:34" }, { "body": { "nodeType": "YulBlock", - "src": "49002:304:33", + "src": "45697:502:34", "statements": [ { "nodeType": "YulAssignment", - "src": "49012:26:33", + "src": "45707:27:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "49024:9:33" + "src": "45719:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "49035:2:33", + "src": "45730:3:34", "type": "", - "value": "96" + "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "49020:3:33" + "src": "45715:3:34" }, "nodeType": "YulFunctionCall", - "src": "49020:18:33" + "src": "45715:19:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "49012:4:33" + "src": "45707:4:34" } ] }, @@ -27159,19 +25155,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "49114:6:33" + "src": "45788:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "49127:9:33" + "src": "45801:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "49138:1:33", + "src": "45812:1:34", "type": "", "value": "0" } @@ -27179,22 +25175,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "49123:3:33" + "src": "45797:3:34" }, "nodeType": "YulFunctionCall", - "src": "49123:17:33" + "src": "45797:17:34" } ], "functionName": { - "name": "abi_encode_t_contract$_ILBLegacyPair_$5497_to_t_address_fromStack", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "49048:65:33" + "src": "45744:43:34" }, "nodeType": "YulFunctionCall", - "src": "49048:93:33" + "src": "45744:71:34" }, "nodeType": "YulExpressionStatement", - "src": "49048:93:33" + "src": "45744:71:34" }, { "expression": { @@ -27202,19 +25198,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "49195:6:33" + "src": "45877:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "49208:9:33" + "src": "45890:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "49219:2:33", + "src": "45901:2:34", "type": "", "value": "32" } @@ -27222,22 +25218,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "49204:3:33" + "src": "45886:3:34" }, "nodeType": "YulFunctionCall", - "src": "49204:18:33" + "src": "45886:18:34" } ], "functionName": { - "name": "abi_encode_t_uint128_to_t_uint256_fromStack", + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "49151:43:33" + "src": "45825:51:34" }, "nodeType": "YulFunctionCall", - "src": "49151:72:33" + "src": "45825:80:34" }, "nodeType": "YulExpressionStatement", - "src": "49151:72:33" + "src": "45825:80:34" }, { "expression": { @@ -27245,19 +25241,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "49271:6:33" + "src": "45959:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "49284:9:33" + "src": "45972:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "49295:2:33", + "src": "45983:2:34", "type": "", "value": "64" } @@ -27265,50 +25261,136 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "49280:3:33" + "src": "45968:3:34" }, "nodeType": "YulFunctionCall", - "src": "49280:18:33" + "src": "45968:18:34" } ], "functionName": { - "name": "abi_encode_t_bool_to_t_bool_fromStack", + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "45915:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "45915:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45915:72:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46008:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46019:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46004:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46004:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46028:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46034:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "46024:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46024:20:34" + } + ], + "functionName": { + "name": "mstore", "nodeType": "YulIdentifier", - "src": "49233:37:33" + "src": "45997:6:34" }, "nodeType": "YulFunctionCall", - "src": "49233:66:33" + "src": "45997:48:34" }, "nodeType": "YulExpressionStatement", - "src": "49233:66:33" + "src": "45997:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "46054:138:34", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46187:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "46062:123:34" + }, + "nodeType": "YulFunctionCall", + "src": "46062:130:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46054:4:34" + } + ] } ] }, - "name": "abi_encode_tuple_t_contract$_ILBLegacyPair_$5497_t_uint128_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed", + "name": "abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "48958:9:33", + "src": "45653:9:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "48970:6:33", + "src": "45665:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "48978:6:33", + "src": "45673:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "48986:6:33", + "src": "45681:6:34", "type": "" } ], @@ -27316,777 +25398,784 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "48997:4:33", + "src": "45692:4:34", "type": "" } ], - "src": "48832:474:33" + "src": "45435:764:34" }, { "body": { "nodeType": "YulBlock", - "src": "49355:128:33", + "src": "46325:200:34", "statements": [ { "nodeType": "YulAssignment", - "src": "49365:33:33", + "src": "46335:26:34", "value": { "arguments": [ { - "name": "value", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "49392:5:33" + "src": "46347:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46358:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "cleanup_t_uint256", + "name": "add", "nodeType": "YulIdentifier", - "src": "49374:17:33" + "src": "46343:3:34" }, "nodeType": "YulFunctionCall", - "src": "49374:24:33" + "src": "46343:18:34" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "49365:5:33" + "src": "46335:4:34" } ] }, { - "body": { - "nodeType": "YulBlock", - "src": "49426:22:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "49428:16:33" - }, - "nodeType": "YulFunctionCall", - "src": "49428:18:33" - }, - "nodeType": "YulExpressionStatement", - "src": "49428:18:33" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "name": "value", + "name": "value0", "nodeType": "YulIdentifier", - "src": "49413:5:33" + "src": "46409:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "49420:4:33", - "type": "", - "value": "0x00" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46422:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46433:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46418:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46418:17:34" } ], "functionName": { - "name": "eq", + "name": "abi_encode_t_bool_to_t_bool_fromStack", "nodeType": "YulIdentifier", - "src": "49410:2:33" + "src": "46371:37:34" }, "nodeType": "YulFunctionCall", - "src": "49410:15:33" + "src": "46371:65:34" }, - "nodeType": "YulIf", - "src": "49407:41:33" + "nodeType": "YulExpressionStatement", + "src": "46371:65:34" }, { - "nodeType": "YulAssignment", - "src": "49457:20:33", - "value": { + "expression": { "arguments": [ { - "name": "value", + "name": "value1", "nodeType": "YulIdentifier", - "src": "49468:5:33" + "src": "46490:6:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "49475:1:33", - "type": "", - "value": "1" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46503:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46514:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46499:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46499:18:34" } ], "functionName": { - "name": "sub", + "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "49464:3:33" + "src": "46446:43:34" }, "nodeType": "YulFunctionCall", - "src": "49464:13:33" + "src": "46446:72:34" }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "49457:3:33" - } - ] + "nodeType": "YulExpressionStatement", + "src": "46446:72:34" } ] }, - "name": "decrement_t_uint256", + "name": "abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "headStart", + "nodeType": "YulTypedName", + "src": "46289:9:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "46301:6:34", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "49341:5:33", + "src": "46309:6:34", "type": "" } ], "returnVariables": [ { - "name": "ret", + "name": "tail", "nodeType": "YulTypedName", - "src": "49351:3:33", + "src": "46320:4:34", "type": "" } ], - "src": "49312:171:33" + "src": "46205:320:34" }, { "body": { "nodeType": "YulBlock", - "src": "49602:34:33", + "src": "46576:32:34", "statements": [ { "nodeType": "YulAssignment", - "src": "49612:18:33", + "src": "46586:16:34", "value": { - "name": "pos", + "name": "value", "nodeType": "YulIdentifier", - "src": "49627:3:33" + "src": "46597:5:34" }, "variableNames": [ { - "name": "updated_pos", + "name": "cleaned", "nodeType": "YulIdentifier", - "src": "49612:11:33" + "src": "46586:7:34" } ] } ] }, - "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "name": "cleanup_t_bytes32", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", - "nodeType": "YulTypedName", - "src": "49574:3:33", - "type": "" - }, - { - "name": "length", + "name": "value", "nodeType": "YulTypedName", - "src": "49579:6:33", + "src": "46558:5:34", "type": "" } ], "returnVariables": [ { - "name": "updated_pos", + "name": "cleaned", "nodeType": "YulTypedName", - "src": "49590:11:33", + "src": "46568:7:34", "type": "" } ], - "src": "49489:147:33" + "src": "46531:77:34" }, { "body": { "nodeType": "YulBlock", - "src": "49805:235:33", + "src": "46657:79:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "49815:90:33", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "49898:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "49903:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", - "nodeType": "YulIdentifier", - "src": "49822:75:33" - }, - "nodeType": "YulFunctionCall", - "src": "49822:83:33" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "49815:3:33" - } - ] - }, - { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "46714:16:34", + "statements": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "50003:3:33" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46723:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46726:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "46716:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "46716:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "46716:12:34" } - ], - "functionName": { - "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "nodeType": "YulIdentifier", - "src": "49914:88:33" - }, - "nodeType": "YulFunctionCall", - "src": "49914:93:33" + ] }, - "nodeType": "YulExpressionStatement", - "src": "49914:93:33" - }, - { - "nodeType": "YulAssignment", - "src": "50016:18:33", - "value": { + "condition": { "arguments": [ { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "50027:3:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "50032:1:33", - "type": "", - "value": "0" + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46680:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46705:5:34" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "46687:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "46687:24:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "46677:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "46677:35:34" } ], "functionName": { - "name": "add", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "50023:3:33" + "src": "46670:6:34" }, "nodeType": "YulFunctionCall", - "src": "50023:11:33" + "src": "46670:43:34" }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "50016:3:33" - } - ] + "nodeType": "YulIf", + "src": "46667:63:34" } ] }, - "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "name": "validator_revert_t_bytes32", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", - "nodeType": "YulTypedName", - "src": "49793:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", + "name": "value", "nodeType": "YulTypedName", - "src": "49801:3:33", + "src": "46650:5:34", "type": "" } ], - "src": "49642:398:33" + "src": "46614:122:34" }, { "body": { "nodeType": "YulBlock", - "src": "50234:191:33", + "src": "46805:80:34", "statements": [ { "nodeType": "YulAssignment", - "src": "50245:154:33", + "src": "46815:22:34", "value": { "arguments": [ { - "name": "pos", + "name": "offset", "nodeType": "YulIdentifier", - "src": "50395:3:33" + "src": "46830:6:34" } ], "functionName": { - "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "name": "mload", "nodeType": "YulIdentifier", - "src": "50252:141:33" + "src": "46824:5:34" }, "nodeType": "YulFunctionCall", - "src": "50252:147:33" + "src": "46824:13:34" }, "variableNames": [ { - "name": "pos", + "name": "value", "nodeType": "YulIdentifier", - "src": "50245:3:33" + "src": "46815:5:34" } ] }, { - "nodeType": "YulAssignment", - "src": "50409:10:33", - "value": { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "50416:3:33" - }, - "variableNames": [ - { - "name": "end", + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46873:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", "nodeType": "YulIdentifier", - "src": "50409:3:33" - } - ] + "src": "46846:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "46846:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "46846:33:34" } ] }, - "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "name": "abi_decode_t_bytes32_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "pos", + "name": "offset", + "nodeType": "YulTypedName", + "src": "46783:6:34", + "type": "" + }, + { + "name": "end", "nodeType": "YulTypedName", - "src": "50221:3:33", + "src": "46791:3:34", "type": "" } ], "returnVariables": [ { - "name": "end", + "name": "value", "nodeType": "YulTypedName", - "src": "50230:3:33", + "src": "46799:5:34", "type": "" } ], - "src": "50046:379:33" + "src": "46742:143:34" }, { "body": { "nodeType": "YulBlock", - "src": "50557:206:33", + "src": "46968:274:34", "statements": [ { - "nodeType": "YulAssignment", - "src": "50567:26:33", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "50579:9:33" - }, + "body": { + "nodeType": "YulBlock", + "src": "47014:83:34", + "statements": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "50590:2:33", - "type": "", - "value": "64" + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "47016:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "47016:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "47016:79:34" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "50575:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "50575:18:33" + ] }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "50567:4:33" - } - ] - }, - { - "expression": { + "condition": { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "50647:6:33" - }, { "arguments": [ { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "50660:9:33" + "src": "46989:7:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "50671:1:33", - "type": "", - "value": "0" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46998:9:34" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "50656:3:33" + "src": "46985:3:34" }, "nodeType": "YulFunctionCall", - "src": "50656:17:33" + "src": "46985:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47010:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "abi_encode_t_address_to_t_address_fromStack", + "name": "slt", "nodeType": "YulIdentifier", - "src": "50603:43:33" + "src": "46981:3:34" }, "nodeType": "YulFunctionCall", - "src": "50603:71:33" + "src": "46981:32:34" }, - "nodeType": "YulExpressionStatement", - "src": "50603:71:33" + "nodeType": "YulIf", + "src": "46978:119:34" }, { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "50728:6:33" + "nodeType": "YulBlock", + "src": "47107:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "47122:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47136:1:34", + "type": "", + "value": "0" }, - { + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "47126:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "47151:74:34", + "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "50741:9:33" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "47197:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "47208:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47193:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "47193:22:34" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "50752:2:33", - "type": "", - "value": "32" + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "47217:7:34" } ], "functionName": { - "name": "add", + "name": "abi_decode_t_bytes32_fromMemory", "nodeType": "YulIdentifier", - "src": "50737:3:33" + "src": "47161:31:34" }, "nodeType": "YulFunctionCall", - "src": "50737:18:33" - } - ], - "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", - "nodeType": "YulIdentifier", - "src": "50684:43:33" - }, - "nodeType": "YulFunctionCall", - "src": "50684:72:33" - }, - "nodeType": "YulExpressionStatement", - "src": "50684:72:33" + "src": "47161:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "47151:6:34" + } + ] + } + ] } ] }, - "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "name": "abi_decode_tuple_t_bytes32_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "50521:9:33", + "src": "46938:9:34", "type": "" }, { - "name": "value1", - "nodeType": "YulTypedName", - "src": "50533:6:33", - "type": "" - }, - { - "name": "value0", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "50541:6:33", + "src": "46949:7:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value0", "nodeType": "YulTypedName", - "src": "50552:4:33", + "src": "46961:6:34", "type": "" } ], - "src": "50431:332:33" + "src": "46891:351:34" }, { "body": { "nodeType": "YulBlock", - "src": "50951:316:33", + "src": "47291:128:34", "statements": [ { "nodeType": "YulAssignment", - "src": "50961:26:33", + "src": "47301:33:34", "value": { "arguments": [ { - "name": "headStart", + "name": "value", "nodeType": "YulIdentifier", - "src": "50973:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "50984:2:33", - "type": "", - "value": "96" + "src": "47328:5:34" } ], "functionName": { - "name": "add", + "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "50969:3:33" + "src": "47310:17:34" }, "nodeType": "YulFunctionCall", - "src": "50969:18:33" + "src": "47310:24:34" }, "variableNames": [ { - "name": "tail", + "name": "value", "nodeType": "YulIdentifier", - "src": "50961:4:33" + "src": "47301:5:34" } ] }, { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "51055:6:33" - }, + "body": { + "nodeType": "YulBlock", + "src": "47362:22:34", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "51068:9:33" + "src": "47364:16:34" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "51079:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "51064:3:33" + "nodeType": "YulFunctionCall", + "src": "47364:18:34" }, - "nodeType": "YulFunctionCall", - "src": "51064:17:33" + "nodeType": "YulExpressionStatement", + "src": "47364:18:34" } - ], - "functionName": { - "name": "abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack", - "nodeType": "YulIdentifier", - "src": "50997:57:33" - }, - "nodeType": "YulFunctionCall", - "src": "50997:85:33" + ] }, - "nodeType": "YulExpressionStatement", - "src": "50997:85:33" - }, - { - "expression": { + "condition": { "arguments": [ { - "name": "value1", + "name": "value", "nodeType": "YulIdentifier", - "src": "51150:6:33" + "src": "47349:5:34" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "51163:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "51174:2:33", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "51159:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "51159:18:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "47356:4:34", + "type": "", + "value": "0x00" } ], "functionName": { - "name": "abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack", + "name": "eq", "nodeType": "YulIdentifier", - "src": "51092:57:33" + "src": "47346:2:34" }, "nodeType": "YulFunctionCall", - "src": "51092:86:33" + "src": "47346:15:34" }, - "nodeType": "YulExpressionStatement", - "src": "51092:86:33" + "nodeType": "YulIf", + "src": "47343:41:34" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "47393:20:34", + "value": { "arguments": [ { - "name": "value2", + "name": "value", "nodeType": "YulIdentifier", - "src": "51232:6:33" + "src": "47404:5:34" }, { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "51245:9:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "51256:2:33", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "51241:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "51241:18:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "47411:1:34", + "type": "", + "value": "1" } ], "functionName": { - "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "name": "sub", "nodeType": "YulIdentifier", - "src": "51188:43:33" + "src": "47400:3:34" }, "nodeType": "YulFunctionCall", - "src": "51188:72:33" + "src": "47400:13:34" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "47393:3:34" + } + ] + } + ] + }, + "name": "decrement_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "47277:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "47287:3:34", + "type": "" + } + ], + "src": "47248:171:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47538:34:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "47548:18:34", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47563:3:34" }, - "nodeType": "YulExpressionStatement", - "src": "51188:72:33" + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "47548:11:34" + } + ] } ] }, - "name": "abi_encode_tuple_t_contract$_IERC20_$225_t_contract$_IERC20_$225_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "50907:9:33", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "50919:6:33", - "type": "" - }, - { - "name": "value1", + "name": "pos", "nodeType": "YulTypedName", - "src": "50927:6:33", + "src": "47510:3:34", "type": "" }, { - "name": "value0", + "name": "length", "nodeType": "YulTypedName", - "src": "50935:6:33", + "src": "47515:6:34", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "updated_pos", "nodeType": "YulTypedName", - "src": "50946:4:33", + "src": "47526:11:34", "type": "" } ], - "src": "50769:498:33" + "src": "47425:147:34" }, { "body": { "nodeType": "YulBlock", - "src": "51335:79:33", + "src": "47741:235:34", "statements": [ { "nodeType": "YulAssignment", - "src": "51345:22:33", + "src": "47751:90:34", "value": { "arguments": [ { - "name": "offset", + "name": "pos", "nodeType": "YulIdentifier", - "src": "51360:6:33" + "src": "47834:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47839:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "mload", + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", "nodeType": "YulIdentifier", - "src": "51354:5:33" + "src": "47758:75:34" }, "nodeType": "YulFunctionCall", - "src": "51354:13:33" + "src": "47758:83:34" }, "variableNames": [ { - "name": "value", + "name": "pos", "nodeType": "YulIdentifier", - "src": "51345:5:33" + "src": "47751:3:34" } ] }, @@ -28094,314 +26183,184 @@ "expression": { "arguments": [ { - "name": "value", + "name": "pos", "nodeType": "YulIdentifier", - "src": "51402:5:33" + "src": "47939:3:34" } ], "functionName": { - "name": "validator_revert_t_uint16", + "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "nodeType": "YulIdentifier", - "src": "51376:25:33" + "src": "47850:88:34" }, "nodeType": "YulFunctionCall", - "src": "51376:32:33" + "src": "47850:93:34" }, "nodeType": "YulExpressionStatement", - "src": "51376:32:33" - } - ] - }, - "name": "abi_decode_t_uint16_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "51313:6:33", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "51321:3:33", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "51329:5:33", - "type": "" - } - ], - "src": "51273:141:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "51487:51:33", - "statements": [ + "src": "47850:93:34" + }, { "nodeType": "YulAssignment", - "src": "51497:35:33", + "src": "47952:18:34", "value": { "arguments": [ { - "name": "value", + "name": "pos", "nodeType": "YulIdentifier", - "src": "51526:5:33" + "src": "47963:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47968:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "cleanup_t_address", + "name": "add", "nodeType": "YulIdentifier", - "src": "51508:17:33" + "src": "47959:3:34" }, "nodeType": "YulFunctionCall", - "src": "51508:24:33" + "src": "47959:11:34" }, "variableNames": [ { - "name": "cleaned", + "name": "end", "nodeType": "YulIdentifier", - "src": "51497:7:33" + "src": "47952:3:34" } ] } ] }, - "name": "cleanup_t_contract$_ILBLegacyPair_$5497", + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "value", + "name": "pos", "nodeType": "YulTypedName", - "src": "51469:5:33", + "src": "47729:3:34", "type": "" } ], "returnVariables": [ { - "name": "cleaned", - "nodeType": "YulTypedName", - "src": "51479:7:33", - "type": "" - } - ], - "src": "51420:118:33" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "51609:101:33", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "51688:16:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "51697:1:33", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "51700:1:33", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "51690:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "51690:12:33" - }, - "nodeType": "YulExpressionStatement", - "src": "51690:12:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "51632:5:33" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "51679:5:33" - } - ], - "functionName": { - "name": "cleanup_t_contract$_ILBLegacyPair_$5497", - "nodeType": "YulIdentifier", - "src": "51639:39:33" - }, - "nodeType": "YulFunctionCall", - "src": "51639:46:33" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "51629:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "51629:57:33" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "51622:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "51622:65:33" - }, - "nodeType": "YulIf", - "src": "51619:85:33" - } - ] - }, - "name": "validator_revert_t_contract$_ILBLegacyPair_$5497", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", + "name": "end", "nodeType": "YulTypedName", - "src": "51602:5:33", + "src": "47737:3:34", "type": "" } ], - "src": "51544:166:33" + "src": "47578:398:34" }, { "body": { "nodeType": "YulBlock", - "src": "51801:102:33", + "src": "48170:191:34", "statements": [ { "nodeType": "YulAssignment", - "src": "51811:22:33", + "src": "48181:154:34", "value": { "arguments": [ { - "name": "offset", + "name": "pos", "nodeType": "YulIdentifier", - "src": "51826:6:33" + "src": "48331:3:34" } ], "functionName": { - "name": "mload", + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", "nodeType": "YulIdentifier", - "src": "51820:5:33" + "src": "48188:141:34" }, "nodeType": "YulFunctionCall", - "src": "51820:13:33" + "src": "48188:147:34" }, "variableNames": [ { - "name": "value", + "name": "pos", "nodeType": "YulIdentifier", - "src": "51811:5:33" + "src": "48181:3:34" } ] }, { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "51891:5:33" - } - ], - "functionName": { - "name": "validator_revert_t_contract$_ILBLegacyPair_$5497", - "nodeType": "YulIdentifier", - "src": "51842:48:33" - }, - "nodeType": "YulFunctionCall", - "src": "51842:55:33" + "nodeType": "YulAssignment", + "src": "48345:10:34", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "48352:3:34" }, - "nodeType": "YulExpressionStatement", - "src": "51842:55:33" + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "48345:3:34" + } + ] } ] }, - "name": "abi_decode_t_contract$_ILBLegacyPair_$5497_fromMemory", + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", - "nodeType": "YulTypedName", - "src": "51779:6:33", - "type": "" - }, - { - "name": "end", + "name": "pos", "nodeType": "YulTypedName", - "src": "51787:3:33", + "src": "48157:3:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "end", "nodeType": "YulTypedName", - "src": "51795:5:33", + "src": "48166:3:34", "type": "" } ], - "src": "51716:187:33" + "src": "47982:379:34" }, { "body": { "nodeType": "YulBlock", - "src": "51969:77:33", + "src": "48493:206:34", "statements": [ { "nodeType": "YulAssignment", - "src": "51979:22:33", + "src": "48503:26:34", "value": { "arguments": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "51994:6:33" + "src": "48515:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48526:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "mload", + "name": "add", "nodeType": "YulIdentifier", - "src": "51988:5:33" + "src": "48511:3:34" }, "nodeType": "YulFunctionCall", - "src": "51988:13:33" + "src": "48511:18:34" }, "variableNames": [ { - "name": "value", + "name": "tail", "nodeType": "YulIdentifier", - "src": "51979:5:33" + "src": "48503:4:34" } ] }, @@ -28409,562 +26368,397 @@ "expression": { "arguments": [ { - "name": "value", + "name": "value0", + "nodeType": "YulIdentifier", + "src": "48583:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48596:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48607:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "48592:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "48592:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "48539:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "48539:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "48539:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", "nodeType": "YulIdentifier", - "src": "52034:5:33" + "src": "48664:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48677:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48688:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "48673:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "48673:18:34" } ], "functionName": { - "name": "validator_revert_t_bool", + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "52010:23:33" + "src": "48620:43:34" }, "nodeType": "YulFunctionCall", - "src": "52010:30:33" + "src": "48620:72:34" }, "nodeType": "YulExpressionStatement", - "src": "52010:30:33" + "src": "48620:72:34" } ] }, - "name": "abi_decode_t_bool_fromMemory", + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "offset", + "name": "headStart", "nodeType": "YulTypedName", - "src": "51947:6:33", + "src": "48457:9:34", "type": "" }, { - "name": "end", + "name": "value1", + "nodeType": "YulTypedName", + "src": "48469:6:34", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "51955:3:33", + "src": "48477:6:34", "type": "" } ], "returnVariables": [ { - "name": "value", + "name": "tail", "nodeType": "YulTypedName", - "src": "51963:5:33", + "src": "48488:4:34", "type": "" } ], - "src": "51909:137:33" + "src": "48367:332:34" }, { "body": { "nodeType": "YulBlock", - "src": "52202:903:33", + "src": "48887:316:34", "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "52246:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", - "nodeType": "YulIdentifier", - "src": "52248:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "52248:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "52248:79:33" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "52223:3:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "52228:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "52219:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52219:19:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52240:4:33", - "type": "", - "value": "0x80" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "52215:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52215:30:33" - }, - "nodeType": "YulIf", - "src": "52212:117:33" - }, { "nodeType": "YulAssignment", - "src": "52338:30:33", + "src": "48897:26:34", "value": { "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48909:9:34" + }, { "kind": "number", "nodeType": "YulLiteral", - "src": "52363:4:33", + "src": "48920:2:34", "type": "", - "value": "0x80" + "value": "96" } ], "functionName": { - "name": "allocate_memory", + "name": "add", "nodeType": "YulIdentifier", - "src": "52347:15:33" + "src": "48905:3:34" }, "nodeType": "YulFunctionCall", - "src": "52347:21:33" + "src": "48905:18:34" }, "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "52338:5:33" - } - ] - }, - { - "nodeType": "YulBlock", - "src": "52378:163:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "52416:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52430:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "52420:6:33", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "52456:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52463:4:33", - "type": "", - "value": "0x00" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "52452:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52452:16:33" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "52505:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "52516:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "52501:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52501:22:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "52525:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_uint16_fromMemory", - "nodeType": "YulIdentifier", - "src": "52470:30:33" - }, - "nodeType": "YulFunctionCall", - "src": "52470:59:33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "52445:6:33" - }, - "nodeType": "YulFunctionCall", - "src": "52445:85:33" - }, - "nodeType": "YulExpressionStatement", - "src": "52445:85:33" - } - ] - }, - { - "nodeType": "YulBlock", - "src": "52551:186:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "52588:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52602:2:33", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "52592:6:33", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "52629:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52636:4:33", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "52625:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52625:16:33" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "52701:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "52712:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "52697:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52697:22:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "52721:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_contract$_ILBLegacyPair_$5497_fromMemory", - "nodeType": "YulIdentifier", - "src": "52643:53:33" - }, - "nodeType": "YulFunctionCall", - "src": "52643:82:33" + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "48897:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "48991:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49004:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49015:1:34", + "type": "", + "value": "0" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "52618:6:33" + "src": "49000:3:34" }, "nodeType": "YulFunctionCall", - "src": "52618:108:33" - }, - "nodeType": "YulExpressionStatement", - "src": "52618:108:33" - } - ] + "src": "49000:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "48933:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "48933:85:34" + }, + "nodeType": "YulExpressionStatement", + "src": "48933:85:34" }, { - "nodeType": "YulBlock", - "src": "52747:169:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "52792:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52806:2:33", - "type": "", - "value": "64" + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "49086:6:34" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "52796:6:33", - "type": "" - } - ] - }, - { - "expression": { + { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "52833:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52840:4:33", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "52829:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52829:16:33" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49099:9:34" }, { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "52880:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "52891:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "52876:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "52876:22:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "52900:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_bool_fromMemory", - "nodeType": "YulIdentifier", - "src": "52847:28:33" - }, - "nodeType": "YulFunctionCall", - "src": "52847:57:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "49110:2:34", + "type": "", + "value": "32" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "52822:6:33" + "src": "49095:3:34" }, "nodeType": "YulFunctionCall", - "src": "52822:83:33" - }, - "nodeType": "YulExpressionStatement", - "src": "52822:83:33" - } - ] + "src": "49095:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "49028:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "49028:86:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49028:86:34" }, { - "nodeType": "YulBlock", - "src": "52926:172:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "52974:16:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "52988:2:33", - "type": "", - "value": "96" + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "49168:6:34" }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "52978:6:33", - "type": "" - } - ] - }, - { - "expression": { + { "arguments": [ { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "53015:5:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "53022:4:33", - "type": "", - "value": "0x60" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "53011:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "53011:16:33" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49181:9:34" }, { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "53062:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "53073:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "53058:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "53058:22:33" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "53082:3:33" - } - ], - "functionName": { - "name": "abi_decode_t_bool_fromMemory", - "nodeType": "YulIdentifier", - "src": "53029:28:33" - }, - "nodeType": "YulFunctionCall", - "src": "53029:57:33" + "kind": "number", + "nodeType": "YulLiteral", + "src": "49192:2:34", + "type": "", + "value": "64" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "53004:6:33" + "src": "49177:3:34" }, "nodeType": "YulFunctionCall", - "src": "53004:83:33" - }, - "nodeType": "YulExpressionStatement", - "src": "53004:83:33" + "src": "49177:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "49124:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "49124:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49124:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "48843:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "48855:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "48863:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "48871:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "48882:4:34", + "type": "" + } + ], + "src": "48705:498:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49271:79:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "49281:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "49296:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "49290:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "49290:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49281:5:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49338:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "49312:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "49312:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49312:32:34" } ] }, - "name": "abi_decode_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory", + "name": "abi_decode_t_uint16_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "52177:9:33", + "src": "49249:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "52188:3:33", + "src": "49257:3:34", "type": "" } ], @@ -28972,190 +26766,101 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "52196:5:33", + "src": "49265:5:34", "type": "" } ], - "src": "52101:1004:33" + "src": "49209:141:34" }, { "body": { "nodeType": "YulBlock", - "src": "53223:310:33", + "src": "49416:77:34", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "53270:83:33", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", - "nodeType": "YulIdentifier", - "src": "53272:77:33" - }, - "nodeType": "YulFunctionCall", - "src": "53272:79:33" - }, - "nodeType": "YulExpressionStatement", - "src": "53272:79:33" - } - ] - }, - "condition": { + "nodeType": "YulAssignment", + "src": "49426:22:34", + "value": { "arguments": [ { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "53244:7:33" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "53253:9:33" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "53240:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "53240:23:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "53265:3:33", - "type": "", - "value": "128" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "49441:6:34" } ], "functionName": { - "name": "slt", + "name": "mload", "nodeType": "YulIdentifier", - "src": "53236:3:33" + "src": "49435:5:34" }, "nodeType": "YulFunctionCall", - "src": "53236:33:33" + "src": "49435:13:34" }, - "nodeType": "YulIf", - "src": "53233:120:33" - }, - { - "nodeType": "YulBlock", - "src": "53363:163:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "53378:15:33", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "53392:1:33", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "53382:6:33", - "type": "" - } - ] - }, + "variableNames": [ { - "nodeType": "YulAssignment", - "src": "53407:109:33", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "53488:9:33" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "53499:6:33" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "53484:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "53484:22:33" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "53508:7:33" - } - ], - "functionName": { - "name": "abi_decode_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory", - "nodeType": "YulIdentifier", - "src": "53417:66:33" - }, - "nodeType": "YulFunctionCall", - "src": "53417:99:33" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "53407:6:33" - } - ] + "name": "value", + "nodeType": "YulIdentifier", + "src": "49426:5:34" } ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49481:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "49457:23:34" + }, + "nodeType": "YulFunctionCall", + "src": "49457:30:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49457:30:34" } ] }, - "name": "abi_decode_tuple_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory", + "name": "abi_decode_t_bool_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "53193:9:33", + "src": "49394:6:34", "type": "" }, { - "name": "dataEnd", + "name": "end", "nodeType": "YulTypedName", - "src": "53204:7:33", + "src": "49402:3:34", "type": "" } ], "returnVariables": [ { - "name": "value0", + "name": "value", "nodeType": "YulTypedName", - "src": "53216:6:33", + "src": "49410:5:34", "type": "" } ], - "src": "53111:422:33" + "src": "49356:137:34" }, { "body": { "nodeType": "YulBlock", - "src": "53683:897:33", + "src": "49643:897:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "53727:83:33", + "src": "49687:83:34", "statements": [ { "expression": { @@ -29163,13 +26868,13 @@ "functionName": { "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", "nodeType": "YulIdentifier", - "src": "53729:77:33" + "src": "49689:77:34" }, "nodeType": "YulFunctionCall", - "src": "53729:79:33" + "src": "49689:79:34" }, "nodeType": "YulExpressionStatement", - "src": "53729:79:33" + "src": "49689:79:34" } ] }, @@ -29180,26 +26885,26 @@ { "name": "end", "nodeType": "YulIdentifier", - "src": "53704:3:33" + "src": "49664:3:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "53709:9:33" + "src": "49669:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "53700:3:33" + "src": "49660:3:34" }, "nodeType": "YulFunctionCall", - "src": "53700:19:33" + "src": "49660:19:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "53721:4:33", + "src": "49681:4:34", "type": "", "value": "0x80" } @@ -29207,23 +26912,23 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "53696:3:33" + "src": "49656:3:34" }, "nodeType": "YulFunctionCall", - "src": "53696:30:33" + "src": "49656:30:34" }, "nodeType": "YulIf", - "src": "53693:117:33" + "src": "49653:117:34" }, { "nodeType": "YulAssignment", - "src": "53819:30:33", + "src": "49779:30:34", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "53844:4:33", + "src": "49804:4:34", "type": "", "value": "0x80" } @@ -29231,30 +26936,30 @@ "functionName": { "name": "allocate_memory", "nodeType": "YulIdentifier", - "src": "53828:15:33" + "src": "49788:15:34" }, "nodeType": "YulFunctionCall", - "src": "53828:21:33" + "src": "49788:21:34" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "53819:5:33" + "src": "49779:5:34" } ] }, { "nodeType": "YulBlock", - "src": "53859:163:33", + "src": "49819:163:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "53897:15:33", + "src": "49857:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "53911:1:33", + "src": "49871:1:34", "type": "", "value": "0" }, @@ -29262,7 +26967,7 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "53901:6:33", + "src": "49861:6:34", "type": "" } ] @@ -29275,12 +26980,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "53937:5:33" + "src": "49897:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "53944:4:33", + "src": "49904:4:34", "type": "", "value": "0x00" } @@ -29288,10 +26993,10 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "53933:3:33" + "src": "49893:3:34" }, "nodeType": "YulFunctionCall", - "src": "53933:16:33" + "src": "49893:16:34" }, { "arguments": [ @@ -29300,61 +27005,61 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "53986:9:33" + "src": "49946:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "53997:6:33" + "src": "49957:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "53982:3:33" + "src": "49942:3:34" }, "nodeType": "YulFunctionCall", - "src": "53982:22:33" + "src": "49942:22:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "54006:3:33" + "src": "49966:3:34" } ], "functionName": { "name": "abi_decode_t_uint16_fromMemory", "nodeType": "YulIdentifier", - "src": "53951:30:33" + "src": "49911:30:34" }, "nodeType": "YulFunctionCall", - "src": "53951:59:33" + "src": "49911:59:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "53926:6:33" + "src": "49886:6:34" }, "nodeType": "YulFunctionCall", - "src": "53926:85:33" + "src": "49886:85:34" }, "nodeType": "YulExpressionStatement", - "src": "53926:85:33" + "src": "49886:85:34" } ] }, { "nodeType": "YulBlock", - "src": "54032:180:33", + "src": "49992:180:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "54069:16:33", + "src": "50029:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "54083:2:33", + "src": "50043:2:34", "type": "", "value": "32" }, @@ -29362,7 +27067,7 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "54073:6:33", + "src": "50033:6:34", "type": "" } ] @@ -29375,12 +27080,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "54110:5:33" + "src": "50070:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "54117:4:33", + "src": "50077:4:34", "type": "", "value": "0x20" } @@ -29388,10 +27093,10 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "54106:3:33" + "src": "50066:3:34" }, "nodeType": "YulFunctionCall", - "src": "54106:16:33" + "src": "50066:16:34" }, { "arguments": [ @@ -29400,61 +27105,61 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "54176:9:33" + "src": "50136:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "54187:6:33" + "src": "50147:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "54172:3:33" + "src": "50132:3:34" }, "nodeType": "YulFunctionCall", - "src": "54172:22:33" + "src": "50132:22:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "54196:3:33" + "src": "50156:3:34" } ], "functionName": { - "name": "abi_decode_t_contract$_ILBPair_$6473_fromMemory", + "name": "abi_decode_t_contract$_ILBPair_$6187_fromMemory", "nodeType": "YulIdentifier", - "src": "54124:47:33" + "src": "50084:47:34" }, "nodeType": "YulFunctionCall", - "src": "54124:76:33" + "src": "50084:76:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "54099:6:33" + "src": "50059:6:34" }, "nodeType": "YulFunctionCall", - "src": "54099:102:33" + "src": "50059:102:34" }, "nodeType": "YulExpressionStatement", - "src": "54099:102:33" + "src": "50059:102:34" } ] }, { "nodeType": "YulBlock", - "src": "54222:169:33", + "src": "50182:169:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "54267:16:33", + "src": "50227:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "54281:2:33", + "src": "50241:2:34", "type": "", "value": "64" }, @@ -29462,7 +27167,7 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "54271:6:33", + "src": "50231:6:34", "type": "" } ] @@ -29475,12 +27180,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "54308:5:33" + "src": "50268:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "54315:4:33", + "src": "50275:4:34", "type": "", "value": "0x40" } @@ -29488,10 +27193,10 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "54304:3:33" + "src": "50264:3:34" }, "nodeType": "YulFunctionCall", - "src": "54304:16:33" + "src": "50264:16:34" }, { "arguments": [ @@ -29500,61 +27205,61 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "54355:9:33" + "src": "50315:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "54366:6:33" + "src": "50326:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "54351:3:33" + "src": "50311:3:34" }, "nodeType": "YulFunctionCall", - "src": "54351:22:33" + "src": "50311:22:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "54375:3:33" + "src": "50335:3:34" } ], "functionName": { "name": "abi_decode_t_bool_fromMemory", "nodeType": "YulIdentifier", - "src": "54322:28:33" + "src": "50282:28:34" }, "nodeType": "YulFunctionCall", - "src": "54322:57:33" + "src": "50282:57:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "54297:6:33" + "src": "50257:6:34" }, "nodeType": "YulFunctionCall", - "src": "54297:83:33" + "src": "50257:83:34" }, "nodeType": "YulExpressionStatement", - "src": "54297:83:33" + "src": "50257:83:34" } ] }, { "nodeType": "YulBlock", - "src": "54401:172:33", + "src": "50361:172:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "54449:16:33", + "src": "50409:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "54463:2:33", + "src": "50423:2:34", "type": "", "value": "96" }, @@ -29562,7 +27267,7 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "54453:6:33", + "src": "50413:6:34", "type": "" } ] @@ -29575,12 +27280,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "54490:5:33" + "src": "50450:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "54497:4:33", + "src": "50457:4:34", "type": "", "value": "0x60" } @@ -29588,10 +27293,10 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "54486:3:33" + "src": "50446:3:34" }, "nodeType": "YulFunctionCall", - "src": "54486:16:33" + "src": "50446:16:34" }, { "arguments": [ @@ -29600,65 +27305,65 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "54537:9:33" + "src": "50497:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "54548:6:33" + "src": "50508:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "54533:3:33" + "src": "50493:3:34" }, "nodeType": "YulFunctionCall", - "src": "54533:22:33" + "src": "50493:22:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "54557:3:33" + "src": "50517:3:34" } ], "functionName": { "name": "abi_decode_t_bool_fromMemory", "nodeType": "YulIdentifier", - "src": "54504:28:33" + "src": "50464:28:34" }, "nodeType": "YulFunctionCall", - "src": "54504:57:33" + "src": "50464:57:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "54479:6:33" + "src": "50439:6:34" }, "nodeType": "YulFunctionCall", - "src": "54479:83:33" + "src": "50439:83:34" }, "nodeType": "YulExpressionStatement", - "src": "54479:83:33" + "src": "50439:83:34" } ] } ] }, - "name": "abi_decode_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory", + "name": "abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "53658:9:33", + "src": "49618:9:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "53669:3:33", + "src": "49629:3:34", "type": "" } ], @@ -29666,21 +27371,21 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "53677:5:33", + "src": "49637:5:34", "type": "" } ], - "src": "53582:998:33" + "src": "49542:998:34" }, { "body": { "nodeType": "YulBlock", - "src": "54698:310:33", + "src": "50658:310:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "54745:83:33", + "src": "50705:83:34", "statements": [ { "expression": { @@ -29688,13 +27393,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "54747:77:33" + "src": "50707:77:34" }, "nodeType": "YulFunctionCall", - "src": "54747:79:33" + "src": "50707:79:34" }, "nodeType": "YulExpressionStatement", - "src": "54747:79:33" + "src": "50707:79:34" } ] }, @@ -29705,26 +27410,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "54719:7:33" + "src": "50679:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "54728:9:33" + "src": "50688:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "54715:3:33" + "src": "50675:3:34" }, "nodeType": "YulFunctionCall", - "src": "54715:23:33" + "src": "50675:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "54740:3:33", + "src": "50700:3:34", "type": "", "value": "128" } @@ -29732,25 +27437,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "54711:3:33" + "src": "50671:3:34" }, "nodeType": "YulFunctionCall", - "src": "54711:33:33" + "src": "50671:33:34" }, "nodeType": "YulIf", - "src": "54708:120:33" + "src": "50668:120:34" }, { "nodeType": "YulBlock", - "src": "54838:163:33", + "src": "50798:163:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "54853:15:33", + "src": "50813:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "54867:1:33", + "src": "50827:1:34", "type": "", "value": "0" }, @@ -29758,14 +27463,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "54857:6:33", + "src": "50817:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "54882:109:33", + "src": "50842:109:34", "value": { "arguments": [ { @@ -29773,41 +27478,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "54963:9:33" + "src": "50923:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "54974:6:33" + "src": "50934:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "54959:3:33" + "src": "50919:3:34" }, "nodeType": "YulFunctionCall", - "src": "54959:22:33" + "src": "50919:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "54983:7:33" + "src": "50943:7:34" } ], "functionName": { - "name": "abi_decode_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory", + "name": "abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory", "nodeType": "YulIdentifier", - "src": "54892:66:33" + "src": "50852:66:34" }, "nodeType": "YulFunctionCall", - "src": "54892:99:33" + "src": "50852:99:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "54882:6:33" + "src": "50842:6:34" } ] } @@ -29815,19 +27520,19 @@ } ] }, - "name": "abi_decode_tuple_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory", + "name": "abi_decode_tuple_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "54668:9:33", + "src": "50628:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "54679:7:33", + "src": "50639:7:34", "type": "" } ], @@ -29835,31 +27540,31 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "54691:6:33", + "src": "50651:6:34", "type": "" } ], - "src": "54586:422:33" + "src": "50546:422:34" }, { "body": { "nodeType": "YulBlock", - "src": "55168:288:33", + "src": "51128:288:34", "statements": [ { "nodeType": "YulAssignment", - "src": "55178:26:33", + "src": "51138:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55190:9:33" + "src": "51150:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55201:2:33", + "src": "51161:2:34", "type": "", "value": "96" } @@ -29867,16 +27572,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55186:3:33" + "src": "51146:3:34" }, "nodeType": "YulFunctionCall", - "src": "55186:18:33" + "src": "51146:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "55178:4:33" + "src": "51138:4:34" } ] }, @@ -29886,19 +27591,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "55258:6:33" + "src": "51218:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55271:9:33" + "src": "51231:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55282:1:33", + "src": "51242:1:34", "type": "", "value": "0" } @@ -29906,22 +27611,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55267:3:33" + "src": "51227:3:34" }, "nodeType": "YulFunctionCall", - "src": "55267:17:33" + "src": "51227:17:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "55214:43:33" + "src": "51174:43:34" }, "nodeType": "YulFunctionCall", - "src": "55214:71:33" + "src": "51174:71:34" }, "nodeType": "YulExpressionStatement", - "src": "55214:71:33" + "src": "51174:71:34" }, { "expression": { @@ -29929,19 +27634,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "55339:6:33" + "src": "51299:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55352:9:33" + "src": "51312:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55363:2:33", + "src": "51323:2:34", "type": "", "value": "32" } @@ -29949,22 +27654,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55348:3:33" + "src": "51308:3:34" }, "nodeType": "YulFunctionCall", - "src": "55348:18:33" + "src": "51308:18:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "55295:43:33" + "src": "51255:43:34" }, "nodeType": "YulFunctionCall", - "src": "55295:72:33" + "src": "51255:72:34" }, "nodeType": "YulExpressionStatement", - "src": "55295:72:33" + "src": "51255:72:34" }, { "expression": { @@ -29972,19 +27677,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "55421:6:33" + "src": "51381:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55434:9:33" + "src": "51394:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55445:2:33", + "src": "51405:2:34", "type": "", "value": "64" } @@ -29992,22 +27697,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55430:3:33" + "src": "51390:3:34" }, "nodeType": "YulFunctionCall", - "src": "55430:18:33" + "src": "51390:18:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "55377:43:33" + "src": "51337:43:34" }, "nodeType": "YulFunctionCall", - "src": "55377:72:33" + "src": "51337:72:34" }, "nodeType": "YulExpressionStatement", - "src": "55377:72:33" + "src": "51337:72:34" } ] }, @@ -30017,25 +27722,25 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "55124:9:33", + "src": "51084:9:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "55136:6:33", + "src": "51096:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "55144:6:33", + "src": "51104:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "55152:6:33", + "src": "51112:6:34", "type": "" } ], @@ -30043,31 +27748,31 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "55163:4:33", + "src": "51123:4:34", "type": "" } ], - "src": "55014:442:33" + "src": "50974:442:34" }, { "body": { "nodeType": "YulBlock", - "src": "55744:573:33", + "src": "51704:573:34", "statements": [ { "nodeType": "YulAssignment", - "src": "55754:27:33", + "src": "51714:27:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55766:9:33" + "src": "51726:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55777:3:33", + "src": "51737:3:34", "type": "", "value": "128" } @@ -30075,16 +27780,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55762:3:33" + "src": "51722:3:34" }, "nodeType": "YulFunctionCall", - "src": "55762:19:33" + "src": "51722:19:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "55754:4:33" + "src": "51714:4:34" } ] }, @@ -30094,19 +27799,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "55835:6:33" + "src": "51795:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55848:9:33" + "src": "51808:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55859:1:33", + "src": "51819:1:34", "type": "", "value": "0" } @@ -30114,22 +27819,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55844:3:33" + "src": "51804:3:34" }, "nodeType": "YulFunctionCall", - "src": "55844:17:33" + "src": "51804:17:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "55791:43:33" + "src": "51751:43:34" }, "nodeType": "YulFunctionCall", - "src": "55791:71:33" + "src": "51751:71:34" }, "nodeType": "YulExpressionStatement", - "src": "55791:71:33" + "src": "51751:71:34" }, { "expression": { @@ -30137,19 +27842,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "55916:6:33" + "src": "51876:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55929:9:33" + "src": "51889:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55940:2:33", + "src": "51900:2:34", "type": "", "value": "32" } @@ -30157,22 +27862,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55925:3:33" + "src": "51885:3:34" }, "nodeType": "YulFunctionCall", - "src": "55925:18:33" + "src": "51885:18:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "55872:43:33" + "src": "51832:43:34" }, "nodeType": "YulFunctionCall", - "src": "55872:72:33" + "src": "51832:72:34" }, "nodeType": "YulExpressionStatement", - "src": "55872:72:33" + "src": "51832:72:34" }, { "expression": { @@ -30182,12 +27887,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55965:9:33" + "src": "51925:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "55976:2:33", + "src": "51936:2:34", "type": "", "value": "64" } @@ -30195,73 +27900,73 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "55961:3:33" + "src": "51921:3:34" }, "nodeType": "YulFunctionCall", - "src": "55961:18:33" + "src": "51921:18:34" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "55985:4:33" + "src": "51945:4:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "55991:9:33" + "src": "51951:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "55981:3:33" + "src": "51941:3:34" }, "nodeType": "YulFunctionCall", - "src": "55981:20:33" + "src": "51941:20:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "55954:6:33" + "src": "51914:6:34" }, "nodeType": "YulFunctionCall", - "src": "55954:48:33" + "src": "51914:48:34" }, "nodeType": "YulExpressionStatement", - "src": "55954:48:33" + "src": "51914:48:34" }, { "nodeType": "YulAssignment", - "src": "56011:116:33", + "src": "51971:116:34", "value": { "arguments": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "56113:6:33" + "src": "52073:6:34" }, { "name": "tail", "nodeType": "YulIdentifier", - "src": "56122:4:33" + "src": "52082:4:34" } ], "functionName": { "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "56019:93:33" + "src": "51979:93:34" }, "nodeType": "YulFunctionCall", - "src": "56019:108:33" + "src": "51979:108:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "56011:4:33" + "src": "51971:4:34" } ] }, @@ -30273,12 +27978,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "56148:9:33" + "src": "52108:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "56159:2:33", + "src": "52119:2:34", "type": "", "value": "96" } @@ -30286,73 +27991,73 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "56144:3:33" + "src": "52104:3:34" }, "nodeType": "YulFunctionCall", - "src": "56144:18:33" + "src": "52104:18:34" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "56168:4:33" + "src": "52128:4:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "56174:9:33" + "src": "52134:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "56164:3:33" + "src": "52124:3:34" }, "nodeType": "YulFunctionCall", - "src": "56164:20:33" + "src": "52124:20:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "56137:6:33" + "src": "52097:6:34" }, "nodeType": "YulFunctionCall", - "src": "56137:48:33" + "src": "52097:48:34" }, "nodeType": "YulExpressionStatement", - "src": "56137:48:33" + "src": "52097:48:34" }, { "nodeType": "YulAssignment", - "src": "56194:116:33", + "src": "52154:116:34", "value": { "arguments": [ { "name": "value3", "nodeType": "YulIdentifier", - "src": "56296:6:33" + "src": "52256:6:34" }, { "name": "tail", "nodeType": "YulIdentifier", - "src": "56305:4:33" + "src": "52265:4:34" } ], "functionName": { "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "56202:93:33" + "src": "52162:93:34" }, "nodeType": "YulFunctionCall", - "src": "56202:108:33" + "src": "52162:108:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "56194:4:33" + "src": "52154:4:34" } ] } @@ -30364,31 +28069,31 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "55692:9:33", + "src": "51652:9:34", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "55704:6:33", + "src": "51664:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "55712:6:33", + "src": "51672:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "55720:6:33", + "src": "51680:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "55728:6:33", + "src": "51688:6:34", "type": "" } ], @@ -30396,21 +28101,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "55739:4:33", + "src": "51699:4:34", "type": "" } ], - "src": "55462:855:33" + "src": "51422:855:34" }, { "body": { "nodeType": "YulBlock", - "src": "56405:229:33", + "src": "52365:229:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "56510:22:33", + "src": "52470:22:34", "statements": [ { "expression": { @@ -30418,13 +28123,13 @@ "functionName": { "name": "panic_error_0x41", "nodeType": "YulIdentifier", - "src": "56512:16:33" + "src": "52472:16:34" }, "nodeType": "YulFunctionCall", - "src": "56512:18:33" + "src": "52472:18:34" }, "nodeType": "YulExpressionStatement", - "src": "56512:18:33" + "src": "52472:18:34" } ] }, @@ -30433,12 +28138,12 @@ { "name": "length", "nodeType": "YulIdentifier", - "src": "56482:6:33" + "src": "52442:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "56490:18:33", + "src": "52450:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -30446,28 +28151,28 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "56479:2:33" + "src": "52439:2:34" }, "nodeType": "YulFunctionCall", - "src": "56479:30:33" + "src": "52439:30:34" }, "nodeType": "YulIf", - "src": "56476:56:33" + "src": "52436:56:34" }, { "nodeType": "YulAssignment", - "src": "56542:25:33", + "src": "52502:25:34", "value": { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "56554:6:33" + "src": "52514:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "56562:4:33", + "src": "52522:4:34", "type": "", "value": "0x20" } @@ -30475,33 +28180,33 @@ "functionName": { "name": "mul", "nodeType": "YulIdentifier", - "src": "56550:3:33" + "src": "52510:3:34" }, "nodeType": "YulFunctionCall", - "src": "56550:17:33" + "src": "52510:17:34" }, "variableNames": [ { "name": "size", "nodeType": "YulIdentifier", - "src": "56542:4:33" + "src": "52502:4:34" } ] }, { "nodeType": "YulAssignment", - "src": "56604:23:33", + "src": "52564:23:34", "value": { "arguments": [ { "name": "size", "nodeType": "YulIdentifier", - "src": "56616:4:33" + "src": "52576:4:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "56622:4:33", + "src": "52582:4:34", "type": "", "value": "0x20" } @@ -30509,16 +28214,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "56612:3:33" + "src": "52572:3:34" }, "nodeType": "YulFunctionCall", - "src": "56612:15:33" + "src": "52572:15:34" }, "variableNames": [ { "name": "size", "nodeType": "YulIdentifier", - "src": "56604:4:33" + "src": "52564:4:34" } ] } @@ -30530,7 +28235,7 @@ { "name": "length", "nodeType": "YulTypedName", - "src": "56389:6:33", + "src": "52349:6:34", "type": "" } ], @@ -30538,20 +28243,20 @@ { "name": "size", "nodeType": "YulTypedName", - "src": "56400:4:33", + "src": "52360:4:34", "type": "" } ], - "src": "56323:311:33" + "src": "52283:311:34" }, { "body": { "nodeType": "YulBlock", - "src": "56770:619:33", + "src": "52730:619:34", "statements": [ { "nodeType": "YulAssignment", - "src": "56780:90:33", + "src": "52740:90:34", "value": { "arguments": [ { @@ -30559,47 +28264,47 @@ { "name": "length", "nodeType": "YulIdentifier", - "src": "56862:6:33" + "src": "52822:6:34" } ], "functionName": { "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "56805:56:33" + "src": "52765:56:34" }, "nodeType": "YulFunctionCall", - "src": "56805:64:33" + "src": "52765:64:34" } ], "functionName": { "name": "allocate_memory", "nodeType": "YulIdentifier", - "src": "56789:15:33" + "src": "52749:15:34" }, "nodeType": "YulFunctionCall", - "src": "56789:81:33" + "src": "52749:81:34" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", - "src": "56780:5:33" + "src": "52740:5:34" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "56879:16:33", + "src": "52839:16:34", "value": { "name": "array", "nodeType": "YulIdentifier", - "src": "56890:5:33" + "src": "52850:5:34" }, "variables": [ { "name": "dst", "nodeType": "YulTypedName", - "src": "56883:3:33", + "src": "52843:3:34", "type": "" } ] @@ -30610,39 +28315,39 @@ { "name": "array", "nodeType": "YulIdentifier", - "src": "56912:5:33" + "src": "52872:5:34" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "56919:6:33" + "src": "52879:6:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "56905:6:33" + "src": "52865:6:34" }, "nodeType": "YulFunctionCall", - "src": "56905:21:33" + "src": "52865:21:34" }, "nodeType": "YulExpressionStatement", - "src": "56905:21:33" + "src": "52865:21:34" }, { "nodeType": "YulAssignment", - "src": "56935:23:33", + "src": "52895:23:34", "value": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", - "src": "56946:5:33" + "src": "52906:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "56953:4:33", + "src": "52913:4:34", "type": "", "value": "0x20" } @@ -30650,40 +28355,40 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "56942:3:33" + "src": "52902:3:34" }, "nodeType": "YulFunctionCall", - "src": "56942:16:33" + "src": "52902:16:34" }, "variableNames": [ { "name": "dst", "nodeType": "YulIdentifier", - "src": "56935:3:33" + "src": "52895:3:34" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "56968:44:33", + "src": "52928:44:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "56986:6:33" + "src": "52946:6:34" }, { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "56998:6:33" + "src": "52958:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "57006:4:33", + "src": "52966:4:34", "type": "", "value": "0x20" } @@ -30691,25 +28396,25 @@ "functionName": { "name": "mul", "nodeType": "YulIdentifier", - "src": "56994:3:33" + "src": "52954:3:34" }, "nodeType": "YulFunctionCall", - "src": "56994:17:33" + "src": "52954:17:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "56982:3:33" + "src": "52942:3:34" }, "nodeType": "YulFunctionCall", - "src": "56982:30:33" + "src": "52942:30:34" }, "variables": [ { "name": "srcEnd", "nodeType": "YulTypedName", - "src": "56972:6:33", + "src": "52932:6:34", "type": "" } ] @@ -30717,7 +28422,7 @@ { "body": { "nodeType": "YulBlock", - "src": "57040:103:33", + "src": "53000:103:34", "statements": [ { "expression": { @@ -30725,13 +28430,13 @@ "functionName": { "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", "nodeType": "YulIdentifier", - "src": "57054:77:33" + "src": "53014:77:34" }, "nodeType": "YulFunctionCall", - "src": "57054:79:33" + "src": "53014:79:34" }, "nodeType": "YulExpressionStatement", - "src": "57054:79:33" + "src": "53014:79:34" } ] }, @@ -30740,43 +28445,43 @@ { "name": "srcEnd", "nodeType": "YulIdentifier", - "src": "57027:6:33" + "src": "52987:6:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "57035:3:33" + "src": "52995:3:34" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "57024:2:33" + "src": "52984:2:34" }, "nodeType": "YulFunctionCall", - "src": "57024:15:33" + "src": "52984:15:34" }, "nodeType": "YulIf", - "src": "57021:122:33" + "src": "52981:122:34" }, { "body": { "nodeType": "YulBlock", - "src": "57228:155:33", + "src": "53188:155:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "57243:21:33", + "src": "53203:21:34", "value": { "name": "src", "nodeType": "YulIdentifier", - "src": "57261:3:33" + "src": "53221:3:34" }, "variables": [ { "name": "elementPos", "nodeType": "YulTypedName", - "src": "57247:10:33", + "src": "53207:10:34", "type": "" } ] @@ -30787,55 +28492,55 @@ { "name": "dst", "nodeType": "YulIdentifier", - "src": "57285:3:33" + "src": "53245:3:34" }, { "arguments": [ { "name": "elementPos", "nodeType": "YulIdentifier", - "src": "57322:10:33" + "src": "53282:10:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "57334:3:33" + "src": "53294:3:34" } ], "functionName": { "name": "abi_decode_t_bytes32_fromMemory", "nodeType": "YulIdentifier", - "src": "57290:31:33" + "src": "53250:31:34" }, "nodeType": "YulFunctionCall", - "src": "57290:48:33" + "src": "53250:48:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "57278:6:33" + "src": "53238:6:34" }, "nodeType": "YulFunctionCall", - "src": "57278:61:33" + "src": "53238:61:34" }, "nodeType": "YulExpressionStatement", - "src": "57278:61:33" + "src": "53238:61:34" }, { "nodeType": "YulAssignment", - "src": "57352:21:33", + "src": "53312:21:34", "value": { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", - "src": "57363:3:33" + "src": "53323:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "57368:4:33", + "src": "53328:4:34", "type": "", "value": "0x20" } @@ -30843,16 +28548,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "57359:3:33" + "src": "53319:3:34" }, "nodeType": "YulFunctionCall", - "src": "57359:14:33" + "src": "53319:14:34" }, "variableNames": [ { "name": "dst", "nodeType": "YulIdentifier", - "src": "57352:3:33" + "src": "53312:3:34" } ] } @@ -30863,41 +28568,41 @@ { "name": "src", "nodeType": "YulIdentifier", - "src": "57181:3:33" + "src": "53141:3:34" }, { "name": "srcEnd", "nodeType": "YulIdentifier", - "src": "57186:6:33" + "src": "53146:6:34" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", - "src": "57178:2:33" + "src": "53138:2:34" }, "nodeType": "YulFunctionCall", - "src": "57178:15:33" + "src": "53138:15:34" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", - "src": "57194:25:33", + "src": "53154:25:34", "statements": [ { "nodeType": "YulAssignment", - "src": "57196:21:33", + "src": "53156:21:34", "value": { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", - "src": "57207:3:33" + "src": "53167:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "57212:4:33", + "src": "53172:4:34", "type": "", "value": "0x20" } @@ -30905,16 +28610,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "57203:3:33" + "src": "53163:3:34" }, "nodeType": "YulFunctionCall", - "src": "57203:14:33" + "src": "53163:14:34" }, "variableNames": [ { "name": "src", "nodeType": "YulIdentifier", - "src": "57196:3:33" + "src": "53156:3:34" } ] } @@ -30922,28 +28627,28 @@ }, "pre": { "nodeType": "YulBlock", - "src": "57156:21:33", + "src": "53116:21:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "57158:17:33", + "src": "53118:17:34", "value": { "name": "offset", "nodeType": "YulIdentifier", - "src": "57169:6:33" + "src": "53129:6:34" }, "variables": [ { "name": "src", "nodeType": "YulTypedName", - "src": "57162:3:33", + "src": "53122:3:34", "type": "" } ] } ] }, - "src": "57152:231:33" + "src": "53112:231:34" } ] }, @@ -30953,19 +28658,19 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "56740:6:33", + "src": "52700:6:34", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "56748:6:33", + "src": "52708:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "56756:3:33", + "src": "52716:3:34", "type": "" } ], @@ -30973,21 +28678,21 @@ { "name": "array", "nodeType": "YulTypedName", - "src": "56764:5:33", + "src": "52724:5:34", "type": "" } ], - "src": "56657:732:33" + "src": "52617:732:34" }, { "body": { "nodeType": "YulBlock", - "src": "57500:297:33", + "src": "53460:297:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "57549:83:33", + "src": "53509:83:34", "statements": [ { "expression": { @@ -30995,13 +28700,13 @@ "functionName": { "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", "nodeType": "YulIdentifier", - "src": "57551:77:33" + "src": "53511:77:34" }, "nodeType": "YulFunctionCall", - "src": "57551:79:33" + "src": "53511:79:34" }, "nodeType": "YulExpressionStatement", - "src": "57551:79:33" + "src": "53511:79:34" } ] }, @@ -31014,12 +28719,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "57528:6:33" + "src": "53488:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "57536:4:33", + "src": "53496:4:34", "type": "", "value": "0x1f" } @@ -31027,68 +28732,68 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "57524:3:33" + "src": "53484:3:34" }, "nodeType": "YulFunctionCall", - "src": "57524:17:33" + "src": "53484:17:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "57543:3:33" + "src": "53503:3:34" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "57520:3:33" + "src": "53480:3:34" }, "nodeType": "YulFunctionCall", - "src": "57520:27:33" + "src": "53480:27:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "57513:6:33" + "src": "53473:6:34" }, "nodeType": "YulFunctionCall", - "src": "57513:35:33" + "src": "53473:35:34" }, "nodeType": "YulIf", - "src": "57510:122:33" + "src": "53470:122:34" }, { "nodeType": "YulVariableDeclaration", - "src": "57641:27:33", + "src": "53601:27:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "57661:6:33" + "src": "53621:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "57655:5:33" + "src": "53615:5:34" }, "nodeType": "YulFunctionCall", - "src": "57655:13:33" + "src": "53615:13:34" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", - "src": "57645:6:33", + "src": "53605:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "57677:114:33", + "src": "53637:114:34", "value": { "arguments": [ { @@ -31096,12 +28801,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "57764:6:33" + "src": "53724:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "57772:4:33", + "src": "53732:4:34", "type": "", "value": "0x20" } @@ -31109,35 +28814,35 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "57760:3:33" + "src": "53720:3:34" }, "nodeType": "YulFunctionCall", - "src": "57760:17:33" + "src": "53720:17:34" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "57779:6:33" + "src": "53739:6:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "57787:3:33" + "src": "53747:3:34" } ], "functionName": { "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", "nodeType": "YulIdentifier", - "src": "57686:73:33" + "src": "53646:73:34" }, "nodeType": "YulFunctionCall", - "src": "57686:105:33" + "src": "53646:105:34" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", - "src": "57677:5:33" + "src": "53637:5:34" } ] } @@ -31149,13 +28854,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "57478:6:33", + "src": "53438:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "57486:3:33", + "src": "53446:3:34", "type": "" } ], @@ -31163,21 +28868,21 @@ { "name": "array", "nodeType": "YulTypedName", - "src": "57494:5:33", + "src": "53454:5:34", "type": "" } ], - "src": "57412:385:33" + "src": "53372:385:34" }, { "body": { "nodeType": "YulBlock", - "src": "57905:452:33", + "src": "53865:452:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "57951:83:33", + "src": "53911:83:34", "statements": [ { "expression": { @@ -31185,13 +28890,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "57953:77:33" + "src": "53913:77:34" }, "nodeType": "YulFunctionCall", - "src": "57953:79:33" + "src": "53913:79:34" }, "nodeType": "YulExpressionStatement", - "src": "57953:79:33" + "src": "53913:79:34" } ] }, @@ -31202,26 +28907,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "57926:7:33" + "src": "53886:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "57935:9:33" + "src": "53895:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "57922:3:33" + "src": "53882:3:34" }, "nodeType": "YulFunctionCall", - "src": "57922:23:33" + "src": "53882:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "57947:2:33", + "src": "53907:2:34", "type": "", "value": "32" } @@ -31229,21 +28934,21 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "57918:3:33" + "src": "53878:3:34" }, "nodeType": "YulFunctionCall", - "src": "57918:32:33" + "src": "53878:32:34" }, "nodeType": "YulIf", - "src": "57915:119:33" + "src": "53875:119:34" }, { "nodeType": "YulBlock", - "src": "58044:306:33", + "src": "54004:306:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "58059:38:33", + "src": "54019:38:34", "value": { "arguments": [ { @@ -31251,12 +28956,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "58083:9:33" + "src": "54043:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "58094:1:33", + "src": "54054:1:34", "type": "", "value": "0" } @@ -31264,25 +28969,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "58079:3:33" + "src": "54039:3:34" }, "nodeType": "YulFunctionCall", - "src": "58079:17:33" + "src": "54039:17:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "58073:5:33" + "src": "54033:5:34" }, "nodeType": "YulFunctionCall", - "src": "58073:24:33" + "src": "54033:24:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "58063:6:33", + "src": "54023:6:34", "type": "" } ] @@ -31290,7 +28995,7 @@ { "body": { "nodeType": "YulBlock", - "src": "58144:83:33", + "src": "54104:83:34", "statements": [ { "expression": { @@ -31298,13 +29003,13 @@ "functionName": { "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulIdentifier", - "src": "58146:77:33" + "src": "54106:77:34" }, "nodeType": "YulFunctionCall", - "src": "58146:79:33" + "src": "54106:79:34" }, "nodeType": "YulExpressionStatement", - "src": "58146:79:33" + "src": "54106:79:34" } ] }, @@ -31313,12 +29018,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "58116:6:33" + "src": "54076:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "58124:18:33", + "src": "54084:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -31326,17 +29031,17 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "58113:2:33" + "src": "54073:2:34" }, "nodeType": "YulFunctionCall", - "src": "58113:30:33" + "src": "54073:30:34" }, "nodeType": "YulIf", - "src": "58110:117:33" + "src": "54070:117:34" }, { "nodeType": "YulAssignment", - "src": "58241:99:33", + "src": "54201:99:34", "value": { "arguments": [ { @@ -31344,41 +29049,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "58312:9:33" + "src": "54272:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "58323:6:33" + "src": "54283:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "58308:3:33" + "src": "54268:3:34" }, "nodeType": "YulFunctionCall", - "src": "58308:22:33" + "src": "54268:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "58332:7:33" + "src": "54292:7:34" } ], "functionName": { "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", "nodeType": "YulIdentifier", - "src": "58251:56:33" + "src": "54211:56:34" }, "nodeType": "YulFunctionCall", - "src": "58251:89:33" + "src": "54211:89:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "58241:6:33" + "src": "54201:6:34" } ] } @@ -31392,13 +29097,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "57875:9:33", + "src": "53835:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "57886:7:33", + "src": "53846:7:34", "type": "" } ], @@ -31406,48 +29111,48 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "57898:6:33", + "src": "53858:6:34", "type": "" } ], - "src": "57803:554:33" + "src": "53763:554:34" }, { "body": { "nodeType": "YulBlock", - "src": "58406:190:33", + "src": "54366:190:34", "statements": [ { "nodeType": "YulAssignment", - "src": "58416:33:33", + "src": "54376:33:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "58443:5:33" + "src": "54403:5:34" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "58425:17:33" + "src": "54385:17:34" }, "nodeType": "YulFunctionCall", - "src": "58425:24:33" + "src": "54385:24:34" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "58416:5:33" + "src": "54376:5:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "58539:22:33", + "src": "54499:22:34", "statements": [ { "expression": { @@ -31455,13 +29160,13 @@ "functionName": { "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "58541:16:33" + "src": "54501:16:34" }, "nodeType": "YulFunctionCall", - "src": "58541:18:33" + "src": "54501:18:34" }, "nodeType": "YulExpressionStatement", - "src": "58541:18:33" + "src": "54501:18:34" } ] }, @@ -31470,12 +29175,12 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "58464:5:33" + "src": "54424:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "58471:66:33", + "src": "54431:66:34", "type": "", "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" } @@ -31483,28 +29188,28 @@ "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "58461:2:33" + "src": "54421:2:34" }, "nodeType": "YulFunctionCall", - "src": "58461:77:33" + "src": "54421:77:34" }, "nodeType": "YulIf", - "src": "58458:103:33" + "src": "54418:103:34" }, { "nodeType": "YulAssignment", - "src": "58570:20:33", + "src": "54530:20:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "58581:5:33" + "src": "54541:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "58588:1:33", + "src": "54548:1:34", "type": "", "value": "1" } @@ -31512,16 +29217,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "58577:3:33" + "src": "54537:3:34" }, "nodeType": "YulFunctionCall", - "src": "58577:13:33" + "src": "54537:13:34" }, "variableNames": [ { "name": "ret", "nodeType": "YulIdentifier", - "src": "58570:3:33" + "src": "54530:3:34" } ] } @@ -31533,7 +29238,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "58392:5:33", + "src": "54352:5:34", "type": "" } ], @@ -31541,31 +29246,31 @@ { "name": "ret", "nodeType": "YulTypedName", - "src": "58402:3:33", + "src": "54362:3:34", "type": "" } ], - "src": "58363:233:33" + "src": "54323:233:34" }, { "body": { "nodeType": "YulBlock", - "src": "58784:371:33", + "src": "54744:371:34", "statements": [ { "nodeType": "YulAssignment", - "src": "58794:27:33", + "src": "54754:27:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "58806:9:33" + "src": "54766:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "58817:3:33", + "src": "54777:3:34", "type": "", "value": "128" } @@ -31573,16 +29278,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "58802:3:33" + "src": "54762:3:34" }, "nodeType": "YulFunctionCall", - "src": "58802:19:33" + "src": "54762:19:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "58794:4:33" + "src": "54754:4:34" } ] }, @@ -31592,19 +29297,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "58875:6:33" + "src": "54835:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "58888:9:33" + "src": "54848:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "58899:1:33", + "src": "54859:1:34", "type": "", "value": "0" } @@ -31612,22 +29317,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "58884:3:33" + "src": "54844:3:34" }, "nodeType": "YulFunctionCall", - "src": "58884:17:33" + "src": "54844:17:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "58831:43:33" + "src": "54791:43:34" }, "nodeType": "YulFunctionCall", - "src": "58831:71:33" + "src": "54791:71:34" }, "nodeType": "YulExpressionStatement", - "src": "58831:71:33" + "src": "54791:71:34" }, { "expression": { @@ -31635,19 +29340,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "58956:6:33" + "src": "54916:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "58969:9:33" + "src": "54929:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "58980:2:33", + "src": "54940:2:34", "type": "", "value": "32" } @@ -31655,22 +29360,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "58965:3:33" + "src": "54925:3:34" }, "nodeType": "YulFunctionCall", - "src": "58965:18:33" + "src": "54925:18:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "58912:43:33" + "src": "54872:43:34" }, "nodeType": "YulFunctionCall", - "src": "58912:72:33" + "src": "54872:72:34" }, "nodeType": "YulExpressionStatement", - "src": "58912:72:33" + "src": "54872:72:34" }, { "expression": { @@ -31678,19 +29383,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "59038:6:33" + "src": "54998:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "59051:9:33" + "src": "55011:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "59062:2:33", + "src": "55022:2:34", "type": "", "value": "64" } @@ -31698,22 +29403,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "59047:3:33" + "src": "55007:3:34" }, "nodeType": "YulFunctionCall", - "src": "59047:18:33" + "src": "55007:18:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "58994:43:33" + "src": "54954:43:34" }, "nodeType": "YulFunctionCall", - "src": "58994:72:33" + "src": "54954:72:34" }, "nodeType": "YulExpressionStatement", - "src": "58994:72:33" + "src": "54954:72:34" }, { "expression": { @@ -31721,19 +29426,19 @@ { "name": "value3", "nodeType": "YulIdentifier", - "src": "59120:6:33" + "src": "55080:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "59133:9:33" + "src": "55093:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "59144:2:33", + "src": "55104:2:34", "type": "", "value": "96" } @@ -31741,22 +29446,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "59129:3:33" + "src": "55089:3:34" }, "nodeType": "YulFunctionCall", - "src": "59129:18:33" + "src": "55089:18:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "59076:43:33" + "src": "55036:43:34" }, "nodeType": "YulFunctionCall", - "src": "59076:72:33" + "src": "55036:72:34" }, "nodeType": "YulExpressionStatement", - "src": "59076:72:33" + "src": "55036:72:34" } ] }, @@ -31766,31 +29471,31 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "58732:9:33", + "src": "54692:9:34", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", - "src": "58744:6:33", + "src": "54704:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "58752:6:33", + "src": "54712:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "58760:6:33", + "src": "54720:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "58768:6:33", + "src": "54728:6:34", "type": "" } ], @@ -31798,16 +29503,16 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "58779:4:33", + "src": "54739:4:34", "type": "" } ], - "src": "58602:553:33" + "src": "54562:553:34" }, { "body": { "nodeType": "YulBlock", - "src": "59250:28:33", + "src": "55210:28:34", "statements": [ { "expression": { @@ -31815,14 +29520,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "59267:1:33", + "src": "55227:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "59270:1:33", + "src": "55230:1:34", "type": "", "value": "0" } @@ -31830,24 +29535,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "59260:6:33" + "src": "55220:6:34" }, "nodeType": "YulFunctionCall", - "src": "59260:12:33" + "src": "55220:12:34" }, "nodeType": "YulExpressionStatement", - "src": "59260:12:33" + "src": "55220:12:34" } ] }, "name": "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad", "nodeType": "YulFunctionDefinition", - "src": "59161:117:33" + "src": "55121:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "59373:28:33", + "src": "55333:28:34", "statements": [ { "expression": { @@ -31855,14 +29560,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "59390:1:33", + "src": "55350:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "59393:1:33", + "src": "55353:1:34", "type": "", "value": "0" } @@ -31870,24 +29575,24 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "59383:6:33" + "src": "55343:6:34" }, "nodeType": "YulFunctionCall", - "src": "59383:12:33" + "src": "55343:12:34" }, "nodeType": "YulExpressionStatement", - "src": "59383:12:33" + "src": "55343:12:34" } ] }, "name": "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a", "nodeType": "YulFunctionDefinition", - "src": "59284:117:33" + "src": "55244:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "59496:28:33", + "src": "55456:28:34", "statements": [ { "expression": { @@ -31895,14 +29600,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "59513:1:33", + "src": "55473:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "59516:1:33", + "src": "55476:1:34", "type": "", "value": "0" } @@ -31910,49 +29615,49 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "59506:6:33" + "src": "55466:6:34" }, "nodeType": "YulFunctionCall", - "src": "59506:12:33" + "src": "55466:12:34" }, "nodeType": "YulExpressionStatement", - "src": "59506:12:33" + "src": "55466:12:34" } ] }, "name": "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e", "nodeType": "YulFunctionDefinition", - "src": "59407:117:33" + "src": "55367:117:34" }, { "body": { "nodeType": "YulBlock", - "src": "59636:634:33", + "src": "55596:634:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "59646:51:33", + "src": "55606:51:34", "value": { "arguments": [ { "name": "ptr_to_tail", "nodeType": "YulIdentifier", - "src": "59685:11:33" + "src": "55645:11:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "59672:12:33" + "src": "55632:12:34" }, "nodeType": "YulFunctionCall", - "src": "59672:25:33" + "src": "55632:25:34" }, "variables": [ { "name": "rel_offset_of_tail", "nodeType": "YulTypedName", - "src": "59650:18:33", + "src": "55610:18:34", "type": "" } ] @@ -31960,7 +29665,7 @@ { "body": { "nodeType": "YulBlock", - "src": "59791:83:33", + "src": "55751:83:34", "statements": [ { "expression": { @@ -31968,13 +29673,13 @@ "functionName": { "name": "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad", "nodeType": "YulIdentifier", - "src": "59793:77:33" + "src": "55753:77:34" }, "nodeType": "YulFunctionCall", - "src": "59793:79:33" + "src": "55753:79:34" }, "nodeType": "YulExpressionStatement", - "src": "59793:79:33" + "src": "55753:79:34" } ] }, @@ -31985,7 +29690,7 @@ { "name": "rel_offset_of_tail", "nodeType": "YulIdentifier", - "src": "59720:18:33" + "src": "55680:18:34" }, { "arguments": [ @@ -31996,38 +29701,38 @@ "functionName": { "name": "calldatasize", "nodeType": "YulIdentifier", - "src": "59748:12:33" + "src": "55708:12:34" }, "nodeType": "YulFunctionCall", - "src": "59748:14:33" + "src": "55708:14:34" }, { "name": "base_ref", "nodeType": "YulIdentifier", - "src": "59764:8:33" + "src": "55724:8:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "59744:3:33" + "src": "55704:3:34" }, "nodeType": "YulFunctionCall", - "src": "59744:29:33" + "src": "55704:29:34" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "59779:4:33", + "src": "55739:4:34", "type": "", "value": "0x20" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "59785:1:33", + "src": "55745:1:34", "type": "", "value": "1" } @@ -32035,104 +29740,104 @@ "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "59775:3:33" + "src": "55735:3:34" }, "nodeType": "YulFunctionCall", - "src": "59775:12:33" + "src": "55735:12:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "59740:3:33" + "src": "55700:3:34" }, "nodeType": "YulFunctionCall", - "src": "59740:48:33" + "src": "55700:48:34" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "59716:3:33" + "src": "55676:3:34" }, "nodeType": "YulFunctionCall", - "src": "59716:73:33" + "src": "55676:73:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "59709:6:33" + "src": "55669:6:34" }, "nodeType": "YulFunctionCall", - "src": "59709:81:33" + "src": "55669:81:34" }, "nodeType": "YulIf", - "src": "59706:168:33" + "src": "55666:168:34" }, { "nodeType": "YulAssignment", - "src": "59883:41:33", + "src": "55843:41:34", "value": { "arguments": [ { "name": "base_ref", "nodeType": "YulIdentifier", - "src": "59895:8:33" + "src": "55855:8:34" }, { "name": "rel_offset_of_tail", "nodeType": "YulIdentifier", - "src": "59905:18:33" + "src": "55865:18:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "59891:3:33" + "src": "55851:3:34" }, "nodeType": "YulFunctionCall", - "src": "59891:33:33" + "src": "55851:33:34" }, "variableNames": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "59883:4:33" + "src": "55843:4:34" } ] }, { "nodeType": "YulAssignment", - "src": "59934:28:33", + "src": "55894:28:34", "value": { "arguments": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "59957:4:33" + "src": "55917:4:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "59944:12:33" + "src": "55904:12:34" }, "nodeType": "YulFunctionCall", - "src": "59944:18:33" + "src": "55904:18:34" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "59934:6:33" + "src": "55894:6:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "60005:83:33", + "src": "55965:83:34", "statements": [ { "expression": { @@ -32140,13 +29845,13 @@ "functionName": { "name": "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a", "nodeType": "YulIdentifier", - "src": "60007:77:33" + "src": "55967:77:34" }, "nodeType": "YulFunctionCall", - "src": "60007:79:33" + "src": "55967:79:34" }, "nodeType": "YulExpressionStatement", - "src": "60007:79:33" + "src": "55967:79:34" } ] }, @@ -32155,12 +29860,12 @@ { "name": "length", "nodeType": "YulIdentifier", - "src": "59977:6:33" + "src": "55937:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "59985:18:33", + "src": "55945:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -32168,28 +29873,28 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "59974:2:33" + "src": "55934:2:34" }, "nodeType": "YulFunctionCall", - "src": "59974:30:33" + "src": "55934:30:34" }, "nodeType": "YulIf", - "src": "59971:117:33" + "src": "55931:117:34" }, { "nodeType": "YulAssignment", - "src": "60097:21:33", + "src": "56057:21:34", "value": { "arguments": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60109:4:33" + "src": "56069:4:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "60115:2:33", + "src": "56075:2:34", "type": "", "value": "32" } @@ -32197,23 +29902,23 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "60105:3:33" + "src": "56065:3:34" }, "nodeType": "YulFunctionCall", - "src": "60105:13:33" + "src": "56065:13:34" }, "variableNames": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60097:4:33" + "src": "56057:4:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "60180:83:33", + "src": "56140:83:34", "statements": [ { "expression": { @@ -32221,13 +29926,13 @@ "functionName": { "name": "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e", "nodeType": "YulIdentifier", - "src": "60182:77:33" + "src": "56142:77:34" }, "nodeType": "YulFunctionCall", - "src": "60182:79:33" + "src": "56142:79:34" }, "nodeType": "YulExpressionStatement", - "src": "60182:79:33" + "src": "56142:79:34" } ] }, @@ -32236,7 +29941,7 @@ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60134:4:33" + "src": "56094:4:34" }, { "arguments": [ @@ -32245,22 +29950,22 @@ "functionName": { "name": "calldatasize", "nodeType": "YulIdentifier", - "src": "60144:12:33" + "src": "56104:12:34" }, "nodeType": "YulFunctionCall", - "src": "60144:14:33" + "src": "56104:14:34" }, { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "60164:6:33" + "src": "56124:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "60172:4:33", + "src": "56132:4:34", "type": "", "value": "0x20" } @@ -32268,31 +29973,31 @@ "functionName": { "name": "mul", "nodeType": "YulIdentifier", - "src": "60160:3:33" + "src": "56120:3:34" }, "nodeType": "YulFunctionCall", - "src": "60160:17:33" + "src": "56120:17:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "60140:3:33" + "src": "56100:3:34" }, "nodeType": "YulFunctionCall", - "src": "60140:38:33" + "src": "56100:38:34" } ], "functionName": { "name": "sgt", "nodeType": "YulIdentifier", - "src": "60130:3:33" + "src": "56090:3:34" }, "nodeType": "YulFunctionCall", - "src": "60130:49:33" + "src": "56090:49:34" }, "nodeType": "YulIf", - "src": "60127:136:33" + "src": "56087:136:34" } ] }, @@ -32302,13 +30007,13 @@ { "name": "base_ref", "nodeType": "YulTypedName", - "src": "59597:8:33", + "src": "55557:8:34", "type": "" }, { "name": "ptr_to_tail", "nodeType": "YulTypedName", - "src": "59607:11:33", + "src": "55567:11:34", "type": "" } ], @@ -32316,47 +30021,47 @@ { "name": "addr", "nodeType": "YulTypedName", - "src": "59623:4:33", + "src": "55583:4:34", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "59629:6:33", + "src": "55589:6:34", "type": "" } ], - "src": "59530:740:33" + "src": "55490:740:34" }, { "body": { "nodeType": "YulBlock", - "src": "60381:634:33", + "src": "56341:634:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "60391:51:33", + "src": "56351:51:34", "value": { "arguments": [ { "name": "ptr_to_tail", "nodeType": "YulIdentifier", - "src": "60430:11:33" + "src": "56390:11:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "60417:12:33" + "src": "56377:12:34" }, "nodeType": "YulFunctionCall", - "src": "60417:25:33" + "src": "56377:25:34" }, "variables": [ { "name": "rel_offset_of_tail", "nodeType": "YulTypedName", - "src": "60395:18:33", + "src": "56355:18:34", "type": "" } ] @@ -32364,7 +30069,7 @@ { "body": { "nodeType": "YulBlock", - "src": "60536:83:33", + "src": "56496:83:34", "statements": [ { "expression": { @@ -32372,13 +30077,13 @@ "functionName": { "name": "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad", "nodeType": "YulIdentifier", - "src": "60538:77:33" + "src": "56498:77:34" }, "nodeType": "YulFunctionCall", - "src": "60538:79:33" + "src": "56498:79:34" }, "nodeType": "YulExpressionStatement", - "src": "60538:79:33" + "src": "56498:79:34" } ] }, @@ -32389,7 +30094,7 @@ { "name": "rel_offset_of_tail", "nodeType": "YulIdentifier", - "src": "60465:18:33" + "src": "56425:18:34" }, { "arguments": [ @@ -32400,38 +30105,38 @@ "functionName": { "name": "calldatasize", "nodeType": "YulIdentifier", - "src": "60493:12:33" + "src": "56453:12:34" }, "nodeType": "YulFunctionCall", - "src": "60493:14:33" + "src": "56453:14:34" }, { "name": "base_ref", "nodeType": "YulIdentifier", - "src": "60509:8:33" + "src": "56469:8:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "60489:3:33" + "src": "56449:3:34" }, "nodeType": "YulFunctionCall", - "src": "60489:29:33" + "src": "56449:29:34" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "60524:4:33", + "src": "56484:4:34", "type": "", "value": "0x20" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "60530:1:33", + "src": "56490:1:34", "type": "", "value": "1" } @@ -32439,104 +30144,104 @@ "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "60520:3:33" + "src": "56480:3:34" }, "nodeType": "YulFunctionCall", - "src": "60520:12:33" + "src": "56480:12:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "60485:3:33" + "src": "56445:3:34" }, "nodeType": "YulFunctionCall", - "src": "60485:48:33" + "src": "56445:48:34" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "60461:3:33" + "src": "56421:3:34" }, "nodeType": "YulFunctionCall", - "src": "60461:73:33" + "src": "56421:73:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "60454:6:33" + "src": "56414:6:34" }, "nodeType": "YulFunctionCall", - "src": "60454:81:33" + "src": "56414:81:34" }, "nodeType": "YulIf", - "src": "60451:168:33" + "src": "56411:168:34" }, { "nodeType": "YulAssignment", - "src": "60628:41:33", + "src": "56588:41:34", "value": { "arguments": [ { "name": "base_ref", "nodeType": "YulIdentifier", - "src": "60640:8:33" + "src": "56600:8:34" }, { "name": "rel_offset_of_tail", "nodeType": "YulIdentifier", - "src": "60650:18:33" + "src": "56610:18:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "60636:3:33" + "src": "56596:3:34" }, "nodeType": "YulFunctionCall", - "src": "60636:33:33" + "src": "56596:33:34" }, "variableNames": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60628:4:33" + "src": "56588:4:34" } ] }, { "nodeType": "YulAssignment", - "src": "60679:28:33", + "src": "56639:28:34", "value": { "arguments": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60702:4:33" + "src": "56662:4:34" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", - "src": "60689:12:33" + "src": "56649:12:34" }, "nodeType": "YulFunctionCall", - "src": "60689:18:33" + "src": "56649:18:34" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "60679:6:33" + "src": "56639:6:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "60750:83:33", + "src": "56710:83:34", "statements": [ { "expression": { @@ -32544,13 +30249,13 @@ "functionName": { "name": "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a", "nodeType": "YulIdentifier", - "src": "60752:77:33" + "src": "56712:77:34" }, "nodeType": "YulFunctionCall", - "src": "60752:79:33" + "src": "56712:79:34" }, "nodeType": "YulExpressionStatement", - "src": "60752:79:33" + "src": "56712:79:34" } ] }, @@ -32559,12 +30264,12 @@ { "name": "length", "nodeType": "YulIdentifier", - "src": "60722:6:33" + "src": "56682:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "60730:18:33", + "src": "56690:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -32572,28 +30277,28 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "60719:2:33" + "src": "56679:2:34" }, "nodeType": "YulFunctionCall", - "src": "60719:30:33" + "src": "56679:30:34" }, "nodeType": "YulIf", - "src": "60716:117:33" + "src": "56676:117:34" }, { "nodeType": "YulAssignment", - "src": "60842:21:33", + "src": "56802:21:34", "value": { "arguments": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60854:4:33" + "src": "56814:4:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "60860:2:33", + "src": "56820:2:34", "type": "", "value": "32" } @@ -32601,23 +30306,23 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "60850:3:33" + "src": "56810:3:34" }, "nodeType": "YulFunctionCall", - "src": "60850:13:33" + "src": "56810:13:34" }, "variableNames": [ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60842:4:33" + "src": "56802:4:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "60925:83:33", + "src": "56885:83:34", "statements": [ { "expression": { @@ -32625,13 +30330,13 @@ "functionName": { "name": "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e", "nodeType": "YulIdentifier", - "src": "60927:77:33" + "src": "56887:77:34" }, "nodeType": "YulFunctionCall", - "src": "60927:79:33" + "src": "56887:79:34" }, "nodeType": "YulExpressionStatement", - "src": "60927:79:33" + "src": "56887:79:34" } ] }, @@ -32640,7 +30345,7 @@ { "name": "addr", "nodeType": "YulIdentifier", - "src": "60879:4:33" + "src": "56839:4:34" }, { "arguments": [ @@ -32649,22 +30354,22 @@ "functionName": { "name": "calldatasize", "nodeType": "YulIdentifier", - "src": "60889:12:33" + "src": "56849:12:34" }, "nodeType": "YulFunctionCall", - "src": "60889:14:33" + "src": "56849:14:34" }, { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "60909:6:33" + "src": "56869:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "60917:4:33", + "src": "56877:4:34", "type": "", "value": "0x20" } @@ -32672,31 +30377,31 @@ "functionName": { "name": "mul", "nodeType": "YulIdentifier", - "src": "60905:3:33" + "src": "56865:3:34" }, "nodeType": "YulFunctionCall", - "src": "60905:17:33" + "src": "56865:17:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "60885:3:33" + "src": "56845:3:34" }, "nodeType": "YulFunctionCall", - "src": "60885:38:33" + "src": "56845:38:34" } ], "functionName": { "name": "sgt", "nodeType": "YulIdentifier", - "src": "60875:3:33" + "src": "56835:3:34" }, "nodeType": "YulFunctionCall", - "src": "60875:49:33" + "src": "56835:49:34" }, "nodeType": "YulIf", - "src": "60872:136:33" + "src": "56832:136:34" } ] }, @@ -32706,13 +30411,13 @@ { "name": "base_ref", "nodeType": "YulTypedName", - "src": "60342:8:33", + "src": "56302:8:34", "type": "" }, { "name": "ptr_to_tail", "nodeType": "YulTypedName", - "src": "60352:11:33", + "src": "56312:11:34", "type": "" } ], @@ -32720,37 +30425,37 @@ { "name": "addr", "nodeType": "YulTypedName", - "src": "60368:4:33", + "src": "56328:4:34", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "60374:6:33", + "src": "56334:6:34", "type": "" } ], - "src": "60276:739:33" + "src": "56236:739:34" }, { "body": { "nodeType": "YulBlock", - "src": "61175:288:33", + "src": "57135:288:34", "statements": [ { "nodeType": "YulAssignment", - "src": "61185:26:33", + "src": "57145:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "61197:9:33" + "src": "57157:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "61208:2:33", + "src": "57168:2:34", "type": "", "value": "96" } @@ -32758,16 +30463,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "61193:3:33" + "src": "57153:3:34" }, "nodeType": "YulFunctionCall", - "src": "61193:18:33" + "src": "57153:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "61185:4:33" + "src": "57145:4:34" } ] }, @@ -32777,19 +30482,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "61265:6:33" + "src": "57225:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "61278:9:33" + "src": "57238:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "61289:1:33", + "src": "57249:1:34", "type": "", "value": "0" } @@ -32797,22 +30502,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "61274:3:33" + "src": "57234:3:34" }, "nodeType": "YulFunctionCall", - "src": "61274:17:33" + "src": "57234:17:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "61221:43:33" + "src": "57181:43:34" }, "nodeType": "YulFunctionCall", - "src": "61221:71:33" + "src": "57181:71:34" }, "nodeType": "YulExpressionStatement", - "src": "61221:71:33" + "src": "57181:71:34" }, { "expression": { @@ -32820,19 +30525,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "61346:6:33" + "src": "57306:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "61359:9:33" + "src": "57319:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "61370:2:33", + "src": "57330:2:34", "type": "", "value": "32" } @@ -32840,22 +30545,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "61355:3:33" + "src": "57315:3:34" }, "nodeType": "YulFunctionCall", - "src": "61355:18:33" + "src": "57315:18:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "61302:43:33" + "src": "57262:43:34" }, "nodeType": "YulFunctionCall", - "src": "61302:72:33" + "src": "57262:72:34" }, "nodeType": "YulExpressionStatement", - "src": "61302:72:33" + "src": "57262:72:34" }, { "expression": { @@ -32863,19 +30568,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "61428:6:33" + "src": "57388:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "61441:9:33" + "src": "57401:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "61452:2:33", + "src": "57412:2:34", "type": "", "value": "64" } @@ -32883,22 +30588,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "61437:3:33" + "src": "57397:3:34" }, "nodeType": "YulFunctionCall", - "src": "61437:18:33" + "src": "57397:18:34" } ], "functionName": { "name": "abi_encode_t_uint256_to_t_uint256_fromStack", "nodeType": "YulIdentifier", - "src": "61384:43:33" + "src": "57344:43:34" }, "nodeType": "YulFunctionCall", - "src": "61384:72:33" + "src": "57344:72:34" }, "nodeType": "YulExpressionStatement", - "src": "61384:72:33" + "src": "57344:72:34" } ] }, @@ -32908,25 +30613,25 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "61131:9:33", + "src": "57091:9:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "61143:6:33", + "src": "57103:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "61151:6:33", + "src": "57111:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "61159:6:33", + "src": "57119:6:34", "type": "" } ], @@ -32934,30 +30639,30 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "61170:4:33", + "src": "57130:4:34", "type": "" } ], - "src": "61021:442:33" + "src": "56981:442:34" }, { "body": { "nodeType": "YulBlock", - "src": "61513:32:33", + "src": "57473:32:34", "statements": [ { "nodeType": "YulAssignment", - "src": "61523:16:33", + "src": "57483:16:34", "value": { "name": "value", "nodeType": "YulIdentifier", - "src": "61534:5:33" + "src": "57494:5:34" }, "variableNames": [ { "name": "cleaned", "nodeType": "YulIdentifier", - "src": "61523:7:33" + "src": "57483:7:34" } ] } @@ -32969,7 +30674,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "61495:5:33", + "src": "57455:5:34", "type": "" } ], @@ -32977,16 +30682,16 @@ { "name": "cleaned", "nodeType": "YulTypedName", - "src": "61505:7:33", + "src": "57465:7:34", "type": "" } ], - "src": "61469:76:33" + "src": "57429:76:34" }, { "body": { "nodeType": "YulBlock", - "src": "61614:52:33", + "src": "57574:52:34", "statements": [ { "expression": { @@ -32994,35 +30699,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "61631:3:33" + "src": "57591:3:34" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "61653:5:33" + "src": "57613:5:34" } ], "functionName": { "name": "cleanup_t_int256", "nodeType": "YulIdentifier", - "src": "61636:16:33" + "src": "57596:16:34" }, "nodeType": "YulFunctionCall", - "src": "61636:23:33" + "src": "57596:23:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "61624:6:33" + "src": "57584:6:34" }, "nodeType": "YulFunctionCall", - "src": "61624:36:33" + "src": "57584:36:34" }, "nodeType": "YulExpressionStatement", - "src": "61624:36:33" + "src": "57584:36:34" } ] }, @@ -33032,37 +30737,37 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "61602:5:33", + "src": "57562:5:34", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "61609:3:33", + "src": "57569:3:34", "type": "" } ], - "src": "61551:115:33" + "src": "57511:115:34" }, { "body": { "nodeType": "YulBlock", - "src": "61768:122:33", + "src": "57728:122:34", "statements": [ { "nodeType": "YulAssignment", - "src": "61778:26:33", + "src": "57738:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "61790:9:33" + "src": "57750:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "61801:2:33", + "src": "57761:2:34", "type": "", "value": "32" } @@ -33070,16 +30775,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "61786:3:33" + "src": "57746:3:34" }, "nodeType": "YulFunctionCall", - "src": "61786:18:33" + "src": "57746:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "61778:4:33" + "src": "57738:4:34" } ] }, @@ -33089,19 +30794,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "61856:6:33" + "src": "57816:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "61869:9:33" + "src": "57829:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "61880:1:33", + "src": "57840:1:34", "type": "", "value": "0" } @@ -33109,22 +30814,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "61865:3:33" + "src": "57825:3:34" }, "nodeType": "YulFunctionCall", - "src": "61865:17:33" + "src": "57825:17:34" } ], "functionName": { "name": "abi_encode_t_int256_to_t_int256_fromStack", "nodeType": "YulIdentifier", - "src": "61814:41:33" + "src": "57774:41:34" }, "nodeType": "YulFunctionCall", - "src": "61814:69:33" + "src": "57774:69:34" }, "nodeType": "YulExpressionStatement", - "src": "61814:69:33" + "src": "57774:69:34" } ] }, @@ -33134,13 +30839,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "61740:9:33", + "src": "57700:9:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "61752:6:33", + "src": "57712:6:34", "type": "" } ], @@ -33148,21 +30853,21 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "61763:4:33", + "src": "57723:4:34", "type": "" } ], - "src": "61672:218:33" + "src": "57632:218:34" }, { "body": { "nodeType": "YulBlock", - "src": "61962:263:33", + "src": "57922:263:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "62008:83:33", + "src": "57968:83:34", "statements": [ { "expression": { @@ -33170,13 +30875,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "62010:77:33" + "src": "57970:77:34" }, "nodeType": "YulFunctionCall", - "src": "62010:79:33" + "src": "57970:79:34" }, "nodeType": "YulExpressionStatement", - "src": "62010:79:33" + "src": "57970:79:34" } ] }, @@ -33187,26 +30892,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "61983:7:33" + "src": "57943:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "61992:9:33" + "src": "57952:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "61979:3:33" + "src": "57939:3:34" }, "nodeType": "YulFunctionCall", - "src": "61979:23:33" + "src": "57939:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "62004:2:33", + "src": "57964:2:34", "type": "", "value": "32" } @@ -33214,25 +30919,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "61975:3:33" + "src": "57935:3:34" }, "nodeType": "YulFunctionCall", - "src": "61975:32:33" + "src": "57935:32:34" }, "nodeType": "YulIf", - "src": "61972:119:33" + "src": "57932:119:34" }, { "nodeType": "YulBlock", - "src": "62101:117:33", + "src": "58061:117:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "62116:15:33", + "src": "58076:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "62130:1:33", + "src": "58090:1:34", "type": "", "value": "0" }, @@ -33240,14 +30945,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "62120:6:33", + "src": "58080:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "62145:63:33", + "src": "58105:63:34", "value": { "arguments": [ { @@ -33255,41 +30960,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "62180:9:33" + "src": "58140:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "62191:6:33" + "src": "58151:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "62176:3:33" + "src": "58136:3:34" }, "nodeType": "YulFunctionCall", - "src": "62176:22:33" + "src": "58136:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "62200:7:33" + "src": "58160:7:34" } ], "functionName": { "name": "abi_decode_t_address", "nodeType": "YulIdentifier", - "src": "62155:20:33" + "src": "58115:20:34" }, "nodeType": "YulFunctionCall", - "src": "62155:53:33" + "src": "58115:53:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "62145:6:33" + "src": "58105:6:34" } ] } @@ -33303,13 +31008,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "61932:9:33", + "src": "57892:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "61943:7:33", + "src": "57903:7:34", "type": "" } ], @@ -33317,41 +31022,41 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "61955:6:33", + "src": "57915:6:34", "type": "" } ], - "src": "61896:329:33" + "src": "57856:329:34" }, { "body": { "nodeType": "YulBlock", - "src": "62305:40:33", + "src": "58265:40:34", "statements": [ { "nodeType": "YulAssignment", - "src": "62316:22:33", + "src": "58276:22:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "62332:5:33" + "src": "58292:5:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "62326:5:33" + "src": "58286:5:34" }, "nodeType": "YulFunctionCall", - "src": "62326:12:33" + "src": "58286:12:34" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "62316:6:33" + "src": "58276:6:34" } ] } @@ -33363,7 +31068,7 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "62288:5:33", + "src": "58248:5:34", "type": "" } ], @@ -33371,16 +31076,16 @@ { "name": "length", "nodeType": "YulTypedName", - "src": "62298:6:33", + "src": "58258:6:34", "type": "" } ], - "src": "62231:114:33" + "src": "58191:114:34" }, { "body": { "nodeType": "YulBlock", - "src": "62462:73:33", + "src": "58422:73:34", "statements": [ { "expression": { @@ -33388,39 +31093,39 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "62479:3:33" + "src": "58439:3:34" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "62484:6:33" + "src": "58444:6:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "62472:6:33" + "src": "58432:6:34" }, "nodeType": "YulFunctionCall", - "src": "62472:19:33" + "src": "58432:19:34" }, "nodeType": "YulExpressionStatement", - "src": "62472:19:33" + "src": "58432:19:34" }, { "nodeType": "YulAssignment", - "src": "62500:29:33", + "src": "58460:29:34", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "62519:3:33" + "src": "58479:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "62524:4:33", + "src": "58484:4:34", "type": "", "value": "0x20" } @@ -33428,16 +31133,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "62515:3:33" + "src": "58475:3:34" }, "nodeType": "YulFunctionCall", - "src": "62515:14:33" + "src": "58475:14:34" }, "variableNames": [ { "name": "updated_pos", "nodeType": "YulIdentifier", - "src": "62500:11:33" + "src": "58460:11:34" } ] } @@ -33449,13 +31154,13 @@ { "name": "pos", "nodeType": "YulTypedName", - "src": "62434:3:33", + "src": "58394:3:34", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "62439:6:33", + "src": "58399:6:34", "type": "" } ], @@ -33463,47 +31168,47 @@ { "name": "updated_pos", "nodeType": "YulTypedName", - "src": "62450:11:33", + "src": "58410:11:34", "type": "" } ], - "src": "62351:184:33" + "src": "58311:184:34" }, { "body": { "nodeType": "YulBlock", - "src": "62613:60:33", + "src": "58573:60:34", "statements": [ { "nodeType": "YulAssignment", - "src": "62623:11:33", + "src": "58583:11:34", "value": { "name": "ptr", "nodeType": "YulIdentifier", - "src": "62631:3:33" + "src": "58591:3:34" }, "variableNames": [ { "name": "data", "nodeType": "YulIdentifier", - "src": "62623:4:33" + "src": "58583:4:34" } ] }, { "nodeType": "YulAssignment", - "src": "62644:22:33", + "src": "58604:22:34", "value": { "arguments": [ { "name": "ptr", "nodeType": "YulIdentifier", - "src": "62656:3:33" + "src": "58616:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "62661:4:33", + "src": "58621:4:34", "type": "", "value": "0x20" } @@ -33511,16 +31216,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "62652:3:33" + "src": "58612:3:34" }, "nodeType": "YulFunctionCall", - "src": "62652:14:33" + "src": "58612:14:34" }, "variableNames": [ { "name": "data", "nodeType": "YulIdentifier", - "src": "62644:4:33" + "src": "58604:4:34" } ] } @@ -33532,7 +31237,7 @@ { "name": "ptr", "nodeType": "YulTypedName", - "src": "62600:3:33", + "src": "58560:3:34", "type": "" } ], @@ -33540,16 +31245,16 @@ { "name": "data", "nodeType": "YulTypedName", - "src": "62608:4:33", + "src": "58568:4:34", "type": "" } ], - "src": "62541:132:33" + "src": "58501:132:34" }, { "body": { "nodeType": "YulBlock", - "src": "62734:53:33", + "src": "58694:53:34", "statements": [ { "expression": { @@ -33557,35 +31262,35 @@ { "name": "pos", "nodeType": "YulIdentifier", - "src": "62751:3:33" + "src": "58711:3:34" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "62774:5:33" + "src": "58734:5:34" } ], "functionName": { "name": "cleanup_t_bytes32", "nodeType": "YulIdentifier", - "src": "62756:17:33" + "src": "58716:17:34" }, "nodeType": "YulFunctionCall", - "src": "62756:24:33" + "src": "58716:24:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "62744:6:33" + "src": "58704:6:34" }, "nodeType": "YulFunctionCall", - "src": "62744:37:33" + "src": "58704:37:34" }, "nodeType": "YulExpressionStatement", - "src": "62744:37:33" + "src": "58704:37:34" } ] }, @@ -33595,22 +31300,22 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "62722:5:33", + "src": "58682:5:34", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "62729:3:33", + "src": "58689:3:34", "type": "" } ], - "src": "62679:108:33" + "src": "58639:108:34" }, { "body": { "nodeType": "YulBlock", - "src": "62873:99:33", + "src": "58833:99:34", "statements": [ { "expression": { @@ -33618,39 +31323,39 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "62917:6:33" + "src": "58877:6:34" }, { "name": "pos", "nodeType": "YulIdentifier", - "src": "62925:3:33" + "src": "58885:3:34" } ], "functionName": { "name": "abi_encode_t_bytes32_to_t_bytes32", "nodeType": "YulIdentifier", - "src": "62883:33:33" + "src": "58843:33:34" }, "nodeType": "YulFunctionCall", - "src": "62883:46:33" + "src": "58843:46:34" }, "nodeType": "YulExpressionStatement", - "src": "62883:46:33" + "src": "58843:46:34" }, { "nodeType": "YulAssignment", - "src": "62938:28:33", + "src": "58898:28:34", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "62956:3:33" + "src": "58916:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "62961:4:33", + "src": "58921:4:34", "type": "", "value": "0x20" } @@ -33658,16 +31363,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "62952:3:33" + "src": "58912:3:34" }, "nodeType": "YulFunctionCall", - "src": "62952:14:33" + "src": "58912:14:34" }, "variableNames": [ { "name": "updatedPos", "nodeType": "YulIdentifier", - "src": "62938:10:33" + "src": "58898:10:34" } ] } @@ -33679,13 +31384,13 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "62846:6:33", + "src": "58806:6:34", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "62854:3:33", + "src": "58814:3:34", "type": "" } ], @@ -33693,31 +31398,31 @@ { "name": "updatedPos", "nodeType": "YulTypedName", - "src": "62862:10:33", + "src": "58822:10:34", "type": "" } ], - "src": "62793:179:33" + "src": "58753:179:34" }, { "body": { "nodeType": "YulBlock", - "src": "63053:38:33", + "src": "59013:38:34", "statements": [ { "nodeType": "YulAssignment", - "src": "63063:22:33", + "src": "59023:22:34", "value": { "arguments": [ { "name": "ptr", "nodeType": "YulIdentifier", - "src": "63075:3:33" + "src": "59035:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "63080:4:33", + "src": "59040:4:34", "type": "", "value": "0x20" } @@ -33725,16 +31430,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "63071:3:33" + "src": "59031:3:34" }, "nodeType": "YulFunctionCall", - "src": "63071:14:33" + "src": "59031:14:34" }, "variableNames": [ { "name": "next", "nodeType": "YulIdentifier", - "src": "63063:4:33" + "src": "59023:4:34" } ] } @@ -33746,7 +31451,7 @@ { "name": "ptr", "nodeType": "YulTypedName", - "src": "63040:3:33", + "src": "59000:3:34", "type": "" } ], @@ -33754,118 +31459,118 @@ { "name": "next", "nodeType": "YulTypedName", - "src": "63048:4:33", + "src": "59008:4:34", "type": "" } ], - "src": "62978:113:33" + "src": "58938:113:34" }, { "body": { "nodeType": "YulBlock", - "src": "63251:608:33", + "src": "59211:608:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "63261:68:33", + "src": "59221:68:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "63323:5:33" + "src": "59283:5:34" } ], "functionName": { "name": "array_length_t_array$_t_bytes32_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "63275:47:33" + "src": "59235:47:34" }, "nodeType": "YulFunctionCall", - "src": "63275:54:33" + "src": "59235:54:34" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", - "src": "63265:6:33", + "src": "59225:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "63338:93:33", + "src": "59298:93:34", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "63419:3:33" + "src": "59379:3:34" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "63424:6:33" + "src": "59384:6:34" } ], "functionName": { "name": "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "63345:73:33" + "src": "59305:73:34" }, "nodeType": "YulFunctionCall", - "src": "63345:86:33" + "src": "59305:86:34" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "63338:3:33" + "src": "59298:3:34" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "63440:71:33", + "src": "59400:71:34", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", - "src": "63505:5:33" + "src": "59465:5:34" } ], "functionName": { "name": "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "63455:49:33" + "src": "59415:49:34" }, "nodeType": "YulFunctionCall", - "src": "63455:56:33" + "src": "59415:56:34" }, "variables": [ { "name": "baseRef", "nodeType": "YulTypedName", - "src": "63444:7:33", + "src": "59404:7:34", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "63520:21:33", + "src": "59480:21:34", "value": { "name": "baseRef", "nodeType": "YulIdentifier", - "src": "63534:7:33" + "src": "59494:7:34" }, "variables": [ { "name": "srcPtr", "nodeType": "YulTypedName", - "src": "63524:6:33", + "src": "59484:6:34", "type": "" } ] @@ -33873,92 +31578,92 @@ { "body": { "nodeType": "YulBlock", - "src": "63610:224:33", + "src": "59570:224:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "63624:34:33", + "src": "59584:34:34", "value": { "arguments": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "63651:6:33" + "src": "59611:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "63645:5:33" + "src": "59605:5:34" }, "nodeType": "YulFunctionCall", - "src": "63645:13:33" + "src": "59605:13:34" }, "variables": [ { "name": "elementValue0", "nodeType": "YulTypedName", - "src": "63628:13:33", + "src": "59588:13:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "63671:70:33", + "src": "59631:70:34", "value": { "arguments": [ { "name": "elementValue0", "nodeType": "YulIdentifier", - "src": "63722:13:33" + "src": "59682:13:34" }, { "name": "pos", "nodeType": "YulIdentifier", - "src": "63737:3:33" + "src": "59697:3:34" } ], "functionName": { "name": "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32", "nodeType": "YulIdentifier", - "src": "63678:43:33" + "src": "59638:43:34" }, "nodeType": "YulFunctionCall", - "src": "63678:63:33" + "src": "59638:63:34" }, "variableNames": [ { "name": "pos", "nodeType": "YulIdentifier", - "src": "63671:3:33" + "src": "59631:3:34" } ] }, { "nodeType": "YulAssignment", - "src": "63754:70:33", + "src": "59714:70:34", "value": { "arguments": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "63817:6:33" + "src": "59777:6:34" } ], "functionName": { "name": "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "63764:52:33" + "src": "59724:52:34" }, "nodeType": "YulFunctionCall", - "src": "63764:60:33" + "src": "59724:60:34" }, "variableNames": [ { "name": "srcPtr", "nodeType": "YulIdentifier", - "src": "63754:6:33" + "src": "59714:6:34" } ] } @@ -33969,41 +31674,41 @@ { "name": "i", "nodeType": "YulIdentifier", - "src": "63572:1:33" + "src": "59532:1:34" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "63575:6:33" + "src": "59535:6:34" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", - "src": "63569:2:33" + "src": "59529:2:34" }, "nodeType": "YulFunctionCall", - "src": "63569:13:33" + "src": "59529:13:34" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", - "src": "63583:18:33", + "src": "59543:18:34", "statements": [ { "nodeType": "YulAssignment", - "src": "63585:14:33", + "src": "59545:14:34", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", - "src": "63594:1:33" + "src": "59554:1:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "63597:1:33", + "src": "59557:1:34", "type": "", "value": "1" } @@ -34011,16 +31716,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "63590:3:33" + "src": "59550:3:34" }, "nodeType": "YulFunctionCall", - "src": "63590:9:33" + "src": "59550:9:34" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", - "src": "63585:1:33" + "src": "59545:1:34" } ] } @@ -34028,15 +31733,15 @@ }, "pre": { "nodeType": "YulBlock", - "src": "63554:14:33", + "src": "59514:14:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "63556:10:33", + "src": "59516:10:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "63565:1:33", + "src": "59525:1:34", "type": "", "value": "0" }, @@ -34044,28 +31749,28 @@ { "name": "i", "nodeType": "YulTypedName", - "src": "63560:1:33", + "src": "59520:1:34", "type": "" } ] } ] }, - "src": "63550:284:33" + "src": "59510:284:34" }, { "nodeType": "YulAssignment", - "src": "63843:10:33", + "src": "59803:10:34", "value": { "name": "pos", "nodeType": "YulIdentifier", - "src": "63850:3:33" + "src": "59810:3:34" }, "variableNames": [ { "name": "end", "nodeType": "YulIdentifier", - "src": "63843:3:33" + "src": "59803:3:34" } ] } @@ -34077,13 +31782,13 @@ { "name": "value", "nodeType": "YulTypedName", - "src": "63230:5:33", + "src": "59190:5:34", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", - "src": "63237:3:33", + "src": "59197:3:34", "type": "" } ], @@ -34091,31 +31796,31 @@ { "name": "end", "nodeType": "YulTypedName", - "src": "63246:3:33", + "src": "59206:3:34", "type": "" } ], - "src": "63127:732:33" + "src": "59087:732:34" }, { "body": { "nodeType": "YulBlock", - "src": "64069:389:33", + "src": "60029:389:34", "statements": [ { "nodeType": "YulAssignment", - "src": "64079:26:33", + "src": "60039:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "64091:9:33" + "src": "60051:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "64102:2:33", + "src": "60062:2:34", "type": "", "value": "96" } @@ -34123,16 +31828,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "64087:3:33" + "src": "60047:3:34" }, "nodeType": "YulFunctionCall", - "src": "64087:18:33" + "src": "60047:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "64079:4:33" + "src": "60039:4:34" } ] }, @@ -34142,19 +31847,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "64159:6:33" + "src": "60119:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "64172:9:33" + "src": "60132:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "64183:1:33", + "src": "60143:1:34", "type": "", "value": "0" } @@ -34162,22 +31867,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "64168:3:33" + "src": "60128:3:34" }, "nodeType": "YulFunctionCall", - "src": "64168:17:33" + "src": "60128:17:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "64115:43:33" + "src": "60075:43:34" }, "nodeType": "YulFunctionCall", - "src": "64115:71:33" + "src": "60075:71:34" }, "nodeType": "YulExpressionStatement", - "src": "64115:71:33" + "src": "60075:71:34" }, { "expression": { @@ -34187,12 +31892,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "64207:9:33" + "src": "60167:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "64218:2:33", + "src": "60178:2:34", "type": "", "value": "32" } @@ -34200,73 +31905,73 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "64203:3:33" + "src": "60163:3:34" }, "nodeType": "YulFunctionCall", - "src": "64203:18:33" + "src": "60163:18:34" }, { "arguments": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "64227:4:33" + "src": "60187:4:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "64233:9:33" + "src": "60193:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "64223:3:33" + "src": "60183:3:34" }, "nodeType": "YulFunctionCall", - "src": "64223:20:33" + "src": "60183:20:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "64196:6:33" + "src": "60156:6:34" }, "nodeType": "YulFunctionCall", - "src": "64196:48:33" + "src": "60156:48:34" }, "nodeType": "YulExpressionStatement", - "src": "64196:48:33" + "src": "60156:48:34" }, { "nodeType": "YulAssignment", - "src": "64253:116:33", + "src": "60213:116:34", "value": { "arguments": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "64355:6:33" + "src": "60315:6:34" }, { "name": "tail", "nodeType": "YulIdentifier", - "src": "64364:4:33" + "src": "60324:4:34" } ], "functionName": { "name": "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack", "nodeType": "YulIdentifier", - "src": "64261:93:33" + "src": "60221:93:34" }, "nodeType": "YulFunctionCall", - "src": "64261:108:33" + "src": "60221:108:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "64253:4:33" + "src": "60213:4:34" } ] }, @@ -34276,19 +31981,19 @@ { "name": "value2", "nodeType": "YulIdentifier", - "src": "64423:6:33" + "src": "60383:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "64436:9:33" + "src": "60396:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "64447:2:33", + "src": "60407:2:34", "type": "", "value": "64" } @@ -34296,22 +32001,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "64432:3:33" + "src": "60392:3:34" }, "nodeType": "YulFunctionCall", - "src": "64432:18:33" + "src": "60392:18:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "64379:43:33" + "src": "60339:43:34" }, "nodeType": "YulFunctionCall", - "src": "64379:72:33" + "src": "60339:72:34" }, "nodeType": "YulExpressionStatement", - "src": "64379:72:33" + "src": "60339:72:34" } ] }, @@ -34321,25 +32026,25 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "64025:9:33", + "src": "59985:9:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "64037:6:33", + "src": "59997:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "64045:6:33", + "src": "60005:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "64053:6:33", + "src": "60013:6:34", "type": "" } ], @@ -34347,20 +32052,20 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "64064:4:33", + "src": "60024:4:34", "type": "" } ], - "src": "63865:593:33" + "src": "59825:593:34" }, { "body": { "nodeType": "YulBlock", - "src": "64594:619:33", + "src": "60554:619:34", "statements": [ { "nodeType": "YulAssignment", - "src": "64604:90:33", + "src": "60564:90:34", "value": { "arguments": [ { @@ -34368,47 +32073,47 @@ { "name": "length", "nodeType": "YulIdentifier", - "src": "64686:6:33" + "src": "60646:6:34" } ], "functionName": { "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", "nodeType": "YulIdentifier", - "src": "64629:56:33" + "src": "60589:56:34" }, "nodeType": "YulFunctionCall", - "src": "64629:64:33" + "src": "60589:64:34" } ], "functionName": { "name": "allocate_memory", "nodeType": "YulIdentifier", - "src": "64613:15:33" + "src": "60573:15:34" }, "nodeType": "YulFunctionCall", - "src": "64613:81:33" + "src": "60573:81:34" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", - "src": "64604:5:33" + "src": "60564:5:34" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "64703:16:33", + "src": "60663:16:34", "value": { "name": "array", "nodeType": "YulIdentifier", - "src": "64714:5:33" + "src": "60674:5:34" }, "variables": [ { "name": "dst", "nodeType": "YulTypedName", - "src": "64707:3:33", + "src": "60667:3:34", "type": "" } ] @@ -34419,39 +32124,39 @@ { "name": "array", "nodeType": "YulIdentifier", - "src": "64736:5:33" + "src": "60696:5:34" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "64743:6:33" + "src": "60703:6:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "64729:6:33" + "src": "60689:6:34" }, "nodeType": "YulFunctionCall", - "src": "64729:21:33" + "src": "60689:21:34" }, "nodeType": "YulExpressionStatement", - "src": "64729:21:33" + "src": "60689:21:34" }, { "nodeType": "YulAssignment", - "src": "64759:23:33", + "src": "60719:23:34", "value": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", - "src": "64770:5:33" + "src": "60730:5:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "64777:4:33", + "src": "60737:4:34", "type": "", "value": "0x20" } @@ -34459,40 +32164,40 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "64766:3:33" + "src": "60726:3:34" }, "nodeType": "YulFunctionCall", - "src": "64766:16:33" + "src": "60726:16:34" }, "variableNames": [ { "name": "dst", "nodeType": "YulIdentifier", - "src": "64759:3:33" + "src": "60719:3:34" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "64792:44:33", + "src": "60752:44:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "64810:6:33" + "src": "60770:6:34" }, { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", - "src": "64822:6:33" + "src": "60782:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "64830:4:33", + "src": "60790:4:34", "type": "", "value": "0x20" } @@ -34500,25 +32205,25 @@ "functionName": { "name": "mul", "nodeType": "YulIdentifier", - "src": "64818:3:33" + "src": "60778:3:34" }, "nodeType": "YulFunctionCall", - "src": "64818:17:33" + "src": "60778:17:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "64806:3:33" + "src": "60766:3:34" }, "nodeType": "YulFunctionCall", - "src": "64806:30:33" + "src": "60766:30:34" }, "variables": [ { "name": "srcEnd", "nodeType": "YulTypedName", - "src": "64796:6:33", + "src": "60756:6:34", "type": "" } ] @@ -34526,7 +32231,7 @@ { "body": { "nodeType": "YulBlock", - "src": "64864:103:33", + "src": "60824:103:34", "statements": [ { "expression": { @@ -34534,13 +32239,13 @@ "functionName": { "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", "nodeType": "YulIdentifier", - "src": "64878:77:33" + "src": "60838:77:34" }, "nodeType": "YulFunctionCall", - "src": "64878:79:33" + "src": "60838:79:34" }, "nodeType": "YulExpressionStatement", - "src": "64878:79:33" + "src": "60838:79:34" } ] }, @@ -34549,43 +32254,43 @@ { "name": "srcEnd", "nodeType": "YulIdentifier", - "src": "64851:6:33" + "src": "60811:6:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "64859:3:33" + "src": "60819:3:34" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "64848:2:33" + "src": "60808:2:34" }, "nodeType": "YulFunctionCall", - "src": "64848:15:33" + "src": "60808:15:34" }, "nodeType": "YulIf", - "src": "64845:122:33" + "src": "60805:122:34" }, { "body": { "nodeType": "YulBlock", - "src": "65052:155:33", + "src": "61012:155:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "65067:21:33", + "src": "61027:21:34", "value": { "name": "src", "nodeType": "YulIdentifier", - "src": "65085:3:33" + "src": "61045:3:34" }, "variables": [ { "name": "elementPos", "nodeType": "YulTypedName", - "src": "65071:10:33", + "src": "61031:10:34", "type": "" } ] @@ -34596,55 +32301,55 @@ { "name": "dst", "nodeType": "YulIdentifier", - "src": "65109:3:33" + "src": "61069:3:34" }, { "arguments": [ { "name": "elementPos", "nodeType": "YulIdentifier", - "src": "65146:10:33" + "src": "61106:10:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "65158:3:33" + "src": "61118:3:34" } ], "functionName": { "name": "abi_decode_t_uint256_fromMemory", "nodeType": "YulIdentifier", - "src": "65114:31:33" + "src": "61074:31:34" }, "nodeType": "YulFunctionCall", - "src": "65114:48:33" + "src": "61074:48:34" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "65102:6:33" + "src": "61062:6:34" }, "nodeType": "YulFunctionCall", - "src": "65102:61:33" + "src": "61062:61:34" }, "nodeType": "YulExpressionStatement", - "src": "65102:61:33" + "src": "61062:61:34" }, { "nodeType": "YulAssignment", - "src": "65176:21:33", + "src": "61136:21:34", "value": { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", - "src": "65187:3:33" + "src": "61147:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "65192:4:33", + "src": "61152:4:34", "type": "", "value": "0x20" } @@ -34652,16 +32357,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "65183:3:33" + "src": "61143:3:34" }, "nodeType": "YulFunctionCall", - "src": "65183:14:33" + "src": "61143:14:34" }, "variableNames": [ { "name": "dst", "nodeType": "YulIdentifier", - "src": "65176:3:33" + "src": "61136:3:34" } ] } @@ -34672,41 +32377,41 @@ { "name": "src", "nodeType": "YulIdentifier", - "src": "65005:3:33" + "src": "60965:3:34" }, { "name": "srcEnd", "nodeType": "YulIdentifier", - "src": "65010:6:33" + "src": "60970:6:34" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", - "src": "65002:2:33" + "src": "60962:2:34" }, "nodeType": "YulFunctionCall", - "src": "65002:15:33" + "src": "60962:15:34" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", - "src": "65018:25:33", + "src": "60978:25:34", "statements": [ { "nodeType": "YulAssignment", - "src": "65020:21:33", + "src": "60980:21:34", "value": { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", - "src": "65031:3:33" + "src": "60991:3:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "65036:4:33", + "src": "60996:4:34", "type": "", "value": "0x20" } @@ -34714,16 +32419,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "65027:3:33" + "src": "60987:3:34" }, "nodeType": "YulFunctionCall", - "src": "65027:14:33" + "src": "60987:14:34" }, "variableNames": [ { "name": "src", "nodeType": "YulIdentifier", - "src": "65020:3:33" + "src": "60980:3:34" } ] } @@ -34731,28 +32436,28 @@ }, "pre": { "nodeType": "YulBlock", - "src": "64980:21:33", + "src": "60940:21:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "64982:17:33", + "src": "60942:17:34", "value": { "name": "offset", "nodeType": "YulIdentifier", - "src": "64993:6:33" + "src": "60953:6:34" }, "variables": [ { "name": "src", "nodeType": "YulTypedName", - "src": "64986:3:33", + "src": "60946:3:34", "type": "" } ] } ] }, - "src": "64976:231:33" + "src": "60936:231:34" } ] }, @@ -34762,19 +32467,19 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "64564:6:33", + "src": "60524:6:34", "type": "" }, { "name": "length", "nodeType": "YulTypedName", - "src": "64572:6:33", + "src": "60532:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "64580:3:33", + "src": "60540:3:34", "type": "" } ], @@ -34782,21 +32487,21 @@ { "name": "array", "nodeType": "YulTypedName", - "src": "64588:5:33", + "src": "60548:5:34", "type": "" } ], - "src": "64481:732:33" + "src": "60441:732:34" }, { "body": { "nodeType": "YulBlock", - "src": "65324:297:33", + "src": "61284:297:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "65373:83:33", + "src": "61333:83:34", "statements": [ { "expression": { @@ -34804,13 +32509,13 @@ "functionName": { "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", "nodeType": "YulIdentifier", - "src": "65375:77:33" + "src": "61335:77:34" }, "nodeType": "YulFunctionCall", - "src": "65375:79:33" + "src": "61335:79:34" }, "nodeType": "YulExpressionStatement", - "src": "65375:79:33" + "src": "61335:79:34" } ] }, @@ -34823,12 +32528,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "65352:6:33" + "src": "61312:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "65360:4:33", + "src": "61320:4:34", "type": "", "value": "0x1f" } @@ -34836,68 +32541,68 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "65348:3:33" + "src": "61308:3:34" }, "nodeType": "YulFunctionCall", - "src": "65348:17:33" + "src": "61308:17:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "65367:3:33" + "src": "61327:3:34" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "65344:3:33" + "src": "61304:3:34" }, "nodeType": "YulFunctionCall", - "src": "65344:27:33" + "src": "61304:27:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "65337:6:33" + "src": "61297:6:34" }, "nodeType": "YulFunctionCall", - "src": "65337:35:33" + "src": "61297:35:34" }, "nodeType": "YulIf", - "src": "65334:122:33" + "src": "61294:122:34" }, { "nodeType": "YulVariableDeclaration", - "src": "65465:27:33", + "src": "61425:27:34", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", - "src": "65485:6:33" + "src": "61445:6:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "65479:5:33" + "src": "61439:5:34" }, "nodeType": "YulFunctionCall", - "src": "65479:13:33" + "src": "61439:13:34" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", - "src": "65469:6:33", + "src": "61429:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "65501:114:33", + "src": "61461:114:34", "value": { "arguments": [ { @@ -34905,12 +32610,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "65588:6:33" + "src": "61548:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "65596:4:33", + "src": "61556:4:34", "type": "", "value": "0x20" } @@ -34918,35 +32623,35 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "65584:3:33" + "src": "61544:3:34" }, "nodeType": "YulFunctionCall", - "src": "65584:17:33" + "src": "61544:17:34" }, { "name": "length", "nodeType": "YulIdentifier", - "src": "65603:6:33" + "src": "61563:6:34" }, { "name": "end", "nodeType": "YulIdentifier", - "src": "65611:3:33" + "src": "61571:3:34" } ], "functionName": { "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory", "nodeType": "YulIdentifier", - "src": "65510:73:33" + "src": "61470:73:34" }, "nodeType": "YulFunctionCall", - "src": "65510:105:33" + "src": "61470:105:34" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", - "src": "65501:5:33" + "src": "61461:5:34" } ] } @@ -34958,13 +32663,13 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "65302:6:33", + "src": "61262:6:34", "type": "" }, { "name": "end", "nodeType": "YulTypedName", - "src": "65310:3:33", + "src": "61270:3:34", "type": "" } ], @@ -34972,21 +32677,21 @@ { "name": "array", "nodeType": "YulTypedName", - "src": "65318:5:33", + "src": "61278:5:34", "type": "" } ], - "src": "65236:385:33" + "src": "61196:385:34" }, { "body": { "nodeType": "YulBlock", - "src": "65763:730:33", + "src": "61723:730:34", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "65809:83:33", + "src": "61769:83:34", "statements": [ { "expression": { @@ -34994,13 +32699,13 @@ "functionName": { "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", "nodeType": "YulIdentifier", - "src": "65811:77:33" + "src": "61771:77:34" }, "nodeType": "YulFunctionCall", - "src": "65811:79:33" + "src": "61771:79:34" }, "nodeType": "YulExpressionStatement", - "src": "65811:79:33" + "src": "61771:79:34" } ] }, @@ -35011,26 +32716,26 @@ { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "65784:7:33" + "src": "61744:7:34" }, { "name": "headStart", "nodeType": "YulIdentifier", - "src": "65793:9:33" + "src": "61753:9:34" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", - "src": "65780:3:33" + "src": "61740:3:34" }, "nodeType": "YulFunctionCall", - "src": "65780:23:33" + "src": "61740:23:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "65805:2:33", + "src": "61765:2:34", "type": "", "value": "96" } @@ -35038,25 +32743,25 @@ "functionName": { "name": "slt", "nodeType": "YulIdentifier", - "src": "65776:3:33" + "src": "61736:3:34" }, "nodeType": "YulFunctionCall", - "src": "65776:32:33" + "src": "61736:32:34" }, "nodeType": "YulIf", - "src": "65773:119:33" + "src": "61733:119:34" }, { "nodeType": "YulBlock", - "src": "65902:128:33", + "src": "61862:128:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "65917:15:33", + "src": "61877:15:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "65931:1:33", + "src": "61891:1:34", "type": "", "value": "0" }, @@ -35064,14 +32769,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "65921:6:33", + "src": "61881:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "65946:74:33", + "src": "61906:74:34", "value": { "arguments": [ { @@ -35079,41 +32784,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "65992:9:33" + "src": "61952:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "66003:6:33" + "src": "61963:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "65988:3:33" + "src": "61948:3:34" }, "nodeType": "YulFunctionCall", - "src": "65988:22:33" + "src": "61948:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "66012:7:33" + "src": "61972:7:34" } ], "functionName": { "name": "abi_decode_t_bytes32_fromMemory", "nodeType": "YulIdentifier", - "src": "65956:31:33" + "src": "61916:31:34" }, "nodeType": "YulFunctionCall", - "src": "65956:64:33" + "src": "61916:64:34" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "65946:6:33" + "src": "61906:6:34" } ] } @@ -35121,15 +32826,15 @@ }, { "nodeType": "YulBlock", - "src": "66040:129:33", + "src": "62000:129:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "66055:16:33", + "src": "62015:16:34", "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "66069:2:33", + "src": "62029:2:34", "type": "", "value": "32" }, @@ -35137,14 +32842,14 @@ { "name": "offset", "nodeType": "YulTypedName", - "src": "66059:6:33", + "src": "62019:6:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "66085:74:33", + "src": "62045:74:34", "value": { "arguments": [ { @@ -35152,41 +32857,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "66131:9:33" + "src": "62091:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "66142:6:33" + "src": "62102:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "66127:3:33" + "src": "62087:3:34" }, "nodeType": "YulFunctionCall", - "src": "66127:22:33" + "src": "62087:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "66151:7:33" + "src": "62111:7:34" } ], "functionName": { "name": "abi_decode_t_bytes32_fromMemory", "nodeType": "YulIdentifier", - "src": "66095:31:33" + "src": "62055:31:34" }, "nodeType": "YulFunctionCall", - "src": "66095:64:33" + "src": "62055:64:34" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", - "src": "66085:6:33" + "src": "62045:6:34" } ] } @@ -35194,11 +32899,11 @@ }, { "nodeType": "YulBlock", - "src": "66179:307:33", + "src": "62139:307:34", "statements": [ { "nodeType": "YulVariableDeclaration", - "src": "66194:39:33", + "src": "62154:39:34", "value": { "arguments": [ { @@ -35206,12 +32911,12 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "66218:9:33" + "src": "62178:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "66229:2:33", + "src": "62189:2:34", "type": "", "value": "64" } @@ -35219,25 +32924,25 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "66214:3:33" + "src": "62174:3:34" }, "nodeType": "YulFunctionCall", - "src": "66214:18:33" + "src": "62174:18:34" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", - "src": "66208:5:33" + "src": "62168:5:34" }, "nodeType": "YulFunctionCall", - "src": "66208:25:33" + "src": "62168:25:34" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", - "src": "66198:6:33", + "src": "62158:6:34", "type": "" } ] @@ -35245,7 +32950,7 @@ { "body": { "nodeType": "YulBlock", - "src": "66280:83:33", + "src": "62240:83:34", "statements": [ { "expression": { @@ -35253,13 +32958,13 @@ "functionName": { "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", "nodeType": "YulIdentifier", - "src": "66282:77:33" + "src": "62242:77:34" }, "nodeType": "YulFunctionCall", - "src": "66282:79:33" + "src": "62242:79:34" }, "nodeType": "YulExpressionStatement", - "src": "66282:79:33" + "src": "62242:79:34" } ] }, @@ -35268,12 +32973,12 @@ { "name": "offset", "nodeType": "YulIdentifier", - "src": "66252:6:33" + "src": "62212:6:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "66260:18:33", + "src": "62220:18:34", "type": "", "value": "0xffffffffffffffff" } @@ -35281,17 +32986,17 @@ "functionName": { "name": "gt", "nodeType": "YulIdentifier", - "src": "66249:2:33" + "src": "62209:2:34" }, "nodeType": "YulFunctionCall", - "src": "66249:30:33" + "src": "62209:30:34" }, "nodeType": "YulIf", - "src": "66246:117:33" + "src": "62206:117:34" }, { "nodeType": "YulAssignment", - "src": "66377:99:33", + "src": "62337:99:34", "value": { "arguments": [ { @@ -35299,41 +33004,41 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "66448:9:33" + "src": "62408:9:34" }, { "name": "offset", "nodeType": "YulIdentifier", - "src": "66459:6:33" + "src": "62419:6:34" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "66444:3:33" + "src": "62404:3:34" }, "nodeType": "YulFunctionCall", - "src": "66444:22:33" + "src": "62404:22:34" }, { "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "66468:7:33" + "src": "62428:7:34" } ], "functionName": { "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory", "nodeType": "YulIdentifier", - "src": "66387:56:33" + "src": "62347:56:34" }, "nodeType": "YulFunctionCall", - "src": "66387:89:33" + "src": "62347:89:34" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", - "src": "66377:6:33" + "src": "62337:6:34" } ] } @@ -35347,13 +33052,13 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "65717:9:33", + "src": "61677:9:34", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", - "src": "65728:7:33", + "src": "61688:7:34", "type": "" } ], @@ -35361,43 +33066,43 @@ { "name": "value0", "nodeType": "YulTypedName", - "src": "65740:6:33", + "src": "61700:6:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "65748:6:33", + "src": "61708:6:34", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", - "src": "65756:6:33", + "src": "61716:6:34", "type": "" } ], - "src": "65627:866:33" + "src": "61587:866:34" }, { "body": { "nodeType": "YulBlock", - "src": "66625:206:33", + "src": "62585:206:34", "statements": [ { "nodeType": "YulAssignment", - "src": "66635:26:33", + "src": "62595:26:34", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "66647:9:33" + "src": "62607:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "66658:2:33", + "src": "62618:2:34", "type": "", "value": "64" } @@ -35405,16 +33110,16 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "66643:3:33" + "src": "62603:3:34" }, "nodeType": "YulFunctionCall", - "src": "66643:18:33" + "src": "62603:18:34" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "66635:4:33" + "src": "62595:4:34" } ] }, @@ -35424,19 +33129,19 @@ { "name": "value0", "nodeType": "YulIdentifier", - "src": "66715:6:33" + "src": "62675:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "66728:9:33" + "src": "62688:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "66739:1:33", + "src": "62699:1:34", "type": "", "value": "0" } @@ -35444,22 +33149,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "66724:3:33" + "src": "62684:3:34" }, "nodeType": "YulFunctionCall", - "src": "66724:17:33" + "src": "62684:17:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "66671:43:33" + "src": "62631:43:34" }, "nodeType": "YulFunctionCall", - "src": "66671:71:33" + "src": "62631:71:34" }, "nodeType": "YulExpressionStatement", - "src": "66671:71:33" + "src": "62631:71:34" }, { "expression": { @@ -35467,19 +33172,19 @@ { "name": "value1", "nodeType": "YulIdentifier", - "src": "66796:6:33" + "src": "62756:6:34" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "66809:9:33" + "src": "62769:9:34" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "66820:2:33", + "src": "62780:2:34", "type": "", "value": "32" } @@ -35487,22 +33192,22 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "66805:3:33" + "src": "62765:3:34" }, "nodeType": "YulFunctionCall", - "src": "66805:18:33" + "src": "62765:18:34" } ], "functionName": { "name": "abi_encode_t_address_to_t_address_fromStack", "nodeType": "YulIdentifier", - "src": "66752:43:33" + "src": "62712:43:34" }, "nodeType": "YulFunctionCall", - "src": "66752:72:33" + "src": "62712:72:34" }, "nodeType": "YulExpressionStatement", - "src": "66752:72:33" + "src": "62712:72:34" } ] }, @@ -35512,19 +33217,19 @@ { "name": "headStart", "nodeType": "YulTypedName", - "src": "66589:9:33", + "src": "62549:9:34", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", - "src": "66601:6:33", + "src": "62561:6:34", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "66609:6:33", + "src": "62569:6:34", "type": "" } ], @@ -35532,135 +33237,135 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "66620:4:33", + "src": "62580:4:34", "type": "" } ], - "src": "66499:332:33" + "src": "62459:332:34" }, { "body": { "nodeType": "YulBlock", - "src": "66885:362:33", + "src": "62845:362:34", "statements": [ { "nodeType": "YulAssignment", - "src": "66895:25:33", + "src": "62855:25:34", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "66918:1:33" + "src": "62878:1:34" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "66900:17:33" + "src": "62860:17:34" }, "nodeType": "YulFunctionCall", - "src": "66900:20:33" + "src": "62860:20:34" }, "variableNames": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "66895:1:33" + "src": "62855:1:34" } ] }, { "nodeType": "YulAssignment", - "src": "66929:25:33", + "src": "62889:25:34", "value": { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "66952:1:33" + "src": "62912:1:34" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "66934:17:33" + "src": "62894:17:34" }, "nodeType": "YulFunctionCall", - "src": "66934:20:33" + "src": "62894:20:34" }, "variableNames": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "66929:1:33" + "src": "62889:1:34" } ] }, { "nodeType": "YulVariableDeclaration", - "src": "66963:28:33", + "src": "62923:28:34", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "66986:1:33" + "src": "62946:1:34" }, { "name": "y", "nodeType": "YulIdentifier", - "src": "66989:1:33" + "src": "62949:1:34" } ], "functionName": { "name": "mul", "nodeType": "YulIdentifier", - "src": "66982:3:33" + "src": "62942:3:34" }, "nodeType": "YulFunctionCall", - "src": "66982:9:33" + "src": "62942:9:34" }, "variables": [ { "name": "product_raw", "nodeType": "YulTypedName", - "src": "66967:11:33", + "src": "62927:11:34", "type": "" } ] }, { "nodeType": "YulAssignment", - "src": "67000:41:33", + "src": "62960:41:34", "value": { "arguments": [ { "name": "product_raw", "nodeType": "YulIdentifier", - "src": "67029:11:33" + "src": "62989:11:34" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "67011:17:33" + "src": "62971:17:34" }, "nodeType": "YulFunctionCall", - "src": "67011:30:33" + "src": "62971:30:34" }, "variableNames": [ { "name": "product", "nodeType": "YulIdentifier", - "src": "67000:7:33" + "src": "62960:7:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "67218:22:33", + "src": "63178:22:34", "statements": [ { "expression": { @@ -35668,13 +33373,13 @@ "functionName": { "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "67220:16:33" + "src": "63180:16:34" }, "nodeType": "YulFunctionCall", - "src": "67220:18:33" + "src": "63180:18:34" }, "nodeType": "YulExpressionStatement", - "src": "67220:18:33" + "src": "63180:18:34" } ] }, @@ -35687,74 +33392,74 @@ { "name": "x", "nodeType": "YulIdentifier", - "src": "67151:1:33" + "src": "63111:1:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "67144:6:33" + "src": "63104:6:34" }, "nodeType": "YulFunctionCall", - "src": "67144:9:33" + "src": "63104:9:34" }, { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "67174:1:33" + "src": "63134:1:34" }, { "arguments": [ { "name": "product", "nodeType": "YulIdentifier", - "src": "67181:7:33" + "src": "63141:7:34" }, { "name": "x", "nodeType": "YulIdentifier", - "src": "67190:1:33" + "src": "63150:1:34" } ], "functionName": { "name": "div", "nodeType": "YulIdentifier", - "src": "67177:3:33" + "src": "63137:3:34" }, "nodeType": "YulFunctionCall", - "src": "67177:15:33" + "src": "63137:15:34" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "67171:2:33" + "src": "63131:2:34" }, "nodeType": "YulFunctionCall", - "src": "67171:22:33" + "src": "63131:22:34" } ], "functionName": { "name": "or", "nodeType": "YulIdentifier", - "src": "67124:2:33" + "src": "63084:2:34" }, "nodeType": "YulFunctionCall", - "src": "67124:83:33" + "src": "63084:83:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "67104:6:33" + "src": "63064:6:34" }, "nodeType": "YulFunctionCall", - "src": "67104:113:33" + "src": "63064:113:34" }, "nodeType": "YulIf", - "src": "67101:139:33" + "src": "63061:139:34" } ] }, @@ -35764,13 +33469,13 @@ { "name": "x", "nodeType": "YulTypedName", - "src": "66868:1:33", + "src": "62828:1:34", "type": "" }, { "name": "y", "nodeType": "YulTypedName", - "src": "66871:1:33", + "src": "62831:1:34", "type": "" } ], @@ -35778,16 +33483,16 @@ { "name": "product", "nodeType": "YulTypedName", - "src": "66877:7:33", + "src": "62837:7:34", "type": "" } ], - "src": "66837:410:33" + "src": "62797:410:34" }, { "body": { "nodeType": "YulBlock", - "src": "67281:152:33", + "src": "63241:152:34", "statements": [ { "expression": { @@ -35795,14 +33500,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "67298:1:33", + "src": "63258:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "67301:77:33", + "src": "63261:77:34", "type": "", "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" } @@ -35810,13 +33515,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "67291:6:33" + "src": "63251:6:34" }, "nodeType": "YulFunctionCall", - "src": "67291:88:33" + "src": "63251:88:34" }, "nodeType": "YulExpressionStatement", - "src": "67291:88:33" + "src": "63251:88:34" }, { "expression": { @@ -35824,14 +33529,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "67395:1:33", + "src": "63355:1:34", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "67398:4:33", + "src": "63358:4:34", "type": "", "value": "0x12" } @@ -35839,13 +33544,13 @@ "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "67388:6:33" + "src": "63348:6:34" }, "nodeType": "YulFunctionCall", - "src": "67388:15:33" + "src": "63348:15:34" }, "nodeType": "YulExpressionStatement", - "src": "67388:15:33" + "src": "63348:15:34" }, { "expression": { @@ -35853,14 +33558,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "67419:1:33", + "src": "63379:1:34", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "67422:4:33", + "src": "63382:4:34", "type": "", "value": "0x24" } @@ -35868,83 +33573,83 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "67412:6:33" + "src": "63372:6:34" }, "nodeType": "YulFunctionCall", - "src": "67412:15:33" + "src": "63372:15:34" }, "nodeType": "YulExpressionStatement", - "src": "67412:15:33" + "src": "63372:15:34" } ] }, "name": "panic_error_0x12", "nodeType": "YulFunctionDefinition", - "src": "67253:180:33" + "src": "63213:180:34" }, { "body": { "nodeType": "YulBlock", - "src": "67481:143:33", + "src": "63441:143:34", "statements": [ { "nodeType": "YulAssignment", - "src": "67491:25:33", + "src": "63451:25:34", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "67514:1:33" + "src": "63474:1:34" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "67496:17:33" + "src": "63456:17:34" }, "nodeType": "YulFunctionCall", - "src": "67496:20:33" + "src": "63456:20:34" }, "variableNames": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "67491:1:33" + "src": "63451:1:34" } ] }, { "nodeType": "YulAssignment", - "src": "67525:25:33", + "src": "63485:25:34", "value": { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "67548:1:33" + "src": "63508:1:34" } ], "functionName": { "name": "cleanup_t_uint256", "nodeType": "YulIdentifier", - "src": "67530:17:33" + "src": "63490:17:34" }, "nodeType": "YulFunctionCall", - "src": "67530:20:33" + "src": "63490:20:34" }, "variableNames": [ { "name": "y", "nodeType": "YulIdentifier", - "src": "67525:1:33" + "src": "63485:1:34" } ] }, { "body": { "nodeType": "YulBlock", - "src": "67572:22:33", + "src": "63532:22:34", "statements": [ { "expression": { @@ -35952,13 +33657,13 @@ "functionName": { "name": "panic_error_0x12", "nodeType": "YulIdentifier", - "src": "67574:16:33" + "src": "63534:16:34" }, "nodeType": "YulFunctionCall", - "src": "67574:18:33" + "src": "63534:18:34" }, "nodeType": "YulExpressionStatement", - "src": "67574:18:33" + "src": "63534:18:34" } ] }, @@ -35967,49 +33672,49 @@ { "name": "y", "nodeType": "YulIdentifier", - "src": "67569:1:33" + "src": "63529:1:34" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "67562:6:33" + "src": "63522:6:34" }, "nodeType": "YulFunctionCall", - "src": "67562:9:33" + "src": "63522:9:34" }, "nodeType": "YulIf", - "src": "67559:35:33" + "src": "63519:35:34" }, { "nodeType": "YulAssignment", - "src": "67604:14:33", + "src": "63564:14:34", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "67613:1:33" + "src": "63573:1:34" }, { "name": "y", "nodeType": "YulIdentifier", - "src": "67616:1:33" + "src": "63576:1:34" } ], "functionName": { "name": "div", "nodeType": "YulIdentifier", - "src": "67609:3:33" + "src": "63569:3:34" }, "nodeType": "YulFunctionCall", - "src": "67609:9:33" + "src": "63569:9:34" }, "variableNames": [ { "name": "r", "nodeType": "YulIdentifier", - "src": "67604:1:33" + "src": "63564:1:34" } ] } @@ -36021,13 +33726,13 @@ { "name": "x", "nodeType": "YulTypedName", - "src": "67470:1:33", + "src": "63430:1:34", "type": "" }, { "name": "y", "nodeType": "YulTypedName", - "src": "67473:1:33", + "src": "63433:1:34", "type": "" } ], @@ -36035,162 +33740,132 @@ { "name": "r", "nodeType": "YulTypedName", - "src": "67479:1:33", + "src": "63439:1:34", "type": "" } ], - "src": "67439:185:33" + "src": "63399:185:34" } ] }, - "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function validator_revert_t_enum$_Version_$6610(value) {\n if iszero(lt(value, 4)) { revert(0, 0) }\n }\n\n function abi_decode_t_enum$_Version_$6610(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_enum$_Version_$6610(value)\n }\n\n // enum ILBRouter.Version[]\n function abi_decode_available_length_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_enum$_Version_$6610(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // enum ILBRouter.Version[]\n function abi_decode_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC20_$225(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$225(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$225(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$225(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC20_$225(value)\n }\n\n // contract IERC20[]\n function abi_decode_available_length_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_contract$_IERC20_$225(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // contract IERC20[]\n function abi_decode_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n // struct ILBRouter.Path\n function abi_decode_t_struct$_Path_$6660_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x60) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x60)\n\n {\n // pairBinSteps\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x00), abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // versions\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x20), abi_decode_t_array$_t_enum$_Version_$6610_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // tokenPath\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x40), abi_decode_t_array$_t_contract$_IERC20_$225_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6660_memory_ptrt_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_struct$_Path_$6660_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_uint256t_struct$_Path_$6660_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_struct$_Path_$6660_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6660_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_struct$_Path_$6660_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ILBFactory_$4517_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBFactory_$4517_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBFactory_$4517_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBFactory_$4517__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBFactory_$4517_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$225t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$225(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint24(value) -> cleaned {\n cleaned := and(value, 0xffffff)\n }\n\n function validator_revert_t_uint24(value) {\n if iszero(eq(value, cleanup_t_uint24(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint24(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint24(value)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$225t_contract$_IERC20_$225t_uint24t_uint16(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$225(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$225(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_ILBPair_$6473_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBPair_$6473_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$6473_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$6473__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBPair_$6473_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_contract$_IWNATIVE_$7164_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IWNATIVE_$7164_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IWNATIVE_$7164_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IWNATIVE_$7164__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IWNATIVE_$7164_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_contract$_ILBLegacyFactory_$5081_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBLegacyFactory_$5081_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBLegacyFactory_$5081_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBLegacyFactory_$5081__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBLegacyFactory_$5081_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$225t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7 {\n if slt(sub(dataEnd, headStart), 256) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$225(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() {\n revert(0, 0)\n }\n\n // struct ILBRouter.LiquidityParameters\n function abi_decode_t_struct$_LiquidityParameters_$6647_calldata_ptr(offset, end) -> value {\n if slt(sub(end, offset), 480) { revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() }\n value := offset\n }\n\n function abi_decode_tuple_t_struct$_LiquidityParameters_$6647_calldata_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_struct$_LiquidityParameters_$6647_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value4, tail)\n\n mstore(add(headStart, 160), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value5, tail)\n\n }\n\n function cleanup_t_contract$_ILBPair_$6473(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBPair_$6473(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBPair_$6473(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBPair_$6473(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBPair_$6473(value)\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint128(value) {\n if iszero(eq(value, cleanup_t_uint128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint128(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint128(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6473t_uint128t_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6473(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value2, add(headStart, 64))\n\n }\n\n function convert_t_contract$_ILBLegacyRouter_$5906_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBLegacyRouter_$5906_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBLegacyRouter_$5906_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBLegacyRouter_$5906__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBLegacyRouter_$5906_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_contract$_IJoeFactory_$3809_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IJoeFactory_$3809_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IJoeFactory_$3809_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IJoeFactory_$3809__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IJoeFactory_$3809_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$225t_contract$_IERC20_$225t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$225(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$225(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 192))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value6 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6473t_uint24(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6473(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ILBToken_$7148(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBToken_$7148(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBToken_$7148(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBToken_$7148(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBToken_$7148(value)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_contract$_ILBToken_$7148t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBToken_$7148(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2, value3 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6473t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6473(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint24_to_t_uint24_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_IERC20_$225_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$225_to_t_address(value))\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$225_t_contract$_IERC20_$225_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_t_contract$_ILBPair_$6473_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBPair_$6473(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6473_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6473_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_t_contract$_IERC20_$225_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IERC20_$225(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$225_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$225_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$225(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$225(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bool_to_t_bool_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_uint128_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint128(value)\n }\n\n function abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, value3, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value4, value5, tail)\n\n }\n\n function abi_decode_t_uint24_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint24(value)\n }\n\n function abi_decode_tuple_t_uint24_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint24_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint112(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint112(value) {\n if iszero(eq(value, cleanup_t_uint112(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint112_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint112(value)\n }\n\n function cleanup_t_uint32(value) -> cleaned {\n cleaned := and(value, 0xffffffff)\n }\n\n function validator_revert_t_uint32(value) {\n if iszero(eq(value, cleanup_t_uint32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint32(value)\n }\n\n function abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint112_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint112_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_0_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_ILBLegacyPair_$5497_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBLegacyPair_$5497_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBLegacyPair_$5497_to_t_address(value))\n }\n\n function convert_t_uint128_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint128(value)))\n }\n\n function abi_encode_t_uint128_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint128_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBLegacyPair_$5497_t_uint128_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_ILBLegacyPair_$5497_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bool_to_t_bool_fromStack(value2, add(headStart, 64))\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$225_t_contract$_IERC20_$225_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$225_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_uint16_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint16(value)\n }\n\n function cleanup_t_contract$_ILBLegacyPair_$5497(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBLegacyPair_$5497(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBLegacyPair_$5497(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBLegacyPair_$5497_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBLegacyPair_$5497(value)\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n // struct ILBLegacyFactory.LBPairInformation\n function abi_decode_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory(headStart, end) -> value {\n if slt(sub(end, headStart), 0x80) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x80)\n\n {\n // binStep\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_uint16_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // LBPair\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_contract$_ILBLegacyPair_$5497_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // createdByOwner\n\n let offset := 64\n\n mstore(add(value, 0x40), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // ignoredForRouting\n\n let offset := 96\n\n mstore(add(value, 0x60), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n }\n\n function abi_decode_tuple_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_struct$_LBPairInformation_$4733_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct ILBFactory.LBPairInformation\n function abi_decode_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory(headStart, end) -> value {\n if slt(sub(end, headStart), 0x80) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x80)\n\n {\n // binStep\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_uint16_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // LBPair\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_contract$_ILBPair_$6473_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // createdByOwner\n\n let offset := 64\n\n mstore(add(value, 0x40), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // ignoredForRouting\n\n let offset := 96\n\n mstore(add(value, 0x60), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n }\n\n function abi_decode_tuple_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_struct$_LBPairInformation_$4173_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value3, tail)\n\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() {\n revert(0, 0)\n }\n\n function revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() {\n revert(0, 0)\n }\n\n function revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() {\n revert(0, 0)\n }\n\n function access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n addr := add(base_ref, rel_offset_of_tail)\n\n length := calldataload(addr)\n if gt(length, 0xffffffffffffffff) { revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() }\n addr := add(addr, 32)\n if sgt(addr, sub(calldatasize(), mul(length, 0x20))) { revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() }\n\n }\n\n function access_calldata_tail_t_array$_t_int256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n addr := add(base_ref, rel_offset_of_tail)\n\n length := calldataload(addr)\n if gt(length, 0xffffffffffffffff) { revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() }\n addr := add(addr, 32)\n if sgt(addr, sub(calldatasize(), mul(length, 0x20))) { revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_bytes32_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes32[] -> bytes32[]\n function abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_bytes32_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__to_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n}\n", - "id": 33, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function validator_revert_t_enum$_Version_$6322(value) {\n if iszero(lt(value, 2)) { revert(0, 0) }\n }\n\n function abi_decode_t_enum$_Version_$6322(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_enum$_Version_$6322(value)\n }\n\n // enum ILBRouter.Version[]\n function abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_enum$_Version_$6322(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // enum ILBRouter.Version[]\n function abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC20_$479(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$479(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$479(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$479(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC20_$479(value)\n }\n\n // contract IERC20[]\n function abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_contract$_IERC20_$479(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // contract IERC20[]\n function abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n // struct ILBRouter.Path\n function abi_decode_t_struct$_Path_$6372_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x60) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x60)\n\n {\n // pairBinSteps\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x00), abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // versions\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x20), abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // tokenPath\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x40), abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_struct$_Path_$6372_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_struct$_Path_$6372_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_struct$_Path_$6372_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint24(value) -> cleaned {\n cleaned := and(value, 0xffffff)\n }\n\n function validator_revert_t_uint24(value) {\n if iszero(eq(value, cleanup_t_uint24(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint24(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint24(value)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint24t_uint16(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ILBPair_$6187_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$6187_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$6187__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_contract$_IWNATIVE_$7175_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IWNATIVE_$7175_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IWNATIVE_$7175__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7 {\n if slt(sub(dataEnd, headStart), 256) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function convert_t_contract$_ILBFactory_$4236_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBFactory_$4236_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBFactory_$4236__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() {\n revert(0, 0)\n }\n\n // struct ILBRouter.LiquidityParameters\n function abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr(offset, end) -> value {\n if slt(sub(end, offset), 480) { revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() }\n value := offset\n }\n\n function abi_decode_tuple_t_struct$_LiquidityParameters_$6359_calldata_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value4, tail)\n\n mstore(add(headStart, 160), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value5, tail)\n\n }\n\n function cleanup_t_contract$_ILBPair_$6187(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBPair_$6187(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBPair_$6187(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBPair_$6187(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBPair_$6187(value)\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint128(value) {\n if iszero(eq(value, cleanup_t_uint128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint128(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint128(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187t_uint128t_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value2, add(headStart, 64))\n\n }\n\n function convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ISovrynLBFactoryV1_$6916__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 192))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value6 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187t_uint24(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ILBToken_$6842(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBToken_$6842(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBToken_$6842(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBToken_$6842(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBToken_$6842(value)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_contract$_ILBToken_$6842t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBToken_$6842(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2, value3 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint24_to_t_uint24_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_IERC20_$479_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$479_to_t_address(value))\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_t_contract$_ILBPair_$6187_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBPair_$6187(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint64(value) -> converted {\n converted := cleanup_t_uint64(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint64(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_contract$_IERC20_$479_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IERC20_$479(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bool_to_t_bool_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_uint128_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint128(value)\n }\n\n function abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, value3, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value4, value5, tail)\n\n }\n\n function abi_decode_t_uint24_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint24(value)\n }\n\n function abi_decode_tuple_t_uint24_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint24_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint112(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint112(value) {\n if iszero(eq(value, cleanup_t_uint112(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint112_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint112(value)\n }\n\n function cleanup_t_uint32(value) -> cleaned {\n cleaned := and(value, 0xffffffff)\n }\n\n function validator_revert_t_uint32(value) {\n if iszero(eq(value, cleanup_t_uint32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint32(value)\n }\n\n function abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint112_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint112_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_0_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_uint16_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint16(value)\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n // struct ILBFactory.LBPairInformation\n function abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory(headStart, end) -> value {\n if slt(sub(end, headStart), 0x80) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x80)\n\n {\n // binStep\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_uint16_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // LBPair\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_contract$_ILBPair_$6187_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // createdByOwner\n\n let offset := 64\n\n mstore(add(value, 0x40), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // ignoredForRouting\n\n let offset := 96\n\n mstore(add(value, 0x60), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n }\n\n function abi_decode_tuple_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value3, tail)\n\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() {\n revert(0, 0)\n }\n\n function revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() {\n revert(0, 0)\n }\n\n function revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() {\n revert(0, 0)\n }\n\n function access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n addr := add(base_ref, rel_offset_of_tail)\n\n length := calldataload(addr)\n if gt(length, 0xffffffffffffffff) { revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() }\n addr := add(addr, 32)\n if sgt(addr, sub(calldatasize(), mul(length, 0x20))) { revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() }\n\n }\n\n function access_calldata_tail_t_array$_t_int256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n addr := add(base_ref, rel_offset_of_tail)\n\n length := calldataload(addr)\n if gt(length, 0xffffffffffffffff) { revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() }\n addr := add(addr, 32)\n if sgt(addr, sub(calldatasize(), mul(length, 0x20))) { revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_bytes32_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes32[] -> bytes32[]\n function abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_bytes32_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__to_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n}\n", + "id": 34, "language": "Yul", "name": "#utility.yul" } ], "immutableReferences": { - "326": [ - { - "length": 32, - "start": 5541 - }, - { - "length": 32, - "start": 6115 - }, - { - "length": 32, - "start": 6777 - }, + "585": [ { "length": 32, - "start": 11390 + "start": 5344 }, { "length": 32, - "start": 19049 - } - ], - "329": [ - { - "length": 32, - "start": 5503 + "start": 5918 }, { "length": 32, - "start": 18882 - } - ], - "332": [ - { - "length": 32, - "start": 10049 + "start": 6914 }, { "length": 32, - "start": 21327 - } - ], - "335": [ - { - "length": 32, - "start": 6324 + "start": 11482 }, { "length": 32, - "start": 18671 + "start": 17287 } ], - "338": [ + "589": [ { "length": 32, - "start": 10010 + "start": 10143 }, { "length": 32, - "start": 14696 + "start": 19562 } ], - "341": [ + "593": [ { "length": 32, - "start": 395 + "start": 341 }, { "length": 32, - "start": 2102 + "start": 1944 }, { "length": 32, - "start": 2340 + "start": 2182 }, { "length": 32, - "start": 2583 + "start": 2425 }, { "length": 32, - "start": 3030 + "start": 2872 }, { "length": 32, - "start": 4231 + "start": 4073 }, { "length": 32, - "start": 6285 + "start": 6088 }, { "length": 32, - "start": 6441 + "start": 6580 }, { "length": 32, - "start": 6620 + "start": 6757 }, { "length": 32, - "start": 7103 + "start": 7238 }, { "length": 32, - "start": 7268 + "start": 7403 }, { "length": 32, - "start": 8485 + "start": 8620 }, { "length": 32, - "start": 9639 + "start": 9772 }, { "length": 32, - "start": 10730 + "start": 10822 }, { "length": 32, - "start": 13853 + "start": 13617 }, { "length": 32, - "start": 15379 + "start": 14714 }, { "length": 32, - "start": 15509 + "start": 14844 } ] }, "linkReferences": {}, - "object": "608060405260043610610184575f3560e01c806392fe8e70116100d0578063ba84652311610089578063d0e380f211610063578063d0e380f2146106a8578063e038e6dc146106e4578063e9361c0814610714578063f96fe9251461073c57610210565b8063ba84652314610617578063bb558a9f14610641578063c22159b61461066b57610210565b806392fe8e70146104b2578063964f987c146104ee5780639ab6156b1461052c578063a0d376cf14610568578063a3c7271a146105a6578063b066ea7c146105e757610210565b806362c067671161013d57806371d1974a1161011757806371d1974a146103ec57806381c2fdfb1461041657806388cc58e4146104535780638efc2b2c1461047d57610210565b806362c067671461035e578063659ac74b146103865780636c9c0078146103c257610210565b80631a24f9a9146102145780632075ad22146102505780632a443fae146102805780633dc8f8ec146102bc5780634b801870146102f85780635c5035cb1461033457610210565b36610210577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461020e576040517f6c8cb79300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b34801561021f575f80fd5b5061023a60048036038101906102359190615d32565b610778565b6040516102479190615dd4565b60405180910390f35b61026a60048036038101906102659190615e17565b610b17565b6040516102779190615f4e565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190615f6e565b610e45565b6040516102b39190615dd4565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190615d32565b610fc8565b6040516102ef9190615f4e565b60405180910390f35b348015610303575f80fd5b5061031e60048036038101906103199190615f6e565b6112d7565b60405161032b9190615dd4565b60405180910390f35b34801561033f575f80fd5b5061034861157c565b604051610355919061605c565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190616075565b6115a3565b005b348015610391575f80fd5b506103ac60048036038101906103a79190616134565b6117e0565b6040516103b991906161b8565b60405180910390f35b3480156103cd575f80fd5b506103d661188a565b6040516103e391906161f1565b60405180910390f35b3480156103f7575f80fd5b506104006118b1565b60405161040d919061622a565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190616243565b6118d8565b60405161044a92919061632c565b60405180910390f35b34801561045e575f80fd5b50610467611a76565b604051610474919061605c565b60405180910390f35b61049760048036038101906104929190616376565b611a9d565b6040516104a9969594939291906163bd565b60405180910390f35b3480156104bd575f80fd5b506104d860048036038101906104d39190615f6e565b611da4565b6040516104e59190615f4e565b60405180910390f35b3480156104f9575f80fd5b50610514600480360381019061050f91906164df565b611fd5565b6040516105239392919061653e565b60405180910390f35b348015610537575f80fd5b50610552600480360381019061054d9190615d32565b612067565b60405161055f9190615dd4565b60405180910390f35b348015610573575f80fd5b5061058e600480360381019061058991906164df565b6122c8565b60405161059d9392919061653e565b60405180910390f35b3480156105b1575f80fd5b506105cc60048036038101906105c79190616376565b61235a565b6040516105de969594939291906163bd565b60405180910390f35b61060160048036038101906105fc9190615e17565b6124e9565b60405161060e9190615dd4565b60405180910390f35b348015610622575f80fd5b5061062b612717565b6040516106389190616593565b60405180910390f35b34801561064c575f80fd5b5061065561273e565b60405161066291906165cc565b60405180910390f35b348015610676575f80fd5b50610691600480360381019061068c91906165e5565b612765565b60405161069f92919061632c565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c991906166e1565b6128ab565b6040516106db9190615dd4565b60405180910390f35b6106fe60048036038101906106f99190615e17565b61292c565b60405161070b9190615dd4565b60405180910390f35b34801561071f575f80fd5b5061073a600480360381019061073591906167b3565b612c7c565b005b348015610747575f80fd5b50610762600480360381019061075d9190616856565b612de5565b60405161076f91906168a3565b60405180910390f35b5f81804211156107c15780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016107b892919061632c565b60405180910390fd5b845f815f01515114806107dd5750805f01515181602001515114155b806107fd57508060400151516001825f0151516107fa91906168e9565b14155b15610834576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106108865761088561691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610908578560400151865f015151815181106108c4576108c361691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016108ff9190616958565b60405180910390fd5b5f61091f875f015188602001518960400151612e66565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161097b9190616958565b602060405180830381865afa158015610996573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ba9190616985565b9050610a0088604001515f815181106109d6576109d561691c565b5b602002602001015133845f815181106109f2576109f161691c565b5b60200260200101518d612fa3565b610a148289602001518a6040015130612fdf565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a6e9190616958565b602060405180830381865afa158015610a89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aad9190616985565b610ab791906169b0565b945084891115610b005788856040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610af792919061632c565b60405180910390fd5b610b0a8786613613565b5050505095945050505050565b60608180421115610b615780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610b5892919061632c565b60405180910390fd5b845f815f0151511480610b7d5750805f01515181602001515114155b80610b9d57508060400151516001825f015151610b9a91906168e9565b14155b15610bd4576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110610c2257610c2161691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ca05785604001515f81518110610c5c57610c5b61691c565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401610c979190616958565b60405180910390fd5b5f610cb7875f015188602001518960400151612e66565b9050610ccd87602001518289604001518b6136b0565b935034845f81518110610ce357610ce261691c565b5b60200260200101511115610d4a5734845f81518110610d0557610d0461691c565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401610d4192919061632c565b60405180910390fd5b610d88815f81518110610d6057610d5f61691c565b5b6020026020010151855f81518110610d7b57610d7a61691c565b5b6020026020010151613c09565b5f610d9e8289602001518a60400151888b613cde565b905088811015610de75788816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610dde92919061632c565b60405180910390fd5b845f81518110610dfa57610df961691c565b5b6020026020010151341115610e3957610e3833865f81518110610e2057610e1f61691c565b5b602002602001015134610e3391906169b0565b6141d9565b5b50505050949350505050565b5f8180421115610e8e5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610e8592919061632c565b60405180910390fd5b845f815f0151511480610eaa5750805f01515181602001515114155b80610eca57508060400151516001825f015151610ec791906168e9565b14155b15610f01576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f18875f015188602001518960400151612e66565b9050610f5e87604001515f81518110610f3457610f3361691c565b5b602002602001015133835f81518110610f5057610f4f61691c565b5b60200260200101518c612fa3565b610f73898289602001518a604001518a614293565b935083881115610fbc5787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610fb392919061632c565b60405180910390fd5b50505095945050505050565b606081804211156110125780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161100992919061632c565b60405180910390fd5b845f815f015151148061102e5750805f01515181602001515114155b8061104e57508060400151516001825f01515161104b91906168e9565b14155b15611085576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106110d7576110d661691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611159578560400151865f015151815181106111155761111461691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016111509190616958565b60405180910390fd5b5f611170875f015188602001518960400151612e66565b905061118687602001518289604001518c6136b0565b935087845f8151811061119c5761119b61691c565b5b602002602001015111156112035787845f815181106111be576111bd61691c565b5b60200260200101516040517fca7710c80000000000000000000000000000000000000000000000000000000081526004016111fa92919061632c565b60405180910390fd5b61126187604001515f8151811061121d5761121c61691c565b5b602002602001015133835f815181106112395761123861691c565b5b6020026020010151875f815181106112545761125361691c565b5b6020026020010151612fa3565b5f6112778289602001518a604001518830613cde565b9050898110156112c05789816040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016112b792919061632c565b60405180910390fd5b6112ca8782613613565b5050505095945050505050565b5f81804211156113205780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161131792919061632c565b60405180910390fd5b845f815f015151148061133c5750805f01515181602001515114155b8061135c57508060400151516001825f01515161135991906168e9565b14155b15611393576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6113aa875f015188602001518960400151612e66565b90505f87604001518251815181106113c5576113c461691c565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b81526004016114099190616958565b602060405180830381865afa158015611424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114489190616985565b905061148e89604001515f815181106114645761146361691c565b5b602002602001015133855f815181106114805761147f61691c565b5b60200260200101518e612fa3565b6114a2838a602001518b604001518b612fdf565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016114dc9190616958565b602060405180830381865afa1580156114f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151b9190616985565b61152591906169b0565b9550858a111561156e5789866040517f4feac00c00000000000000000000000000000000000000000000000000000000815260040161156592919061632c565b60405180910390fd5b505050505095945050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163091906169f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611694576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611707577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116f457806116f6565b475b905061170282826141d9565b6117db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461173457806117ad565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161176d9190616958565b602060405180830381865afa158015611788573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ac9190616985565b5b90506117da82828573ffffffffffffffffffffffffffffffffffffffff166148359092919063ffffffff16565b5b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663659ac74b868686866040518563ffffffff1660e01b81526004016118409493929190616a51565b6020604051808303815f875af115801561185c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118809190616aa8565b9050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f8082804211156119225780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161191992919061632c565b60405180910390fd5b5f6119548c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff1660036148c0565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c49190616ae7565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614905080611a2457898b809b50819c5050505b5f80611a34848e8e8e8e30614b87565b9150915082611a44578082611a47565b81815b8097508198505050505050611a5d8c8786614d10565b611a678684613613565b50509850989650505050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f805f806060805f611ad9885f016020810190611aba9190616b12565b896020016020810190611acd9190616b12565b8a6040013560036148c0565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b489190616ae7565b73ffffffffffffffffffffffffffffffffffffffff16885f016020810190611b709190616b12565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16885f016020810190611c069190616b12565b73ffffffffffffffffffffffffffffffffffffffff16148015611c2c5750348860600135145b15611c6257611c53886020016020810190611c479190616b12565b33838b60800135612fa3565b611c5d8134613c09565b611d78565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16886020016020810190611cac9190616b12565b73ffffffffffffffffffffffffffffffffffffffff16148015611cd25750348860800135145b15611d0757611cf8885f016020810190611cec9190616b12565b33838b60600135612fa3565b611d028134613c09565b611d77565b875f016020810190611d199190616b12565b886020016020810190611d2c9190616b12565b89606001358a60800135346040517fd0a4f13b000000000000000000000000000000000000000000000000000000008152600401611d6e959493929190616b3d565b60405180910390fd5b5b611d828882614d49565b809750819850829950839a50849b50859c505050505050505091939550919395565b60608180421115611dee5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611de592919061632c565b60405180910390fd5b845f815f0151511480611e0a5750805f01515181602001515114155b80611e2a57508060400151516001825f015151611e2791906168e9565b14155b15611e61576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611e78875f015188602001518960400151612e66565b9050611e8e87602001518289604001518c6136b0565b935087845f81518110611ea457611ea361691c565b5b60200260200101511115611f0b5787845f81518110611ec657611ec561691c565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401611f0292919061632c565b60405180910390fd5b611f6987604001515f81518110611f2557611f2461691c565b5b602002602001015133835f81518110611f4157611f4061691c565b5b6020026020010151875f81518110611f5c57611f5b61691c565b5b6020026020010151612fa3565b5f611f7f8289602001518a60400151888b613cde565b905089811015611fc85789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401611fbf92919061632c565b60405180910390fd5b5050505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663abcd783086866040518363ffffffff1660e01b8152600401612013929190616b9d565b606060405180830381865afa15801561202e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120529190616bd8565b80935081945082955050505093509350939050565b5f81804211156120b05780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016120a792919061632c565b60405180910390fd5b845f815f01515114806120cc5750805f01515181602001515114155b806120ec57508060400151516001825f0151516120e991906168e9565b14155b15612123576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106121755761217461691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146121f7578560400151865f015151815181106121b3576121b261691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016121ee9190616958565b60405180910390fd5b5f61220e875f015188602001518960400151612e66565b905061225487604001515f8151811061222a5761222961691c565b5b602002602001015133835f815181106122465761224561691c565b5b60200260200101518c612fa3565b612269898289602001518a6040015130614293565b9350838811156122b25787846040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016122a992919061632c565b60405180910390fd5b6122bc8685613613565b50505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663e77366f886866040518363ffffffff1660e01b8152600401612306929190616b9d565b606060405180830381865afa158015612321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123459190616bd8565b80935081945082955050505093509350939050565b5f805f806060805f612396885f0160208101906123779190616b12565b89602001602081019061238a9190616b12565b8a6040013560036148c0565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124059190616ae7565b73ffffffffffffffffffffffffffffffffffffffff16885f01602081019061242d9190616b12565b73ffffffffffffffffffffffffffffffffffffffff161461247a576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61249b885f01602081019061248f9190616b12565b33838b60600135612fa3565b6124bd8860200160208101906124b19190616b12565b33838b60800135612fa3565b6124c78882614d49565b809750819850829950839a50849b50859c505050505050505091939550919395565b5f81804211156125325780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161252992919061632c565b60405180910390fd5b845f815f015151148061254e5750805f01515181602001515114155b8061256e57508060400151516001825f01515161256b91906168e9565b14155b156125a5576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f815181106125f3576125f261691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146126715785604001515f8151811061262d5761262c61691c565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016126689190616958565b60405180910390fd5b5f612688875f015188602001518960400151612e66565b90506126ae815f815181106126a05761269f61691c565b5b602002602001015134613c09565b6126c3348289602001518a604001518a614293565b93508388111561270c5787846040517f4feac00c00000000000000000000000000000000000000000000000000000000815260040161270392919061632c565b60405180910390fd5b505050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f8082804211156127af5780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016127a692919061632c565b60405180910390fd5b5f6127c18d8d8d61ffff1660036148c0565b90505f8173ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128319190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614159050801561287357898b809b50819c5050505b612881828c8c8c8c8c614b87565b8095508196505050801561289a57838580955081965050505b505050995099975050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16634c7cffbd836040518263ffffffff1660e01b81526004016128e591906168a3565b602060405180830381865afa158015612900573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129249190616985565b905092915050565b5f81804211156129755780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161296c92919061632c565b60405180910390fd5b845f815f01515114806129915750805f01515181602001515114155b806129b157508060400151516001825f0151516129ae91906168e9565b14155b156129e8576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612a3657612a3561691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612ab45785604001515f81518110612a7057612a6f61691c565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401612aab9190616958565b60405180910390fd5b5f612acb875f015188602001518960400151612e66565b90505f8760400151825181518110612ae657612ae561691c565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612b2a9190616958565b602060405180830381865afa158015612b45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b699190616985565b9050612b8f835f81518110612b8157612b8061691c565b5b602002602001015134613c09565b612ba3838a602001518b604001518b612fdf565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401612bdd9190616958565b602060405180830381865afa158015612bf8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c1c9190616985565b612c2691906169b0565b9550858a1115612c6f5789866040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612c6692919061632c565b60405180910390fd5b5050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0991906169f7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d6d576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166317fad7fc3087878787876040518763ffffffff1660e01b8152600401612db096959493929190616c90565b5f604051808303815f87803b158015612dc7575f80fd5b505af1158015612dd9573d5f803e3d5ffd5b50505050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663f5e29329836040518263ffffffff1660e01b8152600401612e1f9190615dd4565b602060405180830381865afa158015612e3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e5e9190616cf9565b905092915050565b6060835167ffffffffffffffff811115612e8357612e826158f0565b5b604051908082528060200260200182016040528015612eb15781602001602082028036833780820191505090505b5090505f80835f81518110612ec957612ec861691c565b5b602002602001015190505f5b8351811015612f9957819250846001820181518110612ef757612ef661691c565b5b60200260200101519150612f418383898481518110612f1957612f1861691c565b5b6020026020010151898581518110612f3457612f3361691c565b5b6020026020010151615321565b848281518110612f5457612f5361691c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050612ed5565b5050509392505050565b5f810315612fd957612fd88383838773ffffffffffffffffffffffffffffffffffffffff16615479909392919063ffffffff16565b5b50505050565b5f805f805f865f81518110612ff757612ff661691c565b5b602002602001015190505f5b89518110156136075789818151811061301f5761301e61691c565b5b6020026020010151925088818151811061303c5761303b61691c565b5b6020026020010151945081955087600182018151811061305f5761305e61691c565b5b60200260200101519150895160018201146130975789600182018151811061308a5761308961691c565b5b6020026020010151613099565b865b93505f60038111156130ae576130ad616d24565b5b8560038111156130c1576130c0616d24565b5b0361339d575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613111573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131359190616dcd565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161015613294575f828973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016131c99190616958565b602060405180830381865afa1580156131e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132089190616985565b0390505f6132218484846155079092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f838b6040518463ffffffff1660e01b815260040161326093929190616e89565b5f604051808303815f87803b158015613277575f80fd5b505af1158015613289573d5f803e3d5ffd5b505050505050613396565b5f818973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016132cf9190616958565b602060405180830381865afa1580156132ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061330e9190616985565b0390505f6133278385846155079092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f825f8b6040518463ffffffff1660e01b815260040161336693929190616ed1565b5f604051808303815f87803b15801561337d575f80fd5b505af115801561338f573d5f803e3d5ffd5b5050505050505b50506135fc565b600160038111156133b1576133b0616d24565b5b8560038111156133c4576133c3616d24565b5b036134e4578273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561342e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134529190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b815260040161349e929190616f19565b60408051808303815f875af11580156134b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134dd9190616f40565b50506135fb565b8273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613549573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061356d9190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b81526004016135b9929190616f19565b6020604051808303815f875af11580156135d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135f99190616fb1565b505b5b806001019050613003565b50505050505050505050565b5f8103156136ac577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016136749190615dd4565b5f604051808303815f87803b15801561368b575f80fd5b505af115801561369d573d5f803e3d5ffd5b505050506136ab82826141d9565b5b5050565b6060825167ffffffffffffffff8111156136cd576136cc6158f0565b5b6040519080825280602002602001820160405280156136fb5781602001602082028036833780820191505090505b50905081818551815181106137135761371261691c565b5b6020026020010181815250505f845190505b5f8114613c00575f8460018361373b91906169b0565b8151811061374c5761374b61691c565b5b602002602001015190505f8760018461376591906169b0565b815181106137765761377561691c565b5b602002602001015190505f8760018561378f91906169b0565b815181106137a05761379f61691c565b5b602002602001015190505f60038111156137bd576137bc616d24565b5b8260038111156137d0576137cf616d24565b5b0361393a575f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613820573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138449190616dcd565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915088868151811061387c5761387b61691c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156138c257808280925081935050505b5f8787815181106138d6576138d561691c565b5b602002602001015190506138f58383836155d99092919063ffffffff16565b6fffffffffffffffffffffffffffffffff168860018961391591906169b0565b815181106139265761392561691c565b5b602002602001018181525050505050613bea565b6001600381111561394e5761394d616d24565b5b82600381111561396157613960616d24565b5b03613ae6577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635bdd4b7c828787815181106139b6576139b561691c565b5b60200260200101518673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166316dc165b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a429190616ae7565b73ffffffffffffffffffffffffffffffffffffffff16146040518463ffffffff1660e01b8152600401613a779392919061702c565b6040805180830381865afa158015613a91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ab59190616f40565b5085600186613ac491906169b0565b81518110613ad557613ad461691c565b5b602002602001018181525050613be9565b613ba581868681518110613afd57613afc61691c565b5b60200260200101518573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b899190616ae7565b73ffffffffffffffffffffffffffffffffffffffff1614611fd5565b826fffffffffffffffffffffffffffffffff16925090505085600186613bcb91906169b0565b81518110613bdc57613bdb61691c565b5b6020026020010181815250505b5b5050508080613bf890617061565b915050613725565b50949350505050565b5f810315613cda577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015613c77575f80fd5b505af1158015613c89573d5f803e3d5ffd5b5050505050613cd982827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166148359092919063ffffffff16565b5b5050565b5f805f805f80885f81518110613cf757613cf661691c565b5b602002602001015190505f5b8b518110156141ca578b8181518110613d1f57613d1e61691c565b5b602002602001015193508a8181518110613d3c57613d3b61691c565b5b60200260200101519250819550896001820181518110613d5f57613d5e61691c565b5b602002602001015191508b516001820114613d97578b6001820181518110613d8a57613d8961691c565b5b6020026020010151613d99565b875b94505f6003811115613dae57613dad616d24565b5b836003811115613dc157613dc0616d24565b5b03613ef957886001820181518110613ddc57613ddb61691c565b5b602002602001015196508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015613e89578373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f89886040518463ffffffff1660e01b8152600401613e5793929190616e89565b5f604051808303815f87803b158015613e6e575f80fd5b505af1158015613e80573d5f803e3d5ffd5b50505050613ef4565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f885f886040518463ffffffff1660e01b8152600401613ec693929190616ed1565b5f604051808303815f87803b158015613edd575f80fd5b505af1158015613eef573d5f803e3d5ffd5b505050505b6141bf565b60016003811115613f0d57613f0c616d24565b5b836003811115613f2057613f1f616d24565b5b0361405d575f8473ffffffffffffffffffffffffffffffffffffffff1663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f939190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f808673ffffffffffffffffffffffffffffffffffffffff166353c059a0848a6040518363ffffffff1660e01b8152600401614000929190616f19565b60408051808303815f875af115801561401b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061403f9190616f40565b91509150821561405157809950614055565b8199505b5050506141be565b5f8473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140cb9190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f806141808773ffffffffffffffffffffffffffffffffffffffff166353c059a0858b6040518363ffffffff1660e01b815260040161413b929190616f19565b6020604051808303815f875af1158015614157573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061417b9190616fb1565b6156b2565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff16915082156141b6578099506141ba565b8199505b5050505b5b806001019050613d03565b50505050505095945050505050565b5f81031561428f575f8273ffffffffffffffffffffffffffffffffffffffff1682604051614206906170b2565b5f6040518083038185875af1925050503d805f8114614240576040519150601f19603f3d011682016040523d82523d5f602084013e614245565b606091505b505090508061428d5782826040517f47b96f700000000000000000000000000000000000000000000000000000000081526004016142849291906170c6565b60405180910390fd5b505b5050565b5f805f805f80875f815181106142ac576142ab61691c565b5b602002602001015190508a95505f5b8a51811015614826578a81815181106142d7576142d661691c565b5b602002602001015192508981815181106142f4576142f361691c565b5b602002602001015194508195508860018201815181106143175761431661691c565b5b602002602001015191508a51600182011461434f578a60018201815181106143425761434161691c565b5b6020026020010151614351565b875b93505f600381111561436657614365616d24565b5b85600381111561437957614378616d24565b5b03614555575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156143c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143ed9190616dcd565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156144cc5761445b82828b6155079092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f8b896040518463ffffffff1660e01b815260040161449a93929190616e89565b5f604051808303815f87803b1580156144b1575f80fd5b505af11580156144c3573d5f803e3d5ffd5b5050505061454e565b6144e181838b6155079092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8a5f896040518463ffffffff1660e01b815260040161452093929190616ed1565b5f604051808303815f87803b158015614537575f80fd5b505af1158015614549573d5f803e3d5ffd5b505050505b505061481b565b6001600381111561456957614568616d24565b5b85600381111561457c5761457b616d24565b5b036146b9575f8373ffffffffffffffffffffffffffffffffffffffff1663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145ef9190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f808573ffffffffffffffffffffffffffffffffffffffff166353c059a084896040518363ffffffff1660e01b815260040161465c929190616f19565b60408051808303815f875af1158015614677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061469b9190616f40565b9150915082156146ad578099506146b1565b8199505b50505061481a565b5f8373ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614703573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147279190616ae7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f806147dc8673ffffffffffffffffffffffffffffffffffffffff166353c059a0858a6040518363ffffffff1660e01b8152600401614797929190616f19565b6020604051808303815f875af11580156147b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147d79190616fb1565b6156b2565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff169150821561481257809950614816565b8199505b5050505b5b8060010190506142bb565b50505050505095945050505050565b5f63a9059cbb60e01b83836040516024016148519291906170c6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506148ba84826156d4565b50505050565b5f600160038111156148d5576148d4616d24565b5b8260038111156148e8576148e7616d24565b5b03614994577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8686866040518463ffffffff1660e01b815260040161494a939291906170ed565b608060405180830381865afa158015614965573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061498991906171fa565b602001519050614b0b565b600260038111156149a8576149a7616d24565b5b8260038111156149bb576149ba616d24565b5b03614a67577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8686866040518463ffffffff1660e01b8152600401614a1d939291906170ed565b608060405180830381865afa158015614a38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a5c919061729a565b602001519050614b0a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8686866040518463ffffffff1660e01b8152600401614ac4939291906170ed565b608060405180830381865afa158015614adf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b03919061729a565b6020015190505b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614b7f578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401614b76939291906172c5565b60405180910390fd5b949350505050565b5f805f8873ffffffffffffffffffffffffffffffffffffffff1663c9939f5e338689896040518563ffffffff1660e01b8152600401614bc994939291906172fa565b5f604051808303815f875af1158015614be4573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190614c0c919061740b565b90505f5b8151811015614cae57614c3c828281518110614c2f57614c2e61691c565b5b602002602001015161575e565b6fffffffffffffffffffffffffffffffff1684614c5991906168e9565b9350614c7e828281518110614c7157614c7061691c565b5b6020026020010151615779565b6fffffffffffffffffffffffffffffffff1683614c9b91906168e9565b925080614ca790617452565b9050614c10565b5087831080614cbc57508682105b15614d0457878388846040517f3199f6ee000000000000000000000000000000000000000000000000000000008152600401614cfb9493929190617499565b60405180910390fd5b50965096945050505050565b5f810315614d4457614d4382828573ffffffffffffffffffffffffffffffffffffffff166148359092919063ffffffff16565b5b505050565b5f805f80606080876101c0013580421115614d9d5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401614d9492919061632c565b60405180910390fd5b88806101400190614dae91906174e8565b905089806101200190614dc1919061754a565b9050141580614df4575088806101600190614ddc91906174e8565b905089806101200190614def919061754a565b905014155b15614e2b576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62ffffff80168960e001351180614e4b575062ffffff8016896101000135115b15614e98578860e001358961010001356040517f32f4ab8e000000000000000000000000000000000000000000000000000000008152600401614e8f92919061632c565b60405180910390fd5b5f89806101200190614eaa919061754a565b905067ffffffffffffffff811115614ec557614ec46158f0565b5b604051908082528060200260200182016040528015614ef35781602001602082028036833780820191505090505b50905089806101200190614f07919061754a565b905067ffffffffffffffff811115614f2257614f216158f0565b5b604051908082528060200260200182016040528015614f505781602001602082028036833780820191505090505b5093505f8973ffffffffffffffffffffffffffffffffffffffff1663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614f9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614fc19190616cf9565b62ffffff169050808b61010001358c60e00135011080614feb57508a60e001358b61010001358201105b1561503a578a60e001358b6101000135826040517ffaa1db56000000000000000000000000000000000000000000000000000000008152600401615031939291906175ac565b60405180910390fd5b5f5b825181101561516d575f8c806101200190615057919061754a565b838181106150685761506761691c565b5b90506020020135830190505f811280615085575062ffffff801681115b156150c757806040517fe1505cc20000000000000000000000000000000000000000000000000000000081526004016150be91906175f9565b60405180910390fd5b808783815181106150db576150da61691c565b5b6020026020010181815250506151428d8061014001906150fb91906174e8565b8481811061510c5761510b61691c565b5b905060200201358e80610160019061512491906174e8565b858181106151355761513461691c565b5b9050602002013583615785565b8483815181106151555761515461691c565b5b6020026020010181815250505080600101905061503c565b50505f808a73ffffffffffffffffffffffffffffffffffffffff1663383d15c58d6101800160208101906151a19190617612565b858f6101a00160208101906151b69190617612565b6040518463ffffffff1660e01b81526004016151d4939291906176f4565b5f604051808303815f875af11580156151ef573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061521791906177c5565b8097508193508294505050505f615237828461580690919063ffffffff16565b90506152428161575e565b6fffffffffffffffffffffffffffffffff169a5061525f81615779565b6fffffffffffffffffffffffffffffffff1699508c60a001358b108061528857508c60c001358a105b156152d8578c60a001358b8e60c001358c6040517f3199f6ee0000000000000000000000000000000000000000000000000000000081526004016152cf9493929190617499565b60405180910390fd5b6152e18261575e565b6fffffffffffffffffffffffffffffffff1698506152fe82615779565b6fffffffffffffffffffffffffffffffff16975050505050509295509295509295565b5f80600381111561533557615334616d24565b5b82600381111561534857615347616d24565b5b03615462577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b81526004016153a8929190617831565b602060405180830381865afa1580156153c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906153e791906169f7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361545d578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401615454939291906172c5565b60405180910390fd5b615471565b61546e858585856148c0565b90505b949350505050565b5f6323b872dd60e01b848484604051602401615497939291906172c5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905061550085826156d4565b5050505050565b5f808403615541576040517fb229ed3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83148061554e57505f82145b15615585576040517f98c59a2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e5856155949190617858565b90505f83826155a39190617858565b90505f826103e8876155b59190617858565b6155bf91906168e9565b905080826155cd91906178c6565b93505050509392505050565b5f808403615613576040517fb229ed3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83148061562057505f82145b15615657576040517f98c59a2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e885856156679190617858565b6156719190617858565b90505f6103e5868561568391906169b0565b61568d9190617858565b90506001818361569d91906178c6565b6156a791906168e9565b925050509392505050565b5f806fffffffffffffffffffffffffffffffff831691508260801c9050915091565b5f805f5260205f8351602085015f875af19050805f8114615712573d5f81146157055760015f51148316925061570c565b843b151592505b50615721565b3d15615720573d5f803e3d5ffd5b5b5080615759576040517f32e2717a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f8160801c9050919050565b5f6157b08467ffffffffffffffff1667ffffffffffffffff60588461587e909392919063ffffffff16565b90506157dc8367ffffffffffffffff1667ffffffffffffffff60188461587e909392919063ffffffff16565b90506157fd8262ffffff1662ffffff5f8461587e909392919063ffffffff16565b90509392505050565b5f8183039050828111806158415750825f1c6fffffffffffffffffffffffffffffffff16815f1c6fffffffffffffffffffffffffffffffff16115b15615878576040517fe599af5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6158bb816158a9565b81146158c5575f80fd5b50565b5f813590506158d6816158b2565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b615926826158e0565b810181811067ffffffffffffffff82111715615945576159446158f0565b5b80604052505050565b5f615957615898565b9050615963828261591d565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561598a576159896158f0565b5b602082029050602081019050919050565b5f80fd5b5f6159b16159ac84615970565b61594e565b905080838252602082019050602084028301858111156159d4576159d361599b565b5b835b818110156159fd57806159e988826158c8565b8452602084019350506020810190506159d6565b5050509392505050565b5f82601f830112615a1b57615a1a61596c565b5b8135615a2b84826020860161599f565b91505092915050565b5f67ffffffffffffffff821115615a4e57615a4d6158f0565b5b602082029050602081019050919050565b60048110615a6b575f80fd5b50565b5f81359050615a7c81615a5f565b92915050565b5f615a94615a8f84615a34565b61594e565b90508083825260208201905060208402830185811115615ab757615ab661599b565b5b835b81811015615ae05780615acc8882615a6e565b845260208401935050602081019050615ab9565b5050509392505050565b5f82601f830112615afe57615afd61596c565b5b8135615b0e848260208601615a82565b91505092915050565b5f67ffffffffffffffff821115615b3157615b306158f0565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f615b6b82615b42565b9050919050565b5f615b7c82615b61565b9050919050565b615b8c81615b72565b8114615b96575f80fd5b50565b5f81359050615ba781615b83565b92915050565b5f615bbf615bba84615b17565b61594e565b90508083825260208201905060208402830185811115615be257615be161599b565b5b835b81811015615c0b5780615bf78882615b99565b845260208401935050602081019050615be4565b5050509392505050565b5f82601f830112615c2957615c2861596c565b5b8135615c39848260208601615bad565b91505092915050565b5f60608284031215615c5757615c566158dc565b5b615c61606061594e565b90505f82013567ffffffffffffffff811115615c8057615c7f615968565b5b615c8c84828501615a07565b5f83015250602082013567ffffffffffffffff811115615caf57615cae615968565b5b615cbb84828501615aea565b602083015250604082013567ffffffffffffffff811115615cdf57615cde615968565b5b615ceb84828501615c15565b60408301525092915050565b5f615d0182615b42565b9050919050565b615d1181615cf7565b8114615d1b575f80fd5b50565b5f81359050615d2c81615d08565b92915050565b5f805f805f60a08688031215615d4b57615d4a6158a1565b5b5f615d58888289016158c8565b9550506020615d69888289016158c8565b945050604086013567ffffffffffffffff811115615d8a57615d896158a5565b5b615d9688828901615c42565b9350506060615da788828901615d1e565b9250506080615db8888289016158c8565b9150509295509295909350565b615dce816158a9565b82525050565b5f602082019050615de75f830184615dc5565b92915050565b615df681615b61565b8114615e00575f80fd5b50565b5f81359050615e1181615ded565b92915050565b5f805f8060808587031215615e2f57615e2e6158a1565b5b5f615e3c878288016158c8565b945050602085013567ffffffffffffffff811115615e5d57615e5c6158a5565b5b615e6987828801615c42565b9350506040615e7a87828801615e03565b9250506060615e8b878288016158c8565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615ec9816158a9565b82525050565b5f615eda8383615ec0565b60208301905092915050565b5f602082019050919050565b5f615efc82615e97565b615f068185615ea1565b9350615f1183615eb1565b805f5b83811015615f41578151615f288882615ecf565b9750615f3383615ee6565b925050600181019050615f14565b5085935050505092915050565b5f6020820190508181035f830152615f668184615ef2565b905092915050565b5f805f805f60a08688031215615f8757615f866158a1565b5b5f615f94888289016158c8565b9550506020615fa5888289016158c8565b945050604086013567ffffffffffffffff811115615fc657615fc56158a5565b5b615fd288828901615c42565b9350506060615fe388828901615e03565b9250506080615ff4888289016158c8565b9150509295509295909350565b5f819050919050565b5f61602461601f61601a84615b42565b616001565b615b42565b9050919050565b5f6160358261600a565b9050919050565b5f6160468261602b565b9050919050565b6160568161603c565b82525050565b5f60208201905061606f5f83018461604d565b92915050565b5f805f6060848603121561608c5761608b6158a1565b5b5f61609986828701615b99565b93505060206160aa86828701615e03565b92505060406160bb868287016158c8565b9150509250925092565b5f62ffffff82169050919050565b6160dc816160c5565b81146160e6575f80fd5b50565b5f813590506160f7816160d3565b92915050565b5f61ffff82169050919050565b616113816160fd565b811461611d575f80fd5b50565b5f8135905061612e8161610a565b92915050565b5f805f806080858703121561614c5761614b6158a1565b5b5f61615987828801615b99565b945050602061616a87828801615b99565b935050604061617b878288016160e9565b925050606061618c87828801616120565b91505092959194509250565b5f6161a28261602b565b9050919050565b6161b281616198565b82525050565b5f6020820190506161cb5f8301846161a9565b92915050565b5f6161db8261602b565b9050919050565b6161eb816161d1565b82525050565b5f6020820190506162045f8301846161e2565b92915050565b5f6162148261602b565b9050919050565b6162248161620a565b82525050565b5f60208201905061623d5f83018461621b565b92915050565b5f805f805f805f80610100898b0312156162605761625f6158a1565b5b5f61626d8b828c01615b99565b985050602061627e8b828c01616120565b975050604061628f8b828c016158c8565b96505060606162a08b828c016158c8565b955050608089013567ffffffffffffffff8111156162c1576162c06158a5565b5b6162cd8b828c01615a07565b94505060a089013567ffffffffffffffff8111156162ee576162ed6158a5565b5b6162fa8b828c01615a07565b93505060c061630b8b828c01615d1e565b92505060e061631c8b828c016158c8565b9150509295985092959890939650565b5f60408201905061633f5f830185615dc5565b61634c6020830184615dc5565b9392505050565b5f80fd5b5f6101e0828403121561636d5761636c616353565b5b81905092915050565b5f6020828403121561638b5761638a6158a1565b5b5f82013567ffffffffffffffff8111156163a8576163a76158a5565b5b6163b484828501616357565b91505092915050565b5f60c0820190506163d05f830189615dc5565b6163dd6020830188615dc5565b6163ea6040830187615dc5565b6163f76060830186615dc5565b81810360808301526164098185615ef2565b905081810360a083015261641d8184615ef2565b9050979650505050505050565b5f61643482615b61565b9050919050565b6164448161642a565b811461644e575f80fd5b50565b5f8135905061645f8161643b565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61648981616465565b8114616493575f80fd5b50565b5f813590506164a481616480565b92915050565b5f8115159050919050565b6164be816164aa565b81146164c8575f80fd5b50565b5f813590506164d9816164b5565b92915050565b5f805f606084860312156164f6576164f56158a1565b5b5f61650386828701616451565b935050602061651486828701616496565b9250506040616525868287016164cb565b9150509250925092565b61653881616465565b82525050565b5f6060820190506165515f83018661652f565b61655e602083018561652f565b61656b604083018461652f565b949350505050565b5f61657d8261602b565b9050919050565b61658d81616573565b82525050565b5f6020820190506165a65f830184616584565b92915050565b5f6165b68261602b565b9050919050565b6165c6816165ac565b82525050565b5f6020820190506165df5f8301846165bd565b92915050565b5f805f805f805f805f6101208a8c031215616603576166026158a1565b5b5f6166108c828d01615b99565b99505060206166218c828d01615b99565b98505060406166328c828d01616120565b97505060606166438c828d016158c8565b96505060806166548c828d016158c8565b95505060a08a013567ffffffffffffffff811115616675576166746158a5565b5b6166818c828d01615a07565b94505060c08a013567ffffffffffffffff8111156166a2576166a16158a5565b5b6166ae8c828d01615a07565b93505060e06166bf8c828d01615e03565b9250506101006166d18c828d016158c8565b9150509295985092959850929598565b5f80604083850312156166f7576166f66158a1565b5b5f61670485828601616451565b9250506020616715858286016160e9565b9150509250929050565b5f61672982615b61565b9050919050565b6167398161671f565b8114616743575f80fd5b50565b5f8135905061675481616730565b92915050565b5f80fd5b5f8083601f8401126167735761677261596c565b5b8235905067ffffffffffffffff8111156167905761678f61675a565b5b6020830191508360208202830111156167ac576167ab61599b565b5b9250929050565b5f805f805f80608087890312156167cd576167cc6158a1565b5b5f6167da89828a01616746565b96505060206167eb89828a01615e03565b955050604087013567ffffffffffffffff81111561680c5761680b6158a5565b5b61681889828a0161675e565b9450945050606087013567ffffffffffffffff81111561683b5761683a6158a5565b5b61684789828a0161675e565b92509250509295509295509295565b5f806040838503121561686c5761686b6158a1565b5b5f61687985828601616451565b925050602061688a858286016158c8565b9150509250929050565b61689d816160c5565b82525050565b5f6020820190506168b65f830184616894565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6168f3826158a9565b91506168fe836158a9565b9250828201905080821115616916576169156168bc565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61695281615b61565b82525050565b5f60208201905061696b5f830184616949565b92915050565b5f8151905061697f816158b2565b92915050565b5f6020828403121561699a576169996158a1565b5b5f6169a784828501616971565b91505092915050565b5f6169ba826158a9565b91506169c5836158a9565b92508282039050818111156169dd576169dc6168bc565b5b92915050565b5f815190506169f181615ded565b92915050565b5f60208284031215616a0c57616a0b6158a1565b5b5f616a19848285016169e3565b91505092915050565b5f616a2c8261602b565b9050919050565b616a3c81616a22565b82525050565b616a4b816160fd565b82525050565b5f608082019050616a645f830187616a33565b616a716020830186616a33565b616a7e6040830185616894565b616a8b6060830184616a42565b95945050505050565b5f81519050616aa28161643b565b92915050565b5f60208284031215616abd57616abc6158a1565b5b5f616aca84828501616a94565b91505092915050565b5f81519050616ae181615b83565b92915050565b5f60208284031215616afc57616afb6158a1565b5b5f616b0984828501616ad3565b91505092915050565b5f60208284031215616b2757616b266158a1565b5b5f616b3484828501615b99565b91505092915050565b5f60a082019050616b505f830188616949565b616b5d6020830187616949565b616b6a6040830186615dc5565b616b776060830185615dc5565b616b846080830184615dc5565b9695505050505050565b616b97816164aa565b82525050565b5f604082019050616bb05f83018561652f565b616bbd6020830184616b8e565b9392505050565b5f81519050616bd281616480565b92915050565b5f805f60608486031215616bef57616bee6158a1565b5b5f616bfc86828701616bc4565b9350506020616c0d86828701616bc4565b9250506040616c1e86828701616bc4565b9150509250925092565b5f80fd5b82818337505050565b5f616c408385615ea1565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115616c7357616c72616c28565b5b602083029250616c84838584616c2c565b82840190509392505050565b5f608082019050616ca35f830189616949565b616cb06020830188616949565b8181036040830152616cc3818688616c35565b90508181036060830152616cd8818486616c35565b9050979650505050505050565b5f81519050616cf3816160d3565b92915050565b5f60208284031215616d0e57616d0d6158a1565b5b5f616d1b84828501616ce5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6dffffffffffffffffffffffffffff82169050919050565b616d7381616d51565b8114616d7d575f80fd5b50565b5f81519050616d8e81616d6a565b92915050565b5f63ffffffff82169050919050565b616dac81616d94565b8114616db6575f80fd5b50565b5f81519050616dc781616da3565b92915050565b5f805f60608486031215616de457616de36158a1565b5b5f616df186828701616d80565b9350506020616e0286828701616d80565b9250506040616e1386828701616db9565b9150509250925092565b5f819050919050565b5f616e40616e3b616e3684616e1d565b616001565b6158a9565b9050919050565b616e5081616e26565b82525050565b5f82825260208201905092915050565b50565b5f616e745f83616e56565b9150616e7f82616e66565b5f82019050919050565b5f608082019050616e9c5f830186616e47565b616ea96020830185615dc5565b616eb66040830184616949565b8181036060830152616ec781616e69565b9050949350505050565b5f608082019050616ee45f830186615dc5565b616ef16020830185616e47565b616efe6040830184616949565b8181036060830152616f0f81616e69565b9050949350505050565b5f604082019050616f2c5f830185616b8e565b616f396020830184616949565b9392505050565b5f8060408385031215616f5657616f556158a1565b5b5f616f6385828601616971565b9250506020616f7485828601616971565b9150509250929050565b5f819050919050565b616f9081616f7e565b8114616f9a575f80fd5b50565b5f81519050616fab81616f87565b92915050565b5f60208284031215616fc657616fc56158a1565b5b5f616fd384828501616f9d565b91505092915050565b5f616fe68261602b565b9050919050565b616ff681616fdc565b82525050565b5f61701661701161700c84616465565b616001565b6158a9565b9050919050565b61702681616ffc565b82525050565b5f60608201905061703f5f830186616fed565b61704c602083018561701d565b6170596040830184616b8e565b949350505050565b5f61706b826158a9565b91505f820361707d5761707c6168bc565b5b600182039050919050565b5f81905092915050565b5f61709d5f83617088565b91506170a882616e66565b5f82019050919050565b5f6170bc82617092565b9150819050919050565b5f6040820190506170d95f830185616949565b6170e66020830184615dc5565b9392505050565b5f6060820190506171005f830186616a33565b61710d6020830185616a33565b61711a6040830184615dc5565b949350505050565b5f815190506171308161610a565b92915050565b5f61714082615b61565b9050919050565b61715081617136565b811461715a575f80fd5b50565b5f8151905061716b81617147565b92915050565b5f8151905061717f816164b5565b92915050565b5f6080828403121561719a576171996158dc565b5b6171a4608061594e565b90505f6171b384828501617122565b5f8301525060206171c68482850161715d565b60208301525060406171da84828501617171565b60408301525060606171ee84828501617171565b60608301525092915050565b5f6080828403121561720f5761720e6158a1565b5b5f61721c84828501617185565b91505092915050565b5f6080828403121561723a576172396158dc565b5b617244608061594e565b90505f61725384828501617122565b5f83015250602061726684828501616a94565b602083015250604061727a84828501617171565b604083015250606061728e84828501617171565b60608301525092915050565b5f608082840312156172af576172ae6158a1565b5b5f6172bc84828501617225565b91505092915050565b5f6060820190506172d85f830186616949565b6172e56020830185616949565b6172f26040830184615dc5565b949350505050565b5f60808201905061730d5f830187616949565b61731a6020830186616949565b818103604083015261732c8185615ef2565b905081810360608301526173408184615ef2565b905095945050505050565b5f67ffffffffffffffff821115617365576173646158f0565b5b602082029050602081019050919050565b5f6173886173838461734b565b61594e565b905080838252602082019050602084028301858111156173ab576173aa61599b565b5b835b818110156173d457806173c08882616f9d565b8452602084019350506020810190506173ad565b5050509392505050565b5f82601f8301126173f2576173f161596c565b5b8151617402848260208601617376565b91505092915050565b5f602082840312156174205761741f6158a1565b5b5f82015167ffffffffffffffff81111561743d5761743c6158a5565b5b617449848285016173de565b91505092915050565b5f61745c826158a9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361748e5761748d6168bc565b5b600182019050919050565b5f6080820190506174ac5f830187615dc5565b6174b96020830186615dc5565b6174c66040830185615dc5565b6174d36060830184615dc5565b95945050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112617504576175036174dc565b5b80840192508235915067ffffffffffffffff821115617526576175256174e0565b5b602083019250602082023603831315617542576175416174e4565b5b509250929050565b5f8083356001602003843603038112617566576175656174dc565b5b80840192508235915067ffffffffffffffff821115617588576175876174e0565b5b6020830192506020820236038313156175a4576175a36174e4565b5b509250929050565b5f6060820190506175bf5f830186615dc5565b6175cc6020830185615dc5565b6175d96040830184615dc5565b949350505050565b5f819050919050565b6175f3816175e1565b82525050565b5f60208201905061760c5f8301846175ea565b92915050565b5f60208284031215617627576176266158a1565b5b5f61763484828501615e03565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61766f81616f7e565b82525050565b5f6176808383617666565b60208301905092915050565b5f602082019050919050565b5f6176a28261763d565b6176ac8185617647565b93506176b783617657565b805f5b838110156176e75781516176ce8882617675565b97506176d98361768c565b9250506001810190506176ba565b5085935050505092915050565b5f6060820190506177075f830186616949565b81810360208301526177198185617698565b90506177286040830184616949565b949350505050565b5f61774261773d84615970565b61594e565b905080838252602082019050602084028301858111156177655761776461599b565b5b835b8181101561778e578061777a8882616971565b845260208401935050602081019050617767565b5050509392505050565b5f82601f8301126177ac576177ab61596c565b5b81516177bc848260208601617730565b91505092915050565b5f805f606084860312156177dc576177db6158a1565b5b5f6177e986828701616f9d565b93505060206177fa86828701616f9d565b925050604084015167ffffffffffffffff81111561781b5761781a6158a5565b5b61782786828701617798565b9150509250925092565b5f6040820190506178445f830185616949565b6178516020830184616949565b9392505050565b5f617862826158a9565b915061786d836158a9565b925082820261787b816158a9565b91508282048414831517617892576178916168bc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6178d0826158a9565b91506178db836158a9565b9250826178eb576178ea617899565b5b82820490509291505056fea264697066735822122015ff779b1f3e06be3f48b2be62e5423313c5f815fb176a2fd491fea47135ef0b64736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x184 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92FE8E70 GT PUSH2 0xD0 JUMPI DUP1 PUSH4 0xBA846523 GT PUSH2 0x89 JUMPI DUP1 PUSH4 0xD0E380F2 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xD0E380F2 EQ PUSH2 0x6A8 JUMPI DUP1 PUSH4 0xE038E6DC EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0xE9361C08 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xF96FE925 EQ PUSH2 0x73C JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0xBA846523 EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xBB558A9F EQ PUSH2 0x641 JUMPI DUP1 PUSH4 0xC22159B6 EQ PUSH2 0x66B JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x92FE8E70 EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0x964F987C EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0x9AB6156B EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0xA0D376CF EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0xA3C7271A EQ PUSH2 0x5A6 JUMPI DUP1 PUSH4 0xB066EA7C EQ PUSH2 0x5E7 JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x62C06767 GT PUSH2 0x13D JUMPI DUP1 PUSH4 0x71D1974A GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x71D1974A EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x81C2FDFB EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0x8EFC2B2C EQ PUSH2 0x47D JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x62C06767 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x3C2 JUMPI PUSH2 0x210 JUMP JUMPDEST DUP1 PUSH4 0x1A24F9A9 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x2075AD22 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x2A443FAE EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x3DC8F8EC EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x4B801870 EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x5C5035CB EQ PUSH2 0x334 JUMPI PUSH2 0x210 JUMP JUMPDEST CALLDATASIZE PUSH2 0x210 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x20E JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C8CB79300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x235 SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH2 0x778 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x247 SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x265 SWAP2 SWAP1 PUSH2 0x5E17 JUMP JUMPDEST PUSH2 0xB17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x277 SWAP2 SWAP1 PUSH2 0x5F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x5F6E JUMP JUMPDEST PUSH2 0xE45 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DD SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH2 0xFC8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2EF SWAP2 SWAP1 PUSH2 0x5F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x31E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x5F6E JUMP JUMPDEST PUSH2 0x12D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x348 PUSH2 0x157C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x355 SWAP2 SWAP1 PUSH2 0x605C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x384 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37F SWAP2 SWAP1 PUSH2 0x6075 JUMP JUMPDEST PUSH2 0x15A3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x391 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3A7 SWAP2 SWAP1 PUSH2 0x6134 JUMP JUMPDEST PUSH2 0x17E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0x61B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D6 PUSH2 0x188A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E3 SWAP2 SWAP1 PUSH2 0x61F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x400 PUSH2 0x18B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x40D SWAP2 SWAP1 PUSH2 0x622A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x43C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x437 SWAP2 SWAP1 PUSH2 0x6243 JUMP JUMPDEST PUSH2 0x18D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x44A SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x467 PUSH2 0x1A76 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x474 SWAP2 SWAP1 PUSH2 0x605C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x492 SWAP2 SWAP1 PUSH2 0x6376 JUMP JUMPDEST PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A9 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x63BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D3 SWAP2 SWAP1 PUSH2 0x5F6E JUMP JUMPDEST PUSH2 0x1DA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E5 SWAP2 SWAP1 PUSH2 0x5F4E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x514 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x50F SWAP2 SWAP1 PUSH2 0x64DF JUMP JUMPDEST PUSH2 0x1FD5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x523 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x653E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x537 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x5D32 JUMP JUMPDEST PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x55F SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x573 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x58E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x589 SWAP2 SWAP1 PUSH2 0x64DF JUMP JUMPDEST PUSH2 0x22C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x59D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x653E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5C7 SWAP2 SWAP1 PUSH2 0x6376 JUMP JUMPDEST PUSH2 0x235A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5DE SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x63BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x601 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5FC SWAP2 SWAP1 PUSH2 0x5E17 JUMP JUMPDEST PUSH2 0x24E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x60E SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x622 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x62B PUSH2 0x2717 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x638 SWAP2 SWAP1 PUSH2 0x6593 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x655 PUSH2 0x273E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x662 SWAP2 SWAP1 PUSH2 0x65CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x676 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x691 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x68C SWAP2 SWAP1 PUSH2 0x65E5 JUMP JUMPDEST PUSH2 0x2765 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x69F SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6CE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0x66E1 JUMP JUMPDEST PUSH2 0x28AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6DB SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6FE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F9 SWAP2 SWAP1 PUSH2 0x5E17 JUMP JUMPDEST PUSH2 0x292C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x70B SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x73A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x735 SWAP2 SWAP1 PUSH2 0x67B3 JUMP JUMPDEST PUSH2 0x2C7C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x747 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x762 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x75D SWAP2 SWAP1 PUSH2 0x6856 JUMP JUMPDEST PUSH2 0x2DE5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x76F SWAP2 SWAP1 PUSH2 0x68A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x7C1 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B8 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x7DD JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x7FD JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x7FA SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x834 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x886 JUMPI PUSH2 0x885 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x908 JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x8C4 JUMPI PUSH2 0x8C3 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8FF SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x91F DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x97B SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x996 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BA SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP PUSH2 0xA00 DUP9 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x9D6 JUMPI PUSH2 0x9D5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x9F2 JUMPI PUSH2 0x9F1 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0xA14 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x2FDF JUMP JUMPDEST DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA6E SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA89 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAAD SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST PUSH2 0xAB7 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST SWAP5 POP DUP5 DUP10 GT ISZERO PUSH2 0xB00 JUMPI DUP9 DUP6 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAF7 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB0A DUP8 DUP7 PUSH2 0x3613 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xB61 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB58 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xB7D JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xB9D JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xB9A SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xBD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC22 JUMPI PUSH2 0xC21 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xCA0 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC5C JUMPI PUSH2 0xC5B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC97 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xCB7 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x36B0 JUMP JUMPDEST SWAP4 POP CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCE3 JUMPI PUSH2 0xCE2 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xD4A JUMPI CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD05 JUMPI PUSH2 0xD04 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD41 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD88 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD60 JUMPI PUSH2 0xD5F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD7B JUMPI PUSH2 0xD7A PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3C09 JUMP JUMPDEST PUSH0 PUSH2 0xD9E DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3CDE JUMP JUMPDEST SWAP1 POP DUP9 DUP2 LT ISZERO PUSH2 0xDE7 JUMPI DUP9 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDDE SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xDFA JUMPI PUSH2 0xDF9 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0xE39 JUMPI PUSH2 0xE38 CALLER DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xE20 JUMPI PUSH2 0xE1F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0xE33 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST PUSH2 0x41D9 JUMP JUMPDEST JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xE8E JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE85 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xEAA JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xECA JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xEC7 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xF01 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xF18 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0xF5E DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xF34 JUMPI PUSH2 0xF33 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xF50 JUMPI PUSH2 0xF4F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0xF73 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x4293 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0xFBC JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFB3 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1012 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1009 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x102E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x104E JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x104B SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1085 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x10D7 JUMPI PUSH2 0x10D6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1159 JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1115 JUMPI PUSH2 0x1114 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1150 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1170 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x1186 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x36B0 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x119C JUMPI PUSH2 0x119B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1203 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x11BE JUMPI PUSH2 0x11BD PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11FA SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1261 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x121D JUMPI PUSH2 0x121C PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1239 JUMPI PUSH2 0x1238 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1254 JUMPI PUSH2 0x1253 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH0 PUSH2 0x1277 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 ADDRESS PUSH2 0x3CDE JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x12C0 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12B7 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12CA DUP8 DUP3 PUSH2 0x3613 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1320 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1317 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x133C JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x135C JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1359 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1393 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x13AA DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x13C5 JUMPI PUSH2 0x13C4 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1409 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1424 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1448 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP PUSH2 0x148E DUP10 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1464 JUMPI PUSH2 0x1463 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1480 JUMPI PUSH2 0x147F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x14A2 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x2FDF JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14DC SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x151B SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST PUSH2 0x1525 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x156E JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1565 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x160C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1630 SWAP2 SWAP1 PUSH2 0x69F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1694 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1707 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x16F4 JUMPI DUP1 PUSH2 0x16F6 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x1702 DUP3 DUP3 PUSH2 0x41D9 JUMP JUMPDEST PUSH2 0x17DB JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x1734 JUMPI DUP1 PUSH2 0x17AD JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x176D SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1788 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17AC SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x17DA DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4835 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x659AC74B DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1840 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A51 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x185C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1880 SWAP2 SWAP1 PUSH2 0x6AA8 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1922 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1919 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1954 DUP13 PUSH32 0x0 DUP14 PUSH2 0xFFFF AND PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19A0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C4 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP1 PUSH2 0x1A24 JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH0 DUP1 PUSH2 0x1A34 DUP5 DUP15 DUP15 DUP15 DUP15 ADDRESS PUSH2 0x4B87 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1A44 JUMPI DUP1 DUP3 PUSH2 0x1A47 JUMP JUMPDEST DUP2 DUP2 JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP POP POP POP POP POP PUSH2 0x1A5D DUP13 DUP8 DUP7 PUSH2 0x4D10 JUMP JUMPDEST PUSH2 0x1A67 DUP7 DUP5 PUSH2 0x3613 JUMP JUMPDEST POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x1AD9 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1ABA SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1ACD SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B24 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B48 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B70 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1BBD JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C06 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1C2C JUMPI POP CALLVALUE DUP9 PUSH1 0x60 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1C62 JUMPI PUSH2 0x1C53 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C47 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x1C5D DUP2 CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x1D78 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CAC SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1CD2 JUMPI POP CALLVALUE DUP9 PUSH1 0x80 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1D07 JUMPI PUSH2 0x1CF8 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CEC SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x1D02 DUP2 CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x1D77 JUMP JUMPDEST DUP8 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D19 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D2C SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP10 PUSH1 0x60 ADD CALLDATALOAD DUP11 PUSH1 0x80 ADD CALLDATALOAD CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xD0A4F13B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D6E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6B3D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x1D82 DUP9 DUP3 PUSH2 0x4D49 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1DEE JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DE5 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x1E0A JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x1E2A JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1E27 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E61 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E78 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E8E DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x36B0 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1EA4 JUMPI PUSH2 0x1EA3 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F0B JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1EC6 JUMPI PUSH2 0x1EC5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F02 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F69 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F25 JUMPI PUSH2 0x1F24 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F41 JUMPI PUSH2 0x1F40 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F5C JUMPI PUSH2 0x1F5B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH0 PUSH2 0x1F7F DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3CDE JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x1FC8 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FBF SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xABCD7830 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2013 SWAP3 SWAP2 SWAP1 PUSH2 0x6B9D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x202E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2052 SWAP2 SWAP1 PUSH2 0x6BD8 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x20B0 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20A7 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x20CC JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x20EC JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x20E9 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x2123 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2175 JUMPI PUSH2 0x2174 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x21F7 JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x21B3 JUMPI PUSH2 0x21B2 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21EE SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x220E DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x2254 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x222A JUMPI PUSH2 0x2229 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2246 JUMPI PUSH2 0x2245 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x2269 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x4293 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x22B2 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A9 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22BC DUP7 DUP6 PUSH2 0x3613 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE77366F8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2306 SWAP3 SWAP2 SWAP1 PUSH2 0x6B9D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2321 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2345 SWAP2 SWAP1 PUSH2 0x6BD8 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x2396 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2377 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x238A SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23E1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2405 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x242D SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x247A JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x249B DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x248F SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x24BD DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x24B1 SWAP2 SWAP1 PUSH2 0x6B12 JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FA3 JUMP JUMPDEST PUSH2 0x24C7 DUP9 DUP3 PUSH2 0x4D49 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2532 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2529 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x254E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x256E JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x256B SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x25F3 JUMPI PUSH2 0x25F2 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2671 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x262D JUMPI PUSH2 0x262C PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2668 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2688 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH2 0x26AE DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x26A0 JUMPI PUSH2 0x269F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x26C3 CALLVALUE DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x4293 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x270C JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2703 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x27AF JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x27A6 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x27C1 DUP14 DUP14 DUP14 PUSH2 0xFFFF AND PUSH1 0x3 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x280D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2831 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x2873 JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH2 0x2881 DUP3 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x4B87 JUMP JUMPDEST DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP DUP1 ISZERO PUSH2 0x289A JUMPI DUP4 DUP6 DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP JUMPDEST POP POP POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7CFFBD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28E5 SWAP2 SWAP1 PUSH2 0x68A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2900 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2924 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2975 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x296C SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x2991 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x29B1 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x29AE SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x29E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A36 JUMPI PUSH2 0x2A35 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2AB4 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A70 JUMPI PUSH2 0x2A6F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AAB SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2ACB DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2E66 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2AE6 JUMPI PUSH2 0x2AE5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B2A SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B45 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B69 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B8F DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2B81 JUMPI PUSH2 0x2B80 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3C09 JUMP JUMPDEST PUSH2 0x2BA3 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x2FDF JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BDD SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BF8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C1C SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST PUSH2 0x2C26 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x2C6F JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C66 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CE5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D09 SWAP2 SWAP1 PUSH2 0x69F7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2D6D JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17FAD7FC ADDRESS DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2DB0 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C90 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DC7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DD9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5E29329 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E1F SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E3A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E5E SWAP2 SWAP1 PUSH2 0x6CF9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E83 JUMPI PUSH2 0x2E82 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2EB1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 DUP1 DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2EC9 JUMPI PUSH2 0x2EC8 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2F99 JUMPI DUP2 SWAP3 POP DUP5 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2EF7 JUMPI PUSH2 0x2EF6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH2 0x2F41 DUP4 DUP4 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F19 JUMPI PUSH2 0x2F18 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2F34 JUMPI PUSH2 0x2F33 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5321 JUMP JUMPDEST DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F54 JUMPI PUSH2 0x2F53 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2ED5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x2FD9 JUMPI PUSH2 0x2FD8 DUP4 DUP4 DUP4 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5479 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2FF7 JUMPI PUSH2 0x2FF6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x3607 JUMPI DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x301F JUMPI PUSH2 0x301E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x303C JUMPI PUSH2 0x303B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP8 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x305F JUMPI PUSH2 0x305E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP10 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3097 JUMPI DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x308A JUMPI PUSH2 0x3089 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3099 JUMP JUMPDEST DUP7 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30AE JUMPI PUSH2 0x30AD PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30C1 JUMPI PUSH2 0x30C0 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x339D JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3111 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3135 SWAP2 SWAP1 PUSH2 0x6DCD JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3294 JUMPI PUSH0 DUP3 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x31C9 SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x31E4 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3208 SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3221 DUP5 DUP5 DUP5 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP4 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3260 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E89 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3277 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3289 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x3396 JUMP JUMPDEST PUSH0 DUP2 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32CF SWAP2 SWAP1 PUSH2 0x6958 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x330E SWAP2 SWAP1 PUSH2 0x6985 JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3327 DUP4 DUP6 DUP5 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP3 PUSH0 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3366 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6ED1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x337D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x338F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP PUSH2 0x35FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33B1 JUMPI PUSH2 0x33B0 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x33C4 JUMPI PUSH2 0x33C3 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x34E4 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB7D19FC4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x342E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3452 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x349E SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34B9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34DD SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST POP POP PUSH2 0x35FB JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3549 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x356D SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35B9 SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35D5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35F9 SWAP2 SWAP1 PUSH2 0x6FB1 JUMP JUMPDEST POP JUMPDEST JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3003 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x36AC JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3674 SWAP2 SWAP1 PUSH2 0x5DD4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x368B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x369D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x36AB DUP3 DUP3 PUSH2 0x41D9 JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36CD JUMPI PUSH2 0x36CC PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x36FB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 DUP6 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3713 JUMPI PUSH2 0x3712 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH0 DUP5 MLOAD SWAP1 POP JUMPDEST PUSH0 DUP2 EQ PUSH2 0x3C00 JUMPI PUSH0 DUP5 PUSH1 0x1 DUP4 PUSH2 0x373B SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x374C JUMPI PUSH2 0x374B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP5 PUSH2 0x3765 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3776 JUMPI PUSH2 0x3775 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP6 PUSH2 0x378F SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x37A0 JUMPI PUSH2 0x379F PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37BD JUMPI PUSH2 0x37BC PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x37D0 JUMPI PUSH2 0x37CF PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x393A JUMPI PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3820 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3844 SWAP2 SWAP1 PUSH2 0x6DCD JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x387C JUMPI PUSH2 0x387B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x38C2 JUMPI DUP1 DUP3 DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP JUMPDEST PUSH0 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x38D6 JUMPI PUSH2 0x38D5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x38F5 DUP4 DUP4 DUP4 PUSH2 0x55D9 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x1 DUP10 PUSH2 0x3915 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3926 JUMPI PUSH2 0x3925 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP POP PUSH2 0x3BEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x394E JUMPI PUSH2 0x394D PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3961 JUMPI PUSH2 0x3960 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3AE6 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5BDD4B7C DUP3 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x39B6 JUMPI PUSH2 0x39B5 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x16DC165B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A1E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A42 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A77 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x702C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3A91 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3AB5 SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3AC4 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3AD5 JUMPI PUSH2 0x3AD4 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3BE9 JUMP JUMPDEST PUSH2 0x3BA5 DUP2 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3AFD JUMPI PUSH2 0x3AFC PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B65 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B89 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1FD5 JUMP JUMPDEST DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP SWAP1 POP POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3BCB SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3BDC JUMPI PUSH2 0x3BDB PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x3BF8 SWAP1 PUSH2 0x7061 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3725 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3CDA JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C77 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C89 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3CD9 DUP3 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4835 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP9 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3CF7 JUMPI PUSH2 0x3CF6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x41CA JUMPI DUP12 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3D1F JUMPI PUSH2 0x3D1E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3D3C JUMPI PUSH2 0x3D3B PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP2 SWAP6 POP DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3D5F JUMPI PUSH2 0x3D5E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP12 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3D97 JUMPI DUP12 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3D8A JUMPI PUSH2 0x3D89 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3D99 JUMP JUMPDEST DUP8 JUMPDEST SWAP5 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DAE JUMPI PUSH2 0x3DAD PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3DC1 JUMPI PUSH2 0x3DC0 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3EF9 JUMPI DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3DDC JUMPI PUSH2 0x3DDB PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3E89 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E57 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E89 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E6E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E80 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3EF4 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP9 PUSH0 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3EC6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6ED1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EDD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EEF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x41BF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F0D JUMPI PUSH2 0x3F0C PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F20 JUMPI PUSH2 0x3F1F PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x405D JUMPI PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB7D19FC4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F6F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F93 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4000 SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x401B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x403F SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 ISZERO PUSH2 0x4051 JUMPI DUP1 SWAP10 POP PUSH2 0x4055 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP PUSH2 0x41BE JUMP JUMPDEST PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40A7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x40CB SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x4180 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x413B SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4157 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x417B SWAP2 SWAP1 PUSH2 0x6FB1 JUMP JUMPDEST PUSH2 0x56B2 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x41B6 JUMPI DUP1 SWAP10 POP PUSH2 0x41BA JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3D03 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x428F JUMPI PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x4206 SWAP1 PUSH2 0x70B2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x4240 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4245 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x428D JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x47B96F7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4284 SWAP3 SWAP2 SWAP1 PUSH2 0x70C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x42AC JUMPI PUSH2 0x42AB PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP11 SWAP6 POP PUSH0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x4826 JUMPI DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x42D7 JUMPI PUSH2 0x42D6 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x42F4 JUMPI PUSH2 0x42F3 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4317 JUMPI PUSH2 0x4316 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP11 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x434F JUMPI DUP11 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4342 JUMPI PUSH2 0x4341 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4351 JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4366 JUMPI PUSH2 0x4365 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4379 JUMPI PUSH2 0x4378 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4555 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43C9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x43ED SWAP2 SWAP1 PUSH2 0x6DCD JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x44CC JUMPI PUSH2 0x445B DUP3 DUP3 DUP12 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP12 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x449A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E89 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x44B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x454E JUMP JUMPDEST PUSH2 0x44E1 DUP2 DUP4 DUP12 PUSH2 0x5507 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP11 PUSH0 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4520 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6ED1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4537 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4549 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH2 0x481B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4569 JUMPI PUSH2 0x4568 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x457C JUMPI PUSH2 0x457B PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x46B9 JUMPI PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB7D19FC4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45CB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x45EF SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 DUP10 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x465C SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4677 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x469B SWAP2 SWAP1 PUSH2 0x6F40 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 ISZERO PUSH2 0x46AD JUMPI DUP1 SWAP10 POP PUSH2 0x46B1 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP PUSH2 0x481A JUMP JUMPDEST PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4703 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4727 SWAP2 SWAP1 PUSH2 0x6AE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x47DC DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4797 SWAP3 SWAP2 SWAP1 PUSH2 0x6F19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47B3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47D7 SWAP2 SWAP1 PUSH2 0x6FB1 JUMP JUMPDEST PUSH2 0x56B2 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x4812 JUMPI DUP1 SWAP10 POP PUSH2 0x4816 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x42BB JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4851 SWAP3 SWAP2 SWAP1 PUSH2 0x70C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x48BA DUP5 DUP3 PUSH2 0x56D4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48D5 JUMPI PUSH2 0x48D4 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x48E8 JUMPI PUSH2 0x48E7 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4994 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x494A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x70ED JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4965 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4989 SWAP2 SWAP1 PUSH2 0x71FA JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x4B0B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x49A8 JUMPI PUSH2 0x49A7 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x49BB JUMPI PUSH2 0x49BA PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4A67 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4A1D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x70ED JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A38 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4A5C SWAP2 SWAP1 PUSH2 0x729A JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x4B0A JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AC4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x70ED JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4ADF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B03 SWAP2 SWAP1 PUSH2 0x729A JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP JUMPDEST JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4B7F JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4B76 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC9939F5E CALLER DUP7 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BC9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72FA JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4BE4 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C0C SWAP2 SWAP1 PUSH2 0x740B JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4CAE JUMPI PUSH2 0x4C3C DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4C2F JUMPI PUSH2 0x4C2E PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x575E JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x4C59 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP4 POP PUSH2 0x4C7E DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4C71 JUMPI PUSH2 0x4C70 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5779 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x4C9B SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP3 POP DUP1 PUSH2 0x4CA7 SWAP1 PUSH2 0x7452 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C10 JUMP JUMPDEST POP DUP8 DUP4 LT DUP1 PUSH2 0x4CBC JUMPI POP DUP7 DUP3 LT JUMPDEST ISZERO PUSH2 0x4D04 JUMPI DUP8 DUP4 DUP9 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4CFB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x4D44 JUMPI PUSH2 0x4D43 DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4835 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 DUP8 PUSH2 0x1C0 ADD CALLDATALOAD DUP1 TIMESTAMP GT ISZERO PUSH2 0x4D9D JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D94 SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x4DAE SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4DC1 SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP EQ ISZERO DUP1 PUSH2 0x4DF4 JUMPI POP DUP9 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x4DDC SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4DEF SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP EQ ISZERO JUMPDEST ISZERO PUSH2 0x4E2B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH1 0xE0 ADD CALLDATALOAD GT DUP1 PUSH2 0x4E4B JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH2 0x100 ADD CALLDATALOAD GT JUMPDEST ISZERO PUSH2 0x4E98 JUMPI DUP9 PUSH1 0xE0 ADD CALLDATALOAD DUP10 PUSH2 0x100 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH32 0x32F4AB8E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8F SWAP3 SWAP2 SWAP1 PUSH2 0x632C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4EAA SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4EC5 JUMPI PUSH2 0x4EC4 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4EF3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4F07 SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4F22 JUMPI PUSH2 0x4F21 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4F50 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP4 POP PUSH0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBE65EDC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4F9D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4FC1 SWAP2 SWAP1 PUSH2 0x6CF9 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 POP DUP1 DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP13 PUSH1 0xE0 ADD CALLDATALOAD ADD LT DUP1 PUSH2 0x4FEB JUMPI POP DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 ADD LT JUMPDEST ISZERO PUSH2 0x503A JUMPI DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x40 MLOAD PUSH32 0xFAA1DB5600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5031 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x75AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x516D JUMPI PUSH0 DUP13 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x5057 SWAP2 SWAP1 PUSH2 0x754A JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x5068 JUMPI PUSH2 0x5067 PUSH2 0x691C JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 ADD SWAP1 POP PUSH0 DUP2 SLT DUP1 PUSH2 0x5085 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP2 GT JUMPDEST ISZERO PUSH2 0x50C7 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xE1505CC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x50BE SWAP2 SWAP1 PUSH2 0x75F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x50DB JUMPI PUSH2 0x50DA PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x5142 DUP14 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x50FB SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x510C JUMPI PUSH2 0x510B PUSH2 0x691C JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP15 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x5124 SWAP2 SWAP1 PUSH2 0x74E8 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x5135 JUMPI PUSH2 0x5134 PUSH2 0x691C JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0x5785 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5155 JUMPI PUSH2 0x5154 PUSH2 0x691C JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x503C JUMP JUMPDEST POP POP PUSH0 DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x383D15C5 DUP14 PUSH2 0x180 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51A1 SWAP2 SWAP1 PUSH2 0x7612 JUMP JUMPDEST DUP6 DUP16 PUSH2 0x1A0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51B6 SWAP2 SWAP1 PUSH2 0x7612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x51D4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x76F4 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x51EF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5217 SWAP2 SWAP1 PUSH2 0x77C5 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP4 POP DUP3 SWAP5 POP POP POP POP PUSH0 PUSH2 0x5237 DUP3 DUP5 PUSH2 0x5806 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x5242 DUP2 PUSH2 0x575E JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP11 POP PUSH2 0x525F DUP2 PUSH2 0x5779 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP10 POP DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 LT DUP1 PUSH2 0x5288 JUMPI POP DUP13 PUSH1 0xC0 ADD CALLDATALOAD DUP11 LT JUMPDEST ISZERO PUSH2 0x52D8 JUMPI DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP13 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x52CF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52E1 DUP3 PUSH2 0x575E JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP9 POP PUSH2 0x52FE DUP3 PUSH2 0x5779 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5335 JUMPI PUSH2 0x5334 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x5348 JUMPI PUSH2 0x5347 PUSH2 0x6D24 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x5462 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x53A8 SWAP3 SWAP2 SWAP1 PUSH2 0x7831 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x53E7 SWAP2 SWAP1 PUSH2 0x69F7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x545D JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5454 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x546E DUP6 DUP6 DUP6 DUP6 PUSH2 0x48C0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5497 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x72C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x5500 DUP6 DUP3 PUSH2 0x56D4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x5541 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB229ED3300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x554E JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x5585 JUMPI PUSH1 0x40 MLOAD PUSH32 0x98C59A2900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E5 DUP6 PUSH2 0x5594 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH0 DUP4 DUP3 PUSH2 0x55A3 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH2 0x3E8 DUP8 PUSH2 0x55B5 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST PUSH2 0x55BF SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH2 0x55CD SWAP2 SWAP1 PUSH2 0x78C6 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x5613 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB229ED3300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x5620 JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x5657 JUMPI PUSH1 0x40 MLOAD PUSH32 0x98C59A2900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E8 DUP6 DUP6 PUSH2 0x5667 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST PUSH2 0x5671 SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x3E5 DUP7 DUP6 PUSH2 0x5683 SWAP2 SWAP1 PUSH2 0x69B0 JUMP JUMPDEST PUSH2 0x568D SWAP2 SWAP1 PUSH2 0x7858 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP4 PUSH2 0x569D SWAP2 SWAP1 PUSH2 0x78C6 JUMP JUMPDEST PUSH2 0x56A7 SWAP2 SWAP1 PUSH2 0x68E9 JUMP JUMPDEST SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 POP DUP3 PUSH1 0x80 SHR SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH0 DUP8 GAS CALL SWAP1 POP DUP1 PUSH0 DUP2 EQ PUSH2 0x5712 JUMPI RETURNDATASIZE PUSH0 DUP2 EQ PUSH2 0x5705 JUMPI PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND SWAP3 POP PUSH2 0x570C JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO ISZERO SWAP3 POP JUMPDEST POP PUSH2 0x5721 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x5720 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST JUMPDEST POP DUP1 PUSH2 0x5759 JUMPI PUSH1 0x40 MLOAD PUSH32 0x32E2717A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x80 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x57B0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x58 DUP5 PUSH2 0x587E SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x57DC DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x18 DUP5 PUSH2 0x587E SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x57FD DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH0 DUP5 PUSH2 0x587E SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP4 SUB SWAP1 POP DUP3 DUP2 GT DUP1 PUSH2 0x5841 JUMPI POP DUP3 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x5878 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE599AF5500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x58BB DUP2 PUSH2 0x58A9 JUMP JUMPDEST DUP2 EQ PUSH2 0x58C5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x58D6 DUP2 PUSH2 0x58B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x5926 DUP3 PUSH2 0x58E0 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5945 JUMPI PUSH2 0x5944 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5957 PUSH2 0x5898 JUMP JUMPDEST SWAP1 POP PUSH2 0x5963 DUP3 DUP3 PUSH2 0x591D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x598A JUMPI PUSH2 0x5989 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x59B1 PUSH2 0x59AC DUP5 PUSH2 0x5970 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x59D4 JUMPI PUSH2 0x59D3 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x59FD JUMPI DUP1 PUSH2 0x59E9 DUP9 DUP3 PUSH2 0x58C8 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x59D6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5A1B JUMPI PUSH2 0x5A1A PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5A2B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x599F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5A4E JUMPI PUSH2 0x5A4D PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x5A6B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5A7C DUP2 PUSH2 0x5A5F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5A94 PUSH2 0x5A8F DUP5 PUSH2 0x5A34 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5AB7 JUMPI PUSH2 0x5AB6 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5AE0 JUMPI DUP1 PUSH2 0x5ACC DUP9 DUP3 PUSH2 0x5A6E JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5AB9 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5AFE JUMPI PUSH2 0x5AFD PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5B0E DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x5A82 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5B31 JUMPI PUSH2 0x5B30 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5B6B DUP3 PUSH2 0x5B42 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5B7C DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5B8C DUP2 PUSH2 0x5B72 JUMP JUMPDEST DUP2 EQ PUSH2 0x5B96 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5BA7 DUP2 PUSH2 0x5B83 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5BBF PUSH2 0x5BBA DUP5 PUSH2 0x5B17 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5BE2 JUMPI PUSH2 0x5BE1 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5C0B JUMPI DUP1 PUSH2 0x5BF7 DUP9 DUP3 PUSH2 0x5B99 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5BE4 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5C29 JUMPI PUSH2 0x5C28 PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5C39 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x5BAD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C57 JUMPI PUSH2 0x5C56 PUSH2 0x58DC JUMP JUMPDEST JUMPDEST PUSH2 0x5C61 PUSH1 0x60 PUSH2 0x594E JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C80 JUMPI PUSH2 0x5C7F PUSH2 0x5968 JUMP JUMPDEST JUMPDEST PUSH2 0x5C8C DUP5 DUP3 DUP6 ADD PUSH2 0x5A07 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5CAF JUMPI PUSH2 0x5CAE PUSH2 0x5968 JUMP JUMPDEST JUMPDEST PUSH2 0x5CBB DUP5 DUP3 DUP6 ADD PUSH2 0x5AEA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5CDF JUMPI PUSH2 0x5CDE PUSH2 0x5968 JUMP JUMPDEST JUMPDEST PUSH2 0x5CEB DUP5 DUP3 DUP6 ADD PUSH2 0x5C15 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D01 DUP3 PUSH2 0x5B42 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D11 DUP2 PUSH2 0x5CF7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D1B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D2C DUP2 PUSH2 0x5D08 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5D4B JUMPI PUSH2 0x5D4A PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5D58 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5D69 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5D8A JUMPI PUSH2 0x5D89 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x5D96 DUP9 DUP3 DUP10 ADD PUSH2 0x5C42 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x5DA7 DUP9 DUP3 DUP10 ADD PUSH2 0x5D1E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x5DB8 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x5DCE DUP2 PUSH2 0x58A9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5DE7 PUSH0 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5DF6 DUP2 PUSH2 0x5B61 JUMP JUMPDEST DUP2 EQ PUSH2 0x5E00 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5E11 DUP2 PUSH2 0x5DED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5E2F JUMPI PUSH2 0x5E2E PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5E3C DUP8 DUP3 DUP9 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5E5D JUMPI PUSH2 0x5E5C PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x5E69 DUP8 DUP3 DUP9 ADD PUSH2 0x5C42 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5E7A DUP8 DUP3 DUP9 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x5E8B DUP8 DUP3 DUP9 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5EC9 DUP2 PUSH2 0x58A9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5EDA DUP4 DUP4 PUSH2 0x5EC0 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5EFC DUP3 PUSH2 0x5E97 JUMP JUMPDEST PUSH2 0x5F06 DUP2 DUP6 PUSH2 0x5EA1 JUMP JUMPDEST SWAP4 POP PUSH2 0x5F11 DUP4 PUSH2 0x5EB1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F41 JUMPI DUP2 MLOAD PUSH2 0x5F28 DUP9 DUP3 PUSH2 0x5ECF JUMP JUMPDEST SWAP8 POP PUSH2 0x5F33 DUP4 PUSH2 0x5EE6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5F14 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x5F66 DUP2 DUP5 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5F87 JUMPI PUSH2 0x5F86 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5F94 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5FA5 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5FC6 JUMPI PUSH2 0x5FC5 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x5FD2 DUP9 DUP3 DUP10 ADD PUSH2 0x5C42 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x5FE3 DUP9 DUP3 DUP10 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x5FF4 DUP9 DUP3 DUP10 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6024 PUSH2 0x601F PUSH2 0x601A DUP5 PUSH2 0x5B42 JUMP JUMPDEST PUSH2 0x6001 JUMP JUMPDEST PUSH2 0x5B42 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6035 DUP3 PUSH2 0x600A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6046 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6056 DUP2 PUSH2 0x603C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x606F PUSH0 DUP4 ADD DUP5 PUSH2 0x604D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x608C JUMPI PUSH2 0x608B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6099 DUP7 DUP3 DUP8 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x60AA DUP7 DUP3 DUP8 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x60BB DUP7 DUP3 DUP8 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x60DC DUP2 PUSH2 0x60C5 JUMP JUMPDEST DUP2 EQ PUSH2 0x60E6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x60F7 DUP2 PUSH2 0x60D3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6113 DUP2 PUSH2 0x60FD JUMP JUMPDEST DUP2 EQ PUSH2 0x611D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x612E DUP2 PUSH2 0x610A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x614C JUMPI PUSH2 0x614B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6159 DUP8 DUP3 DUP9 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x616A DUP8 DUP3 DUP9 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x617B DUP8 DUP3 DUP9 ADD PUSH2 0x60E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x618C DUP8 DUP3 DUP9 ADD PUSH2 0x6120 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH2 0x61A2 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x61B2 DUP2 PUSH2 0x6198 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x61CB PUSH0 DUP4 ADD DUP5 PUSH2 0x61A9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x61DB DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x61EB DUP2 PUSH2 0x61D1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6204 PUSH0 DUP4 ADD DUP5 PUSH2 0x61E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6214 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6224 DUP2 PUSH2 0x620A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x623D PUSH0 DUP4 ADD DUP5 PUSH2 0x621B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x6260 JUMPI PUSH2 0x625F PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x626D DUP12 DUP3 DUP13 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x627E DUP12 DUP3 DUP13 ADD PUSH2 0x6120 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x628F DUP12 DUP3 DUP13 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x62A0 DUP12 DUP3 DUP13 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x62C1 JUMPI PUSH2 0x62C0 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x62CD DUP12 DUP3 DUP13 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x62EE JUMPI PUSH2 0x62ED PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x62FA DUP12 DUP3 DUP13 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x630B DUP12 DUP3 DUP13 ADD PUSH2 0x5D1E JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 PUSH2 0x631C DUP12 DUP3 DUP13 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x633F PUSH0 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x634C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x636D JUMPI PUSH2 0x636C PUSH2 0x6353 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x638B JUMPI PUSH2 0x638A PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x63A8 JUMPI PUSH2 0x63A7 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x63B4 DUP5 DUP3 DUP6 ADD PUSH2 0x6357 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x63D0 PUSH0 DUP4 ADD DUP10 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x63DD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x63EA PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x63F7 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x6409 DUP2 DUP6 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x641D DUP2 DUP5 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6434 DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6444 DUP2 PUSH2 0x642A JUMP JUMPDEST DUP2 EQ PUSH2 0x644E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x645F DUP2 PUSH2 0x643B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6489 DUP2 PUSH2 0x6465 JUMP JUMPDEST DUP2 EQ PUSH2 0x6493 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x64A4 DUP2 PUSH2 0x6480 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x64BE DUP2 PUSH2 0x64AA JUMP JUMPDEST DUP2 EQ PUSH2 0x64C8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x64D9 DUP2 PUSH2 0x64B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x64F6 JUMPI PUSH2 0x64F5 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6503 DUP7 DUP3 DUP8 ADD PUSH2 0x6451 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6514 DUP7 DUP3 DUP8 ADD PUSH2 0x6496 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6525 DUP7 DUP3 DUP8 ADD PUSH2 0x64CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x6538 DUP2 PUSH2 0x6465 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6551 PUSH0 DUP4 ADD DUP7 PUSH2 0x652F JUMP JUMPDEST PUSH2 0x655E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x652F JUMP JUMPDEST PUSH2 0x656B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x652F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x657D DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x658D DUP2 PUSH2 0x6573 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x65A6 PUSH0 DUP4 ADD DUP5 PUSH2 0x6584 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x65B6 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x65C6 DUP2 PUSH2 0x65AC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x65DF PUSH0 DUP4 ADD DUP5 PUSH2 0x65BD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x6603 JUMPI PUSH2 0x6602 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6610 DUP13 DUP3 DUP14 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x6621 DUP13 DUP3 DUP14 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x6632 DUP13 DUP3 DUP14 ADD PUSH2 0x6120 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x6643 DUP13 DUP3 DUP14 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x6654 DUP13 DUP3 DUP14 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6675 JUMPI PUSH2 0x6674 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x6681 DUP13 DUP3 DUP14 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x66A2 JUMPI PUSH2 0x66A1 PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x66AE DUP13 DUP3 DUP14 ADD PUSH2 0x5A07 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x66BF DUP13 DUP3 DUP14 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x66D1 DUP13 DUP3 DUP14 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x66F7 JUMPI PUSH2 0x66F6 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6704 DUP6 DUP3 DUP7 ADD PUSH2 0x6451 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6715 DUP6 DUP3 DUP7 ADD PUSH2 0x60E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6729 DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6739 DUP2 PUSH2 0x671F JUMP JUMPDEST DUP2 EQ PUSH2 0x6743 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x6754 DUP2 PUSH2 0x6730 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6773 JUMPI PUSH2 0x6772 PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6790 JUMPI PUSH2 0x678F PUSH2 0x675A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x67AC JUMPI PUSH2 0x67AB PUSH2 0x599B JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x67CD JUMPI PUSH2 0x67CC PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x67DA DUP10 DUP3 DUP11 ADD PUSH2 0x6746 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x67EB DUP10 DUP3 DUP11 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x680C JUMPI PUSH2 0x680B PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x6818 DUP10 DUP3 DUP11 ADD PUSH2 0x675E JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x683B JUMPI PUSH2 0x683A PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x6847 DUP10 DUP3 DUP11 ADD PUSH2 0x675E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x686C JUMPI PUSH2 0x686B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6879 DUP6 DUP3 DUP7 ADD PUSH2 0x6451 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x688A DUP6 DUP3 DUP7 ADD PUSH2 0x58C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x689D DUP2 PUSH2 0x60C5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x68B6 PUSH0 DUP4 ADD DUP5 PUSH2 0x6894 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x68F3 DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x68FE DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x6916 JUMPI PUSH2 0x6915 PUSH2 0x68BC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x6952 DUP2 PUSH2 0x5B61 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x696B PUSH0 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x697F DUP2 PUSH2 0x58B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x699A JUMPI PUSH2 0x6999 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x69A7 DUP5 DUP3 DUP6 ADD PUSH2 0x6971 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x69BA DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x69C5 DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x69DD JUMPI PUSH2 0x69DC PUSH2 0x68BC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x69F1 DUP2 PUSH2 0x5DED JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A0C JUMPI PUSH2 0x6A0B PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6A19 DUP5 DUP3 DUP6 ADD PUSH2 0x69E3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6A2C DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6A3C DUP2 PUSH2 0x6A22 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x6A4B DUP2 PUSH2 0x60FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6A64 PUSH0 DUP4 ADD DUP8 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x6A71 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x6A7E PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x6894 JUMP JUMPDEST PUSH2 0x6A8B PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x6A42 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6AA2 DUP2 PUSH2 0x643B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6ABD JUMPI PUSH2 0x6ABC PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6ACA DUP5 DUP3 DUP6 ADD PUSH2 0x6A94 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6AE1 DUP2 PUSH2 0x5B83 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AFC JUMPI PUSH2 0x6AFB PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6B09 DUP5 DUP3 DUP6 ADD PUSH2 0x6AD3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6B27 JUMPI PUSH2 0x6B26 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6B34 DUP5 DUP3 DUP6 ADD PUSH2 0x5B99 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x6B50 PUSH0 DUP4 ADD DUP9 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x6B5D PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x6B6A PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6B77 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6B84 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6B97 DUP2 PUSH2 0x64AA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6BB0 PUSH0 DUP4 ADD DUP6 PUSH2 0x652F JUMP JUMPDEST PUSH2 0x6BBD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6B8E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6BD2 DUP2 PUSH2 0x6480 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6BEF JUMPI PUSH2 0x6BEE PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6BFC DUP7 DUP3 DUP8 ADD PUSH2 0x6BC4 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6C0D DUP7 DUP3 DUP8 ADD PUSH2 0x6BC4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6C1E DUP7 DUP3 DUP8 ADD PUSH2 0x6BC4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6C40 DUP4 DUP6 PUSH2 0x5EA1 JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6C73 JUMPI PUSH2 0x6C72 PUSH2 0x6C28 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6C84 DUP4 DUP6 DUP5 PUSH2 0x6C2C JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6CA3 PUSH0 DUP4 ADD DUP10 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x6CB0 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x6CC3 DUP2 DUP7 DUP9 PUSH2 0x6C35 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6CD8 DUP2 DUP5 DUP7 PUSH2 0x6C35 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6CF3 DUP2 PUSH2 0x60D3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D0E JUMPI PUSH2 0x6D0D PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6D1B DUP5 DUP3 DUP6 ADD PUSH2 0x6CE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D73 DUP2 PUSH2 0x6D51 JUMP JUMPDEST DUP2 EQ PUSH2 0x6D7D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6D8E DUP2 PUSH2 0x6D6A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6DAC DUP2 PUSH2 0x6D94 JUMP JUMPDEST DUP2 EQ PUSH2 0x6DB6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6DC7 DUP2 PUSH2 0x6DA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6DE4 JUMPI PUSH2 0x6DE3 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6DF1 DUP7 DUP3 DUP8 ADD PUSH2 0x6D80 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6E02 DUP7 DUP3 DUP8 ADD PUSH2 0x6D80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6E13 DUP7 DUP3 DUP8 ADD PUSH2 0x6DB9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6E40 PUSH2 0x6E3B PUSH2 0x6E36 DUP5 PUSH2 0x6E1D JUMP JUMPDEST PUSH2 0x6001 JUMP JUMPDEST PUSH2 0x58A9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6E50 DUP2 PUSH2 0x6E26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x6E74 PUSH0 DUP4 PUSH2 0x6E56 JUMP JUMPDEST SWAP2 POP PUSH2 0x6E7F DUP3 PUSH2 0x6E66 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6E9C PUSH0 DUP4 ADD DUP7 PUSH2 0x6E47 JUMP JUMPDEST PUSH2 0x6EA9 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6EB6 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6EC7 DUP2 PUSH2 0x6E69 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6EE4 PUSH0 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x6EF1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6E47 JUMP JUMPDEST PUSH2 0x6EFE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6F0F DUP2 PUSH2 0x6E69 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6F2C PUSH0 DUP4 ADD DUP6 PUSH2 0x6B8E JUMP JUMPDEST PUSH2 0x6F39 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6F56 JUMPI PUSH2 0x6F55 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6F63 DUP6 DUP3 DUP7 ADD PUSH2 0x6971 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6F74 DUP6 DUP3 DUP7 ADD PUSH2 0x6971 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F90 DUP2 PUSH2 0x6F7E JUMP JUMPDEST DUP2 EQ PUSH2 0x6F9A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6FAB DUP2 PUSH2 0x6F87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6FC6 JUMPI PUSH2 0x6FC5 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6FD3 DUP5 DUP3 DUP6 ADD PUSH2 0x6F9D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6FE6 DUP3 PUSH2 0x602B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6FF6 DUP2 PUSH2 0x6FDC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7016 PUSH2 0x7011 PUSH2 0x700C DUP5 PUSH2 0x6465 JUMP JUMPDEST PUSH2 0x6001 JUMP JUMPDEST PUSH2 0x58A9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7026 DUP2 PUSH2 0x6FFC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x703F PUSH0 DUP4 ADD DUP7 PUSH2 0x6FED JUMP JUMPDEST PUSH2 0x704C PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x701D JUMP JUMPDEST PUSH2 0x7059 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6B8E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x706B DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x707D JUMPI PUSH2 0x707C PUSH2 0x68BC JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x709D PUSH0 DUP4 PUSH2 0x7088 JUMP JUMPDEST SWAP2 POP PUSH2 0x70A8 DUP3 PUSH2 0x6E66 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x70BC DUP3 PUSH2 0x7092 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x70D9 PUSH0 DUP4 ADD DUP6 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x70E6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x7100 PUSH0 DUP4 ADD DUP7 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x710D PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6A33 JUMP JUMPDEST PUSH2 0x711A PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x7130 DUP2 PUSH2 0x610A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7140 DUP3 PUSH2 0x5B61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7150 DUP2 PUSH2 0x7136 JUMP JUMPDEST DUP2 EQ PUSH2 0x715A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x716B DUP2 PUSH2 0x7147 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x717F DUP2 PUSH2 0x64B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x719A JUMPI PUSH2 0x7199 PUSH2 0x58DC JUMP JUMPDEST JUMPDEST PUSH2 0x71A4 PUSH1 0x80 PUSH2 0x594E JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x71B3 DUP5 DUP3 DUP6 ADD PUSH2 0x7122 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x71C6 DUP5 DUP3 DUP6 ADD PUSH2 0x715D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x71DA DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x71EE DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x720F JUMPI PUSH2 0x720E PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x721C DUP5 DUP3 DUP6 ADD PUSH2 0x7185 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x723A JUMPI PUSH2 0x7239 PUSH2 0x58DC JUMP JUMPDEST JUMPDEST PUSH2 0x7244 PUSH1 0x80 PUSH2 0x594E JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x7253 DUP5 DUP3 DUP6 ADD PUSH2 0x7122 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x7266 DUP5 DUP3 DUP6 ADD PUSH2 0x6A94 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x727A DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x728E DUP5 DUP3 DUP6 ADD PUSH2 0x7171 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72AF JUMPI PUSH2 0x72AE PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x72BC DUP5 DUP3 DUP6 ADD PUSH2 0x7225 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x72D8 PUSH0 DUP4 ADD DUP7 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x72E5 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x72F2 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x730D PUSH0 DUP4 ADD DUP8 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x731A PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x732C DUP2 DUP6 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x7340 DUP2 DUP5 PUSH2 0x5EF2 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x7365 JUMPI PUSH2 0x7364 PUSH2 0x58F0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x7388 PUSH2 0x7383 DUP5 PUSH2 0x734B JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73AB JUMPI PUSH2 0x73AA PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x73D4 JUMPI DUP1 PUSH2 0x73C0 DUP9 DUP3 PUSH2 0x6F9D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x73AD JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x73F2 JUMPI PUSH2 0x73F1 PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x7402 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x7376 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7420 JUMPI PUSH2 0x741F PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x743D JUMPI PUSH2 0x743C PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x7449 DUP5 DUP3 DUP6 ADD PUSH2 0x73DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x745C DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x748E JUMPI PUSH2 0x748D PUSH2 0x68BC JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x74AC PUSH0 DUP4 ADD DUP8 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x74B9 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x74C6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x74D3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x7504 JUMPI PUSH2 0x7503 PUSH2 0x74DC JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x7526 JUMPI PUSH2 0x7525 PUSH2 0x74E0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x7542 JUMPI PUSH2 0x7541 PUSH2 0x74E4 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x7566 JUMPI PUSH2 0x7565 PUSH2 0x74DC JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x7588 JUMPI PUSH2 0x7587 PUSH2 0x74E0 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x75A4 JUMPI PUSH2 0x75A3 PUSH2 0x74E4 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x75BF PUSH0 DUP4 ADD DUP7 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x75CC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5DC5 JUMP JUMPDEST PUSH2 0x75D9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5DC5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x75F3 DUP2 PUSH2 0x75E1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x760C PUSH0 DUP4 ADD DUP5 PUSH2 0x75EA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7627 JUMPI PUSH2 0x7626 PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x7634 DUP5 DUP3 DUP6 ADD PUSH2 0x5E03 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x766F DUP2 PUSH2 0x6F7E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7680 DUP4 DUP4 PUSH2 0x7666 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x76A2 DUP3 PUSH2 0x763D JUMP JUMPDEST PUSH2 0x76AC DUP2 DUP6 PUSH2 0x7647 JUMP JUMPDEST SWAP4 POP PUSH2 0x76B7 DUP4 PUSH2 0x7657 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x76E7 JUMPI DUP2 MLOAD PUSH2 0x76CE DUP9 DUP3 PUSH2 0x7675 JUMP JUMPDEST SWAP8 POP PUSH2 0x76D9 DUP4 PUSH2 0x768C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x76BA JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x7707 PUSH0 DUP4 ADD DUP7 PUSH2 0x6949 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x7719 DUP2 DUP6 PUSH2 0x7698 JUMP JUMPDEST SWAP1 POP PUSH2 0x7728 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7742 PUSH2 0x773D DUP5 PUSH2 0x5970 JUMP JUMPDEST PUSH2 0x594E JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x7765 JUMPI PUSH2 0x7764 PUSH2 0x599B JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x778E JUMPI DUP1 PUSH2 0x777A DUP9 DUP3 PUSH2 0x6971 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7767 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x77AC JUMPI PUSH2 0x77AB PUSH2 0x596C JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x77BC DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x7730 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x77DC JUMPI PUSH2 0x77DB PUSH2 0x58A1 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x77E9 DUP7 DUP3 DUP8 ADD PUSH2 0x6F9D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x77FA DUP7 DUP3 DUP8 ADD PUSH2 0x6F9D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x781B JUMPI PUSH2 0x781A PUSH2 0x58A5 JUMP JUMPDEST JUMPDEST PUSH2 0x7827 DUP7 DUP3 DUP8 ADD PUSH2 0x7798 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x7844 PUSH0 DUP4 ADD DUP6 PUSH2 0x6949 JUMP JUMPDEST PUSH2 0x7851 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x6949 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7862 DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x786D DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x787B DUP2 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x7892 JUMPI PUSH2 0x7891 PUSH2 0x68BC JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x78D0 DUP3 PUSH2 0x58A9 JUMP JUMPDEST SWAP2 POP PUSH2 0x78DB DUP4 PUSH2 0x58A9 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x78EB JUMPI PUSH2 0x78EA PUSH2 0x7899 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO SELFDESTRUCT PUSH24 0x9B1F3E06BE3F48B2BE62E5423313C5F815FB176A2FD491FE LOG4 PUSH18 0x35EF0B64736F6C6343000814003300000000 ", - "sourceMap": "1416:44371:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3398:8;3376:31;;:10;:31;;;3372:74;;3416:30;;;;;;;;;;;;;;3372:74;1416:44371;;;;;24815:1070;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22067:1038;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15743:640;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20484:1159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23537:839;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3828:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27472:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7650:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4821:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4077:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14294:1055;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3585:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10204:1750;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;19167:902;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6233:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16784:915;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6969:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8515:1049;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;18042:731;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4579:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4337:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12672:755;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5617:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26266:915;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28255:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5267:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24815:1070;25095:17;25051:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;25080:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;25179:8:::2;25128:60;;:4;:14;;;25143:4;:17;;;:24;25128:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;25124:175;;25246:4;:14;;;25261:4;:17;;;:24;25246:40;;;;;;;;:::i;:::-;;;;;;;;25211:77;;;;;;;;;;;:::i;:::-;;;;;;;;25124:175;25309:22;25334:59;25344:4;:17;;;25363:4;:13;;;25378:4;:14;;;25334:9;:59::i;:::-;25309:84;;25404:21;25428:8;:18;;;25455:4;25428:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25404:57;;25472:68;25490:4;:14;;;25505:1;25490:17;;;;;;;;:::i;:::-;;;;;;;;25509:10;25521:5;25527:1;25521:8;;;;;;;;:::i;:::-;;;;;;;;25531;25472:17;:68::i;:::-;25551:87;25586:5;25593:4;:13;;;25608:4;:14;;;25632:4;25551:34;:87::i;:::-;25697:13;25661:8;:18;;;25688:4;25661:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;;;:::i;:::-;25649:61;;25745:9;25724:18;:30;25720:105;;;25795:18;25815:9;25763:62;;;;;;;;;;;;:::i;:::-;;;;;;;;25720:105;25836:42;25864:2;25868:9;25836:27;:42::i;:::-;25114:771;;2150:1:::1;24815:1070:::0;;;;;;;;:::o;22067:1038::-;22293:26;22233:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;22270:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;22367:8:::2;22339:37;;:4;:14;;;22354:1;22339:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;22335:104;;22420:4;:14;;;22435:1;22420:17;;;;;;;;:::i;:::-;;;;;;;;22385:54;;;;;;;;;;;:::i;:::-;;;;;;;;22335:104;22450:22;22475:59;22485:4;:17;;;22504:4;:13;;;22519:4;:14;;;22475:9;:59::i;:::-;22450:84;;22556:62;22570:4;:13;;;22585:5;22592:4;:14;;;22608:9;22556:13;:62::i;:::-;22544:74;;22648:9;22633;22643:1;22633:12;;;;;;;;:::i;:::-;;;;;;;;:24;22629:91;;;22696:9;22707;22717:1;22707:12;;;;;;;;:::i;:::-;;;;;;;;22666:54;;;;;;;;;;;;:::i;:::-;;;;;;;;22629:91;22731:50;22758:5;22764:1;22758:8;;;;;;;;:::i;:::-;;;;;;;;22768:9;22778:1;22768:12;;;;;;;;:::i;:::-;;;;;;;;22731:26;:50::i;:::-;22792:21;22816:78;22842:5;22849:4;:13;;;22864:4;:14;;;22880:9;22891:2;22816:25;:78::i;:::-;22792:102;;22925:9;22909:13;:25;22905:95;;;22975:9;22986:13;22943:57;;;;;;;;;;;;:::i;:::-;;;;;;;;22905:95;23027:9;23037:1;23027:12;;;;;;;;:::i;:::-;;;;;;;;23015:9;:24;23011:87;;;23041:57;23061:10;23085:9;23095:1;23085:12;;;;;;;;:::i;:::-;;;;;;;;23073:9;:24;;;;:::i;:::-;23041:19;:57::i;:::-;23011:87;22325:780;;2150:1:::1;22067:1038:::0;;;;;;;:::o;15743:640::-;15980:17;15936:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;15965:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;16009:22:::2;16034:59;16044:4;:17;;;16063:4;:13;;;16078:4;:14;;;16034:9;:59::i;:::-;16009:84;;16104:68;16122:4;:14;;;16137:1;16122:17;;;;;;;;:::i;:::-;;;;;;;;16141:10;16153:5;16159:1;16153:8;;;;;;;;:::i;:::-;;;;;;;;16163;16104:17;:68::i;:::-;16195:77;16221:8;16231:5;16238:4;:13;;;16253:4;:14;;;16269:2;16195:25;:77::i;:::-;16183:89;;16302:9;16287:12;:24;16283:93;;;16352:12;16366:9;16320:56;;;;;;;;;;;;:::i;:::-;;;;;;;;16283:93;15999:384;2150:1:::1;15743:640:::0;;;;;;;;:::o;20484:1159::-;20735:26;20691:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;20720:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;20828:8:::2;20777:60;;:4;:14;;;20792:4;:17;;;:24;20777:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;20773:175;;20895:4;:14;;;20910:4;:17;;;:24;20895:40;;;;;;;;:::i;:::-;;;;;;;;20860:77;;;;;;;;;;;:::i;:::-;;;;;;;;20773:175;20958:22;20983:59;20993:4;:17;;;21012:4;:13;;;21027:4;:14;;;20983:9;:59::i;:::-;20958:84;;21064:68;21078:4;:13;;;21093:5;21100:4;:14;;;21116:15;21064:13;:68::i;:::-;21052:80;;21162:11;21147:9;21157:1;21147:12;;;;;;;;:::i;:::-;;;;;;;;:26;21143:95;;;21212:11;21225:9;21235:1;21225:12;;;;;;;;:::i;:::-;;;;;;;;21182:56;;;;;;;;;;;;:::i;:::-;;;;;;;;21143:95;21249:72;21267:4;:14;;;21282:1;21267:17;;;;;;;;:::i;:::-;;;;;;;;21286:10;21298:5;21304:1;21298:8;;;;;;;;:::i;:::-;;;;;;;;21308:9;21318:1;21308:12;;;;;;;;:::i;:::-;;;;;;;;21249:17;:72::i;:::-;21332:22;21369:89;21395:5;21402:4;:13;;;21417:4;:14;;;21433:9;21452:4;21369:25;:89::i;:::-;21332:126;;21490:15;21473:14;:32;21469:109;;;21546:15;21563:14;21514:64;;;;;;;;;;;;:::i;:::-;;;;;;;;21469:109;21589:47;21617:2;21621:14;21589:27;:47::i;:::-;20763:880;;2150:1:::1;20484:1159:::0;;;;;;;;:::o;23537:839::-;23803:17;23759:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;23788:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;23832:22:::2;23857:59;23867:4;:17;;;23886:4;:13;;;23901:4;:14;;;23857:9;:59::i;:::-;23832:84;;23927:18;23948:4;:14;;;23963:5;:12;23948:28;;;;;;;;:::i;:::-;;;;;;;;23927:49;;23987:21;24011:11;:21;;;24033:2;24011:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23987:49;;24047:68;24065:4;:14;;;24080:1;24065:17;;;;;;;;:::i;:::-;;;;;;;;24084:10;24096:5;24102:1;24096:8;;;;;;;;:::i;:::-;;;;;;;;24106;24047:17;:68::i;:::-;24126:76;24161:5;24168:4;:13;;;24183:4;:14;;;24199:2;24126:34;:76::i;:::-;24253:13;24225:11;:21;;;24247:2;24225:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;24213:53;;24295:9;24280:12;:24;24276:93;;;24345:12;24359:9;24313:56;;;;;;;;;;;;:::i;:::-;;;;;;;;24276:93;23822:554;;;2150:1:::1;23537:839:::0;;;;;;;;:::o;3828:115::-;3886:20;3925:11;3918:18;;3828:115;:::o;27472:436::-;1923:11;1907:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1893:51;;:10;:51;;;1889:91;;1953:27;;;;;;;;;;;;;;1889:91;27604:1:::1;27578:28;;27586:5;27578:28;;::::0;27574:328:::1;;27641:17;27631:6;:27;:60;;27685:6;27631:60;;;27661:21;27631:60;27622:69;;27706:31;27726:2;27730:6;27706:19;:31::i;:::-;27574:328;;;27787:17;27777:6;:27;:69;;27840:6;27777:69;;;27807:5;:15;;;27831:4;27807:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27777:69;27768:78;;27861:30;27880:2;27884:6;27861:5;:18;;;;:30;;;;;:::i;:::-;27574:328;27472:436:::0;;;:::o;7650:237::-;7786:12;7821:11;:24;;;7846:6;7854;7862:8;7872:7;7821:59;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7814:66;;7650:237;;;;;;:::o;4821:104::-;4875:16;4910:8;4903:15;;4821:104;:::o;4077:132::-;4137:32;4188:14;4181:21;;4077:132;:::o;14294:1055::-;14604:19;14625:20;14585:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;14657:14:::1;14682:69;14704:5;14718:8;14729:7;14682:69;;14738:12;14682:21;:69::i;:::-;14657:95;;14777:19;14819:6;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14799:38;;14806:8;14799:38;;;14777:60;;14857:14;14852:123;;14928:15;14945:14;14891:69;;;;;;;;14852:123;14990:15;15007::::0;15042:86:::1;15059:6;15067:14;15083:15;15100:3;15105:7;15122:4;15042:16;:86::i;:::-;14989:139;;;;15173:14;:56;;15212:7;15221;15173:56;;;15191:7;15200;15173:56;15143:86;;;;;;;;14763:477;;;15250:37;15264:5;15271:2;15275:11;15250:13;:37::i;:::-;15297:45;15325:2;15329:12;15297:27;:45::i;:::-;14647:702;14294:1055:::0;;;;;;;;;;;;:::o;3585:111::-;3639:20;3678:11;3671:18;;3585:111;:::o;10204:1750::-;10362:20;10396;10430:19;10463;10496:27;10537:32;10594:15;10633:150;10672:19;:26;;;;;;;;;;:::i;:::-;10700:19;:26;;;;;;;;;;:::i;:::-;10728:19;:27;;;10757:12;10633:21;:150::i;:::-;10594:199;;10837:7;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10807:49;;:19;:26;;;;;;;;;;:::i;:::-;:49;;;10803:89;;10865:27;;;;;;;;;;;;;;10803:89;10937:8;10907:38;;:19;:26;;;;;;;;;;:::i;:::-;:38;;;:82;;;;;10980:9;10949:19;:27;;;:40;10907:82;10903:893;;;11005:104;11023:19;:26;;;;;;;;;;:::i;:::-;11051:10;11071:7;11081:19;:27;;;11005:17;:104::i;:::-;11123:55;11158:7;11168:9;11123:26;:55::i;:::-;10903:893;;;11229:8;11199:38;;:19;:26;;;;;;;;;;:::i;:::-;:38;;;:82;;;;;11272:9;11241:19;:27;;;:40;11199:82;11195:601;;;11297:104;11315:19;:26;;;;;;;;;;:::i;:::-;11343:10;11363:7;11373:19;:27;;;11297:17;:104::i;:::-;11415:55;11450:7;11460:9;11415:26;:55::i;:::-;11195:601;;;11574:19;:26;;;;;;;;;;:::i;:::-;11627:19;:26;;;;;;;;;;:::i;:::-;11672:19;:27;;;11717:19;:27;;;11762:9;11508:277;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;11195:601;10903:893;11904:43;11918:19;11939:7;11904:13;:43::i;:::-;11806:141;;;;;;;;;;;;;;;;;;;;;;;;10584:1370;10204:1750;;;;;;;:::o;19167:902::-;19404:26;19360:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;19389:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;19442:22:::2;19467:59;19477:4;:17;;;19496:4;:13;;;19511:4;:14;;;19467:9;:59::i;:::-;19442:84;;19563:62;19577:4;:13;;;19592:5;19599:4;:14;;;19615:9;19563:13;:62::i;:::-;19551:74;;19659:11;19644:9;19654:1;19644:12;;;;;;;;:::i;:::-;;;;;;;;:26;19640:95;;;19709:11;19722:9;19732:1;19722:12;;;;;;;;:::i;:::-;;;;;;;;19679:56;;;;;;;;;;;;:::i;:::-;;;;;;;;19640:95;19750:72;19768:4;:14;;;19783:1;19768:17;;;;;;;;:::i;:::-;;;;;;;;19787:10;19799:5;19805:1;19799:8;;;;;;;;:::i;:::-;;;;;;;;19809:9;19819:1;19809:12;;;;;;;;:::i;:::-;;;;;;;;19750:17;:72::i;:::-;19837:22;19862:78;19888:5;19895:4;:13;;;19910:4;:14;;;19926:9;19937:2;19862:25;:78::i;:::-;19837:103;;19976:9;19959:14;:26;19955:97;;;20026:9;20037:14;19994:58;;;;;;;;;;;;:::i;:::-;;;;;;;;19955:97;19537:526;19432:637;2150:1:::1;19167:902:::0;;;;;;;;:::o;6233:272::-;6362:16;6380:21;6403:11;6463:4;:14;;;6478:9;6489:8;6463:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6430:68;;;;;;;;;;;;6233:272;;;;;;;:::o;16784:915::-;17035:17;16991:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;17020:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;17119:8:::2;17068:60;;:4;:14;;;17083:4;:17;;;:24;17068:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;17064:175;;17186:4;:14;;;17201:4;:17;;;:24;17186:40;;;;;;;;:::i;:::-;;;;;;;;17151:77;;;;;;;;;;;:::i;:::-;;;;;;;;17064:175;17249:22;17274:59;17284:4;:17;;;17303:4;:13;;;17318:4;:14;;;17274:9;:59::i;:::-;17249:84;;17344:68;17362:4;:14;;;17377:1;17362:17;;;;;;;;:::i;:::-;;;;;;;;17381:10;17393:5;17399:1;17393:8;;;;;;;;:::i;:::-;;;;;;;;17403;17344:17;:68::i;:::-;17435:88;17461:8;17471:5;17478:4;:13;;;17493:4;:14;;;17517:4;17435:25;:88::i;:::-;17423:100;;17559:9;17538:18;:30;17534:105;;;17609:18;17629:9;17577:62;;;;;;;;;;;;:::i;:::-;;;;;;;;17534:105;17650:42;17678:2;17682:9;17650:27;:42::i;:::-;17054:645;2150:1:::1;16784:915:::0;;;;;;;;:::o;6969:274::-;7100:20;7122:17;7141:11;7201:4;:15;;;7217:8;7227;7201:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7168:68;;;;;;;;;;;;6969:274;;;;;;;:::o;8515:1049::-;8651:20;8685;8719:19;8752;8785:27;8826:32;8883:14;8921:150;8960:19;:26;;;;;;;;;;:::i;:::-;8988:19;:26;;;;;;;;;;:::i;:::-;9016:19;:27;;;9045:12;8921:21;:150::i;:::-;8883:198;;9125:6;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9095:48;;:19;:26;;;;;;;;;;:::i;:::-;:48;;;9091:88;;9152:27;;;;;;;;;;;;;;9091:88;9190:103;9208:19;:26;;;;;;;;;;:::i;:::-;9236:10;9256:6;9265:19;:27;;;9190:17;:103::i;:::-;9303;9321:19;:26;;;;;;;;;;:::i;:::-;9349:10;9369:6;9378:19;:27;;;9303:17;:103::i;:::-;9515:42;9529:19;9550:6;9515:13;:42::i;:::-;9417:140;;;;;;;;;;;;;;;;;;;;;;;;8873:691;8515:1049;;;;;;;:::o;18042:731::-;18271:17;18211:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;18248:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;18336:8:::2;18308:37;;:4;:14;;;18323:1;18308:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;18304:104;;18389:4;:14;;;18404:1;18389:17;;;;;;;;:::i;:::-;;;;;;;;18354:54;;;;;;;;;;;:::i;:::-;;;;;;;;18304:104;18419:22;18444:59;18454:4;:17;;;18473:4;:13;;;18488:4;:14;;;18444:9;:59::i;:::-;18419:84;;18514:47;18541:5;18547:1;18541:8;;;;;;;;:::i;:::-;;;;;;;;18551:9;18514:26;:47::i;:::-;18584:78;18610:9;18621:5;18628:4;:13;;;18643:4;:14;;;18659:2;18584:25;:78::i;:::-;18572:90;;18692:9;18677:12;:24;18673:93;;;18742:12;18756:9;18710:56;;;;;;;;;;;;:::i;:::-;;;;;;;;18673:93;18294:479;2150:1:::1;18042:731:::0;;;;;;;:::o;4579:126::-;4638:28;4685:13;4678:20;;4579:126;:::o;4337:113::-;4393:21;4433:10;4426:17;;4337:113;:::o;12672:755::-;12983:15;13000;12964:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;13027:15:::1;13053:60;13075:6;13083;13091:7;13053:60;;13100:12;13053:21;:60::i;:::-;13027:87;;13124:17;13154:7;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13144:29;;:6;:29;;;;13124:49;;13188:12;13184:69;;;13230:10;13242;13202:51;;;;;;;;13184:69;13285:67;13302:7;13311:10;13323;13335:3;13340:7;13349:2;13285:16;:67::i;:::-;13264:88;;;;;;;;13367:12;13363:57;;;13403:7;13412;13381:39;;;;;;;;13363:57;13017:410;;12672:755:::0;;;;;;;;;;;;;:::o;5617:137::-;5698:7;5724:4;:19;;;5744:2;5724:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5717:30;;5617:137;;;;:::o;26266:915::-;26514:17;26470:8;2070;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;26499:4:::1;2265:1;2237:4;:17;;;:24;:29;:81;;;;2294:4;:17;;;:24;2270:4;:13;;;:20;:48;;2237:81;:154;;;;2370:4;:14;;;:21;2365:1;2338:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2237:154;2220:216;;;2409:27;;;;;;;;;;;;;;2220:216;26575:8:::2;26547:37;;:4;:14;;;26562:1;26547:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;26543:104;;26628:4;:14;;;26643:1;26628:17;;;;;;;;:::i;:::-;;;;;;;;26593:54;;;;;;;;;;;:::i;:::-;;;;;;;;26543:104;26658:22;26683:59;26693:4;:17;;;26712:4;:13;;;26727:4;:14;;;26683:9;:59::i;:::-;26658:84;;26753:18;26774:4;:14;;;26789:5;:12;26774:28;;;;;;;;:::i;:::-;;;;;;;;26753:49;;26813:21;26837:11;:21;;;26859:2;26837:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26813:49;;26873:47;26900:5;26906:1;26900:8;;;;;;;;:::i;:::-;;;;;;;;26910:9;26873:26;:47::i;:::-;26931:76;26966:5;26973:4;:13;;;26988:4;:14;;;27004:2;26931:34;:76::i;:::-;27058:13;27030:11;:21;;;27052:2;27030:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;27018:53;;27100:9;27085:12;:24;27081:93;;;27150:12;27164:9;27118:56;;;;;;;;;;;;:::i;:::-;;;;;;;;27081:93;26533:648;;;2150:1:::1;26266:915:::0;;;;;;;:::o;28255:242::-;1923:11;1907:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1893:51;;:10;:51;;;1889:91;;1953:27;;;;;;;;;;;;;;1889:91;28432:7:::1;:25;;;28466:4;28473:2;28477:3;;28482:7;;28432:58;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28255:242:::0;;;;;;:::o;5267:143::-;5352:6;5377:4;:19;;;5397:5;5377:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5370:33;;5267:143;;;;:::o;43219:565::-;43369:22;43429:12;:19;43415:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43407:42;;43460:12;43482:16;43501:9;43511:1;43501:12;;;;;;;;:::i;:::-;;;;;;;;43482:31;;43552:9;43547:221;43567:5;:12;43563:1;:16;43547:221;;;43612:9;43604:17;;43651:9;43665:1;43661;:5;43651:16;;;;;;;;:::i;:::-;;;;;;;;43639:28;;43697:56;43706:5;43713:9;43724:12;43737:1;43724:15;;;;;;;;:::i;:::-;;;;;;;;43741:8;43750:1;43741:11;;;;;;;;:::i;:::-;;;;;;;;43697:8;:56::i;:::-;43686:5;43692:1;43686:8;;;;;;;;:::i;:::-;;;;;;;:67;;;;;;;;;;;43581:3;;;;;43547:221;;;;43397:387;;43219:565;;;;;:::o;44417:182::-;44532:1;44522:6;:11;44518:24;44535:7;44518:24;44552:40;44575:4;44581:2;44585:6;44552:5;:22;;;;:40;;;;;;:::i;:::-;44417:182;;;;;:::o;39253:1653::-;39443:12;39465:15;39490:17;39517:12;39540:16;39559:9;39569:1;39559:12;;;;;;;;:::i;:::-;;;;;;;;39540:31;;39611:9;39606:1284;39626:5;:12;39622:1;:16;39606:1284;;;39670:5;39676:1;39670:8;;;;;;;;:::i;:::-;;;;;;;;39663:15;;39706:8;39715:1;39706:11;;;;;;;;:::i;:::-;;;;;;;;39696:21;;39744:9;39736:17;;39783:9;39797:1;39793;:5;39783:16;;;;;;;;:::i;:::-;;;;;;;;39771:28;;39839:5;:12;39834:1;39830;:5;:21;:41;;39859:5;39869:1;39865;:5;39859:12;;;;;;;;:::i;:::-;;;;;;;;39830:41;;;39854:2;39830:41;39818:53;;39905:10;39894:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;39890:986;;39940:17;39959;39990:4;39981:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39939:70;;;;;;;;;40043:9;40035:17;;:5;:17;;;40031:559;;;40080:16;40123:9;40099:5;:15;;;40115:4;40099:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;40080:52;;40158:17;40178:43;40200:9;40211;40178:8;:21;;:43;;;;;:::i;:::-;40158:63;;40257:4;40248:19;;;40268:1;40271:9;40282;40248:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40054:265;;40031:559;;;40351:16;40394:9;40370:5;:15;;;40386:4;40370:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;40351:52;;40429:17;40449:43;40471:9;40482;40449:8;:21;;:43;;;;;:::i;:::-;40429:63;;40528:4;40519:19;;;40539:9;40550:1;40553:9;40519:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40325:265;;40031:559;39917:691;;39890:986;;;40629:10;40618:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;40614:262;;40677:4;40663:24;;;40715:4;40701:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40688:41;;:9;:41;;;40731:9;40663:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;40614:262;;;40796:4;40788:18;;;40828:4;40820:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40807:38;;:9;:38;;;40847:9;40788:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40614:262;39890:986;39640:3;;;;;39606:1284;;;;39433:1473;;;;;39253:1653;;;;:::o;45595:190::-;45692:1;45682:6;:11;45678:24;45695:7;45678:24;45712:8;:17;;;45730:6;45712:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45747:31;45767:2;45771:6;45747:19;:31::i;:::-;45595:190;;;:::o;31775:1399::-;31955:26;32019:9;:16;32005:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31993:43;;32142:9;32116;32126:5;:12;32116:23;;;;;;;;:::i;:::-;;;;;;;:35;;;;;32167:9;32179:5;:12;32167:24;;32162:1006;32198:1;32193;:6;32162:1006;;32220:12;32235:9;32249:1;32245;:5;;;;:::i;:::-;32235:16;;;;;;;;:::i;:::-;;;;;;;;32220:31;;32265:15;32283:8;32296:1;32292;:5;;;;:::i;:::-;32283:15;;;;;;;;:::i;:::-;;;;;;;;32265:33;;32312:12;32327:5;32337:1;32333;:5;;;;:::i;:::-;32327:12;;;;;;;;:::i;:::-;;;;;;;;32312:27;;32369:10;32358:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;32354:804;;32400:17;32419:18;32451:4;32442:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32399:71;;;;;;;;;32500:9;32510:1;32500:12;;;;;;;;:::i;:::-;;;;;;;;32492:20;;:5;:20;;;32488:116;;;32563:10;32575:9;32536:49;;;;;;;;32488:116;32622:18;32643:9;32653:1;32643:12;;;;;;;;:::i;:::-;;;;;;;;32622:33;;32700:45;32723:9;32734:10;32700;:22;;:45;;;;;:::i;:::-;32673:73;;:9;32687:1;32683;:5;;;;:::i;:::-;32673:16;;;;;;;;:::i;:::-;;;;;;;:73;;;;;32381:380;;;32354:804;;;32782:10;32771:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;32767:391;;32834:13;:23;;;32893:4;32908:9;32918:1;32908:12;;;;;;;;:::i;:::-;;;;;;;;32955:5;32923:37;;32937:4;32923:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;;32834:144;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32812:166;32813:9;32827:1;32823;:5;;;;:::i;:::-;32813:16;;;;;;;;:::i;:::-;;;;;;;32812:166;;;;;32767:391;;;33060:83;33078:4;33093:9;33103:1;33093:12;;;;;;;;:::i;:::-;;;;;;;;33137:5;33108:34;;33116:4;33108:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;33060:9;:83::i;:::-;33017:126;;;;;;;;33018:9;33032:1;33028;:5;;;;:::i;:::-;33018:16;;;;;;;;:::i;:::-;;;;;;;33017:126;;;;;32767:391;32354:804;32206:962;;;32201:3;;;;;:::i;:::-;;;;32162:1006;;;;31775:1399;;;;;;:::o;45191:207::-;45287:1;45277:6;:11;45273:24;45290:7;45273:24;45307:8;:16;;;45331:6;45307:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45350:41;45380:2;45384:6;45357:8;45350:29;;;;:41;;;;;:::i;:::-;45191:207;;;:::o;37173:1735::-;37389:17;37418:12;37440:17;37467:12;37489:15;37515:16;37534:9;37544:1;37534:12;;;;;;;;:::i;:::-;;;;;;;;37515:31;;37586:9;37581:1311;37601:5;:12;37597:1;:16;37581:1311;;;37645:5;37651:1;37645:8;;;;;;;;:::i;:::-;;;;;;;;37638:15;;37681:8;37690:1;37681:11;;;;;;;;:::i;:::-;;;;;;;;37671:21;;37719:9;37711:17;;37758:9;37772:1;37768;:5;37758:16;;;;;;;;:::i;:::-;;;;;;;;37746:28;;37814:5;:12;37809:1;37805;:5;:21;:41;;37834:5;37844:1;37840;:5;37834:12;;;;;;;;:::i;:::-;;;;;;;;37805:41;;;37829:2;37805:41;37793:53;;37880:10;37869:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;37865:1013;;37926:9;37940:1;37936;:5;37926:16;;;;;;;;:::i;:::-;;;;;;;;37914:28;;37976:9;37968:17;;:5;:17;;;37964:223;;;38022:4;38013:19;;;38033:1;38036:9;38047;38013:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37964:223;;;38125:4;38116:19;;;38136:9;38147:1;38150:9;38116:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37964:223;37865:1013;;;38226:10;38215:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;38211:667;;38260:13;38303:4;38289:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38276:41;;:9;:41;;;38260:57;;38341:18;38361;38397:4;38383:24;;;38408:8;38418:9;38383:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38340:88;;;;38455:8;38451:85;;;38477:10;38465:22;;38451:85;;;38526:10;38514:22;;38451:85;38238:317;;;38211:667;;;38583:13;38620:4;38612:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38599:38;;:9;:38;;;38583:54;;38661:18;38681;38703:48;38711:4;38703:18;;;38722:8;38732:9;38703:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;:48::i;:::-;38660:91;;;;;;;;38778:8;38774:85;;;38800:10;38788:22;;38774:85;;;38849:10;38837:22;;38774:85;38561:317;;;38211:667;37865:1013;37615:3;;;;;37581:1311;;;;37408:1500;;;;;37173:1735;;;;;;;:::o;44765:231::-;44854:1;44844:6;:11;44840:24;44857:7;44840:24;44875:12;44892:2;:7;;44907:6;44892:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44874:44;;;44933:7;44928:61;;44978:2;44982:6;44949:40;;;;;;;;;;;;:::i;:::-;;;;;;;;44928:61;44830:166;44765:231;;;:::o;34793:1956::-;34999:17;35028:12;35050:15;35075:17;35102:12;35125:16;35144:9;35154:1;35144:12;;;;;;;;:::i;:::-;;;;;;;;35125:31;;35178:8;35166:20;;35226:9;35221:1512;35241:5;:12;35237:1;:16;35221:1512;;;35285:5;35291:1;35285:8;;;;;;;;:::i;:::-;;;;;;;;35278:15;;35321:8;35330:1;35321:11;;;;;;;;:::i;:::-;;;;;;;;35311:21;;35359:9;35351:17;;35398:9;35412:1;35408;:5;35398:16;;;;;;;;:::i;:::-;;;;;;;;35386:28;;35454:5;:12;35449:1;35445;:5;:21;:41;;35474:5;35484:1;35480;:5;35474:12;;;;;;;;:::i;:::-;;;;;;;;35445:41;;;35469:2;35445:41;35433:53;;35520:10;35509:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;35505:1214;;35555:16;35573;35603:4;35594:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35554:68;;;;;;;;;35657:9;35649:17;;:5;:17;;;35645:383;;;35706:42;35729:8;35739;35706:9;:22;;:42;;;;;:::i;:::-;35694:54;;35783:4;35774:19;;;35794:1;35797:9;35808;35774:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35645:383;;;35889:42;35912:8;35922;35889:9;:22;;:42;;;;;:::i;:::-;35877:54;;35966:4;35957:19;;;35977:9;35988:1;35991:9;35957:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35645:383;35532:514;;35505:1214;;;36067:10;36056:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;36052:667;;36101:13;36144:4;36130:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36117:41;;:9;:41;;;36101:57;;36182:18;36202;36238:4;36224:24;;;36249:8;36259:9;36224:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36181:88;;;;36296:8;36292:85;;;36318:10;36306:22;;36292:85;;;36367:10;36355:22;;36292:85;36079:317;;;36052:667;;;36424:13;36461:4;36453:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36440:38;;:9;:38;;;36424:54;;36502:18;36522;36544:48;36552:4;36544:18;;;36563:8;36573:9;36544:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;:48::i;:::-;36501:91;;;;;;;;36619:8;36615:85;;;36641:10;36629:22;;36615:85;;;36690:10;36678:22;;36615:85;36402:317;;;36052:667;35505:1214;35255:3;;;;;35221:1512;;;;35018:1731;;;;;34793:1956;;;;;;;:::o;1441:220:25:-;1531:17;1574:23;;;1599:9;1610:6;1551:66;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1531:86;;1628:26;1642:5;1649:4;1628:13;:26::i;:::-;1521:140;1441:220;;;:::o;41284:704:4:-;41425:14;41470:10;41459:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;41455:392;;41513:14;:35;;;41549:6;41557;41565:7;41513:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;;41496:85;;41455:392;;;41613:12;41602:23;;;;;;;;:::i;:::-;;:7;:23;;;;;;;;:::i;:::-;;;41598:249;;41658:11;:32;;;41691:6;41699;41707:7;41658:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;;41641:82;;41598:249;;;41771:11;:32;;;41804:6;41812;41820:7;41771:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;;41754:82;;41598:249;41455:392;41879:1;41861:20;;:6;:20;;;41857:125;;41937:6;41954;41963:7;41904:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;41857:125;41284:704;;;;;;:::o;33699:670::-;33910:15;33927;33955:30;33989:4;:9;;;33999:10;34011:2;34015:3;34020:7;33989:39;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33954:74;;34044:9;34039:160;34059:13;:20;34055:1;:24;34039:160;;;34111:26;:13;34125:1;34111:16;;;;;;;;:::i;:::-;;;;;;;;:24;:26::i;:::-;34100:37;;;;;;;:::i;:::-;;;34162:26;:13;34176:1;34162:16;;;;;;;;:::i;:::-;;;;;;;;:24;:26::i;:::-;34151:37;;;;;;;:::i;:::-;;;34081:3;;;;:::i;:::-;;;34039:160;;;;34223:10;34213:7;:20;:44;;;;34247:10;34237:7;:20;34213:44;34209:154;;;34311:10;34323:7;34332:10;34344:7;34280:72;;;;;;;;;;;;;;:::i;:::-;;;;;;;;34209:154;33944:425;33699:670;;;;;;;;;:::o;43995:154::-;44092:1;44082:6;:11;44078:24;44095:7;44078:24;44112:30;44131:2;44135:6;44112:5;:18;;;;:30;;;;;:::i;:::-;43995:154;;;;:::o;28978:2489::-;29124:20;29158;29192:19;29225;29258:27;29299:32;29080:3;:12;;;2070:8;2052:15;:26;2048:92;;;2114:8;2124:15;2087:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2048:92;29407:3:::1;:17;;;;;;;;:::i;:::-;:24;;29384:3;:12;;;;;;;;:::i;:::-;:19;;:47;;:98;;;;29458:3;:17;;;;;;;;:::i;:::-;:24;;29435:3;:12;;;;;;;;:::i;:::-;:19;;:47;;29384:98;29380:171;;;29509:27;;;;;;;;;;;;;;29380:171;29591:16;29569:38:::0;::::1;:3;:19;;;:38;:75;;;;29628:16;29611:33:::0;::::1;:3;:14;;;:33;29569:75;29565:186;;;29700:3;:19;;;29721:3;:14;;;29671:65;;;;;;;;;;;;:::i;:::-;;;;;;;;29565:186;29765:33;29815:3;:12;;;;;;;;:::i;:::-;:19;;29801:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29765:70;;29876:3;:12;;;;;;;;:::i;:::-;:19;;29862:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29849:47;;29928:17;29948:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29928:38;;;;30048:9;30031:3;:14;;;30009:3;:19;;;:36;:48;:100;;;;30090:3;:19;;;30073:3;:14;;;30061:9;:26;:48;30009:100;29984:266;;;30184:3;:19;;;30205:3;:14;;;30221:9;30157:74;;;;;;;;;;;;;:::i;:::-;;;;;;;;29984:266;30273:9;30268:501;30288:16;:23;30284:1;:27;30268:501;;;30340:10;30373:3;:12;;;;;;;;:::i;:::-;30386:1;30373:15;;;;;;;:::i;:::-;;;;;;;;30360:9;30353:35;30340:48;;30421:1;30415:3;:7;:42;;;;30441:16;30426:31:::0;::::1;30434:3;30426:31;30415:42;30411:81;;;30488:3;30466:26;;;;;;;;;;;:::i;:::-;;;;;;;;30411:81;30538:3;30514:10;30525:1;30514:13;;;;;;;;:::i;:::-;;;;;;;:28;;;::::0;::::1;30586:164;30655:3;:17;;;;;;;;:::i;:::-;30673:1;30655:20;;;;;;;:::i;:::-;;;;;;;;30685:3;:17;;;;;;;;:::i;:::-;30703:1;30685:20;;;;;;;:::i;:::-;;;;;;;;30723:3;30586:36;:164::i;:::-;30564:16;30581:1;30564:19;;;;;;;;:::i;:::-;;;;;;;:186;;;::::0;::::1;30318:451;30313:3;;;;;30268:501;;;;29910:873;30797:23;30834:19:::0;30917:4:::1;:9;;;30927:3;:6;;;;;;;;;;:::i;:::-;30935:16;30953:3;:12;;;;;;;;;;:::i;:::-;30917:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30867:99;;;;;;;;;;;;30981:20;31004:32;31024:11;31004:15;:19;;:32;;;;:::i;:::-;30981:55;;31066:22;:12;:20;:22::i;:::-;31051:37;;;;31117:22;:12;:20;:22::i;:::-;31102:37;;;;31173:3;:14;;;31158:12;:29;:62;;;;31206:3;:14;;;31191:12;:29;31158:62;31154:198;;;31278:3;:14;;;31294:12;31308:3;:14;;;31324:12;31247:90;;;;;;;;;;;;;;:::i;:::-;;;;;;;;31154:198;31380:21;:11;:19;:21::i;:::-;31366:35;;;;31429:21;:11;:19;:21::i;:::-;31415:35;;;;29356:2105;;;;28978:2489:::0;;;;;;;;;:::o;42416:487::-;42544:12;42587:10;42576:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;42572:325;;42620:10;:18;;;42647:6;42664;42620:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42613:59;;42706:1;42690:18;;:4;:18;;;42686:98;;42750:6;42767;42776:7;42717:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;42686:98;42572:325;;;42830:55;42852:6;42860;42868:7;42877;42830:21;:55::i;:::-;42815:71;;42572:325;42416:487;;;;;;:::o;966:250:25:-;1075:17;1118:27;;;1147:5;1154:9;1165:6;1095:77;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1075:97;;1183:26;1197:5;1204:4;1183:13;:26::i;:::-;1065:151;966:250;;;;:::o;1392:534:22:-;1518:17;1567:1;1555:8;:13;1551:58;;1577:32;;;;;;;;;;;;;;1551:58;1636:1;1623:9;:14;:33;;;;1655:1;1641:10;:15;1623:33;1619:81;;;1665:35;;;;;;;;;;;;;;1619:81;1710:23;1747:3;1736:8;:14;;;;:::i;:::-;1710:40;;1760:17;1798:10;1780:15;:28;;;;:::i;:::-;1760:48;;1818:19;1859:15;1852:4;1840:9;:16;;;;:::i;:::-;:34;;;;:::i;:::-;1818:56;;1908:11;1896:9;:23;;;;:::i;:::-;1884:35;;1541:385;;;1392:534;;;;;:::o;2044:483::-;2170:16;2219:1;2206:9;:14;2202:59;;2229:32;;;;;;;;;;;;;;2202:59;2288:1;2275:9;:14;:33;;;;2307:1;2293:10;:15;2275:33;2271:81;;;2317:35;;;;;;;;;;;;;;2271:81;2362:17;2406:4;2394:9;2382;:21;;;;:::i;:::-;:28;;;;:::i;:::-;2362:48;;2420:19;2469:3;2456:9;2443:10;:22;;;;:::i;:::-;2442:30;;;;:::i;:::-;2420:52;;2519:1;2505:11;2493:9;:23;;;;:::i;:::-;:27;;;;:::i;:::-;2482:38;;2192:335;;2044:483;;;;;:::o;2543:178:29:-;2593:10;2605;2663:8;2660:1;2656:16;2650:22;;2703:1;2695:6;2691:14;2685:20;;2543:178;;;:::o;1667:757:25:-;1742:12;1801:1;1795:4;1788:15;1886:4;1880;1873;1867:11;1860:4;1854;1850:15;1847:1;1840:5;1833;1828:63;1817:74;;1912:7;1937:1;1932:194;;;;2172:16;2210:1;2205:56;;;;2328:1;2321:4;2315:11;2312:18;2303:7;2299:32;2288:43;;2165:168;;2205:56;2251:5;2239:18;2232:26;2225:34;2214:45;;2165:168;;1905:442;;1932:194;1960:16;1957:155;;;2026:16;2020:4;2014;1999:44;2077:16;2071:4;2064:30;1957:155;1905:442;;2372:7;2367:50;;2388:29;;;;;;;;;;;;;;2367:50;1732:692;1667:757;;:::o;2936:132:29:-;2987:9;3043:8;3040:1;3036:16;3031:21;;2936:132;;;:::o;3285:130::-;3336:9;3397:1;3389:6;3385:14;3380:19;;3285:130;;;:::o;1208:392:28:-;1332:14;1371:69;1382:13;1371:69;;669:18:27;725:2:28;1371:6;:10;;:69;;;;;;:::i;:::-;1362:78;;1459:69;1470:13;1459:69;;669:18:27;668:2:28;1459:6;:10;;:69;;;;;;:::i;:::-;1450:78;;1547:46;1558:2;1547:46;;557:8:27;612:1:28;1547:6;:10;;:46;;;;;;:::i;:::-;1538:55;;1208:392;;;;;:::o;5534:263:29:-;5592:9;5648:1;5645;5641:9;5636:14;;5678:1;5674;:5;:50;;;;5721:1;5713:10;;5683:41;;5699:1;5691:10;;5683:41;;;5674:50;5670:121;;;5747:33;;;;;;;;;;;;;;5670:121;5534:263;;;;:::o;1121:317:27:-;1243:18;1343:4;1335:6;1331:17;1327:22;1318:7;1314:36;1300:50;;1415:4;1408:5;1404:16;1396:6;1392:29;1380:10;1377:45;1363:59;;1121:317;;;;;;:::o;7:75:33:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:117::-;1638:1;1635;1628:12;1652:117;1761:1;1758;1751:12;1775:311;1852:4;1942:18;1934:6;1931:30;1928:56;;;1964:18;;:::i;:::-;1928:56;2014:4;2006:6;2002:17;1994:25;;2074:4;2068;2064:15;2056:23;;1775:311;;;:::o;2092:117::-;2201:1;2198;2191:12;2232:710;2328:5;2353:81;2369:64;2426:6;2369:64;:::i;:::-;2353:81;:::i;:::-;2344:90;;2454:5;2483:6;2476:5;2469:21;2517:4;2510:5;2506:16;2499:23;;2570:4;2562:6;2558:17;2550:6;2546:30;2599:3;2591:6;2588:15;2585:122;;;2618:79;;:::i;:::-;2585:122;2733:6;2716:220;2750:6;2745:3;2742:15;2716:220;;;2825:3;2854:37;2887:3;2875:10;2854:37;:::i;:::-;2849:3;2842:50;2921:4;2916:3;2912:14;2905:21;;2792:144;2776:4;2771:3;2767:14;2760:21;;2716:220;;;2720:21;2334:608;;2232:710;;;;;:::o;2965:370::-;3036:5;3085:3;3078:4;3070:6;3066:17;3062:27;3052:122;;3093:79;;:::i;:::-;3052:122;3210:6;3197:20;3235:94;3325:3;3317:6;3310:4;3302:6;3298:17;3235:94;:::i;:::-;3226:103;;3042:293;2965:370;;;;:::o;3341:323::-;3430:4;3520:18;3512:6;3509:30;3506:56;;;3542:18;;:::i;:::-;3506:56;3592:4;3584:6;3580:17;3572:25;;3652:4;3646;3642:15;3634:23;;3341:323;;;:::o;3670:111::-;3755:1;3748:5;3745:12;3735:40;;3771:1;3768;3761:12;3735:40;3670:111;:::o;3787:163::-;3845:5;3883:6;3870:20;3861:29;;3899:45;3938:5;3899:45;:::i;:::-;3787:163;;;;:::o;3988:746::-;4096:5;4121:93;4137:76;4206:6;4137:76;:::i;:::-;4121:93;:::i;:::-;4112:102;;4234:5;4263:6;4256:5;4249:21;4297:4;4290:5;4286:16;4279:23;;4350:4;4342:6;4338:17;4330:6;4326:30;4379:3;4371:6;4368:15;4365:122;;;4398:79;;:::i;:::-;4365:122;4513:6;4496:232;4530:6;4525:3;4522:15;4496:232;;;4605:3;4634:49;4679:3;4667:10;4634:49;:::i;:::-;4629:3;4622:62;4713:4;4708:3;4704:14;4697:21;;4572:156;4556:4;4551:3;4547:14;4540:21;;4496:232;;;4500:21;4102:632;;3988:746;;;;;:::o;4772:394::-;4855:5;4904:3;4897:4;4889:6;4885:17;4881:27;4871:122;;4912:79;;:::i;:::-;4871:122;5029:6;5016:20;5054:106;5156:3;5148:6;5141:4;5133:6;5129:17;5054:106;:::i;:::-;5045:115;;4861:305;4772:394;;;;:::o;5172:325::-;5263:4;5353:18;5345:6;5342:30;5339:56;;;5375:18;;:::i;:::-;5339:56;5425:4;5417:6;5413:17;5405:25;;5485:4;5479;5475:15;5467:23;;5172:325;;;:::o;5503:126::-;5540:7;5580:42;5573:5;5569:54;5558:65;;5503:126;;;:::o;5635:96::-;5672:7;5701:24;5719:5;5701:24;:::i;:::-;5690:35;;5635:96;;;:::o;5737:110::-;5788:7;5817:24;5835:5;5817:24;:::i;:::-;5806:35;;5737:110;;;:::o;5853:150::-;5940:38;5972:5;5940:38;:::i;:::-;5933:5;5930:49;5920:77;;5993:1;5990;5983:12;5920:77;5853:150;:::o;6009:167::-;6069:5;6107:6;6094:20;6085:29;;6123:47;6164:5;6123:47;:::i;:::-;6009:167;;;;:::o;6207:752::-;6317:5;6342:95;6358:78;6429:6;6358:78;:::i;:::-;6342:95;:::i;:::-;6333:104;;6457:5;6486:6;6479:5;6472:21;6520:4;6513:5;6509:16;6502:23;;6573:4;6565:6;6561:17;6553:6;6549:30;6602:3;6594:6;6591:15;6588:122;;;6621:79;;:::i;:::-;6588:122;6736:6;6719:234;6753:6;6748:3;6745:15;6719:234;;;6828:3;6857:51;6904:3;6892:10;6857:51;:::i;:::-;6852:3;6845:64;6938:4;6933:3;6929:14;6922:21;;6795:158;6779:4;6774:3;6770:14;6763:21;;6719:234;;;6723:21;6323:636;;6207:752;;;;;:::o;6990:398::-;7075:5;7124:3;7117:4;7109:6;7105:17;7101:27;7091:122;;7132:79;;:::i;:::-;7091:122;7249:6;7236:20;7274:108;7378:3;7370:6;7363:4;7355:6;7351:17;7274:108;:::i;:::-;7265:117;;7081:307;6990:398;;;;:::o;7423:1330::-;7494:5;7538:4;7526:9;7521:3;7517:19;7513:30;7510:117;;;7546:79;;:::i;:::-;7510:117;7645:21;7661:4;7645:21;:::i;:::-;7636:30;;7761:1;7750:9;7746:17;7733:31;7791:18;7783:6;7780:30;7777:117;;;7813:79;;:::i;:::-;7777:117;7933:74;8003:3;7994:6;7983:9;7979:22;7933:74;:::i;:::-;7926:4;7919:5;7915:16;7908:100;7676:343;8110:2;8099:9;8095:18;8082:32;8141:18;8133:6;8130:30;8127:117;;;8163:79;;:::i;:::-;8127:117;8283:86;8365:3;8356:6;8345:9;8341:22;8283:86;:::i;:::-;8276:4;8269:5;8265:16;8258:112;8029:352;8473:2;8462:9;8458:18;8445:32;8504:18;8496:6;8493:30;8490:117;;;8526:79;;:::i;:::-;8490:117;8646:88;8730:3;8721:6;8710:9;8706:22;8646:88;:::i;:::-;8639:4;8632:5;8628:16;8621:114;8391:355;7423:1330;;;;:::o;8759:104::-;8804:7;8833:24;8851:5;8833:24;:::i;:::-;8822:35;;8759:104;;;:::o;8869:138::-;8950:32;8976:5;8950:32;:::i;:::-;8943:5;8940:43;8930:71;;8997:1;8994;8987:12;8930:71;8869:138;:::o;9013:155::-;9067:5;9105:6;9092:20;9083:29;;9121:41;9156:5;9121:41;:::i;:::-;9013:155;;;;:::o;9174:1131::-;9299:6;9307;9315;9323;9331;9380:3;9368:9;9359:7;9355:23;9351:33;9348:120;;;9387:79;;:::i;:::-;9348:120;9507:1;9532:53;9577:7;9568:6;9557:9;9553:22;9532:53;:::i;:::-;9522:63;;9478:117;9634:2;9660:53;9705:7;9696:6;9685:9;9681:22;9660:53;:::i;:::-;9650:63;;9605:118;9790:2;9779:9;9775:18;9762:32;9821:18;9813:6;9810:30;9807:117;;;9843:79;;:::i;:::-;9807:117;9948:75;10015:7;10006:6;9995:9;9991:22;9948:75;:::i;:::-;9938:85;;9733:300;10072:2;10098:61;10151:7;10142:6;10131:9;10127:22;10098:61;:::i;:::-;10088:71;;10043:126;10208:3;10235:53;10280:7;10271:6;10260:9;10256:22;10235:53;:::i;:::-;10225:63;;10179:119;9174:1131;;;;;;;;:::o;10311:118::-;10398:24;10416:5;10398:24;:::i;:::-;10393:3;10386:37;10311:118;;:::o;10435:222::-;10528:4;10566:2;10555:9;10551:18;10543:26;;10579:71;10647:1;10636:9;10632:17;10623:6;10579:71;:::i;:::-;10435:222;;;;:::o;10663:122::-;10736:24;10754:5;10736:24;:::i;:::-;10729:5;10726:35;10716:63;;10775:1;10772;10765:12;10716:63;10663:122;:::o;10791:139::-;10837:5;10875:6;10862:20;10853:29;;10891:33;10918:5;10891:33;:::i;:::-;10791:139;;;;:::o;10936:969::-;11044:6;11052;11060;11068;11117:3;11105:9;11096:7;11092:23;11088:33;11085:120;;;11124:79;;:::i;:::-;11085:120;11244:1;11269:53;11314:7;11305:6;11294:9;11290:22;11269:53;:::i;:::-;11259:63;;11215:117;11399:2;11388:9;11384:18;11371:32;11430:18;11422:6;11419:30;11416:117;;;11452:79;;:::i;:::-;11416:117;11557:75;11624:7;11615:6;11604:9;11600:22;11557:75;:::i;:::-;11547:85;;11342:300;11681:2;11707:53;11752:7;11743:6;11732:9;11728:22;11707:53;:::i;:::-;11697:63;;11652:118;11809:2;11835:53;11880:7;11871:6;11860:9;11856:22;11835:53;:::i;:::-;11825:63;;11780:118;10936:969;;;;;;;:::o;11911:114::-;11978:6;12012:5;12006:12;11996:22;;11911:114;;;:::o;12031:184::-;12130:11;12164:6;12159:3;12152:19;12204:4;12199:3;12195:14;12180:29;;12031:184;;;;:::o;12221:132::-;12288:4;12311:3;12303:11;;12341:4;12336:3;12332:14;12324:22;;12221:132;;;:::o;12359:108::-;12436:24;12454:5;12436:24;:::i;:::-;12431:3;12424:37;12359:108;;:::o;12473:179::-;12542:10;12563:46;12605:3;12597:6;12563:46;:::i;:::-;12641:4;12636:3;12632:14;12618:28;;12473:179;;;;:::o;12658:113::-;12728:4;12760;12755:3;12751:14;12743:22;;12658:113;;;:::o;12807:732::-;12926:3;12955:54;13003:5;12955:54;:::i;:::-;13025:86;13104:6;13099:3;13025:86;:::i;:::-;13018:93;;13135:56;13185:5;13135:56;:::i;:::-;13214:7;13245:1;13230:284;13255:6;13252:1;13249:13;13230:284;;;13331:6;13325:13;13358:63;13417:3;13402:13;13358:63;:::i;:::-;13351:70;;13444:60;13497:6;13444:60;:::i;:::-;13434:70;;13290:224;13277:1;13274;13270:9;13265:14;;13230:284;;;13234:14;13530:3;13523:10;;12931:608;;;12807:732;;;;:::o;13545:373::-;13688:4;13726:2;13715:9;13711:18;13703:26;;13775:9;13769:4;13765:20;13761:1;13750:9;13746:17;13739:47;13803:108;13906:4;13897:6;13803:108;:::i;:::-;13795:116;;13545:373;;;;:::o;13924:1115::-;14041:6;14049;14057;14065;14073;14122:3;14110:9;14101:7;14097:23;14093:33;14090:120;;;14129:79;;:::i;:::-;14090:120;14249:1;14274:53;14319:7;14310:6;14299:9;14295:22;14274:53;:::i;:::-;14264:63;;14220:117;14376:2;14402:53;14447:7;14438:6;14427:9;14423:22;14402:53;:::i;:::-;14392:63;;14347:118;14532:2;14521:9;14517:18;14504:32;14563:18;14555:6;14552:30;14549:117;;;14585:79;;:::i;:::-;14549:117;14690:75;14757:7;14748:6;14737:9;14733:22;14690:75;:::i;:::-;14680:85;;14475:300;14814:2;14840:53;14885:7;14876:6;14865:9;14861:22;14840:53;:::i;:::-;14830:63;;14785:118;14942:3;14969:53;15014:7;15005:6;14994:9;14990:22;14969:53;:::i;:::-;14959:63;;14913:119;13924:1115;;;;;;;;:::o;15045:60::-;15073:3;15094:5;15087:12;;15045:60;;;:::o;15111:142::-;15161:9;15194:53;15212:34;15221:24;15239:5;15221:24;:::i;:::-;15212:34;:::i;:::-;15194:53;:::i;:::-;15181:66;;15111:142;;;:::o;15259:126::-;15309:9;15342:37;15373:5;15342:37;:::i;:::-;15329:50;;15259:126;;;:::o;15391:145::-;15460:9;15493:37;15524:5;15493:37;:::i;:::-;15480:50;;15391:145;;;:::o;15542:169::-;15648:56;15698:5;15648:56;:::i;:::-;15643:3;15636:69;15542:169;;:::o;15717:260::-;15829:4;15867:2;15856:9;15852:18;15844:26;;15880:90;15967:1;15956:9;15952:17;15943:6;15880:90;:::i;:::-;15717:260;;;;:::o;15983:647::-;16074:6;16082;16090;16139:2;16127:9;16118:7;16114:23;16110:32;16107:119;;;16145:79;;:::i;:::-;16107:119;16265:1;16290:67;16349:7;16340:6;16329:9;16325:22;16290:67;:::i;:::-;16280:77;;16236:131;16406:2;16432:53;16477:7;16468:6;16457:9;16453:22;16432:53;:::i;:::-;16422:63;;16377:118;16534:2;16560:53;16605:7;16596:6;16585:9;16581:22;16560:53;:::i;:::-;16550:63;;16505:118;15983:647;;;;;:::o;16636:91::-;16672:7;16712:8;16705:5;16701:20;16690:31;;16636:91;;;:::o;16733:120::-;16805:23;16822:5;16805:23;:::i;:::-;16798:5;16795:34;16785:62;;16843:1;16840;16833:12;16785:62;16733:120;:::o;16859:137::-;16904:5;16942:6;16929:20;16920:29;;16958:32;16984:5;16958:32;:::i;:::-;16859:137;;;;:::o;17002:89::-;17038:7;17078:6;17071:5;17067:18;17056:29;;17002:89;;;:::o;17097:120::-;17169:23;17186:5;17169:23;:::i;:::-;17162:5;17159:34;17149:62;;17207:1;17204;17197:12;17149:62;17097:120;:::o;17223:137::-;17268:5;17306:6;17293:20;17284:29;;17322:32;17348:5;17322:32;:::i;:::-;17223:137;;;;:::o;17366:817::-;17478:6;17486;17494;17502;17551:3;17539:9;17530:7;17526:23;17522:33;17519:120;;;17558:79;;:::i;:::-;17519:120;17678:1;17703:67;17762:7;17753:6;17742:9;17738:22;17703:67;:::i;:::-;17693:77;;17649:131;17819:2;17845:67;17904:7;17895:6;17884:9;17880:22;17845:67;:::i;:::-;17835:77;;17790:132;17961:2;17987:52;18031:7;18022:6;18011:9;18007:22;17987:52;:::i;:::-;17977:62;;17932:117;18088:2;18114:52;18158:7;18149:6;18138:9;18134:22;18114:52;:::i;:::-;18104:62;;18059:117;17366:817;;;;;;;:::o;18189:142::-;18255:9;18288:37;18319:5;18288:37;:::i;:::-;18275:50;;18189:142;;;:::o;18337:163::-;18440:53;18487:5;18440:53;:::i;:::-;18435:3;18428:66;18337:163;;:::o;18506:254::-;18615:4;18653:2;18642:9;18638:18;18630:26;;18666:87;18750:1;18739:9;18735:17;18726:6;18666:87;:::i;:::-;18506:254;;;;:::o;18766:143::-;18833:9;18866:37;18897:5;18866:37;:::i;:::-;18853:50;;18766:143;;;:::o;18915:165::-;19019:54;19067:5;19019:54;:::i;:::-;19014:3;19007:67;18915:165;;:::o;19086:256::-;19196:4;19234:2;19223:9;19219:18;19211:26;;19247:88;19332:1;19321:9;19317:17;19308:6;19247:88;:::i;:::-;19086:256;;;;:::o;19348:151::-;19423:9;19456:37;19487:5;19456:37;:::i;:::-;19443:50;;19348:151;;;:::o;19505:181::-;19617:62;19673:5;19617:62;:::i;:::-;19612:3;19605:75;19505:181;;:::o;19692:272::-;19810:4;19848:2;19837:9;19833:18;19825:26;;19861:96;19954:1;19943:9;19939:17;19930:6;19861:96;:::i;:::-;19692:272;;;;:::o;19970:1811::-;20163:6;20171;20179;20187;20195;20203;20211;20219;20268:3;20256:9;20247:7;20243:23;20239:33;20236:120;;;20275:79;;:::i;:::-;20236:120;20395:1;20420:67;20479:7;20470:6;20459:9;20455:22;20420:67;:::i;:::-;20410:77;;20366:131;20536:2;20562:52;20606:7;20597:6;20586:9;20582:22;20562:52;:::i;:::-;20552:62;;20507:117;20663:2;20689:53;20734:7;20725:6;20714:9;20710:22;20689:53;:::i;:::-;20679:63;;20634:118;20791:2;20817:53;20862:7;20853:6;20842:9;20838:22;20817:53;:::i;:::-;20807:63;;20762:118;20947:3;20936:9;20932:19;20919:33;20979:18;20971:6;20968:30;20965:117;;;21001:79;;:::i;:::-;20965:117;21106:78;21176:7;21167:6;21156:9;21152:22;21106:78;:::i;:::-;21096:88;;20890:304;21261:3;21250:9;21246:19;21233:33;21293:18;21285:6;21282:30;21279:117;;;21315:79;;:::i;:::-;21279:117;21420:78;21490:7;21481:6;21470:9;21466:22;21420:78;:::i;:::-;21410:88;;21204:304;21547:3;21574:61;21627:7;21618:6;21607:9;21603:22;21574:61;:::i;:::-;21564:71;;21518:127;21684:3;21711:53;21756:7;21747:6;21736:9;21732:22;21711:53;:::i;:::-;21701:63;;21655:119;19970:1811;;;;;;;;;;;:::o;21787:332::-;21908:4;21946:2;21935:9;21931:18;21923:26;;21959:71;22027:1;22016:9;22012:17;22003:6;21959:71;:::i;:::-;22040:72;22108:2;22097:9;22093:18;22084:6;22040:72;:::i;:::-;21787:332;;;;;:::o;22125:117::-;22234:1;22231;22224:12;22292:244;22377:5;22418:3;22409:6;22404:3;22400:16;22396:26;22393:113;;;22425:79;;:::i;:::-;22393:113;22524:6;22515:15;;22292:244;;;;:::o;22542:567::-;22640:6;22689:2;22677:9;22668:7;22664:23;22660:32;22657:119;;;22695:79;;:::i;:::-;22657:119;22843:1;22832:9;22828:17;22815:31;22873:18;22865:6;22862:30;22859:117;;;22895:79;;:::i;:::-;22859:117;23000:92;23084:7;23075:6;23064:9;23060:22;23000:92;:::i;:::-;22990:102;;22786:316;22542:567;;;;:::o;23115:1077::-;23448:4;23486:3;23475:9;23471:19;23463:27;;23500:71;23568:1;23557:9;23553:17;23544:6;23500:71;:::i;:::-;23581:72;23649:2;23638:9;23634:18;23625:6;23581:72;:::i;:::-;23663;23731:2;23720:9;23716:18;23707:6;23663:72;:::i;:::-;23745;23813:2;23802:9;23798:18;23789:6;23745:72;:::i;:::-;23865:9;23859:4;23855:20;23849:3;23838:9;23834:19;23827:49;23893:108;23996:4;23987:6;23893:108;:::i;:::-;23885:116;;24049:9;24043:4;24039:20;24033:3;24022:9;24018:19;24011:49;24077:108;24180:4;24171:6;24077:108;:::i;:::-;24069:116;;23115:1077;;;;;;;;;:::o;24198:112::-;24251:7;24280:24;24298:5;24280:24;:::i;:::-;24269:35;;24198:112;;;:::o;24316:154::-;24405:40;24439:5;24405:40;:::i;:::-;24398:5;24395:51;24385:79;;24460:1;24457;24450:12;24385:79;24316:154;:::o;24476:171::-;24538:5;24576:6;24563:20;24554:29;;24592:49;24635:5;24592:49;:::i;:::-;24476:171;;;;:::o;24653:118::-;24690:7;24730:34;24723:5;24719:46;24708:57;;24653:118;;;:::o;24777:122::-;24850:24;24868:5;24850:24;:::i;:::-;24843:5;24840:35;24830:63;;24889:1;24886;24879:12;24830:63;24777:122;:::o;24905:139::-;24951:5;24989:6;24976:20;24967:29;;25005:33;25032:5;25005:33;:::i;:::-;24905:139;;;;:::o;25050:90::-;25084:7;25127:5;25120:13;25113:21;25102:32;;25050:90;;;:::o;25146:116::-;25216:21;25231:5;25216:21;:::i;:::-;25209:5;25206:32;25196:60;;25252:1;25249;25242:12;25196:60;25146:116;:::o;25268:133::-;25311:5;25349:6;25336:20;25327:29;;25365:30;25389:5;25365:30;:::i;:::-;25268:133;;;;:::o;25407:645::-;25497:6;25505;25513;25562:2;25550:9;25541:7;25537:23;25533:32;25530:119;;;25568:79;;:::i;:::-;25530:119;25688:1;25713:69;25774:7;25765:6;25754:9;25750:22;25713:69;:::i;:::-;25703:79;;25659:133;25831:2;25857:53;25902:7;25893:6;25882:9;25878:22;25857:53;:::i;:::-;25847:63;;25802:118;25959:2;25985:50;26027:7;26018:6;26007:9;26003:22;25985:50;:::i;:::-;25975:60;;25930:115;25407:645;;;;;:::o;26058:118::-;26145:24;26163:5;26145:24;:::i;:::-;26140:3;26133:37;26058:118;;:::o;26182:442::-;26331:4;26369:2;26358:9;26354:18;26346:26;;26382:71;26450:1;26439:9;26435:17;26426:6;26382:71;:::i;:::-;26463:72;26531:2;26520:9;26516:18;26507:6;26463:72;:::i;:::-;26545;26613:2;26602:9;26598:18;26589:6;26545:72;:::i;:::-;26182:442;;;;;;:::o;26630:150::-;26704:9;26737:37;26768:5;26737:37;:::i;:::-;26724:50;;26630:150;;;:::o;26786:179::-;26897:61;26952:5;26897:61;:::i;:::-;26892:3;26885:74;26786:179;;:::o;26971:270::-;27088:4;27126:2;27115:9;27111:18;27103:26;;27139:95;27231:1;27220:9;27216:17;27207:6;27139:95;:::i;:::-;26971:270;;;;:::o;27247:146::-;27317:9;27350:37;27381:5;27350:37;:::i;:::-;27337:50;;27247:146;;;:::o;27399:171::-;27506:57;27557:5;27506:57;:::i;:::-;27501:3;27494:70;27399:171;;:::o;27576:262::-;27689:4;27727:2;27716:9;27712:18;27704:26;;27740:91;27828:1;27817:9;27813:17;27804:6;27740:91;:::i;:::-;27576:262;;;;:::o;27844:1969::-;28052:6;28060;28068;28076;28084;28092;28100;28108;28116;28165:3;28153:9;28144:7;28140:23;28136:33;28133:120;;;28172:79;;:::i;:::-;28133:120;28292:1;28317:67;28376:7;28367:6;28356:9;28352:22;28317:67;:::i;:::-;28307:77;;28263:131;28433:2;28459:67;28518:7;28509:6;28498:9;28494:22;28459:67;:::i;:::-;28449:77;;28404:132;28575:2;28601:52;28645:7;28636:6;28625:9;28621:22;28601:52;:::i;:::-;28591:62;;28546:117;28702:2;28728:53;28773:7;28764:6;28753:9;28749:22;28728:53;:::i;:::-;28718:63;;28673:118;28830:3;28857:53;28902:7;28893:6;28882:9;28878:22;28857:53;:::i;:::-;28847:63;;28801:119;28987:3;28976:9;28972:19;28959:33;29019:18;29011:6;29008:30;29005:117;;;29041:79;;:::i;:::-;29005:117;29146:78;29216:7;29207:6;29196:9;29192:22;29146:78;:::i;:::-;29136:88;;28930:304;29301:3;29290:9;29286:19;29273:33;29333:18;29325:6;29322:30;29319:117;;;29355:79;;:::i;:::-;29319:117;29460:78;29530:7;29521:6;29510:9;29506:22;29460:78;:::i;:::-;29450:88;;29244:304;29587:3;29614:53;29659:7;29650:6;29639:9;29635:22;29614:53;:::i;:::-;29604:63;;29558:119;29716:3;29743:53;29788:7;29779:6;29768:9;29764:22;29743:53;:::i;:::-;29733:63;;29687:119;27844:1969;;;;;;;;;;;:::o;29819:504::-;29902:6;29910;29959:2;29947:9;29938:7;29934:23;29930:32;29927:119;;;29965:79;;:::i;:::-;29927:119;30085:1;30110:69;30171:7;30162:6;30151:9;30147:22;30110:69;:::i;:::-;30100:79;;30056:133;30228:2;30254:52;30298:7;30289:6;30278:9;30274:22;30254:52;:::i;:::-;30244:62;;30199:117;29819:504;;;;;:::o;30329:113::-;30383:7;30412:24;30430:5;30412:24;:::i;:::-;30401:35;;30329:113;;;:::o;30448:156::-;30538:41;30573:5;30538:41;:::i;:::-;30531:5;30528:52;30518:80;;30594:1;30591;30584:12;30518:80;30448:156;:::o;30610:173::-;30673:5;30711:6;30698:20;30689:29;;30727:50;30771:5;30727:50;:::i;:::-;30610:173;;;;:::o;30789:117::-;30898:1;30895;30888:12;30929:568;31002:8;31012:6;31062:3;31055:4;31047:6;31043:17;31039:27;31029:122;;31070:79;;:::i;:::-;31029:122;31183:6;31170:20;31160:30;;31213:18;31205:6;31202:30;31199:117;;;31235:79;;:::i;:::-;31199:117;31349:4;31341:6;31337:17;31325:29;;31403:3;31395:4;31387:6;31383:17;31373:8;31369:32;31366:41;31363:128;;;31410:79;;:::i;:::-;31363:128;30929:568;;;;;:::o;31503:1259::-;31660:6;31668;31676;31684;31692;31700;31749:3;31737:9;31728:7;31724:23;31720:33;31717:120;;;31756:79;;:::i;:::-;31717:120;31876:1;31901:70;31963:7;31954:6;31943:9;31939:22;31901:70;:::i;:::-;31891:80;;31847:134;32020:2;32046:53;32091:7;32082:6;32071:9;32067:22;32046:53;:::i;:::-;32036:63;;31991:118;32176:2;32165:9;32161:18;32148:32;32207:18;32199:6;32196:30;32193:117;;;32229:79;;:::i;:::-;32193:117;32342:80;32414:7;32405:6;32394:9;32390:22;32342:80;:::i;:::-;32324:98;;;;32119:313;32499:2;32488:9;32484:18;32471:32;32530:18;32522:6;32519:30;32516:117;;;32552:79;;:::i;:::-;32516:117;32665:80;32737:7;32728:6;32717:9;32713:22;32665:80;:::i;:::-;32647:98;;;;32442:313;31503:1259;;;;;;;;:::o;32768:506::-;32852:6;32860;32909:2;32897:9;32888:7;32884:23;32880:32;32877:119;;;32915:79;;:::i;:::-;32877:119;33035:1;33060:69;33121:7;33112:6;33101:9;33097:22;33060:69;:::i;:::-;33050:79;;33006:133;33178:2;33204:53;33249:7;33240:6;33229:9;33225:22;33204:53;:::i;:::-;33194:63;;33149:118;32768:506;;;;;:::o;33280:115::-;33365:23;33382:5;33365:23;:::i;:::-;33360:3;33353:36;33280:115;;:::o;33401:218::-;33492:4;33530:2;33519:9;33515:18;33507:26;;33543:69;33609:1;33598:9;33594:17;33585:6;33543:69;:::i;:::-;33401:218;;;;:::o;33625:180::-;33673:77;33670:1;33663:88;33770:4;33767:1;33760:15;33794:4;33791:1;33784:15;33811:191;33851:3;33870:20;33888:1;33870:20;:::i;:::-;33865:25;;33904:20;33922:1;33904:20;:::i;:::-;33899:25;;33947:1;33944;33940:9;33933:16;;33968:3;33965:1;33962:10;33959:36;;;33975:18;;:::i;:::-;33959:36;33811:191;;;;:::o;34008:180::-;34056:77;34053:1;34046:88;34153:4;34150:1;34143:15;34177:4;34174:1;34167:15;34194:118;34281:24;34299:5;34281:24;:::i;:::-;34276:3;34269:37;34194:118;;:::o;34318:222::-;34411:4;34449:2;34438:9;34434:18;34426:26;;34462:71;34530:1;34519:9;34515:17;34506:6;34462:71;:::i;:::-;34318:222;;;;:::o;34546:143::-;34603:5;34634:6;34628:13;34619:22;;34650:33;34677:5;34650:33;:::i;:::-;34546:143;;;;:::o;34695:351::-;34765:6;34814:2;34802:9;34793:7;34789:23;34785:32;34782:119;;;34820:79;;:::i;:::-;34782:119;34940:1;34965:64;35021:7;35012:6;35001:9;34997:22;34965:64;:::i;:::-;34955:74;;34911:128;34695:351;;;;:::o;35052:194::-;35092:4;35112:20;35130:1;35112:20;:::i;:::-;35107:25;;35146:20;35164:1;35146:20;:::i;:::-;35141:25;;35190:1;35187;35183:9;35175:17;;35214:1;35208:4;35205:11;35202:37;;;35219:18;;:::i;:::-;35202:37;35052:194;;;;:::o;35252:143::-;35309:5;35340:6;35334:13;35325:22;;35356:33;35383:5;35356:33;:::i;:::-;35252:143;;;;:::o;35401:351::-;35471:6;35520:2;35508:9;35499:7;35495:23;35491:32;35488:119;;;35526:79;;:::i;:::-;35488:119;35646:1;35671:64;35727:7;35718:6;35707:9;35703:22;35671:64;:::i;:::-;35661:74;;35617:128;35401:351;;;;:::o;35758:140::-;35822:9;35855:37;35886:5;35855:37;:::i;:::-;35842:50;;35758:140;;;:::o;35904:159::-;36005:51;36050:5;36005:51;:::i;:::-;36000:3;35993:64;35904:159;;:::o;36069:115::-;36154:23;36171:5;36154:23;:::i;:::-;36149:3;36142:36;36069:115;;:::o;36190:601::-;36391:4;36429:3;36418:9;36414:19;36406:27;;36443:85;36525:1;36514:9;36510:17;36501:6;36443:85;:::i;:::-;36538:86;36620:2;36609:9;36605:18;36596:6;36538:86;:::i;:::-;36634:70;36700:2;36689:9;36685:18;36676:6;36634:70;:::i;:::-;36714;36780:2;36769:9;36765:18;36756:6;36714:70;:::i;:::-;36190:601;;;;;;;:::o;36797:175::-;36870:5;36901:6;36895:13;36886:22;;36917:49;36960:5;36917:49;:::i;:::-;36797:175;;;;:::o;36978:383::-;37064:6;37113:2;37101:9;37092:7;37088:23;37084:32;37081:119;;;37119:79;;:::i;:::-;37081:119;37239:1;37264:80;37336:7;37327:6;37316:9;37312:22;37264:80;:::i;:::-;37254:90;;37210:144;36978:383;;;;:::o;37367:171::-;37438:5;37469:6;37463:13;37454:22;;37485:47;37526:5;37485:47;:::i;:::-;37367:171;;;;:::o;37544:379::-;37628:6;37677:2;37665:9;37656:7;37652:23;37648:32;37645:119;;;37683:79;;:::i;:::-;37645:119;37803:1;37828:78;37898:7;37889:6;37878:9;37874:22;37828:78;:::i;:::-;37818:88;;37774:142;37544:379;;;;:::o;37929:357::-;38002:6;38051:2;38039:9;38030:7;38026:23;38022:32;38019:119;;;38057:79;;:::i;:::-;38019:119;38177:1;38202:67;38261:7;38252:6;38241:9;38237:22;38202:67;:::i;:::-;38192:77;;38148:131;37929:357;;;;:::o;38292:664::-;38497:4;38535:3;38524:9;38520:19;38512:27;;38549:71;38617:1;38606:9;38602:17;38593:6;38549:71;:::i;:::-;38630:72;38698:2;38687:9;38683:18;38674:6;38630:72;:::i;:::-;38712;38780:2;38769:9;38765:18;38756:6;38712:72;:::i;:::-;38794;38862:2;38851:9;38847:18;38838:6;38794:72;:::i;:::-;38876:73;38944:3;38933:9;38929:19;38920:6;38876:73;:::i;:::-;38292:664;;;;;;;;:::o;38962:109::-;39043:21;39058:5;39043:21;:::i;:::-;39038:3;39031:34;38962:109;;:::o;39077:320::-;39192:4;39230:2;39219:9;39215:18;39207:26;;39243:71;39311:1;39300:9;39296:17;39287:6;39243:71;:::i;:::-;39324:66;39386:2;39375:9;39371:18;39362:6;39324:66;:::i;:::-;39077:320;;;;;:::o;39403:143::-;39460:5;39491:6;39485:13;39476:22;;39507:33;39534:5;39507:33;:::i;:::-;39403:143;;;;:::o;39552:663::-;39640:6;39648;39656;39705:2;39693:9;39684:7;39680:23;39676:32;39673:119;;;39711:79;;:::i;:::-;39673:119;39831:1;39856:64;39912:7;39903:6;39892:9;39888:22;39856:64;:::i;:::-;39846:74;;39802:128;39969:2;39995:64;40051:7;40042:6;40031:9;40027:22;39995:64;:::i;:::-;39985:74;;39940:129;40108:2;40134:64;40190:7;40181:6;40170:9;40166:22;40134:64;:::i;:::-;40124:74;;40079:129;39552:663;;;;;:::o;40221:117::-;40330:1;40327;40320:12;40344:98;40428:6;40423:3;40418;40405:30;40344:98;;;:::o;40478:537::-;40606:3;40627:86;40706:6;40701:3;40627:86;:::i;:::-;40620:93;;40737:66;40729:6;40726:78;40723:165;;;40807:79;;:::i;:::-;40723:165;40919:4;40911:6;40907:17;40897:27;;40934:43;40970:6;40965:3;40958:5;40934:43;:::i;:::-;41002:6;40997:3;40993:16;40986:23;;40478:537;;;;;:::o;41021:895::-;41318:4;41356:3;41345:9;41341:19;41333:27;;41370:71;41438:1;41427:9;41423:17;41414:6;41370:71;:::i;:::-;41451:72;41519:2;41508:9;41504:18;41495:6;41451:72;:::i;:::-;41570:9;41564:4;41560:20;41555:2;41544:9;41540:18;41533:48;41598:118;41711:4;41702:6;41694;41598:118;:::i;:::-;41590:126;;41763:9;41757:4;41753:20;41748:2;41737:9;41733:18;41726:48;41791:118;41904:4;41895:6;41887;41791:118;:::i;:::-;41783:126;;41021:895;;;;;;;;;:::o;41922:141::-;41978:5;42009:6;42003:13;41994:22;;42025:32;42051:5;42025:32;:::i;:::-;41922:141;;;;:::o;42069:349::-;42138:6;42187:2;42175:9;42166:7;42162:23;42158:32;42155:119;;;42193:79;;:::i;:::-;42155:119;42313:1;42338:63;42393:7;42384:6;42373:9;42369:22;42338:63;:::i;:::-;42328:73;;42284:127;42069:349;;;;:::o;42424:180::-;42472:77;42469:1;42462:88;42569:4;42566:1;42559:15;42593:4;42590:1;42583:15;42610:114;42647:7;42687:30;42680:5;42676:42;42665:53;;42610:114;;;:::o;42730:122::-;42803:24;42821:5;42803:24;:::i;:::-;42796:5;42793:35;42783:63;;42842:1;42839;42832:12;42783:63;42730:122;:::o;42858:143::-;42915:5;42946:6;42940:13;42931:22;;42962:33;42989:5;42962:33;:::i;:::-;42858:143;;;;:::o;43007:93::-;43043:7;43083:10;43076:5;43072:22;43061:33;;43007:93;;;:::o;43106:120::-;43178:23;43195:5;43178:23;:::i;:::-;43171:5;43168:34;43158:62;;43216:1;43213;43206:12;43158:62;43106:120;:::o;43232:141::-;43288:5;43319:6;43313:13;43304:22;;43335:32;43361:5;43335:32;:::i;:::-;43232:141;;;;:::o;43379:661::-;43466:6;43474;43482;43531:2;43519:9;43510:7;43506:23;43502:32;43499:119;;;43537:79;;:::i;:::-;43499:119;43657:1;43682:64;43738:7;43729:6;43718:9;43714:22;43682:64;:::i;:::-;43672:74;;43628:128;43795:2;43821:64;43877:7;43868:6;43857:9;43853:22;43821:64;:::i;:::-;43811:74;;43766:129;43934:2;43960:63;44015:7;44006:6;43995:9;43991:22;43960:63;:::i;:::-;43950:73;;43905:128;43379:661;;;;;:::o;44046:85::-;44091:7;44120:5;44109:16;;44046:85;;;:::o;44137:158::-;44195:9;44228:61;44246:42;44255:32;44281:5;44255:32;:::i;:::-;44246:42;:::i;:::-;44228:61;:::i;:::-;44215:74;;44137:158;;;:::o;44301:147::-;44396:45;44435:5;44396:45;:::i;:::-;44391:3;44384:58;44301:147;;:::o;44454:168::-;44537:11;44571:6;44566:3;44559:19;44611:4;44606:3;44602:14;44587:29;;44454:168;;;;:::o;44628:114::-;;:::o;44748:362::-;44889:3;44910:65;44973:1;44968:3;44910:65;:::i;:::-;44903:72;;44984:93;45073:3;44984:93;:::i;:::-;45102:1;45097:3;45093:11;45086:18;;44748:362;;;:::o;45116:764::-;45373:4;45411:3;45400:9;45396:19;45388:27;;45425:79;45501:1;45490:9;45486:17;45477:6;45425:79;:::i;:::-;45514:72;45582:2;45571:9;45567:18;45558:6;45514:72;:::i;:::-;45596;45664:2;45653:9;45649:18;45640:6;45596:72;:::i;:::-;45715:9;45709:4;45705:20;45700:2;45689:9;45685:18;45678:48;45743:130;45868:4;45743:130;:::i;:::-;45735:138;;45116:764;;;;;;:::o;45886:::-;46143:4;46181:3;46170:9;46166:19;46158:27;;46195:71;46263:1;46252:9;46248:17;46239:6;46195:71;:::i;:::-;46276:80;46352:2;46341:9;46337:18;46328:6;46276:80;:::i;:::-;46366:72;46434:2;46423:9;46419:18;46410:6;46366:72;:::i;:::-;46485:9;46479:4;46475:20;46470:2;46459:9;46455:18;46448:48;46513:130;46638:4;46513:130;:::i;:::-;46505:138;;45886:764;;;;;;:::o;46656:320::-;46771:4;46809:2;46798:9;46794:18;46786:26;;46822:65;46884:1;46873:9;46869:17;46860:6;46822:65;:::i;:::-;46897:72;46965:2;46954:9;46950:18;46941:6;46897:72;:::i;:::-;46656:320;;;;;:::o;46982:507::-;47061:6;47069;47118:2;47106:9;47097:7;47093:23;47089:32;47086:119;;;47124:79;;:::i;:::-;47086:119;47244:1;47269:64;47325:7;47316:6;47305:9;47301:22;47269:64;:::i;:::-;47259:74;;47215:128;47382:2;47408:64;47464:7;47455:6;47444:9;47440:22;47408:64;:::i;:::-;47398:74;;47353:129;46982:507;;;;;:::o;47495:77::-;47532:7;47561:5;47550:16;;47495:77;;;:::o;47578:122::-;47651:24;47669:5;47651:24;:::i;:::-;47644:5;47641:35;47631:63;;47690:1;47687;47680:12;47631:63;47578:122;:::o;47706:143::-;47763:5;47794:6;47788:13;47779:22;;47810:33;47837:5;47810:33;:::i;:::-;47706:143;;;;:::o;47855:351::-;47925:6;47974:2;47962:9;47953:7;47949:23;47945:32;47942:119;;;47980:79;;:::i;:::-;47942:119;48100:1;48125:64;48181:7;48172:6;48161:9;48157:22;48125:64;:::i;:::-;48115:74;;48071:128;47855:351;;;;:::o;48212:148::-;48284:9;48317:37;48348:5;48317:37;:::i;:::-;48304:50;;48212:148;;;:::o;48366:175::-;48475:59;48528:5;48475:59;:::i;:::-;48470:3;48463:72;48366:175;;:::o;48547:142::-;48597:9;48630:53;48648:34;48657:24;48675:5;48657:24;:::i;:::-;48648:34;:::i;:::-;48630:53;:::i;:::-;48617:66;;48547:142;;;:::o;48695:131::-;48782:37;48813:5;48782:37;:::i;:::-;48777:3;48770:50;48695:131;;:::o;48832:474::-;48997:4;49035:2;49024:9;49020:18;49012:26;;49048:93;49138:1;49127:9;49123:17;49114:6;49048:93;:::i;:::-;49151:72;49219:2;49208:9;49204:18;49195:6;49151:72;:::i;:::-;49233:66;49295:2;49284:9;49280:18;49271:6;49233:66;:::i;:::-;48832:474;;;;;;:::o;49312:171::-;49351:3;49374:24;49392:5;49374:24;:::i;:::-;49365:33;;49420:4;49413:5;49410:15;49407:41;;49428:18;;:::i;:::-;49407:41;49475:1;49468:5;49464:13;49457:20;;49312:171;;;:::o;49489:147::-;49590:11;49627:3;49612:18;;49489:147;;;;:::o;49642:398::-;49801:3;49822:83;49903:1;49898:3;49822:83;:::i;:::-;49815:90;;49914:93;50003:3;49914:93;:::i;:::-;50032:1;50027:3;50023:11;50016:18;;49642:398;;;:::o;50046:379::-;50230:3;50252:147;50395:3;50252:147;:::i;:::-;50245:154;;50416:3;50409:10;;50046:379;;;:::o;50431:332::-;50552:4;50590:2;50579:9;50575:18;50567:26;;50603:71;50671:1;50660:9;50656:17;50647:6;50603:71;:::i;:::-;50684:72;50752:2;50741:9;50737:18;50728:6;50684:72;:::i;:::-;50431:332;;;;;:::o;50769:498::-;50946:4;50984:2;50973:9;50969:18;50961:26;;50997:85;51079:1;51068:9;51064:17;51055:6;50997:85;:::i;:::-;51092:86;51174:2;51163:9;51159:18;51150:6;51092:86;:::i;:::-;51188:72;51256:2;51245:9;51241:18;51232:6;51188:72;:::i;:::-;50769:498;;;;;;:::o;51273:141::-;51329:5;51360:6;51354:13;51345:22;;51376:32;51402:5;51376:32;:::i;:::-;51273:141;;;;:::o;51420:118::-;51479:7;51508:24;51526:5;51508:24;:::i;:::-;51497:35;;51420:118;;;:::o;51544:166::-;51639:46;51679:5;51639:46;:::i;:::-;51632:5;51629:57;51619:85;;51700:1;51697;51690:12;51619:85;51544:166;:::o;51716:187::-;51795:5;51826:6;51820:13;51811:22;;51842:55;51891:5;51842:55;:::i;:::-;51716:187;;;;:::o;51909:137::-;51963:5;51994:6;51988:13;51979:22;;52010:30;52034:5;52010:30;:::i;:::-;51909:137;;;;:::o;52101:1004::-;52196:5;52240:4;52228:9;52223:3;52219:19;52215:30;52212:117;;;52248:79;;:::i;:::-;52212:117;52347:21;52363:4;52347:21;:::i;:::-;52338:30;;52430:1;52470:59;52525:3;52516:6;52505:9;52501:22;52470:59;:::i;:::-;52463:4;52456:5;52452:16;52445:85;52378:163;52602:2;52643:82;52721:3;52712:6;52701:9;52697:22;52643:82;:::i;:::-;52636:4;52629:5;52625:16;52618:108;52551:186;52806:2;52847:57;52900:3;52891:6;52880:9;52876:22;52847:57;:::i;:::-;52840:4;52833:5;52829:16;52822:83;52747:169;52988:2;53029:57;53082:3;53073:6;53062:9;53058:22;53029:57;:::i;:::-;53022:4;53015:5;53011:16;53004:83;52926:172;52101:1004;;;;:::o;53111:422::-;53216:6;53265:3;53253:9;53244:7;53240:23;53236:33;53233:120;;;53272:79;;:::i;:::-;53233:120;53392:1;53417:99;53508:7;53499:6;53488:9;53484:22;53417:99;:::i;:::-;53407:109;;53363:163;53111:422;;;;:::o;53582:998::-;53677:5;53721:4;53709:9;53704:3;53700:19;53696:30;53693:117;;;53729:79;;:::i;:::-;53693:117;53828:21;53844:4;53828:21;:::i;:::-;53819:30;;53911:1;53951:59;54006:3;53997:6;53986:9;53982:22;53951:59;:::i;:::-;53944:4;53937:5;53933:16;53926:85;53859:163;54083:2;54124:76;54196:3;54187:6;54176:9;54172:22;54124:76;:::i;:::-;54117:4;54110:5;54106:16;54099:102;54032:180;54281:2;54322:57;54375:3;54366:6;54355:9;54351:22;54322:57;:::i;:::-;54315:4;54308:5;54304:16;54297:83;54222:169;54463:2;54504:57;54557:3;54548:6;54537:9;54533:22;54504:57;:::i;:::-;54497:4;54490:5;54486:16;54479:83;54401:172;53582:998;;;;:::o;54586:422::-;54691:6;54740:3;54728:9;54719:7;54715:23;54711:33;54708:120;;;54747:79;;:::i;:::-;54708:120;54867:1;54892:99;54983:7;54974:6;54963:9;54959:22;54892:99;:::i;:::-;54882:109;;54838:163;54586:422;;;;:::o;55014:442::-;55163:4;55201:2;55190:9;55186:18;55178:26;;55214:71;55282:1;55271:9;55267:17;55258:6;55214:71;:::i;:::-;55295:72;55363:2;55352:9;55348:18;55339:6;55295:72;:::i;:::-;55377;55445:2;55434:9;55430:18;55421:6;55377:72;:::i;:::-;55014:442;;;;;;:::o;55462:855::-;55739:4;55777:3;55766:9;55762:19;55754:27;;55791:71;55859:1;55848:9;55844:17;55835:6;55791:71;:::i;:::-;55872:72;55940:2;55929:9;55925:18;55916:6;55872:72;:::i;:::-;55991:9;55985:4;55981:20;55976:2;55965:9;55961:18;55954:48;56019:108;56122:4;56113:6;56019:108;:::i;:::-;56011:116;;56174:9;56168:4;56164:20;56159:2;56148:9;56144:18;56137:48;56202:108;56305:4;56296:6;56202:108;:::i;:::-;56194:116;;55462:855;;;;;;;:::o;56323:311::-;56400:4;56490:18;56482:6;56479:30;56476:56;;;56512:18;;:::i;:::-;56476:56;56562:4;56554:6;56550:17;56542:25;;56622:4;56616;56612:15;56604:23;;56323:311;;;:::o;56657:732::-;56764:5;56789:81;56805:64;56862:6;56805:64;:::i;:::-;56789:81;:::i;:::-;56780:90;;56890:5;56919:6;56912:5;56905:21;56953:4;56946:5;56942:16;56935:23;;57006:4;56998:6;56994:17;56986:6;56982:30;57035:3;57027:6;57024:15;57021:122;;;57054:79;;:::i;:::-;57021:122;57169:6;57152:231;57186:6;57181:3;57178:15;57152:231;;;57261:3;57290:48;57334:3;57322:10;57290:48;:::i;:::-;57285:3;57278:61;57368:4;57363:3;57359:14;57352:21;;57228:155;57212:4;57207:3;57203:14;57196:21;;57152:231;;;57156:21;56770:619;;56657:732;;;;;:::o;57412:385::-;57494:5;57543:3;57536:4;57528:6;57524:17;57520:27;57510:122;;57551:79;;:::i;:::-;57510:122;57661:6;57655:13;57686:105;57787:3;57779:6;57772:4;57764:6;57760:17;57686:105;:::i;:::-;57677:114;;57500:297;57412:385;;;;:::o;57803:554::-;57898:6;57947:2;57935:9;57926:7;57922:23;57918:32;57915:119;;;57953:79;;:::i;:::-;57915:119;58094:1;58083:9;58079:17;58073:24;58124:18;58116:6;58113:30;58110:117;;;58146:79;;:::i;:::-;58110:117;58251:89;58332:7;58323:6;58312:9;58308:22;58251:89;:::i;:::-;58241:99;;58044:306;57803:554;;;;:::o;58363:233::-;58402:3;58425:24;58443:5;58425:24;:::i;:::-;58416:33;;58471:66;58464:5;58461:77;58458:103;;58541:18;;:::i;:::-;58458:103;58588:1;58581:5;58577:13;58570:20;;58363:233;;;:::o;58602:553::-;58779:4;58817:3;58806:9;58802:19;58794:27;;58831:71;58899:1;58888:9;58884:17;58875:6;58831:71;:::i;:::-;58912:72;58980:2;58969:9;58965:18;58956:6;58912:72;:::i;:::-;58994;59062:2;59051:9;59047:18;59038:6;58994:72;:::i;:::-;59076;59144:2;59133:9;59129:18;59120:6;59076:72;:::i;:::-;58602:553;;;;;;;:::o;59161:117::-;59270:1;59267;59260:12;59284:117;59393:1;59390;59383:12;59407:117;59516:1;59513;59506:12;59530:740;59623:4;59629:6;59685:11;59672:25;59785:1;59779:4;59775:12;59764:8;59748:14;59744:29;59740:48;59720:18;59716:73;59706:168;;59793:79;;:::i;:::-;59706:168;59905:18;59895:8;59891:33;59883:41;;59957:4;59944:18;59934:28;;59985:18;59977:6;59974:30;59971:117;;;60007:79;;:::i;:::-;59971:117;60115:2;60109:4;60105:13;60097:21;;60172:4;60164:6;60160:17;60144:14;60140:38;60134:4;60130:49;60127:136;;;60182:79;;:::i;:::-;60127:136;59636:634;59530:740;;;;;:::o;60276:739::-;60368:4;60374:6;60430:11;60417:25;60530:1;60524:4;60520:12;60509:8;60493:14;60489:29;60485:48;60465:18;60461:73;60451:168;;60538:79;;:::i;:::-;60451:168;60650:18;60640:8;60636:33;60628:41;;60702:4;60689:18;60679:28;;60730:18;60722:6;60719:30;60716:117;;;60752:79;;:::i;:::-;60716:117;60860:2;60854:4;60850:13;60842:21;;60917:4;60909:6;60905:17;60889:14;60885:38;60879:4;60875:49;60872:136;;;60927:79;;:::i;:::-;60872:136;60381:634;60276:739;;;;;:::o;61021:442::-;61170:4;61208:2;61197:9;61193:18;61185:26;;61221:71;61289:1;61278:9;61274:17;61265:6;61221:71;:::i;:::-;61302:72;61370:2;61359:9;61355:18;61346:6;61302:72;:::i;:::-;61384;61452:2;61441:9;61437:18;61428:6;61384:72;:::i;:::-;61021:442;;;;;;:::o;61469:76::-;61505:7;61534:5;61523:16;;61469:76;;;:::o;61551:115::-;61636:23;61653:5;61636:23;:::i;:::-;61631:3;61624:36;61551:115;;:::o;61672:218::-;61763:4;61801:2;61790:9;61786:18;61778:26;;61814:69;61880:1;61869:9;61865:17;61856:6;61814:69;:::i;:::-;61672:218;;;;:::o;61896:329::-;61955:6;62004:2;61992:9;61983:7;61979:23;61975:32;61972:119;;;62010:79;;:::i;:::-;61972:119;62130:1;62155:53;62200:7;62191:6;62180:9;62176:22;62155:53;:::i;:::-;62145:63;;62101:117;61896:329;;;;:::o;62231:114::-;62298:6;62332:5;62326:12;62316:22;;62231:114;;;:::o;62351:184::-;62450:11;62484:6;62479:3;62472:19;62524:4;62519:3;62515:14;62500:29;;62351:184;;;;:::o;62541:132::-;62608:4;62631:3;62623:11;;62661:4;62656:3;62652:14;62644:22;;62541:132;;;:::o;62679:108::-;62756:24;62774:5;62756:24;:::i;:::-;62751:3;62744:37;62679:108;;:::o;62793:179::-;62862:10;62883:46;62925:3;62917:6;62883:46;:::i;:::-;62961:4;62956:3;62952:14;62938:28;;62793:179;;;;:::o;62978:113::-;63048:4;63080;63075:3;63071:14;63063:22;;62978:113;;;:::o;63127:732::-;63246:3;63275:54;63323:5;63275:54;:::i;:::-;63345:86;63424:6;63419:3;63345:86;:::i;:::-;63338:93;;63455:56;63505:5;63455:56;:::i;:::-;63534:7;63565:1;63550:284;63575:6;63572:1;63569:13;63550:284;;;63651:6;63645:13;63678:63;63737:3;63722:13;63678:63;:::i;:::-;63671:70;;63764:60;63817:6;63764:60;:::i;:::-;63754:70;;63610:224;63597:1;63594;63590:9;63585:14;;63550:284;;;63554:14;63850:3;63843:10;;63251:608;;;63127:732;;;;:::o;63865:593::-;64064:4;64102:2;64091:9;64087:18;64079:26;;64115:71;64183:1;64172:9;64168:17;64159:6;64115:71;:::i;:::-;64233:9;64227:4;64223:20;64218:2;64207:9;64203:18;64196:48;64261:108;64364:4;64355:6;64261:108;:::i;:::-;64253:116;;64379:72;64447:2;64436:9;64432:18;64423:6;64379:72;:::i;:::-;63865:593;;;;;;:::o;64481:732::-;64588:5;64613:81;64629:64;64686:6;64629:64;:::i;:::-;64613:81;:::i;:::-;64604:90;;64714:5;64743:6;64736:5;64729:21;64777:4;64770:5;64766:16;64759:23;;64830:4;64822:6;64818:17;64810:6;64806:30;64859:3;64851:6;64848:15;64845:122;;;64878:79;;:::i;:::-;64845:122;64993:6;64976:231;65010:6;65005:3;65002:15;64976:231;;;65085:3;65114:48;65158:3;65146:10;65114:48;:::i;:::-;65109:3;65102:61;65192:4;65187:3;65183:14;65176:21;;65052:155;65036:4;65031:3;65027:14;65020:21;;64976:231;;;64980:21;64594:619;;64481:732;;;;;:::o;65236:385::-;65318:5;65367:3;65360:4;65352:6;65348:17;65344:27;65334:122;;65375:79;;:::i;:::-;65334:122;65485:6;65479:13;65510:105;65611:3;65603:6;65596:4;65588:6;65584:17;65510:105;:::i;:::-;65501:114;;65324:297;65236:385;;;;:::o;65627:866::-;65740:6;65748;65756;65805:2;65793:9;65784:7;65780:23;65776:32;65773:119;;;65811:79;;:::i;:::-;65773:119;65931:1;65956:64;66012:7;66003:6;65992:9;65988:22;65956:64;:::i;:::-;65946:74;;65902:128;66069:2;66095:64;66151:7;66142:6;66131:9;66127:22;66095:64;:::i;:::-;66085:74;;66040:129;66229:2;66218:9;66214:18;66208:25;66260:18;66252:6;66249:30;66246:117;;;66282:79;;:::i;:::-;66246:117;66387:89;66468:7;66459:6;66448:9;66444:22;66387:89;:::i;:::-;66377:99;;66179:307;65627:866;;;;;:::o;66499:332::-;66620:4;66658:2;66647:9;66643:18;66635:26;;66671:71;66739:1;66728:9;66724:17;66715:6;66671:71;:::i;:::-;66752:72;66820:2;66809:9;66805:18;66796:6;66752:72;:::i;:::-;66499:332;;;;;:::o;66837:410::-;66877:7;66900:20;66918:1;66900:20;:::i;:::-;66895:25;;66934:20;66952:1;66934:20;:::i;:::-;66929:25;;66989:1;66986;66982:9;67011:30;67029:11;67011:30;:::i;:::-;67000:41;;67190:1;67181:7;67177:15;67174:1;67171:22;67151:1;67144:9;67124:83;67101:139;;67220:18;;:::i;:::-;67101:139;66885:362;66837:410;;;;:::o;67253:180::-;67301:77;67298:1;67291:88;67398:4;67395:1;67388:15;67422:4;67419:1;67412:15;67439:185;67479:1;67496:20;67514:1;67496:20;:::i;:::-;67491:25;;67530:20;67548:1;67530:20;:::i;:::-;67525:25;;67569:1;67559:35;;67574:18;;:::i;:::-;67559:35;67616:1;67613;67609:9;67604:14;;67439:185;;;;:::o" + "object": "60806040526004361061014e575f3560e01c806392fe8e70116100b5578063bb558a9f1161006e578063bb558a9f146105a3578063c22159b6146105cd578063d0e380f21461060a578063e038e6dc14610646578063e9361c0814610676578063f96fe9251461069e576101da565b806392fe8e701461043e578063964f987c1461047a5780639ab6156b146104b8578063a0d376cf146104f4578063a3c7271a14610532578063b066ea7c14610573576101da565b8063659ac74b11610107578063659ac74b146103265780636c9c0078146103625780638129fc1c1461038c57806381c2fdfb146103a257806388cc58e4146103df5780638efc2b2c14610409576101da565b80631a24f9a9146101de5780632075ad221461021a5780632a443fae1461024a5780633dc8f8ec146102865780634b801870146102c257806362c06767146102fe576101da565b366101da577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d8576040517f6c8cb79300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b3480156101e9575f80fd5b5061020460048036038101906101ff919061564c565b6106da565b60405161021191906156ee565b60405180910390f35b610234600480360381019061022f9190615731565b610a79565b6040516102419190615868565b60405180910390f35b348015610255575f80fd5b50610270600480360381019061026b9190615888565b610da7565b60405161027d91906156ee565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a7919061564c565b610f2a565b6040516102b99190615868565b60405180910390f35b3480156102cd575f80fd5b506102e860048036038101906102e39190615888565b611239565b6040516102f591906156ee565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f919061591b565b6114de565b005b348015610331575f80fd5b5061034c600480360381019061034791906159da565b61171b565b6040516103599190615a99565b60405180910390f35b34801561036d575f80fd5b506103766117c5565b6040516103839190615ad2565b60405180910390f35b348015610397575f80fd5b506103a06117ec565b005b3480156103ad575f80fd5b506103c860048036038101906103c39190615aeb565b611963565b6040516103d6929190615bd4565b60405180910390f35b3480156103ea575f80fd5b506103f3611aff565b6040516104009190615c1b565b60405180910390f35b610423600480360381019061041e9190615c57565b611b26565b60405161043596959493929190615c9e565b60405180910390f35b348015610449575f80fd5b50610464600480360381019061045f9190615888565b611e2b565b6040516104719190615868565b60405180910390f35b348015610485575f80fd5b506104a0600480360381019061049b9190615dc0565b61205c565b6040516104af93929190615e1f565b60405180910390f35b3480156104c3575f80fd5b506104de60048036038101906104d9919061564c565b6120ee565b6040516104eb91906156ee565b60405180910390f35b3480156104ff575f80fd5b5061051a60048036038101906105159190615dc0565b61234f565b60405161052993929190615e1f565b60405180910390f35b34801561053d575f80fd5b5061055860048036038101906105539190615c57565b6123e1565b60405161056a96959493929190615c9e565b60405180910390f35b61058d60048036038101906105889190615731565b61256e565b60405161059a91906156ee565b60405180910390f35b3480156105ae575f80fd5b506105b761279c565b6040516105c49190615e74565b60405180910390f35b3480156105d8575f80fd5b506105f360048036038101906105ee9190615e8d565b6127c3565b604051610601929190615bd4565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190615f89565b612907565b60405161063d91906156ee565b60405180910390f35b610660600480360381019061065b9190615731565b612988565b60405161066d91906156ee565b60405180910390f35b348015610681575f80fd5b5061069c6004803603810190610697919061605b565b612cd8565b005b3480156106a9575f80fd5b506106c460048036038101906106bf91906160fe565b612e41565b6040516106d1919061614b565b60405180910390f35b5f81804211156107235780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161071a929190615bd4565b60405180910390fd5b845f815f015151148061073f5750805f01515181602001515114155b8061075f57508060400151516001825f01515161075c9190616191565b14155b15610796576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106107e8576107e76161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461086a578560400151865f01515181518110610826576108256161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016108619190616200565b60405180910390fd5b5f610881875f015188602001518960400151612ec2565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dd9190616200565b602060405180830381865afa1580156108f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091c919061622d565b905061096288604001515f81518110610938576109376161c4565b5b602002602001015133845f81518110610954576109536161c4565b5b60200260200101518d612fff565b6109768289602001518a604001513061303b565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109d09190616200565b602060405180830381865afa1580156109eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f919061622d565b610a199190616258565b945084891115610a625788856040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610a59929190615bd4565b60405180910390fd5b610a6c8786613527565b5050505095945050505050565b60608180421115610ac35780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610aba929190615bd4565b60405180910390fd5b845f815f0151511480610adf5750805f01515181602001515114155b80610aff57508060400151516001825f015151610afc9190616191565b14155b15610b36576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110610b8457610b836161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c025785604001515f81518110610bbe57610bbd6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401610bf99190616200565b60405180910390fd5b5f610c19875f015188602001518960400151612ec2565b9050610c2f87602001518289604001518b6135c4565b935034845f81518110610c4557610c446161c4565b5b60200260200101511115610cac5734845f81518110610c6757610c666161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401610ca3929190615bd4565b60405180910390fd5b610cea815f81518110610cc257610cc16161c4565b5b6020026020010151855f81518110610cdd57610cdc6161c4565b5b6020026020010151613970565b5f610d008289602001518a60400151888b613a45565b905088811015610d495788816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610d40929190615bd4565b60405180910390fd5b845f81518110610d5c57610d5b6161c4565b5b6020026020010151341115610d9b57610d9a33865f81518110610d8257610d816161c4565b5b602002602001015134610d959190616258565b613ddb565b5b50505050949350505050565b5f8180421115610df05780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610de7929190615bd4565b60405180910390fd5b845f815f0151511480610e0c5750805f01515181602001515114155b80610e2c57508060400151516001825f015151610e299190616191565b14155b15610e63576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e7a875f015188602001518960400151612ec2565b9050610ec087604001515f81518110610e9657610e956161c4565b5b602002602001015133835f81518110610eb257610eb16161c4565b5b60200260200101518c612fff565b610ed5898289602001518a604001518a613e95565b935083881115610f1e5787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610f15929190615bd4565b60405180910390fd5b50505095945050505050565b60608180421115610f745780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610f6b929190615bd4565b60405180910390fd5b845f815f0151511480610f905750805f01515181602001515114155b80610fb057508060400151516001825f015151610fad9190616191565b14155b15610fe7576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f01515181518110611039576110386161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146110bb578560400151865f01515181518110611077576110766161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016110b29190616200565b60405180910390fd5b5f6110d2875f015188602001518960400151612ec2565b90506110e887602001518289604001518c6135c4565b935087845f815181106110fe576110fd6161c4565b5b602002602001015111156111655787845f815181106111205761111f6161c4565b5b60200260200101516040517fca7710c800000000000000000000000000000000000000000000000000000000815260040161115c929190615bd4565b60405180910390fd5b6111c387604001515f8151811061117f5761117e6161c4565b5b602002602001015133835f8151811061119b5761119a6161c4565b5b6020026020010151875f815181106111b6576111b56161c4565b5b6020026020010151612fff565b5f6111d98289602001518a604001518830613a45565b9050898110156112225789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401611219929190615bd4565b60405180910390fd5b61122c8782613527565b5050505095945050505050565b5f81804211156112825780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611279929190615bd4565b60405180910390fd5b845f815f015151148061129e5750805f01515181602001515114155b806112be57508060400151516001825f0151516112bb9190616191565b14155b156112f5576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61130c875f015188602001518960400151612ec2565b90505f8760400151825181518110611327576113266161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b815260040161136b9190616200565b602060405180830381865afa158015611386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113aa919061622d565b90506113f089604001515f815181106113c6576113c56161c4565b5b602002602001015133855f815181106113e2576113e16161c4565b5b60200260200101518e612fff565b611404838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b815260040161143e9190616200565b602060405180830381865afa158015611459573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147d919061622d565b6114879190616258565b9550858a11156114d05789866040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016114c7929190615bd4565b60405180910390fd5b505050505095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611547573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156b919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cf576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611642577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461162f5780611631565b475b905061163d8282613ddb565b611716565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461166f57806116e8565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116a89190616200565b602060405180830381865afa1580156116c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e7919061622d565b5b905061171582828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663659ac74b868686866040518563ffffffff1660e01b815260040161177b94939291906162f9565b6020604051808303815f875af1158015611797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bb9190616350565b9050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f6117f561435d565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561183d5750825b90505f60018367ffffffffffffffff1614801561187057505f3073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801561187e575080155b156118b5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611902576001855f0160086101000a81548160ff0219169083151502179055505b831561195c575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161195391906163c7565b60405180910390a15b5050505050565b5f8082804211156119ad5780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016119a4929190615bd4565b60405180910390fd5b5f6119dd8c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614905080611aad57898b809b50819c5050505b5f80611abd848e8e8e8e306144a2565b9150915082611acd578082611ad0565b81815b8097508198505050505050611ae68c878661462b565b611af08684613527565b50509850989650505050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f805f806060805f611b60885f016020810190611b43919061641f565b896020016020810190611b56919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcf91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f016020810190611bf7919061641f565b73ffffffffffffffffffffffffffffffffffffffff1614611c44576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16885f016020810190611c8d919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611cb35750348860600135145b15611ce957611cda886020016020810190611cce919061641f565b33838b60800135612fff565b611ce48134613970565b611dff565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16886020016020810190611d33919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611d595750348860800135145b15611d8e57611d7f885f016020810190611d73919061641f565b33838b60600135612fff565b611d898134613970565b611dfe565b875f016020810190611da0919061641f565b886020016020810190611db3919061641f565b89606001358a60800135346040517fd0a4f13b000000000000000000000000000000000000000000000000000000008152600401611df595949392919061644a565b60405180910390fd5b5b611e098882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b60608180421115611e755780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611e6c929190615bd4565b60405180910390fd5b845f815f0151511480611e915750805f01515181602001515114155b80611eb157508060400151516001825f015151611eae9190616191565b14155b15611ee8576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611eff875f015188602001518960400151612ec2565b9050611f1587602001518289604001518c6135c4565b935087845f81518110611f2b57611f2a6161c4565b5b60200260200101511115611f925787845f81518110611f4d57611f4c6161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401611f89929190615bd4565b60405180910390fd5b611ff087604001515f81518110611fac57611fab6161c4565b5b602002602001015133835f81518110611fc857611fc76161c4565b5b6020026020010151875f81518110611fe357611fe26161c4565b5b6020026020010151612fff565b5f6120068289602001518a60400151888b613a45565b90508981101561204f5789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612046929190615bd4565b60405180910390fd5b5050505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663abcd783086866040518363ffffffff1660e01b815260040161209a9291906164aa565b606060405180830381865afa1580156120b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120d991906164e5565b80935081945082955050505093509350939050565b5f81804211156121375780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161212e929190615bd4565b60405180910390fd5b845f815f01515114806121535750805f01515181602001515114155b8061217357508060400151516001825f0151516121709190616191565b14155b156121aa576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106121fc576121fb6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461227e578560400151865f0151518151811061223a576122396161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016122759190616200565b60405180910390fd5b5f612295875f015188602001518960400151612ec2565b90506122db87604001515f815181106122b1576122b06161c4565b5b602002602001015133835f815181106122cd576122cc6161c4565b5b60200260200101518c612fff565b6122f0898289602001518a6040015130613e95565b9350838811156123395787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612330929190615bd4565b60405180910390fd5b6123438685613527565b50505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663e77366f886866040518363ffffffff1660e01b815260040161238d9291906164aa565b606060405180830381865afa1580156123a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cc91906164e5565b80935081945082955050505093509350939050565b5f805f806060805f61241b885f0160208101906123fe919061641f565b896020016020810190612411919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f0160208101906124b2919061641f565b73ffffffffffffffffffffffffffffffffffffffff16146124ff576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612520885f016020810190612514919061641f565b33838b60600135612fff565b612542886020016020810190612536919061641f565b33838b60800135612fff565b61254c8882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b5f81804211156125b75780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016125ae929190615bd4565b60405180910390fd5b845f815f01515114806125d35750805f01515181602001515114155b806125f357508060400151516001825f0151516125f09190616191565b14155b1561262a576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612678576126776161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146126f65785604001515f815181106126b2576126b16161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016126ed9190616200565b60405180910390fd5b5f61270d875f015188602001518960400151612ec2565b9050612733815f81518110612725576127246161c4565b5b602002602001015134613970565b612748348289602001518a604001518a613e95565b9350838811156127915787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612788929190615bd4565b60405180910390fd5b505050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f80828042111561280d5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401612804929190615bd4565b60405180910390fd5b5f61281d8d8d8d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612869573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff161415905080156128cf57898b809b50819c5050505b6128dd828c8c8c8c8c6144a2565b809550819650505080156128f657838580955081965050505b505050995099975050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16634c7cffbd836040518263ffffffff1660e01b8152600401612941919061614b565b602060405180830381865afa15801561295c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612980919061622d565b905092915050565b5f81804211156129d15780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016129c8929190615bd4565b60405180910390fd5b845f815f01515114806129ed5750805f01515181602001515114155b80612a0d57508060400151516001825f015151612a0a9190616191565b14155b15612a44576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612a9257612a916161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612b105785604001515f81518110612acc57612acb6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401612b079190616200565b60405180910390fd5b5f612b27875f015188602001518960400151612ec2565b90505f8760400151825181518110612b4257612b416161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612b869190616200565b602060405180830381865afa158015612ba1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc5919061622d565b9050612beb835f81518110612bdd57612bdc6161c4565b5b602002602001015134613970565b612bff838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401612c399190616200565b602060405180830381865afa158015612c54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c78919061622d565b612c829190616258565b9550858a1115612ccb5789866040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612cc2929190615bd4565b60405180910390fd5b5050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d65919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166317fad7fc3087878787876040518763ffffffff1660e01b8152600401612e0c9695949392919061659d565b5f604051808303815f87803b158015612e23575f80fd5b505af1158015612e35573d5f803e3d5ffd5b50505050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663f5e29329836040518263ffffffff1660e01b8152600401612e7b91906156ee565b602060405180830381865afa158015612e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eba9190616606565b905092915050565b6060835167ffffffffffffffff811115612edf57612ede61520a565b5b604051908082528060200260200182016040528015612f0d5781602001602082028036833780820191505090505b5090505f80835f81518110612f2557612f246161c4565b5b602002602001015190505f5b8351811015612ff557819250846001820181518110612f5357612f526161c4565b5b60200260200101519150612f9d8383898481518110612f7557612f746161c4565b5b6020026020010151898581518110612f9057612f8f6161c4565b5b6020026020010151614c3c565b848281518110612fb057612faf6161c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050612f31565b5050509392505050565b5f810315613035576130348383838773ffffffffffffffffffffffffffffffffffffffff16614d93909392919063ffffffff16565b5b50505050565b5f805f805f865f81518110613053576130526161c4565b5b602002602001015190505f5b895181101561351b5789818151811061307b5761307a6161c4565b5b60200260200101519250888181518110613098576130976161c4565b5b602002602001015194508195508760018201815181106130bb576130ba6161c4565b5b60200260200101519150895160018201146130f3578960018201815181106130e6576130e56161c4565b5b60200260200101516130f5565b865b93505f600181111561310a57613109616631565b5b85600181111561311d5761311c616631565b5b036133f9575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561316d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061319191906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156132f0575f828973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016132259190616200565b602060405180830381865afa158015613240573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613264919061622d565b0390505f61327d848484614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f838b6040518463ffffffff1660e01b81526004016132bc93929190616796565b5f604051808303815f87803b1580156132d3575f80fd5b505af11580156132e5573d5f803e3d5ffd5b5050505050506133f2565b5f818973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b815260040161332b9190616200565b602060405180830381865afa158015613346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336a919061622d565b0390505f613383838584614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f825f8b6040518463ffffffff1660e01b81526004016133c2939291906167de565b5f604051808303815f87803b1580156133d9575f80fd5b505af11580156133eb573d5f803e3d5ffd5b5050505050505b5050613510565b8273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561345e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348291906163f4565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b81526004016134ce929190616826565b6020604051808303815f875af11580156134ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061350e9190616880565b505b80600101905061305f565b50505050505050505050565b5f8103156135c0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161358891906156ee565b5f604051808303815f87803b15801561359f575f80fd5b505af11580156135b1573d5f803e3d5ffd5b505050506135bf8282613ddb565b5b5050565b6060825167ffffffffffffffff8111156135e1576135e061520a565b5b60405190808252806020026020018201604052801561360f5781602001602082028036833780820191505090505b5090508181855181518110613627576136266161c4565b5b6020026020010181815250505f845190505b5f8114613967575f8460018361364f9190616258565b815181106136605761365f6161c4565b5b602002602001015190505f876001846136799190616258565b8151811061368a576136896161c4565b5b602002602001015190505f876001856136a39190616258565b815181106136b4576136b36161c4565b5b602002602001015190505f60018111156136d1576136d0616631565b5b8260018111156136e4576136e3616631565b5b0361384e575f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613734573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061375891906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508886815181106137905761378f6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156137d657808280925081935050505b5f8787815181106137ea576137e96161c4565b5b60200260200101519050613809838383614ef39092919063ffffffff16565b6fffffffffffffffffffffffffffffffff16886001896138299190616258565b8151811061383a576138396161c4565b5b602002602001018181525050505050613951565b61390d81868681518110613865576138646161c4565b5b60200260200101518573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f191906163f4565b73ffffffffffffffffffffffffffffffffffffffff161461205c565b826fffffffffffffffffffffffffffffffff169250905050856001866139339190616258565b81518110613944576139436161c4565b5b6020026020010181815250505b505050808061395f906168ab565b915050613639565b50949350505050565b5f810315613a41577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156139de575f80fd5b505af11580156139f0573d5f803e3d5ffd5b5050505050613a4082827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b5050565b5f805f805f80885f81518110613a5e57613a5d6161c4565b5b602002602001015190505f5b8b51811015613dcc578b8181518110613a8657613a856161c4565b5b602002602001015193508a8181518110613aa357613aa26161c4565b5b60200260200101519250819550896001820181518110613ac657613ac56161c4565b5b602002602001015191508b516001820114613afe578b6001820181518110613af157613af06161c4565b5b6020026020010151613b00565b875b94505f6001811115613b1557613b14616631565b5b836001811115613b2857613b27616631565b5b03613c6057886001820181518110613b4357613b426161c4565b5b602002602001015196508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015613bf0578373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f89886040518463ffffffff1660e01b8152600401613bbe93929190616796565b5f604051808303815f87803b158015613bd5575f80fd5b505af1158015613be7573d5f803e3d5ffd5b50505050613c5b565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f885f886040518463ffffffff1660e01b8152600401613c2d939291906167de565b5f604051808303815f87803b158015613c44575f80fd5b505af1158015613c56573d5f803e3d5ffd5b505050505b613dc1565b5f8473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613caa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cce91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f80613d838773ffffffffffffffffffffffffffffffffffffffff166353c059a0858b6040518363ffffffff1660e01b8152600401613d3e929190616826565b6020604051808303815f875af1158015613d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d7e9190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff1691508215613db957809950613dbd565b8199505b5050505b806001019050613a6a565b50505050505095945050505050565b5f810315613e91575f8273ffffffffffffffffffffffffffffffffffffffff1682604051613e08906168fc565b5f6040518083038185875af1925050503d805f8114613e42576040519150601f19603f3d011682016040523d82523d5f602084013e613e47565b606091505b5050905080613e8f5782826040517f47b96f70000000000000000000000000000000000000000000000000000000008152600401613e86929190616910565b60405180910390fd5b505b5050565b5f805f805f80875f81518110613eae57613ead6161c4565b5b602002602001015190508a95505f5b8a518110156142c3578a8181518110613ed957613ed86161c4565b5b60200260200101519250898181518110613ef657613ef56161c4565b5b60200260200101519450819550886001820181518110613f1957613f186161c4565b5b602002602001015191508a516001820114613f51578a6001820181518110613f4457613f436161c4565b5b6020026020010151613f53565b875b93505f6001811115613f6857613f67616631565b5b856001811115613f7b57613f7a616631565b5b03614157575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fef91906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156140ce5761405d82828b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f8b896040518463ffffffff1660e01b815260040161409c93929190616796565b5f604051808303815f87803b1580156140b3575f80fd5b505af11580156140c5573d5f803e3d5ffd5b50505050614150565b6140e381838b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8a5f896040518463ffffffff1660e01b8152600401614122939291906167de565b5f604051808303815f87803b158015614139575f80fd5b505af115801561414b573d5f803e3d5ffd5b505050505b50506142b8565b5f8373ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141c591906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f8061427a8673ffffffffffffffffffffffffffffffffffffffff166353c059a0858a6040518363ffffffff1660e01b8152600401614235929190616826565b6020604051808303815f875af1158015614251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142759190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff16915082156142b0578099506142b4565b8199505b5050505b806001019050613ebd565b50505050505095945050505050565b5f63a9059cbb60e01b83836040516024016142ee929190616910565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506143578482614fee565b50505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8585856040518463ffffffff1660e01b81526004016143e293929190616937565b608060405180830381865afa1580156143fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144219190616a09565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361449b578383836040517fd648e3a200000000000000000000000000000000000000000000000000000000815260040161449293929190616a34565b60405180910390fd5b9392505050565b5f805f8873ffffffffffffffffffffffffffffffffffffffff1663c9939f5e338689896040518563ffffffff1660e01b81526004016144e49493929190616a69565b5f604051808303815f875af11580156144ff573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906145279190616b7a565b90505f5b81518110156145c95761455782828151811061454a576145496161c4565b5b6020026020010151615078565b6fffffffffffffffffffffffffffffffff16846145749190616191565b935061459982828151811061458c5761458b6161c4565b5b6020026020010151615093565b6fffffffffffffffffffffffffffffffff16836145b69190616191565b9250806145c290616bc1565b905061452b565b50878310806145d757508682105b1561461f57878388846040517f3199f6ee0000000000000000000000000000000000000000000000000000000081526004016146169493929190616c08565b60405180910390fd5b50965096945050505050565b5f81031561465f5761465e82828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f805f80606080876101c00135804211156146b85780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016146af929190615bd4565b60405180910390fd5b888061014001906146c99190616c57565b9050898061012001906146dc9190616cb9565b905014158061470f5750888061016001906146f79190616c57565b90508980610120019061470a9190616cb9565b905014155b15614746576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62ffffff80168960e001351180614766575062ffffff8016896101000135115b156147b3578860e001358961010001356040517f32f4ab8e0000000000000000000000000000000000000000000000000000000081526004016147aa929190615bd4565b60405180910390fd5b5f898061012001906147c59190616cb9565b905067ffffffffffffffff8111156147e0576147df61520a565b5b60405190808252806020026020018201604052801561480e5781602001602082028036833780820191505090505b509050898061012001906148229190616cb9565b905067ffffffffffffffff81111561483d5761483c61520a565b5b60405190808252806020026020018201604052801561486b5781602001602082028036833780820191505090505b5093505f8973ffffffffffffffffffffffffffffffffffffffff1663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156148b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148dc9190616606565b62ffffff169050808b61010001358c60e0013501108061490657508a60e001358b61010001358201105b15614955578a60e001358b6101000135826040517ffaa1db5600000000000000000000000000000000000000000000000000000000815260040161494c93929190616d1b565b60405180910390fd5b5f5b8251811015614a88575f8c8061012001906149729190616cb9565b83818110614983576149826161c4565b5b90506020020135830190505f8112806149a0575062ffffff801681115b156149e257806040517fe1505cc20000000000000000000000000000000000000000000000000000000081526004016149d99190616d68565b60405180910390fd5b808783815181106149f6576149f56161c4565b5b602002602001018181525050614a5d8d806101400190614a169190616c57565b84818110614a2757614a266161c4565b5b905060200201358e806101600190614a3f9190616c57565b85818110614a5057614a4f6161c4565b5b905060200201358361509f565b848381518110614a7057614a6f6161c4565b5b60200260200101818152505050806001019050614957565b50505f808a73ffffffffffffffffffffffffffffffffffffffff1663383d15c58d610180016020810190614abc9190616d81565b858f6101a0016020810190614ad19190616d81565b6040518463ffffffff1660e01b8152600401614aef93929190616e63565b5f604051808303815f875af1158015614b0a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190614b329190616f34565b8097508193508294505050505f614b52828461512090919063ffffffff16565b9050614b5d81615078565b6fffffffffffffffffffffffffffffffff169a50614b7a81615093565b6fffffffffffffffffffffffffffffffff1699508c60a001358b1080614ba357508c60c001358a105b15614bf3578c60a001358b8e60c001358c6040517f3199f6ee000000000000000000000000000000000000000000000000000000008152600401614bea9493929190616c08565b60405180910390fd5b614bfc82615078565b6fffffffffffffffffffffffffffffffff169850614c1982615093565b6fffffffffffffffffffffffffffffffff16975050505050509295509295509295565b5f806001811115614c5057614c4f616631565b5b826001811115614c6357614c62616631565b5b03614d7d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b8152600401614cc3929190616fa0565b602060405180830381865afa158015614cde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d02919061629f565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614d78578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401614d6f93929190616a34565b60405180910390fd5b614d8b565b614d88858585614384565b90505b949350505050565b5f6323b872dd60e01b848484604051602401614db193929190616a34565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050614e1a8582614fee565b5050505050565b5f808403614e5b576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614e6857505f82145b15614e9f576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e585614eae9190616fc7565b90505f8382614ebd9190616fc7565b90505f826103e887614ecf9190616fc7565b614ed99190616191565b90508082614ee79190617035565b93505050509392505050565b5f808403614f2d576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614f3a57505f82145b15614f71576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e88585614f819190616fc7565b614f8b9190616fc7565b90505f6103e58685614f9d9190616258565b614fa79190616fc7565b905060018183614fb79190617035565b614fc19190616191565b925050509392505050565b5f806fffffffffffffffffffffffffffffffff831691508260801c9050915091565b5f805f5260205f8351602085015f875af19050805f811461502c573d5f811461501f5760015f511483169250615026565b843b151592505b5061503b565b3d1561503a573d5f803e3d5ffd5b5b5080615073576040517f32e2717a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f8160801c9050919050565b5f6150ca8467ffffffffffffffff1667ffffffffffffffff605884615198909392919063ffffffff16565b90506150f68367ffffffffffffffff1667ffffffffffffffff601884615198909392919063ffffffff16565b90506151178262ffffff1662ffffff5f84615198909392919063ffffffff16565b90509392505050565b5f81830390508281118061515b5750825f1c6fffffffffffffffffffffffffffffffff16815f1c6fffffffffffffffffffffffffffffffff16115b15615192576040517fe599af5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6151d5816151c3565b81146151df575f80fd5b50565b5f813590506151f0816151cc565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b615240826151fa565b810181811067ffffffffffffffff8211171561525f5761525e61520a565b5b80604052505050565b5f6152716151b2565b905061527d8282615237565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156152a4576152a361520a565b5b602082029050602081019050919050565b5f80fd5b5f6152cb6152c68461528a565b615268565b905080838252602082019050602084028301858111156152ee576152ed6152b5565b5b835b81811015615317578061530388826151e2565b8452602084019350506020810190506152f0565b5050509392505050565b5f82601f83011261533557615334615286565b5b81356153458482602086016152b9565b91505092915050565b5f67ffffffffffffffff8211156153685761536761520a565b5b602082029050602081019050919050565b60028110615385575f80fd5b50565b5f8135905061539681615379565b92915050565b5f6153ae6153a98461534e565b615268565b905080838252602082019050602084028301858111156153d1576153d06152b5565b5b835b818110156153fa57806153e68882615388565b8452602084019350506020810190506153d3565b5050509392505050565b5f82601f83011261541857615417615286565b5b813561542884826020860161539c565b91505092915050565b5f67ffffffffffffffff82111561544b5761544a61520a565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6154858261545c565b9050919050565b5f6154968261547b565b9050919050565b6154a68161548c565b81146154b0575f80fd5b50565b5f813590506154c18161549d565b92915050565b5f6154d96154d484615431565b615268565b905080838252602082019050602084028301858111156154fc576154fb6152b5565b5b835b81811015615525578061551188826154b3565b8452602084019350506020810190506154fe565b5050509392505050565b5f82601f83011261554357615542615286565b5b81356155538482602086016154c7565b91505092915050565b5f60608284031215615571576155706151f6565b5b61557b6060615268565b90505f82013567ffffffffffffffff81111561559a57615599615282565b5b6155a684828501615321565b5f83015250602082013567ffffffffffffffff8111156155c9576155c8615282565b5b6155d584828501615404565b602083015250604082013567ffffffffffffffff8111156155f9576155f8615282565b5b6156058482850161552f565b60408301525092915050565b5f61561b8261545c565b9050919050565b61562b81615611565b8114615635575f80fd5b50565b5f8135905061564681615622565b92915050565b5f805f805f60a08688031215615665576156646151bb565b5b5f615672888289016151e2565b9550506020615683888289016151e2565b945050604086013567ffffffffffffffff8111156156a4576156a36151bf565b5b6156b08882890161555c565b93505060606156c188828901615638565b92505060806156d2888289016151e2565b9150509295509295909350565b6156e8816151c3565b82525050565b5f6020820190506157015f8301846156df565b92915050565b6157108161547b565b811461571a575f80fd5b50565b5f8135905061572b81615707565b92915050565b5f805f8060808587031215615749576157486151bb565b5b5f615756878288016151e2565b945050602085013567ffffffffffffffff811115615777576157766151bf565b5b6157838782880161555c565b93505060406157948782880161571d565b92505060606157a5878288016151e2565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6157e3816151c3565b82525050565b5f6157f483836157da565b60208301905092915050565b5f602082019050919050565b5f615816826157b1565b61582081856157bb565b935061582b836157cb565b805f5b8381101561585b57815161584288826157e9565b975061584d83615800565b92505060018101905061582e565b5085935050505092915050565b5f6020820190508181035f830152615880818461580c565b905092915050565b5f805f805f60a086880312156158a1576158a06151bb565b5b5f6158ae888289016151e2565b95505060206158bf888289016151e2565b945050604086013567ffffffffffffffff8111156158e0576158df6151bf565b5b6158ec8882890161555c565b93505060606158fd8882890161571d565b925050608061590e888289016151e2565b9150509295509295909350565b5f805f60608486031215615932576159316151bb565b5b5f61593f868287016154b3565b93505060206159508682870161571d565b9250506040615961868287016151e2565b9150509250925092565b5f62ffffff82169050919050565b6159828161596b565b811461598c575f80fd5b50565b5f8135905061599d81615979565b92915050565b5f61ffff82169050919050565b6159b9816159a3565b81146159c3575f80fd5b50565b5f813590506159d4816159b0565b92915050565b5f805f80608085870312156159f2576159f16151bb565b5b5f6159ff878288016154b3565b9450506020615a10878288016154b3565b9350506040615a218782880161598f565b9250506060615a32878288016159c6565b91505092959194509250565b5f819050919050565b5f615a61615a5c615a578461545c565b615a3e565b61545c565b9050919050565b5f615a7282615a47565b9050919050565b5f615a8382615a68565b9050919050565b615a9381615a79565b82525050565b5f602082019050615aac5f830184615a8a565b92915050565b5f615abc82615a68565b9050919050565b615acc81615ab2565b82525050565b5f602082019050615ae55f830184615ac3565b92915050565b5f805f805f805f80610100898b031215615b0857615b076151bb565b5b5f615b158b828c016154b3565b9850506020615b268b828c016159c6565b9750506040615b378b828c016151e2565b9650506060615b488b828c016151e2565b955050608089013567ffffffffffffffff811115615b6957615b686151bf565b5b615b758b828c01615321565b94505060a089013567ffffffffffffffff811115615b9657615b956151bf565b5b615ba28b828c01615321565b93505060c0615bb38b828c01615638565b92505060e0615bc48b828c016151e2565b9150509295985092959890939650565b5f604082019050615be75f8301856156df565b615bf460208301846156df565b9392505050565b5f615c0582615a68565b9050919050565b615c1581615bfb565b82525050565b5f602082019050615c2e5f830184615c0c565b92915050565b5f80fd5b5f6101e08284031215615c4e57615c4d615c34565b5b81905092915050565b5f60208284031215615c6c57615c6b6151bb565b5b5f82013567ffffffffffffffff811115615c8957615c886151bf565b5b615c9584828501615c38565b91505092915050565b5f60c082019050615cb15f8301896156df565b615cbe60208301886156df565b615ccb60408301876156df565b615cd860608301866156df565b8181036080830152615cea818561580c565b905081810360a0830152615cfe818461580c565b9050979650505050505050565b5f615d158261547b565b9050919050565b615d2581615d0b565b8114615d2f575f80fd5b50565b5f81359050615d4081615d1c565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b615d6a81615d46565b8114615d74575f80fd5b50565b5f81359050615d8581615d61565b92915050565b5f8115159050919050565b615d9f81615d8b565b8114615da9575f80fd5b50565b5f81359050615dba81615d96565b92915050565b5f805f60608486031215615dd757615dd66151bb565b5b5f615de486828701615d32565b9350506020615df586828701615d77565b9250506040615e0686828701615dac565b9150509250925092565b615e1981615d46565b82525050565b5f606082019050615e325f830186615e10565b615e3f6020830185615e10565b615e4c6040830184615e10565b949350505050565b5f615e5e82615a68565b9050919050565b615e6e81615e54565b82525050565b5f602082019050615e875f830184615e65565b92915050565b5f805f805f805f805f6101208a8c031215615eab57615eaa6151bb565b5b5f615eb88c828d016154b3565b9950506020615ec98c828d016154b3565b9850506040615eda8c828d016159c6565b9750506060615eeb8c828d016151e2565b9650506080615efc8c828d016151e2565b95505060a08a013567ffffffffffffffff811115615f1d57615f1c6151bf565b5b615f298c828d01615321565b94505060c08a013567ffffffffffffffff811115615f4a57615f496151bf565b5b615f568c828d01615321565b93505060e0615f678c828d0161571d565b925050610100615f798c828d016151e2565b9150509295985092959850929598565b5f8060408385031215615f9f57615f9e6151bb565b5b5f615fac85828601615d32565b9250506020615fbd8582860161598f565b9150509250929050565b5f615fd18261547b565b9050919050565b615fe181615fc7565b8114615feb575f80fd5b50565b5f81359050615ffc81615fd8565b92915050565b5f80fd5b5f8083601f84011261601b5761601a615286565b5b8235905067ffffffffffffffff81111561603857616037616002565b5b602083019150836020820283011115616054576160536152b5565b5b9250929050565b5f805f805f8060808789031215616075576160746151bb565b5b5f61608289828a01615fee565b965050602061609389828a0161571d565b955050604087013567ffffffffffffffff8111156160b4576160b36151bf565b5b6160c089828a01616006565b9450945050606087013567ffffffffffffffff8111156160e3576160e26151bf565b5b6160ef89828a01616006565b92509250509295509295509295565b5f8060408385031215616114576161136151bb565b5b5f61612185828601615d32565b9250506020616132858286016151e2565b9150509250929050565b6161458161596b565b82525050565b5f60208201905061615e5f83018461613c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61619b826151c3565b91506161a6836151c3565b92508282019050808211156161be576161bd616164565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6161fa8161547b565b82525050565b5f6020820190506162135f8301846161f1565b92915050565b5f81519050616227816151cc565b92915050565b5f60208284031215616242576162416151bb565b5b5f61624f84828501616219565b91505092915050565b5f616262826151c3565b915061626d836151c3565b925082820390508181111561628557616284616164565b5b92915050565b5f8151905061629981615707565b92915050565b5f602082840312156162b4576162b36151bb565b5b5f6162c18482850161628b565b91505092915050565b5f6162d482615a68565b9050919050565b6162e4816162ca565b82525050565b6162f3816159a3565b82525050565b5f60808201905061630c5f8301876162db565b61631960208301866162db565b616326604083018561613c565b61633360608301846162ea565b95945050505050565b5f8151905061634a81615d1c565b92915050565b5f60208284031215616365576163646151bb565b5b5f6163728482850161633c565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6163b16163ac6163a78461637b565b615a3e565b616384565b9050919050565b6163c181616397565b82525050565b5f6020820190506163da5f8301846163b8565b92915050565b5f815190506163ee8161549d565b92915050565b5f60208284031215616409576164086151bb565b5b5f616416848285016163e0565b91505092915050565b5f60208284031215616434576164336151bb565b5b5f616441848285016154b3565b91505092915050565b5f60a08201905061645d5f8301886161f1565b61646a60208301876161f1565b61647760408301866156df565b61648460608301856156df565b61649160808301846156df565b9695505050505050565b6164a481615d8b565b82525050565b5f6040820190506164bd5f830185615e10565b6164ca602083018461649b565b9392505050565b5f815190506164df81615d61565b92915050565b5f805f606084860312156164fc576164fb6151bb565b5b5f616509868287016164d1565b935050602061651a868287016164d1565b925050604061652b868287016164d1565b9150509250925092565b5f80fd5b82818337505050565b5f61654d83856157bb565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156165805761657f616535565b5b602083029250616591838584616539565b82840190509392505050565b5f6080820190506165b05f8301896161f1565b6165bd60208301886161f1565b81810360408301526165d0818688616542565b905081810360608301526165e5818486616542565b9050979650505050505050565b5f8151905061660081615979565b92915050565b5f6020828403121561661b5761661a6151bb565b5b5f616628848285016165f2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6dffffffffffffffffffffffffffff82169050919050565b6166808161665e565b811461668a575f80fd5b50565b5f8151905061669b81616677565b92915050565b5f63ffffffff82169050919050565b6166b9816166a1565b81146166c3575f80fd5b50565b5f815190506166d4816166b0565b92915050565b5f805f606084860312156166f1576166f06151bb565b5b5f6166fe8682870161668d565b935050602061670f8682870161668d565b9250506040616720868287016166c6565b9150509250925092565b5f819050919050565b5f61674d6167486167438461672a565b615a3e565b6151c3565b9050919050565b61675d81616733565b82525050565b5f82825260208201905092915050565b50565b5f6167815f83616763565b915061678c82616773565b5f82019050919050565b5f6080820190506167a95f830186616754565b6167b660208301856156df565b6167c360408301846161f1565b81810360608301526167d481616776565b9050949350505050565b5f6080820190506167f15f8301866156df565b6167fe6020830185616754565b61680b60408301846161f1565b818103606083015261681c81616776565b9050949350505050565b5f6040820190506168395f83018561649b565b61684660208301846161f1565b9392505050565b5f819050919050565b61685f8161684d565b8114616869575f80fd5b50565b5f8151905061687a81616856565b92915050565b5f60208284031215616895576168946151bb565b5b5f6168a28482850161686c565b91505092915050565b5f6168b5826151c3565b91505f82036168c7576168c6616164565b5b600182039050919050565b5f81905092915050565b5f6168e75f836168d2565b91506168f282616773565b5f82019050919050565b5f616906826168dc565b9150819050919050565b5f6040820190506169235f8301856161f1565b61693060208301846156df565b9392505050565b5f60608201905061694a5f8301866162db565b61695760208301856162db565b61696460408301846156df565b949350505050565b5f8151905061697a816159b0565b92915050565b5f8151905061698e81615d96565b92915050565b5f608082840312156169a9576169a86151f6565b5b6169b36080615268565b90505f6169c28482850161696c565b5f8301525060206169d58482850161633c565b60208301525060406169e984828501616980565b60408301525060606169fd84828501616980565b60608301525092915050565b5f60808284031215616a1e57616a1d6151bb565b5b5f616a2b84828501616994565b91505092915050565b5f606082019050616a475f8301866161f1565b616a5460208301856161f1565b616a6160408301846156df565b949350505050565b5f608082019050616a7c5f8301876161f1565b616a8960208301866161f1565b8181036040830152616a9b818561580c565b90508181036060830152616aaf818461580c565b905095945050505050565b5f67ffffffffffffffff821115616ad457616ad361520a565b5b602082029050602081019050919050565b5f616af7616af284616aba565b615268565b90508083825260208201905060208402830185811115616b1a57616b196152b5565b5b835b81811015616b435780616b2f888261686c565b845260208401935050602081019050616b1c565b5050509392505050565b5f82601f830112616b6157616b60615286565b5b8151616b71848260208601616ae5565b91505092915050565b5f60208284031215616b8f57616b8e6151bb565b5b5f82015167ffffffffffffffff811115616bac57616bab6151bf565b5b616bb884828501616b4d565b91505092915050565b5f616bcb826151c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203616bfd57616bfc616164565b5b600182019050919050565b5f608082019050616c1b5f8301876156df565b616c2860208301866156df565b616c3560408301856156df565b616c4260608301846156df565b95945050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112616c7357616c72616c4b565b5b80840192508235915067ffffffffffffffff821115616c9557616c94616c4f565b5b602083019250602082023603831315616cb157616cb0616c53565b5b509250929050565b5f8083356001602003843603038112616cd557616cd4616c4b565b5b80840192508235915067ffffffffffffffff821115616cf757616cf6616c4f565b5b602083019250602082023603831315616d1357616d12616c53565b5b509250929050565b5f606082019050616d2e5f8301866156df565b616d3b60208301856156df565b616d4860408301846156df565b949350505050565b5f819050919050565b616d6281616d50565b82525050565b5f602082019050616d7b5f830184616d59565b92915050565b5f60208284031215616d9657616d956151bb565b5b5f616da38482850161571d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b616dde8161684d565b82525050565b5f616def8383616dd5565b60208301905092915050565b5f602082019050919050565b5f616e1182616dac565b616e1b8185616db6565b9350616e2683616dc6565b805f5b83811015616e56578151616e3d8882616de4565b9750616e4883616dfb565b925050600181019050616e29565b5085935050505092915050565b5f606082019050616e765f8301866161f1565b8181036020830152616e888185616e07565b9050616e9760408301846161f1565b949350505050565b5f616eb1616eac8461528a565b615268565b90508083825260208201905060208402830185811115616ed457616ed36152b5565b5b835b81811015616efd5780616ee98882616219565b845260208401935050602081019050616ed6565b5050509392505050565b5f82601f830112616f1b57616f1a615286565b5b8151616f2b848260208601616e9f565b91505092915050565b5f805f60608486031215616f4b57616f4a6151bb565b5b5f616f588682870161686c565b9350506020616f698682870161686c565b925050604084015167ffffffffffffffff811115616f8a57616f896151bf565b5b616f9686828701616f07565b9150509250925092565b5f604082019050616fb35f8301856161f1565b616fc060208301846161f1565b9392505050565b5f616fd1826151c3565b9150616fdc836151c3565b9250828202616fea816151c3565b9150828204841483151761700157617000616164565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61703f826151c3565b915061704a836151c3565b92508261705a57617059617008565b5b82820490509291505056fea26469706673582212200e309a78c4164f5b8b6e48c22021a99aca2bb60332bc12d21314fee29f34eefc64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92FE8E70 GT PUSH2 0xB5 JUMPI DUP1 PUSH4 0xBB558A9F GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xBB558A9F EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xC22159B6 EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0xD0E380F2 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0xE038E6DC EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xE9361C08 EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xF96FE925 EQ PUSH2 0x69E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x92FE8E70 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x964F987C EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0x9AB6156B EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0xA0D376CF EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xA3C7271A EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xB066EA7C EQ PUSH2 0x573 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x659AC74B GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x81C2FDFB EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x8EFC2B2C EQ PUSH2 0x409 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1A24F9A9 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x2075AD22 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x2A443FAE EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x3DC8F8EC EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x4B801870 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x62C06767 EQ PUSH2 0x2FE JUMPI PUSH2 0x1DA JUMP JUMPDEST CALLDATASIZE PUSH2 0x1DA JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C8CB79300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0xDA7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0xF2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0x591B JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x59DA JUMP JUMPDEST PUSH2 0x171B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x359 SWAP2 SWAP1 PUSH2 0x5A99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x376 PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x383 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x17EC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x5AEB JUMP JUMPDEST PUSH2 0x1963 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D6 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x1AFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 SWAP1 PUSH2 0x5C1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x423 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41E SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x1B26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x464 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45F SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1E2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x471 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x205C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x20EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4EB SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x51A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x515 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x234F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x529 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x558 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x553 SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x23E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x56A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x58D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x256E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x59A SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B7 PUSH2 0x279C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C4 SWAP2 SWAP1 PUSH2 0x5E74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5EE SWAP2 SWAP1 PUSH2 0x5E8D JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x601 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x630 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62B SWAP2 SWAP1 PUSH2 0x5F89 JUMP JUMPDEST PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x65B SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x2988 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x69C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x697 SWAP2 SWAP1 PUSH2 0x605B JUMP JUMPDEST PUSH2 0x2CD8 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6BF SWAP2 SWAP1 PUSH2 0x60FE JUMP JUMPDEST PUSH2 0x2E41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D1 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x723 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71A SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x73F JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x75F JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x75C SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x796 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x7E8 JUMPI PUSH2 0x7E7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86A JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x826 JUMPI PUSH2 0x825 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x861 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x881 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8DD SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91C SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x962 DUP9 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x954 JUMPI PUSH2 0x953 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x976 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x303B JUMP JUMPDEST DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D0 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA0F SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP5 POP DUP5 DUP10 GT ISZERO PUSH2 0xA62 JUMPI DUP9 DUP6 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA59 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA6C DUP8 DUP7 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xAC3 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xADF JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xAFF JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xAFC SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB84 JUMPI PUSH2 0xB83 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC02 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xBBE JUMPI PUSH2 0xBBD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF9 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC19 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xC2F DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC45 JUMPI PUSH2 0xC44 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xCAC JUMPI CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC67 JUMPI PUSH2 0xC66 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA3 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCEA DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCC2 JUMPI PUSH2 0xCC1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCDD JUMPI PUSH2 0xCDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3970 JUMP JUMPDEST PUSH0 PUSH2 0xD00 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 LT ISZERO PUSH2 0xD49 JUMPI DUP9 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD40 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD5C JUMPI PUSH2 0xD5B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0xD9B JUMPI PUSH2 0xD9A CALLER DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD82 JUMPI PUSH2 0xD81 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0xD95 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xDF0 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xE0C JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xE2C JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xE29 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xE7A DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xEC0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xE96 JUMPI PUSH2 0xE95 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xEB2 JUMPI PUSH2 0xEB1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0xED5 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0xF1E JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF15 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xF74 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF6B SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xF90 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xFB0 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xFAD SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xFE7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1039 JUMPI PUSH2 0x1038 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10BB JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1077 JUMPI PUSH2 0x1076 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B2 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x10D2 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E8 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x10FE JUMPI PUSH2 0x10FD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1165 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1120 JUMPI PUSH2 0x111F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x115C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11C3 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x117F JUMPI PUSH2 0x117E PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x119B JUMPI PUSH2 0x119A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x11B6 JUMPI PUSH2 0x11B5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x11D9 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 ADDRESS PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x1222 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1219 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x122C DUP8 DUP3 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1282 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1279 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x129E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x12BE JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x12BB SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x12F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x130C DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1327 JUMPI PUSH2 0x1326 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x136B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1386 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13AA SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x13F0 DUP10 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13C6 JUMPI PUSH2 0x13C5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13E2 JUMPI PUSH2 0x13E1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1404 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1459 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x147D SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x14D0 JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14C7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15CF JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1642 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x162F JUMPI DUP1 PUSH2 0x1631 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x163D DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST PUSH2 0x1716 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x166F JUMPI DUP1 PUSH2 0x16E8 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16E7 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x1715 DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x659AC74B DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x177B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x62F9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1797 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17BB SWAP2 SWAP1 PUSH2 0x6350 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x17F5 PUSH2 0x435D JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x183D JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1870 JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x18B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH2 0x1902 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST DUP4 ISZERO PUSH2 0x195C JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x1953 SWAP2 SWAP1 PUSH2 0x63C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x19AD JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19A4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x19DD DUP13 PUSH32 0x0 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A29 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A4D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP1 PUSH2 0x1AAD JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH0 DUP1 PUSH2 0x1ABD DUP5 DUP15 DUP15 DUP15 DUP15 ADDRESS PUSH2 0x44A2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1ACD JUMPI DUP1 DUP3 PUSH2 0x1AD0 JUMP JUMPDEST DUP2 DUP2 JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP POP POP POP POP POP PUSH2 0x1AE6 DUP13 DUP8 DUP7 PUSH2 0x462B JUMP JUMPDEST PUSH2 0x1AF0 DUP7 DUP5 PUSH2 0x3527 JUMP JUMPDEST POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x1B60 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B43 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B56 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BAB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCF SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1BF7 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C8D SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1CB3 JUMPI POP CALLVALUE DUP9 PUSH1 0x60 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1CE9 JUMPI PUSH2 0x1CDA DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CCE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1CE4 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFF JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1D59 JUMPI POP CALLVALUE DUP9 PUSH1 0x80 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1D8E JUMPI PUSH2 0x1D7F DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D73 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1D89 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFE JUMP JUMPDEST DUP8 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DA0 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DB3 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x60 ADD CALLDATALOAD DUP11 PUSH1 0x80 ADD CALLDATALOAD CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xD0A4F13B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x644A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x1E09 DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1E75 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E6C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x1E91 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x1EB1 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1EAE SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1EE8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1EFF DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F15 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F2B JUMPI PUSH2 0x1F2A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F92 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F4D JUMPI PUSH2 0x1F4C PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F89 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1FF0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FAC JUMPI PUSH2 0x1FAB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FC8 JUMPI PUSH2 0x1FC7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FE3 JUMPI PUSH2 0x1FE2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x2006 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x204F JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2046 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xABCD7830 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x209A SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20D9 SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2137 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x212E SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x2153 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2173 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2170 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x21AA JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x21FC JUMPI PUSH2 0x21FB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x227E JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x223A JUMPI PUSH2 0x2239 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2275 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2295 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x22DB DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22B1 JUMPI PUSH2 0x22B0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22CD JUMPI PUSH2 0x22CC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x22F0 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2339 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2343 DUP7 DUP6 PUSH2 0x3527 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE77366F8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x238D SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23A8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23CC SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x241B DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x23FE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2411 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2466 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x248A SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x24B2 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24FF JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2520 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2514 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x2542 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2536 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x254C DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x25B7 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25AE SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x25D3 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x25F3 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x25F0 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2678 JUMPI PUSH2 0x2677 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x26F6 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x26B2 JUMPI PUSH2 0x26B1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26ED SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x270D DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2733 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2725 JUMPI PUSH2 0x2724 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2748 CALLVALUE DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2791 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2788 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x280D JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2804 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x281D DUP14 DUP14 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2869 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x288D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x28CF JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH2 0x28DD DUP3 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x44A2 JUMP JUMPDEST DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP DUP1 ISZERO PUSH2 0x28F6 JUMPI DUP4 DUP6 DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP JUMPDEST POP POP POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7CFFBD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2941 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x295C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2980 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x29D1 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C8 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x29ED JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2A0D JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2A0A SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x2A44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A92 JUMPI PUSH2 0x2A91 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B10 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2ACC JUMPI PUSH2 0x2ACB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B07 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2B27 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2B42 JUMPI PUSH2 0x2B41 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B86 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC5 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x2BEB DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2BDD JUMPI PUSH2 0x2BDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2BFF DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C39 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C54 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C78 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x2C82 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x2CCB JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CC2 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D41 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D65 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2DC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17FAD7FC ADDRESS DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E0C SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x659D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E23 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E35 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5E29329 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7B SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBA SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EDF JUMPI PUSH2 0x2EDE PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F0D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 DUP1 DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2F25 JUMPI PUSH2 0x2F24 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2FF5 JUMPI DUP2 SWAP3 POP DUP5 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2F53 JUMPI PUSH2 0x2F52 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH2 0x2F9D DUP4 DUP4 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F75 JUMPI PUSH2 0x2F74 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2F90 JUMPI PUSH2 0x2F8F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4C3C JUMP JUMPDEST DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2FB0 JUMPI PUSH2 0x2FAF PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2F31 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3035 JUMPI PUSH2 0x3034 DUP4 DUP4 DUP4 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D93 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3053 JUMPI PUSH2 0x3052 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x351B JUMPI DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x307B JUMPI PUSH2 0x307A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3098 JUMPI PUSH2 0x3097 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP8 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30BB JUMPI PUSH2 0x30BA PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP10 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x30F3 JUMPI DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30E6 JUMPI PUSH2 0x30E5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x30F5 JUMP JUMPDEST DUP7 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x310A JUMPI PUSH2 0x3109 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x311D JUMPI PUSH2 0x311C PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x33F9 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x316D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3191 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x32F0 JUMPI PUSH0 DUP3 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3225 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3240 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3264 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x327D DUP5 DUP5 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP4 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32D3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32E5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x33F2 JUMP JUMPDEST PUSH0 DUP2 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x332B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3346 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x336A SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3383 DUP4 DUP6 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP3 PUSH0 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33D9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP PUSH2 0x3510 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x345E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3482 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34CE SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x350E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x305F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x35C0 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3588 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x359F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x35BF DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35E1 JUMPI PUSH2 0x35E0 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x360F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 DUP6 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3627 JUMPI PUSH2 0x3626 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH0 DUP5 MLOAD SWAP1 POP JUMPDEST PUSH0 DUP2 EQ PUSH2 0x3967 JUMPI PUSH0 DUP5 PUSH1 0x1 DUP4 PUSH2 0x364F SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3660 JUMPI PUSH2 0x365F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP5 PUSH2 0x3679 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x368A JUMPI PUSH2 0x3689 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP6 PUSH2 0x36A3 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x36B4 JUMPI PUSH2 0x36B3 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36D1 JUMPI PUSH2 0x36D0 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36E4 JUMPI PUSH2 0x36E3 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x384E JUMPI PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3734 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3758 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x37D6 JUMPI DUP1 DUP3 DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP JUMPDEST PUSH0 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x37EA JUMPI PUSH2 0x37E9 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3809 DUP4 DUP4 DUP4 PUSH2 0x4EF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x1 DUP10 PUSH2 0x3829 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x383A JUMPI PUSH2 0x3839 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP POP PUSH2 0x3951 JUMP JUMPDEST PUSH2 0x390D DUP2 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3865 JUMPI PUSH2 0x3864 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38CD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38F1 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x205C JUMP JUMPDEST DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP SWAP1 POP POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3933 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3944 JUMPI PUSH2 0x3943 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x395F SWAP1 PUSH2 0x68AB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3639 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3A41 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39DE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39F0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3A40 DUP3 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP9 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3A5E JUMPI PUSH2 0x3A5D PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x3DCC JUMPI DUP12 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A86 JUMPI PUSH2 0x3A85 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3AA3 JUMPI PUSH2 0x3AA2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP2 SWAP6 POP DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AC6 JUMPI PUSH2 0x3AC5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP12 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3AFE JUMPI DUP12 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AF1 JUMPI PUSH2 0x3AF0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3B00 JUMP JUMPDEST DUP8 JUMPDEST SWAP5 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B15 JUMPI PUSH2 0x3B14 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B28 JUMPI PUSH2 0x3B27 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3C60 JUMPI DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3B43 JUMPI PUSH2 0x3B42 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3BF0 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BBE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BD5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BE7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3C5B JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP9 PUSH0 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C2D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C44 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C56 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x3DC1 JUMP JUMPDEST PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CAA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CCE SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x3D83 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D3E SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D5A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D7E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x3DB9 JUMPI DUP1 SWAP10 POP PUSH2 0x3DBD JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3A6A JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3E91 JUMPI PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E08 SWAP1 PUSH2 0x68FC JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E42 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E47 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E8F JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x47B96F7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E86 SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3EAE JUMPI PUSH2 0x3EAD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP11 SWAP6 POP PUSH0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x42C3 JUMPI DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3ED9 JUMPI PUSH2 0x3ED8 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3EF6 JUMPI PUSH2 0x3EF5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F19 JUMPI PUSH2 0x3F18 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP11 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3F51 JUMPI DUP11 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F44 JUMPI PUSH2 0x3F43 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3F53 JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F68 JUMPI PUSH2 0x3F67 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F7B JUMPI PUSH2 0x3F7A PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4157 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FCB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3FEF SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x40CE JUMPI PUSH2 0x405D DUP3 DUP3 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP12 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x409C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40C5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4150 JUMP JUMPDEST PUSH2 0x40E3 DUP2 DUP4 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP11 PUSH0 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4122 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4139 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x414B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH2 0x42B8 JUMP JUMPDEST PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41A1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41C5 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x427A DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4235 SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4251 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4275 SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x42B0 JUMPI DUP1 SWAP10 POP PUSH2 0x42B4 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3EBD JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x42EE SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4357 DUP5 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6937 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43FD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4421 SWAP2 SWAP1 PUSH2 0x6A09 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x449B JUMPI DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4492 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC9939F5E CALLER DUP7 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44E4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A69 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44FF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4527 SWAP2 SWAP1 PUSH2 0x6B7A JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x45C9 JUMPI PUSH2 0x4557 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x454A JUMPI PUSH2 0x4549 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x4574 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP4 POP PUSH2 0x4599 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x458C JUMPI PUSH2 0x458B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x45B6 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP DUP1 PUSH2 0x45C2 SWAP1 PUSH2 0x6BC1 JUMP JUMPDEST SWAP1 POP PUSH2 0x452B JUMP JUMPDEST POP DUP8 DUP4 LT DUP1 PUSH2 0x45D7 JUMPI POP DUP7 DUP3 LT JUMPDEST ISZERO PUSH2 0x461F JUMPI DUP8 DUP4 DUP9 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4616 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x465F JUMPI PUSH2 0x465E DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 DUP8 PUSH2 0x1C0 ADD CALLDATALOAD DUP1 TIMESTAMP GT ISZERO PUSH2 0x46B8 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46AF SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x46C9 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x46DC SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO DUP1 PUSH2 0x470F JUMPI POP DUP9 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x46F7 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x470A SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO JUMPDEST ISZERO PUSH2 0x4746 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH1 0xE0 ADD CALLDATALOAD GT DUP1 PUSH2 0x4766 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH2 0x100 ADD CALLDATALOAD GT JUMPDEST ISZERO PUSH2 0x47B3 JUMPI DUP9 PUSH1 0xE0 ADD CALLDATALOAD DUP10 PUSH2 0x100 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH32 0x32F4AB8E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x47AA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x47C5 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47E0 JUMPI PUSH2 0x47DF PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x480E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4822 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x483D JUMPI PUSH2 0x483C PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x486B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP4 POP PUSH0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBE65EDC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48B8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48DC SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 POP DUP1 DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP13 PUSH1 0xE0 ADD CALLDATALOAD ADD LT DUP1 PUSH2 0x4906 JUMPI POP DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 ADD LT JUMPDEST ISZERO PUSH2 0x4955 JUMPI DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x40 MLOAD PUSH32 0xFAA1DB5600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x494C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6D1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x4A88 JUMPI PUSH0 DUP13 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4972 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x4983 JUMPI PUSH2 0x4982 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 ADD SWAP1 POP PUSH0 DUP2 SLT DUP1 PUSH2 0x49A0 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP2 GT JUMPDEST ISZERO PUSH2 0x49E2 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xE1505CC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x49D9 SWAP2 SWAP1 PUSH2 0x6D68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x49F6 JUMPI PUSH2 0x49F5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x4A5D DUP14 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x4A16 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x4A27 JUMPI PUSH2 0x4A26 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP15 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x4A3F SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x4A50 JUMPI PUSH2 0x4A4F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0x509F JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A70 JUMPI PUSH2 0x4A6F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4957 JUMP JUMPDEST POP POP PUSH0 DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x383D15C5 DUP14 PUSH2 0x180 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4ABC SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST DUP6 DUP16 PUSH2 0x1A0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4AD1 SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AEF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E63 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B0A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B32 SWAP2 SWAP1 PUSH2 0x6F34 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP4 POP DUP3 SWAP5 POP POP POP POP PUSH0 PUSH2 0x4B52 DUP3 DUP5 PUSH2 0x5120 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4B5D DUP2 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP11 POP PUSH2 0x4B7A DUP2 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP10 POP DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 LT DUP1 PUSH2 0x4BA3 JUMPI POP DUP13 PUSH1 0xC0 ADD CALLDATALOAD DUP11 LT JUMPDEST ISZERO PUSH2 0x4BF3 JUMPI DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP13 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BEA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BFC DUP3 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP9 POP PUSH2 0x4C19 DUP3 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C50 JUMPI PUSH2 0x4C4F PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C63 JUMPI PUSH2 0x4C62 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4D7D JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4CC3 SWAP3 SWAP2 SWAP1 PUSH2 0x6FA0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CDE JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D02 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4D78 JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D6F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D8B JUMP JUMPDEST PUSH2 0x4D88 DUP6 DUP6 DUP6 PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DB1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4E1A DUP6 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4E5B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4E68 JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4E9F JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E5 DUP6 PUSH2 0x4EAE SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP4 DUP3 PUSH2 0x4EBD SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH2 0x3E8 DUP8 PUSH2 0x4ECF SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4ED9 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH2 0x4EE7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4F2D JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4F3A JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4F71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E8 DUP6 DUP6 PUSH2 0x4F81 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4F8B SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x3E5 DUP7 DUP6 PUSH2 0x4F9D SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x4FA7 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP4 PUSH2 0x4FB7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST PUSH2 0x4FC1 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 POP DUP3 PUSH1 0x80 SHR SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH0 DUP8 GAS CALL SWAP1 POP DUP1 PUSH0 DUP2 EQ PUSH2 0x502C JUMPI RETURNDATASIZE PUSH0 DUP2 EQ PUSH2 0x501F JUMPI PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND SWAP3 POP PUSH2 0x5026 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO ISZERO SWAP3 POP JUMPDEST POP PUSH2 0x503B JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x503A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST JUMPDEST POP DUP1 PUSH2 0x5073 JUMPI PUSH1 0x40 MLOAD PUSH32 0x32E2717A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x80 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x50CA DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x58 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x50F6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x18 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x5117 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH0 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP4 SUB SWAP1 POP DUP3 DUP2 GT DUP1 PUSH2 0x515B JUMPI POP DUP3 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x5192 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE599AF5500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x51D5 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP2 EQ PUSH2 0x51DF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x51F0 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x5240 DUP3 PUSH2 0x51FA JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x525F JUMPI PUSH2 0x525E PUSH2 0x520A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5271 PUSH2 0x51B2 JUMP JUMPDEST SWAP1 POP PUSH2 0x527D DUP3 DUP3 PUSH2 0x5237 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH2 0x52A3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x52CB PUSH2 0x52C6 DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x52EE JUMPI PUSH2 0x52ED PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5317 JUMPI DUP1 PUSH2 0x5303 DUP9 DUP3 PUSH2 0x51E2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x52F0 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5335 JUMPI PUSH2 0x5334 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5345 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x52B9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5368 JUMPI PUSH2 0x5367 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x5385 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5396 DUP2 PUSH2 0x5379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x53AE PUSH2 0x53A9 DUP5 PUSH2 0x534E JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x53D1 JUMPI PUSH2 0x53D0 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x53FA JUMPI DUP1 PUSH2 0x53E6 DUP9 DUP3 PUSH2 0x5388 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x53D3 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5418 JUMPI PUSH2 0x5417 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5428 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x539C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x544B JUMPI PUSH2 0x544A PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5485 DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5496 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x54A6 DUP2 PUSH2 0x548C JUMP JUMPDEST DUP2 EQ PUSH2 0x54B0 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x54C1 DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x54D9 PUSH2 0x54D4 DUP5 PUSH2 0x5431 JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x54FC JUMPI PUSH2 0x54FB PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5525 JUMPI DUP1 PUSH2 0x5511 DUP9 DUP3 PUSH2 0x54B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x54FE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5543 JUMPI PUSH2 0x5542 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5553 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x54C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5571 JUMPI PUSH2 0x5570 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x557B PUSH1 0x60 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x559A JUMPI PUSH2 0x5599 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55A6 DUP5 DUP3 DUP6 ADD PUSH2 0x5321 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55C9 JUMPI PUSH2 0x55C8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55D5 DUP5 DUP3 DUP6 ADD PUSH2 0x5404 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55F9 JUMPI PUSH2 0x55F8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x5605 DUP5 DUP3 DUP6 ADD PUSH2 0x552F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x561B DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x562B DUP2 PUSH2 0x5611 JUMP JUMPDEST DUP2 EQ PUSH2 0x5635 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5646 DUP2 PUSH2 0x5622 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5665 JUMPI PUSH2 0x5664 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5672 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5683 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x56A4 JUMPI PUSH2 0x56A3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x56B0 DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x56C1 DUP9 DUP3 DUP10 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x56D2 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x56E8 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5701 PUSH0 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5710 DUP2 PUSH2 0x547B JUMP JUMPDEST DUP2 EQ PUSH2 0x571A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x572B DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5749 JUMPI PUSH2 0x5748 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5756 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5777 JUMPI PUSH2 0x5776 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5783 DUP8 DUP3 DUP9 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5794 DUP8 DUP3 DUP9 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x57A5 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x57E3 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x57F4 DUP4 DUP4 PUSH2 0x57DA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5816 DUP3 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x5820 DUP2 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH2 0x582B DUP4 PUSH2 0x57CB JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x585B JUMPI DUP2 MLOAD PUSH2 0x5842 DUP9 DUP3 PUSH2 0x57E9 JUMP JUMPDEST SWAP8 POP PUSH2 0x584D DUP4 PUSH2 0x5800 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x582E JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x5880 DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x58A1 JUMPI PUSH2 0x58A0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x58AE DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x58BF DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x58E0 JUMPI PUSH2 0x58DF PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x58EC DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x58FD DUP9 DUP3 DUP10 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x590E DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5932 JUMPI PUSH2 0x5931 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x593F DUP7 DUP3 DUP8 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5950 DUP7 DUP3 DUP8 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5961 DUP7 DUP3 DUP8 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5982 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP2 EQ PUSH2 0x598C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x599D DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x59B9 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP2 EQ PUSH2 0x59C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59D4 DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x59F2 JUMPI PUSH2 0x59F1 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x59FF DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x5A10 DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5A21 DUP8 DUP3 DUP9 ADD PUSH2 0x598F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x5A32 DUP8 DUP3 DUP9 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A61 PUSH2 0x5A5C PUSH2 0x5A57 DUP5 PUSH2 0x545C JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A72 DUP3 PUSH2 0x5A47 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A83 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5A93 DUP2 PUSH2 0x5A79 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AAC PUSH0 DUP4 ADD DUP5 PUSH2 0x5A8A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5ABC DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5ACC DUP2 PUSH2 0x5AB2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AE5 PUSH0 DUP4 ADD DUP5 PUSH2 0x5AC3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x5B08 JUMPI PUSH2 0x5B07 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5B15 DUP12 DUP3 DUP13 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x5B26 DUP12 DUP3 DUP13 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x5B37 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x5B48 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B69 JUMPI PUSH2 0x5B68 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5B75 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B96 JUMPI PUSH2 0x5B95 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5BA2 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x5BB3 DUP12 DUP3 DUP13 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 PUSH2 0x5BC4 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5BE7 PUSH0 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5BF4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C05 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5C15 DUP2 PUSH2 0x5BFB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5C2E PUSH0 DUP4 ADD DUP5 PUSH2 0x5C0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C4E JUMPI PUSH2 0x5C4D PUSH2 0x5C34 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C6C JUMPI PUSH2 0x5C6B PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C89 JUMPI PUSH2 0x5C88 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5C95 DUP5 DUP3 DUP6 ADD PUSH2 0x5C38 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x5CB1 PUSH0 DUP4 ADD DUP10 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CBE PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CCB PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CD8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x5CEA DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x5CFE DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D15 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D25 DUP2 PUSH2 0x5D0B JUMP JUMPDEST DUP2 EQ PUSH2 0x5D2F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D40 DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D6A DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D74 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D85 DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D9F DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP2 EQ PUSH2 0x5DA9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5DBA DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5DD7 JUMPI PUSH2 0x5DD6 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5DE4 DUP7 DUP3 DUP8 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5DF5 DUP7 DUP3 DUP8 ADD PUSH2 0x5D77 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5E06 DUP7 DUP3 DUP8 ADD PUSH2 0x5DAC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x5E19 DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5E32 PUSH0 DUP4 ADD DUP7 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E3F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E4C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5E10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5E5E DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5E6E DUP2 PUSH2 0x5E54 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5E87 PUSH0 DUP4 ADD DUP5 PUSH2 0x5E65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x5EAB JUMPI PUSH2 0x5EAA PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5EB8 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x5EC9 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x5EDA DUP13 DUP3 DUP14 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x5EEB DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x5EFC DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F1D JUMPI PUSH2 0x5F1C PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F29 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4A JUMPI PUSH2 0x5F49 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F56 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x5F67 DUP13 DUP3 DUP14 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x5F79 DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F9F JUMPI PUSH2 0x5F9E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5FAC DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FBD DUP6 DUP3 DUP7 ADD PUSH2 0x598F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5FD1 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5FE1 DUP2 PUSH2 0x5FC7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5FEB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5FFC DUP2 PUSH2 0x5FD8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x601B JUMPI PUSH2 0x601A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6038 JUMPI PUSH2 0x6037 PUSH2 0x6002 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x6054 JUMPI PUSH2 0x6053 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x6075 JUMPI PUSH2 0x6074 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6082 DUP10 DUP3 DUP11 ADD PUSH2 0x5FEE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x6093 DUP10 DUP3 DUP11 ADD PUSH2 0x571D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60B4 JUMPI PUSH2 0x60B3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60C0 DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60E3 JUMPI PUSH2 0x60E2 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60EF DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6114 JUMPI PUSH2 0x6113 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6121 DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6132 DUP6 DUP3 DUP7 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x6145 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x615E PUSH0 DUP4 ADD DUP5 PUSH2 0x613C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x619B DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x61A6 DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x61BE JUMPI PUSH2 0x61BD PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x61FA DUP2 PUSH2 0x547B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6213 PUSH0 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6227 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6242 JUMPI PUSH2 0x6241 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x624F DUP5 DUP3 DUP6 ADD PUSH2 0x6219 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6262 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x626D DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x6285 JUMPI PUSH2 0x6284 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6299 DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x62B4 JUMPI PUSH2 0x62B3 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x62C1 DUP5 DUP3 DUP6 ADD PUSH2 0x628B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x62D4 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x62E4 DUP2 PUSH2 0x62CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x62F3 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x630C PUSH0 DUP4 ADD DUP8 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6319 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6326 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x613C JUMP JUMPDEST PUSH2 0x6333 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x62EA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x634A DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6365 JUMPI PUSH2 0x6364 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6372 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x63B1 PUSH2 0x63AC PUSH2 0x63A7 DUP5 PUSH2 0x637B JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x6384 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x63C1 DUP2 PUSH2 0x6397 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x63DA PUSH0 DUP4 ADD DUP5 PUSH2 0x63B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x63EE DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6409 JUMPI PUSH2 0x6408 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6416 DUP5 DUP3 DUP6 ADD PUSH2 0x63E0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6434 JUMPI PUSH2 0x6433 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6441 DUP5 DUP3 DUP6 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x645D PUSH0 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x646A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6477 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6484 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6491 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x64A4 DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x64BD PUSH0 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x64CA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x649B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x64DF DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x64FC JUMPI PUSH2 0x64FB PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6509 DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x651A DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x652B DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x654D DUP4 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6580 JUMPI PUSH2 0x657F PUSH2 0x6535 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6591 DUP4 DUP6 DUP5 PUSH2 0x6539 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x65B0 PUSH0 DUP4 ADD DUP10 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x65BD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x65D0 DUP2 DUP7 DUP9 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x65E5 DUP2 DUP5 DUP7 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6600 DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x661B JUMPI PUSH2 0x661A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6628 DUP5 DUP3 DUP6 ADD PUSH2 0x65F2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6680 DUP2 PUSH2 0x665E JUMP JUMPDEST DUP2 EQ PUSH2 0x668A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x669B DUP2 PUSH2 0x6677 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x66B9 DUP2 PUSH2 0x66A1 JUMP JUMPDEST DUP2 EQ PUSH2 0x66C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x66D4 DUP2 PUSH2 0x66B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x66F1 JUMPI PUSH2 0x66F0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x66FE DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x670F DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6720 DUP7 DUP3 DUP8 ADD PUSH2 0x66C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x674D PUSH2 0x6748 PUSH2 0x6743 DUP5 PUSH2 0x672A JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x51C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x675D DUP2 PUSH2 0x6733 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x6781 PUSH0 DUP4 PUSH2 0x6763 JUMP JUMPDEST SWAP2 POP PUSH2 0x678C DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67A9 PUSH0 DUP4 ADD DUP7 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x67B6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67C3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x67D4 DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67F1 PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67FE PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x680B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x681C DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6839 PUSH0 DUP4 ADD DUP6 PUSH2 0x649B JUMP JUMPDEST PUSH2 0x6846 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x685F DUP2 PUSH2 0x684D JUMP JUMPDEST DUP2 EQ PUSH2 0x6869 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x687A DUP2 PUSH2 0x6856 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6895 JUMPI PUSH2 0x6894 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x68A2 DUP5 DUP3 DUP6 ADD PUSH2 0x686C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68B5 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x68C7 JUMPI PUSH2 0x68C6 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68E7 PUSH0 DUP4 PUSH2 0x68D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x68F2 DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6906 DUP3 PUSH2 0x68DC JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6923 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6930 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x694A PUSH0 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6957 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6964 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x697A DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x698E DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x69A9 JUMPI PUSH2 0x69A8 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x69B3 PUSH1 0x80 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x69C2 DUP5 DUP3 DUP6 ADD PUSH2 0x696C JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x69D5 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x69E9 DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x69FD DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A1E JUMPI PUSH2 0x6A1D PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6A2B DUP5 DUP3 DUP6 ADD PUSH2 0x6994 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6A47 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A54 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A61 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6A7C PUSH0 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A89 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x6A9B DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6AAF DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6AD4 JUMPI PUSH2 0x6AD3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6AF7 PUSH2 0x6AF2 DUP5 PUSH2 0x6ABA JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6B1A JUMPI PUSH2 0x6B19 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6B43 JUMPI DUP1 PUSH2 0x6B2F DUP9 DUP3 PUSH2 0x686C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6B1C JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6B61 JUMPI PUSH2 0x6B60 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6B71 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6B8F JUMPI PUSH2 0x6B8E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6BAC JUMPI PUSH2 0x6BAB PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6BB8 DUP5 DUP3 DUP6 ADD PUSH2 0x6B4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6BCB DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x6BFD JUMPI PUSH2 0x6BFC PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6C1B PUSH0 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C28 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C35 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C42 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6C73 JUMPI PUSH2 0x6C72 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6C95 JUMPI PUSH2 0x6C94 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6CB1 JUMPI PUSH2 0x6CB0 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6CD5 JUMPI PUSH2 0x6CD4 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6CF7 JUMPI PUSH2 0x6CF6 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6D13 JUMPI PUSH2 0x6D12 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6D2E PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D3B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D48 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D62 DUP2 PUSH2 0x6D50 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6D7B PUSH0 DUP4 ADD DUP5 PUSH2 0x6D59 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D96 JUMPI PUSH2 0x6D95 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6DA3 DUP5 DUP3 DUP6 ADD PUSH2 0x571D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6DDE DUP2 PUSH2 0x684D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6DEF DUP4 DUP4 PUSH2 0x6DD5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6E11 DUP3 PUSH2 0x6DAC JUMP JUMPDEST PUSH2 0x6E1B DUP2 DUP6 PUSH2 0x6DB6 JUMP JUMPDEST SWAP4 POP PUSH2 0x6E26 DUP4 PUSH2 0x6DC6 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6E56 JUMPI DUP2 MLOAD PUSH2 0x6E3D DUP9 DUP3 PUSH2 0x6DE4 JUMP JUMPDEST SWAP8 POP PUSH2 0x6E48 DUP4 PUSH2 0x6DFB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x6E29 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6E76 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x6E88 DUP2 DUP6 PUSH2 0x6E07 JUMP JUMPDEST SWAP1 POP PUSH2 0x6E97 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6EB1 PUSH2 0x6EAC DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6ED4 JUMPI PUSH2 0x6ED3 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6EFD JUMPI DUP1 PUSH2 0x6EE9 DUP9 DUP3 PUSH2 0x6219 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6ED6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6F1B JUMPI PUSH2 0x6F1A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6F2B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6E9F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F4B JUMPI PUSH2 0x6F4A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6F58 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F69 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F8A JUMPI PUSH2 0x6F89 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6F96 DUP7 DUP3 DUP8 ADD PUSH2 0x6F07 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6FB3 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6FC0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6FD1 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x6FDC DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x6FEA DUP2 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x7001 JUMPI PUSH2 0x7000 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x703F DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x704A DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x705A JUMPI PUSH2 0x7059 PUSH2 0x7008 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE ADDRESS SWAP11 PUSH25 0xC4164F5B8B6E48C22021A99ACA2BB60332BC12D21314FEE29F CALLVALUE 0xEE 0xFC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1523:41876:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3307:8;3285:31;;:10;:31;;;3281:74;;3325:30;;;;;;;;;;;;;;3281:74;1523:41876;;;;;23903:1070;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21155:1038;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14831:640;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19572:1159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22625:839;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26560:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6796:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3967:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3098:45;;;;;;;;;;;;;:::i;:::-;;13396:1041;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3494:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9334:1736;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;18255:902;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5379:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15872:915;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6115:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7659:1035;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;17130:731;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3731:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11788:741;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4763:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25354:915;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27343:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4413:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23903:1070;24183:17;24139:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;24168:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;24267:8:::2;24216:60;;:4;:14;;;24231:4;:17;;;:24;24216:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;24212:175;;24334:4;:14;;;24349:4;:17;;;:24;24334:40;;;;;;;;:::i;:::-;;;;;;;;24299:77;;;;;;;;;;;:::i;:::-;;;;;;;;24212:175;24397:22;24422:59;24432:4;:17;;;24451:4;:13;;;24466:4;:14;;;24422:9;:59::i;:::-;24397:84;;24492:21;24516:8;:18;;;24543:4;24516:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24492:57;;24560:68;24578:4;:14;;;24593:1;24578:17;;;;;;;;:::i;:::-;;;;;;;;24597:10;24609:5;24615:1;24609:8;;;;;;;;:::i;:::-;;;;;;;;24619;24560:17;:68::i;:::-;24639:87;24674:5;24681:4;:13;;;24696:4;:14;;;24720:4;24639:34;:87::i;:::-;24785:13;24749:8;:18;;;24776:4;24749:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;;;:::i;:::-;24737:61;;24833:9;24812:18;:30;24808:105;;;24883:18;24903:9;24851:62;;;;;;;;;;;;:::i;:::-;;;;;;;;24808:105;24924:42;24952:2;24956:9;24924:27;:42::i;:::-;24202:771;;2324:1:::1;23903:1070:::0;;;;;;;;:::o;21155:1038::-;21381:26;21321:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;21358:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;21455:8:::2;21427:37;;:4;:14;;;21442:1;21427:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;21423:104;;21508:4;:14;;;21523:1;21508:17;;;;;;;;:::i;:::-;;;;;;;;21473:54;;;;;;;;;;;:::i;:::-;;;;;;;;21423:104;21538:22;21563:59;21573:4;:17;;;21592:4;:13;;;21607:4;:14;;;21563:9;:59::i;:::-;21538:84;;21644:62;21658:4;:13;;;21673:5;21680:4;:14;;;21696:9;21644:13;:62::i;:::-;21632:74;;21736:9;21721;21731:1;21721:12;;;;;;;;:::i;:::-;;;;;;;;:24;21717:91;;;21784:9;21795;21805:1;21795:12;;;;;;;;:::i;:::-;;;;;;;;21754:54;;;;;;;;;;;;:::i;:::-;;;;;;;;21717:91;21819:50;21846:5;21852:1;21846:8;;;;;;;;:::i;:::-;;;;;;;;21856:9;21866:1;21856:12;;;;;;;;:::i;:::-;;;;;;;;21819:26;:50::i;:::-;21880:21;21904:78;21930:5;21937:4;:13;;;21952:4;:14;;;21968:9;21979:2;21904:25;:78::i;:::-;21880:102;;22013:9;21997:13;:25;21993:95;;;22063:9;22074:13;22031:57;;;;;;;;;;;;:::i;:::-;;;;;;;;21993:95;22115:9;22125:1;22115:12;;;;;;;;:::i;:::-;;;;;;;;22103:9;:24;22099:87;;;22129:57;22149:10;22173:9;22183:1;22173:12;;;;;;;;:::i;:::-;;;;;;;;22161:9;:24;;;;:::i;:::-;22129:19;:57::i;:::-;22099:87;21413:780;;2324:1:::1;21155:1038:::0;;;;;;;:::o;14831:640::-;15068:17;15024:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;15053:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;15097:22:::2;15122:59;15132:4;:17;;;15151:4;:13;;;15166:4;:14;;;15122:9;:59::i;:::-;15097:84;;15192:68;15210:4;:14;;;15225:1;15210:17;;;;;;;;:::i;:::-;;;;;;;;15229:10;15241:5;15247:1;15241:8;;;;;;;;:::i;:::-;;;;;;;;15251;15192:17;:68::i;:::-;15283:77;15309:8;15319:5;15326:4;:13;;;15341:4;:14;;;15357:2;15283:25;:77::i;:::-;15271:89;;15390:9;15375:12;:24;15371:93;;;15440:12;15454:9;15408:56;;;;;;;;;;;;:::i;:::-;;;;;;;;15371:93;15087:384;2324:1:::1;14831:640:::0;;;;;;;;:::o;19572:1159::-;19823:26;19779:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;19808:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;19916:8:::2;19865:60;;:4;:14;;;19880:4;:17;;;:24;19865:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;19861:175;;19983:4;:14;;;19998:4;:17;;;:24;19983:40;;;;;;;;:::i;:::-;;;;;;;;19948:77;;;;;;;;;;;:::i;:::-;;;;;;;;19861:175;20046:22;20071:59;20081:4;:17;;;20100:4;:13;;;20115:4;:14;;;20071:9;:59::i;:::-;20046:84;;20152:68;20166:4;:13;;;20181:5;20188:4;:14;;;20204:15;20152:13;:68::i;:::-;20140:80;;20250:11;20235:9;20245:1;20235:12;;;;;;;;:::i;:::-;;;;;;;;:26;20231:95;;;20300:11;20313:9;20323:1;20313:12;;;;;;;;:::i;:::-;;;;;;;;20270:56;;;;;;;;;;;;:::i;:::-;;;;;;;;20231:95;20337:72;20355:4;:14;;;20370:1;20355:17;;;;;;;;:::i;:::-;;;;;;;;20374:10;20386:5;20392:1;20386:8;;;;;;;;:::i;:::-;;;;;;;;20396:9;20406:1;20396:12;;;;;;;;:::i;:::-;;;;;;;;20337:17;:72::i;:::-;20420:22;20457:89;20483:5;20490:4;:13;;;20505:4;:14;;;20521:9;20540:4;20457:25;:89::i;:::-;20420:126;;20578:15;20561:14;:32;20557:109;;;20634:15;20651:14;20602:64;;;;;;;;;;;;:::i;:::-;;;;;;;;20557:109;20677:47;20705:2;20709:14;20677:27;:47::i;:::-;19851:880;;2324:1:::1;19572:1159:::0;;;;;;;;:::o;22625:839::-;22891:17;22847:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;22876:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;22920:22:::2;22945:59;22955:4;:17;;;22974:4;:13;;;22989:4;:14;;;22945:9;:59::i;:::-;22920:84;;23015:18;23036:4;:14;;;23051:5;:12;23036:28;;;;;;;;:::i;:::-;;;;;;;;23015:49;;23075:21;23099:11;:21;;;23121:2;23099:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23075:49;;23135:68;23153:4;:14;;;23168:1;23153:17;;;;;;;;:::i;:::-;;;;;;;;23172:10;23184:5;23190:1;23184:8;;;;;;;;:::i;:::-;;;;;;;;23194;23135:17;:68::i;:::-;23214:76;23249:5;23256:4;:13;;;23271:4;:14;;;23287:2;23214:34;:76::i;:::-;23341:13;23313:11;:21;;;23335:2;23313:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;23301:53;;23383:9;23368:12;:24;23364:93;;;23433:12;23447:9;23401:56;;;;;;;;;;;;:::i;:::-;;;;;;;;23364:93;22910:554;;;2324:1:::1;22625:839:::0;;;;;;;;:::o;26560:436::-;2099:9;2083:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2069:49;;:10;:49;;;2065:89;;2127:27;;;;;;;;;;;;;;2065:89;26692:1:::1;26666:28;;26674:5;26666:28;;::::0;26662:328:::1;;26729:17;26719:6;:27;:60;;26773:6;26719:60;;;26749:21;26719:60;26710:69;;26794:31;26814:2;26818:6;26794:19;:31::i;:::-;26662:328;;;26875:17;26865:6;:27;:69;;26928:6;26865:69;;;26895:5;:15;;;26919:4;26895:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26865:69;26856:78;;26949:30;26968:2;26972:6;26949:5;:18;;;;:30;;;;;:::i;:::-;26662:328;26560:436:::0;;;:::o;6796:235::-;6932:12;6967:9;:22;;;6990:6;6998;7006:8;7016:7;6967:57;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6960:64;;6796:235;;;;;;:::o;3967:104::-;4021:16;4056:8;4049:15;;3967:104;:::o;3098:45::-;4158:30:1;4191:26;:24;:26::i;:::-;4158:59;;4279:19;4302:1;:15;;;;;;;;;;;;4301:16;4279:38;;4327:18;4348:1;:14;;;;;;;;;;;;4327:35;;4706:17;4741:1;4726:11;:16;;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4805:1;4790:11;:16;;;:50;;;;;4839:1;4818:4;4810:25;;;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4968:1;4951;:14;;;:18;;;;;;;;;;;;;;;;;;4983:14;4979:67;;;5031:4;5013:1;:15;;;:22;;;;;;;;;;;;;;;;;;4979:67;5070:14;5066:101;;;5118:5;5100:1;:15;;;:23;;;;;;;;;;;;;;;;;;5142:14;5154:1;5142:14;;;;;;:::i;:::-;;;;;;;;5066:101;4092:1081;;;;;3098:45:5:o;13396:1041::-;13706:19;13727:20;13687:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;13759:14:::1;13784:55;13806:5;13820:8;13831:7;13784:55;;:21;:55::i;:::-;13759:81;;13865:19;13907:6;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13887:38;;13894:8;13887:38;;;13865:60;;13945:14;13940:123;;14016:15;14033:14;13979:69;;;;;;;;13940:123;14078:15;14095::::0;14130:86:::1;14147:6;14155:14;14171:15;14188:3;14193:7;14210:4;14130:16;:86::i;:::-;14077:139;;;;14261:14;:56;;14300:7;14309;14261:56;;;14279:7;14288;14261:56;14231:86;;;;;;;;13851:477;;;14338:37;14352:5;14359:2;14363:11;14338:13;:37::i;:::-;14385:45;14413:2;14417:12;14385:27;:45::i;:::-;13749:688;13396:1041:::0;;;;;;;;;;;;:::o;3494:109::-;3548:20;3587:9;3580:16;;3494:109;:::o;9334:1736::-;9492:20;9526;9560:19;9593;9626:27;9667:32;9724:15;9763:136;9802:19;:26;;;;;;;;;;:::i;:::-;9830:19;:26;;;;;;;;;;:::i;:::-;9858:19;:27;;;9763:21;:136::i;:::-;9724:185;;9953:7;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9923:49;;:19;:26;;;;;;;;;;:::i;:::-;:49;;;9919:89;;9981:27;;;;;;;;;;;;;;9919:89;10053:8;10023:38;;:19;:26;;;;;;;;;;:::i;:::-;:38;;;:82;;;;;10096:9;10065:19;:27;;;:40;10023:82;10019:893;;;10121:104;10139:19;:26;;;;;;;;;;:::i;:::-;10167:10;10187:7;10197:19;:27;;;10121:17;:104::i;:::-;10239:55;10274:7;10284:9;10239:26;:55::i;:::-;10019:893;;;10345:8;10315:38;;:19;:26;;;;;;;;;;:::i;:::-;:38;;;:82;;;;;10388:9;10357:19;:27;;;:40;10315:82;10311:601;;;10413:104;10431:19;:26;;;;;;;;;;:::i;:::-;10459:10;10479:7;10489:19;:27;;;10413:17;:104::i;:::-;10531:55;10566:7;10576:9;10531:26;:55::i;:::-;10311:601;;;10690:19;:26;;;;;;;;;;:::i;:::-;10743:19;:26;;;;;;;;;;:::i;:::-;10788:19;:27;;;10833:19;:27;;;10878:9;10624:277;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;10311:601;10019:893;11020:43;11034:19;11055:7;11020:13;:43::i;:::-;10922:141;;;;;;;;;;;;;;;;;;;;;;;;9714:1356;9334:1736;;;;;;;:::o;18255:902::-;18492:26;18448:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;18477:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;18530:22:::2;18555:59;18565:4;:17;;;18584:4;:13;;;18599:4;:14;;;18555:9;:59::i;:::-;18530:84;;18651:62;18665:4;:13;;;18680:5;18687:4;:14;;;18703:9;18651:13;:62::i;:::-;18639:74;;18747:11;18732:9;18742:1;18732:12;;;;;;;;:::i;:::-;;;;;;;;:26;18728:95;;;18797:11;18810:9;18820:1;18810:12;;;;;;;;:::i;:::-;;;;;;;;18767:56;;;;;;;;;;;;:::i;:::-;;;;;;;;18728:95;18838:72;18856:4;:14;;;18871:1;18856:17;;;;;;;;:::i;:::-;;;;;;;;18875:10;18887:5;18893:1;18887:8;;;;;;;;:::i;:::-;;;;;;;;18897:9;18907:1;18897:12;;;;;;;;:::i;:::-;;;;;;;;18838:17;:72::i;:::-;18925:22;18950:78;18976:5;18983:4;:13;;;18998:4;:14;;;19014:9;19025:2;18950:25;:78::i;:::-;18925:103;;19064:9;19047:14;:26;19043:97;;;19114:9;19125:14;19082:58;;;;;;;;;;;;:::i;:::-;;;;;;;;19043:97;18625:526;18520:637;2324:1:::1;18255:902:::0;;;;;;;;:::o;5379:272::-;5508:16;5526:21;5549:11;5609:4;:14;;;5624:9;5635:8;5609:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5576:68;;;;;;;;;;;;5379:272;;;;;;;:::o;15872:915::-;16123:17;16079:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;16108:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;16207:8:::2;16156:60;;:4;:14;;;16171:4;:17;;;:24;16156:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;16152:175;;16274:4;:14;;;16289:4;:17;;;:24;16274:40;;;;;;;;:::i;:::-;;;;;;;;16239:77;;;;;;;;;;;:::i;:::-;;;;;;;;16152:175;16337:22;16362:59;16372:4;:17;;;16391:4;:13;;;16406:4;:14;;;16362:9;:59::i;:::-;16337:84;;16432:68;16450:4;:14;;;16465:1;16450:17;;;;;;;;:::i;:::-;;;;;;;;16469:10;16481:5;16487:1;16481:8;;;;;;;;:::i;:::-;;;;;;;;16491;16432:17;:68::i;:::-;16523:88;16549:8;16559:5;16566:4;:13;;;16581:4;:14;;;16605:4;16523:25;:88::i;:::-;16511:100;;16647:9;16626:18;:30;16622:105;;;16697:18;16717:9;16665:62;;;;;;;;;;;;:::i;:::-;;;;;;;;16622:105;16738:42;16766:2;16770:9;16738:27;:42::i;:::-;16142:645;2324:1:::1;15872:915:::0;;;;;;;;:::o;6115:274::-;6246:20;6268:17;6287:11;6347:4;:15;;;6363:8;6373;6347:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6314:68;;;;;;;;;;;;6115:274;;;;;;;:::o;7659:1035::-;7795:20;7829;7863:19;7896;7929:27;7970:32;8027:14;8065:136;8104:19;:26;;;;;;;;;;:::i;:::-;8132:19;:26;;;;;;;;;;:::i;:::-;8160:19;:27;;;8065:21;:136::i;:::-;8027:184;;8255:6;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8225:48;;:19;:26;;;;;;;;;;:::i;:::-;:48;;;8221:88;;8282:27;;;;;;;;;;;;;;8221:88;8320:103;8338:19;:26;;;;;;;;;;:::i;:::-;8366:10;8386:6;8395:19;:27;;;8320:17;:103::i;:::-;8433;8451:19;:26;;;;;;;;;;:::i;:::-;8479:10;8499:6;8508:19;:27;;;8433:17;:103::i;:::-;8645:42;8659:19;8680:6;8645:13;:42::i;:::-;8547:140;;;;;;;;;;;;;;;;;;;;;;;;8017:677;7659:1035;;;;;;;:::o;17130:731::-;17359:17;17299:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;17336:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;17424:8:::2;17396:37;;:4;:14;;;17411:1;17396:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;17392:104;;17477:4;:14;;;17492:1;17477:17;;;;;;;;:::i;:::-;;;;;;;;17442:54;;;;;;;;;;;:::i;:::-;;;;;;;;17392:104;17507:22;17532:59;17542:4;:17;;;17561:4;:13;;;17576:4;:14;;;17532:9;:59::i;:::-;17507:84;;17602:47;17629:5;17635:1;17629:8;;;;;;;;:::i;:::-;;;;;;;;17639:9;17602:26;:47::i;:::-;17672:78;17698:9;17709:5;17716:4;:13;;;17731:4;:14;;;17747:2;17672:25;:78::i;:::-;17660:90;;17780:9;17765:12;:24;17761:93;;;17830:12;17844:9;17798:56;;;;;;;;;;;;:::i;:::-;;;;;;;;17761:93;17382:479;2324:1:::1;17130:731:::0;;;;;;;:::o;3731:120::-;3787:28;3834:10;3827:17;;3731:120;:::o;11788:741::-;12099:15;12116;12080:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;12143:15:::1;12169:46;12191:6;12199;12207:7;12169:46;;:21;:46::i;:::-;12143:73;;12226:17;12256:7;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12246:29;;:6;:29;;;;12226:49;;12290:12;12286:69;;;12332:10;12344;12304:51;;;;;;;;12286:69;12387:67;12404:7;12413:10;12425;12437:3;12442:7;12451:2;12387:16;:67::i;:::-;12366:88;;;;;;;;12469:12;12465:57;;;12505:7;12514;12483:39;;;;;;;;12465:57;12133:396;;11788:741:::0;;;;;;;;;;;;;:::o;4763:137::-;4844:7;4870:4;:19;;;4890:2;4870:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4863:30;;4763:137;;;;:::o;25354:915::-;25602:17;25558:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;25587:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;25663:8:::2;25635:37;;:4;:14;;;25650:1;25635:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;25631:104;;25716:4;:14;;;25731:1;25716:17;;;;;;;;:::i;:::-;;;;;;;;25681:54;;;;;;;;;;;:::i;:::-;;;;;;;;25631:104;25746:22;25771:59;25781:4;:17;;;25800:4;:13;;;25815:4;:14;;;25771:9;:59::i;:::-;25746:84;;25841:18;25862:4;:14;;;25877:5;:12;25862:28;;;;;;;;:::i;:::-;;;;;;;;25841:49;;25901:21;25925:11;:21;;;25947:2;25925:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25901:49;;25961:47;25988:5;25994:1;25988:8;;;;;;;;:::i;:::-;;;;;;;;25998:9;25961:26;:47::i;:::-;26019:76;26054:5;26061:4;:13;;;26076:4;:14;;;26092:2;26019:34;:76::i;:::-;26146:13;26118:11;:21;;;26140:2;26118:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;26106:53;;26188:9;26173:12;:24;26169:93;;;26238:12;26252:9;26206:56;;;;;;;;;;;;:::i;:::-;;;;;;;;26169:93;25621:648;;;2324:1:::1;25354:915:::0;;;;;;;:::o;27343:242::-;2099:9;2083:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2069:49;;:10;:49;;;2065:89;;2127:27;;;;;;;;;;;;;;2065:89;27520:7:::1;:25;;;27554:4;27561:2;27565:3;;27570:7;;27520:58;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27343:242:::0;;;;;;:::o;4413:143::-;4498:6;4523:4;:19;;;4543:5;4523:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4516:33;;4413:143;;;;:::o;40831:565::-;40981:22;41041:12;:19;41027:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41019:42;;41072:12;41094:16;41113:9;41123:1;41113:12;;;;;;;;:::i;:::-;;;;;;;;41094:31;;41164:9;41159:221;41179:5;:12;41175:1;:16;41159:221;;;41224:9;41216:17;;41263:9;41277:1;41273;:5;41263:16;;;;;;;;:::i;:::-;;;;;;;;41251:28;;41309:56;41318:5;41325:9;41336:12;41349:1;41336:15;;;;;;;;:::i;:::-;;;;;;;;41353:8;41362:1;41353:11;;;;;;;;:::i;:::-;;;;;;;;41309:8;:56::i;:::-;41298:5;41304:1;41298:8;;;;;;;;:::i;:::-;;;;;;;:67;;;;;;;;;;;41193:3;;;;;41159:221;;;;41009:387;;40831:565;;;;;:::o;42029:182::-;42144:1;42134:6;:11;42130:24;42147:7;42130:24;42164:40;42187:4;42193:2;42197:6;42164:5;:22;;;;:40;;;;;;:::i;:::-;42029:182;;;;;:::o;37395:1522::-;37585:12;37607:15;37632:17;37659:12;37682:16;37701:9;37711:1;37701:12;;;;;;;;:::i;:::-;;;;;;;;37682:31;;37753:9;37748:1153;37768:5;:12;37764:1;:16;37748:1153;;;37812:5;37818:1;37812:8;;;;;;;;:::i;:::-;;;;;;;;37805:15;;37848:8;37857:1;37848:11;;;;;;;;:::i;:::-;;;;;;;;37838:21;;37886:9;37878:17;;37925:9;37939:1;37935;:5;37925:16;;;;;;;;:::i;:::-;;;;;;;;37913:28;;37981:5;:12;37976:1;37972;:5;:21;:41;;38001:5;38011:1;38007;:5;38001:12;;;;;;;;:::i;:::-;;;;;;;;37972:41;;;37996:2;37972:41;37960:53;;38047:10;38036:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;38032:855;;38082:17;38101;38139:4;38123:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38081:77;;;;;;;;;38192:9;38184:17;;:5;:17;;;38180:573;;;38229:16;38272:9;38248:5;:15;;;38264:4;38248:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;38229:52;;38307:17;38327:43;38349:9;38360;38327:8;:21;;:43;;;;;:::i;:::-;38307:63;;38413:4;38397:26;;;38424:1;38427:9;38438;38397:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38203:272;;38180:573;;;38507:16;38550:9;38526:5;:15;;;38542:4;38526:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;38507:52;;38585:17;38605:43;38627:9;38638;38605:8;:21;;:43;;;;;:::i;:::-;38585:63;;38691:4;38675:26;;;38702:9;38713:1;38716:9;38675:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38481:272;;38180:573;38059:712;;38032:855;;;38807:4;38799:18;;;38839:4;38831:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38818:38;;:9;:38;;;38858:9;38799:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38032:855;37782:3;;;;;37748:1153;;;;37575:1342;;;;;37395:1522;;;;:::o;43207:190::-;43304:1;43294:6;:11;43290:24;43307:7;43290:24;43324:8;:17;;;43342:6;43324:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43359:31;43379:2;43383:6;43359:19;:31::i;:::-;43207:190;;;:::o;30849:1174::-;31029:26;31093:9;:16;31079:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31067:43;;31216:9;31190;31200:5;:12;31190:23;;;;;;;;:::i;:::-;;;;;;;:35;;;;;31241:9;31253:5;:12;31241:24;;31236:781;31272:1;31267;:6;31236:781;;31294:12;31309:9;31323:1;31319;:5;;;;:::i;:::-;31309:16;;;;;;;;:::i;:::-;;;;;;;;31294:31;;31339:15;31357:8;31370:1;31366;:5;;;;:::i;:::-;31357:15;;;;;;;;:::i;:::-;;;;;;;;31339:33;;31386:12;31401:5;31411:1;31407;:5;;;;:::i;:::-;31401:12;;;;;;;;:::i;:::-;;;;;;;;31386:27;;31443:10;31432:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;31428:579;;31474:17;31493:18;31532:4;31516:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31473:78;;;;;;;;;31581:9;31591:1;31581:12;;;;;;;;:::i;:::-;;;;;;;;31573:20;;:5;:20;;;31569:116;;;31644:10;31656:9;31617:49;;;;;;;;31569:116;31703:18;31724:9;31734:1;31724:12;;;;;;;;:::i;:::-;;;;;;;;31703:33;;31781:45;31804:9;31815:10;31781;:22;;:45;;;;;:::i;:::-;31754:73;;:9;31768:1;31764;:5;;;;:::i;:::-;31754:16;;;;;;;;:::i;:::-;;;;;;;:73;;;;;31455:387;;;31428:579;;;31909:83;31927:4;31942:9;31952:1;31942:12;;;;;;;;:::i;:::-;;;;;;;;31986:5;31957:34;;31965:4;31957:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;31909:9;:83::i;:::-;31866:126;;;;;;;;31867:9;31881:1;31877;:5;;;;:::i;:::-;31867:16;;;;;;;;:::i;:::-;;;;;;;31866:126;;;;;31428:579;31280:737;;;31275:3;;;;;:::i;:::-;;;;31236:781;;;;30849:1174;;;;;;:::o;42803:207::-;42899:1;42889:6;:11;42885:24;42902:7;42885:24;42919:8;:16;;;42943:6;42919:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42962:41;42992:2;42996:6;42969:8;42962:29;;;;:41;;;;;:::i;:::-;42803:207;;;:::o;35665:1399::-;35881:17;35910:12;35932:17;35959:12;35981:15;36007:16;36026:9;36036:1;36026:12;;;;;;;;:::i;:::-;;;;;;;;36007:31;;36078:9;36073:975;36093:5;:12;36089:1;:16;36073:975;;;36137:5;36143:1;36137:8;;;;;;;;:::i;:::-;;;;;;;;36130:15;;36173:8;36182:1;36173:11;;;;;;;;:::i;:::-;;;;;;;;36163:21;;36211:9;36203:17;;36250:9;36264:1;36260;:5;36250:16;;;;;;;;:::i;:::-;;;;;;;;36238:28;;36306:5;:12;36301:1;36297;:5;:21;:41;;36326:5;36336:1;36332;:5;36326:12;;;;;;;;:::i;:::-;;;;;;;;36297:41;;;36321:2;36297:41;36285:53;;36372:10;36361:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;36357:677;;36418:9;36432:1;36428;:5;36418:16;;;;;;;;:::i;:::-;;;;;;;;36406:28;;36468:9;36460:17;;:5;:17;;;36456:237;;;36521:4;36505:26;;;36532:1;36535:9;36546;36505:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36456:237;;;36631:4;36615:26;;;36642:9;36653:1;36656:9;36615:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36456:237;36357:677;;;36739:13;36776:4;36768:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36755:38;;:9;:38;;;36739:54;;36817:18;36837;36859:48;36867:4;36859:18;;;36878:8;36888:9;36859:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;:48::i;:::-;36816:91;;;;;;;;36934:8;36930:85;;;36956:10;36944:22;;36930:85;;;37005:10;36993:22;;36930:85;36717:317;;;36357:677;36107:3;;;;;36073:975;;;;35900:1164;;;;;35665:1399;;;;;;;:::o;42377:231::-;42466:1;42456:6;:11;42452:24;42469:7;42452:24;42487:12;42504:2;:7;;42519:6;42504:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42486:44;;;42545:7;42540:61;;42590:2;42594:6;42561:40;;;;;;;;;;;;:::i;:::-;;;;;;;;42540:61;42442:166;42377:231;;;:::o;33628:1627::-;33834:17;33863:12;33885:15;33910:17;33937:12;33960:16;33979:9;33989:1;33979:12;;;;;;;;:::i;:::-;;;;;;;;33960:31;;34013:8;34001:20;;34061:9;34056:1183;34076:5;:12;34072:1;:16;34056:1183;;;34120:5;34126:1;34120:8;;;;;;;;:::i;:::-;;;;;;;;34113:15;;34156:8;34165:1;34156:11;;;;;;;;:::i;:::-;;;;;;;;34146:21;;34194:9;34186:17;;34233:9;34247:1;34243;:5;34233:16;;;;;;;;:::i;:::-;;;;;;;;34221:28;;34289:5;:12;34284:1;34280;:5;:21;:41;;34309:5;34319:1;34315;:5;34309:12;;;;;;;;:::i;:::-;;;;;;;;34280:41;;;34304:2;34280:41;34268:53;;34355:10;34344:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;34340:885;;34390:16;34408;34445:4;34429:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34389:75;;;;;;;;;34499:9;34491:17;;:5;:17;;;34487:397;;;34548:42;34571:8;34581;34548:9;:22;;:42;;;;;:::i;:::-;34536:54;;34632:4;34616:26;;;34643:1;34646:9;34657;34616:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34487:397;;;34738:42;34761:8;34771;34738:9;:22;;:42;;;;;:::i;:::-;34726:54;;34822:4;34806:26;;;34833:9;34844:1;34847:9;34806:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34487:397;34367:535;;34340:885;;;34930:13;34967:4;34959:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34946:38;;:9;:38;;;34930:54;;35008:18;35028;35050:48;35058:4;35050:18;;;35069:8;35079:9;35050:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;:48::i;:::-;35007:91;;;;;;;;35125:8;35121:85;;;35147:10;35135:22;;35121:85;;;35196:10;35184:22;;35121:85;34908:317;;;34340:885;34090:3;;;;;34056:1183;;;;33853:1402;;;;;33628:1627;;;;;;;:::o;1419:220:26:-;1509:17;1552:23;;;1577:9;1588:6;1529:66;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:86;;1606:26;1620:5;1627:4;1606:13;:26::i;:::-;1499:140;1419:220;;;:::o;8737:170:1:-;8795:30;8870:21;8860:31;;8737:170;:::o;39247:376:5:-;39371:14;39418:9;:30;;;39449:6;39457;39465:7;39418:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;39401:80;;39514:1;39496:20;;:6;:20;;;39492:125;;39572:6;39589;39598:7;39539:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;39492:125;39247:376;;;;;:::o;32548:670::-;32759:15;32776;32804:30;32838:4;:9;;;32848:10;32860:2;32864:3;32869:7;32838:39;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32803:74;;32893:9;32888:160;32908:13;:20;32904:1;:24;32888:160;;;32960:26;:13;32974:1;32960:16;;;;;;;;:::i;:::-;;;;;;;;:24;:26::i;:::-;32949:37;;;;;;;:::i;:::-;;;33011:26;:13;33025:1;33011:16;;;;;;;;:::i;:::-;;;;;;;;:24;:26::i;:::-;33000:37;;;;;;;:::i;:::-;;;32930:3;;;;:::i;:::-;;;32888:160;;;;33072:10;33062:7;:20;:44;;;;33096:10;33086:7;:20;33062:44;33058:154;;;33160:10;33172:7;33181:10;33193:7;33129:72;;;;;;;;;;;;;;:::i;:::-;;;;;;;;33058:154;32793:425;32548:670;;;;;;;;;:::o;41607:154::-;41704:1;41694:6;:11;41690:24;41707:7;41690:24;41724:30;41743:2;41747:6;41724:5;:18;;;;:30;;;;;:::i;:::-;41607:154;;;;:::o;28066:2489::-;28212:20;28246;28280:19;28313;28346:27;28387:32;28168:3;:12;;;2244:8;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;28495:3:::1;:17;;;;;;;;:::i;:::-;:24;;28472:3;:12;;;;;;;;:::i;:::-;:19;;:47;;:98;;;;28546:3;:17;;;;;;;;:::i;:::-;:24;;28523:3;:12;;;;;;;;:::i;:::-;:19;;:47;;28472:98;28468:171;;;28597:27;;;;;;;;;;;;;;28468:171;28679:16;28657:38:::0;::::1;:3;:19;;;:38;:75;;;;28716:16;28699:33:::0;::::1;:3;:14;;;:33;28657:75;28653:186;;;28788:3;:19;;;28809:3;:14;;;28759:65;;;;;;;;;;;;:::i;:::-;;;;;;;;28653:186;28853:33;28903:3;:12;;;;;;;;:::i;:::-;:19;;28889:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28853:70;;28964:3;:12;;;;;;;;:::i;:::-;:19;;28950:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28937:47;;29016:17;29036:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29016:38;;;;29136:9;29119:3;:14;;;29097:3;:19;;;:36;:48;:100;;;;29178:3;:19;;;29161:3;:14;;;29149:9;:26;:48;29097:100;29072:266;;;29272:3;:19;;;29293:3;:14;;;29309:9;29245:74;;;;;;;;;;;;;:::i;:::-;;;;;;;;29072:266;29361:9;29356:501;29376:16;:23;29372:1;:27;29356:501;;;29428:10;29461:3;:12;;;;;;;;:::i;:::-;29474:1;29461:15;;;;;;;:::i;:::-;;;;;;;;29448:9;29441:35;29428:48;;29509:1;29503:3;:7;:42;;;;29529:16;29514:31:::0;::::1;29522:3;29514:31;29503:42;29499:81;;;29576:3;29554:26;;;;;;;;;;;:::i;:::-;;;;;;;;29499:81;29626:3;29602:10;29613:1;29602:13;;;;;;;;:::i;:::-;;;;;;;:28;;;::::0;::::1;29674:164;29743:3;:17;;;;;;;;:::i;:::-;29761:1;29743:20;;;;;;;:::i;:::-;;;;;;;;29773:3;:17;;;;;;;;:::i;:::-;29791:1;29773:20;;;;;;;:::i;:::-;;;;;;;;29811:3;29674:36;:164::i;:::-;29652:16;29669:1;29652:19;;;;;;;;:::i;:::-;;;;;;;:186;;;::::0;::::1;29406:451;29401:3;;;;;29356:501;;;;28998:873;29885:23;29922:19:::0;30005:4:::1;:9;;;30015:3;:6;;;;;;;;;;:::i;:::-;30023:16;30041:3;:12;;;;;;;;;;:::i;:::-;30005:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29955:99;;;;;;;;;;;;30069:20;30092:32;30112:11;30092:15;:19;;:32;;;;:::i;:::-;30069:55;;30154:22;:12;:20;:22::i;:::-;30139:37;;;;30205:22;:12;:20;:22::i;:::-;30190:37;;;;30261:3;:14;;;30246:12;:29;:62;;;;30294:3;:14;;;30279:12;:29;30246:62;30242:198;;;30366:3;:14;;;30382:12;30396:3;:14;;;30412:12;30335:90;;;;;;;;;;;;;;:::i;:::-;;;;;;;;30242:198;30468:21;:11;:19;:21::i;:::-;30454:35;;;;30517:21;:11;:19;:21::i;:::-;30503:35;;;;28444:2105;;;;28066:2489:::0;;;;;;;;;:::o;40051:478::-;40179:12;40222:10;40211:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;40207:316;;40255:10;:18;;;40282:6;40299;40255:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40248:59;;40341:1;40325:18;;:4;:18;;;40321:98;;40385:6;40402;40411:7;40352:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;40321:98;40207:316;;;40465:46;40487:6;40495;40503:7;40465:21;:46::i;:::-;40450:62;;40207:316;40051:478;;;;;;:::o;944:250:26:-;1053:17;1096:27;;;1125:5;1132:9;1143:6;1073:77;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1053:97;;1161:26;1175:5;1182:4;1161:13;:26::i;:::-;1043:151;944:250;;;;:::o;1404:544:25:-;1530:17;1579:1;1567:8;:13;1563:63;;1589:37;;;;;;;;;;;;;;1563:63;1653:1;1640:9;:14;:33;;;;1672:1;1658:10;:15;1640:33;1636:86;;;1682:40;;;;;;;;;;;;;;1636:86;1732:23;1769:3;1758:8;:14;;;;:::i;:::-;1732:40;;1782:17;1820:10;1802:15;:28;;;;:::i;:::-;1782:48;;1840:19;1881:15;1874:4;1862:9;:16;;;;:::i;:::-;:34;;;;:::i;:::-;1840:56;;1930:11;1918:9;:23;;;;:::i;:::-;1906:35;;1553:395;;;1404:544;;;;;:::o;2066:493::-;2192:16;2241:1;2228:9;:14;2224:64;;2251:37;;;;;;;;;;;;;;2224:64;2315:1;2302:9;:14;:33;;;;2334:1;2320:10;:15;2302:33;2298:86;;;2344:40;;;;;;;;;;;;;;2298:86;2394:17;2438:4;2426:9;2414;:21;;;;:::i;:::-;:28;;;;:::i;:::-;2394:48;;2452:19;2501:3;2488:9;2475:10;:22;;;;:::i;:::-;2474:30;;;;:::i;:::-;2452:52;;2551:1;2537:11;2525:9;:23;;;;:::i;:::-;:27;;;;:::i;:::-;2514:38;;2214:345;;2066:493;;;;;:::o;2521:178:30:-;2571:10;2583;2641:8;2638:1;2634:16;2628:22;;2681:1;2673:6;2669:14;2663:20;;2521:178;;;:::o;1645:757:26:-;1720:12;1779:1;1773:4;1766:15;1864:4;1858;1851;1845:11;1838:4;1832;1828:15;1825:1;1818:5;1811;1806:63;1795:74;;1890:7;1915:1;1910:194;;;;2150:16;2188:1;2183:56;;;;2306:1;2299:4;2293:11;2290:18;2281:7;2277:32;2266:43;;2143:168;;2183:56;2229:5;2217:18;2210:26;2203:34;2192:45;;2143:168;;1883:442;;1910:194;1938:16;1935:155;;;2004:16;1998:4;1992;1977:44;2055:16;2049:4;2042:30;1935:155;1883:442;;2350:7;2345:50;;2366:29;;;;;;;;;;;;;;2345:50;1710:692;1645:757;;:::o;2914:132:30:-;2965:9;3021:8;3018:1;3014:16;3009:21;;2914:132;;;:::o;3263:130::-;3314:9;3375:1;3367:6;3363:14;3358:19;;3263:130;;;:::o;1186:392:29:-;1310:14;1349:69;1360:13;1349:69;;647:18:28;703:2:29;1349:6;:10;;:69;;;;;;:::i;:::-;1340:78;;1437:69;1448:13;1437:69;;647:18:28;646:2:29;1437:6;:10;;:69;;;;;;:::i;:::-;1428:78;;1525:46;1536:2;1525:46;;535:8:28;590:1:29;1525:6;:10;;:46;;;;;;:::i;:::-;1516:55;;1186:392;;;;;:::o;5512:263:30:-;5570:9;5626:1;5623;5619:9;5614:14;;5656:1;5652;:5;:50;;;;5699:1;5691:10;;5661:41;;5677:1;5669:10;;5661:41;;;5652:50;5648:121;;;5725:33;;;;;;;;;;;;;;5648:121;5512:263;;;;:::o;1099:317:28:-;1221:18;1321:4;1313:6;1309:17;1305:22;1296:7;1292:36;1278:50;;1393:4;1386:5;1382:16;1374:6;1370:29;1358:10;1355:45;1341:59;;1099:317;;;;;;:::o;7:75:34:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:117::-;1638:1;1635;1628:12;1652:117;1761:1;1758;1751:12;1775:311;1852:4;1942:18;1934:6;1931:30;1928:56;;;1964:18;;:::i;:::-;1928:56;2014:4;2006:6;2002:17;1994:25;;2074:4;2068;2064:15;2056:23;;1775:311;;;:::o;2092:117::-;2201:1;2198;2191:12;2232:710;2328:5;2353:81;2369:64;2426:6;2369:64;:::i;:::-;2353:81;:::i;:::-;2344:90;;2454:5;2483:6;2476:5;2469:21;2517:4;2510:5;2506:16;2499:23;;2570:4;2562:6;2558:17;2550:6;2546:30;2599:3;2591:6;2588:15;2585:122;;;2618:79;;:::i;:::-;2585:122;2733:6;2716:220;2750:6;2745:3;2742:15;2716:220;;;2825:3;2854:37;2887:3;2875:10;2854:37;:::i;:::-;2849:3;2842:50;2921:4;2916:3;2912:14;2905:21;;2792:144;2776:4;2771:3;2767:14;2760:21;;2716:220;;;2720:21;2334:608;;2232:710;;;;;:::o;2965:370::-;3036:5;3085:3;3078:4;3070:6;3066:17;3062:27;3052:122;;3093:79;;:::i;:::-;3052:122;3210:6;3197:20;3235:94;3325:3;3317:6;3310:4;3302:6;3298:17;3235:94;:::i;:::-;3226:103;;3042:293;2965:370;;;;:::o;3341:323::-;3430:4;3520:18;3512:6;3509:30;3506:56;;;3542:18;;:::i;:::-;3506:56;3592:4;3584:6;3580:17;3572:25;;3652:4;3646;3642:15;3634:23;;3341:323;;;:::o;3670:111::-;3755:1;3748:5;3745:12;3735:40;;3771:1;3768;3761:12;3735:40;3670:111;:::o;3787:163::-;3845:5;3883:6;3870:20;3861:29;;3899:45;3938:5;3899:45;:::i;:::-;3787:163;;;;:::o;3988:746::-;4096:5;4121:93;4137:76;4206:6;4137:76;:::i;:::-;4121:93;:::i;:::-;4112:102;;4234:5;4263:6;4256:5;4249:21;4297:4;4290:5;4286:16;4279:23;;4350:4;4342:6;4338:17;4330:6;4326:30;4379:3;4371:6;4368:15;4365:122;;;4398:79;;:::i;:::-;4365:122;4513:6;4496:232;4530:6;4525:3;4522:15;4496:232;;;4605:3;4634:49;4679:3;4667:10;4634:49;:::i;:::-;4629:3;4622:62;4713:4;4708:3;4704:14;4697:21;;4572:156;4556:4;4551:3;4547:14;4540:21;;4496:232;;;4500:21;4102:632;;3988:746;;;;;:::o;4772:394::-;4855:5;4904:3;4897:4;4889:6;4885:17;4881:27;4871:122;;4912:79;;:::i;:::-;4871:122;5029:6;5016:20;5054:106;5156:3;5148:6;5141:4;5133:6;5129:17;5054:106;:::i;:::-;5045:115;;4861:305;4772:394;;;;:::o;5172:325::-;5263:4;5353:18;5345:6;5342:30;5339:56;;;5375:18;;:::i;:::-;5339:56;5425:4;5417:6;5413:17;5405:25;;5485:4;5479;5475:15;5467:23;;5172:325;;;:::o;5503:126::-;5540:7;5580:42;5573:5;5569:54;5558:65;;5503:126;;;:::o;5635:96::-;5672:7;5701:24;5719:5;5701:24;:::i;:::-;5690:35;;5635:96;;;:::o;5737:110::-;5788:7;5817:24;5835:5;5817:24;:::i;:::-;5806:35;;5737:110;;;:::o;5853:150::-;5940:38;5972:5;5940:38;:::i;:::-;5933:5;5930:49;5920:77;;5993:1;5990;5983:12;5920:77;5853:150;:::o;6009:167::-;6069:5;6107:6;6094:20;6085:29;;6123:47;6164:5;6123:47;:::i;:::-;6009:167;;;;:::o;6207:752::-;6317:5;6342:95;6358:78;6429:6;6358:78;:::i;:::-;6342:95;:::i;:::-;6333:104;;6457:5;6486:6;6479:5;6472:21;6520:4;6513:5;6509:16;6502:23;;6573:4;6565:6;6561:17;6553:6;6549:30;6602:3;6594:6;6591:15;6588:122;;;6621:79;;:::i;:::-;6588:122;6736:6;6719:234;6753:6;6748:3;6745:15;6719:234;;;6828:3;6857:51;6904:3;6892:10;6857:51;:::i;:::-;6852:3;6845:64;6938:4;6933:3;6929:14;6922:21;;6795:158;6779:4;6774:3;6770:14;6763:21;;6719:234;;;6723:21;6323:636;;6207:752;;;;;:::o;6990:398::-;7075:5;7124:3;7117:4;7109:6;7105:17;7101:27;7091:122;;7132:79;;:::i;:::-;7091:122;7249:6;7236:20;7274:108;7378:3;7370:6;7363:4;7355:6;7351:17;7274:108;:::i;:::-;7265:117;;7081:307;6990:398;;;;:::o;7423:1330::-;7494:5;7538:4;7526:9;7521:3;7517:19;7513:30;7510:117;;;7546:79;;:::i;:::-;7510:117;7645:21;7661:4;7645:21;:::i;:::-;7636:30;;7761:1;7750:9;7746:17;7733:31;7791:18;7783:6;7780:30;7777:117;;;7813:79;;:::i;:::-;7777:117;7933:74;8003:3;7994:6;7983:9;7979:22;7933:74;:::i;:::-;7926:4;7919:5;7915:16;7908:100;7676:343;8110:2;8099:9;8095:18;8082:32;8141:18;8133:6;8130:30;8127:117;;;8163:79;;:::i;:::-;8127:117;8283:86;8365:3;8356:6;8345:9;8341:22;8283:86;:::i;:::-;8276:4;8269:5;8265:16;8258:112;8029:352;8473:2;8462:9;8458:18;8445:32;8504:18;8496:6;8493:30;8490:117;;;8526:79;;:::i;:::-;8490:117;8646:88;8730:3;8721:6;8710:9;8706:22;8646:88;:::i;:::-;8639:4;8632:5;8628:16;8621:114;8391:355;7423:1330;;;;:::o;8759:104::-;8804:7;8833:24;8851:5;8833:24;:::i;:::-;8822:35;;8759:104;;;:::o;8869:138::-;8950:32;8976:5;8950:32;:::i;:::-;8943:5;8940:43;8930:71;;8997:1;8994;8987:12;8930:71;8869:138;:::o;9013:155::-;9067:5;9105:6;9092:20;9083:29;;9121:41;9156:5;9121:41;:::i;:::-;9013:155;;;;:::o;9174:1131::-;9299:6;9307;9315;9323;9331;9380:3;9368:9;9359:7;9355:23;9351:33;9348:120;;;9387:79;;:::i;:::-;9348:120;9507:1;9532:53;9577:7;9568:6;9557:9;9553:22;9532:53;:::i;:::-;9522:63;;9478:117;9634:2;9660:53;9705:7;9696:6;9685:9;9681:22;9660:53;:::i;:::-;9650:63;;9605:118;9790:2;9779:9;9775:18;9762:32;9821:18;9813:6;9810:30;9807:117;;;9843:79;;:::i;:::-;9807:117;9948:75;10015:7;10006:6;9995:9;9991:22;9948:75;:::i;:::-;9938:85;;9733:300;10072:2;10098:61;10151:7;10142:6;10131:9;10127:22;10098:61;:::i;:::-;10088:71;;10043:126;10208:3;10235:53;10280:7;10271:6;10260:9;10256:22;10235:53;:::i;:::-;10225:63;;10179:119;9174:1131;;;;;;;;:::o;10311:118::-;10398:24;10416:5;10398:24;:::i;:::-;10393:3;10386:37;10311:118;;:::o;10435:222::-;10528:4;10566:2;10555:9;10551:18;10543:26;;10579:71;10647:1;10636:9;10632:17;10623:6;10579:71;:::i;:::-;10435:222;;;;:::o;10663:122::-;10736:24;10754:5;10736:24;:::i;:::-;10729:5;10726:35;10716:63;;10775:1;10772;10765:12;10716:63;10663:122;:::o;10791:139::-;10837:5;10875:6;10862:20;10853:29;;10891:33;10918:5;10891:33;:::i;:::-;10791:139;;;;:::o;10936:969::-;11044:6;11052;11060;11068;11117:3;11105:9;11096:7;11092:23;11088:33;11085:120;;;11124:79;;:::i;:::-;11085:120;11244:1;11269:53;11314:7;11305:6;11294:9;11290:22;11269:53;:::i;:::-;11259:63;;11215:117;11399:2;11388:9;11384:18;11371:32;11430:18;11422:6;11419:30;11416:117;;;11452:79;;:::i;:::-;11416:117;11557:75;11624:7;11615:6;11604:9;11600:22;11557:75;:::i;:::-;11547:85;;11342:300;11681:2;11707:53;11752:7;11743:6;11732:9;11728:22;11707:53;:::i;:::-;11697:63;;11652:118;11809:2;11835:53;11880:7;11871:6;11860:9;11856:22;11835:53;:::i;:::-;11825:63;;11780:118;10936:969;;;;;;;:::o;11911:114::-;11978:6;12012:5;12006:12;11996:22;;11911:114;;;:::o;12031:184::-;12130:11;12164:6;12159:3;12152:19;12204:4;12199:3;12195:14;12180:29;;12031:184;;;;:::o;12221:132::-;12288:4;12311:3;12303:11;;12341:4;12336:3;12332:14;12324:22;;12221:132;;;:::o;12359:108::-;12436:24;12454:5;12436:24;:::i;:::-;12431:3;12424:37;12359:108;;:::o;12473:179::-;12542:10;12563:46;12605:3;12597:6;12563:46;:::i;:::-;12641:4;12636:3;12632:14;12618:28;;12473:179;;;;:::o;12658:113::-;12728:4;12760;12755:3;12751:14;12743:22;;12658:113;;;:::o;12807:732::-;12926:3;12955:54;13003:5;12955:54;:::i;:::-;13025:86;13104:6;13099:3;13025:86;:::i;:::-;13018:93;;13135:56;13185:5;13135:56;:::i;:::-;13214:7;13245:1;13230:284;13255:6;13252:1;13249:13;13230:284;;;13331:6;13325:13;13358:63;13417:3;13402:13;13358:63;:::i;:::-;13351:70;;13444:60;13497:6;13444:60;:::i;:::-;13434:70;;13290:224;13277:1;13274;13270:9;13265:14;;13230:284;;;13234:14;13530:3;13523:10;;12931:608;;;12807:732;;;;:::o;13545:373::-;13688:4;13726:2;13715:9;13711:18;13703:26;;13775:9;13769:4;13765:20;13761:1;13750:9;13746:17;13739:47;13803:108;13906:4;13897:6;13803:108;:::i;:::-;13795:116;;13545:373;;;;:::o;13924:1115::-;14041:6;14049;14057;14065;14073;14122:3;14110:9;14101:7;14097:23;14093:33;14090:120;;;14129:79;;:::i;:::-;14090:120;14249:1;14274:53;14319:7;14310:6;14299:9;14295:22;14274:53;:::i;:::-;14264:63;;14220:117;14376:2;14402:53;14447:7;14438:6;14427:9;14423:22;14402:53;:::i;:::-;14392:63;;14347:118;14532:2;14521:9;14517:18;14504:32;14563:18;14555:6;14552:30;14549:117;;;14585:79;;:::i;:::-;14549:117;14690:75;14757:7;14748:6;14737:9;14733:22;14690:75;:::i;:::-;14680:85;;14475:300;14814:2;14840:53;14885:7;14876:6;14865:9;14861:22;14840:53;:::i;:::-;14830:63;;14785:118;14942:3;14969:53;15014:7;15005:6;14994:9;14990:22;14969:53;:::i;:::-;14959:63;;14913:119;13924:1115;;;;;;;;:::o;15045:647::-;15136:6;15144;15152;15201:2;15189:9;15180:7;15176:23;15172:32;15169:119;;;15207:79;;:::i;:::-;15169:119;15327:1;15352:67;15411:7;15402:6;15391:9;15387:22;15352:67;:::i;:::-;15342:77;;15298:131;15468:2;15494:53;15539:7;15530:6;15519:9;15515:22;15494:53;:::i;:::-;15484:63;;15439:118;15596:2;15622:53;15667:7;15658:6;15647:9;15643:22;15622:53;:::i;:::-;15612:63;;15567:118;15045:647;;;;;:::o;15698:91::-;15734:7;15774:8;15767:5;15763:20;15752:31;;15698:91;;;:::o;15795:120::-;15867:23;15884:5;15867:23;:::i;:::-;15860:5;15857:34;15847:62;;15905:1;15902;15895:12;15847:62;15795:120;:::o;15921:137::-;15966:5;16004:6;15991:20;15982:29;;16020:32;16046:5;16020:32;:::i;:::-;15921:137;;;;:::o;16064:89::-;16100:7;16140:6;16133:5;16129:18;16118:29;;16064:89;;;:::o;16159:120::-;16231:23;16248:5;16231:23;:::i;:::-;16224:5;16221:34;16211:62;;16269:1;16266;16259:12;16211:62;16159:120;:::o;16285:137::-;16330:5;16368:6;16355:20;16346:29;;16384:32;16410:5;16384:32;:::i;:::-;16285:137;;;;:::o;16428:817::-;16540:6;16548;16556;16564;16613:3;16601:9;16592:7;16588:23;16584:33;16581:120;;;16620:79;;:::i;:::-;16581:120;16740:1;16765:67;16824:7;16815:6;16804:9;16800:22;16765:67;:::i;:::-;16755:77;;16711:131;16881:2;16907:67;16966:7;16957:6;16946:9;16942:22;16907:67;:::i;:::-;16897:77;;16852:132;17023:2;17049:52;17093:7;17084:6;17073:9;17069:22;17049:52;:::i;:::-;17039:62;;16994:117;17150:2;17176:52;17220:7;17211:6;17200:9;17196:22;17176:52;:::i;:::-;17166:62;;17121:117;16428:817;;;;;;;:::o;17251:60::-;17279:3;17300:5;17293:12;;17251:60;;;:::o;17317:142::-;17367:9;17400:53;17418:34;17427:24;17445:5;17427:24;:::i;:::-;17418:34;:::i;:::-;17400:53;:::i;:::-;17387:66;;17317:142;;;:::o;17465:126::-;17515:9;17548:37;17579:5;17548:37;:::i;:::-;17535:50;;17465:126;;;:::o;17597:142::-;17663:9;17696:37;17727:5;17696:37;:::i;:::-;17683:50;;17597:142;;;:::o;17745:163::-;17848:53;17895:5;17848:53;:::i;:::-;17843:3;17836:66;17745:163;;:::o;17914:254::-;18023:4;18061:2;18050:9;18046:18;18038:26;;18074:87;18158:1;18147:9;18143:17;18134:6;18074:87;:::i;:::-;17914:254;;;;:::o;18174:143::-;18241:9;18274:37;18305:5;18274:37;:::i;:::-;18261:50;;18174:143;;;:::o;18323:165::-;18427:54;18475:5;18427:54;:::i;:::-;18422:3;18415:67;18323:165;;:::o;18494:256::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18655:88;18740:1;18729:9;18725:17;18716:6;18655:88;:::i;:::-;18494:256;;;;:::o;18756:1811::-;18949:6;18957;18965;18973;18981;18989;18997;19005;19054:3;19042:9;19033:7;19029:23;19025:33;19022:120;;;19061:79;;:::i;:::-;19022:120;19181:1;19206:67;19265:7;19256:6;19245:9;19241:22;19206:67;:::i;:::-;19196:77;;19152:131;19322:2;19348:52;19392:7;19383:6;19372:9;19368:22;19348:52;:::i;:::-;19338:62;;19293:117;19449:2;19475:53;19520:7;19511:6;19500:9;19496:22;19475:53;:::i;:::-;19465:63;;19420:118;19577:2;19603:53;19648:7;19639:6;19628:9;19624:22;19603:53;:::i;:::-;19593:63;;19548:118;19733:3;19722:9;19718:19;19705:33;19765:18;19757:6;19754:30;19751:117;;;19787:79;;:::i;:::-;19751:117;19892:78;19962:7;19953:6;19942:9;19938:22;19892:78;:::i;:::-;19882:88;;19676:304;20047:3;20036:9;20032:19;20019:33;20079:18;20071:6;20068:30;20065:117;;;20101:79;;:::i;:::-;20065:117;20206:78;20276:7;20267:6;20256:9;20252:22;20206:78;:::i;:::-;20196:88;;19990:304;20333:3;20360:61;20413:7;20404:6;20393:9;20389:22;20360:61;:::i;:::-;20350:71;;20304:127;20470:3;20497:53;20542:7;20533:6;20522:9;20518:22;20497:53;:::i;:::-;20487:63;;20441:119;18756:1811;;;;;;;;;;;:::o;20573:332::-;20694:4;20732:2;20721:9;20717:18;20709:26;;20745:71;20813:1;20802:9;20798:17;20789:6;20745:71;:::i;:::-;20826:72;20894:2;20883:9;20879:18;20870:6;20826:72;:::i;:::-;20573:332;;;;;:::o;20911:145::-;20980:9;21013:37;21044:5;21013:37;:::i;:::-;21000:50;;20911:145;;;:::o;21062:169::-;21168:56;21218:5;21168:56;:::i;:::-;21163:3;21156:69;21062:169;;:::o;21237:260::-;21349:4;21387:2;21376:9;21372:18;21364:26;;21400:90;21487:1;21476:9;21472:17;21463:6;21400:90;:::i;:::-;21237:260;;;;:::o;21503:117::-;21612:1;21609;21602:12;21670:244;21755:5;21796:3;21787:6;21782:3;21778:16;21774:26;21771:113;;;21803:79;;:::i;:::-;21771:113;21902:6;21893:15;;21670:244;;;;:::o;21920:567::-;22018:6;22067:2;22055:9;22046:7;22042:23;22038:32;22035:119;;;22073:79;;:::i;:::-;22035:119;22221:1;22210:9;22206:17;22193:31;22251:18;22243:6;22240:30;22237:117;;;22273:79;;:::i;:::-;22237:117;22378:92;22462:7;22453:6;22442:9;22438:22;22378:92;:::i;:::-;22368:102;;22164:316;21920:567;;;;:::o;22493:1077::-;22826:4;22864:3;22853:9;22849:19;22841:27;;22878:71;22946:1;22935:9;22931:17;22922:6;22878:71;:::i;:::-;22959:72;23027:2;23016:9;23012:18;23003:6;22959:72;:::i;:::-;23041;23109:2;23098:9;23094:18;23085:6;23041:72;:::i;:::-;23123;23191:2;23180:9;23176:18;23167:6;23123:72;:::i;:::-;23243:9;23237:4;23233:20;23227:3;23216:9;23212:19;23205:49;23271:108;23374:4;23365:6;23271:108;:::i;:::-;23263:116;;23427:9;23421:4;23417:20;23411:3;23400:9;23396:19;23389:49;23455:108;23558:4;23549:6;23455:108;:::i;:::-;23447:116;;22493:1077;;;;;;;;;:::o;23576:112::-;23629:7;23658:24;23676:5;23658:24;:::i;:::-;23647:35;;23576:112;;;:::o;23694:154::-;23783:40;23817:5;23783:40;:::i;:::-;23776:5;23773:51;23763:79;;23838:1;23835;23828:12;23763:79;23694:154;:::o;23854:171::-;23916:5;23954:6;23941:20;23932:29;;23970:49;24013:5;23970:49;:::i;:::-;23854:171;;;;:::o;24031:118::-;24068:7;24108:34;24101:5;24097:46;24086:57;;24031:118;;;:::o;24155:122::-;24228:24;24246:5;24228:24;:::i;:::-;24221:5;24218:35;24208:63;;24267:1;24264;24257:12;24208:63;24155:122;:::o;24283:139::-;24329:5;24367:6;24354:20;24345:29;;24383:33;24410:5;24383:33;:::i;:::-;24283:139;;;;:::o;24428:90::-;24462:7;24505:5;24498:13;24491:21;24480:32;;24428:90;;;:::o;24524:116::-;24594:21;24609:5;24594:21;:::i;:::-;24587:5;24584:32;24574:60;;24630:1;24627;24620:12;24574:60;24524:116;:::o;24646:133::-;24689:5;24727:6;24714:20;24705:29;;24743:30;24767:5;24743:30;:::i;:::-;24646:133;;;;:::o;24785:645::-;24875:6;24883;24891;24940:2;24928:9;24919:7;24915:23;24911:32;24908:119;;;24946:79;;:::i;:::-;24908:119;25066:1;25091:69;25152:7;25143:6;25132:9;25128:22;25091:69;:::i;:::-;25081:79;;25037:133;25209:2;25235:53;25280:7;25271:6;25260:9;25256:22;25235:53;:::i;:::-;25225:63;;25180:118;25337:2;25363:50;25405:7;25396:6;25385:9;25381:22;25363:50;:::i;:::-;25353:60;;25308:115;24785:645;;;;;:::o;25436:118::-;25523:24;25541:5;25523:24;:::i;:::-;25518:3;25511:37;25436:118;;:::o;25560:442::-;25709:4;25747:2;25736:9;25732:18;25724:26;;25760:71;25828:1;25817:9;25813:17;25804:6;25760:71;:::i;:::-;25841:72;25909:2;25898:9;25894:18;25885:6;25841:72;:::i;:::-;25923;25991:2;25980:9;25976:18;25967:6;25923:72;:::i;:::-;25560:442;;;;;;:::o;26008:153::-;26085:9;26118:37;26149:5;26118:37;:::i;:::-;26105:50;;26008:153;;;:::o;26167:185::-;26281:64;26339:5;26281:64;:::i;:::-;26276:3;26269:77;26167:185;;:::o;26358:276::-;26478:4;26516:2;26505:9;26501:18;26493:26;;26529:98;26624:1;26613:9;26609:17;26600:6;26529:98;:::i;:::-;26358:276;;;;:::o;26640:1969::-;26848:6;26856;26864;26872;26880;26888;26896;26904;26912;26961:3;26949:9;26940:7;26936:23;26932:33;26929:120;;;26968:79;;:::i;:::-;26929:120;27088:1;27113:67;27172:7;27163:6;27152:9;27148:22;27113:67;:::i;:::-;27103:77;;27059:131;27229:2;27255:67;27314:7;27305:6;27294:9;27290:22;27255:67;:::i;:::-;27245:77;;27200:132;27371:2;27397:52;27441:7;27432:6;27421:9;27417:22;27397:52;:::i;:::-;27387:62;;27342:117;27498:2;27524:53;27569:7;27560:6;27549:9;27545:22;27524:53;:::i;:::-;27514:63;;27469:118;27626:3;27653:53;27698:7;27689:6;27678:9;27674:22;27653:53;:::i;:::-;27643:63;;27597:119;27783:3;27772:9;27768:19;27755:33;27815:18;27807:6;27804:30;27801:117;;;27837:79;;:::i;:::-;27801:117;27942:78;28012:7;28003:6;27992:9;27988:22;27942:78;:::i;:::-;27932:88;;27726:304;28097:3;28086:9;28082:19;28069:33;28129:18;28121:6;28118:30;28115:117;;;28151:79;;:::i;:::-;28115:117;28256:78;28326:7;28317:6;28306:9;28302:22;28256:78;:::i;:::-;28246:88;;28040:304;28383:3;28410:53;28455:7;28446:6;28435:9;28431:22;28410:53;:::i;:::-;28400:63;;28354:119;28512:3;28539:53;28584:7;28575:6;28564:9;28560:22;28539:53;:::i;:::-;28529:63;;28483:119;26640:1969;;;;;;;;;;;:::o;28615:504::-;28698:6;28706;28755:2;28743:9;28734:7;28730:23;28726:32;28723:119;;;28761:79;;:::i;:::-;28723:119;28881:1;28906:69;28967:7;28958:6;28947:9;28943:22;28906:69;:::i;:::-;28896:79;;28852:133;29024:2;29050:52;29094:7;29085:6;29074:9;29070:22;29050:52;:::i;:::-;29040:62;;28995:117;28615:504;;;;;:::o;29125:113::-;29179:7;29208:24;29226:5;29208:24;:::i;:::-;29197:35;;29125:113;;;:::o;29244:156::-;29334:41;29369:5;29334:41;:::i;:::-;29327:5;29324:52;29314:80;;29390:1;29387;29380:12;29314:80;29244:156;:::o;29406:173::-;29469:5;29507:6;29494:20;29485:29;;29523:50;29567:5;29523:50;:::i;:::-;29406:173;;;;:::o;29585:117::-;29694:1;29691;29684:12;29725:568;29798:8;29808:6;29858:3;29851:4;29843:6;29839:17;29835:27;29825:122;;29866:79;;:::i;:::-;29825:122;29979:6;29966:20;29956:30;;30009:18;30001:6;29998:30;29995:117;;;30031:79;;:::i;:::-;29995:117;30145:4;30137:6;30133:17;30121:29;;30199:3;30191:4;30183:6;30179:17;30169:8;30165:32;30162:41;30159:128;;;30206:79;;:::i;:::-;30159:128;29725:568;;;;;:::o;30299:1259::-;30456:6;30464;30472;30480;30488;30496;30545:3;30533:9;30524:7;30520:23;30516:33;30513:120;;;30552:79;;:::i;:::-;30513:120;30672:1;30697:70;30759:7;30750:6;30739:9;30735:22;30697:70;:::i;:::-;30687:80;;30643:134;30816:2;30842:53;30887:7;30878:6;30867:9;30863:22;30842:53;:::i;:::-;30832:63;;30787:118;30972:2;30961:9;30957:18;30944:32;31003:18;30995:6;30992:30;30989:117;;;31025:79;;:::i;:::-;30989:117;31138:80;31210:7;31201:6;31190:9;31186:22;31138:80;:::i;:::-;31120:98;;;;30915:313;31295:2;31284:9;31280:18;31267:32;31326:18;31318:6;31315:30;31312:117;;;31348:79;;:::i;:::-;31312:117;31461:80;31533:7;31524:6;31513:9;31509:22;31461:80;:::i;:::-;31443:98;;;;31238:313;30299:1259;;;;;;;;:::o;31564:506::-;31648:6;31656;31705:2;31693:9;31684:7;31680:23;31676:32;31673:119;;;31711:79;;:::i;:::-;31673:119;31831:1;31856:69;31917:7;31908:6;31897:9;31893:22;31856:69;:::i;:::-;31846:79;;31802:133;31974:2;32000:53;32045:7;32036:6;32025:9;32021:22;32000:53;:::i;:::-;31990:63;;31945:118;31564:506;;;;;:::o;32076:115::-;32161:23;32178:5;32161:23;:::i;:::-;32156:3;32149:36;32076:115;;:::o;32197:218::-;32288:4;32326:2;32315:9;32311:18;32303:26;;32339:69;32405:1;32394:9;32390:17;32381:6;32339:69;:::i;:::-;32197:218;;;;:::o;32421:180::-;32469:77;32466:1;32459:88;32566:4;32563:1;32556:15;32590:4;32587:1;32580:15;32607:191;32647:3;32666:20;32684:1;32666:20;:::i;:::-;32661:25;;32700:20;32718:1;32700:20;:::i;:::-;32695:25;;32743:1;32740;32736:9;32729:16;;32764:3;32761:1;32758:10;32755:36;;;32771:18;;:::i;:::-;32755:36;32607:191;;;;:::o;32804:180::-;32852:77;32849:1;32842:88;32949:4;32946:1;32939:15;32973:4;32970:1;32963:15;32990:118;33077:24;33095:5;33077:24;:::i;:::-;33072:3;33065:37;32990:118;;:::o;33114:222::-;33207:4;33245:2;33234:9;33230:18;33222:26;;33258:71;33326:1;33315:9;33311:17;33302:6;33258:71;:::i;:::-;33114:222;;;;:::o;33342:143::-;33399:5;33430:6;33424:13;33415:22;;33446:33;33473:5;33446:33;:::i;:::-;33342:143;;;;:::o;33491:351::-;33561:6;33610:2;33598:9;33589:7;33585:23;33581:32;33578:119;;;33616:79;;:::i;:::-;33578:119;33736:1;33761:64;33817:7;33808:6;33797:9;33793:22;33761:64;:::i;:::-;33751:74;;33707:128;33491:351;;;;:::o;33848:194::-;33888:4;33908:20;33926:1;33908:20;:::i;:::-;33903:25;;33942:20;33960:1;33942:20;:::i;:::-;33937:25;;33986:1;33983;33979:9;33971:17;;34010:1;34004:4;34001:11;33998:37;;;34015:18;;:::i;:::-;33998:37;33848:194;;;;:::o;34048:143::-;34105:5;34136:6;34130:13;34121:22;;34152:33;34179:5;34152:33;:::i;:::-;34048:143;;;;:::o;34197:351::-;34267:6;34316:2;34304:9;34295:7;34291:23;34287:32;34284:119;;;34322:79;;:::i;:::-;34284:119;34442:1;34467:64;34523:7;34514:6;34503:9;34499:22;34467:64;:::i;:::-;34457:74;;34413:128;34197:351;;;;:::o;34554:140::-;34618:9;34651:37;34682:5;34651:37;:::i;:::-;34638:50;;34554:140;;;:::o;34700:159::-;34801:51;34846:5;34801:51;:::i;:::-;34796:3;34789:64;34700:159;;:::o;34865:115::-;34950:23;34967:5;34950:23;:::i;:::-;34945:3;34938:36;34865:115;;:::o;34986:601::-;35187:4;35225:3;35214:9;35210:19;35202:27;;35239:85;35321:1;35310:9;35306:17;35297:6;35239:85;:::i;:::-;35334:86;35416:2;35405:9;35401:18;35392:6;35334:86;:::i;:::-;35430:70;35496:2;35485:9;35481:18;35472:6;35430:70;:::i;:::-;35510;35576:2;35565:9;35561:18;35552:6;35510:70;:::i;:::-;34986:601;;;;;;;:::o;35593:175::-;35666:5;35697:6;35691:13;35682:22;;35713:49;35756:5;35713:49;:::i;:::-;35593:175;;;;:::o;35774:383::-;35860:6;35909:2;35897:9;35888:7;35884:23;35880:32;35877:119;;;35915:79;;:::i;:::-;35877:119;36035:1;36060:80;36132:7;36123:6;36112:9;36108:22;36060:80;:::i;:::-;36050:90;;36006:144;35774:383;;;;:::o;36163:85::-;36208:7;36237:5;36226:16;;36163:85;;;:::o;36254:101::-;36290:7;36330:18;36323:5;36319:30;36308:41;;36254:101;;;:::o;36361:156::-;36418:9;36451:60;36468:42;36477:32;36503:5;36477:32;:::i;:::-;36468:42;:::i;:::-;36451:60;:::i;:::-;36438:73;;36361:156;;;:::o;36523:145::-;36617:44;36655:5;36617:44;:::i;:::-;36612:3;36605:57;36523:145;;:::o;36674:236::-;36774:4;36812:2;36801:9;36797:18;36789:26;;36825:78;36900:1;36889:9;36885:17;36876:6;36825:78;:::i;:::-;36674:236;;;;:::o;36916:171::-;36987:5;37018:6;37012:13;37003:22;;37034:47;37075:5;37034:47;:::i;:::-;36916:171;;;;:::o;37093:379::-;37177:6;37226:2;37214:9;37205:7;37201:23;37197:32;37194:119;;;37232:79;;:::i;:::-;37194:119;37352:1;37377:78;37447:7;37438:6;37427:9;37423:22;37377:78;:::i;:::-;37367:88;;37323:142;37093:379;;;;:::o;37478:357::-;37551:6;37600:2;37588:9;37579:7;37575:23;37571:32;37568:119;;;37606:79;;:::i;:::-;37568:119;37726:1;37751:67;37810:7;37801:6;37790:9;37786:22;37751:67;:::i;:::-;37741:77;;37697:131;37478:357;;;;:::o;37841:664::-;38046:4;38084:3;38073:9;38069:19;38061:27;;38098:71;38166:1;38155:9;38151:17;38142:6;38098:71;:::i;:::-;38179:72;38247:2;38236:9;38232:18;38223:6;38179:72;:::i;:::-;38261;38329:2;38318:9;38314:18;38305:6;38261:72;:::i;:::-;38343;38411:2;38400:9;38396:18;38387:6;38343:72;:::i;:::-;38425:73;38493:3;38482:9;38478:19;38469:6;38425:73;:::i;:::-;37841:664;;;;;;;;:::o;38511:109::-;38592:21;38607:5;38592:21;:::i;:::-;38587:3;38580:34;38511:109;;:::o;38626:320::-;38741:4;38779:2;38768:9;38764:18;38756:26;;38792:71;38860:1;38849:9;38845:17;38836:6;38792:71;:::i;:::-;38873:66;38935:2;38924:9;38920:18;38911:6;38873:66;:::i;:::-;38626:320;;;;;:::o;38952:143::-;39009:5;39040:6;39034:13;39025:22;;39056:33;39083:5;39056:33;:::i;:::-;38952:143;;;;:::o;39101:663::-;39189:6;39197;39205;39254:2;39242:9;39233:7;39229:23;39225:32;39222:119;;;39260:79;;:::i;:::-;39222:119;39380:1;39405:64;39461:7;39452:6;39441:9;39437:22;39405:64;:::i;:::-;39395:74;;39351:128;39518:2;39544:64;39600:7;39591:6;39580:9;39576:22;39544:64;:::i;:::-;39534:74;;39489:129;39657:2;39683:64;39739:7;39730:6;39719:9;39715:22;39683:64;:::i;:::-;39673:74;;39628:129;39101:663;;;;;:::o;39770:117::-;39879:1;39876;39869:12;39893:98;39977:6;39972:3;39967;39954:30;39893:98;;;:::o;40027:537::-;40155:3;40176:86;40255:6;40250:3;40176:86;:::i;:::-;40169:93;;40286:66;40278:6;40275:78;40272:165;;;40356:79;;:::i;:::-;40272:165;40468:4;40460:6;40456:17;40446:27;;40483:43;40519:6;40514:3;40507:5;40483:43;:::i;:::-;40551:6;40546:3;40542:16;40535:23;;40027:537;;;;;:::o;40570:895::-;40867:4;40905:3;40894:9;40890:19;40882:27;;40919:71;40987:1;40976:9;40972:17;40963:6;40919:71;:::i;:::-;41000:72;41068:2;41057:9;41053:18;41044:6;41000:72;:::i;:::-;41119:9;41113:4;41109:20;41104:2;41093:9;41089:18;41082:48;41147:118;41260:4;41251:6;41243;41147:118;:::i;:::-;41139:126;;41312:9;41306:4;41302:20;41297:2;41286:9;41282:18;41275:48;41340:118;41453:4;41444:6;41436;41340:118;:::i;:::-;41332:126;;40570:895;;;;;;;;;:::o;41471:141::-;41527:5;41558:6;41552:13;41543:22;;41574:32;41600:5;41574:32;:::i;:::-;41471:141;;;;:::o;41618:349::-;41687:6;41736:2;41724:9;41715:7;41711:23;41707:32;41704:119;;;41742:79;;:::i;:::-;41704:119;41862:1;41887:63;41942:7;41933:6;41922:9;41918:22;41887:63;:::i;:::-;41877:73;;41833:127;41618:349;;;;:::o;41973:180::-;42021:77;42018:1;42011:88;42118:4;42115:1;42108:15;42142:4;42139:1;42132:15;42159:114;42196:7;42236:30;42229:5;42225:42;42214:53;;42159:114;;;:::o;42279:122::-;42352:24;42370:5;42352:24;:::i;:::-;42345:5;42342:35;42332:63;;42391:1;42388;42381:12;42332:63;42279:122;:::o;42407:143::-;42464:5;42495:6;42489:13;42480:22;;42511:33;42538:5;42511:33;:::i;:::-;42407:143;;;;:::o;42556:93::-;42592:7;42632:10;42625:5;42621:22;42610:33;;42556:93;;;:::o;42655:120::-;42727:23;42744:5;42727:23;:::i;:::-;42720:5;42717:34;42707:62;;42765:1;42762;42755:12;42707:62;42655:120;:::o;42781:141::-;42837:5;42868:6;42862:13;42853:22;;42884:32;42910:5;42884:32;:::i;:::-;42781:141;;;;:::o;42928:661::-;43015:6;43023;43031;43080:2;43068:9;43059:7;43055:23;43051:32;43048:119;;;43086:79;;:::i;:::-;43048:119;43206:1;43231:64;43287:7;43278:6;43267:9;43263:22;43231:64;:::i;:::-;43221:74;;43177:128;43344:2;43370:64;43426:7;43417:6;43406:9;43402:22;43370:64;:::i;:::-;43360:74;;43315:129;43483:2;43509:63;43564:7;43555:6;43544:9;43540:22;43509:63;:::i;:::-;43499:73;;43454:128;42928:661;;;;;:::o;43595:85::-;43640:7;43669:5;43658:16;;43595:85;;;:::o;43686:158::-;43744:9;43777:61;43795:42;43804:32;43830:5;43804:32;:::i;:::-;43795:42;:::i;:::-;43777:61;:::i;:::-;43764:74;;43686:158;;;:::o;43850:147::-;43945:45;43984:5;43945:45;:::i;:::-;43940:3;43933:58;43850:147;;:::o;44003:168::-;44086:11;44120:6;44115:3;44108:19;44160:4;44155:3;44151:14;44136:29;;44003:168;;;;:::o;44177:114::-;;:::o;44297:362::-;44438:3;44459:65;44522:1;44517:3;44459:65;:::i;:::-;44452:72;;44533:93;44622:3;44533:93;:::i;:::-;44651:1;44646:3;44642:11;44635:18;;44297:362;;;:::o;44665:764::-;44922:4;44960:3;44949:9;44945:19;44937:27;;44974:79;45050:1;45039:9;45035:17;45026:6;44974:79;:::i;:::-;45063:72;45131:2;45120:9;45116:18;45107:6;45063:72;:::i;:::-;45145;45213:2;45202:9;45198:18;45189:6;45145:72;:::i;:::-;45264:9;45258:4;45254:20;45249:2;45238:9;45234:18;45227:48;45292:130;45417:4;45292:130;:::i;:::-;45284:138;;44665:764;;;;;;:::o;45435:::-;45692:4;45730:3;45719:9;45715:19;45707:27;;45744:71;45812:1;45801:9;45797:17;45788:6;45744:71;:::i;:::-;45825:80;45901:2;45890:9;45886:18;45877:6;45825:80;:::i;:::-;45915:72;45983:2;45972:9;45968:18;45959:6;45915:72;:::i;:::-;46034:9;46028:4;46024:20;46019:2;46008:9;46004:18;45997:48;46062:130;46187:4;46062:130;:::i;:::-;46054:138;;45435:764;;;;;;:::o;46205:320::-;46320:4;46358:2;46347:9;46343:18;46335:26;;46371:65;46433:1;46422:9;46418:17;46409:6;46371:65;:::i;:::-;46446:72;46514:2;46503:9;46499:18;46490:6;46446:72;:::i;:::-;46205:320;;;;;:::o;46531:77::-;46568:7;46597:5;46586:16;;46531:77;;;:::o;46614:122::-;46687:24;46705:5;46687:24;:::i;:::-;46680:5;46677:35;46667:63;;46726:1;46723;46716:12;46667:63;46614:122;:::o;46742:143::-;46799:5;46830:6;46824:13;46815:22;;46846:33;46873:5;46846:33;:::i;:::-;46742:143;;;;:::o;46891:351::-;46961:6;47010:2;46998:9;46989:7;46985:23;46981:32;46978:119;;;47016:79;;:::i;:::-;46978:119;47136:1;47161:64;47217:7;47208:6;47197:9;47193:22;47161:64;:::i;:::-;47151:74;;47107:128;46891:351;;;;:::o;47248:171::-;47287:3;47310:24;47328:5;47310:24;:::i;:::-;47301:33;;47356:4;47349:5;47346:15;47343:41;;47364:18;;:::i;:::-;47343:41;47411:1;47404:5;47400:13;47393:20;;47248:171;;;:::o;47425:147::-;47526:11;47563:3;47548:18;;47425:147;;;;:::o;47578:398::-;47737:3;47758:83;47839:1;47834:3;47758:83;:::i;:::-;47751:90;;47850:93;47939:3;47850:93;:::i;:::-;47968:1;47963:3;47959:11;47952:18;;47578:398;;;:::o;47982:379::-;48166:3;48188:147;48331:3;48188:147;:::i;:::-;48181:154;;48352:3;48345:10;;47982:379;;;:::o;48367:332::-;48488:4;48526:2;48515:9;48511:18;48503:26;;48539:71;48607:1;48596:9;48592:17;48583:6;48539:71;:::i;:::-;48620:72;48688:2;48677:9;48673:18;48664:6;48620:72;:::i;:::-;48367:332;;;;;:::o;48705:498::-;48882:4;48920:2;48909:9;48905:18;48897:26;;48933:85;49015:1;49004:9;49000:17;48991:6;48933:85;:::i;:::-;49028:86;49110:2;49099:9;49095:18;49086:6;49028:86;:::i;:::-;49124:72;49192:2;49181:9;49177:18;49168:6;49124:72;:::i;:::-;48705:498;;;;;;:::o;49209:141::-;49265:5;49296:6;49290:13;49281:22;;49312:32;49338:5;49312:32;:::i;:::-;49209:141;;;;:::o;49356:137::-;49410:5;49441:6;49435:13;49426:22;;49457:30;49481:5;49457:30;:::i;:::-;49356:137;;;;:::o;49542:998::-;49637:5;49681:4;49669:9;49664:3;49660:19;49656:30;49653:117;;;49689:79;;:::i;:::-;49653:117;49788:21;49804:4;49788:21;:::i;:::-;49779:30;;49871:1;49911:59;49966:3;49957:6;49946:9;49942:22;49911:59;:::i;:::-;49904:4;49897:5;49893:16;49886:85;49819:163;50043:2;50084:76;50156:3;50147:6;50136:9;50132:22;50084:76;:::i;:::-;50077:4;50070:5;50066:16;50059:102;49992:180;50241:2;50282:57;50335:3;50326:6;50315:9;50311:22;50282:57;:::i;:::-;50275:4;50268:5;50264:16;50257:83;50182:169;50423:2;50464:57;50517:3;50508:6;50497:9;50493:22;50464:57;:::i;:::-;50457:4;50450:5;50446:16;50439:83;50361:172;49542:998;;;;:::o;50546:422::-;50651:6;50700:3;50688:9;50679:7;50675:23;50671:33;50668:120;;;50707:79;;:::i;:::-;50668:120;50827:1;50852:99;50943:7;50934:6;50923:9;50919:22;50852:99;:::i;:::-;50842:109;;50798:163;50546:422;;;;:::o;50974:442::-;51123:4;51161:2;51150:9;51146:18;51138:26;;51174:71;51242:1;51231:9;51227:17;51218:6;51174:71;:::i;:::-;51255:72;51323:2;51312:9;51308:18;51299:6;51255:72;:::i;:::-;51337;51405:2;51394:9;51390:18;51381:6;51337:72;:::i;:::-;50974:442;;;;;;:::o;51422:855::-;51699:4;51737:3;51726:9;51722:19;51714:27;;51751:71;51819:1;51808:9;51804:17;51795:6;51751:71;:::i;:::-;51832:72;51900:2;51889:9;51885:18;51876:6;51832:72;:::i;:::-;51951:9;51945:4;51941:20;51936:2;51925:9;51921:18;51914:48;51979:108;52082:4;52073:6;51979:108;:::i;:::-;51971:116;;52134:9;52128:4;52124:20;52119:2;52108:9;52104:18;52097:48;52162:108;52265:4;52256:6;52162:108;:::i;:::-;52154:116;;51422:855;;;;;;;:::o;52283:311::-;52360:4;52450:18;52442:6;52439:30;52436:56;;;52472:18;;:::i;:::-;52436:56;52522:4;52514:6;52510:17;52502:25;;52582:4;52576;52572:15;52564:23;;52283:311;;;:::o;52617:732::-;52724:5;52749:81;52765:64;52822:6;52765:64;:::i;:::-;52749:81;:::i;:::-;52740:90;;52850:5;52879:6;52872:5;52865:21;52913:4;52906:5;52902:16;52895:23;;52966:4;52958:6;52954:17;52946:6;52942:30;52995:3;52987:6;52984:15;52981:122;;;53014:79;;:::i;:::-;52981:122;53129:6;53112:231;53146:6;53141:3;53138:15;53112:231;;;53221:3;53250:48;53294:3;53282:10;53250:48;:::i;:::-;53245:3;53238:61;53328:4;53323:3;53319:14;53312:21;;53188:155;53172:4;53167:3;53163:14;53156:21;;53112:231;;;53116:21;52730:619;;52617:732;;;;;:::o;53372:385::-;53454:5;53503:3;53496:4;53488:6;53484:17;53480:27;53470:122;;53511:79;;:::i;:::-;53470:122;53621:6;53615:13;53646:105;53747:3;53739:6;53732:4;53724:6;53720:17;53646:105;:::i;:::-;53637:114;;53460:297;53372:385;;;;:::o;53763:554::-;53858:6;53907:2;53895:9;53886:7;53882:23;53878:32;53875:119;;;53913:79;;:::i;:::-;53875:119;54054:1;54043:9;54039:17;54033:24;54084:18;54076:6;54073:30;54070:117;;;54106:79;;:::i;:::-;54070:117;54211:89;54292:7;54283:6;54272:9;54268:22;54211:89;:::i;:::-;54201:99;;54004:306;53763:554;;;;:::o;54323:233::-;54362:3;54385:24;54403:5;54385:24;:::i;:::-;54376:33;;54431:66;54424:5;54421:77;54418:103;;54501:18;;:::i;:::-;54418:103;54548:1;54541:5;54537:13;54530:20;;54323:233;;;:::o;54562:553::-;54739:4;54777:3;54766:9;54762:19;54754:27;;54791:71;54859:1;54848:9;54844:17;54835:6;54791:71;:::i;:::-;54872:72;54940:2;54929:9;54925:18;54916:6;54872:72;:::i;:::-;54954;55022:2;55011:9;55007:18;54998:6;54954:72;:::i;:::-;55036;55104:2;55093:9;55089:18;55080:6;55036:72;:::i;:::-;54562:553;;;;;;;:::o;55121:117::-;55230:1;55227;55220:12;55244:117;55353:1;55350;55343:12;55367:117;55476:1;55473;55466:12;55490:740;55583:4;55589:6;55645:11;55632:25;55745:1;55739:4;55735:12;55724:8;55708:14;55704:29;55700:48;55680:18;55676:73;55666:168;;55753:79;;:::i;:::-;55666:168;55865:18;55855:8;55851:33;55843:41;;55917:4;55904:18;55894:28;;55945:18;55937:6;55934:30;55931:117;;;55967:79;;:::i;:::-;55931:117;56075:2;56069:4;56065:13;56057:21;;56132:4;56124:6;56120:17;56104:14;56100:38;56094:4;56090:49;56087:136;;;56142:79;;:::i;:::-;56087:136;55596:634;55490:740;;;;;:::o;56236:739::-;56328:4;56334:6;56390:11;56377:25;56490:1;56484:4;56480:12;56469:8;56453:14;56449:29;56445:48;56425:18;56421:73;56411:168;;56498:79;;:::i;:::-;56411:168;56610:18;56600:8;56596:33;56588:41;;56662:4;56649:18;56639:28;;56690:18;56682:6;56679:30;56676:117;;;56712:79;;:::i;:::-;56676:117;56820:2;56814:4;56810:13;56802:21;;56877:4;56869:6;56865:17;56849:14;56845:38;56839:4;56835:49;56832:136;;;56887:79;;:::i;:::-;56832:136;56341:634;56236:739;;;;;:::o;56981:442::-;57130:4;57168:2;57157:9;57153:18;57145:26;;57181:71;57249:1;57238:9;57234:17;57225:6;57181:71;:::i;:::-;57262:72;57330:2;57319:9;57315:18;57306:6;57262:72;:::i;:::-;57344;57412:2;57401:9;57397:18;57388:6;57344:72;:::i;:::-;56981:442;;;;;;:::o;57429:76::-;57465:7;57494:5;57483:16;;57429:76;;;:::o;57511:115::-;57596:23;57613:5;57596:23;:::i;:::-;57591:3;57584:36;57511:115;;:::o;57632:218::-;57723:4;57761:2;57750:9;57746:18;57738:26;;57774:69;57840:1;57829:9;57825:17;57816:6;57774:69;:::i;:::-;57632:218;;;;:::o;57856:329::-;57915:6;57964:2;57952:9;57943:7;57939:23;57935:32;57932:119;;;57970:79;;:::i;:::-;57932:119;58090:1;58115:53;58160:7;58151:6;58140:9;58136:22;58115:53;:::i;:::-;58105:63;;58061:117;57856:329;;;;:::o;58191:114::-;58258:6;58292:5;58286:12;58276:22;;58191:114;;;:::o;58311:184::-;58410:11;58444:6;58439:3;58432:19;58484:4;58479:3;58475:14;58460:29;;58311:184;;;;:::o;58501:132::-;58568:4;58591:3;58583:11;;58621:4;58616:3;58612:14;58604:22;;58501:132;;;:::o;58639:108::-;58716:24;58734:5;58716:24;:::i;:::-;58711:3;58704:37;58639:108;;:::o;58753:179::-;58822:10;58843:46;58885:3;58877:6;58843:46;:::i;:::-;58921:4;58916:3;58912:14;58898:28;;58753:179;;;;:::o;58938:113::-;59008:4;59040;59035:3;59031:14;59023:22;;58938:113;;;:::o;59087:732::-;59206:3;59235:54;59283:5;59235:54;:::i;:::-;59305:86;59384:6;59379:3;59305:86;:::i;:::-;59298:93;;59415:56;59465:5;59415:56;:::i;:::-;59494:7;59525:1;59510:284;59535:6;59532:1;59529:13;59510:284;;;59611:6;59605:13;59638:63;59697:3;59682:13;59638:63;:::i;:::-;59631:70;;59724:60;59777:6;59724:60;:::i;:::-;59714:70;;59570:224;59557:1;59554;59550:9;59545:14;;59510:284;;;59514:14;59810:3;59803:10;;59211:608;;;59087:732;;;;:::o;59825:593::-;60024:4;60062:2;60051:9;60047:18;60039:26;;60075:71;60143:1;60132:9;60128:17;60119:6;60075:71;:::i;:::-;60193:9;60187:4;60183:20;60178:2;60167:9;60163:18;60156:48;60221:108;60324:4;60315:6;60221:108;:::i;:::-;60213:116;;60339:72;60407:2;60396:9;60392:18;60383:6;60339:72;:::i;:::-;59825:593;;;;;;:::o;60441:732::-;60548:5;60573:81;60589:64;60646:6;60589:64;:::i;:::-;60573:81;:::i;:::-;60564:90;;60674:5;60703:6;60696:5;60689:21;60737:4;60730:5;60726:16;60719:23;;60790:4;60782:6;60778:17;60770:6;60766:30;60819:3;60811:6;60808:15;60805:122;;;60838:79;;:::i;:::-;60805:122;60953:6;60936:231;60970:6;60965:3;60962:15;60936:231;;;61045:3;61074:48;61118:3;61106:10;61074:48;:::i;:::-;61069:3;61062:61;61152:4;61147:3;61143:14;61136:21;;61012:155;60996:4;60991:3;60987:14;60980:21;;60936:231;;;60940:21;60554:619;;60441:732;;;;;:::o;61196:385::-;61278:5;61327:3;61320:4;61312:6;61308:17;61304:27;61294:122;;61335:79;;:::i;:::-;61294:122;61445:6;61439:13;61470:105;61571:3;61563:6;61556:4;61548:6;61544:17;61470:105;:::i;:::-;61461:114;;61284:297;61196:385;;;;:::o;61587:866::-;61700:6;61708;61716;61765:2;61753:9;61744:7;61740:23;61736:32;61733:119;;;61771:79;;:::i;:::-;61733:119;61891:1;61916:64;61972:7;61963:6;61952:9;61948:22;61916:64;:::i;:::-;61906:74;;61862:128;62029:2;62055:64;62111:7;62102:6;62091:9;62087:22;62055:64;:::i;:::-;62045:74;;62000:129;62189:2;62178:9;62174:18;62168:25;62220:18;62212:6;62209:30;62206:117;;;62242:79;;:::i;:::-;62206:117;62347:89;62428:7;62419:6;62408:9;62404:22;62347:89;:::i;:::-;62337:99;;62139:307;61587:866;;;;;:::o;62459:332::-;62580:4;62618:2;62607:9;62603:18;62595:26;;62631:71;62699:1;62688:9;62684:17;62675:6;62631:71;:::i;:::-;62712:72;62780:2;62769:9;62765:18;62756:6;62712:72;:::i;:::-;62459:332;;;;;:::o;62797:410::-;62837:7;62860:20;62878:1;62860:20;:::i;:::-;62855:25;;62894:20;62912:1;62894:20;:::i;:::-;62889:25;;62949:1;62946;62942:9;62971:30;62989:11;62971:30;:::i;:::-;62960:41;;63150:1;63141:7;63137:15;63134:1;63131:22;63111:1;63104:9;63084:83;63061:139;;63180:18;;:::i;:::-;63061:139;62845:362;62797:410;;;;:::o;63213:180::-;63261:77;63258:1;63251:88;63358:4;63355:1;63348:15;63382:4;63379:1;63372:15;63399:185;63439:1;63456:20;63474:1;63456:20;:::i;:::-;63451:25;;63490:20;63508:1;63490:20;:::i;:::-;63485:25;;63529:1;63519:35;;63534:18;;:::i;:::-;63519:35;63576:1;63573;63569:9;63564:14;;63399:185;;;;:::o" }, "gasEstimates": { "creation": { - "codeDepositCost": "6204000", + "codeDepositCost": "5765400", "executionCost": "infinite", "totalCost": "infinite" }, @@ -36199,15 +33874,13 @@ "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "infinite", "createLBPair(address,address,uint24,uint16)": "infinite", "getFactory()": "infinite", - "getFactoryV2_1()": "infinite", "getIdFromPrice(address,uint256)": "infinite", - "getLegacyFactory()": "infinite", - "getLegacyRouter()": "infinite", "getPriceFromId(address,uint24)": "infinite", "getSwapIn(address,uint128,bool)": "infinite", "getSwapOut(address,uint128,bool)": "infinite", "getV1Factory()": "infinite", "getWNATIVE()": "infinite", + "initialize()": "81647", "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "infinite", "removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "infinite", "swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", @@ -36225,7 +33898,7 @@ "internal": { "_addLiquidity(struct ILBRouter.LiquidityParameters calldata,contract ILBPair)": "infinite", "_getAmountsIn(enum ILBRouter.Version[] memory,address[] memory,contract IERC20[] memory,uint256)": "infinite", - "_getLBPairInformation(contract IERC20,contract IERC20,uint256,enum ILBRouter.Version)": "infinite", + "_getLBPairInformation(contract IERC20,contract IERC20,uint256)": "infinite", "_getPair(contract IERC20,contract IERC20,uint256,enum ILBRouter.Version)": "infinite", "_getPairs(uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory)": "infinite", "_removeLiquidity(contract ILBPair,uint256,uint256,uint256[] memory,uint256[] memory,address)": "infinite", @@ -36244,15 +33917,13 @@ "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "8efc2b2c", "createLBPair(address,address,uint24,uint16)": "659ac74b", "getFactory()": "88cc58e4", - "getFactoryV2_1()": "5c5035cb", "getIdFromPrice(address,uint256)": "f96fe925", - "getLegacyFactory()": "71d1974a", - "getLegacyRouter()": "ba846523", "getPriceFromId(address,uint24)": "d0e380f2", "getSwapIn(address,uint128,bool)": "964f987c", "getSwapOut(address,uint128,bool)": "a0d376cf", "getV1Factory()": "bb558a9f", "getWNATIVE()": "6c9c0078", + "initialize()": "8129fc1c", "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "c22159b6", "removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "81c2fdfb", "swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "b066ea7c", @@ -36273,29 +33944,14 @@ "inputs": [ { "internalType": "contract ILBFactory", - "name": "factory2_2", + "name": "factory2", "type": "address" }, { - "internalType": "contract IJoeFactory", + "internalType": "contract ISovrynLBFactoryV1", "name": "factoryV1", "type": "address" }, - { - "internalType": "contract ILBLegacyFactory", - "name": "legacyFactory", - "type": "address" - }, - { - "internalType": "contract ILBLegacyRouter", - "name": "legacyRouter", - "type": "address" - }, - { - "internalType": "contract ILBFactory", - "name": "factory2_1", - "type": "address" - }, { "internalType": "contract IWNATIVE", "name": "wnative", @@ -36307,12 +33963,7 @@ }, { "inputs": [], - "name": "JoeLibrary__InsufficientAmount", - "type": "error" - }, - { - "inputs": [], - "name": "JoeLibrary__InsufficientLiquidity", + "name": "InvalidInitialization", "type": "error" }, { @@ -36612,16 +34263,44 @@ "name": "LBRouter__WrongTokenOrder", "type": "error" }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, { "inputs": [], "name": "PackedUint128Math__SubUnderflow", "type": "error" }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientLiquidity", + "type": "error" + }, { "inputs": [], "name": "TokenHelper__TransferFailed", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "inputs": [ { @@ -36911,19 +34590,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "getFactoryV2_1", - "outputs": [ - { - "internalType": "contract ILBFactory", - "name": "lbFactory", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -36948,32 +34614,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "getLegacyFactory", - "outputs": [ - { - "internalType": "contract ILBLegacyFactory", - "name": "legacyLBfactory", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLegacyRouter", - "outputs": [ - { - "internalType": "contract ILBLegacyRouter", - "name": "legacyRouter", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -37081,7 +34721,7 @@ "name": "getV1Factory", "outputs": [ { - "internalType": "contract IJoeFactory", + "internalType": "contract ISovrynLBFactoryV1", "name": "factoryV1", "type": "address" } @@ -37102,6 +34742,13 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/src/artifacts/LBRouter_metadata.json b/src/artifacts/LBRouter_metadata.json index d5a0b4f5..905af275 100644 --- a/src/artifacts/LBRouter_metadata.json +++ b/src/artifacts/LBRouter_metadata.json @@ -9,29 +9,14 @@ "inputs": [ { "internalType": "contract ILBFactory", - "name": "factory2_2", + "name": "factory2", "type": "address" }, { - "internalType": "contract IJoeFactory", + "internalType": "contract ISovrynLBFactoryV1", "name": "factoryV1", "type": "address" }, - { - "internalType": "contract ILBLegacyFactory", - "name": "legacyFactory", - "type": "address" - }, - { - "internalType": "contract ILBLegacyRouter", - "name": "legacyRouter", - "type": "address" - }, - { - "internalType": "contract ILBFactory", - "name": "factory2_1", - "type": "address" - }, { "internalType": "contract IWNATIVE", "name": "wnative", @@ -43,12 +28,7 @@ }, { "inputs": [], - "name": "JoeLibrary__InsufficientAmount", - "type": "error" - }, - { - "inputs": [], - "name": "JoeLibrary__InsufficientLiquidity", + "name": "InvalidInitialization", "type": "error" }, { @@ -348,16 +328,44 @@ "name": "LBRouter__WrongTokenOrder", "type": "error" }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, { "inputs": [], "name": "PackedUint128Math__SubUnderflow", "type": "error" }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientLiquidity", + "type": "error" + }, { "inputs": [], "name": "TokenHelper__TransferFailed", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "inputs": [ { @@ -647,19 +655,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "getFactoryV2_1", - "outputs": [ - { - "internalType": "contract ILBFactory", - "name": "lbFactory", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -684,32 +679,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "getLegacyFactory", - "outputs": [ - { - "internalType": "contract ILBLegacyFactory", - "name": "legacyLBfactory", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLegacyRouter", - "outputs": [ - { - "internalType": "contract ILBLegacyRouter", - "name": "legacyRouter", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -817,7 +786,7 @@ "name": "getV1Factory", "outputs": [ { - "internalType": "contract IJoeFactory", + "internalType": "contract ISovrynLBFactoryV1", "name": "factoryV1", "type": "address" } @@ -838,6 +807,13 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1507,7 +1483,23 @@ } ], "devdoc": { - "author": "Trader Joe", + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, "kind": "dev", "methods": { "addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": { @@ -1539,14 +1531,7 @@ } }, "constructor": { - "params": { - "factory2_1": "Address of Joe V2.1 factory", - "factory2_2": "Address of Joe V2.2 factory", - "factoryV1": "Address of Joe V1 factory", - "legacyFactory": "Address of Joe V2 factory", - "legacyRouter": "Address of Joe V2 router", - "wnative": "Address of WNATIVE" - } + "custom:oz-upgrades-unsafe-allow": "constructor" }, "createLBPair(address,address,uint24,uint16)": { "params": { @@ -1564,11 +1549,6 @@ "lbFactory": "The address of the factory V2.1" } }, - "getFactoryV2_1()": { - "returns": { - "lbFactory": "The address of the factory V2.1" - } - }, "getIdFromPrice(address,uint256)": { "params": { "pair": "The address of the LBPair", @@ -1578,16 +1558,6 @@ "_0": "The id corresponding to this price" } }, - "getLegacyFactory()": { - "returns": { - "legacyLBfactory": "The address of the factory V2" - } - }, - "getLegacyRouter()": { - "returns": { - "legacyRouter": "The address of the router V2" - } - }, "getPriceFromId(address,uint24)": { "params": { "id": "The id", @@ -1790,6 +1760,17 @@ } } }, + "stateVariables": { + "_factory2": { + "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" + }, + "_factoryV1": { + "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" + }, + "_wnative": { + "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" + } + }, "title": "Liquidity Book Router", "version": 1 }, @@ -1802,27 +1783,15 @@ "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": { "notice": "Add liquidity with NATIVE while performing safety checks" }, - "constructor": { - "notice": "Constructor" - }, "createLBPair(address,address,uint24,uint16)": { "notice": "Create a liquidity bin LBPair for tokenX and tokenY using the factory" }, "getFactory()": { "notice": "View function to get the factory V2.1 address" }, - "getFactoryV2_1()": { - "notice": "View function to get the factory V2.1 address" - }, "getIdFromPrice(address,uint256)": { "notice": "Returns the approximate id corresponding to the inputted price. Warning, the returned id may be inaccurate close to the start price of a bin" }, - "getLegacyFactory()": { - "notice": "View function to get the factory V2 address" - }, - "getLegacyRouter()": { - "notice": "View function to get the router V2 address" - }, "getPriceFromId(address,uint24)": { "notice": "Returns the price corresponding to the inputted id" }, @@ -1878,7 +1847,7 @@ "notice": "Unstuck LBTokens that are sent to this contract by mistake" } }, - "notice": "Main contract to interact with to swap and manage liquidity on Joe V2 exchange.", + "notice": "Main contract to interact with to swap and manage liquidity on Sovryn LB V2 exchange.", "version": 1 } }, @@ -1899,7 +1868,8 @@ ":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":forge-std/=lib/forge-std/src/" + ":forge-std/=lib/forge-std/src/", + ":src/=src/" ] }, "sources": { @@ -1911,6 +1881,14 @@ "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a" ] }, + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { + "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b", + "license": "MIT", + "urls": [ + "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609", + "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM" + ] + }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4", "license": "MIT", @@ -1936,43 +1914,27 @@ ] }, "src/LBRouter.sol": { - "keccak256": "0x6fced9785dc5ca296341a6c21bae3c6d8e62b678e20e3d40d0648e9e4a5899d4", + "keccak256": "0x065f078d353ace56082b3f57b478a2d2a4bbb05a6dd183c48cd70b96263c51c2", "license": "MIT", "urls": [ - "bzz-raw://d4e7b0bcca2dfe3cbeda952c00adf2d7ec28adefe116f216fda5e90b6f87619d", - "dweb:/ipfs/QmW6RsXRxHf5gpvo98zXdneFjcxfeo5QL8vDbCy8VQLG12" - ] - }, - "src/interfaces/IJoeFactory.sol": { - "keccak256": "0xd1f116ee8133101c2c07112dfe871fabdcb182f9b84468765b58a5136d661ba6", - "license": "GPL-3.0", - "urls": [ - "bzz-raw://39e15e3db5f37a23410e6917d0f006390bfe48bb7e1549242e2927c498ee9c70", - "dweb:/ipfs/QmapjmXv1ouKPGL7vvLYaaFakxZ3YJb55LdNe2nyN8RZaz" - ] - }, - "src/interfaces/IJoePair.sol": { - "keccak256": "0x8f3f3f22167722e8e0b200768ef953b5f5a84064cf385e16d162ac4229f34c23", - "license": "GPL-3.0", - "urls": [ - "bzz-raw://c7d698db18059eadd0490f68c69b04b5349150346601dc6951d8cc2a2796bc25", - "dweb:/ipfs/Qmd2CxzN7GtM8BhkotDroJkWLEYdvT8U3vwYSK4chbSWos" + "bzz-raw://a9c5ebcc9f2630697f9cd34b81a3e9845dc4accef0ac1dba4704994dedad5da0", + "dweb:/ipfs/Qmd19LLUTWixw6TqY66nG1jwnG6mnZrcRN9nM6NN1wEzYE" ] }, "src/interfaces/ILBFactory.sol": { - "keccak256": "0x03806497102c036a26e13fc7734c7eb2dc2e746a7e07bba9743e49c696d5e83c", + "keccak256": "0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53", "license": "MIT", "urls": [ - "bzz-raw://3cff60a63ce5e38fcd7634d6f0c10062b17eb9906cdee51163631164f848af2e", - "dweb:/ipfs/QmeR1WY7ccnUxdQYCgGjnMzuUkqnwNErcLoS8jG7QPYcq8" + "bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e", + "dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK" ] }, "src/interfaces/ILBFlashLoanCallback.sol": { - "keccak256": "0x0595b40912fd6ba4c3ea7d6739e467b4381c9d6cc85218c5bd3536c9fb4ecc2b", + "keccak256": "0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b", "license": "MIT", "urls": [ - "bzz-raw://5a8f1cdd283a42c87aa87f9d39734e40e7d054a436c86fc6594cb6c2627bd85e", - "dweb:/ipfs/QmQfaLb1FTPcCs7vQ6qf7SXuqgQzXLAWnaMyZkixkNN8WE" + "bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a", + "dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt" ] }, "src/interfaces/ILBHooks.sol": { @@ -1984,59 +1946,75 @@ ] }, "src/interfaces/ILBLegacyFactory.sol": { - "keccak256": "0xab58bd3202e2cf14d43a17246a9d1294d135357d33164a2113b61c57b1129cae", + "keccak256": "0xcec90d4f620b1ff5b3c6b57348044e8e9c0e1313c20fa2f5c91206c84e47a388", "license": "MIT", "urls": [ - "bzz-raw://678695cf709471e3969602a1adae5b2ba09617f73feb9787e35f6985286ddcd5", - "dweb:/ipfs/QmUBjdC5131ho5Jb797e6Lf6yZSU9BgBh1cvrNzWWtfLd5" + "bzz-raw://6cd83dd005f0fd8229fd6eb9d2cd37399b543ab9d9ccefe9050c472dcb106490", + "dweb:/ipfs/Qmca42wgwAUCWRX3ZMezhnJGwSHcXpP7D4hDYRZmeJChgY" ] }, "src/interfaces/ILBLegacyPair.sol": { - "keccak256": "0x50691b25afe50c5f24b7dc4d89e15872c1ff833962503ee3985616025d715f25", + "keccak256": "0x4d26410d0c866e3ed50c39ffeb191d2beefcbb603a39812b3497de267035bac4", "license": "MIT", "urls": [ - "bzz-raw://296e023253effdf4e2900eb3562cd6139f6e4948815cd125d2a3db866e351ed1", - "dweb:/ipfs/QmaWdjKforJGooUYRPz9XqETyzfQesrtyteYPwgCD4Xh6D" + "bzz-raw://a307fdcace490a0b52e4db19befde1267615602140858d4b806b885258dec262", + "dweb:/ipfs/QmYPEdQJRAFwdyrphHZT2vpqdFo7gK3SULn3QYA3kdx3Ka" ] }, "src/interfaces/ILBLegacyRouter.sol": { - "keccak256": "0x6dd45a103c84d545155f1d1010c0b0cfe4e9e4097ab7c50a8498756e46f2c80a", + "keccak256": "0xdeee599df829ad6c0ee8174c48def9858ac4a9b420cd0f3ca4541f3fb6cdf82e", "license": "MIT", "urls": [ - "bzz-raw://8d5dba25033c025dc6a9124d4fb88e6c146d87b24518adfc789b6bef31673140", - "dweb:/ipfs/QmYdAxVvvvBsPDnMx7vLHma8Yuaqj9MW6f4TP2ixPyH3Eq" + "bzz-raw://2688d777fec9ad1e91bd74cd323897de85a1776e16c9441474d63c1b08c3b8c0", + "dweb:/ipfs/QmZfB4VBegmr7vD4RXUBXEXtynny2JrwF69gh2uks5UxAD" ] }, "src/interfaces/ILBLegacyToken.sol": { - "keccak256": "0x7910e19e35a01a163a9f8c4040dc19e1663c4d562a22a1181d25610ebc5295a1", + "keccak256": "0x8761bc1f131de7fc47ab2e83df8e42dea8472976e5b6cd85e6e6b4c97a5b1c1f", "license": "MIT", "urls": [ - "bzz-raw://d477e76d0bdc62be7968bc2b80b588e19c56564d9503595066a3c18f642842af", - "dweb:/ipfs/QmY4MkuWHULoK5Wce56i89AWZeEwdDk5gchnC2haWh2Zz2" + "bzz-raw://069c01d23f87b602eac49dc7c6cdfc1b3d505cffc4b42dfc3284b382853a0c3f", + "dweb:/ipfs/QmQnu2Uff3wzJ3ZnLwZrKB8ECnoF3SzPHLBHQcMhcWpFHT" ] }, "src/interfaces/ILBPair.sol": { - "keccak256": "0xf711b76faedb1b796f9c4c3edb9ab5044b87a6c9435316c6008b3082e836bf70", + "keccak256": "0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d", "license": "MIT", "urls": [ - "bzz-raw://bcb0fd6cb81410f90650d87eb8be6034f85246172457338e09d13b6f5c919f51", - "dweb:/ipfs/QmSxBFGVJX3PofmhGY8SGLnQXqcthE5V1jrsUcw4bnjHsB" + "bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d", + "dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW" ] }, "src/interfaces/ILBRouter.sol": { - "keccak256": "0x23b050eceaf13b7ec158c01992f125fd8f30b3c1956d32bbc1107394a9699f3a", + "keccak256": "0xe71da86c5fb90e7cff71d874bb7d3d805df175afd8c876f000c80ce329be31da", "license": "MIT", "urls": [ - "bzz-raw://9dcf750c020fadfb54358d00a0e1e7fa514703352bdcec9b9252a0744c9530f5", - "dweb:/ipfs/Qmdq5b12RLmg9BK58J5qMhQ4ddNGE2FkMFsmdNSgXaxSWR" + "bzz-raw://1282a496ed9eee833f91def600027739966f41313722fe92f1d9b573f4e6e6b3", + "dweb:/ipfs/QmXJRCjTd5DRd5VEuTpN1ZKkxP4TcRFuPSL5ZdQb5GnV1G" ] }, "src/interfaces/ILBToken.sol": { - "keccak256": "0x6ec82e130bfcee455420f5b6025dd9f6237654c5d081b1a929de1c4ac942387a", + "keccak256": "0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7", "license": "MIT", "urls": [ - "bzz-raw://ba0a398ffeea4227ce9eee3a76c97a47a8ac39ac2b85cda60bc24a93c5c7386a", - "dweb:/ipfs/QmP1oUtTGG6PWu1n9T7n38iQVKMsDavhA9kCyLSjWTEgLt" + "bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6", + "dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg" + ] + }, + "src/interfaces/ISovrynLBFactoryV1.sol": { + "keccak256": "0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce", + "license": "GPL-3.0", + "urls": [ + "bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9", + "dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd" + ] + }, + "src/interfaces/ISovrynLBPairV1.sol": { + "keccak256": "0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855", + "license": "GPL-3.0", + "urls": [ + "bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0", + "dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc" ] }, "src/interfaces/IWNATIVE.sol": { @@ -2048,27 +2026,27 @@ ] }, "src/libraries/BinHelper.sol": { - "keccak256": "0xa6195c864ee0b8dca8fca9e7caa57cbd7bc9030c70aae4e1f1539db72390c2e7", + "keccak256": "0x628f601bafe7f4f26703fa2d2af1b354504afb334120c1c230ce59cf835fe9b1", "license": "MIT", "urls": [ - "bzz-raw://2a000530f5d9bd7a9c6c908c568d256a66f2b3e69d0ec78e027162f25b7393f9", - "dweb:/ipfs/QmZypaixp9XeSCY5sWCrQXqQYUXEZpzqcHQSq7WowYraP5" + "bzz-raw://1849fb70a3d6792e3600a1edc62cf78e4bfe4cdb58fc66f77ad1698677ae8e12", + "dweb:/ipfs/QmXmfTTf7RWACPNPg6NnptKntkpggNZhkPJgBf4v34Zpnu" ] }, "src/libraries/Constants.sol": { - "keccak256": "0xeb531944284c1a12410b47605869a65f7a3d6f97e24e9dff5a9b8972e9dd6e5a", + "keccak256": "0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401", "license": "MIT", "urls": [ - "bzz-raw://4840c7e6de5c27bd9c46bed582bdaa9e7de4b9d3e9441a4b7b0de40f6ae1e7ca", - "dweb:/ipfs/QmNZnqNc2MayvLR3VsmPZ3tzhkFkPgD3J7tKLwWr6mzFxM" + "bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65", + "dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ" ] }, "src/libraries/FeeHelper.sol": { - "keccak256": "0x577da4f975f0b547bcfabe9fe6ca8562bcbe12459e0b4b40408829453eabedef", + "keccak256": "0x1006878aa066fb9f68bcc4a56029454acfb919abaa3fb84c7e956f61c6435365", "license": "MIT", "urls": [ - "bzz-raw://cbd6b51786286234c95eaa6e20b78365ee661baacf8fa8d15b1208eebaf1b3c7", - "dweb:/ipfs/QmSNtWqGMiuzCjYnLTMKCuYFkAcNunQ5uXKSPeU3jt7uRh" + "bzz-raw://bdcd8045a060f75493de19cd4c731bd6a7d27bb3554be4cf235d1e2705094d6a", + "dweb:/ipfs/QmfB2CdBhid2ixRgsFPF4w3JfFkieL2DuJLX6zjn11EH2x" ] }, "src/libraries/Hooks.sol": { @@ -2079,92 +2057,92 @@ "dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop" ] }, - "src/libraries/JoeLibrary.sol": { - "keccak256": "0x8d5f41e6a440f97475138cff9a22eef7cfe24dc489c4dcd28d64206eba50c243", - "license": "GPL-3.0", - "urls": [ - "bzz-raw://c7e3a7450f460794f5ccfb4b1b8c6a9ad13c20b2ce3a62ba2acb2a17e1021131", - "dweb:/ipfs/QmbaerUuNUgT1DYy1vm7eFCk6JpCy6dkpfpAcYZsNNH3Lm" - ] - }, "src/libraries/PairParameterHelper.sol": { - "keccak256": "0x53163f663dad415ede2e5f0705700268445eb0586070fb253ff65f9afbcc1a8b", + "keccak256": "0xd75796a09915a4ce7fd69894504bb21d8f4b6b8fd96b9d863422911313f9dd71", "license": "MIT", "urls": [ - "bzz-raw://4f07672f538f7b0a4b826379f988d5cd17c93eab371b8dee597a2228f2c1533d", - "dweb:/ipfs/Qmaq2AUCiRzrqnWPVE7TH62ZTUcYJ4cXSGGRQV4q8ASELZ" + "bzz-raw://c38fa6ee12c97e1aa1b33ae4cca16f52c1712b7b7a2222dc0cdf61f087ab6e1b", + "dweb:/ipfs/QmUXVXUhAtZufsRKKEujphnQLhEmiADw215LMcpjooiERr" ] }, "src/libraries/PriceHelper.sol": { - "keccak256": "0xe660c07d0812609a65bcdccc1d7212116e8075c3a86cf9b15ead3639b0f9fdb7", + "keccak256": "0xe8af4af39a9063fa569aa161f0fb0b81825131c102b8504deebe142f79f918a6", "license": "MIT", "urls": [ - "bzz-raw://61c85e1bc1107f22b13c3c5e43fdda89eb6ed3f9ab9df123e18914b24f3ff054", - "dweb:/ipfs/QmUewajrhnmLPJ7qgDmXb4FZbNJdtArxGu5eQca8Mo1YTb" + "bzz-raw://1b6e1bcd23acaf79754aed4eb8f32ca3f1712696396a6f06511a6422f73da01f", + "dweb:/ipfs/QmNZjn3byK4aDYMC5xYPKWCjVUoSmUQgeaHx14q9iA412N" + ] + }, + "src/libraries/SovrynLBLibrary.sol": { + "keccak256": "0x514625c1f1c443cd266e4649c4477f6e7fb97933abd23bd5730a2702e70d3db0", + "license": "GPL-3.0", + "urls": [ + "bzz-raw://5cbde0beee3ca3cc8f0a101709cf10b91a5433a385c625a44368bdda228730ea", + "dweb:/ipfs/QmSwpUSDzaZbP8DDSWeuYUr3c2YKQLBor2kgofdEREmjMZ" ] }, "src/libraries/TokenHelper.sol": { - "keccak256": "0xa30227012c3e9e07538b93352235803799df37cc45bc9e52386114da02e0e5cf", + "keccak256": "0xe8ae81331a34b92fd7f9d35c5db42155b7a15e030be71461e8fde43b61f94f89", "license": "MIT", "urls": [ - "bzz-raw://9845d1d0c074569569cdeb21ee77e94140062cce50ccf5cb3ab3c43dc1fe8675", - "dweb:/ipfs/QmQb3AMgzzhrYpgAiHBZzsTo95RGzvGTj9BEXnjv3PrKRd" + "bzz-raw://ff0d559ce9e5a078b45fc50450031a50aafa28ef9040819ee9389a4ca525646a", + "dweb:/ipfs/QmXND5xw7qv1thPqTwtLgc6GzTNzo51G8LN1iaqbDnZADZ" ] }, "src/libraries/math/BitMath.sol": { - "keccak256": "0x7b359776521706ae1291cbf8707919aaa5cb78d59b9dfbe5393322c393250b1f", + "keccak256": "0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546", "license": "MIT", "urls": [ - "bzz-raw://bb9fe4accf6abda06f8b4ba02f86d37df109e4b8d14b78a848eb4b4cee359485", - "dweb:/ipfs/QmSTkrek6fhvgiato8tC6ARz4M11Ynqgyuy7d2QeGiWXEG" + "bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d", + "dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5" ] }, "src/libraries/math/Encoded.sol": { - "keccak256": "0xd7caeb3b8c48ac9015c89a5fc6e6387a421359c0d773b6cd276baa17eb8c4c3f", + "keccak256": "0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee", "license": "MIT", "urls": [ - "bzz-raw://100c723b4e0739a2fcb9e6f429c0db1583392a92bb8e85af41f1e1b3f632ab50", - "dweb:/ipfs/QmSCWAoZfo8hS4ZUUcohahc93pMLSUXFHLfkpLq7QBkPBz" + "bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1", + "dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew" ] }, "src/libraries/math/LiquidityConfigurations.sol": { - "keccak256": "0x0508102d0e1197ec2e323bd518fae0862c379345a1473e095509ff53c6070e74", + "keccak256": "0x2afb2f102951960df3d03c44fabbc203639df1cf964803c1385e27947abf928f", "license": "MIT", "urls": [ - "bzz-raw://ebcaba260405c768eacd1a9aaf5e824936324410b85a57b87383832fca8ab580", - "dweb:/ipfs/QmVDrsm2RVPXB6L8bNmMQnxNnrUeavscWPtfERVCbRY6i7" + "bzz-raw://ce35503e67c73199e36b374d90fdba1449a42219a87cac83dd1940d90b5c4d7f", + "dweb:/ipfs/QmaQ5VkFB6K8r8SmSW6EefFJgnhmwsZGaf9MNLo58at9KB" ] }, "src/libraries/math/PackedUint128Math.sol": { - "keccak256": "0x4e57313a54c7809e23cfbda591daf98f21fbabe6db88168c98f62e9cf48199bb", + "keccak256": "0x58f0ee5bbb2d92c766419db9bf60685885f2f503cf59a2f9ee21a55cccf7da6a", "license": "MIT", "urls": [ - "bzz-raw://f14817b310ad63744d86bdcb460d5b226c450d180e61ef7a6aae00bf02bb9bab", - "dweb:/ipfs/QmR6ua4JXdFgwaUKzRTCbBvQGKvQD2arHS1RkDf8zTzU2e" + "bzz-raw://270cebf1bd2cc7318e1e198d1bb72fdc04c59642f891ad54cb5ba0ac15a457e0", + "dweb:/ipfs/QmfEkyJ8pxuoYAbjeMrj3uoEYX63mJ5GCPBfdPCoWKcGch" ] }, "src/libraries/math/SafeCast.sol": { - "keccak256": "0x3e22926e8f7d352568f01a896860c83b3ab35b47a0ed9a0f2e780a82aa52f4a8", + "keccak256": "0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257", "license": "MIT", "urls": [ - "bzz-raw://3fc2ade1520197ab28ad6292a1d70d3182b9741030ad69c8a915b4c09ebec1f5", - "dweb:/ipfs/QmYRtP5AiMXCpiBPrmuWd2R1mYGyuXoa24GeZJRUBSS7wH" + "bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e", + "dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD" ] }, "src/libraries/math/Uint128x128Math.sol": { - "keccak256": "0xe84206e2561ef32aef2d23ce5022f0174898a26d4d60346675e7a7fd76054fc0", + "keccak256": "0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a", "license": "MIT", "urls": [ - "bzz-raw://4238023aeb54caf0d245b00063b37a736142413d3040a175b8d5765ee148242d", - "dweb:/ipfs/QmSqvRJAxtCLjkp19rW8jxzvocr6e478u2Ge5iLyJojJXF" + "bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94", + "dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU" ] }, "src/libraries/math/Uint256x256Math.sol": { - "keccak256": "0xa85a6d3be7cdf95ec9b246d36c3843de738af3df11fcc2bf8bf6e15c350870d6", + "keccak256": "0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f", "license": "MIT", "urls": [ - "bzz-raw://ffa97dbe1dc755a243a81a2590e3f25e5399549351a941c2835cca190a0a3fa0", - "dweb:/ipfs/QmbKUhSjHj1Y48dCPfiYSLybQ8miYfQ99EWsWdP8orpeaB" + "bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea", + "dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M" ] } }, diff --git a/src/artifacts/build-info/1cda0be2514a26d10b2b3d375df403c4.json b/src/artifacts/build-info/1cda0be2514a26d10b2b3d375df403c4.json new file mode 100644 index 00000000..cb28acb9 --- /dev/null +++ b/src/artifacts/build-info/1cda0be2514a26d10b2b3d375df403c4.json @@ -0,0 +1,349013 @@ +{ + "id": "1cda0be2514a26d10b2b3d375df403c4", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.20", + "solcLongVersion": "0.8.20+commit.a1b79de6", + "input": { + "language": "Solidity", + "sources": { + "src/LBRouter.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport {BinHelper} from \"./libraries/BinHelper.sol\";\nimport {Constants} from \"./libraries/Constants.sol\";\nimport {Encoded} from \"./libraries/math/Encoded.sol\";\nimport {FeeHelper} from \"./libraries/FeeHelper.sol\";\nimport {SovrynLBLibrary} from \"./libraries/SovrynLBLibrary.sol\";\nimport {LiquidityConfigurations} from \"./libraries/math/LiquidityConfigurations.sol\";\nimport {PackedUint128Math} from \"./libraries/math/PackedUint128Math.sol\";\nimport {TokenHelper, IERC20} from \"./libraries/TokenHelper.sol\";\nimport {Uint256x256Math} from \"./libraries/math/Uint256x256Math.sol\";\n\nimport {ISovrynLBPairV1} from \"./interfaces/ISovrynLBPairV1.sol\";\nimport {ILBPair} from \"./interfaces/ILBPair.sol\";\nimport {ILBLegacyPair} from \"./interfaces/ILBLegacyPair.sol\";\nimport {ILBToken} from \"./interfaces/ILBToken.sol\";\nimport {ILBRouter} from \"./interfaces/ILBRouter.sol\";\nimport {ILBLegacyRouter} from \"./interfaces/ILBLegacyRouter.sol\";\nimport {ISovrynLBFactoryV1} from \"./interfaces/ISovrynLBFactoryV1.sol\";\nimport {ILBLegacyFactory} from \"./interfaces/ILBLegacyFactory.sol\";\nimport {ILBFactory} from \"./interfaces/ILBFactory.sol\";\nimport {IWNATIVE} from \"./interfaces/IWNATIVE.sol\";\nimport {Initializable} from \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\n\n/**\n * @title Liquidity Book Router\n * @notice Main contract to interact with to swap and manage liquidity on Sovryn LB V2 exchange.\n */\ncontract LBRouter is Initializable, ILBRouter {\n using TokenHelper for IERC20;\n using SovrynLBLibrary for uint256;\n using PackedUint128Math for bytes32;\n\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ILBFactory private immutable _factory2;\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n ISovrynLBFactoryV1 private immutable _factoryV1;\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n IWNATIVE private immutable _wnative;\n\n modifier onlyFactoryOwner() {\n if (msg.sender != Ownable(address(_factory2)).owner()) revert LBRouter__NotFactoryOwner();\n _;\n }\n\n modifier ensure(uint256 deadline) {\n if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp);\n _;\n }\n\n modifier verifyPathValidity(Path memory path) {\n if (\n path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length\n || path.pairBinSteps.length + 1 != path.tokenPath.length\n ) revert LBRouter__LengthsMismatch();\n _;\n }\n\n /**\n * @param factory2 Address of LB DEX V2.2 factory\n * @param factoryV1 Address of LB DEX V1 factory\n * @param wnative Address of WNATIVE\n */\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(\n ILBFactory factory2,\n ISovrynLBFactoryV1 factoryV1,\n IWNATIVE wnative\n ) {\n _factory2 = factory2;\n _factoryV1 = factoryV1;\n _wnative = wnative;\n\n _disableInitializers();\n }\n\n function initialize() initializer external {}\n\n /**\n * @dev Receive function that only accept NATIVE from the WNATIVE contract\n */\n receive() external payable {\n if (msg.sender != address(_wnative)) revert LBRouter__SenderIsNotWNATIVE();\n }\n\n /**\n * View function to get the factory V2.1 address\n * @return lbFactory The address of the factory V2.1\n */\n function getFactory() external view override returns (ILBFactory lbFactory) {\n return _factory2;\n }\n\n /**\n * View function to get the factory V1 address\n * @return factoryV1 The address of the factory V1\n */\n function getV1Factory() external view override returns (ISovrynLBFactoryV1 factoryV1) {\n return _factoryV1;\n }\n\n /**\n * View function to get the WNATIVE address\n * @return wnative The address of WNATIVE\n */\n function getWNATIVE() external view override returns (IWNATIVE wnative) {\n return _wnative;\n }\n\n /**\n * @notice Returns the approximate id corresponding to the inputted price.\n * Warning, the returned id may be inaccurate close to the start price of a bin\n * @param pair The address of the LBPair\n * @param price The price of y per x (multiplied by 1e36)\n * @return The id corresponding to this price\n */\n function getIdFromPrice(ILBPair pair, uint256 price) external view override returns (uint24) {\n return pair.getIdFromPrice(price);\n }\n\n /**\n * @notice Returns the price corresponding to the inputted id\n * @param pair The address of the LBPair\n * @param id The id\n * @return The price corresponding to this id\n */\n function getPriceFromId(ILBPair pair, uint24 id) external view override returns (uint256) {\n return pair.getPriceFromId(id);\n }\n\n /**\n * @notice Simulate a swap in\n * @param pair The address of the LBPair\n * @param amountOut The amount of token to receive\n * @param swapForY Whether you swap X for Y (true), or Y for X (false)\n * @return amountIn The amount of token to send in order to receive amountOut token\n * @return amountOutLeft The amount of token Out that can't be returned due to a lack of liquidity\n * @return fee The amount of fees paid in token sent\n */\n function getSwapIn(ILBPair pair, uint128 amountOut, bool swapForY)\n public\n view\n override\n returns (uint128 amountIn, uint128 amountOutLeft, uint128 fee)\n {\n (amountIn, amountOutLeft, fee) = pair.getSwapIn(amountOut, swapForY);\n }\n\n /**\n * @notice Simulate a swap out\n * @param pair The address of the LBPair\n * @param amountIn The amount of token sent\n * @param swapForY Whether you swap X for Y (true), or Y for X (false)\n * @return amountInLeft The amount of token In that can't be swapped due to a lack of liquidity\n * @return amountOut The amount of token received if amountIn tokenX are sent\n * @return fee The amount of fees paid in token sent\n */\n function getSwapOut(ILBPair pair, uint128 amountIn, bool swapForY)\n external\n view\n override\n returns (uint128 amountInLeft, uint128 amountOut, uint128 fee)\n {\n (amountInLeft, amountOut, fee) = pair.getSwapOut(amountIn, swapForY);\n }\n\n /**\n * @notice Create a liquidity bin LBPair for tokenX and tokenY using the factory\n * @param tokenX The address of the first token\n * @param tokenY The address of the second token\n * @param activeId The active id of the pair\n * @param binStep The bin step in basis point, used to calculate log(1 + binStep)\n * @return pair The address of the newly created LBPair\n */\n function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)\n external\n override\n returns (ILBPair pair)\n {\n pair = _factory2.createLBPair(tokenX, tokenY, activeId, binStep);\n }\n\n /**\n * @notice Add liquidity while performing safety checks\n * @dev This function is compliant with fee on transfer tokens\n * @param liquidityParameters The liquidity parameters\n * @return amountXAdded The amount of token X added\n * @return amountYAdded The amount of token Y added\n * @return amountXLeft The amount of token X left (sent back to liquidityParameters.refundTo)\n * @return amountYLeft The amount of token Y left (sent back to liquidityParameters.refundTo)\n * @return depositIds The ids of the deposits\n * @return liquidityMinted The amount of liquidity minted\n */\n function addLiquidity(LiquidityParameters calldata liquidityParameters)\n external\n override\n returns (\n uint256 amountXAdded,\n uint256 amountYAdded,\n uint256 amountXLeft,\n uint256 amountYLeft,\n uint256[] memory depositIds,\n uint256[] memory liquidityMinted\n )\n {\n ILBPair lbPair = ILBPair(\n _getLBPairInformation(\n liquidityParameters.tokenX, liquidityParameters.tokenY, liquidityParameters.binStep\n )\n );\n if (liquidityParameters.tokenX != lbPair.getTokenX()) revert LBRouter__WrongTokenOrder();\n\n _safeTransferFrom(liquidityParameters.tokenX, msg.sender, address(lbPair), liquidityParameters.amountX);\n _safeTransferFrom(liquidityParameters.tokenY, msg.sender, address(lbPair), liquidityParameters.amountY);\n\n (amountXAdded, amountYAdded, amountXLeft, amountYLeft, depositIds, liquidityMinted) =\n _addLiquidity(liquidityParameters, lbPair);\n }\n\n /**\n * @notice Add liquidity with NATIVE while performing safety checks\n * @dev This function is compliant with fee on transfer tokens\n * @param liquidityParameters The liquidity parameters\n * @return amountXAdded The amount of token X added\n * @return amountYAdded The amount of token Y added\n * @return amountXLeft The amount of token X left (sent back to liquidityParameters.refundTo)\n * @return amountYLeft The amount of token Y left (sent back to liquidityParameters.refundTo)\n * @return depositIds The ids of the deposits\n * @return liquidityMinted The amount of liquidity minted\n */\n function addLiquidityNATIVE(LiquidityParameters calldata liquidityParameters)\n external\n payable\n override\n returns (\n uint256 amountXAdded,\n uint256 amountYAdded,\n uint256 amountXLeft,\n uint256 amountYLeft,\n uint256[] memory depositIds,\n uint256[] memory liquidityMinted\n )\n {\n ILBPair _LBPair = ILBPair(\n _getLBPairInformation(\n liquidityParameters.tokenX, liquidityParameters.tokenY, liquidityParameters.binStep\n )\n );\n if (liquidityParameters.tokenX != _LBPair.getTokenX()) revert LBRouter__WrongTokenOrder();\n\n if (liquidityParameters.tokenX == _wnative && liquidityParameters.amountX == msg.value) {\n _safeTransferFrom(liquidityParameters.tokenY, msg.sender, address(_LBPair), liquidityParameters.amountY);\n _wNativeDepositAndTransfer(address(_LBPair), msg.value);\n } else if (liquidityParameters.tokenY == _wnative && liquidityParameters.amountY == msg.value) {\n _safeTransferFrom(liquidityParameters.tokenX, msg.sender, address(_LBPair), liquidityParameters.amountX);\n _wNativeDepositAndTransfer(address(_LBPair), msg.value);\n } else {\n revert LBRouter__WrongNativeLiquidityParameters(\n address(liquidityParameters.tokenX),\n address(liquidityParameters.tokenY),\n liquidityParameters.amountX,\n liquidityParameters.amountY,\n msg.value\n );\n }\n\n (amountXAdded, amountYAdded, amountXLeft, amountYLeft, depositIds, liquidityMinted) =\n _addLiquidity(liquidityParameters, _LBPair);\n }\n\n /**\n * @notice Remove liquidity while performing safety checks\n * @dev This function is compliant with fee on transfer tokens\n * @param tokenX The address of token X\n * @param tokenY The address of token Y\n * @param binStep The bin step of the LBPair\n * @param amountXMin The min amount to receive of token X\n * @param amountYMin The min amount to receive of token Y\n * @param ids The list of ids to burn\n * @param amounts The list of amounts to burn of each id in `_ids`\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountX Amount of token X returned\n * @return amountY Amount of token Y returned\n */\n function removeLiquidity(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n uint256 amountXMin,\n uint256 amountYMin,\n uint256[] memory ids,\n uint256[] memory amounts,\n address to,\n uint256 deadline\n ) external override ensure(deadline) returns (uint256 amountX, uint256 amountY) {\n ILBPair _LBPair = ILBPair(_getLBPairInformation(tokenX, tokenY, binStep));\n bool isWrongOrder = tokenX != _LBPair.getTokenX();\n\n if (isWrongOrder) (amountXMin, amountYMin) = (amountYMin, amountXMin);\n\n (amountX, amountY) = _removeLiquidity(_LBPair, amountXMin, amountYMin, ids, amounts, to);\n\n if (isWrongOrder) (amountX, amountY) = (amountY, amountX);\n }\n\n /**\n * @notice Remove NATIVE liquidity while performing safety checks\n * @dev This function is **NOT** compliant with fee on transfer tokens.\n * This is wanted as it would make users pays the fee on transfer twice,\n * use the `removeLiquidity` function to remove liquidity with fee on transfer tokens.\n * @param token The address of token\n * @param binStep The bin step of the LBPair\n * @param amountTokenMin The min amount to receive of token\n * @param amountNATIVEMin The min amount to receive of NATIVE\n * @param ids The list of ids to burn\n * @param amounts The list of amounts to burn of each id in `_ids`\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountToken Amount of token returned\n * @return amountNATIVE Amount of NATIVE returned\n */\n function removeLiquidityNATIVE(\n IERC20 token,\n uint16 binStep,\n uint256 amountTokenMin,\n uint256 amountNATIVEMin,\n uint256[] memory ids,\n uint256[] memory amounts,\n address payable to,\n uint256 deadline\n ) external override ensure(deadline) returns (uint256 amountToken, uint256 amountNATIVE) {\n ILBPair lbPair = ILBPair(_getLBPairInformation(token, IERC20(_wnative), binStep));\n\n {\n bool isNATIVETokenY = IERC20(_wnative) == lbPair.getTokenY();\n\n if (!isNATIVETokenY) {\n (amountTokenMin, amountNATIVEMin) = (amountNATIVEMin, amountTokenMin);\n }\n\n (uint256 amountX, uint256 amountY) =\n _removeLiquidity(lbPair, amountTokenMin, amountNATIVEMin, ids, amounts, address(this));\n\n (amountToken, amountNATIVE) = isNATIVETokenY ? (amountX, amountY) : (amountY, amountX);\n }\n\n _safeTransfer(token, to, amountToken);\n _wNativeWithdrawAndTransfer(to, amountNATIVE);\n }\n\n /**\n * @notice Swaps exact tokens for tokens while performing safety checks\n * @param amountIn The amount of token to send\n * @param amountOutMin The min amount of token to receive\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountOut Output amount of the swap\n */\n function swapExactTokensForTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n Path memory path,\n address to,\n uint256 deadline\n ) external override ensure(deadline) verifyPathValidity(path) returns (uint256 amountOut) {\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n\n _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn);\n\n amountOut = _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, to);\n\n if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut);\n }\n\n /**\n * @notice Swaps exact tokens for NATIVE while performing safety checks\n * @param amountIn The amount of token to send\n * @param amountOutMinNATIVE The min amount of NATIVE to receive\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountOut Output amount of the swap\n */\n function swapExactTokensForNATIVE(\n uint256 amountIn,\n uint256 amountOutMinNATIVE,\n Path memory path,\n address payable to,\n uint256 deadline\n ) external override ensure(deadline) verifyPathValidity(path) returns (uint256 amountOut) {\n if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {\n revert LBRouter__InvalidTokenPath(address(path.tokenPath[path.pairBinSteps.length]));\n }\n\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n\n _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn);\n\n amountOut = _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, address(this));\n\n if (amountOutMinNATIVE > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut);\n\n _wNativeWithdrawAndTransfer(to, amountOut);\n }\n\n /**\n * @notice Swaps exact NATIVE for tokens while performing safety checks\n * @param amountOutMin The min amount of token to receive\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountOut Output amount of the swap\n */\n function swapExactNATIVEForTokens(uint256 amountOutMin, Path memory path, address to, uint256 deadline)\n external\n payable\n override\n ensure(deadline)\n verifyPathValidity(path)\n returns (uint256 amountOut)\n {\n if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0]));\n\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n\n _wNativeDepositAndTransfer(pairs[0], msg.value);\n\n amountOut = _swapExactTokensForTokens(msg.value, pairs, path.versions, path.tokenPath, to);\n\n if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut);\n }\n\n /**\n * @notice Swaps tokens for exact tokens while performing safety checks\n * @param amountOut The amount of token to receive\n * @param amountInMax The max amount of token to send\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountsIn Input amounts of the swap\n */\n function swapTokensForExactTokens(\n uint256 amountOut,\n uint256 amountInMax,\n Path memory path,\n address to,\n uint256 deadline\n ) external override ensure(deadline) verifyPathValidity(path) returns (uint256[] memory amountsIn) {\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n\n {\n amountsIn = _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut);\n\n if (amountsIn[0] > amountInMax) revert LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]);\n\n _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountsIn[0]);\n\n uint256 _amountOutReal = _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to);\n\n if (_amountOutReal < amountOut) revert LBRouter__InsufficientAmountOut(amountOut, _amountOutReal);\n }\n }\n\n /**\n * @notice Swaps tokens for exact NATIVE while performing safety checks\n * @param amountNATIVEOut The amount of NATIVE to receive\n * @param amountInMax The max amount of token to send\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountsIn path amounts for every step of the swap\n */\n function swapTokensForExactNATIVE(\n uint256 amountNATIVEOut,\n uint256 amountInMax,\n Path memory path,\n address payable to,\n uint256 deadline\n ) external override ensure(deadline) verifyPathValidity(path) returns (uint256[] memory amountsIn) {\n if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {\n revert LBRouter__InvalidTokenPath(address(path.tokenPath[path.pairBinSteps.length]));\n }\n\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n amountsIn = _getAmountsIn(path.versions, pairs, path.tokenPath, amountNATIVEOut);\n\n if (amountsIn[0] > amountInMax) revert LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]);\n\n _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountsIn[0]);\n\n uint256 _amountOutReal =\n _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, address(this));\n\n if (_amountOutReal < amountNATIVEOut) revert LBRouter__InsufficientAmountOut(amountNATIVEOut, _amountOutReal);\n\n _wNativeWithdrawAndTransfer(to, _amountOutReal);\n }\n\n /**\n * @notice Swaps NATIVE for exact tokens while performing safety checks\n * @dev Will refund any NATIVE amount sent in excess to `msg.sender`\n * @param amountOut The amount of tokens to receive\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountsIn path amounts for every step of the swap\n */\n function swapNATIVEForExactTokens(uint256 amountOut, Path memory path, address to, uint256 deadline)\n external\n payable\n override\n ensure(deadline)\n verifyPathValidity(path)\n returns (uint256[] memory amountsIn)\n {\n if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0]));\n\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n amountsIn = _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut);\n\n if (amountsIn[0] > msg.value) revert LBRouter__MaxAmountInExceeded(msg.value, amountsIn[0]);\n\n _wNativeDepositAndTransfer(pairs[0], amountsIn[0]);\n\n uint256 amountOutReal = _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to);\n\n if (amountOutReal < amountOut) revert LBRouter__InsufficientAmountOut(amountOut, amountOutReal);\n\n if (msg.value > amountsIn[0]) _safeTransferNative(msg.sender, msg.value - amountsIn[0]);\n }\n\n /**\n * @notice Swaps exact tokens for tokens while performing safety checks supporting for fee on transfer tokens\n * @param amountIn The amount of token to send\n * @param amountOutMin The min amount of token to receive\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountOut Output amount of the swap\n */\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n Path memory path,\n address to,\n uint256 deadline\n ) external override ensure(deadline) verifyPathValidity(path) returns (uint256 amountOut) {\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n\n IERC20 targetToken = path.tokenPath[pairs.length];\n\n uint256 balanceBefore = targetToken.balanceOf(to);\n\n _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn);\n\n _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, to);\n\n amountOut = targetToken.balanceOf(to) - balanceBefore;\n if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut);\n }\n\n /**\n * @notice Swaps exact tokens for NATIVE while performing safety checks supporting for fee on transfer tokens\n * @param amountIn The amount of token to send\n * @param amountOutMinNATIVE The min amount of NATIVE to receive\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountOut Output amount of the swap\n */\n function swapExactTokensForNATIVESupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMinNATIVE,\n Path memory path,\n address payable to,\n uint256 deadline\n ) external override ensure(deadline) verifyPathValidity(path) returns (uint256 amountOut) {\n if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {\n revert LBRouter__InvalidTokenPath(address(path.tokenPath[path.pairBinSteps.length]));\n }\n\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n\n uint256 balanceBefore = _wnative.balanceOf(address(this));\n\n _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn);\n\n _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, address(this));\n\n amountOut = _wnative.balanceOf(address(this)) - balanceBefore;\n if (amountOutMinNATIVE > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut);\n\n _wNativeWithdrawAndTransfer(to, amountOut);\n }\n\n /**\n * @notice Swaps exact NATIVE for tokens while performing safety checks supporting for fee on transfer tokens\n * @param amountOutMin The min amount of token to receive\n * @param path The path of the swap\n * @param to The address of the recipient\n * @param deadline The deadline of the tx\n * @return amountOut Output amount of the swap\n */\n function swapExactNATIVEForTokensSupportingFeeOnTransferTokens(\n uint256 amountOutMin,\n Path memory path,\n address to,\n uint256 deadline\n ) external payable override ensure(deadline) verifyPathValidity(path) returns (uint256 amountOut) {\n if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0]));\n\n address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath);\n\n IERC20 targetToken = path.tokenPath[pairs.length];\n\n uint256 balanceBefore = targetToken.balanceOf(to);\n\n _wNativeDepositAndTransfer(pairs[0], msg.value);\n\n _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, to);\n\n amountOut = targetToken.balanceOf(to) - balanceBefore;\n if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut);\n }\n\n /**\n * @notice Unstuck tokens that are sent to this contract by mistake\n * @dev Only callable by the factory owner\n * @param token The address of the token\n * @param to The address of the user to send back the tokens\n * @param amount The amount to send\n */\n function sweep(IERC20 token, address to, uint256 amount) external override onlyFactoryOwner {\n if (address(token) == address(0)) {\n amount = amount == type(uint256).max ? address(this).balance : amount;\n\n _safeTransferNative(to, amount);\n } else {\n amount = amount == type(uint256).max ? token.balanceOf(address(this)) : amount;\n\n token.safeTransfer(to, amount);\n }\n }\n\n /**\n * @notice Unstuck LBTokens that are sent to this contract by mistake\n * @dev Only callable by the factory owner\n * @param lbToken The address of the LBToken\n * @param to The address of the user to send back the tokens\n * @param ids The list of token ids\n * @param amounts The list of amounts to send\n */\n function sweepLBToken(ILBToken lbToken, address to, uint256[] calldata ids, uint256[] calldata amounts)\n external\n override\n onlyFactoryOwner\n {\n lbToken.batchTransferFrom(address(this), to, ids, amounts);\n }\n\n /**\n * @notice Helper function to add liquidity\n * @param liq The liquidity parameter\n * @param pair LBPair where liquidity is deposited\n * @return amountXAdded Amount of token X added\n * @return amountYAdded Amount of token Y added\n * @return amountXLeft Amount of token X left\n * @return amountYLeft Amount of token Y left\n * @return depositIds The list of deposit ids\n * @return liquidityMinted The list of liquidity minted\n */\n function _addLiquidity(LiquidityParameters calldata liq, ILBPair pair)\n private\n ensure(liq.deadline)\n returns (\n uint256 amountXAdded,\n uint256 amountYAdded,\n uint256 amountXLeft,\n uint256 amountYLeft,\n uint256[] memory depositIds,\n uint256[] memory liquidityMinted\n )\n {\n unchecked {\n if (liq.deltaIds.length != liq.distributionX.length || liq.deltaIds.length != liq.distributionY.length) {\n revert LBRouter__LengthsMismatch();\n }\n\n if (liq.activeIdDesired > type(uint24).max || liq.idSlippage > type(uint24).max) {\n revert LBRouter__IdDesiredOverflows(liq.activeIdDesired, liq.idSlippage);\n }\n\n bytes32[] memory liquidityConfigs = new bytes32[](liq.deltaIds.length);\n depositIds = new uint256[](liq.deltaIds.length);\n {\n uint256 _activeId = pair.getActiveId();\n if (\n liq.activeIdDesired + liq.idSlippage < _activeId || _activeId + liq.idSlippage < liq.activeIdDesired\n ) {\n revert LBRouter__IdSlippageCaught(liq.activeIdDesired, liq.idSlippage, _activeId);\n }\n\n for (uint256 i; i < liquidityConfigs.length; ++i) {\n int256 _id = int256(_activeId) + liq.deltaIds[i];\n\n if (_id < 0 || uint256(_id) > type(uint24).max) revert LBRouter__IdOverflows(_id);\n depositIds[i] = uint256(_id);\n liquidityConfigs[i] = LiquidityConfigurations.encodeParams(\n uint64(liq.distributionX[i]), uint64(liq.distributionY[i]), uint24(uint256(_id))\n );\n }\n }\n\n bytes32 amountsReceived;\n bytes32 amountsLeft;\n (amountsReceived, amountsLeft, liquidityMinted) = pair.mint(liq.to, liquidityConfigs, liq.refundTo);\n\n bytes32 amountsAdded = amountsReceived.sub(amountsLeft);\n\n amountXAdded = amountsAdded.decodeX();\n amountYAdded = amountsAdded.decodeY();\n\n if (amountXAdded < liq.amountXMin || amountYAdded < liq.amountYMin) {\n revert LBRouter__AmountSlippageCaught(liq.amountXMin, amountXAdded, liq.amountYMin, amountYAdded);\n }\n\n amountXLeft = amountsLeft.decodeX();\n amountYLeft = amountsLeft.decodeY();\n }\n }\n\n /**\n * @notice Helper function to return the amounts in\n * @param versions The list of versions (V1, V2)\n * @param pairs The list of pairs\n * @param tokenPath The swap path\n * @param amountOut The amount out\n * @return amountsIn The list of amounts in\n */\n function _getAmountsIn(\n Version[] memory versions,\n address[] memory pairs,\n IERC20[] memory tokenPath,\n uint256 amountOut\n ) private view returns (uint256[] memory amountsIn) {\n amountsIn = new uint256[](tokenPath.length);\n // Avoid doing -1, as `pairs.length == pairBinSteps.length-1`\n amountsIn[pairs.length] = amountOut;\n\n for (uint256 i = pairs.length; i != 0; i--) {\n IERC20 token = tokenPath[i - 1];\n Version version = versions[i - 1];\n address pair = pairs[i - 1];\n\n if (version == Version.V1) {\n (uint256 reserveIn, uint256 reserveOut,) = ISovrynLBPairV1(pair).getReserves();\n if (token > tokenPath[i]) {\n (reserveIn, reserveOut) = (reserveOut, reserveIn);\n }\n\n uint256 amountOut_ = amountsIn[i];\n amountsIn[i - 1] = uint128(amountOut_.getAmountIn(reserveIn, reserveOut));\n } else {\n (amountsIn[i - 1],,) =\n getSwapIn(ILBPair(pair), uint128(amountsIn[i]), ILBPair(pair).getTokenX() == token);\n }\n }\n }\n\n /**\n * @notice Helper function to remove liquidity\n * @param pair The address of the LBPair\n * @param amountXMin The min amount to receive of token X\n * @param amountYMin The min amount to receive of token Y\n * @param ids The list of ids to burn\n * @param amounts The list of amounts to burn of each id in `_ids`\n * @param to The address of the recipient\n * @return amountX The amount of token X sent by the pair\n * @return amountY The amount of token Y sent by the pair\n */\n function _removeLiquidity(\n ILBPair pair,\n uint256 amountXMin,\n uint256 amountYMin,\n uint256[] memory ids,\n uint256[] memory amounts,\n address to\n ) private returns (uint256 amountX, uint256 amountY) {\n (bytes32[] memory amountsBurned) = pair.burn(msg.sender, to, ids, amounts);\n\n for (uint256 i; i < amountsBurned.length; ++i) {\n amountX += amountsBurned[i].decodeX();\n amountY += amountsBurned[i].decodeY();\n }\n\n if (amountX < amountXMin || amountY < amountYMin) {\n revert LBRouter__AmountSlippageCaught(amountXMin, amountX, amountYMin, amountY);\n }\n }\n\n /**\n * @notice Helper function to swap exact tokens for tokens\n * @param amountIn The amount of token sent\n * @param pairs The list of pairs\n * @param versions The list of versions (V1, V2)\n * @param tokenPath The swap path using the binSteps following `pairBinSteps`\n * @param to The address of the recipient\n * @return amountOut The amount of token sent to `to`\n */\n function _swapExactTokensForTokens(\n uint256 amountIn,\n address[] memory pairs,\n Version[] memory versions,\n IERC20[] memory tokenPath,\n address to\n ) private returns (uint256 amountOut) {\n IERC20 token;\n Version version;\n address recipient;\n address pair;\n\n IERC20 tokenNext = tokenPath[0];\n amountOut = amountIn;\n\n unchecked {\n for (uint256 i; i < pairs.length; ++i) {\n pair = pairs[i];\n version = versions[i];\n\n token = tokenNext;\n tokenNext = tokenPath[i + 1];\n\n recipient = i + 1 == pairs.length ? to : pairs[i + 1];\n\n if (version == Version.V1) {\n (uint256 reserve0, uint256 reserve1,) = ISovrynLBPairV1(pair).getReserves();\n\n if (token < tokenNext) {\n amountOut = amountOut.getAmountOut(reserve0, reserve1);\n ISovrynLBPairV1(pair).swap(0, amountOut, recipient, \"\");\n } else {\n amountOut = amountOut.getAmountOut(reserve1, reserve0);\n ISovrynLBPairV1(pair).swap(amountOut, 0, recipient, \"\");\n }\n } else {\n bool swapForY = tokenNext == ILBPair(pair).getTokenY();\n\n (uint256 amountXOut, uint256 amountYOut) = ILBPair(pair).swap(swapForY, recipient).decode();\n\n if (swapForY) amountOut = amountYOut;\n else amountOut = amountXOut;\n }\n }\n }\n }\n\n /**\n * @notice Helper function to swap tokens for exact tokens\n * @param pairs The array of pairs\n * @param versions The list of versions (V1, V2)\n * @param tokenPath The swap path using the binSteps following `pairBinSteps`\n * @param amountsIn The list of amounts in\n * @param to The address of the recipient\n * @return amountOut The amount of token sent to `to`\n */\n function _swapTokensForExactTokens(\n address[] memory pairs,\n Version[] memory versions,\n IERC20[] memory tokenPath,\n uint256[] memory amountsIn,\n address to\n ) private returns (uint256 amountOut) {\n IERC20 token;\n address recipient;\n address pair;\n Version version;\n\n IERC20 tokenNext = tokenPath[0];\n\n unchecked {\n for (uint256 i; i < pairs.length; ++i) {\n pair = pairs[i];\n version = versions[i];\n\n token = tokenNext;\n tokenNext = tokenPath[i + 1];\n\n recipient = i + 1 == pairs.length ? to : pairs[i + 1];\n\n if (version == Version.V1) {\n amountOut = amountsIn[i + 1];\n if (token < tokenNext) {\n ISovrynLBPairV1(pair).swap(0, amountOut, recipient, \"\");\n } else {\n ISovrynLBPairV1(pair).swap(amountOut, 0, recipient, \"\");\n }\n } else {\n bool swapForY = tokenNext == ILBPair(pair).getTokenY();\n\n (uint256 amountXOut, uint256 amountYOut) = ILBPair(pair).swap(swapForY, recipient).decode();\n\n if (swapForY) amountOut = amountYOut;\n else amountOut = amountXOut;\n }\n }\n }\n }\n\n /**\n * @notice Helper function to swap exact tokens supporting for fee on transfer tokens\n * @param pairs The list of pairs\n * @param versions The list of versions (V1, V2)\n * @param tokenPath The swap path using the binSteps following `pairBinSteps`\n * @param to The address of the recipient\n */\n function _swapSupportingFeeOnTransferTokens(\n address[] memory pairs,\n Version[] memory versions,\n IERC20[] memory tokenPath,\n address to\n ) private {\n IERC20 token;\n Version version;\n address recipient;\n address pair;\n\n IERC20 tokenNext = tokenPath[0];\n\n unchecked {\n for (uint256 i; i < pairs.length; ++i) {\n pair = pairs[i];\n version = versions[i];\n\n token = tokenNext;\n tokenNext = tokenPath[i + 1];\n\n recipient = i + 1 == pairs.length ? to : pairs[i + 1];\n\n if (version == Version.V1) {\n (uint256 _reserve0, uint256 _reserve1,) = ISovrynLBPairV1(pair).getReserves();\n if (token < tokenNext) {\n uint256 amountIn = token.balanceOf(pair) - _reserve0;\n uint256 amountOut = amountIn.getAmountOut(_reserve0, _reserve1);\n\n ISovrynLBPairV1(pair).swap(0, amountOut, recipient, \"\");\n } else {\n uint256 amountIn = token.balanceOf(pair) - _reserve1;\n uint256 amountOut = amountIn.getAmountOut(_reserve1, _reserve0);\n\n ISovrynLBPairV1(pair).swap(amountOut, 0, recipient, \"\");\n }\n } else {\n ILBPair(pair).swap(tokenNext == ILBPair(pair).getTokenY(), recipient);\n }\n }\n }\n }\n\n /**\n * @notice Helper function to return the address of the LBPair\n * @dev Revert if the pair is not created yet\n * @param tokenX The address of the tokenX\n * @param tokenY The address of the tokenY\n * @param binStep The bin step of the LBPair\n * @return lbPair The address of the LBPair\n */\n function _getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep)\n private\n view\n returns (address lbPair)\n {\n lbPair = address(_factory2.getLBPairInformation(tokenX, tokenY, binStep).LBPair);\n\n if (lbPair == address(0)) {\n revert LBRouter__PairNotCreated(address(tokenX), address(tokenY), binStep);\n }\n }\n\n /**\n * @notice Helper function to return the address of the pair (v1 or v2, according to `binStep`)\n * @dev Revert if the pair is not created yet\n * @param tokenX The address of the tokenX\n * @param tokenY The address of the tokenY\n * @param binStep The bin step of the LBPair\n * @param version The version of the LBPair\n * @return pair The address of the pair of binStep `binStep`\n */\n function _getPair(IERC20 tokenX, IERC20 tokenY, uint256 binStep, Version version)\n private\n view\n returns (address pair)\n {\n if (version == Version.V1) {\n pair = _factoryV1.getPair(address(tokenX), address(tokenY));\n if (pair == address(0)) revert LBRouter__PairNotCreated(address(tokenX), address(tokenY), binStep);\n } else {\n pair = address(_getLBPairInformation(tokenX, tokenY, binStep));\n }\n }\n\n /**\n * @notice Helper function to return a list of pairs\n * @param pairBinSteps The list of bin steps\n * @param versions The list of versions (V1, V2)\n * @param tokenPath The swap path using the binSteps following `pairBinSteps`\n * @return pairs The list of pairs\n */\n function _getPairs(uint256[] memory pairBinSteps, Version[] memory versions, IERC20[] memory tokenPath)\n private\n view\n returns (address[] memory pairs)\n {\n pairs = new address[](pairBinSteps.length);\n\n IERC20 token;\n IERC20 tokenNext = tokenPath[0];\n unchecked {\n for (uint256 i; i < pairs.length; ++i) {\n token = tokenNext;\n tokenNext = tokenPath[i + 1];\n\n pairs[i] = _getPair(token, tokenNext, pairBinSteps[i], versions[i]);\n }\n }\n }\n\n /**\n * @notice Helper function to transfer tokens to `to`\n * @param token The address of the token\n * @param to The address of the recipient\n * @param amount The amount to send\n */\n function _safeTransfer(IERC20 token, address to, uint256 amount) private {\n if (amount == 0) return;\n\n token.safeTransfer(to, amount);\n }\n\n /**\n * @notice Helper function to transfer tokens from `from` to `to`\n * @param token The address of the token\n * @param from The address of the sender\n * @param to The address of the recipient\n * @param amount The amount to send\n */\n function _safeTransferFrom(IERC20 token, address from, address to, uint256 amount) private {\n if (amount == 0) return;\n\n token.safeTransferFrom(from, to, amount);\n }\n\n /**\n * @notice Helper function to transfer NATIVE to `to`\n * @param to The address of the recipient\n * @param amount The amount to send\n */\n function _safeTransferNative(address to, uint256 amount) private {\n if (amount == 0) return;\n\n (bool success,) = to.call{value: amount}(\"\");\n if (!success) revert LBRouter__FailedToSendNATIVE(to, amount);\n }\n\n /**\n * @notice Helper function to deposit and transfer WNative to `to`\n * @param to The address of the recipient\n * @param amount The amount to deposit and transfer\n */\n function _wNativeDepositAndTransfer(address to, uint256 amount) private {\n if (amount == 0) return;\n\n _wnative.deposit{value: amount}();\n IERC20(_wnative).safeTransfer(to, amount);\n }\n\n /**\n * @notice Helper function to withdraw and transfer WNative to `to`\n * @param to The address of the recipient\n * @param amount The amount to withdraw and transfer\n */\n function _wNativeWithdrawAndTransfer(address to, uint256 amount) private {\n if (amount == 0) return;\n\n _wnative.withdraw(amount);\n _safeTransferNative(to, amount);\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reininitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n assembly {\n $.slot := INITIALIZABLE_STORAGE\n }\n }\n}\n" + }, + "src/interfaces/IWNATIVE.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title WNATIVE Interface\n * @notice Required interface of Wrapped NATIVE contract\n */\ninterface IWNATIVE is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256) external;\n}\n" + }, + "src/interfaces/ILBFactory.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {ILBHooks} from \"./ILBHooks.sol\";\nimport {ILBPair} from \"./ILBPair.sol\";\n\n/**\n * @title Liquidity Book Factory Interface\n * @notice Required interface of LBFactory contract\n */\ninterface ILBFactory {\n error LBFactory__IdenticalAddresses(IERC20 token);\n error LBFactory__QuoteAssetNotWhitelisted(IERC20 quoteAsset);\n error LBFactory__QuoteAssetAlreadyWhitelisted(IERC20 quoteAsset);\n error LBFactory__AddressZero();\n error LBFactory__LBPairAlreadyExists(IERC20 tokenX, IERC20 tokenY, uint256 _binStep);\n error LBFactory__LBPairDoesNotExist(IERC20 tokenX, IERC20 tokenY, uint256 binStep);\n error LBFactory__LBPairNotCreated(IERC20 tokenX, IERC20 tokenY, uint256 binStep);\n error LBFactory__FlashLoanFeeAboveMax(uint256 fees, uint256 maxFees);\n error LBFactory__BinStepTooLow(uint256 binStep);\n error LBFactory__PresetIsLockedForUsers(address user, uint256 binStep);\n error LBFactory__LBPairIgnoredIsAlreadyInTheSameState();\n error LBFactory__BinStepHasNoPreset(uint256 binStep);\n error LBFactory__PresetOpenStateIsAlreadyInTheSameState();\n error LBFactory__SameFeeRecipient(address feeRecipient);\n error LBFactory__SameFlashLoanFee(uint256 flashLoanFee);\n error LBFactory__LBPairSafetyCheckFailed(address LBPairImplementation);\n error LBFactory__SameImplementation(address LBPairImplementation);\n error LBFactory__SameHooksImplementation(address hooksImplementation);\n error LBFactory__SameHooksParameters(bytes32 hooksParameters);\n error LBFactory__InvalidHooksParameters();\n error LBFactory__CannotGrantDefaultAdminRole();\n\n /**\n * @dev Structure to store the LBPair information, such as:\n * binStep: The bin step of the LBPair\n * LBPair: The address of the LBPair\n * createdByOwner: Whether the pair was created by the owner of the factory\n * ignoredForRouting: Whether the pair is ignored for routing or not. An ignored pair will not be explored during routes finding\n */\n struct LBPairInformation {\n uint16 binStep;\n ILBPair LBPair;\n bool createdByOwner;\n bool ignoredForRouting;\n }\n\n event LBPairCreated(\n IERC20 indexed tokenX, IERC20 indexed tokenY, uint256 indexed binStep, ILBPair LBPair, uint256 pid\n );\n\n event FeeRecipientSet(address oldRecipient, address newRecipient);\n\n event FlashLoanFeeSet(uint256 oldFlashLoanFee, uint256 newFlashLoanFee);\n\n event LBPairImplementationSet(address oldLBPairImplementation, address LBPairImplementation);\n\n event LBPairIgnoredStateChanged(ILBPair indexed LBPair, bool ignored);\n\n event PresetSet(\n uint256 indexed binStep,\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxVolatilityAccumulator\n );\n\n event PresetOpenStateChanged(uint256 indexed binStep, bool indexed isOpen);\n\n event PresetRemoved(uint256 indexed binStep);\n\n event QuoteAssetAdded(IERC20 indexed quoteAsset);\n\n event QuoteAssetRemoved(IERC20 indexed quoteAsset);\n\n function getMinBinStep() external pure returns (uint256);\n\n function getFeeRecipient() external view returns (address);\n\n function getMaxFlashLoanFee() external pure returns (uint256);\n\n function getFlashLoanFee() external view returns (uint256);\n\n function getLBPairBeacon() external view returns (address);\n\n function getNumberOfLBPairs() external view returns (uint256);\n\n function getLBPairAtIndex(uint256 id) external returns (ILBPair);\n\n function getNumberOfQuoteAssets() external view returns (uint256);\n\n function getQuoteAssetAtIndex(uint256 index) external view returns (IERC20);\n\n function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) external;\n\n function isQuoteAsset(IERC20 token) external view returns (bool);\n\n function getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep)\n external\n view\n returns (LBPairInformation memory);\n\n function getPreset(uint256 binStep)\n external\n view\n returns (\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxAccumulator,\n bool isOpen\n );\n\n function getAllBinSteps() external view returns (uint256[] memory presetsBinStep);\n\n function getOpenBinSteps() external view returns (uint256[] memory openBinStep);\n\n function getAllLBPairs(IERC20 tokenX, IERC20 tokenY)\n external\n view\n returns (LBPairInformation[] memory LBPairsBinStep);\n\n function getPauserRole() external pure returns (bytes32);\n\n function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)\n external\n returns (ILBPair pair);\n\n function setLBPairIgnored(IERC20 tokenX, IERC20 tokenY, uint16 binStep, bool ignored) external;\n\n function setPreset(\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator,\n bool isOpen\n ) external;\n\n function setPresetOpenState(uint16 binStep, bool isOpen) external;\n\n function removePreset(uint16 binStep) external;\n\n function setFeesParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) external;\n\n function setLBHooksParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n bytes32 hooksParameters,\n bytes memory onHooksSetData\n ) external;\n\n function removeLBHooksOnPair(IERC20 tokenX, IERC20 tokenY, uint16 binStep) external;\n\n function setFeeRecipient(address feeRecipient) external;\n\n function setFlashLoanFee(uint256 flashLoanFee) external;\n\n function addQuoteAsset(IERC20 quoteAsset) external;\n\n function removeQuoteAsset(IERC20 quoteAsset) external;\n\n function forceDecay(ILBPair lbPair) external;\n}\n" + }, + "src/interfaces/ILBLegacyFactory.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {ILBLegacyPair} from \"./ILBLegacyPair.sol\";\n\n/// @title Liquidity Book Factory Interface\n/// @notice Required interface of LBFactory contract\ninterface ILBLegacyFactory {\n /// @dev Structure to store the LBPair information, such as:\n /// - binStep: The bin step of the LBPair\n /// - LBPair: The address of the LBPair\n /// - createdByOwner: Whether the pair was created by the owner of the factory\n /// - ignoredForRouting: Whether the pair is ignored for routing or not. An ignored pair will not be explored during routes finding\n struct LBPairInformation {\n uint16 binStep;\n ILBLegacyPair LBPair;\n bool createdByOwner;\n bool ignoredForRouting;\n }\n\n event LBPairCreated(\n IERC20 indexed tokenX, IERC20 indexed tokenY, uint256 indexed binStep, ILBLegacyPair LBPair, uint256 pid\n );\n\n event FeeRecipientSet(address oldRecipient, address newRecipient);\n\n event FlashLoanFeeSet(uint256 oldFlashLoanFee, uint256 newFlashLoanFee);\n\n event FeeParametersSet(\n address indexed sender,\n ILBLegacyPair indexed LBPair,\n uint256 binStep,\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxVolatilityAccumulator\n );\n\n event FactoryLockedStatusUpdated(bool unlocked);\n\n event LBPairImplementationSet(address oldLBPairImplementation, address LBPairImplementation);\n\n event LBPairIgnoredStateChanged(ILBLegacyPair indexed LBPair, bool ignored);\n\n event PresetSet(\n uint256 indexed binStep,\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxVolatilityAccumulator,\n uint256 sampleLifetime\n );\n\n event PresetRemoved(uint256 indexed binStep);\n\n event QuoteAssetAdded(IERC20 indexed quoteAsset);\n\n event QuoteAssetRemoved(IERC20 indexed quoteAsset);\n\n function MAX_FEE() external pure returns (uint256);\n\n function MIN_BIN_STEP() external pure returns (uint256);\n\n function MAX_BIN_STEP() external pure returns (uint256);\n\n function MAX_PROTOCOL_SHARE() external pure returns (uint256);\n\n function LBPairImplementation() external view returns (address);\n\n function getNumberOfQuoteAssets() external view returns (uint256);\n\n function getQuoteAsset(uint256 index) external view returns (IERC20);\n\n function isQuoteAsset(IERC20 token) external view returns (bool);\n\n function feeRecipient() external view returns (address);\n\n function flashLoanFee() external view returns (uint256);\n\n function creationUnlocked() external view returns (bool);\n\n function allLBPairs(uint256 id) external returns (ILBLegacyPair);\n\n function getNumberOfLBPairs() external view returns (uint256);\n\n function getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep)\n external\n view\n returns (LBPairInformation memory);\n\n function getPreset(uint16 binStep)\n external\n view\n returns (\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxAccumulator,\n uint256 sampleLifetime\n );\n\n function getAllBinSteps() external view returns (uint256[] memory presetsBinStep);\n\n function getAllLBPairs(IERC20 tokenX, IERC20 tokenY)\n external\n view\n returns (LBPairInformation[] memory LBPairsBinStep);\n\n function setLBPairImplementation(address LBPairImplementation) external;\n\n function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)\n external\n returns (ILBLegacyPair pair);\n\n function setLBPairIgnored(IERC20 tokenX, IERC20 tokenY, uint256 binStep, bool ignored) external;\n\n function setPreset(\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator,\n uint16 sampleLifetime\n ) external;\n\n function removePreset(uint16 binStep) external;\n\n function setFeesParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) external;\n\n function setFeeRecipient(address feeRecipient) external;\n\n function setFlashLoanFee(uint256 flashLoanFee) external;\n\n function setFactoryLockedState(bool locked) external;\n\n function addQuoteAsset(IERC20 quoteAsset) external;\n\n function removeQuoteAsset(IERC20 quoteAsset) external;\n\n function forceDecay(ILBLegacyPair LBPair) external;\n}\n" + }, + "src/interfaces/ISovrynLBFactoryV1.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.10;\n\n/// @title Sovryn LB V1 Factory Interface\n/// @notice Interface to interact with Sovryn LB V1 Factory\ninterface ISovrynLBFactoryV1 {\n event PairCreated(address indexed token0, address indexed token1, address pair, uint256);\n\n function feeTo() external view returns (address);\n\n function feeToSetter() external view returns (address);\n\n function migrator() external view returns (address);\n\n function getPair(address tokenA, address tokenB) external view returns (address pair);\n\n function allPairs(uint256) external view returns (address pair);\n\n function allPairsLength() external view returns (uint256);\n\n function createPair(address tokenA, address tokenB) external returns (address pair);\n\n function setFeeTo(address) external;\n\n function setFeeToSetter(address) external;\n\n function setMigrator(address) external;\n}\n" + }, + "src/interfaces/ILBLegacyRouter.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {ILBFactory} from \"./ILBFactory.sol\";\nimport {ISovrynLBFactoryV1} from \"./ISovrynLBFactoryV1.sol\";\nimport {ILBLegacyPair} from \"./ILBLegacyPair.sol\";\nimport {ILBToken} from \"./ILBToken.sol\";\nimport {IWNATIVE} from \"./IWNATIVE.sol\";\n\n/// @title Liquidity Book Router Interface\n/// @notice Required interface of LBRouter contract\ninterface ILBLegacyRouter {\n struct LiquidityParameters {\n IERC20 tokenX;\n IERC20 tokenY;\n uint256 binStep;\n uint256 amountX;\n uint256 amountY;\n uint256 amountXMin;\n uint256 amountYMin;\n uint256 activeIdDesired;\n uint256 idSlippage;\n int256[] deltaIds;\n uint256[] distributionX;\n uint256[] distributionY;\n address to;\n uint256 deadline;\n }\n\n function factory() external view returns (address);\n\n function wavax() external view returns (address);\n\n function oldFactory() external view returns (address);\n\n function getIdFromPrice(ILBLegacyPair LBPair, uint256 price) external view returns (uint24);\n\n function getPriceFromId(ILBLegacyPair LBPair, uint24 id) external view returns (uint256);\n\n function getSwapIn(ILBLegacyPair lbPair, uint256 amountOut, bool swapForY)\n external\n view\n returns (uint256 amountIn, uint256 feesIn);\n\n function getSwapOut(ILBLegacyPair lbPair, uint256 amountIn, bool swapForY)\n external\n view\n returns (uint256 amountOut, uint256 feesIn);\n\n function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)\n external\n returns (ILBLegacyPair pair);\n\n function addLiquidity(LiquidityParameters calldata liquidityParameters)\n external\n returns (uint256[] memory depositIds, uint256[] memory liquidityMinted);\n\n function addLiquidityAVAX(LiquidityParameters calldata liquidityParameters)\n external\n payable\n returns (uint256[] memory depositIds, uint256[] memory liquidityMinted);\n\n function removeLiquidity(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n uint256 amountXMin,\n uint256 amountYMin,\n uint256[] memory ids,\n uint256[] memory amounts,\n address to,\n uint256 deadline\n ) external returns (uint256 amountX, uint256 amountY);\n\n function removeLiquidityAVAX(\n IERC20 token,\n uint16 binStep,\n uint256 amountTokenMin,\n uint256 amountAVAXMin,\n uint256[] memory ids,\n uint256[] memory amounts,\n address payable to,\n uint256 deadline\n ) external returns (uint256 amountToken, uint256 amountAVAX);\n\n function swapExactTokensForTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactTokensForAVAX(\n uint256 amountIn,\n uint256 amountOutMinAVAX,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address payable to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactAVAXForTokens(\n uint256 amountOutMin,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address to,\n uint256 deadline\n ) external payable returns (uint256 amountOut);\n\n function swapTokensForExactTokens(\n uint256 amountOut,\n uint256 amountInMax,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address to,\n uint256 deadline\n ) external returns (uint256[] memory amountsIn);\n\n function swapTokensForExactAVAX(\n uint256 amountOut,\n uint256 amountInMax,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address payable to,\n uint256 deadline\n ) external returns (uint256[] memory amountsIn);\n\n function swapAVAXForExactTokens(\n uint256 amountOut,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address to,\n uint256 deadline\n ) external payable returns (uint256[] memory amountsIn);\n\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactTokensForAVAXSupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMinAVAX,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address payable to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactAVAXForTokensSupportingFeeOnTransferTokens(\n uint256 amountOutMin,\n uint256[] memory pairBinSteps,\n IERC20[] memory tokenPath,\n address to,\n uint256 deadline\n ) external payable returns (uint256 amountOut);\n\n function sweep(IERC20 token, address to, uint256 amount) external;\n\n function sweepLBToken(ILBToken _lbToken, address _to, uint256[] calldata _ids, uint256[] calldata _amounts)\n external;\n}\n" + }, + "src/interfaces/ILBRouter.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {ISovrynLBFactoryV1} from \"./ISovrynLBFactoryV1.sol\";\nimport {ILBFactory} from \"./ILBFactory.sol\";\nimport {ILBLegacyFactory} from \"./ILBLegacyFactory.sol\";\nimport {ILBLegacyRouter} from \"./ILBLegacyRouter.sol\";\nimport {ILBPair} from \"./ILBPair.sol\";\nimport {ILBToken} from \"./ILBToken.sol\";\nimport {IWNATIVE} from \"./IWNATIVE.sol\";\n\n/**\n * @title Liquidity Book Router Interface\n * @notice Required interface of LBRouter contract\n */\ninterface ILBRouter {\n error LBRouter__SenderIsNotWNATIVE();\n error LBRouter__PairNotCreated(address tokenX, address tokenY, uint256 binStep);\n error LBRouter__WrongAmounts(uint256 amount, uint256 reserve);\n error LBRouter__SwapOverflows(uint256 id);\n error LBRouter__BrokenSwapSafetyCheck();\n error LBRouter__NotFactoryOwner();\n error LBRouter__TooMuchTokensIn(uint256 excess);\n error LBRouter__BinReserveOverflows(uint256 id);\n error LBRouter__IdOverflows(int256 id);\n error LBRouter__LengthsMismatch();\n error LBRouter__WrongTokenOrder();\n error LBRouter__IdSlippageCaught(uint256 activeIdDesired, uint256 idSlippage, uint256 activeId);\n error LBRouter__AmountSlippageCaught(uint256 amountXMin, uint256 amountX, uint256 amountYMin, uint256 amountY);\n error LBRouter__IdDesiredOverflows(uint256 idDesired, uint256 idSlippage);\n error LBRouter__FailedToSendNATIVE(address recipient, uint256 amount);\n error LBRouter__DeadlineExceeded(uint256 deadline, uint256 currentTimestamp);\n error LBRouter__AmountSlippageBPTooBig(uint256 amountSlippage);\n error LBRouter__InsufficientAmountOut(uint256 amountOutMin, uint256 amountOut);\n error LBRouter__MaxAmountInExceeded(uint256 amountInMax, uint256 amountIn);\n error LBRouter__InvalidTokenPath(address wrongToken);\n error LBRouter__InvalidVersion(uint256 version);\n error LBRouter__WrongNativeLiquidityParameters(\n address tokenX, address tokenY, uint256 amountX, uint256 amountY, uint256 msgValue\n );\n\n /**\n * @dev This enum represents the version of the pair requested\n * - V1: Sovryn LB V1 pair\n * - V2: LB pair V2.2 (current version)\n */\n enum Version {\n V1,\n V2\n }\n\n /**\n * @dev The liquidity parameters, such as:\n * - tokenX: The address of token X\n * - tokenY: The address of token Y\n * - binStep: The bin step of the pair\n * - amountX: The amount to send of token X\n * - amountY: The amount to send of token Y\n * - amountXMin: The min amount of token X added to liquidity\n * - amountYMin: The min amount of token Y added to liquidity\n * - activeIdDesired: The active id that user wants to add liquidity from\n * - idSlippage: The number of id that are allowed to slip\n * - deltaIds: The list of delta ids to add liquidity (`deltaId = activeId - desiredId`)\n * - distributionX: The distribution of tokenX with sum(distributionX) = 1e18 (100%) or 0 (0%)\n * - distributionY: The distribution of tokenY with sum(distributionY) = 1e18 (100%) or 0 (0%)\n * - to: The address of the recipient\n * - refundTo: The address of the recipient of the refunded tokens if too much tokens are sent\n * - deadline: The deadline of the transaction\n */\n struct LiquidityParameters {\n IERC20 tokenX;\n IERC20 tokenY;\n uint256 binStep;\n uint256 amountX;\n uint256 amountY;\n uint256 amountXMin;\n uint256 amountYMin;\n uint256 activeIdDesired;\n uint256 idSlippage;\n int256[] deltaIds;\n uint256[] distributionX;\n uint256[] distributionY;\n address to;\n address refundTo;\n uint256 deadline;\n }\n\n /**\n * @dev The path parameters, such as:\n * - pairBinSteps: The list of bin steps of the pairs to go through\n * - versions: The list of versions of the pairs to go through\n * - tokenPath: The list of tokens in the path to go through\n */\n struct Path {\n uint256[] pairBinSteps;\n Version[] versions;\n IERC20[] tokenPath;\n }\n\n function getFactory() external view returns (ILBFactory);\n\n function getV1Factory() external view returns (ISovrynLBFactoryV1);\n\n function getWNATIVE() external view returns (IWNATIVE);\n\n function getIdFromPrice(ILBPair LBPair, uint256 price) external view returns (uint24);\n\n function getPriceFromId(ILBPair LBPair, uint24 id) external view returns (uint256);\n\n function getSwapIn(ILBPair LBPair, uint128 amountOut, bool swapForY)\n external\n view\n returns (uint128 amountIn, uint128 amountOutLeft, uint128 fee);\n\n function getSwapOut(ILBPair LBPair, uint128 amountIn, bool swapForY)\n external\n view\n returns (uint128 amountInLeft, uint128 amountOut, uint128 fee);\n\n function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)\n external\n returns (ILBPair pair);\n\n function addLiquidity(LiquidityParameters calldata liquidityParameters)\n external\n returns (\n uint256 amountXAdded,\n uint256 amountYAdded,\n uint256 amountXLeft,\n uint256 amountYLeft,\n uint256[] memory depositIds,\n uint256[] memory liquidityMinted\n );\n\n function addLiquidityNATIVE(LiquidityParameters calldata liquidityParameters)\n external\n payable\n returns (\n uint256 amountXAdded,\n uint256 amountYAdded,\n uint256 amountXLeft,\n uint256 amountYLeft,\n uint256[] memory depositIds,\n uint256[] memory liquidityMinted\n );\n\n function removeLiquidity(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n uint256 amountXMin,\n uint256 amountYMin,\n uint256[] memory ids,\n uint256[] memory amounts,\n address to,\n uint256 deadline\n ) external returns (uint256 amountX, uint256 amountY);\n\n function removeLiquidityNATIVE(\n IERC20 token,\n uint16 binStep,\n uint256 amountTokenMin,\n uint256 amountNATIVEMin,\n uint256[] memory ids,\n uint256[] memory amounts,\n address payable to,\n uint256 deadline\n ) external returns (uint256 amountToken, uint256 amountNATIVE);\n\n function swapExactTokensForTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n Path memory path,\n address to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactTokensForNATIVE(\n uint256 amountIn,\n uint256 amountOutMinNATIVE,\n Path memory path,\n address payable to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactNATIVEForTokens(uint256 amountOutMin, Path memory path, address to, uint256 deadline)\n external\n payable\n returns (uint256 amountOut);\n\n function swapTokensForExactTokens(\n uint256 amountOut,\n uint256 amountInMax,\n Path memory path,\n address to,\n uint256 deadline\n ) external returns (uint256[] memory amountsIn);\n\n function swapTokensForExactNATIVE(\n uint256 amountOut,\n uint256 amountInMax,\n Path memory path,\n address payable to,\n uint256 deadline\n ) external returns (uint256[] memory amountsIn);\n\n function swapNATIVEForExactTokens(uint256 amountOut, Path memory path, address to, uint256 deadline)\n external\n payable\n returns (uint256[] memory amountsIn);\n\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMin,\n Path memory path,\n address to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactTokensForNATIVESupportingFeeOnTransferTokens(\n uint256 amountIn,\n uint256 amountOutMinNATIVE,\n Path memory path,\n address payable to,\n uint256 deadline\n ) external returns (uint256 amountOut);\n\n function swapExactNATIVEForTokensSupportingFeeOnTransferTokens(\n uint256 amountOutMin,\n Path memory path,\n address to,\n uint256 deadline\n ) external payable returns (uint256 amountOut);\n\n function sweep(IERC20 token, address to, uint256 amount) external;\n\n function sweepLBToken(ILBToken _lbToken, address _to, uint256[] calldata _ids, uint256[] calldata _amounts)\n external;\n}\n" + }, + "src/interfaces/ILBToken.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Token Interface\n * @notice Interface to interact with the LBToken.\n */\ninterface ILBToken {\n error LBToken__AddressThisOrZero();\n error LBToken__InvalidLength();\n error LBToken__SelfApproval(address owner);\n error LBToken__SpenderNotApproved(address from, address spender);\n error LBToken__TransferExceedsBalance(address from, uint256 id, uint256 amount);\n error LBToken__BurnExceedsBalance(address from, uint256 id, uint256 amount);\n\n event TransferBatch(\n address indexed sender, address indexed from, address indexed to, uint256[] ids, uint256[] amounts\n );\n\n event ApprovalForAll(address indexed account, address indexed sender, bool approved);\n\n function name() external view returns (string memory);\n\n function symbol() external view returns (string memory);\n\n function totalSupply(uint256 id) external view returns (uint256);\n\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n external\n view\n returns (uint256[] memory);\n\n function isApprovedForAll(address owner, address spender) external view returns (bool);\n\n function approveForAll(address spender, bool approved) external;\n\n function batchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts) external;\n}\n" + }, + "src/interfaces/ILBLegacyPair.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {ILBLegacyToken} from \"./ILBLegacyToken.sol\";\n\n/// @title Liquidity Book Pair V2 Interface\n/// @notice Required interface of LBPair contract\ninterface ILBLegacyPair is ILBLegacyToken {\n /// @dev Structure to store the protocol fees:\n /// - binStep: The bin step\n /// - baseFactor: The base factor\n /// - filterPeriod: The filter period, where the fees stays constant\n /// - decayPeriod: The decay period, where the fees are halved\n /// - reductionFactor: The reduction factor, used to calculate the reduction of the accumulator\n /// - variableFeeControl: The variable fee control, used to control the variable fee, can be 0 to disable them\n /// - protocolShare: The share of fees sent to protocol\n /// - maxVolatilityAccumulated: The max value of volatility accumulated\n /// - volatilityAccumulated: The value of volatility accumulated\n /// - volatilityReference: The value of volatility reference\n /// - indexRef: The index reference\n /// - time: The last time the accumulator was called\n struct FeeParameters {\n // 144 lowest bits in slot\n uint16 binStep;\n uint16 baseFactor;\n uint16 filterPeriod;\n uint16 decayPeriod;\n uint16 reductionFactor;\n uint24 variableFeeControl;\n uint16 protocolShare;\n uint24 maxVolatilityAccumulated;\n // 112 highest bits in slot\n uint24 volatilityAccumulated;\n uint24 volatilityReference;\n uint24 indexRef;\n uint40 time;\n }\n\n /// @dev Structure used during swaps to distributes the fees:\n /// - total: The total amount of fees\n /// - protocol: The amount of fees reserved for protocol\n struct FeesDistribution {\n uint128 total;\n uint128 protocol;\n }\n\n /// @dev Structure to store the reserves of bins:\n /// - reserveX: The current reserve of tokenX of the bin\n /// - reserveY: The current reserve of tokenY of the bin\n struct Bin {\n uint112 reserveX;\n uint112 reserveY;\n uint256 accTokenXPerShare;\n uint256 accTokenYPerShare;\n }\n\n /// @dev Structure to store the information of the pair such as:\n /// slot0:\n /// - activeId: The current id used for swaps, this is also linked with the price\n /// - reserveX: The sum of amounts of tokenX across all bins\n /// slot1:\n /// - reserveY: The sum of amounts of tokenY across all bins\n /// - oracleSampleLifetime: The lifetime of an oracle sample\n /// - oracleSize: The current size of the oracle, can be increase by users\n /// - oracleActiveSize: The current active size of the oracle, composed only from non empty data sample\n /// - oracleLastTimestamp: The current last timestamp at which a sample was added to the circular buffer\n /// - oracleId: The current id of the oracle\n /// slot2:\n /// - feesX: The current amount of fees to distribute in tokenX (total, protocol)\n /// slot3:\n /// - feesY: The current amount of fees to distribute in tokenY (total, protocol)\n struct PairInformation {\n uint24 activeId;\n uint136 reserveX;\n uint136 reserveY;\n uint16 oracleSampleLifetime;\n uint16 oracleSize;\n uint16 oracleActiveSize;\n uint40 oracleLastTimestamp;\n uint16 oracleId;\n FeesDistribution feesX;\n FeesDistribution feesY;\n }\n\n /// @dev Structure to store the debts of users\n /// - debtX: The tokenX's debt\n /// - debtY: The tokenY's debt\n struct Debts {\n uint256 debtX;\n uint256 debtY;\n }\n\n /// @dev Structure to store fees:\n /// - tokenX: The amount of fees of token X\n /// - tokenY: The amount of fees of token Y\n struct Fees {\n uint128 tokenX;\n uint128 tokenY;\n }\n\n /// @dev Structure to minting informations:\n /// - amountXIn: The amount of token X sent\n /// - amountYIn: The amount of token Y sent\n /// - amountXAddedToPair: The amount of token X that have been actually added to the pair\n /// - amountYAddedToPair: The amount of token Y that have been actually added to the pair\n /// - activeFeeX: Fees X currently generated\n /// - activeFeeY: Fees Y currently generated\n /// - totalDistributionX: Total distribution of token X. Should be 1e18 (100%) or 0 (0%)\n /// - totalDistributionY: Total distribution of token Y. Should be 1e18 (100%) or 0 (0%)\n /// - id: Id of the current working bin when looping on the distribution array\n /// - amountX: The amount of token X deposited in the current bin\n /// - amountY: The amount of token Y deposited in the current bin\n /// - distributionX: Distribution of token X for the current working bin\n /// - distributionY: Distribution of token Y for the current working bin\n struct MintInfo {\n uint256 amountXIn;\n uint256 amountYIn;\n uint256 amountXAddedToPair;\n uint256 amountYAddedToPair;\n uint256 activeFeeX;\n uint256 activeFeeY;\n uint256 totalDistributionX;\n uint256 totalDistributionY;\n uint256 id;\n uint256 amountX;\n uint256 amountY;\n uint256 distributionX;\n uint256 distributionY;\n }\n\n event Swap(\n address indexed sender,\n address indexed recipient,\n uint256 indexed id,\n bool swapForY,\n uint256 amountIn,\n uint256 amountOut,\n uint256 volatilityAccumulated,\n uint256 fees\n );\n\n event FlashLoan(address indexed sender, address indexed receiver, IERC20 token, uint256 amount, uint256 fee);\n\n event CompositionFee(\n address indexed sender, address indexed recipient, uint256 indexed id, uint256 feesX, uint256 feesY\n );\n\n event DepositedToBin(\n address indexed sender, address indexed recipient, uint256 indexed id, uint256 amountX, uint256 amountY\n );\n\n event WithdrawnFromBin(\n address indexed sender, address indexed recipient, uint256 indexed id, uint256 amountX, uint256 amountY\n );\n\n event FeesCollected(address indexed sender, address indexed recipient, uint256 amountX, uint256 amountY);\n\n event ProtocolFeesCollected(address indexed sender, address indexed recipient, uint256 amountX, uint256 amountY);\n\n event OracleSizeIncreased(uint256 previousSize, uint256 newSize);\n\n function tokenX() external view returns (IERC20);\n\n function tokenY() external view returns (IERC20);\n\n function factory() external view returns (address);\n\n function getReservesAndId() external view returns (uint256 reserveX, uint256 reserveY, uint256 activeId);\n\n function getGlobalFees()\n external\n view\n returns (uint128 feesXTotal, uint128 feesYTotal, uint128 feesXProtocol, uint128 feesYProtocol);\n\n function getOracleParameters()\n external\n view\n returns (\n uint256 oracleSampleLifetime,\n uint256 oracleSize,\n uint256 oracleActiveSize,\n uint256 oracleLastTimestamp,\n uint256 oracleId,\n uint256 min,\n uint256 max\n );\n\n function getOracleSampleFrom(uint256 timeDelta)\n external\n view\n returns (uint256 cumulativeId, uint256 cumulativeAccumulator, uint256 cumulativeBinCrossed);\n\n function feeParameters() external view returns (FeeParameters memory);\n\n function findFirstNonEmptyBinId(uint24 id_, bool sentTokenY) external view returns (uint24 id);\n\n function getBin(uint24 id) external view returns (uint256 reserveX, uint256 reserveY);\n\n function pendingFees(address account, uint256[] memory ids)\n external\n view\n returns (uint256 amountX, uint256 amountY);\n\n function swap(bool sentTokenY, address to) external returns (uint256 amountXOut, uint256 amountYOut);\n\n function flashLoan(address receiver, IERC20 token, uint256 amount, bytes calldata data) external;\n\n function mint(\n uint256[] calldata ids,\n uint256[] calldata distributionX,\n uint256[] calldata distributionY,\n address to\n ) external returns (uint256 amountXAddedToPair, uint256 amountYAddedToPair, uint256[] memory liquidityMinted);\n\n function burn(uint256[] calldata ids, uint256[] calldata amounts, address to)\n external\n returns (uint256 amountX, uint256 amountY);\n\n function increaseOracleLength(uint16 newSize) external;\n\n function collectFees(address account, uint256[] calldata ids) external returns (uint256 amountX, uint256 amountY);\n\n function collectProtocolFees() external returns (uint128 amountX, uint128 amountY);\n\n function setFeesParameters(bytes32 packedFeeParameters) external;\n\n function forceDecay() external;\n\n function initialize(\n IERC20 tokenX,\n IERC20 tokenY,\n uint24 activeId,\n uint16 sampleLifetime,\n bytes32 packedFeeParameters\n ) external;\n}\n" + }, + "src/interfaces/ILBPair.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {Hooks} from \"../libraries/Hooks.sol\";\nimport {ILBFactory} from \"./ILBFactory.sol\";\nimport {ILBFlashLoanCallback} from \"./ILBFlashLoanCallback.sol\";\nimport {ILBToken} from \"./ILBToken.sol\";\n\ninterface ILBPair is ILBToken {\n error LBPair__ZeroBorrowAmount();\n error LBPair__AddressZero();\n error LBPair__EmptyMarketConfigs();\n error LBPair__FlashLoanCallbackFailed();\n error LBPair__FlashLoanInsufficientAmount();\n error LBPair__InsufficientAmountIn();\n error LBPair__InsufficientAmountOut();\n error LBPair__InvalidInput();\n error LBPair__InvalidStaticFeeParameters();\n error LBPair__OnlyFactory();\n error LBPair__OnlyProtocolFeeRecipient();\n error LBPair__OutOfLiquidity();\n error LBPair__TokenNotSupported();\n error LBPair__ZeroAmount(uint24 id);\n error LBPair__ZeroAmountsOut(uint24 id);\n error LBPair__ZeroShares(uint24 id);\n error LBPair__MaxTotalFeeExceeded();\n error LBPair__InvalidHooks();\n\n struct MintArrays {\n uint256[] ids;\n bytes32[] amounts;\n uint256[] liquidityMinted;\n }\n\n event DepositedToBins(address indexed sender, address indexed to, uint256[] ids, bytes32[] amounts);\n\n event WithdrawnFromBins(address indexed sender, address indexed to, uint256[] ids, bytes32[] amounts);\n\n event CompositionFees(address indexed sender, uint24 id, bytes32 totalFees, bytes32 protocolFees);\n\n event CollectedProtocolFees(address indexed feeRecipient, bytes32 protocolFees);\n\n event Swap(\n address indexed sender,\n address indexed to,\n uint24 id,\n bytes32 amountsIn,\n bytes32 amountsOut,\n uint24 volatilityAccumulator,\n bytes32 totalFees,\n bytes32 protocolFees\n );\n\n event StaticFeeParametersSet(\n address indexed sender,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n );\n\n event HooksParametersSet(address indexed sender, bytes32 hooksParameters);\n\n event FlashLoan(\n address indexed sender,\n ILBFlashLoanCallback indexed receiver,\n uint24 activeId,\n bytes32 amounts,\n bytes32 totalFees,\n bytes32 protocolFees\n );\n\n event OracleLengthIncreased(address indexed sender, uint16 oracleLength);\n\n event ForcedDecay(address indexed sender, uint24 idReference, uint24 volatilityReference);\n\n function initialize(\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator,\n uint24 activeId\n ) external;\n\n function getFactory() external view returns (ILBFactory factory);\n\n function getTokenX() external view returns (IERC20 tokenX);\n\n function getTokenY() external view returns (IERC20 tokenY);\n\n function getBinStep() external view returns (uint16 binStep);\n\n function getReserves() external view returns (uint128 reserveX, uint128 reserveY);\n\n function getActiveId() external view returns (uint24 activeId);\n\n function getBin(uint24 id) external view returns (uint128 binReserveX, uint128 binReserveY);\n\n function getNextNonEmptyBin(bool swapForY, uint24 id) external view returns (uint24 nextId);\n\n function getProtocolFees() external view returns (uint128 protocolFeeX, uint128 protocolFeeY);\n\n function getStaticFeeParameters()\n external\n view\n returns (\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n );\n\n function getLBHooksParameters() external view returns (bytes32 hooksParameters);\n\n function getVariableFeeParameters()\n external\n view\n returns (uint24 volatilityAccumulator, uint24 volatilityReference, uint24 idReference, uint40 timeOfLastUpdate);\n\n function getOracleParameters()\n external\n view\n returns (uint8 sampleLifetime, uint16 size, uint16 activeSize, uint40 lastUpdated, uint40 firstTimestamp);\n\n function getOracleSampleAt(uint40 lookupTimestamp)\n external\n view\n returns (uint64 cumulativeId, uint64 cumulativeVolatility, uint64 cumulativeBinCrossed);\n\n function getPriceFromId(uint24 id) external view returns (uint256 price);\n\n function getIdFromPrice(uint256 price) external view returns (uint24 id);\n\n function getSwapIn(uint128 amountOut, bool swapForY)\n external\n view\n returns (uint128 amountIn, uint128 amountOutLeft, uint128 fee);\n\n function getSwapOut(uint128 amountIn, bool swapForY)\n external\n view\n returns (uint128 amountInLeft, uint128 amountOut, uint128 fee);\n\n function swap(bool swapForY, address to) external returns (bytes32 amountsOut);\n\n function flashLoan(ILBFlashLoanCallback receiver, bytes32 amounts, bytes calldata data) external;\n\n function mint(address to, bytes32[] calldata liquidityConfigs, address refundTo)\n external\n returns (bytes32 amountsReceived, bytes32 amountsLeft, uint256[] memory liquidityMinted);\n\n function burn(address from, address to, uint256[] calldata ids, uint256[] calldata amountsToBurn)\n external\n returns (bytes32[] memory amounts);\n\n function collectProtocolFees() external returns (bytes32 collectedProtocolFees);\n\n function increaseOracleLength(uint16 newLength) external;\n\n function setStaticFeeParameters(\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) external;\n\n function setHooksParameters(bytes32 hooksParameters, bytes calldata onHooksSetData) external;\n\n function forceDecay() external;\n}\n" + }, + "src/interfaces/ISovrynLBPairV1.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.10;\n\n/// @title Sovryn LB V1 Pair Interface\n/// @notice Interface to interact with Sovryn LB V1 Pairs\ninterface ISovrynLBPairV1 {\n event Approval(address indexed owner, address indexed spender, uint256 value);\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n function name() external pure returns (string memory);\n\n function symbol() external pure returns (string memory);\n\n function decimals() external pure returns (uint8);\n\n function totalSupply() external view returns (uint256);\n\n function balanceOf(address owner) external view returns (uint256);\n\n function allowance(address owner, address spender) external view returns (uint256);\n\n function approve(address spender, uint256 value) external returns (bool);\n\n function transfer(address to, uint256 value) external returns (bool);\n\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n\n function PERMIT_TYPEHASH() external pure returns (bytes32);\n\n function nonces(address owner) external view returns (uint256);\n\n function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)\n external;\n\n event Mint(address indexed sender, uint256 amount0, uint256 amount1);\n event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);\n event Swap(\n address indexed sender,\n uint256 amount0In,\n uint256 amount1In,\n uint256 amount0Out,\n uint256 amount1Out,\n address indexed to\n );\n event Sync(uint112 reserve0, uint112 reserve1);\n\n function MINIMUM_LIQUIDITY() external pure returns (uint256);\n\n function factory() external view returns (address);\n\n function token0() external view returns (address);\n\n function token1() external view returns (address);\n\n function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\n\n function price0CumulativeLast() external view returns (uint256);\n\n function price1CumulativeLast() external view returns (uint256);\n\n function kLast() external view returns (uint256);\n\n function mint(address to) external returns (uint256 liquidity);\n\n function burn(address to) external returns (uint256 amount0, uint256 amount1);\n\n function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;\n\n function skim(address to) external;\n\n function sync() external;\n\n function initialize(address, address) external;\n}\n" + }, + "src/libraries/math/Uint256x256Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {BitMath} from \"./BitMath.sol\";\n\n/**\n * @title Liquidity Book Uint256x256 Math Library\n * @notice Helper contract used for full precision calculations\n */\nlibrary Uint256x256Math {\n error Uint256x256Math__MulShiftOverflow();\n error Uint256x256Math__MulDivOverflow();\n\n /**\n * @notice Calculates floor(x*y/denominator) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The denominator cannot be zero\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function mulDivRoundDown(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n (uint256 prod0, uint256 prod1) = _getMulProds(x, y);\n\n return _getEndOfDivRoundDown(x, y, denominator, prod0, prod1);\n }\n\n /**\n * @notice Calculates ceil(x*y/denominator) with full precision\n * The result will be rounded up\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The denominator cannot be zero\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function mulDivRoundUp(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n result = mulDivRoundDown(x, y, denominator);\n if (mulmod(x, y, denominator) != 0) result += 1;\n }\n\n /**\n * @notice Calculates floor(x * y / 2**offset) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param offset The offset as an uint256, can't be greater than 256\n * @return result The result as an uint256\n */\n function mulShiftRoundDown(uint256 x, uint256 y, uint8 offset) internal pure returns (uint256 result) {\n (uint256 prod0, uint256 prod1) = _getMulProds(x, y);\n\n if (prod0 != 0) result = prod0 >> offset;\n if (prod1 != 0) {\n // Make sure the result is less than 2^256.\n if (prod1 >= 1 << offset) revert Uint256x256Math__MulShiftOverflow();\n\n unchecked {\n result += prod1 << (256 - offset);\n }\n }\n }\n\n /**\n * @notice Calculates floor(x * y / 2**offset) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param offset The offset as an uint256, can't be greater than 256\n * @return result The result as an uint256\n */\n function mulShiftRoundUp(uint256 x, uint256 y, uint8 offset) internal pure returns (uint256 result) {\n result = mulShiftRoundDown(x, y, offset);\n if (mulmod(x, y, 1 << offset) != 0) result += 1;\n }\n\n /**\n * @notice Calculates floor(x << offset / y) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param offset The number of bit to shift x as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function shiftDivRoundDown(uint256 x, uint8 offset, uint256 denominator) internal pure returns (uint256 result) {\n uint256 prod0;\n uint256 prod1;\n\n prod0 = x << offset; // Least significant 256 bits of the product\n unchecked {\n prod1 = x >> (256 - offset); // Most significant 256 bits of the product\n }\n\n return _getEndOfDivRoundDown(x, 1 << offset, denominator, prod0, prod1);\n }\n\n /**\n * @notice Calculates ceil(x << offset / y) with full precision\n * The result will be rounded up\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param offset The number of bit to shift x as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function shiftDivRoundUp(uint256 x, uint8 offset, uint256 denominator) internal pure returns (uint256 result) {\n result = shiftDivRoundDown(x, offset, denominator);\n if (mulmod(x, 1 << offset, denominator) != 0) result += 1;\n }\n\n /**\n * @notice Helper function to return the result of `x * y` as 2 uint256\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @return prod0 The least significant 256 bits of the product\n * @return prod1 The most significant 256 bits of the product\n */\n function _getMulProds(uint256 x, uint256 y) private pure returns (uint256 prod0, uint256 prod1) {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n }\n\n /**\n * @notice Helper function to return the result of `x * y / denominator` with full precision\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param denominator The divisor as an uint256\n * @param prod0 The least significant 256 bits of the product\n * @param prod1 The most significant 256 bits of the product\n * @return result The result as an uint256\n */\n function _getEndOfDivRoundDown(uint256 x, uint256 y, uint256 denominator, uint256 prod0, uint256 prod1)\n private\n pure\n returns (uint256 result)\n {\n // Handle non-overflow cases, 256 by 256 division\n if (prod1 == 0) {\n unchecked {\n result = prod0 / denominator;\n }\n } else {\n // Make sure the result is less than 2^256. Also prevents denominator == 0\n if (prod1 >= denominator) revert Uint256x256Math__MulDivOverflow();\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1\n // See https://cs.stackexchange.com/q/138556/92363\n unchecked {\n // Does not overflow because the denominator cannot be zero at this stage in the function\n uint256 lpotdod = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by lpotdod.\n denominator := div(denominator, lpotdod)\n\n // Divide [prod1 prod0] by lpotdod.\n prod0 := div(prod0, lpotdod)\n\n // Flip lpotdod such that it is 2^256 / lpotdod. If lpotdod is zero, then it becomes one\n lpotdod := add(div(sub(0, lpotdod), lpotdod), 1)\n }\n\n // Shift in bits from prod1 into prod0\n prod0 |= prod1 * lpotdod;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n }\n }\n }\n\n /**\n * @notice Calculates the square root of x\n * @dev Credit to OpenZeppelin's Math library under MIT license\n */\n function sqrt(uint256 x) internal pure returns (uint256 sqrtX) {\n if (x == 0) return 0;\n\n uint256 msb = BitMath.mostSignificantBit(x);\n\n assembly {\n sqrtX := shl(shr(1, msb), 1)\n\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n\n x := div(x, sqrtX)\n }\n\n return sqrtX < x ? sqrtX : x;\n }\n}\n" + }, + "src/libraries/TokenHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Liquidity Book Token Helper Library\n * @notice Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using TokenHelper for IERC20;` statement to your contract,\n * which allows you to call the safe operation as `token.safeTransfer(...)`\n */\nlibrary TokenHelper {\n error TokenHelper__TransferFailed();\n\n /**\n * @notice Transfers token and reverts if the transfer fails\n * @param token The address of the token\n * @param owner The owner of the tokens\n * @param recipient The address of the recipient\n * @param amount The amount to send\n */\n function safeTransferFrom(IERC20 token, address owner, address recipient, uint256 amount) internal {\n bytes memory data = abi.encodeWithSelector(token.transferFrom.selector, owner, recipient, amount);\n\n _callAndCatch(token, data);\n }\n\n /**\n * @notice Transfers token and reverts if the transfer fails\n * @param token The address of the token\n * @param recipient The address of the recipient\n * @param amount The amount to send\n */\n function safeTransfer(IERC20 token, address recipient, uint256 amount) internal {\n bytes memory data = abi.encodeWithSelector(token.transfer.selector, recipient, amount);\n\n _callAndCatch(token, data);\n }\n\n function _callAndCatch(IERC20 token, bytes memory data) internal {\n bool success;\n\n assembly {\n mstore(0x00, 0)\n\n success := call(gas(), token, 0, add(data, 0x20), mload(data), 0x00, 0x20)\n\n switch success\n case 0 {\n if returndatasize() {\n returndatacopy(0x00, 0x00, returndatasize())\n revert(0x00, returndatasize())\n }\n }\n default {\n switch returndatasize()\n case 0 { success := iszero(iszero(extcodesize(token))) }\n default { success := and(success, eq(mload(0x00), 1)) }\n }\n }\n\n if (!success) revert TokenHelper__TransferFailed();\n }\n}\n" + }, + "src/libraries/math/PackedUint128Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Constants} from \"../Constants.sol\";\n\n/**\n * @title Liquidity Book Packed Uint128 Math Library\n * @notice This library contains functions to encode and decode two uint128 into a single bytes32\n * and interact with the encoded bytes32.\n */\nlibrary PackedUint128Math {\n error PackedUint128Math__AddOverflow();\n error PackedUint128Math__SubUnderflow();\n error PackedUint128Math__MultiplierTooLarge();\n\n uint256 private constant OFFSET = 128;\n uint256 private constant MASK_128 = 0xffffffffffffffffffffffffffffffff;\n uint256 private constant MASK_128_PLUS_ONE = MASK_128 + 1;\n\n /**\n * @dev Encodes two uint128 into a single bytes32\n * @param x1 The first uint128\n * @param x2 The second uint128\n * @return z The encoded bytes32 as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n */\n function encode(uint128 x1, uint128 x2) internal pure returns (bytes32 z) {\n assembly {\n z := or(and(x1, MASK_128), shl(OFFSET, x2))\n }\n }\n\n /**\n * @dev Encodes a uint128 into a single bytes32 as the first uint128\n * @param x1 The uint128\n * @return z The encoded bytes32 as follows:\n * [0 - 128[: x1\n * [128 - 256[: empty\n */\n function encodeFirst(uint128 x1) internal pure returns (bytes32 z) {\n assembly {\n z := and(x1, MASK_128)\n }\n }\n\n /**\n * @dev Encodes a uint128 into a single bytes32 as the second uint128\n * @param x2 The uint128\n * @return z The encoded bytes32 as follows:\n * [0 - 128[: empty\n * [128 - 256[: x2\n */\n function encodeSecond(uint128 x2) internal pure returns (bytes32 z) {\n assembly {\n z := shl(OFFSET, x2)\n }\n }\n\n /**\n * @dev Encodes a uint128 into a single bytes32 as the first or second uint128\n * @param x The uint128\n * @param first Whether to encode as the first or second uint128\n * @return z The encoded bytes32 as follows:\n * if first:\n * [0 - 128[: x\n * [128 - 256[: empty\n * else:\n * [0 - 128[: empty\n * [128 - 256[: x\n */\n function encode(uint128 x, bool first) internal pure returns (bytes32 z) {\n return first ? encodeFirst(x) : encodeSecond(x);\n }\n\n /**\n * @dev Decodes a bytes32 into two uint128\n * @param z The encoded bytes32 as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @return x1 The first uint128\n * @return x2 The second uint128\n */\n function decode(bytes32 z) internal pure returns (uint128 x1, uint128 x2) {\n assembly {\n x1 := and(z, MASK_128)\n x2 := shr(OFFSET, z)\n }\n }\n\n /**\n * @dev Decodes a bytes32 into a uint128 as the first uint128\n * @param z The encoded bytes32 as follows:\n * [0 - 128[: x\n * [128 - 256[: any\n * @return x The first uint128\n */\n function decodeX(bytes32 z) internal pure returns (uint128 x) {\n assembly {\n x := and(z, MASK_128)\n }\n }\n\n /**\n * @dev Decodes a bytes32 into a uint128 as the second uint128\n * @param z The encoded bytes32 as follows:\n * [0 - 128[: any\n * [128 - 256[: y\n * @return y The second uint128\n */\n function decodeY(bytes32 z) internal pure returns (uint128 y) {\n assembly {\n y := shr(OFFSET, z)\n }\n }\n\n /**\n * @dev Decodes a bytes32 into a uint128 as the first or second uint128\n * @param z The encoded bytes32 as follows:\n * if first:\n * [0 - 128[: x1\n * [128 - 256[: empty\n * else:\n * [0 - 128[: empty\n * [128 - 256[: x2\n * @param first Whether to decode as the first or second uint128\n * @return x The decoded uint128\n */\n function decode(bytes32 z, bool first) internal pure returns (uint128 x) {\n return first ? decodeX(z) : decodeY(z);\n }\n\n /**\n * @dev Adds two encoded bytes32, reverting on overflow on any of the uint128\n * @param x The first bytes32 encoded as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @param y The second bytes32 encoded as follows:\n * [0 - 128[: y1\n * [128 - 256[: y2\n * @return z The sum of x and y encoded as follows:\n * [0 - 128[: x1 + y1\n * [128 - 256[: x2 + y2\n */\n function add(bytes32 x, bytes32 y) internal pure returns (bytes32 z) {\n assembly {\n z := add(x, y)\n }\n\n if (z < x || uint128(uint256(z)) < uint128(uint256(x))) {\n revert PackedUint128Math__AddOverflow();\n }\n }\n\n /**\n * @dev Adds an encoded bytes32 and two uint128, reverting on overflow on any of the uint128\n * @param x The bytes32 encoded as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @param y1 The first uint128\n * @param y2 The second uint128\n * @return z The sum of x and y encoded as follows:\n * [0 - 128[: x1 + y1\n * [128 - 256[: x2 + y2\n */\n function add(bytes32 x, uint128 y1, uint128 y2) internal pure returns (bytes32) {\n return add(x, encode(y1, y2));\n }\n\n /**\n * @dev Subtracts two encoded bytes32, reverting on underflow on any of the uint128\n * @param x The first bytes32 encoded as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @param y The second bytes32 encoded as follows:\n * [0 - 128[: y1\n * [128 - 256[: y2\n * @return z The difference of x and y encoded as follows:\n * [0 - 128[: x1 - y1\n * [128 - 256[: x2 - y2\n */\n function sub(bytes32 x, bytes32 y) internal pure returns (bytes32 z) {\n assembly {\n z := sub(x, y)\n }\n\n if (z > x || uint128(uint256(z)) > uint128(uint256(x))) {\n revert PackedUint128Math__SubUnderflow();\n }\n }\n\n /**\n * @dev Subtracts an encoded bytes32 and two uint128, reverting on underflow on any of the uint128\n * @param x The bytes32 encoded as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @param y1 The first uint128\n * @param y2 The second uint128\n * @return z The difference of x and y encoded as follows:\n * [0 - 128[: x1 - y1\n * [128 - 256[: x2 - y2\n */\n function sub(bytes32 x, uint128 y1, uint128 y2) internal pure returns (bytes32) {\n return sub(x, encode(y1, y2));\n }\n\n /**\n * @dev Returns whether any of the uint128 of x is strictly greater than the corresponding uint128 of y\n * @param x The first bytes32 encoded as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @param y The second bytes32 encoded as follows:\n * [0 - 128[: y1\n * [128 - 256[: y2\n * @return x1 < y1 || x2 < y2\n */\n function lt(bytes32 x, bytes32 y) internal pure returns (bool) {\n (uint128 x1, uint128 x2) = decode(x);\n (uint128 y1, uint128 y2) = decode(y);\n\n return x1 < y1 || x2 < y2;\n }\n\n /**\n * @dev Returns whether any of the uint128 of x is strictly greater than the corresponding uint128 of y\n * @param x The first bytes32 encoded as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @param y The second bytes32 encoded as follows:\n * [0 - 128[: y1\n * [128 - 256[: y2\n * @return x1 < y1 || x2 < y2\n */\n function gt(bytes32 x, bytes32 y) internal pure returns (bool) {\n (uint128 x1, uint128 x2) = decode(x);\n (uint128 y1, uint128 y2) = decode(y);\n\n return x1 > y1 || x2 > y2;\n }\n\n /**\n * @dev Multiplies an encoded bytes32 by a uint128 then divides the result by 10_000, rounding down\n * The result can't overflow as the multiplier needs to be smaller or equal to 10_000\n * @param x The bytes32 encoded as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @param multiplier The uint128 to multiply by (must be smaller or equal to 10_000)\n * @return z The product of x and multiplier encoded as follows:\n * [0 - 128[: floor((x1 * multiplier) / 10_000)\n * [128 - 256[: floor((x2 * multiplier) / 10_000)\n */\n function scalarMulDivBasisPointRoundDown(bytes32 x, uint128 multiplier) internal pure returns (bytes32 z) {\n if (multiplier == 0) return 0;\n\n uint256 BASIS_POINT_MAX = Constants.BASIS_POINT_MAX;\n if (multiplier > BASIS_POINT_MAX) revert PackedUint128Math__MultiplierTooLarge();\n\n (uint128 x1, uint128 x2) = decode(x);\n\n assembly {\n x1 := div(mul(x1, multiplier), BASIS_POINT_MAX)\n x2 := div(mul(x2, multiplier), BASIS_POINT_MAX)\n }\n\n return encode(x1, x2);\n }\n}\n" + }, + "src/libraries/math/LiquidityConfigurations.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {PackedUint128Math} from \"./PackedUint128Math.sol\";\nimport {Encoded} from \"./Encoded.sol\";\n\n/**\n * @title Liquidity Book Liquidity Configurations Library\n * @notice This library contains functions to encode and decode the config of a pool and interact with the encoded bytes32.\n */\nlibrary LiquidityConfigurations {\n using PackedUint128Math for bytes32;\n using PackedUint128Math for uint128;\n using Encoded for bytes32;\n\n error LiquidityConfigurations__InvalidConfig();\n\n uint256 private constant OFFSET_ID = 0;\n uint256 private constant OFFSET_DISTRIBUTION_Y = 24;\n uint256 private constant OFFSET_DISTRIBUTION_X = 88;\n\n uint256 private constant PRECISION = 1e18;\n\n /**\n * @dev Encode the distributionX, distributionY and id into a single bytes32\n * @param distributionX The distribution of the first token\n * @param distributionY The distribution of the second token\n * @param id The id of the pool\n * @return config The encoded config as follows:\n * [0 - 24[: id\n * [24 - 88[: distributionY\n * [88 - 152[: distributionX\n * [152 - 256[: empty\n */\n function encodeParams(uint64 distributionX, uint64 distributionY, uint24 id)\n internal\n pure\n returns (bytes32 config)\n {\n config = config.set(distributionX, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_X);\n config = config.set(distributionY, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_Y);\n config = config.set(id, Encoded.MASK_UINT24, OFFSET_ID);\n }\n\n /**\n * @dev Decode the distributionX, distributionY and id from a single bytes32\n * @param config The encoded config as follows:\n * [0 - 24[: id\n * [24 - 88[: distributionY\n * [88 - 152[: distributionX\n * [152 - 256[: empty\n * @return distributionX The distribution of the first token\n * @return distributionY The distribution of the second token\n * @return id The id of the bin to add the liquidity to\n */\n function decodeParams(bytes32 config)\n internal\n pure\n returns (uint64 distributionX, uint64 distributionY, uint24 id)\n {\n distributionX = config.decodeUint64(OFFSET_DISTRIBUTION_X);\n distributionY = config.decodeUint64(OFFSET_DISTRIBUTION_Y);\n id = config.decodeUint24(OFFSET_ID);\n\n if (uint256(config) > type(uint152).max || distributionX > PRECISION || distributionY > PRECISION) {\n revert LiquidityConfigurations__InvalidConfig();\n }\n }\n\n /**\n * @dev Get the amounts and id from a config and amountsIn\n * @param config The encoded config as follows:\n * [0 - 24[: id\n * [24 - 88[: distributionY\n * [88 - 152[: distributionX\n * [152 - 256[: empty\n * @param amountsIn The amounts to distribute as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @return amounts The distributed amounts as follows:\n * [0 - 128[: x1\n * [128 - 256[: x2\n * @return id The id of the bin to add the liquidity to\n */\n function getAmountsAndId(bytes32 config, bytes32 amountsIn) internal pure returns (bytes32, uint24) {\n (uint64 distributionX, uint64 distributionY, uint24 id) = decodeParams(config);\n\n (uint128 x1, uint128 x2) = amountsIn.decode();\n\n assembly {\n x1 := div(mul(x1, distributionX), PRECISION)\n x2 := div(mul(x2, distributionY), PRECISION)\n }\n\n return (x1.encode(x2), id);\n }\n}\n" + }, + "src/libraries/SovrynLBLibrary.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.10;\n\n/**\n * @title Sovryn LB Helper Library\n * @notice Helper contract used for Sovryn LB V1 related calculations\n */\nlibrary SovrynLBLibrary {\n error SovrynLBLibrary__AddressZero();\n error SovrynLBLibrary__IdenticalAddresses();\n error SovrynLBLibrary__InsufficientAmount();\n error SovrynLBLibrary__InsufficientLiquidity();\n\n // returns sorted token addresses, used to handle return values from pairs sorted in this order\n function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\n if (tokenA == tokenB) revert SovrynLBLibrary__IdenticalAddresses();\n (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n if (token0 == address(0)) revert SovrynLBLibrary__AddressZero();\n }\n\n // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\n function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) internal pure returns (uint256 amountB) {\n if (amountA == 0) revert SovrynLBLibrary__InsufficientAmount();\n if (reserveA == 0 || reserveB == 0) revert SovrynLBLibrary__InsufficientLiquidity();\n amountB = (amountA * reserveB) / reserveA;\n }\n\n // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\n function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)\n internal\n pure\n returns (uint256 amountOut)\n {\n if (amountIn == 0) revert SovrynLBLibrary__InsufficientAmount();\n if (reserveIn == 0 || reserveOut == 0) revert SovrynLBLibrary__InsufficientLiquidity();\n uint256 amountInWithFee = amountIn * 997;\n uint256 numerator = amountInWithFee * reserveOut;\n uint256 denominator = reserveIn * 1000 + amountInWithFee;\n amountOut = numerator / denominator;\n }\n\n // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\n function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)\n internal\n pure\n returns (uint256 amountIn)\n {\n if (amountOut == 0) revert SovrynLBLibrary__InsufficientAmount();\n if (reserveIn == 0 || reserveOut == 0) revert SovrynLBLibrary__InsufficientLiquidity();\n uint256 numerator = reserveIn * amountOut * 1000;\n uint256 denominator = (reserveOut - amountOut) * 997;\n amountIn = numerator / denominator + 1;\n }\n}\n" + }, + "src/libraries/FeeHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Constants} from \"./Constants.sol\";\n\n/**\n * @title Liquidity Book Fee Helper Library\n * @notice This library contains functions to calculate fees\n */\nlibrary FeeHelper {\n error FeeHelper__FeeTooLarge();\n error FeeHelper__ProtocolShareTooLarge();\n\n /**\n * @dev Modifier to check that the fee is not too large\n * @param fee The fee\n */\n modifier verifyFee(uint128 fee) {\n _verifyFee(fee);\n _;\n }\n\n /**\n * @dev Modifier to check that the protocol share is not too large\n * @param protocolShare The protocol share\n */\n modifier verifyProtocolShare(uint128 protocolShare) {\n if (protocolShare > Constants.MAX_PROTOCOL_SHARE) revert FeeHelper__ProtocolShareTooLarge();\n _;\n }\n\n /**\n * @dev Calculates the fee amount from the amount with fees, rounding up\n * @param amountWithFees The amount with fees\n * @param totalFee The total fee\n * @return feeAmount The fee amount\n */\n function getFeeAmountFrom(uint128 amountWithFees, uint128 totalFee)\n internal\n pure\n verifyFee(totalFee)\n returns (uint128)\n {\n unchecked {\n // Can't overflow, max(result) = (type(uint128).max * 0.1e18 + 1e18 - 1) / 1e18 < 2^128\n return uint128((uint256(amountWithFees) * totalFee + Constants.PRECISION - 1) / Constants.PRECISION);\n }\n }\n\n /**\n * @dev Calculates the fee amount that will be charged, rounding up\n * @param amount The amount\n * @param totalFee The total fee\n * @return feeAmount The fee amount\n */\n function getFeeAmount(uint128 amount, uint128 totalFee) internal pure verifyFee(totalFee) returns (uint128) {\n unchecked {\n uint256 denominator = Constants.PRECISION - totalFee;\n // Can't overflow, max(result) = (type(uint128).max * 0.1e18 + (1e18 - 1)) / 0.9e18 < 2^128\n return uint128((uint256(amount) * totalFee + denominator - 1) / denominator);\n }\n }\n\n /**\n * @dev Calculates the composition fee amount from the amount with fees, rounding down\n * @param amountWithFees The amount with fees\n * @param totalFee The total fee\n * @return The amount with fees\n */\n function getCompositionFee(uint128 amountWithFees, uint128 totalFee)\n internal\n pure\n verifyFee(totalFee)\n returns (uint128)\n {\n unchecked {\n uint256 denominator = Constants.SQUARED_PRECISION;\n // Can't overflow, max(result) = type(uint128).max * 0.1e18 * 1.1e18 / 1e36 <= 2^128 * 0.11e36 / 1e36 < 2^128\n return uint128(uint256(amountWithFees) * totalFee * (uint256(totalFee) + Constants.PRECISION) / denominator);\n }\n }\n\n /**\n * @dev Calculates the protocol fee amount from the fee amount and the protocol share, rounding down\n * @param feeAmount The fee amount\n * @param protocolShare The protocol share\n * @return protocolFeeAmount The protocol fee amount\n */\n function getProtocolFeeAmount(uint128 feeAmount, uint128 protocolShare)\n internal\n pure\n verifyProtocolShare(protocolShare)\n returns (uint128)\n {\n unchecked {\n return uint128(uint256(feeAmount) * protocolShare / Constants.BASIS_POINT_MAX);\n }\n }\n\n /**\n * @dev Internal function to check that the fee is not too large\n * @param fee The fee\n */\n function _verifyFee(uint128 fee) private pure {\n if (fee > Constants.MAX_FEE) revert FeeHelper__FeeTooLarge();\n }\n}\n" + }, + "src/libraries/math/Encoded.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Encoded Library\n * @notice Helper contract used for decoding bytes32 sample\n */\nlibrary Encoded {\n uint256 internal constant MASK_UINT1 = 0x1;\n uint256 internal constant MASK_UINT8 = 0xff;\n uint256 internal constant MASK_UINT12 = 0xfff;\n uint256 internal constant MASK_UINT14 = 0x3fff;\n uint256 internal constant MASK_UINT16 = 0xffff;\n uint256 internal constant MASK_UINT20 = 0xfffff;\n uint256 internal constant MASK_UINT24 = 0xffffff;\n uint256 internal constant MASK_UINT40 = 0xffffffffff;\n uint256 internal constant MASK_UINT64 = 0xffffffffffffffff;\n uint256 internal constant MASK_UINT128 = 0xffffffffffffffffffffffffffffffff;\n\n /**\n * @notice Internal function to set a value in an encoded bytes32 using a mask and offset\n * @dev This function can overflow\n * @param encoded The previous encoded value\n * @param value The value to encode\n * @param mask The mask\n * @param offset The offset\n * @return newEncoded The new encoded value\n */\n function set(bytes32 encoded, uint256 value, uint256 mask, uint256 offset)\n internal\n pure\n returns (bytes32 newEncoded)\n {\n assembly {\n newEncoded := and(encoded, not(shl(offset, mask)))\n newEncoded := or(newEncoded, shl(offset, and(value, mask)))\n }\n }\n\n /**\n * @notice Internal function to set a bool in an encoded bytes32 using an offset\n * @dev This function can overflow\n * @param encoded The previous encoded value\n * @param boolean The bool to encode\n * @param offset The offset\n * @return newEncoded The new encoded value\n */\n function setBool(bytes32 encoded, bool boolean, uint256 offset) internal pure returns (bytes32 newEncoded) {\n return set(encoded, boolean ? 1 : 0, MASK_UINT1, offset);\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample using a mask and offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param mask The mask\n * @param offset The offset\n * @return value The decoded value\n */\n function decode(bytes32 encoded, uint256 mask, uint256 offset) internal pure returns (uint256 value) {\n assembly {\n value := and(shr(offset, encoded), mask)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a bool using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return boolean The decoded value as a bool\n */\n function decodeBool(bytes32 encoded, uint256 offset) internal pure returns (bool boolean) {\n assembly {\n boolean := and(shr(offset, encoded), MASK_UINT1)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint8 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint8(bytes32 encoded, uint256 offset) internal pure returns (uint8 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT8)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint12 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value as a uint16, since uint12 is not supported\n */\n function decodeUint12(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT12)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint14 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value as a uint16, since uint14 is not supported\n */\n function decodeUint14(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT14)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint16 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint16(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT16)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint20 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value as a uint24, since uint20 is not supported\n */\n function decodeUint20(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT20)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint24 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint24(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT24)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint40 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint40(bytes32 encoded, uint256 offset) internal pure returns (uint40 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT40)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint64 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint64(bytes32 encoded, uint256 offset) internal pure returns (uint64 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT64)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint128 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint128(bytes32 encoded, uint256 offset) internal pure returns (uint128 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT128)\n }\n }\n}\n" + }, + "src/libraries/Constants.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Constants Library\n * @notice Set of constants for Liquidity Book contracts\n */\nlibrary Constants {\n uint8 internal constant SCALE_OFFSET = 128;\n uint256 internal constant SCALE = 1 << SCALE_OFFSET;\n\n uint256 internal constant PRECISION = 1e18;\n uint256 internal constant SQUARED_PRECISION = PRECISION * PRECISION;\n\n uint256 internal constant MAX_FEE = 0.1e18; // 10%\n uint256 internal constant MAX_PROTOCOL_SHARE = 2_500; // 25% of the fee\n\n uint256 internal constant BASIS_POINT_MAX = 10_000;\n\n // (2^256 - 1) / (2 * log(2**128) / log(1.0001))\n uint256 internal constant MAX_LIQUIDITY_PER_BIN =\n 65251743116719673010965625540244653191619923014385985379600384103134737;\n\n /// @dev The expected return after a successful flash loan\n bytes32 internal constant CALLBACK_SUCCESS = keccak256(\"LBPair.onFlashLoan\");\n}\n" + }, + "src/libraries/BinHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {PackedUint128Math} from \"./math/PackedUint128Math.sol\";\nimport {Uint256x256Math} from \"./math/Uint256x256Math.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {Constants} from \"./Constants.sol\";\nimport {PairParameterHelper} from \"./PairParameterHelper.sol\";\nimport {FeeHelper} from \"./FeeHelper.sol\";\nimport {PriceHelper} from \"./PriceHelper.sol\";\nimport {TokenHelper, IERC20} from \"./TokenHelper.sol\";\n\n/**\n * @title Liquidity Book Bin Helper Library\n * @notice This library contains functions to help interaction with bins.\n */\nlibrary BinHelper {\n using PackedUint128Math for bytes32;\n using PackedUint128Math for uint128;\n using Uint256x256Math for uint256;\n using PriceHelper for uint24;\n using SafeCast for uint256;\n using PairParameterHelper for bytes32;\n using FeeHelper for uint128;\n using TokenHelper for IERC20;\n\n error BinHelper__CompositionFactorFlawed(uint24 id);\n error BinHelper__LiquidityOverflow();\n error BinHelper__MaxLiquidityPerBinExceeded();\n\n /**\n * @dev Returns the amount of tokens that will be received when burning the given amount of liquidity\n * @param binReserves The reserves of the bin\n * @param amountToBurn The amount of liquidity to burn\n * @param totalSupply The total supply of the liquidity book\n * @return amountsOut The encoded amount of tokens that will be received\n */\n function getAmountOutOfBin(bytes32 binReserves, uint256 amountToBurn, uint256 totalSupply)\n internal\n pure\n returns (bytes32 amountsOut)\n {\n (uint128 binReserveX, uint128 binReserveY) = binReserves.decode();\n\n uint128 amountXOutFromBin;\n uint128 amountYOutFromBin;\n\n if (binReserveX > 0) {\n amountXOutFromBin = (amountToBurn.mulDivRoundDown(binReserveX, totalSupply)).safe128();\n }\n\n if (binReserveY > 0) {\n amountYOutFromBin = (amountToBurn.mulDivRoundDown(binReserveY, totalSupply)).safe128();\n }\n\n amountsOut = amountXOutFromBin.encode(amountYOutFromBin);\n }\n\n /**\n * @dev Returns the share and the effective amounts in when adding liquidity\n * @param binReserves The reserves of the bin\n * @param amountsIn The amounts of tokens to add\n * @param price The price of the bin\n * @param totalSupply The total supply of the liquidity book\n * @return shares The share of the liquidity book that the user will receive\n * @return effectiveAmountsIn The encoded effective amounts of tokens that the user will add.\n * This is the amount of tokens that the user will actually add to the liquidity book,\n * and will always be less than or equal to the amountsIn.\n */\n function getSharesAndEffectiveAmountsIn(bytes32 binReserves, bytes32 amountsIn, uint256 price, uint256 totalSupply)\n internal\n pure\n returns (uint256 shares, bytes32 effectiveAmountsIn)\n {\n (uint256 x, uint256 y) = amountsIn.decode();\n\n uint256 userLiquidity = getLiquidity(x, y, price);\n if (userLiquidity == 0) return (0, 0);\n\n uint256 binLiquidity = getLiquidity(binReserves, price);\n if (binLiquidity == 0 || totalSupply == 0) return (userLiquidity.sqrt(), amountsIn);\n\n shares = userLiquidity.mulDivRoundDown(totalSupply, binLiquidity);\n uint256 effectiveLiquidity = shares.mulDivRoundUp(binLiquidity, totalSupply);\n\n if (userLiquidity > effectiveLiquidity) {\n uint256 deltaLiquidity = userLiquidity - effectiveLiquidity;\n\n // The other way might be more efficient, but as y is the quote asset, it is more valuable\n if (deltaLiquidity >= Constants.SCALE) {\n uint256 deltaY = deltaLiquidity >> Constants.SCALE_OFFSET;\n deltaY = deltaY > y ? y : deltaY;\n\n y -= deltaY;\n deltaLiquidity -= deltaY << Constants.SCALE_OFFSET;\n }\n\n if (deltaLiquidity >= price) {\n uint256 deltaX = deltaLiquidity / price;\n deltaX = deltaX > x ? x : deltaX;\n\n x -= deltaX;\n }\n\n amountsIn = uint128(x).encode(uint128(y));\n }\n\n if (getLiquidity(binReserves.add(amountsIn), price) > Constants.MAX_LIQUIDITY_PER_BIN) {\n revert BinHelper__MaxLiquidityPerBinExceeded();\n }\n\n return (shares, amountsIn);\n }\n\n /**\n * @dev Returns the amount of liquidity following the constant sum formula `L = price * x + y`\n * @param amounts The amounts of tokens\n * @param price The price of the bin\n * @return liquidity The amount of liquidity\n */\n function getLiquidity(bytes32 amounts, uint256 price) internal pure returns (uint256 liquidity) {\n (uint256 x, uint256 y) = amounts.decode();\n return getLiquidity(x, y, price);\n }\n\n /**\n * @dev Returns the amount of liquidity following the constant sum formula `L = price * x + y`\n * @param x The amount of the token X\n * @param y The amount of the token Y\n * @param price The price of the bin\n * @return liquidity The amount of liquidity\n */\n function getLiquidity(uint256 x, uint256 y, uint256 price) internal pure returns (uint256 liquidity) {\n if (x > 0) {\n unchecked {\n liquidity = price * x;\n if (liquidity / x != price) revert BinHelper__LiquidityOverflow();\n }\n }\n if (y > 0) {\n unchecked {\n y <<= Constants.SCALE_OFFSET;\n liquidity += y;\n\n if (liquidity < y) revert BinHelper__LiquidityOverflow();\n }\n }\n\n return liquidity;\n }\n\n /**\n * @dev Verify that the amounts are correct and that the composition factor is not flawed\n * @param amounts The amounts of tokens\n * @param activeId The id of the active bin\n * @param id The id of the bin\n */\n function verifyAmounts(bytes32 amounts, uint24 activeId, uint24 id) internal pure {\n if (id < activeId && (amounts << 128) > 0 || id > activeId && uint256(amounts) > type(uint128).max) {\n revert BinHelper__CompositionFactorFlawed(id);\n }\n }\n\n /**\n * @dev Returns the composition fees when adding liquidity to the active bin with a different\n * composition factor than the bin's one, as it does an implicit swap\n * @param binReserves The reserves of the bin\n * @param parameters The parameters of the liquidity book\n * @param binStep The step of the bin\n * @param amountsIn The amounts of tokens to add\n * @param totalSupply The total supply of the liquidity book\n * @param shares The share of the liquidity book that the user will receive\n * @return fees The encoded fees that will be charged\n */\n function getCompositionFees(\n bytes32 binReserves,\n bytes32 parameters,\n uint16 binStep,\n bytes32 amountsIn,\n uint256 totalSupply,\n uint256 shares\n ) internal pure returns (bytes32 fees) {\n if (shares == 0) return 0;\n\n (uint128 amountX, uint128 amountY) = amountsIn.decode();\n (uint128 receivedAmountX, uint128 receivedAmountY) =\n getAmountOutOfBin(binReserves.add(amountsIn), shares, totalSupply + shares).decode();\n\n if (receivedAmountX > amountX) {\n uint128 feeY = (amountY - receivedAmountY).getCompositionFee(parameters.getTotalFee(binStep));\n\n fees = feeY.encodeSecond();\n } else if (receivedAmountY > amountY) {\n uint128 feeX = (amountX - receivedAmountX).getCompositionFee(parameters.getTotalFee(binStep));\n\n fees = feeX.encodeFirst();\n }\n }\n\n /**\n * @dev Returns whether the bin is empty (true) or not (false)\n * @param binReserves The reserves of the bin\n * @param isX Whether the reserve to check is the X reserve (true) or the Y reserve (false)\n * @return Whether the bin is empty (true) or not (false)\n */\n function isEmpty(bytes32 binReserves, bool isX) internal pure returns (bool) {\n return isX ? binReserves.decodeX() == 0 : binReserves.decodeY() == 0;\n }\n\n /**\n * @dev Returns the amounts of tokens that will be added and removed from the bin during a swap\n * along with the fees that will be charged\n * @param binReserves The reserves of the bin\n * @param parameters The parameters of the liquidity book\n * @param binStep The step of the bin\n * @param swapForY Whether the swap is for Y (true) or for X (false)\n * @param activeId The id of the active bin\n * @param amountsInLeft The amounts of tokens left to swap\n * @return amountsInWithFees The encoded amounts of tokens that will be added to the bin, including fees\n * @return amountsOutOfBin The encoded amounts of tokens that will be removed from the bin\n * @return totalFees The encoded fees that will be charged\n */\n function getAmounts(\n bytes32 binReserves,\n bytes32 parameters,\n uint16 binStep,\n bool swapForY, // swap `swapForY` and `activeId` to avoid stack too deep\n uint24 activeId,\n bytes32 amountsInLeft\n ) internal pure returns (bytes32 amountsInWithFees, bytes32 amountsOutOfBin, bytes32 totalFees) {\n uint256 price = activeId.getPriceFromId(binStep);\n\n {\n uint128 binReserveOut = binReserves.decode(!swapForY);\n\n uint128 maxAmountIn = swapForY\n ? uint256(binReserveOut).shiftDivRoundUp(Constants.SCALE_OFFSET, price).safe128()\n : uint256(binReserveOut).mulShiftRoundUp(price, Constants.SCALE_OFFSET).safe128();\n\n uint128 totalFee = parameters.getTotalFee(binStep);\n uint128 maxFee = maxAmountIn.getFeeAmount(totalFee);\n\n maxAmountIn += maxFee;\n\n uint128 amountIn128 = amountsInLeft.decode(swapForY);\n uint128 fee128;\n uint128 amountOut128;\n\n if (amountIn128 >= maxAmountIn) {\n fee128 = maxFee;\n\n amountIn128 = maxAmountIn;\n amountOut128 = binReserveOut;\n } else {\n fee128 = amountIn128.getFeeAmountFrom(totalFee);\n\n uint256 amountIn = amountIn128 - fee128;\n\n amountOut128 = swapForY\n ? uint256(amountIn).mulShiftRoundDown(price, Constants.SCALE_OFFSET).safe128()\n : uint256(amountIn).shiftDivRoundDown(Constants.SCALE_OFFSET, price).safe128();\n\n if (amountOut128 > binReserveOut) amountOut128 = binReserveOut;\n }\n\n (amountsInWithFees, amountsOutOfBin, totalFees) = swapForY\n ? (amountIn128.encodeFirst(), amountOut128.encodeSecond(), fee128.encodeFirst())\n : (amountIn128.encodeSecond(), amountOut128.encodeFirst(), fee128.encodeSecond());\n }\n\n if (\n getLiquidity(binReserves.add(amountsInWithFees).sub(amountsOutOfBin), price)\n > Constants.MAX_LIQUIDITY_PER_BIN\n ) {\n revert BinHelper__MaxLiquidityPerBinExceeded();\n }\n }\n\n /**\n * @dev Returns the encoded amounts that were transferred to the contract\n * @param reserves The reserves\n * @param tokenX The token X\n * @param tokenY The token Y\n * @return amounts The amounts, encoded as follows:\n * [0 - 128[: amountX\n * [128 - 256[: amountY\n */\n function received(bytes32 reserves, IERC20 tokenX, IERC20 tokenY) internal view returns (bytes32 amounts) {\n amounts = _balanceOf(tokenX).encode(_balanceOf(tokenY)).sub(reserves);\n }\n\n /**\n * @dev Returns the encoded amounts that were transferred to the contract, only for token X\n * @param reserves The reserves\n * @param tokenX The token X\n * @return amounts The amounts, encoded as follows:\n * [0 - 128[: amountX\n * [128 - 256[: empty\n */\n function receivedX(bytes32 reserves, IERC20 tokenX) internal view returns (bytes32) {\n uint128 reserveX = reserves.decodeX();\n return (_balanceOf(tokenX) - reserveX).encodeFirst();\n }\n\n /**\n * @dev Returns the encoded amounts that were transferred to the contract, only for token Y\n * @param reserves The reserves\n * @param tokenY The token Y\n * @return amounts The amounts, encoded as follows:\n * [0 - 128[: empty\n * [128 - 256[: amountY\n */\n function receivedY(bytes32 reserves, IERC20 tokenY) internal view returns (bytes32) {\n uint128 reserveY = reserves.decodeY();\n return (_balanceOf(tokenY) - reserveY).encodeSecond();\n }\n\n /**\n * @dev Transfers the encoded amounts to the recipient\n * @param amounts The amounts, encoded as follows:\n * [0 - 128[: amountX\n * [128 - 256[: amountY\n * @param tokenX The token X\n * @param tokenY The token Y\n * @param recipient The recipient\n */\n function transfer(bytes32 amounts, IERC20 tokenX, IERC20 tokenY, address recipient) internal {\n (uint128 amountX, uint128 amountY) = amounts.decode();\n\n if (amountX > 0) tokenX.safeTransfer(recipient, amountX);\n if (amountY > 0) tokenY.safeTransfer(recipient, amountY);\n }\n\n /**\n * @dev Transfers the encoded amounts to the recipient, only for token X\n * @param amounts The amounts, encoded as follows:\n * [0 - 128[: amountX\n * [128 - 256[: empty\n * @param tokenX The token X\n * @param recipient The recipient\n */\n function transferX(bytes32 amounts, IERC20 tokenX, address recipient) internal {\n uint128 amountX = amounts.decodeX();\n\n if (amountX > 0) tokenX.safeTransfer(recipient, amountX);\n }\n\n /**\n * @dev Transfers the encoded amounts to the recipient, only for token Y\n * @param amounts The amounts, encoded as follows:\n * [0 - 128[: empty\n * [128 - 256[: amountY\n * @param tokenY The token Y\n * @param recipient The recipient\n */\n function transferY(bytes32 amounts, IERC20 tokenY, address recipient) internal {\n uint128 amountY = amounts.decodeY();\n\n if (amountY > 0) tokenY.safeTransfer(recipient, amountY);\n }\n\n function _balanceOf(IERC20 token) private view returns (uint128) {\n return token.balanceOf(address(this)).safe128();\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "src/libraries/math/BitMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Bit Math Library\n * @notice Helper contract used for bit calculations\n */\nlibrary BitMath {\n /**\n * @dev Returns the index of the closest bit on the right of x that is non null\n * @param x The value as a uint256\n * @param bit The index of the bit to start searching at\n * @return id The index of the closest non null bit on the right of x.\n * If there is no closest bit, it returns max(uint256)\n */\n function closestBitRight(uint256 x, uint8 bit) internal pure returns (uint256 id) {\n unchecked {\n uint256 shift = 255 - bit;\n x <<= shift;\n\n // can't overflow as it's non-zero and we shifted it by `_shift`\n return (x == 0) ? type(uint256).max : mostSignificantBit(x) - shift;\n }\n }\n\n /**\n * @dev Returns the index of the closest bit on the left of x that is non null\n * @param x The value as a uint256\n * @param bit The index of the bit to start searching at\n * @return id The index of the closest non null bit on the left of x.\n * If there is no closest bit, it returns max(uint256)\n */\n function closestBitLeft(uint256 x, uint8 bit) internal pure returns (uint256 id) {\n unchecked {\n x >>= bit;\n\n return (x == 0) ? type(uint256).max : leastSignificantBit(x) + bit;\n }\n }\n\n /**\n * @dev Returns the index of the most significant bit of x\n * This function returns 0 if x is 0\n * @param x The value as a uint256\n * @return msb The index of the most significant bit of x\n */\n function mostSignificantBit(uint256 x) internal pure returns (uint8 msb) {\n assembly {\n if gt(x, 0xffffffffffffffffffffffffffffffff) {\n x := shr(128, x)\n msb := 128\n }\n if gt(x, 0xffffffffffffffff) {\n x := shr(64, x)\n msb := add(msb, 64)\n }\n if gt(x, 0xffffffff) {\n x := shr(32, x)\n msb := add(msb, 32)\n }\n if gt(x, 0xffff) {\n x := shr(16, x)\n msb := add(msb, 16)\n }\n if gt(x, 0xff) {\n x := shr(8, x)\n msb := add(msb, 8)\n }\n if gt(x, 0xf) {\n x := shr(4, x)\n msb := add(msb, 4)\n }\n if gt(x, 0x3) {\n x := shr(2, x)\n msb := add(msb, 2)\n }\n if gt(x, 0x1) { msb := add(msb, 1) }\n }\n }\n\n /**\n * @dev Returns the index of the least significant bit of x\n * This function returns 255 if x is 0\n * @param x The value as a uint256\n * @return lsb The index of the least significant bit of x\n */\n function leastSignificantBit(uint256 x) internal pure returns (uint8 lsb) {\n assembly {\n let sx := shl(128, x)\n if iszero(iszero(sx)) {\n lsb := 128\n x := sx\n }\n sx := shl(64, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 64)\n }\n sx := shl(32, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 32)\n }\n sx := shl(16, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 16)\n }\n sx := shl(8, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 8)\n }\n sx := shl(4, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 4)\n }\n sx := shl(2, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 2)\n }\n if iszero(iszero(shl(1, x))) { lsb := add(lsb, 1) }\n\n lsb := sub(255, lsb)\n }\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" + }, + "src/libraries/PriceHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Uint128x128Math} from \"./math/Uint128x128Math.sol\";\nimport {Uint256x256Math} from \"./math/Uint256x256Math.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {Constants} from \"./Constants.sol\";\n\n/**\n * @title Liquidity Book Price Helper Library\n * @notice This library contains functions to calculate prices\n */\nlibrary PriceHelper {\n using Uint128x128Math for uint256;\n using Uint256x256Math for uint256;\n using SafeCast for uint256;\n\n int256 private constant REAL_ID_SHIFT = 1 << 23;\n\n /**\n * @dev Calculates the price from the id and the bin step\n * @param id The id\n * @param binStep The bin step\n * @return price The price as a 128.128-binary fixed-point number\n */\n function getPriceFromId(uint24 id, uint16 binStep) internal pure returns (uint256 price) {\n uint256 base = getBase(binStep);\n int256 exponent = getExponent(id);\n\n price = base.pow(exponent);\n }\n\n /**\n * @dev Calculates the id from the price and the bin step\n * @param price The price as a 128.128-binary fixed-point number\n * @param binStep The bin step\n * @return id The id\n */\n function getIdFromPrice(uint256 price, uint16 binStep) internal pure returns (uint24 id) {\n uint256 base = getBase(binStep);\n int256 realId = price.log2() / base.log2();\n\n unchecked {\n id = uint256(REAL_ID_SHIFT + realId).safe24();\n }\n }\n\n /**\n * @dev Calculates the base from the bin step, which is `1 + binStep / BASIS_POINT_MAX`\n * @param binStep The bin step\n * @return base The base\n */\n function getBase(uint16 binStep) internal pure returns (uint256) {\n unchecked {\n return Constants.SCALE + (uint256(binStep) << Constants.SCALE_OFFSET) / Constants.BASIS_POINT_MAX;\n }\n }\n\n /**\n * @dev Calculates the exponent from the id, which is `id - REAL_ID_SHIFT`\n * @param id The id\n * @return exponent The exponent\n */\n function getExponent(uint24 id) internal pure returns (int256) {\n unchecked {\n return int256(uint256(id)) - REAL_ID_SHIFT;\n }\n }\n\n /**\n * @dev Converts a price with 18 decimals to a 128.128-binary fixed-point number\n * @param price The price with 18 decimals\n * @return price128x128 The 128.128-binary fixed-point number\n */\n function convertDecimalPriceTo128x128(uint256 price) internal pure returns (uint256) {\n return price.shiftDivRoundDown(Constants.SCALE_OFFSET, Constants.PRECISION);\n }\n\n /**\n * @dev Converts a 128.128-binary fixed-point number to a price with 18 decimals\n * @param price128x128 The 128.128-binary fixed-point number\n * @return price The price with 18 decimals\n */\n function convert128x128PriceToDecimal(uint256 price128x128) internal pure returns (uint256) {\n return price128x128.mulShiftRoundDown(Constants.PRECISION, Constants.SCALE_OFFSET);\n }\n}\n" + }, + "src/libraries/PairParameterHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Constants} from \"./Constants.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {Encoded} from \"./math/Encoded.sol\";\n\n/**\n * @title Liquidity Book Pair Parameter Helper Library\n * @dev This library contains functions to get and set parameters of a pair\n * The parameters are stored in a single bytes32 variable in the following format:\n * [0 - 16[: base factor (16 bits)\n * [16 - 28[: filter period (12 bits)\n * [28 - 40[: decay period (12 bits)\n * [40 - 54[: reduction factor (14 bits)\n * [54 - 78[: variable fee control (24 bits)\n * [78 - 92[: protocol share (14 bits)\n * [92 - 112[: max volatility accumulator (20 bits)\n * [112 - 132[: volatility accumulator (20 bits)\n * [132 - 152[: volatility reference (20 bits)\n * [152 - 176[: index reference (24 bits)\n * [176 - 216[: time of last update (40 bits)\n * [216 - 232[: oracle index (16 bits)\n * [232 - 256[: active index (24 bits)\n */\nlibrary PairParameterHelper {\n using SafeCast for uint256;\n using Encoded for bytes32;\n\n error PairParametersHelper__InvalidParameter();\n\n uint256 internal constant OFFSET_BASE_FACTOR = 0;\n uint256 internal constant OFFSET_FILTER_PERIOD = 16;\n uint256 internal constant OFFSET_DECAY_PERIOD = 28;\n uint256 internal constant OFFSET_REDUCTION_FACTOR = 40;\n uint256 internal constant OFFSET_VAR_FEE_CONTROL = 54;\n uint256 internal constant OFFSET_PROTOCOL_SHARE = 78;\n uint256 internal constant OFFSET_MAX_VOL_ACC = 92;\n uint256 internal constant OFFSET_VOL_ACC = 112;\n uint256 internal constant OFFSET_VOL_REF = 132;\n uint256 internal constant OFFSET_ID_REF = 152;\n uint256 internal constant OFFSET_TIME_LAST_UPDATE = 176;\n uint256 internal constant OFFSET_ORACLE_ID = 216;\n uint256 internal constant OFFSET_ACTIVE_ID = 232;\n\n uint256 internal constant MASK_STATIC_PARAMETER = 0xffffffffffffffffffffffffffff;\n\n /**\n * @dev Get the base factor from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 16[: base factor (16 bits)\n * [16 - 256[: other parameters\n * @return baseFactor The base factor\n */\n function getBaseFactor(bytes32 params) internal pure returns (uint16 baseFactor) {\n baseFactor = params.decodeUint16(OFFSET_BASE_FACTOR);\n }\n\n /**\n * @dev Get the filter period from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 16[: other parameters\n * [16 - 28[: filter period (12 bits)\n * [28 - 256[: other parameters\n * @return filterPeriod The filter period\n */\n function getFilterPeriod(bytes32 params) internal pure returns (uint16 filterPeriod) {\n filterPeriod = params.decodeUint12(OFFSET_FILTER_PERIOD);\n }\n\n /**\n * @dev Get the decay period from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 28[: other parameters\n * [28 - 40[: decay period (12 bits)\n * [40 - 256[: other parameters\n * @return decayPeriod The decay period\n */\n function getDecayPeriod(bytes32 params) internal pure returns (uint16 decayPeriod) {\n decayPeriod = params.decodeUint12(OFFSET_DECAY_PERIOD);\n }\n\n /**\n * @dev Get the reduction factor from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 40[: other parameters\n * [40 - 54[: reduction factor (14 bits)\n * [54 - 256[: other parameters\n * @return reductionFactor The reduction factor\n */\n function getReductionFactor(bytes32 params) internal pure returns (uint16 reductionFactor) {\n reductionFactor = params.decodeUint14(OFFSET_REDUCTION_FACTOR);\n }\n\n /**\n * @dev Get the variable fee control from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 54[: other parameters\n * [54 - 78[: variable fee control (24 bits)\n * [78 - 256[: other parameters\n * @return variableFeeControl The variable fee control\n */\n function getVariableFeeControl(bytes32 params) internal pure returns (uint24 variableFeeControl) {\n variableFeeControl = params.decodeUint24(OFFSET_VAR_FEE_CONTROL);\n }\n\n /**\n * @dev Get the protocol share from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 78[: other parameters\n * [78 - 92[: protocol share (14 bits)\n * [92 - 256[: other parameters\n * @return protocolShare The protocol share\n */\n function getProtocolShare(bytes32 params) internal pure returns (uint16 protocolShare) {\n protocolShare = params.decodeUint14(OFFSET_PROTOCOL_SHARE);\n }\n\n /**\n * @dev Get the max volatility accumulator from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 92[: other parameters\n * [92 - 112[: max volatility accumulator (20 bits)\n * [112 - 256[: other parameters\n * @return maxVolatilityAccumulator The max volatility accumulator\n */\n function getMaxVolatilityAccumulator(bytes32 params) internal pure returns (uint24 maxVolatilityAccumulator) {\n maxVolatilityAccumulator = params.decodeUint20(OFFSET_MAX_VOL_ACC);\n }\n\n /**\n * @dev Get the volatility accumulator from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 112[: other parameters\n * [112 - 132[: volatility accumulator (20 bits)\n * [132 - 256[: other parameters\n * @return volatilityAccumulator The volatility accumulator\n */\n function getVolatilityAccumulator(bytes32 params) internal pure returns (uint24 volatilityAccumulator) {\n volatilityAccumulator = params.decodeUint20(OFFSET_VOL_ACC);\n }\n\n /**\n * @dev Get the volatility reference from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 132[: other parameters\n * [132 - 152[: volatility reference (20 bits)\n * [152 - 256[: other parameters\n * @return volatilityReference The volatility reference\n */\n function getVolatilityReference(bytes32 params) internal pure returns (uint24 volatilityReference) {\n volatilityReference = params.decodeUint20(OFFSET_VOL_REF);\n }\n\n /**\n * @dev Get the index reference from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 152[: other parameters\n * [152 - 176[: index reference (24 bits)\n * [176 - 256[: other parameters\n * @return idReference The index reference\n */\n function getIdReference(bytes32 params) internal pure returns (uint24 idReference) {\n idReference = params.decodeUint24(OFFSET_ID_REF);\n }\n\n /**\n * @dev Get the time of last update from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 176[: other parameters\n * [176 - 216[: time of last update (40 bits)\n * [216 - 256[: other parameters\n * @return timeOflastUpdate The time of last update\n */\n function getTimeOfLastUpdate(bytes32 params) internal pure returns (uint40 timeOflastUpdate) {\n timeOflastUpdate = params.decodeUint40(OFFSET_TIME_LAST_UPDATE);\n }\n\n /**\n * @dev Get the oracle id from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 216[: other parameters\n * [216 - 232[: oracle id (16 bits)\n * [232 - 256[: other parameters\n * @return oracleId The oracle id\n */\n function getOracleId(bytes32 params) internal pure returns (uint16 oracleId) {\n oracleId = params.decodeUint16(OFFSET_ORACLE_ID);\n }\n\n /**\n * @dev Get the active index from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 232[: other parameters\n * [232 - 256[: active index (24 bits)\n * @return activeId The active index\n */\n function getActiveId(bytes32 params) internal pure returns (uint24 activeId) {\n activeId = params.decodeUint24(OFFSET_ACTIVE_ID);\n }\n\n /**\n * @dev Get the delta between the current active index and the cached active index\n * @param params The encoded pair parameters, as follows:\n * [0 - 232[: other parameters\n * [232 - 256[: active index (24 bits)\n * @param activeId The current active index\n * @return The delta\n */\n function getDeltaId(bytes32 params, uint24 activeId) internal pure returns (uint24) {\n uint24 id = getActiveId(params);\n unchecked {\n return activeId > id ? activeId - id : id - activeId;\n }\n }\n\n /**\n * @dev Calculates the base fee, with 18 decimals\n * @param params The encoded pair parameters\n * @param binStep The bin step (in basis points)\n * @return baseFee The base fee\n */\n function getBaseFee(bytes32 params, uint16 binStep) internal pure returns (uint256) {\n unchecked {\n // Base factor is in basis points, binStep is in basis points, so we multiply by 1e10\n return uint256(getBaseFactor(params)) * binStep * 1e10;\n }\n }\n\n /**\n * @dev Calculates the variable fee\n * @param params The encoded pair parameters\n * @param binStep The bin step (in basis points)\n * @return variableFee The variable fee\n */\n function getVariableFee(bytes32 params, uint16 binStep) internal pure returns (uint256 variableFee) {\n uint256 variableFeeControl = getVariableFeeControl(params);\n\n if (variableFeeControl != 0) {\n unchecked {\n // The volatility accumulator is in basis points, binStep is in basis points,\n // and the variable fee control is in basis points, so the result is in 100e18th\n uint256 prod = uint256(getVolatilityAccumulator(params)) * binStep;\n variableFee = (prod * prod * variableFeeControl + 99) / 100;\n }\n }\n }\n\n /**\n * @dev Calculates the total fee, which is the sum of the base fee and the variable fee\n * @param params The encoded pair parameters\n * @param binStep The bin step (in basis points)\n * @return totalFee The total fee\n */\n function getTotalFee(bytes32 params, uint16 binStep) internal pure returns (uint128) {\n unchecked {\n return (getBaseFee(params, binStep) + getVariableFee(params, binStep)).safe128();\n }\n }\n\n /**\n * @dev Set the oracle id in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param oracleId The oracle id\n * @return The updated encoded pair parameters\n */\n function setOracleId(bytes32 params, uint16 oracleId) internal pure returns (bytes32) {\n return params.set(oracleId, Encoded.MASK_UINT16, OFFSET_ORACLE_ID);\n }\n\n /**\n * @dev Set the volatility reference in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param volRef The volatility reference\n * @return The updated encoded pair parameters\n */\n function setVolatilityReference(bytes32 params, uint24 volRef) internal pure returns (bytes32) {\n if (volRef > Encoded.MASK_UINT20) revert PairParametersHelper__InvalidParameter();\n\n return params.set(volRef, Encoded.MASK_UINT20, OFFSET_VOL_REF);\n }\n\n /**\n * @dev Set the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param volAcc The volatility accumulator\n * @return The updated encoded pair parameters\n */\n function setVolatilityAccumulator(bytes32 params, uint24 volAcc) internal pure returns (bytes32) {\n if (volAcc > Encoded.MASK_UINT20) revert PairParametersHelper__InvalidParameter();\n\n return params.set(volAcc, Encoded.MASK_UINT20, OFFSET_VOL_ACC);\n }\n\n /**\n * @dev Set the active id in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param activeId The active id\n * @return newParams The updated encoded pair parameters\n */\n function setActiveId(bytes32 params, uint24 activeId) internal pure returns (bytes32 newParams) {\n return params.set(activeId, Encoded.MASK_UINT24, OFFSET_ACTIVE_ID);\n }\n\n /**\n * @dev Sets the static fee parameters in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param baseFactor The base factor\n * @param filterPeriod The filter period\n * @param decayPeriod The decay period\n * @param reductionFactor The reduction factor\n * @param variableFeeControl The variable fee control\n * @param protocolShare The protocol share\n * @param maxVolatilityAccumulator The max volatility accumulator\n * @return newParams The updated encoded pair parameters\n */\n function setStaticFeeParameters(\n bytes32 params,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) internal pure returns (bytes32 newParams) {\n if (\n filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12\n || reductionFactor > Constants.BASIS_POINT_MAX || protocolShare > Constants.MAX_PROTOCOL_SHARE\n || maxVolatilityAccumulator > Encoded.MASK_UINT20\n ) revert PairParametersHelper__InvalidParameter();\n\n newParams = newParams.set(baseFactor, Encoded.MASK_UINT16, OFFSET_BASE_FACTOR);\n newParams = newParams.set(filterPeriod, Encoded.MASK_UINT12, OFFSET_FILTER_PERIOD);\n newParams = newParams.set(decayPeriod, Encoded.MASK_UINT12, OFFSET_DECAY_PERIOD);\n newParams = newParams.set(reductionFactor, Encoded.MASK_UINT14, OFFSET_REDUCTION_FACTOR);\n newParams = newParams.set(variableFeeControl, Encoded.MASK_UINT24, OFFSET_VAR_FEE_CONTROL);\n newParams = newParams.set(protocolShare, Encoded.MASK_UINT14, OFFSET_PROTOCOL_SHARE);\n newParams = newParams.set(maxVolatilityAccumulator, Encoded.MASK_UINT20, OFFSET_MAX_VOL_ACC);\n\n return params.set(uint256(newParams), MASK_STATIC_PARAMETER, 0);\n }\n\n /**\n * @dev Updates the index reference in the encoded pair parameters\n * @param params The encoded pair parameters\n * @return newParams The updated encoded pair parameters\n */\n function updateIdReference(bytes32 params) internal pure returns (bytes32 newParams) {\n uint24 activeId = getActiveId(params);\n return params.set(activeId, Encoded.MASK_UINT24, OFFSET_ID_REF);\n }\n\n /**\n * @dev Updates the time of last update in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param timestamp The timestamp\n * @return newParams The updated encoded pair parameters\n */\n function updateTimeOfLastUpdate(bytes32 params, uint256 timestamp) internal pure returns (bytes32 newParams) {\n uint40 currentTime = timestamp.safe40();\n return params.set(currentTime, Encoded.MASK_UINT40, OFFSET_TIME_LAST_UPDATE);\n }\n\n /**\n * @dev Updates the volatility reference in the encoded pair parameters\n * @param params The encoded pair parameters\n * @return The updated encoded pair parameters\n */\n function updateVolatilityReference(bytes32 params) internal pure returns (bytes32) {\n uint256 volAcc = getVolatilityAccumulator(params);\n uint256 reductionFactor = getReductionFactor(params);\n\n uint24 volRef;\n unchecked {\n volRef = uint24(volAcc * reductionFactor / Constants.BASIS_POINT_MAX);\n }\n\n return setVolatilityReference(params, volRef);\n }\n\n /**\n * @dev Updates the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param activeId The active id\n * @return The updated encoded pair parameters\n */\n function updateVolatilityAccumulator(bytes32 params, uint24 activeId) internal pure returns (bytes32) {\n uint256 idReference = getIdReference(params);\n\n uint256 deltaId;\n uint256 volAcc;\n\n unchecked {\n deltaId = activeId > idReference ? activeId - idReference : idReference - activeId;\n volAcc = (uint256(getVolatilityReference(params)) + deltaId * Constants.BASIS_POINT_MAX);\n }\n\n uint256 maxVolAcc = getMaxVolatilityAccumulator(params);\n\n volAcc = volAcc > maxVolAcc ? maxVolAcc : volAcc;\n\n return setVolatilityAccumulator(params, uint24(volAcc));\n }\n\n /**\n * @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param timestamp The timestamp\n * @return The updated encoded pair parameters\n */\n function updateReferences(bytes32 params, uint256 timestamp) internal pure returns (bytes32) {\n uint256 dt = timestamp - getTimeOfLastUpdate(params);\n\n if (dt >= getFilterPeriod(params)) {\n params = updateIdReference(params);\n params = dt < getDecayPeriod(params) ? updateVolatilityReference(params) : setVolatilityReference(params, 0);\n }\n\n return updateTimeOfLastUpdate(params, timestamp);\n }\n\n /**\n * @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param activeId The active id\n * @param timestamp The timestamp\n * @return The updated encoded pair parameters\n */\n function updateVolatilityParameters(bytes32 params, uint24 activeId, uint256 timestamp)\n internal\n pure\n returns (bytes32)\n {\n params = updateReferences(params, timestamp);\n return updateVolatilityAccumulator(params, activeId);\n }\n}\n" + }, + "src/libraries/math/SafeCast.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Safe Cast Library\n * @notice This library contains functions to safely cast uint256 to different uint types.\n */\nlibrary SafeCast {\n error SafeCast__Exceeds248Bits();\n error SafeCast__Exceeds240Bits();\n error SafeCast__Exceeds232Bits();\n error SafeCast__Exceeds224Bits();\n error SafeCast__Exceeds216Bits();\n error SafeCast__Exceeds208Bits();\n error SafeCast__Exceeds200Bits();\n error SafeCast__Exceeds192Bits();\n error SafeCast__Exceeds184Bits();\n error SafeCast__Exceeds176Bits();\n error SafeCast__Exceeds168Bits();\n error SafeCast__Exceeds160Bits();\n error SafeCast__Exceeds152Bits();\n error SafeCast__Exceeds144Bits();\n error SafeCast__Exceeds136Bits();\n error SafeCast__Exceeds128Bits();\n error SafeCast__Exceeds120Bits();\n error SafeCast__Exceeds112Bits();\n error SafeCast__Exceeds104Bits();\n error SafeCast__Exceeds96Bits();\n error SafeCast__Exceeds88Bits();\n error SafeCast__Exceeds80Bits();\n error SafeCast__Exceeds72Bits();\n error SafeCast__Exceeds64Bits();\n error SafeCast__Exceeds56Bits();\n error SafeCast__Exceeds48Bits();\n error SafeCast__Exceeds40Bits();\n error SafeCast__Exceeds32Bits();\n error SafeCast__Exceeds24Bits();\n error SafeCast__Exceeds16Bits();\n error SafeCast__Exceeds8Bits();\n\n /**\n * @dev Returns x on uint248 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint248\n */\n function safe248(uint256 x) internal pure returns (uint248 y) {\n if ((y = uint248(x)) != x) revert SafeCast__Exceeds248Bits();\n }\n\n /**\n * @dev Returns x on uint240 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint240\n */\n function safe240(uint256 x) internal pure returns (uint240 y) {\n if ((y = uint240(x)) != x) revert SafeCast__Exceeds240Bits();\n }\n\n /**\n * @dev Returns x on uint232 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint232\n */\n function safe232(uint256 x) internal pure returns (uint232 y) {\n if ((y = uint232(x)) != x) revert SafeCast__Exceeds232Bits();\n }\n\n /**\n * @dev Returns x on uint224 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint224\n */\n function safe224(uint256 x) internal pure returns (uint224 y) {\n if ((y = uint224(x)) != x) revert SafeCast__Exceeds224Bits();\n }\n\n /**\n * @dev Returns x on uint216 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint216\n */\n function safe216(uint256 x) internal pure returns (uint216 y) {\n if ((y = uint216(x)) != x) revert SafeCast__Exceeds216Bits();\n }\n\n /**\n * @dev Returns x on uint208 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint208\n */\n function safe208(uint256 x) internal pure returns (uint208 y) {\n if ((y = uint208(x)) != x) revert SafeCast__Exceeds208Bits();\n }\n\n /**\n * @dev Returns x on uint200 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint200\n */\n function safe200(uint256 x) internal pure returns (uint200 y) {\n if ((y = uint200(x)) != x) revert SafeCast__Exceeds200Bits();\n }\n\n /**\n * @dev Returns x on uint192 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint192\n */\n function safe192(uint256 x) internal pure returns (uint192 y) {\n if ((y = uint192(x)) != x) revert SafeCast__Exceeds192Bits();\n }\n\n /**\n * @dev Returns x on uint184 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint184\n */\n function safe184(uint256 x) internal pure returns (uint184 y) {\n if ((y = uint184(x)) != x) revert SafeCast__Exceeds184Bits();\n }\n\n /**\n * @dev Returns x on uint176 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint176\n */\n function safe176(uint256 x) internal pure returns (uint176 y) {\n if ((y = uint176(x)) != x) revert SafeCast__Exceeds176Bits();\n }\n\n /**\n * @dev Returns x on uint168 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint168\n */\n function safe168(uint256 x) internal pure returns (uint168 y) {\n if ((y = uint168(x)) != x) revert SafeCast__Exceeds168Bits();\n }\n\n /**\n * @dev Returns x on uint160 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint160\n */\n function safe160(uint256 x) internal pure returns (uint160 y) {\n if ((y = uint160(x)) != x) revert SafeCast__Exceeds160Bits();\n }\n\n /**\n * @dev Returns x on uint152 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint152\n */\n function safe152(uint256 x) internal pure returns (uint152 y) {\n if ((y = uint152(x)) != x) revert SafeCast__Exceeds152Bits();\n }\n\n /**\n * @dev Returns x on uint144 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint144\n */\n function safe144(uint256 x) internal pure returns (uint144 y) {\n if ((y = uint144(x)) != x) revert SafeCast__Exceeds144Bits();\n }\n\n /**\n * @dev Returns x on uint136 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint136\n */\n function safe136(uint256 x) internal pure returns (uint136 y) {\n if ((y = uint136(x)) != x) revert SafeCast__Exceeds136Bits();\n }\n\n /**\n * @dev Returns x on uint128 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint128\n */\n function safe128(uint256 x) internal pure returns (uint128 y) {\n if ((y = uint128(x)) != x) revert SafeCast__Exceeds128Bits();\n }\n\n /**\n * @dev Returns x on uint120 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint120\n */\n function safe120(uint256 x) internal pure returns (uint120 y) {\n if ((y = uint120(x)) != x) revert SafeCast__Exceeds120Bits();\n }\n\n /**\n * @dev Returns x on uint112 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint112\n */\n function safe112(uint256 x) internal pure returns (uint112 y) {\n if ((y = uint112(x)) != x) revert SafeCast__Exceeds112Bits();\n }\n\n /**\n * @dev Returns x on uint104 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint104\n */\n function safe104(uint256 x) internal pure returns (uint104 y) {\n if ((y = uint104(x)) != x) revert SafeCast__Exceeds104Bits();\n }\n\n /**\n * @dev Returns x on uint96 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint96\n */\n function safe96(uint256 x) internal pure returns (uint96 y) {\n if ((y = uint96(x)) != x) revert SafeCast__Exceeds96Bits();\n }\n\n /**\n * @dev Returns x on uint88 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint88\n */\n function safe88(uint256 x) internal pure returns (uint88 y) {\n if ((y = uint88(x)) != x) revert SafeCast__Exceeds88Bits();\n }\n\n /**\n * @dev Returns x on uint80 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint80\n */\n function safe80(uint256 x) internal pure returns (uint80 y) {\n if ((y = uint80(x)) != x) revert SafeCast__Exceeds80Bits();\n }\n\n /**\n * @dev Returns x on uint72 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint72\n */\n function safe72(uint256 x) internal pure returns (uint72 y) {\n if ((y = uint72(x)) != x) revert SafeCast__Exceeds72Bits();\n }\n\n /**\n * @dev Returns x on uint64 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint64\n */\n function safe64(uint256 x) internal pure returns (uint64 y) {\n if ((y = uint64(x)) != x) revert SafeCast__Exceeds64Bits();\n }\n\n /**\n * @dev Returns x on uint56 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint56\n */\n function safe56(uint256 x) internal pure returns (uint56 y) {\n if ((y = uint56(x)) != x) revert SafeCast__Exceeds56Bits();\n }\n\n /**\n * @dev Returns x on uint48 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint48\n */\n function safe48(uint256 x) internal pure returns (uint48 y) {\n if ((y = uint48(x)) != x) revert SafeCast__Exceeds48Bits();\n }\n\n /**\n * @dev Returns x on uint40 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint40\n */\n function safe40(uint256 x) internal pure returns (uint40 y) {\n if ((y = uint40(x)) != x) revert SafeCast__Exceeds40Bits();\n }\n\n /**\n * @dev Returns x on uint32 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint32\n */\n function safe32(uint256 x) internal pure returns (uint32 y) {\n if ((y = uint32(x)) != x) revert SafeCast__Exceeds32Bits();\n }\n\n /**\n * @dev Returns x on uint24 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint24\n */\n function safe24(uint256 x) internal pure returns (uint24 y) {\n if ((y = uint24(x)) != x) revert SafeCast__Exceeds24Bits();\n }\n\n /**\n * @dev Returns x on uint16 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint16\n */\n function safe16(uint256 x) internal pure returns (uint16 y) {\n if ((y = uint16(x)) != x) revert SafeCast__Exceeds16Bits();\n }\n\n /**\n * @dev Returns x on uint8 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint8\n */\n function safe8(uint256 x) internal pure returns (uint8 y) {\n if ((y = uint8(x)) != x) revert SafeCast__Exceeds8Bits();\n }\n}\n" + }, + "src/interfaces/ILBFlashLoanCallback.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/// @title Liquidity Book Flashloan Callback Interface\n/// @notice Required interface to interact with LB flash loans\ninterface ILBFlashLoanCallback {\n function LBFlashLoanCallback(\n address sender,\n IERC20 tokenX,\n IERC20 tokenY,\n bytes32 amounts,\n bytes32 totalFees,\n bytes calldata data\n ) external returns (bytes32);\n}\n" + }, + "src/libraries/Hooks.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.10;\n\nimport {ILBHooks} from \"../interfaces/ILBHooks.sol\";\n\n/**\n * @title Hooks library\n * @notice This library contains functions that should be used to interact with hooks\n */\nlibrary Hooks {\n error Hooks__CallFailed();\n\n bytes32 internal constant BEFORE_SWAP_FLAG = bytes32(uint256(1 << 160));\n bytes32 internal constant AFTER_SWAP_FLAG = bytes32(uint256(1 << 161));\n bytes32 internal constant BEFORE_FLASH_LOAN_FLAG = bytes32(uint256(1 << 162));\n bytes32 internal constant AFTER_FLASH_LOAN_FLAG = bytes32(uint256(1 << 163));\n bytes32 internal constant BEFORE_MINT_FLAG = bytes32(uint256(1 << 164));\n bytes32 internal constant AFTER_MINT_FLAG = bytes32(uint256(1 << 165));\n bytes32 internal constant BEFORE_BURN_FLAG = bytes32(uint256(1 << 166));\n bytes32 internal constant AFTER_BURN_FLAG = bytes32(uint256(1 << 167));\n bytes32 internal constant BEFORE_TRANSFER_FLAG = bytes32(uint256(1 << 168));\n bytes32 internal constant AFTER_TRANSFER_FLAG = bytes32(uint256(1 << 169));\n\n struct Parameters {\n address hooks;\n bool beforeSwap;\n bool afterSwap;\n bool beforeFlashLoan;\n bool afterFlashLoan;\n bool beforeMint;\n bool afterMint;\n bool beforeBurn;\n bool afterBurn;\n bool beforeBatchTransferFrom;\n bool afterBatchTransferFrom;\n }\n\n /**\n * @dev Helper function to encode the hooks parameters to a single bytes32 value\n * @param parameters The hooks parameters\n * @return hooksParameters The encoded hooks parameters\n */\n function encode(Parameters memory parameters) internal pure returns (bytes32 hooksParameters) {\n hooksParameters = bytes32(uint256(uint160(address(parameters.hooks))));\n\n if (parameters.beforeSwap) hooksParameters |= BEFORE_SWAP_FLAG;\n if (parameters.afterSwap) hooksParameters |= AFTER_SWAP_FLAG;\n if (parameters.beforeFlashLoan) hooksParameters |= BEFORE_FLASH_LOAN_FLAG;\n if (parameters.afterFlashLoan) hooksParameters |= AFTER_FLASH_LOAN_FLAG;\n if (parameters.beforeMint) hooksParameters |= BEFORE_MINT_FLAG;\n if (parameters.afterMint) hooksParameters |= AFTER_MINT_FLAG;\n if (parameters.beforeBurn) hooksParameters |= BEFORE_BURN_FLAG;\n if (parameters.afterBurn) hooksParameters |= AFTER_BURN_FLAG;\n if (parameters.beforeBatchTransferFrom) hooksParameters |= BEFORE_TRANSFER_FLAG;\n if (parameters.afterBatchTransferFrom) hooksParameters |= AFTER_TRANSFER_FLAG;\n }\n\n /**\n * @dev Helper function to decode the hooks parameters from a single bytes32 value\n * @param hooksParameters The encoded hooks parameters\n * @return parameters The hooks parameters\n */\n function decode(bytes32 hooksParameters) internal pure returns (Parameters memory parameters) {\n parameters.hooks = getHooks(hooksParameters);\n\n parameters.beforeSwap = (hooksParameters & BEFORE_SWAP_FLAG) != 0;\n parameters.afterSwap = (hooksParameters & AFTER_SWAP_FLAG) != 0;\n parameters.beforeFlashLoan = (hooksParameters & BEFORE_FLASH_LOAN_FLAG) != 0;\n parameters.afterFlashLoan = (hooksParameters & AFTER_FLASH_LOAN_FLAG) != 0;\n parameters.beforeMint = (hooksParameters & BEFORE_MINT_FLAG) != 0;\n parameters.afterMint = (hooksParameters & AFTER_MINT_FLAG) != 0;\n parameters.beforeBurn = (hooksParameters & BEFORE_BURN_FLAG) != 0;\n parameters.afterBurn = (hooksParameters & AFTER_BURN_FLAG) != 0;\n parameters.beforeBatchTransferFrom = (hooksParameters & BEFORE_TRANSFER_FLAG) != 0;\n parameters.afterBatchTransferFrom = (hooksParameters & AFTER_TRANSFER_FLAG) != 0;\n }\n\n /**\n * @dev Helper function to get the hooks address from the encoded hooks parameters\n * @param hooksParameters The encoded hooks parameters\n * @return hooks The hooks address\n */\n function getHooks(bytes32 hooksParameters) internal pure returns (address hooks) {\n hooks = address(uint160(uint256(hooksParameters)));\n }\n\n /**\n * @dev Helper function to set the hooks address in the encoded hooks parameters\n * @param hooksParameters The encoded hooks parameters\n * @param newHooks The new hooks address\n * @return hooksParameters The updated hooks parameters\n */\n function setHooks(bytes32 hooksParameters, address newHooks) internal pure returns (bytes32) {\n return bytes32(bytes12(hooksParameters)) | bytes32(uint256(uint160(newHooks)));\n }\n\n /**\n * @dev Helper function to get the flags from the encoded hooks parameters\n * @param hooksParameters The encoded hooks parameters\n * @return flags The flags\n */\n function getFlags(bytes32 hooksParameters) internal pure returns (bytes12 flags) {\n flags = bytes12(hooksParameters);\n }\n\n /**\n * @dev Helper function call the onHooksSet function on the hooks contract, only if the\n * hooksParameters is not 0\n * @param hooksParameters The encoded hooks parameters\n * @param onHooksSetData The data to pass to the onHooksSet function\n */\n function onHooksSet(bytes32 hooksParameters, bytes calldata onHooksSetData) internal {\n if (hooksParameters != 0) {\n _safeCall(\n hooksParameters, abi.encodeWithSelector(ILBHooks.onHooksSet.selector, hooksParameters, onHooksSetData)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeSwap function on the hooks contract, only if the\n * BEFORE_SWAP_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param swapForY Whether the swap is for Y\n * @param amountsIn The amounts in\n */\n function beforeSwap(bytes32 hooksParameters, address sender, address to, bool swapForY, bytes32 amountsIn)\n internal\n {\n if ((hooksParameters & BEFORE_SWAP_FLAG) != 0) {\n _safeCall(\n hooksParameters, abi.encodeWithSelector(ILBHooks.beforeSwap.selector, sender, to, swapForY, amountsIn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterSwap function on the hooks contract, only if the\n * AFTER_SWAP_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param swapForY Whether the swap is for Y\n * @param amountsOut The amounts out\n */\n function afterSwap(bytes32 hooksParameters, address sender, address to, bool swapForY, bytes32 amountsOut)\n internal\n {\n if ((hooksParameters & AFTER_SWAP_FLAG) != 0) {\n _safeCall(\n hooksParameters, abi.encodeWithSelector(ILBHooks.afterSwap.selector, sender, to, swapForY, amountsOut)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeFlashLoan function on the hooks contract, only if the\n * BEFORE_FLASH_LOAN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param amounts The amounts\n */\n function beforeFlashLoan(bytes32 hooksParameters, address sender, address to, bytes32 amounts) internal {\n if ((hooksParameters & BEFORE_FLASH_LOAN_FLAG) != 0) {\n _safeCall(hooksParameters, abi.encodeWithSelector(ILBHooks.beforeFlashLoan.selector, sender, to, amounts));\n }\n }\n\n /**\n * @dev Helper function to call the afterFlashLoan function on the hooks contract, only if the\n * AFTER_FLASH_LOAN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param fees The fees\n * @param feesReceived The fees received\n */\n function afterFlashLoan(bytes32 hooksParameters, address sender, address to, bytes32 fees, bytes32 feesReceived)\n internal\n {\n if ((hooksParameters & AFTER_FLASH_LOAN_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterFlashLoan.selector, sender, to, fees, feesReceived)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeMint function on the hooks contract, only if the\n * BEFORE_MINT_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param liquidityConfigs The liquidity configs\n * @param amountsReceived The amounts received\n */\n function beforeMint(\n bytes32 hooksParameters,\n address sender,\n address to,\n bytes32[] calldata liquidityConfigs,\n bytes32 amountsReceived\n ) internal {\n if ((hooksParameters & BEFORE_MINT_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.beforeMint.selector, sender, to, liquidityConfigs, amountsReceived)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterMint function on the hooks contract, only if the\n * AFTER_MINT_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param liquidityConfigs The liquidity configs\n * @param amountsIn The amounts in\n */\n function afterMint(\n bytes32 hooksParameters,\n address sender,\n address to,\n bytes32[] calldata liquidityConfigs,\n bytes32 amountsIn\n ) internal {\n if ((hooksParameters & AFTER_MINT_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterMint.selector, sender, to, liquidityConfigs, amountsIn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeBurn function on the hooks contract, only if the\n * BEFORE_BURN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The ids\n * @param amountsToBurn The amounts to burn\n */\n function beforeBurn(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) internal {\n if ((hooksParameters & BEFORE_BURN_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.beforeBurn.selector, sender, from, to, ids, amountsToBurn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterBurn function on the hooks contract, only if the\n * AFTER_BURN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The ids\n * @param amountsToBurn The amounts to burn\n */\n function afterBurn(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) internal {\n if ((hooksParameters & AFTER_BURN_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterBurn.selector, sender, from, to, ids, amountsToBurn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeTransferFrom function on the hooks contract, only if the\n * BEFORE_TRANSFER_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The list of ids\n * @param amounts The list of amounts\n */\n function beforeBatchTransferFrom(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) internal {\n if ((hooksParameters & BEFORE_TRANSFER_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.beforeBatchTransferFrom.selector, sender, from, to, ids, amounts)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterTransferFrom function on the hooks contract, only if the\n * AFTER_TRANSFER_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The list of ids\n * @param amounts The list of amounts\n */\n function afterBatchTransferFrom(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) internal {\n if ((hooksParameters & AFTER_TRANSFER_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterBatchTransferFrom.selector, sender, from, to, ids, amounts)\n );\n }\n }\n\n /**\n * @dev Helper function to call the hooks contract and verify the call was successful\n * by matching the expected selector with the returned data\n * @param hooksParameters The encoded hooks parameters\n * @param data The data to pass to the hooks contract\n */\n function _safeCall(bytes32 hooksParameters, bytes memory data) private {\n bool success;\n\n address hooks = getHooks(hooksParameters);\n\n assembly {\n let expectedSelector := shr(224, mload(add(data, 0x20)))\n\n success := call(gas(), hooks, 0, add(data, 0x20), mload(data), 0, 0x20)\n\n if and(iszero(success), iszero(iszero(returndatasize()))) {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n\n success := and(success, and(gt(returndatasize(), 0x1f), eq(shr(224, mload(0)), expectedSelector)))\n }\n\n if (!success) revert Hooks__CallFailed();\n }\n}\n" + }, + "src/interfaces/ILBLegacyToken.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\n/// @title Liquidity Book V2 Token Interface\n/// @notice Required interface of LBToken contract\ninterface ILBLegacyToken is IERC165 {\n event TransferSingle(address indexed sender, address indexed from, address indexed to, uint256 id, uint256 amount);\n\n event TransferBatch(\n address indexed sender, address indexed from, address indexed to, uint256[] ids, uint256[] amounts\n );\n\n event ApprovalForAll(address indexed account, address indexed sender, bool approved);\n\n function name() external view returns (string memory);\n\n function symbol() external view returns (string memory);\n\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n external\n view\n returns (uint256[] memory batchBalances);\n\n function totalSupply(uint256 id) external view returns (uint256);\n\n function isApprovedForAll(address owner, address spender) external view returns (bool);\n\n function setApprovalForAll(address sender, bool approved) external;\n\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount) external;\n\n function safeBatchTransferFrom(address from, address to, uint256[] calldata id, uint256[] calldata amount)\n external;\n}\n" + }, + "src/interfaces/ILBHooks.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.10;\n\nimport {ILBPair} from \"./ILBPair.sol\";\n\nimport {Hooks} from \"../libraries/Hooks.sol\";\n\ninterface ILBHooks {\n function getLBPair() external view returns (ILBPair);\n\n function isLinked() external view returns (bool);\n\n function onHooksSet(bytes32 hooksParameters, bytes calldata onHooksSetData) external returns (bytes4);\n\n function beforeSwap(address sender, address to, bool swapForY, bytes32 amountsIn) external returns (bytes4);\n\n function afterSwap(address sender, address to, bool swapForY, bytes32 amountsOut) external returns (bytes4);\n\n function beforeFlashLoan(address sender, address to, bytes32 amounts) external returns (bytes4);\n\n function afterFlashLoan(address sender, address to, bytes32 fees, bytes32 feesReceived) external returns (bytes4);\n\n function beforeMint(address sender, address to, bytes32[] calldata liquidityConfigs, bytes32 amountsReceived)\n external\n returns (bytes4);\n\n function afterMint(address sender, address to, bytes32[] calldata liquidityConfigs, bytes32 amountsIn)\n external\n returns (bytes4);\n\n function beforeBurn(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) external returns (bytes4);\n\n function afterBurn(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) external returns (bytes4);\n\n function beforeBatchTransferFrom(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) external returns (bytes4);\n\n function afterBatchTransferFrom(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) external returns (bytes4);\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "src/libraries/math/Uint128x128Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Constants} from \"../Constants.sol\";\nimport {BitMath} from \"./BitMath.sol\";\n\n/**\n * @title Liquidity Book Uint128x128 Math Library\n * @notice Helper contract used for power and log calculations\n */\nlibrary Uint128x128Math {\n using BitMath for uint256;\n\n error Uint128x128Math__LogUnderflow();\n error Uint128x128Math__PowUnderflow(uint256 x, int256 y);\n\n uint256 constant LOG_SCALE_OFFSET = 127;\n uint256 constant LOG_SCALE = 1 << LOG_SCALE_OFFSET;\n uint256 constant LOG_SCALE_SQUARED = LOG_SCALE * LOG_SCALE;\n\n /**\n * @notice Calculates the binary logarithm of x.\n * @dev Based on the iterative approximation algorithm.\n * https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation\n * Requirements:\n * - x must be greater than zero.\n * Caveats:\n * - The results are not perfectly accurate to the last decimal, due to the lossy precision of the iterative approximation\n * Also because x is converted to an unsigned 129.127-binary fixed-point number during the operation to optimize the multiplication\n * @param x The unsigned 128.128-binary fixed-point number for which to calculate the binary logarithm.\n * @return result The binary logarithm as a signed 128.128-binary fixed-point number.\n */\n function log2(uint256 x) internal pure returns (int256 result) {\n // Convert x to a unsigned 129.127-binary fixed-point number to optimize the multiplication.\n // If we use an offset of 128 bits, y would need 129 bits and y**2 would would overflow and we would have to\n // use mulDiv, by reducing x to 129.127-binary fixed-point number we assert that y will use 128 bits, and we\n // can use the regular multiplication\n\n if (x == 1) return -128;\n if (x == 0) revert Uint128x128Math__LogUnderflow();\n\n x >>= 1;\n\n unchecked {\n // This works because log2(x) = -log2(1/x).\n int256 sign;\n if (x >= LOG_SCALE) {\n sign = 1;\n } else {\n sign = -1;\n // Do the fixed-point inversion inline to save gas\n x = LOG_SCALE_SQUARED / x;\n }\n\n // Calculate the integer part of the logarithm and add it to the result and finally calculate y = x * 2^(-n).\n uint256 n = (x >> LOG_SCALE_OFFSET).mostSignificantBit();\n\n // The integer part of the logarithm as a signed 129.127-binary fixed-point number. The operation can't overflow\n // because n is maximum 255, LOG_SCALE_OFFSET is 127 bits and sign is either 1 or -1.\n result = int256(n) << LOG_SCALE_OFFSET;\n\n // This is y = x * 2^(-n).\n uint256 y = x >> n;\n\n // If y = 1, the fractional part is zero.\n if (y != LOG_SCALE) {\n // Calculate the fractional part via the iterative approximation.\n // The \"delta >>= 1\" part is equivalent to \"delta /= 2\", but shifting bits is faster.\n for (int256 delta = int256(1 << (LOG_SCALE_OFFSET - 1)); delta > 0; delta >>= 1) {\n y = (y * y) >> LOG_SCALE_OFFSET;\n\n // Is y^2 > 2 and so in the range [2,4)?\n if (y >= 1 << (LOG_SCALE_OFFSET + 1)) {\n // Add the 2^(-m) factor to the logarithm.\n result += delta;\n\n // Corresponds to z/2 on Wikipedia.\n y >>= 1;\n }\n }\n }\n // Convert x back to unsigned 128.128-binary fixed-point number\n result = (result * sign) << 1;\n }\n }\n\n /**\n * @notice Returns the value of x^y. It calculates `1 / x^abs(y)` if x is bigger than 2^128.\n * At the end of the operations, we invert the result if needed.\n * @param x The unsigned 128.128-binary fixed-point number for which to calculate the power\n * @param y A relative number without any decimals, needs to be between ]-2^21; 2^21[\n */\n function pow(uint256 x, int256 y) internal pure returns (uint256 result) {\n bool invert;\n uint256 absY;\n\n if (y == 0) return Constants.SCALE;\n\n assembly {\n absY := y\n if slt(absY, 0) {\n absY := sub(0, absY)\n invert := iszero(invert)\n }\n }\n\n if (absY < 0x100000) {\n result = Constants.SCALE;\n assembly {\n let squared := x\n if gt(x, 0xffffffffffffffffffffffffffffffff) {\n squared := div(not(0), squared)\n invert := iszero(invert)\n }\n\n if and(absY, 0x1) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x2) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x4) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x8) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x10) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x20) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x40) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x80) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x100) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x200) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x400) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x800) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x1000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x2000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x4000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x8000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x10000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x20000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x40000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x80000) { result := shr(128, mul(result, squared)) }\n }\n }\n\n // revert if y is too big or if x^y underflowed\n if (result == 0) revert Uint128x128Math__PowUnderflow(x, y);\n\n return invert ? type(uint256).max / result : result;\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.legacyAssembly", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "evm.gasEstimates", + "evm.assembly" + ] + } + }, + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "forge-std/=lib/forge-std/src/", + "src/=src/", + "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", + "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/" + ] + } + }, + "output": { + "contracts": { + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "Ownable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", + "errors": { + "OwnableInvalidOwner(address)": [ + { + "details": "The owner is not a valid owner account. (eg. `address(0)`)" + } + ], + "OwnableUnauthorizedAccount(address)": [ + { + "details": "The caller account is not authorized to perform an operation." + } + ] + }, + "kind": "dev", + "methods": { + "constructor": { + "details": "Initializes the contract setting the address provided by the deployer as the initial owner." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 8, + "contract": "lib/openzeppelin-contracts/contracts/access/Ownable.sol:Ownable", + "label": "_owner", + "offset": 0, + "slot": "0", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { + "Initializable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "devdoc": { + "custom:oz-upgrades-unsafe-allow": "constructor constructor() { _disableInitializers(); } ``` ====", + "details": "This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```", + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Interface of the ERC-20 standard as defined in the ERC.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "IERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.", + "kind": "dev", + "methods": { + "supportsInterface(bytes4)": { + "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/LBRouter.sol": { + "LBRouter": { + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILBFactory", + "name": "factory2", + "type": "address" + }, + { + "internalType": "contract ISovrynLBFactoryV1", + "name": "factoryV1", + "type": "address" + }, + { + "internalType": "contract IWNATIVE", + "name": "wnative", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountSlippage", + "type": "uint256" + } + ], + "name": "LBRouter__AmountSlippageBPTooBig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "name": "LBRouter__AmountSlippageCaught", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "LBRouter__BinReserveOverflows", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__BrokenSwapSafetyCheck", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentTimestamp", + "type": "uint256" + } + ], + "name": "LBRouter__DeadlineExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBRouter__FailedToSendNATIVE", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + } + ], + "name": "LBRouter__IdDesiredOverflows", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "id", + "type": "int256" + } + ], + "name": "LBRouter__IdOverflows", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeId", + "type": "uint256" + } + ], + "name": "LBRouter__IdSlippageCaught", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "name": "LBRouter__InsufficientAmountOut", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "wrongToken", + "type": "address" + } + ], + "name": "LBRouter__InvalidTokenPath", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + } + ], + "name": "LBRouter__InvalidVersion", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__LengthsMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "LBRouter__MaxAmountInExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__NotFactoryOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBRouter__PairNotCreated", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__SenderIsNotWNATIVE", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "LBRouter__SwapOverflows", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "excess", + "type": "uint256" + } + ], + "name": "LBRouter__TooMuchTokensIn", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserve", + "type": "uint256" + } + ], + "name": "LBRouter__WrongAmounts", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "msgValue", + "type": "uint256" + } + ], + "name": "LBRouter__WrongNativeLiquidityParameters", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__WrongTokenOrder", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "PackedUint128Math__SubUnderflow", + "type": "error" + }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientLiquidity", + "type": "error" + }, + { + "inputs": [], + "name": "TokenHelper__TransferFailed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "int256[]", + "name": "deltaIds", + "type": "int256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionX", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionY", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ILBRouter.LiquidityParameters", + "name": "liquidityParameters", + "type": "tuple" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountXAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYLeft", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "int256[]", + "name": "deltaIds", + "type": "int256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionX", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionY", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ILBRouter.LiquidityParameters", + "name": "liquidityParameters", + "type": "tuple" + } + ], + "name": "addLiquidityNATIVE", + "outputs": [ + { + "internalType": "uint256", + "name": "amountXAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYLeft", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "createLBPair", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getFactory", + "outputs": [ + { + "internalType": "contract ILBFactory", + "name": "lbFactory", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "getIdFromPrice", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + }, + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getPriceFromId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapIn", + "outputs": [ + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOutLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapOut", + "outputs": [ + { + "internalType": "uint128", + "name": "amountInLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getV1Factory", + "outputs": [ + { + "internalType": "contract ISovrynLBFactoryV1", + "name": "factoryV1", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWNATIVE", + "outputs": [ + { + "internalType": "contract IWNATIVE", + "name": "wnative", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountNATIVEMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityNATIVE", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountNATIVE", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactNATIVEForTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactNATIVEForTokensSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinNATIVE", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForNATIVE", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinNATIVE", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForNATIVESupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapNATIVEForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountNATIVEOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactNATIVE", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "sweep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBToken", + "name": "lbToken", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "sweepLBToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "devdoc": { + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, + "kind": "dev", + "methods": { + "addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": { + "details": "This function is compliant with fee on transfer tokens", + "params": { + "liquidityParameters": "The liquidity parameters" + }, + "returns": { + "amountXAdded": "The amount of token X added", + "amountXLeft": "The amount of token X left (sent back to liquidityParameters.refundTo)", + "amountYAdded": "The amount of token Y added", + "amountYLeft": "The amount of token Y left (sent back to liquidityParameters.refundTo)", + "depositIds": "The ids of the deposits", + "liquidityMinted": "The amount of liquidity minted" + } + }, + "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": { + "details": "This function is compliant with fee on transfer tokens", + "params": { + "liquidityParameters": "The liquidity parameters" + }, + "returns": { + "amountXAdded": "The amount of token X added", + "amountXLeft": "The amount of token X left (sent back to liquidityParameters.refundTo)", + "amountYAdded": "The amount of token Y added", + "amountYLeft": "The amount of token Y left (sent back to liquidityParameters.refundTo)", + "depositIds": "The ids of the deposits", + "liquidityMinted": "The amount of liquidity minted" + } + }, + "constructor": { + "custom:oz-upgrades-unsafe-allow": "constructor" + }, + "createLBPair(address,address,uint24,uint16)": { + "params": { + "activeId": "The active id of the pair", + "binStep": "The bin step in basis point, used to calculate log(1 + binStep)", + "tokenX": "The address of the first token", + "tokenY": "The address of the second token" + }, + "returns": { + "pair": "The address of the newly created LBPair" + } + }, + "getFactory()": { + "returns": { + "lbFactory": "The address of the factory V2.1" + } + }, + "getIdFromPrice(address,uint256)": { + "params": { + "pair": "The address of the LBPair", + "price": "The price of y per x (multiplied by 1e36)" + }, + "returns": { + "_0": "The id corresponding to this price" + } + }, + "getPriceFromId(address,uint24)": { + "params": { + "id": "The id", + "pair": "The address of the LBPair" + }, + "returns": { + "_0": "The price corresponding to this id" + } + }, + "getSwapIn(address,uint128,bool)": { + "params": { + "amountOut": "The amount of token to receive", + "pair": "The address of the LBPair", + "swapForY": "Whether you swap X for Y (true), or Y for X (false)" + }, + "returns": { + "amountIn": "The amount of token to send in order to receive amountOut token", + "amountOutLeft": "The amount of token Out that can't be returned due to a lack of liquidity", + "fee": "The amount of fees paid in token sent" + } + }, + "getSwapOut(address,uint128,bool)": { + "params": { + "amountIn": "The amount of token sent", + "pair": "The address of the LBPair", + "swapForY": "Whether you swap X for Y (true), or Y for X (false)" + }, + "returns": { + "amountInLeft": "The amount of token In that can't be swapped due to a lack of liquidity", + "amountOut": "The amount of token received if amountIn tokenX are sent", + "fee": "The amount of fees paid in token sent" + } + }, + "getV1Factory()": { + "returns": { + "factoryV1": "The address of the factory V1" + } + }, + "getWNATIVE()": { + "returns": { + "wnative": "The address of WNATIVE" + } + }, + "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": { + "details": "This function is compliant with fee on transfer tokens", + "params": { + "amountXMin": "The min amount to receive of token X", + "amountYMin": "The min amount to receive of token Y", + "amounts": "The list of amounts to burn of each id in `_ids`", + "binStep": "The bin step of the LBPair", + "deadline": "The deadline of the tx", + "ids": "The list of ids to burn", + "to": "The address of the recipient", + "tokenX": "The address of token X", + "tokenY": "The address of token Y" + }, + "returns": { + "amountX": "Amount of token X returned", + "amountY": "Amount of token Y returned" + } + }, + "removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": { + "details": "This function is **NOT** compliant with fee on transfer tokens. This is wanted as it would make users pays the fee on transfer twice, use the `removeLiquidity` function to remove liquidity with fee on transfer tokens.", + "params": { + "amountNATIVEMin": "The min amount to receive of NATIVE", + "amountTokenMin": "The min amount to receive of token", + "amounts": "The list of amounts to burn of each id in `_ids`", + "binStep": "The bin step of the LBPair", + "deadline": "The deadline of the tx", + "ids": "The list of ids to burn", + "to": "The address of the recipient", + "token": "The address of token" + }, + "returns": { + "amountNATIVE": "Amount of NATIVE returned", + "amountToken": "Amount of token returned" + } + }, + "swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountOutMin": "The min amount of token to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountOut": "Output amount of the swap" + } + }, + "swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountOutMin": "The min amount of token to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountOut": "Output amount of the swap" + } + }, + "swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountIn": "The amount of token to send", + "amountOutMinNATIVE": "The min amount of NATIVE to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountOut": "Output amount of the swap" + } + }, + "swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountIn": "The amount of token to send", + "amountOutMinNATIVE": "The min amount of NATIVE to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountOut": "Output amount of the swap" + } + }, + "swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountIn": "The amount of token to send", + "amountOutMin": "The min amount of token to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountOut": "Output amount of the swap" + } + }, + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountIn": "The amount of token to send", + "amountOutMin": "The min amount of token to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountOut": "Output amount of the swap" + } + }, + "swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": { + "details": "Will refund any NATIVE amount sent in excess to `msg.sender`", + "params": { + "amountOut": "The amount of tokens to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountsIn": "path amounts for every step of the swap" + } + }, + "swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountInMax": "The max amount of token to send", + "amountNATIVEOut": "The amount of NATIVE to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountsIn": "path amounts for every step of the swap" + } + }, + "swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "params": { + "amountInMax": "The max amount of token to send", + "amountOut": "The amount of token to receive", + "deadline": "The deadline of the tx", + "path": "The path of the swap", + "to": "The address of the recipient" + }, + "returns": { + "amountsIn": "Input amounts of the swap" + } + }, + "sweep(address,address,uint256)": { + "details": "Only callable by the factory owner", + "params": { + "amount": "The amount to send", + "to": "The address of the user to send back the tokens", + "token": "The address of the token" + } + }, + "sweepLBToken(address,address,uint256[],uint256[])": { + "details": "Only callable by the factory owner", + "params": { + "amounts": "The list of amounts to send", + "ids": "The list of token ids", + "lbToken": "The address of the LBToken", + "to": "The address of the user to send back the tokens" + } + } + }, + "stateVariables": { + "_factory2": { + "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" + }, + "_factoryV1": { + "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" + }, + "_wnative": { + "custom:oz-upgrades-unsafe-allow": "state-variable-immutable" + } + }, + "title": "Liquidity Book Router", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/LBRouter.sol\":1523:43399 contract LBRouter is Initializable, ILBRouter {... */\n mstore(0x40, 0xe0)\n /* \"src/LBRouter.sol\":2851:3092 constructor(... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_2\n swap2\n swap1\n tag_3\n jump\t// in\ntag_2:\n /* \"src/LBRouter.sol\":2984:2992 factory2 */\n dup3\n /* \"src/LBRouter.sol\":2972:2992 _factory2 = factory2 */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x80\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":3015:3024 factoryV1 */\n dup2\n /* \"src/LBRouter.sol\":3002:3024 _factoryV1 = factoryV1 */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xa0\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":3045:3052 wnative */\n dup1\n /* \"src/LBRouter.sol\":3034:3052 _wnative = wnative */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xc0\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":3063:3085 _disableInitializers() */\n tag_6\n /* \"src/LBRouter.sol\":3063:3083 _disableInitializers */\n shl(0x20, tag_7)\n /* \"src/LBRouter.sol\":3063:3085 _disableInitializers() */\n 0x20\n shr\n jump\t// in\ntag_6:\n /* \"src/LBRouter.sol\":2851:3092 constructor(... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":1523:43399 contract LBRouter is Initializable, ILBRouter {... */\n jump(tag_8)\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7711:8133 function _disableInitializers() internal virtual {... */\ntag_7:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7826:7856 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7859:7885 _getInitializableStorage() */\n tag_10\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7859:7883 _getInitializableStorage */\n shl(0x20, tag_11)\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7859:7885 _getInitializableStorage() */\n 0x20\n shr\n jump\t// in\ntag_10:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7826:7885 InitializableStorage storage $ = _getInitializableStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7900:7901 $ */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7900:7915 $._initializing */\n 0x00\n add\n 0x08\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7896:7972 if ($._initializing) {... */\n iszero\n tag_12\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7938:7961 InvalidInitialization() */\n mload(0x40)\n 0xf92ee8a900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7896:7972 if ($._initializing) {... */\ntag_12:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8003:8019 type(uint64).max */\n 0xffffffffffffffff\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7985:8019 $._initialized != type(uint64).max */\n dup1\n and\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7985:7986 $ */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7985:7999 $._initialized */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7985:8019 $._initialized != type(uint64).max */\n 0xffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7981:8127 if ($._initialized != type(uint64).max) {... */\n tag_13\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8052:8068 type(uint64).max */\n 0xffffffffffffffff\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8035:8036 $ */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8035:8049 $._initialized */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8035:8068 $._initialized = type(uint64).max */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8087:8116 Initialized(type(uint64).max) */\n 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8099:8115 type(uint64).max */\n 0xffffffffffffffff\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8087:8116 Initialized(type(uint64).max) */\n mload(0x40)\n tag_14\n swap2\n swap1\n tag_15\n jump\t// in\ntag_14:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7981:8127 if ($._initialized != type(uint64).max) {... */\ntag_13:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7760:8133 {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":7711:8133 function _disableInitializers() internal virtual {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\ntag_11:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8795:8825 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8870:8891 INITIALIZABLE_STORAGE */\n 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8860:8891 $.slot := INITIALIZABLE_STORAGE */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_18:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:460 */\ntag_20:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\ntag_21:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_39\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_20\n jump\t// in\ntag_39:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:683 */\ntag_22:\n /* \"#utility.yul\":624:631 */\n 0x00\n /* \"#utility.yul\":653:677 */\n tag_41\n /* \"#utility.yul\":671:676 */\n dup3\n /* \"#utility.yul\":653:677 */\n tag_21\n jump\t// in\ntag_41:\n /* \"#utility.yul\":642:677 */\n swap1\n pop\n /* \"#utility.yul\":568:683 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":689:849 */\ntag_23:\n /* \"#utility.yul\":781:824 */\n tag_43\n /* \"#utility.yul\":818:823 */\n dup2\n /* \"#utility.yul\":781:824 */\n tag_22\n jump\t// in\ntag_43:\n /* \"#utility.yul\":774:779 */\n dup2\n /* \"#utility.yul\":771:825 */\n eq\n /* \"#utility.yul\":761:843 */\n tag_44\n jumpi\n /* \"#utility.yul\":839:840 */\n 0x00\n /* \"#utility.yul\":836:837 */\n dup1\n /* \"#utility.yul\":829:841 */\n revert\n /* \"#utility.yul\":761:843 */\ntag_44:\n /* \"#utility.yul\":689:849 */\n pop\n jump\t// out\n /* \"#utility.yul\":855:1036 */\ntag_24:\n /* \"#utility.yul\":931:936 */\n 0x00\n /* \"#utility.yul\":962:968 */\n dup2\n /* \"#utility.yul\":956:969 */\n mload\n /* \"#utility.yul\":947:969 */\n swap1\n pop\n /* \"#utility.yul\":978:1030 */\n tag_46\n /* \"#utility.yul\":1024:1029 */\n dup2\n /* \"#utility.yul\":978:1030 */\n tag_23\n jump\t// in\ntag_46:\n /* \"#utility.yul\":855:1036 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1042:1165 */\ntag_25:\n /* \"#utility.yul\":1106:1113 */\n 0x00\n /* \"#utility.yul\":1135:1159 */\n tag_48\n /* \"#utility.yul\":1153:1158 */\n dup3\n /* \"#utility.yul\":1135:1159 */\n tag_21\n jump\t// in\ntag_48:\n /* \"#utility.yul\":1124:1159 */\n swap1\n pop\n /* \"#utility.yul\":1042:1165 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1171:1347 */\ntag_26:\n /* \"#utility.yul\":1271:1322 */\n tag_50\n /* \"#utility.yul\":1316:1321 */\n dup2\n /* \"#utility.yul\":1271:1322 */\n tag_25\n jump\t// in\ntag_50:\n /* \"#utility.yul\":1264:1269 */\n dup2\n /* \"#utility.yul\":1261:1323 */\n eq\n /* \"#utility.yul\":1251:1341 */\n tag_51\n jumpi\n /* \"#utility.yul\":1337:1338 */\n 0x00\n /* \"#utility.yul\":1334:1335 */\n dup1\n /* \"#utility.yul\":1327:1339 */\n revert\n /* \"#utility.yul\":1251:1341 */\ntag_51:\n /* \"#utility.yul\":1171:1347 */\n pop\n jump\t// out\n /* \"#utility.yul\":1353:1550 */\ntag_27:\n /* \"#utility.yul\":1437:1442 */\n 0x00\n /* \"#utility.yul\":1468:1474 */\n dup2\n /* \"#utility.yul\":1462:1475 */\n mload\n /* \"#utility.yul\":1453:1475 */\n swap1\n pop\n /* \"#utility.yul\":1484:1544 */\n tag_53\n /* \"#utility.yul\":1538:1543 */\n dup2\n /* \"#utility.yul\":1484:1544 */\n tag_26\n jump\t// in\ntag_53:\n /* \"#utility.yul\":1353:1550 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1556:1669 */\ntag_28:\n /* \"#utility.yul\":1610:1617 */\n 0x00\n /* \"#utility.yul\":1639:1663 */\n tag_55\n /* \"#utility.yul\":1657:1662 */\n dup3\n /* \"#utility.yul\":1639:1663 */\n tag_21\n jump\t// in\ntag_55:\n /* \"#utility.yul\":1628:1663 */\n swap1\n pop\n /* \"#utility.yul\":1556:1669 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1675:1831 */\ntag_29:\n /* \"#utility.yul\":1765:1806 */\n tag_57\n /* \"#utility.yul\":1800:1805 */\n dup2\n /* \"#utility.yul\":1765:1806 */\n tag_28\n jump\t// in\ntag_57:\n /* \"#utility.yul\":1758:1763 */\n dup2\n /* \"#utility.yul\":1755:1807 */\n eq\n /* \"#utility.yul\":1745:1825 */\n tag_58\n jumpi\n /* \"#utility.yul\":1821:1822 */\n 0x00\n /* \"#utility.yul\":1818:1819 */\n dup1\n /* \"#utility.yul\":1811:1823 */\n revert\n /* \"#utility.yul\":1745:1825 */\ntag_58:\n /* \"#utility.yul\":1675:1831 */\n pop\n jump\t// out\n /* \"#utility.yul\":1837:2014 */\ntag_30:\n /* \"#utility.yul\":1911:1916 */\n 0x00\n /* \"#utility.yul\":1942:1948 */\n dup2\n /* \"#utility.yul\":1936:1949 */\n mload\n /* \"#utility.yul\":1927:1949 */\n swap1\n pop\n /* \"#utility.yul\":1958:2008 */\n tag_60\n /* \"#utility.yul\":2002:2007 */\n dup2\n /* \"#utility.yul\":1958:2008 */\n tag_29\n jump\t// in\ntag_60:\n /* \"#utility.yul\":1837:2014 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2020:2809 */\ntag_3:\n /* \"#utility.yul\":2171:2177 */\n 0x00\n /* \"#utility.yul\":2179:2185 */\n dup1\n /* \"#utility.yul\":2187:2193 */\n 0x00\n /* \"#utility.yul\":2236:2238 */\n 0x60\n /* \"#utility.yul\":2224:2233 */\n dup5\n /* \"#utility.yul\":2215:2222 */\n dup7\n /* \"#utility.yul\":2211:2234 */\n sub\n /* \"#utility.yul\":2207:2239 */\n slt\n /* \"#utility.yul\":2204:2323 */\n iszero\n tag_62\n jumpi\n /* \"#utility.yul\":2242:2321 */\n tag_63\n tag_18\n jump\t// in\ntag_63:\n /* \"#utility.yul\":2204:2323 */\ntag_62:\n /* \"#utility.yul\":2362:2363 */\n 0x00\n /* \"#utility.yul\":2387:2470 */\n tag_64\n /* \"#utility.yul\":2462:2469 */\n dup7\n /* \"#utility.yul\":2453:2459 */\n dup3\n /* \"#utility.yul\":2442:2451 */\n dup8\n /* \"#utility.yul\":2438:2460 */\n add\n /* \"#utility.yul\":2387:2470 */\n tag_24\n jump\t// in\ntag_64:\n /* \"#utility.yul\":2377:2470 */\n swap4\n pop\n /* \"#utility.yul\":2333:2480 */\n pop\n /* \"#utility.yul\":2519:2521 */\n 0x20\n /* \"#utility.yul\":2545:2636 */\n tag_65\n /* \"#utility.yul\":2628:2635 */\n dup7\n /* \"#utility.yul\":2619:2625 */\n dup3\n /* \"#utility.yul\":2608:2617 */\n dup8\n /* \"#utility.yul\":2604:2626 */\n add\n /* \"#utility.yul\":2545:2636 */\n tag_27\n jump\t// in\ntag_65:\n /* \"#utility.yul\":2535:2636 */\n swap3\n pop\n /* \"#utility.yul\":2490:2646 */\n pop\n /* \"#utility.yul\":2685:2687 */\n 0x40\n /* \"#utility.yul\":2711:2792 */\n tag_66\n /* \"#utility.yul\":2784:2791 */\n dup7\n /* \"#utility.yul\":2775:2781 */\n dup3\n /* \"#utility.yul\":2764:2773 */\n dup8\n /* \"#utility.yul\":2760:2782 */\n add\n /* \"#utility.yul\":2711:2792 */\n tag_30\n jump\t// in\ntag_66:\n /* \"#utility.yul\":2701:2792 */\n swap2\n pop\n /* \"#utility.yul\":2656:2802 */\n pop\n /* \"#utility.yul\":2020:2809 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":2815:2916 */\ntag_31:\n /* \"#utility.yul\":2851:2858 */\n 0x00\n /* \"#utility.yul\":2891:2909 */\n 0xffffffffffffffff\n /* \"#utility.yul\":2884:2889 */\n dup3\n /* \"#utility.yul\":2880:2910 */\n and\n /* \"#utility.yul\":2869:2910 */\n swap1\n pop\n /* \"#utility.yul\":2815:2916 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2922:3037 */\ntag_32:\n /* \"#utility.yul\":3007:3030 */\n tag_69\n /* \"#utility.yul\":3024:3029 */\n dup2\n /* \"#utility.yul\":3007:3030 */\n tag_31\n jump\t// in\ntag_69:\n /* \"#utility.yul\":3002:3005 */\n dup3\n /* \"#utility.yul\":2995:3031 */\n mstore\n /* \"#utility.yul\":2922:3037 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3043:3261 */\ntag_15:\n /* \"#utility.yul\":3134:3138 */\n 0x00\n /* \"#utility.yul\":3172:3174 */\n 0x20\n /* \"#utility.yul\":3161:3170 */\n dup3\n /* \"#utility.yul\":3157:3175 */\n add\n /* \"#utility.yul\":3149:3175 */\n swap1\n pop\n /* \"#utility.yul\":3185:3254 */\n tag_71\n /* \"#utility.yul\":3251:3252 */\n 0x00\n /* \"#utility.yul\":3240:3249 */\n dup4\n /* \"#utility.yul\":3236:3253 */\n add\n /* \"#utility.yul\":3227:3233 */\n dup5\n /* \"#utility.yul\":3185:3254 */\n tag_32\n jump\t// in\ntag_71:\n /* \"#utility.yul\":3043:3261 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":1523:43399 contract LBRouter is Initializable, ILBRouter {... */\ntag_8:\n mload(0x80)\n mload(0xa0)\n mload(0xc0)\n codecopy(0x00, dataOffset(sub_0), dataSize(sub_0))\n 0x00\n assignImmutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n 0x00\n assignImmutable(\"0x8568f76a03b01e78020c34eaf7d99444bdfcfc02740b9216953e88c42652898d\")\n 0x00\n assignImmutable(\"0x2239ccbaf4e87000eba1be7b3740d3819308dc8e5f0056a0eb89462a60427836\")\n return(0x00, dataSize(sub_0))\nstop\n\nsub_0: assembly {\n /* \"src/LBRouter.sol\":1523:43399 contract LBRouter is Initializable, ILBRouter {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x92fe8e70\n gt\n tag_27\n jumpi\n dup1\n 0xbb558a9f\n gt\n tag_28\n jumpi\n dup1\n 0xbb558a9f\n eq\n tag_21\n jumpi\n dup1\n 0xc22159b6\n eq\n tag_22\n jumpi\n dup1\n 0xd0e380f2\n eq\n tag_23\n jumpi\n dup1\n 0xe038e6dc\n eq\n tag_24\n jumpi\n dup1\n 0xe9361c08\n eq\n tag_25\n jumpi\n dup1\n 0xf96fe925\n eq\n tag_26\n jumpi\n jump(tag_2)\n tag_28:\n dup1\n 0x92fe8e70\n eq\n tag_15\n jumpi\n dup1\n 0x964f987c\n eq\n tag_16\n jumpi\n dup1\n 0x9ab6156b\n eq\n tag_17\n jumpi\n dup1\n 0xa0d376cf\n eq\n tag_18\n jumpi\n dup1\n 0xa3c7271a\n eq\n tag_19\n jumpi\n dup1\n 0xb066ea7c\n eq\n tag_20\n jumpi\n jump(tag_2)\n tag_27:\n dup1\n 0x659ac74b\n gt\n tag_29\n jumpi\n dup1\n 0x659ac74b\n eq\n tag_9\n jumpi\n dup1\n 0x6c9c0078\n eq\n tag_10\n jumpi\n dup1\n 0x8129fc1c\n eq\n tag_11\n jumpi\n dup1\n 0x81c2fdfb\n eq\n tag_12\n jumpi\n dup1\n 0x88cc58e4\n eq\n tag_13\n jumpi\n dup1\n 0x8efc2b2c\n eq\n tag_14\n jumpi\n jump(tag_2)\n tag_29:\n dup1\n 0x1a24f9a9\n eq\n tag_3\n jumpi\n dup1\n 0x2075ad22\n eq\n tag_4\n jumpi\n dup1\n 0x2a443fae\n eq\n tag_5\n jumpi\n dup1\n 0x3dc8f8ec\n eq\n tag_6\n jumpi\n dup1\n 0x4b801870\n eq\n tag_7\n jumpi\n dup1\n 0x62c06767\n eq\n tag_8\n jumpi\n jump(tag_2)\n tag_1:\n jumpi(tag_2, calldatasize)\n /* \"src/LBRouter.sol\":3307:3315 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":3285:3316 msg.sender != address(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":3285:3295 msg.sender */\n caller\n /* \"src/LBRouter.sol\":3285:3316 msg.sender != address(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":3281:3355 if (msg.sender != address(_wnative)) revert LBRouter__SenderIsNotWNATIVE() */\n tag_32\n jumpi\n /* \"src/LBRouter.sol\":3325:3355 LBRouter__SenderIsNotWNATIVE() */\n mload(0x40)\n 0x6c8cb79300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":3281:3355 if (msg.sender != address(_wnative)) revert LBRouter__SenderIsNotWNATIVE() */\n tag_32:\n /* \"src/LBRouter.sol\":1523:43399 contract LBRouter is Initializable, ILBRouter {... */\n stop\n tag_2:\n 0x00\n dup1\n revert\n /* \"src/LBRouter.sol\":23903:24973 function swapExactTokensForNATIVESupportingFeeOnTransferTokens(... */\n tag_3:\n callvalue\n dup1\n iszero\n tag_33\n jumpi\n 0x00\n dup1\n revert\n tag_33:\n pop\n tag_34\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_35\n swap2\n swap1\n tag_36\n jump\t// in\n tag_35:\n tag_37\n jump\t// in\n tag_34:\n mload(0x40)\n tag_38\n swap2\n swap1\n tag_39\n jump\t// in\n tag_38:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":21155:22193 function swapNATIVEForExactTokens(uint256 amountOut, Path memory path, address to, uint256 deadline)... */\n tag_4:\n tag_40\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_41\n swap2\n swap1\n tag_42\n jump\t// in\n tag_41:\n tag_43\n jump\t// in\n tag_40:\n mload(0x40)\n tag_44\n swap2\n swap1\n tag_45\n jump\t// in\n tag_44:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":14831:15471 function swapExactTokensForTokens(... */\n tag_5:\n callvalue\n dup1\n iszero\n tag_46\n jumpi\n 0x00\n dup1\n revert\n tag_46:\n pop\n tag_47\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_48\n swap2\n swap1\n tag_49\n jump\t// in\n tag_48:\n tag_50\n jump\t// in\n tag_47:\n mload(0x40)\n tag_51\n swap2\n swap1\n tag_39\n jump\t// in\n tag_51:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":19572:20731 function swapTokensForExactNATIVE(... */\n tag_6:\n callvalue\n dup1\n iszero\n tag_52\n jumpi\n 0x00\n dup1\n revert\n tag_52:\n pop\n tag_53\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_54\n swap2\n swap1\n tag_36\n jump\t// in\n tag_54:\n tag_55\n jump\t// in\n tag_53:\n mload(0x40)\n tag_56\n swap2\n swap1\n tag_45\n jump\t// in\n tag_56:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":22625:23464 function swapExactTokensForTokensSupportingFeeOnTransferTokens(... */\n tag_7:\n callvalue\n dup1\n iszero\n tag_57\n jumpi\n 0x00\n dup1\n revert\n tag_57:\n pop\n tag_58\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_59\n swap2\n swap1\n tag_49\n jump\t// in\n tag_59:\n tag_60\n jump\t// in\n tag_58:\n mload(0x40)\n tag_61\n swap2\n swap1\n tag_39\n jump\t// in\n tag_61:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":26560:26996 function sweep(IERC20 token, address to, uint256 amount) external override onlyFactoryOwner {... */\n tag_8:\n callvalue\n dup1\n iszero\n tag_62\n jumpi\n 0x00\n dup1\n revert\n tag_62:\n pop\n tag_63\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_64\n swap2\n swap1\n tag_65\n jump\t// in\n tag_64:\n tag_66\n jump\t// in\n tag_63:\n stop\n /* \"src/LBRouter.sol\":6796:7031 function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)... */\n tag_9:\n callvalue\n dup1\n iszero\n tag_67\n jumpi\n 0x00\n dup1\n revert\n tag_67:\n pop\n tag_68\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_69\n swap2\n swap1\n tag_70\n jump\t// in\n tag_69:\n tag_71\n jump\t// in\n tag_68:\n mload(0x40)\n tag_72\n swap2\n swap1\n tag_73\n jump\t// in\n tag_72:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":3967:4071 function getWNATIVE() external view override returns (IWNATIVE wnative) {... */\n tag_10:\n callvalue\n dup1\n iszero\n tag_74\n jumpi\n 0x00\n dup1\n revert\n tag_74:\n pop\n tag_75\n tag_76\n jump\t// in\n tag_75:\n mload(0x40)\n tag_77\n swap2\n swap1\n tag_78\n jump\t// in\n tag_77:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":3098:3143 function initialize() initializer external {} */\n tag_11:\n callvalue\n dup1\n iszero\n tag_79\n jumpi\n 0x00\n dup1\n revert\n tag_79:\n pop\n tag_80\n tag_81\n jump\t// in\n tag_80:\n stop\n /* \"src/LBRouter.sol\":13396:14437 function removeLiquidityNATIVE(... */\n tag_12:\n callvalue\n dup1\n iszero\n tag_82\n jumpi\n 0x00\n dup1\n revert\n tag_82:\n pop\n tag_83\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_84\n swap2\n swap1\n tag_85\n jump\t// in\n tag_84:\n tag_86\n jump\t// in\n tag_83:\n mload(0x40)\n tag_87\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_87:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":3494:3603 function getFactory() external view override returns (ILBFactory lbFactory) {... */\n tag_13:\n callvalue\n dup1\n iszero\n tag_89\n jumpi\n 0x00\n dup1\n revert\n tag_89:\n pop\n tag_90\n tag_91\n jump\t// in\n tag_90:\n mload(0x40)\n tag_92\n swap2\n swap1\n tag_93\n jump\t// in\n tag_92:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":9334:11070 function addLiquidityNATIVE(LiquidityParameters calldata liquidityParameters)... */\n tag_14:\n tag_94\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_95\n swap2\n swap1\n tag_96\n jump\t// in\n tag_95:\n tag_97\n jump\t// in\n tag_94:\n mload(0x40)\n tag_98\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_99\n jump\t// in\n tag_98:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":18255:19157 function swapTokensForExactTokens(... */\n tag_15:\n callvalue\n dup1\n iszero\n tag_100\n jumpi\n 0x00\n dup1\n revert\n tag_100:\n pop\n tag_101\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_102\n swap2\n swap1\n tag_49\n jump\t// in\n tag_102:\n tag_103\n jump\t// in\n tag_101:\n mload(0x40)\n tag_104\n swap2\n swap1\n tag_45\n jump\t// in\n tag_104:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":5379:5651 function getSwapIn(ILBPair pair, uint128 amountOut, bool swapForY)... */\n tag_16:\n callvalue\n dup1\n iszero\n tag_105\n jumpi\n 0x00\n dup1\n revert\n tag_105:\n pop\n tag_106\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_107\n swap2\n swap1\n tag_108\n jump\t// in\n tag_107:\n tag_109\n jump\t// in\n tag_106:\n mload(0x40)\n tag_110\n swap4\n swap3\n swap2\n swap1\n tag_111\n jump\t// in\n tag_110:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":15872:16787 function swapExactTokensForNATIVE(... */\n tag_17:\n callvalue\n dup1\n iszero\n tag_112\n jumpi\n 0x00\n dup1\n revert\n tag_112:\n pop\n tag_113\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_114\n swap2\n swap1\n tag_36\n jump\t// in\n tag_114:\n tag_115\n jump\t// in\n tag_113:\n mload(0x40)\n tag_116\n swap2\n swap1\n tag_39\n jump\t// in\n tag_116:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":6115:6389 function getSwapOut(ILBPair pair, uint128 amountIn, bool swapForY)... */\n tag_18:\n callvalue\n dup1\n iszero\n tag_117\n jumpi\n 0x00\n dup1\n revert\n tag_117:\n pop\n tag_118\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_119\n swap2\n swap1\n tag_108\n jump\t// in\n tag_119:\n tag_120\n jump\t// in\n tag_118:\n mload(0x40)\n tag_121\n swap4\n swap3\n swap2\n swap1\n tag_111\n jump\t// in\n tag_121:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":7659:8694 function addLiquidity(LiquidityParameters calldata liquidityParameters)... */\n tag_19:\n callvalue\n dup1\n iszero\n tag_122\n jumpi\n 0x00\n dup1\n revert\n tag_122:\n pop\n tag_123\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_124\n swap2\n swap1\n tag_96\n jump\t// in\n tag_124:\n tag_125\n jump\t// in\n tag_123:\n mload(0x40)\n tag_126\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_99\n jump\t// in\n tag_126:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":17130:17861 function swapExactNATIVEForTokens(uint256 amountOutMin, Path memory path, address to, uint256 deadline)... */\n tag_20:\n tag_127\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_128\n swap2\n swap1\n tag_42\n jump\t// in\n tag_128:\n tag_129\n jump\t// in\n tag_127:\n mload(0x40)\n tag_130\n swap2\n swap1\n tag_39\n jump\t// in\n tag_130:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":3731:3851 function getV1Factory() external view override returns (ISovrynLBFactoryV1 factoryV1) {... */\n tag_21:\n callvalue\n dup1\n iszero\n tag_131\n jumpi\n 0x00\n dup1\n revert\n tag_131:\n pop\n tag_132\n tag_133\n jump\t// in\n tag_132:\n mload(0x40)\n tag_134\n swap2\n swap1\n tag_135\n jump\t// in\n tag_134:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":11788:12529 function removeLiquidity(... */\n tag_22:\n callvalue\n dup1\n iszero\n tag_136\n jumpi\n 0x00\n dup1\n revert\n tag_136:\n pop\n tag_137\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_138\n swap2\n swap1\n tag_139\n jump\t// in\n tag_138:\n tag_140\n jump\t// in\n tag_137:\n mload(0x40)\n tag_141\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_141:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":4763:4900 function getPriceFromId(ILBPair pair, uint24 id) external view override returns (uint256) {... */\n tag_23:\n callvalue\n dup1\n iszero\n tag_142\n jumpi\n 0x00\n dup1\n revert\n tag_142:\n pop\n tag_143\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_144\n swap2\n swap1\n tag_145\n jump\t// in\n tag_144:\n tag_146\n jump\t// in\n tag_143:\n mload(0x40)\n tag_147\n swap2\n swap1\n tag_39\n jump\t// in\n tag_147:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":25354:26269 function swapExactNATIVEForTokensSupportingFeeOnTransferTokens(... */\n tag_24:\n tag_148\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_149\n swap2\n swap1\n tag_42\n jump\t// in\n tag_149:\n tag_150\n jump\t// in\n tag_148:\n mload(0x40)\n tag_151\n swap2\n swap1\n tag_39\n jump\t// in\n tag_151:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":27343:27585 function sweepLBToken(ILBToken lbToken, address to, uint256[] calldata ids, uint256[] calldata amounts)... */\n tag_25:\n callvalue\n dup1\n iszero\n tag_152\n jumpi\n 0x00\n dup1\n revert\n tag_152:\n pop\n tag_153\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_154\n swap2\n swap1\n tag_155\n jump\t// in\n tag_154:\n tag_156\n jump\t// in\n tag_153:\n stop\n /* \"src/LBRouter.sol\":4413:4556 function getIdFromPrice(ILBPair pair, uint256 price) external view override returns (uint24) {... */\n tag_26:\n callvalue\n dup1\n iszero\n tag_157\n jumpi\n 0x00\n dup1\n revert\n tag_157:\n pop\n tag_158\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_159\n swap2\n swap1\n tag_160\n jump\t// in\n tag_159:\n tag_161\n jump\t// in\n tag_158:\n mload(0x40)\n tag_162\n swap2\n swap1\n tag_163\n jump\t// in\n tag_162:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBRouter.sol\":23903:24973 function swapExactTokensForNATIVESupportingFeeOnTransferTokens(... */\n tag_37:\n /* \"src/LBRouter.sol\":24183:24200 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":24139:24147 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_165\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_166\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_166:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_165:\n /* \"src/LBRouter.sol\":24168:24172 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_168\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_168:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_169\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_170\n swap2\n swap1\n tag_171\n jump\t// in\n tag_170:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_169:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_172\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_172:\n /* \"src/LBRouter.sol\":24267:24275 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":24216:24276 path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":24216:24220 path */\n dup7\n /* \"src/LBRouter.sol\":24216:24230 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":24231:24235 path */\n dup8\n /* \"src/LBRouter.sol\":24231:24248 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":24231:24255 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":24216:24256 path.tokenPath[path.pairBinSteps.length] */\n dup2\n mload\n dup2\n lt\n tag_174\n jumpi\n tag_175\n tag_176\n jump\t// in\n tag_175:\n tag_174:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":24216:24276 path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":24212:24387 if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {... */\n tag_177\n jumpi\n /* \"src/LBRouter.sol\":24334:24338 path */\n dup6\n /* \"src/LBRouter.sol\":24334:24348 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":24349:24353 path */\n dup7\n /* \"src/LBRouter.sol\":24349:24366 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":24349:24373 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":24334:24374 path.tokenPath[path.pairBinSteps.length] */\n dup2\n mload\n dup2\n lt\n tag_178\n jumpi\n tag_179\n tag_176\n jump\t// in\n tag_179:\n tag_178:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":24299:24376 LBRouter__InvalidTokenPath(address(path.tokenPath[path.pairBinSteps.length])) */\n mload(0x40)\n 0xcfec0e0100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_180\n swap2\n swap1\n tag_181\n jump\t// in\n tag_180:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":24212:24387 if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {... */\n tag_177:\n /* \"src/LBRouter.sol\":24397:24419 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":24422:24481 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_182\n /* \"src/LBRouter.sol\":24432:24436 path */\n dup8\n /* \"src/LBRouter.sol\":24432:24449 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":24451:24455 path */\n dup9\n /* \"src/LBRouter.sol\":24451:24464 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":24466:24470 path */\n dup10\n /* \"src/LBRouter.sol\":24466:24480 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":24422:24431 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":24422:24481 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_182:\n /* \"src/LBRouter.sol\":24397:24481 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":24492:24513 uint256 balanceBefore */\n 0x00\n /* \"src/LBRouter.sol\":24516:24524 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":24516:24534 _wnative.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":24543:24547 this */\n address\n /* \"src/LBRouter.sol\":24516:24549 _wnative.balanceOf(address(this)) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_184\n swap2\n swap1\n tag_181\n jump\t// in\n tag_184:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_186\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_186:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_187\n swap2\n swap1\n tag_188\n jump\t// in\n tag_187:\n /* \"src/LBRouter.sol\":24492:24549 uint256 balanceBefore = _wnative.balanceOf(address(this)) */\n swap1\n pop\n /* \"src/LBRouter.sol\":24560:24628 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n tag_189\n /* \"src/LBRouter.sol\":24578:24582 path */\n dup9\n /* \"src/LBRouter.sol\":24578:24592 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":24593:24594 0 */\n 0x00\n /* \"src/LBRouter.sol\":24578:24595 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_190\n jumpi\n tag_191\n tag_176\n jump\t// in\n tag_191:\n tag_190:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":24597:24607 msg.sender */\n caller\n /* \"src/LBRouter.sol\":24609:24614 pairs */\n dup5\n /* \"src/LBRouter.sol\":24615:24616 0 */\n 0x00\n /* \"src/LBRouter.sol\":24609:24617 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_192\n jumpi\n tag_193\n tag_176\n jump\t// in\n tag_193:\n tag_192:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":24619:24627 amountIn */\n dup14\n /* \"src/LBRouter.sol\":24560:24577 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":24560:24628 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n jump\t// in\n tag_189:\n /* \"src/LBRouter.sol\":24639:24726 _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, address(this)) */\n tag_195\n /* \"src/LBRouter.sol\":24674:24679 pairs */\n dup3\n /* \"src/LBRouter.sol\":24681:24685 path */\n dup10\n /* \"src/LBRouter.sol\":24681:24694 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":24696:24700 path */\n dup11\n /* \"src/LBRouter.sol\":24696:24710 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":24720:24724 this */\n address\n /* \"src/LBRouter.sol\":24639:24673 _swapSupportingFeeOnTransferTokens */\n tag_196\n /* \"src/LBRouter.sol\":24639:24726 _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, address(this)) */\n jump\t// in\n tag_195:\n /* \"src/LBRouter.sol\":24785:24798 balanceBefore */\n dup1\n /* \"src/LBRouter.sol\":24749:24757 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":24749:24767 _wnative.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":24776:24780 this */\n address\n /* \"src/LBRouter.sol\":24749:24782 _wnative.balanceOf(address(this)) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_197\n swap2\n swap1\n tag_181\n jump\t// in\n tag_197:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_199\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_199:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_200\n swap2\n swap1\n tag_188\n jump\t// in\n tag_200:\n /* \"src/LBRouter.sol\":24749:24798 _wnative.balanceOf(address(this)) - balanceBefore */\n tag_201\n swap2\n swap1\n tag_202\n jump\t// in\n tag_201:\n /* \"src/LBRouter.sol\":24737:24798 amountOut = _wnative.balanceOf(address(this)) - balanceBefore */\n swap5\n pop\n /* \"src/LBRouter.sol\":24833:24842 amountOut */\n dup5\n /* \"src/LBRouter.sol\":24812:24830 amountOutMinNATIVE */\n dup10\n /* \"src/LBRouter.sol\":24812:24842 amountOutMinNATIVE > amountOut */\n gt\n /* \"src/LBRouter.sol\":24808:24913 if (amountOutMinNATIVE > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut) */\n iszero\n tag_203\n jumpi\n /* \"src/LBRouter.sol\":24883:24901 amountOutMinNATIVE */\n dup9\n /* \"src/LBRouter.sol\":24903:24912 amountOut */\n dup6\n /* \"src/LBRouter.sol\":24851:24913 LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_204\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_204:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":24808:24913 if (amountOutMinNATIVE > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut) */\n tag_203:\n /* \"src/LBRouter.sol\":24924:24966 _wNativeWithdrawAndTransfer(to, amountOut) */\n tag_205\n /* \"src/LBRouter.sol\":24952:24954 to */\n dup8\n /* \"src/LBRouter.sol\":24956:24965 amountOut */\n dup7\n /* \"src/LBRouter.sol\":24924:24951 _wNativeWithdrawAndTransfer */\n tag_206\n /* \"src/LBRouter.sol\":24924:24966 _wNativeWithdrawAndTransfer(to, amountOut) */\n jump\t// in\n tag_205:\n /* \"src/LBRouter.sol\":24202:24973 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":23903:24973 function swapExactTokensForNATIVESupportingFeeOnTransferTokens(... */\n pop\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":21155:22193 function swapNATIVEForExactTokens(uint256 amountOut, Path memory path, address to, uint256 deadline)... */\n tag_43:\n /* \"src/LBRouter.sol\":21381:21407 uint256[] memory amountsIn */\n 0x60\n /* \"src/LBRouter.sol\":21321:21329 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_208\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_209\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_209:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_208:\n /* \"src/LBRouter.sol\":21358:21362 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_211\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_211:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_212\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_213\n swap2\n swap1\n tag_171\n jump\t// in\n tag_213:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_212:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_214\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_214:\n /* \"src/LBRouter.sol\":21455:21463 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":21427:21464 path.tokenPath[0] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":21427:21431 path */\n dup7\n /* \"src/LBRouter.sol\":21427:21441 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":21442:21443 0 */\n 0x00\n /* \"src/LBRouter.sol\":21427:21444 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_216\n jumpi\n tag_217\n tag_176\n jump\t// in\n tag_217:\n tag_216:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":21427:21464 path.tokenPath[0] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":21423:21527 if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n tag_218\n jumpi\n /* \"src/LBRouter.sol\":21508:21512 path */\n dup6\n /* \"src/LBRouter.sol\":21508:21522 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":21523:21524 0 */\n 0x00\n /* \"src/LBRouter.sol\":21508:21525 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_219\n jumpi\n tag_220\n tag_176\n jump\t// in\n tag_220:\n tag_219:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":21473:21527 LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n mload(0x40)\n 0xcfec0e0100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_221\n swap2\n swap1\n tag_181\n jump\t// in\n tag_221:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":21423:21527 if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n tag_218:\n /* \"src/LBRouter.sol\":21538:21560 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":21563:21622 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_222\n /* \"src/LBRouter.sol\":21573:21577 path */\n dup8\n /* \"src/LBRouter.sol\":21573:21590 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":21592:21596 path */\n dup9\n /* \"src/LBRouter.sol\":21592:21605 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":21607:21611 path */\n dup10\n /* \"src/LBRouter.sol\":21607:21621 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":21563:21572 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":21563:21622 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_222:\n /* \"src/LBRouter.sol\":21538:21622 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":21644:21706 _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut) */\n tag_223\n /* \"src/LBRouter.sol\":21658:21662 path */\n dup8\n /* \"src/LBRouter.sol\":21658:21671 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":21673:21678 pairs */\n dup3\n /* \"src/LBRouter.sol\":21680:21684 path */\n dup10\n /* \"src/LBRouter.sol\":21680:21694 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":21696:21705 amountOut */\n dup12\n /* \"src/LBRouter.sol\":21644:21657 _getAmountsIn */\n tag_224\n /* \"src/LBRouter.sol\":21644:21706 _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut) */\n jump\t// in\n tag_223:\n /* \"src/LBRouter.sol\":21632:21706 amountsIn = _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut) */\n swap4\n pop\n /* \"src/LBRouter.sol\":21736:21745 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":21721:21730 amountsIn */\n dup5\n /* \"src/LBRouter.sol\":21731:21732 0 */\n 0x00\n /* \"src/LBRouter.sol\":21721:21733 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_225\n jumpi\n tag_226\n tag_176\n jump\t// in\n tag_226:\n tag_225:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":21721:21745 amountsIn[0] > msg.value */\n gt\n /* \"src/LBRouter.sol\":21717:21808 if (amountsIn[0] > msg.value) revert LBRouter__MaxAmountInExceeded(msg.value, amountsIn[0]) */\n iszero\n tag_227\n jumpi\n /* \"src/LBRouter.sol\":21784:21793 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":21795:21804 amountsIn */\n dup5\n /* \"src/LBRouter.sol\":21805:21806 0 */\n 0x00\n /* \"src/LBRouter.sol\":21795:21807 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_228\n jumpi\n tag_229\n tag_176\n jump\t// in\n tag_229:\n tag_228:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":21754:21808 LBRouter__MaxAmountInExceeded(msg.value, amountsIn[0]) */\n mload(0x40)\n 0xca7710c800000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_230\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_230:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":21717:21808 if (amountsIn[0] > msg.value) revert LBRouter__MaxAmountInExceeded(msg.value, amountsIn[0]) */\n tag_227:\n /* \"src/LBRouter.sol\":21819:21869 _wNativeDepositAndTransfer(pairs[0], amountsIn[0]) */\n tag_231\n /* \"src/LBRouter.sol\":21846:21851 pairs */\n dup2\n /* \"src/LBRouter.sol\":21852:21853 0 */\n 0x00\n /* \"src/LBRouter.sol\":21846:21854 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_232\n jumpi\n tag_233\n tag_176\n jump\t// in\n tag_233:\n tag_232:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":21856:21865 amountsIn */\n dup6\n /* \"src/LBRouter.sol\":21866:21867 0 */\n 0x00\n /* \"src/LBRouter.sol\":21856:21868 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_234\n jumpi\n tag_235\n tag_176\n jump\t// in\n tag_235:\n tag_234:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":21819:21845 _wNativeDepositAndTransfer */\n tag_236\n /* \"src/LBRouter.sol\":21819:21869 _wNativeDepositAndTransfer(pairs[0], amountsIn[0]) */\n jump\t// in\n tag_231:\n /* \"src/LBRouter.sol\":21880:21901 uint256 amountOutReal */\n 0x00\n /* \"src/LBRouter.sol\":21904:21982 _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to) */\n tag_237\n /* \"src/LBRouter.sol\":21930:21935 pairs */\n dup3\n /* \"src/LBRouter.sol\":21937:21941 path */\n dup10\n /* \"src/LBRouter.sol\":21937:21950 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":21952:21956 path */\n dup11\n /* \"src/LBRouter.sol\":21952:21966 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":21968:21977 amountsIn */\n dup9\n /* \"src/LBRouter.sol\":21979:21981 to */\n dup12\n /* \"src/LBRouter.sol\":21904:21929 _swapTokensForExactTokens */\n tag_238\n /* \"src/LBRouter.sol\":21904:21982 _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to) */\n jump\t// in\n tag_237:\n /* \"src/LBRouter.sol\":21880:21982 uint256 amountOutReal = _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to) */\n swap1\n pop\n /* \"src/LBRouter.sol\":22013:22022 amountOut */\n dup9\n /* \"src/LBRouter.sol\":21997:22010 amountOutReal */\n dup2\n /* \"src/LBRouter.sol\":21997:22022 amountOutReal < amountOut */\n lt\n /* \"src/LBRouter.sol\":21993:22088 if (amountOutReal < amountOut) revert LBRouter__InsufficientAmountOut(amountOut, amountOutReal) */\n iszero\n tag_239\n jumpi\n /* \"src/LBRouter.sol\":22063:22072 amountOut */\n dup9\n /* \"src/LBRouter.sol\":22074:22087 amountOutReal */\n dup2\n /* \"src/LBRouter.sol\":22031:22088 LBRouter__InsufficientAmountOut(amountOut, amountOutReal) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_240\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_240:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":21993:22088 if (amountOutReal < amountOut) revert LBRouter__InsufficientAmountOut(amountOut, amountOutReal) */\n tag_239:\n /* \"src/LBRouter.sol\":22115:22124 amountsIn */\n dup5\n /* \"src/LBRouter.sol\":22125:22126 0 */\n 0x00\n /* \"src/LBRouter.sol\":22115:22127 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_241\n jumpi\n tag_242\n tag_176\n jump\t// in\n tag_242:\n tag_241:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":22103:22112 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":22103:22127 msg.value > amountsIn[0] */\n gt\n /* \"src/LBRouter.sol\":22099:22186 if (msg.value > amountsIn[0]) _safeTransferNative(msg.sender, msg.value - amountsIn[0]) */\n iszero\n tag_243\n jumpi\n /* \"src/LBRouter.sol\":22129:22186 _safeTransferNative(msg.sender, msg.value - amountsIn[0]) */\n tag_244\n /* \"src/LBRouter.sol\":22149:22159 msg.sender */\n caller\n /* \"src/LBRouter.sol\":22173:22182 amountsIn */\n dup7\n /* \"src/LBRouter.sol\":22183:22184 0 */\n 0x00\n /* \"src/LBRouter.sol\":22173:22185 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_245\n jumpi\n tag_246\n tag_176\n jump\t// in\n tag_246:\n tag_245:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":22161:22170 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":22161:22185 msg.value - amountsIn[0] */\n tag_247\n swap2\n swap1\n tag_202\n jump\t// in\n tag_247:\n /* \"src/LBRouter.sol\":22129:22148 _safeTransferNative */\n tag_248\n /* \"src/LBRouter.sol\":22129:22186 _safeTransferNative(msg.sender, msg.value - amountsIn[0]) */\n jump\t// in\n tag_244:\n /* \"src/LBRouter.sol\":22099:22186 if (msg.value > amountsIn[0]) _safeTransferNative(msg.sender, msg.value - amountsIn[0]) */\n tag_243:\n /* \"src/LBRouter.sol\":21413:22193 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":21155:22193 function swapNATIVEForExactTokens(uint256 amountOut, Path memory path, address to, uint256 deadline)... */\n pop\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":14831:15471 function swapExactTokensForTokens(... */\n tag_50:\n /* \"src/LBRouter.sol\":15068:15085 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":15024:15032 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_250\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_251\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_251:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_250:\n /* \"src/LBRouter.sol\":15053:15057 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_253\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_253:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_254\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_255\n swap2\n swap1\n tag_171\n jump\t// in\n tag_255:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_254:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_256\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_256:\n /* \"src/LBRouter.sol\":15097:15119 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":15122:15181 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_258\n /* \"src/LBRouter.sol\":15132:15136 path */\n dup8\n /* \"src/LBRouter.sol\":15132:15149 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":15151:15155 path */\n dup9\n /* \"src/LBRouter.sol\":15151:15164 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":15166:15170 path */\n dup10\n /* \"src/LBRouter.sol\":15166:15180 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":15122:15131 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":15122:15181 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_258:\n /* \"src/LBRouter.sol\":15097:15181 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":15192:15260 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n tag_259\n /* \"src/LBRouter.sol\":15210:15214 path */\n dup8\n /* \"src/LBRouter.sol\":15210:15224 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":15225:15226 0 */\n 0x00\n /* \"src/LBRouter.sol\":15210:15227 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_260\n jumpi\n tag_261\n tag_176\n jump\t// in\n tag_261:\n tag_260:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":15229:15239 msg.sender */\n caller\n /* \"src/LBRouter.sol\":15241:15246 pairs */\n dup4\n /* \"src/LBRouter.sol\":15247:15248 0 */\n 0x00\n /* \"src/LBRouter.sol\":15241:15249 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_262\n jumpi\n tag_263\n tag_176\n jump\t// in\n tag_263:\n tag_262:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":15251:15259 amountIn */\n dup13\n /* \"src/LBRouter.sol\":15192:15209 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":15192:15260 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n jump\t// in\n tag_259:\n /* \"src/LBRouter.sol\":15283:15360 _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, to) */\n tag_264\n /* \"src/LBRouter.sol\":15309:15317 amountIn */\n dup10\n /* \"src/LBRouter.sol\":15319:15324 pairs */\n dup3\n /* \"src/LBRouter.sol\":15326:15330 path */\n dup10\n /* \"src/LBRouter.sol\":15326:15339 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":15341:15345 path */\n dup11\n /* \"src/LBRouter.sol\":15341:15355 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":15357:15359 to */\n dup11\n /* \"src/LBRouter.sol\":15283:15308 _swapExactTokensForTokens */\n tag_265\n /* \"src/LBRouter.sol\":15283:15360 _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, to) */\n jump\t// in\n tag_264:\n /* \"src/LBRouter.sol\":15271:15360 amountOut = _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, to) */\n swap4\n pop\n /* \"src/LBRouter.sol\":15390:15399 amountOut */\n dup4\n /* \"src/LBRouter.sol\":15375:15387 amountOutMin */\n dup9\n /* \"src/LBRouter.sol\":15375:15399 amountOutMin > amountOut */\n gt\n /* \"src/LBRouter.sol\":15371:15464 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n iszero\n tag_266\n jumpi\n /* \"src/LBRouter.sol\":15440:15452 amountOutMin */\n dup8\n /* \"src/LBRouter.sol\":15454:15463 amountOut */\n dup5\n /* \"src/LBRouter.sol\":15408:15464 LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_267\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_267:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":15371:15464 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n tag_266:\n /* \"src/LBRouter.sol\":15087:15471 {... */\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":14831:15471 function swapExactTokensForTokens(... */\n pop\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":19572:20731 function swapTokensForExactNATIVE(... */\n tag_55:\n /* \"src/LBRouter.sol\":19823:19849 uint256[] memory amountsIn */\n 0x60\n /* \"src/LBRouter.sol\":19779:19787 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_269\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_270\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_270:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_269:\n /* \"src/LBRouter.sol\":19808:19812 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_272\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_272:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_273\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_274\n swap2\n swap1\n tag_171\n jump\t// in\n tag_274:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_273:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_275\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_275:\n /* \"src/LBRouter.sol\":19916:19924 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":19865:19925 path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":19865:19869 path */\n dup7\n /* \"src/LBRouter.sol\":19865:19879 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":19880:19884 path */\n dup8\n /* \"src/LBRouter.sol\":19880:19897 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":19880:19904 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":19865:19905 path.tokenPath[path.pairBinSteps.length] */\n dup2\n mload\n dup2\n lt\n tag_277\n jumpi\n tag_278\n tag_176\n jump\t// in\n tag_278:\n tag_277:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":19865:19925 path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":19861:20036 if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {... */\n tag_279\n jumpi\n /* \"src/LBRouter.sol\":19983:19987 path */\n dup6\n /* \"src/LBRouter.sol\":19983:19997 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":19998:20002 path */\n dup7\n /* \"src/LBRouter.sol\":19998:20015 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":19998:20022 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":19983:20023 path.tokenPath[path.pairBinSteps.length] */\n dup2\n mload\n dup2\n lt\n tag_280\n jumpi\n tag_281\n tag_176\n jump\t// in\n tag_281:\n tag_280:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":19948:20025 LBRouter__InvalidTokenPath(address(path.tokenPath[path.pairBinSteps.length])) */\n mload(0x40)\n 0xcfec0e0100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_282\n swap2\n swap1\n tag_181\n jump\t// in\n tag_282:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":19861:20036 if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {... */\n tag_279:\n /* \"src/LBRouter.sol\":20046:20068 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":20071:20130 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_283\n /* \"src/LBRouter.sol\":20081:20085 path */\n dup8\n /* \"src/LBRouter.sol\":20081:20098 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":20100:20104 path */\n dup9\n /* \"src/LBRouter.sol\":20100:20113 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":20115:20119 path */\n dup10\n /* \"src/LBRouter.sol\":20115:20129 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":20071:20080 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":20071:20130 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_283:\n /* \"src/LBRouter.sol\":20046:20130 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":20152:20220 _getAmountsIn(path.versions, pairs, path.tokenPath, amountNATIVEOut) */\n tag_284\n /* \"src/LBRouter.sol\":20166:20170 path */\n dup8\n /* \"src/LBRouter.sol\":20166:20179 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":20181:20186 pairs */\n dup3\n /* \"src/LBRouter.sol\":20188:20192 path */\n dup10\n /* \"src/LBRouter.sol\":20188:20202 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":20204:20219 amountNATIVEOut */\n dup13\n /* \"src/LBRouter.sol\":20152:20165 _getAmountsIn */\n tag_224\n /* \"src/LBRouter.sol\":20152:20220 _getAmountsIn(path.versions, pairs, path.tokenPath, amountNATIVEOut) */\n jump\t// in\n tag_284:\n /* \"src/LBRouter.sol\":20140:20220 amountsIn = _getAmountsIn(path.versions, pairs, path.tokenPath, amountNATIVEOut) */\n swap4\n pop\n /* \"src/LBRouter.sol\":20250:20261 amountInMax */\n dup8\n /* \"src/LBRouter.sol\":20235:20244 amountsIn */\n dup5\n /* \"src/LBRouter.sol\":20245:20246 0 */\n 0x00\n /* \"src/LBRouter.sol\":20235:20247 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_285\n jumpi\n tag_286\n tag_176\n jump\t// in\n tag_286:\n tag_285:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":20235:20261 amountsIn[0] > amountInMax */\n gt\n /* \"src/LBRouter.sol\":20231:20326 if (amountsIn[0] > amountInMax) revert LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]) */\n iszero\n tag_287\n jumpi\n /* \"src/LBRouter.sol\":20300:20311 amountInMax */\n dup8\n /* \"src/LBRouter.sol\":20313:20322 amountsIn */\n dup5\n /* \"src/LBRouter.sol\":20323:20324 0 */\n 0x00\n /* \"src/LBRouter.sol\":20313:20325 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_288\n jumpi\n tag_289\n tag_176\n jump\t// in\n tag_289:\n tag_288:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":20270:20326 LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]) */\n mload(0x40)\n 0xca7710c800000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_290\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_290:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":20231:20326 if (amountsIn[0] > amountInMax) revert LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]) */\n tag_287:\n /* \"src/LBRouter.sol\":20337:20409 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountsIn[0]) */\n tag_291\n /* \"src/LBRouter.sol\":20355:20359 path */\n dup8\n /* \"src/LBRouter.sol\":20355:20369 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":20370:20371 0 */\n 0x00\n /* \"src/LBRouter.sol\":20355:20372 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_292\n jumpi\n tag_293\n tag_176\n jump\t// in\n tag_293:\n tag_292:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":20374:20384 msg.sender */\n caller\n /* \"src/LBRouter.sol\":20386:20391 pairs */\n dup4\n /* \"src/LBRouter.sol\":20392:20393 0 */\n 0x00\n /* \"src/LBRouter.sol\":20386:20394 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_294\n jumpi\n tag_295\n tag_176\n jump\t// in\n tag_295:\n tag_294:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":20396:20405 amountsIn */\n dup8\n /* \"src/LBRouter.sol\":20406:20407 0 */\n 0x00\n /* \"src/LBRouter.sol\":20396:20408 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_296\n jumpi\n tag_297\n tag_176\n jump\t// in\n tag_297:\n tag_296:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":20337:20354 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":20337:20409 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountsIn[0]) */\n jump\t// in\n tag_291:\n /* \"src/LBRouter.sol\":20420:20442 uint256 _amountOutReal */\n 0x00\n /* \"src/LBRouter.sol\":20457:20546 _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, address(this)) */\n tag_298\n /* \"src/LBRouter.sol\":20483:20488 pairs */\n dup3\n /* \"src/LBRouter.sol\":20490:20494 path */\n dup10\n /* \"src/LBRouter.sol\":20490:20503 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":20505:20509 path */\n dup11\n /* \"src/LBRouter.sol\":20505:20519 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":20521:20530 amountsIn */\n dup9\n /* \"src/LBRouter.sol\":20540:20544 this */\n address\n /* \"src/LBRouter.sol\":20457:20482 _swapTokensForExactTokens */\n tag_238\n /* \"src/LBRouter.sol\":20457:20546 _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, address(this)) */\n jump\t// in\n tag_298:\n /* \"src/LBRouter.sol\":20420:20546 uint256 _amountOutReal =... */\n swap1\n pop\n /* \"src/LBRouter.sol\":20578:20593 amountNATIVEOut */\n dup10\n /* \"src/LBRouter.sol\":20561:20575 _amountOutReal */\n dup2\n /* \"src/LBRouter.sol\":20561:20593 _amountOutReal < amountNATIVEOut */\n lt\n /* \"src/LBRouter.sol\":20557:20666 if (_amountOutReal < amountNATIVEOut) revert LBRouter__InsufficientAmountOut(amountNATIVEOut, _amountOutReal) */\n iszero\n tag_299\n jumpi\n /* \"src/LBRouter.sol\":20634:20649 amountNATIVEOut */\n dup10\n /* \"src/LBRouter.sol\":20651:20665 _amountOutReal */\n dup2\n /* \"src/LBRouter.sol\":20602:20666 LBRouter__InsufficientAmountOut(amountNATIVEOut, _amountOutReal) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_300\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_300:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":20557:20666 if (_amountOutReal < amountNATIVEOut) revert LBRouter__InsufficientAmountOut(amountNATIVEOut, _amountOutReal) */\n tag_299:\n /* \"src/LBRouter.sol\":20677:20724 _wNativeWithdrawAndTransfer(to, _amountOutReal) */\n tag_301\n /* \"src/LBRouter.sol\":20705:20707 to */\n dup8\n /* \"src/LBRouter.sol\":20709:20723 _amountOutReal */\n dup3\n /* \"src/LBRouter.sol\":20677:20704 _wNativeWithdrawAndTransfer */\n tag_206\n /* \"src/LBRouter.sol\":20677:20724 _wNativeWithdrawAndTransfer(to, _amountOutReal) */\n jump\t// in\n tag_301:\n /* \"src/LBRouter.sol\":19851:20731 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":19572:20731 function swapTokensForExactNATIVE(... */\n pop\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":22625:23464 function swapExactTokensForTokensSupportingFeeOnTransferTokens(... */\n tag_60:\n /* \"src/LBRouter.sol\":22891:22908 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":22847:22855 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_303\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_304\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_304:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_303:\n /* \"src/LBRouter.sol\":22876:22880 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_306\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_306:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_307\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_308\n swap2\n swap1\n tag_171\n jump\t// in\n tag_308:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_307:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_309\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_309:\n /* \"src/LBRouter.sol\":22920:22942 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":22945:23004 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_311\n /* \"src/LBRouter.sol\":22955:22959 path */\n dup8\n /* \"src/LBRouter.sol\":22955:22972 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":22974:22978 path */\n dup9\n /* \"src/LBRouter.sol\":22974:22987 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":22989:22993 path */\n dup10\n /* \"src/LBRouter.sol\":22989:23003 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":22945:22954 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":22945:23004 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_311:\n /* \"src/LBRouter.sol\":22920:23004 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":23015:23033 IERC20 targetToken */\n 0x00\n /* \"src/LBRouter.sol\":23036:23040 path */\n dup8\n /* \"src/LBRouter.sol\":23036:23050 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":23051:23056 pairs */\n dup3\n /* \"src/LBRouter.sol\":23051:23063 pairs.length */\n mload\n /* \"src/LBRouter.sol\":23036:23064 path.tokenPath[pairs.length] */\n dup2\n mload\n dup2\n lt\n tag_312\n jumpi\n tag_313\n tag_176\n jump\t// in\n tag_313:\n tag_312:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":23015:23064 IERC20 targetToken = path.tokenPath[pairs.length] */\n swap1\n pop\n /* \"src/LBRouter.sol\":23075:23096 uint256 balanceBefore */\n 0x00\n /* \"src/LBRouter.sol\":23099:23110 targetToken */\n dup2\n /* \"src/LBRouter.sol\":23099:23120 targetToken.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":23121:23123 to */\n dup10\n /* \"src/LBRouter.sol\":23099:23124 targetToken.balanceOf(to) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_314\n swap2\n swap1\n tag_181\n jump\t// in\n tag_314:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_316\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_316:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_317\n swap2\n swap1\n tag_188\n jump\t// in\n tag_317:\n /* \"src/LBRouter.sol\":23075:23124 uint256 balanceBefore = targetToken.balanceOf(to) */\n swap1\n pop\n /* \"src/LBRouter.sol\":23135:23203 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n tag_318\n /* \"src/LBRouter.sol\":23153:23157 path */\n dup10\n /* \"src/LBRouter.sol\":23153:23167 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":23168:23169 0 */\n 0x00\n /* \"src/LBRouter.sol\":23153:23170 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_319\n jumpi\n tag_320\n tag_176\n jump\t// in\n tag_320:\n tag_319:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":23172:23182 msg.sender */\n caller\n /* \"src/LBRouter.sol\":23184:23189 pairs */\n dup6\n /* \"src/LBRouter.sol\":23190:23191 0 */\n 0x00\n /* \"src/LBRouter.sol\":23184:23192 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_321\n jumpi\n tag_322\n tag_176\n jump\t// in\n tag_322:\n tag_321:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":23194:23202 amountIn */\n dup15\n /* \"src/LBRouter.sol\":23135:23152 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":23135:23203 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n jump\t// in\n tag_318:\n /* \"src/LBRouter.sol\":23214:23290 _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, to) */\n tag_323\n /* \"src/LBRouter.sol\":23249:23254 pairs */\n dup4\n /* \"src/LBRouter.sol\":23256:23260 path */\n dup11\n /* \"src/LBRouter.sol\":23256:23269 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":23271:23275 path */\n dup12\n /* \"src/LBRouter.sol\":23271:23285 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":23287:23289 to */\n dup12\n /* \"src/LBRouter.sol\":23214:23248 _swapSupportingFeeOnTransferTokens */\n tag_196\n /* \"src/LBRouter.sol\":23214:23290 _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, to) */\n jump\t// in\n tag_323:\n /* \"src/LBRouter.sol\":23341:23354 balanceBefore */\n dup1\n /* \"src/LBRouter.sol\":23313:23324 targetToken */\n dup3\n /* \"src/LBRouter.sol\":23313:23334 targetToken.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":23335:23337 to */\n dup11\n /* \"src/LBRouter.sol\":23313:23338 targetToken.balanceOf(to) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_324\n swap2\n swap1\n tag_181\n jump\t// in\n tag_324:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_326\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_326:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_327\n swap2\n swap1\n tag_188\n jump\t// in\n tag_327:\n /* \"src/LBRouter.sol\":23313:23354 targetToken.balanceOf(to) - balanceBefore */\n tag_328\n swap2\n swap1\n tag_202\n jump\t// in\n tag_328:\n /* \"src/LBRouter.sol\":23301:23354 amountOut = targetToken.balanceOf(to) - balanceBefore */\n swap6\n pop\n /* \"src/LBRouter.sol\":23383:23392 amountOut */\n dup6\n /* \"src/LBRouter.sol\":23368:23380 amountOutMin */\n dup11\n /* \"src/LBRouter.sol\":23368:23392 amountOutMin > amountOut */\n gt\n /* \"src/LBRouter.sol\":23364:23457 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n iszero\n tag_329\n jumpi\n /* \"src/LBRouter.sol\":23433:23445 amountOutMin */\n dup10\n /* \"src/LBRouter.sol\":23447:23456 amountOut */\n dup7\n /* \"src/LBRouter.sol\":23401:23457 LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_330\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_330:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":23364:23457 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n tag_329:\n /* \"src/LBRouter.sol\":22910:23464 {... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":22625:23464 function swapExactTokensForTokensSupportingFeeOnTransferTokens(... */\n pop\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":26560:26996 function sweep(IERC20 token, address to, uint256 amount) external override onlyFactoryOwner {... */\n tag_66:\n /* \"src/LBRouter.sol\":2099:2108 _factory2 */\n immutable(\"0x2239ccbaf4e87000eba1be7b3740d3819308dc8e5f0056a0eb89462a60427836\")\n /* \"src/LBRouter.sol\":2083:2116 Ownable(address(_factory2)).owner */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8da5cb5b\n /* \"src/LBRouter.sol\":2083:2118 Ownable(address(_factory2)).owner() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_333\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_333:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_334\n swap2\n swap1\n tag_335\n jump\t// in\n tag_334:\n /* \"src/LBRouter.sol\":2069:2118 msg.sender != Ownable(address(_factory2)).owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":2069:2079 msg.sender */\n caller\n /* \"src/LBRouter.sol\":2069:2118 msg.sender != Ownable(address(_factory2)).owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":2065:2154 if (msg.sender != Ownable(address(_factory2)).owner()) revert LBRouter__NotFactoryOwner() */\n tag_336\n jumpi\n /* \"src/LBRouter.sol\":2127:2154 LBRouter__NotFactoryOwner() */\n mload(0x40)\n 0xbb2a2b7200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2065:2154 if (msg.sender != Ownable(address(_factory2)).owner()) revert LBRouter__NotFactoryOwner() */\n tag_336:\n /* \"src/LBRouter.sol\":26692:26693 0 */\n 0x00\n /* \"src/LBRouter.sol\":26666:26694 address(token) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":26674:26679 token */\n dup4\n /* \"src/LBRouter.sol\":26666:26694 address(token) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBRouter.sol\":26662:26990 if (address(token) == address(0)) {... */\n tag_338\n jumpi\n /* \"src/LBRouter.sol\":26729:26746 type(uint256).max */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"src/LBRouter.sol\":26719:26725 amount */\n dup2\n /* \"src/LBRouter.sol\":26719:26746 amount == type(uint256).max */\n eq\n /* \"src/LBRouter.sol\":26719:26779 amount == type(uint256).max ? address(this).balance : amount */\n tag_339\n jumpi\n /* \"src/LBRouter.sol\":26773:26779 amount */\n dup1\n /* \"src/LBRouter.sol\":26719:26779 amount == type(uint256).max ? address(this).balance : amount */\n jump(tag_340)\n tag_339:\n /* \"src/LBRouter.sol\":26749:26770 address(this).balance */\n selfbalance\n /* \"src/LBRouter.sol\":26719:26779 amount == type(uint256).max ? address(this).balance : amount */\n tag_340:\n /* \"src/LBRouter.sol\":26710:26779 amount = amount == type(uint256).max ? address(this).balance : amount */\n swap1\n pop\n /* \"src/LBRouter.sol\":26794:26825 _safeTransferNative(to, amount) */\n tag_341\n /* \"src/LBRouter.sol\":26814:26816 to */\n dup3\n /* \"src/LBRouter.sol\":26818:26824 amount */\n dup3\n /* \"src/LBRouter.sol\":26794:26813 _safeTransferNative */\n tag_248\n /* \"src/LBRouter.sol\":26794:26825 _safeTransferNative(to, amount) */\n jump\t// in\n tag_341:\n /* \"src/LBRouter.sol\":26662:26990 if (address(token) == address(0)) {... */\n jump(tag_342)\n tag_338:\n /* \"src/LBRouter.sol\":26875:26892 type(uint256).max */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"src/LBRouter.sol\":26865:26871 amount */\n dup2\n /* \"src/LBRouter.sol\":26865:26892 amount == type(uint256).max */\n eq\n /* \"src/LBRouter.sol\":26865:26934 amount == type(uint256).max ? token.balanceOf(address(this)) : amount */\n tag_343\n jumpi\n /* \"src/LBRouter.sol\":26928:26934 amount */\n dup1\n /* \"src/LBRouter.sol\":26865:26934 amount == type(uint256).max ? token.balanceOf(address(this)) : amount */\n jump(tag_344)\n tag_343:\n /* \"src/LBRouter.sol\":26895:26900 token */\n dup3\n /* \"src/LBRouter.sol\":26895:26910 token.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":26919:26923 this */\n address\n /* \"src/LBRouter.sol\":26895:26925 token.balanceOf(address(this)) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_345\n swap2\n swap1\n tag_181\n jump\t// in\n tag_345:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_347\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_347:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_348\n swap2\n swap1\n tag_188\n jump\t// in\n tag_348:\n /* \"src/LBRouter.sol\":26865:26934 amount == type(uint256).max ? token.balanceOf(address(this)) : amount */\n tag_344:\n /* \"src/LBRouter.sol\":26856:26934 amount = amount == type(uint256).max ? token.balanceOf(address(this)) : amount */\n swap1\n pop\n /* \"src/LBRouter.sol\":26949:26979 token.safeTransfer(to, amount) */\n tag_349\n /* \"src/LBRouter.sol\":26968:26970 to */\n dup3\n /* \"src/LBRouter.sol\":26972:26978 amount */\n dup3\n /* \"src/LBRouter.sol\":26949:26954 token */\n dup6\n /* \"src/LBRouter.sol\":26949:26967 token.safeTransfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n tag_350\n swap1\n /* \"src/LBRouter.sol\":26949:26979 token.safeTransfer(to, amount) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_349:\n /* \"src/LBRouter.sol\":26662:26990 if (address(token) == address(0)) {... */\n tag_342:\n /* \"src/LBRouter.sol\":26560:26996 function sweep(IERC20 token, address to, uint256 amount) external override onlyFactoryOwner {... */\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":6796:7031 function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)... */\n tag_71:\n /* \"src/LBRouter.sol\":6932:6944 ILBPair pair */\n 0x00\n /* \"src/LBRouter.sol\":6967:6976 _factory2 */\n immutable(\"0x2239ccbaf4e87000eba1be7b3740d3819308dc8e5f0056a0eb89462a60427836\")\n /* \"src/LBRouter.sol\":6967:6989 _factory2.createLBPair */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x659ac74b\n /* \"src/LBRouter.sol\":6990:6996 tokenX */\n dup7\n /* \"src/LBRouter.sol\":6998:7004 tokenY */\n dup7\n /* \"src/LBRouter.sol\":7006:7014 activeId */\n dup7\n /* \"src/LBRouter.sol\":7016:7023 binStep */\n dup7\n /* \"src/LBRouter.sol\":6967:7024 _factory2.createLBPair(tokenX, tokenY, activeId, binStep) */\n mload(0x40)\n dup6\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_352\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_353\n jump\t// in\n tag_352:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n gas\n call\n iszero\n dup1\n iszero\n tag_355\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_355:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_356\n swap2\n swap1\n tag_357\n jump\t// in\n tag_356:\n /* \"src/LBRouter.sol\":6960:7024 pair = _factory2.createLBPair(tokenX, tokenY, activeId, binStep) */\n swap1\n pop\n /* \"src/LBRouter.sol\":6796:7031 function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":3967:4071 function getWNATIVE() external view override returns (IWNATIVE wnative) {... */\n tag_76:\n /* \"src/LBRouter.sol\":4021:4037 IWNATIVE wnative */\n 0x00\n /* \"src/LBRouter.sol\":4056:4064 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":4049:4064 return _wnative */\n swap1\n pop\n /* \"src/LBRouter.sol\":3967:4071 function getWNATIVE() external view override returns (IWNATIVE wnative) {... */\n swap1\n jump\t// out\n /* \"src/LBRouter.sol\":3098:3143 function initialize() initializer external {} */\n tag_81:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4158:4188 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4191:4217 _getInitializableStorage() */\n tag_360\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4191:4215 _getInitializableStorage */\n tag_361\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4191:4217 _getInitializableStorage() */\n jump\t// in\n tag_360:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4158:4217 InitializableStorage storage $ = _getInitializableStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4279:4298 bool isTopLevelCall */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4302:4303 $ */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4302:4317 $._initializing */\n 0x00\n add\n 0x08\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4301:4317 !$._initializing */\n iszero\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4279:4317 bool isTopLevelCall = !$._initializing */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4327:4345 uint64 initialized */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4348:4349 $ */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4348:4362 $._initialized */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4327:4362 uint64 initialized = $._initialized */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4706:4723 bool initialSetup */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4741:4742 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4726:4737 initialized */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4726:4742 initialized == 0 */\n 0xffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4726:4760 initialized == 0 && isTopLevelCall */\n dup1\n iszero\n tag_362\n jumpi\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4746:4760 isTopLevelCall */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4726:4760 initialized == 0 && isTopLevelCall */\n tag_362:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4706:4760 bool initialSetup = initialized == 0 && isTopLevelCall */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4770:4787 bool construction */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4805:4806 1 */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4790:4801 initialized */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4790:4806 initialized == 1 */\n 0xffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4790:4840 initialized == 1 && address(this).code.length == 0 */\n dup1\n iszero\n tag_363\n jumpi\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4839:4840 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4818:4822 this */\n address\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4810:4835 address(this).code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4810:4840 address(this).code.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4790:4840 initialized == 1 && address(this).code.length == 0 */\n tag_363:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4770:4840 bool construction = initialized == 1 && address(this).code.length == 0 */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4856:4868 initialSetup */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4855:4868 !initialSetup */\n iszero\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4855:4885 !initialSetup && !construction */\n dup1\n iszero\n tag_364\n jumpi\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4873:4885 construction */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4872:4885 !construction */\n iszero\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4855:4885 !initialSetup && !construction */\n tag_364:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4851:4942 if (!initialSetup && !construction) {... */\n iszero\n tag_365\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4908:4931 InvalidInitialization() */\n mload(0x40)\n 0xf92ee8a900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4851:4942 if (!initialSetup && !construction) {... */\n tag_365:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4968:4969 1 */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4951:4952 $ */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4951:4965 $._initialized */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4951:4969 $._initialized = 1 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4983:4997 isTopLevelCall */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4979:5046 if (isTopLevelCall) {... */\n iszero\n tag_366\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5031:5035 true */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5013:5014 $ */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5013:5028 $._initializing */\n 0x00\n add\n 0x08\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5013:5035 $._initializing = true */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4979:5046 if (isTopLevelCall) {... */\n tag_366:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5070:5084 isTopLevelCall */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5066:5167 if (isTopLevelCall) {... */\n iszero\n tag_368\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5118:5123 false */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5100:5101 $ */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5100:5115 $._initializing */\n 0x00\n add\n 0x08\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5100:5123 $._initializing = false */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5142:5156 Initialized(1) */\n 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5154:5155 1 */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5142:5156 Initialized(1) */\n mload(0x40)\n tag_369\n swap2\n swap1\n tag_370\n jump\t// in\n tag_369:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":5066:5167 if (isTopLevelCall) {... */\n tag_368:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":4092:5173 {... */\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":3098:3143 function initialize() initializer external {} */\n jump\t// out\n /* \"src/LBRouter.sol\":13396:14437 function removeLiquidityNATIVE(... */\n tag_86:\n /* \"src/LBRouter.sol\":13706:13725 uint256 amountToken */\n 0x00\n /* \"src/LBRouter.sol\":13727:13747 uint256 amountNATIVE */\n dup1\n /* \"src/LBRouter.sol\":13687:13695 deadline */\n dup3\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_372\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_373\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_373:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_372:\n /* \"src/LBRouter.sol\":13759:13773 ILBPair lbPair */\n 0x00\n /* \"src/LBRouter.sol\":13784:13839 _getLBPairInformation(token, IERC20(_wnative), binStep) */\n tag_375\n /* \"src/LBRouter.sol\":13806:13811 token */\n dup13\n /* \"src/LBRouter.sol\":13820:13828 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":13831:13838 binStep */\n dup14\n /* \"src/LBRouter.sol\":13784:13839 _getLBPairInformation(token, IERC20(_wnative), binStep) */\n 0xffff\n and\n /* \"src/LBRouter.sol\":13784:13805 _getLBPairInformation */\n tag_376\n /* \"src/LBRouter.sol\":13784:13839 _getLBPairInformation(token, IERC20(_wnative), binStep) */\n jump\t// in\n tag_375:\n /* \"src/LBRouter.sol\":13759:13840 ILBPair lbPair = ILBPair(_getLBPairInformation(token, IERC20(_wnative), binStep)) */\n swap1\n pop\n /* \"src/LBRouter.sol\":13865:13884 bool isNATIVETokenY */\n 0x00\n /* \"src/LBRouter.sol\":13907:13913 lbPair */\n dup2\n /* \"src/LBRouter.sol\":13907:13923 lbPair.getTokenY */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xda10610c\n /* \"src/LBRouter.sol\":13907:13925 lbPair.getTokenY() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_378\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_378:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_379\n swap2\n swap1\n tag_380\n jump\t// in\n tag_379:\n /* \"src/LBRouter.sol\":13887:13925 IERC20(_wnative) == lbPair.getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":13894:13902 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":13887:13925 IERC20(_wnative) == lbPair.getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":13865:13925 bool isNATIVETokenY = IERC20(_wnative) == lbPair.getTokenY() */\n swap1\n pop\n /* \"src/LBRouter.sol\":13945:13959 isNATIVETokenY */\n dup1\n /* \"src/LBRouter.sol\":13940:14063 if (!isNATIVETokenY) {... */\n tag_381\n jumpi\n /* \"src/LBRouter.sol\":14016:14031 amountNATIVEMin */\n dup10\n /* \"src/LBRouter.sol\":14033:14047 amountTokenMin */\n dup12\n /* \"src/LBRouter.sol\":13979:14048 (amountTokenMin, amountNATIVEMin) = (amountNATIVEMin, amountTokenMin) */\n dup1\n swap12\n pop\n dup2\n swap13\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":13940:14063 if (!isNATIVETokenY) {... */\n tag_381:\n /* \"src/LBRouter.sol\":14078:14093 uint256 amountX */\n 0x00\n /* \"src/LBRouter.sol\":14095:14110 uint256 amountY */\n dup1\n /* \"src/LBRouter.sol\":14130:14216 _removeLiquidity(lbPair, amountTokenMin, amountNATIVEMin, ids, amounts, address(this)) */\n tag_382\n /* \"src/LBRouter.sol\":14147:14153 lbPair */\n dup5\n /* \"src/LBRouter.sol\":14155:14169 amountTokenMin */\n dup15\n /* \"src/LBRouter.sol\":14171:14186 amountNATIVEMin */\n dup15\n /* \"src/LBRouter.sol\":14188:14191 ids */\n dup15\n /* \"src/LBRouter.sol\":14193:14200 amounts */\n dup15\n /* \"src/LBRouter.sol\":14210:14214 this */\n address\n /* \"src/LBRouter.sol\":14130:14146 _removeLiquidity */\n tag_383\n /* \"src/LBRouter.sol\":14130:14216 _removeLiquidity(lbPair, amountTokenMin, amountNATIVEMin, ids, amounts, address(this)) */\n jump\t// in\n tag_382:\n /* \"src/LBRouter.sol\":14077:14216 (uint256 amountX, uint256 amountY) =... */\n swap2\n pop\n swap2\n pop\n /* \"src/LBRouter.sol\":14261:14275 isNATIVETokenY */\n dup3\n /* \"src/LBRouter.sol\":14261:14317 isNATIVETokenY ? (amountX, amountY) : (amountY, amountX) */\n tag_384\n jumpi\n /* \"src/LBRouter.sol\":14300:14307 amountY */\n dup1\n /* \"src/LBRouter.sol\":14309:14316 amountX */\n dup3\n /* \"src/LBRouter.sol\":14261:14317 isNATIVETokenY ? (amountX, amountY) : (amountY, amountX) */\n jump(tag_385)\n tag_384:\n /* \"src/LBRouter.sol\":14279:14286 amountX */\n dup2\n /* \"src/LBRouter.sol\":14288:14295 amountY */\n dup2\n /* \"src/LBRouter.sol\":14261:14317 isNATIVETokenY ? (amountX, amountY) : (amountY, amountX) */\n tag_385:\n /* \"src/LBRouter.sol\":14231:14317 (amountToken, amountNATIVE) = isNATIVETokenY ? (amountX, amountY) : (amountY, amountX) */\n dup1\n swap8\n pop\n dup2\n swap9\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":13851:14328 {... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":14338:14375 _safeTransfer(token, to, amountToken) */\n tag_386\n /* \"src/LBRouter.sol\":14352:14357 token */\n dup13\n /* \"src/LBRouter.sol\":14359:14361 to */\n dup8\n /* \"src/LBRouter.sol\":14363:14374 amountToken */\n dup7\n /* \"src/LBRouter.sol\":14338:14351 _safeTransfer */\n tag_387\n /* \"src/LBRouter.sol\":14338:14375 _safeTransfer(token, to, amountToken) */\n jump\t// in\n tag_386:\n /* \"src/LBRouter.sol\":14385:14430 _wNativeWithdrawAndTransfer(to, amountNATIVE) */\n tag_388\n /* \"src/LBRouter.sol\":14413:14415 to */\n dup7\n /* \"src/LBRouter.sol\":14417:14429 amountNATIVE */\n dup5\n /* \"src/LBRouter.sol\":14385:14412 _wNativeWithdrawAndTransfer */\n tag_206\n /* \"src/LBRouter.sol\":14385:14430 _wNativeWithdrawAndTransfer(to, amountNATIVE) */\n jump\t// in\n tag_388:\n /* \"src/LBRouter.sol\":13749:14437 {... */\n pop\n /* \"src/LBRouter.sol\":13396:14437 function removeLiquidityNATIVE(... */\n pop\n swap9\n pop\n swap9\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":3494:3603 function getFactory() external view override returns (ILBFactory lbFactory) {... */\n tag_91:\n /* \"src/LBRouter.sol\":3548:3568 ILBFactory lbFactory */\n 0x00\n /* \"src/LBRouter.sol\":3587:3596 _factory2 */\n immutable(\"0x2239ccbaf4e87000eba1be7b3740d3819308dc8e5f0056a0eb89462a60427836\")\n /* \"src/LBRouter.sol\":3580:3596 return _factory2 */\n swap1\n pop\n /* \"src/LBRouter.sol\":3494:3603 function getFactory() external view override returns (ILBFactory lbFactory) {... */\n swap1\n jump\t// out\n /* \"src/LBRouter.sol\":9334:11070 function addLiquidityNATIVE(LiquidityParameters calldata liquidityParameters)... */\n tag_97:\n /* \"src/LBRouter.sol\":9492:9512 uint256 amountXAdded */\n 0x00\n /* \"src/LBRouter.sol\":9526:9546 uint256 amountYAdded */\n dup1\n /* \"src/LBRouter.sol\":9560:9579 uint256 amountXLeft */\n 0x00\n /* \"src/LBRouter.sol\":9593:9612 uint256 amountYLeft */\n dup1\n /* \"src/LBRouter.sol\":9626:9653 uint256[] memory depositIds */\n 0x60\n /* \"src/LBRouter.sol\":9667:9699 uint256[] memory liquidityMinted */\n dup1\n /* \"src/LBRouter.sol\":9724:9739 ILBPair _LBPair */\n 0x00\n /* \"src/LBRouter.sol\":9763:9899 _getLBPairInformation(... */\n tag_391\n /* \"src/LBRouter.sol\":9802:9821 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":9802:9828 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_392\n swap2\n swap1\n tag_393\n jump\t// in\n tag_392:\n /* \"src/LBRouter.sol\":9830:9849 liquidityParameters */\n dup10\n /* \"src/LBRouter.sol\":9830:9856 liquidityParameters.tokenY */\n 0x20\n add\n 0x20\n dup2\n add\n swap1\n tag_394\n swap2\n swap1\n tag_393\n jump\t// in\n tag_394:\n /* \"src/LBRouter.sol\":9858:9877 liquidityParameters */\n dup11\n /* \"src/LBRouter.sol\":9858:9885 liquidityParameters.binStep */\n 0x40\n add\n calldataload\n /* \"src/LBRouter.sol\":9763:9784 _getLBPairInformation */\n tag_376\n /* \"src/LBRouter.sol\":9763:9899 _getLBPairInformation(... */\n jump\t// in\n tag_391:\n /* \"src/LBRouter.sol\":9724:9909 ILBPair _LBPair = ILBPair(... */\n swap1\n pop\n /* \"src/LBRouter.sol\":9953:9960 _LBPair */\n dup1\n /* \"src/LBRouter.sol\":9953:9970 _LBPair.getTokenX */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x05e8746d\n /* \"src/LBRouter.sol\":9953:9972 _LBPair.getTokenX() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_396\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_396:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_397\n swap2\n swap1\n tag_380\n jump\t// in\n tag_397:\n /* \"src/LBRouter.sol\":9923:9972 liquidityParameters.tokenX != _LBPair.getTokenX() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":9923:9942 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":9923:9949 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_398\n swap2\n swap1\n tag_393\n jump\t// in\n tag_398:\n /* \"src/LBRouter.sol\":9923:9972 liquidityParameters.tokenX != _LBPair.getTokenX() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":9919:10008 if (liquidityParameters.tokenX != _LBPair.getTokenX()) revert LBRouter__WrongTokenOrder() */\n tag_399\n jumpi\n /* \"src/LBRouter.sol\":9981:10008 LBRouter__WrongTokenOrder() */\n mload(0x40)\n 0xb33f8ab900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":9919:10008 if (liquidityParameters.tokenX != _LBPair.getTokenX()) revert LBRouter__WrongTokenOrder() */\n tag_399:\n /* \"src/LBRouter.sol\":10053:10061 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":10023:10061 liquidityParameters.tokenX == _wnative */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":10023:10042 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":10023:10049 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_400\n swap2\n swap1\n tag_393\n jump\t// in\n tag_400:\n /* \"src/LBRouter.sol\":10023:10061 liquidityParameters.tokenX == _wnative */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":10023:10105 liquidityParameters.tokenX == _wnative && liquidityParameters.amountX == msg.value */\n dup1\n iszero\n tag_401\n jumpi\n pop\n /* \"src/LBRouter.sol\":10096:10105 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":10065:10084 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":10065:10092 liquidityParameters.amountX */\n 0x60\n add\n calldataload\n /* \"src/LBRouter.sol\":10065:10105 liquidityParameters.amountX == msg.value */\n eq\n /* \"src/LBRouter.sol\":10023:10105 liquidityParameters.tokenX == _wnative && liquidityParameters.amountX == msg.value */\n tag_401:\n /* \"src/LBRouter.sol\":10019:10912 if (liquidityParameters.tokenX == _wnative && liquidityParameters.amountX == msg.value) {... */\n iszero\n tag_402\n jumpi\n /* \"src/LBRouter.sol\":10121:10225 _safeTransferFrom(liquidityParameters.tokenY, msg.sender, address(_LBPair), liquidityParameters.amountY) */\n tag_403\n /* \"src/LBRouter.sol\":10139:10158 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":10139:10165 liquidityParameters.tokenY */\n 0x20\n add\n 0x20\n dup2\n add\n swap1\n tag_404\n swap2\n swap1\n tag_393\n jump\t// in\n tag_404:\n /* \"src/LBRouter.sol\":10167:10177 msg.sender */\n caller\n /* \"src/LBRouter.sol\":10187:10194 _LBPair */\n dup4\n /* \"src/LBRouter.sol\":10197:10216 liquidityParameters */\n dup12\n /* \"src/LBRouter.sol\":10197:10224 liquidityParameters.amountY */\n 0x80\n add\n calldataload\n /* \"src/LBRouter.sol\":10121:10138 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":10121:10225 _safeTransferFrom(liquidityParameters.tokenY, msg.sender, address(_LBPair), liquidityParameters.amountY) */\n jump\t// in\n tag_403:\n /* \"src/LBRouter.sol\":10239:10294 _wNativeDepositAndTransfer(address(_LBPair), msg.value) */\n tag_405\n /* \"src/LBRouter.sol\":10274:10281 _LBPair */\n dup2\n /* \"src/LBRouter.sol\":10284:10293 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":10239:10265 _wNativeDepositAndTransfer */\n tag_236\n /* \"src/LBRouter.sol\":10239:10294 _wNativeDepositAndTransfer(address(_LBPair), msg.value) */\n jump\t// in\n tag_405:\n /* \"src/LBRouter.sol\":10019:10912 if (liquidityParameters.tokenX == _wnative && liquidityParameters.amountX == msg.value) {... */\n jump(tag_406)\n tag_402:\n /* \"src/LBRouter.sol\":10345:10353 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":10315:10353 liquidityParameters.tokenY == _wnative */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":10315:10334 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":10315:10341 liquidityParameters.tokenY */\n 0x20\n add\n 0x20\n dup2\n add\n swap1\n tag_407\n swap2\n swap1\n tag_393\n jump\t// in\n tag_407:\n /* \"src/LBRouter.sol\":10315:10353 liquidityParameters.tokenY == _wnative */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":10315:10397 liquidityParameters.tokenY == _wnative && liquidityParameters.amountY == msg.value */\n dup1\n iszero\n tag_408\n jumpi\n pop\n /* \"src/LBRouter.sol\":10388:10397 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":10357:10376 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":10357:10384 liquidityParameters.amountY */\n 0x80\n add\n calldataload\n /* \"src/LBRouter.sol\":10357:10397 liquidityParameters.amountY == msg.value */\n eq\n /* \"src/LBRouter.sol\":10315:10397 liquidityParameters.tokenY == _wnative && liquidityParameters.amountY == msg.value */\n tag_408:\n /* \"src/LBRouter.sol\":10311:10912 if (liquidityParameters.tokenY == _wnative && liquidityParameters.amountY == msg.value) {... */\n iszero\n tag_409\n jumpi\n /* \"src/LBRouter.sol\":10413:10517 _safeTransferFrom(liquidityParameters.tokenX, msg.sender, address(_LBPair), liquidityParameters.amountX) */\n tag_410\n /* \"src/LBRouter.sol\":10431:10450 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":10431:10457 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_411\n swap2\n swap1\n tag_393\n jump\t// in\n tag_411:\n /* \"src/LBRouter.sol\":10459:10469 msg.sender */\n caller\n /* \"src/LBRouter.sol\":10479:10486 _LBPair */\n dup4\n /* \"src/LBRouter.sol\":10489:10508 liquidityParameters */\n dup12\n /* \"src/LBRouter.sol\":10489:10516 liquidityParameters.amountX */\n 0x60\n add\n calldataload\n /* \"src/LBRouter.sol\":10413:10430 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":10413:10517 _safeTransferFrom(liquidityParameters.tokenX, msg.sender, address(_LBPair), liquidityParameters.amountX) */\n jump\t// in\n tag_410:\n /* \"src/LBRouter.sol\":10531:10586 _wNativeDepositAndTransfer(address(_LBPair), msg.value) */\n tag_412\n /* \"src/LBRouter.sol\":10566:10573 _LBPair */\n dup2\n /* \"src/LBRouter.sol\":10576:10585 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":10531:10557 _wNativeDepositAndTransfer */\n tag_236\n /* \"src/LBRouter.sol\":10531:10586 _wNativeDepositAndTransfer(address(_LBPair), msg.value) */\n jump\t// in\n tag_412:\n /* \"src/LBRouter.sol\":10311:10912 if (liquidityParameters.tokenY == _wnative && liquidityParameters.amountY == msg.value) {... */\n jump(tag_413)\n tag_409:\n /* \"src/LBRouter.sol\":10690:10709 liquidityParameters */\n dup8\n /* \"src/LBRouter.sol\":10690:10716 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_414\n swap2\n swap1\n tag_393\n jump\t// in\n tag_414:\n /* \"src/LBRouter.sol\":10743:10762 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":10743:10769 liquidityParameters.tokenY */\n 0x20\n add\n 0x20\n dup2\n add\n swap1\n tag_415\n swap2\n swap1\n tag_393\n jump\t// in\n tag_415:\n /* \"src/LBRouter.sol\":10788:10807 liquidityParameters */\n dup10\n /* \"src/LBRouter.sol\":10788:10815 liquidityParameters.amountX */\n 0x60\n add\n calldataload\n /* \"src/LBRouter.sol\":10833:10852 liquidityParameters */\n dup11\n /* \"src/LBRouter.sol\":10833:10860 liquidityParameters.amountY */\n 0x80\n add\n calldataload\n /* \"src/LBRouter.sol\":10878:10887 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":10624:10901 LBRouter__WrongNativeLiquidityParameters(... */\n mload(0x40)\n 0xd0a4f13b00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_416\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_417\n jump\t// in\n tag_416:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":10311:10912 if (liquidityParameters.tokenY == _wnative && liquidityParameters.amountY == msg.value) {... */\n tag_413:\n /* \"src/LBRouter.sol\":10019:10912 if (liquidityParameters.tokenX == _wnative && liquidityParameters.amountX == msg.value) {... */\n tag_406:\n /* \"src/LBRouter.sol\":11020:11063 _addLiquidity(liquidityParameters, _LBPair) */\n tag_418\n /* \"src/LBRouter.sol\":11034:11053 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":11055:11062 _LBPair */\n dup3\n /* \"src/LBRouter.sol\":11020:11033 _addLiquidity */\n tag_419\n /* \"src/LBRouter.sol\":11020:11063 _addLiquidity(liquidityParameters, _LBPair) */\n jump\t// in\n tag_418:\n /* \"src/LBRouter.sol\":10922:11063 (amountXAdded, amountYAdded, amountXLeft, amountYLeft, depositIds, liquidityMinted) =... */\n dup1\n swap8\n pop\n dup2\n swap9\n pop\n dup3\n swap10\n pop\n dup4\n swap11\n pop\n dup5\n swap12\n pop\n dup6\n swap13\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":9714:11070 {... */\n pop\n /* \"src/LBRouter.sol\":9334:11070 function addLiquidityNATIVE(LiquidityParameters calldata liquidityParameters)... */\n swap2\n swap4\n swap6\n pop\n swap2\n swap4\n swap6\n jump\t// out\n /* \"src/LBRouter.sol\":18255:19157 function swapTokensForExactTokens(... */\n tag_103:\n /* \"src/LBRouter.sol\":18492:18518 uint256[] memory amountsIn */\n 0x60\n /* \"src/LBRouter.sol\":18448:18456 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_421\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_422\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_422:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_421:\n /* \"src/LBRouter.sol\":18477:18481 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_424\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_424:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_425\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_426\n swap2\n swap1\n tag_171\n jump\t// in\n tag_426:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_425:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_427\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_427:\n /* \"src/LBRouter.sol\":18530:18552 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":18555:18614 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_429\n /* \"src/LBRouter.sol\":18565:18569 path */\n dup8\n /* \"src/LBRouter.sol\":18565:18582 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":18584:18588 path */\n dup9\n /* \"src/LBRouter.sol\":18584:18597 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":18599:18603 path */\n dup10\n /* \"src/LBRouter.sol\":18599:18613 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":18555:18564 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":18555:18614 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_429:\n /* \"src/LBRouter.sol\":18530:18614 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":18651:18713 _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut) */\n tag_430\n /* \"src/LBRouter.sol\":18665:18669 path */\n dup8\n /* \"src/LBRouter.sol\":18665:18678 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":18680:18685 pairs */\n dup3\n /* \"src/LBRouter.sol\":18687:18691 path */\n dup10\n /* \"src/LBRouter.sol\":18687:18701 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":18703:18712 amountOut */\n dup13\n /* \"src/LBRouter.sol\":18651:18664 _getAmountsIn */\n tag_224\n /* \"src/LBRouter.sol\":18651:18713 _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut) */\n jump\t// in\n tag_430:\n /* \"src/LBRouter.sol\":18639:18713 amountsIn = _getAmountsIn(path.versions, pairs, path.tokenPath, amountOut) */\n swap4\n pop\n /* \"src/LBRouter.sol\":18747:18758 amountInMax */\n dup8\n /* \"src/LBRouter.sol\":18732:18741 amountsIn */\n dup5\n /* \"src/LBRouter.sol\":18742:18743 0 */\n 0x00\n /* \"src/LBRouter.sol\":18732:18744 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_431\n jumpi\n tag_432\n tag_176\n jump\t// in\n tag_432:\n tag_431:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":18732:18758 amountsIn[0] > amountInMax */\n gt\n /* \"src/LBRouter.sol\":18728:18823 if (amountsIn[0] > amountInMax) revert LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]) */\n iszero\n tag_433\n jumpi\n /* \"src/LBRouter.sol\":18797:18808 amountInMax */\n dup8\n /* \"src/LBRouter.sol\":18810:18819 amountsIn */\n dup5\n /* \"src/LBRouter.sol\":18820:18821 0 */\n 0x00\n /* \"src/LBRouter.sol\":18810:18822 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_434\n jumpi\n tag_435\n tag_176\n jump\t// in\n tag_435:\n tag_434:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":18767:18823 LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]) */\n mload(0x40)\n 0xca7710c800000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_436\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_436:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":18728:18823 if (amountsIn[0] > amountInMax) revert LBRouter__MaxAmountInExceeded(amountInMax, amountsIn[0]) */\n tag_433:\n /* \"src/LBRouter.sol\":18838:18910 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountsIn[0]) */\n tag_437\n /* \"src/LBRouter.sol\":18856:18860 path */\n dup8\n /* \"src/LBRouter.sol\":18856:18870 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":18871:18872 0 */\n 0x00\n /* \"src/LBRouter.sol\":18856:18873 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_438\n jumpi\n tag_439\n tag_176\n jump\t// in\n tag_439:\n tag_438:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":18875:18885 msg.sender */\n caller\n /* \"src/LBRouter.sol\":18887:18892 pairs */\n dup4\n /* \"src/LBRouter.sol\":18893:18894 0 */\n 0x00\n /* \"src/LBRouter.sol\":18887:18895 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_440\n jumpi\n tag_441\n tag_176\n jump\t// in\n tag_441:\n tag_440:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":18897:18906 amountsIn */\n dup8\n /* \"src/LBRouter.sol\":18907:18908 0 */\n 0x00\n /* \"src/LBRouter.sol\":18897:18909 amountsIn[0] */\n dup2\n mload\n dup2\n lt\n tag_442\n jumpi\n tag_443\n tag_176\n jump\t// in\n tag_443:\n tag_442:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":18838:18855 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":18838:18910 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountsIn[0]) */\n jump\t// in\n tag_437:\n /* \"src/LBRouter.sol\":18925:18947 uint256 _amountOutReal */\n 0x00\n /* \"src/LBRouter.sol\":18950:19028 _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to) */\n tag_444\n /* \"src/LBRouter.sol\":18976:18981 pairs */\n dup3\n /* \"src/LBRouter.sol\":18983:18987 path */\n dup10\n /* \"src/LBRouter.sol\":18983:18996 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":18998:19002 path */\n dup11\n /* \"src/LBRouter.sol\":18998:19012 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":19014:19023 amountsIn */\n dup9\n /* \"src/LBRouter.sol\":19025:19027 to */\n dup12\n /* \"src/LBRouter.sol\":18950:18975 _swapTokensForExactTokens */\n tag_238\n /* \"src/LBRouter.sol\":18950:19028 _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to) */\n jump\t// in\n tag_444:\n /* \"src/LBRouter.sol\":18925:19028 uint256 _amountOutReal = _swapTokensForExactTokens(pairs, path.versions, path.tokenPath, amountsIn, to) */\n swap1\n pop\n /* \"src/LBRouter.sol\":19064:19073 amountOut */\n dup10\n /* \"src/LBRouter.sol\":19047:19061 _amountOutReal */\n dup2\n /* \"src/LBRouter.sol\":19047:19073 _amountOutReal < amountOut */\n lt\n /* \"src/LBRouter.sol\":19043:19140 if (_amountOutReal < amountOut) revert LBRouter__InsufficientAmountOut(amountOut, _amountOutReal) */\n iszero\n tag_445\n jumpi\n /* \"src/LBRouter.sol\":19114:19123 amountOut */\n dup10\n /* \"src/LBRouter.sol\":19125:19139 _amountOutReal */\n dup2\n /* \"src/LBRouter.sol\":19082:19140 LBRouter__InsufficientAmountOut(amountOut, _amountOutReal) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_446\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_446:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":19043:19140 if (_amountOutReal < amountOut) revert LBRouter__InsufficientAmountOut(amountOut, _amountOutReal) */\n tag_445:\n /* \"src/LBRouter.sol\":18625:19151 {... */\n pop\n /* \"src/LBRouter.sol\":18520:19157 {... */\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":18255:19157 function swapTokensForExactTokens(... */\n pop\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":5379:5651 function getSwapIn(ILBPair pair, uint128 amountOut, bool swapForY)... */\n tag_109:\n /* \"src/LBRouter.sol\":5508:5524 uint128 amountIn */\n 0x00\n /* \"src/LBRouter.sol\":5526:5547 uint128 amountOutLeft */\n dup1\n /* \"src/LBRouter.sol\":5549:5560 uint128 fee */\n 0x00\n /* \"src/LBRouter.sol\":5609:5613 pair */\n dup6\n /* \"src/LBRouter.sol\":5609:5623 pair.getSwapIn */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xabcd7830\n /* \"src/LBRouter.sol\":5624:5633 amountOut */\n dup7\n /* \"src/LBRouter.sol\":5635:5643 swapForY */\n dup7\n /* \"src/LBRouter.sol\":5609:5644 pair.getSwapIn(amountOut, swapForY) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_448\n swap3\n swap2\n swap1\n tag_449\n jump\t// in\n tag_448:\n 0x60\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_451\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_451:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_452\n swap2\n swap1\n tag_453\n jump\t// in\n tag_452:\n /* \"src/LBRouter.sol\":5576:5644 (amountIn, amountOutLeft, fee) = pair.getSwapIn(amountOut, swapForY) */\n dup1\n swap4\n pop\n dup2\n swap5\n pop\n dup3\n swap6\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":5379:5651 function getSwapIn(ILBPair pair, uint128 amountOut, bool swapForY)... */\n swap4\n pop\n swap4\n pop\n swap4\n swap1\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":15872:16787 function swapExactTokensForNATIVE(... */\n tag_115:\n /* \"src/LBRouter.sol\":16123:16140 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":16079:16087 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_455\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_456\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_456:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_455:\n /* \"src/LBRouter.sol\":16108:16112 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_458\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_458:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_459\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_460\n swap2\n swap1\n tag_171\n jump\t// in\n tag_460:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_459:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_461\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_461:\n /* \"src/LBRouter.sol\":16207:16215 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":16156:16216 path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":16156:16160 path */\n dup7\n /* \"src/LBRouter.sol\":16156:16170 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":16171:16175 path */\n dup8\n /* \"src/LBRouter.sol\":16171:16188 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":16171:16195 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":16156:16196 path.tokenPath[path.pairBinSteps.length] */\n dup2\n mload\n dup2\n lt\n tag_463\n jumpi\n tag_464\n tag_176\n jump\t// in\n tag_464:\n tag_463:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":16156:16216 path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":16152:16327 if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {... */\n tag_465\n jumpi\n /* \"src/LBRouter.sol\":16274:16278 path */\n dup6\n /* \"src/LBRouter.sol\":16274:16288 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":16289:16293 path */\n dup7\n /* \"src/LBRouter.sol\":16289:16306 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":16289:16313 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":16274:16314 path.tokenPath[path.pairBinSteps.length] */\n dup2\n mload\n dup2\n lt\n tag_466\n jumpi\n tag_467\n tag_176\n jump\t// in\n tag_467:\n tag_466:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":16239:16316 LBRouter__InvalidTokenPath(address(path.tokenPath[path.pairBinSteps.length])) */\n mload(0x40)\n 0xcfec0e0100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_468\n swap2\n swap1\n tag_181\n jump\t// in\n tag_468:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":16152:16327 if (path.tokenPath[path.pairBinSteps.length] != IERC20(_wnative)) {... */\n tag_465:\n /* \"src/LBRouter.sol\":16337:16359 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":16362:16421 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_469\n /* \"src/LBRouter.sol\":16372:16376 path */\n dup8\n /* \"src/LBRouter.sol\":16372:16389 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":16391:16395 path */\n dup9\n /* \"src/LBRouter.sol\":16391:16404 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":16406:16410 path */\n dup10\n /* \"src/LBRouter.sol\":16406:16420 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":16362:16371 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":16362:16421 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_469:\n /* \"src/LBRouter.sol\":16337:16421 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":16432:16500 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n tag_470\n /* \"src/LBRouter.sol\":16450:16454 path */\n dup8\n /* \"src/LBRouter.sol\":16450:16464 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":16465:16466 0 */\n 0x00\n /* \"src/LBRouter.sol\":16450:16467 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_471\n jumpi\n tag_472\n tag_176\n jump\t// in\n tag_472:\n tag_471:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":16469:16479 msg.sender */\n caller\n /* \"src/LBRouter.sol\":16481:16486 pairs */\n dup4\n /* \"src/LBRouter.sol\":16487:16488 0 */\n 0x00\n /* \"src/LBRouter.sol\":16481:16489 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_473\n jumpi\n tag_474\n tag_176\n jump\t// in\n tag_474:\n tag_473:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":16491:16499 amountIn */\n dup13\n /* \"src/LBRouter.sol\":16432:16449 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":16432:16500 _safeTransferFrom(path.tokenPath[0], msg.sender, pairs[0], amountIn) */\n jump\t// in\n tag_470:\n /* \"src/LBRouter.sol\":16523:16611 _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, address(this)) */\n tag_475\n /* \"src/LBRouter.sol\":16549:16557 amountIn */\n dup10\n /* \"src/LBRouter.sol\":16559:16564 pairs */\n dup3\n /* \"src/LBRouter.sol\":16566:16570 path */\n dup10\n /* \"src/LBRouter.sol\":16566:16579 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":16581:16585 path */\n dup11\n /* \"src/LBRouter.sol\":16581:16595 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":16605:16609 this */\n address\n /* \"src/LBRouter.sol\":16523:16548 _swapExactTokensForTokens */\n tag_265\n /* \"src/LBRouter.sol\":16523:16611 _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, address(this)) */\n jump\t// in\n tag_475:\n /* \"src/LBRouter.sol\":16511:16611 amountOut = _swapExactTokensForTokens(amountIn, pairs, path.versions, path.tokenPath, address(this)) */\n swap4\n pop\n /* \"src/LBRouter.sol\":16647:16656 amountOut */\n dup4\n /* \"src/LBRouter.sol\":16626:16644 amountOutMinNATIVE */\n dup9\n /* \"src/LBRouter.sol\":16626:16656 amountOutMinNATIVE > amountOut */\n gt\n /* \"src/LBRouter.sol\":16622:16727 if (amountOutMinNATIVE > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut) */\n iszero\n tag_476\n jumpi\n /* \"src/LBRouter.sol\":16697:16715 amountOutMinNATIVE */\n dup8\n /* \"src/LBRouter.sol\":16717:16726 amountOut */\n dup5\n /* \"src/LBRouter.sol\":16665:16727 LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_477\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_477:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":16622:16727 if (amountOutMinNATIVE > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMinNATIVE, amountOut) */\n tag_476:\n /* \"src/LBRouter.sol\":16738:16780 _wNativeWithdrawAndTransfer(to, amountOut) */\n tag_478\n /* \"src/LBRouter.sol\":16766:16768 to */\n dup7\n /* \"src/LBRouter.sol\":16770:16779 amountOut */\n dup6\n /* \"src/LBRouter.sol\":16738:16765 _wNativeWithdrawAndTransfer */\n tag_206\n /* \"src/LBRouter.sol\":16738:16780 _wNativeWithdrawAndTransfer(to, amountOut) */\n jump\t// in\n tag_478:\n /* \"src/LBRouter.sol\":16142:16787 {... */\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":15872:16787 function swapExactTokensForNATIVE(... */\n pop\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":6115:6389 function getSwapOut(ILBPair pair, uint128 amountIn, bool swapForY)... */\n tag_120:\n /* \"src/LBRouter.sol\":6246:6266 uint128 amountInLeft */\n 0x00\n /* \"src/LBRouter.sol\":6268:6285 uint128 amountOut */\n dup1\n /* \"src/LBRouter.sol\":6287:6298 uint128 fee */\n 0x00\n /* \"src/LBRouter.sol\":6347:6351 pair */\n dup6\n /* \"src/LBRouter.sol\":6347:6362 pair.getSwapOut */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xe77366f8\n /* \"src/LBRouter.sol\":6363:6371 amountIn */\n dup7\n /* \"src/LBRouter.sol\":6373:6381 swapForY */\n dup7\n /* \"src/LBRouter.sol\":6347:6382 pair.getSwapOut(amountIn, swapForY) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_480\n swap3\n swap2\n swap1\n tag_449\n jump\t// in\n tag_480:\n 0x60\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_482\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_482:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_483\n swap2\n swap1\n tag_453\n jump\t// in\n tag_483:\n /* \"src/LBRouter.sol\":6314:6382 (amountInLeft, amountOut, fee) = pair.getSwapOut(amountIn, swapForY) */\n dup1\n swap4\n pop\n dup2\n swap5\n pop\n dup3\n swap6\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":6115:6389 function getSwapOut(ILBPair pair, uint128 amountIn, bool swapForY)... */\n swap4\n pop\n swap4\n pop\n swap4\n swap1\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":7659:8694 function addLiquidity(LiquidityParameters calldata liquidityParameters)... */\n tag_125:\n /* \"src/LBRouter.sol\":7795:7815 uint256 amountXAdded */\n 0x00\n /* \"src/LBRouter.sol\":7829:7849 uint256 amountYAdded */\n dup1\n /* \"src/LBRouter.sol\":7863:7882 uint256 amountXLeft */\n 0x00\n /* \"src/LBRouter.sol\":7896:7915 uint256 amountYLeft */\n dup1\n /* \"src/LBRouter.sol\":7929:7956 uint256[] memory depositIds */\n 0x60\n /* \"src/LBRouter.sol\":7970:8002 uint256[] memory liquidityMinted */\n dup1\n /* \"src/LBRouter.sol\":8027:8041 ILBPair lbPair */\n 0x00\n /* \"src/LBRouter.sol\":8065:8201 _getLBPairInformation(... */\n tag_485\n /* \"src/LBRouter.sol\":8104:8123 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":8104:8130 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_486\n swap2\n swap1\n tag_393\n jump\t// in\n tag_486:\n /* \"src/LBRouter.sol\":8132:8151 liquidityParameters */\n dup10\n /* \"src/LBRouter.sol\":8132:8158 liquidityParameters.tokenY */\n 0x20\n add\n 0x20\n dup2\n add\n swap1\n tag_487\n swap2\n swap1\n tag_393\n jump\t// in\n tag_487:\n /* \"src/LBRouter.sol\":8160:8179 liquidityParameters */\n dup11\n /* \"src/LBRouter.sol\":8160:8187 liquidityParameters.binStep */\n 0x40\n add\n calldataload\n /* \"src/LBRouter.sol\":8065:8086 _getLBPairInformation */\n tag_376\n /* \"src/LBRouter.sol\":8065:8201 _getLBPairInformation(... */\n jump\t// in\n tag_485:\n /* \"src/LBRouter.sol\":8027:8211 ILBPair lbPair = ILBPair(... */\n swap1\n pop\n /* \"src/LBRouter.sol\":8255:8261 lbPair */\n dup1\n /* \"src/LBRouter.sol\":8255:8271 lbPair.getTokenX */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x05e8746d\n /* \"src/LBRouter.sol\":8255:8273 lbPair.getTokenX() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_489\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_489:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_490\n swap2\n swap1\n tag_380\n jump\t// in\n tag_490:\n /* \"src/LBRouter.sol\":8225:8273 liquidityParameters.tokenX != lbPair.getTokenX() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":8225:8244 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":8225:8251 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_491\n swap2\n swap1\n tag_393\n jump\t// in\n tag_491:\n /* \"src/LBRouter.sol\":8225:8273 liquidityParameters.tokenX != lbPair.getTokenX() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":8221:8309 if (liquidityParameters.tokenX != lbPair.getTokenX()) revert LBRouter__WrongTokenOrder() */\n tag_492\n jumpi\n /* \"src/LBRouter.sol\":8282:8309 LBRouter__WrongTokenOrder() */\n mload(0x40)\n 0xb33f8ab900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":8221:8309 if (liquidityParameters.tokenX != lbPair.getTokenX()) revert LBRouter__WrongTokenOrder() */\n tag_492:\n /* \"src/LBRouter.sol\":8320:8423 _safeTransferFrom(liquidityParameters.tokenX, msg.sender, address(lbPair), liquidityParameters.amountX) */\n tag_493\n /* \"src/LBRouter.sol\":8338:8357 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":8338:8364 liquidityParameters.tokenX */\n 0x00\n add\n 0x20\n dup2\n add\n swap1\n tag_494\n swap2\n swap1\n tag_393\n jump\t// in\n tag_494:\n /* \"src/LBRouter.sol\":8366:8376 msg.sender */\n caller\n /* \"src/LBRouter.sol\":8386:8392 lbPair */\n dup4\n /* \"src/LBRouter.sol\":8395:8414 liquidityParameters */\n dup12\n /* \"src/LBRouter.sol\":8395:8422 liquidityParameters.amountX */\n 0x60\n add\n calldataload\n /* \"src/LBRouter.sol\":8320:8337 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":8320:8423 _safeTransferFrom(liquidityParameters.tokenX, msg.sender, address(lbPair), liquidityParameters.amountX) */\n jump\t// in\n tag_493:\n /* \"src/LBRouter.sol\":8433:8536 _safeTransferFrom(liquidityParameters.tokenY, msg.sender, address(lbPair), liquidityParameters.amountY) */\n tag_495\n /* \"src/LBRouter.sol\":8451:8470 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":8451:8477 liquidityParameters.tokenY */\n 0x20\n add\n 0x20\n dup2\n add\n swap1\n tag_496\n swap2\n swap1\n tag_393\n jump\t// in\n tag_496:\n /* \"src/LBRouter.sol\":8479:8489 msg.sender */\n caller\n /* \"src/LBRouter.sol\":8499:8505 lbPair */\n dup4\n /* \"src/LBRouter.sol\":8508:8527 liquidityParameters */\n dup12\n /* \"src/LBRouter.sol\":8508:8535 liquidityParameters.amountY */\n 0x80\n add\n calldataload\n /* \"src/LBRouter.sol\":8433:8450 _safeTransferFrom */\n tag_194\n /* \"src/LBRouter.sol\":8433:8536 _safeTransferFrom(liquidityParameters.tokenY, msg.sender, address(lbPair), liquidityParameters.amountY) */\n jump\t// in\n tag_495:\n /* \"src/LBRouter.sol\":8645:8687 _addLiquidity(liquidityParameters, lbPair) */\n tag_497\n /* \"src/LBRouter.sol\":8659:8678 liquidityParameters */\n dup9\n /* \"src/LBRouter.sol\":8680:8686 lbPair */\n dup3\n /* \"src/LBRouter.sol\":8645:8658 _addLiquidity */\n tag_419\n /* \"src/LBRouter.sol\":8645:8687 _addLiquidity(liquidityParameters, lbPair) */\n jump\t// in\n tag_497:\n /* \"src/LBRouter.sol\":8547:8687 (amountXAdded, amountYAdded, amountXLeft, amountYLeft, depositIds, liquidityMinted) =... */\n dup1\n swap8\n pop\n dup2\n swap9\n pop\n dup3\n swap10\n pop\n dup4\n swap11\n pop\n dup5\n swap12\n pop\n dup6\n swap13\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":8017:8694 {... */\n pop\n /* \"src/LBRouter.sol\":7659:8694 function addLiquidity(LiquidityParameters calldata liquidityParameters)... */\n swap2\n swap4\n swap6\n pop\n swap2\n swap4\n swap6\n jump\t// out\n /* \"src/LBRouter.sol\":17130:17861 function swapExactNATIVEForTokens(uint256 amountOutMin, Path memory path, address to, uint256 deadline)... */\n tag_129:\n /* \"src/LBRouter.sol\":17359:17376 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":17299:17307 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_499\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_500\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_500:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_499:\n /* \"src/LBRouter.sol\":17336:17340 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_502\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_502:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_503\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_504\n swap2\n swap1\n tag_171\n jump\t// in\n tag_504:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_503:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_505\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_505:\n /* \"src/LBRouter.sol\":17424:17432 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":17396:17433 path.tokenPath[0] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":17396:17400 path */\n dup7\n /* \"src/LBRouter.sol\":17396:17410 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":17411:17412 0 */\n 0x00\n /* \"src/LBRouter.sol\":17396:17413 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_507\n jumpi\n tag_508\n tag_176\n jump\t// in\n tag_508:\n tag_507:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":17396:17433 path.tokenPath[0] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":17392:17496 if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n tag_509\n jumpi\n /* \"src/LBRouter.sol\":17477:17481 path */\n dup6\n /* \"src/LBRouter.sol\":17477:17491 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":17492:17493 0 */\n 0x00\n /* \"src/LBRouter.sol\":17477:17494 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_510\n jumpi\n tag_511\n tag_176\n jump\t// in\n tag_511:\n tag_510:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":17442:17496 LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n mload(0x40)\n 0xcfec0e0100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_512\n swap2\n swap1\n tag_181\n jump\t// in\n tag_512:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":17392:17496 if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n tag_509:\n /* \"src/LBRouter.sol\":17507:17529 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":17532:17591 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_513\n /* \"src/LBRouter.sol\":17542:17546 path */\n dup8\n /* \"src/LBRouter.sol\":17542:17559 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":17561:17565 path */\n dup9\n /* \"src/LBRouter.sol\":17561:17574 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":17576:17580 path */\n dup10\n /* \"src/LBRouter.sol\":17576:17590 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":17532:17541 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":17532:17591 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_513:\n /* \"src/LBRouter.sol\":17507:17591 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":17602:17649 _wNativeDepositAndTransfer(pairs[0], msg.value) */\n tag_514\n /* \"src/LBRouter.sol\":17629:17634 pairs */\n dup2\n /* \"src/LBRouter.sol\":17635:17636 0 */\n 0x00\n /* \"src/LBRouter.sol\":17629:17637 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_515\n jumpi\n tag_516\n tag_176\n jump\t// in\n tag_516:\n tag_515:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":17639:17648 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":17602:17628 _wNativeDepositAndTransfer */\n tag_236\n /* \"src/LBRouter.sol\":17602:17649 _wNativeDepositAndTransfer(pairs[0], msg.value) */\n jump\t// in\n tag_514:\n /* \"src/LBRouter.sol\":17672:17750 _swapExactTokensForTokens(msg.value, pairs, path.versions, path.tokenPath, to) */\n tag_517\n /* \"src/LBRouter.sol\":17698:17707 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":17709:17714 pairs */\n dup3\n /* \"src/LBRouter.sol\":17716:17720 path */\n dup10\n /* \"src/LBRouter.sol\":17716:17729 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":17731:17735 path */\n dup11\n /* \"src/LBRouter.sol\":17731:17745 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":17747:17749 to */\n dup11\n /* \"src/LBRouter.sol\":17672:17697 _swapExactTokensForTokens */\n tag_265\n /* \"src/LBRouter.sol\":17672:17750 _swapExactTokensForTokens(msg.value, pairs, path.versions, path.tokenPath, to) */\n jump\t// in\n tag_517:\n /* \"src/LBRouter.sol\":17660:17750 amountOut = _swapExactTokensForTokens(msg.value, pairs, path.versions, path.tokenPath, to) */\n swap4\n pop\n /* \"src/LBRouter.sol\":17780:17789 amountOut */\n dup4\n /* \"src/LBRouter.sol\":17765:17777 amountOutMin */\n dup9\n /* \"src/LBRouter.sol\":17765:17789 amountOutMin > amountOut */\n gt\n /* \"src/LBRouter.sol\":17761:17854 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n iszero\n tag_518\n jumpi\n /* \"src/LBRouter.sol\":17830:17842 amountOutMin */\n dup8\n /* \"src/LBRouter.sol\":17844:17853 amountOut */\n dup5\n /* \"src/LBRouter.sol\":17798:17854 LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_519\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_519:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":17761:17854 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n tag_518:\n /* \"src/LBRouter.sol\":17382:17861 {... */\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":17130:17861 function swapExactNATIVEForTokens(uint256 amountOutMin, Path memory path, address to, uint256 deadline)... */\n pop\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":3731:3851 function getV1Factory() external view override returns (ISovrynLBFactoryV1 factoryV1) {... */\n tag_133:\n /* \"src/LBRouter.sol\":3787:3815 ISovrynLBFactoryV1 factoryV1 */\n 0x00\n /* \"src/LBRouter.sol\":3834:3844 _factoryV1 */\n immutable(\"0x8568f76a03b01e78020c34eaf7d99444bdfcfc02740b9216953e88c42652898d\")\n /* \"src/LBRouter.sol\":3827:3844 return _factoryV1 */\n swap1\n pop\n /* \"src/LBRouter.sol\":3731:3851 function getV1Factory() external view override returns (ISovrynLBFactoryV1 factoryV1) {... */\n swap1\n jump\t// out\n /* \"src/LBRouter.sol\":11788:12529 function removeLiquidity(... */\n tag_140:\n /* \"src/LBRouter.sol\":12099:12114 uint256 amountX */\n 0x00\n /* \"src/LBRouter.sol\":12116:12131 uint256 amountY */\n dup1\n /* \"src/LBRouter.sol\":12080:12088 deadline */\n dup3\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_522\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_523\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_523:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_522:\n /* \"src/LBRouter.sol\":12143:12158 ILBPair _LBPair */\n 0x00\n /* \"src/LBRouter.sol\":12169:12215 _getLBPairInformation(tokenX, tokenY, binStep) */\n tag_525\n /* \"src/LBRouter.sol\":12191:12197 tokenX */\n dup14\n /* \"src/LBRouter.sol\":12199:12205 tokenY */\n dup14\n /* \"src/LBRouter.sol\":12207:12214 binStep */\n dup14\n /* \"src/LBRouter.sol\":12169:12215 _getLBPairInformation(tokenX, tokenY, binStep) */\n 0xffff\n and\n /* \"src/LBRouter.sol\":12169:12190 _getLBPairInformation */\n tag_376\n /* \"src/LBRouter.sol\":12169:12215 _getLBPairInformation(tokenX, tokenY, binStep) */\n jump\t// in\n tag_525:\n /* \"src/LBRouter.sol\":12143:12216 ILBPair _LBPair = ILBPair(_getLBPairInformation(tokenX, tokenY, binStep)) */\n swap1\n pop\n /* \"src/LBRouter.sol\":12226:12243 bool isWrongOrder */\n 0x00\n /* \"src/LBRouter.sol\":12256:12263 _LBPair */\n dup2\n /* \"src/LBRouter.sol\":12256:12273 _LBPair.getTokenX */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x05e8746d\n /* \"src/LBRouter.sol\":12256:12275 _LBPair.getTokenX() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_527\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_527:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_528\n swap2\n swap1\n tag_380\n jump\t// in\n tag_528:\n /* \"src/LBRouter.sol\":12246:12275 tokenX != _LBPair.getTokenX() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":12246:12252 tokenX */\n dup15\n /* \"src/LBRouter.sol\":12246:12275 tokenX != _LBPair.getTokenX() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n iszero\n /* \"src/LBRouter.sol\":12226:12275 bool isWrongOrder = tokenX != _LBPair.getTokenX() */\n swap1\n pop\n /* \"src/LBRouter.sol\":12290:12302 isWrongOrder */\n dup1\n /* \"src/LBRouter.sol\":12286:12355 if (isWrongOrder) (amountXMin, amountYMin) = (amountYMin, amountXMin) */\n iszero\n tag_529\n jumpi\n /* \"src/LBRouter.sol\":12332:12342 amountYMin */\n dup10\n /* \"src/LBRouter.sol\":12344:12354 amountXMin */\n dup12\n /* \"src/LBRouter.sol\":12304:12355 (amountXMin, amountYMin) = (amountYMin, amountXMin) */\n dup1\n swap12\n pop\n dup2\n swap13\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":12286:12355 if (isWrongOrder) (amountXMin, amountYMin) = (amountYMin, amountXMin) */\n tag_529:\n /* \"src/LBRouter.sol\":12387:12454 _removeLiquidity(_LBPair, amountXMin, amountYMin, ids, amounts, to) */\n tag_530\n /* \"src/LBRouter.sol\":12404:12411 _LBPair */\n dup3\n /* \"src/LBRouter.sol\":12413:12423 amountXMin */\n dup13\n /* \"src/LBRouter.sol\":12425:12435 amountYMin */\n dup13\n /* \"src/LBRouter.sol\":12437:12440 ids */\n dup13\n /* \"src/LBRouter.sol\":12442:12449 amounts */\n dup13\n /* \"src/LBRouter.sol\":12451:12453 to */\n dup13\n /* \"src/LBRouter.sol\":12387:12403 _removeLiquidity */\n tag_383\n /* \"src/LBRouter.sol\":12387:12454 _removeLiquidity(_LBPair, amountXMin, amountYMin, ids, amounts, to) */\n jump\t// in\n tag_530:\n /* \"src/LBRouter.sol\":12366:12454 (amountX, amountY) = _removeLiquidity(_LBPair, amountXMin, amountYMin, ids, amounts, to) */\n dup1\n swap6\n pop\n dup2\n swap7\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":12469:12481 isWrongOrder */\n dup1\n /* \"src/LBRouter.sol\":12465:12522 if (isWrongOrder) (amountX, amountY) = (amountY, amountX) */\n iszero\n tag_531\n jumpi\n /* \"src/LBRouter.sol\":12505:12512 amountY */\n dup4\n /* \"src/LBRouter.sol\":12514:12521 amountX */\n dup6\n /* \"src/LBRouter.sol\":12483:12522 (amountX, amountY) = (amountY, amountX) */\n dup1\n swap6\n pop\n dup2\n swap7\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":12465:12522 if (isWrongOrder) (amountX, amountY) = (amountY, amountX) */\n tag_531:\n /* \"src/LBRouter.sol\":12133:12529 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":11788:12529 function removeLiquidity(... */\n pop\n swap10\n pop\n swap10\n swap8\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":4763:4900 function getPriceFromId(ILBPair pair, uint24 id) external view override returns (uint256) {... */\n tag_146:\n /* \"src/LBRouter.sol\":4844:4851 uint256 */\n 0x00\n /* \"src/LBRouter.sol\":4870:4874 pair */\n dup3\n /* \"src/LBRouter.sol\":4870:4889 pair.getPriceFromId */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x4c7cffbd\n /* \"src/LBRouter.sol\":4890:4892 id */\n dup4\n /* \"src/LBRouter.sol\":4870:4893 pair.getPriceFromId(id) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_533\n swap2\n swap1\n tag_163\n jump\t// in\n tag_533:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_535\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_535:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_536\n swap2\n swap1\n tag_188\n jump\t// in\n tag_536:\n /* \"src/LBRouter.sol\":4863:4893 return pair.getPriceFromId(id) */\n swap1\n pop\n /* \"src/LBRouter.sol\":4763:4900 function getPriceFromId(ILBPair pair, uint24 id) external view override returns (uint256) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":25354:26269 function swapExactNATIVEForTokensSupportingFeeOnTransferTokens(... */\n tag_150:\n /* \"src/LBRouter.sol\":25602:25619 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":25558:25566 deadline */\n dup2\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_538\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_539\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_539:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_538:\n /* \"src/LBRouter.sol\":25587:25591 path */\n dup5\n /* \"src/LBRouter.sol\":2439:2440 0 */\n 0x00\n /* \"src/LBRouter.sol\":2411:2415 path */\n dup2\n /* \"src/LBRouter.sol\":2411:2428 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2411:2435 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2411:2440 path.pairBinSteps.length == 0 */\n eq\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n dup1\n tag_541\n jumpi\n pop\n /* \"src/LBRouter.sol\":2468:2472 path */\n dup1\n /* \"src/LBRouter.sol\":2468:2485 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2468:2492 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2444:2448 path */\n dup2\n /* \"src/LBRouter.sol\":2444:2457 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":2444:2464 path.versions.length */\n mload\n /* \"src/LBRouter.sol\":2444:2492 path.versions.length != path.pairBinSteps.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2492 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length */\n tag_541:\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n dup1\n tag_542\n jumpi\n pop\n /* \"src/LBRouter.sol\":2544:2548 path */\n dup1\n /* \"src/LBRouter.sol\":2544:2558 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":2544:2565 path.tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":2539:2540 1 */\n 0x01\n /* \"src/LBRouter.sol\":2512:2516 path */\n dup3\n /* \"src/LBRouter.sol\":2512:2529 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":2512:2536 path.pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":2512:2540 path.pairBinSteps.length + 1 */\n tag_543\n swap2\n swap1\n tag_171\n jump\t// in\n tag_543:\n /* \"src/LBRouter.sol\":2512:2565 path.pairBinSteps.length + 1 != path.tokenPath.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":2411:2565 path.pairBinSteps.length == 0 || path.versions.length != path.pairBinSteps.length... */\n tag_542:\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n iszero\n tag_544\n jumpi\n /* \"src/LBRouter.sol\":2583:2610 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2394:2610 if (... */\n tag_544:\n /* \"src/LBRouter.sol\":25663:25671 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":25635:25672 path.tokenPath[0] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":25635:25639 path */\n dup7\n /* \"src/LBRouter.sol\":25635:25649 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":25650:25651 0 */\n 0x00\n /* \"src/LBRouter.sol\":25635:25652 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_546\n jumpi\n tag_547\n tag_176\n jump\t// in\n tag_547:\n tag_546:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":25635:25672 path.tokenPath[0] != IERC20(_wnative) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":25631:25735 if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n tag_548\n jumpi\n /* \"src/LBRouter.sol\":25716:25720 path */\n dup6\n /* \"src/LBRouter.sol\":25716:25730 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":25731:25732 0 */\n 0x00\n /* \"src/LBRouter.sol\":25716:25733 path.tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_549\n jumpi\n tag_550\n tag_176\n jump\t// in\n tag_550:\n tag_549:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":25681:25735 LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n mload(0x40)\n 0xcfec0e0100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_551\n swap2\n swap1\n tag_181\n jump\t// in\n tag_551:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":25631:25735 if (path.tokenPath[0] != IERC20(_wnative)) revert LBRouter__InvalidTokenPath(address(path.tokenPath[0])) */\n tag_548:\n /* \"src/LBRouter.sol\":25746:25768 address[] memory pairs */\n 0x00\n /* \"src/LBRouter.sol\":25771:25830 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n tag_552\n /* \"src/LBRouter.sol\":25781:25785 path */\n dup8\n /* \"src/LBRouter.sol\":25781:25798 path.pairBinSteps */\n 0x00\n add\n mload\n /* \"src/LBRouter.sol\":25800:25804 path */\n dup9\n /* \"src/LBRouter.sol\":25800:25813 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":25815:25819 path */\n dup10\n /* \"src/LBRouter.sol\":25815:25829 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":25771:25780 _getPairs */\n tag_183\n /* \"src/LBRouter.sol\":25771:25830 _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n jump\t// in\n tag_552:\n /* \"src/LBRouter.sol\":25746:25830 address[] memory pairs = _getPairs(path.pairBinSteps, path.versions, path.tokenPath) */\n swap1\n pop\n /* \"src/LBRouter.sol\":25841:25859 IERC20 targetToken */\n 0x00\n /* \"src/LBRouter.sol\":25862:25866 path */\n dup8\n /* \"src/LBRouter.sol\":25862:25876 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":25877:25882 pairs */\n dup3\n /* \"src/LBRouter.sol\":25877:25889 pairs.length */\n mload\n /* \"src/LBRouter.sol\":25862:25890 path.tokenPath[pairs.length] */\n dup2\n mload\n dup2\n lt\n tag_553\n jumpi\n tag_554\n tag_176\n jump\t// in\n tag_554:\n tag_553:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":25841:25890 IERC20 targetToken = path.tokenPath[pairs.length] */\n swap1\n pop\n /* \"src/LBRouter.sol\":25901:25922 uint256 balanceBefore */\n 0x00\n /* \"src/LBRouter.sol\":25925:25936 targetToken */\n dup2\n /* \"src/LBRouter.sol\":25925:25946 targetToken.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":25947:25949 to */\n dup10\n /* \"src/LBRouter.sol\":25925:25950 targetToken.balanceOf(to) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_555\n swap2\n swap1\n tag_181\n jump\t// in\n tag_555:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_557\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_557:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_558\n swap2\n swap1\n tag_188\n jump\t// in\n tag_558:\n /* \"src/LBRouter.sol\":25901:25950 uint256 balanceBefore = targetToken.balanceOf(to) */\n swap1\n pop\n /* \"src/LBRouter.sol\":25961:26008 _wNativeDepositAndTransfer(pairs[0], msg.value) */\n tag_559\n /* \"src/LBRouter.sol\":25988:25993 pairs */\n dup4\n /* \"src/LBRouter.sol\":25994:25995 0 */\n 0x00\n /* \"src/LBRouter.sol\":25988:25996 pairs[0] */\n dup2\n mload\n dup2\n lt\n tag_560\n jumpi\n tag_561\n tag_176\n jump\t// in\n tag_561:\n tag_560:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":25998:26007 msg.value */\n callvalue\n /* \"src/LBRouter.sol\":25961:25987 _wNativeDepositAndTransfer */\n tag_236\n /* \"src/LBRouter.sol\":25961:26008 _wNativeDepositAndTransfer(pairs[0], msg.value) */\n jump\t// in\n tag_559:\n /* \"src/LBRouter.sol\":26019:26095 _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, to) */\n tag_562\n /* \"src/LBRouter.sol\":26054:26059 pairs */\n dup4\n /* \"src/LBRouter.sol\":26061:26065 path */\n dup11\n /* \"src/LBRouter.sol\":26061:26074 path.versions */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":26076:26080 path */\n dup12\n /* \"src/LBRouter.sol\":26076:26090 path.tokenPath */\n 0x40\n add\n mload\n /* \"src/LBRouter.sol\":26092:26094 to */\n dup12\n /* \"src/LBRouter.sol\":26019:26053 _swapSupportingFeeOnTransferTokens */\n tag_196\n /* \"src/LBRouter.sol\":26019:26095 _swapSupportingFeeOnTransferTokens(pairs, path.versions, path.tokenPath, to) */\n jump\t// in\n tag_562:\n /* \"src/LBRouter.sol\":26146:26159 balanceBefore */\n dup1\n /* \"src/LBRouter.sol\":26118:26129 targetToken */\n dup3\n /* \"src/LBRouter.sol\":26118:26139 targetToken.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":26140:26142 to */\n dup11\n /* \"src/LBRouter.sol\":26118:26143 targetToken.balanceOf(to) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_563\n swap2\n swap1\n tag_181\n jump\t// in\n tag_563:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_565\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_565:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_566\n swap2\n swap1\n tag_188\n jump\t// in\n tag_566:\n /* \"src/LBRouter.sol\":26118:26159 targetToken.balanceOf(to) - balanceBefore */\n tag_567\n swap2\n swap1\n tag_202\n jump\t// in\n tag_567:\n /* \"src/LBRouter.sol\":26106:26159 amountOut = targetToken.balanceOf(to) - balanceBefore */\n swap6\n pop\n /* \"src/LBRouter.sol\":26188:26197 amountOut */\n dup6\n /* \"src/LBRouter.sol\":26173:26185 amountOutMin */\n dup11\n /* \"src/LBRouter.sol\":26173:26197 amountOutMin > amountOut */\n gt\n /* \"src/LBRouter.sol\":26169:26262 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n iszero\n tag_568\n jumpi\n /* \"src/LBRouter.sol\":26238:26250 amountOutMin */\n dup10\n /* \"src/LBRouter.sol\":26252:26261 amountOut */\n dup7\n /* \"src/LBRouter.sol\":26206:26262 LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n mload(0x40)\n 0x4feac00c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_569\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_569:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":26169:26262 if (amountOutMin > amountOut) revert LBRouter__InsufficientAmountOut(amountOutMin, amountOut) */\n tag_568:\n /* \"src/LBRouter.sol\":25621:26269 {... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":2324:2325 _ */\n pop\n /* \"src/LBRouter.sol\":25354:26269 function swapExactNATIVEForTokensSupportingFeeOnTransferTokens(... */\n pop\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":27343:27585 function sweepLBToken(ILBToken lbToken, address to, uint256[] calldata ids, uint256[] calldata amounts)... */\n tag_156:\n /* \"src/LBRouter.sol\":2099:2108 _factory2 */\n immutable(\"0x2239ccbaf4e87000eba1be7b3740d3819308dc8e5f0056a0eb89462a60427836\")\n /* \"src/LBRouter.sol\":2083:2116 Ownable(address(_factory2)).owner */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8da5cb5b\n /* \"src/LBRouter.sol\":2083:2118 Ownable(address(_factory2)).owner() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_572\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_572:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_573\n swap2\n swap1\n tag_335\n jump\t// in\n tag_573:\n /* \"src/LBRouter.sol\":2069:2118 msg.sender != Ownable(address(_factory2)).owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":2069:2079 msg.sender */\n caller\n /* \"src/LBRouter.sol\":2069:2118 msg.sender != Ownable(address(_factory2)).owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":2065:2154 if (msg.sender != Ownable(address(_factory2)).owner()) revert LBRouter__NotFactoryOwner() */\n tag_574\n jumpi\n /* \"src/LBRouter.sol\":2127:2154 LBRouter__NotFactoryOwner() */\n mload(0x40)\n 0xbb2a2b7200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2065:2154 if (msg.sender != Ownable(address(_factory2)).owner()) revert LBRouter__NotFactoryOwner() */\n tag_574:\n /* \"src/LBRouter.sol\":27520:27527 lbToken */\n dup6\n /* \"src/LBRouter.sol\":27520:27545 lbToken.batchTransferFrom */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x17fad7fc\n /* \"src/LBRouter.sol\":27554:27558 this */\n address\n /* \"src/LBRouter.sol\":27561:27563 to */\n dup8\n /* \"src/LBRouter.sol\":27565:27568 ids */\n dup8\n dup8\n /* \"src/LBRouter.sol\":27570:27577 amounts */\n dup8\n dup8\n /* \"src/LBRouter.sol\":27520:27578 lbToken.batchTransferFrom(address(this), to, ids, amounts) */\n mload(0x40)\n dup8\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_576\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_577\n jump\t// in\n tag_576:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_578\n jumpi\n 0x00\n dup1\n revert\n tag_578:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_580\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_580:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":27343:27585 function sweepLBToken(ILBToken lbToken, address to, uint256[] calldata ids, uint256[] calldata amounts)... */\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":4413:4556 function getIdFromPrice(ILBPair pair, uint256 price) external view override returns (uint24) {... */\n tag_161:\n /* \"src/LBRouter.sol\":4498:4504 uint24 */\n 0x00\n /* \"src/LBRouter.sol\":4523:4527 pair */\n dup3\n /* \"src/LBRouter.sol\":4523:4542 pair.getIdFromPrice */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xf5e29329\n /* \"src/LBRouter.sol\":4543:4548 price */\n dup4\n /* \"src/LBRouter.sol\":4523:4549 pair.getIdFromPrice(price) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_582\n swap2\n swap1\n tag_39\n jump\t// in\n tag_582:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_584\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_584:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_585\n swap2\n swap1\n tag_586\n jump\t// in\n tag_585:\n /* \"src/LBRouter.sol\":4516:4549 return pair.getIdFromPrice(price) */\n swap1\n pop\n /* \"src/LBRouter.sol\":4413:4556 function getIdFromPrice(ILBPair pair, uint256 price) external view override returns (uint24) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":40831:41396 function _getPairs(uint256[] memory pairBinSteps, Version[] memory versions, IERC20[] memory tokenPath)... */\n tag_183:\n /* \"src/LBRouter.sol\":40981:41003 address[] memory pairs */\n 0x60\n /* \"src/LBRouter.sol\":41041:41053 pairBinSteps */\n dup4\n /* \"src/LBRouter.sol\":41041:41060 pairBinSteps.length */\n mload\n /* \"src/LBRouter.sol\":41027:41061 new address[](pairBinSteps.length) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_588\n jumpi\n tag_589\n tag_590\n jump\t// in\n tag_589:\n tag_588:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x20\n mul\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_591\n jumpi\n dup2\n 0x20\n add\n 0x20\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_591:\n pop\n /* \"src/LBRouter.sol\":41019:41061 pairs = new address[](pairBinSteps.length) */\n swap1\n pop\n /* \"src/LBRouter.sol\":41072:41084 IERC20 token */\n 0x00\n /* \"src/LBRouter.sol\":41094:41110 IERC20 tokenNext */\n dup1\n /* \"src/LBRouter.sol\":41113:41122 tokenPath */\n dup4\n /* \"src/LBRouter.sol\":41123:41124 0 */\n 0x00\n /* \"src/LBRouter.sol\":41113:41125 tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_592\n jumpi\n tag_593\n tag_176\n jump\t// in\n tag_593:\n tag_592:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":41094:41125 IERC20 tokenNext = tokenPath[0] */\n swap1\n pop\n /* \"src/LBRouter.sol\":41164:41173 uint256 i */\n 0x00\n /* \"src/LBRouter.sol\":41159:41380 for (uint256 i; i < pairs.length; ++i) {... */\n tag_594:\n /* \"src/LBRouter.sol\":41179:41184 pairs */\n dup4\n /* \"src/LBRouter.sol\":41179:41191 pairs.length */\n mload\n /* \"src/LBRouter.sol\":41175:41176 i */\n dup2\n /* \"src/LBRouter.sol\":41175:41191 i < pairs.length */\n lt\n /* \"src/LBRouter.sol\":41159:41380 for (uint256 i; i < pairs.length; ++i) {... */\n iszero\n tag_595\n jumpi\n /* \"src/LBRouter.sol\":41224:41233 tokenNext */\n dup2\n /* \"src/LBRouter.sol\":41216:41233 token = tokenNext */\n swap3\n pop\n /* \"src/LBRouter.sol\":41263:41272 tokenPath */\n dup5\n /* \"src/LBRouter.sol\":41277:41278 1 */\n 0x01\n /* \"src/LBRouter.sol\":41273:41274 i */\n dup3\n /* \"src/LBRouter.sol\":41273:41278 i + 1 */\n add\n /* \"src/LBRouter.sol\":41263:41279 tokenPath[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_597\n jumpi\n tag_598\n tag_176\n jump\t// in\n tag_598:\n tag_597:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":41251:41279 tokenNext = tokenPath[i + 1] */\n swap2\n pop\n /* \"src/LBRouter.sol\":41309:41365 _getPair(token, tokenNext, pairBinSteps[i], versions[i]) */\n tag_599\n /* \"src/LBRouter.sol\":41318:41323 token */\n dup4\n /* \"src/LBRouter.sol\":41325:41334 tokenNext */\n dup4\n /* \"src/LBRouter.sol\":41336:41348 pairBinSteps */\n dup10\n /* \"src/LBRouter.sol\":41349:41350 i */\n dup5\n /* \"src/LBRouter.sol\":41336:41351 pairBinSteps[i] */\n dup2\n mload\n dup2\n lt\n tag_600\n jumpi\n tag_601\n tag_176\n jump\t// in\n tag_601:\n tag_600:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":41353:41361 versions */\n dup10\n /* \"src/LBRouter.sol\":41362:41363 i */\n dup6\n /* \"src/LBRouter.sol\":41353:41364 versions[i] */\n dup2\n mload\n dup2\n lt\n tag_602\n jumpi\n tag_603\n tag_176\n jump\t// in\n tag_603:\n tag_602:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":41309:41317 _getPair */\n tag_604\n /* \"src/LBRouter.sol\":41309:41365 _getPair(token, tokenNext, pairBinSteps[i], versions[i]) */\n jump\t// in\n tag_599:\n /* \"src/LBRouter.sol\":41298:41303 pairs */\n dup5\n /* \"src/LBRouter.sol\":41304:41305 i */\n dup3\n /* \"src/LBRouter.sol\":41298:41306 pairs[i] */\n dup2\n mload\n dup2\n lt\n tag_605\n jumpi\n tag_606\n tag_176\n jump\t// in\n tag_606:\n tag_605:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBRouter.sol\":41298:41365 pairs[i] = _getPair(token, tokenNext, pairBinSteps[i], versions[i]) */\n swap1\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":41193:41196 ++i */\n dup1\n 0x01\n add\n swap1\n pop\n /* \"src/LBRouter.sol\":41159:41380 for (uint256 i; i < pairs.length; ++i) {... */\n jump(tag_594)\n tag_595:\n pop\n /* \"src/LBRouter.sol\":41009:41396 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":40831:41396 function _getPairs(uint256[] memory pairBinSteps, Version[] memory versions, IERC20[] memory tokenPath)... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":42029:42211 function _safeTransferFrom(IERC20 token, address from, address to, uint256 amount) private {... */\n tag_194:\n /* \"src/LBRouter.sol\":42144:42145 0 */\n 0x00\n /* \"src/LBRouter.sol\":42134:42140 amount */\n dup2\n /* \"src/LBRouter.sol\":42134:42145 amount == 0 */\n sub\n /* \"src/LBRouter.sol\":42130:42154 if (amount == 0) return; */\n iszero\n /* \"src/LBRouter.sol\":42147:42154 return; */\n tag_607\n /* \"src/LBRouter.sol\":42130:42154 if (amount == 0) return; */\n jumpi\n /* \"src/LBRouter.sol\":42164:42204 token.safeTransferFrom(from, to, amount) */\n tag_609\n /* \"src/LBRouter.sol\":42187:42191 from */\n dup4\n /* \"src/LBRouter.sol\":42193:42195 to */\n dup4\n /* \"src/LBRouter.sol\":42197:42203 amount */\n dup4\n /* \"src/LBRouter.sol\":42164:42169 token */\n dup8\n /* \"src/LBRouter.sol\":42164:42186 token.safeTransferFrom */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n tag_610\n swap1\n /* \"src/LBRouter.sol\":42164:42204 token.safeTransferFrom(from, to, amount) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_609:\n /* \"src/LBRouter.sol\":42029:42211 function _safeTransferFrom(IERC20 token, address from, address to, uint256 amount) private {... */\n tag_607:\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":37395:38917 function _swapSupportingFeeOnTransferTokens(... */\n tag_196:\n /* \"src/LBRouter.sol\":37585:37597 IERC20 token */\n 0x00\n /* \"src/LBRouter.sol\":37607:37622 Version version */\n dup1\n /* \"src/LBRouter.sol\":37632:37649 address recipient */\n 0x00\n /* \"src/LBRouter.sol\":37659:37671 address pair */\n dup1\n /* \"src/LBRouter.sol\":37682:37698 IERC20 tokenNext */\n 0x00\n /* \"src/LBRouter.sol\":37701:37710 tokenPath */\n dup7\n /* \"src/LBRouter.sol\":37711:37712 0 */\n 0x00\n /* \"src/LBRouter.sol\":37701:37713 tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_612\n jumpi\n tag_613\n tag_176\n jump\t// in\n tag_613:\n tag_612:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":37682:37713 IERC20 tokenNext = tokenPath[0] */\n swap1\n pop\n /* \"src/LBRouter.sol\":37753:37762 uint256 i */\n 0x00\n /* \"src/LBRouter.sol\":37748:38901 for (uint256 i; i < pairs.length; ++i) {... */\n tag_614:\n /* \"src/LBRouter.sol\":37768:37773 pairs */\n dup10\n /* \"src/LBRouter.sol\":37768:37780 pairs.length */\n mload\n /* \"src/LBRouter.sol\":37764:37765 i */\n dup2\n /* \"src/LBRouter.sol\":37764:37780 i < pairs.length */\n lt\n /* \"src/LBRouter.sol\":37748:38901 for (uint256 i; i < pairs.length; ++i) {... */\n iszero\n tag_615\n jumpi\n /* \"src/LBRouter.sol\":37812:37817 pairs */\n dup10\n /* \"src/LBRouter.sol\":37818:37819 i */\n dup2\n /* \"src/LBRouter.sol\":37812:37820 pairs[i] */\n dup2\n mload\n dup2\n lt\n tag_617\n jumpi\n tag_618\n tag_176\n jump\t// in\n tag_618:\n tag_617:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":37805:37820 pair = pairs[i] */\n swap3\n pop\n /* \"src/LBRouter.sol\":37848:37856 versions */\n dup9\n /* \"src/LBRouter.sol\":37857:37858 i */\n dup2\n /* \"src/LBRouter.sol\":37848:37859 versions[i] */\n dup2\n mload\n dup2\n lt\n tag_619\n jumpi\n tag_620\n tag_176\n jump\t// in\n tag_620:\n tag_619:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":37838:37859 version = versions[i] */\n swap5\n pop\n /* \"src/LBRouter.sol\":37886:37895 tokenNext */\n dup2\n /* \"src/LBRouter.sol\":37878:37895 token = tokenNext */\n swap6\n pop\n /* \"src/LBRouter.sol\":37925:37934 tokenPath */\n dup8\n /* \"src/LBRouter.sol\":37939:37940 1 */\n 0x01\n /* \"src/LBRouter.sol\":37935:37936 i */\n dup3\n /* \"src/LBRouter.sol\":37935:37940 i + 1 */\n add\n /* \"src/LBRouter.sol\":37925:37941 tokenPath[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_621\n jumpi\n tag_622\n tag_176\n jump\t// in\n tag_622:\n tag_621:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":37913:37941 tokenNext = tokenPath[i + 1] */\n swap2\n pop\n /* \"src/LBRouter.sol\":37981:37986 pairs */\n dup10\n /* \"src/LBRouter.sol\":37981:37993 pairs.length */\n mload\n /* \"src/LBRouter.sol\":37976:37977 1 */\n 0x01\n /* \"src/LBRouter.sol\":37972:37973 i */\n dup3\n /* \"src/LBRouter.sol\":37972:37977 i + 1 */\n add\n /* \"src/LBRouter.sol\":37972:37993 i + 1 == pairs.length */\n eq\n /* \"src/LBRouter.sol\":37972:38013 i + 1 == pairs.length ? to : pairs[i + 1] */\n tag_623\n jumpi\n /* \"src/LBRouter.sol\":38001:38006 pairs */\n dup10\n /* \"src/LBRouter.sol\":38011:38012 1 */\n 0x01\n /* \"src/LBRouter.sol\":38007:38008 i */\n dup3\n /* \"src/LBRouter.sol\":38007:38012 i + 1 */\n add\n /* \"src/LBRouter.sol\":38001:38013 pairs[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_624\n jumpi\n tag_625\n tag_176\n jump\t// in\n tag_625:\n tag_624:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":37972:38013 i + 1 == pairs.length ? to : pairs[i + 1] */\n jump(tag_626)\n tag_623:\n /* \"src/LBRouter.sol\":37996:37998 to */\n dup7\n /* \"src/LBRouter.sol\":37972:38013 i + 1 == pairs.length ? to : pairs[i + 1] */\n tag_626:\n /* \"src/LBRouter.sol\":37960:38013 recipient = i + 1 == pairs.length ? to : pairs[i + 1] */\n swap4\n pop\n /* \"src/LBRouter.sol\":38047:38057 Version.V1 */\n 0x00\n /* \"src/LBRouter.sol\":38036:38057 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_627\n jumpi\n tag_628\n tag_629\n jump\t// in\n tag_628:\n tag_627:\n /* \"src/LBRouter.sol\":38036:38043 version */\n dup6\n /* \"src/LBRouter.sol\":38036:38057 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_630\n jumpi\n tag_631\n tag_629\n jump\t// in\n tag_631:\n tag_630:\n sub\n /* \"src/LBRouter.sol\":38032:38887 if (version == Version.V1) {... */\n tag_632\n jumpi\n /* \"src/LBRouter.sol\":38082:38099 uint256 _reserve0 */\n 0x00\n /* \"src/LBRouter.sol\":38101:38118 uint256 _reserve1 */\n dup1\n /* \"src/LBRouter.sol\":38139:38143 pair */\n dup5\n /* \"src/LBRouter.sol\":38123:38156 ISovrynLBPairV1(pair).getReserves */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x0902f1ac\n /* \"src/LBRouter.sol\":38123:38158 ISovrynLBPairV1(pair).getReserves() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x60\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_634\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_634:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_635\n swap2\n swap1\n tag_636\n jump\t// in\n tag_635:\n /* \"src/LBRouter.sol\":38081:38158 (uint256 _reserve0, uint256 _reserve1,) = ISovrynLBPairV1(pair).getReserves() */\n pop\n 0xffffffffffffffffffffffffffff\n and\n swap2\n pop\n 0xffffffffffffffffffffffffffff\n and\n swap2\n pop\n /* \"src/LBRouter.sol\":38192:38201 tokenNext */\n dup4\n /* \"src/LBRouter.sol\":38184:38201 token < tokenNext */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":38184:38189 token */\n dup9\n /* \"src/LBRouter.sol\":38184:38201 token < tokenNext */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n lt\n /* \"src/LBRouter.sol\":38180:38753 if (token < tokenNext) {... */\n iszero\n tag_637\n jumpi\n /* \"src/LBRouter.sol\":38229:38245 uint256 amountIn */\n 0x00\n /* \"src/LBRouter.sol\":38272:38281 _reserve0 */\n dup3\n /* \"src/LBRouter.sol\":38248:38253 token */\n dup10\n /* \"src/LBRouter.sol\":38248:38263 token.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":38264:38268 pair */\n dup9\n /* \"src/LBRouter.sol\":38248:38269 token.balanceOf(pair) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_638\n swap2\n swap1\n tag_181\n jump\t// in\n tag_638:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_640\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_640:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_641\n swap2\n swap1\n tag_188\n jump\t// in\n tag_641:\n /* \"src/LBRouter.sol\":38248:38281 token.balanceOf(pair) - _reserve0 */\n sub\n /* \"src/LBRouter.sol\":38229:38281 uint256 amountIn = token.balanceOf(pair) - _reserve0 */\n swap1\n pop\n /* \"src/LBRouter.sol\":38307:38324 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":38327:38370 amountIn.getAmountOut(_reserve0, _reserve1) */\n tag_642\n /* \"src/LBRouter.sol\":38349:38358 _reserve0 */\n dup5\n /* \"src/LBRouter.sol\":38360:38369 _reserve1 */\n dup5\n /* \"src/LBRouter.sol\":38327:38335 amountIn */\n dup5\n /* \"src/LBRouter.sol\":38327:38348 amountIn.getAmountOut */\n tag_643\n swap1\n /* \"src/LBRouter.sol\":38327:38370 amountIn.getAmountOut(_reserve0, _reserve1) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_642:\n /* \"src/LBRouter.sol\":38307:38370 uint256 amountOut = amountIn.getAmountOut(_reserve0, _reserve1) */\n swap1\n pop\n /* \"src/LBRouter.sol\":38413:38417 pair */\n dup7\n /* \"src/LBRouter.sol\":38397:38423 ISovrynLBPairV1(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x022c0d9f\n /* \"src/LBRouter.sol\":38424:38425 0 */\n 0x00\n /* \"src/LBRouter.sol\":38427:38436 amountOut */\n dup4\n /* \"src/LBRouter.sol\":38438:38447 recipient */\n dup12\n /* \"src/LBRouter.sol\":38397:38452 ISovrynLBPairV1(pair).swap(0, amountOut, recipient, \"\") */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_644\n swap4\n swap3\n swap2\n swap1\n tag_645\n jump\t// in\n tag_644:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_646\n jumpi\n 0x00\n dup1\n revert\n tag_646:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_648\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_648:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":38203:38475 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":38180:38753 if (token < tokenNext) {... */\n jump(tag_649)\n tag_637:\n /* \"src/LBRouter.sol\":38507:38523 uint256 amountIn */\n 0x00\n /* \"src/LBRouter.sol\":38550:38559 _reserve1 */\n dup2\n /* \"src/LBRouter.sol\":38526:38531 token */\n dup10\n /* \"src/LBRouter.sol\":38526:38541 token.balanceOf */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x70a08231\n /* \"src/LBRouter.sol\":38542:38546 pair */\n dup9\n /* \"src/LBRouter.sol\":38526:38547 token.balanceOf(pair) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_650\n swap2\n swap1\n tag_181\n jump\t// in\n tag_650:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_652\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_652:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_653\n swap2\n swap1\n tag_188\n jump\t// in\n tag_653:\n /* \"src/LBRouter.sol\":38526:38559 token.balanceOf(pair) - _reserve1 */\n sub\n /* \"src/LBRouter.sol\":38507:38559 uint256 amountIn = token.balanceOf(pair) - _reserve1 */\n swap1\n pop\n /* \"src/LBRouter.sol\":38585:38602 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":38605:38648 amountIn.getAmountOut(_reserve1, _reserve0) */\n tag_654\n /* \"src/LBRouter.sol\":38627:38636 _reserve1 */\n dup4\n /* \"src/LBRouter.sol\":38638:38647 _reserve0 */\n dup6\n /* \"src/LBRouter.sol\":38605:38613 amountIn */\n dup5\n /* \"src/LBRouter.sol\":38605:38626 amountIn.getAmountOut */\n tag_643\n swap1\n /* \"src/LBRouter.sol\":38605:38648 amountIn.getAmountOut(_reserve1, _reserve0) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_654:\n /* \"src/LBRouter.sol\":38585:38648 uint256 amountOut = amountIn.getAmountOut(_reserve1, _reserve0) */\n swap1\n pop\n /* \"src/LBRouter.sol\":38691:38695 pair */\n dup7\n /* \"src/LBRouter.sol\":38675:38701 ISovrynLBPairV1(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x022c0d9f\n /* \"src/LBRouter.sol\":38702:38711 amountOut */\n dup3\n /* \"src/LBRouter.sol\":38713:38714 0 */\n 0x00\n /* \"src/LBRouter.sol\":38716:38725 recipient */\n dup12\n /* \"src/LBRouter.sol\":38675:38730 ISovrynLBPairV1(pair).swap(amountOut, 0, recipient, \"\") */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_655\n swap4\n swap3\n swap2\n swap1\n tag_656\n jump\t// in\n tag_655:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_657\n jumpi\n 0x00\n dup1\n revert\n tag_657:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_659\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_659:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":38481:38753 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":38180:38753 if (token < tokenNext) {... */\n tag_649:\n /* \"src/LBRouter.sol\":38059:38771 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":38032:38887 if (version == Version.V1) {... */\n jump(tag_660)\n tag_632:\n /* \"src/LBRouter.sol\":38807:38811 pair */\n dup3\n /* \"src/LBRouter.sol\":38799:38817 ILBPair(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x53c059a0\n /* \"src/LBRouter.sol\":38839:38843 pair */\n dup5\n /* \"src/LBRouter.sol\":38831:38854 ILBPair(pair).getTokenY */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xda10610c\n /* \"src/LBRouter.sol\":38831:38856 ILBPair(pair).getTokenY() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_662\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_662:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_663\n swap2\n swap1\n tag_380\n jump\t// in\n tag_663:\n /* \"src/LBRouter.sol\":38818:38856 tokenNext == ILBPair(pair).getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":38818:38827 tokenNext */\n dup5\n /* \"src/LBRouter.sol\":38818:38856 tokenNext == ILBPair(pair).getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":38858:38867 recipient */\n dup7\n /* \"src/LBRouter.sol\":38799:38868 ILBPair(pair).swap(tokenNext == ILBPair(pair).getTokenY(), recipient) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_664\n swap3\n swap2\n swap1\n tag_665\n jump\t// in\n tag_664:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n gas\n call\n iszero\n dup1\n iszero\n tag_667\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_667:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_668\n swap2\n swap1\n tag_669\n jump\t// in\n tag_668:\n pop\n /* \"src/LBRouter.sol\":38032:38887 if (version == Version.V1) {... */\n tag_660:\n /* \"src/LBRouter.sol\":37782:37785 ++i */\n dup1\n 0x01\n add\n swap1\n pop\n /* \"src/LBRouter.sol\":37748:38901 for (uint256 i; i < pairs.length; ++i) {... */\n jump(tag_614)\n tag_615:\n pop\n /* \"src/LBRouter.sol\":37575:38917 {... */\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":37395:38917 function _swapSupportingFeeOnTransferTokens(... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":43207:43397 function _wNativeWithdrawAndTransfer(address to, uint256 amount) private {... */\n tag_206:\n /* \"src/LBRouter.sol\":43304:43305 0 */\n 0x00\n /* \"src/LBRouter.sol\":43294:43300 amount */\n dup2\n /* \"src/LBRouter.sol\":43294:43305 amount == 0 */\n sub\n /* \"src/LBRouter.sol\":43290:43314 if (amount == 0) return; */\n iszero\n /* \"src/LBRouter.sol\":43307:43314 return; */\n tag_670\n /* \"src/LBRouter.sol\":43290:43314 if (amount == 0) return; */\n jumpi\n /* \"src/LBRouter.sol\":43324:43332 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":43324:43341 _wnative.withdraw */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x2e1a7d4d\n /* \"src/LBRouter.sol\":43342:43348 amount */\n dup3\n /* \"src/LBRouter.sol\":43324:43349 _wnative.withdraw(amount) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_672\n swap2\n swap1\n tag_39\n jump\t// in\n tag_672:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_673\n jumpi\n 0x00\n dup1\n revert\n tag_673:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_675\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_675:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":43359:43390 _safeTransferNative(to, amount) */\n tag_676\n /* \"src/LBRouter.sol\":43379:43381 to */\n dup3\n /* \"src/LBRouter.sol\":43383:43389 amount */\n dup3\n /* \"src/LBRouter.sol\":43359:43378 _safeTransferNative */\n tag_248\n /* \"src/LBRouter.sol\":43359:43390 _safeTransferNative(to, amount) */\n jump\t// in\n tag_676:\n /* \"src/LBRouter.sol\":43207:43397 function _wNativeWithdrawAndTransfer(address to, uint256 amount) private {... */\n tag_670:\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":30849:32023 function _getAmountsIn(... */\n tag_224:\n /* \"src/LBRouter.sol\":31029:31055 uint256[] memory amountsIn */\n 0x60\n /* \"src/LBRouter.sol\":31093:31102 tokenPath */\n dup3\n /* \"src/LBRouter.sol\":31093:31109 tokenPath.length */\n mload\n /* \"src/LBRouter.sol\":31079:31110 new uint256[](tokenPath.length) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_678\n jumpi\n tag_679\n tag_590\n jump\t// in\n tag_679:\n tag_678:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x20\n mul\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_680\n jumpi\n dup2\n 0x20\n add\n 0x20\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_680:\n pop\n /* \"src/LBRouter.sol\":31067:31110 amountsIn = new uint256[](tokenPath.length) */\n swap1\n pop\n /* \"src/LBRouter.sol\":31216:31225 amountOut */\n dup2\n /* \"src/LBRouter.sol\":31190:31199 amountsIn */\n dup2\n /* \"src/LBRouter.sol\":31200:31205 pairs */\n dup6\n /* \"src/LBRouter.sol\":31200:31212 pairs.length */\n mload\n /* \"src/LBRouter.sol\":31190:31213 amountsIn[pairs.length] */\n dup2\n mload\n dup2\n lt\n tag_681\n jumpi\n tag_682\n tag_176\n jump\t// in\n tag_682:\n tag_681:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBRouter.sol\":31190:31225 amountsIn[pairs.length] = amountOut */\n dup2\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":31241:31250 uint256 i */\n 0x00\n /* \"src/LBRouter.sol\":31253:31258 pairs */\n dup5\n /* \"src/LBRouter.sol\":31253:31265 pairs.length */\n mload\n /* \"src/LBRouter.sol\":31241:31265 uint256 i = pairs.length */\n swap1\n pop\n /* \"src/LBRouter.sol\":31236:32017 for (uint256 i = pairs.length; i != 0; i--) {... */\n tag_683:\n /* \"src/LBRouter.sol\":31272:31273 0 */\n 0x00\n /* \"src/LBRouter.sol\":31267:31268 i */\n dup2\n /* \"src/LBRouter.sol\":31267:31273 i != 0 */\n eq\n /* \"src/LBRouter.sol\":31236:32017 for (uint256 i = pairs.length; i != 0; i--) {... */\n tag_684\n jumpi\n /* \"src/LBRouter.sol\":31294:31306 IERC20 token */\n 0x00\n /* \"src/LBRouter.sol\":31309:31318 tokenPath */\n dup5\n /* \"src/LBRouter.sol\":31323:31324 1 */\n 0x01\n /* \"src/LBRouter.sol\":31319:31320 i */\n dup4\n /* \"src/LBRouter.sol\":31319:31324 i - 1 */\n tag_686\n swap2\n swap1\n tag_202\n jump\t// in\n tag_686:\n /* \"src/LBRouter.sol\":31309:31325 tokenPath[i - 1] */\n dup2\n mload\n dup2\n lt\n tag_687\n jumpi\n tag_688\n tag_176\n jump\t// in\n tag_688:\n tag_687:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":31294:31325 IERC20 token = tokenPath[i - 1] */\n swap1\n pop\n /* \"src/LBRouter.sol\":31339:31354 Version version */\n 0x00\n /* \"src/LBRouter.sol\":31357:31365 versions */\n dup8\n /* \"src/LBRouter.sol\":31370:31371 1 */\n 0x01\n /* \"src/LBRouter.sol\":31366:31367 i */\n dup5\n /* \"src/LBRouter.sol\":31366:31371 i - 1 */\n tag_689\n swap2\n swap1\n tag_202\n jump\t// in\n tag_689:\n /* \"src/LBRouter.sol\":31357:31372 versions[i - 1] */\n dup2\n mload\n dup2\n lt\n tag_690\n jumpi\n tag_691\n tag_176\n jump\t// in\n tag_691:\n tag_690:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":31339:31372 Version version = versions[i - 1] */\n swap1\n pop\n /* \"src/LBRouter.sol\":31386:31398 address pair */\n 0x00\n /* \"src/LBRouter.sol\":31401:31406 pairs */\n dup8\n /* \"src/LBRouter.sol\":31411:31412 1 */\n 0x01\n /* \"src/LBRouter.sol\":31407:31408 i */\n dup6\n /* \"src/LBRouter.sol\":31407:31412 i - 1 */\n tag_692\n swap2\n swap1\n tag_202\n jump\t// in\n tag_692:\n /* \"src/LBRouter.sol\":31401:31413 pairs[i - 1] */\n dup2\n mload\n dup2\n lt\n tag_693\n jumpi\n tag_694\n tag_176\n jump\t// in\n tag_694:\n tag_693:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":31386:31413 address pair = pairs[i - 1] */\n swap1\n pop\n /* \"src/LBRouter.sol\":31443:31453 Version.V1 */\n 0x00\n /* \"src/LBRouter.sol\":31432:31453 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_695\n jumpi\n tag_696\n tag_629\n jump\t// in\n tag_696:\n tag_695:\n /* \"src/LBRouter.sol\":31432:31439 version */\n dup3\n /* \"src/LBRouter.sol\":31432:31453 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_697\n jumpi\n tag_698\n tag_629\n jump\t// in\n tag_698:\n tag_697:\n sub\n /* \"src/LBRouter.sol\":31428:32007 if (version == Version.V1) {... */\n tag_699\n jumpi\n /* \"src/LBRouter.sol\":31474:31491 uint256 reserveIn */\n 0x00\n /* \"src/LBRouter.sol\":31493:31511 uint256 reserveOut */\n dup1\n /* \"src/LBRouter.sol\":31532:31536 pair */\n dup3\n /* \"src/LBRouter.sol\":31516:31549 ISovrynLBPairV1(pair).getReserves */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x0902f1ac\n /* \"src/LBRouter.sol\":31516:31551 ISovrynLBPairV1(pair).getReserves() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x60\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_701\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_701:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_702\n swap2\n swap1\n tag_636\n jump\t// in\n tag_702:\n /* \"src/LBRouter.sol\":31473:31551 (uint256 reserveIn, uint256 reserveOut,) = ISovrynLBPairV1(pair).getReserves() */\n pop\n 0xffffffffffffffffffffffffffff\n and\n swap2\n pop\n 0xffffffffffffffffffffffffffff\n and\n swap2\n pop\n /* \"src/LBRouter.sol\":31581:31590 tokenPath */\n dup9\n /* \"src/LBRouter.sol\":31591:31592 i */\n dup7\n /* \"src/LBRouter.sol\":31581:31593 tokenPath[i] */\n dup2\n mload\n dup2\n lt\n tag_703\n jumpi\n tag_704\n tag_176\n jump\t// in\n tag_704:\n tag_703:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":31573:31593 token > tokenPath[i] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":31573:31578 token */\n dup6\n /* \"src/LBRouter.sol\":31573:31593 token > tokenPath[i] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n gt\n /* \"src/LBRouter.sol\":31569:31685 if (token > tokenPath[i]) {... */\n iszero\n tag_705\n jumpi\n /* \"src/LBRouter.sol\":31644:31654 reserveOut */\n dup1\n /* \"src/LBRouter.sol\":31656:31665 reserveIn */\n dup3\n /* \"src/LBRouter.sol\":31617:31666 (reserveIn, reserveOut) = (reserveOut, reserveIn) */\n dup1\n swap3\n pop\n dup2\n swap4\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":31569:31685 if (token > tokenPath[i]) {... */\n tag_705:\n /* \"src/LBRouter.sol\":31703:31721 uint256 amountOut_ */\n 0x00\n /* \"src/LBRouter.sol\":31724:31733 amountsIn */\n dup8\n /* \"src/LBRouter.sol\":31734:31735 i */\n dup8\n /* \"src/LBRouter.sol\":31724:31736 amountsIn[i] */\n dup2\n mload\n dup2\n lt\n tag_706\n jumpi\n tag_707\n tag_176\n jump\t// in\n tag_707:\n tag_706:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":31703:31736 uint256 amountOut_ = amountsIn[i] */\n swap1\n pop\n /* \"src/LBRouter.sol\":31781:31826 amountOut_.getAmountIn(reserveIn, reserveOut) */\n tag_708\n /* \"src/LBRouter.sol\":31804:31813 reserveIn */\n dup4\n /* \"src/LBRouter.sol\":31815:31825 reserveOut */\n dup4\n /* \"src/LBRouter.sol\":31781:31791 amountOut_ */\n dup4\n /* \"src/LBRouter.sol\":31781:31803 amountOut_.getAmountIn */\n tag_709\n swap1\n /* \"src/LBRouter.sol\":31781:31826 amountOut_.getAmountIn(reserveIn, reserveOut) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_708:\n /* \"src/LBRouter.sol\":31754:31827 amountsIn[i - 1] = uint128(amountOut_.getAmountIn(reserveIn, reserveOut)) */\n 0xffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":31754:31763 amountsIn */\n dup9\n /* \"src/LBRouter.sol\":31768:31769 1 */\n 0x01\n /* \"src/LBRouter.sol\":31764:31765 i */\n dup10\n /* \"src/LBRouter.sol\":31764:31769 i - 1 */\n tag_710\n swap2\n swap1\n tag_202\n jump\t// in\n tag_710:\n /* \"src/LBRouter.sol\":31754:31770 amountsIn[i - 1] */\n dup2\n mload\n dup2\n lt\n tag_711\n jumpi\n tag_712\n tag_176\n jump\t// in\n tag_712:\n tag_711:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBRouter.sol\":31754:31827 amountsIn[i - 1] = uint128(amountOut_.getAmountIn(reserveIn, reserveOut)) */\n dup2\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":31455:31842 {... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":31428:32007 if (version == Version.V1) {... */\n jump(tag_713)\n tag_699:\n /* \"src/LBRouter.sol\":31909:31992 getSwapIn(ILBPair(pair), uint128(amountsIn[i]), ILBPair(pair).getTokenX() == token) */\n tag_714\n /* \"src/LBRouter.sol\":31927:31931 pair */\n dup2\n /* \"src/LBRouter.sol\":31942:31951 amountsIn */\n dup7\n /* \"src/LBRouter.sol\":31952:31953 i */\n dup7\n /* \"src/LBRouter.sol\":31942:31954 amountsIn[i] */\n dup2\n mload\n dup2\n lt\n tag_715\n jumpi\n tag_716\n tag_176\n jump\t// in\n tag_716:\n tag_715:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":31986:31991 token */\n dup6\n /* \"src/LBRouter.sol\":31957:31991 ILBPair(pair).getTokenX() == token */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":31965:31969 pair */\n dup5\n /* \"src/LBRouter.sol\":31957:31980 ILBPair(pair).getTokenX */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x05e8746d\n /* \"src/LBRouter.sol\":31957:31982 ILBPair(pair).getTokenX() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_718\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_718:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_719\n swap2\n swap1\n tag_380\n jump\t// in\n tag_719:\n /* \"src/LBRouter.sol\":31957:31991 ILBPair(pair).getTokenX() == token */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":31909:31918 getSwapIn */\n tag_109\n /* \"src/LBRouter.sol\":31909:31992 getSwapIn(ILBPair(pair), uint128(amountsIn[i]), ILBPair(pair).getTokenX() == token) */\n jump\t// in\n tag_714:\n /* \"src/LBRouter.sol\":31866:31992 (amountsIn[i - 1],,) =... */\n dup3\n 0xffffffffffffffffffffffffffffffff\n and\n swap3\n pop\n swap1\n pop\n pop\n /* \"src/LBRouter.sol\":31867:31876 amountsIn */\n dup6\n /* \"src/LBRouter.sol\":31881:31882 1 */\n 0x01\n /* \"src/LBRouter.sol\":31877:31878 i */\n dup7\n /* \"src/LBRouter.sol\":31877:31882 i - 1 */\n tag_720\n swap2\n swap1\n tag_202\n jump\t// in\n tag_720:\n /* \"src/LBRouter.sol\":31867:31883 amountsIn[i - 1] */\n dup2\n mload\n dup2\n lt\n tag_721\n jumpi\n tag_722\n tag_176\n jump\t// in\n tag_722:\n tag_721:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBRouter.sol\":31866:31992 (amountsIn[i - 1],,) =... */\n dup2\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":31428:32007 if (version == Version.V1) {... */\n tag_713:\n /* \"src/LBRouter.sol\":31280:32017 {... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":31275:31278 i-- */\n dup1\n dup1\n tag_723\n swap1\n tag_724\n jump\t// in\n tag_723:\n swap2\n pop\n pop\n /* \"src/LBRouter.sol\":31236:32017 for (uint256 i = pairs.length; i != 0; i--) {... */\n jump(tag_683)\n tag_684:\n pop\n /* \"src/LBRouter.sol\":30849:32023 function _getAmountsIn(... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":42803:43010 function _wNativeDepositAndTransfer(address to, uint256 amount) private {... */\n tag_236:\n /* \"src/LBRouter.sol\":42899:42900 0 */\n 0x00\n /* \"src/LBRouter.sol\":42889:42895 amount */\n dup2\n /* \"src/LBRouter.sol\":42889:42900 amount == 0 */\n sub\n /* \"src/LBRouter.sol\":42885:42909 if (amount == 0) return; */\n iszero\n /* \"src/LBRouter.sol\":42902:42909 return; */\n tag_725\n /* \"src/LBRouter.sol\":42885:42909 if (amount == 0) return; */\n jumpi\n /* \"src/LBRouter.sol\":42919:42927 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":42919:42935 _wnative.deposit */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xd0e30db0\n /* \"src/LBRouter.sol\":42943:42949 amount */\n dup3\n /* \"src/LBRouter.sol\":42919:42952 _wnative.deposit{value: amount}() */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup9\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_727\n jumpi\n 0x00\n dup1\n revert\n tag_727:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_729\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_729:\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":42962:43003 IERC20(_wnative).safeTransfer(to, amount) */\n tag_730\n /* \"src/LBRouter.sol\":42992:42994 to */\n dup3\n /* \"src/LBRouter.sol\":42996:43002 amount */\n dup3\n /* \"src/LBRouter.sol\":42969:42977 _wnative */\n immutable(\"0xd2ac1c258977a567c566f03bd51d630aa60046725bca6cab5f54ee9731a5604b\")\n /* \"src/LBRouter.sol\":42962:42991 IERC20(_wnative).safeTransfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n tag_350\n swap1\n /* \"src/LBRouter.sol\":42962:43003 IERC20(_wnative).safeTransfer(to, amount) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_730:\n /* \"src/LBRouter.sol\":42803:43010 function _wNativeDepositAndTransfer(address to, uint256 amount) private {... */\n tag_725:\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":35665:37064 function _swapTokensForExactTokens(... */\n tag_238:\n /* \"src/LBRouter.sol\":35881:35898 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":35910:35922 IERC20 token */\n dup1\n /* \"src/LBRouter.sol\":35932:35949 address recipient */\n 0x00\n /* \"src/LBRouter.sol\":35959:35971 address pair */\n dup1\n /* \"src/LBRouter.sol\":35981:35996 Version version */\n 0x00\n /* \"src/LBRouter.sol\":36007:36023 IERC20 tokenNext */\n dup1\n /* \"src/LBRouter.sol\":36026:36035 tokenPath */\n dup9\n /* \"src/LBRouter.sol\":36036:36037 0 */\n 0x00\n /* \"src/LBRouter.sol\":36026:36038 tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_732\n jumpi\n tag_733\n tag_176\n jump\t// in\n tag_733:\n tag_732:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":36007:36038 IERC20 tokenNext = tokenPath[0] */\n swap1\n pop\n /* \"src/LBRouter.sol\":36078:36087 uint256 i */\n 0x00\n /* \"src/LBRouter.sol\":36073:37048 for (uint256 i; i < pairs.length; ++i) {... */\n tag_734:\n /* \"src/LBRouter.sol\":36093:36098 pairs */\n dup12\n /* \"src/LBRouter.sol\":36093:36105 pairs.length */\n mload\n /* \"src/LBRouter.sol\":36089:36090 i */\n dup2\n /* \"src/LBRouter.sol\":36089:36105 i < pairs.length */\n lt\n /* \"src/LBRouter.sol\":36073:37048 for (uint256 i; i < pairs.length; ++i) {... */\n iszero\n tag_735\n jumpi\n /* \"src/LBRouter.sol\":36137:36142 pairs */\n dup12\n /* \"src/LBRouter.sol\":36143:36144 i */\n dup2\n /* \"src/LBRouter.sol\":36137:36145 pairs[i] */\n dup2\n mload\n dup2\n lt\n tag_737\n jumpi\n tag_738\n tag_176\n jump\t// in\n tag_738:\n tag_737:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":36130:36145 pair = pairs[i] */\n swap4\n pop\n /* \"src/LBRouter.sol\":36173:36181 versions */\n dup11\n /* \"src/LBRouter.sol\":36182:36183 i */\n dup2\n /* \"src/LBRouter.sol\":36173:36184 versions[i] */\n dup2\n mload\n dup2\n lt\n tag_739\n jumpi\n tag_740\n tag_176\n jump\t// in\n tag_740:\n tag_739:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":36163:36184 version = versions[i] */\n swap3\n pop\n /* \"src/LBRouter.sol\":36211:36220 tokenNext */\n dup2\n /* \"src/LBRouter.sol\":36203:36220 token = tokenNext */\n swap6\n pop\n /* \"src/LBRouter.sol\":36250:36259 tokenPath */\n dup10\n /* \"src/LBRouter.sol\":36264:36265 1 */\n 0x01\n /* \"src/LBRouter.sol\":36260:36261 i */\n dup3\n /* \"src/LBRouter.sol\":36260:36265 i + 1 */\n add\n /* \"src/LBRouter.sol\":36250:36266 tokenPath[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_741\n jumpi\n tag_742\n tag_176\n jump\t// in\n tag_742:\n tag_741:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":36238:36266 tokenNext = tokenPath[i + 1] */\n swap2\n pop\n /* \"src/LBRouter.sol\":36306:36311 pairs */\n dup12\n /* \"src/LBRouter.sol\":36306:36318 pairs.length */\n mload\n /* \"src/LBRouter.sol\":36301:36302 1 */\n 0x01\n /* \"src/LBRouter.sol\":36297:36298 i */\n dup3\n /* \"src/LBRouter.sol\":36297:36302 i + 1 */\n add\n /* \"src/LBRouter.sol\":36297:36318 i + 1 == pairs.length */\n eq\n /* \"src/LBRouter.sol\":36297:36338 i + 1 == pairs.length ? to : pairs[i + 1] */\n tag_743\n jumpi\n /* \"src/LBRouter.sol\":36326:36331 pairs */\n dup12\n /* \"src/LBRouter.sol\":36336:36337 1 */\n 0x01\n /* \"src/LBRouter.sol\":36332:36333 i */\n dup3\n /* \"src/LBRouter.sol\":36332:36337 i + 1 */\n add\n /* \"src/LBRouter.sol\":36326:36338 pairs[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_744\n jumpi\n tag_745\n tag_176\n jump\t// in\n tag_745:\n tag_744:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":36297:36338 i + 1 == pairs.length ? to : pairs[i + 1] */\n jump(tag_746)\n tag_743:\n /* \"src/LBRouter.sol\":36321:36323 to */\n dup8\n /* \"src/LBRouter.sol\":36297:36338 i + 1 == pairs.length ? to : pairs[i + 1] */\n tag_746:\n /* \"src/LBRouter.sol\":36285:36338 recipient = i + 1 == pairs.length ? to : pairs[i + 1] */\n swap5\n pop\n /* \"src/LBRouter.sol\":36372:36382 Version.V1 */\n 0x00\n /* \"src/LBRouter.sol\":36361:36382 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_747\n jumpi\n tag_748\n tag_629\n jump\t// in\n tag_748:\n tag_747:\n /* \"src/LBRouter.sol\":36361:36368 version */\n dup4\n /* \"src/LBRouter.sol\":36361:36382 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_749\n jumpi\n tag_750\n tag_629\n jump\t// in\n tag_750:\n tag_749:\n sub\n /* \"src/LBRouter.sol\":36357:37034 if (version == Version.V1) {... */\n tag_751\n jumpi\n /* \"src/LBRouter.sol\":36418:36427 amountsIn */\n dup9\n /* \"src/LBRouter.sol\":36432:36433 1 */\n 0x01\n /* \"src/LBRouter.sol\":36428:36429 i */\n dup3\n /* \"src/LBRouter.sol\":36428:36433 i + 1 */\n add\n /* \"src/LBRouter.sol\":36418:36434 amountsIn[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_752\n jumpi\n tag_753\n tag_176\n jump\t// in\n tag_753:\n tag_752:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":36406:36434 amountOut = amountsIn[i + 1] */\n swap7\n pop\n /* \"src/LBRouter.sol\":36468:36477 tokenNext */\n dup2\n /* \"src/LBRouter.sol\":36460:36477 token < tokenNext */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":36460:36465 token */\n dup7\n /* \"src/LBRouter.sol\":36460:36477 token < tokenNext */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n lt\n /* \"src/LBRouter.sol\":36456:36693 if (token < tokenNext) {... */\n iszero\n tag_754\n jumpi\n /* \"src/LBRouter.sol\":36521:36525 pair */\n dup4\n /* \"src/LBRouter.sol\":36505:36531 ISovrynLBPairV1(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x022c0d9f\n /* \"src/LBRouter.sol\":36532:36533 0 */\n 0x00\n /* \"src/LBRouter.sol\":36535:36544 amountOut */\n dup10\n /* \"src/LBRouter.sol\":36546:36555 recipient */\n dup9\n /* \"src/LBRouter.sol\":36505:36560 ISovrynLBPairV1(pair).swap(0, amountOut, recipient, \"\") */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_755\n swap4\n swap3\n swap2\n swap1\n tag_645\n jump\t// in\n tag_755:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_756\n jumpi\n 0x00\n dup1\n revert\n tag_756:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_758\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_758:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":36456:36693 if (token < tokenNext) {... */\n jump(tag_759)\n tag_754:\n /* \"src/LBRouter.sol\":36631:36635 pair */\n dup4\n /* \"src/LBRouter.sol\":36615:36641 ISovrynLBPairV1(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x022c0d9f\n /* \"src/LBRouter.sol\":36642:36651 amountOut */\n dup9\n /* \"src/LBRouter.sol\":36653:36654 0 */\n 0x00\n /* \"src/LBRouter.sol\":36656:36665 recipient */\n dup9\n /* \"src/LBRouter.sol\":36615:36670 ISovrynLBPairV1(pair).swap(amountOut, 0, recipient, \"\") */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_760\n swap4\n swap3\n swap2\n swap1\n tag_656\n jump\t// in\n tag_760:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_761\n jumpi\n 0x00\n dup1\n revert\n tag_761:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_763\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_763:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":36456:36693 if (token < tokenNext) {... */\n tag_759:\n /* \"src/LBRouter.sol\":36357:37034 if (version == Version.V1) {... */\n jump(tag_764)\n tag_751:\n /* \"src/LBRouter.sol\":36739:36752 bool swapForY */\n 0x00\n /* \"src/LBRouter.sol\":36776:36780 pair */\n dup5\n /* \"src/LBRouter.sol\":36768:36791 ILBPair(pair).getTokenY */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xda10610c\n /* \"src/LBRouter.sol\":36768:36793 ILBPair(pair).getTokenY() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_766\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_766:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_767\n swap2\n swap1\n tag_380\n jump\t// in\n tag_767:\n /* \"src/LBRouter.sol\":36755:36793 tokenNext == ILBPair(pair).getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":36755:36764 tokenNext */\n dup4\n /* \"src/LBRouter.sol\":36755:36793 tokenNext == ILBPair(pair).getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":36739:36793 bool swapForY = tokenNext == ILBPair(pair).getTokenY() */\n swap1\n pop\n /* \"src/LBRouter.sol\":36817:36835 uint256 amountXOut */\n 0x00\n /* \"src/LBRouter.sol\":36837:36855 uint256 amountYOut */\n dup1\n /* \"src/LBRouter.sol\":36859:36907 ILBPair(pair).swap(swapForY, recipient).decode() */\n tag_768\n /* \"src/LBRouter.sol\":36867:36871 pair */\n dup8\n /* \"src/LBRouter.sol\":36859:36877 ILBPair(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x53c059a0\n /* \"src/LBRouter.sol\":36878:36886 swapForY */\n dup6\n /* \"src/LBRouter.sol\":36888:36897 recipient */\n dup12\n /* \"src/LBRouter.sol\":36859:36898 ILBPair(pair).swap(swapForY, recipient) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_769\n swap3\n swap2\n swap1\n tag_665\n jump\t// in\n tag_769:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n gas\n call\n iszero\n dup1\n iszero\n tag_771\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_771:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_772\n swap2\n swap1\n tag_669\n jump\t// in\n tag_772:\n /* \"src/LBRouter.sol\":36859:36905 ILBPair(pair).swap(swapForY, recipient).decode */\n tag_773\n /* \"src/LBRouter.sol\":36859:36907 ILBPair(pair).swap(swapForY, recipient).decode() */\n jump\t// in\n tag_768:\n /* \"src/LBRouter.sol\":36816:36907 (uint256 amountXOut, uint256 amountYOut) = ILBPair(pair).swap(swapForY, recipient).decode() */\n 0xffffffffffffffffffffffffffffffff\n and\n swap2\n pop\n 0xffffffffffffffffffffffffffffffff\n and\n swap2\n pop\n /* \"src/LBRouter.sol\":36934:36942 swapForY */\n dup3\n /* \"src/LBRouter.sol\":36930:37015 if (swapForY) amountOut = amountYOut;... */\n iszero\n tag_774\n jumpi\n /* \"src/LBRouter.sol\":36956:36966 amountYOut */\n dup1\n /* \"src/LBRouter.sol\":36944:36966 amountOut = amountYOut */\n swap10\n pop\n /* \"src/LBRouter.sol\":36930:37015 if (swapForY) amountOut = amountYOut;... */\n jump(tag_775)\n tag_774:\n /* \"src/LBRouter.sol\":37005:37015 amountXOut */\n dup2\n /* \"src/LBRouter.sol\":36993:37015 amountOut = amountXOut */\n swap10\n pop\n /* \"src/LBRouter.sol\":36930:37015 if (swapForY) amountOut = amountYOut;... */\n tag_775:\n /* \"src/LBRouter.sol\":36717:37034 {... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":36357:37034 if (version == Version.V1) {... */\n tag_764:\n /* \"src/LBRouter.sol\":36107:36110 ++i */\n dup1\n 0x01\n add\n swap1\n pop\n /* \"src/LBRouter.sol\":36073:37048 for (uint256 i; i < pairs.length; ++i) {... */\n jump(tag_734)\n tag_735:\n pop\n /* \"src/LBRouter.sol\":35900:37064 {... */\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":35665:37064 function _swapTokensForExactTokens(... */\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":42377:42608 function _safeTransferNative(address to, uint256 amount) private {... */\n tag_248:\n /* \"src/LBRouter.sol\":42466:42467 0 */\n 0x00\n /* \"src/LBRouter.sol\":42456:42462 amount */\n dup2\n /* \"src/LBRouter.sol\":42456:42467 amount == 0 */\n sub\n /* \"src/LBRouter.sol\":42452:42476 if (amount == 0) return; */\n iszero\n /* \"src/LBRouter.sol\":42469:42476 return; */\n tag_776\n /* \"src/LBRouter.sol\":42452:42476 if (amount == 0) return; */\n jumpi\n /* \"src/LBRouter.sol\":42487:42499 bool success */\n 0x00\n /* \"src/LBRouter.sol\":42504:42506 to */\n dup3\n /* \"src/LBRouter.sol\":42504:42511 to.call */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":42519:42525 amount */\n dup3\n /* \"src/LBRouter.sol\":42504:42530 to.call{value: amount}(\"\") */\n mload(0x40)\n tag_778\n swap1\n tag_779\n jump\t// in\n tag_778:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup8\n gas\n call\n swap3\n pop\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_782\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_781)\n tag_782:\n 0x60\n swap2\n pop\n tag_781:\n pop\n /* \"src/LBRouter.sol\":42486:42530 (bool success,) = to.call{value: amount}(\"\") */\n pop\n swap1\n pop\n /* \"src/LBRouter.sol\":42545:42552 success */\n dup1\n /* \"src/LBRouter.sol\":42540:42601 if (!success) revert LBRouter__FailedToSendNATIVE(to, amount) */\n tag_783\n jumpi\n /* \"src/LBRouter.sol\":42590:42592 to */\n dup3\n /* \"src/LBRouter.sol\":42594:42600 amount */\n dup3\n /* \"src/LBRouter.sol\":42561:42601 LBRouter__FailedToSendNATIVE(to, amount) */\n mload(0x40)\n 0x47b96f7000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_784\n swap3\n swap2\n swap1\n tag_785\n jump\t// in\n tag_784:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":42540:42601 if (!success) revert LBRouter__FailedToSendNATIVE(to, amount) */\n tag_783:\n /* \"src/LBRouter.sol\":42442:42608 {... */\n pop\n /* \"src/LBRouter.sol\":42377:42608 function _safeTransferNative(address to, uint256 amount) private {... */\n tag_776:\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":33628:35255 function _swapExactTokensForTokens(... */\n tag_265:\n /* \"src/LBRouter.sol\":33834:33851 uint256 amountOut */\n 0x00\n /* \"src/LBRouter.sol\":33863:33875 IERC20 token */\n dup1\n /* \"src/LBRouter.sol\":33885:33900 Version version */\n 0x00\n /* \"src/LBRouter.sol\":33910:33927 address recipient */\n dup1\n /* \"src/LBRouter.sol\":33937:33949 address pair */\n 0x00\n /* \"src/LBRouter.sol\":33960:33976 IERC20 tokenNext */\n dup1\n /* \"src/LBRouter.sol\":33979:33988 tokenPath */\n dup8\n /* \"src/LBRouter.sol\":33989:33990 0 */\n 0x00\n /* \"src/LBRouter.sol\":33979:33991 tokenPath[0] */\n dup2\n mload\n dup2\n lt\n tag_787\n jumpi\n tag_788\n tag_176\n jump\t// in\n tag_788:\n tag_787:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":33960:33991 IERC20 tokenNext = tokenPath[0] */\n swap1\n pop\n /* \"src/LBRouter.sol\":34013:34021 amountIn */\n dup11\n /* \"src/LBRouter.sol\":34001:34021 amountOut = amountIn */\n swap6\n pop\n /* \"src/LBRouter.sol\":34061:34070 uint256 i */\n 0x00\n /* \"src/LBRouter.sol\":34056:35239 for (uint256 i; i < pairs.length; ++i) {... */\n tag_789:\n /* \"src/LBRouter.sol\":34076:34081 pairs */\n dup11\n /* \"src/LBRouter.sol\":34076:34088 pairs.length */\n mload\n /* \"src/LBRouter.sol\":34072:34073 i */\n dup2\n /* \"src/LBRouter.sol\":34072:34088 i < pairs.length */\n lt\n /* \"src/LBRouter.sol\":34056:35239 for (uint256 i; i < pairs.length; ++i) {... */\n iszero\n tag_790\n jumpi\n /* \"src/LBRouter.sol\":34120:34125 pairs */\n dup11\n /* \"src/LBRouter.sol\":34126:34127 i */\n dup2\n /* \"src/LBRouter.sol\":34120:34128 pairs[i] */\n dup2\n mload\n dup2\n lt\n tag_792\n jumpi\n tag_793\n tag_176\n jump\t// in\n tag_793:\n tag_792:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":34113:34128 pair = pairs[i] */\n swap3\n pop\n /* \"src/LBRouter.sol\":34156:34164 versions */\n dup10\n /* \"src/LBRouter.sol\":34165:34166 i */\n dup2\n /* \"src/LBRouter.sol\":34156:34167 versions[i] */\n dup2\n mload\n dup2\n lt\n tag_794\n jumpi\n tag_795\n tag_176\n jump\t// in\n tag_795:\n tag_794:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":34146:34167 version = versions[i] */\n swap5\n pop\n /* \"src/LBRouter.sol\":34194:34203 tokenNext */\n dup2\n /* \"src/LBRouter.sol\":34186:34203 token = tokenNext */\n swap6\n pop\n /* \"src/LBRouter.sol\":34233:34242 tokenPath */\n dup9\n /* \"src/LBRouter.sol\":34247:34248 1 */\n 0x01\n /* \"src/LBRouter.sol\":34243:34244 i */\n dup3\n /* \"src/LBRouter.sol\":34243:34248 i + 1 */\n add\n /* \"src/LBRouter.sol\":34233:34249 tokenPath[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_796\n jumpi\n tag_797\n tag_176\n jump\t// in\n tag_797:\n tag_796:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":34221:34249 tokenNext = tokenPath[i + 1] */\n swap2\n pop\n /* \"src/LBRouter.sol\":34289:34294 pairs */\n dup11\n /* \"src/LBRouter.sol\":34289:34301 pairs.length */\n mload\n /* \"src/LBRouter.sol\":34284:34285 1 */\n 0x01\n /* \"src/LBRouter.sol\":34280:34281 i */\n dup3\n /* \"src/LBRouter.sol\":34280:34285 i + 1 */\n add\n /* \"src/LBRouter.sol\":34280:34301 i + 1 == pairs.length */\n eq\n /* \"src/LBRouter.sol\":34280:34321 i + 1 == pairs.length ? to : pairs[i + 1] */\n tag_798\n jumpi\n /* \"src/LBRouter.sol\":34309:34314 pairs */\n dup11\n /* \"src/LBRouter.sol\":34319:34320 1 */\n 0x01\n /* \"src/LBRouter.sol\":34315:34316 i */\n dup3\n /* \"src/LBRouter.sol\":34315:34320 i + 1 */\n add\n /* \"src/LBRouter.sol\":34309:34321 pairs[i + 1] */\n dup2\n mload\n dup2\n lt\n tag_799\n jumpi\n tag_800\n tag_176\n jump\t// in\n tag_800:\n tag_799:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":34280:34321 i + 1 == pairs.length ? to : pairs[i + 1] */\n jump(tag_801)\n tag_798:\n /* \"src/LBRouter.sol\":34304:34306 to */\n dup8\n /* \"src/LBRouter.sol\":34280:34321 i + 1 == pairs.length ? to : pairs[i + 1] */\n tag_801:\n /* \"src/LBRouter.sol\":34268:34321 recipient = i + 1 == pairs.length ? to : pairs[i + 1] */\n swap4\n pop\n /* \"src/LBRouter.sol\":34355:34365 Version.V1 */\n 0x00\n /* \"src/LBRouter.sol\":34344:34365 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_802\n jumpi\n tag_803\n tag_629\n jump\t// in\n tag_803:\n tag_802:\n /* \"src/LBRouter.sol\":34344:34351 version */\n dup6\n /* \"src/LBRouter.sol\":34344:34365 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_804\n jumpi\n tag_805\n tag_629\n jump\t// in\n tag_805:\n tag_804:\n sub\n /* \"src/LBRouter.sol\":34340:35225 if (version == Version.V1) {... */\n tag_806\n jumpi\n /* \"src/LBRouter.sol\":34390:34406 uint256 reserve0 */\n 0x00\n /* \"src/LBRouter.sol\":34408:34424 uint256 reserve1 */\n dup1\n /* \"src/LBRouter.sol\":34445:34449 pair */\n dup5\n /* \"src/LBRouter.sol\":34429:34462 ISovrynLBPairV1(pair).getReserves */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x0902f1ac\n /* \"src/LBRouter.sol\":34429:34464 ISovrynLBPairV1(pair).getReserves() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x60\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_808\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_808:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_809\n swap2\n swap1\n tag_636\n jump\t// in\n tag_809:\n /* \"src/LBRouter.sol\":34389:34464 (uint256 reserve0, uint256 reserve1,) = ISovrynLBPairV1(pair).getReserves() */\n pop\n 0xffffffffffffffffffffffffffff\n and\n swap2\n pop\n 0xffffffffffffffffffffffffffff\n and\n swap2\n pop\n /* \"src/LBRouter.sol\":34499:34508 tokenNext */\n dup4\n /* \"src/LBRouter.sol\":34491:34508 token < tokenNext */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":34491:34496 token */\n dup9\n /* \"src/LBRouter.sol\":34491:34508 token < tokenNext */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n lt\n /* \"src/LBRouter.sol\":34487:34884 if (token < tokenNext) {... */\n iszero\n tag_810\n jumpi\n /* \"src/LBRouter.sol\":34548:34590 amountOut.getAmountOut(reserve0, reserve1) */\n tag_811\n /* \"src/LBRouter.sol\":34571:34579 reserve0 */\n dup3\n /* \"src/LBRouter.sol\":34581:34589 reserve1 */\n dup3\n /* \"src/LBRouter.sol\":34548:34557 amountOut */\n dup12\n /* \"src/LBRouter.sol\":34548:34570 amountOut.getAmountOut */\n tag_643\n swap1\n /* \"src/LBRouter.sol\":34548:34590 amountOut.getAmountOut(reserve0, reserve1) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_811:\n /* \"src/LBRouter.sol\":34536:34590 amountOut = amountOut.getAmountOut(reserve0, reserve1) */\n swap9\n pop\n /* \"src/LBRouter.sol\":34632:34636 pair */\n dup5\n /* \"src/LBRouter.sol\":34616:34642 ISovrynLBPairV1(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x022c0d9f\n /* \"src/LBRouter.sol\":34643:34644 0 */\n 0x00\n /* \"src/LBRouter.sol\":34646:34655 amountOut */\n dup12\n /* \"src/LBRouter.sol\":34657:34666 recipient */\n dup10\n /* \"src/LBRouter.sol\":34616:34671 ISovrynLBPairV1(pair).swap(0, amountOut, recipient, \"\") */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_812\n swap4\n swap3\n swap2\n swap1\n tag_645\n jump\t// in\n tag_812:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_813\n jumpi\n 0x00\n dup1\n revert\n tag_813:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_815\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_815:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":34487:34884 if (token < tokenNext) {... */\n jump(tag_816)\n tag_810:\n /* \"src/LBRouter.sol\":34738:34780 amountOut.getAmountOut(reserve1, reserve0) */\n tag_817\n /* \"src/LBRouter.sol\":34761:34769 reserve1 */\n dup2\n /* \"src/LBRouter.sol\":34771:34779 reserve0 */\n dup4\n /* \"src/LBRouter.sol\":34738:34747 amountOut */\n dup12\n /* \"src/LBRouter.sol\":34738:34760 amountOut.getAmountOut */\n tag_643\n swap1\n /* \"src/LBRouter.sol\":34738:34780 amountOut.getAmountOut(reserve1, reserve0) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_817:\n /* \"src/LBRouter.sol\":34726:34780 amountOut = amountOut.getAmountOut(reserve1, reserve0) */\n swap9\n pop\n /* \"src/LBRouter.sol\":34822:34826 pair */\n dup5\n /* \"src/LBRouter.sol\":34806:34832 ISovrynLBPairV1(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x022c0d9f\n /* \"src/LBRouter.sol\":34833:34842 amountOut */\n dup11\n /* \"src/LBRouter.sol\":34844:34845 0 */\n 0x00\n /* \"src/LBRouter.sol\":34847:34856 recipient */\n dup10\n /* \"src/LBRouter.sol\":34806:34861 ISovrynLBPairV1(pair).swap(amountOut, 0, recipient, \"\") */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_818\n swap4\n swap3\n swap2\n swap1\n tag_656\n jump\t// in\n tag_818:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_819\n jumpi\n 0x00\n dup1\n revert\n tag_819:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_821\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_821:\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":34487:34884 if (token < tokenNext) {... */\n tag_816:\n /* \"src/LBRouter.sol\":34367:34902 {... */\n pop\n pop\n /* \"src/LBRouter.sol\":34340:35225 if (version == Version.V1) {... */\n jump(tag_822)\n tag_806:\n /* \"src/LBRouter.sol\":34930:34943 bool swapForY */\n 0x00\n /* \"src/LBRouter.sol\":34967:34971 pair */\n dup4\n /* \"src/LBRouter.sol\":34959:34982 ILBPair(pair).getTokenY */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xda10610c\n /* \"src/LBRouter.sol\":34959:34984 ILBPair(pair).getTokenY() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_824\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_824:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_825\n swap2\n swap1\n tag_380\n jump\t// in\n tag_825:\n /* \"src/LBRouter.sol\":34946:34984 tokenNext == ILBPair(pair).getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":34946:34955 tokenNext */\n dup4\n /* \"src/LBRouter.sol\":34946:34984 tokenNext == ILBPair(pair).getTokenY() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBRouter.sol\":34930:34984 bool swapForY = tokenNext == ILBPair(pair).getTokenY() */\n swap1\n pop\n /* \"src/LBRouter.sol\":35008:35026 uint256 amountXOut */\n 0x00\n /* \"src/LBRouter.sol\":35028:35046 uint256 amountYOut */\n dup1\n /* \"src/LBRouter.sol\":35050:35098 ILBPair(pair).swap(swapForY, recipient).decode() */\n tag_826\n /* \"src/LBRouter.sol\":35058:35062 pair */\n dup7\n /* \"src/LBRouter.sol\":35050:35068 ILBPair(pair).swap */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x53c059a0\n /* \"src/LBRouter.sol\":35069:35077 swapForY */\n dup6\n /* \"src/LBRouter.sol\":35079:35088 recipient */\n dup11\n /* \"src/LBRouter.sol\":35050:35089 ILBPair(pair).swap(swapForY, recipient) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_827\n swap3\n swap2\n swap1\n tag_665\n jump\t// in\n tag_827:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n gas\n call\n iszero\n dup1\n iszero\n tag_829\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_829:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_830\n swap2\n swap1\n tag_669\n jump\t// in\n tag_830:\n /* \"src/LBRouter.sol\":35050:35096 ILBPair(pair).swap(swapForY, recipient).decode */\n tag_773\n /* \"src/LBRouter.sol\":35050:35098 ILBPair(pair).swap(swapForY, recipient).decode() */\n jump\t// in\n tag_826:\n /* \"src/LBRouter.sol\":35007:35098 (uint256 amountXOut, uint256 amountYOut) = ILBPair(pair).swap(swapForY, recipient).decode() */\n 0xffffffffffffffffffffffffffffffff\n and\n swap2\n pop\n 0xffffffffffffffffffffffffffffffff\n and\n swap2\n pop\n /* \"src/LBRouter.sol\":35125:35133 swapForY */\n dup3\n /* \"src/LBRouter.sol\":35121:35206 if (swapForY) amountOut = amountYOut;... */\n iszero\n tag_831\n jumpi\n /* \"src/LBRouter.sol\":35147:35157 amountYOut */\n dup1\n /* \"src/LBRouter.sol\":35135:35157 amountOut = amountYOut */\n swap10\n pop\n /* \"src/LBRouter.sol\":35121:35206 if (swapForY) amountOut = amountYOut;... */\n jump(tag_832)\n tag_831:\n /* \"src/LBRouter.sol\":35196:35206 amountXOut */\n dup2\n /* \"src/LBRouter.sol\":35184:35206 amountOut = amountXOut */\n swap10\n pop\n /* \"src/LBRouter.sol\":35121:35206 if (swapForY) amountOut = amountYOut;... */\n tag_832:\n /* \"src/LBRouter.sol\":34908:35225 {... */\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":34340:35225 if (version == Version.V1) {... */\n tag_822:\n /* \"src/LBRouter.sol\":34090:34093 ++i */\n dup1\n 0x01\n add\n swap1\n pop\n /* \"src/LBRouter.sol\":34056:35239 for (uint256 i; i < pairs.length; ++i) {... */\n jump(tag_789)\n tag_790:\n pop\n /* \"src/LBRouter.sol\":33853:35255 {... */\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":33628:35255 function _swapExactTokensForTokens(... */\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/TokenHelper.sol\":1419:1639 function safeTransfer(IERC20 token, address recipient, uint256 amount) internal {... */\n tag_350:\n /* \"src/libraries/TokenHelper.sol\":1509:1526 bytes memory data */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1552:1575 token.transfer.selector */\n shl(0xe0, 0xa9059cbb)\n /* \"src/libraries/TokenHelper.sol\":1577:1586 recipient */\n dup4\n /* \"src/libraries/TokenHelper.sol\":1588:1594 amount */\n dup4\n /* \"src/libraries/TokenHelper.sol\":1529:1595 abi.encodeWithSelector(token.transfer.selector, recipient, amount) */\n add(0x24, mload(0x40))\n tag_834\n swap3\n swap2\n swap1\n tag_785\n jump\t// in\n tag_834:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n 0x20\n dup3\n add\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup4\n dup2\n dup4\n and\n or\n dup4\n mstore\n pop\n pop\n pop\n pop\n /* \"src/libraries/TokenHelper.sol\":1509:1595 bytes memory data = abi.encodeWithSelector(token.transfer.selector, recipient, amount) */\n swap1\n pop\n /* \"src/libraries/TokenHelper.sol\":1606:1632 _callAndCatch(token, data) */\n tag_835\n /* \"src/libraries/TokenHelper.sol\":1620:1625 token */\n dup5\n /* \"src/libraries/TokenHelper.sol\":1627:1631 data */\n dup3\n /* \"src/libraries/TokenHelper.sol\":1606:1619 _callAndCatch */\n tag_836\n /* \"src/libraries/TokenHelper.sol\":1606:1632 _callAndCatch(token, data) */\n jump\t// in\n tag_835:\n /* \"src/libraries/TokenHelper.sol\":1499:1639 {... */\n pop\n /* \"src/libraries/TokenHelper.sol\":1419:1639 function safeTransfer(IERC20 token, address recipient, uint256 amount) internal {... */\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\n tag_361:\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8795:8825 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8870:8891 INITIALIZABLE_STORAGE */\n 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8860:8891 $.slot := INITIALIZABLE_STORAGE */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\n swap1\n jump\t// out\n /* \"src/LBRouter.sol\":39247:39623 function _getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep)... */\n tag_376:\n /* \"src/LBRouter.sol\":39371:39385 address lbPair */\n 0x00\n /* \"src/LBRouter.sol\":39418:39427 _factory2 */\n immutable(\"0x2239ccbaf4e87000eba1be7b3740d3819308dc8e5f0056a0eb89462a60427836\")\n /* \"src/LBRouter.sol\":39418:39448 _factory2.getLBPairInformation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x704037bd\n /* \"src/LBRouter.sol\":39449:39455 tokenX */\n dup6\n /* \"src/LBRouter.sol\":39457:39463 tokenY */\n dup6\n /* \"src/LBRouter.sol\":39465:39472 binStep */\n dup6\n /* \"src/LBRouter.sol\":39418:39473 _factory2.getLBPairInformation(tokenX, tokenY, binStep) */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_839\n swap4\n swap3\n swap2\n swap1\n tag_840\n jump\t// in\n tag_839:\n 0x80\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_842\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_842:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_843\n swap2\n swap1\n tag_844\n jump\t// in\n tag_843:\n /* \"src/LBRouter.sol\":39418:39480 _factory2.getLBPairInformation(tokenX, tokenY, binStep).LBPair */\n 0x20\n add\n mload\n /* \"src/LBRouter.sol\":39401:39481 lbPair = address(_factory2.getLBPairInformation(tokenX, tokenY, binStep).LBPair) */\n swap1\n pop\n /* \"src/LBRouter.sol\":39514:39515 0 */\n 0x00\n /* \"src/LBRouter.sol\":39496:39516 lbPair == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":39496:39502 lbPair */\n dup2\n /* \"src/LBRouter.sol\":39496:39516 lbPair == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBRouter.sol\":39492:39617 if (lbPair == address(0)) {... */\n tag_845\n jumpi\n /* \"src/LBRouter.sol\":39572:39578 tokenX */\n dup4\n /* \"src/LBRouter.sol\":39589:39595 tokenY */\n dup4\n /* \"src/LBRouter.sol\":39598:39605 binStep */\n dup4\n /* \"src/LBRouter.sol\":39539:39606 LBRouter__PairNotCreated(address(tokenX), address(tokenY), binStep) */\n mload(0x40)\n 0xd648e3a200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_846\n swap4\n swap3\n swap2\n swap1\n tag_847\n jump\t// in\n tag_846:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":39492:39617 if (lbPair == address(0)) {... */\n tag_845:\n /* \"src/LBRouter.sol\":39247:39623 function _getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep)... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":32548:33218 function _removeLiquidity(... */\n tag_383:\n /* \"src/LBRouter.sol\":32759:32774 uint256 amountX */\n 0x00\n /* \"src/LBRouter.sol\":32776:32791 uint256 amountY */\n dup1\n /* \"src/LBRouter.sol\":32804:32834 bytes32[] memory amountsBurned */\n 0x00\n /* \"src/LBRouter.sol\":32838:32842 pair */\n dup9\n /* \"src/LBRouter.sol\":32838:32847 pair.burn */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xc9939f5e\n /* \"src/LBRouter.sol\":32848:32858 msg.sender */\n caller\n /* \"src/LBRouter.sol\":32860:32862 to */\n dup7\n /* \"src/LBRouter.sol\":32864:32867 ids */\n dup10\n /* \"src/LBRouter.sol\":32869:32876 amounts */\n dup10\n /* \"src/LBRouter.sol\":32838:32877 pair.burn(msg.sender, to, ids, amounts) */\n mload(0x40)\n dup6\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_849\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_850\n jump\t// in\n tag_849:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n gas\n call\n iszero\n dup1\n iszero\n tag_852\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_852:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n 0x00\n dup3\n returndatacopy\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_853\n swap2\n swap1\n tag_854\n jump\t// in\n tag_853:\n /* \"src/LBRouter.sol\":32803:32877 (bytes32[] memory amountsBurned) = pair.burn(msg.sender, to, ids, amounts) */\n swap1\n pop\n /* \"src/LBRouter.sol\":32893:32902 uint256 i */\n 0x00\n /* \"src/LBRouter.sol\":32888:33048 for (uint256 i; i < amountsBurned.length; ++i) {... */\n tag_855:\n /* \"src/LBRouter.sol\":32908:32921 amountsBurned */\n dup2\n /* \"src/LBRouter.sol\":32908:32928 amountsBurned.length */\n mload\n /* \"src/LBRouter.sol\":32904:32905 i */\n dup2\n /* \"src/LBRouter.sol\":32904:32928 i < amountsBurned.length */\n lt\n /* \"src/LBRouter.sol\":32888:33048 for (uint256 i; i < amountsBurned.length; ++i) {... */\n iszero\n tag_856\n jumpi\n /* \"src/LBRouter.sol\":32960:32986 amountsBurned[i].decodeX() */\n tag_858\n /* \"src/LBRouter.sol\":32960:32973 amountsBurned */\n dup3\n /* \"src/LBRouter.sol\":32974:32975 i */\n dup3\n /* \"src/LBRouter.sol\":32960:32976 amountsBurned[i] */\n dup2\n mload\n dup2\n lt\n tag_859\n jumpi\n tag_860\n tag_176\n jump\t// in\n tag_860:\n tag_859:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":32960:32984 amountsBurned[i].decodeX */\n tag_861\n /* \"src/LBRouter.sol\":32960:32986 amountsBurned[i].decodeX() */\n jump\t// in\n tag_858:\n /* \"src/LBRouter.sol\":32949:32986 amountX += amountsBurned[i].decodeX() */\n 0xffffffffffffffffffffffffffffffff\n and\n dup5\n tag_862\n swap2\n swap1\n tag_171\n jump\t// in\n tag_862:\n swap4\n pop\n /* \"src/LBRouter.sol\":33011:33037 amountsBurned[i].decodeY() */\n tag_863\n /* \"src/LBRouter.sol\":33011:33024 amountsBurned */\n dup3\n /* \"src/LBRouter.sol\":33025:33026 i */\n dup3\n /* \"src/LBRouter.sol\":33011:33027 amountsBurned[i] */\n dup2\n mload\n dup2\n lt\n tag_864\n jumpi\n tag_865\n tag_176\n jump\t// in\n tag_865:\n tag_864:\n 0x20\n mul\n 0x20\n add\n add\n mload\n /* \"src/LBRouter.sol\":33011:33035 amountsBurned[i].decodeY */\n tag_866\n /* \"src/LBRouter.sol\":33011:33037 amountsBurned[i].decodeY() */\n jump\t// in\n tag_863:\n /* \"src/LBRouter.sol\":33000:33037 amountY += amountsBurned[i].decodeY() */\n 0xffffffffffffffffffffffffffffffff\n and\n dup4\n tag_867\n swap2\n swap1\n tag_171\n jump\t// in\n tag_867:\n swap3\n pop\n /* \"src/LBRouter.sol\":32930:32933 ++i */\n dup1\n tag_868\n swap1\n tag_869\n jump\t// in\n tag_868:\n swap1\n pop\n /* \"src/LBRouter.sol\":32888:33048 for (uint256 i; i < amountsBurned.length; ++i) {... */\n jump(tag_855)\n tag_856:\n pop\n /* \"src/LBRouter.sol\":33072:33082 amountXMin */\n dup8\n /* \"src/LBRouter.sol\":33062:33069 amountX */\n dup4\n /* \"src/LBRouter.sol\":33062:33082 amountX < amountXMin */\n lt\n /* \"src/LBRouter.sol\":33062:33106 amountX < amountXMin || amountY < amountYMin */\n dup1\n tag_870\n jumpi\n pop\n /* \"src/LBRouter.sol\":33096:33106 amountYMin */\n dup7\n /* \"src/LBRouter.sol\":33086:33093 amountY */\n dup3\n /* \"src/LBRouter.sol\":33086:33106 amountY < amountYMin */\n lt\n /* \"src/LBRouter.sol\":33062:33106 amountX < amountXMin || amountY < amountYMin */\n tag_870:\n /* \"src/LBRouter.sol\":33058:33212 if (amountX < amountXMin || amountY < amountYMin) {... */\n iszero\n tag_871\n jumpi\n /* \"src/LBRouter.sol\":33160:33170 amountXMin */\n dup8\n /* \"src/LBRouter.sol\":33172:33179 amountX */\n dup4\n /* \"src/LBRouter.sol\":33181:33191 amountYMin */\n dup9\n /* \"src/LBRouter.sol\":33193:33200 amountY */\n dup5\n /* \"src/LBRouter.sol\":33129:33201 LBRouter__AmountSlippageCaught(amountXMin, amountX, amountYMin, amountY) */\n mload(0x40)\n 0x3199f6ee00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_872\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_873\n jump\t// in\n tag_872:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":33058:33212 if (amountX < amountXMin || amountY < amountYMin) {... */\n tag_871:\n /* \"src/LBRouter.sol\":32793:33218 {... */\n pop\n /* \"src/LBRouter.sol\":32548:33218 function _removeLiquidity(... */\n swap7\n pop\n swap7\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":41607:41761 function _safeTransfer(IERC20 token, address to, uint256 amount) private {... */\n tag_387:\n /* \"src/LBRouter.sol\":41704:41705 0 */\n 0x00\n /* \"src/LBRouter.sol\":41694:41700 amount */\n dup2\n /* \"src/LBRouter.sol\":41694:41705 amount == 0 */\n sub\n /* \"src/LBRouter.sol\":41690:41714 if (amount == 0) return; */\n iszero\n /* \"src/LBRouter.sol\":41707:41714 return; */\n tag_874\n /* \"src/LBRouter.sol\":41690:41714 if (amount == 0) return; */\n jumpi\n /* \"src/LBRouter.sol\":41724:41754 token.safeTransfer(to, amount) */\n tag_876\n /* \"src/LBRouter.sol\":41743:41745 to */\n dup3\n /* \"src/LBRouter.sol\":41747:41753 amount */\n dup3\n /* \"src/LBRouter.sol\":41724:41729 token */\n dup6\n /* \"src/LBRouter.sol\":41724:41742 token.safeTransfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n tag_350\n swap1\n /* \"src/LBRouter.sol\":41724:41754 token.safeTransfer(to, amount) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_876:\n /* \"src/LBRouter.sol\":41607:41761 function _safeTransfer(IERC20 token, address to, uint256 amount) private {... */\n tag_874:\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBRouter.sol\":28066:30555 function _addLiquidity(LiquidityParameters calldata liq, ILBPair pair)... */\n tag_419:\n /* \"src/LBRouter.sol\":28212:28232 uint256 amountXAdded */\n 0x00\n /* \"src/LBRouter.sol\":28246:28266 uint256 amountYAdded */\n dup1\n /* \"src/LBRouter.sol\":28280:28299 uint256 amountXLeft */\n 0x00\n /* \"src/LBRouter.sol\":28313:28332 uint256 amountYLeft */\n dup1\n /* \"src/LBRouter.sol\":28346:28373 uint256[] memory depositIds */\n 0x60\n /* \"src/LBRouter.sol\":28387:28419 uint256[] memory liquidityMinted */\n dup1\n /* \"src/LBRouter.sol\":28168:28171 liq */\n dup8\n /* \"src/LBRouter.sol\":28168:28180 liq.deadline */\n 0x01c0\n add\n calldataload\n /* \"src/LBRouter.sol\":2244:2252 deadline */\n dup1\n /* \"src/LBRouter.sol\":2226:2241 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2226:2252 block.timestamp > deadline */\n gt\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n iszero\n tag_878\n jumpi\n /* \"src/LBRouter.sol\":2288:2296 deadline */\n dup1\n /* \"src/LBRouter.sol\":2298:2313 block.timestamp */\n timestamp\n /* \"src/LBRouter.sol\":2261:2314 LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n mload(0x40)\n 0xdae7ca7d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_879\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_879:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":2222:2314 if (block.timestamp > deadline) revert LBRouter__DeadlineExceeded(deadline, block.timestamp) */\n tag_878:\n /* \"src/LBRouter.sol\":28495:28498 liq */\n dup9\n /* \"src/LBRouter.sol\":28495:28512 liq.distributionX */\n dup1\n 0x0140\n add\n swap1\n tag_881\n swap2\n swap1\n tag_882\n jump\t// in\n tag_881:\n /* \"src/LBRouter.sol\":28495:28519 liq.distributionX.length */\n swap1\n pop\n /* \"src/LBRouter.sol\":28472:28475 liq */\n dup10\n /* \"src/LBRouter.sol\":28472:28484 liq.deltaIds */\n dup1\n 0x0120\n add\n swap1\n tag_883\n swap2\n swap1\n tag_884\n jump\t// in\n tag_883:\n /* \"src/LBRouter.sol\":28472:28491 liq.deltaIds.length */\n swap1\n pop\n /* \"src/LBRouter.sol\":28472:28519 liq.deltaIds.length != liq.distributionX.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":28472:28570 liq.deltaIds.length != liq.distributionX.length || liq.deltaIds.length != liq.distributionY.length */\n dup1\n tag_885\n jumpi\n pop\n /* \"src/LBRouter.sol\":28546:28549 liq */\n dup9\n /* \"src/LBRouter.sol\":28546:28563 liq.distributionY */\n dup1\n 0x0160\n add\n swap1\n tag_886\n swap2\n swap1\n tag_882\n jump\t// in\n tag_886:\n /* \"src/LBRouter.sol\":28546:28570 liq.distributionY.length */\n swap1\n pop\n /* \"src/LBRouter.sol\":28523:28526 liq */\n dup10\n /* \"src/LBRouter.sol\":28523:28535 liq.deltaIds */\n dup1\n 0x0120\n add\n swap1\n tag_887\n swap2\n swap1\n tag_884\n jump\t// in\n tag_887:\n /* \"src/LBRouter.sol\":28523:28542 liq.deltaIds.length */\n swap1\n pop\n /* \"src/LBRouter.sol\":28523:28570 liq.deltaIds.length != liq.distributionY.length */\n eq\n iszero\n /* \"src/LBRouter.sol\":28472:28570 liq.deltaIds.length != liq.distributionX.length || liq.deltaIds.length != liq.distributionY.length */\n tag_885:\n /* \"src/LBRouter.sol\":28468:28639 if (liq.deltaIds.length != liq.distributionX.length || liq.deltaIds.length != liq.distributionY.length) {... */\n iszero\n tag_888\n jumpi\n /* \"src/LBRouter.sol\":28597:28624 LBRouter__LengthsMismatch() */\n mload(0x40)\n 0xb91b4d4d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":28468:28639 if (liq.deltaIds.length != liq.distributionX.length || liq.deltaIds.length != liq.distributionY.length) {... */\n tag_888:\n /* \"src/LBRouter.sol\":28679:28695 type(uint24).max */\n 0xffffff\n /* \"src/LBRouter.sol\":28657:28695 liq.activeIdDesired > type(uint24).max */\n dup1\n and\n /* \"src/LBRouter.sol\":28657:28660 liq */\n dup10\n /* \"src/LBRouter.sol\":28657:28676 liq.activeIdDesired */\n 0xe0\n add\n calldataload\n /* \"src/LBRouter.sol\":28657:28695 liq.activeIdDesired > type(uint24).max */\n gt\n /* \"src/LBRouter.sol\":28657:28732 liq.activeIdDesired > type(uint24).max || liq.idSlippage > type(uint24).max */\n dup1\n tag_889\n jumpi\n pop\n /* \"src/LBRouter.sol\":28716:28732 type(uint24).max */\n 0xffffff\n /* \"src/LBRouter.sol\":28699:28732 liq.idSlippage > type(uint24).max */\n dup1\n and\n /* \"src/LBRouter.sol\":28699:28702 liq */\n dup10\n /* \"src/LBRouter.sol\":28699:28713 liq.idSlippage */\n 0x0100\n add\n calldataload\n /* \"src/LBRouter.sol\":28699:28732 liq.idSlippage > type(uint24).max */\n gt\n /* \"src/LBRouter.sol\":28657:28732 liq.activeIdDesired > type(uint24).max || liq.idSlippage > type(uint24).max */\n tag_889:\n /* \"src/LBRouter.sol\":28653:28839 if (liq.activeIdDesired > type(uint24).max || liq.idSlippage > type(uint24).max) {... */\n iszero\n tag_890\n jumpi\n /* \"src/LBRouter.sol\":28788:28791 liq */\n dup9\n /* \"src/LBRouter.sol\":28788:28807 liq.activeIdDesired */\n 0xe0\n add\n calldataload\n /* \"src/LBRouter.sol\":28809:28812 liq */\n dup10\n /* \"src/LBRouter.sol\":28809:28823 liq.idSlippage */\n 0x0100\n add\n calldataload\n /* \"src/LBRouter.sol\":28759:28824 LBRouter__IdDesiredOverflows(liq.activeIdDesired, liq.idSlippage) */\n mload(0x40)\n 0x32f4ab8e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_891\n swap3\n swap2\n swap1\n tag_88\n jump\t// in\n tag_891:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":28653:28839 if (liq.activeIdDesired > type(uint24).max || liq.idSlippage > type(uint24).max) {... */\n tag_890:\n /* \"src/LBRouter.sol\":28853:28886 bytes32[] memory liquidityConfigs */\n 0x00\n /* \"src/LBRouter.sol\":28903:28906 liq */\n dup10\n /* \"src/LBRouter.sol\":28903:28915 liq.deltaIds */\n dup1\n 0x0120\n add\n swap1\n tag_892\n swap2\n swap1\n tag_884\n jump\t// in\n tag_892:\n /* \"src/LBRouter.sol\":28903:28922 liq.deltaIds.length */\n swap1\n pop\n /* \"src/LBRouter.sol\":28889:28923 new bytes32[](liq.deltaIds.length) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_893\n jumpi\n tag_894\n tag_590\n jump\t// in\n tag_894:\n tag_893:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x20\n mul\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_895\n jumpi\n dup2\n 0x20\n add\n 0x20\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_895:\n pop\n /* \"src/LBRouter.sol\":28853:28923 bytes32[] memory liquidityConfigs = new bytes32[](liq.deltaIds.length) */\n swap1\n pop\n /* \"src/LBRouter.sol\":28964:28967 liq */\n dup10\n /* \"src/LBRouter.sol\":28964:28976 liq.deltaIds */\n dup1\n 0x0120\n add\n swap1\n tag_896\n swap2\n swap1\n tag_884\n jump\t// in\n tag_896:\n /* \"src/LBRouter.sol\":28964:28983 liq.deltaIds.length */\n swap1\n pop\n /* \"src/LBRouter.sol\":28950:28984 new uint256[](liq.deltaIds.length) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_897\n jumpi\n tag_898\n tag_590\n jump\t// in\n tag_898:\n tag_897:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x20\n mul\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_899\n jumpi\n dup2\n 0x20\n add\n 0x20\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_899:\n pop\n /* \"src/LBRouter.sol\":28937:28984 depositIds = new uint256[](liq.deltaIds.length) */\n swap4\n pop\n /* \"src/LBRouter.sol\":29016:29033 uint256 _activeId */\n 0x00\n /* \"src/LBRouter.sol\":29036:29040 pair */\n dup10\n /* \"src/LBRouter.sol\":29036:29052 pair.getActiveId */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xdbe65edc\n /* \"src/LBRouter.sol\":29036:29054 pair.getActiveId() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_901\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_901:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_902\n swap2\n swap1\n tag_586\n jump\t// in\n tag_902:\n /* \"src/LBRouter.sol\":29016:29054 uint256 _activeId = pair.getActiveId() */\n 0xffffff\n and\n swap1\n pop\n /* \"src/LBRouter.sol\":29136:29145 _activeId */\n dup1\n /* \"src/LBRouter.sol\":29119:29122 liq */\n dup12\n /* \"src/LBRouter.sol\":29119:29133 liq.idSlippage */\n 0x0100\n add\n calldataload\n /* \"src/LBRouter.sol\":29097:29100 liq */\n dup13\n /* \"src/LBRouter.sol\":29097:29116 liq.activeIdDesired */\n 0xe0\n add\n calldataload\n /* \"src/LBRouter.sol\":29097:29133 liq.activeIdDesired + liq.idSlippage */\n add\n /* \"src/LBRouter.sol\":29097:29145 liq.activeIdDesired + liq.idSlippage < _activeId */\n lt\n /* \"src/LBRouter.sol\":29097:29197 liq.activeIdDesired + liq.idSlippage < _activeId || _activeId + liq.idSlippage < liq.activeIdDesired */\n dup1\n tag_903\n jumpi\n pop\n /* \"src/LBRouter.sol\":29178:29181 liq */\n dup11\n /* \"src/LBRouter.sol\":29178:29197 liq.activeIdDesired */\n 0xe0\n add\n calldataload\n /* \"src/LBRouter.sol\":29161:29164 liq */\n dup12\n /* \"src/LBRouter.sol\":29161:29175 liq.idSlippage */\n 0x0100\n add\n calldataload\n /* \"src/LBRouter.sol\":29149:29158 _activeId */\n dup3\n /* \"src/LBRouter.sol\":29149:29175 _activeId + liq.idSlippage */\n add\n /* \"src/LBRouter.sol\":29149:29197 _activeId + liq.idSlippage < liq.activeIdDesired */\n lt\n /* \"src/LBRouter.sol\":29097:29197 liq.activeIdDesired + liq.idSlippage < _activeId || _activeId + liq.idSlippage < liq.activeIdDesired */\n tag_903:\n /* \"src/LBRouter.sol\":29072:29338 if (... */\n iszero\n tag_904\n jumpi\n /* \"src/LBRouter.sol\":29272:29275 liq */\n dup11\n /* \"src/LBRouter.sol\":29272:29291 liq.activeIdDesired */\n 0xe0\n add\n calldataload\n /* \"src/LBRouter.sol\":29293:29296 liq */\n dup12\n /* \"src/LBRouter.sol\":29293:29307 liq.idSlippage */\n 0x0100\n add\n calldataload\n /* \"src/LBRouter.sol\":29309:29318 _activeId */\n dup3\n /* \"src/LBRouter.sol\":29245:29319 LBRouter__IdSlippageCaught(liq.activeIdDesired, liq.idSlippage, _activeId) */\n mload(0x40)\n 0xfaa1db5600000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_905\n swap4\n swap3\n swap2\n swap1\n tag_906\n jump\t// in\n tag_905:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":29072:29338 if (... */\n tag_904:\n /* \"src/LBRouter.sol\":29361:29370 uint256 i */\n 0x00\n /* \"src/LBRouter.sol\":29356:29857 for (uint256 i; i < liquidityConfigs.length; ++i) {... */\n tag_907:\n /* \"src/LBRouter.sol\":29376:29392 liquidityConfigs */\n dup3\n /* \"src/LBRouter.sol\":29376:29399 liquidityConfigs.length */\n mload\n /* \"src/LBRouter.sol\":29372:29373 i */\n dup2\n /* \"src/LBRouter.sol\":29372:29399 i < liquidityConfigs.length */\n lt\n /* \"src/LBRouter.sol\":29356:29857 for (uint256 i; i < liquidityConfigs.length; ++i) {... */\n iszero\n tag_908\n jumpi\n /* \"src/LBRouter.sol\":29428:29438 int256 _id */\n 0x00\n /* \"src/LBRouter.sol\":29461:29464 liq */\n dup13\n /* \"src/LBRouter.sol\":29461:29473 liq.deltaIds */\n dup1\n 0x0120\n add\n swap1\n tag_910\n swap2\n swap1\n tag_884\n jump\t// in\n tag_910:\n /* \"src/LBRouter.sol\":29474:29475 i */\n dup4\n /* \"src/LBRouter.sol\":29461:29476 liq.deltaIds[i] */\n dup2\n dup2\n lt\n tag_911\n jumpi\n tag_912\n tag_176\n jump\t// in\n tag_912:\n tag_911:\n swap1\n pop\n 0x20\n mul\n add\n calldataload\n /* \"src/LBRouter.sol\":29448:29457 _activeId */\n dup4\n /* \"src/LBRouter.sol\":29441:29476 int256(_activeId) + liq.deltaIds[i] */\n add\n /* \"src/LBRouter.sol\":29428:29476 int256 _id = int256(_activeId) + liq.deltaIds[i] */\n swap1\n pop\n /* \"src/LBRouter.sol\":29509:29510 0 */\n 0x00\n /* \"src/LBRouter.sol\":29503:29506 _id */\n dup2\n /* \"src/LBRouter.sol\":29503:29510 _id < 0 */\n slt\n /* \"src/LBRouter.sol\":29503:29545 _id < 0 || uint256(_id) > type(uint24).max */\n dup1\n tag_913\n jumpi\n pop\n /* \"src/LBRouter.sol\":29529:29545 type(uint24).max */\n 0xffffff\n /* \"src/LBRouter.sol\":29514:29545 uint256(_id) > type(uint24).max */\n dup1\n and\n /* \"src/LBRouter.sol\":29522:29525 _id */\n dup2\n /* \"src/LBRouter.sol\":29514:29545 uint256(_id) > type(uint24).max */\n gt\n /* \"src/LBRouter.sol\":29503:29545 _id < 0 || uint256(_id) > type(uint24).max */\n tag_913:\n /* \"src/LBRouter.sol\":29499:29580 if (_id < 0 || uint256(_id) > type(uint24).max) revert LBRouter__IdOverflows(_id) */\n iszero\n tag_914\n jumpi\n /* \"src/LBRouter.sol\":29576:29579 _id */\n dup1\n /* \"src/LBRouter.sol\":29554:29580 LBRouter__IdOverflows(_id) */\n mload(0x40)\n 0xe1505cc200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_915\n swap2\n swap1\n tag_916\n jump\t// in\n tag_915:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":29499:29580 if (_id < 0 || uint256(_id) > type(uint24).max) revert LBRouter__IdOverflows(_id) */\n tag_914:\n /* \"src/LBRouter.sol\":29626:29629 _id */\n dup1\n /* \"src/LBRouter.sol\":29602:29612 depositIds */\n dup8\n /* \"src/LBRouter.sol\":29613:29614 i */\n dup4\n /* \"src/LBRouter.sol\":29602:29615 depositIds[i] */\n dup2\n mload\n dup2\n lt\n tag_917\n jumpi\n tag_918\n tag_176\n jump\t// in\n tag_918:\n tag_917:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBRouter.sol\":29602:29630 depositIds[i] = uint256(_id) */\n dup2\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":29674:29838 LiquidityConfigurations.encodeParams(... */\n tag_919\n /* \"src/LBRouter.sol\":29743:29746 liq */\n dup14\n /* \"src/LBRouter.sol\":29743:29760 liq.distributionX */\n dup1\n 0x0140\n add\n swap1\n tag_920\n swap2\n swap1\n tag_882\n jump\t// in\n tag_920:\n /* \"src/LBRouter.sol\":29761:29762 i */\n dup5\n /* \"src/LBRouter.sol\":29743:29763 liq.distributionX[i] */\n dup2\n dup2\n lt\n tag_921\n jumpi\n tag_922\n tag_176\n jump\t// in\n tag_922:\n tag_921:\n swap1\n pop\n 0x20\n mul\n add\n calldataload\n /* \"src/LBRouter.sol\":29773:29776 liq */\n dup15\n /* \"src/LBRouter.sol\":29773:29790 liq.distributionY */\n dup1\n 0x0160\n add\n swap1\n tag_923\n swap2\n swap1\n tag_882\n jump\t// in\n tag_923:\n /* \"src/LBRouter.sol\":29791:29792 i */\n dup6\n /* \"src/LBRouter.sol\":29773:29793 liq.distributionY[i] */\n dup2\n dup2\n lt\n tag_924\n jumpi\n tag_925\n tag_176\n jump\t// in\n tag_925:\n tag_924:\n swap1\n pop\n 0x20\n mul\n add\n calldataload\n /* \"src/LBRouter.sol\":29811:29814 _id */\n dup4\n /* \"src/LBRouter.sol\":29674:29710 LiquidityConfigurations.encodeParams */\n tag_926\n /* \"src/LBRouter.sol\":29674:29838 LiquidityConfigurations.encodeParams(... */\n jump\t// in\n tag_919:\n /* \"src/LBRouter.sol\":29652:29668 liquidityConfigs */\n dup5\n /* \"src/LBRouter.sol\":29669:29670 i */\n dup4\n /* \"src/LBRouter.sol\":29652:29671 liquidityConfigs[i] */\n dup2\n mload\n dup2\n lt\n tag_927\n jumpi\n tag_928\n tag_176\n jump\t// in\n tag_928:\n tag_927:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBRouter.sol\":29652:29838 liquidityConfigs[i] = LiquidityConfigurations.encodeParams(... */\n dup2\n dup2\n mstore\n pop\n pop\n /* \"src/LBRouter.sol\":29406:29857 {... */\n pop\n /* \"src/LBRouter.sol\":29401:29404 ++i */\n dup1\n 0x01\n add\n swap1\n pop\n /* \"src/LBRouter.sol\":29356:29857 for (uint256 i; i < liquidityConfigs.length; ++i) {... */\n jump(tag_907)\n tag_908:\n pop\n /* \"src/LBRouter.sol\":28998:29871 {... */\n pop\n /* \"src/LBRouter.sol\":29885:29908 bytes32 amountsReceived */\n 0x00\n /* \"src/LBRouter.sol\":29922:29941 bytes32 amountsLeft */\n dup1\n /* \"src/LBRouter.sol\":30005:30009 pair */\n dup11\n /* \"src/LBRouter.sol\":30005:30014 pair.mint */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x383d15c5\n /* \"src/LBRouter.sol\":30015:30018 liq */\n dup14\n /* \"src/LBRouter.sol\":30015:30021 liq.to */\n 0x0180\n add\n 0x20\n dup2\n add\n swap1\n tag_929\n swap2\n swap1\n tag_930\n jump\t// in\n tag_929:\n /* \"src/LBRouter.sol\":30023:30039 liquidityConfigs */\n dup6\n /* \"src/LBRouter.sol\":30041:30044 liq */\n dup16\n /* \"src/LBRouter.sol\":30041:30053 liq.refundTo */\n 0x01a0\n add\n 0x20\n dup2\n add\n swap1\n tag_931\n swap2\n swap1\n tag_930\n jump\t// in\n tag_931:\n /* \"src/LBRouter.sol\":30005:30054 pair.mint(liq.to, liquidityConfigs, liq.refundTo) */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_932\n swap4\n swap3\n swap2\n swap1\n tag_933\n jump\t// in\n tag_932:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n gas\n call\n iszero\n dup1\n iszero\n tag_935\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_935:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n 0x00\n dup3\n returndatacopy\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_936\n swap2\n swap1\n tag_937\n jump\t// in\n tag_936:\n /* \"src/LBRouter.sol\":29955:30054 (amountsReceived, amountsLeft, liquidityMinted) = pair.mint(liq.to, liquidityConfigs, liq.refundTo) */\n dup1\n swap8\n pop\n dup2\n swap4\n pop\n dup3\n swap5\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":30069:30089 bytes32 amountsAdded */\n 0x00\n /* \"src/LBRouter.sol\":30092:30124 amountsReceived.sub(amountsLeft) */\n tag_938\n /* \"src/LBRouter.sol\":30112:30123 amountsLeft */\n dup3\n /* \"src/LBRouter.sol\":30092:30107 amountsReceived */\n dup5\n /* \"src/LBRouter.sol\":30092:30111 amountsReceived.sub */\n tag_939\n swap1\n /* \"src/LBRouter.sol\":30092:30124 amountsReceived.sub(amountsLeft) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_938:\n /* \"src/LBRouter.sol\":30069:30124 bytes32 amountsAdded = amountsReceived.sub(amountsLeft) */\n swap1\n pop\n /* \"src/LBRouter.sol\":30154:30176 amountsAdded.decodeX() */\n tag_940\n /* \"src/LBRouter.sol\":30154:30166 amountsAdded */\n dup2\n /* \"src/LBRouter.sol\":30154:30174 amountsAdded.decodeX */\n tag_861\n /* \"src/LBRouter.sol\":30154:30176 amountsAdded.decodeX() */\n jump\t// in\n tag_940:\n /* \"src/LBRouter.sol\":30139:30176 amountXAdded = amountsAdded.decodeX() */\n 0xffffffffffffffffffffffffffffffff\n and\n swap11\n pop\n /* \"src/LBRouter.sol\":30205:30227 amountsAdded.decodeY() */\n tag_941\n /* \"src/LBRouter.sol\":30205:30217 amountsAdded */\n dup2\n /* \"src/LBRouter.sol\":30205:30225 amountsAdded.decodeY */\n tag_866\n /* \"src/LBRouter.sol\":30205:30227 amountsAdded.decodeY() */\n jump\t// in\n tag_941:\n /* \"src/LBRouter.sol\":30190:30227 amountYAdded = amountsAdded.decodeY() */\n 0xffffffffffffffffffffffffffffffff\n and\n swap10\n pop\n /* \"src/LBRouter.sol\":30261:30264 liq */\n dup13\n /* \"src/LBRouter.sol\":30261:30275 liq.amountXMin */\n 0xa0\n add\n calldataload\n /* \"src/LBRouter.sol\":30246:30258 amountXAdded */\n dup12\n /* \"src/LBRouter.sol\":30246:30275 amountXAdded < liq.amountXMin */\n lt\n /* \"src/LBRouter.sol\":30246:30308 amountXAdded < liq.amountXMin || amountYAdded < liq.amountYMin */\n dup1\n tag_942\n jumpi\n pop\n /* \"src/LBRouter.sol\":30294:30297 liq */\n dup13\n /* \"src/LBRouter.sol\":30294:30308 liq.amountYMin */\n 0xc0\n add\n calldataload\n /* \"src/LBRouter.sol\":30279:30291 amountYAdded */\n dup11\n /* \"src/LBRouter.sol\":30279:30308 amountYAdded < liq.amountYMin */\n lt\n /* \"src/LBRouter.sol\":30246:30308 amountXAdded < liq.amountXMin || amountYAdded < liq.amountYMin */\n tag_942:\n /* \"src/LBRouter.sol\":30242:30440 if (amountXAdded < liq.amountXMin || amountYAdded < liq.amountYMin) {... */\n iszero\n tag_943\n jumpi\n /* \"src/LBRouter.sol\":30366:30369 liq */\n dup13\n /* \"src/LBRouter.sol\":30366:30380 liq.amountXMin */\n 0xa0\n add\n calldataload\n /* \"src/LBRouter.sol\":30382:30394 amountXAdded */\n dup12\n /* \"src/LBRouter.sol\":30396:30399 liq */\n dup15\n /* \"src/LBRouter.sol\":30396:30410 liq.amountYMin */\n 0xc0\n add\n calldataload\n /* \"src/LBRouter.sol\":30412:30424 amountYAdded */\n dup13\n /* \"src/LBRouter.sol\":30335:30425 LBRouter__AmountSlippageCaught(liq.amountXMin, amountXAdded, liq.amountYMin, amountYAdded) */\n mload(0x40)\n 0x3199f6ee00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_944\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_873\n jump\t// in\n tag_944:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":30242:30440 if (amountXAdded < liq.amountXMin || amountYAdded < liq.amountYMin) {... */\n tag_943:\n /* \"src/LBRouter.sol\":30468:30489 amountsLeft.decodeX() */\n tag_945\n /* \"src/LBRouter.sol\":30468:30479 amountsLeft */\n dup3\n /* \"src/LBRouter.sol\":30468:30487 amountsLeft.decodeX */\n tag_861\n /* \"src/LBRouter.sol\":30468:30489 amountsLeft.decodeX() */\n jump\t// in\n tag_945:\n /* \"src/LBRouter.sol\":30454:30489 amountXLeft = amountsLeft.decodeX() */\n 0xffffffffffffffffffffffffffffffff\n and\n swap9\n pop\n /* \"src/LBRouter.sol\":30517:30538 amountsLeft.decodeY() */\n tag_946\n /* \"src/LBRouter.sol\":30517:30528 amountsLeft */\n dup3\n /* \"src/LBRouter.sol\":30517:30536 amountsLeft.decodeY */\n tag_866\n /* \"src/LBRouter.sol\":30517:30538 amountsLeft.decodeY() */\n jump\t// in\n tag_946:\n /* \"src/LBRouter.sol\":30503:30538 amountYLeft = amountsLeft.decodeY() */\n 0xffffffffffffffffffffffffffffffff\n and\n swap8\n pop\n /* \"src/LBRouter.sol\":28444:30549 unchecked {... */\n pop\n pop\n pop\n pop\n /* \"src/LBRouter.sol\":28066:30555 function _addLiquidity(LiquidityParameters calldata liq, ILBPair pair)... */\n pop\n swap3\n swap6\n pop\n swap3\n swap6\n pop\n swap3\n swap6\n jump\t// out\n /* \"src/LBRouter.sol\":40051:40529 function _getPair(IERC20 tokenX, IERC20 tokenY, uint256 binStep, Version version)... */\n tag_604:\n /* \"src/LBRouter.sol\":40179:40191 address pair */\n 0x00\n /* \"src/LBRouter.sol\":40222:40232 Version.V1 */\n dup1\n /* \"src/LBRouter.sol\":40211:40232 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_948\n jumpi\n tag_949\n tag_629\n jump\t// in\n tag_949:\n tag_948:\n /* \"src/LBRouter.sol\":40211:40218 version */\n dup3\n /* \"src/LBRouter.sol\":40211:40232 version == Version.V1 */\n 0x01\n dup2\n gt\n iszero\n tag_950\n jumpi\n tag_951\n tag_629\n jump\t// in\n tag_951:\n tag_950:\n sub\n /* \"src/LBRouter.sol\":40207:40523 if (version == Version.V1) {... */\n tag_952\n jumpi\n /* \"src/LBRouter.sol\":40255:40265 _factoryV1 */\n immutable(\"0x8568f76a03b01e78020c34eaf7d99444bdfcfc02740b9216953e88c42652898d\")\n /* \"src/LBRouter.sol\":40255:40273 _factoryV1.getPair */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xe6a43905\n /* \"src/LBRouter.sol\":40282:40288 tokenX */\n dup7\n /* \"src/LBRouter.sol\":40299:40305 tokenY */\n dup7\n /* \"src/LBRouter.sol\":40255:40307 _factoryV1.getPair(address(tokenX), address(tokenY)) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_953\n swap3\n swap2\n swap1\n tag_954\n jump\t// in\n tag_953:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_956\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_956:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_957\n swap2\n swap1\n tag_335\n jump\t// in\n tag_957:\n /* \"src/LBRouter.sol\":40248:40307 pair = _factoryV1.getPair(address(tokenX), address(tokenY)) */\n swap1\n pop\n /* \"src/LBRouter.sol\":40341:40342 0 */\n 0x00\n /* \"src/LBRouter.sol\":40325:40343 pair == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBRouter.sol\":40325:40329 pair */\n dup2\n /* \"src/LBRouter.sol\":40325:40343 pair == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBRouter.sol\":40321:40419 if (pair == address(0)) revert LBRouter__PairNotCreated(address(tokenX), address(tokenY), binStep) */\n tag_958\n jumpi\n /* \"src/LBRouter.sol\":40385:40391 tokenX */\n dup5\n /* \"src/LBRouter.sol\":40402:40408 tokenY */\n dup5\n /* \"src/LBRouter.sol\":40411:40418 binStep */\n dup5\n /* \"src/LBRouter.sol\":40352:40419 LBRouter__PairNotCreated(address(tokenX), address(tokenY), binStep) */\n mload(0x40)\n 0xd648e3a200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_959\n swap4\n swap3\n swap2\n swap1\n tag_847\n jump\t// in\n tag_959:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBRouter.sol\":40321:40419 if (pair == address(0)) revert LBRouter__PairNotCreated(address(tokenX), address(tokenY), binStep) */\n tag_958:\n /* \"src/LBRouter.sol\":40207:40523 if (version == Version.V1) {... */\n jump(tag_960)\n tag_952:\n /* \"src/LBRouter.sol\":40465:40511 _getLBPairInformation(tokenX, tokenY, binStep) */\n tag_961\n /* \"src/LBRouter.sol\":40487:40493 tokenX */\n dup6\n /* \"src/LBRouter.sol\":40495:40501 tokenY */\n dup6\n /* \"src/LBRouter.sol\":40503:40510 binStep */\n dup6\n /* \"src/LBRouter.sol\":40465:40486 _getLBPairInformation */\n tag_376\n /* \"src/LBRouter.sol\":40465:40511 _getLBPairInformation(tokenX, tokenY, binStep) */\n jump\t// in\n tag_961:\n /* \"src/LBRouter.sol\":40450:40512 pair = address(_getLBPairInformation(tokenX, tokenY, binStep)) */\n swap1\n pop\n /* \"src/LBRouter.sol\":40207:40523 if (version == Version.V1) {... */\n tag_960:\n /* \"src/LBRouter.sol\":40051:40529 function _getPair(IERC20 tokenX, IERC20 tokenY, uint256 binStep, Version version)... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/TokenHelper.sol\":944:1194 function safeTransferFrom(IERC20 token, address owner, address recipient, uint256 amount) internal {... */\n tag_610:\n /* \"src/libraries/TokenHelper.sol\":1053:1070 bytes memory data */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1096:1123 token.transferFrom.selector */\n shl(0xe0, 0x23b872dd)\n /* \"src/libraries/TokenHelper.sol\":1125:1130 owner */\n dup5\n /* \"src/libraries/TokenHelper.sol\":1132:1141 recipient */\n dup5\n /* \"src/libraries/TokenHelper.sol\":1143:1149 amount */\n dup5\n /* \"src/libraries/TokenHelper.sol\":1073:1150 abi.encodeWithSelector(token.transferFrom.selector, owner, recipient, amount) */\n add(0x24, mload(0x40))\n tag_963\n swap4\n swap3\n swap2\n swap1\n tag_847\n jump\t// in\n tag_963:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n 0x20\n dup3\n add\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup4\n dup2\n dup4\n and\n or\n dup4\n mstore\n pop\n pop\n pop\n pop\n /* \"src/libraries/TokenHelper.sol\":1053:1150 bytes memory data = abi.encodeWithSelector(token.transferFrom.selector, owner, recipient, amount) */\n swap1\n pop\n /* \"src/libraries/TokenHelper.sol\":1161:1187 _callAndCatch(token, data) */\n tag_964\n /* \"src/libraries/TokenHelper.sol\":1175:1180 token */\n dup6\n /* \"src/libraries/TokenHelper.sol\":1182:1186 data */\n dup3\n /* \"src/libraries/TokenHelper.sol\":1161:1174 _callAndCatch */\n tag_836\n /* \"src/libraries/TokenHelper.sol\":1161:1187 _callAndCatch(token, data) */\n jump\t// in\n tag_964:\n /* \"src/libraries/TokenHelper.sol\":1043:1194 {... */\n pop\n /* \"src/libraries/TokenHelper.sol\":944:1194 function safeTransferFrom(IERC20 token, address owner, address recipient, uint256 amount) internal {... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/SovrynLBLibrary.sol\":1404:1948 function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)... */\n tag_643:\n /* \"src/libraries/SovrynLBLibrary.sol\":1530:1547 uint256 amountOut */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":1579:1580 0 */\n dup1\n /* \"src/libraries/SovrynLBLibrary.sol\":1567:1575 amountIn */\n dup5\n /* \"src/libraries/SovrynLBLibrary.sol\":1567:1580 amountIn == 0 */\n sub\n /* \"src/libraries/SovrynLBLibrary.sol\":1563:1626 if (amountIn == 0) revert SovrynLBLibrary__InsufficientAmount() */\n tag_966\n jumpi\n /* \"src/libraries/SovrynLBLibrary.sol\":1589:1626 SovrynLBLibrary__InsufficientAmount() */\n mload(0x40)\n 0xb937356b00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/SovrynLBLibrary.sol\":1563:1626 if (amountIn == 0) revert SovrynLBLibrary__InsufficientAmount() */\n tag_966:\n /* \"src/libraries/SovrynLBLibrary.sol\":1653:1654 0 */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":1640:1649 reserveIn */\n dup4\n /* \"src/libraries/SovrynLBLibrary.sol\":1640:1654 reserveIn == 0 */\n eq\n /* \"src/libraries/SovrynLBLibrary.sol\":1640:1673 reserveIn == 0 || reserveOut == 0 */\n dup1\n tag_967\n jumpi\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":1672:1673 0 */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":1658:1668 reserveOut */\n dup3\n /* \"src/libraries/SovrynLBLibrary.sol\":1658:1673 reserveOut == 0 */\n eq\n /* \"src/libraries/SovrynLBLibrary.sol\":1640:1673 reserveIn == 0 || reserveOut == 0 */\n tag_967:\n /* \"src/libraries/SovrynLBLibrary.sol\":1636:1722 if (reserveIn == 0 || reserveOut == 0) revert SovrynLBLibrary__InsufficientLiquidity() */\n iszero\n tag_968\n jumpi\n /* \"src/libraries/SovrynLBLibrary.sol\":1682:1722 SovrynLBLibrary__InsufficientLiquidity() */\n mload(0x40)\n 0x7b03555500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/SovrynLBLibrary.sol\":1636:1722 if (reserveIn == 0 || reserveOut == 0) revert SovrynLBLibrary__InsufficientLiquidity() */\n tag_968:\n /* \"src/libraries/SovrynLBLibrary.sol\":1732:1755 uint256 amountInWithFee */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":1769:1772 997 */\n 0x03e5\n /* \"src/libraries/SovrynLBLibrary.sol\":1758:1766 amountIn */\n dup6\n /* \"src/libraries/SovrynLBLibrary.sol\":1758:1772 amountIn * 997 */\n tag_969\n swap2\n swap1\n tag_970\n jump\t// in\n tag_969:\n /* \"src/libraries/SovrynLBLibrary.sol\":1732:1772 uint256 amountInWithFee = amountIn * 997 */\n swap1\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":1782:1799 uint256 numerator */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":1820:1830 reserveOut */\n dup4\n /* \"src/libraries/SovrynLBLibrary.sol\":1802:1817 amountInWithFee */\n dup3\n /* \"src/libraries/SovrynLBLibrary.sol\":1802:1830 amountInWithFee * reserveOut */\n tag_971\n swap2\n swap1\n tag_970\n jump\t// in\n tag_971:\n /* \"src/libraries/SovrynLBLibrary.sol\":1782:1830 uint256 numerator = amountInWithFee * reserveOut */\n swap1\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":1840:1859 uint256 denominator */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":1881:1896 amountInWithFee */\n dup3\n /* \"src/libraries/SovrynLBLibrary.sol\":1874:1878 1000 */\n 0x03e8\n /* \"src/libraries/SovrynLBLibrary.sol\":1862:1871 reserveIn */\n dup8\n /* \"src/libraries/SovrynLBLibrary.sol\":1862:1878 reserveIn * 1000 */\n tag_972\n swap2\n swap1\n tag_970\n jump\t// in\n tag_972:\n /* \"src/libraries/SovrynLBLibrary.sol\":1862:1896 reserveIn * 1000 + amountInWithFee */\n tag_973\n swap2\n swap1\n tag_171\n jump\t// in\n tag_973:\n /* \"src/libraries/SovrynLBLibrary.sol\":1840:1896 uint256 denominator = reserveIn * 1000 + amountInWithFee */\n swap1\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":1930:1941 denominator */\n dup1\n /* \"src/libraries/SovrynLBLibrary.sol\":1918:1927 numerator */\n dup3\n /* \"src/libraries/SovrynLBLibrary.sol\":1918:1941 numerator / denominator */\n tag_974\n swap2\n swap1\n tag_975\n jump\t// in\n tag_974:\n /* \"src/libraries/SovrynLBLibrary.sol\":1906:1941 amountOut = numerator / denominator */\n swap4\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":1553:1948 {... */\n pop\n pop\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":1404:1948 function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/SovrynLBLibrary.sol\":2066:2559 function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)... */\n tag_709:\n /* \"src/libraries/SovrynLBLibrary.sol\":2192:2208 uint256 amountIn */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":2241:2242 0 */\n dup1\n /* \"src/libraries/SovrynLBLibrary.sol\":2228:2237 amountOut */\n dup5\n /* \"src/libraries/SovrynLBLibrary.sol\":2228:2242 amountOut == 0 */\n sub\n /* \"src/libraries/SovrynLBLibrary.sol\":2224:2288 if (amountOut == 0) revert SovrynLBLibrary__InsufficientAmount() */\n tag_977\n jumpi\n /* \"src/libraries/SovrynLBLibrary.sol\":2251:2288 SovrynLBLibrary__InsufficientAmount() */\n mload(0x40)\n 0xb937356b00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/SovrynLBLibrary.sol\":2224:2288 if (amountOut == 0) revert SovrynLBLibrary__InsufficientAmount() */\n tag_977:\n /* \"src/libraries/SovrynLBLibrary.sol\":2315:2316 0 */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":2302:2311 reserveIn */\n dup4\n /* \"src/libraries/SovrynLBLibrary.sol\":2302:2316 reserveIn == 0 */\n eq\n /* \"src/libraries/SovrynLBLibrary.sol\":2302:2335 reserveIn == 0 || reserveOut == 0 */\n dup1\n tag_978\n jumpi\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":2334:2335 0 */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":2320:2330 reserveOut */\n dup3\n /* \"src/libraries/SovrynLBLibrary.sol\":2320:2335 reserveOut == 0 */\n eq\n /* \"src/libraries/SovrynLBLibrary.sol\":2302:2335 reserveIn == 0 || reserveOut == 0 */\n tag_978:\n /* \"src/libraries/SovrynLBLibrary.sol\":2298:2384 if (reserveIn == 0 || reserveOut == 0) revert SovrynLBLibrary__InsufficientLiquidity() */\n iszero\n tag_979\n jumpi\n /* \"src/libraries/SovrynLBLibrary.sol\":2344:2384 SovrynLBLibrary__InsufficientLiquidity() */\n mload(0x40)\n 0x7b03555500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/SovrynLBLibrary.sol\":2298:2384 if (reserveIn == 0 || reserveOut == 0) revert SovrynLBLibrary__InsufficientLiquidity() */\n tag_979:\n /* \"src/libraries/SovrynLBLibrary.sol\":2394:2411 uint256 numerator */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":2438:2442 1000 */\n 0x03e8\n /* \"src/libraries/SovrynLBLibrary.sol\":2426:2435 amountOut */\n dup6\n /* \"src/libraries/SovrynLBLibrary.sol\":2414:2423 reserveIn */\n dup6\n /* \"src/libraries/SovrynLBLibrary.sol\":2414:2435 reserveIn * amountOut */\n tag_980\n swap2\n swap1\n tag_970\n jump\t// in\n tag_980:\n /* \"src/libraries/SovrynLBLibrary.sol\":2414:2442 reserveIn * amountOut * 1000 */\n tag_981\n swap2\n swap1\n tag_970\n jump\t// in\n tag_981:\n /* \"src/libraries/SovrynLBLibrary.sol\":2394:2442 uint256 numerator = reserveIn * amountOut * 1000 */\n swap1\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":2452:2471 uint256 denominator */\n 0x00\n /* \"src/libraries/SovrynLBLibrary.sol\":2501:2504 997 */\n 0x03e5\n /* \"src/libraries/SovrynLBLibrary.sol\":2488:2497 amountOut */\n dup7\n /* \"src/libraries/SovrynLBLibrary.sol\":2475:2485 reserveOut */\n dup6\n /* \"src/libraries/SovrynLBLibrary.sol\":2475:2497 reserveOut - amountOut */\n tag_982\n swap2\n swap1\n tag_202\n jump\t// in\n tag_982:\n /* \"src/libraries/SovrynLBLibrary.sol\":2474:2504 (reserveOut - amountOut) * 997 */\n tag_983\n swap2\n swap1\n tag_970\n jump\t// in\n tag_983:\n /* \"src/libraries/SovrynLBLibrary.sol\":2452:2504 uint256 denominator = (reserveOut - amountOut) * 997 */\n swap1\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":2551:2552 1 */\n 0x01\n /* \"src/libraries/SovrynLBLibrary.sol\":2537:2548 denominator */\n dup2\n /* \"src/libraries/SovrynLBLibrary.sol\":2525:2534 numerator */\n dup4\n /* \"src/libraries/SovrynLBLibrary.sol\":2525:2548 numerator / denominator */\n tag_984\n swap2\n swap1\n tag_975\n jump\t// in\n tag_984:\n /* \"src/libraries/SovrynLBLibrary.sol\":2525:2552 numerator / denominator + 1 */\n tag_985\n swap2\n swap1\n tag_171\n jump\t// in\n tag_985:\n /* \"src/libraries/SovrynLBLibrary.sol\":2514:2552 amountIn = numerator / denominator + 1 */\n swap3\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":2214:2559 {... */\n pop\n pop\n /* \"src/libraries/SovrynLBLibrary.sol\":2066:2559 function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/PackedUint128Math.sol\":2521:2699 function decode(bytes32 z) internal pure returns (uint128 x1, uint128 x2) {... */\n tag_773:\n /* \"src/libraries/math/PackedUint128Math.sol\":2571:2581 uint128 x1 */\n 0x00\n /* \"src/libraries/math/PackedUint128Math.sol\":2583:2593 uint128 x2 */\n dup1\n /* \"src/libraries/math/PackedUint128Math.sol\":2641:2649 MASK_128 */\n 0xffffffffffffffffffffffffffffffff\n /* \"src/libraries/math/PackedUint128Math.sol\":2638:2639 z */\n dup4\n /* \"src/libraries/math/PackedUint128Math.sol\":2634:2650 and(z, MASK_128) */\n and\n /* \"src/libraries/math/PackedUint128Math.sol\":2628:2650 x1 := and(z, MASK_128) */\n swap2\n pop\n /* \"src/libraries/math/PackedUint128Math.sol\":2681:2682 z */\n dup3\n /* \"src/libraries/math/PackedUint128Math.sol\":2673:2679 OFFSET */\n 0x80\n /* \"src/libraries/math/PackedUint128Math.sol\":2669:2683 shr(OFFSET, z) */\n shr\n /* \"src/libraries/math/PackedUint128Math.sol\":2663:2683 x2 := shr(OFFSET, z) */\n swap1\n pop\n /* \"src/libraries/math/PackedUint128Math.sol\":2521:2699 function decode(bytes32 z) internal pure returns (uint128 x1, uint128 x2) {... */\n swap2\n pop\n swap2\n jump\t// out\n /* \"src/libraries/TokenHelper.sol\":1645:2402 function _callAndCatch(IERC20 token, bytes memory data) internal {... */\n tag_836:\n /* \"src/libraries/TokenHelper.sol\":1720:1732 bool success */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1779:1780 0 */\n dup1\n /* \"src/libraries/TokenHelper.sol\":1773:1777 0x00 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1766:1781 mstore(0x00, 0) */\n mstore\n /* \"src/libraries/TokenHelper.sol\":1864:1868 0x20 */\n 0x20\n /* \"src/libraries/TokenHelper.sol\":1858:1862 0x00 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1851:1855 data */\n dup4\n /* \"src/libraries/TokenHelper.sol\":1845:1856 mload(data) */\n mload\n /* \"src/libraries/TokenHelper.sol\":1838:1842 0x20 */\n 0x20\n /* \"src/libraries/TokenHelper.sol\":1832:1836 data */\n dup6\n /* \"src/libraries/TokenHelper.sol\":1828:1843 add(data, 0x20) */\n add\n /* \"src/libraries/TokenHelper.sol\":1825:1826 0 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1818:1823 token */\n dup8\n /* \"src/libraries/TokenHelper.sol\":1811:1816 gas() */\n gas\n /* \"src/libraries/TokenHelper.sol\":1806:1869 call(gas(), token, 0, add(data, 0x20), mload(data), 0x00, 0x20) */\n call\n /* \"src/libraries/TokenHelper.sol\":1795:1869 success := call(gas(), token, 0, add(data, 0x20), mload(data), 0x00, 0x20) */\n swap1\n pop\n /* \"src/libraries/TokenHelper.sol\":1890:1897 success */\n dup1\n /* \"src/libraries/TokenHelper.sol\":1915:1916 0 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1910:2104 case 0 {... */\n dup2\n eq\n tag_989\n jumpi\n /* \"src/libraries/TokenHelper.sol\":2150:2166 returndatasize() */\n returndatasize\n /* \"src/libraries/TokenHelper.sol\":2188:2189 0 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":2183:2239 case 0 { success := iszero(iszero(extcodesize(token))) } */\n dup2\n eq\n tag_991\n jumpi\n /* \"src/libraries/TokenHelper.sol\":2306:2307 1 */\n 0x01\n /* \"src/libraries/TokenHelper.sol\":2299:2303 0x00 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":2293:2304 mload(0x00) */\n mload\n /* \"src/libraries/TokenHelper.sol\":2290:2308 eq(mload(0x00), 1) */\n eq\n /* \"src/libraries/TokenHelper.sol\":2281:2288 success */\n dup4\n /* \"src/libraries/TokenHelper.sol\":2277:2309 and(success, eq(mload(0x00), 1)) */\n and\n /* \"src/libraries/TokenHelper.sol\":2266:2309 success := and(success, eq(mload(0x00), 1)) */\n swap3\n pop\n /* \"src/libraries/TokenHelper.sol\":2143:2311 switch returndatasize()... */\n jump(tag_990)\n /* \"src/libraries/TokenHelper.sol\":2183:2239 case 0 { success := iszero(iszero(extcodesize(token))) } */\n tag_991:\n /* \"src/libraries/TokenHelper.sol\":2229:2234 token */\n dup5\n /* \"src/libraries/TokenHelper.sol\":2217:2235 extcodesize(token) */\n extcodesize\n /* \"src/libraries/TokenHelper.sol\":2210:2236 iszero(extcodesize(token)) */\n iszero\n /* \"src/libraries/TokenHelper.sol\":2203:2237 iszero(iszero(extcodesize(token))) */\n iszero\n /* \"src/libraries/TokenHelper.sol\":2192:2237 success := iszero(iszero(extcodesize(token))) */\n swap3\n pop\n /* \"src/libraries/TokenHelper.sol\":2143:2311 switch returndatasize()... */\n tag_990:\n pop\n /* \"src/libraries/TokenHelper.sol\":1883:2325 switch success... */\n jump(tag_988)\n /* \"src/libraries/TokenHelper.sol\":1910:2104 case 0 {... */\n tag_989:\n /* \"src/libraries/TokenHelper.sol\":1938:1954 returndatasize() */\n returndatasize\n /* \"src/libraries/TokenHelper.sol\":1935:2090 if returndatasize() {... */\n iszero\n tag_992\n jumpi\n /* \"src/libraries/TokenHelper.sol\":2004:2020 returndatasize() */\n returndatasize\n /* \"src/libraries/TokenHelper.sol\":1998:2002 0x00 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":1992:1996 0x00 */\n dup1\n /* \"src/libraries/TokenHelper.sol\":1977:2021 returndatacopy(0x00, 0x00, returndatasize()) */\n returndatacopy\n /* \"src/libraries/TokenHelper.sol\":2055:2071 returndatasize() */\n returndatasize\n /* \"src/libraries/TokenHelper.sol\":2049:2053 0x00 */\n 0x00\n /* \"src/libraries/TokenHelper.sol\":2042:2072 revert(0x00, returndatasize()) */\n revert\n /* \"src/libraries/TokenHelper.sol\":1935:2090 if returndatasize() {... */\n tag_992:\n /* \"src/libraries/TokenHelper.sol\":1883:2325 switch success... */\n tag_988:\n pop\n /* \"src/libraries/TokenHelper.sol\":2350:2357 success */\n dup1\n /* \"src/libraries/TokenHelper.sol\":2345:2395 if (!success) revert TokenHelper__TransferFailed() */\n tag_993\n jumpi\n /* \"src/libraries/TokenHelper.sol\":2366:2395 TokenHelper__TransferFailed() */\n mload(0x40)\n 0x32e2717a00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/TokenHelper.sol\":2345:2395 if (!success) revert TokenHelper__TransferFailed() */\n tag_993:\n /* \"src/libraries/TokenHelper.sol\":1710:2402 {... */\n pop\n /* \"src/libraries/TokenHelper.sol\":1645:2402 function _callAndCatch(IERC20 token, bytes memory data) internal {... */\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/PackedUint128Math.sol\":2914:3046 function decodeX(bytes32 z) internal pure returns (uint128 x) {... */\n tag_861:\n /* \"src/libraries/math/PackedUint128Math.sol\":2965:2974 uint128 x */\n 0x00\n /* \"src/libraries/math/PackedUint128Math.sol\":3021:3029 MASK_128 */\n 0xffffffffffffffffffffffffffffffff\n /* \"src/libraries/math/PackedUint128Math.sol\":3018:3019 z */\n dup3\n /* \"src/libraries/math/PackedUint128Math.sol\":3014:3030 and(z, MASK_128) */\n and\n /* \"src/libraries/math/PackedUint128Math.sol\":3009:3030 x := and(z, MASK_128) */\n swap1\n pop\n /* \"src/libraries/math/PackedUint128Math.sol\":2914:3046 function decodeX(bytes32 z) internal pure returns (uint128 x) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/math/PackedUint128Math.sol\":3263:3393 function decodeY(bytes32 z) internal pure returns (uint128 y) {... */\n tag_866:\n /* \"src/libraries/math/PackedUint128Math.sol\":3314:3323 uint128 y */\n 0x00\n /* \"src/libraries/math/PackedUint128Math.sol\":3375:3376 z */\n dup2\n /* \"src/libraries/math/PackedUint128Math.sol\":3367:3373 OFFSET */\n 0x80\n /* \"src/libraries/math/PackedUint128Math.sol\":3363:3377 shr(OFFSET, z) */\n shr\n /* \"src/libraries/math/PackedUint128Math.sol\":3358:3377 y := shr(OFFSET, z) */\n swap1\n pop\n /* \"src/libraries/math/PackedUint128Math.sol\":3263:3393 function decodeY(bytes32 z) internal pure returns (uint128 y) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1186:1578 function encodeParams(uint64 distributionX, uint64 distributionY, uint24 id)... */\n tag_926:\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1310:1324 bytes32 config */\n 0x00\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1349:1418 config.set(distributionX, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_X) */\n tag_997\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1360:1373 distributionX */\n dup5\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1349:1418 config.set(distributionX, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_X) */\n 0xffffffffffffffff\n and\n /* \"src/libraries/math/Encoded.sol\":647:665 0xffffffffffffffff */\n 0xffffffffffffffff\n /* \"src/libraries/math/LiquidityConfigurations.sol\":703:705 88 */\n 0x58\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1349:1355 config */\n dup5\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1349:1359 config.set */\n tag_998\n swap1\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1349:1418 config.set(distributionX, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_X) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_997:\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1340:1418 config = config.set(distributionX, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_X) */\n swap1\n pop\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1437:1506 config.set(distributionY, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_Y) */\n tag_999\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1448:1461 distributionY */\n dup4\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1437:1506 config.set(distributionY, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_Y) */\n 0xffffffffffffffff\n and\n /* \"src/libraries/math/Encoded.sol\":647:665 0xffffffffffffffff */\n 0xffffffffffffffff\n /* \"src/libraries/math/LiquidityConfigurations.sol\":646:648 24 */\n 0x18\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1437:1443 config */\n dup5\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1437:1447 config.set */\n tag_998\n swap1\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1437:1506 config.set(distributionY, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_Y) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_999:\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1428:1506 config = config.set(distributionY, Encoded.MASK_UINT64, OFFSET_DISTRIBUTION_Y) */\n swap1\n pop\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1525:1571 config.set(id, Encoded.MASK_UINT24, OFFSET_ID) */\n tag_1000\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1536:1538 id */\n dup3\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1525:1571 config.set(id, Encoded.MASK_UINT24, OFFSET_ID) */\n 0xffffff\n and\n /* \"src/libraries/math/Encoded.sol\":535:543 0xffffff */\n 0xffffff\n /* \"src/libraries/math/LiquidityConfigurations.sol\":590:591 0 */\n 0x00\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1525:1531 config */\n dup5\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1525:1535 config.set */\n tag_998\n swap1\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1525:1571 config.set(id, Encoded.MASK_UINT24, OFFSET_ID) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_1000:\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1516:1571 config = config.set(id, Encoded.MASK_UINT24, OFFSET_ID) */\n swap1\n pop\n /* \"src/libraries/math/LiquidityConfigurations.sol\":1186:1578 function encodeParams(uint64 distributionX, uint64 distributionY, uint24 id)... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/PackedUint128Math.sol\":5512:5775 function sub(bytes32 x, bytes32 y) internal pure returns (bytes32 z) {... */\n tag_939:\n /* \"src/libraries/math/PackedUint128Math.sol\":5570:5579 bytes32 z */\n 0x00\n /* \"src/libraries/math/PackedUint128Math.sol\":5626:5627 y */\n dup2\n /* \"src/libraries/math/PackedUint128Math.sol\":5623:5624 x */\n dup4\n /* \"src/libraries/math/PackedUint128Math.sol\":5619:5628 sub(x, y) */\n sub\n /* \"src/libraries/math/PackedUint128Math.sol\":5614:5628 z := sub(x, y) */\n swap1\n pop\n /* \"src/libraries/math/PackedUint128Math.sol\":5656:5657 x */\n dup3\n /* \"src/libraries/math/PackedUint128Math.sol\":5652:5653 z */\n dup2\n /* \"src/libraries/math/PackedUint128Math.sol\":5652:5657 z > x */\n gt\n /* \"src/libraries/math/PackedUint128Math.sol\":5652:5702 z > x || uint128(uint256(z)) > uint128(uint256(x)) */\n dup1\n tag_1002\n jumpi\n pop\n /* \"src/libraries/math/PackedUint128Math.sol\":5699:5700 x */\n dup3\n /* \"src/libraries/math/PackedUint128Math.sol\":5691:5701 uint256(x) */\n 0x00\n shr\n /* \"src/libraries/math/PackedUint128Math.sol\":5661:5702 uint128(uint256(z)) > uint128(uint256(x)) */\n 0xffffffffffffffffffffffffffffffff\n and\n /* \"src/libraries/math/PackedUint128Math.sol\":5677:5678 z */\n dup2\n /* \"src/libraries/math/PackedUint128Math.sol\":5669:5679 uint256(z) */\n 0x00\n shr\n /* \"src/libraries/math/PackedUint128Math.sol\":5661:5702 uint128(uint256(z)) > uint128(uint256(x)) */\n 0xffffffffffffffffffffffffffffffff\n and\n gt\n /* \"src/libraries/math/PackedUint128Math.sol\":5652:5702 z > x || uint128(uint256(z)) > uint128(uint256(x)) */\n tag_1002:\n /* \"src/libraries/math/PackedUint128Math.sol\":5648:5769 if (z > x || uint128(uint256(z)) > uint128(uint256(x))) {... */\n iszero\n tag_1003\n jumpi\n /* \"src/libraries/math/PackedUint128Math.sol\":5725:5758 PackedUint128Math__SubUnderflow() */\n mload(0x40)\n 0xe599af5500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/math/PackedUint128Math.sol\":5648:5769 if (z > x || uint128(uint256(z)) > uint128(uint256(x))) {... */\n tag_1003:\n /* \"src/libraries/math/PackedUint128Math.sol\":5512:5775 function sub(bytes32 x, bytes32 y) internal pure returns (bytes32 z) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":1099:1416 function set(bytes32 encoded, uint256 value, uint256 mask, uint256 offset)... */\n tag_998:\n /* \"src/libraries/math/Encoded.sol\":1221:1239 bytes32 newEncoded */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":1321:1325 mask */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1313:1319 offset */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1309:1326 shl(offset, mask) */\n shl\n /* \"src/libraries/math/Encoded.sol\":1305:1327 not(shl(offset, mask)) */\n not\n /* \"src/libraries/math/Encoded.sol\":1296:1303 encoded */\n dup6\n /* \"src/libraries/math/Encoded.sol\":1292:1328 and(encoded, not(shl(offset, mask))) */\n and\n /* \"src/libraries/math/Encoded.sol\":1278:1328 newEncoded := and(encoded, not(shl(offset, mask))) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":1393:1397 mask */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1386:1391 value */\n dup5\n /* \"src/libraries/math/Encoded.sol\":1382:1398 and(value, mask) */\n and\n /* \"src/libraries/math/Encoded.sol\":1374:1380 offset */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1370:1399 shl(offset, and(value, mask)) */\n shl\n /* \"src/libraries/math/Encoded.sol\":1358:1368 newEncoded */\n dup2\n /* \"src/libraries/math/Encoded.sol\":1355:1400 or(newEncoded, shl(offset, and(value, mask))) */\n or\n /* \"src/libraries/math/Encoded.sol\":1341:1400 newEncoded := or(newEncoded, shl(offset, and(value, mask))) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":1099:1416 function set(bytes32 encoded, uint256 value, uint256 mask, uint256 offset)... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7:82 */\n tag_1005:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_1006:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\n tag_1007:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:411 */\n tag_1008:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":400:405 */\n dup2\n /* \"#utility.yul\":389:405 */\n swap1\n pop\n /* \"#utility.yul\":334:411 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":417:539 */\n tag_1009:\n /* \"#utility.yul\":490:514 */\n tag_1146\n /* \"#utility.yul\":508:513 */\n dup2\n /* \"#utility.yul\":490:514 */\n tag_1008\n jump\t// in\n tag_1146:\n /* \"#utility.yul\":483:488 */\n dup2\n /* \"#utility.yul\":480:515 */\n eq\n /* \"#utility.yul\":470:533 */\n tag_1147\n jumpi\n /* \"#utility.yul\":529:530 */\n 0x00\n /* \"#utility.yul\":526:527 */\n dup1\n /* \"#utility.yul\":519:531 */\n revert\n /* \"#utility.yul\":470:533 */\n tag_1147:\n /* \"#utility.yul\":417:539 */\n pop\n jump\t// out\n /* \"#utility.yul\":545:684 */\n tag_1010:\n /* \"#utility.yul\":591:596 */\n 0x00\n /* \"#utility.yul\":629:635 */\n dup2\n /* \"#utility.yul\":616:636 */\n calldataload\n /* \"#utility.yul\":607:636 */\n swap1\n pop\n /* \"#utility.yul\":645:678 */\n tag_1149\n /* \"#utility.yul\":672:677 */\n dup2\n /* \"#utility.yul\":645:678 */\n tag_1009\n jump\t// in\n tag_1149:\n /* \"#utility.yul\":545:684 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":690:807 */\n tag_1011:\n /* \"#utility.yul\":799:800 */\n 0x00\n /* \"#utility.yul\":796:797 */\n dup1\n /* \"#utility.yul\":789:801 */\n revert\n /* \"#utility.yul\":813:915 */\n tag_1012:\n /* \"#utility.yul\":854:860 */\n 0x00\n /* \"#utility.yul\":905:907 */\n 0x1f\n /* \"#utility.yul\":901:908 */\n not\n /* \"#utility.yul\":896:898 */\n 0x1f\n /* \"#utility.yul\":889:894 */\n dup4\n /* \"#utility.yul\":885:899 */\n add\n /* \"#utility.yul\":881:909 */\n and\n /* \"#utility.yul\":871:909 */\n swap1\n pop\n /* \"#utility.yul\":813:915 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":921:1101 */\n tag_590:\n /* \"#utility.yul\":969:1046 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":966:967 */\n 0x00\n /* \"#utility.yul\":959:1047 */\n mstore\n /* \"#utility.yul\":1066:1070 */\n 0x41\n /* \"#utility.yul\":1063:1064 */\n 0x04\n /* \"#utility.yul\":1056:1071 */\n mstore\n /* \"#utility.yul\":1090:1094 */\n 0x24\n /* \"#utility.yul\":1087:1088 */\n 0x00\n /* \"#utility.yul\":1080:1095 */\n revert\n /* \"#utility.yul\":1107:1388 */\n tag_1013:\n /* \"#utility.yul\":1190:1217 */\n tag_1154\n /* \"#utility.yul\":1212:1216 */\n dup3\n /* \"#utility.yul\":1190:1217 */\n tag_1012\n jump\t// in\n tag_1154:\n /* \"#utility.yul\":1182:1188 */\n dup2\n /* \"#utility.yul\":1178:1218 */\n add\n /* \"#utility.yul\":1320:1326 */\n dup2\n /* \"#utility.yul\":1308:1318 */\n dup2\n /* \"#utility.yul\":1305:1327 */\n lt\n /* \"#utility.yul\":1284:1302 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1272:1282 */\n dup3\n /* \"#utility.yul\":1269:1303 */\n gt\n /* \"#utility.yul\":1266:1328 */\n or\n /* \"#utility.yul\":1263:1351 */\n iszero\n tag_1155\n jumpi\n /* \"#utility.yul\":1331:1349 */\n tag_1156\n tag_590\n jump\t// in\n tag_1156:\n /* \"#utility.yul\":1263:1351 */\n tag_1155:\n /* \"#utility.yul\":1371:1381 */\n dup1\n /* \"#utility.yul\":1367:1369 */\n 0x40\n /* \"#utility.yul\":1360:1382 */\n mstore\n /* \"#utility.yul\":1150:1388 */\n pop\n /* \"#utility.yul\":1107:1388 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1394:1523 */\n tag_1014:\n /* \"#utility.yul\":1428:1434 */\n 0x00\n /* \"#utility.yul\":1455:1475 */\n tag_1158\n tag_1005\n jump\t// in\n tag_1158:\n /* \"#utility.yul\":1445:1475 */\n swap1\n pop\n /* \"#utility.yul\":1484:1517 */\n tag_1159\n /* \"#utility.yul\":1512:1516 */\n dup3\n /* \"#utility.yul\":1504:1510 */\n dup3\n /* \"#utility.yul\":1484:1517 */\n tag_1013\n jump\t// in\n tag_1159:\n /* \"#utility.yul\":1394:1523 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1529:1646 */\n tag_1015:\n /* \"#utility.yul\":1638:1639 */\n 0x00\n /* \"#utility.yul\":1635:1636 */\n dup1\n /* \"#utility.yul\":1628:1640 */\n revert\n /* \"#utility.yul\":1652:1769 */\n tag_1016:\n /* \"#utility.yul\":1761:1762 */\n 0x00\n /* \"#utility.yul\":1758:1759 */\n dup1\n /* \"#utility.yul\":1751:1763 */\n revert\n /* \"#utility.yul\":1775:2086 */\n tag_1017:\n /* \"#utility.yul\":1852:1856 */\n 0x00\n /* \"#utility.yul\":1942:1960 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1934:1940 */\n dup3\n /* \"#utility.yul\":1931:1961 */\n gt\n /* \"#utility.yul\":1928:1984 */\n iszero\n tag_1163\n jumpi\n /* \"#utility.yul\":1964:1982 */\n tag_1164\n tag_590\n jump\t// in\n tag_1164:\n /* \"#utility.yul\":1928:1984 */\n tag_1163:\n /* \"#utility.yul\":2014:2018 */\n 0x20\n /* \"#utility.yul\":2006:2012 */\n dup3\n /* \"#utility.yul\":2002:2019 */\n mul\n /* \"#utility.yul\":1994:2019 */\n swap1\n pop\n /* \"#utility.yul\":2074:2078 */\n 0x20\n /* \"#utility.yul\":2068:2072 */\n dup2\n /* \"#utility.yul\":2064:2079 */\n add\n /* \"#utility.yul\":2056:2079 */\n swap1\n pop\n /* \"#utility.yul\":1775:2086 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2092:2209 */\n tag_1018:\n /* \"#utility.yul\":2201:2202 */\n 0x00\n /* \"#utility.yul\":2198:2199 */\n dup1\n /* \"#utility.yul\":2191:2203 */\n revert\n /* \"#utility.yul\":2232:2942 */\n tag_1019:\n /* \"#utility.yul\":2328:2333 */\n 0x00\n /* \"#utility.yul\":2353:2434 */\n tag_1167\n /* \"#utility.yul\":2369:2433 */\n tag_1168\n /* \"#utility.yul\":2426:2432 */\n dup5\n /* \"#utility.yul\":2369:2433 */\n tag_1017\n jump\t// in\n tag_1168:\n /* \"#utility.yul\":2353:2434 */\n tag_1014\n jump\t// in\n tag_1167:\n /* \"#utility.yul\":2344:2434 */\n swap1\n pop\n /* \"#utility.yul\":2454:2459 */\n dup1\n /* \"#utility.yul\":2483:2489 */\n dup4\n /* \"#utility.yul\":2476:2481 */\n dup3\n /* \"#utility.yul\":2469:2490 */\n mstore\n /* \"#utility.yul\":2517:2521 */\n 0x20\n /* \"#utility.yul\":2510:2515 */\n dup3\n /* \"#utility.yul\":2506:2522 */\n add\n /* \"#utility.yul\":2499:2522 */\n swap1\n pop\n /* \"#utility.yul\":2570:2574 */\n 0x20\n /* \"#utility.yul\":2562:2568 */\n dup5\n /* \"#utility.yul\":2558:2575 */\n mul\n /* \"#utility.yul\":2550:2556 */\n dup4\n /* \"#utility.yul\":2546:2576 */\n add\n /* \"#utility.yul\":2599:2602 */\n dup6\n /* \"#utility.yul\":2591:2597 */\n dup2\n /* \"#utility.yul\":2588:2603 */\n gt\n /* \"#utility.yul\":2585:2707 */\n iszero\n tag_1169\n jumpi\n /* \"#utility.yul\":2618:2697 */\n tag_1170\n tag_1018\n jump\t// in\n tag_1170:\n /* \"#utility.yul\":2585:2707 */\n tag_1169:\n /* \"#utility.yul\":2733:2739 */\n dup4\n /* \"#utility.yul\":2716:2936 */\n tag_1171:\n /* \"#utility.yul\":2750:2756 */\n dup2\n /* \"#utility.yul\":2745:2748 */\n dup2\n /* \"#utility.yul\":2742:2757 */\n lt\n /* \"#utility.yul\":2716:2936 */\n iszero\n tag_1173\n jumpi\n /* \"#utility.yul\":2825:2828 */\n dup1\n /* \"#utility.yul\":2854:2891 */\n tag_1174\n /* \"#utility.yul\":2887:2890 */\n dup9\n /* \"#utility.yul\":2875:2885 */\n dup3\n /* \"#utility.yul\":2854:2891 */\n tag_1010\n jump\t// in\n tag_1174:\n /* \"#utility.yul\":2849:2852 */\n dup5\n /* \"#utility.yul\":2842:2892 */\n mstore\n /* \"#utility.yul\":2921:2925 */\n 0x20\n /* \"#utility.yul\":2916:2919 */\n dup5\n /* \"#utility.yul\":2912:2926 */\n add\n /* \"#utility.yul\":2905:2926 */\n swap4\n pop\n /* \"#utility.yul\":2792:2936 */\n pop\n /* \"#utility.yul\":2776:2780 */\n 0x20\n /* \"#utility.yul\":2771:2774 */\n dup2\n /* \"#utility.yul\":2767:2781 */\n add\n /* \"#utility.yul\":2760:2781 */\n swap1\n pop\n /* \"#utility.yul\":2716:2936 */\n jump(tag_1171)\n tag_1173:\n /* \"#utility.yul\":2720:2741 */\n pop\n /* \"#utility.yul\":2334:2942 */\n pop\n pop\n /* \"#utility.yul\":2232:2942 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2965:3335 */\n tag_1020:\n /* \"#utility.yul\":3036:3041 */\n 0x00\n /* \"#utility.yul\":3085:3088 */\n dup3\n /* \"#utility.yul\":3078:3082 */\n 0x1f\n /* \"#utility.yul\":3070:3076 */\n dup4\n /* \"#utility.yul\":3066:3083 */\n add\n /* \"#utility.yul\":3062:3089 */\n slt\n /* \"#utility.yul\":3052:3174 */\n tag_1176\n jumpi\n /* \"#utility.yul\":3093:3172 */\n tag_1177\n tag_1016\n jump\t// in\n tag_1177:\n /* \"#utility.yul\":3052:3174 */\n tag_1176:\n /* \"#utility.yul\":3210:3216 */\n dup2\n /* \"#utility.yul\":3197:3217 */\n calldataload\n /* \"#utility.yul\":3235:3329 */\n tag_1178\n /* \"#utility.yul\":3325:3328 */\n dup5\n /* \"#utility.yul\":3317:3323 */\n dup3\n /* \"#utility.yul\":3310:3314 */\n 0x20\n /* \"#utility.yul\":3302:3308 */\n dup7\n /* \"#utility.yul\":3298:3315 */\n add\n /* \"#utility.yul\":3235:3329 */\n tag_1019\n jump\t// in\n tag_1178:\n /* \"#utility.yul\":3226:3329 */\n swap2\n pop\n /* \"#utility.yul\":3042:3335 */\n pop\n /* \"#utility.yul\":2965:3335 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3341:3664 */\n tag_1021:\n /* \"#utility.yul\":3430:3434 */\n 0x00\n /* \"#utility.yul\":3520:3538 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3512:3518 */\n dup3\n /* \"#utility.yul\":3509:3539 */\n gt\n /* \"#utility.yul\":3506:3562 */\n iszero\n tag_1180\n jumpi\n /* \"#utility.yul\":3542:3560 */\n tag_1181\n tag_590\n jump\t// in\n tag_1181:\n /* \"#utility.yul\":3506:3562 */\n tag_1180:\n /* \"#utility.yul\":3592:3596 */\n 0x20\n /* \"#utility.yul\":3584:3590 */\n dup3\n /* \"#utility.yul\":3580:3597 */\n mul\n /* \"#utility.yul\":3572:3597 */\n swap1\n pop\n /* \"#utility.yul\":3652:3656 */\n 0x20\n /* \"#utility.yul\":3646:3650 */\n dup2\n /* \"#utility.yul\":3642:3657 */\n add\n /* \"#utility.yul\":3634:3657 */\n swap1\n pop\n /* \"#utility.yul\":3341:3664 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3670:3781 */\n tag_1022:\n /* \"#utility.yul\":3755:3756 */\n 0x02\n /* \"#utility.yul\":3748:3753 */\n dup2\n /* \"#utility.yul\":3745:3757 */\n lt\n /* \"#utility.yul\":3735:3775 */\n tag_1183\n jumpi\n /* \"#utility.yul\":3771:3772 */\n 0x00\n /* \"#utility.yul\":3768:3769 */\n dup1\n /* \"#utility.yul\":3761:3773 */\n revert\n /* \"#utility.yul\":3735:3775 */\n tag_1183:\n /* \"#utility.yul\":3670:3781 */\n pop\n jump\t// out\n /* \"#utility.yul\":3787:3950 */\n tag_1023:\n /* \"#utility.yul\":3845:3850 */\n 0x00\n /* \"#utility.yul\":3883:3889 */\n dup2\n /* \"#utility.yul\":3870:3890 */\n calldataload\n /* \"#utility.yul\":3861:3890 */\n swap1\n pop\n /* \"#utility.yul\":3899:3944 */\n tag_1185\n /* \"#utility.yul\":3938:3943 */\n dup2\n /* \"#utility.yul\":3899:3944 */\n tag_1022\n jump\t// in\n tag_1185:\n /* \"#utility.yul\":3787:3950 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3988:4734 */\n tag_1024:\n /* \"#utility.yul\":4096:4101 */\n 0x00\n /* \"#utility.yul\":4121:4214 */\n tag_1187\n /* \"#utility.yul\":4137:4213 */\n tag_1188\n /* \"#utility.yul\":4206:4212 */\n dup5\n /* \"#utility.yul\":4137:4213 */\n tag_1021\n jump\t// in\n tag_1188:\n /* \"#utility.yul\":4121:4214 */\n tag_1014\n jump\t// in\n tag_1187:\n /* \"#utility.yul\":4112:4214 */\n swap1\n pop\n /* \"#utility.yul\":4234:4239 */\n dup1\n /* \"#utility.yul\":4263:4269 */\n dup4\n /* \"#utility.yul\":4256:4261 */\n dup3\n /* \"#utility.yul\":4249:4270 */\n mstore\n /* \"#utility.yul\":4297:4301 */\n 0x20\n /* \"#utility.yul\":4290:4295 */\n dup3\n /* \"#utility.yul\":4286:4302 */\n add\n /* \"#utility.yul\":4279:4302 */\n swap1\n pop\n /* \"#utility.yul\":4350:4354 */\n 0x20\n /* \"#utility.yul\":4342:4348 */\n dup5\n /* \"#utility.yul\":4338:4355 */\n mul\n /* \"#utility.yul\":4330:4336 */\n dup4\n /* \"#utility.yul\":4326:4356 */\n add\n /* \"#utility.yul\":4379:4382 */\n dup6\n /* \"#utility.yul\":4371:4377 */\n dup2\n /* \"#utility.yul\":4368:4383 */\n gt\n /* \"#utility.yul\":4365:4487 */\n iszero\n tag_1189\n jumpi\n /* \"#utility.yul\":4398:4477 */\n tag_1190\n tag_1018\n jump\t// in\n tag_1190:\n /* \"#utility.yul\":4365:4487 */\n tag_1189:\n /* \"#utility.yul\":4513:4519 */\n dup4\n /* \"#utility.yul\":4496:4728 */\n tag_1191:\n /* \"#utility.yul\":4530:4536 */\n dup2\n /* \"#utility.yul\":4525:4528 */\n dup2\n /* \"#utility.yul\":4522:4537 */\n lt\n /* \"#utility.yul\":4496:4728 */\n iszero\n tag_1193\n jumpi\n /* \"#utility.yul\":4605:4608 */\n dup1\n /* \"#utility.yul\":4634:4683 */\n tag_1194\n /* \"#utility.yul\":4679:4682 */\n dup9\n /* \"#utility.yul\":4667:4677 */\n dup3\n /* \"#utility.yul\":4634:4683 */\n tag_1023\n jump\t// in\n tag_1194:\n /* \"#utility.yul\":4629:4632 */\n dup5\n /* \"#utility.yul\":4622:4684 */\n mstore\n /* \"#utility.yul\":4713:4717 */\n 0x20\n /* \"#utility.yul\":4708:4711 */\n dup5\n /* \"#utility.yul\":4704:4718 */\n add\n /* \"#utility.yul\":4697:4718 */\n swap4\n pop\n /* \"#utility.yul\":4572:4728 */\n pop\n /* \"#utility.yul\":4556:4560 */\n 0x20\n /* \"#utility.yul\":4551:4554 */\n dup2\n /* \"#utility.yul\":4547:4561 */\n add\n /* \"#utility.yul\":4540:4561 */\n swap1\n pop\n /* \"#utility.yul\":4496:4728 */\n jump(tag_1191)\n tag_1193:\n /* \"#utility.yul\":4500:4521 */\n pop\n /* \"#utility.yul\":4102:4734 */\n pop\n pop\n /* \"#utility.yul\":3988:4734 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4772:5166 */\n tag_1025:\n /* \"#utility.yul\":4855:4860 */\n 0x00\n /* \"#utility.yul\":4904:4907 */\n dup3\n /* \"#utility.yul\":4897:4901 */\n 0x1f\n /* \"#utility.yul\":4889:4895 */\n dup4\n /* \"#utility.yul\":4885:4902 */\n add\n /* \"#utility.yul\":4881:4908 */\n slt\n /* \"#utility.yul\":4871:4993 */\n tag_1196\n jumpi\n /* \"#utility.yul\":4912:4991 */\n tag_1197\n tag_1016\n jump\t// in\n tag_1197:\n /* \"#utility.yul\":4871:4993 */\n tag_1196:\n /* \"#utility.yul\":5029:5035 */\n dup2\n /* \"#utility.yul\":5016:5036 */\n calldataload\n /* \"#utility.yul\":5054:5160 */\n tag_1198\n /* \"#utility.yul\":5156:5159 */\n dup5\n /* \"#utility.yul\":5148:5154 */\n dup3\n /* \"#utility.yul\":5141:5145 */\n 0x20\n /* \"#utility.yul\":5133:5139 */\n dup7\n /* \"#utility.yul\":5129:5146 */\n add\n /* \"#utility.yul\":5054:5160 */\n tag_1024\n jump\t// in\n tag_1198:\n /* \"#utility.yul\":5045:5160 */\n swap2\n pop\n /* \"#utility.yul\":4861:5166 */\n pop\n /* \"#utility.yul\":4772:5166 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5172:5497 */\n tag_1026:\n /* \"#utility.yul\":5263:5267 */\n 0x00\n /* \"#utility.yul\":5353:5371 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5345:5351 */\n dup3\n /* \"#utility.yul\":5342:5372 */\n gt\n /* \"#utility.yul\":5339:5395 */\n iszero\n tag_1200\n jumpi\n /* \"#utility.yul\":5375:5393 */\n tag_1201\n tag_590\n jump\t// in\n tag_1201:\n /* \"#utility.yul\":5339:5395 */\n tag_1200:\n /* \"#utility.yul\":5425:5429 */\n 0x20\n /* \"#utility.yul\":5417:5423 */\n dup3\n /* \"#utility.yul\":5413:5430 */\n mul\n /* \"#utility.yul\":5405:5430 */\n swap1\n pop\n /* \"#utility.yul\":5485:5489 */\n 0x20\n /* \"#utility.yul\":5479:5483 */\n dup2\n /* \"#utility.yul\":5475:5490 */\n add\n /* \"#utility.yul\":5467:5490 */\n swap1\n pop\n /* \"#utility.yul\":5172:5497 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5503:5629 */\n tag_1027:\n /* \"#utility.yul\":5540:5547 */\n 0x00\n /* \"#utility.yul\":5580:5622 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":5573:5578 */\n dup3\n /* \"#utility.yul\":5569:5623 */\n and\n /* \"#utility.yul\":5558:5623 */\n swap1\n pop\n /* \"#utility.yul\":5503:5629 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5635:5731 */\n tag_1028:\n /* \"#utility.yul\":5672:5679 */\n 0x00\n /* \"#utility.yul\":5701:5725 */\n tag_1204\n /* \"#utility.yul\":5719:5724 */\n dup3\n /* \"#utility.yul\":5701:5725 */\n tag_1027\n jump\t// in\n tag_1204:\n /* \"#utility.yul\":5690:5725 */\n swap1\n pop\n /* \"#utility.yul\":5635:5731 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5737:5847 */\n tag_1029:\n /* \"#utility.yul\":5788:5795 */\n 0x00\n /* \"#utility.yul\":5817:5841 */\n tag_1206\n /* \"#utility.yul\":5835:5840 */\n dup3\n /* \"#utility.yul\":5817:5841 */\n tag_1028\n jump\t// in\n tag_1206:\n /* \"#utility.yul\":5806:5841 */\n swap1\n pop\n /* \"#utility.yul\":5737:5847 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5853:6003 */\n tag_1030:\n /* \"#utility.yul\":5940:5978 */\n tag_1208\n /* \"#utility.yul\":5972:5977 */\n dup2\n /* \"#utility.yul\":5940:5978 */\n tag_1029\n jump\t// in\n tag_1208:\n /* \"#utility.yul\":5933:5938 */\n dup2\n /* \"#utility.yul\":5930:5979 */\n eq\n /* \"#utility.yul\":5920:5997 */\n tag_1209\n jumpi\n /* \"#utility.yul\":5993:5994 */\n 0x00\n /* \"#utility.yul\":5990:5991 */\n dup1\n /* \"#utility.yul\":5983:5995 */\n revert\n /* \"#utility.yul\":5920:5997 */\n tag_1209:\n /* \"#utility.yul\":5853:6003 */\n pop\n jump\t// out\n /* \"#utility.yul\":6009:6176 */\n tag_1031:\n /* \"#utility.yul\":6069:6074 */\n 0x00\n /* \"#utility.yul\":6107:6113 */\n dup2\n /* \"#utility.yul\":6094:6114 */\n calldataload\n /* \"#utility.yul\":6085:6114 */\n swap1\n pop\n /* \"#utility.yul\":6123:6170 */\n tag_1211\n /* \"#utility.yul\":6164:6169 */\n dup2\n /* \"#utility.yul\":6123:6170 */\n tag_1030\n jump\t// in\n tag_1211:\n /* \"#utility.yul\":6009:6176 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6207:6959 */\n tag_1032:\n /* \"#utility.yul\":6317:6322 */\n 0x00\n /* \"#utility.yul\":6342:6437 */\n tag_1213\n /* \"#utility.yul\":6358:6436 */\n tag_1214\n /* \"#utility.yul\":6429:6435 */\n dup5\n /* \"#utility.yul\":6358:6436 */\n tag_1026\n jump\t// in\n tag_1214:\n /* \"#utility.yul\":6342:6437 */\n tag_1014\n jump\t// in\n tag_1213:\n /* \"#utility.yul\":6333:6437 */\n swap1\n pop\n /* \"#utility.yul\":6457:6462 */\n dup1\n /* \"#utility.yul\":6486:6492 */\n dup4\n /* \"#utility.yul\":6479:6484 */\n dup3\n /* \"#utility.yul\":6472:6493 */\n mstore\n /* \"#utility.yul\":6520:6524 */\n 0x20\n /* \"#utility.yul\":6513:6518 */\n dup3\n /* \"#utility.yul\":6509:6525 */\n add\n /* \"#utility.yul\":6502:6525 */\n swap1\n pop\n /* \"#utility.yul\":6573:6577 */\n 0x20\n /* \"#utility.yul\":6565:6571 */\n dup5\n /* \"#utility.yul\":6561:6578 */\n mul\n /* \"#utility.yul\":6553:6559 */\n dup4\n /* \"#utility.yul\":6549:6579 */\n add\n /* \"#utility.yul\":6602:6605 */\n dup6\n /* \"#utility.yul\":6594:6600 */\n dup2\n /* \"#utility.yul\":6591:6606 */\n gt\n /* \"#utility.yul\":6588:6710 */\n iszero\n tag_1215\n jumpi\n /* \"#utility.yul\":6621:6700 */\n tag_1216\n tag_1018\n jump\t// in\n tag_1216:\n /* \"#utility.yul\":6588:6710 */\n tag_1215:\n /* \"#utility.yul\":6736:6742 */\n dup4\n /* \"#utility.yul\":6719:6953 */\n tag_1217:\n /* \"#utility.yul\":6753:6759 */\n dup2\n /* \"#utility.yul\":6748:6751 */\n dup2\n /* \"#utility.yul\":6745:6760 */\n lt\n /* \"#utility.yul\":6719:6953 */\n iszero\n tag_1219\n jumpi\n /* \"#utility.yul\":6828:6831 */\n dup1\n /* \"#utility.yul\":6857:6908 */\n tag_1220\n /* \"#utility.yul\":6904:6907 */\n dup9\n /* \"#utility.yul\":6892:6902 */\n dup3\n /* \"#utility.yul\":6857:6908 */\n tag_1031\n jump\t// in\n tag_1220:\n /* \"#utility.yul\":6852:6855 */\n dup5\n /* \"#utility.yul\":6845:6909 */\n mstore\n /* \"#utility.yul\":6938:6942 */\n 0x20\n /* \"#utility.yul\":6933:6936 */\n dup5\n /* \"#utility.yul\":6929:6943 */\n add\n /* \"#utility.yul\":6922:6943 */\n swap4\n pop\n /* \"#utility.yul\":6795:6953 */\n pop\n /* \"#utility.yul\":6779:6783 */\n 0x20\n /* \"#utility.yul\":6774:6777 */\n dup2\n /* \"#utility.yul\":6770:6784 */\n add\n /* \"#utility.yul\":6763:6784 */\n swap1\n pop\n /* \"#utility.yul\":6719:6953 */\n jump(tag_1217)\n tag_1219:\n /* \"#utility.yul\":6723:6744 */\n pop\n /* \"#utility.yul\":6323:6959 */\n pop\n pop\n /* \"#utility.yul\":6207:6959 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6990:7388 */\n tag_1033:\n /* \"#utility.yul\":7075:7080 */\n 0x00\n /* \"#utility.yul\":7124:7127 */\n dup3\n /* \"#utility.yul\":7117:7121 */\n 0x1f\n /* \"#utility.yul\":7109:7115 */\n dup4\n /* \"#utility.yul\":7105:7122 */\n add\n /* \"#utility.yul\":7101:7128 */\n slt\n /* \"#utility.yul\":7091:7213 */\n tag_1222\n jumpi\n /* \"#utility.yul\":7132:7211 */\n tag_1223\n tag_1016\n jump\t// in\n tag_1223:\n /* \"#utility.yul\":7091:7213 */\n tag_1222:\n /* \"#utility.yul\":7249:7255 */\n dup2\n /* \"#utility.yul\":7236:7256 */\n calldataload\n /* \"#utility.yul\":7274:7382 */\n tag_1224\n /* \"#utility.yul\":7378:7381 */\n dup5\n /* \"#utility.yul\":7370:7376 */\n dup3\n /* \"#utility.yul\":7363:7367 */\n 0x20\n /* \"#utility.yul\":7355:7361 */\n dup7\n /* \"#utility.yul\":7351:7368 */\n add\n /* \"#utility.yul\":7274:7382 */\n tag_1032\n jump\t// in\n tag_1224:\n /* \"#utility.yul\":7265:7382 */\n swap2\n pop\n /* \"#utility.yul\":7081:7388 */\n pop\n /* \"#utility.yul\":6990:7388 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7423:8753 */\n tag_1034:\n /* \"#utility.yul\":7494:7499 */\n 0x00\n /* \"#utility.yul\":7538:7542 */\n 0x60\n /* \"#utility.yul\":7526:7535 */\n dup3\n /* \"#utility.yul\":7521:7524 */\n dup5\n /* \"#utility.yul\":7517:7536 */\n sub\n /* \"#utility.yul\":7513:7543 */\n slt\n /* \"#utility.yul\":7510:7627 */\n iszero\n tag_1226\n jumpi\n /* \"#utility.yul\":7546:7625 */\n tag_1227\n tag_1011\n jump\t// in\n tag_1227:\n /* \"#utility.yul\":7510:7627 */\n tag_1226:\n /* \"#utility.yul\":7645:7666 */\n tag_1228\n /* \"#utility.yul\":7661:7665 */\n 0x60\n /* \"#utility.yul\":7645:7666 */\n tag_1014\n jump\t// in\n tag_1228:\n /* \"#utility.yul\":7636:7666 */\n swap1\n pop\n /* \"#utility.yul\":7761:7762 */\n 0x00\n /* \"#utility.yul\":7750:7759 */\n dup3\n /* \"#utility.yul\":7746:7763 */\n add\n /* \"#utility.yul\":7733:7764 */\n calldataload\n /* \"#utility.yul\":7791:7809 */\n 0xffffffffffffffff\n /* \"#utility.yul\":7783:7789 */\n dup2\n /* \"#utility.yul\":7780:7810 */\n gt\n /* \"#utility.yul\":7777:7894 */\n iszero\n tag_1229\n jumpi\n /* \"#utility.yul\":7813:7892 */\n tag_1230\n tag_1015\n jump\t// in\n tag_1230:\n /* \"#utility.yul\":7777:7894 */\n tag_1229:\n /* \"#utility.yul\":7933:8007 */\n tag_1231\n /* \"#utility.yul\":8003:8006 */\n dup5\n /* \"#utility.yul\":7994:8000 */\n dup3\n /* \"#utility.yul\":7983:7992 */\n dup6\n /* \"#utility.yul\":7979:8001 */\n add\n /* \"#utility.yul\":7933:8007 */\n tag_1020\n jump\t// in\n tag_1231:\n /* \"#utility.yul\":7926:7930 */\n 0x00\n /* \"#utility.yul\":7919:7924 */\n dup4\n /* \"#utility.yul\":7915:7931 */\n add\n /* \"#utility.yul\":7908:8008 */\n mstore\n /* \"#utility.yul\":7676:8019 */\n pop\n /* \"#utility.yul\":8110:8112 */\n 0x20\n /* \"#utility.yul\":8099:8108 */\n dup3\n /* \"#utility.yul\":8095:8113 */\n add\n /* \"#utility.yul\":8082:8114 */\n calldataload\n /* \"#utility.yul\":8141:8159 */\n 0xffffffffffffffff\n /* \"#utility.yul\":8133:8139 */\n dup2\n /* \"#utility.yul\":8130:8160 */\n gt\n /* \"#utility.yul\":8127:8244 */\n iszero\n tag_1232\n jumpi\n /* \"#utility.yul\":8163:8242 */\n tag_1233\n tag_1015\n jump\t// in\n tag_1233:\n /* \"#utility.yul\":8127:8244 */\n tag_1232:\n /* \"#utility.yul\":8283:8369 */\n tag_1234\n /* \"#utility.yul\":8365:8368 */\n dup5\n /* \"#utility.yul\":8356:8362 */\n dup3\n /* \"#utility.yul\":8345:8354 */\n dup6\n /* \"#utility.yul\":8341:8363 */\n add\n /* \"#utility.yul\":8283:8369 */\n tag_1025\n jump\t// in\n tag_1234:\n /* \"#utility.yul\":8276:8280 */\n 0x20\n /* \"#utility.yul\":8269:8274 */\n dup4\n /* \"#utility.yul\":8265:8281 */\n add\n /* \"#utility.yul\":8258:8370 */\n mstore\n /* \"#utility.yul\":8029:8381 */\n pop\n /* \"#utility.yul\":8473:8475 */\n 0x40\n /* \"#utility.yul\":8462:8471 */\n dup3\n /* \"#utility.yul\":8458:8476 */\n add\n /* \"#utility.yul\":8445:8477 */\n calldataload\n /* \"#utility.yul\":8504:8522 */\n 0xffffffffffffffff\n /* \"#utility.yul\":8496:8502 */\n dup2\n /* \"#utility.yul\":8493:8523 */\n gt\n /* \"#utility.yul\":8490:8607 */\n iszero\n tag_1235\n jumpi\n /* \"#utility.yul\":8526:8605 */\n tag_1236\n tag_1015\n jump\t// in\n tag_1236:\n /* \"#utility.yul\":8490:8607 */\n tag_1235:\n /* \"#utility.yul\":8646:8734 */\n tag_1237\n /* \"#utility.yul\":8730:8733 */\n dup5\n /* \"#utility.yul\":8721:8727 */\n dup3\n /* \"#utility.yul\":8710:8719 */\n dup6\n /* \"#utility.yul\":8706:8728 */\n add\n /* \"#utility.yul\":8646:8734 */\n tag_1033\n jump\t// in\n tag_1237:\n /* \"#utility.yul\":8639:8643 */\n 0x40\n /* \"#utility.yul\":8632:8637 */\n dup4\n /* \"#utility.yul\":8628:8644 */\n add\n /* \"#utility.yul\":8621:8735 */\n mstore\n /* \"#utility.yul\":8391:8746 */\n pop\n /* \"#utility.yul\":7423:8753 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8759:8863 */\n tag_1035:\n /* \"#utility.yul\":8804:8811 */\n 0x00\n /* \"#utility.yul\":8833:8857 */\n tag_1239\n /* \"#utility.yul\":8851:8856 */\n dup3\n /* \"#utility.yul\":8833:8857 */\n tag_1027\n jump\t// in\n tag_1239:\n /* \"#utility.yul\":8822:8857 */\n swap1\n pop\n /* \"#utility.yul\":8759:8863 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8869:9007 */\n tag_1036:\n /* \"#utility.yul\":8950:8982 */\n tag_1241\n /* \"#utility.yul\":8976:8981 */\n dup2\n /* \"#utility.yul\":8950:8982 */\n tag_1035\n jump\t// in\n tag_1241:\n /* \"#utility.yul\":8943:8948 */\n dup2\n /* \"#utility.yul\":8940:8983 */\n eq\n /* \"#utility.yul\":8930:9001 */\n tag_1242\n jumpi\n /* \"#utility.yul\":8997:8998 */\n 0x00\n /* \"#utility.yul\":8994:8995 */\n dup1\n /* \"#utility.yul\":8987:8999 */\n revert\n /* \"#utility.yul\":8930:9001 */\n tag_1242:\n /* \"#utility.yul\":8869:9007 */\n pop\n jump\t// out\n /* \"#utility.yul\":9013:9168 */\n tag_1037:\n /* \"#utility.yul\":9067:9072 */\n 0x00\n /* \"#utility.yul\":9105:9111 */\n dup2\n /* \"#utility.yul\":9092:9112 */\n calldataload\n /* \"#utility.yul\":9083:9112 */\n swap1\n pop\n /* \"#utility.yul\":9121:9162 */\n tag_1244\n /* \"#utility.yul\":9156:9161 */\n dup2\n /* \"#utility.yul\":9121:9162 */\n tag_1036\n jump\t// in\n tag_1244:\n /* \"#utility.yul\":9013:9168 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9174:10305 */\n tag_36:\n /* \"#utility.yul\":9299:9305 */\n 0x00\n /* \"#utility.yul\":9307:9313 */\n dup1\n /* \"#utility.yul\":9315:9321 */\n 0x00\n /* \"#utility.yul\":9323:9329 */\n dup1\n /* \"#utility.yul\":9331:9337 */\n 0x00\n /* \"#utility.yul\":9380:9383 */\n 0xa0\n /* \"#utility.yul\":9368:9377 */\n dup7\n /* \"#utility.yul\":9359:9366 */\n dup9\n /* \"#utility.yul\":9355:9378 */\n sub\n /* \"#utility.yul\":9351:9384 */\n slt\n /* \"#utility.yul\":9348:9468 */\n iszero\n tag_1246\n jumpi\n /* \"#utility.yul\":9387:9466 */\n tag_1247\n tag_1006\n jump\t// in\n tag_1247:\n /* \"#utility.yul\":9348:9468 */\n tag_1246:\n /* \"#utility.yul\":9507:9508 */\n 0x00\n /* \"#utility.yul\":9532:9585 */\n tag_1248\n /* \"#utility.yul\":9577:9584 */\n dup9\n /* \"#utility.yul\":9568:9574 */\n dup3\n /* \"#utility.yul\":9557:9566 */\n dup10\n /* \"#utility.yul\":9553:9575 */\n add\n /* \"#utility.yul\":9532:9585 */\n tag_1010\n jump\t// in\n tag_1248:\n /* \"#utility.yul\":9522:9585 */\n swap6\n pop\n /* \"#utility.yul\":9478:9595 */\n pop\n /* \"#utility.yul\":9634:9636 */\n 0x20\n /* \"#utility.yul\":9660:9713 */\n tag_1249\n /* \"#utility.yul\":9705:9712 */\n dup9\n /* \"#utility.yul\":9696:9702 */\n dup3\n /* \"#utility.yul\":9685:9694 */\n dup10\n /* \"#utility.yul\":9681:9703 */\n add\n /* \"#utility.yul\":9660:9713 */\n tag_1010\n jump\t// in\n tag_1249:\n /* \"#utility.yul\":9650:9713 */\n swap5\n pop\n /* \"#utility.yul\":9605:9723 */\n pop\n /* \"#utility.yul\":9790:9792 */\n 0x40\n /* \"#utility.yul\":9779:9788 */\n dup7\n /* \"#utility.yul\":9775:9793 */\n add\n /* \"#utility.yul\":9762:9794 */\n calldataload\n /* \"#utility.yul\":9821:9839 */\n 0xffffffffffffffff\n /* \"#utility.yul\":9813:9819 */\n dup2\n /* \"#utility.yul\":9810:9840 */\n gt\n /* \"#utility.yul\":9807:9924 */\n iszero\n tag_1250\n jumpi\n /* \"#utility.yul\":9843:9922 */\n tag_1251\n tag_1007\n jump\t// in\n tag_1251:\n /* \"#utility.yul\":9807:9924 */\n tag_1250:\n /* \"#utility.yul\":9948:10023 */\n tag_1252\n /* \"#utility.yul\":10015:10022 */\n dup9\n /* \"#utility.yul\":10006:10012 */\n dup3\n /* \"#utility.yul\":9995:10004 */\n dup10\n /* \"#utility.yul\":9991:10013 */\n add\n /* \"#utility.yul\":9948:10023 */\n tag_1034\n jump\t// in\n tag_1252:\n /* \"#utility.yul\":9938:10023 */\n swap4\n pop\n /* \"#utility.yul\":9733:10033 */\n pop\n /* \"#utility.yul\":10072:10074 */\n 0x60\n /* \"#utility.yul\":10098:10159 */\n tag_1253\n /* \"#utility.yul\":10151:10158 */\n dup9\n /* \"#utility.yul\":10142:10148 */\n dup3\n /* \"#utility.yul\":10131:10140 */\n dup10\n /* \"#utility.yul\":10127:10149 */\n add\n /* \"#utility.yul\":10098:10159 */\n tag_1037\n jump\t// in\n tag_1253:\n /* \"#utility.yul\":10088:10159 */\n swap3\n pop\n /* \"#utility.yul\":10043:10169 */\n pop\n /* \"#utility.yul\":10208:10211 */\n 0x80\n /* \"#utility.yul\":10235:10288 */\n tag_1254\n /* \"#utility.yul\":10280:10287 */\n dup9\n /* \"#utility.yul\":10271:10277 */\n dup3\n /* \"#utility.yul\":10260:10269 */\n dup10\n /* \"#utility.yul\":10256:10278 */\n add\n /* \"#utility.yul\":10235:10288 */\n tag_1010\n jump\t// in\n tag_1254:\n /* \"#utility.yul\":10225:10288 */\n swap2\n pop\n /* \"#utility.yul\":10179:10298 */\n pop\n /* \"#utility.yul\":9174:10305 */\n swap3\n swap6\n pop\n swap3\n swap6\n swap1\n swap4\n pop\n jump\t// out\n /* \"#utility.yul\":10311:10429 */\n tag_1038:\n /* \"#utility.yul\":10398:10422 */\n tag_1256\n /* \"#utility.yul\":10416:10421 */\n dup2\n /* \"#utility.yul\":10398:10422 */\n tag_1008\n jump\t// in\n tag_1256:\n /* \"#utility.yul\":10393:10396 */\n dup3\n /* \"#utility.yul\":10386:10423 */\n mstore\n /* \"#utility.yul\":10311:10429 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10435:10657 */\n tag_39:\n /* \"#utility.yul\":10528:10532 */\n 0x00\n /* \"#utility.yul\":10566:10568 */\n 0x20\n /* \"#utility.yul\":10555:10564 */\n dup3\n /* \"#utility.yul\":10551:10569 */\n add\n /* \"#utility.yul\":10543:10569 */\n swap1\n pop\n /* \"#utility.yul\":10579:10650 */\n tag_1258\n /* \"#utility.yul\":10647:10648 */\n 0x00\n /* \"#utility.yul\":10636:10645 */\n dup4\n /* \"#utility.yul\":10632:10649 */\n add\n /* \"#utility.yul\":10623:10629 */\n dup5\n /* \"#utility.yul\":10579:10650 */\n tag_1038\n jump\t// in\n tag_1258:\n /* \"#utility.yul\":10435:10657 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10663:10785 */\n tag_1039:\n /* \"#utility.yul\":10736:10760 */\n tag_1260\n /* \"#utility.yul\":10754:10759 */\n dup2\n /* \"#utility.yul\":10736:10760 */\n tag_1028\n jump\t// in\n tag_1260:\n /* \"#utility.yul\":10729:10734 */\n dup2\n /* \"#utility.yul\":10726:10761 */\n eq\n /* \"#utility.yul\":10716:10779 */\n tag_1261\n jumpi\n /* \"#utility.yul\":10775:10776 */\n 0x00\n /* \"#utility.yul\":10772:10773 */\n dup1\n /* \"#utility.yul\":10765:10777 */\n revert\n /* \"#utility.yul\":10716:10779 */\n tag_1261:\n /* \"#utility.yul\":10663:10785 */\n pop\n jump\t// out\n /* \"#utility.yul\":10791:10930 */\n tag_1040:\n /* \"#utility.yul\":10837:10842 */\n 0x00\n /* \"#utility.yul\":10875:10881 */\n dup2\n /* \"#utility.yul\":10862:10882 */\n calldataload\n /* \"#utility.yul\":10853:10882 */\n swap1\n pop\n /* \"#utility.yul\":10891:10924 */\n tag_1263\n /* \"#utility.yul\":10918:10923 */\n dup2\n /* \"#utility.yul\":10891:10924 */\n tag_1039\n jump\t// in\n tag_1263:\n /* \"#utility.yul\":10791:10930 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10936:11905 */\n tag_42:\n /* \"#utility.yul\":11044:11050 */\n 0x00\n /* \"#utility.yul\":11052:11058 */\n dup1\n /* \"#utility.yul\":11060:11066 */\n 0x00\n /* \"#utility.yul\":11068:11074 */\n dup1\n /* \"#utility.yul\":11117:11120 */\n 0x80\n /* \"#utility.yul\":11105:11114 */\n dup6\n /* \"#utility.yul\":11096:11103 */\n dup8\n /* \"#utility.yul\":11092:11115 */\n sub\n /* \"#utility.yul\":11088:11121 */\n slt\n /* \"#utility.yul\":11085:11205 */\n iszero\n tag_1265\n jumpi\n /* \"#utility.yul\":11124:11203 */\n tag_1266\n tag_1006\n jump\t// in\n tag_1266:\n /* \"#utility.yul\":11085:11205 */\n tag_1265:\n /* \"#utility.yul\":11244:11245 */\n 0x00\n /* \"#utility.yul\":11269:11322 */\n tag_1267\n /* \"#utility.yul\":11314:11321 */\n dup8\n /* \"#utility.yul\":11305:11311 */\n dup3\n /* \"#utility.yul\":11294:11303 */\n dup9\n /* \"#utility.yul\":11290:11312 */\n add\n /* \"#utility.yul\":11269:11322 */\n tag_1010\n jump\t// in\n tag_1267:\n /* \"#utility.yul\":11259:11322 */\n swap5\n pop\n /* \"#utility.yul\":11215:11332 */\n pop\n /* \"#utility.yul\":11399:11401 */\n 0x20\n /* \"#utility.yul\":11388:11397 */\n dup6\n /* \"#utility.yul\":11384:11402 */\n add\n /* \"#utility.yul\":11371:11403 */\n calldataload\n /* \"#utility.yul\":11430:11448 */\n 0xffffffffffffffff\n /* \"#utility.yul\":11422:11428 */\n dup2\n /* \"#utility.yul\":11419:11449 */\n gt\n /* \"#utility.yul\":11416:11533 */\n iszero\n tag_1268\n jumpi\n /* \"#utility.yul\":11452:11531 */\n tag_1269\n tag_1007\n jump\t// in\n tag_1269:\n /* \"#utility.yul\":11416:11533 */\n tag_1268:\n /* \"#utility.yul\":11557:11632 */\n tag_1270\n /* \"#utility.yul\":11624:11631 */\n dup8\n /* \"#utility.yul\":11615:11621 */\n dup3\n /* \"#utility.yul\":11604:11613 */\n dup9\n /* \"#utility.yul\":11600:11622 */\n add\n /* \"#utility.yul\":11557:11632 */\n tag_1034\n jump\t// in\n tag_1270:\n /* \"#utility.yul\":11547:11632 */\n swap4\n pop\n /* \"#utility.yul\":11342:11642 */\n pop\n /* \"#utility.yul\":11681:11683 */\n 0x40\n /* \"#utility.yul\":11707:11760 */\n tag_1271\n /* \"#utility.yul\":11752:11759 */\n dup8\n /* \"#utility.yul\":11743:11749 */\n dup3\n /* \"#utility.yul\":11732:11741 */\n dup9\n /* \"#utility.yul\":11728:11750 */\n add\n /* \"#utility.yul\":11707:11760 */\n tag_1040\n jump\t// in\n tag_1271:\n /* \"#utility.yul\":11697:11760 */\n swap3\n pop\n /* \"#utility.yul\":11652:11770 */\n pop\n /* \"#utility.yul\":11809:11811 */\n 0x60\n /* \"#utility.yul\":11835:11888 */\n tag_1272\n /* \"#utility.yul\":11880:11887 */\n dup8\n /* \"#utility.yul\":11871:11877 */\n dup3\n /* \"#utility.yul\":11860:11869 */\n dup9\n /* \"#utility.yul\":11856:11878 */\n add\n /* \"#utility.yul\":11835:11888 */\n tag_1010\n jump\t// in\n tag_1272:\n /* \"#utility.yul\":11825:11888 */\n swap2\n pop\n /* \"#utility.yul\":11780:11898 */\n pop\n /* \"#utility.yul\":10936:11905 */\n swap3\n swap6\n swap2\n swap5\n pop\n swap3\n pop\n jump\t// out\n /* \"#utility.yul\":11911:12025 */\n tag_1041:\n /* \"#utility.yul\":11978:11984 */\n 0x00\n /* \"#utility.yul\":12012:12017 */\n dup2\n /* \"#utility.yul\":12006:12018 */\n mload\n /* \"#utility.yul\":11996:12018 */\n swap1\n pop\n /* \"#utility.yul\":11911:12025 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12031:12215 */\n tag_1042:\n /* \"#utility.yul\":12130:12141 */\n 0x00\n /* \"#utility.yul\":12164:12170 */\n dup3\n /* \"#utility.yul\":12159:12162 */\n dup3\n /* \"#utility.yul\":12152:12171 */\n mstore\n /* \"#utility.yul\":12204:12208 */\n 0x20\n /* \"#utility.yul\":12199:12202 */\n dup3\n /* \"#utility.yul\":12195:12209 */\n add\n /* \"#utility.yul\":12180:12209 */\n swap1\n pop\n /* \"#utility.yul\":12031:12215 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12221:12353 */\n tag_1043:\n /* \"#utility.yul\":12288:12292 */\n 0x00\n /* \"#utility.yul\":12311:12314 */\n dup2\n /* \"#utility.yul\":12303:12314 */\n swap1\n pop\n /* \"#utility.yul\":12341:12345 */\n 0x20\n /* \"#utility.yul\":12336:12339 */\n dup3\n /* \"#utility.yul\":12332:12346 */\n add\n /* \"#utility.yul\":12324:12346 */\n swap1\n pop\n /* \"#utility.yul\":12221:12353 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12359:12467 */\n tag_1044:\n /* \"#utility.yul\":12436:12460 */\n tag_1277\n /* \"#utility.yul\":12454:12459 */\n dup2\n /* \"#utility.yul\":12436:12460 */\n tag_1008\n jump\t// in\n tag_1277:\n /* \"#utility.yul\":12431:12434 */\n dup3\n /* \"#utility.yul\":12424:12461 */\n mstore\n /* \"#utility.yul\":12359:12467 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12473:12652 */\n tag_1045:\n /* \"#utility.yul\":12542:12552 */\n 0x00\n /* \"#utility.yul\":12563:12609 */\n tag_1279\n /* \"#utility.yul\":12605:12608 */\n dup4\n /* \"#utility.yul\":12597:12603 */\n dup4\n /* \"#utility.yul\":12563:12609 */\n tag_1044\n jump\t// in\n tag_1279:\n /* \"#utility.yul\":12641:12645 */\n 0x20\n /* \"#utility.yul\":12636:12639 */\n dup4\n /* \"#utility.yul\":12632:12646 */\n add\n /* \"#utility.yul\":12618:12646 */\n swap1\n pop\n /* \"#utility.yul\":12473:12652 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12658:12771 */\n tag_1046:\n /* \"#utility.yul\":12728:12732 */\n 0x00\n /* \"#utility.yul\":12760:12764 */\n 0x20\n /* \"#utility.yul\":12755:12758 */\n dup3\n /* \"#utility.yul\":12751:12765 */\n add\n /* \"#utility.yul\":12743:12765 */\n swap1\n pop\n /* \"#utility.yul\":12658:12771 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12807:13539 */\n tag_1047:\n /* \"#utility.yul\":12926:12929 */\n 0x00\n /* \"#utility.yul\":12955:13009 */\n tag_1282\n /* \"#utility.yul\":13003:13008 */\n dup3\n /* \"#utility.yul\":12955:13009 */\n tag_1041\n jump\t// in\n tag_1282:\n /* \"#utility.yul\":13025:13111 */\n tag_1283\n /* \"#utility.yul\":13104:13110 */\n dup2\n /* \"#utility.yul\":13099:13102 */\n dup6\n /* \"#utility.yul\":13025:13111 */\n tag_1042\n jump\t// in\n tag_1283:\n /* \"#utility.yul\":13018:13111 */\n swap4\n pop\n /* \"#utility.yul\":13135:13191 */\n tag_1284\n /* \"#utility.yul\":13185:13190 */\n dup4\n /* \"#utility.yul\":13135:13191 */\n tag_1043\n jump\t// in\n tag_1284:\n /* \"#utility.yul\":13214:13221 */\n dup1\n /* \"#utility.yul\":13245:13246 */\n 0x00\n /* \"#utility.yul\":13230:13514 */\n tag_1285:\n /* \"#utility.yul\":13255:13261 */\n dup4\n /* \"#utility.yul\":13252:13253 */\n dup2\n /* \"#utility.yul\":13249:13262 */\n lt\n /* \"#utility.yul\":13230:13514 */\n iszero\n tag_1287\n jumpi\n /* \"#utility.yul\":13331:13337 */\n dup2\n /* \"#utility.yul\":13325:13338 */\n mload\n /* \"#utility.yul\":13358:13421 */\n tag_1288\n /* \"#utility.yul\":13417:13420 */\n dup9\n /* \"#utility.yul\":13402:13415 */\n dup3\n /* \"#utility.yul\":13358:13421 */\n tag_1045\n jump\t// in\n tag_1288:\n /* \"#utility.yul\":13351:13421 */\n swap8\n pop\n /* \"#utility.yul\":13444:13504 */\n tag_1289\n /* \"#utility.yul\":13497:13503 */\n dup4\n /* \"#utility.yul\":13444:13504 */\n tag_1046\n jump\t// in\n tag_1289:\n /* \"#utility.yul\":13434:13504 */\n swap3\n pop\n /* \"#utility.yul\":13290:13514 */\n pop\n /* \"#utility.yul\":13277:13278 */\n 0x01\n /* \"#utility.yul\":13274:13275 */\n dup2\n /* \"#utility.yul\":13270:13279 */\n add\n /* \"#utility.yul\":13265:13279 */\n swap1\n pop\n /* \"#utility.yul\":13230:13514 */\n jump(tag_1285)\n tag_1287:\n /* \"#utility.yul\":13234:13248 */\n pop\n /* \"#utility.yul\":13530:13533 */\n dup6\n /* \"#utility.yul\":13523:13533 */\n swap4\n pop\n /* \"#utility.yul\":12931:13539 */\n pop\n pop\n pop\n /* \"#utility.yul\":12807:13539 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13545:13918 */\n tag_45:\n /* \"#utility.yul\":13688:13692 */\n 0x00\n /* \"#utility.yul\":13726:13728 */\n 0x20\n /* \"#utility.yul\":13715:13724 */\n dup3\n /* \"#utility.yul\":13711:13729 */\n add\n /* \"#utility.yul\":13703:13729 */\n swap1\n pop\n /* \"#utility.yul\":13775:13784 */\n dup2\n /* \"#utility.yul\":13769:13773 */\n dup2\n /* \"#utility.yul\":13765:13785 */\n sub\n /* \"#utility.yul\":13761:13762 */\n 0x00\n /* \"#utility.yul\":13750:13759 */\n dup4\n /* \"#utility.yul\":13746:13763 */\n add\n /* \"#utility.yul\":13739:13786 */\n mstore\n /* \"#utility.yul\":13803:13911 */\n tag_1291\n /* \"#utility.yul\":13906:13910 */\n dup2\n /* \"#utility.yul\":13897:13903 */\n dup5\n /* \"#utility.yul\":13803:13911 */\n tag_1047\n jump\t// in\n tag_1291:\n /* \"#utility.yul\":13795:13911 */\n swap1\n pop\n /* \"#utility.yul\":13545:13918 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13924:15039 */\n tag_49:\n /* \"#utility.yul\":14041:14047 */\n 0x00\n /* \"#utility.yul\":14049:14055 */\n dup1\n /* \"#utility.yul\":14057:14063 */\n 0x00\n /* \"#utility.yul\":14065:14071 */\n dup1\n /* \"#utility.yul\":14073:14079 */\n 0x00\n /* \"#utility.yul\":14122:14125 */\n 0xa0\n /* \"#utility.yul\":14110:14119 */\n dup7\n /* \"#utility.yul\":14101:14108 */\n dup9\n /* \"#utility.yul\":14097:14120 */\n sub\n /* \"#utility.yul\":14093:14126 */\n slt\n /* \"#utility.yul\":14090:14210 */\n iszero\n tag_1293\n jumpi\n /* \"#utility.yul\":14129:14208 */\n tag_1294\n tag_1006\n jump\t// in\n tag_1294:\n /* \"#utility.yul\":14090:14210 */\n tag_1293:\n /* \"#utility.yul\":14249:14250 */\n 0x00\n /* \"#utility.yul\":14274:14327 */\n tag_1295\n /* \"#utility.yul\":14319:14326 */\n dup9\n /* \"#utility.yul\":14310:14316 */\n dup3\n /* \"#utility.yul\":14299:14308 */\n dup10\n /* \"#utility.yul\":14295:14317 */\n add\n /* \"#utility.yul\":14274:14327 */\n tag_1010\n jump\t// in\n tag_1295:\n /* \"#utility.yul\":14264:14327 */\n swap6\n pop\n /* \"#utility.yul\":14220:14337 */\n pop\n /* \"#utility.yul\":14376:14378 */\n 0x20\n /* \"#utility.yul\":14402:14455 */\n tag_1296\n /* \"#utility.yul\":14447:14454 */\n dup9\n /* \"#utility.yul\":14438:14444 */\n dup3\n /* \"#utility.yul\":14427:14436 */\n dup10\n /* \"#utility.yul\":14423:14445 */\n add\n /* \"#utility.yul\":14402:14455 */\n tag_1010\n jump\t// in\n tag_1296:\n /* \"#utility.yul\":14392:14455 */\n swap5\n pop\n /* \"#utility.yul\":14347:14465 */\n pop\n /* \"#utility.yul\":14532:14534 */\n 0x40\n /* \"#utility.yul\":14521:14530 */\n dup7\n /* \"#utility.yul\":14517:14535 */\n add\n /* \"#utility.yul\":14504:14536 */\n calldataload\n /* \"#utility.yul\":14563:14581 */\n 0xffffffffffffffff\n /* \"#utility.yul\":14555:14561 */\n dup2\n /* \"#utility.yul\":14552:14582 */\n gt\n /* \"#utility.yul\":14549:14666 */\n iszero\n tag_1297\n jumpi\n /* \"#utility.yul\":14585:14664 */\n tag_1298\n tag_1007\n jump\t// in\n tag_1298:\n /* \"#utility.yul\":14549:14666 */\n tag_1297:\n /* \"#utility.yul\":14690:14765 */\n tag_1299\n /* \"#utility.yul\":14757:14764 */\n dup9\n /* \"#utility.yul\":14748:14754 */\n dup3\n /* \"#utility.yul\":14737:14746 */\n dup10\n /* \"#utility.yul\":14733:14755 */\n add\n /* \"#utility.yul\":14690:14765 */\n tag_1034\n jump\t// in\n tag_1299:\n /* \"#utility.yul\":14680:14765 */\n swap4\n pop\n /* \"#utility.yul\":14475:14775 */\n pop\n /* \"#utility.yul\":14814:14816 */\n 0x60\n /* \"#utility.yul\":14840:14893 */\n tag_1300\n /* \"#utility.yul\":14885:14892 */\n dup9\n /* \"#utility.yul\":14876:14882 */\n dup3\n /* \"#utility.yul\":14865:14874 */\n dup10\n /* \"#utility.yul\":14861:14883 */\n add\n /* \"#utility.yul\":14840:14893 */\n tag_1040\n jump\t// in\n tag_1300:\n /* \"#utility.yul\":14830:14893 */\n swap3\n pop\n /* \"#utility.yul\":14785:14903 */\n pop\n /* \"#utility.yul\":14942:14945 */\n 0x80\n /* \"#utility.yul\":14969:15022 */\n tag_1301\n /* \"#utility.yul\":15014:15021 */\n dup9\n /* \"#utility.yul\":15005:15011 */\n dup3\n /* \"#utility.yul\":14994:15003 */\n dup10\n /* \"#utility.yul\":14990:15012 */\n add\n /* \"#utility.yul\":14969:15022 */\n tag_1010\n jump\t// in\n tag_1301:\n /* \"#utility.yul\":14959:15022 */\n swap2\n pop\n /* \"#utility.yul\":14913:15032 */\n pop\n /* \"#utility.yul\":13924:15039 */\n swap3\n swap6\n pop\n swap3\n swap6\n swap1\n swap4\n pop\n jump\t// out\n /* \"#utility.yul\":15045:15692 */\n tag_65:\n /* \"#utility.yul\":15136:15142 */\n 0x00\n /* \"#utility.yul\":15144:15150 */\n dup1\n /* \"#utility.yul\":15152:15158 */\n 0x00\n /* \"#utility.yul\":15201:15203 */\n 0x60\n /* \"#utility.yul\":15189:15198 */\n dup5\n /* \"#utility.yul\":15180:15187 */\n dup7\n /* \"#utility.yul\":15176:15199 */\n sub\n /* \"#utility.yul\":15172:15204 */\n slt\n /* \"#utility.yul\":15169:15288 */\n iszero\n tag_1303\n jumpi\n /* \"#utility.yul\":15207:15286 */\n tag_1304\n tag_1006\n jump\t// in\n tag_1304:\n /* \"#utility.yul\":15169:15288 */\n tag_1303:\n /* \"#utility.yul\":15327:15328 */\n 0x00\n /* \"#utility.yul\":15352:15419 */\n tag_1305\n /* \"#utility.yul\":15411:15418 */\n dup7\n /* \"#utility.yul\":15402:15408 */\n dup3\n /* \"#utility.yul\":15391:15400 */\n dup8\n /* \"#utility.yul\":15387:15409 */\n add\n /* \"#utility.yul\":15352:15419 */\n tag_1031\n jump\t// in\n tag_1305:\n /* \"#utility.yul\":15342:15419 */\n swap4\n pop\n /* \"#utility.yul\":15298:15429 */\n pop\n /* \"#utility.yul\":15468:15470 */\n 0x20\n /* \"#utility.yul\":15494:15547 */\n tag_1306\n /* \"#utility.yul\":15539:15546 */\n dup7\n /* \"#utility.yul\":15530:15536 */\n dup3\n /* \"#utility.yul\":15519:15528 */\n dup8\n /* \"#utility.yul\":15515:15537 */\n add\n /* \"#utility.yul\":15494:15547 */\n tag_1040\n jump\t// in\n tag_1306:\n /* \"#utility.yul\":15484:15547 */\n swap3\n pop\n /* \"#utility.yul\":15439:15557 */\n pop\n /* \"#utility.yul\":15596:15598 */\n 0x40\n /* \"#utility.yul\":15622:15675 */\n tag_1307\n /* \"#utility.yul\":15667:15674 */\n dup7\n /* \"#utility.yul\":15658:15664 */\n dup3\n /* \"#utility.yul\":15647:15656 */\n dup8\n /* \"#utility.yul\":15643:15665 */\n add\n /* \"#utility.yul\":15622:15675 */\n tag_1010\n jump\t// in\n tag_1307:\n /* \"#utility.yul\":15612:15675 */\n swap2\n pop\n /* \"#utility.yul\":15567:15685 */\n pop\n /* \"#utility.yul\":15045:15692 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":15698:15789 */\n tag_1048:\n /* \"#utility.yul\":15734:15741 */\n 0x00\n /* \"#utility.yul\":15774:15782 */\n 0xffffff\n /* \"#utility.yul\":15767:15772 */\n dup3\n /* \"#utility.yul\":15763:15783 */\n and\n /* \"#utility.yul\":15752:15783 */\n swap1\n pop\n /* \"#utility.yul\":15698:15789 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":15795:15915 */\n tag_1049:\n /* \"#utility.yul\":15867:15890 */\n tag_1310\n /* \"#utility.yul\":15884:15889 */\n dup2\n /* \"#utility.yul\":15867:15890 */\n tag_1048\n jump\t// in\n tag_1310:\n /* \"#utility.yul\":15860:15865 */\n dup2\n /* \"#utility.yul\":15857:15891 */\n eq\n /* \"#utility.yul\":15847:15909 */\n tag_1311\n jumpi\n /* \"#utility.yul\":15905:15906 */\n 0x00\n /* \"#utility.yul\":15902:15903 */\n dup1\n /* \"#utility.yul\":15895:15907 */\n revert\n /* \"#utility.yul\":15847:15909 */\n tag_1311:\n /* \"#utility.yul\":15795:15915 */\n pop\n jump\t// out\n /* \"#utility.yul\":15921:16058 */\n tag_1050:\n /* \"#utility.yul\":15966:15971 */\n 0x00\n /* \"#utility.yul\":16004:16010 */\n dup2\n /* \"#utility.yul\":15991:16011 */\n calldataload\n /* \"#utility.yul\":15982:16011 */\n swap1\n pop\n /* \"#utility.yul\":16020:16052 */\n tag_1313\n /* \"#utility.yul\":16046:16051 */\n dup2\n /* \"#utility.yul\":16020:16052 */\n tag_1049\n jump\t// in\n tag_1313:\n /* \"#utility.yul\":15921:16058 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16064:16153 */\n tag_1051:\n /* \"#utility.yul\":16100:16107 */\n 0x00\n /* \"#utility.yul\":16140:16146 */\n 0xffff\n /* \"#utility.yul\":16133:16138 */\n dup3\n /* \"#utility.yul\":16129:16147 */\n and\n /* \"#utility.yul\":16118:16147 */\n swap1\n pop\n /* \"#utility.yul\":16064:16153 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":16159:16279 */\n tag_1052:\n /* \"#utility.yul\":16231:16254 */\n tag_1316\n /* \"#utility.yul\":16248:16253 */\n dup2\n /* \"#utility.yul\":16231:16254 */\n tag_1051\n jump\t// in\n tag_1316:\n /* \"#utility.yul\":16224:16229 */\n dup2\n /* \"#utility.yul\":16221:16255 */\n eq\n /* \"#utility.yul\":16211:16273 */\n tag_1317\n jumpi\n /* \"#utility.yul\":16269:16270 */\n 0x00\n /* \"#utility.yul\":16266:16267 */\n dup1\n /* \"#utility.yul\":16259:16271 */\n revert\n /* \"#utility.yul\":16211:16273 */\n tag_1317:\n /* \"#utility.yul\":16159:16279 */\n pop\n jump\t// out\n /* \"#utility.yul\":16285:16422 */\n tag_1053:\n /* \"#utility.yul\":16330:16335 */\n 0x00\n /* \"#utility.yul\":16368:16374 */\n dup2\n /* \"#utility.yul\":16355:16375 */\n calldataload\n /* \"#utility.yul\":16346:16375 */\n swap1\n pop\n /* \"#utility.yul\":16384:16416 */\n tag_1319\n /* \"#utility.yul\":16410:16415 */\n dup2\n /* \"#utility.yul\":16384:16416 */\n tag_1052\n jump\t// in\n tag_1319:\n /* \"#utility.yul\":16285:16422 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16428:17245 */\n tag_70:\n /* \"#utility.yul\":16540:16546 */\n 0x00\n /* \"#utility.yul\":16548:16554 */\n dup1\n /* \"#utility.yul\":16556:16562 */\n 0x00\n /* \"#utility.yul\":16564:16570 */\n dup1\n /* \"#utility.yul\":16613:16616 */\n 0x80\n /* \"#utility.yul\":16601:16610 */\n dup6\n /* \"#utility.yul\":16592:16599 */\n dup8\n /* \"#utility.yul\":16588:16611 */\n sub\n /* \"#utility.yul\":16584:16617 */\n slt\n /* \"#utility.yul\":16581:16701 */\n iszero\n tag_1321\n jumpi\n /* \"#utility.yul\":16620:16699 */\n tag_1322\n tag_1006\n jump\t// in\n tag_1322:\n /* \"#utility.yul\":16581:16701 */\n tag_1321:\n /* \"#utility.yul\":16740:16741 */\n 0x00\n /* \"#utility.yul\":16765:16832 */\n tag_1323\n /* \"#utility.yul\":16824:16831 */\n dup8\n /* \"#utility.yul\":16815:16821 */\n dup3\n /* \"#utility.yul\":16804:16813 */\n dup9\n /* \"#utility.yul\":16800:16822 */\n add\n /* \"#utility.yul\":16765:16832 */\n tag_1031\n jump\t// in\n tag_1323:\n /* \"#utility.yul\":16755:16832 */\n swap5\n pop\n /* \"#utility.yul\":16711:16842 */\n pop\n /* \"#utility.yul\":16881:16883 */\n 0x20\n /* \"#utility.yul\":16907:16974 */\n tag_1324\n /* \"#utility.yul\":16966:16973 */\n dup8\n /* \"#utility.yul\":16957:16963 */\n dup3\n /* \"#utility.yul\":16946:16955 */\n dup9\n /* \"#utility.yul\":16942:16964 */\n add\n /* \"#utility.yul\":16907:16974 */\n tag_1031\n jump\t// in\n tag_1324:\n /* \"#utility.yul\":16897:16974 */\n swap4\n pop\n /* \"#utility.yul\":16852:16984 */\n pop\n /* \"#utility.yul\":17023:17025 */\n 0x40\n /* \"#utility.yul\":17049:17101 */\n tag_1325\n /* \"#utility.yul\":17093:17100 */\n dup8\n /* \"#utility.yul\":17084:17090 */\n dup3\n /* \"#utility.yul\":17073:17082 */\n dup9\n /* \"#utility.yul\":17069:17091 */\n add\n /* \"#utility.yul\":17049:17101 */\n tag_1050\n jump\t// in\n tag_1325:\n /* \"#utility.yul\":17039:17101 */\n swap3\n pop\n /* \"#utility.yul\":16994:17111 */\n pop\n /* \"#utility.yul\":17150:17152 */\n 0x60\n /* \"#utility.yul\":17176:17228 */\n tag_1326\n /* \"#utility.yul\":17220:17227 */\n dup8\n /* \"#utility.yul\":17211:17217 */\n dup3\n /* \"#utility.yul\":17200:17209 */\n dup9\n /* \"#utility.yul\":17196:17218 */\n add\n /* \"#utility.yul\":17176:17228 */\n tag_1053\n jump\t// in\n tag_1326:\n /* \"#utility.yul\":17166:17228 */\n swap2\n pop\n /* \"#utility.yul\":17121:17238 */\n pop\n /* \"#utility.yul\":16428:17245 */\n swap3\n swap6\n swap2\n swap5\n pop\n swap3\n pop\n jump\t// out\n /* \"#utility.yul\":17251:17311 */\n tag_1054:\n /* \"#utility.yul\":17279:17282 */\n 0x00\n /* \"#utility.yul\":17300:17305 */\n dup2\n /* \"#utility.yul\":17293:17305 */\n swap1\n pop\n /* \"#utility.yul\":17251:17311 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":17317:17459 */\n tag_1055:\n /* \"#utility.yul\":17367:17376 */\n 0x00\n /* \"#utility.yul\":17400:17453 */\n tag_1329\n /* \"#utility.yul\":17418:17452 */\n tag_1330\n /* \"#utility.yul\":17427:17451 */\n tag_1331\n /* \"#utility.yul\":17445:17450 */\n dup5\n /* \"#utility.yul\":17427:17451 */\n tag_1027\n jump\t// in\n tag_1331:\n /* \"#utility.yul\":17418:17452 */\n tag_1054\n jump\t// in\n tag_1330:\n /* \"#utility.yul\":17400:17453 */\n tag_1027\n jump\t// in\n tag_1329:\n /* \"#utility.yul\":17387:17453 */\n swap1\n pop\n /* \"#utility.yul\":17317:17459 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":17465:17591 */\n tag_1056:\n /* \"#utility.yul\":17515:17524 */\n 0x00\n /* \"#utility.yul\":17548:17585 */\n tag_1333\n /* \"#utility.yul\":17579:17584 */\n dup3\n /* \"#utility.yul\":17548:17585 */\n tag_1055\n jump\t// in\n tag_1333:\n /* \"#utility.yul\":17535:17585 */\n swap1\n pop\n /* \"#utility.yul\":17465:17591 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":17597:17739 */\n tag_1057:\n /* \"#utility.yul\":17663:17672 */\n 0x00\n /* \"#utility.yul\":17696:17733 */\n tag_1335\n /* \"#utility.yul\":17727:17732 */\n dup3\n /* \"#utility.yul\":17696:17733 */\n tag_1056\n jump\t// in\n tag_1335:\n /* \"#utility.yul\":17683:17733 */\n swap1\n pop\n /* \"#utility.yul\":17597:17739 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":17745:17908 */\n tag_1058:\n /* \"#utility.yul\":17848:17901 */\n tag_1337\n /* \"#utility.yul\":17895:17900 */\n dup2\n /* \"#utility.yul\":17848:17901 */\n tag_1057\n jump\t// in\n tag_1337:\n /* \"#utility.yul\":17843:17846 */\n dup3\n /* \"#utility.yul\":17836:17902 */\n mstore\n /* \"#utility.yul\":17745:17908 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":17914:18168 */\n tag_73:\n /* \"#utility.yul\":18023:18027 */\n 0x00\n /* \"#utility.yul\":18061:18063 */\n 0x20\n /* \"#utility.yul\":18050:18059 */\n dup3\n /* \"#utility.yul\":18046:18064 */\n add\n /* \"#utility.yul\":18038:18064 */\n swap1\n pop\n /* \"#utility.yul\":18074:18161 */\n tag_1339\n /* \"#utility.yul\":18158:18159 */\n 0x00\n /* \"#utility.yul\":18147:18156 */\n dup4\n /* \"#utility.yul\":18143:18160 */\n add\n /* \"#utility.yul\":18134:18140 */\n dup5\n /* \"#utility.yul\":18074:18161 */\n tag_1058\n jump\t// in\n tag_1339:\n /* \"#utility.yul\":17914:18168 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18174:18317 */\n tag_1059:\n /* \"#utility.yul\":18241:18250 */\n 0x00\n /* \"#utility.yul\":18274:18311 */\n tag_1341\n /* \"#utility.yul\":18305:18310 */\n dup3\n /* \"#utility.yul\":18274:18311 */\n tag_1056\n jump\t// in\n tag_1341:\n /* \"#utility.yul\":18261:18311 */\n swap1\n pop\n /* \"#utility.yul\":18174:18317 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":18323:18488 */\n tag_1060:\n /* \"#utility.yul\":18427:18481 */\n tag_1343\n /* \"#utility.yul\":18475:18480 */\n dup2\n /* \"#utility.yul\":18427:18481 */\n tag_1059\n jump\t// in\n tag_1343:\n /* \"#utility.yul\":18422:18425 */\n dup3\n /* \"#utility.yul\":18415:18482 */\n mstore\n /* \"#utility.yul\":18323:18488 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18494:18750 */\n tag_78:\n /* \"#utility.yul\":18604:18608 */\n 0x00\n /* \"#utility.yul\":18642:18644 */\n 0x20\n /* \"#utility.yul\":18631:18640 */\n dup3\n /* \"#utility.yul\":18627:18645 */\n add\n /* \"#utility.yul\":18619:18645 */\n swap1\n pop\n /* \"#utility.yul\":18655:18743 */\n tag_1345\n /* \"#utility.yul\":18740:18741 */\n 0x00\n /* \"#utility.yul\":18729:18738 */\n dup4\n /* \"#utility.yul\":18725:18742 */\n add\n /* \"#utility.yul\":18716:18722 */\n dup5\n /* \"#utility.yul\":18655:18743 */\n tag_1060\n jump\t// in\n tag_1345:\n /* \"#utility.yul\":18494:18750 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18756:20567 */\n tag_85:\n /* \"#utility.yul\":18949:18955 */\n 0x00\n /* \"#utility.yul\":18957:18963 */\n dup1\n /* \"#utility.yul\":18965:18971 */\n 0x00\n /* \"#utility.yul\":18973:18979 */\n dup1\n /* \"#utility.yul\":18981:18987 */\n 0x00\n /* \"#utility.yul\":18989:18995 */\n dup1\n /* \"#utility.yul\":18997:19003 */\n 0x00\n /* \"#utility.yul\":19005:19011 */\n dup1\n /* \"#utility.yul\":19054:19057 */\n 0x0100\n /* \"#utility.yul\":19042:19051 */\n dup10\n /* \"#utility.yul\":19033:19040 */\n dup12\n /* \"#utility.yul\":19029:19052 */\n sub\n /* \"#utility.yul\":19025:19058 */\n slt\n /* \"#utility.yul\":19022:19142 */\n iszero\n tag_1347\n jumpi\n /* \"#utility.yul\":19061:19140 */\n tag_1348\n tag_1006\n jump\t// in\n tag_1348:\n /* \"#utility.yul\":19022:19142 */\n tag_1347:\n /* \"#utility.yul\":19181:19182 */\n 0x00\n /* \"#utility.yul\":19206:19273 */\n tag_1349\n /* \"#utility.yul\":19265:19272 */\n dup12\n /* \"#utility.yul\":19256:19262 */\n dup3\n /* \"#utility.yul\":19245:19254 */\n dup13\n /* \"#utility.yul\":19241:19263 */\n add\n /* \"#utility.yul\":19206:19273 */\n tag_1031\n jump\t// in\n tag_1349:\n /* \"#utility.yul\":19196:19273 */\n swap9\n pop\n /* \"#utility.yul\":19152:19283 */\n pop\n /* \"#utility.yul\":19322:19324 */\n 0x20\n /* \"#utility.yul\":19348:19400 */\n tag_1350\n /* \"#utility.yul\":19392:19399 */\n dup12\n /* \"#utility.yul\":19383:19389 */\n dup3\n /* \"#utility.yul\":19372:19381 */\n dup13\n /* \"#utility.yul\":19368:19390 */\n add\n /* \"#utility.yul\":19348:19400 */\n tag_1053\n jump\t// in\n tag_1350:\n /* \"#utility.yul\":19338:19400 */\n swap8\n pop\n /* \"#utility.yul\":19293:19410 */\n pop\n /* \"#utility.yul\":19449:19451 */\n 0x40\n /* \"#utility.yul\":19475:19528 */\n tag_1351\n /* \"#utility.yul\":19520:19527 */\n dup12\n /* \"#utility.yul\":19511:19517 */\n dup3\n /* \"#utility.yul\":19500:19509 */\n dup13\n /* \"#utility.yul\":19496:19518 */\n add\n /* \"#utility.yul\":19475:19528 */\n tag_1010\n jump\t// in\n tag_1351:\n /* \"#utility.yul\":19465:19528 */\n swap7\n pop\n /* \"#utility.yul\":19420:19538 */\n pop\n /* \"#utility.yul\":19577:19579 */\n 0x60\n /* \"#utility.yul\":19603:19656 */\n tag_1352\n /* \"#utility.yul\":19648:19655 */\n dup12\n /* \"#utility.yul\":19639:19645 */\n dup3\n /* \"#utility.yul\":19628:19637 */\n dup13\n /* \"#utility.yul\":19624:19646 */\n add\n /* \"#utility.yul\":19603:19656 */\n tag_1010\n jump\t// in\n tag_1352:\n /* \"#utility.yul\":19593:19656 */\n swap6\n pop\n /* \"#utility.yul\":19548:19666 */\n pop\n /* \"#utility.yul\":19733:19736 */\n 0x80\n /* \"#utility.yul\":19722:19731 */\n dup10\n /* \"#utility.yul\":19718:19737 */\n add\n /* \"#utility.yul\":19705:19738 */\n calldataload\n /* \"#utility.yul\":19765:19783 */\n 0xffffffffffffffff\n /* \"#utility.yul\":19757:19763 */\n dup2\n /* \"#utility.yul\":19754:19784 */\n gt\n /* \"#utility.yul\":19751:19868 */\n iszero\n tag_1353\n jumpi\n /* \"#utility.yul\":19787:19866 */\n tag_1354\n tag_1007\n jump\t// in\n tag_1354:\n /* \"#utility.yul\":19751:19868 */\n tag_1353:\n /* \"#utility.yul\":19892:19970 */\n tag_1355\n /* \"#utility.yul\":19962:19969 */\n dup12\n /* \"#utility.yul\":19953:19959 */\n dup3\n /* \"#utility.yul\":19942:19951 */\n dup13\n /* \"#utility.yul\":19938:19960 */\n add\n /* \"#utility.yul\":19892:19970 */\n tag_1020\n jump\t// in\n tag_1355:\n /* \"#utility.yul\":19882:19970 */\n swap5\n pop\n /* \"#utility.yul\":19676:19980 */\n pop\n /* \"#utility.yul\":20047:20050 */\n 0xa0\n /* \"#utility.yul\":20036:20045 */\n dup10\n /* \"#utility.yul\":20032:20051 */\n add\n /* \"#utility.yul\":20019:20052 */\n calldataload\n /* \"#utility.yul\":20079:20097 */\n 0xffffffffffffffff\n /* \"#utility.yul\":20071:20077 */\n dup2\n /* \"#utility.yul\":20068:20098 */\n gt\n /* \"#utility.yul\":20065:20182 */\n iszero\n tag_1356\n jumpi\n /* \"#utility.yul\":20101:20180 */\n tag_1357\n tag_1007\n jump\t// in\n tag_1357:\n /* \"#utility.yul\":20065:20182 */\n tag_1356:\n /* \"#utility.yul\":20206:20284 */\n tag_1358\n /* \"#utility.yul\":20276:20283 */\n dup12\n /* \"#utility.yul\":20267:20273 */\n dup3\n /* \"#utility.yul\":20256:20265 */\n dup13\n /* \"#utility.yul\":20252:20274 */\n add\n /* \"#utility.yul\":20206:20284 */\n tag_1020\n jump\t// in\n tag_1358:\n /* \"#utility.yul\":20196:20284 */\n swap4\n pop\n /* \"#utility.yul\":19990:20294 */\n pop\n /* \"#utility.yul\":20333:20336 */\n 0xc0\n /* \"#utility.yul\":20360:20421 */\n tag_1359\n /* \"#utility.yul\":20413:20420 */\n dup12\n /* \"#utility.yul\":20404:20410 */\n dup3\n /* \"#utility.yul\":20393:20402 */\n dup13\n /* \"#utility.yul\":20389:20411 */\n add\n /* \"#utility.yul\":20360:20421 */\n tag_1037\n jump\t// in\n tag_1359:\n /* \"#utility.yul\":20350:20421 */\n swap3\n pop\n /* \"#utility.yul\":20304:20431 */\n pop\n /* \"#utility.yul\":20470:20473 */\n 0xe0\n /* \"#utility.yul\":20497:20550 */\n tag_1360\n /* \"#utility.yul\":20542:20549 */\n dup12\n /* \"#utility.yul\":20533:20539 */\n dup3\n /* \"#utility.yul\":20522:20531 */\n dup13\n /* \"#utility.yul\":20518:20540 */\n add\n /* \"#utility.yul\":20497:20550 */\n tag_1010\n jump\t// in\n tag_1360:\n /* \"#utility.yul\":20487:20550 */\n swap2\n pop\n /* \"#utility.yul\":20441:20560 */\n pop\n /* \"#utility.yul\":18756:20567 */\n swap3\n swap6\n swap9\n pop\n swap3\n swap6\n swap9\n swap1\n swap4\n swap7\n pop\n jump\t// out\n /* \"#utility.yul\":20573:20905 */\n tag_88:\n /* \"#utility.yul\":20694:20698 */\n 0x00\n /* \"#utility.yul\":20732:20734 */\n 0x40\n /* \"#utility.yul\":20721:20730 */\n dup3\n /* \"#utility.yul\":20717:20735 */\n add\n /* \"#utility.yul\":20709:20735 */\n swap1\n pop\n /* \"#utility.yul\":20745:20816 */\n tag_1362\n /* \"#utility.yul\":20813:20814 */\n 0x00\n /* \"#utility.yul\":20802:20811 */\n dup4\n /* \"#utility.yul\":20798:20815 */\n add\n /* \"#utility.yul\":20789:20795 */\n dup6\n /* \"#utility.yul\":20745:20816 */\n tag_1038\n jump\t// in\n tag_1362:\n /* \"#utility.yul\":20826:20898 */\n tag_1363\n /* \"#utility.yul\":20894:20896 */\n 0x20\n /* \"#utility.yul\":20883:20892 */\n dup4\n /* \"#utility.yul\":20879:20897 */\n add\n /* \"#utility.yul\":20870:20876 */\n dup5\n /* \"#utility.yul\":20826:20898 */\n tag_1038\n jump\t// in\n tag_1363:\n /* \"#utility.yul\":20573:20905 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":20911:21056 */\n tag_1061:\n /* \"#utility.yul\":20980:20989 */\n 0x00\n /* \"#utility.yul\":21013:21050 */\n tag_1365\n /* \"#utility.yul\":21044:21049 */\n dup3\n /* \"#utility.yul\":21013:21050 */\n tag_1056\n jump\t// in\n tag_1365:\n /* \"#utility.yul\":21000:21050 */\n swap1\n pop\n /* \"#utility.yul\":20911:21056 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":21062:21231 */\n tag_1062:\n /* \"#utility.yul\":21168:21224 */\n tag_1367\n /* \"#utility.yul\":21218:21223 */\n dup2\n /* \"#utility.yul\":21168:21224 */\n tag_1061\n jump\t// in\n tag_1367:\n /* \"#utility.yul\":21163:21166 */\n dup3\n /* \"#utility.yul\":21156:21225 */\n mstore\n /* \"#utility.yul\":21062:21231 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":21237:21497 */\n tag_93:\n /* \"#utility.yul\":21349:21353 */\n 0x00\n /* \"#utility.yul\":21387:21389 */\n 0x20\n /* \"#utility.yul\":21376:21385 */\n dup3\n /* \"#utility.yul\":21372:21390 */\n add\n /* \"#utility.yul\":21364:21390 */\n swap1\n pop\n /* \"#utility.yul\":21400:21490 */\n tag_1369\n /* \"#utility.yul\":21487:21488 */\n 0x00\n /* \"#utility.yul\":21476:21485 */\n dup4\n /* \"#utility.yul\":21472:21489 */\n add\n /* \"#utility.yul\":21463:21469 */\n dup5\n /* \"#utility.yul\":21400:21490 */\n tag_1062\n jump\t// in\n tag_1369:\n /* \"#utility.yul\":21237:21497 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":21503:21620 */\n tag_1063:\n /* \"#utility.yul\":21612:21613 */\n 0x00\n /* \"#utility.yul\":21609:21610 */\n dup1\n /* \"#utility.yul\":21602:21614 */\n revert\n /* \"#utility.yul\":21670:21914 */\n tag_1064:\n /* \"#utility.yul\":21755:21760 */\n 0x00\n /* \"#utility.yul\":21796:21799 */\n 0x01e0\n /* \"#utility.yul\":21787:21793 */\n dup3\n /* \"#utility.yul\":21782:21785 */\n dup5\n /* \"#utility.yul\":21778:21794 */\n sub\n /* \"#utility.yul\":21774:21800 */\n slt\n /* \"#utility.yul\":21771:21884 */\n iszero\n tag_1372\n jumpi\n /* \"#utility.yul\":21803:21882 */\n tag_1373\n tag_1063\n jump\t// in\n tag_1373:\n /* \"#utility.yul\":21771:21884 */\n tag_1372:\n /* \"#utility.yul\":21902:21908 */\n dup2\n /* \"#utility.yul\":21893:21908 */\n swap1\n pop\n /* \"#utility.yul\":21670:21914 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":21920:22487 */\n tag_96:\n /* \"#utility.yul\":22018:22024 */\n 0x00\n /* \"#utility.yul\":22067:22069 */\n 0x20\n /* \"#utility.yul\":22055:22064 */\n dup3\n /* \"#utility.yul\":22046:22053 */\n dup5\n /* \"#utility.yul\":22042:22065 */\n sub\n /* \"#utility.yul\":22038:22070 */\n slt\n /* \"#utility.yul\":22035:22154 */\n iszero\n tag_1375\n jumpi\n /* \"#utility.yul\":22073:22152 */\n tag_1376\n tag_1006\n jump\t// in\n tag_1376:\n /* \"#utility.yul\":22035:22154 */\n tag_1375:\n /* \"#utility.yul\":22221:22222 */\n 0x00\n /* \"#utility.yul\":22210:22219 */\n dup3\n /* \"#utility.yul\":22206:22223 */\n add\n /* \"#utility.yul\":22193:22224 */\n calldataload\n /* \"#utility.yul\":22251:22269 */\n 0xffffffffffffffff\n /* \"#utility.yul\":22243:22249 */\n dup2\n /* \"#utility.yul\":22240:22270 */\n gt\n /* \"#utility.yul\":22237:22354 */\n iszero\n tag_1377\n jumpi\n /* \"#utility.yul\":22273:22352 */\n tag_1378\n tag_1007\n jump\t// in\n tag_1378:\n /* \"#utility.yul\":22237:22354 */\n tag_1377:\n /* \"#utility.yul\":22378:22470 */\n tag_1379\n /* \"#utility.yul\":22462:22469 */\n dup5\n /* \"#utility.yul\":22453:22459 */\n dup3\n /* \"#utility.yul\":22442:22451 */\n dup6\n /* \"#utility.yul\":22438:22460 */\n add\n /* \"#utility.yul\":22378:22470 */\n tag_1064\n jump\t// in\n tag_1379:\n /* \"#utility.yul\":22368:22470 */\n swap2\n pop\n /* \"#utility.yul\":22164:22480 */\n pop\n /* \"#utility.yul\":21920:22487 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":22493:23570 */\n tag_99:\n /* \"#utility.yul\":22826:22830 */\n 0x00\n /* \"#utility.yul\":22864:22867 */\n 0xc0\n /* \"#utility.yul\":22853:22862 */\n dup3\n /* \"#utility.yul\":22849:22868 */\n add\n /* \"#utility.yul\":22841:22868 */\n swap1\n pop\n /* \"#utility.yul\":22878:22949 */\n tag_1381\n /* \"#utility.yul\":22946:22947 */\n 0x00\n /* \"#utility.yul\":22935:22944 */\n dup4\n /* \"#utility.yul\":22931:22948 */\n add\n /* \"#utility.yul\":22922:22928 */\n dup10\n /* \"#utility.yul\":22878:22949 */\n tag_1038\n jump\t// in\n tag_1381:\n /* \"#utility.yul\":22959:23031 */\n tag_1382\n /* \"#utility.yul\":23027:23029 */\n 0x20\n /* \"#utility.yul\":23016:23025 */\n dup4\n /* \"#utility.yul\":23012:23030 */\n add\n /* \"#utility.yul\":23003:23009 */\n dup9\n /* \"#utility.yul\":22959:23031 */\n tag_1038\n jump\t// in\n tag_1382:\n /* \"#utility.yul\":23041:23113 */\n tag_1383\n /* \"#utility.yul\":23109:23111 */\n 0x40\n /* \"#utility.yul\":23098:23107 */\n dup4\n /* \"#utility.yul\":23094:23112 */\n add\n /* \"#utility.yul\":23085:23091 */\n dup8\n /* \"#utility.yul\":23041:23113 */\n tag_1038\n jump\t// in\n tag_1383:\n /* \"#utility.yul\":23123:23195 */\n tag_1384\n /* \"#utility.yul\":23191:23193 */\n 0x60\n /* \"#utility.yul\":23180:23189 */\n dup4\n /* \"#utility.yul\":23176:23194 */\n add\n /* \"#utility.yul\":23167:23173 */\n dup7\n /* \"#utility.yul\":23123:23195 */\n tag_1038\n jump\t// in\n tag_1384:\n /* \"#utility.yul\":23243:23252 */\n dup2\n /* \"#utility.yul\":23237:23241 */\n dup2\n /* \"#utility.yul\":23233:23253 */\n sub\n /* \"#utility.yul\":23227:23230 */\n 0x80\n /* \"#utility.yul\":23216:23225 */\n dup4\n /* \"#utility.yul\":23212:23231 */\n add\n /* \"#utility.yul\":23205:23254 */\n mstore\n /* \"#utility.yul\":23271:23379 */\n tag_1385\n /* \"#utility.yul\":23374:23378 */\n dup2\n /* \"#utility.yul\":23365:23371 */\n dup6\n /* \"#utility.yul\":23271:23379 */\n tag_1047\n jump\t// in\n tag_1385:\n /* \"#utility.yul\":23263:23379 */\n swap1\n pop\n /* \"#utility.yul\":23427:23436 */\n dup2\n /* \"#utility.yul\":23421:23425 */\n dup2\n /* \"#utility.yul\":23417:23437 */\n sub\n /* \"#utility.yul\":23411:23414 */\n 0xa0\n /* \"#utility.yul\":23400:23409 */\n dup4\n /* \"#utility.yul\":23396:23415 */\n add\n /* \"#utility.yul\":23389:23438 */\n mstore\n /* \"#utility.yul\":23455:23563 */\n tag_1386\n /* \"#utility.yul\":23558:23562 */\n dup2\n /* \"#utility.yul\":23549:23555 */\n dup5\n /* \"#utility.yul\":23455:23563 */\n tag_1047\n jump\t// in\n tag_1386:\n /* \"#utility.yul\":23447:23563 */\n swap1\n pop\n /* \"#utility.yul\":22493:23570 */\n swap8\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":23576:23688 */\n tag_1065:\n /* \"#utility.yul\":23629:23636 */\n 0x00\n /* \"#utility.yul\":23658:23682 */\n tag_1388\n /* \"#utility.yul\":23676:23681 */\n dup3\n /* \"#utility.yul\":23658:23682 */\n tag_1028\n jump\t// in\n tag_1388:\n /* \"#utility.yul\":23647:23682 */\n swap1\n pop\n /* \"#utility.yul\":23576:23688 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":23694:23848 */\n tag_1066:\n /* \"#utility.yul\":23783:23823 */\n tag_1390\n /* \"#utility.yul\":23817:23822 */\n dup2\n /* \"#utility.yul\":23783:23823 */\n tag_1065\n jump\t// in\n tag_1390:\n /* \"#utility.yul\":23776:23781 */\n dup2\n /* \"#utility.yul\":23773:23824 */\n eq\n /* \"#utility.yul\":23763:23842 */\n tag_1391\n jumpi\n /* \"#utility.yul\":23838:23839 */\n 0x00\n /* \"#utility.yul\":23835:23836 */\n dup1\n /* \"#utility.yul\":23828:23840 */\n revert\n /* \"#utility.yul\":23763:23842 */\n tag_1391:\n /* \"#utility.yul\":23694:23848 */\n pop\n jump\t// out\n /* \"#utility.yul\":23854:24025 */\n tag_1067:\n /* \"#utility.yul\":23916:23921 */\n 0x00\n /* \"#utility.yul\":23954:23960 */\n dup2\n /* \"#utility.yul\":23941:23961 */\n calldataload\n /* \"#utility.yul\":23932:23961 */\n swap1\n pop\n /* \"#utility.yul\":23970:24019 */\n tag_1393\n /* \"#utility.yul\":24013:24018 */\n dup2\n /* \"#utility.yul\":23970:24019 */\n tag_1066\n jump\t// in\n tag_1393:\n /* \"#utility.yul\":23854:24025 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":24031:24149 */\n tag_1068:\n /* \"#utility.yul\":24068:24075 */\n 0x00\n /* \"#utility.yul\":24108:24142 */\n 0xffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":24101:24106 */\n dup3\n /* \"#utility.yul\":24097:24143 */\n and\n /* \"#utility.yul\":24086:24143 */\n swap1\n pop\n /* \"#utility.yul\":24031:24149 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":24155:24277 */\n tag_1069:\n /* \"#utility.yul\":24228:24252 */\n tag_1396\n /* \"#utility.yul\":24246:24251 */\n dup2\n /* \"#utility.yul\":24228:24252 */\n tag_1068\n jump\t// in\n tag_1396:\n /* \"#utility.yul\":24221:24226 */\n dup2\n /* \"#utility.yul\":24218:24253 */\n eq\n /* \"#utility.yul\":24208:24271 */\n tag_1397\n jumpi\n /* \"#utility.yul\":24267:24268 */\n 0x00\n /* \"#utility.yul\":24264:24265 */\n dup1\n /* \"#utility.yul\":24257:24269 */\n revert\n /* \"#utility.yul\":24208:24271 */\n tag_1397:\n /* \"#utility.yul\":24155:24277 */\n pop\n jump\t// out\n /* \"#utility.yul\":24283:24422 */\n tag_1070:\n /* \"#utility.yul\":24329:24334 */\n 0x00\n /* \"#utility.yul\":24367:24373 */\n dup2\n /* \"#utility.yul\":24354:24374 */\n calldataload\n /* \"#utility.yul\":24345:24374 */\n swap1\n pop\n /* \"#utility.yul\":24383:24416 */\n tag_1399\n /* \"#utility.yul\":24410:24415 */\n dup2\n /* \"#utility.yul\":24383:24416 */\n tag_1069\n jump\t// in\n tag_1399:\n /* \"#utility.yul\":24283:24422 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":24428:24518 */\n tag_1071:\n /* \"#utility.yul\":24462:24469 */\n 0x00\n /* \"#utility.yul\":24505:24510 */\n dup2\n /* \"#utility.yul\":24498:24511 */\n iszero\n /* \"#utility.yul\":24491:24512 */\n iszero\n /* \"#utility.yul\":24480:24512 */\n swap1\n pop\n /* \"#utility.yul\":24428:24518 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":24524:24640 */\n tag_1072:\n /* \"#utility.yul\":24594:24615 */\n tag_1402\n /* \"#utility.yul\":24609:24614 */\n dup2\n /* \"#utility.yul\":24594:24615 */\n tag_1071\n jump\t// in\n tag_1402:\n /* \"#utility.yul\":24587:24592 */\n dup2\n /* \"#utility.yul\":24584:24616 */\n eq\n /* \"#utility.yul\":24574:24634 */\n tag_1403\n jumpi\n /* \"#utility.yul\":24630:24631 */\n 0x00\n /* \"#utility.yul\":24627:24628 */\n dup1\n /* \"#utility.yul\":24620:24632 */\n revert\n /* \"#utility.yul\":24574:24634 */\n tag_1403:\n /* \"#utility.yul\":24524:24640 */\n pop\n jump\t// out\n /* \"#utility.yul\":24646:24779 */\n tag_1073:\n /* \"#utility.yul\":24689:24694 */\n 0x00\n /* \"#utility.yul\":24727:24733 */\n dup2\n /* \"#utility.yul\":24714:24734 */\n calldataload\n /* \"#utility.yul\":24705:24734 */\n swap1\n pop\n /* \"#utility.yul\":24743:24773 */\n tag_1405\n /* \"#utility.yul\":24767:24772 */\n dup2\n /* \"#utility.yul\":24743:24773 */\n tag_1072\n jump\t// in\n tag_1405:\n /* \"#utility.yul\":24646:24779 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":24785:25430 */\n tag_108:\n /* \"#utility.yul\":24875:24881 */\n 0x00\n /* \"#utility.yul\":24883:24889 */\n dup1\n /* \"#utility.yul\":24891:24897 */\n 0x00\n /* \"#utility.yul\":24940:24942 */\n 0x60\n /* \"#utility.yul\":24928:24937 */\n dup5\n /* \"#utility.yul\":24919:24926 */\n dup7\n /* \"#utility.yul\":24915:24938 */\n sub\n /* \"#utility.yul\":24911:24943 */\n slt\n /* \"#utility.yul\":24908:25027 */\n iszero\n tag_1407\n jumpi\n /* \"#utility.yul\":24946:25025 */\n tag_1408\n tag_1006\n jump\t// in\n tag_1408:\n /* \"#utility.yul\":24908:25027 */\n tag_1407:\n /* \"#utility.yul\":25066:25067 */\n 0x00\n /* \"#utility.yul\":25091:25160 */\n tag_1409\n /* \"#utility.yul\":25152:25159 */\n dup7\n /* \"#utility.yul\":25143:25149 */\n dup3\n /* \"#utility.yul\":25132:25141 */\n dup8\n /* \"#utility.yul\":25128:25150 */\n add\n /* \"#utility.yul\":25091:25160 */\n tag_1067\n jump\t// in\n tag_1409:\n /* \"#utility.yul\":25081:25160 */\n swap4\n pop\n /* \"#utility.yul\":25037:25170 */\n pop\n /* \"#utility.yul\":25209:25211 */\n 0x20\n /* \"#utility.yul\":25235:25288 */\n tag_1410\n /* \"#utility.yul\":25280:25287 */\n dup7\n /* \"#utility.yul\":25271:25277 */\n dup3\n /* \"#utility.yul\":25260:25269 */\n dup8\n /* \"#utility.yul\":25256:25278 */\n add\n /* \"#utility.yul\":25235:25288 */\n tag_1070\n jump\t// in\n tag_1410:\n /* \"#utility.yul\":25225:25288 */\n swap3\n pop\n /* \"#utility.yul\":25180:25298 */\n pop\n /* \"#utility.yul\":25337:25339 */\n 0x40\n /* \"#utility.yul\":25363:25413 */\n tag_1411\n /* \"#utility.yul\":25405:25412 */\n dup7\n /* \"#utility.yul\":25396:25402 */\n dup3\n /* \"#utility.yul\":25385:25394 */\n dup8\n /* \"#utility.yul\":25381:25403 */\n add\n /* \"#utility.yul\":25363:25413 */\n tag_1073\n jump\t// in\n tag_1411:\n /* \"#utility.yul\":25353:25413 */\n swap2\n pop\n /* \"#utility.yul\":25308:25423 */\n pop\n /* \"#utility.yul\":24785:25430 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":25436:25554 */\n tag_1074:\n /* \"#utility.yul\":25523:25547 */\n tag_1413\n /* \"#utility.yul\":25541:25546 */\n dup2\n /* \"#utility.yul\":25523:25547 */\n tag_1068\n jump\t// in\n tag_1413:\n /* \"#utility.yul\":25518:25521 */\n dup3\n /* \"#utility.yul\":25511:25548 */\n mstore\n /* \"#utility.yul\":25436:25554 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":25560:26002 */\n tag_111:\n /* \"#utility.yul\":25709:25713 */\n 0x00\n /* \"#utility.yul\":25747:25749 */\n 0x60\n /* \"#utility.yul\":25736:25745 */\n dup3\n /* \"#utility.yul\":25732:25750 */\n add\n /* \"#utility.yul\":25724:25750 */\n swap1\n pop\n /* \"#utility.yul\":25760:25831 */\n tag_1415\n /* \"#utility.yul\":25828:25829 */\n 0x00\n /* \"#utility.yul\":25817:25826 */\n dup4\n /* \"#utility.yul\":25813:25830 */\n add\n /* \"#utility.yul\":25804:25810 */\n dup7\n /* \"#utility.yul\":25760:25831 */\n tag_1074\n jump\t// in\n tag_1415:\n /* \"#utility.yul\":25841:25913 */\n tag_1416\n /* \"#utility.yul\":25909:25911 */\n 0x20\n /* \"#utility.yul\":25898:25907 */\n dup4\n /* \"#utility.yul\":25894:25912 */\n add\n /* \"#utility.yul\":25885:25891 */\n dup6\n /* \"#utility.yul\":25841:25913 */\n tag_1074\n jump\t// in\n tag_1416:\n /* \"#utility.yul\":25923:25995 */\n tag_1417\n /* \"#utility.yul\":25991:25993 */\n 0x40\n /* \"#utility.yul\":25980:25989 */\n dup4\n /* \"#utility.yul\":25976:25994 */\n add\n /* \"#utility.yul\":25967:25973 */\n dup5\n /* \"#utility.yul\":25923:25995 */\n tag_1074\n jump\t// in\n tag_1417:\n /* \"#utility.yul\":25560:26002 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":26008:26161 */\n tag_1075:\n /* \"#utility.yul\":26085:26094 */\n 0x00\n /* \"#utility.yul\":26118:26155 */\n tag_1419\n /* \"#utility.yul\":26149:26154 */\n dup3\n /* \"#utility.yul\":26118:26155 */\n tag_1056\n jump\t// in\n tag_1419:\n /* \"#utility.yul\":26105:26155 */\n swap1\n pop\n /* \"#utility.yul\":26008:26161 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":26167:26352 */\n tag_1076:\n /* \"#utility.yul\":26281:26345 */\n tag_1421\n /* \"#utility.yul\":26339:26344 */\n dup2\n /* \"#utility.yul\":26281:26345 */\n tag_1075\n jump\t// in\n tag_1421:\n /* \"#utility.yul\":26276:26279 */\n dup3\n /* \"#utility.yul\":26269:26346 */\n mstore\n /* \"#utility.yul\":26167:26352 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":26358:26634 */\n tag_135:\n /* \"#utility.yul\":26478:26482 */\n 0x00\n /* \"#utility.yul\":26516:26518 */\n 0x20\n /* \"#utility.yul\":26505:26514 */\n dup3\n /* \"#utility.yul\":26501:26519 */\n add\n /* \"#utility.yul\":26493:26519 */\n swap1\n pop\n /* \"#utility.yul\":26529:26627 */\n tag_1423\n /* \"#utility.yul\":26624:26625 */\n 0x00\n /* \"#utility.yul\":26613:26622 */\n dup4\n /* \"#utility.yul\":26609:26626 */\n add\n /* \"#utility.yul\":26600:26606 */\n dup5\n /* \"#utility.yul\":26529:26627 */\n tag_1076\n jump\t// in\n tag_1423:\n /* \"#utility.yul\":26358:26634 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":26640:28609 */\n tag_139:\n /* \"#utility.yul\":26848:26854 */\n 0x00\n /* \"#utility.yul\":26856:26862 */\n dup1\n /* \"#utility.yul\":26864:26870 */\n 0x00\n /* \"#utility.yul\":26872:26878 */\n dup1\n /* \"#utility.yul\":26880:26886 */\n 0x00\n /* \"#utility.yul\":26888:26894 */\n dup1\n /* \"#utility.yul\":26896:26902 */\n 0x00\n /* \"#utility.yul\":26904:26910 */\n dup1\n /* \"#utility.yul\":26912:26918 */\n 0x00\n /* \"#utility.yul\":26961:26964 */\n 0x0120\n /* \"#utility.yul\":26949:26958 */\n dup11\n /* \"#utility.yul\":26940:26947 */\n dup13\n /* \"#utility.yul\":26936:26959 */\n sub\n /* \"#utility.yul\":26932:26965 */\n slt\n /* \"#utility.yul\":26929:27049 */\n iszero\n tag_1425\n jumpi\n /* \"#utility.yul\":26968:27047 */\n tag_1426\n tag_1006\n jump\t// in\n tag_1426:\n /* \"#utility.yul\":26929:27049 */\n tag_1425:\n /* \"#utility.yul\":27088:27089 */\n 0x00\n /* \"#utility.yul\":27113:27180 */\n tag_1427\n /* \"#utility.yul\":27172:27179 */\n dup13\n /* \"#utility.yul\":27163:27169 */\n dup3\n /* \"#utility.yul\":27152:27161 */\n dup14\n /* \"#utility.yul\":27148:27170 */\n add\n /* \"#utility.yul\":27113:27180 */\n tag_1031\n jump\t// in\n tag_1427:\n /* \"#utility.yul\":27103:27180 */\n swap10\n pop\n /* \"#utility.yul\":27059:27190 */\n pop\n /* \"#utility.yul\":27229:27231 */\n 0x20\n /* \"#utility.yul\":27255:27322 */\n tag_1428\n /* \"#utility.yul\":27314:27321 */\n dup13\n /* \"#utility.yul\":27305:27311 */\n dup3\n /* \"#utility.yul\":27294:27303 */\n dup14\n /* \"#utility.yul\":27290:27312 */\n add\n /* \"#utility.yul\":27255:27322 */\n tag_1031\n jump\t// in\n tag_1428:\n /* \"#utility.yul\":27245:27322 */\n swap9\n pop\n /* \"#utility.yul\":27200:27332 */\n pop\n /* \"#utility.yul\":27371:27373 */\n 0x40\n /* \"#utility.yul\":27397:27449 */\n tag_1429\n /* \"#utility.yul\":27441:27448 */\n dup13\n /* \"#utility.yul\":27432:27438 */\n dup3\n /* \"#utility.yul\":27421:27430 */\n dup14\n /* \"#utility.yul\":27417:27439 */\n add\n /* \"#utility.yul\":27397:27449 */\n tag_1053\n jump\t// in\n tag_1429:\n /* \"#utility.yul\":27387:27449 */\n swap8\n pop\n /* \"#utility.yul\":27342:27459 */\n pop\n /* \"#utility.yul\":27498:27500 */\n 0x60\n /* \"#utility.yul\":27524:27577 */\n tag_1430\n /* \"#utility.yul\":27569:27576 */\n dup13\n /* \"#utility.yul\":27560:27566 */\n dup3\n /* \"#utility.yul\":27549:27558 */\n dup14\n /* \"#utility.yul\":27545:27567 */\n add\n /* \"#utility.yul\":27524:27577 */\n tag_1010\n jump\t// in\n tag_1430:\n /* \"#utility.yul\":27514:27577 */\n swap7\n pop\n /* \"#utility.yul\":27469:27587 */\n pop\n /* \"#utility.yul\":27626:27629 */\n 0x80\n /* \"#utility.yul\":27653:27706 */\n tag_1431\n /* \"#utility.yul\":27698:27705 */\n dup13\n /* \"#utility.yul\":27689:27695 */\n dup3\n /* \"#utility.yul\":27678:27687 */\n dup14\n /* \"#utility.yul\":27674:27696 */\n add\n /* \"#utility.yul\":27653:27706 */\n tag_1010\n jump\t// in\n tag_1431:\n /* \"#utility.yul\":27643:27706 */\n swap6\n pop\n /* \"#utility.yul\":27597:27716 */\n pop\n /* \"#utility.yul\":27783:27786 */\n 0xa0\n /* \"#utility.yul\":27772:27781 */\n dup11\n /* \"#utility.yul\":27768:27787 */\n add\n /* \"#utility.yul\":27755:27788 */\n calldataload\n /* \"#utility.yul\":27815:27833 */\n 0xffffffffffffffff\n /* \"#utility.yul\":27807:27813 */\n dup2\n /* \"#utility.yul\":27804:27834 */\n gt\n /* \"#utility.yul\":27801:27918 */\n iszero\n tag_1432\n jumpi\n /* \"#utility.yul\":27837:27916 */\n tag_1433\n tag_1007\n jump\t// in\n tag_1433:\n /* \"#utility.yul\":27801:27918 */\n tag_1432:\n /* \"#utility.yul\":27942:28020 */\n tag_1434\n /* \"#utility.yul\":28012:28019 */\n dup13\n /* \"#utility.yul\":28003:28009 */\n dup3\n /* \"#utility.yul\":27992:28001 */\n dup14\n /* \"#utility.yul\":27988:28010 */\n add\n /* \"#utility.yul\":27942:28020 */\n tag_1020\n jump\t// in\n tag_1434:\n /* \"#utility.yul\":27932:28020 */\n swap5\n pop\n /* \"#utility.yul\":27726:28030 */\n pop\n /* \"#utility.yul\":28097:28100 */\n 0xc0\n /* \"#utility.yul\":28086:28095 */\n dup11\n /* \"#utility.yul\":28082:28101 */\n add\n /* \"#utility.yul\":28069:28102 */\n calldataload\n /* \"#utility.yul\":28129:28147 */\n 0xffffffffffffffff\n /* \"#utility.yul\":28121:28127 */\n dup2\n /* \"#utility.yul\":28118:28148 */\n gt\n /* \"#utility.yul\":28115:28232 */\n iszero\n tag_1435\n jumpi\n /* \"#utility.yul\":28151:28230 */\n tag_1436\n tag_1007\n jump\t// in\n tag_1436:\n /* \"#utility.yul\":28115:28232 */\n tag_1435:\n /* \"#utility.yul\":28256:28334 */\n tag_1437\n /* \"#utility.yul\":28326:28333 */\n dup13\n /* \"#utility.yul\":28317:28323 */\n dup3\n /* \"#utility.yul\":28306:28315 */\n dup14\n /* \"#utility.yul\":28302:28324 */\n add\n /* \"#utility.yul\":28256:28334 */\n tag_1020\n jump\t// in\n tag_1437:\n /* \"#utility.yul\":28246:28334 */\n swap4\n pop\n /* \"#utility.yul\":28040:28344 */\n pop\n /* \"#utility.yul\":28383:28386 */\n 0xe0\n /* \"#utility.yul\":28410:28463 */\n tag_1438\n /* \"#utility.yul\":28455:28462 */\n dup13\n /* \"#utility.yul\":28446:28452 */\n dup3\n /* \"#utility.yul\":28435:28444 */\n dup14\n /* \"#utility.yul\":28431:28453 */\n add\n /* \"#utility.yul\":28410:28463 */\n tag_1040\n jump\t// in\n tag_1438:\n /* \"#utility.yul\":28400:28463 */\n swap3\n pop\n /* \"#utility.yul\":28354:28473 */\n pop\n /* \"#utility.yul\":28512:28515 */\n 0x0100\n /* \"#utility.yul\":28539:28592 */\n tag_1439\n /* \"#utility.yul\":28584:28591 */\n dup13\n /* \"#utility.yul\":28575:28581 */\n dup3\n /* \"#utility.yul\":28564:28573 */\n dup14\n /* \"#utility.yul\":28560:28582 */\n add\n /* \"#utility.yul\":28539:28592 */\n tag_1010\n jump\t// in\n tag_1439:\n /* \"#utility.yul\":28529:28592 */\n swap2\n pop\n /* \"#utility.yul\":28483:28602 */\n pop\n /* \"#utility.yul\":26640:28609 */\n swap3\n swap6\n swap9\n pop\n swap3\n swap6\n swap9\n pop\n swap3\n swap6\n swap9\n jump\t// out\n /* \"#utility.yul\":28615:29119 */\n tag_145:\n /* \"#utility.yul\":28698:28704 */\n 0x00\n /* \"#utility.yul\":28706:28712 */\n dup1\n /* \"#utility.yul\":28755:28757 */\n 0x40\n /* \"#utility.yul\":28743:28752 */\n dup4\n /* \"#utility.yul\":28734:28741 */\n dup6\n /* \"#utility.yul\":28730:28753 */\n sub\n /* \"#utility.yul\":28726:28758 */\n slt\n /* \"#utility.yul\":28723:28842 */\n iszero\n tag_1441\n jumpi\n /* \"#utility.yul\":28761:28840 */\n tag_1442\n tag_1006\n jump\t// in\n tag_1442:\n /* \"#utility.yul\":28723:28842 */\n tag_1441:\n /* \"#utility.yul\":28881:28882 */\n 0x00\n /* \"#utility.yul\":28906:28975 */\n tag_1443\n /* \"#utility.yul\":28967:28974 */\n dup6\n /* \"#utility.yul\":28958:28964 */\n dup3\n /* \"#utility.yul\":28947:28956 */\n dup7\n /* \"#utility.yul\":28943:28965 */\n add\n /* \"#utility.yul\":28906:28975 */\n tag_1067\n jump\t// in\n tag_1443:\n /* \"#utility.yul\":28896:28975 */\n swap3\n pop\n /* \"#utility.yul\":28852:28985 */\n pop\n /* \"#utility.yul\":29024:29026 */\n 0x20\n /* \"#utility.yul\":29050:29102 */\n tag_1444\n /* \"#utility.yul\":29094:29101 */\n dup6\n /* \"#utility.yul\":29085:29091 */\n dup3\n /* \"#utility.yul\":29074:29083 */\n dup7\n /* \"#utility.yul\":29070:29092 */\n add\n /* \"#utility.yul\":29050:29102 */\n tag_1050\n jump\t// in\n tag_1444:\n /* \"#utility.yul\":29040:29102 */\n swap2\n pop\n /* \"#utility.yul\":28995:29112 */\n pop\n /* \"#utility.yul\":28615:29119 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":29125:29238 */\n tag_1077:\n /* \"#utility.yul\":29179:29186 */\n 0x00\n /* \"#utility.yul\":29208:29232 */\n tag_1446\n /* \"#utility.yul\":29226:29231 */\n dup3\n /* \"#utility.yul\":29208:29232 */\n tag_1028\n jump\t// in\n tag_1446:\n /* \"#utility.yul\":29197:29232 */\n swap1\n pop\n /* \"#utility.yul\":29125:29238 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":29244:29400 */\n tag_1078:\n /* \"#utility.yul\":29334:29375 */\n tag_1448\n /* \"#utility.yul\":29369:29374 */\n dup2\n /* \"#utility.yul\":29334:29375 */\n tag_1077\n jump\t// in\n tag_1448:\n /* \"#utility.yul\":29327:29332 */\n dup2\n /* \"#utility.yul\":29324:29376 */\n eq\n /* \"#utility.yul\":29314:29394 */\n tag_1449\n jumpi\n /* \"#utility.yul\":29390:29391 */\n 0x00\n /* \"#utility.yul\":29387:29388 */\n dup1\n /* \"#utility.yul\":29380:29392 */\n revert\n /* \"#utility.yul\":29314:29394 */\n tag_1449:\n /* \"#utility.yul\":29244:29400 */\n pop\n jump\t// out\n /* \"#utility.yul\":29406:29579 */\n tag_1079:\n /* \"#utility.yul\":29469:29474 */\n 0x00\n /* \"#utility.yul\":29507:29513 */\n dup2\n /* \"#utility.yul\":29494:29514 */\n calldataload\n /* \"#utility.yul\":29485:29514 */\n swap1\n pop\n /* \"#utility.yul\":29523:29573 */\n tag_1451\n /* \"#utility.yul\":29567:29572 */\n dup2\n /* \"#utility.yul\":29523:29573 */\n tag_1078\n jump\t// in\n tag_1451:\n /* \"#utility.yul\":29406:29579 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":29585:29702 */\n tag_1080:\n /* \"#utility.yul\":29694:29695 */\n 0x00\n /* \"#utility.yul\":29691:29692 */\n dup1\n /* \"#utility.yul\":29684:29696 */\n revert\n /* \"#utility.yul\":29725:30293 */\n tag_1081:\n /* \"#utility.yul\":29798:29806 */\n 0x00\n /* \"#utility.yul\":29808:29814 */\n dup1\n /* \"#utility.yul\":29858:29861 */\n dup4\n /* \"#utility.yul\":29851:29855 */\n 0x1f\n /* \"#utility.yul\":29843:29849 */\n dup5\n /* \"#utility.yul\":29839:29856 */\n add\n /* \"#utility.yul\":29835:29862 */\n slt\n /* \"#utility.yul\":29825:29947 */\n tag_1454\n jumpi\n /* \"#utility.yul\":29866:29945 */\n tag_1455\n tag_1016\n jump\t// in\n tag_1455:\n /* \"#utility.yul\":29825:29947 */\n tag_1454:\n /* \"#utility.yul\":29979:29985 */\n dup3\n /* \"#utility.yul\":29966:29986 */\n calldataload\n /* \"#utility.yul\":29956:29986 */\n swap1\n pop\n /* \"#utility.yul\":30009:30027 */\n 0xffffffffffffffff\n /* \"#utility.yul\":30001:30007 */\n dup2\n /* \"#utility.yul\":29998:30028 */\n gt\n /* \"#utility.yul\":29995:30112 */\n iszero\n tag_1456\n jumpi\n /* \"#utility.yul\":30031:30110 */\n tag_1457\n tag_1080\n jump\t// in\n tag_1457:\n /* \"#utility.yul\":29995:30112 */\n tag_1456:\n /* \"#utility.yul\":30145:30149 */\n 0x20\n /* \"#utility.yul\":30137:30143 */\n dup4\n /* \"#utility.yul\":30133:30150 */\n add\n /* \"#utility.yul\":30121:30150 */\n swap2\n pop\n /* \"#utility.yul\":30199:30202 */\n dup4\n /* \"#utility.yul\":30191:30195 */\n 0x20\n /* \"#utility.yul\":30183:30189 */\n dup3\n /* \"#utility.yul\":30179:30196 */\n mul\n /* \"#utility.yul\":30169:30177 */\n dup4\n /* \"#utility.yul\":30165:30197 */\n add\n /* \"#utility.yul\":30162:30203 */\n gt\n /* \"#utility.yul\":30159:30287 */\n iszero\n tag_1458\n jumpi\n /* \"#utility.yul\":30206:30285 */\n tag_1459\n tag_1018\n jump\t// in\n tag_1459:\n /* \"#utility.yul\":30159:30287 */\n tag_1458:\n /* \"#utility.yul\":29725:30293 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":30299:31558 */\n tag_155:\n /* \"#utility.yul\":30456:30462 */\n 0x00\n /* \"#utility.yul\":30464:30470 */\n dup1\n /* \"#utility.yul\":30472:30478 */\n 0x00\n /* \"#utility.yul\":30480:30486 */\n dup1\n /* \"#utility.yul\":30488:30494 */\n 0x00\n /* \"#utility.yul\":30496:30502 */\n dup1\n /* \"#utility.yul\":30545:30548 */\n 0x80\n /* \"#utility.yul\":30533:30542 */\n dup8\n /* \"#utility.yul\":30524:30531 */\n dup10\n /* \"#utility.yul\":30520:30543 */\n sub\n /* \"#utility.yul\":30516:30549 */\n slt\n /* \"#utility.yul\":30513:30633 */\n iszero\n tag_1461\n jumpi\n /* \"#utility.yul\":30552:30631 */\n tag_1462\n tag_1006\n jump\t// in\n tag_1462:\n /* \"#utility.yul\":30513:30633 */\n tag_1461:\n /* \"#utility.yul\":30672:30673 */\n 0x00\n /* \"#utility.yul\":30697:30767 */\n tag_1463\n /* \"#utility.yul\":30759:30766 */\n dup10\n /* \"#utility.yul\":30750:30756 */\n dup3\n /* \"#utility.yul\":30739:30748 */\n dup11\n /* \"#utility.yul\":30735:30757 */\n add\n /* \"#utility.yul\":30697:30767 */\n tag_1079\n jump\t// in\n tag_1463:\n /* \"#utility.yul\":30687:30767 */\n swap7\n pop\n /* \"#utility.yul\":30643:30777 */\n pop\n /* \"#utility.yul\":30816:30818 */\n 0x20\n /* \"#utility.yul\":30842:30895 */\n tag_1464\n /* \"#utility.yul\":30887:30894 */\n dup10\n /* \"#utility.yul\":30878:30884 */\n dup3\n /* \"#utility.yul\":30867:30876 */\n dup11\n /* \"#utility.yul\":30863:30885 */\n add\n /* \"#utility.yul\":30842:30895 */\n tag_1040\n jump\t// in\n tag_1464:\n /* \"#utility.yul\":30832:30895 */\n swap6\n pop\n /* \"#utility.yul\":30787:30905 */\n pop\n /* \"#utility.yul\":30972:30974 */\n 0x40\n /* \"#utility.yul\":30961:30970 */\n dup8\n /* \"#utility.yul\":30957:30975 */\n add\n /* \"#utility.yul\":30944:30976 */\n calldataload\n /* \"#utility.yul\":31003:31021 */\n 0xffffffffffffffff\n /* \"#utility.yul\":30995:31001 */\n dup2\n /* \"#utility.yul\":30992:31022 */\n gt\n /* \"#utility.yul\":30989:31106 */\n iszero\n tag_1465\n jumpi\n /* \"#utility.yul\":31025:31104 */\n tag_1466\n tag_1007\n jump\t// in\n tag_1466:\n /* \"#utility.yul\":30989:31106 */\n tag_1465:\n /* \"#utility.yul\":31138:31218 */\n tag_1467\n /* \"#utility.yul\":31210:31217 */\n dup10\n /* \"#utility.yul\":31201:31207 */\n dup3\n /* \"#utility.yul\":31190:31199 */\n dup11\n /* \"#utility.yul\":31186:31208 */\n add\n /* \"#utility.yul\":31138:31218 */\n tag_1081\n jump\t// in\n tag_1467:\n /* \"#utility.yul\":31120:31218 */\n swap5\n pop\n swap5\n pop\n /* \"#utility.yul\":30915:31228 */\n pop\n /* \"#utility.yul\":31295:31297 */\n 0x60\n /* \"#utility.yul\":31284:31293 */\n dup8\n /* \"#utility.yul\":31280:31298 */\n add\n /* \"#utility.yul\":31267:31299 */\n calldataload\n /* \"#utility.yul\":31326:31344 */\n 0xffffffffffffffff\n /* \"#utility.yul\":31318:31324 */\n dup2\n /* \"#utility.yul\":31315:31345 */\n gt\n /* \"#utility.yul\":31312:31429 */\n iszero\n tag_1468\n jumpi\n /* \"#utility.yul\":31348:31427 */\n tag_1469\n tag_1007\n jump\t// in\n tag_1469:\n /* \"#utility.yul\":31312:31429 */\n tag_1468:\n /* \"#utility.yul\":31461:31541 */\n tag_1470\n /* \"#utility.yul\":31533:31540 */\n dup10\n /* \"#utility.yul\":31524:31530 */\n dup3\n /* \"#utility.yul\":31513:31522 */\n dup11\n /* \"#utility.yul\":31509:31531 */\n add\n /* \"#utility.yul\":31461:31541 */\n tag_1081\n jump\t// in\n tag_1470:\n /* \"#utility.yul\":31443:31541 */\n swap3\n pop\n swap3\n pop\n /* \"#utility.yul\":31238:31551 */\n pop\n /* \"#utility.yul\":30299:31558 */\n swap3\n swap6\n pop\n swap3\n swap6\n pop\n swap3\n swap6\n jump\t// out\n /* \"#utility.yul\":31564:32070 */\n tag_160:\n /* \"#utility.yul\":31648:31654 */\n 0x00\n /* \"#utility.yul\":31656:31662 */\n dup1\n /* \"#utility.yul\":31705:31707 */\n 0x40\n /* \"#utility.yul\":31693:31702 */\n dup4\n /* \"#utility.yul\":31684:31691 */\n dup6\n /* \"#utility.yul\":31680:31703 */\n sub\n /* \"#utility.yul\":31676:31708 */\n slt\n /* \"#utility.yul\":31673:31792 */\n iszero\n tag_1472\n jumpi\n /* \"#utility.yul\":31711:31790 */\n tag_1473\n tag_1006\n jump\t// in\n tag_1473:\n /* \"#utility.yul\":31673:31792 */\n tag_1472:\n /* \"#utility.yul\":31831:31832 */\n 0x00\n /* \"#utility.yul\":31856:31925 */\n tag_1474\n /* \"#utility.yul\":31917:31924 */\n dup6\n /* \"#utility.yul\":31908:31914 */\n dup3\n /* \"#utility.yul\":31897:31906 */\n dup7\n /* \"#utility.yul\":31893:31915 */\n add\n /* \"#utility.yul\":31856:31925 */\n tag_1067\n jump\t// in\n tag_1474:\n /* \"#utility.yul\":31846:31925 */\n swap3\n pop\n /* \"#utility.yul\":31802:31935 */\n pop\n /* \"#utility.yul\":31974:31976 */\n 0x20\n /* \"#utility.yul\":32000:32053 */\n tag_1475\n /* \"#utility.yul\":32045:32052 */\n dup6\n /* \"#utility.yul\":32036:32042 */\n dup3\n /* \"#utility.yul\":32025:32034 */\n dup7\n /* \"#utility.yul\":32021:32043 */\n add\n /* \"#utility.yul\":32000:32053 */\n tag_1010\n jump\t// in\n tag_1475:\n /* \"#utility.yul\":31990:32053 */\n swap2\n pop\n /* \"#utility.yul\":31945:32063 */\n pop\n /* \"#utility.yul\":31564:32070 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":32076:32191 */\n tag_1082:\n /* \"#utility.yul\":32161:32184 */\n tag_1477\n /* \"#utility.yul\":32178:32183 */\n dup2\n /* \"#utility.yul\":32161:32184 */\n tag_1048\n jump\t// in\n tag_1477:\n /* \"#utility.yul\":32156:32159 */\n dup3\n /* \"#utility.yul\":32149:32185 */\n mstore\n /* \"#utility.yul\":32076:32191 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":32197:32415 */\n tag_163:\n /* \"#utility.yul\":32288:32292 */\n 0x00\n /* \"#utility.yul\":32326:32328 */\n 0x20\n /* \"#utility.yul\":32315:32324 */\n dup3\n /* \"#utility.yul\":32311:32329 */\n add\n /* \"#utility.yul\":32303:32329 */\n swap1\n pop\n /* \"#utility.yul\":32339:32408 */\n tag_1479\n /* \"#utility.yul\":32405:32406 */\n 0x00\n /* \"#utility.yul\":32394:32403 */\n dup4\n /* \"#utility.yul\":32390:32407 */\n add\n /* \"#utility.yul\":32381:32387 */\n dup5\n /* \"#utility.yul\":32339:32408 */\n tag_1082\n jump\t// in\n tag_1479:\n /* \"#utility.yul\":32197:32415 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":32421:32601 */\n tag_1083:\n /* \"#utility.yul\":32469:32546 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":32466:32467 */\n 0x00\n /* \"#utility.yul\":32459:32547 */\n mstore\n /* \"#utility.yul\":32566:32570 */\n 0x11\n /* \"#utility.yul\":32563:32564 */\n 0x04\n /* \"#utility.yul\":32556:32571 */\n mstore\n /* \"#utility.yul\":32590:32594 */\n 0x24\n /* \"#utility.yul\":32587:32588 */\n 0x00\n /* \"#utility.yul\":32580:32595 */\n revert\n /* \"#utility.yul\":32607:32798 */\n tag_171:\n /* \"#utility.yul\":32647:32650 */\n 0x00\n /* \"#utility.yul\":32666:32686 */\n tag_1482\n /* \"#utility.yul\":32684:32685 */\n dup3\n /* \"#utility.yul\":32666:32686 */\n tag_1008\n jump\t// in\n tag_1482:\n /* \"#utility.yul\":32661:32686 */\n swap2\n pop\n /* \"#utility.yul\":32700:32720 */\n tag_1483\n /* \"#utility.yul\":32718:32719 */\n dup4\n /* \"#utility.yul\":32700:32720 */\n tag_1008\n jump\t// in\n tag_1483:\n /* \"#utility.yul\":32695:32720 */\n swap3\n pop\n /* \"#utility.yul\":32743:32744 */\n dup3\n /* \"#utility.yul\":32740:32741 */\n dup3\n /* \"#utility.yul\":32736:32745 */\n add\n /* \"#utility.yul\":32729:32745 */\n swap1\n pop\n /* \"#utility.yul\":32764:32767 */\n dup1\n /* \"#utility.yul\":32761:32762 */\n dup3\n /* \"#utility.yul\":32758:32768 */\n gt\n /* \"#utility.yul\":32755:32791 */\n iszero\n tag_1484\n jumpi\n /* \"#utility.yul\":32771:32789 */\n tag_1485\n tag_1083\n jump\t// in\n tag_1485:\n /* \"#utility.yul\":32755:32791 */\n tag_1484:\n /* \"#utility.yul\":32607:32798 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":32804:32984 */\n tag_176:\n /* \"#utility.yul\":32852:32929 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":32849:32850 */\n 0x00\n /* \"#utility.yul\":32842:32930 */\n mstore\n /* \"#utility.yul\":32949:32953 */\n 0x32\n /* \"#utility.yul\":32946:32947 */\n 0x04\n /* \"#utility.yul\":32939:32954 */\n mstore\n /* \"#utility.yul\":32973:32977 */\n 0x24\n /* \"#utility.yul\":32970:32971 */\n 0x00\n /* \"#utility.yul\":32963:32978 */\n revert\n /* \"#utility.yul\":32990:33108 */\n tag_1084:\n /* \"#utility.yul\":33077:33101 */\n tag_1488\n /* \"#utility.yul\":33095:33100 */\n dup2\n /* \"#utility.yul\":33077:33101 */\n tag_1028\n jump\t// in\n tag_1488:\n /* \"#utility.yul\":33072:33075 */\n dup3\n /* \"#utility.yul\":33065:33102 */\n mstore\n /* \"#utility.yul\":32990:33108 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":33114:33336 */\n tag_181:\n /* \"#utility.yul\":33207:33211 */\n 0x00\n /* \"#utility.yul\":33245:33247 */\n 0x20\n /* \"#utility.yul\":33234:33243 */\n dup3\n /* \"#utility.yul\":33230:33248 */\n add\n /* \"#utility.yul\":33222:33248 */\n swap1\n pop\n /* \"#utility.yul\":33258:33329 */\n tag_1490\n /* \"#utility.yul\":33326:33327 */\n 0x00\n /* \"#utility.yul\":33315:33324 */\n dup4\n /* \"#utility.yul\":33311:33328 */\n add\n /* \"#utility.yul\":33302:33308 */\n dup5\n /* \"#utility.yul\":33258:33329 */\n tag_1084\n jump\t// in\n tag_1490:\n /* \"#utility.yul\":33114:33336 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":33342:33485 */\n tag_1085:\n /* \"#utility.yul\":33399:33404 */\n 0x00\n /* \"#utility.yul\":33430:33436 */\n dup2\n /* \"#utility.yul\":33424:33437 */\n mload\n /* \"#utility.yul\":33415:33437 */\n swap1\n pop\n /* \"#utility.yul\":33446:33479 */\n tag_1492\n /* \"#utility.yul\":33473:33478 */\n dup2\n /* \"#utility.yul\":33446:33479 */\n tag_1009\n jump\t// in\n tag_1492:\n /* \"#utility.yul\":33342:33485 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":33491:33842 */\n tag_188:\n /* \"#utility.yul\":33561:33567 */\n 0x00\n /* \"#utility.yul\":33610:33612 */\n 0x20\n /* \"#utility.yul\":33598:33607 */\n dup3\n /* \"#utility.yul\":33589:33596 */\n dup5\n /* \"#utility.yul\":33585:33608 */\n sub\n /* \"#utility.yul\":33581:33613 */\n slt\n /* \"#utility.yul\":33578:33697 */\n iszero\n tag_1494\n jumpi\n /* \"#utility.yul\":33616:33695 */\n tag_1495\n tag_1006\n jump\t// in\n tag_1495:\n /* \"#utility.yul\":33578:33697 */\n tag_1494:\n /* \"#utility.yul\":33736:33737 */\n 0x00\n /* \"#utility.yul\":33761:33825 */\n tag_1496\n /* \"#utility.yul\":33817:33824 */\n dup5\n /* \"#utility.yul\":33808:33814 */\n dup3\n /* \"#utility.yul\":33797:33806 */\n dup6\n /* \"#utility.yul\":33793:33815 */\n add\n /* \"#utility.yul\":33761:33825 */\n tag_1085\n jump\t// in\n tag_1496:\n /* \"#utility.yul\":33751:33825 */\n swap2\n pop\n /* \"#utility.yul\":33707:33835 */\n pop\n /* \"#utility.yul\":33491:33842 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":33848:34042 */\n tag_202:\n /* \"#utility.yul\":33888:33892 */\n 0x00\n /* \"#utility.yul\":33908:33928 */\n tag_1498\n /* \"#utility.yul\":33926:33927 */\n dup3\n /* \"#utility.yul\":33908:33928 */\n tag_1008\n jump\t// in\n tag_1498:\n /* \"#utility.yul\":33903:33928 */\n swap2\n pop\n /* \"#utility.yul\":33942:33962 */\n tag_1499\n /* \"#utility.yul\":33960:33961 */\n dup4\n /* \"#utility.yul\":33942:33962 */\n tag_1008\n jump\t// in\n tag_1499:\n /* \"#utility.yul\":33937:33962 */\n swap3\n pop\n /* \"#utility.yul\":33986:33987 */\n dup3\n /* \"#utility.yul\":33983:33984 */\n dup3\n /* \"#utility.yul\":33979:33988 */\n sub\n /* \"#utility.yul\":33971:33988 */\n swap1\n pop\n /* \"#utility.yul\":34010:34011 */\n dup2\n /* \"#utility.yul\":34004:34008 */\n dup2\n /* \"#utility.yul\":34001:34012 */\n gt\n /* \"#utility.yul\":33998:34035 */\n iszero\n tag_1500\n jumpi\n /* \"#utility.yul\":34015:34033 */\n tag_1501\n tag_1083\n jump\t// in\n tag_1501:\n /* \"#utility.yul\":33998:34035 */\n tag_1500:\n /* \"#utility.yul\":33848:34042 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":34048:34191 */\n tag_1086:\n /* \"#utility.yul\":34105:34110 */\n 0x00\n /* \"#utility.yul\":34136:34142 */\n dup2\n /* \"#utility.yul\":34130:34143 */\n mload\n /* \"#utility.yul\":34121:34143 */\n swap1\n pop\n /* \"#utility.yul\":34152:34185 */\n tag_1503\n /* \"#utility.yul\":34179:34184 */\n dup2\n /* \"#utility.yul\":34152:34185 */\n tag_1039\n jump\t// in\n tag_1503:\n /* \"#utility.yul\":34048:34191 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":34197:34548 */\n tag_335:\n /* \"#utility.yul\":34267:34273 */\n 0x00\n /* \"#utility.yul\":34316:34318 */\n 0x20\n /* \"#utility.yul\":34304:34313 */\n dup3\n /* \"#utility.yul\":34295:34302 */\n dup5\n /* \"#utility.yul\":34291:34314 */\n sub\n /* \"#utility.yul\":34287:34319 */\n slt\n /* \"#utility.yul\":34284:34403 */\n iszero\n tag_1505\n jumpi\n /* \"#utility.yul\":34322:34401 */\n tag_1506\n tag_1006\n jump\t// in\n tag_1506:\n /* \"#utility.yul\":34284:34403 */\n tag_1505:\n /* \"#utility.yul\":34442:34443 */\n 0x00\n /* \"#utility.yul\":34467:34531 */\n tag_1507\n /* \"#utility.yul\":34523:34530 */\n dup5\n /* \"#utility.yul\":34514:34520 */\n dup3\n /* \"#utility.yul\":34503:34512 */\n dup6\n /* \"#utility.yul\":34499:34521 */\n add\n /* \"#utility.yul\":34467:34531 */\n tag_1086\n jump\t// in\n tag_1507:\n /* \"#utility.yul\":34457:34531 */\n swap2\n pop\n /* \"#utility.yul\":34413:34541 */\n pop\n /* \"#utility.yul\":34197:34548 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":34554:34694 */\n tag_1087:\n /* \"#utility.yul\":34618:34627 */\n 0x00\n /* \"#utility.yul\":34651:34688 */\n tag_1509\n /* \"#utility.yul\":34682:34687 */\n dup3\n /* \"#utility.yul\":34651:34688 */\n tag_1056\n jump\t// in\n tag_1509:\n /* \"#utility.yul\":34638:34688 */\n swap1\n pop\n /* \"#utility.yul\":34554:34694 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":34700:34859 */\n tag_1088:\n /* \"#utility.yul\":34801:34852 */\n tag_1511\n /* \"#utility.yul\":34846:34851 */\n dup2\n /* \"#utility.yul\":34801:34852 */\n tag_1087\n jump\t// in\n tag_1511:\n /* \"#utility.yul\":34796:34799 */\n dup3\n /* \"#utility.yul\":34789:34853 */\n mstore\n /* \"#utility.yul\":34700:34859 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":34865:34980 */\n tag_1089:\n /* \"#utility.yul\":34950:34973 */\n tag_1513\n /* \"#utility.yul\":34967:34972 */\n dup2\n /* \"#utility.yul\":34950:34973 */\n tag_1051\n jump\t// in\n tag_1513:\n /* \"#utility.yul\":34945:34948 */\n dup3\n /* \"#utility.yul\":34938:34974 */\n mstore\n /* \"#utility.yul\":34865:34980 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":34986:35587 */\n tag_353:\n /* \"#utility.yul\":35187:35191 */\n 0x00\n /* \"#utility.yul\":35225:35228 */\n 0x80\n /* \"#utility.yul\":35214:35223 */\n dup3\n /* \"#utility.yul\":35210:35229 */\n add\n /* \"#utility.yul\":35202:35229 */\n swap1\n pop\n /* \"#utility.yul\":35239:35324 */\n tag_1515\n /* \"#utility.yul\":35321:35322 */\n 0x00\n /* \"#utility.yul\":35310:35319 */\n dup4\n /* \"#utility.yul\":35306:35323 */\n add\n /* \"#utility.yul\":35297:35303 */\n dup8\n /* \"#utility.yul\":35239:35324 */\n tag_1088\n jump\t// in\n tag_1515:\n /* \"#utility.yul\":35334:35420 */\n tag_1516\n /* \"#utility.yul\":35416:35418 */\n 0x20\n /* \"#utility.yul\":35405:35414 */\n dup4\n /* \"#utility.yul\":35401:35419 */\n add\n /* \"#utility.yul\":35392:35398 */\n dup7\n /* \"#utility.yul\":35334:35420 */\n tag_1088\n jump\t// in\n tag_1516:\n /* \"#utility.yul\":35430:35500 */\n tag_1517\n /* \"#utility.yul\":35496:35498 */\n 0x40\n /* \"#utility.yul\":35485:35494 */\n dup4\n /* \"#utility.yul\":35481:35499 */\n add\n /* \"#utility.yul\":35472:35478 */\n dup6\n /* \"#utility.yul\":35430:35500 */\n tag_1082\n jump\t// in\n tag_1517:\n /* \"#utility.yul\":35510:35580 */\n tag_1518\n /* \"#utility.yul\":35576:35578 */\n 0x60\n /* \"#utility.yul\":35565:35574 */\n dup4\n /* \"#utility.yul\":35561:35579 */\n add\n /* \"#utility.yul\":35552:35558 */\n dup5\n /* \"#utility.yul\":35510:35580 */\n tag_1089\n jump\t// in\n tag_1518:\n /* \"#utility.yul\":34986:35587 */\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":35593:35768 */\n tag_1090:\n /* \"#utility.yul\":35666:35671 */\n 0x00\n /* \"#utility.yul\":35697:35703 */\n dup2\n /* \"#utility.yul\":35691:35704 */\n mload\n /* \"#utility.yul\":35682:35704 */\n swap1\n pop\n /* \"#utility.yul\":35713:35762 */\n tag_1520\n /* \"#utility.yul\":35756:35761 */\n dup2\n /* \"#utility.yul\":35713:35762 */\n tag_1066\n jump\t// in\n tag_1520:\n /* \"#utility.yul\":35593:35768 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":35774:36157 */\n tag_357:\n /* \"#utility.yul\":35860:35866 */\n 0x00\n /* \"#utility.yul\":35909:35911 */\n 0x20\n /* \"#utility.yul\":35897:35906 */\n dup3\n /* \"#utility.yul\":35888:35895 */\n dup5\n /* \"#utility.yul\":35884:35907 */\n sub\n /* \"#utility.yul\":35880:35912 */\n slt\n /* \"#utility.yul\":35877:35996 */\n iszero\n tag_1522\n jumpi\n /* \"#utility.yul\":35915:35994 */\n tag_1523\n tag_1006\n jump\t// in\n tag_1523:\n /* \"#utility.yul\":35877:35996 */\n tag_1522:\n /* \"#utility.yul\":36035:36036 */\n 0x00\n /* \"#utility.yul\":36060:36140 */\n tag_1524\n /* \"#utility.yul\":36132:36139 */\n dup5\n /* \"#utility.yul\":36123:36129 */\n dup3\n /* \"#utility.yul\":36112:36121 */\n dup6\n /* \"#utility.yul\":36108:36130 */\n add\n /* \"#utility.yul\":36060:36140 */\n tag_1090\n jump\t// in\n tag_1524:\n /* \"#utility.yul\":36050:36140 */\n swap2\n pop\n /* \"#utility.yul\":36006:36150 */\n pop\n /* \"#utility.yul\":35774:36157 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":36163:36248 */\n tag_1091:\n /* \"#utility.yul\":36208:36215 */\n 0x00\n /* \"#utility.yul\":36237:36242 */\n dup2\n /* \"#utility.yul\":36226:36242 */\n swap1\n pop\n /* \"#utility.yul\":36163:36248 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":36254:36355 */\n tag_1092:\n /* \"#utility.yul\":36290:36297 */\n 0x00\n /* \"#utility.yul\":36330:36348 */\n 0xffffffffffffffff\n /* \"#utility.yul\":36323:36328 */\n dup3\n /* \"#utility.yul\":36319:36349 */\n and\n /* \"#utility.yul\":36308:36349 */\n swap1\n pop\n /* \"#utility.yul\":36254:36355 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":36361:36517 */\n tag_1093:\n /* \"#utility.yul\":36418:36427 */\n 0x00\n /* \"#utility.yul\":36451:36511 */\n tag_1528\n /* \"#utility.yul\":36468:36510 */\n tag_1529\n /* \"#utility.yul\":36477:36509 */\n tag_1530\n /* \"#utility.yul\":36503:36508 */\n dup5\n /* \"#utility.yul\":36477:36509 */\n tag_1091\n jump\t// in\n tag_1530:\n /* \"#utility.yul\":36468:36510 */\n tag_1054\n jump\t// in\n tag_1529:\n /* \"#utility.yul\":36451:36511 */\n tag_1092\n jump\t// in\n tag_1528:\n /* \"#utility.yul\":36438:36511 */\n swap1\n pop\n /* \"#utility.yul\":36361:36517 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":36523:36668 */\n tag_1094:\n /* \"#utility.yul\":36617:36661 */\n tag_1532\n /* \"#utility.yul\":36655:36660 */\n dup2\n /* \"#utility.yul\":36617:36661 */\n tag_1093\n jump\t// in\n tag_1532:\n /* \"#utility.yul\":36612:36615 */\n dup3\n /* \"#utility.yul\":36605:36662 */\n mstore\n /* \"#utility.yul\":36523:36668 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":36674:36910 */\n tag_370:\n /* \"#utility.yul\":36774:36778 */\n 0x00\n /* \"#utility.yul\":36812:36814 */\n 0x20\n /* \"#utility.yul\":36801:36810 */\n dup3\n /* \"#utility.yul\":36797:36815 */\n add\n /* \"#utility.yul\":36789:36815 */\n swap1\n pop\n /* \"#utility.yul\":36825:36903 */\n tag_1534\n /* \"#utility.yul\":36900:36901 */\n 0x00\n /* \"#utility.yul\":36889:36898 */\n dup4\n /* \"#utility.yul\":36885:36902 */\n add\n /* \"#utility.yul\":36876:36882 */\n dup5\n /* \"#utility.yul\":36825:36903 */\n tag_1094\n jump\t// in\n tag_1534:\n /* \"#utility.yul\":36674:36910 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":36916:37087 */\n tag_1095:\n /* \"#utility.yul\":36987:36992 */\n 0x00\n /* \"#utility.yul\":37018:37024 */\n dup2\n /* \"#utility.yul\":37012:37025 */\n mload\n /* \"#utility.yul\":37003:37025 */\n swap1\n pop\n /* \"#utility.yul\":37034:37081 */\n tag_1536\n /* \"#utility.yul\":37075:37080 */\n dup2\n /* \"#utility.yul\":37034:37081 */\n tag_1030\n jump\t// in\n tag_1536:\n /* \"#utility.yul\":36916:37087 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":37093:37472 */\n tag_380:\n /* \"#utility.yul\":37177:37183 */\n 0x00\n /* \"#utility.yul\":37226:37228 */\n 0x20\n /* \"#utility.yul\":37214:37223 */\n dup3\n /* \"#utility.yul\":37205:37212 */\n dup5\n /* \"#utility.yul\":37201:37224 */\n sub\n /* \"#utility.yul\":37197:37229 */\n slt\n /* \"#utility.yul\":37194:37313 */\n iszero\n tag_1538\n jumpi\n /* \"#utility.yul\":37232:37311 */\n tag_1539\n tag_1006\n jump\t// in\n tag_1539:\n /* \"#utility.yul\":37194:37313 */\n tag_1538:\n /* \"#utility.yul\":37352:37353 */\n 0x00\n /* \"#utility.yul\":37377:37455 */\n tag_1540\n /* \"#utility.yul\":37447:37454 */\n dup5\n /* \"#utility.yul\":37438:37444 */\n dup3\n /* \"#utility.yul\":37427:37436 */\n dup6\n /* \"#utility.yul\":37423:37445 */\n add\n /* \"#utility.yul\":37377:37455 */\n tag_1095\n jump\t// in\n tag_1540:\n /* \"#utility.yul\":37367:37455 */\n swap2\n pop\n /* \"#utility.yul\":37323:37465 */\n pop\n /* \"#utility.yul\":37093:37472 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":37478:37835 */\n tag_393:\n /* \"#utility.yul\":37551:37557 */\n 0x00\n /* \"#utility.yul\":37600:37602 */\n 0x20\n /* \"#utility.yul\":37588:37597 */\n dup3\n /* \"#utility.yul\":37579:37586 */\n dup5\n /* \"#utility.yul\":37575:37598 */\n sub\n /* \"#utility.yul\":37571:37603 */\n slt\n /* \"#utility.yul\":37568:37687 */\n iszero\n tag_1542\n jumpi\n /* \"#utility.yul\":37606:37685 */\n tag_1543\n tag_1006\n jump\t// in\n tag_1543:\n /* \"#utility.yul\":37568:37687 */\n tag_1542:\n /* \"#utility.yul\":37726:37727 */\n 0x00\n /* \"#utility.yul\":37751:37818 */\n tag_1544\n /* \"#utility.yul\":37810:37817 */\n dup5\n /* \"#utility.yul\":37801:37807 */\n dup3\n /* \"#utility.yul\":37790:37799 */\n dup6\n /* \"#utility.yul\":37786:37808 */\n add\n /* \"#utility.yul\":37751:37818 */\n tag_1031\n jump\t// in\n tag_1544:\n /* \"#utility.yul\":37741:37818 */\n swap2\n pop\n /* \"#utility.yul\":37697:37828 */\n pop\n /* \"#utility.yul\":37478:37835 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":37841:38505 */\n tag_417:\n /* \"#utility.yul\":38046:38050 */\n 0x00\n /* \"#utility.yul\":38084:38087 */\n 0xa0\n /* \"#utility.yul\":38073:38082 */\n dup3\n /* \"#utility.yul\":38069:38088 */\n add\n /* \"#utility.yul\":38061:38088 */\n swap1\n pop\n /* \"#utility.yul\":38098:38169 */\n tag_1546\n /* \"#utility.yul\":38166:38167 */\n 0x00\n /* \"#utility.yul\":38155:38164 */\n dup4\n /* \"#utility.yul\":38151:38168 */\n add\n /* \"#utility.yul\":38142:38148 */\n dup9\n /* \"#utility.yul\":38098:38169 */\n tag_1084\n jump\t// in\n tag_1546:\n /* \"#utility.yul\":38179:38251 */\n tag_1547\n /* \"#utility.yul\":38247:38249 */\n 0x20\n /* \"#utility.yul\":38236:38245 */\n dup4\n /* \"#utility.yul\":38232:38250 */\n add\n /* \"#utility.yul\":38223:38229 */\n dup8\n /* \"#utility.yul\":38179:38251 */\n tag_1084\n jump\t// in\n tag_1547:\n /* \"#utility.yul\":38261:38333 */\n tag_1548\n /* \"#utility.yul\":38329:38331 */\n 0x40\n /* \"#utility.yul\":38318:38327 */\n dup4\n /* \"#utility.yul\":38314:38332 */\n add\n /* \"#utility.yul\":38305:38311 */\n dup7\n /* \"#utility.yul\":38261:38333 */\n tag_1038\n jump\t// in\n tag_1548:\n /* \"#utility.yul\":38343:38415 */\n tag_1549\n /* \"#utility.yul\":38411:38413 */\n 0x60\n /* \"#utility.yul\":38400:38409 */\n dup4\n /* \"#utility.yul\":38396:38414 */\n add\n /* \"#utility.yul\":38387:38393 */\n dup6\n /* \"#utility.yul\":38343:38415 */\n tag_1038\n jump\t// in\n tag_1549:\n /* \"#utility.yul\":38425:38498 */\n tag_1550\n /* \"#utility.yul\":38493:38496 */\n 0x80\n /* \"#utility.yul\":38482:38491 */\n dup4\n /* \"#utility.yul\":38478:38497 */\n add\n /* \"#utility.yul\":38469:38475 */\n dup5\n /* \"#utility.yul\":38425:38498 */\n tag_1038\n jump\t// in\n tag_1550:\n /* \"#utility.yul\":37841:38505 */\n swap7\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":38511:38620 */\n tag_1096:\n /* \"#utility.yul\":38592:38613 */\n tag_1552\n /* \"#utility.yul\":38607:38612 */\n dup2\n /* \"#utility.yul\":38592:38613 */\n tag_1071\n jump\t// in\n tag_1552:\n /* \"#utility.yul\":38587:38590 */\n dup3\n /* \"#utility.yul\":38580:38614 */\n mstore\n /* \"#utility.yul\":38511:38620 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":38626:38946 */\n tag_449:\n /* \"#utility.yul\":38741:38745 */\n 0x00\n /* \"#utility.yul\":38779:38781 */\n 0x40\n /* \"#utility.yul\":38768:38777 */\n dup3\n /* \"#utility.yul\":38764:38782 */\n add\n /* \"#utility.yul\":38756:38782 */\n swap1\n pop\n /* \"#utility.yul\":38792:38863 */\n tag_1554\n /* \"#utility.yul\":38860:38861 */\n 0x00\n /* \"#utility.yul\":38849:38858 */\n dup4\n /* \"#utility.yul\":38845:38862 */\n add\n /* \"#utility.yul\":38836:38842 */\n dup6\n /* \"#utility.yul\":38792:38863 */\n tag_1074\n jump\t// in\n tag_1554:\n /* \"#utility.yul\":38873:38939 */\n tag_1555\n /* \"#utility.yul\":38935:38937 */\n 0x20\n /* \"#utility.yul\":38924:38933 */\n dup4\n /* \"#utility.yul\":38920:38938 */\n add\n /* \"#utility.yul\":38911:38917 */\n dup5\n /* \"#utility.yul\":38873:38939 */\n tag_1096\n jump\t// in\n tag_1555:\n /* \"#utility.yul\":38626:38946 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":38952:39095 */\n tag_1097:\n /* \"#utility.yul\":39009:39014 */\n 0x00\n /* \"#utility.yul\":39040:39046 */\n dup2\n /* \"#utility.yul\":39034:39047 */\n mload\n /* \"#utility.yul\":39025:39047 */\n swap1\n pop\n /* \"#utility.yul\":39056:39089 */\n tag_1557\n /* \"#utility.yul\":39083:39088 */\n dup2\n /* \"#utility.yul\":39056:39089 */\n tag_1069\n jump\t// in\n tag_1557:\n /* \"#utility.yul\":38952:39095 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":39101:39764 */\n tag_453:\n /* \"#utility.yul\":39189:39195 */\n 0x00\n /* \"#utility.yul\":39197:39203 */\n dup1\n /* \"#utility.yul\":39205:39211 */\n 0x00\n /* \"#utility.yul\":39254:39256 */\n 0x60\n /* \"#utility.yul\":39242:39251 */\n dup5\n /* \"#utility.yul\":39233:39240 */\n dup7\n /* \"#utility.yul\":39229:39252 */\n sub\n /* \"#utility.yul\":39225:39257 */\n slt\n /* \"#utility.yul\":39222:39341 */\n iszero\n tag_1559\n jumpi\n /* \"#utility.yul\":39260:39339 */\n tag_1560\n tag_1006\n jump\t// in\n tag_1560:\n /* \"#utility.yul\":39222:39341 */\n tag_1559:\n /* \"#utility.yul\":39380:39381 */\n 0x00\n /* \"#utility.yul\":39405:39469 */\n tag_1561\n /* \"#utility.yul\":39461:39468 */\n dup7\n /* \"#utility.yul\":39452:39458 */\n dup3\n /* \"#utility.yul\":39441:39450 */\n dup8\n /* \"#utility.yul\":39437:39459 */\n add\n /* \"#utility.yul\":39405:39469 */\n tag_1097\n jump\t// in\n tag_1561:\n /* \"#utility.yul\":39395:39469 */\n swap4\n pop\n /* \"#utility.yul\":39351:39479 */\n pop\n /* \"#utility.yul\":39518:39520 */\n 0x20\n /* \"#utility.yul\":39544:39608 */\n tag_1562\n /* \"#utility.yul\":39600:39607 */\n dup7\n /* \"#utility.yul\":39591:39597 */\n dup3\n /* \"#utility.yul\":39580:39589 */\n dup8\n /* \"#utility.yul\":39576:39598 */\n add\n /* \"#utility.yul\":39544:39608 */\n tag_1097\n jump\t// in\n tag_1562:\n /* \"#utility.yul\":39534:39608 */\n swap3\n pop\n /* \"#utility.yul\":39489:39618 */\n pop\n /* \"#utility.yul\":39657:39659 */\n 0x40\n /* \"#utility.yul\":39683:39747 */\n tag_1563\n /* \"#utility.yul\":39739:39746 */\n dup7\n /* \"#utility.yul\":39730:39736 */\n dup3\n /* \"#utility.yul\":39719:39728 */\n dup8\n /* \"#utility.yul\":39715:39737 */\n add\n /* \"#utility.yul\":39683:39747 */\n tag_1097\n jump\t// in\n tag_1563:\n /* \"#utility.yul\":39673:39747 */\n swap2\n pop\n /* \"#utility.yul\":39628:39757 */\n pop\n /* \"#utility.yul\":39101:39764 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":39770:39887 */\n tag_1098:\n /* \"#utility.yul\":39879:39880 */\n 0x00\n /* \"#utility.yul\":39876:39877 */\n dup1\n /* \"#utility.yul\":39869:39881 */\n revert\n /* \"#utility.yul\":39893:39991 */\n tag_1099:\n /* \"#utility.yul\":39977:39983 */\n dup3\n /* \"#utility.yul\":39972:39975 */\n dup2\n /* \"#utility.yul\":39967:39970 */\n dup4\n /* \"#utility.yul\":39954:39984 */\n calldatacopy\n /* \"#utility.yul\":39893:39991 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":40027:40564 */\n tag_1100:\n /* \"#utility.yul\":40155:40158 */\n 0x00\n /* \"#utility.yul\":40176:40262 */\n tag_1567\n /* \"#utility.yul\":40255:40261 */\n dup4\n /* \"#utility.yul\":40250:40253 */\n dup6\n /* \"#utility.yul\":40176:40262 */\n tag_1042\n jump\t// in\n tag_1567:\n /* \"#utility.yul\":40169:40262 */\n swap4\n pop\n /* \"#utility.yul\":40286:40352 */\n 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":40278:40284 */\n dup4\n /* \"#utility.yul\":40275:40353 */\n gt\n /* \"#utility.yul\":40272:40437 */\n iszero\n tag_1568\n jumpi\n /* \"#utility.yul\":40356:40435 */\n tag_1569\n tag_1098\n jump\t// in\n tag_1569:\n /* \"#utility.yul\":40272:40437 */\n tag_1568:\n /* \"#utility.yul\":40468:40472 */\n 0x20\n /* \"#utility.yul\":40460:40466 */\n dup4\n /* \"#utility.yul\":40456:40473 */\n mul\n /* \"#utility.yul\":40446:40473 */\n swap3\n pop\n /* \"#utility.yul\":40483:40526 */\n tag_1570\n /* \"#utility.yul\":40519:40525 */\n dup4\n /* \"#utility.yul\":40514:40517 */\n dup6\n /* \"#utility.yul\":40507:40512 */\n dup5\n /* \"#utility.yul\":40483:40526 */\n tag_1099\n jump\t// in\n tag_1570:\n /* \"#utility.yul\":40551:40557 */\n dup3\n /* \"#utility.yul\":40546:40549 */\n dup5\n /* \"#utility.yul\":40542:40558 */\n add\n /* \"#utility.yul\":40535:40558 */\n swap1\n pop\n /* \"#utility.yul\":40027:40564 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":40570:41465 */\n tag_577:\n /* \"#utility.yul\":40867:40871 */\n 0x00\n /* \"#utility.yul\":40905:40908 */\n 0x80\n /* \"#utility.yul\":40894:40903 */\n dup3\n /* \"#utility.yul\":40890:40909 */\n add\n /* \"#utility.yul\":40882:40909 */\n swap1\n pop\n /* \"#utility.yul\":40919:40990 */\n tag_1572\n /* \"#utility.yul\":40987:40988 */\n 0x00\n /* \"#utility.yul\":40976:40985 */\n dup4\n /* \"#utility.yul\":40972:40989 */\n add\n /* \"#utility.yul\":40963:40969 */\n dup10\n /* \"#utility.yul\":40919:40990 */\n tag_1084\n jump\t// in\n tag_1572:\n /* \"#utility.yul\":41000:41072 */\n tag_1573\n /* \"#utility.yul\":41068:41070 */\n 0x20\n /* \"#utility.yul\":41057:41066 */\n dup4\n /* \"#utility.yul\":41053:41071 */\n add\n /* \"#utility.yul\":41044:41050 */\n dup9\n /* \"#utility.yul\":41000:41072 */\n tag_1084\n jump\t// in\n tag_1573:\n /* \"#utility.yul\":41119:41128 */\n dup2\n /* \"#utility.yul\":41113:41117 */\n dup2\n /* \"#utility.yul\":41109:41129 */\n sub\n /* \"#utility.yul\":41104:41106 */\n 0x40\n /* \"#utility.yul\":41093:41102 */\n dup4\n /* \"#utility.yul\":41089:41107 */\n add\n /* \"#utility.yul\":41082:41130 */\n mstore\n /* \"#utility.yul\":41147:41265 */\n tag_1574\n /* \"#utility.yul\":41260:41264 */\n dup2\n /* \"#utility.yul\":41251:41257 */\n dup7\n /* \"#utility.yul\":41243:41249 */\n dup9\n /* \"#utility.yul\":41147:41265 */\n tag_1100\n jump\t// in\n tag_1574:\n /* \"#utility.yul\":41139:41265 */\n swap1\n pop\n /* \"#utility.yul\":41312:41321 */\n dup2\n /* \"#utility.yul\":41306:41310 */\n dup2\n /* \"#utility.yul\":41302:41322 */\n sub\n /* \"#utility.yul\":41297:41299 */\n 0x60\n /* \"#utility.yul\":41286:41295 */\n dup4\n /* \"#utility.yul\":41282:41300 */\n add\n /* \"#utility.yul\":41275:41323 */\n mstore\n /* \"#utility.yul\":41340:41458 */\n tag_1575\n /* \"#utility.yul\":41453:41457 */\n dup2\n /* \"#utility.yul\":41444:41450 */\n dup5\n /* \"#utility.yul\":41436:41442 */\n dup7\n /* \"#utility.yul\":41340:41458 */\n tag_1100\n jump\t// in\n tag_1575:\n /* \"#utility.yul\":41332:41458 */\n swap1\n pop\n /* \"#utility.yul\":40570:41465 */\n swap8\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":41471:41612 */\n tag_1101:\n /* \"#utility.yul\":41527:41532 */\n 0x00\n /* \"#utility.yul\":41558:41564 */\n dup2\n /* \"#utility.yul\":41552:41565 */\n mload\n /* \"#utility.yul\":41543:41565 */\n swap1\n pop\n /* \"#utility.yul\":41574:41606 */\n tag_1577\n /* \"#utility.yul\":41600:41605 */\n dup2\n /* \"#utility.yul\":41574:41606 */\n tag_1049\n jump\t// in\n tag_1577:\n /* \"#utility.yul\":41471:41612 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":41618:41967 */\n tag_586:\n /* \"#utility.yul\":41687:41693 */\n 0x00\n /* \"#utility.yul\":41736:41738 */\n 0x20\n /* \"#utility.yul\":41724:41733 */\n dup3\n /* \"#utility.yul\":41715:41722 */\n dup5\n /* \"#utility.yul\":41711:41734 */\n sub\n /* \"#utility.yul\":41707:41739 */\n slt\n /* \"#utility.yul\":41704:41823 */\n iszero\n tag_1579\n jumpi\n /* \"#utility.yul\":41742:41821 */\n tag_1580\n tag_1006\n jump\t// in\n tag_1580:\n /* \"#utility.yul\":41704:41823 */\n tag_1579:\n /* \"#utility.yul\":41862:41863 */\n 0x00\n /* \"#utility.yul\":41887:41950 */\n tag_1581\n /* \"#utility.yul\":41942:41949 */\n dup5\n /* \"#utility.yul\":41933:41939 */\n dup3\n /* \"#utility.yul\":41922:41931 */\n dup6\n /* \"#utility.yul\":41918:41940 */\n add\n /* \"#utility.yul\":41887:41950 */\n tag_1101\n jump\t// in\n tag_1581:\n /* \"#utility.yul\":41877:41950 */\n swap2\n pop\n /* \"#utility.yul\":41833:41960 */\n pop\n /* \"#utility.yul\":41618:41967 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":41973:42153 */\n tag_629:\n /* \"#utility.yul\":42021:42098 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":42018:42019 */\n 0x00\n /* \"#utility.yul\":42011:42099 */\n mstore\n /* \"#utility.yul\":42118:42122 */\n 0x21\n /* \"#utility.yul\":42115:42116 */\n 0x04\n /* \"#utility.yul\":42108:42123 */\n mstore\n /* \"#utility.yul\":42142:42146 */\n 0x24\n /* \"#utility.yul\":42139:42140 */\n 0x00\n /* \"#utility.yul\":42132:42147 */\n revert\n /* \"#utility.yul\":42159:42273 */\n tag_1102:\n /* \"#utility.yul\":42196:42203 */\n 0x00\n /* \"#utility.yul\":42236:42266 */\n 0xffffffffffffffffffffffffffff\n /* \"#utility.yul\":42229:42234 */\n dup3\n /* \"#utility.yul\":42225:42267 */\n and\n /* \"#utility.yul\":42214:42267 */\n swap1\n pop\n /* \"#utility.yul\":42159:42273 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":42279:42401 */\n tag_1103:\n /* \"#utility.yul\":42352:42376 */\n tag_1585\n /* \"#utility.yul\":42370:42375 */\n dup2\n /* \"#utility.yul\":42352:42376 */\n tag_1102\n jump\t// in\n tag_1585:\n /* \"#utility.yul\":42345:42350 */\n dup2\n /* \"#utility.yul\":42342:42377 */\n eq\n /* \"#utility.yul\":42332:42395 */\n tag_1586\n jumpi\n /* \"#utility.yul\":42391:42392 */\n 0x00\n /* \"#utility.yul\":42388:42389 */\n dup1\n /* \"#utility.yul\":42381:42393 */\n revert\n /* \"#utility.yul\":42332:42395 */\n tag_1586:\n /* \"#utility.yul\":42279:42401 */\n pop\n jump\t// out\n /* \"#utility.yul\":42407:42550 */\n tag_1104:\n /* \"#utility.yul\":42464:42469 */\n 0x00\n /* \"#utility.yul\":42495:42501 */\n dup2\n /* \"#utility.yul\":42489:42502 */\n mload\n /* \"#utility.yul\":42480:42502 */\n swap1\n pop\n /* \"#utility.yul\":42511:42544 */\n tag_1588\n /* \"#utility.yul\":42538:42543 */\n dup2\n /* \"#utility.yul\":42511:42544 */\n tag_1103\n jump\t// in\n tag_1588:\n /* \"#utility.yul\":42407:42550 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":42556:42649 */\n tag_1105:\n /* \"#utility.yul\":42592:42599 */\n 0x00\n /* \"#utility.yul\":42632:42642 */\n 0xffffffff\n /* \"#utility.yul\":42625:42630 */\n dup3\n /* \"#utility.yul\":42621:42643 */\n and\n /* \"#utility.yul\":42610:42643 */\n swap1\n pop\n /* \"#utility.yul\":42556:42649 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":42655:42775 */\n tag_1106:\n /* \"#utility.yul\":42727:42750 */\n tag_1591\n /* \"#utility.yul\":42744:42749 */\n dup2\n /* \"#utility.yul\":42727:42750 */\n tag_1105\n jump\t// in\n tag_1591:\n /* \"#utility.yul\":42720:42725 */\n dup2\n /* \"#utility.yul\":42717:42751 */\n eq\n /* \"#utility.yul\":42707:42769 */\n tag_1592\n jumpi\n /* \"#utility.yul\":42765:42766 */\n 0x00\n /* \"#utility.yul\":42762:42763 */\n dup1\n /* \"#utility.yul\":42755:42767 */\n revert\n /* \"#utility.yul\":42707:42769 */\n tag_1592:\n /* \"#utility.yul\":42655:42775 */\n pop\n jump\t// out\n /* \"#utility.yul\":42781:42922 */\n tag_1107:\n /* \"#utility.yul\":42837:42842 */\n 0x00\n /* \"#utility.yul\":42868:42874 */\n dup2\n /* \"#utility.yul\":42862:42875 */\n mload\n /* \"#utility.yul\":42853:42875 */\n swap1\n pop\n /* \"#utility.yul\":42884:42916 */\n tag_1594\n /* \"#utility.yul\":42910:42915 */\n dup2\n /* \"#utility.yul\":42884:42916 */\n tag_1106\n jump\t// in\n tag_1594:\n /* \"#utility.yul\":42781:42922 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":42928:43589 */\n tag_636:\n /* \"#utility.yul\":43015:43021 */\n 0x00\n /* \"#utility.yul\":43023:43029 */\n dup1\n /* \"#utility.yul\":43031:43037 */\n 0x00\n /* \"#utility.yul\":43080:43082 */\n 0x60\n /* \"#utility.yul\":43068:43077 */\n dup5\n /* \"#utility.yul\":43059:43066 */\n dup7\n /* \"#utility.yul\":43055:43078 */\n sub\n /* \"#utility.yul\":43051:43083 */\n slt\n /* \"#utility.yul\":43048:43167 */\n iszero\n tag_1596\n jumpi\n /* \"#utility.yul\":43086:43165 */\n tag_1597\n tag_1006\n jump\t// in\n tag_1597:\n /* \"#utility.yul\":43048:43167 */\n tag_1596:\n /* \"#utility.yul\":43206:43207 */\n 0x00\n /* \"#utility.yul\":43231:43295 */\n tag_1598\n /* \"#utility.yul\":43287:43294 */\n dup7\n /* \"#utility.yul\":43278:43284 */\n dup3\n /* \"#utility.yul\":43267:43276 */\n dup8\n /* \"#utility.yul\":43263:43285 */\n add\n /* \"#utility.yul\":43231:43295 */\n tag_1104\n jump\t// in\n tag_1598:\n /* \"#utility.yul\":43221:43295 */\n swap4\n pop\n /* \"#utility.yul\":43177:43305 */\n pop\n /* \"#utility.yul\":43344:43346 */\n 0x20\n /* \"#utility.yul\":43370:43434 */\n tag_1599\n /* \"#utility.yul\":43426:43433 */\n dup7\n /* \"#utility.yul\":43417:43423 */\n dup3\n /* \"#utility.yul\":43406:43415 */\n dup8\n /* \"#utility.yul\":43402:43424 */\n add\n /* \"#utility.yul\":43370:43434 */\n tag_1104\n jump\t// in\n tag_1599:\n /* \"#utility.yul\":43360:43434 */\n swap3\n pop\n /* \"#utility.yul\":43315:43444 */\n pop\n /* \"#utility.yul\":43483:43485 */\n 0x40\n /* \"#utility.yul\":43509:43572 */\n tag_1600\n /* \"#utility.yul\":43564:43571 */\n dup7\n /* \"#utility.yul\":43555:43561 */\n dup3\n /* \"#utility.yul\":43544:43553 */\n dup8\n /* \"#utility.yul\":43540:43562 */\n add\n /* \"#utility.yul\":43509:43572 */\n tag_1107\n jump\t// in\n tag_1600:\n /* \"#utility.yul\":43499:43572 */\n swap2\n pop\n /* \"#utility.yul\":43454:43582 */\n pop\n /* \"#utility.yul\":42928:43589 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":43595:43680 */\n tag_1108:\n /* \"#utility.yul\":43640:43647 */\n 0x00\n /* \"#utility.yul\":43669:43674 */\n dup2\n /* \"#utility.yul\":43658:43674 */\n swap1\n pop\n /* \"#utility.yul\":43595:43680 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":43686:43844 */\n tag_1109:\n /* \"#utility.yul\":43744:43753 */\n 0x00\n /* \"#utility.yul\":43777:43838 */\n tag_1603\n /* \"#utility.yul\":43795:43837 */\n tag_1604\n /* \"#utility.yul\":43804:43836 */\n tag_1605\n /* \"#utility.yul\":43830:43835 */\n dup5\n /* \"#utility.yul\":43804:43836 */\n tag_1108\n jump\t// in\n tag_1605:\n /* \"#utility.yul\":43795:43837 */\n tag_1054\n jump\t// in\n tag_1604:\n /* \"#utility.yul\":43777:43838 */\n tag_1008\n jump\t// in\n tag_1603:\n /* \"#utility.yul\":43764:43838 */\n swap1\n pop\n /* \"#utility.yul\":43686:43844 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":43850:43997 */\n tag_1110:\n /* \"#utility.yul\":43945:43990 */\n tag_1607\n /* \"#utility.yul\":43984:43989 */\n dup2\n /* \"#utility.yul\":43945:43990 */\n tag_1109\n jump\t// in\n tag_1607:\n /* \"#utility.yul\":43940:43943 */\n dup3\n /* \"#utility.yul\":43933:43991 */\n mstore\n /* \"#utility.yul\":43850:43997 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":44003:44171 */\n tag_1111:\n /* \"#utility.yul\":44086:44097 */\n 0x00\n /* \"#utility.yul\":44120:44126 */\n dup3\n /* \"#utility.yul\":44115:44118 */\n dup3\n /* \"#utility.yul\":44108:44127 */\n mstore\n /* \"#utility.yul\":44160:44164 */\n 0x20\n /* \"#utility.yul\":44155:44158 */\n dup3\n /* \"#utility.yul\":44151:44165 */\n add\n /* \"#utility.yul\":44136:44165 */\n swap1\n pop\n /* \"#utility.yul\":44003:44171 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":44177:44291 */\n tag_1112:\n pop\n jump\t// out\n /* \"#utility.yul\":44297:44659 */\n tag_1113:\n /* \"#utility.yul\":44438:44441 */\n 0x00\n /* \"#utility.yul\":44459:44524 */\n tag_1611\n /* \"#utility.yul\":44522:44523 */\n 0x00\n /* \"#utility.yul\":44517:44520 */\n dup4\n /* \"#utility.yul\":44459:44524 */\n tag_1111\n jump\t// in\n tag_1611:\n /* \"#utility.yul\":44452:44524 */\n swap2\n pop\n /* \"#utility.yul\":44533:44626 */\n tag_1612\n /* \"#utility.yul\":44622:44625 */\n dup3\n /* \"#utility.yul\":44533:44626 */\n tag_1112\n jump\t// in\n tag_1612:\n /* \"#utility.yul\":44651:44652 */\n 0x00\n /* \"#utility.yul\":44646:44649 */\n dup3\n /* \"#utility.yul\":44642:44653 */\n add\n /* \"#utility.yul\":44635:44653 */\n swap1\n pop\n /* \"#utility.yul\":44297:44659 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":44665:45429 */\n tag_645:\n /* \"#utility.yul\":44922:44926 */\n 0x00\n /* \"#utility.yul\":44960:44963 */\n 0x80\n /* \"#utility.yul\":44949:44958 */\n dup3\n /* \"#utility.yul\":44945:44964 */\n add\n /* \"#utility.yul\":44937:44964 */\n swap1\n pop\n /* \"#utility.yul\":44974:45053 */\n tag_1614\n /* \"#utility.yul\":45050:45051 */\n 0x00\n /* \"#utility.yul\":45039:45048 */\n dup4\n /* \"#utility.yul\":45035:45052 */\n add\n /* \"#utility.yul\":45026:45032 */\n dup7\n /* \"#utility.yul\":44974:45053 */\n tag_1110\n jump\t// in\n tag_1614:\n /* \"#utility.yul\":45063:45135 */\n tag_1615\n /* \"#utility.yul\":45131:45133 */\n 0x20\n /* \"#utility.yul\":45120:45129 */\n dup4\n /* \"#utility.yul\":45116:45134 */\n add\n /* \"#utility.yul\":45107:45113 */\n dup6\n /* \"#utility.yul\":45063:45135 */\n tag_1038\n jump\t// in\n tag_1615:\n /* \"#utility.yul\":45145:45217 */\n tag_1616\n /* \"#utility.yul\":45213:45215 */\n 0x40\n /* \"#utility.yul\":45202:45211 */\n dup4\n /* \"#utility.yul\":45198:45216 */\n add\n /* \"#utility.yul\":45189:45195 */\n dup5\n /* \"#utility.yul\":45145:45217 */\n tag_1084\n jump\t// in\n tag_1616:\n /* \"#utility.yul\":45264:45273 */\n dup2\n /* \"#utility.yul\":45258:45262 */\n dup2\n /* \"#utility.yul\":45254:45274 */\n sub\n /* \"#utility.yul\":45249:45251 */\n 0x60\n /* \"#utility.yul\":45238:45247 */\n dup4\n /* \"#utility.yul\":45234:45252 */\n add\n /* \"#utility.yul\":45227:45275 */\n mstore\n /* \"#utility.yul\":45292:45422 */\n tag_1617\n /* \"#utility.yul\":45417:45421 */\n dup2\n /* \"#utility.yul\":45292:45422 */\n tag_1113\n jump\t// in\n tag_1617:\n /* \"#utility.yul\":45284:45422 */\n swap1\n pop\n /* \"#utility.yul\":44665:45429 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":45435:46199 */\n tag_656:\n /* \"#utility.yul\":45692:45696 */\n 0x00\n /* \"#utility.yul\":45730:45733 */\n 0x80\n /* \"#utility.yul\":45719:45728 */\n dup3\n /* \"#utility.yul\":45715:45734 */\n add\n /* \"#utility.yul\":45707:45734 */\n swap1\n pop\n /* \"#utility.yul\":45744:45815 */\n tag_1619\n /* \"#utility.yul\":45812:45813 */\n 0x00\n /* \"#utility.yul\":45801:45810 */\n dup4\n /* \"#utility.yul\":45797:45814 */\n add\n /* \"#utility.yul\":45788:45794 */\n dup7\n /* \"#utility.yul\":45744:45815 */\n tag_1038\n jump\t// in\n tag_1619:\n /* \"#utility.yul\":45825:45905 */\n tag_1620\n /* \"#utility.yul\":45901:45903 */\n 0x20\n /* \"#utility.yul\":45890:45899 */\n dup4\n /* \"#utility.yul\":45886:45904 */\n add\n /* \"#utility.yul\":45877:45883 */\n dup6\n /* \"#utility.yul\":45825:45905 */\n tag_1110\n jump\t// in\n tag_1620:\n /* \"#utility.yul\":45915:45987 */\n tag_1621\n /* \"#utility.yul\":45983:45985 */\n 0x40\n /* \"#utility.yul\":45972:45981 */\n dup4\n /* \"#utility.yul\":45968:45986 */\n add\n /* \"#utility.yul\":45959:45965 */\n dup5\n /* \"#utility.yul\":45915:45987 */\n tag_1084\n jump\t// in\n tag_1621:\n /* \"#utility.yul\":46034:46043 */\n dup2\n /* \"#utility.yul\":46028:46032 */\n dup2\n /* \"#utility.yul\":46024:46044 */\n sub\n /* \"#utility.yul\":46019:46021 */\n 0x60\n /* \"#utility.yul\":46008:46017 */\n dup4\n /* \"#utility.yul\":46004:46022 */\n add\n /* \"#utility.yul\":45997:46045 */\n mstore\n /* \"#utility.yul\":46062:46192 */\n tag_1622\n /* \"#utility.yul\":46187:46191 */\n dup2\n /* \"#utility.yul\":46062:46192 */\n tag_1113\n jump\t// in\n tag_1622:\n /* \"#utility.yul\":46054:46192 */\n swap1\n pop\n /* \"#utility.yul\":45435:46199 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":46205:46525 */\n tag_665:\n /* \"#utility.yul\":46320:46324 */\n 0x00\n /* \"#utility.yul\":46358:46360 */\n 0x40\n /* \"#utility.yul\":46347:46356 */\n dup3\n /* \"#utility.yul\":46343:46361 */\n add\n /* \"#utility.yul\":46335:46361 */\n swap1\n pop\n /* \"#utility.yul\":46371:46436 */\n tag_1624\n /* \"#utility.yul\":46433:46434 */\n 0x00\n /* \"#utility.yul\":46422:46431 */\n dup4\n /* \"#utility.yul\":46418:46435 */\n add\n /* \"#utility.yul\":46409:46415 */\n dup6\n /* \"#utility.yul\":46371:46436 */\n tag_1096\n jump\t// in\n tag_1624:\n /* \"#utility.yul\":46446:46518 */\n tag_1625\n /* \"#utility.yul\":46514:46516 */\n 0x20\n /* \"#utility.yul\":46503:46512 */\n dup4\n /* \"#utility.yul\":46499:46517 */\n add\n /* \"#utility.yul\":46490:46496 */\n dup5\n /* \"#utility.yul\":46446:46518 */\n tag_1084\n jump\t// in\n tag_1625:\n /* \"#utility.yul\":46205:46525 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":46531:46608 */\n tag_1114:\n /* \"#utility.yul\":46568:46575 */\n 0x00\n /* \"#utility.yul\":46597:46602 */\n dup2\n /* \"#utility.yul\":46586:46602 */\n swap1\n pop\n /* \"#utility.yul\":46531:46608 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":46614:46736 */\n tag_1115:\n /* \"#utility.yul\":46687:46711 */\n tag_1628\n /* \"#utility.yul\":46705:46710 */\n dup2\n /* \"#utility.yul\":46687:46711 */\n tag_1114\n jump\t// in\n tag_1628:\n /* \"#utility.yul\":46680:46685 */\n dup2\n /* \"#utility.yul\":46677:46712 */\n eq\n /* \"#utility.yul\":46667:46730 */\n tag_1629\n jumpi\n /* \"#utility.yul\":46726:46727 */\n 0x00\n /* \"#utility.yul\":46723:46724 */\n dup1\n /* \"#utility.yul\":46716:46728 */\n revert\n /* \"#utility.yul\":46667:46730 */\n tag_1629:\n /* \"#utility.yul\":46614:46736 */\n pop\n jump\t// out\n /* \"#utility.yul\":46742:46885 */\n tag_1116:\n /* \"#utility.yul\":46799:46804 */\n 0x00\n /* \"#utility.yul\":46830:46836 */\n dup2\n /* \"#utility.yul\":46824:46837 */\n mload\n /* \"#utility.yul\":46815:46837 */\n swap1\n pop\n /* \"#utility.yul\":46846:46879 */\n tag_1631\n /* \"#utility.yul\":46873:46878 */\n dup2\n /* \"#utility.yul\":46846:46879 */\n tag_1115\n jump\t// in\n tag_1631:\n /* \"#utility.yul\":46742:46885 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":46891:47242 */\n tag_669:\n /* \"#utility.yul\":46961:46967 */\n 0x00\n /* \"#utility.yul\":47010:47012 */\n 0x20\n /* \"#utility.yul\":46998:47007 */\n dup3\n /* \"#utility.yul\":46989:46996 */\n dup5\n /* \"#utility.yul\":46985:47008 */\n sub\n /* \"#utility.yul\":46981:47013 */\n slt\n /* \"#utility.yul\":46978:47097 */\n iszero\n tag_1633\n jumpi\n /* \"#utility.yul\":47016:47095 */\n tag_1634\n tag_1006\n jump\t// in\n tag_1634:\n /* \"#utility.yul\":46978:47097 */\n tag_1633:\n /* \"#utility.yul\":47136:47137 */\n 0x00\n /* \"#utility.yul\":47161:47225 */\n tag_1635\n /* \"#utility.yul\":47217:47224 */\n dup5\n /* \"#utility.yul\":47208:47214 */\n dup3\n /* \"#utility.yul\":47197:47206 */\n dup6\n /* \"#utility.yul\":47193:47215 */\n add\n /* \"#utility.yul\":47161:47225 */\n tag_1116\n jump\t// in\n tag_1635:\n /* \"#utility.yul\":47151:47225 */\n swap2\n pop\n /* \"#utility.yul\":47107:47235 */\n pop\n /* \"#utility.yul\":46891:47242 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":47248:47419 */\n tag_724:\n /* \"#utility.yul\":47287:47290 */\n 0x00\n /* \"#utility.yul\":47310:47334 */\n tag_1637\n /* \"#utility.yul\":47328:47333 */\n dup3\n /* \"#utility.yul\":47310:47334 */\n tag_1008\n jump\t// in\n tag_1637:\n /* \"#utility.yul\":47301:47334 */\n swap2\n pop\n /* \"#utility.yul\":47356:47360 */\n 0x00\n /* \"#utility.yul\":47349:47354 */\n dup3\n /* \"#utility.yul\":47346:47361 */\n sub\n /* \"#utility.yul\":47343:47384 */\n tag_1638\n jumpi\n /* \"#utility.yul\":47364:47382 */\n tag_1639\n tag_1083\n jump\t// in\n tag_1639:\n /* \"#utility.yul\":47343:47384 */\n tag_1638:\n /* \"#utility.yul\":47411:47412 */\n 0x01\n /* \"#utility.yul\":47404:47409 */\n dup3\n /* \"#utility.yul\":47400:47413 */\n sub\n /* \"#utility.yul\":47393:47413 */\n swap1\n pop\n /* \"#utility.yul\":47248:47419 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":47425:47572 */\n tag_1117:\n /* \"#utility.yul\":47526:47537 */\n 0x00\n /* \"#utility.yul\":47563:47566 */\n dup2\n /* \"#utility.yul\":47548:47566 */\n swap1\n pop\n /* \"#utility.yul\":47425:47572 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":47578:47976 */\n tag_1118:\n /* \"#utility.yul\":47737:47740 */\n 0x00\n /* \"#utility.yul\":47758:47841 */\n tag_1642\n /* \"#utility.yul\":47839:47840 */\n 0x00\n /* \"#utility.yul\":47834:47837 */\n dup4\n /* \"#utility.yul\":47758:47841 */\n tag_1117\n jump\t// in\n tag_1642:\n /* \"#utility.yul\":47751:47841 */\n swap2\n pop\n /* \"#utility.yul\":47850:47943 */\n tag_1643\n /* \"#utility.yul\":47939:47942 */\n dup3\n /* \"#utility.yul\":47850:47943 */\n tag_1112\n jump\t// in\n tag_1643:\n /* \"#utility.yul\":47968:47969 */\n 0x00\n /* \"#utility.yul\":47963:47966 */\n dup3\n /* \"#utility.yul\":47959:47970 */\n add\n /* \"#utility.yul\":47952:47970 */\n swap1\n pop\n /* \"#utility.yul\":47578:47976 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":47982:48361 */\n tag_779:\n /* \"#utility.yul\":48166:48169 */\n 0x00\n /* \"#utility.yul\":48188:48335 */\n tag_1645\n /* \"#utility.yul\":48331:48334 */\n dup3\n /* \"#utility.yul\":48188:48335 */\n tag_1118\n jump\t// in\n tag_1645:\n /* \"#utility.yul\":48181:48335 */\n swap2\n pop\n /* \"#utility.yul\":48352:48355 */\n dup2\n /* \"#utility.yul\":48345:48355 */\n swap1\n pop\n /* \"#utility.yul\":47982:48361 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":48367:48699 */\n tag_785:\n /* \"#utility.yul\":48488:48492 */\n 0x00\n /* \"#utility.yul\":48526:48528 */\n 0x40\n /* \"#utility.yul\":48515:48524 */\n dup3\n /* \"#utility.yul\":48511:48529 */\n add\n /* \"#utility.yul\":48503:48529 */\n swap1\n pop\n /* \"#utility.yul\":48539:48610 */\n tag_1647\n /* \"#utility.yul\":48607:48608 */\n 0x00\n /* \"#utility.yul\":48596:48605 */\n dup4\n /* \"#utility.yul\":48592:48609 */\n add\n /* \"#utility.yul\":48583:48589 */\n dup6\n /* \"#utility.yul\":48539:48610 */\n tag_1084\n jump\t// in\n tag_1647:\n /* \"#utility.yul\":48620:48692 */\n tag_1648\n /* \"#utility.yul\":48688:48690 */\n 0x20\n /* \"#utility.yul\":48677:48686 */\n dup4\n /* \"#utility.yul\":48673:48691 */\n add\n /* \"#utility.yul\":48664:48670 */\n dup5\n /* \"#utility.yul\":48620:48692 */\n tag_1038\n jump\t// in\n tag_1648:\n /* \"#utility.yul\":48367:48699 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":48705:49203 */\n tag_840:\n /* \"#utility.yul\":48882:48886 */\n 0x00\n /* \"#utility.yul\":48920:48922 */\n 0x60\n /* \"#utility.yul\":48909:48918 */\n dup3\n /* \"#utility.yul\":48905:48923 */\n add\n /* \"#utility.yul\":48897:48923 */\n swap1\n pop\n /* \"#utility.yul\":48933:49018 */\n tag_1650\n /* \"#utility.yul\":49015:49016 */\n 0x00\n /* \"#utility.yul\":49004:49013 */\n dup4\n /* \"#utility.yul\":49000:49017 */\n add\n /* \"#utility.yul\":48991:48997 */\n dup7\n /* \"#utility.yul\":48933:49018 */\n tag_1088\n jump\t// in\n tag_1650:\n /* \"#utility.yul\":49028:49114 */\n tag_1651\n /* \"#utility.yul\":49110:49112 */\n 0x20\n /* \"#utility.yul\":49099:49108 */\n dup4\n /* \"#utility.yul\":49095:49113 */\n add\n /* \"#utility.yul\":49086:49092 */\n dup6\n /* \"#utility.yul\":49028:49114 */\n tag_1088\n jump\t// in\n tag_1651:\n /* \"#utility.yul\":49124:49196 */\n tag_1652\n /* \"#utility.yul\":49192:49194 */\n 0x40\n /* \"#utility.yul\":49181:49190 */\n dup4\n /* \"#utility.yul\":49177:49195 */\n add\n /* \"#utility.yul\":49168:49174 */\n dup5\n /* \"#utility.yul\":49124:49196 */\n tag_1038\n jump\t// in\n tag_1652:\n /* \"#utility.yul\":48705:49203 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":49209:49350 */\n tag_1119:\n /* \"#utility.yul\":49265:49270 */\n 0x00\n /* \"#utility.yul\":49296:49302 */\n dup2\n /* \"#utility.yul\":49290:49303 */\n mload\n /* \"#utility.yul\":49281:49303 */\n swap1\n pop\n /* \"#utility.yul\":49312:49344 */\n tag_1654\n /* \"#utility.yul\":49338:49343 */\n dup2\n /* \"#utility.yul\":49312:49344 */\n tag_1052\n jump\t// in\n tag_1654:\n /* \"#utility.yul\":49209:49350 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":49356:49493 */\n tag_1120:\n /* \"#utility.yul\":49410:49415 */\n 0x00\n /* \"#utility.yul\":49441:49447 */\n dup2\n /* \"#utility.yul\":49435:49448 */\n mload\n /* \"#utility.yul\":49426:49448 */\n swap1\n pop\n /* \"#utility.yul\":49457:49487 */\n tag_1656\n /* \"#utility.yul\":49481:49486 */\n dup2\n /* \"#utility.yul\":49457:49487 */\n tag_1072\n jump\t// in\n tag_1656:\n /* \"#utility.yul\":49356:49493 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":49542:50540 */\n tag_1121:\n /* \"#utility.yul\":49637:49642 */\n 0x00\n /* \"#utility.yul\":49681:49685 */\n 0x80\n /* \"#utility.yul\":49669:49678 */\n dup3\n /* \"#utility.yul\":49664:49667 */\n dup5\n /* \"#utility.yul\":49660:49679 */\n sub\n /* \"#utility.yul\":49656:49686 */\n slt\n /* \"#utility.yul\":49653:49770 */\n iszero\n tag_1658\n jumpi\n /* \"#utility.yul\":49689:49768 */\n tag_1659\n tag_1011\n jump\t// in\n tag_1659:\n /* \"#utility.yul\":49653:49770 */\n tag_1658:\n /* \"#utility.yul\":49788:49809 */\n tag_1660\n /* \"#utility.yul\":49804:49808 */\n 0x80\n /* \"#utility.yul\":49788:49809 */\n tag_1014\n jump\t// in\n tag_1660:\n /* \"#utility.yul\":49779:49809 */\n swap1\n pop\n /* \"#utility.yul\":49871:49872 */\n 0x00\n /* \"#utility.yul\":49911:49970 */\n tag_1661\n /* \"#utility.yul\":49966:49969 */\n dup5\n /* \"#utility.yul\":49957:49963 */\n dup3\n /* \"#utility.yul\":49946:49955 */\n dup6\n /* \"#utility.yul\":49942:49964 */\n add\n /* \"#utility.yul\":49911:49970 */\n tag_1119\n jump\t// in\n tag_1661:\n /* \"#utility.yul\":49904:49908 */\n 0x00\n /* \"#utility.yul\":49897:49902 */\n dup4\n /* \"#utility.yul\":49893:49909 */\n add\n /* \"#utility.yul\":49886:49971 */\n mstore\n /* \"#utility.yul\":49819:49982 */\n pop\n /* \"#utility.yul\":50043:50045 */\n 0x20\n /* \"#utility.yul\":50084:50160 */\n tag_1662\n /* \"#utility.yul\":50156:50159 */\n dup5\n /* \"#utility.yul\":50147:50153 */\n dup3\n /* \"#utility.yul\":50136:50145 */\n dup6\n /* \"#utility.yul\":50132:50154 */\n add\n /* \"#utility.yul\":50084:50160 */\n tag_1090\n jump\t// in\n tag_1662:\n /* \"#utility.yul\":50077:50081 */\n 0x20\n /* \"#utility.yul\":50070:50075 */\n dup4\n /* \"#utility.yul\":50066:50082 */\n add\n /* \"#utility.yul\":50059:50161 */\n mstore\n /* \"#utility.yul\":49992:50172 */\n pop\n /* \"#utility.yul\":50241:50243 */\n 0x40\n /* \"#utility.yul\":50282:50339 */\n tag_1663\n /* \"#utility.yul\":50335:50338 */\n dup5\n /* \"#utility.yul\":50326:50332 */\n dup3\n /* \"#utility.yul\":50315:50324 */\n dup6\n /* \"#utility.yul\":50311:50333 */\n add\n /* \"#utility.yul\":50282:50339 */\n tag_1120\n jump\t// in\n tag_1663:\n /* \"#utility.yul\":50275:50279 */\n 0x40\n /* \"#utility.yul\":50268:50273 */\n dup4\n /* \"#utility.yul\":50264:50280 */\n add\n /* \"#utility.yul\":50257:50340 */\n mstore\n /* \"#utility.yul\":50182:50351 */\n pop\n /* \"#utility.yul\":50423:50425 */\n 0x60\n /* \"#utility.yul\":50464:50521 */\n tag_1664\n /* \"#utility.yul\":50517:50520 */\n dup5\n /* \"#utility.yul\":50508:50514 */\n dup3\n /* \"#utility.yul\":50497:50506 */\n dup6\n /* \"#utility.yul\":50493:50515 */\n add\n /* \"#utility.yul\":50464:50521 */\n tag_1120\n jump\t// in\n tag_1664:\n /* \"#utility.yul\":50457:50461 */\n 0x60\n /* \"#utility.yul\":50450:50455 */\n dup4\n /* \"#utility.yul\":50446:50462 */\n add\n /* \"#utility.yul\":50439:50522 */\n mstore\n /* \"#utility.yul\":50361:50533 */\n pop\n /* \"#utility.yul\":49542:50540 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":50546:50968 */\n tag_844:\n /* \"#utility.yul\":50651:50657 */\n 0x00\n /* \"#utility.yul\":50700:50703 */\n 0x80\n /* \"#utility.yul\":50688:50697 */\n dup3\n /* \"#utility.yul\":50679:50686 */\n dup5\n /* \"#utility.yul\":50675:50698 */\n sub\n /* \"#utility.yul\":50671:50704 */\n slt\n /* \"#utility.yul\":50668:50788 */\n iszero\n tag_1666\n jumpi\n /* \"#utility.yul\":50707:50786 */\n tag_1667\n tag_1006\n jump\t// in\n tag_1667:\n /* \"#utility.yul\":50668:50788 */\n tag_1666:\n /* \"#utility.yul\":50827:50828 */\n 0x00\n /* \"#utility.yul\":50852:50951 */\n tag_1668\n /* \"#utility.yul\":50943:50950 */\n dup5\n /* \"#utility.yul\":50934:50940 */\n dup3\n /* \"#utility.yul\":50923:50932 */\n dup6\n /* \"#utility.yul\":50919:50941 */\n add\n /* \"#utility.yul\":50852:50951 */\n tag_1121\n jump\t// in\n tag_1668:\n /* \"#utility.yul\":50842:50951 */\n swap2\n pop\n /* \"#utility.yul\":50798:50961 */\n pop\n /* \"#utility.yul\":50546:50968 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":50974:51416 */\n tag_847:\n /* \"#utility.yul\":51123:51127 */\n 0x00\n /* \"#utility.yul\":51161:51163 */\n 0x60\n /* \"#utility.yul\":51150:51159 */\n dup3\n /* \"#utility.yul\":51146:51164 */\n add\n /* \"#utility.yul\":51138:51164 */\n swap1\n pop\n /* \"#utility.yul\":51174:51245 */\n tag_1670\n /* \"#utility.yul\":51242:51243 */\n 0x00\n /* \"#utility.yul\":51231:51240 */\n dup4\n /* \"#utility.yul\":51227:51244 */\n add\n /* \"#utility.yul\":51218:51224 */\n dup7\n /* \"#utility.yul\":51174:51245 */\n tag_1084\n jump\t// in\n tag_1670:\n /* \"#utility.yul\":51255:51327 */\n tag_1671\n /* \"#utility.yul\":51323:51325 */\n 0x20\n /* \"#utility.yul\":51312:51321 */\n dup4\n /* \"#utility.yul\":51308:51326 */\n add\n /* \"#utility.yul\":51299:51305 */\n dup6\n /* \"#utility.yul\":51255:51327 */\n tag_1084\n jump\t// in\n tag_1671:\n /* \"#utility.yul\":51337:51409 */\n tag_1672\n /* \"#utility.yul\":51405:51407 */\n 0x40\n /* \"#utility.yul\":51394:51403 */\n dup4\n /* \"#utility.yul\":51390:51408 */\n add\n /* \"#utility.yul\":51381:51387 */\n dup5\n /* \"#utility.yul\":51337:51409 */\n tag_1038\n jump\t// in\n tag_1672:\n /* \"#utility.yul\":50974:51416 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":51422:52277 */\n tag_850:\n /* \"#utility.yul\":51699:51703 */\n 0x00\n /* \"#utility.yul\":51737:51740 */\n 0x80\n /* \"#utility.yul\":51726:51735 */\n dup3\n /* \"#utility.yul\":51722:51741 */\n add\n /* \"#utility.yul\":51714:51741 */\n swap1\n pop\n /* \"#utility.yul\":51751:51822 */\n tag_1674\n /* \"#utility.yul\":51819:51820 */\n 0x00\n /* \"#utility.yul\":51808:51817 */\n dup4\n /* \"#utility.yul\":51804:51821 */\n add\n /* \"#utility.yul\":51795:51801 */\n dup8\n /* \"#utility.yul\":51751:51822 */\n tag_1084\n jump\t// in\n tag_1674:\n /* \"#utility.yul\":51832:51904 */\n tag_1675\n /* \"#utility.yul\":51900:51902 */\n 0x20\n /* \"#utility.yul\":51889:51898 */\n dup4\n /* \"#utility.yul\":51885:51903 */\n add\n /* \"#utility.yul\":51876:51882 */\n dup7\n /* \"#utility.yul\":51832:51904 */\n tag_1084\n jump\t// in\n tag_1675:\n /* \"#utility.yul\":51951:51960 */\n dup2\n /* \"#utility.yul\":51945:51949 */\n dup2\n /* \"#utility.yul\":51941:51961 */\n sub\n /* \"#utility.yul\":51936:51938 */\n 0x40\n /* \"#utility.yul\":51925:51934 */\n dup4\n /* \"#utility.yul\":51921:51939 */\n add\n /* \"#utility.yul\":51914:51962 */\n mstore\n /* \"#utility.yul\":51979:52087 */\n tag_1676\n /* \"#utility.yul\":52082:52086 */\n dup2\n /* \"#utility.yul\":52073:52079 */\n dup6\n /* \"#utility.yul\":51979:52087 */\n tag_1047\n jump\t// in\n tag_1676:\n /* \"#utility.yul\":51971:52087 */\n swap1\n pop\n /* \"#utility.yul\":52134:52143 */\n dup2\n /* \"#utility.yul\":52128:52132 */\n dup2\n /* \"#utility.yul\":52124:52144 */\n sub\n /* \"#utility.yul\":52119:52121 */\n 0x60\n /* \"#utility.yul\":52108:52117 */\n dup4\n /* \"#utility.yul\":52104:52122 */\n add\n /* \"#utility.yul\":52097:52145 */\n mstore\n /* \"#utility.yul\":52162:52270 */\n tag_1677\n /* \"#utility.yul\":52265:52269 */\n dup2\n /* \"#utility.yul\":52256:52262 */\n dup5\n /* \"#utility.yul\":52162:52270 */\n tag_1047\n jump\t// in\n tag_1677:\n /* \"#utility.yul\":52154:52270 */\n swap1\n pop\n /* \"#utility.yul\":51422:52277 */\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":52283:52594 */\n tag_1122:\n /* \"#utility.yul\":52360:52364 */\n 0x00\n /* \"#utility.yul\":52450:52468 */\n 0xffffffffffffffff\n /* \"#utility.yul\":52442:52448 */\n dup3\n /* \"#utility.yul\":52439:52469 */\n gt\n /* \"#utility.yul\":52436:52492 */\n iszero\n tag_1679\n jumpi\n /* \"#utility.yul\":52472:52490 */\n tag_1680\n tag_590\n jump\t// in\n tag_1680:\n /* \"#utility.yul\":52436:52492 */\n tag_1679:\n /* \"#utility.yul\":52522:52526 */\n 0x20\n /* \"#utility.yul\":52514:52520 */\n dup3\n /* \"#utility.yul\":52510:52527 */\n mul\n /* \"#utility.yul\":52502:52527 */\n swap1\n pop\n /* \"#utility.yul\":52582:52586 */\n 0x20\n /* \"#utility.yul\":52576:52580 */\n dup2\n /* \"#utility.yul\":52572:52587 */\n add\n /* \"#utility.yul\":52564:52587 */\n swap1\n pop\n /* \"#utility.yul\":52283:52594 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":52617:53349 */\n tag_1123:\n /* \"#utility.yul\":52724:52729 */\n 0x00\n /* \"#utility.yul\":52749:52830 */\n tag_1682\n /* \"#utility.yul\":52765:52829 */\n tag_1683\n /* \"#utility.yul\":52822:52828 */\n dup5\n /* \"#utility.yul\":52765:52829 */\n tag_1122\n jump\t// in\n tag_1683:\n /* \"#utility.yul\":52749:52830 */\n tag_1014\n jump\t// in\n tag_1682:\n /* \"#utility.yul\":52740:52830 */\n swap1\n pop\n /* \"#utility.yul\":52850:52855 */\n dup1\n /* \"#utility.yul\":52879:52885 */\n dup4\n /* \"#utility.yul\":52872:52877 */\n dup3\n /* \"#utility.yul\":52865:52886 */\n mstore\n /* \"#utility.yul\":52913:52917 */\n 0x20\n /* \"#utility.yul\":52906:52911 */\n dup3\n /* \"#utility.yul\":52902:52918 */\n add\n /* \"#utility.yul\":52895:52918 */\n swap1\n pop\n /* \"#utility.yul\":52966:52970 */\n 0x20\n /* \"#utility.yul\":52958:52964 */\n dup5\n /* \"#utility.yul\":52954:52971 */\n mul\n /* \"#utility.yul\":52946:52952 */\n dup4\n /* \"#utility.yul\":52942:52972 */\n add\n /* \"#utility.yul\":52995:52998 */\n dup6\n /* \"#utility.yul\":52987:52993 */\n dup2\n /* \"#utility.yul\":52984:52999 */\n gt\n /* \"#utility.yul\":52981:53103 */\n iszero\n tag_1684\n jumpi\n /* \"#utility.yul\":53014:53093 */\n tag_1685\n tag_1018\n jump\t// in\n tag_1685:\n /* \"#utility.yul\":52981:53103 */\n tag_1684:\n /* \"#utility.yul\":53129:53135 */\n dup4\n /* \"#utility.yul\":53112:53343 */\n tag_1686:\n /* \"#utility.yul\":53146:53152 */\n dup2\n /* \"#utility.yul\":53141:53144 */\n dup2\n /* \"#utility.yul\":53138:53153 */\n lt\n /* \"#utility.yul\":53112:53343 */\n iszero\n tag_1688\n jumpi\n /* \"#utility.yul\":53221:53224 */\n dup1\n /* \"#utility.yul\":53250:53298 */\n tag_1689\n /* \"#utility.yul\":53294:53297 */\n dup9\n /* \"#utility.yul\":53282:53292 */\n dup3\n /* \"#utility.yul\":53250:53298 */\n tag_1116\n jump\t// in\n tag_1689:\n /* \"#utility.yul\":53245:53248 */\n dup5\n /* \"#utility.yul\":53238:53299 */\n mstore\n /* \"#utility.yul\":53328:53332 */\n 0x20\n /* \"#utility.yul\":53323:53326 */\n dup5\n /* \"#utility.yul\":53319:53333 */\n add\n /* \"#utility.yul\":53312:53333 */\n swap4\n pop\n /* \"#utility.yul\":53188:53343 */\n pop\n /* \"#utility.yul\":53172:53176 */\n 0x20\n /* \"#utility.yul\":53167:53170 */\n dup2\n /* \"#utility.yul\":53163:53177 */\n add\n /* \"#utility.yul\":53156:53177 */\n swap1\n pop\n /* \"#utility.yul\":53112:53343 */\n jump(tag_1686)\n tag_1688:\n /* \"#utility.yul\":53116:53137 */\n pop\n /* \"#utility.yul\":52730:53349 */\n pop\n pop\n /* \"#utility.yul\":52617:53349 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":53372:53757 */\n tag_1124:\n /* \"#utility.yul\":53454:53459 */\n 0x00\n /* \"#utility.yul\":53503:53506 */\n dup3\n /* \"#utility.yul\":53496:53500 */\n 0x1f\n /* \"#utility.yul\":53488:53494 */\n dup4\n /* \"#utility.yul\":53484:53501 */\n add\n /* \"#utility.yul\":53480:53507 */\n slt\n /* \"#utility.yul\":53470:53592 */\n tag_1691\n jumpi\n /* \"#utility.yul\":53511:53590 */\n tag_1692\n tag_1016\n jump\t// in\n tag_1692:\n /* \"#utility.yul\":53470:53592 */\n tag_1691:\n /* \"#utility.yul\":53621:53627 */\n dup2\n /* \"#utility.yul\":53615:53628 */\n mload\n /* \"#utility.yul\":53646:53751 */\n tag_1693\n /* \"#utility.yul\":53747:53750 */\n dup5\n /* \"#utility.yul\":53739:53745 */\n dup3\n /* \"#utility.yul\":53732:53736 */\n 0x20\n /* \"#utility.yul\":53724:53730 */\n dup7\n /* \"#utility.yul\":53720:53737 */\n add\n /* \"#utility.yul\":53646:53751 */\n tag_1123\n jump\t// in\n tag_1693:\n /* \"#utility.yul\":53637:53751 */\n swap2\n pop\n /* \"#utility.yul\":53460:53757 */\n pop\n /* \"#utility.yul\":53372:53757 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":53763:54317 */\n tag_854:\n /* \"#utility.yul\":53858:53864 */\n 0x00\n /* \"#utility.yul\":53907:53909 */\n 0x20\n /* \"#utility.yul\":53895:53904 */\n dup3\n /* \"#utility.yul\":53886:53893 */\n dup5\n /* \"#utility.yul\":53882:53905 */\n sub\n /* \"#utility.yul\":53878:53910 */\n slt\n /* \"#utility.yul\":53875:53994 */\n iszero\n tag_1695\n jumpi\n /* \"#utility.yul\":53913:53992 */\n tag_1696\n tag_1006\n jump\t// in\n tag_1696:\n /* \"#utility.yul\":53875:53994 */\n tag_1695:\n /* \"#utility.yul\":54054:54055 */\n 0x00\n /* \"#utility.yul\":54043:54052 */\n dup3\n /* \"#utility.yul\":54039:54056 */\n add\n /* \"#utility.yul\":54033:54057 */\n mload\n /* \"#utility.yul\":54084:54102 */\n 0xffffffffffffffff\n /* \"#utility.yul\":54076:54082 */\n dup2\n /* \"#utility.yul\":54073:54103 */\n gt\n /* \"#utility.yul\":54070:54187 */\n iszero\n tag_1697\n jumpi\n /* \"#utility.yul\":54106:54185 */\n tag_1698\n tag_1007\n jump\t// in\n tag_1698:\n /* \"#utility.yul\":54070:54187 */\n tag_1697:\n /* \"#utility.yul\":54211:54300 */\n tag_1699\n /* \"#utility.yul\":54292:54299 */\n dup5\n /* \"#utility.yul\":54283:54289 */\n dup3\n /* \"#utility.yul\":54272:54281 */\n dup6\n /* \"#utility.yul\":54268:54290 */\n add\n /* \"#utility.yul\":54211:54300 */\n tag_1124\n jump\t// in\n tag_1699:\n /* \"#utility.yul\":54201:54300 */\n swap2\n pop\n /* \"#utility.yul\":54004:54310 */\n pop\n /* \"#utility.yul\":53763:54317 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":54323:54556 */\n tag_869:\n /* \"#utility.yul\":54362:54365 */\n 0x00\n /* \"#utility.yul\":54385:54409 */\n tag_1701\n /* \"#utility.yul\":54403:54408 */\n dup3\n /* \"#utility.yul\":54385:54409 */\n tag_1008\n jump\t// in\n tag_1701:\n /* \"#utility.yul\":54376:54409 */\n swap2\n pop\n /* \"#utility.yul\":54431:54497 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":54424:54429 */\n dup3\n /* \"#utility.yul\":54421:54498 */\n sub\n /* \"#utility.yul\":54418:54521 */\n tag_1702\n jumpi\n /* \"#utility.yul\":54501:54519 */\n tag_1703\n tag_1083\n jump\t// in\n tag_1703:\n /* \"#utility.yul\":54418:54521 */\n tag_1702:\n /* \"#utility.yul\":54548:54549 */\n 0x01\n /* \"#utility.yul\":54541:54546 */\n dup3\n /* \"#utility.yul\":54537:54550 */\n add\n /* \"#utility.yul\":54530:54550 */\n swap1\n pop\n /* \"#utility.yul\":54323:54556 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":54562:55115 */\n tag_873:\n /* \"#utility.yul\":54739:54743 */\n 0x00\n /* \"#utility.yul\":54777:54780 */\n 0x80\n /* \"#utility.yul\":54766:54775 */\n dup3\n /* \"#utility.yul\":54762:54781 */\n add\n /* \"#utility.yul\":54754:54781 */\n swap1\n pop\n /* \"#utility.yul\":54791:54862 */\n tag_1705\n /* \"#utility.yul\":54859:54860 */\n 0x00\n /* \"#utility.yul\":54848:54857 */\n dup4\n /* \"#utility.yul\":54844:54861 */\n add\n /* \"#utility.yul\":54835:54841 */\n dup8\n /* \"#utility.yul\":54791:54862 */\n tag_1038\n jump\t// in\n tag_1705:\n /* \"#utility.yul\":54872:54944 */\n tag_1706\n /* \"#utility.yul\":54940:54942 */\n 0x20\n /* \"#utility.yul\":54929:54938 */\n dup4\n /* \"#utility.yul\":54925:54943 */\n add\n /* \"#utility.yul\":54916:54922 */\n dup7\n /* \"#utility.yul\":54872:54944 */\n tag_1038\n jump\t// in\n tag_1706:\n /* \"#utility.yul\":54954:55026 */\n tag_1707\n /* \"#utility.yul\":55022:55024 */\n 0x40\n /* \"#utility.yul\":55011:55020 */\n dup4\n /* \"#utility.yul\":55007:55025 */\n add\n /* \"#utility.yul\":54998:55004 */\n dup6\n /* \"#utility.yul\":54954:55026 */\n tag_1038\n jump\t// in\n tag_1707:\n /* \"#utility.yul\":55036:55108 */\n tag_1708\n /* \"#utility.yul\":55104:55106 */\n 0x60\n /* \"#utility.yul\":55093:55102 */\n dup4\n /* \"#utility.yul\":55089:55107 */\n add\n /* \"#utility.yul\":55080:55086 */\n dup5\n /* \"#utility.yul\":55036:55108 */\n tag_1038\n jump\t// in\n tag_1708:\n /* \"#utility.yul\":54562:55115 */\n swap6\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":55121:55238 */\n tag_1125:\n /* \"#utility.yul\":55230:55231 */\n 0x00\n /* \"#utility.yul\":55227:55228 */\n dup1\n /* \"#utility.yul\":55220:55232 */\n revert\n /* \"#utility.yul\":55244:55361 */\n tag_1126:\n /* \"#utility.yul\":55353:55354 */\n 0x00\n /* \"#utility.yul\":55350:55351 */\n dup1\n /* \"#utility.yul\":55343:55355 */\n revert\n /* \"#utility.yul\":55367:55484 */\n tag_1127:\n /* \"#utility.yul\":55476:55477 */\n 0x00\n /* \"#utility.yul\":55473:55474 */\n dup1\n /* \"#utility.yul\":55466:55478 */\n revert\n /* \"#utility.yul\":55490:56230 */\n tag_882:\n /* \"#utility.yul\":55583:55587 */\n 0x00\n /* \"#utility.yul\":55589:55595 */\n dup1\n /* \"#utility.yul\":55645:55656 */\n dup4\n /* \"#utility.yul\":55632:55657 */\n calldataload\n /* \"#utility.yul\":55745:55746 */\n 0x01\n /* \"#utility.yul\":55739:55743 */\n 0x20\n /* \"#utility.yul\":55735:55747 */\n sub\n /* \"#utility.yul\":55724:55732 */\n dup5\n /* \"#utility.yul\":55708:55722 */\n calldatasize\n /* \"#utility.yul\":55704:55733 */\n sub\n /* \"#utility.yul\":55700:55748 */\n sub\n /* \"#utility.yul\":55680:55698 */\n dup2\n /* \"#utility.yul\":55676:55749 */\n slt\n /* \"#utility.yul\":55666:55834 */\n tag_1713\n jumpi\n /* \"#utility.yul\":55753:55832 */\n tag_1714\n tag_1125\n jump\t// in\n tag_1714:\n /* \"#utility.yul\":55666:55834 */\n tag_1713:\n /* \"#utility.yul\":55865:55883 */\n dup1\n /* \"#utility.yul\":55855:55863 */\n dup5\n /* \"#utility.yul\":55851:55884 */\n add\n /* \"#utility.yul\":55843:55884 */\n swap3\n pop\n /* \"#utility.yul\":55917:55921 */\n dup3\n /* \"#utility.yul\":55904:55922 */\n calldataload\n /* \"#utility.yul\":55894:55922 */\n swap2\n pop\n /* \"#utility.yul\":55945:55963 */\n 0xffffffffffffffff\n /* \"#utility.yul\":55937:55943 */\n dup3\n /* \"#utility.yul\":55934:55964 */\n gt\n /* \"#utility.yul\":55931:56048 */\n iszero\n tag_1715\n jumpi\n /* \"#utility.yul\":55967:56046 */\n tag_1716\n tag_1126\n jump\t// in\n tag_1716:\n /* \"#utility.yul\":55931:56048 */\n tag_1715:\n /* \"#utility.yul\":56075:56077 */\n 0x20\n /* \"#utility.yul\":56069:56073 */\n dup4\n /* \"#utility.yul\":56065:56078 */\n add\n /* \"#utility.yul\":56057:56078 */\n swap3\n pop\n /* \"#utility.yul\":56132:56136 */\n 0x20\n /* \"#utility.yul\":56124:56130 */\n dup3\n /* \"#utility.yul\":56120:56137 */\n mul\n /* \"#utility.yul\":56104:56118 */\n calldatasize\n /* \"#utility.yul\":56100:56138 */\n sub\n /* \"#utility.yul\":56094:56098 */\n dup4\n /* \"#utility.yul\":56090:56139 */\n sgt\n /* \"#utility.yul\":56087:56223 */\n iszero\n tag_1717\n jumpi\n /* \"#utility.yul\":56142:56221 */\n tag_1718\n tag_1127\n jump\t// in\n tag_1718:\n /* \"#utility.yul\":56087:56223 */\n tag_1717:\n /* \"#utility.yul\":55596:56230 */\n pop\n /* \"#utility.yul\":55490:56230 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":56236:56975 */\n tag_884:\n /* \"#utility.yul\":56328:56332 */\n 0x00\n /* \"#utility.yul\":56334:56340 */\n dup1\n /* \"#utility.yul\":56390:56401 */\n dup4\n /* \"#utility.yul\":56377:56402 */\n calldataload\n /* \"#utility.yul\":56490:56491 */\n 0x01\n /* \"#utility.yul\":56484:56488 */\n 0x20\n /* \"#utility.yul\":56480:56492 */\n sub\n /* \"#utility.yul\":56469:56477 */\n dup5\n /* \"#utility.yul\":56453:56467 */\n calldatasize\n /* \"#utility.yul\":56449:56478 */\n sub\n /* \"#utility.yul\":56445:56493 */\n sub\n /* \"#utility.yul\":56425:56443 */\n dup2\n /* \"#utility.yul\":56421:56494 */\n slt\n /* \"#utility.yul\":56411:56579 */\n tag_1720\n jumpi\n /* \"#utility.yul\":56498:56577 */\n tag_1721\n tag_1125\n jump\t// in\n tag_1721:\n /* \"#utility.yul\":56411:56579 */\n tag_1720:\n /* \"#utility.yul\":56610:56628 */\n dup1\n /* \"#utility.yul\":56600:56608 */\n dup5\n /* \"#utility.yul\":56596:56629 */\n add\n /* \"#utility.yul\":56588:56629 */\n swap3\n pop\n /* \"#utility.yul\":56662:56666 */\n dup3\n /* \"#utility.yul\":56649:56667 */\n calldataload\n /* \"#utility.yul\":56639:56667 */\n swap2\n pop\n /* \"#utility.yul\":56690:56708 */\n 0xffffffffffffffff\n /* \"#utility.yul\":56682:56688 */\n dup3\n /* \"#utility.yul\":56679:56709 */\n gt\n /* \"#utility.yul\":56676:56793 */\n iszero\n tag_1722\n jumpi\n /* \"#utility.yul\":56712:56791 */\n tag_1723\n tag_1126\n jump\t// in\n tag_1723:\n /* \"#utility.yul\":56676:56793 */\n tag_1722:\n /* \"#utility.yul\":56820:56822 */\n 0x20\n /* \"#utility.yul\":56814:56818 */\n dup4\n /* \"#utility.yul\":56810:56823 */\n add\n /* \"#utility.yul\":56802:56823 */\n swap3\n pop\n /* \"#utility.yul\":56877:56881 */\n 0x20\n /* \"#utility.yul\":56869:56875 */\n dup3\n /* \"#utility.yul\":56865:56882 */\n mul\n /* \"#utility.yul\":56849:56863 */\n calldatasize\n /* \"#utility.yul\":56845:56883 */\n sub\n /* \"#utility.yul\":56839:56843 */\n dup4\n /* \"#utility.yul\":56835:56884 */\n sgt\n /* \"#utility.yul\":56832:56968 */\n iszero\n tag_1724\n jumpi\n /* \"#utility.yul\":56887:56966 */\n tag_1725\n tag_1127\n jump\t// in\n tag_1725:\n /* \"#utility.yul\":56832:56968 */\n tag_1724:\n /* \"#utility.yul\":56341:56975 */\n pop\n /* \"#utility.yul\":56236:56975 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":56981:57423 */\n tag_906:\n /* \"#utility.yul\":57130:57134 */\n 0x00\n /* \"#utility.yul\":57168:57170 */\n 0x60\n /* \"#utility.yul\":57157:57166 */\n dup3\n /* \"#utility.yul\":57153:57171 */\n add\n /* \"#utility.yul\":57145:57171 */\n swap1\n pop\n /* \"#utility.yul\":57181:57252 */\n tag_1727\n /* \"#utility.yul\":57249:57250 */\n 0x00\n /* \"#utility.yul\":57238:57247 */\n dup4\n /* \"#utility.yul\":57234:57251 */\n add\n /* \"#utility.yul\":57225:57231 */\n dup7\n /* \"#utility.yul\":57181:57252 */\n tag_1038\n jump\t// in\n tag_1727:\n /* \"#utility.yul\":57262:57334 */\n tag_1728\n /* \"#utility.yul\":57330:57332 */\n 0x20\n /* \"#utility.yul\":57319:57328 */\n dup4\n /* \"#utility.yul\":57315:57333 */\n add\n /* \"#utility.yul\":57306:57312 */\n dup6\n /* \"#utility.yul\":57262:57334 */\n tag_1038\n jump\t// in\n tag_1728:\n /* \"#utility.yul\":57344:57416 */\n tag_1729\n /* \"#utility.yul\":57412:57414 */\n 0x40\n /* \"#utility.yul\":57401:57410 */\n dup4\n /* \"#utility.yul\":57397:57415 */\n add\n /* \"#utility.yul\":57388:57394 */\n dup5\n /* \"#utility.yul\":57344:57416 */\n tag_1038\n jump\t// in\n tag_1729:\n /* \"#utility.yul\":56981:57423 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":57429:57505 */\n tag_1128:\n /* \"#utility.yul\":57465:57472 */\n 0x00\n /* \"#utility.yul\":57494:57499 */\n dup2\n /* \"#utility.yul\":57483:57499 */\n swap1\n pop\n /* \"#utility.yul\":57429:57505 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":57511:57626 */\n tag_1129:\n /* \"#utility.yul\":57596:57619 */\n tag_1732\n /* \"#utility.yul\":57613:57618 */\n dup2\n /* \"#utility.yul\":57596:57619 */\n tag_1128\n jump\t// in\n tag_1732:\n /* \"#utility.yul\":57591:57594 */\n dup3\n /* \"#utility.yul\":57584:57620 */\n mstore\n /* \"#utility.yul\":57511:57626 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":57632:57850 */\n tag_916:\n /* \"#utility.yul\":57723:57727 */\n 0x00\n /* \"#utility.yul\":57761:57763 */\n 0x20\n /* \"#utility.yul\":57750:57759 */\n dup3\n /* \"#utility.yul\":57746:57764 */\n add\n /* \"#utility.yul\":57738:57764 */\n swap1\n pop\n /* \"#utility.yul\":57774:57843 */\n tag_1734\n /* \"#utility.yul\":57840:57841 */\n 0x00\n /* \"#utility.yul\":57829:57838 */\n dup4\n /* \"#utility.yul\":57825:57842 */\n add\n /* \"#utility.yul\":57816:57822 */\n dup5\n /* \"#utility.yul\":57774:57843 */\n tag_1129\n jump\t// in\n tag_1734:\n /* \"#utility.yul\":57632:57850 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":57856:58185 */\n tag_930:\n /* \"#utility.yul\":57915:57921 */\n 0x00\n /* \"#utility.yul\":57964:57966 */\n 0x20\n /* \"#utility.yul\":57952:57961 */\n dup3\n /* \"#utility.yul\":57943:57950 */\n dup5\n /* \"#utility.yul\":57939:57962 */\n sub\n /* \"#utility.yul\":57935:57967 */\n slt\n /* \"#utility.yul\":57932:58051 */\n iszero\n tag_1736\n jumpi\n /* \"#utility.yul\":57970:58049 */\n tag_1737\n tag_1006\n jump\t// in\n tag_1737:\n /* \"#utility.yul\":57932:58051 */\n tag_1736:\n /* \"#utility.yul\":58090:58091 */\n 0x00\n /* \"#utility.yul\":58115:58168 */\n tag_1738\n /* \"#utility.yul\":58160:58167 */\n dup5\n /* \"#utility.yul\":58151:58157 */\n dup3\n /* \"#utility.yul\":58140:58149 */\n dup6\n /* \"#utility.yul\":58136:58158 */\n add\n /* \"#utility.yul\":58115:58168 */\n tag_1040\n jump\t// in\n tag_1738:\n /* \"#utility.yul\":58105:58168 */\n swap2\n pop\n /* \"#utility.yul\":58061:58178 */\n pop\n /* \"#utility.yul\":57856:58185 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":58191:58305 */\n tag_1130:\n /* \"#utility.yul\":58258:58264 */\n 0x00\n /* \"#utility.yul\":58292:58297 */\n dup2\n /* \"#utility.yul\":58286:58298 */\n mload\n /* \"#utility.yul\":58276:58298 */\n swap1\n pop\n /* \"#utility.yul\":58191:58305 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":58311:58495 */\n tag_1131:\n /* \"#utility.yul\":58410:58421 */\n 0x00\n /* \"#utility.yul\":58444:58450 */\n dup3\n /* \"#utility.yul\":58439:58442 */\n dup3\n /* \"#utility.yul\":58432:58451 */\n mstore\n /* \"#utility.yul\":58484:58488 */\n 0x20\n /* \"#utility.yul\":58479:58482 */\n dup3\n /* \"#utility.yul\":58475:58489 */\n add\n /* \"#utility.yul\":58460:58489 */\n swap1\n pop\n /* \"#utility.yul\":58311:58495 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":58501:58633 */\n tag_1132:\n /* \"#utility.yul\":58568:58572 */\n 0x00\n /* \"#utility.yul\":58591:58594 */\n dup2\n /* \"#utility.yul\":58583:58594 */\n swap1\n pop\n /* \"#utility.yul\":58621:58625 */\n 0x20\n /* \"#utility.yul\":58616:58619 */\n dup3\n /* \"#utility.yul\":58612:58626 */\n add\n /* \"#utility.yul\":58604:58626 */\n swap1\n pop\n /* \"#utility.yul\":58501:58633 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":58639:58747 */\n tag_1133:\n /* \"#utility.yul\":58716:58740 */\n tag_1743\n /* \"#utility.yul\":58734:58739 */\n dup2\n /* \"#utility.yul\":58716:58740 */\n tag_1114\n jump\t// in\n tag_1743:\n /* \"#utility.yul\":58711:58714 */\n dup3\n /* \"#utility.yul\":58704:58741 */\n mstore\n /* \"#utility.yul\":58639:58747 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":58753:58932 */\n tag_1134:\n /* \"#utility.yul\":58822:58832 */\n 0x00\n /* \"#utility.yul\":58843:58889 */\n tag_1745\n /* \"#utility.yul\":58885:58888 */\n dup4\n /* \"#utility.yul\":58877:58883 */\n dup4\n /* \"#utility.yul\":58843:58889 */\n tag_1133\n jump\t// in\n tag_1745:\n /* \"#utility.yul\":58921:58925 */\n 0x20\n /* \"#utility.yul\":58916:58919 */\n dup4\n /* \"#utility.yul\":58912:58926 */\n add\n /* \"#utility.yul\":58898:58926 */\n swap1\n pop\n /* \"#utility.yul\":58753:58932 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":58938:59051 */\n tag_1135:\n /* \"#utility.yul\":59008:59012 */\n 0x00\n /* \"#utility.yul\":59040:59044 */\n 0x20\n /* \"#utility.yul\":59035:59038 */\n dup3\n /* \"#utility.yul\":59031:59045 */\n add\n /* \"#utility.yul\":59023:59045 */\n swap1\n pop\n /* \"#utility.yul\":58938:59051 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":59087:59819 */\n tag_1136:\n /* \"#utility.yul\":59206:59209 */\n 0x00\n /* \"#utility.yul\":59235:59289 */\n tag_1748\n /* \"#utility.yul\":59283:59288 */\n dup3\n /* \"#utility.yul\":59235:59289 */\n tag_1130\n jump\t// in\n tag_1748:\n /* \"#utility.yul\":59305:59391 */\n tag_1749\n /* \"#utility.yul\":59384:59390 */\n dup2\n /* \"#utility.yul\":59379:59382 */\n dup6\n /* \"#utility.yul\":59305:59391 */\n tag_1131\n jump\t// in\n tag_1749:\n /* \"#utility.yul\":59298:59391 */\n swap4\n pop\n /* \"#utility.yul\":59415:59471 */\n tag_1750\n /* \"#utility.yul\":59465:59470 */\n dup4\n /* \"#utility.yul\":59415:59471 */\n tag_1132\n jump\t// in\n tag_1750:\n /* \"#utility.yul\":59494:59501 */\n dup1\n /* \"#utility.yul\":59525:59526 */\n 0x00\n /* \"#utility.yul\":59510:59794 */\n tag_1751:\n /* \"#utility.yul\":59535:59541 */\n dup4\n /* \"#utility.yul\":59532:59533 */\n dup2\n /* \"#utility.yul\":59529:59542 */\n lt\n /* \"#utility.yul\":59510:59794 */\n iszero\n tag_1753\n jumpi\n /* \"#utility.yul\":59611:59617 */\n dup2\n /* \"#utility.yul\":59605:59618 */\n mload\n /* \"#utility.yul\":59638:59701 */\n tag_1754\n /* \"#utility.yul\":59697:59700 */\n dup9\n /* \"#utility.yul\":59682:59695 */\n dup3\n /* \"#utility.yul\":59638:59701 */\n tag_1134\n jump\t// in\n tag_1754:\n /* \"#utility.yul\":59631:59701 */\n swap8\n pop\n /* \"#utility.yul\":59724:59784 */\n tag_1755\n /* \"#utility.yul\":59777:59783 */\n dup4\n /* \"#utility.yul\":59724:59784 */\n tag_1135\n jump\t// in\n tag_1755:\n /* \"#utility.yul\":59714:59784 */\n swap3\n pop\n /* \"#utility.yul\":59570:59794 */\n pop\n /* \"#utility.yul\":59557:59558 */\n 0x01\n /* \"#utility.yul\":59554:59555 */\n dup2\n /* \"#utility.yul\":59550:59559 */\n add\n /* \"#utility.yul\":59545:59559 */\n swap1\n pop\n /* \"#utility.yul\":59510:59794 */\n jump(tag_1751)\n tag_1753:\n /* \"#utility.yul\":59514:59528 */\n pop\n /* \"#utility.yul\":59810:59813 */\n dup6\n /* \"#utility.yul\":59803:59813 */\n swap4\n pop\n /* \"#utility.yul\":59211:59819 */\n pop\n pop\n pop\n /* \"#utility.yul\":59087:59819 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":59825:60418 */\n tag_933:\n /* \"#utility.yul\":60024:60028 */\n 0x00\n /* \"#utility.yul\":60062:60064 */\n 0x60\n /* \"#utility.yul\":60051:60060 */\n dup3\n /* \"#utility.yul\":60047:60065 */\n add\n /* \"#utility.yul\":60039:60065 */\n swap1\n pop\n /* \"#utility.yul\":60075:60146 */\n tag_1757\n /* \"#utility.yul\":60143:60144 */\n 0x00\n /* \"#utility.yul\":60132:60141 */\n dup4\n /* \"#utility.yul\":60128:60145 */\n add\n /* \"#utility.yul\":60119:60125 */\n dup7\n /* \"#utility.yul\":60075:60146 */\n tag_1084\n jump\t// in\n tag_1757:\n /* \"#utility.yul\":60193:60202 */\n dup2\n /* \"#utility.yul\":60187:60191 */\n dup2\n /* \"#utility.yul\":60183:60203 */\n sub\n /* \"#utility.yul\":60178:60180 */\n 0x20\n /* \"#utility.yul\":60167:60176 */\n dup4\n /* \"#utility.yul\":60163:60181 */\n add\n /* \"#utility.yul\":60156:60204 */\n mstore\n /* \"#utility.yul\":60221:60329 */\n tag_1758\n /* \"#utility.yul\":60324:60328 */\n dup2\n /* \"#utility.yul\":60315:60321 */\n dup6\n /* \"#utility.yul\":60221:60329 */\n tag_1136\n jump\t// in\n tag_1758:\n /* \"#utility.yul\":60213:60329 */\n swap1\n pop\n /* \"#utility.yul\":60339:60411 */\n tag_1759\n /* \"#utility.yul\":60407:60409 */\n 0x40\n /* \"#utility.yul\":60396:60405 */\n dup4\n /* \"#utility.yul\":60392:60410 */\n add\n /* \"#utility.yul\":60383:60389 */\n dup5\n /* \"#utility.yul\":60339:60411 */\n tag_1084\n jump\t// in\n tag_1759:\n /* \"#utility.yul\":59825:60418 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":60441:61173 */\n tag_1137:\n /* \"#utility.yul\":60548:60553 */\n 0x00\n /* \"#utility.yul\":60573:60654 */\n tag_1761\n /* \"#utility.yul\":60589:60653 */\n tag_1762\n /* \"#utility.yul\":60646:60652 */\n dup5\n /* \"#utility.yul\":60589:60653 */\n tag_1017\n jump\t// in\n tag_1762:\n /* \"#utility.yul\":60573:60654 */\n tag_1014\n jump\t// in\n tag_1761:\n /* \"#utility.yul\":60564:60654 */\n swap1\n pop\n /* \"#utility.yul\":60674:60679 */\n dup1\n /* \"#utility.yul\":60703:60709 */\n dup4\n /* \"#utility.yul\":60696:60701 */\n dup3\n /* \"#utility.yul\":60689:60710 */\n mstore\n /* \"#utility.yul\":60737:60741 */\n 0x20\n /* \"#utility.yul\":60730:60735 */\n dup3\n /* \"#utility.yul\":60726:60742 */\n add\n /* \"#utility.yul\":60719:60742 */\n swap1\n pop\n /* \"#utility.yul\":60790:60794 */\n 0x20\n /* \"#utility.yul\":60782:60788 */\n dup5\n /* \"#utility.yul\":60778:60795 */\n mul\n /* \"#utility.yul\":60770:60776 */\n dup4\n /* \"#utility.yul\":60766:60796 */\n add\n /* \"#utility.yul\":60819:60822 */\n dup6\n /* \"#utility.yul\":60811:60817 */\n dup2\n /* \"#utility.yul\":60808:60823 */\n gt\n /* \"#utility.yul\":60805:60927 */\n iszero\n tag_1763\n jumpi\n /* \"#utility.yul\":60838:60917 */\n tag_1764\n tag_1018\n jump\t// in\n tag_1764:\n /* \"#utility.yul\":60805:60927 */\n tag_1763:\n /* \"#utility.yul\":60953:60959 */\n dup4\n /* \"#utility.yul\":60936:61167 */\n tag_1765:\n /* \"#utility.yul\":60970:60976 */\n dup2\n /* \"#utility.yul\":60965:60968 */\n dup2\n /* \"#utility.yul\":60962:60977 */\n lt\n /* \"#utility.yul\":60936:61167 */\n iszero\n tag_1767\n jumpi\n /* \"#utility.yul\":61045:61048 */\n dup1\n /* \"#utility.yul\":61074:61122 */\n tag_1768\n /* \"#utility.yul\":61118:61121 */\n dup9\n /* \"#utility.yul\":61106:61116 */\n dup3\n /* \"#utility.yul\":61074:61122 */\n tag_1085\n jump\t// in\n tag_1768:\n /* \"#utility.yul\":61069:61072 */\n dup5\n /* \"#utility.yul\":61062:61123 */\n mstore\n /* \"#utility.yul\":61152:61156 */\n 0x20\n /* \"#utility.yul\":61147:61150 */\n dup5\n /* \"#utility.yul\":61143:61157 */\n add\n /* \"#utility.yul\":61136:61157 */\n swap4\n pop\n /* \"#utility.yul\":61012:61167 */\n pop\n /* \"#utility.yul\":60996:61000 */\n 0x20\n /* \"#utility.yul\":60991:60994 */\n dup2\n /* \"#utility.yul\":60987:61001 */\n add\n /* \"#utility.yul\":60980:61001 */\n swap1\n pop\n /* \"#utility.yul\":60936:61167 */\n jump(tag_1765)\n tag_1767:\n /* \"#utility.yul\":60940:60961 */\n pop\n /* \"#utility.yul\":60554:61173 */\n pop\n pop\n /* \"#utility.yul\":60441:61173 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":61196:61581 */\n tag_1138:\n /* \"#utility.yul\":61278:61283 */\n 0x00\n /* \"#utility.yul\":61327:61330 */\n dup3\n /* \"#utility.yul\":61320:61324 */\n 0x1f\n /* \"#utility.yul\":61312:61318 */\n dup4\n /* \"#utility.yul\":61308:61325 */\n add\n /* \"#utility.yul\":61304:61331 */\n slt\n /* \"#utility.yul\":61294:61416 */\n tag_1770\n jumpi\n /* \"#utility.yul\":61335:61414 */\n tag_1771\n tag_1016\n jump\t// in\n tag_1771:\n /* \"#utility.yul\":61294:61416 */\n tag_1770:\n /* \"#utility.yul\":61445:61451 */\n dup2\n /* \"#utility.yul\":61439:61452 */\n mload\n /* \"#utility.yul\":61470:61575 */\n tag_1772\n /* \"#utility.yul\":61571:61574 */\n dup5\n /* \"#utility.yul\":61563:61569 */\n dup3\n /* \"#utility.yul\":61556:61560 */\n 0x20\n /* \"#utility.yul\":61548:61554 */\n dup7\n /* \"#utility.yul\":61544:61561 */\n add\n /* \"#utility.yul\":61470:61575 */\n tag_1137\n jump\t// in\n tag_1772:\n /* \"#utility.yul\":61461:61575 */\n swap2\n pop\n /* \"#utility.yul\":61284:61581 */\n pop\n /* \"#utility.yul\":61196:61581 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":61587:62453 */\n tag_937:\n /* \"#utility.yul\":61700:61706 */\n 0x00\n /* \"#utility.yul\":61708:61714 */\n dup1\n /* \"#utility.yul\":61716:61722 */\n 0x00\n /* \"#utility.yul\":61765:61767 */\n 0x60\n /* \"#utility.yul\":61753:61762 */\n dup5\n /* \"#utility.yul\":61744:61751 */\n dup7\n /* \"#utility.yul\":61740:61763 */\n sub\n /* \"#utility.yul\":61736:61768 */\n slt\n /* \"#utility.yul\":61733:61852 */\n iszero\n tag_1774\n jumpi\n /* \"#utility.yul\":61771:61850 */\n tag_1775\n tag_1006\n jump\t// in\n tag_1775:\n /* \"#utility.yul\":61733:61852 */\n tag_1774:\n /* \"#utility.yul\":61891:61892 */\n 0x00\n /* \"#utility.yul\":61916:61980 */\n tag_1776\n /* \"#utility.yul\":61972:61979 */\n dup7\n /* \"#utility.yul\":61963:61969 */\n dup3\n /* \"#utility.yul\":61952:61961 */\n dup8\n /* \"#utility.yul\":61948:61970 */\n add\n /* \"#utility.yul\":61916:61980 */\n tag_1116\n jump\t// in\n tag_1776:\n /* \"#utility.yul\":61906:61980 */\n swap4\n pop\n /* \"#utility.yul\":61862:61990 */\n pop\n /* \"#utility.yul\":62029:62031 */\n 0x20\n /* \"#utility.yul\":62055:62119 */\n tag_1777\n /* \"#utility.yul\":62111:62118 */\n dup7\n /* \"#utility.yul\":62102:62108 */\n dup3\n /* \"#utility.yul\":62091:62100 */\n dup8\n /* \"#utility.yul\":62087:62109 */\n add\n /* \"#utility.yul\":62055:62119 */\n tag_1116\n jump\t// in\n tag_1777:\n /* \"#utility.yul\":62045:62119 */\n swap3\n pop\n /* \"#utility.yul\":62000:62129 */\n pop\n /* \"#utility.yul\":62189:62191 */\n 0x40\n /* \"#utility.yul\":62178:62187 */\n dup5\n /* \"#utility.yul\":62174:62192 */\n add\n /* \"#utility.yul\":62168:62193 */\n mload\n /* \"#utility.yul\":62220:62238 */\n 0xffffffffffffffff\n /* \"#utility.yul\":62212:62218 */\n dup2\n /* \"#utility.yul\":62209:62239 */\n gt\n /* \"#utility.yul\":62206:62323 */\n iszero\n tag_1778\n jumpi\n /* \"#utility.yul\":62242:62321 */\n tag_1779\n tag_1007\n jump\t// in\n tag_1779:\n /* \"#utility.yul\":62206:62323 */\n tag_1778:\n /* \"#utility.yul\":62347:62436 */\n tag_1780\n /* \"#utility.yul\":62428:62435 */\n dup7\n /* \"#utility.yul\":62419:62425 */\n dup3\n /* \"#utility.yul\":62408:62417 */\n dup8\n /* \"#utility.yul\":62404:62426 */\n add\n /* \"#utility.yul\":62347:62436 */\n tag_1138\n jump\t// in\n tag_1780:\n /* \"#utility.yul\":62337:62436 */\n swap2\n pop\n /* \"#utility.yul\":62139:62446 */\n pop\n /* \"#utility.yul\":61587:62453 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":62459:62791 */\n tag_954:\n /* \"#utility.yul\":62580:62584 */\n 0x00\n /* \"#utility.yul\":62618:62620 */\n 0x40\n /* \"#utility.yul\":62607:62616 */\n dup3\n /* \"#utility.yul\":62603:62621 */\n add\n /* \"#utility.yul\":62595:62621 */\n swap1\n pop\n /* \"#utility.yul\":62631:62702 */\n tag_1782\n /* \"#utility.yul\":62699:62700 */\n 0x00\n /* \"#utility.yul\":62688:62697 */\n dup4\n /* \"#utility.yul\":62684:62701 */\n add\n /* \"#utility.yul\":62675:62681 */\n dup6\n /* \"#utility.yul\":62631:62702 */\n tag_1084\n jump\t// in\n tag_1782:\n /* \"#utility.yul\":62712:62784 */\n tag_1783\n /* \"#utility.yul\":62780:62782 */\n 0x20\n /* \"#utility.yul\":62769:62778 */\n dup4\n /* \"#utility.yul\":62765:62783 */\n add\n /* \"#utility.yul\":62756:62762 */\n dup5\n /* \"#utility.yul\":62712:62784 */\n tag_1084\n jump\t// in\n tag_1783:\n /* \"#utility.yul\":62459:62791 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":62797:63207 */\n tag_970:\n /* \"#utility.yul\":62837:62844 */\n 0x00\n /* \"#utility.yul\":62860:62880 */\n tag_1785\n /* \"#utility.yul\":62878:62879 */\n dup3\n /* \"#utility.yul\":62860:62880 */\n tag_1008\n jump\t// in\n tag_1785:\n /* \"#utility.yul\":62855:62880 */\n swap2\n pop\n /* \"#utility.yul\":62894:62914 */\n tag_1786\n /* \"#utility.yul\":62912:62913 */\n dup4\n /* \"#utility.yul\":62894:62914 */\n tag_1008\n jump\t// in\n tag_1786:\n /* \"#utility.yul\":62889:62914 */\n swap3\n pop\n /* \"#utility.yul\":62949:62950 */\n dup3\n /* \"#utility.yul\":62946:62947 */\n dup3\n /* \"#utility.yul\":62942:62951 */\n mul\n /* \"#utility.yul\":62971:63001 */\n tag_1787\n /* \"#utility.yul\":62989:63000 */\n dup2\n /* \"#utility.yul\":62971:63001 */\n tag_1008\n jump\t// in\n tag_1787:\n /* \"#utility.yul\":62960:63001 */\n swap2\n pop\n /* \"#utility.yul\":63150:63151 */\n dup3\n /* \"#utility.yul\":63141:63148 */\n dup3\n /* \"#utility.yul\":63137:63152 */\n div\n /* \"#utility.yul\":63134:63135 */\n dup5\n /* \"#utility.yul\":63131:63153 */\n eq\n /* \"#utility.yul\":63111:63112 */\n dup4\n /* \"#utility.yul\":63104:63113 */\n iszero\n /* \"#utility.yul\":63084:63167 */\n or\n /* \"#utility.yul\":63061:63200 */\n tag_1788\n jumpi\n /* \"#utility.yul\":63180:63198 */\n tag_1789\n tag_1083\n jump\t// in\n tag_1789:\n /* \"#utility.yul\":63061:63200 */\n tag_1788:\n /* \"#utility.yul\":62845:63207 */\n pop\n /* \"#utility.yul\":62797:63207 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":63213:63393 */\n tag_1139:\n /* \"#utility.yul\":63261:63338 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":63258:63259 */\n 0x00\n /* \"#utility.yul\":63251:63339 */\n mstore\n /* \"#utility.yul\":63358:63362 */\n 0x12\n /* \"#utility.yul\":63355:63356 */\n 0x04\n /* \"#utility.yul\":63348:63363 */\n mstore\n /* \"#utility.yul\":63382:63386 */\n 0x24\n /* \"#utility.yul\":63379:63380 */\n 0x00\n /* \"#utility.yul\":63372:63387 */\n revert\n /* \"#utility.yul\":63399:63584 */\n tag_975:\n /* \"#utility.yul\":63439:63440 */\n 0x00\n /* \"#utility.yul\":63456:63476 */\n tag_1792\n /* \"#utility.yul\":63474:63475 */\n dup3\n /* \"#utility.yul\":63456:63476 */\n tag_1008\n jump\t// in\n tag_1792:\n /* \"#utility.yul\":63451:63476 */\n swap2\n pop\n /* \"#utility.yul\":63490:63510 */\n tag_1793\n /* \"#utility.yul\":63508:63509 */\n dup4\n /* \"#utility.yul\":63490:63510 */\n tag_1008\n jump\t// in\n tag_1793:\n /* \"#utility.yul\":63485:63510 */\n swap3\n pop\n /* \"#utility.yul\":63529:63530 */\n dup3\n /* \"#utility.yul\":63519:63554 */\n tag_1794\n jumpi\n /* \"#utility.yul\":63534:63552 */\n tag_1795\n tag_1139\n jump\t// in\n tag_1795:\n /* \"#utility.yul\":63519:63554 */\n tag_1794:\n /* \"#utility.yul\":63576:63577 */\n dup3\n /* \"#utility.yul\":63573:63574 */\n dup3\n /* \"#utility.yul\":63569:63578 */\n div\n /* \"#utility.yul\":63564:63578 */\n swap1\n pop\n /* \"#utility.yul\":63399:63584 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa26469706673582212200e309a78c4164f5b8b6e48c22021a99aca2bb60332bc12d21314fee29f34eefc64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": { + "@_692": { + "entryPoint": null, + "id": 692, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_disableInitializers_369": { + "entryPoint": 235, + "id": 369, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_400": { + "entryPoint": 495, + "id": 400, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBFactory_$4236_fromMemory": { + "entryPoint": 632, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory": { + "entryPoint": 698, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_IWNATIVE_$7175_fromMemory": { + "entryPoint": 764, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_ILBFactory_$4236t_contract$_ISovrynLBFactoryV1_$6916t_contract$_IWNATIVE_$7175_fromMemory": { + "entryPoint": 786, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_encode_t_uint64_to_t_uint64_fromStack": { + "entryPoint": 894, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": 911, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 569, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_ILBFactory_$4236": { + "entryPoint": 588, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_ISovrynLBFactoryV1_$6916": { + "entryPoint": 654, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_IWNATIVE_$7175": { + "entryPoint": 720, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 538, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint64": { + "entryPoint": 875, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 534, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_contract$_ILBFactory_$4236": { + "entryPoint": 607, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_ISovrynLBFactoryV1_$6916": { + "entryPoint": 673, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_IWNATIVE_$7175": { + "entryPoint": 739, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:3264:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:34", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:34" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:34" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:34", + "type": "" + } + ], + "src": "7:75:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:34" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:34" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:34", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:34", + "type": "" + } + ], + "src": "334:126:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:34", + "type": "" + } + ], + "src": "466:96:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "632:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "642:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "671:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "653:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "653:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "642:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_ILBFactory_$4236", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "614:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "624:7:34", + "type": "" + } + ], + "src": "568:115:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "751:98:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "827:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "836:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "839:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "829:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "829:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "829:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "774:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "818:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_ILBFactory_$4236", + "nodeType": "YulIdentifier", + "src": "781:36:34" + }, + "nodeType": "YulFunctionCall", + "src": "781:43:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "771:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "771:54:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "764:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "764:62:34" + }, + "nodeType": "YulIf", + "src": "761:82:34" + } + ] + }, + "name": "validator_revert_t_contract$_ILBFactory_$4236", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "744:5:34", + "type": "" + } + ], + "src": "689:160:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "937:99:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "947:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "962:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "956:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "956:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "947:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1024:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_ILBFactory_$4236", + "nodeType": "YulIdentifier", + "src": "978:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "978:52:34" + }, + "nodeType": "YulExpressionStatement", + "src": "978:52:34" + } + ] + }, + "name": "abi_decode_t_contract$_ILBFactory_$4236_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "915:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "923:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "931:5:34", + "type": "" + } + ], + "src": "855:181:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1114:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1124:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1153:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1135:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "1135:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1124:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_ISovrynLBFactoryV1_$6916", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1096:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1106:7:34", + "type": "" + } + ], + "src": "1042:123:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1241:106:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1325:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1334:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1337:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1327:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1327:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1327:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1264:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1316:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_ISovrynLBFactoryV1_$6916", + "nodeType": "YulIdentifier", + "src": "1271:44:34" + }, + "nodeType": "YulFunctionCall", + "src": "1271:51:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1261:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "1261:62:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1254:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1254:70:34" + }, + "nodeType": "YulIf", + "src": "1251:90:34" + } + ] + }, + "name": "validator_revert_t_contract$_ISovrynLBFactoryV1_$6916", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1234:5:34", + "type": "" + } + ], + "src": "1171:176:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1443:107:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1453:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1468:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1462:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "1462:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1453:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1538:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_ISovrynLBFactoryV1_$6916", + "nodeType": "YulIdentifier", + "src": "1484:53:34" + }, + "nodeType": "YulFunctionCall", + "src": "1484:60:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:60:34" + } + ] + }, + "name": "abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1421:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1429:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1437:5:34", + "type": "" + } + ], + "src": "1353:197:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1618:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1628:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1657:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1639:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "1639:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1628:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_IWNATIVE_$7175", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1600:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1610:7:34", + "type": "" + } + ], + "src": "1556:113:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1735:96:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1809:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1818:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1821:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1811:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1811:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1811:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1758:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1800:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_IWNATIVE_$7175", + "nodeType": "YulIdentifier", + "src": "1765:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "1765:41:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1755:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "1755:52:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1748:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1748:60:34" + }, + "nodeType": "YulIf", + "src": "1745:80:34" + } + ] + }, + "name": "validator_revert_t_contract$_IWNATIVE_$7175", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1728:5:34", + "type": "" + } + ], + "src": "1675:156:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1917:97:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1927:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1942:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1936:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "1936:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1927:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2002:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_IWNATIVE_$7175", + "nodeType": "YulIdentifier", + "src": "1958:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "1958:50:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1958:50:34" + } + ] + }, + "name": "abi_decode_t_contract$_IWNATIVE_$7175_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1895:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1903:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1911:5:34", + "type": "" + } + ], + "src": "1837:177:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2194:615:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2240:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "2242:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "2242:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "2242:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2215:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2224:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2211:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2211:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2236:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2207:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2207:32:34" + }, + "nodeType": "YulIf", + "src": "2204:119:34" + }, + { + "nodeType": "YulBlock", + "src": "2333:147:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2348:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2362:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2352:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2377:93:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2442:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2453:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2438:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2438:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2462:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBFactory_$4236_fromMemory", + "nodeType": "YulIdentifier", + "src": "2387:50:34" + }, + "nodeType": "YulFunctionCall", + "src": "2387:83:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2377:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "2490:156:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2505:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2519:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2509:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2535:101:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2608:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2619:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2604:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2604:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2628:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory", + "nodeType": "YulIdentifier", + "src": "2545:58:34" + }, + "nodeType": "YulFunctionCall", + "src": "2545:91:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2535:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "2656:146:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2671:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2685:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2675:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2701:91:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2764:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2775:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2760:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2760:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2784:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IWNATIVE_$7175_fromMemory", + "nodeType": "YulIdentifier", + "src": "2711:48:34" + }, + "nodeType": "YulFunctionCall", + "src": "2711:81:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2701:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBFactory_$4236t_contract$_ISovrynLBFactoryV1_$6916t_contract$_IWNATIVE_$7175_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2148:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2159:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2171:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2179:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "2187:6:34", + "type": "" + } + ], + "src": "2020:789:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2859:57:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2869:41:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2884:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2891:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2880:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2880:30:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2869:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2841:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2851:7:34", + "type": "" + } + ], + "src": "2815:101:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2985:52:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3002:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3024:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "3007:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "3007:23:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2995:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "2995:36:34" + }, + "nodeType": "YulExpressionStatement", + "src": "2995:36:34" + } + ] + }, + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2973:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2980:3:34", + "type": "" + } + ], + "src": "2922:115:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3139:122:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3149:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3161:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3172:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3157:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3157:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3149:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3227:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3240:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3251:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3236:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3236:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", + "nodeType": "YulIdentifier", + "src": "3185:41:34" + }, + "nodeType": "YulFunctionCall", + "src": "3185:69:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3185:69:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3111:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3123:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3134:4:34", + "type": "" + } + ], + "src": "3043:218:34" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_ILBFactory_$4236(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBFactory_$4236(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBFactory_$4236(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBFactory_$4236_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBFactory_$4236(value)\n }\n\n function cleanup_t_contract$_ISovrynLBFactoryV1_$6916(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISovrynLBFactoryV1_$6916(value) {\n if iszero(eq(value, cleanup_t_contract$_ISovrynLBFactoryV1_$6916(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISovrynLBFactoryV1_$6916(value)\n }\n\n function cleanup_t_contract$_IWNATIVE_$7175(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IWNATIVE_$7175(value) {\n if iszero(eq(value, cleanup_t_contract$_IWNATIVE_$7175(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IWNATIVE_$7175_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IWNATIVE_$7175(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBFactory_$4236t_contract$_ISovrynLBFactoryV1_$6916t_contract$_IWNATIVE_$7175_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBFactory_$4236_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_ISovrynLBFactoryV1_$6916_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_contract$_IWNATIVE_$7175_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 34, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60e060405234801562000010575f80fd5b506040516200750338038062007503833981810160405281019062000036919062000312565b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050620000e2620000eb60201b60201c565b505050620003aa565b5f620000fc620001ef60201b60201c565b9050805f0160089054906101000a900460ff161562000147576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1614620001ec5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051620001e391906200038f565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000245826200021a565b9050919050565b5f620002588262000239565b9050919050565b6200026a816200024c565b811462000275575f80fd5b50565b5f8151905062000288816200025f565b92915050565b5f6200029a8262000239565b9050919050565b620002ac816200028e565b8114620002b7575f80fd5b50565b5f81519050620002ca81620002a1565b92915050565b5f620002dc8262000239565b9050919050565b620002ee81620002d0565b8114620002f9575f80fd5b50565b5f815190506200030c81620002e3565b92915050565b5f805f606084860312156200032c576200032b62000216565b5b5f6200033b8682870162000278565b93505060206200034e86828701620002ba565b92505060406200036186828701620002fc565b9150509250925092565b5f67ffffffffffffffff82169050919050565b62000389816200036b565b82525050565b5f602082019050620003a45f8301846200037e565b92915050565b60805160a05160c05161709b620004685f395f818161015501528181610798015281816108860152818161097901528181610b3801528181610fe9015281816117c8015281816119b401528181611a6501528181611c4601528181611ceb015281816121ac0152818161262c01528181612a46015281816135310152818161397a01526139fc01525f818161279f0152614c6a01525f81816114e00152818161171e01528181611b0201528181612cda0152614387015261709b5ff3fe60806040526004361061014e575f3560e01c806392fe8e70116100b5578063bb558a9f1161006e578063bb558a9f146105a3578063c22159b6146105cd578063d0e380f21461060a578063e038e6dc14610646578063e9361c0814610676578063f96fe9251461069e576101da565b806392fe8e701461043e578063964f987c1461047a5780639ab6156b146104b8578063a0d376cf146104f4578063a3c7271a14610532578063b066ea7c14610573576101da565b8063659ac74b11610107578063659ac74b146103265780636c9c0078146103625780638129fc1c1461038c57806381c2fdfb146103a257806388cc58e4146103df5780638efc2b2c14610409576101da565b80631a24f9a9146101de5780632075ad221461021a5780632a443fae1461024a5780633dc8f8ec146102865780634b801870146102c257806362c06767146102fe576101da565b366101da577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d8576040517f6c8cb79300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b3480156101e9575f80fd5b5061020460048036038101906101ff919061564c565b6106da565b60405161021191906156ee565b60405180910390f35b610234600480360381019061022f9190615731565b610a79565b6040516102419190615868565b60405180910390f35b348015610255575f80fd5b50610270600480360381019061026b9190615888565b610da7565b60405161027d91906156ee565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a7919061564c565b610f2a565b6040516102b99190615868565b60405180910390f35b3480156102cd575f80fd5b506102e860048036038101906102e39190615888565b611239565b6040516102f591906156ee565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f919061591b565b6114de565b005b348015610331575f80fd5b5061034c600480360381019061034791906159da565b61171b565b6040516103599190615a99565b60405180910390f35b34801561036d575f80fd5b506103766117c5565b6040516103839190615ad2565b60405180910390f35b348015610397575f80fd5b506103a06117ec565b005b3480156103ad575f80fd5b506103c860048036038101906103c39190615aeb565b611963565b6040516103d6929190615bd4565b60405180910390f35b3480156103ea575f80fd5b506103f3611aff565b6040516104009190615c1b565b60405180910390f35b610423600480360381019061041e9190615c57565b611b26565b60405161043596959493929190615c9e565b60405180910390f35b348015610449575f80fd5b50610464600480360381019061045f9190615888565b611e2b565b6040516104719190615868565b60405180910390f35b348015610485575f80fd5b506104a0600480360381019061049b9190615dc0565b61205c565b6040516104af93929190615e1f565b60405180910390f35b3480156104c3575f80fd5b506104de60048036038101906104d9919061564c565b6120ee565b6040516104eb91906156ee565b60405180910390f35b3480156104ff575f80fd5b5061051a60048036038101906105159190615dc0565b61234f565b60405161052993929190615e1f565b60405180910390f35b34801561053d575f80fd5b5061055860048036038101906105539190615c57565b6123e1565b60405161056a96959493929190615c9e565b60405180910390f35b61058d60048036038101906105889190615731565b61256e565b60405161059a91906156ee565b60405180910390f35b3480156105ae575f80fd5b506105b761279c565b6040516105c49190615e74565b60405180910390f35b3480156105d8575f80fd5b506105f360048036038101906105ee9190615e8d565b6127c3565b604051610601929190615bd4565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190615f89565b612907565b60405161063d91906156ee565b60405180910390f35b610660600480360381019061065b9190615731565b612988565b60405161066d91906156ee565b60405180910390f35b348015610681575f80fd5b5061069c6004803603810190610697919061605b565b612cd8565b005b3480156106a9575f80fd5b506106c460048036038101906106bf91906160fe565b612e41565b6040516106d1919061614b565b60405180910390f35b5f81804211156107235780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161071a929190615bd4565b60405180910390fd5b845f815f015151148061073f5750805f01515181602001515114155b8061075f57508060400151516001825f01515161075c9190616191565b14155b15610796576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106107e8576107e76161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461086a578560400151865f01515181518110610826576108256161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016108619190616200565b60405180910390fd5b5f610881875f015188602001518960400151612ec2565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dd9190616200565b602060405180830381865afa1580156108f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091c919061622d565b905061096288604001515f81518110610938576109376161c4565b5b602002602001015133845f81518110610954576109536161c4565b5b60200260200101518d612fff565b6109768289602001518a604001513061303b565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109d09190616200565b602060405180830381865afa1580156109eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f919061622d565b610a199190616258565b945084891115610a625788856040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610a59929190615bd4565b60405180910390fd5b610a6c8786613527565b5050505095945050505050565b60608180421115610ac35780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610aba929190615bd4565b60405180910390fd5b845f815f0151511480610adf5750805f01515181602001515114155b80610aff57508060400151516001825f015151610afc9190616191565b14155b15610b36576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110610b8457610b836161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c025785604001515f81518110610bbe57610bbd6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401610bf99190616200565b60405180910390fd5b5f610c19875f015188602001518960400151612ec2565b9050610c2f87602001518289604001518b6135c4565b935034845f81518110610c4557610c446161c4565b5b60200260200101511115610cac5734845f81518110610c6757610c666161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401610ca3929190615bd4565b60405180910390fd5b610cea815f81518110610cc257610cc16161c4565b5b6020026020010151855f81518110610cdd57610cdc6161c4565b5b6020026020010151613970565b5f610d008289602001518a60400151888b613a45565b905088811015610d495788816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610d40929190615bd4565b60405180910390fd5b845f81518110610d5c57610d5b6161c4565b5b6020026020010151341115610d9b57610d9a33865f81518110610d8257610d816161c4565b5b602002602001015134610d959190616258565b613ddb565b5b50505050949350505050565b5f8180421115610df05780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610de7929190615bd4565b60405180910390fd5b845f815f0151511480610e0c5750805f01515181602001515114155b80610e2c57508060400151516001825f015151610e299190616191565b14155b15610e63576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e7a875f015188602001518960400151612ec2565b9050610ec087604001515f81518110610e9657610e956161c4565b5b602002602001015133835f81518110610eb257610eb16161c4565b5b60200260200101518c612fff565b610ed5898289602001518a604001518a613e95565b935083881115610f1e5787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610f15929190615bd4565b60405180910390fd5b50505095945050505050565b60608180421115610f745780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610f6b929190615bd4565b60405180910390fd5b845f815f0151511480610f905750805f01515181602001515114155b80610fb057508060400151516001825f015151610fad9190616191565b14155b15610fe7576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f01515181518110611039576110386161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146110bb578560400151865f01515181518110611077576110766161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016110b29190616200565b60405180910390fd5b5f6110d2875f015188602001518960400151612ec2565b90506110e887602001518289604001518c6135c4565b935087845f815181106110fe576110fd6161c4565b5b602002602001015111156111655787845f815181106111205761111f6161c4565b5b60200260200101516040517fca7710c800000000000000000000000000000000000000000000000000000000815260040161115c929190615bd4565b60405180910390fd5b6111c387604001515f8151811061117f5761117e6161c4565b5b602002602001015133835f8151811061119b5761119a6161c4565b5b6020026020010151875f815181106111b6576111b56161c4565b5b6020026020010151612fff565b5f6111d98289602001518a604001518830613a45565b9050898110156112225789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401611219929190615bd4565b60405180910390fd5b61122c8782613527565b5050505095945050505050565b5f81804211156112825780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611279929190615bd4565b60405180910390fd5b845f815f015151148061129e5750805f01515181602001515114155b806112be57508060400151516001825f0151516112bb9190616191565b14155b156112f5576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61130c875f015188602001518960400151612ec2565b90505f8760400151825181518110611327576113266161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b815260040161136b9190616200565b602060405180830381865afa158015611386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113aa919061622d565b90506113f089604001515f815181106113c6576113c56161c4565b5b602002602001015133855f815181106113e2576113e16161c4565b5b60200260200101518e612fff565b611404838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b815260040161143e9190616200565b602060405180830381865afa158015611459573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147d919061622d565b6114879190616258565b9550858a11156114d05789866040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016114c7929190615bd4565b60405180910390fd5b505050505095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611547573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156b919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cf576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611642577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461162f5780611631565b475b905061163d8282613ddb565b611716565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461166f57806116e8565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116a89190616200565b602060405180830381865afa1580156116c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e7919061622d565b5b905061171582828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663659ac74b868686866040518563ffffffff1660e01b815260040161177b94939291906162f9565b6020604051808303815f875af1158015611797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bb9190616350565b9050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f6117f561435d565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561183d5750825b90505f60018367ffffffffffffffff1614801561187057505f3073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801561187e575080155b156118b5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611902576001855f0160086101000a81548160ff0219169083151502179055505b831561195c575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161195391906163c7565b60405180910390a15b5050505050565b5f8082804211156119ad5780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016119a4929190615bd4565b60405180910390fd5b5f6119dd8c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614905080611aad57898b809b50819c5050505b5f80611abd848e8e8e8e306144a2565b9150915082611acd578082611ad0565b81815b8097508198505050505050611ae68c878661462b565b611af08684613527565b50509850989650505050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f805f806060805f611b60885f016020810190611b43919061641f565b896020016020810190611b56919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcf91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f016020810190611bf7919061641f565b73ffffffffffffffffffffffffffffffffffffffff1614611c44576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16885f016020810190611c8d919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611cb35750348860600135145b15611ce957611cda886020016020810190611cce919061641f565b33838b60800135612fff565b611ce48134613970565b611dff565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16886020016020810190611d33919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611d595750348860800135145b15611d8e57611d7f885f016020810190611d73919061641f565b33838b60600135612fff565b611d898134613970565b611dfe565b875f016020810190611da0919061641f565b886020016020810190611db3919061641f565b89606001358a60800135346040517fd0a4f13b000000000000000000000000000000000000000000000000000000008152600401611df595949392919061644a565b60405180910390fd5b5b611e098882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b60608180421115611e755780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611e6c929190615bd4565b60405180910390fd5b845f815f0151511480611e915750805f01515181602001515114155b80611eb157508060400151516001825f015151611eae9190616191565b14155b15611ee8576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611eff875f015188602001518960400151612ec2565b9050611f1587602001518289604001518c6135c4565b935087845f81518110611f2b57611f2a6161c4565b5b60200260200101511115611f925787845f81518110611f4d57611f4c6161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401611f89929190615bd4565b60405180910390fd5b611ff087604001515f81518110611fac57611fab6161c4565b5b602002602001015133835f81518110611fc857611fc76161c4565b5b6020026020010151875f81518110611fe357611fe26161c4565b5b6020026020010151612fff565b5f6120068289602001518a60400151888b613a45565b90508981101561204f5789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612046929190615bd4565b60405180910390fd5b5050505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663abcd783086866040518363ffffffff1660e01b815260040161209a9291906164aa565b606060405180830381865afa1580156120b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120d991906164e5565b80935081945082955050505093509350939050565b5f81804211156121375780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161212e929190615bd4565b60405180910390fd5b845f815f01515114806121535750805f01515181602001515114155b8061217357508060400151516001825f0151516121709190616191565b14155b156121aa576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106121fc576121fb6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461227e578560400151865f0151518151811061223a576122396161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016122759190616200565b60405180910390fd5b5f612295875f015188602001518960400151612ec2565b90506122db87604001515f815181106122b1576122b06161c4565b5b602002602001015133835f815181106122cd576122cc6161c4565b5b60200260200101518c612fff565b6122f0898289602001518a6040015130613e95565b9350838811156123395787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612330929190615bd4565b60405180910390fd5b6123438685613527565b50505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663e77366f886866040518363ffffffff1660e01b815260040161238d9291906164aa565b606060405180830381865afa1580156123a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cc91906164e5565b80935081945082955050505093509350939050565b5f805f806060805f61241b885f0160208101906123fe919061641f565b896020016020810190612411919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f0160208101906124b2919061641f565b73ffffffffffffffffffffffffffffffffffffffff16146124ff576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612520885f016020810190612514919061641f565b33838b60600135612fff565b612542886020016020810190612536919061641f565b33838b60800135612fff565b61254c8882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b5f81804211156125b75780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016125ae929190615bd4565b60405180910390fd5b845f815f01515114806125d35750805f01515181602001515114155b806125f357508060400151516001825f0151516125f09190616191565b14155b1561262a576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612678576126776161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146126f65785604001515f815181106126b2576126b16161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016126ed9190616200565b60405180910390fd5b5f61270d875f015188602001518960400151612ec2565b9050612733815f81518110612725576127246161c4565b5b602002602001015134613970565b612748348289602001518a604001518a613e95565b9350838811156127915787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612788929190615bd4565b60405180910390fd5b505050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f80828042111561280d5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401612804929190615bd4565b60405180910390fd5b5f61281d8d8d8d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612869573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff161415905080156128cf57898b809b50819c5050505b6128dd828c8c8c8c8c6144a2565b809550819650505080156128f657838580955081965050505b505050995099975050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16634c7cffbd836040518263ffffffff1660e01b8152600401612941919061614b565b602060405180830381865afa15801561295c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612980919061622d565b905092915050565b5f81804211156129d15780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016129c8929190615bd4565b60405180910390fd5b845f815f01515114806129ed5750805f01515181602001515114155b80612a0d57508060400151516001825f015151612a0a9190616191565b14155b15612a44576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612a9257612a916161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612b105785604001515f81518110612acc57612acb6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401612b079190616200565b60405180910390fd5b5f612b27875f015188602001518960400151612ec2565b90505f8760400151825181518110612b4257612b416161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612b869190616200565b602060405180830381865afa158015612ba1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc5919061622d565b9050612beb835f81518110612bdd57612bdc6161c4565b5b602002602001015134613970565b612bff838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401612c399190616200565b602060405180830381865afa158015612c54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c78919061622d565b612c829190616258565b9550858a1115612ccb5789866040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612cc2929190615bd4565b60405180910390fd5b5050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d65919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166317fad7fc3087878787876040518763ffffffff1660e01b8152600401612e0c9695949392919061659d565b5f604051808303815f87803b158015612e23575f80fd5b505af1158015612e35573d5f803e3d5ffd5b50505050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663f5e29329836040518263ffffffff1660e01b8152600401612e7b91906156ee565b602060405180830381865afa158015612e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eba9190616606565b905092915050565b6060835167ffffffffffffffff811115612edf57612ede61520a565b5b604051908082528060200260200182016040528015612f0d5781602001602082028036833780820191505090505b5090505f80835f81518110612f2557612f246161c4565b5b602002602001015190505f5b8351811015612ff557819250846001820181518110612f5357612f526161c4565b5b60200260200101519150612f9d8383898481518110612f7557612f746161c4565b5b6020026020010151898581518110612f9057612f8f6161c4565b5b6020026020010151614c3c565b848281518110612fb057612faf6161c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050612f31565b5050509392505050565b5f810315613035576130348383838773ffffffffffffffffffffffffffffffffffffffff16614d93909392919063ffffffff16565b5b50505050565b5f805f805f865f81518110613053576130526161c4565b5b602002602001015190505f5b895181101561351b5789818151811061307b5761307a6161c4565b5b60200260200101519250888181518110613098576130976161c4565b5b602002602001015194508195508760018201815181106130bb576130ba6161c4565b5b60200260200101519150895160018201146130f3578960018201815181106130e6576130e56161c4565b5b60200260200101516130f5565b865b93505f600181111561310a57613109616631565b5b85600181111561311d5761311c616631565b5b036133f9575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561316d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061319191906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156132f0575f828973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016132259190616200565b602060405180830381865afa158015613240573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613264919061622d565b0390505f61327d848484614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f838b6040518463ffffffff1660e01b81526004016132bc93929190616796565b5f604051808303815f87803b1580156132d3575f80fd5b505af11580156132e5573d5f803e3d5ffd5b5050505050506133f2565b5f818973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b815260040161332b9190616200565b602060405180830381865afa158015613346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336a919061622d565b0390505f613383838584614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f825f8b6040518463ffffffff1660e01b81526004016133c2939291906167de565b5f604051808303815f87803b1580156133d9575f80fd5b505af11580156133eb573d5f803e3d5ffd5b5050505050505b5050613510565b8273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561345e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348291906163f4565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b81526004016134ce929190616826565b6020604051808303815f875af11580156134ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061350e9190616880565b505b80600101905061305f565b50505050505050505050565b5f8103156135c0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161358891906156ee565b5f604051808303815f87803b15801561359f575f80fd5b505af11580156135b1573d5f803e3d5ffd5b505050506135bf8282613ddb565b5b5050565b6060825167ffffffffffffffff8111156135e1576135e061520a565b5b60405190808252806020026020018201604052801561360f5781602001602082028036833780820191505090505b5090508181855181518110613627576136266161c4565b5b6020026020010181815250505f845190505b5f8114613967575f8460018361364f9190616258565b815181106136605761365f6161c4565b5b602002602001015190505f876001846136799190616258565b8151811061368a576136896161c4565b5b602002602001015190505f876001856136a39190616258565b815181106136b4576136b36161c4565b5b602002602001015190505f60018111156136d1576136d0616631565b5b8260018111156136e4576136e3616631565b5b0361384e575f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613734573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061375891906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508886815181106137905761378f6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156137d657808280925081935050505b5f8787815181106137ea576137e96161c4565b5b60200260200101519050613809838383614ef39092919063ffffffff16565b6fffffffffffffffffffffffffffffffff16886001896138299190616258565b8151811061383a576138396161c4565b5b602002602001018181525050505050613951565b61390d81868681518110613865576138646161c4565b5b60200260200101518573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f191906163f4565b73ffffffffffffffffffffffffffffffffffffffff161461205c565b826fffffffffffffffffffffffffffffffff169250905050856001866139339190616258565b81518110613944576139436161c4565b5b6020026020010181815250505b505050808061395f906168ab565b915050613639565b50949350505050565b5f810315613a41577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156139de575f80fd5b505af11580156139f0573d5f803e3d5ffd5b5050505050613a4082827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b5050565b5f805f805f80885f81518110613a5e57613a5d6161c4565b5b602002602001015190505f5b8b51811015613dcc578b8181518110613a8657613a856161c4565b5b602002602001015193508a8181518110613aa357613aa26161c4565b5b60200260200101519250819550896001820181518110613ac657613ac56161c4565b5b602002602001015191508b516001820114613afe578b6001820181518110613af157613af06161c4565b5b6020026020010151613b00565b875b94505f6001811115613b1557613b14616631565b5b836001811115613b2857613b27616631565b5b03613c6057886001820181518110613b4357613b426161c4565b5b602002602001015196508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015613bf0578373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f89886040518463ffffffff1660e01b8152600401613bbe93929190616796565b5f604051808303815f87803b158015613bd5575f80fd5b505af1158015613be7573d5f803e3d5ffd5b50505050613c5b565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f885f886040518463ffffffff1660e01b8152600401613c2d939291906167de565b5f604051808303815f87803b158015613c44575f80fd5b505af1158015613c56573d5f803e3d5ffd5b505050505b613dc1565b5f8473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613caa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cce91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f80613d838773ffffffffffffffffffffffffffffffffffffffff166353c059a0858b6040518363ffffffff1660e01b8152600401613d3e929190616826565b6020604051808303815f875af1158015613d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d7e9190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff1691508215613db957809950613dbd565b8199505b5050505b806001019050613a6a565b50505050505095945050505050565b5f810315613e91575f8273ffffffffffffffffffffffffffffffffffffffff1682604051613e08906168fc565b5f6040518083038185875af1925050503d805f8114613e42576040519150601f19603f3d011682016040523d82523d5f602084013e613e47565b606091505b5050905080613e8f5782826040517f47b96f70000000000000000000000000000000000000000000000000000000008152600401613e86929190616910565b60405180910390fd5b505b5050565b5f805f805f80875f81518110613eae57613ead6161c4565b5b602002602001015190508a95505f5b8a518110156142c3578a8181518110613ed957613ed86161c4565b5b60200260200101519250898181518110613ef657613ef56161c4565b5b60200260200101519450819550886001820181518110613f1957613f186161c4565b5b602002602001015191508a516001820114613f51578a6001820181518110613f4457613f436161c4565b5b6020026020010151613f53565b875b93505f6001811115613f6857613f67616631565b5b856001811115613f7b57613f7a616631565b5b03614157575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fef91906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156140ce5761405d82828b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f8b896040518463ffffffff1660e01b815260040161409c93929190616796565b5f604051808303815f87803b1580156140b3575f80fd5b505af11580156140c5573d5f803e3d5ffd5b50505050614150565b6140e381838b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8a5f896040518463ffffffff1660e01b8152600401614122939291906167de565b5f604051808303815f87803b158015614139575f80fd5b505af115801561414b573d5f803e3d5ffd5b505050505b50506142b8565b5f8373ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141c591906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f8061427a8673ffffffffffffffffffffffffffffffffffffffff166353c059a0858a6040518363ffffffff1660e01b8152600401614235929190616826565b6020604051808303815f875af1158015614251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142759190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff16915082156142b0578099506142b4565b8199505b5050505b806001019050613ebd565b50505050505095945050505050565b5f63a9059cbb60e01b83836040516024016142ee929190616910565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506143578482614fee565b50505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8585856040518463ffffffff1660e01b81526004016143e293929190616937565b608060405180830381865afa1580156143fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144219190616a09565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361449b578383836040517fd648e3a200000000000000000000000000000000000000000000000000000000815260040161449293929190616a34565b60405180910390fd5b9392505050565b5f805f8873ffffffffffffffffffffffffffffffffffffffff1663c9939f5e338689896040518563ffffffff1660e01b81526004016144e49493929190616a69565b5f604051808303815f875af11580156144ff573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906145279190616b7a565b90505f5b81518110156145c95761455782828151811061454a576145496161c4565b5b6020026020010151615078565b6fffffffffffffffffffffffffffffffff16846145749190616191565b935061459982828151811061458c5761458b6161c4565b5b6020026020010151615093565b6fffffffffffffffffffffffffffffffff16836145b69190616191565b9250806145c290616bc1565b905061452b565b50878310806145d757508682105b1561461f57878388846040517f3199f6ee0000000000000000000000000000000000000000000000000000000081526004016146169493929190616c08565b60405180910390fd5b50965096945050505050565b5f81031561465f5761465e82828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f805f80606080876101c00135804211156146b85780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016146af929190615bd4565b60405180910390fd5b888061014001906146c99190616c57565b9050898061012001906146dc9190616cb9565b905014158061470f5750888061016001906146f79190616c57565b90508980610120019061470a9190616cb9565b905014155b15614746576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62ffffff80168960e001351180614766575062ffffff8016896101000135115b156147b3578860e001358961010001356040517f32f4ab8e0000000000000000000000000000000000000000000000000000000081526004016147aa929190615bd4565b60405180910390fd5b5f898061012001906147c59190616cb9565b905067ffffffffffffffff8111156147e0576147df61520a565b5b60405190808252806020026020018201604052801561480e5781602001602082028036833780820191505090505b509050898061012001906148229190616cb9565b905067ffffffffffffffff81111561483d5761483c61520a565b5b60405190808252806020026020018201604052801561486b5781602001602082028036833780820191505090505b5093505f8973ffffffffffffffffffffffffffffffffffffffff1663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156148b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148dc9190616606565b62ffffff169050808b61010001358c60e0013501108061490657508a60e001358b61010001358201105b15614955578a60e001358b6101000135826040517ffaa1db5600000000000000000000000000000000000000000000000000000000815260040161494c93929190616d1b565b60405180910390fd5b5f5b8251811015614a88575f8c8061012001906149729190616cb9565b83818110614983576149826161c4565b5b90506020020135830190505f8112806149a0575062ffffff801681115b156149e257806040517fe1505cc20000000000000000000000000000000000000000000000000000000081526004016149d99190616d68565b60405180910390fd5b808783815181106149f6576149f56161c4565b5b602002602001018181525050614a5d8d806101400190614a169190616c57565b84818110614a2757614a266161c4565b5b905060200201358e806101600190614a3f9190616c57565b85818110614a5057614a4f6161c4565b5b905060200201358361509f565b848381518110614a7057614a6f6161c4565b5b60200260200101818152505050806001019050614957565b50505f808a73ffffffffffffffffffffffffffffffffffffffff1663383d15c58d610180016020810190614abc9190616d81565b858f6101a0016020810190614ad19190616d81565b6040518463ffffffff1660e01b8152600401614aef93929190616e63565b5f604051808303815f875af1158015614b0a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190614b329190616f34565b8097508193508294505050505f614b52828461512090919063ffffffff16565b9050614b5d81615078565b6fffffffffffffffffffffffffffffffff169a50614b7a81615093565b6fffffffffffffffffffffffffffffffff1699508c60a001358b1080614ba357508c60c001358a105b15614bf3578c60a001358b8e60c001358c6040517f3199f6ee000000000000000000000000000000000000000000000000000000008152600401614bea9493929190616c08565b60405180910390fd5b614bfc82615078565b6fffffffffffffffffffffffffffffffff169850614c1982615093565b6fffffffffffffffffffffffffffffffff16975050505050509295509295509295565b5f806001811115614c5057614c4f616631565b5b826001811115614c6357614c62616631565b5b03614d7d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b8152600401614cc3929190616fa0565b602060405180830381865afa158015614cde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d02919061629f565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614d78578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401614d6f93929190616a34565b60405180910390fd5b614d8b565b614d88858585614384565b90505b949350505050565b5f6323b872dd60e01b848484604051602401614db193929190616a34565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050614e1a8582614fee565b5050505050565b5f808403614e5b576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614e6857505f82145b15614e9f576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e585614eae9190616fc7565b90505f8382614ebd9190616fc7565b90505f826103e887614ecf9190616fc7565b614ed99190616191565b90508082614ee79190617035565b93505050509392505050565b5f808403614f2d576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614f3a57505f82145b15614f71576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e88585614f819190616fc7565b614f8b9190616fc7565b90505f6103e58685614f9d9190616258565b614fa79190616fc7565b905060018183614fb79190617035565b614fc19190616191565b925050509392505050565b5f806fffffffffffffffffffffffffffffffff831691508260801c9050915091565b5f805f5260205f8351602085015f875af19050805f811461502c573d5f811461501f5760015f511483169250615026565b843b151592505b5061503b565b3d1561503a573d5f803e3d5ffd5b5b5080615073576040517f32e2717a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f8160801c9050919050565b5f6150ca8467ffffffffffffffff1667ffffffffffffffff605884615198909392919063ffffffff16565b90506150f68367ffffffffffffffff1667ffffffffffffffff601884615198909392919063ffffffff16565b90506151178262ffffff1662ffffff5f84615198909392919063ffffffff16565b90509392505050565b5f81830390508281118061515b5750825f1c6fffffffffffffffffffffffffffffffff16815f1c6fffffffffffffffffffffffffffffffff16115b15615192576040517fe599af5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6151d5816151c3565b81146151df575f80fd5b50565b5f813590506151f0816151cc565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b615240826151fa565b810181811067ffffffffffffffff8211171561525f5761525e61520a565b5b80604052505050565b5f6152716151b2565b905061527d8282615237565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156152a4576152a361520a565b5b602082029050602081019050919050565b5f80fd5b5f6152cb6152c68461528a565b615268565b905080838252602082019050602084028301858111156152ee576152ed6152b5565b5b835b81811015615317578061530388826151e2565b8452602084019350506020810190506152f0565b5050509392505050565b5f82601f83011261533557615334615286565b5b81356153458482602086016152b9565b91505092915050565b5f67ffffffffffffffff8211156153685761536761520a565b5b602082029050602081019050919050565b60028110615385575f80fd5b50565b5f8135905061539681615379565b92915050565b5f6153ae6153a98461534e565b615268565b905080838252602082019050602084028301858111156153d1576153d06152b5565b5b835b818110156153fa57806153e68882615388565b8452602084019350506020810190506153d3565b5050509392505050565b5f82601f83011261541857615417615286565b5b813561542884826020860161539c565b91505092915050565b5f67ffffffffffffffff82111561544b5761544a61520a565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6154858261545c565b9050919050565b5f6154968261547b565b9050919050565b6154a68161548c565b81146154b0575f80fd5b50565b5f813590506154c18161549d565b92915050565b5f6154d96154d484615431565b615268565b905080838252602082019050602084028301858111156154fc576154fb6152b5565b5b835b81811015615525578061551188826154b3565b8452602084019350506020810190506154fe565b5050509392505050565b5f82601f83011261554357615542615286565b5b81356155538482602086016154c7565b91505092915050565b5f60608284031215615571576155706151f6565b5b61557b6060615268565b90505f82013567ffffffffffffffff81111561559a57615599615282565b5b6155a684828501615321565b5f83015250602082013567ffffffffffffffff8111156155c9576155c8615282565b5b6155d584828501615404565b602083015250604082013567ffffffffffffffff8111156155f9576155f8615282565b5b6156058482850161552f565b60408301525092915050565b5f61561b8261545c565b9050919050565b61562b81615611565b8114615635575f80fd5b50565b5f8135905061564681615622565b92915050565b5f805f805f60a08688031215615665576156646151bb565b5b5f615672888289016151e2565b9550506020615683888289016151e2565b945050604086013567ffffffffffffffff8111156156a4576156a36151bf565b5b6156b08882890161555c565b93505060606156c188828901615638565b92505060806156d2888289016151e2565b9150509295509295909350565b6156e8816151c3565b82525050565b5f6020820190506157015f8301846156df565b92915050565b6157108161547b565b811461571a575f80fd5b50565b5f8135905061572b81615707565b92915050565b5f805f8060808587031215615749576157486151bb565b5b5f615756878288016151e2565b945050602085013567ffffffffffffffff811115615777576157766151bf565b5b6157838782880161555c565b93505060406157948782880161571d565b92505060606157a5878288016151e2565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6157e3816151c3565b82525050565b5f6157f483836157da565b60208301905092915050565b5f602082019050919050565b5f615816826157b1565b61582081856157bb565b935061582b836157cb565b805f5b8381101561585b57815161584288826157e9565b975061584d83615800565b92505060018101905061582e565b5085935050505092915050565b5f6020820190508181035f830152615880818461580c565b905092915050565b5f805f805f60a086880312156158a1576158a06151bb565b5b5f6158ae888289016151e2565b95505060206158bf888289016151e2565b945050604086013567ffffffffffffffff8111156158e0576158df6151bf565b5b6158ec8882890161555c565b93505060606158fd8882890161571d565b925050608061590e888289016151e2565b9150509295509295909350565b5f805f60608486031215615932576159316151bb565b5b5f61593f868287016154b3565b93505060206159508682870161571d565b9250506040615961868287016151e2565b9150509250925092565b5f62ffffff82169050919050565b6159828161596b565b811461598c575f80fd5b50565b5f8135905061599d81615979565b92915050565b5f61ffff82169050919050565b6159b9816159a3565b81146159c3575f80fd5b50565b5f813590506159d4816159b0565b92915050565b5f805f80608085870312156159f2576159f16151bb565b5b5f6159ff878288016154b3565b9450506020615a10878288016154b3565b9350506040615a218782880161598f565b9250506060615a32878288016159c6565b91505092959194509250565b5f819050919050565b5f615a61615a5c615a578461545c565b615a3e565b61545c565b9050919050565b5f615a7282615a47565b9050919050565b5f615a8382615a68565b9050919050565b615a9381615a79565b82525050565b5f602082019050615aac5f830184615a8a565b92915050565b5f615abc82615a68565b9050919050565b615acc81615ab2565b82525050565b5f602082019050615ae55f830184615ac3565b92915050565b5f805f805f805f80610100898b031215615b0857615b076151bb565b5b5f615b158b828c016154b3565b9850506020615b268b828c016159c6565b9750506040615b378b828c016151e2565b9650506060615b488b828c016151e2565b955050608089013567ffffffffffffffff811115615b6957615b686151bf565b5b615b758b828c01615321565b94505060a089013567ffffffffffffffff811115615b9657615b956151bf565b5b615ba28b828c01615321565b93505060c0615bb38b828c01615638565b92505060e0615bc48b828c016151e2565b9150509295985092959890939650565b5f604082019050615be75f8301856156df565b615bf460208301846156df565b9392505050565b5f615c0582615a68565b9050919050565b615c1581615bfb565b82525050565b5f602082019050615c2e5f830184615c0c565b92915050565b5f80fd5b5f6101e08284031215615c4e57615c4d615c34565b5b81905092915050565b5f60208284031215615c6c57615c6b6151bb565b5b5f82013567ffffffffffffffff811115615c8957615c886151bf565b5b615c9584828501615c38565b91505092915050565b5f60c082019050615cb15f8301896156df565b615cbe60208301886156df565b615ccb60408301876156df565b615cd860608301866156df565b8181036080830152615cea818561580c565b905081810360a0830152615cfe818461580c565b9050979650505050505050565b5f615d158261547b565b9050919050565b615d2581615d0b565b8114615d2f575f80fd5b50565b5f81359050615d4081615d1c565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b615d6a81615d46565b8114615d74575f80fd5b50565b5f81359050615d8581615d61565b92915050565b5f8115159050919050565b615d9f81615d8b565b8114615da9575f80fd5b50565b5f81359050615dba81615d96565b92915050565b5f805f60608486031215615dd757615dd66151bb565b5b5f615de486828701615d32565b9350506020615df586828701615d77565b9250506040615e0686828701615dac565b9150509250925092565b615e1981615d46565b82525050565b5f606082019050615e325f830186615e10565b615e3f6020830185615e10565b615e4c6040830184615e10565b949350505050565b5f615e5e82615a68565b9050919050565b615e6e81615e54565b82525050565b5f602082019050615e875f830184615e65565b92915050565b5f805f805f805f805f6101208a8c031215615eab57615eaa6151bb565b5b5f615eb88c828d016154b3565b9950506020615ec98c828d016154b3565b9850506040615eda8c828d016159c6565b9750506060615eeb8c828d016151e2565b9650506080615efc8c828d016151e2565b95505060a08a013567ffffffffffffffff811115615f1d57615f1c6151bf565b5b615f298c828d01615321565b94505060c08a013567ffffffffffffffff811115615f4a57615f496151bf565b5b615f568c828d01615321565b93505060e0615f678c828d0161571d565b925050610100615f798c828d016151e2565b9150509295985092959850929598565b5f8060408385031215615f9f57615f9e6151bb565b5b5f615fac85828601615d32565b9250506020615fbd8582860161598f565b9150509250929050565b5f615fd18261547b565b9050919050565b615fe181615fc7565b8114615feb575f80fd5b50565b5f81359050615ffc81615fd8565b92915050565b5f80fd5b5f8083601f84011261601b5761601a615286565b5b8235905067ffffffffffffffff81111561603857616037616002565b5b602083019150836020820283011115616054576160536152b5565b5b9250929050565b5f805f805f8060808789031215616075576160746151bb565b5b5f61608289828a01615fee565b965050602061609389828a0161571d565b955050604087013567ffffffffffffffff8111156160b4576160b36151bf565b5b6160c089828a01616006565b9450945050606087013567ffffffffffffffff8111156160e3576160e26151bf565b5b6160ef89828a01616006565b92509250509295509295509295565b5f8060408385031215616114576161136151bb565b5b5f61612185828601615d32565b9250506020616132858286016151e2565b9150509250929050565b6161458161596b565b82525050565b5f60208201905061615e5f83018461613c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61619b826151c3565b91506161a6836151c3565b92508282019050808211156161be576161bd616164565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6161fa8161547b565b82525050565b5f6020820190506162135f8301846161f1565b92915050565b5f81519050616227816151cc565b92915050565b5f60208284031215616242576162416151bb565b5b5f61624f84828501616219565b91505092915050565b5f616262826151c3565b915061626d836151c3565b925082820390508181111561628557616284616164565b5b92915050565b5f8151905061629981615707565b92915050565b5f602082840312156162b4576162b36151bb565b5b5f6162c18482850161628b565b91505092915050565b5f6162d482615a68565b9050919050565b6162e4816162ca565b82525050565b6162f3816159a3565b82525050565b5f60808201905061630c5f8301876162db565b61631960208301866162db565b616326604083018561613c565b61633360608301846162ea565b95945050505050565b5f8151905061634a81615d1c565b92915050565b5f60208284031215616365576163646151bb565b5b5f6163728482850161633c565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6163b16163ac6163a78461637b565b615a3e565b616384565b9050919050565b6163c181616397565b82525050565b5f6020820190506163da5f8301846163b8565b92915050565b5f815190506163ee8161549d565b92915050565b5f60208284031215616409576164086151bb565b5b5f616416848285016163e0565b91505092915050565b5f60208284031215616434576164336151bb565b5b5f616441848285016154b3565b91505092915050565b5f60a08201905061645d5f8301886161f1565b61646a60208301876161f1565b61647760408301866156df565b61648460608301856156df565b61649160808301846156df565b9695505050505050565b6164a481615d8b565b82525050565b5f6040820190506164bd5f830185615e10565b6164ca602083018461649b565b9392505050565b5f815190506164df81615d61565b92915050565b5f805f606084860312156164fc576164fb6151bb565b5b5f616509868287016164d1565b935050602061651a868287016164d1565b925050604061652b868287016164d1565b9150509250925092565b5f80fd5b82818337505050565b5f61654d83856157bb565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156165805761657f616535565b5b602083029250616591838584616539565b82840190509392505050565b5f6080820190506165b05f8301896161f1565b6165bd60208301886161f1565b81810360408301526165d0818688616542565b905081810360608301526165e5818486616542565b9050979650505050505050565b5f8151905061660081615979565b92915050565b5f6020828403121561661b5761661a6151bb565b5b5f616628848285016165f2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6dffffffffffffffffffffffffffff82169050919050565b6166808161665e565b811461668a575f80fd5b50565b5f8151905061669b81616677565b92915050565b5f63ffffffff82169050919050565b6166b9816166a1565b81146166c3575f80fd5b50565b5f815190506166d4816166b0565b92915050565b5f805f606084860312156166f1576166f06151bb565b5b5f6166fe8682870161668d565b935050602061670f8682870161668d565b9250506040616720868287016166c6565b9150509250925092565b5f819050919050565b5f61674d6167486167438461672a565b615a3e565b6151c3565b9050919050565b61675d81616733565b82525050565b5f82825260208201905092915050565b50565b5f6167815f83616763565b915061678c82616773565b5f82019050919050565b5f6080820190506167a95f830186616754565b6167b660208301856156df565b6167c360408301846161f1565b81810360608301526167d481616776565b9050949350505050565b5f6080820190506167f15f8301866156df565b6167fe6020830185616754565b61680b60408301846161f1565b818103606083015261681c81616776565b9050949350505050565b5f6040820190506168395f83018561649b565b61684660208301846161f1565b9392505050565b5f819050919050565b61685f8161684d565b8114616869575f80fd5b50565b5f8151905061687a81616856565b92915050565b5f60208284031215616895576168946151bb565b5b5f6168a28482850161686c565b91505092915050565b5f6168b5826151c3565b91505f82036168c7576168c6616164565b5b600182039050919050565b5f81905092915050565b5f6168e75f836168d2565b91506168f282616773565b5f82019050919050565b5f616906826168dc565b9150819050919050565b5f6040820190506169235f8301856161f1565b61693060208301846156df565b9392505050565b5f60608201905061694a5f8301866162db565b61695760208301856162db565b61696460408301846156df565b949350505050565b5f8151905061697a816159b0565b92915050565b5f8151905061698e81615d96565b92915050565b5f608082840312156169a9576169a86151f6565b5b6169b36080615268565b90505f6169c28482850161696c565b5f8301525060206169d58482850161633c565b60208301525060406169e984828501616980565b60408301525060606169fd84828501616980565b60608301525092915050565b5f60808284031215616a1e57616a1d6151bb565b5b5f616a2b84828501616994565b91505092915050565b5f606082019050616a475f8301866161f1565b616a5460208301856161f1565b616a6160408301846156df565b949350505050565b5f608082019050616a7c5f8301876161f1565b616a8960208301866161f1565b8181036040830152616a9b818561580c565b90508181036060830152616aaf818461580c565b905095945050505050565b5f67ffffffffffffffff821115616ad457616ad361520a565b5b602082029050602081019050919050565b5f616af7616af284616aba565b615268565b90508083825260208201905060208402830185811115616b1a57616b196152b5565b5b835b81811015616b435780616b2f888261686c565b845260208401935050602081019050616b1c565b5050509392505050565b5f82601f830112616b6157616b60615286565b5b8151616b71848260208601616ae5565b91505092915050565b5f60208284031215616b8f57616b8e6151bb565b5b5f82015167ffffffffffffffff811115616bac57616bab6151bf565b5b616bb884828501616b4d565b91505092915050565b5f616bcb826151c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203616bfd57616bfc616164565b5b600182019050919050565b5f608082019050616c1b5f8301876156df565b616c2860208301866156df565b616c3560408301856156df565b616c4260608301846156df565b95945050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112616c7357616c72616c4b565b5b80840192508235915067ffffffffffffffff821115616c9557616c94616c4f565b5b602083019250602082023603831315616cb157616cb0616c53565b5b509250929050565b5f8083356001602003843603038112616cd557616cd4616c4b565b5b80840192508235915067ffffffffffffffff821115616cf757616cf6616c4f565b5b602083019250602082023603831315616d1357616d12616c53565b5b509250929050565b5f606082019050616d2e5f8301866156df565b616d3b60208301856156df565b616d4860408301846156df565b949350505050565b5f819050919050565b616d6281616d50565b82525050565b5f602082019050616d7b5f830184616d59565b92915050565b5f60208284031215616d9657616d956151bb565b5b5f616da38482850161571d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b616dde8161684d565b82525050565b5f616def8383616dd5565b60208301905092915050565b5f602082019050919050565b5f616e1182616dac565b616e1b8185616db6565b9350616e2683616dc6565b805f5b83811015616e56578151616e3d8882616de4565b9750616e4883616dfb565b925050600181019050616e29565b5085935050505092915050565b5f606082019050616e765f8301866161f1565b8181036020830152616e888185616e07565b9050616e9760408301846161f1565b949350505050565b5f616eb1616eac8461528a565b615268565b90508083825260208201905060208402830185811115616ed457616ed36152b5565b5b835b81811015616efd5780616ee98882616219565b845260208401935050602081019050616ed6565b5050509392505050565b5f82601f830112616f1b57616f1a615286565b5b8151616f2b848260208601616e9f565b91505092915050565b5f805f60608486031215616f4b57616f4a6151bb565b5b5f616f588682870161686c565b9350506020616f698682870161686c565b925050604084015167ffffffffffffffff811115616f8a57616f896151bf565b5b616f9686828701616f07565b9150509250925092565b5f604082019050616fb35f8301856161f1565b616fc060208301846161f1565b9392505050565b5f616fd1826151c3565b9150616fdc836151c3565b9250828202616fea816151c3565b9150828204841483151761700157617000616164565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61703f826151c3565b915061704a836151c3565b92508261705a57617059617008565b5b82820490509291505056fea26469706673582212200e309a78c4164f5b8b6e48c22021a99aca2bb60332bc12d21314fee29f34eefc64736f6c63430008140033", + "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x7503 CODESIZE SUB DUP1 PUSH3 0x7503 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x36 SWAP2 SWAP1 PUSH3 0x312 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH3 0xE2 PUSH3 0xEB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH3 0x3AA JUMP JUMPDEST PUSH0 PUSH3 0xFC PUSH3 0x1EF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x147 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 AND DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH3 0x1EC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD PUSH3 0x1E3 SWAP2 SWAP1 PUSH3 0x38F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x245 DUP3 PUSH3 0x21A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x258 DUP3 PUSH3 0x239 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x26A DUP2 PUSH3 0x24C JUMP JUMPDEST DUP2 EQ PUSH3 0x275 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x288 DUP2 PUSH3 0x25F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x29A DUP3 PUSH3 0x239 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x2AC DUP2 PUSH3 0x28E JUMP JUMPDEST DUP2 EQ PUSH3 0x2B7 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x2CA DUP2 PUSH3 0x2A1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x2DC DUP3 PUSH3 0x239 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x2EE DUP2 PUSH3 0x2D0 JUMP JUMPDEST DUP2 EQ PUSH3 0x2F9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x30C DUP2 PUSH3 0x2E3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x32C JUMPI PUSH3 0x32B PUSH3 0x216 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x33B DUP7 DUP3 DUP8 ADD PUSH3 0x278 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x34E DUP7 DUP3 DUP8 ADD PUSH3 0x2BA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x361 DUP7 DUP3 DUP8 ADD PUSH3 0x2FC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x389 DUP2 PUSH3 0x36B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x3A4 PUSH0 DUP4 ADD DUP5 PUSH3 0x37E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x709B PUSH3 0x468 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x155 ADD MSTORE DUP2 DUP2 PUSH2 0x798 ADD MSTORE DUP2 DUP2 PUSH2 0x886 ADD MSTORE DUP2 DUP2 PUSH2 0x979 ADD MSTORE DUP2 DUP2 PUSH2 0xB38 ADD MSTORE DUP2 DUP2 PUSH2 0xFE9 ADD MSTORE DUP2 DUP2 PUSH2 0x17C8 ADD MSTORE DUP2 DUP2 PUSH2 0x19B4 ADD MSTORE DUP2 DUP2 PUSH2 0x1A65 ADD MSTORE DUP2 DUP2 PUSH2 0x1C46 ADD MSTORE DUP2 DUP2 PUSH2 0x1CEB ADD MSTORE DUP2 DUP2 PUSH2 0x21AC ADD MSTORE DUP2 DUP2 PUSH2 0x262C ADD MSTORE DUP2 DUP2 PUSH2 0x2A46 ADD MSTORE DUP2 DUP2 PUSH2 0x3531 ADD MSTORE DUP2 DUP2 PUSH2 0x397A ADD MSTORE PUSH2 0x39FC ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x279F ADD MSTORE PUSH2 0x4C6A ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x14E0 ADD MSTORE DUP2 DUP2 PUSH2 0x171E ADD MSTORE DUP2 DUP2 PUSH2 0x1B02 ADD MSTORE DUP2 DUP2 PUSH2 0x2CDA ADD MSTORE PUSH2 0x4387 ADD MSTORE PUSH2 0x709B PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92FE8E70 GT PUSH2 0xB5 JUMPI DUP1 PUSH4 0xBB558A9F GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xBB558A9F EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xC22159B6 EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0xD0E380F2 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0xE038E6DC EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xE9361C08 EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xF96FE925 EQ PUSH2 0x69E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x92FE8E70 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x964F987C EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0x9AB6156B EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0xA0D376CF EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xA3C7271A EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xB066EA7C EQ PUSH2 0x573 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x659AC74B GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x81C2FDFB EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x8EFC2B2C EQ PUSH2 0x409 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1A24F9A9 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x2075AD22 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x2A443FAE EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x3DC8F8EC EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x4B801870 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x62C06767 EQ PUSH2 0x2FE JUMPI PUSH2 0x1DA JUMP JUMPDEST CALLDATASIZE PUSH2 0x1DA JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C8CB79300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0xDA7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0xF2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0x591B JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x59DA JUMP JUMPDEST PUSH2 0x171B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x359 SWAP2 SWAP1 PUSH2 0x5A99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x376 PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x383 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x17EC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x5AEB JUMP JUMPDEST PUSH2 0x1963 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D6 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x1AFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 SWAP1 PUSH2 0x5C1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x423 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41E SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x1B26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x464 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45F SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1E2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x471 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x205C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x20EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4EB SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x51A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x515 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x234F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x529 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x558 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x553 SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x23E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x56A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x58D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x256E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x59A SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B7 PUSH2 0x279C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C4 SWAP2 SWAP1 PUSH2 0x5E74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5EE SWAP2 SWAP1 PUSH2 0x5E8D JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x601 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x630 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62B SWAP2 SWAP1 PUSH2 0x5F89 JUMP JUMPDEST PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x65B SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x2988 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x69C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x697 SWAP2 SWAP1 PUSH2 0x605B JUMP JUMPDEST PUSH2 0x2CD8 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6BF SWAP2 SWAP1 PUSH2 0x60FE JUMP JUMPDEST PUSH2 0x2E41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D1 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x723 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71A SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x73F JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x75F JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x75C SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x796 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x7E8 JUMPI PUSH2 0x7E7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86A JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x826 JUMPI PUSH2 0x825 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x861 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x881 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8DD SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91C SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x962 DUP9 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x954 JUMPI PUSH2 0x953 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x976 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x303B JUMP JUMPDEST DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D0 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA0F SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP5 POP DUP5 DUP10 GT ISZERO PUSH2 0xA62 JUMPI DUP9 DUP6 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA59 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA6C DUP8 DUP7 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xAC3 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xADF JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xAFF JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xAFC SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB84 JUMPI PUSH2 0xB83 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC02 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xBBE JUMPI PUSH2 0xBBD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF9 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC19 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xC2F DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC45 JUMPI PUSH2 0xC44 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xCAC JUMPI CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC67 JUMPI PUSH2 0xC66 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA3 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCEA DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCC2 JUMPI PUSH2 0xCC1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCDD JUMPI PUSH2 0xCDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3970 JUMP JUMPDEST PUSH0 PUSH2 0xD00 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 LT ISZERO PUSH2 0xD49 JUMPI DUP9 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD40 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD5C JUMPI PUSH2 0xD5B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0xD9B JUMPI PUSH2 0xD9A CALLER DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD82 JUMPI PUSH2 0xD81 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0xD95 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xDF0 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xE0C JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xE2C JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xE29 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xE7A DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xEC0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xE96 JUMPI PUSH2 0xE95 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xEB2 JUMPI PUSH2 0xEB1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0xED5 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0xF1E JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF15 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xF74 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF6B SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xF90 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xFB0 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xFAD SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xFE7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1039 JUMPI PUSH2 0x1038 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10BB JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1077 JUMPI PUSH2 0x1076 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B2 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x10D2 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E8 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x10FE JUMPI PUSH2 0x10FD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1165 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1120 JUMPI PUSH2 0x111F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x115C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11C3 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x117F JUMPI PUSH2 0x117E PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x119B JUMPI PUSH2 0x119A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x11B6 JUMPI PUSH2 0x11B5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x11D9 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 ADDRESS PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x1222 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1219 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x122C DUP8 DUP3 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1282 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1279 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x129E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x12BE JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x12BB SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x12F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x130C DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1327 JUMPI PUSH2 0x1326 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x136B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1386 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13AA SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x13F0 DUP10 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13C6 JUMPI PUSH2 0x13C5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13E2 JUMPI PUSH2 0x13E1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1404 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1459 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x147D SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x14D0 JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14C7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15CF JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1642 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x162F JUMPI DUP1 PUSH2 0x1631 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x163D DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST PUSH2 0x1716 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x166F JUMPI DUP1 PUSH2 0x16E8 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16E7 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x1715 DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x659AC74B DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x177B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x62F9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1797 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17BB SWAP2 SWAP1 PUSH2 0x6350 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x17F5 PUSH2 0x435D JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x183D JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1870 JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x18B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH2 0x1902 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST DUP4 ISZERO PUSH2 0x195C JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x1953 SWAP2 SWAP1 PUSH2 0x63C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x19AD JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19A4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x19DD DUP13 PUSH32 0x0 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A29 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A4D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP1 PUSH2 0x1AAD JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH0 DUP1 PUSH2 0x1ABD DUP5 DUP15 DUP15 DUP15 DUP15 ADDRESS PUSH2 0x44A2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1ACD JUMPI DUP1 DUP3 PUSH2 0x1AD0 JUMP JUMPDEST DUP2 DUP2 JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP POP POP POP POP POP PUSH2 0x1AE6 DUP13 DUP8 DUP7 PUSH2 0x462B JUMP JUMPDEST PUSH2 0x1AF0 DUP7 DUP5 PUSH2 0x3527 JUMP JUMPDEST POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x1B60 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B43 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B56 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BAB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCF SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1BF7 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C8D SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1CB3 JUMPI POP CALLVALUE DUP9 PUSH1 0x60 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1CE9 JUMPI PUSH2 0x1CDA DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CCE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1CE4 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFF JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1D59 JUMPI POP CALLVALUE DUP9 PUSH1 0x80 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1D8E JUMPI PUSH2 0x1D7F DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D73 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1D89 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFE JUMP JUMPDEST DUP8 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DA0 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DB3 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x60 ADD CALLDATALOAD DUP11 PUSH1 0x80 ADD CALLDATALOAD CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xD0A4F13B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x644A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x1E09 DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1E75 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E6C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x1E91 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x1EB1 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1EAE SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1EE8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1EFF DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F15 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F2B JUMPI PUSH2 0x1F2A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F92 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F4D JUMPI PUSH2 0x1F4C PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F89 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1FF0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FAC JUMPI PUSH2 0x1FAB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FC8 JUMPI PUSH2 0x1FC7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FE3 JUMPI PUSH2 0x1FE2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x2006 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x204F JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2046 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xABCD7830 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x209A SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20D9 SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2137 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x212E SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x2153 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2173 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2170 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x21AA JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x21FC JUMPI PUSH2 0x21FB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x227E JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x223A JUMPI PUSH2 0x2239 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2275 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2295 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x22DB DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22B1 JUMPI PUSH2 0x22B0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22CD JUMPI PUSH2 0x22CC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x22F0 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2339 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2343 DUP7 DUP6 PUSH2 0x3527 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE77366F8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x238D SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23A8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23CC SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x241B DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x23FE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2411 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2466 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x248A SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x24B2 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24FF JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2520 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2514 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x2542 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2536 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x254C DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x25B7 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25AE SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x25D3 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x25F3 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x25F0 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2678 JUMPI PUSH2 0x2677 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x26F6 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x26B2 JUMPI PUSH2 0x26B1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26ED SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x270D DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2733 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2725 JUMPI PUSH2 0x2724 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2748 CALLVALUE DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2791 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2788 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x280D JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2804 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x281D DUP14 DUP14 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2869 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x288D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x28CF JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH2 0x28DD DUP3 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x44A2 JUMP JUMPDEST DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP DUP1 ISZERO PUSH2 0x28F6 JUMPI DUP4 DUP6 DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP JUMPDEST POP POP POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7CFFBD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2941 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x295C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2980 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x29D1 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C8 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x29ED JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2A0D JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2A0A SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x2A44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A92 JUMPI PUSH2 0x2A91 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B10 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2ACC JUMPI PUSH2 0x2ACB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B07 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2B27 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2B42 JUMPI PUSH2 0x2B41 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B86 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC5 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x2BEB DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2BDD JUMPI PUSH2 0x2BDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2BFF DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C39 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C54 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C78 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x2C82 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x2CCB JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CC2 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D41 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D65 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2DC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17FAD7FC ADDRESS DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E0C SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x659D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E23 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E35 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5E29329 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7B SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBA SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EDF JUMPI PUSH2 0x2EDE PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F0D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 DUP1 DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2F25 JUMPI PUSH2 0x2F24 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2FF5 JUMPI DUP2 SWAP3 POP DUP5 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2F53 JUMPI PUSH2 0x2F52 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH2 0x2F9D DUP4 DUP4 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F75 JUMPI PUSH2 0x2F74 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2F90 JUMPI PUSH2 0x2F8F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4C3C JUMP JUMPDEST DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2FB0 JUMPI PUSH2 0x2FAF PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2F31 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3035 JUMPI PUSH2 0x3034 DUP4 DUP4 DUP4 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D93 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3053 JUMPI PUSH2 0x3052 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x351B JUMPI DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x307B JUMPI PUSH2 0x307A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3098 JUMPI PUSH2 0x3097 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP8 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30BB JUMPI PUSH2 0x30BA PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP10 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x30F3 JUMPI DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30E6 JUMPI PUSH2 0x30E5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x30F5 JUMP JUMPDEST DUP7 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x310A JUMPI PUSH2 0x3109 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x311D JUMPI PUSH2 0x311C PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x33F9 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x316D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3191 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x32F0 JUMPI PUSH0 DUP3 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3225 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3240 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3264 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x327D DUP5 DUP5 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP4 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32D3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32E5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x33F2 JUMP JUMPDEST PUSH0 DUP2 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x332B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3346 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x336A SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3383 DUP4 DUP6 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP3 PUSH0 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33D9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP PUSH2 0x3510 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x345E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3482 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34CE SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x350E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x305F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x35C0 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3588 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x359F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x35BF DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35E1 JUMPI PUSH2 0x35E0 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x360F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 DUP6 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3627 JUMPI PUSH2 0x3626 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH0 DUP5 MLOAD SWAP1 POP JUMPDEST PUSH0 DUP2 EQ PUSH2 0x3967 JUMPI PUSH0 DUP5 PUSH1 0x1 DUP4 PUSH2 0x364F SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3660 JUMPI PUSH2 0x365F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP5 PUSH2 0x3679 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x368A JUMPI PUSH2 0x3689 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP6 PUSH2 0x36A3 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x36B4 JUMPI PUSH2 0x36B3 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36D1 JUMPI PUSH2 0x36D0 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36E4 JUMPI PUSH2 0x36E3 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x384E JUMPI PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3734 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3758 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x37D6 JUMPI DUP1 DUP3 DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP JUMPDEST PUSH0 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x37EA JUMPI PUSH2 0x37E9 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3809 DUP4 DUP4 DUP4 PUSH2 0x4EF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x1 DUP10 PUSH2 0x3829 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x383A JUMPI PUSH2 0x3839 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP POP PUSH2 0x3951 JUMP JUMPDEST PUSH2 0x390D DUP2 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3865 JUMPI PUSH2 0x3864 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38CD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38F1 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x205C JUMP JUMPDEST DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP SWAP1 POP POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3933 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3944 JUMPI PUSH2 0x3943 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x395F SWAP1 PUSH2 0x68AB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3639 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3A41 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39DE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39F0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3A40 DUP3 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP9 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3A5E JUMPI PUSH2 0x3A5D PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x3DCC JUMPI DUP12 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A86 JUMPI PUSH2 0x3A85 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3AA3 JUMPI PUSH2 0x3AA2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP2 SWAP6 POP DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AC6 JUMPI PUSH2 0x3AC5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP12 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3AFE JUMPI DUP12 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AF1 JUMPI PUSH2 0x3AF0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3B00 JUMP JUMPDEST DUP8 JUMPDEST SWAP5 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B15 JUMPI PUSH2 0x3B14 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B28 JUMPI PUSH2 0x3B27 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3C60 JUMPI DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3B43 JUMPI PUSH2 0x3B42 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3BF0 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BBE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BD5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BE7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3C5B JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP9 PUSH0 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C2D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C44 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C56 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x3DC1 JUMP JUMPDEST PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CAA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CCE SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x3D83 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D3E SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D5A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D7E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x3DB9 JUMPI DUP1 SWAP10 POP PUSH2 0x3DBD JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3A6A JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3E91 JUMPI PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E08 SWAP1 PUSH2 0x68FC JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E42 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E47 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E8F JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x47B96F7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E86 SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3EAE JUMPI PUSH2 0x3EAD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP11 SWAP6 POP PUSH0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x42C3 JUMPI DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3ED9 JUMPI PUSH2 0x3ED8 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3EF6 JUMPI PUSH2 0x3EF5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F19 JUMPI PUSH2 0x3F18 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP11 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3F51 JUMPI DUP11 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F44 JUMPI PUSH2 0x3F43 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3F53 JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F68 JUMPI PUSH2 0x3F67 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F7B JUMPI PUSH2 0x3F7A PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4157 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FCB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3FEF SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x40CE JUMPI PUSH2 0x405D DUP3 DUP3 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP12 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x409C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40C5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4150 JUMP JUMPDEST PUSH2 0x40E3 DUP2 DUP4 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP11 PUSH0 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4122 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4139 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x414B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH2 0x42B8 JUMP JUMPDEST PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41A1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41C5 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x427A DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4235 SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4251 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4275 SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x42B0 JUMPI DUP1 SWAP10 POP PUSH2 0x42B4 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3EBD JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x42EE SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4357 DUP5 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6937 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43FD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4421 SWAP2 SWAP1 PUSH2 0x6A09 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x449B JUMPI DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4492 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC9939F5E CALLER DUP7 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44E4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A69 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44FF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4527 SWAP2 SWAP1 PUSH2 0x6B7A JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x45C9 JUMPI PUSH2 0x4557 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x454A JUMPI PUSH2 0x4549 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x4574 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP4 POP PUSH2 0x4599 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x458C JUMPI PUSH2 0x458B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x45B6 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP DUP1 PUSH2 0x45C2 SWAP1 PUSH2 0x6BC1 JUMP JUMPDEST SWAP1 POP PUSH2 0x452B JUMP JUMPDEST POP DUP8 DUP4 LT DUP1 PUSH2 0x45D7 JUMPI POP DUP7 DUP3 LT JUMPDEST ISZERO PUSH2 0x461F JUMPI DUP8 DUP4 DUP9 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4616 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x465F JUMPI PUSH2 0x465E DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 DUP8 PUSH2 0x1C0 ADD CALLDATALOAD DUP1 TIMESTAMP GT ISZERO PUSH2 0x46B8 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46AF SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x46C9 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x46DC SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO DUP1 PUSH2 0x470F JUMPI POP DUP9 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x46F7 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x470A SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO JUMPDEST ISZERO PUSH2 0x4746 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH1 0xE0 ADD CALLDATALOAD GT DUP1 PUSH2 0x4766 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH2 0x100 ADD CALLDATALOAD GT JUMPDEST ISZERO PUSH2 0x47B3 JUMPI DUP9 PUSH1 0xE0 ADD CALLDATALOAD DUP10 PUSH2 0x100 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH32 0x32F4AB8E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x47AA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x47C5 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47E0 JUMPI PUSH2 0x47DF PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x480E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4822 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x483D JUMPI PUSH2 0x483C PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x486B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP4 POP PUSH0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBE65EDC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48B8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48DC SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 POP DUP1 DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP13 PUSH1 0xE0 ADD CALLDATALOAD ADD LT DUP1 PUSH2 0x4906 JUMPI POP DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 ADD LT JUMPDEST ISZERO PUSH2 0x4955 JUMPI DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x40 MLOAD PUSH32 0xFAA1DB5600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x494C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6D1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x4A88 JUMPI PUSH0 DUP13 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4972 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x4983 JUMPI PUSH2 0x4982 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 ADD SWAP1 POP PUSH0 DUP2 SLT DUP1 PUSH2 0x49A0 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP2 GT JUMPDEST ISZERO PUSH2 0x49E2 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xE1505CC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x49D9 SWAP2 SWAP1 PUSH2 0x6D68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x49F6 JUMPI PUSH2 0x49F5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x4A5D DUP14 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x4A16 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x4A27 JUMPI PUSH2 0x4A26 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP15 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x4A3F SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x4A50 JUMPI PUSH2 0x4A4F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0x509F JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A70 JUMPI PUSH2 0x4A6F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4957 JUMP JUMPDEST POP POP PUSH0 DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x383D15C5 DUP14 PUSH2 0x180 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4ABC SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST DUP6 DUP16 PUSH2 0x1A0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4AD1 SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AEF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E63 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B0A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B32 SWAP2 SWAP1 PUSH2 0x6F34 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP4 POP DUP3 SWAP5 POP POP POP POP PUSH0 PUSH2 0x4B52 DUP3 DUP5 PUSH2 0x5120 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4B5D DUP2 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP11 POP PUSH2 0x4B7A DUP2 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP10 POP DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 LT DUP1 PUSH2 0x4BA3 JUMPI POP DUP13 PUSH1 0xC0 ADD CALLDATALOAD DUP11 LT JUMPDEST ISZERO PUSH2 0x4BF3 JUMPI DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP13 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BEA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BFC DUP3 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP9 POP PUSH2 0x4C19 DUP3 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C50 JUMPI PUSH2 0x4C4F PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C63 JUMPI PUSH2 0x4C62 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4D7D JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4CC3 SWAP3 SWAP2 SWAP1 PUSH2 0x6FA0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CDE JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D02 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4D78 JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D6F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D8B JUMP JUMPDEST PUSH2 0x4D88 DUP6 DUP6 DUP6 PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DB1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4E1A DUP6 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4E5B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4E68 JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4E9F JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E5 DUP6 PUSH2 0x4EAE SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP4 DUP3 PUSH2 0x4EBD SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH2 0x3E8 DUP8 PUSH2 0x4ECF SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4ED9 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH2 0x4EE7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4F2D JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4F3A JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4F71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E8 DUP6 DUP6 PUSH2 0x4F81 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4F8B SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x3E5 DUP7 DUP6 PUSH2 0x4F9D SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x4FA7 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP4 PUSH2 0x4FB7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST PUSH2 0x4FC1 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 POP DUP3 PUSH1 0x80 SHR SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH0 DUP8 GAS CALL SWAP1 POP DUP1 PUSH0 DUP2 EQ PUSH2 0x502C JUMPI RETURNDATASIZE PUSH0 DUP2 EQ PUSH2 0x501F JUMPI PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND SWAP3 POP PUSH2 0x5026 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO ISZERO SWAP3 POP JUMPDEST POP PUSH2 0x503B JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x503A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST JUMPDEST POP DUP1 PUSH2 0x5073 JUMPI PUSH1 0x40 MLOAD PUSH32 0x32E2717A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x80 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x50CA DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x58 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x50F6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x18 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x5117 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH0 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP4 SUB SWAP1 POP DUP3 DUP2 GT DUP1 PUSH2 0x515B JUMPI POP DUP3 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x5192 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE599AF5500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x51D5 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP2 EQ PUSH2 0x51DF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x51F0 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x5240 DUP3 PUSH2 0x51FA JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x525F JUMPI PUSH2 0x525E PUSH2 0x520A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5271 PUSH2 0x51B2 JUMP JUMPDEST SWAP1 POP PUSH2 0x527D DUP3 DUP3 PUSH2 0x5237 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH2 0x52A3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x52CB PUSH2 0x52C6 DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x52EE JUMPI PUSH2 0x52ED PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5317 JUMPI DUP1 PUSH2 0x5303 DUP9 DUP3 PUSH2 0x51E2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x52F0 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5335 JUMPI PUSH2 0x5334 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5345 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x52B9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5368 JUMPI PUSH2 0x5367 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x5385 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5396 DUP2 PUSH2 0x5379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x53AE PUSH2 0x53A9 DUP5 PUSH2 0x534E JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x53D1 JUMPI PUSH2 0x53D0 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x53FA JUMPI DUP1 PUSH2 0x53E6 DUP9 DUP3 PUSH2 0x5388 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x53D3 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5418 JUMPI PUSH2 0x5417 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5428 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x539C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x544B JUMPI PUSH2 0x544A PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5485 DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5496 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x54A6 DUP2 PUSH2 0x548C JUMP JUMPDEST DUP2 EQ PUSH2 0x54B0 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x54C1 DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x54D9 PUSH2 0x54D4 DUP5 PUSH2 0x5431 JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x54FC JUMPI PUSH2 0x54FB PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5525 JUMPI DUP1 PUSH2 0x5511 DUP9 DUP3 PUSH2 0x54B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x54FE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5543 JUMPI PUSH2 0x5542 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5553 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x54C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5571 JUMPI PUSH2 0x5570 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x557B PUSH1 0x60 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x559A JUMPI PUSH2 0x5599 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55A6 DUP5 DUP3 DUP6 ADD PUSH2 0x5321 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55C9 JUMPI PUSH2 0x55C8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55D5 DUP5 DUP3 DUP6 ADD PUSH2 0x5404 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55F9 JUMPI PUSH2 0x55F8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x5605 DUP5 DUP3 DUP6 ADD PUSH2 0x552F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x561B DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x562B DUP2 PUSH2 0x5611 JUMP JUMPDEST DUP2 EQ PUSH2 0x5635 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5646 DUP2 PUSH2 0x5622 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5665 JUMPI PUSH2 0x5664 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5672 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5683 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x56A4 JUMPI PUSH2 0x56A3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x56B0 DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x56C1 DUP9 DUP3 DUP10 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x56D2 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x56E8 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5701 PUSH0 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5710 DUP2 PUSH2 0x547B JUMP JUMPDEST DUP2 EQ PUSH2 0x571A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x572B DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5749 JUMPI PUSH2 0x5748 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5756 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5777 JUMPI PUSH2 0x5776 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5783 DUP8 DUP3 DUP9 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5794 DUP8 DUP3 DUP9 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x57A5 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x57E3 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x57F4 DUP4 DUP4 PUSH2 0x57DA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5816 DUP3 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x5820 DUP2 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH2 0x582B DUP4 PUSH2 0x57CB JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x585B JUMPI DUP2 MLOAD PUSH2 0x5842 DUP9 DUP3 PUSH2 0x57E9 JUMP JUMPDEST SWAP8 POP PUSH2 0x584D DUP4 PUSH2 0x5800 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x582E JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x5880 DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x58A1 JUMPI PUSH2 0x58A0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x58AE DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x58BF DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x58E0 JUMPI PUSH2 0x58DF PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x58EC DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x58FD DUP9 DUP3 DUP10 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x590E DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5932 JUMPI PUSH2 0x5931 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x593F DUP7 DUP3 DUP8 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5950 DUP7 DUP3 DUP8 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5961 DUP7 DUP3 DUP8 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5982 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP2 EQ PUSH2 0x598C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x599D DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x59B9 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP2 EQ PUSH2 0x59C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59D4 DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x59F2 JUMPI PUSH2 0x59F1 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x59FF DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x5A10 DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5A21 DUP8 DUP3 DUP9 ADD PUSH2 0x598F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x5A32 DUP8 DUP3 DUP9 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A61 PUSH2 0x5A5C PUSH2 0x5A57 DUP5 PUSH2 0x545C JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A72 DUP3 PUSH2 0x5A47 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A83 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5A93 DUP2 PUSH2 0x5A79 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AAC PUSH0 DUP4 ADD DUP5 PUSH2 0x5A8A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5ABC DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5ACC DUP2 PUSH2 0x5AB2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AE5 PUSH0 DUP4 ADD DUP5 PUSH2 0x5AC3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x5B08 JUMPI PUSH2 0x5B07 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5B15 DUP12 DUP3 DUP13 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x5B26 DUP12 DUP3 DUP13 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x5B37 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x5B48 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B69 JUMPI PUSH2 0x5B68 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5B75 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B96 JUMPI PUSH2 0x5B95 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5BA2 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x5BB3 DUP12 DUP3 DUP13 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 PUSH2 0x5BC4 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5BE7 PUSH0 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5BF4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C05 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5C15 DUP2 PUSH2 0x5BFB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5C2E PUSH0 DUP4 ADD DUP5 PUSH2 0x5C0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C4E JUMPI PUSH2 0x5C4D PUSH2 0x5C34 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C6C JUMPI PUSH2 0x5C6B PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C89 JUMPI PUSH2 0x5C88 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5C95 DUP5 DUP3 DUP6 ADD PUSH2 0x5C38 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x5CB1 PUSH0 DUP4 ADD DUP10 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CBE PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CCB PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CD8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x5CEA DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x5CFE DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D15 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D25 DUP2 PUSH2 0x5D0B JUMP JUMPDEST DUP2 EQ PUSH2 0x5D2F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D40 DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D6A DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D74 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D85 DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D9F DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP2 EQ PUSH2 0x5DA9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5DBA DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5DD7 JUMPI PUSH2 0x5DD6 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5DE4 DUP7 DUP3 DUP8 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5DF5 DUP7 DUP3 DUP8 ADD PUSH2 0x5D77 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5E06 DUP7 DUP3 DUP8 ADD PUSH2 0x5DAC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x5E19 DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5E32 PUSH0 DUP4 ADD DUP7 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E3F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E4C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5E10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5E5E DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5E6E DUP2 PUSH2 0x5E54 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5E87 PUSH0 DUP4 ADD DUP5 PUSH2 0x5E65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x5EAB JUMPI PUSH2 0x5EAA PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5EB8 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x5EC9 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x5EDA DUP13 DUP3 DUP14 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x5EEB DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x5EFC DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F1D JUMPI PUSH2 0x5F1C PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F29 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4A JUMPI PUSH2 0x5F49 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F56 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x5F67 DUP13 DUP3 DUP14 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x5F79 DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F9F JUMPI PUSH2 0x5F9E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5FAC DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FBD DUP6 DUP3 DUP7 ADD PUSH2 0x598F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5FD1 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5FE1 DUP2 PUSH2 0x5FC7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5FEB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5FFC DUP2 PUSH2 0x5FD8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x601B JUMPI PUSH2 0x601A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6038 JUMPI PUSH2 0x6037 PUSH2 0x6002 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x6054 JUMPI PUSH2 0x6053 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x6075 JUMPI PUSH2 0x6074 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6082 DUP10 DUP3 DUP11 ADD PUSH2 0x5FEE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x6093 DUP10 DUP3 DUP11 ADD PUSH2 0x571D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60B4 JUMPI PUSH2 0x60B3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60C0 DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60E3 JUMPI PUSH2 0x60E2 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60EF DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6114 JUMPI PUSH2 0x6113 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6121 DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6132 DUP6 DUP3 DUP7 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x6145 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x615E PUSH0 DUP4 ADD DUP5 PUSH2 0x613C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x619B DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x61A6 DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x61BE JUMPI PUSH2 0x61BD PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x61FA DUP2 PUSH2 0x547B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6213 PUSH0 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6227 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6242 JUMPI PUSH2 0x6241 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x624F DUP5 DUP3 DUP6 ADD PUSH2 0x6219 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6262 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x626D DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x6285 JUMPI PUSH2 0x6284 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6299 DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x62B4 JUMPI PUSH2 0x62B3 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x62C1 DUP5 DUP3 DUP6 ADD PUSH2 0x628B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x62D4 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x62E4 DUP2 PUSH2 0x62CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x62F3 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x630C PUSH0 DUP4 ADD DUP8 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6319 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6326 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x613C JUMP JUMPDEST PUSH2 0x6333 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x62EA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x634A DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6365 JUMPI PUSH2 0x6364 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6372 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x63B1 PUSH2 0x63AC PUSH2 0x63A7 DUP5 PUSH2 0x637B JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x6384 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x63C1 DUP2 PUSH2 0x6397 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x63DA PUSH0 DUP4 ADD DUP5 PUSH2 0x63B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x63EE DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6409 JUMPI PUSH2 0x6408 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6416 DUP5 DUP3 DUP6 ADD PUSH2 0x63E0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6434 JUMPI PUSH2 0x6433 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6441 DUP5 DUP3 DUP6 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x645D PUSH0 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x646A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6477 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6484 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6491 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x64A4 DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x64BD PUSH0 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x64CA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x649B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x64DF DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x64FC JUMPI PUSH2 0x64FB PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6509 DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x651A DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x652B DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x654D DUP4 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6580 JUMPI PUSH2 0x657F PUSH2 0x6535 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6591 DUP4 DUP6 DUP5 PUSH2 0x6539 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x65B0 PUSH0 DUP4 ADD DUP10 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x65BD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x65D0 DUP2 DUP7 DUP9 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x65E5 DUP2 DUP5 DUP7 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6600 DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x661B JUMPI PUSH2 0x661A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6628 DUP5 DUP3 DUP6 ADD PUSH2 0x65F2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6680 DUP2 PUSH2 0x665E JUMP JUMPDEST DUP2 EQ PUSH2 0x668A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x669B DUP2 PUSH2 0x6677 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x66B9 DUP2 PUSH2 0x66A1 JUMP JUMPDEST DUP2 EQ PUSH2 0x66C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x66D4 DUP2 PUSH2 0x66B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x66F1 JUMPI PUSH2 0x66F0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x66FE DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x670F DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6720 DUP7 DUP3 DUP8 ADD PUSH2 0x66C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x674D PUSH2 0x6748 PUSH2 0x6743 DUP5 PUSH2 0x672A JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x51C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x675D DUP2 PUSH2 0x6733 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x6781 PUSH0 DUP4 PUSH2 0x6763 JUMP JUMPDEST SWAP2 POP PUSH2 0x678C DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67A9 PUSH0 DUP4 ADD DUP7 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x67B6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67C3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x67D4 DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67F1 PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67FE PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x680B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x681C DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6839 PUSH0 DUP4 ADD DUP6 PUSH2 0x649B JUMP JUMPDEST PUSH2 0x6846 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x685F DUP2 PUSH2 0x684D JUMP JUMPDEST DUP2 EQ PUSH2 0x6869 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x687A DUP2 PUSH2 0x6856 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6895 JUMPI PUSH2 0x6894 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x68A2 DUP5 DUP3 DUP6 ADD PUSH2 0x686C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68B5 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x68C7 JUMPI PUSH2 0x68C6 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68E7 PUSH0 DUP4 PUSH2 0x68D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x68F2 DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6906 DUP3 PUSH2 0x68DC JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6923 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6930 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x694A PUSH0 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6957 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6964 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x697A DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x698E DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x69A9 JUMPI PUSH2 0x69A8 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x69B3 PUSH1 0x80 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x69C2 DUP5 DUP3 DUP6 ADD PUSH2 0x696C JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x69D5 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x69E9 DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x69FD DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A1E JUMPI PUSH2 0x6A1D PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6A2B DUP5 DUP3 DUP6 ADD PUSH2 0x6994 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6A47 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A54 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A61 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6A7C PUSH0 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A89 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x6A9B DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6AAF DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6AD4 JUMPI PUSH2 0x6AD3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6AF7 PUSH2 0x6AF2 DUP5 PUSH2 0x6ABA JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6B1A JUMPI PUSH2 0x6B19 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6B43 JUMPI DUP1 PUSH2 0x6B2F DUP9 DUP3 PUSH2 0x686C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6B1C JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6B61 JUMPI PUSH2 0x6B60 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6B71 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6B8F JUMPI PUSH2 0x6B8E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6BAC JUMPI PUSH2 0x6BAB PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6BB8 DUP5 DUP3 DUP6 ADD PUSH2 0x6B4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6BCB DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x6BFD JUMPI PUSH2 0x6BFC PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6C1B PUSH0 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C28 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C35 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C42 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6C73 JUMPI PUSH2 0x6C72 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6C95 JUMPI PUSH2 0x6C94 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6CB1 JUMPI PUSH2 0x6CB0 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6CD5 JUMPI PUSH2 0x6CD4 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6CF7 JUMPI PUSH2 0x6CF6 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6D13 JUMPI PUSH2 0x6D12 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6D2E PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D3B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D48 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D62 DUP2 PUSH2 0x6D50 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6D7B PUSH0 DUP4 ADD DUP5 PUSH2 0x6D59 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D96 JUMPI PUSH2 0x6D95 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6DA3 DUP5 DUP3 DUP6 ADD PUSH2 0x571D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6DDE DUP2 PUSH2 0x684D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6DEF DUP4 DUP4 PUSH2 0x6DD5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6E11 DUP3 PUSH2 0x6DAC JUMP JUMPDEST PUSH2 0x6E1B DUP2 DUP6 PUSH2 0x6DB6 JUMP JUMPDEST SWAP4 POP PUSH2 0x6E26 DUP4 PUSH2 0x6DC6 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6E56 JUMPI DUP2 MLOAD PUSH2 0x6E3D DUP9 DUP3 PUSH2 0x6DE4 JUMP JUMPDEST SWAP8 POP PUSH2 0x6E48 DUP4 PUSH2 0x6DFB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x6E29 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6E76 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x6E88 DUP2 DUP6 PUSH2 0x6E07 JUMP JUMPDEST SWAP1 POP PUSH2 0x6E97 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6EB1 PUSH2 0x6EAC DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6ED4 JUMPI PUSH2 0x6ED3 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6EFD JUMPI DUP1 PUSH2 0x6EE9 DUP9 DUP3 PUSH2 0x6219 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6ED6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6F1B JUMPI PUSH2 0x6F1A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6F2B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6E9F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F4B JUMPI PUSH2 0x6F4A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6F58 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F69 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F8A JUMPI PUSH2 0x6F89 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6F96 DUP7 DUP3 DUP8 ADD PUSH2 0x6F07 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6FB3 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6FC0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6FD1 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x6FDC DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x6FEA DUP2 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x7001 JUMPI PUSH2 0x7000 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x703F DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x704A DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x705A JUMPI PUSH2 0x7059 PUSH2 0x7008 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE ADDRESS SWAP11 PUSH25 0xC4164F5B8B6E48C22021A99ACA2BB60332BC12D21314FEE29F CALLVALUE 0xEE 0xFC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1523:41876:5:-:0;;;2851:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2984:8;2972:20;;;;;;;;;;3015:9;3002:22;;;;;;;;;;3045:7;3034:18;;;;;;;;;;3063:22;:20;;;:22;;:::i;:::-;2851:241;;;1523:41876;;7711:422:1;7826:30;7859:26;:24;;;:26;;:::i;:::-;7826:59;;7900:1;:15;;;;;;;;;;;;7896:76;;;7938:23;;;;;;;;;;;;;;7896:76;8003:16;7985:34;;:1;:14;;;;;;;;;;;;:34;;;7981:146;;8052:16;8035:1;:14;;;:33;;;;;;;;;;;;;;;;;;8087:29;8099:16;8087:29;;;;;;:::i;:::-;;;;;;;;7981:146;7760:373;7711:422::o;8737:170::-;8795:30;8870:21;8860:31;;8737:170;:::o;88:117:34:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:115::-;624:7;653:24;671:5;653:24;:::i;:::-;642:35;;568:115;;;:::o;689:160::-;781:43;818:5;781:43;:::i;:::-;774:5;771:54;761:82;;839:1;836;829:12;761:82;689:160;:::o;855:181::-;931:5;962:6;956:13;947:22;;978:52;1024:5;978:52;:::i;:::-;855:181;;;;:::o;1042:123::-;1106:7;1135:24;1153:5;1135:24;:::i;:::-;1124:35;;1042:123;;;:::o;1171:176::-;1271:51;1316:5;1271:51;:::i;:::-;1264:5;1261:62;1251:90;;1337:1;1334;1327:12;1251:90;1171:176;:::o;1353:197::-;1437:5;1468:6;1462:13;1453:22;;1484:60;1538:5;1484:60;:::i;:::-;1353:197;;;;:::o;1556:113::-;1610:7;1639:24;1657:5;1639:24;:::i;:::-;1628:35;;1556:113;;;:::o;1675:156::-;1765:41;1800:5;1765:41;:::i;:::-;1758:5;1755:52;1745:80;;1821:1;1818;1811:12;1745:80;1675:156;:::o;1837:177::-;1911:5;1942:6;1936:13;1927:22;;1958:50;2002:5;1958:50;:::i;:::-;1837:177;;;;:::o;2020:789::-;2171:6;2179;2187;2236:2;2224:9;2215:7;2211:23;2207:32;2204:119;;;2242:79;;:::i;:::-;2204:119;2362:1;2387:83;2462:7;2453:6;2442:9;2438:22;2387:83;:::i;:::-;2377:93;;2333:147;2519:2;2545:91;2628:7;2619:6;2608:9;2604:22;2545:91;:::i;:::-;2535:101;;2490:156;2685:2;2711:81;2784:7;2775:6;2764:9;2760:22;2711:81;:::i;:::-;2701:91;;2656:146;2020:789;;;;;:::o;2815:101::-;2851:7;2891:18;2884:5;2880:30;2869:41;;2815:101;;;:::o;2922:115::-;3007:23;3024:5;3007:23;:::i;:::-;3002:3;2995:36;2922:115;;:::o;3043:218::-;3134:4;3172:2;3161:9;3157:18;3149:26;;3185:69;3251:1;3240:9;3236:17;3227:6;3185:69;:::i;:::-;3043:218;;;;:::o;1523:41876:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_714": { + "entryPoint": null, + "id": 714, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_addLiquidity_2644": { + "entryPoint": 18020, + "id": 2644, + "parameterSlots": 2, + "returnSlots": 6 + }, + "@_callAndCatch_10561": { + "entryPoint": 20462, + "id": 10561, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_getAmountsIn_2799": { + "entryPoint": 13764, + "id": 2799, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@_getInitializableStorage_400": { + "entryPoint": 17245, + "id": 400, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getLBPairInformation_3477": { + "entryPoint": 17284, + "id": 3477, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_getPair_3546": { + "entryPoint": 19516, + "id": 3546, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@_getPairs_3625": { + "entryPoint": 11970, + "id": 3625, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_removeLiquidity_2881": { + "entryPoint": 17570, + "id": 2881, + "parameterSlots": 6, + "returnSlots": 2 + }, + "@_safeTransferFrom_3676": { + "entryPoint": 12287, + "id": 3676, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_safeTransferNative_3707": { + "entryPoint": 15835, + "id": 3707, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_safeTransfer_3649": { + "entryPoint": 17963, + "id": 3649, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_swapExactTokensForTokens_3074": { + "entryPoint": 16021, + "id": 3074, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@_swapSupportingFeeOnTransferTokens_3429": { + "entryPoint": 12347, + "id": 3429, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_swapTokensForExactTokens_3246": { + "entryPoint": 14917, + "id": 3246, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@_wNativeDepositAndTransfer_3736": { + "entryPoint": 14704, + "id": 3736, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_wNativeWithdrawAndTransfer_3761": { + "entryPoint": 13607, + "id": 3761, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addLiquidityNATIVE_1106": { + "entryPoint": 6950, + "id": 1106, + "parameterSlots": 1, + "returnSlots": 6 + }, + "@addLiquidity_958": { + "entryPoint": 9185, + "id": 958, + "parameterSlots": 1, + "returnSlots": 6 + }, + "@createLBPair_872": { + "entryPoint": 5915, + "id": 872, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@decodeX_11129": { + "entryPoint": 20600, + "id": 11129, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decodeY_11139": { + "entryPoint": 20627, + "id": 11139, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decode_11119": { + "entryPoint": 20428, + "id": 11119, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@encodeParams_10936": { + "entryPoint": 20639, + "id": 10936, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@getAmountIn_10475": { + "entryPoint": 20211, + "id": 10475, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@getAmountOut_10420": { + "entryPoint": 20001, + "id": 10420, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@getFactory_725": { + "entryPoint": 6911, + "id": 725, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getIdFromPrice_765": { + "entryPoint": 11841, + "id": 765, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getPriceFromId_783": { + "entryPoint": 10503, + "id": 783, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getSwapIn_813": { + "entryPoint": 8284, + "id": 813, + "parameterSlots": 3, + "returnSlots": 3 + }, + "@getSwapOut_843": { + "entryPoint": 9039, + "id": 843, + "parameterSlots": 3, + "returnSlots": 3 + }, + "@getV1Factory_736": { + "entryPoint": 10140, + "id": 736, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWNATIVE_747": { + "entryPoint": 6085, + "id": 747, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@initialize_698": { + "entryPoint": 6124, + "id": 698, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@removeLiquidityNATIVE_1301": { + "entryPoint": 6499, + "id": 1301, + "parameterSlots": 8, + "returnSlots": 2 + }, + "@removeLiquidity_1193": { + "entryPoint": 10179, + "id": 1193, + "parameterSlots": 9, + "returnSlots": 2 + }, + "@safeTransferFrom_10514": { + "entryPoint": 19859, + "id": 10514, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransfer_10542": { + "entryPoint": 17106, + "id": 10542, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@set_10705": { + "entryPoint": 20888, + "id": 10705, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@sub_11252": { + "entryPoint": 20768, + "id": 11252, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@swapExactNATIVEForTokensSupportingFeeOnTransferTokens_2255": { + "entryPoint": 10632, + "id": 2255, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@swapExactNATIVEForTokens_1565": { + "entryPoint": 9582, + "id": 1565, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@swapExactTokensForNATIVESupportingFeeOnTransferTokens_2148": { + "entryPoint": 1754, + "id": 2148, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapExactTokensForNATIVE_1479": { + "entryPoint": 8430, + "id": 1479, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapExactTokensForTokensSupportingFeeOnTransferTokens_2024": { + "entryPoint": 4665, + "id": 2024, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapExactTokensForTokens_1374": { + "entryPoint": 3495, + "id": 1374, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapNATIVEForExactTokens_1929": { + "entryPoint": 2681, + "id": 1929, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@swapTokensForExactNATIVE_1798": { + "entryPoint": 3882, + "id": 1798, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@swapTokensForExactTokens_1666": { + "entryPoint": 7723, + "id": 1666, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@sweepLBToken_2361": { + "entryPoint": 11480, + "id": 2361, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@sweep_2330": { + "entryPoint": 5342, + "id": 2330, + "parameterSlots": 3, + "returnSlots": 0 + }, + "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { + "entryPoint": 27365, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr": { + "entryPoint": 21703, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr": { + "entryPoint": 21404, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21177, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { + "entryPoint": 28319, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_t_address": { + "entryPoint": 22301, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 25227, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_address_payable": { + "entryPoint": 22072, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { + "entryPoint": 27469, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr": { + "entryPoint": 21807, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr": { + "entryPoint": 21508, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr": { + "entryPoint": 24582, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21281, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { + "entryPoint": 28423, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bool": { + "entryPoint": 23980, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bool_fromMemory": { + "entryPoint": 27008, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes32_fromMemory": { + "entryPoint": 26732, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_IERC20_$479": { + "entryPoint": 21683, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_IERC20_$479_fromMemory": { + "entryPoint": 25568, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBPair_$6187": { + "entryPoint": 23858, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBPair_$6187_fromMemory": { + "entryPoint": 25404, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBToken_$6842": { + "entryPoint": 24558, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_enum$_Version_$6322": { + "entryPoint": 21384, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory": { + "entryPoint": 27028, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr": { + "entryPoint": 23608, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_struct$_Path_$6372_memory_ptr": { + "entryPoint": 21852, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint112_fromMemory": { + "entryPoint": 26253, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint128": { + "entryPoint": 23927, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint128_fromMemory": { + "entryPoint": 25809, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint16": { + "entryPoint": 22982, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint16_fromMemory": { + "entryPoint": 26988, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint24": { + "entryPoint": 22927, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint24_fromMemory": { + "entryPoint": 26098, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 20962, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256_fromMemory": { + "entryPoint": 25113, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint32_fromMemory": { + "entryPoint": 26310, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 28033, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 25247, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": { + "entryPoint": 27514, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 26752, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_bytes32t_array$_t_uint256_$dyn_memory_ptr_fromMemory": { + "entryPoint": 28468, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC20_$479": { + "entryPoint": 25631, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$479_fromMemory": { + "entryPoint": 25588, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_addresst_uint256": { + "entryPoint": 22811, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256": { + "entryPoint": 24205, + "id": null, + "parameterSlots": 2, + "returnSlots": 9 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint24t_uint16": { + "entryPoint": 23002, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256": { + "entryPoint": 23275, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187_fromMemory": { + "entryPoint": 25424, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint128t_bool": { + "entryPoint": 24000, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint24": { + "entryPoint": 24457, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint256": { + "entryPoint": 24830, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_contract$_ILBToken_$6842t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr": { + "entryPoint": 24667, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory": { + "entryPoint": 27145, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_struct$_LiquidityParameters_$6359_calldata_ptr": { + "entryPoint": 23639, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory": { + "entryPoint": 26330, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory": { + "entryPoint": 25829, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint24_fromMemory": { + "entryPoint": 26118, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 25133, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256": { + "entryPoint": 22321, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_address_payablet_uint256": { + "entryPoint": 22092, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256": { + "entryPoint": 22664, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32": { + "entryPoint": 28132, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encodeUpdatedPos_t_uint256_to_t_uint256": { + "entryPoint": 22505, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 25073, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": { + "entryPoint": 28167, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 25922, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 22540, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_bool_to_t_bool_fromStack": { + "entryPoint": 25755, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bytes32_to_t_bytes32": { + "entryPoint": 28117, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack": { + "entryPoint": 25307, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack": { + "entryPoint": 23564, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack": { + "entryPoint": 23178, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack": { + "entryPoint": 24165, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack": { + "entryPoint": 23235, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_int256_to_t_int256_fromStack": { + "entryPoint": 27993, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": { + "entryPoint": 26452, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack": { + "entryPoint": 25528, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack": { + "entryPoint": 26486, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 26844, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_uint128_to_t_uint128_fromStack": { + "entryPoint": 24080, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint16_to_t_uint16_fromStack": { + "entryPoint": 25322, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint24_to_t_uint24_fromStack": { + "entryPoint": 24892, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256": { + "entryPoint": 22490, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 22239, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 26876, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 25088, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 28576, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 26013, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 27241, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 27188, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 25674, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__to_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__fromStack_reversed": { + "entryPoint": 28259, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 26896, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 22632, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed": { + "entryPoint": 26662, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed": { + "entryPoint": 25337, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 26935, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ILBFactory_$4236__to_t_address__fromStack_reversed": { + "entryPoint": 23579, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ILBPair_$6187__to_t_address__fromStack_reversed": { + "entryPoint": 23193, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ISovrynLBFactoryV1_$6916__to_t_address__fromStack_reversed": { + "entryPoint": 24180, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IWNATIVE_$7175__to_t_address__fromStack_reversed": { + "entryPoint": 23250, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed": { + "entryPoint": 28008, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 26518, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": 25543, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed": { + "entryPoint": 25770, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed": { + "entryPoint": 24095, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed": { + "entryPoint": 24907, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 22254, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 26590, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 23508, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 27931, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 27656, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 23710, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "access_calldata_tail_t_array$_t_int256_$dyn_calldata_ptr": { + "entryPoint": 27833, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr": { + "entryPoint": 27735, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "allocate_memory": { + "entryPoint": 21096, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": 20914, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 27322, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr": { + "entryPoint": 21553, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr": { + "entryPoint": 21326, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 21130, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 28102, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 22475, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 28076, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 22449, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr": { + "entryPoint": 28155, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 22528, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack": { + "entryPoint": 28086, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 22459, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": { + "entryPoint": 26467, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 26834, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 24977, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 28725, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 28615, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 25176, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 21627, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_address_payable": { + "entryPoint": 22033, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 23947, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bytes32": { + "entryPoint": 26701, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_IERC20_$479": { + "entryPoint": 21644, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_ILBPair_$6187": { + "entryPoint": 23819, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_ILBToken_$6842": { + "entryPoint": 24519, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_int256": { + "entryPoint": 27984, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_rational_0_by_1": { + "entryPoint": 26410, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_rational_1_by_1": { + "entryPoint": 25467, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint112": { + "entryPoint": 26206, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint128": { + "entryPoint": 23878, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint16": { + "entryPoint": 22947, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 21596, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint24": { + "entryPoint": 22891, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 20931, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint32": { + "entryPoint": 26273, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint64": { + "entryPoint": 25476, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_IERC20_$479_to_t_address": { + "entryPoint": 25290, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ILBFactory_$4236_to_t_address": { + "entryPoint": 23547, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ILBPair_$6187_to_t_address": { + "entryPoint": 23161, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address": { + "entryPoint": 24148, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_IWNATIVE_$7175_to_t_address": { + "entryPoint": 23218, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_rational_0_by_1_to_t_uint256": { + "entryPoint": 26419, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_rational_1_by_1_to_t_uint64": { + "entryPoint": 25495, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_address": { + "entryPoint": 23144, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_uint160": { + "entryPoint": 23111, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_calldata_to_memory": { + "entryPoint": 25913, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "decrement_t_uint256": { + "entryPoint": 26795, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 21047, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "identity": { + "entryPoint": 23102, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 27585, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 24932, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": 28680, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x21": { + "entryPoint": 26161, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 25028, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 21002, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { + "entryPoint": 24578, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { + "entryPoint": 21126, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a": { + "entryPoint": 27727, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d": { + "entryPoint": 23604, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f": { + "entryPoint": 20982, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad": { + "entryPoint": 27723, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421": { + "entryPoint": 21122, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { + "entryPoint": 21173, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e": { + "entryPoint": 27731, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": 20927, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec": { + "entryPoint": 25909, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 20923, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 20986, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470": { + "entryPoint": 26483, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 22279, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_address_payable": { + "entryPoint": 22050, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bool": { + "entryPoint": 23958, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bytes32": { + "entryPoint": 26710, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_IERC20_$479": { + "entryPoint": 21661, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_ILBPair_$6187": { + "entryPoint": 23836, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_ILBToken_$6842": { + "entryPoint": 24536, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_enum$_Version_$6322": { + "entryPoint": 21369, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint112": { + "entryPoint": 26231, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint128": { + "entryPoint": 23905, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint16": { + "entryPoint": 22960, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint24": { + "entryPoint": 22905, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 20940, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint32": { + "entryPoint": 26288, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:63587:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:34", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:34" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:34" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:34", + "type": "" + } + ], + "src": "7:75:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:34" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:34" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:32:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:16:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "400:5:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:34", + "type": "" + } + ], + "src": "334:77:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "460:79:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "517:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "526:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "529:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "519:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "519:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "519:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "483:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "508:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "490:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "490:24:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "480:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "480:35:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "473:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "473:43:34" + }, + "nodeType": "YulIf", + "src": "470:63:34" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "453:5:34", + "type": "" + } + ], + "src": "417:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "597:87:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "607:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "629:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "616:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "616:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "607:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "672:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "645:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "645:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "645:33:34" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "575:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "583:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "591:5:34", + "type": "" + } + ], + "src": "545:139:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "779:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "796:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "799:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "789:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "789:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "789:12:34" + } + ] + }, + "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", + "nodeType": "YulFunctionDefinition", + "src": "690:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "861:54:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "871:38:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "889:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "896:2:34", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "885:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "885:14:34" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "905:2:34", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "901:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "901:7:34" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "881:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "881:28:34" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "871:6:34" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "844:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "854:6:34", + "type": "" + } + ], + "src": "813:102:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "949:152:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "966:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "969:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "959:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "959:88:34" + }, + "nodeType": "YulExpressionStatement", + "src": "959:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1063:1:34", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1066:4:34", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1056:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1056:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1056:15:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1087:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1090:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1080:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1080:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1080:15:34" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "921:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1150:238:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1160:58:34", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1182:6:34" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1212:4:34" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1190:21:34" + }, + "nodeType": "YulFunctionCall", + "src": "1190:27:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1178:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "1178:40:34" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1164:10:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1329:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1331:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "1331:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1331:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1272:10:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1284:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1269:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "1269:34:34" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1308:10:34" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1320:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1305:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "1305:22:34" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1266:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "1266:62:34" + }, + "nodeType": "YulIf", + "src": "1263:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1367:2:34", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1371:10:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1360:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1360:22:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1360:22:34" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1136:6:34", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1144:4:34", + "type": "" + } + ], + "src": "1107:281:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1435:88:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1445:30:34", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1455:18:34" + }, + "nodeType": "YulFunctionCall", + "src": "1455:20:34" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1445:6:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1504:6:34" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1512:4:34" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1484:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "1484:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1484:33:34" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1419:4:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1428:6:34", + "type": "" + } + ], + "src": "1394:129:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1618:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1635:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1638:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1628:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1628:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1628:12:34" + } + ] + }, + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulFunctionDefinition", + "src": "1529:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1741:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1758:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1761:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1751:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "1751:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1751:12:34" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "1652:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1857:229:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1962:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1964:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "1964:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "1964:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1934:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1942:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1931:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "1931:30:34" + }, + "nodeType": "YulIf", + "src": "1928:56:34" + }, + { + "nodeType": "YulAssignment", + "src": "1994:25:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2006:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2014:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2002:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2002:17:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1994:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2056:23:34", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2068:4:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2074:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2064:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2064:15:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2056:4:34" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1841:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1852:4:34", + "type": "" + } + ], + "src": "1775:311:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2181:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2198:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2201:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2191:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "2191:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "2191:12:34" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "2092:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2334:608:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2344:90:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2426:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2369:56:34" + }, + "nodeType": "YulFunctionCall", + "src": "2369:64:34" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2353:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "2353:81:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2344:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2443:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2454:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2447:3:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2476:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2483:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2469:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "2469:21:34" + }, + "nodeType": "YulExpressionStatement", + "src": "2469:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "2499:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2510:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2517:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2506:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2506:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2499:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2532:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2550:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2562:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2570:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2558:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2558:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2546:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2546:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "2536:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2604:103:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "2618:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "2618:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "2618:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2591:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2599:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2588:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "2588:15:34" + }, + "nodeType": "YulIf", + "src": "2585:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2792:144:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2807:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2825:3:34" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "2811:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2849:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "2875:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2887:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "2854:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "2854:37:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2842:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "2842:50:34" + }, + "nodeType": "YulExpressionStatement", + "src": "2842:50:34" + }, + { + "nodeType": "YulAssignment", + "src": "2905:21:34", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2916:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2921:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2912:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2912:14:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2905:3:34" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2745:3:34" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2750:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2742:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "2742:15:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2758:25:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2760:21:34", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2771:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2776:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2767:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "2767:14:34" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2760:3:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2720:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2722:17:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2733:6:34" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2726:3:34", + "type": "" + } + ] + } + ] + }, + "src": "2716:220:34" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2304:6:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2312:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2320:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2328:5:34", + "type": "" + } + ], + "src": "2232:710:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3042:293:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3091:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3093:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "3093:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3093:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3070:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3078:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3066:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3066:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3085:3:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3062:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3062:27:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3055:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "3055:35:34" + }, + "nodeType": "YulIf", + "src": "3052:122:34" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3183:34:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3210:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3197:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "3197:20:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3187:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3226:103:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3302:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3310:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3298:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3298:17:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3317:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3325:3:34" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "3235:62:34" + }, + "nodeType": "YulFunctionCall", + "src": "3235:94:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3226:5:34" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3020:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3028:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3036:5:34", + "type": "" + } + ], + "src": "2965:370:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3435:229:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3540:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3542:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "3542:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3542:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3512:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3520:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3509:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "3509:30:34" + }, + "nodeType": "YulIf", + "src": "3506:56:34" + }, + { + "nodeType": "YulAssignment", + "src": "3572:25:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3584:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3592:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3580:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3580:17:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3572:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3634:23:34", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3646:4:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3652:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3642:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "3642:15:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3634:4:34" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3419:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3430:4:34", + "type": "" + } + ], + "src": "3341:323:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3725:56:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3759:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3768:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3771:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3761:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "3761:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3761:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3748:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3755:1:34", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3745:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "3745:12:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3738:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "3738:20:34" + }, + "nodeType": "YulIf", + "src": "3735:40:34" + } + ] + }, + "name": "validator_revert_t_enum$_Version_$6322", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3718:5:34", + "type": "" + } + ], + "src": "3670:111:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3851:99:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3861:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3883:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3870:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "3870:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3861:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3938:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_enum$_Version_$6322", + "nodeType": "YulIdentifier", + "src": "3899:38:34" + }, + "nodeType": "YulFunctionCall", + "src": "3899:45:34" + }, + "nodeType": "YulExpressionStatement", + "src": "3899:45:34" + } + ] + }, + "name": "abi_decode_t_enum$_Version_$6322", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3829:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3837:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3845:5:34", + "type": "" + } + ], + "src": "3787:163:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4102:632:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4112:102:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4206:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "4137:68:34" + }, + "nodeType": "YulFunctionCall", + "src": "4137:76:34" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "4121:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "4121:93:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4112:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4223:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4234:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "4227:3:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4256:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4263:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4249:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "4249:21:34" + }, + "nodeType": "YulExpressionStatement", + "src": "4249:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "4279:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4290:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4297:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4286:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4286:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4279:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4312:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4330:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4342:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4350:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4338:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4338:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4326:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4326:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "4316:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4384:103:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "4398:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "4398:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "4398:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4371:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4379:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4368:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "4368:15:34" + }, + "nodeType": "YulIf", + "src": "4365:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4572:156:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4587:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4605:3:34" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "4591:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4629:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "4667:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4679:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_enum$_Version_$6322", + "nodeType": "YulIdentifier", + "src": "4634:32:34" + }, + "nodeType": "YulFunctionCall", + "src": "4634:49:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4622:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "4622:62:34" + }, + "nodeType": "YulExpressionStatement", + "src": "4622:62:34" + }, + { + "nodeType": "YulAssignment", + "src": "4697:21:34", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4708:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4713:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4704:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4704:14:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4697:3:34" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4525:3:34" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4530:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4522:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "4522:15:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "4538:25:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4540:21:34", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4551:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4556:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4547:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4547:14:34" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4540:3:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "4500:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4502:17:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4513:6:34" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "4506:3:34", + "type": "" + } + ] + } + ] + }, + "src": "4496:232:34" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4072:6:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4080:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4088:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4096:5:34", + "type": "" + } + ], + "src": "3988:746:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4861:305:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4910:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "4912:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "4912:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "4912:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4889:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4897:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4885:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4885:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4904:3:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4881:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "4881:27:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4874:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "4874:35:34" + }, + "nodeType": "YulIf", + "src": "4871:122:34" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5002:34:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5029:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5016:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "5016:20:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5006:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5045:115:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5133:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5141:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5129:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "5129:17:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5148:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5156:3:34" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "5054:74:34" + }, + "nodeType": "YulFunctionCall", + "src": "5054:106:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "5045:5:34" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4839:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4847:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4855:5:34", + "type": "" + } + ], + "src": "4772:394:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5268:229:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5373:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "5375:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "5375:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "5375:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5345:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5353:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5342:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "5342:30:34" + }, + "nodeType": "YulIf", + "src": "5339:56:34" + }, + { + "nodeType": "YulAssignment", + "src": "5405:25:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5417:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5425:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5413:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "5413:17:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5405:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5467:23:34", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5479:4:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5485:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5475:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "5475:15:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5467:4:34" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5252:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "5263:4:34", + "type": "" + } + ], + "src": "5172:325:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5548:81:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5558:65:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5573:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5580:42:34", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5569:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "5569:54:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5558:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5530:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5540:7:34", + "type": "" + } + ], + "src": "5503:126:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5680:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5690:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5719:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "5701:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "5701:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5690:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5662:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5672:7:34", + "type": "" + } + ], + "src": "5635:96:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5796:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5806:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5835:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "5817:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "5817:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5806:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_IERC20_$479", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5778:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5788:7:34", + "type": "" + } + ], + "src": "5737:110:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5910:93:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5981:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5990:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5993:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5983:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "5983:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "5983:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5933:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5972:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "5940:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "5940:38:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5930:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "5930:49:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5923:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "5923:57:34" + }, + "nodeType": "YulIf", + "src": "5920:77:34" + } + ] + }, + "name": "validator_revert_t_contract$_IERC20_$479", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5903:5:34", + "type": "" + } + ], + "src": "5853:150:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6075:101:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6085:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6107:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6094:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "6094:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6085:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6164:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "6123:40:34" + }, + "nodeType": "YulFunctionCall", + "src": "6123:47:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6123:47:34" + } + ] + }, + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6053:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6061:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6069:5:34", + "type": "" + } + ], + "src": "6009:167:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6323:636:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6333:104:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6429:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "6358:70:34" + }, + "nodeType": "YulFunctionCall", + "src": "6358:78:34" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6342:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "6342:95:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6333:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6446:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6457:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6450:3:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6479:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6486:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6472:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "6472:21:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6472:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "6502:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6513:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6520:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6509:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6509:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6502:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6535:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6553:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6565:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6573:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6561:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6561:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6549:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6549:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "6539:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6607:103:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "6621:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "6621:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6621:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "6594:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6602:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6591:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "6591:15:34" + }, + "nodeType": "YulIf", + "src": "6588:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6795:158:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6810:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6828:3:34" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "6814:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6852:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "6892:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6904:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "6857:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "6857:51:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6845:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "6845:64:34" + }, + "nodeType": "YulExpressionStatement", + "src": "6845:64:34" + }, + { + "nodeType": "YulAssignment", + "src": "6922:21:34", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6933:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6938:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6929:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6929:14:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6922:3:34" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6748:3:34" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "6753:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6745:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "6745:15:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "6761:25:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6763:21:34", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6774:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6779:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6770:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "6770:14:34" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6763:3:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "6723:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6725:17:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6736:6:34" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "6729:3:34", + "type": "" + } + ] + } + ] + }, + "src": "6719:234:34" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6293:6:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6301:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6309:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6317:5:34", + "type": "" + } + ], + "src": "6207:752:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7081:307:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7130:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "7132:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "7132:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7132:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7109:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7117:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7105:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7105:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7124:3:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7101:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7101:27:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7094:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "7094:35:34" + }, + "nodeType": "YulIf", + "src": "7091:122:34" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7222:34:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7249:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7236:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "7236:20:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "7226:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7265:117:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7355:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7363:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7351:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7351:17:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7370:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7378:3:34" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "7274:76:34" + }, + "nodeType": "YulFunctionCall", + "src": "7274:108:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "7265:5:34" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7059:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7067:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "7075:5:34", + "type": "" + } + ], + "src": "6990:398:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7500:1253:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7544:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", + "nodeType": "YulIdentifier", + "src": "7546:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "7546:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7546:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7521:3:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7526:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7517:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7517:19:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7538:4:34", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7513:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7513:30:34" + }, + "nodeType": "YulIf", + "src": "7510:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "7636:30:34", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7661:4:34", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "7645:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "7645:21:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7636:5:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7676:343:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7719:45:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7750:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7761:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7746:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7746:17:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7733:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "7733:31:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7723:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7811:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulIdentifier", + "src": "7813:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "7813:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7813:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7783:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7791:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7780:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "7780:30:34" + }, + "nodeType": "YulIf", + "src": "7777:117:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7919:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7926:4:34", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7915:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7915:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7983:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7994:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7979:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "7979:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8003:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "7933:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "7933:74:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7908:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "7908:100:34" + }, + "nodeType": "YulExpressionStatement", + "src": "7908:100:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8029:352:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8068:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8099:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8110:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8095:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8095:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8082:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "8082:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8072:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8161:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulIdentifier", + "src": "8163:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "8163:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8163:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8133:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8141:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8130:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "8130:30:34" + }, + "nodeType": "YulIf", + "src": "8127:117:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8269:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8276:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8265:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8265:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8345:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8356:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8341:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8341:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8365:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "8283:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "8283:86:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8258:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "8258:112:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8258:112:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8391:355:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8431:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8462:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8473:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8458:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8458:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8445:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "8445:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8435:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8524:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", + "nodeType": "YulIdentifier", + "src": "8526:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "8526:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8526:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8496:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8504:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8493:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "8493:30:34" + }, + "nodeType": "YulIf", + "src": "8490:117:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8632:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8639:4:34", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8628:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8628:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8710:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8721:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8706:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "8706:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8730:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "8646:59:34" + }, + "nodeType": "YulFunctionCall", + "src": "8646:88:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8621:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "8621:114:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8621:114:34" + } + ] + } + ] + }, + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7475:9:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7486:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7494:5:34", + "type": "" + } + ], + "src": "7423:1330:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8812:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8822:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8851:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "8833:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "8833:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "8822:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8794:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "8804:7:34", + "type": "" + } + ], + "src": "8759:104:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8920:87:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8985:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8994:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8997:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8987:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "8987:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "8987:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8943:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8976:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address_payable", + "nodeType": "YulIdentifier", + "src": "8950:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "8950:32:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8940:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "8940:43:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8933:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "8933:51:34" + }, + "nodeType": "YulIf", + "src": "8930:71:34" + } + ] + }, + "name": "validator_revert_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8913:5:34", + "type": "" + } + ], + "src": "8869:138:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9073:95:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9083:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9105:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9092:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "9092:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9083:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9156:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_address_payable", + "nodeType": "YulIdentifier", + "src": "9121:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "9121:41:34" + }, + "nodeType": "YulExpressionStatement", + "src": "9121:41:34" + } + ] + }, + "name": "abi_decode_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9051:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9059:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9067:5:34", + "type": "" + } + ], + "src": "9013:155:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9338:967:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9385:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9387:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "9387:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "9387:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9359:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9368:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9355:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "9355:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9380:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9351:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "9351:33:34" + }, + "nodeType": "YulIf", + "src": "9348:120:34" + }, + { + "nodeType": "YulBlock", + "src": "9478:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9493:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9507:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9497:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9522:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9557:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9568:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9553:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "9553:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9577:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "9532:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "9532:53:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9522:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9605:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9620:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9634:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9624:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9650:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9685:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9696:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9681:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "9681:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9705:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "9660:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "9660:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9650:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9733:300:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9748:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9779:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9790:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9775:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "9775:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9762:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "9762:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9752:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9841:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "9843:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "9843:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "9843:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9813:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9821:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "9810:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "9810:30:34" + }, + "nodeType": "YulIf", + "src": "9807:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "9938:85:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9995:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10006:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9991:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "9991:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10015:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", + "nodeType": "YulIdentifier", + "src": "9948:42:34" + }, + "nodeType": "YulFunctionCall", + "src": "9948:75:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9938:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10043:126:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10058:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10072:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10062:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10088:71:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10131:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10142:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10127:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "10127:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10151:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address_payable", + "nodeType": "YulIdentifier", + "src": "10098:28:34" + }, + "nodeType": "YulFunctionCall", + "src": "10098:61:34" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "10088:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10179:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10194:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10208:3:34", + "type": "", + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10198:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10225:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10260:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10271:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10256:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "10256:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10280:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "10235:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "10235:53:34" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "10225:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_address_payablet_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9276:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9287:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9299:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9307:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9315:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9323:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "9331:6:34", + "type": "" + } + ], + "src": "9174:1131:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10376:53:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10393:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10416:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "10398:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "10398:24:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10386:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "10386:37:34" + }, + "nodeType": "YulExpressionStatement", + "src": "10386:37:34" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10364:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10371:3:34", + "type": "" + } + ], + "src": "10311:118:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10533:124:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10543:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10555:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10566:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10551:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "10551:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10543:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10623:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10636:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10647:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10632:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "10632:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "10579:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "10579:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "10579:71:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10505:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10517:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10528:4:34", + "type": "" + } + ], + "src": "10435:222:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10706:79:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10763:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10772:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10775:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10765:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "10765:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "10765:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10729:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10754:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "10736:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "10736:24:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10726:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "10726:35:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10719:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "10719:43:34" + }, + "nodeType": "YulIf", + "src": "10716:63:34" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10699:5:34", + "type": "" + } + ], + "src": "10663:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10843:87:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10853:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10875:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10862:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "10862:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10853:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10918:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "10891:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "10891:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "10891:33:34" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10821:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10829:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10837:5:34", + "type": "" + } + ], + "src": "10791:139:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11075:830:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11122:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "11124:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "11124:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "11124:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11096:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11105:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11092:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11092:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11117:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11088:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11088:33:34" + }, + "nodeType": "YulIf", + "src": "11085:120:34" + }, + { + "nodeType": "YulBlock", + "src": "11215:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11230:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11244:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11234:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11259:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11294:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11305:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11290:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11290:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11314:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "11269:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "11269:53:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11259:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11342:300:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11357:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11388:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11399:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11384:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11384:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11371:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "11371:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11361:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11450:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "11452:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "11452:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "11452:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11422:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11430:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11419:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "11419:30:34" + }, + "nodeType": "YulIf", + "src": "11416:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "11547:85:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11604:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11615:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11600:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11600:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11624:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", + "nodeType": "YulIdentifier", + "src": "11557:42:34" + }, + "nodeType": "YulFunctionCall", + "src": "11557:75:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11547:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11652:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11667:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11681:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11671:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11697:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11732:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11743:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11728:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11728:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11752:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "11707:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "11707:53:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11697:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11780:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11795:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11809:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11799:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11825:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11860:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11871:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11856:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "11856:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11880:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "11835:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "11835:53:34" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11825:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11021:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "11032:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11044:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11052:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "11060:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "11068:6:34", + "type": "" + } + ], + "src": "10936:969:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11985:40:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11996:22:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12012:5:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12006:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "12006:12:34" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11996:6:34" + } + ] + } + ] + }, + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11968:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11978:6:34", + "type": "" + } + ], + "src": "11911:114:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12142:73:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12159:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12164:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12152:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "12152:19:34" + }, + "nodeType": "YulExpressionStatement", + "src": "12152:19:34" + }, + { + "nodeType": "YulAssignment", + "src": "12180:29:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12199:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12204:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12195:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "12195:14:34" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "12180:11:34" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12114:3:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "12119:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "12130:11:34", + "type": "" + } + ], + "src": "12031:184:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12293:60:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12303:11:34", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "12311:3:34" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12303:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12324:22:34", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "12336:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12341:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12332:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "12332:14:34" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12324:4:34" + } + ] + } + ] + }, + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "12280:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "12288:4:34", + "type": "" + } + ], + "src": "12221:132:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12414:53:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12431:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12454:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "12436:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "12436:24:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12424:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "12424:37:34" + }, + "nodeType": "YulExpressionStatement", + "src": "12424:37:34" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12402:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12409:3:34", + "type": "" + } + ], + "src": "12359:108:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12553:99:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12597:6:34" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12605:3:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "12563:33:34" + }, + "nodeType": "YulFunctionCall", + "src": "12563:46:34" + }, + "nodeType": "YulExpressionStatement", + "src": "12563:46:34" + }, + { + "nodeType": "YulAssignment", + "src": "12618:28:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12636:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12641:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12632:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "12632:14:34" + }, + "variableNames": [ + { + "name": "updatedPos", + "nodeType": "YulIdentifier", + "src": "12618:10:34" + } + ] + } + ] + }, + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12526:6:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12534:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updatedPos", + "nodeType": "YulTypedName", + "src": "12542:10:34", + "type": "" + } + ], + "src": "12473:179:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12733:38:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12743:22:34", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "12755:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12760:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12751:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "12751:14:34" + }, + "variableNames": [ + { + "name": "next", + "nodeType": "YulIdentifier", + "src": "12743:4:34" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "12720:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nodeType": "YulTypedName", + "src": "12728:4:34", + "type": "" + } + ], + "src": "12658:113:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12931:608:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12941:68:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13003:5:34" + } + ], + "functionName": { + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "12955:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "12955:54:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "12945:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13018:93:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13099:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13104:6:34" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13025:73:34" + }, + "nodeType": "YulFunctionCall", + "src": "13025:86:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13018:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13120:71:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13185:5:34" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "13135:49:34" + }, + "nodeType": "YulFunctionCall", + "src": "13135:56:34" + }, + "variables": [ + { + "name": "baseRef", + "nodeType": "YulTypedName", + "src": "13124:7:34", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13200:21:34", + "value": { + "name": "baseRef", + "nodeType": "YulIdentifier", + "src": "13214:7:34" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "13204:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13290:224:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13304:34:34", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "13331:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13325:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "13325:13:34" + }, + "variables": [ + { + "name": "elementValue0", + "nodeType": "YulTypedName", + "src": "13308:13:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13351:70:34", + "value": { + "arguments": [ + { + "name": "elementValue0", + "nodeType": "YulIdentifier", + "src": "13402:13:34" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13417:3:34" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "13358:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "13358:63:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13351:3:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13434:70:34", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "13497:6:34" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "13444:52:34" + }, + "nodeType": "YulFunctionCall", + "src": "13444:60:34" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "13434:6:34" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "13252:1:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13255:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "13249:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "13249:13:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "13263:18:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13265:14:34", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "13274:1:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13277:1:34", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13270:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "13270:9:34" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "13265:1:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "13234:14:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13236:10:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13245:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "13240:1:34", + "type": "" + } + ] + } + ] + }, + "src": "13230:284:34" + }, + { + "nodeType": "YulAssignment", + "src": "13523:10:34", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13530:3:34" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13523:3:34" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12910:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12917:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "12926:3:34", + "type": "" + } + ], + "src": "12807:732:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13693:225:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13703:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13715:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13726:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13711:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "13711:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13703:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13750:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13761:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13746:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "13746:17:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13769:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13775:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13765:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "13765:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13739:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "13739:47:34" + }, + "nodeType": "YulExpressionStatement", + "src": "13739:47:34" + }, + { + "nodeType": "YulAssignment", + "src": "13795:116:34", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13897:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13906:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13803:93:34" + }, + "nodeType": "YulFunctionCall", + "src": "13803:108:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13795:4:34" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13665:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13677:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13688:4:34", + "type": "" + } + ], + "src": "13545:373:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14080:959:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14127:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "14129:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "14129:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "14129:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14101:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14110:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14097:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14097:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14122:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "14093:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14093:33:34" + }, + "nodeType": "YulIf", + "src": "14090:120:34" + }, + { + "nodeType": "YulBlock", + "src": "14220:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14235:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14249:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14239:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14264:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14299:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14310:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14295:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14295:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14319:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "14274:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "14274:53:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14264:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14347:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14362:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14376:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14366:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14392:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14427:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14438:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14423:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14423:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14447:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "14402:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "14402:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14392:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14475:300:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14490:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14521:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14532:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14517:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14517:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "14504:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "14504:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14494:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14583:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "14585:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "14585:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "14585:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14555:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14563:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14552:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "14552:30:34" + }, + "nodeType": "YulIf", + "src": "14549:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "14680:85:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14737:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14748:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14733:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14733:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14757:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_struct$_Path_$6372_memory_ptr", + "nodeType": "YulIdentifier", + "src": "14690:42:34" + }, + "nodeType": "YulFunctionCall", + "src": "14690:75:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14680:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14785:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14800:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14814:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14804:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14830:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14865:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14876:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14861:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14861:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14885:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "14840:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "14840:53:34" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "14830:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14913:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14928:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14942:3:34", + "type": "", + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14932:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14959:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14994:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15005:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14990:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "14990:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15014:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "14969:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "14969:53:34" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "14959:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14018:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "14029:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "14041:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "14049:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "14057:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "14065:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "14073:6:34", + "type": "" + } + ], + "src": "13924:1115:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15159:533:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15205:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "15207:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "15207:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "15207:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15180:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15189:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15176:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15176:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15201:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15172:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15172:32:34" + }, + "nodeType": "YulIf", + "src": "15169:119:34" + }, + { + "nodeType": "YulBlock", + "src": "15298:131:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15313:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15327:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15317:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15342:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15391:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15402:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15387:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15387:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15411:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "15352:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "15352:67:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "15342:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "15439:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15454:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15468:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15458:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15484:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15519:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15530:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15515:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15515:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15539:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "15494:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "15494:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15484:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "15567:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15582:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15596:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15586:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15612:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15647:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15658:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15643:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15643:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15667:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "15622:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "15622:53:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15612:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15113:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15124:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15136:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "15144:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "15152:6:34", + "type": "" + } + ], + "src": "15045:647:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15742:47:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15752:31:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15767:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15774:8:34", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15763:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "15763:20:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "15752:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15724:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "15734:7:34", + "type": "" + } + ], + "src": "15698:91:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15837:78:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15893:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15902:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15905:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15895:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "15895:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "15895:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15860:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15884:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint24", + "nodeType": "YulIdentifier", + "src": "15867:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "15867:23:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "15857:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "15857:34:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15850:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "15850:42:34" + }, + "nodeType": "YulIf", + "src": "15847:62:34" + } + ] + }, + "name": "validator_revert_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15830:5:34", + "type": "" + } + ], + "src": "15795:120:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15972:86:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15982:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16004:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15991:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "15991:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15982:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16046:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint24", + "nodeType": "YulIdentifier", + "src": "16020:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "16020:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16020:32:34" + } + ] + }, + "name": "abi_decode_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15950:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15958:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15966:5:34", + "type": "" + } + ], + "src": "15921:137:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16108:45:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16118:29:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16133:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16140:6:34", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16129:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "16129:18:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "16118:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16090:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "16100:7:34", + "type": "" + } + ], + "src": "16064:89:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16201:78:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16257:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16266:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16269:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16259:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "16259:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16259:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16224:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16248:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "16231:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "16231:23:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "16221:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "16221:34:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "16214:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "16214:42:34" + }, + "nodeType": "YulIf", + "src": "16211:62:34" + } + ] + }, + "name": "validator_revert_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16194:5:34", + "type": "" + } + ], + "src": "16159:120:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16336:86:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16346:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16368:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "16355:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "16355:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16346:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16410:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "16384:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "16384:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16384:32:34" + } + ] + }, + "name": "abi_decode_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16314:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "16322:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16330:5:34", + "type": "" + } + ], + "src": "16285:137:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16571:674:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16618:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "16620:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "16620:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "16620:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16592:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16601:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16588:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "16588:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16613:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "16584:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "16584:33:34" + }, + "nodeType": "YulIf", + "src": "16581:120:34" + }, + { + "nodeType": "YulBlock", + "src": "16711:131:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16726:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16740:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16730:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16755:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16804:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16815:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16800:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "16800:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16824:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "16765:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "16765:67:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16755:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16852:132:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16867:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16881:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16871:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16897:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16946:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16957:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16942:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "16942:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16966:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "16907:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "16907:67:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "16897:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16994:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17009:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17023:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17013:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17039:62:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17073:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17084:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17069:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "17069:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17093:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "17049:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "17049:52:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "17039:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "17121:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17136:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17150:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17140:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17166:62:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17200:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17211:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17196:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "17196:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17220:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "17176:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "17176:52:34" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "17166:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint24t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16517:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "16528:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16540:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16548:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "16556:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "16564:6:34", + "type": "" + } + ], + "src": "16428:817:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17283:28:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17293:12:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17300:5:34" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "17293:3:34" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17269:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "17279:3:34", + "type": "" + } + ], + "src": "17251:60:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17377:82:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17387:66:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17445:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "17427:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "17427:24:34" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "17418:8:34" + }, + "nodeType": "YulFunctionCall", + "src": "17418:34:34" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "17400:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "17400:53:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "17387:9:34" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17357:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "17367:9:34", + "type": "" + } + ], + "src": "17317:142:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17525:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17535:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17579:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulIdentifier", + "src": "17548:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "17548:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "17535:9:34" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17505:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "17515:9:34", + "type": "" + } + ], + "src": "17465:126:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17673:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17683:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17727:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "17696:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "17696:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "17683:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_ILBPair_$6187_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17653:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "17663:9:34", + "type": "" + } + ], + "src": "17597:142:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17826:82:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17843:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17895:5:34" + } + ], + "functionName": { + "name": "convert_t_contract$_ILBPair_$6187_to_t_address", + "nodeType": "YulIdentifier", + "src": "17848:46:34" + }, + "nodeType": "YulFunctionCall", + "src": "17848:53:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17836:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "17836:66:34" + }, + "nodeType": "YulExpressionStatement", + "src": "17836:66:34" + } + ] + }, + "name": "abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17814:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17821:3:34", + "type": "" + } + ], + "src": "17745:163:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18028:140:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18038:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18050:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18061:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18046:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "18046:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18038:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18134:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18147:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18158:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18143:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "18143:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "18074:59:34" + }, + "nodeType": "YulFunctionCall", + "src": "18074:87:34" + }, + "nodeType": "YulExpressionStatement", + "src": "18074:87:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_ILBPair_$6187__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18000:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18012:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18023:4:34", + "type": "" + } + ], + "src": "17914:254:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18251:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18261:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18305:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "18274:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "18274:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "18261:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_IWNATIVE_$7175_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18231:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "18241:9:34", + "type": "" + } + ], + "src": "18174:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18405:83:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18422:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18475:5:34" + } + ], + "functionName": { + "name": "convert_t_contract$_IWNATIVE_$7175_to_t_address", + "nodeType": "YulIdentifier", + "src": "18427:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "18427:54:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18415:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "18415:67:34" + }, + "nodeType": "YulExpressionStatement", + "src": "18415:67:34" + } + ] + }, + "name": "abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18393:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "18400:3:34", + "type": "" + } + ], + "src": "18323:165:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18609:141:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18619:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18631:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18642:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18627:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "18627:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18619:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18716:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18729:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18740:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18725:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "18725:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "18655:60:34" + }, + "nodeType": "YulFunctionCall", + "src": "18655:88:34" + }, + "nodeType": "YulExpressionStatement", + "src": "18655:88:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IWNATIVE_$7175__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18581:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18593:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18604:4:34", + "type": "" + } + ], + "src": "18494:256:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19012:1555:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "19059:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "19061:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "19061:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "19061:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19033:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19042:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "19029:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19029:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19054:3:34", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "19025:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19025:33:34" + }, + "nodeType": "YulIf", + "src": "19022:120:34" + }, + { + "nodeType": "YulBlock", + "src": "19152:131:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19167:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19181:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19171:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19196:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19245:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19256:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19241:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19241:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19265:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "19206:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "19206:67:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19196:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "19293:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19308:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19322:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19312:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19338:62:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19372:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19383:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19368:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19368:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19392:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "19348:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "19348:52:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "19338:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "19420:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19435:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19449:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19439:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19465:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19500:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19511:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19496:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19496:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19520:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "19475:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "19475:53:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "19465:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "19548:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19563:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19577:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19567:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19593:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19628:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19639:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19624:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19624:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19648:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "19603:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "19603:53:34" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "19593:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "19676:304:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19691:47:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19722:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19733:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19718:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19718:19:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "19705:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "19705:33:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "19695:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19785:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "19787:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "19787:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "19787:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19757:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19765:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "19754:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "19754:30:34" + }, + "nodeType": "YulIf", + "src": "19751:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "19882:88:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19942:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "19953:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19938:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "19938:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "19962:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "19892:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "19892:78:34" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "19882:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "19990:304:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20005:47:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20036:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20047:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20032:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20032:19:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "20019:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "20019:33:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20009:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20099:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "20101:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "20101:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "20101:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20071:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20079:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "20068:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "20068:30:34" + }, + "nodeType": "YulIf", + "src": "20065:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "20196:88:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20256:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20267:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20252:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20252:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "20276:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "20206:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "20206:78:34" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "20196:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20304:127:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20319:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20333:3:34", + "type": "", + "value": "192" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20323:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20350:71:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20393:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20404:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20389:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20389:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "20413:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address_payable", + "nodeType": "YulIdentifier", + "src": "20360:28:34" + }, + "nodeType": "YulFunctionCall", + "src": "20360:61:34" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "20350:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20441:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20456:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20470:3:34", + "type": "", + "value": "224" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20460:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20487:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20522:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20533:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20518:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20518:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "20542:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "20497:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "20497:53:34" + }, + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "20487:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18926:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "18937:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18949:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18957:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "18965:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "18973:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "18981:6:34", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "18989:6:34", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "18997:6:34", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "19005:6:34", + "type": "" + } + ], + "src": "18756:1811:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20699:206:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20709:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20721:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20732:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20717:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20717:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20709:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "20789:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20802:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20813:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20798:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20798:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "20745:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "20745:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "20745:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "20870:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20883:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20894:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20879:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "20879:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "20826:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "20826:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "20826:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20663:9:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "20675:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "20683:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20694:4:34", + "type": "" + } + ], + "src": "20573:332:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20990:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21000:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21044:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "21013:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "21013:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "21000:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_ILBFactory_$4236_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20970:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "20980:9:34", + "type": "" + } + ], + "src": "20911:145:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21146:85:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21163:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21218:5:34" + } + ], + "functionName": { + "name": "convert_t_contract$_ILBFactory_$4236_to_t_address", + "nodeType": "YulIdentifier", + "src": "21168:49:34" + }, + "nodeType": "YulFunctionCall", + "src": "21168:56:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21156:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "21156:69:34" + }, + "nodeType": "YulExpressionStatement", + "src": "21156:69:34" + } + ] + }, + "name": "abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "21134:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "21141:3:34", + "type": "" + } + ], + "src": "21062:169:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21354:143:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21364:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21376:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21387:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21372:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "21372:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21364:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "21463:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21476:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21487:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21472:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "21472:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "21400:62:34" + }, + "nodeType": "YulFunctionCall", + "src": "21400:90:34" + }, + "nodeType": "YulExpressionStatement", + "src": "21400:90:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_ILBFactory_$4236__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21326:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "21338:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21349:4:34", + "type": "" + } + ], + "src": "21237:260:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21592:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21609:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21612:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "21602:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "21602:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "21602:12:34" + } + ] + }, + "name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", + "nodeType": "YulFunctionDefinition", + "src": "21503:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21761:153:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "21801:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", + "nodeType": "YulIdentifier", + "src": "21803:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "21803:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "21803:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "21782:3:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "21787:6:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "21778:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "21778:16:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21796:3:34", + "type": "", + "value": "480" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "21774:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "21774:26:34" + }, + "nodeType": "YulIf", + "src": "21771:113:34" + }, + { + "nodeType": "YulAssignment", + "src": "21893:15:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "21902:6:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21893:5:34" + } + ] + } + ] + }, + "name": "abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "21739:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "21747:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "21755:5:34", + "type": "" + } + ], + "src": "21670:244:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22025:462:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "22071:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "22073:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "22073:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "22073:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "22046:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22055:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "22042:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "22042:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22067:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "22038:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "22038:32:34" + }, + "nodeType": "YulIf", + "src": "22035:119:34" + }, + { + "nodeType": "YulBlock", + "src": "22164:316:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22179:45:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22210:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22221:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22206:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "22206:17:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "22193:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "22193:31:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "22183:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22271:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "22273:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "22273:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "22273:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "22243:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22251:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "22240:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "22240:30:34" + }, + "nodeType": "YulIf", + "src": "22237:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "22368:102:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22442:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "22453:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22438:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "22438:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "22462:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "22378:59:34" + }, + "nodeType": "YulFunctionCall", + "src": "22378:92:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22368:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_LiquidityParameters_$6359_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21995:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "22006:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22018:6:34", + "type": "" + } + ], + "src": "21920:567:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22831:739:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22841:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22853:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22864:3:34", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22849:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "22849:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22841:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22922:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22935:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22946:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22931:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "22931:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "22878:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "22878:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "22878:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23003:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23016:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23027:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23012:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23012:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "22959:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "22959:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "22959:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23085:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23098:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23109:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23094:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23094:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "23041:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "23041:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "23041:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "23167:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23180:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23191:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23176:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23176:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "23123:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "23123:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "23123:72:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23216:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23227:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23212:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23212:19:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23237:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23243:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "23233:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23233:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23205:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "23205:49:34" + }, + "nodeType": "YulExpressionStatement", + "src": "23205:49:34" + }, + { + "nodeType": "YulAssignment", + "src": "23263:116:34", + "value": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "23365:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23374:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "23271:93:34" + }, + "nodeType": "YulFunctionCall", + "src": "23271:108:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23263:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23400:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23411:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23396:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23396:19:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23421:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23427:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "23417:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "23417:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23389:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "23389:49:34" + }, + "nodeType": "YulExpressionStatement", + "src": "23389:49:34" + }, + { + "nodeType": "YulAssignment", + "src": "23447:116:34", + "value": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "23549:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23558:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "23455:93:34" + }, + "nodeType": "YulFunctionCall", + "src": "23455:108:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23447:4:34" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22763:9:34", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "22775:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "22783:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "22791:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "22799:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "22807:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22815:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22826:4:34", + "type": "" + } + ], + "src": "22493:1077:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23637:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23647:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23676:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "23658:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "23658:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "23647:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_ILBPair_$6187", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "23619:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "23629:7:34", + "type": "" + } + ], + "src": "23576:112:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23753:95:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "23826:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23835:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23838:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "23828:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "23828:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "23828:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23776:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23817:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_ILBPair_$6187", + "nodeType": "YulIdentifier", + "src": "23783:33:34" + }, + "nodeType": "YulFunctionCall", + "src": "23783:40:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "23773:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "23773:51:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "23766:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "23766:59:34" + }, + "nodeType": "YulIf", + "src": "23763:79:34" + } + ] + }, + "name": "validator_revert_t_contract$_ILBPair_$6187", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "23746:5:34", + "type": "" + } + ], + "src": "23694:154:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23922:103:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23932:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23954:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "23941:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "23941:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23932:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24013:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_ILBPair_$6187", + "nodeType": "YulIdentifier", + "src": "23970:42:34" + }, + "nodeType": "YulFunctionCall", + "src": "23970:49:34" + }, + "nodeType": "YulExpressionStatement", + "src": "23970:49:34" + } + ] + }, + "name": "abi_decode_t_contract$_ILBPair_$6187", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23900:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "23908:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "23916:5:34", + "type": "" + } + ], + "src": "23854:171:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24076:73:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24086:57:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24101:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24108:34:34", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "24097:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "24097:46:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "24086:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint128", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24058:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "24068:7:34", + "type": "" + } + ], + "src": "24031:118:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24198:79:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "24255:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24264:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24267:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "24257:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24257:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24257:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24221:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24246:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint128", + "nodeType": "YulIdentifier", + "src": "24228:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "24228:24:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "24218:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "24218:35:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24211:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24211:43:34" + }, + "nodeType": "YulIf", + "src": "24208:63:34" + } + ] + }, + "name": "validator_revert_t_uint128", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24191:5:34", + "type": "" + } + ], + "src": "24155:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24335:87:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24345:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24367:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "24354:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "24354:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24345:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24410:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint128", + "nodeType": "YulIdentifier", + "src": "24383:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "24383:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24383:33:34" + } + ] + }, + "name": "abi_decode_t_uint128", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24313:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "24321:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24329:5:34", + "type": "" + } + ], + "src": "24283:139:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24470:48:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24480:32:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24505:5:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24498:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24498:13:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24491:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24491:21:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "24480:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24452:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "24462:7:34", + "type": "" + } + ], + "src": "24428:90:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24564:76:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "24618:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24627:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24630:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "24620:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24620:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24620:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24587:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24609:5:34" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "24594:14:34" + }, + "nodeType": "YulFunctionCall", + "src": "24594:21:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "24584:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "24584:32:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24577:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "24577:40:34" + }, + "nodeType": "YulIf", + "src": "24574:60:34" + } + ] + }, + "name": "validator_revert_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24557:5:34", + "type": "" + } + ], + "src": "24524:116:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24695:84:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24705:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24727:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "24714:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "24714:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24705:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24767:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "24743:23:34" + }, + "nodeType": "YulFunctionCall", + "src": "24743:30:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24743:30:34" + } + ] + }, + "name": "abi_decode_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24673:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "24681:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24689:5:34", + "type": "" + } + ], + "src": "24646:133:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24898:532:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "24944:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "24946:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "24946:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "24946:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24919:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24928:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "24915:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "24915:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24940:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "24911:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "24911:32:34" + }, + "nodeType": "YulIf", + "src": "24908:119:34" + }, + { + "nodeType": "YulBlock", + "src": "25037:133:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25052:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25066:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "25056:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "25081:79:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25132:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25143:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25128:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25128:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25152:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBPair_$6187", + "nodeType": "YulIdentifier", + "src": "25091:36:34" + }, + "nodeType": "YulFunctionCall", + "src": "25091:69:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25081:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "25180:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25195:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25209:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "25199:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "25225:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25260:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25271:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25256:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25256:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25280:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint128", + "nodeType": "YulIdentifier", + "src": "25235:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "25235:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "25225:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "25308:115:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25323:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25337:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "25327:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "25353:60:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25385:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25396:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25381:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25381:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25405:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_bool", + "nodeType": "YulIdentifier", + "src": "25363:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "25363:50:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "25353:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint128t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24852:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "24863:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "24875:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "24883:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "24891:6:34", + "type": "" + } + ], + "src": "24785:645:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25501:53:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25518:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25541:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint128", + "nodeType": "YulIdentifier", + "src": "25523:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "25523:24:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25511:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "25511:37:34" + }, + "nodeType": "YulExpressionStatement", + "src": "25511:37:34" + } + ] + }, + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "25489:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25496:3:34", + "type": "" + } + ], + "src": "25436:118:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25714:288:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25724:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25736:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25747:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25732:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25732:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25724:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25804:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25817:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25828:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25813:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25813:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulIdentifier", + "src": "25760:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "25760:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "25760:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "25885:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25898:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25909:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25894:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25894:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulIdentifier", + "src": "25841:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "25841:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "25841:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "25967:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25980:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25991:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25976:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "25976:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulIdentifier", + "src": "25923:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "25923:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "25923:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25670:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "25682:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "25690:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25698:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25709:4:34", + "type": "" + } + ], + "src": "25560:442:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26095:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26105:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26149:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "26118:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "26118:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "26105:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26075:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "26085:9:34", + "type": "" + } + ], + "src": "26008:153:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26259:93:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26276:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26339:5:34" + } + ], + "functionName": { + "name": "convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address", + "nodeType": "YulIdentifier", + "src": "26281:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "26281:64:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26269:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "26269:77:34" + }, + "nodeType": "YulExpressionStatement", + "src": "26269:77:34" + } + ] + }, + "name": "abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26247:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26254:3:34", + "type": "" + } + ], + "src": "26167:185:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26483:151:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26493:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26505:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26516:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26501:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "26501:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26493:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26600:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26613:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26624:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26609:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "26609:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "26529:70:34" + }, + "nodeType": "YulFunctionCall", + "src": "26529:98:34" + }, + "nodeType": "YulExpressionStatement", + "src": "26529:98:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_ISovrynLBFactoryV1_$6916__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26455:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26467:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26478:4:34", + "type": "" + } + ], + "src": "26358:276:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26919:1690:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "26966:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "26968:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "26968:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "26968:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26940:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26949:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26936:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "26936:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26961:3:34", + "type": "", + "value": "288" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "26932:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "26932:33:34" + }, + "nodeType": "YulIf", + "src": "26929:120:34" + }, + { + "nodeType": "YulBlock", + "src": "27059:131:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27074:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27088:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27078:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27103:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27152:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27163:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27148:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27148:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27172:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "27113:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "27113:67:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27103:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27200:132:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27215:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27229:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27219:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27245:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27294:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27305:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27290:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27290:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27314:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "27255:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "27255:67:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27245:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27342:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27357:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27371:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27361:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27387:62:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27421:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27432:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27417:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27417:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27441:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "27397:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "27397:52:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "27387:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27469:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27484:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27498:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27488:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27514:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27549:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27560:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27545:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27545:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27569:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "27524:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "27524:53:34" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "27514:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27597:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27612:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27626:3:34", + "type": "", + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27616:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27643:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27678:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27689:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27674:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27674:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27698:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "27653:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "27653:53:34" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "27643:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27726:304:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27741:47:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27772:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27783:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27768:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27768:19:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "27755:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "27755:33:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27745:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27835:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "27837:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "27837:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "27837:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27807:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27815:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "27804:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "27804:30:34" + }, + "nodeType": "YulIf", + "src": "27801:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "27932:88:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27992:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28003:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27988:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "27988:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28012:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "27942:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "27942:78:34" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "27932:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "28040:304:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "28055:47:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28086:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28097:3:34", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28082:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "28082:19:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "28069:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "28069:33:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "28059:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28149:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "28151:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "28151:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "28151:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28121:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28129:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "28118:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "28118:30:34" + }, + "nodeType": "YulIf", + "src": "28115:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "28246:88:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28306:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28317:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28302:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "28302:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28326:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "28256:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "28256:78:34" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "28246:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "28354:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "28369:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28383:3:34", + "type": "", + "value": "224" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "28373:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "28400:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28435:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28446:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28431:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "28431:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28455:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "28410:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "28410:53:34" + }, + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "28400:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "28483:119:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "28498:17:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28512:3:34", + "type": "", + "value": "256" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "28502:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "28529:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28564:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28575:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28560:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "28560:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28584:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "28539:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "28539:53:34" + }, + "variableNames": [ + { + "name": "value8", + "nodeType": "YulIdentifier", + "src": "28529:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26825:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "26836:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26848:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26856:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "26864:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "26872:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "26880:6:34", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "26888:6:34", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "26896:6:34", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "26904:6:34", + "type": "" + }, + { + "name": "value8", + "nodeType": "YulTypedName", + "src": "26912:6:34", + "type": "" + } + ], + "src": "26640:1969:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28713:406:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "28759:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "28761:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "28761:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "28761:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28734:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28743:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "28730:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "28730:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28755:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "28726:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "28726:32:34" + }, + "nodeType": "YulIf", + "src": "28723:119:34" + }, + { + "nodeType": "YulBlock", + "src": "28852:133:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "28867:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28881:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "28871:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "28896:79:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28947:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28958:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28943:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "28943:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28967:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBPair_$6187", + "nodeType": "YulIdentifier", + "src": "28906:36:34" + }, + "nodeType": "YulFunctionCall", + "src": "28906:69:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "28896:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "28995:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29010:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29024:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "29014:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29040:62:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29074:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "29085:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29070:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "29070:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "29094:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "29050:19:34" + }, + "nodeType": "YulFunctionCall", + "src": "29050:52:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29040:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28675:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "28686:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "28698:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "28706:6:34", + "type": "" + } + ], + "src": "28615:504:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29187:51:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29197:35:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29226:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "29208:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "29208:24:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "29197:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_ILBToken_$6842", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29169:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "29179:7:34", + "type": "" + } + ], + "src": "29125:113:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29304:96:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "29378:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29387:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29390:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29380:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "29380:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "29380:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29327:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29369:5:34" + } + ], + "functionName": { + "name": "cleanup_t_contract$_ILBToken_$6842", + "nodeType": "YulIdentifier", + "src": "29334:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "29334:41:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "29324:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "29324:52:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29317:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "29317:60:34" + }, + "nodeType": "YulIf", + "src": "29314:80:34" + } + ] + }, + "name": "validator_revert_t_contract$_ILBToken_$6842", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29297:5:34", + "type": "" + } + ], + "src": "29244:156:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29475:104:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29485:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "29507:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "29494:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "29494:20:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29485:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29567:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_ILBToken_$6842", + "nodeType": "YulIdentifier", + "src": "29523:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "29523:50:34" + }, + "nodeType": "YulExpressionStatement", + "src": "29523:50:34" + } + ] + }, + "name": "abi_decode_t_contract$_ILBToken_$6842", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "29453:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29461:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29469:5:34", + "type": "" + } + ], + "src": "29406:173:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29674:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29691:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29694:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29684:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "29684:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "29684:12:34" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "29585:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29815:478:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "29864:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "29866:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "29866:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "29866:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "29843:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29851:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29839:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "29839:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "29858:3:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "29835:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "29835:27:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29828:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "29828:35:34" + }, + "nodeType": "YulIf", + "src": "29825:122:34" + }, + { + "nodeType": "YulAssignment", + "src": "29956:30:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "29979:6:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "29966:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "29966:20:34" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "29956:6:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30029:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "30031:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "30031:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "30031:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30001:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30009:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "29998:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "29998:30:34" + }, + "nodeType": "YulIf", + "src": "29995:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "30121:29:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30137:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30145:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30133:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30133:17:34" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "30121:8:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30204:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "30206:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "30206:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "30206:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "30169:8:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "30183:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30191:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "30179:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30179:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30165:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30165:32:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "30199:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "30162:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "30162:41:34" + }, + "nodeType": "YulIf", + "src": "30159:128:34" + } + ] + }, + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "29782:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "29790:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "29798:8:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "29808:6:34", + "type": "" + } + ], + "src": "29725:568:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30503:1055:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "30550:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "30552:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "30552:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "30552:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "30524:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30533:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "30520:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30520:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30545:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "30516:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30516:33:34" + }, + "nodeType": "YulIf", + "src": "30513:120:34" + }, + { + "nodeType": "YulBlock", + "src": "30643:134:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30658:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30672:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30662:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "30687:80:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30739:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30750:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30735:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30735:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "30759:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBToken_$6842", + "nodeType": "YulIdentifier", + "src": "30697:37:34" + }, + "nodeType": "YulFunctionCall", + "src": "30697:70:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30687:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "30787:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30802:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30816:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30806:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "30832:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30867:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30878:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30863:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30863:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "30887:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "30842:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "30842:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30832:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "30915:313:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30930:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30961:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30972:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30957:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "30957:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "30944:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "30944:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30934:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31023:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "31025:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "31025:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "31025:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30995:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31003:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "30992:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "30992:30:34" + }, + "nodeType": "YulIf", + "src": "30989:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "31120:98:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31190:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31201:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31186:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31186:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "31210:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "31138:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "31138:80:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "31120:6:34" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "31128:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "31238:313:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "31253:46:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31284:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31295:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31280:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31280:18:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "31267:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "31267:32:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "31257:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31346:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "31348:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "31348:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "31348:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31318:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31326:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "31315:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "31315:30:34" + }, + "nodeType": "YulIf", + "src": "31312:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "31443:98:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31513:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31524:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31509:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31509:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "31533:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "31461:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "31461:80:34" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "31443:6:34" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "31451:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBToken_$6842t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30433:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "30444:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30456:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "30464:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "30472:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "30480:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "30488:6:34", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "30496:6:34", + "type": "" + } + ], + "src": "30299:1259:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31663:407:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "31709:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "31711:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "31711:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "31711:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "31684:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31693:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "31680:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31680:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31705:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "31676:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31676:32:34" + }, + "nodeType": "YulIf", + "src": "31673:119:34" + }, + { + "nodeType": "YulBlock", + "src": "31802:133:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "31817:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31831:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "31821:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31846:79:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31897:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "31908:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31893:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "31893:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "31917:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBPair_$6187", + "nodeType": "YulIdentifier", + "src": "31856:36:34" + }, + "nodeType": "YulFunctionCall", + "src": "31856:69:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "31846:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "31945:118:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "31960:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31974:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "31964:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31990:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32025:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "32036:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32021:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "32021:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "32045:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "32000:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "32000:53:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "31990:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "31625:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "31636:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "31648:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "31656:6:34", + "type": "" + } + ], + "src": "31564:506:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32139:52:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "32156:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "32178:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint24", + "nodeType": "YulIdentifier", + "src": "32161:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "32161:23:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32149:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32149:36:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32149:36:34" + } + ] + }, + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "32127:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "32134:3:34", + "type": "" + } + ], + "src": "32076:115:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32293:122:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32303:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32315:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32326:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32311:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "32311:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32303:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32381:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32394:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32405:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32390:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "32390:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulIdentifier", + "src": "32339:41:34" + }, + "nodeType": "YulFunctionCall", + "src": "32339:69:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32339:69:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32265:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32277:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32288:4:34", + "type": "" + } + ], + "src": "32197:218:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32449:152:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32466:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32469:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32459:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32459:88:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32459:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32563:1:34", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32566:4:34", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32556:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32556:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32556:15:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32587:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32590:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "32580:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32580:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32580:15:34" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "32421:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32651:147:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32661:25:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "32684:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "32666:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "32666:20:34" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "32661:1:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "32695:25:34", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "32718:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "32700:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "32700:20:34" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "32695:1:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "32729:16:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "32740:1:34" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "32743:1:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32736:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "32736:9:34" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "32729:3:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32769:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "32771:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "32771:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32771:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "32761:1:34" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "32764:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "32758:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "32758:10:34" + }, + "nodeType": "YulIf", + "src": "32755:36:34" + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "32638:1:34", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "32641:1:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "32647:3:34", + "type": "" + } + ], + "src": "32607:191:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32832:152:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32849:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32852:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32842:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32842:88:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32842:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32946:1:34", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32949:4:34", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "32939:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32939:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32939:15:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32970:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32973:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "32963:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "32963:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "32963:15:34" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "32804:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33055:53:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33072:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33095:5:34" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "33077:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "33077:24:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33065:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "33065:37:34" + }, + "nodeType": "YulExpressionStatement", + "src": "33065:37:34" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33043:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "33050:3:34", + "type": "" + } + ], + "src": "32990:118:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33212:124:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33222:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33234:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33245:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33230:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33230:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33222:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "33302:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33315:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33326:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33311:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33311:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "33258:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "33258:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "33258:71:34" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33184:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "33196:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33207:4:34", + "type": "" + } + ], + "src": "33114:222:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33405:80:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33415:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "33430:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "33424:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "33424:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33415:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33473:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "33446:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "33446:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "33446:33:34" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "33383:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "33391:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33399:5:34", + "type": "" + } + ], + "src": "33342:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33568:274:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "33614:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "33616:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "33616:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "33616:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "33589:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33598:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "33585:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33585:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33610:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "33581:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33581:32:34" + }, + "nodeType": "YulIf", + "src": "33578:119:34" + }, + { + "nodeType": "YulBlock", + "src": "33707:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "33722:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33736:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "33726:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "33751:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33797:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "33808:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33793:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33793:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "33817:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "33761:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "33761:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "33751:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33538:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "33549:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "33561:6:34", + "type": "" + } + ], + "src": "33491:351:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33893:149:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33903:25:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "33926:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "33908:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "33908:20:34" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "33903:1:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "33937:25:34", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "33960:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "33942:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "33942:20:34" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "33937:1:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "33971:17:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "33983:1:34" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "33986:1:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "33979:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "33979:9:34" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "33971:4:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34013:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "34015:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "34015:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "34015:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "34004:4:34" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "34010:1:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "34001:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "34001:11:34" + }, + "nodeType": "YulIf", + "src": "33998:37:34" + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "33879:1:34", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "33882:1:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "33888:4:34", + "type": "" + } + ], + "src": "33848:194:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34111:80:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34121:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "34136:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "34130:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "34130:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34121:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34179:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "34152:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "34152:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "34152:33:34" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "34089:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "34097:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34105:5:34", + "type": "" + } + ], + "src": "34048:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34274:274:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "34320:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "34322:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "34322:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "34322:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "34295:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34304:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "34291:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "34291:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34316:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "34287:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "34287:32:34" + }, + "nodeType": "YulIf", + "src": "34284:119:34" + }, + { + "nodeType": "YulBlock", + "src": "34413:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "34428:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34442:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "34432:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "34457:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34503:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "34514:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34499:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "34499:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "34523:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "34467:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "34467:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "34457:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34244:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "34255:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "34267:6:34", + "type": "" + } + ], + "src": "34197:351:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34628:66:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34638:50:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34682:5:34" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "34651:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "34651:37:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "34638:9:34" + } + ] + } + ] + }, + "name": "convert_t_contract$_IERC20_$479_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34608:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "34618:9:34", + "type": "" + } + ], + "src": "34554:140:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34779:80:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34796:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34846:5:34" + } + ], + "functionName": { + "name": "convert_t_contract$_IERC20_$479_to_t_address", + "nodeType": "YulIdentifier", + "src": "34801:44:34" + }, + "nodeType": "YulFunctionCall", + "src": "34801:51:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34789:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "34789:64:34" + }, + "nodeType": "YulExpressionStatement", + "src": "34789:64:34" + } + ] + }, + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34767:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "34774:3:34", + "type": "" + } + ], + "src": "34700:159:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34928:52:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34945:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34967:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "34950:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "34950:23:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34938:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "34938:36:34" + }, + "nodeType": "YulExpressionStatement", + "src": "34938:36:34" + } + ] + }, + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34916:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "34923:3:34", + "type": "" + } + ], + "src": "34865:115:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35192:395:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35202:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35214:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35225:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35210:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35210:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35202:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "35297:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35310:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35321:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35306:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35306:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "35239:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "35239:85:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35239:85:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "35392:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35405:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35416:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35401:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35401:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "35334:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "35334:86:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35334:86:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "35472:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35485:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35496:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35481:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35481:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulIdentifier", + "src": "35430:41:34" + }, + "nodeType": "YulFunctionCall", + "src": "35430:70:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35430:70:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "35552:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35565:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35576:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35561:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35561:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "35510:41:34" + }, + "nodeType": "YulFunctionCall", + "src": "35510:70:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35510:70:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35140:9:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "35152:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "35160:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "35168:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "35176:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35187:4:34", + "type": "" + } + ], + "src": "34986:601:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35672:96:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35682:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "35697:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "35691:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "35691:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "35682:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "35756:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_ILBPair_$6187", + "nodeType": "YulIdentifier", + "src": "35713:42:34" + }, + "nodeType": "YulFunctionCall", + "src": "35713:49:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35713:49:34" + } + ] + }, + "name": "abi_decode_t_contract$_ILBPair_$6187_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "35650:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "35658:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "35666:5:34", + "type": "" + } + ], + "src": "35593:175:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35867:290:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "35913:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "35915:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "35915:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "35915:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "35888:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35897:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "35884:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35884:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35909:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "35880:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "35880:32:34" + }, + "nodeType": "YulIf", + "src": "35877:119:34" + }, + { + "nodeType": "YulBlock", + "src": "36006:144:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "36021:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36035:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "36025:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "36050:90:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36112:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "36123:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36108:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "36108:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "36132:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBPair_$6187_fromMemory", + "nodeType": "YulIdentifier", + "src": "36060:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "36060:80:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "36050:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBPair_$6187_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35837:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "35848:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "35860:6:34", + "type": "" + } + ], + "src": "35774:383:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36216:32:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "36226:16:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "36237:5:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "36226:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_rational_1_by_1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36198:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "36208:7:34", + "type": "" + } + ], + "src": "36163:85:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36298:57:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "36308:41:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "36323:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36330:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "36319:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "36319:30:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "36308:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36280:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "36290:7:34", + "type": "" + } + ], + "src": "36254:101:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36428:89:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "36438:73:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "36503:5:34" + } + ], + "functionName": { + "name": "cleanup_t_rational_1_by_1", + "nodeType": "YulIdentifier", + "src": "36477:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "36477:32:34" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "36468:8:34" + }, + "nodeType": "YulFunctionCall", + "src": "36468:42:34" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "36451:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "36451:60:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "36438:9:34" + } + ] + } + ] + }, + "name": "convert_t_rational_1_by_1_to_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36408:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "36418:9:34", + "type": "" + } + ], + "src": "36361:156:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36595:73:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "36612:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "36655:5:34" + } + ], + "functionName": { + "name": "convert_t_rational_1_by_1_to_t_uint64", + "nodeType": "YulIdentifier", + "src": "36617:37:34" + }, + "nodeType": "YulFunctionCall", + "src": "36617:44:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36605:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "36605:57:34" + }, + "nodeType": "YulExpressionStatement", + "src": "36605:57:34" + } + ] + }, + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36583:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "36590:3:34", + "type": "" + } + ], + "src": "36523:145:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36779:131:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "36789:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36801:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36812:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36797:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "36797:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36789:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "36876:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36889:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36900:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36885:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "36885:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", + "nodeType": "YulIdentifier", + "src": "36825:50:34" + }, + "nodeType": "YulFunctionCall", + "src": "36825:78:34" + }, + "nodeType": "YulExpressionStatement", + "src": "36825:78:34" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36751:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "36763:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36774:4:34", + "type": "" + } + ], + "src": "36674:236:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36993:94:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37003:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "37018:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "37012:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "37012:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "37003:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "37075:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "37034:40:34" + }, + "nodeType": "YulFunctionCall", + "src": "37034:47:34" + }, + "nodeType": "YulExpressionStatement", + "src": "37034:47:34" + } + ] + }, + "name": "abi_decode_t_contract$_IERC20_$479_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "36971:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "36979:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "36987:5:34", + "type": "" + } + ], + "src": "36916:171:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37184:288:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "37230:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "37232:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "37232:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "37232:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "37205:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37214:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "37201:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37201:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37226:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "37197:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37197:32:34" + }, + "nodeType": "YulIf", + "src": "37194:119:34" + }, + { + "nodeType": "YulBlock", + "src": "37323:142:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "37338:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37352:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "37342:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "37367:88:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37427:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "37438:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37423:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37423:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "37447:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479_fromMemory", + "nodeType": "YulIdentifier", + "src": "37377:45:34" + }, + "nodeType": "YulFunctionCall", + "src": "37377:78:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "37367:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$479_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37154:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "37165:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "37177:6:34", + "type": "" + } + ], + "src": "37093:379:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37558:277:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "37604:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "37606:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "37606:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "37606:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "37579:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37588:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "37575:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37575:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37600:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "37571:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37571:32:34" + }, + "nodeType": "YulIf", + "src": "37568:119:34" + }, + { + "nodeType": "YulBlock", + "src": "37697:131:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "37712:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37726:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "37716:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "37741:77:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37790:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "37801:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37786:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "37786:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "37810:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$479", + "nodeType": "YulIdentifier", + "src": "37751:34:34" + }, + "nodeType": "YulFunctionCall", + "src": "37751:67:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "37741:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$479", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37528:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "37539:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "37551:6:34", + "type": "" + } + ], + "src": "37478:357:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38051:454:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38061:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38073:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38084:3:34", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38069:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38069:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38061:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38142:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38155:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38166:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38151:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38151:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "38098:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "38098:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38098:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38223:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38236:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38247:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38232:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38232:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "38179:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "38179:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38179:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "38305:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38318:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38329:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38314:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38314:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "38261:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "38261:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38261:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "38387:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38400:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38411:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38396:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38396:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "38343:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "38343:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38343:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "38469:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38482:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38493:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38478:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38478:19:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "38425:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "38425:73:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38425:73:34" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37991:9:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "38003:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "38011:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "38019:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38027:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38035:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38046:4:34", + "type": "" + } + ], + "src": "37841:664:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38570:50:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38587:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "38607:5:34" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "38592:14:34" + }, + "nodeType": "YulFunctionCall", + "src": "38592:21:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38580:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "38580:34:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38580:34:34" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "38558:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "38565:3:34", + "type": "" + } + ], + "src": "38511:109:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38746:200:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38756:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38768:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38779:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38764:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38764:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38756:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38836:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38849:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38860:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38845:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38845:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint128_to_t_uint128_fromStack", + "nodeType": "YulIdentifier", + "src": "38792:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "38792:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38792:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38911:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38924:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38935:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38920:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "38920:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "38873:37:34" + }, + "nodeType": "YulFunctionCall", + "src": "38873:66:34" + }, + "nodeType": "YulExpressionStatement", + "src": "38873:66:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38710:9:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38722:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38730:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38741:4:34", + "type": "" + } + ], + "src": "38626:320:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39015:80:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39025:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "39040:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "39034:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "39034:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39025:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39083:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint128", + "nodeType": "YulIdentifier", + "src": "39056:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "39056:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "39056:33:34" + } + ] + }, + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "38993:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "39001:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "39009:5:34", + "type": "" + } + ], + "src": "38952:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39212:552:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "39258:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "39260:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "39260:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "39260:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "39233:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39242:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "39229:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "39229:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39254:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "39225:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "39225:32:34" + }, + "nodeType": "YulIf", + "src": "39222:119:34" + }, + { + "nodeType": "YulBlock", + "src": "39351:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "39366:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39380:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "39370:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "39395:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39441:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "39452:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39437:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "39437:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "39461:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "39405:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "39405:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "39395:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "39489:129:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "39504:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39518:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "39508:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "39534:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39580:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "39591:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39576:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "39576:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "39600:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "39544:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "39544:64:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "39534:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "39628:129:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "39643:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39657:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "39647:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "39673:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39719:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "39730:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39715:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "39715:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "39739:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "39683:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "39683:64:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "39673:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39166:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "39177:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "39189:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "39197:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "39205:6:34", + "type": "" + } + ], + "src": "39101:663:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39859:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39876:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39879:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "39869:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "39869:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "39869:12:34" + } + ] + }, + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulFunctionDefinition", + "src": "39770:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39944:47:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "39967:3:34" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "39972:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "39977:6:34" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "39954:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "39954:30:34" + }, + "nodeType": "YulExpressionStatement", + "src": "39954:30:34" + } + ] + }, + "name": "copy_calldata_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "39926:3:34", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "39931:3:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "39936:6:34", + "type": "" + } + ], + "src": "39893:98:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40159:405:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40169:93:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40250:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40255:6:34" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "40176:73:34" + }, + "nodeType": "YulFunctionCall", + "src": "40176:86:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40169:3:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40354:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", + "nodeType": "YulIdentifier", + "src": "40356:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "40356:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "40356:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40278:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40286:66:34", + "type": "", + "value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "40275:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "40275:78:34" + }, + "nodeType": "YulIf", + "src": "40272:165:34" + }, + { + "nodeType": "YulAssignment", + "src": "40446:27:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40460:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40468:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "40456:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "40456:17:34" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40446:6:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "40507:5:34" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40514:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40519:6:34" + } + ], + "functionName": { + "name": "copy_calldata_to_memory", + "nodeType": "YulIdentifier", + "src": "40483:23:34" + }, + "nodeType": "YulFunctionCall", + "src": "40483:43:34" + }, + "nodeType": "YulExpressionStatement", + "src": "40483:43:34" + }, + { + "nodeType": "YulAssignment", + "src": "40535:23:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40546:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "40551:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40542:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "40542:16:34" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "40535:3:34" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "40132:5:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "40139:6:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "40147:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "40155:3:34", + "type": "" + } + ], + "src": "40027:537:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40872:593:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40882:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40894:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40905:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40890:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "40890:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40882:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "40963:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40976:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40987:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40972:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "40972:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "40919:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "40919:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "40919:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "41044:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41057:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41068:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41053:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41053:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "41000:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "41000:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "41000:72:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41093:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41104:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41089:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41089:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41113:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41119:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41109:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41109:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "41082:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "41082:48:34" + }, + "nodeType": "YulExpressionStatement", + "src": "41082:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "41139:126:34", + "value": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "41243:6:34" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "41251:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41260:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "41147:95:34" + }, + "nodeType": "YulFunctionCall", + "src": "41147:118:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41139:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41286:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41297:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41282:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41282:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41306:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41312:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41302:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41302:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "41275:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "41275:48:34" + }, + "nodeType": "YulExpressionStatement", + "src": "41275:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "41332:126:34", + "value": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "41436:6:34" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "41444:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41453:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "41340:95:34" + }, + "nodeType": "YulFunctionCall", + "src": "41340:118:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41332:4:34" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "40804:9:34", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "40816:6:34", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "40824:6:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "40832:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "40840:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "40848:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "40856:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "40867:4:34", + "type": "" + } + ], + "src": "40570:895:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41533:79:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "41543:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "41558:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "41552:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "41552:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "41543:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "41600:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint24", + "nodeType": "YulIdentifier", + "src": "41574:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "41574:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "41574:32:34" + } + ] + }, + "name": "abi_decode_t_uint24_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "41511:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "41519:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "41527:5:34", + "type": "" + } + ], + "src": "41471:141:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41694:273:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "41740:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "41742:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "41742:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "41742:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "41715:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41724:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41711:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41711:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41736:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "41707:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41707:32:34" + }, + "nodeType": "YulIf", + "src": "41704:119:34" + }, + { + "nodeType": "YulBlock", + "src": "41833:127:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "41848:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41862:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "41852:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "41877:73:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41922:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "41933:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41918:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "41918:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "41942:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint24_fromMemory", + "nodeType": "YulIdentifier", + "src": "41887:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "41887:63:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "41877:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint24_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "41664:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "41675:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "41687:6:34", + "type": "" + } + ], + "src": "41618:349:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42001:152:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42018:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42021:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "42011:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42011:88:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42011:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42115:1:34", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42118:4:34", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "42108:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42108:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42108:15:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42139:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42142:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "42132:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42132:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42132:15:34" + } + ] + }, + "name": "panic_error_0x21", + "nodeType": "YulFunctionDefinition", + "src": "41973:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42204:69:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42214:53:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42229:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42236:30:34", + "type": "", + "value": "0xffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "42225:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "42225:42:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "42214:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint112", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42186:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "42196:7:34", + "type": "" + } + ], + "src": "42159:114:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42322:79:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "42379:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42388:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42391:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "42381:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42381:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42381:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42345:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42370:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint112", + "nodeType": "YulIdentifier", + "src": "42352:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "42352:24:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "42342:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "42342:35:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "42335:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42335:43:34" + }, + "nodeType": "YulIf", + "src": "42332:63:34" + } + ] + }, + "name": "validator_revert_t_uint112", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42315:5:34", + "type": "" + } + ], + "src": "42279:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42470:80:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42480:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "42495:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "42489:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "42489:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42480:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42538:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint112", + "nodeType": "YulIdentifier", + "src": "42511:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "42511:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42511:33:34" + } + ] + }, + "name": "abi_decode_t_uint112_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42448:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "42456:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42464:5:34", + "type": "" + } + ], + "src": "42407:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42600:49:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42610:33:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42625:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42632:10:34", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "42621:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "42621:22:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "42610:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_uint32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42582:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "42592:7:34", + "type": "" + } + ], + "src": "42556:93:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42697:78:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "42753:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42762:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42765:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "42755:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42755:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42755:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42720:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42744:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint32", + "nodeType": "YulIdentifier", + "src": "42727:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "42727:23:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "42717:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "42717:34:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "42710:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "42710:42:34" + }, + "nodeType": "YulIf", + "src": "42707:62:34" + } + ] + }, + "name": "validator_revert_t_uint32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42690:5:34", + "type": "" + } + ], + "src": "42655:120:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42843:79:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42853:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "42868:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "42862:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "42862:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42853:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42910:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint32", + "nodeType": "YulIdentifier", + "src": "42884:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "42884:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "42884:32:34" + } + ] + }, + "name": "abi_decode_t_uint32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42821:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "42829:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42837:5:34", + "type": "" + } + ], + "src": "42781:141:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43038:551:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "43084:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "43086:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "43086:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "43086:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "43059:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "43068:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "43055:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "43055:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "43080:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "43051:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "43051:32:34" + }, + "nodeType": "YulIf", + "src": "43048:119:34" + }, + { + "nodeType": "YulBlock", + "src": "43177:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "43192:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "43206:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "43196:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "43221:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "43267:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "43278:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "43263:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "43263:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "43287:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint112_fromMemory", + "nodeType": "YulIdentifier", + "src": "43231:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "43231:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "43221:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "43315:129:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "43330:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "43344:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "43334:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "43360:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "43406:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "43417:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "43402:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "43402:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "43426:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint112_fromMemory", + "nodeType": "YulIdentifier", + "src": "43370:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "43370:64:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "43360:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "43454:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "43469:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "43483:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "43473:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "43499:73:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "43544:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "43555:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "43540:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "43540:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "43564:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint32_fromMemory", + "nodeType": "YulIdentifier", + "src": "43509:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "43509:63:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "43499:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "42992:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "43003:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "43015:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "43023:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "43031:6:34", + "type": "" + } + ], + "src": "42928:661:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43648:32:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "43658:16:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43669:5:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "43658:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_rational_0_by_1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "43630:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "43640:7:34", + "type": "" + } + ], + "src": "43595:85:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43754:90:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "43764:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43830:5:34" + } + ], + "functionName": { + "name": "cleanup_t_rational_0_by_1", + "nodeType": "YulIdentifier", + "src": "43804:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "43804:32:34" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "43795:8:34" + }, + "nodeType": "YulFunctionCall", + "src": "43795:42:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "43777:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "43777:61:34" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "43764:9:34" + } + ] + } + ] + }, + "name": "convert_t_rational_0_by_1_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "43734:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "43744:9:34", + "type": "" + } + ], + "src": "43686:158:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43923:74:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43940:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43984:5:34" + } + ], + "functionName": { + "name": "convert_t_rational_0_by_1_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "43945:38:34" + }, + "nodeType": "YulFunctionCall", + "src": "43945:45:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "43933:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "43933:58:34" + }, + "nodeType": "YulExpressionStatement", + "src": "43933:58:34" + } + ] + }, + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "43911:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "43918:3:34", + "type": "" + } + ], + "src": "43850:147:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44098:73:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44115:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "44120:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "44108:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "44108:19:34" + }, + "nodeType": "YulExpressionStatement", + "src": "44108:19:34" + }, + { + "nodeType": "YulAssignment", + "src": "44136:29:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44155:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44160:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44151:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "44151:14:34" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "44136:11:34" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "44070:3:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "44075:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "44086:11:34", + "type": "" + } + ], + "src": "44003:168:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44283:8:34", + "statements": [] + }, + "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "44275:6:34", + "type": "" + } + ], + "src": "44177:114:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44442:217:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "44452:72:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44517:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44522:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "44459:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "44459:65:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44452:3:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44622:3:34" + } + ], + "functionName": { + "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "nodeType": "YulIdentifier", + "src": "44533:88:34" + }, + "nodeType": "YulFunctionCall", + "src": "44533:93:34" + }, + "nodeType": "YulExpressionStatement", + "src": "44533:93:34" + }, + { + "nodeType": "YulAssignment", + "src": "44635:18:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44646:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44651:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44642:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "44642:11:34" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "44635:3:34" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "44430:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "44438:3:34", + "type": "" + } + ], + "src": "44297:362:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44927:502:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "44937:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "44949:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44960:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44945:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "44945:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "44937:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "45026:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45039:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45050:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45035:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45035:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "44974:51:34" + }, + "nodeType": "YulFunctionCall", + "src": "44974:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "44974:79:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "45107:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45120:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45131:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45116:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45116:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "45063:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "45063:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45063:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "45189:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45202:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45213:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45198:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45198:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "45145:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "45145:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45145:72:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45238:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45249:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45234:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45234:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45258:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45264:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "45254:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45254:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "45227:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "45227:48:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45227:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "45284:138:34", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45417:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "45292:123:34" + }, + "nodeType": "YulFunctionCall", + "src": "45292:130:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45284:4:34" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "44883:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "44895:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "44903:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "44911:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "44922:4:34", + "type": "" + } + ], + "src": "44665:764:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "45697:502:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "45707:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45719:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45730:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45715:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45715:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45707:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "45788:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45801:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45812:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45797:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45797:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "45744:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "45744:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45744:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "45877:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45890:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45901:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45886:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45886:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "45825:51:34" + }, + "nodeType": "YulFunctionCall", + "src": "45825:80:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45825:80:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "45959:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45972:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45983:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45968:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "45968:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "45915:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "45915:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45915:72:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46008:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46019:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46004:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46004:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46028:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46034:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "46024:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46024:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "45997:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "45997:48:34" + }, + "nodeType": "YulExpressionStatement", + "src": "45997:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "46054:138:34", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46187:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "46062:123:34" + }, + "nodeType": "YulFunctionCall", + "src": "46062:130:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46054:4:34" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "45653:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "45665:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "45673:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "45681:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "45692:4:34", + "type": "" + } + ], + "src": "45435:764:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46325:200:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "46335:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46347:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46358:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46343:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46343:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46335:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "46409:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46422:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46433:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46418:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46418:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "46371:37:34" + }, + "nodeType": "YulFunctionCall", + "src": "46371:65:34" + }, + "nodeType": "YulExpressionStatement", + "src": "46371:65:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "46490:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46503:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46514:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46499:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46499:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "46446:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "46446:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "46446:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "46289:9:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "46301:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "46309:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "46320:4:34", + "type": "" + } + ], + "src": "46205:320:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46576:32:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "46586:16:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46597:5:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "46586:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "46558:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "46568:7:34", + "type": "" + } + ], + "src": "46531:77:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46657:79:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "46714:16:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46723:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46726:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "46716:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "46716:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "46716:12:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46680:5:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46705:5:34" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "46687:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "46687:24:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "46677:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "46677:35:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "46670:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "46670:43:34" + }, + "nodeType": "YulIf", + "src": "46667:63:34" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "46650:5:34", + "type": "" + } + ], + "src": "46614:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46805:80:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "46815:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "46830:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "46824:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "46824:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46815:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "46873:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "46846:26:34" + }, + "nodeType": "YulFunctionCall", + "src": "46846:33:34" + }, + "nodeType": "YulExpressionStatement", + "src": "46846:33:34" + } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "46783:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "46791:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "46799:5:34", + "type": "" + } + ], + "src": "46742:143:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46968:274:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47014:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "47016:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "47016:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "47016:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "46989:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46998:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "46985:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46985:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47010:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "46981:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "46981:32:34" + }, + "nodeType": "YulIf", + "src": "46978:119:34" + }, + { + "nodeType": "YulBlock", + "src": "47107:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "47122:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47136:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "47126:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "47151:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "47197:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "47208:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47193:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "47193:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "47217:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "47161:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "47161:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "47151:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "46938:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "46949:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "46961:6:34", + "type": "" + } + ], + "src": "46891:351:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47291:128:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "47301:33:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "47328:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "47310:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "47310:24:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "47301:5:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47362:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "47364:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "47364:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "47364:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "47349:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47356:4:34", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "47346:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "47346:15:34" + }, + "nodeType": "YulIf", + "src": "47343:41:34" + }, + { + "nodeType": "YulAssignment", + "src": "47393:20:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "47404:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47411:1:34", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "47400:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "47400:13:34" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "47393:3:34" + } + ] + } + ] + }, + "name": "decrement_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "47277:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "47287:3:34", + "type": "" + } + ], + "src": "47248:171:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47538:34:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "47548:18:34", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47563:3:34" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "47548:11:34" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "47510:3:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "47515:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "47526:11:34", + "type": "" + } + ], + "src": "47425:147:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47741:235:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "47751:90:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47834:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47839:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "47758:75:34" + }, + "nodeType": "YulFunctionCall", + "src": "47758:83:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47751:3:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47939:3:34" + } + ], + "functionName": { + "name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "nodeType": "YulIdentifier", + "src": "47850:88:34" + }, + "nodeType": "YulFunctionCall", + "src": "47850:93:34" + }, + "nodeType": "YulExpressionStatement", + "src": "47850:93:34" + }, + { + "nodeType": "YulAssignment", + "src": "47952:18:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47963:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47968:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47959:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "47959:11:34" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "47952:3:34" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "47729:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "47737:3:34", + "type": "" + } + ], + "src": "47578:398:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48170:191:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "48181:154:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "48331:3:34" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "48188:141:34" + }, + "nodeType": "YulFunctionCall", + "src": "48188:147:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "48181:3:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "48345:10:34", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "48352:3:34" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "48345:3:34" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "48157:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "48166:3:34", + "type": "" + } + ], + "src": "47982:379:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48493:206:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "48503:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48515:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48526:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "48511:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "48511:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "48503:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "48583:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48596:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48607:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "48592:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "48592:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "48539:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "48539:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "48539:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "48664:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48677:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48688:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "48673:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "48673:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "48620:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "48620:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "48620:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "48457:9:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "48469:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "48477:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "48488:4:34", + "type": "" + } + ], + "src": "48367:332:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48887:316:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "48897:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48909:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48920:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "48905:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "48905:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "48897:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "48991:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49004:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49015:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49000:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "49000:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "48933:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "48933:85:34" + }, + "nodeType": "YulExpressionStatement", + "src": "48933:85:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "49086:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49099:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49110:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49095:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "49095:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "49028:57:34" + }, + "nodeType": "YulFunctionCall", + "src": "49028:86:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49028:86:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "49168:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49181:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49192:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49177:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "49177:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "49124:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "49124:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49124:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "48843:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "48855:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "48863:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "48871:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "48882:4:34", + "type": "" + } + ], + "src": "48705:498:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49271:79:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "49281:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "49296:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "49290:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "49290:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49281:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49338:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "49312:25:34" + }, + "nodeType": "YulFunctionCall", + "src": "49312:32:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49312:32:34" + } + ] + }, + "name": "abi_decode_t_uint16_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "49249:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "49257:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "49265:5:34", + "type": "" + } + ], + "src": "49209:141:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49416:77:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "49426:22:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "49441:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "49435:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "49435:13:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49426:5:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49481:5:34" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "49457:23:34" + }, + "nodeType": "YulFunctionCall", + "src": "49457:30:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49457:30:34" + } + ] + }, + "name": "abi_decode_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "49394:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "49402:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "49410:5:34", + "type": "" + } + ], + "src": "49356:137:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49643:897:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "49687:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", + "nodeType": "YulIdentifier", + "src": "49689:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "49689:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49689:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "49664:3:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49669:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "49660:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "49660:19:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49681:4:34", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "49656:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "49656:30:34" + }, + "nodeType": "YulIf", + "src": "49653:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "49779:30:34", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49804:4:34", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "49788:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "49788:21:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49779:5:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "49819:163:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "49857:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49871:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "49861:6:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49897:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49904:4:34", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49893:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "49893:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49946:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "49957:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49942:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "49942:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "49966:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint16_fromMemory", + "nodeType": "YulIdentifier", + "src": "49911:30:34" + }, + "nodeType": "YulFunctionCall", + "src": "49911:59:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "49886:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "49886:85:34" + }, + "nodeType": "YulExpressionStatement", + "src": "49886:85:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "49992:180:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "50029:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50043:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "50033:6:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "50070:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50077:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50066:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50066:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50136:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "50147:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50132:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50132:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "50156:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBPair_$6187_fromMemory", + "nodeType": "YulIdentifier", + "src": "50084:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "50084:76:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "50059:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "50059:102:34" + }, + "nodeType": "YulExpressionStatement", + "src": "50059:102:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "50182:169:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "50227:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50241:2:34", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "50231:6:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "50268:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50275:4:34", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50264:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50264:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50315:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "50326:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50311:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50311:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "50335:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_bool_fromMemory", + "nodeType": "YulIdentifier", + "src": "50282:28:34" + }, + "nodeType": "YulFunctionCall", + "src": "50282:57:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "50257:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "50257:83:34" + }, + "nodeType": "YulExpressionStatement", + "src": "50257:83:34" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "50361:172:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "50409:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50423:2:34", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "50413:6:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "50450:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50457:4:34", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50446:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50446:16:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50497:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "50508:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50493:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50493:22:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "50517:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_bool_fromMemory", + "nodeType": "YulIdentifier", + "src": "50464:28:34" + }, + "nodeType": "YulFunctionCall", + "src": "50464:57:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "50439:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "50439:83:34" + }, + "nodeType": "YulExpressionStatement", + "src": "50439:83:34" + } + ] + } + ] + }, + "name": "abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "49618:9:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "49629:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "49637:5:34", + "type": "" + } + ], + "src": "49542:998:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "50658:310:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "50705:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "50707:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "50707:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "50707:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "50679:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50688:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "50675:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50675:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50700:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "50671:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50671:33:34" + }, + "nodeType": "YulIf", + "src": "50668:120:34" + }, + { + "nodeType": "YulBlock", + "src": "50798:163:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "50813:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50827:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "50817:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "50842:109:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50923:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "50934:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50919:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "50919:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "50943:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "50852:66:34" + }, + "nodeType": "YulFunctionCall", + "src": "50852:99:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "50842:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "50628:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "50639:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "50651:6:34", + "type": "" + } + ], + "src": "50546:422:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "51128:288:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "51138:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51150:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51161:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51146:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51146:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51138:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "51218:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51231:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51242:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51227:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51227:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "51174:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "51174:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "51174:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "51299:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51312:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51323:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51308:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51308:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "51255:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "51255:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "51255:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "51381:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51394:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51405:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51390:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51390:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "51337:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "51337:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "51337:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "51084:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "51096:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "51104:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "51112:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "51123:4:34", + "type": "" + } + ], + "src": "50974:442:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "51704:573:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "51714:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51726:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51737:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51722:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51722:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51714:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "51795:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51808:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51819:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51804:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51804:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "51751:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "51751:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "51751:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "51876:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51889:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51900:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51885:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51885:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "51832:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "51832:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "51832:72:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51925:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51936:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51921:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51921:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51945:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51951:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "51941:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "51941:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "51914:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "51914:48:34" + }, + "nodeType": "YulExpressionStatement", + "src": "51914:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "51971:116:34", + "value": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "52073:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52082:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "51979:93:34" + }, + "nodeType": "YulFunctionCall", + "src": "51979:108:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51971:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "52108:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52119:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52104:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "52104:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52128:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "52134:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "52124:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "52124:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "52097:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "52097:48:34" + }, + "nodeType": "YulExpressionStatement", + "src": "52097:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "52154:116:34", + "value": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "52256:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52265:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "52162:93:34" + }, + "nodeType": "YulFunctionCall", + "src": "52162:108:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52154:4:34" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "51652:9:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "51664:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "51672:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "51680:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "51688:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "51699:4:34", + "type": "" + } + ], + "src": "51422:855:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "52365:229:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "52470:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "52472:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "52472:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "52472:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "52442:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52450:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "52439:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "52439:30:34" + }, + "nodeType": "YulIf", + "src": "52436:56:34" + }, + { + "nodeType": "YulAssignment", + "src": "52502:25:34", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "52514:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52522:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "52510:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "52510:17:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "52502:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "52564:23:34", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "52576:4:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52582:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52572:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "52572:15:34" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "52564:4:34" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "52349:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "52360:4:34", + "type": "" + } + ], + "src": "52283:311:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "52730:619:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "52740:90:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "52822:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "52765:56:34" + }, + "nodeType": "YulFunctionCall", + "src": "52765:64:34" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "52749:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "52749:81:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "52740:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "52839:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "52850:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "52843:3:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "52872:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "52879:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "52865:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "52865:21:34" + }, + "nodeType": "YulExpressionStatement", + "src": "52865:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "52895:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "52906:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52913:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52902:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "52902:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "52895:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "52928:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "52946:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "52958:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52966:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "52954:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "52954:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52942:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "52942:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "52932:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "53000:103:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "53014:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "53014:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "53014:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "52987:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "52995:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "52984:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "52984:15:34" + }, + "nodeType": "YulIf", + "src": "52981:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "53188:155:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "53203:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "53221:3:34" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "53207:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "53245:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "53282:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "53294:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "53250:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "53250:48:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "53238:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "53238:61:34" + }, + "nodeType": "YulExpressionStatement", + "src": "53238:61:34" + }, + { + "nodeType": "YulAssignment", + "src": "53312:21:34", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "53323:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53328:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53319:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "53319:14:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "53312:3:34" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "53141:3:34" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "53146:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "53138:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "53138:15:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "53154:25:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "53156:21:34", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "53167:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53172:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53163:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "53163:14:34" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "53156:3:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "53116:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "53118:17:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "53129:6:34" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "53122:3:34", + "type": "" + } + ] + } + ] + }, + "src": "53112:231:34" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "52700:6:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "52708:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "52716:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "52724:5:34", + "type": "" + } + ], + "src": "52617:732:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "53460:297:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "53509:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "53511:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "53511:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "53511:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "53488:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53496:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53484:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "53484:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "53503:3:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "53480:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "53480:27:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "53473:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "53473:35:34" + }, + "nodeType": "YulIf", + "src": "53470:122:34" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "53601:27:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "53621:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "53615:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "53615:13:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "53605:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "53637:114:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "53724:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53732:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53720:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "53720:17:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "53739:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "53747:3:34" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "53646:73:34" + }, + "nodeType": "YulFunctionCall", + "src": "53646:105:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "53637:5:34" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "53438:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "53446:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "53454:5:34", + "type": "" + } + ], + "src": "53372:385:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "53865:452:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "53911:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "53913:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "53913:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "53913:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "53886:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "53895:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "53882:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "53882:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53907:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "53878:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "53878:32:34" + }, + "nodeType": "YulIf", + "src": "53875:119:34" + }, + { + "nodeType": "YulBlock", + "src": "54004:306:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "54019:38:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54043:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54054:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54039:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "54039:17:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "54033:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "54033:24:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "54023:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "54104:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "54106:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "54106:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "54106:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "54076:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54084:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "54073:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "54073:30:34" + }, + "nodeType": "YulIf", + "src": "54070:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "54201:99:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54272:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "54283:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54268:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "54268:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "54292:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "54211:56:34" + }, + "nodeType": "YulFunctionCall", + "src": "54211:89:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "54201:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "53835:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "53846:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "53858:6:34", + "type": "" + } + ], + "src": "53763:554:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "54366:190:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "54376:33:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "54403:5:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "54385:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "54385:24:34" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "54376:5:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "54499:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "54501:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "54501:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "54501:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "54424:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54431:66:34", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "54421:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "54421:77:34" + }, + "nodeType": "YulIf", + "src": "54418:103:34" + }, + { + "nodeType": "YulAssignment", + "src": "54530:20:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "54541:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54548:1:34", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54537:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "54537:13:34" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "54530:3:34" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "54352:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "54362:3:34", + "type": "" + } + ], + "src": "54323:233:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "54744:371:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "54754:27:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54766:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54777:3:34", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54762:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "54762:19:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "54754:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "54835:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54848:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54859:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54844:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "54844:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "54791:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "54791:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "54791:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "54916:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54929:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54940:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54925:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "54925:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "54872:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "54872:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "54872:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "54998:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "55011:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55022:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55007:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "55007:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "54954:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "54954:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "54954:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "55080:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "55093:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55104:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55089:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "55089:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "55036:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "55036:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "55036:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "54692:9:34", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "54704:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "54712:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "54720:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "54728:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "54739:4:34", + "type": "" + } + ], + "src": "54562:553:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55210:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55227:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55230:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "55220:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "55220:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "55220:12:34" + } + ] + }, + "name": "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad", + "nodeType": "YulFunctionDefinition", + "src": "55121:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55333:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55350:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55353:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "55343:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "55343:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "55343:12:34" + } + ] + }, + "name": "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a", + "nodeType": "YulFunctionDefinition", + "src": "55244:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55456:28:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55473:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55476:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "55466:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "55466:12:34" + }, + "nodeType": "YulExpressionStatement", + "src": "55466:12:34" + } + ] + }, + "name": "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e", + "nodeType": "YulFunctionDefinition", + "src": "55367:117:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55596:634:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "55606:51:34", + "value": { + "arguments": [ + { + "name": "ptr_to_tail", + "nodeType": "YulIdentifier", + "src": "55645:11:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "55632:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "55632:25:34" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "55610:18:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55751:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad", + "nodeType": "YulIdentifier", + "src": "55753:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "55753:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "55753:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "55680:18:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "55708:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "55708:14:34" + }, + { + "name": "base_ref", + "nodeType": "YulIdentifier", + "src": "55724:8:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "55704:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "55704:29:34" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55739:4:34", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55745:1:34", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "55735:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "55735:12:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "55700:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "55700:48:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "55676:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "55676:73:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "55669:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "55669:81:34" + }, + "nodeType": "YulIf", + "src": "55666:168:34" + }, + { + "nodeType": "YulAssignment", + "src": "55843:41:34", + "value": { + "arguments": [ + { + "name": "base_ref", + "nodeType": "YulIdentifier", + "src": "55855:8:34" + }, + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "55865:18:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55851:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "55851:33:34" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "55843:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "55894:28:34", + "value": { + "arguments": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "55917:4:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "55904:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "55904:18:34" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "55894:6:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55965:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a", + "nodeType": "YulIdentifier", + "src": "55967:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "55967:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "55967:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "55937:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55945:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "55934:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "55934:30:34" + }, + "nodeType": "YulIf", + "src": "55931:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "56057:21:34", + "value": { + "arguments": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56069:4:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56075:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56065:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56065:13:34" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56057:4:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56140:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e", + "nodeType": "YulIdentifier", + "src": "56142:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "56142:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "56142:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56094:4:34" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "56104:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "56104:14:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "56124:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56132:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "56120:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56120:17:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "56100:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56100:38:34" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "56090:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56090:49:34" + }, + "nodeType": "YulIf", + "src": "56087:136:34" + } + ] + }, + "name": "access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base_ref", + "nodeType": "YulTypedName", + "src": "55557:8:34", + "type": "" + }, + { + "name": "ptr_to_tail", + "nodeType": "YulTypedName", + "src": "55567:11:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "addr", + "nodeType": "YulTypedName", + "src": "55583:4:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "55589:6:34", + "type": "" + } + ], + "src": "55490:740:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56341:634:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "56351:51:34", + "value": { + "arguments": [ + { + "name": "ptr_to_tail", + "nodeType": "YulIdentifier", + "src": "56390:11:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "56377:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "56377:25:34" + }, + "variables": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulTypedName", + "src": "56355:18:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56496:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad", + "nodeType": "YulIdentifier", + "src": "56498:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "56498:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "56498:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "56425:18:34" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "56453:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "56453:14:34" + }, + { + "name": "base_ref", + "nodeType": "YulIdentifier", + "src": "56469:8:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "56449:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56449:29:34" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56484:4:34", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56490:1:34", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "56480:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56480:12:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "56445:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56445:48:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "56421:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56421:73:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "56414:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "56414:81:34" + }, + "nodeType": "YulIf", + "src": "56411:168:34" + }, + { + "nodeType": "YulAssignment", + "src": "56588:41:34", + "value": { + "arguments": [ + { + "name": "base_ref", + "nodeType": "YulIdentifier", + "src": "56600:8:34" + }, + { + "name": "rel_offset_of_tail", + "nodeType": "YulIdentifier", + "src": "56610:18:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56596:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56596:33:34" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56588:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "56639:28:34", + "value": { + "arguments": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56662:4:34" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "56649:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "56649:18:34" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "56639:6:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56710:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a", + "nodeType": "YulIdentifier", + "src": "56712:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "56712:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "56712:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "56682:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56690:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "56679:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "56679:30:34" + }, + "nodeType": "YulIf", + "src": "56676:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "56802:21:34", + "value": { + "arguments": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56814:4:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56820:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56810:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56810:13:34" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56802:4:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56885:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e", + "nodeType": "YulIdentifier", + "src": "56887:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "56887:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "56887:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "56839:4:34" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "56849:12:34" + }, + "nodeType": "YulFunctionCall", + "src": "56849:14:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "56869:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56877:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "56865:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56865:17:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "56845:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56845:38:34" + } + ], + "functionName": { + "name": "sgt", + "nodeType": "YulIdentifier", + "src": "56835:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "56835:49:34" + }, + "nodeType": "YulIf", + "src": "56832:136:34" + } + ] + }, + "name": "access_calldata_tail_t_array$_t_int256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base_ref", + "nodeType": "YulTypedName", + "src": "56302:8:34", + "type": "" + }, + { + "name": "ptr_to_tail", + "nodeType": "YulTypedName", + "src": "56312:11:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "addr", + "nodeType": "YulTypedName", + "src": "56328:4:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "56334:6:34", + "type": "" + } + ], + "src": "56236:739:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57135:288:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57145:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57157:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57168:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57153:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57153:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "57145:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "57225:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57238:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57249:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57234:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57234:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "57181:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "57181:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "57181:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "57306:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57319:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57330:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57315:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57315:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "57262:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "57262:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "57262:72:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "57388:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57401:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57412:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57397:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57397:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "57344:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "57344:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "57344:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "57091:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "57103:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "57111:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "57119:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "57130:4:34", + "type": "" + } + ], + "src": "56981:442:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57473:32:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57483:16:34", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "57494:5:34" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "57483:7:34" + } + ] + } + ] + }, + "name": "cleanup_t_int256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "57455:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "57465:7:34", + "type": "" + } + ], + "src": "57429:76:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57574:52:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "57591:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "57613:5:34" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "57596:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "57596:23:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "57584:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "57584:36:34" + }, + "nodeType": "YulExpressionStatement", + "src": "57584:36:34" + } + ] + }, + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "57562:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "57569:3:34", + "type": "" + } + ], + "src": "57511:115:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57728:122:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57738:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57750:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57761:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57746:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57746:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "57738:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "57816:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57829:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57840:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57825:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57825:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nodeType": "YulIdentifier", + "src": "57774:41:34" + }, + "nodeType": "YulFunctionCall", + "src": "57774:69:34" + }, + "nodeType": "YulExpressionStatement", + "src": "57774:69:34" + } + ] + }, + "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "57700:9:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "57712:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "57723:4:34", + "type": "" + } + ], + "src": "57632:218:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57922:263:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "57968:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "57970:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "57970:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "57970:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "57943:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57952:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "57939:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57939:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57964:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "57935:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "57935:32:34" + }, + "nodeType": "YulIf", + "src": "57932:119:34" + }, + { + "nodeType": "YulBlock", + "src": "58061:117:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "58076:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58090:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "58080:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "58105:63:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "58140:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "58151:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58136:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "58136:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "58160:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "58115:20:34" + }, + "nodeType": "YulFunctionCall", + "src": "58115:53:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "58105:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "57892:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "57903:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "57915:6:34", + "type": "" + } + ], + "src": "57856:329:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58265:40:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "58276:22:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "58292:5:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "58286:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "58286:12:34" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "58276:6:34" + } + ] + } + ] + }, + "name": "array_length_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "58248:5:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "58258:6:34", + "type": "" + } + ], + "src": "58191:114:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58422:73:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "58439:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "58444:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "58432:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "58432:19:34" + }, + "nodeType": "YulExpressionStatement", + "src": "58432:19:34" + }, + { + "nodeType": "YulAssignment", + "src": "58460:29:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "58479:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58484:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58475:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "58475:14:34" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "58460:11:34" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "58394:3:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "58399:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "58410:11:34", + "type": "" + } + ], + "src": "58311:184:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58573:60:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "58583:11:34", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "58591:3:34" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "58583:4:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "58604:22:34", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "58616:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58621:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58612:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "58612:14:34" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "58604:4:34" + } + ] + } + ] + }, + "name": "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "58560:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "58568:4:34", + "type": "" + } + ], + "src": "58501:132:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58694:53:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "58711:3:34" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "58734:5:34" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "58716:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "58716:24:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "58704:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "58704:37:34" + }, + "nodeType": "YulExpressionStatement", + "src": "58704:37:34" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "58682:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "58689:3:34", + "type": "" + } + ], + "src": "58639:108:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58833:99:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "58877:6:34" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "58885:3:34" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulIdentifier", + "src": "58843:33:34" + }, + "nodeType": "YulFunctionCall", + "src": "58843:46:34" + }, + "nodeType": "YulExpressionStatement", + "src": "58843:46:34" + }, + { + "nodeType": "YulAssignment", + "src": "58898:28:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "58916:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58921:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58912:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "58912:14:34" + }, + "variableNames": [ + { + "name": "updatedPos", + "nodeType": "YulIdentifier", + "src": "58898:10:34" + } + ] + } + ] + }, + "name": "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "58806:6:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "58814:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updatedPos", + "nodeType": "YulTypedName", + "src": "58822:10:34", + "type": "" + } + ], + "src": "58753:179:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "59013:38:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "59023:22:34", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "59035:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59040:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "59031:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "59031:14:34" + }, + "variableNames": [ + { + "name": "next", + "nodeType": "YulIdentifier", + "src": "59023:4:34" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "59000:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nodeType": "YulTypedName", + "src": "59008:4:34", + "type": "" + } + ], + "src": "58938:113:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "59211:608:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "59221:68:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "59283:5:34" + } + ], + "functionName": { + "name": "array_length_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "59235:47:34" + }, + "nodeType": "YulFunctionCall", + "src": "59235:54:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "59225:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "59298:93:34", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59379:3:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "59384:6:34" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "59305:73:34" + }, + "nodeType": "YulFunctionCall", + "src": "59305:86:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59298:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "59400:71:34", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "59465:5:34" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "59415:49:34" + }, + "nodeType": "YulFunctionCall", + "src": "59415:56:34" + }, + "variables": [ + { + "name": "baseRef", + "nodeType": "YulTypedName", + "src": "59404:7:34", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "59480:21:34", + "value": { + "name": "baseRef", + "nodeType": "YulIdentifier", + "src": "59494:7:34" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "59484:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "59570:224:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "59584:34:34", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "59611:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "59605:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "59605:13:34" + }, + "variables": [ + { + "name": "elementValue0", + "nodeType": "YulTypedName", + "src": "59588:13:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "59631:70:34", + "value": { + "arguments": [ + { + "name": "elementValue0", + "nodeType": "YulIdentifier", + "src": "59682:13:34" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59697:3:34" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_bytes32_to_t_bytes32", + "nodeType": "YulIdentifier", + "src": "59638:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "59638:63:34" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59631:3:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "59714:70:34", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "59777:6:34" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "59724:52:34" + }, + "nodeType": "YulFunctionCall", + "src": "59724:60:34" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "59714:6:34" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "59532:1:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "59535:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "59529:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "59529:13:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "59543:18:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "59545:14:34", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "59554:1:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59557:1:34", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "59550:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "59550:9:34" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "59545:1:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "59514:14:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "59516:10:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59525:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "59520:1:34", + "type": "" + } + ] + } + ] + }, + "src": "59510:284:34" + }, + { + "nodeType": "YulAssignment", + "src": "59803:10:34", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59810:3:34" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "59803:3:34" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "59190:5:34", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "59197:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "59206:3:34", + "type": "" + } + ], + "src": "59087:732:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "60029:389:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "60039:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "60051:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60062:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60047:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60047:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "60039:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "60119:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "60132:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60143:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60128:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60128:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "60075:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "60075:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "60075:71:34" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "60167:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60178:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60163:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60163:18:34" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "60187:4:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "60193:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "60183:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60183:20:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "60156:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "60156:48:34" + }, + "nodeType": "YulExpressionStatement", + "src": "60156:48:34" + }, + { + "nodeType": "YulAssignment", + "src": "60213:116:34", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "60315:6:34" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "60324:4:34" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "60221:93:34" + }, + "nodeType": "YulFunctionCall", + "src": "60221:108:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "60213:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "60383:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "60396:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60407:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60392:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60392:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "60339:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "60339:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "60339:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__to_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "59985:9:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "59997:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "60005:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "60013:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "60024:4:34", + "type": "" + } + ], + "src": "59825:593:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "60554:619:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "60564:90:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "60646:6:34" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "60589:56:34" + }, + "nodeType": "YulFunctionCall", + "src": "60589:64:34" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "60573:15:34" + }, + "nodeType": "YulFunctionCall", + "src": "60573:81:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "60564:5:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "60663:16:34", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "60674:5:34" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "60667:3:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "60696:5:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "60703:6:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "60689:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "60689:21:34" + }, + "nodeType": "YulExpressionStatement", + "src": "60689:21:34" + }, + { + "nodeType": "YulAssignment", + "src": "60719:23:34", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "60730:5:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60737:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60726:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60726:16:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "60719:3:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "60752:44:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "60770:6:34" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "60782:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60790:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "60778:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60778:17:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60766:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60766:30:34" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "60756:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "60824:103:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "60838:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "60838:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "60838:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "60811:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "60819:3:34" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "60808:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "60808:15:34" + }, + "nodeType": "YulIf", + "src": "60805:122:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "61012:155:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "61027:21:34", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "61045:3:34" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "61031:10:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "61069:3:34" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "61106:10:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "61118:3:34" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "61074:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "61074:48:34" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "61062:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "61062:61:34" + }, + "nodeType": "YulExpressionStatement", + "src": "61062:61:34" + }, + { + "nodeType": "YulAssignment", + "src": "61136:21:34", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "61147:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61152:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61143:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "61143:14:34" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "61136:3:34" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "60965:3:34" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "60970:6:34" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "60962:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "60962:15:34" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "60978:25:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "60980:21:34", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "60991:3:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60996:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60987:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "60987:14:34" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "60980:3:34" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "60940:21:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "60942:17:34", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "60953:6:34" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "60946:3:34", + "type": "" + } + ] + } + ] + }, + "src": "60936:231:34" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "60524:6:34", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "60532:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "60540:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "60548:5:34", + "type": "" + } + ], + "src": "60441:732:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "61284:297:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "61333:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "61335:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "61335:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "61335:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "61312:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61320:4:34", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61308:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "61308:17:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "61327:3:34" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "61304:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "61304:27:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "61297:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "61297:35:34" + }, + "nodeType": "YulIf", + "src": "61294:122:34" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "61425:27:34", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "61445:6:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "61439:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "61439:13:34" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "61429:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "61461:114:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "61548:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61556:4:34", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61544:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "61544:17:34" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "61563:6:34" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "61571:3:34" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "61470:73:34" + }, + "nodeType": "YulFunctionCall", + "src": "61470:105:34" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "61461:5:34" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "61262:6:34", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "61270:3:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "61278:5:34", + "type": "" + } + ], + "src": "61196:385:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "61723:730:34", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "61769:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "61771:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "61771:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "61771:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "61744:7:34" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "61753:9:34" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "61740:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "61740:23:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61765:2:34", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "61736:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "61736:32:34" + }, + "nodeType": "YulIf", + "src": "61733:119:34" + }, + { + "nodeType": "YulBlock", + "src": "61862:128:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "61877:15:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61891:1:34", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "61881:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "61906:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "61952:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "61963:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61948:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "61948:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "61972:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "61916:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "61916:64:34" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "61906:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "62000:129:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "62015:16:34", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "62029:2:34", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "62019:6:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "62045:74:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "62091:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "62102:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "62087:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "62087:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "62111:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "62055:31:34" + }, + "nodeType": "YulFunctionCall", + "src": "62055:64:34" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "62045:6:34" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "62139:307:34", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "62154:39:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "62178:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "62189:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "62174:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "62174:18:34" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "62168:5:34" + }, + "nodeType": "YulFunctionCall", + "src": "62168:25:34" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "62158:6:34", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "62240:83:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "62242:77:34" + }, + "nodeType": "YulFunctionCall", + "src": "62242:79:34" + }, + "nodeType": "YulExpressionStatement", + "src": "62242:79:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "62212:6:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "62220:18:34", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "62209:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "62209:30:34" + }, + "nodeType": "YulIf", + "src": "62206:117:34" + }, + { + "nodeType": "YulAssignment", + "src": "62337:99:34", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "62408:9:34" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "62419:6:34" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "62404:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "62404:22:34" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "62428:7:34" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "62347:56:34" + }, + "nodeType": "YulFunctionCall", + "src": "62347:89:34" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "62337:6:34" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_bytes32t_array$_t_uint256_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "61677:9:34", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "61688:7:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "61700:6:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "61708:6:34", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "61716:6:34", + "type": "" + } + ], + "src": "61587:866:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "62585:206:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62595:26:34", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "62607:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "62618:2:34", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "62603:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "62603:18:34" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "62595:4:34" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "62675:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "62688:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "62699:1:34", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "62684:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "62684:17:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "62631:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "62631:71:34" + }, + "nodeType": "YulExpressionStatement", + "src": "62631:71:34" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "62756:6:34" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "62769:9:34" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "62780:2:34", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "62765:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "62765:18:34" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "62712:43:34" + }, + "nodeType": "YulFunctionCall", + "src": "62712:72:34" + }, + "nodeType": "YulExpressionStatement", + "src": "62712:72:34" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "62549:9:34", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "62561:6:34", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "62569:6:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "62580:4:34", + "type": "" + } + ], + "src": "62459:332:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "62845:362:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62855:25:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "62878:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "62860:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "62860:20:34" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "62855:1:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "62889:25:34", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "62912:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "62894:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "62894:20:34" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "62889:1:34" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "62923:28:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "62946:1:34" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "62949:1:34" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "62942:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "62942:9:34" + }, + "variables": [ + { + "name": "product_raw", + "nodeType": "YulTypedName", + "src": "62927:11:34", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "62960:41:34", + "value": { + "arguments": [ + { + "name": "product_raw", + "nodeType": "YulIdentifier", + "src": "62989:11:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "62971:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "62971:30:34" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "62960:7:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63178:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "63180:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "63180:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "63180:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "63111:1:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "63104:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "63104:9:34" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "63134:1:34" + }, + { + "arguments": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "63141:7:34" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "63150:1:34" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "63137:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "63137:15:34" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "63131:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "63131:22:34" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "63084:2:34" + }, + "nodeType": "YulFunctionCall", + "src": "63084:83:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "63064:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "63064:113:34" + }, + "nodeType": "YulIf", + "src": "63061:139:34" + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "62828:1:34", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "62831:1:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "62837:7:34", + "type": "" + } + ], + "src": "62797:410:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63241:152:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63258:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63261:77:34", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "63251:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "63251:88:34" + }, + "nodeType": "YulExpressionStatement", + "src": "63251:88:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63355:1:34", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63358:4:34", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "63348:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "63348:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "63348:15:34" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63379:1:34", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63382:4:34", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "63372:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "63372:15:34" + }, + "nodeType": "YulExpressionStatement", + "src": "63372:15:34" + } + ] + }, + "name": "panic_error_0x12", + "nodeType": "YulFunctionDefinition", + "src": "63213:180:34" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63441:143:34", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "63451:25:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "63474:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "63456:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "63456:20:34" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "63451:1:34" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "63485:25:34", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "63508:1:34" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "63490:17:34" + }, + "nodeType": "YulFunctionCall", + "src": "63490:20:34" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "63485:1:34" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63532:22:34", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "63534:16:34" + }, + "nodeType": "YulFunctionCall", + "src": "63534:18:34" + }, + "nodeType": "YulExpressionStatement", + "src": "63534:18:34" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "63529:1:34" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "63522:6:34" + }, + "nodeType": "YulFunctionCall", + "src": "63522:9:34" + }, + "nodeType": "YulIf", + "src": "63519:35:34" + }, + { + "nodeType": "YulAssignment", + "src": "63564:14:34", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "63573:1:34" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "63576:1:34" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "63569:3:34" + }, + "nodeType": "YulFunctionCall", + "src": "63569:9:34" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "63564:1:34" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "63430:1:34", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "63433:1:34", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "63439:1:34", + "type": "" + } + ], + "src": "63399:185:34" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function validator_revert_t_enum$_Version_$6322(value) {\n if iszero(lt(value, 2)) { revert(0, 0) }\n }\n\n function abi_decode_t_enum$_Version_$6322(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_enum$_Version_$6322(value)\n }\n\n // enum ILBRouter.Version[]\n function abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_enum$_Version_$6322(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // enum ILBRouter.Version[]\n function abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC20_$479(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$479(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$479(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$479(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC20_$479(value)\n }\n\n // contract IERC20[]\n function abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_contract$_IERC20_$479(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // contract IERC20[]\n function abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n // struct ILBRouter.Path\n function abi_decode_t_struct$_Path_$6372_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x60) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x60)\n\n {\n // pairBinSteps\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x00), abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // versions\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x20), abi_decode_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // tokenPath\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x40), abi_decode_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_struct$_Path_$6372_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_struct$_Path_$6372_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_uint256t_uint256t_struct$_Path_$6372_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_struct$_Path_$6372_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint24(value) -> cleaned {\n cleaned := and(value, 0xffffff)\n }\n\n function validator_revert_t_uint24(value) {\n if iszero(eq(value, cleanup_t_uint24(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint24(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint24(value)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint24t_uint16(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ILBPair_$6187_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$6187_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$6187__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBPair_$6187_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_contract$_IWNATIVE_$7175_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IWNATIVE_$7175_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IWNATIVE_$7175__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IWNATIVE_$7175_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7 {\n if slt(sub(dataEnd, headStart), 256) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function convert_t_contract$_ILBFactory_$4236_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBFactory_$4236_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBFactory_$4236__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBFactory_$4236_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() {\n revert(0, 0)\n }\n\n // struct ILBRouter.LiquidityParameters\n function abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr(offset, end) -> value {\n if slt(sub(end, offset), 480) { revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() }\n value := offset\n }\n\n function abi_decode_tuple_t_struct$_LiquidityParameters_$6359_calldata_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_struct$_LiquidityParameters_$6359_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_uint256_t_uint256_t_uint256_t_uint256_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value4, tail)\n\n mstore(add(headStart, 160), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value5, tail)\n\n }\n\n function cleanup_t_contract$_ILBPair_$6187(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBPair_$6187(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBPair_$6187(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBPair_$6187(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBPair_$6187(value)\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint128(value) {\n if iszero(eq(value, cleanup_t_uint128(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint128(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint128(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187t_uint128t_bool(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128_t_uint128__to_t_uint128_t_uint128_t_uint128__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value2, add(headStart, 64))\n\n }\n\n function convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ISovrynLBFactoryV1_$6916__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ISovrynLBFactoryV1_$6916_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479t_contract$_IERC20_$479t_uint16t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 192))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value6 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187t_uint24(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ILBToken_$6842(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBToken_$6842(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBToken_$6842(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBToken_$6842(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBToken_$6842(value)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_contract$_ILBToken_$6842t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBToken_$6842(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2, value3 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint24_to_t_uint24_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_IERC20_$479_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$479_to_t_address(value))\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint24_t_uint16__to_t_address_t_address_t_uint24_t_uint16__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_t_contract$_ILBPair_$6187_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ILBPair_$6187(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$6187_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$6187_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint64(value) -> converted {\n converted := cleanup_t_uint64(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint64(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_contract$_IERC20_$479_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_IERC20_$479(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$479(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$479(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_uint128_t_bool__to_t_uint128_t_bool__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bool_to_t_bool_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_uint128_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint128(value)\n }\n\n function abi_decode_tuple_t_uint128t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint128_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, value3, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value4, value5, tail)\n\n }\n\n function abi_decode_t_uint24_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint24(value)\n }\n\n function abi_decode_tuple_t_uint24_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint24_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint112(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint112(value) {\n if iszero(eq(value, cleanup_t_uint112(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint112_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint112(value)\n }\n\n function cleanup_t_uint32(value) -> cleaned {\n cleaned := and(value, 0xffffffff)\n }\n\n function validator_revert_t_uint32(value) {\n if iszero(eq(value, cleanup_t_uint32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint32(value)\n }\n\n function abi_decode_tuple_t_uint112t_uint112t_uint32_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint112_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint112_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_0_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_t_rational_0_by_1_t_uint256_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_rational_0_by_1_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bool_t_address__to_t_bool_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$479_t_contract$_IERC20_$479_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$479_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_uint16_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint16(value)\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n // struct ILBFactory.LBPairInformation\n function abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory(headStart, end) -> value {\n if slt(sub(end, headStart), 0x80) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x80)\n\n {\n // binStep\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_uint16_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // LBPair\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_contract$_ILBPair_$6187_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // createdByOwner\n\n let offset := 64\n\n mstore(add(value, 0x40), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n {\n // ignoredForRouting\n\n let offset := 96\n\n mstore(add(value, 0x60), abi_decode_t_bool_fromMemory(add(headStart, offset), end))\n\n }\n\n }\n\n function abi_decode_tuple_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_struct$_LBPairInformation_$3881_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value3, tail)\n\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() {\n revert(0, 0)\n }\n\n function revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() {\n revert(0, 0)\n }\n\n function revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() {\n revert(0, 0)\n }\n\n function access_calldata_tail_t_array$_t_uint256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n addr := add(base_ref, rel_offset_of_tail)\n\n length := calldataload(addr)\n if gt(length, 0xffffffffffffffff) { revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() }\n addr := add(addr, 32)\n if sgt(addr, sub(calldatasize(), mul(length, 0x20))) { revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() }\n\n }\n\n function access_calldata_tail_t_array$_t_int256_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n addr := add(base_ref, rel_offset_of_tail)\n\n length := calldataload(addr)\n if gt(length, 0xffffffffffffffff) { revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() }\n addr := add(addr, 32)\n if sgt(addr, sub(calldatasize(), mul(length, 0x20))) { revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() }\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_int256_to_t_int256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_bytes32_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(value0, pos) -> updatedPos {\n abi_encode_t_bytes32_to_t_bytes32(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes32[] -> bytes32[]\n function abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_bytes32_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__to_t_address_t_array$_t_bytes32_$dyn_memory_ptr_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes32t_bytes32t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n}\n", + "id": 34, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "585": [ + { + "length": 32, + "start": 5344 + }, + { + "length": 32, + "start": 5918 + }, + { + "length": 32, + "start": 6914 + }, + { + "length": 32, + "start": 11482 + }, + { + "length": 32, + "start": 17287 + } + ], + "589": [ + { + "length": 32, + "start": 10143 + }, + { + "length": 32, + "start": 19562 + } + ], + "593": [ + { + "length": 32, + "start": 341 + }, + { + "length": 32, + "start": 1944 + }, + { + "length": 32, + "start": 2182 + }, + { + "length": 32, + "start": 2425 + }, + { + "length": 32, + "start": 2872 + }, + { + "length": 32, + "start": 4073 + }, + { + "length": 32, + "start": 6088 + }, + { + "length": 32, + "start": 6580 + }, + { + "length": 32, + "start": 6757 + }, + { + "length": 32, + "start": 7238 + }, + { + "length": 32, + "start": 7403 + }, + { + "length": 32, + "start": 8620 + }, + { + "length": 32, + "start": 9772 + }, + { + "length": 32, + "start": 10822 + }, + { + "length": 32, + "start": 13617 + }, + { + "length": 32, + "start": 14714 + }, + { + "length": 32, + "start": 14844 + } + ] + }, + "linkReferences": {}, + "object": "60806040526004361061014e575f3560e01c806392fe8e70116100b5578063bb558a9f1161006e578063bb558a9f146105a3578063c22159b6146105cd578063d0e380f21461060a578063e038e6dc14610646578063e9361c0814610676578063f96fe9251461069e576101da565b806392fe8e701461043e578063964f987c1461047a5780639ab6156b146104b8578063a0d376cf146104f4578063a3c7271a14610532578063b066ea7c14610573576101da565b8063659ac74b11610107578063659ac74b146103265780636c9c0078146103625780638129fc1c1461038c57806381c2fdfb146103a257806388cc58e4146103df5780638efc2b2c14610409576101da565b80631a24f9a9146101de5780632075ad221461021a5780632a443fae1461024a5780633dc8f8ec146102865780634b801870146102c257806362c06767146102fe576101da565b366101da577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d8576040517f6c8cb79300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f80fd5b3480156101e9575f80fd5b5061020460048036038101906101ff919061564c565b6106da565b60405161021191906156ee565b60405180910390f35b610234600480360381019061022f9190615731565b610a79565b6040516102419190615868565b60405180910390f35b348015610255575f80fd5b50610270600480360381019061026b9190615888565b610da7565b60405161027d91906156ee565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a7919061564c565b610f2a565b6040516102b99190615868565b60405180910390f35b3480156102cd575f80fd5b506102e860048036038101906102e39190615888565b611239565b6040516102f591906156ee565b60405180910390f35b348015610309575f80fd5b50610324600480360381019061031f919061591b565b6114de565b005b348015610331575f80fd5b5061034c600480360381019061034791906159da565b61171b565b6040516103599190615a99565b60405180910390f35b34801561036d575f80fd5b506103766117c5565b6040516103839190615ad2565b60405180910390f35b348015610397575f80fd5b506103a06117ec565b005b3480156103ad575f80fd5b506103c860048036038101906103c39190615aeb565b611963565b6040516103d6929190615bd4565b60405180910390f35b3480156103ea575f80fd5b506103f3611aff565b6040516104009190615c1b565b60405180910390f35b610423600480360381019061041e9190615c57565b611b26565b60405161043596959493929190615c9e565b60405180910390f35b348015610449575f80fd5b50610464600480360381019061045f9190615888565b611e2b565b6040516104719190615868565b60405180910390f35b348015610485575f80fd5b506104a0600480360381019061049b9190615dc0565b61205c565b6040516104af93929190615e1f565b60405180910390f35b3480156104c3575f80fd5b506104de60048036038101906104d9919061564c565b6120ee565b6040516104eb91906156ee565b60405180910390f35b3480156104ff575f80fd5b5061051a60048036038101906105159190615dc0565b61234f565b60405161052993929190615e1f565b60405180910390f35b34801561053d575f80fd5b5061055860048036038101906105539190615c57565b6123e1565b60405161056a96959493929190615c9e565b60405180910390f35b61058d60048036038101906105889190615731565b61256e565b60405161059a91906156ee565b60405180910390f35b3480156105ae575f80fd5b506105b761279c565b6040516105c49190615e74565b60405180910390f35b3480156105d8575f80fd5b506105f360048036038101906105ee9190615e8d565b6127c3565b604051610601929190615bd4565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b9190615f89565b612907565b60405161063d91906156ee565b60405180910390f35b610660600480360381019061065b9190615731565b612988565b60405161066d91906156ee565b60405180910390f35b348015610681575f80fd5b5061069c6004803603810190610697919061605b565b612cd8565b005b3480156106a9575f80fd5b506106c460048036038101906106bf91906160fe565b612e41565b6040516106d1919061614b565b60405180910390f35b5f81804211156107235780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161071a929190615bd4565b60405180910390fd5b845f815f015151148061073f5750805f01515181602001515114155b8061075f57508060400151516001825f01515161075c9190616191565b14155b15610796576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106107e8576107e76161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461086a578560400151865f01515181518110610826576108256161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016108619190616200565b60405180910390fd5b5f610881875f015188602001518960400151612ec2565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dd9190616200565b602060405180830381865afa1580156108f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091c919061622d565b905061096288604001515f81518110610938576109376161c4565b5b602002602001015133845f81518110610954576109536161c4565b5b60200260200101518d612fff565b6109768289602001518a604001513061303b565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109d09190616200565b602060405180830381865afa1580156109eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f919061622d565b610a199190616258565b945084891115610a625788856040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610a59929190615bd4565b60405180910390fd5b610a6c8786613527565b5050505095945050505050565b60608180421115610ac35780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610aba929190615bd4565b60405180910390fd5b845f815f0151511480610adf5750805f01515181602001515114155b80610aff57508060400151516001825f015151610afc9190616191565b14155b15610b36576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110610b8457610b836161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c025785604001515f81518110610bbe57610bbd6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401610bf99190616200565b60405180910390fd5b5f610c19875f015188602001518960400151612ec2565b9050610c2f87602001518289604001518b6135c4565b935034845f81518110610c4557610c446161c4565b5b60200260200101511115610cac5734845f81518110610c6757610c666161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401610ca3929190615bd4565b60405180910390fd5b610cea815f81518110610cc257610cc16161c4565b5b6020026020010151855f81518110610cdd57610cdc6161c4565b5b6020026020010151613970565b5f610d008289602001518a60400151888b613a45565b905088811015610d495788816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610d40929190615bd4565b60405180910390fd5b845f81518110610d5c57610d5b6161c4565b5b6020026020010151341115610d9b57610d9a33865f81518110610d8257610d816161c4565b5b602002602001015134610d959190616258565b613ddb565b5b50505050949350505050565b5f8180421115610df05780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610de7929190615bd4565b60405180910390fd5b845f815f0151511480610e0c5750805f01515181602001515114155b80610e2c57508060400151516001825f015151610e299190616191565b14155b15610e63576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e7a875f015188602001518960400151612ec2565b9050610ec087604001515f81518110610e9657610e956161c4565b5b602002602001015133835f81518110610eb257610eb16161c4565b5b60200260200101518c612fff565b610ed5898289602001518a604001518a613e95565b935083881115610f1e5787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401610f15929190615bd4565b60405180910390fd5b50505095945050505050565b60608180421115610f745780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401610f6b929190615bd4565b60405180910390fd5b845f815f0151511480610f905750805f01515181602001515114155b80610fb057508060400151516001825f015151610fad9190616191565b14155b15610fe7576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f01515181518110611039576110386161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146110bb578560400151865f01515181518110611077576110766161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016110b29190616200565b60405180910390fd5b5f6110d2875f015188602001518960400151612ec2565b90506110e887602001518289604001518c6135c4565b935087845f815181106110fe576110fd6161c4565b5b602002602001015111156111655787845f815181106111205761111f6161c4565b5b60200260200101516040517fca7710c800000000000000000000000000000000000000000000000000000000815260040161115c929190615bd4565b60405180910390fd5b6111c387604001515f8151811061117f5761117e6161c4565b5b602002602001015133835f8151811061119b5761119a6161c4565b5b6020026020010151875f815181106111b6576111b56161c4565b5b6020026020010151612fff565b5f6111d98289602001518a604001518830613a45565b9050898110156112225789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401611219929190615bd4565b60405180910390fd5b61122c8782613527565b5050505095945050505050565b5f81804211156112825780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611279929190615bd4565b60405180910390fd5b845f815f015151148061129e5750805f01515181602001515114155b806112be57508060400151516001825f0151516112bb9190616191565b14155b156112f5576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61130c875f015188602001518960400151612ec2565b90505f8760400151825181518110611327576113266161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b815260040161136b9190616200565b602060405180830381865afa158015611386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113aa919061622d565b90506113f089604001515f815181106113c6576113c56161c4565b5b602002602001015133855f815181106113e2576113e16161c4565b5b60200260200101518e612fff565b611404838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b815260040161143e9190616200565b602060405180830381865afa158015611459573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147d919061622d565b6114879190616258565b9550858a11156114d05789866040517f4feac00c0000000000000000000000000000000000000000000000000000000081526004016114c7929190615bd4565b60405180910390fd5b505050505095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611547573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156b919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cf576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611642577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461162f5780611631565b475b905061163d8282613ddb565b611716565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461166f57806116e8565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116a89190616200565b602060405180830381865afa1580156116c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e7919061622d565b5b905061171582828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663659ac74b868686866040518563ffffffff1660e01b815260040161177b94939291906162f9565b6020604051808303815f875af1158015611797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bb9190616350565b9050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f6117f561435d565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff1614801561183d5750825b90505f60018367ffffffffffffffff1614801561187057505f3073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801561187e575080155b156118b5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611902576001855f0160086101000a81548160ff0219169083151502179055505b831561195c575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161195391906163c7565b60405180910390a15b5050505050565b5f8082804211156119ad5780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016119a4929190615bd4565b60405180910390fd5b5f6119dd8c7f00000000000000000000000000000000000000000000000000000000000000008d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614905080611aad57898b809b50819c5050505b5f80611abd848e8e8e8e306144a2565b9150915082611acd578082611ad0565b81815b8097508198505050505050611ae68c878661462b565b611af08684613527565b50509850989650505050505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f805f806060805f611b60885f016020810190611b43919061641f565b896020016020810190611b56919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcf91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f016020810190611bf7919061641f565b73ffffffffffffffffffffffffffffffffffffffff1614611c44576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16885f016020810190611c8d919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611cb35750348860600135145b15611ce957611cda886020016020810190611cce919061641f565b33838b60800135612fff565b611ce48134613970565b611dff565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16886020016020810190611d33919061641f565b73ffffffffffffffffffffffffffffffffffffffff16148015611d595750348860800135145b15611d8e57611d7f885f016020810190611d73919061641f565b33838b60600135612fff565b611d898134613970565b611dfe565b875f016020810190611da0919061641f565b886020016020810190611db3919061641f565b89606001358a60800135346040517fd0a4f13b000000000000000000000000000000000000000000000000000000008152600401611df595949392919061644a565b60405180910390fd5b5b611e098882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b60608180421115611e755780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401611e6c929190615bd4565b60405180910390fd5b845f815f0151511480611e915750805f01515181602001515114155b80611eb157508060400151516001825f015151611eae9190616191565b14155b15611ee8576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611eff875f015188602001518960400151612ec2565b9050611f1587602001518289604001518c6135c4565b935087845f81518110611f2b57611f2a6161c4565b5b60200260200101511115611f925787845f81518110611f4d57611f4c6161c4565b5b60200260200101516040517fca7710c8000000000000000000000000000000000000000000000000000000008152600401611f89929190615bd4565b60405180910390fd5b611ff087604001515f81518110611fac57611fab6161c4565b5b602002602001015133835f81518110611fc857611fc76161c4565b5b6020026020010151875f81518110611fe357611fe26161c4565b5b6020026020010151612fff565b5f6120068289602001518a60400151888b613a45565b90508981101561204f5789816040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612046929190615bd4565b60405180910390fd5b5050505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663abcd783086866040518363ffffffff1660e01b815260040161209a9291906164aa565b606060405180830381865afa1580156120b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120d991906164e5565b80935081945082955050505093509350939050565b5f81804211156121375780426040517fdae7ca7d00000000000000000000000000000000000000000000000000000000815260040161212e929190615bd4565b60405180910390fd5b845f815f01515114806121535750805f01515181602001515114155b8061217357508060400151516001825f0151516121709190616191565b14155b156121aa576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660400151875f015151815181106121fc576121fb6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461227e578560400151865f0151518151811061223a576122396161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016122759190616200565b60405180910390fd5b5f612295875f015188602001518960400151612ec2565b90506122db87604001515f815181106122b1576122b06161c4565b5b602002602001015133835f815181106122cd576122cc6161c4565b5b60200260200101518c612fff565b6122f0898289602001518a6040015130613e95565b9350838811156123395787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612330929190615bd4565b60405180910390fd5b6123438685613527565b50505095945050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1663e77366f886866040518363ffffffff1660e01b815260040161238d9291906164aa565b606060405180830381865afa1580156123a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cc91906164e5565b80935081945082955050505093509350939050565b5f805f806060805f61241b885f0160208101906123fe919061641f565b896020016020810190612411919061641f565b8a60400135614384565b90508073ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a91906163f4565b73ffffffffffffffffffffffffffffffffffffffff16885f0160208101906124b2919061641f565b73ffffffffffffffffffffffffffffffffffffffff16146124ff576040517fb33f8ab900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612520885f016020810190612514919061641f565b33838b60600135612fff565b612542886020016020810190612536919061641f565b33838b60800135612fff565b61254c8882614664565b809750819850829950839a50849b50859c505050505050505091939550919395565b5f81804211156125b75780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016125ae929190615bd4565b60405180910390fd5b845f815f01515114806125d35750805f01515181602001515114155b806125f357508060400151516001825f0151516125f09190616191565b14155b1561262a576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612678576126776161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146126f65785604001515f815181106126b2576126b16161c4565b5b60200260200101516040517fcfec0e010000000000000000000000000000000000000000000000000000000081526004016126ed9190616200565b60405180910390fd5b5f61270d875f015188602001518960400151612ec2565b9050612733815f81518110612725576127246161c4565b5b602002602001015134613970565b612748348289602001518a604001518a613e95565b9350838811156127915787846040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612788929190615bd4565b60405180910390fd5b505050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f80828042111561280d5780426040517fdae7ca7d000000000000000000000000000000000000000000000000000000008152600401612804929190615bd4565b60405180910390fd5b5f61281d8d8d8d61ffff16614384565b90505f8173ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612869573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288d91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff161415905080156128cf57898b809b50819c5050505b6128dd828c8c8c8c8c6144a2565b809550819650505080156128f657838580955081965050505b505050995099975050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16634c7cffbd836040518263ffffffff1660e01b8152600401612941919061614b565b602060405180830381865afa15801561295c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612980919061622d565b905092915050565b5f81804211156129d15780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016129c8929190615bd4565b60405180910390fd5b845f815f01515114806129ed5750805f01515181602001515114155b80612a0d57508060400151516001825f015151612a0a9190616191565b14155b15612a44576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686604001515f81518110612a9257612a916161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612b105785604001515f81518110612acc57612acb6161c4565b5b60200260200101516040517fcfec0e01000000000000000000000000000000000000000000000000000000008152600401612b079190616200565b60405180910390fd5b5f612b27875f015188602001518960400151612ec2565b90505f8760400151825181518110612b4257612b416161c4565b5b602002602001015190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612b869190616200565b602060405180830381865afa158015612ba1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc5919061622d565b9050612beb835f81518110612bdd57612bdc6161c4565b5b602002602001015134613970565b612bff838a602001518b604001518b61303b565b808273ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401612c399190616200565b602060405180830381865afa158015612c54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c78919061622d565b612c829190616258565b9550858a1115612ccb5789866040517f4feac00c000000000000000000000000000000000000000000000000000000008152600401612cc2929190615bd4565b60405180910390fd5b5050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d65919061629f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fbb2a2b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff166317fad7fc3087878787876040518763ffffffff1660e01b8152600401612e0c9695949392919061659d565b5f604051808303815f87803b158015612e23575f80fd5b505af1158015612e35573d5f803e3d5ffd5b50505050505050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663f5e29329836040518263ffffffff1660e01b8152600401612e7b91906156ee565b602060405180830381865afa158015612e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eba9190616606565b905092915050565b6060835167ffffffffffffffff811115612edf57612ede61520a565b5b604051908082528060200260200182016040528015612f0d5781602001602082028036833780820191505090505b5090505f80835f81518110612f2557612f246161c4565b5b602002602001015190505f5b8351811015612ff557819250846001820181518110612f5357612f526161c4565b5b60200260200101519150612f9d8383898481518110612f7557612f746161c4565b5b6020026020010151898581518110612f9057612f8f6161c4565b5b6020026020010151614c3c565b848281518110612fb057612faf6161c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050612f31565b5050509392505050565b5f810315613035576130348383838773ffffffffffffffffffffffffffffffffffffffff16614d93909392919063ffffffff16565b5b50505050565b5f805f805f865f81518110613053576130526161c4565b5b602002602001015190505f5b895181101561351b5789818151811061307b5761307a6161c4565b5b60200260200101519250888181518110613098576130976161c4565b5b602002602001015194508195508760018201815181106130bb576130ba6161c4565b5b60200260200101519150895160018201146130f3578960018201815181106130e6576130e56161c4565b5b60200260200101516130f5565b865b93505f600181111561310a57613109616631565b5b85600181111561311d5761311c616631565b5b036133f9575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561316d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061319191906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156132f0575f828973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016132259190616200565b602060405180830381865afa158015613240573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613264919061622d565b0390505f61327d848484614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f838b6040518463ffffffff1660e01b81526004016132bc93929190616796565b5f604051808303815f87803b1580156132d3575f80fd5b505af11580156132e5573d5f803e3d5ffd5b5050505050506133f2565b5f818973ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b815260040161332b9190616200565b602060405180830381865afa158015613346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336a919061622d565b0390505f613383838584614e219092919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff1663022c0d9f825f8b6040518463ffffffff1660e01b81526004016133c2939291906167de565b5f604051808303815f87803b1580156133d9575f80fd5b505af11580156133eb573d5f803e3d5ffd5b5050505050505b5050613510565b8273ffffffffffffffffffffffffffffffffffffffff166353c059a08473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561345e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348291906163f4565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614866040518363ffffffff1660e01b81526004016134ce929190616826565b6020604051808303815f875af11580156134ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061350e9190616880565b505b80600101905061305f565b50505050505050505050565b5f8103156135c0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161358891906156ee565b5f604051808303815f87803b15801561359f575f80fd5b505af11580156135b1573d5f803e3d5ffd5b505050506135bf8282613ddb565b5b5050565b6060825167ffffffffffffffff8111156135e1576135e061520a565b5b60405190808252806020026020018201604052801561360f5781602001602082028036833780820191505090505b5090508181855181518110613627576136266161c4565b5b6020026020010181815250505f845190505b5f8114613967575f8460018361364f9190616258565b815181106136605761365f6161c4565b5b602002602001015190505f876001846136799190616258565b8151811061368a576136896161c4565b5b602002602001015190505f876001856136a39190616258565b815181106136b4576136b36161c4565b5b602002602001015190505f60018111156136d1576136d0616631565b5b8260018111156136e4576136e3616631565b5b0361384e575f808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613734573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061375891906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508886815181106137905761378f6161c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156137d657808280925081935050505b5f8787815181106137ea576137e96161c4565b5b60200260200101519050613809838383614ef39092919063ffffffff16565b6fffffffffffffffffffffffffffffffff16886001896138299190616258565b8151811061383a576138396161c4565b5b602002602001018181525050505050613951565b61390d81868681518110613865576138646161c4565b5b60200260200101518573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f191906163f4565b73ffffffffffffffffffffffffffffffffffffffff161461205c565b826fffffffffffffffffffffffffffffffff169250905050856001866139339190616258565b81518110613944576139436161c4565b5b6020026020010181815250505b505050808061395f906168ab565b915050613639565b50949350505050565b5f810315613a41577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156139de575f80fd5b505af11580156139f0573d5f803e3d5ffd5b5050505050613a4082827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b5050565b5f805f805f80885f81518110613a5e57613a5d6161c4565b5b602002602001015190505f5b8b51811015613dcc578b8181518110613a8657613a856161c4565b5b602002602001015193508a8181518110613aa357613aa26161c4565b5b60200260200101519250819550896001820181518110613ac657613ac56161c4565b5b602002602001015191508b516001820114613afe578b6001820181518110613af157613af06161c4565b5b6020026020010151613b00565b875b94505f6001811115613b1557613b14616631565b5b836001811115613b2857613b27616631565b5b03613c6057886001820181518110613b4357613b426161c4565b5b602002602001015196508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015613bf0578373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f89886040518463ffffffff1660e01b8152600401613bbe93929190616796565b5f604051808303815f87803b158015613bd5575f80fd5b505af1158015613be7573d5f803e3d5ffd5b50505050613c5b565b8373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f885f886040518463ffffffff1660e01b8152600401613c2d939291906167de565b5f604051808303815f87803b158015613c44575f80fd5b505af1158015613c56573d5f803e3d5ffd5b505050505b613dc1565b5f8473ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613caa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cce91906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f80613d838773ffffffffffffffffffffffffffffffffffffffff166353c059a0858b6040518363ffffffff1660e01b8152600401613d3e929190616826565b6020604051808303815f875af1158015613d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d7e9190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff1691508215613db957809950613dbd565b8199505b5050505b806001019050613a6a565b50505050505095945050505050565b5f810315613e91575f8273ffffffffffffffffffffffffffffffffffffffff1682604051613e08906168fc565b5f6040518083038185875af1925050503d805f8114613e42576040519150601f19603f3d011682016040523d82523d5f602084013e613e47565b606091505b5050905080613e8f5782826040517f47b96f70000000000000000000000000000000000000000000000000000000008152600401613e86929190616910565b60405180910390fd5b505b5050565b5f805f805f80875f81518110613eae57613ead6161c4565b5b602002602001015190508a95505f5b8a518110156142c3578a8181518110613ed957613ed86161c4565b5b60200260200101519250898181518110613ef657613ef56161c4565b5b60200260200101519450819550886001820181518110613f1957613f186161c4565b5b602002602001015191508a516001820114613f51578a6001820181518110613f4457613f436161c4565b5b6020026020010151613f53565b875b93505f6001811115613f6857613f67616631565b5b856001811115613f7b57613f7a616631565b5b03614157575f808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fef91906166da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1610156140ce5761405d82828b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f5f8b896040518463ffffffff1660e01b815260040161409c93929190616796565b5f604051808303815f87803b1580156140b3575f80fd5b505af11580156140c5573d5f803e3d5ffd5b50505050614150565b6140e381838b614e219092919063ffffffff16565b98508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8a5f896040518463ffffffff1660e01b8152600401614122939291906167de565b5f604051808303815f87803b158015614139575f80fd5b505af115801561414b573d5f803e3d5ffd5b505050505b50506142b8565b5f8373ffffffffffffffffffffffffffffffffffffffff1663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141c591906163f4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161490505f8061427a8673ffffffffffffffffffffffffffffffffffffffff166353c059a0858a6040518363ffffffff1660e01b8152600401614235929190616826565b6020604051808303815f875af1158015614251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142759190616880565b614fcc565b6fffffffffffffffffffffffffffffffff1691506fffffffffffffffffffffffffffffffff16915082156142b0578099506142b4565b8199505b5050505b806001019050613ebd565b50505050505095945050505050565b5f63a9059cbb60e01b83836040516024016142ee929190616910565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506143578482614fee565b50505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663704037bd8585856040518463ffffffff1660e01b81526004016143e293929190616937565b608060405180830381865afa1580156143fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144219190616a09565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361449b578383836040517fd648e3a200000000000000000000000000000000000000000000000000000000815260040161449293929190616a34565b60405180910390fd5b9392505050565b5f805f8873ffffffffffffffffffffffffffffffffffffffff1663c9939f5e338689896040518563ffffffff1660e01b81526004016144e49493929190616a69565b5f604051808303815f875af11580156144ff573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906145279190616b7a565b90505f5b81518110156145c95761455782828151811061454a576145496161c4565b5b6020026020010151615078565b6fffffffffffffffffffffffffffffffff16846145749190616191565b935061459982828151811061458c5761458b6161c4565b5b6020026020010151615093565b6fffffffffffffffffffffffffffffffff16836145b69190616191565b9250806145c290616bc1565b905061452b565b50878310806145d757508682105b1561461f57878388846040517f3199f6ee0000000000000000000000000000000000000000000000000000000081526004016146169493929190616c08565b60405180910390fd5b50965096945050505050565b5f81031561465f5761465e82828573ffffffffffffffffffffffffffffffffffffffff166142d29092919063ffffffff16565b5b505050565b5f805f80606080876101c00135804211156146b85780426040517fdae7ca7d0000000000000000000000000000000000000000000000000000000081526004016146af929190615bd4565b60405180910390fd5b888061014001906146c99190616c57565b9050898061012001906146dc9190616cb9565b905014158061470f5750888061016001906146f79190616c57565b90508980610120019061470a9190616cb9565b905014155b15614746576040517fb91b4d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62ffffff80168960e001351180614766575062ffffff8016896101000135115b156147b3578860e001358961010001356040517f32f4ab8e0000000000000000000000000000000000000000000000000000000081526004016147aa929190615bd4565b60405180910390fd5b5f898061012001906147c59190616cb9565b905067ffffffffffffffff8111156147e0576147df61520a565b5b60405190808252806020026020018201604052801561480e5781602001602082028036833780820191505090505b509050898061012001906148229190616cb9565b905067ffffffffffffffff81111561483d5761483c61520a565b5b60405190808252806020026020018201604052801561486b5781602001602082028036833780820191505090505b5093505f8973ffffffffffffffffffffffffffffffffffffffff1663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156148b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148dc9190616606565b62ffffff169050808b61010001358c60e0013501108061490657508a60e001358b61010001358201105b15614955578a60e001358b6101000135826040517ffaa1db5600000000000000000000000000000000000000000000000000000000815260040161494c93929190616d1b565b60405180910390fd5b5f5b8251811015614a88575f8c8061012001906149729190616cb9565b83818110614983576149826161c4565b5b90506020020135830190505f8112806149a0575062ffffff801681115b156149e257806040517fe1505cc20000000000000000000000000000000000000000000000000000000081526004016149d99190616d68565b60405180910390fd5b808783815181106149f6576149f56161c4565b5b602002602001018181525050614a5d8d806101400190614a169190616c57565b84818110614a2757614a266161c4565b5b905060200201358e806101600190614a3f9190616c57565b85818110614a5057614a4f6161c4565b5b905060200201358361509f565b848381518110614a7057614a6f6161c4565b5b60200260200101818152505050806001019050614957565b50505f808a73ffffffffffffffffffffffffffffffffffffffff1663383d15c58d610180016020810190614abc9190616d81565b858f6101a0016020810190614ad19190616d81565b6040518463ffffffff1660e01b8152600401614aef93929190616e63565b5f604051808303815f875af1158015614b0a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190614b329190616f34565b8097508193508294505050505f614b52828461512090919063ffffffff16565b9050614b5d81615078565b6fffffffffffffffffffffffffffffffff169a50614b7a81615093565b6fffffffffffffffffffffffffffffffff1699508c60a001358b1080614ba357508c60c001358a105b15614bf3578c60a001358b8e60c001358c6040517f3199f6ee000000000000000000000000000000000000000000000000000000008152600401614bea9493929190616c08565b60405180910390fd5b614bfc82615078565b6fffffffffffffffffffffffffffffffff169850614c1982615093565b6fffffffffffffffffffffffffffffffff16975050505050509295509295509295565b5f806001811115614c5057614c4f616631565b5b826001811115614c6357614c62616631565b5b03614d7d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b8152600401614cc3929190616fa0565b602060405180830381865afa158015614cde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d02919061629f565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614d78578484846040517fd648e3a2000000000000000000000000000000000000000000000000000000008152600401614d6f93929190616a34565b60405180910390fd5b614d8b565b614d88858585614384565b90505b949350505050565b5f6323b872dd60e01b848484604051602401614db193929190616a34565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050614e1a8582614fee565b5050505050565b5f808403614e5b576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614e6857505f82145b15614e9f576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e585614eae9190616fc7565b90505f8382614ebd9190616fc7565b90505f826103e887614ecf9190616fc7565b614ed99190616191565b90508082614ee79190617035565b93505050509392505050565b5f808403614f2d576040517fb937356b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f831480614f3a57505f82145b15614f71576040517f7b03555500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6103e88585614f819190616fc7565b614f8b9190616fc7565b90505f6103e58685614f9d9190616258565b614fa79190616fc7565b905060018183614fb79190617035565b614fc19190616191565b925050509392505050565b5f806fffffffffffffffffffffffffffffffff831691508260801c9050915091565b5f805f5260205f8351602085015f875af19050805f811461502c573d5f811461501f5760015f511483169250615026565b843b151592505b5061503b565b3d1561503a573d5f803e3d5ffd5b5b5080615073576040517f32e2717a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f8160801c9050919050565b5f6150ca8467ffffffffffffffff1667ffffffffffffffff605884615198909392919063ffffffff16565b90506150f68367ffffffffffffffff1667ffffffffffffffff601884615198909392919063ffffffff16565b90506151178262ffffff1662ffffff5f84615198909392919063ffffffff16565b90509392505050565b5f81830390508281118061515b5750825f1c6fffffffffffffffffffffffffffffffff16815f1c6fffffffffffffffffffffffffffffffff16115b15615192576040517fe599af5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6151d5816151c3565b81146151df575f80fd5b50565b5f813590506151f0816151cc565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b615240826151fa565b810181811067ffffffffffffffff8211171561525f5761525e61520a565b5b80604052505050565b5f6152716151b2565b905061527d8282615237565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156152a4576152a361520a565b5b602082029050602081019050919050565b5f80fd5b5f6152cb6152c68461528a565b615268565b905080838252602082019050602084028301858111156152ee576152ed6152b5565b5b835b81811015615317578061530388826151e2565b8452602084019350506020810190506152f0565b5050509392505050565b5f82601f83011261533557615334615286565b5b81356153458482602086016152b9565b91505092915050565b5f67ffffffffffffffff8211156153685761536761520a565b5b602082029050602081019050919050565b60028110615385575f80fd5b50565b5f8135905061539681615379565b92915050565b5f6153ae6153a98461534e565b615268565b905080838252602082019050602084028301858111156153d1576153d06152b5565b5b835b818110156153fa57806153e68882615388565b8452602084019350506020810190506153d3565b5050509392505050565b5f82601f83011261541857615417615286565b5b813561542884826020860161539c565b91505092915050565b5f67ffffffffffffffff82111561544b5761544a61520a565b5b602082029050602081019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6154858261545c565b9050919050565b5f6154968261547b565b9050919050565b6154a68161548c565b81146154b0575f80fd5b50565b5f813590506154c18161549d565b92915050565b5f6154d96154d484615431565b615268565b905080838252602082019050602084028301858111156154fc576154fb6152b5565b5b835b81811015615525578061551188826154b3565b8452602084019350506020810190506154fe565b5050509392505050565b5f82601f83011261554357615542615286565b5b81356155538482602086016154c7565b91505092915050565b5f60608284031215615571576155706151f6565b5b61557b6060615268565b90505f82013567ffffffffffffffff81111561559a57615599615282565b5b6155a684828501615321565b5f83015250602082013567ffffffffffffffff8111156155c9576155c8615282565b5b6155d584828501615404565b602083015250604082013567ffffffffffffffff8111156155f9576155f8615282565b5b6156058482850161552f565b60408301525092915050565b5f61561b8261545c565b9050919050565b61562b81615611565b8114615635575f80fd5b50565b5f8135905061564681615622565b92915050565b5f805f805f60a08688031215615665576156646151bb565b5b5f615672888289016151e2565b9550506020615683888289016151e2565b945050604086013567ffffffffffffffff8111156156a4576156a36151bf565b5b6156b08882890161555c565b93505060606156c188828901615638565b92505060806156d2888289016151e2565b9150509295509295909350565b6156e8816151c3565b82525050565b5f6020820190506157015f8301846156df565b92915050565b6157108161547b565b811461571a575f80fd5b50565b5f8135905061572b81615707565b92915050565b5f805f8060808587031215615749576157486151bb565b5b5f615756878288016151e2565b945050602085013567ffffffffffffffff811115615777576157766151bf565b5b6157838782880161555c565b93505060406157948782880161571d565b92505060606157a5878288016151e2565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6157e3816151c3565b82525050565b5f6157f483836157da565b60208301905092915050565b5f602082019050919050565b5f615816826157b1565b61582081856157bb565b935061582b836157cb565b805f5b8381101561585b57815161584288826157e9565b975061584d83615800565b92505060018101905061582e565b5085935050505092915050565b5f6020820190508181035f830152615880818461580c565b905092915050565b5f805f805f60a086880312156158a1576158a06151bb565b5b5f6158ae888289016151e2565b95505060206158bf888289016151e2565b945050604086013567ffffffffffffffff8111156158e0576158df6151bf565b5b6158ec8882890161555c565b93505060606158fd8882890161571d565b925050608061590e888289016151e2565b9150509295509295909350565b5f805f60608486031215615932576159316151bb565b5b5f61593f868287016154b3565b93505060206159508682870161571d565b9250506040615961868287016151e2565b9150509250925092565b5f62ffffff82169050919050565b6159828161596b565b811461598c575f80fd5b50565b5f8135905061599d81615979565b92915050565b5f61ffff82169050919050565b6159b9816159a3565b81146159c3575f80fd5b50565b5f813590506159d4816159b0565b92915050565b5f805f80608085870312156159f2576159f16151bb565b5b5f6159ff878288016154b3565b9450506020615a10878288016154b3565b9350506040615a218782880161598f565b9250506060615a32878288016159c6565b91505092959194509250565b5f819050919050565b5f615a61615a5c615a578461545c565b615a3e565b61545c565b9050919050565b5f615a7282615a47565b9050919050565b5f615a8382615a68565b9050919050565b615a9381615a79565b82525050565b5f602082019050615aac5f830184615a8a565b92915050565b5f615abc82615a68565b9050919050565b615acc81615ab2565b82525050565b5f602082019050615ae55f830184615ac3565b92915050565b5f805f805f805f80610100898b031215615b0857615b076151bb565b5b5f615b158b828c016154b3565b9850506020615b268b828c016159c6565b9750506040615b378b828c016151e2565b9650506060615b488b828c016151e2565b955050608089013567ffffffffffffffff811115615b6957615b686151bf565b5b615b758b828c01615321565b94505060a089013567ffffffffffffffff811115615b9657615b956151bf565b5b615ba28b828c01615321565b93505060c0615bb38b828c01615638565b92505060e0615bc48b828c016151e2565b9150509295985092959890939650565b5f604082019050615be75f8301856156df565b615bf460208301846156df565b9392505050565b5f615c0582615a68565b9050919050565b615c1581615bfb565b82525050565b5f602082019050615c2e5f830184615c0c565b92915050565b5f80fd5b5f6101e08284031215615c4e57615c4d615c34565b5b81905092915050565b5f60208284031215615c6c57615c6b6151bb565b5b5f82013567ffffffffffffffff811115615c8957615c886151bf565b5b615c9584828501615c38565b91505092915050565b5f60c082019050615cb15f8301896156df565b615cbe60208301886156df565b615ccb60408301876156df565b615cd860608301866156df565b8181036080830152615cea818561580c565b905081810360a0830152615cfe818461580c565b9050979650505050505050565b5f615d158261547b565b9050919050565b615d2581615d0b565b8114615d2f575f80fd5b50565b5f81359050615d4081615d1c565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b615d6a81615d46565b8114615d74575f80fd5b50565b5f81359050615d8581615d61565b92915050565b5f8115159050919050565b615d9f81615d8b565b8114615da9575f80fd5b50565b5f81359050615dba81615d96565b92915050565b5f805f60608486031215615dd757615dd66151bb565b5b5f615de486828701615d32565b9350506020615df586828701615d77565b9250506040615e0686828701615dac565b9150509250925092565b615e1981615d46565b82525050565b5f606082019050615e325f830186615e10565b615e3f6020830185615e10565b615e4c6040830184615e10565b949350505050565b5f615e5e82615a68565b9050919050565b615e6e81615e54565b82525050565b5f602082019050615e875f830184615e65565b92915050565b5f805f805f805f805f6101208a8c031215615eab57615eaa6151bb565b5b5f615eb88c828d016154b3565b9950506020615ec98c828d016154b3565b9850506040615eda8c828d016159c6565b9750506060615eeb8c828d016151e2565b9650506080615efc8c828d016151e2565b95505060a08a013567ffffffffffffffff811115615f1d57615f1c6151bf565b5b615f298c828d01615321565b94505060c08a013567ffffffffffffffff811115615f4a57615f496151bf565b5b615f568c828d01615321565b93505060e0615f678c828d0161571d565b925050610100615f798c828d016151e2565b9150509295985092959850929598565b5f8060408385031215615f9f57615f9e6151bb565b5b5f615fac85828601615d32565b9250506020615fbd8582860161598f565b9150509250929050565b5f615fd18261547b565b9050919050565b615fe181615fc7565b8114615feb575f80fd5b50565b5f81359050615ffc81615fd8565b92915050565b5f80fd5b5f8083601f84011261601b5761601a615286565b5b8235905067ffffffffffffffff81111561603857616037616002565b5b602083019150836020820283011115616054576160536152b5565b5b9250929050565b5f805f805f8060808789031215616075576160746151bb565b5b5f61608289828a01615fee565b965050602061609389828a0161571d565b955050604087013567ffffffffffffffff8111156160b4576160b36151bf565b5b6160c089828a01616006565b9450945050606087013567ffffffffffffffff8111156160e3576160e26151bf565b5b6160ef89828a01616006565b92509250509295509295509295565b5f8060408385031215616114576161136151bb565b5b5f61612185828601615d32565b9250506020616132858286016151e2565b9150509250929050565b6161458161596b565b82525050565b5f60208201905061615e5f83018461613c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61619b826151c3565b91506161a6836151c3565b92508282019050808211156161be576161bd616164565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6161fa8161547b565b82525050565b5f6020820190506162135f8301846161f1565b92915050565b5f81519050616227816151cc565b92915050565b5f60208284031215616242576162416151bb565b5b5f61624f84828501616219565b91505092915050565b5f616262826151c3565b915061626d836151c3565b925082820390508181111561628557616284616164565b5b92915050565b5f8151905061629981615707565b92915050565b5f602082840312156162b4576162b36151bb565b5b5f6162c18482850161628b565b91505092915050565b5f6162d482615a68565b9050919050565b6162e4816162ca565b82525050565b6162f3816159a3565b82525050565b5f60808201905061630c5f8301876162db565b61631960208301866162db565b616326604083018561613c565b61633360608301846162ea565b95945050505050565b5f8151905061634a81615d1c565b92915050565b5f60208284031215616365576163646151bb565b5b5f6163728482850161633c565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6163b16163ac6163a78461637b565b615a3e565b616384565b9050919050565b6163c181616397565b82525050565b5f6020820190506163da5f8301846163b8565b92915050565b5f815190506163ee8161549d565b92915050565b5f60208284031215616409576164086151bb565b5b5f616416848285016163e0565b91505092915050565b5f60208284031215616434576164336151bb565b5b5f616441848285016154b3565b91505092915050565b5f60a08201905061645d5f8301886161f1565b61646a60208301876161f1565b61647760408301866156df565b61648460608301856156df565b61649160808301846156df565b9695505050505050565b6164a481615d8b565b82525050565b5f6040820190506164bd5f830185615e10565b6164ca602083018461649b565b9392505050565b5f815190506164df81615d61565b92915050565b5f805f606084860312156164fc576164fb6151bb565b5b5f616509868287016164d1565b935050602061651a868287016164d1565b925050604061652b868287016164d1565b9150509250925092565b5f80fd5b82818337505050565b5f61654d83856157bb565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156165805761657f616535565b5b602083029250616591838584616539565b82840190509392505050565b5f6080820190506165b05f8301896161f1565b6165bd60208301886161f1565b81810360408301526165d0818688616542565b905081810360608301526165e5818486616542565b9050979650505050505050565b5f8151905061660081615979565b92915050565b5f6020828403121561661b5761661a6151bb565b5b5f616628848285016165f2565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6dffffffffffffffffffffffffffff82169050919050565b6166808161665e565b811461668a575f80fd5b50565b5f8151905061669b81616677565b92915050565b5f63ffffffff82169050919050565b6166b9816166a1565b81146166c3575f80fd5b50565b5f815190506166d4816166b0565b92915050565b5f805f606084860312156166f1576166f06151bb565b5b5f6166fe8682870161668d565b935050602061670f8682870161668d565b9250506040616720868287016166c6565b9150509250925092565b5f819050919050565b5f61674d6167486167438461672a565b615a3e565b6151c3565b9050919050565b61675d81616733565b82525050565b5f82825260208201905092915050565b50565b5f6167815f83616763565b915061678c82616773565b5f82019050919050565b5f6080820190506167a95f830186616754565b6167b660208301856156df565b6167c360408301846161f1565b81810360608301526167d481616776565b9050949350505050565b5f6080820190506167f15f8301866156df565b6167fe6020830185616754565b61680b60408301846161f1565b818103606083015261681c81616776565b9050949350505050565b5f6040820190506168395f83018561649b565b61684660208301846161f1565b9392505050565b5f819050919050565b61685f8161684d565b8114616869575f80fd5b50565b5f8151905061687a81616856565b92915050565b5f60208284031215616895576168946151bb565b5b5f6168a28482850161686c565b91505092915050565b5f6168b5826151c3565b91505f82036168c7576168c6616164565b5b600182039050919050565b5f81905092915050565b5f6168e75f836168d2565b91506168f282616773565b5f82019050919050565b5f616906826168dc565b9150819050919050565b5f6040820190506169235f8301856161f1565b61693060208301846156df565b9392505050565b5f60608201905061694a5f8301866162db565b61695760208301856162db565b61696460408301846156df565b949350505050565b5f8151905061697a816159b0565b92915050565b5f8151905061698e81615d96565b92915050565b5f608082840312156169a9576169a86151f6565b5b6169b36080615268565b90505f6169c28482850161696c565b5f8301525060206169d58482850161633c565b60208301525060406169e984828501616980565b60408301525060606169fd84828501616980565b60608301525092915050565b5f60808284031215616a1e57616a1d6151bb565b5b5f616a2b84828501616994565b91505092915050565b5f606082019050616a475f8301866161f1565b616a5460208301856161f1565b616a6160408301846156df565b949350505050565b5f608082019050616a7c5f8301876161f1565b616a8960208301866161f1565b8181036040830152616a9b818561580c565b90508181036060830152616aaf818461580c565b905095945050505050565b5f67ffffffffffffffff821115616ad457616ad361520a565b5b602082029050602081019050919050565b5f616af7616af284616aba565b615268565b90508083825260208201905060208402830185811115616b1a57616b196152b5565b5b835b81811015616b435780616b2f888261686c565b845260208401935050602081019050616b1c565b5050509392505050565b5f82601f830112616b6157616b60615286565b5b8151616b71848260208601616ae5565b91505092915050565b5f60208284031215616b8f57616b8e6151bb565b5b5f82015167ffffffffffffffff811115616bac57616bab6151bf565b5b616bb884828501616b4d565b91505092915050565b5f616bcb826151c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203616bfd57616bfc616164565b5b600182019050919050565b5f608082019050616c1b5f8301876156df565b616c2860208301866156df565b616c3560408301856156df565b616c4260608301846156df565b95945050505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112616c7357616c72616c4b565b5b80840192508235915067ffffffffffffffff821115616c9557616c94616c4f565b5b602083019250602082023603831315616cb157616cb0616c53565b5b509250929050565b5f8083356001602003843603038112616cd557616cd4616c4b565b5b80840192508235915067ffffffffffffffff821115616cf757616cf6616c4f565b5b602083019250602082023603831315616d1357616d12616c53565b5b509250929050565b5f606082019050616d2e5f8301866156df565b616d3b60208301856156df565b616d4860408301846156df565b949350505050565b5f819050919050565b616d6281616d50565b82525050565b5f602082019050616d7b5f830184616d59565b92915050565b5f60208284031215616d9657616d956151bb565b5b5f616da38482850161571d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b616dde8161684d565b82525050565b5f616def8383616dd5565b60208301905092915050565b5f602082019050919050565b5f616e1182616dac565b616e1b8185616db6565b9350616e2683616dc6565b805f5b83811015616e56578151616e3d8882616de4565b9750616e4883616dfb565b925050600181019050616e29565b5085935050505092915050565b5f606082019050616e765f8301866161f1565b8181036020830152616e888185616e07565b9050616e9760408301846161f1565b949350505050565b5f616eb1616eac8461528a565b615268565b90508083825260208201905060208402830185811115616ed457616ed36152b5565b5b835b81811015616efd5780616ee98882616219565b845260208401935050602081019050616ed6565b5050509392505050565b5f82601f830112616f1b57616f1a615286565b5b8151616f2b848260208601616e9f565b91505092915050565b5f805f60608486031215616f4b57616f4a6151bb565b5b5f616f588682870161686c565b9350506020616f698682870161686c565b925050604084015167ffffffffffffffff811115616f8a57616f896151bf565b5b616f9686828701616f07565b9150509250925092565b5f604082019050616fb35f8301856161f1565b616fc060208301846161f1565b9392505050565b5f616fd1826151c3565b9150616fdc836151c3565b9250828202616fea816151c3565b9150828204841483151761700157617000616164565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61703f826151c3565b915061704a836151c3565b92508261705a57617059617008565b5b82820490509291505056fea26469706673582212200e309a78c4164f5b8b6e48c22021a99aca2bb60332bc12d21314fee29f34eefc64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92FE8E70 GT PUSH2 0xB5 JUMPI DUP1 PUSH4 0xBB558A9F GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xBB558A9F EQ PUSH2 0x5A3 JUMPI DUP1 PUSH4 0xC22159B6 EQ PUSH2 0x5CD JUMPI DUP1 PUSH4 0xD0E380F2 EQ PUSH2 0x60A JUMPI DUP1 PUSH4 0xE038E6DC EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0xE9361C08 EQ PUSH2 0x676 JUMPI DUP1 PUSH4 0xF96FE925 EQ PUSH2 0x69E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x92FE8E70 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0x964F987C EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0x9AB6156B EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0xA0D376CF EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0xA3C7271A EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0xB066EA7C EQ PUSH2 0x573 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x659AC74B GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x6C9C0078 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x38C JUMPI DUP1 PUSH4 0x81C2FDFB EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x88CC58E4 EQ PUSH2 0x3DF JUMPI DUP1 PUSH4 0x8EFC2B2C EQ PUSH2 0x409 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x1A24F9A9 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x2075AD22 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x2A443FAE EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x3DC8F8EC EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x4B801870 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x62C06767 EQ PUSH2 0x2FE JUMPI PUSH2 0x1DA JUMP JUMPDEST CALLDATASIZE PUSH2 0x1DA JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C8CB79300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0xA79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x255 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x270 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0xDA7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0xF2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1239 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0x591B JUMP JUMPDEST PUSH2 0x14DE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x34C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x59DA JUMP JUMPDEST PUSH2 0x171B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x359 SWAP2 SWAP1 PUSH2 0x5A99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x376 PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x383 SWAP2 SWAP1 PUSH2 0x5AD2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x397 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH2 0x17EC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3C3 SWAP2 SWAP1 PUSH2 0x5AEB JUMP JUMPDEST PUSH2 0x1963 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D6 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x1AFF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 SWAP1 PUSH2 0x5C1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x423 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x41E SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x1B26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x464 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45F SWAP2 SWAP1 PUSH2 0x5888 JUMP JUMPDEST PUSH2 0x1E2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x471 SWAP2 SWAP1 PUSH2 0x5868 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x485 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x205C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4AF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D9 SWAP2 SWAP1 PUSH2 0x564C JUMP JUMPDEST PUSH2 0x20EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4EB SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x51A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x515 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST PUSH2 0x234F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x529 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x558 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x553 SWAP2 SWAP1 PUSH2 0x5C57 JUMP JUMPDEST PUSH2 0x23E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x56A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x58D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x588 SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x256E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x59A SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B7 PUSH2 0x279C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C4 SWAP2 SWAP1 PUSH2 0x5E74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5EE SWAP2 SWAP1 PUSH2 0x5E8D JUMP JUMPDEST PUSH2 0x27C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x601 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x615 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x630 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62B SWAP2 SWAP1 PUSH2 0x5F89 JUMP JUMPDEST PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x660 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x65B SWAP2 SWAP1 PUSH2 0x5731 JUMP JUMPDEST PUSH2 0x2988 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66D SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x681 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x69C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x697 SWAP2 SWAP1 PUSH2 0x605B JUMP JUMPDEST PUSH2 0x2CD8 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6BF SWAP2 SWAP1 PUSH2 0x60FE JUMP JUMPDEST PUSH2 0x2E41 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D1 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x723 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71A SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x73F JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x75F JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x75C SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x796 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x7E8 JUMPI PUSH2 0x7E7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86A JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x826 JUMPI PUSH2 0x825 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x861 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x881 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8DD SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8F8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91C SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x962 DUP9 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x938 JUMPI PUSH2 0x937 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x954 JUMPI PUSH2 0x953 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x976 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x303B JUMP JUMPDEST DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D0 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA0F SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP5 POP DUP5 DUP10 GT ISZERO PUSH2 0xA62 JUMPI DUP9 DUP6 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA59 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA6C DUP8 DUP7 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xAC3 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xADF JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xAFF JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xAFC SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xB36 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB84 JUMPI PUSH2 0xB83 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC02 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xBBE JUMPI PUSH2 0xBBD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF9 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xC19 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xC2F DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC45 JUMPI PUSH2 0xC44 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xCAC JUMPI CALLVALUE DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC67 JUMPI PUSH2 0xC66 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA3 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCEA DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCC2 JUMPI PUSH2 0xCC1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xCDD JUMPI PUSH2 0xCDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3970 JUMP JUMPDEST PUSH0 PUSH2 0xD00 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 LT ISZERO PUSH2 0xD49 JUMPI DUP9 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD40 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD5C JUMPI PUSH2 0xD5B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0xD9B JUMPI PUSH2 0xD9A CALLER DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD82 JUMPI PUSH2 0xD81 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0xD95 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xDF0 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xE0C JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xE2C JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xE29 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xE7A DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0xEC0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xE96 JUMPI PUSH2 0xE95 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xEB2 JUMPI PUSH2 0xEB1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0xED5 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0xF1E JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF15 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0xF74 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF6B SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0xF90 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0xFB0 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0xFAD SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0xFE7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1039 JUMPI PUSH2 0x1038 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10BB JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1077 JUMPI PUSH2 0x1076 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B2 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x10D2 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E8 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x10FE JUMPI PUSH2 0x10FD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1165 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1120 JUMPI PUSH2 0x111F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x115C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11C3 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x117F JUMPI PUSH2 0x117E PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x119B JUMPI PUSH2 0x119A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x11B6 JUMPI PUSH2 0x11B5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x11D9 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 ADDRESS PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x1222 JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1219 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x122C DUP8 DUP3 PUSH2 0x3527 JUMP JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1282 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1279 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x129E JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x12BE JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x12BB SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x12F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x130C DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1327 JUMPI PUSH2 0x1326 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x136B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1386 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13AA SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x13F0 DUP10 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13C6 JUMPI PUSH2 0x13C5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP6 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x13E2 JUMPI PUSH2 0x13E1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1404 DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1459 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x147D SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x14D0 JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14C7 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1547 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x156B SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15CF JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1642 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x162F JUMPI DUP1 PUSH2 0x1631 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x163D DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST PUSH2 0x1716 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH2 0x166F JUMPI DUP1 PUSH2 0x16E8 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16C3 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16E7 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH2 0x1715 DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x659AC74B DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x177B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x62F9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1797 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17BB SWAP2 SWAP1 PUSH2 0x6350 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x17F5 PUSH2 0x435D JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x183D JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1870 JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x187E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x18B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH2 0x1902 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST DUP4 ISZERO PUSH2 0x195C JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0x1953 SWAP2 SWAP1 PUSH2 0x63C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x19AD JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19A4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x19DD DUP13 PUSH32 0x0 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A29 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A4D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP1 PUSH2 0x1AAD JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH0 DUP1 PUSH2 0x1ABD DUP5 DUP15 DUP15 DUP15 DUP15 ADDRESS PUSH2 0x44A2 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP3 PUSH2 0x1ACD JUMPI DUP1 DUP3 PUSH2 0x1AD0 JUMP JUMPDEST DUP2 DUP2 JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP POP POP POP POP POP PUSH2 0x1AE6 DUP13 DUP8 DUP7 PUSH2 0x462B JUMP JUMPDEST PUSH2 0x1AF0 DUP7 DUP5 PUSH2 0x3527 JUMP JUMPDEST POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x1B60 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B43 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1B56 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BAB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCF SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1BF7 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1C8D SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1CB3 JUMPI POP CALLVALUE DUP9 PUSH1 0x60 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1CE9 JUMPI PUSH2 0x1CDA DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CCE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1CE4 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFF JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0x1D59 JUMPI POP CALLVALUE DUP9 PUSH1 0x80 ADD CALLDATALOAD EQ JUMPDEST ISZERO PUSH2 0x1D8E JUMPI PUSH2 0x1D7F DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1D73 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x1D89 DUP2 CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x1DFE JUMP JUMPDEST DUP8 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DA0 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1DB3 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x60 ADD CALLDATALOAD DUP11 PUSH1 0x80 ADD CALLDATALOAD CALLVALUE PUSH1 0x40 MLOAD PUSH32 0xD0A4F13B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x644A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0x1E09 DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x1E75 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E6C SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x1E91 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x1EB1 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x1EAE SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x1EE8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1EFF DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F15 DUP8 PUSH1 0x20 ADD MLOAD DUP3 DUP10 PUSH1 0x40 ADD MLOAD DUP13 PUSH2 0x35C4 JUMP JUMPDEST SWAP4 POP DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F2B JUMPI PUSH2 0x1F2A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F92 JUMPI DUP8 DUP5 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1F4D JUMPI PUSH2 0x1F4C PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCA7710C800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F89 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1FF0 DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FAC JUMPI PUSH2 0x1FAB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FC8 JUMPI PUSH2 0x1FC7 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x1FE3 JUMPI PUSH2 0x1FE2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH0 PUSH2 0x2006 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP9 DUP12 PUSH2 0x3A45 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 LT ISZERO PUSH2 0x204F JUMPI DUP10 DUP2 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2046 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xABCD7830 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x209A SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20B5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20D9 SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x2137 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x212E SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x2153 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2173 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2170 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x21AA JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x21FC JUMPI PUSH2 0x21FB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x227E JUMPI DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH0 ADD MLOAD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x223A JUMPI PUSH2 0x2239 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2275 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2295 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x22DB DUP8 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22B1 JUMPI PUSH2 0x22B0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLER DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22CD JUMPI PUSH2 0x22CC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x22F0 DUP10 DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD ADDRESS PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2339 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2343 DUP7 DUP6 PUSH2 0x3527 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE77366F8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x238D SWAP3 SWAP2 SWAP1 PUSH2 0x64AA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23A8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23CC SWAP2 SWAP1 PUSH2 0x64E5 JUMP JUMPDEST DUP1 SWAP4 POP DUP2 SWAP5 POP DUP3 SWAP6 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 PUSH0 PUSH2 0x241B DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x23FE SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP10 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2411 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST DUP11 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2466 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x248A SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x24B2 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24FF JUMPI PUSH1 0x40 MLOAD PUSH32 0xB33F8AB900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2520 DUP9 PUSH0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2514 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x2542 DUP9 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2536 SWAP2 SWAP1 PUSH2 0x641F JUMP JUMPDEST CALLER DUP4 DUP12 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x2FFF JUMP JUMPDEST PUSH2 0x254C DUP9 DUP3 PUSH2 0x4664 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP9 POP DUP3 SWAP10 POP DUP4 SWAP11 POP DUP5 SWAP12 POP DUP6 SWAP13 POP POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x25B7 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25AE SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x25D3 JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x25F3 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x25F0 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x262A JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2678 JUMPI PUSH2 0x2677 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x26F6 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x26B2 JUMPI PUSH2 0x26B1 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26ED SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x270D DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2733 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2725 JUMPI PUSH2 0x2724 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2748 CALLVALUE DUP3 DUP10 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 ADD MLOAD DUP11 PUSH2 0x3E95 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 GT ISZERO PUSH2 0x2791 JUMPI DUP8 DUP5 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2788 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP3 DUP1 TIMESTAMP GT ISZERO PUSH2 0x280D JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2804 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x281D DUP14 DUP14 DUP14 PUSH2 0xFFFF AND PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2869 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x288D SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP DUP1 ISZERO PUSH2 0x28CF JUMPI DUP10 DUP12 DUP1 SWAP12 POP DUP2 SWAP13 POP POP POP JUMPDEST PUSH2 0x28DD DUP3 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x44A2 JUMP JUMPDEST DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP DUP1 ISZERO PUSH2 0x28F6 JUMPI DUP4 DUP6 DUP1 SWAP6 POP DUP2 SWAP7 POP POP POP JUMPDEST POP POP POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7CFFBD DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2941 SWAP2 SWAP1 PUSH2 0x614B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x295C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2980 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 TIMESTAMP GT ISZERO PUSH2 0x29D1 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C8 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH0 DUP2 PUSH0 ADD MLOAD MLOAD EQ DUP1 PUSH2 0x29ED JUMPI POP DUP1 PUSH0 ADD MLOAD MLOAD DUP2 PUSH1 0x20 ADD MLOAD MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x2A0D JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD MLOAD PUSH1 0x1 DUP3 PUSH0 ADD MLOAD MLOAD PUSH2 0x2A0A SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST EQ ISZERO JUMPDEST ISZERO PUSH2 0x2A44 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2A92 JUMPI PUSH2 0x2A91 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B10 JUMPI DUP6 PUSH1 0x40 ADD MLOAD PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2ACC JUMPI PUSH2 0x2ACB PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xCFEC0E0100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B07 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x2B27 DUP8 PUSH0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x40 ADD MLOAD PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x40 ADD MLOAD DUP3 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2B42 JUMPI PUSH2 0x2B41 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B86 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BA1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC5 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SWAP1 POP PUSH2 0x2BEB DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2BDD JUMPI PUSH2 0x2BDC PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE PUSH2 0x3970 JUMP JUMPDEST PUSH2 0x2BFF DUP4 DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x40 ADD MLOAD DUP12 PUSH2 0x303B JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C39 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C54 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C78 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST PUSH2 0x2C82 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST SWAP6 POP DUP6 DUP11 GT ISZERO PUSH2 0x2CCB JUMPI DUP10 DUP7 PUSH1 0x40 MLOAD PUSH32 0x4FEAC00C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CC2 SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D41 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D65 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2DC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBB2A2B7200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17FAD7FC ADDRESS DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E0C SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x659D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E23 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E35 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF5E29329 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7B SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBA SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EDF JUMPI PUSH2 0x2EDE PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F0D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 DUP1 DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x2F25 JUMPI PUSH2 0x2F24 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2FF5 JUMPI DUP2 SWAP3 POP DUP5 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2F53 JUMPI PUSH2 0x2F52 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH2 0x2F9D DUP4 DUP4 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F75 JUMPI PUSH2 0x2F74 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2F90 JUMPI PUSH2 0x2F8F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4C3C JUMP JUMPDEST DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2FB0 JUMPI PUSH2 0x2FAF PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2F31 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3035 JUMPI PUSH2 0x3034 DUP4 DUP4 DUP4 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D93 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP7 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3053 JUMPI PUSH2 0x3052 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x351B JUMPI DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x307B JUMPI PUSH2 0x307A PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP9 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3098 JUMPI PUSH2 0x3097 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP8 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30BB JUMPI PUSH2 0x30BA PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP10 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x30F3 JUMPI DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x30E6 JUMPI PUSH2 0x30E5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x30F5 JUMP JUMPDEST DUP7 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x310A JUMPI PUSH2 0x3109 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x311D JUMPI PUSH2 0x311C PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x33F9 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x316D JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3191 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x32F0 JUMPI PUSH0 DUP3 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3225 SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3240 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3264 SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x327D DUP5 DUP5 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP4 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32D3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32E5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x33F2 JUMP JUMPDEST PUSH0 DUP2 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x332B SWAP2 SWAP1 PUSH2 0x6200 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3346 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x336A SWAP2 SWAP1 PUSH2 0x622D JUMP JUMPDEST SUB SWAP1 POP PUSH0 PUSH2 0x3383 DUP4 DUP6 DUP5 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP3 PUSH0 DUP12 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33C2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33D9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x33EB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP PUSH2 0x3510 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x345E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3482 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34CE SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x34EA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x350E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x305F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x35C0 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3588 SWAP2 SWAP1 PUSH2 0x56EE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x359F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x35BF DUP3 DUP3 PUSH2 0x3DDB JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35E1 JUMPI PUSH2 0x35E0 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x360F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 DUP6 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3627 JUMPI PUSH2 0x3626 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH0 DUP5 MLOAD SWAP1 POP JUMPDEST PUSH0 DUP2 EQ PUSH2 0x3967 JUMPI PUSH0 DUP5 PUSH1 0x1 DUP4 PUSH2 0x364F SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3660 JUMPI PUSH2 0x365F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP5 PUSH2 0x3679 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x368A JUMPI PUSH2 0x3689 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 DUP8 PUSH1 0x1 DUP6 PUSH2 0x36A3 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x36B4 JUMPI PUSH2 0x36B3 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36D1 JUMPI PUSH2 0x36D0 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x36E4 JUMPI PUSH2 0x36E3 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x384E JUMPI PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3734 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3758 SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP9 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x37D6 JUMPI DUP1 DUP3 DUP1 SWAP3 POP DUP2 SWAP4 POP POP POP JUMPDEST PUSH0 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x37EA JUMPI PUSH2 0x37E9 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3809 DUP4 DUP4 DUP4 PUSH2 0x4EF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x1 DUP10 PUSH2 0x3829 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x383A JUMPI PUSH2 0x3839 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP POP PUSH2 0x3951 JUMP JUMPDEST PUSH2 0x390D DUP2 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3865 JUMPI PUSH2 0x3864 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5E8746D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38CD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x38F1 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x205C JUMP JUMPDEST DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP SWAP1 POP POP DUP6 PUSH1 0x1 DUP7 PUSH2 0x3933 SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x3944 JUMPI PUSH2 0x3943 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x395F SWAP1 PUSH2 0x68AB JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3639 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3A41 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39DE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39F0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3A40 DUP3 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP9 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3A5E JUMPI PUSH2 0x3A5D PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x3DCC JUMPI DUP12 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3A86 JUMPI PUSH2 0x3A85 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3AA3 JUMPI PUSH2 0x3AA2 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP2 SWAP6 POP DUP10 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AC6 JUMPI PUSH2 0x3AC5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP12 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3AFE JUMPI DUP12 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AF1 JUMPI PUSH2 0x3AF0 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3B00 JUMP JUMPDEST DUP8 JUMPDEST SWAP5 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B15 JUMPI PUSH2 0x3B14 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3B28 JUMPI PUSH2 0x3B27 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x3C60 JUMPI DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3B43 JUMPI PUSH2 0x3B42 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP7 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3BF0 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP10 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BBE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BD5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BE7 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3C5B JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP9 PUSH0 DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C2D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C44 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C56 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x3DC1 JUMP JUMPDEST PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CAA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CCE SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x3D83 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP12 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D3E SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D5A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D7E SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x3DB9 JUMPI DUP1 SWAP10 POP PUSH2 0x3DBD JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3A6A JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x3E91 JUMPI PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3E08 SWAP1 PUSH2 0x68FC JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E42 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E47 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E8F JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x47B96F7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E86 SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 DUP8 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3EAE JUMPI PUSH2 0x3EAD PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP11 SWAP6 POP PUSH0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x42C3 JUMPI DUP11 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3ED9 JUMPI PUSH2 0x3ED8 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP3 POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3EF6 JUMPI PUSH2 0x3EF5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP5 POP DUP2 SWAP6 POP DUP9 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F19 JUMPI PUSH2 0x3F18 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP DUP11 MLOAD PUSH1 0x1 DUP3 ADD EQ PUSH2 0x3F51 JUMPI DUP11 PUSH1 0x1 DUP3 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F44 JUMPI PUSH2 0x3F43 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3F53 JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH0 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F68 JUMPI PUSH2 0x3F67 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP6 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3F7B JUMPI PUSH2 0x3F7A PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4157 JUMPI PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FCB JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3FEF SWAP2 SWAP1 PUSH2 0x66DA JUMP JUMPDEST POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x40CE JUMPI PUSH2 0x405D DUP3 DUP3 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F PUSH0 DUP12 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x409C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6796 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40C5 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4150 JUMP JUMPDEST PUSH2 0x40E3 DUP2 DUP4 DUP12 PUSH2 0x4E21 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP9 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP11 PUSH0 DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4122 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x67DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4139 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x414B JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH2 0x42B8 JUMP JUMPDEST PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA10610C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41A1 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41C5 SWAP2 SWAP1 PUSH2 0x63F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH0 DUP1 PUSH2 0x427A DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53C059A0 DUP6 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4235 SWAP3 SWAP2 SWAP1 PUSH2 0x6826 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4251 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4275 SWAP2 SWAP1 PUSH2 0x6880 JUMP JUMPDEST PUSH2 0x4FCC JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP3 ISZERO PUSH2 0x42B0 JUMPI DUP1 SWAP10 POP PUSH2 0x42B4 JUMP JUMPDEST DUP2 SWAP10 POP JUMPDEST POP POP POP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3EBD JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x42EE SWAP3 SWAP2 SWAP1 PUSH2 0x6910 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4357 DUP5 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x704037BD DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E2 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6937 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43FD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4421 SWAP2 SWAP1 PUSH2 0x6A09 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x449B JUMPI DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4492 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC9939F5E CALLER DUP7 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44E4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A69 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44FF JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4527 SWAP2 SWAP1 PUSH2 0x6B7A JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x45C9 JUMPI PUSH2 0x4557 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x454A JUMPI PUSH2 0x4549 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x4574 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP4 POP PUSH2 0x4599 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x458C JUMPI PUSH2 0x458B PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x45B6 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP DUP1 PUSH2 0x45C2 SWAP1 PUSH2 0x6BC1 JUMP JUMPDEST SWAP1 POP PUSH2 0x452B JUMP JUMPDEST POP DUP8 DUP4 LT DUP1 PUSH2 0x45D7 JUMPI POP DUP7 DUP3 LT JUMPDEST ISZERO PUSH2 0x461F JUMPI DUP8 DUP4 DUP9 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4616 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SUB ISZERO PUSH2 0x465F JUMPI PUSH2 0x465E DUP3 DUP3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42D2 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x60 DUP1 DUP8 PUSH2 0x1C0 ADD CALLDATALOAD DUP1 TIMESTAMP GT ISZERO PUSH2 0x46B8 JUMPI DUP1 TIMESTAMP PUSH1 0x40 MLOAD PUSH32 0xDAE7CA7D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46AF SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x46C9 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x46DC SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO DUP1 PUSH2 0x470F JUMPI POP DUP9 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x46F7 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x470A SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP EQ ISZERO JUMPDEST ISZERO PUSH2 0x4746 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB91B4D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH1 0xE0 ADD CALLDATALOAD GT DUP1 PUSH2 0x4766 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP10 PUSH2 0x100 ADD CALLDATALOAD GT JUMPDEST ISZERO PUSH2 0x47B3 JUMPI DUP9 PUSH1 0xE0 ADD CALLDATALOAD DUP10 PUSH2 0x100 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH32 0x32F4AB8E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x47AA SWAP3 SWAP2 SWAP1 PUSH2 0x5BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x47C5 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47E0 JUMPI PUSH2 0x47DF PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x480E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP10 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4822 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x483D JUMPI PUSH2 0x483C PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x486B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP4 POP PUSH0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBE65EDC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48B8 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48DC SWAP2 SWAP1 PUSH2 0x6606 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 POP DUP1 DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP13 PUSH1 0xE0 ADD CALLDATALOAD ADD LT DUP1 PUSH2 0x4906 JUMPI POP DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 ADD LT JUMPDEST ISZERO PUSH2 0x4955 JUMPI DUP11 PUSH1 0xE0 ADD CALLDATALOAD DUP12 PUSH2 0x100 ADD CALLDATALOAD DUP3 PUSH1 0x40 MLOAD PUSH32 0xFAA1DB5600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x494C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6D1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x4A88 JUMPI PUSH0 DUP13 DUP1 PUSH2 0x120 ADD SWAP1 PUSH2 0x4972 SWAP2 SWAP1 PUSH2 0x6CB9 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x4983 JUMPI PUSH2 0x4982 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 ADD SWAP1 POP PUSH0 DUP2 SLT DUP1 PUSH2 0x49A0 JUMPI POP PUSH3 0xFFFFFF DUP1 AND DUP2 GT JUMPDEST ISZERO PUSH2 0x49E2 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xE1505CC200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x49D9 SWAP2 SWAP1 PUSH2 0x6D68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x49F6 JUMPI PUSH2 0x49F5 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x4A5D DUP14 DUP1 PUSH2 0x140 ADD SWAP1 PUSH2 0x4A16 SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x4A27 JUMPI PUSH2 0x4A26 PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP15 DUP1 PUSH2 0x160 ADD SWAP1 PUSH2 0x4A3F SWAP2 SWAP1 PUSH2 0x6C57 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x4A50 JUMPI PUSH2 0x4A4F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH2 0x509F JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A70 JUMPI PUSH2 0x4A6F PUSH2 0x61C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4957 JUMP JUMPDEST POP POP PUSH0 DUP1 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x383D15C5 DUP14 PUSH2 0x180 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4ABC SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST DUP6 DUP16 PUSH2 0x1A0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4AD1 SWAP2 SWAP1 PUSH2 0x6D81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AEF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6E63 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B0A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B32 SWAP2 SWAP1 PUSH2 0x6F34 JUMP JUMPDEST DUP1 SWAP8 POP DUP2 SWAP4 POP DUP3 SWAP5 POP POP POP POP PUSH0 PUSH2 0x4B52 DUP3 DUP5 PUSH2 0x5120 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4B5D DUP2 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP11 POP PUSH2 0x4B7A DUP2 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP10 POP DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 LT DUP1 PUSH2 0x4BA3 JUMPI POP DUP13 PUSH1 0xC0 ADD CALLDATALOAD DUP11 LT JUMPDEST ISZERO PUSH2 0x4BF3 JUMPI DUP13 PUSH1 0xA0 ADD CALLDATALOAD DUP12 DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP13 PUSH1 0x40 MLOAD PUSH32 0x3199F6EE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BEA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6C08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4BFC DUP3 PUSH2 0x5078 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP9 POP PUSH2 0x4C19 DUP3 PUSH2 0x5093 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C50 JUMPI PUSH2 0x4C4F PUSH2 0x6631 JUMP JUMPDEST JUMPDEST DUP3 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4C63 JUMPI PUSH2 0x4C62 PUSH2 0x6631 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x4D7D JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP7 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4CC3 SWAP3 SWAP2 SWAP1 PUSH2 0x6FA0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CDE JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D02 SWAP2 SWAP1 PUSH2 0x629F JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4D78 JUMPI DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0xD648E3A200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4D6F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4D8B JUMP JUMPDEST PUSH2 0x4D88 DUP6 DUP6 DUP6 PUSH2 0x4384 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4DB1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6A34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x4E1A DUP6 DUP3 PUSH2 0x4FEE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4E5B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4E68 JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4E9F JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E5 DUP6 PUSH2 0x4EAE SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP4 DUP3 PUSH2 0x4EBD SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH2 0x3E8 DUP8 PUSH2 0x4ECF SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4ED9 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 PUSH2 0x4EE7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP5 SUB PUSH2 0x4F2D JUMPI PUSH1 0x40 MLOAD PUSH32 0xB937356B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 EQ DUP1 PUSH2 0x4F3A JUMPI POP PUSH0 DUP3 EQ JUMPDEST ISZERO PUSH2 0x4F71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7B03555500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3E8 DUP6 DUP6 PUSH2 0x4F81 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST PUSH2 0x4F8B SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x3E5 DUP7 DUP6 PUSH2 0x4F9D SWAP2 SWAP1 PUSH2 0x6258 JUMP JUMPDEST PUSH2 0x4FA7 SWAP2 SWAP1 PUSH2 0x6FC7 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP4 PUSH2 0x4FB7 SWAP2 SWAP1 PUSH2 0x7035 JUMP JUMPDEST PUSH2 0x4FC1 SWAP2 SWAP1 PUSH2 0x6191 JUMP JUMPDEST SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 POP DUP3 PUSH1 0x80 SHR SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH0 DUP8 GAS CALL SWAP1 POP DUP1 PUSH0 DUP2 EQ PUSH2 0x502C JUMPI RETURNDATASIZE PUSH0 DUP2 EQ PUSH2 0x501F JUMPI PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND SWAP3 POP PUSH2 0x5026 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO ISZERO SWAP3 POP JUMPDEST POP PUSH2 0x503B JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x503A JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST JUMPDEST POP DUP1 PUSH2 0x5073 JUMPI PUSH1 0x40 MLOAD PUSH32 0x32E2717A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x80 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x50CA DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x58 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x50F6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x18 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x5117 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH0 DUP5 PUSH2 0x5198 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP4 SUB SWAP1 POP DUP3 DUP2 GT DUP1 PUSH2 0x515B JUMPI POP DUP3 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH0 SHR PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x5192 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE599AF5500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x51D5 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP2 EQ PUSH2 0x51DF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x51F0 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x5240 DUP3 PUSH2 0x51FA JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x525F JUMPI PUSH2 0x525E PUSH2 0x520A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5271 PUSH2 0x51B2 JUMP JUMPDEST SWAP1 POP PUSH2 0x527D DUP3 DUP3 PUSH2 0x5237 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH2 0x52A3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x52CB PUSH2 0x52C6 DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x52EE JUMPI PUSH2 0x52ED PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5317 JUMPI DUP1 PUSH2 0x5303 DUP9 DUP3 PUSH2 0x51E2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x52F0 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5335 JUMPI PUSH2 0x5334 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5345 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x52B9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5368 JUMPI PUSH2 0x5367 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x5385 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5396 DUP2 PUSH2 0x5379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x53AE PUSH2 0x53A9 DUP5 PUSH2 0x534E JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x53D1 JUMPI PUSH2 0x53D0 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x53FA JUMPI DUP1 PUSH2 0x53E6 DUP9 DUP3 PUSH2 0x5388 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x53D3 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5418 JUMPI PUSH2 0x5417 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5428 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x539C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x544B JUMPI PUSH2 0x544A PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5485 DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5496 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x54A6 DUP2 PUSH2 0x548C JUMP JUMPDEST DUP2 EQ PUSH2 0x54B0 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x54C1 DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x54D9 PUSH2 0x54D4 DUP5 PUSH2 0x5431 JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x54FC JUMPI PUSH2 0x54FB PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5525 JUMPI DUP1 PUSH2 0x5511 DUP9 DUP3 PUSH2 0x54B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x54FE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5543 JUMPI PUSH2 0x5542 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5553 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x54C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5571 JUMPI PUSH2 0x5570 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x557B PUSH1 0x60 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x559A JUMPI PUSH2 0x5599 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55A6 DUP5 DUP3 DUP6 ADD PUSH2 0x5321 JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55C9 JUMPI PUSH2 0x55C8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x55D5 DUP5 DUP3 DUP6 ADD PUSH2 0x5404 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x55F9 JUMPI PUSH2 0x55F8 PUSH2 0x5282 JUMP JUMPDEST JUMPDEST PUSH2 0x5605 DUP5 DUP3 DUP6 ADD PUSH2 0x552F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x561B DUP3 PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x562B DUP2 PUSH2 0x5611 JUMP JUMPDEST DUP2 EQ PUSH2 0x5635 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5646 DUP2 PUSH2 0x5622 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x5665 JUMPI PUSH2 0x5664 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5672 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x5683 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x56A4 JUMPI PUSH2 0x56A3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x56B0 DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x56C1 DUP9 DUP3 DUP10 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x56D2 DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x56E8 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5701 PUSH0 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5710 DUP2 PUSH2 0x547B JUMP JUMPDEST DUP2 EQ PUSH2 0x571A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x572B DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5749 JUMPI PUSH2 0x5748 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5756 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5777 JUMPI PUSH2 0x5776 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5783 DUP8 DUP3 DUP9 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5794 DUP8 DUP3 DUP9 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x57A5 DUP8 DUP3 DUP9 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x57E3 DUP2 PUSH2 0x51C3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x57F4 DUP4 DUP4 PUSH2 0x57DA JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5816 DUP3 PUSH2 0x57B1 JUMP JUMPDEST PUSH2 0x5820 DUP2 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH2 0x582B DUP4 PUSH2 0x57CB JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x585B JUMPI DUP2 MLOAD PUSH2 0x5842 DUP9 DUP3 PUSH2 0x57E9 JUMP JUMPDEST SWAP8 POP PUSH2 0x584D DUP4 PUSH2 0x5800 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x582E JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x5880 DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x58A1 JUMPI PUSH2 0x58A0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x58AE DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x58BF DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x58E0 JUMPI PUSH2 0x58DF PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x58EC DUP9 DUP3 DUP10 ADD PUSH2 0x555C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x58FD DUP9 DUP3 DUP10 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x590E DUP9 DUP3 DUP10 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5932 JUMPI PUSH2 0x5931 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x593F DUP7 DUP3 DUP8 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5950 DUP7 DUP3 DUP8 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5961 DUP7 DUP3 DUP8 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5982 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP2 EQ PUSH2 0x598C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x599D DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x59B9 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP2 EQ PUSH2 0x59C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x59D4 DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x59F2 JUMPI PUSH2 0x59F1 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x59FF DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x5A10 DUP8 DUP3 DUP9 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x5A21 DUP8 DUP3 DUP9 ADD PUSH2 0x598F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x5A32 DUP8 DUP3 DUP9 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A61 PUSH2 0x5A5C PUSH2 0x5A57 DUP5 PUSH2 0x545C JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x545C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A72 DUP3 PUSH2 0x5A47 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5A83 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5A93 DUP2 PUSH2 0x5A79 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AAC PUSH0 DUP4 ADD DUP5 PUSH2 0x5A8A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5ABC DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5ACC DUP2 PUSH2 0x5AB2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5AE5 PUSH0 DUP4 ADD DUP5 PUSH2 0x5AC3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x5B08 JUMPI PUSH2 0x5B07 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5B15 DUP12 DUP3 DUP13 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x5B26 DUP12 DUP3 DUP13 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x5B37 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x5B48 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B69 JUMPI PUSH2 0x5B68 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5B75 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5B96 JUMPI PUSH2 0x5B95 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5BA2 DUP12 DUP3 DUP13 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 PUSH2 0x5BB3 DUP12 DUP3 DUP13 ADD PUSH2 0x5638 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 PUSH2 0x5BC4 DUP12 DUP3 DUP13 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5BE7 PUSH0 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5BF4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C05 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5C15 DUP2 PUSH2 0x5BFB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5C2E PUSH0 DUP4 ADD DUP5 PUSH2 0x5C0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C4E JUMPI PUSH2 0x5C4D PUSH2 0x5C34 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C6C JUMPI PUSH2 0x5C6B PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C89 JUMPI PUSH2 0x5C88 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5C95 DUP5 DUP3 DUP6 ADD PUSH2 0x5C38 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x5CB1 PUSH0 DUP4 ADD DUP10 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CBE PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CCB PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x5CD8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x5CEA DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x5CFE DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5D15 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D25 DUP2 PUSH2 0x5D0B JUMP JUMPDEST DUP2 EQ PUSH2 0x5D2F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D40 DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D6A DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP2 EQ PUSH2 0x5D74 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5D85 DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5D9F DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP2 EQ PUSH2 0x5DA9 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5DBA DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5DD7 JUMPI PUSH2 0x5DD6 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5DE4 DUP7 DUP3 DUP8 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x5DF5 DUP7 DUP3 DUP8 ADD PUSH2 0x5D77 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x5E06 DUP7 DUP3 DUP8 ADD PUSH2 0x5DAC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x5E19 DUP2 PUSH2 0x5D46 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5E32 PUSH0 DUP4 ADD DUP7 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E3F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x5E4C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x5E10 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5E5E DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5E6E DUP2 PUSH2 0x5E54 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5E87 PUSH0 DUP4 ADD DUP5 PUSH2 0x5E65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x5EAB JUMPI PUSH2 0x5EAA PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5EB8 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH2 0x5EC9 DUP13 DUP3 DUP14 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH2 0x5EDA DUP13 DUP3 DUP14 ADD PUSH2 0x59C6 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH2 0x5EEB DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH2 0x5EFC DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F1D JUMPI PUSH2 0x5F1C PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F29 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5F4A JUMPI PUSH2 0x5F49 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x5F56 DUP13 DUP3 DUP14 ADD PUSH2 0x5321 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH2 0x5F67 DUP13 DUP3 DUP14 ADD PUSH2 0x571D JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH2 0x5F79 DUP13 DUP3 DUP14 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F9F JUMPI PUSH2 0x5F9E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x5FAC DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x5FBD DUP6 DUP3 DUP7 ADD PUSH2 0x598F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x5FD1 DUP3 PUSH2 0x547B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5FE1 DUP2 PUSH2 0x5FC7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5FEB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5FFC DUP2 PUSH2 0x5FD8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x601B JUMPI PUSH2 0x601A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6038 JUMPI PUSH2 0x6037 PUSH2 0x6002 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x6054 JUMPI PUSH2 0x6053 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x6075 JUMPI PUSH2 0x6074 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6082 DUP10 DUP3 DUP11 ADD PUSH2 0x5FEE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x6093 DUP10 DUP3 DUP11 ADD PUSH2 0x571D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60B4 JUMPI PUSH2 0x60B3 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60C0 DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x60E3 JUMPI PUSH2 0x60E2 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x60EF DUP10 DUP3 DUP11 ADD PUSH2 0x6006 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6114 JUMPI PUSH2 0x6113 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6121 DUP6 DUP3 DUP7 ADD PUSH2 0x5D32 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x6132 DUP6 DUP3 DUP7 ADD PUSH2 0x51E2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x6145 DUP2 PUSH2 0x596B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x615E PUSH0 DUP4 ADD DUP5 PUSH2 0x613C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x619B DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x61A6 DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x61BE JUMPI PUSH2 0x61BD PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x61FA DUP2 PUSH2 0x547B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6213 PUSH0 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6227 DUP2 PUSH2 0x51CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6242 JUMPI PUSH2 0x6241 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x624F DUP5 DUP3 DUP6 ADD PUSH2 0x6219 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6262 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x626D DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x6285 JUMPI PUSH2 0x6284 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6299 DUP2 PUSH2 0x5707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x62B4 JUMPI PUSH2 0x62B3 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x62C1 DUP5 DUP3 DUP6 ADD PUSH2 0x628B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x62D4 DUP3 PUSH2 0x5A68 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x62E4 DUP2 PUSH2 0x62CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x62F3 DUP2 PUSH2 0x59A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x630C PUSH0 DUP4 ADD DUP8 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6319 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6326 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x613C JUMP JUMPDEST PUSH2 0x6333 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x62EA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x634A DUP2 PUSH2 0x5D1C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6365 JUMPI PUSH2 0x6364 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6372 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x63B1 PUSH2 0x63AC PUSH2 0x63A7 DUP5 PUSH2 0x637B JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x6384 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x63C1 DUP2 PUSH2 0x6397 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x63DA PUSH0 DUP4 ADD DUP5 PUSH2 0x63B8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x63EE DUP2 PUSH2 0x549D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6409 JUMPI PUSH2 0x6408 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6416 DUP5 DUP3 DUP6 ADD PUSH2 0x63E0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6434 JUMPI PUSH2 0x6433 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6441 DUP5 DUP3 DUP6 ADD PUSH2 0x54B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x645D PUSH0 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x646A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6477 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6484 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6491 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x64A4 DUP2 PUSH2 0x5D8B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x64BD PUSH0 DUP4 ADD DUP6 PUSH2 0x5E10 JUMP JUMPDEST PUSH2 0x64CA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x649B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x64DF DUP2 PUSH2 0x5D61 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x64FC JUMPI PUSH2 0x64FB PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6509 DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x651A DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x652B DUP7 DUP3 DUP8 ADD PUSH2 0x64D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x654D DUP4 DUP6 PUSH2 0x57BB JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6580 JUMPI PUSH2 0x657F PUSH2 0x6535 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6591 DUP4 DUP6 DUP5 PUSH2 0x6539 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x65B0 PUSH0 DUP4 ADD DUP10 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x65BD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x65D0 DUP2 DUP7 DUP9 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x65E5 DUP2 DUP5 DUP7 PUSH2 0x6542 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x6600 DUP2 PUSH2 0x5979 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x661B JUMPI PUSH2 0x661A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6628 DUP5 DUP3 DUP6 ADD PUSH2 0x65F2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6680 DUP2 PUSH2 0x665E JUMP JUMPDEST DUP2 EQ PUSH2 0x668A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x669B DUP2 PUSH2 0x6677 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x66B9 DUP2 PUSH2 0x66A1 JUMP JUMPDEST DUP2 EQ PUSH2 0x66C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x66D4 DUP2 PUSH2 0x66B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x66F1 JUMPI PUSH2 0x66F0 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x66FE DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x670F DUP7 DUP3 DUP8 ADD PUSH2 0x668D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x6720 DUP7 DUP3 DUP8 ADD PUSH2 0x66C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x674D PUSH2 0x6748 PUSH2 0x6743 DUP5 PUSH2 0x672A JUMP JUMPDEST PUSH2 0x5A3E JUMP JUMPDEST PUSH2 0x51C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x675D DUP2 PUSH2 0x6733 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x6781 PUSH0 DUP4 PUSH2 0x6763 JUMP JUMPDEST SWAP2 POP PUSH2 0x678C DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67A9 PUSH0 DUP4 ADD DUP7 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x67B6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67C3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x67D4 DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x67F1 PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x67FE PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x6754 JUMP JUMPDEST PUSH2 0x680B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x681C DUP2 PUSH2 0x6776 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6839 PUSH0 DUP4 ADD DUP6 PUSH2 0x649B JUMP JUMPDEST PUSH2 0x6846 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x685F DUP2 PUSH2 0x684D JUMP JUMPDEST DUP2 EQ PUSH2 0x6869 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x687A DUP2 PUSH2 0x6856 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6895 JUMPI PUSH2 0x6894 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x68A2 DUP5 DUP3 DUP6 ADD PUSH2 0x686C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68B5 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH0 DUP3 SUB PUSH2 0x68C7 JUMPI PUSH2 0x68C6 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x68E7 PUSH0 DUP4 PUSH2 0x68D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x68F2 DUP3 PUSH2 0x6773 JUMP JUMPDEST PUSH0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6906 DUP3 PUSH2 0x68DC JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6923 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6930 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x694A PUSH0 DUP4 ADD DUP7 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6957 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x62DB JUMP JUMPDEST PUSH2 0x6964 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x697A DUP2 PUSH2 0x59B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x698E DUP2 PUSH2 0x5D96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x69A9 JUMPI PUSH2 0x69A8 PUSH2 0x51F6 JUMP JUMPDEST JUMPDEST PUSH2 0x69B3 PUSH1 0x80 PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x69C2 DUP5 DUP3 DUP6 ADD PUSH2 0x696C JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x69D5 DUP5 DUP3 DUP6 ADD PUSH2 0x633C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x69E9 DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x69FD DUP5 DUP3 DUP6 ADD PUSH2 0x6980 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A1E JUMPI PUSH2 0x6A1D PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6A2B DUP5 DUP3 DUP6 ADD PUSH2 0x6994 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6A47 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A54 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A61 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6A7C PUSH0 DUP4 ADD DUP8 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6A89 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x6A9B DUP2 DUP6 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x6AAF DUP2 DUP5 PUSH2 0x580C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6AD4 JUMPI PUSH2 0x6AD3 PUSH2 0x520A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6AF7 PUSH2 0x6AF2 DUP5 PUSH2 0x6ABA JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6B1A JUMPI PUSH2 0x6B19 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6B43 JUMPI DUP1 PUSH2 0x6B2F DUP9 DUP3 PUSH2 0x686C JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6B1C JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6B61 JUMPI PUSH2 0x6B60 PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6B71 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6AE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6B8F JUMPI PUSH2 0x6B8E PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6BAC JUMPI PUSH2 0x6BAB PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6BB8 DUP5 DUP3 DUP6 ADD PUSH2 0x6B4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6BCB DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x6BFD JUMPI PUSH2 0x6BFC PUSH2 0x6164 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x6C1B PUSH0 DUP4 ADD DUP8 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C28 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C35 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6C42 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6C73 JUMPI PUSH2 0x6C72 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6C95 JUMPI PUSH2 0x6C94 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6CB1 JUMPI PUSH2 0x6CB0 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x6CD5 JUMPI PUSH2 0x6CD4 PUSH2 0x6C4B JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x6CF7 JUMPI PUSH2 0x6CF6 PUSH2 0x6C4F JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x6D13 JUMPI PUSH2 0x6D12 PUSH2 0x6C53 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6D2E PUSH0 DUP4 ADD DUP7 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D3B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x56DF JUMP JUMPDEST PUSH2 0x6D48 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x56DF JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D62 DUP2 PUSH2 0x6D50 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6D7B PUSH0 DUP4 ADD DUP5 PUSH2 0x6D59 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D96 JUMPI PUSH2 0x6D95 PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6DA3 DUP5 DUP3 DUP6 ADD PUSH2 0x571D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6DDE DUP2 PUSH2 0x684D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6DEF DUP4 DUP4 PUSH2 0x6DD5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x6E11 DUP3 PUSH2 0x6DAC JUMP JUMPDEST PUSH2 0x6E1B DUP2 DUP6 PUSH2 0x6DB6 JUMP JUMPDEST SWAP4 POP PUSH2 0x6E26 DUP4 PUSH2 0x6DC6 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6E56 JUMPI DUP2 MLOAD PUSH2 0x6E3D DUP9 DUP3 PUSH2 0x6DE4 JUMP JUMPDEST SWAP8 POP PUSH2 0x6E48 DUP4 PUSH2 0x6DFB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x6E29 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x6E76 PUSH0 DUP4 ADD DUP7 PUSH2 0x61F1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x6E88 DUP2 DUP6 PUSH2 0x6E07 JUMP JUMPDEST SWAP1 POP PUSH2 0x6E97 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6EB1 PUSH2 0x6EAC DUP5 PUSH2 0x528A JUMP JUMPDEST PUSH2 0x5268 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6ED4 JUMPI PUSH2 0x6ED3 PUSH2 0x52B5 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6EFD JUMPI DUP1 PUSH2 0x6EE9 DUP9 DUP3 PUSH2 0x6219 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x6ED6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6F1B JUMPI PUSH2 0x6F1A PUSH2 0x5286 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x6F2B DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x6E9F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6F4B JUMPI PUSH2 0x6F4A PUSH2 0x51BB JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6F58 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x6F69 DUP7 DUP3 DUP8 ADD PUSH2 0x686C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6F8A JUMPI PUSH2 0x6F89 PUSH2 0x51BF JUMP JUMPDEST JUMPDEST PUSH2 0x6F96 DUP7 DUP3 DUP8 ADD PUSH2 0x6F07 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x6FB3 PUSH0 DUP4 ADD DUP6 PUSH2 0x61F1 JUMP JUMPDEST PUSH2 0x6FC0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x61F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6FD1 DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x6FDC DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x6FEA DUP2 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x7001 JUMPI PUSH2 0x7000 PUSH2 0x6164 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x703F DUP3 PUSH2 0x51C3 JUMP JUMPDEST SWAP2 POP PUSH2 0x704A DUP4 PUSH2 0x51C3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x705A JUMPI PUSH2 0x7059 PUSH2 0x7008 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE ADDRESS SWAP11 PUSH25 0xC4164F5B8B6E48C22021A99ACA2BB60332BC12D21314FEE29F CALLVALUE 0xEE 0xFC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1523:41876:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3307:8;3285:31;;:10;:31;;;3281:74;;3325:30;;;;;;;;;;;;;;3281:74;1523:41876;;;;;23903:1070;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21155:1038;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14831:640;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19572:1159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22625:839;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26560:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6796:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3967:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3098:45;;;;;;;;;;;;;:::i;:::-;;13396:1041;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3494:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9334:1736;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;18255:902;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5379:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15872:915;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6115:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7659:1035;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;17130:731;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3731:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11788:741;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4763:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25354:915;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27343:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4413:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23903:1070;24183:17;24139:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;24168:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;24267:8:::2;24216:60;;:4;:14;;;24231:4;:17;;;:24;24216:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;24212:175;;24334:4;:14;;;24349:4;:17;;;:24;24334:40;;;;;;;;:::i;:::-;;;;;;;;24299:77;;;;;;;;;;;:::i;:::-;;;;;;;;24212:175;24397:22;24422:59;24432:4;:17;;;24451:4;:13;;;24466:4;:14;;;24422:9;:59::i;:::-;24397:84;;24492:21;24516:8;:18;;;24543:4;24516:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24492:57;;24560:68;24578:4;:14;;;24593:1;24578:17;;;;;;;;:::i;:::-;;;;;;;;24597:10;24609:5;24615:1;24609:8;;;;;;;;:::i;:::-;;;;;;;;24619;24560:17;:68::i;:::-;24639:87;24674:5;24681:4;:13;;;24696:4;:14;;;24720:4;24639:34;:87::i;:::-;24785:13;24749:8;:18;;;24776:4;24749:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;;;:::i;:::-;24737:61;;24833:9;24812:18;:30;24808:105;;;24883:18;24903:9;24851:62;;;;;;;;;;;;:::i;:::-;;;;;;;;24808:105;24924:42;24952:2;24956:9;24924:27;:42::i;:::-;24202:771;;2324:1:::1;23903:1070:::0;;;;;;;;:::o;21155:1038::-;21381:26;21321:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;21358:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;21455:8:::2;21427:37;;:4;:14;;;21442:1;21427:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;21423:104;;21508:4;:14;;;21523:1;21508:17;;;;;;;;:::i;:::-;;;;;;;;21473:54;;;;;;;;;;;:::i;:::-;;;;;;;;21423:104;21538:22;21563:59;21573:4;:17;;;21592:4;:13;;;21607:4;:14;;;21563:9;:59::i;:::-;21538:84;;21644:62;21658:4;:13;;;21673:5;21680:4;:14;;;21696:9;21644:13;:62::i;:::-;21632:74;;21736:9;21721;21731:1;21721:12;;;;;;;;:::i;:::-;;;;;;;;:24;21717:91;;;21784:9;21795;21805:1;21795:12;;;;;;;;:::i;:::-;;;;;;;;21754:54;;;;;;;;;;;;:::i;:::-;;;;;;;;21717:91;21819:50;21846:5;21852:1;21846:8;;;;;;;;:::i;:::-;;;;;;;;21856:9;21866:1;21856:12;;;;;;;;:::i;:::-;;;;;;;;21819:26;:50::i;:::-;21880:21;21904:78;21930:5;21937:4;:13;;;21952:4;:14;;;21968:9;21979:2;21904:25;:78::i;:::-;21880:102;;22013:9;21997:13;:25;21993:95;;;22063:9;22074:13;22031:57;;;;;;;;;;;;:::i;:::-;;;;;;;;21993:95;22115:9;22125:1;22115:12;;;;;;;;:::i;:::-;;;;;;;;22103:9;:24;22099:87;;;22129:57;22149:10;22173:9;22183:1;22173:12;;;;;;;;:::i;:::-;;;;;;;;22161:9;:24;;;;:::i;:::-;22129:19;:57::i;:::-;22099:87;21413:780;;2324:1:::1;21155:1038:::0;;;;;;;:::o;14831:640::-;15068:17;15024:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;15053:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;15097:22:::2;15122:59;15132:4;:17;;;15151:4;:13;;;15166:4;:14;;;15122:9;:59::i;:::-;15097:84;;15192:68;15210:4;:14;;;15225:1;15210:17;;;;;;;;:::i;:::-;;;;;;;;15229:10;15241:5;15247:1;15241:8;;;;;;;;:::i;:::-;;;;;;;;15251;15192:17;:68::i;:::-;15283:77;15309:8;15319:5;15326:4;:13;;;15341:4;:14;;;15357:2;15283:25;:77::i;:::-;15271:89;;15390:9;15375:12;:24;15371:93;;;15440:12;15454:9;15408:56;;;;;;;;;;;;:::i;:::-;;;;;;;;15371:93;15087:384;2324:1:::1;14831:640:::0;;;;;;;;:::o;19572:1159::-;19823:26;19779:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;19808:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;19916:8:::2;19865:60;;:4;:14;;;19880:4;:17;;;:24;19865:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;19861:175;;19983:4;:14;;;19998:4;:17;;;:24;19983:40;;;;;;;;:::i;:::-;;;;;;;;19948:77;;;;;;;;;;;:::i;:::-;;;;;;;;19861:175;20046:22;20071:59;20081:4;:17;;;20100:4;:13;;;20115:4;:14;;;20071:9;:59::i;:::-;20046:84;;20152:68;20166:4;:13;;;20181:5;20188:4;:14;;;20204:15;20152:13;:68::i;:::-;20140:80;;20250:11;20235:9;20245:1;20235:12;;;;;;;;:::i;:::-;;;;;;;;:26;20231:95;;;20300:11;20313:9;20323:1;20313:12;;;;;;;;:::i;:::-;;;;;;;;20270:56;;;;;;;;;;;;:::i;:::-;;;;;;;;20231:95;20337:72;20355:4;:14;;;20370:1;20355:17;;;;;;;;:::i;:::-;;;;;;;;20374:10;20386:5;20392:1;20386:8;;;;;;;;:::i;:::-;;;;;;;;20396:9;20406:1;20396:12;;;;;;;;:::i;:::-;;;;;;;;20337:17;:72::i;:::-;20420:22;20457:89;20483:5;20490:4;:13;;;20505:4;:14;;;20521:9;20540:4;20457:25;:89::i;:::-;20420:126;;20578:15;20561:14;:32;20557:109;;;20634:15;20651:14;20602:64;;;;;;;;;;;;:::i;:::-;;;;;;;;20557:109;20677:47;20705:2;20709:14;20677:27;:47::i;:::-;19851:880;;2324:1:::1;19572:1159:::0;;;;;;;;:::o;22625:839::-;22891:17;22847:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;22876:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;22920:22:::2;22945:59;22955:4;:17;;;22974:4;:13;;;22989:4;:14;;;22945:9;:59::i;:::-;22920:84;;23015:18;23036:4;:14;;;23051:5;:12;23036:28;;;;;;;;:::i;:::-;;;;;;;;23015:49;;23075:21;23099:11;:21;;;23121:2;23099:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23075:49;;23135:68;23153:4;:14;;;23168:1;23153:17;;;;;;;;:::i;:::-;;;;;;;;23172:10;23184:5;23190:1;23184:8;;;;;;;;:::i;:::-;;;;;;;;23194;23135:17;:68::i;:::-;23214:76;23249:5;23256:4;:13;;;23271:4;:14;;;23287:2;23214:34;:76::i;:::-;23341:13;23313:11;:21;;;23335:2;23313:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;23301:53;;23383:9;23368:12;:24;23364:93;;;23433:12;23447:9;23401:56;;;;;;;;;;;;:::i;:::-;;;;;;;;23364:93;22910:554;;;2324:1:::1;22625:839:::0;;;;;;;;:::o;26560:436::-;2099:9;2083:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2069:49;;:10;:49;;;2065:89;;2127:27;;;;;;;;;;;;;;2065:89;26692:1:::1;26666:28;;26674:5;26666:28;;::::0;26662:328:::1;;26729:17;26719:6;:27;:60;;26773:6;26719:60;;;26749:21;26719:60;26710:69;;26794:31;26814:2;26818:6;26794:19;:31::i;:::-;26662:328;;;26875:17;26865:6;:27;:69;;26928:6;26865:69;;;26895:5;:15;;;26919:4;26895:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26865:69;26856:78;;26949:30;26968:2;26972:6;26949:5;:18;;;;:30;;;;;:::i;:::-;26662:328;26560:436:::0;;;:::o;6796:235::-;6932:12;6967:9;:22;;;6990:6;6998;7006:8;7016:7;6967:57;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6960:64;;6796:235;;;;;;:::o;3967:104::-;4021:16;4056:8;4049:15;;3967:104;:::o;3098:45::-;4158:30:1;4191:26;:24;:26::i;:::-;4158:59;;4279:19;4302:1;:15;;;;;;;;;;;;4301:16;4279:38;;4327:18;4348:1;:14;;;;;;;;;;;;4327:35;;4706:17;4741:1;4726:11;:16;;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4805:1;4790:11;:16;;;:50;;;;;4839:1;4818:4;4810:25;;;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4968:1;4951;:14;;;:18;;;;;;;;;;;;;;;;;;4983:14;4979:67;;;5031:4;5013:1;:15;;;:22;;;;;;;;;;;;;;;;;;4979:67;5070:14;5066:101;;;5118:5;5100:1;:15;;;:23;;;;;;;;;;;;;;;;;;5142:14;5154:1;5142:14;;;;;;:::i;:::-;;;;;;;;5066:101;4092:1081;;;;;3098:45:5:o;13396:1041::-;13706:19;13727:20;13687:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;13759:14:::1;13784:55;13806:5;13820:8;13831:7;13784:55;;:21;:55::i;:::-;13759:81;;13865:19;13907:6;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13887:38;;13894:8;13887:38;;;13865:60;;13945:14;13940:123;;14016:15;14033:14;13979:69;;;;;;;;13940:123;14078:15;14095::::0;14130:86:::1;14147:6;14155:14;14171:15;14188:3;14193:7;14210:4;14130:16;:86::i;:::-;14077:139;;;;14261:14;:56;;14300:7;14309;14261:56;;;14279:7;14288;14261:56;14231:86;;;;;;;;13851:477;;;14338:37;14352:5;14359:2;14363:11;14338:13;:37::i;:::-;14385:45;14413:2;14417:12;14385:27;:45::i;:::-;13749:688;13396:1041:::0;;;;;;;;;;;;:::o;3494:109::-;3548:20;3587:9;3580:16;;3494:109;:::o;9334:1736::-;9492:20;9526;9560:19;9593;9626:27;9667:32;9724:15;9763:136;9802:19;:26;;;;;;;;;;:::i;:::-;9830:19;:26;;;;;;;;;;:::i;:::-;9858:19;:27;;;9763:21;:136::i;:::-;9724:185;;9953:7;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9923:49;;:19;:26;;;;;;;;;;:::i;:::-;:49;;;9919:89;;9981:27;;;;;;;;;;;;;;9919:89;10053:8;10023:38;;:19;:26;;;;;;;;;;:::i;:::-;:38;;;:82;;;;;10096:9;10065:19;:27;;;:40;10023:82;10019:893;;;10121:104;10139:19;:26;;;;;;;;;;:::i;:::-;10167:10;10187:7;10197:19;:27;;;10121:17;:104::i;:::-;10239:55;10274:7;10284:9;10239:26;:55::i;:::-;10019:893;;;10345:8;10315:38;;:19;:26;;;;;;;;;;:::i;:::-;:38;;;:82;;;;;10388:9;10357:19;:27;;;:40;10315:82;10311:601;;;10413:104;10431:19;:26;;;;;;;;;;:::i;:::-;10459:10;10479:7;10489:19;:27;;;10413:17;:104::i;:::-;10531:55;10566:7;10576:9;10531:26;:55::i;:::-;10311:601;;;10690:19;:26;;;;;;;;;;:::i;:::-;10743:19;:26;;;;;;;;;;:::i;:::-;10788:19;:27;;;10833:19;:27;;;10878:9;10624:277;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;10311:601;10019:893;11020:43;11034:19;11055:7;11020:13;:43::i;:::-;10922:141;;;;;;;;;;;;;;;;;;;;;;;;9714:1356;9334:1736;;;;;;;:::o;18255:902::-;18492:26;18448:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;18477:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;18530:22:::2;18555:59;18565:4;:17;;;18584:4;:13;;;18599:4;:14;;;18555:9;:59::i;:::-;18530:84;;18651:62;18665:4;:13;;;18680:5;18687:4;:14;;;18703:9;18651:13;:62::i;:::-;18639:74;;18747:11;18732:9;18742:1;18732:12;;;;;;;;:::i;:::-;;;;;;;;:26;18728:95;;;18797:11;18810:9;18820:1;18810:12;;;;;;;;:::i;:::-;;;;;;;;18767:56;;;;;;;;;;;;:::i;:::-;;;;;;;;18728:95;18838:72;18856:4;:14;;;18871:1;18856:17;;;;;;;;:::i;:::-;;;;;;;;18875:10;18887:5;18893:1;18887:8;;;;;;;;:::i;:::-;;;;;;;;18897:9;18907:1;18897:12;;;;;;;;:::i;:::-;;;;;;;;18838:17;:72::i;:::-;18925:22;18950:78;18976:5;18983:4;:13;;;18998:4;:14;;;19014:9;19025:2;18950:25;:78::i;:::-;18925:103;;19064:9;19047:14;:26;19043:97;;;19114:9;19125:14;19082:58;;;;;;;;;;;;:::i;:::-;;;;;;;;19043:97;18625:526;18520:637;2324:1:::1;18255:902:::0;;;;;;;;:::o;5379:272::-;5508:16;5526:21;5549:11;5609:4;:14;;;5624:9;5635:8;5609:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5576:68;;;;;;;;;;;;5379:272;;;;;;;:::o;15872:915::-;16123:17;16079:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;16108:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;16207:8:::2;16156:60;;:4;:14;;;16171:4;:17;;;:24;16156:40;;;;;;;;:::i;:::-;;;;;;;;:60;;;16152:175;;16274:4;:14;;;16289:4;:17;;;:24;16274:40;;;;;;;;:::i;:::-;;;;;;;;16239:77;;;;;;;;;;;:::i;:::-;;;;;;;;16152:175;16337:22;16362:59;16372:4;:17;;;16391:4;:13;;;16406:4;:14;;;16362:9;:59::i;:::-;16337:84;;16432:68;16450:4;:14;;;16465:1;16450:17;;;;;;;;:::i;:::-;;;;;;;;16469:10;16481:5;16487:1;16481:8;;;;;;;;:::i;:::-;;;;;;;;16491;16432:17;:68::i;:::-;16523:88;16549:8;16559:5;16566:4;:13;;;16581:4;:14;;;16605:4;16523:25;:88::i;:::-;16511:100;;16647:9;16626:18;:30;16622:105;;;16697:18;16717:9;16665:62;;;;;;;;;;;;:::i;:::-;;;;;;;;16622:105;16738:42;16766:2;16770:9;16738:27;:42::i;:::-;16142:645;2324:1:::1;15872:915:::0;;;;;;;;:::o;6115:274::-;6246:20;6268:17;6287:11;6347:4;:15;;;6363:8;6373;6347:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6314:68;;;;;;;;;;;;6115:274;;;;;;;:::o;7659:1035::-;7795:20;7829;7863:19;7896;7929:27;7970:32;8027:14;8065:136;8104:19;:26;;;;;;;;;;:::i;:::-;8132:19;:26;;;;;;;;;;:::i;:::-;8160:19;:27;;;8065:21;:136::i;:::-;8027:184;;8255:6;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8225:48;;:19;:26;;;;;;;;;;:::i;:::-;:48;;;8221:88;;8282:27;;;;;;;;;;;;;;8221:88;8320:103;8338:19;:26;;;;;;;;;;:::i;:::-;8366:10;8386:6;8395:19;:27;;;8320:17;:103::i;:::-;8433;8451:19;:26;;;;;;;;;;:::i;:::-;8479:10;8499:6;8508:19;:27;;;8433:17;:103::i;:::-;8645:42;8659:19;8680:6;8645:13;:42::i;:::-;8547:140;;;;;;;;;;;;;;;;;;;;;;;;8017:677;7659:1035;;;;;;;:::o;17130:731::-;17359:17;17299:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;17336:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;17424:8:::2;17396:37;;:4;:14;;;17411:1;17396:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;17392:104;;17477:4;:14;;;17492:1;17477:17;;;;;;;;:::i;:::-;;;;;;;;17442:54;;;;;;;;;;;:::i;:::-;;;;;;;;17392:104;17507:22;17532:59;17542:4;:17;;;17561:4;:13;;;17576:4;:14;;;17532:9;:59::i;:::-;17507:84;;17602:47;17629:5;17635:1;17629:8;;;;;;;;:::i;:::-;;;;;;;;17639:9;17602:26;:47::i;:::-;17672:78;17698:9;17709:5;17716:4;:13;;;17731:4;:14;;;17747:2;17672:25;:78::i;:::-;17660:90;;17780:9;17765:12;:24;17761:93;;;17830:12;17844:9;17798:56;;;;;;;;;;;;:::i;:::-;;;;;;;;17761:93;17382:479;2324:1:::1;17130:731:::0;;;;;;;:::o;3731:120::-;3787:28;3834:10;3827:17;;3731:120;:::o;11788:741::-;12099:15;12116;12080:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;12143:15:::1;12169:46;12191:6;12199;12207:7;12169:46;;:21;:46::i;:::-;12143:73;;12226:17;12256:7;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12246:29;;:6;:29;;;;12226:49;;12290:12;12286:69;;;12332:10;12344;12304:51;;;;;;;;12286:69;12387:67;12404:7;12413:10;12425;12437:3;12442:7;12451:2;12387:16;:67::i;:::-;12366:88;;;;;;;;12469:12;12465:57;;;12505:7;12514;12483:39;;;;;;;;12465:57;12133:396;;11788:741:::0;;;;;;;;;;;;;:::o;4763:137::-;4844:7;4870:4;:19;;;4890:2;4870:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4863:30;;4763:137;;;;:::o;25354:915::-;25602:17;25558:8;2244;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;25587:4:::1;2439:1;2411:4;:17;;;:24;:29;:81;;;;2468:4;:17;;;:24;2444:4;:13;;;:20;:48;;2411:81;:154;;;;2544:4;:14;;;:21;2539:1;2512:4;:17;;;:24;:28;;;;:::i;:::-;:53;;2411:154;2394:216;;;2583:27;;;;;;;;;;;;;;2394:216;25663:8:::2;25635:37;;:4;:14;;;25650:1;25635:17;;;;;;;;:::i;:::-;;;;;;;;:37;;;25631:104;;25716:4;:14;;;25731:1;25716:17;;;;;;;;:::i;:::-;;;;;;;;25681:54;;;;;;;;;;;:::i;:::-;;;;;;;;25631:104;25746:22;25771:59;25781:4;:17;;;25800:4;:13;;;25815:4;:14;;;25771:9;:59::i;:::-;25746:84;;25841:18;25862:4;:14;;;25877:5;:12;25862:28;;;;;;;;:::i;:::-;;;;;;;;25841:49;;25901:21;25925:11;:21;;;25947:2;25925:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25901:49;;25961:47;25988:5;25994:1;25988:8;;;;;;;;:::i;:::-;;;;;;;;25998:9;25961:26;:47::i;:::-;26019:76;26054:5;26061:4;:13;;;26076:4;:14;;;26092:2;26019:34;:76::i;:::-;26146:13;26118:11;:21;;;26140:2;26118:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;;;:::i;:::-;26106:53;;26188:9;26173:12;:24;26169:93;;;26238:12;26252:9;26206:56;;;;;;;;;;;;:::i;:::-;;;;;;;;26169:93;25621:648;;;2324:1:::1;25354:915:::0;;;;;;;:::o;27343:242::-;2099:9;2083:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2069:49;;:10;:49;;;2065:89;;2127:27;;;;;;;;;;;;;;2065:89;27520:7:::1;:25;;;27554:4;27561:2;27565:3;;27570:7;;27520:58;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27343:242:::0;;;;;;:::o;4413:143::-;4498:6;4523:4;:19;;;4543:5;4523:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4516:33;;4413:143;;;;:::o;40831:565::-;40981:22;41041:12;:19;41027:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41019:42;;41072:12;41094:16;41113:9;41123:1;41113:12;;;;;;;;:::i;:::-;;;;;;;;41094:31;;41164:9;41159:221;41179:5;:12;41175:1;:16;41159:221;;;41224:9;41216:17;;41263:9;41277:1;41273;:5;41263:16;;;;;;;;:::i;:::-;;;;;;;;41251:28;;41309:56;41318:5;41325:9;41336:12;41349:1;41336:15;;;;;;;;:::i;:::-;;;;;;;;41353:8;41362:1;41353:11;;;;;;;;:::i;:::-;;;;;;;;41309:8;:56::i;:::-;41298:5;41304:1;41298:8;;;;;;;;:::i;:::-;;;;;;;:67;;;;;;;;;;;41193:3;;;;;41159:221;;;;41009:387;;40831:565;;;;;:::o;42029:182::-;42144:1;42134:6;:11;42130:24;42147:7;42130:24;42164:40;42187:4;42193:2;42197:6;42164:5;:22;;;;:40;;;;;;:::i;:::-;42029:182;;;;;:::o;37395:1522::-;37585:12;37607:15;37632:17;37659:12;37682:16;37701:9;37711:1;37701:12;;;;;;;;:::i;:::-;;;;;;;;37682:31;;37753:9;37748:1153;37768:5;:12;37764:1;:16;37748:1153;;;37812:5;37818:1;37812:8;;;;;;;;:::i;:::-;;;;;;;;37805:15;;37848:8;37857:1;37848:11;;;;;;;;:::i;:::-;;;;;;;;37838:21;;37886:9;37878:17;;37925:9;37939:1;37935;:5;37925:16;;;;;;;;:::i;:::-;;;;;;;;37913:28;;37981:5;:12;37976:1;37972;:5;:21;:41;;38001:5;38011:1;38007;:5;38001:12;;;;;;;;:::i;:::-;;;;;;;;37972:41;;;37996:2;37972:41;37960:53;;38047:10;38036:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;38032:855;;38082:17;38101;38139:4;38123:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38081:77;;;;;;;;;38192:9;38184:17;;:5;:17;;;38180:573;;;38229:16;38272:9;38248:5;:15;;;38264:4;38248:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;38229:52;;38307:17;38327:43;38349:9;38360;38327:8;:21;;:43;;;;;:::i;:::-;38307:63;;38413:4;38397:26;;;38424:1;38427:9;38438;38397:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38203:272;;38180:573;;;38507:16;38550:9;38526:5;:15;;;38542:4;38526:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;38507:52;;38585:17;38605:43;38627:9;38638;38605:8;:21;;:43;;;;;:::i;:::-;38585:63;;38691:4;38675:26;;;38702:9;38713:1;38716:9;38675:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38481:272;;38180:573;38059:712;;38032:855;;;38807:4;38799:18;;;38839:4;38831:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38818:38;;:9;:38;;;38858:9;38799:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38032:855;37782:3;;;;;37748:1153;;;;37575:1342;;;;;37395:1522;;;;:::o;43207:190::-;43304:1;43294:6;:11;43290:24;43307:7;43290:24;43324:8;:17;;;43342:6;43324:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43359:31;43379:2;43383:6;43359:19;:31::i;:::-;43207:190;;;:::o;30849:1174::-;31029:26;31093:9;:16;31079:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31067:43;;31216:9;31190;31200:5;:12;31190:23;;;;;;;;:::i;:::-;;;;;;;:35;;;;;31241:9;31253:5;:12;31241:24;;31236:781;31272:1;31267;:6;31236:781;;31294:12;31309:9;31323:1;31319;:5;;;;:::i;:::-;31309:16;;;;;;;;:::i;:::-;;;;;;;;31294:31;;31339:15;31357:8;31370:1;31366;:5;;;;:::i;:::-;31357:15;;;;;;;;:::i;:::-;;;;;;;;31339:33;;31386:12;31401:5;31411:1;31407;:5;;;;:::i;:::-;31401:12;;;;;;;;:::i;:::-;;;;;;;;31386:27;;31443:10;31432:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;31428:579;;31474:17;31493:18;31532:4;31516:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31473:78;;;;;;;;;31581:9;31591:1;31581:12;;;;;;;;:::i;:::-;;;;;;;;31573:20;;:5;:20;;;31569:116;;;31644:10;31656:9;31617:49;;;;;;;;31569:116;31703:18;31724:9;31734:1;31724:12;;;;;;;;:::i;:::-;;;;;;;;31703:33;;31781:45;31804:9;31815:10;31781;:22;;:45;;;;;:::i;:::-;31754:73;;:9;31768:1;31764;:5;;;;:::i;:::-;31754:16;;;;;;;;:::i;:::-;;;;;;;:73;;;;;31455:387;;;31428:579;;;31909:83;31927:4;31942:9;31952:1;31942:12;;;;;;;;:::i;:::-;;;;;;;;31986:5;31957:34;;31965:4;31957:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;31909:9;:83::i;:::-;31866:126;;;;;;;;31867:9;31881:1;31877;:5;;;;:::i;:::-;31867:16;;;;;;;;:::i;:::-;;;;;;;31866:126;;;;;31428:579;31280:737;;;31275:3;;;;;:::i;:::-;;;;31236:781;;;;30849:1174;;;;;;:::o;42803:207::-;42899:1;42889:6;:11;42885:24;42902:7;42885:24;42919:8;:16;;;42943:6;42919:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42962:41;42992:2;42996:6;42969:8;42962:29;;;;:41;;;;;:::i;:::-;42803:207;;;:::o;35665:1399::-;35881:17;35910:12;35932:17;35959:12;35981:15;36007:16;36026:9;36036:1;36026:12;;;;;;;;:::i;:::-;;;;;;;;36007:31;;36078:9;36073:975;36093:5;:12;36089:1;:16;36073:975;;;36137:5;36143:1;36137:8;;;;;;;;:::i;:::-;;;;;;;;36130:15;;36173:8;36182:1;36173:11;;;;;;;;:::i;:::-;;;;;;;;36163:21;;36211:9;36203:17;;36250:9;36264:1;36260;:5;36250:16;;;;;;;;:::i;:::-;;;;;;;;36238:28;;36306:5;:12;36301:1;36297;:5;:21;:41;;36326:5;36336:1;36332;:5;36326:12;;;;;;;;:::i;:::-;;;;;;;;36297:41;;;36321:2;36297:41;36285:53;;36372:10;36361:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;36357:677;;36418:9;36432:1;36428;:5;36418:16;;;;;;;;:::i;:::-;;;;;;;;36406:28;;36468:9;36460:17;;:5;:17;;;36456:237;;;36521:4;36505:26;;;36532:1;36535:9;36546;36505:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36456:237;;;36631:4;36615:26;;;36642:9;36653:1;36656:9;36615:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36456:237;36357:677;;;36739:13;36776:4;36768:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36755:38;;:9;:38;;;36739:54;;36817:18;36837;36859:48;36867:4;36859:18;;;36878:8;36888:9;36859:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;:48::i;:::-;36816:91;;;;;;;;36934:8;36930:85;;;36956:10;36944:22;;36930:85;;;37005:10;36993:22;;36930:85;36717:317;;;36357:677;36107:3;;;;;36073:975;;;;35900:1164;;;;;35665:1399;;;;;;;:::o;42377:231::-;42466:1;42456:6;:11;42452:24;42469:7;42452:24;42487:12;42504:2;:7;;42519:6;42504:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42486:44;;;42545:7;42540:61;;42590:2;42594:6;42561:40;;;;;;;;;;;;:::i;:::-;;;;;;;;42540:61;42442:166;42377:231;;;:::o;33628:1627::-;33834:17;33863:12;33885:15;33910:17;33937:12;33960:16;33979:9;33989:1;33979:12;;;;;;;;:::i;:::-;;;;;;;;33960:31;;34013:8;34001:20;;34061:9;34056:1183;34076:5;:12;34072:1;:16;34056:1183;;;34120:5;34126:1;34120:8;;;;;;;;:::i;:::-;;;;;;;;34113:15;;34156:8;34165:1;34156:11;;;;;;;;:::i;:::-;;;;;;;;34146:21;;34194:9;34186:17;;34233:9;34247:1;34243;:5;34233:16;;;;;;;;:::i;:::-;;;;;;;;34221:28;;34289:5;:12;34284:1;34280;:5;:21;:41;;34309:5;34319:1;34315;:5;34309:12;;;;;;;;:::i;:::-;;;;;;;;34280:41;;;34304:2;34280:41;34268:53;;34355:10;34344:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;34340:885;;34390:16;34408;34445:4;34429:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34389:75;;;;;;;;;34499:9;34491:17;;:5;:17;;;34487:397;;;34548:42;34571:8;34581;34548:9;:22;;:42;;;;;:::i;:::-;34536:54;;34632:4;34616:26;;;34643:1;34646:9;34657;34616:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34487:397;;;34738:42;34761:8;34771;34738:9;:22;;:42;;;;;:::i;:::-;34726:54;;34822:4;34806:26;;;34833:9;34844:1;34847:9;34806:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34487:397;34367:535;;34340:885;;;34930:13;34967:4;34959:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34946:38;;:9;:38;;;34930:54;;35008:18;35028;35050:48;35058:4;35050:18;;;35069:8;35079:9;35050:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;:48::i;:::-;35007:91;;;;;;;;35125:8;35121:85;;;35147:10;35135:22;;35121:85;;;35196:10;35184:22;;35121:85;34908:317;;;34340:885;34090:3;;;;;34056:1183;;;;33853:1402;;;;;33628:1627;;;;;;;:::o;1419:220:26:-;1509:17;1552:23;;;1577:9;1588:6;1529:66;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:86;;1606:26;1620:5;1627:4;1606:13;:26::i;:::-;1499:140;1419:220;;;:::o;8737:170:1:-;8795:30;8870:21;8860:31;;8737:170;:::o;39247:376:5:-;39371:14;39418:9;:30;;;39449:6;39457;39465:7;39418:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;39401:80;;39514:1;39496:20;;:6;:20;;;39492:125;;39572:6;39589;39598:7;39539:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;39492:125;39247:376;;;;;:::o;32548:670::-;32759:15;32776;32804:30;32838:4;:9;;;32848:10;32860:2;32864:3;32869:7;32838:39;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32803:74;;32893:9;32888:160;32908:13;:20;32904:1;:24;32888:160;;;32960:26;:13;32974:1;32960:16;;;;;;;;:::i;:::-;;;;;;;;:24;:26::i;:::-;32949:37;;;;;;;:::i;:::-;;;33011:26;:13;33025:1;33011:16;;;;;;;;:::i;:::-;;;;;;;;:24;:26::i;:::-;33000:37;;;;;;;:::i;:::-;;;32930:3;;;;:::i;:::-;;;32888:160;;;;33072:10;33062:7;:20;:44;;;;33096:10;33086:7;:20;33062:44;33058:154;;;33160:10;33172:7;33181:10;33193:7;33129:72;;;;;;;;;;;;;;:::i;:::-;;;;;;;;33058:154;32793:425;32548:670;;;;;;;;;:::o;41607:154::-;41704:1;41694:6;:11;41690:24;41707:7;41690:24;41724:30;41743:2;41747:6;41724:5;:18;;;;:30;;;;;:::i;:::-;41607:154;;;;:::o;28066:2489::-;28212:20;28246;28280:19;28313;28346:27;28387:32;28168:3;:12;;;2244:8;2226:15;:26;2222:92;;;2288:8;2298:15;2261:53;;;;;;;;;;;;:::i;:::-;;;;;;;;2222:92;28495:3:::1;:17;;;;;;;;:::i;:::-;:24;;28472:3;:12;;;;;;;;:::i;:::-;:19;;:47;;:98;;;;28546:3;:17;;;;;;;;:::i;:::-;:24;;28523:3;:12;;;;;;;;:::i;:::-;:19;;:47;;28472:98;28468:171;;;28597:27;;;;;;;;;;;;;;28468:171;28679:16;28657:38:::0;::::1;:3;:19;;;:38;:75;;;;28716:16;28699:33:::0;::::1;:3;:14;;;:33;28657:75;28653:186;;;28788:3;:19;;;28809:3;:14;;;28759:65;;;;;;;;;;;;:::i;:::-;;;;;;;;28653:186;28853:33;28903:3;:12;;;;;;;;:::i;:::-;:19;;28889:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28853:70;;28964:3;:12;;;;;;;;:::i;:::-;:19;;28950:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28937:47;;29016:17;29036:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29016:38;;;;29136:9;29119:3;:14;;;29097:3;:19;;;:36;:48;:100;;;;29178:3;:19;;;29161:3;:14;;;29149:9;:26;:48;29097:100;29072:266;;;29272:3;:19;;;29293:3;:14;;;29309:9;29245:74;;;;;;;;;;;;;:::i;:::-;;;;;;;;29072:266;29361:9;29356:501;29376:16;:23;29372:1;:27;29356:501;;;29428:10;29461:3;:12;;;;;;;;:::i;:::-;29474:1;29461:15;;;;;;;:::i;:::-;;;;;;;;29448:9;29441:35;29428:48;;29509:1;29503:3;:7;:42;;;;29529:16;29514:31:::0;::::1;29522:3;29514:31;29503:42;29499:81;;;29576:3;29554:26;;;;;;;;;;;:::i;:::-;;;;;;;;29499:81;29626:3;29602:10;29613:1;29602:13;;;;;;;;:::i;:::-;;;;;;;:28;;;::::0;::::1;29674:164;29743:3;:17;;;;;;;;:::i;:::-;29761:1;29743:20;;;;;;;:::i;:::-;;;;;;;;29773:3;:17;;;;;;;;:::i;:::-;29791:1;29773:20;;;;;;;:::i;:::-;;;;;;;;29811:3;29674:36;:164::i;:::-;29652:16;29669:1;29652:19;;;;;;;;:::i;:::-;;;;;;;:186;;;::::0;::::1;29406:451;29401:3;;;;;29356:501;;;;28998:873;29885:23;29922:19:::0;30005:4:::1;:9;;;30015:3;:6;;;;;;;;;;:::i;:::-;30023:16;30041:3;:12;;;;;;;;;;:::i;:::-;30005:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29955:99;;;;;;;;;;;;30069:20;30092:32;30112:11;30092:15;:19;;:32;;;;:::i;:::-;30069:55;;30154:22;:12;:20;:22::i;:::-;30139:37;;;;30205:22;:12;:20;:22::i;:::-;30190:37;;;;30261:3;:14;;;30246:12;:29;:62;;;;30294:3;:14;;;30279:12;:29;30246:62;30242:198;;;30366:3;:14;;;30382:12;30396:3;:14;;;30412:12;30335:90;;;;;;;;;;;;;;:::i;:::-;;;;;;;;30242:198;30468:21;:11;:19;:21::i;:::-;30454:35;;;;30517:21;:11;:19;:21::i;:::-;30503:35;;;;28444:2105;;;;28066:2489:::0;;;;;;;;;:::o;40051:478::-;40179:12;40222:10;40211:21;;;;;;;;:::i;:::-;;:7;:21;;;;;;;;:::i;:::-;;;40207:316;;40255:10;:18;;;40282:6;40299;40255:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40248:59;;40341:1;40325:18;;:4;:18;;;40321:98;;40385:6;40402;40411:7;40352:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;40321:98;40207:316;;;40465:46;40487:6;40495;40503:7;40465:21;:46::i;:::-;40450:62;;40207:316;40051:478;;;;;;:::o;944:250:26:-;1053:17;1096:27;;;1125:5;1132:9;1143:6;1073:77;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1053:97;;1161:26;1175:5;1182:4;1161:13;:26::i;:::-;1043:151;944:250;;;;:::o;1404:544:25:-;1530:17;1579:1;1567:8;:13;1563:63;;1589:37;;;;;;;;;;;;;;1563:63;1653:1;1640:9;:14;:33;;;;1672:1;1658:10;:15;1640:33;1636:86;;;1682:40;;;;;;;;;;;;;;1636:86;1732:23;1769:3;1758:8;:14;;;;:::i;:::-;1732:40;;1782:17;1820:10;1802:15;:28;;;;:::i;:::-;1782:48;;1840:19;1881:15;1874:4;1862:9;:16;;;;:::i;:::-;:34;;;;:::i;:::-;1840:56;;1930:11;1918:9;:23;;;;:::i;:::-;1906:35;;1553:395;;;1404:544;;;;;:::o;2066:493::-;2192:16;2241:1;2228:9;:14;2224:64;;2251:37;;;;;;;;;;;;;;2224:64;2315:1;2302:9;:14;:33;;;;2334:1;2320:10;:15;2302:33;2298:86;;;2344:40;;;;;;;;;;;;;;2298:86;2394:17;2438:4;2426:9;2414;:21;;;;:::i;:::-;:28;;;;:::i;:::-;2394:48;;2452:19;2501:3;2488:9;2475:10;:22;;;;:::i;:::-;2474:30;;;;:::i;:::-;2452:52;;2551:1;2537:11;2525:9;:23;;;;:::i;:::-;:27;;;;:::i;:::-;2514:38;;2214:345;;2066:493;;;;;:::o;2521:178:30:-;2571:10;2583;2641:8;2638:1;2634:16;2628:22;;2681:1;2673:6;2669:14;2663:20;;2521:178;;;:::o;1645:757:26:-;1720:12;1779:1;1773:4;1766:15;1864:4;1858;1851;1845:11;1838:4;1832;1828:15;1825:1;1818:5;1811;1806:63;1795:74;;1890:7;1915:1;1910:194;;;;2150:16;2188:1;2183:56;;;;2306:1;2299:4;2293:11;2290:18;2281:7;2277:32;2266:43;;2143:168;;2183:56;2229:5;2217:18;2210:26;2203:34;2192:45;;2143:168;;1883:442;;1910:194;1938:16;1935:155;;;2004:16;1998:4;1992;1977:44;2055:16;2049:4;2042:30;1935:155;1883:442;;2350:7;2345:50;;2366:29;;;;;;;;;;;;;;2345:50;1710:692;1645:757;;:::o;2914:132:30:-;2965:9;3021:8;3018:1;3014:16;3009:21;;2914:132;;;:::o;3263:130::-;3314:9;3375:1;3367:6;3363:14;3358:19;;3263:130;;;:::o;1186:392:29:-;1310:14;1349:69;1360:13;1349:69;;647:18:28;703:2:29;1349:6;:10;;:69;;;;;;:::i;:::-;1340:78;;1437:69;1448:13;1437:69;;647:18:28;646:2:29;1437:6;:10;;:69;;;;;;:::i;:::-;1428:78;;1525:46;1536:2;1525:46;;535:8:28;590:1:29;1525:6;:10;;:46;;;;;;:::i;:::-;1516:55;;1186:392;;;;;:::o;5512:263:30:-;5570:9;5626:1;5623;5619:9;5614:14;;5656:1;5652;:5;:50;;;;5699:1;5691:10;;5661:41;;5677:1;5669:10;;5661:41;;;5652:50;5648:121;;;5725:33;;;;;;;;;;;;;;5648:121;5512:263;;;;:::o;1099:317:28:-;1221:18;1321:4;1313:6;1309:17;1305:22;1296:7;1292:36;1278:50;;1393:4;1386:5;1382:16;1374:6;1370:29;1358:10;1355:45;1341:59;;1099:317;;;;;;:::o;7:75:34:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;813:102;854:6;905:2;901:7;896:2;889:5;885:14;881:28;871:38;;813:102;;;:::o;921:180::-;969:77;966:1;959:88;1066:4;1063:1;1056:15;1090:4;1087:1;1080:15;1107:281;1190:27;1212:4;1190:27;:::i;:::-;1182:6;1178:40;1320:6;1308:10;1305:22;1284:18;1272:10;1269:34;1266:62;1263:88;;;1331:18;;:::i;:::-;1263:88;1371:10;1367:2;1360:22;1150:238;1107:281;;:::o;1394:129::-;1428:6;1455:20;;:::i;:::-;1445:30;;1484:33;1512:4;1504:6;1484:33;:::i;:::-;1394:129;;;:::o;1529:117::-;1638:1;1635;1628:12;1652:117;1761:1;1758;1751:12;1775:311;1852:4;1942:18;1934:6;1931:30;1928:56;;;1964:18;;:::i;:::-;1928:56;2014:4;2006:6;2002:17;1994:25;;2074:4;2068;2064:15;2056:23;;1775:311;;;:::o;2092:117::-;2201:1;2198;2191:12;2232:710;2328:5;2353:81;2369:64;2426:6;2369:64;:::i;:::-;2353:81;:::i;:::-;2344:90;;2454:5;2483:6;2476:5;2469:21;2517:4;2510:5;2506:16;2499:23;;2570:4;2562:6;2558:17;2550:6;2546:30;2599:3;2591:6;2588:15;2585:122;;;2618:79;;:::i;:::-;2585:122;2733:6;2716:220;2750:6;2745:3;2742:15;2716:220;;;2825:3;2854:37;2887:3;2875:10;2854:37;:::i;:::-;2849:3;2842:50;2921:4;2916:3;2912:14;2905:21;;2792:144;2776:4;2771:3;2767:14;2760:21;;2716:220;;;2720:21;2334:608;;2232:710;;;;;:::o;2965:370::-;3036:5;3085:3;3078:4;3070:6;3066:17;3062:27;3052:122;;3093:79;;:::i;:::-;3052:122;3210:6;3197:20;3235:94;3325:3;3317:6;3310:4;3302:6;3298:17;3235:94;:::i;:::-;3226:103;;3042:293;2965:370;;;;:::o;3341:323::-;3430:4;3520:18;3512:6;3509:30;3506:56;;;3542:18;;:::i;:::-;3506:56;3592:4;3584:6;3580:17;3572:25;;3652:4;3646;3642:15;3634:23;;3341:323;;;:::o;3670:111::-;3755:1;3748:5;3745:12;3735:40;;3771:1;3768;3761:12;3735:40;3670:111;:::o;3787:163::-;3845:5;3883:6;3870:20;3861:29;;3899:45;3938:5;3899:45;:::i;:::-;3787:163;;;;:::o;3988:746::-;4096:5;4121:93;4137:76;4206:6;4137:76;:::i;:::-;4121:93;:::i;:::-;4112:102;;4234:5;4263:6;4256:5;4249:21;4297:4;4290:5;4286:16;4279:23;;4350:4;4342:6;4338:17;4330:6;4326:30;4379:3;4371:6;4368:15;4365:122;;;4398:79;;:::i;:::-;4365:122;4513:6;4496:232;4530:6;4525:3;4522:15;4496:232;;;4605:3;4634:49;4679:3;4667:10;4634:49;:::i;:::-;4629:3;4622:62;4713:4;4708:3;4704:14;4697:21;;4572:156;4556:4;4551:3;4547:14;4540:21;;4496:232;;;4500:21;4102:632;;3988:746;;;;;:::o;4772:394::-;4855:5;4904:3;4897:4;4889:6;4885:17;4881:27;4871:122;;4912:79;;:::i;:::-;4871:122;5029:6;5016:20;5054:106;5156:3;5148:6;5141:4;5133:6;5129:17;5054:106;:::i;:::-;5045:115;;4861:305;4772:394;;;;:::o;5172:325::-;5263:4;5353:18;5345:6;5342:30;5339:56;;;5375:18;;:::i;:::-;5339:56;5425:4;5417:6;5413:17;5405:25;;5485:4;5479;5475:15;5467:23;;5172:325;;;:::o;5503:126::-;5540:7;5580:42;5573:5;5569:54;5558:65;;5503:126;;;:::o;5635:96::-;5672:7;5701:24;5719:5;5701:24;:::i;:::-;5690:35;;5635:96;;;:::o;5737:110::-;5788:7;5817:24;5835:5;5817:24;:::i;:::-;5806:35;;5737:110;;;:::o;5853:150::-;5940:38;5972:5;5940:38;:::i;:::-;5933:5;5930:49;5920:77;;5993:1;5990;5983:12;5920:77;5853:150;:::o;6009:167::-;6069:5;6107:6;6094:20;6085:29;;6123:47;6164:5;6123:47;:::i;:::-;6009:167;;;;:::o;6207:752::-;6317:5;6342:95;6358:78;6429:6;6358:78;:::i;:::-;6342:95;:::i;:::-;6333:104;;6457:5;6486:6;6479:5;6472:21;6520:4;6513:5;6509:16;6502:23;;6573:4;6565:6;6561:17;6553:6;6549:30;6602:3;6594:6;6591:15;6588:122;;;6621:79;;:::i;:::-;6588:122;6736:6;6719:234;6753:6;6748:3;6745:15;6719:234;;;6828:3;6857:51;6904:3;6892:10;6857:51;:::i;:::-;6852:3;6845:64;6938:4;6933:3;6929:14;6922:21;;6795:158;6779:4;6774:3;6770:14;6763:21;;6719:234;;;6723:21;6323:636;;6207:752;;;;;:::o;6990:398::-;7075:5;7124:3;7117:4;7109:6;7105:17;7101:27;7091:122;;7132:79;;:::i;:::-;7091:122;7249:6;7236:20;7274:108;7378:3;7370:6;7363:4;7355:6;7351:17;7274:108;:::i;:::-;7265:117;;7081:307;6990:398;;;;:::o;7423:1330::-;7494:5;7538:4;7526:9;7521:3;7517:19;7513:30;7510:117;;;7546:79;;:::i;:::-;7510:117;7645:21;7661:4;7645:21;:::i;:::-;7636:30;;7761:1;7750:9;7746:17;7733:31;7791:18;7783:6;7780:30;7777:117;;;7813:79;;:::i;:::-;7777:117;7933:74;8003:3;7994:6;7983:9;7979:22;7933:74;:::i;:::-;7926:4;7919:5;7915:16;7908:100;7676:343;8110:2;8099:9;8095:18;8082:32;8141:18;8133:6;8130:30;8127:117;;;8163:79;;:::i;:::-;8127:117;8283:86;8365:3;8356:6;8345:9;8341:22;8283:86;:::i;:::-;8276:4;8269:5;8265:16;8258:112;8029:352;8473:2;8462:9;8458:18;8445:32;8504:18;8496:6;8493:30;8490:117;;;8526:79;;:::i;:::-;8490:117;8646:88;8730:3;8721:6;8710:9;8706:22;8646:88;:::i;:::-;8639:4;8632:5;8628:16;8621:114;8391:355;7423:1330;;;;:::o;8759:104::-;8804:7;8833:24;8851:5;8833:24;:::i;:::-;8822:35;;8759:104;;;:::o;8869:138::-;8950:32;8976:5;8950:32;:::i;:::-;8943:5;8940:43;8930:71;;8997:1;8994;8987:12;8930:71;8869:138;:::o;9013:155::-;9067:5;9105:6;9092:20;9083:29;;9121:41;9156:5;9121:41;:::i;:::-;9013:155;;;;:::o;9174:1131::-;9299:6;9307;9315;9323;9331;9380:3;9368:9;9359:7;9355:23;9351:33;9348:120;;;9387:79;;:::i;:::-;9348:120;9507:1;9532:53;9577:7;9568:6;9557:9;9553:22;9532:53;:::i;:::-;9522:63;;9478:117;9634:2;9660:53;9705:7;9696:6;9685:9;9681:22;9660:53;:::i;:::-;9650:63;;9605:118;9790:2;9779:9;9775:18;9762:32;9821:18;9813:6;9810:30;9807:117;;;9843:79;;:::i;:::-;9807:117;9948:75;10015:7;10006:6;9995:9;9991:22;9948:75;:::i;:::-;9938:85;;9733:300;10072:2;10098:61;10151:7;10142:6;10131:9;10127:22;10098:61;:::i;:::-;10088:71;;10043:126;10208:3;10235:53;10280:7;10271:6;10260:9;10256:22;10235:53;:::i;:::-;10225:63;;10179:119;9174:1131;;;;;;;;:::o;10311:118::-;10398:24;10416:5;10398:24;:::i;:::-;10393:3;10386:37;10311:118;;:::o;10435:222::-;10528:4;10566:2;10555:9;10551:18;10543:26;;10579:71;10647:1;10636:9;10632:17;10623:6;10579:71;:::i;:::-;10435:222;;;;:::o;10663:122::-;10736:24;10754:5;10736:24;:::i;:::-;10729:5;10726:35;10716:63;;10775:1;10772;10765:12;10716:63;10663:122;:::o;10791:139::-;10837:5;10875:6;10862:20;10853:29;;10891:33;10918:5;10891:33;:::i;:::-;10791:139;;;;:::o;10936:969::-;11044:6;11052;11060;11068;11117:3;11105:9;11096:7;11092:23;11088:33;11085:120;;;11124:79;;:::i;:::-;11085:120;11244:1;11269:53;11314:7;11305:6;11294:9;11290:22;11269:53;:::i;:::-;11259:63;;11215:117;11399:2;11388:9;11384:18;11371:32;11430:18;11422:6;11419:30;11416:117;;;11452:79;;:::i;:::-;11416:117;11557:75;11624:7;11615:6;11604:9;11600:22;11557:75;:::i;:::-;11547:85;;11342:300;11681:2;11707:53;11752:7;11743:6;11732:9;11728:22;11707:53;:::i;:::-;11697:63;;11652:118;11809:2;11835:53;11880:7;11871:6;11860:9;11856:22;11835:53;:::i;:::-;11825:63;;11780:118;10936:969;;;;;;;:::o;11911:114::-;11978:6;12012:5;12006:12;11996:22;;11911:114;;;:::o;12031:184::-;12130:11;12164:6;12159:3;12152:19;12204:4;12199:3;12195:14;12180:29;;12031:184;;;;:::o;12221:132::-;12288:4;12311:3;12303:11;;12341:4;12336:3;12332:14;12324:22;;12221:132;;;:::o;12359:108::-;12436:24;12454:5;12436:24;:::i;:::-;12431:3;12424:37;12359:108;;:::o;12473:179::-;12542:10;12563:46;12605:3;12597:6;12563:46;:::i;:::-;12641:4;12636:3;12632:14;12618:28;;12473:179;;;;:::o;12658:113::-;12728:4;12760;12755:3;12751:14;12743:22;;12658:113;;;:::o;12807:732::-;12926:3;12955:54;13003:5;12955:54;:::i;:::-;13025:86;13104:6;13099:3;13025:86;:::i;:::-;13018:93;;13135:56;13185:5;13135:56;:::i;:::-;13214:7;13245:1;13230:284;13255:6;13252:1;13249:13;13230:284;;;13331:6;13325:13;13358:63;13417:3;13402:13;13358:63;:::i;:::-;13351:70;;13444:60;13497:6;13444:60;:::i;:::-;13434:70;;13290:224;13277:1;13274;13270:9;13265:14;;13230:284;;;13234:14;13530:3;13523:10;;12931:608;;;12807:732;;;;:::o;13545:373::-;13688:4;13726:2;13715:9;13711:18;13703:26;;13775:9;13769:4;13765:20;13761:1;13750:9;13746:17;13739:47;13803:108;13906:4;13897:6;13803:108;:::i;:::-;13795:116;;13545:373;;;;:::o;13924:1115::-;14041:6;14049;14057;14065;14073;14122:3;14110:9;14101:7;14097:23;14093:33;14090:120;;;14129:79;;:::i;:::-;14090:120;14249:1;14274:53;14319:7;14310:6;14299:9;14295:22;14274:53;:::i;:::-;14264:63;;14220:117;14376:2;14402:53;14447:7;14438:6;14427:9;14423:22;14402:53;:::i;:::-;14392:63;;14347:118;14532:2;14521:9;14517:18;14504:32;14563:18;14555:6;14552:30;14549:117;;;14585:79;;:::i;:::-;14549:117;14690:75;14757:7;14748:6;14737:9;14733:22;14690:75;:::i;:::-;14680:85;;14475:300;14814:2;14840:53;14885:7;14876:6;14865:9;14861:22;14840:53;:::i;:::-;14830:63;;14785:118;14942:3;14969:53;15014:7;15005:6;14994:9;14990:22;14969:53;:::i;:::-;14959:63;;14913:119;13924:1115;;;;;;;;:::o;15045:647::-;15136:6;15144;15152;15201:2;15189:9;15180:7;15176:23;15172:32;15169:119;;;15207:79;;:::i;:::-;15169:119;15327:1;15352:67;15411:7;15402:6;15391:9;15387:22;15352:67;:::i;:::-;15342:77;;15298:131;15468:2;15494:53;15539:7;15530:6;15519:9;15515:22;15494:53;:::i;:::-;15484:63;;15439:118;15596:2;15622:53;15667:7;15658:6;15647:9;15643:22;15622:53;:::i;:::-;15612:63;;15567:118;15045:647;;;;;:::o;15698:91::-;15734:7;15774:8;15767:5;15763:20;15752:31;;15698:91;;;:::o;15795:120::-;15867:23;15884:5;15867:23;:::i;:::-;15860:5;15857:34;15847:62;;15905:1;15902;15895:12;15847:62;15795:120;:::o;15921:137::-;15966:5;16004:6;15991:20;15982:29;;16020:32;16046:5;16020:32;:::i;:::-;15921:137;;;;:::o;16064:89::-;16100:7;16140:6;16133:5;16129:18;16118:29;;16064:89;;;:::o;16159:120::-;16231:23;16248:5;16231:23;:::i;:::-;16224:5;16221:34;16211:62;;16269:1;16266;16259:12;16211:62;16159:120;:::o;16285:137::-;16330:5;16368:6;16355:20;16346:29;;16384:32;16410:5;16384:32;:::i;:::-;16285:137;;;;:::o;16428:817::-;16540:6;16548;16556;16564;16613:3;16601:9;16592:7;16588:23;16584:33;16581:120;;;16620:79;;:::i;:::-;16581:120;16740:1;16765:67;16824:7;16815:6;16804:9;16800:22;16765:67;:::i;:::-;16755:77;;16711:131;16881:2;16907:67;16966:7;16957:6;16946:9;16942:22;16907:67;:::i;:::-;16897:77;;16852:132;17023:2;17049:52;17093:7;17084:6;17073:9;17069:22;17049:52;:::i;:::-;17039:62;;16994:117;17150:2;17176:52;17220:7;17211:6;17200:9;17196:22;17176:52;:::i;:::-;17166:62;;17121:117;16428:817;;;;;;;:::o;17251:60::-;17279:3;17300:5;17293:12;;17251:60;;;:::o;17317:142::-;17367:9;17400:53;17418:34;17427:24;17445:5;17427:24;:::i;:::-;17418:34;:::i;:::-;17400:53;:::i;:::-;17387:66;;17317:142;;;:::o;17465:126::-;17515:9;17548:37;17579:5;17548:37;:::i;:::-;17535:50;;17465:126;;;:::o;17597:142::-;17663:9;17696:37;17727:5;17696:37;:::i;:::-;17683:50;;17597:142;;;:::o;17745:163::-;17848:53;17895:5;17848:53;:::i;:::-;17843:3;17836:66;17745:163;;:::o;17914:254::-;18023:4;18061:2;18050:9;18046:18;18038:26;;18074:87;18158:1;18147:9;18143:17;18134:6;18074:87;:::i;:::-;17914:254;;;;:::o;18174:143::-;18241:9;18274:37;18305:5;18274:37;:::i;:::-;18261:50;;18174:143;;;:::o;18323:165::-;18427:54;18475:5;18427:54;:::i;:::-;18422:3;18415:67;18323:165;;:::o;18494:256::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18655:88;18740:1;18729:9;18725:17;18716:6;18655:88;:::i;:::-;18494:256;;;;:::o;18756:1811::-;18949:6;18957;18965;18973;18981;18989;18997;19005;19054:3;19042:9;19033:7;19029:23;19025:33;19022:120;;;19061:79;;:::i;:::-;19022:120;19181:1;19206:67;19265:7;19256:6;19245:9;19241:22;19206:67;:::i;:::-;19196:77;;19152:131;19322:2;19348:52;19392:7;19383:6;19372:9;19368:22;19348:52;:::i;:::-;19338:62;;19293:117;19449:2;19475:53;19520:7;19511:6;19500:9;19496:22;19475:53;:::i;:::-;19465:63;;19420:118;19577:2;19603:53;19648:7;19639:6;19628:9;19624:22;19603:53;:::i;:::-;19593:63;;19548:118;19733:3;19722:9;19718:19;19705:33;19765:18;19757:6;19754:30;19751:117;;;19787:79;;:::i;:::-;19751:117;19892:78;19962:7;19953:6;19942:9;19938:22;19892:78;:::i;:::-;19882:88;;19676:304;20047:3;20036:9;20032:19;20019:33;20079:18;20071:6;20068:30;20065:117;;;20101:79;;:::i;:::-;20065:117;20206:78;20276:7;20267:6;20256:9;20252:22;20206:78;:::i;:::-;20196:88;;19990:304;20333:3;20360:61;20413:7;20404:6;20393:9;20389:22;20360:61;:::i;:::-;20350:71;;20304:127;20470:3;20497:53;20542:7;20533:6;20522:9;20518:22;20497:53;:::i;:::-;20487:63;;20441:119;18756:1811;;;;;;;;;;;:::o;20573:332::-;20694:4;20732:2;20721:9;20717:18;20709:26;;20745:71;20813:1;20802:9;20798:17;20789:6;20745:71;:::i;:::-;20826:72;20894:2;20883:9;20879:18;20870:6;20826:72;:::i;:::-;20573:332;;;;;:::o;20911:145::-;20980:9;21013:37;21044:5;21013:37;:::i;:::-;21000:50;;20911:145;;;:::o;21062:169::-;21168:56;21218:5;21168:56;:::i;:::-;21163:3;21156:69;21062:169;;:::o;21237:260::-;21349:4;21387:2;21376:9;21372:18;21364:26;;21400:90;21487:1;21476:9;21472:17;21463:6;21400:90;:::i;:::-;21237:260;;;;:::o;21503:117::-;21612:1;21609;21602:12;21670:244;21755:5;21796:3;21787:6;21782:3;21778:16;21774:26;21771:113;;;21803:79;;:::i;:::-;21771:113;21902:6;21893:15;;21670:244;;;;:::o;21920:567::-;22018:6;22067:2;22055:9;22046:7;22042:23;22038:32;22035:119;;;22073:79;;:::i;:::-;22035:119;22221:1;22210:9;22206:17;22193:31;22251:18;22243:6;22240:30;22237:117;;;22273:79;;:::i;:::-;22237:117;22378:92;22462:7;22453:6;22442:9;22438:22;22378:92;:::i;:::-;22368:102;;22164:316;21920:567;;;;:::o;22493:1077::-;22826:4;22864:3;22853:9;22849:19;22841:27;;22878:71;22946:1;22935:9;22931:17;22922:6;22878:71;:::i;:::-;22959:72;23027:2;23016:9;23012:18;23003:6;22959:72;:::i;:::-;23041;23109:2;23098:9;23094:18;23085:6;23041:72;:::i;:::-;23123;23191:2;23180:9;23176:18;23167:6;23123:72;:::i;:::-;23243:9;23237:4;23233:20;23227:3;23216:9;23212:19;23205:49;23271:108;23374:4;23365:6;23271:108;:::i;:::-;23263:116;;23427:9;23421:4;23417:20;23411:3;23400:9;23396:19;23389:49;23455:108;23558:4;23549:6;23455:108;:::i;:::-;23447:116;;22493:1077;;;;;;;;;:::o;23576:112::-;23629:7;23658:24;23676:5;23658:24;:::i;:::-;23647:35;;23576:112;;;:::o;23694:154::-;23783:40;23817:5;23783:40;:::i;:::-;23776:5;23773:51;23763:79;;23838:1;23835;23828:12;23763:79;23694:154;:::o;23854:171::-;23916:5;23954:6;23941:20;23932:29;;23970:49;24013:5;23970:49;:::i;:::-;23854:171;;;;:::o;24031:118::-;24068:7;24108:34;24101:5;24097:46;24086:57;;24031:118;;;:::o;24155:122::-;24228:24;24246:5;24228:24;:::i;:::-;24221:5;24218:35;24208:63;;24267:1;24264;24257:12;24208:63;24155:122;:::o;24283:139::-;24329:5;24367:6;24354:20;24345:29;;24383:33;24410:5;24383:33;:::i;:::-;24283:139;;;;:::o;24428:90::-;24462:7;24505:5;24498:13;24491:21;24480:32;;24428:90;;;:::o;24524:116::-;24594:21;24609:5;24594:21;:::i;:::-;24587:5;24584:32;24574:60;;24630:1;24627;24620:12;24574:60;24524:116;:::o;24646:133::-;24689:5;24727:6;24714:20;24705:29;;24743:30;24767:5;24743:30;:::i;:::-;24646:133;;;;:::o;24785:645::-;24875:6;24883;24891;24940:2;24928:9;24919:7;24915:23;24911:32;24908:119;;;24946:79;;:::i;:::-;24908:119;25066:1;25091:69;25152:7;25143:6;25132:9;25128:22;25091:69;:::i;:::-;25081:79;;25037:133;25209:2;25235:53;25280:7;25271:6;25260:9;25256:22;25235:53;:::i;:::-;25225:63;;25180:118;25337:2;25363:50;25405:7;25396:6;25385:9;25381:22;25363:50;:::i;:::-;25353:60;;25308:115;24785:645;;;;;:::o;25436:118::-;25523:24;25541:5;25523:24;:::i;:::-;25518:3;25511:37;25436:118;;:::o;25560:442::-;25709:4;25747:2;25736:9;25732:18;25724:26;;25760:71;25828:1;25817:9;25813:17;25804:6;25760:71;:::i;:::-;25841:72;25909:2;25898:9;25894:18;25885:6;25841:72;:::i;:::-;25923;25991:2;25980:9;25976:18;25967:6;25923:72;:::i;:::-;25560:442;;;;;;:::o;26008:153::-;26085:9;26118:37;26149:5;26118:37;:::i;:::-;26105:50;;26008:153;;;:::o;26167:185::-;26281:64;26339:5;26281:64;:::i;:::-;26276:3;26269:77;26167:185;;:::o;26358:276::-;26478:4;26516:2;26505:9;26501:18;26493:26;;26529:98;26624:1;26613:9;26609:17;26600:6;26529:98;:::i;:::-;26358:276;;;;:::o;26640:1969::-;26848:6;26856;26864;26872;26880;26888;26896;26904;26912;26961:3;26949:9;26940:7;26936:23;26932:33;26929:120;;;26968:79;;:::i;:::-;26929:120;27088:1;27113:67;27172:7;27163:6;27152:9;27148:22;27113:67;:::i;:::-;27103:77;;27059:131;27229:2;27255:67;27314:7;27305:6;27294:9;27290:22;27255:67;:::i;:::-;27245:77;;27200:132;27371:2;27397:52;27441:7;27432:6;27421:9;27417:22;27397:52;:::i;:::-;27387:62;;27342:117;27498:2;27524:53;27569:7;27560:6;27549:9;27545:22;27524:53;:::i;:::-;27514:63;;27469:118;27626:3;27653:53;27698:7;27689:6;27678:9;27674:22;27653:53;:::i;:::-;27643:63;;27597:119;27783:3;27772:9;27768:19;27755:33;27815:18;27807:6;27804:30;27801:117;;;27837:79;;:::i;:::-;27801:117;27942:78;28012:7;28003:6;27992:9;27988:22;27942:78;:::i;:::-;27932:88;;27726:304;28097:3;28086:9;28082:19;28069:33;28129:18;28121:6;28118:30;28115:117;;;28151:79;;:::i;:::-;28115:117;28256:78;28326:7;28317:6;28306:9;28302:22;28256:78;:::i;:::-;28246:88;;28040:304;28383:3;28410:53;28455:7;28446:6;28435:9;28431:22;28410:53;:::i;:::-;28400:63;;28354:119;28512:3;28539:53;28584:7;28575:6;28564:9;28560:22;28539:53;:::i;:::-;28529:63;;28483:119;26640:1969;;;;;;;;;;;:::o;28615:504::-;28698:6;28706;28755:2;28743:9;28734:7;28730:23;28726:32;28723:119;;;28761:79;;:::i;:::-;28723:119;28881:1;28906:69;28967:7;28958:6;28947:9;28943:22;28906:69;:::i;:::-;28896:79;;28852:133;29024:2;29050:52;29094:7;29085:6;29074:9;29070:22;29050:52;:::i;:::-;29040:62;;28995:117;28615:504;;;;;:::o;29125:113::-;29179:7;29208:24;29226:5;29208:24;:::i;:::-;29197:35;;29125:113;;;:::o;29244:156::-;29334:41;29369:5;29334:41;:::i;:::-;29327:5;29324:52;29314:80;;29390:1;29387;29380:12;29314:80;29244:156;:::o;29406:173::-;29469:5;29507:6;29494:20;29485:29;;29523:50;29567:5;29523:50;:::i;:::-;29406:173;;;;:::o;29585:117::-;29694:1;29691;29684:12;29725:568;29798:8;29808:6;29858:3;29851:4;29843:6;29839:17;29835:27;29825:122;;29866:79;;:::i;:::-;29825:122;29979:6;29966:20;29956:30;;30009:18;30001:6;29998:30;29995:117;;;30031:79;;:::i;:::-;29995:117;30145:4;30137:6;30133:17;30121:29;;30199:3;30191:4;30183:6;30179:17;30169:8;30165:32;30162:41;30159:128;;;30206:79;;:::i;:::-;30159:128;29725:568;;;;;:::o;30299:1259::-;30456:6;30464;30472;30480;30488;30496;30545:3;30533:9;30524:7;30520:23;30516:33;30513:120;;;30552:79;;:::i;:::-;30513:120;30672:1;30697:70;30759:7;30750:6;30739:9;30735:22;30697:70;:::i;:::-;30687:80;;30643:134;30816:2;30842:53;30887:7;30878:6;30867:9;30863:22;30842:53;:::i;:::-;30832:63;;30787:118;30972:2;30961:9;30957:18;30944:32;31003:18;30995:6;30992:30;30989:117;;;31025:79;;:::i;:::-;30989:117;31138:80;31210:7;31201:6;31190:9;31186:22;31138:80;:::i;:::-;31120:98;;;;30915:313;31295:2;31284:9;31280:18;31267:32;31326:18;31318:6;31315:30;31312:117;;;31348:79;;:::i;:::-;31312:117;31461:80;31533:7;31524:6;31513:9;31509:22;31461:80;:::i;:::-;31443:98;;;;31238:313;30299:1259;;;;;;;;:::o;31564:506::-;31648:6;31656;31705:2;31693:9;31684:7;31680:23;31676:32;31673:119;;;31711:79;;:::i;:::-;31673:119;31831:1;31856:69;31917:7;31908:6;31897:9;31893:22;31856:69;:::i;:::-;31846:79;;31802:133;31974:2;32000:53;32045:7;32036:6;32025:9;32021:22;32000:53;:::i;:::-;31990:63;;31945:118;31564:506;;;;;:::o;32076:115::-;32161:23;32178:5;32161:23;:::i;:::-;32156:3;32149:36;32076:115;;:::o;32197:218::-;32288:4;32326:2;32315:9;32311:18;32303:26;;32339:69;32405:1;32394:9;32390:17;32381:6;32339:69;:::i;:::-;32197:218;;;;:::o;32421:180::-;32469:77;32466:1;32459:88;32566:4;32563:1;32556:15;32590:4;32587:1;32580:15;32607:191;32647:3;32666:20;32684:1;32666:20;:::i;:::-;32661:25;;32700:20;32718:1;32700:20;:::i;:::-;32695:25;;32743:1;32740;32736:9;32729:16;;32764:3;32761:1;32758:10;32755:36;;;32771:18;;:::i;:::-;32755:36;32607:191;;;;:::o;32804:180::-;32852:77;32849:1;32842:88;32949:4;32946:1;32939:15;32973:4;32970:1;32963:15;32990:118;33077:24;33095:5;33077:24;:::i;:::-;33072:3;33065:37;32990:118;;:::o;33114:222::-;33207:4;33245:2;33234:9;33230:18;33222:26;;33258:71;33326:1;33315:9;33311:17;33302:6;33258:71;:::i;:::-;33114:222;;;;:::o;33342:143::-;33399:5;33430:6;33424:13;33415:22;;33446:33;33473:5;33446:33;:::i;:::-;33342:143;;;;:::o;33491:351::-;33561:6;33610:2;33598:9;33589:7;33585:23;33581:32;33578:119;;;33616:79;;:::i;:::-;33578:119;33736:1;33761:64;33817:7;33808:6;33797:9;33793:22;33761:64;:::i;:::-;33751:74;;33707:128;33491:351;;;;:::o;33848:194::-;33888:4;33908:20;33926:1;33908:20;:::i;:::-;33903:25;;33942:20;33960:1;33942:20;:::i;:::-;33937:25;;33986:1;33983;33979:9;33971:17;;34010:1;34004:4;34001:11;33998:37;;;34015:18;;:::i;:::-;33998:37;33848:194;;;;:::o;34048:143::-;34105:5;34136:6;34130:13;34121:22;;34152:33;34179:5;34152:33;:::i;:::-;34048:143;;;;:::o;34197:351::-;34267:6;34316:2;34304:9;34295:7;34291:23;34287:32;34284:119;;;34322:79;;:::i;:::-;34284:119;34442:1;34467:64;34523:7;34514:6;34503:9;34499:22;34467:64;:::i;:::-;34457:74;;34413:128;34197:351;;;;:::o;34554:140::-;34618:9;34651:37;34682:5;34651:37;:::i;:::-;34638:50;;34554:140;;;:::o;34700:159::-;34801:51;34846:5;34801:51;:::i;:::-;34796:3;34789:64;34700:159;;:::o;34865:115::-;34950:23;34967:5;34950:23;:::i;:::-;34945:3;34938:36;34865:115;;:::o;34986:601::-;35187:4;35225:3;35214:9;35210:19;35202:27;;35239:85;35321:1;35310:9;35306:17;35297:6;35239:85;:::i;:::-;35334:86;35416:2;35405:9;35401:18;35392:6;35334:86;:::i;:::-;35430:70;35496:2;35485:9;35481:18;35472:6;35430:70;:::i;:::-;35510;35576:2;35565:9;35561:18;35552:6;35510:70;:::i;:::-;34986:601;;;;;;;:::o;35593:175::-;35666:5;35697:6;35691:13;35682:22;;35713:49;35756:5;35713:49;:::i;:::-;35593:175;;;;:::o;35774:383::-;35860:6;35909:2;35897:9;35888:7;35884:23;35880:32;35877:119;;;35915:79;;:::i;:::-;35877:119;36035:1;36060:80;36132:7;36123:6;36112:9;36108:22;36060:80;:::i;:::-;36050:90;;36006:144;35774:383;;;;:::o;36163:85::-;36208:7;36237:5;36226:16;;36163:85;;;:::o;36254:101::-;36290:7;36330:18;36323:5;36319:30;36308:41;;36254:101;;;:::o;36361:156::-;36418:9;36451:60;36468:42;36477:32;36503:5;36477:32;:::i;:::-;36468:42;:::i;:::-;36451:60;:::i;:::-;36438:73;;36361:156;;;:::o;36523:145::-;36617:44;36655:5;36617:44;:::i;:::-;36612:3;36605:57;36523:145;;:::o;36674:236::-;36774:4;36812:2;36801:9;36797:18;36789:26;;36825:78;36900:1;36889:9;36885:17;36876:6;36825:78;:::i;:::-;36674:236;;;;:::o;36916:171::-;36987:5;37018:6;37012:13;37003:22;;37034:47;37075:5;37034:47;:::i;:::-;36916:171;;;;:::o;37093:379::-;37177:6;37226:2;37214:9;37205:7;37201:23;37197:32;37194:119;;;37232:79;;:::i;:::-;37194:119;37352:1;37377:78;37447:7;37438:6;37427:9;37423:22;37377:78;:::i;:::-;37367:88;;37323:142;37093:379;;;;:::o;37478:357::-;37551:6;37600:2;37588:9;37579:7;37575:23;37571:32;37568:119;;;37606:79;;:::i;:::-;37568:119;37726:1;37751:67;37810:7;37801:6;37790:9;37786:22;37751:67;:::i;:::-;37741:77;;37697:131;37478:357;;;;:::o;37841:664::-;38046:4;38084:3;38073:9;38069:19;38061:27;;38098:71;38166:1;38155:9;38151:17;38142:6;38098:71;:::i;:::-;38179:72;38247:2;38236:9;38232:18;38223:6;38179:72;:::i;:::-;38261;38329:2;38318:9;38314:18;38305:6;38261:72;:::i;:::-;38343;38411:2;38400:9;38396:18;38387:6;38343:72;:::i;:::-;38425:73;38493:3;38482:9;38478:19;38469:6;38425:73;:::i;:::-;37841:664;;;;;;;;:::o;38511:109::-;38592:21;38607:5;38592:21;:::i;:::-;38587:3;38580:34;38511:109;;:::o;38626:320::-;38741:4;38779:2;38768:9;38764:18;38756:26;;38792:71;38860:1;38849:9;38845:17;38836:6;38792:71;:::i;:::-;38873:66;38935:2;38924:9;38920:18;38911:6;38873:66;:::i;:::-;38626:320;;;;;:::o;38952:143::-;39009:5;39040:6;39034:13;39025:22;;39056:33;39083:5;39056:33;:::i;:::-;38952:143;;;;:::o;39101:663::-;39189:6;39197;39205;39254:2;39242:9;39233:7;39229:23;39225:32;39222:119;;;39260:79;;:::i;:::-;39222:119;39380:1;39405:64;39461:7;39452:6;39441:9;39437:22;39405:64;:::i;:::-;39395:74;;39351:128;39518:2;39544:64;39600:7;39591:6;39580:9;39576:22;39544:64;:::i;:::-;39534:74;;39489:129;39657:2;39683:64;39739:7;39730:6;39719:9;39715:22;39683:64;:::i;:::-;39673:74;;39628:129;39101:663;;;;;:::o;39770:117::-;39879:1;39876;39869:12;39893:98;39977:6;39972:3;39967;39954:30;39893:98;;;:::o;40027:537::-;40155:3;40176:86;40255:6;40250:3;40176:86;:::i;:::-;40169:93;;40286:66;40278:6;40275:78;40272:165;;;40356:79;;:::i;:::-;40272:165;40468:4;40460:6;40456:17;40446:27;;40483:43;40519:6;40514:3;40507:5;40483:43;:::i;:::-;40551:6;40546:3;40542:16;40535:23;;40027:537;;;;;:::o;40570:895::-;40867:4;40905:3;40894:9;40890:19;40882:27;;40919:71;40987:1;40976:9;40972:17;40963:6;40919:71;:::i;:::-;41000:72;41068:2;41057:9;41053:18;41044:6;41000:72;:::i;:::-;41119:9;41113:4;41109:20;41104:2;41093:9;41089:18;41082:48;41147:118;41260:4;41251:6;41243;41147:118;:::i;:::-;41139:126;;41312:9;41306:4;41302:20;41297:2;41286:9;41282:18;41275:48;41340:118;41453:4;41444:6;41436;41340:118;:::i;:::-;41332:126;;40570:895;;;;;;;;;:::o;41471:141::-;41527:5;41558:6;41552:13;41543:22;;41574:32;41600:5;41574:32;:::i;:::-;41471:141;;;;:::o;41618:349::-;41687:6;41736:2;41724:9;41715:7;41711:23;41707:32;41704:119;;;41742:79;;:::i;:::-;41704:119;41862:1;41887:63;41942:7;41933:6;41922:9;41918:22;41887:63;:::i;:::-;41877:73;;41833:127;41618:349;;;;:::o;41973:180::-;42021:77;42018:1;42011:88;42118:4;42115:1;42108:15;42142:4;42139:1;42132:15;42159:114;42196:7;42236:30;42229:5;42225:42;42214:53;;42159:114;;;:::o;42279:122::-;42352:24;42370:5;42352:24;:::i;:::-;42345:5;42342:35;42332:63;;42391:1;42388;42381:12;42332:63;42279:122;:::o;42407:143::-;42464:5;42495:6;42489:13;42480:22;;42511:33;42538:5;42511:33;:::i;:::-;42407:143;;;;:::o;42556:93::-;42592:7;42632:10;42625:5;42621:22;42610:33;;42556:93;;;:::o;42655:120::-;42727:23;42744:5;42727:23;:::i;:::-;42720:5;42717:34;42707:62;;42765:1;42762;42755:12;42707:62;42655:120;:::o;42781:141::-;42837:5;42868:6;42862:13;42853:22;;42884:32;42910:5;42884:32;:::i;:::-;42781:141;;;;:::o;42928:661::-;43015:6;43023;43031;43080:2;43068:9;43059:7;43055:23;43051:32;43048:119;;;43086:79;;:::i;:::-;43048:119;43206:1;43231:64;43287:7;43278:6;43267:9;43263:22;43231:64;:::i;:::-;43221:74;;43177:128;43344:2;43370:64;43426:7;43417:6;43406:9;43402:22;43370:64;:::i;:::-;43360:74;;43315:129;43483:2;43509:63;43564:7;43555:6;43544:9;43540:22;43509:63;:::i;:::-;43499:73;;43454:128;42928:661;;;;;:::o;43595:85::-;43640:7;43669:5;43658:16;;43595:85;;;:::o;43686:158::-;43744:9;43777:61;43795:42;43804:32;43830:5;43804:32;:::i;:::-;43795:42;:::i;:::-;43777:61;:::i;:::-;43764:74;;43686:158;;;:::o;43850:147::-;43945:45;43984:5;43945:45;:::i;:::-;43940:3;43933:58;43850:147;;:::o;44003:168::-;44086:11;44120:6;44115:3;44108:19;44160:4;44155:3;44151:14;44136:29;;44003:168;;;;:::o;44177:114::-;;:::o;44297:362::-;44438:3;44459:65;44522:1;44517:3;44459:65;:::i;:::-;44452:72;;44533:93;44622:3;44533:93;:::i;:::-;44651:1;44646:3;44642:11;44635:18;;44297:362;;;:::o;44665:764::-;44922:4;44960:3;44949:9;44945:19;44937:27;;44974:79;45050:1;45039:9;45035:17;45026:6;44974:79;:::i;:::-;45063:72;45131:2;45120:9;45116:18;45107:6;45063:72;:::i;:::-;45145;45213:2;45202:9;45198:18;45189:6;45145:72;:::i;:::-;45264:9;45258:4;45254:20;45249:2;45238:9;45234:18;45227:48;45292:130;45417:4;45292:130;:::i;:::-;45284:138;;44665:764;;;;;;:::o;45435:::-;45692:4;45730:3;45719:9;45715:19;45707:27;;45744:71;45812:1;45801:9;45797:17;45788:6;45744:71;:::i;:::-;45825:80;45901:2;45890:9;45886:18;45877:6;45825:80;:::i;:::-;45915:72;45983:2;45972:9;45968:18;45959:6;45915:72;:::i;:::-;46034:9;46028:4;46024:20;46019:2;46008:9;46004:18;45997:48;46062:130;46187:4;46062:130;:::i;:::-;46054:138;;45435:764;;;;;;:::o;46205:320::-;46320:4;46358:2;46347:9;46343:18;46335:26;;46371:65;46433:1;46422:9;46418:17;46409:6;46371:65;:::i;:::-;46446:72;46514:2;46503:9;46499:18;46490:6;46446:72;:::i;:::-;46205:320;;;;;:::o;46531:77::-;46568:7;46597:5;46586:16;;46531:77;;;:::o;46614:122::-;46687:24;46705:5;46687:24;:::i;:::-;46680:5;46677:35;46667:63;;46726:1;46723;46716:12;46667:63;46614:122;:::o;46742:143::-;46799:5;46830:6;46824:13;46815:22;;46846:33;46873:5;46846:33;:::i;:::-;46742:143;;;;:::o;46891:351::-;46961:6;47010:2;46998:9;46989:7;46985:23;46981:32;46978:119;;;47016:79;;:::i;:::-;46978:119;47136:1;47161:64;47217:7;47208:6;47197:9;47193:22;47161:64;:::i;:::-;47151:74;;47107:128;46891:351;;;;:::o;47248:171::-;47287:3;47310:24;47328:5;47310:24;:::i;:::-;47301:33;;47356:4;47349:5;47346:15;47343:41;;47364:18;;:::i;:::-;47343:41;47411:1;47404:5;47400:13;47393:20;;47248:171;;;:::o;47425:147::-;47526:11;47563:3;47548:18;;47425:147;;;;:::o;47578:398::-;47737:3;47758:83;47839:1;47834:3;47758:83;:::i;:::-;47751:90;;47850:93;47939:3;47850:93;:::i;:::-;47968:1;47963:3;47959:11;47952:18;;47578:398;;;:::o;47982:379::-;48166:3;48188:147;48331:3;48188:147;:::i;:::-;48181:154;;48352:3;48345:10;;47982:379;;;:::o;48367:332::-;48488:4;48526:2;48515:9;48511:18;48503:26;;48539:71;48607:1;48596:9;48592:17;48583:6;48539:71;:::i;:::-;48620:72;48688:2;48677:9;48673:18;48664:6;48620:72;:::i;:::-;48367:332;;;;;:::o;48705:498::-;48882:4;48920:2;48909:9;48905:18;48897:26;;48933:85;49015:1;49004:9;49000:17;48991:6;48933:85;:::i;:::-;49028:86;49110:2;49099:9;49095:18;49086:6;49028:86;:::i;:::-;49124:72;49192:2;49181:9;49177:18;49168:6;49124:72;:::i;:::-;48705:498;;;;;;:::o;49209:141::-;49265:5;49296:6;49290:13;49281:22;;49312:32;49338:5;49312:32;:::i;:::-;49209:141;;;;:::o;49356:137::-;49410:5;49441:6;49435:13;49426:22;;49457:30;49481:5;49457:30;:::i;:::-;49356:137;;;;:::o;49542:998::-;49637:5;49681:4;49669:9;49664:3;49660:19;49656:30;49653:117;;;49689:79;;:::i;:::-;49653:117;49788:21;49804:4;49788:21;:::i;:::-;49779:30;;49871:1;49911:59;49966:3;49957:6;49946:9;49942:22;49911:59;:::i;:::-;49904:4;49897:5;49893:16;49886:85;49819:163;50043:2;50084:76;50156:3;50147:6;50136:9;50132:22;50084:76;:::i;:::-;50077:4;50070:5;50066:16;50059:102;49992:180;50241:2;50282:57;50335:3;50326:6;50315:9;50311:22;50282:57;:::i;:::-;50275:4;50268:5;50264:16;50257:83;50182:169;50423:2;50464:57;50517:3;50508:6;50497:9;50493:22;50464:57;:::i;:::-;50457:4;50450:5;50446:16;50439:83;50361:172;49542:998;;;;:::o;50546:422::-;50651:6;50700:3;50688:9;50679:7;50675:23;50671:33;50668:120;;;50707:79;;:::i;:::-;50668:120;50827:1;50852:99;50943:7;50934:6;50923:9;50919:22;50852:99;:::i;:::-;50842:109;;50798:163;50546:422;;;;:::o;50974:442::-;51123:4;51161:2;51150:9;51146:18;51138:26;;51174:71;51242:1;51231:9;51227:17;51218:6;51174:71;:::i;:::-;51255:72;51323:2;51312:9;51308:18;51299:6;51255:72;:::i;:::-;51337;51405:2;51394:9;51390:18;51381:6;51337:72;:::i;:::-;50974:442;;;;;;:::o;51422:855::-;51699:4;51737:3;51726:9;51722:19;51714:27;;51751:71;51819:1;51808:9;51804:17;51795:6;51751:71;:::i;:::-;51832:72;51900:2;51889:9;51885:18;51876:6;51832:72;:::i;:::-;51951:9;51945:4;51941:20;51936:2;51925:9;51921:18;51914:48;51979:108;52082:4;52073:6;51979:108;:::i;:::-;51971:116;;52134:9;52128:4;52124:20;52119:2;52108:9;52104:18;52097:48;52162:108;52265:4;52256:6;52162:108;:::i;:::-;52154:116;;51422:855;;;;;;;:::o;52283:311::-;52360:4;52450:18;52442:6;52439:30;52436:56;;;52472:18;;:::i;:::-;52436:56;52522:4;52514:6;52510:17;52502:25;;52582:4;52576;52572:15;52564:23;;52283:311;;;:::o;52617:732::-;52724:5;52749:81;52765:64;52822:6;52765:64;:::i;:::-;52749:81;:::i;:::-;52740:90;;52850:5;52879:6;52872:5;52865:21;52913:4;52906:5;52902:16;52895:23;;52966:4;52958:6;52954:17;52946:6;52942:30;52995:3;52987:6;52984:15;52981:122;;;53014:79;;:::i;:::-;52981:122;53129:6;53112:231;53146:6;53141:3;53138:15;53112:231;;;53221:3;53250:48;53294:3;53282:10;53250:48;:::i;:::-;53245:3;53238:61;53328:4;53323:3;53319:14;53312:21;;53188:155;53172:4;53167:3;53163:14;53156:21;;53112:231;;;53116:21;52730:619;;52617:732;;;;;:::o;53372:385::-;53454:5;53503:3;53496:4;53488:6;53484:17;53480:27;53470:122;;53511:79;;:::i;:::-;53470:122;53621:6;53615:13;53646:105;53747:3;53739:6;53732:4;53724:6;53720:17;53646:105;:::i;:::-;53637:114;;53460:297;53372:385;;;;:::o;53763:554::-;53858:6;53907:2;53895:9;53886:7;53882:23;53878:32;53875:119;;;53913:79;;:::i;:::-;53875:119;54054:1;54043:9;54039:17;54033:24;54084:18;54076:6;54073:30;54070:117;;;54106:79;;:::i;:::-;54070:117;54211:89;54292:7;54283:6;54272:9;54268:22;54211:89;:::i;:::-;54201:99;;54004:306;53763:554;;;;:::o;54323:233::-;54362:3;54385:24;54403:5;54385:24;:::i;:::-;54376:33;;54431:66;54424:5;54421:77;54418:103;;54501:18;;:::i;:::-;54418:103;54548:1;54541:5;54537:13;54530:20;;54323:233;;;:::o;54562:553::-;54739:4;54777:3;54766:9;54762:19;54754:27;;54791:71;54859:1;54848:9;54844:17;54835:6;54791:71;:::i;:::-;54872:72;54940:2;54929:9;54925:18;54916:6;54872:72;:::i;:::-;54954;55022:2;55011:9;55007:18;54998:6;54954:72;:::i;:::-;55036;55104:2;55093:9;55089:18;55080:6;55036:72;:::i;:::-;54562:553;;;;;;;:::o;55121:117::-;55230:1;55227;55220:12;55244:117;55353:1;55350;55343:12;55367:117;55476:1;55473;55466:12;55490:740;55583:4;55589:6;55645:11;55632:25;55745:1;55739:4;55735:12;55724:8;55708:14;55704:29;55700:48;55680:18;55676:73;55666:168;;55753:79;;:::i;:::-;55666:168;55865:18;55855:8;55851:33;55843:41;;55917:4;55904:18;55894:28;;55945:18;55937:6;55934:30;55931:117;;;55967:79;;:::i;:::-;55931:117;56075:2;56069:4;56065:13;56057:21;;56132:4;56124:6;56120:17;56104:14;56100:38;56094:4;56090:49;56087:136;;;56142:79;;:::i;:::-;56087:136;55596:634;55490:740;;;;;:::o;56236:739::-;56328:4;56334:6;56390:11;56377:25;56490:1;56484:4;56480:12;56469:8;56453:14;56449:29;56445:48;56425:18;56421:73;56411:168;;56498:79;;:::i;:::-;56411:168;56610:18;56600:8;56596:33;56588:41;;56662:4;56649:18;56639:28;;56690:18;56682:6;56679:30;56676:117;;;56712:79;;:::i;:::-;56676:117;56820:2;56814:4;56810:13;56802:21;;56877:4;56869:6;56865:17;56849:14;56845:38;56839:4;56835:49;56832:136;;;56887:79;;:::i;:::-;56832:136;56341:634;56236:739;;;;;:::o;56981:442::-;57130:4;57168:2;57157:9;57153:18;57145:26;;57181:71;57249:1;57238:9;57234:17;57225:6;57181:71;:::i;:::-;57262:72;57330:2;57319:9;57315:18;57306:6;57262:72;:::i;:::-;57344;57412:2;57401:9;57397:18;57388:6;57344:72;:::i;:::-;56981:442;;;;;;:::o;57429:76::-;57465:7;57494:5;57483:16;;57429:76;;;:::o;57511:115::-;57596:23;57613:5;57596:23;:::i;:::-;57591:3;57584:36;57511:115;;:::o;57632:218::-;57723:4;57761:2;57750:9;57746:18;57738:26;;57774:69;57840:1;57829:9;57825:17;57816:6;57774:69;:::i;:::-;57632:218;;;;:::o;57856:329::-;57915:6;57964:2;57952:9;57943:7;57939:23;57935:32;57932:119;;;57970:79;;:::i;:::-;57932:119;58090:1;58115:53;58160:7;58151:6;58140:9;58136:22;58115:53;:::i;:::-;58105:63;;58061:117;57856:329;;;;:::o;58191:114::-;58258:6;58292:5;58286:12;58276:22;;58191:114;;;:::o;58311:184::-;58410:11;58444:6;58439:3;58432:19;58484:4;58479:3;58475:14;58460:29;;58311:184;;;;:::o;58501:132::-;58568:4;58591:3;58583:11;;58621:4;58616:3;58612:14;58604:22;;58501:132;;;:::o;58639:108::-;58716:24;58734:5;58716:24;:::i;:::-;58711:3;58704:37;58639:108;;:::o;58753:179::-;58822:10;58843:46;58885:3;58877:6;58843:46;:::i;:::-;58921:4;58916:3;58912:14;58898:28;;58753:179;;;;:::o;58938:113::-;59008:4;59040;59035:3;59031:14;59023:22;;58938:113;;;:::o;59087:732::-;59206:3;59235:54;59283:5;59235:54;:::i;:::-;59305:86;59384:6;59379:3;59305:86;:::i;:::-;59298:93;;59415:56;59465:5;59415:56;:::i;:::-;59494:7;59525:1;59510:284;59535:6;59532:1;59529:13;59510:284;;;59611:6;59605:13;59638:63;59697:3;59682:13;59638:63;:::i;:::-;59631:70;;59724:60;59777:6;59724:60;:::i;:::-;59714:70;;59570:224;59557:1;59554;59550:9;59545:14;;59510:284;;;59514:14;59810:3;59803:10;;59211:608;;;59087:732;;;;:::o;59825:593::-;60024:4;60062:2;60051:9;60047:18;60039:26;;60075:71;60143:1;60132:9;60128:17;60119:6;60075:71;:::i;:::-;60193:9;60187:4;60183:20;60178:2;60167:9;60163:18;60156:48;60221:108;60324:4;60315:6;60221:108;:::i;:::-;60213:116;;60339:72;60407:2;60396:9;60392:18;60383:6;60339:72;:::i;:::-;59825:593;;;;;;:::o;60441:732::-;60548:5;60573:81;60589:64;60646:6;60589:64;:::i;:::-;60573:81;:::i;:::-;60564:90;;60674:5;60703:6;60696:5;60689:21;60737:4;60730:5;60726:16;60719:23;;60790:4;60782:6;60778:17;60770:6;60766:30;60819:3;60811:6;60808:15;60805:122;;;60838:79;;:::i;:::-;60805:122;60953:6;60936:231;60970:6;60965:3;60962:15;60936:231;;;61045:3;61074:48;61118:3;61106:10;61074:48;:::i;:::-;61069:3;61062:61;61152:4;61147:3;61143:14;61136:21;;61012:155;60996:4;60991:3;60987:14;60980:21;;60936:231;;;60940:21;60554:619;;60441:732;;;;;:::o;61196:385::-;61278:5;61327:3;61320:4;61312:6;61308:17;61304:27;61294:122;;61335:79;;:::i;:::-;61294:122;61445:6;61439:13;61470:105;61571:3;61563:6;61556:4;61548:6;61544:17;61470:105;:::i;:::-;61461:114;;61284:297;61196:385;;;;:::o;61587:866::-;61700:6;61708;61716;61765:2;61753:9;61744:7;61740:23;61736:32;61733:119;;;61771:79;;:::i;:::-;61733:119;61891:1;61916:64;61972:7;61963:6;61952:9;61948:22;61916:64;:::i;:::-;61906:74;;61862:128;62029:2;62055:64;62111:7;62102:6;62091:9;62087:22;62055:64;:::i;:::-;62045:74;;62000:129;62189:2;62178:9;62174:18;62168:25;62220:18;62212:6;62209:30;62206:117;;;62242:79;;:::i;:::-;62206:117;62347:89;62428:7;62419:6;62408:9;62404:22;62347:89;:::i;:::-;62337:99;;62139:307;61587:866;;;;;:::o;62459:332::-;62580:4;62618:2;62607:9;62603:18;62595:26;;62631:71;62699:1;62688:9;62684:17;62675:6;62631:71;:::i;:::-;62712:72;62780:2;62769:9;62765:18;62756:6;62712:72;:::i;:::-;62459:332;;;;;:::o;62797:410::-;62837:7;62860:20;62878:1;62860:20;:::i;:::-;62855:25;;62894:20;62912:1;62894:20;:::i;:::-;62889:25;;62949:1;62946;62942:9;62971:30;62989:11;62971:30;:::i;:::-;62960:41;;63150:1;63141:7;63137:15;63134:1;63131:22;63111:1;63104:9;63084:83;63061:139;;63180:18;;:::i;:::-;63061:139;62845:362;62797:410;;;;:::o;63213:180::-;63261:77;63258:1;63251:88;63358:4;63355:1;63348:15;63382:4;63379:1;63372:15;63399:185;63439:1;63456:20;63474:1;63456:20;:::i;:::-;63451:25;;63490:20;63508:1;63490:20;:::i;:::-;63485:25;;63529:1;63519:35;;63534:18;;:::i;:::-;63519:35;63576:1;63573;63569:9;63564:14;;63399:185;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "5765400", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "infinite", + "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "infinite", + "createLBPair(address,address,uint24,uint16)": "infinite", + "getFactory()": "infinite", + "getIdFromPrice(address,uint256)": "infinite", + "getPriceFromId(address,uint24)": "infinite", + "getSwapIn(address,uint128,bool)": "infinite", + "getSwapOut(address,uint128,bool)": "infinite", + "getV1Factory()": "infinite", + "getWNATIVE()": "infinite", + "initialize()": "81647", + "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "infinite", + "removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "infinite", + "swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "infinite", + "sweep(address,address,uint256)": "infinite", + "sweepLBToken(address,address,uint256[],uint256[])": "infinite" + }, + "internal": { + "_addLiquidity(struct ILBRouter.LiquidityParameters calldata,contract ILBPair)": "infinite", + "_getAmountsIn(enum ILBRouter.Version[] memory,address[] memory,contract IERC20[] memory,uint256)": "infinite", + "_getLBPairInformation(contract IERC20,contract IERC20,uint256)": "infinite", + "_getPair(contract IERC20,contract IERC20,uint256,enum ILBRouter.Version)": "infinite", + "_getPairs(uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory)": "infinite", + "_removeLiquidity(contract ILBPair,uint256,uint256,uint256[] memory,uint256[] memory,address)": "infinite", + "_safeTransfer(contract IERC20,address,uint256)": "infinite", + "_safeTransferFrom(contract IERC20,address,address,uint256)": "infinite", + "_safeTransferNative(address,uint256)": "infinite", + "_swapExactTokensForTokens(uint256,address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address)": "infinite", + "_swapSupportingFeeOnTransferTokens(address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address)": "infinite", + "_swapTokensForExactTokens(address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,uint256[] memory,address)": "infinite", + "_wNativeDepositAndTransfer(address,uint256)": "infinite", + "_wNativeWithdrawAndTransfer(address,uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 1523, + "end": 43399, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSH [tag]", + "source": 5, + "value": "1" + }, + { + "begin": 2851, + "end": 3092, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2851, + "end": 3092, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "tag", + "source": 5, + "value": "1" + }, + { + "begin": 2851, + "end": 3092, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "POP", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2851, + "end": 3092, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSHSIZE", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "CODESIZE", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "SUB", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSHSIZE", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "DUP4", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "CODECOPY", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "ADD", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2851, + "end": 3092, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "ADD", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSH [tag]", + "source": 5, + "value": "2" + }, + { + "begin": 2851, + "end": 3092, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "PUSH [tag]", + "source": 5, + "value": "3" + }, + { + "begin": 2851, + "end": 3092, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "tag", + "source": 5, + "value": "2" + }, + { + "begin": 2851, + "end": 3092, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2984, + "end": 2992, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2972, + "end": 2992, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2972, + "end": 2992, + "name": "AND", + "source": 5 + }, + { + "begin": 2972, + "end": 2992, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 2972, + "end": 2992, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2972, + "end": 2992, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2972, + "end": 2992, + "name": "AND", + "source": 5 + }, + { + "begin": 2972, + "end": 2992, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2972, + "end": 2992, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2972, + "end": 2992, + "name": "POP", + "source": 5 + }, + { + "begin": 2972, + "end": 2992, + "name": "POP", + "source": 5 + }, + { + "begin": 3015, + "end": 3024, + "name": "DUP2", + "source": 5 + }, + { + "begin": 3002, + "end": 3024, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3002, + "end": 3024, + "name": "AND", + "source": 5 + }, + { + "begin": 3002, + "end": 3024, + "name": "PUSH", + "source": 5, + "value": "A0" + }, + { + "begin": 3002, + "end": 3024, + "name": "DUP2", + "source": 5 + }, + { + "begin": 3002, + "end": 3024, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3002, + "end": 3024, + "name": "AND", + "source": 5 + }, + { + "begin": 3002, + "end": 3024, + "name": "DUP2", + "source": 5 + }, + { + "begin": 3002, + "end": 3024, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 3002, + "end": 3024, + "name": "POP", + "source": 5 + }, + { + "begin": 3002, + "end": 3024, + "name": "POP", + "source": 5 + }, + { + "begin": 3045, + "end": 3052, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3034, + "end": 3052, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3034, + "end": 3052, + "name": "AND", + "source": 5 + }, + { + "begin": 3034, + "end": 3052, + "name": "PUSH", + "source": 5, + "value": "C0" + }, + { + "begin": 3034, + "end": 3052, + "name": "DUP2", + "source": 5 + }, + { + "begin": 3034, + "end": 3052, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3034, + "end": 3052, + "name": "AND", + "source": 5 + }, + { + "begin": 3034, + "end": 3052, + "name": "DUP2", + "source": 5 + }, + { + "begin": 3034, + "end": 3052, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 3034, + "end": 3052, + "name": "POP", + "source": 5 + }, + { + "begin": 3034, + "end": 3052, + "name": "POP", + "source": 5 + }, + { + "begin": 3063, + "end": 3085, + "name": "PUSH [tag]", + "source": 5, + "value": "6" + }, + { + "begin": 3063, + "end": 3083, + "name": "PUSH [tag]", + "source": 5, + "value": "7" + }, + { + "begin": 3063, + "end": 3083, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 3063, + "end": 3083, + "name": "SHL", + "source": 5 + }, + { + "begin": 3063, + "end": 3085, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 3063, + "end": 3085, + "name": "SHR", + "source": 5 + }, + { + "begin": 3063, + "end": 3085, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3063, + "end": 3085, + "name": "tag", + "source": 5, + "value": "6" + }, + { + "begin": 3063, + "end": 3085, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "POP", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "POP", + "source": 5 + }, + { + "begin": 2851, + "end": 3092, + "name": "POP", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "8" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMP", + "source": 5 + }, + { + "begin": 7711, + "end": 8133, + "name": "tag", + "source": 1, + "value": "7" + }, + { + "begin": 7711, + "end": 8133, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 7826, + "end": 7856, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 7859, + "end": 7885, + "name": "PUSH [tag]", + "source": 1, + "value": "10" + }, + { + "begin": 7859, + "end": 7883, + "name": "PUSH [tag]", + "source": 1, + "value": "11" + }, + { + "begin": 7859, + "end": 7883, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 7859, + "end": 7883, + "name": "SHL", + "source": 1 + }, + { + "begin": 7859, + "end": 7885, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 7859, + "end": 7885, + "name": "SHR", + "source": 1 + }, + { + "begin": 7859, + "end": 7885, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 7859, + "end": 7885, + "name": "tag", + "source": 1, + "value": "10" + }, + { + "begin": 7859, + "end": 7885, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 7826, + "end": 7885, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7826, + "end": 7885, + "name": "POP", + "source": 1 + }, + { + "begin": 7900, + "end": 7901, + "name": "DUP1", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 7900, + "end": 7915, + "name": "ADD", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 1, + "value": "8" + }, + { + "begin": 7900, + "end": 7915, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 7900, + "end": 7915, + "name": "EXP", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "DIV", + "source": 1 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 1, + "value": "FF" + }, + { + "begin": 7900, + "end": 7915, + "name": "AND", + "source": 1 + }, + { + "begin": 7896, + "end": 7972, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 7896, + "end": 7972, + "name": "PUSH [tag]", + "source": 1, + "value": "12" + }, + { + "begin": 7896, + "end": 7972, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 7938, + "end": 7961, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 1, + "value": "F92EE8A900000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 7938, + "end": 7961, + "name": "DUP2", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 7938, + "end": 7961, + "name": "ADD", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 7938, + "end": 7961, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "DUP1", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "SUB", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7938, + "end": 7961, + "name": "REVERT", + "source": 1 + }, + { + "begin": 7896, + "end": 7972, + "name": "tag", + "source": 1, + "value": "12" + }, + { + "begin": 7896, + "end": 7972, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 8003, + "end": 8019, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7985, + "end": 8019, + "name": "DUP1", + "source": 1 + }, + { + "begin": 7985, + "end": 8019, + "name": "AND", + "source": 1 + }, + { + "begin": 7985, + "end": 7986, + "name": "DUP2", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 7985, + "end": 7999, + "name": "ADD", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 7985, + "end": 7999, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 7985, + "end": 7999, + "name": "EXP", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "DIV", + "source": 1 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7985, + "end": 7999, + "name": "AND", + "source": 1 + }, + { + "begin": 7985, + "end": 8019, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7985, + "end": 8019, + "name": "AND", + "source": 1 + }, + { + "begin": 7985, + "end": 8019, + "name": "EQ", + "source": 1 + }, + { + "begin": 7981, + "end": 8127, + "name": "PUSH [tag]", + "source": 1, + "value": "13" + }, + { + "begin": 7981, + "end": 8127, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 8052, + "end": 8068, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8035, + "end": 8036, + "name": "DUP2", + "source": 1 + }, + { + "begin": 8035, + "end": 8049, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 8035, + "end": 8049, + "name": "ADD", + "source": 1 + }, + { + "begin": 8035, + "end": 8049, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 8035, + "end": 8068, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 8035, + "end": 8068, + "name": "EXP", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "DUP2", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "DUP2", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8035, + "end": 8068, + "name": "MUL", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "NOT", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "AND", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "DUP4", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8035, + "end": 8068, + "name": "AND", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "MUL", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "OR", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 8035, + "end": 8068, + "name": "POP", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH", + "source": 1, + "value": "C7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2" + }, + { + "begin": 8099, + "end": 8115, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 8087, + "end": 8116, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH [tag]", + "source": 1, + "value": "14" + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH [tag]", + "source": 1, + "value": "15" + }, + { + "begin": 8087, + "end": 8116, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "tag", + "source": 1, + "value": "14" + }, + { + "begin": 8087, + "end": 8116, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 8087, + "end": 8116, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "DUP1", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "SUB", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8087, + "end": 8116, + "name": "LOG1", + "source": 1 + }, + { + "begin": 7981, + "end": 8127, + "name": "tag", + "source": 1, + "value": "13" + }, + { + "begin": 7981, + "end": 8127, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 7760, + "end": 8133, + "name": "POP", + "source": 1 + }, + { + "begin": 7711, + "end": 8133, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 8737, + "end": 8907, + "name": "tag", + "source": 1, + "value": "11" + }, + { + "begin": 8737, + "end": 8907, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 8795, + "end": 8825, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 8870, + "end": 8891, + "name": "PUSH", + "source": 1, + "value": "F0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + { + "begin": 8860, + "end": 8891, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8860, + "end": 8891, + "name": "POP", + "source": 1 + }, + { + "begin": 8737, + "end": 8907, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8737, + "end": 8907, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 34, + "value": "18" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 34 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 34 + }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 34, + "value": "20" + }, + { + "begin": 334, + "end": 460, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 404, + "end": 409, + "name": "DUP3", + "source": 34 + }, + { + "begin": 400, + "end": 454, + "name": "AND", + "source": 34 + }, + { + "begin": 389, + "end": 454, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 389, + "end": 454, + "name": "POP", + "source": 34 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 334, + "end": 460, + "name": "POP", + "source": 34 + }, + { + "begin": 334, + "end": 460, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 34, + "value": "21" + }, + { + "begin": 466, + "end": 562, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 34, + "value": "39" + }, + { + "begin": 550, + "end": 555, + "name": "DUP3", + "source": 34 + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 34, + "value": "20" + }, + { + "begin": 532, + "end": 556, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 34, + "value": "39" + }, + { + "begin": 532, + "end": 556, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 521, + "end": 556, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 521, + "end": 556, + "name": "POP", + "source": 34 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 466, + "end": 562, + "name": "POP", + "source": 34 + }, + { + "begin": 466, + "end": 562, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 568, + "end": 683, + "name": "tag", + "source": 34, + "value": "22" + }, + { + "begin": 568, + "end": 683, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 624, + "end": 631, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 653, + "end": 677, + "name": "PUSH [tag]", + "source": 34, + "value": "41" + }, + { + "begin": 671, + "end": 676, + "name": "DUP3", + "source": 34 + }, + { + "begin": 653, + "end": 677, + "name": "PUSH [tag]", + "source": 34, + "value": "21" + }, + { + "begin": 653, + "end": 677, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 653, + "end": 677, + "name": "tag", + "source": 34, + "value": "41" + }, + { + "begin": 653, + "end": 677, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 642, + "end": 677, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 642, + "end": 677, + "name": "POP", + "source": 34 + }, + { + "begin": 568, + "end": 683, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 568, + "end": 683, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 568, + "end": 683, + "name": "POP", + "source": 34 + }, + { + "begin": 568, + "end": 683, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 689, + "end": 849, + "name": "tag", + "source": 34, + "value": "23" + }, + { + "begin": 689, + "end": 849, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 781, + "end": 824, + "name": "PUSH [tag]", + "source": 34, + "value": "43" + }, + { + "begin": 818, + "end": 823, + "name": "DUP2", + "source": 34 + }, + { + "begin": 781, + "end": 824, + "name": "PUSH [tag]", + "source": 34, + "value": "22" + }, + { + "begin": 781, + "end": 824, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 781, + "end": 824, + "name": "tag", + "source": 34, + "value": "43" + }, + { + "begin": 781, + "end": 824, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 774, + "end": 779, + "name": "DUP2", + "source": 34 + }, + { + "begin": 771, + "end": 825, + "name": "EQ", + "source": 34 + }, + { + "begin": 761, + "end": 843, + "name": "PUSH [tag]", + "source": 34, + "value": "44" + }, + { + "begin": 761, + "end": 843, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 839, + "end": 840, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 836, + "end": 837, + "name": "DUP1", + "source": 34 + }, + { + "begin": 829, + "end": 841, + "name": "REVERT", + "source": 34 + }, + { + "begin": 761, + "end": 843, + "name": "tag", + "source": 34, + "value": "44" + }, + { + "begin": 761, + "end": 843, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 689, + "end": 849, + "name": "POP", + "source": 34 + }, + { + "begin": 689, + "end": 849, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 855, + "end": 1036, + "name": "tag", + "source": 34, + "value": "24" + }, + { + "begin": 855, + "end": 1036, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 931, + "end": 936, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 962, + "end": 968, + "name": "DUP2", + "source": 34 + }, + { + "begin": 956, + "end": 969, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 947, + "end": 969, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 947, + "end": 969, + "name": "POP", + "source": 34 + }, + { + "begin": 978, + "end": 1030, + "name": "PUSH [tag]", + "source": 34, + "value": "46" + }, + { + "begin": 1024, + "end": 1029, + "name": "DUP2", + "source": 34 + }, + { + "begin": 978, + "end": 1030, + "name": "PUSH [tag]", + "source": 34, + "value": "23" + }, + { + "begin": 978, + "end": 1030, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 978, + "end": 1030, + "name": "tag", + "source": 34, + "value": "46" + }, + { + "begin": 978, + "end": 1030, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 855, + "end": 1036, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 855, + "end": 1036, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 855, + "end": 1036, + "name": "POP", + "source": 34 + }, + { + "begin": 855, + "end": 1036, + "name": "POP", + "source": 34 + }, + { + "begin": 855, + "end": 1036, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1042, + "end": 1165, + "name": "tag", + "source": 34, + "value": "25" + }, + { + "begin": 1042, + "end": 1165, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1106, + "end": 1113, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1135, + "end": 1159, + "name": "PUSH [tag]", + "source": 34, + "value": "48" + }, + { + "begin": 1153, + "end": 1158, + "name": "DUP3", + "source": 34 + }, + { + "begin": 1135, + "end": 1159, + "name": "PUSH [tag]", + "source": 34, + "value": "21" + }, + { + "begin": 1135, + "end": 1159, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1135, + "end": 1159, + "name": "tag", + "source": 34, + "value": "48" + }, + { + "begin": 1135, + "end": 1159, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1124, + "end": 1159, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1124, + "end": 1159, + "name": "POP", + "source": 34 + }, + { + "begin": 1042, + "end": 1165, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 1042, + "end": 1165, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1042, + "end": 1165, + "name": "POP", + "source": 34 + }, + { + "begin": 1042, + "end": 1165, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1171, + "end": 1347, + "name": "tag", + "source": 34, + "value": "26" + }, + { + "begin": 1171, + "end": 1347, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1271, + "end": 1322, + "name": "PUSH [tag]", + "source": 34, + "value": "50" + }, + { + "begin": 1316, + "end": 1321, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1271, + "end": 1322, + "name": "PUSH [tag]", + "source": 34, + "value": "25" + }, + { + "begin": 1271, + "end": 1322, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1271, + "end": 1322, + "name": "tag", + "source": 34, + "value": "50" + }, + { + "begin": 1271, + "end": 1322, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1264, + "end": 1269, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1261, + "end": 1323, + "name": "EQ", + "source": 34 + }, + { + "begin": 1251, + "end": 1341, + "name": "PUSH [tag]", + "source": 34, + "value": "51" + }, + { + "begin": 1251, + "end": 1341, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 1337, + "end": 1338, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1334, + "end": 1335, + "name": "DUP1", + "source": 34 + }, + { + "begin": 1327, + "end": 1339, + "name": "REVERT", + "source": 34 + }, + { + "begin": 1251, + "end": 1341, + "name": "tag", + "source": 34, + "value": "51" + }, + { + "begin": 1251, + "end": 1341, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1171, + "end": 1347, + "name": "POP", + "source": 34 + }, + { + "begin": 1171, + "end": 1347, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1353, + "end": 1550, + "name": "tag", + "source": 34, + "value": "27" + }, + { + "begin": 1353, + "end": 1550, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1437, + "end": 1442, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1468, + "end": 1474, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1462, + "end": 1475, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 1453, + "end": 1475, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1453, + "end": 1475, + "name": "POP", + "source": 34 + }, + { + "begin": 1484, + "end": 1544, + "name": "PUSH [tag]", + "source": 34, + "value": "53" + }, + { + "begin": 1538, + "end": 1543, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1484, + "end": 1544, + "name": "PUSH [tag]", + "source": 34, + "value": "26" + }, + { + "begin": 1484, + "end": 1544, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1484, + "end": 1544, + "name": "tag", + "source": 34, + "value": "53" + }, + { + "begin": 1484, + "end": 1544, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1353, + "end": 1550, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 1353, + "end": 1550, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 1353, + "end": 1550, + "name": "POP", + "source": 34 + }, + { + "begin": 1353, + "end": 1550, + "name": "POP", + "source": 34 + }, + { + "begin": 1353, + "end": 1550, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1556, + "end": 1669, + "name": "tag", + "source": 34, + "value": "28" + }, + { + "begin": 1556, + "end": 1669, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1610, + "end": 1617, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1639, + "end": 1663, + "name": "PUSH [tag]", + "source": 34, + "value": "55" + }, + { + "begin": 1657, + "end": 1662, + "name": "DUP3", + "source": 34 + }, + { + "begin": 1639, + "end": 1663, + "name": "PUSH [tag]", + "source": 34, + "value": "21" + }, + { + "begin": 1639, + "end": 1663, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1639, + "end": 1663, + "name": "tag", + "source": 34, + "value": "55" + }, + { + "begin": 1639, + "end": 1663, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1628, + "end": 1663, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1628, + "end": 1663, + "name": "POP", + "source": 34 + }, + { + "begin": 1556, + "end": 1669, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 1556, + "end": 1669, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1556, + "end": 1669, + "name": "POP", + "source": 34 + }, + { + "begin": 1556, + "end": 1669, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1675, + "end": 1831, + "name": "tag", + "source": 34, + "value": "29" + }, + { + "begin": 1675, + "end": 1831, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1765, + "end": 1806, + "name": "PUSH [tag]", + "source": 34, + "value": "57" + }, + { + "begin": 1800, + "end": 1805, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1765, + "end": 1806, + "name": "PUSH [tag]", + "source": 34, + "value": "28" + }, + { + "begin": 1765, + "end": 1806, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1765, + "end": 1806, + "name": "tag", + "source": 34, + "value": "57" + }, + { + "begin": 1765, + "end": 1806, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1758, + "end": 1763, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1755, + "end": 1807, + "name": "EQ", + "source": 34 + }, + { + "begin": 1745, + "end": 1825, + "name": "PUSH [tag]", + "source": 34, + "value": "58" + }, + { + "begin": 1745, + "end": 1825, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 1821, + "end": 1822, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1818, + "end": 1819, + "name": "DUP1", + "source": 34 + }, + { + "begin": 1811, + "end": 1823, + "name": "REVERT", + "source": 34 + }, + { + "begin": 1745, + "end": 1825, + "name": "tag", + "source": 34, + "value": "58" + }, + { + "begin": 1745, + "end": 1825, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1675, + "end": 1831, + "name": "POP", + "source": 34 + }, + { + "begin": 1675, + "end": 1831, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1837, + "end": 2014, + "name": "tag", + "source": 34, + "value": "30" + }, + { + "begin": 1837, + "end": 2014, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1911, + "end": 1916, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1942, + "end": 1948, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1936, + "end": 1949, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 1927, + "end": 1949, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1927, + "end": 1949, + "name": "POP", + "source": 34 + }, + { + "begin": 1958, + "end": 2008, + "name": "PUSH [tag]", + "source": 34, + "value": "60" + }, + { + "begin": 2002, + "end": 2007, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1958, + "end": 2008, + "name": "PUSH [tag]", + "source": 34, + "value": "29" + }, + { + "begin": 1958, + "end": 2008, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1958, + "end": 2008, + "name": "tag", + "source": 34, + "value": "60" + }, + { + "begin": 1958, + "end": 2008, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1837, + "end": 2014, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 1837, + "end": 2014, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 1837, + "end": 2014, + "name": "POP", + "source": 34 + }, + { + "begin": 1837, + "end": 2014, + "name": "POP", + "source": 34 + }, + { + "begin": 1837, + "end": 2014, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2020, + "end": 2809, + "name": "tag", + "source": 34, + "value": "3" + }, + { + "begin": 2020, + "end": 2809, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2171, + "end": 2177, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 2179, + "end": 2185, + "name": "DUP1", + "source": 34 + }, + { + "begin": 2187, + "end": 2193, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 2236, + "end": 2238, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 2224, + "end": 2233, + "name": "DUP5", + "source": 34 + }, + { + "begin": 2215, + "end": 2222, + "name": "DUP7", + "source": 34 + }, + { + "begin": 2211, + "end": 2234, + "name": "SUB", + "source": 34 + }, + { + "begin": 2207, + "end": 2239, + "name": "SLT", + "source": 34 + }, + { + "begin": 2204, + "end": 2323, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 2204, + "end": 2323, + "name": "PUSH [tag]", + "source": 34, + "value": "62" + }, + { + "begin": 2204, + "end": 2323, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 2242, + "end": 2321, + "name": "PUSH [tag]", + "source": 34, + "value": "63" + }, + { + "begin": 2242, + "end": 2321, + "name": "PUSH [tag]", + "source": 34, + "value": "18" + }, + { + "begin": 2242, + "end": 2321, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2242, + "end": 2321, + "name": "tag", + "source": 34, + "value": "63" + }, + { + "begin": 2242, + "end": 2321, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2204, + "end": 2323, + "name": "tag", + "source": 34, + "value": "62" + }, + { + "begin": 2204, + "end": 2323, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2362, + "end": 2363, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 2387, + "end": 2470, + "name": "PUSH [tag]", + "source": 34, + "value": "64" + }, + { + "begin": 2462, + "end": 2469, + "name": "DUP7", + "source": 34 + }, + { + "begin": 2453, + "end": 2459, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2442, + "end": 2451, + "name": "DUP8", + "source": 34 + }, + { + "begin": 2438, + "end": 2460, + "name": "ADD", + "source": 34 + }, + { + "begin": 2387, + "end": 2470, + "name": "PUSH [tag]", + "source": 34, + "value": "24" + }, + { + "begin": 2387, + "end": 2470, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2387, + "end": 2470, + "name": "tag", + "source": 34, + "value": "64" + }, + { + "begin": 2387, + "end": 2470, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2377, + "end": 2470, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 2377, + "end": 2470, + "name": "POP", + "source": 34 + }, + { + "begin": 2333, + "end": 2480, + "name": "POP", + "source": 34 + }, + { + "begin": 2519, + "end": 2521, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 2545, + "end": 2636, + "name": "PUSH [tag]", + "source": 34, + "value": "65" + }, + { + "begin": 2628, + "end": 2635, + "name": "DUP7", + "source": 34 + }, + { + "begin": 2619, + "end": 2625, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2608, + "end": 2617, + "name": "DUP8", + "source": 34 + }, + { + "begin": 2604, + "end": 2626, + "name": "ADD", + "source": 34 + }, + { + "begin": 2545, + "end": 2636, + "name": "PUSH [tag]", + "source": 34, + "value": "27" + }, + { + "begin": 2545, + "end": 2636, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2545, + "end": 2636, + "name": "tag", + "source": 34, + "value": "65" + }, + { + "begin": 2545, + "end": 2636, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2535, + "end": 2636, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 2535, + "end": 2636, + "name": "POP", + "source": 34 + }, + { + "begin": 2490, + "end": 2646, + "name": "POP", + "source": 34 + }, + { + "begin": 2685, + "end": 2687, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 2711, + "end": 2792, + "name": "PUSH [tag]", + "source": 34, + "value": "66" + }, + { + "begin": 2784, + "end": 2791, + "name": "DUP7", + "source": 34 + }, + { + "begin": 2775, + "end": 2781, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2764, + "end": 2773, + "name": "DUP8", + "source": 34 + }, + { + "begin": 2760, + "end": 2782, + "name": "ADD", + "source": 34 + }, + { + "begin": 2711, + "end": 2792, + "name": "PUSH [tag]", + "source": 34, + "value": "30" + }, + { + "begin": 2711, + "end": 2792, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2711, + "end": 2792, + "name": "tag", + "source": 34, + "value": "66" + }, + { + "begin": 2711, + "end": 2792, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2701, + "end": 2792, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 2701, + "end": 2792, + "name": "POP", + "source": 34 + }, + { + "begin": 2656, + "end": 2802, + "name": "POP", + "source": 34 + }, + { + "begin": 2020, + "end": 2809, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 2020, + "end": 2809, + "name": "POP", + "source": 34 + }, + { + "begin": 2020, + "end": 2809, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 2020, + "end": 2809, + "name": "POP", + "source": 34 + }, + { + "begin": 2020, + "end": 2809, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 2020, + "end": 2809, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2815, + "end": 2916, + "name": "tag", + "source": 34, + "value": "31" + }, + { + "begin": 2815, + "end": 2916, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2851, + "end": 2858, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 2891, + "end": 2909, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 2884, + "end": 2889, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2880, + "end": 2910, + "name": "AND", + "source": 34 + }, + { + "begin": 2869, + "end": 2910, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 2869, + "end": 2910, + "name": "POP", + "source": 34 + }, + { + "begin": 2815, + "end": 2916, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 2815, + "end": 2916, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 2815, + "end": 2916, + "name": "POP", + "source": 34 + }, + { + "begin": 2815, + "end": 2916, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2922, + "end": 3037, + "name": "tag", + "source": 34, + "value": "32" + }, + { + "begin": 2922, + "end": 3037, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3007, + "end": 3030, + "name": "PUSH [tag]", + "source": 34, + "value": "69" + }, + { + "begin": 3024, + "end": 3029, + "name": "DUP2", + "source": 34 + }, + { + "begin": 3007, + "end": 3030, + "name": "PUSH [tag]", + "source": 34, + "value": "31" + }, + { + "begin": 3007, + "end": 3030, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3007, + "end": 3030, + "name": "tag", + "source": 34, + "value": "69" + }, + { + "begin": 3007, + "end": 3030, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3002, + "end": 3005, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2995, + "end": 3031, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 2922, + "end": 3037, + "name": "POP", + "source": 34 + }, + { + "begin": 2922, + "end": 3037, + "name": "POP", + "source": 34 + }, + { + "begin": 2922, + "end": 3037, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3043, + "end": 3261, + "name": "tag", + "source": 34, + "value": "15" + }, + { + "begin": 3043, + "end": 3261, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3134, + "end": 3138, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 3172, + "end": 3174, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 3161, + "end": 3170, + "name": "DUP3", + "source": 34 + }, + { + "begin": 3157, + "end": 3175, + "name": "ADD", + "source": 34 + }, + { + "begin": 3149, + "end": 3175, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 3149, + "end": 3175, + "name": "POP", + "source": 34 + }, + { + "begin": 3185, + "end": 3254, + "name": "PUSH [tag]", + "source": 34, + "value": "71" + }, + { + "begin": 3251, + "end": 3252, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 3240, + "end": 3249, + "name": "DUP4", + "source": 34 + }, + { + "begin": 3236, + "end": 3253, + "name": "ADD", + "source": 34 + }, + { + "begin": 3227, + "end": 3233, + "name": "DUP5", + "source": 34 + }, + { + "begin": 3185, + "end": 3254, + "name": "PUSH [tag]", + "source": 34, + "value": "32" + }, + { + "begin": 3185, + "end": 3254, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3185, + "end": 3254, + "name": "tag", + "source": 34, + "value": "71" + }, + { + "begin": 3185, + "end": 3254, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3043, + "end": 3261, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 3043, + "end": 3261, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 3043, + "end": 3261, + "name": "POP", + "source": 34 + }, + { + "begin": 3043, + "end": 3261, + "name": "POP", + "source": 34 + }, + { + "begin": 3043, + "end": 3261, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1523, + "end": 43399, + "name": "tag", + "source": 5, + "value": "8" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 1523, + "end": 43399, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "A0" + }, + { + "begin": 1523, + "end": 43399, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "C0" + }, + { + "begin": 1523, + "end": 43399, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH #[$]", + "source": 5, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [$]", + "source": 5, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1523, + "end": 43399, + "name": "CODECOPY", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1523, + "end": 43399, + "name": "ASSIGNIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1523, + "end": 43399, + "name": "ASSIGNIMMUTABLE", + "source": 5, + "value": "589" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1523, + "end": 43399, + "name": "ASSIGNIMMUTABLE", + "source": 5, + "value": "585" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH #[$]", + "source": 5, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1523, + "end": 43399, + "name": "RETURN", + "source": 5 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212200e309a78c4164f5b8b6e48c22021a99aca2bb60332bc12d21314fee29f34eefc64736f6c63430008140033", + ".code": [ + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 1523, + "end": 43399, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 1523, + "end": 43399, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "LT", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "1" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1523, + "end": 43399, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 1523, + "end": 43399, + "name": "SHR", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "92FE8E70" + }, + { + "begin": 1523, + "end": 43399, + "name": "GT", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "27" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "BB558A9F" + }, + { + "begin": 1523, + "end": 43399, + "name": "GT", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "28" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "BB558A9F" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "21" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "C22159B6" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "22" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "D0E380F2" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "23" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "E038E6DC" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "24" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "E9361C08" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "25" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "F96FE925" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "26" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "2" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMP", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "tag", + "source": 5, + "value": "28" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "92FE8E70" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "15" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "964F987C" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "16" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "9AB6156B" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "17" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "A0D376CF" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "18" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "A3C7271A" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "19" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "B066EA7C" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "20" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "2" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMP", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "tag", + "source": 5, + "value": "27" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "659AC74B" + }, + { + "begin": 1523, + "end": 43399, + "name": "GT", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "29" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "659AC74B" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "9" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "6C9C0078" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "10" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "8129FC1C" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "11" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "81C2FDFB" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "12" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "88CC58E4" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "13" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "8EFC2B2C" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "14" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "2" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMP", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "tag", + "source": 5, + "value": "29" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "1A24F9A9" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "3" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "2075AD22" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "4" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "2A443FAE" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "5" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "3DC8F8EC" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "6" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "4B801870" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "7" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "62C06767" + }, + { + "begin": 1523, + "end": 43399, + "name": "EQ", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "8" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "2" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMP", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "tag", + "source": 5, + "value": "1" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH [tag]", + "source": 5, + "value": "2" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 3307, + "end": 3315, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 3285, + "end": 3316, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3285, + "end": 3316, + "name": "AND", + "source": 5 + }, + { + "begin": 3285, + "end": 3295, + "name": "CALLER", + "source": 5 + }, + { + "begin": 3285, + "end": 3316, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3285, + "end": 3316, + "name": "AND", + "source": 5 + }, + { + "begin": 3285, + "end": 3316, + "name": "EQ", + "source": 5 + }, + { + "begin": 3281, + "end": 3355, + "name": "PUSH [tag]", + "source": 5, + "value": "32" + }, + { + "begin": 3281, + "end": 3355, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3325, + "end": 3355, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "PUSH", + "source": 5, + "value": "6C8CB79300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 3325, + "end": 3355, + "name": "DUP2", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 3325, + "end": 3355, + "name": "ADD", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3325, + "end": 3355, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "SUB", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3325, + "end": 3355, + "name": "REVERT", + "source": 5 + }, + { + "begin": 3281, + "end": 3355, + "name": "tag", + "source": 5, + "value": "32" + }, + { + "begin": 3281, + "end": 3355, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "STOP", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "tag", + "source": 5, + "value": "2" + }, + { + "begin": 1523, + "end": 43399, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1523, + "end": 43399, + "name": "DUP1", + "source": 5 + }, + { + "begin": 1523, + "end": 43399, + "name": "REVERT", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "tag", + "source": 5, + "value": "3" + }, + { + "begin": 23903, + "end": 24973, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH [tag]", + "source": 5, + "value": "33" + }, + { + "begin": 23903, + "end": 24973, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23903, + "end": 24973, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "REVERT", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "tag", + "source": 5, + "value": "33" + }, + { + "begin": 23903, + "end": 24973, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH [tag]", + "source": 5, + "value": "34" + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 23903, + "end": 24973, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SUB", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "ADD", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH [tag]", + "source": 5, + "value": "35" + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH [tag]", + "source": 5, + "value": "36" + }, + { + "begin": 23903, + "end": 24973, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "tag", + "source": 5, + "value": "35" + }, + { + "begin": 23903, + "end": 24973, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH [tag]", + "source": 5, + "value": "37" + }, + { + "begin": 23903, + "end": 24973, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "tag", + "source": 5, + "value": "34" + }, + { + "begin": 23903, + "end": 24973, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23903, + "end": 24973, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH [tag]", + "source": 5, + "value": "38" + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 23903, + "end": 24973, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "tag", + "source": 5, + "value": "38" + }, + { + "begin": 23903, + "end": 24973, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23903, + "end": 24973, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SUB", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "RETURN", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "tag", + "source": 5, + "value": "4" + }, + { + "begin": 21155, + "end": 22193, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH [tag]", + "source": 5, + "value": "40" + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 21155, + "end": 22193, + "name": "DUP1", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SUB", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "ADD", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH [tag]", + "source": 5, + "value": "41" + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH [tag]", + "source": 5, + "value": "42" + }, + { + "begin": 21155, + "end": 22193, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "tag", + "source": 5, + "value": "41" + }, + { + "begin": 21155, + "end": 22193, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH [tag]", + "source": 5, + "value": "43" + }, + { + "begin": 21155, + "end": 22193, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "tag", + "source": 5, + "value": "40" + }, + { + "begin": 21155, + "end": 22193, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21155, + "end": 22193, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH [tag]", + "source": 5, + "value": "44" + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH [tag]", + "source": 5, + "value": "45" + }, + { + "begin": 21155, + "end": 22193, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "tag", + "source": 5, + "value": "44" + }, + { + "begin": 21155, + "end": 22193, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21155, + "end": 22193, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "DUP1", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SUB", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "RETURN", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "tag", + "source": 5, + "value": "5" + }, + { + "begin": 14831, + "end": 15471, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "DUP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH [tag]", + "source": 5, + "value": "46" + }, + { + "begin": 14831, + "end": 15471, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 14831, + "end": 15471, + "name": "DUP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "REVERT", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "tag", + "source": 5, + "value": "46" + }, + { + "begin": 14831, + "end": 15471, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH [tag]", + "source": 5, + "value": "47" + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 14831, + "end": 15471, + "name": "DUP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SUB", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "DUP2", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "ADD", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH [tag]", + "source": 5, + "value": "48" + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH [tag]", + "source": 5, + "value": "49" + }, + { + "begin": 14831, + "end": 15471, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "tag", + "source": 5, + "value": "48" + }, + { + "begin": 14831, + "end": 15471, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH [tag]", + "source": 5, + "value": "50" + }, + { + "begin": 14831, + "end": 15471, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "tag", + "source": 5, + "value": "47" + }, + { + "begin": 14831, + "end": 15471, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 14831, + "end": 15471, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH [tag]", + "source": 5, + "value": "51" + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 14831, + "end": 15471, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "tag", + "source": 5, + "value": "51" + }, + { + "begin": 14831, + "end": 15471, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 14831, + "end": 15471, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "DUP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SUB", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "RETURN", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "tag", + "source": 5, + "value": "6" + }, + { + "begin": 19572, + "end": 20731, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "DUP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH [tag]", + "source": 5, + "value": "52" + }, + { + "begin": 19572, + "end": 20731, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 19572, + "end": 20731, + "name": "DUP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "REVERT", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "tag", + "source": 5, + "value": "52" + }, + { + "begin": 19572, + "end": 20731, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH [tag]", + "source": 5, + "value": "53" + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 19572, + "end": 20731, + "name": "DUP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SUB", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "ADD", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH [tag]", + "source": 5, + "value": "54" + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH [tag]", + "source": 5, + "value": "36" + }, + { + "begin": 19572, + "end": 20731, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "tag", + "source": 5, + "value": "54" + }, + { + "begin": 19572, + "end": 20731, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH [tag]", + "source": 5, + "value": "55" + }, + { + "begin": 19572, + "end": 20731, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "tag", + "source": 5, + "value": "53" + }, + { + "begin": 19572, + "end": 20731, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19572, + "end": 20731, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH [tag]", + "source": 5, + "value": "56" + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH [tag]", + "source": 5, + "value": "45" + }, + { + "begin": 19572, + "end": 20731, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "tag", + "source": 5, + "value": "56" + }, + { + "begin": 19572, + "end": 20731, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19572, + "end": 20731, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "DUP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SUB", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "RETURN", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "tag", + "source": 5, + "value": "7" + }, + { + "begin": 22625, + "end": 23464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH [tag]", + "source": 5, + "value": "57" + }, + { + "begin": 22625, + "end": 23464, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 22625, + "end": 23464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "REVERT", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "tag", + "source": 5, + "value": "57" + }, + { + "begin": 22625, + "end": 23464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH [tag]", + "source": 5, + "value": "58" + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 22625, + "end": 23464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SUB", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "DUP2", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "ADD", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH [tag]", + "source": 5, + "value": "59" + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH [tag]", + "source": 5, + "value": "49" + }, + { + "begin": 22625, + "end": 23464, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "tag", + "source": 5, + "value": "59" + }, + { + "begin": 22625, + "end": 23464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH [tag]", + "source": 5, + "value": "60" + }, + { + "begin": 22625, + "end": 23464, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "tag", + "source": 5, + "value": "58" + }, + { + "begin": 22625, + "end": 23464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 22625, + "end": 23464, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH [tag]", + "source": 5, + "value": "61" + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 22625, + "end": 23464, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "tag", + "source": 5, + "value": "61" + }, + { + "begin": 22625, + "end": 23464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 22625, + "end": 23464, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SUB", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "RETURN", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "tag", + "source": 5, + "value": "8" + }, + { + "begin": 26560, + "end": 26996, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "PUSH [tag]", + "source": 5, + "value": "62" + }, + { + "begin": 26560, + "end": 26996, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 26560, + "end": 26996, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "REVERT", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "tag", + "source": 5, + "value": "62" + }, + { + "begin": 26560, + "end": 26996, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "POP", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "PUSH [tag]", + "source": 5, + "value": "63" + }, + { + "begin": 26560, + "end": 26996, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 26560, + "end": 26996, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "SUB", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "ADD", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "PUSH [tag]", + "source": 5, + "value": "64" + }, + { + "begin": 26560, + "end": 26996, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "PUSH [tag]", + "source": 5, + "value": "65" + }, + { + "begin": 26560, + "end": 26996, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "tag", + "source": 5, + "value": "64" + }, + { + "begin": 26560, + "end": 26996, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "PUSH [tag]", + "source": 5, + "value": "66" + }, + { + "begin": 26560, + "end": 26996, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "tag", + "source": 5, + "value": "63" + }, + { + "begin": 26560, + "end": 26996, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "STOP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "tag", + "source": 5, + "value": "9" + }, + { + "begin": 6796, + "end": 7031, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH [tag]", + "source": 5, + "value": "67" + }, + { + "begin": 6796, + "end": 7031, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6796, + "end": 7031, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "REVERT", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "tag", + "source": 5, + "value": "67" + }, + { + "begin": 6796, + "end": 7031, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "POP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH [tag]", + "source": 5, + "value": "68" + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 6796, + "end": 7031, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SUB", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "ADD", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH [tag]", + "source": 5, + "value": "69" + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH [tag]", + "source": 5, + "value": "70" + }, + { + "begin": 6796, + "end": 7031, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "tag", + "source": 5, + "value": "69" + }, + { + "begin": 6796, + "end": 7031, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH [tag]", + "source": 5, + "value": "71" + }, + { + "begin": 6796, + "end": 7031, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "tag", + "source": 5, + "value": "68" + }, + { + "begin": 6796, + "end": 7031, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6796, + "end": 7031, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH [tag]", + "source": 5, + "value": "72" + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH [tag]", + "source": 5, + "value": "73" + }, + { + "begin": 6796, + "end": 7031, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "tag", + "source": 5, + "value": "72" + }, + { + "begin": 6796, + "end": 7031, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6796, + "end": 7031, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SUB", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "RETURN", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "tag", + "source": 5, + "value": "10" + }, + { + "begin": 3967, + "end": 4071, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH [tag]", + "source": 5, + "value": "74" + }, + { + "begin": 3967, + "end": 4071, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 3967, + "end": 4071, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "REVERT", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "tag", + "source": 5, + "value": "74" + }, + { + "begin": 3967, + "end": 4071, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "POP", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH [tag]", + "source": 5, + "value": "75" + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH [tag]", + "source": 5, + "value": "76" + }, + { + "begin": 3967, + "end": 4071, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "tag", + "source": 5, + "value": "75" + }, + { + "begin": 3967, + "end": 4071, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3967, + "end": 4071, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH [tag]", + "source": 5, + "value": "77" + }, + { + "begin": 3967, + "end": 4071, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH [tag]", + "source": 5, + "value": "78" + }, + { + "begin": 3967, + "end": 4071, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "tag", + "source": 5, + "value": "77" + }, + { + "begin": 3967, + "end": 4071, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3967, + "end": 4071, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "SUB", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "RETURN", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "tag", + "source": 5, + "value": "11" + }, + { + "begin": 3098, + "end": 3143, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "PUSH [tag]", + "source": 5, + "value": "79" + }, + { + "begin": 3098, + "end": 3143, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 3098, + "end": 3143, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "REVERT", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "tag", + "source": 5, + "value": "79" + }, + { + "begin": 3098, + "end": 3143, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "POP", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "PUSH [tag]", + "source": 5, + "value": "80" + }, + { + "begin": 3098, + "end": 3143, + "name": "PUSH [tag]", + "source": 5, + "value": "81" + }, + { + "begin": 3098, + "end": 3143, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "tag", + "source": 5, + "value": "80" + }, + { + "begin": 3098, + "end": 3143, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "STOP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "tag", + "source": 5, + "value": "12" + }, + { + "begin": 13396, + "end": 14437, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH [tag]", + "source": 5, + "value": "82" + }, + { + "begin": 13396, + "end": 14437, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 13396, + "end": 14437, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "REVERT", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "tag", + "source": 5, + "value": "82" + }, + { + "begin": 13396, + "end": 14437, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH [tag]", + "source": 5, + "value": "83" + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 13396, + "end": 14437, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SUB", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "DUP2", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "ADD", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH [tag]", + "source": 5, + "value": "84" + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH [tag]", + "source": 5, + "value": "85" + }, + { + "begin": 13396, + "end": 14437, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "tag", + "source": 5, + "value": "84" + }, + { + "begin": 13396, + "end": 14437, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH [tag]", + "source": 5, + "value": "86" + }, + { + "begin": 13396, + "end": 14437, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "tag", + "source": 5, + "value": "83" + }, + { + "begin": 13396, + "end": 14437, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 13396, + "end": 14437, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH [tag]", + "source": 5, + "value": "87" + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 13396, + "end": 14437, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "tag", + "source": 5, + "value": "87" + }, + { + "begin": 13396, + "end": 14437, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 13396, + "end": 14437, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SUB", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "RETURN", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "tag", + "source": 5, + "value": "13" + }, + { + "begin": 3494, + "end": 3603, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH [tag]", + "source": 5, + "value": "89" + }, + { + "begin": 3494, + "end": 3603, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 3494, + "end": 3603, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "REVERT", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "tag", + "source": 5, + "value": "89" + }, + { + "begin": 3494, + "end": 3603, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "POP", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH [tag]", + "source": 5, + "value": "90" + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH [tag]", + "source": 5, + "value": "91" + }, + { + "begin": 3494, + "end": 3603, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "tag", + "source": 5, + "value": "90" + }, + { + "begin": 3494, + "end": 3603, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3494, + "end": 3603, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH [tag]", + "source": 5, + "value": "92" + }, + { + "begin": 3494, + "end": 3603, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH [tag]", + "source": 5, + "value": "93" + }, + { + "begin": 3494, + "end": 3603, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "tag", + "source": 5, + "value": "92" + }, + { + "begin": 3494, + "end": 3603, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3494, + "end": 3603, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "SUB", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "RETURN", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "tag", + "source": 5, + "value": "14" + }, + { + "begin": 9334, + "end": 11070, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH [tag]", + "source": 5, + "value": "94" + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 9334, + "end": 11070, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SUB", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "ADD", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH [tag]", + "source": 5, + "value": "95" + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH [tag]", + "source": 5, + "value": "96" + }, + { + "begin": 9334, + "end": 11070, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "tag", + "source": 5, + "value": "95" + }, + { + "begin": 9334, + "end": 11070, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH [tag]", + "source": 5, + "value": "97" + }, + { + "begin": 9334, + "end": 11070, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "tag", + "source": 5, + "value": "94" + }, + { + "begin": 9334, + "end": 11070, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9334, + "end": 11070, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH [tag]", + "source": 5, + "value": "98" + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH [tag]", + "source": 5, + "value": "99" + }, + { + "begin": 9334, + "end": 11070, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "tag", + "source": 5, + "value": "98" + }, + { + "begin": 9334, + "end": 11070, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9334, + "end": 11070, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SUB", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "RETURN", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "tag", + "source": 5, + "value": "15" + }, + { + "begin": 18255, + "end": 19157, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "DUP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH [tag]", + "source": 5, + "value": "100" + }, + { + "begin": 18255, + "end": 19157, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18255, + "end": 19157, + "name": "DUP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "REVERT", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "tag", + "source": 5, + "value": "100" + }, + { + "begin": 18255, + "end": 19157, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH [tag]", + "source": 5, + "value": "101" + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 18255, + "end": 19157, + "name": "DUP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SUB", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "ADD", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH [tag]", + "source": 5, + "value": "102" + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH [tag]", + "source": 5, + "value": "49" + }, + { + "begin": 18255, + "end": 19157, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "tag", + "source": 5, + "value": "102" + }, + { + "begin": 18255, + "end": 19157, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH [tag]", + "source": 5, + "value": "103" + }, + { + "begin": 18255, + "end": 19157, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "tag", + "source": 5, + "value": "101" + }, + { + "begin": 18255, + "end": 19157, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18255, + "end": 19157, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH [tag]", + "source": 5, + "value": "104" + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH [tag]", + "source": 5, + "value": "45" + }, + { + "begin": 18255, + "end": 19157, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "tag", + "source": 5, + "value": "104" + }, + { + "begin": 18255, + "end": 19157, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18255, + "end": 19157, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "DUP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SUB", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "RETURN", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "tag", + "source": 5, + "value": "16" + }, + { + "begin": 5379, + "end": 5651, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH [tag]", + "source": 5, + "value": "105" + }, + { + "begin": 5379, + "end": 5651, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 5379, + "end": 5651, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "REVERT", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "tag", + "source": 5, + "value": "105" + }, + { + "begin": 5379, + "end": 5651, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "POP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH [tag]", + "source": 5, + "value": "106" + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 5379, + "end": 5651, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SUB", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "DUP2", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "ADD", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH [tag]", + "source": 5, + "value": "107" + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH [tag]", + "source": 5, + "value": "108" + }, + { + "begin": 5379, + "end": 5651, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "tag", + "source": 5, + "value": "107" + }, + { + "begin": 5379, + "end": 5651, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH [tag]", + "source": 5, + "value": "109" + }, + { + "begin": 5379, + "end": 5651, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "tag", + "source": 5, + "value": "106" + }, + { + "begin": 5379, + "end": 5651, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 5379, + "end": 5651, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH [tag]", + "source": 5, + "value": "110" + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH [tag]", + "source": 5, + "value": "111" + }, + { + "begin": 5379, + "end": 5651, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "tag", + "source": 5, + "value": "110" + }, + { + "begin": 5379, + "end": 5651, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 5379, + "end": 5651, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SUB", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "RETURN", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "tag", + "source": 5, + "value": "17" + }, + { + "begin": 15872, + "end": 16787, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "DUP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH [tag]", + "source": 5, + "value": "112" + }, + { + "begin": 15872, + "end": 16787, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 15872, + "end": 16787, + "name": "DUP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "REVERT", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "tag", + "source": 5, + "value": "112" + }, + { + "begin": 15872, + "end": 16787, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH [tag]", + "source": 5, + "value": "113" + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 15872, + "end": 16787, + "name": "DUP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SUB", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "DUP2", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "ADD", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH [tag]", + "source": 5, + "value": "114" + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH [tag]", + "source": 5, + "value": "36" + }, + { + "begin": 15872, + "end": 16787, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "tag", + "source": 5, + "value": "114" + }, + { + "begin": 15872, + "end": 16787, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH [tag]", + "source": 5, + "value": "115" + }, + { + "begin": 15872, + "end": 16787, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "tag", + "source": 5, + "value": "113" + }, + { + "begin": 15872, + "end": 16787, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 15872, + "end": 16787, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH [tag]", + "source": 5, + "value": "116" + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 15872, + "end": 16787, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "tag", + "source": 5, + "value": "116" + }, + { + "begin": 15872, + "end": 16787, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 15872, + "end": 16787, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "DUP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SUB", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "RETURN", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "tag", + "source": 5, + "value": "18" + }, + { + "begin": 6115, + "end": 6389, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH [tag]", + "source": 5, + "value": "117" + }, + { + "begin": 6115, + "end": 6389, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6115, + "end": 6389, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "REVERT", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "tag", + "source": 5, + "value": "117" + }, + { + "begin": 6115, + "end": 6389, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "POP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH [tag]", + "source": 5, + "value": "118" + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 6115, + "end": 6389, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SUB", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "ADD", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH [tag]", + "source": 5, + "value": "119" + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH [tag]", + "source": 5, + "value": "108" + }, + { + "begin": 6115, + "end": 6389, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "tag", + "source": 5, + "value": "119" + }, + { + "begin": 6115, + "end": 6389, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH [tag]", + "source": 5, + "value": "120" + }, + { + "begin": 6115, + "end": 6389, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "tag", + "source": 5, + "value": "118" + }, + { + "begin": 6115, + "end": 6389, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6115, + "end": 6389, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH [tag]", + "source": 5, + "value": "121" + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH [tag]", + "source": 5, + "value": "111" + }, + { + "begin": 6115, + "end": 6389, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "tag", + "source": 5, + "value": "121" + }, + { + "begin": 6115, + "end": 6389, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6115, + "end": 6389, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SUB", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "RETURN", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "tag", + "source": 5, + "value": "19" + }, + { + "begin": 7659, + "end": 8694, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "DUP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH [tag]", + "source": 5, + "value": "122" + }, + { + "begin": 7659, + "end": 8694, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 7659, + "end": 8694, + "name": "DUP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "REVERT", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "tag", + "source": 5, + "value": "122" + }, + { + "begin": 7659, + "end": 8694, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "POP", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH [tag]", + "source": 5, + "value": "123" + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 7659, + "end": 8694, + "name": "DUP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SUB", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "DUP2", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "ADD", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH [tag]", + "source": 5, + "value": "124" + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH [tag]", + "source": 5, + "value": "96" + }, + { + "begin": 7659, + "end": 8694, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "tag", + "source": 5, + "value": "124" + }, + { + "begin": 7659, + "end": 8694, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH [tag]", + "source": 5, + "value": "125" + }, + { + "begin": 7659, + "end": 8694, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "tag", + "source": 5, + "value": "123" + }, + { + "begin": 7659, + "end": 8694, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 7659, + "end": 8694, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH [tag]", + "source": 5, + "value": "126" + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH [tag]", + "source": 5, + "value": "99" + }, + { + "begin": 7659, + "end": 8694, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "tag", + "source": 5, + "value": "126" + }, + { + "begin": 7659, + "end": 8694, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 7659, + "end": 8694, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "DUP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SUB", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "RETURN", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "tag", + "source": 5, + "value": "20" + }, + { + "begin": 17130, + "end": 17861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH [tag]", + "source": 5, + "value": "127" + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 17130, + "end": 17861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SUB", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "ADD", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH [tag]", + "source": 5, + "value": "128" + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH [tag]", + "source": 5, + "value": "42" + }, + { + "begin": 17130, + "end": 17861, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "tag", + "source": 5, + "value": "128" + }, + { + "begin": 17130, + "end": 17861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH [tag]", + "source": 5, + "value": "129" + }, + { + "begin": 17130, + "end": 17861, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "tag", + "source": 5, + "value": "127" + }, + { + "begin": 17130, + "end": 17861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17130, + "end": 17861, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH [tag]", + "source": 5, + "value": "130" + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 17130, + "end": 17861, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "tag", + "source": 5, + "value": "130" + }, + { + "begin": 17130, + "end": 17861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17130, + "end": 17861, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SUB", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "RETURN", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "tag", + "source": 5, + "value": "21" + }, + { + "begin": 3731, + "end": 3851, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH [tag]", + "source": 5, + "value": "131" + }, + { + "begin": 3731, + "end": 3851, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 3731, + "end": 3851, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "REVERT", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "tag", + "source": 5, + "value": "131" + }, + { + "begin": 3731, + "end": 3851, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "POP", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH [tag]", + "source": 5, + "value": "132" + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH [tag]", + "source": 5, + "value": "133" + }, + { + "begin": 3731, + "end": 3851, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "tag", + "source": 5, + "value": "132" + }, + { + "begin": 3731, + "end": 3851, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3731, + "end": 3851, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH [tag]", + "source": 5, + "value": "134" + }, + { + "begin": 3731, + "end": 3851, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH [tag]", + "source": 5, + "value": "135" + }, + { + "begin": 3731, + "end": 3851, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "tag", + "source": 5, + "value": "134" + }, + { + "begin": 3731, + "end": 3851, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 3731, + "end": 3851, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "DUP1", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "SUB", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "RETURN", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "tag", + "source": 5, + "value": "22" + }, + { + "begin": 11788, + "end": 12529, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "DUP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH [tag]", + "source": 5, + "value": "136" + }, + { + "begin": 11788, + "end": 12529, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 11788, + "end": 12529, + "name": "DUP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "REVERT", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "tag", + "source": 5, + "value": "136" + }, + { + "begin": 11788, + "end": 12529, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH [tag]", + "source": 5, + "value": "137" + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 11788, + "end": 12529, + "name": "DUP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SUB", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "DUP2", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "ADD", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH [tag]", + "source": 5, + "value": "138" + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH [tag]", + "source": 5, + "value": "139" + }, + { + "begin": 11788, + "end": 12529, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "tag", + "source": 5, + "value": "138" + }, + { + "begin": 11788, + "end": 12529, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH [tag]", + "source": 5, + "value": "140" + }, + { + "begin": 11788, + "end": 12529, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "tag", + "source": 5, + "value": "137" + }, + { + "begin": 11788, + "end": 12529, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 11788, + "end": 12529, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH [tag]", + "source": 5, + "value": "141" + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 11788, + "end": 12529, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "tag", + "source": 5, + "value": "141" + }, + { + "begin": 11788, + "end": 12529, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 11788, + "end": 12529, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "DUP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SUB", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "RETURN", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "tag", + "source": 5, + "value": "23" + }, + { + "begin": 4763, + "end": 4900, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH [tag]", + "source": 5, + "value": "142" + }, + { + "begin": 4763, + "end": 4900, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4763, + "end": 4900, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "REVERT", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "tag", + "source": 5, + "value": "142" + }, + { + "begin": 4763, + "end": 4900, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "POP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH [tag]", + "source": 5, + "value": "143" + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 4763, + "end": 4900, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SUB", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "ADD", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH [tag]", + "source": 5, + "value": "144" + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH [tag]", + "source": 5, + "value": "145" + }, + { + "begin": 4763, + "end": 4900, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "tag", + "source": 5, + "value": "144" + }, + { + "begin": 4763, + "end": 4900, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH [tag]", + "source": 5, + "value": "146" + }, + { + "begin": 4763, + "end": 4900, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "tag", + "source": 5, + "value": "143" + }, + { + "begin": 4763, + "end": 4900, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4763, + "end": 4900, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH [tag]", + "source": 5, + "value": "147" + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 4763, + "end": 4900, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "tag", + "source": 5, + "value": "147" + }, + { + "begin": 4763, + "end": 4900, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4763, + "end": 4900, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SUB", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "RETURN", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "tag", + "source": 5, + "value": "24" + }, + { + "begin": 25354, + "end": 26269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH [tag]", + "source": 5, + "value": "148" + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 25354, + "end": 26269, + "name": "DUP1", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SUB", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "ADD", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH [tag]", + "source": 5, + "value": "149" + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH [tag]", + "source": 5, + "value": "42" + }, + { + "begin": 25354, + "end": 26269, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "tag", + "source": 5, + "value": "149" + }, + { + "begin": 25354, + "end": 26269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH [tag]", + "source": 5, + "value": "150" + }, + { + "begin": 25354, + "end": 26269, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "tag", + "source": 5, + "value": "148" + }, + { + "begin": 25354, + "end": 26269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25354, + "end": 26269, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH [tag]", + "source": 5, + "value": "151" + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 25354, + "end": 26269, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "tag", + "source": 5, + "value": "151" + }, + { + "begin": 25354, + "end": 26269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25354, + "end": 26269, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "DUP1", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SUB", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "RETURN", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "tag", + "source": 5, + "value": "25" + }, + { + "begin": 27343, + "end": 27585, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "PUSH [tag]", + "source": 5, + "value": "152" + }, + { + "begin": 27343, + "end": 27585, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 27343, + "end": 27585, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "REVERT", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "tag", + "source": 5, + "value": "152" + }, + { + "begin": 27343, + "end": 27585, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "PUSH [tag]", + "source": 5, + "value": "153" + }, + { + "begin": 27343, + "end": 27585, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 27343, + "end": 27585, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "SUB", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "DUP2", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "ADD", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "PUSH [tag]", + "source": 5, + "value": "154" + }, + { + "begin": 27343, + "end": 27585, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "PUSH [tag]", + "source": 5, + "value": "155" + }, + { + "begin": 27343, + "end": 27585, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "tag", + "source": 5, + "value": "154" + }, + { + "begin": 27343, + "end": 27585, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "PUSH [tag]", + "source": 5, + "value": "156" + }, + { + "begin": 27343, + "end": 27585, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "tag", + "source": 5, + "value": "153" + }, + { + "begin": 27343, + "end": 27585, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "STOP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "tag", + "source": 5, + "value": "26" + }, + { + "begin": 4413, + "end": 4556, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH [tag]", + "source": 5, + "value": "157" + }, + { + "begin": 4413, + "end": 4556, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4413, + "end": 4556, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "REVERT", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "tag", + "source": 5, + "value": "157" + }, + { + "begin": 4413, + "end": 4556, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "POP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH [tag]", + "source": 5, + "value": "158" + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 4413, + "end": 4556, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SUB", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "ADD", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH [tag]", + "source": 5, + "value": "159" + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH [tag]", + "source": 5, + "value": "160" + }, + { + "begin": 4413, + "end": 4556, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "tag", + "source": 5, + "value": "159" + }, + { + "begin": 4413, + "end": 4556, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH [tag]", + "source": 5, + "value": "161" + }, + { + "begin": 4413, + "end": 4556, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "tag", + "source": 5, + "value": "158" + }, + { + "begin": 4413, + "end": 4556, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4413, + "end": 4556, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH [tag]", + "source": 5, + "value": "162" + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH [tag]", + "source": 5, + "value": "163" + }, + { + "begin": 4413, + "end": 4556, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "tag", + "source": 5, + "value": "162" + }, + { + "begin": 4413, + "end": 4556, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4413, + "end": 4556, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SUB", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "RETURN", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "tag", + "source": 5, + "value": "37" + }, + { + "begin": 23903, + "end": 24973, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24183, + "end": 24200, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24139, + "end": 24147, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "165" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "166" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "166" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "165" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24168, + "end": 24172, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "168" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "168" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "169" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "170" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "170" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "169" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "172" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "172" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24267, + "end": 24275, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 24216, + "end": 24276, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 24216, + "end": 24276, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24216, + "end": 24220, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 24216, + "end": 24230, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24216, + "end": 24230, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24216, + "end": 24230, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24231, + "end": 24235, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 24231, + "end": 24248, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24231, + "end": 24248, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24231, + "end": 24248, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24231, + "end": 24255, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "174" + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "175" + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 24216, + "end": 24256, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "175" + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "174" + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24216, + "end": 24256, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24216, + "end": 24276, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 24216, + "end": 24276, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24216, + "end": 24276, + "modifierDepth": 2, + "name": "EQ", + "source": 5 + }, + { + "begin": 24212, + "end": 24387, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "177" + }, + { + "begin": 24212, + "end": 24387, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24334, + "end": 24338, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 24334, + "end": 24348, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24334, + "end": 24348, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24334, + "end": 24348, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24349, + "end": 24353, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 24349, + "end": 24366, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24349, + "end": 24366, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24349, + "end": 24366, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24349, + "end": 24373, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "178" + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "179" + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 24334, + "end": 24374, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "179" + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "178" + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24334, + "end": 24374, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CFEC0E0100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "180" + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 24299, + "end": 24376, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "180" + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24299, + "end": 24376, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 24212, + "end": 24387, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "177" + }, + { + "begin": 24212, + "end": 24387, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24397, + "end": 24419, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24422, + "end": 24481, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "182" + }, + { + "begin": 24432, + "end": 24436, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 24432, + "end": 24449, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24432, + "end": 24449, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24432, + "end": 24449, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24451, + "end": 24455, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 24451, + "end": 24464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24451, + "end": 24464, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24451, + "end": 24464, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24466, + "end": 24470, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 24466, + "end": 24480, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24466, + "end": 24480, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24466, + "end": 24480, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24422, + "end": 24431, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 24422, + "end": 24481, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24422, + "end": 24481, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "182" + }, + { + "begin": 24422, + "end": 24481, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24397, + "end": 24481, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24397, + "end": 24481, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24492, + "end": 24513, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24516, + "end": 24524, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 24516, + "end": 24534, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 24516, + "end": 24534, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24516, + "end": 24534, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 24543, + "end": 24547, + "modifierDepth": 2, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "SHL", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "184" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 24516, + "end": 24549, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "184" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "GAS", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "186" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24516, + "end": 24549, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "186" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "NOT", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "187" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 24516, + "end": 24549, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "187" + }, + { + "begin": 24516, + "end": 24549, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24492, + "end": 24549, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24492, + "end": 24549, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24560, + "end": 24628, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "189" + }, + { + "begin": 24578, + "end": 24582, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 24578, + "end": 24592, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24578, + "end": 24592, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24578, + "end": 24592, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24593, + "end": 24594, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "190" + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "191" + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 24578, + "end": 24595, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "191" + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "190" + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24578, + "end": 24595, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24597, + "end": 24607, + "modifierDepth": 2, + "name": "CALLER", + "source": 5 + }, + { + "begin": 24609, + "end": 24614, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 24615, + "end": 24616, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "192" + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "193" + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 24609, + "end": 24617, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "193" + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "192" + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24609, + "end": 24617, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24619, + "end": 24627, + "modifierDepth": 2, + "name": "DUP14", + "source": 5 + }, + { + "begin": 24560, + "end": 24577, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 24560, + "end": 24628, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24560, + "end": 24628, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "189" + }, + { + "begin": 24560, + "end": 24628, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24639, + "end": 24726, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "195" + }, + { + "begin": 24674, + "end": 24679, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 24681, + "end": 24685, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 24681, + "end": 24694, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24681, + "end": 24694, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24681, + "end": 24694, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24696, + "end": 24700, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 24696, + "end": 24710, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24696, + "end": 24710, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24696, + "end": 24710, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24720, + "end": 24724, + "modifierDepth": 2, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 24639, + "end": 24673, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "196" + }, + { + "begin": 24639, + "end": 24726, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24639, + "end": 24726, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "195" + }, + { + "begin": 24639, + "end": 24726, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24785, + "end": 24798, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24757, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 24749, + "end": 24767, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 24749, + "end": 24767, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24749, + "end": 24767, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 24776, + "end": 24780, + "modifierDepth": 2, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "SHL", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "197" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 24749, + "end": 24782, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "197" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "GAS", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "199" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24749, + "end": 24782, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "199" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "NOT", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "200" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 24749, + "end": 24782, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "200" + }, + { + "begin": 24749, + "end": 24782, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24749, + "end": 24798, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "201" + }, + { + "begin": 24749, + "end": 24798, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24749, + "end": 24798, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24749, + "end": 24798, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 24749, + "end": 24798, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24749, + "end": 24798, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "201" + }, + { + "begin": 24749, + "end": 24798, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24737, + "end": 24798, + "modifierDepth": 2, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 24737, + "end": 24798, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24833, + "end": 24842, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 24812, + "end": 24830, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 24812, + "end": 24842, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 24808, + "end": 24913, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 24808, + "end": 24913, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "203" + }, + { + "begin": 24808, + "end": 24913, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 24883, + "end": 24901, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 24903, + "end": 24912, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "204" + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 24851, + "end": 24913, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "204" + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 24851, + "end": 24913, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 24808, + "end": 24913, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "203" + }, + { + "begin": 24808, + "end": 24913, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24924, + "end": 24966, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "205" + }, + { + "begin": 24952, + "end": 24954, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 24956, + "end": 24965, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 24924, + "end": 24951, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "206" + }, + { + "begin": 24924, + "end": 24966, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 24924, + "end": 24966, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "205" + }, + { + "begin": 24924, + "end": 24966, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 24202, + "end": 24973, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 24202, + "end": 24973, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "name": "POP", + "source": 5 + }, + { + "begin": 23903, + "end": 24973, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "tag", + "source": 5, + "value": "43" + }, + { + "begin": 21155, + "end": 22193, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21381, + "end": 21407, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 21321, + "end": 21329, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "208" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "209" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "209" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "208" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21358, + "end": 21362, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "211" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "211" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "212" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "213" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "213" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "212" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "214" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "214" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21455, + "end": 21463, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 21427, + "end": 21464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 21427, + "end": 21464, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 21427, + "end": 21431, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 21427, + "end": 21441, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21427, + "end": 21441, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21427, + "end": 21441, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21442, + "end": 21443, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "216" + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "217" + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 21427, + "end": 21444, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "217" + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "216" + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21427, + "end": 21444, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21427, + "end": 21464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 21427, + "end": 21464, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 21427, + "end": 21464, + "modifierDepth": 2, + "name": "EQ", + "source": 5 + }, + { + "begin": 21423, + "end": 21527, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "218" + }, + { + "begin": 21423, + "end": 21527, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21508, + "end": 21512, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 21508, + "end": 21522, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21508, + "end": 21522, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21508, + "end": 21522, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21523, + "end": 21524, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "219" + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "220" + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 21508, + "end": 21525, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "220" + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "219" + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21508, + "end": 21525, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CFEC0E0100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "221" + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 21473, + "end": 21527, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "221" + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21473, + "end": 21527, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 21423, + "end": 21527, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "218" + }, + { + "begin": 21423, + "end": 21527, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21538, + "end": 21560, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21563, + "end": 21622, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "222" + }, + { + "begin": 21573, + "end": 21577, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 21573, + "end": 21590, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21573, + "end": 21590, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21573, + "end": 21590, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21592, + "end": 21596, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 21592, + "end": 21605, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21592, + "end": 21605, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21592, + "end": 21605, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21607, + "end": 21611, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 21607, + "end": 21621, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21607, + "end": 21621, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21607, + "end": 21621, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21563, + "end": 21572, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 21563, + "end": 21622, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21563, + "end": 21622, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "222" + }, + { + "begin": 21563, + "end": 21622, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21538, + "end": 21622, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21538, + "end": 21622, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 21644, + "end": 21706, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "223" + }, + { + "begin": 21658, + "end": 21662, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 21658, + "end": 21671, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21658, + "end": 21671, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21658, + "end": 21671, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21673, + "end": 21678, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 21680, + "end": 21684, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 21680, + "end": 21694, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21680, + "end": 21694, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21680, + "end": 21694, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21696, + "end": 21705, + "modifierDepth": 2, + "name": "DUP12", + "source": 5 + }, + { + "begin": 21644, + "end": 21657, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "224" + }, + { + "begin": 21644, + "end": 21706, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21644, + "end": 21706, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "223" + }, + { + "begin": 21644, + "end": 21706, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21632, + "end": 21706, + "modifierDepth": 2, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 21632, + "end": 21706, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 21736, + "end": 21745, + "modifierDepth": 2, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 21721, + "end": 21730, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 21731, + "end": 21732, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "225" + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "226" + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 21721, + "end": 21733, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "226" + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "225" + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21721, + "end": 21733, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21721, + "end": 21745, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 21717, + "end": 21808, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 21717, + "end": 21808, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "227" + }, + { + "begin": 21717, + "end": 21808, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21784, + "end": 21793, + "modifierDepth": 2, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 21795, + "end": 21804, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 21805, + "end": 21806, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "228" + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "229" + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 21795, + "end": 21807, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "229" + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "228" + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21795, + "end": 21807, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CA7710C800000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "230" + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 21754, + "end": 21808, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "230" + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21754, + "end": 21808, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 21717, + "end": 21808, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "227" + }, + { + "begin": 21717, + "end": 21808, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21819, + "end": 21869, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "231" + }, + { + "begin": 21846, + "end": 21851, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21852, + "end": 21853, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "232" + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "233" + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 21846, + "end": 21854, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "233" + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "232" + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21846, + "end": 21854, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21856, + "end": 21865, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 21866, + "end": 21867, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "234" + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "235" + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 21856, + "end": 21868, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "235" + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "234" + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21856, + "end": 21868, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21819, + "end": 21845, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "236" + }, + { + "begin": 21819, + "end": 21869, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21819, + "end": 21869, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "231" + }, + { + "begin": 21819, + "end": 21869, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21880, + "end": 21901, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 21904, + "end": 21982, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "237" + }, + { + "begin": 21930, + "end": 21935, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 21937, + "end": 21941, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 21937, + "end": 21950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 21937, + "end": 21950, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21937, + "end": 21950, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21952, + "end": 21956, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 21952, + "end": 21966, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 21952, + "end": 21966, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 21952, + "end": 21966, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 21968, + "end": 21977, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 21979, + "end": 21981, + "modifierDepth": 2, + "name": "DUP12", + "source": 5 + }, + { + "begin": 21904, + "end": 21929, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "238" + }, + { + "begin": 21904, + "end": 21982, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 21904, + "end": 21982, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "237" + }, + { + "begin": 21904, + "end": 21982, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21880, + "end": 21982, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 21880, + "end": 21982, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 22013, + "end": 22022, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 21997, + "end": 22010, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 21997, + "end": 22022, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 21993, + "end": 22088, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 21993, + "end": 22088, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "239" + }, + { + "begin": 21993, + "end": 22088, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 22063, + "end": 22072, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 22074, + "end": 22087, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "240" + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 22031, + "end": 22088, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "240" + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22031, + "end": 22088, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 21993, + "end": 22088, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "239" + }, + { + "begin": 21993, + "end": 22088, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22115, + "end": 22124, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 22125, + "end": 22126, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "241" + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "242" + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 22115, + "end": 22127, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "242" + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "241" + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22115, + "end": 22127, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22103, + "end": 22112, + "modifierDepth": 2, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 22103, + "end": 22127, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 22099, + "end": 22186, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 22099, + "end": 22186, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "243" + }, + { + "begin": 22099, + "end": 22186, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 22129, + "end": 22186, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "244" + }, + { + "begin": 22149, + "end": 22159, + "modifierDepth": 2, + "name": "CALLER", + "source": 5 + }, + { + "begin": 22173, + "end": 22182, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 22183, + "end": 22184, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "245" + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "246" + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 22173, + "end": 22185, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "246" + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "245" + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22173, + "end": 22185, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22161, + "end": 22170, + "modifierDepth": 2, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 22161, + "end": 22185, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "247" + }, + { + "begin": 22161, + "end": 22185, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 22161, + "end": 22185, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22161, + "end": 22185, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 22161, + "end": 22185, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 22161, + "end": 22185, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "247" + }, + { + "begin": 22161, + "end": 22185, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22129, + "end": 22148, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "248" + }, + { + "begin": 22129, + "end": 22186, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 22129, + "end": 22186, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "244" + }, + { + "begin": 22129, + "end": 22186, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22099, + "end": 22186, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "243" + }, + { + "begin": 22099, + "end": 22186, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 21413, + "end": 22193, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 21413, + "end": 22193, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "POP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "POP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "POP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "POP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "name": "POP", + "source": 5 + }, + { + "begin": 21155, + "end": 22193, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "tag", + "source": 5, + "value": "50" + }, + { + "begin": 14831, + "end": 15471, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15068, + "end": 15085, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 15024, + "end": 15032, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "250" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "251" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "251" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "250" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15053, + "end": 15057, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "253" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "253" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "254" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "255" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "255" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "254" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "256" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "256" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15097, + "end": 15119, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 15122, + "end": 15181, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "258" + }, + { + "begin": 15132, + "end": 15136, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 15132, + "end": 15149, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 15132, + "end": 15149, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15132, + "end": 15149, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15151, + "end": 15155, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 15151, + "end": 15164, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 15151, + "end": 15164, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15151, + "end": 15164, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15166, + "end": 15170, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 15166, + "end": 15180, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 15166, + "end": 15180, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15166, + "end": 15180, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15122, + "end": 15131, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 15122, + "end": 15181, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 15122, + "end": 15181, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "258" + }, + { + "begin": 15122, + "end": 15181, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15097, + "end": 15181, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 15097, + "end": 15181, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 15192, + "end": 15260, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "259" + }, + { + "begin": 15210, + "end": 15214, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 15210, + "end": 15224, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 15210, + "end": 15224, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15210, + "end": 15224, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15225, + "end": 15226, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "260" + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "261" + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 15210, + "end": 15227, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "261" + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "260" + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15210, + "end": 15227, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15229, + "end": 15239, + "modifierDepth": 2, + "name": "CALLER", + "source": 5 + }, + { + "begin": 15241, + "end": 15246, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 15247, + "end": 15248, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "262" + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "263" + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 15241, + "end": 15249, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "263" + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "262" + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15241, + "end": 15249, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15251, + "end": 15259, + "modifierDepth": 2, + "name": "DUP13", + "source": 5 + }, + { + "begin": 15192, + "end": 15209, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 15192, + "end": 15260, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 15192, + "end": 15260, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "259" + }, + { + "begin": 15192, + "end": 15260, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15283, + "end": 15360, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "264" + }, + { + "begin": 15309, + "end": 15317, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 15319, + "end": 15324, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 15326, + "end": 15330, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 15326, + "end": 15339, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 15326, + "end": 15339, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15326, + "end": 15339, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15341, + "end": 15345, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 15341, + "end": 15355, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 15341, + "end": 15355, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15341, + "end": 15355, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15357, + "end": 15359, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 15283, + "end": 15308, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "265" + }, + { + "begin": 15283, + "end": 15360, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 15283, + "end": 15360, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "264" + }, + { + "begin": 15283, + "end": 15360, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15271, + "end": 15360, + "modifierDepth": 2, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 15271, + "end": 15360, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 15390, + "end": 15399, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 15375, + "end": 15387, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 15375, + "end": 15399, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 15371, + "end": 15464, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 15371, + "end": 15464, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "266" + }, + { + "begin": 15371, + "end": 15464, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 15440, + "end": 15452, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 15454, + "end": 15463, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "267" + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 15408, + "end": 15464, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "267" + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 15408, + "end": 15464, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 15371, + "end": 15464, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "266" + }, + { + "begin": 15371, + "end": 15464, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 15087, + "end": 15471, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "name": "POP", + "source": 5 + }, + { + "begin": 14831, + "end": 15471, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "tag", + "source": 5, + "value": "55" + }, + { + "begin": 19572, + "end": 20731, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19823, + "end": 19849, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 19779, + "end": 19787, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "269" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "270" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "270" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "269" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19808, + "end": 19812, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "272" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "272" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "273" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "274" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "274" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "273" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "275" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "275" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19916, + "end": 19924, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 19865, + "end": 19925, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 19865, + "end": 19925, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 19865, + "end": 19869, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 19865, + "end": 19879, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19865, + "end": 19879, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19865, + "end": 19879, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19880, + "end": 19884, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 19880, + "end": 19897, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 19880, + "end": 19897, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19880, + "end": 19897, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19880, + "end": 19904, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "277" + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "278" + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 19865, + "end": 19905, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "278" + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "277" + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19865, + "end": 19905, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19865, + "end": 19925, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 19865, + "end": 19925, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 19865, + "end": 19925, + "modifierDepth": 2, + "name": "EQ", + "source": 5 + }, + { + "begin": 19861, + "end": 20036, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "279" + }, + { + "begin": 19861, + "end": 20036, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 19983, + "end": 19987, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 19983, + "end": 19997, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19983, + "end": 19997, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19983, + "end": 19997, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19998, + "end": 20002, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 19998, + "end": 20015, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 19998, + "end": 20015, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19998, + "end": 20015, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19998, + "end": 20022, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "280" + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "281" + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 19983, + "end": 20023, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "281" + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "280" + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19983, + "end": 20023, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CFEC0E0100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "282" + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 19948, + "end": 20025, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "282" + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19948, + "end": 20025, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 19861, + "end": 20036, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "279" + }, + { + "begin": 19861, + "end": 20036, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20046, + "end": 20068, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20071, + "end": 20130, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "283" + }, + { + "begin": 20081, + "end": 20085, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 20081, + "end": 20098, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20081, + "end": 20098, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20081, + "end": 20098, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20100, + "end": 20104, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 20100, + "end": 20113, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20100, + "end": 20113, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20100, + "end": 20113, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20115, + "end": 20119, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 20115, + "end": 20129, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20115, + "end": 20129, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20115, + "end": 20129, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20071, + "end": 20080, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 20071, + "end": 20130, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20071, + "end": 20130, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "283" + }, + { + "begin": 20071, + "end": 20130, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20046, + "end": 20130, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 20046, + "end": 20130, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 20152, + "end": 20220, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "284" + }, + { + "begin": 20166, + "end": 20170, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 20166, + "end": 20179, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20166, + "end": 20179, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20166, + "end": 20179, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20181, + "end": 20186, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 20188, + "end": 20192, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 20188, + "end": 20202, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20188, + "end": 20202, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20188, + "end": 20202, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20204, + "end": 20219, + "modifierDepth": 2, + "name": "DUP13", + "source": 5 + }, + { + "begin": 20152, + "end": 20165, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "224" + }, + { + "begin": 20152, + "end": 20220, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20152, + "end": 20220, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "284" + }, + { + "begin": 20152, + "end": 20220, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20140, + "end": 20220, + "modifierDepth": 2, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 20140, + "end": 20220, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 20250, + "end": 20261, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 20235, + "end": 20244, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 20245, + "end": 20246, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "285" + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "286" + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 20235, + "end": 20247, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "286" + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "285" + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20235, + "end": 20247, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20235, + "end": 20261, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 20231, + "end": 20326, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 20231, + "end": 20326, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "287" + }, + { + "begin": 20231, + "end": 20326, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 20300, + "end": 20311, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 20313, + "end": 20322, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 20323, + "end": 20324, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "288" + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "289" + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 20313, + "end": 20325, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "289" + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "288" + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20313, + "end": 20325, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CA7710C800000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "290" + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 20270, + "end": 20326, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "290" + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 20270, + "end": 20326, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 20231, + "end": 20326, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "287" + }, + { + "begin": 20231, + "end": 20326, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20337, + "end": 20409, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "291" + }, + { + "begin": 20355, + "end": 20359, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 20355, + "end": 20369, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20355, + "end": 20369, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20355, + "end": 20369, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20370, + "end": 20371, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "292" + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "293" + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 20355, + "end": 20372, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "293" + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "292" + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20355, + "end": 20372, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20374, + "end": 20384, + "modifierDepth": 2, + "name": "CALLER", + "source": 5 + }, + { + "begin": 20386, + "end": 20391, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 20392, + "end": 20393, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "294" + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "295" + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 20386, + "end": 20394, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "295" + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "294" + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20386, + "end": 20394, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20396, + "end": 20405, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 20406, + "end": 20407, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "296" + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "297" + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 20396, + "end": 20408, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "297" + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "296" + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20396, + "end": 20408, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20337, + "end": 20354, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 20337, + "end": 20409, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20337, + "end": 20409, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "291" + }, + { + "begin": 20337, + "end": 20409, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20420, + "end": 20442, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 20457, + "end": 20546, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "298" + }, + { + "begin": 20483, + "end": 20488, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 20490, + "end": 20494, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 20490, + "end": 20503, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 20490, + "end": 20503, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20490, + "end": 20503, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20505, + "end": 20509, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 20505, + "end": 20519, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20505, + "end": 20519, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20505, + "end": 20519, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20521, + "end": 20530, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 20540, + "end": 20544, + "modifierDepth": 2, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 20457, + "end": 20482, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "238" + }, + { + "begin": 20457, + "end": 20546, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20457, + "end": 20546, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "298" + }, + { + "begin": 20457, + "end": 20546, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20420, + "end": 20546, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 20420, + "end": 20546, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 20578, + "end": 20593, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 20561, + "end": 20575, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20561, + "end": 20593, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 20557, + "end": 20666, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 20557, + "end": 20666, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "299" + }, + { + "begin": 20557, + "end": 20666, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 20634, + "end": 20649, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 20651, + "end": 20665, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "300" + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 20602, + "end": 20666, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "300" + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 20602, + "end": 20666, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 20557, + "end": 20666, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "299" + }, + { + "begin": 20557, + "end": 20666, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 20677, + "end": 20724, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "301" + }, + { + "begin": 20705, + "end": 20707, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 20709, + "end": 20723, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 20677, + "end": 20704, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "206" + }, + { + "begin": 20677, + "end": 20724, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 20677, + "end": 20724, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "301" + }, + { + "begin": 20677, + "end": 20724, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19851, + "end": 20731, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 19851, + "end": 20731, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "name": "POP", + "source": 5 + }, + { + "begin": 19572, + "end": 20731, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "tag", + "source": 5, + "value": "60" + }, + { + "begin": 22625, + "end": 23464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22891, + "end": 22908, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 22847, + "end": 22855, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "303" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "304" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "304" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "303" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22876, + "end": 22880, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "306" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "306" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "307" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "308" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "308" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "307" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "309" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "309" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22920, + "end": 22942, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 22945, + "end": 23004, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "311" + }, + { + "begin": 22955, + "end": 22959, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 22955, + "end": 22972, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 22955, + "end": 22972, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22955, + "end": 22972, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22974, + "end": 22978, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 22974, + "end": 22987, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 22974, + "end": 22987, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22974, + "end": 22987, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22989, + "end": 22993, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 22989, + "end": 23003, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 22989, + "end": 23003, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 22989, + "end": 23003, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 22945, + "end": 22954, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 22945, + "end": 23004, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 22945, + "end": 23004, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "311" + }, + { + "begin": 22945, + "end": 23004, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22920, + "end": 23004, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 22920, + "end": 23004, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23015, + "end": 23033, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23036, + "end": 23040, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 23036, + "end": 23050, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23036, + "end": 23050, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23036, + "end": 23050, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23051, + "end": 23056, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23051, + "end": 23063, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "312" + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "313" + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 23036, + "end": 23064, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "313" + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "312" + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23036, + "end": 23064, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23015, + "end": 23064, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23015, + "end": 23064, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23075, + "end": 23096, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23099, + "end": 23110, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23099, + "end": 23120, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 23099, + "end": 23120, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 23099, + "end": 23120, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 23121, + "end": 23123, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "SHL", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "314" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 23099, + "end": 23124, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "314" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "GAS", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "316" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23099, + "end": 23124, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "316" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "NOT", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "317" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 23099, + "end": 23124, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "317" + }, + { + "begin": 23099, + "end": 23124, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23075, + "end": 23124, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23075, + "end": 23124, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23135, + "end": 23203, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "318" + }, + { + "begin": 23153, + "end": 23157, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 23153, + "end": 23167, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23153, + "end": 23167, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23153, + "end": 23167, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23168, + "end": 23169, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "319" + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "320" + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 23153, + "end": 23170, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "320" + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "319" + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23153, + "end": 23170, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23172, + "end": 23182, + "modifierDepth": 2, + "name": "CALLER", + "source": 5 + }, + { + "begin": 23184, + "end": 23189, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 23190, + "end": 23191, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "321" + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "322" + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 23184, + "end": 23192, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "322" + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "321" + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23184, + "end": 23192, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23194, + "end": 23202, + "modifierDepth": 2, + "name": "DUP15", + "source": 5 + }, + { + "begin": 23135, + "end": 23152, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 23135, + "end": 23203, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23135, + "end": 23203, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "318" + }, + { + "begin": 23135, + "end": 23203, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23214, + "end": 23290, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "323" + }, + { + "begin": 23249, + "end": 23254, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 23256, + "end": 23260, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 23256, + "end": 23269, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23256, + "end": 23269, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23256, + "end": 23269, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23271, + "end": 23275, + "modifierDepth": 2, + "name": "DUP12", + "source": 5 + }, + { + "begin": 23271, + "end": 23285, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23271, + "end": 23285, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23271, + "end": 23285, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23287, + "end": 23289, + "modifierDepth": 2, + "name": "DUP12", + "source": 5 + }, + { + "begin": 23214, + "end": 23248, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "196" + }, + { + "begin": 23214, + "end": 23290, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23214, + "end": 23290, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "323" + }, + { + "begin": 23214, + "end": 23290, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23341, + "end": 23354, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23324, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23313, + "end": 23334, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 23313, + "end": 23334, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 23313, + "end": 23334, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 23335, + "end": 23337, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "SHL", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "324" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 23313, + "end": 23338, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "324" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "GAS", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "326" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23313, + "end": 23338, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "326" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "NOT", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "327" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 23313, + "end": 23338, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "327" + }, + { + "begin": 23313, + "end": 23338, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23313, + "end": 23354, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "328" + }, + { + "begin": 23313, + "end": 23354, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23313, + "end": 23354, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23313, + "end": 23354, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 23313, + "end": 23354, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23313, + "end": 23354, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "328" + }, + { + "begin": 23313, + "end": 23354, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23301, + "end": 23354, + "modifierDepth": 2, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 23301, + "end": 23354, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 23383, + "end": 23392, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 23368, + "end": 23380, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 23368, + "end": 23392, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 23364, + "end": 23457, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 23364, + "end": 23457, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "329" + }, + { + "begin": 23364, + "end": 23457, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 23433, + "end": 23445, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 23447, + "end": 23456, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "330" + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 23401, + "end": 23457, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "330" + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 23401, + "end": 23457, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 23364, + "end": 23457, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "329" + }, + { + "begin": 23364, + "end": 23457, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 22910, + "end": 23464, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 22910, + "end": 23464, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 22910, + "end": 23464, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "name": "POP", + "source": 5 + }, + { + "begin": 22625, + "end": 23464, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "tag", + "source": 5, + "value": "66" + }, + { + "begin": 26560, + "end": 26996, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2099, + "end": 2108, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "585" + }, + { + "begin": 2083, + "end": 2116, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2083, + "end": 2116, + "name": "AND", + "source": 5 + }, + { + "begin": 2083, + "end": 2116, + "name": "PUSH", + "source": 5, + "value": "8DA5CB5B" + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 2083, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 2083, + "end": 2118, + "name": "SHL", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP4", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "SUB", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP7", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "GAS", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH [tag]", + "source": 5, + "value": "333" + }, + { + "begin": 2083, + "end": 2118, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2083, + "end": 2118, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "tag", + "source": 5, + "value": "333" + }, + { + "begin": 2083, + "end": 2118, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 2083, + "end": 2118, + "name": "NOT", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH [tag]", + "source": 5, + "value": "334" + }, + { + "begin": 2083, + "end": 2118, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH [tag]", + "source": 5, + "value": "335" + }, + { + "begin": 2083, + "end": 2118, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "tag", + "source": 5, + "value": "334" + }, + { + "begin": 2083, + "end": 2118, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2069, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2069, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2069, + "end": 2079, + "name": "CALLER", + "source": 5 + }, + { + "begin": 2069, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2069, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2069, + "end": 2118, + "name": "EQ", + "source": 5 + }, + { + "begin": 2065, + "end": 2154, + "name": "PUSH [tag]", + "source": 5, + "value": "336" + }, + { + "begin": 2065, + "end": 2154, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2127, + "end": 2154, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "BB2A2B7200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2127, + "end": 2154, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2127, + "end": 2154, + "name": "ADD", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2127, + "end": 2154, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "SUB", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2065, + "end": 2154, + "name": "tag", + "source": 5, + "value": "336" + }, + { + "begin": 2065, + "end": 2154, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26692, + "end": 26693, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 26666, + "end": 26694, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26666, + "end": 26694, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 26674, + "end": 26679, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 26666, + "end": 26694, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26666, + "end": 26694, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 26666, + "end": 26694, + "name": "SUB", + "source": 5 + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "338" + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 26729, + "end": 26746, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26719, + "end": 26725, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26719, + "end": 26746, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "339" + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 26773, + "end": 26779, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "340" + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "339" + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26749, + "end": 26770, + "modifierDepth": 1, + "name": "SELFBALANCE", + "source": 5 + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "340" + }, + { + "begin": 26719, + "end": 26779, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26710, + "end": 26779, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26710, + "end": 26779, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 26794, + "end": 26825, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "341" + }, + { + "begin": 26814, + "end": 26816, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26818, + "end": 26824, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26794, + "end": 26813, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "248" + }, + { + "begin": 26794, + "end": 26825, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26794, + "end": 26825, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "341" + }, + { + "begin": 26794, + "end": 26825, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "342" + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "338" + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26875, + "end": 26892, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26865, + "end": 26871, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26865, + "end": 26892, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "343" + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 26928, + "end": 26934, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "344" + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "343" + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26895, + "end": 26900, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26895, + "end": 26910, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26895, + "end": 26910, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 26895, + "end": 26910, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 26919, + "end": 26923, + "modifierDepth": 1, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "SHL", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "345" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 26895, + "end": 26925, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "345" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP7", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "GAS", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "347" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 26895, + "end": 26925, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "347" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "NOT", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "348" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 26895, + "end": 26925, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "348" + }, + { + "begin": 26895, + "end": 26925, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "344" + }, + { + "begin": 26865, + "end": 26934, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26856, + "end": 26934, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26856, + "end": 26934, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "349" + }, + { + "begin": 26968, + "end": 26970, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26972, + "end": 26978, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26949, + "end": 26954, + "modifierDepth": 1, + "name": "DUP6", + "source": 5 + }, + { + "begin": 26949, + "end": 26967, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26949, + "end": 26967, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 26949, + "end": 26967, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "350" + }, + { + "begin": 26949, + "end": 26967, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 26949, + "end": 26979, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "349" + }, + { + "begin": 26949, + "end": 26979, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "342" + }, + { + "begin": 26662, + "end": 26990, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "POP", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "POP", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "name": "POP", + "source": 5 + }, + { + "begin": 26560, + "end": 26996, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "tag", + "source": 5, + "value": "71" + }, + { + "begin": 6796, + "end": 7031, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6932, + "end": 6944, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6967, + "end": 6976, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "585" + }, + { + "begin": 6967, + "end": 6989, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6967, + "end": 6989, + "name": "AND", + "source": 5 + }, + { + "begin": 6967, + "end": 6989, + "name": "PUSH", + "source": 5, + "value": "659AC74B" + }, + { + "begin": 6990, + "end": 6996, + "name": "DUP7", + "source": 5 + }, + { + "begin": 6998, + "end": 7004, + "name": "DUP7", + "source": 5 + }, + { + "begin": 7006, + "end": 7014, + "name": "DUP7", + "source": 5 + }, + { + "begin": 7016, + "end": 7023, + "name": "DUP7", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6967, + "end": 7024, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP6", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 6967, + "end": 7024, + "name": "AND", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 6967, + "end": 7024, + "name": "SHL", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 6967, + "end": 7024, + "name": "ADD", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH [tag]", + "source": 5, + "value": "352" + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH [tag]", + "source": 5, + "value": "353" + }, + { + "begin": 6967, + "end": 7024, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "tag", + "source": 5, + "value": "352" + }, + { + "begin": 6967, + "end": 7024, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6967, + "end": 7024, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP4", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "SUB", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP8", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "GAS", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "CALL", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH [tag]", + "source": 5, + "value": "355" + }, + { + "begin": 6967, + "end": 7024, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6967, + "end": 7024, + "name": "REVERT", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "tag", + "source": 5, + "value": "355" + }, + { + "begin": 6967, + "end": 7024, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "POP", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "POP", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "POP", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "POP", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6967, + "end": 7024, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 6967, + "end": 7024, + "name": "NOT", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP3", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "ADD", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "AND", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP3", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "ADD", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6967, + "end": 7024, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "POP", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "ADD", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH [tag]", + "source": 5, + "value": "356" + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "PUSH [tag]", + "source": 5, + "value": "357" + }, + { + "begin": 6967, + "end": 7024, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6967, + "end": 7024, + "name": "tag", + "source": 5, + "value": "356" + }, + { + "begin": 6967, + "end": 7024, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6960, + "end": 7024, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6960, + "end": 7024, + "name": "POP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "POP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "POP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "POP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "name": "POP", + "source": 5 + }, + { + "begin": 6796, + "end": 7031, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "tag", + "source": 5, + "value": "76" + }, + { + "begin": 3967, + "end": 4071, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4021, + "end": 4037, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4056, + "end": 4064, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 4049, + "end": 4064, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4049, + "end": 4064, + "name": "POP", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3967, + "end": 4071, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3098, + "end": 3143, + "name": "tag", + "source": 5, + "value": "81" + }, + { + "begin": 3098, + "end": 3143, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4158, + "end": 4188, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4191, + "end": 4217, + "name": "PUSH [tag]", + "source": 1, + "value": "360" + }, + { + "begin": 4191, + "end": 4215, + "name": "PUSH [tag]", + "source": 1, + "value": "361" + }, + { + "begin": 4191, + "end": 4217, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4191, + "end": 4217, + "name": "tag", + "source": 1, + "value": "360" + }, + { + "begin": 4191, + "end": 4217, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4158, + "end": 4217, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4158, + "end": 4217, + "name": "POP", + "source": 1 + }, + { + "begin": 4279, + "end": 4298, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4302, + "end": 4303, + "name": "DUP2", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4302, + "end": 4317, + "name": "ADD", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 1, + "value": "8" + }, + { + "begin": 4302, + "end": 4317, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 4302, + "end": 4317, + "name": "EXP", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "DIV", + "source": 1 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 1, + "value": "FF" + }, + { + "begin": 4302, + "end": 4317, + "name": "AND", + "source": 1 + }, + { + "begin": 4301, + "end": 4317, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4279, + "end": 4317, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4279, + "end": 4317, + "name": "POP", + "source": 1 + }, + { + "begin": 4327, + "end": 4345, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4348, + "end": 4349, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4348, + "end": 4362, + "name": "ADD", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4348, + "end": 4362, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 4348, + "end": 4362, + "name": "EXP", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "DIV", + "source": 1 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4348, + "end": 4362, + "name": "AND", + "source": 1 + }, + { + "begin": 4327, + "end": 4362, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4327, + "end": 4362, + "name": "POP", + "source": 1 + }, + { + "begin": 4706, + "end": 4723, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4741, + "end": 4742, + "name": "DUP1", + "source": 1 + }, + { + "begin": 4726, + "end": 4737, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4726, + "end": 4742, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4726, + "end": 4742, + "name": "AND", + "source": 1 + }, + { + "begin": 4726, + "end": 4742, + "name": "EQ", + "source": 1 + }, + { + "begin": 4726, + "end": 4760, + "name": "DUP1", + "source": 1 + }, + { + "begin": 4726, + "end": 4760, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4726, + "end": 4760, + "name": "PUSH [tag]", + "source": 1, + "value": "362" + }, + { + "begin": 4726, + "end": 4760, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 4726, + "end": 4760, + "name": "POP", + "source": 1 + }, + { + "begin": 4746, + "end": 4760, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4726, + "end": 4760, + "name": "tag", + "source": 1, + "value": "362" + }, + { + "begin": 4726, + "end": 4760, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4706, + "end": 4760, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4706, + "end": 4760, + "name": "POP", + "source": 1 + }, + { + "begin": 4770, + "end": 4787, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4805, + "end": 4806, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 4790, + "end": 4801, + "name": "DUP4", + "source": 1 + }, + { + "begin": 4790, + "end": 4806, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4790, + "end": 4806, + "name": "AND", + "source": 1 + }, + { + "begin": 4790, + "end": 4806, + "name": "EQ", + "source": 1 + }, + { + "begin": 4790, + "end": 4840, + "name": "DUP1", + "source": 1 + }, + { + "begin": 4790, + "end": 4840, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4790, + "end": 4840, + "name": "PUSH [tag]", + "source": 1, + "value": "363" + }, + { + "begin": 4790, + "end": 4840, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 4790, + "end": 4840, + "name": "POP", + "source": 1 + }, + { + "begin": 4839, + "end": 4840, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4818, + "end": 4822, + "name": "ADDRESS", + "source": 1 + }, + { + "begin": 4810, + "end": 4835, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4810, + "end": 4835, + "name": "AND", + "source": 1 + }, + { + "begin": 4810, + "end": 4835, + "name": "EXTCODESIZE", + "source": 1 + }, + { + "begin": 4810, + "end": 4840, + "name": "EQ", + "source": 1 + }, + { + "begin": 4790, + "end": 4840, + "name": "tag", + "source": 1, + "value": "363" + }, + { + "begin": 4790, + "end": 4840, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4770, + "end": 4840, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4770, + "end": 4840, + "name": "POP", + "source": 1 + }, + { + "begin": 4856, + "end": 4868, + "name": "DUP2", + "source": 1 + }, + { + "begin": 4855, + "end": 4868, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4855, + "end": 4885, + "name": "DUP1", + "source": 1 + }, + { + "begin": 4855, + "end": 4885, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4855, + "end": 4885, + "name": "PUSH [tag]", + "source": 1, + "value": "364" + }, + { + "begin": 4855, + "end": 4885, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 4855, + "end": 4885, + "name": "POP", + "source": 1 + }, + { + "begin": 4873, + "end": 4885, + "name": "DUP1", + "source": 1 + }, + { + "begin": 4872, + "end": 4885, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4855, + "end": 4885, + "name": "tag", + "source": 1, + "value": "364" + }, + { + "begin": 4855, + "end": 4885, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4851, + "end": 4942, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4851, + "end": 4942, + "name": "PUSH [tag]", + "source": 1, + "value": "365" + }, + { + "begin": 4851, + "end": 4942, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 4908, + "end": 4931, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 1, + "value": "F92EE8A900000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 4908, + "end": 4931, + "name": "DUP2", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 4908, + "end": 4931, + "name": "ADD", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 4908, + "end": 4931, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "DUP1", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "SUB", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4908, + "end": 4931, + "name": "REVERT", + "source": 1 + }, + { + "begin": 4851, + "end": 4942, + "name": "tag", + "source": 1, + "value": "365" + }, + { + "begin": 4851, + "end": 4942, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4968, + "end": 4969, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 4951, + "end": 4952, + "name": "DUP6", + "source": 1 + }, + { + "begin": 4951, + "end": 4965, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4951, + "end": 4965, + "name": "ADD", + "source": 1 + }, + { + "begin": 4951, + "end": 4965, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4951, + "end": 4969, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 4951, + "end": 4969, + "name": "EXP", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "DUP2", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "DUP2", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4951, + "end": 4969, + "name": "MUL", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "NOT", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "AND", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "DUP4", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4951, + "end": 4969, + "name": "AND", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "MUL", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "OR", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 4951, + "end": 4969, + "name": "POP", + "source": 1 + }, + { + "begin": 4983, + "end": 4997, + "name": "DUP4", + "source": 1 + }, + { + "begin": 4979, + "end": 5046, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4979, + "end": 5046, + "name": "PUSH [tag]", + "source": 1, + "value": "366" + }, + { + "begin": 4979, + "end": 5046, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 5031, + "end": 5035, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 5013, + "end": 5014, + "name": "DUP6", + "source": 1 + }, + { + "begin": 5013, + "end": 5028, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5013, + "end": 5028, + "name": "ADD", + "source": 1 + }, + { + "begin": 5013, + "end": 5028, + "name": "PUSH", + "source": 1, + "value": "8" + }, + { + "begin": 5013, + "end": 5035, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 5013, + "end": 5035, + "name": "EXP", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "PUSH", + "source": 1, + "value": "FF" + }, + { + "begin": 5013, + "end": 5035, + "name": "MUL", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "NOT", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "AND", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "DUP4", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "MUL", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "OR", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 5013, + "end": 5035, + "name": "POP", + "source": 1 + }, + { + "begin": 4979, + "end": 5046, + "name": "tag", + "source": 1, + "value": "366" + }, + { + "begin": 4979, + "end": 5046, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5070, + "end": 5084, + "name": "DUP4", + "source": 1 + }, + { + "begin": 5066, + "end": 5167, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5066, + "end": 5167, + "name": "PUSH [tag]", + "source": 1, + "value": "368" + }, + { + "begin": 5066, + "end": 5167, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 5118, + "end": 5123, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5100, + "end": 5101, + "name": "DUP6", + "source": 1 + }, + { + "begin": 5100, + "end": 5115, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5100, + "end": 5115, + "name": "ADD", + "source": 1 + }, + { + "begin": 5100, + "end": 5115, + "name": "PUSH", + "source": 1, + "value": "8" + }, + { + "begin": 5100, + "end": 5123, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 5100, + "end": 5123, + "name": "EXP", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "PUSH", + "source": 1, + "value": "FF" + }, + { + "begin": 5100, + "end": 5123, + "name": "MUL", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "NOT", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "AND", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "DUP4", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "MUL", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "OR", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 5100, + "end": 5123, + "name": "POP", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH", + "source": 1, + "value": "C7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2" + }, + { + "begin": 5154, + "end": 5155, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 5142, + "end": 5156, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH [tag]", + "source": 1, + "value": "369" + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH [tag]", + "source": 1, + "value": "370" + }, + { + "begin": 5142, + "end": 5156, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "tag", + "source": 1, + "value": "369" + }, + { + "begin": 5142, + "end": 5156, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 5142, + "end": 5156, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "DUP1", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "SUB", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5142, + "end": 5156, + "name": "LOG1", + "source": 1 + }, + { + "begin": 5066, + "end": 5167, + "name": "tag", + "source": 1, + "value": "368" + }, + { + "begin": 5066, + "end": 5167, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 1 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 1 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 1 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 1 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 1 + }, + { + "begin": 3098, + "end": 3143, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "tag", + "source": 5, + "value": "86" + }, + { + "begin": 13396, + "end": 14437, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13706, + "end": 13725, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 13727, + "end": 13747, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13687, + "end": 13695, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "372" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "373" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "373" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "372" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13759, + "end": 13773, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 13784, + "end": 13839, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "375" + }, + { + "begin": 13806, + "end": 13811, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 13820, + "end": 13828, + "modifierDepth": 1, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 13831, + "end": 13838, + "modifierDepth": 1, + "name": "DUP14", + "source": 5 + }, + { + "begin": 13784, + "end": 13839, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFF" + }, + { + "begin": 13784, + "end": 13839, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 13784, + "end": 13805, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "376" + }, + { + "begin": 13784, + "end": 13839, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 13784, + "end": 13839, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "375" + }, + { + "begin": 13784, + "end": 13839, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13759, + "end": 13840, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13759, + "end": 13840, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13865, + "end": 13884, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 13907, + "end": 13913, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 13907, + "end": 13923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13907, + "end": 13923, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 13907, + "end": 13923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "DA10610C" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "SHL", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP7", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "GAS", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "378" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 13907, + "end": 13925, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "378" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "NOT", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "379" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 13907, + "end": 13925, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "379" + }, + { + "begin": 13907, + "end": 13925, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13887, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13887, + "end": 13925, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 13894, + "end": 13902, + "modifierDepth": 1, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 13887, + "end": 13925, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13887, + "end": 13925, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 13887, + "end": 13925, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 13865, + "end": 13925, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 13865, + "end": 13925, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13945, + "end": 13959, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13940, + "end": 14063, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "381" + }, + { + "begin": 13940, + "end": 14063, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 14016, + "end": 14031, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 14033, + "end": 14047, + "modifierDepth": 1, + "name": "DUP12", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "SWAP12", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "SWAP13", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13979, + "end": 14048, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13940, + "end": 14063, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "381" + }, + { + "begin": 13940, + "end": 14063, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14078, + "end": 14093, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 14095, + "end": 14110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 14130, + "end": 14216, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "382" + }, + { + "begin": 14147, + "end": 14153, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 14155, + "end": 14169, + "modifierDepth": 1, + "name": "DUP15", + "source": 5 + }, + { + "begin": 14171, + "end": 14186, + "modifierDepth": 1, + "name": "DUP15", + "source": 5 + }, + { + "begin": 14188, + "end": 14191, + "modifierDepth": 1, + "name": "DUP15", + "source": 5 + }, + { + "begin": 14193, + "end": 14200, + "modifierDepth": 1, + "name": "DUP15", + "source": 5 + }, + { + "begin": 14210, + "end": 14214, + "modifierDepth": 1, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 14130, + "end": 14146, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "383" + }, + { + "begin": 14130, + "end": 14216, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 14130, + "end": 14216, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "382" + }, + { + "begin": 14130, + "end": 14216, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14077, + "end": 14216, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 14077, + "end": 14216, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 14077, + "end": 14216, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 14077, + "end": 14216, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 14261, + "end": 14275, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "384" + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 14300, + "end": 14307, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 14309, + "end": 14316, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "385" + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "384" + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14279, + "end": 14286, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 14288, + "end": 14295, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "385" + }, + { + "begin": 14261, + "end": 14317, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "SWAP8", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 14231, + "end": 14317, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13851, + "end": 14328, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13851, + "end": 14328, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13851, + "end": 14328, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 14338, + "end": 14375, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "386" + }, + { + "begin": 14352, + "end": 14357, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 14359, + "end": 14361, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 14363, + "end": 14374, + "modifierDepth": 1, + "name": "DUP7", + "source": 5 + }, + { + "begin": 14338, + "end": 14351, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "387" + }, + { + "begin": 14338, + "end": 14375, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 14338, + "end": 14375, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "386" + }, + { + "begin": 14338, + "end": 14375, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 14385, + "end": 14430, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "388" + }, + { + "begin": 14413, + "end": 14415, + "modifierDepth": 1, + "name": "DUP7", + "source": 5 + }, + { + "begin": 14417, + "end": 14429, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 14385, + "end": 14412, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "206" + }, + { + "begin": 14385, + "end": 14430, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 14385, + "end": 14430, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "388" + }, + { + "begin": 14385, + "end": 14430, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 13749, + "end": 14437, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "name": "POP", + "source": 5 + }, + { + "begin": 13396, + "end": 14437, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "tag", + "source": 5, + "value": "91" + }, + { + "begin": 3494, + "end": 3603, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3548, + "end": 3568, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 3587, + "end": 3596, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "585" + }, + { + "begin": 3580, + "end": 3596, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3580, + "end": 3596, + "name": "POP", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3494, + "end": 3603, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "tag", + "source": 5, + "value": "97" + }, + { + "begin": 9334, + "end": 11070, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9492, + "end": 9512, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 9526, + "end": 9546, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9560, + "end": 9579, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 9593, + "end": 9612, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9626, + "end": 9653, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 9667, + "end": 9699, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9724, + "end": 9739, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 9763, + "end": 9899, + "name": "PUSH [tag]", + "source": 5, + "value": "391" + }, + { + "begin": 9802, + "end": 9821, + "name": "DUP9", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 9802, + "end": 9828, + "name": "ADD", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 9802, + "end": 9828, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "ADD", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "PUSH [tag]", + "source": 5, + "value": "392" + }, + { + "begin": 9802, + "end": 9828, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 9802, + "end": 9828, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9802, + "end": 9828, + "name": "tag", + "source": 5, + "value": "392" + }, + { + "begin": 9802, + "end": 9828, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9830, + "end": 9849, + "name": "DUP10", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 9830, + "end": 9856, + "name": "ADD", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 9830, + "end": 9856, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "ADD", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "PUSH [tag]", + "source": 5, + "value": "394" + }, + { + "begin": 9830, + "end": 9856, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 9830, + "end": 9856, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9830, + "end": 9856, + "name": "tag", + "source": 5, + "value": "394" + }, + { + "begin": 9830, + "end": 9856, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9858, + "end": 9877, + "name": "DUP11", + "source": 5 + }, + { + "begin": 9858, + "end": 9885, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9858, + "end": 9885, + "name": "ADD", + "source": 5 + }, + { + "begin": 9858, + "end": 9885, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 9763, + "end": 9784, + "name": "PUSH [tag]", + "source": 5, + "value": "376" + }, + { + "begin": 9763, + "end": 9899, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9763, + "end": 9899, + "name": "tag", + "source": 5, + "value": "391" + }, + { + "begin": 9763, + "end": 9899, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9724, + "end": 9909, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9724, + "end": 9909, + "name": "POP", + "source": 5 + }, + { + "begin": 9953, + "end": 9960, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9953, + "end": 9970, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9953, + "end": 9970, + "name": "AND", + "source": 5 + }, + { + "begin": 9953, + "end": 9970, + "name": "PUSH", + "source": 5, + "value": "5E8746D" + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9953, + "end": 9972, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 9953, + "end": 9972, + "name": "AND", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 9953, + "end": 9972, + "name": "SHL", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 9953, + "end": 9972, + "name": "ADD", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9953, + "end": 9972, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP4", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "SUB", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP7", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "GAS", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH [tag]", + "source": 5, + "value": "396" + }, + { + "begin": 9953, + "end": 9972, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 9953, + "end": 9972, + "name": "REVERT", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "tag", + "source": 5, + "value": "396" + }, + { + "begin": 9953, + "end": 9972, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "POP", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "POP", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "POP", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "POP", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9953, + "end": 9972, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 9953, + "end": 9972, + "name": "NOT", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP3", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "ADD", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "AND", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP3", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "ADD", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9953, + "end": 9972, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "POP", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "ADD", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH [tag]", + "source": 5, + "value": "397" + }, + { + "begin": 9953, + "end": 9972, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 9953, + "end": 9972, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9953, + "end": 9972, + "name": "tag", + "source": 5, + "value": "397" + }, + { + "begin": 9953, + "end": 9972, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9923, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9923, + "end": 9972, + "name": "AND", + "source": 5 + }, + { + "begin": 9923, + "end": 9942, + "name": "DUP9", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 9923, + "end": 9949, + "name": "ADD", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 9923, + "end": 9949, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "ADD", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "PUSH [tag]", + "source": 5, + "value": "398" + }, + { + "begin": 9923, + "end": 9949, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 9923, + "end": 9949, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 9923, + "end": 9949, + "name": "tag", + "source": 5, + "value": "398" + }, + { + "begin": 9923, + "end": 9949, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 9923, + "end": 9972, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9923, + "end": 9972, + "name": "AND", + "source": 5 + }, + { + "begin": 9923, + "end": 9972, + "name": "EQ", + "source": 5 + }, + { + "begin": 9919, + "end": 10008, + "name": "PUSH [tag]", + "source": 5, + "value": "399" + }, + { + "begin": 9919, + "end": 10008, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9981, + "end": 10008, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "PUSH", + "source": 5, + "value": "B33F8AB900000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 9981, + "end": 10008, + "name": "DUP2", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 9981, + "end": 10008, + "name": "ADD", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 9981, + "end": 10008, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "DUP1", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "SUB", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 9981, + "end": 10008, + "name": "REVERT", + "source": 5 + }, + { + "begin": 9919, + "end": 10008, + "name": "tag", + "source": 5, + "value": "399" + }, + { + "begin": 9919, + "end": 10008, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10053, + "end": 10061, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 10023, + "end": 10061, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10023, + "end": 10061, + "name": "AND", + "source": 5 + }, + { + "begin": 10023, + "end": 10042, + "name": "DUP9", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 10023, + "end": 10049, + "name": "ADD", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10023, + "end": 10049, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "ADD", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "PUSH [tag]", + "source": 5, + "value": "400" + }, + { + "begin": 10023, + "end": 10049, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 10023, + "end": 10049, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10023, + "end": 10049, + "name": "tag", + "source": 5, + "value": "400" + }, + { + "begin": 10023, + "end": 10049, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10023, + "end": 10061, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10023, + "end": 10061, + "name": "AND", + "source": 5 + }, + { + "begin": 10023, + "end": 10061, + "name": "EQ", + "source": 5 + }, + { + "begin": 10023, + "end": 10105, + "name": "DUP1", + "source": 5 + }, + { + "begin": 10023, + "end": 10105, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 10023, + "end": 10105, + "name": "PUSH [tag]", + "source": 5, + "value": "401" + }, + { + "begin": 10023, + "end": 10105, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 10023, + "end": 10105, + "name": "POP", + "source": 5 + }, + { + "begin": 10096, + "end": 10105, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 10065, + "end": 10084, + "name": "DUP9", + "source": 5 + }, + { + "begin": 10065, + "end": 10092, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 10065, + "end": 10092, + "name": "ADD", + "source": 5 + }, + { + "begin": 10065, + "end": 10092, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 10065, + "end": 10105, + "name": "EQ", + "source": 5 + }, + { + "begin": 10023, + "end": 10105, + "name": "tag", + "source": 5, + "value": "401" + }, + { + "begin": 10023, + "end": 10105, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10019, + "end": 10912, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 10019, + "end": 10912, + "name": "PUSH [tag]", + "source": 5, + "value": "402" + }, + { + "begin": 10019, + "end": 10912, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 10121, + "end": 10225, + "name": "PUSH [tag]", + "source": 5, + "value": "403" + }, + { + "begin": 10139, + "end": 10158, + "name": "DUP9", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10139, + "end": 10165, + "name": "ADD", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10139, + "end": 10165, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "ADD", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "PUSH [tag]", + "source": 5, + "value": "404" + }, + { + "begin": 10139, + "end": 10165, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 10139, + "end": 10165, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10139, + "end": 10165, + "name": "tag", + "source": 5, + "value": "404" + }, + { + "begin": 10139, + "end": 10165, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10167, + "end": 10177, + "name": "CALLER", + "source": 5 + }, + { + "begin": 10187, + "end": 10194, + "name": "DUP4", + "source": 5 + }, + { + "begin": 10197, + "end": 10216, + "name": "DUP12", + "source": 5 + }, + { + "begin": 10197, + "end": 10224, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 10197, + "end": 10224, + "name": "ADD", + "source": 5 + }, + { + "begin": 10197, + "end": 10224, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 10121, + "end": 10138, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 10121, + "end": 10225, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10121, + "end": 10225, + "name": "tag", + "source": 5, + "value": "403" + }, + { + "begin": 10121, + "end": 10225, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10239, + "end": 10294, + "name": "PUSH [tag]", + "source": 5, + "value": "405" + }, + { + "begin": 10274, + "end": 10281, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10284, + "end": 10293, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 10239, + "end": 10265, + "name": "PUSH [tag]", + "source": 5, + "value": "236" + }, + { + "begin": 10239, + "end": 10294, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10239, + "end": 10294, + "name": "tag", + "source": 5, + "value": "405" + }, + { + "begin": 10239, + "end": 10294, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10019, + "end": 10912, + "name": "PUSH [tag]", + "source": 5, + "value": "406" + }, + { + "begin": 10019, + "end": 10912, + "name": "JUMP", + "source": 5 + }, + { + "begin": 10019, + "end": 10912, + "name": "tag", + "source": 5, + "value": "402" + }, + { + "begin": 10019, + "end": 10912, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10345, + "end": 10353, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 10315, + "end": 10353, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10315, + "end": 10353, + "name": "AND", + "source": 5 + }, + { + "begin": 10315, + "end": 10334, + "name": "DUP9", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10315, + "end": 10341, + "name": "ADD", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10315, + "end": 10341, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "ADD", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "PUSH [tag]", + "source": 5, + "value": "407" + }, + { + "begin": 10315, + "end": 10341, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 10315, + "end": 10341, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10315, + "end": 10341, + "name": "tag", + "source": 5, + "value": "407" + }, + { + "begin": 10315, + "end": 10341, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10315, + "end": 10353, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10315, + "end": 10353, + "name": "AND", + "source": 5 + }, + { + "begin": 10315, + "end": 10353, + "name": "EQ", + "source": 5 + }, + { + "begin": 10315, + "end": 10397, + "name": "DUP1", + "source": 5 + }, + { + "begin": 10315, + "end": 10397, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 10315, + "end": 10397, + "name": "PUSH [tag]", + "source": 5, + "value": "408" + }, + { + "begin": 10315, + "end": 10397, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 10315, + "end": 10397, + "name": "POP", + "source": 5 + }, + { + "begin": 10388, + "end": 10397, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 10357, + "end": 10376, + "name": "DUP9", + "source": 5 + }, + { + "begin": 10357, + "end": 10384, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 10357, + "end": 10384, + "name": "ADD", + "source": 5 + }, + { + "begin": 10357, + "end": 10384, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 10357, + "end": 10397, + "name": "EQ", + "source": 5 + }, + { + "begin": 10315, + "end": 10397, + "name": "tag", + "source": 5, + "value": "408" + }, + { + "begin": 10315, + "end": 10397, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10311, + "end": 10912, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 10311, + "end": 10912, + "name": "PUSH [tag]", + "source": 5, + "value": "409" + }, + { + "begin": 10311, + "end": 10912, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 10413, + "end": 10517, + "name": "PUSH [tag]", + "source": 5, + "value": "410" + }, + { + "begin": 10431, + "end": 10450, + "name": "DUP9", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 10431, + "end": 10457, + "name": "ADD", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10431, + "end": 10457, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "ADD", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "PUSH [tag]", + "source": 5, + "value": "411" + }, + { + "begin": 10431, + "end": 10457, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 10431, + "end": 10457, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10431, + "end": 10457, + "name": "tag", + "source": 5, + "value": "411" + }, + { + "begin": 10431, + "end": 10457, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10459, + "end": 10469, + "name": "CALLER", + "source": 5 + }, + { + "begin": 10479, + "end": 10486, + "name": "DUP4", + "source": 5 + }, + { + "begin": 10489, + "end": 10508, + "name": "DUP12", + "source": 5 + }, + { + "begin": 10489, + "end": 10516, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 10489, + "end": 10516, + "name": "ADD", + "source": 5 + }, + { + "begin": 10489, + "end": 10516, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 10413, + "end": 10430, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 10413, + "end": 10517, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10413, + "end": 10517, + "name": "tag", + "source": 5, + "value": "410" + }, + { + "begin": 10413, + "end": 10517, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10531, + "end": 10586, + "name": "PUSH [tag]", + "source": 5, + "value": "412" + }, + { + "begin": 10566, + "end": 10573, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10576, + "end": 10585, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 10531, + "end": 10557, + "name": "PUSH [tag]", + "source": 5, + "value": "236" + }, + { + "begin": 10531, + "end": 10586, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10531, + "end": 10586, + "name": "tag", + "source": 5, + "value": "412" + }, + { + "begin": 10531, + "end": 10586, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10311, + "end": 10912, + "name": "PUSH [tag]", + "source": 5, + "value": "413" + }, + { + "begin": 10311, + "end": 10912, + "name": "JUMP", + "source": 5 + }, + { + "begin": 10311, + "end": 10912, + "name": "tag", + "source": 5, + "value": "409" + }, + { + "begin": 10311, + "end": 10912, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10690, + "end": 10709, + "name": "DUP8", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 10690, + "end": 10716, + "name": "ADD", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10690, + "end": 10716, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "ADD", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "PUSH [tag]", + "source": 5, + "value": "414" + }, + { + "begin": 10690, + "end": 10716, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 10690, + "end": 10716, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10690, + "end": 10716, + "name": "tag", + "source": 5, + "value": "414" + }, + { + "begin": 10690, + "end": 10716, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10743, + "end": 10762, + "name": "DUP9", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10743, + "end": 10769, + "name": "ADD", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 10743, + "end": 10769, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "ADD", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "PUSH [tag]", + "source": 5, + "value": "415" + }, + { + "begin": 10743, + "end": 10769, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 10743, + "end": 10769, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10743, + "end": 10769, + "name": "tag", + "source": 5, + "value": "415" + }, + { + "begin": 10743, + "end": 10769, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10788, + "end": 10807, + "name": "DUP10", + "source": 5 + }, + { + "begin": 10788, + "end": 10815, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 10788, + "end": 10815, + "name": "ADD", + "source": 5 + }, + { + "begin": 10788, + "end": 10815, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 10833, + "end": 10852, + "name": "DUP11", + "source": 5 + }, + { + "begin": 10833, + "end": 10860, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 10833, + "end": 10860, + "name": "ADD", + "source": 5 + }, + { + "begin": 10833, + "end": 10860, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 10878, + "end": 10887, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 10624, + "end": 10901, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "PUSH", + "source": 5, + "value": "D0A4F13B00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 10624, + "end": 10901, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 10624, + "end": 10901, + "name": "ADD", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "PUSH [tag]", + "source": 5, + "value": "416" + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "PUSH [tag]", + "source": 5, + "value": "417" + }, + { + "begin": 10624, + "end": 10901, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "tag", + "source": 5, + "value": "416" + }, + { + "begin": 10624, + "end": 10901, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 10624, + "end": 10901, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "DUP1", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SUB", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 10624, + "end": 10901, + "name": "REVERT", + "source": 5 + }, + { + "begin": 10311, + "end": 10912, + "name": "tag", + "source": 5, + "value": "413" + }, + { + "begin": 10311, + "end": 10912, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10019, + "end": 10912, + "name": "tag", + "source": 5, + "value": "406" + }, + { + "begin": 10019, + "end": 10912, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 11020, + "end": 11063, + "name": "PUSH [tag]", + "source": 5, + "value": "418" + }, + { + "begin": 11034, + "end": 11053, + "name": "DUP9", + "source": 5 + }, + { + "begin": 11055, + "end": 11062, + "name": "DUP3", + "source": 5 + }, + { + "begin": 11020, + "end": 11033, + "name": "PUSH [tag]", + "source": 5, + "value": "419" + }, + { + "begin": 11020, + "end": 11063, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 11020, + "end": 11063, + "name": "tag", + "source": 5, + "value": "418" + }, + { + "begin": 11020, + "end": 11063, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "DUP1", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "SWAP8", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "DUP2", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "DUP3", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "DUP4", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "SWAP11", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "DUP5", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "SWAP12", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "DUP6", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "SWAP13", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 10922, + "end": 11063, + "name": "POP", + "source": 5 + }, + { + "begin": 9714, + "end": 11070, + "name": "POP", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "POP", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 9334, + "end": 11070, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "tag", + "source": 5, + "value": "103" + }, + { + "begin": 18255, + "end": 19157, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18492, + "end": 18518, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 18448, + "end": 18456, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "421" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "422" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "422" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "421" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18477, + "end": 18481, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "424" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "424" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "425" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "426" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "426" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "425" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "427" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "427" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18530, + "end": 18552, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18555, + "end": 18614, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "429" + }, + { + "begin": 18565, + "end": 18569, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 18565, + "end": 18582, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18565, + "end": 18582, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18565, + "end": 18582, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18584, + "end": 18588, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 18584, + "end": 18597, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18584, + "end": 18597, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18584, + "end": 18597, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18599, + "end": 18603, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 18599, + "end": 18613, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18599, + "end": 18613, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18599, + "end": 18613, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18555, + "end": 18564, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 18555, + "end": 18614, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18555, + "end": 18614, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "429" + }, + { + "begin": 18555, + "end": 18614, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18530, + "end": 18614, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18530, + "end": 18614, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 18651, + "end": 18713, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "430" + }, + { + "begin": 18665, + "end": 18669, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 18665, + "end": 18678, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18665, + "end": 18678, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18665, + "end": 18678, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18680, + "end": 18685, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 18687, + "end": 18691, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 18687, + "end": 18701, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18687, + "end": 18701, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18687, + "end": 18701, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18703, + "end": 18712, + "modifierDepth": 2, + "name": "DUP13", + "source": 5 + }, + { + "begin": 18651, + "end": 18664, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "224" + }, + { + "begin": 18651, + "end": 18713, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18651, + "end": 18713, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "430" + }, + { + "begin": 18651, + "end": 18713, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18639, + "end": 18713, + "modifierDepth": 2, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 18639, + "end": 18713, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 18747, + "end": 18758, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 18732, + "end": 18741, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 18742, + "end": 18743, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "431" + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "432" + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 18732, + "end": 18744, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "432" + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "431" + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18732, + "end": 18744, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18732, + "end": 18758, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 18728, + "end": 18823, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 18728, + "end": 18823, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "433" + }, + { + "begin": 18728, + "end": 18823, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 18797, + "end": 18808, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 18810, + "end": 18819, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 18820, + "end": 18821, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "434" + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "435" + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 18810, + "end": 18822, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "435" + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "434" + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18810, + "end": 18822, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CA7710C800000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "436" + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 18767, + "end": 18823, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "436" + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18767, + "end": 18823, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 18728, + "end": 18823, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "433" + }, + { + "begin": 18728, + "end": 18823, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18838, + "end": 18910, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "437" + }, + { + "begin": 18856, + "end": 18860, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 18856, + "end": 18870, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18856, + "end": 18870, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18856, + "end": 18870, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18871, + "end": 18872, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "438" + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "439" + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 18856, + "end": 18873, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "439" + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "438" + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18856, + "end": 18873, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18875, + "end": 18885, + "modifierDepth": 2, + "name": "CALLER", + "source": 5 + }, + { + "begin": 18887, + "end": 18892, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 18893, + "end": 18894, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "440" + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "441" + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 18887, + "end": 18895, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "441" + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "440" + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18887, + "end": 18895, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18897, + "end": 18906, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 18907, + "end": 18908, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "442" + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "443" + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 18897, + "end": 18909, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "443" + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "442" + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18897, + "end": 18909, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18838, + "end": 18855, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 18838, + "end": 18910, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18838, + "end": 18910, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "437" + }, + { + "begin": 18838, + "end": 18910, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18925, + "end": 18947, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 18950, + "end": 19028, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "444" + }, + { + "begin": 18976, + "end": 18981, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 18983, + "end": 18987, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 18983, + "end": 18996, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 18983, + "end": 18996, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18983, + "end": 18996, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 18998, + "end": 19002, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 18998, + "end": 19012, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 18998, + "end": 19012, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 18998, + "end": 19012, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19014, + "end": 19023, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 19025, + "end": 19027, + "modifierDepth": 2, + "name": "DUP12", + "source": 5 + }, + { + "begin": 18950, + "end": 18975, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "238" + }, + { + "begin": 18950, + "end": 19028, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 18950, + "end": 19028, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "444" + }, + { + "begin": 18950, + "end": 19028, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18925, + "end": 19028, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 18925, + "end": 19028, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 19064, + "end": 19073, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 19047, + "end": 19061, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19047, + "end": 19073, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 19043, + "end": 19140, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 19043, + "end": 19140, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "445" + }, + { + "begin": 19043, + "end": 19140, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 19114, + "end": 19123, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 19125, + "end": 19139, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "446" + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 19082, + "end": 19140, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "446" + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 19082, + "end": 19140, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 19043, + "end": 19140, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "445" + }, + { + "begin": 19043, + "end": 19140, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 18625, + "end": 19151, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 18520, + "end": 19157, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "name": "POP", + "source": 5 + }, + { + "begin": 18255, + "end": 19157, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "tag", + "source": 5, + "value": "109" + }, + { + "begin": 5379, + "end": 5651, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5508, + "end": 5524, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 5526, + "end": 5547, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5549, + "end": 5560, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 5609, + "end": 5613, + "name": "DUP6", + "source": 5 + }, + { + "begin": 5609, + "end": 5623, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5609, + "end": 5623, + "name": "AND", + "source": 5 + }, + { + "begin": 5609, + "end": 5623, + "name": "PUSH", + "source": 5, + "value": "ABCD7830" + }, + { + "begin": 5624, + "end": 5633, + "name": "DUP7", + "source": 5 + }, + { + "begin": 5635, + "end": 5643, + "name": "DUP7", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 5609, + "end": 5644, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP4", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 5609, + "end": 5644, + "name": "AND", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 5609, + "end": 5644, + "name": "SHL", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP2", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 5609, + "end": 5644, + "name": "ADD", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH [tag]", + "source": 5, + "value": "448" + }, + { + "begin": 5609, + "end": 5644, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH [tag]", + "source": 5, + "value": "449" + }, + { + "begin": 5609, + "end": 5644, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "tag", + "source": 5, + "value": "448" + }, + { + "begin": 5609, + "end": 5644, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 5609, + "end": 5644, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP4", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "SUB", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP2", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP7", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "GAS", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH [tag]", + "source": 5, + "value": "451" + }, + { + "begin": 5609, + "end": 5644, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 5609, + "end": 5644, + "name": "REVERT", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "tag", + "source": 5, + "value": "451" + }, + { + "begin": 5609, + "end": 5644, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 5609, + "end": 5644, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 5609, + "end": 5644, + "name": "NOT", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP3", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "ADD", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "AND", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP3", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "ADD", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 5609, + "end": 5644, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "DUP2", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "ADD", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH [tag]", + "source": 5, + "value": "452" + }, + { + "begin": 5609, + "end": 5644, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "PUSH [tag]", + "source": 5, + "value": "453" + }, + { + "begin": 5609, + "end": 5644, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 5609, + "end": 5644, + "name": "tag", + "source": 5, + "value": "452" + }, + { + "begin": 5609, + "end": 5644, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "DUP1", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "DUP2", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "DUP3", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5576, + "end": 5644, + "name": "POP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "POP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "POP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "name": "POP", + "source": 5 + }, + { + "begin": 5379, + "end": 5651, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "tag", + "source": 5, + "value": "115" + }, + { + "begin": 15872, + "end": 16787, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16123, + "end": 16140, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 16079, + "end": 16087, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "455" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "456" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "456" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "455" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16108, + "end": 16112, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "458" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "458" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "459" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "460" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "460" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "459" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "461" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "461" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16207, + "end": 16215, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 16156, + "end": 16216, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 16156, + "end": 16216, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 16156, + "end": 16160, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 16156, + "end": 16170, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16156, + "end": 16170, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16156, + "end": 16170, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16171, + "end": 16175, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 16171, + "end": 16188, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 16171, + "end": 16188, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16171, + "end": 16188, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16171, + "end": 16195, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "463" + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "464" + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 16156, + "end": 16196, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "464" + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "463" + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16156, + "end": 16196, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16156, + "end": 16216, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 16156, + "end": 16216, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 16156, + "end": 16216, + "modifierDepth": 2, + "name": "EQ", + "source": 5 + }, + { + "begin": 16152, + "end": 16327, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "465" + }, + { + "begin": 16152, + "end": 16327, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 16274, + "end": 16278, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 16274, + "end": 16288, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16274, + "end": 16288, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16274, + "end": 16288, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16289, + "end": 16293, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 16289, + "end": 16306, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 16289, + "end": 16306, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16289, + "end": 16306, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16289, + "end": 16313, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "466" + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "467" + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 16274, + "end": 16314, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "467" + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "466" + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16274, + "end": 16314, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CFEC0E0100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "468" + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 16239, + "end": 16316, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "468" + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 16239, + "end": 16316, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 16152, + "end": 16327, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "465" + }, + { + "begin": 16152, + "end": 16327, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16337, + "end": 16359, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 16362, + "end": 16421, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "469" + }, + { + "begin": 16372, + "end": 16376, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 16372, + "end": 16389, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 16372, + "end": 16389, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16372, + "end": 16389, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16391, + "end": 16395, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 16391, + "end": 16404, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16391, + "end": 16404, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16391, + "end": 16404, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16406, + "end": 16410, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 16406, + "end": 16420, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16406, + "end": 16420, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16406, + "end": 16420, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16362, + "end": 16371, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 16362, + "end": 16421, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16362, + "end": 16421, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "469" + }, + { + "begin": 16362, + "end": 16421, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16337, + "end": 16421, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 16337, + "end": 16421, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 16432, + "end": 16500, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "470" + }, + { + "begin": 16450, + "end": 16454, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 16450, + "end": 16464, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16450, + "end": 16464, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16450, + "end": 16464, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16465, + "end": 16466, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "471" + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "472" + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 16450, + "end": 16467, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "472" + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "471" + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16450, + "end": 16467, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16469, + "end": 16479, + "modifierDepth": 2, + "name": "CALLER", + "source": 5 + }, + { + "begin": 16481, + "end": 16486, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 16487, + "end": 16488, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "473" + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "474" + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 16481, + "end": 16489, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "474" + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "473" + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16481, + "end": 16489, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16491, + "end": 16499, + "modifierDepth": 2, + "name": "DUP13", + "source": 5 + }, + { + "begin": 16432, + "end": 16449, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 16432, + "end": 16500, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16432, + "end": 16500, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "470" + }, + { + "begin": 16432, + "end": 16500, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16523, + "end": 16611, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "475" + }, + { + "begin": 16549, + "end": 16557, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 16559, + "end": 16564, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 16566, + "end": 16570, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 16566, + "end": 16579, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 16566, + "end": 16579, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16566, + "end": 16579, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16581, + "end": 16585, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 16581, + "end": 16595, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16581, + "end": 16595, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16581, + "end": 16595, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16605, + "end": 16609, + "modifierDepth": 2, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 16523, + "end": 16548, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "265" + }, + { + "begin": 16523, + "end": 16611, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16523, + "end": 16611, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "475" + }, + { + "begin": 16523, + "end": 16611, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16511, + "end": 16611, + "modifierDepth": 2, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 16511, + "end": 16611, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 16647, + "end": 16656, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 16626, + "end": 16644, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 16626, + "end": 16656, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 16622, + "end": 16727, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 16622, + "end": 16727, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "476" + }, + { + "begin": 16622, + "end": 16727, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 16697, + "end": 16715, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 16717, + "end": 16726, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "477" + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 16665, + "end": 16727, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "477" + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 16665, + "end": 16727, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 16622, + "end": 16727, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "476" + }, + { + "begin": 16622, + "end": 16727, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16738, + "end": 16780, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "478" + }, + { + "begin": 16766, + "end": 16768, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 16770, + "end": 16779, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 16738, + "end": 16765, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "206" + }, + { + "begin": 16738, + "end": 16780, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 16738, + "end": 16780, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "478" + }, + { + "begin": 16738, + "end": 16780, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 16142, + "end": 16787, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "name": "POP", + "source": 5 + }, + { + "begin": 15872, + "end": 16787, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "tag", + "source": 5, + "value": "120" + }, + { + "begin": 6115, + "end": 6389, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6246, + "end": 6266, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6268, + "end": 6285, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6287, + "end": 6298, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6347, + "end": 6351, + "name": "DUP6", + "source": 5 + }, + { + "begin": 6347, + "end": 6362, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6347, + "end": 6362, + "name": "AND", + "source": 5 + }, + { + "begin": 6347, + "end": 6362, + "name": "PUSH", + "source": 5, + "value": "E77366F8" + }, + { + "begin": 6363, + "end": 6371, + "name": "DUP7", + "source": 5 + }, + { + "begin": 6373, + "end": 6381, + "name": "DUP7", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6347, + "end": 6382, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP4", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 6347, + "end": 6382, + "name": "AND", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 6347, + "end": 6382, + "name": "SHL", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 6347, + "end": 6382, + "name": "ADD", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH [tag]", + "source": 5, + "value": "480" + }, + { + "begin": 6347, + "end": 6382, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH [tag]", + "source": 5, + "value": "449" + }, + { + "begin": 6347, + "end": 6382, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "tag", + "source": 5, + "value": "480" + }, + { + "begin": 6347, + "end": 6382, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6347, + "end": 6382, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP4", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "SUB", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP7", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "GAS", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH [tag]", + "source": 5, + "value": "482" + }, + { + "begin": 6347, + "end": 6382, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 6347, + "end": 6382, + "name": "REVERT", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "tag", + "source": 5, + "value": "482" + }, + { + "begin": 6347, + "end": 6382, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6347, + "end": 6382, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 6347, + "end": 6382, + "name": "NOT", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP3", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "ADD", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "AND", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP3", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "ADD", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 6347, + "end": 6382, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "ADD", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH [tag]", + "source": 5, + "value": "483" + }, + { + "begin": 6347, + "end": 6382, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "PUSH [tag]", + "source": 5, + "value": "453" + }, + { + "begin": 6347, + "end": 6382, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 6347, + "end": 6382, + "name": "tag", + "source": 5, + "value": "483" + }, + { + "begin": 6347, + "end": 6382, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "DUP1", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "DUP2", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "DUP3", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6314, + "end": 6382, + "name": "POP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "POP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "POP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "name": "POP", + "source": 5 + }, + { + "begin": 6115, + "end": 6389, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "tag", + "source": 5, + "value": "125" + }, + { + "begin": 7659, + "end": 8694, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 7795, + "end": 7815, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 7829, + "end": 7849, + "name": "DUP1", + "source": 5 + }, + { + "begin": 7863, + "end": 7882, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 7896, + "end": 7915, + "name": "DUP1", + "source": 5 + }, + { + "begin": 7929, + "end": 7956, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 7970, + "end": 8002, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8027, + "end": 8041, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 8065, + "end": 8201, + "name": "PUSH [tag]", + "source": 5, + "value": "485" + }, + { + "begin": 8104, + "end": 8123, + "name": "DUP9", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 8104, + "end": 8130, + "name": "ADD", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8104, + "end": 8130, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "ADD", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "PUSH [tag]", + "source": 5, + "value": "486" + }, + { + "begin": 8104, + "end": 8130, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 8104, + "end": 8130, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8104, + "end": 8130, + "name": "tag", + "source": 5, + "value": "486" + }, + { + "begin": 8104, + "end": 8130, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8132, + "end": 8151, + "name": "DUP10", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8132, + "end": 8158, + "name": "ADD", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8132, + "end": 8158, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "ADD", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "PUSH [tag]", + "source": 5, + "value": "487" + }, + { + "begin": 8132, + "end": 8158, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 8132, + "end": 8158, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8132, + "end": 8158, + "name": "tag", + "source": 5, + "value": "487" + }, + { + "begin": 8132, + "end": 8158, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8160, + "end": 8179, + "name": "DUP11", + "source": 5 + }, + { + "begin": 8160, + "end": 8187, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 8160, + "end": 8187, + "name": "ADD", + "source": 5 + }, + { + "begin": 8160, + "end": 8187, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 8065, + "end": 8086, + "name": "PUSH [tag]", + "source": 5, + "value": "376" + }, + { + "begin": 8065, + "end": 8201, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8065, + "end": 8201, + "name": "tag", + "source": 5, + "value": "485" + }, + { + "begin": 8065, + "end": 8201, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8027, + "end": 8211, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8027, + "end": 8211, + "name": "POP", + "source": 5 + }, + { + "begin": 8255, + "end": 8261, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8255, + "end": 8271, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8255, + "end": 8271, + "name": "AND", + "source": 5 + }, + { + "begin": 8255, + "end": 8271, + "name": "PUSH", + "source": 5, + "value": "5E8746D" + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 8255, + "end": 8273, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 8255, + "end": 8273, + "name": "AND", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 8255, + "end": 8273, + "name": "SHL", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 8255, + "end": 8273, + "name": "ADD", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 8255, + "end": 8273, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP4", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "SUB", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP7", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "GAS", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH [tag]", + "source": 5, + "value": "489" + }, + { + "begin": 8255, + "end": 8273, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 8255, + "end": 8273, + "name": "REVERT", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "tag", + "source": 5, + "value": "489" + }, + { + "begin": 8255, + "end": 8273, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "POP", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "POP", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "POP", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "POP", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 8255, + "end": 8273, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 8255, + "end": 8273, + "name": "NOT", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP3", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "ADD", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "AND", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP3", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "ADD", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 8255, + "end": 8273, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "POP", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "ADD", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH [tag]", + "source": 5, + "value": "490" + }, + { + "begin": 8255, + "end": 8273, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 8255, + "end": 8273, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8255, + "end": 8273, + "name": "tag", + "source": 5, + "value": "490" + }, + { + "begin": 8255, + "end": 8273, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8225, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8225, + "end": 8273, + "name": "AND", + "source": 5 + }, + { + "begin": 8225, + "end": 8244, + "name": "DUP9", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 8225, + "end": 8251, + "name": "ADD", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8225, + "end": 8251, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "ADD", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "PUSH [tag]", + "source": 5, + "value": "491" + }, + { + "begin": 8225, + "end": 8251, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 8225, + "end": 8251, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8225, + "end": 8251, + "name": "tag", + "source": 5, + "value": "491" + }, + { + "begin": 8225, + "end": 8251, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8225, + "end": 8273, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8225, + "end": 8273, + "name": "AND", + "source": 5 + }, + { + "begin": 8225, + "end": 8273, + "name": "EQ", + "source": 5 + }, + { + "begin": 8221, + "end": 8309, + "name": "PUSH [tag]", + "source": 5, + "value": "492" + }, + { + "begin": 8221, + "end": 8309, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 8282, + "end": 8309, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "PUSH", + "source": 5, + "value": "B33F8AB900000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 8282, + "end": 8309, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 8282, + "end": 8309, + "name": "ADD", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 8282, + "end": 8309, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "SUB", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8282, + "end": 8309, + "name": "REVERT", + "source": 5 + }, + { + "begin": 8221, + "end": 8309, + "name": "tag", + "source": 5, + "value": "492" + }, + { + "begin": 8221, + "end": 8309, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8320, + "end": 8423, + "name": "PUSH [tag]", + "source": 5, + "value": "493" + }, + { + "begin": 8338, + "end": 8357, + "name": "DUP9", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 8338, + "end": 8364, + "name": "ADD", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8338, + "end": 8364, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "ADD", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "PUSH [tag]", + "source": 5, + "value": "494" + }, + { + "begin": 8338, + "end": 8364, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 8338, + "end": 8364, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8338, + "end": 8364, + "name": "tag", + "source": 5, + "value": "494" + }, + { + "begin": 8338, + "end": 8364, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8366, + "end": 8376, + "name": "CALLER", + "source": 5 + }, + { + "begin": 8386, + "end": 8392, + "name": "DUP4", + "source": 5 + }, + { + "begin": 8395, + "end": 8414, + "name": "DUP12", + "source": 5 + }, + { + "begin": 8395, + "end": 8422, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 8395, + "end": 8422, + "name": "ADD", + "source": 5 + }, + { + "begin": 8395, + "end": 8422, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 8320, + "end": 8337, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 8320, + "end": 8423, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8320, + "end": 8423, + "name": "tag", + "source": 5, + "value": "493" + }, + { + "begin": 8320, + "end": 8423, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8433, + "end": 8536, + "name": "PUSH [tag]", + "source": 5, + "value": "495" + }, + { + "begin": 8451, + "end": 8470, + "name": "DUP9", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8451, + "end": 8477, + "name": "ADD", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 8451, + "end": 8477, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "ADD", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "PUSH [tag]", + "source": 5, + "value": "496" + }, + { + "begin": 8451, + "end": 8477, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "PUSH [tag]", + "source": 5, + "value": "393" + }, + { + "begin": 8451, + "end": 8477, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8451, + "end": 8477, + "name": "tag", + "source": 5, + "value": "496" + }, + { + "begin": 8451, + "end": 8477, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8479, + "end": 8489, + "name": "CALLER", + "source": 5 + }, + { + "begin": 8499, + "end": 8505, + "name": "DUP4", + "source": 5 + }, + { + "begin": 8508, + "end": 8527, + "name": "DUP12", + "source": 5 + }, + { + "begin": 8508, + "end": 8535, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 8508, + "end": 8535, + "name": "ADD", + "source": 5 + }, + { + "begin": 8508, + "end": 8535, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 8433, + "end": 8450, + "name": "PUSH [tag]", + "source": 5, + "value": "194" + }, + { + "begin": 8433, + "end": 8536, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8433, + "end": 8536, + "name": "tag", + "source": 5, + "value": "495" + }, + { + "begin": 8433, + "end": 8536, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8645, + "end": 8687, + "name": "PUSH [tag]", + "source": 5, + "value": "497" + }, + { + "begin": 8659, + "end": 8678, + "name": "DUP9", + "source": 5 + }, + { + "begin": 8680, + "end": 8686, + "name": "DUP3", + "source": 5 + }, + { + "begin": 8645, + "end": 8658, + "name": "PUSH [tag]", + "source": 5, + "value": "419" + }, + { + "begin": 8645, + "end": 8687, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 8645, + "end": 8687, + "name": "tag", + "source": 5, + "value": "497" + }, + { + "begin": 8645, + "end": 8687, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "DUP1", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "SWAP8", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "DUP2", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "DUP3", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "DUP4", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "SWAP11", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "DUP5", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "SWAP12", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "DUP6", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "SWAP13", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8547, + "end": 8687, + "name": "POP", + "source": 5 + }, + { + "begin": 8017, + "end": 8694, + "name": "POP", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "POP", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 7659, + "end": 8694, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "tag", + "source": 5, + "value": "129" + }, + { + "begin": 17130, + "end": 17861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17359, + "end": 17376, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 17299, + "end": 17307, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "499" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "500" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "500" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "499" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17336, + "end": 17340, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "502" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "502" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "503" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "504" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "504" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "503" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "505" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "505" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17424, + "end": 17432, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 17396, + "end": 17433, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 17396, + "end": 17433, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 17396, + "end": 17400, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 17396, + "end": 17410, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17396, + "end": 17410, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17396, + "end": 17410, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17411, + "end": 17412, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "507" + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "508" + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 17396, + "end": 17413, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "508" + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "507" + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17396, + "end": 17413, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17396, + "end": 17433, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 17396, + "end": 17433, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 17396, + "end": 17433, + "modifierDepth": 2, + "name": "EQ", + "source": 5 + }, + { + "begin": 17392, + "end": 17496, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "509" + }, + { + "begin": 17392, + "end": 17496, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 17477, + "end": 17481, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 17477, + "end": 17491, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17477, + "end": 17491, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17477, + "end": 17491, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17492, + "end": 17493, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "510" + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "511" + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 17477, + "end": 17494, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "511" + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "510" + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17477, + "end": 17494, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CFEC0E0100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "512" + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 17442, + "end": 17496, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "512" + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17442, + "end": 17496, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 17392, + "end": 17496, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "509" + }, + { + "begin": 17392, + "end": 17496, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17507, + "end": 17529, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 17532, + "end": 17591, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "513" + }, + { + "begin": 17542, + "end": 17546, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 17542, + "end": 17559, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 17542, + "end": 17559, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17542, + "end": 17559, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17561, + "end": 17565, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 17561, + "end": 17574, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17561, + "end": 17574, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17561, + "end": 17574, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17576, + "end": 17580, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 17576, + "end": 17590, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17576, + "end": 17590, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17576, + "end": 17590, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17532, + "end": 17541, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 17532, + "end": 17591, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17532, + "end": 17591, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "513" + }, + { + "begin": 17532, + "end": 17591, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17507, + "end": 17591, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17507, + "end": 17591, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 17602, + "end": 17649, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "514" + }, + { + "begin": 17629, + "end": 17634, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17635, + "end": 17636, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "515" + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "516" + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 17629, + "end": 17637, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "516" + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "515" + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17629, + "end": 17637, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17639, + "end": 17648, + "modifierDepth": 2, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 17602, + "end": 17628, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "236" + }, + { + "begin": 17602, + "end": 17649, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17602, + "end": 17649, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "514" + }, + { + "begin": 17602, + "end": 17649, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17672, + "end": 17750, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "517" + }, + { + "begin": 17698, + "end": 17707, + "modifierDepth": 2, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 17709, + "end": 17714, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 17716, + "end": 17720, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 17716, + "end": 17729, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 17716, + "end": 17729, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17716, + "end": 17729, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17731, + "end": 17735, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 17731, + "end": 17745, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17731, + "end": 17745, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17731, + "end": 17745, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17747, + "end": 17749, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 17672, + "end": 17697, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "265" + }, + { + "begin": 17672, + "end": 17750, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17672, + "end": 17750, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "517" + }, + { + "begin": 17672, + "end": 17750, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17660, + "end": 17750, + "modifierDepth": 2, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 17660, + "end": 17750, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 17780, + "end": 17789, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 17765, + "end": 17777, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 17765, + "end": 17789, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 17761, + "end": 17854, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 17761, + "end": 17854, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "518" + }, + { + "begin": 17761, + "end": 17854, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 17830, + "end": 17842, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 17844, + "end": 17853, + "modifierDepth": 2, + "name": "DUP5", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "519" + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 17798, + "end": 17854, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "519" + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 17798, + "end": 17854, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 17761, + "end": 17854, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "518" + }, + { + "begin": 17761, + "end": 17854, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 17382, + "end": 17861, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "POP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "POP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "POP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "POP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "name": "POP", + "source": 5 + }, + { + "begin": 17130, + "end": 17861, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "tag", + "source": 5, + "value": "133" + }, + { + "begin": 3731, + "end": 3851, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 3787, + "end": 3815, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 3834, + "end": 3844, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "589" + }, + { + "begin": 3827, + "end": 3844, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3827, + "end": 3844, + "name": "POP", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 3731, + "end": 3851, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "tag", + "source": 5, + "value": "140" + }, + { + "begin": 11788, + "end": 12529, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12099, + "end": 12114, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 12116, + "end": 12131, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12080, + "end": 12088, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "522" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "523" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "523" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "522" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12143, + "end": 12158, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 12169, + "end": 12215, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "525" + }, + { + "begin": 12191, + "end": 12197, + "modifierDepth": 1, + "name": "DUP14", + "source": 5 + }, + { + "begin": 12199, + "end": 12205, + "modifierDepth": 1, + "name": "DUP14", + "source": 5 + }, + { + "begin": 12207, + "end": 12214, + "modifierDepth": 1, + "name": "DUP14", + "source": 5 + }, + { + "begin": 12169, + "end": 12215, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFF" + }, + { + "begin": 12169, + "end": 12215, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 12169, + "end": 12190, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "376" + }, + { + "begin": 12169, + "end": 12215, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 12169, + "end": 12215, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "525" + }, + { + "begin": 12169, + "end": 12215, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12143, + "end": 12216, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 12143, + "end": 12216, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12226, + "end": 12243, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 12256, + "end": 12263, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12256, + "end": 12273, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12256, + "end": 12273, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 12256, + "end": 12273, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "5E8746D" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "SHL", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP7", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "GAS", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "527" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 12256, + "end": 12275, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "527" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "NOT", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "528" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 12256, + "end": 12275, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "528" + }, + { + "begin": 12256, + "end": 12275, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12246, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12246, + "end": 12275, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 12246, + "end": 12252, + "modifierDepth": 1, + "name": "DUP15", + "source": 5 + }, + { + "begin": 12246, + "end": 12275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12246, + "end": 12275, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 12246, + "end": 12275, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 12246, + "end": 12275, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 12226, + "end": 12275, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 12226, + "end": 12275, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12290, + "end": 12302, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12286, + "end": 12355, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 12286, + "end": 12355, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "529" + }, + { + "begin": 12286, + "end": 12355, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 12332, + "end": 12342, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 12344, + "end": 12354, + "modifierDepth": 1, + "name": "DUP12", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "SWAP12", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "SWAP13", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12304, + "end": 12355, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12286, + "end": 12355, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "529" + }, + { + "begin": 12286, + "end": 12355, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12387, + "end": 12454, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "530" + }, + { + "begin": 12404, + "end": 12411, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 12413, + "end": 12423, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 12425, + "end": 12435, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 12437, + "end": 12440, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 12442, + "end": 12449, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 12451, + "end": 12453, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 12387, + "end": 12403, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "383" + }, + { + "begin": 12387, + "end": 12454, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 12387, + "end": 12454, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "530" + }, + { + "begin": 12387, + "end": 12454, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12366, + "end": 12454, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12469, + "end": 12481, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12465, + "end": 12522, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 12465, + "end": 12522, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "531" + }, + { + "begin": 12465, + "end": 12522, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 12505, + "end": 12512, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 12514, + "end": 12521, + "modifierDepth": 1, + "name": "DUP6", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12483, + "end": 12522, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12465, + "end": 12522, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "531" + }, + { + "begin": 12465, + "end": 12522, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 12133, + "end": 12529, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 12133, + "end": 12529, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "SWAP8", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "name": "POP", + "source": 5 + }, + { + "begin": 11788, + "end": 12529, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "tag", + "source": 5, + "value": "146" + }, + { + "begin": 4763, + "end": 4900, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4844, + "end": 4851, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4870, + "end": 4874, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4870, + "end": 4889, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4870, + "end": 4889, + "name": "AND", + "source": 5 + }, + { + "begin": 4870, + "end": 4889, + "name": "PUSH", + "source": 5, + "value": "4C7CFFBD" + }, + { + "begin": 4890, + "end": 4892, + "name": "DUP4", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4870, + "end": 4893, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 4870, + "end": 4893, + "name": "AND", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 4870, + "end": 4893, + "name": "SHL", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 4870, + "end": 4893, + "name": "ADD", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH [tag]", + "source": 5, + "value": "533" + }, + { + "begin": 4870, + "end": 4893, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH [tag]", + "source": 5, + "value": "163" + }, + { + "begin": 4870, + "end": 4893, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "tag", + "source": 5, + "value": "533" + }, + { + "begin": 4870, + "end": 4893, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4870, + "end": 4893, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP4", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "SUB", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP7", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "GAS", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH [tag]", + "source": 5, + "value": "535" + }, + { + "begin": 4870, + "end": 4893, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4870, + "end": 4893, + "name": "REVERT", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "tag", + "source": 5, + "value": "535" + }, + { + "begin": 4870, + "end": 4893, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "POP", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "POP", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "POP", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "POP", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4870, + "end": 4893, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 4870, + "end": 4893, + "name": "NOT", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "ADD", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "AND", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "ADD", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4870, + "end": 4893, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "POP", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "ADD", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH [tag]", + "source": 5, + "value": "536" + }, + { + "begin": 4870, + "end": 4893, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 4870, + "end": 4893, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4870, + "end": 4893, + "name": "tag", + "source": 5, + "value": "536" + }, + { + "begin": 4870, + "end": 4893, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4863, + "end": 4893, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4863, + "end": 4893, + "name": "POP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "POP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "name": "POP", + "source": 5 + }, + { + "begin": 4763, + "end": 4900, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "tag", + "source": 5, + "value": "150" + }, + { + "begin": 25354, + "end": 26269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25602, + "end": 25619, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25558, + "end": 25566, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "538" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "539" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "539" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "538" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25587, + "end": 25591, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 2439, + "end": 2440, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2415, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2411, + "end": 2428, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2435, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2411, + "end": 2440, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "541" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2468, + "end": 2472, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2468, + "end": 2485, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2468, + "end": 2492, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2448, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2444, + "end": 2457, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2464, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2444, + "end": 2492, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "541" + }, + { + "begin": 2411, + "end": 2492, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "542" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 2544, + "end": 2548, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2544, + "end": 2558, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2544, + "end": 2565, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2539, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 2512, + "end": 2516, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2512, + "end": 2529, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "543" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 2512, + "end": 2540, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "543" + }, + { + "begin": 2512, + "end": 2540, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 2512, + "end": 2565, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "542" + }, + { + "begin": 2411, + "end": 2565, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "544" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2583, + "end": 2610, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "544" + }, + { + "begin": 2394, + "end": 2610, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25663, + "end": 25671, + "modifierDepth": 2, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 25635, + "end": 25672, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25635, + "end": 25672, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 25635, + "end": 25639, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 25635, + "end": 25649, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25635, + "end": 25649, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25635, + "end": 25649, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25650, + "end": 25651, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "546" + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "547" + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 25635, + "end": 25652, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "547" + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "546" + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25635, + "end": 25652, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25635, + "end": 25672, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25635, + "end": 25672, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 25635, + "end": 25672, + "modifierDepth": 2, + "name": "EQ", + "source": 5 + }, + { + "begin": 25631, + "end": 25735, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "548" + }, + { + "begin": 25631, + "end": 25735, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 25716, + "end": 25720, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 25716, + "end": 25730, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25716, + "end": 25730, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25716, + "end": 25730, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25731, + "end": 25732, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "549" + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "550" + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 25716, + "end": 25733, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "550" + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "549" + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25716, + "end": 25733, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "CFEC0E0100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "551" + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 25681, + "end": 25735, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "551" + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25681, + "end": 25735, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 25631, + "end": 25735, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "548" + }, + { + "begin": 25631, + "end": 25735, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25746, + "end": 25768, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25771, + "end": 25830, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "552" + }, + { + "begin": 25781, + "end": 25785, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 25781, + "end": 25798, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25781, + "end": 25798, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25781, + "end": 25798, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25800, + "end": 25804, + "modifierDepth": 2, + "name": "DUP9", + "source": 5 + }, + { + "begin": 25800, + "end": 25813, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25800, + "end": 25813, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25800, + "end": 25813, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25815, + "end": 25819, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 25815, + "end": 25829, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25815, + "end": 25829, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25815, + "end": 25829, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25771, + "end": 25780, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "183" + }, + { + "begin": 25771, + "end": 25830, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25771, + "end": 25830, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "552" + }, + { + "begin": 25771, + "end": 25830, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25746, + "end": 25830, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25746, + "end": 25830, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25841, + "end": 25859, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25862, + "end": 25866, + "modifierDepth": 2, + "name": "DUP8", + "source": 5 + }, + { + "begin": 25862, + "end": 25876, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25862, + "end": 25876, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25862, + "end": 25876, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25877, + "end": 25882, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 25877, + "end": 25889, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "553" + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "554" + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 25862, + "end": 25890, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "554" + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "553" + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25862, + "end": 25890, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25841, + "end": 25890, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25841, + "end": 25890, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25901, + "end": 25922, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25925, + "end": 25936, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25925, + "end": 25946, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25925, + "end": 25946, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 25925, + "end": 25946, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 25947, + "end": 25949, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "SHL", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "555" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 25925, + "end": 25950, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "555" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "GAS", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "557" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25925, + "end": 25950, + "name": "DUP1", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "557" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "NOT", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "558" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 25925, + "end": 25950, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "558" + }, + { + "begin": 25925, + "end": 25950, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25901, + "end": 25950, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 25901, + "end": 25950, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25961, + "end": 26008, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "559" + }, + { + "begin": 25988, + "end": 25993, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 25994, + "end": 25995, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "LT", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "560" + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "561" + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 25988, + "end": 25996, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "561" + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "560" + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "MUL", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 25988, + "end": 25996, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 25998, + "end": 26007, + "modifierDepth": 2, + "name": "CALLVALUE", + "source": 5 + }, + { + "begin": 25961, + "end": 25987, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "236" + }, + { + "begin": 25961, + "end": 26008, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 25961, + "end": 26008, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "559" + }, + { + "begin": 25961, + "end": 26008, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26019, + "end": 26095, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "562" + }, + { + "begin": 26054, + "end": 26059, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 26061, + "end": 26065, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 26061, + "end": 26074, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 26061, + "end": 26074, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 26061, + "end": 26074, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26076, + "end": 26080, + "modifierDepth": 2, + "name": "DUP12", + "source": 5 + }, + { + "begin": 26076, + "end": 26090, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26076, + "end": 26090, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 26076, + "end": 26090, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26092, + "end": 26094, + "modifierDepth": 2, + "name": "DUP12", + "source": 5 + }, + { + "begin": 26019, + "end": 26053, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "196" + }, + { + "begin": 26019, + "end": 26095, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26019, + "end": 26095, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "562" + }, + { + "begin": 26019, + "end": 26095, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26146, + "end": 26159, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26129, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26118, + "end": 26139, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26118, + "end": 26139, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 26118, + "end": 26139, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 26140, + "end": 26142, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "SHL", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "563" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 26118, + "end": 26143, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "563" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP4", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "GAS", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "565" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 26118, + "end": 26143, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "565" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "NOT", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "AND", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP3", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "566" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 26118, + "end": 26143, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "566" + }, + { + "begin": 26118, + "end": 26143, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26118, + "end": 26159, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "567" + }, + { + "begin": 26118, + "end": 26159, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26118, + "end": 26159, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26118, + "end": 26159, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 26118, + "end": 26159, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26118, + "end": 26159, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "567" + }, + { + "begin": 26118, + "end": 26159, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26106, + "end": 26159, + "modifierDepth": 2, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 26106, + "end": 26159, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 26188, + "end": 26197, + "modifierDepth": 2, + "name": "DUP6", + "source": 5 + }, + { + "begin": 26173, + "end": 26185, + "modifierDepth": 2, + "name": "DUP11", + "source": 5 + }, + { + "begin": 26173, + "end": 26197, + "modifierDepth": 2, + "name": "GT", + "source": 5 + }, + { + "begin": 26169, + "end": 26262, + "modifierDepth": 2, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 26169, + "end": 26262, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "568" + }, + { + "begin": 26169, + "end": 26262, + "modifierDepth": 2, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 26238, + "end": 26250, + "modifierDepth": 2, + "name": "DUP10", + "source": 5 + }, + { + "begin": 26252, + "end": 26261, + "modifierDepth": 2, + "name": "DUP7", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4FEAC00C00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "DUP2", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "ADD", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "569" + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 26206, + "end": 26262, + "jumpType": "[in]", + "modifierDepth": 2, + "name": "JUMP", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "569" + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "DUP1", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "SUB", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 26206, + "end": 26262, + "modifierDepth": 2, + "name": "REVERT", + "source": 5 + }, + { + "begin": 26169, + "end": 26262, + "modifierDepth": 2, + "name": "tag", + "source": 5, + "value": "568" + }, + { + "begin": 26169, + "end": 26262, + "modifierDepth": 2, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 25621, + "end": 26269, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25621, + "end": 26269, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 25621, + "end": 26269, + "modifierDepth": 2, + "name": "POP", + "source": 5 + }, + { + "begin": 2324, + "end": 2325, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "POP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "POP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "POP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "POP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "name": "POP", + "source": 5 + }, + { + "begin": 25354, + "end": 26269, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "tag", + "source": 5, + "value": "156" + }, + { + "begin": 27343, + "end": 27585, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2099, + "end": 2108, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "585" + }, + { + "begin": 2083, + "end": 2116, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2083, + "end": 2116, + "name": "AND", + "source": 5 + }, + { + "begin": 2083, + "end": 2116, + "name": "PUSH", + "source": 5, + "value": "8DA5CB5B" + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 2083, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 2083, + "end": 2118, + "name": "SHL", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP4", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "SUB", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP7", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "GAS", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH [tag]", + "source": 5, + "value": "572" + }, + { + "begin": 2083, + "end": 2118, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 2083, + "end": 2118, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "tag", + "source": 5, + "value": "572" + }, + { + "begin": 2083, + "end": 2118, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 2083, + "end": 2118, + "name": "NOT", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP3", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2083, + "end": 2118, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "POP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "ADD", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH [tag]", + "source": 5, + "value": "573" + }, + { + "begin": 2083, + "end": 2118, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "PUSH [tag]", + "source": 5, + "value": "335" + }, + { + "begin": 2083, + "end": 2118, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2083, + "end": 2118, + "name": "tag", + "source": 5, + "value": "573" + }, + { + "begin": 2083, + "end": 2118, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2069, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2069, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2069, + "end": 2079, + "name": "CALLER", + "source": 5 + }, + { + "begin": 2069, + "end": 2118, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2069, + "end": 2118, + "name": "AND", + "source": 5 + }, + { + "begin": 2069, + "end": 2118, + "name": "EQ", + "source": 5 + }, + { + "begin": 2065, + "end": 2154, + "name": "PUSH [tag]", + "source": 5, + "value": "574" + }, + { + "begin": 2065, + "end": 2154, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2127, + "end": 2154, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "BB2A2B7200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2127, + "end": 2154, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2127, + "end": 2154, + "name": "ADD", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2127, + "end": 2154, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "SUB", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2127, + "end": 2154, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2065, + "end": 2154, + "name": "tag", + "source": 5, + "value": "574" + }, + { + "begin": 2065, + "end": 2154, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27520, + "end": 27527, + "modifierDepth": 1, + "name": "DUP6", + "source": 5 + }, + { + "begin": 27520, + "end": 27545, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 27520, + "end": 27545, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 27520, + "end": 27545, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "17FAD7FC" + }, + { + "begin": 27554, + "end": 27558, + "modifierDepth": 1, + "name": "ADDRESS", + "source": 5 + }, + { + "begin": 27561, + "end": 27563, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 27565, + "end": 27568, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 27565, + "end": 27568, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 27570, + "end": 27577, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 27570, + "end": 27577, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SHL", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "576" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "577" + }, + { + "begin": 27520, + "end": 27578, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "576" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "578" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 27520, + "end": 27578, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "578" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "GAS", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "CALL", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "580" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 27520, + "end": 27578, + "name": "DUP1", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "580" + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 27520, + "end": 27578, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "name": "POP", + "source": 5 + }, + { + "begin": 27343, + "end": 27585, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "tag", + "source": 5, + "value": "161" + }, + { + "begin": 4413, + "end": 4556, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4498, + "end": 4504, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4523, + "end": 4527, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4523, + "end": 4542, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4523, + "end": 4542, + "name": "AND", + "source": 5 + }, + { + "begin": 4523, + "end": 4542, + "name": "PUSH", + "source": 5, + "value": "F5E29329" + }, + { + "begin": 4543, + "end": 4548, + "name": "DUP4", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4523, + "end": 4549, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 4523, + "end": 4549, + "name": "AND", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 4523, + "end": 4549, + "name": "SHL", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 4523, + "end": 4549, + "name": "ADD", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH [tag]", + "source": 5, + "value": "582" + }, + { + "begin": 4523, + "end": 4549, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 4523, + "end": 4549, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "tag", + "source": 5, + "value": "582" + }, + { + "begin": 4523, + "end": 4549, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4523, + "end": 4549, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP4", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "SUB", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP7", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "GAS", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH [tag]", + "source": 5, + "value": "584" + }, + { + "begin": 4523, + "end": 4549, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 4523, + "end": 4549, + "name": "REVERT", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "tag", + "source": 5, + "value": "584" + }, + { + "begin": 4523, + "end": 4549, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "POP", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "POP", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "POP", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "POP", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4523, + "end": 4549, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 4523, + "end": 4549, + "name": "NOT", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "ADD", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "AND", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP3", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "ADD", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP1", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 4523, + "end": 4549, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "POP", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "DUP2", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "ADD", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH [tag]", + "source": 5, + "value": "585" + }, + { + "begin": 4523, + "end": 4549, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "PUSH [tag]", + "source": 5, + "value": "586" + }, + { + "begin": 4523, + "end": 4549, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 4523, + "end": 4549, + "name": "tag", + "source": 5, + "value": "585" + }, + { + "begin": 4523, + "end": 4549, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 4516, + "end": 4549, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 4516, + "end": 4549, + "name": "POP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "POP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "name": "POP", + "source": 5 + }, + { + "begin": 4413, + "end": 4556, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40831, + "end": 41396, + "name": "tag", + "source": 5, + "value": "183" + }, + { + "begin": 40831, + "end": 41396, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40981, + "end": 41003, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 41041, + "end": 41053, + "name": "DUP4", + "source": 5 + }, + { + "begin": 41041, + "end": 41060, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "GT", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH [tag]", + "source": 5, + "value": "588" + }, + { + "begin": 41027, + "end": 41061, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH [tag]", + "source": 5, + "value": "589" + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH [tag]", + "source": 5, + "value": "590" + }, + { + "begin": 41027, + "end": 41061, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "tag", + "source": 5, + "value": "589" + }, + { + "begin": 41027, + "end": 41061, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "tag", + "source": 5, + "value": "588" + }, + { + "begin": 41027, + "end": 41061, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 41027, + "end": 41061, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP1", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP1", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41027, + "end": 41061, + "name": "MUL", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41027, + "end": 41061, + "name": "ADD", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "ADD", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 41027, + "end": 41061, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP1", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH [tag]", + "source": 5, + "value": "591" + }, + { + "begin": 41027, + "end": 41061, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41027, + "end": 41061, + "name": "ADD", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "MUL", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP1", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP4", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "CALLDATACOPY", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP1", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "ADD", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "POP", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "POP", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "POP", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "tag", + "source": 5, + "value": "591" + }, + { + "begin": 41027, + "end": 41061, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41027, + "end": 41061, + "name": "POP", + "source": 5 + }, + { + "begin": 41019, + "end": 41061, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41019, + "end": 41061, + "name": "POP", + "source": 5 + }, + { + "begin": 41072, + "end": 41084, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 41094, + "end": 41110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 41113, + "end": 41122, + "name": "DUP4", + "source": 5 + }, + { + "begin": 41123, + "end": 41124, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 41113, + "end": 41125, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "LT", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "PUSH [tag]", + "source": 5, + "value": "592" + }, + { + "begin": 41113, + "end": 41125, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "PUSH [tag]", + "source": 5, + "value": "593" + }, + { + "begin": 41113, + "end": 41125, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 41113, + "end": 41125, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "tag", + "source": 5, + "value": "593" + }, + { + "begin": 41113, + "end": 41125, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "tag", + "source": 5, + "value": "592" + }, + { + "begin": 41113, + "end": 41125, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41113, + "end": 41125, + "name": "MUL", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41113, + "end": 41125, + "name": "ADD", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "ADD", + "source": 5 + }, + { + "begin": 41113, + "end": 41125, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41094, + "end": 41125, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41094, + "end": 41125, + "name": "POP", + "source": 5 + }, + { + "begin": 41164, + "end": 41173, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 41159, + "end": 41380, + "name": "tag", + "source": 5, + "value": "594" + }, + { + "begin": 41159, + "end": 41380, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41179, + "end": 41184, + "name": "DUP4", + "source": 5 + }, + { + "begin": 41179, + "end": 41191, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41175, + "end": 41176, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41175, + "end": 41191, + "name": "LT", + "source": 5 + }, + { + "begin": 41159, + "end": 41380, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 41159, + "end": 41380, + "name": "PUSH [tag]", + "source": 5, + "value": "595" + }, + { + "begin": 41159, + "end": 41380, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41224, + "end": 41233, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41216, + "end": 41233, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 41216, + "end": 41233, + "name": "POP", + "source": 5 + }, + { + "begin": 41263, + "end": 41272, + "name": "DUP5", + "source": 5 + }, + { + "begin": 41277, + "end": 41278, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 41273, + "end": 41274, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41273, + "end": 41278, + "name": "ADD", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "LT", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "PUSH [tag]", + "source": 5, + "value": "597" + }, + { + "begin": 41263, + "end": 41279, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "PUSH [tag]", + "source": 5, + "value": "598" + }, + { + "begin": 41263, + "end": 41279, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 41263, + "end": 41279, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "tag", + "source": 5, + "value": "598" + }, + { + "begin": 41263, + "end": 41279, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "tag", + "source": 5, + "value": "597" + }, + { + "begin": 41263, + "end": 41279, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41263, + "end": 41279, + "name": "MUL", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41263, + "end": 41279, + "name": "ADD", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "ADD", + "source": 5 + }, + { + "begin": 41263, + "end": 41279, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41251, + "end": 41279, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 41251, + "end": 41279, + "name": "POP", + "source": 5 + }, + { + "begin": 41309, + "end": 41365, + "name": "PUSH [tag]", + "source": 5, + "value": "599" + }, + { + "begin": 41318, + "end": 41323, + "name": "DUP4", + "source": 5 + }, + { + "begin": 41325, + "end": 41334, + "name": "DUP4", + "source": 5 + }, + { + "begin": 41336, + "end": 41348, + "name": "DUP10", + "source": 5 + }, + { + "begin": 41349, + "end": 41350, + "name": "DUP5", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "LT", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "PUSH [tag]", + "source": 5, + "value": "600" + }, + { + "begin": 41336, + "end": 41351, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "PUSH [tag]", + "source": 5, + "value": "601" + }, + { + "begin": 41336, + "end": 41351, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 41336, + "end": 41351, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "tag", + "source": 5, + "value": "601" + }, + { + "begin": 41336, + "end": 41351, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "tag", + "source": 5, + "value": "600" + }, + { + "begin": 41336, + "end": 41351, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41336, + "end": 41351, + "name": "MUL", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41336, + "end": 41351, + "name": "ADD", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "ADD", + "source": 5 + }, + { + "begin": 41336, + "end": 41351, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41353, + "end": 41361, + "name": "DUP10", + "source": 5 + }, + { + "begin": 41362, + "end": 41363, + "name": "DUP6", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "LT", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "PUSH [tag]", + "source": 5, + "value": "602" + }, + { + "begin": 41353, + "end": 41364, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "PUSH [tag]", + "source": 5, + "value": "603" + }, + { + "begin": 41353, + "end": 41364, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 41353, + "end": 41364, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "tag", + "source": 5, + "value": "603" + }, + { + "begin": 41353, + "end": 41364, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "tag", + "source": 5, + "value": "602" + }, + { + "begin": 41353, + "end": 41364, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41353, + "end": 41364, + "name": "MUL", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41353, + "end": 41364, + "name": "ADD", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "ADD", + "source": 5 + }, + { + "begin": 41353, + "end": 41364, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41309, + "end": 41317, + "name": "PUSH [tag]", + "source": 5, + "value": "604" + }, + { + "begin": 41309, + "end": 41365, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41309, + "end": 41365, + "name": "tag", + "source": 5, + "value": "599" + }, + { + "begin": 41309, + "end": 41365, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41298, + "end": 41303, + "name": "DUP5", + "source": 5 + }, + { + "begin": 41304, + "end": 41305, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "LT", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "PUSH [tag]", + "source": 5, + "value": "605" + }, + { + "begin": 41298, + "end": 41306, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "PUSH [tag]", + "source": 5, + "value": "606" + }, + { + "begin": 41298, + "end": 41306, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 41298, + "end": 41306, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "tag", + "source": 5, + "value": "606" + }, + { + "begin": 41298, + "end": 41306, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "tag", + "source": 5, + "value": "605" + }, + { + "begin": 41298, + "end": 41306, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41298, + "end": 41306, + "name": "MUL", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 41298, + "end": 41306, + "name": "ADD", + "source": 5 + }, + { + "begin": 41298, + "end": 41306, + "name": "ADD", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 41298, + "end": 41365, + "name": "AND", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 41298, + "end": 41365, + "name": "AND", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "POP", + "source": 5 + }, + { + "begin": 41298, + "end": 41365, + "name": "POP", + "source": 5 + }, + { + "begin": 41193, + "end": 41196, + "name": "DUP1", + "source": 5 + }, + { + "begin": 41193, + "end": 41196, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 41193, + "end": 41196, + "name": "ADD", + "source": 5 + }, + { + "begin": 41193, + "end": 41196, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41193, + "end": 41196, + "name": "POP", + "source": 5 + }, + { + "begin": 41159, + "end": 41380, + "name": "PUSH [tag]", + "source": 5, + "value": "594" + }, + { + "begin": 41159, + "end": 41380, + "name": "JUMP", + "source": 5 + }, + { + "begin": 41159, + "end": 41380, + "name": "tag", + "source": 5, + "value": "595" + }, + { + "begin": 41159, + "end": 41380, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41159, + "end": 41380, + "name": "POP", + "source": 5 + }, + { + "begin": 41009, + "end": 41396, + "name": "POP", + "source": 5 + }, + { + "begin": 41009, + "end": 41396, + "name": "POP", + "source": 5 + }, + { + "begin": 40831, + "end": 41396, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 40831, + "end": 41396, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 40831, + "end": 41396, + "name": "POP", + "source": 5 + }, + { + "begin": 40831, + "end": 41396, + "name": "POP", + "source": 5 + }, + { + "begin": 40831, + "end": 41396, + "name": "POP", + "source": 5 + }, + { + "begin": 40831, + "end": 41396, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 42029, + "end": 42211, + "name": "tag", + "source": 5, + "value": "194" + }, + { + "begin": 42029, + "end": 42211, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42144, + "end": 42145, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42134, + "end": 42140, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42134, + "end": 42145, + "name": "SUB", + "source": 5 + }, + { + "begin": 42130, + "end": 42154, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 42147, + "end": 42154, + "name": "PUSH [tag]", + "source": 5, + "value": "607" + }, + { + "begin": 42130, + "end": 42154, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "name": "PUSH [tag]", + "source": 5, + "value": "609" + }, + { + "begin": 42187, + "end": 42191, + "name": "DUP4", + "source": 5 + }, + { + "begin": 42193, + "end": 42195, + "name": "DUP4", + "source": 5 + }, + { + "begin": 42197, + "end": 42203, + "name": "DUP4", + "source": 5 + }, + { + "begin": 42164, + "end": 42169, + "name": "DUP8", + "source": 5 + }, + { + "begin": 42164, + "end": 42186, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 42164, + "end": 42186, + "name": "AND", + "source": 5 + }, + { + "begin": 42164, + "end": 42186, + "name": "PUSH [tag]", + "source": 5, + "value": "610" + }, + { + "begin": 42164, + "end": 42186, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 42164, + "end": 42204, + "name": "AND", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 42164, + "end": 42204, + "name": "tag", + "source": 5, + "value": "609" + }, + { + "begin": 42164, + "end": 42204, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42029, + "end": 42211, + "name": "tag", + "source": 5, + "value": "607" + }, + { + "begin": 42029, + "end": 42211, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42029, + "end": 42211, + "name": "POP", + "source": 5 + }, + { + "begin": 42029, + "end": 42211, + "name": "POP", + "source": 5 + }, + { + "begin": 42029, + "end": 42211, + "name": "POP", + "source": 5 + }, + { + "begin": 42029, + "end": 42211, + "name": "POP", + "source": 5 + }, + { + "begin": 42029, + "end": 42211, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 37395, + "end": 38917, + "name": "tag", + "source": 5, + "value": "196" + }, + { + "begin": 37395, + "end": 38917, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37585, + "end": 37597, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 37607, + "end": 37622, + "name": "DUP1", + "source": 5 + }, + { + "begin": 37632, + "end": 37649, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 37659, + "end": 37671, + "name": "DUP1", + "source": 5 + }, + { + "begin": 37682, + "end": 37698, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 37701, + "end": 37710, + "name": "DUP7", + "source": 5 + }, + { + "begin": 37711, + "end": 37712, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 37701, + "end": 37713, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "LT", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "PUSH [tag]", + "source": 5, + "value": "612" + }, + { + "begin": 37701, + "end": 37713, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "PUSH [tag]", + "source": 5, + "value": "613" + }, + { + "begin": 37701, + "end": 37713, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 37701, + "end": 37713, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "tag", + "source": 5, + "value": "613" + }, + { + "begin": 37701, + "end": 37713, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "tag", + "source": 5, + "value": "612" + }, + { + "begin": 37701, + "end": 37713, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37701, + "end": 37713, + "name": "MUL", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37701, + "end": 37713, + "name": "ADD", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "ADD", + "source": 5 + }, + { + "begin": 37701, + "end": 37713, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37682, + "end": 37713, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 37682, + "end": 37713, + "name": "POP", + "source": 5 + }, + { + "begin": 37753, + "end": 37762, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 37748, + "end": 38901, + "name": "tag", + "source": 5, + "value": "614" + }, + { + "begin": 37748, + "end": 38901, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37768, + "end": 37773, + "name": "DUP10", + "source": 5 + }, + { + "begin": 37768, + "end": 37780, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37764, + "end": 37765, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37764, + "end": 37780, + "name": "LT", + "source": 5 + }, + { + "begin": 37748, + "end": 38901, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 37748, + "end": 38901, + "name": "PUSH [tag]", + "source": 5, + "value": "615" + }, + { + "begin": 37748, + "end": 38901, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 37812, + "end": 37817, + "name": "DUP10", + "source": 5 + }, + { + "begin": 37818, + "end": 37819, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "LT", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "PUSH [tag]", + "source": 5, + "value": "617" + }, + { + "begin": 37812, + "end": 37820, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "PUSH [tag]", + "source": 5, + "value": "618" + }, + { + "begin": 37812, + "end": 37820, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 37812, + "end": 37820, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "tag", + "source": 5, + "value": "618" + }, + { + "begin": 37812, + "end": 37820, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "tag", + "source": 5, + "value": "617" + }, + { + "begin": 37812, + "end": 37820, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37812, + "end": 37820, + "name": "MUL", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37812, + "end": 37820, + "name": "ADD", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "ADD", + "source": 5 + }, + { + "begin": 37812, + "end": 37820, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37805, + "end": 37820, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 37805, + "end": 37820, + "name": "POP", + "source": 5 + }, + { + "begin": 37848, + "end": 37856, + "name": "DUP9", + "source": 5 + }, + { + "begin": 37857, + "end": 37858, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "LT", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "PUSH [tag]", + "source": 5, + "value": "619" + }, + { + "begin": 37848, + "end": 37859, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "PUSH [tag]", + "source": 5, + "value": "620" + }, + { + "begin": 37848, + "end": 37859, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 37848, + "end": 37859, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "tag", + "source": 5, + "value": "620" + }, + { + "begin": 37848, + "end": 37859, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "tag", + "source": 5, + "value": "619" + }, + { + "begin": 37848, + "end": 37859, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37848, + "end": 37859, + "name": "MUL", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37848, + "end": 37859, + "name": "ADD", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "ADD", + "source": 5 + }, + { + "begin": 37848, + "end": 37859, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37838, + "end": 37859, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 37838, + "end": 37859, + "name": "POP", + "source": 5 + }, + { + "begin": 37886, + "end": 37895, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37878, + "end": 37895, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 37878, + "end": 37895, + "name": "POP", + "source": 5 + }, + { + "begin": 37925, + "end": 37934, + "name": "DUP8", + "source": 5 + }, + { + "begin": 37939, + "end": 37940, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 37935, + "end": 37936, + "name": "DUP3", + "source": 5 + }, + { + "begin": 37935, + "end": 37940, + "name": "ADD", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "DUP2", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "LT", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "PUSH [tag]", + "source": 5, + "value": "621" + }, + { + "begin": 37925, + "end": 37941, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "PUSH [tag]", + "source": 5, + "value": "622" + }, + { + "begin": 37925, + "end": 37941, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 37925, + "end": 37941, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "tag", + "source": 5, + "value": "622" + }, + { + "begin": 37925, + "end": 37941, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "tag", + "source": 5, + "value": "621" + }, + { + "begin": 37925, + "end": 37941, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37925, + "end": 37941, + "name": "MUL", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 37925, + "end": 37941, + "name": "ADD", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "ADD", + "source": 5 + }, + { + "begin": 37925, + "end": 37941, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37913, + "end": 37941, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 37913, + "end": 37941, + "name": "POP", + "source": 5 + }, + { + "begin": 37981, + "end": 37986, + "name": "DUP10", + "source": 5 + }, + { + "begin": 37981, + "end": 37993, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37976, + "end": 37977, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 37972, + "end": 37973, + "name": "DUP3", + "source": 5 + }, + { + "begin": 37972, + "end": 37977, + "name": "ADD", + "source": 5 + }, + { + "begin": 37972, + "end": 37993, + "name": "EQ", + "source": 5 + }, + { + "begin": 37972, + "end": 38013, + "name": "PUSH [tag]", + "source": 5, + "value": "623" + }, + { + "begin": 37972, + "end": 38013, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38001, + "end": 38006, + "name": "DUP10", + "source": 5 + }, + { + "begin": 38011, + "end": 38012, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 38007, + "end": 38008, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38007, + "end": 38012, + "name": "ADD", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "LT", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "PUSH [tag]", + "source": 5, + "value": "624" + }, + { + "begin": 38001, + "end": 38013, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "PUSH [tag]", + "source": 5, + "value": "625" + }, + { + "begin": 38001, + "end": 38013, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 38001, + "end": 38013, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "tag", + "source": 5, + "value": "625" + }, + { + "begin": 38001, + "end": 38013, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "tag", + "source": 5, + "value": "624" + }, + { + "begin": 38001, + "end": 38013, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 38001, + "end": 38013, + "name": "MUL", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 38001, + "end": 38013, + "name": "ADD", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "ADD", + "source": 5 + }, + { + "begin": 38001, + "end": 38013, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 37972, + "end": 38013, + "name": "PUSH [tag]", + "source": 5, + "value": "626" + }, + { + "begin": 37972, + "end": 38013, + "name": "JUMP", + "source": 5 + }, + { + "begin": 37972, + "end": 38013, + "name": "tag", + "source": 5, + "value": "623" + }, + { + "begin": 37972, + "end": 38013, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37996, + "end": 37998, + "name": "DUP7", + "source": 5 + }, + { + "begin": 37972, + "end": 38013, + "name": "tag", + "source": 5, + "value": "626" + }, + { + "begin": 37972, + "end": 38013, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37960, + "end": 38013, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 37960, + "end": 38013, + "name": "POP", + "source": 5 + }, + { + "begin": 38047, + "end": 38057, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 38036, + "end": 38057, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "GT", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH [tag]", + "source": 5, + "value": "627" + }, + { + "begin": 38036, + "end": 38057, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH [tag]", + "source": 5, + "value": "628" + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 38036, + "end": 38057, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "tag", + "source": 5, + "value": "628" + }, + { + "begin": 38036, + "end": 38057, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "tag", + "source": 5, + "value": "627" + }, + { + "begin": 38036, + "end": 38057, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38036, + "end": 38043, + "name": "DUP6", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 38036, + "end": 38057, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "GT", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH [tag]", + "source": 5, + "value": "630" + }, + { + "begin": 38036, + "end": 38057, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH [tag]", + "source": 5, + "value": "631" + }, + { + "begin": 38036, + "end": 38057, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 38036, + "end": 38057, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "tag", + "source": 5, + "value": "631" + }, + { + "begin": 38036, + "end": 38057, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "tag", + "source": 5, + "value": "630" + }, + { + "begin": 38036, + "end": 38057, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38036, + "end": 38057, + "name": "SUB", + "source": 5 + }, + { + "begin": 38032, + "end": 38887, + "name": "PUSH [tag]", + "source": 5, + "value": "632" + }, + { + "begin": 38032, + "end": 38887, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38082, + "end": 38099, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38101, + "end": 38118, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38139, + "end": 38143, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38123, + "end": 38156, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38123, + "end": 38156, + "name": "AND", + "source": 5 + }, + { + "begin": 38123, + "end": 38156, + "name": "PUSH", + "source": 5, + "value": "902F1AC" + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38123, + "end": 38158, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38123, + "end": 38158, + "name": "AND", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 38123, + "end": 38158, + "name": "SHL", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 38123, + "end": 38158, + "name": "ADD", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38123, + "end": 38158, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "SUB", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP7", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "GAS", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH [tag]", + "source": 5, + "value": "634" + }, + { + "begin": 38123, + "end": 38158, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38123, + "end": 38158, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "tag", + "source": 5, + "value": "634" + }, + { + "begin": 38123, + "end": 38158, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38123, + "end": 38158, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38123, + "end": 38158, + "name": "NOT", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "ADD", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "AND", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "ADD", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38123, + "end": 38158, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "ADD", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH [tag]", + "source": 5, + "value": "635" + }, + { + "begin": 38123, + "end": 38158, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "PUSH [tag]", + "source": 5, + "value": "636" + }, + { + "begin": 38123, + "end": 38158, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38123, + "end": 38158, + "name": "tag", + "source": 5, + "value": "635" + }, + { + "begin": 38123, + "end": 38158, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38081, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38081, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38081, + "end": 38158, + "name": "AND", + "source": 5 + }, + { + "begin": 38081, + "end": 38158, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38081, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38081, + "end": 38158, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38081, + "end": 38158, + "name": "AND", + "source": 5 + }, + { + "begin": 38081, + "end": 38158, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38081, + "end": 38158, + "name": "POP", + "source": 5 + }, + { + "begin": 38192, + "end": 38201, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38184, + "end": 38201, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38184, + "end": 38201, + "name": "AND", + "source": 5 + }, + { + "begin": 38184, + "end": 38189, + "name": "DUP9", + "source": 5 + }, + { + "begin": 38184, + "end": 38201, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38184, + "end": 38201, + "name": "AND", + "source": 5 + }, + { + "begin": 38184, + "end": 38201, + "name": "LT", + "source": 5 + }, + { + "begin": 38180, + "end": 38753, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38180, + "end": 38753, + "name": "PUSH [tag]", + "source": 5, + "value": "637" + }, + { + "begin": 38180, + "end": 38753, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38229, + "end": 38245, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38272, + "end": 38281, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38248, + "end": 38253, + "name": "DUP10", + "source": 5 + }, + { + "begin": 38248, + "end": 38263, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38248, + "end": 38263, + "name": "AND", + "source": 5 + }, + { + "begin": 38248, + "end": 38263, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 38264, + "end": 38268, + "name": "DUP9", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38248, + "end": 38269, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38248, + "end": 38269, + "name": "AND", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 38248, + "end": 38269, + "name": "SHL", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 38248, + "end": 38269, + "name": "ADD", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH [tag]", + "source": 5, + "value": "638" + }, + { + "begin": 38248, + "end": 38269, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 38248, + "end": 38269, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "tag", + "source": 5, + "value": "638" + }, + { + "begin": 38248, + "end": 38269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38248, + "end": 38269, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "SUB", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP7", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "GAS", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH [tag]", + "source": 5, + "value": "640" + }, + { + "begin": 38248, + "end": 38269, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38248, + "end": 38269, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "tag", + "source": 5, + "value": "640" + }, + { + "begin": 38248, + "end": 38269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "POP", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "POP", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "POP", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "POP", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38248, + "end": 38269, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38248, + "end": 38269, + "name": "NOT", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "ADD", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "AND", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "ADD", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38248, + "end": 38269, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "POP", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "ADD", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH [tag]", + "source": 5, + "value": "641" + }, + { + "begin": 38248, + "end": 38269, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 38248, + "end": 38269, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38248, + "end": 38269, + "name": "tag", + "source": 5, + "value": "641" + }, + { + "begin": 38248, + "end": 38269, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38248, + "end": 38281, + "name": "SUB", + "source": 5 + }, + { + "begin": 38229, + "end": 38281, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38229, + "end": 38281, + "name": "POP", + "source": 5 + }, + { + "begin": 38307, + "end": 38324, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38327, + "end": 38370, + "name": "PUSH [tag]", + "source": 5, + "value": "642" + }, + { + "begin": 38349, + "end": 38358, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38360, + "end": 38369, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38327, + "end": 38335, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38327, + "end": 38348, + "name": "PUSH [tag]", + "source": 5, + "value": "643" + }, + { + "begin": 38327, + "end": 38348, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38327, + "end": 38370, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 38327, + "end": 38370, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38327, + "end": 38370, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38327, + "end": 38370, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38327, + "end": 38370, + "name": "AND", + "source": 5 + }, + { + "begin": 38327, + "end": 38370, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38327, + "end": 38370, + "name": "tag", + "source": 5, + "value": "642" + }, + { + "begin": 38327, + "end": 38370, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38307, + "end": 38370, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38307, + "end": 38370, + "name": "POP", + "source": 5 + }, + { + "begin": 38413, + "end": 38417, + "name": "DUP7", + "source": 5 + }, + { + "begin": 38397, + "end": 38423, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38397, + "end": 38423, + "name": "AND", + "source": 5 + }, + { + "begin": 38397, + "end": 38423, + "name": "PUSH", + "source": 5, + "value": "22C0D9F" + }, + { + "begin": 38424, + "end": 38425, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38427, + "end": 38436, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38438, + "end": 38447, + "name": "DUP12", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38397, + "end": 38452, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38397, + "end": 38452, + "name": "AND", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 38397, + "end": 38452, + "name": "SHL", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 38397, + "end": 38452, + "name": "ADD", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH [tag]", + "source": 5, + "value": "644" + }, + { + "begin": 38397, + "end": 38452, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH [tag]", + "source": 5, + "value": "645" + }, + { + "begin": 38397, + "end": 38452, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "tag", + "source": 5, + "value": "644" + }, + { + "begin": 38397, + "end": 38452, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38397, + "end": 38452, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "SUB", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP8", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH [tag]", + "source": 5, + "value": "646" + }, + { + "begin": 38397, + "end": 38452, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "tag", + "source": 5, + "value": "646" + }, + { + "begin": 38397, + "end": 38452, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "POP", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "GAS", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "CALL", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH [tag]", + "source": 5, + "value": "648" + }, + { + "begin": 38397, + "end": 38452, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38397, + "end": 38452, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38397, + "end": 38452, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "tag", + "source": 5, + "value": "648" + }, + { + "begin": 38397, + "end": 38452, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "POP", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "POP", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "POP", + "source": 5 + }, + { + "begin": 38397, + "end": 38452, + "name": "POP", + "source": 5 + }, + { + "begin": 38203, + "end": 38475, + "name": "POP", + "source": 5 + }, + { + "begin": 38203, + "end": 38475, + "name": "POP", + "source": 5 + }, + { + "begin": 38180, + "end": 38753, + "name": "PUSH [tag]", + "source": 5, + "value": "649" + }, + { + "begin": 38180, + "end": 38753, + "name": "JUMP", + "source": 5 + }, + { + "begin": 38180, + "end": 38753, + "name": "tag", + "source": 5, + "value": "637" + }, + { + "begin": 38180, + "end": 38753, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38507, + "end": 38523, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38550, + "end": 38559, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38526, + "end": 38531, + "name": "DUP10", + "source": 5 + }, + { + "begin": 38526, + "end": 38541, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38526, + "end": 38541, + "name": "AND", + "source": 5 + }, + { + "begin": 38526, + "end": 38541, + "name": "PUSH", + "source": 5, + "value": "70A08231" + }, + { + "begin": 38542, + "end": 38546, + "name": "DUP9", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38526, + "end": 38547, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38526, + "end": 38547, + "name": "AND", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 38526, + "end": 38547, + "name": "SHL", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 38526, + "end": 38547, + "name": "ADD", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH [tag]", + "source": 5, + "value": "650" + }, + { + "begin": 38526, + "end": 38547, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH [tag]", + "source": 5, + "value": "181" + }, + { + "begin": 38526, + "end": 38547, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "tag", + "source": 5, + "value": "650" + }, + { + "begin": 38526, + "end": 38547, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38526, + "end": 38547, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "SUB", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP7", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "GAS", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH [tag]", + "source": 5, + "value": "652" + }, + { + "begin": 38526, + "end": 38547, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38526, + "end": 38547, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "tag", + "source": 5, + "value": "652" + }, + { + "begin": 38526, + "end": 38547, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "POP", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "POP", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "POP", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "POP", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38526, + "end": 38547, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38526, + "end": 38547, + "name": "NOT", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "ADD", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "AND", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "ADD", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38526, + "end": 38547, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "POP", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "ADD", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH [tag]", + "source": 5, + "value": "653" + }, + { + "begin": 38526, + "end": 38547, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "PUSH [tag]", + "source": 5, + "value": "188" + }, + { + "begin": 38526, + "end": 38547, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38526, + "end": 38547, + "name": "tag", + "source": 5, + "value": "653" + }, + { + "begin": 38526, + "end": 38547, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38526, + "end": 38559, + "name": "SUB", + "source": 5 + }, + { + "begin": 38507, + "end": 38559, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38507, + "end": 38559, + "name": "POP", + "source": 5 + }, + { + "begin": 38585, + "end": 38602, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38605, + "end": 38648, + "name": "PUSH [tag]", + "source": 5, + "value": "654" + }, + { + "begin": 38627, + "end": 38636, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38638, + "end": 38647, + "name": "DUP6", + "source": 5 + }, + { + "begin": 38605, + "end": 38613, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38605, + "end": 38626, + "name": "PUSH [tag]", + "source": 5, + "value": "643" + }, + { + "begin": 38605, + "end": 38626, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38605, + "end": 38648, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 38605, + "end": 38648, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38605, + "end": 38648, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38605, + "end": 38648, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38605, + "end": 38648, + "name": "AND", + "source": 5 + }, + { + "begin": 38605, + "end": 38648, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38605, + "end": 38648, + "name": "tag", + "source": 5, + "value": "654" + }, + { + "begin": 38605, + "end": 38648, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38585, + "end": 38648, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38585, + "end": 38648, + "name": "POP", + "source": 5 + }, + { + "begin": 38691, + "end": 38695, + "name": "DUP7", + "source": 5 + }, + { + "begin": 38675, + "end": 38701, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38675, + "end": 38701, + "name": "AND", + "source": 5 + }, + { + "begin": 38675, + "end": 38701, + "name": "PUSH", + "source": 5, + "value": "22C0D9F" + }, + { + "begin": 38702, + "end": 38711, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38713, + "end": 38714, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38716, + "end": 38725, + "name": "DUP12", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38675, + "end": 38730, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38675, + "end": 38730, + "name": "AND", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 38675, + "end": 38730, + "name": "SHL", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 38675, + "end": 38730, + "name": "ADD", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH [tag]", + "source": 5, + "value": "655" + }, + { + "begin": 38675, + "end": 38730, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH [tag]", + "source": 5, + "value": "656" + }, + { + "begin": 38675, + "end": 38730, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "tag", + "source": 5, + "value": "655" + }, + { + "begin": 38675, + "end": 38730, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38675, + "end": 38730, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "SUB", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP8", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH [tag]", + "source": 5, + "value": "657" + }, + { + "begin": 38675, + "end": 38730, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "tag", + "source": 5, + "value": "657" + }, + { + "begin": 38675, + "end": 38730, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "POP", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "GAS", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "CALL", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH [tag]", + "source": 5, + "value": "659" + }, + { + "begin": 38675, + "end": 38730, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38675, + "end": 38730, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38675, + "end": 38730, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "tag", + "source": 5, + "value": "659" + }, + { + "begin": 38675, + "end": 38730, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "POP", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "POP", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "POP", + "source": 5 + }, + { + "begin": 38675, + "end": 38730, + "name": "POP", + "source": 5 + }, + { + "begin": 38481, + "end": 38753, + "name": "POP", + "source": 5 + }, + { + "begin": 38481, + "end": 38753, + "name": "POP", + "source": 5 + }, + { + "begin": 38180, + "end": 38753, + "name": "tag", + "source": 5, + "value": "649" + }, + { + "begin": 38180, + "end": 38753, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38059, + "end": 38771, + "name": "POP", + "source": 5 + }, + { + "begin": 38059, + "end": 38771, + "name": "POP", + "source": 5 + }, + { + "begin": 38032, + "end": 38887, + "name": "PUSH [tag]", + "source": 5, + "value": "660" + }, + { + "begin": 38032, + "end": 38887, + "name": "JUMP", + "source": 5 + }, + { + "begin": 38032, + "end": 38887, + "name": "tag", + "source": 5, + "value": "632" + }, + { + "begin": 38032, + "end": 38887, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38807, + "end": 38811, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38799, + "end": 38817, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38799, + "end": 38817, + "name": "AND", + "source": 5 + }, + { + "begin": 38799, + "end": 38817, + "name": "PUSH", + "source": 5, + "value": "53C059A0" + }, + { + "begin": 38839, + "end": 38843, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38831, + "end": 38854, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38831, + "end": 38854, + "name": "AND", + "source": 5 + }, + { + "begin": 38831, + "end": 38854, + "name": "PUSH", + "source": 5, + "value": "DA10610C" + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38831, + "end": 38856, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38831, + "end": 38856, + "name": "AND", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 38831, + "end": 38856, + "name": "SHL", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 38831, + "end": 38856, + "name": "ADD", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38831, + "end": 38856, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "SUB", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP7", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "GAS", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH [tag]", + "source": 5, + "value": "662" + }, + { + "begin": 38831, + "end": 38856, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38831, + "end": 38856, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "tag", + "source": 5, + "value": "662" + }, + { + "begin": 38831, + "end": 38856, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "POP", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "POP", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "POP", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "POP", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38831, + "end": 38856, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38831, + "end": 38856, + "name": "NOT", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "ADD", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "AND", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "ADD", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38831, + "end": 38856, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "POP", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "ADD", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH [tag]", + "source": 5, + "value": "663" + }, + { + "begin": 38831, + "end": 38856, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 38831, + "end": 38856, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38831, + "end": 38856, + "name": "tag", + "source": 5, + "value": "663" + }, + { + "begin": 38831, + "end": 38856, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38818, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38818, + "end": 38856, + "name": "AND", + "source": 5 + }, + { + "begin": 38818, + "end": 38827, + "name": "DUP5", + "source": 5 + }, + { + "begin": 38818, + "end": 38856, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 38818, + "end": 38856, + "name": "AND", + "source": 5 + }, + { + "begin": 38818, + "end": 38856, + "name": "EQ", + "source": 5 + }, + { + "begin": 38858, + "end": 38867, + "name": "DUP7", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38799, + "end": 38868, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 38799, + "end": 38868, + "name": "AND", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 38799, + "end": 38868, + "name": "SHL", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 38799, + "end": 38868, + "name": "ADD", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH [tag]", + "source": 5, + "value": "664" + }, + { + "begin": 38799, + "end": 38868, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH [tag]", + "source": 5, + "value": "665" + }, + { + "begin": 38799, + "end": 38868, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "tag", + "source": 5, + "value": "664" + }, + { + "begin": 38799, + "end": 38868, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38799, + "end": 38868, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP4", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "SUB", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP8", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "GAS", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "CALL", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH [tag]", + "source": 5, + "value": "667" + }, + { + "begin": 38799, + "end": 38868, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 38799, + "end": 38868, + "name": "REVERT", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "tag", + "source": 5, + "value": "667" + }, + { + "begin": 38799, + "end": 38868, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "POP", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "POP", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "POP", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "POP", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38799, + "end": 38868, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38799, + "end": 38868, + "name": "NOT", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "ADD", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "AND", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP3", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "ADD", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP1", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 38799, + "end": 38868, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "POP", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "DUP2", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "ADD", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH [tag]", + "source": 5, + "value": "668" + }, + { + "begin": 38799, + "end": 38868, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "PUSH [tag]", + "source": 5, + "value": "669" + }, + { + "begin": 38799, + "end": 38868, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "tag", + "source": 5, + "value": "668" + }, + { + "begin": 38799, + "end": 38868, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 38799, + "end": 38868, + "name": "POP", + "source": 5 + }, + { + "begin": 38032, + "end": 38887, + "name": "tag", + "source": 5, + "value": "660" + }, + { + "begin": 38032, + "end": 38887, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37782, + "end": 37785, + "name": "DUP1", + "source": 5 + }, + { + "begin": 37782, + "end": 37785, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 37782, + "end": 37785, + "name": "ADD", + "source": 5 + }, + { + "begin": 37782, + "end": 37785, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 37782, + "end": 37785, + "name": "POP", + "source": 5 + }, + { + "begin": 37748, + "end": 38901, + "name": "PUSH [tag]", + "source": 5, + "value": "614" + }, + { + "begin": 37748, + "end": 38901, + "name": "JUMP", + "source": 5 + }, + { + "begin": 37748, + "end": 38901, + "name": "tag", + "source": 5, + "value": "615" + }, + { + "begin": 37748, + "end": 38901, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37748, + "end": 38901, + "name": "POP", + "source": 5 + }, + { + "begin": 37575, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37575, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37575, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37575, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37575, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37395, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37395, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37395, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37395, + "end": 38917, + "name": "POP", + "source": 5 + }, + { + "begin": 37395, + "end": 38917, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 43207, + "end": 43397, + "name": "tag", + "source": 5, + "value": "206" + }, + { + "begin": 43207, + "end": 43397, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 43304, + "end": 43305, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 43294, + "end": 43300, + "name": "DUP2", + "source": 5 + }, + { + "begin": 43294, + "end": 43305, + "name": "SUB", + "source": 5 + }, + { + "begin": 43290, + "end": 43314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 43307, + "end": 43314, + "name": "PUSH [tag]", + "source": 5, + "value": "670" + }, + { + "begin": 43290, + "end": 43314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 43324, + "end": 43332, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 43324, + "end": 43341, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 43324, + "end": 43341, + "name": "AND", + "source": 5 + }, + { + "begin": 43324, + "end": 43341, + "name": "PUSH", + "source": 5, + "value": "2E1A7D4D" + }, + { + "begin": 43342, + "end": 43348, + "name": "DUP3", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 43324, + "end": 43349, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP3", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 43324, + "end": 43349, + "name": "AND", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 43324, + "end": 43349, + "name": "SHL", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP2", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 43324, + "end": 43349, + "name": "ADD", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH [tag]", + "source": 5, + "value": "672" + }, + { + "begin": 43324, + "end": 43349, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH [tag]", + "source": 5, + "value": "39" + }, + { + "begin": 43324, + "end": 43349, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "tag", + "source": 5, + "value": "672" + }, + { + "begin": 43324, + "end": 43349, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 43324, + "end": 43349, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP1", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP4", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "SUB", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP2", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP8", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP1", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP1", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH [tag]", + "source": 5, + "value": "673" + }, + { + "begin": 43324, + "end": 43349, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP1", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "REVERT", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "tag", + "source": 5, + "value": "673" + }, + { + "begin": 43324, + "end": 43349, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "POP", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "GAS", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "CALL", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP1", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH [tag]", + "source": 5, + "value": "675" + }, + { + "begin": 43324, + "end": 43349, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 43324, + "end": 43349, + "name": "DUP1", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 43324, + "end": 43349, + "name": "REVERT", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "tag", + "source": 5, + "value": "675" + }, + { + "begin": 43324, + "end": 43349, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "POP", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "POP", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "POP", + "source": 5 + }, + { + "begin": 43324, + "end": 43349, + "name": "POP", + "source": 5 + }, + { + "begin": 43359, + "end": 43390, + "name": "PUSH [tag]", + "source": 5, + "value": "676" + }, + { + "begin": 43379, + "end": 43381, + "name": "DUP3", + "source": 5 + }, + { + "begin": 43383, + "end": 43389, + "name": "DUP3", + "source": 5 + }, + { + "begin": 43359, + "end": 43378, + "name": "PUSH [tag]", + "source": 5, + "value": "248" + }, + { + "begin": 43359, + "end": 43390, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 43359, + "end": 43390, + "name": "tag", + "source": 5, + "value": "676" + }, + { + "begin": 43359, + "end": 43390, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 43207, + "end": 43397, + "name": "tag", + "source": 5, + "value": "670" + }, + { + "begin": 43207, + "end": 43397, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 43207, + "end": 43397, + "name": "POP", + "source": 5 + }, + { + "begin": 43207, + "end": 43397, + "name": "POP", + "source": 5 + }, + { + "begin": 43207, + "end": 43397, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "name": "tag", + "source": 5, + "value": "224" + }, + { + "begin": 30849, + "end": 32023, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31029, + "end": 31055, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 31093, + "end": 31102, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31093, + "end": 31109, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "GT", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH [tag]", + "source": 5, + "value": "678" + }, + { + "begin": 31079, + "end": 31110, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH [tag]", + "source": 5, + "value": "679" + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH [tag]", + "source": 5, + "value": "590" + }, + { + "begin": 31079, + "end": 31110, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "tag", + "source": 5, + "value": "679" + }, + { + "begin": 31079, + "end": 31110, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "tag", + "source": 5, + "value": "678" + }, + { + "begin": 31079, + "end": 31110, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31079, + "end": 31110, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31079, + "end": 31110, + "name": "MUL", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31079, + "end": 31110, + "name": "ADD", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "ADD", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31079, + "end": 31110, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH [tag]", + "source": 5, + "value": "680" + }, + { + "begin": 31079, + "end": 31110, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31079, + "end": 31110, + "name": "ADD", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "MUL", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP4", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "CALLDATACOPY", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "ADD", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "POP", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "POP", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "POP", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "tag", + "source": 5, + "value": "680" + }, + { + "begin": 31079, + "end": 31110, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31079, + "end": 31110, + "name": "POP", + "source": 5 + }, + { + "begin": 31067, + "end": 31110, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31067, + "end": 31110, + "name": "POP", + "source": 5 + }, + { + "begin": 31216, + "end": 31225, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31190, + "end": 31199, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31200, + "end": 31205, + "name": "DUP6", + "source": 5 + }, + { + "begin": 31200, + "end": 31212, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "LT", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "PUSH [tag]", + "source": 5, + "value": "681" + }, + { + "begin": 31190, + "end": 31213, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "PUSH [tag]", + "source": 5, + "value": "682" + }, + { + "begin": 31190, + "end": 31213, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31190, + "end": 31213, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "tag", + "source": 5, + "value": "682" + }, + { + "begin": 31190, + "end": 31213, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "tag", + "source": 5, + "value": "681" + }, + { + "begin": 31190, + "end": 31213, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31190, + "end": 31213, + "name": "MUL", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31190, + "end": 31213, + "name": "ADD", + "source": 5 + }, + { + "begin": 31190, + "end": 31213, + "name": "ADD", + "source": 5 + }, + { + "begin": 31190, + "end": 31225, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31190, + "end": 31225, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31190, + "end": 31225, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31190, + "end": 31225, + "name": "POP", + "source": 5 + }, + { + "begin": 31190, + "end": 31225, + "name": "POP", + "source": 5 + }, + { + "begin": 31241, + "end": 31250, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31253, + "end": 31258, + "name": "DUP5", + "source": 5 + }, + { + "begin": 31253, + "end": 31265, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31241, + "end": 31265, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31241, + "end": 31265, + "name": "POP", + "source": 5 + }, + { + "begin": 31236, + "end": 32017, + "name": "tag", + "source": 5, + "value": "683" + }, + { + "begin": 31236, + "end": 32017, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31272, + "end": 31273, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31267, + "end": 31268, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31267, + "end": 31273, + "name": "EQ", + "source": 5 + }, + { + "begin": 31236, + "end": 32017, + "name": "PUSH [tag]", + "source": 5, + "value": "684" + }, + { + "begin": 31236, + "end": 32017, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31294, + "end": 31306, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31309, + "end": 31318, + "name": "DUP5", + "source": 5 + }, + { + "begin": 31323, + "end": 31324, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 31319, + "end": 31320, + "name": "DUP4", + "source": 5 + }, + { + "begin": 31319, + "end": 31324, + "name": "PUSH [tag]", + "source": 5, + "value": "686" + }, + { + "begin": 31319, + "end": 31324, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31319, + "end": 31324, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31319, + "end": 31324, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 31319, + "end": 31324, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31319, + "end": 31324, + "name": "tag", + "source": 5, + "value": "686" + }, + { + "begin": 31319, + "end": 31324, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "LT", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "PUSH [tag]", + "source": 5, + "value": "687" + }, + { + "begin": 31309, + "end": 31325, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "PUSH [tag]", + "source": 5, + "value": "688" + }, + { + "begin": 31309, + "end": 31325, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31309, + "end": 31325, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "tag", + "source": 5, + "value": "688" + }, + { + "begin": 31309, + "end": 31325, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "tag", + "source": 5, + "value": "687" + }, + { + "begin": 31309, + "end": 31325, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31309, + "end": 31325, + "name": "MUL", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31309, + "end": 31325, + "name": "ADD", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "ADD", + "source": 5 + }, + { + "begin": 31309, + "end": 31325, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31294, + "end": 31325, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31294, + "end": 31325, + "name": "POP", + "source": 5 + }, + { + "begin": 31339, + "end": 31354, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31357, + "end": 31365, + "name": "DUP8", + "source": 5 + }, + { + "begin": 31370, + "end": 31371, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 31366, + "end": 31367, + "name": "DUP5", + "source": 5 + }, + { + "begin": 31366, + "end": 31371, + "name": "PUSH [tag]", + "source": 5, + "value": "689" + }, + { + "begin": 31366, + "end": 31371, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31366, + "end": 31371, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31366, + "end": 31371, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 31366, + "end": 31371, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31366, + "end": 31371, + "name": "tag", + "source": 5, + "value": "689" + }, + { + "begin": 31366, + "end": 31371, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "LT", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "PUSH [tag]", + "source": 5, + "value": "690" + }, + { + "begin": 31357, + "end": 31372, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "PUSH [tag]", + "source": 5, + "value": "691" + }, + { + "begin": 31357, + "end": 31372, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31357, + "end": 31372, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "tag", + "source": 5, + "value": "691" + }, + { + "begin": 31357, + "end": 31372, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "tag", + "source": 5, + "value": "690" + }, + { + "begin": 31357, + "end": 31372, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31357, + "end": 31372, + "name": "MUL", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31357, + "end": 31372, + "name": "ADD", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "ADD", + "source": 5 + }, + { + "begin": 31357, + "end": 31372, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31339, + "end": 31372, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31339, + "end": 31372, + "name": "POP", + "source": 5 + }, + { + "begin": 31386, + "end": 31398, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31401, + "end": 31406, + "name": "DUP8", + "source": 5 + }, + { + "begin": 31411, + "end": 31412, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 31407, + "end": 31408, + "name": "DUP6", + "source": 5 + }, + { + "begin": 31407, + "end": 31412, + "name": "PUSH [tag]", + "source": 5, + "value": "692" + }, + { + "begin": 31407, + "end": 31412, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31407, + "end": 31412, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31407, + "end": 31412, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 31407, + "end": 31412, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31407, + "end": 31412, + "name": "tag", + "source": 5, + "value": "692" + }, + { + "begin": 31407, + "end": 31412, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "LT", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "PUSH [tag]", + "source": 5, + "value": "693" + }, + { + "begin": 31401, + "end": 31413, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "PUSH [tag]", + "source": 5, + "value": "694" + }, + { + "begin": 31401, + "end": 31413, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31401, + "end": 31413, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "tag", + "source": 5, + "value": "694" + }, + { + "begin": 31401, + "end": 31413, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "tag", + "source": 5, + "value": "693" + }, + { + "begin": 31401, + "end": 31413, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31401, + "end": 31413, + "name": "MUL", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31401, + "end": 31413, + "name": "ADD", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "ADD", + "source": 5 + }, + { + "begin": 31401, + "end": 31413, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31386, + "end": 31413, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31386, + "end": 31413, + "name": "POP", + "source": 5 + }, + { + "begin": 31443, + "end": 31453, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 31432, + "end": 31453, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "GT", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH [tag]", + "source": 5, + "value": "695" + }, + { + "begin": 31432, + "end": 31453, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH [tag]", + "source": 5, + "value": "696" + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 31432, + "end": 31453, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "tag", + "source": 5, + "value": "696" + }, + { + "begin": 31432, + "end": 31453, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "tag", + "source": 5, + "value": "695" + }, + { + "begin": 31432, + "end": 31453, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31432, + "end": 31439, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 31432, + "end": 31453, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "GT", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH [tag]", + "source": 5, + "value": "697" + }, + { + "begin": 31432, + "end": 31453, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH [tag]", + "source": 5, + "value": "698" + }, + { + "begin": 31432, + "end": 31453, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 31432, + "end": 31453, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "tag", + "source": 5, + "value": "698" + }, + { + "begin": 31432, + "end": 31453, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "tag", + "source": 5, + "value": "697" + }, + { + "begin": 31432, + "end": 31453, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31432, + "end": 31453, + "name": "SUB", + "source": 5 + }, + { + "begin": 31428, + "end": 32007, + "name": "PUSH [tag]", + "source": 5, + "value": "699" + }, + { + "begin": 31428, + "end": 32007, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31474, + "end": 31491, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31493, + "end": 31511, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31532, + "end": 31536, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31516, + "end": 31549, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31516, + "end": 31549, + "name": "AND", + "source": 5 + }, + { + "begin": 31516, + "end": 31549, + "name": "PUSH", + "source": 5, + "value": "902F1AC" + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31516, + "end": 31551, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 31516, + "end": 31551, + "name": "AND", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 31516, + "end": 31551, + "name": "SHL", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 31516, + "end": 31551, + "name": "ADD", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31516, + "end": 31551, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP4", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "SUB", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP7", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "GAS", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH [tag]", + "source": 5, + "value": "701" + }, + { + "begin": 31516, + "end": 31551, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31516, + "end": 31551, + "name": "REVERT", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "tag", + "source": 5, + "value": "701" + }, + { + "begin": 31516, + "end": 31551, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31516, + "end": 31551, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 31516, + "end": 31551, + "name": "NOT", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "ADD", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "AND", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "ADD", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31516, + "end": 31551, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "ADD", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH [tag]", + "source": 5, + "value": "702" + }, + { + "begin": 31516, + "end": 31551, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "PUSH [tag]", + "source": 5, + "value": "636" + }, + { + "begin": 31516, + "end": 31551, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31516, + "end": 31551, + "name": "tag", + "source": 5, + "value": "702" + }, + { + "begin": 31516, + "end": 31551, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31473, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31473, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31473, + "end": 31551, + "name": "AND", + "source": 5 + }, + { + "begin": 31473, + "end": 31551, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31473, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31473, + "end": 31551, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31473, + "end": 31551, + "name": "AND", + "source": 5 + }, + { + "begin": 31473, + "end": 31551, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31473, + "end": 31551, + "name": "POP", + "source": 5 + }, + { + "begin": 31581, + "end": 31590, + "name": "DUP9", + "source": 5 + }, + { + "begin": 31591, + "end": 31592, + "name": "DUP7", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "LT", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "PUSH [tag]", + "source": 5, + "value": "703" + }, + { + "begin": 31581, + "end": 31593, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "PUSH [tag]", + "source": 5, + "value": "704" + }, + { + "begin": 31581, + "end": 31593, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31581, + "end": 31593, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "tag", + "source": 5, + "value": "704" + }, + { + "begin": 31581, + "end": 31593, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "tag", + "source": 5, + "value": "703" + }, + { + "begin": 31581, + "end": 31593, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31581, + "end": 31593, + "name": "MUL", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31581, + "end": 31593, + "name": "ADD", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "ADD", + "source": 5 + }, + { + "begin": 31581, + "end": 31593, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31573, + "end": 31593, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31573, + "end": 31593, + "name": "AND", + "source": 5 + }, + { + "begin": 31573, + "end": 31578, + "name": "DUP6", + "source": 5 + }, + { + "begin": 31573, + "end": 31593, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31573, + "end": 31593, + "name": "AND", + "source": 5 + }, + { + "begin": 31573, + "end": 31593, + "name": "GT", + "source": 5 + }, + { + "begin": 31569, + "end": 31685, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31569, + "end": 31685, + "name": "PUSH [tag]", + "source": 5, + "value": "705" + }, + { + "begin": 31569, + "end": 31685, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31644, + "end": 31654, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31656, + "end": 31665, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "POP", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "POP", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "POP", + "source": 5 + }, + { + "begin": 31617, + "end": 31666, + "name": "POP", + "source": 5 + }, + { + "begin": 31569, + "end": 31685, + "name": "tag", + "source": 5, + "value": "705" + }, + { + "begin": 31569, + "end": 31685, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31703, + "end": 31721, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31724, + "end": 31733, + "name": "DUP8", + "source": 5 + }, + { + "begin": 31734, + "end": 31735, + "name": "DUP8", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "LT", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "PUSH [tag]", + "source": 5, + "value": "706" + }, + { + "begin": 31724, + "end": 31736, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "PUSH [tag]", + "source": 5, + "value": "707" + }, + { + "begin": 31724, + "end": 31736, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31724, + "end": 31736, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "tag", + "source": 5, + "value": "707" + }, + { + "begin": 31724, + "end": 31736, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "tag", + "source": 5, + "value": "706" + }, + { + "begin": 31724, + "end": 31736, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31724, + "end": 31736, + "name": "MUL", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31724, + "end": 31736, + "name": "ADD", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "ADD", + "source": 5 + }, + { + "begin": 31724, + "end": 31736, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31703, + "end": 31736, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31703, + "end": 31736, + "name": "POP", + "source": 5 + }, + { + "begin": 31781, + "end": 31826, + "name": "PUSH [tag]", + "source": 5, + "value": "708" + }, + { + "begin": 31804, + "end": 31813, + "name": "DUP4", + "source": 5 + }, + { + "begin": 31815, + "end": 31825, + "name": "DUP4", + "source": 5 + }, + { + "begin": 31781, + "end": 31791, + "name": "DUP4", + "source": 5 + }, + { + "begin": 31781, + "end": 31803, + "name": "PUSH [tag]", + "source": 5, + "value": "709" + }, + { + "begin": 31781, + "end": 31803, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31781, + "end": 31826, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 31781, + "end": 31826, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31781, + "end": 31826, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31781, + "end": 31826, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 31781, + "end": 31826, + "name": "AND", + "source": 5 + }, + { + "begin": 31781, + "end": 31826, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31781, + "end": 31826, + "name": "tag", + "source": 5, + "value": "708" + }, + { + "begin": 31781, + "end": 31826, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31754, + "end": 31827, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31754, + "end": 31827, + "name": "AND", + "source": 5 + }, + { + "begin": 31754, + "end": 31763, + "name": "DUP9", + "source": 5 + }, + { + "begin": 31768, + "end": 31769, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 31764, + "end": 31765, + "name": "DUP10", + "source": 5 + }, + { + "begin": 31764, + "end": 31769, + "name": "PUSH [tag]", + "source": 5, + "value": "710" + }, + { + "begin": 31764, + "end": 31769, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31764, + "end": 31769, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31764, + "end": 31769, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 31764, + "end": 31769, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31764, + "end": 31769, + "name": "tag", + "source": 5, + "value": "710" + }, + { + "begin": 31764, + "end": 31769, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "LT", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "PUSH [tag]", + "source": 5, + "value": "711" + }, + { + "begin": 31754, + "end": 31770, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "PUSH [tag]", + "source": 5, + "value": "712" + }, + { + "begin": 31754, + "end": 31770, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31754, + "end": 31770, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "tag", + "source": 5, + "value": "712" + }, + { + "begin": 31754, + "end": 31770, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "tag", + "source": 5, + "value": "711" + }, + { + "begin": 31754, + "end": 31770, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31754, + "end": 31770, + "name": "MUL", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31754, + "end": 31770, + "name": "ADD", + "source": 5 + }, + { + "begin": 31754, + "end": 31770, + "name": "ADD", + "source": 5 + }, + { + "begin": 31754, + "end": 31827, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31754, + "end": 31827, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31754, + "end": 31827, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31754, + "end": 31827, + "name": "POP", + "source": 5 + }, + { + "begin": 31754, + "end": 31827, + "name": "POP", + "source": 5 + }, + { + "begin": 31455, + "end": 31842, + "name": "POP", + "source": 5 + }, + { + "begin": 31455, + "end": 31842, + "name": "POP", + "source": 5 + }, + { + "begin": 31455, + "end": 31842, + "name": "POP", + "source": 5 + }, + { + "begin": 31428, + "end": 32007, + "name": "PUSH [tag]", + "source": 5, + "value": "713" + }, + { + "begin": 31428, + "end": 32007, + "name": "JUMP", + "source": 5 + }, + { + "begin": 31428, + "end": 32007, + "name": "tag", + "source": 5, + "value": "699" + }, + { + "begin": 31428, + "end": 32007, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31909, + "end": 31992, + "name": "PUSH [tag]", + "source": 5, + "value": "714" + }, + { + "begin": 31927, + "end": 31931, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31942, + "end": 31951, + "name": "DUP7", + "source": 5 + }, + { + "begin": 31952, + "end": 31953, + "name": "DUP7", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "LT", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "PUSH [tag]", + "source": 5, + "value": "715" + }, + { + "begin": 31942, + "end": 31954, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "PUSH [tag]", + "source": 5, + "value": "716" + }, + { + "begin": 31942, + "end": 31954, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31942, + "end": 31954, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "tag", + "source": 5, + "value": "716" + }, + { + "begin": 31942, + "end": 31954, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "tag", + "source": 5, + "value": "715" + }, + { + "begin": 31942, + "end": 31954, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31942, + "end": 31954, + "name": "MUL", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31942, + "end": 31954, + "name": "ADD", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "ADD", + "source": 5 + }, + { + "begin": 31942, + "end": 31954, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31986, + "end": 31991, + "name": "DUP6", + "source": 5 + }, + { + "begin": 31957, + "end": 31991, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31957, + "end": 31991, + "name": "AND", + "source": 5 + }, + { + "begin": 31965, + "end": 31969, + "name": "DUP5", + "source": 5 + }, + { + "begin": 31957, + "end": 31980, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31957, + "end": 31980, + "name": "AND", + "source": 5 + }, + { + "begin": 31957, + "end": 31980, + "name": "PUSH", + "source": 5, + "value": "5E8746D" + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31957, + "end": 31982, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 31957, + "end": 31982, + "name": "AND", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 31957, + "end": 31982, + "name": "SHL", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 31957, + "end": 31982, + "name": "ADD", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31957, + "end": 31982, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP4", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "SUB", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP7", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "GAS", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH [tag]", + "source": 5, + "value": "718" + }, + { + "begin": 31957, + "end": 31982, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 31957, + "end": 31982, + "name": "REVERT", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "tag", + "source": 5, + "value": "718" + }, + { + "begin": 31957, + "end": 31982, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "POP", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "POP", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "POP", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "POP", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31957, + "end": 31982, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 31957, + "end": 31982, + "name": "NOT", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "ADD", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "AND", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "ADD", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 31957, + "end": 31982, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "POP", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "ADD", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH [tag]", + "source": 5, + "value": "719" + }, + { + "begin": 31957, + "end": 31982, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 31957, + "end": 31982, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31957, + "end": 31982, + "name": "tag", + "source": 5, + "value": "719" + }, + { + "begin": 31957, + "end": 31982, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31957, + "end": 31991, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31957, + "end": 31991, + "name": "AND", + "source": 5 + }, + { + "begin": 31957, + "end": 31991, + "name": "EQ", + "source": 5 + }, + { + "begin": 31909, + "end": 31918, + "name": "PUSH [tag]", + "source": 5, + "value": "109" + }, + { + "begin": 31909, + "end": 31992, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31909, + "end": 31992, + "name": "tag", + "source": 5, + "value": "714" + }, + { + "begin": 31909, + "end": 31992, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "DUP3", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 31866, + "end": 31992, + "name": "AND", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "POP", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "POP", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "POP", + "source": 5 + }, + { + "begin": 31867, + "end": 31876, + "name": "DUP6", + "source": 5 + }, + { + "begin": 31881, + "end": 31882, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 31877, + "end": 31878, + "name": "DUP7", + "source": 5 + }, + { + "begin": 31877, + "end": 31882, + "name": "PUSH [tag]", + "source": 5, + "value": "720" + }, + { + "begin": 31877, + "end": 31882, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31877, + "end": 31882, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31877, + "end": 31882, + "name": "PUSH [tag]", + "source": 5, + "value": "202" + }, + { + "begin": 31877, + "end": 31882, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31877, + "end": 31882, + "name": "tag", + "source": 5, + "value": "720" + }, + { + "begin": 31877, + "end": 31882, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "LT", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "PUSH [tag]", + "source": 5, + "value": "721" + }, + { + "begin": 31867, + "end": 31883, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "PUSH [tag]", + "source": 5, + "value": "722" + }, + { + "begin": 31867, + "end": 31883, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 31867, + "end": 31883, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "tag", + "source": 5, + "value": "722" + }, + { + "begin": 31867, + "end": 31883, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "tag", + "source": 5, + "value": "721" + }, + { + "begin": 31867, + "end": 31883, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31867, + "end": 31883, + "name": "MUL", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 31867, + "end": 31883, + "name": "ADD", + "source": 5 + }, + { + "begin": 31867, + "end": 31883, + "name": "ADD", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "DUP2", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "POP", + "source": 5 + }, + { + "begin": 31866, + "end": 31992, + "name": "POP", + "source": 5 + }, + { + "begin": 31428, + "end": 32007, + "name": "tag", + "source": 5, + "value": "713" + }, + { + "begin": 31428, + "end": 32007, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31280, + "end": 32017, + "name": "POP", + "source": 5 + }, + { + "begin": 31280, + "end": 32017, + "name": "POP", + "source": 5 + }, + { + "begin": 31280, + "end": 32017, + "name": "POP", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "DUP1", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "PUSH [tag]", + "source": 5, + "value": "723" + }, + { + "begin": 31275, + "end": 31278, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "PUSH [tag]", + "source": 5, + "value": "724" + }, + { + "begin": 31275, + "end": 31278, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "tag", + "source": 5, + "value": "723" + }, + { + "begin": 31275, + "end": 31278, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "POP", + "source": 5 + }, + { + "begin": 31275, + "end": 31278, + "name": "POP", + "source": 5 + }, + { + "begin": 31236, + "end": 32017, + "name": "PUSH [tag]", + "source": 5, + "value": "683" + }, + { + "begin": 31236, + "end": 32017, + "name": "JUMP", + "source": 5 + }, + { + "begin": 31236, + "end": 32017, + "name": "tag", + "source": 5, + "value": "684" + }, + { + "begin": 31236, + "end": 32017, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 31236, + "end": 32017, + "name": "POP", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "name": "POP", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "name": "POP", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "name": "POP", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "name": "POP", + "source": 5 + }, + { + "begin": 30849, + "end": 32023, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 42803, + "end": 43010, + "name": "tag", + "source": 5, + "value": "236" + }, + { + "begin": 42803, + "end": 43010, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42899, + "end": 42900, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42889, + "end": 42895, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42889, + "end": 42900, + "name": "SUB", + "source": 5 + }, + { + "begin": 42885, + "end": 42909, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 42902, + "end": 42909, + "name": "PUSH [tag]", + "source": 5, + "value": "725" + }, + { + "begin": 42885, + "end": 42909, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 42919, + "end": 42927, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 42919, + "end": 42935, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 42919, + "end": 42935, + "name": "AND", + "source": 5 + }, + { + "begin": 42919, + "end": 42935, + "name": "PUSH", + "source": 5, + "value": "D0E30DB0" + }, + { + "begin": 42943, + "end": 42949, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42919, + "end": 42952, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 42919, + "end": 42952, + "name": "AND", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 42919, + "end": 42952, + "name": "SHL", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 42919, + "end": 42952, + "name": "ADD", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42919, + "end": 42952, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP4", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "SUB", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP6", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP9", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH [tag]", + "source": 5, + "value": "727" + }, + { + "begin": 42919, + "end": 42952, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "REVERT", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "tag", + "source": 5, + "value": "727" + }, + { + "begin": 42919, + "end": 42952, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "POP", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "GAS", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "CALL", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH [tag]", + "source": 5, + "value": "729" + }, + { + "begin": 42919, + "end": 42952, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42919, + "end": 42952, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42919, + "end": 42952, + "name": "REVERT", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "tag", + "source": 5, + "value": "729" + }, + { + "begin": 42919, + "end": 42952, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "POP", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "POP", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "POP", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "POP", + "source": 5 + }, + { + "begin": 42919, + "end": 42952, + "name": "POP", + "source": 5 + }, + { + "begin": 42962, + "end": 43003, + "name": "PUSH [tag]", + "source": 5, + "value": "730" + }, + { + "begin": 42992, + "end": 42994, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42996, + "end": 43002, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42969, + "end": 42977, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "593" + }, + { + "begin": 42962, + "end": 42991, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 42962, + "end": 42991, + "name": "AND", + "source": 5 + }, + { + "begin": 42962, + "end": 42991, + "name": "PUSH [tag]", + "source": 5, + "value": "350" + }, + { + "begin": 42962, + "end": 42991, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42962, + "end": 43003, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 42962, + "end": 43003, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 42962, + "end": 43003, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42962, + "end": 43003, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 42962, + "end": 43003, + "name": "AND", + "source": 5 + }, + { + "begin": 42962, + "end": 43003, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 42962, + "end": 43003, + "name": "tag", + "source": 5, + "value": "730" + }, + { + "begin": 42962, + "end": 43003, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42803, + "end": 43010, + "name": "tag", + "source": 5, + "value": "725" + }, + { + "begin": 42803, + "end": 43010, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42803, + "end": 43010, + "name": "POP", + "source": 5 + }, + { + "begin": 42803, + "end": 43010, + "name": "POP", + "source": 5 + }, + { + "begin": 42803, + "end": 43010, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "tag", + "source": 5, + "value": "238" + }, + { + "begin": 35665, + "end": 37064, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 35881, + "end": 35898, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 35910, + "end": 35922, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35932, + "end": 35949, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 35959, + "end": 35971, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35981, + "end": 35996, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36007, + "end": 36023, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36026, + "end": 36035, + "name": "DUP9", + "source": 5 + }, + { + "begin": 36036, + "end": 36037, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36026, + "end": 36038, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "LT", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "PUSH [tag]", + "source": 5, + "value": "732" + }, + { + "begin": 36026, + "end": 36038, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "PUSH [tag]", + "source": 5, + "value": "733" + }, + { + "begin": 36026, + "end": 36038, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 36026, + "end": 36038, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "tag", + "source": 5, + "value": "733" + }, + { + "begin": 36026, + "end": 36038, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "tag", + "source": 5, + "value": "732" + }, + { + "begin": 36026, + "end": 36038, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36026, + "end": 36038, + "name": "MUL", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36026, + "end": 36038, + "name": "ADD", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "ADD", + "source": 5 + }, + { + "begin": 36026, + "end": 36038, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36007, + "end": 36038, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36007, + "end": 36038, + "name": "POP", + "source": 5 + }, + { + "begin": 36078, + "end": 36087, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36073, + "end": 37048, + "name": "tag", + "source": 5, + "value": "734" + }, + { + "begin": 36073, + "end": 37048, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36093, + "end": 36098, + "name": "DUP12", + "source": 5 + }, + { + "begin": 36093, + "end": 36105, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36089, + "end": 36090, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36089, + "end": 36105, + "name": "LT", + "source": 5 + }, + { + "begin": 36073, + "end": 37048, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36073, + "end": 37048, + "name": "PUSH [tag]", + "source": 5, + "value": "735" + }, + { + "begin": 36073, + "end": 37048, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36137, + "end": 36142, + "name": "DUP12", + "source": 5 + }, + { + "begin": 36143, + "end": 36144, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "LT", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "PUSH [tag]", + "source": 5, + "value": "737" + }, + { + "begin": 36137, + "end": 36145, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "PUSH [tag]", + "source": 5, + "value": "738" + }, + { + "begin": 36137, + "end": 36145, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 36137, + "end": 36145, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "tag", + "source": 5, + "value": "738" + }, + { + "begin": 36137, + "end": 36145, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "tag", + "source": 5, + "value": "737" + }, + { + "begin": 36137, + "end": 36145, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36137, + "end": 36145, + "name": "MUL", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36137, + "end": 36145, + "name": "ADD", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "ADD", + "source": 5 + }, + { + "begin": 36137, + "end": 36145, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36130, + "end": 36145, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 36130, + "end": 36145, + "name": "POP", + "source": 5 + }, + { + "begin": 36173, + "end": 36181, + "name": "DUP11", + "source": 5 + }, + { + "begin": 36182, + "end": 36183, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "LT", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "PUSH [tag]", + "source": 5, + "value": "739" + }, + { + "begin": 36173, + "end": 36184, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "PUSH [tag]", + "source": 5, + "value": "740" + }, + { + "begin": 36173, + "end": 36184, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 36173, + "end": 36184, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "tag", + "source": 5, + "value": "740" + }, + { + "begin": 36173, + "end": 36184, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "tag", + "source": 5, + "value": "739" + }, + { + "begin": 36173, + "end": 36184, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36173, + "end": 36184, + "name": "MUL", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36173, + "end": 36184, + "name": "ADD", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "ADD", + "source": 5 + }, + { + "begin": 36173, + "end": 36184, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36163, + "end": 36184, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 36163, + "end": 36184, + "name": "POP", + "source": 5 + }, + { + "begin": 36211, + "end": 36220, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36203, + "end": 36220, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 36203, + "end": 36220, + "name": "POP", + "source": 5 + }, + { + "begin": 36250, + "end": 36259, + "name": "DUP10", + "source": 5 + }, + { + "begin": 36264, + "end": 36265, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 36260, + "end": 36261, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36260, + "end": 36265, + "name": "ADD", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "LT", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "PUSH [tag]", + "source": 5, + "value": "741" + }, + { + "begin": 36250, + "end": 36266, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "PUSH [tag]", + "source": 5, + "value": "742" + }, + { + "begin": 36250, + "end": 36266, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 36250, + "end": 36266, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "tag", + "source": 5, + "value": "742" + }, + { + "begin": 36250, + "end": 36266, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "tag", + "source": 5, + "value": "741" + }, + { + "begin": 36250, + "end": 36266, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36250, + "end": 36266, + "name": "MUL", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36250, + "end": 36266, + "name": "ADD", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "ADD", + "source": 5 + }, + { + "begin": 36250, + "end": 36266, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36238, + "end": 36266, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36238, + "end": 36266, + "name": "POP", + "source": 5 + }, + { + "begin": 36306, + "end": 36311, + "name": "DUP12", + "source": 5 + }, + { + "begin": 36306, + "end": 36318, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36301, + "end": 36302, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 36297, + "end": 36298, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36297, + "end": 36302, + "name": "ADD", + "source": 5 + }, + { + "begin": 36297, + "end": 36318, + "name": "EQ", + "source": 5 + }, + { + "begin": 36297, + "end": 36338, + "name": "PUSH [tag]", + "source": 5, + "value": "743" + }, + { + "begin": 36297, + "end": 36338, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36326, + "end": 36331, + "name": "DUP12", + "source": 5 + }, + { + "begin": 36336, + "end": 36337, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 36332, + "end": 36333, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36332, + "end": 36337, + "name": "ADD", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "LT", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "PUSH [tag]", + "source": 5, + "value": "744" + }, + { + "begin": 36326, + "end": 36338, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "PUSH [tag]", + "source": 5, + "value": "745" + }, + { + "begin": 36326, + "end": 36338, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 36326, + "end": 36338, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "tag", + "source": 5, + "value": "745" + }, + { + "begin": 36326, + "end": 36338, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "tag", + "source": 5, + "value": "744" + }, + { + "begin": 36326, + "end": 36338, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36326, + "end": 36338, + "name": "MUL", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36326, + "end": 36338, + "name": "ADD", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "ADD", + "source": 5 + }, + { + "begin": 36326, + "end": 36338, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36297, + "end": 36338, + "name": "PUSH [tag]", + "source": 5, + "value": "746" + }, + { + "begin": 36297, + "end": 36338, + "name": "JUMP", + "source": 5 + }, + { + "begin": 36297, + "end": 36338, + "name": "tag", + "source": 5, + "value": "743" + }, + { + "begin": 36297, + "end": 36338, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36321, + "end": 36323, + "name": "DUP8", + "source": 5 + }, + { + "begin": 36297, + "end": 36338, + "name": "tag", + "source": 5, + "value": "746" + }, + { + "begin": 36297, + "end": 36338, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36285, + "end": 36338, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 36285, + "end": 36338, + "name": "POP", + "source": 5 + }, + { + "begin": 36372, + "end": 36382, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 36361, + "end": 36382, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "GT", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH [tag]", + "source": 5, + "value": "747" + }, + { + "begin": 36361, + "end": 36382, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH [tag]", + "source": 5, + "value": "748" + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 36361, + "end": 36382, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "tag", + "source": 5, + "value": "748" + }, + { + "begin": 36361, + "end": 36382, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "tag", + "source": 5, + "value": "747" + }, + { + "begin": 36361, + "end": 36382, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36361, + "end": 36368, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 36361, + "end": 36382, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "GT", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH [tag]", + "source": 5, + "value": "749" + }, + { + "begin": 36361, + "end": 36382, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH [tag]", + "source": 5, + "value": "750" + }, + { + "begin": 36361, + "end": 36382, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 36361, + "end": 36382, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "tag", + "source": 5, + "value": "750" + }, + { + "begin": 36361, + "end": 36382, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "tag", + "source": 5, + "value": "749" + }, + { + "begin": 36361, + "end": 36382, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36361, + "end": 36382, + "name": "SUB", + "source": 5 + }, + { + "begin": 36357, + "end": 37034, + "name": "PUSH [tag]", + "source": 5, + "value": "751" + }, + { + "begin": 36357, + "end": 37034, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36418, + "end": 36427, + "name": "DUP9", + "source": 5 + }, + { + "begin": 36432, + "end": 36433, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 36428, + "end": 36429, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36428, + "end": 36433, + "name": "ADD", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "LT", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "PUSH [tag]", + "source": 5, + "value": "752" + }, + { + "begin": 36418, + "end": 36434, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "PUSH [tag]", + "source": 5, + "value": "753" + }, + { + "begin": 36418, + "end": 36434, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 36418, + "end": 36434, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "tag", + "source": 5, + "value": "753" + }, + { + "begin": 36418, + "end": 36434, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "tag", + "source": 5, + "value": "752" + }, + { + "begin": 36418, + "end": 36434, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36418, + "end": 36434, + "name": "MUL", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36418, + "end": 36434, + "name": "ADD", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "ADD", + "source": 5 + }, + { + "begin": 36418, + "end": 36434, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36406, + "end": 36434, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 36406, + "end": 36434, + "name": "POP", + "source": 5 + }, + { + "begin": 36468, + "end": 36477, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36460, + "end": 36477, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36460, + "end": 36477, + "name": "AND", + "source": 5 + }, + { + "begin": 36460, + "end": 36465, + "name": "DUP7", + "source": 5 + }, + { + "begin": 36460, + "end": 36477, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36460, + "end": 36477, + "name": "AND", + "source": 5 + }, + { + "begin": 36460, + "end": 36477, + "name": "LT", + "source": 5 + }, + { + "begin": 36456, + "end": 36693, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36456, + "end": 36693, + "name": "PUSH [tag]", + "source": 5, + "value": "754" + }, + { + "begin": 36456, + "end": 36693, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36521, + "end": 36525, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36505, + "end": 36531, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36505, + "end": 36531, + "name": "AND", + "source": 5 + }, + { + "begin": 36505, + "end": 36531, + "name": "PUSH", + "source": 5, + "value": "22C0D9F" + }, + { + "begin": 36532, + "end": 36533, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36535, + "end": 36544, + "name": "DUP10", + "source": 5 + }, + { + "begin": 36546, + "end": 36555, + "name": "DUP9", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36505, + "end": 36560, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP5", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 36505, + "end": 36560, + "name": "AND", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 36505, + "end": 36560, + "name": "SHL", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 36505, + "end": 36560, + "name": "ADD", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH [tag]", + "source": 5, + "value": "755" + }, + { + "begin": 36505, + "end": 36560, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH [tag]", + "source": 5, + "value": "645" + }, + { + "begin": 36505, + "end": 36560, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "tag", + "source": 5, + "value": "755" + }, + { + "begin": 36505, + "end": 36560, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36505, + "end": 36560, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "SUB", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP8", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH [tag]", + "source": 5, + "value": "756" + }, + { + "begin": 36505, + "end": 36560, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "REVERT", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "tag", + "source": 5, + "value": "756" + }, + { + "begin": 36505, + "end": 36560, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "POP", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "GAS", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "CALL", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH [tag]", + "source": 5, + "value": "758" + }, + { + "begin": 36505, + "end": 36560, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36505, + "end": 36560, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36505, + "end": 36560, + "name": "REVERT", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "tag", + "source": 5, + "value": "758" + }, + { + "begin": 36505, + "end": 36560, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "POP", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "POP", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "POP", + "source": 5 + }, + { + "begin": 36505, + "end": 36560, + "name": "POP", + "source": 5 + }, + { + "begin": 36456, + "end": 36693, + "name": "PUSH [tag]", + "source": 5, + "value": "759" + }, + { + "begin": 36456, + "end": 36693, + "name": "JUMP", + "source": 5 + }, + { + "begin": 36456, + "end": 36693, + "name": "tag", + "source": 5, + "value": "754" + }, + { + "begin": 36456, + "end": 36693, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36631, + "end": 36635, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36615, + "end": 36641, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36615, + "end": 36641, + "name": "AND", + "source": 5 + }, + { + "begin": 36615, + "end": 36641, + "name": "PUSH", + "source": 5, + "value": "22C0D9F" + }, + { + "begin": 36642, + "end": 36651, + "name": "DUP9", + "source": 5 + }, + { + "begin": 36653, + "end": 36654, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36656, + "end": 36665, + "name": "DUP9", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36615, + "end": 36670, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP5", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 36615, + "end": 36670, + "name": "AND", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 36615, + "end": 36670, + "name": "SHL", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 36615, + "end": 36670, + "name": "ADD", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH [tag]", + "source": 5, + "value": "760" + }, + { + "begin": 36615, + "end": 36670, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH [tag]", + "source": 5, + "value": "656" + }, + { + "begin": 36615, + "end": 36670, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "tag", + "source": 5, + "value": "760" + }, + { + "begin": 36615, + "end": 36670, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36615, + "end": 36670, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "SUB", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP8", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH [tag]", + "source": 5, + "value": "761" + }, + { + "begin": 36615, + "end": 36670, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "REVERT", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "tag", + "source": 5, + "value": "761" + }, + { + "begin": 36615, + "end": 36670, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "POP", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "GAS", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "CALL", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH [tag]", + "source": 5, + "value": "763" + }, + { + "begin": 36615, + "end": 36670, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36615, + "end": 36670, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36615, + "end": 36670, + "name": "REVERT", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "tag", + "source": 5, + "value": "763" + }, + { + "begin": 36615, + "end": 36670, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "POP", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "POP", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "POP", + "source": 5 + }, + { + "begin": 36615, + "end": 36670, + "name": "POP", + "source": 5 + }, + { + "begin": 36456, + "end": 36693, + "name": "tag", + "source": 5, + "value": "759" + }, + { + "begin": 36456, + "end": 36693, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36357, + "end": 37034, + "name": "PUSH [tag]", + "source": 5, + "value": "764" + }, + { + "begin": 36357, + "end": 37034, + "name": "JUMP", + "source": 5 + }, + { + "begin": 36357, + "end": 37034, + "name": "tag", + "source": 5, + "value": "751" + }, + { + "begin": 36357, + "end": 37034, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36739, + "end": 36752, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36776, + "end": 36780, + "name": "DUP5", + "source": 5 + }, + { + "begin": 36768, + "end": 36791, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36768, + "end": 36791, + "name": "AND", + "source": 5 + }, + { + "begin": 36768, + "end": 36791, + "name": "PUSH", + "source": 5, + "value": "DA10610C" + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36768, + "end": 36793, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 36768, + "end": 36793, + "name": "AND", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 36768, + "end": 36793, + "name": "SHL", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 36768, + "end": 36793, + "name": "ADD", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36768, + "end": 36793, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "SUB", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP7", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "GAS", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH [tag]", + "source": 5, + "value": "766" + }, + { + "begin": 36768, + "end": 36793, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36768, + "end": 36793, + "name": "REVERT", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "tag", + "source": 5, + "value": "766" + }, + { + "begin": 36768, + "end": 36793, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "POP", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "POP", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "POP", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "POP", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36768, + "end": 36793, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 36768, + "end": 36793, + "name": "NOT", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "ADD", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "AND", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "ADD", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36768, + "end": 36793, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "POP", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "ADD", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH [tag]", + "source": 5, + "value": "767" + }, + { + "begin": 36768, + "end": 36793, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 36768, + "end": 36793, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36768, + "end": 36793, + "name": "tag", + "source": 5, + "value": "767" + }, + { + "begin": 36768, + "end": 36793, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36755, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36755, + "end": 36793, + "name": "AND", + "source": 5 + }, + { + "begin": 36755, + "end": 36764, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36755, + "end": 36793, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36755, + "end": 36793, + "name": "AND", + "source": 5 + }, + { + "begin": 36755, + "end": 36793, + "name": "EQ", + "source": 5 + }, + { + "begin": 36739, + "end": 36793, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36739, + "end": 36793, + "name": "POP", + "source": 5 + }, + { + "begin": 36817, + "end": 36835, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36837, + "end": 36855, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36907, + "name": "PUSH [tag]", + "source": 5, + "value": "768" + }, + { + "begin": 36867, + "end": 36871, + "name": "DUP8", + "source": 5 + }, + { + "begin": 36859, + "end": 36877, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36859, + "end": 36877, + "name": "AND", + "source": 5 + }, + { + "begin": 36859, + "end": 36877, + "name": "PUSH", + "source": 5, + "value": "53C059A0" + }, + { + "begin": 36878, + "end": 36886, + "name": "DUP6", + "source": 5 + }, + { + "begin": 36888, + "end": 36897, + "name": "DUP12", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36859, + "end": 36898, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 36859, + "end": 36898, + "name": "AND", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 36859, + "end": 36898, + "name": "SHL", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 36859, + "end": 36898, + "name": "ADD", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH [tag]", + "source": 5, + "value": "769" + }, + { + "begin": 36859, + "end": 36898, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH [tag]", + "source": 5, + "value": "665" + }, + { + "begin": 36859, + "end": 36898, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "tag", + "source": 5, + "value": "769" + }, + { + "begin": 36859, + "end": 36898, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36859, + "end": 36898, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP4", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "SUB", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP8", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "GAS", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "CALL", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH [tag]", + "source": 5, + "value": "771" + }, + { + "begin": 36859, + "end": 36898, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 36859, + "end": 36898, + "name": "REVERT", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "tag", + "source": 5, + "value": "771" + }, + { + "begin": 36859, + "end": 36898, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "POP", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "POP", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "POP", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "POP", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36859, + "end": 36898, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 36859, + "end": 36898, + "name": "NOT", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "ADD", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "AND", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "ADD", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 36859, + "end": 36898, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "POP", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "ADD", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH [tag]", + "source": 5, + "value": "772" + }, + { + "begin": 36859, + "end": 36898, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "PUSH [tag]", + "source": 5, + "value": "669" + }, + { + "begin": 36859, + "end": 36898, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36859, + "end": 36898, + "name": "tag", + "source": 5, + "value": "772" + }, + { + "begin": 36859, + "end": 36898, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36859, + "end": 36905, + "name": "PUSH [tag]", + "source": 5, + "value": "773" + }, + { + "begin": 36859, + "end": 36907, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 36859, + "end": 36907, + "name": "tag", + "source": 5, + "value": "768" + }, + { + "begin": 36859, + "end": 36907, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36816, + "end": 36907, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36816, + "end": 36907, + "name": "AND", + "source": 5 + }, + { + "begin": 36816, + "end": 36907, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36816, + "end": 36907, + "name": "POP", + "source": 5 + }, + { + "begin": 36816, + "end": 36907, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 36816, + "end": 36907, + "name": "AND", + "source": 5 + }, + { + "begin": 36816, + "end": 36907, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 36816, + "end": 36907, + "name": "POP", + "source": 5 + }, + { + "begin": 36934, + "end": 36942, + "name": "DUP3", + "source": 5 + }, + { + "begin": 36930, + "end": 37015, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 36930, + "end": 37015, + "name": "PUSH [tag]", + "source": 5, + "value": "774" + }, + { + "begin": 36930, + "end": 37015, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 36956, + "end": 36966, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36944, + "end": 36966, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 36944, + "end": 36966, + "name": "POP", + "source": 5 + }, + { + "begin": 36930, + "end": 37015, + "name": "PUSH [tag]", + "source": 5, + "value": "775" + }, + { + "begin": 36930, + "end": 37015, + "name": "JUMP", + "source": 5 + }, + { + "begin": 36930, + "end": 37015, + "name": "tag", + "source": 5, + "value": "774" + }, + { + "begin": 36930, + "end": 37015, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 37005, + "end": 37015, + "name": "DUP2", + "source": 5 + }, + { + "begin": 36993, + "end": 37015, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 36993, + "end": 37015, + "name": "POP", + "source": 5 + }, + { + "begin": 36930, + "end": 37015, + "name": "tag", + "source": 5, + "value": "775" + }, + { + "begin": 36930, + "end": 37015, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36717, + "end": 37034, + "name": "POP", + "source": 5 + }, + { + "begin": 36717, + "end": 37034, + "name": "POP", + "source": 5 + }, + { + "begin": 36717, + "end": 37034, + "name": "POP", + "source": 5 + }, + { + "begin": 36357, + "end": 37034, + "name": "tag", + "source": 5, + "value": "764" + }, + { + "begin": 36357, + "end": 37034, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36107, + "end": 36110, + "name": "DUP1", + "source": 5 + }, + { + "begin": 36107, + "end": 36110, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 36107, + "end": 36110, + "name": "ADD", + "source": 5 + }, + { + "begin": 36107, + "end": 36110, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 36107, + "end": 36110, + "name": "POP", + "source": 5 + }, + { + "begin": 36073, + "end": 37048, + "name": "PUSH [tag]", + "source": 5, + "value": "734" + }, + { + "begin": 36073, + "end": 37048, + "name": "JUMP", + "source": 5 + }, + { + "begin": 36073, + "end": 37048, + "name": "tag", + "source": 5, + "value": "735" + }, + { + "begin": 36073, + "end": 37048, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 36073, + "end": 37048, + "name": "POP", + "source": 5 + }, + { + "begin": 35900, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35900, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35900, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35900, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35900, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "name": "POP", + "source": 5 + }, + { + "begin": 35665, + "end": 37064, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 42377, + "end": 42608, + "name": "tag", + "source": 5, + "value": "248" + }, + { + "begin": 42377, + "end": 42608, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42466, + "end": 42467, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42456, + "end": 42462, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42456, + "end": 42467, + "name": "SUB", + "source": 5 + }, + { + "begin": 42452, + "end": 42476, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 42469, + "end": 42476, + "name": "PUSH [tag]", + "source": 5, + "value": "776" + }, + { + "begin": 42452, + "end": 42476, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 42487, + "end": 42499, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42504, + "end": 42506, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42504, + "end": 42511, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 42504, + "end": 42511, + "name": "AND", + "source": 5 + }, + { + "begin": 42519, + "end": 42525, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42504, + "end": 42530, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH [tag]", + "source": 5, + "value": "778" + }, + { + "begin": 42504, + "end": 42530, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH [tag]", + "source": 5, + "value": "779" + }, + { + "begin": 42504, + "end": 42530, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "tag", + "source": 5, + "value": "778" + }, + { + "begin": 42504, + "end": 42530, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42504, + "end": 42530, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP4", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "SUB", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP6", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP8", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "GAS", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "CALL", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "EQ", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH [tag]", + "source": 5, + "value": "782" + }, + { + "begin": 42504, + "end": 42530, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42504, + "end": 42530, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 42504, + "end": 42530, + "name": "NOT", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "3F" + }, + { + "begin": 42504, + "end": 42530, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "ADD", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "AND", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "ADD", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42504, + "end": 42530, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 42504, + "end": 42530, + "name": "DUP5", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "ADD", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH [tag]", + "source": 5, + "value": "781" + }, + { + "begin": 42504, + "end": 42530, + "name": "JUMP", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "tag", + "source": 5, + "value": "782" + }, + { + "begin": 42504, + "end": 42530, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 42504, + "end": 42530, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "tag", + "source": 5, + "value": "781" + }, + { + "begin": 42504, + "end": 42530, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42504, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42486, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42486, + "end": 42530, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42486, + "end": 42530, + "name": "POP", + "source": 5 + }, + { + "begin": 42545, + "end": 42552, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42540, + "end": 42601, + "name": "PUSH [tag]", + "source": 5, + "value": "783" + }, + { + "begin": 42540, + "end": 42601, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 42590, + "end": 42592, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42594, + "end": 42600, + "name": "DUP3", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42561, + "end": 42601, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "PUSH", + "source": 5, + "value": "47B96F7000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 42561, + "end": 42601, + "name": "DUP2", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 42561, + "end": 42601, + "name": "ADD", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "PUSH [tag]", + "source": 5, + "value": "784" + }, + { + "begin": 42561, + "end": 42601, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "PUSH [tag]", + "source": 5, + "value": "785" + }, + { + "begin": 42561, + "end": 42601, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "tag", + "source": 5, + "value": "784" + }, + { + "begin": 42561, + "end": 42601, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 42561, + "end": 42601, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "DUP1", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "SUB", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 42561, + "end": 42601, + "name": "REVERT", + "source": 5 + }, + { + "begin": 42540, + "end": 42601, + "name": "tag", + "source": 5, + "value": "783" + }, + { + "begin": 42540, + "end": 42601, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42442, + "end": 42608, + "name": "POP", + "source": 5 + }, + { + "begin": 42377, + "end": 42608, + "name": "tag", + "source": 5, + "value": "776" + }, + { + "begin": 42377, + "end": 42608, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 42377, + "end": 42608, + "name": "POP", + "source": 5 + }, + { + "begin": 42377, + "end": 42608, + "name": "POP", + "source": 5 + }, + { + "begin": 42377, + "end": 42608, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "tag", + "source": 5, + "value": "265" + }, + { + "begin": 33628, + "end": 35255, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33834, + "end": 33851, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 33863, + "end": 33875, + "name": "DUP1", + "source": 5 + }, + { + "begin": 33885, + "end": 33900, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 33910, + "end": 33927, + "name": "DUP1", + "source": 5 + }, + { + "begin": 33937, + "end": 33949, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 33960, + "end": 33976, + "name": "DUP1", + "source": 5 + }, + { + "begin": 33979, + "end": 33988, + "name": "DUP8", + "source": 5 + }, + { + "begin": 33989, + "end": 33990, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 33979, + "end": 33991, + "name": "DUP2", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "DUP2", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "LT", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "PUSH [tag]", + "source": 5, + "value": "787" + }, + { + "begin": 33979, + "end": 33991, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "PUSH [tag]", + "source": 5, + "value": "788" + }, + { + "begin": 33979, + "end": 33991, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 33979, + "end": 33991, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "tag", + "source": 5, + "value": "788" + }, + { + "begin": 33979, + "end": 33991, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "tag", + "source": 5, + "value": "787" + }, + { + "begin": 33979, + "end": 33991, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 33979, + "end": 33991, + "name": "MUL", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 33979, + "end": 33991, + "name": "ADD", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "ADD", + "source": 5 + }, + { + "begin": 33979, + "end": 33991, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 33960, + "end": 33991, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 33960, + "end": 33991, + "name": "POP", + "source": 5 + }, + { + "begin": 34013, + "end": 34021, + "name": "DUP11", + "source": 5 + }, + { + "begin": 34001, + "end": 34021, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 34001, + "end": 34021, + "name": "POP", + "source": 5 + }, + { + "begin": 34061, + "end": 34070, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34056, + "end": 35239, + "name": "tag", + "source": 5, + "value": "789" + }, + { + "begin": 34056, + "end": 35239, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34076, + "end": 34081, + "name": "DUP11", + "source": 5 + }, + { + "begin": 34076, + "end": 34088, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34072, + "end": 34073, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34072, + "end": 34088, + "name": "LT", + "source": 5 + }, + { + "begin": 34056, + "end": 35239, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34056, + "end": 35239, + "name": "PUSH [tag]", + "source": 5, + "value": "790" + }, + { + "begin": 34056, + "end": 35239, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34120, + "end": 34125, + "name": "DUP11", + "source": 5 + }, + { + "begin": 34126, + "end": 34127, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "LT", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "PUSH [tag]", + "source": 5, + "value": "792" + }, + { + "begin": 34120, + "end": 34128, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "PUSH [tag]", + "source": 5, + "value": "793" + }, + { + "begin": 34120, + "end": 34128, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 34120, + "end": 34128, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "tag", + "source": 5, + "value": "793" + }, + { + "begin": 34120, + "end": 34128, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "tag", + "source": 5, + "value": "792" + }, + { + "begin": 34120, + "end": 34128, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34120, + "end": 34128, + "name": "MUL", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34120, + "end": 34128, + "name": "ADD", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "ADD", + "source": 5 + }, + { + "begin": 34120, + "end": 34128, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34113, + "end": 34128, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 34113, + "end": 34128, + "name": "POP", + "source": 5 + }, + { + "begin": 34156, + "end": 34164, + "name": "DUP10", + "source": 5 + }, + { + "begin": 34165, + "end": 34166, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "LT", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "PUSH [tag]", + "source": 5, + "value": "794" + }, + { + "begin": 34156, + "end": 34167, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "PUSH [tag]", + "source": 5, + "value": "795" + }, + { + "begin": 34156, + "end": 34167, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 34156, + "end": 34167, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "tag", + "source": 5, + "value": "795" + }, + { + "begin": 34156, + "end": 34167, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "tag", + "source": 5, + "value": "794" + }, + { + "begin": 34156, + "end": 34167, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34156, + "end": 34167, + "name": "MUL", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34156, + "end": 34167, + "name": "ADD", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "ADD", + "source": 5 + }, + { + "begin": 34156, + "end": 34167, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34146, + "end": 34167, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 34146, + "end": 34167, + "name": "POP", + "source": 5 + }, + { + "begin": 34194, + "end": 34203, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34186, + "end": 34203, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 34186, + "end": 34203, + "name": "POP", + "source": 5 + }, + { + "begin": 34233, + "end": 34242, + "name": "DUP9", + "source": 5 + }, + { + "begin": 34247, + "end": 34248, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 34243, + "end": 34244, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34243, + "end": 34248, + "name": "ADD", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "LT", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "PUSH [tag]", + "source": 5, + "value": "796" + }, + { + "begin": 34233, + "end": 34249, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "PUSH [tag]", + "source": 5, + "value": "797" + }, + { + "begin": 34233, + "end": 34249, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 34233, + "end": 34249, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "tag", + "source": 5, + "value": "797" + }, + { + "begin": 34233, + "end": 34249, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "tag", + "source": 5, + "value": "796" + }, + { + "begin": 34233, + "end": 34249, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34233, + "end": 34249, + "name": "MUL", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34233, + "end": 34249, + "name": "ADD", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "ADD", + "source": 5 + }, + { + "begin": 34233, + "end": 34249, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34221, + "end": 34249, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34221, + "end": 34249, + "name": "POP", + "source": 5 + }, + { + "begin": 34289, + "end": 34294, + "name": "DUP11", + "source": 5 + }, + { + "begin": 34289, + "end": 34301, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34284, + "end": 34285, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 34280, + "end": 34281, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34280, + "end": 34285, + "name": "ADD", + "source": 5 + }, + { + "begin": 34280, + "end": 34301, + "name": "EQ", + "source": 5 + }, + { + "begin": 34280, + "end": 34321, + "name": "PUSH [tag]", + "source": 5, + "value": "798" + }, + { + "begin": 34280, + "end": 34321, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34309, + "end": 34314, + "name": "DUP11", + "source": 5 + }, + { + "begin": 34319, + "end": 34320, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 34315, + "end": 34316, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34315, + "end": 34320, + "name": "ADD", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "LT", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "PUSH [tag]", + "source": 5, + "value": "799" + }, + { + "begin": 34309, + "end": 34321, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "PUSH [tag]", + "source": 5, + "value": "800" + }, + { + "begin": 34309, + "end": 34321, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 34309, + "end": 34321, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "tag", + "source": 5, + "value": "800" + }, + { + "begin": 34309, + "end": 34321, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "tag", + "source": 5, + "value": "799" + }, + { + "begin": 34309, + "end": 34321, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34309, + "end": 34321, + "name": "MUL", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34309, + "end": 34321, + "name": "ADD", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "ADD", + "source": 5 + }, + { + "begin": 34309, + "end": 34321, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34280, + "end": 34321, + "name": "PUSH [tag]", + "source": 5, + "value": "801" + }, + { + "begin": 34280, + "end": 34321, + "name": "JUMP", + "source": 5 + }, + { + "begin": 34280, + "end": 34321, + "name": "tag", + "source": 5, + "value": "798" + }, + { + "begin": 34280, + "end": 34321, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34304, + "end": 34306, + "name": "DUP8", + "source": 5 + }, + { + "begin": 34280, + "end": 34321, + "name": "tag", + "source": 5, + "value": "801" + }, + { + "begin": 34280, + "end": 34321, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34268, + "end": 34321, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 34268, + "end": 34321, + "name": "POP", + "source": 5 + }, + { + "begin": 34355, + "end": 34365, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 34344, + "end": 34365, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "GT", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH [tag]", + "source": 5, + "value": "802" + }, + { + "begin": 34344, + "end": 34365, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH [tag]", + "source": 5, + "value": "803" + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 34344, + "end": 34365, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "tag", + "source": 5, + "value": "803" + }, + { + "begin": 34344, + "end": 34365, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "tag", + "source": 5, + "value": "802" + }, + { + "begin": 34344, + "end": 34365, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34344, + "end": 34351, + "name": "DUP6", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 34344, + "end": 34365, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "GT", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH [tag]", + "source": 5, + "value": "804" + }, + { + "begin": 34344, + "end": 34365, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH [tag]", + "source": 5, + "value": "805" + }, + { + "begin": 34344, + "end": 34365, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 34344, + "end": 34365, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "tag", + "source": 5, + "value": "805" + }, + { + "begin": 34344, + "end": 34365, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "tag", + "source": 5, + "value": "804" + }, + { + "begin": 34344, + "end": 34365, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34344, + "end": 34365, + "name": "SUB", + "source": 5 + }, + { + "begin": 34340, + "end": 35225, + "name": "PUSH [tag]", + "source": 5, + "value": "806" + }, + { + "begin": 34340, + "end": 35225, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34390, + "end": 34406, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34408, + "end": 34424, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34445, + "end": 34449, + "name": "DUP5", + "source": 5 + }, + { + "begin": 34429, + "end": 34462, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34429, + "end": 34462, + "name": "AND", + "source": 5 + }, + { + "begin": 34429, + "end": 34462, + "name": "PUSH", + "source": 5, + "value": "902F1AC" + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34429, + "end": 34464, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 34429, + "end": 34464, + "name": "AND", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 34429, + "end": 34464, + "name": "SHL", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 34429, + "end": 34464, + "name": "ADD", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34429, + "end": 34464, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "SUB", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP7", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "GAS", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH [tag]", + "source": 5, + "value": "808" + }, + { + "begin": 34429, + "end": 34464, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34429, + "end": 34464, + "name": "REVERT", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "tag", + "source": 5, + "value": "808" + }, + { + "begin": 34429, + "end": 34464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34429, + "end": 34464, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 34429, + "end": 34464, + "name": "NOT", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "ADD", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "AND", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "ADD", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34429, + "end": 34464, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "ADD", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH [tag]", + "source": 5, + "value": "809" + }, + { + "begin": 34429, + "end": 34464, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "PUSH [tag]", + "source": 5, + "value": "636" + }, + { + "begin": 34429, + "end": 34464, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34429, + "end": 34464, + "name": "tag", + "source": 5, + "value": "809" + }, + { + "begin": 34429, + "end": 34464, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34389, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34389, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34389, + "end": 34464, + "name": "AND", + "source": 5 + }, + { + "begin": 34389, + "end": 34464, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34389, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34389, + "end": 34464, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34389, + "end": 34464, + "name": "AND", + "source": 5 + }, + { + "begin": 34389, + "end": 34464, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34389, + "end": 34464, + "name": "POP", + "source": 5 + }, + { + "begin": 34499, + "end": 34508, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34491, + "end": 34508, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34491, + "end": 34508, + "name": "AND", + "source": 5 + }, + { + "begin": 34491, + "end": 34496, + "name": "DUP9", + "source": 5 + }, + { + "begin": 34491, + "end": 34508, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34491, + "end": 34508, + "name": "AND", + "source": 5 + }, + { + "begin": 34491, + "end": 34508, + "name": "LT", + "source": 5 + }, + { + "begin": 34487, + "end": 34884, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34487, + "end": 34884, + "name": "PUSH [tag]", + "source": 5, + "value": "810" + }, + { + "begin": 34487, + "end": 34884, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34548, + "end": 34590, + "name": "PUSH [tag]", + "source": 5, + "value": "811" + }, + { + "begin": 34571, + "end": 34579, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34581, + "end": 34589, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34548, + "end": 34557, + "name": "DUP12", + "source": 5 + }, + { + "begin": 34548, + "end": 34570, + "name": "PUSH [tag]", + "source": 5, + "value": "643" + }, + { + "begin": 34548, + "end": 34570, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34548, + "end": 34590, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 34548, + "end": 34590, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34548, + "end": 34590, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34548, + "end": 34590, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 34548, + "end": 34590, + "name": "AND", + "source": 5 + }, + { + "begin": 34548, + "end": 34590, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34548, + "end": 34590, + "name": "tag", + "source": 5, + "value": "811" + }, + { + "begin": 34548, + "end": 34590, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34536, + "end": 34590, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 34536, + "end": 34590, + "name": "POP", + "source": 5 + }, + { + "begin": 34632, + "end": 34636, + "name": "DUP5", + "source": 5 + }, + { + "begin": 34616, + "end": 34642, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34616, + "end": 34642, + "name": "AND", + "source": 5 + }, + { + "begin": 34616, + "end": 34642, + "name": "PUSH", + "source": 5, + "value": "22C0D9F" + }, + { + "begin": 34643, + "end": 34644, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34646, + "end": 34655, + "name": "DUP12", + "source": 5 + }, + { + "begin": 34657, + "end": 34666, + "name": "DUP10", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34616, + "end": 34671, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP5", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 34616, + "end": 34671, + "name": "AND", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 34616, + "end": 34671, + "name": "SHL", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 34616, + "end": 34671, + "name": "ADD", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH [tag]", + "source": 5, + "value": "812" + }, + { + "begin": 34616, + "end": 34671, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH [tag]", + "source": 5, + "value": "645" + }, + { + "begin": 34616, + "end": 34671, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "tag", + "source": 5, + "value": "812" + }, + { + "begin": 34616, + "end": 34671, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34616, + "end": 34671, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "SUB", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP8", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH [tag]", + "source": 5, + "value": "813" + }, + { + "begin": 34616, + "end": 34671, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "REVERT", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "tag", + "source": 5, + "value": "813" + }, + { + "begin": 34616, + "end": 34671, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "POP", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "GAS", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "CALL", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH [tag]", + "source": 5, + "value": "815" + }, + { + "begin": 34616, + "end": 34671, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34616, + "end": 34671, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34616, + "end": 34671, + "name": "REVERT", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "tag", + "source": 5, + "value": "815" + }, + { + "begin": 34616, + "end": 34671, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "POP", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "POP", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "POP", + "source": 5 + }, + { + "begin": 34616, + "end": 34671, + "name": "POP", + "source": 5 + }, + { + "begin": 34487, + "end": 34884, + "name": "PUSH [tag]", + "source": 5, + "value": "816" + }, + { + "begin": 34487, + "end": 34884, + "name": "JUMP", + "source": 5 + }, + { + "begin": 34487, + "end": 34884, + "name": "tag", + "source": 5, + "value": "810" + }, + { + "begin": 34487, + "end": 34884, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34738, + "end": 34780, + "name": "PUSH [tag]", + "source": 5, + "value": "817" + }, + { + "begin": 34761, + "end": 34769, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34771, + "end": 34779, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34738, + "end": 34747, + "name": "DUP12", + "source": 5 + }, + { + "begin": 34738, + "end": 34760, + "name": "PUSH [tag]", + "source": 5, + "value": "643" + }, + { + "begin": 34738, + "end": 34760, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34738, + "end": 34780, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 34738, + "end": 34780, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34738, + "end": 34780, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34738, + "end": 34780, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 34738, + "end": 34780, + "name": "AND", + "source": 5 + }, + { + "begin": 34738, + "end": 34780, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34738, + "end": 34780, + "name": "tag", + "source": 5, + "value": "817" + }, + { + "begin": 34738, + "end": 34780, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34726, + "end": 34780, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 34726, + "end": 34780, + "name": "POP", + "source": 5 + }, + { + "begin": 34822, + "end": 34826, + "name": "DUP5", + "source": 5 + }, + { + "begin": 34806, + "end": 34832, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34806, + "end": 34832, + "name": "AND", + "source": 5 + }, + { + "begin": 34806, + "end": 34832, + "name": "PUSH", + "source": 5, + "value": "22C0D9F" + }, + { + "begin": 34833, + "end": 34842, + "name": "DUP11", + "source": 5 + }, + { + "begin": 34844, + "end": 34845, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34847, + "end": 34856, + "name": "DUP10", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34806, + "end": 34861, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP5", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 34806, + "end": 34861, + "name": "AND", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 34806, + "end": 34861, + "name": "SHL", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 34806, + "end": 34861, + "name": "ADD", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH [tag]", + "source": 5, + "value": "818" + }, + { + "begin": 34806, + "end": 34861, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH [tag]", + "source": 5, + "value": "656" + }, + { + "begin": 34806, + "end": 34861, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "tag", + "source": 5, + "value": "818" + }, + { + "begin": 34806, + "end": 34861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34806, + "end": 34861, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "SUB", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP8", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "EXTCODESIZE", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH [tag]", + "source": 5, + "value": "819" + }, + { + "begin": 34806, + "end": 34861, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "REVERT", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "tag", + "source": 5, + "value": "819" + }, + { + "begin": 34806, + "end": 34861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "POP", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "GAS", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "CALL", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH [tag]", + "source": 5, + "value": "821" + }, + { + "begin": 34806, + "end": 34861, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34806, + "end": 34861, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34806, + "end": 34861, + "name": "REVERT", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "tag", + "source": 5, + "value": "821" + }, + { + "begin": 34806, + "end": 34861, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "POP", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "POP", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "POP", + "source": 5 + }, + { + "begin": 34806, + "end": 34861, + "name": "POP", + "source": 5 + }, + { + "begin": 34487, + "end": 34884, + "name": "tag", + "source": 5, + "value": "816" + }, + { + "begin": 34487, + "end": 34884, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34367, + "end": 34902, + "name": "POP", + "source": 5 + }, + { + "begin": 34367, + "end": 34902, + "name": "POP", + "source": 5 + }, + { + "begin": 34340, + "end": 35225, + "name": "PUSH [tag]", + "source": 5, + "value": "822" + }, + { + "begin": 34340, + "end": 35225, + "name": "JUMP", + "source": 5 + }, + { + "begin": 34340, + "end": 35225, + "name": "tag", + "source": 5, + "value": "806" + }, + { + "begin": 34340, + "end": 35225, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34930, + "end": 34943, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34967, + "end": 34971, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34959, + "end": 34982, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34959, + "end": 34982, + "name": "AND", + "source": 5 + }, + { + "begin": 34959, + "end": 34982, + "name": "PUSH", + "source": 5, + "value": "DA10610C" + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34959, + "end": 34984, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 34959, + "end": 34984, + "name": "AND", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 34959, + "end": 34984, + "name": "SHL", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 34959, + "end": 34984, + "name": "ADD", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34959, + "end": 34984, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "SUB", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP7", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "GAS", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH [tag]", + "source": 5, + "value": "824" + }, + { + "begin": 34959, + "end": 34984, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 34959, + "end": 34984, + "name": "REVERT", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "tag", + "source": 5, + "value": "824" + }, + { + "begin": 34959, + "end": 34984, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "POP", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "POP", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "POP", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "POP", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34959, + "end": 34984, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 34959, + "end": 34984, + "name": "NOT", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "ADD", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "AND", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP3", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "ADD", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 34959, + "end": 34984, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "POP", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "DUP2", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "ADD", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH [tag]", + "source": 5, + "value": "825" + }, + { + "begin": 34959, + "end": 34984, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "PUSH [tag]", + "source": 5, + "value": "380" + }, + { + "begin": 34959, + "end": 34984, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 34959, + "end": 34984, + "name": "tag", + "source": 5, + "value": "825" + }, + { + "begin": 34959, + "end": 34984, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34946, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34946, + "end": 34984, + "name": "AND", + "source": 5 + }, + { + "begin": 34946, + "end": 34955, + "name": "DUP4", + "source": 5 + }, + { + "begin": 34946, + "end": 34984, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 34946, + "end": 34984, + "name": "AND", + "source": 5 + }, + { + "begin": 34946, + "end": 34984, + "name": "EQ", + "source": 5 + }, + { + "begin": 34930, + "end": 34984, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34930, + "end": 34984, + "name": "POP", + "source": 5 + }, + { + "begin": 35008, + "end": 35026, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 35028, + "end": 35046, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35098, + "name": "PUSH [tag]", + "source": 5, + "value": "826" + }, + { + "begin": 35058, + "end": 35062, + "name": "DUP7", + "source": 5 + }, + { + "begin": 35050, + "end": 35068, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 35050, + "end": 35068, + "name": "AND", + "source": 5 + }, + { + "begin": 35050, + "end": 35068, + "name": "PUSH", + "source": 5, + "value": "53C059A0" + }, + { + "begin": 35069, + "end": 35077, + "name": "DUP6", + "source": 5 + }, + { + "begin": 35079, + "end": 35088, + "name": "DUP11", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 35050, + "end": 35089, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP4", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 35050, + "end": 35089, + "name": "AND", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 35050, + "end": 35089, + "name": "SHL", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP2", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 35050, + "end": 35089, + "name": "ADD", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH [tag]", + "source": 5, + "value": "827" + }, + { + "begin": 35050, + "end": 35089, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH [tag]", + "source": 5, + "value": "665" + }, + { + "begin": 35050, + "end": 35089, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "tag", + "source": 5, + "value": "827" + }, + { + "begin": 35050, + "end": 35089, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 35050, + "end": 35089, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP4", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "SUB", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP2", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP8", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "GAS", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "CALL", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH [tag]", + "source": 5, + "value": "829" + }, + { + "begin": 35050, + "end": 35089, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 35050, + "end": 35089, + "name": "REVERT", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "tag", + "source": 5, + "value": "829" + }, + { + "begin": 35050, + "end": 35089, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "POP", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "POP", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "POP", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "POP", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 35050, + "end": 35089, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 35050, + "end": 35089, + "name": "NOT", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP3", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "ADD", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "AND", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP3", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "ADD", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 35050, + "end": 35089, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "POP", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "DUP2", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "ADD", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH [tag]", + "source": 5, + "value": "830" + }, + { + "begin": 35050, + "end": 35089, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "PUSH [tag]", + "source": 5, + "value": "669" + }, + { + "begin": 35050, + "end": 35089, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 35050, + "end": 35089, + "name": "tag", + "source": 5, + "value": "830" + }, + { + "begin": 35050, + "end": 35089, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 35050, + "end": 35096, + "name": "PUSH [tag]", + "source": 5, + "value": "773" + }, + { + "begin": 35050, + "end": 35098, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 35050, + "end": 35098, + "name": "tag", + "source": 5, + "value": "826" + }, + { + "begin": 35050, + "end": 35098, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 35007, + "end": 35098, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 35007, + "end": 35098, + "name": "AND", + "source": 5 + }, + { + "begin": 35007, + "end": 35098, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 35007, + "end": 35098, + "name": "POP", + "source": 5 + }, + { + "begin": 35007, + "end": 35098, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 35007, + "end": 35098, + "name": "AND", + "source": 5 + }, + { + "begin": 35007, + "end": 35098, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 35007, + "end": 35098, + "name": "POP", + "source": 5 + }, + { + "begin": 35125, + "end": 35133, + "name": "DUP3", + "source": 5 + }, + { + "begin": 35121, + "end": 35206, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 35121, + "end": 35206, + "name": "PUSH [tag]", + "source": 5, + "value": "831" + }, + { + "begin": 35121, + "end": 35206, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 35147, + "end": 35157, + "name": "DUP1", + "source": 5 + }, + { + "begin": 35135, + "end": 35157, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 35135, + "end": 35157, + "name": "POP", + "source": 5 + }, + { + "begin": 35121, + "end": 35206, + "name": "PUSH [tag]", + "source": 5, + "value": "832" + }, + { + "begin": 35121, + "end": 35206, + "name": "JUMP", + "source": 5 + }, + { + "begin": 35121, + "end": 35206, + "name": "tag", + "source": 5, + "value": "831" + }, + { + "begin": 35121, + "end": 35206, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 35196, + "end": 35206, + "name": "DUP2", + "source": 5 + }, + { + "begin": 35184, + "end": 35206, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 35184, + "end": 35206, + "name": "POP", + "source": 5 + }, + { + "begin": 35121, + "end": 35206, + "name": "tag", + "source": 5, + "value": "832" + }, + { + "begin": 35121, + "end": 35206, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34908, + "end": 35225, + "name": "POP", + "source": 5 + }, + { + "begin": 34908, + "end": 35225, + "name": "POP", + "source": 5 + }, + { + "begin": 34908, + "end": 35225, + "name": "POP", + "source": 5 + }, + { + "begin": 34340, + "end": 35225, + "name": "tag", + "source": 5, + "value": "822" + }, + { + "begin": 34340, + "end": 35225, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34090, + "end": 34093, + "name": "DUP1", + "source": 5 + }, + { + "begin": 34090, + "end": 34093, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 34090, + "end": 34093, + "name": "ADD", + "source": 5 + }, + { + "begin": 34090, + "end": 34093, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 34090, + "end": 34093, + "name": "POP", + "source": 5 + }, + { + "begin": 34056, + "end": 35239, + "name": "PUSH [tag]", + "source": 5, + "value": "789" + }, + { + "begin": 34056, + "end": 35239, + "name": "JUMP", + "source": 5 + }, + { + "begin": 34056, + "end": 35239, + "name": "tag", + "source": 5, + "value": "790" + }, + { + "begin": 34056, + "end": 35239, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 34056, + "end": 35239, + "name": "POP", + "source": 5 + }, + { + "begin": 33853, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33853, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33853, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33853, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33853, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "name": "POP", + "source": 5 + }, + { + "begin": 33628, + "end": 35255, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 1419, + "end": 1639, + "name": "tag", + "source": 26, + "value": "350" + }, + { + "begin": 1419, + "end": 1639, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1509, + "end": 1526, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1552, + "end": 1575, + "name": "PUSH", + "source": 26, + "value": "A9059CBB" + }, + { + "begin": 1552, + "end": 1575, + "name": "PUSH", + "source": 26, + "value": "E0" + }, + { + "begin": 1552, + "end": 1575, + "name": "SHL", + "source": 26 + }, + { + "begin": 1577, + "end": 1586, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1588, + "end": 1594, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 1529, + "end": 1595, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "24" + }, + { + "begin": 1529, + "end": 1595, + "name": "ADD", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH [tag]", + "source": 26, + "value": "834" + }, + { + "begin": 1529, + "end": 1595, + "name": "SWAP3", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "SWAP2", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH [tag]", + "source": 26, + "value": "785" + }, + { + "begin": 1529, + "end": 1595, + "jumpType": "[in]", + "name": "JUMP", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "tag", + "source": 26, + "value": "834" + }, + { + "begin": 1529, + "end": 1595, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 1529, + "end": 1595, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "20" + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP2", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "SUB", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "SUB", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP2", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 1529, + "end": 1595, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1529, + "end": 1595, + "name": "NOT", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "AND", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "20" + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP3", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "ADD", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP1", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "PUSH", + "source": 26, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP2", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "AND", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "OR", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "POP", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "POP", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "POP", + "source": 26 + }, + { + "begin": 1529, + "end": 1595, + "name": "POP", + "source": 26 + }, + { + "begin": 1509, + "end": 1595, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1509, + "end": 1595, + "name": "POP", + "source": 26 + }, + { + "begin": 1606, + "end": 1632, + "name": "PUSH [tag]", + "source": 26, + "value": "835" + }, + { + "begin": 1620, + "end": 1625, + "name": "DUP5", + "source": 26 + }, + { + "begin": 1627, + "end": 1631, + "name": "DUP3", + "source": 26 + }, + { + "begin": 1606, + "end": 1619, + "name": "PUSH [tag]", + "source": 26, + "value": "836" + }, + { + "begin": 1606, + "end": 1632, + "jumpType": "[in]", + "name": "JUMP", + "source": 26 + }, + { + "begin": 1606, + "end": 1632, + "name": "tag", + "source": 26, + "value": "835" + }, + { + "begin": 1606, + "end": 1632, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1499, + "end": 1639, + "name": "POP", + "source": 26 + }, + { + "begin": 1419, + "end": 1639, + "name": "POP", + "source": 26 + }, + { + "begin": 1419, + "end": 1639, + "name": "POP", + "source": 26 + }, + { + "begin": 1419, + "end": 1639, + "name": "POP", + "source": 26 + }, + { + "begin": 1419, + "end": 1639, + "jumpType": "[out]", + "name": "JUMP", + "source": 26 + }, + { + "begin": 8737, + "end": 8907, + "name": "tag", + "source": 1, + "value": "361" + }, + { + "begin": 8737, + "end": 8907, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 8795, + "end": 8825, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 8870, + "end": 8891, + "name": "PUSH", + "source": 1, + "value": "F0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + { + "begin": 8860, + "end": 8891, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8860, + "end": 8891, + "name": "POP", + "source": 1 + }, + { + "begin": 8737, + "end": 8907, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 8737, + "end": 8907, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 39247, + "end": 39623, + "name": "tag", + "source": 5, + "value": "376" + }, + { + "begin": 39247, + "end": 39623, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 39371, + "end": 39385, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 39418, + "end": 39427, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "585" + }, + { + "begin": 39418, + "end": 39448, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 39418, + "end": 39448, + "name": "AND", + "source": 5 + }, + { + "begin": 39418, + "end": 39448, + "name": "PUSH", + "source": 5, + "value": "704037BD" + }, + { + "begin": 39449, + "end": 39455, + "name": "DUP6", + "source": 5 + }, + { + "begin": 39457, + "end": 39463, + "name": "DUP6", + "source": 5 + }, + { + "begin": 39465, + "end": 39472, + "name": "DUP6", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 39418, + "end": 39473, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP5", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 39418, + "end": 39473, + "name": "AND", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 39418, + "end": 39473, + "name": "SHL", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP2", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 39418, + "end": 39473, + "name": "ADD", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH [tag]", + "source": 5, + "value": "839" + }, + { + "begin": 39418, + "end": 39473, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH [tag]", + "source": 5, + "value": "840" + }, + { + "begin": 39418, + "end": 39473, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "tag", + "source": 5, + "value": "839" + }, + { + "begin": 39418, + "end": 39473, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "80" + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 39418, + "end": 39473, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP1", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP4", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "SUB", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP2", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP7", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "GAS", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP1", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH [tag]", + "source": 5, + "value": "842" + }, + { + "begin": 39418, + "end": 39473, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP1", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 39418, + "end": 39473, + "name": "REVERT", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "tag", + "source": 5, + "value": "842" + }, + { + "begin": 39418, + "end": 39473, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "POP", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "POP", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "POP", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "POP", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 39418, + "end": 39473, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 39418, + "end": 39473, + "name": "NOT", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP3", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "ADD", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "AND", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP3", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "ADD", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP1", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 39418, + "end": 39473, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "POP", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "DUP2", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "ADD", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH [tag]", + "source": 5, + "value": "843" + }, + { + "begin": 39418, + "end": 39473, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "PUSH [tag]", + "source": 5, + "value": "844" + }, + { + "begin": 39418, + "end": 39473, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 39418, + "end": 39473, + "name": "tag", + "source": 5, + "value": "843" + }, + { + "begin": 39418, + "end": 39473, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 39418, + "end": 39480, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 39418, + "end": 39480, + "name": "ADD", + "source": 5 + }, + { + "begin": 39418, + "end": 39480, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 39401, + "end": 39481, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 39401, + "end": 39481, + "name": "POP", + "source": 5 + }, + { + "begin": 39514, + "end": 39515, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 39496, + "end": 39516, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 39496, + "end": 39516, + "name": "AND", + "source": 5 + }, + { + "begin": 39496, + "end": 39502, + "name": "DUP2", + "source": 5 + }, + { + "begin": 39496, + "end": 39516, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 39496, + "end": 39516, + "name": "AND", + "source": 5 + }, + { + "begin": 39496, + "end": 39516, + "name": "SUB", + "source": 5 + }, + { + "begin": 39492, + "end": 39617, + "name": "PUSH [tag]", + "source": 5, + "value": "845" + }, + { + "begin": 39492, + "end": 39617, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 39572, + "end": 39578, + "name": "DUP4", + "source": 5 + }, + { + "begin": 39589, + "end": 39595, + "name": "DUP4", + "source": 5 + }, + { + "begin": 39598, + "end": 39605, + "name": "DUP4", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 39539, + "end": 39606, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "PUSH", + "source": 5, + "value": "D648E3A200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 39539, + "end": 39606, + "name": "DUP2", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 39539, + "end": 39606, + "name": "ADD", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "PUSH [tag]", + "source": 5, + "value": "846" + }, + { + "begin": 39539, + "end": 39606, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "PUSH [tag]", + "source": 5, + "value": "847" + }, + { + "begin": 39539, + "end": 39606, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "tag", + "source": 5, + "value": "846" + }, + { + "begin": 39539, + "end": 39606, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 39539, + "end": 39606, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "DUP1", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "SUB", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 39539, + "end": 39606, + "name": "REVERT", + "source": 5 + }, + { + "begin": 39492, + "end": 39617, + "name": "tag", + "source": 5, + "value": "845" + }, + { + "begin": 39492, + "end": 39617, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 39247, + "end": 39623, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 39247, + "end": 39623, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 39247, + "end": 39623, + "name": "POP", + "source": 5 + }, + { + "begin": 39247, + "end": 39623, + "name": "POP", + "source": 5 + }, + { + "begin": 39247, + "end": 39623, + "name": "POP", + "source": 5 + }, + { + "begin": 39247, + "end": 39623, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "tag", + "source": 5, + "value": "383" + }, + { + "begin": 32548, + "end": 33218, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32759, + "end": 32774, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32776, + "end": 32791, + "name": "DUP1", + "source": 5 + }, + { + "begin": 32804, + "end": 32834, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32838, + "end": 32842, + "name": "DUP9", + "source": 5 + }, + { + "begin": 32838, + "end": 32847, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 32838, + "end": 32847, + "name": "AND", + "source": 5 + }, + { + "begin": 32838, + "end": 32847, + "name": "PUSH", + "source": 5, + "value": "C9939F5E" + }, + { + "begin": 32848, + "end": 32858, + "name": "CALLER", + "source": 5 + }, + { + "begin": 32860, + "end": 32862, + "name": "DUP7", + "source": 5 + }, + { + "begin": 32864, + "end": 32867, + "name": "DUP10", + "source": 5 + }, + { + "begin": 32869, + "end": 32876, + "name": "DUP10", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 32838, + "end": 32877, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP6", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 32838, + "end": 32877, + "name": "AND", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 32838, + "end": 32877, + "name": "SHL", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP2", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 32838, + "end": 32877, + "name": "ADD", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH [tag]", + "source": 5, + "value": "849" + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH [tag]", + "source": 5, + "value": "850" + }, + { + "begin": 32838, + "end": 32877, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "tag", + "source": 5, + "value": "849" + }, + { + "begin": 32838, + "end": 32877, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 32838, + "end": 32877, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP1", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP4", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "SUB", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP2", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP8", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "GAS", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "CALL", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP1", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH [tag]", + "source": 5, + "value": "852" + }, + { + "begin": 32838, + "end": 32877, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP1", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32838, + "end": 32877, + "name": "REVERT", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "tag", + "source": 5, + "value": "852" + }, + { + "begin": 32838, + "end": 32877, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "POP", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "POP", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "POP", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "POP", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 32838, + "end": 32877, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP3", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 32838, + "end": 32877, + "name": "NOT", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP3", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "ADD", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "AND", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP3", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "ADD", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP1", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 32838, + "end": 32877, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "POP", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "DUP2", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "ADD", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH [tag]", + "source": 5, + "value": "853" + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "PUSH [tag]", + "source": 5, + "value": "854" + }, + { + "begin": 32838, + "end": 32877, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 32838, + "end": 32877, + "name": "tag", + "source": 5, + "value": "853" + }, + { + "begin": 32838, + "end": 32877, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32803, + "end": 32877, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 32803, + "end": 32877, + "name": "POP", + "source": 5 + }, + { + "begin": 32893, + "end": 32902, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 32888, + "end": 33048, + "name": "tag", + "source": 5, + "value": "855" + }, + { + "begin": 32888, + "end": 33048, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32908, + "end": 32921, + "name": "DUP2", + "source": 5 + }, + { + "begin": 32908, + "end": 32928, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 32904, + "end": 32905, + "name": "DUP2", + "source": 5 + }, + { + "begin": 32904, + "end": 32928, + "name": "LT", + "source": 5 + }, + { + "begin": 32888, + "end": 33048, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 32888, + "end": 33048, + "name": "PUSH [tag]", + "source": 5, + "value": "856" + }, + { + "begin": 32888, + "end": 33048, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 32960, + "end": 32986, + "name": "PUSH [tag]", + "source": 5, + "value": "858" + }, + { + "begin": 32960, + "end": 32973, + "name": "DUP3", + "source": 5 + }, + { + "begin": 32974, + "end": 32975, + "name": "DUP3", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "DUP2", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "DUP2", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "LT", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "PUSH [tag]", + "source": 5, + "value": "859" + }, + { + "begin": 32960, + "end": 32976, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "PUSH [tag]", + "source": 5, + "value": "860" + }, + { + "begin": 32960, + "end": 32976, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 32960, + "end": 32976, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "tag", + "source": 5, + "value": "860" + }, + { + "begin": 32960, + "end": 32976, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "tag", + "source": 5, + "value": "859" + }, + { + "begin": 32960, + "end": 32976, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 32960, + "end": 32976, + "name": "MUL", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 32960, + "end": 32976, + "name": "ADD", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "ADD", + "source": 5 + }, + { + "begin": 32960, + "end": 32976, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 32960, + "end": 32984, + "name": "PUSH [tag]", + "source": 5, + "value": "861" + }, + { + "begin": 32960, + "end": 32986, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 32960, + "end": 32986, + "name": "tag", + "source": 5, + "value": "858" + }, + { + "begin": 32960, + "end": 32986, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 32949, + "end": 32986, + "name": "AND", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "DUP5", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "PUSH [tag]", + "source": 5, + "value": "862" + }, + { + "begin": 32949, + "end": 32986, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 32949, + "end": 32986, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "tag", + "source": 5, + "value": "862" + }, + { + "begin": 32949, + "end": 32986, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 32949, + "end": 32986, + "name": "POP", + "source": 5 + }, + { + "begin": 33011, + "end": 33037, + "name": "PUSH [tag]", + "source": 5, + "value": "863" + }, + { + "begin": 33011, + "end": 33024, + "name": "DUP3", + "source": 5 + }, + { + "begin": 33025, + "end": 33026, + "name": "DUP3", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "DUP2", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "DUP2", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "LT", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "PUSH [tag]", + "source": 5, + "value": "864" + }, + { + "begin": 33011, + "end": 33027, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "PUSH [tag]", + "source": 5, + "value": "865" + }, + { + "begin": 33011, + "end": 33027, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 33011, + "end": 33027, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "tag", + "source": 5, + "value": "865" + }, + { + "begin": 33011, + "end": 33027, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "tag", + "source": 5, + "value": "864" + }, + { + "begin": 33011, + "end": 33027, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 33011, + "end": 33027, + "name": "MUL", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 33011, + "end": 33027, + "name": "ADD", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "ADD", + "source": 5 + }, + { + "begin": 33011, + "end": 33027, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 33011, + "end": 33035, + "name": "PUSH [tag]", + "source": 5, + "value": "866" + }, + { + "begin": 33011, + "end": 33037, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 33011, + "end": 33037, + "name": "tag", + "source": 5, + "value": "863" + }, + { + "begin": 33011, + "end": 33037, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 33000, + "end": 33037, + "name": "AND", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "DUP4", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "PUSH [tag]", + "source": 5, + "value": "867" + }, + { + "begin": 33000, + "end": 33037, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "PUSH [tag]", + "source": 5, + "value": "171" + }, + { + "begin": 33000, + "end": 33037, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "tag", + "source": 5, + "value": "867" + }, + { + "begin": 33000, + "end": 33037, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 33000, + "end": 33037, + "name": "POP", + "source": 5 + }, + { + "begin": 32930, + "end": 32933, + "name": "DUP1", + "source": 5 + }, + { + "begin": 32930, + "end": 32933, + "name": "PUSH [tag]", + "source": 5, + "value": "868" + }, + { + "begin": 32930, + "end": 32933, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 32930, + "end": 32933, + "name": "PUSH [tag]", + "source": 5, + "value": "869" + }, + { + "begin": 32930, + "end": 32933, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 32930, + "end": 32933, + "name": "tag", + "source": 5, + "value": "868" + }, + { + "begin": 32930, + "end": 32933, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32930, + "end": 32933, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 32930, + "end": 32933, + "name": "POP", + "source": 5 + }, + { + "begin": 32888, + "end": 33048, + "name": "PUSH [tag]", + "source": 5, + "value": "855" + }, + { + "begin": 32888, + "end": 33048, + "name": "JUMP", + "source": 5 + }, + { + "begin": 32888, + "end": 33048, + "name": "tag", + "source": 5, + "value": "856" + }, + { + "begin": 32888, + "end": 33048, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32888, + "end": 33048, + "name": "POP", + "source": 5 + }, + { + "begin": 33072, + "end": 33082, + "name": "DUP8", + "source": 5 + }, + { + "begin": 33062, + "end": 33069, + "name": "DUP4", + "source": 5 + }, + { + "begin": 33062, + "end": 33082, + "name": "LT", + "source": 5 + }, + { + "begin": 33062, + "end": 33106, + "name": "DUP1", + "source": 5 + }, + { + "begin": 33062, + "end": 33106, + "name": "PUSH [tag]", + "source": 5, + "value": "870" + }, + { + "begin": 33062, + "end": 33106, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 33062, + "end": 33106, + "name": "POP", + "source": 5 + }, + { + "begin": 33096, + "end": 33106, + "name": "DUP7", + "source": 5 + }, + { + "begin": 33086, + "end": 33093, + "name": "DUP3", + "source": 5 + }, + { + "begin": 33086, + "end": 33106, + "name": "LT", + "source": 5 + }, + { + "begin": 33062, + "end": 33106, + "name": "tag", + "source": 5, + "value": "870" + }, + { + "begin": 33062, + "end": 33106, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33058, + "end": 33212, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 33058, + "end": 33212, + "name": "PUSH [tag]", + "source": 5, + "value": "871" + }, + { + "begin": 33058, + "end": 33212, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 33160, + "end": 33170, + "name": "DUP8", + "source": 5 + }, + { + "begin": 33172, + "end": 33179, + "name": "DUP4", + "source": 5 + }, + { + "begin": 33181, + "end": 33191, + "name": "DUP9", + "source": 5 + }, + { + "begin": 33193, + "end": 33200, + "name": "DUP5", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 33129, + "end": 33201, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "PUSH", + "source": 5, + "value": "3199F6EE00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 33129, + "end": 33201, + "name": "DUP2", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 33129, + "end": 33201, + "name": "ADD", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "PUSH [tag]", + "source": 5, + "value": "872" + }, + { + "begin": 33129, + "end": 33201, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "PUSH [tag]", + "source": 5, + "value": "873" + }, + { + "begin": 33129, + "end": 33201, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "tag", + "source": 5, + "value": "872" + }, + { + "begin": 33129, + "end": 33201, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 33129, + "end": 33201, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "DUP1", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "SUB", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 33129, + "end": 33201, + "name": "REVERT", + "source": 5 + }, + { + "begin": 33058, + "end": 33212, + "name": "tag", + "source": 5, + "value": "871" + }, + { + "begin": 33058, + "end": 33212, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 32793, + "end": 33218, + "name": "POP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "POP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "SWAP7", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "POP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "POP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "POP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "POP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "name": "POP", + "source": 5 + }, + { + "begin": 32548, + "end": 33218, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41607, + "end": 41761, + "name": "tag", + "source": 5, + "value": "387" + }, + { + "begin": 41607, + "end": 41761, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41704, + "end": 41705, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 41694, + "end": 41700, + "name": "DUP2", + "source": 5 + }, + { + "begin": 41694, + "end": 41705, + "name": "SUB", + "source": 5 + }, + { + "begin": 41690, + "end": 41714, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 41707, + "end": 41714, + "name": "PUSH [tag]", + "source": 5, + "value": "874" + }, + { + "begin": 41690, + "end": 41714, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 41724, + "end": 41754, + "name": "PUSH [tag]", + "source": 5, + "value": "876" + }, + { + "begin": 41743, + "end": 41745, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41747, + "end": 41753, + "name": "DUP3", + "source": 5 + }, + { + "begin": 41724, + "end": 41729, + "name": "DUP6", + "source": 5 + }, + { + "begin": 41724, + "end": 41742, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 41724, + "end": 41742, + "name": "AND", + "source": 5 + }, + { + "begin": 41724, + "end": 41742, + "name": "PUSH [tag]", + "source": 5, + "value": "350" + }, + { + "begin": 41724, + "end": 41742, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41724, + "end": 41754, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 41724, + "end": 41754, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 41724, + "end": 41754, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 41724, + "end": 41754, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 41724, + "end": 41754, + "name": "AND", + "source": 5 + }, + { + "begin": 41724, + "end": 41754, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 41724, + "end": 41754, + "name": "tag", + "source": 5, + "value": "876" + }, + { + "begin": 41724, + "end": 41754, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41607, + "end": 41761, + "name": "tag", + "source": 5, + "value": "874" + }, + { + "begin": 41607, + "end": 41761, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 41607, + "end": 41761, + "name": "POP", + "source": 5 + }, + { + "begin": 41607, + "end": 41761, + "name": "POP", + "source": 5 + }, + { + "begin": 41607, + "end": 41761, + "name": "POP", + "source": 5 + }, + { + "begin": 41607, + "end": 41761, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "tag", + "source": 5, + "value": "419" + }, + { + "begin": 28066, + "end": 30555, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28212, + "end": 28232, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 28246, + "end": 28266, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28280, + "end": 28299, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 28313, + "end": 28332, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28346, + "end": 28373, + "name": "PUSH", + "source": 5, + "value": "60" + }, + { + "begin": 28387, + "end": 28419, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28168, + "end": 28171, + "name": "DUP8", + "source": 5 + }, + { + "begin": 28168, + "end": 28180, + "name": "PUSH", + "source": 5, + "value": "1C0" + }, + { + "begin": 28168, + "end": 28180, + "name": "ADD", + "source": 5 + }, + { + "begin": 28168, + "end": 28180, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 2244, + "end": 2252, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2226, + "end": 2241, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2226, + "end": 2252, + "name": "GT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "878" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 2288, + "end": 2296, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2298, + "end": 2313, + "name": "TIMESTAMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "DAE7CA7D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 2261, + "end": 2314, + "name": "ADD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "879" + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 2261, + "end": 2314, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "tag", + "source": 5, + "value": "879" + }, + { + "begin": 2261, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 2261, + "end": 2314, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "DUP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SUB", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 2261, + "end": 2314, + "name": "REVERT", + "source": 5 + }, + { + "begin": 2222, + "end": 2314, + "name": "tag", + "source": 5, + "value": "878" + }, + { + "begin": 2222, + "end": 2314, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28495, + "end": 28498, + "modifierDepth": 1, + "name": "DUP9", + "source": 5 + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "140" + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "881" + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "882" + }, + { + "begin": 28495, + "end": 28512, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "881" + }, + { + "begin": 28495, + "end": 28512, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28495, + "end": 28519, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28495, + "end": 28519, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28472, + "end": 28475, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "120" + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "883" + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "884" + }, + { + "begin": 28472, + "end": 28484, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "883" + }, + { + "begin": 28472, + "end": 28484, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28472, + "end": 28491, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28472, + "end": 28491, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28472, + "end": 28519, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 28472, + "end": 28519, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28472, + "end": 28570, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28472, + "end": 28570, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "885" + }, + { + "begin": 28472, + "end": 28570, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28472, + "end": 28570, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28546, + "end": 28549, + "modifierDepth": 1, + "name": "DUP9", + "source": 5 + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "160" + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "886" + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "882" + }, + { + "begin": 28546, + "end": 28563, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "886" + }, + { + "begin": 28546, + "end": 28563, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28546, + "end": 28570, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28546, + "end": 28570, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28523, + "end": 28526, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "120" + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "887" + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "884" + }, + { + "begin": 28523, + "end": 28535, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "887" + }, + { + "begin": 28523, + "end": 28535, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28523, + "end": 28542, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28523, + "end": 28542, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28523, + "end": 28570, + "modifierDepth": 1, + "name": "EQ", + "source": 5 + }, + { + "begin": 28523, + "end": 28570, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28472, + "end": 28570, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "885" + }, + { + "begin": 28472, + "end": 28570, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28468, + "end": 28639, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28468, + "end": 28639, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "888" + }, + { + "begin": 28468, + "end": 28639, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "B91B4D4D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28597, + "end": 28624, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 28468, + "end": 28639, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "888" + }, + { + "begin": 28468, + "end": 28639, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28679, + "end": 28695, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFF" + }, + { + "begin": 28657, + "end": 28695, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28657, + "end": 28695, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 28657, + "end": 28660, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 28657, + "end": 28676, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 28657, + "end": 28676, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28657, + "end": 28676, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 28657, + "end": 28695, + "modifierDepth": 1, + "name": "GT", + "source": 5 + }, + { + "begin": 28657, + "end": 28732, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28657, + "end": 28732, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "889" + }, + { + "begin": 28657, + "end": 28732, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28657, + "end": 28732, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28716, + "end": 28732, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFF" + }, + { + "begin": 28699, + "end": 28732, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28699, + "end": 28732, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 28699, + "end": 28702, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 28699, + "end": 28713, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "100" + }, + { + "begin": 28699, + "end": 28713, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28699, + "end": 28713, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 28699, + "end": 28732, + "modifierDepth": 1, + "name": "GT", + "source": 5 + }, + { + "begin": 28657, + "end": 28732, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "889" + }, + { + "begin": 28657, + "end": 28732, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28653, + "end": 28839, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28653, + "end": 28839, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "890" + }, + { + "begin": 28653, + "end": 28839, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28788, + "end": 28791, + "modifierDepth": 1, + "name": "DUP9", + "source": 5 + }, + { + "begin": 28788, + "end": 28807, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 28788, + "end": 28807, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28788, + "end": 28807, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 28809, + "end": 28812, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 28809, + "end": 28823, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "100" + }, + { + "begin": 28809, + "end": 28823, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28809, + "end": 28823, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "32F4AB8E00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "891" + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "88" + }, + { + "begin": 28759, + "end": 28824, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "891" + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28759, + "end": 28824, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 28653, + "end": 28839, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "890" + }, + { + "begin": 28653, + "end": 28839, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28853, + "end": 28886, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 28903, + "end": 28906, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "120" + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "892" + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "884" + }, + { + "begin": 28903, + "end": 28915, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "892" + }, + { + "begin": 28903, + "end": 28915, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28903, + "end": 28922, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28903, + "end": 28922, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "GT", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "893" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "894" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "590" + }, + { + "begin": 28889, + "end": 28923, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "894" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "893" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "895" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "CALLDATACOPY", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "895" + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28889, + "end": 28923, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28853, + "end": 28923, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28853, + "end": 28923, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28964, + "end": 28967, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "120" + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "896" + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "884" + }, + { + "begin": 28964, + "end": 28976, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "896" + }, + { + "begin": 28964, + "end": 28976, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28964, + "end": 28983, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28964, + "end": 28983, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "GT", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "897" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "898" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "590" + }, + { + "begin": 28950, + "end": 28984, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "898" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "897" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "899" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "CALLDATASIZE", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "CALLDATACOPY", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "899" + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 28950, + "end": 28984, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28937, + "end": 28984, + "modifierDepth": 1, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 28937, + "end": 28984, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29016, + "end": 29033, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 29036, + "end": 29040, + "modifierDepth": 1, + "name": "DUP10", + "source": 5 + }, + { + "begin": 29036, + "end": 29052, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 29036, + "end": 29052, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 29036, + "end": 29052, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "DBE65EDC" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "SHL", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP7", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "GAS", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "901" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 29036, + "end": 29054, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "901" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "NOT", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "902" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "586" + }, + { + "begin": 29036, + "end": 29054, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "902" + }, + { + "begin": 29036, + "end": 29054, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29016, + "end": 29054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFF" + }, + { + "begin": 29016, + "end": 29054, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 29016, + "end": 29054, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29016, + "end": 29054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29136, + "end": 29145, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29119, + "end": 29122, + "modifierDepth": 1, + "name": "DUP12", + "source": 5 + }, + { + "begin": 29119, + "end": 29133, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "100" + }, + { + "begin": 29119, + "end": 29133, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29119, + "end": 29133, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29097, + "end": 29100, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 29097, + "end": 29116, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 29097, + "end": 29116, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29097, + "end": 29116, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29097, + "end": 29133, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29097, + "end": 29145, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29097, + "end": 29197, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29097, + "end": 29197, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "903" + }, + { + "begin": 29097, + "end": 29197, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29097, + "end": 29197, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29178, + "end": 29181, + "modifierDepth": 1, + "name": "DUP11", + "source": 5 + }, + { + "begin": 29178, + "end": 29197, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 29178, + "end": 29197, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29178, + "end": 29197, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29161, + "end": 29164, + "modifierDepth": 1, + "name": "DUP12", + "source": 5 + }, + { + "begin": 29161, + "end": 29175, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "100" + }, + { + "begin": 29161, + "end": 29175, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29161, + "end": 29175, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29149, + "end": 29158, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 29149, + "end": 29175, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29149, + "end": 29197, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29097, + "end": 29197, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "903" + }, + { + "begin": 29097, + "end": 29197, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29072, + "end": 29338, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 29072, + "end": 29338, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "904" + }, + { + "begin": 29072, + "end": 29338, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29272, + "end": 29275, + "modifierDepth": 1, + "name": "DUP11", + "source": 5 + }, + { + "begin": 29272, + "end": 29291, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 29272, + "end": 29291, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29272, + "end": 29291, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29293, + "end": 29296, + "modifierDepth": 1, + "name": "DUP12", + "source": 5 + }, + { + "begin": 29293, + "end": 29307, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "100" + }, + { + "begin": 29293, + "end": 29307, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29293, + "end": 29307, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29309, + "end": 29318, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FAA1DB5600000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "905" + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "906" + }, + { + "begin": 29245, + "end": 29319, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "905" + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29245, + "end": 29319, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 29072, + "end": 29338, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "904" + }, + { + "begin": 29072, + "end": 29338, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29361, + "end": 29370, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "907" + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29376, + "end": 29392, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 29376, + "end": 29399, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29372, + "end": 29373, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29372, + "end": 29399, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "908" + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29428, + "end": 29438, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 29461, + "end": 29464, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "120" + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "910" + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "884" + }, + { + "begin": 29461, + "end": 29473, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "910" + }, + { + "begin": 29461, + "end": 29473, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29474, + "end": 29475, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "911" + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "912" + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 29461, + "end": 29476, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "912" + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "911" + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29461, + "end": 29476, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29448, + "end": 29457, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 29441, + "end": 29476, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29428, + "end": 29476, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29428, + "end": 29476, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29509, + "end": 29510, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 29503, + "end": 29506, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29503, + "end": 29510, + "modifierDepth": 1, + "name": "SLT", + "source": 5 + }, + { + "begin": 29503, + "end": 29545, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29503, + "end": 29545, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "913" + }, + { + "begin": 29503, + "end": 29545, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29503, + "end": 29545, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29529, + "end": 29545, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFF" + }, + { + "begin": 29514, + "end": 29545, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29514, + "end": 29545, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 29522, + "end": 29525, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29514, + "end": 29545, + "modifierDepth": 1, + "name": "GT", + "source": 5 + }, + { + "begin": 29503, + "end": 29545, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "913" + }, + { + "begin": 29503, + "end": 29545, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29499, + "end": 29580, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 29499, + "end": 29580, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "914" + }, + { + "begin": 29499, + "end": 29580, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29576, + "end": 29579, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E1505CC200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "915" + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "916" + }, + { + "begin": 29554, + "end": 29580, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "915" + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29554, + "end": 29580, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 29499, + "end": 29580, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "914" + }, + { + "begin": 29499, + "end": 29580, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29626, + "end": 29629, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29602, + "end": 29612, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 29613, + "end": 29614, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "917" + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "918" + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 29602, + "end": 29615, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "918" + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "917" + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29602, + "end": 29615, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29602, + "end": 29630, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29602, + "end": 29630, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29602, + "end": 29630, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 29602, + "end": 29630, + "name": "POP", + "source": 5 + }, + { + "begin": 29602, + "end": 29630, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29674, + "end": 29838, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "919" + }, + { + "begin": 29743, + "end": 29746, + "modifierDepth": 1, + "name": "DUP14", + "source": 5 + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "140" + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "920" + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "882" + }, + { + "begin": 29743, + "end": 29760, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "920" + }, + { + "begin": 29743, + "end": 29760, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29761, + "end": 29762, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "921" + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "922" + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 29743, + "end": 29763, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "922" + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "921" + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29743, + "end": 29763, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29773, + "end": 29776, + "modifierDepth": 1, + "name": "DUP15", + "source": 5 + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "160" + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "923" + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "882" + }, + { + "begin": 29773, + "end": 29790, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "923" + }, + { + "begin": 29773, + "end": 29790, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29791, + "end": 29792, + "modifierDepth": 1, + "name": "DUP6", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "924" + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "925" + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 29773, + "end": 29793, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "925" + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "924" + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29773, + "end": 29793, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 29811, + "end": 29814, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 29674, + "end": 29710, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "926" + }, + { + "begin": 29674, + "end": 29838, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29674, + "end": 29838, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "919" + }, + { + "begin": 29674, + "end": 29838, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29652, + "end": 29668, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 29669, + "end": 29670, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "927" + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "928" + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "176" + }, + { + "begin": 29652, + "end": 29671, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "928" + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "927" + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "MUL", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29652, + "end": 29671, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29652, + "end": 29838, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29652, + "end": 29838, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29652, + "end": 29838, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 29652, + "end": 29838, + "name": "POP", + "source": 5 + }, + { + "begin": 29652, + "end": 29838, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29406, + "end": 29857, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29401, + "end": 29404, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29401, + "end": 29404, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 29401, + "end": 29404, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 29401, + "end": 29404, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 29401, + "end": 29404, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "907" + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "908" + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29356, + "end": 29857, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28998, + "end": 29871, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29885, + "end": 29908, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 29922, + "end": 29941, + "name": "DUP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30009, + "modifierDepth": 1, + "name": "DUP11", + "source": 5 + }, + { + "begin": 30005, + "end": 30014, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 30005, + "end": 30014, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30005, + "end": 30014, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "383D15C5" + }, + { + "begin": 30015, + "end": 30018, + "modifierDepth": 1, + "name": "DUP14", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "180" + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "929" + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "930" + }, + { + "begin": 30015, + "end": 30021, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "929" + }, + { + "begin": 30015, + "end": 30021, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30023, + "end": 30039, + "modifierDepth": 1, + "name": "DUP6", + "source": 5 + }, + { + "begin": 30041, + "end": 30044, + "modifierDepth": 1, + "name": "DUP16", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1A0" + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "931" + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "930" + }, + { + "begin": 30041, + "end": 30053, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "931" + }, + { + "begin": 30041, + "end": 30053, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SHL", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "932" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "933" + }, + { + "begin": 30005, + "end": 30054, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "932" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP4", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP8", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "GAS", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "CALL", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "935" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 30005, + "end": 30054, + "name": "DUP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "935" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "NOT", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "936" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "937" + }, + { + "begin": 30005, + "end": 30054, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "936" + }, + { + "begin": 30005, + "end": 30054, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP8", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 29955, + "end": 30054, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30069, + "end": 30089, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 30092, + "end": 30124, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "938" + }, + { + "begin": 30112, + "end": 30123, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 30092, + "end": 30107, + "modifierDepth": 1, + "name": "DUP5", + "source": 5 + }, + { + "begin": 30092, + "end": 30111, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "939" + }, + { + "begin": 30092, + "end": 30111, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30092, + "end": 30124, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 30092, + "end": 30124, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30092, + "end": 30124, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 30092, + "end": 30124, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30092, + "end": 30124, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30092, + "end": 30124, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "938" + }, + { + "begin": 30092, + "end": 30124, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30069, + "end": 30124, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30069, + "end": 30124, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30154, + "end": 30176, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "940" + }, + { + "begin": 30154, + "end": 30166, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30154, + "end": 30174, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "861" + }, + { + "begin": 30154, + "end": 30176, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30154, + "end": 30176, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "940" + }, + { + "begin": 30154, + "end": 30176, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30139, + "end": 30176, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 30139, + "end": 30176, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30139, + "end": 30176, + "modifierDepth": 1, + "name": "SWAP11", + "source": 5 + }, + { + "begin": 30139, + "end": 30176, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30205, + "end": 30227, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "941" + }, + { + "begin": 30205, + "end": 30217, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30205, + "end": 30225, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "866" + }, + { + "begin": 30205, + "end": 30227, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30205, + "end": 30227, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "941" + }, + { + "begin": 30205, + "end": 30227, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30190, + "end": 30227, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 30190, + "end": 30227, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30190, + "end": 30227, + "modifierDepth": 1, + "name": "SWAP10", + "source": 5 + }, + { + "begin": 30190, + "end": 30227, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30261, + "end": 30264, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 30261, + "end": 30275, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "A0" + }, + { + "begin": 30261, + "end": 30275, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30261, + "end": 30275, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 30246, + "end": 30258, + "modifierDepth": 1, + "name": "DUP12", + "source": 5 + }, + { + "begin": 30246, + "end": 30275, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 30246, + "end": 30308, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 30246, + "end": 30308, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "942" + }, + { + "begin": 30246, + "end": 30308, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 30246, + "end": 30308, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30294, + "end": 30297, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 30294, + "end": 30308, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "C0" + }, + { + "begin": 30294, + "end": 30308, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30294, + "end": 30308, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 30279, + "end": 30291, + "modifierDepth": 1, + "name": "DUP11", + "source": 5 + }, + { + "begin": 30279, + "end": 30308, + "modifierDepth": 1, + "name": "LT", + "source": 5 + }, + { + "begin": 30246, + "end": 30308, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "942" + }, + { + "begin": 30246, + "end": 30308, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30242, + "end": 30440, + "modifierDepth": 1, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 30242, + "end": 30440, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "943" + }, + { + "begin": 30242, + "end": 30440, + "modifierDepth": 1, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 30366, + "end": 30369, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 30366, + "end": 30380, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "A0" + }, + { + "begin": 30366, + "end": 30380, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30366, + "end": 30380, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 30382, + "end": 30394, + "modifierDepth": 1, + "name": "DUP12", + "source": 5 + }, + { + "begin": 30396, + "end": 30399, + "modifierDepth": 1, + "name": "DUP15", + "source": 5 + }, + { + "begin": 30396, + "end": 30410, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "C0" + }, + { + "begin": 30396, + "end": 30410, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30396, + "end": 30410, + "modifierDepth": 1, + "name": "CALLDATALOAD", + "source": 5 + }, + { + "begin": 30412, + "end": 30424, + "modifierDepth": 1, + "name": "DUP13", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "3199F6EE00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "DUP2", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "ADD", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "944" + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "873" + }, + { + "begin": 30335, + "end": 30425, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "944" + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "DUP1", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SUB", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 30335, + "end": 30425, + "modifierDepth": 1, + "name": "REVERT", + "source": 5 + }, + { + "begin": 30242, + "end": 30440, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "943" + }, + { + "begin": 30242, + "end": 30440, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30468, + "end": 30489, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "945" + }, + { + "begin": 30468, + "end": 30479, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 30468, + "end": 30487, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "861" + }, + { + "begin": 30468, + "end": 30489, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30468, + "end": 30489, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "945" + }, + { + "begin": 30468, + "end": 30489, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30454, + "end": 30489, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 30454, + "end": 30489, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30454, + "end": 30489, + "modifierDepth": 1, + "name": "SWAP9", + "source": 5 + }, + { + "begin": 30454, + "end": 30489, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 30517, + "end": 30538, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "946" + }, + { + "begin": 30517, + "end": 30528, + "modifierDepth": 1, + "name": "DUP3", + "source": 5 + }, + { + "begin": 30517, + "end": 30536, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 5, + "value": "866" + }, + { + "begin": 30517, + "end": 30538, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 5 + }, + { + "begin": 30517, + "end": 30538, + "modifierDepth": 1, + "name": "tag", + "source": 5, + "value": "946" + }, + { + "begin": 30517, + "end": 30538, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 30503, + "end": 30538, + "modifierDepth": 1, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 30503, + "end": 30538, + "modifierDepth": 1, + "name": "AND", + "source": 5 + }, + { + "begin": 30503, + "end": 30538, + "modifierDepth": 1, + "name": "SWAP8", + "source": 5 + }, + { + "begin": 30503, + "end": 30538, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28444, + "end": 30549, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28444, + "end": 30549, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28444, + "end": 30549, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28444, + "end": 30549, + "modifierDepth": 1, + "name": "POP", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "POP", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "POP", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "POP", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "name": "SWAP6", + "source": 5 + }, + { + "begin": 28066, + "end": 30555, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "name": "tag", + "source": 5, + "value": "604" + }, + { + "begin": 40051, + "end": 40529, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40179, + "end": 40191, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 40222, + "end": 40232, + "name": "DUP1", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 40211, + "end": 40232, + "name": "DUP2", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "GT", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH [tag]", + "source": 5, + "value": "948" + }, + { + "begin": 40211, + "end": 40232, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH [tag]", + "source": 5, + "value": "949" + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 40211, + "end": 40232, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "tag", + "source": 5, + "value": "949" + }, + { + "begin": 40211, + "end": 40232, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "tag", + "source": 5, + "value": "948" + }, + { + "begin": 40211, + "end": 40232, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40211, + "end": 40218, + "name": "DUP3", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH", + "source": 5, + "value": "1" + }, + { + "begin": 40211, + "end": 40232, + "name": "DUP2", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "GT", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH [tag]", + "source": 5, + "value": "950" + }, + { + "begin": 40211, + "end": 40232, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH [tag]", + "source": 5, + "value": "951" + }, + { + "begin": 40211, + "end": 40232, + "name": "PUSH [tag]", + "source": 5, + "value": "629" + }, + { + "begin": 40211, + "end": 40232, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "tag", + "source": 5, + "value": "951" + }, + { + "begin": 40211, + "end": 40232, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "tag", + "source": 5, + "value": "950" + }, + { + "begin": 40211, + "end": 40232, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40211, + "end": 40232, + "name": "SUB", + "source": 5 + }, + { + "begin": 40207, + "end": 40523, + "name": "PUSH [tag]", + "source": 5, + "value": "952" + }, + { + "begin": 40207, + "end": 40523, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 40255, + "end": 40265, + "name": "PUSHIMMUTABLE", + "source": 5, + "value": "589" + }, + { + "begin": 40255, + "end": 40273, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 40255, + "end": 40273, + "name": "AND", + "source": 5 + }, + { + "begin": 40255, + "end": 40273, + "name": "PUSH", + "source": 5, + "value": "E6A43905" + }, + { + "begin": 40282, + "end": 40288, + "name": "DUP7", + "source": 5 + }, + { + "begin": 40299, + "end": 40305, + "name": "DUP7", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 40255, + "end": 40307, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP4", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFF" + }, + { + "begin": 40255, + "end": 40307, + "name": "AND", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "E0" + }, + { + "begin": 40255, + "end": 40307, + "name": "SHL", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP2", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 40255, + "end": 40307, + "name": "ADD", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH [tag]", + "source": 5, + "value": "953" + }, + { + "begin": 40255, + "end": 40307, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH [tag]", + "source": 5, + "value": "954" + }, + { + "begin": 40255, + "end": 40307, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "tag", + "source": 5, + "value": "953" + }, + { + "begin": 40255, + "end": 40307, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "20" + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 40255, + "end": 40307, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP1", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP4", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "SUB", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP2", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP7", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "GAS", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "STATICCALL", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP1", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "ISZERO", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH [tag]", + "source": 5, + "value": "956" + }, + { + "begin": 40255, + "end": 40307, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP1", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "RETURNDATACOPY", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 40255, + "end": 40307, + "name": "REVERT", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "tag", + "source": 5, + "value": "956" + }, + { + "begin": 40255, + "end": 40307, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "POP", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "POP", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "POP", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "POP", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 40255, + "end": 40307, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "RETURNDATASIZE", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 40255, + "end": 40307, + "name": "NOT", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "1F" + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP3", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "ADD", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "AND", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP3", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "ADD", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP1", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 40255, + "end": 40307, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "POP", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "DUP2", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "ADD", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH [tag]", + "source": 5, + "value": "957" + }, + { + "begin": 40255, + "end": 40307, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "PUSH [tag]", + "source": 5, + "value": "335" + }, + { + "begin": 40255, + "end": 40307, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40255, + "end": 40307, + "name": "tag", + "source": 5, + "value": "957" + }, + { + "begin": 40255, + "end": 40307, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40248, + "end": 40307, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 40248, + "end": 40307, + "name": "POP", + "source": 5 + }, + { + "begin": 40341, + "end": 40342, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 40325, + "end": 40343, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 40325, + "end": 40343, + "name": "AND", + "source": 5 + }, + { + "begin": 40325, + "end": 40329, + "name": "DUP2", + "source": 5 + }, + { + "begin": 40325, + "end": 40343, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 40325, + "end": 40343, + "name": "AND", + "source": 5 + }, + { + "begin": 40325, + "end": 40343, + "name": "SUB", + "source": 5 + }, + { + "begin": 40321, + "end": 40419, + "name": "PUSH [tag]", + "source": 5, + "value": "958" + }, + { + "begin": 40321, + "end": 40419, + "name": "JUMPI", + "source": 5 + }, + { + "begin": 40385, + "end": 40391, + "name": "DUP5", + "source": 5 + }, + { + "begin": 40402, + "end": 40408, + "name": "DUP5", + "source": 5 + }, + { + "begin": 40411, + "end": 40418, + "name": "DUP5", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 40352, + "end": 40419, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "PUSH", + "source": 5, + "value": "D648E3A200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 40352, + "end": 40419, + "name": "DUP2", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "MSTORE", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "PUSH", + "source": 5, + "value": "4" + }, + { + "begin": 40352, + "end": 40419, + "name": "ADD", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "PUSH [tag]", + "source": 5, + "value": "959" + }, + { + "begin": 40352, + "end": 40419, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "SWAP3", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "PUSH [tag]", + "source": 5, + "value": "847" + }, + { + "begin": 40352, + "end": 40419, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "tag", + "source": 5, + "value": "959" + }, + { + "begin": 40352, + "end": 40419, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "PUSH", + "source": 5, + "value": "40" + }, + { + "begin": 40352, + "end": 40419, + "name": "MLOAD", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "DUP1", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "SUB", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 40352, + "end": 40419, + "name": "REVERT", + "source": 5 + }, + { + "begin": 40321, + "end": 40419, + "name": "tag", + "source": 5, + "value": "958" + }, + { + "begin": 40321, + "end": 40419, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40207, + "end": 40523, + "name": "PUSH [tag]", + "source": 5, + "value": "960" + }, + { + "begin": 40207, + "end": 40523, + "name": "JUMP", + "source": 5 + }, + { + "begin": 40207, + "end": 40523, + "name": "tag", + "source": 5, + "value": "952" + }, + { + "begin": 40207, + "end": 40523, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40465, + "end": 40511, + "name": "PUSH [tag]", + "source": 5, + "value": "961" + }, + { + "begin": 40487, + "end": 40493, + "name": "DUP6", + "source": 5 + }, + { + "begin": 40495, + "end": 40501, + "name": "DUP6", + "source": 5 + }, + { + "begin": 40503, + "end": 40510, + "name": "DUP6", + "source": 5 + }, + { + "begin": 40465, + "end": 40486, + "name": "PUSH [tag]", + "source": 5, + "value": "376" + }, + { + "begin": 40465, + "end": 40511, + "jumpType": "[in]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 40465, + "end": 40511, + "name": "tag", + "source": 5, + "value": "961" + }, + { + "begin": 40465, + "end": 40511, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40450, + "end": 40512, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 40450, + "end": 40512, + "name": "POP", + "source": 5 + }, + { + "begin": 40207, + "end": 40523, + "name": "tag", + "source": 5, + "value": "960" + }, + { + "begin": 40207, + "end": 40523, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "name": "SWAP5", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "name": "SWAP4", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "name": "POP", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "name": "POP", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "name": "POP", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "name": "POP", + "source": 5 + }, + { + "begin": 40051, + "end": 40529, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 944, + "end": 1194, + "name": "tag", + "source": 26, + "value": "610" + }, + { + "begin": 944, + "end": 1194, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1053, + "end": 1070, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1096, + "end": 1123, + "name": "PUSH", + "source": 26, + "value": "23B872DD" + }, + { + "begin": 1096, + "end": 1123, + "name": "PUSH", + "source": 26, + "value": "E0" + }, + { + "begin": 1096, + "end": 1123, + "name": "SHL", + "source": 26 + }, + { + "begin": 1125, + "end": 1130, + "name": "DUP5", + "source": 26 + }, + { + "begin": 1132, + "end": 1141, + "name": "DUP5", + "source": 26 + }, + { + "begin": 1143, + "end": 1149, + "name": "DUP5", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 1073, + "end": 1150, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "24" + }, + { + "begin": 1073, + "end": 1150, + "name": "ADD", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH [tag]", + "source": 26, + "value": "963" + }, + { + "begin": 1073, + "end": 1150, + "name": "SWAP4", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "SWAP3", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "SWAP2", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH [tag]", + "source": 26, + "value": "847" + }, + { + "begin": 1073, + "end": 1150, + "jumpType": "[in]", + "name": "JUMP", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "tag", + "source": 26, + "value": "963" + }, + { + "begin": 1073, + "end": 1150, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 1073, + "end": 1150, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "20" + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP2", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "SUB", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "SUB", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP2", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 1073, + "end": 1150, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1073, + "end": 1150, + "name": "NOT", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "AND", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "20" + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP3", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "ADD", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP1", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "PUSH", + "source": 26, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP2", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "AND", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "OR", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "POP", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "POP", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "POP", + "source": 26 + }, + { + "begin": 1073, + "end": 1150, + "name": "POP", + "source": 26 + }, + { + "begin": 1053, + "end": 1150, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1053, + "end": 1150, + "name": "POP", + "source": 26 + }, + { + "begin": 1161, + "end": 1187, + "name": "PUSH [tag]", + "source": 26, + "value": "964" + }, + { + "begin": 1175, + "end": 1180, + "name": "DUP6", + "source": 26 + }, + { + "begin": 1182, + "end": 1186, + "name": "DUP3", + "source": 26 + }, + { + "begin": 1161, + "end": 1174, + "name": "PUSH [tag]", + "source": 26, + "value": "836" + }, + { + "begin": 1161, + "end": 1187, + "jumpType": "[in]", + "name": "JUMP", + "source": 26 + }, + { + "begin": 1161, + "end": 1187, + "name": "tag", + "source": 26, + "value": "964" + }, + { + "begin": 1161, + "end": 1187, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1043, + "end": 1194, + "name": "POP", + "source": 26 + }, + { + "begin": 944, + "end": 1194, + "name": "POP", + "source": 26 + }, + { + "begin": 944, + "end": 1194, + "name": "POP", + "source": 26 + }, + { + "begin": 944, + "end": 1194, + "name": "POP", + "source": 26 + }, + { + "begin": 944, + "end": 1194, + "name": "POP", + "source": 26 + }, + { + "begin": 944, + "end": 1194, + "jumpType": "[out]", + "name": "JUMP", + "source": 26 + }, + { + "begin": 1404, + "end": 1948, + "name": "tag", + "source": 25, + "value": "643" + }, + { + "begin": 1404, + "end": 1948, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1530, + "end": 1547, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 1579, + "end": 1580, + "name": "DUP1", + "source": 25 + }, + { + "begin": 1567, + "end": 1575, + "name": "DUP5", + "source": 25 + }, + { + "begin": 1567, + "end": 1580, + "name": "SUB", + "source": 25 + }, + { + "begin": 1563, + "end": 1626, + "name": "PUSH [tag]", + "source": 25, + "value": "966" + }, + { + "begin": 1563, + "end": 1626, + "name": "JUMPI", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 1589, + "end": 1626, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "PUSH", + "source": 25, + "value": "B937356B00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1589, + "end": 1626, + "name": "DUP2", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "PUSH", + "source": 25, + "value": "4" + }, + { + "begin": 1589, + "end": 1626, + "name": "ADD", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 1589, + "end": 1626, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "DUP1", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "SUB", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1589, + "end": 1626, + "name": "REVERT", + "source": 25 + }, + { + "begin": 1563, + "end": 1626, + "name": "tag", + "source": 25, + "value": "966" + }, + { + "begin": 1563, + "end": 1626, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1653, + "end": 1654, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 1640, + "end": 1649, + "name": "DUP4", + "source": 25 + }, + { + "begin": 1640, + "end": 1654, + "name": "EQ", + "source": 25 + }, + { + "begin": 1640, + "end": 1673, + "name": "DUP1", + "source": 25 + }, + { + "begin": 1640, + "end": 1673, + "name": "PUSH [tag]", + "source": 25, + "value": "967" + }, + { + "begin": 1640, + "end": 1673, + "name": "JUMPI", + "source": 25 + }, + { + "begin": 1640, + "end": 1673, + "name": "POP", + "source": 25 + }, + { + "begin": 1672, + "end": 1673, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 1658, + "end": 1668, + "name": "DUP3", + "source": 25 + }, + { + "begin": 1658, + "end": 1673, + "name": "EQ", + "source": 25 + }, + { + "begin": 1640, + "end": 1673, + "name": "tag", + "source": 25, + "value": "967" + }, + { + "begin": 1640, + "end": 1673, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1636, + "end": 1722, + "name": "ISZERO", + "source": 25 + }, + { + "begin": 1636, + "end": 1722, + "name": "PUSH [tag]", + "source": 25, + "value": "968" + }, + { + "begin": 1636, + "end": 1722, + "name": "JUMPI", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 1682, + "end": 1722, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "PUSH", + "source": 25, + "value": "7B03555500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1682, + "end": 1722, + "name": "DUP2", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "PUSH", + "source": 25, + "value": "4" + }, + { + "begin": 1682, + "end": 1722, + "name": "ADD", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 1682, + "end": 1722, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "DUP1", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "SUB", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1682, + "end": 1722, + "name": "REVERT", + "source": 25 + }, + { + "begin": 1636, + "end": 1722, + "name": "tag", + "source": 25, + "value": "968" + }, + { + "begin": 1636, + "end": 1722, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1732, + "end": 1755, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 1769, + "end": 1772, + "name": "PUSH", + "source": 25, + "value": "3E5" + }, + { + "begin": 1758, + "end": 1766, + "name": "DUP6", + "source": 25 + }, + { + "begin": 1758, + "end": 1772, + "name": "PUSH [tag]", + "source": 25, + "value": "969" + }, + { + "begin": 1758, + "end": 1772, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 1758, + "end": 1772, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1758, + "end": 1772, + "name": "PUSH [tag]", + "source": 25, + "value": "970" + }, + { + "begin": 1758, + "end": 1772, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 1758, + "end": 1772, + "name": "tag", + "source": 25, + "value": "969" + }, + { + "begin": 1758, + "end": 1772, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1732, + "end": 1772, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1732, + "end": 1772, + "name": "POP", + "source": 25 + }, + { + "begin": 1782, + "end": 1799, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 1820, + "end": 1830, + "name": "DUP4", + "source": 25 + }, + { + "begin": 1802, + "end": 1817, + "name": "DUP3", + "source": 25 + }, + { + "begin": 1802, + "end": 1830, + "name": "PUSH [tag]", + "source": 25, + "value": "971" + }, + { + "begin": 1802, + "end": 1830, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 1802, + "end": 1830, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1802, + "end": 1830, + "name": "PUSH [tag]", + "source": 25, + "value": "970" + }, + { + "begin": 1802, + "end": 1830, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 1802, + "end": 1830, + "name": "tag", + "source": 25, + "value": "971" + }, + { + "begin": 1802, + "end": 1830, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1782, + "end": 1830, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1782, + "end": 1830, + "name": "POP", + "source": 25 + }, + { + "begin": 1840, + "end": 1859, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 1881, + "end": 1896, + "name": "DUP3", + "source": 25 + }, + { + "begin": 1874, + "end": 1878, + "name": "PUSH", + "source": 25, + "value": "3E8" + }, + { + "begin": 1862, + "end": 1871, + "name": "DUP8", + "source": 25 + }, + { + "begin": 1862, + "end": 1878, + "name": "PUSH [tag]", + "source": 25, + "value": "972" + }, + { + "begin": 1862, + "end": 1878, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 1862, + "end": 1878, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1862, + "end": 1878, + "name": "PUSH [tag]", + "source": 25, + "value": "970" + }, + { + "begin": 1862, + "end": 1878, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 1862, + "end": 1878, + "name": "tag", + "source": 25, + "value": "972" + }, + { + "begin": 1862, + "end": 1878, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1862, + "end": 1896, + "name": "PUSH [tag]", + "source": 25, + "value": "973" + }, + { + "begin": 1862, + "end": 1896, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 1862, + "end": 1896, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1862, + "end": 1896, + "name": "PUSH [tag]", + "source": 25, + "value": "171" + }, + { + "begin": 1862, + "end": 1896, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 1862, + "end": 1896, + "name": "tag", + "source": 25, + "value": "973" + }, + { + "begin": 1862, + "end": 1896, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1840, + "end": 1896, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1840, + "end": 1896, + "name": "POP", + "source": 25 + }, + { + "begin": 1930, + "end": 1941, + "name": "DUP1", + "source": 25 + }, + { + "begin": 1918, + "end": 1927, + "name": "DUP3", + "source": 25 + }, + { + "begin": 1918, + "end": 1941, + "name": "PUSH [tag]", + "source": 25, + "value": "974" + }, + { + "begin": 1918, + "end": 1941, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 1918, + "end": 1941, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 1918, + "end": 1941, + "name": "PUSH [tag]", + "source": 25, + "value": "975" + }, + { + "begin": 1918, + "end": 1941, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 1918, + "end": 1941, + "name": "tag", + "source": 25, + "value": "974" + }, + { + "begin": 1918, + "end": 1941, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 1906, + "end": 1941, + "name": "SWAP4", + "source": 25 + }, + { + "begin": 1906, + "end": 1941, + "name": "POP", + "source": 25 + }, + { + "begin": 1553, + "end": 1948, + "name": "POP", + "source": 25 + }, + { + "begin": 1553, + "end": 1948, + "name": "POP", + "source": 25 + }, + { + "begin": 1553, + "end": 1948, + "name": "POP", + "source": 25 + }, + { + "begin": 1404, + "end": 1948, + "name": "SWAP4", + "source": 25 + }, + { + "begin": 1404, + "end": 1948, + "name": "SWAP3", + "source": 25 + }, + { + "begin": 1404, + "end": 1948, + "name": "POP", + "source": 25 + }, + { + "begin": 1404, + "end": 1948, + "name": "POP", + "source": 25 + }, + { + "begin": 1404, + "end": 1948, + "name": "POP", + "source": 25 + }, + { + "begin": 1404, + "end": 1948, + "jumpType": "[out]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2066, + "end": 2559, + "name": "tag", + "source": 25, + "value": "709" + }, + { + "begin": 2066, + "end": 2559, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2192, + "end": 2208, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 2241, + "end": 2242, + "name": "DUP1", + "source": 25 + }, + { + "begin": 2228, + "end": 2237, + "name": "DUP5", + "source": 25 + }, + { + "begin": 2228, + "end": 2242, + "name": "SUB", + "source": 25 + }, + { + "begin": 2224, + "end": 2288, + "name": "PUSH [tag]", + "source": 25, + "value": "977" + }, + { + "begin": 2224, + "end": 2288, + "name": "JUMPI", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 2251, + "end": 2288, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "PUSH", + "source": 25, + "value": "B937356B00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2251, + "end": 2288, + "name": "DUP2", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "PUSH", + "source": 25, + "value": "4" + }, + { + "begin": 2251, + "end": 2288, + "name": "ADD", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 2251, + "end": 2288, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "DUP1", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "SUB", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2251, + "end": 2288, + "name": "REVERT", + "source": 25 + }, + { + "begin": 2224, + "end": 2288, + "name": "tag", + "source": 25, + "value": "977" + }, + { + "begin": 2224, + "end": 2288, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2315, + "end": 2316, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 2302, + "end": 2311, + "name": "DUP4", + "source": 25 + }, + { + "begin": 2302, + "end": 2316, + "name": "EQ", + "source": 25 + }, + { + "begin": 2302, + "end": 2335, + "name": "DUP1", + "source": 25 + }, + { + "begin": 2302, + "end": 2335, + "name": "PUSH [tag]", + "source": 25, + "value": "978" + }, + { + "begin": 2302, + "end": 2335, + "name": "JUMPI", + "source": 25 + }, + { + "begin": 2302, + "end": 2335, + "name": "POP", + "source": 25 + }, + { + "begin": 2334, + "end": 2335, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 2320, + "end": 2330, + "name": "DUP3", + "source": 25 + }, + { + "begin": 2320, + "end": 2335, + "name": "EQ", + "source": 25 + }, + { + "begin": 2302, + "end": 2335, + "name": "tag", + "source": 25, + "value": "978" + }, + { + "begin": 2302, + "end": 2335, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2298, + "end": 2384, + "name": "ISZERO", + "source": 25 + }, + { + "begin": 2298, + "end": 2384, + "name": "PUSH [tag]", + "source": 25, + "value": "979" + }, + { + "begin": 2298, + "end": 2384, + "name": "JUMPI", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 2344, + "end": 2384, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "PUSH", + "source": 25, + "value": "7B03555500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2344, + "end": 2384, + "name": "DUP2", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "PUSH", + "source": 25, + "value": "4" + }, + { + "begin": 2344, + "end": 2384, + "name": "ADD", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 2344, + "end": 2384, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "DUP1", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "SUB", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2344, + "end": 2384, + "name": "REVERT", + "source": 25 + }, + { + "begin": 2298, + "end": 2384, + "name": "tag", + "source": 25, + "value": "979" + }, + { + "begin": 2298, + "end": 2384, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2394, + "end": 2411, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 2438, + "end": 2442, + "name": "PUSH", + "source": 25, + "value": "3E8" + }, + { + "begin": 2426, + "end": 2435, + "name": "DUP6", + "source": 25 + }, + { + "begin": 2414, + "end": 2423, + "name": "DUP6", + "source": 25 + }, + { + "begin": 2414, + "end": 2435, + "name": "PUSH [tag]", + "source": 25, + "value": "980" + }, + { + "begin": 2414, + "end": 2435, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2414, + "end": 2435, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2414, + "end": 2435, + "name": "PUSH [tag]", + "source": 25, + "value": "970" + }, + { + "begin": 2414, + "end": 2435, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2414, + "end": 2435, + "name": "tag", + "source": 25, + "value": "980" + }, + { + "begin": 2414, + "end": 2435, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2414, + "end": 2442, + "name": "PUSH [tag]", + "source": 25, + "value": "981" + }, + { + "begin": 2414, + "end": 2442, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2414, + "end": 2442, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2414, + "end": 2442, + "name": "PUSH [tag]", + "source": 25, + "value": "970" + }, + { + "begin": 2414, + "end": 2442, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2414, + "end": 2442, + "name": "tag", + "source": 25, + "value": "981" + }, + { + "begin": 2414, + "end": 2442, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2394, + "end": 2442, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2394, + "end": 2442, + "name": "POP", + "source": 25 + }, + { + "begin": 2452, + "end": 2471, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 2501, + "end": 2504, + "name": "PUSH", + "source": 25, + "value": "3E5" + }, + { + "begin": 2488, + "end": 2497, + "name": "DUP7", + "source": 25 + }, + { + "begin": 2475, + "end": 2485, + "name": "DUP6", + "source": 25 + }, + { + "begin": 2475, + "end": 2497, + "name": "PUSH [tag]", + "source": 25, + "value": "982" + }, + { + "begin": 2475, + "end": 2497, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2475, + "end": 2497, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2475, + "end": 2497, + "name": "PUSH [tag]", + "source": 25, + "value": "202" + }, + { + "begin": 2475, + "end": 2497, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2475, + "end": 2497, + "name": "tag", + "source": 25, + "value": "982" + }, + { + "begin": 2475, + "end": 2497, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2474, + "end": 2504, + "name": "PUSH [tag]", + "source": 25, + "value": "983" + }, + { + "begin": 2474, + "end": 2504, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2474, + "end": 2504, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2474, + "end": 2504, + "name": "PUSH [tag]", + "source": 25, + "value": "970" + }, + { + "begin": 2474, + "end": 2504, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2474, + "end": 2504, + "name": "tag", + "source": 25, + "value": "983" + }, + { + "begin": 2474, + "end": 2504, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2452, + "end": 2504, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2452, + "end": 2504, + "name": "POP", + "source": 25 + }, + { + "begin": 2551, + "end": 2552, + "name": "PUSH", + "source": 25, + "value": "1" + }, + { + "begin": 2537, + "end": 2548, + "name": "DUP2", + "source": 25 + }, + { + "begin": 2525, + "end": 2534, + "name": "DUP4", + "source": 25 + }, + { + "begin": 2525, + "end": 2548, + "name": "PUSH [tag]", + "source": 25, + "value": "984" + }, + { + "begin": 2525, + "end": 2548, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2525, + "end": 2548, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2525, + "end": 2548, + "name": "PUSH [tag]", + "source": 25, + "value": "975" + }, + { + "begin": 2525, + "end": 2548, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2525, + "end": 2548, + "name": "tag", + "source": 25, + "value": "984" + }, + { + "begin": 2525, + "end": 2548, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2525, + "end": 2552, + "name": "PUSH [tag]", + "source": 25, + "value": "985" + }, + { + "begin": 2525, + "end": 2552, + "name": "SWAP2", + "source": 25 + }, + { + "begin": 2525, + "end": 2552, + "name": "SWAP1", + "source": 25 + }, + { + "begin": 2525, + "end": 2552, + "name": "PUSH [tag]", + "source": 25, + "value": "171" + }, + { + "begin": 2525, + "end": 2552, + "jumpType": "[in]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2525, + "end": 2552, + "name": "tag", + "source": 25, + "value": "985" + }, + { + "begin": 2525, + "end": 2552, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 2514, + "end": 2552, + "name": "SWAP3", + "source": 25 + }, + { + "begin": 2514, + "end": 2552, + "name": "POP", + "source": 25 + }, + { + "begin": 2214, + "end": 2559, + "name": "POP", + "source": 25 + }, + { + "begin": 2214, + "end": 2559, + "name": "POP", + "source": 25 + }, + { + "begin": 2066, + "end": 2559, + "name": "SWAP4", + "source": 25 + }, + { + "begin": 2066, + "end": 2559, + "name": "SWAP3", + "source": 25 + }, + { + "begin": 2066, + "end": 2559, + "name": "POP", + "source": 25 + }, + { + "begin": 2066, + "end": 2559, + "name": "POP", + "source": 25 + }, + { + "begin": 2066, + "end": 2559, + "name": "POP", + "source": 25 + }, + { + "begin": 2066, + "end": 2559, + "jumpType": "[out]", + "name": "JUMP", + "source": 25 + }, + { + "begin": 2521, + "end": 2699, + "name": "tag", + "source": 30, + "value": "773" + }, + { + "begin": 2521, + "end": 2699, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 2571, + "end": 2581, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 2583, + "end": 2593, + "name": "DUP1", + "source": 30 + }, + { + "begin": 2641, + "end": 2649, + "name": "PUSH", + "source": 30, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2638, + "end": 2639, + "name": "DUP4", + "source": 30 + }, + { + "begin": 2634, + "end": 2650, + "name": "AND", + "source": 30 + }, + { + "begin": 2628, + "end": 2650, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 2628, + "end": 2650, + "name": "POP", + "source": 30 + }, + { + "begin": 2681, + "end": 2682, + "name": "DUP3", + "source": 30 + }, + { + "begin": 2673, + "end": 2679, + "name": "PUSH", + "source": 30, + "value": "80" + }, + { + "begin": 2669, + "end": 2683, + "name": "SHR", + "source": 30 + }, + { + "begin": 2663, + "end": 2683, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 2663, + "end": 2683, + "name": "POP", + "source": 30 + }, + { + "begin": 2521, + "end": 2699, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 2521, + "end": 2699, + "name": "POP", + "source": 30 + }, + { + "begin": 2521, + "end": 2699, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 2521, + "end": 2699, + "jumpType": "[out]", + "name": "JUMP", + "source": 30 + }, + { + "begin": 1645, + "end": 2402, + "name": "tag", + "source": 26, + "value": "836" + }, + { + "begin": 1645, + "end": 2402, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1720, + "end": 1732, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1779, + "end": 1780, + "name": "DUP1", + "source": 26 + }, + { + "begin": 1773, + "end": 1777, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1766, + "end": 1781, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 1864, + "end": 1868, + "name": "PUSH", + "source": 26, + "value": "20" + }, + { + "begin": 1858, + "end": 1862, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1851, + "end": 1855, + "name": "DUP4", + "source": 26 + }, + { + "begin": 1845, + "end": 1856, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 1838, + "end": 1842, + "name": "PUSH", + "source": 26, + "value": "20" + }, + { + "begin": 1832, + "end": 1836, + "name": "DUP6", + "source": 26 + }, + { + "begin": 1828, + "end": 1843, + "name": "ADD", + "source": 26 + }, + { + "begin": 1825, + "end": 1826, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1818, + "end": 1823, + "name": "DUP8", + "source": 26 + }, + { + "begin": 1811, + "end": 1816, + "name": "GAS", + "source": 26 + }, + { + "begin": 1806, + "end": 1869, + "name": "CALL", + "source": 26 + }, + { + "begin": 1795, + "end": 1869, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 1795, + "end": 1869, + "name": "POP", + "source": 26 + }, + { + "begin": 1890, + "end": 1897, + "name": "DUP1", + "source": 26 + }, + { + "begin": 1915, + "end": 1916, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1910, + "end": 2104, + "name": "DUP2", + "source": 26 + }, + { + "begin": 1910, + "end": 2104, + "name": "EQ", + "source": 26 + }, + { + "begin": 1910, + "end": 2104, + "name": "PUSH [tag]", + "source": 26, + "value": "989" + }, + { + "begin": 1910, + "end": 2104, + "name": "JUMPI", + "source": 26 + }, + { + "begin": 2150, + "end": 2166, + "name": "RETURNDATASIZE", + "source": 26 + }, + { + "begin": 2188, + "end": 2189, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 2183, + "end": 2239, + "name": "DUP2", + "source": 26 + }, + { + "begin": 2183, + "end": 2239, + "name": "EQ", + "source": 26 + }, + { + "begin": 2183, + "end": 2239, + "name": "PUSH [tag]", + "source": 26, + "value": "991" + }, + { + "begin": 2183, + "end": 2239, + "name": "JUMPI", + "source": 26 + }, + { + "begin": 2306, + "end": 2307, + "name": "PUSH", + "source": 26, + "value": "1" + }, + { + "begin": 2299, + "end": 2303, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 2293, + "end": 2304, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 2290, + "end": 2308, + "name": "EQ", + "source": 26 + }, + { + "begin": 2281, + "end": 2288, + "name": "DUP4", + "source": 26 + }, + { + "begin": 2277, + "end": 2309, + "name": "AND", + "source": 26 + }, + { + "begin": 2266, + "end": 2309, + "name": "SWAP3", + "source": 26 + }, + { + "begin": 2266, + "end": 2309, + "name": "POP", + "source": 26 + }, + { + "begin": 2143, + "end": 2311, + "name": "PUSH [tag]", + "source": 26, + "value": "990" + }, + { + "begin": 2143, + "end": 2311, + "name": "JUMP", + "source": 26 + }, + { + "begin": 2183, + "end": 2239, + "name": "tag", + "source": 26, + "value": "991" + }, + { + "begin": 2183, + "end": 2239, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 2229, + "end": 2234, + "name": "DUP5", + "source": 26 + }, + { + "begin": 2217, + "end": 2235, + "name": "EXTCODESIZE", + "source": 26 + }, + { + "begin": 2210, + "end": 2236, + "name": "ISZERO", + "source": 26 + }, + { + "begin": 2203, + "end": 2237, + "name": "ISZERO", + "source": 26 + }, + { + "begin": 2192, + "end": 2237, + "name": "SWAP3", + "source": 26 + }, + { + "begin": 2192, + "end": 2237, + "name": "POP", + "source": 26 + }, + { + "begin": 2143, + "end": 2311, + "name": "tag", + "source": 26, + "value": "990" + }, + { + "begin": 2143, + "end": 2311, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 2143, + "end": 2311, + "name": "POP", + "source": 26 + }, + { + "begin": 1883, + "end": 2325, + "name": "PUSH [tag]", + "source": 26, + "value": "988" + }, + { + "begin": 1883, + "end": 2325, + "name": "JUMP", + "source": 26 + }, + { + "begin": 1910, + "end": 2104, + "name": "tag", + "source": 26, + "value": "989" + }, + { + "begin": 1910, + "end": 2104, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1938, + "end": 1954, + "name": "RETURNDATASIZE", + "source": 26 + }, + { + "begin": 1935, + "end": 2090, + "name": "ISZERO", + "source": 26 + }, + { + "begin": 1935, + "end": 2090, + "name": "PUSH [tag]", + "source": 26, + "value": "992" + }, + { + "begin": 1935, + "end": 2090, + "name": "JUMPI", + "source": 26 + }, + { + "begin": 2004, + "end": 2020, + "name": "RETURNDATASIZE", + "source": 26 + }, + { + "begin": 1998, + "end": 2002, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 1992, + "end": 1996, + "name": "DUP1", + "source": 26 + }, + { + "begin": 1977, + "end": 2021, + "name": "RETURNDATACOPY", + "source": 26 + }, + { + "begin": 2055, + "end": 2071, + "name": "RETURNDATASIZE", + "source": 26 + }, + { + "begin": 2049, + "end": 2053, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 2042, + "end": 2072, + "name": "REVERT", + "source": 26 + }, + { + "begin": 1935, + "end": 2090, + "name": "tag", + "source": 26, + "value": "992" + }, + { + "begin": 1935, + "end": 2090, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1883, + "end": 2325, + "name": "tag", + "source": 26, + "value": "988" + }, + { + "begin": 1883, + "end": 2325, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1883, + "end": 2325, + "name": "POP", + "source": 26 + }, + { + "begin": 2350, + "end": 2357, + "name": "DUP1", + "source": 26 + }, + { + "begin": 2345, + "end": 2395, + "name": "PUSH [tag]", + "source": 26, + "value": "993" + }, + { + "begin": 2345, + "end": 2395, + "name": "JUMPI", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 2366, + "end": 2395, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "PUSH", + "source": 26, + "value": "32E2717A00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2366, + "end": 2395, + "name": "DUP2", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "PUSH", + "source": 26, + "value": "4" + }, + { + "begin": 2366, + "end": 2395, + "name": "ADD", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 2366, + "end": 2395, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "DUP1", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "SWAP2", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "SUB", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "SWAP1", + "source": 26 + }, + { + "begin": 2366, + "end": 2395, + "name": "REVERT", + "source": 26 + }, + { + "begin": 2345, + "end": 2395, + "name": "tag", + "source": 26, + "value": "993" + }, + { + "begin": 2345, + "end": 2395, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 1710, + "end": 2402, + "name": "POP", + "source": 26 + }, + { + "begin": 1645, + "end": 2402, + "name": "POP", + "source": 26 + }, + { + "begin": 1645, + "end": 2402, + "name": "POP", + "source": 26 + }, + { + "begin": 1645, + "end": 2402, + "jumpType": "[out]", + "name": "JUMP", + "source": 26 + }, + { + "begin": 2914, + "end": 3046, + "name": "tag", + "source": 30, + "value": "861" + }, + { + "begin": 2914, + "end": 3046, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 2965, + "end": 2974, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 3021, + "end": 3029, + "name": "PUSH", + "source": 30, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3018, + "end": 3019, + "name": "DUP3", + "source": 30 + }, + { + "begin": 3014, + "end": 3030, + "name": "AND", + "source": 30 + }, + { + "begin": 3009, + "end": 3030, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 3009, + "end": 3030, + "name": "POP", + "source": 30 + }, + { + "begin": 2914, + "end": 3046, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 2914, + "end": 3046, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 2914, + "end": 3046, + "name": "POP", + "source": 30 + }, + { + "begin": 2914, + "end": 3046, + "jumpType": "[out]", + "name": "JUMP", + "source": 30 + }, + { + "begin": 3263, + "end": 3393, + "name": "tag", + "source": 30, + "value": "866" + }, + { + "begin": 3263, + "end": 3393, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 3314, + "end": 3323, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 3375, + "end": 3376, + "name": "DUP2", + "source": 30 + }, + { + "begin": 3367, + "end": 3373, + "name": "PUSH", + "source": 30, + "value": "80" + }, + { + "begin": 3363, + "end": 3377, + "name": "SHR", + "source": 30 + }, + { + "begin": 3358, + "end": 3377, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 3358, + "end": 3377, + "name": "POP", + "source": 30 + }, + { + "begin": 3263, + "end": 3393, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 3263, + "end": 3393, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 3263, + "end": 3393, + "name": "POP", + "source": 30 + }, + { + "begin": 3263, + "end": 3393, + "jumpType": "[out]", + "name": "JUMP", + "source": 30 + }, + { + "begin": 1186, + "end": 1578, + "name": "tag", + "source": 29, + "value": "926" + }, + { + "begin": 1186, + "end": 1578, + "name": "JUMPDEST", + "source": 29 + }, + { + "begin": 1310, + "end": 1324, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 1349, + "end": 1418, + "name": "PUSH [tag]", + "source": 29, + "value": "997" + }, + { + "begin": 1360, + "end": 1373, + "name": "DUP5", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "name": "PUSH", + "source": 29, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1349, + "end": 1418, + "name": "AND", + "source": 29 + }, + { + "begin": 647, + "end": 665, + "name": "PUSH", + "source": 28, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 703, + "end": 705, + "name": "PUSH", + "source": 29, + "value": "58" + }, + { + "begin": 1349, + "end": 1355, + "name": "DUP5", + "source": 29 + }, + { + "begin": 1349, + "end": 1359, + "name": "PUSH [tag]", + "source": 29, + "value": "998" + }, + { + "begin": 1349, + "end": 1359, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "name": "SWAP4", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "name": "SWAP3", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "name": "SWAP2", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "name": "PUSH", + "source": 29, + "value": "FFFFFFFF" + }, + { + "begin": 1349, + "end": 1418, + "name": "AND", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "jumpType": "[in]", + "name": "JUMP", + "source": 29 + }, + { + "begin": 1349, + "end": 1418, + "name": "tag", + "source": 29, + "value": "997" + }, + { + "begin": 1349, + "end": 1418, + "name": "JUMPDEST", + "source": 29 + }, + { + "begin": 1340, + "end": 1418, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1340, + "end": 1418, + "name": "POP", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "PUSH [tag]", + "source": 29, + "value": "999" + }, + { + "begin": 1448, + "end": 1461, + "name": "DUP4", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "PUSH", + "source": 29, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1437, + "end": 1506, + "name": "AND", + "source": 29 + }, + { + "begin": 647, + "end": 665, + "name": "PUSH", + "source": 28, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 646, + "end": 648, + "name": "PUSH", + "source": 29, + "value": "18" + }, + { + "begin": 1437, + "end": 1443, + "name": "DUP5", + "source": 29 + }, + { + "begin": 1437, + "end": 1447, + "name": "PUSH [tag]", + "source": 29, + "value": "998" + }, + { + "begin": 1437, + "end": 1447, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "SWAP4", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "SWAP3", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "SWAP2", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "PUSH", + "source": 29, + "value": "FFFFFFFF" + }, + { + "begin": 1437, + "end": 1506, + "name": "AND", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "jumpType": "[in]", + "name": "JUMP", + "source": 29 + }, + { + "begin": 1437, + "end": 1506, + "name": "tag", + "source": 29, + "value": "999" + }, + { + "begin": 1437, + "end": 1506, + "name": "JUMPDEST", + "source": 29 + }, + { + "begin": 1428, + "end": 1506, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1428, + "end": 1506, + "name": "POP", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "PUSH [tag]", + "source": 29, + "value": "1000" + }, + { + "begin": 1536, + "end": 1538, + "name": "DUP3", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "PUSH", + "source": 29, + "value": "FFFFFF" + }, + { + "begin": 1525, + "end": 1571, + "name": "AND", + "source": 29 + }, + { + "begin": 535, + "end": 543, + "name": "PUSH", + "source": 28, + "value": "FFFFFF" + }, + { + "begin": 590, + "end": 591, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 1525, + "end": 1531, + "name": "DUP5", + "source": 29 + }, + { + "begin": 1525, + "end": 1535, + "name": "PUSH [tag]", + "source": 29, + "value": "998" + }, + { + "begin": 1525, + "end": 1535, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "SWAP4", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "SWAP3", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "SWAP2", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "PUSH", + "source": 29, + "value": "FFFFFFFF" + }, + { + "begin": 1525, + "end": 1571, + "name": "AND", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "jumpType": "[in]", + "name": "JUMP", + "source": 29 + }, + { + "begin": 1525, + "end": 1571, + "name": "tag", + "source": 29, + "value": "1000" + }, + { + "begin": 1525, + "end": 1571, + "name": "JUMPDEST", + "source": 29 + }, + { + "begin": 1516, + "end": 1571, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 1516, + "end": 1571, + "name": "POP", + "source": 29 + }, + { + "begin": 1186, + "end": 1578, + "name": "SWAP4", + "source": 29 + }, + { + "begin": 1186, + "end": 1578, + "name": "SWAP3", + "source": 29 + }, + { + "begin": 1186, + "end": 1578, + "name": "POP", + "source": 29 + }, + { + "begin": 1186, + "end": 1578, + "name": "POP", + "source": 29 + }, + { + "begin": 1186, + "end": 1578, + "name": "POP", + "source": 29 + }, + { + "begin": 1186, + "end": 1578, + "jumpType": "[out]", + "name": "JUMP", + "source": 29 + }, + { + "begin": 5512, + "end": 5775, + "name": "tag", + "source": 30, + "value": "939" + }, + { + "begin": 5512, + "end": 5775, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 5570, + "end": 5579, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 5626, + "end": 5627, + "name": "DUP2", + "source": 30 + }, + { + "begin": 5623, + "end": 5624, + "name": "DUP4", + "source": 30 + }, + { + "begin": 5619, + "end": 5628, + "name": "SUB", + "source": 30 + }, + { + "begin": 5614, + "end": 5628, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 5614, + "end": 5628, + "name": "POP", + "source": 30 + }, + { + "begin": 5656, + "end": 5657, + "name": "DUP3", + "source": 30 + }, + { + "begin": 5652, + "end": 5653, + "name": "DUP2", + "source": 30 + }, + { + "begin": 5652, + "end": 5657, + "name": "GT", + "source": 30 + }, + { + "begin": 5652, + "end": 5702, + "name": "DUP1", + "source": 30 + }, + { + "begin": 5652, + "end": 5702, + "name": "PUSH [tag]", + "source": 30, + "value": "1002" + }, + { + "begin": 5652, + "end": 5702, + "name": "JUMPI", + "source": 30 + }, + { + "begin": 5652, + "end": 5702, + "name": "POP", + "source": 30 + }, + { + "begin": 5699, + "end": 5700, + "name": "DUP3", + "source": 30 + }, + { + "begin": 5691, + "end": 5701, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 5691, + "end": 5701, + "name": "SHR", + "source": 30 + }, + { + "begin": 5661, + "end": 5702, + "name": "PUSH", + "source": 30, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5661, + "end": 5702, + "name": "AND", + "source": 30 + }, + { + "begin": 5677, + "end": 5678, + "name": "DUP2", + "source": 30 + }, + { + "begin": 5669, + "end": 5679, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 5669, + "end": 5679, + "name": "SHR", + "source": 30 + }, + { + "begin": 5661, + "end": 5702, + "name": "PUSH", + "source": 30, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5661, + "end": 5702, + "name": "AND", + "source": 30 + }, + { + "begin": 5661, + "end": 5702, + "name": "GT", + "source": 30 + }, + { + "begin": 5652, + "end": 5702, + "name": "tag", + "source": 30, + "value": "1002" + }, + { + "begin": 5652, + "end": 5702, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 5648, + "end": 5769, + "name": "ISZERO", + "source": 30 + }, + { + "begin": 5648, + "end": 5769, + "name": "PUSH [tag]", + "source": 30, + "value": "1003" + }, + { + "begin": 5648, + "end": 5769, + "name": "JUMPI", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "PUSH", + "source": 30, + "value": "40" + }, + { + "begin": 5725, + "end": 5758, + "name": "MLOAD", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "PUSH", + "source": 30, + "value": "E599AF5500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5725, + "end": 5758, + "name": "DUP2", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "PUSH", + "source": 30, + "value": "4" + }, + { + "begin": 5725, + "end": 5758, + "name": "ADD", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "PUSH", + "source": 30, + "value": "40" + }, + { + "begin": 5725, + "end": 5758, + "name": "MLOAD", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "DUP1", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "SUB", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 5725, + "end": 5758, + "name": "REVERT", + "source": 30 + }, + { + "begin": 5648, + "end": 5769, + "name": "tag", + "source": 30, + "value": "1003" + }, + { + "begin": 5648, + "end": 5769, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 5512, + "end": 5775, + "name": "SWAP3", + "source": 30 + }, + { + "begin": 5512, + "end": 5775, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 5512, + "end": 5775, + "name": "POP", + "source": 30 + }, + { + "begin": 5512, + "end": 5775, + "name": "POP", + "source": 30 + }, + { + "begin": 5512, + "end": 5775, + "jumpType": "[out]", + "name": "JUMP", + "source": 30 + }, + { + "begin": 1099, + "end": 1416, + "name": "tag", + "source": 28, + "value": "998" + }, + { + "begin": 1099, + "end": 1416, + "name": "JUMPDEST", + "source": 28 + }, + { + "begin": 1221, + "end": 1239, + "name": "PUSH", + "source": 28, + "value": "0" + }, + { + "begin": 1321, + "end": 1325, + "name": "DUP3", + "source": 28 + }, + { + "begin": 1313, + "end": 1319, + "name": "DUP3", + "source": 28 + }, + { + "begin": 1309, + "end": 1326, + "name": "SHL", + "source": 28 + }, + { + "begin": 1305, + "end": 1327, + "name": "NOT", + "source": 28 + }, + { + "begin": 1296, + "end": 1303, + "name": "DUP6", + "source": 28 + }, + { + "begin": 1292, + "end": 1328, + "name": "AND", + "source": 28 + }, + { + "begin": 1278, + "end": 1328, + "name": "SWAP1", + "source": 28 + }, + { + "begin": 1278, + "end": 1328, + "name": "POP", + "source": 28 + }, + { + "begin": 1393, + "end": 1397, + "name": "DUP3", + "source": 28 + }, + { + "begin": 1386, + "end": 1391, + "name": "DUP5", + "source": 28 + }, + { + "begin": 1382, + "end": 1398, + "name": "AND", + "source": 28 + }, + { + "begin": 1374, + "end": 1380, + "name": "DUP3", + "source": 28 + }, + { + "begin": 1370, + "end": 1399, + "name": "SHL", + "source": 28 + }, + { + "begin": 1358, + "end": 1368, + "name": "DUP2", + "source": 28 + }, + { + "begin": 1355, + "end": 1400, + "name": "OR", + "source": 28 + }, + { + "begin": 1341, + "end": 1400, + "name": "SWAP1", + "source": 28 + }, + { + "begin": 1341, + "end": 1400, + "name": "POP", + "source": 28 + }, + { + "begin": 1099, + "end": 1416, + "name": "SWAP5", + "source": 28 + }, + { + "begin": 1099, + "end": 1416, + "name": "SWAP4", + "source": 28 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 28 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 28 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 28 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 28 + }, + { + "begin": 1099, + "end": 1416, + "jumpType": "[out]", + "name": "JUMP", + "source": 28 + }, + { + "begin": 7, + "end": 82, + "name": "tag", + "source": 34, + "value": "1005" + }, + { + "begin": 7, + "end": 82, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 40, + "end": 46, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 73, + "end": 75, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 67, + "end": 76, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 57, + "end": 76, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 57, + "end": 76, + "name": "POP", + "source": 34 + }, + { + "begin": 7, + "end": 82, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 7, + "end": 82, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 34, + "value": "1006" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 34 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 34 + }, + { + "begin": 211, + "end": 328, + "name": "tag", + "source": 34, + "value": "1007" + }, + { + "begin": 211, + "end": 328, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 320, + "end": 321, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 317, + "end": 318, + "name": "DUP1", + "source": 34 + }, + { + "begin": 310, + "end": 322, + "name": "REVERT", + "source": 34 + }, + { + "begin": 334, + "end": 411, + "name": "tag", + "source": 34, + "value": "1008" + }, + { + "begin": 334, + "end": 411, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 400, + "end": 405, + "name": "DUP2", + "source": 34 + }, + { + "begin": 389, + "end": 405, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 389, + "end": 405, + "name": "POP", + "source": 34 + }, + { + "begin": 334, + "end": 411, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 334, + "end": 411, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 334, + "end": 411, + "name": "POP", + "source": 34 + }, + { + "begin": 334, + "end": 411, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 417, + "end": 539, + "name": "tag", + "source": 34, + "value": "1009" + }, + { + "begin": 417, + "end": 539, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 490, + "end": 514, + "name": "PUSH [tag]", + "source": 34, + "value": "1146" + }, + { + "begin": 508, + "end": 513, + "name": "DUP2", + "source": 34 + }, + { + "begin": 490, + "end": 514, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 490, + "end": 514, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 490, + "end": 514, + "name": "tag", + "source": 34, + "value": "1146" + }, + { + "begin": 490, + "end": 514, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 483, + "end": 488, + "name": "DUP2", + "source": 34 + }, + { + "begin": 480, + "end": 515, + "name": "EQ", + "source": 34 + }, + { + "begin": 470, + "end": 533, + "name": "PUSH [tag]", + "source": 34, + "value": "1147" + }, + { + "begin": 470, + "end": 533, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 529, + "end": 530, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 526, + "end": 527, + "name": "DUP1", + "source": 34 + }, + { + "begin": 519, + "end": 531, + "name": "REVERT", + "source": 34 + }, + { + "begin": 470, + "end": 533, + "name": "tag", + "source": 34, + "value": "1147" + }, + { + "begin": 470, + "end": 533, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 417, + "end": 539, + "name": "POP", + "source": 34 + }, + { + "begin": 417, + "end": 539, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 545, + "end": 684, + "name": "tag", + "source": 34, + "value": "1010" + }, + { + "begin": 545, + "end": 684, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 591, + "end": 596, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 629, + "end": 635, + "name": "DUP2", + "source": 34 + }, + { + "begin": 616, + "end": 636, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 607, + "end": 636, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 607, + "end": 636, + "name": "POP", + "source": 34 + }, + { + "begin": 645, + "end": 678, + "name": "PUSH [tag]", + "source": 34, + "value": "1149" + }, + { + "begin": 672, + "end": 677, + "name": "DUP2", + "source": 34 + }, + { + "begin": 645, + "end": 678, + "name": "PUSH [tag]", + "source": 34, + "value": "1009" + }, + { + "begin": 645, + "end": 678, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 645, + "end": 678, + "name": "tag", + "source": 34, + "value": "1149" + }, + { + "begin": 645, + "end": 678, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 545, + "end": 684, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 545, + "end": 684, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 545, + "end": 684, + "name": "POP", + "source": 34 + }, + { + "begin": 545, + "end": 684, + "name": "POP", + "source": 34 + }, + { + "begin": 545, + "end": 684, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 690, + "end": 807, + "name": "tag", + "source": 34, + "value": "1011" + }, + { + "begin": 690, + "end": 807, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 799, + "end": 800, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 796, + "end": 797, + "name": "DUP1", + "source": 34 + }, + { + "begin": 789, + "end": 801, + "name": "REVERT", + "source": 34 + }, + { + "begin": 813, + "end": 915, + "name": "tag", + "source": 34, + "value": "1012" + }, + { + "begin": 813, + "end": 915, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 854, + "end": 860, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 905, + "end": 907, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 901, + "end": 908, + "name": "NOT", + "source": 34 + }, + { + "begin": 896, + "end": 898, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 889, + "end": 894, + "name": "DUP4", + "source": 34 + }, + { + "begin": 885, + "end": 899, + "name": "ADD", + "source": 34 + }, + { + "begin": 881, + "end": 909, + "name": "AND", + "source": 34 + }, + { + "begin": 871, + "end": 909, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 871, + "end": 909, + "name": "POP", + "source": 34 + }, + { + "begin": 813, + "end": 915, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 813, + "end": 915, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 813, + "end": 915, + "name": "POP", + "source": 34 + }, + { + "begin": 813, + "end": 915, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 921, + "end": 1101, + "name": "tag", + "source": 34, + "value": "590" + }, + { + "begin": 921, + "end": 1101, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 969, + "end": 1046, + "name": "PUSH", + "source": 34, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 966, + "end": 967, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 959, + "end": 1047, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 1066, + "end": 1070, + "name": "PUSH", + "source": 34, + "value": "41" + }, + { + "begin": 1063, + "end": 1064, + "name": "PUSH", + "source": 34, + "value": "4" + }, + { + "begin": 1056, + "end": 1071, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 1090, + "end": 1094, + "name": "PUSH", + "source": 34, + "value": "24" + }, + { + "begin": 1087, + "end": 1088, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1080, + "end": 1095, + "name": "REVERT", + "source": 34 + }, + { + "begin": 1107, + "end": 1388, + "name": "tag", + "source": 34, + "value": "1013" + }, + { + "begin": 1107, + "end": 1388, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1190, + "end": 1217, + "name": "PUSH [tag]", + "source": 34, + "value": "1154" + }, + { + "begin": 1212, + "end": 1216, + "name": "DUP3", + "source": 34 + }, + { + "begin": 1190, + "end": 1217, + "name": "PUSH [tag]", + "source": 34, + "value": "1012" + }, + { + "begin": 1190, + "end": 1217, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1190, + "end": 1217, + "name": "tag", + "source": 34, + "value": "1154" + }, + { + "begin": 1190, + "end": 1217, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1182, + "end": 1188, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1178, + "end": 1218, + "name": "ADD", + "source": 34 + }, + { + "begin": 1320, + "end": 1326, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1308, + "end": 1318, + "name": "DUP2", + "source": 34 + }, + { + "begin": 1305, + "end": 1327, + "name": "LT", + "source": 34 + }, + { + "begin": 1284, + "end": 1302, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1272, + "end": 1282, + "name": "DUP3", + "source": 34 + }, + { + "begin": 1269, + "end": 1303, + "name": "GT", + "source": 34 + }, + { + "begin": 1266, + "end": 1328, + "name": "OR", + "source": 34 + }, + { + "begin": 1263, + "end": 1351, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 1263, + "end": 1351, + "name": "PUSH [tag]", + "source": 34, + "value": "1155" + }, + { + "begin": 1263, + "end": 1351, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 1331, + "end": 1349, + "name": "PUSH [tag]", + "source": 34, + "value": "1156" + }, + { + "begin": 1331, + "end": 1349, + "name": "PUSH [tag]", + "source": 34, + "value": "590" + }, + { + "begin": 1331, + "end": 1349, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1331, + "end": 1349, + "name": "tag", + "source": 34, + "value": "1156" + }, + { + "begin": 1331, + "end": 1349, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1263, + "end": 1351, + "name": "tag", + "source": 34, + "value": "1155" + }, + { + "begin": 1263, + "end": 1351, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1371, + "end": 1381, + "name": "DUP1", + "source": 34 + }, + { + "begin": 1367, + "end": 1369, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 1360, + "end": 1382, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 1150, + "end": 1388, + "name": "POP", + "source": 34 + }, + { + "begin": 1107, + "end": 1388, + "name": "POP", + "source": 34 + }, + { + "begin": 1107, + "end": 1388, + "name": "POP", + "source": 34 + }, + { + "begin": 1107, + "end": 1388, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1394, + "end": 1523, + "name": "tag", + "source": 34, + "value": "1014" + }, + { + "begin": 1394, + "end": 1523, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1428, + "end": 1434, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1455, + "end": 1475, + "name": "PUSH [tag]", + "source": 34, + "value": "1158" + }, + { + "begin": 1455, + "end": 1475, + "name": "PUSH [tag]", + "source": 34, + "value": "1005" + }, + { + "begin": 1455, + "end": 1475, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1455, + "end": 1475, + "name": "tag", + "source": 34, + "value": "1158" + }, + { + "begin": 1455, + "end": 1475, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1445, + "end": 1475, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1445, + "end": 1475, + "name": "POP", + "source": 34 + }, + { + "begin": 1484, + "end": 1517, + "name": "PUSH [tag]", + "source": 34, + "value": "1159" + }, + { + "begin": 1512, + "end": 1516, + "name": "DUP3", + "source": 34 + }, + { + "begin": 1504, + "end": 1510, + "name": "DUP3", + "source": 34 + }, + { + "begin": 1484, + "end": 1517, + "name": "PUSH [tag]", + "source": 34, + "value": "1013" + }, + { + "begin": 1484, + "end": 1517, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1484, + "end": 1517, + "name": "tag", + "source": 34, + "value": "1159" + }, + { + "begin": 1484, + "end": 1517, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1394, + "end": 1523, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 1394, + "end": 1523, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1394, + "end": 1523, + "name": "POP", + "source": 34 + }, + { + "begin": 1394, + "end": 1523, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1529, + "end": 1646, + "name": "tag", + "source": 34, + "value": "1015" + }, + { + "begin": 1529, + "end": 1646, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1638, + "end": 1639, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1635, + "end": 1636, + "name": "DUP1", + "source": 34 + }, + { + "begin": 1628, + "end": 1640, + "name": "REVERT", + "source": 34 + }, + { + "begin": 1652, + "end": 1769, + "name": "tag", + "source": 34, + "value": "1016" + }, + { + "begin": 1652, + "end": 1769, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1761, + "end": 1762, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1758, + "end": 1759, + "name": "DUP1", + "source": 34 + }, + { + "begin": 1751, + "end": 1763, + "name": "REVERT", + "source": 34 + }, + { + "begin": 1775, + "end": 2086, + "name": "tag", + "source": 34, + "value": "1017" + }, + { + "begin": 1775, + "end": 2086, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1852, + "end": 1856, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 1942, + "end": 1960, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1934, + "end": 1940, + "name": "DUP3", + "source": 34 + }, + { + "begin": 1931, + "end": 1961, + "name": "GT", + "source": 34 + }, + { + "begin": 1928, + "end": 1984, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 1928, + "end": 1984, + "name": "PUSH [tag]", + "source": 34, + "value": "1163" + }, + { + "begin": 1928, + "end": 1984, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 1964, + "end": 1982, + "name": "PUSH [tag]", + "source": 34, + "value": "1164" + }, + { + "begin": 1964, + "end": 1982, + "name": "PUSH [tag]", + "source": 34, + "value": "590" + }, + { + "begin": 1964, + "end": 1982, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 1964, + "end": 1982, + "name": "tag", + "source": 34, + "value": "1164" + }, + { + "begin": 1964, + "end": 1982, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 1928, + "end": 1984, + "name": "tag", + "source": 34, + "value": "1163" + }, + { + "begin": 1928, + "end": 1984, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2014, + "end": 2018, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 2006, + "end": 2012, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2002, + "end": 2019, + "name": "MUL", + "source": 34 + }, + { + "begin": 1994, + "end": 2019, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1994, + "end": 2019, + "name": "POP", + "source": 34 + }, + { + "begin": 2074, + "end": 2078, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 2068, + "end": 2072, + "name": "DUP2", + "source": 34 + }, + { + "begin": 2064, + "end": 2079, + "name": "ADD", + "source": 34 + }, + { + "begin": 2056, + "end": 2079, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 2056, + "end": 2079, + "name": "POP", + "source": 34 + }, + { + "begin": 1775, + "end": 2086, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 1775, + "end": 2086, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 1775, + "end": 2086, + "name": "POP", + "source": 34 + }, + { + "begin": 1775, + "end": 2086, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2092, + "end": 2209, + "name": "tag", + "source": 34, + "value": "1018" + }, + { + "begin": 2092, + "end": 2209, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2201, + "end": 2202, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 2198, + "end": 2199, + "name": "DUP1", + "source": 34 + }, + { + "begin": 2191, + "end": 2203, + "name": "REVERT", + "source": 34 + }, + { + "begin": 2232, + "end": 2942, + "name": "tag", + "source": 34, + "value": "1019" + }, + { + "begin": 2232, + "end": 2942, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2328, + "end": 2333, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 2353, + "end": 2434, + "name": "PUSH [tag]", + "source": 34, + "value": "1167" + }, + { + "begin": 2369, + "end": 2433, + "name": "PUSH [tag]", + "source": 34, + "value": "1168" + }, + { + "begin": 2426, + "end": 2432, + "name": "DUP5", + "source": 34 + }, + { + "begin": 2369, + "end": 2433, + "name": "PUSH [tag]", + "source": 34, + "value": "1017" + }, + { + "begin": 2369, + "end": 2433, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2369, + "end": 2433, + "name": "tag", + "source": 34, + "value": "1168" + }, + { + "begin": 2369, + "end": 2433, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2353, + "end": 2434, + "name": "PUSH [tag]", + "source": 34, + "value": "1014" + }, + { + "begin": 2353, + "end": 2434, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2353, + "end": 2434, + "name": "tag", + "source": 34, + "value": "1167" + }, + { + "begin": 2353, + "end": 2434, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2344, + "end": 2434, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 2344, + "end": 2434, + "name": "POP", + "source": 34 + }, + { + "begin": 2454, + "end": 2459, + "name": "DUP1", + "source": 34 + }, + { + "begin": 2483, + "end": 2489, + "name": "DUP4", + "source": 34 + }, + { + "begin": 2476, + "end": 2481, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2469, + "end": 2490, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 2517, + "end": 2521, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 2510, + "end": 2515, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2506, + "end": 2522, + "name": "ADD", + "source": 34 + }, + { + "begin": 2499, + "end": 2522, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 2499, + "end": 2522, + "name": "POP", + "source": 34 + }, + { + "begin": 2570, + "end": 2574, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 2562, + "end": 2568, + "name": "DUP5", + "source": 34 + }, + { + "begin": 2558, + "end": 2575, + "name": "MUL", + "source": 34 + }, + { + "begin": 2550, + "end": 2556, + "name": "DUP4", + "source": 34 + }, + { + "begin": 2546, + "end": 2576, + "name": "ADD", + "source": 34 + }, + { + "begin": 2599, + "end": 2602, + "name": "DUP6", + "source": 34 + }, + { + "begin": 2591, + "end": 2597, + "name": "DUP2", + "source": 34 + }, + { + "begin": 2588, + "end": 2603, + "name": "GT", + "source": 34 + }, + { + "begin": 2585, + "end": 2707, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 2585, + "end": 2707, + "name": "PUSH [tag]", + "source": 34, + "value": "1169" + }, + { + "begin": 2585, + "end": 2707, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 2618, + "end": 2697, + "name": "PUSH [tag]", + "source": 34, + "value": "1170" + }, + { + "begin": 2618, + "end": 2697, + "name": "PUSH [tag]", + "source": 34, + "value": "1018" + }, + { + "begin": 2618, + "end": 2697, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2618, + "end": 2697, + "name": "tag", + "source": 34, + "value": "1170" + }, + { + "begin": 2618, + "end": 2697, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2585, + "end": 2707, + "name": "tag", + "source": 34, + "value": "1169" + }, + { + "begin": 2585, + "end": 2707, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2733, + "end": 2739, + "name": "DUP4", + "source": 34 + }, + { + "begin": 2716, + "end": 2936, + "name": "tag", + "source": 34, + "value": "1171" + }, + { + "begin": 2716, + "end": 2936, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2750, + "end": 2756, + "name": "DUP2", + "source": 34 + }, + { + "begin": 2745, + "end": 2748, + "name": "DUP2", + "source": 34 + }, + { + "begin": 2742, + "end": 2757, + "name": "LT", + "source": 34 + }, + { + "begin": 2716, + "end": 2936, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 2716, + "end": 2936, + "name": "PUSH [tag]", + "source": 34, + "value": "1173" + }, + { + "begin": 2716, + "end": 2936, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 2825, + "end": 2828, + "name": "DUP1", + "source": 34 + }, + { + "begin": 2854, + "end": 2891, + "name": "PUSH [tag]", + "source": 34, + "value": "1174" + }, + { + "begin": 2887, + "end": 2890, + "name": "DUP9", + "source": 34 + }, + { + "begin": 2875, + "end": 2885, + "name": "DUP3", + "source": 34 + }, + { + "begin": 2854, + "end": 2891, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 2854, + "end": 2891, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2854, + "end": 2891, + "name": "tag", + "source": 34, + "value": "1174" + }, + { + "begin": 2854, + "end": 2891, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2849, + "end": 2852, + "name": "DUP5", + "source": 34 + }, + { + "begin": 2842, + "end": 2892, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 2921, + "end": 2925, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 2916, + "end": 2919, + "name": "DUP5", + "source": 34 + }, + { + "begin": 2912, + "end": 2926, + "name": "ADD", + "source": 34 + }, + { + "begin": 2905, + "end": 2926, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 2905, + "end": 2926, + "name": "POP", + "source": 34 + }, + { + "begin": 2792, + "end": 2936, + "name": "POP", + "source": 34 + }, + { + "begin": 2776, + "end": 2780, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 2771, + "end": 2774, + "name": "DUP2", + "source": 34 + }, + { + "begin": 2767, + "end": 2781, + "name": "ADD", + "source": 34 + }, + { + "begin": 2760, + "end": 2781, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 2760, + "end": 2781, + "name": "POP", + "source": 34 + }, + { + "begin": 2716, + "end": 2936, + "name": "PUSH [tag]", + "source": 34, + "value": "1171" + }, + { + "begin": 2716, + "end": 2936, + "name": "JUMP", + "source": 34 + }, + { + "begin": 2716, + "end": 2936, + "name": "tag", + "source": 34, + "value": "1173" + }, + { + "begin": 2716, + "end": 2936, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 2720, + "end": 2741, + "name": "POP", + "source": 34 + }, + { + "begin": 2334, + "end": 2942, + "name": "POP", + "source": 34 + }, + { + "begin": 2334, + "end": 2942, + "name": "POP", + "source": 34 + }, + { + "begin": 2232, + "end": 2942, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 2232, + "end": 2942, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 2232, + "end": 2942, + "name": "POP", + "source": 34 + }, + { + "begin": 2232, + "end": 2942, + "name": "POP", + "source": 34 + }, + { + "begin": 2232, + "end": 2942, + "name": "POP", + "source": 34 + }, + { + "begin": 2232, + "end": 2942, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2965, + "end": 3335, + "name": "tag", + "source": 34, + "value": "1020" + }, + { + "begin": 2965, + "end": 3335, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3036, + "end": 3041, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 3085, + "end": 3088, + "name": "DUP3", + "source": 34 + }, + { + "begin": 3078, + "end": 3082, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 3070, + "end": 3076, + "name": "DUP4", + "source": 34 + }, + { + "begin": 3066, + "end": 3083, + "name": "ADD", + "source": 34 + }, + { + "begin": 3062, + "end": 3089, + "name": "SLT", + "source": 34 + }, + { + "begin": 3052, + "end": 3174, + "name": "PUSH [tag]", + "source": 34, + "value": "1176" + }, + { + "begin": 3052, + "end": 3174, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 3093, + "end": 3172, + "name": "PUSH [tag]", + "source": 34, + "value": "1177" + }, + { + "begin": 3093, + "end": 3172, + "name": "PUSH [tag]", + "source": 34, + "value": "1016" + }, + { + "begin": 3093, + "end": 3172, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3093, + "end": 3172, + "name": "tag", + "source": 34, + "value": "1177" + }, + { + "begin": 3093, + "end": 3172, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3052, + "end": 3174, + "name": "tag", + "source": 34, + "value": "1176" + }, + { + "begin": 3052, + "end": 3174, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3210, + "end": 3216, + "name": "DUP2", + "source": 34 + }, + { + "begin": 3197, + "end": 3217, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 3235, + "end": 3329, + "name": "PUSH [tag]", + "source": 34, + "value": "1178" + }, + { + "begin": 3325, + "end": 3328, + "name": "DUP5", + "source": 34 + }, + { + "begin": 3317, + "end": 3323, + "name": "DUP3", + "source": 34 + }, + { + "begin": 3310, + "end": 3314, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 3302, + "end": 3308, + "name": "DUP7", + "source": 34 + }, + { + "begin": 3298, + "end": 3315, + "name": "ADD", + "source": 34 + }, + { + "begin": 3235, + "end": 3329, + "name": "PUSH [tag]", + "source": 34, + "value": "1019" + }, + { + "begin": 3235, + "end": 3329, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3235, + "end": 3329, + "name": "tag", + "source": 34, + "value": "1178" + }, + { + "begin": 3235, + "end": 3329, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3226, + "end": 3329, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 3226, + "end": 3329, + "name": "POP", + "source": 34 + }, + { + "begin": 3042, + "end": 3335, + "name": "POP", + "source": 34 + }, + { + "begin": 2965, + "end": 3335, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 2965, + "end": 3335, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 2965, + "end": 3335, + "name": "POP", + "source": 34 + }, + { + "begin": 2965, + "end": 3335, + "name": "POP", + "source": 34 + }, + { + "begin": 2965, + "end": 3335, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3341, + "end": 3664, + "name": "tag", + "source": 34, + "value": "1021" + }, + { + "begin": 3341, + "end": 3664, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3430, + "end": 3434, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 3520, + "end": 3538, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 3512, + "end": 3518, + "name": "DUP3", + "source": 34 + }, + { + "begin": 3509, + "end": 3539, + "name": "GT", + "source": 34 + }, + { + "begin": 3506, + "end": 3562, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 3506, + "end": 3562, + "name": "PUSH [tag]", + "source": 34, + "value": "1180" + }, + { + "begin": 3506, + "end": 3562, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 3542, + "end": 3560, + "name": "PUSH [tag]", + "source": 34, + "value": "1181" + }, + { + "begin": 3542, + "end": 3560, + "name": "PUSH [tag]", + "source": 34, + "value": "590" + }, + { + "begin": 3542, + "end": 3560, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3542, + "end": 3560, + "name": "tag", + "source": 34, + "value": "1181" + }, + { + "begin": 3542, + "end": 3560, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3506, + "end": 3562, + "name": "tag", + "source": 34, + "value": "1180" + }, + { + "begin": 3506, + "end": 3562, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3592, + "end": 3596, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 3584, + "end": 3590, + "name": "DUP3", + "source": 34 + }, + { + "begin": 3580, + "end": 3597, + "name": "MUL", + "source": 34 + }, + { + "begin": 3572, + "end": 3597, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 3572, + "end": 3597, + "name": "POP", + "source": 34 + }, + { + "begin": 3652, + "end": 3656, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 3646, + "end": 3650, + "name": "DUP2", + "source": 34 + }, + { + "begin": 3642, + "end": 3657, + "name": "ADD", + "source": 34 + }, + { + "begin": 3634, + "end": 3657, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 3634, + "end": 3657, + "name": "POP", + "source": 34 + }, + { + "begin": 3341, + "end": 3664, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 3341, + "end": 3664, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 3341, + "end": 3664, + "name": "POP", + "source": 34 + }, + { + "begin": 3341, + "end": 3664, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3670, + "end": 3781, + "name": "tag", + "source": 34, + "value": "1022" + }, + { + "begin": 3670, + "end": 3781, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3755, + "end": 3756, + "name": "PUSH", + "source": 34, + "value": "2" + }, + { + "begin": 3748, + "end": 3753, + "name": "DUP2", + "source": 34 + }, + { + "begin": 3745, + "end": 3757, + "name": "LT", + "source": 34 + }, + { + "begin": 3735, + "end": 3775, + "name": "PUSH [tag]", + "source": 34, + "value": "1183" + }, + { + "begin": 3735, + "end": 3775, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 3771, + "end": 3772, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 3768, + "end": 3769, + "name": "DUP1", + "source": 34 + }, + { + "begin": 3761, + "end": 3773, + "name": "REVERT", + "source": 34 + }, + { + "begin": 3735, + "end": 3775, + "name": "tag", + "source": 34, + "value": "1183" + }, + { + "begin": 3735, + "end": 3775, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3670, + "end": 3781, + "name": "POP", + "source": 34 + }, + { + "begin": 3670, + "end": 3781, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3787, + "end": 3950, + "name": "tag", + "source": 34, + "value": "1023" + }, + { + "begin": 3787, + "end": 3950, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3845, + "end": 3850, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 3883, + "end": 3889, + "name": "DUP2", + "source": 34 + }, + { + "begin": 3870, + "end": 3890, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 3861, + "end": 3890, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 3861, + "end": 3890, + "name": "POP", + "source": 34 + }, + { + "begin": 3899, + "end": 3944, + "name": "PUSH [tag]", + "source": 34, + "value": "1185" + }, + { + "begin": 3938, + "end": 3943, + "name": "DUP2", + "source": 34 + }, + { + "begin": 3899, + "end": 3944, + "name": "PUSH [tag]", + "source": 34, + "value": "1022" + }, + { + "begin": 3899, + "end": 3944, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3899, + "end": 3944, + "name": "tag", + "source": 34, + "value": "1185" + }, + { + "begin": 3899, + "end": 3944, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 3787, + "end": 3950, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 3787, + "end": 3950, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 3787, + "end": 3950, + "name": "POP", + "source": 34 + }, + { + "begin": 3787, + "end": 3950, + "name": "POP", + "source": 34 + }, + { + "begin": 3787, + "end": 3950, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 3988, + "end": 4734, + "name": "tag", + "source": 34, + "value": "1024" + }, + { + "begin": 3988, + "end": 4734, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4096, + "end": 4101, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 4121, + "end": 4214, + "name": "PUSH [tag]", + "source": 34, + "value": "1187" + }, + { + "begin": 4137, + "end": 4213, + "name": "PUSH [tag]", + "source": 34, + "value": "1188" + }, + { + "begin": 4206, + "end": 4212, + "name": "DUP5", + "source": 34 + }, + { + "begin": 4137, + "end": 4213, + "name": "PUSH [tag]", + "source": 34, + "value": "1021" + }, + { + "begin": 4137, + "end": 4213, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 4137, + "end": 4213, + "name": "tag", + "source": 34, + "value": "1188" + }, + { + "begin": 4137, + "end": 4213, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4121, + "end": 4214, + "name": "PUSH [tag]", + "source": 34, + "value": "1014" + }, + { + "begin": 4121, + "end": 4214, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 4121, + "end": 4214, + "name": "tag", + "source": 34, + "value": "1187" + }, + { + "begin": 4121, + "end": 4214, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4112, + "end": 4214, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 4112, + "end": 4214, + "name": "POP", + "source": 34 + }, + { + "begin": 4234, + "end": 4239, + "name": "DUP1", + "source": 34 + }, + { + "begin": 4263, + "end": 4269, + "name": "DUP4", + "source": 34 + }, + { + "begin": 4256, + "end": 4261, + "name": "DUP3", + "source": 34 + }, + { + "begin": 4249, + "end": 4270, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 4297, + "end": 4301, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 4290, + "end": 4295, + "name": "DUP3", + "source": 34 + }, + { + "begin": 4286, + "end": 4302, + "name": "ADD", + "source": 34 + }, + { + "begin": 4279, + "end": 4302, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 4279, + "end": 4302, + "name": "POP", + "source": 34 + }, + { + "begin": 4350, + "end": 4354, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 4342, + "end": 4348, + "name": "DUP5", + "source": 34 + }, + { + "begin": 4338, + "end": 4355, + "name": "MUL", + "source": 34 + }, + { + "begin": 4330, + "end": 4336, + "name": "DUP4", + "source": 34 + }, + { + "begin": 4326, + "end": 4356, + "name": "ADD", + "source": 34 + }, + { + "begin": 4379, + "end": 4382, + "name": "DUP6", + "source": 34 + }, + { + "begin": 4371, + "end": 4377, + "name": "DUP2", + "source": 34 + }, + { + "begin": 4368, + "end": 4383, + "name": "GT", + "source": 34 + }, + { + "begin": 4365, + "end": 4487, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 4365, + "end": 4487, + "name": "PUSH [tag]", + "source": 34, + "value": "1189" + }, + { + "begin": 4365, + "end": 4487, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 4398, + "end": 4477, + "name": "PUSH [tag]", + "source": 34, + "value": "1190" + }, + { + "begin": 4398, + "end": 4477, + "name": "PUSH [tag]", + "source": 34, + "value": "1018" + }, + { + "begin": 4398, + "end": 4477, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 4398, + "end": 4477, + "name": "tag", + "source": 34, + "value": "1190" + }, + { + "begin": 4398, + "end": 4477, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4365, + "end": 4487, + "name": "tag", + "source": 34, + "value": "1189" + }, + { + "begin": 4365, + "end": 4487, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4513, + "end": 4519, + "name": "DUP4", + "source": 34 + }, + { + "begin": 4496, + "end": 4728, + "name": "tag", + "source": 34, + "value": "1191" + }, + { + "begin": 4496, + "end": 4728, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4530, + "end": 4536, + "name": "DUP2", + "source": 34 + }, + { + "begin": 4525, + "end": 4528, + "name": "DUP2", + "source": 34 + }, + { + "begin": 4522, + "end": 4537, + "name": "LT", + "source": 34 + }, + { + "begin": 4496, + "end": 4728, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 4496, + "end": 4728, + "name": "PUSH [tag]", + "source": 34, + "value": "1193" + }, + { + "begin": 4496, + "end": 4728, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 4605, + "end": 4608, + "name": "DUP1", + "source": 34 + }, + { + "begin": 4634, + "end": 4683, + "name": "PUSH [tag]", + "source": 34, + "value": "1194" + }, + { + "begin": 4679, + "end": 4682, + "name": "DUP9", + "source": 34 + }, + { + "begin": 4667, + "end": 4677, + "name": "DUP3", + "source": 34 + }, + { + "begin": 4634, + "end": 4683, + "name": "PUSH [tag]", + "source": 34, + "value": "1023" + }, + { + "begin": 4634, + "end": 4683, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 4634, + "end": 4683, + "name": "tag", + "source": 34, + "value": "1194" + }, + { + "begin": 4634, + "end": 4683, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4629, + "end": 4632, + "name": "DUP5", + "source": 34 + }, + { + "begin": 4622, + "end": 4684, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 4713, + "end": 4717, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 4708, + "end": 4711, + "name": "DUP5", + "source": 34 + }, + { + "begin": 4704, + "end": 4718, + "name": "ADD", + "source": 34 + }, + { + "begin": 4697, + "end": 4718, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 4697, + "end": 4718, + "name": "POP", + "source": 34 + }, + { + "begin": 4572, + "end": 4728, + "name": "POP", + "source": 34 + }, + { + "begin": 4556, + "end": 4560, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 4551, + "end": 4554, + "name": "DUP2", + "source": 34 + }, + { + "begin": 4547, + "end": 4561, + "name": "ADD", + "source": 34 + }, + { + "begin": 4540, + "end": 4561, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 4540, + "end": 4561, + "name": "POP", + "source": 34 + }, + { + "begin": 4496, + "end": 4728, + "name": "PUSH [tag]", + "source": 34, + "value": "1191" + }, + { + "begin": 4496, + "end": 4728, + "name": "JUMP", + "source": 34 + }, + { + "begin": 4496, + "end": 4728, + "name": "tag", + "source": 34, + "value": "1193" + }, + { + "begin": 4496, + "end": 4728, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4500, + "end": 4521, + "name": "POP", + "source": 34 + }, + { + "begin": 4102, + "end": 4734, + "name": "POP", + "source": 34 + }, + { + "begin": 4102, + "end": 4734, + "name": "POP", + "source": 34 + }, + { + "begin": 3988, + "end": 4734, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 3988, + "end": 4734, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 3988, + "end": 4734, + "name": "POP", + "source": 34 + }, + { + "begin": 3988, + "end": 4734, + "name": "POP", + "source": 34 + }, + { + "begin": 3988, + "end": 4734, + "name": "POP", + "source": 34 + }, + { + "begin": 3988, + "end": 4734, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 4772, + "end": 5166, + "name": "tag", + "source": 34, + "value": "1025" + }, + { + "begin": 4772, + "end": 5166, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4855, + "end": 4860, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 4904, + "end": 4907, + "name": "DUP3", + "source": 34 + }, + { + "begin": 4897, + "end": 4901, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 4889, + "end": 4895, + "name": "DUP4", + "source": 34 + }, + { + "begin": 4885, + "end": 4902, + "name": "ADD", + "source": 34 + }, + { + "begin": 4881, + "end": 4908, + "name": "SLT", + "source": 34 + }, + { + "begin": 4871, + "end": 4993, + "name": "PUSH [tag]", + "source": 34, + "value": "1196" + }, + { + "begin": 4871, + "end": 4993, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 4912, + "end": 4991, + "name": "PUSH [tag]", + "source": 34, + "value": "1197" + }, + { + "begin": 4912, + "end": 4991, + "name": "PUSH [tag]", + "source": 34, + "value": "1016" + }, + { + "begin": 4912, + "end": 4991, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 4912, + "end": 4991, + "name": "tag", + "source": 34, + "value": "1197" + }, + { + "begin": 4912, + "end": 4991, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 4871, + "end": 4993, + "name": "tag", + "source": 34, + "value": "1196" + }, + { + "begin": 4871, + "end": 4993, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5029, + "end": 5035, + "name": "DUP2", + "source": 34 + }, + { + "begin": 5016, + "end": 5036, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 5054, + "end": 5160, + "name": "PUSH [tag]", + "source": 34, + "value": "1198" + }, + { + "begin": 5156, + "end": 5159, + "name": "DUP5", + "source": 34 + }, + { + "begin": 5148, + "end": 5154, + "name": "DUP3", + "source": 34 + }, + { + "begin": 5141, + "end": 5145, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 5133, + "end": 5139, + "name": "DUP7", + "source": 34 + }, + { + "begin": 5129, + "end": 5146, + "name": "ADD", + "source": 34 + }, + { + "begin": 5054, + "end": 5160, + "name": "PUSH [tag]", + "source": 34, + "value": "1024" + }, + { + "begin": 5054, + "end": 5160, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5054, + "end": 5160, + "name": "tag", + "source": 34, + "value": "1198" + }, + { + "begin": 5054, + "end": 5160, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5045, + "end": 5160, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 5045, + "end": 5160, + "name": "POP", + "source": 34 + }, + { + "begin": 4861, + "end": 5166, + "name": "POP", + "source": 34 + }, + { + "begin": 4772, + "end": 5166, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 4772, + "end": 5166, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 4772, + "end": 5166, + "name": "POP", + "source": 34 + }, + { + "begin": 4772, + "end": 5166, + "name": "POP", + "source": 34 + }, + { + "begin": 4772, + "end": 5166, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5172, + "end": 5497, + "name": "tag", + "source": 34, + "value": "1026" + }, + { + "begin": 5172, + "end": 5497, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5263, + "end": 5267, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 5353, + "end": 5371, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 5345, + "end": 5351, + "name": "DUP3", + "source": 34 + }, + { + "begin": 5342, + "end": 5372, + "name": "GT", + "source": 34 + }, + { + "begin": 5339, + "end": 5395, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 5339, + "end": 5395, + "name": "PUSH [tag]", + "source": 34, + "value": "1200" + }, + { + "begin": 5339, + "end": 5395, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 5375, + "end": 5393, + "name": "PUSH [tag]", + "source": 34, + "value": "1201" + }, + { + "begin": 5375, + "end": 5393, + "name": "PUSH [tag]", + "source": 34, + "value": "590" + }, + { + "begin": 5375, + "end": 5393, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5375, + "end": 5393, + "name": "tag", + "source": 34, + "value": "1201" + }, + { + "begin": 5375, + "end": 5393, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5339, + "end": 5395, + "name": "tag", + "source": 34, + "value": "1200" + }, + { + "begin": 5339, + "end": 5395, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5425, + "end": 5429, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 5417, + "end": 5423, + "name": "DUP3", + "source": 34 + }, + { + "begin": 5413, + "end": 5430, + "name": "MUL", + "source": 34 + }, + { + "begin": 5405, + "end": 5430, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5405, + "end": 5430, + "name": "POP", + "source": 34 + }, + { + "begin": 5485, + "end": 5489, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 5479, + "end": 5483, + "name": "DUP2", + "source": 34 + }, + { + "begin": 5475, + "end": 5490, + "name": "ADD", + "source": 34 + }, + { + "begin": 5467, + "end": 5490, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5467, + "end": 5490, + "name": "POP", + "source": 34 + }, + { + "begin": 5172, + "end": 5497, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 5172, + "end": 5497, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5172, + "end": 5497, + "name": "POP", + "source": 34 + }, + { + "begin": 5172, + "end": 5497, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5503, + "end": 5629, + "name": "tag", + "source": 34, + "value": "1027" + }, + { + "begin": 5503, + "end": 5629, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5540, + "end": 5547, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 5580, + "end": 5622, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5573, + "end": 5578, + "name": "DUP3", + "source": 34 + }, + { + "begin": 5569, + "end": 5623, + "name": "AND", + "source": 34 + }, + { + "begin": 5558, + "end": 5623, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5558, + "end": 5623, + "name": "POP", + "source": 34 + }, + { + "begin": 5503, + "end": 5629, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 5503, + "end": 5629, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5503, + "end": 5629, + "name": "POP", + "source": 34 + }, + { + "begin": 5503, + "end": 5629, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5635, + "end": 5731, + "name": "tag", + "source": 34, + "value": "1028" + }, + { + "begin": 5635, + "end": 5731, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5672, + "end": 5679, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 5701, + "end": 5725, + "name": "PUSH [tag]", + "source": 34, + "value": "1204" + }, + { + "begin": 5719, + "end": 5724, + "name": "DUP3", + "source": 34 + }, + { + "begin": 5701, + "end": 5725, + "name": "PUSH [tag]", + "source": 34, + "value": "1027" + }, + { + "begin": 5701, + "end": 5725, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5701, + "end": 5725, + "name": "tag", + "source": 34, + "value": "1204" + }, + { + "begin": 5701, + "end": 5725, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5690, + "end": 5725, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5690, + "end": 5725, + "name": "POP", + "source": 34 + }, + { + "begin": 5635, + "end": 5731, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 5635, + "end": 5731, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5635, + "end": 5731, + "name": "POP", + "source": 34 + }, + { + "begin": 5635, + "end": 5731, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5737, + "end": 5847, + "name": "tag", + "source": 34, + "value": "1029" + }, + { + "begin": 5737, + "end": 5847, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5788, + "end": 5795, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 5817, + "end": 5841, + "name": "PUSH [tag]", + "source": 34, + "value": "1206" + }, + { + "begin": 5835, + "end": 5840, + "name": "DUP3", + "source": 34 + }, + { + "begin": 5817, + "end": 5841, + "name": "PUSH [tag]", + "source": 34, + "value": "1028" + }, + { + "begin": 5817, + "end": 5841, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5817, + "end": 5841, + "name": "tag", + "source": 34, + "value": "1206" + }, + { + "begin": 5817, + "end": 5841, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5806, + "end": 5841, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5806, + "end": 5841, + "name": "POP", + "source": 34 + }, + { + "begin": 5737, + "end": 5847, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 5737, + "end": 5847, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 5737, + "end": 5847, + "name": "POP", + "source": 34 + }, + { + "begin": 5737, + "end": 5847, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5853, + "end": 6003, + "name": "tag", + "source": 34, + "value": "1030" + }, + { + "begin": 5853, + "end": 6003, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5940, + "end": 5978, + "name": "PUSH [tag]", + "source": 34, + "value": "1208" + }, + { + "begin": 5972, + "end": 5977, + "name": "DUP2", + "source": 34 + }, + { + "begin": 5940, + "end": 5978, + "name": "PUSH [tag]", + "source": 34, + "value": "1029" + }, + { + "begin": 5940, + "end": 5978, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 5940, + "end": 5978, + "name": "tag", + "source": 34, + "value": "1208" + }, + { + "begin": 5940, + "end": 5978, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5933, + "end": 5938, + "name": "DUP2", + "source": 34 + }, + { + "begin": 5930, + "end": 5979, + "name": "EQ", + "source": 34 + }, + { + "begin": 5920, + "end": 5997, + "name": "PUSH [tag]", + "source": 34, + "value": "1209" + }, + { + "begin": 5920, + "end": 5997, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 5993, + "end": 5994, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 5990, + "end": 5991, + "name": "DUP1", + "source": 34 + }, + { + "begin": 5983, + "end": 5995, + "name": "REVERT", + "source": 34 + }, + { + "begin": 5920, + "end": 5997, + "name": "tag", + "source": 34, + "value": "1209" + }, + { + "begin": 5920, + "end": 5997, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 5853, + "end": 6003, + "name": "POP", + "source": 34 + }, + { + "begin": 5853, + "end": 6003, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6009, + "end": 6176, + "name": "tag", + "source": 34, + "value": "1031" + }, + { + "begin": 6009, + "end": 6176, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6069, + "end": 6074, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 6107, + "end": 6113, + "name": "DUP2", + "source": 34 + }, + { + "begin": 6094, + "end": 6114, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 6085, + "end": 6114, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 6085, + "end": 6114, + "name": "POP", + "source": 34 + }, + { + "begin": 6123, + "end": 6170, + "name": "PUSH [tag]", + "source": 34, + "value": "1211" + }, + { + "begin": 6164, + "end": 6169, + "name": "DUP2", + "source": 34 + }, + { + "begin": 6123, + "end": 6170, + "name": "PUSH [tag]", + "source": 34, + "value": "1030" + }, + { + "begin": 6123, + "end": 6170, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6123, + "end": 6170, + "name": "tag", + "source": 34, + "value": "1211" + }, + { + "begin": 6123, + "end": 6170, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6009, + "end": 6176, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 6009, + "end": 6176, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 6009, + "end": 6176, + "name": "POP", + "source": 34 + }, + { + "begin": 6009, + "end": 6176, + "name": "POP", + "source": 34 + }, + { + "begin": 6009, + "end": 6176, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6207, + "end": 6959, + "name": "tag", + "source": 34, + "value": "1032" + }, + { + "begin": 6207, + "end": 6959, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6317, + "end": 6322, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 6342, + "end": 6437, + "name": "PUSH [tag]", + "source": 34, + "value": "1213" + }, + { + "begin": 6358, + "end": 6436, + "name": "PUSH [tag]", + "source": 34, + "value": "1214" + }, + { + "begin": 6429, + "end": 6435, + "name": "DUP5", + "source": 34 + }, + { + "begin": 6358, + "end": 6436, + "name": "PUSH [tag]", + "source": 34, + "value": "1026" + }, + { + "begin": 6358, + "end": 6436, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6358, + "end": 6436, + "name": "tag", + "source": 34, + "value": "1214" + }, + { + "begin": 6358, + "end": 6436, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6342, + "end": 6437, + "name": "PUSH [tag]", + "source": 34, + "value": "1014" + }, + { + "begin": 6342, + "end": 6437, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6342, + "end": 6437, + "name": "tag", + "source": 34, + "value": "1213" + }, + { + "begin": 6342, + "end": 6437, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6333, + "end": 6437, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 6333, + "end": 6437, + "name": "POP", + "source": 34 + }, + { + "begin": 6457, + "end": 6462, + "name": "DUP1", + "source": 34 + }, + { + "begin": 6486, + "end": 6492, + "name": "DUP4", + "source": 34 + }, + { + "begin": 6479, + "end": 6484, + "name": "DUP3", + "source": 34 + }, + { + "begin": 6472, + "end": 6493, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 6520, + "end": 6524, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 6513, + "end": 6518, + "name": "DUP3", + "source": 34 + }, + { + "begin": 6509, + "end": 6525, + "name": "ADD", + "source": 34 + }, + { + "begin": 6502, + "end": 6525, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 6502, + "end": 6525, + "name": "POP", + "source": 34 + }, + { + "begin": 6573, + "end": 6577, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 6565, + "end": 6571, + "name": "DUP5", + "source": 34 + }, + { + "begin": 6561, + "end": 6578, + "name": "MUL", + "source": 34 + }, + { + "begin": 6553, + "end": 6559, + "name": "DUP4", + "source": 34 + }, + { + "begin": 6549, + "end": 6579, + "name": "ADD", + "source": 34 + }, + { + "begin": 6602, + "end": 6605, + "name": "DUP6", + "source": 34 + }, + { + "begin": 6594, + "end": 6600, + "name": "DUP2", + "source": 34 + }, + { + "begin": 6591, + "end": 6606, + "name": "GT", + "source": 34 + }, + { + "begin": 6588, + "end": 6710, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 6588, + "end": 6710, + "name": "PUSH [tag]", + "source": 34, + "value": "1215" + }, + { + "begin": 6588, + "end": 6710, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 6621, + "end": 6700, + "name": "PUSH [tag]", + "source": 34, + "value": "1216" + }, + { + "begin": 6621, + "end": 6700, + "name": "PUSH [tag]", + "source": 34, + "value": "1018" + }, + { + "begin": 6621, + "end": 6700, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6621, + "end": 6700, + "name": "tag", + "source": 34, + "value": "1216" + }, + { + "begin": 6621, + "end": 6700, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6588, + "end": 6710, + "name": "tag", + "source": 34, + "value": "1215" + }, + { + "begin": 6588, + "end": 6710, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6736, + "end": 6742, + "name": "DUP4", + "source": 34 + }, + { + "begin": 6719, + "end": 6953, + "name": "tag", + "source": 34, + "value": "1217" + }, + { + "begin": 6719, + "end": 6953, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6753, + "end": 6759, + "name": "DUP2", + "source": 34 + }, + { + "begin": 6748, + "end": 6751, + "name": "DUP2", + "source": 34 + }, + { + "begin": 6745, + "end": 6760, + "name": "LT", + "source": 34 + }, + { + "begin": 6719, + "end": 6953, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 6719, + "end": 6953, + "name": "PUSH [tag]", + "source": 34, + "value": "1219" + }, + { + "begin": 6719, + "end": 6953, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 6828, + "end": 6831, + "name": "DUP1", + "source": 34 + }, + { + "begin": 6857, + "end": 6908, + "name": "PUSH [tag]", + "source": 34, + "value": "1220" + }, + { + "begin": 6904, + "end": 6907, + "name": "DUP9", + "source": 34 + }, + { + "begin": 6892, + "end": 6902, + "name": "DUP3", + "source": 34 + }, + { + "begin": 6857, + "end": 6908, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 6857, + "end": 6908, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6857, + "end": 6908, + "name": "tag", + "source": 34, + "value": "1220" + }, + { + "begin": 6857, + "end": 6908, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6852, + "end": 6855, + "name": "DUP5", + "source": 34 + }, + { + "begin": 6845, + "end": 6909, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 6938, + "end": 6942, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 6933, + "end": 6936, + "name": "DUP5", + "source": 34 + }, + { + "begin": 6929, + "end": 6943, + "name": "ADD", + "source": 34 + }, + { + "begin": 6922, + "end": 6943, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 6922, + "end": 6943, + "name": "POP", + "source": 34 + }, + { + "begin": 6795, + "end": 6953, + "name": "POP", + "source": 34 + }, + { + "begin": 6779, + "end": 6783, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 6774, + "end": 6777, + "name": "DUP2", + "source": 34 + }, + { + "begin": 6770, + "end": 6784, + "name": "ADD", + "source": 34 + }, + { + "begin": 6763, + "end": 6784, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 6763, + "end": 6784, + "name": "POP", + "source": 34 + }, + { + "begin": 6719, + "end": 6953, + "name": "PUSH [tag]", + "source": 34, + "value": "1217" + }, + { + "begin": 6719, + "end": 6953, + "name": "JUMP", + "source": 34 + }, + { + "begin": 6719, + "end": 6953, + "name": "tag", + "source": 34, + "value": "1219" + }, + { + "begin": 6719, + "end": 6953, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 6723, + "end": 6744, + "name": "POP", + "source": 34 + }, + { + "begin": 6323, + "end": 6959, + "name": "POP", + "source": 34 + }, + { + "begin": 6323, + "end": 6959, + "name": "POP", + "source": 34 + }, + { + "begin": 6207, + "end": 6959, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 6207, + "end": 6959, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 6207, + "end": 6959, + "name": "POP", + "source": 34 + }, + { + "begin": 6207, + "end": 6959, + "name": "POP", + "source": 34 + }, + { + "begin": 6207, + "end": 6959, + "name": "POP", + "source": 34 + }, + { + "begin": 6207, + "end": 6959, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 6990, + "end": 7388, + "name": "tag", + "source": 34, + "value": "1033" + }, + { + "begin": 6990, + "end": 7388, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7075, + "end": 7080, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 7124, + "end": 7127, + "name": "DUP3", + "source": 34 + }, + { + "begin": 7117, + "end": 7121, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 7109, + "end": 7115, + "name": "DUP4", + "source": 34 + }, + { + "begin": 7105, + "end": 7122, + "name": "ADD", + "source": 34 + }, + { + "begin": 7101, + "end": 7128, + "name": "SLT", + "source": 34 + }, + { + "begin": 7091, + "end": 7213, + "name": "PUSH [tag]", + "source": 34, + "value": "1222" + }, + { + "begin": 7091, + "end": 7213, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 7132, + "end": 7211, + "name": "PUSH [tag]", + "source": 34, + "value": "1223" + }, + { + "begin": 7132, + "end": 7211, + "name": "PUSH [tag]", + "source": 34, + "value": "1016" + }, + { + "begin": 7132, + "end": 7211, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 7132, + "end": 7211, + "name": "tag", + "source": 34, + "value": "1223" + }, + { + "begin": 7132, + "end": 7211, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7091, + "end": 7213, + "name": "tag", + "source": 34, + "value": "1222" + }, + { + "begin": 7091, + "end": 7213, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7249, + "end": 7255, + "name": "DUP2", + "source": 34 + }, + { + "begin": 7236, + "end": 7256, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 7274, + "end": 7382, + "name": "PUSH [tag]", + "source": 34, + "value": "1224" + }, + { + "begin": 7378, + "end": 7381, + "name": "DUP5", + "source": 34 + }, + { + "begin": 7370, + "end": 7376, + "name": "DUP3", + "source": 34 + }, + { + "begin": 7363, + "end": 7367, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 7355, + "end": 7361, + "name": "DUP7", + "source": 34 + }, + { + "begin": 7351, + "end": 7368, + "name": "ADD", + "source": 34 + }, + { + "begin": 7274, + "end": 7382, + "name": "PUSH [tag]", + "source": 34, + "value": "1032" + }, + { + "begin": 7274, + "end": 7382, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 7274, + "end": 7382, + "name": "tag", + "source": 34, + "value": "1224" + }, + { + "begin": 7274, + "end": 7382, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7265, + "end": 7382, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 7265, + "end": 7382, + "name": "POP", + "source": 34 + }, + { + "begin": 7081, + "end": 7388, + "name": "POP", + "source": 34 + }, + { + "begin": 6990, + "end": 7388, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 6990, + "end": 7388, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 6990, + "end": 7388, + "name": "POP", + "source": 34 + }, + { + "begin": 6990, + "end": 7388, + "name": "POP", + "source": 34 + }, + { + "begin": 6990, + "end": 7388, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 7423, + "end": 8753, + "name": "tag", + "source": 34, + "value": "1034" + }, + { + "begin": 7423, + "end": 8753, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7494, + "end": 7499, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 7538, + "end": 7542, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 7526, + "end": 7535, + "name": "DUP3", + "source": 34 + }, + { + "begin": 7521, + "end": 7524, + "name": "DUP5", + "source": 34 + }, + { + "begin": 7517, + "end": 7536, + "name": "SUB", + "source": 34 + }, + { + "begin": 7513, + "end": 7543, + "name": "SLT", + "source": 34 + }, + { + "begin": 7510, + "end": 7627, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 7510, + "end": 7627, + "name": "PUSH [tag]", + "source": 34, + "value": "1226" + }, + { + "begin": 7510, + "end": 7627, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 7546, + "end": 7625, + "name": "PUSH [tag]", + "source": 34, + "value": "1227" + }, + { + "begin": 7546, + "end": 7625, + "name": "PUSH [tag]", + "source": 34, + "value": "1011" + }, + { + "begin": 7546, + "end": 7625, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 7546, + "end": 7625, + "name": "tag", + "source": 34, + "value": "1227" + }, + { + "begin": 7546, + "end": 7625, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7510, + "end": 7627, + "name": "tag", + "source": 34, + "value": "1226" + }, + { + "begin": 7510, + "end": 7627, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7645, + "end": 7666, + "name": "PUSH [tag]", + "source": 34, + "value": "1228" + }, + { + "begin": 7661, + "end": 7665, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 7645, + "end": 7666, + "name": "PUSH [tag]", + "source": 34, + "value": "1014" + }, + { + "begin": 7645, + "end": 7666, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 7645, + "end": 7666, + "name": "tag", + "source": 34, + "value": "1228" + }, + { + "begin": 7645, + "end": 7666, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7636, + "end": 7666, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 7636, + "end": 7666, + "name": "POP", + "source": 34 + }, + { + "begin": 7761, + "end": 7762, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 7750, + "end": 7759, + "name": "DUP3", + "source": 34 + }, + { + "begin": 7746, + "end": 7763, + "name": "ADD", + "source": 34 + }, + { + "begin": 7733, + "end": 7764, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 7791, + "end": 7809, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7783, + "end": 7789, + "name": "DUP2", + "source": 34 + }, + { + "begin": 7780, + "end": 7810, + "name": "GT", + "source": 34 + }, + { + "begin": 7777, + "end": 7894, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 7777, + "end": 7894, + "name": "PUSH [tag]", + "source": 34, + "value": "1229" + }, + { + "begin": 7777, + "end": 7894, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 7813, + "end": 7892, + "name": "PUSH [tag]", + "source": 34, + "value": "1230" + }, + { + "begin": 7813, + "end": 7892, + "name": "PUSH [tag]", + "source": 34, + "value": "1015" + }, + { + "begin": 7813, + "end": 7892, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 7813, + "end": 7892, + "name": "tag", + "source": 34, + "value": "1230" + }, + { + "begin": 7813, + "end": 7892, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7777, + "end": 7894, + "name": "tag", + "source": 34, + "value": "1229" + }, + { + "begin": 7777, + "end": 7894, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7933, + "end": 8007, + "name": "PUSH [tag]", + "source": 34, + "value": "1231" + }, + { + "begin": 8003, + "end": 8006, + "name": "DUP5", + "source": 34 + }, + { + "begin": 7994, + "end": 8000, + "name": "DUP3", + "source": 34 + }, + { + "begin": 7983, + "end": 7992, + "name": "DUP6", + "source": 34 + }, + { + "begin": 7979, + "end": 8001, + "name": "ADD", + "source": 34 + }, + { + "begin": 7933, + "end": 8007, + "name": "PUSH [tag]", + "source": 34, + "value": "1020" + }, + { + "begin": 7933, + "end": 8007, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 7933, + "end": 8007, + "name": "tag", + "source": 34, + "value": "1231" + }, + { + "begin": 7933, + "end": 8007, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 7926, + "end": 7930, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 7919, + "end": 7924, + "name": "DUP4", + "source": 34 + }, + { + "begin": 7915, + "end": 7931, + "name": "ADD", + "source": 34 + }, + { + "begin": 7908, + "end": 8008, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 7676, + "end": 8019, + "name": "POP", + "source": 34 + }, + { + "begin": 8110, + "end": 8112, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 8099, + "end": 8108, + "name": "DUP3", + "source": 34 + }, + { + "begin": 8095, + "end": 8113, + "name": "ADD", + "source": 34 + }, + { + "begin": 8082, + "end": 8114, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 8141, + "end": 8159, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8133, + "end": 8139, + "name": "DUP2", + "source": 34 + }, + { + "begin": 8130, + "end": 8160, + "name": "GT", + "source": 34 + }, + { + "begin": 8127, + "end": 8244, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 8127, + "end": 8244, + "name": "PUSH [tag]", + "source": 34, + "value": "1232" + }, + { + "begin": 8127, + "end": 8244, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 8163, + "end": 8242, + "name": "PUSH [tag]", + "source": 34, + "value": "1233" + }, + { + "begin": 8163, + "end": 8242, + "name": "PUSH [tag]", + "source": 34, + "value": "1015" + }, + { + "begin": 8163, + "end": 8242, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8163, + "end": 8242, + "name": "tag", + "source": 34, + "value": "1233" + }, + { + "begin": 8163, + "end": 8242, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8127, + "end": 8244, + "name": "tag", + "source": 34, + "value": "1232" + }, + { + "begin": 8127, + "end": 8244, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8283, + "end": 8369, + "name": "PUSH [tag]", + "source": 34, + "value": "1234" + }, + { + "begin": 8365, + "end": 8368, + "name": "DUP5", + "source": 34 + }, + { + "begin": 8356, + "end": 8362, + "name": "DUP3", + "source": 34 + }, + { + "begin": 8345, + "end": 8354, + "name": "DUP6", + "source": 34 + }, + { + "begin": 8341, + "end": 8363, + "name": "ADD", + "source": 34 + }, + { + "begin": 8283, + "end": 8369, + "name": "PUSH [tag]", + "source": 34, + "value": "1025" + }, + { + "begin": 8283, + "end": 8369, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8283, + "end": 8369, + "name": "tag", + "source": 34, + "value": "1234" + }, + { + "begin": 8283, + "end": 8369, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8276, + "end": 8280, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 8269, + "end": 8274, + "name": "DUP4", + "source": 34 + }, + { + "begin": 8265, + "end": 8281, + "name": "ADD", + "source": 34 + }, + { + "begin": 8258, + "end": 8370, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 8029, + "end": 8381, + "name": "POP", + "source": 34 + }, + { + "begin": 8473, + "end": 8475, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 8462, + "end": 8471, + "name": "DUP3", + "source": 34 + }, + { + "begin": 8458, + "end": 8476, + "name": "ADD", + "source": 34 + }, + { + "begin": 8445, + "end": 8477, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 8504, + "end": 8522, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8496, + "end": 8502, + "name": "DUP2", + "source": 34 + }, + { + "begin": 8493, + "end": 8523, + "name": "GT", + "source": 34 + }, + { + "begin": 8490, + "end": 8607, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 8490, + "end": 8607, + "name": "PUSH [tag]", + "source": 34, + "value": "1235" + }, + { + "begin": 8490, + "end": 8607, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 8526, + "end": 8605, + "name": "PUSH [tag]", + "source": 34, + "value": "1236" + }, + { + "begin": 8526, + "end": 8605, + "name": "PUSH [tag]", + "source": 34, + "value": "1015" + }, + { + "begin": 8526, + "end": 8605, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8526, + "end": 8605, + "name": "tag", + "source": 34, + "value": "1236" + }, + { + "begin": 8526, + "end": 8605, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8490, + "end": 8607, + "name": "tag", + "source": 34, + "value": "1235" + }, + { + "begin": 8490, + "end": 8607, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8646, + "end": 8734, + "name": "PUSH [tag]", + "source": 34, + "value": "1237" + }, + { + "begin": 8730, + "end": 8733, + "name": "DUP5", + "source": 34 + }, + { + "begin": 8721, + "end": 8727, + "name": "DUP3", + "source": 34 + }, + { + "begin": 8710, + "end": 8719, + "name": "DUP6", + "source": 34 + }, + { + "begin": 8706, + "end": 8728, + "name": "ADD", + "source": 34 + }, + { + "begin": 8646, + "end": 8734, + "name": "PUSH [tag]", + "source": 34, + "value": "1033" + }, + { + "begin": 8646, + "end": 8734, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8646, + "end": 8734, + "name": "tag", + "source": 34, + "value": "1237" + }, + { + "begin": 8646, + "end": 8734, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8639, + "end": 8643, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 8632, + "end": 8637, + "name": "DUP4", + "source": 34 + }, + { + "begin": 8628, + "end": 8644, + "name": "ADD", + "source": 34 + }, + { + "begin": 8621, + "end": 8735, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 8391, + "end": 8746, + "name": "POP", + "source": 34 + }, + { + "begin": 7423, + "end": 8753, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 7423, + "end": 8753, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 7423, + "end": 8753, + "name": "POP", + "source": 34 + }, + { + "begin": 7423, + "end": 8753, + "name": "POP", + "source": 34 + }, + { + "begin": 7423, + "end": 8753, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8759, + "end": 8863, + "name": "tag", + "source": 34, + "value": "1035" + }, + { + "begin": 8759, + "end": 8863, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8804, + "end": 8811, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 8833, + "end": 8857, + "name": "PUSH [tag]", + "source": 34, + "value": "1239" + }, + { + "begin": 8851, + "end": 8856, + "name": "DUP3", + "source": 34 + }, + { + "begin": 8833, + "end": 8857, + "name": "PUSH [tag]", + "source": 34, + "value": "1027" + }, + { + "begin": 8833, + "end": 8857, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8833, + "end": 8857, + "name": "tag", + "source": 34, + "value": "1239" + }, + { + "begin": 8833, + "end": 8857, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8822, + "end": 8857, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 8822, + "end": 8857, + "name": "POP", + "source": 34 + }, + { + "begin": 8759, + "end": 8863, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 8759, + "end": 8863, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 8759, + "end": 8863, + "name": "POP", + "source": 34 + }, + { + "begin": 8759, + "end": 8863, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8869, + "end": 9007, + "name": "tag", + "source": 34, + "value": "1036" + }, + { + "begin": 8869, + "end": 9007, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8950, + "end": 8982, + "name": "PUSH [tag]", + "source": 34, + "value": "1241" + }, + { + "begin": 8976, + "end": 8981, + "name": "DUP2", + "source": 34 + }, + { + "begin": 8950, + "end": 8982, + "name": "PUSH [tag]", + "source": 34, + "value": "1035" + }, + { + "begin": 8950, + "end": 8982, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 8950, + "end": 8982, + "name": "tag", + "source": 34, + "value": "1241" + }, + { + "begin": 8950, + "end": 8982, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8943, + "end": 8948, + "name": "DUP2", + "source": 34 + }, + { + "begin": 8940, + "end": 8983, + "name": "EQ", + "source": 34 + }, + { + "begin": 8930, + "end": 9001, + "name": "PUSH [tag]", + "source": 34, + "value": "1242" + }, + { + "begin": 8930, + "end": 9001, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 8997, + "end": 8998, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 8994, + "end": 8995, + "name": "DUP1", + "source": 34 + }, + { + "begin": 8987, + "end": 8999, + "name": "REVERT", + "source": 34 + }, + { + "begin": 8930, + "end": 9001, + "name": "tag", + "source": 34, + "value": "1242" + }, + { + "begin": 8930, + "end": 9001, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 8869, + "end": 9007, + "name": "POP", + "source": 34 + }, + { + "begin": 8869, + "end": 9007, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9013, + "end": 9168, + "name": "tag", + "source": 34, + "value": "1037" + }, + { + "begin": 9013, + "end": 9168, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9067, + "end": 9072, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 9105, + "end": 9111, + "name": "DUP2", + "source": 34 + }, + { + "begin": 9092, + "end": 9112, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 9083, + "end": 9112, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 9083, + "end": 9112, + "name": "POP", + "source": 34 + }, + { + "begin": 9121, + "end": 9162, + "name": "PUSH [tag]", + "source": 34, + "value": "1244" + }, + { + "begin": 9156, + "end": 9161, + "name": "DUP2", + "source": 34 + }, + { + "begin": 9121, + "end": 9162, + "name": "PUSH [tag]", + "source": 34, + "value": "1036" + }, + { + "begin": 9121, + "end": 9162, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9121, + "end": 9162, + "name": "tag", + "source": 34, + "value": "1244" + }, + { + "begin": 9121, + "end": 9162, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9013, + "end": 9168, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 9013, + "end": 9168, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 9013, + "end": 9168, + "name": "POP", + "source": 34 + }, + { + "begin": 9013, + "end": 9168, + "name": "POP", + "source": 34 + }, + { + "begin": 9013, + "end": 9168, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "tag", + "source": 34, + "value": "36" + }, + { + "begin": 9174, + "end": 10305, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9299, + "end": 9305, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 9307, + "end": 9313, + "name": "DUP1", + "source": 34 + }, + { + "begin": 9315, + "end": 9321, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 9323, + "end": 9329, + "name": "DUP1", + "source": 34 + }, + { + "begin": 9331, + "end": 9337, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 9380, + "end": 9383, + "name": "PUSH", + "source": 34, + "value": "A0" + }, + { + "begin": 9368, + "end": 9377, + "name": "DUP7", + "source": 34 + }, + { + "begin": 9359, + "end": 9366, + "name": "DUP9", + "source": 34 + }, + { + "begin": 9355, + "end": 9378, + "name": "SUB", + "source": 34 + }, + { + "begin": 9351, + "end": 9384, + "name": "SLT", + "source": 34 + }, + { + "begin": 9348, + "end": 9468, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 9348, + "end": 9468, + "name": "PUSH [tag]", + "source": 34, + "value": "1246" + }, + { + "begin": 9348, + "end": 9468, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 9387, + "end": 9466, + "name": "PUSH [tag]", + "source": 34, + "value": "1247" + }, + { + "begin": 9387, + "end": 9466, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 9387, + "end": 9466, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9387, + "end": 9466, + "name": "tag", + "source": 34, + "value": "1247" + }, + { + "begin": 9387, + "end": 9466, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9348, + "end": 9468, + "name": "tag", + "source": 34, + "value": "1246" + }, + { + "begin": 9348, + "end": 9468, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9507, + "end": 9508, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 9532, + "end": 9585, + "name": "PUSH [tag]", + "source": 34, + "value": "1248" + }, + { + "begin": 9577, + "end": 9584, + "name": "DUP9", + "source": 34 + }, + { + "begin": 9568, + "end": 9574, + "name": "DUP3", + "source": 34 + }, + { + "begin": 9557, + "end": 9566, + "name": "DUP10", + "source": 34 + }, + { + "begin": 9553, + "end": 9575, + "name": "ADD", + "source": 34 + }, + { + "begin": 9532, + "end": 9585, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 9532, + "end": 9585, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9532, + "end": 9585, + "name": "tag", + "source": 34, + "value": "1248" + }, + { + "begin": 9532, + "end": 9585, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9522, + "end": 9585, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 9522, + "end": 9585, + "name": "POP", + "source": 34 + }, + { + "begin": 9478, + "end": 9595, + "name": "POP", + "source": 34 + }, + { + "begin": 9634, + "end": 9636, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 9660, + "end": 9713, + "name": "PUSH [tag]", + "source": 34, + "value": "1249" + }, + { + "begin": 9705, + "end": 9712, + "name": "DUP9", + "source": 34 + }, + { + "begin": 9696, + "end": 9702, + "name": "DUP3", + "source": 34 + }, + { + "begin": 9685, + "end": 9694, + "name": "DUP10", + "source": 34 + }, + { + "begin": 9681, + "end": 9703, + "name": "ADD", + "source": 34 + }, + { + "begin": 9660, + "end": 9713, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 9660, + "end": 9713, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9660, + "end": 9713, + "name": "tag", + "source": 34, + "value": "1249" + }, + { + "begin": 9660, + "end": 9713, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9650, + "end": 9713, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 9650, + "end": 9713, + "name": "POP", + "source": 34 + }, + { + "begin": 9605, + "end": 9723, + "name": "POP", + "source": 34 + }, + { + "begin": 9790, + "end": 9792, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 9779, + "end": 9788, + "name": "DUP7", + "source": 34 + }, + { + "begin": 9775, + "end": 9793, + "name": "ADD", + "source": 34 + }, + { + "begin": 9762, + "end": 9794, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 9821, + "end": 9839, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 9813, + "end": 9819, + "name": "DUP2", + "source": 34 + }, + { + "begin": 9810, + "end": 9840, + "name": "GT", + "source": 34 + }, + { + "begin": 9807, + "end": 9924, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 9807, + "end": 9924, + "name": "PUSH [tag]", + "source": 34, + "value": "1250" + }, + { + "begin": 9807, + "end": 9924, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 9843, + "end": 9922, + "name": "PUSH [tag]", + "source": 34, + "value": "1251" + }, + { + "begin": 9843, + "end": 9922, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 9843, + "end": 9922, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9843, + "end": 9922, + "name": "tag", + "source": 34, + "value": "1251" + }, + { + "begin": 9843, + "end": 9922, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9807, + "end": 9924, + "name": "tag", + "source": 34, + "value": "1250" + }, + { + "begin": 9807, + "end": 9924, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9948, + "end": 10023, + "name": "PUSH [tag]", + "source": 34, + "value": "1252" + }, + { + "begin": 10015, + "end": 10022, + "name": "DUP9", + "source": 34 + }, + { + "begin": 10006, + "end": 10012, + "name": "DUP3", + "source": 34 + }, + { + "begin": 9995, + "end": 10004, + "name": "DUP10", + "source": 34 + }, + { + "begin": 9991, + "end": 10013, + "name": "ADD", + "source": 34 + }, + { + "begin": 9948, + "end": 10023, + "name": "PUSH [tag]", + "source": 34, + "value": "1034" + }, + { + "begin": 9948, + "end": 10023, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 9948, + "end": 10023, + "name": "tag", + "source": 34, + "value": "1252" + }, + { + "begin": 9948, + "end": 10023, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 9938, + "end": 10023, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 9938, + "end": 10023, + "name": "POP", + "source": 34 + }, + { + "begin": 9733, + "end": 10033, + "name": "POP", + "source": 34 + }, + { + "begin": 10072, + "end": 10074, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 10098, + "end": 10159, + "name": "PUSH [tag]", + "source": 34, + "value": "1253" + }, + { + "begin": 10151, + "end": 10158, + "name": "DUP9", + "source": 34 + }, + { + "begin": 10142, + "end": 10148, + "name": "DUP3", + "source": 34 + }, + { + "begin": 10131, + "end": 10140, + "name": "DUP10", + "source": 34 + }, + { + "begin": 10127, + "end": 10149, + "name": "ADD", + "source": 34 + }, + { + "begin": 10098, + "end": 10159, + "name": "PUSH [tag]", + "source": 34, + "value": "1037" + }, + { + "begin": 10098, + "end": 10159, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10098, + "end": 10159, + "name": "tag", + "source": 34, + "value": "1253" + }, + { + "begin": 10098, + "end": 10159, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10088, + "end": 10159, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 10088, + "end": 10159, + "name": "POP", + "source": 34 + }, + { + "begin": 10043, + "end": 10169, + "name": "POP", + "source": 34 + }, + { + "begin": 10208, + "end": 10211, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 10235, + "end": 10288, + "name": "PUSH [tag]", + "source": 34, + "value": "1254" + }, + { + "begin": 10280, + "end": 10287, + "name": "DUP9", + "source": 34 + }, + { + "begin": 10271, + "end": 10277, + "name": "DUP3", + "source": 34 + }, + { + "begin": 10260, + "end": 10269, + "name": "DUP10", + "source": 34 + }, + { + "begin": 10256, + "end": 10278, + "name": "ADD", + "source": 34 + }, + { + "begin": 10235, + "end": 10288, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 10235, + "end": 10288, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10235, + "end": 10288, + "name": "tag", + "source": 34, + "value": "1254" + }, + { + "begin": 10235, + "end": 10288, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10225, + "end": 10288, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 10225, + "end": 10288, + "name": "POP", + "source": 34 + }, + { + "begin": 10179, + "end": 10298, + "name": "POP", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "POP", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "name": "POP", + "source": 34 + }, + { + "begin": 9174, + "end": 10305, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10311, + "end": 10429, + "name": "tag", + "source": 34, + "value": "1038" + }, + { + "begin": 10311, + "end": 10429, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10398, + "end": 10422, + "name": "PUSH [tag]", + "source": 34, + "value": "1256" + }, + { + "begin": 10416, + "end": 10421, + "name": "DUP2", + "source": 34 + }, + { + "begin": 10398, + "end": 10422, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 10398, + "end": 10422, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10398, + "end": 10422, + "name": "tag", + "source": 34, + "value": "1256" + }, + { + "begin": 10398, + "end": 10422, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10393, + "end": 10396, + "name": "DUP3", + "source": 34 + }, + { + "begin": 10386, + "end": 10423, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 10311, + "end": 10429, + "name": "POP", + "source": 34 + }, + { + "begin": 10311, + "end": 10429, + "name": "POP", + "source": 34 + }, + { + "begin": 10311, + "end": 10429, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10435, + "end": 10657, + "name": "tag", + "source": 34, + "value": "39" + }, + { + "begin": 10435, + "end": 10657, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10528, + "end": 10532, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 10566, + "end": 10568, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 10555, + "end": 10564, + "name": "DUP3", + "source": 34 + }, + { + "begin": 10551, + "end": 10569, + "name": "ADD", + "source": 34 + }, + { + "begin": 10543, + "end": 10569, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 10543, + "end": 10569, + "name": "POP", + "source": 34 + }, + { + "begin": 10579, + "end": 10650, + "name": "PUSH [tag]", + "source": 34, + "value": "1258" + }, + { + "begin": 10647, + "end": 10648, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 10636, + "end": 10645, + "name": "DUP4", + "source": 34 + }, + { + "begin": 10632, + "end": 10649, + "name": "ADD", + "source": 34 + }, + { + "begin": 10623, + "end": 10629, + "name": "DUP5", + "source": 34 + }, + { + "begin": 10579, + "end": 10650, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 10579, + "end": 10650, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10579, + "end": 10650, + "name": "tag", + "source": 34, + "value": "1258" + }, + { + "begin": 10579, + "end": 10650, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10435, + "end": 10657, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 10435, + "end": 10657, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 10435, + "end": 10657, + "name": "POP", + "source": 34 + }, + { + "begin": 10435, + "end": 10657, + "name": "POP", + "source": 34 + }, + { + "begin": 10435, + "end": 10657, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10663, + "end": 10785, + "name": "tag", + "source": 34, + "value": "1039" + }, + { + "begin": 10663, + "end": 10785, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10736, + "end": 10760, + "name": "PUSH [tag]", + "source": 34, + "value": "1260" + }, + { + "begin": 10754, + "end": 10759, + "name": "DUP2", + "source": 34 + }, + { + "begin": 10736, + "end": 10760, + "name": "PUSH [tag]", + "source": 34, + "value": "1028" + }, + { + "begin": 10736, + "end": 10760, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10736, + "end": 10760, + "name": "tag", + "source": 34, + "value": "1260" + }, + { + "begin": 10736, + "end": 10760, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10729, + "end": 10734, + "name": "DUP2", + "source": 34 + }, + { + "begin": 10726, + "end": 10761, + "name": "EQ", + "source": 34 + }, + { + "begin": 10716, + "end": 10779, + "name": "PUSH [tag]", + "source": 34, + "value": "1261" + }, + { + "begin": 10716, + "end": 10779, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 10775, + "end": 10776, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 10772, + "end": 10773, + "name": "DUP1", + "source": 34 + }, + { + "begin": 10765, + "end": 10777, + "name": "REVERT", + "source": 34 + }, + { + "begin": 10716, + "end": 10779, + "name": "tag", + "source": 34, + "value": "1261" + }, + { + "begin": 10716, + "end": 10779, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10663, + "end": 10785, + "name": "POP", + "source": 34 + }, + { + "begin": 10663, + "end": 10785, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10791, + "end": 10930, + "name": "tag", + "source": 34, + "value": "1040" + }, + { + "begin": 10791, + "end": 10930, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10837, + "end": 10842, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 10875, + "end": 10881, + "name": "DUP2", + "source": 34 + }, + { + "begin": 10862, + "end": 10882, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 10853, + "end": 10882, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 10853, + "end": 10882, + "name": "POP", + "source": 34 + }, + { + "begin": 10891, + "end": 10924, + "name": "PUSH [tag]", + "source": 34, + "value": "1263" + }, + { + "begin": 10918, + "end": 10923, + "name": "DUP2", + "source": 34 + }, + { + "begin": 10891, + "end": 10924, + "name": "PUSH [tag]", + "source": 34, + "value": "1039" + }, + { + "begin": 10891, + "end": 10924, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10891, + "end": 10924, + "name": "tag", + "source": 34, + "value": "1263" + }, + { + "begin": 10891, + "end": 10924, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 10791, + "end": 10930, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 10791, + "end": 10930, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 10791, + "end": 10930, + "name": "POP", + "source": 34 + }, + { + "begin": 10791, + "end": 10930, + "name": "POP", + "source": 34 + }, + { + "begin": 10791, + "end": 10930, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "tag", + "source": 34, + "value": "42" + }, + { + "begin": 10936, + "end": 11905, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11044, + "end": 11050, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 11052, + "end": 11058, + "name": "DUP1", + "source": 34 + }, + { + "begin": 11060, + "end": 11066, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 11068, + "end": 11074, + "name": "DUP1", + "source": 34 + }, + { + "begin": 11117, + "end": 11120, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 11105, + "end": 11114, + "name": "DUP6", + "source": 34 + }, + { + "begin": 11096, + "end": 11103, + "name": "DUP8", + "source": 34 + }, + { + "begin": 11092, + "end": 11115, + "name": "SUB", + "source": 34 + }, + { + "begin": 11088, + "end": 11121, + "name": "SLT", + "source": 34 + }, + { + "begin": 11085, + "end": 11205, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 11085, + "end": 11205, + "name": "PUSH [tag]", + "source": 34, + "value": "1265" + }, + { + "begin": 11085, + "end": 11205, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 11124, + "end": 11203, + "name": "PUSH [tag]", + "source": 34, + "value": "1266" + }, + { + "begin": 11124, + "end": 11203, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 11124, + "end": 11203, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 11124, + "end": 11203, + "name": "tag", + "source": 34, + "value": "1266" + }, + { + "begin": 11124, + "end": 11203, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11085, + "end": 11205, + "name": "tag", + "source": 34, + "value": "1265" + }, + { + "begin": 11085, + "end": 11205, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11244, + "end": 11245, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 11269, + "end": 11322, + "name": "PUSH [tag]", + "source": 34, + "value": "1267" + }, + { + "begin": 11314, + "end": 11321, + "name": "DUP8", + "source": 34 + }, + { + "begin": 11305, + "end": 11311, + "name": "DUP3", + "source": 34 + }, + { + "begin": 11294, + "end": 11303, + "name": "DUP9", + "source": 34 + }, + { + "begin": 11290, + "end": 11312, + "name": "ADD", + "source": 34 + }, + { + "begin": 11269, + "end": 11322, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 11269, + "end": 11322, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 11269, + "end": 11322, + "name": "tag", + "source": 34, + "value": "1267" + }, + { + "begin": 11269, + "end": 11322, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11259, + "end": 11322, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 11259, + "end": 11322, + "name": "POP", + "source": 34 + }, + { + "begin": 11215, + "end": 11332, + "name": "POP", + "source": 34 + }, + { + "begin": 11399, + "end": 11401, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 11388, + "end": 11397, + "name": "DUP6", + "source": 34 + }, + { + "begin": 11384, + "end": 11402, + "name": "ADD", + "source": 34 + }, + { + "begin": 11371, + "end": 11403, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 11430, + "end": 11448, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 11422, + "end": 11428, + "name": "DUP2", + "source": 34 + }, + { + "begin": 11419, + "end": 11449, + "name": "GT", + "source": 34 + }, + { + "begin": 11416, + "end": 11533, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 11416, + "end": 11533, + "name": "PUSH [tag]", + "source": 34, + "value": "1268" + }, + { + "begin": 11416, + "end": 11533, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 11452, + "end": 11531, + "name": "PUSH [tag]", + "source": 34, + "value": "1269" + }, + { + "begin": 11452, + "end": 11531, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 11452, + "end": 11531, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 11452, + "end": 11531, + "name": "tag", + "source": 34, + "value": "1269" + }, + { + "begin": 11452, + "end": 11531, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11416, + "end": 11533, + "name": "tag", + "source": 34, + "value": "1268" + }, + { + "begin": 11416, + "end": 11533, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11557, + "end": 11632, + "name": "PUSH [tag]", + "source": 34, + "value": "1270" + }, + { + "begin": 11624, + "end": 11631, + "name": "DUP8", + "source": 34 + }, + { + "begin": 11615, + "end": 11621, + "name": "DUP3", + "source": 34 + }, + { + "begin": 11604, + "end": 11613, + "name": "DUP9", + "source": 34 + }, + { + "begin": 11600, + "end": 11622, + "name": "ADD", + "source": 34 + }, + { + "begin": 11557, + "end": 11632, + "name": "PUSH [tag]", + "source": 34, + "value": "1034" + }, + { + "begin": 11557, + "end": 11632, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 11557, + "end": 11632, + "name": "tag", + "source": 34, + "value": "1270" + }, + { + "begin": 11557, + "end": 11632, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11547, + "end": 11632, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 11547, + "end": 11632, + "name": "POP", + "source": 34 + }, + { + "begin": 11342, + "end": 11642, + "name": "POP", + "source": 34 + }, + { + "begin": 11681, + "end": 11683, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 11707, + "end": 11760, + "name": "PUSH [tag]", + "source": 34, + "value": "1271" + }, + { + "begin": 11752, + "end": 11759, + "name": "DUP8", + "source": 34 + }, + { + "begin": 11743, + "end": 11749, + "name": "DUP3", + "source": 34 + }, + { + "begin": 11732, + "end": 11741, + "name": "DUP9", + "source": 34 + }, + { + "begin": 11728, + "end": 11750, + "name": "ADD", + "source": 34 + }, + { + "begin": 11707, + "end": 11760, + "name": "PUSH [tag]", + "source": 34, + "value": "1040" + }, + { + "begin": 11707, + "end": 11760, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 11707, + "end": 11760, + "name": "tag", + "source": 34, + "value": "1271" + }, + { + "begin": 11707, + "end": 11760, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11697, + "end": 11760, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 11697, + "end": 11760, + "name": "POP", + "source": 34 + }, + { + "begin": 11652, + "end": 11770, + "name": "POP", + "source": 34 + }, + { + "begin": 11809, + "end": 11811, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 11835, + "end": 11888, + "name": "PUSH [tag]", + "source": 34, + "value": "1272" + }, + { + "begin": 11880, + "end": 11887, + "name": "DUP8", + "source": 34 + }, + { + "begin": 11871, + "end": 11877, + "name": "DUP3", + "source": 34 + }, + { + "begin": 11860, + "end": 11869, + "name": "DUP9", + "source": 34 + }, + { + "begin": 11856, + "end": 11878, + "name": "ADD", + "source": 34 + }, + { + "begin": 11835, + "end": 11888, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 11835, + "end": 11888, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 11835, + "end": 11888, + "name": "tag", + "source": 34, + "value": "1272" + }, + { + "begin": 11835, + "end": 11888, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11825, + "end": 11888, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 11825, + "end": 11888, + "name": "POP", + "source": 34 + }, + { + "begin": 11780, + "end": 11898, + "name": "POP", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "POP", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "name": "POP", + "source": 34 + }, + { + "begin": 10936, + "end": 11905, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 11911, + "end": 12025, + "name": "tag", + "source": 34, + "value": "1041" + }, + { + "begin": 11911, + "end": 12025, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 11978, + "end": 11984, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 12012, + "end": 12017, + "name": "DUP2", + "source": 34 + }, + { + "begin": 12006, + "end": 12018, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 11996, + "end": 12018, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 11996, + "end": 12018, + "name": "POP", + "source": 34 + }, + { + "begin": 11911, + "end": 12025, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 11911, + "end": 12025, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 11911, + "end": 12025, + "name": "POP", + "source": 34 + }, + { + "begin": 11911, + "end": 12025, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12031, + "end": 12215, + "name": "tag", + "source": 34, + "value": "1042" + }, + { + "begin": 12031, + "end": 12215, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12130, + "end": 12141, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 12164, + "end": 12170, + "name": "DUP3", + "source": 34 + }, + { + "begin": 12159, + "end": 12162, + "name": "DUP3", + "source": 34 + }, + { + "begin": 12152, + "end": 12171, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 12204, + "end": 12208, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 12199, + "end": 12202, + "name": "DUP3", + "source": 34 + }, + { + "begin": 12195, + "end": 12209, + "name": "ADD", + "source": 34 + }, + { + "begin": 12180, + "end": 12209, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 12180, + "end": 12209, + "name": "POP", + "source": 34 + }, + { + "begin": 12031, + "end": 12215, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 12031, + "end": 12215, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 12031, + "end": 12215, + "name": "POP", + "source": 34 + }, + { + "begin": 12031, + "end": 12215, + "name": "POP", + "source": 34 + }, + { + "begin": 12031, + "end": 12215, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12221, + "end": 12353, + "name": "tag", + "source": 34, + "value": "1043" + }, + { + "begin": 12221, + "end": 12353, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12288, + "end": 12292, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 12311, + "end": 12314, + "name": "DUP2", + "source": 34 + }, + { + "begin": 12303, + "end": 12314, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 12303, + "end": 12314, + "name": "POP", + "source": 34 + }, + { + "begin": 12341, + "end": 12345, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 12336, + "end": 12339, + "name": "DUP3", + "source": 34 + }, + { + "begin": 12332, + "end": 12346, + "name": "ADD", + "source": 34 + }, + { + "begin": 12324, + "end": 12346, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 12324, + "end": 12346, + "name": "POP", + "source": 34 + }, + { + "begin": 12221, + "end": 12353, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 12221, + "end": 12353, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 12221, + "end": 12353, + "name": "POP", + "source": 34 + }, + { + "begin": 12221, + "end": 12353, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12359, + "end": 12467, + "name": "tag", + "source": 34, + "value": "1044" + }, + { + "begin": 12359, + "end": 12467, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12436, + "end": 12460, + "name": "PUSH [tag]", + "source": 34, + "value": "1277" + }, + { + "begin": 12454, + "end": 12459, + "name": "DUP2", + "source": 34 + }, + { + "begin": 12436, + "end": 12460, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 12436, + "end": 12460, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12436, + "end": 12460, + "name": "tag", + "source": 34, + "value": "1277" + }, + { + "begin": 12436, + "end": 12460, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12431, + "end": 12434, + "name": "DUP3", + "source": 34 + }, + { + "begin": 12424, + "end": 12461, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 12359, + "end": 12467, + "name": "POP", + "source": 34 + }, + { + "begin": 12359, + "end": 12467, + "name": "POP", + "source": 34 + }, + { + "begin": 12359, + "end": 12467, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12473, + "end": 12652, + "name": "tag", + "source": 34, + "value": "1045" + }, + { + "begin": 12473, + "end": 12652, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12542, + "end": 12552, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 12563, + "end": 12609, + "name": "PUSH [tag]", + "source": 34, + "value": "1279" + }, + { + "begin": 12605, + "end": 12608, + "name": "DUP4", + "source": 34 + }, + { + "begin": 12597, + "end": 12603, + "name": "DUP4", + "source": 34 + }, + { + "begin": 12563, + "end": 12609, + "name": "PUSH [tag]", + "source": 34, + "value": "1044" + }, + { + "begin": 12563, + "end": 12609, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12563, + "end": 12609, + "name": "tag", + "source": 34, + "value": "1279" + }, + { + "begin": 12563, + "end": 12609, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12641, + "end": 12645, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 12636, + "end": 12639, + "name": "DUP4", + "source": 34 + }, + { + "begin": 12632, + "end": 12646, + "name": "ADD", + "source": 34 + }, + { + "begin": 12618, + "end": 12646, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 12618, + "end": 12646, + "name": "POP", + "source": 34 + }, + { + "begin": 12473, + "end": 12652, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 12473, + "end": 12652, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 12473, + "end": 12652, + "name": "POP", + "source": 34 + }, + { + "begin": 12473, + "end": 12652, + "name": "POP", + "source": 34 + }, + { + "begin": 12473, + "end": 12652, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12658, + "end": 12771, + "name": "tag", + "source": 34, + "value": "1046" + }, + { + "begin": 12658, + "end": 12771, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12728, + "end": 12732, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 12760, + "end": 12764, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 12755, + "end": 12758, + "name": "DUP3", + "source": 34 + }, + { + "begin": 12751, + "end": 12765, + "name": "ADD", + "source": 34 + }, + { + "begin": 12743, + "end": 12765, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 12743, + "end": 12765, + "name": "POP", + "source": 34 + }, + { + "begin": 12658, + "end": 12771, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 12658, + "end": 12771, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 12658, + "end": 12771, + "name": "POP", + "source": 34 + }, + { + "begin": 12658, + "end": 12771, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12807, + "end": 13539, + "name": "tag", + "source": 34, + "value": "1047" + }, + { + "begin": 12807, + "end": 13539, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 12926, + "end": 12929, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 12955, + "end": 13009, + "name": "PUSH [tag]", + "source": 34, + "value": "1282" + }, + { + "begin": 13003, + "end": 13008, + "name": "DUP3", + "source": 34 + }, + { + "begin": 12955, + "end": 13009, + "name": "PUSH [tag]", + "source": 34, + "value": "1041" + }, + { + "begin": 12955, + "end": 13009, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 12955, + "end": 13009, + "name": "tag", + "source": 34, + "value": "1282" + }, + { + "begin": 12955, + "end": 13009, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13025, + "end": 13111, + "name": "PUSH [tag]", + "source": 34, + "value": "1283" + }, + { + "begin": 13104, + "end": 13110, + "name": "DUP2", + "source": 34 + }, + { + "begin": 13099, + "end": 13102, + "name": "DUP6", + "source": 34 + }, + { + "begin": 13025, + "end": 13111, + "name": "PUSH [tag]", + "source": 34, + "value": "1042" + }, + { + "begin": 13025, + "end": 13111, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 13025, + "end": 13111, + "name": "tag", + "source": 34, + "value": "1283" + }, + { + "begin": 13025, + "end": 13111, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13018, + "end": 13111, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 13018, + "end": 13111, + "name": "POP", + "source": 34 + }, + { + "begin": 13135, + "end": 13191, + "name": "PUSH [tag]", + "source": 34, + "value": "1284" + }, + { + "begin": 13185, + "end": 13190, + "name": "DUP4", + "source": 34 + }, + { + "begin": 13135, + "end": 13191, + "name": "PUSH [tag]", + "source": 34, + "value": "1043" + }, + { + "begin": 13135, + "end": 13191, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 13135, + "end": 13191, + "name": "tag", + "source": 34, + "value": "1284" + }, + { + "begin": 13135, + "end": 13191, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13214, + "end": 13221, + "name": "DUP1", + "source": 34 + }, + { + "begin": 13245, + "end": 13246, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 13230, + "end": 13514, + "name": "tag", + "source": 34, + "value": "1285" + }, + { + "begin": 13230, + "end": 13514, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13255, + "end": 13261, + "name": "DUP4", + "source": 34 + }, + { + "begin": 13252, + "end": 13253, + "name": "DUP2", + "source": 34 + }, + { + "begin": 13249, + "end": 13262, + "name": "LT", + "source": 34 + }, + { + "begin": 13230, + "end": 13514, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 13230, + "end": 13514, + "name": "PUSH [tag]", + "source": 34, + "value": "1287" + }, + { + "begin": 13230, + "end": 13514, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 13331, + "end": 13337, + "name": "DUP2", + "source": 34 + }, + { + "begin": 13325, + "end": 13338, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 13358, + "end": 13421, + "name": "PUSH [tag]", + "source": 34, + "value": "1288" + }, + { + "begin": 13417, + "end": 13420, + "name": "DUP9", + "source": 34 + }, + { + "begin": 13402, + "end": 13415, + "name": "DUP3", + "source": 34 + }, + { + "begin": 13358, + "end": 13421, + "name": "PUSH [tag]", + "source": 34, + "value": "1045" + }, + { + "begin": 13358, + "end": 13421, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 13358, + "end": 13421, + "name": "tag", + "source": 34, + "value": "1288" + }, + { + "begin": 13358, + "end": 13421, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13351, + "end": 13421, + "name": "SWAP8", + "source": 34 + }, + { + "begin": 13351, + "end": 13421, + "name": "POP", + "source": 34 + }, + { + "begin": 13444, + "end": 13504, + "name": "PUSH [tag]", + "source": 34, + "value": "1289" + }, + { + "begin": 13497, + "end": 13503, + "name": "DUP4", + "source": 34 + }, + { + "begin": 13444, + "end": 13504, + "name": "PUSH [tag]", + "source": 34, + "value": "1046" + }, + { + "begin": 13444, + "end": 13504, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 13444, + "end": 13504, + "name": "tag", + "source": 34, + "value": "1289" + }, + { + "begin": 13444, + "end": 13504, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13434, + "end": 13504, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 13434, + "end": 13504, + "name": "POP", + "source": 34 + }, + { + "begin": 13290, + "end": 13514, + "name": "POP", + "source": 34 + }, + { + "begin": 13277, + "end": 13278, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 13274, + "end": 13275, + "name": "DUP2", + "source": 34 + }, + { + "begin": 13270, + "end": 13279, + "name": "ADD", + "source": 34 + }, + { + "begin": 13265, + "end": 13279, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 13265, + "end": 13279, + "name": "POP", + "source": 34 + }, + { + "begin": 13230, + "end": 13514, + "name": "PUSH [tag]", + "source": 34, + "value": "1285" + }, + { + "begin": 13230, + "end": 13514, + "name": "JUMP", + "source": 34 + }, + { + "begin": 13230, + "end": 13514, + "name": "tag", + "source": 34, + "value": "1287" + }, + { + "begin": 13230, + "end": 13514, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13234, + "end": 13248, + "name": "POP", + "source": 34 + }, + { + "begin": 13530, + "end": 13533, + "name": "DUP6", + "source": 34 + }, + { + "begin": 13523, + "end": 13533, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 13523, + "end": 13533, + "name": "POP", + "source": 34 + }, + { + "begin": 12931, + "end": 13539, + "name": "POP", + "source": 34 + }, + { + "begin": 12931, + "end": 13539, + "name": "POP", + "source": 34 + }, + { + "begin": 12931, + "end": 13539, + "name": "POP", + "source": 34 + }, + { + "begin": 12807, + "end": 13539, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 12807, + "end": 13539, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 12807, + "end": 13539, + "name": "POP", + "source": 34 + }, + { + "begin": 12807, + "end": 13539, + "name": "POP", + "source": 34 + }, + { + "begin": 12807, + "end": 13539, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 13545, + "end": 13918, + "name": "tag", + "source": 34, + "value": "45" + }, + { + "begin": 13545, + "end": 13918, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13688, + "end": 13692, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 13726, + "end": 13728, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 13715, + "end": 13724, + "name": "DUP3", + "source": 34 + }, + { + "begin": 13711, + "end": 13729, + "name": "ADD", + "source": 34 + }, + { + "begin": 13703, + "end": 13729, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 13703, + "end": 13729, + "name": "POP", + "source": 34 + }, + { + "begin": 13775, + "end": 13784, + "name": "DUP2", + "source": 34 + }, + { + "begin": 13769, + "end": 13773, + "name": "DUP2", + "source": 34 + }, + { + "begin": 13765, + "end": 13785, + "name": "SUB", + "source": 34 + }, + { + "begin": 13761, + "end": 13762, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 13750, + "end": 13759, + "name": "DUP4", + "source": 34 + }, + { + "begin": 13746, + "end": 13763, + "name": "ADD", + "source": 34 + }, + { + "begin": 13739, + "end": 13786, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 13803, + "end": 13911, + "name": "PUSH [tag]", + "source": 34, + "value": "1291" + }, + { + "begin": 13906, + "end": 13910, + "name": "DUP2", + "source": 34 + }, + { + "begin": 13897, + "end": 13903, + "name": "DUP5", + "source": 34 + }, + { + "begin": 13803, + "end": 13911, + "name": "PUSH [tag]", + "source": 34, + "value": "1047" + }, + { + "begin": 13803, + "end": 13911, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 13803, + "end": 13911, + "name": "tag", + "source": 34, + "value": "1291" + }, + { + "begin": 13803, + "end": 13911, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 13795, + "end": 13911, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 13795, + "end": 13911, + "name": "POP", + "source": 34 + }, + { + "begin": 13545, + "end": 13918, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 13545, + "end": 13918, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 13545, + "end": 13918, + "name": "POP", + "source": 34 + }, + { + "begin": 13545, + "end": 13918, + "name": "POP", + "source": 34 + }, + { + "begin": 13545, + "end": 13918, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "tag", + "source": 34, + "value": "49" + }, + { + "begin": 13924, + "end": 15039, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14041, + "end": 14047, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 14049, + "end": 14055, + "name": "DUP1", + "source": 34 + }, + { + "begin": 14057, + "end": 14063, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 14065, + "end": 14071, + "name": "DUP1", + "source": 34 + }, + { + "begin": 14073, + "end": 14079, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 14122, + "end": 14125, + "name": "PUSH", + "source": 34, + "value": "A0" + }, + { + "begin": 14110, + "end": 14119, + "name": "DUP7", + "source": 34 + }, + { + "begin": 14101, + "end": 14108, + "name": "DUP9", + "source": 34 + }, + { + "begin": 14097, + "end": 14120, + "name": "SUB", + "source": 34 + }, + { + "begin": 14093, + "end": 14126, + "name": "SLT", + "source": 34 + }, + { + "begin": 14090, + "end": 14210, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 14090, + "end": 14210, + "name": "PUSH [tag]", + "source": 34, + "value": "1293" + }, + { + "begin": 14090, + "end": 14210, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 14129, + "end": 14208, + "name": "PUSH [tag]", + "source": 34, + "value": "1294" + }, + { + "begin": 14129, + "end": 14208, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 14129, + "end": 14208, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 14129, + "end": 14208, + "name": "tag", + "source": 34, + "value": "1294" + }, + { + "begin": 14129, + "end": 14208, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14090, + "end": 14210, + "name": "tag", + "source": 34, + "value": "1293" + }, + { + "begin": 14090, + "end": 14210, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14249, + "end": 14250, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 14274, + "end": 14327, + "name": "PUSH [tag]", + "source": 34, + "value": "1295" + }, + { + "begin": 14319, + "end": 14326, + "name": "DUP9", + "source": 34 + }, + { + "begin": 14310, + "end": 14316, + "name": "DUP3", + "source": 34 + }, + { + "begin": 14299, + "end": 14308, + "name": "DUP10", + "source": 34 + }, + { + "begin": 14295, + "end": 14317, + "name": "ADD", + "source": 34 + }, + { + "begin": 14274, + "end": 14327, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 14274, + "end": 14327, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 14274, + "end": 14327, + "name": "tag", + "source": 34, + "value": "1295" + }, + { + "begin": 14274, + "end": 14327, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14264, + "end": 14327, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 14264, + "end": 14327, + "name": "POP", + "source": 34 + }, + { + "begin": 14220, + "end": 14337, + "name": "POP", + "source": 34 + }, + { + "begin": 14376, + "end": 14378, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 14402, + "end": 14455, + "name": "PUSH [tag]", + "source": 34, + "value": "1296" + }, + { + "begin": 14447, + "end": 14454, + "name": "DUP9", + "source": 34 + }, + { + "begin": 14438, + "end": 14444, + "name": "DUP3", + "source": 34 + }, + { + "begin": 14427, + "end": 14436, + "name": "DUP10", + "source": 34 + }, + { + "begin": 14423, + "end": 14445, + "name": "ADD", + "source": 34 + }, + { + "begin": 14402, + "end": 14455, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 14402, + "end": 14455, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 14402, + "end": 14455, + "name": "tag", + "source": 34, + "value": "1296" + }, + { + "begin": 14402, + "end": 14455, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14392, + "end": 14455, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 14392, + "end": 14455, + "name": "POP", + "source": 34 + }, + { + "begin": 14347, + "end": 14465, + "name": "POP", + "source": 34 + }, + { + "begin": 14532, + "end": 14534, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 14521, + "end": 14530, + "name": "DUP7", + "source": 34 + }, + { + "begin": 14517, + "end": 14535, + "name": "ADD", + "source": 34 + }, + { + "begin": 14504, + "end": 14536, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 14563, + "end": 14581, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 14555, + "end": 14561, + "name": "DUP2", + "source": 34 + }, + { + "begin": 14552, + "end": 14582, + "name": "GT", + "source": 34 + }, + { + "begin": 14549, + "end": 14666, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 14549, + "end": 14666, + "name": "PUSH [tag]", + "source": 34, + "value": "1297" + }, + { + "begin": 14549, + "end": 14666, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 14585, + "end": 14664, + "name": "PUSH [tag]", + "source": 34, + "value": "1298" + }, + { + "begin": 14585, + "end": 14664, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 14585, + "end": 14664, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 14585, + "end": 14664, + "name": "tag", + "source": 34, + "value": "1298" + }, + { + "begin": 14585, + "end": 14664, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14549, + "end": 14666, + "name": "tag", + "source": 34, + "value": "1297" + }, + { + "begin": 14549, + "end": 14666, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14690, + "end": 14765, + "name": "PUSH [tag]", + "source": 34, + "value": "1299" + }, + { + "begin": 14757, + "end": 14764, + "name": "DUP9", + "source": 34 + }, + { + "begin": 14748, + "end": 14754, + "name": "DUP3", + "source": 34 + }, + { + "begin": 14737, + "end": 14746, + "name": "DUP10", + "source": 34 + }, + { + "begin": 14733, + "end": 14755, + "name": "ADD", + "source": 34 + }, + { + "begin": 14690, + "end": 14765, + "name": "PUSH [tag]", + "source": 34, + "value": "1034" + }, + { + "begin": 14690, + "end": 14765, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 14690, + "end": 14765, + "name": "tag", + "source": 34, + "value": "1299" + }, + { + "begin": 14690, + "end": 14765, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14680, + "end": 14765, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 14680, + "end": 14765, + "name": "POP", + "source": 34 + }, + { + "begin": 14475, + "end": 14775, + "name": "POP", + "source": 34 + }, + { + "begin": 14814, + "end": 14816, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 14840, + "end": 14893, + "name": "PUSH [tag]", + "source": 34, + "value": "1300" + }, + { + "begin": 14885, + "end": 14892, + "name": "DUP9", + "source": 34 + }, + { + "begin": 14876, + "end": 14882, + "name": "DUP3", + "source": 34 + }, + { + "begin": 14865, + "end": 14874, + "name": "DUP10", + "source": 34 + }, + { + "begin": 14861, + "end": 14883, + "name": "ADD", + "source": 34 + }, + { + "begin": 14840, + "end": 14893, + "name": "PUSH [tag]", + "source": 34, + "value": "1040" + }, + { + "begin": 14840, + "end": 14893, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 14840, + "end": 14893, + "name": "tag", + "source": 34, + "value": "1300" + }, + { + "begin": 14840, + "end": 14893, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14830, + "end": 14893, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 14830, + "end": 14893, + "name": "POP", + "source": 34 + }, + { + "begin": 14785, + "end": 14903, + "name": "POP", + "source": 34 + }, + { + "begin": 14942, + "end": 14945, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 14969, + "end": 15022, + "name": "PUSH [tag]", + "source": 34, + "value": "1301" + }, + { + "begin": 15014, + "end": 15021, + "name": "DUP9", + "source": 34 + }, + { + "begin": 15005, + "end": 15011, + "name": "DUP3", + "source": 34 + }, + { + "begin": 14994, + "end": 15003, + "name": "DUP10", + "source": 34 + }, + { + "begin": 14990, + "end": 15012, + "name": "ADD", + "source": 34 + }, + { + "begin": 14969, + "end": 15022, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 14969, + "end": 15022, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 14969, + "end": 15022, + "name": "tag", + "source": 34, + "value": "1301" + }, + { + "begin": 14969, + "end": 15022, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 14959, + "end": 15022, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 14959, + "end": 15022, + "name": "POP", + "source": 34 + }, + { + "begin": 14913, + "end": 15032, + "name": "POP", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "POP", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "name": "POP", + "source": 34 + }, + { + "begin": 13924, + "end": 15039, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15045, + "end": 15692, + "name": "tag", + "source": 34, + "value": "65" + }, + { + "begin": 15045, + "end": 15692, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15136, + "end": 15142, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 15144, + "end": 15150, + "name": "DUP1", + "source": 34 + }, + { + "begin": 15152, + "end": 15158, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 15201, + "end": 15203, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 15189, + "end": 15198, + "name": "DUP5", + "source": 34 + }, + { + "begin": 15180, + "end": 15187, + "name": "DUP7", + "source": 34 + }, + { + "begin": 15176, + "end": 15199, + "name": "SUB", + "source": 34 + }, + { + "begin": 15172, + "end": 15204, + "name": "SLT", + "source": 34 + }, + { + "begin": 15169, + "end": 15288, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 15169, + "end": 15288, + "name": "PUSH [tag]", + "source": 34, + "value": "1303" + }, + { + "begin": 15169, + "end": 15288, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 15207, + "end": 15286, + "name": "PUSH [tag]", + "source": 34, + "value": "1304" + }, + { + "begin": 15207, + "end": 15286, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 15207, + "end": 15286, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15207, + "end": 15286, + "name": "tag", + "source": 34, + "value": "1304" + }, + { + "begin": 15207, + "end": 15286, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15169, + "end": 15288, + "name": "tag", + "source": 34, + "value": "1303" + }, + { + "begin": 15169, + "end": 15288, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15327, + "end": 15328, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 15352, + "end": 15419, + "name": "PUSH [tag]", + "source": 34, + "value": "1305" + }, + { + "begin": 15411, + "end": 15418, + "name": "DUP7", + "source": 34 + }, + { + "begin": 15402, + "end": 15408, + "name": "DUP3", + "source": 34 + }, + { + "begin": 15391, + "end": 15400, + "name": "DUP8", + "source": 34 + }, + { + "begin": 15387, + "end": 15409, + "name": "ADD", + "source": 34 + }, + { + "begin": 15352, + "end": 15419, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 15352, + "end": 15419, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15352, + "end": 15419, + "name": "tag", + "source": 34, + "value": "1305" + }, + { + "begin": 15352, + "end": 15419, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15342, + "end": 15419, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 15342, + "end": 15419, + "name": "POP", + "source": 34 + }, + { + "begin": 15298, + "end": 15429, + "name": "POP", + "source": 34 + }, + { + "begin": 15468, + "end": 15470, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 15494, + "end": 15547, + "name": "PUSH [tag]", + "source": 34, + "value": "1306" + }, + { + "begin": 15539, + "end": 15546, + "name": "DUP7", + "source": 34 + }, + { + "begin": 15530, + "end": 15536, + "name": "DUP3", + "source": 34 + }, + { + "begin": 15519, + "end": 15528, + "name": "DUP8", + "source": 34 + }, + { + "begin": 15515, + "end": 15537, + "name": "ADD", + "source": 34 + }, + { + "begin": 15494, + "end": 15547, + "name": "PUSH [tag]", + "source": 34, + "value": "1040" + }, + { + "begin": 15494, + "end": 15547, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15494, + "end": 15547, + "name": "tag", + "source": 34, + "value": "1306" + }, + { + "begin": 15494, + "end": 15547, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15484, + "end": 15547, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 15484, + "end": 15547, + "name": "POP", + "source": 34 + }, + { + "begin": 15439, + "end": 15557, + "name": "POP", + "source": 34 + }, + { + "begin": 15596, + "end": 15598, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 15622, + "end": 15675, + "name": "PUSH [tag]", + "source": 34, + "value": "1307" + }, + { + "begin": 15667, + "end": 15674, + "name": "DUP7", + "source": 34 + }, + { + "begin": 15658, + "end": 15664, + "name": "DUP3", + "source": 34 + }, + { + "begin": 15647, + "end": 15656, + "name": "DUP8", + "source": 34 + }, + { + "begin": 15643, + "end": 15665, + "name": "ADD", + "source": 34 + }, + { + "begin": 15622, + "end": 15675, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 15622, + "end": 15675, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15622, + "end": 15675, + "name": "tag", + "source": 34, + "value": "1307" + }, + { + "begin": 15622, + "end": 15675, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15612, + "end": 15675, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 15612, + "end": 15675, + "name": "POP", + "source": 34 + }, + { + "begin": 15567, + "end": 15685, + "name": "POP", + "source": 34 + }, + { + "begin": 15045, + "end": 15692, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 15045, + "end": 15692, + "name": "POP", + "source": 34 + }, + { + "begin": 15045, + "end": 15692, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 15045, + "end": 15692, + "name": "POP", + "source": 34 + }, + { + "begin": 15045, + "end": 15692, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 15045, + "end": 15692, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15698, + "end": 15789, + "name": "tag", + "source": 34, + "value": "1048" + }, + { + "begin": 15698, + "end": 15789, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15734, + "end": 15741, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 15774, + "end": 15782, + "name": "PUSH", + "source": 34, + "value": "FFFFFF" + }, + { + "begin": 15767, + "end": 15772, + "name": "DUP3", + "source": 34 + }, + { + "begin": 15763, + "end": 15783, + "name": "AND", + "source": 34 + }, + { + "begin": 15752, + "end": 15783, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 15752, + "end": 15783, + "name": "POP", + "source": 34 + }, + { + "begin": 15698, + "end": 15789, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 15698, + "end": 15789, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 15698, + "end": 15789, + "name": "POP", + "source": 34 + }, + { + "begin": 15698, + "end": 15789, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15795, + "end": 15915, + "name": "tag", + "source": 34, + "value": "1049" + }, + { + "begin": 15795, + "end": 15915, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15867, + "end": 15890, + "name": "PUSH [tag]", + "source": 34, + "value": "1310" + }, + { + "begin": 15884, + "end": 15889, + "name": "DUP2", + "source": 34 + }, + { + "begin": 15867, + "end": 15890, + "name": "PUSH [tag]", + "source": 34, + "value": "1048" + }, + { + "begin": 15867, + "end": 15890, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15867, + "end": 15890, + "name": "tag", + "source": 34, + "value": "1310" + }, + { + "begin": 15867, + "end": 15890, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15860, + "end": 15865, + "name": "DUP2", + "source": 34 + }, + { + "begin": 15857, + "end": 15891, + "name": "EQ", + "source": 34 + }, + { + "begin": 15847, + "end": 15909, + "name": "PUSH [tag]", + "source": 34, + "value": "1311" + }, + { + "begin": 15847, + "end": 15909, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 15905, + "end": 15906, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 15902, + "end": 15903, + "name": "DUP1", + "source": 34 + }, + { + "begin": 15895, + "end": 15907, + "name": "REVERT", + "source": 34 + }, + { + "begin": 15847, + "end": 15909, + "name": "tag", + "source": 34, + "value": "1311" + }, + { + "begin": 15847, + "end": 15909, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15795, + "end": 15915, + "name": "POP", + "source": 34 + }, + { + "begin": 15795, + "end": 15915, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 15921, + "end": 16058, + "name": "tag", + "source": 34, + "value": "1050" + }, + { + "begin": 15921, + "end": 16058, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15966, + "end": 15971, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 16004, + "end": 16010, + "name": "DUP2", + "source": 34 + }, + { + "begin": 15991, + "end": 16011, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 15982, + "end": 16011, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 15982, + "end": 16011, + "name": "POP", + "source": 34 + }, + { + "begin": 16020, + "end": 16052, + "name": "PUSH [tag]", + "source": 34, + "value": "1313" + }, + { + "begin": 16046, + "end": 16051, + "name": "DUP2", + "source": 34 + }, + { + "begin": 16020, + "end": 16052, + "name": "PUSH [tag]", + "source": 34, + "value": "1049" + }, + { + "begin": 16020, + "end": 16052, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16020, + "end": 16052, + "name": "tag", + "source": 34, + "value": "1313" + }, + { + "begin": 16020, + "end": 16052, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 15921, + "end": 16058, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 15921, + "end": 16058, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 15921, + "end": 16058, + "name": "POP", + "source": 34 + }, + { + "begin": 15921, + "end": 16058, + "name": "POP", + "source": 34 + }, + { + "begin": 15921, + "end": 16058, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16064, + "end": 16153, + "name": "tag", + "source": 34, + "value": "1051" + }, + { + "begin": 16064, + "end": 16153, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16100, + "end": 16107, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 16140, + "end": 16146, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 16133, + "end": 16138, + "name": "DUP3", + "source": 34 + }, + { + "begin": 16129, + "end": 16147, + "name": "AND", + "source": 34 + }, + { + "begin": 16118, + "end": 16147, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 16118, + "end": 16147, + "name": "POP", + "source": 34 + }, + { + "begin": 16064, + "end": 16153, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 16064, + "end": 16153, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 16064, + "end": 16153, + "name": "POP", + "source": 34 + }, + { + "begin": 16064, + "end": 16153, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16159, + "end": 16279, + "name": "tag", + "source": 34, + "value": "1052" + }, + { + "begin": 16159, + "end": 16279, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16231, + "end": 16254, + "name": "PUSH [tag]", + "source": 34, + "value": "1316" + }, + { + "begin": 16248, + "end": 16253, + "name": "DUP2", + "source": 34 + }, + { + "begin": 16231, + "end": 16254, + "name": "PUSH [tag]", + "source": 34, + "value": "1051" + }, + { + "begin": 16231, + "end": 16254, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16231, + "end": 16254, + "name": "tag", + "source": 34, + "value": "1316" + }, + { + "begin": 16231, + "end": 16254, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16224, + "end": 16229, + "name": "DUP2", + "source": 34 + }, + { + "begin": 16221, + "end": 16255, + "name": "EQ", + "source": 34 + }, + { + "begin": 16211, + "end": 16273, + "name": "PUSH [tag]", + "source": 34, + "value": "1317" + }, + { + "begin": 16211, + "end": 16273, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 16269, + "end": 16270, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 16266, + "end": 16267, + "name": "DUP1", + "source": 34 + }, + { + "begin": 16259, + "end": 16271, + "name": "REVERT", + "source": 34 + }, + { + "begin": 16211, + "end": 16273, + "name": "tag", + "source": 34, + "value": "1317" + }, + { + "begin": 16211, + "end": 16273, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16159, + "end": 16279, + "name": "POP", + "source": 34 + }, + { + "begin": 16159, + "end": 16279, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16285, + "end": 16422, + "name": "tag", + "source": 34, + "value": "1053" + }, + { + "begin": 16285, + "end": 16422, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16330, + "end": 16335, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 16368, + "end": 16374, + "name": "DUP2", + "source": 34 + }, + { + "begin": 16355, + "end": 16375, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 16346, + "end": 16375, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 16346, + "end": 16375, + "name": "POP", + "source": 34 + }, + { + "begin": 16384, + "end": 16416, + "name": "PUSH [tag]", + "source": 34, + "value": "1319" + }, + { + "begin": 16410, + "end": 16415, + "name": "DUP2", + "source": 34 + }, + { + "begin": 16384, + "end": 16416, + "name": "PUSH [tag]", + "source": 34, + "value": "1052" + }, + { + "begin": 16384, + "end": 16416, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16384, + "end": 16416, + "name": "tag", + "source": 34, + "value": "1319" + }, + { + "begin": 16384, + "end": 16416, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16285, + "end": 16422, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 16285, + "end": 16422, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 16285, + "end": 16422, + "name": "POP", + "source": 34 + }, + { + "begin": 16285, + "end": 16422, + "name": "POP", + "source": 34 + }, + { + "begin": 16285, + "end": 16422, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "tag", + "source": 34, + "value": "70" + }, + { + "begin": 16428, + "end": 17245, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16540, + "end": 16546, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 16548, + "end": 16554, + "name": "DUP1", + "source": 34 + }, + { + "begin": 16556, + "end": 16562, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 16564, + "end": 16570, + "name": "DUP1", + "source": 34 + }, + { + "begin": 16613, + "end": 16616, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 16601, + "end": 16610, + "name": "DUP6", + "source": 34 + }, + { + "begin": 16592, + "end": 16599, + "name": "DUP8", + "source": 34 + }, + { + "begin": 16588, + "end": 16611, + "name": "SUB", + "source": 34 + }, + { + "begin": 16584, + "end": 16617, + "name": "SLT", + "source": 34 + }, + { + "begin": 16581, + "end": 16701, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 16581, + "end": 16701, + "name": "PUSH [tag]", + "source": 34, + "value": "1321" + }, + { + "begin": 16581, + "end": 16701, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 16620, + "end": 16699, + "name": "PUSH [tag]", + "source": 34, + "value": "1322" + }, + { + "begin": 16620, + "end": 16699, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 16620, + "end": 16699, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16620, + "end": 16699, + "name": "tag", + "source": 34, + "value": "1322" + }, + { + "begin": 16620, + "end": 16699, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16581, + "end": 16701, + "name": "tag", + "source": 34, + "value": "1321" + }, + { + "begin": 16581, + "end": 16701, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16740, + "end": 16741, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 16765, + "end": 16832, + "name": "PUSH [tag]", + "source": 34, + "value": "1323" + }, + { + "begin": 16824, + "end": 16831, + "name": "DUP8", + "source": 34 + }, + { + "begin": 16815, + "end": 16821, + "name": "DUP3", + "source": 34 + }, + { + "begin": 16804, + "end": 16813, + "name": "DUP9", + "source": 34 + }, + { + "begin": 16800, + "end": 16822, + "name": "ADD", + "source": 34 + }, + { + "begin": 16765, + "end": 16832, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 16765, + "end": 16832, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16765, + "end": 16832, + "name": "tag", + "source": 34, + "value": "1323" + }, + { + "begin": 16765, + "end": 16832, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16755, + "end": 16832, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 16755, + "end": 16832, + "name": "POP", + "source": 34 + }, + { + "begin": 16711, + "end": 16842, + "name": "POP", + "source": 34 + }, + { + "begin": 16881, + "end": 16883, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 16907, + "end": 16974, + "name": "PUSH [tag]", + "source": 34, + "value": "1324" + }, + { + "begin": 16966, + "end": 16973, + "name": "DUP8", + "source": 34 + }, + { + "begin": 16957, + "end": 16963, + "name": "DUP3", + "source": 34 + }, + { + "begin": 16946, + "end": 16955, + "name": "DUP9", + "source": 34 + }, + { + "begin": 16942, + "end": 16964, + "name": "ADD", + "source": 34 + }, + { + "begin": 16907, + "end": 16974, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 16907, + "end": 16974, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 16907, + "end": 16974, + "name": "tag", + "source": 34, + "value": "1324" + }, + { + "begin": 16907, + "end": 16974, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 16897, + "end": 16974, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 16897, + "end": 16974, + "name": "POP", + "source": 34 + }, + { + "begin": 16852, + "end": 16984, + "name": "POP", + "source": 34 + }, + { + "begin": 17023, + "end": 17025, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 17049, + "end": 17101, + "name": "PUSH [tag]", + "source": 34, + "value": "1325" + }, + { + "begin": 17093, + "end": 17100, + "name": "DUP8", + "source": 34 + }, + { + "begin": 17084, + "end": 17090, + "name": "DUP3", + "source": 34 + }, + { + "begin": 17073, + "end": 17082, + "name": "DUP9", + "source": 34 + }, + { + "begin": 17069, + "end": 17091, + "name": "ADD", + "source": 34 + }, + { + "begin": 17049, + "end": 17101, + "name": "PUSH [tag]", + "source": 34, + "value": "1050" + }, + { + "begin": 17049, + "end": 17101, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17049, + "end": 17101, + "name": "tag", + "source": 34, + "value": "1325" + }, + { + "begin": 17049, + "end": 17101, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17039, + "end": 17101, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 17039, + "end": 17101, + "name": "POP", + "source": 34 + }, + { + "begin": 16994, + "end": 17111, + "name": "POP", + "source": 34 + }, + { + "begin": 17150, + "end": 17152, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 17176, + "end": 17228, + "name": "PUSH [tag]", + "source": 34, + "value": "1326" + }, + { + "begin": 17220, + "end": 17227, + "name": "DUP8", + "source": 34 + }, + { + "begin": 17211, + "end": 17217, + "name": "DUP3", + "source": 34 + }, + { + "begin": 17200, + "end": 17209, + "name": "DUP9", + "source": 34 + }, + { + "begin": 17196, + "end": 17218, + "name": "ADD", + "source": 34 + }, + { + "begin": 17176, + "end": 17228, + "name": "PUSH [tag]", + "source": 34, + "value": "1053" + }, + { + "begin": 17176, + "end": 17228, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17176, + "end": 17228, + "name": "tag", + "source": 34, + "value": "1326" + }, + { + "begin": 17176, + "end": 17228, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17166, + "end": 17228, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 17166, + "end": 17228, + "name": "POP", + "source": 34 + }, + { + "begin": 17121, + "end": 17238, + "name": "POP", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "POP", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "name": "POP", + "source": 34 + }, + { + "begin": 16428, + "end": 17245, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17251, + "end": 17311, + "name": "tag", + "source": 34, + "value": "1054" + }, + { + "begin": 17251, + "end": 17311, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17279, + "end": 17282, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 17300, + "end": 17305, + "name": "DUP2", + "source": 34 + }, + { + "begin": 17293, + "end": 17305, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17293, + "end": 17305, + "name": "POP", + "source": 34 + }, + { + "begin": 17251, + "end": 17311, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 17251, + "end": 17311, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17251, + "end": 17311, + "name": "POP", + "source": 34 + }, + { + "begin": 17251, + "end": 17311, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17317, + "end": 17459, + "name": "tag", + "source": 34, + "value": "1055" + }, + { + "begin": 17317, + "end": 17459, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17367, + "end": 17376, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 17400, + "end": 17453, + "name": "PUSH [tag]", + "source": 34, + "value": "1329" + }, + { + "begin": 17418, + "end": 17452, + "name": "PUSH [tag]", + "source": 34, + "value": "1330" + }, + { + "begin": 17427, + "end": 17451, + "name": "PUSH [tag]", + "source": 34, + "value": "1331" + }, + { + "begin": 17445, + "end": 17450, + "name": "DUP5", + "source": 34 + }, + { + "begin": 17427, + "end": 17451, + "name": "PUSH [tag]", + "source": 34, + "value": "1027" + }, + { + "begin": 17427, + "end": 17451, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17427, + "end": 17451, + "name": "tag", + "source": 34, + "value": "1331" + }, + { + "begin": 17427, + "end": 17451, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17418, + "end": 17452, + "name": "PUSH [tag]", + "source": 34, + "value": "1054" + }, + { + "begin": 17418, + "end": 17452, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17418, + "end": 17452, + "name": "tag", + "source": 34, + "value": "1330" + }, + { + "begin": 17418, + "end": 17452, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17400, + "end": 17453, + "name": "PUSH [tag]", + "source": 34, + "value": "1027" + }, + { + "begin": 17400, + "end": 17453, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17400, + "end": 17453, + "name": "tag", + "source": 34, + "value": "1329" + }, + { + "begin": 17400, + "end": 17453, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17387, + "end": 17453, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17387, + "end": 17453, + "name": "POP", + "source": 34 + }, + { + "begin": 17317, + "end": 17459, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 17317, + "end": 17459, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17317, + "end": 17459, + "name": "POP", + "source": 34 + }, + { + "begin": 17317, + "end": 17459, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17465, + "end": 17591, + "name": "tag", + "source": 34, + "value": "1056" + }, + { + "begin": 17465, + "end": 17591, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17515, + "end": 17524, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 17548, + "end": 17585, + "name": "PUSH [tag]", + "source": 34, + "value": "1333" + }, + { + "begin": 17579, + "end": 17584, + "name": "DUP3", + "source": 34 + }, + { + "begin": 17548, + "end": 17585, + "name": "PUSH [tag]", + "source": 34, + "value": "1055" + }, + { + "begin": 17548, + "end": 17585, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17548, + "end": 17585, + "name": "tag", + "source": 34, + "value": "1333" + }, + { + "begin": 17548, + "end": 17585, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17535, + "end": 17585, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17535, + "end": 17585, + "name": "POP", + "source": 34 + }, + { + "begin": 17465, + "end": 17591, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 17465, + "end": 17591, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17465, + "end": 17591, + "name": "POP", + "source": 34 + }, + { + "begin": 17465, + "end": 17591, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17597, + "end": 17739, + "name": "tag", + "source": 34, + "value": "1057" + }, + { + "begin": 17597, + "end": 17739, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17663, + "end": 17672, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 17696, + "end": 17733, + "name": "PUSH [tag]", + "source": 34, + "value": "1335" + }, + { + "begin": 17727, + "end": 17732, + "name": "DUP3", + "source": 34 + }, + { + "begin": 17696, + "end": 17733, + "name": "PUSH [tag]", + "source": 34, + "value": "1056" + }, + { + "begin": 17696, + "end": 17733, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17696, + "end": 17733, + "name": "tag", + "source": 34, + "value": "1335" + }, + { + "begin": 17696, + "end": 17733, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17683, + "end": 17733, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17683, + "end": 17733, + "name": "POP", + "source": 34 + }, + { + "begin": 17597, + "end": 17739, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 17597, + "end": 17739, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 17597, + "end": 17739, + "name": "POP", + "source": 34 + }, + { + "begin": 17597, + "end": 17739, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17745, + "end": 17908, + "name": "tag", + "source": 34, + "value": "1058" + }, + { + "begin": 17745, + "end": 17908, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17848, + "end": 17901, + "name": "PUSH [tag]", + "source": 34, + "value": "1337" + }, + { + "begin": 17895, + "end": 17900, + "name": "DUP2", + "source": 34 + }, + { + "begin": 17848, + "end": 17901, + "name": "PUSH [tag]", + "source": 34, + "value": "1057" + }, + { + "begin": 17848, + "end": 17901, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17848, + "end": 17901, + "name": "tag", + "source": 34, + "value": "1337" + }, + { + "begin": 17848, + "end": 17901, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17843, + "end": 17846, + "name": "DUP3", + "source": 34 + }, + { + "begin": 17836, + "end": 17902, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 17745, + "end": 17908, + "name": "POP", + "source": 34 + }, + { + "begin": 17745, + "end": 17908, + "name": "POP", + "source": 34 + }, + { + "begin": 17745, + "end": 17908, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 17914, + "end": 18168, + "name": "tag", + "source": 34, + "value": "73" + }, + { + "begin": 17914, + "end": 18168, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18023, + "end": 18027, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18061, + "end": 18063, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 18050, + "end": 18059, + "name": "DUP3", + "source": 34 + }, + { + "begin": 18046, + "end": 18064, + "name": "ADD", + "source": 34 + }, + { + "begin": 18038, + "end": 18064, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 18038, + "end": 18064, + "name": "POP", + "source": 34 + }, + { + "begin": 18074, + "end": 18161, + "name": "PUSH [tag]", + "source": 34, + "value": "1339" + }, + { + "begin": 18158, + "end": 18159, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18147, + "end": 18156, + "name": "DUP4", + "source": 34 + }, + { + "begin": 18143, + "end": 18160, + "name": "ADD", + "source": 34 + }, + { + "begin": 18134, + "end": 18140, + "name": "DUP5", + "source": 34 + }, + { + "begin": 18074, + "end": 18161, + "name": "PUSH [tag]", + "source": 34, + "value": "1058" + }, + { + "begin": 18074, + "end": 18161, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18074, + "end": 18161, + "name": "tag", + "source": 34, + "value": "1339" + }, + { + "begin": 18074, + "end": 18161, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 17914, + "end": 18168, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 17914, + "end": 18168, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 17914, + "end": 18168, + "name": "POP", + "source": 34 + }, + { + "begin": 17914, + "end": 18168, + "name": "POP", + "source": 34 + }, + { + "begin": 17914, + "end": 18168, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18174, + "end": 18317, + "name": "tag", + "source": 34, + "value": "1059" + }, + { + "begin": 18174, + "end": 18317, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18241, + "end": 18250, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18274, + "end": 18311, + "name": "PUSH [tag]", + "source": 34, + "value": "1341" + }, + { + "begin": 18305, + "end": 18310, + "name": "DUP3", + "source": 34 + }, + { + "begin": 18274, + "end": 18311, + "name": "PUSH [tag]", + "source": 34, + "value": "1056" + }, + { + "begin": 18274, + "end": 18311, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18274, + "end": 18311, + "name": "tag", + "source": 34, + "value": "1341" + }, + { + "begin": 18274, + "end": 18311, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18261, + "end": 18311, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 18261, + "end": 18311, + "name": "POP", + "source": 34 + }, + { + "begin": 18174, + "end": 18317, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 18174, + "end": 18317, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 18174, + "end": 18317, + "name": "POP", + "source": 34 + }, + { + "begin": 18174, + "end": 18317, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18323, + "end": 18488, + "name": "tag", + "source": 34, + "value": "1060" + }, + { + "begin": 18323, + "end": 18488, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18427, + "end": 18481, + "name": "PUSH [tag]", + "source": 34, + "value": "1343" + }, + { + "begin": 18475, + "end": 18480, + "name": "DUP2", + "source": 34 + }, + { + "begin": 18427, + "end": 18481, + "name": "PUSH [tag]", + "source": 34, + "value": "1059" + }, + { + "begin": 18427, + "end": 18481, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18427, + "end": 18481, + "name": "tag", + "source": 34, + "value": "1343" + }, + { + "begin": 18427, + "end": 18481, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18422, + "end": 18425, + "name": "DUP3", + "source": 34 + }, + { + "begin": 18415, + "end": 18482, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 18323, + "end": 18488, + "name": "POP", + "source": 34 + }, + { + "begin": 18323, + "end": 18488, + "name": "POP", + "source": 34 + }, + { + "begin": 18323, + "end": 18488, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18494, + "end": 18750, + "name": "tag", + "source": 34, + "value": "78" + }, + { + "begin": 18494, + "end": 18750, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18604, + "end": 18608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18642, + "end": 18644, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 18631, + "end": 18640, + "name": "DUP3", + "source": 34 + }, + { + "begin": 18627, + "end": 18645, + "name": "ADD", + "source": 34 + }, + { + "begin": 18619, + "end": 18645, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 18619, + "end": 18645, + "name": "POP", + "source": 34 + }, + { + "begin": 18655, + "end": 18743, + "name": "PUSH [tag]", + "source": 34, + "value": "1345" + }, + { + "begin": 18740, + "end": 18741, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18729, + "end": 18738, + "name": "DUP4", + "source": 34 + }, + { + "begin": 18725, + "end": 18742, + "name": "ADD", + "source": 34 + }, + { + "begin": 18716, + "end": 18722, + "name": "DUP5", + "source": 34 + }, + { + "begin": 18655, + "end": 18743, + "name": "PUSH [tag]", + "source": 34, + "value": "1060" + }, + { + "begin": 18655, + "end": 18743, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18655, + "end": 18743, + "name": "tag", + "source": 34, + "value": "1345" + }, + { + "begin": 18655, + "end": 18743, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18494, + "end": 18750, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 18494, + "end": 18750, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 18494, + "end": 18750, + "name": "POP", + "source": 34 + }, + { + "begin": 18494, + "end": 18750, + "name": "POP", + "source": 34 + }, + { + "begin": 18494, + "end": 18750, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "tag", + "source": 34, + "value": "85" + }, + { + "begin": 18756, + "end": 20567, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 18949, + "end": 18955, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18957, + "end": 18963, + "name": "DUP1", + "source": 34 + }, + { + "begin": 18965, + "end": 18971, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18973, + "end": 18979, + "name": "DUP1", + "source": 34 + }, + { + "begin": 18981, + "end": 18987, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 18989, + "end": 18995, + "name": "DUP1", + "source": 34 + }, + { + "begin": 18997, + "end": 19003, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 19005, + "end": 19011, + "name": "DUP1", + "source": 34 + }, + { + "begin": 19054, + "end": 19057, + "name": "PUSH", + "source": 34, + "value": "100" + }, + { + "begin": 19042, + "end": 19051, + "name": "DUP10", + "source": 34 + }, + { + "begin": 19033, + "end": 19040, + "name": "DUP12", + "source": 34 + }, + { + "begin": 19029, + "end": 19052, + "name": "SUB", + "source": 34 + }, + { + "begin": 19025, + "end": 19058, + "name": "SLT", + "source": 34 + }, + { + "begin": 19022, + "end": 19142, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 19022, + "end": 19142, + "name": "PUSH [tag]", + "source": 34, + "value": "1347" + }, + { + "begin": 19022, + "end": 19142, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 19061, + "end": 19140, + "name": "PUSH [tag]", + "source": 34, + "value": "1348" + }, + { + "begin": 19061, + "end": 19140, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 19061, + "end": 19140, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 19061, + "end": 19140, + "name": "tag", + "source": 34, + "value": "1348" + }, + { + "begin": 19061, + "end": 19140, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19022, + "end": 19142, + "name": "tag", + "source": 34, + "value": "1347" + }, + { + "begin": 19022, + "end": 19142, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19181, + "end": 19182, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 19206, + "end": 19273, + "name": "PUSH [tag]", + "source": 34, + "value": "1349" + }, + { + "begin": 19265, + "end": 19272, + "name": "DUP12", + "source": 34 + }, + { + "begin": 19256, + "end": 19262, + "name": "DUP3", + "source": 34 + }, + { + "begin": 19245, + "end": 19254, + "name": "DUP13", + "source": 34 + }, + { + "begin": 19241, + "end": 19263, + "name": "ADD", + "source": 34 + }, + { + "begin": 19206, + "end": 19273, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 19206, + "end": 19273, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 19206, + "end": 19273, + "name": "tag", + "source": 34, + "value": "1349" + }, + { + "begin": 19206, + "end": 19273, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19196, + "end": 19273, + "name": "SWAP9", + "source": 34 + }, + { + "begin": 19196, + "end": 19273, + "name": "POP", + "source": 34 + }, + { + "begin": 19152, + "end": 19283, + "name": "POP", + "source": 34 + }, + { + "begin": 19322, + "end": 19324, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 19348, + "end": 19400, + "name": "PUSH [tag]", + "source": 34, + "value": "1350" + }, + { + "begin": 19392, + "end": 19399, + "name": "DUP12", + "source": 34 + }, + { + "begin": 19383, + "end": 19389, + "name": "DUP3", + "source": 34 + }, + { + "begin": 19372, + "end": 19381, + "name": "DUP13", + "source": 34 + }, + { + "begin": 19368, + "end": 19390, + "name": "ADD", + "source": 34 + }, + { + "begin": 19348, + "end": 19400, + "name": "PUSH [tag]", + "source": 34, + "value": "1053" + }, + { + "begin": 19348, + "end": 19400, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 19348, + "end": 19400, + "name": "tag", + "source": 34, + "value": "1350" + }, + { + "begin": 19348, + "end": 19400, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19338, + "end": 19400, + "name": "SWAP8", + "source": 34 + }, + { + "begin": 19338, + "end": 19400, + "name": "POP", + "source": 34 + }, + { + "begin": 19293, + "end": 19410, + "name": "POP", + "source": 34 + }, + { + "begin": 19449, + "end": 19451, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 19475, + "end": 19528, + "name": "PUSH [tag]", + "source": 34, + "value": "1351" + }, + { + "begin": 19520, + "end": 19527, + "name": "DUP12", + "source": 34 + }, + { + "begin": 19511, + "end": 19517, + "name": "DUP3", + "source": 34 + }, + { + "begin": 19500, + "end": 19509, + "name": "DUP13", + "source": 34 + }, + { + "begin": 19496, + "end": 19518, + "name": "ADD", + "source": 34 + }, + { + "begin": 19475, + "end": 19528, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 19475, + "end": 19528, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 19475, + "end": 19528, + "name": "tag", + "source": 34, + "value": "1351" + }, + { + "begin": 19475, + "end": 19528, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19465, + "end": 19528, + "name": "SWAP7", + "source": 34 + }, + { + "begin": 19465, + "end": 19528, + "name": "POP", + "source": 34 + }, + { + "begin": 19420, + "end": 19538, + "name": "POP", + "source": 34 + }, + { + "begin": 19577, + "end": 19579, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 19603, + "end": 19656, + "name": "PUSH [tag]", + "source": 34, + "value": "1352" + }, + { + "begin": 19648, + "end": 19655, + "name": "DUP12", + "source": 34 + }, + { + "begin": 19639, + "end": 19645, + "name": "DUP3", + "source": 34 + }, + { + "begin": 19628, + "end": 19637, + "name": "DUP13", + "source": 34 + }, + { + "begin": 19624, + "end": 19646, + "name": "ADD", + "source": 34 + }, + { + "begin": 19603, + "end": 19656, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 19603, + "end": 19656, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 19603, + "end": 19656, + "name": "tag", + "source": 34, + "value": "1352" + }, + { + "begin": 19603, + "end": 19656, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19593, + "end": 19656, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 19593, + "end": 19656, + "name": "POP", + "source": 34 + }, + { + "begin": 19548, + "end": 19666, + "name": "POP", + "source": 34 + }, + { + "begin": 19733, + "end": 19736, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 19722, + "end": 19731, + "name": "DUP10", + "source": 34 + }, + { + "begin": 19718, + "end": 19737, + "name": "ADD", + "source": 34 + }, + { + "begin": 19705, + "end": 19738, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 19765, + "end": 19783, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 19757, + "end": 19763, + "name": "DUP2", + "source": 34 + }, + { + "begin": 19754, + "end": 19784, + "name": "GT", + "source": 34 + }, + { + "begin": 19751, + "end": 19868, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 19751, + "end": 19868, + "name": "PUSH [tag]", + "source": 34, + "value": "1353" + }, + { + "begin": 19751, + "end": 19868, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 19787, + "end": 19866, + "name": "PUSH [tag]", + "source": 34, + "value": "1354" + }, + { + "begin": 19787, + "end": 19866, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 19787, + "end": 19866, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 19787, + "end": 19866, + "name": "tag", + "source": 34, + "value": "1354" + }, + { + "begin": 19787, + "end": 19866, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19751, + "end": 19868, + "name": "tag", + "source": 34, + "value": "1353" + }, + { + "begin": 19751, + "end": 19868, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19892, + "end": 19970, + "name": "PUSH [tag]", + "source": 34, + "value": "1355" + }, + { + "begin": 19962, + "end": 19969, + "name": "DUP12", + "source": 34 + }, + { + "begin": 19953, + "end": 19959, + "name": "DUP3", + "source": 34 + }, + { + "begin": 19942, + "end": 19951, + "name": "DUP13", + "source": 34 + }, + { + "begin": 19938, + "end": 19960, + "name": "ADD", + "source": 34 + }, + { + "begin": 19892, + "end": 19970, + "name": "PUSH [tag]", + "source": 34, + "value": "1020" + }, + { + "begin": 19892, + "end": 19970, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 19892, + "end": 19970, + "name": "tag", + "source": 34, + "value": "1355" + }, + { + "begin": 19892, + "end": 19970, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 19882, + "end": 19970, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 19882, + "end": 19970, + "name": "POP", + "source": 34 + }, + { + "begin": 19676, + "end": 19980, + "name": "POP", + "source": 34 + }, + { + "begin": 20047, + "end": 20050, + "name": "PUSH", + "source": 34, + "value": "A0" + }, + { + "begin": 20036, + "end": 20045, + "name": "DUP10", + "source": 34 + }, + { + "begin": 20032, + "end": 20051, + "name": "ADD", + "source": 34 + }, + { + "begin": 20019, + "end": 20052, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 20079, + "end": 20097, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 20071, + "end": 20077, + "name": "DUP2", + "source": 34 + }, + { + "begin": 20068, + "end": 20098, + "name": "GT", + "source": 34 + }, + { + "begin": 20065, + "end": 20182, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 20065, + "end": 20182, + "name": "PUSH [tag]", + "source": 34, + "value": "1356" + }, + { + "begin": 20065, + "end": 20182, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 20101, + "end": 20180, + "name": "PUSH [tag]", + "source": 34, + "value": "1357" + }, + { + "begin": 20101, + "end": 20180, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 20101, + "end": 20180, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20101, + "end": 20180, + "name": "tag", + "source": 34, + "value": "1357" + }, + { + "begin": 20101, + "end": 20180, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20065, + "end": 20182, + "name": "tag", + "source": 34, + "value": "1356" + }, + { + "begin": 20065, + "end": 20182, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20206, + "end": 20284, + "name": "PUSH [tag]", + "source": 34, + "value": "1358" + }, + { + "begin": 20276, + "end": 20283, + "name": "DUP12", + "source": 34 + }, + { + "begin": 20267, + "end": 20273, + "name": "DUP3", + "source": 34 + }, + { + "begin": 20256, + "end": 20265, + "name": "DUP13", + "source": 34 + }, + { + "begin": 20252, + "end": 20274, + "name": "ADD", + "source": 34 + }, + { + "begin": 20206, + "end": 20284, + "name": "PUSH [tag]", + "source": 34, + "value": "1020" + }, + { + "begin": 20206, + "end": 20284, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20206, + "end": 20284, + "name": "tag", + "source": 34, + "value": "1358" + }, + { + "begin": 20206, + "end": 20284, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20196, + "end": 20284, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 20196, + "end": 20284, + "name": "POP", + "source": 34 + }, + { + "begin": 19990, + "end": 20294, + "name": "POP", + "source": 34 + }, + { + "begin": 20333, + "end": 20336, + "name": "PUSH", + "source": 34, + "value": "C0" + }, + { + "begin": 20360, + "end": 20421, + "name": "PUSH [tag]", + "source": 34, + "value": "1359" + }, + { + "begin": 20413, + "end": 20420, + "name": "DUP12", + "source": 34 + }, + { + "begin": 20404, + "end": 20410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 20393, + "end": 20402, + "name": "DUP13", + "source": 34 + }, + { + "begin": 20389, + "end": 20411, + "name": "ADD", + "source": 34 + }, + { + "begin": 20360, + "end": 20421, + "name": "PUSH [tag]", + "source": 34, + "value": "1037" + }, + { + "begin": 20360, + "end": 20421, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20360, + "end": 20421, + "name": "tag", + "source": 34, + "value": "1359" + }, + { + "begin": 20360, + "end": 20421, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20350, + "end": 20421, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 20350, + "end": 20421, + "name": "POP", + "source": 34 + }, + { + "begin": 20304, + "end": 20431, + "name": "POP", + "source": 34 + }, + { + "begin": 20470, + "end": 20473, + "name": "PUSH", + "source": 34, + "value": "E0" + }, + { + "begin": 20497, + "end": 20550, + "name": "PUSH [tag]", + "source": 34, + "value": "1360" + }, + { + "begin": 20542, + "end": 20549, + "name": "DUP12", + "source": 34 + }, + { + "begin": 20533, + "end": 20539, + "name": "DUP3", + "source": 34 + }, + { + "begin": 20522, + "end": 20531, + "name": "DUP13", + "source": 34 + }, + { + "begin": 20518, + "end": 20540, + "name": "ADD", + "source": 34 + }, + { + "begin": 20497, + "end": 20550, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 20497, + "end": 20550, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20497, + "end": 20550, + "name": "tag", + "source": 34, + "value": "1360" + }, + { + "begin": 20497, + "end": 20550, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20487, + "end": 20550, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 20487, + "end": 20550, + "name": "POP", + "source": 34 + }, + { + "begin": 20441, + "end": 20560, + "name": "POP", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP9", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "POP", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP9", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "SWAP7", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "name": "POP", + "source": 34 + }, + { + "begin": 18756, + "end": 20567, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20573, + "end": 20905, + "name": "tag", + "source": 34, + "value": "88" + }, + { + "begin": 20573, + "end": 20905, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20694, + "end": 20698, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 20732, + "end": 20734, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 20721, + "end": 20730, + "name": "DUP3", + "source": 34 + }, + { + "begin": 20717, + "end": 20735, + "name": "ADD", + "source": 34 + }, + { + "begin": 20709, + "end": 20735, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 20709, + "end": 20735, + "name": "POP", + "source": 34 + }, + { + "begin": 20745, + "end": 20816, + "name": "PUSH [tag]", + "source": 34, + "value": "1362" + }, + { + "begin": 20813, + "end": 20814, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 20802, + "end": 20811, + "name": "DUP4", + "source": 34 + }, + { + "begin": 20798, + "end": 20815, + "name": "ADD", + "source": 34 + }, + { + "begin": 20789, + "end": 20795, + "name": "DUP6", + "source": 34 + }, + { + "begin": 20745, + "end": 20816, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 20745, + "end": 20816, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20745, + "end": 20816, + "name": "tag", + "source": 34, + "value": "1362" + }, + { + "begin": 20745, + "end": 20816, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20826, + "end": 20898, + "name": "PUSH [tag]", + "source": 34, + "value": "1363" + }, + { + "begin": 20894, + "end": 20896, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 20883, + "end": 20892, + "name": "DUP4", + "source": 34 + }, + { + "begin": 20879, + "end": 20897, + "name": "ADD", + "source": 34 + }, + { + "begin": 20870, + "end": 20876, + "name": "DUP5", + "source": 34 + }, + { + "begin": 20826, + "end": 20898, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 20826, + "end": 20898, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20826, + "end": 20898, + "name": "tag", + "source": 34, + "value": "1363" + }, + { + "begin": 20826, + "end": 20898, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20573, + "end": 20905, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 20573, + "end": 20905, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 20573, + "end": 20905, + "name": "POP", + "source": 34 + }, + { + "begin": 20573, + "end": 20905, + "name": "POP", + "source": 34 + }, + { + "begin": 20573, + "end": 20905, + "name": "POP", + "source": 34 + }, + { + "begin": 20573, + "end": 20905, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 20911, + "end": 21056, + "name": "tag", + "source": 34, + "value": "1061" + }, + { + "begin": 20911, + "end": 21056, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 20980, + "end": 20989, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 21013, + "end": 21050, + "name": "PUSH [tag]", + "source": 34, + "value": "1365" + }, + { + "begin": 21044, + "end": 21049, + "name": "DUP3", + "source": 34 + }, + { + "begin": 21013, + "end": 21050, + "name": "PUSH [tag]", + "source": 34, + "value": "1056" + }, + { + "begin": 21013, + "end": 21050, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21013, + "end": 21050, + "name": "tag", + "source": 34, + "value": "1365" + }, + { + "begin": 21013, + "end": 21050, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21000, + "end": 21050, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 21000, + "end": 21050, + "name": "POP", + "source": 34 + }, + { + "begin": 20911, + "end": 21056, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 20911, + "end": 21056, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 20911, + "end": 21056, + "name": "POP", + "source": 34 + }, + { + "begin": 20911, + "end": 21056, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21062, + "end": 21231, + "name": "tag", + "source": 34, + "value": "1062" + }, + { + "begin": 21062, + "end": 21231, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21168, + "end": 21224, + "name": "PUSH [tag]", + "source": 34, + "value": "1367" + }, + { + "begin": 21218, + "end": 21223, + "name": "DUP2", + "source": 34 + }, + { + "begin": 21168, + "end": 21224, + "name": "PUSH [tag]", + "source": 34, + "value": "1061" + }, + { + "begin": 21168, + "end": 21224, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21168, + "end": 21224, + "name": "tag", + "source": 34, + "value": "1367" + }, + { + "begin": 21168, + "end": 21224, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21163, + "end": 21166, + "name": "DUP3", + "source": 34 + }, + { + "begin": 21156, + "end": 21225, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 21062, + "end": 21231, + "name": "POP", + "source": 34 + }, + { + "begin": 21062, + "end": 21231, + "name": "POP", + "source": 34 + }, + { + "begin": 21062, + "end": 21231, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21237, + "end": 21497, + "name": "tag", + "source": 34, + "value": "93" + }, + { + "begin": 21237, + "end": 21497, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21349, + "end": 21353, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 21387, + "end": 21389, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 21376, + "end": 21385, + "name": "DUP3", + "source": 34 + }, + { + "begin": 21372, + "end": 21390, + "name": "ADD", + "source": 34 + }, + { + "begin": 21364, + "end": 21390, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 21364, + "end": 21390, + "name": "POP", + "source": 34 + }, + { + "begin": 21400, + "end": 21490, + "name": "PUSH [tag]", + "source": 34, + "value": "1369" + }, + { + "begin": 21487, + "end": 21488, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 21476, + "end": 21485, + "name": "DUP4", + "source": 34 + }, + { + "begin": 21472, + "end": 21489, + "name": "ADD", + "source": 34 + }, + { + "begin": 21463, + "end": 21469, + "name": "DUP5", + "source": 34 + }, + { + "begin": 21400, + "end": 21490, + "name": "PUSH [tag]", + "source": 34, + "value": "1062" + }, + { + "begin": 21400, + "end": 21490, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21400, + "end": 21490, + "name": "tag", + "source": 34, + "value": "1369" + }, + { + "begin": 21400, + "end": 21490, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21237, + "end": 21497, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 21237, + "end": 21497, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 21237, + "end": 21497, + "name": "POP", + "source": 34 + }, + { + "begin": 21237, + "end": 21497, + "name": "POP", + "source": 34 + }, + { + "begin": 21237, + "end": 21497, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21503, + "end": 21620, + "name": "tag", + "source": 34, + "value": "1063" + }, + { + "begin": 21503, + "end": 21620, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21612, + "end": 21613, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 21609, + "end": 21610, + "name": "DUP1", + "source": 34 + }, + { + "begin": 21602, + "end": 21614, + "name": "REVERT", + "source": 34 + }, + { + "begin": 21670, + "end": 21914, + "name": "tag", + "source": 34, + "value": "1064" + }, + { + "begin": 21670, + "end": 21914, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21755, + "end": 21760, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 21796, + "end": 21799, + "name": "PUSH", + "source": 34, + "value": "1E0" + }, + { + "begin": 21787, + "end": 21793, + "name": "DUP3", + "source": 34 + }, + { + "begin": 21782, + "end": 21785, + "name": "DUP5", + "source": 34 + }, + { + "begin": 21778, + "end": 21794, + "name": "SUB", + "source": 34 + }, + { + "begin": 21774, + "end": 21800, + "name": "SLT", + "source": 34 + }, + { + "begin": 21771, + "end": 21884, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 21771, + "end": 21884, + "name": "PUSH [tag]", + "source": 34, + "value": "1372" + }, + { + "begin": 21771, + "end": 21884, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 21803, + "end": 21882, + "name": "PUSH [tag]", + "source": 34, + "value": "1373" + }, + { + "begin": 21803, + "end": 21882, + "name": "PUSH [tag]", + "source": 34, + "value": "1063" + }, + { + "begin": 21803, + "end": 21882, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21803, + "end": 21882, + "name": "tag", + "source": 34, + "value": "1373" + }, + { + "begin": 21803, + "end": 21882, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21771, + "end": 21884, + "name": "tag", + "source": 34, + "value": "1372" + }, + { + "begin": 21771, + "end": 21884, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 21902, + "end": 21908, + "name": "DUP2", + "source": 34 + }, + { + "begin": 21893, + "end": 21908, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 21893, + "end": 21908, + "name": "POP", + "source": 34 + }, + { + "begin": 21670, + "end": 21914, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 21670, + "end": 21914, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 21670, + "end": 21914, + "name": "POP", + "source": 34 + }, + { + "begin": 21670, + "end": 21914, + "name": "POP", + "source": 34 + }, + { + "begin": 21670, + "end": 21914, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 21920, + "end": 22487, + "name": "tag", + "source": 34, + "value": "96" + }, + { + "begin": 21920, + "end": 22487, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22018, + "end": 22024, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 22067, + "end": 22069, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 22055, + "end": 22064, + "name": "DUP3", + "source": 34 + }, + { + "begin": 22046, + "end": 22053, + "name": "DUP5", + "source": 34 + }, + { + "begin": 22042, + "end": 22065, + "name": "SUB", + "source": 34 + }, + { + "begin": 22038, + "end": 22070, + "name": "SLT", + "source": 34 + }, + { + "begin": 22035, + "end": 22154, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 22035, + "end": 22154, + "name": "PUSH [tag]", + "source": 34, + "value": "1375" + }, + { + "begin": 22035, + "end": 22154, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 22073, + "end": 22152, + "name": "PUSH [tag]", + "source": 34, + "value": "1376" + }, + { + "begin": 22073, + "end": 22152, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 22073, + "end": 22152, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 22073, + "end": 22152, + "name": "tag", + "source": 34, + "value": "1376" + }, + { + "begin": 22073, + "end": 22152, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22035, + "end": 22154, + "name": "tag", + "source": 34, + "value": "1375" + }, + { + "begin": 22035, + "end": 22154, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22221, + "end": 22222, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 22210, + "end": 22219, + "name": "DUP3", + "source": 34 + }, + { + "begin": 22206, + "end": 22223, + "name": "ADD", + "source": 34 + }, + { + "begin": 22193, + "end": 22224, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 22251, + "end": 22269, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 22243, + "end": 22249, + "name": "DUP2", + "source": 34 + }, + { + "begin": 22240, + "end": 22270, + "name": "GT", + "source": 34 + }, + { + "begin": 22237, + "end": 22354, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 22237, + "end": 22354, + "name": "PUSH [tag]", + "source": 34, + "value": "1377" + }, + { + "begin": 22237, + "end": 22354, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 22273, + "end": 22352, + "name": "PUSH [tag]", + "source": 34, + "value": "1378" + }, + { + "begin": 22273, + "end": 22352, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 22273, + "end": 22352, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 22273, + "end": 22352, + "name": "tag", + "source": 34, + "value": "1378" + }, + { + "begin": 22273, + "end": 22352, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22237, + "end": 22354, + "name": "tag", + "source": 34, + "value": "1377" + }, + { + "begin": 22237, + "end": 22354, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22378, + "end": 22470, + "name": "PUSH [tag]", + "source": 34, + "value": "1379" + }, + { + "begin": 22462, + "end": 22469, + "name": "DUP5", + "source": 34 + }, + { + "begin": 22453, + "end": 22459, + "name": "DUP3", + "source": 34 + }, + { + "begin": 22442, + "end": 22451, + "name": "DUP6", + "source": 34 + }, + { + "begin": 22438, + "end": 22460, + "name": "ADD", + "source": 34 + }, + { + "begin": 22378, + "end": 22470, + "name": "PUSH [tag]", + "source": 34, + "value": "1064" + }, + { + "begin": 22378, + "end": 22470, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 22378, + "end": 22470, + "name": "tag", + "source": 34, + "value": "1379" + }, + { + "begin": 22378, + "end": 22470, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22368, + "end": 22470, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 22368, + "end": 22470, + "name": "POP", + "source": 34 + }, + { + "begin": 22164, + "end": 22480, + "name": "POP", + "source": 34 + }, + { + "begin": 21920, + "end": 22487, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 21920, + "end": 22487, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 21920, + "end": 22487, + "name": "POP", + "source": 34 + }, + { + "begin": 21920, + "end": 22487, + "name": "POP", + "source": 34 + }, + { + "begin": 21920, + "end": 22487, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "tag", + "source": 34, + "value": "99" + }, + { + "begin": 22493, + "end": 23570, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22826, + "end": 22830, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 22864, + "end": 22867, + "name": "PUSH", + "source": 34, + "value": "C0" + }, + { + "begin": 22853, + "end": 22862, + "name": "DUP3", + "source": 34 + }, + { + "begin": 22849, + "end": 22868, + "name": "ADD", + "source": 34 + }, + { + "begin": 22841, + "end": 22868, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 22841, + "end": 22868, + "name": "POP", + "source": 34 + }, + { + "begin": 22878, + "end": 22949, + "name": "PUSH [tag]", + "source": 34, + "value": "1381" + }, + { + "begin": 22946, + "end": 22947, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 22935, + "end": 22944, + "name": "DUP4", + "source": 34 + }, + { + "begin": 22931, + "end": 22948, + "name": "ADD", + "source": 34 + }, + { + "begin": 22922, + "end": 22928, + "name": "DUP10", + "source": 34 + }, + { + "begin": 22878, + "end": 22949, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 22878, + "end": 22949, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 22878, + "end": 22949, + "name": "tag", + "source": 34, + "value": "1381" + }, + { + "begin": 22878, + "end": 22949, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 22959, + "end": 23031, + "name": "PUSH [tag]", + "source": 34, + "value": "1382" + }, + { + "begin": 23027, + "end": 23029, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 23016, + "end": 23025, + "name": "DUP4", + "source": 34 + }, + { + "begin": 23012, + "end": 23030, + "name": "ADD", + "source": 34 + }, + { + "begin": 23003, + "end": 23009, + "name": "DUP9", + "source": 34 + }, + { + "begin": 22959, + "end": 23031, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 22959, + "end": 23031, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 22959, + "end": 23031, + "name": "tag", + "source": 34, + "value": "1382" + }, + { + "begin": 22959, + "end": 23031, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23041, + "end": 23113, + "name": "PUSH [tag]", + "source": 34, + "value": "1383" + }, + { + "begin": 23109, + "end": 23111, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 23098, + "end": 23107, + "name": "DUP4", + "source": 34 + }, + { + "begin": 23094, + "end": 23112, + "name": "ADD", + "source": 34 + }, + { + "begin": 23085, + "end": 23091, + "name": "DUP8", + "source": 34 + }, + { + "begin": 23041, + "end": 23113, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 23041, + "end": 23113, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23041, + "end": 23113, + "name": "tag", + "source": 34, + "value": "1383" + }, + { + "begin": 23041, + "end": 23113, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23123, + "end": 23195, + "name": "PUSH [tag]", + "source": 34, + "value": "1384" + }, + { + "begin": 23191, + "end": 23193, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 23180, + "end": 23189, + "name": "DUP4", + "source": 34 + }, + { + "begin": 23176, + "end": 23194, + "name": "ADD", + "source": 34 + }, + { + "begin": 23167, + "end": 23173, + "name": "DUP7", + "source": 34 + }, + { + "begin": 23123, + "end": 23195, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 23123, + "end": 23195, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23123, + "end": 23195, + "name": "tag", + "source": 34, + "value": "1384" + }, + { + "begin": 23123, + "end": 23195, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23243, + "end": 23252, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23237, + "end": 23241, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23233, + "end": 23253, + "name": "SUB", + "source": 34 + }, + { + "begin": 23227, + "end": 23230, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 23216, + "end": 23225, + "name": "DUP4", + "source": 34 + }, + { + "begin": 23212, + "end": 23231, + "name": "ADD", + "source": 34 + }, + { + "begin": 23205, + "end": 23254, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 23271, + "end": 23379, + "name": "PUSH [tag]", + "source": 34, + "value": "1385" + }, + { + "begin": 23374, + "end": 23378, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23365, + "end": 23371, + "name": "DUP6", + "source": 34 + }, + { + "begin": 23271, + "end": 23379, + "name": "PUSH [tag]", + "source": 34, + "value": "1047" + }, + { + "begin": 23271, + "end": 23379, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23271, + "end": 23379, + "name": "tag", + "source": 34, + "value": "1385" + }, + { + "begin": 23271, + "end": 23379, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23263, + "end": 23379, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 23263, + "end": 23379, + "name": "POP", + "source": 34 + }, + { + "begin": 23427, + "end": 23436, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23421, + "end": 23425, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23417, + "end": 23437, + "name": "SUB", + "source": 34 + }, + { + "begin": 23411, + "end": 23414, + "name": "PUSH", + "source": 34, + "value": "A0" + }, + { + "begin": 23400, + "end": 23409, + "name": "DUP4", + "source": 34 + }, + { + "begin": 23396, + "end": 23415, + "name": "ADD", + "source": 34 + }, + { + "begin": 23389, + "end": 23438, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 23455, + "end": 23563, + "name": "PUSH [tag]", + "source": 34, + "value": "1386" + }, + { + "begin": 23558, + "end": 23562, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23549, + "end": 23555, + "name": "DUP5", + "source": 34 + }, + { + "begin": 23455, + "end": 23563, + "name": "PUSH [tag]", + "source": 34, + "value": "1047" + }, + { + "begin": 23455, + "end": 23563, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23455, + "end": 23563, + "name": "tag", + "source": 34, + "value": "1386" + }, + { + "begin": 23455, + "end": 23563, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23447, + "end": 23563, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 23447, + "end": 23563, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "SWAP8", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "SWAP7", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "name": "POP", + "source": 34 + }, + { + "begin": 22493, + "end": 23570, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23576, + "end": 23688, + "name": "tag", + "source": 34, + "value": "1065" + }, + { + "begin": 23576, + "end": 23688, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23629, + "end": 23636, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 23658, + "end": 23682, + "name": "PUSH [tag]", + "source": 34, + "value": "1388" + }, + { + "begin": 23676, + "end": 23681, + "name": "DUP3", + "source": 34 + }, + { + "begin": 23658, + "end": 23682, + "name": "PUSH [tag]", + "source": 34, + "value": "1028" + }, + { + "begin": 23658, + "end": 23682, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23658, + "end": 23682, + "name": "tag", + "source": 34, + "value": "1388" + }, + { + "begin": 23658, + "end": 23682, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23647, + "end": 23682, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 23647, + "end": 23682, + "name": "POP", + "source": 34 + }, + { + "begin": 23576, + "end": 23688, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 23576, + "end": 23688, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 23576, + "end": 23688, + "name": "POP", + "source": 34 + }, + { + "begin": 23576, + "end": 23688, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23694, + "end": 23848, + "name": "tag", + "source": 34, + "value": "1066" + }, + { + "begin": 23694, + "end": 23848, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23783, + "end": 23823, + "name": "PUSH [tag]", + "source": 34, + "value": "1390" + }, + { + "begin": 23817, + "end": 23822, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23783, + "end": 23823, + "name": "PUSH [tag]", + "source": 34, + "value": "1065" + }, + { + "begin": 23783, + "end": 23823, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23783, + "end": 23823, + "name": "tag", + "source": 34, + "value": "1390" + }, + { + "begin": 23783, + "end": 23823, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23776, + "end": 23781, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23773, + "end": 23824, + "name": "EQ", + "source": 34 + }, + { + "begin": 23763, + "end": 23842, + "name": "PUSH [tag]", + "source": 34, + "value": "1391" + }, + { + "begin": 23763, + "end": 23842, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 23838, + "end": 23839, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 23835, + "end": 23836, + "name": "DUP1", + "source": 34 + }, + { + "begin": 23828, + "end": 23840, + "name": "REVERT", + "source": 34 + }, + { + "begin": 23763, + "end": 23842, + "name": "tag", + "source": 34, + "value": "1391" + }, + { + "begin": 23763, + "end": 23842, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23694, + "end": 23848, + "name": "POP", + "source": 34 + }, + { + "begin": 23694, + "end": 23848, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23854, + "end": 24025, + "name": "tag", + "source": 34, + "value": "1067" + }, + { + "begin": 23854, + "end": 24025, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23916, + "end": 23921, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 23954, + "end": 23960, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23941, + "end": 23961, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 23932, + "end": 23961, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 23932, + "end": 23961, + "name": "POP", + "source": 34 + }, + { + "begin": 23970, + "end": 24019, + "name": "PUSH [tag]", + "source": 34, + "value": "1393" + }, + { + "begin": 24013, + "end": 24018, + "name": "DUP2", + "source": 34 + }, + { + "begin": 23970, + "end": 24019, + "name": "PUSH [tag]", + "source": 34, + "value": "1066" + }, + { + "begin": 23970, + "end": 24019, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 23970, + "end": 24019, + "name": "tag", + "source": 34, + "value": "1393" + }, + { + "begin": 23970, + "end": 24019, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 23854, + "end": 24025, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 23854, + "end": 24025, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 23854, + "end": 24025, + "name": "POP", + "source": 34 + }, + { + "begin": 23854, + "end": 24025, + "name": "POP", + "source": 34 + }, + { + "begin": 23854, + "end": 24025, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24031, + "end": 24149, + "name": "tag", + "source": 34, + "value": "1068" + }, + { + "begin": 24031, + "end": 24149, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24068, + "end": 24075, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24108, + "end": 24142, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 24101, + "end": 24106, + "name": "DUP3", + "source": 34 + }, + { + "begin": 24097, + "end": 24143, + "name": "AND", + "source": 34 + }, + { + "begin": 24086, + "end": 24143, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 24086, + "end": 24143, + "name": "POP", + "source": 34 + }, + { + "begin": 24031, + "end": 24149, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 24031, + "end": 24149, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 24031, + "end": 24149, + "name": "POP", + "source": 34 + }, + { + "begin": 24031, + "end": 24149, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24155, + "end": 24277, + "name": "tag", + "source": 34, + "value": "1069" + }, + { + "begin": 24155, + "end": 24277, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24228, + "end": 24252, + "name": "PUSH [tag]", + "source": 34, + "value": "1396" + }, + { + "begin": 24246, + "end": 24251, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24228, + "end": 24252, + "name": "PUSH [tag]", + "source": 34, + "value": "1068" + }, + { + "begin": 24228, + "end": 24252, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24228, + "end": 24252, + "name": "tag", + "source": 34, + "value": "1396" + }, + { + "begin": 24228, + "end": 24252, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24221, + "end": 24226, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24218, + "end": 24253, + "name": "EQ", + "source": 34 + }, + { + "begin": 24208, + "end": 24271, + "name": "PUSH [tag]", + "source": 34, + "value": "1397" + }, + { + "begin": 24208, + "end": 24271, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 24267, + "end": 24268, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24264, + "end": 24265, + "name": "DUP1", + "source": 34 + }, + { + "begin": 24257, + "end": 24269, + "name": "REVERT", + "source": 34 + }, + { + "begin": 24208, + "end": 24271, + "name": "tag", + "source": 34, + "value": "1397" + }, + { + "begin": 24208, + "end": 24271, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24155, + "end": 24277, + "name": "POP", + "source": 34 + }, + { + "begin": 24155, + "end": 24277, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24283, + "end": 24422, + "name": "tag", + "source": 34, + "value": "1070" + }, + { + "begin": 24283, + "end": 24422, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24329, + "end": 24334, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24367, + "end": 24373, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24354, + "end": 24374, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 24345, + "end": 24374, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 24345, + "end": 24374, + "name": "POP", + "source": 34 + }, + { + "begin": 24383, + "end": 24416, + "name": "PUSH [tag]", + "source": 34, + "value": "1399" + }, + { + "begin": 24410, + "end": 24415, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24383, + "end": 24416, + "name": "PUSH [tag]", + "source": 34, + "value": "1069" + }, + { + "begin": 24383, + "end": 24416, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24383, + "end": 24416, + "name": "tag", + "source": 34, + "value": "1399" + }, + { + "begin": 24383, + "end": 24416, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24283, + "end": 24422, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 24283, + "end": 24422, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 24283, + "end": 24422, + "name": "POP", + "source": 34 + }, + { + "begin": 24283, + "end": 24422, + "name": "POP", + "source": 34 + }, + { + "begin": 24283, + "end": 24422, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24428, + "end": 24518, + "name": "tag", + "source": 34, + "value": "1071" + }, + { + "begin": 24428, + "end": 24518, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24462, + "end": 24469, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24505, + "end": 24510, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24498, + "end": 24511, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 24491, + "end": 24512, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 24480, + "end": 24512, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 24480, + "end": 24512, + "name": "POP", + "source": 34 + }, + { + "begin": 24428, + "end": 24518, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 24428, + "end": 24518, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 24428, + "end": 24518, + "name": "POP", + "source": 34 + }, + { + "begin": 24428, + "end": 24518, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24524, + "end": 24640, + "name": "tag", + "source": 34, + "value": "1072" + }, + { + "begin": 24524, + "end": 24640, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24594, + "end": 24615, + "name": "PUSH [tag]", + "source": 34, + "value": "1402" + }, + { + "begin": 24609, + "end": 24614, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24594, + "end": 24615, + "name": "PUSH [tag]", + "source": 34, + "value": "1071" + }, + { + "begin": 24594, + "end": 24615, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24594, + "end": 24615, + "name": "tag", + "source": 34, + "value": "1402" + }, + { + "begin": 24594, + "end": 24615, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24587, + "end": 24592, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24584, + "end": 24616, + "name": "EQ", + "source": 34 + }, + { + "begin": 24574, + "end": 24634, + "name": "PUSH [tag]", + "source": 34, + "value": "1403" + }, + { + "begin": 24574, + "end": 24634, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 24630, + "end": 24631, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24627, + "end": 24628, + "name": "DUP1", + "source": 34 + }, + { + "begin": 24620, + "end": 24632, + "name": "REVERT", + "source": 34 + }, + { + "begin": 24574, + "end": 24634, + "name": "tag", + "source": 34, + "value": "1403" + }, + { + "begin": 24574, + "end": 24634, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24524, + "end": 24640, + "name": "POP", + "source": 34 + }, + { + "begin": 24524, + "end": 24640, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24646, + "end": 24779, + "name": "tag", + "source": 34, + "value": "1073" + }, + { + "begin": 24646, + "end": 24779, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24689, + "end": 24694, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24727, + "end": 24733, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24714, + "end": 24734, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 24705, + "end": 24734, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 24705, + "end": 24734, + "name": "POP", + "source": 34 + }, + { + "begin": 24743, + "end": 24773, + "name": "PUSH [tag]", + "source": 34, + "value": "1405" + }, + { + "begin": 24767, + "end": 24772, + "name": "DUP2", + "source": 34 + }, + { + "begin": 24743, + "end": 24773, + "name": "PUSH [tag]", + "source": 34, + "value": "1072" + }, + { + "begin": 24743, + "end": 24773, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24743, + "end": 24773, + "name": "tag", + "source": 34, + "value": "1405" + }, + { + "begin": 24743, + "end": 24773, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24646, + "end": 24779, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 24646, + "end": 24779, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 24646, + "end": 24779, + "name": "POP", + "source": 34 + }, + { + "begin": 24646, + "end": 24779, + "name": "POP", + "source": 34 + }, + { + "begin": 24646, + "end": 24779, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24785, + "end": 25430, + "name": "tag", + "source": 34, + "value": "108" + }, + { + "begin": 24785, + "end": 25430, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24875, + "end": 24881, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24883, + "end": 24889, + "name": "DUP1", + "source": 34 + }, + { + "begin": 24891, + "end": 24897, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 24940, + "end": 24942, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 24928, + "end": 24937, + "name": "DUP5", + "source": 34 + }, + { + "begin": 24919, + "end": 24926, + "name": "DUP7", + "source": 34 + }, + { + "begin": 24915, + "end": 24938, + "name": "SUB", + "source": 34 + }, + { + "begin": 24911, + "end": 24943, + "name": "SLT", + "source": 34 + }, + { + "begin": 24908, + "end": 25027, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 24908, + "end": 25027, + "name": "PUSH [tag]", + "source": 34, + "value": "1407" + }, + { + "begin": 24908, + "end": 25027, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 24946, + "end": 25025, + "name": "PUSH [tag]", + "source": 34, + "value": "1408" + }, + { + "begin": 24946, + "end": 25025, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 24946, + "end": 25025, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 24946, + "end": 25025, + "name": "tag", + "source": 34, + "value": "1408" + }, + { + "begin": 24946, + "end": 25025, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 24908, + "end": 25027, + "name": "tag", + "source": 34, + "value": "1407" + }, + { + "begin": 24908, + "end": 25027, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25066, + "end": 25067, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 25091, + "end": 25160, + "name": "PUSH [tag]", + "source": 34, + "value": "1409" + }, + { + "begin": 25152, + "end": 25159, + "name": "DUP7", + "source": 34 + }, + { + "begin": 25143, + "end": 25149, + "name": "DUP3", + "source": 34 + }, + { + "begin": 25132, + "end": 25141, + "name": "DUP8", + "source": 34 + }, + { + "begin": 25128, + "end": 25150, + "name": "ADD", + "source": 34 + }, + { + "begin": 25091, + "end": 25160, + "name": "PUSH [tag]", + "source": 34, + "value": "1067" + }, + { + "begin": 25091, + "end": 25160, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25091, + "end": 25160, + "name": "tag", + "source": 34, + "value": "1409" + }, + { + "begin": 25091, + "end": 25160, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25081, + "end": 25160, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 25081, + "end": 25160, + "name": "POP", + "source": 34 + }, + { + "begin": 25037, + "end": 25170, + "name": "POP", + "source": 34 + }, + { + "begin": 25209, + "end": 25211, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 25235, + "end": 25288, + "name": "PUSH [tag]", + "source": 34, + "value": "1410" + }, + { + "begin": 25280, + "end": 25287, + "name": "DUP7", + "source": 34 + }, + { + "begin": 25271, + "end": 25277, + "name": "DUP3", + "source": 34 + }, + { + "begin": 25260, + "end": 25269, + "name": "DUP8", + "source": 34 + }, + { + "begin": 25256, + "end": 25278, + "name": "ADD", + "source": 34 + }, + { + "begin": 25235, + "end": 25288, + "name": "PUSH [tag]", + "source": 34, + "value": "1070" + }, + { + "begin": 25235, + "end": 25288, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25235, + "end": 25288, + "name": "tag", + "source": 34, + "value": "1410" + }, + { + "begin": 25235, + "end": 25288, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25225, + "end": 25288, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 25225, + "end": 25288, + "name": "POP", + "source": 34 + }, + { + "begin": 25180, + "end": 25298, + "name": "POP", + "source": 34 + }, + { + "begin": 25337, + "end": 25339, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 25363, + "end": 25413, + "name": "PUSH [tag]", + "source": 34, + "value": "1411" + }, + { + "begin": 25405, + "end": 25412, + "name": "DUP7", + "source": 34 + }, + { + "begin": 25396, + "end": 25402, + "name": "DUP3", + "source": 34 + }, + { + "begin": 25385, + "end": 25394, + "name": "DUP8", + "source": 34 + }, + { + "begin": 25381, + "end": 25403, + "name": "ADD", + "source": 34 + }, + { + "begin": 25363, + "end": 25413, + "name": "PUSH [tag]", + "source": 34, + "value": "1073" + }, + { + "begin": 25363, + "end": 25413, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25363, + "end": 25413, + "name": "tag", + "source": 34, + "value": "1411" + }, + { + "begin": 25363, + "end": 25413, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25353, + "end": 25413, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 25353, + "end": 25413, + "name": "POP", + "source": 34 + }, + { + "begin": 25308, + "end": 25423, + "name": "POP", + "source": 34 + }, + { + "begin": 24785, + "end": 25430, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 24785, + "end": 25430, + "name": "POP", + "source": 34 + }, + { + "begin": 24785, + "end": 25430, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 24785, + "end": 25430, + "name": "POP", + "source": 34 + }, + { + "begin": 24785, + "end": 25430, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 24785, + "end": 25430, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25436, + "end": 25554, + "name": "tag", + "source": 34, + "value": "1074" + }, + { + "begin": 25436, + "end": 25554, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25523, + "end": 25547, + "name": "PUSH [tag]", + "source": 34, + "value": "1413" + }, + { + "begin": 25541, + "end": 25546, + "name": "DUP2", + "source": 34 + }, + { + "begin": 25523, + "end": 25547, + "name": "PUSH [tag]", + "source": 34, + "value": "1068" + }, + { + "begin": 25523, + "end": 25547, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25523, + "end": 25547, + "name": "tag", + "source": 34, + "value": "1413" + }, + { + "begin": 25523, + "end": 25547, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25518, + "end": 25521, + "name": "DUP3", + "source": 34 + }, + { + "begin": 25511, + "end": 25548, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 25436, + "end": 25554, + "name": "POP", + "source": 34 + }, + { + "begin": 25436, + "end": 25554, + "name": "POP", + "source": 34 + }, + { + "begin": 25436, + "end": 25554, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "name": "tag", + "source": 34, + "value": "111" + }, + { + "begin": 25560, + "end": 26002, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25709, + "end": 25713, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 25747, + "end": 25749, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 25736, + "end": 25745, + "name": "DUP3", + "source": 34 + }, + { + "begin": 25732, + "end": 25750, + "name": "ADD", + "source": 34 + }, + { + "begin": 25724, + "end": 25750, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 25724, + "end": 25750, + "name": "POP", + "source": 34 + }, + { + "begin": 25760, + "end": 25831, + "name": "PUSH [tag]", + "source": 34, + "value": "1415" + }, + { + "begin": 25828, + "end": 25829, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 25817, + "end": 25826, + "name": "DUP4", + "source": 34 + }, + { + "begin": 25813, + "end": 25830, + "name": "ADD", + "source": 34 + }, + { + "begin": 25804, + "end": 25810, + "name": "DUP7", + "source": 34 + }, + { + "begin": 25760, + "end": 25831, + "name": "PUSH [tag]", + "source": 34, + "value": "1074" + }, + { + "begin": 25760, + "end": 25831, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25760, + "end": 25831, + "name": "tag", + "source": 34, + "value": "1415" + }, + { + "begin": 25760, + "end": 25831, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25841, + "end": 25913, + "name": "PUSH [tag]", + "source": 34, + "value": "1416" + }, + { + "begin": 25909, + "end": 25911, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 25898, + "end": 25907, + "name": "DUP4", + "source": 34 + }, + { + "begin": 25894, + "end": 25912, + "name": "ADD", + "source": 34 + }, + { + "begin": 25885, + "end": 25891, + "name": "DUP6", + "source": 34 + }, + { + "begin": 25841, + "end": 25913, + "name": "PUSH [tag]", + "source": 34, + "value": "1074" + }, + { + "begin": 25841, + "end": 25913, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25841, + "end": 25913, + "name": "tag", + "source": 34, + "value": "1416" + }, + { + "begin": 25841, + "end": 25913, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25923, + "end": 25995, + "name": "PUSH [tag]", + "source": 34, + "value": "1417" + }, + { + "begin": 25991, + "end": 25993, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 25980, + "end": 25989, + "name": "DUP4", + "source": 34 + }, + { + "begin": 25976, + "end": 25994, + "name": "ADD", + "source": 34 + }, + { + "begin": 25967, + "end": 25973, + "name": "DUP5", + "source": 34 + }, + { + "begin": 25923, + "end": 25995, + "name": "PUSH [tag]", + "source": 34, + "value": "1074" + }, + { + "begin": 25923, + "end": 25995, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 25923, + "end": 25995, + "name": "tag", + "source": 34, + "value": "1417" + }, + { + "begin": 25923, + "end": 25995, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "name": "POP", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "name": "POP", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "name": "POP", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "name": "POP", + "source": 34 + }, + { + "begin": 25560, + "end": 26002, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26008, + "end": 26161, + "name": "tag", + "source": 34, + "value": "1075" + }, + { + "begin": 26008, + "end": 26161, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26085, + "end": 26094, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26118, + "end": 26155, + "name": "PUSH [tag]", + "source": 34, + "value": "1419" + }, + { + "begin": 26149, + "end": 26154, + "name": "DUP3", + "source": 34 + }, + { + "begin": 26118, + "end": 26155, + "name": "PUSH [tag]", + "source": 34, + "value": "1056" + }, + { + "begin": 26118, + "end": 26155, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26118, + "end": 26155, + "name": "tag", + "source": 34, + "value": "1419" + }, + { + "begin": 26118, + "end": 26155, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26105, + "end": 26155, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 26105, + "end": 26155, + "name": "POP", + "source": 34 + }, + { + "begin": 26008, + "end": 26161, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 26008, + "end": 26161, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 26008, + "end": 26161, + "name": "POP", + "source": 34 + }, + { + "begin": 26008, + "end": 26161, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26167, + "end": 26352, + "name": "tag", + "source": 34, + "value": "1076" + }, + { + "begin": 26167, + "end": 26352, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26281, + "end": 26345, + "name": "PUSH [tag]", + "source": 34, + "value": "1421" + }, + { + "begin": 26339, + "end": 26344, + "name": "DUP2", + "source": 34 + }, + { + "begin": 26281, + "end": 26345, + "name": "PUSH [tag]", + "source": 34, + "value": "1075" + }, + { + "begin": 26281, + "end": 26345, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26281, + "end": 26345, + "name": "tag", + "source": 34, + "value": "1421" + }, + { + "begin": 26281, + "end": 26345, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26276, + "end": 26279, + "name": "DUP3", + "source": 34 + }, + { + "begin": 26269, + "end": 26346, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 26167, + "end": 26352, + "name": "POP", + "source": 34 + }, + { + "begin": 26167, + "end": 26352, + "name": "POP", + "source": 34 + }, + { + "begin": 26167, + "end": 26352, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26358, + "end": 26634, + "name": "tag", + "source": 34, + "value": "135" + }, + { + "begin": 26358, + "end": 26634, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26478, + "end": 26482, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26516, + "end": 26518, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 26505, + "end": 26514, + "name": "DUP3", + "source": 34 + }, + { + "begin": 26501, + "end": 26519, + "name": "ADD", + "source": 34 + }, + { + "begin": 26493, + "end": 26519, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 26493, + "end": 26519, + "name": "POP", + "source": 34 + }, + { + "begin": 26529, + "end": 26627, + "name": "PUSH [tag]", + "source": 34, + "value": "1423" + }, + { + "begin": 26624, + "end": 26625, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26613, + "end": 26622, + "name": "DUP4", + "source": 34 + }, + { + "begin": 26609, + "end": 26626, + "name": "ADD", + "source": 34 + }, + { + "begin": 26600, + "end": 26606, + "name": "DUP5", + "source": 34 + }, + { + "begin": 26529, + "end": 26627, + "name": "PUSH [tag]", + "source": 34, + "value": "1076" + }, + { + "begin": 26529, + "end": 26627, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26529, + "end": 26627, + "name": "tag", + "source": 34, + "value": "1423" + }, + { + "begin": 26529, + "end": 26627, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26358, + "end": 26634, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 26358, + "end": 26634, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 26358, + "end": 26634, + "name": "POP", + "source": 34 + }, + { + "begin": 26358, + "end": 26634, + "name": "POP", + "source": 34 + }, + { + "begin": 26358, + "end": 26634, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "tag", + "source": 34, + "value": "139" + }, + { + "begin": 26640, + "end": 28609, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26848, + "end": 26854, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26856, + "end": 26862, + "name": "DUP1", + "source": 34 + }, + { + "begin": 26864, + "end": 26870, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26872, + "end": 26878, + "name": "DUP1", + "source": 34 + }, + { + "begin": 26880, + "end": 26886, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26888, + "end": 26894, + "name": "DUP1", + "source": 34 + }, + { + "begin": 26896, + "end": 26902, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26904, + "end": 26910, + "name": "DUP1", + "source": 34 + }, + { + "begin": 26912, + "end": 26918, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 26961, + "end": 26964, + "name": "PUSH", + "source": 34, + "value": "120" + }, + { + "begin": 26949, + "end": 26958, + "name": "DUP11", + "source": 34 + }, + { + "begin": 26940, + "end": 26947, + "name": "DUP13", + "source": 34 + }, + { + "begin": 26936, + "end": 26959, + "name": "SUB", + "source": 34 + }, + { + "begin": 26932, + "end": 26965, + "name": "SLT", + "source": 34 + }, + { + "begin": 26929, + "end": 27049, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 26929, + "end": 27049, + "name": "PUSH [tag]", + "source": 34, + "value": "1425" + }, + { + "begin": 26929, + "end": 27049, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 26968, + "end": 27047, + "name": "PUSH [tag]", + "source": 34, + "value": "1426" + }, + { + "begin": 26968, + "end": 27047, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 26968, + "end": 27047, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 26968, + "end": 27047, + "name": "tag", + "source": 34, + "value": "1426" + }, + { + "begin": 26968, + "end": 27047, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 26929, + "end": 27049, + "name": "tag", + "source": 34, + "value": "1425" + }, + { + "begin": 26929, + "end": 27049, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27088, + "end": 27089, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 27113, + "end": 27180, + "name": "PUSH [tag]", + "source": 34, + "value": "1427" + }, + { + "begin": 27172, + "end": 27179, + "name": "DUP13", + "source": 34 + }, + { + "begin": 27163, + "end": 27169, + "name": "DUP3", + "source": 34 + }, + { + "begin": 27152, + "end": 27161, + "name": "DUP14", + "source": 34 + }, + { + "begin": 27148, + "end": 27170, + "name": "ADD", + "source": 34 + }, + { + "begin": 27113, + "end": 27180, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 27113, + "end": 27180, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 27113, + "end": 27180, + "name": "tag", + "source": 34, + "value": "1427" + }, + { + "begin": 27113, + "end": 27180, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27103, + "end": 27180, + "name": "SWAP10", + "source": 34 + }, + { + "begin": 27103, + "end": 27180, + "name": "POP", + "source": 34 + }, + { + "begin": 27059, + "end": 27190, + "name": "POP", + "source": 34 + }, + { + "begin": 27229, + "end": 27231, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 27255, + "end": 27322, + "name": "PUSH [tag]", + "source": 34, + "value": "1428" + }, + { + "begin": 27314, + "end": 27321, + "name": "DUP13", + "source": 34 + }, + { + "begin": 27305, + "end": 27311, + "name": "DUP3", + "source": 34 + }, + { + "begin": 27294, + "end": 27303, + "name": "DUP14", + "source": 34 + }, + { + "begin": 27290, + "end": 27312, + "name": "ADD", + "source": 34 + }, + { + "begin": 27255, + "end": 27322, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 27255, + "end": 27322, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 27255, + "end": 27322, + "name": "tag", + "source": 34, + "value": "1428" + }, + { + "begin": 27255, + "end": 27322, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27245, + "end": 27322, + "name": "SWAP9", + "source": 34 + }, + { + "begin": 27245, + "end": 27322, + "name": "POP", + "source": 34 + }, + { + "begin": 27200, + "end": 27332, + "name": "POP", + "source": 34 + }, + { + "begin": 27371, + "end": 27373, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 27397, + "end": 27449, + "name": "PUSH [tag]", + "source": 34, + "value": "1429" + }, + { + "begin": 27441, + "end": 27448, + "name": "DUP13", + "source": 34 + }, + { + "begin": 27432, + "end": 27438, + "name": "DUP3", + "source": 34 + }, + { + "begin": 27421, + "end": 27430, + "name": "DUP14", + "source": 34 + }, + { + "begin": 27417, + "end": 27439, + "name": "ADD", + "source": 34 + }, + { + "begin": 27397, + "end": 27449, + "name": "PUSH [tag]", + "source": 34, + "value": "1053" + }, + { + "begin": 27397, + "end": 27449, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 27397, + "end": 27449, + "name": "tag", + "source": 34, + "value": "1429" + }, + { + "begin": 27397, + "end": 27449, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27387, + "end": 27449, + "name": "SWAP8", + "source": 34 + }, + { + "begin": 27387, + "end": 27449, + "name": "POP", + "source": 34 + }, + { + "begin": 27342, + "end": 27459, + "name": "POP", + "source": 34 + }, + { + "begin": 27498, + "end": 27500, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 27524, + "end": 27577, + "name": "PUSH [tag]", + "source": 34, + "value": "1430" + }, + { + "begin": 27569, + "end": 27576, + "name": "DUP13", + "source": 34 + }, + { + "begin": 27560, + "end": 27566, + "name": "DUP3", + "source": 34 + }, + { + "begin": 27549, + "end": 27558, + "name": "DUP14", + "source": 34 + }, + { + "begin": 27545, + "end": 27567, + "name": "ADD", + "source": 34 + }, + { + "begin": 27524, + "end": 27577, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 27524, + "end": 27577, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 27524, + "end": 27577, + "name": "tag", + "source": 34, + "value": "1430" + }, + { + "begin": 27524, + "end": 27577, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27514, + "end": 27577, + "name": "SWAP7", + "source": 34 + }, + { + "begin": 27514, + "end": 27577, + "name": "POP", + "source": 34 + }, + { + "begin": 27469, + "end": 27587, + "name": "POP", + "source": 34 + }, + { + "begin": 27626, + "end": 27629, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 27653, + "end": 27706, + "name": "PUSH [tag]", + "source": 34, + "value": "1431" + }, + { + "begin": 27698, + "end": 27705, + "name": "DUP13", + "source": 34 + }, + { + "begin": 27689, + "end": 27695, + "name": "DUP3", + "source": 34 + }, + { + "begin": 27678, + "end": 27687, + "name": "DUP14", + "source": 34 + }, + { + "begin": 27674, + "end": 27696, + "name": "ADD", + "source": 34 + }, + { + "begin": 27653, + "end": 27706, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 27653, + "end": 27706, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 27653, + "end": 27706, + "name": "tag", + "source": 34, + "value": "1431" + }, + { + "begin": 27653, + "end": 27706, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27643, + "end": 27706, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 27643, + "end": 27706, + "name": "POP", + "source": 34 + }, + { + "begin": 27597, + "end": 27716, + "name": "POP", + "source": 34 + }, + { + "begin": 27783, + "end": 27786, + "name": "PUSH", + "source": 34, + "value": "A0" + }, + { + "begin": 27772, + "end": 27781, + "name": "DUP11", + "source": 34 + }, + { + "begin": 27768, + "end": 27787, + "name": "ADD", + "source": 34 + }, + { + "begin": 27755, + "end": 27788, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 27815, + "end": 27833, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 27807, + "end": 27813, + "name": "DUP2", + "source": 34 + }, + { + "begin": 27804, + "end": 27834, + "name": "GT", + "source": 34 + }, + { + "begin": 27801, + "end": 27918, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 27801, + "end": 27918, + "name": "PUSH [tag]", + "source": 34, + "value": "1432" + }, + { + "begin": 27801, + "end": 27918, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 27837, + "end": 27916, + "name": "PUSH [tag]", + "source": 34, + "value": "1433" + }, + { + "begin": 27837, + "end": 27916, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 27837, + "end": 27916, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 27837, + "end": 27916, + "name": "tag", + "source": 34, + "value": "1433" + }, + { + "begin": 27837, + "end": 27916, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27801, + "end": 27918, + "name": "tag", + "source": 34, + "value": "1432" + }, + { + "begin": 27801, + "end": 27918, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27942, + "end": 28020, + "name": "PUSH [tag]", + "source": 34, + "value": "1434" + }, + { + "begin": 28012, + "end": 28019, + "name": "DUP13", + "source": 34 + }, + { + "begin": 28003, + "end": 28009, + "name": "DUP3", + "source": 34 + }, + { + "begin": 27992, + "end": 28001, + "name": "DUP14", + "source": 34 + }, + { + "begin": 27988, + "end": 28010, + "name": "ADD", + "source": 34 + }, + { + "begin": 27942, + "end": 28020, + "name": "PUSH [tag]", + "source": 34, + "value": "1020" + }, + { + "begin": 27942, + "end": 28020, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 27942, + "end": 28020, + "name": "tag", + "source": 34, + "value": "1434" + }, + { + "begin": 27942, + "end": 28020, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 27932, + "end": 28020, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 27932, + "end": 28020, + "name": "POP", + "source": 34 + }, + { + "begin": 27726, + "end": 28030, + "name": "POP", + "source": 34 + }, + { + "begin": 28097, + "end": 28100, + "name": "PUSH", + "source": 34, + "value": "C0" + }, + { + "begin": 28086, + "end": 28095, + "name": "DUP11", + "source": 34 + }, + { + "begin": 28082, + "end": 28101, + "name": "ADD", + "source": 34 + }, + { + "begin": 28069, + "end": 28102, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 28129, + "end": 28147, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 28121, + "end": 28127, + "name": "DUP2", + "source": 34 + }, + { + "begin": 28118, + "end": 28148, + "name": "GT", + "source": 34 + }, + { + "begin": 28115, + "end": 28232, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 28115, + "end": 28232, + "name": "PUSH [tag]", + "source": 34, + "value": "1435" + }, + { + "begin": 28115, + "end": 28232, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 28151, + "end": 28230, + "name": "PUSH [tag]", + "source": 34, + "value": "1436" + }, + { + "begin": 28151, + "end": 28230, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 28151, + "end": 28230, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 28151, + "end": 28230, + "name": "tag", + "source": 34, + "value": "1436" + }, + { + "begin": 28151, + "end": 28230, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28115, + "end": 28232, + "name": "tag", + "source": 34, + "value": "1435" + }, + { + "begin": 28115, + "end": 28232, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28256, + "end": 28334, + "name": "PUSH [tag]", + "source": 34, + "value": "1437" + }, + { + "begin": 28326, + "end": 28333, + "name": "DUP13", + "source": 34 + }, + { + "begin": 28317, + "end": 28323, + "name": "DUP3", + "source": 34 + }, + { + "begin": 28306, + "end": 28315, + "name": "DUP14", + "source": 34 + }, + { + "begin": 28302, + "end": 28324, + "name": "ADD", + "source": 34 + }, + { + "begin": 28256, + "end": 28334, + "name": "PUSH [tag]", + "source": 34, + "value": "1020" + }, + { + "begin": 28256, + "end": 28334, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 28256, + "end": 28334, + "name": "tag", + "source": 34, + "value": "1437" + }, + { + "begin": 28256, + "end": 28334, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28246, + "end": 28334, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 28246, + "end": 28334, + "name": "POP", + "source": 34 + }, + { + "begin": 28040, + "end": 28344, + "name": "POP", + "source": 34 + }, + { + "begin": 28383, + "end": 28386, + "name": "PUSH", + "source": 34, + "value": "E0" + }, + { + "begin": 28410, + "end": 28463, + "name": "PUSH [tag]", + "source": 34, + "value": "1438" + }, + { + "begin": 28455, + "end": 28462, + "name": "DUP13", + "source": 34 + }, + { + "begin": 28446, + "end": 28452, + "name": "DUP3", + "source": 34 + }, + { + "begin": 28435, + "end": 28444, + "name": "DUP14", + "source": 34 + }, + { + "begin": 28431, + "end": 28453, + "name": "ADD", + "source": 34 + }, + { + "begin": 28410, + "end": 28463, + "name": "PUSH [tag]", + "source": 34, + "value": "1040" + }, + { + "begin": 28410, + "end": 28463, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 28410, + "end": 28463, + "name": "tag", + "source": 34, + "value": "1438" + }, + { + "begin": 28410, + "end": 28463, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28400, + "end": 28463, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 28400, + "end": 28463, + "name": "POP", + "source": 34 + }, + { + "begin": 28354, + "end": 28473, + "name": "POP", + "source": 34 + }, + { + "begin": 28512, + "end": 28515, + "name": "PUSH", + "source": 34, + "value": "100" + }, + { + "begin": 28539, + "end": 28592, + "name": "PUSH [tag]", + "source": 34, + "value": "1439" + }, + { + "begin": 28584, + "end": 28591, + "name": "DUP13", + "source": 34 + }, + { + "begin": 28575, + "end": 28581, + "name": "DUP3", + "source": 34 + }, + { + "begin": 28564, + "end": 28573, + "name": "DUP14", + "source": 34 + }, + { + "begin": 28560, + "end": 28582, + "name": "ADD", + "source": 34 + }, + { + "begin": 28539, + "end": 28592, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 28539, + "end": 28592, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 28539, + "end": 28592, + "name": "tag", + "source": 34, + "value": "1439" + }, + { + "begin": 28539, + "end": 28592, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28529, + "end": 28592, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 28529, + "end": 28592, + "name": "POP", + "source": 34 + }, + { + "begin": 28483, + "end": 28602, + "name": "POP", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP9", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "POP", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP9", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "POP", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "name": "SWAP9", + "source": 34 + }, + { + "begin": 26640, + "end": 28609, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 28615, + "end": 29119, + "name": "tag", + "source": 34, + "value": "145" + }, + { + "begin": 28615, + "end": 29119, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28698, + "end": 28704, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 28706, + "end": 28712, + "name": "DUP1", + "source": 34 + }, + { + "begin": 28755, + "end": 28757, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 28743, + "end": 28752, + "name": "DUP4", + "source": 34 + }, + { + "begin": 28734, + "end": 28741, + "name": "DUP6", + "source": 34 + }, + { + "begin": 28730, + "end": 28753, + "name": "SUB", + "source": 34 + }, + { + "begin": 28726, + "end": 28758, + "name": "SLT", + "source": 34 + }, + { + "begin": 28723, + "end": 28842, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 28723, + "end": 28842, + "name": "PUSH [tag]", + "source": 34, + "value": "1441" + }, + { + "begin": 28723, + "end": 28842, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 28761, + "end": 28840, + "name": "PUSH [tag]", + "source": 34, + "value": "1442" + }, + { + "begin": 28761, + "end": 28840, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 28761, + "end": 28840, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 28761, + "end": 28840, + "name": "tag", + "source": 34, + "value": "1442" + }, + { + "begin": 28761, + "end": 28840, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28723, + "end": 28842, + "name": "tag", + "source": 34, + "value": "1441" + }, + { + "begin": 28723, + "end": 28842, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28881, + "end": 28882, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 28906, + "end": 28975, + "name": "PUSH [tag]", + "source": 34, + "value": "1443" + }, + { + "begin": 28967, + "end": 28974, + "name": "DUP6", + "source": 34 + }, + { + "begin": 28958, + "end": 28964, + "name": "DUP3", + "source": 34 + }, + { + "begin": 28947, + "end": 28956, + "name": "DUP7", + "source": 34 + }, + { + "begin": 28943, + "end": 28965, + "name": "ADD", + "source": 34 + }, + { + "begin": 28906, + "end": 28975, + "name": "PUSH [tag]", + "source": 34, + "value": "1067" + }, + { + "begin": 28906, + "end": 28975, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 28906, + "end": 28975, + "name": "tag", + "source": 34, + "value": "1443" + }, + { + "begin": 28906, + "end": 28975, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 28896, + "end": 28975, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 28896, + "end": 28975, + "name": "POP", + "source": 34 + }, + { + "begin": 28852, + "end": 28985, + "name": "POP", + "source": 34 + }, + { + "begin": 29024, + "end": 29026, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 29050, + "end": 29102, + "name": "PUSH [tag]", + "source": 34, + "value": "1444" + }, + { + "begin": 29094, + "end": 29101, + "name": "DUP6", + "source": 34 + }, + { + "begin": 29085, + "end": 29091, + "name": "DUP3", + "source": 34 + }, + { + "begin": 29074, + "end": 29083, + "name": "DUP7", + "source": 34 + }, + { + "begin": 29070, + "end": 29092, + "name": "ADD", + "source": 34 + }, + { + "begin": 29050, + "end": 29102, + "name": "PUSH [tag]", + "source": 34, + "value": "1050" + }, + { + "begin": 29050, + "end": 29102, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29050, + "end": 29102, + "name": "tag", + "source": 34, + "value": "1444" + }, + { + "begin": 29050, + "end": 29102, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29040, + "end": 29102, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 29040, + "end": 29102, + "name": "POP", + "source": 34 + }, + { + "begin": 28995, + "end": 29112, + "name": "POP", + "source": 34 + }, + { + "begin": 28615, + "end": 29119, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 28615, + "end": 29119, + "name": "POP", + "source": 34 + }, + { + "begin": 28615, + "end": 29119, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 28615, + "end": 29119, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 28615, + "end": 29119, + "name": "POP", + "source": 34 + }, + { + "begin": 28615, + "end": 29119, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29125, + "end": 29238, + "name": "tag", + "source": 34, + "value": "1077" + }, + { + "begin": 29125, + "end": 29238, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29179, + "end": 29186, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 29208, + "end": 29232, + "name": "PUSH [tag]", + "source": 34, + "value": "1446" + }, + { + "begin": 29226, + "end": 29231, + "name": "DUP3", + "source": 34 + }, + { + "begin": 29208, + "end": 29232, + "name": "PUSH [tag]", + "source": 34, + "value": "1028" + }, + { + "begin": 29208, + "end": 29232, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29208, + "end": 29232, + "name": "tag", + "source": 34, + "value": "1446" + }, + { + "begin": 29208, + "end": 29232, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29197, + "end": 29232, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 29197, + "end": 29232, + "name": "POP", + "source": 34 + }, + { + "begin": 29125, + "end": 29238, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 29125, + "end": 29238, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 29125, + "end": 29238, + "name": "POP", + "source": 34 + }, + { + "begin": 29125, + "end": 29238, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29244, + "end": 29400, + "name": "tag", + "source": 34, + "value": "1078" + }, + { + "begin": 29244, + "end": 29400, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29334, + "end": 29375, + "name": "PUSH [tag]", + "source": 34, + "value": "1448" + }, + { + "begin": 29369, + "end": 29374, + "name": "DUP2", + "source": 34 + }, + { + "begin": 29334, + "end": 29375, + "name": "PUSH [tag]", + "source": 34, + "value": "1077" + }, + { + "begin": 29334, + "end": 29375, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29334, + "end": 29375, + "name": "tag", + "source": 34, + "value": "1448" + }, + { + "begin": 29334, + "end": 29375, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29327, + "end": 29332, + "name": "DUP2", + "source": 34 + }, + { + "begin": 29324, + "end": 29376, + "name": "EQ", + "source": 34 + }, + { + "begin": 29314, + "end": 29394, + "name": "PUSH [tag]", + "source": 34, + "value": "1449" + }, + { + "begin": 29314, + "end": 29394, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 29390, + "end": 29391, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 29387, + "end": 29388, + "name": "DUP1", + "source": 34 + }, + { + "begin": 29380, + "end": 29392, + "name": "REVERT", + "source": 34 + }, + { + "begin": 29314, + "end": 29394, + "name": "tag", + "source": 34, + "value": "1449" + }, + { + "begin": 29314, + "end": 29394, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29244, + "end": 29400, + "name": "POP", + "source": 34 + }, + { + "begin": 29244, + "end": 29400, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29406, + "end": 29579, + "name": "tag", + "source": 34, + "value": "1079" + }, + { + "begin": 29406, + "end": 29579, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29469, + "end": 29474, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 29507, + "end": 29513, + "name": "DUP2", + "source": 34 + }, + { + "begin": 29494, + "end": 29514, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 29485, + "end": 29514, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 29485, + "end": 29514, + "name": "POP", + "source": 34 + }, + { + "begin": 29523, + "end": 29573, + "name": "PUSH [tag]", + "source": 34, + "value": "1451" + }, + { + "begin": 29567, + "end": 29572, + "name": "DUP2", + "source": 34 + }, + { + "begin": 29523, + "end": 29573, + "name": "PUSH [tag]", + "source": 34, + "value": "1078" + }, + { + "begin": 29523, + "end": 29573, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29523, + "end": 29573, + "name": "tag", + "source": 34, + "value": "1451" + }, + { + "begin": 29523, + "end": 29573, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29406, + "end": 29579, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 29406, + "end": 29579, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 29406, + "end": 29579, + "name": "POP", + "source": 34 + }, + { + "begin": 29406, + "end": 29579, + "name": "POP", + "source": 34 + }, + { + "begin": 29406, + "end": 29579, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29585, + "end": 29702, + "name": "tag", + "source": 34, + "value": "1080" + }, + { + "begin": 29585, + "end": 29702, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29694, + "end": 29695, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 29691, + "end": 29692, + "name": "DUP1", + "source": 34 + }, + { + "begin": 29684, + "end": 29696, + "name": "REVERT", + "source": 34 + }, + { + "begin": 29725, + "end": 30293, + "name": "tag", + "source": 34, + "value": "1081" + }, + { + "begin": 29725, + "end": 30293, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29798, + "end": 29806, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 29808, + "end": 29814, + "name": "DUP1", + "source": 34 + }, + { + "begin": 29858, + "end": 29861, + "name": "DUP4", + "source": 34 + }, + { + "begin": 29851, + "end": 29855, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 29843, + "end": 29849, + "name": "DUP5", + "source": 34 + }, + { + "begin": 29839, + "end": 29856, + "name": "ADD", + "source": 34 + }, + { + "begin": 29835, + "end": 29862, + "name": "SLT", + "source": 34 + }, + { + "begin": 29825, + "end": 29947, + "name": "PUSH [tag]", + "source": 34, + "value": "1454" + }, + { + "begin": 29825, + "end": 29947, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 29866, + "end": 29945, + "name": "PUSH [tag]", + "source": 34, + "value": "1455" + }, + { + "begin": 29866, + "end": 29945, + "name": "PUSH [tag]", + "source": 34, + "value": "1016" + }, + { + "begin": 29866, + "end": 29945, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 29866, + "end": 29945, + "name": "tag", + "source": 34, + "value": "1455" + }, + { + "begin": 29866, + "end": 29945, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29825, + "end": 29947, + "name": "tag", + "source": 34, + "value": "1454" + }, + { + "begin": 29825, + "end": 29947, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29979, + "end": 29985, + "name": "DUP3", + "source": 34 + }, + { + "begin": 29966, + "end": 29986, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 29956, + "end": 29986, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 29956, + "end": 29986, + "name": "POP", + "source": 34 + }, + { + "begin": 30009, + "end": 30027, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 30001, + "end": 30007, + "name": "DUP2", + "source": 34 + }, + { + "begin": 29998, + "end": 30028, + "name": "GT", + "source": 34 + }, + { + "begin": 29995, + "end": 30112, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 29995, + "end": 30112, + "name": "PUSH [tag]", + "source": 34, + "value": "1456" + }, + { + "begin": 29995, + "end": 30112, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 30031, + "end": 30110, + "name": "PUSH [tag]", + "source": 34, + "value": "1457" + }, + { + "begin": 30031, + "end": 30110, + "name": "PUSH [tag]", + "source": 34, + "value": "1080" + }, + { + "begin": 30031, + "end": 30110, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 30031, + "end": 30110, + "name": "tag", + "source": 34, + "value": "1457" + }, + { + "begin": 30031, + "end": 30110, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29995, + "end": 30112, + "name": "tag", + "source": 34, + "value": "1456" + }, + { + "begin": 29995, + "end": 30112, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30145, + "end": 30149, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 30137, + "end": 30143, + "name": "DUP4", + "source": 34 + }, + { + "begin": 30133, + "end": 30150, + "name": "ADD", + "source": 34 + }, + { + "begin": 30121, + "end": 30150, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 30121, + "end": 30150, + "name": "POP", + "source": 34 + }, + { + "begin": 30199, + "end": 30202, + "name": "DUP4", + "source": 34 + }, + { + "begin": 30191, + "end": 30195, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 30183, + "end": 30189, + "name": "DUP3", + "source": 34 + }, + { + "begin": 30179, + "end": 30196, + "name": "MUL", + "source": 34 + }, + { + "begin": 30169, + "end": 30177, + "name": "DUP4", + "source": 34 + }, + { + "begin": 30165, + "end": 30197, + "name": "ADD", + "source": 34 + }, + { + "begin": 30162, + "end": 30203, + "name": "GT", + "source": 34 + }, + { + "begin": 30159, + "end": 30287, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 30159, + "end": 30287, + "name": "PUSH [tag]", + "source": 34, + "value": "1458" + }, + { + "begin": 30159, + "end": 30287, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 30206, + "end": 30285, + "name": "PUSH [tag]", + "source": 34, + "value": "1459" + }, + { + "begin": 30206, + "end": 30285, + "name": "PUSH [tag]", + "source": 34, + "value": "1018" + }, + { + "begin": 30206, + "end": 30285, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 30206, + "end": 30285, + "name": "tag", + "source": 34, + "value": "1459" + }, + { + "begin": 30206, + "end": 30285, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30159, + "end": 30287, + "name": "tag", + "source": 34, + "value": "1458" + }, + { + "begin": 30159, + "end": 30287, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 29725, + "end": 30293, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 29725, + "end": 30293, + "name": "POP", + "source": 34 + }, + { + "begin": 29725, + "end": 30293, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 29725, + "end": 30293, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 29725, + "end": 30293, + "name": "POP", + "source": 34 + }, + { + "begin": 29725, + "end": 30293, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "tag", + "source": 34, + "value": "155" + }, + { + "begin": 30299, + "end": 31558, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30456, + "end": 30462, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 30464, + "end": 30470, + "name": "DUP1", + "source": 34 + }, + { + "begin": 30472, + "end": 30478, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 30480, + "end": 30486, + "name": "DUP1", + "source": 34 + }, + { + "begin": 30488, + "end": 30494, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 30496, + "end": 30502, + "name": "DUP1", + "source": 34 + }, + { + "begin": 30545, + "end": 30548, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 30533, + "end": 30542, + "name": "DUP8", + "source": 34 + }, + { + "begin": 30524, + "end": 30531, + "name": "DUP10", + "source": 34 + }, + { + "begin": 30520, + "end": 30543, + "name": "SUB", + "source": 34 + }, + { + "begin": 30516, + "end": 30549, + "name": "SLT", + "source": 34 + }, + { + "begin": 30513, + "end": 30633, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 30513, + "end": 30633, + "name": "PUSH [tag]", + "source": 34, + "value": "1461" + }, + { + "begin": 30513, + "end": 30633, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 30552, + "end": 30631, + "name": "PUSH [tag]", + "source": 34, + "value": "1462" + }, + { + "begin": 30552, + "end": 30631, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 30552, + "end": 30631, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 30552, + "end": 30631, + "name": "tag", + "source": 34, + "value": "1462" + }, + { + "begin": 30552, + "end": 30631, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30513, + "end": 30633, + "name": "tag", + "source": 34, + "value": "1461" + }, + { + "begin": 30513, + "end": 30633, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30672, + "end": 30673, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 30697, + "end": 30767, + "name": "PUSH [tag]", + "source": 34, + "value": "1463" + }, + { + "begin": 30759, + "end": 30766, + "name": "DUP10", + "source": 34 + }, + { + "begin": 30750, + "end": 30756, + "name": "DUP3", + "source": 34 + }, + { + "begin": 30739, + "end": 30748, + "name": "DUP11", + "source": 34 + }, + { + "begin": 30735, + "end": 30757, + "name": "ADD", + "source": 34 + }, + { + "begin": 30697, + "end": 30767, + "name": "PUSH [tag]", + "source": 34, + "value": "1079" + }, + { + "begin": 30697, + "end": 30767, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 30697, + "end": 30767, + "name": "tag", + "source": 34, + "value": "1463" + }, + { + "begin": 30697, + "end": 30767, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30687, + "end": 30767, + "name": "SWAP7", + "source": 34 + }, + { + "begin": 30687, + "end": 30767, + "name": "POP", + "source": 34 + }, + { + "begin": 30643, + "end": 30777, + "name": "POP", + "source": 34 + }, + { + "begin": 30816, + "end": 30818, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 30842, + "end": 30895, + "name": "PUSH [tag]", + "source": 34, + "value": "1464" + }, + { + "begin": 30887, + "end": 30894, + "name": "DUP10", + "source": 34 + }, + { + "begin": 30878, + "end": 30884, + "name": "DUP3", + "source": 34 + }, + { + "begin": 30867, + "end": 30876, + "name": "DUP11", + "source": 34 + }, + { + "begin": 30863, + "end": 30885, + "name": "ADD", + "source": 34 + }, + { + "begin": 30842, + "end": 30895, + "name": "PUSH [tag]", + "source": 34, + "value": "1040" + }, + { + "begin": 30842, + "end": 30895, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 30842, + "end": 30895, + "name": "tag", + "source": 34, + "value": "1464" + }, + { + "begin": 30842, + "end": 30895, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30832, + "end": 30895, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 30832, + "end": 30895, + "name": "POP", + "source": 34 + }, + { + "begin": 30787, + "end": 30905, + "name": "POP", + "source": 34 + }, + { + "begin": 30972, + "end": 30974, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 30961, + "end": 30970, + "name": "DUP8", + "source": 34 + }, + { + "begin": 30957, + "end": 30975, + "name": "ADD", + "source": 34 + }, + { + "begin": 30944, + "end": 30976, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 31003, + "end": 31021, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 30995, + "end": 31001, + "name": "DUP2", + "source": 34 + }, + { + "begin": 30992, + "end": 31022, + "name": "GT", + "source": 34 + }, + { + "begin": 30989, + "end": 31106, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 30989, + "end": 31106, + "name": "PUSH [tag]", + "source": 34, + "value": "1465" + }, + { + "begin": 30989, + "end": 31106, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 31025, + "end": 31104, + "name": "PUSH [tag]", + "source": 34, + "value": "1466" + }, + { + "begin": 31025, + "end": 31104, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 31025, + "end": 31104, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 31025, + "end": 31104, + "name": "tag", + "source": 34, + "value": "1466" + }, + { + "begin": 31025, + "end": 31104, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 30989, + "end": 31106, + "name": "tag", + "source": 34, + "value": "1465" + }, + { + "begin": 30989, + "end": 31106, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31138, + "end": 31218, + "name": "PUSH [tag]", + "source": 34, + "value": "1467" + }, + { + "begin": 31210, + "end": 31217, + "name": "DUP10", + "source": 34 + }, + { + "begin": 31201, + "end": 31207, + "name": "DUP3", + "source": 34 + }, + { + "begin": 31190, + "end": 31199, + "name": "DUP11", + "source": 34 + }, + { + "begin": 31186, + "end": 31208, + "name": "ADD", + "source": 34 + }, + { + "begin": 31138, + "end": 31218, + "name": "PUSH [tag]", + "source": 34, + "value": "1081" + }, + { + "begin": 31138, + "end": 31218, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 31138, + "end": 31218, + "name": "tag", + "source": 34, + "value": "1467" + }, + { + "begin": 31138, + "end": 31218, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31120, + "end": 31218, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 31120, + "end": 31218, + "name": "POP", + "source": 34 + }, + { + "begin": 31120, + "end": 31218, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 31120, + "end": 31218, + "name": "POP", + "source": 34 + }, + { + "begin": 30915, + "end": 31228, + "name": "POP", + "source": 34 + }, + { + "begin": 31295, + "end": 31297, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 31284, + "end": 31293, + "name": "DUP8", + "source": 34 + }, + { + "begin": 31280, + "end": 31298, + "name": "ADD", + "source": 34 + }, + { + "begin": 31267, + "end": 31299, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 31326, + "end": 31344, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 31318, + "end": 31324, + "name": "DUP2", + "source": 34 + }, + { + "begin": 31315, + "end": 31345, + "name": "GT", + "source": 34 + }, + { + "begin": 31312, + "end": 31429, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 31312, + "end": 31429, + "name": "PUSH [tag]", + "source": 34, + "value": "1468" + }, + { + "begin": 31312, + "end": 31429, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 31348, + "end": 31427, + "name": "PUSH [tag]", + "source": 34, + "value": "1469" + }, + { + "begin": 31348, + "end": 31427, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 31348, + "end": 31427, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 31348, + "end": 31427, + "name": "tag", + "source": 34, + "value": "1469" + }, + { + "begin": 31348, + "end": 31427, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31312, + "end": 31429, + "name": "tag", + "source": 34, + "value": "1468" + }, + { + "begin": 31312, + "end": 31429, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31461, + "end": 31541, + "name": "PUSH [tag]", + "source": 34, + "value": "1470" + }, + { + "begin": 31533, + "end": 31540, + "name": "DUP10", + "source": 34 + }, + { + "begin": 31524, + "end": 31530, + "name": "DUP3", + "source": 34 + }, + { + "begin": 31513, + "end": 31522, + "name": "DUP11", + "source": 34 + }, + { + "begin": 31509, + "end": 31531, + "name": "ADD", + "source": 34 + }, + { + "begin": 31461, + "end": 31541, + "name": "PUSH [tag]", + "source": 34, + "value": "1081" + }, + { + "begin": 31461, + "end": 31541, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 31461, + "end": 31541, + "name": "tag", + "source": 34, + "value": "1470" + }, + { + "begin": 31461, + "end": 31541, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31443, + "end": 31541, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 31443, + "end": 31541, + "name": "POP", + "source": 34 + }, + { + "begin": 31443, + "end": 31541, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 31443, + "end": 31541, + "name": "POP", + "source": 34 + }, + { + "begin": 31238, + "end": 31551, + "name": "POP", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "POP", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "POP", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 30299, + "end": 31558, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 31564, + "end": 32070, + "name": "tag", + "source": 34, + "value": "160" + }, + { + "begin": 31564, + "end": 32070, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31648, + "end": 31654, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 31656, + "end": 31662, + "name": "DUP1", + "source": 34 + }, + { + "begin": 31705, + "end": 31707, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 31693, + "end": 31702, + "name": "DUP4", + "source": 34 + }, + { + "begin": 31684, + "end": 31691, + "name": "DUP6", + "source": 34 + }, + { + "begin": 31680, + "end": 31703, + "name": "SUB", + "source": 34 + }, + { + "begin": 31676, + "end": 31708, + "name": "SLT", + "source": 34 + }, + { + "begin": 31673, + "end": 31792, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 31673, + "end": 31792, + "name": "PUSH [tag]", + "source": 34, + "value": "1472" + }, + { + "begin": 31673, + "end": 31792, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 31711, + "end": 31790, + "name": "PUSH [tag]", + "source": 34, + "value": "1473" + }, + { + "begin": 31711, + "end": 31790, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 31711, + "end": 31790, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 31711, + "end": 31790, + "name": "tag", + "source": 34, + "value": "1473" + }, + { + "begin": 31711, + "end": 31790, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31673, + "end": 31792, + "name": "tag", + "source": 34, + "value": "1472" + }, + { + "begin": 31673, + "end": 31792, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31831, + "end": 31832, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 31856, + "end": 31925, + "name": "PUSH [tag]", + "source": 34, + "value": "1474" + }, + { + "begin": 31917, + "end": 31924, + "name": "DUP6", + "source": 34 + }, + { + "begin": 31908, + "end": 31914, + "name": "DUP3", + "source": 34 + }, + { + "begin": 31897, + "end": 31906, + "name": "DUP7", + "source": 34 + }, + { + "begin": 31893, + "end": 31915, + "name": "ADD", + "source": 34 + }, + { + "begin": 31856, + "end": 31925, + "name": "PUSH [tag]", + "source": 34, + "value": "1067" + }, + { + "begin": 31856, + "end": 31925, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 31856, + "end": 31925, + "name": "tag", + "source": 34, + "value": "1474" + }, + { + "begin": 31856, + "end": 31925, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31846, + "end": 31925, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 31846, + "end": 31925, + "name": "POP", + "source": 34 + }, + { + "begin": 31802, + "end": 31935, + "name": "POP", + "source": 34 + }, + { + "begin": 31974, + "end": 31976, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 32000, + "end": 32053, + "name": "PUSH [tag]", + "source": 34, + "value": "1475" + }, + { + "begin": 32045, + "end": 32052, + "name": "DUP6", + "source": 34 + }, + { + "begin": 32036, + "end": 32042, + "name": "DUP3", + "source": 34 + }, + { + "begin": 32025, + "end": 32034, + "name": "DUP7", + "source": 34 + }, + { + "begin": 32021, + "end": 32043, + "name": "ADD", + "source": 34 + }, + { + "begin": 32000, + "end": 32053, + "name": "PUSH [tag]", + "source": 34, + "value": "1010" + }, + { + "begin": 32000, + "end": 32053, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32000, + "end": 32053, + "name": "tag", + "source": 34, + "value": "1475" + }, + { + "begin": 32000, + "end": 32053, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 31990, + "end": 32053, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 31990, + "end": 32053, + "name": "POP", + "source": 34 + }, + { + "begin": 31945, + "end": 32063, + "name": "POP", + "source": 34 + }, + { + "begin": 31564, + "end": 32070, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 31564, + "end": 32070, + "name": "POP", + "source": 34 + }, + { + "begin": 31564, + "end": 32070, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 31564, + "end": 32070, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 31564, + "end": 32070, + "name": "POP", + "source": 34 + }, + { + "begin": 31564, + "end": 32070, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32076, + "end": 32191, + "name": "tag", + "source": 34, + "value": "1082" + }, + { + "begin": 32076, + "end": 32191, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32161, + "end": 32184, + "name": "PUSH [tag]", + "source": 34, + "value": "1477" + }, + { + "begin": 32178, + "end": 32183, + "name": "DUP2", + "source": 34 + }, + { + "begin": 32161, + "end": 32184, + "name": "PUSH [tag]", + "source": 34, + "value": "1048" + }, + { + "begin": 32161, + "end": 32184, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32161, + "end": 32184, + "name": "tag", + "source": 34, + "value": "1477" + }, + { + "begin": 32161, + "end": 32184, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32156, + "end": 32159, + "name": "DUP3", + "source": 34 + }, + { + "begin": 32149, + "end": 32185, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 32076, + "end": 32191, + "name": "POP", + "source": 34 + }, + { + "begin": 32076, + "end": 32191, + "name": "POP", + "source": 34 + }, + { + "begin": 32076, + "end": 32191, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32197, + "end": 32415, + "name": "tag", + "source": 34, + "value": "163" + }, + { + "begin": 32197, + "end": 32415, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32288, + "end": 32292, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 32326, + "end": 32328, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 32315, + "end": 32324, + "name": "DUP3", + "source": 34 + }, + { + "begin": 32311, + "end": 32329, + "name": "ADD", + "source": 34 + }, + { + "begin": 32303, + "end": 32329, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 32303, + "end": 32329, + "name": "POP", + "source": 34 + }, + { + "begin": 32339, + "end": 32408, + "name": "PUSH [tag]", + "source": 34, + "value": "1479" + }, + { + "begin": 32405, + "end": 32406, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 32394, + "end": 32403, + "name": "DUP4", + "source": 34 + }, + { + "begin": 32390, + "end": 32407, + "name": "ADD", + "source": 34 + }, + { + "begin": 32381, + "end": 32387, + "name": "DUP5", + "source": 34 + }, + { + "begin": 32339, + "end": 32408, + "name": "PUSH [tag]", + "source": 34, + "value": "1082" + }, + { + "begin": 32339, + "end": 32408, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32339, + "end": 32408, + "name": "tag", + "source": 34, + "value": "1479" + }, + { + "begin": 32339, + "end": 32408, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32197, + "end": 32415, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 32197, + "end": 32415, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 32197, + "end": 32415, + "name": "POP", + "source": 34 + }, + { + "begin": 32197, + "end": 32415, + "name": "POP", + "source": 34 + }, + { + "begin": 32197, + "end": 32415, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32421, + "end": 32601, + "name": "tag", + "source": 34, + "value": "1083" + }, + { + "begin": 32421, + "end": 32601, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32469, + "end": 32546, + "name": "PUSH", + "source": 34, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 32466, + "end": 32467, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 32459, + "end": 32547, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 32566, + "end": 32570, + "name": "PUSH", + "source": 34, + "value": "11" + }, + { + "begin": 32563, + "end": 32564, + "name": "PUSH", + "source": 34, + "value": "4" + }, + { + "begin": 32556, + "end": 32571, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 32590, + "end": 32594, + "name": "PUSH", + "source": 34, + "value": "24" + }, + { + "begin": 32587, + "end": 32588, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 32580, + "end": 32595, + "name": "REVERT", + "source": 34 + }, + { + "begin": 32607, + "end": 32798, + "name": "tag", + "source": 34, + "value": "171" + }, + { + "begin": 32607, + "end": 32798, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32647, + "end": 32650, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 32666, + "end": 32686, + "name": "PUSH [tag]", + "source": 34, + "value": "1482" + }, + { + "begin": 32684, + "end": 32685, + "name": "DUP3", + "source": 34 + }, + { + "begin": 32666, + "end": 32686, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 32666, + "end": 32686, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32666, + "end": 32686, + "name": "tag", + "source": 34, + "value": "1482" + }, + { + "begin": 32666, + "end": 32686, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32661, + "end": 32686, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 32661, + "end": 32686, + "name": "POP", + "source": 34 + }, + { + "begin": 32700, + "end": 32720, + "name": "PUSH [tag]", + "source": 34, + "value": "1483" + }, + { + "begin": 32718, + "end": 32719, + "name": "DUP4", + "source": 34 + }, + { + "begin": 32700, + "end": 32720, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 32700, + "end": 32720, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32700, + "end": 32720, + "name": "tag", + "source": 34, + "value": "1483" + }, + { + "begin": 32700, + "end": 32720, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32695, + "end": 32720, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 32695, + "end": 32720, + "name": "POP", + "source": 34 + }, + { + "begin": 32743, + "end": 32744, + "name": "DUP3", + "source": 34 + }, + { + "begin": 32740, + "end": 32741, + "name": "DUP3", + "source": 34 + }, + { + "begin": 32736, + "end": 32745, + "name": "ADD", + "source": 34 + }, + { + "begin": 32729, + "end": 32745, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 32729, + "end": 32745, + "name": "POP", + "source": 34 + }, + { + "begin": 32764, + "end": 32767, + "name": "DUP1", + "source": 34 + }, + { + "begin": 32761, + "end": 32762, + "name": "DUP3", + "source": 34 + }, + { + "begin": 32758, + "end": 32768, + "name": "GT", + "source": 34 + }, + { + "begin": 32755, + "end": 32791, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 32755, + "end": 32791, + "name": "PUSH [tag]", + "source": 34, + "value": "1484" + }, + { + "begin": 32755, + "end": 32791, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 32771, + "end": 32789, + "name": "PUSH [tag]", + "source": 34, + "value": "1485" + }, + { + "begin": 32771, + "end": 32789, + "name": "PUSH [tag]", + "source": 34, + "value": "1083" + }, + { + "begin": 32771, + "end": 32789, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32771, + "end": 32789, + "name": "tag", + "source": 34, + "value": "1485" + }, + { + "begin": 32771, + "end": 32789, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32755, + "end": 32791, + "name": "tag", + "source": 34, + "value": "1484" + }, + { + "begin": 32755, + "end": 32791, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32607, + "end": 32798, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 32607, + "end": 32798, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 32607, + "end": 32798, + "name": "POP", + "source": 34 + }, + { + "begin": 32607, + "end": 32798, + "name": "POP", + "source": 34 + }, + { + "begin": 32607, + "end": 32798, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 32804, + "end": 32984, + "name": "tag", + "source": 34, + "value": "176" + }, + { + "begin": 32804, + "end": 32984, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 32852, + "end": 32929, + "name": "PUSH", + "source": 34, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 32849, + "end": 32850, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 32842, + "end": 32930, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 32949, + "end": 32953, + "name": "PUSH", + "source": 34, + "value": "32" + }, + { + "begin": 32946, + "end": 32947, + "name": "PUSH", + "source": 34, + "value": "4" + }, + { + "begin": 32939, + "end": 32954, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 32973, + "end": 32977, + "name": "PUSH", + "source": 34, + "value": "24" + }, + { + "begin": 32970, + "end": 32971, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 32963, + "end": 32978, + "name": "REVERT", + "source": 34 + }, + { + "begin": 32990, + "end": 33108, + "name": "tag", + "source": 34, + "value": "1084" + }, + { + "begin": 32990, + "end": 33108, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33077, + "end": 33101, + "name": "PUSH [tag]", + "source": 34, + "value": "1488" + }, + { + "begin": 33095, + "end": 33100, + "name": "DUP2", + "source": 34 + }, + { + "begin": 33077, + "end": 33101, + "name": "PUSH [tag]", + "source": 34, + "value": "1028" + }, + { + "begin": 33077, + "end": 33101, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33077, + "end": 33101, + "name": "tag", + "source": 34, + "value": "1488" + }, + { + "begin": 33077, + "end": 33101, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33072, + "end": 33075, + "name": "DUP3", + "source": 34 + }, + { + "begin": 33065, + "end": 33102, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 32990, + "end": 33108, + "name": "POP", + "source": 34 + }, + { + "begin": 32990, + "end": 33108, + "name": "POP", + "source": 34 + }, + { + "begin": 32990, + "end": 33108, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33114, + "end": 33336, + "name": "tag", + "source": 34, + "value": "181" + }, + { + "begin": 33114, + "end": 33336, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33207, + "end": 33211, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 33245, + "end": 33247, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 33234, + "end": 33243, + "name": "DUP3", + "source": 34 + }, + { + "begin": 33230, + "end": 33248, + "name": "ADD", + "source": 34 + }, + { + "begin": 33222, + "end": 33248, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 33222, + "end": 33248, + "name": "POP", + "source": 34 + }, + { + "begin": 33258, + "end": 33329, + "name": "PUSH [tag]", + "source": 34, + "value": "1490" + }, + { + "begin": 33326, + "end": 33327, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 33315, + "end": 33324, + "name": "DUP4", + "source": 34 + }, + { + "begin": 33311, + "end": 33328, + "name": "ADD", + "source": 34 + }, + { + "begin": 33302, + "end": 33308, + "name": "DUP5", + "source": 34 + }, + { + "begin": 33258, + "end": 33329, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 33258, + "end": 33329, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33258, + "end": 33329, + "name": "tag", + "source": 34, + "value": "1490" + }, + { + "begin": 33258, + "end": 33329, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33114, + "end": 33336, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 33114, + "end": 33336, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 33114, + "end": 33336, + "name": "POP", + "source": 34 + }, + { + "begin": 33114, + "end": 33336, + "name": "POP", + "source": 34 + }, + { + "begin": 33114, + "end": 33336, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33342, + "end": 33485, + "name": "tag", + "source": 34, + "value": "1085" + }, + { + "begin": 33342, + "end": 33485, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33399, + "end": 33404, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 33430, + "end": 33436, + "name": "DUP2", + "source": 34 + }, + { + "begin": 33424, + "end": 33437, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 33415, + "end": 33437, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 33415, + "end": 33437, + "name": "POP", + "source": 34 + }, + { + "begin": 33446, + "end": 33479, + "name": "PUSH [tag]", + "source": 34, + "value": "1492" + }, + { + "begin": 33473, + "end": 33478, + "name": "DUP2", + "source": 34 + }, + { + "begin": 33446, + "end": 33479, + "name": "PUSH [tag]", + "source": 34, + "value": "1009" + }, + { + "begin": 33446, + "end": 33479, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33446, + "end": 33479, + "name": "tag", + "source": 34, + "value": "1492" + }, + { + "begin": 33446, + "end": 33479, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33342, + "end": 33485, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 33342, + "end": 33485, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 33342, + "end": 33485, + "name": "POP", + "source": 34 + }, + { + "begin": 33342, + "end": 33485, + "name": "POP", + "source": 34 + }, + { + "begin": 33342, + "end": 33485, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33491, + "end": 33842, + "name": "tag", + "source": 34, + "value": "188" + }, + { + "begin": 33491, + "end": 33842, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33561, + "end": 33567, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 33610, + "end": 33612, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 33598, + "end": 33607, + "name": "DUP3", + "source": 34 + }, + { + "begin": 33589, + "end": 33596, + "name": "DUP5", + "source": 34 + }, + { + "begin": 33585, + "end": 33608, + "name": "SUB", + "source": 34 + }, + { + "begin": 33581, + "end": 33613, + "name": "SLT", + "source": 34 + }, + { + "begin": 33578, + "end": 33697, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 33578, + "end": 33697, + "name": "PUSH [tag]", + "source": 34, + "value": "1494" + }, + { + "begin": 33578, + "end": 33697, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 33616, + "end": 33695, + "name": "PUSH [tag]", + "source": 34, + "value": "1495" + }, + { + "begin": 33616, + "end": 33695, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 33616, + "end": 33695, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33616, + "end": 33695, + "name": "tag", + "source": 34, + "value": "1495" + }, + { + "begin": 33616, + "end": 33695, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33578, + "end": 33697, + "name": "tag", + "source": 34, + "value": "1494" + }, + { + "begin": 33578, + "end": 33697, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33736, + "end": 33737, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 33761, + "end": 33825, + "name": "PUSH [tag]", + "source": 34, + "value": "1496" + }, + { + "begin": 33817, + "end": 33824, + "name": "DUP5", + "source": 34 + }, + { + "begin": 33808, + "end": 33814, + "name": "DUP3", + "source": 34 + }, + { + "begin": 33797, + "end": 33806, + "name": "DUP6", + "source": 34 + }, + { + "begin": 33793, + "end": 33815, + "name": "ADD", + "source": 34 + }, + { + "begin": 33761, + "end": 33825, + "name": "PUSH [tag]", + "source": 34, + "value": "1085" + }, + { + "begin": 33761, + "end": 33825, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33761, + "end": 33825, + "name": "tag", + "source": 34, + "value": "1496" + }, + { + "begin": 33761, + "end": 33825, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33751, + "end": 33825, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 33751, + "end": 33825, + "name": "POP", + "source": 34 + }, + { + "begin": 33707, + "end": 33835, + "name": "POP", + "source": 34 + }, + { + "begin": 33491, + "end": 33842, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 33491, + "end": 33842, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 33491, + "end": 33842, + "name": "POP", + "source": 34 + }, + { + "begin": 33491, + "end": 33842, + "name": "POP", + "source": 34 + }, + { + "begin": 33491, + "end": 33842, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33848, + "end": 34042, + "name": "tag", + "source": 34, + "value": "202" + }, + { + "begin": 33848, + "end": 34042, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33888, + "end": 33892, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 33908, + "end": 33928, + "name": "PUSH [tag]", + "source": 34, + "value": "1498" + }, + { + "begin": 33926, + "end": 33927, + "name": "DUP3", + "source": 34 + }, + { + "begin": 33908, + "end": 33928, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 33908, + "end": 33928, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33908, + "end": 33928, + "name": "tag", + "source": 34, + "value": "1498" + }, + { + "begin": 33908, + "end": 33928, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33903, + "end": 33928, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 33903, + "end": 33928, + "name": "POP", + "source": 34 + }, + { + "begin": 33942, + "end": 33962, + "name": "PUSH [tag]", + "source": 34, + "value": "1499" + }, + { + "begin": 33960, + "end": 33961, + "name": "DUP4", + "source": 34 + }, + { + "begin": 33942, + "end": 33962, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 33942, + "end": 33962, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 33942, + "end": 33962, + "name": "tag", + "source": 34, + "value": "1499" + }, + { + "begin": 33942, + "end": 33962, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33937, + "end": 33962, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 33937, + "end": 33962, + "name": "POP", + "source": 34 + }, + { + "begin": 33986, + "end": 33987, + "name": "DUP3", + "source": 34 + }, + { + "begin": 33983, + "end": 33984, + "name": "DUP3", + "source": 34 + }, + { + "begin": 33979, + "end": 33988, + "name": "SUB", + "source": 34 + }, + { + "begin": 33971, + "end": 33988, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 33971, + "end": 33988, + "name": "POP", + "source": 34 + }, + { + "begin": 34010, + "end": 34011, + "name": "DUP2", + "source": 34 + }, + { + "begin": 34004, + "end": 34008, + "name": "DUP2", + "source": 34 + }, + { + "begin": 34001, + "end": 34012, + "name": "GT", + "source": 34 + }, + { + "begin": 33998, + "end": 34035, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 33998, + "end": 34035, + "name": "PUSH [tag]", + "source": 34, + "value": "1500" + }, + { + "begin": 33998, + "end": 34035, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 34015, + "end": 34033, + "name": "PUSH [tag]", + "source": 34, + "value": "1501" + }, + { + "begin": 34015, + "end": 34033, + "name": "PUSH [tag]", + "source": 34, + "value": "1083" + }, + { + "begin": 34015, + "end": 34033, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34015, + "end": 34033, + "name": "tag", + "source": 34, + "value": "1501" + }, + { + "begin": 34015, + "end": 34033, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33998, + "end": 34035, + "name": "tag", + "source": 34, + "value": "1500" + }, + { + "begin": 33998, + "end": 34035, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 33848, + "end": 34042, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 33848, + "end": 34042, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 33848, + "end": 34042, + "name": "POP", + "source": 34 + }, + { + "begin": 33848, + "end": 34042, + "name": "POP", + "source": 34 + }, + { + "begin": 33848, + "end": 34042, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34048, + "end": 34191, + "name": "tag", + "source": 34, + "value": "1086" + }, + { + "begin": 34048, + "end": 34191, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34105, + "end": 34110, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 34136, + "end": 34142, + "name": "DUP2", + "source": 34 + }, + { + "begin": 34130, + "end": 34143, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 34121, + "end": 34143, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 34121, + "end": 34143, + "name": "POP", + "source": 34 + }, + { + "begin": 34152, + "end": 34185, + "name": "PUSH [tag]", + "source": 34, + "value": "1503" + }, + { + "begin": 34179, + "end": 34184, + "name": "DUP2", + "source": 34 + }, + { + "begin": 34152, + "end": 34185, + "name": "PUSH [tag]", + "source": 34, + "value": "1039" + }, + { + "begin": 34152, + "end": 34185, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34152, + "end": 34185, + "name": "tag", + "source": 34, + "value": "1503" + }, + { + "begin": 34152, + "end": 34185, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34048, + "end": 34191, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 34048, + "end": 34191, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 34048, + "end": 34191, + "name": "POP", + "source": 34 + }, + { + "begin": 34048, + "end": 34191, + "name": "POP", + "source": 34 + }, + { + "begin": 34048, + "end": 34191, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34197, + "end": 34548, + "name": "tag", + "source": 34, + "value": "335" + }, + { + "begin": 34197, + "end": 34548, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34267, + "end": 34273, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 34316, + "end": 34318, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 34304, + "end": 34313, + "name": "DUP3", + "source": 34 + }, + { + "begin": 34295, + "end": 34302, + "name": "DUP5", + "source": 34 + }, + { + "begin": 34291, + "end": 34314, + "name": "SUB", + "source": 34 + }, + { + "begin": 34287, + "end": 34319, + "name": "SLT", + "source": 34 + }, + { + "begin": 34284, + "end": 34403, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 34284, + "end": 34403, + "name": "PUSH [tag]", + "source": 34, + "value": "1505" + }, + { + "begin": 34284, + "end": 34403, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 34322, + "end": 34401, + "name": "PUSH [tag]", + "source": 34, + "value": "1506" + }, + { + "begin": 34322, + "end": 34401, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 34322, + "end": 34401, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34322, + "end": 34401, + "name": "tag", + "source": 34, + "value": "1506" + }, + { + "begin": 34322, + "end": 34401, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34284, + "end": 34403, + "name": "tag", + "source": 34, + "value": "1505" + }, + { + "begin": 34284, + "end": 34403, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34442, + "end": 34443, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 34467, + "end": 34531, + "name": "PUSH [tag]", + "source": 34, + "value": "1507" + }, + { + "begin": 34523, + "end": 34530, + "name": "DUP5", + "source": 34 + }, + { + "begin": 34514, + "end": 34520, + "name": "DUP3", + "source": 34 + }, + { + "begin": 34503, + "end": 34512, + "name": "DUP6", + "source": 34 + }, + { + "begin": 34499, + "end": 34521, + "name": "ADD", + "source": 34 + }, + { + "begin": 34467, + "end": 34531, + "name": "PUSH [tag]", + "source": 34, + "value": "1086" + }, + { + "begin": 34467, + "end": 34531, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34467, + "end": 34531, + "name": "tag", + "source": 34, + "value": "1507" + }, + { + "begin": 34467, + "end": 34531, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34457, + "end": 34531, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 34457, + "end": 34531, + "name": "POP", + "source": 34 + }, + { + "begin": 34413, + "end": 34541, + "name": "POP", + "source": 34 + }, + { + "begin": 34197, + "end": 34548, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 34197, + "end": 34548, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 34197, + "end": 34548, + "name": "POP", + "source": 34 + }, + { + "begin": 34197, + "end": 34548, + "name": "POP", + "source": 34 + }, + { + "begin": 34197, + "end": 34548, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34554, + "end": 34694, + "name": "tag", + "source": 34, + "value": "1087" + }, + { + "begin": 34554, + "end": 34694, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34618, + "end": 34627, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 34651, + "end": 34688, + "name": "PUSH [tag]", + "source": 34, + "value": "1509" + }, + { + "begin": 34682, + "end": 34687, + "name": "DUP3", + "source": 34 + }, + { + "begin": 34651, + "end": 34688, + "name": "PUSH [tag]", + "source": 34, + "value": "1056" + }, + { + "begin": 34651, + "end": 34688, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34651, + "end": 34688, + "name": "tag", + "source": 34, + "value": "1509" + }, + { + "begin": 34651, + "end": 34688, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34638, + "end": 34688, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 34638, + "end": 34688, + "name": "POP", + "source": 34 + }, + { + "begin": 34554, + "end": 34694, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 34554, + "end": 34694, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 34554, + "end": 34694, + "name": "POP", + "source": 34 + }, + { + "begin": 34554, + "end": 34694, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34700, + "end": 34859, + "name": "tag", + "source": 34, + "value": "1088" + }, + { + "begin": 34700, + "end": 34859, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34801, + "end": 34852, + "name": "PUSH [tag]", + "source": 34, + "value": "1511" + }, + { + "begin": 34846, + "end": 34851, + "name": "DUP2", + "source": 34 + }, + { + "begin": 34801, + "end": 34852, + "name": "PUSH [tag]", + "source": 34, + "value": "1087" + }, + { + "begin": 34801, + "end": 34852, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34801, + "end": 34852, + "name": "tag", + "source": 34, + "value": "1511" + }, + { + "begin": 34801, + "end": 34852, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34796, + "end": 34799, + "name": "DUP3", + "source": 34 + }, + { + "begin": 34789, + "end": 34853, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 34700, + "end": 34859, + "name": "POP", + "source": 34 + }, + { + "begin": 34700, + "end": 34859, + "name": "POP", + "source": 34 + }, + { + "begin": 34700, + "end": 34859, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34865, + "end": 34980, + "name": "tag", + "source": 34, + "value": "1089" + }, + { + "begin": 34865, + "end": 34980, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34950, + "end": 34973, + "name": "PUSH [tag]", + "source": 34, + "value": "1513" + }, + { + "begin": 34967, + "end": 34972, + "name": "DUP2", + "source": 34 + }, + { + "begin": 34950, + "end": 34973, + "name": "PUSH [tag]", + "source": 34, + "value": "1051" + }, + { + "begin": 34950, + "end": 34973, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34950, + "end": 34973, + "name": "tag", + "source": 34, + "value": "1513" + }, + { + "begin": 34950, + "end": 34973, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34945, + "end": 34948, + "name": "DUP3", + "source": 34 + }, + { + "begin": 34938, + "end": 34974, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 34865, + "end": 34980, + "name": "POP", + "source": 34 + }, + { + "begin": 34865, + "end": 34980, + "name": "POP", + "source": 34 + }, + { + "begin": 34865, + "end": 34980, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "tag", + "source": 34, + "value": "353" + }, + { + "begin": 34986, + "end": 35587, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35187, + "end": 35191, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 35225, + "end": 35228, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 35214, + "end": 35223, + "name": "DUP3", + "source": 34 + }, + { + "begin": 35210, + "end": 35229, + "name": "ADD", + "source": 34 + }, + { + "begin": 35202, + "end": 35229, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 35202, + "end": 35229, + "name": "POP", + "source": 34 + }, + { + "begin": 35239, + "end": 35324, + "name": "PUSH [tag]", + "source": 34, + "value": "1515" + }, + { + "begin": 35321, + "end": 35322, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 35310, + "end": 35319, + "name": "DUP4", + "source": 34 + }, + { + "begin": 35306, + "end": 35323, + "name": "ADD", + "source": 34 + }, + { + "begin": 35297, + "end": 35303, + "name": "DUP8", + "source": 34 + }, + { + "begin": 35239, + "end": 35324, + "name": "PUSH [tag]", + "source": 34, + "value": "1088" + }, + { + "begin": 35239, + "end": 35324, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35239, + "end": 35324, + "name": "tag", + "source": 34, + "value": "1515" + }, + { + "begin": 35239, + "end": 35324, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35334, + "end": 35420, + "name": "PUSH [tag]", + "source": 34, + "value": "1516" + }, + { + "begin": 35416, + "end": 35418, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 35405, + "end": 35414, + "name": "DUP4", + "source": 34 + }, + { + "begin": 35401, + "end": 35419, + "name": "ADD", + "source": 34 + }, + { + "begin": 35392, + "end": 35398, + "name": "DUP7", + "source": 34 + }, + { + "begin": 35334, + "end": 35420, + "name": "PUSH [tag]", + "source": 34, + "value": "1088" + }, + { + "begin": 35334, + "end": 35420, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35334, + "end": 35420, + "name": "tag", + "source": 34, + "value": "1516" + }, + { + "begin": 35334, + "end": 35420, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35430, + "end": 35500, + "name": "PUSH [tag]", + "source": 34, + "value": "1517" + }, + { + "begin": 35496, + "end": 35498, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 35485, + "end": 35494, + "name": "DUP4", + "source": 34 + }, + { + "begin": 35481, + "end": 35499, + "name": "ADD", + "source": 34 + }, + { + "begin": 35472, + "end": 35478, + "name": "DUP6", + "source": 34 + }, + { + "begin": 35430, + "end": 35500, + "name": "PUSH [tag]", + "source": 34, + "value": "1082" + }, + { + "begin": 35430, + "end": 35500, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35430, + "end": 35500, + "name": "tag", + "source": 34, + "value": "1517" + }, + { + "begin": 35430, + "end": 35500, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35510, + "end": 35580, + "name": "PUSH [tag]", + "source": 34, + "value": "1518" + }, + { + "begin": 35576, + "end": 35578, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 35565, + "end": 35574, + "name": "DUP4", + "source": 34 + }, + { + "begin": 35561, + "end": 35579, + "name": "ADD", + "source": 34 + }, + { + "begin": 35552, + "end": 35558, + "name": "DUP5", + "source": 34 + }, + { + "begin": 35510, + "end": 35580, + "name": "PUSH [tag]", + "source": 34, + "value": "1089" + }, + { + "begin": 35510, + "end": 35580, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35510, + "end": 35580, + "name": "tag", + "source": 34, + "value": "1518" + }, + { + "begin": 35510, + "end": 35580, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "POP", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "POP", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "POP", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "POP", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "name": "POP", + "source": 34 + }, + { + "begin": 34986, + "end": 35587, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35593, + "end": 35768, + "name": "tag", + "source": 34, + "value": "1090" + }, + { + "begin": 35593, + "end": 35768, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35666, + "end": 35671, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 35697, + "end": 35703, + "name": "DUP2", + "source": 34 + }, + { + "begin": 35691, + "end": 35704, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 35682, + "end": 35704, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 35682, + "end": 35704, + "name": "POP", + "source": 34 + }, + { + "begin": 35713, + "end": 35762, + "name": "PUSH [tag]", + "source": 34, + "value": "1520" + }, + { + "begin": 35756, + "end": 35761, + "name": "DUP2", + "source": 34 + }, + { + "begin": 35713, + "end": 35762, + "name": "PUSH [tag]", + "source": 34, + "value": "1066" + }, + { + "begin": 35713, + "end": 35762, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35713, + "end": 35762, + "name": "tag", + "source": 34, + "value": "1520" + }, + { + "begin": 35713, + "end": 35762, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35593, + "end": 35768, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 35593, + "end": 35768, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 35593, + "end": 35768, + "name": "POP", + "source": 34 + }, + { + "begin": 35593, + "end": 35768, + "name": "POP", + "source": 34 + }, + { + "begin": 35593, + "end": 35768, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35774, + "end": 36157, + "name": "tag", + "source": 34, + "value": "357" + }, + { + "begin": 35774, + "end": 36157, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35860, + "end": 35866, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 35909, + "end": 35911, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 35897, + "end": 35906, + "name": "DUP3", + "source": 34 + }, + { + "begin": 35888, + "end": 35895, + "name": "DUP5", + "source": 34 + }, + { + "begin": 35884, + "end": 35907, + "name": "SUB", + "source": 34 + }, + { + "begin": 35880, + "end": 35912, + "name": "SLT", + "source": 34 + }, + { + "begin": 35877, + "end": 35996, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 35877, + "end": 35996, + "name": "PUSH [tag]", + "source": 34, + "value": "1522" + }, + { + "begin": 35877, + "end": 35996, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 35915, + "end": 35994, + "name": "PUSH [tag]", + "source": 34, + "value": "1523" + }, + { + "begin": 35915, + "end": 35994, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 35915, + "end": 35994, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 35915, + "end": 35994, + "name": "tag", + "source": 34, + "value": "1523" + }, + { + "begin": 35915, + "end": 35994, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 35877, + "end": 35996, + "name": "tag", + "source": 34, + "value": "1522" + }, + { + "begin": 35877, + "end": 35996, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36035, + "end": 36036, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 36060, + "end": 36140, + "name": "PUSH [tag]", + "source": 34, + "value": "1524" + }, + { + "begin": 36132, + "end": 36139, + "name": "DUP5", + "source": 34 + }, + { + "begin": 36123, + "end": 36129, + "name": "DUP3", + "source": 34 + }, + { + "begin": 36112, + "end": 36121, + "name": "DUP6", + "source": 34 + }, + { + "begin": 36108, + "end": 36130, + "name": "ADD", + "source": 34 + }, + { + "begin": 36060, + "end": 36140, + "name": "PUSH [tag]", + "source": 34, + "value": "1090" + }, + { + "begin": 36060, + "end": 36140, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36060, + "end": 36140, + "name": "tag", + "source": 34, + "value": "1524" + }, + { + "begin": 36060, + "end": 36140, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36050, + "end": 36140, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 36050, + "end": 36140, + "name": "POP", + "source": 34 + }, + { + "begin": 36006, + "end": 36150, + "name": "POP", + "source": 34 + }, + { + "begin": 35774, + "end": 36157, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 35774, + "end": 36157, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 35774, + "end": 36157, + "name": "POP", + "source": 34 + }, + { + "begin": 35774, + "end": 36157, + "name": "POP", + "source": 34 + }, + { + "begin": 35774, + "end": 36157, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36163, + "end": 36248, + "name": "tag", + "source": 34, + "value": "1091" + }, + { + "begin": 36163, + "end": 36248, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36208, + "end": 36215, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 36237, + "end": 36242, + "name": "DUP2", + "source": 34 + }, + { + "begin": 36226, + "end": 36242, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 36226, + "end": 36242, + "name": "POP", + "source": 34 + }, + { + "begin": 36163, + "end": 36248, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 36163, + "end": 36248, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 36163, + "end": 36248, + "name": "POP", + "source": 34 + }, + { + "begin": 36163, + "end": 36248, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36254, + "end": 36355, + "name": "tag", + "source": 34, + "value": "1092" + }, + { + "begin": 36254, + "end": 36355, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36290, + "end": 36297, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 36330, + "end": 36348, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 36323, + "end": 36328, + "name": "DUP3", + "source": 34 + }, + { + "begin": 36319, + "end": 36349, + "name": "AND", + "source": 34 + }, + { + "begin": 36308, + "end": 36349, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 36308, + "end": 36349, + "name": "POP", + "source": 34 + }, + { + "begin": 36254, + "end": 36355, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 36254, + "end": 36355, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 36254, + "end": 36355, + "name": "POP", + "source": 34 + }, + { + "begin": 36254, + "end": 36355, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36361, + "end": 36517, + "name": "tag", + "source": 34, + "value": "1093" + }, + { + "begin": 36361, + "end": 36517, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36418, + "end": 36427, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 36451, + "end": 36511, + "name": "PUSH [tag]", + "source": 34, + "value": "1528" + }, + { + "begin": 36468, + "end": 36510, + "name": "PUSH [tag]", + "source": 34, + "value": "1529" + }, + { + "begin": 36477, + "end": 36509, + "name": "PUSH [tag]", + "source": 34, + "value": "1530" + }, + { + "begin": 36503, + "end": 36508, + "name": "DUP5", + "source": 34 + }, + { + "begin": 36477, + "end": 36509, + "name": "PUSH [tag]", + "source": 34, + "value": "1091" + }, + { + "begin": 36477, + "end": 36509, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36477, + "end": 36509, + "name": "tag", + "source": 34, + "value": "1530" + }, + { + "begin": 36477, + "end": 36509, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36468, + "end": 36510, + "name": "PUSH [tag]", + "source": 34, + "value": "1054" + }, + { + "begin": 36468, + "end": 36510, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36468, + "end": 36510, + "name": "tag", + "source": 34, + "value": "1529" + }, + { + "begin": 36468, + "end": 36510, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36451, + "end": 36511, + "name": "PUSH [tag]", + "source": 34, + "value": "1092" + }, + { + "begin": 36451, + "end": 36511, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36451, + "end": 36511, + "name": "tag", + "source": 34, + "value": "1528" + }, + { + "begin": 36451, + "end": 36511, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36438, + "end": 36511, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 36438, + "end": 36511, + "name": "POP", + "source": 34 + }, + { + "begin": 36361, + "end": 36517, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 36361, + "end": 36517, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 36361, + "end": 36517, + "name": "POP", + "source": 34 + }, + { + "begin": 36361, + "end": 36517, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36523, + "end": 36668, + "name": "tag", + "source": 34, + "value": "1094" + }, + { + "begin": 36523, + "end": 36668, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36617, + "end": 36661, + "name": "PUSH [tag]", + "source": 34, + "value": "1532" + }, + { + "begin": 36655, + "end": 36660, + "name": "DUP2", + "source": 34 + }, + { + "begin": 36617, + "end": 36661, + "name": "PUSH [tag]", + "source": 34, + "value": "1093" + }, + { + "begin": 36617, + "end": 36661, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36617, + "end": 36661, + "name": "tag", + "source": 34, + "value": "1532" + }, + { + "begin": 36617, + "end": 36661, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36612, + "end": 36615, + "name": "DUP3", + "source": 34 + }, + { + "begin": 36605, + "end": 36662, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 36523, + "end": 36668, + "name": "POP", + "source": 34 + }, + { + "begin": 36523, + "end": 36668, + "name": "POP", + "source": 34 + }, + { + "begin": 36523, + "end": 36668, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36674, + "end": 36910, + "name": "tag", + "source": 34, + "value": "370" + }, + { + "begin": 36674, + "end": 36910, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36774, + "end": 36778, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 36812, + "end": 36814, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 36801, + "end": 36810, + "name": "DUP3", + "source": 34 + }, + { + "begin": 36797, + "end": 36815, + "name": "ADD", + "source": 34 + }, + { + "begin": 36789, + "end": 36815, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 36789, + "end": 36815, + "name": "POP", + "source": 34 + }, + { + "begin": 36825, + "end": 36903, + "name": "PUSH [tag]", + "source": 34, + "value": "1534" + }, + { + "begin": 36900, + "end": 36901, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 36889, + "end": 36898, + "name": "DUP4", + "source": 34 + }, + { + "begin": 36885, + "end": 36902, + "name": "ADD", + "source": 34 + }, + { + "begin": 36876, + "end": 36882, + "name": "DUP5", + "source": 34 + }, + { + "begin": 36825, + "end": 36903, + "name": "PUSH [tag]", + "source": 34, + "value": "1094" + }, + { + "begin": 36825, + "end": 36903, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36825, + "end": 36903, + "name": "tag", + "source": 34, + "value": "1534" + }, + { + "begin": 36825, + "end": 36903, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36674, + "end": 36910, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 36674, + "end": 36910, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 36674, + "end": 36910, + "name": "POP", + "source": 34 + }, + { + "begin": 36674, + "end": 36910, + "name": "POP", + "source": 34 + }, + { + "begin": 36674, + "end": 36910, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 36916, + "end": 37087, + "name": "tag", + "source": 34, + "value": "1095" + }, + { + "begin": 36916, + "end": 37087, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36987, + "end": 36992, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 37018, + "end": 37024, + "name": "DUP2", + "source": 34 + }, + { + "begin": 37012, + "end": 37025, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 37003, + "end": 37025, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 37003, + "end": 37025, + "name": "POP", + "source": 34 + }, + { + "begin": 37034, + "end": 37081, + "name": "PUSH [tag]", + "source": 34, + "value": "1536" + }, + { + "begin": 37075, + "end": 37080, + "name": "DUP2", + "source": 34 + }, + { + "begin": 37034, + "end": 37081, + "name": "PUSH [tag]", + "source": 34, + "value": "1030" + }, + { + "begin": 37034, + "end": 37081, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37034, + "end": 37081, + "name": "tag", + "source": 34, + "value": "1536" + }, + { + "begin": 37034, + "end": 37081, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 36916, + "end": 37087, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 36916, + "end": 37087, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 36916, + "end": 37087, + "name": "POP", + "source": 34 + }, + { + "begin": 36916, + "end": 37087, + "name": "POP", + "source": 34 + }, + { + "begin": 36916, + "end": 37087, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37093, + "end": 37472, + "name": "tag", + "source": 34, + "value": "380" + }, + { + "begin": 37093, + "end": 37472, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37177, + "end": 37183, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 37226, + "end": 37228, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 37214, + "end": 37223, + "name": "DUP3", + "source": 34 + }, + { + "begin": 37205, + "end": 37212, + "name": "DUP5", + "source": 34 + }, + { + "begin": 37201, + "end": 37224, + "name": "SUB", + "source": 34 + }, + { + "begin": 37197, + "end": 37229, + "name": "SLT", + "source": 34 + }, + { + "begin": 37194, + "end": 37313, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 37194, + "end": 37313, + "name": "PUSH [tag]", + "source": 34, + "value": "1538" + }, + { + "begin": 37194, + "end": 37313, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 37232, + "end": 37311, + "name": "PUSH [tag]", + "source": 34, + "value": "1539" + }, + { + "begin": 37232, + "end": 37311, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 37232, + "end": 37311, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37232, + "end": 37311, + "name": "tag", + "source": 34, + "value": "1539" + }, + { + "begin": 37232, + "end": 37311, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37194, + "end": 37313, + "name": "tag", + "source": 34, + "value": "1538" + }, + { + "begin": 37194, + "end": 37313, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37352, + "end": 37353, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 37377, + "end": 37455, + "name": "PUSH [tag]", + "source": 34, + "value": "1540" + }, + { + "begin": 37447, + "end": 37454, + "name": "DUP5", + "source": 34 + }, + { + "begin": 37438, + "end": 37444, + "name": "DUP3", + "source": 34 + }, + { + "begin": 37427, + "end": 37436, + "name": "DUP6", + "source": 34 + }, + { + "begin": 37423, + "end": 37445, + "name": "ADD", + "source": 34 + }, + { + "begin": 37377, + "end": 37455, + "name": "PUSH [tag]", + "source": 34, + "value": "1095" + }, + { + "begin": 37377, + "end": 37455, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37377, + "end": 37455, + "name": "tag", + "source": 34, + "value": "1540" + }, + { + "begin": 37377, + "end": 37455, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37367, + "end": 37455, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 37367, + "end": 37455, + "name": "POP", + "source": 34 + }, + { + "begin": 37323, + "end": 37465, + "name": "POP", + "source": 34 + }, + { + "begin": 37093, + "end": 37472, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 37093, + "end": 37472, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 37093, + "end": 37472, + "name": "POP", + "source": 34 + }, + { + "begin": 37093, + "end": 37472, + "name": "POP", + "source": 34 + }, + { + "begin": 37093, + "end": 37472, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37478, + "end": 37835, + "name": "tag", + "source": 34, + "value": "393" + }, + { + "begin": 37478, + "end": 37835, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37551, + "end": 37557, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 37600, + "end": 37602, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 37588, + "end": 37597, + "name": "DUP3", + "source": 34 + }, + { + "begin": 37579, + "end": 37586, + "name": "DUP5", + "source": 34 + }, + { + "begin": 37575, + "end": 37598, + "name": "SUB", + "source": 34 + }, + { + "begin": 37571, + "end": 37603, + "name": "SLT", + "source": 34 + }, + { + "begin": 37568, + "end": 37687, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 37568, + "end": 37687, + "name": "PUSH [tag]", + "source": 34, + "value": "1542" + }, + { + "begin": 37568, + "end": 37687, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 37606, + "end": 37685, + "name": "PUSH [tag]", + "source": 34, + "value": "1543" + }, + { + "begin": 37606, + "end": 37685, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 37606, + "end": 37685, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37606, + "end": 37685, + "name": "tag", + "source": 34, + "value": "1543" + }, + { + "begin": 37606, + "end": 37685, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37568, + "end": 37687, + "name": "tag", + "source": 34, + "value": "1542" + }, + { + "begin": 37568, + "end": 37687, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37726, + "end": 37727, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 37751, + "end": 37818, + "name": "PUSH [tag]", + "source": 34, + "value": "1544" + }, + { + "begin": 37810, + "end": 37817, + "name": "DUP5", + "source": 34 + }, + { + "begin": 37801, + "end": 37807, + "name": "DUP3", + "source": 34 + }, + { + "begin": 37790, + "end": 37799, + "name": "DUP6", + "source": 34 + }, + { + "begin": 37786, + "end": 37808, + "name": "ADD", + "source": 34 + }, + { + "begin": 37751, + "end": 37818, + "name": "PUSH [tag]", + "source": 34, + "value": "1031" + }, + { + "begin": 37751, + "end": 37818, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37751, + "end": 37818, + "name": "tag", + "source": 34, + "value": "1544" + }, + { + "begin": 37751, + "end": 37818, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37741, + "end": 37818, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 37741, + "end": 37818, + "name": "POP", + "source": 34 + }, + { + "begin": 37697, + "end": 37828, + "name": "POP", + "source": 34 + }, + { + "begin": 37478, + "end": 37835, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 37478, + "end": 37835, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 37478, + "end": 37835, + "name": "POP", + "source": 34 + }, + { + "begin": 37478, + "end": 37835, + "name": "POP", + "source": 34 + }, + { + "begin": 37478, + "end": 37835, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "tag", + "source": 34, + "value": "417" + }, + { + "begin": 37841, + "end": 38505, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38046, + "end": 38050, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 38084, + "end": 38087, + "name": "PUSH", + "source": 34, + "value": "A0" + }, + { + "begin": 38073, + "end": 38082, + "name": "DUP3", + "source": 34 + }, + { + "begin": 38069, + "end": 38088, + "name": "ADD", + "source": 34 + }, + { + "begin": 38061, + "end": 38088, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 38061, + "end": 38088, + "name": "POP", + "source": 34 + }, + { + "begin": 38098, + "end": 38169, + "name": "PUSH [tag]", + "source": 34, + "value": "1546" + }, + { + "begin": 38166, + "end": 38167, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 38155, + "end": 38164, + "name": "DUP4", + "source": 34 + }, + { + "begin": 38151, + "end": 38168, + "name": "ADD", + "source": 34 + }, + { + "begin": 38142, + "end": 38148, + "name": "DUP9", + "source": 34 + }, + { + "begin": 38098, + "end": 38169, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 38098, + "end": 38169, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38098, + "end": 38169, + "name": "tag", + "source": 34, + "value": "1546" + }, + { + "begin": 38098, + "end": 38169, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38179, + "end": 38251, + "name": "PUSH [tag]", + "source": 34, + "value": "1547" + }, + { + "begin": 38247, + "end": 38249, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 38236, + "end": 38245, + "name": "DUP4", + "source": 34 + }, + { + "begin": 38232, + "end": 38250, + "name": "ADD", + "source": 34 + }, + { + "begin": 38223, + "end": 38229, + "name": "DUP8", + "source": 34 + }, + { + "begin": 38179, + "end": 38251, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 38179, + "end": 38251, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38179, + "end": 38251, + "name": "tag", + "source": 34, + "value": "1547" + }, + { + "begin": 38179, + "end": 38251, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38261, + "end": 38333, + "name": "PUSH [tag]", + "source": 34, + "value": "1548" + }, + { + "begin": 38329, + "end": 38331, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 38318, + "end": 38327, + "name": "DUP4", + "source": 34 + }, + { + "begin": 38314, + "end": 38332, + "name": "ADD", + "source": 34 + }, + { + "begin": 38305, + "end": 38311, + "name": "DUP7", + "source": 34 + }, + { + "begin": 38261, + "end": 38333, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 38261, + "end": 38333, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38261, + "end": 38333, + "name": "tag", + "source": 34, + "value": "1548" + }, + { + "begin": 38261, + "end": 38333, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38343, + "end": 38415, + "name": "PUSH [tag]", + "source": 34, + "value": "1549" + }, + { + "begin": 38411, + "end": 38413, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 38400, + "end": 38409, + "name": "DUP4", + "source": 34 + }, + { + "begin": 38396, + "end": 38414, + "name": "ADD", + "source": 34 + }, + { + "begin": 38387, + "end": 38393, + "name": "DUP6", + "source": 34 + }, + { + "begin": 38343, + "end": 38415, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 38343, + "end": 38415, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38343, + "end": 38415, + "name": "tag", + "source": 34, + "value": "1549" + }, + { + "begin": 38343, + "end": 38415, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38425, + "end": 38498, + "name": "PUSH [tag]", + "source": 34, + "value": "1550" + }, + { + "begin": 38493, + "end": 38496, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 38482, + "end": 38491, + "name": "DUP4", + "source": 34 + }, + { + "begin": 38478, + "end": 38497, + "name": "ADD", + "source": 34 + }, + { + "begin": 38469, + "end": 38475, + "name": "DUP5", + "source": 34 + }, + { + "begin": 38425, + "end": 38498, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 38425, + "end": 38498, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38425, + "end": 38498, + "name": "tag", + "source": 34, + "value": "1550" + }, + { + "begin": 38425, + "end": 38498, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "SWAP7", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "POP", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "POP", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "POP", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "POP", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "POP", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "name": "POP", + "source": 34 + }, + { + "begin": 37841, + "end": 38505, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38511, + "end": 38620, + "name": "tag", + "source": 34, + "value": "1096" + }, + { + "begin": 38511, + "end": 38620, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38592, + "end": 38613, + "name": "PUSH [tag]", + "source": 34, + "value": "1552" + }, + { + "begin": 38607, + "end": 38612, + "name": "DUP2", + "source": 34 + }, + { + "begin": 38592, + "end": 38613, + "name": "PUSH [tag]", + "source": 34, + "value": "1071" + }, + { + "begin": 38592, + "end": 38613, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38592, + "end": 38613, + "name": "tag", + "source": 34, + "value": "1552" + }, + { + "begin": 38592, + "end": 38613, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38587, + "end": 38590, + "name": "DUP3", + "source": 34 + }, + { + "begin": 38580, + "end": 38614, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 38511, + "end": 38620, + "name": "POP", + "source": 34 + }, + { + "begin": 38511, + "end": 38620, + "name": "POP", + "source": 34 + }, + { + "begin": 38511, + "end": 38620, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38626, + "end": 38946, + "name": "tag", + "source": 34, + "value": "449" + }, + { + "begin": 38626, + "end": 38946, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38741, + "end": 38745, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 38779, + "end": 38781, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 38768, + "end": 38777, + "name": "DUP3", + "source": 34 + }, + { + "begin": 38764, + "end": 38782, + "name": "ADD", + "source": 34 + }, + { + "begin": 38756, + "end": 38782, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 38756, + "end": 38782, + "name": "POP", + "source": 34 + }, + { + "begin": 38792, + "end": 38863, + "name": "PUSH [tag]", + "source": 34, + "value": "1554" + }, + { + "begin": 38860, + "end": 38861, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 38849, + "end": 38858, + "name": "DUP4", + "source": 34 + }, + { + "begin": 38845, + "end": 38862, + "name": "ADD", + "source": 34 + }, + { + "begin": 38836, + "end": 38842, + "name": "DUP6", + "source": 34 + }, + { + "begin": 38792, + "end": 38863, + "name": "PUSH [tag]", + "source": 34, + "value": "1074" + }, + { + "begin": 38792, + "end": 38863, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38792, + "end": 38863, + "name": "tag", + "source": 34, + "value": "1554" + }, + { + "begin": 38792, + "end": 38863, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38873, + "end": 38939, + "name": "PUSH [tag]", + "source": 34, + "value": "1555" + }, + { + "begin": 38935, + "end": 38937, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 38924, + "end": 38933, + "name": "DUP4", + "source": 34 + }, + { + "begin": 38920, + "end": 38938, + "name": "ADD", + "source": 34 + }, + { + "begin": 38911, + "end": 38917, + "name": "DUP5", + "source": 34 + }, + { + "begin": 38873, + "end": 38939, + "name": "PUSH [tag]", + "source": 34, + "value": "1096" + }, + { + "begin": 38873, + "end": 38939, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38873, + "end": 38939, + "name": "tag", + "source": 34, + "value": "1555" + }, + { + "begin": 38873, + "end": 38939, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38626, + "end": 38946, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 38626, + "end": 38946, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 38626, + "end": 38946, + "name": "POP", + "source": 34 + }, + { + "begin": 38626, + "end": 38946, + "name": "POP", + "source": 34 + }, + { + "begin": 38626, + "end": 38946, + "name": "POP", + "source": 34 + }, + { + "begin": 38626, + "end": 38946, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 38952, + "end": 39095, + "name": "tag", + "source": 34, + "value": "1097" + }, + { + "begin": 38952, + "end": 39095, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39009, + "end": 39014, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 39040, + "end": 39046, + "name": "DUP2", + "source": 34 + }, + { + "begin": 39034, + "end": 39047, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 39025, + "end": 39047, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 39025, + "end": 39047, + "name": "POP", + "source": 34 + }, + { + "begin": 39056, + "end": 39089, + "name": "PUSH [tag]", + "source": 34, + "value": "1557" + }, + { + "begin": 39083, + "end": 39088, + "name": "DUP2", + "source": 34 + }, + { + "begin": 39056, + "end": 39089, + "name": "PUSH [tag]", + "source": 34, + "value": "1069" + }, + { + "begin": 39056, + "end": 39089, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 39056, + "end": 39089, + "name": "tag", + "source": 34, + "value": "1557" + }, + { + "begin": 39056, + "end": 39089, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 38952, + "end": 39095, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 38952, + "end": 39095, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 38952, + "end": 39095, + "name": "POP", + "source": 34 + }, + { + "begin": 38952, + "end": 39095, + "name": "POP", + "source": 34 + }, + { + "begin": 38952, + "end": 39095, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 39101, + "end": 39764, + "name": "tag", + "source": 34, + "value": "453" + }, + { + "begin": 39101, + "end": 39764, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39189, + "end": 39195, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 39197, + "end": 39203, + "name": "DUP1", + "source": 34 + }, + { + "begin": 39205, + "end": 39211, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 39254, + "end": 39256, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 39242, + "end": 39251, + "name": "DUP5", + "source": 34 + }, + { + "begin": 39233, + "end": 39240, + "name": "DUP7", + "source": 34 + }, + { + "begin": 39229, + "end": 39252, + "name": "SUB", + "source": 34 + }, + { + "begin": 39225, + "end": 39257, + "name": "SLT", + "source": 34 + }, + { + "begin": 39222, + "end": 39341, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 39222, + "end": 39341, + "name": "PUSH [tag]", + "source": 34, + "value": "1559" + }, + { + "begin": 39222, + "end": 39341, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 39260, + "end": 39339, + "name": "PUSH [tag]", + "source": 34, + "value": "1560" + }, + { + "begin": 39260, + "end": 39339, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 39260, + "end": 39339, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 39260, + "end": 39339, + "name": "tag", + "source": 34, + "value": "1560" + }, + { + "begin": 39260, + "end": 39339, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39222, + "end": 39341, + "name": "tag", + "source": 34, + "value": "1559" + }, + { + "begin": 39222, + "end": 39341, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39380, + "end": 39381, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 39405, + "end": 39469, + "name": "PUSH [tag]", + "source": 34, + "value": "1561" + }, + { + "begin": 39461, + "end": 39468, + "name": "DUP7", + "source": 34 + }, + { + "begin": 39452, + "end": 39458, + "name": "DUP3", + "source": 34 + }, + { + "begin": 39441, + "end": 39450, + "name": "DUP8", + "source": 34 + }, + { + "begin": 39437, + "end": 39459, + "name": "ADD", + "source": 34 + }, + { + "begin": 39405, + "end": 39469, + "name": "PUSH [tag]", + "source": 34, + "value": "1097" + }, + { + "begin": 39405, + "end": 39469, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 39405, + "end": 39469, + "name": "tag", + "source": 34, + "value": "1561" + }, + { + "begin": 39405, + "end": 39469, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39395, + "end": 39469, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 39395, + "end": 39469, + "name": "POP", + "source": 34 + }, + { + "begin": 39351, + "end": 39479, + "name": "POP", + "source": 34 + }, + { + "begin": 39518, + "end": 39520, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 39544, + "end": 39608, + "name": "PUSH [tag]", + "source": 34, + "value": "1562" + }, + { + "begin": 39600, + "end": 39607, + "name": "DUP7", + "source": 34 + }, + { + "begin": 39591, + "end": 39597, + "name": "DUP3", + "source": 34 + }, + { + "begin": 39580, + "end": 39589, + "name": "DUP8", + "source": 34 + }, + { + "begin": 39576, + "end": 39598, + "name": "ADD", + "source": 34 + }, + { + "begin": 39544, + "end": 39608, + "name": "PUSH [tag]", + "source": 34, + "value": "1097" + }, + { + "begin": 39544, + "end": 39608, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 39544, + "end": 39608, + "name": "tag", + "source": 34, + "value": "1562" + }, + { + "begin": 39544, + "end": 39608, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39534, + "end": 39608, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 39534, + "end": 39608, + "name": "POP", + "source": 34 + }, + { + "begin": 39489, + "end": 39618, + "name": "POP", + "source": 34 + }, + { + "begin": 39657, + "end": 39659, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 39683, + "end": 39747, + "name": "PUSH [tag]", + "source": 34, + "value": "1563" + }, + { + "begin": 39739, + "end": 39746, + "name": "DUP7", + "source": 34 + }, + { + "begin": 39730, + "end": 39736, + "name": "DUP3", + "source": 34 + }, + { + "begin": 39719, + "end": 39728, + "name": "DUP8", + "source": 34 + }, + { + "begin": 39715, + "end": 39737, + "name": "ADD", + "source": 34 + }, + { + "begin": 39683, + "end": 39747, + "name": "PUSH [tag]", + "source": 34, + "value": "1097" + }, + { + "begin": 39683, + "end": 39747, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 39683, + "end": 39747, + "name": "tag", + "source": 34, + "value": "1563" + }, + { + "begin": 39683, + "end": 39747, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39673, + "end": 39747, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 39673, + "end": 39747, + "name": "POP", + "source": 34 + }, + { + "begin": 39628, + "end": 39757, + "name": "POP", + "source": 34 + }, + { + "begin": 39101, + "end": 39764, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 39101, + "end": 39764, + "name": "POP", + "source": 34 + }, + { + "begin": 39101, + "end": 39764, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 39101, + "end": 39764, + "name": "POP", + "source": 34 + }, + { + "begin": 39101, + "end": 39764, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 39101, + "end": 39764, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 39770, + "end": 39887, + "name": "tag", + "source": 34, + "value": "1098" + }, + { + "begin": 39770, + "end": 39887, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39879, + "end": 39880, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 39876, + "end": 39877, + "name": "DUP1", + "source": 34 + }, + { + "begin": 39869, + "end": 39881, + "name": "REVERT", + "source": 34 + }, + { + "begin": 39893, + "end": 39991, + "name": "tag", + "source": 34, + "value": "1099" + }, + { + "begin": 39893, + "end": 39991, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 39977, + "end": 39983, + "name": "DUP3", + "source": 34 + }, + { + "begin": 39972, + "end": 39975, + "name": "DUP2", + "source": 34 + }, + { + "begin": 39967, + "end": 39970, + "name": "DUP4", + "source": 34 + }, + { + "begin": 39954, + "end": 39984, + "name": "CALLDATACOPY", + "source": 34 + }, + { + "begin": 39893, + "end": 39991, + "name": "POP", + "source": 34 + }, + { + "begin": 39893, + "end": 39991, + "name": "POP", + "source": 34 + }, + { + "begin": 39893, + "end": 39991, + "name": "POP", + "source": 34 + }, + { + "begin": 39893, + "end": 39991, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 40027, + "end": 40564, + "name": "tag", + "source": 34, + "value": "1100" + }, + { + "begin": 40027, + "end": 40564, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 40155, + "end": 40158, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 40176, + "end": 40262, + "name": "PUSH [tag]", + "source": 34, + "value": "1567" + }, + { + "begin": 40255, + "end": 40261, + "name": "DUP4", + "source": 34 + }, + { + "begin": 40250, + "end": 40253, + "name": "DUP6", + "source": 34 + }, + { + "begin": 40176, + "end": 40262, + "name": "PUSH [tag]", + "source": 34, + "value": "1042" + }, + { + "begin": 40176, + "end": 40262, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 40176, + "end": 40262, + "name": "tag", + "source": 34, + "value": "1567" + }, + { + "begin": 40176, + "end": 40262, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 40169, + "end": 40262, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 40169, + "end": 40262, + "name": "POP", + "source": 34 + }, + { + "begin": 40286, + "end": 40352, + "name": "PUSH", + "source": 34, + "value": "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 40278, + "end": 40284, + "name": "DUP4", + "source": 34 + }, + { + "begin": 40275, + "end": 40353, + "name": "GT", + "source": 34 + }, + { + "begin": 40272, + "end": 40437, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 40272, + "end": 40437, + "name": "PUSH [tag]", + "source": 34, + "value": "1568" + }, + { + "begin": 40272, + "end": 40437, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 40356, + "end": 40435, + "name": "PUSH [tag]", + "source": 34, + "value": "1569" + }, + { + "begin": 40356, + "end": 40435, + "name": "PUSH [tag]", + "source": 34, + "value": "1098" + }, + { + "begin": 40356, + "end": 40435, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 40356, + "end": 40435, + "name": "tag", + "source": 34, + "value": "1569" + }, + { + "begin": 40356, + "end": 40435, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 40272, + "end": 40437, + "name": "tag", + "source": 34, + "value": "1568" + }, + { + "begin": 40272, + "end": 40437, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 40468, + "end": 40472, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 40460, + "end": 40466, + "name": "DUP4", + "source": 34 + }, + { + "begin": 40456, + "end": 40473, + "name": "MUL", + "source": 34 + }, + { + "begin": 40446, + "end": 40473, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 40446, + "end": 40473, + "name": "POP", + "source": 34 + }, + { + "begin": 40483, + "end": 40526, + "name": "PUSH [tag]", + "source": 34, + "value": "1570" + }, + { + "begin": 40519, + "end": 40525, + "name": "DUP4", + "source": 34 + }, + { + "begin": 40514, + "end": 40517, + "name": "DUP6", + "source": 34 + }, + { + "begin": 40507, + "end": 40512, + "name": "DUP5", + "source": 34 + }, + { + "begin": 40483, + "end": 40526, + "name": "PUSH [tag]", + "source": 34, + "value": "1099" + }, + { + "begin": 40483, + "end": 40526, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 40483, + "end": 40526, + "name": "tag", + "source": 34, + "value": "1570" + }, + { + "begin": 40483, + "end": 40526, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 40551, + "end": 40557, + "name": "DUP3", + "source": 34 + }, + { + "begin": 40546, + "end": 40549, + "name": "DUP5", + "source": 34 + }, + { + "begin": 40542, + "end": 40558, + "name": "ADD", + "source": 34 + }, + { + "begin": 40535, + "end": 40558, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 40535, + "end": 40558, + "name": "POP", + "source": 34 + }, + { + "begin": 40027, + "end": 40564, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 40027, + "end": 40564, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 40027, + "end": 40564, + "name": "POP", + "source": 34 + }, + { + "begin": 40027, + "end": 40564, + "name": "POP", + "source": 34 + }, + { + "begin": 40027, + "end": 40564, + "name": "POP", + "source": 34 + }, + { + "begin": 40027, + "end": 40564, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "tag", + "source": 34, + "value": "577" + }, + { + "begin": 40570, + "end": 41465, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 40867, + "end": 40871, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 40905, + "end": 40908, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 40894, + "end": 40903, + "name": "DUP3", + "source": 34 + }, + { + "begin": 40890, + "end": 40909, + "name": "ADD", + "source": 34 + }, + { + "begin": 40882, + "end": 40909, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 40882, + "end": 40909, + "name": "POP", + "source": 34 + }, + { + "begin": 40919, + "end": 40990, + "name": "PUSH [tag]", + "source": 34, + "value": "1572" + }, + { + "begin": 40987, + "end": 40988, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 40976, + "end": 40985, + "name": "DUP4", + "source": 34 + }, + { + "begin": 40972, + "end": 40989, + "name": "ADD", + "source": 34 + }, + { + "begin": 40963, + "end": 40969, + "name": "DUP10", + "source": 34 + }, + { + "begin": 40919, + "end": 40990, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 40919, + "end": 40990, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 40919, + "end": 40990, + "name": "tag", + "source": 34, + "value": "1572" + }, + { + "begin": 40919, + "end": 40990, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41000, + "end": 41072, + "name": "PUSH [tag]", + "source": 34, + "value": "1573" + }, + { + "begin": 41068, + "end": 41070, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 41057, + "end": 41066, + "name": "DUP4", + "source": 34 + }, + { + "begin": 41053, + "end": 41071, + "name": "ADD", + "source": 34 + }, + { + "begin": 41044, + "end": 41050, + "name": "DUP9", + "source": 34 + }, + { + "begin": 41000, + "end": 41072, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 41000, + "end": 41072, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41000, + "end": 41072, + "name": "tag", + "source": 34, + "value": "1573" + }, + { + "begin": 41000, + "end": 41072, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41119, + "end": 41128, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41113, + "end": 41117, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41109, + "end": 41129, + "name": "SUB", + "source": 34 + }, + { + "begin": 41104, + "end": 41106, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 41093, + "end": 41102, + "name": "DUP4", + "source": 34 + }, + { + "begin": 41089, + "end": 41107, + "name": "ADD", + "source": 34 + }, + { + "begin": 41082, + "end": 41130, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 41147, + "end": 41265, + "name": "PUSH [tag]", + "source": 34, + "value": "1574" + }, + { + "begin": 41260, + "end": 41264, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41251, + "end": 41257, + "name": "DUP7", + "source": 34 + }, + { + "begin": 41243, + "end": 41249, + "name": "DUP9", + "source": 34 + }, + { + "begin": 41147, + "end": 41265, + "name": "PUSH [tag]", + "source": 34, + "value": "1100" + }, + { + "begin": 41147, + "end": 41265, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41147, + "end": 41265, + "name": "tag", + "source": 34, + "value": "1574" + }, + { + "begin": 41147, + "end": 41265, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41139, + "end": 41265, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 41139, + "end": 41265, + "name": "POP", + "source": 34 + }, + { + "begin": 41312, + "end": 41321, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41306, + "end": 41310, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41302, + "end": 41322, + "name": "SUB", + "source": 34 + }, + { + "begin": 41297, + "end": 41299, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 41286, + "end": 41295, + "name": "DUP4", + "source": 34 + }, + { + "begin": 41282, + "end": 41300, + "name": "ADD", + "source": 34 + }, + { + "begin": 41275, + "end": 41323, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 41340, + "end": 41458, + "name": "PUSH [tag]", + "source": 34, + "value": "1575" + }, + { + "begin": 41453, + "end": 41457, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41444, + "end": 41450, + "name": "DUP5", + "source": 34 + }, + { + "begin": 41436, + "end": 41442, + "name": "DUP7", + "source": 34 + }, + { + "begin": 41340, + "end": 41458, + "name": "PUSH [tag]", + "source": 34, + "value": "1100" + }, + { + "begin": 41340, + "end": 41458, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41340, + "end": 41458, + "name": "tag", + "source": 34, + "value": "1575" + }, + { + "begin": 41340, + "end": 41458, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41332, + "end": 41458, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 41332, + "end": 41458, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "SWAP8", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "SWAP7", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "name": "POP", + "source": 34 + }, + { + "begin": 40570, + "end": 41465, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41471, + "end": 41612, + "name": "tag", + "source": 34, + "value": "1101" + }, + { + "begin": 41471, + "end": 41612, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41527, + "end": 41532, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 41558, + "end": 41564, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41552, + "end": 41565, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 41543, + "end": 41565, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 41543, + "end": 41565, + "name": "POP", + "source": 34 + }, + { + "begin": 41574, + "end": 41606, + "name": "PUSH [tag]", + "source": 34, + "value": "1577" + }, + { + "begin": 41600, + "end": 41605, + "name": "DUP2", + "source": 34 + }, + { + "begin": 41574, + "end": 41606, + "name": "PUSH [tag]", + "source": 34, + "value": "1049" + }, + { + "begin": 41574, + "end": 41606, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41574, + "end": 41606, + "name": "tag", + "source": 34, + "value": "1577" + }, + { + "begin": 41574, + "end": 41606, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41471, + "end": 41612, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 41471, + "end": 41612, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 41471, + "end": 41612, + "name": "POP", + "source": 34 + }, + { + "begin": 41471, + "end": 41612, + "name": "POP", + "source": 34 + }, + { + "begin": 41471, + "end": 41612, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41618, + "end": 41967, + "name": "tag", + "source": 34, + "value": "586" + }, + { + "begin": 41618, + "end": 41967, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41687, + "end": 41693, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 41736, + "end": 41738, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 41724, + "end": 41733, + "name": "DUP3", + "source": 34 + }, + { + "begin": 41715, + "end": 41722, + "name": "DUP5", + "source": 34 + }, + { + "begin": 41711, + "end": 41734, + "name": "SUB", + "source": 34 + }, + { + "begin": 41707, + "end": 41739, + "name": "SLT", + "source": 34 + }, + { + "begin": 41704, + "end": 41823, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 41704, + "end": 41823, + "name": "PUSH [tag]", + "source": 34, + "value": "1579" + }, + { + "begin": 41704, + "end": 41823, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 41742, + "end": 41821, + "name": "PUSH [tag]", + "source": 34, + "value": "1580" + }, + { + "begin": 41742, + "end": 41821, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 41742, + "end": 41821, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41742, + "end": 41821, + "name": "tag", + "source": 34, + "value": "1580" + }, + { + "begin": 41742, + "end": 41821, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41704, + "end": 41823, + "name": "tag", + "source": 34, + "value": "1579" + }, + { + "begin": 41704, + "end": 41823, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41862, + "end": 41863, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 41887, + "end": 41950, + "name": "PUSH [tag]", + "source": 34, + "value": "1581" + }, + { + "begin": 41942, + "end": 41949, + "name": "DUP5", + "source": 34 + }, + { + "begin": 41933, + "end": 41939, + "name": "DUP3", + "source": 34 + }, + { + "begin": 41922, + "end": 41931, + "name": "DUP6", + "source": 34 + }, + { + "begin": 41918, + "end": 41940, + "name": "ADD", + "source": 34 + }, + { + "begin": 41887, + "end": 41950, + "name": "PUSH [tag]", + "source": 34, + "value": "1101" + }, + { + "begin": 41887, + "end": 41950, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41887, + "end": 41950, + "name": "tag", + "source": 34, + "value": "1581" + }, + { + "begin": 41887, + "end": 41950, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 41877, + "end": 41950, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 41877, + "end": 41950, + "name": "POP", + "source": 34 + }, + { + "begin": 41833, + "end": 41960, + "name": "POP", + "source": 34 + }, + { + "begin": 41618, + "end": 41967, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 41618, + "end": 41967, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 41618, + "end": 41967, + "name": "POP", + "source": 34 + }, + { + "begin": 41618, + "end": 41967, + "name": "POP", + "source": 34 + }, + { + "begin": 41618, + "end": 41967, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 41973, + "end": 42153, + "name": "tag", + "source": 34, + "value": "629" + }, + { + "begin": 41973, + "end": 42153, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42021, + "end": 42098, + "name": "PUSH", + "source": 34, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 42018, + "end": 42019, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42011, + "end": 42099, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 42118, + "end": 42122, + "name": "PUSH", + "source": 34, + "value": "21" + }, + { + "begin": 42115, + "end": 42116, + "name": "PUSH", + "source": 34, + "value": "4" + }, + { + "begin": 42108, + "end": 42123, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 42142, + "end": 42146, + "name": "PUSH", + "source": 34, + "value": "24" + }, + { + "begin": 42139, + "end": 42140, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42132, + "end": 42147, + "name": "REVERT", + "source": 34 + }, + { + "begin": 42159, + "end": 42273, + "name": "tag", + "source": 34, + "value": "1102" + }, + { + "begin": 42159, + "end": 42273, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42196, + "end": 42203, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42236, + "end": 42266, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 42229, + "end": 42234, + "name": "DUP3", + "source": 34 + }, + { + "begin": 42225, + "end": 42267, + "name": "AND", + "source": 34 + }, + { + "begin": 42214, + "end": 42267, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 42214, + "end": 42267, + "name": "POP", + "source": 34 + }, + { + "begin": 42159, + "end": 42273, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 42159, + "end": 42273, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 42159, + "end": 42273, + "name": "POP", + "source": 34 + }, + { + "begin": 42159, + "end": 42273, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42279, + "end": 42401, + "name": "tag", + "source": 34, + "value": "1103" + }, + { + "begin": 42279, + "end": 42401, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42352, + "end": 42376, + "name": "PUSH [tag]", + "source": 34, + "value": "1585" + }, + { + "begin": 42370, + "end": 42375, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42352, + "end": 42376, + "name": "PUSH [tag]", + "source": 34, + "value": "1102" + }, + { + "begin": 42352, + "end": 42376, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42352, + "end": 42376, + "name": "tag", + "source": 34, + "value": "1585" + }, + { + "begin": 42352, + "end": 42376, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42345, + "end": 42350, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42342, + "end": 42377, + "name": "EQ", + "source": 34 + }, + { + "begin": 42332, + "end": 42395, + "name": "PUSH [tag]", + "source": 34, + "value": "1586" + }, + { + "begin": 42332, + "end": 42395, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 42391, + "end": 42392, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42388, + "end": 42389, + "name": "DUP1", + "source": 34 + }, + { + "begin": 42381, + "end": 42393, + "name": "REVERT", + "source": 34 + }, + { + "begin": 42332, + "end": 42395, + "name": "tag", + "source": 34, + "value": "1586" + }, + { + "begin": 42332, + "end": 42395, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42279, + "end": 42401, + "name": "POP", + "source": 34 + }, + { + "begin": 42279, + "end": 42401, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42407, + "end": 42550, + "name": "tag", + "source": 34, + "value": "1104" + }, + { + "begin": 42407, + "end": 42550, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42464, + "end": 42469, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42495, + "end": 42501, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42489, + "end": 42502, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 42480, + "end": 42502, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 42480, + "end": 42502, + "name": "POP", + "source": 34 + }, + { + "begin": 42511, + "end": 42544, + "name": "PUSH [tag]", + "source": 34, + "value": "1588" + }, + { + "begin": 42538, + "end": 42543, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42511, + "end": 42544, + "name": "PUSH [tag]", + "source": 34, + "value": "1103" + }, + { + "begin": 42511, + "end": 42544, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42511, + "end": 42544, + "name": "tag", + "source": 34, + "value": "1588" + }, + { + "begin": 42511, + "end": 42544, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42407, + "end": 42550, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 42407, + "end": 42550, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 42407, + "end": 42550, + "name": "POP", + "source": 34 + }, + { + "begin": 42407, + "end": 42550, + "name": "POP", + "source": 34 + }, + { + "begin": 42407, + "end": 42550, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42556, + "end": 42649, + "name": "tag", + "source": 34, + "value": "1105" + }, + { + "begin": 42556, + "end": 42649, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42592, + "end": 42599, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42632, + "end": 42642, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFF" + }, + { + "begin": 42625, + "end": 42630, + "name": "DUP3", + "source": 34 + }, + { + "begin": 42621, + "end": 42643, + "name": "AND", + "source": 34 + }, + { + "begin": 42610, + "end": 42643, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 42610, + "end": 42643, + "name": "POP", + "source": 34 + }, + { + "begin": 42556, + "end": 42649, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 42556, + "end": 42649, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 42556, + "end": 42649, + "name": "POP", + "source": 34 + }, + { + "begin": 42556, + "end": 42649, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42655, + "end": 42775, + "name": "tag", + "source": 34, + "value": "1106" + }, + { + "begin": 42655, + "end": 42775, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42727, + "end": 42750, + "name": "PUSH [tag]", + "source": 34, + "value": "1591" + }, + { + "begin": 42744, + "end": 42749, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42727, + "end": 42750, + "name": "PUSH [tag]", + "source": 34, + "value": "1105" + }, + { + "begin": 42727, + "end": 42750, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42727, + "end": 42750, + "name": "tag", + "source": 34, + "value": "1591" + }, + { + "begin": 42727, + "end": 42750, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42720, + "end": 42725, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42717, + "end": 42751, + "name": "EQ", + "source": 34 + }, + { + "begin": 42707, + "end": 42769, + "name": "PUSH [tag]", + "source": 34, + "value": "1592" + }, + { + "begin": 42707, + "end": 42769, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 42765, + "end": 42766, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42762, + "end": 42763, + "name": "DUP1", + "source": 34 + }, + { + "begin": 42755, + "end": 42767, + "name": "REVERT", + "source": 34 + }, + { + "begin": 42707, + "end": 42769, + "name": "tag", + "source": 34, + "value": "1592" + }, + { + "begin": 42707, + "end": 42769, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42655, + "end": 42775, + "name": "POP", + "source": 34 + }, + { + "begin": 42655, + "end": 42775, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42781, + "end": 42922, + "name": "tag", + "source": 34, + "value": "1107" + }, + { + "begin": 42781, + "end": 42922, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42837, + "end": 42842, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 42868, + "end": 42874, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42862, + "end": 42875, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 42853, + "end": 42875, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 42853, + "end": 42875, + "name": "POP", + "source": 34 + }, + { + "begin": 42884, + "end": 42916, + "name": "PUSH [tag]", + "source": 34, + "value": "1594" + }, + { + "begin": 42910, + "end": 42915, + "name": "DUP2", + "source": 34 + }, + { + "begin": 42884, + "end": 42916, + "name": "PUSH [tag]", + "source": 34, + "value": "1106" + }, + { + "begin": 42884, + "end": 42916, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42884, + "end": 42916, + "name": "tag", + "source": 34, + "value": "1594" + }, + { + "begin": 42884, + "end": 42916, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 42781, + "end": 42922, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 42781, + "end": 42922, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 42781, + "end": 42922, + "name": "POP", + "source": 34 + }, + { + "begin": 42781, + "end": 42922, + "name": "POP", + "source": 34 + }, + { + "begin": 42781, + "end": 42922, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 42928, + "end": 43589, + "name": "tag", + "source": 34, + "value": "636" + }, + { + "begin": 42928, + "end": 43589, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43015, + "end": 43021, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 43023, + "end": 43029, + "name": "DUP1", + "source": 34 + }, + { + "begin": 43031, + "end": 43037, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 43080, + "end": 43082, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 43068, + "end": 43077, + "name": "DUP5", + "source": 34 + }, + { + "begin": 43059, + "end": 43066, + "name": "DUP7", + "source": 34 + }, + { + "begin": 43055, + "end": 43078, + "name": "SUB", + "source": 34 + }, + { + "begin": 43051, + "end": 43083, + "name": "SLT", + "source": 34 + }, + { + "begin": 43048, + "end": 43167, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 43048, + "end": 43167, + "name": "PUSH [tag]", + "source": 34, + "value": "1596" + }, + { + "begin": 43048, + "end": 43167, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 43086, + "end": 43165, + "name": "PUSH [tag]", + "source": 34, + "value": "1597" + }, + { + "begin": 43086, + "end": 43165, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 43086, + "end": 43165, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43086, + "end": 43165, + "name": "tag", + "source": 34, + "value": "1597" + }, + { + "begin": 43086, + "end": 43165, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43048, + "end": 43167, + "name": "tag", + "source": 34, + "value": "1596" + }, + { + "begin": 43048, + "end": 43167, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43206, + "end": 43207, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 43231, + "end": 43295, + "name": "PUSH [tag]", + "source": 34, + "value": "1598" + }, + { + "begin": 43287, + "end": 43294, + "name": "DUP7", + "source": 34 + }, + { + "begin": 43278, + "end": 43284, + "name": "DUP3", + "source": 34 + }, + { + "begin": 43267, + "end": 43276, + "name": "DUP8", + "source": 34 + }, + { + "begin": 43263, + "end": 43285, + "name": "ADD", + "source": 34 + }, + { + "begin": 43231, + "end": 43295, + "name": "PUSH [tag]", + "source": 34, + "value": "1104" + }, + { + "begin": 43231, + "end": 43295, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43231, + "end": 43295, + "name": "tag", + "source": 34, + "value": "1598" + }, + { + "begin": 43231, + "end": 43295, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43221, + "end": 43295, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 43221, + "end": 43295, + "name": "POP", + "source": 34 + }, + { + "begin": 43177, + "end": 43305, + "name": "POP", + "source": 34 + }, + { + "begin": 43344, + "end": 43346, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 43370, + "end": 43434, + "name": "PUSH [tag]", + "source": 34, + "value": "1599" + }, + { + "begin": 43426, + "end": 43433, + "name": "DUP7", + "source": 34 + }, + { + "begin": 43417, + "end": 43423, + "name": "DUP3", + "source": 34 + }, + { + "begin": 43406, + "end": 43415, + "name": "DUP8", + "source": 34 + }, + { + "begin": 43402, + "end": 43424, + "name": "ADD", + "source": 34 + }, + { + "begin": 43370, + "end": 43434, + "name": "PUSH [tag]", + "source": 34, + "value": "1104" + }, + { + "begin": 43370, + "end": 43434, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43370, + "end": 43434, + "name": "tag", + "source": 34, + "value": "1599" + }, + { + "begin": 43370, + "end": 43434, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43360, + "end": 43434, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 43360, + "end": 43434, + "name": "POP", + "source": 34 + }, + { + "begin": 43315, + "end": 43444, + "name": "POP", + "source": 34 + }, + { + "begin": 43483, + "end": 43485, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 43509, + "end": 43572, + "name": "PUSH [tag]", + "source": 34, + "value": "1600" + }, + { + "begin": 43564, + "end": 43571, + "name": "DUP7", + "source": 34 + }, + { + "begin": 43555, + "end": 43561, + "name": "DUP3", + "source": 34 + }, + { + "begin": 43544, + "end": 43553, + "name": "DUP8", + "source": 34 + }, + { + "begin": 43540, + "end": 43562, + "name": "ADD", + "source": 34 + }, + { + "begin": 43509, + "end": 43572, + "name": "PUSH [tag]", + "source": 34, + "value": "1107" + }, + { + "begin": 43509, + "end": 43572, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43509, + "end": 43572, + "name": "tag", + "source": 34, + "value": "1600" + }, + { + "begin": 43509, + "end": 43572, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43499, + "end": 43572, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 43499, + "end": 43572, + "name": "POP", + "source": 34 + }, + { + "begin": 43454, + "end": 43582, + "name": "POP", + "source": 34 + }, + { + "begin": 42928, + "end": 43589, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 42928, + "end": 43589, + "name": "POP", + "source": 34 + }, + { + "begin": 42928, + "end": 43589, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 42928, + "end": 43589, + "name": "POP", + "source": 34 + }, + { + "begin": 42928, + "end": 43589, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 42928, + "end": 43589, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43595, + "end": 43680, + "name": "tag", + "source": 34, + "value": "1108" + }, + { + "begin": 43595, + "end": 43680, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43640, + "end": 43647, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 43669, + "end": 43674, + "name": "DUP2", + "source": 34 + }, + { + "begin": 43658, + "end": 43674, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 43658, + "end": 43674, + "name": "POP", + "source": 34 + }, + { + "begin": 43595, + "end": 43680, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 43595, + "end": 43680, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 43595, + "end": 43680, + "name": "POP", + "source": 34 + }, + { + "begin": 43595, + "end": 43680, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43686, + "end": 43844, + "name": "tag", + "source": 34, + "value": "1109" + }, + { + "begin": 43686, + "end": 43844, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43744, + "end": 43753, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 43777, + "end": 43838, + "name": "PUSH [tag]", + "source": 34, + "value": "1603" + }, + { + "begin": 43795, + "end": 43837, + "name": "PUSH [tag]", + "source": 34, + "value": "1604" + }, + { + "begin": 43804, + "end": 43836, + "name": "PUSH [tag]", + "source": 34, + "value": "1605" + }, + { + "begin": 43830, + "end": 43835, + "name": "DUP5", + "source": 34 + }, + { + "begin": 43804, + "end": 43836, + "name": "PUSH [tag]", + "source": 34, + "value": "1108" + }, + { + "begin": 43804, + "end": 43836, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43804, + "end": 43836, + "name": "tag", + "source": 34, + "value": "1605" + }, + { + "begin": 43804, + "end": 43836, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43795, + "end": 43837, + "name": "PUSH [tag]", + "source": 34, + "value": "1054" + }, + { + "begin": 43795, + "end": 43837, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43795, + "end": 43837, + "name": "tag", + "source": 34, + "value": "1604" + }, + { + "begin": 43795, + "end": 43837, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43777, + "end": 43838, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 43777, + "end": 43838, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43777, + "end": 43838, + "name": "tag", + "source": 34, + "value": "1603" + }, + { + "begin": 43777, + "end": 43838, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43764, + "end": 43838, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 43764, + "end": 43838, + "name": "POP", + "source": 34 + }, + { + "begin": 43686, + "end": 43844, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 43686, + "end": 43844, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 43686, + "end": 43844, + "name": "POP", + "source": 34 + }, + { + "begin": 43686, + "end": 43844, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43850, + "end": 43997, + "name": "tag", + "source": 34, + "value": "1110" + }, + { + "begin": 43850, + "end": 43997, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43945, + "end": 43990, + "name": "PUSH [tag]", + "source": 34, + "value": "1607" + }, + { + "begin": 43984, + "end": 43989, + "name": "DUP2", + "source": 34 + }, + { + "begin": 43945, + "end": 43990, + "name": "PUSH [tag]", + "source": 34, + "value": "1109" + }, + { + "begin": 43945, + "end": 43990, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 43945, + "end": 43990, + "name": "tag", + "source": 34, + "value": "1607" + }, + { + "begin": 43945, + "end": 43990, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 43940, + "end": 43943, + "name": "DUP3", + "source": 34 + }, + { + "begin": 43933, + "end": 43991, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 43850, + "end": 43997, + "name": "POP", + "source": 34 + }, + { + "begin": 43850, + "end": 43997, + "name": "POP", + "source": 34 + }, + { + "begin": 43850, + "end": 43997, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 44003, + "end": 44171, + "name": "tag", + "source": 34, + "value": "1111" + }, + { + "begin": 44003, + "end": 44171, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 44086, + "end": 44097, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 44120, + "end": 44126, + "name": "DUP3", + "source": 34 + }, + { + "begin": 44115, + "end": 44118, + "name": "DUP3", + "source": 34 + }, + { + "begin": 44108, + "end": 44127, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 44160, + "end": 44164, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 44155, + "end": 44158, + "name": "DUP3", + "source": 34 + }, + { + "begin": 44151, + "end": 44165, + "name": "ADD", + "source": 34 + }, + { + "begin": 44136, + "end": 44165, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 44136, + "end": 44165, + "name": "POP", + "source": 34 + }, + { + "begin": 44003, + "end": 44171, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 44003, + "end": 44171, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 44003, + "end": 44171, + "name": "POP", + "source": 34 + }, + { + "begin": 44003, + "end": 44171, + "name": "POP", + "source": 34 + }, + { + "begin": 44003, + "end": 44171, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 44177, + "end": 44291, + "name": "tag", + "source": 34, + "value": "1112" + }, + { + "begin": 44177, + "end": 44291, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 44177, + "end": 44291, + "name": "POP", + "source": 34 + }, + { + "begin": 44177, + "end": 44291, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 44297, + "end": 44659, + "name": "tag", + "source": 34, + "value": "1113" + }, + { + "begin": 44297, + "end": 44659, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 44438, + "end": 44441, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 44459, + "end": 44524, + "name": "PUSH [tag]", + "source": 34, + "value": "1611" + }, + { + "begin": 44522, + "end": 44523, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 44517, + "end": 44520, + "name": "DUP4", + "source": 34 + }, + { + "begin": 44459, + "end": 44524, + "name": "PUSH [tag]", + "source": 34, + "value": "1111" + }, + { + "begin": 44459, + "end": 44524, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 44459, + "end": 44524, + "name": "tag", + "source": 34, + "value": "1611" + }, + { + "begin": 44459, + "end": 44524, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 44452, + "end": 44524, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 44452, + "end": 44524, + "name": "POP", + "source": 34 + }, + { + "begin": 44533, + "end": 44626, + "name": "PUSH [tag]", + "source": 34, + "value": "1612" + }, + { + "begin": 44622, + "end": 44625, + "name": "DUP3", + "source": 34 + }, + { + "begin": 44533, + "end": 44626, + "name": "PUSH [tag]", + "source": 34, + "value": "1112" + }, + { + "begin": 44533, + "end": 44626, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 44533, + "end": 44626, + "name": "tag", + "source": 34, + "value": "1612" + }, + { + "begin": 44533, + "end": 44626, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 44651, + "end": 44652, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 44646, + "end": 44649, + "name": "DUP3", + "source": 34 + }, + { + "begin": 44642, + "end": 44653, + "name": "ADD", + "source": 34 + }, + { + "begin": 44635, + "end": 44653, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 44635, + "end": 44653, + "name": "POP", + "source": 34 + }, + { + "begin": 44297, + "end": 44659, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 44297, + "end": 44659, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 44297, + "end": 44659, + "name": "POP", + "source": 34 + }, + { + "begin": 44297, + "end": 44659, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "name": "tag", + "source": 34, + "value": "645" + }, + { + "begin": 44665, + "end": 45429, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 44922, + "end": 44926, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 44960, + "end": 44963, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 44949, + "end": 44958, + "name": "DUP3", + "source": 34 + }, + { + "begin": 44945, + "end": 44964, + "name": "ADD", + "source": 34 + }, + { + "begin": 44937, + "end": 44964, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 44937, + "end": 44964, + "name": "POP", + "source": 34 + }, + { + "begin": 44974, + "end": 45053, + "name": "PUSH [tag]", + "source": 34, + "value": "1614" + }, + { + "begin": 45050, + "end": 45051, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 45039, + "end": 45048, + "name": "DUP4", + "source": 34 + }, + { + "begin": 45035, + "end": 45052, + "name": "ADD", + "source": 34 + }, + { + "begin": 45026, + "end": 45032, + "name": "DUP7", + "source": 34 + }, + { + "begin": 44974, + "end": 45053, + "name": "PUSH [tag]", + "source": 34, + "value": "1110" + }, + { + "begin": 44974, + "end": 45053, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 44974, + "end": 45053, + "name": "tag", + "source": 34, + "value": "1614" + }, + { + "begin": 44974, + "end": 45053, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 45063, + "end": 45135, + "name": "PUSH [tag]", + "source": 34, + "value": "1615" + }, + { + "begin": 45131, + "end": 45133, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 45120, + "end": 45129, + "name": "DUP4", + "source": 34 + }, + { + "begin": 45116, + "end": 45134, + "name": "ADD", + "source": 34 + }, + { + "begin": 45107, + "end": 45113, + "name": "DUP6", + "source": 34 + }, + { + "begin": 45063, + "end": 45135, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 45063, + "end": 45135, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 45063, + "end": 45135, + "name": "tag", + "source": 34, + "value": "1615" + }, + { + "begin": 45063, + "end": 45135, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 45145, + "end": 45217, + "name": "PUSH [tag]", + "source": 34, + "value": "1616" + }, + { + "begin": 45213, + "end": 45215, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 45202, + "end": 45211, + "name": "DUP4", + "source": 34 + }, + { + "begin": 45198, + "end": 45216, + "name": "ADD", + "source": 34 + }, + { + "begin": 45189, + "end": 45195, + "name": "DUP5", + "source": 34 + }, + { + "begin": 45145, + "end": 45217, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 45145, + "end": 45217, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 45145, + "end": 45217, + "name": "tag", + "source": 34, + "value": "1616" + }, + { + "begin": 45145, + "end": 45217, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 45264, + "end": 45273, + "name": "DUP2", + "source": 34 + }, + { + "begin": 45258, + "end": 45262, + "name": "DUP2", + "source": 34 + }, + { + "begin": 45254, + "end": 45274, + "name": "SUB", + "source": 34 + }, + { + "begin": 45249, + "end": 45251, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 45238, + "end": 45247, + "name": "DUP4", + "source": 34 + }, + { + "begin": 45234, + "end": 45252, + "name": "ADD", + "source": 34 + }, + { + "begin": 45227, + "end": 45275, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 45292, + "end": 45422, + "name": "PUSH [tag]", + "source": 34, + "value": "1617" + }, + { + "begin": 45417, + "end": 45421, + "name": "DUP2", + "source": 34 + }, + { + "begin": 45292, + "end": 45422, + "name": "PUSH [tag]", + "source": 34, + "value": "1113" + }, + { + "begin": 45292, + "end": 45422, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 45292, + "end": 45422, + "name": "tag", + "source": 34, + "value": "1617" + }, + { + "begin": 45292, + "end": 45422, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 45284, + "end": 45422, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 45284, + "end": 45422, + "name": "POP", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "name": "POP", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "name": "POP", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "name": "POP", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "name": "POP", + "source": 34 + }, + { + "begin": 44665, + "end": 45429, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "name": "tag", + "source": 34, + "value": "656" + }, + { + "begin": 45435, + "end": 46199, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 45692, + "end": 45696, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 45730, + "end": 45733, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 45719, + "end": 45728, + "name": "DUP3", + "source": 34 + }, + { + "begin": 45715, + "end": 45734, + "name": "ADD", + "source": 34 + }, + { + "begin": 45707, + "end": 45734, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 45707, + "end": 45734, + "name": "POP", + "source": 34 + }, + { + "begin": 45744, + "end": 45815, + "name": "PUSH [tag]", + "source": 34, + "value": "1619" + }, + { + "begin": 45812, + "end": 45813, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 45801, + "end": 45810, + "name": "DUP4", + "source": 34 + }, + { + "begin": 45797, + "end": 45814, + "name": "ADD", + "source": 34 + }, + { + "begin": 45788, + "end": 45794, + "name": "DUP7", + "source": 34 + }, + { + "begin": 45744, + "end": 45815, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 45744, + "end": 45815, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 45744, + "end": 45815, + "name": "tag", + "source": 34, + "value": "1619" + }, + { + "begin": 45744, + "end": 45815, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 45825, + "end": 45905, + "name": "PUSH [tag]", + "source": 34, + "value": "1620" + }, + { + "begin": 45901, + "end": 45903, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 45890, + "end": 45899, + "name": "DUP4", + "source": 34 + }, + { + "begin": 45886, + "end": 45904, + "name": "ADD", + "source": 34 + }, + { + "begin": 45877, + "end": 45883, + "name": "DUP6", + "source": 34 + }, + { + "begin": 45825, + "end": 45905, + "name": "PUSH [tag]", + "source": 34, + "value": "1110" + }, + { + "begin": 45825, + "end": 45905, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 45825, + "end": 45905, + "name": "tag", + "source": 34, + "value": "1620" + }, + { + "begin": 45825, + "end": 45905, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 45915, + "end": 45987, + "name": "PUSH [tag]", + "source": 34, + "value": "1621" + }, + { + "begin": 45983, + "end": 45985, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 45972, + "end": 45981, + "name": "DUP4", + "source": 34 + }, + { + "begin": 45968, + "end": 45986, + "name": "ADD", + "source": 34 + }, + { + "begin": 45959, + "end": 45965, + "name": "DUP5", + "source": 34 + }, + { + "begin": 45915, + "end": 45987, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 45915, + "end": 45987, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 45915, + "end": 45987, + "name": "tag", + "source": 34, + "value": "1621" + }, + { + "begin": 45915, + "end": 45987, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46034, + "end": 46043, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46028, + "end": 46032, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46024, + "end": 46044, + "name": "SUB", + "source": 34 + }, + { + "begin": 46019, + "end": 46021, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 46008, + "end": 46017, + "name": "DUP4", + "source": 34 + }, + { + "begin": 46004, + "end": 46022, + "name": "ADD", + "source": 34 + }, + { + "begin": 45997, + "end": 46045, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 46062, + "end": 46192, + "name": "PUSH [tag]", + "source": 34, + "value": "1622" + }, + { + "begin": 46187, + "end": 46191, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46062, + "end": 46192, + "name": "PUSH [tag]", + "source": 34, + "value": "1113" + }, + { + "begin": 46062, + "end": 46192, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46062, + "end": 46192, + "name": "tag", + "source": 34, + "value": "1622" + }, + { + "begin": 46062, + "end": 46192, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46054, + "end": 46192, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 46054, + "end": 46192, + "name": "POP", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "name": "POP", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "name": "POP", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "name": "POP", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "name": "POP", + "source": 34 + }, + { + "begin": 45435, + "end": 46199, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46205, + "end": 46525, + "name": "tag", + "source": 34, + "value": "665" + }, + { + "begin": 46205, + "end": 46525, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46320, + "end": 46324, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 46358, + "end": 46360, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 46347, + "end": 46356, + "name": "DUP3", + "source": 34 + }, + { + "begin": 46343, + "end": 46361, + "name": "ADD", + "source": 34 + }, + { + "begin": 46335, + "end": 46361, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 46335, + "end": 46361, + "name": "POP", + "source": 34 + }, + { + "begin": 46371, + "end": 46436, + "name": "PUSH [tag]", + "source": 34, + "value": "1624" + }, + { + "begin": 46433, + "end": 46434, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 46422, + "end": 46431, + "name": "DUP4", + "source": 34 + }, + { + "begin": 46418, + "end": 46435, + "name": "ADD", + "source": 34 + }, + { + "begin": 46409, + "end": 46415, + "name": "DUP6", + "source": 34 + }, + { + "begin": 46371, + "end": 46436, + "name": "PUSH [tag]", + "source": 34, + "value": "1096" + }, + { + "begin": 46371, + "end": 46436, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46371, + "end": 46436, + "name": "tag", + "source": 34, + "value": "1624" + }, + { + "begin": 46371, + "end": 46436, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46446, + "end": 46518, + "name": "PUSH [tag]", + "source": 34, + "value": "1625" + }, + { + "begin": 46514, + "end": 46516, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 46503, + "end": 46512, + "name": "DUP4", + "source": 34 + }, + { + "begin": 46499, + "end": 46517, + "name": "ADD", + "source": 34 + }, + { + "begin": 46490, + "end": 46496, + "name": "DUP5", + "source": 34 + }, + { + "begin": 46446, + "end": 46518, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 46446, + "end": 46518, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46446, + "end": 46518, + "name": "tag", + "source": 34, + "value": "1625" + }, + { + "begin": 46446, + "end": 46518, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46205, + "end": 46525, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 46205, + "end": 46525, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 46205, + "end": 46525, + "name": "POP", + "source": 34 + }, + { + "begin": 46205, + "end": 46525, + "name": "POP", + "source": 34 + }, + { + "begin": 46205, + "end": 46525, + "name": "POP", + "source": 34 + }, + { + "begin": 46205, + "end": 46525, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46531, + "end": 46608, + "name": "tag", + "source": 34, + "value": "1114" + }, + { + "begin": 46531, + "end": 46608, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46568, + "end": 46575, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 46597, + "end": 46602, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46586, + "end": 46602, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 46586, + "end": 46602, + "name": "POP", + "source": 34 + }, + { + "begin": 46531, + "end": 46608, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 46531, + "end": 46608, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 46531, + "end": 46608, + "name": "POP", + "source": 34 + }, + { + "begin": 46531, + "end": 46608, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46614, + "end": 46736, + "name": "tag", + "source": 34, + "value": "1115" + }, + { + "begin": 46614, + "end": 46736, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46687, + "end": 46711, + "name": "PUSH [tag]", + "source": 34, + "value": "1628" + }, + { + "begin": 46705, + "end": 46710, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46687, + "end": 46711, + "name": "PUSH [tag]", + "source": 34, + "value": "1114" + }, + { + "begin": 46687, + "end": 46711, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46687, + "end": 46711, + "name": "tag", + "source": 34, + "value": "1628" + }, + { + "begin": 46687, + "end": 46711, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46680, + "end": 46685, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46677, + "end": 46712, + "name": "EQ", + "source": 34 + }, + { + "begin": 46667, + "end": 46730, + "name": "PUSH [tag]", + "source": 34, + "value": "1629" + }, + { + "begin": 46667, + "end": 46730, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 46726, + "end": 46727, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 46723, + "end": 46724, + "name": "DUP1", + "source": 34 + }, + { + "begin": 46716, + "end": 46728, + "name": "REVERT", + "source": 34 + }, + { + "begin": 46667, + "end": 46730, + "name": "tag", + "source": 34, + "value": "1629" + }, + { + "begin": 46667, + "end": 46730, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46614, + "end": 46736, + "name": "POP", + "source": 34 + }, + { + "begin": 46614, + "end": 46736, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46742, + "end": 46885, + "name": "tag", + "source": 34, + "value": "1116" + }, + { + "begin": 46742, + "end": 46885, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46799, + "end": 46804, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 46830, + "end": 46836, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46824, + "end": 46837, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 46815, + "end": 46837, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 46815, + "end": 46837, + "name": "POP", + "source": 34 + }, + { + "begin": 46846, + "end": 46879, + "name": "PUSH [tag]", + "source": 34, + "value": "1631" + }, + { + "begin": 46873, + "end": 46878, + "name": "DUP2", + "source": 34 + }, + { + "begin": 46846, + "end": 46879, + "name": "PUSH [tag]", + "source": 34, + "value": "1115" + }, + { + "begin": 46846, + "end": 46879, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46846, + "end": 46879, + "name": "tag", + "source": 34, + "value": "1631" + }, + { + "begin": 46846, + "end": 46879, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46742, + "end": 46885, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 46742, + "end": 46885, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 46742, + "end": 46885, + "name": "POP", + "source": 34 + }, + { + "begin": 46742, + "end": 46885, + "name": "POP", + "source": 34 + }, + { + "begin": 46742, + "end": 46885, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 46891, + "end": 47242, + "name": "tag", + "source": 34, + "value": "669" + }, + { + "begin": 46891, + "end": 47242, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46961, + "end": 46967, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47010, + "end": 47012, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 46998, + "end": 47007, + "name": "DUP3", + "source": 34 + }, + { + "begin": 46989, + "end": 46996, + "name": "DUP5", + "source": 34 + }, + { + "begin": 46985, + "end": 47008, + "name": "SUB", + "source": 34 + }, + { + "begin": 46981, + "end": 47013, + "name": "SLT", + "source": 34 + }, + { + "begin": 46978, + "end": 47097, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 46978, + "end": 47097, + "name": "PUSH [tag]", + "source": 34, + "value": "1633" + }, + { + "begin": 46978, + "end": 47097, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 47016, + "end": 47095, + "name": "PUSH [tag]", + "source": 34, + "value": "1634" + }, + { + "begin": 47016, + "end": 47095, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 47016, + "end": 47095, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47016, + "end": 47095, + "name": "tag", + "source": 34, + "value": "1634" + }, + { + "begin": 47016, + "end": 47095, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 46978, + "end": 47097, + "name": "tag", + "source": 34, + "value": "1633" + }, + { + "begin": 46978, + "end": 47097, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47136, + "end": 47137, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47161, + "end": 47225, + "name": "PUSH [tag]", + "source": 34, + "value": "1635" + }, + { + "begin": 47217, + "end": 47224, + "name": "DUP5", + "source": 34 + }, + { + "begin": 47208, + "end": 47214, + "name": "DUP3", + "source": 34 + }, + { + "begin": 47197, + "end": 47206, + "name": "DUP6", + "source": 34 + }, + { + "begin": 47193, + "end": 47215, + "name": "ADD", + "source": 34 + }, + { + "begin": 47161, + "end": 47225, + "name": "PUSH [tag]", + "source": 34, + "value": "1116" + }, + { + "begin": 47161, + "end": 47225, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47161, + "end": 47225, + "name": "tag", + "source": 34, + "value": "1635" + }, + { + "begin": 47161, + "end": 47225, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47151, + "end": 47225, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 47151, + "end": 47225, + "name": "POP", + "source": 34 + }, + { + "begin": 47107, + "end": 47235, + "name": "POP", + "source": 34 + }, + { + "begin": 46891, + "end": 47242, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 46891, + "end": 47242, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 46891, + "end": 47242, + "name": "POP", + "source": 34 + }, + { + "begin": 46891, + "end": 47242, + "name": "POP", + "source": 34 + }, + { + "begin": 46891, + "end": 47242, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47248, + "end": 47419, + "name": "tag", + "source": 34, + "value": "724" + }, + { + "begin": 47248, + "end": 47419, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47287, + "end": 47290, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47310, + "end": 47334, + "name": "PUSH [tag]", + "source": 34, + "value": "1637" + }, + { + "begin": 47328, + "end": 47333, + "name": "DUP3", + "source": 34 + }, + { + "begin": 47310, + "end": 47334, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 47310, + "end": 47334, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47310, + "end": 47334, + "name": "tag", + "source": 34, + "value": "1637" + }, + { + "begin": 47310, + "end": 47334, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47301, + "end": 47334, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 47301, + "end": 47334, + "name": "POP", + "source": 34 + }, + { + "begin": 47356, + "end": 47360, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47349, + "end": 47354, + "name": "DUP3", + "source": 34 + }, + { + "begin": 47346, + "end": 47361, + "name": "SUB", + "source": 34 + }, + { + "begin": 47343, + "end": 47384, + "name": "PUSH [tag]", + "source": 34, + "value": "1638" + }, + { + "begin": 47343, + "end": 47384, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 47364, + "end": 47382, + "name": "PUSH [tag]", + "source": 34, + "value": "1639" + }, + { + "begin": 47364, + "end": 47382, + "name": "PUSH [tag]", + "source": 34, + "value": "1083" + }, + { + "begin": 47364, + "end": 47382, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47364, + "end": 47382, + "name": "tag", + "source": 34, + "value": "1639" + }, + { + "begin": 47364, + "end": 47382, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47343, + "end": 47384, + "name": "tag", + "source": 34, + "value": "1638" + }, + { + "begin": 47343, + "end": 47384, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47411, + "end": 47412, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 47404, + "end": 47409, + "name": "DUP3", + "source": 34 + }, + { + "begin": 47400, + "end": 47413, + "name": "SUB", + "source": 34 + }, + { + "begin": 47393, + "end": 47413, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 47393, + "end": 47413, + "name": "POP", + "source": 34 + }, + { + "begin": 47248, + "end": 47419, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 47248, + "end": 47419, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 47248, + "end": 47419, + "name": "POP", + "source": 34 + }, + { + "begin": 47248, + "end": 47419, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47425, + "end": 47572, + "name": "tag", + "source": 34, + "value": "1117" + }, + { + "begin": 47425, + "end": 47572, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47526, + "end": 47537, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47563, + "end": 47566, + "name": "DUP2", + "source": 34 + }, + { + "begin": 47548, + "end": 47566, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 47548, + "end": 47566, + "name": "POP", + "source": 34 + }, + { + "begin": 47425, + "end": 47572, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 47425, + "end": 47572, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 47425, + "end": 47572, + "name": "POP", + "source": 34 + }, + { + "begin": 47425, + "end": 47572, + "name": "POP", + "source": 34 + }, + { + "begin": 47425, + "end": 47572, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47578, + "end": 47976, + "name": "tag", + "source": 34, + "value": "1118" + }, + { + "begin": 47578, + "end": 47976, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47737, + "end": 47740, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47758, + "end": 47841, + "name": "PUSH [tag]", + "source": 34, + "value": "1642" + }, + { + "begin": 47839, + "end": 47840, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47834, + "end": 47837, + "name": "DUP4", + "source": 34 + }, + { + "begin": 47758, + "end": 47841, + "name": "PUSH [tag]", + "source": 34, + "value": "1117" + }, + { + "begin": 47758, + "end": 47841, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47758, + "end": 47841, + "name": "tag", + "source": 34, + "value": "1642" + }, + { + "begin": 47758, + "end": 47841, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47751, + "end": 47841, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 47751, + "end": 47841, + "name": "POP", + "source": 34 + }, + { + "begin": 47850, + "end": 47943, + "name": "PUSH [tag]", + "source": 34, + "value": "1643" + }, + { + "begin": 47939, + "end": 47942, + "name": "DUP3", + "source": 34 + }, + { + "begin": 47850, + "end": 47943, + "name": "PUSH [tag]", + "source": 34, + "value": "1112" + }, + { + "begin": 47850, + "end": 47943, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47850, + "end": 47943, + "name": "tag", + "source": 34, + "value": "1643" + }, + { + "begin": 47850, + "end": 47943, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 47968, + "end": 47969, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 47963, + "end": 47966, + "name": "DUP3", + "source": 34 + }, + { + "begin": 47959, + "end": 47970, + "name": "ADD", + "source": 34 + }, + { + "begin": 47952, + "end": 47970, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 47952, + "end": 47970, + "name": "POP", + "source": 34 + }, + { + "begin": 47578, + "end": 47976, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 47578, + "end": 47976, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 47578, + "end": 47976, + "name": "POP", + "source": 34 + }, + { + "begin": 47578, + "end": 47976, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 47982, + "end": 48361, + "name": "tag", + "source": 34, + "value": "779" + }, + { + "begin": 47982, + "end": 48361, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 48166, + "end": 48169, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 48188, + "end": 48335, + "name": "PUSH [tag]", + "source": 34, + "value": "1645" + }, + { + "begin": 48331, + "end": 48334, + "name": "DUP3", + "source": 34 + }, + { + "begin": 48188, + "end": 48335, + "name": "PUSH [tag]", + "source": 34, + "value": "1118" + }, + { + "begin": 48188, + "end": 48335, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 48188, + "end": 48335, + "name": "tag", + "source": 34, + "value": "1645" + }, + { + "begin": 48188, + "end": 48335, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 48181, + "end": 48335, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 48181, + "end": 48335, + "name": "POP", + "source": 34 + }, + { + "begin": 48352, + "end": 48355, + "name": "DUP2", + "source": 34 + }, + { + "begin": 48345, + "end": 48355, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 48345, + "end": 48355, + "name": "POP", + "source": 34 + }, + { + "begin": 47982, + "end": 48361, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 47982, + "end": 48361, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 47982, + "end": 48361, + "name": "POP", + "source": 34 + }, + { + "begin": 47982, + "end": 48361, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 48367, + "end": 48699, + "name": "tag", + "source": 34, + "value": "785" + }, + { + "begin": 48367, + "end": 48699, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 48488, + "end": 48492, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 48526, + "end": 48528, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 48515, + "end": 48524, + "name": "DUP3", + "source": 34 + }, + { + "begin": 48511, + "end": 48529, + "name": "ADD", + "source": 34 + }, + { + "begin": 48503, + "end": 48529, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 48503, + "end": 48529, + "name": "POP", + "source": 34 + }, + { + "begin": 48539, + "end": 48610, + "name": "PUSH [tag]", + "source": 34, + "value": "1647" + }, + { + "begin": 48607, + "end": 48608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 48596, + "end": 48605, + "name": "DUP4", + "source": 34 + }, + { + "begin": 48592, + "end": 48609, + "name": "ADD", + "source": 34 + }, + { + "begin": 48583, + "end": 48589, + "name": "DUP6", + "source": 34 + }, + { + "begin": 48539, + "end": 48610, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 48539, + "end": 48610, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 48539, + "end": 48610, + "name": "tag", + "source": 34, + "value": "1647" + }, + { + "begin": 48539, + "end": 48610, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 48620, + "end": 48692, + "name": "PUSH [tag]", + "source": 34, + "value": "1648" + }, + { + "begin": 48688, + "end": 48690, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 48677, + "end": 48686, + "name": "DUP4", + "source": 34 + }, + { + "begin": 48673, + "end": 48691, + "name": "ADD", + "source": 34 + }, + { + "begin": 48664, + "end": 48670, + "name": "DUP5", + "source": 34 + }, + { + "begin": 48620, + "end": 48692, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 48620, + "end": 48692, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 48620, + "end": 48692, + "name": "tag", + "source": 34, + "value": "1648" + }, + { + "begin": 48620, + "end": 48692, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 48367, + "end": 48699, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 48367, + "end": 48699, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 48367, + "end": 48699, + "name": "POP", + "source": 34 + }, + { + "begin": 48367, + "end": 48699, + "name": "POP", + "source": 34 + }, + { + "begin": 48367, + "end": 48699, + "name": "POP", + "source": 34 + }, + { + "begin": 48367, + "end": 48699, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "name": "tag", + "source": 34, + "value": "840" + }, + { + "begin": 48705, + "end": 49203, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 48882, + "end": 48886, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 48920, + "end": 48922, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 48909, + "end": 48918, + "name": "DUP3", + "source": 34 + }, + { + "begin": 48905, + "end": 48923, + "name": "ADD", + "source": 34 + }, + { + "begin": 48897, + "end": 48923, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 48897, + "end": 48923, + "name": "POP", + "source": 34 + }, + { + "begin": 48933, + "end": 49018, + "name": "PUSH [tag]", + "source": 34, + "value": "1650" + }, + { + "begin": 49015, + "end": 49016, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 49004, + "end": 49013, + "name": "DUP4", + "source": 34 + }, + { + "begin": 49000, + "end": 49017, + "name": "ADD", + "source": 34 + }, + { + "begin": 48991, + "end": 48997, + "name": "DUP7", + "source": 34 + }, + { + "begin": 48933, + "end": 49018, + "name": "PUSH [tag]", + "source": 34, + "value": "1088" + }, + { + "begin": 48933, + "end": 49018, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 48933, + "end": 49018, + "name": "tag", + "source": 34, + "value": "1650" + }, + { + "begin": 48933, + "end": 49018, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49028, + "end": 49114, + "name": "PUSH [tag]", + "source": 34, + "value": "1651" + }, + { + "begin": 49110, + "end": 49112, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 49099, + "end": 49108, + "name": "DUP4", + "source": 34 + }, + { + "begin": 49095, + "end": 49113, + "name": "ADD", + "source": 34 + }, + { + "begin": 49086, + "end": 49092, + "name": "DUP6", + "source": 34 + }, + { + "begin": 49028, + "end": 49114, + "name": "PUSH [tag]", + "source": 34, + "value": "1088" + }, + { + "begin": 49028, + "end": 49114, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49028, + "end": 49114, + "name": "tag", + "source": 34, + "value": "1651" + }, + { + "begin": 49028, + "end": 49114, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49124, + "end": 49196, + "name": "PUSH [tag]", + "source": 34, + "value": "1652" + }, + { + "begin": 49192, + "end": 49194, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 49181, + "end": 49190, + "name": "DUP4", + "source": 34 + }, + { + "begin": 49177, + "end": 49195, + "name": "ADD", + "source": 34 + }, + { + "begin": 49168, + "end": 49174, + "name": "DUP5", + "source": 34 + }, + { + "begin": 49124, + "end": 49196, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 49124, + "end": 49196, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49124, + "end": 49196, + "name": "tag", + "source": 34, + "value": "1652" + }, + { + "begin": 49124, + "end": 49196, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "name": "POP", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "name": "POP", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "name": "POP", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "name": "POP", + "source": 34 + }, + { + "begin": 48705, + "end": 49203, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49209, + "end": 49350, + "name": "tag", + "source": 34, + "value": "1119" + }, + { + "begin": 49209, + "end": 49350, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49265, + "end": 49270, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 49296, + "end": 49302, + "name": "DUP2", + "source": 34 + }, + { + "begin": 49290, + "end": 49303, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 49281, + "end": 49303, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 49281, + "end": 49303, + "name": "POP", + "source": 34 + }, + { + "begin": 49312, + "end": 49344, + "name": "PUSH [tag]", + "source": 34, + "value": "1654" + }, + { + "begin": 49338, + "end": 49343, + "name": "DUP2", + "source": 34 + }, + { + "begin": 49312, + "end": 49344, + "name": "PUSH [tag]", + "source": 34, + "value": "1052" + }, + { + "begin": 49312, + "end": 49344, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49312, + "end": 49344, + "name": "tag", + "source": 34, + "value": "1654" + }, + { + "begin": 49312, + "end": 49344, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49209, + "end": 49350, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 49209, + "end": 49350, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 49209, + "end": 49350, + "name": "POP", + "source": 34 + }, + { + "begin": 49209, + "end": 49350, + "name": "POP", + "source": 34 + }, + { + "begin": 49209, + "end": 49350, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49356, + "end": 49493, + "name": "tag", + "source": 34, + "value": "1120" + }, + { + "begin": 49356, + "end": 49493, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49410, + "end": 49415, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 49441, + "end": 49447, + "name": "DUP2", + "source": 34 + }, + { + "begin": 49435, + "end": 49448, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 49426, + "end": 49448, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 49426, + "end": 49448, + "name": "POP", + "source": 34 + }, + { + "begin": 49457, + "end": 49487, + "name": "PUSH [tag]", + "source": 34, + "value": "1656" + }, + { + "begin": 49481, + "end": 49486, + "name": "DUP2", + "source": 34 + }, + { + "begin": 49457, + "end": 49487, + "name": "PUSH [tag]", + "source": 34, + "value": "1072" + }, + { + "begin": 49457, + "end": 49487, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49457, + "end": 49487, + "name": "tag", + "source": 34, + "value": "1656" + }, + { + "begin": 49457, + "end": 49487, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49356, + "end": 49493, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 49356, + "end": 49493, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 49356, + "end": 49493, + "name": "POP", + "source": 34 + }, + { + "begin": 49356, + "end": 49493, + "name": "POP", + "source": 34 + }, + { + "begin": 49356, + "end": 49493, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49542, + "end": 50540, + "name": "tag", + "source": 34, + "value": "1121" + }, + { + "begin": 49542, + "end": 50540, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49637, + "end": 49642, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 49681, + "end": 49685, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 49669, + "end": 49678, + "name": "DUP3", + "source": 34 + }, + { + "begin": 49664, + "end": 49667, + "name": "DUP5", + "source": 34 + }, + { + "begin": 49660, + "end": 49679, + "name": "SUB", + "source": 34 + }, + { + "begin": 49656, + "end": 49686, + "name": "SLT", + "source": 34 + }, + { + "begin": 49653, + "end": 49770, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 49653, + "end": 49770, + "name": "PUSH [tag]", + "source": 34, + "value": "1658" + }, + { + "begin": 49653, + "end": 49770, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 49689, + "end": 49768, + "name": "PUSH [tag]", + "source": 34, + "value": "1659" + }, + { + "begin": 49689, + "end": 49768, + "name": "PUSH [tag]", + "source": 34, + "value": "1011" + }, + { + "begin": 49689, + "end": 49768, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49689, + "end": 49768, + "name": "tag", + "source": 34, + "value": "1659" + }, + { + "begin": 49689, + "end": 49768, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49653, + "end": 49770, + "name": "tag", + "source": 34, + "value": "1658" + }, + { + "begin": 49653, + "end": 49770, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49788, + "end": 49809, + "name": "PUSH [tag]", + "source": 34, + "value": "1660" + }, + { + "begin": 49804, + "end": 49808, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 49788, + "end": 49809, + "name": "PUSH [tag]", + "source": 34, + "value": "1014" + }, + { + "begin": 49788, + "end": 49809, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49788, + "end": 49809, + "name": "tag", + "source": 34, + "value": "1660" + }, + { + "begin": 49788, + "end": 49809, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49779, + "end": 49809, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 49779, + "end": 49809, + "name": "POP", + "source": 34 + }, + { + "begin": 49871, + "end": 49872, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 49911, + "end": 49970, + "name": "PUSH [tag]", + "source": 34, + "value": "1661" + }, + { + "begin": 49966, + "end": 49969, + "name": "DUP5", + "source": 34 + }, + { + "begin": 49957, + "end": 49963, + "name": "DUP3", + "source": 34 + }, + { + "begin": 49946, + "end": 49955, + "name": "DUP6", + "source": 34 + }, + { + "begin": 49942, + "end": 49964, + "name": "ADD", + "source": 34 + }, + { + "begin": 49911, + "end": 49970, + "name": "PUSH [tag]", + "source": 34, + "value": "1119" + }, + { + "begin": 49911, + "end": 49970, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 49911, + "end": 49970, + "name": "tag", + "source": 34, + "value": "1661" + }, + { + "begin": 49911, + "end": 49970, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 49904, + "end": 49908, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 49897, + "end": 49902, + "name": "DUP4", + "source": 34 + }, + { + "begin": 49893, + "end": 49909, + "name": "ADD", + "source": 34 + }, + { + "begin": 49886, + "end": 49971, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 49819, + "end": 49982, + "name": "POP", + "source": 34 + }, + { + "begin": 50043, + "end": 50045, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 50084, + "end": 50160, + "name": "PUSH [tag]", + "source": 34, + "value": "1662" + }, + { + "begin": 50156, + "end": 50159, + "name": "DUP5", + "source": 34 + }, + { + "begin": 50147, + "end": 50153, + "name": "DUP3", + "source": 34 + }, + { + "begin": 50136, + "end": 50145, + "name": "DUP6", + "source": 34 + }, + { + "begin": 50132, + "end": 50154, + "name": "ADD", + "source": 34 + }, + { + "begin": 50084, + "end": 50160, + "name": "PUSH [tag]", + "source": 34, + "value": "1090" + }, + { + "begin": 50084, + "end": 50160, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 50084, + "end": 50160, + "name": "tag", + "source": 34, + "value": "1662" + }, + { + "begin": 50084, + "end": 50160, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50077, + "end": 50081, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 50070, + "end": 50075, + "name": "DUP4", + "source": 34 + }, + { + "begin": 50066, + "end": 50082, + "name": "ADD", + "source": 34 + }, + { + "begin": 50059, + "end": 50161, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 49992, + "end": 50172, + "name": "POP", + "source": 34 + }, + { + "begin": 50241, + "end": 50243, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 50282, + "end": 50339, + "name": "PUSH [tag]", + "source": 34, + "value": "1663" + }, + { + "begin": 50335, + "end": 50338, + "name": "DUP5", + "source": 34 + }, + { + "begin": 50326, + "end": 50332, + "name": "DUP3", + "source": 34 + }, + { + "begin": 50315, + "end": 50324, + "name": "DUP6", + "source": 34 + }, + { + "begin": 50311, + "end": 50333, + "name": "ADD", + "source": 34 + }, + { + "begin": 50282, + "end": 50339, + "name": "PUSH [tag]", + "source": 34, + "value": "1120" + }, + { + "begin": 50282, + "end": 50339, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 50282, + "end": 50339, + "name": "tag", + "source": 34, + "value": "1663" + }, + { + "begin": 50282, + "end": 50339, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50275, + "end": 50279, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 50268, + "end": 50273, + "name": "DUP4", + "source": 34 + }, + { + "begin": 50264, + "end": 50280, + "name": "ADD", + "source": 34 + }, + { + "begin": 50257, + "end": 50340, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 50182, + "end": 50351, + "name": "POP", + "source": 34 + }, + { + "begin": 50423, + "end": 50425, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 50464, + "end": 50521, + "name": "PUSH [tag]", + "source": 34, + "value": "1664" + }, + { + "begin": 50517, + "end": 50520, + "name": "DUP5", + "source": 34 + }, + { + "begin": 50508, + "end": 50514, + "name": "DUP3", + "source": 34 + }, + { + "begin": 50497, + "end": 50506, + "name": "DUP6", + "source": 34 + }, + { + "begin": 50493, + "end": 50515, + "name": "ADD", + "source": 34 + }, + { + "begin": 50464, + "end": 50521, + "name": "PUSH [tag]", + "source": 34, + "value": "1120" + }, + { + "begin": 50464, + "end": 50521, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 50464, + "end": 50521, + "name": "tag", + "source": 34, + "value": "1664" + }, + { + "begin": 50464, + "end": 50521, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50457, + "end": 50461, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 50450, + "end": 50455, + "name": "DUP4", + "source": 34 + }, + { + "begin": 50446, + "end": 50462, + "name": "ADD", + "source": 34 + }, + { + "begin": 50439, + "end": 50522, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 50361, + "end": 50533, + "name": "POP", + "source": 34 + }, + { + "begin": 49542, + "end": 50540, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 49542, + "end": 50540, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 49542, + "end": 50540, + "name": "POP", + "source": 34 + }, + { + "begin": 49542, + "end": 50540, + "name": "POP", + "source": 34 + }, + { + "begin": 49542, + "end": 50540, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 50546, + "end": 50968, + "name": "tag", + "source": 34, + "value": "844" + }, + { + "begin": 50546, + "end": 50968, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50651, + "end": 50657, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 50700, + "end": 50703, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 50688, + "end": 50697, + "name": "DUP3", + "source": 34 + }, + { + "begin": 50679, + "end": 50686, + "name": "DUP5", + "source": 34 + }, + { + "begin": 50675, + "end": 50698, + "name": "SUB", + "source": 34 + }, + { + "begin": 50671, + "end": 50704, + "name": "SLT", + "source": 34 + }, + { + "begin": 50668, + "end": 50788, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 50668, + "end": 50788, + "name": "PUSH [tag]", + "source": 34, + "value": "1666" + }, + { + "begin": 50668, + "end": 50788, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 50707, + "end": 50786, + "name": "PUSH [tag]", + "source": 34, + "value": "1667" + }, + { + "begin": 50707, + "end": 50786, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 50707, + "end": 50786, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 50707, + "end": 50786, + "name": "tag", + "source": 34, + "value": "1667" + }, + { + "begin": 50707, + "end": 50786, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50668, + "end": 50788, + "name": "tag", + "source": 34, + "value": "1666" + }, + { + "begin": 50668, + "end": 50788, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50827, + "end": 50828, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 50852, + "end": 50951, + "name": "PUSH [tag]", + "source": 34, + "value": "1668" + }, + { + "begin": 50943, + "end": 50950, + "name": "DUP5", + "source": 34 + }, + { + "begin": 50934, + "end": 50940, + "name": "DUP3", + "source": 34 + }, + { + "begin": 50923, + "end": 50932, + "name": "DUP6", + "source": 34 + }, + { + "begin": 50919, + "end": 50941, + "name": "ADD", + "source": 34 + }, + { + "begin": 50852, + "end": 50951, + "name": "PUSH [tag]", + "source": 34, + "value": "1121" + }, + { + "begin": 50852, + "end": 50951, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 50852, + "end": 50951, + "name": "tag", + "source": 34, + "value": "1668" + }, + { + "begin": 50852, + "end": 50951, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50842, + "end": 50951, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 50842, + "end": 50951, + "name": "POP", + "source": 34 + }, + { + "begin": 50798, + "end": 50961, + "name": "POP", + "source": 34 + }, + { + "begin": 50546, + "end": 50968, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 50546, + "end": 50968, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 50546, + "end": 50968, + "name": "POP", + "source": 34 + }, + { + "begin": 50546, + "end": 50968, + "name": "POP", + "source": 34 + }, + { + "begin": 50546, + "end": 50968, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "name": "tag", + "source": 34, + "value": "847" + }, + { + "begin": 50974, + "end": 51416, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 51123, + "end": 51127, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 51161, + "end": 51163, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 51150, + "end": 51159, + "name": "DUP3", + "source": 34 + }, + { + "begin": 51146, + "end": 51164, + "name": "ADD", + "source": 34 + }, + { + "begin": 51138, + "end": 51164, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 51138, + "end": 51164, + "name": "POP", + "source": 34 + }, + { + "begin": 51174, + "end": 51245, + "name": "PUSH [tag]", + "source": 34, + "value": "1670" + }, + { + "begin": 51242, + "end": 51243, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 51231, + "end": 51240, + "name": "DUP4", + "source": 34 + }, + { + "begin": 51227, + "end": 51244, + "name": "ADD", + "source": 34 + }, + { + "begin": 51218, + "end": 51224, + "name": "DUP7", + "source": 34 + }, + { + "begin": 51174, + "end": 51245, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 51174, + "end": 51245, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 51174, + "end": 51245, + "name": "tag", + "source": 34, + "value": "1670" + }, + { + "begin": 51174, + "end": 51245, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 51255, + "end": 51327, + "name": "PUSH [tag]", + "source": 34, + "value": "1671" + }, + { + "begin": 51323, + "end": 51325, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 51312, + "end": 51321, + "name": "DUP4", + "source": 34 + }, + { + "begin": 51308, + "end": 51326, + "name": "ADD", + "source": 34 + }, + { + "begin": 51299, + "end": 51305, + "name": "DUP6", + "source": 34 + }, + { + "begin": 51255, + "end": 51327, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 51255, + "end": 51327, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 51255, + "end": 51327, + "name": "tag", + "source": 34, + "value": "1671" + }, + { + "begin": 51255, + "end": 51327, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 51337, + "end": 51409, + "name": "PUSH [tag]", + "source": 34, + "value": "1672" + }, + { + "begin": 51405, + "end": 51407, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 51394, + "end": 51403, + "name": "DUP4", + "source": 34 + }, + { + "begin": 51390, + "end": 51408, + "name": "ADD", + "source": 34 + }, + { + "begin": 51381, + "end": 51387, + "name": "DUP5", + "source": 34 + }, + { + "begin": 51337, + "end": 51409, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 51337, + "end": 51409, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 51337, + "end": 51409, + "name": "tag", + "source": 34, + "value": "1672" + }, + { + "begin": 51337, + "end": 51409, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "name": "POP", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "name": "POP", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "name": "POP", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "name": "POP", + "source": 34 + }, + { + "begin": 50974, + "end": 51416, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "tag", + "source": 34, + "value": "850" + }, + { + "begin": 51422, + "end": 52277, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 51699, + "end": 51703, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 51737, + "end": 51740, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 51726, + "end": 51735, + "name": "DUP3", + "source": 34 + }, + { + "begin": 51722, + "end": 51741, + "name": "ADD", + "source": 34 + }, + { + "begin": 51714, + "end": 51741, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 51714, + "end": 51741, + "name": "POP", + "source": 34 + }, + { + "begin": 51751, + "end": 51822, + "name": "PUSH [tag]", + "source": 34, + "value": "1674" + }, + { + "begin": 51819, + "end": 51820, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 51808, + "end": 51817, + "name": "DUP4", + "source": 34 + }, + { + "begin": 51804, + "end": 51821, + "name": "ADD", + "source": 34 + }, + { + "begin": 51795, + "end": 51801, + "name": "DUP8", + "source": 34 + }, + { + "begin": 51751, + "end": 51822, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 51751, + "end": 51822, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 51751, + "end": 51822, + "name": "tag", + "source": 34, + "value": "1674" + }, + { + "begin": 51751, + "end": 51822, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 51832, + "end": 51904, + "name": "PUSH [tag]", + "source": 34, + "value": "1675" + }, + { + "begin": 51900, + "end": 51902, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 51889, + "end": 51898, + "name": "DUP4", + "source": 34 + }, + { + "begin": 51885, + "end": 51903, + "name": "ADD", + "source": 34 + }, + { + "begin": 51876, + "end": 51882, + "name": "DUP7", + "source": 34 + }, + { + "begin": 51832, + "end": 51904, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 51832, + "end": 51904, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 51832, + "end": 51904, + "name": "tag", + "source": 34, + "value": "1675" + }, + { + "begin": 51832, + "end": 51904, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 51951, + "end": 51960, + "name": "DUP2", + "source": 34 + }, + { + "begin": 51945, + "end": 51949, + "name": "DUP2", + "source": 34 + }, + { + "begin": 51941, + "end": 51961, + "name": "SUB", + "source": 34 + }, + { + "begin": 51936, + "end": 51938, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 51925, + "end": 51934, + "name": "DUP4", + "source": 34 + }, + { + "begin": 51921, + "end": 51939, + "name": "ADD", + "source": 34 + }, + { + "begin": 51914, + "end": 51962, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 51979, + "end": 52087, + "name": "PUSH [tag]", + "source": 34, + "value": "1676" + }, + { + "begin": 52082, + "end": 52086, + "name": "DUP2", + "source": 34 + }, + { + "begin": 52073, + "end": 52079, + "name": "DUP6", + "source": 34 + }, + { + "begin": 51979, + "end": 52087, + "name": "PUSH [tag]", + "source": 34, + "value": "1047" + }, + { + "begin": 51979, + "end": 52087, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 51979, + "end": 52087, + "name": "tag", + "source": 34, + "value": "1676" + }, + { + "begin": 51979, + "end": 52087, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 51971, + "end": 52087, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 51971, + "end": 52087, + "name": "POP", + "source": 34 + }, + { + "begin": 52134, + "end": 52143, + "name": "DUP2", + "source": 34 + }, + { + "begin": 52128, + "end": 52132, + "name": "DUP2", + "source": 34 + }, + { + "begin": 52124, + "end": 52144, + "name": "SUB", + "source": 34 + }, + { + "begin": 52119, + "end": 52121, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 52108, + "end": 52117, + "name": "DUP4", + "source": 34 + }, + { + "begin": 52104, + "end": 52122, + "name": "ADD", + "source": 34 + }, + { + "begin": 52097, + "end": 52145, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 52162, + "end": 52270, + "name": "PUSH [tag]", + "source": 34, + "value": "1677" + }, + { + "begin": 52265, + "end": 52269, + "name": "DUP2", + "source": 34 + }, + { + "begin": 52256, + "end": 52262, + "name": "DUP5", + "source": 34 + }, + { + "begin": 52162, + "end": 52270, + "name": "PUSH [tag]", + "source": 34, + "value": "1047" + }, + { + "begin": 52162, + "end": 52270, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 52162, + "end": 52270, + "name": "tag", + "source": 34, + "value": "1677" + }, + { + "begin": 52162, + "end": 52270, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52154, + "end": 52270, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 52154, + "end": 52270, + "name": "POP", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "POP", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "POP", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "POP", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "POP", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "name": "POP", + "source": 34 + }, + { + "begin": 51422, + "end": 52277, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 52283, + "end": 52594, + "name": "tag", + "source": 34, + "value": "1122" + }, + { + "begin": 52283, + "end": 52594, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52360, + "end": 52364, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 52450, + "end": 52468, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 52442, + "end": 52448, + "name": "DUP3", + "source": 34 + }, + { + "begin": 52439, + "end": 52469, + "name": "GT", + "source": 34 + }, + { + "begin": 52436, + "end": 52492, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 52436, + "end": 52492, + "name": "PUSH [tag]", + "source": 34, + "value": "1679" + }, + { + "begin": 52436, + "end": 52492, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 52472, + "end": 52490, + "name": "PUSH [tag]", + "source": 34, + "value": "1680" + }, + { + "begin": 52472, + "end": 52490, + "name": "PUSH [tag]", + "source": 34, + "value": "590" + }, + { + "begin": 52472, + "end": 52490, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 52472, + "end": 52490, + "name": "tag", + "source": 34, + "value": "1680" + }, + { + "begin": 52472, + "end": 52490, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52436, + "end": 52492, + "name": "tag", + "source": 34, + "value": "1679" + }, + { + "begin": 52436, + "end": 52492, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52522, + "end": 52526, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 52514, + "end": 52520, + "name": "DUP3", + "source": 34 + }, + { + "begin": 52510, + "end": 52527, + "name": "MUL", + "source": 34 + }, + { + "begin": 52502, + "end": 52527, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 52502, + "end": 52527, + "name": "POP", + "source": 34 + }, + { + "begin": 52582, + "end": 52586, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 52576, + "end": 52580, + "name": "DUP2", + "source": 34 + }, + { + "begin": 52572, + "end": 52587, + "name": "ADD", + "source": 34 + }, + { + "begin": 52564, + "end": 52587, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 52564, + "end": 52587, + "name": "POP", + "source": 34 + }, + { + "begin": 52283, + "end": 52594, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 52283, + "end": 52594, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 52283, + "end": 52594, + "name": "POP", + "source": 34 + }, + { + "begin": 52283, + "end": 52594, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 52617, + "end": 53349, + "name": "tag", + "source": 34, + "value": "1123" + }, + { + "begin": 52617, + "end": 53349, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52724, + "end": 52729, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 52749, + "end": 52830, + "name": "PUSH [tag]", + "source": 34, + "value": "1682" + }, + { + "begin": 52765, + "end": 52829, + "name": "PUSH [tag]", + "source": 34, + "value": "1683" + }, + { + "begin": 52822, + "end": 52828, + "name": "DUP5", + "source": 34 + }, + { + "begin": 52765, + "end": 52829, + "name": "PUSH [tag]", + "source": 34, + "value": "1122" + }, + { + "begin": 52765, + "end": 52829, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 52765, + "end": 52829, + "name": "tag", + "source": 34, + "value": "1683" + }, + { + "begin": 52765, + "end": 52829, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52749, + "end": 52830, + "name": "PUSH [tag]", + "source": 34, + "value": "1014" + }, + { + "begin": 52749, + "end": 52830, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 52749, + "end": 52830, + "name": "tag", + "source": 34, + "value": "1682" + }, + { + "begin": 52749, + "end": 52830, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52740, + "end": 52830, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 52740, + "end": 52830, + "name": "POP", + "source": 34 + }, + { + "begin": 52850, + "end": 52855, + "name": "DUP1", + "source": 34 + }, + { + "begin": 52879, + "end": 52885, + "name": "DUP4", + "source": 34 + }, + { + "begin": 52872, + "end": 52877, + "name": "DUP3", + "source": 34 + }, + { + "begin": 52865, + "end": 52886, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 52913, + "end": 52917, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 52906, + "end": 52911, + "name": "DUP3", + "source": 34 + }, + { + "begin": 52902, + "end": 52918, + "name": "ADD", + "source": 34 + }, + { + "begin": 52895, + "end": 52918, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 52895, + "end": 52918, + "name": "POP", + "source": 34 + }, + { + "begin": 52966, + "end": 52970, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 52958, + "end": 52964, + "name": "DUP5", + "source": 34 + }, + { + "begin": 52954, + "end": 52971, + "name": "MUL", + "source": 34 + }, + { + "begin": 52946, + "end": 52952, + "name": "DUP4", + "source": 34 + }, + { + "begin": 52942, + "end": 52972, + "name": "ADD", + "source": 34 + }, + { + "begin": 52995, + "end": 52998, + "name": "DUP6", + "source": 34 + }, + { + "begin": 52987, + "end": 52993, + "name": "DUP2", + "source": 34 + }, + { + "begin": 52984, + "end": 52999, + "name": "GT", + "source": 34 + }, + { + "begin": 52981, + "end": 53103, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 52981, + "end": 53103, + "name": "PUSH [tag]", + "source": 34, + "value": "1684" + }, + { + "begin": 52981, + "end": 53103, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 53014, + "end": 53093, + "name": "PUSH [tag]", + "source": 34, + "value": "1685" + }, + { + "begin": 53014, + "end": 53093, + "name": "PUSH [tag]", + "source": 34, + "value": "1018" + }, + { + "begin": 53014, + "end": 53093, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 53014, + "end": 53093, + "name": "tag", + "source": 34, + "value": "1685" + }, + { + "begin": 53014, + "end": 53093, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 52981, + "end": 53103, + "name": "tag", + "source": 34, + "value": "1684" + }, + { + "begin": 52981, + "end": 53103, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53129, + "end": 53135, + "name": "DUP4", + "source": 34 + }, + { + "begin": 53112, + "end": 53343, + "name": "tag", + "source": 34, + "value": "1686" + }, + { + "begin": 53112, + "end": 53343, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53146, + "end": 53152, + "name": "DUP2", + "source": 34 + }, + { + "begin": 53141, + "end": 53144, + "name": "DUP2", + "source": 34 + }, + { + "begin": 53138, + "end": 53153, + "name": "LT", + "source": 34 + }, + { + "begin": 53112, + "end": 53343, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 53112, + "end": 53343, + "name": "PUSH [tag]", + "source": 34, + "value": "1688" + }, + { + "begin": 53112, + "end": 53343, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 53221, + "end": 53224, + "name": "DUP1", + "source": 34 + }, + { + "begin": 53250, + "end": 53298, + "name": "PUSH [tag]", + "source": 34, + "value": "1689" + }, + { + "begin": 53294, + "end": 53297, + "name": "DUP9", + "source": 34 + }, + { + "begin": 53282, + "end": 53292, + "name": "DUP3", + "source": 34 + }, + { + "begin": 53250, + "end": 53298, + "name": "PUSH [tag]", + "source": 34, + "value": "1116" + }, + { + "begin": 53250, + "end": 53298, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 53250, + "end": 53298, + "name": "tag", + "source": 34, + "value": "1689" + }, + { + "begin": 53250, + "end": 53298, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53245, + "end": 53248, + "name": "DUP5", + "source": 34 + }, + { + "begin": 53238, + "end": 53299, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 53328, + "end": 53332, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 53323, + "end": 53326, + "name": "DUP5", + "source": 34 + }, + { + "begin": 53319, + "end": 53333, + "name": "ADD", + "source": 34 + }, + { + "begin": 53312, + "end": 53333, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 53312, + "end": 53333, + "name": "POP", + "source": 34 + }, + { + "begin": 53188, + "end": 53343, + "name": "POP", + "source": 34 + }, + { + "begin": 53172, + "end": 53176, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 53167, + "end": 53170, + "name": "DUP2", + "source": 34 + }, + { + "begin": 53163, + "end": 53177, + "name": "ADD", + "source": 34 + }, + { + "begin": 53156, + "end": 53177, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 53156, + "end": 53177, + "name": "POP", + "source": 34 + }, + { + "begin": 53112, + "end": 53343, + "name": "PUSH [tag]", + "source": 34, + "value": "1686" + }, + { + "begin": 53112, + "end": 53343, + "name": "JUMP", + "source": 34 + }, + { + "begin": 53112, + "end": 53343, + "name": "tag", + "source": 34, + "value": "1688" + }, + { + "begin": 53112, + "end": 53343, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53116, + "end": 53137, + "name": "POP", + "source": 34 + }, + { + "begin": 52730, + "end": 53349, + "name": "POP", + "source": 34 + }, + { + "begin": 52730, + "end": 53349, + "name": "POP", + "source": 34 + }, + { + "begin": 52617, + "end": 53349, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 52617, + "end": 53349, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 52617, + "end": 53349, + "name": "POP", + "source": 34 + }, + { + "begin": 52617, + "end": 53349, + "name": "POP", + "source": 34 + }, + { + "begin": 52617, + "end": 53349, + "name": "POP", + "source": 34 + }, + { + "begin": 52617, + "end": 53349, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 53372, + "end": 53757, + "name": "tag", + "source": 34, + "value": "1124" + }, + { + "begin": 53372, + "end": 53757, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53454, + "end": 53459, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 53503, + "end": 53506, + "name": "DUP3", + "source": 34 + }, + { + "begin": 53496, + "end": 53500, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 53488, + "end": 53494, + "name": "DUP4", + "source": 34 + }, + { + "begin": 53484, + "end": 53501, + "name": "ADD", + "source": 34 + }, + { + "begin": 53480, + "end": 53507, + "name": "SLT", + "source": 34 + }, + { + "begin": 53470, + "end": 53592, + "name": "PUSH [tag]", + "source": 34, + "value": "1691" + }, + { + "begin": 53470, + "end": 53592, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 53511, + "end": 53590, + "name": "PUSH [tag]", + "source": 34, + "value": "1692" + }, + { + "begin": 53511, + "end": 53590, + "name": "PUSH [tag]", + "source": 34, + "value": "1016" + }, + { + "begin": 53511, + "end": 53590, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 53511, + "end": 53590, + "name": "tag", + "source": 34, + "value": "1692" + }, + { + "begin": 53511, + "end": 53590, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53470, + "end": 53592, + "name": "tag", + "source": 34, + "value": "1691" + }, + { + "begin": 53470, + "end": 53592, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53621, + "end": 53627, + "name": "DUP2", + "source": 34 + }, + { + "begin": 53615, + "end": 53628, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 53646, + "end": 53751, + "name": "PUSH [tag]", + "source": 34, + "value": "1693" + }, + { + "begin": 53747, + "end": 53750, + "name": "DUP5", + "source": 34 + }, + { + "begin": 53739, + "end": 53745, + "name": "DUP3", + "source": 34 + }, + { + "begin": 53732, + "end": 53736, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 53724, + "end": 53730, + "name": "DUP7", + "source": 34 + }, + { + "begin": 53720, + "end": 53737, + "name": "ADD", + "source": 34 + }, + { + "begin": 53646, + "end": 53751, + "name": "PUSH [tag]", + "source": 34, + "value": "1123" + }, + { + "begin": 53646, + "end": 53751, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 53646, + "end": 53751, + "name": "tag", + "source": 34, + "value": "1693" + }, + { + "begin": 53646, + "end": 53751, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53637, + "end": 53751, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 53637, + "end": 53751, + "name": "POP", + "source": 34 + }, + { + "begin": 53460, + "end": 53757, + "name": "POP", + "source": 34 + }, + { + "begin": 53372, + "end": 53757, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 53372, + "end": 53757, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 53372, + "end": 53757, + "name": "POP", + "source": 34 + }, + { + "begin": 53372, + "end": 53757, + "name": "POP", + "source": 34 + }, + { + "begin": 53372, + "end": 53757, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 53763, + "end": 54317, + "name": "tag", + "source": 34, + "value": "854" + }, + { + "begin": 53763, + "end": 54317, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53858, + "end": 53864, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 53907, + "end": 53909, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 53895, + "end": 53904, + "name": "DUP3", + "source": 34 + }, + { + "begin": 53886, + "end": 53893, + "name": "DUP5", + "source": 34 + }, + { + "begin": 53882, + "end": 53905, + "name": "SUB", + "source": 34 + }, + { + "begin": 53878, + "end": 53910, + "name": "SLT", + "source": 34 + }, + { + "begin": 53875, + "end": 53994, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 53875, + "end": 53994, + "name": "PUSH [tag]", + "source": 34, + "value": "1695" + }, + { + "begin": 53875, + "end": 53994, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 53913, + "end": 53992, + "name": "PUSH [tag]", + "source": 34, + "value": "1696" + }, + { + "begin": 53913, + "end": 53992, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 53913, + "end": 53992, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 53913, + "end": 53992, + "name": "tag", + "source": 34, + "value": "1696" + }, + { + "begin": 53913, + "end": 53992, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 53875, + "end": 53994, + "name": "tag", + "source": 34, + "value": "1695" + }, + { + "begin": 53875, + "end": 53994, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54054, + "end": 54055, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 54043, + "end": 54052, + "name": "DUP3", + "source": 34 + }, + { + "begin": 54039, + "end": 54056, + "name": "ADD", + "source": 34 + }, + { + "begin": 54033, + "end": 54057, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 54084, + "end": 54102, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 54076, + "end": 54082, + "name": "DUP2", + "source": 34 + }, + { + "begin": 54073, + "end": 54103, + "name": "GT", + "source": 34 + }, + { + "begin": 54070, + "end": 54187, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 54070, + "end": 54187, + "name": "PUSH [tag]", + "source": 34, + "value": "1697" + }, + { + "begin": 54070, + "end": 54187, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 54106, + "end": 54185, + "name": "PUSH [tag]", + "source": 34, + "value": "1698" + }, + { + "begin": 54106, + "end": 54185, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 54106, + "end": 54185, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54106, + "end": 54185, + "name": "tag", + "source": 34, + "value": "1698" + }, + { + "begin": 54106, + "end": 54185, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54070, + "end": 54187, + "name": "tag", + "source": 34, + "value": "1697" + }, + { + "begin": 54070, + "end": 54187, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54211, + "end": 54300, + "name": "PUSH [tag]", + "source": 34, + "value": "1699" + }, + { + "begin": 54292, + "end": 54299, + "name": "DUP5", + "source": 34 + }, + { + "begin": 54283, + "end": 54289, + "name": "DUP3", + "source": 34 + }, + { + "begin": 54272, + "end": 54281, + "name": "DUP6", + "source": 34 + }, + { + "begin": 54268, + "end": 54290, + "name": "ADD", + "source": 34 + }, + { + "begin": 54211, + "end": 54300, + "name": "PUSH [tag]", + "source": 34, + "value": "1124" + }, + { + "begin": 54211, + "end": 54300, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54211, + "end": 54300, + "name": "tag", + "source": 34, + "value": "1699" + }, + { + "begin": 54211, + "end": 54300, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54201, + "end": 54300, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 54201, + "end": 54300, + "name": "POP", + "source": 34 + }, + { + "begin": 54004, + "end": 54310, + "name": "POP", + "source": 34 + }, + { + "begin": 53763, + "end": 54317, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 53763, + "end": 54317, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 53763, + "end": 54317, + "name": "POP", + "source": 34 + }, + { + "begin": 53763, + "end": 54317, + "name": "POP", + "source": 34 + }, + { + "begin": 53763, + "end": 54317, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54323, + "end": 54556, + "name": "tag", + "source": 34, + "value": "869" + }, + { + "begin": 54323, + "end": 54556, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54362, + "end": 54365, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 54385, + "end": 54409, + "name": "PUSH [tag]", + "source": 34, + "value": "1701" + }, + { + "begin": 54403, + "end": 54408, + "name": "DUP3", + "source": 34 + }, + { + "begin": 54385, + "end": 54409, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 54385, + "end": 54409, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54385, + "end": 54409, + "name": "tag", + "source": 34, + "value": "1701" + }, + { + "begin": 54385, + "end": 54409, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54376, + "end": 54409, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 54376, + "end": 54409, + "name": "POP", + "source": 34 + }, + { + "begin": 54431, + "end": 54497, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 54424, + "end": 54429, + "name": "DUP3", + "source": 34 + }, + { + "begin": 54421, + "end": 54498, + "name": "SUB", + "source": 34 + }, + { + "begin": 54418, + "end": 54521, + "name": "PUSH [tag]", + "source": 34, + "value": "1702" + }, + { + "begin": 54418, + "end": 54521, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 54501, + "end": 54519, + "name": "PUSH [tag]", + "source": 34, + "value": "1703" + }, + { + "begin": 54501, + "end": 54519, + "name": "PUSH [tag]", + "source": 34, + "value": "1083" + }, + { + "begin": 54501, + "end": 54519, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54501, + "end": 54519, + "name": "tag", + "source": 34, + "value": "1703" + }, + { + "begin": 54501, + "end": 54519, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54418, + "end": 54521, + "name": "tag", + "source": 34, + "value": "1702" + }, + { + "begin": 54418, + "end": 54521, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54548, + "end": 54549, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 54541, + "end": 54546, + "name": "DUP3", + "source": 34 + }, + { + "begin": 54537, + "end": 54550, + "name": "ADD", + "source": 34 + }, + { + "begin": 54530, + "end": 54550, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 54530, + "end": 54550, + "name": "POP", + "source": 34 + }, + { + "begin": 54323, + "end": 54556, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 54323, + "end": 54556, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 54323, + "end": 54556, + "name": "POP", + "source": 34 + }, + { + "begin": 54323, + "end": 54556, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "tag", + "source": 34, + "value": "873" + }, + { + "begin": 54562, + "end": 55115, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54739, + "end": 54743, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 54777, + "end": 54780, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 54766, + "end": 54775, + "name": "DUP3", + "source": 34 + }, + { + "begin": 54762, + "end": 54781, + "name": "ADD", + "source": 34 + }, + { + "begin": 54754, + "end": 54781, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 54754, + "end": 54781, + "name": "POP", + "source": 34 + }, + { + "begin": 54791, + "end": 54862, + "name": "PUSH [tag]", + "source": 34, + "value": "1705" + }, + { + "begin": 54859, + "end": 54860, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 54848, + "end": 54857, + "name": "DUP4", + "source": 34 + }, + { + "begin": 54844, + "end": 54861, + "name": "ADD", + "source": 34 + }, + { + "begin": 54835, + "end": 54841, + "name": "DUP8", + "source": 34 + }, + { + "begin": 54791, + "end": 54862, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 54791, + "end": 54862, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54791, + "end": 54862, + "name": "tag", + "source": 34, + "value": "1705" + }, + { + "begin": 54791, + "end": 54862, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54872, + "end": 54944, + "name": "PUSH [tag]", + "source": 34, + "value": "1706" + }, + { + "begin": 54940, + "end": 54942, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 54929, + "end": 54938, + "name": "DUP4", + "source": 34 + }, + { + "begin": 54925, + "end": 54943, + "name": "ADD", + "source": 34 + }, + { + "begin": 54916, + "end": 54922, + "name": "DUP7", + "source": 34 + }, + { + "begin": 54872, + "end": 54944, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 54872, + "end": 54944, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54872, + "end": 54944, + "name": "tag", + "source": 34, + "value": "1706" + }, + { + "begin": 54872, + "end": 54944, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54954, + "end": 55026, + "name": "PUSH [tag]", + "source": 34, + "value": "1707" + }, + { + "begin": 55022, + "end": 55024, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 55011, + "end": 55020, + "name": "DUP4", + "source": 34 + }, + { + "begin": 55007, + "end": 55025, + "name": "ADD", + "source": 34 + }, + { + "begin": 54998, + "end": 55004, + "name": "DUP6", + "source": 34 + }, + { + "begin": 54954, + "end": 55026, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 54954, + "end": 55026, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 54954, + "end": 55026, + "name": "tag", + "source": 34, + "value": "1707" + }, + { + "begin": 54954, + "end": 55026, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55036, + "end": 55108, + "name": "PUSH [tag]", + "source": 34, + "value": "1708" + }, + { + "begin": 55104, + "end": 55106, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 55093, + "end": 55102, + "name": "DUP4", + "source": 34 + }, + { + "begin": 55089, + "end": 55107, + "name": "ADD", + "source": 34 + }, + { + "begin": 55080, + "end": 55086, + "name": "DUP5", + "source": 34 + }, + { + "begin": 55036, + "end": 55108, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 55036, + "end": 55108, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 55036, + "end": 55108, + "name": "tag", + "source": 34, + "value": "1708" + }, + { + "begin": 55036, + "end": 55108, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "SWAP6", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "POP", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "POP", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "POP", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "POP", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "name": "POP", + "source": 34 + }, + { + "begin": 54562, + "end": 55115, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 55121, + "end": 55238, + "name": "tag", + "source": 34, + "value": "1125" + }, + { + "begin": 55121, + "end": 55238, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55230, + "end": 55231, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 55227, + "end": 55228, + "name": "DUP1", + "source": 34 + }, + { + "begin": 55220, + "end": 55232, + "name": "REVERT", + "source": 34 + }, + { + "begin": 55244, + "end": 55361, + "name": "tag", + "source": 34, + "value": "1126" + }, + { + "begin": 55244, + "end": 55361, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55353, + "end": 55354, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 55350, + "end": 55351, + "name": "DUP1", + "source": 34 + }, + { + "begin": 55343, + "end": 55355, + "name": "REVERT", + "source": 34 + }, + { + "begin": 55367, + "end": 55484, + "name": "tag", + "source": 34, + "value": "1127" + }, + { + "begin": 55367, + "end": 55484, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55476, + "end": 55477, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 55473, + "end": 55474, + "name": "DUP1", + "source": 34 + }, + { + "begin": 55466, + "end": 55478, + "name": "REVERT", + "source": 34 + }, + { + "begin": 55490, + "end": 56230, + "name": "tag", + "source": 34, + "value": "882" + }, + { + "begin": 55490, + "end": 56230, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55583, + "end": 55587, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 55589, + "end": 55595, + "name": "DUP1", + "source": 34 + }, + { + "begin": 55645, + "end": 55656, + "name": "DUP4", + "source": 34 + }, + { + "begin": 55632, + "end": 55657, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 55745, + "end": 55746, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 55739, + "end": 55743, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 55735, + "end": 55747, + "name": "SUB", + "source": 34 + }, + { + "begin": 55724, + "end": 55732, + "name": "DUP5", + "source": 34 + }, + { + "begin": 55708, + "end": 55722, + "name": "CALLDATASIZE", + "source": 34 + }, + { + "begin": 55704, + "end": 55733, + "name": "SUB", + "source": 34 + }, + { + "begin": 55700, + "end": 55748, + "name": "SUB", + "source": 34 + }, + { + "begin": 55680, + "end": 55698, + "name": "DUP2", + "source": 34 + }, + { + "begin": 55676, + "end": 55749, + "name": "SLT", + "source": 34 + }, + { + "begin": 55666, + "end": 55834, + "name": "PUSH [tag]", + "source": 34, + "value": "1713" + }, + { + "begin": 55666, + "end": 55834, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 55753, + "end": 55832, + "name": "PUSH [tag]", + "source": 34, + "value": "1714" + }, + { + "begin": 55753, + "end": 55832, + "name": "PUSH [tag]", + "source": 34, + "value": "1125" + }, + { + "begin": 55753, + "end": 55832, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 55753, + "end": 55832, + "name": "tag", + "source": 34, + "value": "1714" + }, + { + "begin": 55753, + "end": 55832, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55666, + "end": 55834, + "name": "tag", + "source": 34, + "value": "1713" + }, + { + "begin": 55666, + "end": 55834, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55865, + "end": 55883, + "name": "DUP1", + "source": 34 + }, + { + "begin": 55855, + "end": 55863, + "name": "DUP5", + "source": 34 + }, + { + "begin": 55851, + "end": 55884, + "name": "ADD", + "source": 34 + }, + { + "begin": 55843, + "end": 55884, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 55843, + "end": 55884, + "name": "POP", + "source": 34 + }, + { + "begin": 55917, + "end": 55921, + "name": "DUP3", + "source": 34 + }, + { + "begin": 55904, + "end": 55922, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 55894, + "end": 55922, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 55894, + "end": 55922, + "name": "POP", + "source": 34 + }, + { + "begin": 55945, + "end": 55963, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 55937, + "end": 55943, + "name": "DUP3", + "source": 34 + }, + { + "begin": 55934, + "end": 55964, + "name": "GT", + "source": 34 + }, + { + "begin": 55931, + "end": 56048, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 55931, + "end": 56048, + "name": "PUSH [tag]", + "source": 34, + "value": "1715" + }, + { + "begin": 55931, + "end": 56048, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 55967, + "end": 56046, + "name": "PUSH [tag]", + "source": 34, + "value": "1716" + }, + { + "begin": 55967, + "end": 56046, + "name": "PUSH [tag]", + "source": 34, + "value": "1126" + }, + { + "begin": 55967, + "end": 56046, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 55967, + "end": 56046, + "name": "tag", + "source": 34, + "value": "1716" + }, + { + "begin": 55967, + "end": 56046, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55931, + "end": 56048, + "name": "tag", + "source": 34, + "value": "1715" + }, + { + "begin": 55931, + "end": 56048, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56075, + "end": 56077, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 56069, + "end": 56073, + "name": "DUP4", + "source": 34 + }, + { + "begin": 56065, + "end": 56078, + "name": "ADD", + "source": 34 + }, + { + "begin": 56057, + "end": 56078, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 56057, + "end": 56078, + "name": "POP", + "source": 34 + }, + { + "begin": 56132, + "end": 56136, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 56124, + "end": 56130, + "name": "DUP3", + "source": 34 + }, + { + "begin": 56120, + "end": 56137, + "name": "MUL", + "source": 34 + }, + { + "begin": 56104, + "end": 56118, + "name": "CALLDATASIZE", + "source": 34 + }, + { + "begin": 56100, + "end": 56138, + "name": "SUB", + "source": 34 + }, + { + "begin": 56094, + "end": 56098, + "name": "DUP4", + "source": 34 + }, + { + "begin": 56090, + "end": 56139, + "name": "SGT", + "source": 34 + }, + { + "begin": 56087, + "end": 56223, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 56087, + "end": 56223, + "name": "PUSH [tag]", + "source": 34, + "value": "1717" + }, + { + "begin": 56087, + "end": 56223, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 56142, + "end": 56221, + "name": "PUSH [tag]", + "source": 34, + "value": "1718" + }, + { + "begin": 56142, + "end": 56221, + "name": "PUSH [tag]", + "source": 34, + "value": "1127" + }, + { + "begin": 56142, + "end": 56221, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 56142, + "end": 56221, + "name": "tag", + "source": 34, + "value": "1718" + }, + { + "begin": 56142, + "end": 56221, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56087, + "end": 56223, + "name": "tag", + "source": 34, + "value": "1717" + }, + { + "begin": 56087, + "end": 56223, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 55596, + "end": 56230, + "name": "POP", + "source": 34 + }, + { + "begin": 55490, + "end": 56230, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 55490, + "end": 56230, + "name": "POP", + "source": 34 + }, + { + "begin": 55490, + "end": 56230, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 55490, + "end": 56230, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 55490, + "end": 56230, + "name": "POP", + "source": 34 + }, + { + "begin": 55490, + "end": 56230, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 56236, + "end": 56975, + "name": "tag", + "source": 34, + "value": "884" + }, + { + "begin": 56236, + "end": 56975, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56328, + "end": 56332, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 56334, + "end": 56340, + "name": "DUP1", + "source": 34 + }, + { + "begin": 56390, + "end": 56401, + "name": "DUP4", + "source": 34 + }, + { + "begin": 56377, + "end": 56402, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 56490, + "end": 56491, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 56484, + "end": 56488, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 56480, + "end": 56492, + "name": "SUB", + "source": 34 + }, + { + "begin": 56469, + "end": 56477, + "name": "DUP5", + "source": 34 + }, + { + "begin": 56453, + "end": 56467, + "name": "CALLDATASIZE", + "source": 34 + }, + { + "begin": 56449, + "end": 56478, + "name": "SUB", + "source": 34 + }, + { + "begin": 56445, + "end": 56493, + "name": "SUB", + "source": 34 + }, + { + "begin": 56425, + "end": 56443, + "name": "DUP2", + "source": 34 + }, + { + "begin": 56421, + "end": 56494, + "name": "SLT", + "source": 34 + }, + { + "begin": 56411, + "end": 56579, + "name": "PUSH [tag]", + "source": 34, + "value": "1720" + }, + { + "begin": 56411, + "end": 56579, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 56498, + "end": 56577, + "name": "PUSH [tag]", + "source": 34, + "value": "1721" + }, + { + "begin": 56498, + "end": 56577, + "name": "PUSH [tag]", + "source": 34, + "value": "1125" + }, + { + "begin": 56498, + "end": 56577, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 56498, + "end": 56577, + "name": "tag", + "source": 34, + "value": "1721" + }, + { + "begin": 56498, + "end": 56577, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56411, + "end": 56579, + "name": "tag", + "source": 34, + "value": "1720" + }, + { + "begin": 56411, + "end": 56579, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56610, + "end": 56628, + "name": "DUP1", + "source": 34 + }, + { + "begin": 56600, + "end": 56608, + "name": "DUP5", + "source": 34 + }, + { + "begin": 56596, + "end": 56629, + "name": "ADD", + "source": 34 + }, + { + "begin": 56588, + "end": 56629, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 56588, + "end": 56629, + "name": "POP", + "source": 34 + }, + { + "begin": 56662, + "end": 56666, + "name": "DUP3", + "source": 34 + }, + { + "begin": 56649, + "end": 56667, + "name": "CALLDATALOAD", + "source": 34 + }, + { + "begin": 56639, + "end": 56667, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 56639, + "end": 56667, + "name": "POP", + "source": 34 + }, + { + "begin": 56690, + "end": 56708, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 56682, + "end": 56688, + "name": "DUP3", + "source": 34 + }, + { + "begin": 56679, + "end": 56709, + "name": "GT", + "source": 34 + }, + { + "begin": 56676, + "end": 56793, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 56676, + "end": 56793, + "name": "PUSH [tag]", + "source": 34, + "value": "1722" + }, + { + "begin": 56676, + "end": 56793, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 56712, + "end": 56791, + "name": "PUSH [tag]", + "source": 34, + "value": "1723" + }, + { + "begin": 56712, + "end": 56791, + "name": "PUSH [tag]", + "source": 34, + "value": "1126" + }, + { + "begin": 56712, + "end": 56791, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 56712, + "end": 56791, + "name": "tag", + "source": 34, + "value": "1723" + }, + { + "begin": 56712, + "end": 56791, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56676, + "end": 56793, + "name": "tag", + "source": 34, + "value": "1722" + }, + { + "begin": 56676, + "end": 56793, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56820, + "end": 56822, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 56814, + "end": 56818, + "name": "DUP4", + "source": 34 + }, + { + "begin": 56810, + "end": 56823, + "name": "ADD", + "source": 34 + }, + { + "begin": 56802, + "end": 56823, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 56802, + "end": 56823, + "name": "POP", + "source": 34 + }, + { + "begin": 56877, + "end": 56881, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 56869, + "end": 56875, + "name": "DUP3", + "source": 34 + }, + { + "begin": 56865, + "end": 56882, + "name": "MUL", + "source": 34 + }, + { + "begin": 56849, + "end": 56863, + "name": "CALLDATASIZE", + "source": 34 + }, + { + "begin": 56845, + "end": 56883, + "name": "SUB", + "source": 34 + }, + { + "begin": 56839, + "end": 56843, + "name": "DUP4", + "source": 34 + }, + { + "begin": 56835, + "end": 56884, + "name": "SGT", + "source": 34 + }, + { + "begin": 56832, + "end": 56968, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 56832, + "end": 56968, + "name": "PUSH [tag]", + "source": 34, + "value": "1724" + }, + { + "begin": 56832, + "end": 56968, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 56887, + "end": 56966, + "name": "PUSH [tag]", + "source": 34, + "value": "1725" + }, + { + "begin": 56887, + "end": 56966, + "name": "PUSH [tag]", + "source": 34, + "value": "1127" + }, + { + "begin": 56887, + "end": 56966, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 56887, + "end": 56966, + "name": "tag", + "source": 34, + "value": "1725" + }, + { + "begin": 56887, + "end": 56966, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56832, + "end": 56968, + "name": "tag", + "source": 34, + "value": "1724" + }, + { + "begin": 56832, + "end": 56968, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56341, + "end": 56975, + "name": "POP", + "source": 34 + }, + { + "begin": 56236, + "end": 56975, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 56236, + "end": 56975, + "name": "POP", + "source": 34 + }, + { + "begin": 56236, + "end": 56975, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 56236, + "end": 56975, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 56236, + "end": 56975, + "name": "POP", + "source": 34 + }, + { + "begin": 56236, + "end": 56975, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "name": "tag", + "source": 34, + "value": "906" + }, + { + "begin": 56981, + "end": 57423, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57130, + "end": 57134, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 57168, + "end": 57170, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 57157, + "end": 57166, + "name": "DUP3", + "source": 34 + }, + { + "begin": 57153, + "end": 57171, + "name": "ADD", + "source": 34 + }, + { + "begin": 57145, + "end": 57171, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 57145, + "end": 57171, + "name": "POP", + "source": 34 + }, + { + "begin": 57181, + "end": 57252, + "name": "PUSH [tag]", + "source": 34, + "value": "1727" + }, + { + "begin": 57249, + "end": 57250, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 57238, + "end": 57247, + "name": "DUP4", + "source": 34 + }, + { + "begin": 57234, + "end": 57251, + "name": "ADD", + "source": 34 + }, + { + "begin": 57225, + "end": 57231, + "name": "DUP7", + "source": 34 + }, + { + "begin": 57181, + "end": 57252, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 57181, + "end": 57252, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57181, + "end": 57252, + "name": "tag", + "source": 34, + "value": "1727" + }, + { + "begin": 57181, + "end": 57252, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57262, + "end": 57334, + "name": "PUSH [tag]", + "source": 34, + "value": "1728" + }, + { + "begin": 57330, + "end": 57332, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 57319, + "end": 57328, + "name": "DUP4", + "source": 34 + }, + { + "begin": 57315, + "end": 57333, + "name": "ADD", + "source": 34 + }, + { + "begin": 57306, + "end": 57312, + "name": "DUP6", + "source": 34 + }, + { + "begin": 57262, + "end": 57334, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 57262, + "end": 57334, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57262, + "end": 57334, + "name": "tag", + "source": 34, + "value": "1728" + }, + { + "begin": 57262, + "end": 57334, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57344, + "end": 57416, + "name": "PUSH [tag]", + "source": 34, + "value": "1729" + }, + { + "begin": 57412, + "end": 57414, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 57401, + "end": 57410, + "name": "DUP4", + "source": 34 + }, + { + "begin": 57397, + "end": 57415, + "name": "ADD", + "source": 34 + }, + { + "begin": 57388, + "end": 57394, + "name": "DUP5", + "source": 34 + }, + { + "begin": 57344, + "end": 57416, + "name": "PUSH [tag]", + "source": 34, + "value": "1038" + }, + { + "begin": 57344, + "end": 57416, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57344, + "end": 57416, + "name": "tag", + "source": 34, + "value": "1729" + }, + { + "begin": 57344, + "end": 57416, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "name": "POP", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "name": "POP", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "name": "POP", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "name": "POP", + "source": 34 + }, + { + "begin": 56981, + "end": 57423, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57429, + "end": 57505, + "name": "tag", + "source": 34, + "value": "1128" + }, + { + "begin": 57429, + "end": 57505, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57465, + "end": 57472, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 57494, + "end": 57499, + "name": "DUP2", + "source": 34 + }, + { + "begin": 57483, + "end": 57499, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 57483, + "end": 57499, + "name": "POP", + "source": 34 + }, + { + "begin": 57429, + "end": 57505, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 57429, + "end": 57505, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 57429, + "end": 57505, + "name": "POP", + "source": 34 + }, + { + "begin": 57429, + "end": 57505, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57511, + "end": 57626, + "name": "tag", + "source": 34, + "value": "1129" + }, + { + "begin": 57511, + "end": 57626, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57596, + "end": 57619, + "name": "PUSH [tag]", + "source": 34, + "value": "1732" + }, + { + "begin": 57613, + "end": 57618, + "name": "DUP2", + "source": 34 + }, + { + "begin": 57596, + "end": 57619, + "name": "PUSH [tag]", + "source": 34, + "value": "1128" + }, + { + "begin": 57596, + "end": 57619, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57596, + "end": 57619, + "name": "tag", + "source": 34, + "value": "1732" + }, + { + "begin": 57596, + "end": 57619, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57591, + "end": 57594, + "name": "DUP3", + "source": 34 + }, + { + "begin": 57584, + "end": 57620, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 57511, + "end": 57626, + "name": "POP", + "source": 34 + }, + { + "begin": 57511, + "end": 57626, + "name": "POP", + "source": 34 + }, + { + "begin": 57511, + "end": 57626, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57632, + "end": 57850, + "name": "tag", + "source": 34, + "value": "916" + }, + { + "begin": 57632, + "end": 57850, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57723, + "end": 57727, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 57761, + "end": 57763, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 57750, + "end": 57759, + "name": "DUP3", + "source": 34 + }, + { + "begin": 57746, + "end": 57764, + "name": "ADD", + "source": 34 + }, + { + "begin": 57738, + "end": 57764, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 57738, + "end": 57764, + "name": "POP", + "source": 34 + }, + { + "begin": 57774, + "end": 57843, + "name": "PUSH [tag]", + "source": 34, + "value": "1734" + }, + { + "begin": 57840, + "end": 57841, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 57829, + "end": 57838, + "name": "DUP4", + "source": 34 + }, + { + "begin": 57825, + "end": 57842, + "name": "ADD", + "source": 34 + }, + { + "begin": 57816, + "end": 57822, + "name": "DUP5", + "source": 34 + }, + { + "begin": 57774, + "end": 57843, + "name": "PUSH [tag]", + "source": 34, + "value": "1129" + }, + { + "begin": 57774, + "end": 57843, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57774, + "end": 57843, + "name": "tag", + "source": 34, + "value": "1734" + }, + { + "begin": 57774, + "end": 57843, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57632, + "end": 57850, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 57632, + "end": 57850, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 57632, + "end": 57850, + "name": "POP", + "source": 34 + }, + { + "begin": 57632, + "end": 57850, + "name": "POP", + "source": 34 + }, + { + "begin": 57632, + "end": 57850, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57856, + "end": 58185, + "name": "tag", + "source": 34, + "value": "930" + }, + { + "begin": 57856, + "end": 58185, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57915, + "end": 57921, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 57964, + "end": 57966, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 57952, + "end": 57961, + "name": "DUP3", + "source": 34 + }, + { + "begin": 57943, + "end": 57950, + "name": "DUP5", + "source": 34 + }, + { + "begin": 57939, + "end": 57962, + "name": "SUB", + "source": 34 + }, + { + "begin": 57935, + "end": 57967, + "name": "SLT", + "source": 34 + }, + { + "begin": 57932, + "end": 58051, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 57932, + "end": 58051, + "name": "PUSH [tag]", + "source": 34, + "value": "1736" + }, + { + "begin": 57932, + "end": 58051, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 57970, + "end": 58049, + "name": "PUSH [tag]", + "source": 34, + "value": "1737" + }, + { + "begin": 57970, + "end": 58049, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 57970, + "end": 58049, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 57970, + "end": 58049, + "name": "tag", + "source": 34, + "value": "1737" + }, + { + "begin": 57970, + "end": 58049, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 57932, + "end": 58051, + "name": "tag", + "source": 34, + "value": "1736" + }, + { + "begin": 57932, + "end": 58051, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58090, + "end": 58091, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 58115, + "end": 58168, + "name": "PUSH [tag]", + "source": 34, + "value": "1738" + }, + { + "begin": 58160, + "end": 58167, + "name": "DUP5", + "source": 34 + }, + { + "begin": 58151, + "end": 58157, + "name": "DUP3", + "source": 34 + }, + { + "begin": 58140, + "end": 58149, + "name": "DUP6", + "source": 34 + }, + { + "begin": 58136, + "end": 58158, + "name": "ADD", + "source": 34 + }, + { + "begin": 58115, + "end": 58168, + "name": "PUSH [tag]", + "source": 34, + "value": "1040" + }, + { + "begin": 58115, + "end": 58168, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58115, + "end": 58168, + "name": "tag", + "source": 34, + "value": "1738" + }, + { + "begin": 58115, + "end": 58168, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58105, + "end": 58168, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 58105, + "end": 58168, + "name": "POP", + "source": 34 + }, + { + "begin": 58061, + "end": 58178, + "name": "POP", + "source": 34 + }, + { + "begin": 57856, + "end": 58185, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 57856, + "end": 58185, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 57856, + "end": 58185, + "name": "POP", + "source": 34 + }, + { + "begin": 57856, + "end": 58185, + "name": "POP", + "source": 34 + }, + { + "begin": 57856, + "end": 58185, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58191, + "end": 58305, + "name": "tag", + "source": 34, + "value": "1130" + }, + { + "begin": 58191, + "end": 58305, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58258, + "end": 58264, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 58292, + "end": 58297, + "name": "DUP2", + "source": 34 + }, + { + "begin": 58286, + "end": 58298, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 58276, + "end": 58298, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58276, + "end": 58298, + "name": "POP", + "source": 34 + }, + { + "begin": 58191, + "end": 58305, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 58191, + "end": 58305, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58191, + "end": 58305, + "name": "POP", + "source": 34 + }, + { + "begin": 58191, + "end": 58305, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58311, + "end": 58495, + "name": "tag", + "source": 34, + "value": "1131" + }, + { + "begin": 58311, + "end": 58495, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58410, + "end": 58421, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 58444, + "end": 58450, + "name": "DUP3", + "source": 34 + }, + { + "begin": 58439, + "end": 58442, + "name": "DUP3", + "source": 34 + }, + { + "begin": 58432, + "end": 58451, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 58484, + "end": 58488, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 58479, + "end": 58482, + "name": "DUP3", + "source": 34 + }, + { + "begin": 58475, + "end": 58489, + "name": "ADD", + "source": 34 + }, + { + "begin": 58460, + "end": 58489, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58460, + "end": 58489, + "name": "POP", + "source": 34 + }, + { + "begin": 58311, + "end": 58495, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 58311, + "end": 58495, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 58311, + "end": 58495, + "name": "POP", + "source": 34 + }, + { + "begin": 58311, + "end": 58495, + "name": "POP", + "source": 34 + }, + { + "begin": 58311, + "end": 58495, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58501, + "end": 58633, + "name": "tag", + "source": 34, + "value": "1132" + }, + { + "begin": 58501, + "end": 58633, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58568, + "end": 58572, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 58591, + "end": 58594, + "name": "DUP2", + "source": 34 + }, + { + "begin": 58583, + "end": 58594, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58583, + "end": 58594, + "name": "POP", + "source": 34 + }, + { + "begin": 58621, + "end": 58625, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 58616, + "end": 58619, + "name": "DUP3", + "source": 34 + }, + { + "begin": 58612, + "end": 58626, + "name": "ADD", + "source": 34 + }, + { + "begin": 58604, + "end": 58626, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58604, + "end": 58626, + "name": "POP", + "source": 34 + }, + { + "begin": 58501, + "end": 58633, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 58501, + "end": 58633, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58501, + "end": 58633, + "name": "POP", + "source": 34 + }, + { + "begin": 58501, + "end": 58633, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58639, + "end": 58747, + "name": "tag", + "source": 34, + "value": "1133" + }, + { + "begin": 58639, + "end": 58747, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58716, + "end": 58740, + "name": "PUSH [tag]", + "source": 34, + "value": "1743" + }, + { + "begin": 58734, + "end": 58739, + "name": "DUP2", + "source": 34 + }, + { + "begin": 58716, + "end": 58740, + "name": "PUSH [tag]", + "source": 34, + "value": "1114" + }, + { + "begin": 58716, + "end": 58740, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58716, + "end": 58740, + "name": "tag", + "source": 34, + "value": "1743" + }, + { + "begin": 58716, + "end": 58740, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58711, + "end": 58714, + "name": "DUP3", + "source": 34 + }, + { + "begin": 58704, + "end": 58741, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 58639, + "end": 58747, + "name": "POP", + "source": 34 + }, + { + "begin": 58639, + "end": 58747, + "name": "POP", + "source": 34 + }, + { + "begin": 58639, + "end": 58747, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58753, + "end": 58932, + "name": "tag", + "source": 34, + "value": "1134" + }, + { + "begin": 58753, + "end": 58932, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58822, + "end": 58832, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 58843, + "end": 58889, + "name": "PUSH [tag]", + "source": 34, + "value": "1745" + }, + { + "begin": 58885, + "end": 58888, + "name": "DUP4", + "source": 34 + }, + { + "begin": 58877, + "end": 58883, + "name": "DUP4", + "source": 34 + }, + { + "begin": 58843, + "end": 58889, + "name": "PUSH [tag]", + "source": 34, + "value": "1133" + }, + { + "begin": 58843, + "end": 58889, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58843, + "end": 58889, + "name": "tag", + "source": 34, + "value": "1745" + }, + { + "begin": 58843, + "end": 58889, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 58921, + "end": 58925, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 58916, + "end": 58919, + "name": "DUP4", + "source": 34 + }, + { + "begin": 58912, + "end": 58926, + "name": "ADD", + "source": 34 + }, + { + "begin": 58898, + "end": 58926, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58898, + "end": 58926, + "name": "POP", + "source": 34 + }, + { + "begin": 58753, + "end": 58932, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 58753, + "end": 58932, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 58753, + "end": 58932, + "name": "POP", + "source": 34 + }, + { + "begin": 58753, + "end": 58932, + "name": "POP", + "source": 34 + }, + { + "begin": 58753, + "end": 58932, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 58938, + "end": 59051, + "name": "tag", + "source": 34, + "value": "1135" + }, + { + "begin": 58938, + "end": 59051, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59008, + "end": 59012, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 59040, + "end": 59044, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 59035, + "end": 59038, + "name": "DUP3", + "source": 34 + }, + { + "begin": 59031, + "end": 59045, + "name": "ADD", + "source": 34 + }, + { + "begin": 59023, + "end": 59045, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 59023, + "end": 59045, + "name": "POP", + "source": 34 + }, + { + "begin": 58938, + "end": 59051, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 58938, + "end": 59051, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 58938, + "end": 59051, + "name": "POP", + "source": 34 + }, + { + "begin": 58938, + "end": 59051, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 59087, + "end": 59819, + "name": "tag", + "source": 34, + "value": "1136" + }, + { + "begin": 59087, + "end": 59819, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59206, + "end": 59209, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 59235, + "end": 59289, + "name": "PUSH [tag]", + "source": 34, + "value": "1748" + }, + { + "begin": 59283, + "end": 59288, + "name": "DUP3", + "source": 34 + }, + { + "begin": 59235, + "end": 59289, + "name": "PUSH [tag]", + "source": 34, + "value": "1130" + }, + { + "begin": 59235, + "end": 59289, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 59235, + "end": 59289, + "name": "tag", + "source": 34, + "value": "1748" + }, + { + "begin": 59235, + "end": 59289, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59305, + "end": 59391, + "name": "PUSH [tag]", + "source": 34, + "value": "1749" + }, + { + "begin": 59384, + "end": 59390, + "name": "DUP2", + "source": 34 + }, + { + "begin": 59379, + "end": 59382, + "name": "DUP6", + "source": 34 + }, + { + "begin": 59305, + "end": 59391, + "name": "PUSH [tag]", + "source": 34, + "value": "1131" + }, + { + "begin": 59305, + "end": 59391, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 59305, + "end": 59391, + "name": "tag", + "source": 34, + "value": "1749" + }, + { + "begin": 59305, + "end": 59391, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59298, + "end": 59391, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 59298, + "end": 59391, + "name": "POP", + "source": 34 + }, + { + "begin": 59415, + "end": 59471, + "name": "PUSH [tag]", + "source": 34, + "value": "1750" + }, + { + "begin": 59465, + "end": 59470, + "name": "DUP4", + "source": 34 + }, + { + "begin": 59415, + "end": 59471, + "name": "PUSH [tag]", + "source": 34, + "value": "1132" + }, + { + "begin": 59415, + "end": 59471, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 59415, + "end": 59471, + "name": "tag", + "source": 34, + "value": "1750" + }, + { + "begin": 59415, + "end": 59471, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59494, + "end": 59501, + "name": "DUP1", + "source": 34 + }, + { + "begin": 59525, + "end": 59526, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 59510, + "end": 59794, + "name": "tag", + "source": 34, + "value": "1751" + }, + { + "begin": 59510, + "end": 59794, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59535, + "end": 59541, + "name": "DUP4", + "source": 34 + }, + { + "begin": 59532, + "end": 59533, + "name": "DUP2", + "source": 34 + }, + { + "begin": 59529, + "end": 59542, + "name": "LT", + "source": 34 + }, + { + "begin": 59510, + "end": 59794, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 59510, + "end": 59794, + "name": "PUSH [tag]", + "source": 34, + "value": "1753" + }, + { + "begin": 59510, + "end": 59794, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 59611, + "end": 59617, + "name": "DUP2", + "source": 34 + }, + { + "begin": 59605, + "end": 59618, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 59638, + "end": 59701, + "name": "PUSH [tag]", + "source": 34, + "value": "1754" + }, + { + "begin": 59697, + "end": 59700, + "name": "DUP9", + "source": 34 + }, + { + "begin": 59682, + "end": 59695, + "name": "DUP3", + "source": 34 + }, + { + "begin": 59638, + "end": 59701, + "name": "PUSH [tag]", + "source": 34, + "value": "1134" + }, + { + "begin": 59638, + "end": 59701, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 59638, + "end": 59701, + "name": "tag", + "source": 34, + "value": "1754" + }, + { + "begin": 59638, + "end": 59701, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59631, + "end": 59701, + "name": "SWAP8", + "source": 34 + }, + { + "begin": 59631, + "end": 59701, + "name": "POP", + "source": 34 + }, + { + "begin": 59724, + "end": 59784, + "name": "PUSH [tag]", + "source": 34, + "value": "1755" + }, + { + "begin": 59777, + "end": 59783, + "name": "DUP4", + "source": 34 + }, + { + "begin": 59724, + "end": 59784, + "name": "PUSH [tag]", + "source": 34, + "value": "1135" + }, + { + "begin": 59724, + "end": 59784, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 59724, + "end": 59784, + "name": "tag", + "source": 34, + "value": "1755" + }, + { + "begin": 59724, + "end": 59784, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59714, + "end": 59784, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 59714, + "end": 59784, + "name": "POP", + "source": 34 + }, + { + "begin": 59570, + "end": 59794, + "name": "POP", + "source": 34 + }, + { + "begin": 59557, + "end": 59558, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 59554, + "end": 59555, + "name": "DUP2", + "source": 34 + }, + { + "begin": 59550, + "end": 59559, + "name": "ADD", + "source": 34 + }, + { + "begin": 59545, + "end": 59559, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 59545, + "end": 59559, + "name": "POP", + "source": 34 + }, + { + "begin": 59510, + "end": 59794, + "name": "PUSH [tag]", + "source": 34, + "value": "1751" + }, + { + "begin": 59510, + "end": 59794, + "name": "JUMP", + "source": 34 + }, + { + "begin": 59510, + "end": 59794, + "name": "tag", + "source": 34, + "value": "1753" + }, + { + "begin": 59510, + "end": 59794, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59514, + "end": 59528, + "name": "POP", + "source": 34 + }, + { + "begin": 59810, + "end": 59813, + "name": "DUP6", + "source": 34 + }, + { + "begin": 59803, + "end": 59813, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 59803, + "end": 59813, + "name": "POP", + "source": 34 + }, + { + "begin": 59211, + "end": 59819, + "name": "POP", + "source": 34 + }, + { + "begin": 59211, + "end": 59819, + "name": "POP", + "source": 34 + }, + { + "begin": 59211, + "end": 59819, + "name": "POP", + "source": 34 + }, + { + "begin": 59087, + "end": 59819, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 59087, + "end": 59819, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 59087, + "end": 59819, + "name": "POP", + "source": 34 + }, + { + "begin": 59087, + "end": 59819, + "name": "POP", + "source": 34 + }, + { + "begin": 59087, + "end": 59819, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "name": "tag", + "source": 34, + "value": "933" + }, + { + "begin": 59825, + "end": 60418, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60024, + "end": 60028, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 60062, + "end": 60064, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 60051, + "end": 60060, + "name": "DUP3", + "source": 34 + }, + { + "begin": 60047, + "end": 60065, + "name": "ADD", + "source": 34 + }, + { + "begin": 60039, + "end": 60065, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 60039, + "end": 60065, + "name": "POP", + "source": 34 + }, + { + "begin": 60075, + "end": 60146, + "name": "PUSH [tag]", + "source": 34, + "value": "1757" + }, + { + "begin": 60143, + "end": 60144, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 60132, + "end": 60141, + "name": "DUP4", + "source": 34 + }, + { + "begin": 60128, + "end": 60145, + "name": "ADD", + "source": 34 + }, + { + "begin": 60119, + "end": 60125, + "name": "DUP7", + "source": 34 + }, + { + "begin": 60075, + "end": 60146, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 60075, + "end": 60146, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 60075, + "end": 60146, + "name": "tag", + "source": 34, + "value": "1757" + }, + { + "begin": 60075, + "end": 60146, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60193, + "end": 60202, + "name": "DUP2", + "source": 34 + }, + { + "begin": 60187, + "end": 60191, + "name": "DUP2", + "source": 34 + }, + { + "begin": 60183, + "end": 60203, + "name": "SUB", + "source": 34 + }, + { + "begin": 60178, + "end": 60180, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 60167, + "end": 60176, + "name": "DUP4", + "source": 34 + }, + { + "begin": 60163, + "end": 60181, + "name": "ADD", + "source": 34 + }, + { + "begin": 60156, + "end": 60204, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 60221, + "end": 60329, + "name": "PUSH [tag]", + "source": 34, + "value": "1758" + }, + { + "begin": 60324, + "end": 60328, + "name": "DUP2", + "source": 34 + }, + { + "begin": 60315, + "end": 60321, + "name": "DUP6", + "source": 34 + }, + { + "begin": 60221, + "end": 60329, + "name": "PUSH [tag]", + "source": 34, + "value": "1136" + }, + { + "begin": 60221, + "end": 60329, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 60221, + "end": 60329, + "name": "tag", + "source": 34, + "value": "1758" + }, + { + "begin": 60221, + "end": 60329, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60213, + "end": 60329, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 60213, + "end": 60329, + "name": "POP", + "source": 34 + }, + { + "begin": 60339, + "end": 60411, + "name": "PUSH [tag]", + "source": 34, + "value": "1759" + }, + { + "begin": 60407, + "end": 60409, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 60396, + "end": 60405, + "name": "DUP4", + "source": 34 + }, + { + "begin": 60392, + "end": 60410, + "name": "ADD", + "source": 34 + }, + { + "begin": 60383, + "end": 60389, + "name": "DUP5", + "source": 34 + }, + { + "begin": 60339, + "end": 60411, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 60339, + "end": 60411, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 60339, + "end": 60411, + "name": "tag", + "source": 34, + "value": "1759" + }, + { + "begin": 60339, + "end": 60411, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "name": "POP", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "name": "POP", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "name": "POP", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "name": "POP", + "source": 34 + }, + { + "begin": 59825, + "end": 60418, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 60441, + "end": 61173, + "name": "tag", + "source": 34, + "value": "1137" + }, + { + "begin": 60441, + "end": 61173, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60548, + "end": 60553, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 60573, + "end": 60654, + "name": "PUSH [tag]", + "source": 34, + "value": "1761" + }, + { + "begin": 60589, + "end": 60653, + "name": "PUSH [tag]", + "source": 34, + "value": "1762" + }, + { + "begin": 60646, + "end": 60652, + "name": "DUP5", + "source": 34 + }, + { + "begin": 60589, + "end": 60653, + "name": "PUSH [tag]", + "source": 34, + "value": "1017" + }, + { + "begin": 60589, + "end": 60653, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 60589, + "end": 60653, + "name": "tag", + "source": 34, + "value": "1762" + }, + { + "begin": 60589, + "end": 60653, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60573, + "end": 60654, + "name": "PUSH [tag]", + "source": 34, + "value": "1014" + }, + { + "begin": 60573, + "end": 60654, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 60573, + "end": 60654, + "name": "tag", + "source": 34, + "value": "1761" + }, + { + "begin": 60573, + "end": 60654, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60564, + "end": 60654, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 60564, + "end": 60654, + "name": "POP", + "source": 34 + }, + { + "begin": 60674, + "end": 60679, + "name": "DUP1", + "source": 34 + }, + { + "begin": 60703, + "end": 60709, + "name": "DUP4", + "source": 34 + }, + { + "begin": 60696, + "end": 60701, + "name": "DUP3", + "source": 34 + }, + { + "begin": 60689, + "end": 60710, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 60737, + "end": 60741, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 60730, + "end": 60735, + "name": "DUP3", + "source": 34 + }, + { + "begin": 60726, + "end": 60742, + "name": "ADD", + "source": 34 + }, + { + "begin": 60719, + "end": 60742, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 60719, + "end": 60742, + "name": "POP", + "source": 34 + }, + { + "begin": 60790, + "end": 60794, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 60782, + "end": 60788, + "name": "DUP5", + "source": 34 + }, + { + "begin": 60778, + "end": 60795, + "name": "MUL", + "source": 34 + }, + { + "begin": 60770, + "end": 60776, + "name": "DUP4", + "source": 34 + }, + { + "begin": 60766, + "end": 60796, + "name": "ADD", + "source": 34 + }, + { + "begin": 60819, + "end": 60822, + "name": "DUP6", + "source": 34 + }, + { + "begin": 60811, + "end": 60817, + "name": "DUP2", + "source": 34 + }, + { + "begin": 60808, + "end": 60823, + "name": "GT", + "source": 34 + }, + { + "begin": 60805, + "end": 60927, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 60805, + "end": 60927, + "name": "PUSH [tag]", + "source": 34, + "value": "1763" + }, + { + "begin": 60805, + "end": 60927, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 60838, + "end": 60917, + "name": "PUSH [tag]", + "source": 34, + "value": "1764" + }, + { + "begin": 60838, + "end": 60917, + "name": "PUSH [tag]", + "source": 34, + "value": "1018" + }, + { + "begin": 60838, + "end": 60917, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 60838, + "end": 60917, + "name": "tag", + "source": 34, + "value": "1764" + }, + { + "begin": 60838, + "end": 60917, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60805, + "end": 60927, + "name": "tag", + "source": 34, + "value": "1763" + }, + { + "begin": 60805, + "end": 60927, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60953, + "end": 60959, + "name": "DUP4", + "source": 34 + }, + { + "begin": 60936, + "end": 61167, + "name": "tag", + "source": 34, + "value": "1765" + }, + { + "begin": 60936, + "end": 61167, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60970, + "end": 60976, + "name": "DUP2", + "source": 34 + }, + { + "begin": 60965, + "end": 60968, + "name": "DUP2", + "source": 34 + }, + { + "begin": 60962, + "end": 60977, + "name": "LT", + "source": 34 + }, + { + "begin": 60936, + "end": 61167, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 60936, + "end": 61167, + "name": "PUSH [tag]", + "source": 34, + "value": "1767" + }, + { + "begin": 60936, + "end": 61167, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 61045, + "end": 61048, + "name": "DUP1", + "source": 34 + }, + { + "begin": 61074, + "end": 61122, + "name": "PUSH [tag]", + "source": 34, + "value": "1768" + }, + { + "begin": 61118, + "end": 61121, + "name": "DUP9", + "source": 34 + }, + { + "begin": 61106, + "end": 61116, + "name": "DUP3", + "source": 34 + }, + { + "begin": 61074, + "end": 61122, + "name": "PUSH [tag]", + "source": 34, + "value": "1085" + }, + { + "begin": 61074, + "end": 61122, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 61074, + "end": 61122, + "name": "tag", + "source": 34, + "value": "1768" + }, + { + "begin": 61074, + "end": 61122, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61069, + "end": 61072, + "name": "DUP5", + "source": 34 + }, + { + "begin": 61062, + "end": 61123, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 61152, + "end": 61156, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 61147, + "end": 61150, + "name": "DUP5", + "source": 34 + }, + { + "begin": 61143, + "end": 61157, + "name": "ADD", + "source": 34 + }, + { + "begin": 61136, + "end": 61157, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 61136, + "end": 61157, + "name": "POP", + "source": 34 + }, + { + "begin": 61012, + "end": 61167, + "name": "POP", + "source": 34 + }, + { + "begin": 60996, + "end": 61000, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 60991, + "end": 60994, + "name": "DUP2", + "source": 34 + }, + { + "begin": 60987, + "end": 61001, + "name": "ADD", + "source": 34 + }, + { + "begin": 60980, + "end": 61001, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 60980, + "end": 61001, + "name": "POP", + "source": 34 + }, + { + "begin": 60936, + "end": 61167, + "name": "PUSH [tag]", + "source": 34, + "value": "1765" + }, + { + "begin": 60936, + "end": 61167, + "name": "JUMP", + "source": 34 + }, + { + "begin": 60936, + "end": 61167, + "name": "tag", + "source": 34, + "value": "1767" + }, + { + "begin": 60936, + "end": 61167, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 60940, + "end": 60961, + "name": "POP", + "source": 34 + }, + { + "begin": 60554, + "end": 61173, + "name": "POP", + "source": 34 + }, + { + "begin": 60554, + "end": 61173, + "name": "POP", + "source": 34 + }, + { + "begin": 60441, + "end": 61173, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 60441, + "end": 61173, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 60441, + "end": 61173, + "name": "POP", + "source": 34 + }, + { + "begin": 60441, + "end": 61173, + "name": "POP", + "source": 34 + }, + { + "begin": 60441, + "end": 61173, + "name": "POP", + "source": 34 + }, + { + "begin": 60441, + "end": 61173, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 61196, + "end": 61581, + "name": "tag", + "source": 34, + "value": "1138" + }, + { + "begin": 61196, + "end": 61581, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61278, + "end": 61283, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 61327, + "end": 61330, + "name": "DUP3", + "source": 34 + }, + { + "begin": 61320, + "end": 61324, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 61312, + "end": 61318, + "name": "DUP4", + "source": 34 + }, + { + "begin": 61308, + "end": 61325, + "name": "ADD", + "source": 34 + }, + { + "begin": 61304, + "end": 61331, + "name": "SLT", + "source": 34 + }, + { + "begin": 61294, + "end": 61416, + "name": "PUSH [tag]", + "source": 34, + "value": "1770" + }, + { + "begin": 61294, + "end": 61416, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 61335, + "end": 61414, + "name": "PUSH [tag]", + "source": 34, + "value": "1771" + }, + { + "begin": 61335, + "end": 61414, + "name": "PUSH [tag]", + "source": 34, + "value": "1016" + }, + { + "begin": 61335, + "end": 61414, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 61335, + "end": 61414, + "name": "tag", + "source": 34, + "value": "1771" + }, + { + "begin": 61335, + "end": 61414, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61294, + "end": 61416, + "name": "tag", + "source": 34, + "value": "1770" + }, + { + "begin": 61294, + "end": 61416, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61445, + "end": 61451, + "name": "DUP2", + "source": 34 + }, + { + "begin": 61439, + "end": 61452, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 61470, + "end": 61575, + "name": "PUSH [tag]", + "source": 34, + "value": "1772" + }, + { + "begin": 61571, + "end": 61574, + "name": "DUP5", + "source": 34 + }, + { + "begin": 61563, + "end": 61569, + "name": "DUP3", + "source": 34 + }, + { + "begin": 61556, + "end": 61560, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 61548, + "end": 61554, + "name": "DUP7", + "source": 34 + }, + { + "begin": 61544, + "end": 61561, + "name": "ADD", + "source": 34 + }, + { + "begin": 61470, + "end": 61575, + "name": "PUSH [tag]", + "source": 34, + "value": "1137" + }, + { + "begin": 61470, + "end": 61575, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 61470, + "end": 61575, + "name": "tag", + "source": 34, + "value": "1772" + }, + { + "begin": 61470, + "end": 61575, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61461, + "end": 61575, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 61461, + "end": 61575, + "name": "POP", + "source": 34 + }, + { + "begin": 61284, + "end": 61581, + "name": "POP", + "source": 34 + }, + { + "begin": 61196, + "end": 61581, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 61196, + "end": 61581, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 61196, + "end": 61581, + "name": "POP", + "source": 34 + }, + { + "begin": 61196, + "end": 61581, + "name": "POP", + "source": 34 + }, + { + "begin": 61196, + "end": 61581, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 61587, + "end": 62453, + "name": "tag", + "source": 34, + "value": "937" + }, + { + "begin": 61587, + "end": 62453, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61700, + "end": 61706, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 61708, + "end": 61714, + "name": "DUP1", + "source": 34 + }, + { + "begin": 61716, + "end": 61722, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 61765, + "end": 61767, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 61753, + "end": 61762, + "name": "DUP5", + "source": 34 + }, + { + "begin": 61744, + "end": 61751, + "name": "DUP7", + "source": 34 + }, + { + "begin": 61740, + "end": 61763, + "name": "SUB", + "source": 34 + }, + { + "begin": 61736, + "end": 61768, + "name": "SLT", + "source": 34 + }, + { + "begin": 61733, + "end": 61852, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 61733, + "end": 61852, + "name": "PUSH [tag]", + "source": 34, + "value": "1774" + }, + { + "begin": 61733, + "end": 61852, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 61771, + "end": 61850, + "name": "PUSH [tag]", + "source": 34, + "value": "1775" + }, + { + "begin": 61771, + "end": 61850, + "name": "PUSH [tag]", + "source": 34, + "value": "1006" + }, + { + "begin": 61771, + "end": 61850, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 61771, + "end": 61850, + "name": "tag", + "source": 34, + "value": "1775" + }, + { + "begin": 61771, + "end": 61850, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61733, + "end": 61852, + "name": "tag", + "source": 34, + "value": "1774" + }, + { + "begin": 61733, + "end": 61852, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61891, + "end": 61892, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 61916, + "end": 61980, + "name": "PUSH [tag]", + "source": 34, + "value": "1776" + }, + { + "begin": 61972, + "end": 61979, + "name": "DUP7", + "source": 34 + }, + { + "begin": 61963, + "end": 61969, + "name": "DUP3", + "source": 34 + }, + { + "begin": 61952, + "end": 61961, + "name": "DUP8", + "source": 34 + }, + { + "begin": 61948, + "end": 61970, + "name": "ADD", + "source": 34 + }, + { + "begin": 61916, + "end": 61980, + "name": "PUSH [tag]", + "source": 34, + "value": "1116" + }, + { + "begin": 61916, + "end": 61980, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 61916, + "end": 61980, + "name": "tag", + "source": 34, + "value": "1776" + }, + { + "begin": 61916, + "end": 61980, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 61906, + "end": 61980, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 61906, + "end": 61980, + "name": "POP", + "source": 34 + }, + { + "begin": 61862, + "end": 61990, + "name": "POP", + "source": 34 + }, + { + "begin": 62029, + "end": 62031, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 62055, + "end": 62119, + "name": "PUSH [tag]", + "source": 34, + "value": "1777" + }, + { + "begin": 62111, + "end": 62118, + "name": "DUP7", + "source": 34 + }, + { + "begin": 62102, + "end": 62108, + "name": "DUP3", + "source": 34 + }, + { + "begin": 62091, + "end": 62100, + "name": "DUP8", + "source": 34 + }, + { + "begin": 62087, + "end": 62109, + "name": "ADD", + "source": 34 + }, + { + "begin": 62055, + "end": 62119, + "name": "PUSH [tag]", + "source": 34, + "value": "1116" + }, + { + "begin": 62055, + "end": 62119, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62055, + "end": 62119, + "name": "tag", + "source": 34, + "value": "1777" + }, + { + "begin": 62055, + "end": 62119, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62045, + "end": 62119, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 62045, + "end": 62119, + "name": "POP", + "source": 34 + }, + { + "begin": 62000, + "end": 62129, + "name": "POP", + "source": 34 + }, + { + "begin": 62189, + "end": 62191, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 62178, + "end": 62187, + "name": "DUP5", + "source": 34 + }, + { + "begin": 62174, + "end": 62192, + "name": "ADD", + "source": 34 + }, + { + "begin": 62168, + "end": 62193, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 62220, + "end": 62238, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 62212, + "end": 62218, + "name": "DUP2", + "source": 34 + }, + { + "begin": 62209, + "end": 62239, + "name": "GT", + "source": 34 + }, + { + "begin": 62206, + "end": 62323, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 62206, + "end": 62323, + "name": "PUSH [tag]", + "source": 34, + "value": "1778" + }, + { + "begin": 62206, + "end": 62323, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 62242, + "end": 62321, + "name": "PUSH [tag]", + "source": 34, + "value": "1779" + }, + { + "begin": 62242, + "end": 62321, + "name": "PUSH [tag]", + "source": 34, + "value": "1007" + }, + { + "begin": 62242, + "end": 62321, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62242, + "end": 62321, + "name": "tag", + "source": 34, + "value": "1779" + }, + { + "begin": 62242, + "end": 62321, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62206, + "end": 62323, + "name": "tag", + "source": 34, + "value": "1778" + }, + { + "begin": 62206, + "end": 62323, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62347, + "end": 62436, + "name": "PUSH [tag]", + "source": 34, + "value": "1780" + }, + { + "begin": 62428, + "end": 62435, + "name": "DUP7", + "source": 34 + }, + { + "begin": 62419, + "end": 62425, + "name": "DUP3", + "source": 34 + }, + { + "begin": 62408, + "end": 62417, + "name": "DUP8", + "source": 34 + }, + { + "begin": 62404, + "end": 62426, + "name": "ADD", + "source": 34 + }, + { + "begin": 62347, + "end": 62436, + "name": "PUSH [tag]", + "source": 34, + "value": "1138" + }, + { + "begin": 62347, + "end": 62436, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62347, + "end": 62436, + "name": "tag", + "source": 34, + "value": "1780" + }, + { + "begin": 62347, + "end": 62436, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62337, + "end": 62436, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 62337, + "end": 62436, + "name": "POP", + "source": 34 + }, + { + "begin": 62139, + "end": 62446, + "name": "POP", + "source": 34 + }, + { + "begin": 61587, + "end": 62453, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 61587, + "end": 62453, + "name": "POP", + "source": 34 + }, + { + "begin": 61587, + "end": 62453, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 61587, + "end": 62453, + "name": "POP", + "source": 34 + }, + { + "begin": 61587, + "end": 62453, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 61587, + "end": 62453, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62459, + "end": 62791, + "name": "tag", + "source": 34, + "value": "954" + }, + { + "begin": 62459, + "end": 62791, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62580, + "end": 62584, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 62618, + "end": 62620, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 62607, + "end": 62616, + "name": "DUP3", + "source": 34 + }, + { + "begin": 62603, + "end": 62621, + "name": "ADD", + "source": 34 + }, + { + "begin": 62595, + "end": 62621, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 62595, + "end": 62621, + "name": "POP", + "source": 34 + }, + { + "begin": 62631, + "end": 62702, + "name": "PUSH [tag]", + "source": 34, + "value": "1782" + }, + { + "begin": 62699, + "end": 62700, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 62688, + "end": 62697, + "name": "DUP4", + "source": 34 + }, + { + "begin": 62684, + "end": 62701, + "name": "ADD", + "source": 34 + }, + { + "begin": 62675, + "end": 62681, + "name": "DUP6", + "source": 34 + }, + { + "begin": 62631, + "end": 62702, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 62631, + "end": 62702, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62631, + "end": 62702, + "name": "tag", + "source": 34, + "value": "1782" + }, + { + "begin": 62631, + "end": 62702, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62712, + "end": 62784, + "name": "PUSH [tag]", + "source": 34, + "value": "1783" + }, + { + "begin": 62780, + "end": 62782, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 62769, + "end": 62778, + "name": "DUP4", + "source": 34 + }, + { + "begin": 62765, + "end": 62783, + "name": "ADD", + "source": 34 + }, + { + "begin": 62756, + "end": 62762, + "name": "DUP5", + "source": 34 + }, + { + "begin": 62712, + "end": 62784, + "name": "PUSH [tag]", + "source": 34, + "value": "1084" + }, + { + "begin": 62712, + "end": 62784, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62712, + "end": 62784, + "name": "tag", + "source": 34, + "value": "1783" + }, + { + "begin": 62712, + "end": 62784, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62459, + "end": 62791, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 62459, + "end": 62791, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 62459, + "end": 62791, + "name": "POP", + "source": 34 + }, + { + "begin": 62459, + "end": 62791, + "name": "POP", + "source": 34 + }, + { + "begin": 62459, + "end": 62791, + "name": "POP", + "source": 34 + }, + { + "begin": 62459, + "end": 62791, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62797, + "end": 63207, + "name": "tag", + "source": 34, + "value": "970" + }, + { + "begin": 62797, + "end": 63207, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62837, + "end": 62844, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 62860, + "end": 62880, + "name": "PUSH [tag]", + "source": 34, + "value": "1785" + }, + { + "begin": 62878, + "end": 62879, + "name": "DUP3", + "source": 34 + }, + { + "begin": 62860, + "end": 62880, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 62860, + "end": 62880, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62860, + "end": 62880, + "name": "tag", + "source": 34, + "value": "1785" + }, + { + "begin": 62860, + "end": 62880, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62855, + "end": 62880, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 62855, + "end": 62880, + "name": "POP", + "source": 34 + }, + { + "begin": 62894, + "end": 62914, + "name": "PUSH [tag]", + "source": 34, + "value": "1786" + }, + { + "begin": 62912, + "end": 62913, + "name": "DUP4", + "source": 34 + }, + { + "begin": 62894, + "end": 62914, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 62894, + "end": 62914, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62894, + "end": 62914, + "name": "tag", + "source": 34, + "value": "1786" + }, + { + "begin": 62894, + "end": 62914, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62889, + "end": 62914, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 62889, + "end": 62914, + "name": "POP", + "source": 34 + }, + { + "begin": 62949, + "end": 62950, + "name": "DUP3", + "source": 34 + }, + { + "begin": 62946, + "end": 62947, + "name": "DUP3", + "source": 34 + }, + { + "begin": 62942, + "end": 62951, + "name": "MUL", + "source": 34 + }, + { + "begin": 62971, + "end": 63001, + "name": "PUSH [tag]", + "source": 34, + "value": "1787" + }, + { + "begin": 62989, + "end": 63000, + "name": "DUP2", + "source": 34 + }, + { + "begin": 62971, + "end": 63001, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 62971, + "end": 63001, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 62971, + "end": 63001, + "name": "tag", + "source": 34, + "value": "1787" + }, + { + "begin": 62971, + "end": 63001, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62960, + "end": 63001, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 62960, + "end": 63001, + "name": "POP", + "source": 34 + }, + { + "begin": 63150, + "end": 63151, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63141, + "end": 63148, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63137, + "end": 63152, + "name": "DIV", + "source": 34 + }, + { + "begin": 63134, + "end": 63135, + "name": "DUP5", + "source": 34 + }, + { + "begin": 63131, + "end": 63153, + "name": "EQ", + "source": 34 + }, + { + "begin": 63111, + "end": 63112, + "name": "DUP4", + "source": 34 + }, + { + "begin": 63104, + "end": 63113, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 63084, + "end": 63167, + "name": "OR", + "source": 34 + }, + { + "begin": 63061, + "end": 63200, + "name": "PUSH [tag]", + "source": 34, + "value": "1788" + }, + { + "begin": 63061, + "end": 63200, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 63180, + "end": 63198, + "name": "PUSH [tag]", + "source": 34, + "value": "1789" + }, + { + "begin": 63180, + "end": 63198, + "name": "PUSH [tag]", + "source": 34, + "value": "1083" + }, + { + "begin": 63180, + "end": 63198, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 63180, + "end": 63198, + "name": "tag", + "source": 34, + "value": "1789" + }, + { + "begin": 63180, + "end": 63198, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63061, + "end": 63200, + "name": "tag", + "source": 34, + "value": "1788" + }, + { + "begin": 63061, + "end": 63200, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 62845, + "end": 63207, + "name": "POP", + "source": 34 + }, + { + "begin": 62797, + "end": 63207, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 62797, + "end": 63207, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 62797, + "end": 63207, + "name": "POP", + "source": 34 + }, + { + "begin": 62797, + "end": 63207, + "name": "POP", + "source": 34 + }, + { + "begin": 62797, + "end": 63207, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 63213, + "end": 63393, + "name": "tag", + "source": 34, + "value": "1139" + }, + { + "begin": 63213, + "end": 63393, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63261, + "end": 63338, + "name": "PUSH", + "source": 34, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 63258, + "end": 63259, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63251, + "end": 63339, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 63358, + "end": 63362, + "name": "PUSH", + "source": 34, + "value": "12" + }, + { + "begin": 63355, + "end": 63356, + "name": "PUSH", + "source": 34, + "value": "4" + }, + { + "begin": 63348, + "end": 63363, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 63382, + "end": 63386, + "name": "PUSH", + "source": 34, + "value": "24" + }, + { + "begin": 63379, + "end": 63380, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63372, + "end": 63387, + "name": "REVERT", + "source": 34 + }, + { + "begin": 63399, + "end": 63584, + "name": "tag", + "source": 34, + "value": "975" + }, + { + "begin": 63399, + "end": 63584, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63439, + "end": 63440, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63456, + "end": 63476, + "name": "PUSH [tag]", + "source": 34, + "value": "1792" + }, + { + "begin": 63474, + "end": 63475, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63456, + "end": 63476, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 63456, + "end": 63476, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 63456, + "end": 63476, + "name": "tag", + "source": 34, + "value": "1792" + }, + { + "begin": 63456, + "end": 63476, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63451, + "end": 63476, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 63451, + "end": 63476, + "name": "POP", + "source": 34 + }, + { + "begin": 63490, + "end": 63510, + "name": "PUSH [tag]", + "source": 34, + "value": "1793" + }, + { + "begin": 63508, + "end": 63509, + "name": "DUP4", + "source": 34 + }, + { + "begin": 63490, + "end": 63510, + "name": "PUSH [tag]", + "source": 34, + "value": "1008" + }, + { + "begin": 63490, + "end": 63510, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 63490, + "end": 63510, + "name": "tag", + "source": 34, + "value": "1793" + }, + { + "begin": 63490, + "end": 63510, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63485, + "end": 63510, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 63485, + "end": 63510, + "name": "POP", + "source": 34 + }, + { + "begin": 63529, + "end": 63530, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63519, + "end": 63554, + "name": "PUSH [tag]", + "source": 34, + "value": "1794" + }, + { + "begin": 63519, + "end": 63554, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 63534, + "end": 63552, + "name": "PUSH [tag]", + "source": 34, + "value": "1795" + }, + { + "begin": 63534, + "end": 63552, + "name": "PUSH [tag]", + "source": 34, + "value": "1139" + }, + { + "begin": 63534, + "end": 63552, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 63534, + "end": 63552, + "name": "tag", + "source": 34, + "value": "1795" + }, + { + "begin": 63534, + "end": 63552, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63519, + "end": 63554, + "name": "tag", + "source": 34, + "value": "1794" + }, + { + "begin": 63519, + "end": 63554, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63576, + "end": 63577, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63573, + "end": 63574, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63569, + "end": 63578, + "name": "DIV", + "source": 34 + }, + { + "begin": 63564, + "end": 63578, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 63564, + "end": 63578, + "name": "POP", + "source": 34 + }, + { + "begin": 63399, + "end": 63584, + "name": "SWAP3", + "source": 34 + }, + { + "begin": 63399, + "end": 63584, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 63399, + "end": 63584, + "name": "POP", + "source": 34 + }, + { + "begin": 63399, + "end": 63584, + "name": "POP", + "source": 34 + }, + { + "begin": 63399, + "end": 63584, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": { + "addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "a3c7271a", + "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "8efc2b2c", + "createLBPair(address,address,uint24,uint16)": "659ac74b", + "getFactory()": "88cc58e4", + "getIdFromPrice(address,uint256)": "f96fe925", + "getPriceFromId(address,uint24)": "d0e380f2", + "getSwapIn(address,uint128,bool)": "964f987c", + "getSwapOut(address,uint128,bool)": "a0d376cf", + "getV1Factory()": "bb558a9f", + "getWNATIVE()": "6c9c0078", + "initialize()": "8129fc1c", + "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "c22159b6", + "removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "81c2fdfb", + "swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "b066ea7c", + "swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "e038e6dc", + "swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "9ab6156b", + "swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "1a24f9a9", + "swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "2a443fae", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "4b801870", + "swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "2075ad22", + "swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "3dc8f8ec", + "swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "92fe8e70", + "sweep(address,address,uint256)": "62c06767", + "sweepLBToken(address,address,uint256[],uint256[])": "e9361c08" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"factory2\",\"type\":\"address\"},{\"internalType\":\"contract ISovrynLBFactoryV1\",\"name\":\"factoryV1\",\"type\":\"address\"},{\"internalType\":\"contract IWNATIVE\",\"name\":\"wnative\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageBPTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__BinReserveOverflows\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__BrokenSwapSafetyCheck\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"LBRouter__DeadlineExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBRouter__FailedToSendNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdDesiredOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"id\",\"type\":\"int256\"}],\"name\":\"LBRouter__IdOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeId\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrongToken\",\"type\":\"address\"}],\"name\":\"LBRouter__InvalidTokenPath\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__LengthsMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"LBRouter__MaxAmountInExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__NotFactoryOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBRouter__PairNotCreated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__SenderIsNotWNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__SwapOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"excess\",\"type\":\"uint256\"}],\"name\":\"LBRouter__TooMuchTokensIn\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserve\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongAmounts\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongNativeLiquidityParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__WrongTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__SubUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenHelper__TransferFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"lbFactory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getV1Factory\",\"outputs\":[{\"internalType\":\"contract ISovrynLBFactoryV1\",\"name\":\"factoryV1\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWNATIVE\",\"outputs\":[{\"internalType\":\"contract IWNATIVE\",\"name\":\"wnative\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVEMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVE\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVESupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapNATIVEForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountNATIVEOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactNATIVE\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBToken\",\"name\":\"lbToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"sweepLBToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"details\":\"This function is compliant with fee on transfer tokens\",\"params\":{\"liquidityParameters\":\"The liquidity parameters\"},\"returns\":{\"amountXAdded\":\"The amount of token X added\",\"amountXLeft\":\"The amount of token X left (sent back to liquidityParameters.refundTo)\",\"amountYAdded\":\"The amount of token Y added\",\"amountYLeft\":\"The amount of token Y left (sent back to liquidityParameters.refundTo)\",\"depositIds\":\"The ids of the deposits\",\"liquidityMinted\":\"The amount of liquidity minted\"}},\"addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"details\":\"This function is compliant with fee on transfer tokens\",\"params\":{\"liquidityParameters\":\"The liquidity parameters\"},\"returns\":{\"amountXAdded\":\"The amount of token X added\",\"amountXLeft\":\"The amount of token X left (sent back to liquidityParameters.refundTo)\",\"amountYAdded\":\"The amount of token Y added\",\"amountYLeft\":\"The amount of token Y left (sent back to liquidityParameters.refundTo)\",\"depositIds\":\"The ids of the deposits\",\"liquidityMinted\":\"The amount of liquidity minted\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createLBPair(address,address,uint24,uint16)\":{\"params\":{\"activeId\":\"The active id of the pair\",\"binStep\":\"The bin step in basis point, used to calculate log(1 + binStep)\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"},\"returns\":{\"pair\":\"The address of the newly created LBPair\"}},\"getFactory()\":{\"returns\":{\"lbFactory\":\"The address of the factory V2.1\"}},\"getIdFromPrice(address,uint256)\":{\"params\":{\"pair\":\"The address of the LBPair\",\"price\":\"The price of y per x (multiplied by 1e36)\"},\"returns\":{\"_0\":\"The id corresponding to this price\"}},\"getPriceFromId(address,uint24)\":{\"params\":{\"id\":\"The id\",\"pair\":\"The address of the LBPair\"},\"returns\":{\"_0\":\"The price corresponding to this id\"}},\"getSwapIn(address,uint128,bool)\":{\"params\":{\"amountOut\":\"The amount of token to receive\",\"pair\":\"The address of the LBPair\",\"swapForY\":\"Whether you swap X for Y (true), or Y for X (false)\"},\"returns\":{\"amountIn\":\"The amount of token to send in order to receive amountOut token\",\"amountOutLeft\":\"The amount of token Out that can't be returned due to a lack of liquidity\",\"fee\":\"The amount of fees paid in token sent\"}},\"getSwapOut(address,uint128,bool)\":{\"params\":{\"amountIn\":\"The amount of token sent\",\"pair\":\"The address of the LBPair\",\"swapForY\":\"Whether you swap X for Y (true), or Y for X (false)\"},\"returns\":{\"amountInLeft\":\"The amount of token In that can't be swapped due to a lack of liquidity\",\"amountOut\":\"The amount of token received if amountIn tokenX are sent\",\"fee\":\"The amount of fees paid in token sent\"}},\"getV1Factory()\":{\"returns\":{\"factoryV1\":\"The address of the factory V1\"}},\"getWNATIVE()\":{\"returns\":{\"wnative\":\"The address of WNATIVE\"}},\"removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"details\":\"This function is compliant with fee on transfer tokens\",\"params\":{\"amountXMin\":\"The min amount to receive of token X\",\"amountYMin\":\"The min amount to receive of token Y\",\"amounts\":\"The list of amounts to burn of each id in `_ids`\",\"binStep\":\"The bin step of the LBPair\",\"deadline\":\"The deadline of the tx\",\"ids\":\"The list of ids to burn\",\"to\":\"The address of the recipient\",\"tokenX\":\"The address of token X\",\"tokenY\":\"The address of token Y\"},\"returns\":{\"amountX\":\"Amount of token X returned\",\"amountY\":\"Amount of token Y returned\"}},\"removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"details\":\"This function is **NOT** compliant with fee on transfer tokens. This is wanted as it would make users pays the fee on transfer twice, use the `removeLiquidity` function to remove liquidity with fee on transfer tokens.\",\"params\":{\"amountNATIVEMin\":\"The min amount to receive of NATIVE\",\"amountTokenMin\":\"The min amount to receive of token\",\"amounts\":\"The list of amounts to burn of each id in `_ids`\",\"binStep\":\"The bin step of the LBPair\",\"deadline\":\"The deadline of the tx\",\"ids\":\"The list of ids to burn\",\"to\":\"The address of the recipient\",\"token\":\"The address of token\"},\"returns\":{\"amountNATIVE\":\"Amount of NATIVE returned\",\"amountToken\":\"Amount of token returned\"}},\"swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMinNATIVE\":\"The min amount of NATIVE to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMinNATIVE\":\"The min amount of NATIVE to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountIn\":\"The amount of token to send\",\"amountOutMin\":\"The min amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountOut\":\"Output amount of the swap\"}},\"swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"details\":\"Will refund any NATIVE amount sent in excess to `msg.sender`\",\"params\":{\"amountOut\":\"The amount of tokens to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountsIn\":\"path amounts for every step of the swap\"}},\"swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountInMax\":\"The max amount of token to send\",\"amountNATIVEOut\":\"The amount of NATIVE to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountsIn\":\"path amounts for every step of the swap\"}},\"swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"params\":{\"amountInMax\":\"The max amount of token to send\",\"amountOut\":\"The amount of token to receive\",\"deadline\":\"The deadline of the tx\",\"path\":\"The path of the swap\",\"to\":\"The address of the recipient\"},\"returns\":{\"amountsIn\":\"Input amounts of the swap\"}},\"sweep(address,address,uint256)\":{\"details\":\"Only callable by the factory owner\",\"params\":{\"amount\":\"The amount to send\",\"to\":\"The address of the user to send back the tokens\",\"token\":\"The address of the token\"}},\"sweepLBToken(address,address,uint256[],uint256[])\":{\"details\":\"Only callable by the factory owner\",\"params\":{\"amounts\":\"The list of amounts to send\",\"ids\":\"The list of token ids\",\"lbToken\":\"The address of the LBToken\",\"to\":\"The address of the user to send back the tokens\"}}},\"stateVariables\":{\"_factory2\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"_factoryV1\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"_wnative\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"Liquidity Book Router\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"notice\":\"Add liquidity while performing safety checks\"},\"addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))\":{\"notice\":\"Add liquidity with NATIVE while performing safety checks\"},\"createLBPair(address,address,uint24,uint16)\":{\"notice\":\"Create a liquidity bin LBPair for tokenX and tokenY using the factory\"},\"getFactory()\":{\"notice\":\"View function to get the factory V2.1 address\"},\"getIdFromPrice(address,uint256)\":{\"notice\":\"Returns the approximate id corresponding to the inputted price. Warning, the returned id may be inaccurate close to the start price of a bin\"},\"getPriceFromId(address,uint24)\":{\"notice\":\"Returns the price corresponding to the inputted id\"},\"getSwapIn(address,uint128,bool)\":{\"notice\":\"Simulate a swap in\"},\"getSwapOut(address,uint128,bool)\":{\"notice\":\"Simulate a swap out\"},\"getV1Factory()\":{\"notice\":\"View function to get the factory V1 address\"},\"getWNATIVE()\":{\"notice\":\"View function to get the WNATIVE address\"},\"removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"notice\":\"Remove liquidity while performing safety checks\"},\"removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)\":{\"notice\":\"Remove NATIVE liquidity while performing safety checks\"},\"swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact NATIVE for tokens while performing safety checks\"},\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact NATIVE for tokens while performing safety checks supporting for fee on transfer tokens\"},\"swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for NATIVE while performing safety checks\"},\"swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for NATIVE while performing safety checks supporting for fee on transfer tokens\"},\"swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for tokens while performing safety checks\"},\"swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps exact tokens for tokens while performing safety checks supporting for fee on transfer tokens\"},\"swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps NATIVE for exact tokens while performing safety checks\"},\"swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps tokens for exact NATIVE while performing safety checks\"},\"swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)\":{\"notice\":\"Swaps tokens for exact tokens while performing safety checks\"},\"sweep(address,address,uint256)\":{\"notice\":\"Unstuck tokens that are sent to this contract by mistake\"},\"sweepLBToken(address,address,uint256[],uint256[])\":{\"notice\":\"Unstuck LBTokens that are sent to this contract by mistake\"}},\"notice\":\"Main contract to interact with to swap and manage liquidity on Sovryn LB V2 exchange.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBRouter.sol\":\"LBRouter\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/LBRouter.sol\":{\"keccak256\":\"0x065f078d353ace56082b3f57b478a2d2a4bbb05a6dd183c48cd70b96263c51c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c5ebcc9f2630697f9cd34b81a3e9845dc4accef0ac1dba4704994dedad5da0\",\"dweb:/ipfs/Qmd19LLUTWixw6TqY66nG1jwnG6mnZrcRN9nM6NN1wEzYE\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0xcec90d4f620b1ff5b3c6b57348044e8e9c0e1313c20fa2f5c91206c84e47a388\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cd83dd005f0fd8229fd6eb9d2cd37399b543ab9d9ccefe9050c472dcb106490\",\"dweb:/ipfs/Qmca42wgwAUCWRX3ZMezhnJGwSHcXpP7D4hDYRZmeJChgY\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x4d26410d0c866e3ed50c39ffeb191d2beefcbb603a39812b3497de267035bac4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a307fdcace490a0b52e4db19befde1267615602140858d4b806b885258dec262\",\"dweb:/ipfs/QmYPEdQJRAFwdyrphHZT2vpqdFo7gK3SULn3QYA3kdx3Ka\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0xdeee599df829ad6c0ee8174c48def9858ac4a9b420cd0f3ca4541f3fb6cdf82e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2688d777fec9ad1e91bd74cd323897de85a1776e16c9441474d63c1b08c3b8c0\",\"dweb:/ipfs/QmZfB4VBegmr7vD4RXUBXEXtynny2JrwF69gh2uks5UxAD\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0x8761bc1f131de7fc47ab2e83df8e42dea8472976e5b6cd85e6e6b4c97a5b1c1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://069c01d23f87b602eac49dc7c6cdfc1b3d505cffc4b42dfc3284b382853a0c3f\",\"dweb:/ipfs/QmQnu2Uff3wzJ3ZnLwZrKB8ECnoF3SzPHLBHQcMhcWpFHT\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0xe71da86c5fb90e7cff71d874bb7d3d805df175afd8c876f000c80ce329be31da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1282a496ed9eee833f91def600027739966f41313722fe92f1d9b573f4e6e6b3\",\"dweb:/ipfs/QmXJRCjTd5DRd5VEuTpN1ZKkxP4TcRFuPSL5ZdQb5GnV1G\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x628f601bafe7f4f26703fa2d2af1b354504afb334120c1c230ce59cf835fe9b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1849fb70a3d6792e3600a1edc62cf78e4bfe4cdb58fc66f77ad1698677ae8e12\",\"dweb:/ipfs/QmXmfTTf7RWACPNPg6NnptKntkpggNZhkPJgBf4v34Zpnu\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0x1006878aa066fb9f68bcc4a56029454acfb919abaa3fb84c7e956f61c6435365\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdcd8045a060f75493de19cd4c731bd6a7d27bb3554be4cf235d1e2705094d6a\",\"dweb:/ipfs/QmfB2CdBhid2ixRgsFPF4w3JfFkieL2DuJLX6zjn11EH2x\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xd75796a09915a4ce7fd69894504bb21d8f4b6b8fd96b9d863422911313f9dd71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c38fa6ee12c97e1aa1b33ae4cca16f52c1712b7b7a2222dc0cdf61f087ab6e1b\",\"dweb:/ipfs/QmUXVXUhAtZufsRKKEujphnQLhEmiADw215LMcpjooiERr\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0xe8af4af39a9063fa569aa161f0fb0b81825131c102b8504deebe142f79f918a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b6e1bcd23acaf79754aed4eb8f32ca3f1712696396a6f06511a6422f73da01f\",\"dweb:/ipfs/QmNZjn3byK4aDYMC5xYPKWCjVUoSmUQgeaHx14q9iA412N\"]},\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0x514625c1f1c443cd266e4649c4477f6e7fb97933abd23bd5730a2702e70d3db0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5cbde0beee3ca3cc8f0a101709cf10b91a5433a385c625a44368bdda228730ea\",\"dweb:/ipfs/QmSwpUSDzaZbP8DDSWeuYUr3c2YKQLBor2kgofdEREmjMZ\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0xe8ae81331a34b92fd7f9d35c5db42155b7a15e030be71461e8fde43b61f94f89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff0d559ce9e5a078b45fc50450031a50aafa28ef9040819ee9389a4ca525646a\",\"dweb:/ipfs/QmXND5xw7qv1thPqTwtLgc6GzTNzo51G8LN1iaqbDnZADZ\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x2afb2f102951960df3d03c44fabbc203639df1cf964803c1385e27947abf928f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce35503e67c73199e36b374d90fdba1449a42219a87cac83dd1940d90b5c4d7f\",\"dweb:/ipfs/QmaQ5VkFB6K8r8SmSW6EefFJgnhmwsZGaf9MNLo58at9KB\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0x58f0ee5bbb2d92c766419db9bf60685885f2f503cf59a2f9ee21a55cccf7da6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://270cebf1bd2cc7318e1e198d1bb72fdc04c59642f891ad54cb5ba0ac15a457e0\",\"dweb:/ipfs/QmfEkyJ8pxuoYAbjeMrj3uoEYX63mJ5GCPBfdPCoWKcGch\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94\",\"dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea\",\"dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": { + "addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": { + "notice": "Add liquidity while performing safety checks" + }, + "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": { + "notice": "Add liquidity with NATIVE while performing safety checks" + }, + "createLBPair(address,address,uint24,uint16)": { + "notice": "Create a liquidity bin LBPair for tokenX and tokenY using the factory" + }, + "getFactory()": { + "notice": "View function to get the factory V2.1 address" + }, + "getIdFromPrice(address,uint256)": { + "notice": "Returns the approximate id corresponding to the inputted price. Warning, the returned id may be inaccurate close to the start price of a bin" + }, + "getPriceFromId(address,uint24)": { + "notice": "Returns the price corresponding to the inputted id" + }, + "getSwapIn(address,uint128,bool)": { + "notice": "Simulate a swap in" + }, + "getSwapOut(address,uint128,bool)": { + "notice": "Simulate a swap out" + }, + "getV1Factory()": { + "notice": "View function to get the factory V1 address" + }, + "getWNATIVE()": { + "notice": "View function to get the WNATIVE address" + }, + "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": { + "notice": "Remove liquidity while performing safety checks" + }, + "removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": { + "notice": "Remove NATIVE liquidity while performing safety checks" + }, + "swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps exact NATIVE for tokens while performing safety checks" + }, + "swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps exact NATIVE for tokens while performing safety checks supporting for fee on transfer tokens" + }, + "swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps exact tokens for NATIVE while performing safety checks" + }, + "swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps exact tokens for NATIVE while performing safety checks supporting for fee on transfer tokens" + }, + "swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps exact tokens for tokens while performing safety checks" + }, + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps exact tokens for tokens while performing safety checks supporting for fee on transfer tokens" + }, + "swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps NATIVE for exact tokens while performing safety checks" + }, + "swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps tokens for exact NATIVE while performing safety checks" + }, + "swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": { + "notice": "Swaps tokens for exact tokens while performing safety checks" + }, + "sweep(address,address,uint256)": { + "notice": "Unstuck tokens that are sent to this contract by mistake" + }, + "sweepLBToken(address,address,uint256[],uint256[])": { + "notice": "Unstuck LBTokens that are sent to this contract by mistake" + } + }, + "notice": "Main contract to interact with to swap and manage liquidity on Sovryn LB V2 exchange.", + "version": 1 + } + } + }, + "src/interfaces/ILBFactory.sol": { + "ILBFactory": { + "abi": [ + { + "inputs": [], + "name": "LBFactory__AddressZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__BinStepHasNoPreset", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__BinStepTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__CannotGrantDefaultAdminRole", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "fees", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFees", + "type": "uint256" + } + ], + "name": "LBFactory__FlashLoanFeeAboveMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "LBFactory__IdenticalAddresses", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__InvalidHooksParameters", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__LBPairIgnoredIsAlreadyInTheSameState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairNotCreated", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBFactory__LBPairSafetyCheckFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__PresetIsLockedForUsers", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__PresetOpenStateIsAlreadyInTheSameState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "LBFactory__QuoteAssetAlreadyWhitelisted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "LBFactory__QuoteAssetNotWhitelisted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "name": "LBFactory__SameFeeRecipient", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "name": "LBFactory__SameFlashLoanFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "hooksImplementation", + "type": "address" + } + ], + "name": "LBFactory__SameHooksImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + } + ], + "name": "LBFactory__SameHooksParameters", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBFactory__SameImplementation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldRecipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newRecipient", + "type": "address" + } + ], + "name": "FeeRecipientSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFlashLoanFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFlashLoanFee", + "type": "uint256" + } + ], + "name": "FlashLoanFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + } + ], + "name": "LBPairCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "LBPairIgnoredStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldLBPairImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBPairImplementationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "PresetOpenStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "PresetRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxVolatilityAccumulator", + "type": "uint256" + } + ], + "name": "PresetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "addQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "createLBPair", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "lbPair", + "type": "address" + } + ], + "name": "forceDecay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllBinSteps", + "outputs": [ + { + "internalType": "uint256[]", + "name": "presetsBinStep", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + } + ], + "name": "getAllLBPairs", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBFactory.LBPairInformation[]", + "name": "LBPairsBinStep", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFeeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFlashLoanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "getLBPairAtIndex", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getLBPairBeacon", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "getLBPairInformation", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBFactory.LBPairInformation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxFlashLoanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getMinBinStep", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfLBPairs", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfQuoteAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOpenBinSteps", + "outputs": [ + { + "internalType": "uint256[]", + "name": "openBinStep", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPauserRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "getPreset", + "outputs": [ + { + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxAccumulator", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getQuoteAssetAtIndex", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "address", + "name": "initialOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lbPairBeaconAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "isQuoteAsset", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "removeLBHooksOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "removePreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "removeQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "name": "setFeeRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "setFeesParametersOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "name": "setFlashLoanFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "onHooksSetData", + "type": "bytes" + } + ], + "name": "setLBHooksParametersOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "setLBPairIgnored", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "setPreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "setPresetOpenState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Factory Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "addQuoteAsset(address)": "5a440923", + "createLBPair(address,address,uint24,uint16)": "659ac74b", + "forceDecay(address)": "3c78a941", + "getAllBinSteps()": "5b35875c", + "getAllLBPairs(address,address)": "6622e0d7", + "getFeeRecipient()": "4ccb20c0", + "getFlashLoanFee()": "fd90c2be", + "getLBPairAtIndex(uint256)": "7daf5d66", + "getLBPairBeacon()": "a0a0ea39", + "getLBPairInformation(address,address,uint256)": "704037bd", + "getMaxFlashLoanFee()": "8ce9aa1c", + "getMinBinStep()": "701ab8c1", + "getNumberOfLBPairs()": "4e937c3a", + "getNumberOfQuoteAssets()": "80c5061e", + "getOpenBinSteps()": "0282c9c1", + "getPauserRole()": "c1b931be", + "getPreset(uint256)": "aabc4b3c", + "getQuoteAssetAtIndex(uint256)": "0752092b", + "initialize(address,address,uint256,address)": "be203094", + "isQuoteAsset(address)": "27721842", + "removeLBHooksOnPair(address,address,uint16)": "2cc06b8c", + "removePreset(uint16)": "e203a31f", + "removeQuoteAsset(address)": "ddbfd941", + "setFeeRecipient(address)": "e74b981b", + "setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "093ff769", + "setFlashLoanFee(uint256)": "e92d0d5d", + "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": "3a2f1a91", + "setLBPairIgnored(address,address,uint16,bool)": "69d56ea3", + "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": "379ee803", + "setPresetOpenState(uint16,bool)": "4cd161d3" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBFactory__AddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepHasNoPreset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__CannotGrantDefaultAdminRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFees\",\"type\":\"uint256\"}],\"name\":\"LBFactory__FlashLoanFeeAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LBFactory__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__InvalidHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__LBPairIgnoredIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairNotCreated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__LBPairSafetyCheckFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__PresetIsLockedForUsers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__PresetOpenStateIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetAlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"LBFactory__SameFeeRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"LBFactory__SameFlashLoanFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hooksImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameHooksImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"LBFactory__SameHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameImplementation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"PresetOpenStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"addQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"lbPair\",\"type\":\"address\"}],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"presetsBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"name\":\"getAllLBPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation[]\",\"name\":\"LBPairsBinStep\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getLBPairAtIndex\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPairBeacon\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getLBPairInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinBinStep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfLBPairs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfQuoteAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"openBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauserRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getPreset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuoteAssetAtIndex\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"lbPairBeaconAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isQuoteAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removeLBHooksOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"removeQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setLBHooksParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"setLBPairIgnored\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPresetOpenState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBFactory contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBFactory.sol\":\"ILBFactory\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of LBFactory contract", + "version": 1 + } + } + }, + "src/interfaces/ILBFlashLoanCallback.sol": { + "ILBFlashLoanCallback": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "LBFlashLoanCallback", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Flashloan Callback Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "LBFlashLoanCallback(address,address,address,bytes32,bytes32,bytes)": "1faa6b87" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LBFlashLoanCallback\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Flashloan Callback Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface to interact with LB flash loans\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBFlashLoanCallback.sol\":\"ILBFlashLoanCallback\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface to interact with LB flash loans", + "version": 1 + } + } + }, + "src/interfaces/ILBHooks.sol": { + "ILBHooks": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "afterBatchTransferFrom", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amountsToBurn", + "type": "uint256[]" + } + ], + "name": "afterBurn", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "fees", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feesReceived", + "type": "bytes32" + } + ], + "name": "afterFlashLoan", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32[]", + "name": "liquidityConfigs", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "amountsIn", + "type": "bytes32" + } + ], + "name": "afterMint", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "amountsOut", + "type": "bytes32" + } + ], + "name": "afterSwap", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "beforeBatchTransferFrom", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amountsToBurn", + "type": "uint256[]" + } + ], + "name": "beforeBurn", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + } + ], + "name": "beforeFlashLoan", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32[]", + "name": "liquidityConfigs", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "amountsReceived", + "type": "bytes32" + } + ], + "name": "beforeMint", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "amountsIn", + "type": "bytes32" + } + ], + "name": "beforeSwap", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getLBPair", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isLinked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "onHooksSetData", + "type": "bytes" + } + ], + "name": "onHooksSet", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "afterBatchTransferFrom(address,address,address,uint256[],uint256[])": "67ddb278", + "afterBurn(address,address,address,uint256[],uint256[])": "fdc27257", + "afterFlashLoan(address,address,bytes32,bytes32)": "60bed5f3", + "afterMint(address,address,bytes32[],bytes32)": "7a51a4c6", + "afterSwap(address,address,bool,bytes32)": "53e8079b", + "beforeBatchTransferFrom(address,address,address,uint256[],uint256[])": "79c8ccf7", + "beforeBurn(address,address,address,uint256[],uint256[])": "ea9db9d3", + "beforeFlashLoan(address,address,bytes32)": "505d9033", + "beforeMint(address,address,bytes32[],bytes32)": "0d4abdb3", + "beforeSwap(address,address,bool,bytes32)": "feee3735", + "getLBPair()": "5f9c01b1", + "isLinked()": "09fa1f90", + "onHooksSet(bytes32,bytes)": "4e430b5a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"afterBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"fees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feesReceived\",\"type\":\"bytes32\"}],\"name\":\"afterFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"afterMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"beforeBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"beforeFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"beforeMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLinked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"onHooksSet\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBHooks.sol\":\"ILBHooks\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/interfaces/ILBLegacyFactory.sol": { + "ILBLegacyFactory": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "unlocked", + "type": "bool" + } + ], + "name": "FactoryLockedStatusUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxVolatilityAccumulator", + "type": "uint256" + } + ], + "name": "FeeParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldRecipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newRecipient", + "type": "address" + } + ], + "name": "FeeRecipientSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFlashLoanFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFlashLoanFee", + "type": "uint256" + } + ], + "name": "FlashLoanFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + } + ], + "name": "LBPairCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "LBPairIgnoredStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldLBPairImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBPairImplementationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "PresetRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxVolatilityAccumulator", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sampleLifetime", + "type": "uint256" + } + ], + "name": "PresetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetRemoved", + "type": "event" + }, + { + "inputs": [], + "name": "LBPairImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BIN_STEP", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_PROTOCOL_SHARE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BIN_STEP", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "addQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "allLBPairs", + "outputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "createLBPair", + "outputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "creationUnlocked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "flashLoanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + } + ], + "name": "forceDecay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllBinSteps", + "outputs": [ + { + "internalType": "uint256[]", + "name": "presetsBinStep", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + } + ], + "name": "getAllLBPairs", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBLegacyFactory.LBPairInformation[]", + "name": "LBPairsBinStep", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "getLBPairInformation", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBLegacyFactory.LBPairInformation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfLBPairs", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfQuoteAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "getPreset", + "outputs": [ + { + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxAccumulator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sampleLifetime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getQuoteAsset", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "isQuoteAsset", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "removePreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "removeQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "locked", + "type": "bool" + } + ], + "name": "setFactoryLockedState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "name": "setFeeRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "setFeesParametersOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "name": "setFlashLoanFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "setLBPairIgnored", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "setLBPairImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "sampleLifetime", + "type": "uint16" + } + ], + "name": "setPreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Factory Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "LBPairImplementation()": "509ceb90", + "MAX_BIN_STEP()": "10e9ec4a", + "MAX_FEE()": "bc063e1a", + "MAX_PROTOCOL_SHARE()": "a931208f", + "MIN_BIN_STEP()": "7df880e3", + "addQuoteAsset(address)": "5a440923", + "allLBPairs(uint256)": "72e47b8c", + "createLBPair(address,address,uint24,uint16)": "659ac74b", + "creationUnlocked()": "5c779d6d", + "feeRecipient()": "46904840", + "flashLoanFee()": "4847cdc8", + "forceDecay(address)": "3c78a941", + "getAllBinSteps()": "5b35875c", + "getAllLBPairs(address,address)": "6622e0d7", + "getLBPairInformation(address,address,uint256)": "704037bd", + "getNumberOfLBPairs()": "4e937c3a", + "getNumberOfQuoteAssets()": "80c5061e", + "getPreset(uint16)": "935ea51b", + "getQuoteAsset(uint256)": "f89a4cd5", + "isQuoteAsset(address)": "27721842", + "removePreset(uint16)": "e203a31f", + "removeQuoteAsset(address)": "ddbfd941", + "setFactoryLockedState(bool)": "22f3fe14", + "setFeeRecipient(address)": "e74b981b", + "setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "093ff769", + "setFlashLoanFee(uint256)": "e92d0d5d", + "setLBPairIgnored(address,address,uint256,bool)": "200aa7e3", + "setLBPairImplementation(address)": "b0384781", + "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint16)": "0af97c9a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"name\":\"FactoryLockedStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"FeeParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sampleLifetime\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LBPairImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_BIN_STEP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PROTOCOL_SHARE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_BIN_STEP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"addQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"allLBPairs\",\"outputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"creationUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"}],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"presetsBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"name\":\"getAllLBPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBLegacyFactory.LBPairInformation[]\",\"name\":\"LBPairsBinStep\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getLBPairInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBLegacyFactory.LBPairInformation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfLBPairs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfQuoteAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"getPreset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sampleLifetime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuoteAsset\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isQuoteAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"removeQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"locked\",\"type\":\"bool\"}],\"name\":\"setFactoryLockedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"setLBPairIgnored\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"setLBPairImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"sampleLifetime\",\"type\":\"uint16\"}],\"name\":\"setPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBFactory contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyFactory.sol\":\"ILBLegacyFactory\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0xcec90d4f620b1ff5b3c6b57348044e8e9c0e1313c20fa2f5c91206c84e47a388\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cd83dd005f0fd8229fd6eb9d2cd37399b543ab9d9ccefe9050c472dcb106490\",\"dweb:/ipfs/Qmca42wgwAUCWRX3ZMezhnJGwSHcXpP7D4hDYRZmeJChgY\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x4d26410d0c866e3ed50c39ffeb191d2beefcbb603a39812b3497de267035bac4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a307fdcace490a0b52e4db19befde1267615602140858d4b806b885258dec262\",\"dweb:/ipfs/QmYPEdQJRAFwdyrphHZT2vpqdFo7gK3SULn3QYA3kdx3Ka\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0x8761bc1f131de7fc47ab2e83df8e42dea8472976e5b6cd85e6e6b4c97a5b1c1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://069c01d23f87b602eac49dc7c6cdfc1b3d505cffc4b42dfc3284b382853a0c3f\",\"dweb:/ipfs/QmQnu2Uff3wzJ3ZnLwZrKB8ECnoF3SzPHLBHQcMhcWpFHT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of LBFactory contract", + "version": 1 + } + } + }, + "src/interfaces/ILBLegacyPair.sol": { + "ILBLegacyPair": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feesX", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feesY", + "type": "uint256" + } + ], + "name": "CompositionFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "name": "DepositedToBin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "name": "FeesCollected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "FlashLoan", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "previousSize", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newSize", + "type": "uint256" + } + ], + "name": "OracleSizeIncreased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "name": "ProtocolFeesCollected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "volatilityAccumulated", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fees", + "type": "uint256" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "name": "WithdrawnFromBin", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "batchBalances", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "collectFees", + "outputs": [ + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectProtocolFees", + "outputs": [ + { + "internalType": "uint128", + "name": "amountX", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountY", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeParameters", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulated", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "volatilityAccumulated", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "volatilityReference", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "indexRef", + "type": "uint24" + }, + { + "internalType": "uint40", + "name": "time", + "type": "uint40" + } + ], + "internalType": "struct ILBLegacyPair.FeeParameters", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id_", + "type": "uint24" + }, + { + "internalType": "bool", + "name": "sentTokenY", + "type": "bool" + } + ], + "name": "findFirstNonEmptyBinId", + "outputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "flashLoan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "forceDecay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getBin", + "outputs": [ + { + "internalType": "uint256", + "name": "reserveX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveY", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGlobalFees", + "outputs": [ + { + "internalType": "uint128", + "name": "feesXTotal", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "feesYTotal", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "feesXProtocol", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "feesYProtocol", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOracleParameters", + "outputs": [ + { + "internalType": "uint256", + "name": "oracleSampleLifetime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oracleSize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oracleActiveSize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oracleLastTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oracleId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timeDelta", + "type": "uint256" + } + ], + "name": "getOracleSampleFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "cumulativeId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "cumulativeAccumulator", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "cumulativeBinCrossed", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReservesAndId", + "outputs": [ + { + "internalType": "uint256", + "name": "reserveX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newSize", + "type": "uint16" + } + ], + "name": "increaseOracleLength", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "sampleLifetime", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "packedFeeParameters", + "type": "bytes32" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionX", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionY", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "amountXAddedToPair", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYAddedToPair", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "pendingFees", + "outputs": [ + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "id", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amount", + "type": "uint256[]" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "packedFeeParameters", + "type": "bytes32" + } + ], + "name": "setFeesParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "sentTokenY", + "type": "bool" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "swap", + "outputs": [ + { + "internalType": "uint256", + "name": "amountXOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenX", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenY", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "supportsInterface(bytes4)": { + "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas." + } + }, + "title": "Liquidity Book Pair V2 Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "burn(uint256[],uint256[],address)": "0acd451d", + "collectFees(address,uint256[])": "225b20b9", + "collectProtocolFees()": "a1af5b9a", + "factory()": "c45a0155", + "feeParameters()": "98c7adf3", + "findFirstNonEmptyBinId(uint24,bool)": "8f919a83", + "flashLoan(address,address,uint256,bytes)": "5cffe9de", + "forceDecay()": "d3b9fbe4", + "getBin(uint24)": "0abe9688", + "getGlobalFees()": "a582cdaa", + "getOracleParameters()": "55182894", + "getOracleSampleFrom(uint256)": "a21635a7", + "getReservesAndId()": "1b05b83e", + "increaseOracleLength(uint16)": "c7bd6586", + "initialize(address,address,uint24,uint16,bytes32)": "d32db437", + "isApprovedForAll(address,address)": "e985e9c5", + "mint(uint256[],uint256[],uint256[],address)": "714c8592", + "name()": "06fdde03", + "pendingFees(address,uint256[])": "f7cff1f8", + "safeBatchTransferFrom(address,address,uint256[],uint256[])": "fba0ee64", + "safeTransferFrom(address,address,uint256,uint256)": "0febdd49", + "setApprovalForAll(address,bool)": "a22cb465", + "setFeesParameters(bytes32)": "54b5fc87", + "supportsInterface(bytes4)": "01ffc9a7", + "swap(bool,address)": "53c059a0", + "symbol()": "95d89b41", + "tokenX()": "16dc165b", + "tokenY()": "b7d19fc4", + "totalSupply(uint256)": "bd85b039" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feesX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feesY\",\"type\":\"uint256\"}],\"name\":\"CompositionFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"DepositedToBin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"FeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousSize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSize\",\"type\":\"uint256\"}],\"name\":\"OracleSizeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"volatilityAccumulated\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"WithdrawnFromBin\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"batchBalances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"collectFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountY\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeParameters\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulated\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulated\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"indexRef\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"time\",\"type\":\"uint40\"}],\"internalType\":\"struct ILBLegacyPair.FeeParameters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id_\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"sentTokenY\",\"type\":\"bool\"}],\"name\":\"findFirstNonEmptyBinId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getBin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveY\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"feesXTotal\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feesYTotal\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feesXProtocol\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feesYProtocol\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"oracleSampleLifetime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleActiveSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleLastTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oracleId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timeDelta\",\"type\":\"uint256\"}],\"name\":\"getOracleSampleFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cumulativeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cumulativeAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cumulativeBinCrossed\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesAndId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newSize\",\"type\":\"uint16\"}],\"name\":\"increaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"sampleLifetime\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"packedFeeParameters\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAddedToPair\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAddedToPair\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"pendingFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"id\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amount\",\"type\":\"uint256[]\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"packedFeeParameters\",\"type\":\"bytes32\"}],\"name\":\"setFeesParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"sentTokenY\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenY\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"Liquidity Book Pair V2 Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBPair contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyPair.sol\":\"ILBLegacyPair\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x4d26410d0c866e3ed50c39ffeb191d2beefcbb603a39812b3497de267035bac4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a307fdcace490a0b52e4db19befde1267615602140858d4b806b885258dec262\",\"dweb:/ipfs/QmYPEdQJRAFwdyrphHZT2vpqdFo7gK3SULn3QYA3kdx3Ka\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0x8761bc1f131de7fc47ab2e83df8e42dea8472976e5b6cd85e6e6b4c97a5b1c1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://069c01d23f87b602eac49dc7c6cdfc1b3d505cffc4b42dfc3284b382853a0c3f\",\"dweb:/ipfs/QmQnu2Uff3wzJ3ZnLwZrKB8ECnoF3SzPHLBHQcMhcWpFHT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of LBPair contract", + "version": 1 + } + } + }, + "src/interfaces/ILBLegacyRouter.sol": { + "ILBLegacyRouter": { + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "int256[]", + "name": "deltaIds", + "type": "int256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionX", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionY", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ILBLegacyRouter.LiquidityParameters", + "name": "liquidityParameters", + "type": "tuple" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "int256[]", + "name": "deltaIds", + "type": "int256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionX", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionY", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ILBLegacyRouter.LiquidityParameters", + "name": "liquidityParameters", + "type": "tuple" + } + ], + "name": "addLiquidityAVAX", + "outputs": [ + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "createLBPair", + "outputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "getIdFromPrice", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getPriceFromId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "lbPair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesIn", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBLegacyPair", + "name": "lbPair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feesIn", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oldFactory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityAVAX", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAX", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapAVAXForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactAVAXForTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinAVAX", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForAVAX", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinAVAX", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactAVAX", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "sweep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBToken", + "name": "_lbToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + } + ], + "name": "sweepLBToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "wavax", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Router Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,uint256))": "e324a3e4", + "addLiquidityAVAX((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,uint256))": "ea8f43d8", + "createLBPair(address,address,uint24,uint16)": "659ac74b", + "factory()": "c45a0155", + "getIdFromPrice(address,uint256)": "f96fe925", + "getPriceFromId(address,uint24)": "d0e380f2", + "getSwapIn(address,uint256,bool)": "5bdd4b7c", + "getSwapOut(address,uint256,bool)": "2004b724", + "oldFactory()": "1bd6dfe1", + "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "c22159b6", + "removeLiquidityAVAX(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "bcb1c957", + "swapAVAXForExactTokens(uint256,uint256[],address[],address,uint256)": "42f564a0", + "swapExactAVAXForTokens(uint256,uint256[],address[],address,uint256)": "264bb94e", + "swapExactAVAXForTokensSupportingFeeOnTransferTokens(uint256,uint256[],address[],address,uint256)": "440830bd", + "swapExactTokensForAVAX(uint256,uint256,uint256[],address[],address,uint256)": "fb321c70", + "swapExactTokensForAVAXSupportingFeeOnTransferTokens(uint256,uint256,uint256[],address[],address,uint256)": "9a17e820", + "swapExactTokensForTokens(uint256,uint256,uint256[],address[],address,uint256)": "6d0ff495", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,uint256[],address[],address,uint256)": "212a1d94", + "swapTokensForExactAVAX(uint256,uint256,uint256[],address[],address,uint256)": "6d3420ed", + "swapTokensForExactTokens(uint256,uint256,uint256[],address[],address,uint256)": "a7b856d3", + "sweep(address,address,uint256)": "62c06767", + "sweepLBToken(address,address,uint256[],uint256[])": "e9361c08", + "wavax()": "117be4c2" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBLegacyRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBLegacyRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBLegacyPair\",\"name\":\"lbPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oldFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAVAX\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAVAXForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAVAXForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinAVAX\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAVAXSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAVAX\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBToken\",\"name\":\"_lbToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"sweepLBToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wavax\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Router Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBRouter contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyRouter.sol\":\"ILBLegacyRouter\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x4d26410d0c866e3ed50c39ffeb191d2beefcbb603a39812b3497de267035bac4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a307fdcace490a0b52e4db19befde1267615602140858d4b806b885258dec262\",\"dweb:/ipfs/QmYPEdQJRAFwdyrphHZT2vpqdFo7gK3SULn3QYA3kdx3Ka\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0xdeee599df829ad6c0ee8174c48def9858ac4a9b420cd0f3ca4541f3fb6cdf82e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2688d777fec9ad1e91bd74cd323897de85a1776e16c9441474d63c1b08c3b8c0\",\"dweb:/ipfs/QmZfB4VBegmr7vD4RXUBXEXtynny2JrwF69gh2uks5UxAD\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0x8761bc1f131de7fc47ab2e83df8e42dea8472976e5b6cd85e6e6b4c97a5b1c1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://069c01d23f87b602eac49dc7c6cdfc1b3d505cffc4b42dfc3284b382853a0c3f\",\"dweb:/ipfs/QmQnu2Uff3wzJ3ZnLwZrKB8ECnoF3SzPHLBHQcMhcWpFHT\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of LBRouter contract", + "version": 1 + } + } + }, + "src/interfaces/ILBLegacyToken.sol": { + "ILBLegacyToken": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "batchBalances", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "id", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amount", + "type": "uint256[]" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "supportsInterface(bytes4)": { + "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas." + } + }, + "title": "Liquidity Book V2 Token Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "safeBatchTransferFrom(address,address,uint256[],uint256[])": "fba0ee64", + "safeTransferFrom(address,address,uint256,uint256)": "0febdd49", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "totalSupply(uint256)": "bd85b039" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"batchBalances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"id\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amount\",\"type\":\"uint256[]\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"title\":\"Liquidity Book V2 Token Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBToken contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBLegacyToken.sol\":\"ILBLegacyToken\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0x8761bc1f131de7fc47ab2e83df8e42dea8472976e5b6cd85e6e6b4c97a5b1c1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://069c01d23f87b602eac49dc7c6cdfc1b3d505cffc4b42dfc3284b382853a0c3f\",\"dweb:/ipfs/QmQnu2Uff3wzJ3ZnLwZrKB8ECnoF3SzPHLBHQcMhcWpFHT\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of LBToken contract", + "version": 1 + } + } + }, + "src/interfaces/ILBPair.sol": { + "ILBPair": { + "abi": [ + { + "inputs": [], + "name": "LBPair__AddressZero", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__EmptyMarketConfigs", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__FlashLoanCallbackFailed", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__FlashLoanInsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InsufficientAmountIn", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InsufficientAmountOut", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InvalidHooks", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InvalidInput", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InvalidStaticFeeParameters", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__MaxTotalFeeExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__OnlyFactory", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__OnlyProtocolFeeRecipient", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__OutOfLiquidity", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__TokenNotSupported", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "LBPair__ZeroAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "LBPair__ZeroAmountsOut", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__ZeroBorrowAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "LBPair__ZeroShares", + "type": "error" + }, + { + "inputs": [], + "name": "LBToken__AddressThisOrZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__BurnExceedsBalance", + "type": "error" + }, + { + "inputs": [], + "name": "LBToken__InvalidLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "LBToken__SelfApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "LBToken__SpenderNotApproved", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__TransferExceedsBalance", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "CollectedProtocolFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "id", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "CompositionFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "amounts", + "type": "bytes32[]" + } + ], + "name": "DepositedToBins", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract ILBFlashLoanCallback", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "FlashLoan", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "idReference", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "volatilityReference", + "type": "uint24" + } + ], + "name": "ForcedDecay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + } + ], + "name": "HooksParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "oracleLength", + "type": "uint16" + } + ], + "name": "OracleLengthIncreased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "StaticFeeParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "id", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "amountsIn", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "amountsOut", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "volatilityAccumulator", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "amounts", + "type": "bytes32[]" + } + ], + "name": "WithdrawnFromBins", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "approveForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "batchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amountsToBurn", + "type": "uint256[]" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "amounts", + "type": "bytes32[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectProtocolFees", + "outputs": [ + { + "internalType": "bytes32", + "name": "collectedProtocolFees", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBFlashLoanCallback", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "flashLoan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "forceDecay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getActiveId", + "outputs": [ + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getBin", + "outputs": [ + { + "internalType": "uint128", + "name": "binReserveX", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "binReserveY", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBinStep", + "outputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFactory", + "outputs": [ + { + "internalType": "contract ILBFactory", + "name": "factory", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "getIdFromPrice", + "outputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLBHooksParameters", + "outputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getNextNonEmptyBin", + "outputs": [ + { + "internalType": "uint24", + "name": "nextId", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOracleParameters", + "outputs": [ + { + "internalType": "uint8", + "name": "sampleLifetime", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "size", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "activeSize", + "type": "uint16" + }, + { + "internalType": "uint40", + "name": "lastUpdated", + "type": "uint40" + }, + { + "internalType": "uint40", + "name": "firstTimestamp", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint40", + "name": "lookupTimestamp", + "type": "uint40" + } + ], + "name": "getOracleSampleAt", + "outputs": [ + { + "internalType": "uint64", + "name": "cumulativeId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "cumulativeVolatility", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "cumulativeBinCrossed", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getPriceFromId", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getProtocolFees", + "outputs": [ + { + "internalType": "uint128", + "name": "protocolFeeX", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "protocolFeeY", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint128", + "name": "reserveX", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "reserveY", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStaticFeeParameters", + "outputs": [ + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapIn", + "outputs": [ + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOutLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapOut", + "outputs": [ + { + "internalType": "uint128", + "name": "amountInLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenX", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenY", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVariableFeeParameters", + "outputs": [ + { + "internalType": "uint24", + "name": "volatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "volatilityReference", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "idReference", + "type": "uint24" + }, + { + "internalType": "uint40", + "name": "timeOfLastUpdate", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newLength", + "type": "uint16" + } + ], + "name": "increaseOracleLength", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32[]", + "name": "liquidityConfigs", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bytes32", + "name": "amountsReceived", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "amountsLeft", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "onHooksSetData", + "type": "bytes" + } + ], + "name": "setHooksParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "setStaticFeeParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "swap", + "outputs": [ + { + "internalType": "bytes32", + "name": "amountsOut", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "approveForAll(address,bool)": "e584b654", + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "batchTransferFrom(address,address,uint256[],uint256[])": "17fad7fc", + "burn(address,address,uint256[],uint256[])": "c9939f5e", + "collectProtocolFees()": "a1af5b9a", + "flashLoan(address,bytes32,bytes)": "ea3446bf", + "forceDecay()": "d3b9fbe4", + "getActiveId()": "dbe65edc", + "getBin(uint24)": "0abe9688", + "getBinStep()": "17f11ecc", + "getFactory()": "88cc58e4", + "getIdFromPrice(uint256)": "f5e29329", + "getLBHooksParameters()": "781a8915", + "getNextNonEmptyBin(bool,uint24)": "a41a01fb", + "getOracleParameters()": "55182894", + "getOracleSampleAt(uint40)": "8940a16a", + "getPriceFromId(uint24)": "4c7cffbd", + "getProtocolFees()": "d8dfcea0", + "getReserves()": "0902f1ac", + "getStaticFeeParameters()": "7ca0de30", + "getSwapIn(uint128,bool)": "abcd7830", + "getSwapOut(uint128,bool)": "e77366f8", + "getTokenX()": "05e8746d", + "getTokenY()": "da10610c", + "getVariableFeeParameters()": "8d7024e5", + "increaseOracleLength(uint16)": "c7bd6586", + "initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)": "47973bff", + "isApprovedForAll(address,address)": "e985e9c5", + "mint(address,bytes32[],address)": "383d15c5", + "name()": "06fdde03", + "setHooksParameters(bytes32,bytes)": "1b057f6d", + "setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "6653851a", + "swap(bool,address)": "53c059a0", + "symbol()": "95d89b41", + "totalSupply(uint256)": "bd85b039" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBPair__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__EmptyMarketConfigs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanCallbackFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanInsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidHooks\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidStaticFeeParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__MaxTotalFeeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyProtocolFeeRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OutOfLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__TokenNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmountsOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__ZeroBorrowAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroShares\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CollectedProtocolFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CompositionFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"DepositedToBins\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"}],\"name\":\"ForcedDecay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"HooksParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"oracleLength\",\"type\":\"uint16\"}],\"name\":\"OracleLengthIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"StaticFeeParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"WithdrawnFromBins\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"collectedProtocolFees\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getActiveId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getBin\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBinStep\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBHooksParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getNextNonEmptyBin\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"nextId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"size\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"activeSize\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"firstTimestamp\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"lookupTimestamp\",\"type\":\"uint40\"}],\"name\":\"getOracleSampleAt\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"cumulativeId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeVolatility\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeBinCrossed\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"protocolFeeX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticFeeParameters\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenY\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVariableFeeParameters\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"timeOfLastUpdate\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newLength\",\"type\":\"uint16\"}],\"name\":\"increaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"amountsLeft\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setHooksParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setStaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBPair.sol\":\"ILBPair\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/interfaces/ILBRouter.sol": { + "ILBRouter": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountSlippage", + "type": "uint256" + } + ], + "name": "LBRouter__AmountSlippageBPTooBig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "name": "LBRouter__AmountSlippageCaught", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "LBRouter__BinReserveOverflows", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__BrokenSwapSafetyCheck", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentTimestamp", + "type": "uint256" + } + ], + "name": "LBRouter__DeadlineExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBRouter__FailedToSendNATIVE", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + } + ], + "name": "LBRouter__IdDesiredOverflows", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "id", + "type": "int256" + } + ], + "name": "LBRouter__IdOverflows", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeId", + "type": "uint256" + } + ], + "name": "LBRouter__IdSlippageCaught", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "name": "LBRouter__InsufficientAmountOut", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "wrongToken", + "type": "address" + } + ], + "name": "LBRouter__InvalidTokenPath", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + } + ], + "name": "LBRouter__InvalidVersion", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__LengthsMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "LBRouter__MaxAmountInExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__NotFactoryOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBRouter__PairNotCreated", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__SenderIsNotWNATIVE", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "LBRouter__SwapOverflows", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "excess", + "type": "uint256" + } + ], + "name": "LBRouter__TooMuchTokensIn", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserve", + "type": "uint256" + } + ], + "name": "LBRouter__WrongAmounts", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "msgValue", + "type": "uint256" + } + ], + "name": "LBRouter__WrongNativeLiquidityParameters", + "type": "error" + }, + { + "inputs": [], + "name": "LBRouter__WrongTokenOrder", + "type": "error" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "int256[]", + "name": "deltaIds", + "type": "int256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionX", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionY", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ILBRouter.LiquidityParameters", + "name": "liquidityParameters", + "type": "tuple" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountXAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYLeft", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "activeIdDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "idSlippage", + "type": "uint256" + }, + { + "internalType": "int256[]", + "name": "deltaIds", + "type": "int256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionX", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "distributionY", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ILBRouter.LiquidityParameters", + "name": "liquidityParameters", + "type": "tuple" + } + ], + "name": "addLiquidityNATIVE", + "outputs": [ + { + "internalType": "uint256", + "name": "amountXAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountXLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYLeft", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "createLBPair", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getFactory", + "outputs": [ + { + "internalType": "contract ILBFactory", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "getIdFromPrice", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getPriceFromId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapIn", + "outputs": [ + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOutLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapOut", + "outputs": [ + { + "internalType": "uint128", + "name": "amountInLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getV1Factory", + "outputs": [ + { + "internalType": "contract ISovrynLBFactoryV1", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWNATIVE", + "outputs": [ + { + "internalType": "contract IWNATIVE", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "amountXMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountYMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountY", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountNATIVEMin", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityNATIVE", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountNATIVE", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactNATIVEForTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactNATIVEForTokensSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinNATIVE", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForNATIVE", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinNATIVE", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForNATIVESupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapNATIVEForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address payable", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactNATIVE", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "pairBinSteps", + "type": "uint256[]" + }, + { + "internalType": "enum ILBRouter.Version[]", + "name": "versions", + "type": "uint8[]" + }, + { + "internalType": "contract IERC20[]", + "name": "tokenPath", + "type": "address[]" + } + ], + "internalType": "struct ILBRouter.Path", + "name": "path", + "type": "tuple" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amountsIn", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "sweep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBToken", + "name": "_lbToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + } + ], + "name": "sweepLBToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Router Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "addLiquidity((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "a3c7271a", + "addLiquidityNATIVE((address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256[],uint256[],uint256[],address,address,uint256))": "8efc2b2c", + "createLBPair(address,address,uint24,uint16)": "659ac74b", + "getFactory()": "88cc58e4", + "getIdFromPrice(address,uint256)": "f96fe925", + "getPriceFromId(address,uint24)": "d0e380f2", + "getSwapIn(address,uint128,bool)": "964f987c", + "getSwapOut(address,uint128,bool)": "a0d376cf", + "getV1Factory()": "bb558a9f", + "getWNATIVE()": "6c9c0078", + "removeLiquidity(address,address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "c22159b6", + "removeLiquidityNATIVE(address,uint16,uint256,uint256,uint256[],uint256[],address,uint256)": "81c2fdfb", + "swapExactNATIVEForTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "b066ea7c", + "swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "e038e6dc", + "swapExactTokensForNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "9ab6156b", + "swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "1a24f9a9", + "swapExactTokensForTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "2a443fae", + "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "4b801870", + "swapNATIVEForExactTokens(uint256,(uint256[],uint8[],address[]),address,uint256)": "2075ad22", + "swapTokensForExactNATIVE(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "3dc8f8ec", + "swapTokensForExactTokens(uint256,uint256,(uint256[],uint8[],address[]),address,uint256)": "92fe8e70", + "sweep(address,address,uint256)": "62c06767", + "sweepLBToken(address,address,uint256[],uint256[])": "e9361c08" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageBPTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"name\":\"LBRouter__AmountSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__BinReserveOverflows\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__BrokenSwapSafetyCheck\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"LBRouter__DeadlineExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBRouter__FailedToSendNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdDesiredOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"id\",\"type\":\"int256\"}],\"name\":\"LBRouter__IdOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeId\",\"type\":\"uint256\"}],\"name\":\"LBRouter__IdSlippageCaught\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrongToken\",\"type\":\"address\"}],\"name\":\"LBRouter__InvalidTokenPath\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"LBRouter__InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__LengthsMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"LBRouter__MaxAmountInExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__NotFactoryOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBRouter__PairNotCreated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__SenderIsNotWNATIVE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"LBRouter__SwapOverflows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"excess\",\"type\":\"uint256\"}],\"name\":\"LBRouter__TooMuchTokensIn\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserve\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongAmounts\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"LBRouter__WrongNativeLiquidityParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBRouter__WrongTokenOrder\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"activeIdDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idSlippage\",\"type\":\"uint256\"},{\"internalType\":\"int256[]\",\"name\":\"deltaIds\",\"type\":\"int256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionX\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"distributionY\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ILBRouter.LiquidityParameters\",\"name\":\"liquidityParameters\",\"type\":\"tuple\"}],\"name\":\"addLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountXAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYAdded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountXLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"depositIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getV1Factory\",\"outputs\":[{\"internalType\":\"contract ISovrynLBFactoryV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWNATIVE\",\"outputs\":[{\"internalType\":\"contract IWNATIVE\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountXMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountYMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountY\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVEMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountNATIVE\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactNATIVEForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinNATIVE\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForNATIVESupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapNATIVEForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address payable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactNATIVE\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"pairBinSteps\",\"type\":\"uint256[]\"},{\"internalType\":\"enum ILBRouter.Version[]\",\"name\":\"versions\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenPath\",\"type\":\"address[]\"}],\"internalType\":\"struct ILBRouter.Path\",\"name\":\"path\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBToken\",\"name\":\"_lbToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"sweepLBToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Router Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBRouter contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBRouter.sol\":\"ILBRouter\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBLegacyFactory.sol\":{\"keccak256\":\"0xcec90d4f620b1ff5b3c6b57348044e8e9c0e1313c20fa2f5c91206c84e47a388\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cd83dd005f0fd8229fd6eb9d2cd37399b543ab9d9ccefe9050c472dcb106490\",\"dweb:/ipfs/Qmca42wgwAUCWRX3ZMezhnJGwSHcXpP7D4hDYRZmeJChgY\"]},\"src/interfaces/ILBLegacyPair.sol\":{\"keccak256\":\"0x4d26410d0c866e3ed50c39ffeb191d2beefcbb603a39812b3497de267035bac4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a307fdcace490a0b52e4db19befde1267615602140858d4b806b885258dec262\",\"dweb:/ipfs/QmYPEdQJRAFwdyrphHZT2vpqdFo7gK3SULn3QYA3kdx3Ka\"]},\"src/interfaces/ILBLegacyRouter.sol\":{\"keccak256\":\"0xdeee599df829ad6c0ee8174c48def9858ac4a9b420cd0f3ca4541f3fb6cdf82e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2688d777fec9ad1e91bd74cd323897de85a1776e16c9441474d63c1b08c3b8c0\",\"dweb:/ipfs/QmZfB4VBegmr7vD4RXUBXEXtynny2JrwF69gh2uks5UxAD\"]},\"src/interfaces/ILBLegacyToken.sol\":{\"keccak256\":\"0x8761bc1f131de7fc47ab2e83df8e42dea8472976e5b6cd85e6e6b4c97a5b1c1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://069c01d23f87b602eac49dc7c6cdfc1b3d505cffc4b42dfc3284b382853a0c3f\",\"dweb:/ipfs/QmQnu2Uff3wzJ3ZnLwZrKB8ECnoF3SzPHLBHQcMhcWpFHT\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBRouter.sol\":{\"keccak256\":\"0xe71da86c5fb90e7cff71d874bb7d3d805df175afd8c876f000c80ce329be31da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1282a496ed9eee833f91def600027739966f41313722fe92f1d9b573f4e6e6b3\",\"dweb:/ipfs/QmXJRCjTd5DRd5VEuTpN1ZKkxP4TcRFuPSL5ZdQb5GnV1G\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of LBRouter contract", + "version": 1 + } + } + }, + "src/interfaces/ILBToken.sol": { + "ILBToken": { + "abi": [ + { + "inputs": [], + "name": "LBToken__AddressThisOrZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__BurnExceedsBalance", + "type": "error" + }, + { + "inputs": [], + "name": "LBToken__InvalidLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "LBToken__SelfApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "LBToken__SpenderNotApproved", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__TransferExceedsBalance", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "approveForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "batchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Token Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "approveForAll(address,bool)": "e584b654", + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "batchTransferFrom(address,address,uint256[],uint256[])": "17fad7fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply(uint256)": "bd85b039" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Token Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with the LBToken.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBToken.sol\":\"ILBToken\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Interface to interact with the LBToken.", + "version": 1 + } + } + }, + "src/interfaces/ISovrynLBFactoryV1.sol": { + "ISovrynLBFactoryV1": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "pair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "PairCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "allPairs", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "allPairsLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "createPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeTo", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToSetter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + } + ], + "name": "getPair", + "outputs": [ + { + "internalType": "address", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "migrator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setFeeToSetter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "setMigrator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Sovryn LB V1 Factory Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allPairs(uint256)": "1e3dd18b", + "allPairsLength()": "574f2ba3", + "createPair(address,address)": "c9c65396", + "feeTo()": "017e7e58", + "feeToSetter()": "094b7415", + "getPair(address,address)": "e6a43905", + "migrator()": "7cd07e47", + "setFeeTo(address)": "f46901ed", + "setFeeToSetter(address)": "a2e74af6", + "setMigrator(address)": "23cf3118" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Factory\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBFactoryV1.sol\":\"ISovrynLBFactoryV1\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/interfaces/ISovrynLBFactoryV1.sol\":{\"keccak256\":\"0x7cc6e501d10d5982b0bc18c4f6396e1d53606cc4161d0c01aec6480a7fefbcce\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dd48d3a9c381f3b9a7197dfdffac3521c10241f751101f3ee86fae1b1dc676d9\",\"dweb:/ipfs/Qma4kuNgRAm1v6LxSUFo384k5yvXnZ4wdE5cGU4GijyTSd\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Interface to interact with Sovryn LB V1 Factory", + "version": 1 + } + } + }, + "src/interfaces/ISovrynLBPairV1.sol": { + "ISovrynLBPairV1": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Sovryn LB V1 Pair Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "MINIMUM_LIQUIDITY()": "ba9a7a56", + "PERMIT_TYPEHASH()": "30adf81f", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(address)": "89afcb44", + "decimals()": "313ce567", + "factory()": "c45a0155", + "getReserves()": "0902f1ac", + "initialize(address,address)": "485cc955", + "kLast()": "7464fc3d", + "mint(address)": "6a627842", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "price0CumulativeLast()": "5909c0d5", + "price1CumulativeLast()": "5a3d5493", + "skim(address)": "bc25cf77", + "swap(uint256,uint256,address,bytes)": "022c0d9f", + "symbol()": "95d89b41", + "sync()": "fff6cae9", + "token0()": "0dfe1681", + "token1()": "d21220a7", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB V1 Pair Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with Sovryn LB V1 Pairs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISovrynLBPairV1.sol\":\"ISovrynLBPairV1\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/interfaces/ISovrynLBPairV1.sol\":{\"keccak256\":\"0x71be4746f20a76c33bffe7a18b0b23bb17f2a89035b8b9be0a58c8e3c973a855\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://be2ea1f8fcb9812951eaa5f8278ad15ea3e90105f5159e0e9ca2ed22e566dec0\",\"dweb:/ipfs/QmTpNEmrxLEd1c9VAtXgwNt6xaWxtyVWrW4LyqrThKDMmc\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Interface to interact with Sovryn LB V1 Pairs", + "version": 1 + } + } + }, + "src/interfaces/IWNATIVE.sol": { + "IWNATIVE": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "title": "WNATIVE Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "deposit()": "d0e30db0", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "withdraw(uint256)": "2e1a7d4d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"WNATIVE Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of Wrapped NATIVE contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IWNATIVE.sol\":\"IWNATIVE\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/IWNATIVE.sol\":{\"keccak256\":\"0x60ffbeb68bc35b80c5a8046854ac095c73cdffbe0f293091f69f0adaf31543e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c9d73dffc2c51210a0591c11483e2d8cdfdfc95dbc2d561f6b27b3b918d47aa\",\"dweb:/ipfs/QmZPd81xzm6HaLvu9i1pK7wu8agvRyQFrTyugybtLCYB74\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of Wrapped NATIVE contract", + "version": 1 + } + } + }, + "src/libraries/BinHelper.sol": { + "BinHelper": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "BinHelper__CompositionFactorFlawed", + "type": "error" + }, + { + "inputs": [], + "name": "BinHelper__LiquidityOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "BinHelper__MaxLiquidityPerBinExceeded", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Bin Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/BinHelper.sol\":607:14335 library BinHelper {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/BinHelper.sol\":607:14335 library BinHelper {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220b4d59b42739911d5af55371c999f70269f262d16d47ee30b5c8d28c4d2e96b7b64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220b4d59b42739911d5af55371c999f70269f262d16d47ee30b5c8d28c4d2e96b7b64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xD5 SWAP12 TIMESTAMP PUSH20 0x9911D5AF55371C999F70269F262D16D47EE30B5C DUP14 0x28 0xC4 0xD2 0xE9 PUSH12 0x7B64736F6C63430008140033 ", + "sourceMap": "607:13728:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220b4d59b42739911d5af55371c999f70269f262d16d47ee30b5c8d28c4d2e96b7b64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xD5 SWAP12 TIMESTAMP PUSH20 0x9911D5AF55371C999F70269F262D16D47EE30B5C DUP14 0x28 0xC4 0xD2 0xE9 PUSH12 0x7B64736F6C63430008140033 ", + "sourceMap": "607:13728:19:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_balanceOf(contract IERC20)": "infinite", + "getAmountOutOfBin(bytes32,uint256,uint256)": "infinite", + "getAmounts(bytes32,bytes32,uint16,bool,uint24,bytes32)": "infinite", + "getCompositionFees(bytes32,bytes32,uint16,bytes32,uint256,uint256)": "infinite", + "getLiquidity(bytes32,uint256)": "infinite", + "getLiquidity(uint256,uint256,uint256)": "infinite", + "getSharesAndEffectiveAmountsIn(bytes32,bytes32,uint256,uint256)": "infinite", + "isEmpty(bytes32,bool)": "infinite", + "received(bytes32,contract IERC20,contract IERC20)": "infinite", + "receivedX(bytes32,contract IERC20)": "infinite", + "receivedY(bytes32,contract IERC20)": "infinite", + "transfer(bytes32,contract IERC20,contract IERC20,address)": "infinite", + "transferX(bytes32,contract IERC20,address)": "infinite", + "transferY(bytes32,contract IERC20,address)": "infinite", + "verifyAmounts(bytes32,uint24,uint24)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 607, + "end": 14335, + "name": "PUSH #[$]", + "source": 19, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH [$]", + "source": 19, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "B" + }, + { + "begin": 607, + "end": 14335, + "name": "DUP3", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "DUP3", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "DUP3", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "CODECOPY", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "DUP1", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "MLOAD", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 607, + "end": 14335, + "name": "BYTE", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "73" + }, + { + "begin": 607, + "end": 14335, + "name": "EQ", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH [tag]", + "source": 19, + "value": "1" + }, + { + "begin": 607, + "end": 14335, + "name": "JUMPI", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 607, + "end": 14335, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "4" + }, + { + "begin": 607, + "end": 14335, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "24" + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 607, + "end": 14335, + "name": "REVERT", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "tag", + "source": 19, + "value": "1" + }, + { + "begin": 607, + "end": 14335, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "ADDRESS", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 607, + "end": 14335, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "73" + }, + { + "begin": 607, + "end": 14335, + "name": "DUP2", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "MSTORE8", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "DUP3", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "DUP2", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "RETURN", + "source": 19 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220b4d59b42739911d5af55371c999f70269f262d16d47ee30b5c8d28c4d2e96b7b64736f6c63430008140033", + ".code": [ + { + "begin": 607, + "end": 14335, + "name": "PUSHDEPLOYADDRESS", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "ADDRESS", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "EQ", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "80" + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "40" + }, + { + "begin": 607, + "end": 14335, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 607, + "end": 14335, + "name": "DUP1", + "source": 19 + }, + { + "begin": 607, + "end": 14335, + "name": "REVERT", + "source": 19 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"BinHelper__CompositionFactorFlawed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__LiquidityOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BinHelper__MaxLiquidityPerBinExceeded\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Bin Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to help interaction with bins.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/BinHelper.sol\":\"BinHelper\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/BinHelper.sol\":{\"keccak256\":\"0x628f601bafe7f4f26703fa2d2af1b354504afb334120c1c230ce59cf835fe9b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1849fb70a3d6792e3600a1edc62cf78e4bfe4cdb58fc66f77ad1698677ae8e12\",\"dweb:/ipfs/QmXmfTTf7RWACPNPg6NnptKntkpggNZhkPJgBf4v34Zpnu\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0x1006878aa066fb9f68bcc4a56029454acfb919abaa3fb84c7e956f61c6435365\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdcd8045a060f75493de19cd4c731bd6a7d27bb3554be4cf235d1e2705094d6a\",\"dweb:/ipfs/QmfB2CdBhid2ixRgsFPF4w3JfFkieL2DuJLX6zjn11EH2x\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xd75796a09915a4ce7fd69894504bb21d8f4b6b8fd96b9d863422911313f9dd71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c38fa6ee12c97e1aa1b33ae4cca16f52c1712b7b7a2222dc0cdf61f087ab6e1b\",\"dweb:/ipfs/QmUXVXUhAtZufsRKKEujphnQLhEmiADw215LMcpjooiERr\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0xe8af4af39a9063fa569aa161f0fb0b81825131c102b8504deebe142f79f918a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b6e1bcd23acaf79754aed4eb8f32ca3f1712696396a6f06511a6422f73da01f\",\"dweb:/ipfs/QmNZjn3byK4aDYMC5xYPKWCjVUoSmUQgeaHx14q9iA412N\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0xe8ae81331a34b92fd7f9d35c5db42155b7a15e030be71461e8fde43b61f94f89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff0d559ce9e5a078b45fc50450031a50aafa28ef9040819ee9389a4ca525646a\",\"dweb:/ipfs/QmXND5xw7qv1thPqTwtLgc6GzTNzo51G8LN1iaqbDnZADZ\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0x58f0ee5bbb2d92c766419db9bf60685885f2f503cf59a2f9ee21a55cccf7da6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://270cebf1bd2cc7318e1e198d1bb72fdc04c59642f891ad54cb5ba0ac15a457e0\",\"dweb:/ipfs/QmfEkyJ8pxuoYAbjeMrj3uoEYX63mJ5GCPBfdPCoWKcGch\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94\",\"dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea\",\"dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to help interaction with bins.", + "version": 1 + } + } + }, + "src/libraries/Constants.sol": { + "Constants": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "stateVariables": { + "CALLBACK_SUCCESS": { + "details": "The expected return after a successful flash loan" + } + }, + "title": "Liquidity Book Constants Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/Constants.sol\":167:939 library Constants {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/Constants.sol\":167:939 library Constants {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E 0xED 0x24 0xCB PUSH0 0xB2 0xCA DUP1 SELFDESTRUCT CALLDATACOPY 0xF9 0xCE SWAP13 PUSH28 0xC678255B24E9614B628977A43131DD86854964736F6C634300081400 CALLER ", + "sourceMap": "167:772:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E 0xED 0x24 0xCB PUSH0 0xB2 0xCA DUP1 SELFDESTRUCT CALLDATACOPY 0xF9 0xCE SWAP13 PUSH28 0xC678255B24E9614B628977A43131DD86854964736F6C634300081400 CALLER ", + "sourceMap": "167:772:20:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 167, + "end": 939, + "name": "PUSH #[$]", + "source": 20, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH [$]", + "source": 20, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "B" + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "CODECOPY", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "DUP1", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "MLOAD", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "BYTE", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "73" + }, + { + "begin": 167, + "end": 939, + "name": "EQ", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH [tag]", + "source": 20, + "value": "1" + }, + { + "begin": 167, + "end": 939, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "4" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "24" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "REVERT", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "tag", + "source": 20, + "value": "1" + }, + { + "begin": 167, + "end": 939, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "ADDRESS", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "73" + }, + { + "begin": 167, + "end": 939, + "name": "DUP2", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE8", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "DUP2", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "RETURN", + "source": 20 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033", + ".code": [ + { + "begin": 167, + "end": 939, + "name": "PUSHDEPLOYADDRESS", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "ADDRESS", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "EQ", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "80" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "40" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "DUP1", + "source": 20 + }, + { + "begin": 167, + "end": 939, + "name": "REVERT", + "source": 20 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CALLBACK_SUCCESS\":{\"details\":\"The expected return after a successful flash loan\"}},\"title\":\"Liquidity Book Constants Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Set of constants for Liquidity Book contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Constants.sol\":\"Constants\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Set of constants for Liquidity Book contracts", + "version": 1 + } + } + }, + "src/libraries/FeeHelper.sol": { + "FeeHelper": { + "abi": [ + { + "inputs": [], + "name": "FeeHelper__FeeTooLarge", + "type": "error" + }, + { + "inputs": [], + "name": "FeeHelper__ProtocolShareTooLarge", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Fee Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/FeeHelper.sol\":216:3605 library FeeHelper {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/FeeHelper.sol\":216:3605 library FeeHelper {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212209034ea44af1c9b5f23b371e40fc0696604be6ab97c75bde7f3513731183cc42764736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209034ea44af1c9b5f23b371e40fc0696604be6ab97c75bde7f3513731183cc42764736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 CALLVALUE 0xEA PREVRANDAO 0xAF SHR SWAP12 PUSH0 0x23 0xB3 PUSH18 0xE40FC0696604BE6AB97C75BDE7F351373118 EXTCODECOPY 0xC4 0x27 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "216:3389:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209034ea44af1c9b5f23b371e40fc0696604be6ab97c75bde7f3513731183cc42764736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 CALLVALUE 0xEA PREVRANDAO 0xAF SHR SWAP12 PUSH0 0x23 0xB3 PUSH18 0xE40FC0696604BE6AB97C75BDE7F351373118 EXTCODECOPY 0xC4 0x27 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "216:3389:21:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_verifyFee(uint128)": "infinite", + "getCompositionFee(uint128,uint128)": "infinite", + "getFeeAmount(uint128,uint128)": "infinite", + "getFeeAmountFrom(uint128,uint128)": "infinite", + "getProtocolFeeAmount(uint128,uint128)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 216, + "end": 3605, + "name": "PUSH #[$]", + "source": 21, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH [$]", + "source": 21, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "B" + }, + { + "begin": 216, + "end": 3605, + "name": "DUP3", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "DUP3", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "DUP3", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "CODECOPY", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "DUP1", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 216, + "end": 3605, + "name": "BYTE", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "73" + }, + { + "begin": 216, + "end": 3605, + "name": "EQ", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH [tag]", + "source": 21, + "value": "1" + }, + { + "begin": 216, + "end": 3605, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 216, + "end": 3605, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 216, + "end": 3605, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "24" + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 216, + "end": 3605, + "name": "REVERT", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "tag", + "source": 21, + "value": "1" + }, + { + "begin": 216, + "end": 3605, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "ADDRESS", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 216, + "end": 3605, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "73" + }, + { + "begin": 216, + "end": 3605, + "name": "DUP2", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "MSTORE8", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "DUP3", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "DUP2", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "RETURN", + "source": 21 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212209034ea44af1c9b5f23b371e40fc0696604be6ab97c75bde7f3513731183cc42764736f6c63430008140033", + ".code": [ + { + "begin": 216, + "end": 3605, + "name": "PUSHDEPLOYADDRESS", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "ADDRESS", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "EQ", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "80" + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 216, + "end": 3605, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 216, + "end": 3605, + "name": "DUP1", + "source": 21 + }, + { + "begin": 216, + "end": 3605, + "name": "REVERT", + "source": 21 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FeeHelper__FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeHelper__ProtocolShareTooLarge\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Fee Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to calculate fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/FeeHelper.sol\":\"FeeHelper\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/FeeHelper.sol\":{\"keccak256\":\"0x1006878aa066fb9f68bcc4a56029454acfb919abaa3fb84c7e956f61c6435365\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdcd8045a060f75493de19cd4c731bd6a7d27bb3554be4cf235d1e2705094d6a\",\"dweb:/ipfs/QmfB2CdBhid2ixRgsFPF4w3JfFkieL2DuJLX6zjn11EH2x\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to calculate fees", + "version": 1 + } + } + }, + "src/libraries/Hooks.sol": { + "Hooks": { + "abi": [ + { + "inputs": [], + "name": "Hooks__CallFailed", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Hooks library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/Hooks.sol\":230:14447 library Hooks {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/Hooks.sol\":230:14447 library Hooks {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 PUSH7 0x422DAA5202216D 0xC7 DUP7 STOP PUSH19 0x665596BFD1D13C95B19269B90B4BE768574D6F PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "230:14217:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 PUSH7 0x422DAA5202216D 0xC7 DUP7 STOP PUSH19 0x665596BFD1D13C95B19269B90B4BE768574D6F PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "230:14217:22:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_safeCall(bytes32,bytes memory)": "infinite", + "afterBatchTransferFrom(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "afterBurn(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "afterFlashLoan(bytes32,address,address,bytes32,bytes32)": "infinite", + "afterMint(bytes32,address,address,bytes32[] calldata,bytes32)": "infinite", + "afterSwap(bytes32,address,address,bool,bytes32)": "infinite", + "beforeBatchTransferFrom(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "beforeBurn(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "beforeFlashLoan(bytes32,address,address,bytes32)": "infinite", + "beforeMint(bytes32,address,address,bytes32[] calldata,bytes32)": "infinite", + "beforeSwap(bytes32,address,address,bool,bytes32)": "infinite", + "decode(bytes32)": "infinite", + "encode(struct Hooks.Parameters memory)": "infinite", + "getFlags(bytes32)": "infinite", + "getHooks(bytes32)": "infinite", + "onHooksSet(bytes32,bytes calldata)": "infinite", + "setHooks(bytes32,address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 230, + "end": 14447, + "name": "PUSH #[$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH [$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "B" + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "CODECOPY", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP1", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "BYTE", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "73" + }, + { + "begin": 230, + "end": 14447, + "name": "EQ", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH [tag]", + "source": 22, + "value": "1" + }, + { + "begin": 230, + "end": 14447, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "4" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "24" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "REVERT", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "tag", + "source": 22, + "value": "1" + }, + { + "begin": 230, + "end": 14447, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "ADDRESS", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "73" + }, + { + "begin": 230, + "end": 14447, + "name": "DUP2", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE8", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP2", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "RETURN", + "source": 22 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033", + ".code": [ + { + "begin": 230, + "end": 14447, + "name": "PUSHDEPLOYADDRESS", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "ADDRESS", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "EQ", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "80" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "DUP1", + "source": 22 + }, + { + "begin": 230, + "end": 14447, + "name": "REVERT", + "source": 22 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Hooks__CallFailed\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Hooks library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions that should be used to interact with hooks\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Hooks.sol\":\"Hooks\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions that should be used to interact with hooks", + "version": 1 + } + } + }, + "src/libraries/PairParameterHelper.sol": { + "PairParameterHelper": { + "abi": [ + { + "inputs": [], + "name": "PairParametersHelper__InvalidParameter", + "type": "error" + } + ], + "devdoc": { + "details": "This library contains functions to get and set parameters of a pair The parameters are stored in a single bytes32 variable in the following format: [0 - 16[: base factor (16 bits) [16 - 28[: filter period (12 bits) [28 - 40[: decay period (12 bits) [40 - 54[: reduction factor (14 bits) [54 - 78[: variable fee control (24 bits) [78 - 92[: protocol share (14 bits) [92 - 112[: max volatility accumulator (20 bits) [112 - 132[: volatility accumulator (20 bits) [132 - 152[: volatility reference (20 bits) [152 - 176[: index reference (24 bits) [176 - 216[: time of last update (40 bits) [216 - 232[: oracle index (16 bits) [232 - 256[: active index (24 bits)", + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Pair Parameter Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/PairParameterHelper.sol\":964:17954 library PairParameterHelper {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/PairParameterHelper.sol\":964:17954 library PairParameterHelper {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E PUSH17 0xFBB9D7240B07EF4D5094E64612DE1C56F 0xF9 0xDA 0x5C 0xE6 0x49 DUP7 PUSH23 0x94BDA32A61E464736F6C63430008140033000000000000 ", + "sourceMap": "964:16990:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E PUSH17 0xFBB9D7240B07EF4D5094E64612DE1C56F 0xF9 0xDA 0x5C 0xE6 0x49 DUP7 PUSH23 0x94BDA32A61E464736F6C63430008140033000000000000 ", + "sourceMap": "964:16990:23:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "getActiveId(bytes32)": "infinite", + "getBaseFactor(bytes32)": "infinite", + "getBaseFee(bytes32,uint16)": "infinite", + "getDecayPeriod(bytes32)": "infinite", + "getDeltaId(bytes32,uint24)": "infinite", + "getFilterPeriod(bytes32)": "infinite", + "getIdReference(bytes32)": "infinite", + "getMaxVolatilityAccumulator(bytes32)": "infinite", + "getOracleId(bytes32)": "infinite", + "getProtocolShare(bytes32)": "infinite", + "getReductionFactor(bytes32)": "infinite", + "getTimeOfLastUpdate(bytes32)": "infinite", + "getTotalFee(bytes32,uint16)": "infinite", + "getVariableFee(bytes32,uint16)": "infinite", + "getVariableFeeControl(bytes32)": "infinite", + "getVolatilityAccumulator(bytes32)": "infinite", + "getVolatilityReference(bytes32)": "infinite", + "setActiveId(bytes32,uint24)": "infinite", + "setOracleId(bytes32,uint16)": "infinite", + "setStaticFeeParameters(bytes32,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "infinite", + "setVolatilityAccumulator(bytes32,uint24)": "infinite", + "setVolatilityReference(bytes32,uint24)": "infinite", + "updateIdReference(bytes32)": "infinite", + "updateReferences(bytes32,uint256)": "infinite", + "updateTimeOfLastUpdate(bytes32,uint256)": "infinite", + "updateVolatilityAccumulator(bytes32,uint24)": "infinite", + "updateVolatilityParameters(bytes32,uint24,uint256)": "infinite", + "updateVolatilityReference(bytes32)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 964, + "end": 17954, + "name": "PUSH #[$]", + "source": 23, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH [$]", + "source": 23, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "B" + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "CODECOPY", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP1", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "MLOAD", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "BYTE", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "73" + }, + { + "begin": 964, + "end": 17954, + "name": "EQ", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH [tag]", + "source": 23, + "value": "1" + }, + { + "begin": 964, + "end": 17954, + "name": "JUMPI", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "4" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "24" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "REVERT", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "tag", + "source": 23, + "value": "1" + }, + { + "begin": 964, + "end": 17954, + "name": "JUMPDEST", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "ADDRESS", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "73" + }, + { + "begin": 964, + "end": 17954, + "name": "DUP2", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE8", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP2", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "RETURN", + "source": 23 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033", + ".code": [ + { + "begin": 964, + "end": 17954, + "name": "PUSHDEPLOYADDRESS", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "ADDRESS", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "EQ", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "80" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "40" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "DUP1", + "source": 23 + }, + { + "begin": 964, + "end": 17954, + "name": "REVERT", + "source": 23 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library contains functions to get and set parameters of a pair The parameters are stored in a single bytes32 variable in the following format: [0 - 16[: base factor (16 bits) [16 - 28[: filter period (12 bits) [28 - 40[: decay period (12 bits) [40 - 54[: reduction factor (14 bits) [54 - 78[: variable fee control (24 bits) [78 - 92[: protocol share (14 bits) [92 - 112[: max volatility accumulator (20 bits) [112 - 132[: volatility accumulator (20 bits) [132 - 152[: volatility reference (20 bits) [152 - 176[: index reference (24 bits) [176 - 216[: time of last update (40 bits) [216 - 232[: oracle index (16 bits) [232 - 256[: active index (24 bits)\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Pair Parameter Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/PairParameterHelper.sol\":\"PairParameterHelper\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xd75796a09915a4ce7fd69894504bb21d8f4b6b8fd96b9d863422911313f9dd71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c38fa6ee12c97e1aa1b33ae4cca16f52c1712b7b7a2222dc0cdf61f087ab6e1b\",\"dweb:/ipfs/QmUXVXUhAtZufsRKKEujphnQLhEmiADw215LMcpjooiERr\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/libraries/PriceHelper.sol": { + "PriceHelper": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Price Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/PriceHelper.sol\":386:3012 library PriceHelper {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/PriceHelper.sol\":386:3012 library PriceHelper {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP9 SWAP15 SDIV SWAP6 PUSH17 0x8398D935E41B2583F2D244E199402C85C8 0xD0 0xF CODECOPY SWAP16 CODECOPY JUMPI MOD 0xF8 MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "386:2626:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP9 SWAP15 SDIV SWAP6 PUSH17 0x8398D935E41B2583F2D244E199402C85C8 0xD0 0xF CODECOPY SWAP16 CODECOPY JUMPI MOD 0xF8 MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "386:2626:24:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "convert128x128PriceToDecimal(uint256)": "infinite", + "convertDecimalPriceTo128x128(uint256)": "infinite", + "getBase(uint16)": "infinite", + "getExponent(uint24)": "infinite", + "getIdFromPrice(uint256,uint16)": "infinite", + "getPriceFromId(uint24,uint16)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 386, + "end": 3012, + "name": "PUSH #[$]", + "source": 24, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH [$]", + "source": 24, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "B" + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "CODECOPY", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP1", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "MLOAD", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "BYTE", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "73" + }, + { + "begin": 386, + "end": 3012, + "name": "EQ", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH [tag]", + "source": 24, + "value": "1" + }, + { + "begin": 386, + "end": 3012, + "name": "JUMPI", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "4" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "24" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "REVERT", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "tag", + "source": 24, + "value": "1" + }, + { + "begin": 386, + "end": 3012, + "name": "JUMPDEST", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "ADDRESS", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "73" + }, + { + "begin": 386, + "end": 3012, + "name": "DUP2", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE8", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP2", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "RETURN", + "source": 24 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033", + ".code": [ + { + "begin": 386, + "end": 3012, + "name": "PUSHDEPLOYADDRESS", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "ADDRESS", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "EQ", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "80" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "40" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 24, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "DUP1", + "source": 24 + }, + { + "begin": 386, + "end": 3012, + "name": "REVERT", + "source": 24 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Price Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to calculate prices\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/PriceHelper.sol\":\"PriceHelper\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0xe8af4af39a9063fa569aa161f0fb0b81825131c102b8504deebe142f79f918a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b6e1bcd23acaf79754aed4eb8f32ca3f1712696396a6f06511a6422f73da01f\",\"dweb:/ipfs/QmNZjn3byK4aDYMC5xYPKWCjVUoSmUQgeaHx14q9iA412N\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94\",\"dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea\",\"dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to calculate prices", + "version": 1 + } + } + }, + "src/libraries/SovrynLBLibrary.sol": { + "SovrynLBLibrary": { + "abi": [ + { + "inputs": [], + "name": "SovrynLBLibrary__AddressZero", + "type": "error" + }, + { + "inputs": [], + "name": "SovrynLBLibrary__IdenticalAddresses", + "type": "error" + }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "SovrynLBLibrary__InsufficientLiquidity", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Sovryn LB Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/SovrynLBLibrary.sol\":176:2561 library SovrynLBLibrary {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/SovrynLBLibrary.sol\":176:2561 library SovrynLBLibrary {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122060449ce90869288e4a817703f3b9fac268249187909b59aad83b28f14ecd0e8f64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122060449ce90869288e4a817703f3b9fac268249187909b59aad83b28f14ecd0e8f64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x44 SWAP13 0xE9 ADDMOD PUSH10 0x288E4A817703F3B9FAC2 PUSH9 0x249187909B59AAD83B 0x28 CALL 0x4E 0xCD 0xE DUP16 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "176:2385:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122060449ce90869288e4a817703f3b9fac268249187909b59aad83b28f14ecd0e8f64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x44 SWAP13 0xE9 ADDMOD PUSH10 0x288E4A817703F3B9FAC2 PUSH9 0x249187909B59AAD83B 0x28 CALL 0x4E 0xCD 0xE DUP16 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "176:2385:25:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "getAmountIn(uint256,uint256,uint256)": "infinite", + "getAmountOut(uint256,uint256,uint256)": "infinite", + "quote(uint256,uint256,uint256)": "infinite", + "sortTokens(address,address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 176, + "end": 2561, + "name": "PUSH #[$]", + "source": 25, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH [$]", + "source": 25, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "B" + }, + { + "begin": 176, + "end": 2561, + "name": "DUP3", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "DUP3", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "DUP3", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "CODECOPY", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "DUP1", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "MLOAD", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 176, + "end": 2561, + "name": "BYTE", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "73" + }, + { + "begin": 176, + "end": 2561, + "name": "EQ", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH [tag]", + "source": 25, + "value": "1" + }, + { + "begin": 176, + "end": 2561, + "name": "JUMPI", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 176, + "end": 2561, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "4" + }, + { + "begin": 176, + "end": 2561, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "24" + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 176, + "end": 2561, + "name": "REVERT", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "tag", + "source": 25, + "value": "1" + }, + { + "begin": 176, + "end": 2561, + "name": "JUMPDEST", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "ADDRESS", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 176, + "end": 2561, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "73" + }, + { + "begin": 176, + "end": 2561, + "name": "DUP2", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "MSTORE8", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "DUP3", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "DUP2", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "RETURN", + "source": 25 + } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122060449ce90869288e4a817703f3b9fac268249187909b59aad83b28f14ecd0e8f64736f6c63430008140033", + ".code": [ + { + "begin": 176, + "end": 2561, + "name": "PUSHDEPLOYADDRESS", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "ADDRESS", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "EQ", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "80" + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "40" + }, + { + "begin": 176, + "end": 2561, + "name": "MSTORE", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "PUSH", + "source": 25, + "value": "0" + }, + { + "begin": 176, + "end": 2561, + "name": "DUP1", + "source": 25 + }, + { + "begin": 176, + "end": 2561, + "name": "REVERT", + "source": 25 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SovrynLBLibrary__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SovrynLBLibrary__InsufficientLiquidity\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Sovryn LB Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for Sovryn LB V1 related calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/SovrynLBLibrary.sol\":\"SovrynLBLibrary\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/SovrynLBLibrary.sol\":{\"keccak256\":\"0x514625c1f1c443cd266e4649c4477f6e7fb97933abd23bd5730a2702e70d3db0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5cbde0beee3ca3cc8f0a101709cf10b91a5433a385c625a44368bdda228730ea\",\"dweb:/ipfs/QmSwpUSDzaZbP8DDSWeuYUr3c2YKQLBor2kgofdEREmjMZ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for Sovryn LB V1 related calculations", + "version": 1 + } + } + }, + "src/libraries/TokenHelper.sol": { + "TokenHelper": { + "abi": [ + { + "inputs": [], + "name": "TokenHelper__TransferFailed", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Token Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/TokenHelper.sol\":613:2404 library TokenHelper {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/TokenHelper.sol\":613:2404 library TokenHelper {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122049156d2c1fb529629211bc6fc1eedf58ed07da4257b5cf5a567b798d1d2cca7f64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122049156d2c1fb529629211bc6fc1eedf58ed07da4257b5cf5a567b798d1d2cca7f64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 ISZERO PUSH14 0x2C1FB529629211BC6FC1EEDF58ED SMOD 0xDA TIMESTAMP JUMPI 0xB5 0xCF GAS JUMP PUSH28 0x798D1D2CCA7F64736F6C634300081400330000000000000000000000 ", + "sourceMap": "613:1791:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122049156d2c1fb529629211bc6fc1eedf58ed07da4257b5cf5a567b798d1d2cca7f64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 ISZERO PUSH14 0x2C1FB529629211BC6FC1EEDF58ED SMOD 0xDA TIMESTAMP JUMPI 0xB5 0xCF GAS JUMP PUSH28 0x798D1D2CCA7F64736F6C634300081400330000000000000000000000 ", + "sourceMap": "613:1791:26:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_callAndCatch(contract IERC20,bytes memory)": "infinite", + "safeTransfer(contract IERC20,address,uint256)": "infinite", + "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 613, + "end": 2404, + "name": "PUSH #[$]", + "source": 26, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH [$]", + "source": 26, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "B" + }, + { + "begin": 613, + "end": 2404, + "name": "DUP3", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "DUP3", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "DUP3", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "CODECOPY", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "DUP1", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "MLOAD", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 613, + "end": 2404, + "name": "BYTE", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "73" + }, + { + "begin": 613, + "end": 2404, + "name": "EQ", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH [tag]", + "source": 26, + "value": "1" + }, + { + "begin": 613, + "end": 2404, + "name": "JUMPI", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 613, + "end": 2404, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "4" + }, + { + "begin": 613, + "end": 2404, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "24" + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 613, + "end": 2404, + "name": "REVERT", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "tag", + "source": 26, + "value": "1" + }, + { + "begin": 613, + "end": 2404, + "name": "JUMPDEST", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "ADDRESS", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 613, + "end": 2404, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "73" + }, + { + "begin": 613, + "end": 2404, + "name": "DUP2", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "MSTORE8", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "DUP3", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "DUP2", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "RETURN", + "source": 26 + } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122049156d2c1fb529629211bc6fc1eedf58ed07da4257b5cf5a567b798d1d2cca7f64736f6c63430008140033", + ".code": [ + { + "begin": 613, + "end": 2404, + "name": "PUSHDEPLOYADDRESS", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "ADDRESS", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "EQ", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "80" + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "40" + }, + { + "begin": 613, + "end": 2404, + "name": "MSTORE", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "PUSH", + "source": 26, + "value": "0" + }, + { + "begin": 613, + "end": 2404, + "name": "DUP1", + "source": 26 + }, + { + "begin": 613, + "end": 2404, + "name": "REVERT", + "source": 26 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"TokenHelper__TransferFailed\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Token Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using TokenHelper for IERC20;` statement to your contract, which allows you to call the safe operation as `token.safeTransfer(...)`\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/TokenHelper.sol\":\"TokenHelper\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/libraries/TokenHelper.sol\":{\"keccak256\":\"0xe8ae81331a34b92fd7f9d35c5db42155b7a15e030be71461e8fde43b61f94f89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff0d559ce9e5a078b45fc50450031a50aafa28ef9040819ee9389a4ca525646a\",\"dweb:/ipfs/QmXND5xw7qv1thPqTwtLgc6GzTNzo51G8LN1iaqbDnZADZ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using TokenHelper for IERC20;` statement to your contract, which allows you to call the safe operation as `token.safeTransfer(...)`", + "version": 1 + } + } + }, + "src/libraries/math/BitMath.sol": { + "BitMath": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Bit Math Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/BitMath.sol\":162:4022 library BitMath {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/BitMath.sol\":162:4022 library BitMath {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER SWAP3 PUSH29 0x3D456F2F4D2C27A0D8BCBE86CFFD05A2B88AA13C652E0E7B7586FFB636 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "162:3860:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER SWAP3 PUSH29 0x3D456F2F4D2C27A0D8BCBE86CFFD05A2B88AA13C652E0E7B7586FFB636 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "162:3860:27:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "closestBitLeft(uint256,uint8)": "infinite", + "closestBitRight(uint256,uint8)": "infinite", + "leastSignificantBit(uint256)": "infinite", + "mostSignificantBit(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 162, + "end": 4022, + "name": "PUSH #[$]", + "source": 27, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH [$]", + "source": 27, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "B" + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "CODECOPY", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP1", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "MLOAD", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "BYTE", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "73" + }, + { + "begin": 162, + "end": 4022, + "name": "EQ", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH [tag]", + "source": 27, + "value": "1" + }, + { + "begin": 162, + "end": 4022, + "name": "JUMPI", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "4" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "24" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "REVERT", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "tag", + "source": 27, + "value": "1" + }, + { + "begin": 162, + "end": 4022, + "name": "JUMPDEST", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "ADDRESS", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "73" + }, + { + "begin": 162, + "end": 4022, + "name": "DUP2", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE8", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP2", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "RETURN", + "source": 27 + } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033", + ".code": [ + { + "begin": 162, + "end": 4022, + "name": "PUSHDEPLOYADDRESS", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "ADDRESS", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "EQ", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "80" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "40" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 27, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "DUP1", + "source": 27 + }, + { + "begin": 162, + "end": 4022, + "name": "REVERT", + "source": 27 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Bit Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for bit calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for bit calculations", + "version": 1 + } + } + }, + "src/libraries/math/Encoded.sol": { + "Encoded": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Encoded Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/Encoded.sol\":168:7026 library Encoded {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/Encoded.sol\":168:7026 library Encoded {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 PUSH18 0x11195A215AB823A6AA955643626822982FA9 0xA5 0xAC ADD 0x4F 0x2B 0xD5 PUSH4 0xD20989E8 0xDC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "168:6858:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 PUSH18 0x11195A215AB823A6AA955643626822982FA9 0xA5 0xAC ADD 0x4F 0x2B 0xD5 PUSH4 0xD20989E8 0xDC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "168:6858:28:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "decode(bytes32,uint256,uint256)": "infinite", + "decodeBool(bytes32,uint256)": "infinite", + "decodeUint12(bytes32,uint256)": "infinite", + "decodeUint128(bytes32,uint256)": "infinite", + "decodeUint14(bytes32,uint256)": "infinite", + "decodeUint16(bytes32,uint256)": "infinite", + "decodeUint20(bytes32,uint256)": "infinite", + "decodeUint24(bytes32,uint256)": "infinite", + "decodeUint40(bytes32,uint256)": "infinite", + "decodeUint64(bytes32,uint256)": "infinite", + "decodeUint8(bytes32,uint256)": "infinite", + "set(bytes32,uint256,uint256,uint256)": "infinite", + "setBool(bytes32,bool,uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 168, + "end": 7026, + "name": "PUSH #[$]", + "source": 28, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH [$]", + "source": 28, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "B" + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "CODECOPY", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP1", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "MLOAD", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "BYTE", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "73" + }, + { + "begin": 168, + "end": 7026, + "name": "EQ", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH [tag]", + "source": 28, + "value": "1" + }, + { + "begin": 168, + "end": 7026, + "name": "JUMPI", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "4" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "24" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "REVERT", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "tag", + "source": 28, + "value": "1" + }, + { + "begin": 168, + "end": 7026, + "name": "JUMPDEST", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "ADDRESS", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "73" + }, + { + "begin": 168, + "end": 7026, + "name": "DUP2", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE8", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP2", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "RETURN", + "source": 28 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033", + ".code": [ + { + "begin": 168, + "end": 7026, + "name": "PUSHDEPLOYADDRESS", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "ADDRESS", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "EQ", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "80" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "40" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 28, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "DUP1", + "source": 28 + }, + { + "begin": 168, + "end": 7026, + "name": "REVERT", + "source": 28 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Encoded Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for decoding bytes32 sample\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Encoded.sol\":\"Encoded\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for decoding bytes32 sample", + "version": 1 + } + } + }, + "src/libraries/math/LiquidityConfigurations.sol": { + "LiquidityConfigurations": { + "abi": [ + { + "inputs": [], + "name": "LiquidityConfigurations__InvalidConfig", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Liquidity Configurations Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/LiquidityConfigurations.sol\":348:3499 library LiquidityConfigurations {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/LiquidityConfigurations.sol\":348:3499 library LiquidityConfigurations {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220d4db760c2369e3516c624159274cd042575ce496b2ac4f556e5888a0f0842fa764736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d4db760c2369e3516c624159274cd042575ce496b2ac4f556e5888a0f0842fa764736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xDB PUSH23 0xC2369E3516C624159274CD042575CE496B2AC4F556E58 DUP9 LOG0 CREATE DUP5 0x2F 0xA7 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "348:3151:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d4db760c2369e3516c624159274cd042575ce496b2ac4f556e5888a0f0842fa764736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xDB PUSH23 0xC2369E3516C624159274CD042575CE496B2AC4F556E58 DUP9 LOG0 CREATE DUP5 0x2F 0xA7 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "348:3151:29:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "decodeParams(bytes32)": "infinite", + "encodeParams(uint64,uint64,uint24)": "infinite", + "getAmountsAndId(bytes32,bytes32)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 348, + "end": 3499, + "name": "PUSH #[$]", + "source": 29, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH [$]", + "source": 29, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "B" + }, + { + "begin": 348, + "end": 3499, + "name": "DUP3", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "DUP3", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "DUP3", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "CODECOPY", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "DUP1", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "MLOAD", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 348, + "end": 3499, + "name": "BYTE", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "73" + }, + { + "begin": 348, + "end": 3499, + "name": "EQ", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH [tag]", + "source": 29, + "value": "1" + }, + { + "begin": 348, + "end": 3499, + "name": "JUMPI", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 348, + "end": 3499, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "4" + }, + { + "begin": 348, + "end": 3499, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "24" + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 348, + "end": 3499, + "name": "REVERT", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "tag", + "source": 29, + "value": "1" + }, + { + "begin": 348, + "end": 3499, + "name": "JUMPDEST", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "ADDRESS", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 348, + "end": 3499, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "73" + }, + { + "begin": 348, + "end": 3499, + "name": "DUP2", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "MSTORE8", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "DUP3", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "DUP2", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "RETURN", + "source": 29 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220d4db760c2369e3516c624159274cd042575ce496b2ac4f556e5888a0f0842fa764736f6c63430008140033", + ".code": [ + { + "begin": 348, + "end": 3499, + "name": "PUSHDEPLOYADDRESS", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "ADDRESS", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "EQ", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "80" + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "40" + }, + { + "begin": 348, + "end": 3499, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 348, + "end": 3499, + "name": "DUP1", + "source": 29 + }, + { + "begin": 348, + "end": 3499, + "name": "REVERT", + "source": 29 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LiquidityConfigurations__InvalidConfig\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Liquidity Configurations Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to encode and decode the config of a pool and interact with the encoded bytes32.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/LiquidityConfigurations.sol\":\"LiquidityConfigurations\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]},\"src/libraries/math/LiquidityConfigurations.sol\":{\"keccak256\":\"0x2afb2f102951960df3d03c44fabbc203639df1cf964803c1385e27947abf928f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce35503e67c73199e36b374d90fdba1449a42219a87cac83dd1940d90b5c4d7f\",\"dweb:/ipfs/QmaQ5VkFB6K8r8SmSW6EefFJgnhmwsZGaf9MNLo58at9KB\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0x58f0ee5bbb2d92c766419db9bf60685885f2f503cf59a2f9ee21a55cccf7da6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://270cebf1bd2cc7318e1e198d1bb72fdc04c59642f891ad54cb5ba0ac15a457e0\",\"dweb:/ipfs/QmfEkyJ8pxuoYAbjeMrj3uoEYX63mJ5GCPBfdPCoWKcGch\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to encode and decode the config of a pool and interact with the encoded bytes32.", + "version": 1 + } + } + }, + "src/libraries/math/PackedUint128Math.sol": { + "PackedUint128Math": { + "abi": [ + { + "inputs": [], + "name": "PackedUint128Math__AddOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "PackedUint128Math__MultiplierTooLarge", + "type": "error" + }, + { + "inputs": [], + "name": "PackedUint128Math__SubUnderflow", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Packed Uint128 Math Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/PackedUint128Math.sol\":305:8531 library PackedUint128Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/PackedUint128Math.sol\":305:8531 library PackedUint128Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212204528549e6e390b6ae5a1505793f17a56d66f8abbebaae5e811ce4e401aa0771d64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204528549e6e390b6ae5a1505793f17a56d66f8abbebaae5e811ce4e401aa0771d64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0x28 SLOAD SWAP15 PUSH15 0x390B6AE5A1505793F17A56D66F8ABB 0xEB 0xAA 0xE5 0xE8 GT 0xCE 0x4E BLOCKHASH BYTE LOG0 PUSH24 0x1D64736F6C63430008140033000000000000000000000000 ", + "sourceMap": "305:8226:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204528549e6e390b6ae5a1505793f17a56d66f8abbebaae5e811ce4e401aa0771d64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0x28 SLOAD SWAP15 PUSH15 0x390B6AE5A1505793F17A56D66F8ABB 0xEB 0xAA 0xE5 0xE8 GT 0xCE 0x4E BLOCKHASH BYTE LOG0 PUSH24 0x1D64736F6C63430008140033000000000000000000000000 ", + "sourceMap": "305:8226:30:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "add(bytes32,bytes32)": "infinite", + "add(bytes32,uint128,uint128)": "infinite", + "decode(bytes32)": "infinite", + "decode(bytes32,bool)": "infinite", + "decodeX(bytes32)": "infinite", + "decodeY(bytes32)": "infinite", + "encode(uint128,bool)": "infinite", + "encode(uint128,uint128)": "infinite", + "encodeFirst(uint128)": "infinite", + "encodeSecond(uint128)": "infinite", + "gt(bytes32,bytes32)": "infinite", + "lt(bytes32,bytes32)": "infinite", + "scalarMulDivBasisPointRoundDown(bytes32,uint128)": "infinite", + "sub(bytes32,bytes32)": "infinite", + "sub(bytes32,uint128,uint128)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 305, + "end": 8531, + "name": "PUSH #[$]", + "source": 30, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH [$]", + "source": 30, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "B" + }, + { + "begin": 305, + "end": 8531, + "name": "DUP3", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "DUP3", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "DUP3", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "CODECOPY", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "DUP1", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "MLOAD", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 305, + "end": 8531, + "name": "BYTE", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "73" + }, + { + "begin": 305, + "end": 8531, + "name": "EQ", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH [tag]", + "source": 30, + "value": "1" + }, + { + "begin": 305, + "end": 8531, + "name": "JUMPI", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 305, + "end": 8531, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "4" + }, + { + "begin": 305, + "end": 8531, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "24" + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 305, + "end": 8531, + "name": "REVERT", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "tag", + "source": 30, + "value": "1" + }, + { + "begin": 305, + "end": 8531, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "ADDRESS", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 305, + "end": 8531, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "73" + }, + { + "begin": 305, + "end": 8531, + "name": "DUP2", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "MSTORE8", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "DUP3", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "DUP2", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "RETURN", + "source": 30 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212204528549e6e390b6ae5a1505793f17a56d66f8abbebaae5e811ce4e401aa0771d64736f6c63430008140033", + ".code": [ + { + "begin": 305, + "end": 8531, + "name": "PUSHDEPLOYADDRESS", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "ADDRESS", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "EQ", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "80" + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "40" + }, + { + "begin": 305, + "end": 8531, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 305, + "end": 8531, + "name": "DUP1", + "source": 30 + }, + { + "begin": 305, + "end": 8531, + "name": "REVERT", + "source": 30 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PackedUint128Math__AddOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__MultiplierTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedUint128Math__SubUnderflow\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Packed Uint128 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to encode and decode two uint128 into a single bytes32 and interact with the encoded bytes32.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/PackedUint128Math.sol\":\"PackedUint128Math\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/math/PackedUint128Math.sol\":{\"keccak256\":\"0x58f0ee5bbb2d92c766419db9bf60685885f2f503cf59a2f9ee21a55cccf7da6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://270cebf1bd2cc7318e1e198d1bb72fdc04c59642f891ad54cb5ba0ac15a457e0\",\"dweb:/ipfs/QmfEkyJ8pxuoYAbjeMrj3uoEYX63mJ5GCPBfdPCoWKcGch\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to encode and decode two uint128 into a single bytes32 and interact with the encoded bytes32.", + "version": 1 + } + } + }, + "src/libraries/math/SafeCast.sol": { + "SafeCast": { + "abi": [ + { + "inputs": [], + "name": "SafeCast__Exceeds104Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds112Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds120Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds128Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds136Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds144Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds152Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds160Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds168Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds16Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds176Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds184Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds192Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds200Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds208Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds216Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds224Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds232Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds240Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds248Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds24Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds32Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds40Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds48Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds56Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds64Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds72Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds80Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds88Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds8Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds96Bits", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Safe Cast Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/SafeCast.sol\":201:10949 library SafeCast {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/SafeCast.sol\":201:10949 library SafeCast {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH10 0x10F990EC36998A1D4489 0xAA 0x4B SHR CALL 0xAD GAS SAR 0xC3 0xBC 0xB4 LT ADDRESS 0xC1 SWAP2 DUP6 0xB1 GASLIMIT 0xE0 DUP6 DUP3 SWAP4 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "201:10748:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH10 0x10F990EC36998A1D4489 0xAA 0x4B SHR CALL 0xAD GAS SAR 0xC3 0xBC 0xB4 LT ADDRESS 0xC1 SWAP2 DUP6 0xB1 GASLIMIT 0xE0 DUP6 DUP3 SWAP4 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "201:10748:31:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "safe104(uint256)": "infinite", + "safe112(uint256)": "infinite", + "safe120(uint256)": "infinite", + "safe128(uint256)": "infinite", + "safe136(uint256)": "infinite", + "safe144(uint256)": "infinite", + "safe152(uint256)": "infinite", + "safe16(uint256)": "infinite", + "safe160(uint256)": "infinite", + "safe168(uint256)": "infinite", + "safe176(uint256)": "infinite", + "safe184(uint256)": "infinite", + "safe192(uint256)": "infinite", + "safe200(uint256)": "infinite", + "safe208(uint256)": "infinite", + "safe216(uint256)": "infinite", + "safe224(uint256)": "infinite", + "safe232(uint256)": "infinite", + "safe24(uint256)": "infinite", + "safe240(uint256)": "infinite", + "safe248(uint256)": "infinite", + "safe32(uint256)": "infinite", + "safe40(uint256)": "infinite", + "safe48(uint256)": "infinite", + "safe56(uint256)": "infinite", + "safe64(uint256)": "infinite", + "safe72(uint256)": "infinite", + "safe8(uint256)": "infinite", + "safe80(uint256)": "infinite", + "safe88(uint256)": "infinite", + "safe96(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 201, + "end": 10949, + "name": "PUSH #[$]", + "source": 31, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH [$]", + "source": 31, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "B" + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "CODECOPY", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP1", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "MLOAD", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "BYTE", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "73" + }, + { + "begin": 201, + "end": 10949, + "name": "EQ", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH [tag]", + "source": 31, + "value": "1" + }, + { + "begin": 201, + "end": 10949, + "name": "JUMPI", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "4" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "24" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "REVERT", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "tag", + "source": 31, + "value": "1" + }, + { + "begin": 201, + "end": 10949, + "name": "JUMPDEST", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "ADDRESS", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "73" + }, + { + "begin": 201, + "end": 10949, + "name": "DUP2", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE8", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP2", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "RETURN", + "source": 31 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033", + ".code": [ + { + "begin": 201, + "end": 10949, + "name": "PUSHDEPLOYADDRESS", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "ADDRESS", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "EQ", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "80" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "40" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "DUP1", + "source": 31 + }, + { + "begin": 201, + "end": 10949, + "name": "REVERT", + "source": 31 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds104Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds112Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds120Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds136Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds144Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds152Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds160Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds168Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds16Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds176Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds184Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds192Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds200Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds208Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds216Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds224Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds232Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds240Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds248Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds32Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds40Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds48Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds56Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds72Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds80Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds88Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds8Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds96Bits\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Safe Cast Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to safely cast uint256 to different uint types.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to safely cast uint256 to different uint types.", + "version": 1 + } + } + }, + "src/libraries/math/Uint128x128Math.sol": { + "Uint128x128Math": { + "abi": [ + { + "inputs": [], + "name": "Uint128x128Math__LogUnderflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "y", + "type": "int256" + } + ], + "name": "Uint128x128Math__PowUnderflow", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Uint128x128 Math Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/Uint128x128Math.sol\":264:7687 library Uint128x128Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/Uint128x128Math.sol\":264:7687 library Uint128x128Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH5 0x270717C2CD SIGNEXTEND 0x21 PUSH16 0xC9037B34F72ECAA41F5412A3FE4EAE6F POP 0xDE 0x25 PUSH31 0x6C9D64736F6C63430008140033000000000000000000000000000000000000 ", + "sourceMap": "264:7423:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH5 0x270717C2CD SIGNEXTEND 0x21 PUSH16 0xC9037B34F72ECAA41F5412A3FE4EAE6F POP 0xDE 0x25 PUSH31 0x6C9D64736F6C63430008140033000000000000000000000000000000000000 ", + "sourceMap": "264:7423:32:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "log2(uint256)": "infinite", + "pow(uint256,int256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 264, + "end": 7687, + "name": "PUSH #[$]", + "source": 32, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH [$]", + "source": 32, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "B" + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "CODECOPY", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP1", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "MLOAD", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "BYTE", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "73" + }, + { + "begin": 264, + "end": 7687, + "name": "EQ", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH [tag]", + "source": 32, + "value": "1" + }, + { + "begin": 264, + "end": 7687, + "name": "JUMPI", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "4" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "24" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "REVERT", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "tag", + "source": 32, + "value": "1" + }, + { + "begin": 264, + "end": 7687, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "ADDRESS", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "73" + }, + { + "begin": 264, + "end": 7687, + "name": "DUP2", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE8", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP2", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "RETURN", + "source": 32 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033", + ".code": [ + { + "begin": 264, + "end": 7687, + "name": "PUSHDEPLOYADDRESS", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "ADDRESS", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "EQ", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "80" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "40" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "DUP1", + "source": 32 + }, + { + "begin": 264, + "end": 7687, + "name": "REVERT", + "source": 32 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint128x128Math__LogUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Uint128x128 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for power and log calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Uint128x128Math.sol\":\"Uint128x128Math\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94\",\"dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for power and log calculations", + "version": 1 + } + } + }, + "src/libraries/math/Uint256x256Math.sol": { + "Uint256x256Math": { + "abi": [ + { + "inputs": [], + "name": "Uint256x256Math__MulDivOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "Uint256x256Math__MulShiftOverflow", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Uint256x256 Math Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/Uint256x256Math.sol\":221:11396 library Uint256x256Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/Uint256x256Math.sol\":221:11396 library Uint256x256Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 0xA6 CALLER SWAP15 SIGNEXTEND 0xF7 0xBD 0xD5 0xCB SDIV PUSH16 0x242D6556AB978A62D5CB572384541F5D TIMESTAMP PUSH12 0x89C22864736F6C6343000814 STOP CALLER ", + "sourceMap": "221:11175:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 0xA6 CALLER SWAP15 SIGNEXTEND 0xF7 0xBD 0xD5 0xCB SDIV PUSH16 0x242D6556AB978A62D5CB572384541F5D TIMESTAMP PUSH12 0x89C22864736F6C6343000814 STOP CALLER ", + "sourceMap": "221:11175:33:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_getEndOfDivRoundDown(uint256,uint256,uint256,uint256,uint256)": "infinite", + "_getMulProds(uint256,uint256)": "infinite", + "mulDivRoundDown(uint256,uint256,uint256)": "infinite", + "mulDivRoundUp(uint256,uint256,uint256)": "infinite", + "mulShiftRoundDown(uint256,uint256,uint8)": "infinite", + "mulShiftRoundUp(uint256,uint256,uint8)": "infinite", + "shiftDivRoundDown(uint256,uint8,uint256)": "infinite", + "shiftDivRoundUp(uint256,uint8,uint256)": "infinite", + "sqrt(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 221, + "end": 11396, + "name": "PUSH #[$]", + "source": 33, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH [$]", + "source": 33, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "B" + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "CODECOPY", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP1", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "MLOAD", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "BYTE", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "73" + }, + { + "begin": 221, + "end": 11396, + "name": "EQ", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH [tag]", + "source": 33, + "value": "1" + }, + { + "begin": 221, + "end": 11396, + "name": "JUMPI", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "4" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "24" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "REVERT", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "tag", + "source": 33, + "value": "1" + }, + { + "begin": 221, + "end": 11396, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "ADDRESS", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "73" + }, + { + "begin": 221, + "end": 11396, + "name": "DUP2", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE8", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP2", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "RETURN", + "source": 33 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033", + ".code": [ + { + "begin": 221, + "end": 11396, + "name": "PUSHDEPLOYADDRESS", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "ADDRESS", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "EQ", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "80" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "40" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "DUP1", + "source": 33 + }, + { + "begin": 221, + "end": 11396, + "name": "REVERT", + "source": 33 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "src/LBRouter.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBLegacyFactory.sol", + "src/interfaces/ILBLegacyPair.sol", + "src/interfaces/ILBLegacyRouter.sol", + "src/interfaces/ILBLegacyToken.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBRouter.sol", + "src/interfaces/ILBToken.sol", + "src/interfaces/ISovrynLBFactoryV1.sol", + "src/interfaces/ISovrynLBPairV1.sol", + "src/interfaces/IWNATIVE.sol", + "src/libraries/BinHelper.sol", + "src/libraries/Constants.sol", + "src/libraries/FeeHelper.sol", + "src/libraries/Hooks.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/SovrynLBLibrary.sol", + "src/libraries/TokenHelper.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/LiquidityConfigurations.sol", + "src/libraries/math/PackedUint128Math.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Uint256x256 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for full precision calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Uint256x256Math.sol\":\"Uint256x256Math\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea\",\"dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for full precision calculations", + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "5574", + "formattedMessage": "Warning: Contract code size is 28827 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n --> src/LBRouter.sol:33:1:\n |\n33 | contract LBRouter is Initializable, ILBRouter {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Contract code size is 28827 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.", + "severity": "warning", + "sourceLocation": { + "end": 43399, + "file": "src/LBRouter.sol", + "start": 1523 + }, + "type": "Warning" + } + ], + "sources": { + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "exportedSymbols": { + "Context": [ + 509 + ], + "Ownable": [ + 147 + ] + }, + "id": 148, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:0" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "file": "../utils/Context.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 148, + "sourceUnit": 510, + "src": "128:45:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 509, + "src": "136:7:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 5, + "name": "Context", + "nameLocations": [ + "692:7:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 509, + "src": "692:7:0" + }, + "id": 6, + "nodeType": "InheritanceSpecifier", + "src": "692:7:0" + } + ], + "canonicalName": "Ownable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 4, + "nodeType": "StructuredDocumentation", + "src": "175:487:0", + "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." + }, + "fullyImplemented": true, + "id": 147, + "linearizedBaseContracts": [ + 147, + 509 + ], + "name": "Ownable", + "nameLocation": "681:7:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "722:6:0", + "nodeType": "VariableDeclaration", + "scope": 147, + "src": "706:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "documentation": { + "id": 9, + "nodeType": "StructuredDocumentation", + "src": "735:85:0", + "text": " @dev The caller account is not authorized to perform an operation." + }, + "errorSelector": "118cdaa7", + "id": 13, + "name": "OwnableUnauthorizedAccount", + "nameLocation": "831:26:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "account", + "nameLocation": "866:7:0", + "nodeType": "VariableDeclaration", + "scope": 13, + "src": "858:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "858:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "857:17:0" + }, + "src": "825:50:0" + }, + { + "documentation": { + "id": 14, + "nodeType": "StructuredDocumentation", + "src": "881:82:0", + "text": " @dev The owner is not a valid owner account. (eg. `address(0)`)" + }, + "errorSelector": "1e4fbdf7", + "id": 18, + "name": "OwnableInvalidOwner", + "nameLocation": "974:19:0", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1002:5:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "994:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "994:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "993:15:0" + }, + "src": "968:41:0" + }, + { + "anonymous": false, + "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "id": 24, + "name": "OwnershipTransferred", + "nameLocation": "1021:20:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "1058:13:0", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "1042:29:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1042:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "1089:8:0", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "1073:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 21, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1073:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1041:57:0" + }, + "src": "1015:84:0" + }, + { + "body": { + "id": 49, + "nodeType": "Block", + "src": "1259:153:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 30, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1273:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1297:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1289:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 31, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1289:7:0", + "typeDescriptions": {} + } + }, + "id": 34, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1289:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1273:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 44, + "nodeType": "IfStatement", + "src": "1269:95:0", + "trueBody": { + "id": 43, + "nodeType": "Block", + "src": "1301:63:0", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1350:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1342:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1342:7:0", + "typeDescriptions": {} + } + }, + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1342:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 36, + "name": "OwnableInvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1322:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1322:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 42, + "nodeType": "RevertStatement", + "src": "1315:38:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 46, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "1392:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 45, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "1373:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 47, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1373:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 48, + "nodeType": "ExpressionStatement", + "src": "1373:32:0" + } + ] + }, + "documentation": { + "id": 25, + "nodeType": "StructuredDocumentation", + "src": "1105:115:0", + "text": " @dev Initializes the contract setting the address provided by the deployer as the initial owner." + }, + "id": 50, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 27, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "1245:12:0", + "nodeType": "VariableDeclaration", + "scope": 50, + "src": "1237:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1237:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1236:22:0" + }, + "returnParameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [], + "src": "1259:0:0" + }, + "scope": 147, + "src": "1225:187:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 57, + "nodeType": "Block", + "src": "1521:41:0", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 53, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "1531:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1531:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 55, + "nodeType": "ExpressionStatement", + "src": "1531:13:0" + }, + { + "id": 56, + "nodeType": "PlaceholderStatement", + "src": "1554:1:0" + } + ] + }, + "documentation": { + "id": 51, + "nodeType": "StructuredDocumentation", + "src": "1418:77:0", + "text": " @dev Throws if called by any account other than the owner." + }, + "id": 58, + "name": "onlyOwner", + "nameLocation": "1509:9:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 52, + "nodeType": "ParameterList", + "parameters": [], + "src": "1518:2:0" + }, + "src": "1500:62:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 66, + "nodeType": "Block", + "src": "1693:30:0", + "statements": [ + { + "expression": { + "id": 64, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1710:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 63, + "id": 65, + "nodeType": "Return", + "src": "1703:13:0" + } + ] + }, + "documentation": { + "id": 59, + "nodeType": "StructuredDocumentation", + "src": "1568:65:0", + "text": " @dev Returns the address of the current owner." + }, + "functionSelector": "8da5cb5b", + "id": 67, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nameLocation": "1647:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [], + "src": "1652:2:0" + }, + "returnParameters": { + "id": 63, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 62, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 67, + "src": "1684:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 61, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1684:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1683:9:0" + }, + "scope": 147, + "src": "1638:85:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 83, + "nodeType": "Block", + "src": "1841:117:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 71, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "1855:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1855:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 73, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "1866:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1866:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1855:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 82, + "nodeType": "IfStatement", + "src": "1851:101:0", + "trueBody": { + "id": 81, + "nodeType": "Block", + "src": "1880:72:0", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 77, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "1928:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1928:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 76, + "name": "OwnableUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "1901:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1901:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 80, + "nodeType": "RevertStatement", + "src": "1894:47:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 68, + "nodeType": "StructuredDocumentation", + "src": "1729:62:0", + "text": " @dev Throws if the sender is not the owner." + }, + "id": 84, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOwner", + "nameLocation": "1805:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 69, + "nodeType": "ParameterList", + "parameters": [], + "src": "1816:2:0" + }, + "returnParameters": { + "id": 70, + "nodeType": "ParameterList", + "parameters": [], + "src": "1841:0:0" + }, + "scope": 147, + "src": "1796:162:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 97, + "nodeType": "Block", + "src": "2347:47:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2384:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2376:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 91, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2376:7:0", + "typeDescriptions": {} + } + }, + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2376:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 90, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "2357:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2357:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "2357:30:0" + } + ] + }, + "documentation": { + "id": 85, + "nodeType": "StructuredDocumentation", + "src": "1964:324:0", + "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner." + }, + "functionSelector": "715018a6", + "id": 98, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 88, + "kind": "modifierInvocation", + "modifierName": { + "id": 87, + "name": "onlyOwner", + "nameLocations": [ + "2337:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "2337:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "2337:9:0" + } + ], + "name": "renounceOwnership", + "nameLocation": "2302:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 86, + "nodeType": "ParameterList", + "parameters": [], + "src": "2319:2:0" + }, + "returnParameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [], + "src": "2347:0:0" + }, + "scope": 147, + "src": "2293:101:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 125, + "nodeType": "Block", + "src": "2613:145:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 106, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2627:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2647:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2639:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2639:7:0", + "typeDescriptions": {} + } + }, + "id": 110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2639:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2627:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 120, + "nodeType": "IfStatement", + "src": "2623:91:0", + "trueBody": { + "id": 119, + "nodeType": "Block", + "src": "2651:63:0", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2700:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2692:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2692:7:0", + "typeDescriptions": {} + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2692:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 112, + "name": "OwnableInvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "2672:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2672:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 118, + "nodeType": "RevertStatement", + "src": "2665:38:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 122, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2742:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 121, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "2723:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2723:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 124, + "nodeType": "ExpressionStatement", + "src": "2723:28:0" + } + ] + }, + "documentation": { + "id": 99, + "nodeType": "StructuredDocumentation", + "src": "2400:138:0", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 126, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 104, + "kind": "modifierInvocation", + "modifierName": { + "id": 103, + "name": "onlyOwner", + "nameLocations": [ + "2603:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "2603:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "2603:9:0" + } + ], + "name": "transferOwnership", + "nameLocation": "2552:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "2578:8:0", + "nodeType": "VariableDeclaration", + "scope": 126, + "src": "2570:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2570:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2569:18:0" + }, + "returnParameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [], + "src": "2613:0:0" + }, + "scope": 147, + "src": "2543:215:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 145, + "nodeType": "Block", + "src": "2975:124:0", + "statements": [ + { + "assignments": [ + 133 + ], + "declarations": [ + { + "constant": false, + "id": 133, + "mutability": "mutable", + "name": "oldOwner", + "nameLocation": "2993:8:0", + "nodeType": "VariableDeclaration", + "scope": 145, + "src": "2985:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 132, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2985:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 135, + "initialValue": { + "id": 134, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "3004:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2985:25:0" + }, + { + "expression": { + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 136, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "3020:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 137, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3029:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3020:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "3020:17:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 141, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 133, + "src": "3073:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 142, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3083:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 140, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "3052:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3052:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 144, + "nodeType": "EmitStatement", + "src": "3047:45:0" + } + ] + }, + "documentation": { + "id": 127, + "nodeType": "StructuredDocumentation", + "src": "2764:143:0", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction." + }, + "id": 146, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nameLocation": "2921:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 129, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "2948:8:0", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "2940:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2940:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2939:18:0" + }, + "returnParameters": { + "id": 131, + "nodeType": "ParameterList", + "parameters": [], + "src": "2975:0:0" + }, + "scope": 147, + "src": "2912:187:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 148, + "src": "663:2438:0", + "usedErrors": [ + 13, + 18 + ], + "usedEvents": [ + 24 + ] + } + ], + "src": "102:3000:0" + }, + "id": 0 + }, + "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "exportedSymbols": { + "Initializable": [ + 401 + ] + }, + "id": 402, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 149, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:1" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Initializable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 150, + "nodeType": "StructuredDocumentation", + "src": "139:2209:1", + "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ====" + }, + "fullyImplemented": true, + "id": 401, + "linearizedBaseContracts": [ + 401 + ], + "name": "Initializable", + "nameLocation": "2367:13:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Initializable.InitializableStorage", + "documentation": { + "id": 151, + "nodeType": "StructuredDocumentation", + "src": "2387:293:1", + "text": " @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable" + }, + "id": 158, + "members": [ + { + "constant": false, + "id": 154, + "mutability": "mutable", + "name": "_initialized", + "nameLocation": "2820:12:1", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "2813:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 153, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2813:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 157, + "mutability": "mutable", + "name": "_initializing", + "nameLocation": "2955:13:1", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "2950:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 156, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2950:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "InitializableStorage", + "nameLocation": "2692:20:1", + "nodeType": "StructDefinition", + "scope": 401, + "src": "2685:290:1", + "visibility": "public" + }, + { + "constant": true, + "id": 161, + "mutability": "constant", + "name": "INITIALIZABLE_STORAGE", + "nameLocation": "3123:21:1", + "nodeType": "VariableDeclaration", + "scope": 401, + "src": "3098:115:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 159, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3098:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030", + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3147:66:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1", + "typeString": "int_const 1089...(70 digits omitted)...9600" + }, + "value": "0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 162, + "nodeType": "StructuredDocumentation", + "src": "3220:60:1", + "text": " @dev The contract is already initialized." + }, + "errorSelector": "f92ee8a9", + "id": 164, + "name": "InvalidInitialization", + "nameLocation": "3291:21:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [], + "src": "3312:2:1" + }, + "src": "3285:30:1" + }, + { + "documentation": { + "id": 165, + "nodeType": "StructuredDocumentation", + "src": "3321:57:1", + "text": " @dev The contract is not initializing." + }, + "errorSelector": "d7e6bcf8", + "id": 167, + "name": "NotInitializing", + "nameLocation": "3389:15:1", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [], + "src": "3404:2:1" + }, + "src": "3383:24:1" + }, + { + "anonymous": false, + "documentation": { + "id": 168, + "nodeType": "StructuredDocumentation", + "src": "3413:90:1", + "text": " @dev Triggered when the contract has been initialized or reinitialized." + }, + "eventSelector": "c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2", + "id": 172, + "name": "Initialized", + "nameLocation": "3514:11:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 170, + "indexed": false, + "mutability": "mutable", + "name": "version", + "nameLocation": "3533:7:1", + "nodeType": "VariableDeclaration", + "scope": 172, + "src": "3526:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 169, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3526:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "3525:16:1" + }, + "src": "3508:34:1" + }, + { + "body": { + "id": 254, + "nodeType": "Block", + "src": "4092:1081:1", + "statements": [ + { + "assignments": [ + 177 + ], + "declarations": [ + { + "constant": false, + "id": 177, + "mutability": "mutable", + "name": "$", + "nameLocation": "4187:1:1", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "4158:30:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 176, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 175, + "name": "InitializableStorage", + "nameLocations": [ + "4158:20:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 158, + "src": "4158:20:1" + }, + "referencedDeclaration": 158, + "src": "4158:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 180, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 178, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "4191:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$158_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4191:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4158:59:1" + }, + { + "assignments": [ + 182 + ], + "declarations": [ + { + "constant": false, + "id": 182, + "mutability": "mutable", + "name": "isTopLevelCall", + "nameLocation": "4284:14:1", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "4279:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 181, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4279:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 186, + "initialValue": { + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4301:16:1", + "subExpression": { + "expression": { + "id": 183, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4302:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 184, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4304:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "4302:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4279:38:1" + }, + { + "assignments": [ + 188 + ], + "declarations": [ + { + "constant": false, + "id": 188, + "mutability": "mutable", + "name": "initialized", + "nameLocation": "4334:11:1", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "4327:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 187, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4327:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 191, + "initialValue": { + "expression": { + "id": 189, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4348:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 190, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4350:12:1", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 154, + "src": "4348:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4327:35:1" + }, + { + "assignments": [ + 193 + ], + "declarations": [ + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "initialSetup", + "nameLocation": "4711:12:1", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "4706:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 192, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4706:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 199, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 194, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4726:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4741:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4726:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 197, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "4746:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4726:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4706:54:1" + }, + { + "assignments": [ + 201 + ], + "declarations": [ + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "construction", + "nameLocation": "4775:12:1", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "4770:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 200, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4770:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 214, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 202, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4790:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4805:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4790:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 207, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "4818:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$401", + "typeString": "contract Initializable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Initializable_$401", + "typeString": "contract Initializable" + } + ], + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4810:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4810:7:1", + "typeDescriptions": {} + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4810:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4824:4:1", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4810:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4829:6:1", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4810:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4839:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4810:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4790:50:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4770:70:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4855:13:1", + "subExpression": { + "id": 215, + "name": "initialSetup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "4856:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4872:13:1", + "subExpression": { + "id": 217, + "name": "construction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 201, + "src": "4873:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4855:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 224, + "nodeType": "IfStatement", + "src": "4851:91:1", + "trueBody": { + "id": 223, + "nodeType": "Block", + "src": "4887:55:1", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 220, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "4908:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4908:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 222, + "nodeType": "RevertStatement", + "src": "4901:30:1" + } + ] + } + }, + { + "expression": { + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 225, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4951:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 227, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4953:12:1", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 154, + "src": "4951:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4968:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4951:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "4951:18:1" + }, + { + "condition": { + "id": 231, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "4983:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 239, + "nodeType": "IfStatement", + "src": "4979:67:1", + "trueBody": { + "id": 238, + "nodeType": "Block", + "src": "4999:47:1", + "statements": [ + { + "expression": { + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 232, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "5013:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 234, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5015:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "5013:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5031:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5013:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 237, + "nodeType": "ExpressionStatement", + "src": "5013:22:1" + } + ] + } + }, + { + "id": 240, + "nodeType": "PlaceholderStatement", + "src": "5055:1:1" + }, + { + "condition": { + "id": 241, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "5070:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 253, + "nodeType": "IfStatement", + "src": "5066:101:1", + "trueBody": { + "id": 252, + "nodeType": "Block", + "src": "5086:81:1", + "statements": [ + { + "expression": { + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 242, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "5100:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5102:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "5100:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5118:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5100:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 247, + "nodeType": "ExpressionStatement", + "src": "5100:23:1" + }, + { + "eventCall": { + "arguments": [ + { + "hexValue": "31", + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5154:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 248, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "5142:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5142:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 251, + "nodeType": "EmitStatement", + "src": "5137:19:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 173, + "nodeType": "StructuredDocumentation", + "src": "3548:516:1", + "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event." + }, + "id": 255, + "name": "initializer", + "nameLocation": "4078:11:1", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 174, + "nodeType": "ParameterList", + "parameters": [], + "src": "4089:2:1" + }, + "src": "4069:1104:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 301, + "nodeType": "Block", + "src": "6291:392:1", + "statements": [ + { + "assignments": [ + 262 + ], + "declarations": [ + { + "constant": false, + "id": 262, + "mutability": "mutable", + "name": "$", + "nameLocation": "6386:1:1", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "6357:30:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 261, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 260, + "name": "InitializableStorage", + "nameLocations": [ + "6357:20:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 158, + "src": "6357:20:1" + }, + "referencedDeclaration": 158, + "src": "6357:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 265, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 263, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "6390:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$158_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6390:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6357:59:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 266, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "6431:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 267, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6433:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "6431:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 268, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "6450:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 269, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6452:12:1", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 154, + "src": "6450:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 270, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 258, + "src": "6468:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6450:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6431:44:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 277, + "nodeType": "IfStatement", + "src": "6427:105:1", + "trueBody": { + "id": 276, + "nodeType": "Block", + "src": "6477:55:1", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 273, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "6498:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 275, + "nodeType": "RevertStatement", + "src": "6491:30:1" + } + ] + } + }, + { + "expression": { + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 278, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "6541:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 280, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6543:12:1", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 154, + "src": "6541:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 281, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 258, + "src": "6558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6541:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 283, + "nodeType": "ExpressionStatement", + "src": "6541:24:1" + }, + { + "expression": { + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 284, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "6575:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6577:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "6575:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6593:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6575:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 289, + "nodeType": "ExpressionStatement", + "src": "6575:22:1" + }, + { + "id": 290, + "nodeType": "PlaceholderStatement", + "src": "6607:1:1" + }, + { + "expression": { + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 291, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "6618:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 293, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6620:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "6618:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6636:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "6618:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 296, + "nodeType": "ExpressionStatement", + "src": "6618:23:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 298, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 258, + "src": "6668:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 297, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "6656:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6656:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 300, + "nodeType": "EmitStatement", + "src": "6651:25:1" + } + ] + }, + "documentation": { + "id": 256, + "nodeType": "StructuredDocumentation", + "src": "5179:1068:1", + "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event." + }, + "id": 302, + "name": "reinitializer", + "nameLocation": "6261:13:1", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 258, + "mutability": "mutable", + "name": "version", + "nameLocation": "6282:7:1", + "nodeType": "VariableDeclaration", + "scope": 302, + "src": "6275:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 257, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6275:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "6274:16:1" + }, + "src": "6252:431:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 309, + "nodeType": "Block", + "src": "6921:48:1", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 305, + "name": "_checkInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 323, + "src": "6931:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6931:20:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 307, + "nodeType": "ExpressionStatement", + "src": "6931:20:1" + }, + { + "id": 308, + "nodeType": "PlaceholderStatement", + "src": "6961:1:1" + } + ] + }, + "documentation": { + "id": 303, + "nodeType": "StructuredDocumentation", + "src": "6689:199:1", + "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly." + }, + "id": 310, + "name": "onlyInitializing", + "nameLocation": "6902:16:1", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 304, + "nodeType": "ParameterList", + "parameters": [], + "src": "6918:2:1" + }, + "src": "6893:76:1", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 322, + "nodeType": "Block", + "src": "7136:89:1", + "statements": [ + { + "condition": { + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7150:18:1", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 314, + "name": "_isInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "7151:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7151:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 321, + "nodeType": "IfStatement", + "src": "7146:73:1", + "trueBody": { + "id": 320, + "nodeType": "Block", + "src": "7170:49:1", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 317, + "name": "NotInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "7191:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7191:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 319, + "nodeType": "RevertStatement", + "src": "7184:24:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 311, + "nodeType": "StructuredDocumentation", + "src": "6975:104:1", + "text": " @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}." + }, + "id": 323, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkInitializing", + "nameLocation": "7093:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 312, + "nodeType": "ParameterList", + "parameters": [], + "src": "7111:2:1" + }, + "returnParameters": { + "id": 313, + "nodeType": "ParameterList", + "parameters": [], + "src": "7136:0:1" + }, + "scope": 401, + "src": "7084:141:1", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 368, + "nodeType": "Block", + "src": "7760:373:1", + "statements": [ + { + "assignments": [ + 329 + ], + "declarations": [ + { + "constant": false, + "id": 329, + "mutability": "mutable", + "name": "$", + "nameLocation": "7855:1:1", + "nodeType": "VariableDeclaration", + "scope": 368, + "src": "7826:30:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 328, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 327, + "name": "InitializableStorage", + "nameLocations": [ + "7826:20:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 158, + "src": "7826:20:1" + }, + "referencedDeclaration": 158, + "src": "7826:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 332, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 330, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "7859:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$158_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7859:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7826:59:1" + }, + { + "condition": { + "expression": { + "id": 333, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 329, + "src": "7900:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 334, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7902:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "7900:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 339, + "nodeType": "IfStatement", + "src": "7896:76:1", + "trueBody": { + "id": 338, + "nodeType": "Block", + "src": "7917:55:1", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 335, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "7938:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7938:23:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 337, + "nodeType": "RevertStatement", + "src": "7931:30:1" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 340, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 329, + "src": "7985:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7987:12:1", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 154, + "src": "7985:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8008:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 343, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8008:6:1", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 342, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8003:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8003:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8016:3:1", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8003:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "7985:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 367, + "nodeType": "IfStatement", + "src": "7981:146:1", + "trueBody": { + "id": 366, + "nodeType": "Block", + "src": "8021:106:1", + "statements": [ + { + "expression": { + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 348, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 329, + "src": "8035:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 350, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8037:12:1", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 154, + "src": "8035:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8057:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 352, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8057:6:1", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 351, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8052:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8065:3:1", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8052:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8035:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 357, + "nodeType": "ExpressionStatement", + "src": "8035:33:1" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8104:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 360, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8104:6:1", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 359, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8099:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8099:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8112:3:1", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8099:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 358, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "8087:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8087:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 365, + "nodeType": "EmitStatement", + "src": "8082:34:1" + } + ] + } + } + ] + }, + "documentation": { + "id": 324, + "nodeType": "StructuredDocumentation", + "src": "7231:475:1", + "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed." + }, + "id": 369, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_disableInitializers", + "nameLocation": "7720:20:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [], + "src": "7740:2:1" + }, + "returnParameters": { + "id": 326, + "nodeType": "ParameterList", + "parameters": [], + "src": "7760:0:1" + }, + "scope": 401, + "src": "7711:422:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 379, + "nodeType": "Block", + "src": "8308:63:1", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 375, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "8325:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$158_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8325:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8352:12:1", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 154, + "src": "8325:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 374, + "id": 378, + "nodeType": "Return", + "src": "8318:46:1" + } + ] + }, + "documentation": { + "id": 370, + "nodeType": "StructuredDocumentation", + "src": "8139:99:1", + "text": " @dev Returns the highest version that has been initialized. See {reinitializer}." + }, + "id": 380, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializedVersion", + "nameLocation": "8252:22:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [], + "src": "8274:2:1" + }, + "returnParameters": { + "id": 374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 373, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "8300:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 372, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8300:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "8299:8:1" + }, + "scope": 401, + "src": "8243:128:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 390, + "nodeType": "Block", + "src": "8543:64:1", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 386, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "8560:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$158_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8560:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 388, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8587:13:1", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 157, + "src": "8560:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 385, + "id": 389, + "nodeType": "Return", + "src": "8553:47:1" + } + ] + }, + "documentation": { + "id": 381, + "nodeType": "StructuredDocumentation", + "src": "8377:105:1", + "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}." + }, + "id": 391, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isInitializing", + "nameLocation": "8496:15:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 382, + "nodeType": "ParameterList", + "parameters": [], + "src": "8511:2:1" + }, + "returnParameters": { + "id": 385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 384, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 391, + "src": "8537:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 383, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8537:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8536:6:1" + }, + "scope": 401, + "src": "8487:120:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 399, + "nodeType": "Block", + "src": "8827:80:1", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "8846:55:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8860:31:1", + "value": { + "name": "INITIALIZABLE_STORAGE", + "nodeType": "YulIdentifier", + "src": "8870:21:1" + }, + "variableNames": [ + { + "name": "$.slot", + "nodeType": "YulIdentifier", + "src": "8860:6:1" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 396, + "isOffset": false, + "isSlot": true, + "src": "8860:6:1", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 161, + "isOffset": false, + "isSlot": false, + "src": "8870:21:1", + "valueSize": 1 + } + ], + "id": 398, + "nodeType": "InlineAssembly", + "src": "8837:64:1" + } + ] + }, + "documentation": { + "id": 392, + "nodeType": "StructuredDocumentation", + "src": "8613:67:1", + "text": " @dev Returns a pointer to the storage namespace." + }, + "id": 400, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializableStorage", + "nameLocation": "8746:24:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 393, + "nodeType": "ParameterList", + "parameters": [], + "src": "8770:2:1" + }, + "returnParameters": { + "id": 397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 396, + "mutability": "mutable", + "name": "$", + "nameLocation": "8824:1:1", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "8795:30:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 395, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 394, + "name": "InitializableStorage", + "nameLocations": [ + "8795:20:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 158, + "src": "8795:20:1" + }, + "referencedDeclaration": 158, + "src": "8795:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$158_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "8794:32:1" + }, + "scope": 401, + "src": "8737:170:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 402, + "src": "2349:6560:1", + "usedErrors": [ + 164, + 167 + ], + "usedEvents": [ + 172 + ] + } + ], + "src": "113:8797:1" + }, + "id": 1 + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ] + }, + "id": 480, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 403, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:2" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 404, + "nodeType": "StructuredDocumentation", + "src": "132:71:2", + "text": " @dev Interface of the ERC-20 standard as defined in the ERC." + }, + "fullyImplemented": false, + "id": 479, + "linearizedBaseContracts": [ + 479 + ], + "name": "IERC20", + "nameLocation": "214:6:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 405, + "nodeType": "StructuredDocumentation", + "src": "227:158:2", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 413, + "name": "Transfer", + "nameLocation": "396:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 407, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "421:4:2", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "405:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "405:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 409, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "443:2:2", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "427:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 408, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "427:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 411, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "455:5:2", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "447:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "447:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "404:57:2" + }, + "src": "390:72:2" + }, + { + "anonymous": false, + "documentation": { + "id": 414, + "nodeType": "StructuredDocumentation", + "src": "468:148:2", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 422, + "name": "Approval", + "nameLocation": "627:8:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "652:5:2", + "nodeType": "VariableDeclaration", + "scope": 422, + "src": "636:21:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 415, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "636:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 418, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "675:7:2", + "nodeType": "VariableDeclaration", + "scope": 422, + "src": "659:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 417, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "659:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 420, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "692:5:2", + "nodeType": "VariableDeclaration", + "scope": 422, + "src": "684:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "684:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "635:63:2" + }, + "src": "621:78:2" + }, + { + "documentation": { + "id": 423, + "nodeType": "StructuredDocumentation", + "src": "705:65:2", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 428, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "784:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 424, + "nodeType": "ParameterList", + "parameters": [], + "src": "795:2:2" + }, + "returnParameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 426, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "821:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 425, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "821:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "820:9:2" + }, + "scope": 479, + "src": "775:55:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 429, + "nodeType": "StructuredDocumentation", + "src": "836:71:2", + "text": " @dev Returns the value of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 436, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "921:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 431, + "mutability": "mutable", + "name": "account", + "nameLocation": "939:7:2", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "931:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 430, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "931:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "930:17:2" + }, + "returnParameters": { + "id": 435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 434, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 436, + "src": "971:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "970:9:2" + }, + "scope": 479, + "src": "912:68:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 437, + "nodeType": "StructuredDocumentation", + "src": "986:213:2", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 446, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1213:8:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 439, + "mutability": "mutable", + "name": "to", + "nameLocation": "1230:2:2", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "1222:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 438, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1222:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 441, + "mutability": "mutable", + "name": "value", + "nameLocation": "1242:5:2", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "1234:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1234:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1221:27:2" + }, + "returnParameters": { + "id": 445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 444, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "1267:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 443, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1267:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1266:6:2" + }, + "scope": 479, + "src": "1204:69:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 447, + "nodeType": "StructuredDocumentation", + "src": "1279:264:2", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 456, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1557:9:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 449, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1575:5:2", + "nodeType": "VariableDeclaration", + "scope": 456, + "src": "1567:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1567:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 451, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1590:7:2", + "nodeType": "VariableDeclaration", + "scope": 456, + "src": "1582:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1582:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1566:32:2" + }, + "returnParameters": { + "id": 455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 454, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 456, + "src": "1622:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1622:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1621:9:2" + }, + "scope": 479, + "src": "1548:83:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 457, + "nodeType": "StructuredDocumentation", + "src": "1637:667:2", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 466, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2318:7:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 459, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2334:7:2", + "nodeType": "VariableDeclaration", + "scope": 466, + "src": "2326:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2326:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 461, + "mutability": "mutable", + "name": "value", + "nameLocation": "2351:5:2", + "nodeType": "VariableDeclaration", + "scope": 466, + "src": "2343:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2343:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2325:32:2" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 466, + "src": "2376:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 463, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2376:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2375:6:2" + }, + "scope": 479, + "src": "2309:73:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 467, + "nodeType": "StructuredDocumentation", + "src": "2388:297:2", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 478, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2699:12:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 469, + "mutability": "mutable", + "name": "from", + "nameLocation": "2720:4:2", + "nodeType": "VariableDeclaration", + "scope": 478, + "src": "2712:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2712:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 471, + "mutability": "mutable", + "name": "to", + "nameLocation": "2734:2:2", + "nodeType": "VariableDeclaration", + "scope": 478, + "src": "2726:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2726:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 473, + "mutability": "mutable", + "name": "value", + "nameLocation": "2746:5:2", + "nodeType": "VariableDeclaration", + "scope": 478, + "src": "2738:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2738:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2711:41:2" + }, + "returnParameters": { + "id": 477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 476, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 478, + "src": "2771:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 475, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2771:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2770:6:2" + }, + "scope": 479, + "src": "2690:87:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 480, + "src": "204:2575:2", + "usedErrors": [], + "usedEvents": [ + 413, + 422 + ] + } + ], + "src": "106:2674:2" + }, + "id": 2 + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 509 + ] + }, + "id": 510, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 481, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:3" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 482, + "nodeType": "StructuredDocumentation", + "src": "127:496:3", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 509, + "linearizedBaseContracts": [ + 509 + ], + "name": "Context", + "nameLocation": "642:7:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 490, + "nodeType": "Block", + "src": "718:34:3", + "statements": [ + { + "expression": { + "expression": { + "id": 487, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "735:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:3", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 486, + "id": 489, + "nodeType": "Return", + "src": "728:17:3" + } + ] + }, + "id": 491, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 483, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:3" + }, + "returnParameters": { + "id": 486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 485, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "709:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:3" + }, + "scope": 509, + "src": "656:96:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 499, + "nodeType": "Block", + "src": "825:32:3", + "statements": [ + { + "expression": { + "expression": { + "id": 496, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "842:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:3", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 495, + "id": 498, + "nodeType": "Return", + "src": "835:15:3" + } + ] + }, + "id": 500, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:3" + }, + "returnParameters": { + "id": 495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 494, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 500, + "src": "809:14:3", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 493, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:3" + }, + "scope": 509, + "src": "758:99:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 507, + "nodeType": "Block", + "src": "935:25:3", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 504, + "id": 506, + "nodeType": "Return", + "src": "945:8:3" + } + ] + }, + "id": 508, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 501, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:3" + }, + "returnParameters": { + "id": 504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 503, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 508, + "src": "926:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:3" + }, + "scope": 509, + "src": "863:97:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 510, + "src": "624:338:3", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:3" + }, + "id": 3 + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 521 + ] + }, + "id": 522, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 511, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:4" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC165", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 512, + "nodeType": "StructuredDocumentation", + "src": "141:280:4", + "text": " @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 521, + "linearizedBaseContracts": [ + 521 + ], + "name": "IERC165", + "nameLocation": "432:7:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 513, + "nodeType": "StructuredDocumentation", + "src": "446:340:4", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 520, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "800:17:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "825:11:4", + "nodeType": "VariableDeclaration", + "scope": 520, + "src": "818:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 514, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "818:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "817:20:4" + }, + "returnParameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 520, + "src": "861:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 517, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "861:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "860:6:4" + }, + "scope": 521, + "src": "791:76:4", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 522, + "src": "422:447:4", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "115:755:4" + }, + "id": 4 + }, + "src/LBRouter.sol": { + "ast": { + "absolutePath": "src/LBRouter.sol", + "exportedSymbols": { + "BinHelper": [ + 8134 + ], + "Constants": [ + 8172 + ], + "Encoded": [ + 10863 + ], + "FeeHelper": [ + 8365 + ], + "IERC20": [ + 479 + ], + "ILBFactory": [ + 4236 + ], + "ILBLegacyFactory": [ + 4800 + ], + "ILBLegacyPair": [ + 5216 + ], + "ILBLegacyRouter": [ + 5625 + ], + "ILBPair": [ + 6187 + ], + "ILBRouter": [ + 6719 + ], + "ILBToken": [ + 6842 + ], + "ISovrynLBFactoryV1": [ + 6916 + ], + "ISovrynLBPairV1": [ + 7159 + ], + "IWNATIVE": [ + 7175 + ], + "Initializable": [ + 401 + ], + "LBRouter": [ + 3762 + ], + "LiquidityConfigurations": [ + 11033 + ], + "Ownable": [ + 147 + ], + "PackedUint128Math": [ + 11387 + ], + "SovrynLBLibrary": [ + 10476 + ], + "TokenHelper": [ + 10562 + ], + "Uint256x256Math": [ + 12771 + ] + }, + "id": 3763, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 523, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "33:24:5" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "file": "@openzeppelin/contracts/access/Ownable.sol", + "id": 525, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 148, + "src": "59:67:5", + "symbolAliases": [ + { + "foreign": { + "id": 524, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "67:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/BinHelper.sol", + "file": "./libraries/BinHelper.sol", + "id": 527, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 8135, + "src": "128:52:5", + "symbolAliases": [ + { + "foreign": { + "id": 526, + "name": "BinHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8134, + "src": "136:9:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "./libraries/Constants.sol", + "id": 529, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 8173, + "src": "181:52:5", + "symbolAliases": [ + { + "foreign": { + "id": 528, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "189:9:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Encoded.sol", + "file": "./libraries/math/Encoded.sol", + "id": 531, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 10864, + "src": "234:53:5", + "symbolAliases": [ + { + "foreign": { + "id": 530, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "242:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/FeeHelper.sol", + "file": "./libraries/FeeHelper.sol", + "id": 533, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 8366, + "src": "288:52:5", + "symbolAliases": [ + { + "foreign": { + "id": 532, + "name": "FeeHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8365, + "src": "296:9:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/SovrynLBLibrary.sol", + "file": "./libraries/SovrynLBLibrary.sol", + "id": 535, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 10477, + "src": "341:64:5", + "symbolAliases": [ + { + "foreign": { + "id": 534, + "name": "SovrynLBLibrary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10476, + "src": "349:15:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/LiquidityConfigurations.sol", + "file": "./libraries/math/LiquidityConfigurations.sol", + "id": 537, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 11034, + "src": "406:85:5", + "symbolAliases": [ + { + "foreign": { + "id": 536, + "name": "LiquidityConfigurations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11033, + "src": "414:23:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/PackedUint128Math.sol", + "file": "./libraries/math/PackedUint128Math.sol", + "id": 539, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 11388, + "src": "492:73:5", + "symbolAliases": [ + { + "foreign": { + "id": 538, + "name": "PackedUint128Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11387, + "src": "500:17:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/TokenHelper.sol", + "file": "./libraries/TokenHelper.sol", + "id": 542, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 10563, + "src": "566:64:5", + "symbolAliases": [ + { + "foreign": { + "id": 540, + "name": "TokenHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10562, + "src": "574:11:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 541, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "587:6:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Uint256x256Math.sol", + "file": "./libraries/math/Uint256x256Math.sol", + "id": 544, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 12772, + "src": "631:69:5", + "symbolAliases": [ + { + "foreign": { + "id": 543, + "name": "Uint256x256Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12771, + "src": "639:15:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ISovrynLBPairV1.sol", + "file": "./interfaces/ISovrynLBPairV1.sol", + "id": 546, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 7160, + "src": "702:65:5", + "symbolAliases": [ + { + "foreign": { + "id": 545, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "710:15:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBPair.sol", + "file": "./interfaces/ILBPair.sol", + "id": 548, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 6188, + "src": "768:49:5", + "symbolAliases": [ + { + "foreign": { + "id": 547, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "776:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyPair.sol", + "file": "./interfaces/ILBLegacyPair.sol", + "id": 550, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 5217, + "src": "818:61:5", + "symbolAliases": [ + { + "foreign": { + "id": 549, + "name": "ILBLegacyPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5216, + "src": "826:13:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBToken.sol", + "file": "./interfaces/ILBToken.sol", + "id": 552, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 6843, + "src": "880:51:5", + "symbolAliases": [ + { + "foreign": { + "id": 551, + "name": "ILBToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6842, + "src": "888:8:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBRouter.sol", + "file": "./interfaces/ILBRouter.sol", + "id": 554, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 6720, + "src": "932:53:5", + "symbolAliases": [ + { + "foreign": { + "id": 553, + "name": "ILBRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6719, + "src": "940:9:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyRouter.sol", + "file": "./interfaces/ILBLegacyRouter.sol", + "id": 556, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 5626, + "src": "986:65:5", + "symbolAliases": [ + { + "foreign": { + "id": 555, + "name": "ILBLegacyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "994:15:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ISovrynLBFactoryV1.sol", + "file": "./interfaces/ISovrynLBFactoryV1.sol", + "id": 558, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 6917, + "src": "1052:71:5", + "symbolAliases": [ + { + "foreign": { + "id": 557, + "name": "ISovrynLBFactoryV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6916, + "src": "1060:18:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyFactory.sol", + "file": "./interfaces/ILBLegacyFactory.sol", + "id": 560, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 4801, + "src": "1124:67:5", + "symbolAliases": [ + { + "foreign": { + "id": 559, + "name": "ILBLegacyFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4800, + "src": "1132:16:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFactory.sol", + "file": "./interfaces/ILBFactory.sol", + "id": 562, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 4237, + "src": "1192:55:5", + "symbolAliases": [ + { + "foreign": { + "id": 561, + "name": "ILBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4236, + "src": "1200:10:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/IWNATIVE.sol", + "file": "./interfaces/IWNATIVE.sol", + "id": 564, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 7176, + "src": "1248:51:5", + "symbolAliases": [ + { + "foreign": { + "id": 563, + "name": "IWNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "1256:8:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol", + "id": 566, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3763, + "sourceUnit": 402, + "src": "1300:84:5", + "symbolAliases": [ + { + "foreign": { + "id": 565, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "1308:13:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 568, + "name": "Initializable", + "nameLocations": [ + "1544:13:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 401, + "src": "1544:13:5" + }, + "id": 569, + "nodeType": "InheritanceSpecifier", + "src": "1544:13:5" + }, + { + "baseName": { + "id": 570, + "name": "ILBRouter", + "nameLocations": [ + "1559:9:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6719, + "src": "1559:9:5" + }, + "id": 571, + "nodeType": "InheritanceSpecifier", + "src": "1559:9:5" + } + ], + "canonicalName": "LBRouter", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 567, + "nodeType": "StructuredDocumentation", + "src": "1386:136:5", + "text": " @title Liquidity Book Router\n @notice Main contract to interact with to swap and manage liquidity on Sovryn LB V2 exchange." + }, + "fullyImplemented": true, + "id": 3762, + "linearizedBaseContracts": [ + 3762, + 6719, + 401 + ], + "name": "LBRouter", + "nameLocation": "1532:8:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 575, + "libraryName": { + "id": 572, + "name": "TokenHelper", + "nameLocations": [ + "1581:11:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10562, + "src": "1581:11:5" + }, + "nodeType": "UsingForDirective", + "src": "1575:29:5", + "typeName": { + "id": 574, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 573, + "name": "IERC20", + "nameLocations": [ + "1597:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "1597:6:5" + }, + "referencedDeclaration": 479, + "src": "1597:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + }, + { + "global": false, + "id": 578, + "libraryName": { + "id": 576, + "name": "SovrynLBLibrary", + "nameLocations": [ + "1615:15:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10476, + "src": "1615:15:5" + }, + "nodeType": "UsingForDirective", + "src": "1609:34:5", + "typeName": { + "id": 577, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1635:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 581, + "libraryName": { + "id": 579, + "name": "PackedUint128Math", + "nameLocations": [ + "1654:17:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11387, + "src": "1654:17:5" + }, + "nodeType": "UsingForDirective", + "src": "1648:36:5", + "typeName": { + "id": 580, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1676:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "constant": false, + "documentation": { + "id": 582, + "nodeType": "StructuredDocumentation", + "src": "1690:61:5", + "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable" + }, + "id": 585, + "mutability": "immutable", + "name": "_factory2", + "nameLocation": "1785:9:5", + "nodeType": "VariableDeclaration", + "scope": 3762, + "src": "1756:38:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + }, + "typeName": { + "id": 584, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 583, + "name": "ILBFactory", + "nameLocations": [ + "1756:10:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4236, + "src": "1756:10:5" + }, + "referencedDeclaration": 4236, + "src": "1756:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "visibility": "private" + }, + { + "constant": false, + "documentation": { + "id": 586, + "nodeType": "StructuredDocumentation", + "src": "1800:61:5", + "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable" + }, + "id": 589, + "mutability": "immutable", + "name": "_factoryV1", + "nameLocation": "1903:10:5", + "nodeType": "VariableDeclaration", + "scope": 3762, + "src": "1866:47:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + }, + "typeName": { + "id": 588, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 587, + "name": "ISovrynLBFactoryV1", + "nameLocations": [ + "1866:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6916, + "src": "1866:18:5" + }, + "referencedDeclaration": 6916, + "src": "1866:18:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "visibility": "private" + }, + { + "constant": false, + "documentation": { + "id": 590, + "nodeType": "StructuredDocumentation", + "src": "1919:61:5", + "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable" + }, + "id": 593, + "mutability": "immutable", + "name": "_wnative", + "nameLocation": "2012:8:5", + "nodeType": "VariableDeclaration", + "scope": 3762, + "src": "1985:35:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + }, + "typeName": { + "id": 592, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 591, + "name": "IWNATIVE", + "nameLocations": [ + "1985:8:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7175, + "src": "1985:8:5" + }, + "referencedDeclaration": 7175, + "src": "1985:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 611, + "nodeType": "Block", + "src": "2055:117:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 595, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2069:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2073:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2069:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 600, + "name": "_factory2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "2099:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + ], + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2091:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2091:7:5", + "typeDescriptions": {} + } + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2091:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 597, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 147, + "src": "2083:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Ownable_$147_$", + "typeString": "type(contract Ownable)" + } + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2083:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$147", + "typeString": "contract Ownable" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2111:5:5", + "memberName": "owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 67, + "src": "2083:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2083:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2069:49:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 609, + "nodeType": "IfStatement", + "src": "2065:89:5", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 606, + "name": "LBRouter__NotFactoryOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6230, + "src": "2127:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2127:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 608, + "nodeType": "RevertStatement", + "src": "2120:34:5" + } + }, + { + "id": 610, + "nodeType": "PlaceholderStatement", + "src": "2164:1:5" + } + ] + }, + "id": 612, + "name": "onlyFactoryOwner", + "nameLocation": "2036:16:5", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [], + "src": "2052:2:5" + }, + "src": "2027:145:5", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 628, + "nodeType": "Block", + "src": "2212:120:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 616, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "2226:5:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2232:9:5", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "2226:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 618, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "2244:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2226:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 626, + "nodeType": "IfStatement", + "src": "2222:92:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 621, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "2288:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 622, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "2298:5:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2304:9:5", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "2298:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 620, + "name": "LBRouter__DeadlineExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "2261:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2261:53:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 625, + "nodeType": "RevertStatement", + "src": "2254:60:5" + } + }, + { + "id": 627, + "nodeType": "PlaceholderStatement", + "src": "2324:1:5" + } + ] + }, + "id": 629, + "name": "ensure", + "nameLocation": "2187:6:5", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 614, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2202:8:5", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "2194:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2194:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2193:18:5" + }, + "src": "2178:154:5", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 662, + "nodeType": "Block", + "src": "2384:244:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 634, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "2411:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 635, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2416:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "2411:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2429:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2411:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2439:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2411:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 639, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "2444:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 640, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2449:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "2444:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2458:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2444:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 642, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "2468:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2473:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "2468:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2486:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2468:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2444:48:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2411:81:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 647, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "2512:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2517:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "2512:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2530:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2512:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2539:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2512:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 652, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "2544:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2549:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "2544:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2559:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2544:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2512:53:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2411:154:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 660, + "nodeType": "IfStatement", + "src": "2394:216:5", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 657, + "name": "LBRouter__LengthsMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6244, + "src": "2583:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2583:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 659, + "nodeType": "RevertStatement", + "src": "2576:34:5" + } + }, + { + "id": 661, + "nodeType": "PlaceholderStatement", + "src": "2620:1:5" + } + ] + }, + "id": 663, + "name": "verifyPathValidity", + "nameLocation": "2347:18:5", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 632, + "mutability": "mutable", + "name": "path", + "nameLocation": "2378:4:5", + "nodeType": "VariableDeclaration", + "scope": 663, + "src": "2366:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 631, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 630, + "name": "Path", + "nameLocations": [ + "2366:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "2366:4:5" + }, + "referencedDeclaration": 6372, + "src": "2366:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + } + ], + "src": "2365:18:5" + }, + "src": "2338:290:5", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 691, + "nodeType": "Block", + "src": "2962:130:5", + "statements": [ + { + "expression": { + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 676, + "name": "_factory2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "2972:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 677, + "name": "factory2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "2984:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "src": "2972:20:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "id": 679, + "nodeType": "ExpressionStatement", + "src": "2972:20:5" + }, + { + "expression": { + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 680, + "name": "_factoryV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "3002:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 681, + "name": "factoryV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "3015:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "src": "3002:22:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "id": 683, + "nodeType": "ExpressionStatement", + "src": "3002:22:5" + }, + { + "expression": { + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 684, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "3034:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 685, + "name": "wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 673, + "src": "3045:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "src": "3034:18:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "id": 687, + "nodeType": "ExpressionStatement", + "src": "3034:18:5" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 688, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "3063:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3063:22:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 690, + "nodeType": "ExpressionStatement", + "src": "3063:22:5" + } + ] + }, + "documentation": { + "id": 664, + "nodeType": "StructuredDocumentation", + "src": "2798:48:5", + "text": "@custom:oz-upgrades-unsafe-allow constructor" + }, + "id": 692, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 667, + "mutability": "mutable", + "name": "factory2", + "nameLocation": "2883:8:5", + "nodeType": "VariableDeclaration", + "scope": 692, + "src": "2872:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + }, + "typeName": { + "id": 666, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 665, + "name": "ILBFactory", + "nameLocations": [ + "2872:10:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4236, + "src": "2872:10:5" + }, + "referencedDeclaration": 4236, + "src": "2872:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 670, + "mutability": "mutable", + "name": "factoryV1", + "nameLocation": "2920:9:5", + "nodeType": "VariableDeclaration", + "scope": 692, + "src": "2901:28:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + }, + "typeName": { + "id": 669, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 668, + "name": "ISovrynLBFactoryV1", + "nameLocations": [ + "2901:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6916, + "src": "2901:18:5" + }, + "referencedDeclaration": 6916, + "src": "2901:18:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 673, + "mutability": "mutable", + "name": "wnative", + "nameLocation": "2948:7:5", + "nodeType": "VariableDeclaration", + "scope": 692, + "src": "2939:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + }, + "typeName": { + "id": 672, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 671, + "name": "IWNATIVE", + "nameLocations": [ + "2939:8:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7175, + "src": "2939:8:5" + }, + "referencedDeclaration": 7175, + "src": "2939:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "visibility": "internal" + } + ], + "src": "2862:99:5" + }, + "returnParameters": { + "id": 675, + "nodeType": "ParameterList", + "parameters": [], + "src": "2962:0:5" + }, + "scope": 3762, + "src": "2851:241:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 697, + "nodeType": "Block", + "src": "3141:2:5", + "statements": [] + }, + "functionSelector": "8129fc1c", + "id": 698, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 695, + "kind": "modifierInvocation", + "modifierName": { + "id": 694, + "name": "initializer", + "nameLocations": [ + "3120:11:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 255, + "src": "3120:11:5" + }, + "nodeType": "ModifierInvocation", + "src": "3120:11:5" + } + ], + "name": "initialize", + "nameLocation": "3107:10:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 693, + "nodeType": "ParameterList", + "parameters": [], + "src": "3117:2:5" + }, + "returnParameters": { + "id": 696, + "nodeType": "ParameterList", + "parameters": [], + "src": "3141:0:5" + }, + "scope": 3762, + "src": "3098:45:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 713, + "nodeType": "Block", + "src": "3271:91:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 702, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "3285:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3289:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3285:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 706, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "3307:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3299:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3299:7:5", + "typeDescriptions": {} + } + }, + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3299:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3285:31:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 712, + "nodeType": "IfStatement", + "src": "3281:74:5", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 709, + "name": "LBRouter__SenderIsNotWNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6208, + "src": "3325:28:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3325:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 711, + "nodeType": "RevertStatement", + "src": "3318:37:5" + } + } + ] + }, + "documentation": { + "id": 699, + "nodeType": "StructuredDocumentation", + "src": "3149:90:5", + "text": " @dev Receive function that only accept NATIVE from the WNATIVE contract" + }, + "id": 714, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 700, + "nodeType": "ParameterList", + "parameters": [], + "src": "3251:2:5" + }, + "returnParameters": { + "id": 701, + "nodeType": "ParameterList", + "parameters": [], + "src": "3271:0:5" + }, + "scope": 3762, + "src": "3244:118:5", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6378 + ], + "body": { + "id": 724, + "nodeType": "Block", + "src": "3570:33:5", + "statements": [ + { + "expression": { + "id": 722, + "name": "_factory2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "3587:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "functionReturnParameters": 721, + "id": 723, + "nodeType": "Return", + "src": "3580:16:5" + } + ] + }, + "documentation": { + "id": 715, + "nodeType": "StructuredDocumentation", + "src": "3368:121:5", + "text": " View function to get the factory V2.1 address\n @return lbFactory The address of the factory V2.1" + }, + "functionSelector": "88cc58e4", + "id": 725, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFactory", + "nameLocation": "3503:10:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 717, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3530:8:5" + }, + "parameters": { + "id": 716, + "nodeType": "ParameterList", + "parameters": [], + "src": "3513:2:5" + }, + "returnParameters": { + "id": 721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 720, + "mutability": "mutable", + "name": "lbFactory", + "nameLocation": "3559:9:5", + "nodeType": "VariableDeclaration", + "scope": 725, + "src": "3548:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + }, + "typeName": { + "id": 719, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 718, + "name": "ILBFactory", + "nameLocations": [ + "3548:10:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4236, + "src": "3548:10:5" + }, + "referencedDeclaration": 4236, + "src": "3548:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "visibility": "internal" + } + ], + "src": "3547:22:5" + }, + "scope": 3762, + "src": "3494:109:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6384 + ], + "body": { + "id": 735, + "nodeType": "Block", + "src": "3817:34:5", + "statements": [ + { + "expression": { + "id": 733, + "name": "_factoryV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "3834:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "functionReturnParameters": 732, + "id": 734, + "nodeType": "Return", + "src": "3827:17:5" + } + ] + }, + "documentation": { + "id": 726, + "nodeType": "StructuredDocumentation", + "src": "3609:117:5", + "text": " View function to get the factory V1 address\n @return factoryV1 The address of the factory V1" + }, + "functionSelector": "bb558a9f", + "id": 736, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getV1Factory", + "nameLocation": "3740:12:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 728, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3769:8:5" + }, + "parameters": { + "id": 727, + "nodeType": "ParameterList", + "parameters": [], + "src": "3752:2:5" + }, + "returnParameters": { + "id": 732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 731, + "mutability": "mutable", + "name": "factoryV1", + "nameLocation": "3806:9:5", + "nodeType": "VariableDeclaration", + "scope": 736, + "src": "3787:28:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + }, + "typeName": { + "id": 730, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 729, + "name": "ISovrynLBFactoryV1", + "nameLocations": [ + "3787:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6916, + "src": "3787:18:5" + }, + "referencedDeclaration": 6916, + "src": "3787:18:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "visibility": "internal" + } + ], + "src": "3786:30:5" + }, + "scope": 3762, + "src": "3731:120:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6390 + ], + "body": { + "id": 746, + "nodeType": "Block", + "src": "4039:32:5", + "statements": [ + { + "expression": { + "id": 744, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4056:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "functionReturnParameters": 743, + "id": 745, + "nodeType": "Return", + "src": "4049:15:5" + } + ] + }, + "documentation": { + "id": 737, + "nodeType": "StructuredDocumentation", + "src": "3857:105:5", + "text": " View function to get the WNATIVE address\n @return wnative The address of WNATIVE" + }, + "functionSelector": "6c9c0078", + "id": 747, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWNATIVE", + "nameLocation": "3976:10:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 739, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4003:8:5" + }, + "parameters": { + "id": 738, + "nodeType": "ParameterList", + "parameters": [], + "src": "3986:2:5" + }, + "returnParameters": { + "id": 743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 742, + "mutability": "mutable", + "name": "wnative", + "nameLocation": "4030:7:5", + "nodeType": "VariableDeclaration", + "scope": 747, + "src": "4021:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + }, + "typeName": { + "id": 741, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 740, + "name": "IWNATIVE", + "nameLocations": [ + "4021:8:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7175, + "src": "4021:8:5" + }, + "referencedDeclaration": 7175, + "src": "4021:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "visibility": "internal" + } + ], + "src": "4020:18:5" + }, + "scope": 3762, + "src": "3967:104:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6400 + ], + "body": { + "id": 764, + "nodeType": "Block", + "src": "4506:50:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 761, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "4543:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 759, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "4523:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4528:14:5", + "memberName": "getIdFromPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 6071, + "src": "4523:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint24_$", + "typeString": "function (uint256) view external returns (uint24)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4523:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "functionReturnParameters": 758, + "id": 763, + "nodeType": "Return", + "src": "4516:33:5" + } + ] + }, + "documentation": { + "id": 748, + "nodeType": "StructuredDocumentation", + "src": "4077:331:5", + "text": " @notice Returns the approximate id corresponding to the inputted price.\n Warning, the returned id may be inaccurate close to the start price of a bin\n @param pair The address of the LBPair\n @param price The price of y per x (multiplied by 1e36)\n @return The id corresponding to this price" + }, + "functionSelector": "f96fe925", + "id": 765, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIdFromPrice", + "nameLocation": "4422:14:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 755, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4480:8:5" + }, + "parameters": { + "id": 754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 751, + "mutability": "mutable", + "name": "pair", + "nameLocation": "4445:4:5", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "4437:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 750, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 749, + "name": "ILBPair", + "nameLocations": [ + "4437:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "4437:7:5" + }, + "referencedDeclaration": 6187, + "src": "4437:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 753, + "mutability": "mutable", + "name": "price", + "nameLocation": "4459:5:5", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "4451:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4451:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4436:29:5" + }, + "returnParameters": { + "id": 758, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 757, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 765, + "src": "4498:6:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 756, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4498:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4497:8:5" + }, + "scope": 3762, + "src": "4413:143:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6410 + ], + "body": { + "id": 782, + "nodeType": "Block", + "src": "4853:47:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 779, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 771, + "src": "4890:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "id": 777, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "4870:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4875:14:5", + "memberName": "getPriceFromId", + "nodeType": "MemberAccess", + "referencedDeclaration": 6064, + "src": "4870:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint24_$returns$_t_uint256_$", + "typeString": "function (uint24) view external returns (uint256)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4870:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 776, + "id": 781, + "nodeType": "Return", + "src": "4863:30:5" + } + ] + }, + "documentation": { + "id": 766, + "nodeType": "StructuredDocumentation", + "src": "4562:196:5", + "text": " @notice Returns the price corresponding to the inputted id\n @param pair The address of the LBPair\n @param id The id\n @return The price corresponding to this id" + }, + "functionSelector": "d0e380f2", + "id": 783, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPriceFromId", + "nameLocation": "4772:14:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 773, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4826:8:5" + }, + "parameters": { + "id": 772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 769, + "mutability": "mutable", + "name": "pair", + "nameLocation": "4795:4:5", + "nodeType": "VariableDeclaration", + "scope": 783, + "src": "4787:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 768, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 767, + "name": "ILBPair", + "nameLocations": [ + "4787:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "4787:7:5" + }, + "referencedDeclaration": 6187, + "src": "4787:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 771, + "mutability": "mutable", + "name": "id", + "nameLocation": "4808:2:5", + "nodeType": "VariableDeclaration", + "scope": 783, + "src": "4801:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 770, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4801:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4786:25:5" + }, + "returnParameters": { + "id": 776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 775, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 783, + "src": "4844:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4844:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4843:9:5" + }, + "scope": 3762, + "src": "4763:137:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6426 + ], + "body": { + "id": 812, + "nodeType": "Block", + "src": "5566:85:5", + "statements": [ + { + "expression": { + "id": 810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 801, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 795, + "src": "5577:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 802, + "name": "amountOutLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 797, + "src": "5587:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 803, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 799, + "src": "5602:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 804, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "5576:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128,uint128)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 807, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "5624:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 808, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "5635:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 805, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "5609:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5614:9:5", + "memberName": "getSwapIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 6084, + "src": "5609:14:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint128_$_t_bool_$returns$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "function (uint128,bool) view external returns (uint128,uint128,uint128)" + } + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5609:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128,uint128)" + } + }, + "src": "5576:68:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 811, + "nodeType": "ExpressionStatement", + "src": "5576:68:5" + } + ] + }, + "documentation": { + "id": 784, + "nodeType": "StructuredDocumentation", + "src": "4906:468:5", + "text": " @notice Simulate a swap in\n @param pair The address of the LBPair\n @param amountOut The amount of token to receive\n @param swapForY Whether you swap X for Y (true), or Y for X (false)\n @return amountIn The amount of token to send in order to receive amountOut token\n @return amountOutLeft The amount of token Out that can't be returned due to a lack of liquidity\n @return fee The amount of fees paid in token sent" + }, + "functionSelector": "964f987c", + "id": 813, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSwapIn", + "nameLocation": "5388:9:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 793, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5482:8:5" + }, + "parameters": { + "id": 792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 787, + "mutability": "mutable", + "name": "pair", + "nameLocation": "5406:4:5", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "5398:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 786, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 785, + "name": "ILBPair", + "nameLocations": [ + "5398:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "5398:7:5" + }, + "referencedDeclaration": 6187, + "src": "5398:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 789, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "5420:9:5", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "5412:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 788, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5412:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 791, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "5436:8:5", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "5431:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 790, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5431:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5397:48:5" + }, + "returnParameters": { + "id": 800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 795, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "5516:8:5", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "5508:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 794, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5508:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "mutability": "mutable", + "name": "amountOutLeft", + "nameLocation": "5534:13:5", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "5526:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 796, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5526:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 799, + "mutability": "mutable", + "name": "fee", + "nameLocation": "5557:3:5", + "nodeType": "VariableDeclaration", + "scope": 813, + "src": "5549:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 798, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5549:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "5507:54:5" + }, + "scope": 3762, + "src": "5379:272:5", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 6442 + ], + "body": { + "id": 842, + "nodeType": "Block", + "src": "6304:85:5", + "statements": [ + { + "expression": { + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 831, + "name": "amountInLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 825, + "src": "6315:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 832, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "6329:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 833, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "6340:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 834, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "6314:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128,uint128)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 837, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 819, + "src": "6363:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 838, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 821, + "src": "6373:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 835, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 817, + "src": "6347:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6352:10:5", + "memberName": "getSwapOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 6097, + "src": "6347:15:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint128_$_t_bool_$returns$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "function (uint128,bool) view external returns (uint128,uint128,uint128)" + } + }, + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6347:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128,uint128)" + } + }, + "src": "6314:68:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 841, + "nodeType": "ExpressionStatement", + "src": "6314:68:5" + } + ] + }, + "documentation": { + "id": 814, + "nodeType": "StructuredDocumentation", + "src": "5657:453:5", + "text": " @notice Simulate a swap out\n @param pair The address of the LBPair\n @param amountIn The amount of token sent\n @param swapForY Whether you swap X for Y (true), or Y for X (false)\n @return amountInLeft The amount of token In that can't be swapped due to a lack of liquidity\n @return amountOut The amount of token received if amountIn tokenX are sent\n @return fee The amount of fees paid in token sent" + }, + "functionSelector": "a0d376cf", + "id": 843, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSwapOut", + "nameLocation": "6124:10:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 823, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6220:8:5" + }, + "parameters": { + "id": 822, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 817, + "mutability": "mutable", + "name": "pair", + "nameLocation": "6143:4:5", + "nodeType": "VariableDeclaration", + "scope": 843, + "src": "6135:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 816, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 815, + "name": "ILBPair", + "nameLocations": [ + "6135:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "6135:7:5" + }, + "referencedDeclaration": 6187, + "src": "6135:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 819, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "6157:8:5", + "nodeType": "VariableDeclaration", + "scope": 843, + "src": "6149:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 818, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6149:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 821, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "6172:8:5", + "nodeType": "VariableDeclaration", + "scope": 843, + "src": "6167:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 820, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6167:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6134:47:5" + }, + "returnParameters": { + "id": 830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 825, + "mutability": "mutable", + "name": "amountInLeft", + "nameLocation": "6254:12:5", + "nodeType": "VariableDeclaration", + "scope": 843, + "src": "6246:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 824, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6246:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 827, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "6276:9:5", + "nodeType": "VariableDeclaration", + "scope": 843, + "src": "6268:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 826, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6268:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 829, + "mutability": "mutable", + "name": "fee", + "nameLocation": "6295:3:5", + "nodeType": "VariableDeclaration", + "scope": 843, + "src": "6287:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 828, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6287:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "6245:54:5" + }, + "scope": 3762, + "src": "6115:274:5", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6458 + ], + "body": { + "id": 871, + "nodeType": "Block", + "src": "6950:81:5", + "statements": [ + { + "expression": { + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 861, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 859, + "src": "6960:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 864, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "6990:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 865, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 850, + "src": "6998:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 866, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "7006:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "id": 867, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "7016:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 862, + "name": "_factory2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "6967:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6977:12:5", + "memberName": "createLBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 4110, + "src": "6967:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint24_$_t_uint16_$returns$_t_contract$_ILBPair_$6187_$", + "typeString": "function (contract IERC20,contract IERC20,uint24,uint16) external returns (contract ILBPair)" + } + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6967:57:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "src": "6960:64:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 870, + "nodeType": "ExpressionStatement", + "src": "6960:64:5" + } + ] + }, + "documentation": { + "id": 844, + "nodeType": "StructuredDocumentation", + "src": "6395:396:5", + "text": " @notice Create a liquidity bin LBPair for tokenX and tokenY using the factory\n @param tokenX The address of the first token\n @param tokenY The address of the second token\n @param activeId The active id of the pair\n @param binStep The bin step in basis point, used to calculate log(1 + binStep)\n @return pair The address of the newly created LBPair" + }, + "functionSelector": "659ac74b", + "id": 872, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createLBPair", + "nameLocation": "6805:12:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 856, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6906:8:5" + }, + "parameters": { + "id": 855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 847, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "6825:6:5", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "6818:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 846, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 845, + "name": "IERC20", + "nameLocations": [ + "6818:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6818:6:5" + }, + "referencedDeclaration": 479, + "src": "6818:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 850, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "6840:6:5", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "6833:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 849, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 848, + "name": "IERC20", + "nameLocations": [ + "6833:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6833:6:5" + }, + "referencedDeclaration": 479, + "src": "6833:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 852, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "6855:8:5", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "6848:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 851, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6848:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 854, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "6872:7:5", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "6865:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 853, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6865:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "6817:63:5" + }, + "returnParameters": { + "id": 860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 859, + "mutability": "mutable", + "name": "pair", + "nameLocation": "6940:4:5", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "6932:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 858, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 857, + "name": "ILBPair", + "nameLocations": [ + "6932:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "6932:7:5" + }, + "referencedDeclaration": 6187, + "src": "6932:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "6931:14:5" + }, + "scope": 3762, + "src": "6796:235:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6478 + ], + "body": { + "id": 957, + "nodeType": "Block", + "src": "8017:677:5", + "statements": [ + { + "assignments": [ + 896 + ], + "declarations": [ + { + "constant": false, + "id": 896, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "8035:6:5", + "nodeType": "VariableDeclaration", + "scope": 957, + "src": "8027:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 895, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 894, + "name": "ILBPair", + "nameLocations": [ + "8027:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "8027:7:5" + }, + "referencedDeclaration": 6187, + "src": "8027:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "id": 907, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 899, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8104:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8124:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "8104:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 901, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8132:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8152:6:5", + "memberName": "tokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6329, + "src": "8132:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 903, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8160:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8180:7:5", + "memberName": "binStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 6331, + "src": "8160:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 898, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "8065:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint256_$returns$_t_address_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (address)" + } + }, + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8065:136:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 897, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "8044:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8044:167:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8027:184:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 908, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8225:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8245:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "8225:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 910, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 896, + "src": "8255:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8262:9:5", + "memberName": "getTokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 5952, + "src": "8255:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8255:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "8225:48:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 917, + "nodeType": "IfStatement", + "src": "8221:88:5", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 914, + "name": "LBRouter__WrongTokenOrder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6246, + "src": "8282:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8282:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 916, + "nodeType": "RevertStatement", + "src": "8275:34:5" + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 919, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8338:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8358:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "8338:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 921, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "8366:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8370:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8366:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 925, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 896, + "src": "8386:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8378:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 923, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8378:7:5", + "typeDescriptions": {} + } + }, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8378:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 927, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8395:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8415:7:5", + "memberName": "amountX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6333, + "src": "8395:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 918, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "8320:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8320:103:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 930, + "nodeType": "ExpressionStatement", + "src": "8320:103:5" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 932, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8451:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8471:6:5", + "memberName": "tokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6329, + "src": "8451:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 934, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "8479:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8483:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "8479:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 938, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 896, + "src": "8499:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8491:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8491:7:5", + "typeDescriptions": {} + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8491:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 940, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8508:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8528:7:5", + "memberName": "amountY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6335, + "src": "8508:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 931, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "8433:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8433:103:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 943, + "nodeType": "ExpressionStatement", + "src": "8433:103:5" + }, + { + "expression": { + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 944, + "name": "amountXAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "8548:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 945, + "name": "amountYAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 882, + "src": "8562:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 946, + "name": "amountXLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "8576:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 947, + "name": "amountYLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "8589:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 948, + "name": "depositIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "8602:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 949, + "name": "liquidityMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "8614:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 950, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "8547:83:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 952, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8659:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + { + "id": 953, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 896, + "src": "8680:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + }, + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 951, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "8645:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LiquidityParameters_$6359_calldata_ptr_$_t_contract$_ILBPair_$6187_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (struct ILBRouter.LiquidityParameters calldata,contract ILBPair) returns (uint256,uint256,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8645:42:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "src": "8547:140:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 956, + "nodeType": "ExpressionStatement", + "src": "8547:140:5" + } + ] + }, + "documentation": { + "id": 873, + "nodeType": "StructuredDocumentation", + "src": "7037:617:5", + "text": " @notice Add liquidity while performing safety checks\n @dev This function is compliant with fee on transfer tokens\n @param liquidityParameters The liquidity parameters\n @return amountXAdded The amount of token X added\n @return amountYAdded The amount of token Y added\n @return amountXLeft The amount of token X left (sent back to liquidityParameters.refundTo)\n @return amountYLeft The amount of token Y left (sent back to liquidityParameters.refundTo)\n @return depositIds The ids of the deposits\n @return liquidityMinted The amount of liquidity minted" + }, + "functionSelector": "a3c7271a", + "id": 958, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "addLiquidity", + "nameLocation": "7668:12:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 878, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7756:8:5" + }, + "parameters": { + "id": 877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 876, + "mutability": "mutable", + "name": "liquidityParameters", + "nameLocation": "7710:19:5", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "7681:48:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + }, + "typeName": { + "id": 875, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 874, + "name": "LiquidityParameters", + "nameLocations": [ + "7681:19:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6359, + "src": "7681:19:5" + }, + "referencedDeclaration": 6359, + "src": "7681:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_storage_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + } + }, + "visibility": "internal" + } + ], + "src": "7680:50:5" + }, + "returnParameters": { + "id": 893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 880, + "mutability": "mutable", + "name": "amountXAdded", + "nameLocation": "7803:12:5", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "7795:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7795:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 882, + "mutability": "mutable", + "name": "amountYAdded", + "nameLocation": "7837:12:5", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "7829:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7829:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 884, + "mutability": "mutable", + "name": "amountXLeft", + "nameLocation": "7871:11:5", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "7863:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 883, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7863:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 886, + "mutability": "mutable", + "name": "amountYLeft", + "nameLocation": "7904:11:5", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "7896:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7896:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 889, + "mutability": "mutable", + "name": "depositIds", + "nameLocation": "7946:10:5", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "7929:27:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 887, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7929:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 888, + "nodeType": "ArrayTypeName", + "src": "7929:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 892, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "7987:15:5", + "nodeType": "VariableDeclaration", + "scope": 958, + "src": "7970:32:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 890, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7970:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 891, + "nodeType": "ArrayTypeName", + "src": "7970:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "7781:231:5" + }, + "scope": 3762, + "src": "7659:1035:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6498 + ], + "body": { + "id": 1105, + "nodeType": "Block", + "src": "9714:1356:5", + "statements": [ + { + "assignments": [ + 982 + ], + "declarations": [ + { + "constant": false, + "id": 982, + "mutability": "mutable", + "name": "_LBPair", + "nameLocation": "9732:7:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "9724:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 981, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 980, + "name": "ILBPair", + "nameLocations": [ + "9724:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "9724:7:5" + }, + "referencedDeclaration": 6187, + "src": "9724:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "id": 993, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 985, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "9802:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9822:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "9802:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 987, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "9830:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9850:6:5", + "memberName": "tokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6329, + "src": "9830:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 989, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "9858:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9878:7:5", + "memberName": "binStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 6331, + "src": "9858:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 984, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "9763:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint256_$returns$_t_address_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (address)" + } + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9763:136:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 983, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "9742:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9742:167:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9724:185:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 994, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "9923:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9943:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "9923:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 996, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "9953:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9961:9:5", + "memberName": "getTokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 5952, + "src": "9953:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9953:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "9923:49:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1003, + "nodeType": "IfStatement", + "src": "9919:89:5", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1000, + "name": "LBRouter__WrongTokenOrder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6246, + "src": "9981:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9981:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1002, + "nodeType": "RevertStatement", + "src": "9974:34:5" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1004, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10023:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10043:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "10023:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1006, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "10053:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "src": "10023:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1008, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10065:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10085:7:5", + "memberName": "amountX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6333, + "src": "10065:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 1010, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "10096:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10100:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "10096:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10065:40:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10023:82:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1037, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10315:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10335:6:5", + "memberName": "tokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6329, + "src": "10315:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1039, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "10345:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "src": "10315:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1041, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10357:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10377:7:5", + "memberName": "amountY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6335, + "src": "10357:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 1043, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "10388:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10392:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "10388:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10357:40:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10315:82:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1089, + "nodeType": "Block", + "src": "10603:309:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 1073, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10690:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10710:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "10690:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10682:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10682:7:5", + "typeDescriptions": {} + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10682:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "expression": { + "id": 1078, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10743:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10763:6:5", + "memberName": "tokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6329, + "src": "10743:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 1077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10735:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10735:7:5", + "typeDescriptions": {} + } + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10735:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1081, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10788:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10808:7:5", + "memberName": "amountX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6333, + "src": "10788:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 1083, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10833:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10853:7:5", + "memberName": "amountY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6335, + "src": "10833:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 1085, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "10878:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10882:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "10878:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1070, + "name": "LBRouter__WrongNativeLiquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6318, + "src": "10624:40:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint256) pure" + } + }, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10624:277:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1088, + "nodeType": "RevertStatement", + "src": "10617:284:5" + } + ] + }, + "id": 1090, + "nodeType": "IfStatement", + "src": "10311:601:5", + "trueBody": { + "id": 1069, + "nodeType": "Block", + "src": "10399:198:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1048, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10431:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10451:6:5", + "memberName": "tokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6326, + "src": "10431:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 1050, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "10459:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10463:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "10459:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 1054, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "10479:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10471:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10471:7:5", + "typeDescriptions": {} + } + }, + "id": 1055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10471:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1056, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10489:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10509:7:5", + "memberName": "amountX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6333, + "src": "10489:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1047, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "10413:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10413:104:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1059, + "nodeType": "ExpressionStatement", + "src": "10413:104:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1063, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "10566:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10558:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10558:7:5", + "typeDescriptions": {} + } + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10558:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1065, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "10576:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10580:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "10576:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1060, + "name": "_wNativeDepositAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3736, + "src": "10531:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10531:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1068, + "nodeType": "ExpressionStatement", + "src": "10531:55:5" + } + ] + } + }, + "id": 1091, + "nodeType": "IfStatement", + "src": "10019:893:5", + "trueBody": { + "id": 1036, + "nodeType": "Block", + "src": "10107:198:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1015, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10139:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10159:6:5", + "memberName": "tokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6329, + "src": "10139:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 1017, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "10167:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10171:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "10167:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 1021, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "10187:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10179:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1019, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10179:7:5", + "typeDescriptions": {} + } + }, + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10179:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1023, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "10197:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10217:7:5", + "memberName": "amountY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6335, + "src": "10197:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1014, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "10121:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10121:104:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1026, + "nodeType": "ExpressionStatement", + "src": "10121:104:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1030, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "10274:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10266:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10266:7:5", + "typeDescriptions": {} + } + }, + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10266:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1032, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "10284:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10288:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "10284:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1027, + "name": "_wNativeDepositAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3736, + "src": "10239:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10239:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1035, + "nodeType": "ExpressionStatement", + "src": "10239:55:5" + } + ] + } + }, + { + "expression": { + "id": 1103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1092, + "name": "amountXAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 966, + "src": "10923:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1093, + "name": "amountYAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 968, + "src": "10937:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1094, + "name": "amountXLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 970, + "src": "10951:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1095, + "name": "amountYLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "10964:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1096, + "name": "depositIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "10977:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 1097, + "name": "liquidityMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "10989:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 1098, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "10922:83:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1100, + "name": "liquidityParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 962, + "src": "11034:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + { + "id": 1101, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "11055:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + }, + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 1099, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "11020:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_LiquidityParameters_$6359_calldata_ptr_$_t_contract$_ILBPair_$6187_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (struct ILBRouter.LiquidityParameters calldata,contract ILBPair) returns (uint256,uint256,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11020:43:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint256,uint256,uint256[] memory,uint256[] memory)" + } + }, + "src": "10922:141:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1104, + "nodeType": "ExpressionStatement", + "src": "10922:141:5" + } + ] + }, + "documentation": { + "id": 959, + "nodeType": "StructuredDocumentation", + "src": "8700:629:5", + "text": " @notice Add liquidity with NATIVE while performing safety checks\n @dev This function is compliant with fee on transfer tokens\n @param liquidityParameters The liquidity parameters\n @return amountXAdded The amount of token X added\n @return amountYAdded The amount of token Y added\n @return amountXLeft The amount of token X left (sent back to liquidityParameters.refundTo)\n @return amountYLeft The amount of token Y left (sent back to liquidityParameters.refundTo)\n @return depositIds The ids of the deposits\n @return liquidityMinted The amount of liquidity minted" + }, + "functionSelector": "8efc2b2c", + "id": 1106, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "addLiquidityNATIVE", + "nameLocation": "9343:18:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 964, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9453:8:5" + }, + "parameters": { + "id": 963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 962, + "mutability": "mutable", + "name": "liquidityParameters", + "nameLocation": "9391:19:5", + "nodeType": "VariableDeclaration", + "scope": 1106, + "src": "9362:48:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + }, + "typeName": { + "id": 961, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 960, + "name": "LiquidityParameters", + "nameLocations": [ + "9362:19:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6359, + "src": "9362:19:5" + }, + "referencedDeclaration": 6359, + "src": "9362:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_storage_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + } + }, + "visibility": "internal" + } + ], + "src": "9361:50:5" + }, + "returnParameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 966, + "mutability": "mutable", + "name": "amountXAdded", + "nameLocation": "9500:12:5", + "nodeType": "VariableDeclaration", + "scope": 1106, + "src": "9492:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 965, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9492:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 968, + "mutability": "mutable", + "name": "amountYAdded", + "nameLocation": "9534:12:5", + "nodeType": "VariableDeclaration", + "scope": 1106, + "src": "9526:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9526:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 970, + "mutability": "mutable", + "name": "amountXLeft", + "nameLocation": "9568:11:5", + "nodeType": "VariableDeclaration", + "scope": 1106, + "src": "9560:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9560:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 972, + "mutability": "mutable", + "name": "amountYLeft", + "nameLocation": "9601:11:5", + "nodeType": "VariableDeclaration", + "scope": 1106, + "src": "9593:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 971, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9593:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 975, + "mutability": "mutable", + "name": "depositIds", + "nameLocation": "9643:10:5", + "nodeType": "VariableDeclaration", + "scope": 1106, + "src": "9626:27:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 973, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 974, + "nodeType": "ArrayTypeName", + "src": "9626:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 978, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "9684:15:5", + "nodeType": "VariableDeclaration", + "scope": 1106, + "src": "9667:32:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9667:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 977, + "nodeType": "ArrayTypeName", + "src": "9667:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "9478:231:5" + }, + "scope": 3762, + "src": "9334:1736:5", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6527 + ], + "body": { + "id": 1192, + "nodeType": "Block", + "src": "12133:396:5", + "statements": [ + { + "assignments": [ + 1142 + ], + "declarations": [ + { + "constant": false, + "id": 1142, + "mutability": "mutable", + "name": "_LBPair", + "nameLocation": "12151:7:5", + "nodeType": "VariableDeclaration", + "scope": 1192, + "src": "12143:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 1141, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1140, + "name": "ILBPair", + "nameLocations": [ + "12143:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "12143:7:5" + }, + "referencedDeclaration": 6187, + "src": "12143:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "id": 1150, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 1145, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "12191:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 1146, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "12199:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 1147, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "12207:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 1144, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "12169:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint256_$returns$_t_address_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (address)" + } + }, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12169:46:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1143, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "12161:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12161:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12143:73:5" + }, + { + "assignments": [ + 1152 + ], + "declarations": [ + { + "constant": false, + "id": 1152, + "mutability": "mutable", + "name": "isWrongOrder", + "nameLocation": "12231:12:5", + "nodeType": "VariableDeclaration", + "scope": 1192, + "src": "12226:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1151, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12226:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 1158, + "initialValue": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1153, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "12246:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1154, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "12256:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12264:9:5", + "memberName": "getTokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 5952, + "src": "12256:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12256:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "12246:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12226:49:5" + }, + { + "condition": { + "id": 1159, + "name": "isWrongOrder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1152, + "src": "12290:12:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1168, + "nodeType": "IfStatement", + "src": "12286:69:5", + "trueBody": { + "expression": { + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1160, + "name": "amountXMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "12305:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1161, + "name": "amountYMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "12317:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1162, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "12304:24:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1163, + "name": "amountYMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "12332:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1164, + "name": "amountXMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "12344:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1165, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12331:24:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "12304:51:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1167, + "nodeType": "ExpressionStatement", + "src": "12304:51:5" + } + }, + { + "expression": { + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1169, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1136, + "src": "12367:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1170, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "12376:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1171, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "12366:18:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1173, + "name": "_LBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "12404:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + { + "id": 1174, + "name": "amountXMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "12413:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1175, + "name": "amountYMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "12425:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1176, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1122, + "src": "12437:3:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 1177, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1125, + "src": "12442:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 1178, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1127, + "src": "12451:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1172, + "name": "_removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2881, + "src": "12387:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ILBPair_$6187_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (contract ILBPair,uint256,uint256,uint256[] memory,uint256[] memory,address) returns (uint256,uint256)" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12387:67:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "12366:88:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1181, + "nodeType": "ExpressionStatement", + "src": "12366:88:5" + }, + { + "condition": { + "id": 1182, + "name": "isWrongOrder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1152, + "src": "12469:12:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1191, + "nodeType": "IfStatement", + "src": "12465:57:5", + "trueBody": { + "expression": { + "id": 1189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1183, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1136, + "src": "12484:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1184, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "12493:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1185, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "12483:18:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1186, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "12505:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1187, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1136, + "src": "12514:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1188, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12504:18:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "12483:39:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1190, + "nodeType": "ExpressionStatement", + "src": "12483:39:5" + } + } + ] + }, + "documentation": { + "id": 1107, + "nodeType": "StructuredDocumentation", + "src": "11076:707:5", + "text": " @notice Remove liquidity while performing safety checks\n @dev This function is compliant with fee on transfer tokens\n @param tokenX The address of token X\n @param tokenY The address of token Y\n @param binStep The bin step of the LBPair\n @param amountXMin The min amount to receive of token X\n @param amountYMin The min amount to receive of token Y\n @param ids The list of ids to burn\n @param amounts The list of amounts to burn of each id in `_ids`\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountX Amount of token X returned\n @return amountY Amount of token Y returned" + }, + "functionSelector": "c22159b6", + "id": 1193, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1133, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1129, + "src": "12080:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1134, + "kind": "modifierInvocation", + "modifierName": { + "id": 1132, + "name": "ensure", + "nameLocations": [ + "12073:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "12073:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "12073:16:5" + } + ], + "name": "removeLiquidity", + "nameLocation": "11797:15:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1131, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "12064:8:5" + }, + "parameters": { + "id": 1130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1110, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "11829:6:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "11822:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1109, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1108, + "name": "IERC20", + "nameLocations": [ + "11822:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "11822:6:5" + }, + "referencedDeclaration": 479, + "src": "11822:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1113, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "11852:6:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "11845:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1112, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1111, + "name": "IERC20", + "nameLocations": [ + "11845:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "11845:6:5" + }, + "referencedDeclaration": 479, + "src": "11845:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1115, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "11875:7:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "11868:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1114, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "11868:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1117, + "mutability": "mutable", + "name": "amountXMin", + "nameLocation": "11900:10:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "11892:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11892:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1119, + "mutability": "mutable", + "name": "amountYMin", + "nameLocation": "11928:10:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "11920:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11920:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1122, + "mutability": "mutable", + "name": "ids", + "nameLocation": "11965:3:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "11948:20:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11948:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1121, + "nodeType": "ArrayTypeName", + "src": "11948:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1125, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "11995:7:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "11978:24:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11978:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1124, + "nodeType": "ArrayTypeName", + "src": "11978:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1127, + "mutability": "mutable", + "name": "to", + "nameLocation": "12020:2:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "12012:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12012:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1129, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "12040:8:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "12032:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12032:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11812:242:5" + }, + "returnParameters": { + "id": 1139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1136, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "12107:7:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "12099:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12099:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1138, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "12124:7:5", + "nodeType": "VariableDeclaration", + "scope": 1193, + "src": "12116:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12116:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12098:34:5" + }, + "scope": 3762, + "src": "11788:741:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6553 + ], + "body": { + "id": 1300, + "nodeType": "Block", + "src": "13749:688:5", + "statements": [ + { + "assignments": [ + 1226 + ], + "declarations": [ + { + "constant": false, + "id": 1226, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "13767:6:5", + "nodeType": "VariableDeclaration", + "scope": 1300, + "src": "13759:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 1225, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1224, + "name": "ILBPair", + "nameLocations": [ + "13759:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "13759:7:5" + }, + "referencedDeclaration": 6187, + "src": "13759:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "id": 1236, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 1229, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1197, + "src": "13806:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "id": 1231, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "13820:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 1230, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "13813:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13813:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 1233, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1199, + "src": "13831:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 1228, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "13784:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint256_$returns$_t_address_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (address)" + } + }, + "id": 1234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13784:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1227, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "13776:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13776:64:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13759:81:5" + }, + { + "id": 1288, + "nodeType": "Block", + "src": "13851:477:5", + "statements": [ + { + "assignments": [ + 1238 + ], + "declarations": [ + { + "constant": false, + "id": 1238, + "mutability": "mutable", + "name": "isNATIVETokenY", + "nameLocation": "13870:14:5", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "13865:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1237, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13865:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 1246, + "initialValue": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1240, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "13894:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 1239, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "13887:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13887:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1242, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1226, + "src": "13907:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13914:9:5", + "memberName": "getTokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 5958, + "src": "13907:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13907:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "13887:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13865:60:5" + }, + { + "condition": { + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13944:15:5", + "subExpression": { + "id": 1247, + "name": "isNATIVETokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1238, + "src": "13945:14:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1258, + "nodeType": "IfStatement", + "src": "13940:123:5", + "trueBody": { + "id": 1257, + "nodeType": "Block", + "src": "13961:102:5", + "statements": [ + { + "expression": { + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1249, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "13980:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1250, + "name": "amountNATIVEMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1203, + "src": "13996:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1251, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13979:33:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1252, + "name": "amountNATIVEMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1203, + "src": "14016:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1253, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "14033:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1254, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14015:33:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "13979:69:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1256, + "nodeType": "ExpressionStatement", + "src": "13979:69:5" + } + ] + } + }, + { + "assignments": [ + 1260, + 1262 + ], + "declarations": [ + { + "constant": false, + "id": 1260, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "14086:7:5", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "14078:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14078:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1262, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "14103:7:5", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "14095:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14095:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1274, + "initialValue": { + "arguments": [ + { + "id": 1264, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1226, + "src": "14147:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + { + "id": 1265, + "name": "amountTokenMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "14155:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1266, + "name": "amountNATIVEMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1203, + "src": "14171:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1267, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "14188:3:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 1268, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1209, + "src": "14193:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "arguments": [ + { + "id": 1271, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "14210:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 1270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14202:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14202:7:5", + "typeDescriptions": {} + } + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14202:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1263, + "name": "_removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2881, + "src": "14130:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ILBPair_$6187_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (contract ILBPair,uint256,uint256,uint256[] memory,uint256[] memory,address) returns (uint256,uint256)" + } + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14130:86:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14077:139:5" + }, + { + "expression": { + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1275, + "name": "amountToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1220, + "src": "14232:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1276, + "name": "amountNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1222, + "src": "14245:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1277, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "14231:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "id": 1278, + "name": "isNATIVETokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1238, + "src": "14261:14:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "components": [ + { + "id": 1282, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1262, + "src": "14300:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1283, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "14309:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1284, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14299:18:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "id": 1285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "14261:56:5", + "trueExpression": { + "components": [ + { + "id": 1279, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1260, + "src": "14279:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1280, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1262, + "src": "14288:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1281, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14278:18:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "14231:86:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1287, + "nodeType": "ExpressionStatement", + "src": "14231:86:5" + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 1290, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1197, + "src": "14352:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 1291, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1211, + "src": "14359:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1292, + "name": "amountToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1220, + "src": "14363:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1289, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3649, + "src": "14338:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14338:37:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1294, + "nodeType": "ExpressionStatement", + "src": "14338:37:5" + }, + { + "expression": { + "arguments": [ + { + "id": 1296, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1211, + "src": "14413:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1297, + "name": "amountNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1222, + "src": "14417:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1295, + "name": "_wNativeWithdrawAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3761, + "src": "14385:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14385:45:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1299, + "nodeType": "ExpressionStatement", + "src": "14385:45:5" + } + ] + }, + "documentation": { + "id": 1194, + "nodeType": "StructuredDocumentation", + "src": "12535:856:5", + "text": " @notice Remove NATIVE liquidity while performing safety checks\n @dev This function is **NOT** compliant with fee on transfer tokens.\n This is wanted as it would make users pays the fee on transfer twice,\n use the `removeLiquidity` function to remove liquidity with fee on transfer tokens.\n @param token The address of token\n @param binStep The bin step of the LBPair\n @param amountTokenMin The min amount to receive of token\n @param amountNATIVEMin The min amount to receive of NATIVE\n @param ids The list of ids to burn\n @param amounts The list of amounts to burn of each id in `_ids`\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountToken Amount of token returned\n @return amountNATIVE Amount of NATIVE returned" + }, + "functionSelector": "81c2fdfb", + "id": 1301, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1217, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1213, + "src": "13687:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1218, + "kind": "modifierInvocation", + "modifierName": { + "id": 1216, + "name": "ensure", + "nameLocations": [ + "13680:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "13680:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "13680:16:5" + } + ], + "name": "removeLiquidityNATIVE", + "nameLocation": "13405:21:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1215, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "13671:8:5" + }, + "parameters": { + "id": 1214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1197, + "mutability": "mutable", + "name": "token", + "nameLocation": "13443:5:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13436:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1196, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1195, + "name": "IERC20", + "nameLocations": [ + "13436:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "13436:6:5" + }, + "referencedDeclaration": 479, + "src": "13436:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1199, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "13465:7:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13458:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1198, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13458:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1201, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "13490:14:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13482:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1200, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13482:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1203, + "mutability": "mutable", + "name": "amountNATIVEMin", + "nameLocation": "13522:15:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13514:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13514:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1206, + "mutability": "mutable", + "name": "ids", + "nameLocation": "13564:3:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13547:20:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1204, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13547:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1205, + "nodeType": "ArrayTypeName", + "src": "13547:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1209, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "13594:7:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13577:24:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1207, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13577:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1208, + "nodeType": "ArrayTypeName", + "src": "13577:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1211, + "mutability": "mutable", + "name": "to", + "nameLocation": "13627:2:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13611:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1210, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13611:15:5", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1213, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "13647:8:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13639:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13639:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13426:235:5" + }, + "returnParameters": { + "id": 1223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1220, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "13714:11:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13706:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1219, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13706:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1222, + "mutability": "mutable", + "name": "amountNATIVE", + "nameLocation": "13735:12:5", + "nodeType": "VariableDeclaration", + "scope": 1301, + "src": "13727:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1221, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13727:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13705:43:5" + }, + "scope": 3762, + "src": "13396:1041:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6569 + ], + "body": { + "id": 1373, + "nodeType": "Block", + "src": "15087:384:5", + "statements": [ + { + "assignments": [ + 1329 + ], + "declarations": [ + { + "constant": false, + "id": 1329, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "15114:5:5", + "nodeType": "VariableDeclaration", + "scope": 1373, + "src": "15097:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15097:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1328, + "nodeType": "ArrayTypeName", + "src": "15097:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 1338, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1331, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "15132:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15137:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "15132:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 1333, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "15151:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1334, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15156:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "15151:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1335, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "15166:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1336, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15171:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "15166:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 1330, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "15122:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 1337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15122:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15097:84:5" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1340, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "15210:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15215:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "15210:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1343, + "indexExpression": { + "hexValue": "30", + "id": 1342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15225:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15210:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 1344, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "15229:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15233:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15229:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1346, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "15241:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1348, + "indexExpression": { + "hexValue": "30", + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15247:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15241:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1349, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "15251:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1339, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "15192:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15192:68:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1351, + "nodeType": "ExpressionStatement", + "src": "15192:68:5" + }, + { + "expression": { + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1352, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1323, + "src": "15271:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1354, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1304, + "src": "15309:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1355, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "15319:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1356, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "15326:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1357, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15331:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "15326:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1358, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "15341:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15346:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "15341:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1360, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1311, + "src": "15357:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1353, + "name": "_swapExactTokensForTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3074, + "src": "15283:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$", + "typeString": "function (uint256,address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address) returns (uint256)" + } + }, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15283:77:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15271:89:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1363, + "nodeType": "ExpressionStatement", + "src": "15271:89:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1364, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "15375:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1365, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1323, + "src": "15390:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15375:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1372, + "nodeType": "IfStatement", + "src": "15371:93:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1368, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1306, + "src": "15440:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1369, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1323, + "src": "15454:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1367, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "15408:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15408:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1371, + "nodeType": "RevertStatement", + "src": "15401:63:5" + } + } + ] + }, + "documentation": { + "id": 1302, + "nodeType": "StructuredDocumentation", + "src": "14443:383:5", + "text": " @notice Swaps exact tokens for tokens while performing safety checks\n @param amountIn The amount of token to send\n @param amountOutMin The min amount of token to receive\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountOut Output amount of the swap" + }, + "functionSelector": "2a443fae", + "id": 1374, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1317, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1313, + "src": "15024:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1318, + "kind": "modifierInvocation", + "modifierName": { + "id": 1316, + "name": "ensure", + "nameLocations": [ + "15017:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "15017:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "15017:16:5" + }, + { + "arguments": [ + { + "id": 1320, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "15053:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 1321, + "kind": "modifierInvocation", + "modifierName": { + "id": 1319, + "name": "verifyPathValidity", + "nameLocations": [ + "15034:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "15034:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "15034:24:5" + } + ], + "name": "swapExactTokensForTokens", + "nameLocation": "14840:24:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1315, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "15008:8:5" + }, + "parameters": { + "id": 1314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1304, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "14882:8:5", + "nodeType": "VariableDeclaration", + "scope": 1374, + "src": "14874:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14874:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1306, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "14908:12:5", + "nodeType": "VariableDeclaration", + "scope": 1374, + "src": "14900:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14900:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1309, + "mutability": "mutable", + "name": "path", + "nameLocation": "14942:4:5", + "nodeType": "VariableDeclaration", + "scope": 1374, + "src": "14930:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 1308, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1307, + "name": "Path", + "nameLocations": [ + "14930:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "14930:4:5" + }, + "referencedDeclaration": 6372, + "src": "14930:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1311, + "mutability": "mutable", + "name": "to", + "nameLocation": "14964:2:5", + "nodeType": "VariableDeclaration", + "scope": 1374, + "src": "14956:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14956:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1313, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "14984:8:5", + "nodeType": "VariableDeclaration", + "scope": 1374, + "src": "14976:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1312, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14976:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14864:134:5" + }, + "returnParameters": { + "id": 1324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1323, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "15076:9:5", + "nodeType": "VariableDeclaration", + "scope": 1374, + "src": "15068:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15068:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15067:19:5" + }, + "scope": 3762, + "src": "14831:640:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6585 + ], + "body": { + "id": 1478, + "nodeType": "Block", + "src": "16142:645:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 1398, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16156:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16161:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "16156:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1403, + "indexExpression": { + "expression": { + "expression": { + "id": 1400, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16171:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1401, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16176:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "16171:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16189:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16171:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16156:40:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 1405, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "16207:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 1404, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "16200:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16200:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "16156:60:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1421, + "nodeType": "IfStatement", + "src": "16152:175:5", + "trueBody": { + "id": 1420, + "nodeType": "Block", + "src": "16218:109:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1411, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16274:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1412, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16279:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "16274:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1416, + "indexExpression": { + "expression": { + "expression": { + "id": 1413, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16289:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16294:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "16289:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16307:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16289:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16274:40:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16266:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16266:7:5", + "typeDescriptions": {} + } + }, + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16266:49:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1408, + "name": "LBRouter__InvalidTokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6302, + "src": "16239:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16239:77:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1419, + "nodeType": "RevertStatement", + "src": "16232:84:5" + } + ] + } + }, + { + "assignments": [ + 1426 + ], + "declarations": [ + { + "constant": false, + "id": 1426, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "16354:5:5", + "nodeType": "VariableDeclaration", + "scope": 1478, + "src": "16337:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16337:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1425, + "nodeType": "ArrayTypeName", + "src": "16337:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 1435, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1428, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16372:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1429, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16377:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "16372:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 1430, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16391:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16396:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "16391:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1432, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16406:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1433, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16411:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "16406:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 1427, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "16362:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 1434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16362:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16337:84:5" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1437, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16450:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1438, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16455:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "16450:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1440, + "indexExpression": { + "hexValue": "30", + "id": 1439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16465:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16450:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 1441, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "16469:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16473:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "16469:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1443, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "16481:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1445, + "indexExpression": { + "hexValue": "30", + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16487:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16481:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1446, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "16491:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1436, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "16432:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16432:68:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1448, + "nodeType": "ExpressionStatement", + "src": "16432:68:5" + }, + { + "expression": { + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1449, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "16511:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1451, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "16549:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1452, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1426, + "src": "16559:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1453, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16566:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1454, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16571:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "16566:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1455, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16581:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16586:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "16581:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "arguments": [ + { + "id": 1459, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "16605:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 1458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16597:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16597:7:5", + "typeDescriptions": {} + } + }, + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16597:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1450, + "name": "_swapExactTokensForTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3074, + "src": "16523:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$", + "typeString": "function (uint256,address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address) returns (uint256)" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16523:88:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16511:100:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1463, + "nodeType": "ExpressionStatement", + "src": "16511:100:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1464, + "name": "amountOutMinNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "16626:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1465, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "16647:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16626:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1472, + "nodeType": "IfStatement", + "src": "16622:105:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1468, + "name": "amountOutMinNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1379, + "src": "16697:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1469, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "16717:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1467, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "16665:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16665:62:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1471, + "nodeType": "RevertStatement", + "src": "16658:69:5" + } + }, + { + "expression": { + "arguments": [ + { + "id": 1474, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "16766:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1475, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "16770:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1473, + "name": "_wNativeWithdrawAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3761, + "src": "16738:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16738:42:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1477, + "nodeType": "ExpressionStatement", + "src": "16738:42:5" + } + ] + }, + "documentation": { + "id": 1375, + "nodeType": "StructuredDocumentation", + "src": "15477:390:5", + "text": " @notice Swaps exact tokens for NATIVE while performing safety checks\n @param amountIn The amount of token to send\n @param amountOutMinNATIVE The min amount of NATIVE to receive\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountOut Output amount of the swap" + }, + "functionSelector": "9ab6156b", + "id": 1479, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1390, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "16079:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1391, + "kind": "modifierInvocation", + "modifierName": { + "id": 1389, + "name": "ensure", + "nameLocations": [ + "16072:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "16072:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "16072:16:5" + }, + { + "arguments": [ + { + "id": 1393, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "16108:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 1394, + "kind": "modifierInvocation", + "modifierName": { + "id": 1392, + "name": "verifyPathValidity", + "nameLocations": [ + "16089:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "16089:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "16089:24:5" + } + ], + "name": "swapExactTokensForNATIVE", + "nameLocation": "15881:24:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1388, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "16063:8:5" + }, + "parameters": { + "id": 1387, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1377, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "15923:8:5", + "nodeType": "VariableDeclaration", + "scope": 1479, + "src": "15915:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15915:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1379, + "mutability": "mutable", + "name": "amountOutMinNATIVE", + "nameLocation": "15949:18:5", + "nodeType": "VariableDeclaration", + "scope": 1479, + "src": "15941:26:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15941:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1382, + "mutability": "mutable", + "name": "path", + "nameLocation": "15989:4:5", + "nodeType": "VariableDeclaration", + "scope": 1479, + "src": "15977:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 1381, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1380, + "name": "Path", + "nameLocations": [ + "15977:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "15977:4:5" + }, + "referencedDeclaration": 6372, + "src": "15977:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "mutability": "mutable", + "name": "to", + "nameLocation": "16019:2:5", + "nodeType": "VariableDeclaration", + "scope": 1479, + "src": "16003:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16003:15:5", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1386, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "16039:8:5", + "nodeType": "VariableDeclaration", + "scope": 1479, + "src": "16031:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16031:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15905:148:5" + }, + "returnParameters": { + "id": 1397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1396, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "16131:9:5", + "nodeType": "VariableDeclaration", + "scope": 1479, + "src": "16123:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16123:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16122:19:5" + }, + "scope": 3762, + "src": "15872:915:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6599 + ], + "body": { + "id": 1564, + "nodeType": "Block", + "src": "17382:479:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 1501, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17396:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1502, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17401:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "17396:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1504, + "indexExpression": { + "hexValue": "30", + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17411:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17396:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 1506, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "17424:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 1505, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "17417:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17417:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "17396:37:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1519, + "nodeType": "IfStatement", + "src": "17392:104:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1512, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17477:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1513, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17482:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "17477:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1515, + "indexExpression": { + "hexValue": "30", + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17492:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17477:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 1511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17469:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17469:7:5", + "typeDescriptions": {} + } + }, + "id": 1516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17469:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1509, + "name": "LBRouter__InvalidTokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6302, + "src": "17442:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17442:54:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1518, + "nodeType": "RevertStatement", + "src": "17435:61:5" + } + }, + { + "assignments": [ + 1524 + ], + "declarations": [ + { + "constant": false, + "id": 1524, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "17524:5:5", + "nodeType": "VariableDeclaration", + "scope": 1564, + "src": "17507:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17507:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1523, + "nodeType": "ArrayTypeName", + "src": "17507:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 1533, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1526, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17542:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1527, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17547:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "17542:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 1528, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17561:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1529, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17566:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "17561:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1530, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17576:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17581:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "17576:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 1525, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "17532:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17532:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17507:84:5" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 1535, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1524, + "src": "17629:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1537, + "indexExpression": { + "hexValue": "30", + "id": 1536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17635:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17629:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1538, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "17639:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17643:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17639:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1534, + "name": "_wNativeDepositAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3736, + "src": "17602:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17602:47:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1541, + "nodeType": "ExpressionStatement", + "src": "17602:47:5" + }, + { + "expression": { + "id": 1553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1542, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "17660:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 1544, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "17698:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17702:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17698:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1546, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1524, + "src": "17709:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1547, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17716:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1548, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17721:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "17716:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1549, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17731:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1550, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17736:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "17731:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1551, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "17747:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1543, + "name": "_swapExactTokensForTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3074, + "src": "17672:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$", + "typeString": "function (uint256,address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address) returns (uint256)" + } + }, + "id": 1552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17672:78:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17660:90:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1554, + "nodeType": "ExpressionStatement", + "src": "17660:90:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1555, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1482, + "src": "17765:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1556, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "17780:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17765:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1563, + "nodeType": "IfStatement", + "src": "17761:93:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1559, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1482, + "src": "17830:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1560, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "17844:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1558, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "17798:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17798:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1562, + "nodeType": "RevertStatement", + "src": "17791:63:5" + } + } + ] + }, + "documentation": { + "id": 1480, + "nodeType": "StructuredDocumentation", + "src": "16793:332:5", + "text": " @notice Swaps exact NATIVE for tokens while performing safety checks\n @param amountOutMin The min amount of token to receive\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountOut Output amount of the swap" + }, + "functionSelector": "b066ea7c", + "id": 1565, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1493, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1489, + "src": "17299:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1494, + "kind": "modifierInvocation", + "modifierName": { + "id": 1492, + "name": "ensure", + "nameLocations": [ + "17292:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "17292:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "17292:16:5" + }, + { + "arguments": [ + { + "id": 1496, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "17336:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 1497, + "kind": "modifierInvocation", + "modifierName": { + "id": 1495, + "name": "verifyPathValidity", + "nameLocations": [ + "17317:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "17317:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "17317:24:5" + } + ], + "name": "swapExactNATIVEForTokens", + "nameLocation": "17139:24:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1491, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "17275:8:5" + }, + "parameters": { + "id": 1490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1482, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "17172:12:5", + "nodeType": "VariableDeclaration", + "scope": 1565, + "src": "17164:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17164:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1485, + "mutability": "mutable", + "name": "path", + "nameLocation": "17198:4:5", + "nodeType": "VariableDeclaration", + "scope": 1565, + "src": "17186:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 1484, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1483, + "name": "Path", + "nameLocations": [ + "17186:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "17186:4:5" + }, + "referencedDeclaration": 6372, + "src": "17186:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1487, + "mutability": "mutable", + "name": "to", + "nameLocation": "17212:2:5", + "nodeType": "VariableDeclaration", + "scope": 1565, + "src": "17204:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17204:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1489, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "17224:8:5", + "nodeType": "VariableDeclaration", + "scope": 1565, + "src": "17216:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17216:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17163:70:5" + }, + "returnParameters": { + "id": 1500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1499, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "17367:9:5", + "nodeType": "VariableDeclaration", + "scope": 1565, + "src": "17359:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17359:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17358:19:5" + }, + "scope": 3762, + "src": "17130:731:5", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6616 + ], + "body": { + "id": 1665, + "nodeType": "Block", + "src": "18520:637:5", + "statements": [ + { + "assignments": [ + 1594 + ], + "declarations": [ + { + "constant": false, + "id": 1594, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "18547:5:5", + "nodeType": "VariableDeclaration", + "scope": 1665, + "src": "18530:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18530:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1593, + "nodeType": "ArrayTypeName", + "src": "18530:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 1603, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1596, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18565:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1597, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18570:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "18565:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 1598, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18584:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1599, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18589:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "18584:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1600, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18599:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18604:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "18599:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 1595, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "18555:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 1602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18555:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18530:84:5" + }, + { + "id": 1664, + "nodeType": "Block", + "src": "18625:526:5", + "statements": [ + { + "expression": { + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1604, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1588, + "src": "18639:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 1606, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18665:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1607, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18670:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "18665:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "id": 1608, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "18680:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1609, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18687:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1610, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18692:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "18687:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1611, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "18703:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1605, + "name": "_getAmountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "18651:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (enum ILBRouter.Version[] memory,address[] memory,contract IERC20[] memory,uint256) view returns (uint256[] memory)" + } + }, + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18651:62:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "18639:74:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1614, + "nodeType": "ExpressionStatement", + "src": "18639:74:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1615, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1588, + "src": "18732:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1617, + "indexExpression": { + "hexValue": "30", + "id": 1616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18742:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18732:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1618, + "name": "amountInMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1570, + "src": "18747:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18732:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1627, + "nodeType": "IfStatement", + "src": "18728:95:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1621, + "name": "amountInMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1570, + "src": "18797:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 1622, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1588, + "src": "18810:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1624, + "indexExpression": { + "hexValue": "30", + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18820:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18810:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1620, + "name": "LBRouter__MaxAmountInExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6298, + "src": "18767:29:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18767:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1626, + "nodeType": "RevertStatement", + "src": "18760:63:5" + } + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1629, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18856:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1630, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18861:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "18856:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1632, + "indexExpression": { + "hexValue": "30", + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18871:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18856:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 1633, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "18875:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18879:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18875:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1635, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "18887:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1637, + "indexExpression": { + "hexValue": "30", + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18893:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18887:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1638, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1588, + "src": "18897:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1640, + "indexExpression": { + "hexValue": "30", + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18907:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18897:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1628, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "18838:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18838:72:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1642, + "nodeType": "ExpressionStatement", + "src": "18838:72:5" + }, + { + "assignments": [ + 1644 + ], + "declarations": [ + { + "constant": false, + "id": 1644, + "mutability": "mutable", + "name": "_amountOutReal", + "nameLocation": "18933:14:5", + "nodeType": "VariableDeclaration", + "scope": 1664, + "src": "18925:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18925:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1654, + "initialValue": { + "arguments": [ + { + "id": 1646, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "18976:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1647, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18983:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18988:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "18983:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1649, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18998:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1650, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19003:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "18998:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1651, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1588, + "src": "19014:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 1652, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "19025:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1645, + "name": "_swapTokensForExactTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3246, + "src": "18950:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,uint256[] memory,address) returns (uint256)" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18950:78:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18925:103:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1655, + "name": "_amountOutReal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1644, + "src": "19047:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1656, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "19064:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19047:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1663, + "nodeType": "IfStatement", + "src": "19043:97:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1659, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "19114:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1660, + "name": "_amountOutReal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1644, + "src": "19125:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1658, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "19082:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19082:58:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1662, + "nodeType": "RevertStatement", + "src": "19075:65:5" + } + } + ] + } + ] + }, + "documentation": { + "id": 1566, + "nodeType": "StructuredDocumentation", + "src": "17867:383:5", + "text": " @notice Swaps tokens for exact tokens while performing safety checks\n @param amountOut The amount of token to receive\n @param amountInMax The max amount of token to send\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountsIn Input amounts of the swap" + }, + "functionSelector": "92fe8e70", + "id": 1666, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1581, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "18448:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1582, + "kind": "modifierInvocation", + "modifierName": { + "id": 1580, + "name": "ensure", + "nameLocations": [ + "18441:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "18441:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "18441:16:5" + }, + { + "arguments": [ + { + "id": 1584, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "18477:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 1585, + "kind": "modifierInvocation", + "modifierName": { + "id": 1583, + "name": "verifyPathValidity", + "nameLocations": [ + "18458:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "18458:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "18458:24:5" + } + ], + "name": "swapTokensForExactTokens", + "nameLocation": "18264:24:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1579, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "18432:8:5" + }, + "parameters": { + "id": 1578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1568, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "18306:9:5", + "nodeType": "VariableDeclaration", + "scope": 1666, + "src": "18298:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18298:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1570, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "18333:11:5", + "nodeType": "VariableDeclaration", + "scope": 1666, + "src": "18325:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18325:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1573, + "mutability": "mutable", + "name": "path", + "nameLocation": "18366:4:5", + "nodeType": "VariableDeclaration", + "scope": 1666, + "src": "18354:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 1572, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1571, + "name": "Path", + "nameLocations": [ + "18354:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "18354:4:5" + }, + "referencedDeclaration": 6372, + "src": "18354:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1575, + "mutability": "mutable", + "name": "to", + "nameLocation": "18388:2:5", + "nodeType": "VariableDeclaration", + "scope": 1666, + "src": "18380:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18380:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1577, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "18408:8:5", + "nodeType": "VariableDeclaration", + "scope": 1666, + "src": "18400:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18400:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18288:134:5" + }, + "returnParameters": { + "id": 1589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1588, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "18509:9:5", + "nodeType": "VariableDeclaration", + "scope": 1666, + "src": "18492:26:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18492:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1587, + "nodeType": "ArrayTypeName", + "src": "18492:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "18491:28:5" + }, + "scope": 3762, + "src": "18255:902:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6633 + ], + "body": { + "id": 1797, + "nodeType": "Block", + "src": "19851:880:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 1691, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "19865:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1692, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19870:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "19865:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1696, + "indexExpression": { + "expression": { + "expression": { + "id": 1693, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "19880:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1694, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19885:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "19880:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19898:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "19880:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19865:40:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 1698, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "19916:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 1697, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "19909:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19909:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "19865:60:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1714, + "nodeType": "IfStatement", + "src": "19861:175:5", + "trueBody": { + "id": 1713, + "nodeType": "Block", + "src": "19927:109:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1704, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "19983:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1705, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19988:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "19983:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1709, + "indexExpression": { + "expression": { + "expression": { + "id": 1706, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "19998:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20003:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "19998:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20016:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "19998:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19983:40:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19975:7:5", + "typeDescriptions": {} + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19975:49:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1701, + "name": "LBRouter__InvalidTokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6302, + "src": "19948:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19948:77:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1712, + "nodeType": "RevertStatement", + "src": "19941:84:5" + } + ] + } + }, + { + "assignments": [ + 1719 + ], + "declarations": [ + { + "constant": false, + "id": 1719, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "20063:5:5", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "20046:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20046:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1718, + "nodeType": "ArrayTypeName", + "src": "20046:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 1728, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1721, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20081:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1722, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20086:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "20081:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 1723, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20100:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1724, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20105:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "20100:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1725, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20115:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1726, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20120:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "20115:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 1720, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "20071:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 1727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20071:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20046:84:5" + }, + { + "expression": { + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1729, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "20140:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 1731, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20166:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1732, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20171:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "20166:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "id": 1733, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1719, + "src": "20181:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1734, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20188:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20193:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "20188:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1736, + "name": "amountNATIVEOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1669, + "src": "20204:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1730, + "name": "_getAmountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "20152:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (enum ILBRouter.Version[] memory,address[] memory,contract IERC20[] memory,uint256) view returns (uint256[] memory)" + } + }, + "id": 1737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20152:68:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "20140:80:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1739, + "nodeType": "ExpressionStatement", + "src": "20140:80:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1740, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "20235:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1742, + "indexExpression": { + "hexValue": "30", + "id": 1741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20245:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20235:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1743, + "name": "amountInMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1671, + "src": "20250:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20235:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1752, + "nodeType": "IfStatement", + "src": "20231:95:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1746, + "name": "amountInMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1671, + "src": "20300:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 1747, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "20313:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1749, + "indexExpression": { + "hexValue": "30", + "id": 1748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20323:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20313:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1745, + "name": "LBRouter__MaxAmountInExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6298, + "src": "20270:29:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20270:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1751, + "nodeType": "RevertStatement", + "src": "20263:63:5" + } + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1754, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20355:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20360:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "20355:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1757, + "indexExpression": { + "hexValue": "30", + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20370:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20355:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 1758, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "20374:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20378:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20374:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1760, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1719, + "src": "20386:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1762, + "indexExpression": { + "hexValue": "30", + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20392:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20386:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1763, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "20396:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1765, + "indexExpression": { + "hexValue": "30", + "id": 1764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20406:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20396:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1753, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "20337:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20337:72:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1767, + "nodeType": "ExpressionStatement", + "src": "20337:72:5" + }, + { + "assignments": [ + 1769 + ], + "declarations": [ + { + "constant": false, + "id": 1769, + "mutability": "mutable", + "name": "_amountOutReal", + "nameLocation": "20428:14:5", + "nodeType": "VariableDeclaration", + "scope": 1797, + "src": "20420:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20420:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1782, + "initialValue": { + "arguments": [ + { + "id": 1771, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1719, + "src": "20483:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1772, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20490:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20495:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "20490:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1774, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "20505:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20510:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "20505:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1776, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "20521:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "arguments": [ + { + "id": 1779, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "20540:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20532:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1777, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20532:7:5", + "typeDescriptions": {} + } + }, + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20532:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1770, + "name": "_swapTokensForExactTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3246, + "src": "20457:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,uint256[] memory,address) returns (uint256)" + } + }, + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20457:89:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20420:126:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1783, + "name": "_amountOutReal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "20561:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1784, + "name": "amountNATIVEOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1669, + "src": "20578:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20561:32:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1791, + "nodeType": "IfStatement", + "src": "20557:109:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1787, + "name": "amountNATIVEOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1669, + "src": "20634:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1788, + "name": "_amountOutReal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "20651:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1786, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "20602:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20602:64:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1790, + "nodeType": "RevertStatement", + "src": "20595:71:5" + } + }, + { + "expression": { + "arguments": [ + { + "id": 1793, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1676, + "src": "20705:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1794, + "name": "_amountOutReal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "20709:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1792, + "name": "_wNativeWithdrawAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3761, + "src": "20677:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20677:47:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1796, + "nodeType": "ExpressionStatement", + "src": "20677:47:5" + } + ] + }, + "documentation": { + "id": 1667, + "nodeType": "StructuredDocumentation", + "src": "19163:404:5", + "text": " @notice Swaps tokens for exact NATIVE while performing safety checks\n @param amountNATIVEOut The amount of NATIVE to receive\n @param amountInMax The max amount of token to send\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountsIn path amounts for every step of the swap" + }, + "functionSelector": "3dc8f8ec", + "id": 1798, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1682, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1678, + "src": "19779:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1683, + "kind": "modifierInvocation", + "modifierName": { + "id": 1681, + "name": "ensure", + "nameLocations": [ + "19772:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "19772:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "19772:16:5" + }, + { + "arguments": [ + { + "id": 1685, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "19808:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 1686, + "kind": "modifierInvocation", + "modifierName": { + "id": 1684, + "name": "verifyPathValidity", + "nameLocations": [ + "19789:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "19789:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "19789:24:5" + } + ], + "name": "swapTokensForExactNATIVE", + "nameLocation": "19581:24:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1680, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "19763:8:5" + }, + "parameters": { + "id": 1679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1669, + "mutability": "mutable", + "name": "amountNATIVEOut", + "nameLocation": "19623:15:5", + "nodeType": "VariableDeclaration", + "scope": 1798, + "src": "19615:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19615:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1671, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "19656:11:5", + "nodeType": "VariableDeclaration", + "scope": 1798, + "src": "19648:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1670, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19648:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1674, + "mutability": "mutable", + "name": "path", + "nameLocation": "19689:4:5", + "nodeType": "VariableDeclaration", + "scope": 1798, + "src": "19677:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 1673, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1672, + "name": "Path", + "nameLocations": [ + "19677:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "19677:4:5" + }, + "referencedDeclaration": 6372, + "src": "19677:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1676, + "mutability": "mutable", + "name": "to", + "nameLocation": "19719:2:5", + "nodeType": "VariableDeclaration", + "scope": 1798, + "src": "19703:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19703:15:5", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1678, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "19739:8:5", + "nodeType": "VariableDeclaration", + "scope": 1798, + "src": "19731:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19731:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19605:148:5" + }, + "returnParameters": { + "id": 1690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1689, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "19840:9:5", + "nodeType": "VariableDeclaration", + "scope": 1798, + "src": "19823:26:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19823:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1688, + "nodeType": "ArrayTypeName", + "src": "19823:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "19822:28:5" + }, + "scope": 3762, + "src": "19572:1159:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6648 + ], + "body": { + "id": 1928, + "nodeType": "Block", + "src": "21413:780:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 1821, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21427:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1822, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21432:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "21427:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1824, + "indexExpression": { + "hexValue": "30", + "id": 1823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21442:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21427:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 1826, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "21455:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 1825, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "21448:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21448:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "21427:37:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1839, + "nodeType": "IfStatement", + "src": "21423:104:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1832, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21508:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1833, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21513:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "21508:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1835, + "indexExpression": { + "hexValue": "30", + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21523:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21508:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21500:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21500:7:5", + "typeDescriptions": {} + } + }, + "id": 1836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21500:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1829, + "name": "LBRouter__InvalidTokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6302, + "src": "21473:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21473:54:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1838, + "nodeType": "RevertStatement", + "src": "21466:61:5" + } + }, + { + "assignments": [ + 1844 + ], + "declarations": [ + { + "constant": false, + "id": 1844, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "21555:5:5", + "nodeType": "VariableDeclaration", + "scope": 1928, + "src": "21538:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1842, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21538:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1843, + "nodeType": "ArrayTypeName", + "src": "21538:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 1853, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1846, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21573:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21578:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "21573:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 1848, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21592:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1849, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21597:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "21592:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1850, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21607:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1851, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21612:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "21607:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 1845, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "21563:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21563:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21538:84:5" + }, + { + "expression": { + "id": 1863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1854, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "21632:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 1856, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21658:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21663:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "21658:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "id": 1858, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1844, + "src": "21673:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1859, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21680:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1860, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21685:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "21680:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1861, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "21696:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1855, + "name": "_getAmountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "21644:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (enum ILBRouter.Version[] memory,address[] memory,contract IERC20[] memory,uint256) view returns (uint256[] memory)" + } + }, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21644:62:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "21632:74:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1864, + "nodeType": "ExpressionStatement", + "src": "21632:74:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1865, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "21721:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1867, + "indexExpression": { + "hexValue": "30", + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21731:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21721:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 1868, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "21736:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21740:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "21736:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21721:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1879, + "nodeType": "IfStatement", + "src": "21717:91:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 1872, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "21784:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21788:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "21784:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 1874, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "21795:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1876, + "indexExpression": { + "hexValue": "30", + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21805:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21795:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1871, + "name": "LBRouter__MaxAmountInExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6298, + "src": "21754:29:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21754:54:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1878, + "nodeType": "RevertStatement", + "src": "21747:61:5" + } + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 1881, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1844, + "src": "21846:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1883, + "indexExpression": { + "hexValue": "30", + "id": 1882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21852:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21846:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1884, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "21856:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1886, + "indexExpression": { + "hexValue": "30", + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21866:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21856:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1880, + "name": "_wNativeDepositAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3736, + "src": "21819:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21819:50:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1888, + "nodeType": "ExpressionStatement", + "src": "21819:50:5" + }, + { + "assignments": [ + 1890 + ], + "declarations": [ + { + "constant": false, + "id": 1890, + "mutability": "mutable", + "name": "amountOutReal", + "nameLocation": "21888:13:5", + "nodeType": "VariableDeclaration", + "scope": 1928, + "src": "21880:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1889, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21880:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1900, + "initialValue": { + "arguments": [ + { + "id": 1892, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1844, + "src": "21930:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1893, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21937:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1894, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21942:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "21937:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1895, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21952:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1896, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21957:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "21952:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 1897, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "21968:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 1898, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1806, + "src": "21979:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1891, + "name": "_swapTokensForExactTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3246, + "src": "21904:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,uint256[] memory,address) returns (uint256)" + } + }, + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21904:78:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21880:102:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1901, + "name": "amountOutReal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1890, + "src": "21997:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1902, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "22013:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21997:25:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1909, + "nodeType": "IfStatement", + "src": "21993:95:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 1905, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "22063:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1906, + "name": "amountOutReal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1890, + "src": "22074:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1904, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "22031:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22031:57:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1908, + "nodeType": "RevertStatement", + "src": "22024:64:5" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1910, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "22103:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22107:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22103:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "baseExpression": { + "id": 1912, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "22115:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1914, + "indexExpression": { + "hexValue": "30", + "id": 1913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22125:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22115:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22103:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1927, + "nodeType": "IfStatement", + "src": "22099:87:5", + "trueBody": { + "expression": { + "arguments": [ + { + "expression": { + "id": 1917, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "22149:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22153:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "22149:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1919, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "22161:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22165:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22161:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "baseExpression": { + "id": 1921, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1819, + "src": "22173:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1923, + "indexExpression": { + "hexValue": "30", + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22183:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22173:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22161:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1916, + "name": "_safeTransferNative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3707, + "src": "22129:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22129:57:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1926, + "nodeType": "ExpressionStatement", + "src": "22129:57:5" + } + } + ] + }, + "documentation": { + "id": 1799, + "nodeType": "StructuredDocumentation", + "src": "20737:413:5", + "text": " @notice Swaps NATIVE for exact tokens while performing safety checks\n @dev Will refund any NATIVE amount sent in excess to `msg.sender`\n @param amountOut The amount of tokens to receive\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountsIn path amounts for every step of the swap" + }, + "functionSelector": "2075ad22", + "id": 1929, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1812, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1808, + "src": "21321:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1813, + "kind": "modifierInvocation", + "modifierName": { + "id": 1811, + "name": "ensure", + "nameLocations": [ + "21314:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "21314:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "21314:16:5" + }, + { + "arguments": [ + { + "id": 1815, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "21358:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 1816, + "kind": "modifierInvocation", + "modifierName": { + "id": 1814, + "name": "verifyPathValidity", + "nameLocations": [ + "21339:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "21339:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "21339:24:5" + } + ], + "name": "swapNATIVEForExactTokens", + "nameLocation": "21164:24:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1810, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "21297:8:5" + }, + "parameters": { + "id": 1809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1801, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "21197:9:5", + "nodeType": "VariableDeclaration", + "scope": 1929, + "src": "21189:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1800, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21189:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1804, + "mutability": "mutable", + "name": "path", + "nameLocation": "21220:4:5", + "nodeType": "VariableDeclaration", + "scope": 1929, + "src": "21208:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 1803, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1802, + "name": "Path", + "nameLocations": [ + "21208:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "21208:4:5" + }, + "referencedDeclaration": 6372, + "src": "21208:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1806, + "mutability": "mutable", + "name": "to", + "nameLocation": "21234:2:5", + "nodeType": "VariableDeclaration", + "scope": 1929, + "src": "21226:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21226:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1808, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "21246:8:5", + "nodeType": "VariableDeclaration", + "scope": 1929, + "src": "21238:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21238:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21188:67:5" + }, + "returnParameters": { + "id": 1820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1819, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "21398:9:5", + "nodeType": "VariableDeclaration", + "scope": 1929, + "src": "21381:26:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21381:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1818, + "nodeType": "ArrayTypeName", + "src": "21381:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "21380:28:5" + }, + "scope": 3762, + "src": "21155:1038:5", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6664 + ], + "body": { + "id": 2023, + "nodeType": "Block", + "src": "22910:554:5", + "statements": [ + { + "assignments": [ + 1957 + ], + "declarations": [ + { + "constant": false, + "id": 1957, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "22937:5:5", + "nodeType": "VariableDeclaration", + "scope": 2023, + "src": "22920:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1955, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22920:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1956, + "nodeType": "ArrayTypeName", + "src": "22920:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 1966, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1959, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "22955:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1960, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22960:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "22955:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 1961, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "22974:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1962, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22979:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "22974:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 1963, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "22989:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1964, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22994:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "22989:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 1958, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "22945:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22945:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22920:84:5" + }, + { + "assignments": [ + 1969 + ], + "declarations": [ + { + "constant": false, + "id": 1969, + "mutability": "mutable", + "name": "targetToken", + "nameLocation": "23022:11:5", + "nodeType": "VariableDeclaration", + "scope": 2023, + "src": "23015:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1968, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1967, + "name": "IERC20", + "nameLocations": [ + "23015:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "23015:6:5" + }, + "referencedDeclaration": 479, + "src": "23015:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 1975, + "initialValue": { + "baseExpression": { + "expression": { + "id": 1970, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "23036:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1971, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23041:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "23036:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1974, + "indexExpression": { + "expression": { + "id": 1972, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "23051:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23057:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "23051:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23036:28:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23015:49:5" + }, + { + "assignments": [ + 1977 + ], + "declarations": [ + { + "constant": false, + "id": 1977, + "mutability": "mutable", + "name": "balanceBefore", + "nameLocation": "23083:13:5", + "nodeType": "VariableDeclaration", + "scope": 2023, + "src": "23075:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23075:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1982, + "initialValue": { + "arguments": [ + { + "id": 1980, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1939, + "src": "23121:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1978, + "name": "targetToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "23099:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 1979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23111:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "23099:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23099:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23075:49:5" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 1984, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "23153:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1985, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23158:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "23153:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 1987, + "indexExpression": { + "hexValue": "30", + "id": 1986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23168:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23153:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 1988, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "23172:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23176:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23172:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1990, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "23184:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1992, + "indexExpression": { + "hexValue": "30", + "id": 1991, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23190:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23184:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1993, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1932, + "src": "23194:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1983, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "23135:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23135:68:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1995, + "nodeType": "ExpressionStatement", + "src": "23135:68:5" + }, + { + "expression": { + "arguments": [ + { + "id": 1997, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "23249:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 1998, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "23256:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23261:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "23256:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 2000, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "23271:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2001, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23276:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "23271:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 2002, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1939, + "src": "23287:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1996, + "name": "_swapSupportingFeeOnTransferTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "23214:34:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address)" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23214:76:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2004, + "nodeType": "ExpressionStatement", + "src": "23214:76:5" + }, + { + "expression": { + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2005, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1951, + "src": "23301:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2008, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1939, + "src": "23335:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2006, + "name": "targetToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "23313:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23325:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "23313:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23313:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2010, + "name": "balanceBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "23341:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23313:41:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23301:53:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2013, + "nodeType": "ExpressionStatement", + "src": "23301:53:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2014, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "23368:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2015, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1951, + "src": "23383:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23368:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2022, + "nodeType": "IfStatement", + "src": "23364:93:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 2018, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "23433:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2019, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1951, + "src": "23447:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2017, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "23401:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23401:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2021, + "nodeType": "RevertStatement", + "src": "23394:63:5" + } + } + ] + }, + "documentation": { + "id": 1930, + "nodeType": "StructuredDocumentation", + "src": "22199:421:5", + "text": " @notice Swaps exact tokens for tokens while performing safety checks supporting for fee on transfer tokens\n @param amountIn The amount of token to send\n @param amountOutMin The min amount of token to receive\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountOut Output amount of the swap" + }, + "functionSelector": "4b801870", + "id": 2024, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 1945, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1941, + "src": "22847:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1946, + "kind": "modifierInvocation", + "modifierName": { + "id": 1944, + "name": "ensure", + "nameLocations": [ + "22840:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "22840:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "22840:16:5" + }, + { + "arguments": [ + { + "id": 1948, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1937, + "src": "22876:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 1949, + "kind": "modifierInvocation", + "modifierName": { + "id": 1947, + "name": "verifyPathValidity", + "nameLocations": [ + "22857:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "22857:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "22857:24:5" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nameLocation": "22634:53:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1943, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "22831:8:5" + }, + "parameters": { + "id": 1942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1932, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "22705:8:5", + "nodeType": "VariableDeclaration", + "scope": 2024, + "src": "22697:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22697:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1934, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "22731:12:5", + "nodeType": "VariableDeclaration", + "scope": 2024, + "src": "22723:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1933, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22723:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1937, + "mutability": "mutable", + "name": "path", + "nameLocation": "22765:4:5", + "nodeType": "VariableDeclaration", + "scope": 2024, + "src": "22753:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 1936, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1935, + "name": "Path", + "nameLocations": [ + "22753:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "22753:4:5" + }, + "referencedDeclaration": 6372, + "src": "22753:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1939, + "mutability": "mutable", + "name": "to", + "nameLocation": "22787:2:5", + "nodeType": "VariableDeclaration", + "scope": 2024, + "src": "22779:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22779:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1941, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "22807:8:5", + "nodeType": "VariableDeclaration", + "scope": 2024, + "src": "22799:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22799:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22687:134:5" + }, + "returnParameters": { + "id": 1952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1951, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "22899:9:5", + "nodeType": "VariableDeclaration", + "scope": 2024, + "src": "22891:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22891:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22890:19:5" + }, + "scope": 3762, + "src": "22625:839:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6680 + ], + "body": { + "id": 2147, + "nodeType": "Block", + "src": "24202:771:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 2048, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24216:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24221:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "24216:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2053, + "indexExpression": { + "expression": { + "expression": { + "id": 2050, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24231:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2051, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24236:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "24231:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24249:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "24231:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24216:40:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 2055, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "24267:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 2054, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "24260:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24260:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "24216:60:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2071, + "nodeType": "IfStatement", + "src": "24212:175:5", + "trueBody": { + "id": 2070, + "nodeType": "Block", + "src": "24278:109:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 2061, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24334:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2062, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24339:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "24334:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2066, + "indexExpression": { + "expression": { + "expression": { + "id": 2063, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24349:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2064, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24354:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "24349:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24367:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "24349:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24334:40:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 2060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24326:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24326:7:5", + "typeDescriptions": {} + } + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24326:49:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2058, + "name": "LBRouter__InvalidTokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6302, + "src": "24299:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24299:77:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2069, + "nodeType": "RevertStatement", + "src": "24292:84:5" + } + ] + } + }, + { + "assignments": [ + 2076 + ], + "declarations": [ + { + "constant": false, + "id": 2076, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "24414:5:5", + "nodeType": "VariableDeclaration", + "scope": 2147, + "src": "24397:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24397:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2075, + "nodeType": "ArrayTypeName", + "src": "24397:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 2085, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2078, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24432:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2079, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24437:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "24432:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 2080, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24451:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2081, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24456:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "24451:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 2082, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24466:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2083, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24471:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "24466:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 2077, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "24422:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 2084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24422:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24397:84:5" + }, + { + "assignments": [ + 2087 + ], + "declarations": [ + { + "constant": false, + "id": 2087, + "mutability": "mutable", + "name": "balanceBefore", + "nameLocation": "24500:13:5", + "nodeType": "VariableDeclaration", + "scope": 2147, + "src": "24492:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24492:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2095, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2092, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "24543:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 2091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24535:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24535:7:5", + "typeDescriptions": {} + } + }, + "id": 2093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24535:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2088, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "24516:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24525:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "24516:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24516:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24492:57:5" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 2097, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24578:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24583:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "24578:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2100, + "indexExpression": { + "hexValue": "30", + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24593:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24578:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 2101, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "24597:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24601:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24597:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 2103, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "24609:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2105, + "indexExpression": { + "hexValue": "30", + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24615:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24609:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2106, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2027, + "src": "24619:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2096, + "name": "_safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "24560:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24560:68:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2108, + "nodeType": "ExpressionStatement", + "src": "24560:68:5" + }, + { + "expression": { + "arguments": [ + { + "id": 2110, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "24674:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 2111, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24681:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2112, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24686:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "24681:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 2113, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24696:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24701:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "24696:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "arguments": [ + { + "id": 2117, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "24720:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 2116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24712:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24712:7:5", + "typeDescriptions": {} + } + }, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24712:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2109, + "name": "_swapSupportingFeeOnTransferTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "24639:34:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address)" + } + }, + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24639:87:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2120, + "nodeType": "ExpressionStatement", + "src": "24639:87:5" + }, + { + "expression": { + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2121, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "24737:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2126, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "24776:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 2125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24768:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24768:7:5", + "typeDescriptions": {} + } + }, + "id": 2127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24768:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2122, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "24749:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24758:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "24749:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24749:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2129, + "name": "balanceBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "24785:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24749:49:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24737:61:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2132, + "nodeType": "ExpressionStatement", + "src": "24737:61:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2133, + "name": "amountOutMinNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "24812:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2134, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "24833:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24812:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2141, + "nodeType": "IfStatement", + "src": "24808:105:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 2137, + "name": "amountOutMinNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "24883:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2138, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "24903:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2136, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "24851:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24851:62:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2140, + "nodeType": "RevertStatement", + "src": "24844:69:5" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2143, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2034, + "src": "24952:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2144, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "24956:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2142, + "name": "_wNativeWithdrawAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3761, + "src": "24924:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24924:42:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2146, + "nodeType": "ExpressionStatement", + "src": "24924:42:5" + } + ] + }, + "documentation": { + "id": 2025, + "nodeType": "StructuredDocumentation", + "src": "23470:428:5", + "text": " @notice Swaps exact tokens for NATIVE while performing safety checks supporting for fee on transfer tokens\n @param amountIn The amount of token to send\n @param amountOutMinNATIVE The min amount of NATIVE to receive\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountOut Output amount of the swap" + }, + "functionSelector": "1a24f9a9", + "id": 2148, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 2040, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2036, + "src": "24139:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2041, + "kind": "modifierInvocation", + "modifierName": { + "id": 2039, + "name": "ensure", + "nameLocations": [ + "24132:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "24132:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "24132:16:5" + }, + { + "arguments": [ + { + "id": 2043, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "24168:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 2044, + "kind": "modifierInvocation", + "modifierName": { + "id": 2042, + "name": "verifyPathValidity", + "nameLocations": [ + "24149:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "24149:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "24149:24:5" + } + ], + "name": "swapExactTokensForNATIVESupportingFeeOnTransferTokens", + "nameLocation": "23912:53:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2038, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "24123:8:5" + }, + "parameters": { + "id": 2037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2027, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "23983:8:5", + "nodeType": "VariableDeclaration", + "scope": 2148, + "src": "23975:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2029, + "mutability": "mutable", + "name": "amountOutMinNATIVE", + "nameLocation": "24009:18:5", + "nodeType": "VariableDeclaration", + "scope": 2148, + "src": "24001:26:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2028, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24001:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2032, + "mutability": "mutable", + "name": "path", + "nameLocation": "24049:4:5", + "nodeType": "VariableDeclaration", + "scope": 2148, + "src": "24037:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 2031, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2030, + "name": "Path", + "nameLocations": [ + "24037:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "24037:4:5" + }, + "referencedDeclaration": 6372, + "src": "24037:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2034, + "mutability": "mutable", + "name": "to", + "nameLocation": "24079:2:5", + "nodeType": "VariableDeclaration", + "scope": 2148, + "src": "24063:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 2033, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24063:15:5", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2036, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "24099:8:5", + "nodeType": "VariableDeclaration", + "scope": 2148, + "src": "24091:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24091:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23965:148:5" + }, + "returnParameters": { + "id": 2047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2046, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "24191:9:5", + "nodeType": "VariableDeclaration", + "scope": 2148, + "src": "24183:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24183:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24182:19:5" + }, + "scope": 3762, + "src": "23903:1070:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6694 + ], + "body": { + "id": 2254, + "nodeType": "Block", + "src": "25621:648:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 2177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 2170, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "25635:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2171, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25640:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "25635:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2173, + "indexExpression": { + "hexValue": "30", + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25650:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25635:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 2175, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "25663:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 2174, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "25656:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25656:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "25635:37:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2188, + "nodeType": "IfStatement", + "src": "25631:104:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 2181, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "25716:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25721:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "25716:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2184, + "indexExpression": { + "hexValue": "30", + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25731:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25716:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25708:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2179, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25708:7:5", + "typeDescriptions": {} + } + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25708:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2178, + "name": "LBRouter__InvalidTokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6302, + "src": "25681:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25681:54:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2187, + "nodeType": "RevertStatement", + "src": "25674:61:5" + } + }, + { + "assignments": [ + 2193 + ], + "declarations": [ + { + "constant": false, + "id": 2193, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "25763:5:5", + "nodeType": "VariableDeclaration", + "scope": 2254, + "src": "25746:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25746:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2192, + "nodeType": "ArrayTypeName", + "src": "25746:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 2202, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2195, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "25781:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2196, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25786:12:5", + "memberName": "pairBinSteps", + "nodeType": "MemberAccess", + "referencedDeclaration": 6363, + "src": "25781:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "expression": { + "id": 2197, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "25800:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25805:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "25800:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 2199, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "25815:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2200, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25820:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "25815:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + ], + "id": 2194, + "name": "_getPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "25771:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory) view returns (address[] memory)" + } + }, + "id": 2201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25771:59:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25746:84:5" + }, + { + "assignments": [ + 2205 + ], + "declarations": [ + { + "constant": false, + "id": 2205, + "mutability": "mutable", + "name": "targetToken", + "nameLocation": "25848:11:5", + "nodeType": "VariableDeclaration", + "scope": 2254, + "src": "25841:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 2204, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2203, + "name": "IERC20", + "nameLocations": [ + "25841:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "25841:6:5" + }, + "referencedDeclaration": 479, + "src": "25841:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 2211, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2206, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "25862:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25867:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "25862:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2210, + "indexExpression": { + "expression": { + "id": 2208, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2193, + "src": "25877:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25883:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "25877:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25862:28:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25841:49:5" + }, + { + "assignments": [ + 2213 + ], + "declarations": [ + { + "constant": false, + "id": 2213, + "mutability": "mutable", + "name": "balanceBefore", + "nameLocation": "25909:13:5", + "nodeType": "VariableDeclaration", + "scope": 2254, + "src": "25901:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25901:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2218, + "initialValue": { + "arguments": [ + { + "id": 2216, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "25947:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2214, + "name": "targetToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2205, + "src": "25925:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25937:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "25925:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25925:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25901:49:5" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2220, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2193, + "src": "25988:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2222, + "indexExpression": { + "hexValue": "30", + "id": 2221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25994:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "25988:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 2223, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "25998:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26002:5:5", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "25998:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2219, + "name": "_wNativeDepositAndTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3736, + "src": "25961:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25961:47:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2226, + "nodeType": "ExpressionStatement", + "src": "25961:47:5" + }, + { + "expression": { + "arguments": [ + { + "id": 2228, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2193, + "src": "26054:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 2229, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "26061:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2230, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26066:8:5", + "memberName": "versions", + "nodeType": "MemberAccess", + "referencedDeclaration": 6367, + "src": "26061:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + { + "expression": { + "id": 2231, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "26076:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + }, + "id": 2232, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26081:9:5", + "memberName": "tokenPath", + "nodeType": "MemberAccess", + "referencedDeclaration": 6371, + "src": "26076:14:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + { + "id": 2233, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "26092:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + }, + { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2227, + "name": "_swapSupportingFeeOnTransferTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "26019:34:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_enum$_Version_$6322_$dyn_memory_ptr_$_t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr_$_t_address_$returns$__$", + "typeString": "function (address[] memory,enum ILBRouter.Version[] memory,contract IERC20[] memory,address)" + } + }, + "id": 2234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26019:76:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2235, + "nodeType": "ExpressionStatement", + "src": "26019:76:5" + }, + { + "expression": { + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2236, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "26106:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2239, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "26140:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2237, + "name": "targetToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2205, + "src": "26118:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26130:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "26118:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26118:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2241, + "name": "balanceBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2213, + "src": "26146:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26118:41:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26106:53:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2244, + "nodeType": "ExpressionStatement", + "src": "26106:53:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2245, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2151, + "src": "26173:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2246, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "26188:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26173:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2253, + "nodeType": "IfStatement", + "src": "26169:93:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 2249, + "name": "amountOutMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2151, + "src": "26238:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2250, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "26252:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2248, + "name": "LBRouter__InsufficientAmountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6292, + "src": "26206:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 2251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26206:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2252, + "nodeType": "RevertStatement", + "src": "26199:63:5" + } + } + ] + }, + "documentation": { + "id": 2149, + "nodeType": "StructuredDocumentation", + "src": "24979:370:5", + "text": " @notice Swaps exact NATIVE for tokens while performing safety checks supporting for fee on transfer tokens\n @param amountOutMin The min amount of token to receive\n @param path The path of the swap\n @param to The address of the recipient\n @param deadline The deadline of the tx\n @return amountOut Output amount of the swap" + }, + "functionSelector": "e038e6dc", + "id": 2255, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 2162, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2158, + "src": "25558:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2163, + "kind": "modifierInvocation", + "modifierName": { + "id": 2161, + "name": "ensure", + "nameLocations": [ + "25551:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "25551:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "25551:16:5" + }, + { + "arguments": [ + { + "id": 2165, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2154, + "src": "25587:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path memory" + } + } + ], + "id": 2166, + "kind": "modifierInvocation", + "modifierName": { + "id": 2164, + "name": "verifyPathValidity", + "nameLocations": [ + "25568:18:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 663, + "src": "25568:18:5" + }, + "nodeType": "ModifierInvocation", + "src": "25568:24:5" + } + ], + "name": "swapExactNATIVEForTokensSupportingFeeOnTransferTokens", + "nameLocation": "25363:53:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2160, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "25542:8:5" + }, + "parameters": { + "id": 2159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2151, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "25434:12:5", + "nodeType": "VariableDeclaration", + "scope": 2255, + "src": "25426:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2150, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25426:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2154, + "mutability": "mutable", + "name": "path", + "nameLocation": "25468:4:5", + "nodeType": "VariableDeclaration", + "scope": 2255, + "src": "25456:16:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 2153, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2152, + "name": "Path", + "nameLocations": [ + "25456:4:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "25456:4:5" + }, + "referencedDeclaration": 6372, + "src": "25456:4:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2156, + "mutability": "mutable", + "name": "to", + "nameLocation": "25490:2:5", + "nodeType": "VariableDeclaration", + "scope": 2255, + "src": "25482:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25482:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2158, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "25510:8:5", + "nodeType": "VariableDeclaration", + "scope": 2255, + "src": "25502:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25502:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25416:108:5" + }, + "returnParameters": { + "id": 2169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2168, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "25610:9:5", + "nodeType": "VariableDeclaration", + "scope": 2255, + "src": "25602:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25602:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25601:19:5" + }, + "scope": 3762, + "src": "25354:915:5", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6704 + ], + "body": { + "id": 2329, + "nodeType": "Block", + "src": "26652:344:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2271, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "26674:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26666:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26666:7:5", + "typeDescriptions": {} + } + }, + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26666:14:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26692:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26684:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2273, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26684:7:5", + "typeDescriptions": {} + } + }, + "id": 2276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26684:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "26666:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2327, + "nodeType": "Block", + "src": "26842:148:5", + "statements": [ + { + "expression": { + "id": 2318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2301, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26856:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2302, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26865:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26880:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2304, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26880:7:5", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2303, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "26875:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26875:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "26889:3:5", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "26875:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26865:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 2316, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26928:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "26865:69:5", + "trueExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2313, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "26919:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26911:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26911:7:5", + "typeDescriptions": {} + } + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26911:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2309, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "26895:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26901:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "26895:15:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26895:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26856:78:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2319, + "nodeType": "ExpressionStatement", + "src": "26856:78:5" + }, + { + "expression": { + "arguments": [ + { + "id": 2323, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2261, + "src": "26968:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2324, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26972:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2320, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "26949:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26955:12:5", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10542, + "src": "26949:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26949:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2326, + "nodeType": "ExpressionStatement", + "src": "26949:30:5" + } + ] + }, + "id": 2328, + "nodeType": "IfStatement", + "src": "26662:328:5", + "trueBody": { + "id": 2300, + "nodeType": "Block", + "src": "26696:140:5", + "statements": [ + { + "expression": { + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2278, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26710:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2279, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26719:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26734:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2281, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26734:7:5", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2280, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "26729:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26729:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "26743:3:5", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "26729:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26719:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 2291, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26773:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "26719:60:5", + "trueExpression": { + "expression": { + "arguments": [ + { + "id": 2288, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "26757:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26749:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26749:7:5", + "typeDescriptions": {} + } + }, + "id": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26749:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26763:7:5", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "26749:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26710:69:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2294, + "nodeType": "ExpressionStatement", + "src": "26710:69:5" + }, + { + "expression": { + "arguments": [ + { + "id": 2296, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2261, + "src": "26814:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2297, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "26818:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2295, + "name": "_safeTransferNative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3707, + "src": "26794:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26794:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2299, + "nodeType": "ExpressionStatement", + "src": "26794:31:5" + } + ] + } + } + ] + }, + "documentation": { + "id": 2256, + "nodeType": "StructuredDocumentation", + "src": "26275:280:5", + "text": " @notice Unstuck tokens that are sent to this contract by mistake\n @dev Only callable by the factory owner\n @param token The address of the token\n @param to The address of the user to send back the tokens\n @param amount The amount to send" + }, + "functionSelector": "62c06767", + "id": 2330, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2267, + "kind": "modifierInvocation", + "modifierName": { + "id": 2266, + "name": "onlyFactoryOwner", + "nameLocations": [ + "26635:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 612, + "src": "26635:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "26635:16:5" + } + ], + "name": "sweep", + "nameLocation": "26569:5:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2265, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "26626:8:5" + }, + "parameters": { + "id": 2264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2259, + "mutability": "mutable", + "name": "token", + "nameLocation": "26582:5:5", + "nodeType": "VariableDeclaration", + "scope": 2330, + "src": "26575:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 2258, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2257, + "name": "IERC20", + "nameLocations": [ + "26575:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "26575:6:5" + }, + "referencedDeclaration": 479, + "src": "26575:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2261, + "mutability": "mutable", + "name": "to", + "nameLocation": "26597:2:5", + "nodeType": "VariableDeclaration", + "scope": 2330, + "src": "26589:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26589:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2263, + "mutability": "mutable", + "name": "amount", + "nameLocation": "26609:6:5", + "nodeType": "VariableDeclaration", + "scope": 2330, + "src": "26601:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26601:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26574:42:5" + }, + "returnParameters": { + "id": 2268, + "nodeType": "ParameterList", + "parameters": [], + "src": "26652:0:5" + }, + "scope": 3762, + "src": "26560:436:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 6718 + ], + "body": { + "id": 2360, + "nodeType": "Block", + "src": "27510:75:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2353, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "27554:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LBRouter_$3762", + "typeString": "contract LBRouter" + } + ], + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27546:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27546:7:5", + "typeDescriptions": {} + } + }, + "id": 2354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27546:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2355, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2336, + "src": "27561:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2356, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2339, + "src": "27565:3:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 2357, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2342, + "src": "27570:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 2348, + "name": "lbToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "27520:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBToken_$6842", + "typeString": "contract ILBToken" + } + }, + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27528:17:5", + "memberName": "batchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 6841, + "src": "27520:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory) external" + } + }, + "id": 2358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27520:58:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2359, + "nodeType": "ExpressionStatement", + "src": "27520:58:5" + } + ] + }, + "documentation": { + "id": 2331, + "nodeType": "StructuredDocumentation", + "src": "27002:336:5", + "text": " @notice Unstuck LBTokens that are sent to this contract by mistake\n @dev Only callable by the factory owner\n @param lbToken The address of the LBToken\n @param to The address of the user to send back the tokens\n @param ids The list of token ids\n @param amounts The list of amounts to send" + }, + "functionSelector": "e9361c08", + "id": 2361, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2346, + "kind": "modifierInvocation", + "modifierName": { + "id": 2345, + "name": "onlyFactoryOwner", + "nameLocations": [ + "27489:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 612, + "src": "27489:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "27489:16:5" + } + ], + "name": "sweepLBToken", + "nameLocation": "27352:12:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2344, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "27472:8:5" + }, + "parameters": { + "id": 2343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2334, + "mutability": "mutable", + "name": "lbToken", + "nameLocation": "27374:7:5", + "nodeType": "VariableDeclaration", + "scope": 2361, + "src": "27365:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBToken_$6842", + "typeString": "contract ILBToken" + }, + "typeName": { + "id": 2333, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2332, + "name": "ILBToken", + "nameLocations": [ + "27365:8:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6842, + "src": "27365:8:5" + }, + "referencedDeclaration": 6842, + "src": "27365:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBToken_$6842", + "typeString": "contract ILBToken" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2336, + "mutability": "mutable", + "name": "to", + "nameLocation": "27391:2:5", + "nodeType": "VariableDeclaration", + "scope": 2361, + "src": "27383:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27383:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2339, + "mutability": "mutable", + "name": "ids", + "nameLocation": "27414:3:5", + "nodeType": "VariableDeclaration", + "scope": 2361, + "src": "27395:22:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2337, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27395:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2338, + "nodeType": "ArrayTypeName", + "src": "27395:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2342, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "27438:7:5", + "nodeType": "VariableDeclaration", + "scope": 2361, + "src": "27419:26:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27419:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2341, + "nodeType": "ArrayTypeName", + "src": "27419:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "27364:82:5" + }, + "returnParameters": { + "id": 2347, + "nodeType": "ParameterList", + "parameters": [], + "src": "27510:0:5" + }, + "scope": 3762, + "src": "27343:242:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2643, + "nodeType": "Block", + "src": "28434:2121:5", + "statements": [ + { + "id": 2642, + "nodeType": "UncheckedBlock", + "src": "28444:2105:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2389, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28472:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28476:8:5", + "memberName": "deltaIds", + "nodeType": "MemberAccess", + "referencedDeclaration": 6346, + "src": "28472:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_calldata_ptr", + "typeString": "int256[] calldata" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28485:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "28472:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 2392, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28495:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28499:13:5", + "memberName": "distributionX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6349, + "src": "28495:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28513:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "28495:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28472:47:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2396, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28523:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28527:8:5", + "memberName": "deltaIds", + "nodeType": "MemberAccess", + "referencedDeclaration": 6346, + "src": "28523:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_calldata_ptr", + "typeString": "int256[] calldata" + } + }, + "id": 2398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28536:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "28523:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 2399, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28546:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28550:13:5", + "memberName": "distributionY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6352, + "src": "28546:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28564:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "28546:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28523:47:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28472:98:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2408, + "nodeType": "IfStatement", + "src": "28468:171:5", + "trueBody": { + "id": 2407, + "nodeType": "Block", + "src": "28572:67:5", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2404, + "name": "LBRouter__LengthsMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6244, + "src": "28597:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28597:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2406, + "nodeType": "RevertStatement", + "src": "28590:34:5" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2409, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28657:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28661:15:5", + "memberName": "activeIdDesired", + "nodeType": "MemberAccess", + "referencedDeclaration": 6341, + "src": "28657:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28684:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 2412, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "28684:6:5", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + } + ], + "id": 2411, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "28679:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28679:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint24", + "typeString": "type(uint24)" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "28692:3:5", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "28679:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "28657:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2417, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28699:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28703:10:5", + "memberName": "idSlippage", + "nodeType": "MemberAccess", + "referencedDeclaration": 6343, + "src": "28699:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28721:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 2420, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "28721:6:5", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + } + ], + "id": 2419, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "28716:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28716:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint24", + "typeString": "type(uint24)" + } + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "28729:3:5", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "28716:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "28699:33:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28657:75:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2434, + "nodeType": "IfStatement", + "src": "28653:186:5", + "trueBody": { + "id": 2433, + "nodeType": "Block", + "src": "28734:105:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 2427, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28788:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28792:15:5", + "memberName": "activeIdDesired", + "nodeType": "MemberAccess", + "referencedDeclaration": 6341, + "src": "28788:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 2429, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28809:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28813:10:5", + "memberName": "idSlippage", + "nodeType": "MemberAccess", + "referencedDeclaration": 6343, + "src": "28809:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2426, + "name": "LBRouter__IdDesiredOverflows", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6270, + "src": "28759:28:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 2431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28759:65:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2432, + "nodeType": "RevertStatement", + "src": "28752:72:5" + } + ] + } + }, + { + "assignments": [ + 2439 + ], + "declarations": [ + { + "constant": false, + "id": 2439, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "28870:16:5", + "nodeType": "VariableDeclaration", + "scope": 2642, + "src": "28853:33:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "28853:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2438, + "nodeType": "ArrayTypeName", + "src": "28853:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 2447, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 2443, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28903:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28907:8:5", + "memberName": "deltaIds", + "nodeType": "MemberAccess", + "referencedDeclaration": 6346, + "src": "28903:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_calldata_ptr", + "typeString": "int256[] calldata" + } + }, + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28916:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "28903:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "28889:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes32[] memory)" + }, + "typeName": { + "baseType": { + "id": 2440, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "28893:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2441, + "nodeType": "ArrayTypeName", + "src": "28893:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + }, + "id": 2446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28889:34:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28853:70:5" + }, + { + "expression": { + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2448, + "name": "depositIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2384, + "src": "28937:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "expression": { + "id": 2452, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28964:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28968:8:5", + "memberName": "deltaIds", + "nodeType": "MemberAccess", + "referencedDeclaration": 6346, + "src": "28964:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_calldata_ptr", + "typeString": "int256[] calldata" + } + }, + "id": 2454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28977:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "28964:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "28950:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 2449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28954:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2450, + "nodeType": "ArrayTypeName", + "src": "28954:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28950:34:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "28937:47:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2457, + "nodeType": "ExpressionStatement", + "src": "28937:47:5" + }, + { + "id": 2570, + "nodeType": "Block", + "src": "28998:873:5", + "statements": [ + { + "assignments": [ + 2459 + ], + "declarations": [ + { + "constant": false, + "id": 2459, + "mutability": "mutable", + "name": "_activeId", + "nameLocation": "29024:9:5", + "nodeType": "VariableDeclaration", + "scope": 2570, + "src": "29016:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29016:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2463, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2460, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2368, + "src": "29036:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 2461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29041:11:5", + "memberName": "getActiveId", + "nodeType": "MemberAccess", + "referencedDeclaration": 5975, + "src": "29036:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint24_$", + "typeString": "function () view external returns (uint24)" + } + }, + "id": 2462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29036:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29016:38:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2464, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29097:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29101:15:5", + "memberName": "activeIdDesired", + "nodeType": "MemberAccess", + "referencedDeclaration": 6341, + "src": "29097:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 2466, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29119:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29123:10:5", + "memberName": "idSlippage", + "nodeType": "MemberAccess", + "referencedDeclaration": 6343, + "src": "29119:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29097:36:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2469, + "name": "_activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "29136:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29097:48:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2471, + "name": "_activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "29149:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 2472, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29161:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29165:10:5", + "memberName": "idSlippage", + "nodeType": "MemberAccess", + "referencedDeclaration": 6343, + "src": "29161:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29149:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2475, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29178:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29182:15:5", + "memberName": "activeIdDesired", + "nodeType": "MemberAccess", + "referencedDeclaration": 6341, + "src": "29178:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29149:48:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29097:100:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2488, + "nodeType": "IfStatement", + "src": "29072:266:5", + "trueBody": { + "id": 2487, + "nodeType": "Block", + "src": "29216:122:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 2480, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29272:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29276:15:5", + "memberName": "activeIdDesired", + "nodeType": "MemberAccess", + "referencedDeclaration": 6341, + "src": "29272:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 2482, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29293:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29297:10:5", + "memberName": "idSlippage", + "nodeType": "MemberAccess", + "referencedDeclaration": 6343, + "src": "29293:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2484, + "name": "_activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "29309:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2479, + "name": "LBRouter__IdSlippageCaught", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6254, + "src": "29245:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256) pure" + } + }, + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29245:74:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2486, + "nodeType": "RevertStatement", + "src": "29238:81:5" + } + ] + } + }, + { + "body": { + "id": 2568, + "nodeType": "Block", + "src": "29406:451:5", + "statements": [ + { + "assignments": [ + 2500 + ], + "declarations": [ + { + "constant": false, + "id": 2500, + "mutability": "mutable", + "name": "_id", + "nameLocation": "29435:3:5", + "nodeType": "VariableDeclaration", + "scope": 2568, + "src": "29428:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2499, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "29428:6:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 2510, + "initialValue": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2503, + "name": "_activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "29448:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29441:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 2501, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "29441:6:5", + "typeDescriptions": {} + } + }, + "id": 2504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29441:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "baseExpression": { + "expression": { + "id": 2505, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29461:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29465:8:5", + "memberName": "deltaIds", + "nodeType": "MemberAccess", + "referencedDeclaration": 6346, + "src": "29461:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_calldata_ptr", + "typeString": "int256[] calldata" + } + }, + "id": 2508, + "indexExpression": { + "id": 2507, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2490, + "src": "29474:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29461:15:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "29441:35:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29428:48:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2511, + "name": "_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "29503:3:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29509:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "29503:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2516, + "name": "_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "29522:3:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29514:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2514, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29514:7:5", + "typeDescriptions": {} + } + }, + "id": 2517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29514:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29534:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 2519, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "29534:6:5", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + } + ], + "id": 2518, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "29529:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29529:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint24", + "typeString": "type(uint24)" + } + }, + "id": 2522, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "29542:3:5", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "29529:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "29514:31:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29503:42:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2529, + "nodeType": "IfStatement", + "src": "29499:81:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 2526, + "name": "_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "29576:3:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 2525, + "name": "LBRouter__IdOverflows", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6242, + "src": "29554:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_int256_$returns$__$", + "typeString": "function (int256) pure" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29554:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2528, + "nodeType": "RevertStatement", + "src": "29547:33:5" + } + }, + { + "expression": { + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2530, + "name": "depositIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2384, + "src": "29602:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2532, + "indexExpression": { + "id": 2531, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2490, + "src": "29613:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "29602:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2535, + "name": "_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "29626:3:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 2534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29618:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29618:7:5", + "typeDescriptions": {} + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29618:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29602:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2538, + "nodeType": "ExpressionStatement", + "src": "29602:28:5" + }, + { + "expression": { + "id": 2566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2539, + "name": "liquidityConfigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "29652:16:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2541, + "indexExpression": { + "id": 2540, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2490, + "src": "29669:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "29652:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 2546, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29743:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29747:13:5", + "memberName": "distributionX", + "nodeType": "MemberAccess", + "referencedDeclaration": 6349, + "src": "29743:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2549, + "indexExpression": { + "id": 2548, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2490, + "src": "29761:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29743:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29736:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 2544, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "29736:6:5", + "typeDescriptions": {} + } + }, + "id": 2550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29736:28:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 2553, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "29773:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29777:13:5", + "memberName": "distributionY", + "nodeType": "MemberAccess", + "referencedDeclaration": 6352, + "src": "29773:17:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 2556, + "indexExpression": { + "id": 2555, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2490, + "src": "29791:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29773:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29766:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 2551, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "29766:6:5", + "typeDescriptions": {} + } + }, + "id": 2557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29766:28:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 2562, + "name": "_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "29811:3:5", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 2561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29803:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2560, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29803:7:5", + "typeDescriptions": {} + } + }, + "id": 2563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29803:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29796:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 2558, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "29796:6:5", + "typeDescriptions": {} + } + }, + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29796:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "id": 2542, + "name": "LiquidityConfigurations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11033, + "src": "29674:23:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LiquidityConfigurations_$11033_$", + "typeString": "type(library LiquidityConfigurations)" + } + }, + "id": 2543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29698:12:5", + "memberName": "encodeParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 10936, + "src": "29674:36:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (uint64,uint64,uint24) pure returns (bytes32)" + } + }, + "id": 2565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29674:164:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "29652:186:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2567, + "nodeType": "ExpressionStatement", + "src": "29652:186:5" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2492, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2490, + "src": "29372:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2493, + "name": "liquidityConfigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "29376:16:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29393:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "29376:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29372:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2569, + "initializationExpression": { + "assignments": [ + 2490 + ], + "declarations": [ + { + "constant": false, + "id": 2490, + "mutability": "mutable", + "name": "i", + "nameLocation": "29369:1:5", + "nodeType": "VariableDeclaration", + "scope": 2569, + "src": "29361:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29361:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2491, + "nodeType": "VariableDeclarationStatement", + "src": "29361:9:5" + }, + "loopExpression": { + "expression": { + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "29401:3:5", + "subExpression": { + "id": 2496, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2490, + "src": "29403:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2498, + "nodeType": "ExpressionStatement", + "src": "29401:3:5" + }, + "nodeType": "ForStatement", + "src": "29356:501:5" + } + ] + }, + { + "assignments": [ + 2572 + ], + "declarations": [ + { + "constant": false, + "id": 2572, + "mutability": "mutable", + "name": "amountsReceived", + "nameLocation": "29893:15:5", + "nodeType": "VariableDeclaration", + "scope": 2642, + "src": "29885:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2571, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29885:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2573, + "nodeType": "VariableDeclarationStatement", + "src": "29885:23:5" + }, + { + "assignments": [ + 2575 + ], + "declarations": [ + { + "constant": false, + "id": 2575, + "mutability": "mutable", + "name": "amountsLeft", + "nameLocation": "29930:11:5", + "nodeType": "VariableDeclaration", + "scope": 2642, + "src": "29922:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2574, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29922:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2576, + "nodeType": "VariableDeclarationStatement", + "src": "29922:19:5" + }, + { + "expression": { + "id": 2589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 2577, + "name": "amountsReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2572, + "src": "29956:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2578, + "name": "amountsLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2575, + "src": "29973:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2579, + "name": "liquidityMinted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2387, + "src": "29986:15:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 2580, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "29955:47:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(bytes32,bytes32,uint256[] memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 2583, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "30015:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30019:2:5", + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 6354, + "src": "30015:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2585, + "name": "liquidityConfigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2439, + "src": "30023:16:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "expression": { + "id": 2586, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "30041:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30045:8:5", + "memberName": "refundTo", + "nodeType": "MemberAccess", + "referencedDeclaration": 6356, + "src": "30041:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2581, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2368, + "src": "30005:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30010:4:5", + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 6133, + "src": "30005:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_address_$returns$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (address,bytes32[] memory,address) external returns (bytes32,bytes32,uint256[] memory)" + } + }, + "id": 2588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30005:49:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(bytes32,bytes32,uint256[] memory)" + } + }, + "src": "29955:99:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2590, + "nodeType": "ExpressionStatement", + "src": "29955:99:5" + }, + { + "assignments": [ + 2592 + ], + "declarations": [ + { + "constant": false, + "id": 2592, + "mutability": "mutable", + "name": "amountsAdded", + "nameLocation": "30077:12:5", + "nodeType": "VariableDeclaration", + "scope": 2642, + "src": "30069:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2591, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30069:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2597, + "initialValue": { + "arguments": [ + { + "id": 2595, + "name": "amountsLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2575, + "src": "30112:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 2593, + "name": "amountsReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2572, + "src": "30092:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30108:3:5", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 11252, + "src": "30092:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30092:32:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30069:55:5" + }, + { + "expression": { + "id": 2602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2598, + "name": "amountXAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2375, + "src": "30139:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2599, + "name": "amountsAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "30154:12:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30167:7:5", + "memberName": "decodeX", + "nodeType": "MemberAccess", + "referencedDeclaration": 11129, + "src": "30154:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30154:22:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "30139:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2603, + "nodeType": "ExpressionStatement", + "src": "30139:37:5" + }, + { + "expression": { + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2604, + "name": "amountYAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2377, + "src": "30190:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2605, + "name": "amountsAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "30205:12:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30218:7:5", + "memberName": "decodeY", + "nodeType": "MemberAccess", + "referencedDeclaration": 11139, + "src": "30205:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 2607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30205:22:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "30190:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2609, + "nodeType": "ExpressionStatement", + "src": "30190:37:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2610, + "name": "amountXAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2375, + "src": "30246:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2611, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "30261:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30265:10:5", + "memberName": "amountXMin", + "nodeType": "MemberAccess", + "referencedDeclaration": 6337, + "src": "30261:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30246:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2614, + "name": "amountYAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2377, + "src": "30279:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2615, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "30294:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30298:10:5", + "memberName": "amountYMin", + "nodeType": "MemberAccess", + "referencedDeclaration": 6339, + "src": "30294:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30279:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "30246:62:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2629, + "nodeType": "IfStatement", + "src": "30242:198:5", + "trueBody": { + "id": 2628, + "nodeType": "Block", + "src": "30310:130:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 2620, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "30366:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30370:10:5", + "memberName": "amountXMin", + "nodeType": "MemberAccess", + "referencedDeclaration": 6337, + "src": "30366:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2622, + "name": "amountXAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2375, + "src": "30382:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 2623, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "30396:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30400:10:5", + "memberName": "amountYMin", + "nodeType": "MemberAccess", + "referencedDeclaration": 6339, + "src": "30396:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2625, + "name": "amountYAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2377, + "src": "30412:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2619, + "name": "LBRouter__AmountSlippageCaught", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6264, + "src": "30335:30:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256,uint256) pure" + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30335:90:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2627, + "nodeType": "RevertStatement", + "src": "30328:97:5" + } + ] + } + }, + { + "expression": { + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2630, + "name": "amountXLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2379, + "src": "30454:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2631, + "name": "amountsLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2575, + "src": "30468:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30480:7:5", + "memberName": "decodeX", + "nodeType": "MemberAccess", + "referencedDeclaration": 11129, + "src": "30468:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 2633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30468:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "30454:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2635, + "nodeType": "ExpressionStatement", + "src": "30454:35:5" + }, + { + "expression": { + "id": 2640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2636, + "name": "amountYLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2381, + "src": "30503:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 2637, + "name": "amountsLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2575, + "src": "30517:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30529:7:5", + "memberName": "decodeY", + "nodeType": "MemberAccess", + "referencedDeclaration": 11139, + "src": "30517:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 2639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30517:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "30503:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2641, + "nodeType": "ExpressionStatement", + "src": "30503:35:5" + } + ] + } + ] + }, + "documentation": { + "id": 2362, + "nodeType": "StructuredDocumentation", + "src": "27591:470:5", + "text": " @notice Helper function to add liquidity\n @param liq The liquidity parameter\n @param pair LBPair where liquidity is deposited\n @return amountXAdded Amount of token X added\n @return amountYAdded Amount of token Y added\n @return amountXLeft Amount of token X left\n @return amountYLeft Amount of token Y left\n @return depositIds The list of deposit ids\n @return liquidityMinted The list of liquidity minted" + }, + "id": 2644, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 2371, + "name": "liq", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "28168:3:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters calldata" + } + }, + "id": 2372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28172:8:5", + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 6358, + "src": "28168:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2373, + "kind": "modifierInvocation", + "modifierName": { + "id": 2370, + "name": "ensure", + "nameLocations": [ + "28161:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 629, + "src": "28161:6:5" + }, + "nodeType": "ModifierInvocation", + "src": "28161:20:5" + } + ], + "name": "_addLiquidity", + "nameLocation": "28075:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2365, + "mutability": "mutable", + "name": "liq", + "nameLocation": "28118:3:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28089:32:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + }, + "typeName": { + "id": 2364, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2363, + "name": "LiquidityParameters", + "nameLocations": [ + "28089:19:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6359, + "src": "28089:19:5" + }, + "referencedDeclaration": 6359, + "src": "28089:19:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_storage_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2368, + "mutability": "mutable", + "name": "pair", + "nameLocation": "28131:4:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28123:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 2367, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2366, + "name": "ILBPair", + "nameLocations": [ + "28123:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "28123:7:5" + }, + "referencedDeclaration": 6187, + "src": "28123:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "28088:48:5" + }, + "returnParameters": { + "id": 2388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2375, + "mutability": "mutable", + "name": "amountXAdded", + "nameLocation": "28220:12:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28212:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28212:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2377, + "mutability": "mutable", + "name": "amountYAdded", + "nameLocation": "28254:12:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28246:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28246:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2379, + "mutability": "mutable", + "name": "amountXLeft", + "nameLocation": "28288:11:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28280:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28280:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2381, + "mutability": "mutable", + "name": "amountYLeft", + "nameLocation": "28321:11:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28313:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2380, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28313:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2384, + "mutability": "mutable", + "name": "depositIds", + "nameLocation": "28363:10:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28346:27:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28346:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2383, + "nodeType": "ArrayTypeName", + "src": "28346:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2387, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "28404:15:5", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "28387:32:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28387:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2386, + "nodeType": "ArrayTypeName", + "src": "28387:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "28198:231:5" + }, + "scope": 3762, + "src": "28066:2489:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2798, + "nodeType": "Block", + "src": "31057:966:5", + "statements": [ + { + "expression": { + "id": 2671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2664, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "31067:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 2668, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2656, + "src": "31093:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31103:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "31093:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "31079:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 2665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31083:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2666, + "nodeType": "ArrayTypeName", + "src": "31083:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 2670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31079:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "31067:43:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2672, + "nodeType": "ExpressionStatement", + "src": "31067:43:5" + }, + { + "expression": { + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2673, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "31190:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2676, + "indexExpression": { + "expression": { + "id": 2674, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2652, + "src": "31200:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31206:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "31200:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31190:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2677, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2658, + "src": "31216:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31190:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2679, + "nodeType": "ExpressionStatement", + "src": "31190:35:5" + }, + { + "body": { + "id": 2796, + "nodeType": "Block", + "src": "31280:737:5", + "statements": [ + { + "assignments": [ + 2693 + ], + "declarations": [ + { + "constant": false, + "id": 2693, + "mutability": "mutable", + "name": "token", + "nameLocation": "31301:5:5", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "31294:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 2692, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2691, + "name": "IERC20", + "nameLocations": [ + "31294:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "31294:6:5" + }, + "referencedDeclaration": 479, + "src": "31294:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 2699, + "initialValue": { + "baseExpression": { + "id": 2694, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2656, + "src": "31309:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2698, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2695, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31319:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31323:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31319:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31309:16:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31294:31:5" + }, + { + "assignments": [ + 2702 + ], + "declarations": [ + { + "constant": false, + "id": 2702, + "mutability": "mutable", + "name": "version", + "nameLocation": "31347:7:5", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "31339:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "typeName": { + "id": 2701, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2700, + "name": "Version", + "nameLocations": [ + "31339:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "31339:7:5" + }, + "referencedDeclaration": 6322, + "src": "31339:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "visibility": "internal" + } + ], + "id": 2708, + "initialValue": { + "baseExpression": { + "id": 2703, + "name": "versions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2649, + "src": "31357:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + "id": 2707, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2704, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31366:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31370:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31366:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31357:15:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31339:33:5" + }, + { + "assignments": [ + 2710 + ], + "declarations": [ + { + "constant": false, + "id": 2710, + "mutability": "mutable", + "name": "pair", + "nameLocation": "31394:4:5", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "31386:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31386:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2716, + "initialValue": { + "baseExpression": { + "id": 2711, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2652, + "src": "31401:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2715, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2712, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31407:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31411:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31407:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31401:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31386:27:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "id": 2720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2717, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2702, + "src": "31432:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2718, + "name": "Version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "31443:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Version_$6322_$", + "typeString": "type(enum ILBRouter.Version)" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "31451:2:5", + "memberName": "V1", + "nodeType": "MemberAccess", + "referencedDeclaration": 6320, + "src": "31443:10:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "31432:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2794, + "nodeType": "Block", + "src": "31848:159:5", + "statements": [ + { + "expression": { + "id": 2792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "baseExpression": { + "id": 2768, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "31867:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2772, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2769, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31877:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31881:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31877:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31867:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + null, + null + ], + "id": 2773, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "31866:20:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$__$__$", + "typeString": "tuple(uint256,,)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2776, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2710, + "src": "31927:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2775, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "31919:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31919:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + { + "arguments": [ + { + "baseExpression": { + "id": 2780, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "31942:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2782, + "indexExpression": { + "id": 2781, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31952:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31942:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31934:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 2778, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "31934:7:5", + "typeDescriptions": {} + } + }, + "id": 2783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31934:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 2790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2785, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2710, + "src": "31965:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2784, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "31957:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31957:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 2787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31971:9:5", + "memberName": "getTokenX", + "nodeType": "MemberAccess", + "referencedDeclaration": 5952, + "src": "31957:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 2788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31957:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2789, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2693, + "src": "31986:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "31957:34:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2774, + "name": "getSwapIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 813, + "src": "31909:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ILBPair_$6187_$_t_uint128_$_t_bool_$returns$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "function (contract ILBPair,uint128,bool) view returns (uint128,uint128,uint128)" + } + }, + "id": 2791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31909:83:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128,uint128)" + } + }, + "src": "31866:126:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2793, + "nodeType": "ExpressionStatement", + "src": "31866:126:5" + } + ] + }, + "id": 2795, + "nodeType": "IfStatement", + "src": "31428:579:5", + "trueBody": { + "id": 2767, + "nodeType": "Block", + "src": "31455:387:5", + "statements": [ + { + "assignments": [ + 2722, + 2724, + null + ], + "declarations": [ + { + "constant": false, + "id": 2722, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "31482:9:5", + "nodeType": "VariableDeclaration", + "scope": 2767, + "src": "31474:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31474:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2724, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "31501:10:5", + "nodeType": "VariableDeclaration", + "scope": 2767, + "src": "31493:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31493:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null + ], + "id": 2730, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2726, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2710, + "src": "31532:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2725, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "31516:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 2727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31516:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31538:11:5", + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 7101, + "src": "31516:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31516:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31473:78:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 2735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2731, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2693, + "src": "31573:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "baseExpression": { + "id": 2732, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2656, + "src": "31581:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2734, + "indexExpression": { + "id": 2733, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31591:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31581:12:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "31573:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2745, + "nodeType": "IfStatement", + "src": "31569:116:5", + "trueBody": { + "id": 2744, + "nodeType": "Block", + "src": "31595:90:5", + "statements": [ + { + "expression": { + "id": 2742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 2736, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2722, + "src": "31618:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2737, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "31629:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2738, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "31617:23:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 2739, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "31644:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2740, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2722, + "src": "31656:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2741, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31643:23:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "31617:49:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2743, + "nodeType": "ExpressionStatement", + "src": "31617:49:5" + } + ] + } + }, + { + "assignments": [ + 2747 + ], + "declarations": [ + { + "constant": false, + "id": 2747, + "mutability": "mutable", + "name": "amountOut_", + "nameLocation": "31711:10:5", + "nodeType": "VariableDeclaration", + "scope": 2767, + "src": "31703:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31703:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2751, + "initialValue": { + "baseExpression": { + "id": 2748, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "31724:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2750, + "indexExpression": { + "id": 2749, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31734:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31724:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31703:33:5" + }, + { + "expression": { + "id": 2765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2752, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "31754:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 2756, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2753, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31764:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31768:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31764:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31754:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2761, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2722, + "src": "31804:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2762, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "31815:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2759, + "name": "amountOut_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2747, + "src": "31781:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31792:11:5", + "memberName": "getAmountIn", + "nodeType": "MemberAccess", + "referencedDeclaration": 10475, + "src": "31781:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31781:45:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31773:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 2757, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "31773:7:5", + "typeDescriptions": {} + } + }, + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31773:54:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "31754:73:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2766, + "nodeType": "ExpressionStatement", + "src": "31754:73:5" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2685, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31267:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31272:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31267:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2797, + "initializationExpression": { + "assignments": [ + 2681 + ], + "declarations": [ + { + "constant": false, + "id": 2681, + "mutability": "mutable", + "name": "i", + "nameLocation": "31249:1:5", + "nodeType": "VariableDeclaration", + "scope": 2797, + "src": "31241:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31241:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2684, + "initialValue": { + "expression": { + "id": 2682, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2652, + "src": "31253:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31259:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "31253:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31241:24:5" + }, + "loopExpression": { + "expression": { + "id": 2689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "31275:3:5", + "subExpression": { + "id": 2688, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "31275:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2690, + "nodeType": "ExpressionStatement", + "src": "31275:3:5" + }, + "nodeType": "ForStatement", + "src": "31236:781:5" + } + ] + }, + "documentation": { + "id": 2645, + "nodeType": "StructuredDocumentation", + "src": "30561:283:5", + "text": " @notice Helper function to return the amounts in\n @param versions The list of versions (V1, V2)\n @param pairs The list of pairs\n @param tokenPath The swap path\n @param amountOut The amount out\n @return amountsIn The list of amounts in" + }, + "id": 2799, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAmountsIn", + "nameLocation": "30858:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2649, + "mutability": "mutable", + "name": "versions", + "nameLocation": "30898:8:5", + "nodeType": "VariableDeclaration", + "scope": 2799, + "src": "30881:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[]" + }, + "typeName": { + "baseType": { + "id": 2647, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2646, + "name": "Version", + "nameLocations": [ + "30881:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "30881:7:5" + }, + "referencedDeclaration": 6322, + "src": "30881:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 2648, + "nodeType": "ArrayTypeName", + "src": "30881:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_storage_ptr", + "typeString": "enum ILBRouter.Version[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2652, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "30933:5:5", + "nodeType": "VariableDeclaration", + "scope": 2799, + "src": "30916:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30916:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2651, + "nodeType": "ArrayTypeName", + "src": "30916:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2656, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "30964:9:5", + "nodeType": "VariableDeclaration", + "scope": 2799, + "src": "30948:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 2654, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2653, + "name": "IERC20", + "nameLocations": [ + "30948:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "30948:6:5" + }, + "referencedDeclaration": 479, + "src": "30948:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2655, + "nodeType": "ArrayTypeName", + "src": "30948:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2658, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "30991:9:5", + "nodeType": "VariableDeclaration", + "scope": 2799, + "src": "30983:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30983:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30871:135:5" + }, + "returnParameters": { + "id": 2663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2662, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "31046:9:5", + "nodeType": "VariableDeclaration", + "scope": 2799, + "src": "31029:26:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31029:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2661, + "nodeType": "ArrayTypeName", + "src": "31029:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "31028:28:5" + }, + "scope": 3762, + "src": "30849:1174:5", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2880, + "nodeType": "Block", + "src": "32793:425:5", + "statements": [ + { + "assignments": [ + 2826 + ], + "declarations": [ + { + "constant": false, + "id": 2826, + "mutability": "mutable", + "name": "amountsBurned", + "nameLocation": "32821:13:5", + "nodeType": "VariableDeclaration", + "scope": 2880, + "src": "32804:30:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2824, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32804:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2825, + "nodeType": "ArrayTypeName", + "src": "32804:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 2835, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2829, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "32848:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32852:6:5", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "32848:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2831, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2815, + "src": "32860:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2832, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "32864:3:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 2833, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2813, + "src": "32869:7:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "expression": { + "id": 2827, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2803, + "src": "32838:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 2828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32843:4:5", + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 6149, + "src": "32838:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory) external returns (bytes32[] memory)" + } + }, + "id": 2834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32838:39:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32803:74:5" + }, + { + "body": { + "id": 2862, + "nodeType": "Block", + "src": "32935:113:5", + "statements": [ + { + "expression": { + "id": 2852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2846, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2818, + "src": "32949:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "id": 2847, + "name": "amountsBurned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2826, + "src": "32960:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2849, + "indexExpression": { + "id": 2848, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2837, + "src": "32974:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32960:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32977:7:5", + "memberName": "decodeX", + "nodeType": "MemberAccess", + "referencedDeclaration": 11129, + "src": "32960:24:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 2851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32960:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "32949:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2853, + "nodeType": "ExpressionStatement", + "src": "32949:37:5" + }, + { + "expression": { + "id": 2860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2854, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "33000:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "id": 2855, + "name": "amountsBurned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2826, + "src": "33011:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2857, + "indexExpression": { + "id": 2856, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2837, + "src": "33025:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33011:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "33028:7:5", + "memberName": "decodeY", + "nodeType": "MemberAccess", + "referencedDeclaration": 11139, + "src": "33011:24:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 2859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33011:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "33000:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2861, + "nodeType": "ExpressionStatement", + "src": "33000:37:5" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2839, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2837, + "src": "32904:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2840, + "name": "amountsBurned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2826, + "src": "32908:13:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32922:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "32908:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32904:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2863, + "initializationExpression": { + "assignments": [ + 2837 + ], + "declarations": [ + { + "constant": false, + "id": 2837, + "mutability": "mutable", + "name": "i", + "nameLocation": "32901:1:5", + "nodeType": "VariableDeclaration", + "scope": 2863, + "src": "32893:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32893:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2838, + "nodeType": "VariableDeclarationStatement", + "src": "32893:9:5" + }, + "loopExpression": { + "expression": { + "id": 2844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "32930:3:5", + "subExpression": { + "id": 2843, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2837, + "src": "32932:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2845, + "nodeType": "ExpressionStatement", + "src": "32930:3:5" + }, + "nodeType": "ForStatement", + "src": "32888:160:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2864, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2818, + "src": "33062:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2865, + "name": "amountXMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2805, + "src": "33072:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33062:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2867, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "33086:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2868, + "name": "amountYMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "33096:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33086:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "33062:44:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2879, + "nodeType": "IfStatement", + "src": "33058:154:5", + "trueBody": { + "id": 2878, + "nodeType": "Block", + "src": "33108:104:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2872, + "name": "amountXMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2805, + "src": "33160:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2873, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2818, + "src": "33172:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2874, + "name": "amountYMin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "33181:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2875, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "33193:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2871, + "name": "LBRouter__AmountSlippageCaught", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6264, + "src": "33129:30:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256,uint256) pure" + } + }, + "id": 2876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33129:72:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2877, + "nodeType": "RevertStatement", + "src": "33122:79:5" + } + ] + } + } + ] + }, + "documentation": { + "id": 2800, + "nodeType": "StructuredDocumentation", + "src": "32029:514:5", + "text": " @notice Helper function to remove liquidity\n @param pair The address of the LBPair\n @param amountXMin The min amount to receive of token X\n @param amountYMin The min amount to receive of token Y\n @param ids The list of ids to burn\n @param amounts The list of amounts to burn of each id in `_ids`\n @param to The address of the recipient\n @return amountX The amount of token X sent by the pair\n @return amountY The amount of token Y sent by the pair" + }, + "id": 2881, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeLiquidity", + "nameLocation": "32557:16:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2803, + "mutability": "mutable", + "name": "pair", + "nameLocation": "32591:4:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32583:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 2802, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2801, + "name": "ILBPair", + "nameLocations": [ + "32583:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "32583:7:5" + }, + "referencedDeclaration": 6187, + "src": "32583:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2805, + "mutability": "mutable", + "name": "amountXMin", + "nameLocation": "32613:10:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32605:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2804, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32605:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2807, + "mutability": "mutable", + "name": "amountYMin", + "nameLocation": "32641:10:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32633:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32633:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2810, + "mutability": "mutable", + "name": "ids", + "nameLocation": "32678:3:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32661:20:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2808, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32661:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2809, + "nodeType": "ArrayTypeName", + "src": "32661:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2813, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "32708:7:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32691:24:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32691:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2812, + "nodeType": "ArrayTypeName", + "src": "32691:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2815, + "mutability": "mutable", + "name": "to", + "nameLocation": "32733:2:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32725:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32725:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "32573:168:5" + }, + "returnParameters": { + "id": 2821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2818, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "32767:7:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32759:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32759:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2820, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "32784:7:5", + "nodeType": "VariableDeclaration", + "scope": 2881, + "src": "32776:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32776:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "32758:34:5" + }, + "scope": 3762, + "src": "32548:670:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3073, + "nodeType": "Block", + "src": "33853:1402:5", + "statements": [ + { + "assignments": [ + 2904 + ], + "declarations": [ + { + "constant": false, + "id": 2904, + "mutability": "mutable", + "name": "token", + "nameLocation": "33870:5:5", + "nodeType": "VariableDeclaration", + "scope": 3073, + "src": "33863:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 2903, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2902, + "name": "IERC20", + "nameLocations": [ + "33863:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "33863:6:5" + }, + "referencedDeclaration": 479, + "src": "33863:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 2905, + "nodeType": "VariableDeclarationStatement", + "src": "33863:12:5" + }, + { + "assignments": [ + 2908 + ], + "declarations": [ + { + "constant": false, + "id": 2908, + "mutability": "mutable", + "name": "version", + "nameLocation": "33893:7:5", + "nodeType": "VariableDeclaration", + "scope": 3073, + "src": "33885:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "typeName": { + "id": 2907, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2906, + "name": "Version", + "nameLocations": [ + "33885:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "33885:7:5" + }, + "referencedDeclaration": 6322, + "src": "33885:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "visibility": "internal" + } + ], + "id": 2909, + "nodeType": "VariableDeclarationStatement", + "src": "33885:15:5" + }, + { + "assignments": [ + 2911 + ], + "declarations": [ + { + "constant": false, + "id": 2911, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "33918:9:5", + "nodeType": "VariableDeclaration", + "scope": 3073, + "src": "33910:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33910:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2912, + "nodeType": "VariableDeclarationStatement", + "src": "33910:17:5" + }, + { + "assignments": [ + 2914 + ], + "declarations": [ + { + "constant": false, + "id": 2914, + "mutability": "mutable", + "name": "pair", + "nameLocation": "33945:4:5", + "nodeType": "VariableDeclaration", + "scope": 3073, + "src": "33937:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33937:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2915, + "nodeType": "VariableDeclarationStatement", + "src": "33937:12:5" + }, + { + "assignments": [ + 2918 + ], + "declarations": [ + { + "constant": false, + "id": 2918, + "mutability": "mutable", + "name": "tokenNext", + "nameLocation": "33967:9:5", + "nodeType": "VariableDeclaration", + "scope": 3073, + "src": "33960:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 2917, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2916, + "name": "IERC20", + "nameLocations": [ + "33960:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "33960:6:5" + }, + "referencedDeclaration": 479, + "src": "33960:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 2922, + "initialValue": { + "baseExpression": { + "id": 2919, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2895, + "src": "33979:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2921, + "indexExpression": { + "hexValue": "30", + "id": 2920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33989:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33979:12:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33960:31:5" + }, + { + "expression": { + "id": 2925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2923, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "34001:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2924, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2884, + "src": "34013:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34001:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2926, + "nodeType": "ExpressionStatement", + "src": "34001:20:5" + }, + { + "id": 3072, + "nodeType": "UncheckedBlock", + "src": "34032:1217:5", + "statements": [ + { + "body": { + "id": 3070, + "nodeType": "Block", + "src": "34095:1144:5", + "statements": [ + { + "expression": { + "id": 2941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2937, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2914, + "src": "34113:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 2938, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "34120:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2940, + "indexExpression": { + "id": 2939, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "34126:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34120:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "34113:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2942, + "nodeType": "ExpressionStatement", + "src": "34113:15:5" + }, + { + "expression": { + "id": 2947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2943, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "34146:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 2944, + "name": "versions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2891, + "src": "34156:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + "id": 2946, + "indexExpression": { + "id": 2945, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "34165:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34156:11:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "34146:21:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 2948, + "nodeType": "ExpressionStatement", + "src": "34146:21:5" + }, + { + "expression": { + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2949, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "34186:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2950, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "34194:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "34186:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2952, + "nodeType": "ExpressionStatement", + "src": "34186:17:5" + }, + { + "expression": { + "id": 2959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2953, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "34221:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 2954, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2895, + "src": "34233:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 2958, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2955, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "34243:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 2956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34247:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34243:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34233:16:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "34221:28:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2960, + "nodeType": "ExpressionStatement", + "src": "34221:28:5" + }, + { + "expression": { + "id": 2975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2961, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2911, + "src": "34268:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2962, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "34280:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 2963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34284:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34280:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2965, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "34289:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34295:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "34289:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34280:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "baseExpression": { + "id": 2969, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "34309:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2973, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2970, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "34315:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 2971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34319:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34315:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34309:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "34280:41:5", + "trueExpression": { + "id": 2968, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2897, + "src": "34304:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "34268:53:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2976, + "nodeType": "ExpressionStatement", + "src": "34268:53:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "id": 2980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2977, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2908, + "src": "34344:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2978, + "name": "Version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "34355:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Version_$6322_$", + "typeString": "type(enum ILBRouter.Version)" + } + }, + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "34363:2:5", + "memberName": "V1", + "nodeType": "MemberAccess", + "referencedDeclaration": 6320, + "src": "34355:10:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "34344:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3068, + "nodeType": "Block", + "src": "34908:317:5", + "statements": [ + { + "assignments": [ + 3035 + ], + "declarations": [ + { + "constant": false, + "id": 3035, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "34935:8:5", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "34930:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3034, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34930:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 3043, + "initialValue": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 3042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3036, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "34946:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3038, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2914, + "src": "34967:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3037, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "34959:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 3039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34959:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34973:9:5", + "memberName": "getTokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 5958, + "src": "34959:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 3041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34959:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "34946:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "34930:54:5" + }, + { + "assignments": [ + 3045, + 3047 + ], + "declarations": [ + { + "constant": false, + "id": 3045, + "mutability": "mutable", + "name": "amountXOut", + "nameLocation": "35016:10:5", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "35008:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "35008:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3047, + "mutability": "mutable", + "name": "amountYOut", + "nameLocation": "35036:10:5", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "35028:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3046, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "35028:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3057, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3052, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "35069:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 3053, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2911, + "src": "35079:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 3049, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2914, + "src": "35058:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3048, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "35050:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 3050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35050:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "35064:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 6106, + "src": "35050:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$_t_address_$returns$_t_bytes32_$", + "typeString": "function (bool,address) external returns (bytes32)" + } + }, + "id": 3054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35050:39:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "35090:6:5", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "35050:46:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 3056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "35050:48:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "35007:91:5" + }, + { + "condition": { + "id": 3058, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3035, + "src": "35125:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "id": 3065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3063, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "35184:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3064, + "name": "amountXOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3045, + "src": "35196:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "35184:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3066, + "nodeType": "ExpressionStatement", + "src": "35184:22:5" + }, + "id": 3067, + "nodeType": "IfStatement", + "src": "35121:85:5", + "trueBody": { + "expression": { + "id": 3061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3059, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "35135:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3060, + "name": "amountYOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3047, + "src": "35147:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "35135:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3062, + "nodeType": "ExpressionStatement", + "src": "35135:22:5" + } + } + ] + }, + "id": 3069, + "nodeType": "IfStatement", + "src": "34340:885:5", + "trueBody": { + "id": 3033, + "nodeType": "Block", + "src": "34367:535:5", + "statements": [ + { + "assignments": [ + 2982, + 2984, + null + ], + "declarations": [ + { + "constant": false, + "id": 2982, + "mutability": "mutable", + "name": "reserve0", + "nameLocation": "34398:8:5", + "nodeType": "VariableDeclaration", + "scope": 3033, + "src": "34390:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2981, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34390:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2984, + "mutability": "mutable", + "name": "reserve1", + "nameLocation": "34416:8:5", + "nodeType": "VariableDeclaration", + "scope": 3033, + "src": "34408:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34408:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null + ], + "id": 2990, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 2986, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2914, + "src": "34445:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2985, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "34429:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 2987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34429:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34451:11:5", + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 7101, + "src": "34429:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 2989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34429:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "34389:75:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 2993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2991, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "34491:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2992, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2918, + "src": "34499:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "34491:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3031, + "nodeType": "Block", + "src": "34700:184:5", + "statements": [ + { + "expression": { + "id": 3019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3013, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "34726:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3016, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2984, + "src": "34761:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3017, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2982, + "src": "34771:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3014, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "34738:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34748:12:5", + "memberName": "getAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10420, + "src": "34738:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34738:42:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34726:54:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3020, + "nodeType": "ExpressionStatement", + "src": "34726:54:5" + }, + { + "expression": { + "arguments": [ + { + "id": 3025, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "34833:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 3026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34844:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3027, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2911, + "src": "34847:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 3028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34858:2:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 3022, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2914, + "src": "34822:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3021, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "34806:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 3023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34806:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 3024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34828:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7143, + "src": "34806:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 3029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34806:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3030, + "nodeType": "ExpressionStatement", + "src": "34806:55:5" + } + ] + }, + "id": 3032, + "nodeType": "IfStatement", + "src": "34487:397:5", + "trueBody": { + "id": 3012, + "nodeType": "Block", + "src": "34510:184:5", + "statements": [ + { + "expression": { + "id": 3000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2994, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "34536:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2997, + "name": "reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2982, + "src": "34571:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2998, + "name": "reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2984, + "src": "34581:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2995, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "34548:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34558:12:5", + "memberName": "getAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10420, + "src": "34548:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34548:42:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34536:54:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3001, + "nodeType": "ExpressionStatement", + "src": "34536:54:5" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34643:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3007, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2900, + "src": "34646:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3008, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2911, + "src": "34657:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 3009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34668:2:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 3003, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2914, + "src": "34632:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3002, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "34616:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 3004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34616:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 3005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34638:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7143, + "src": "34616:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 3010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34616:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3011, + "nodeType": "ExpressionStatement", + "src": "34616:55:5" + } + ] + } + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2930, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "34072:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2931, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2887, + "src": "34076:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "34082:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "34076:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34072:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3071, + "initializationExpression": { + "assignments": [ + 2928 + ], + "declarations": [ + { + "constant": false, + "id": 2928, + "mutability": "mutable", + "name": "i", + "nameLocation": "34069:1:5", + "nodeType": "VariableDeclaration", + "scope": 3071, + "src": "34061:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2927, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34061:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2929, + "nodeType": "VariableDeclarationStatement", + "src": "34061:9:5" + }, + "loopExpression": { + "expression": { + "id": 2935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "34090:3:5", + "subExpression": { + "id": 2934, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "34092:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2936, + "nodeType": "ExpressionStatement", + "src": "34090:3:5" + }, + "nodeType": "ForStatement", + "src": "34056:1183:5" + } + ] + } + ] + }, + "documentation": { + "id": 2882, + "nodeType": "StructuredDocumentation", + "src": "33224:399:5", + "text": " @notice Helper function to swap exact tokens for tokens\n @param amountIn The amount of token sent\n @param pairs The list of pairs\n @param versions The list of versions (V1, V2)\n @param tokenPath The swap path using the binSteps following `pairBinSteps`\n @param to The address of the recipient\n @return amountOut The amount of token sent to `to`" + }, + "id": 3074, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_swapExactTokensForTokens", + "nameLocation": "33637:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2884, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "33680:8:5", + "nodeType": "VariableDeclaration", + "scope": 3074, + "src": "33672:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2883, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33672:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2887, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "33715:5:5", + "nodeType": "VariableDeclaration", + "scope": 3074, + "src": "33698:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33698:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2886, + "nodeType": "ArrayTypeName", + "src": "33698:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2891, + "mutability": "mutable", + "name": "versions", + "nameLocation": "33747:8:5", + "nodeType": "VariableDeclaration", + "scope": 3074, + "src": "33730:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[]" + }, + "typeName": { + "baseType": { + "id": 2889, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2888, + "name": "Version", + "nameLocations": [ + "33730:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "33730:7:5" + }, + "referencedDeclaration": 6322, + "src": "33730:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 2890, + "nodeType": "ArrayTypeName", + "src": "33730:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_storage_ptr", + "typeString": "enum ILBRouter.Version[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2895, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "33781:9:5", + "nodeType": "VariableDeclaration", + "scope": 3074, + "src": "33765:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 2893, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2892, + "name": "IERC20", + "nameLocations": [ + "33765:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "33765:6:5" + }, + "referencedDeclaration": 479, + "src": "33765:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 2894, + "nodeType": "ArrayTypeName", + "src": "33765:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2897, + "mutability": "mutable", + "name": "to", + "nameLocation": "33808:2:5", + "nodeType": "VariableDeclaration", + "scope": 3074, + "src": "33800:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2896, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33800:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "33662:154:5" + }, + "returnParameters": { + "id": 2901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2900, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "33842:9:5", + "nodeType": "VariableDeclaration", + "scope": 3074, + "src": "33834:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33834:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "33833:19:5" + }, + "scope": 3762, + "src": "33628:1627:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3245, + "nodeType": "Block", + "src": "35900:1164:5", + "statements": [ + { + "assignments": [ + 3098 + ], + "declarations": [ + { + "constant": false, + "id": 3098, + "mutability": "mutable", + "name": "token", + "nameLocation": "35917:5:5", + "nodeType": "VariableDeclaration", + "scope": 3245, + "src": "35910:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3097, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3096, + "name": "IERC20", + "nameLocations": [ + "35910:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "35910:6:5" + }, + "referencedDeclaration": 479, + "src": "35910:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 3099, + "nodeType": "VariableDeclarationStatement", + "src": "35910:12:5" + }, + { + "assignments": [ + 3101 + ], + "declarations": [ + { + "constant": false, + "id": 3101, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "35940:9:5", + "nodeType": "VariableDeclaration", + "scope": 3245, + "src": "35932:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35932:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3102, + "nodeType": "VariableDeclarationStatement", + "src": "35932:17:5" + }, + { + "assignments": [ + 3104 + ], + "declarations": [ + { + "constant": false, + "id": 3104, + "mutability": "mutable", + "name": "pair", + "nameLocation": "35967:4:5", + "nodeType": "VariableDeclaration", + "scope": 3245, + "src": "35959:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35959:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3105, + "nodeType": "VariableDeclarationStatement", + "src": "35959:12:5" + }, + { + "assignments": [ + 3108 + ], + "declarations": [ + { + "constant": false, + "id": 3108, + "mutability": "mutable", + "name": "version", + "nameLocation": "35989:7:5", + "nodeType": "VariableDeclaration", + "scope": 3245, + "src": "35981:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "typeName": { + "id": 3107, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3106, + "name": "Version", + "nameLocations": [ + "35981:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "35981:7:5" + }, + "referencedDeclaration": 6322, + "src": "35981:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "visibility": "internal" + } + ], + "id": 3109, + "nodeType": "VariableDeclarationStatement", + "src": "35981:15:5" + }, + { + "assignments": [ + 3112 + ], + "declarations": [ + { + "constant": false, + "id": 3112, + "mutability": "mutable", + "name": "tokenNext", + "nameLocation": "36014:9:5", + "nodeType": "VariableDeclaration", + "scope": 3245, + "src": "36007:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3111, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3110, + "name": "IERC20", + "nameLocations": [ + "36007:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "36007:6:5" + }, + "referencedDeclaration": 479, + "src": "36007:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 3116, + "initialValue": { + "baseExpression": { + "id": 3113, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "36026:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 3115, + "indexExpression": { + "hexValue": "30", + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36036:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36026:12:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "36007:31:5" + }, + { + "id": 3244, + "nodeType": "UncheckedBlock", + "src": "36049:1009:5", + "statements": [ + { + "body": { + "id": 3242, + "nodeType": "Block", + "src": "36112:936:5", + "statements": [ + { + "expression": { + "id": 3131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3127, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3104, + "src": "36130:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3128, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3078, + "src": "36137:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3130, + "indexExpression": { + "id": 3129, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36143:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36137:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "36130:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3132, + "nodeType": "ExpressionStatement", + "src": "36130:15:5" + }, + { + "expression": { + "id": 3137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3133, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3108, + "src": "36163:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3134, + "name": "versions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "36173:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + "id": 3136, + "indexExpression": { + "id": 3135, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36182:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36173:11:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "36163:21:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 3138, + "nodeType": "ExpressionStatement", + "src": "36163:21:5" + }, + { + "expression": { + "id": 3141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3139, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3098, + "src": "36203:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3140, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3112, + "src": "36211:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "36203:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3142, + "nodeType": "ExpressionStatement", + "src": "36203:17:5" + }, + { + "expression": { + "id": 3149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3143, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3112, + "src": "36238:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3144, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "36250:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 3148, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3145, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36260:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36264:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "36260:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36250:16:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "36238:28:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3150, + "nodeType": "ExpressionStatement", + "src": "36238:28:5" + }, + { + "expression": { + "id": 3165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3151, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "36285:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3152, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36297:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36301:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "36297:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 3155, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3078, + "src": "36306:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36312:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "36306:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36297:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "baseExpression": { + "id": 3159, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3078, + "src": "36326:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3163, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3160, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36332:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36336:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "36332:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36326:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "36297:41:5", + "trueExpression": { + "id": 3158, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3091, + "src": "36321:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "36285:53:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3166, + "nodeType": "ExpressionStatement", + "src": "36285:53:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "id": 3170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3167, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3108, + "src": "36361:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 3168, + "name": "Version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "36372:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Version_$6322_$", + "typeString": "type(enum ILBRouter.Version)" + } + }, + "id": 3169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "36380:2:5", + "memberName": "V1", + "nodeType": "MemberAccess", + "referencedDeclaration": 6320, + "src": "36372:10:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "36361:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3240, + "nodeType": "Block", + "src": "36717:317:5", + "statements": [ + { + "assignments": [ + 3207 + ], + "declarations": [ + { + "constant": false, + "id": 3207, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "36744:8:5", + "nodeType": "VariableDeclaration", + "scope": 3240, + "src": "36739:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3206, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "36739:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 3215, + "initialValue": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 3214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3208, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3112, + "src": "36755:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3210, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3104, + "src": "36776:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3209, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "36768:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 3211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36768:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 3212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36782:9:5", + "memberName": "getTokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 5958, + "src": "36768:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 3213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36768:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "36755:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "36739:54:5" + }, + { + "assignments": [ + 3217, + 3219 + ], + "declarations": [ + { + "constant": false, + "id": 3217, + "mutability": "mutable", + "name": "amountXOut", + "nameLocation": "36825:10:5", + "nodeType": "VariableDeclaration", + "scope": 3240, + "src": "36817:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3216, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36817:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3219, + "mutability": "mutable", + "name": "amountYOut", + "nameLocation": "36845:10:5", + "nodeType": "VariableDeclaration", + "scope": 3240, + "src": "36837:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3218, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36837:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3229, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3224, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3207, + "src": "36878:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 3225, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "36888:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 3221, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3104, + "src": "36867:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3220, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "36859:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 3222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36859:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 3223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36873:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 6106, + "src": "36859:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$_t_address_$returns$_t_bytes32_$", + "typeString": "function (bool,address) external returns (bytes32)" + } + }, + "id": 3226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36859:39:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36899:6:5", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "36859:46:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 3228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36859:48:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "36816:91:5" + }, + { + "condition": { + "id": 3230, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3207, + "src": "36934:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "id": 3237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3235, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3094, + "src": "36993:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3236, + "name": "amountXOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "37005:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36993:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3238, + "nodeType": "ExpressionStatement", + "src": "36993:22:5" + }, + "id": 3239, + "nodeType": "IfStatement", + "src": "36930:85:5", + "trueBody": { + "expression": { + "id": 3233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3231, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3094, + "src": "36944:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3232, + "name": "amountYOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3219, + "src": "36956:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36944:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3234, + "nodeType": "ExpressionStatement", + "src": "36944:22:5" + } + } + ] + }, + "id": 3241, + "nodeType": "IfStatement", + "src": "36357:677:5", + "trueBody": { + "id": 3205, + "nodeType": "Block", + "src": "36384:327:5", + "statements": [ + { + "expression": { + "id": 3177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3171, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3094, + "src": "36406:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3172, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "36418:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3176, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3173, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36428:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36432:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "36428:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36418:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36406:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3178, + "nodeType": "ExpressionStatement", + "src": "36406:28:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 3181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3179, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3098, + "src": "36460:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 3180, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3112, + "src": "36468:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "36460:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3203, + "nodeType": "Block", + "src": "36589:104:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3197, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3094, + "src": "36642:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 3198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36653:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3199, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "36656:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 3200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36667:2:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 3194, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3104, + "src": "36631:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3193, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "36615:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 3195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36615:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 3196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36637:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7143, + "src": "36615:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 3201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36615:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3202, + "nodeType": "ExpressionStatement", + "src": "36615:55:5" + } + ] + }, + "id": 3204, + "nodeType": "IfStatement", + "src": "36456:237:5", + "trueBody": { + "id": 3192, + "nodeType": "Block", + "src": "36479:104:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36532:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3187, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3094, + "src": "36535:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3188, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "36546:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 3189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36557:2:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 3183, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3104, + "src": "36521:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3182, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "36505:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 3184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36505:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 3185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36527:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7143, + "src": "36505:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 3190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36505:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3191, + "nodeType": "ExpressionStatement", + "src": "36505:55:5" + } + ] + } + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3120, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36089:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 3121, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3078, + "src": "36093:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "36099:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "36093:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36089:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3243, + "initializationExpression": { + "assignments": [ + 3118 + ], + "declarations": [ + { + "constant": false, + "id": 3118, + "mutability": "mutable", + "name": "i", + "nameLocation": "36086:1:5", + "nodeType": "VariableDeclaration", + "scope": 3243, + "src": "36078:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36078:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3119, + "nodeType": "VariableDeclarationStatement", + "src": "36078:9:5" + }, + "loopExpression": { + "expression": { + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "36107:3:5", + "subExpression": { + "id": 3124, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3118, + "src": "36109:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3126, + "nodeType": "ExpressionStatement", + "src": "36107:3:5" + }, + "nodeType": "ForStatement", + "src": "36073:975:5" + } + ] + } + ] + }, + "documentation": { + "id": 3075, + "nodeType": "StructuredDocumentation", + "src": "35261:399:5", + "text": " @notice Helper function to swap tokens for exact tokens\n @param pairs The array of pairs\n @param versions The list of versions (V1, V2)\n @param tokenPath The swap path using the binSteps following `pairBinSteps`\n @param amountsIn The list of amounts in\n @param to The address of the recipient\n @return amountOut The amount of token sent to `to`" + }, + "id": 3246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_swapTokensForExactTokens", + "nameLocation": "35674:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3078, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "35726:5:5", + "nodeType": "VariableDeclaration", + "scope": 3246, + "src": "35709:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35709:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3077, + "nodeType": "ArrayTypeName", + "src": "35709:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3082, + "mutability": "mutable", + "name": "versions", + "nameLocation": "35758:8:5", + "nodeType": "VariableDeclaration", + "scope": 3246, + "src": "35741:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[]" + }, + "typeName": { + "baseType": { + "id": 3080, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3079, + "name": "Version", + "nameLocations": [ + "35741:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "35741:7:5" + }, + "referencedDeclaration": 6322, + "src": "35741:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 3081, + "nodeType": "ArrayTypeName", + "src": "35741:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_storage_ptr", + "typeString": "enum ILBRouter.Version[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3086, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "35792:9:5", + "nodeType": "VariableDeclaration", + "scope": 3246, + "src": "35776:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 3084, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3083, + "name": "IERC20", + "nameLocations": [ + "35776:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "35776:6:5" + }, + "referencedDeclaration": 479, + "src": "35776:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3085, + "nodeType": "ArrayTypeName", + "src": "35776:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3089, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "35828:9:5", + "nodeType": "VariableDeclaration", + "scope": 3246, + "src": "35811:26:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "35811:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3088, + "nodeType": "ArrayTypeName", + "src": "35811:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3091, + "mutability": "mutable", + "name": "to", + "nameLocation": "35855:2:5", + "nodeType": "VariableDeclaration", + "scope": 3246, + "src": "35847:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35847:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "35699:164:5" + }, + "returnParameters": { + "id": 3095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3094, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "35889:9:5", + "nodeType": "VariableDeclaration", + "scope": 3246, + "src": "35881:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "35881:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "35880:19:5" + }, + "scope": 3762, + "src": "35665:1399:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3428, + "nodeType": "Block", + "src": "37575:1342:5", + "statements": [ + { + "assignments": [ + 3265 + ], + "declarations": [ + { + "constant": false, + "id": 3265, + "mutability": "mutable", + "name": "token", + "nameLocation": "37592:5:5", + "nodeType": "VariableDeclaration", + "scope": 3428, + "src": "37585:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3264, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3263, + "name": "IERC20", + "nameLocations": [ + "37585:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "37585:6:5" + }, + "referencedDeclaration": 479, + "src": "37585:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 3266, + "nodeType": "VariableDeclarationStatement", + "src": "37585:12:5" + }, + { + "assignments": [ + 3269 + ], + "declarations": [ + { + "constant": false, + "id": 3269, + "mutability": "mutable", + "name": "version", + "nameLocation": "37615:7:5", + "nodeType": "VariableDeclaration", + "scope": 3428, + "src": "37607:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "typeName": { + "id": 3268, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3267, + "name": "Version", + "nameLocations": [ + "37607:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "37607:7:5" + }, + "referencedDeclaration": 6322, + "src": "37607:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "visibility": "internal" + } + ], + "id": 3270, + "nodeType": "VariableDeclarationStatement", + "src": "37607:15:5" + }, + { + "assignments": [ + 3272 + ], + "declarations": [ + { + "constant": false, + "id": 3272, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "37640:9:5", + "nodeType": "VariableDeclaration", + "scope": 3428, + "src": "37632:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37632:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3273, + "nodeType": "VariableDeclarationStatement", + "src": "37632:17:5" + }, + { + "assignments": [ + 3275 + ], + "declarations": [ + { + "constant": false, + "id": 3275, + "mutability": "mutable", + "name": "pair", + "nameLocation": "37667:4:5", + "nodeType": "VariableDeclaration", + "scope": 3428, + "src": "37659:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37659:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3276, + "nodeType": "VariableDeclarationStatement", + "src": "37659:12:5" + }, + { + "assignments": [ + 3279 + ], + "declarations": [ + { + "constant": false, + "id": 3279, + "mutability": "mutable", + "name": "tokenNext", + "nameLocation": "37689:9:5", + "nodeType": "VariableDeclaration", + "scope": 3428, + "src": "37682:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3278, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3277, + "name": "IERC20", + "nameLocations": [ + "37682:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "37682:6:5" + }, + "referencedDeclaration": 479, + "src": "37682:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 3283, + "initialValue": { + "baseExpression": { + "id": 3280, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3258, + "src": "37701:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 3282, + "indexExpression": { + "hexValue": "30", + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37711:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37701:12:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37682:31:5" + }, + { + "id": 3427, + "nodeType": "UncheckedBlock", + "src": "37724:1187:5", + "statements": [ + { + "body": { + "id": 3425, + "nodeType": "Block", + "src": "37787:1114:5", + "statements": [ + { + "expression": { + "id": 3298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3294, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "37805:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3295, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3250, + "src": "37812:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3297, + "indexExpression": { + "id": 3296, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "37818:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37812:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "37805:15:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3299, + "nodeType": "ExpressionStatement", + "src": "37805:15:5" + }, + { + "expression": { + "id": 3304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3300, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3269, + "src": "37838:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3301, + "name": "versions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3254, + "src": "37848:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + "id": 3303, + "indexExpression": { + "id": 3302, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "37857:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37848:11:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "37838:21:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 3305, + "nodeType": "ExpressionStatement", + "src": "37838:21:5" + }, + { + "expression": { + "id": 3308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3306, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3265, + "src": "37878:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3307, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3279, + "src": "37886:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "37878:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3309, + "nodeType": "ExpressionStatement", + "src": "37878:17:5" + }, + { + "expression": { + "id": 3316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3310, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3279, + "src": "37913:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3311, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3258, + "src": "37925:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 3315, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3312, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "37935:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37939:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "37935:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37925:16:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "37913:28:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3317, + "nodeType": "ExpressionStatement", + "src": "37913:28:5" + }, + { + "expression": { + "id": 3332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3318, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3272, + "src": "37960:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3319, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "37972:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37976:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "37972:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 3322, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3250, + "src": "37981:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "37987:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "37981:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37972:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "baseExpression": { + "id": 3326, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3250, + "src": "38001:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3330, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3327, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "38007:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38011:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "38007:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38001:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "37972:41:5", + "trueExpression": { + "id": 3325, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3260, + "src": "37996:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "37960:53:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3333, + "nodeType": "ExpressionStatement", + "src": "37960:53:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "id": 3337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3334, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3269, + "src": "38036:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 3335, + "name": "Version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "38047:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Version_$6322_$", + "typeString": "type(enum ILBRouter.Version)" + } + }, + "id": 3336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "38055:2:5", + "memberName": "V1", + "nodeType": "MemberAccess", + "referencedDeclaration": 6320, + "src": "38047:10:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "38036:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3423, + "nodeType": "Block", + "src": "38777:110:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 3419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3413, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3279, + "src": "38818:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3415, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "38839:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3414, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "38831:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 3416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38831:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 3417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38845:9:5", + "memberName": "getTokenY", + "nodeType": "MemberAccess", + "referencedDeclaration": 5958, + "src": "38831:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$479_$", + "typeString": "function () view external returns (contract IERC20)" + } + }, + "id": 3418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38831:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "38818:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 3420, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3272, + "src": "38858:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 3410, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "38807:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3409, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "38799:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$6187_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 3411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38799:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "id": 3412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38813:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 6106, + "src": "38799:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bool_$_t_address_$returns$_t_bytes32_$", + "typeString": "function (bool,address) external returns (bytes32)" + } + }, + "id": 3421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38799:69:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3422, + "nodeType": "ExpressionStatement", + "src": "38799:69:5" + } + ] + }, + "id": 3424, + "nodeType": "IfStatement", + "src": "38032:855:5", + "trueBody": { + "id": 3408, + "nodeType": "Block", + "src": "38059:712:5", + "statements": [ + { + "assignments": [ + 3339, + 3341, + null + ], + "declarations": [ + { + "constant": false, + "id": 3339, + "mutability": "mutable", + "name": "_reserve0", + "nameLocation": "38090:9:5", + "nodeType": "VariableDeclaration", + "scope": 3408, + "src": "38082:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38082:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3341, + "mutability": "mutable", + "name": "_reserve1", + "nameLocation": "38109:9:5", + "nodeType": "VariableDeclaration", + "scope": 3408, + "src": "38101:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38101:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null + ], + "id": 3347, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3343, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "38139:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3342, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "38123:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 3344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38123:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38145:11:5", + "memberName": "getReserves", + "nodeType": "MemberAccess", + "referencedDeclaration": 7101, + "src": "38123:33:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "function () view external returns (uint112,uint112,uint32)" + } + }, + "id": 3346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38123:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$", + "typeString": "tuple(uint112,uint112,uint32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "38081:77:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "id": 3350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3348, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3265, + "src": "38184:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 3349, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3279, + "src": "38192:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "38184:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3406, + "nodeType": "Block", + "src": "38481:272:5", + "statements": [ + { + "assignments": [ + 3380 + ], + "declarations": [ + { + "constant": false, + "id": 3380, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "38515:8:5", + "nodeType": "VariableDeclaration", + "scope": 3406, + "src": "38507:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38507:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3387, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 3383, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "38542:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 3381, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3265, + "src": "38526:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38532:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "38526:15:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 3384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38526:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3385, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3341, + "src": "38550:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38526:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "38507:52:5" + }, + { + "assignments": [ + 3389 + ], + "declarations": [ + { + "constant": false, + "id": 3389, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "38593:9:5", + "nodeType": "VariableDeclaration", + "scope": 3406, + "src": "38585:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3388, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38585:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3395, + "initialValue": { + "arguments": [ + { + "id": 3392, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3341, + "src": "38627:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3393, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3339, + "src": "38638:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3390, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3380, + "src": "38605:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38614:12:5", + "memberName": "getAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10420, + "src": "38605:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38605:43:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "38585:63:5" + }, + { + "expression": { + "arguments": [ + { + "id": 3400, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3389, + "src": "38702:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38713:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3402, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3272, + "src": "38716:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 3403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38727:2:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 3397, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "38691:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3396, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "38675:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 3398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38675:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 3399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38697:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7143, + "src": "38675:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 3404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38675:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3405, + "nodeType": "ExpressionStatement", + "src": "38675:55:5" + } + ] + }, + "id": 3407, + "nodeType": "IfStatement", + "src": "38180:573:5", + "trueBody": { + "id": 3378, + "nodeType": "Block", + "src": "38203:272:5", + "statements": [ + { + "assignments": [ + 3352 + ], + "declarations": [ + { + "constant": false, + "id": 3352, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "38237:8:5", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "38229:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38229:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3359, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 3355, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "38264:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 3353, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3265, + "src": "38248:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38254:9:5", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "38248:15:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 3356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38248:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3357, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3339, + "src": "38272:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "38248:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "38229:52:5" + }, + { + "assignments": [ + 3361 + ], + "declarations": [ + { + "constant": false, + "id": 3361, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "38315:9:5", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "38307:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38307:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3367, + "initialValue": { + "arguments": [ + { + "id": 3364, + "name": "_reserve0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3339, + "src": "38349:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3365, + "name": "_reserve1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3341, + "src": "38360:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3362, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3352, + "src": "38327:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38336:12:5", + "memberName": "getAmountOut", + "nodeType": "MemberAccess", + "referencedDeclaration": 10420, + "src": "38327:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38327:43:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "38307:63:5" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38424:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3373, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3361, + "src": "38427:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3374, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3272, + "src": "38438:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 3375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38449:2:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 3369, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3275, + "src": "38413:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3368, + "name": "ISovrynLBPairV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7159, + "src": "38397:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISovrynLBPairV1_$7159_$", + "typeString": "type(contract ISovrynLBPairV1)" + } + }, + "id": 3370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38397:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBPairV1_$7159", + "typeString": "contract ISovrynLBPairV1" + } + }, + "id": 3371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "38419:4:5", + "memberName": "swap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7143, + "src": "38397:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,address,bytes memory) external" + } + }, + "id": 3376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "38397:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3377, + "nodeType": "ExpressionStatement", + "src": "38397:55:5" + } + ] + } + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3287, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "37764:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 3288, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3250, + "src": "37768:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "37774:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "37768:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37764:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3426, + "initializationExpression": { + "assignments": [ + 3285 + ], + "declarations": [ + { + "constant": false, + "id": 3285, + "mutability": "mutable", + "name": "i", + "nameLocation": "37761:1:5", + "nodeType": "VariableDeclaration", + "scope": 3426, + "src": "37753:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37753:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3286, + "nodeType": "VariableDeclarationStatement", + "src": "37753:9:5" + }, + "loopExpression": { + "expression": { + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "37782:3:5", + "subExpression": { + "id": 3291, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3285, + "src": "37784:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3293, + "nodeType": "ExpressionStatement", + "src": "37782:3:5" + }, + "nodeType": "ForStatement", + "src": "37748:1153:5" + } + ] + } + ] + }, + "documentation": { + "id": 3247, + "nodeType": "StructuredDocumentation", + "src": "37070:320:5", + "text": " @notice Helper function to swap exact tokens supporting for fee on transfer tokens\n @param pairs The list of pairs\n @param versions The list of versions (V1, V2)\n @param tokenPath The swap path using the binSteps following `pairBinSteps`\n @param to The address of the recipient" + }, + "id": 3429, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_swapSupportingFeeOnTransferTokens", + "nameLocation": "37404:34:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3250, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "37465:5:5", + "nodeType": "VariableDeclaration", + "scope": 3429, + "src": "37448:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37448:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3249, + "nodeType": "ArrayTypeName", + "src": "37448:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3254, + "mutability": "mutable", + "name": "versions", + "nameLocation": "37497:8:5", + "nodeType": "VariableDeclaration", + "scope": 3429, + "src": "37480:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[]" + }, + "typeName": { + "baseType": { + "id": 3252, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3251, + "name": "Version", + "nameLocations": [ + "37480:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "37480:7:5" + }, + "referencedDeclaration": 6322, + "src": "37480:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 3253, + "nodeType": "ArrayTypeName", + "src": "37480:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_storage_ptr", + "typeString": "enum ILBRouter.Version[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3258, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "37531:9:5", + "nodeType": "VariableDeclaration", + "scope": 3429, + "src": "37515:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 3256, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3255, + "name": "IERC20", + "nameLocations": [ + "37515:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "37515:6:5" + }, + "referencedDeclaration": 479, + "src": "37515:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3257, + "nodeType": "ArrayTypeName", + "src": "37515:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3260, + "mutability": "mutable", + "name": "to", + "nameLocation": "37558:2:5", + "nodeType": "VariableDeclaration", + "scope": 3429, + "src": "37550:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37550:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "37438:128:5" + }, + "returnParameters": { + "id": 3262, + "nodeType": "ParameterList", + "parameters": [], + "src": "37575:0:5" + }, + "scope": 3762, + "src": "37395:1522:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3476, + "nodeType": "Block", + "src": "39391:232:5", + "statements": [ + { + "expression": { + "id": 3454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3443, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3441, + "src": "39401:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 3448, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3433, + "src": "39449:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 3449, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3436, + "src": "39457:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 3450, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3438, + "src": "39465:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3446, + "name": "_factory2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "39418:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "id": 3447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "39428:20:5", + "memberName": "getLBPairInformation", + "nodeType": "MemberAccess", + "referencedDeclaration": 4043, + "src": "39418:30:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint256_$returns$_t_struct$_LBPairInformation_$3881_memory_ptr_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view external returns (struct ILBFactory.LBPairInformation memory)" + } + }, + "id": 3451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39418:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$3881_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "id": 3452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "39474:6:5", + "memberName": "LBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 3876, + "src": "39418:62:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + ], + "id": 3445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39410:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39410:7:5", + "typeDescriptions": {} + } + }, + "id": 3453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39410:71:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39401:80:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3455, + "nodeType": "ExpressionStatement", + "src": "39401:80:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3456, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3441, + "src": "39496:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3459, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39514:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39506:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39506:7:5", + "typeDescriptions": {} + } + }, + "id": 3460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39506:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "39496:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3475, + "nodeType": "IfStatement", + "src": "39492:125:5", + "trueBody": { + "id": 3474, + "nodeType": "Block", + "src": "39518:99:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 3465, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3433, + "src": "39572:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 3464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39564:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39564:7:5", + "typeDescriptions": {} + } + }, + "id": 3466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39564:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 3469, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3436, + "src": "39589:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 3468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39581:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39581:7:5", + "typeDescriptions": {} + } + }, + "id": 3470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39581:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3471, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3438, + "src": "39598:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3462, + "name": "LBRouter__PairNotCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6216, + "src": "39539:24:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) pure" + } + }, + "id": 3472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39539:67:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3473, + "nodeType": "RevertStatement", + "src": "39532:74:5" + } + ] + } + } + ] + }, + "documentation": { + "id": 3430, + "nodeType": "StructuredDocumentation", + "src": "38923:319:5", + "text": " @notice Helper function to return the address of the LBPair\n @dev Revert if the pair is not created yet\n @param tokenX The address of the tokenX\n @param tokenY The address of the tokenY\n @param binStep The bin step of the LBPair\n @return lbPair The address of the LBPair" + }, + "id": 3477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getLBPairInformation", + "nameLocation": "39256:21:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3433, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "39285:6:5", + "nodeType": "VariableDeclaration", + "scope": 3477, + "src": "39278:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3432, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3431, + "name": "IERC20", + "nameLocations": [ + "39278:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "39278:6:5" + }, + "referencedDeclaration": 479, + "src": "39278:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3436, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "39300:6:5", + "nodeType": "VariableDeclaration", + "scope": 3477, + "src": "39293:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3435, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3434, + "name": "IERC20", + "nameLocations": [ + "39293:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "39293:6:5" + }, + "referencedDeclaration": 479, + "src": "39293:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3438, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "39316:7:5", + "nodeType": "VariableDeclaration", + "scope": 3477, + "src": "39308:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3437, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39308:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "39277:47:5" + }, + "returnParameters": { + "id": 3442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3441, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "39379:6:5", + "nodeType": "VariableDeclaration", + "scope": 3477, + "src": "39371:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "39371:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "39370:16:5" + }, + "scope": 3762, + "src": "39247:376:5", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3545, + "nodeType": "Block", + "src": "40197:332:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "id": 3497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3494, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3489, + "src": "40211:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 3495, + "name": "Version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6322, + "src": "40222:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Version_$6322_$", + "typeString": "type(enum ILBRouter.Version)" + } + }, + "id": 3496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "40230:2:5", + "memberName": "V1", + "nodeType": "MemberAccess", + "referencedDeclaration": 6320, + "src": "40222:10:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "src": "40211:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3543, + "nodeType": "Block", + "src": "40436:87:5", + "statements": [ + { + "expression": { + "id": 3541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3532, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "40450:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 3536, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "40487:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 3537, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3484, + "src": "40495:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 3538, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "40503:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3535, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "40465:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint256_$returns$_t_address_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (address)" + } + }, + "id": 3539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40465:46:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40457:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40457:7:5", + "typeDescriptions": {} + } + }, + "id": 3540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40457:55:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40450:62:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3542, + "nodeType": "ExpressionStatement", + "src": "40450:62:5" + } + ] + }, + "id": 3544, + "nodeType": "IfStatement", + "src": "40207:316:5", + "trueBody": { + "id": 3531, + "nodeType": "Block", + "src": "40234:196:5", + "statements": [ + { + "expression": { + "id": 3510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3498, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "40248:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 3503, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "40282:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 3502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40274:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40274:7:5", + "typeDescriptions": {} + } + }, + "id": 3504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40274:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 3507, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3484, + "src": "40299:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 3506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40291:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40291:7:5", + "typeDescriptions": {} + } + }, + "id": 3508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40291:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 3499, + "name": "_factoryV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "40255:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "id": 3500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "40266:7:5", + "memberName": "getPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 6879, + "src": "40255:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) view external returns (address)" + } + }, + "id": 3509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40255:52:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40248:59:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3511, + "nodeType": "ExpressionStatement", + "src": "40248:59:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3512, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "40325:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40341:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40333:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40333:7:5", + "typeDescriptions": {} + } + }, + "id": 3516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40333:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40325:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3530, + "nodeType": "IfStatement", + "src": "40321:98:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 3521, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "40385:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 3520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40377:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40377:7:5", + "typeDescriptions": {} + } + }, + "id": 3522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40377:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 3525, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3484, + "src": "40402:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 3524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40394:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40394:7:5", + "typeDescriptions": {} + } + }, + "id": 3526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40394:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3527, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "40411:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3518, + "name": "LBRouter__PairNotCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6216, + "src": "40352:24:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) pure" + } + }, + "id": 3528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40352:67:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3529, + "nodeType": "RevertStatement", + "src": "40345:74:5" + } + } + ] + } + } + ] + }, + "documentation": { + "id": 3478, + "nodeType": "StructuredDocumentation", + "src": "39629:417:5", + "text": " @notice Helper function to return the address of the pair (v1 or v2, according to `binStep`)\n @dev Revert if the pair is not created yet\n @param tokenX The address of the tokenX\n @param tokenY The address of the tokenY\n @param binStep The bin step of the LBPair\n @param version The version of the LBPair\n @return pair The address of the pair of binStep `binStep`" + }, + "id": 3546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPair", + "nameLocation": "40060:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3481, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "40076:6:5", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "40069:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3480, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3479, + "name": "IERC20", + "nameLocations": [ + "40069:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "40069:6:5" + }, + "referencedDeclaration": 479, + "src": "40069:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3484, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "40091:6:5", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "40084:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3483, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3482, + "name": "IERC20", + "nameLocations": [ + "40084:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "40084:6:5" + }, + "referencedDeclaration": 479, + "src": "40084:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3486, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "40107:7:5", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "40099:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40099:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3489, + "mutability": "mutable", + "name": "version", + "nameLocation": "40124:7:5", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "40116:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + }, + "typeName": { + "id": 3488, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3487, + "name": "Version", + "nameLocations": [ + "40116:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "40116:7:5" + }, + "referencedDeclaration": 6322, + "src": "40116:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "visibility": "internal" + } + ], + "src": "40068:64:5" + }, + "returnParameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3492, + "mutability": "mutable", + "name": "pair", + "nameLocation": "40187:4:5", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "40179:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40179:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40178:14:5" + }, + "scope": 3762, + "src": "40051:478:5", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3624, + "nodeType": "Block", + "src": "41009:387:5", + "statements": [ + { + "expression": { + "id": 3571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3564, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3562, + "src": "41019:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 3568, + "name": "pairBinSteps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3550, + "src": "41041:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "41054:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "41041:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "41027:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 3565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41031:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3566, + "nodeType": "ArrayTypeName", + "src": "41031:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + } + }, + "id": 3570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41027:34:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "41019:42:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3572, + "nodeType": "ExpressionStatement", + "src": "41019:42:5" + }, + { + "assignments": [ + 3575 + ], + "declarations": [ + { + "constant": false, + "id": 3575, + "mutability": "mutable", + "name": "token", + "nameLocation": "41079:5:5", + "nodeType": "VariableDeclaration", + "scope": 3624, + "src": "41072:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3574, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3573, + "name": "IERC20", + "nameLocations": [ + "41072:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "41072:6:5" + }, + "referencedDeclaration": 479, + "src": "41072:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 3576, + "nodeType": "VariableDeclarationStatement", + "src": "41072:12:5" + }, + { + "assignments": [ + 3579 + ], + "declarations": [ + { + "constant": false, + "id": 3579, + "mutability": "mutable", + "name": "tokenNext", + "nameLocation": "41101:9:5", + "nodeType": "VariableDeclaration", + "scope": 3624, + "src": "41094:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3578, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3577, + "name": "IERC20", + "nameLocations": [ + "41094:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "41094:6:5" + }, + "referencedDeclaration": 479, + "src": "41094:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 3583, + "initialValue": { + "baseExpression": { + "id": 3580, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3558, + "src": "41113:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 3582, + "indexExpression": { + "hexValue": "30", + "id": 3581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41123:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41113:12:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "41094:31:5" + }, + { + "id": 3623, + "nodeType": "UncheckedBlock", + "src": "41135:255:5", + "statements": [ + { + "body": { + "id": 3621, + "nodeType": "Block", + "src": "41198:182:5", + "statements": [ + { + "expression": { + "id": 3596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3594, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3575, + "src": "41216:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3595, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3579, + "src": "41224:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "41216:17:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3597, + "nodeType": "ExpressionStatement", + "src": "41216:17:5" + }, + { + "expression": { + "id": 3604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3598, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3579, + "src": "41251:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 3599, + "name": "tokenPath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3558, + "src": "41263:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[] memory" + } + }, + "id": 3603, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3600, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "41273:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 3601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41277:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "41273:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41263:16:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "src": "41251:28:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3605, + "nodeType": "ExpressionStatement", + "src": "41251:28:5" + }, + { + "expression": { + "id": 3619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3606, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3562, + "src": "41298:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3608, + "indexExpression": { + "id": 3607, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "41304:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "41298:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3610, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3575, + "src": "41318:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 3611, + "name": "tokenNext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3579, + "src": "41325:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "baseExpression": { + "id": 3612, + "name": "pairBinSteps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3550, + "src": "41336:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3614, + "indexExpression": { + "id": 3613, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "41349:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41336:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 3615, + "name": "versions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3554, + "src": "41353:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[] memory" + } + }, + "id": 3617, + "indexExpression": { + "id": 3616, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "41362:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41353:11:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + ], + "id": 3609, + "name": "_getPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3546, + "src": "41309:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$_t_contract$_IERC20_$479_$_t_uint256_$_t_enum$_Version_$6322_$returns$_t_address_$", + "typeString": "function (contract IERC20,contract IERC20,uint256,enum ILBRouter.Version) view returns (address)" + } + }, + "id": 3618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41309:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "41298:67:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3620, + "nodeType": "ExpressionStatement", + "src": "41298:67:5" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3587, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "41175:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 3588, + "name": "pairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3562, + "src": "41179:5:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "41185:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "41179:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41175:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3622, + "initializationExpression": { + "assignments": [ + 3585 + ], + "declarations": [ + { + "constant": false, + "id": 3585, + "mutability": "mutable", + "name": "i", + "nameLocation": "41172:1:5", + "nodeType": "VariableDeclaration", + "scope": 3622, + "src": "41164:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "41164:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3586, + "nodeType": "VariableDeclarationStatement", + "src": "41164:9:5" + }, + "loopExpression": { + "expression": { + "id": 3592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "41193:3:5", + "subExpression": { + "id": 3591, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "41195:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3593, + "nodeType": "ExpressionStatement", + "src": "41193:3:5" + }, + "nodeType": "ForStatement", + "src": "41159:221:5" + } + ] + } + ] + }, + "documentation": { + "id": 3547, + "nodeType": "StructuredDocumentation", + "src": "40535:291:5", + "text": " @notice Helper function to return a list of pairs\n @param pairBinSteps The list of bin steps\n @param versions The list of versions (V1, V2)\n @param tokenPath The swap path using the binSteps following `pairBinSteps`\n @return pairs The list of pairs" + }, + "id": 3625, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPairs", + "nameLocation": "40840:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3550, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "40867:12:5", + "nodeType": "VariableDeclaration", + "scope": 3625, + "src": "40850:29:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40850:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3549, + "nodeType": "ArrayTypeName", + "src": "40850:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3554, + "mutability": "mutable", + "name": "versions", + "nameLocation": "40898:8:5", + "nodeType": "VariableDeclaration", + "scope": 3625, + "src": "40881:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_memory_ptr", + "typeString": "enum ILBRouter.Version[]" + }, + "typeName": { + "baseType": { + "id": 3552, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3551, + "name": "Version", + "nameLocations": [ + "40881:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "40881:7:5" + }, + "referencedDeclaration": 6322, + "src": "40881:7:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 3553, + "nodeType": "ArrayTypeName", + "src": "40881:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_storage_ptr", + "typeString": "enum ILBRouter.Version[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3558, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "40924:9:5", + "nodeType": "VariableDeclaration", + "scope": 3625, + "src": "40908:25:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 3556, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3555, + "name": "IERC20", + "nameLocations": [ + "40908:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "40908:6:5" + }, + "referencedDeclaration": 479, + "src": "40908:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3557, + "nodeType": "ArrayTypeName", + "src": "40908:8:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + } + ], + "src": "40849:85:5" + }, + "returnParameters": { + "id": 3563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3562, + "mutability": "mutable", + "name": "pairs", + "nameLocation": "40998:5:5", + "nodeType": "VariableDeclaration", + "scope": 3625, + "src": "40981:22:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40981:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3561, + "nodeType": "ArrayTypeName", + "src": "40981:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "40980:24:5" + }, + "scope": 3762, + "src": "40831:565:5", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3648, + "nodeType": "Block", + "src": "41680:81:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3636, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3633, + "src": "41694:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "41704:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "41694:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3640, + "nodeType": "IfStatement", + "src": "41690:24:5", + "trueBody": { + "functionReturnParameters": 3635, + "id": 3639, + "nodeType": "Return", + "src": "41707:7:5" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3644, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3631, + "src": "41743:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3645, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3633, + "src": "41747:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3641, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "41724:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "41730:12:5", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10542, + "src": "41724:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 3646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "41724:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3647, + "nodeType": "ExpressionStatement", + "src": "41724:30:5" + } + ] + }, + "documentation": { + "id": 3626, + "nodeType": "StructuredDocumentation", + "src": "41402:200:5", + "text": " @notice Helper function to transfer tokens to `to`\n @param token The address of the token\n @param to The address of the recipient\n @param amount The amount to send" + }, + "id": 3649, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nameLocation": "41616:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3629, + "mutability": "mutable", + "name": "token", + "nameLocation": "41637:5:5", + "nodeType": "VariableDeclaration", + "scope": 3649, + "src": "41630:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3628, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3627, + "name": "IERC20", + "nameLocations": [ + "41630:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "41630:6:5" + }, + "referencedDeclaration": 479, + "src": "41630:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3631, + "mutability": "mutable", + "name": "to", + "nameLocation": "41652:2:5", + "nodeType": "VariableDeclaration", + "scope": 3649, + "src": "41644:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "41644:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3633, + "mutability": "mutable", + "name": "amount", + "nameLocation": "41664:6:5", + "nodeType": "VariableDeclaration", + "scope": 3649, + "src": "41656:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3632, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "41656:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "41629:42:5" + }, + "returnParameters": { + "id": 3635, + "nodeType": "ParameterList", + "parameters": [], + "src": "41680:0:5" + }, + "scope": 3762, + "src": "41607:154:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3675, + "nodeType": "Block", + "src": "42120:91:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3662, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3659, + "src": "42134:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42144:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "42134:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3666, + "nodeType": "IfStatement", + "src": "42130:24:5", + "trueBody": { + "functionReturnParameters": 3661, + "id": 3665, + "nodeType": "Return", + "src": "42147:7:5" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3670, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3655, + "src": "42187:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3671, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3657, + "src": "42193:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3672, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3659, + "src": "42197:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3667, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3653, + "src": "42164:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "42170:16:5", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 10514, + "src": "42164:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 3673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42164:40:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3674, + "nodeType": "ExpressionStatement", + "src": "42164:40:5" + } + ] + }, + "documentation": { + "id": 3650, + "nodeType": "StructuredDocumentation", + "src": "41767:257:5", + "text": " @notice Helper function to transfer tokens from `from` to `to`\n @param token The address of the token\n @param from The address of the sender\n @param to The address of the recipient\n @param amount The amount to send" + }, + "id": 3676, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransferFrom", + "nameLocation": "42038:17:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3653, + "mutability": "mutable", + "name": "token", + "nameLocation": "42063:5:5", + "nodeType": "VariableDeclaration", + "scope": 3676, + "src": "42056:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3652, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3651, + "name": "IERC20", + "nameLocations": [ + "42056:6:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "42056:6:5" + }, + "referencedDeclaration": 479, + "src": "42056:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3655, + "mutability": "mutable", + "name": "from", + "nameLocation": "42078:4:5", + "nodeType": "VariableDeclaration", + "scope": 3676, + "src": "42070:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42070:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3657, + "mutability": "mutable", + "name": "to", + "nameLocation": "42092:2:5", + "nodeType": "VariableDeclaration", + "scope": 3676, + "src": "42084:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42084:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3659, + "mutability": "mutable", + "name": "amount", + "nameLocation": "42104:6:5", + "nodeType": "VariableDeclaration", + "scope": 3676, + "src": "42096:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42096:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "42055:56:5" + }, + "returnParameters": { + "id": 3661, + "nodeType": "ParameterList", + "parameters": [], + "src": "42120:0:5" + }, + "scope": 3762, + "src": "42029:182:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3706, + "nodeType": "Block", + "src": "42442:166:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3684, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3681, + "src": "42456:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42466:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "42456:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3688, + "nodeType": "IfStatement", + "src": "42452:24:5", + "trueBody": { + "functionReturnParameters": 3683, + "id": 3687, + "nodeType": "Return", + "src": "42469:7:5" + } + }, + { + "assignments": [ + 3690, + null + ], + "declarations": [ + { + "constant": false, + "id": 3690, + "mutability": "mutable", + "name": "success", + "nameLocation": "42492:7:5", + "nodeType": "VariableDeclaration", + "scope": 3706, + "src": "42487:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3689, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "42487:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 3697, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 3695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42527:2:5", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "id": 3691, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3679, + "src": "42504:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "42507:4:5", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "42504:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 3693, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3681, + "src": "42519:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "42504:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42504:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "42486:44:5" + }, + { + "condition": { + "id": 3699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "42544:8:5", + "subExpression": { + "id": 3698, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3690, + "src": "42545:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3705, + "nodeType": "IfStatement", + "src": "42540:61:5", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 3701, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3679, + "src": "42590:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3702, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3681, + "src": "42594:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3700, + "name": "LBRouter__FailedToSendNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6276, + "src": "42561:28:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 3703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42561:40:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3704, + "nodeType": "RevertStatement", + "src": "42554:47:5" + } + } + ] + }, + "documentation": { + "id": 3677, + "nodeType": "StructuredDocumentation", + "src": "42217:155:5", + "text": " @notice Helper function to transfer NATIVE to `to`\n @param to The address of the recipient\n @param amount The amount to send" + }, + "id": 3707, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransferNative", + "nameLocation": "42386:19:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3679, + "mutability": "mutable", + "name": "to", + "nameLocation": "42414:2:5", + "nodeType": "VariableDeclaration", + "scope": 3707, + "src": "42406:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42406:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3681, + "mutability": "mutable", + "name": "amount", + "nameLocation": "42426:6:5", + "nodeType": "VariableDeclaration", + "scope": 3707, + "src": "42418:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42418:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "42405:28:5" + }, + "returnParameters": { + "id": 3683, + "nodeType": "ParameterList", + "parameters": [], + "src": "42442:0:5" + }, + "scope": 3762, + "src": "42377:231:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3735, + "nodeType": "Block", + "src": "42875:135:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3715, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3712, + "src": "42889:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42899:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "42889:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3719, + "nodeType": "IfStatement", + "src": "42885:24:5", + "trueBody": { + "functionReturnParameters": 3714, + "id": 3718, + "nodeType": "Return", + "src": "42902:7:5" + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 3720, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "42919:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "id": 3722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "42928:7:5", + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 7169, + "src": "42919:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 3724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 3723, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3712, + "src": "42943:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "42919:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 3725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42919:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3726, + "nodeType": "ExpressionStatement", + "src": "42919:33:5" + }, + { + "expression": { + "arguments": [ + { + "id": 3731, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3710, + "src": "42992:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3732, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3712, + "src": "42996:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 3728, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "42969:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + ], + "id": 3727, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "42962:6:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$479_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42962:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 3730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "42979:12:5", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10542, + "src": "42962:29:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 3733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "42962:41:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3734, + "nodeType": "ExpressionStatement", + "src": "42962:41:5" + } + ] + }, + "documentation": { + "id": 3708, + "nodeType": "StructuredDocumentation", + "src": "42614:184:5", + "text": " @notice Helper function to deposit and transfer WNative to `to`\n @param to The address of the recipient\n @param amount The amount to deposit and transfer" + }, + "id": 3736, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_wNativeDepositAndTransfer", + "nameLocation": "42812:26:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3710, + "mutability": "mutable", + "name": "to", + "nameLocation": "42847:2:5", + "nodeType": "VariableDeclaration", + "scope": 3736, + "src": "42839:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3709, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "42839:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3712, + "mutability": "mutable", + "name": "amount", + "nameLocation": "42859:6:5", + "nodeType": "VariableDeclaration", + "scope": 3736, + "src": "42851:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42851:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "42838:28:5" + }, + "returnParameters": { + "id": 3714, + "nodeType": "ParameterList", + "parameters": [], + "src": "42875:0:5" + }, + "scope": 3762, + "src": "42803:207:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3760, + "nodeType": "Block", + "src": "43280:117:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3744, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3741, + "src": "43294:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43304:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "43294:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3748, + "nodeType": "IfStatement", + "src": "43290:24:5", + "trueBody": { + "functionReturnParameters": 3743, + "id": 3747, + "nodeType": "Return", + "src": "43307:7:5" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3752, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3741, + "src": "43342:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3749, + "name": "_wnative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "43324:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "id": 3751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "43333:8:5", + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 7174, + "src": "43324:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 3753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43324:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3754, + "nodeType": "ExpressionStatement", + "src": "43324:25:5" + }, + { + "expression": { + "arguments": [ + { + "id": 3756, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3739, + "src": "43379:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3757, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3741, + "src": "43383:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3755, + "name": "_safeTransferNative", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3707, + "src": "43359:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "43359:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3759, + "nodeType": "ExpressionStatement", + "src": "43359:31:5" + } + ] + }, + "documentation": { + "id": 3737, + "nodeType": "StructuredDocumentation", + "src": "43016:186:5", + "text": " @notice Helper function to withdraw and transfer WNative to `to`\n @param to The address of the recipient\n @param amount The amount to withdraw and transfer" + }, + "id": 3761, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_wNativeWithdrawAndTransfer", + "nameLocation": "43216:27:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3739, + "mutability": "mutable", + "name": "to", + "nameLocation": "43252:2:5", + "nodeType": "VariableDeclaration", + "scope": 3761, + "src": "43244:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "43244:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3741, + "mutability": "mutable", + "name": "amount", + "nameLocation": "43264:6:5", + "nodeType": "VariableDeclaration", + "scope": 3761, + "src": "43256:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "43256:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "43243:28:5" + }, + "returnParameters": { + "id": 3743, + "nodeType": "ParameterList", + "parameters": [], + "src": "43280:0:5" + }, + "scope": 3762, + "src": "43207:190:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 3763, + "src": "1523:41876:5", + "usedErrors": [ + 164, + 167, + 6208, + 6216, + 6222, + 6226, + 6228, + 6230, + 6234, + 6238, + 6242, + 6244, + 6246, + 6254, + 6264, + 6270, + 6276, + 6282, + 6286, + 6292, + 6298, + 6302, + 6306, + 6318, + 10279, + 10281, + 10483, + 11042 + ], + "usedEvents": [ + 172 + ] + } + ], + "src": "33:43367:5" + }, + "id": 5 + }, + "src/interfaces/ILBFactory.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBFactory.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "ILBFactory": [ + 4236 + ], + "ILBHooks": [ + 4434 + ], + "ILBPair": [ + 6187 + ] + }, + "id": 4237, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3764, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:6" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 3766, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4237, + "sourceUnit": 480, + "src": "59:70:6", + "symbolAliases": [ + { + "foreign": { + "id": 3765, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBHooks.sol", + "file": "./ILBHooks.sol", + "id": 3768, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4237, + "sourceUnit": 4435, + "src": "131:40:6", + "symbolAliases": [ + { + "foreign": { + "id": 3767, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "139:8:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBPair.sol", + "file": "./ILBPair.sol", + "id": 3770, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4237, + "sourceUnit": 6188, + "src": "172:38:6", + "symbolAliases": [ + { + "foreign": { + "id": 3769, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "180:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBFactory", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3771, + "nodeType": "StructuredDocumentation", + "src": "212:102:6", + "text": " @title Liquidity Book Factory Interface\n @notice Required interface of LBFactory contract" + }, + "fullyImplemented": false, + "id": 4236, + "linearizedBaseContracts": [ + 4236 + ], + "name": "ILBFactory", + "nameLocation": "325:10:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "2f9b1853", + "id": 3776, + "name": "LBFactory__IdenticalAddresses", + "nameLocation": "348:29:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3774, + "mutability": "mutable", + "name": "token", + "nameLocation": "385:5:6", + "nodeType": "VariableDeclaration", + "scope": 3776, + "src": "378:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3773, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3772, + "name": "IERC20", + "nameLocations": [ + "378:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "378:6:6" + }, + "referencedDeclaration": 479, + "src": "378:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "377:14:6" + }, + "src": "342:50:6" + }, + { + "errorSelector": "8e888ef3", + "id": 3781, + "name": "LBFactory__QuoteAssetNotWhitelisted", + "nameLocation": "403:35:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3779, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "446:10:6", + "nodeType": "VariableDeclaration", + "scope": 3781, + "src": "439:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3778, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3777, + "name": "IERC20", + "nameLocations": [ + "439:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "439:6:6" + }, + "referencedDeclaration": 479, + "src": "439:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "438:19:6" + }, + "src": "397:61:6" + }, + { + "errorSelector": "03ce0ad9", + "id": 3786, + "name": "LBFactory__QuoteAssetAlreadyWhitelisted", + "nameLocation": "469:39:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3784, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "516:10:6", + "nodeType": "VariableDeclaration", + "scope": 3786, + "src": "509:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3783, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3782, + "name": "IERC20", + "nameLocations": [ + "509:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "509:6:6" + }, + "referencedDeclaration": 479, + "src": "509:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "508:19:6" + }, + "src": "463:65:6" + }, + { + "errorSelector": "95cf3ee4", + "id": 3788, + "name": "LBFactory__AddressZero", + "nameLocation": "539:22:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3787, + "nodeType": "ParameterList", + "parameters": [], + "src": "561:2:6" + }, + "src": "533:31:6" + }, + { + "errorSelector": "cb27a435", + "id": 3798, + "name": "LBFactory__LBPairAlreadyExists", + "nameLocation": "575:30:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3791, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "613:6:6", + "nodeType": "VariableDeclaration", + "scope": 3798, + "src": "606:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3790, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3789, + "name": "IERC20", + "nameLocations": [ + "606:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "606:6:6" + }, + "referencedDeclaration": 479, + "src": "606:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3794, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "628:6:6", + "nodeType": "VariableDeclaration", + "scope": 3798, + "src": "621:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3793, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3792, + "name": "IERC20", + "nameLocations": [ + "621:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "621:6:6" + }, + "referencedDeclaration": 479, + "src": "621:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3796, + "mutability": "mutable", + "name": "_binStep", + "nameLocation": "644:8:6", + "nodeType": "VariableDeclaration", + "scope": 3798, + "src": "636:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "636:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "605:48:6" + }, + "src": "569:85:6" + }, + { + "errorSelector": "40aa4644", + "id": 3808, + "name": "LBFactory__LBPairDoesNotExist", + "nameLocation": "665:29:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3801, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "702:6:6", + "nodeType": "VariableDeclaration", + "scope": 3808, + "src": "695:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3800, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3799, + "name": "IERC20", + "nameLocations": [ + "695:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "695:6:6" + }, + "referencedDeclaration": 479, + "src": "695:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3804, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "717:6:6", + "nodeType": "VariableDeclaration", + "scope": 3808, + "src": "710:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3803, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3802, + "name": "IERC20", + "nameLocations": [ + "710:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "710:6:6" + }, + "referencedDeclaration": 479, + "src": "710:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3806, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "733:7:6", + "nodeType": "VariableDeclaration", + "scope": 3808, + "src": "725:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "725:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "694:47:6" + }, + "src": "659:83:6" + }, + { + "errorSelector": "b65ee953", + "id": 3818, + "name": "LBFactory__LBPairNotCreated", + "nameLocation": "753:27:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3811, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "788:6:6", + "nodeType": "VariableDeclaration", + "scope": 3818, + "src": "781:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3810, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3809, + "name": "IERC20", + "nameLocations": [ + "781:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "781:6:6" + }, + "referencedDeclaration": 479, + "src": "781:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3814, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "803:6:6", + "nodeType": "VariableDeclaration", + "scope": 3818, + "src": "796:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3813, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3812, + "name": "IERC20", + "nameLocations": [ + "796:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "796:6:6" + }, + "referencedDeclaration": 479, + "src": "796:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3816, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "819:7:6", + "nodeType": "VariableDeclaration", + "scope": 3818, + "src": "811:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3815, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "811:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "780:47:6" + }, + "src": "747:81:6" + }, + { + "errorSelector": "5e8988c1", + "id": 3824, + "name": "LBFactory__FlashLoanFeeAboveMax", + "nameLocation": "839:31:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3820, + "mutability": "mutable", + "name": "fees", + "nameLocation": "879:4:6", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "871:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "871:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3822, + "mutability": "mutable", + "name": "maxFees", + "nameLocation": "893:7:6", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "885:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3821, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "885:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "870:31:6" + }, + "src": "833:69:6" + }, + { + "errorSelector": "4f958e71", + "id": 3828, + "name": "LBFactory__BinStepTooLow", + "nameLocation": "913:24:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3826, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "946:7:6", + "nodeType": "VariableDeclaration", + "scope": 3828, + "src": "938:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3825, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "938:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "937:17:6" + }, + "src": "907:48:6" + }, + { + "errorSelector": "09f85fce", + "id": 3834, + "name": "LBFactory__PresetIsLockedForUsers", + "nameLocation": "966:33:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3830, + "mutability": "mutable", + "name": "user", + "nameLocation": "1008:4:6", + "nodeType": "VariableDeclaration", + "scope": 3834, + "src": "1000:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1000:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3832, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1022:7:6", + "nodeType": "VariableDeclaration", + "scope": 3834, + "src": "1014:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1014:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "999:31:6" + }, + "src": "960:71:6" + }, + { + "errorSelector": "00ddccca", + "id": 3836, + "name": "LBFactory__LBPairIgnoredIsAlreadyInTheSameState", + "nameLocation": "1042:47:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3835, + "nodeType": "ParameterList", + "parameters": [], + "src": "1089:2:6" + }, + "src": "1036:56:6" + }, + { + "errorSelector": "fb22c17e", + "id": 3840, + "name": "LBFactory__BinStepHasNoPreset", + "nameLocation": "1103:29:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3838, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1141:7:6", + "nodeType": "VariableDeclaration", + "scope": 3840, + "src": "1133:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1133:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1132:17:6" + }, + "src": "1097:53:6" + }, + { + "errorSelector": "237c71b6", + "id": 3842, + "name": "LBFactory__PresetOpenStateIsAlreadyInTheSameState", + "nameLocation": "1161:49:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3841, + "nodeType": "ParameterList", + "parameters": [], + "src": "1210:2:6" + }, + "src": "1155:58:6" + }, + { + "errorSelector": "4fcea971", + "id": 3846, + "name": "LBFactory__SameFeeRecipient", + "nameLocation": "1224:27:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3845, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3844, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "1260:12:6", + "nodeType": "VariableDeclaration", + "scope": 3846, + "src": "1252:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3843, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1252:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1251:22:6" + }, + "src": "1218:56:6" + }, + { + "errorSelector": "6ea8c7a4", + "id": 3850, + "name": "LBFactory__SameFlashLoanFee", + "nameLocation": "1285:27:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3848, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "1321:12:6", + "nodeType": "VariableDeclaration", + "scope": 3850, + "src": "1313:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3847, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1313:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1312:22:6" + }, + "src": "1279:56:6" + }, + { + "errorSelector": "147ce15e", + "id": 3854, + "name": "LBFactory__LBPairSafetyCheckFailed", + "nameLocation": "1346:34:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3852, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "1389:20:6", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "1381:28:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3851, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1381:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1380:30:6" + }, + "src": "1340:71:6" + }, + { + "errorSelector": "6f69dca8", + "id": 3858, + "name": "LBFactory__SameImplementation", + "nameLocation": "1422:29:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3856, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "1460:20:6", + "nodeType": "VariableDeclaration", + "scope": 3858, + "src": "1452:28:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3855, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1452:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1451:30:6" + }, + "src": "1416:66:6" + }, + { + "errorSelector": "9c1737f9", + "id": 3862, + "name": "LBFactory__SameHooksImplementation", + "nameLocation": "1493:34:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3861, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3860, + "mutability": "mutable", + "name": "hooksImplementation", + "nameLocation": "1536:19:6", + "nodeType": "VariableDeclaration", + "scope": 3862, + "src": "1528:27:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3859, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1528:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1527:29:6" + }, + "src": "1487:70:6" + }, + { + "errorSelector": "b70cd0db", + "id": 3866, + "name": "LBFactory__SameHooksParameters", + "nameLocation": "1568:30:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3864, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "1607:15:6", + "nodeType": "VariableDeclaration", + "scope": 3866, + "src": "1599:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3863, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1599:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1598:25:6" + }, + "src": "1562:62:6" + }, + { + "errorSelector": "d43a15d1", + "id": 3868, + "name": "LBFactory__InvalidHooksParameters", + "nameLocation": "1635:33:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3867, + "nodeType": "ParameterList", + "parameters": [], + "src": "1668:2:6" + }, + "src": "1629:42:6" + }, + { + "errorSelector": "7c64a79e", + "id": 3870, + "name": "LBFactory__CannotGrantDefaultAdminRole", + "nameLocation": "1682:38:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3869, + "nodeType": "ParameterList", + "parameters": [], + "src": "1720:2:6" + }, + "src": "1676:47:6" + }, + { + "canonicalName": "ILBFactory.LBPairInformation", + "documentation": { + "id": 3871, + "nodeType": "StructuredDocumentation", + "src": "1729:372:6", + "text": " @dev Structure to store the LBPair information, such as:\n binStep: The bin step of the LBPair\n LBPair: The address of the LBPair\n createdByOwner: Whether the pair was created by the owner of the factory\n ignoredForRouting: Whether the pair is ignored for routing or not. An ignored pair will not be explored during routes finding" + }, + "id": 3881, + "members": [ + { + "constant": false, + "id": 3873, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2148:7:6", + "nodeType": "VariableDeclaration", + "scope": 3881, + "src": "2141:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 3872, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2141:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3876, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "2173:6:6", + "nodeType": "VariableDeclaration", + "scope": 3881, + "src": "2165:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 3875, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3874, + "name": "ILBPair", + "nameLocations": [ + "2165:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "2165:7:6" + }, + "referencedDeclaration": 6187, + "src": "2165:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3878, + "mutability": "mutable", + "name": "createdByOwner", + "nameLocation": "2194:14:6", + "nodeType": "VariableDeclaration", + "scope": 3881, + "src": "2189:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3877, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2189:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3880, + "mutability": "mutable", + "name": "ignoredForRouting", + "nameLocation": "2223:17:6", + "nodeType": "VariableDeclaration", + "scope": 3881, + "src": "2218:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3879, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2218:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "LBPairInformation", + "nameLocation": "2113:17:6", + "nodeType": "StructDefinition", + "scope": 4236, + "src": "2106:141:6", + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff", + "id": 3896, + "name": "LBPairCreated", + "nameLocation": "2259:13:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3884, + "indexed": true, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "2297:6:6", + "nodeType": "VariableDeclaration", + "scope": 3896, + "src": "2282:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3883, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3882, + "name": "IERC20", + "nameLocations": [ + "2282:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2282:6:6" + }, + "referencedDeclaration": 479, + "src": "2282:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3887, + "indexed": true, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "2320:6:6", + "nodeType": "VariableDeclaration", + "scope": 3896, + "src": "2305:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3886, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3885, + "name": "IERC20", + "nameLocations": [ + "2305:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2305:6:6" + }, + "referencedDeclaration": 479, + "src": "2305:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3889, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2344:7:6", + "nodeType": "VariableDeclaration", + "scope": 3896, + "src": "2328:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2328:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3892, + "indexed": false, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "2361:6:6", + "nodeType": "VariableDeclaration", + "scope": 3896, + "src": "2353:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 3891, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3890, + "name": "ILBPair", + "nameLocations": [ + "2353:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "2353:7:6" + }, + "referencedDeclaration": 6187, + "src": "2353:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3894, + "indexed": false, + "mutability": "mutable", + "name": "pid", + "nameLocation": "2377:3:6", + "nodeType": "VariableDeclaration", + "scope": 3896, + "src": "2369:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2369:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2272:114:6" + }, + "src": "2253:134:6" + }, + { + "anonymous": false, + "eventSelector": "15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721", + "id": 3902, + "name": "FeeRecipientSet", + "nameLocation": "2399:15:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3898, + "indexed": false, + "mutability": "mutable", + "name": "oldRecipient", + "nameLocation": "2423:12:6", + "nodeType": "VariableDeclaration", + "scope": 3902, + "src": "2415:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2415:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3900, + "indexed": false, + "mutability": "mutable", + "name": "newRecipient", + "nameLocation": "2445:12:6", + "nodeType": "VariableDeclaration", + "scope": 3902, + "src": "2437:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2437:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2414:44:6" + }, + "src": "2393:66:6" + }, + { + "anonymous": false, + "eventSelector": "5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50", + "id": 3908, + "name": "FlashLoanFeeSet", + "nameLocation": "2471:15:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3904, + "indexed": false, + "mutability": "mutable", + "name": "oldFlashLoanFee", + "nameLocation": "2495:15:6", + "nodeType": "VariableDeclaration", + "scope": 3908, + "src": "2487:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2487:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3906, + "indexed": false, + "mutability": "mutable", + "name": "newFlashLoanFee", + "nameLocation": "2520:15:6", + "nodeType": "VariableDeclaration", + "scope": 3908, + "src": "2512:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2512:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2486:50:6" + }, + "src": "2465:72:6" + }, + { + "anonymous": false, + "eventSelector": "900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e", + "id": 3914, + "name": "LBPairImplementationSet", + "nameLocation": "2549:23:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3910, + "indexed": false, + "mutability": "mutable", + "name": "oldLBPairImplementation", + "nameLocation": "2581:23:6", + "nodeType": "VariableDeclaration", + "scope": 3914, + "src": "2573:31:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3909, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2573:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3912, + "indexed": false, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "2614:20:6", + "nodeType": "VariableDeclaration", + "scope": 3914, + "src": "2606:28:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2606:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2572:63:6" + }, + "src": "2543:93:6" + }, + { + "anonymous": false, + "eventSelector": "44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f", + "id": 3921, + "name": "LBPairIgnoredStateChanged", + "nameLocation": "2648:25:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3917, + "indexed": true, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "2690:6:6", + "nodeType": "VariableDeclaration", + "scope": 3921, + "src": "2674:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 3916, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3915, + "name": "ILBPair", + "nameLocations": [ + "2674:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "2674:7:6" + }, + "referencedDeclaration": 6187, + "src": "2674:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3919, + "indexed": false, + "mutability": "mutable", + "name": "ignored", + "nameLocation": "2703:7:6", + "nodeType": "VariableDeclaration", + "scope": 3921, + "src": "2698:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3918, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2698:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2673:38:6" + }, + "src": "2642:70:6" + }, + { + "anonymous": false, + "eventSelector": "839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "id": 3939, + "name": "PresetSet", + "nameLocation": "2724:9:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3923, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2759:7:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2743:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2743:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3925, + "indexed": false, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "2784:10:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2776:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2776:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3927, + "indexed": false, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "2812:12:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2804:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2804:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3929, + "indexed": false, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "2842:11:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2834:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3928, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2834:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3931, + "indexed": false, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "2871:15:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2863:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3930, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2863:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3933, + "indexed": false, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "2904:18:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2896:26:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3932, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2896:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3935, + "indexed": false, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "2940:13:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2932:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3934, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2932:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3937, + "indexed": false, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "2971:24:6", + "nodeType": "VariableDeclaration", + "scope": 3939, + "src": "2963:32:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3936, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2963:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2733:268:6" + }, + "src": "2718:284:6" + }, + { + "anonymous": false, + "eventSelector": "58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "id": 3945, + "name": "PresetOpenStateChanged", + "nameLocation": "3014:22:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3941, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3053:7:6", + "nodeType": "VariableDeclaration", + "scope": 3945, + "src": "3037:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3037:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3943, + "indexed": true, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "3075:6:6", + "nodeType": "VariableDeclaration", + "scope": 3945, + "src": "3062:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3942, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3062:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3036:46:6" + }, + "src": "3008:75:6" + }, + { + "anonymous": false, + "eventSelector": "dd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be13", + "id": 3949, + "name": "PresetRemoved", + "nameLocation": "3095:13:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3947, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3125:7:6", + "nodeType": "VariableDeclaration", + "scope": 3949, + "src": "3109:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3109:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3108:25:6" + }, + "src": "3089:45:6" + }, + { + "anonymous": false, + "eventSelector": "84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "id": 3954, + "name": "QuoteAssetAdded", + "nameLocation": "3146:15:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3953, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3952, + "indexed": true, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "3177:10:6", + "nodeType": "VariableDeclaration", + "scope": 3954, + "src": "3162:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3951, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3950, + "name": "IERC20", + "nameLocations": [ + "3162:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3162:6:6" + }, + "referencedDeclaration": 479, + "src": "3162:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3161:27:6" + }, + "src": "3140:49:6" + }, + { + "anonymous": false, + "eventSelector": "0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb3", + "id": 3959, + "name": "QuoteAssetRemoved", + "nameLocation": "3201:17:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 3958, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3957, + "indexed": true, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "3234:10:6", + "nodeType": "VariableDeclaration", + "scope": 3959, + "src": "3219:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 3956, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3955, + "name": "IERC20", + "nameLocations": [ + "3219:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3219:6:6" + }, + "referencedDeclaration": 479, + "src": "3219:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3218:27:6" + }, + "src": "3195:51:6" + }, + { + "functionSelector": "701ab8c1", + "id": 3964, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getMinBinStep", + "nameLocation": "3261:13:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3960, + "nodeType": "ParameterList", + "parameters": [], + "src": "3274:2:6" + }, + "returnParameters": { + "id": 3963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3962, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3964, + "src": "3300:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3300:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3299:9:6" + }, + "scope": 4236, + "src": "3252:57:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4ccb20c0", + "id": 3969, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFeeRecipient", + "nameLocation": "3324:15:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3965, + "nodeType": "ParameterList", + "parameters": [], + "src": "3339:2:6" + }, + "returnParameters": { + "id": 3968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3967, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3969, + "src": "3365:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3966, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3365:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3364:9:6" + }, + "scope": 4236, + "src": "3315:59:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8ce9aa1c", + "id": 3974, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getMaxFlashLoanFee", + "nameLocation": "3389:18:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3970, + "nodeType": "ParameterList", + "parameters": [], + "src": "3407:2:6" + }, + "returnParameters": { + "id": 3973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3972, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3974, + "src": "3433:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3971, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3433:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3432:9:6" + }, + "scope": 4236, + "src": "3380:62:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fd90c2be", + "id": 3979, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFlashLoanFee", + "nameLocation": "3457:15:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3975, + "nodeType": "ParameterList", + "parameters": [], + "src": "3472:2:6" + }, + "returnParameters": { + "id": 3978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3977, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3979, + "src": "3498:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3498:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3497:9:6" + }, + "scope": 4236, + "src": "3448:59:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a0a0ea39", + "id": 3984, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPairBeacon", + "nameLocation": "3522:15:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3980, + "nodeType": "ParameterList", + "parameters": [], + "src": "3537:2:6" + }, + "returnParameters": { + "id": 3983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3982, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3984, + "src": "3563:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3563:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3562:9:6" + }, + "scope": 4236, + "src": "3513:59:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e937c3a", + "id": 3989, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNumberOfLBPairs", + "nameLocation": "3587:18:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3985, + "nodeType": "ParameterList", + "parameters": [], + "src": "3605:2:6" + }, + "returnParameters": { + "id": 3988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3987, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3989, + "src": "3631:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3631:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3630:9:6" + }, + "scope": 4236, + "src": "3578:62:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7daf5d66", + "id": 3997, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPairAtIndex", + "nameLocation": "3655:16:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3991, + "mutability": "mutable", + "name": "id", + "nameLocation": "3680:2:6", + "nodeType": "VariableDeclaration", + "scope": 3997, + "src": "3672:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3672:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3671:12:6" + }, + "returnParameters": { + "id": 3996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3995, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3997, + "src": "3702:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 3994, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3993, + "name": "ILBPair", + "nameLocations": [ + "3702:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "3702:7:6" + }, + "referencedDeclaration": 6187, + "src": "3702:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "3701:9:6" + }, + "scope": 4236, + "src": "3646:65:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "80c5061e", + "id": 4002, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNumberOfQuoteAssets", + "nameLocation": "3726:22:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3998, + "nodeType": "ParameterList", + "parameters": [], + "src": "3748:2:6" + }, + "returnParameters": { + "id": 4001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4000, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4002, + "src": "3774:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3774:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3773:9:6" + }, + "scope": 4236, + "src": "3717:66:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0752092b", + "id": 4010, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getQuoteAssetAtIndex", + "nameLocation": "3798:20:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4004, + "mutability": "mutable", + "name": "index", + "nameLocation": "3827:5:6", + "nodeType": "VariableDeclaration", + "scope": 4010, + "src": "3819:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4003, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3819:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3818:15:6" + }, + "returnParameters": { + "id": 4009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4008, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4010, + "src": "3857:6:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4007, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4006, + "name": "IERC20", + "nameLocations": [ + "3857:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3857:6:6" + }, + "referencedDeclaration": 479, + "src": "3857:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3856:8:6" + }, + "scope": 4236, + "src": "3789:76:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "be203094", + "id": 4021, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "3880:10:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4012, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "3899:12:6", + "nodeType": "VariableDeclaration", + "scope": 4021, + "src": "3891:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3891:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4014, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "3921:12:6", + "nodeType": "VariableDeclaration", + "scope": 4021, + "src": "3913:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4013, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3913:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4016, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "3943:12:6", + "nodeType": "VariableDeclaration", + "scope": 4021, + "src": "3935:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4015, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3935:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4018, + "mutability": "mutable", + "name": "lbPairBeaconAddress", + "nameLocation": "3965:19:6", + "nodeType": "VariableDeclaration", + "scope": 4021, + "src": "3957:27:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3957:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3890:95:6" + }, + "returnParameters": { + "id": 4020, + "nodeType": "ParameterList", + "parameters": [], + "src": "3994:0:6" + }, + "scope": 4236, + "src": "3871:124:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "27721842", + "id": 4029, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isQuoteAsset", + "nameLocation": "4010:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4024, + "mutability": "mutable", + "name": "token", + "nameLocation": "4030:5:6", + "nodeType": "VariableDeclaration", + "scope": 4029, + "src": "4023:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4023, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4022, + "name": "IERC20", + "nameLocations": [ + "4023:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4023:6:6" + }, + "referencedDeclaration": 479, + "src": "4023:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "4022:14:6" + }, + "returnParameters": { + "id": 4028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4027, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4029, + "src": "4060:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4026, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4060:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4059:6:6" + }, + "scope": 4236, + "src": "4001:65:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "704037bd", + "id": 4043, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPairInformation", + "nameLocation": "4081:20:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4032, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "4109:6:6", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "4102:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4031, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4030, + "name": "IERC20", + "nameLocations": [ + "4102:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4102:6:6" + }, + "referencedDeclaration": 479, + "src": "4102:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4035, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "4124:6:6", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "4117:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4034, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4033, + "name": "IERC20", + "nameLocations": [ + "4117:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4117:6:6" + }, + "referencedDeclaration": 479, + "src": "4117:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4037, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4140:7:6", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "4132:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4132:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4101:47:6" + }, + "returnParameters": { + "id": 4042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4041, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4043, + "src": "4196:24:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$3881_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + }, + "typeName": { + "id": 4040, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4039, + "name": "LBPairInformation", + "nameLocations": [ + "4196:17:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3881, + "src": "4196:17:6" + }, + "referencedDeclaration": 3881, + "src": "4196:17:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$3881_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "visibility": "internal" + } + ], + "src": "4195:26:6" + }, + "scope": 4236, + "src": "4072:150:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "aabc4b3c", + "id": 4064, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPreset", + "nameLocation": "4237:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4045, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4255:7:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4247:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4247:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4246:17:6" + }, + "returnParameters": { + "id": 4063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4048, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "4332:10:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4324:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4324:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4050, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "4364:12:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4356:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4356:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4052, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "4398:11:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4390:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4051, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4390:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4054, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "4431:15:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4423:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4423:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4056, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "4468:18:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4460:26:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4460:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4058, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "4508:13:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4500:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4500:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4060, + "mutability": "mutable", + "name": "maxAccumulator", + "nameLocation": "4543:14:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4535:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4059, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4535:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4062, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "4576:6:6", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "4571:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4061, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4571:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4310:282:6" + }, + "scope": 4236, + "src": "4228:365:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5b35875c", + "id": 4070, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllBinSteps", + "nameLocation": "4608:14:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4065, + "nodeType": "ParameterList", + "parameters": [], + "src": "4622:2:6" + }, + "returnParameters": { + "id": 4069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4068, + "mutability": "mutable", + "name": "presetsBinStep", + "nameLocation": "4665:14:6", + "nodeType": "VariableDeclaration", + "scope": 4070, + "src": "4648:31:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4648:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4067, + "nodeType": "ArrayTypeName", + "src": "4648:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4647:33:6" + }, + "scope": 4236, + "src": "4599:82:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0282c9c1", + "id": 4076, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOpenBinSteps", + "nameLocation": "4696:15:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4071, + "nodeType": "ParameterList", + "parameters": [], + "src": "4711:2:6" + }, + "returnParameters": { + "id": 4075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4074, + "mutability": "mutable", + "name": "openBinStep", + "nameLocation": "4754:11:6", + "nodeType": "VariableDeclaration", + "scope": 4076, + "src": "4737:28:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4737:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4073, + "nodeType": "ArrayTypeName", + "src": "4737:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4736:30:6" + }, + "scope": 4236, + "src": "4687:80:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6622e0d7", + "id": 4089, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllLBPairs", + "nameLocation": "4782:13:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4079, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "4803:6:6", + "nodeType": "VariableDeclaration", + "scope": 4089, + "src": "4796:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4078, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4077, + "name": "IERC20", + "nameLocations": [ + "4796:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4796:6:6" + }, + "referencedDeclaration": 479, + "src": "4796:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4082, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "4818:6:6", + "nodeType": "VariableDeclaration", + "scope": 4089, + "src": "4811:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4081, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4080, + "name": "IERC20", + "nameLocations": [ + "4811:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4811:6:6" + }, + "referencedDeclaration": 479, + "src": "4811:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "4795:30:6" + }, + "returnParameters": { + "id": 4088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4087, + "mutability": "mutable", + "name": "LBPairsBinStep", + "nameLocation": "4900:14:6", + "nodeType": "VariableDeclaration", + "scope": 4089, + "src": "4873:41:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$3881_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation[]" + }, + "typeName": { + "baseType": { + "id": 4085, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4084, + "name": "LBPairInformation", + "nameLocations": [ + "4873:17:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3881, + "src": "4873:17:6" + }, + "referencedDeclaration": 3881, + "src": "4873:17:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$3881_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "id": 4086, + "nodeType": "ArrayTypeName", + "src": "4873:19:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$3881_storage_$dyn_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation[]" + } + }, + "visibility": "internal" + } + ], + "src": "4872:43:6" + }, + "scope": 4236, + "src": "4773:143:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c1b931be", + "id": 4094, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPauserRole", + "nameLocation": "4931:13:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4090, + "nodeType": "ParameterList", + "parameters": [], + "src": "4944:2:6" + }, + "returnParameters": { + "id": 4093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4092, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4094, + "src": "4970:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4091, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4970:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4969:9:6" + }, + "scope": 4236, + "src": "4922:57:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "659ac74b", + "id": 4110, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createLBPair", + "nameLocation": "4994:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4097, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "5014:6:6", + "nodeType": "VariableDeclaration", + "scope": 4110, + "src": "5007:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4096, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4095, + "name": "IERC20", + "nameLocations": [ + "5007:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5007:6:6" + }, + "referencedDeclaration": 479, + "src": "5007:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4100, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "5029:6:6", + "nodeType": "VariableDeclaration", + "scope": 4110, + "src": "5022:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4099, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4098, + "name": "IERC20", + "nameLocations": [ + "5022:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5022:6:6" + }, + "referencedDeclaration": 479, + "src": "5022:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4102, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "5044:8:6", + "nodeType": "VariableDeclaration", + "scope": 4110, + "src": "5037:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4101, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5037:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4104, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5061:7:6", + "nodeType": "VariableDeclaration", + "scope": 4110, + "src": "5054:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4103, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5054:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5006:63:6" + }, + "returnParameters": { + "id": 4109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4108, + "mutability": "mutable", + "name": "pair", + "nameLocation": "5112:4:6", + "nodeType": "VariableDeclaration", + "scope": 4110, + "src": "5104:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 4107, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4106, + "name": "ILBPair", + "nameLocations": [ + "5104:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "5104:7:6" + }, + "referencedDeclaration": 6187, + "src": "5104:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "5103:14:6" + }, + "scope": 4236, + "src": "4985:133:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "69d56ea3", + "id": 4123, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setLBPairIgnored", + "nameLocation": "5133:16:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4113, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "5157:6:6", + "nodeType": "VariableDeclaration", + "scope": 4123, + "src": "5150:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4112, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4111, + "name": "IERC20", + "nameLocations": [ + "5150:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5150:6:6" + }, + "referencedDeclaration": 479, + "src": "5150:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4116, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "5172:6:6", + "nodeType": "VariableDeclaration", + "scope": 4123, + "src": "5165:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4115, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4114, + "name": "IERC20", + "nameLocations": [ + "5165:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5165:6:6" + }, + "referencedDeclaration": 479, + "src": "5165:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4118, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5187:7:6", + "nodeType": "VariableDeclaration", + "scope": 4123, + "src": "5180:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4117, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5180:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4120, + "mutability": "mutable", + "name": "ignored", + "nameLocation": "5201:7:6", + "nodeType": "VariableDeclaration", + "scope": 4123, + "src": "5196:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4119, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5196:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5149:60:6" + }, + "returnParameters": { + "id": 4122, + "nodeType": "ParameterList", + "parameters": [], + "src": "5218:0:6" + }, + "scope": 4236, + "src": "5124:95:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "379ee803", + "id": 4144, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setPreset", + "nameLocation": "5234:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4125, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5260:7:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5253:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4124, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5253:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4127, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "5284:10:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5277:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4126, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5277:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4129, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "5311:12:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5304:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4128, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5304:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4131, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "5340:11:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5333:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4130, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5333:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4133, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "5368:15:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5361:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4132, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5361:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4135, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "5400:18:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5393:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4134, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5393:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4137, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "5435:13:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5428:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4136, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5428:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4139, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "5465:24:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5458:31:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4138, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5458:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4141, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "5504:6:6", + "nodeType": "VariableDeclaration", + "scope": 4144, + "src": "5499:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4140, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5499:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5243:273:6" + }, + "returnParameters": { + "id": 4143, + "nodeType": "ParameterList", + "parameters": [], + "src": "5525:0:6" + }, + "scope": 4236, + "src": "5225:301:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4cd161d3", + "id": 4151, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setPresetOpenState", + "nameLocation": "5541:18:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4146, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5567:7:6", + "nodeType": "VariableDeclaration", + "scope": 4151, + "src": "5560:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4145, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5560:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4148, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "5581:6:6", + "nodeType": "VariableDeclaration", + "scope": 4151, + "src": "5576:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4147, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5576:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5559:29:6" + }, + "returnParameters": { + "id": 4150, + "nodeType": "ParameterList", + "parameters": [], + "src": "5597:0:6" + }, + "scope": 4236, + "src": "5532:66:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e203a31f", + "id": 4156, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removePreset", + "nameLocation": "5613:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4153, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5633:7:6", + "nodeType": "VariableDeclaration", + "scope": 4156, + "src": "5626:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4152, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5626:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5625:16:6" + }, + "returnParameters": { + "id": 4155, + "nodeType": "ParameterList", + "parameters": [], + "src": "5650:0:6" + }, + "scope": 4236, + "src": "5604:47:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "093ff769", + "id": 4181, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeesParametersOnPair", + "nameLocation": "5666:23:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4159, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "5706:6:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5699:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4158, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4157, + "name": "IERC20", + "nameLocations": [ + "5699:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5699:6:6" + }, + "referencedDeclaration": 479, + "src": "5699:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4162, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "5729:6:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5722:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4161, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4160, + "name": "IERC20", + "nameLocations": [ + "5722:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5722:6:6" + }, + "referencedDeclaration": 479, + "src": "5722:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4164, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5752:7:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5745:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4163, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5745:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4166, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "5776:10:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5769:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4165, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5769:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4168, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "5803:12:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5796:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4167, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5796:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4170, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "5832:11:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5825:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4169, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5825:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4172, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "5860:15:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5853:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4171, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5853:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4174, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "5892:18:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5885:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4173, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5885:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4176, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "5927:13:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5920:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4175, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5920:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4178, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "5957:24:6", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5950:31:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4177, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5950:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5689:298:6" + }, + "returnParameters": { + "id": 4180, + "nodeType": "ParameterList", + "parameters": [], + "src": "5996:0:6" + }, + "scope": 4236, + "src": "5657:340:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3a2f1a91", + "id": 4196, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setLBHooksParametersOnPair", + "nameLocation": "6012:26:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4184, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "6055:6:6", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "6048:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4183, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4182, + "name": "IERC20", + "nameLocations": [ + "6048:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6048:6:6" + }, + "referencedDeclaration": 479, + "src": "6048:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4187, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "6078:6:6", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "6071:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4186, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4185, + "name": "IERC20", + "nameLocations": [ + "6071:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6071:6:6" + }, + "referencedDeclaration": 479, + "src": "6071:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4189, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "6101:7:6", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "6094:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4188, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6094:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4191, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "6126:15:6", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "6118:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4190, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6118:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4193, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "6164:14:6", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "6151:27:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4192, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6151:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6038:146:6" + }, + "returnParameters": { + "id": 4195, + "nodeType": "ParameterList", + "parameters": [], + "src": "6193:0:6" + }, + "scope": 4236, + "src": "6003:191:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2cc06b8c", + "id": 4207, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLBHooksOnPair", + "nameLocation": "6209:19:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4199, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "6236:6:6", + "nodeType": "VariableDeclaration", + "scope": 4207, + "src": "6229:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4198, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4197, + "name": "IERC20", + "nameLocations": [ + "6229:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6229:6:6" + }, + "referencedDeclaration": 479, + "src": "6229:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4202, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "6251:6:6", + "nodeType": "VariableDeclaration", + "scope": 4207, + "src": "6244:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4201, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4200, + "name": "IERC20", + "nameLocations": [ + "6244:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6244:6:6" + }, + "referencedDeclaration": 479, + "src": "6244:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4204, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "6266:7:6", + "nodeType": "VariableDeclaration", + "scope": 4207, + "src": "6259:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4203, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6259:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "6228:46:6" + }, + "returnParameters": { + "id": 4206, + "nodeType": "ParameterList", + "parameters": [], + "src": "6283:0:6" + }, + "scope": 4236, + "src": "6200:84:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e74b981b", + "id": 4212, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeRecipient", + "nameLocation": "6299:15:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4209, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "6323:12:6", + "nodeType": "VariableDeclaration", + "scope": 4212, + "src": "6315:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6315:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6314:22:6" + }, + "returnParameters": { + "id": 4211, + "nodeType": "ParameterList", + "parameters": [], + "src": "6345:0:6" + }, + "scope": 4236, + "src": "6290:56:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e92d0d5d", + "id": 4217, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFlashLoanFee", + "nameLocation": "6361:15:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4214, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "6385:12:6", + "nodeType": "VariableDeclaration", + "scope": 4217, + "src": "6377:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6377:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6376:22:6" + }, + "returnParameters": { + "id": 4216, + "nodeType": "ParameterList", + "parameters": [], + "src": "6407:0:6" + }, + "scope": 4236, + "src": "6352:56:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a440923", + "id": 4223, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addQuoteAsset", + "nameLocation": "6423:13:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4220, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "6444:10:6", + "nodeType": "VariableDeclaration", + "scope": 4223, + "src": "6437:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4219, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4218, + "name": "IERC20", + "nameLocations": [ + "6437:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6437:6:6" + }, + "referencedDeclaration": 479, + "src": "6437:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6436:19:6" + }, + "returnParameters": { + "id": 4222, + "nodeType": "ParameterList", + "parameters": [], + "src": "6464:0:6" + }, + "scope": 4236, + "src": "6414:51:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ddbfd941", + "id": 4229, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeQuoteAsset", + "nameLocation": "6480:16:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4227, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4226, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "6504:10:6", + "nodeType": "VariableDeclaration", + "scope": 4229, + "src": "6497:17:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4225, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4224, + "name": "IERC20", + "nameLocations": [ + "6497:6:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6497:6:6" + }, + "referencedDeclaration": 479, + "src": "6497:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6496:19:6" + }, + "returnParameters": { + "id": 4228, + "nodeType": "ParameterList", + "parameters": [], + "src": "6524:0:6" + }, + "scope": 4236, + "src": "6471:54:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3c78a941", + "id": 4235, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "forceDecay", + "nameLocation": "6540:10:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4232, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "6559:6:6", + "nodeType": "VariableDeclaration", + "scope": 4235, + "src": "6551:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 4231, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4230, + "name": "ILBPair", + "nameLocations": [ + "6551:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "6551:7:6" + }, + "referencedDeclaration": 6187, + "src": "6551:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "6550:16:6" + }, + "returnParameters": { + "id": 4234, + "nodeType": "ParameterList", + "parameters": [], + "src": "6575:0:6" + }, + "scope": 4236, + "src": "6531:45:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4237, + "src": "315:6263:6", + "usedErrors": [ + 3776, + 3781, + 3786, + 3788, + 3798, + 3808, + 3818, + 3824, + 3828, + 3834, + 3836, + 3840, + 3842, + 3846, + 3850, + 3854, + 3858, + 3862, + 3866, + 3868, + 3870 + ], + "usedEvents": [ + 3896, + 3902, + 3908, + 3914, + 3921, + 3939, + 3945, + 3949, + 3954, + 3959 + ] + } + ], + "src": "33:6546:6" + }, + "id": 6 + }, + "src/interfaces/ILBFlashLoanCallback.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBFlashLoanCallback.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "ILBFlashLoanCallback": [ + 4261 + ] + }, + "id": 4262, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4238, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:7" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 4240, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4262, + "sourceUnit": 480, + "src": "59:70:7", + "symbolAliases": [ + { + "foreign": { + "id": 4239, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:7", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBFlashLoanCallback", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4241, + "nodeType": "StructuredDocumentation", + "src": "131:118:7", + "text": "@title Liquidity Book Flashloan Callback Interface\n @notice Required interface to interact with LB flash loans" + }, + "fullyImplemented": false, + "id": 4261, + "linearizedBaseContracts": [ + 4261 + ], + "name": "ILBFlashLoanCallback", + "nameLocation": "259:20:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "1faa6b87", + "id": 4260, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "LBFlashLoanCallback", + "nameLocation": "295:19:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4243, + "mutability": "mutable", + "name": "sender", + "nameLocation": "332:6:7", + "nodeType": "VariableDeclaration", + "scope": 4260, + "src": "324:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "324:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4246, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "355:6:7", + "nodeType": "VariableDeclaration", + "scope": 4260, + "src": "348:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4245, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4244, + "name": "IERC20", + "nameLocations": [ + "348:6:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "348:6:7" + }, + "referencedDeclaration": 479, + "src": "348:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4249, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "378:6:7", + "nodeType": "VariableDeclaration", + "scope": 4260, + "src": "371:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4248, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4247, + "name": "IERC20", + "nameLocations": [ + "371:6:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "371:6:7" + }, + "referencedDeclaration": 479, + "src": "371:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4251, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "402:7:7", + "nodeType": "VariableDeclaration", + "scope": 4260, + "src": "394:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "394:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4253, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "427:9:7", + "nodeType": "VariableDeclaration", + "scope": 4260, + "src": "419:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4252, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "419:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4255, + "mutability": "mutable", + "name": "data", + "nameLocation": "461:4:7", + "nodeType": "VariableDeclaration", + "scope": 4260, + "src": "446:19:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4254, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "446:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "314:157:7" + }, + "returnParameters": { + "id": 4259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4258, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4260, + "src": "490:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4257, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "490:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "489:9:7" + }, + "scope": 4261, + "src": "286:213:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4262, + "src": "249:252:7", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:469:7" + }, + "id": 7 + }, + "src/interfaces/ILBHooks.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBHooks.sol", + "exportedSymbols": { + "Hooks": [ + 9239 + ], + "ILBHooks": [ + 4434 + ], + "ILBPair": [ + 6187 + ] + }, + "id": 4435, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4263, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:24:8" + }, + { + "absolutePath": "src/interfaces/ILBPair.sol", + "file": "./ILBPair.sol", + "id": 4265, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4435, + "sourceUnit": 6188, + "src": "58:38:8", + "symbolAliases": [ + { + "foreign": { + "id": 4264, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "66:7:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Hooks.sol", + "file": "../libraries/Hooks.sol", + "id": 4267, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4435, + "sourceUnit": 9240, + "src": "98:45:8", + "symbolAliases": [ + { + "foreign": { + "id": 4266, + "name": "Hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9239, + "src": "106:5:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBHooks", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 4434, + "linearizedBaseContracts": [ + 4434 + ], + "name": "ILBHooks", + "nameLocation": "155:8:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "5f9c01b1", + "id": 4273, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPair", + "nameLocation": "179:9:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4268, + "nodeType": "ParameterList", + "parameters": [], + "src": "188:2:8" + }, + "returnParameters": { + "id": 4272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4271, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4273, + "src": "214:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 4270, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4269, + "name": "ILBPair", + "nameLocations": [ + "214:7:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "214:7:8" + }, + "referencedDeclaration": 6187, + "src": "214:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "213:9:8" + }, + "scope": 4434, + "src": "170:53:8", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "09fa1f90", + "id": 4278, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isLinked", + "nameLocation": "238:8:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4274, + "nodeType": "ParameterList", + "parameters": [], + "src": "246:2:8" + }, + "returnParameters": { + "id": 4277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4276, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4278, + "src": "272:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4275, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "272:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "271:6:8" + }, + "scope": 4434, + "src": "229:49:8", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e430b5a", + "id": 4287, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onHooksSet", + "nameLocation": "293:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4280, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "312:15:8", + "nodeType": "VariableDeclaration", + "scope": 4287, + "src": "304:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4279, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "304:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4282, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "344:14:8", + "nodeType": "VariableDeclaration", + "scope": 4287, + "src": "329:29:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4281, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "329:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "303:56:8" + }, + "returnParameters": { + "id": 4286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4285, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4287, + "src": "378:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4284, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "378:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "377:8:8" + }, + "scope": 4434, + "src": "284:102:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "feee3735", + "id": 4300, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeSwap", + "nameLocation": "401:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4289, + "mutability": "mutable", + "name": "sender", + "nameLocation": "420:6:8", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "412:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "412:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4291, + "mutability": "mutable", + "name": "to", + "nameLocation": "436:2:8", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "428:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "428:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4293, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "445:8:8", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "440:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4292, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "440:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4295, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "463:9:8", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "455:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4294, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "455:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "411:62:8" + }, + "returnParameters": { + "id": 4299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4298, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "492:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4297, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "492:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "491:8:8" + }, + "scope": 4434, + "src": "392:108:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "53e8079b", + "id": 4313, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterSwap", + "nameLocation": "515:9:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4302, + "mutability": "mutable", + "name": "sender", + "nameLocation": "533:6:8", + "nodeType": "VariableDeclaration", + "scope": 4313, + "src": "525:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "525:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4304, + "mutability": "mutable", + "name": "to", + "nameLocation": "549:2:8", + "nodeType": "VariableDeclaration", + "scope": 4313, + "src": "541:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "541:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4306, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "558:8:8", + "nodeType": "VariableDeclaration", + "scope": 4313, + "src": "553:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4305, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "553:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4308, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "576:10:8", + "nodeType": "VariableDeclaration", + "scope": 4313, + "src": "568:18:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4307, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "568:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "524:63:8" + }, + "returnParameters": { + "id": 4312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4311, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4313, + "src": "606:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4310, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "606:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "605:8:8" + }, + "scope": 4434, + "src": "506:108:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "505d9033", + "id": 4324, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeFlashLoan", + "nameLocation": "629:15:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4315, + "mutability": "mutable", + "name": "sender", + "nameLocation": "653:6:8", + "nodeType": "VariableDeclaration", + "scope": 4324, + "src": "645:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "645:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4317, + "mutability": "mutable", + "name": "to", + "nameLocation": "669:2:8", + "nodeType": "VariableDeclaration", + "scope": 4324, + "src": "661:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4316, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "661:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4319, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "681:7:8", + "nodeType": "VariableDeclaration", + "scope": 4324, + "src": "673:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4318, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "673:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "644:45:8" + }, + "returnParameters": { + "id": 4323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4322, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4324, + "src": "708:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4321, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "708:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "707:8:8" + }, + "scope": 4434, + "src": "620:96:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "60bed5f3", + "id": 4337, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterFlashLoan", + "nameLocation": "731:14:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4326, + "mutability": "mutable", + "name": "sender", + "nameLocation": "754:6:8", + "nodeType": "VariableDeclaration", + "scope": 4337, + "src": "746:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "746:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4328, + "mutability": "mutable", + "name": "to", + "nameLocation": "770:2:8", + "nodeType": "VariableDeclaration", + "scope": 4337, + "src": "762:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "762:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4330, + "mutability": "mutable", + "name": "fees", + "nameLocation": "782:4:8", + "nodeType": "VariableDeclaration", + "scope": 4337, + "src": "774:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4329, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "774:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4332, + "mutability": "mutable", + "name": "feesReceived", + "nameLocation": "796:12:8", + "nodeType": "VariableDeclaration", + "scope": 4337, + "src": "788:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4331, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "788:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "745:64:8" + }, + "returnParameters": { + "id": 4336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4335, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4337, + "src": "828:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4334, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "828:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "827:8:8" + }, + "scope": 4434, + "src": "722:114:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0d4abdb3", + "id": 4351, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeMint", + "nameLocation": "851:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4339, + "mutability": "mutable", + "name": "sender", + "nameLocation": "870:6:8", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "862:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4338, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "862:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4341, + "mutability": "mutable", + "name": "to", + "nameLocation": "886:2:8", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "878:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "878:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4344, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "909:16:8", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "890:35:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4342, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "890:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4343, + "nodeType": "ArrayTypeName", + "src": "890:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4346, + "mutability": "mutable", + "name": "amountsReceived", + "nameLocation": "935:15:8", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "927:23:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4345, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "927:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "861:90:8" + }, + "returnParameters": { + "id": 4350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4349, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "986:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4348, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "986:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "985:8:8" + }, + "scope": 4434, + "src": "842:152:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7a51a4c6", + "id": 4365, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterMint", + "nameLocation": "1009:9:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4353, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1027:6:8", + "nodeType": "VariableDeclaration", + "scope": 4365, + "src": "1019:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1019:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4355, + "mutability": "mutable", + "name": "to", + "nameLocation": "1043:2:8", + "nodeType": "VariableDeclaration", + "scope": 4365, + "src": "1035:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1035:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4358, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "1066:16:8", + "nodeType": "VariableDeclaration", + "scope": 4365, + "src": "1047:35:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4356, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1047:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4357, + "nodeType": "ArrayTypeName", + "src": "1047:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4360, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "1092:9:8", + "nodeType": "VariableDeclaration", + "scope": 4365, + "src": "1084:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4359, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1084:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1018:84:8" + }, + "returnParameters": { + "id": 4364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4363, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4365, + "src": "1137:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4362, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1137:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1136:8:8" + }, + "scope": 4434, + "src": "1000:145:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ea9db9d3", + "id": 4382, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeBurn", + "nameLocation": "1160:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4367, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1188:6:8", + "nodeType": "VariableDeclaration", + "scope": 4382, + "src": "1180:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1180:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4369, + "mutability": "mutable", + "name": "from", + "nameLocation": "1212:4:8", + "nodeType": "VariableDeclaration", + "scope": 4382, + "src": "1204:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1204:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4371, + "mutability": "mutable", + "name": "to", + "nameLocation": "1234:2:8", + "nodeType": "VariableDeclaration", + "scope": 4382, + "src": "1226:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1226:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4374, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1265:3:8", + "nodeType": "VariableDeclaration", + "scope": 4382, + "src": "1246:22:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1246:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4373, + "nodeType": "ArrayTypeName", + "src": "1246:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4377, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "1297:13:8", + "nodeType": "VariableDeclaration", + "scope": 4382, + "src": "1278:32:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4375, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1278:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4376, + "nodeType": "ArrayTypeName", + "src": "1278:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1170:146:8" + }, + "returnParameters": { + "id": 4381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4380, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4382, + "src": "1335:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4379, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1335:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1334:8:8" + }, + "scope": 4434, + "src": "1151:192:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fdc27257", + "id": 4399, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterBurn", + "nameLocation": "1358:9:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4384, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1385:6:8", + "nodeType": "VariableDeclaration", + "scope": 4399, + "src": "1377:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1377:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4386, + "mutability": "mutable", + "name": "from", + "nameLocation": "1409:4:8", + "nodeType": "VariableDeclaration", + "scope": 4399, + "src": "1401:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4385, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1401:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4388, + "mutability": "mutable", + "name": "to", + "nameLocation": "1431:2:8", + "nodeType": "VariableDeclaration", + "scope": 4399, + "src": "1423:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1423:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4391, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1462:3:8", + "nodeType": "VariableDeclaration", + "scope": 4399, + "src": "1443:22:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1443:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4390, + "nodeType": "ArrayTypeName", + "src": "1443:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4394, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "1494:13:8", + "nodeType": "VariableDeclaration", + "scope": 4399, + "src": "1475:32:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1475:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4393, + "nodeType": "ArrayTypeName", + "src": "1475:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1367:146:8" + }, + "returnParameters": { + "id": 4398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4397, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4399, + "src": "1532:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4396, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1532:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1531:8:8" + }, + "scope": 4434, + "src": "1349:191:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "79c8ccf7", + "id": 4416, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeBatchTransferFrom", + "nameLocation": "1555:23:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4401, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1596:6:8", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "1588:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4400, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1588:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4403, + "mutability": "mutable", + "name": "from", + "nameLocation": "1620:4:8", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "1612:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1612:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4405, + "mutability": "mutable", + "name": "to", + "nameLocation": "1642:2:8", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "1634:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1634:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4408, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1673:3:8", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "1654:22:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1654:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4407, + "nodeType": "ArrayTypeName", + "src": "1654:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4411, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1705:7:8", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "1686:26:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1686:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4410, + "nodeType": "ArrayTypeName", + "src": "1686:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1578:140:8" + }, + "returnParameters": { + "id": 4415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4414, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "1737:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4413, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1737:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1736:8:8" + }, + "scope": 4434, + "src": "1546:199:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "67ddb278", + "id": 4433, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterBatchTransferFrom", + "nameLocation": "1760:22:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4418, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1800:6:8", + "nodeType": "VariableDeclaration", + "scope": 4433, + "src": "1792:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4417, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1792:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4420, + "mutability": "mutable", + "name": "from", + "nameLocation": "1824:4:8", + "nodeType": "VariableDeclaration", + "scope": 4433, + "src": "1816:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4419, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1816:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4422, + "mutability": "mutable", + "name": "to", + "nameLocation": "1846:2:8", + "nodeType": "VariableDeclaration", + "scope": 4433, + "src": "1838:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1838:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4425, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1877:3:8", + "nodeType": "VariableDeclaration", + "scope": 4433, + "src": "1858:22:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1858:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4424, + "nodeType": "ArrayTypeName", + "src": "1858:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4428, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1909:7:8", + "nodeType": "VariableDeclaration", + "scope": 4433, + "src": "1890:26:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1890:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4427, + "nodeType": "ArrayTypeName", + "src": "1890:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1782:140:8" + }, + "returnParameters": { + "id": 4432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4431, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4433, + "src": "1941:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4430, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1941:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1940:8:8" + }, + "scope": 4434, + "src": "1751:198:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4435, + "src": "145:1806:8", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:1920:8" + }, + "id": 8 + }, + "src/interfaces/ILBLegacyFactory.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBLegacyFactory.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "ILBLegacyFactory": [ + 4800 + ], + "ILBLegacyPair": [ + 5216 + ] + }, + "id": 4801, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4436, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:9" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 4438, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4801, + "sourceUnit": 480, + "src": "59:70:9", + "symbolAliases": [ + { + "foreign": { + "id": 4437, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:9", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyPair.sol", + "file": "./ILBLegacyPair.sol", + "id": 4440, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4801, + "sourceUnit": 5217, + "src": "131:50:9", + "symbolAliases": [ + { + "foreign": { + "id": 4439, + "name": "ILBLegacyPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5216, + "src": "139:13:9", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBLegacyFactory", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4441, + "nodeType": "StructuredDocumentation", + "src": "183:97:9", + "text": "@title Liquidity Book Factory Interface\n @notice Required interface of LBFactory contract" + }, + "fullyImplemented": false, + "id": 4800, + "linearizedBaseContracts": [ + 4800 + ], + "name": "ILBLegacyFactory", + "nameLocation": "290:16:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ILBLegacyFactory.LBPairInformation", + "documentation": { + "id": 4442, + "nodeType": "StructuredDocumentation", + "src": "313:369:9", + "text": "@dev Structure to store the LBPair information, such as:\n - binStep: The bin step of the LBPair\n - LBPair: The address of the LBPair\n - createdByOwner: Whether the pair was created by the owner of the factory\n - ignoredForRouting: Whether the pair is ignored for routing or not. An ignored pair will not be explored during routes finding" + }, + "id": 4452, + "members": [ + { + "constant": false, + "id": 4444, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "729:7:9", + "nodeType": "VariableDeclaration", + "scope": 4452, + "src": "722:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4443, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "722:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4447, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "760:6:9", + "nodeType": "VariableDeclaration", + "scope": 4452, + "src": "746:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 4446, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4445, + "name": "ILBLegacyPair", + "nameLocations": [ + "746:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "746:13:9" + }, + "referencedDeclaration": 5216, + "src": "746:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4449, + "mutability": "mutable", + "name": "createdByOwner", + "nameLocation": "781:14:9", + "nodeType": "VariableDeclaration", + "scope": 4452, + "src": "776:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4448, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "776:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4451, + "mutability": "mutable", + "name": "ignoredForRouting", + "nameLocation": "810:17:9", + "nodeType": "VariableDeclaration", + "scope": 4452, + "src": "805:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4450, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "805:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "LBPairInformation", + "nameLocation": "694:17:9", + "nodeType": "StructDefinition", + "scope": 4800, + "src": "687:147:9", + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff", + "id": 4467, + "name": "LBPairCreated", + "nameLocation": "846:13:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4455, + "indexed": true, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "884:6:9", + "nodeType": "VariableDeclaration", + "scope": 4467, + "src": "869:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4454, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4453, + "name": "IERC20", + "nameLocations": [ + "869:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "869:6:9" + }, + "referencedDeclaration": 479, + "src": "869:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4458, + "indexed": true, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "907:6:9", + "nodeType": "VariableDeclaration", + "scope": 4467, + "src": "892:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4457, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4456, + "name": "IERC20", + "nameLocations": [ + "892:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "892:6:9" + }, + "referencedDeclaration": 479, + "src": "892:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4460, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "931:7:9", + "nodeType": "VariableDeclaration", + "scope": 4467, + "src": "915:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "915:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4463, + "indexed": false, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "954:6:9", + "nodeType": "VariableDeclaration", + "scope": 4467, + "src": "940:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 4462, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4461, + "name": "ILBLegacyPair", + "nameLocations": [ + "940:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "940:13:9" + }, + "referencedDeclaration": 5216, + "src": "940:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4465, + "indexed": false, + "mutability": "mutable", + "name": "pid", + "nameLocation": "970:3:9", + "nodeType": "VariableDeclaration", + "scope": 4467, + "src": "962:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "962:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "859:120:9" + }, + "src": "840:140:9" + }, + { + "anonymous": false, + "eventSelector": "15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721", + "id": 4473, + "name": "FeeRecipientSet", + "nameLocation": "992:15:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4469, + "indexed": false, + "mutability": "mutable", + "name": "oldRecipient", + "nameLocation": "1016:12:9", + "nodeType": "VariableDeclaration", + "scope": 4473, + "src": "1008:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1008:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4471, + "indexed": false, + "mutability": "mutable", + "name": "newRecipient", + "nameLocation": "1038:12:9", + "nodeType": "VariableDeclaration", + "scope": 4473, + "src": "1030:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1030:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1007:44:9" + }, + "src": "986:66:9" + }, + { + "anonymous": false, + "eventSelector": "5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50", + "id": 4479, + "name": "FlashLoanFeeSet", + "nameLocation": "1064:15:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4475, + "indexed": false, + "mutability": "mutable", + "name": "oldFlashLoanFee", + "nameLocation": "1088:15:9", + "nodeType": "VariableDeclaration", + "scope": 4479, + "src": "1080:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1080:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4477, + "indexed": false, + "mutability": "mutable", + "name": "newFlashLoanFee", + "nameLocation": "1113:15:9", + "nodeType": "VariableDeclaration", + "scope": 4479, + "src": "1105:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4476, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1105:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1079:50:9" + }, + "src": "1058:72:9" + }, + { + "anonymous": false, + "eventSelector": "63a7af39b7b68b9c3f2dfe93e5f32d9faecb4c6c98733bb608f757e62f816c0d", + "id": 4502, + "name": "FeeParametersSet", + "nameLocation": "1142:16:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4481, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1184:6:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1168:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1168:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4484, + "indexed": true, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "1222:6:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1200:28:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 4483, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4482, + "name": "ILBLegacyPair", + "nameLocations": [ + "1200:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "1200:13:9" + }, + "referencedDeclaration": 5216, + "src": "1200:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4486, + "indexed": false, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1246:7:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1238:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1238:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4488, + "indexed": false, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "1271:10:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1263:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1263:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4490, + "indexed": false, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "1299:12:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1291:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1291:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4492, + "indexed": false, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "1329:11:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1321:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1321:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4494, + "indexed": false, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "1358:15:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1350:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4493, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1350:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4496, + "indexed": false, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "1391:18:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1383:26:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1383:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4498, + "indexed": false, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "1427:13:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1419:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4497, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1419:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4500, + "indexed": false, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "1458:24:9", + "nodeType": "VariableDeclaration", + "scope": 4502, + "src": "1450:32:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1450:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1158:330:9" + }, + "src": "1136:353:9" + }, + { + "anonymous": false, + "eventSelector": "cdee7bf87b7a743b4cbe1d2d534c5248621b76f58460337e7fda92d5d23f4124", + "id": 4506, + "name": "FactoryLockedStatusUpdated", + "nameLocation": "1501:26:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4504, + "indexed": false, + "mutability": "mutable", + "name": "unlocked", + "nameLocation": "1533:8:9", + "nodeType": "VariableDeclaration", + "scope": 4506, + "src": "1528:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4503, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1528:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1527:15:9" + }, + "src": "1495:48:9" + }, + { + "anonymous": false, + "eventSelector": "900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e", + "id": 4512, + "name": "LBPairImplementationSet", + "nameLocation": "1555:23:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4508, + "indexed": false, + "mutability": "mutable", + "name": "oldLBPairImplementation", + "nameLocation": "1587:23:9", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "1579:31:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4507, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1579:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4510, + "indexed": false, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "1620:20:9", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "1612:28:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1612:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1578:63:9" + }, + "src": "1549:93:9" + }, + { + "anonymous": false, + "eventSelector": "44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f", + "id": 4519, + "name": "LBPairIgnoredStateChanged", + "nameLocation": "1654:25:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4515, + "indexed": true, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "1702:6:9", + "nodeType": "VariableDeclaration", + "scope": 4519, + "src": "1680:28:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 4514, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4513, + "name": "ILBLegacyPair", + "nameLocations": [ + "1680:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "1680:13:9" + }, + "referencedDeclaration": 5216, + "src": "1680:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4517, + "indexed": false, + "mutability": "mutable", + "name": "ignored", + "nameLocation": "1715:7:9", + "nodeType": "VariableDeclaration", + "scope": 4519, + "src": "1710:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4516, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1710:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1679:44:9" + }, + "src": "1648:76:9" + }, + { + "anonymous": false, + "eventSelector": "2f6cfdcc0e02e7355350f527dd3b5a957787b96f231165e48a3fdf90332a40cb", + "id": 4539, + "name": "PresetSet", + "nameLocation": "1736:9:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4521, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1771:7:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1755:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1755:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4523, + "indexed": false, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "1796:10:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1788:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1788:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4525, + "indexed": false, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "1824:12:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1816:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1816:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4527, + "indexed": false, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "1854:11:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1846:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1846:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4529, + "indexed": false, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "1883:15:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1875:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1875:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4531, + "indexed": false, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "1916:18:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1908:26:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1908:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4533, + "indexed": false, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "1952:13:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1944:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4532, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1944:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4535, + "indexed": false, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "1983:24:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "1975:32:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1975:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4537, + "indexed": false, + "mutability": "mutable", + "name": "sampleLifetime", + "nameLocation": "2025:14:9", + "nodeType": "VariableDeclaration", + "scope": 4539, + "src": "2017:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2017:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1745:300:9" + }, + "src": "1730:316:9" + }, + { + "anonymous": false, + "eventSelector": "dd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be13", + "id": 4543, + "name": "PresetRemoved", + "nameLocation": "2058:13:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4541, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2088:7:9", + "nodeType": "VariableDeclaration", + "scope": 4543, + "src": "2072:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4540, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2072:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2071:25:9" + }, + "src": "2052:45:9" + }, + { + "anonymous": false, + "eventSelector": "84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "id": 4548, + "name": "QuoteAssetAdded", + "nameLocation": "2109:15:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4546, + "indexed": true, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "2140:10:9", + "nodeType": "VariableDeclaration", + "scope": 4548, + "src": "2125:25:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4545, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4544, + "name": "IERC20", + "nameLocations": [ + "2125:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2125:6:9" + }, + "referencedDeclaration": 479, + "src": "2125:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "2124:27:9" + }, + "src": "2103:49:9" + }, + { + "anonymous": false, + "eventSelector": "0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb3", + "id": 4553, + "name": "QuoteAssetRemoved", + "nameLocation": "2164:17:9", + "nodeType": "EventDefinition", + "parameters": { + "id": 4552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4551, + "indexed": true, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "2197:10:9", + "nodeType": "VariableDeclaration", + "scope": 4553, + "src": "2182:25:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4550, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4549, + "name": "IERC20", + "nameLocations": [ + "2182:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2182:6:9" + }, + "referencedDeclaration": 479, + "src": "2182:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "2181:27:9" + }, + "src": "2158:51:9" + }, + { + "functionSelector": "bc063e1a", + "id": 4558, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "MAX_FEE", + "nameLocation": "2224:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4554, + "nodeType": "ParameterList", + "parameters": [], + "src": "2231:2:9" + }, + "returnParameters": { + "id": 4557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4556, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4558, + "src": "2257:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2257:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2256:9:9" + }, + "scope": 4800, + "src": "2215:51:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7df880e3", + "id": 4563, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "MIN_BIN_STEP", + "nameLocation": "2281:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4559, + "nodeType": "ParameterList", + "parameters": [], + "src": "2293:2:9" + }, + "returnParameters": { + "id": 4562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4561, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4563, + "src": "2319:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4560, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2319:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2318:9:9" + }, + "scope": 4800, + "src": "2272:56:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "10e9ec4a", + "id": 4568, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "MAX_BIN_STEP", + "nameLocation": "2343:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4564, + "nodeType": "ParameterList", + "parameters": [], + "src": "2355:2:9" + }, + "returnParameters": { + "id": 4567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4566, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4568, + "src": "2381:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2381:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2380:9:9" + }, + "scope": 4800, + "src": "2334:56:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a931208f", + "id": 4573, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "MAX_PROTOCOL_SHARE", + "nameLocation": "2405:18:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4569, + "nodeType": "ParameterList", + "parameters": [], + "src": "2423:2:9" + }, + "returnParameters": { + "id": 4572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4571, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4573, + "src": "2449:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2449:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2448:9:9" + }, + "scope": 4800, + "src": "2396:62:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "509ceb90", + "id": 4578, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "LBPairImplementation", + "nameLocation": "2473:20:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4574, + "nodeType": "ParameterList", + "parameters": [], + "src": "2493:2:9" + }, + "returnParameters": { + "id": 4577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4576, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4578, + "src": "2519:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4575, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2519:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2518:9:9" + }, + "scope": 4800, + "src": "2464:64:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "80c5061e", + "id": 4583, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNumberOfQuoteAssets", + "nameLocation": "2543:22:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4579, + "nodeType": "ParameterList", + "parameters": [], + "src": "2565:2:9" + }, + "returnParameters": { + "id": 4582, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4581, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "2591:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4580, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2591:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2590:9:9" + }, + "scope": 4800, + "src": "2534:66:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f89a4cd5", + "id": 4591, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getQuoteAsset", + "nameLocation": "2615:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4585, + "mutability": "mutable", + "name": "index", + "nameLocation": "2637:5:9", + "nodeType": "VariableDeclaration", + "scope": 4591, + "src": "2629:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2629:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2628:15:9" + }, + "returnParameters": { + "id": 4590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4589, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4591, + "src": "2667:6:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4588, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4587, + "name": "IERC20", + "nameLocations": [ + "2667:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2667:6:9" + }, + "referencedDeclaration": 479, + "src": "2667:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "2666:8:9" + }, + "scope": 4800, + "src": "2606:69:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "27721842", + "id": 4599, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isQuoteAsset", + "nameLocation": "2690:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4594, + "mutability": "mutable", + "name": "token", + "nameLocation": "2710:5:9", + "nodeType": "VariableDeclaration", + "scope": 4599, + "src": "2703:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4593, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4592, + "name": "IERC20", + "nameLocations": [ + "2703:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2703:6:9" + }, + "referencedDeclaration": 479, + "src": "2703:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "2702:14:9" + }, + "returnParameters": { + "id": 4598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4597, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4599, + "src": "2740:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4596, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2740:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2739:6:9" + }, + "scope": 4800, + "src": "2681:65:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "46904840", + "id": 4604, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeRecipient", + "nameLocation": "2761:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4600, + "nodeType": "ParameterList", + "parameters": [], + "src": "2773:2:9" + }, + "returnParameters": { + "id": 4603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4602, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4604, + "src": "2799:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2799:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2798:9:9" + }, + "scope": 4800, + "src": "2752:56:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4847cdc8", + "id": 4609, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "flashLoanFee", + "nameLocation": "2823:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4605, + "nodeType": "ParameterList", + "parameters": [], + "src": "2835:2:9" + }, + "returnParameters": { + "id": 4608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4607, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4609, + "src": "2861:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2861:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2860:9:9" + }, + "scope": 4800, + "src": "2814:56:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5c779d6d", + "id": 4614, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "creationUnlocked", + "nameLocation": "2885:16:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4610, + "nodeType": "ParameterList", + "parameters": [], + "src": "2901:2:9" + }, + "returnParameters": { + "id": 4613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4612, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4614, + "src": "2927:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4611, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2927:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2926:6:9" + }, + "scope": 4800, + "src": "2876:57:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "72e47b8c", + "id": 4622, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allLBPairs", + "nameLocation": "2948:10:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4616, + "mutability": "mutable", + "name": "id", + "nameLocation": "2967:2:9", + "nodeType": "VariableDeclaration", + "scope": 4622, + "src": "2959:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2959:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2958:12:9" + }, + "returnParameters": { + "id": 4621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4620, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4622, + "src": "2989:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 4619, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4618, + "name": "ILBLegacyPair", + "nameLocations": [ + "2989:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "2989:13:9" + }, + "referencedDeclaration": 5216, + "src": "2989:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + } + ], + "src": "2988:15:9" + }, + "scope": 4800, + "src": "2939:65:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e937c3a", + "id": 4627, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNumberOfLBPairs", + "nameLocation": "3019:18:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4623, + "nodeType": "ParameterList", + "parameters": [], + "src": "3037:2:9" + }, + "returnParameters": { + "id": 4626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4625, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4627, + "src": "3063:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4624, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3063:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3062:9:9" + }, + "scope": 4800, + "src": "3010:62:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "704037bd", + "id": 4641, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPairInformation", + "nameLocation": "3087:20:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4630, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "3115:6:9", + "nodeType": "VariableDeclaration", + "scope": 4641, + "src": "3108:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4629, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4628, + "name": "IERC20", + "nameLocations": [ + "3108:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3108:6:9" + }, + "referencedDeclaration": 479, + "src": "3108:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4633, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "3130:6:9", + "nodeType": "VariableDeclaration", + "scope": 4641, + "src": "3123:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4632, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4631, + "name": "IERC20", + "nameLocations": [ + "3123:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3123:6:9" + }, + "referencedDeclaration": 479, + "src": "3123:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4635, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3146:7:9", + "nodeType": "VariableDeclaration", + "scope": 4641, + "src": "3138:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3138:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3107:47:9" + }, + "returnParameters": { + "id": 4640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4639, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4641, + "src": "3202:24:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$4452_memory_ptr", + "typeString": "struct ILBLegacyFactory.LBPairInformation" + }, + "typeName": { + "id": 4638, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4637, + "name": "LBPairInformation", + "nameLocations": [ + "3202:17:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4452, + "src": "3202:17:9" + }, + "referencedDeclaration": 4452, + "src": "3202:17:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$4452_storage_ptr", + "typeString": "struct ILBLegacyFactory.LBPairInformation" + } + }, + "visibility": "internal" + } + ], + "src": "3201:26:9" + }, + "scope": 4800, + "src": "3078:150:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "935ea51b", + "id": 4662, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPreset", + "nameLocation": "3243:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4643, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3260:7:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3253:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4642, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3253:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3252:16:9" + }, + "returnParameters": { + "id": 4661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4646, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "3337:10:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3329:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4645, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3329:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4648, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "3369:12:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3361:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4647, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3361:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4650, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "3403:11:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3395:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3395:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4652, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "3436:15:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3428:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3428:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4654, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "3473:18:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3465:26:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3465:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4656, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "3513:13:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3505:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4655, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3505:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4658, + "mutability": "mutable", + "name": "maxAccumulator", + "nameLocation": "3548:14:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3540:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3540:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4660, + "mutability": "mutable", + "name": "sampleLifetime", + "nameLocation": "3584:14:9", + "nodeType": "VariableDeclaration", + "scope": 4662, + "src": "3576:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4659, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3576:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3315:293:9" + }, + "scope": 4800, + "src": "3234:375:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5b35875c", + "id": 4668, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllBinSteps", + "nameLocation": "3624:14:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4663, + "nodeType": "ParameterList", + "parameters": [], + "src": "3638:2:9" + }, + "returnParameters": { + "id": 4667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4666, + "mutability": "mutable", + "name": "presetsBinStep", + "nameLocation": "3681:14:9", + "nodeType": "VariableDeclaration", + "scope": 4668, + "src": "3664:31:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3664:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4665, + "nodeType": "ArrayTypeName", + "src": "3664:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "3663:33:9" + }, + "scope": 4800, + "src": "3615:82:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6622e0d7", + "id": 4681, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllLBPairs", + "nameLocation": "3712:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4671, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "3733:6:9", + "nodeType": "VariableDeclaration", + "scope": 4681, + "src": "3726:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4670, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4669, + "name": "IERC20", + "nameLocations": [ + "3726:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3726:6:9" + }, + "referencedDeclaration": 479, + "src": "3726:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4674, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "3748:6:9", + "nodeType": "VariableDeclaration", + "scope": 4681, + "src": "3741:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4673, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4672, + "name": "IERC20", + "nameLocations": [ + "3741:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3741:6:9" + }, + "referencedDeclaration": 479, + "src": "3741:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3725:30:9" + }, + "returnParameters": { + "id": 4680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4679, + "mutability": "mutable", + "name": "LBPairsBinStep", + "nameLocation": "3830:14:9", + "nodeType": "VariableDeclaration", + "scope": 4681, + "src": "3803:41:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$4452_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBLegacyFactory.LBPairInformation[]" + }, + "typeName": { + "baseType": { + "id": 4677, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4676, + "name": "LBPairInformation", + "nameLocations": [ + "3803:17:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4452, + "src": "3803:17:9" + }, + "referencedDeclaration": 4452, + "src": "3803:17:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$4452_storage_ptr", + "typeString": "struct ILBLegacyFactory.LBPairInformation" + } + }, + "id": 4678, + "nodeType": "ArrayTypeName", + "src": "3803:19:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$4452_storage_$dyn_storage_ptr", + "typeString": "struct ILBLegacyFactory.LBPairInformation[]" + } + }, + "visibility": "internal" + } + ], + "src": "3802:43:9" + }, + "scope": 4800, + "src": "3703:143:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b0384781", + "id": 4686, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setLBPairImplementation", + "nameLocation": "3861:23:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4683, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "3893:20:9", + "nodeType": "VariableDeclaration", + "scope": 4686, + "src": "3885:28:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4682, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3885:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3884:30:9" + }, + "returnParameters": { + "id": 4685, + "nodeType": "ParameterList", + "parameters": [], + "src": "3923:0:9" + }, + "scope": 4800, + "src": "3852:72:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "659ac74b", + "id": 4702, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createLBPair", + "nameLocation": "3939:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4689, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "3959:6:9", + "nodeType": "VariableDeclaration", + "scope": 4702, + "src": "3952:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4688, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4687, + "name": "IERC20", + "nameLocations": [ + "3952:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3952:6:9" + }, + "referencedDeclaration": 479, + "src": "3952:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4692, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "3974:6:9", + "nodeType": "VariableDeclaration", + "scope": 4702, + "src": "3967:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4691, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4690, + "name": "IERC20", + "nameLocations": [ + "3967:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3967:6:9" + }, + "referencedDeclaration": 479, + "src": "3967:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4694, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "3989:8:9", + "nodeType": "VariableDeclaration", + "scope": 4702, + "src": "3982:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4693, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3982:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4696, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4006:7:9", + "nodeType": "VariableDeclaration", + "scope": 4702, + "src": "3999:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4695, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3999:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3951:63:9" + }, + "returnParameters": { + "id": 4701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4700, + "mutability": "mutable", + "name": "pair", + "nameLocation": "4063:4:9", + "nodeType": "VariableDeclaration", + "scope": 4702, + "src": "4049:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 4699, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4698, + "name": "ILBLegacyPair", + "nameLocations": [ + "4049:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "4049:13:9" + }, + "referencedDeclaration": 5216, + "src": "4049:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + } + ], + "src": "4048:20:9" + }, + "scope": 4800, + "src": "3930:139:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "200aa7e3", + "id": 4715, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setLBPairIgnored", + "nameLocation": "4084:16:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4705, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "4108:6:9", + "nodeType": "VariableDeclaration", + "scope": 4715, + "src": "4101:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4704, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4703, + "name": "IERC20", + "nameLocations": [ + "4101:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4101:6:9" + }, + "referencedDeclaration": 479, + "src": "4101:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4708, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "4123:6:9", + "nodeType": "VariableDeclaration", + "scope": 4715, + "src": "4116:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4707, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4706, + "name": "IERC20", + "nameLocations": [ + "4116:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4116:6:9" + }, + "referencedDeclaration": 479, + "src": "4116:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4710, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4139:7:9", + "nodeType": "VariableDeclaration", + "scope": 4715, + "src": "4131:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4709, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4131:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4712, + "mutability": "mutable", + "name": "ignored", + "nameLocation": "4153:7:9", + "nodeType": "VariableDeclaration", + "scope": 4715, + "src": "4148:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4711, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4148:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4100:61:9" + }, + "returnParameters": { + "id": 4714, + "nodeType": "ParameterList", + "parameters": [], + "src": "4170:0:9" + }, + "scope": 4800, + "src": "4075:96:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0af97c9a", + "id": 4736, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setPreset", + "nameLocation": "4186:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4717, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4212:7:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4205:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4716, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4205:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4719, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "4236:10:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4229:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4718, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4229:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4721, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "4263:12:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4256:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4720, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4256:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4723, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "4292:11:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4285:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4722, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4285:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4725, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "4320:15:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4313:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4724, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4313:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4727, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "4352:18:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4345:25:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4726, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4345:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4729, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "4387:13:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4380:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4728, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4380:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4731, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "4417:24:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4410:31:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4730, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4410:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4733, + "mutability": "mutable", + "name": "sampleLifetime", + "nameLocation": "4458:14:9", + "nodeType": "VariableDeclaration", + "scope": 4736, + "src": "4451:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4732, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4451:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4195:283:9" + }, + "returnParameters": { + "id": 4735, + "nodeType": "ParameterList", + "parameters": [], + "src": "4487:0:9" + }, + "scope": 4800, + "src": "4177:311:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e203a31f", + "id": 4741, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removePreset", + "nameLocation": "4503:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4738, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4523:7:9", + "nodeType": "VariableDeclaration", + "scope": 4741, + "src": "4516:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4737, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4516:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4515:16:9" + }, + "returnParameters": { + "id": 4740, + "nodeType": "ParameterList", + "parameters": [], + "src": "4540:0:9" + }, + "scope": 4800, + "src": "4494:47:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "093ff769", + "id": 4766, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeesParametersOnPair", + "nameLocation": "4556:23:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4744, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "4596:6:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4589:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4743, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4742, + "name": "IERC20", + "nameLocations": [ + "4589:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4589:6:9" + }, + "referencedDeclaration": 479, + "src": "4589:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4747, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "4619:6:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4612:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4746, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4745, + "name": "IERC20", + "nameLocations": [ + "4612:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4612:6:9" + }, + "referencedDeclaration": 479, + "src": "4612:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4749, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4642:7:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4635:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4748, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4635:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4751, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "4666:10:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4659:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4750, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4659:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4753, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "4693:12:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4686:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4752, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4686:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4755, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "4722:11:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4715:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4754, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4715:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4757, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "4750:15:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4743:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4756, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4743:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4759, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "4782:18:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4775:25:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4758, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4775:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4761, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "4817:13:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4810:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4760, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4810:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4763, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "4847:24:9", + "nodeType": "VariableDeclaration", + "scope": 4766, + "src": "4840:31:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4762, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4840:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4579:298:9" + }, + "returnParameters": { + "id": 4765, + "nodeType": "ParameterList", + "parameters": [], + "src": "4886:0:9" + }, + "scope": 4800, + "src": "4547:340:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e74b981b", + "id": 4771, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeRecipient", + "nameLocation": "4902:15:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4769, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4768, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "4926:12:9", + "nodeType": "VariableDeclaration", + "scope": 4771, + "src": "4918:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4918:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4917:22:9" + }, + "returnParameters": { + "id": 4770, + "nodeType": "ParameterList", + "parameters": [], + "src": "4948:0:9" + }, + "scope": 4800, + "src": "4893:56:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e92d0d5d", + "id": 4776, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFlashLoanFee", + "nameLocation": "4964:15:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4773, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "4988:12:9", + "nodeType": "VariableDeclaration", + "scope": 4776, + "src": "4980:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4772, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4980:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4979:22:9" + }, + "returnParameters": { + "id": 4775, + "nodeType": "ParameterList", + "parameters": [], + "src": "5010:0:9" + }, + "scope": 4800, + "src": "4955:56:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "22f3fe14", + "id": 4781, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFactoryLockedState", + "nameLocation": "5026:21:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4778, + "mutability": "mutable", + "name": "locked", + "nameLocation": "5053:6:9", + "nodeType": "VariableDeclaration", + "scope": 4781, + "src": "5048:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4777, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5048:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5047:13:9" + }, + "returnParameters": { + "id": 4780, + "nodeType": "ParameterList", + "parameters": [], + "src": "5069:0:9" + }, + "scope": 4800, + "src": "5017:53:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a440923", + "id": 4787, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addQuoteAsset", + "nameLocation": "5085:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4784, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "5106:10:9", + "nodeType": "VariableDeclaration", + "scope": 4787, + "src": "5099:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4783, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4782, + "name": "IERC20", + "nameLocations": [ + "5099:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5099:6:9" + }, + "referencedDeclaration": 479, + "src": "5099:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "5098:19:9" + }, + "returnParameters": { + "id": 4786, + "nodeType": "ParameterList", + "parameters": [], + "src": "5126:0:9" + }, + "scope": 4800, + "src": "5076:51:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ddbfd941", + "id": 4793, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeQuoteAsset", + "nameLocation": "5142:16:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4790, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "5166:10:9", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "5159:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4789, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4788, + "name": "IERC20", + "nameLocations": [ + "5159:6:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5159:6:9" + }, + "referencedDeclaration": 479, + "src": "5159:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "5158:19:9" + }, + "returnParameters": { + "id": 4792, + "nodeType": "ParameterList", + "parameters": [], + "src": "5186:0:9" + }, + "scope": 4800, + "src": "5133:54:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3c78a941", + "id": 4799, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "forceDecay", + "nameLocation": "5202:10:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4796, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "5227:6:9", + "nodeType": "VariableDeclaration", + "scope": 4799, + "src": "5213:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 4795, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4794, + "name": "ILBLegacyPair", + "nameLocations": [ + "5213:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "5213:13:9" + }, + "referencedDeclaration": 5216, + "src": "5213:13:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + } + ], + "src": "5212:22:9" + }, + "returnParameters": { + "id": 4798, + "nodeType": "ParameterList", + "parameters": [], + "src": "5243:0:9" + }, + "scope": 4800, + "src": "5193:51:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4801, + "src": "280:4966:9", + "usedErrors": [], + "usedEvents": [ + 4467, + 4473, + 4479, + 4502, + 4506, + 4512, + 4519, + 4539, + 4543, + 4548, + 4553 + ] + } + ], + "src": "33:5214:9" + }, + "id": 9 + }, + "src/interfaces/ILBLegacyPair.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBLegacyPair.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "ILBLegacyPair": [ + 5216 + ], + "ILBLegacyToken": [ + 5744 + ] + }, + "id": 5217, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4802, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:10" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 4804, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5217, + "sourceUnit": 480, + "src": "59:70:10", + "symbolAliases": [ + { + "foreign": { + "id": 4803, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyToken.sol", + "file": "./ILBLegacyToken.sol", + "id": 4806, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5217, + "sourceUnit": 5745, + "src": "131:52:10", + "symbolAliases": [ + { + "foreign": { + "id": 4805, + "name": "ILBLegacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5744, + "src": "139:14:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4808, + "name": "ILBLegacyToken", + "nameLocations": [ + "306:14:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5744, + "src": "306:14:10" + }, + "id": 4809, + "nodeType": "InheritanceSpecifier", + "src": "306:14:10" + } + ], + "canonicalName": "ILBLegacyPair", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4807, + "nodeType": "StructuredDocumentation", + "src": "185:94:10", + "text": "@title Liquidity Book Pair V2 Interface\n @notice Required interface of LBPair contract" + }, + "fullyImplemented": false, + "id": 5216, + "linearizedBaseContracts": [ + 5216, + 5744, + 521 + ], + "name": "ILBLegacyPair", + "nameLocation": "289:13:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ILBLegacyPair.FeeParameters", + "documentation": { + "id": 4810, + "nodeType": "StructuredDocumentation", + "src": "327:838:10", + "text": "@dev Structure to store the protocol fees:\n - binStep: The bin step\n - baseFactor: The base factor\n - filterPeriod: The filter period, where the fees stays constant\n - decayPeriod: The decay period, where the fees are halved\n - reductionFactor: The reduction factor, used to calculate the reduction of the accumulator\n - variableFeeControl: The variable fee control, used to control the variable fee, can be 0 to disable them\n - protocolShare: The share of fees sent to protocol\n - maxVolatilityAccumulated: The max value of volatility accumulated\n - volatilityAccumulated: The value of volatility accumulated\n - volatilityReference: The value of volatility reference\n - indexRef: The index reference\n - time: The last time the accumulator was called" + }, + "id": 4835, + "members": [ + { + "constant": false, + "id": 4812, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1243:7:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1236:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4811, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1236:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4814, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "1267:10:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1260:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4813, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1260:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4816, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "1294:12:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1287:19:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4815, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1287:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4818, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "1323:11:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1316:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4817, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1316:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4820, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "1351:15:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1344:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4819, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1344:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4822, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "1383:18:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1376:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4821, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1376:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4824, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "1418:13:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1411:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4823, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1411:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4826, + "mutability": "mutable", + "name": "maxVolatilityAccumulated", + "nameLocation": "1448:24:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1441:31:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4825, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1441:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4828, + "mutability": "mutable", + "name": "volatilityAccumulated", + "nameLocation": "1525:21:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1518:28:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4827, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1518:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4830, + "mutability": "mutable", + "name": "volatilityReference", + "nameLocation": "1563:19:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1556:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4829, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1556:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4832, + "mutability": "mutable", + "name": "indexRef", + "nameLocation": "1599:8:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1592:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4831, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1592:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4834, + "mutability": "mutable", + "name": "time", + "nameLocation": "1624:4:10", + "nodeType": "VariableDeclaration", + "scope": 4835, + "src": "1617:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 4833, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "1617:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "name": "FeeParameters", + "nameLocation": "1177:13:10", + "nodeType": "StructDefinition", + "scope": 5216, + "src": "1170:465:10", + "visibility": "public" + }, + { + "canonicalName": "ILBLegacyPair.FeesDistribution", + "documentation": { + "id": 4836, + "nodeType": "StructuredDocumentation", + "src": "1641:164:10", + "text": "@dev Structure used during swaps to distributes the fees:\n - total: The total amount of fees\n - protocol: The amount of fees reserved for protocol" + }, + "id": 4841, + "members": [ + { + "constant": false, + "id": 4838, + "mutability": "mutable", + "name": "total", + "nameLocation": "1852:5:10", + "nodeType": "VariableDeclaration", + "scope": 4841, + "src": "1844:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4837, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1844:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4840, + "mutability": "mutable", + "name": "protocol", + "nameLocation": "1875:8:10", + "nodeType": "VariableDeclaration", + "scope": 4841, + "src": "1867:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4839, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1867:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "name": "FeesDistribution", + "nameLocation": "1817:16:10", + "nodeType": "StructDefinition", + "scope": 5216, + "src": "1810:80:10", + "visibility": "public" + }, + { + "canonicalName": "ILBLegacyPair.Bin", + "documentation": { + "id": 4842, + "nodeType": "StructuredDocumentation", + "src": "1896:171:10", + "text": "@dev Structure to store the reserves of bins:\n - reserveX: The current reserve of tokenX of the bin\n - reserveY: The current reserve of tokenY of the bin" + }, + "id": 4851, + "members": [ + { + "constant": false, + "id": 4844, + "mutability": "mutable", + "name": "reserveX", + "nameLocation": "2101:8:10", + "nodeType": "VariableDeclaration", + "scope": 4851, + "src": "2093:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 4843, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2093:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4846, + "mutability": "mutable", + "name": "reserveY", + "nameLocation": "2127:8:10", + "nodeType": "VariableDeclaration", + "scope": 4851, + "src": "2119:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 4845, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2119:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4848, + "mutability": "mutable", + "name": "accTokenXPerShare", + "nameLocation": "2153:17:10", + "nodeType": "VariableDeclaration", + "scope": 4851, + "src": "2145:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4847, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2145:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4850, + "mutability": "mutable", + "name": "accTokenYPerShare", + "nameLocation": "2188:17:10", + "nodeType": "VariableDeclaration", + "scope": 4851, + "src": "2180:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4849, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2180:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Bin", + "nameLocation": "2079:3:10", + "nodeType": "StructDefinition", + "scope": 5216, + "src": "2072:140:10", + "visibility": "public" + }, + { + "canonicalName": "ILBLegacyPair.PairInformation", + "documentation": { + "id": 4852, + "nodeType": "StructuredDocumentation", + "src": "2218:922:10", + "text": "@dev Structure to store the information of the pair such as:\n slot0:\n - activeId: The current id used for swaps, this is also linked with the price\n - reserveX: The sum of amounts of tokenX across all bins\n slot1:\n - reserveY: The sum of amounts of tokenY across all bins\n - oracleSampleLifetime: The lifetime of an oracle sample\n - oracleSize: The current size of the oracle, can be increase by users\n - oracleActiveSize: The current active size of the oracle, composed only from non empty data sample\n - oracleLastTimestamp: The current last timestamp at which a sample was added to the circular buffer\n - oracleId: The current id of the oracle\n slot2:\n - feesX: The current amount of fees to distribute in tokenX (total, protocol)\n slot3:\n - feesY: The current amount of fees to distribute in tokenY (total, protocol)" + }, + "id": 4875, + "members": [ + { + "constant": false, + "id": 4854, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "3185:8:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3178:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4853, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3178:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4856, + "mutability": "mutable", + "name": "reserveX", + "nameLocation": "3211:8:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3203:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + }, + "typeName": { + "id": 4855, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "3203:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4858, + "mutability": "mutable", + "name": "reserveY", + "nameLocation": "3237:8:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3229:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + }, + "typeName": { + "id": 4857, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "3229:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4860, + "mutability": "mutable", + "name": "oracleSampleLifetime", + "nameLocation": "3262:20:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3255:27:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4859, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3255:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4862, + "mutability": "mutable", + "name": "oracleSize", + "nameLocation": "3299:10:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3292:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4861, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3292:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4864, + "mutability": "mutable", + "name": "oracleActiveSize", + "nameLocation": "3326:16:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3319:23:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4863, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3319:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4866, + "mutability": "mutable", + "name": "oracleLastTimestamp", + "nameLocation": "3359:19:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3352:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 4865, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "3352:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4868, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "3395:8:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3388:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4867, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3388:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4871, + "mutability": "mutable", + "name": "feesX", + "nameLocation": "3430:5:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3413:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FeesDistribution_$4841_storage_ptr", + "typeString": "struct ILBLegacyPair.FeesDistribution" + }, + "typeName": { + "id": 4870, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4869, + "name": "FeesDistribution", + "nameLocations": [ + "3413:16:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4841, + "src": "3413:16:10" + }, + "referencedDeclaration": 4841, + "src": "3413:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FeesDistribution_$4841_storage_ptr", + "typeString": "struct ILBLegacyPair.FeesDistribution" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4874, + "mutability": "mutable", + "name": "feesY", + "nameLocation": "3462:5:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "3445:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FeesDistribution_$4841_storage_ptr", + "typeString": "struct ILBLegacyPair.FeesDistribution" + }, + "typeName": { + "id": 4873, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4872, + "name": "FeesDistribution", + "nameLocations": [ + "3445:16:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4841, + "src": "3445:16:10" + }, + "referencedDeclaration": 4841, + "src": "3445:16:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FeesDistribution_$4841_storage_ptr", + "typeString": "struct ILBLegacyPair.FeesDistribution" + } + }, + "visibility": "internal" + } + ], + "name": "PairInformation", + "nameLocation": "3152:15:10", + "nodeType": "StructDefinition", + "scope": 5216, + "src": "3145:329:10", + "visibility": "public" + }, + { + "canonicalName": "ILBLegacyPair.Debts", + "documentation": { + "id": 4876, + "nodeType": "StructuredDocumentation", + "src": "3480:116:10", + "text": "@dev Structure to store the debts of users\n - debtX: The tokenX's debt\n - debtY: The tokenY's debt" + }, + "id": 4881, + "members": [ + { + "constant": false, + "id": 4878, + "mutability": "mutable", + "name": "debtX", + "nameLocation": "3632:5:10", + "nodeType": "VariableDeclaration", + "scope": 4881, + "src": "3624:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4877, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3624:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4880, + "mutability": "mutable", + "name": "debtY", + "nameLocation": "3655:5:10", + "nodeType": "VariableDeclaration", + "scope": 4881, + "src": "3647:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3647:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Debts", + "nameLocation": "3608:5:10", + "nodeType": "StructDefinition", + "scope": 5216, + "src": "3601:66:10", + "visibility": "public" + }, + { + "canonicalName": "ILBLegacyPair.Fees", + "documentation": { + "id": 4882, + "nodeType": "StructuredDocumentation", + "src": "3673:129:10", + "text": "@dev Structure to store fees:\n - tokenX: The amount of fees of token X\n - tokenY: The amount of fees of token Y" + }, + "id": 4887, + "members": [ + { + "constant": false, + "id": 4884, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "3837:6:10", + "nodeType": "VariableDeclaration", + "scope": 4887, + "src": "3829:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4883, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3829:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4886, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "3861:6:10", + "nodeType": "VariableDeclaration", + "scope": 4887, + "src": "3853:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4885, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3853:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "name": "Fees", + "nameLocation": "3814:4:10", + "nodeType": "StructDefinition", + "scope": 5216, + "src": "3807:67:10", + "visibility": "public" + }, + { + "canonicalName": "ILBLegacyPair.MintInfo", + "documentation": { + "id": 4888, + "nodeType": "StructuredDocumentation", + "src": "3880:988:10", + "text": "@dev Structure to minting informations:\n - amountXIn: The amount of token X sent\n - amountYIn: The amount of token Y sent\n - amountXAddedToPair: The amount of token X that have been actually added to the pair\n - amountYAddedToPair: The amount of token Y that have been actually added to the pair\n - activeFeeX: Fees X currently generated\n - activeFeeY: Fees Y currently generated\n - totalDistributionX: Total distribution of token X. Should be 1e18 (100%) or 0 (0%)\n - totalDistributionY: Total distribution of token Y. Should be 1e18 (100%) or 0 (0%)\n - id: Id of the current working bin when looping on the distribution array\n - amountX: The amount of token X deposited in the current bin\n - amountY: The amount of token Y deposited in the current bin\n - distributionX: Distribution of token X for the current working bin\n - distributionY: Distribution of token Y for the current working bin" + }, + "id": 4915, + "members": [ + { + "constant": false, + "id": 4890, + "mutability": "mutable", + "name": "amountXIn", + "nameLocation": "4907:9:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "4899:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4889, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4899:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4892, + "mutability": "mutable", + "name": "amountYIn", + "nameLocation": "4934:9:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "4926:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4926:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4894, + "mutability": "mutable", + "name": "amountXAddedToPair", + "nameLocation": "4961:18:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "4953:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4953:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4896, + "mutability": "mutable", + "name": "amountYAddedToPair", + "nameLocation": "4997:18:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "4989:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4989:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4898, + "mutability": "mutable", + "name": "activeFeeX", + "nameLocation": "5033:10:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5025:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5025:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4900, + "mutability": "mutable", + "name": "activeFeeY", + "nameLocation": "5061:10:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5053:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5053:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4902, + "mutability": "mutable", + "name": "totalDistributionX", + "nameLocation": "5089:18:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5081:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4901, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5081:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4904, + "mutability": "mutable", + "name": "totalDistributionY", + "nameLocation": "5125:18:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5117:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5117:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4906, + "mutability": "mutable", + "name": "id", + "nameLocation": "5161:2:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5153:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5153:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4908, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "5181:7:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5173:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5173:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4910, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "5206:7:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5198:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5198:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4912, + "mutability": "mutable", + "name": "distributionX", + "nameLocation": "5231:13:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5223:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4911, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5223:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4914, + "mutability": "mutable", + "name": "distributionY", + "nameLocation": "5262:13:10", + "nodeType": "VariableDeclaration", + "scope": 4915, + "src": "5254:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5254:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MintInfo", + "nameLocation": "4880:8:10", + "nodeType": "StructDefinition", + "scope": 5216, + "src": "4873:409:10", + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "c528cda9e500228b16ce84fadae290d9a49aecb17483110004c5af0a07f6fd73", + "id": 4933, + "name": "Swap", + "nameLocation": "5294:4:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 4932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4917, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5324:6:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5308:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5308:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4919, + "indexed": true, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "5356:9:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5340:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4918, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5340:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4921, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "5391:2:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5375:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4920, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5375:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4923, + "indexed": false, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "5408:8:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5403:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4922, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5403:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4925, + "indexed": false, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "5434:8:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5426:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5426:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4927, + "indexed": false, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "5460:9:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5452:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5452:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4929, + "indexed": false, + "mutability": "mutable", + "name": "volatilityAccumulated", + "nameLocation": "5487:21:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5479:29:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4928, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5479:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4931, + "indexed": false, + "mutability": "mutable", + "name": "fees", + "nameLocation": "5526:4:10", + "nodeType": "VariableDeclaration", + "scope": 4933, + "src": "5518:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4930, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5518:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5298:238:10" + }, + "src": "5288:249:10" + }, + { + "anonymous": false, + "eventSelector": "3659d15bd4bb92ab352a8d35bc3119ec6e7e0ab48e4d46201c8a28e02b6a8a86", + "id": 4946, + "name": "FlashLoan", + "nameLocation": "5549:9:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 4945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4935, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5575:6:10", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "5559:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4934, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5559:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4937, + "indexed": true, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "5599:8:10", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "5583:24:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5583:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4940, + "indexed": false, + "mutability": "mutable", + "name": "token", + "nameLocation": "5616:5:10", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "5609:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4939, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4938, + "name": "IERC20", + "nameLocations": [ + "5609:6:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5609:6:10" + }, + "referencedDeclaration": 479, + "src": "5609:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4942, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "5631:6:10", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "5623:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4941, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5623:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4944, + "indexed": false, + "mutability": "mutable", + "name": "fee", + "nameLocation": "5647:3:10", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "5639:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4943, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5639:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5558:93:10" + }, + "src": "5543:109:10" + }, + { + "anonymous": false, + "eventSelector": "56f8e764728c77dd99ffbc1b64e6d02e227e6ec8214f165d4ef31351de136a0d", + "id": 4958, + "name": "CompositionFee", + "nameLocation": "5664:14:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 4957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4948, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5704:6:10", + "nodeType": "VariableDeclaration", + "scope": 4958, + "src": "5688:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5688:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4950, + "indexed": true, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "5728:9:10", + "nodeType": "VariableDeclaration", + "scope": 4958, + "src": "5712:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5712:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4952, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "5755:2:10", + "nodeType": "VariableDeclaration", + "scope": 4958, + "src": "5739:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4951, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5739:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4954, + "indexed": false, + "mutability": "mutable", + "name": "feesX", + "nameLocation": "5767:5:10", + "nodeType": "VariableDeclaration", + "scope": 4958, + "src": "5759:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5759:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4956, + "indexed": false, + "mutability": "mutable", + "name": "feesY", + "nameLocation": "5782:5:10", + "nodeType": "VariableDeclaration", + "scope": 4958, + "src": "5774:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4955, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5774:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5678:115:10" + }, + "src": "5658:136:10" + }, + { + "anonymous": false, + "eventSelector": "4216cc3bd0c40a90259d92f800c06ede5c47765f41a488072b7e7104a1f95841", + "id": 4970, + "name": "DepositedToBin", + "nameLocation": "5806:14:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 4969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4960, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5846:6:10", + "nodeType": "VariableDeclaration", + "scope": 4970, + "src": "5830:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4959, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5830:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4962, + "indexed": true, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "5870:9:10", + "nodeType": "VariableDeclaration", + "scope": 4970, + "src": "5854:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4961, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5854:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4964, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "5897:2:10", + "nodeType": "VariableDeclaration", + "scope": 4970, + "src": "5881:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5881:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4966, + "indexed": false, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "5909:7:10", + "nodeType": "VariableDeclaration", + "scope": 4970, + "src": "5901:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4965, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5901:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4968, + "indexed": false, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "5926:7:10", + "nodeType": "VariableDeclaration", + "scope": 4970, + "src": "5918:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5918:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5820:119:10" + }, + "src": "5800:140:10" + }, + { + "anonymous": false, + "eventSelector": "da5e7177dface55f5e0eff7dfc67420a1db4243ddfcf0ecc84ed93e034dd8cc2", + "id": 4982, + "name": "WithdrawnFromBin", + "nameLocation": "5952:16:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 4981, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4972, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5994:6:10", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "5978:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5978:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4974, + "indexed": true, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "6018:9:10", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "6002:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6002:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4976, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "6045:2:10", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "6029:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6029:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4978, + "indexed": false, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "6057:7:10", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "6049:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6049:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4980, + "indexed": false, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "6074:7:10", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "6066:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4979, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6066:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5968:119:10" + }, + "src": "5946:142:10" + }, + { + "anonymous": false, + "eventSelector": "28a87b6059180e46de5fb9ab35eb043e8fe00ab45afcc7789e3934ecbbcde3ea", + "id": 4992, + "name": "FeesCollected", + "nameLocation": "6100:13:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 4991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4984, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6130:6:10", + "nodeType": "VariableDeclaration", + "scope": 4992, + "src": "6114:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4983, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6114:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4986, + "indexed": true, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "6154:9:10", + "nodeType": "VariableDeclaration", + "scope": 4992, + "src": "6138:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4985, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6138:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4988, + "indexed": false, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "6173:7:10", + "nodeType": "VariableDeclaration", + "scope": 4992, + "src": "6165:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4987, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6165:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4990, + "indexed": false, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "6190:7:10", + "nodeType": "VariableDeclaration", + "scope": 4992, + "src": "6182:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6182:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6113:85:10" + }, + "src": "6094:105:10" + }, + { + "anonymous": false, + "eventSelector": "26b782206d6b531bf95d487110cfefdc443291f176f1977e94abcb7e67bd1b79", + "id": 5002, + "name": "ProtocolFeesCollected", + "nameLocation": "6211:21:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 5001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4994, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6249:6:10", + "nodeType": "VariableDeclaration", + "scope": 5002, + "src": "6233:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6233:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4996, + "indexed": true, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "6273:9:10", + "nodeType": "VariableDeclaration", + "scope": 5002, + "src": "6257:25:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6257:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4998, + "indexed": false, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "6292:7:10", + "nodeType": "VariableDeclaration", + "scope": 5002, + "src": "6284:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6284:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5000, + "indexed": false, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "6309:7:10", + "nodeType": "VariableDeclaration", + "scope": 5002, + "src": "6301:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6301:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6232:85:10" + }, + "src": "6205:113:10" + }, + { + "anonymous": false, + "eventSelector": "525a4241308ea122822834c841f67b00d5efc977ad9118724750f974f7f6531c", + "id": 5008, + "name": "OracleSizeIncreased", + "nameLocation": "6330:19:10", + "nodeType": "EventDefinition", + "parameters": { + "id": 5007, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5004, + "indexed": false, + "mutability": "mutable", + "name": "previousSize", + "nameLocation": "6358:12:10", + "nodeType": "VariableDeclaration", + "scope": 5008, + "src": "6350:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5003, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6350:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5006, + "indexed": false, + "mutability": "mutable", + "name": "newSize", + "nameLocation": "6380:7:10", + "nodeType": "VariableDeclaration", + "scope": 5008, + "src": "6372:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5005, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6372:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6349:39:10" + }, + "src": "6324:65:10" + }, + { + "functionSelector": "16dc165b", + "id": 5014, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenX", + "nameLocation": "6404:6:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5009, + "nodeType": "ParameterList", + "parameters": [], + "src": "6410:2:10" + }, + "returnParameters": { + "id": 5013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5012, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "6436:6:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5011, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5010, + "name": "IERC20", + "nameLocations": [ + "6436:6:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6436:6:10" + }, + "referencedDeclaration": 479, + "src": "6436:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6435:8:10" + }, + "scope": 5216, + "src": "6395:49:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b7d19fc4", + "id": 5020, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenY", + "nameLocation": "6459:6:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5015, + "nodeType": "ParameterList", + "parameters": [], + "src": "6465:2:10" + }, + "returnParameters": { + "id": 5019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5018, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5020, + "src": "6491:6:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5017, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5016, + "name": "IERC20", + "nameLocations": [ + "6491:6:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6491:6:10" + }, + "referencedDeclaration": 479, + "src": "6491:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6490:8:10" + }, + "scope": 5216, + "src": "6450:49:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c45a0155", + "id": 5025, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nameLocation": "6514:7:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5021, + "nodeType": "ParameterList", + "parameters": [], + "src": "6521:2:10" + }, + "returnParameters": { + "id": 5024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5023, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5025, + "src": "6547:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5022, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6547:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6546:9:10" + }, + "scope": 5216, + "src": "6505:51:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1b05b83e", + "id": 5034, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReservesAndId", + "nameLocation": "6571:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5026, + "nodeType": "ParameterList", + "parameters": [], + "src": "6587:2:10" + }, + "returnParameters": { + "id": 5033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5028, + "mutability": "mutable", + "name": "reserveX", + "nameLocation": "6621:8:10", + "nodeType": "VariableDeclaration", + "scope": 5034, + "src": "6613:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6613:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5030, + "mutability": "mutable", + "name": "reserveY", + "nameLocation": "6639:8:10", + "nodeType": "VariableDeclaration", + "scope": 5034, + "src": "6631:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5029, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6631:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5032, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "6657:8:10", + "nodeType": "VariableDeclaration", + "scope": 5034, + "src": "6649:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5031, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6649:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6612:54:10" + }, + "scope": 5216, + "src": "6562:105:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a582cdaa", + "id": 5045, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getGlobalFees", + "nameLocation": "6682:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5035, + "nodeType": "ParameterList", + "parameters": [], + "src": "6695:2:10" + }, + "returnParameters": { + "id": 5044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5037, + "mutability": "mutable", + "name": "feesXTotal", + "nameLocation": "6753:10:10", + "nodeType": "VariableDeclaration", + "scope": 5045, + "src": "6745:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5036, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6745:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5039, + "mutability": "mutable", + "name": "feesYTotal", + "nameLocation": "6773:10:10", + "nodeType": "VariableDeclaration", + "scope": 5045, + "src": "6765:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5038, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6765:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5041, + "mutability": "mutable", + "name": "feesXProtocol", + "nameLocation": "6793:13:10", + "nodeType": "VariableDeclaration", + "scope": 5045, + "src": "6785:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5040, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6785:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5043, + "mutability": "mutable", + "name": "feesYProtocol", + "nameLocation": "6816:13:10", + "nodeType": "VariableDeclaration", + "scope": 5045, + "src": "6808:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5042, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6808:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "6744:86:10" + }, + "scope": 5216, + "src": "6673:158:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "55182894", + "id": 5062, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracleParameters", + "nameLocation": "6846:19:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5046, + "nodeType": "ParameterList", + "parameters": [], + "src": "6865:2:10" + }, + "returnParameters": { + "id": 5061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5048, + "mutability": "mutable", + "name": "oracleSampleLifetime", + "nameLocation": "6936:20:10", + "nodeType": "VariableDeclaration", + "scope": 5062, + "src": "6928:28:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6928:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5050, + "mutability": "mutable", + "name": "oracleSize", + "nameLocation": "6978:10:10", + "nodeType": "VariableDeclaration", + "scope": 5062, + "src": "6970:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6970:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5052, + "mutability": "mutable", + "name": "oracleActiveSize", + "nameLocation": "7010:16:10", + "nodeType": "VariableDeclaration", + "scope": 5062, + "src": "7002:24:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5051, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7002:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5054, + "mutability": "mutable", + "name": "oracleLastTimestamp", + "nameLocation": "7048:19:10", + "nodeType": "VariableDeclaration", + "scope": 5062, + "src": "7040:27:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7040:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5056, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "7089:8:10", + "nodeType": "VariableDeclaration", + "scope": 5062, + "src": "7081:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7081:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5058, + "mutability": "mutable", + "name": "min", + "nameLocation": "7119:3:10", + "nodeType": "VariableDeclaration", + "scope": 5062, + "src": "7111:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7111:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5060, + "mutability": "mutable", + "name": "max", + "nameLocation": "7144:3:10", + "nodeType": "VariableDeclaration", + "scope": 5062, + "src": "7136:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5059, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7136:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6914:243:10" + }, + "scope": 5216, + "src": "6837:321:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a21635a7", + "id": 5073, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracleSampleFrom", + "nameLocation": "7173:19:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5064, + "mutability": "mutable", + "name": "timeDelta", + "nameLocation": "7201:9:10", + "nodeType": "VariableDeclaration", + "scope": 5073, + "src": "7193:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5063, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7193:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7192:19:10" + }, + "returnParameters": { + "id": 5072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5067, + "mutability": "mutable", + "name": "cumulativeId", + "nameLocation": "7267:12:10", + "nodeType": "VariableDeclaration", + "scope": 5073, + "src": "7259:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7259:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5069, + "mutability": "mutable", + "name": "cumulativeAccumulator", + "nameLocation": "7289:21:10", + "nodeType": "VariableDeclaration", + "scope": 5073, + "src": "7281:29:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5068, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7281:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5071, + "mutability": "mutable", + "name": "cumulativeBinCrossed", + "nameLocation": "7320:20:10", + "nodeType": "VariableDeclaration", + "scope": 5073, + "src": "7312:28:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7312:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7258:83:10" + }, + "scope": 5216, + "src": "7164:178:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "98c7adf3", + "id": 5079, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeParameters", + "nameLocation": "7357:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5074, + "nodeType": "ParameterList", + "parameters": [], + "src": "7370:2:10" + }, + "returnParameters": { + "id": 5078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5077, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5079, + "src": "7396:20:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FeeParameters_$4835_memory_ptr", + "typeString": "struct ILBLegacyPair.FeeParameters" + }, + "typeName": { + "id": 5076, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5075, + "name": "FeeParameters", + "nameLocations": [ + "7396:13:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4835, + "src": "7396:13:10" + }, + "referencedDeclaration": 4835, + "src": "7396:13:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_FeeParameters_$4835_storage_ptr", + "typeString": "struct ILBLegacyPair.FeeParameters" + } + }, + "visibility": "internal" + } + ], + "src": "7395:22:10" + }, + "scope": 5216, + "src": "7348:70:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8f919a83", + "id": 5088, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "findFirstNonEmptyBinId", + "nameLocation": "7433:22:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5081, + "mutability": "mutable", + "name": "id_", + "nameLocation": "7463:3:10", + "nodeType": "VariableDeclaration", + "scope": 5088, + "src": "7456:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5080, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "7456:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5083, + "mutability": "mutable", + "name": "sentTokenY", + "nameLocation": "7473:10:10", + "nodeType": "VariableDeclaration", + "scope": 5088, + "src": "7468:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5082, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7468:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7455:29:10" + }, + "returnParameters": { + "id": 5087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5086, + "mutability": "mutable", + "name": "id", + "nameLocation": "7515:2:10", + "nodeType": "VariableDeclaration", + "scope": 5088, + "src": "7508:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5085, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "7508:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "7507:11:10" + }, + "scope": 5216, + "src": "7424:95:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0abe9688", + "id": 5097, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getBin", + "nameLocation": "7534:6:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5090, + "mutability": "mutable", + "name": "id", + "nameLocation": "7548:2:10", + "nodeType": "VariableDeclaration", + "scope": 5097, + "src": "7541:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5089, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "7541:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "7540:11:10" + }, + "returnParameters": { + "id": 5096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5093, + "mutability": "mutable", + "name": "reserveX", + "nameLocation": "7583:8:10", + "nodeType": "VariableDeclaration", + "scope": 5097, + "src": "7575:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7575:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5095, + "mutability": "mutable", + "name": "reserveY", + "nameLocation": "7601:8:10", + "nodeType": "VariableDeclaration", + "scope": 5097, + "src": "7593:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5094, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7593:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7574:36:10" + }, + "scope": 5216, + "src": "7525:86:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f7cff1f8", + "id": 5109, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "pendingFees", + "nameLocation": "7626:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5099, + "mutability": "mutable", + "name": "account", + "nameLocation": "7646:7:10", + "nodeType": "VariableDeclaration", + "scope": 5109, + "src": "7638:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5098, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7638:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5102, + "mutability": "mutable", + "name": "ids", + "nameLocation": "7672:3:10", + "nodeType": "VariableDeclaration", + "scope": 5109, + "src": "7655:20:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7655:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5101, + "nodeType": "ArrayTypeName", + "src": "7655:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "7637:39:10" + }, + "returnParameters": { + "id": 5108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5105, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "7732:7:10", + "nodeType": "VariableDeclaration", + "scope": 5109, + "src": "7724:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7724:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5107, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "7749:7:10", + "nodeType": "VariableDeclaration", + "scope": 5109, + "src": "7741:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7741:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7723:34:10" + }, + "scope": 5216, + "src": "7617:141:10", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "53c059a0", + "id": 5120, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swap", + "nameLocation": "7773:4:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5111, + "mutability": "mutable", + "name": "sentTokenY", + "nameLocation": "7783:10:10", + "nodeType": "VariableDeclaration", + "scope": 5120, + "src": "7778:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5110, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7778:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5113, + "mutability": "mutable", + "name": "to", + "nameLocation": "7803:2:10", + "nodeType": "VariableDeclaration", + "scope": 5120, + "src": "7795:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7795:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7777:29:10" + }, + "returnParameters": { + "id": 5119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5116, + "mutability": "mutable", + "name": "amountXOut", + "nameLocation": "7833:10:10", + "nodeType": "VariableDeclaration", + "scope": 5120, + "src": "7825:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7825:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5118, + "mutability": "mutable", + "name": "amountYOut", + "nameLocation": "7853:10:10", + "nodeType": "VariableDeclaration", + "scope": 5120, + "src": "7845:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7845:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7824:40:10" + }, + "scope": 5216, + "src": "7764:101:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5cffe9de", + "id": 5132, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "flashLoan", + "nameLocation": "7880:9:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5122, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "7898:8:10", + "nodeType": "VariableDeclaration", + "scope": 5132, + "src": "7890:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7890:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5125, + "mutability": "mutable", + "name": "token", + "nameLocation": "7915:5:10", + "nodeType": "VariableDeclaration", + "scope": 5132, + "src": "7908:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5124, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5123, + "name": "IERC20", + "nameLocations": [ + "7908:6:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "7908:6:10" + }, + "referencedDeclaration": 479, + "src": "7908:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5127, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7930:6:10", + "nodeType": "VariableDeclaration", + "scope": 5132, + "src": "7922:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7922:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5129, + "mutability": "mutable", + "name": "data", + "nameLocation": "7953:4:10", + "nodeType": "VariableDeclaration", + "scope": 5132, + "src": "7938:19:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5128, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7938:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7889:69:10" + }, + "returnParameters": { + "id": 5131, + "nodeType": "ParameterList", + "parameters": [], + "src": "7967:0:10" + }, + "scope": 5216, + "src": "7871:97:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "714c8592", + "id": 5153, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "7983:4:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5135, + "mutability": "mutable", + "name": "ids", + "nameLocation": "8016:3:10", + "nodeType": "VariableDeclaration", + "scope": 5153, + "src": "7997:22:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5133, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7997:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5134, + "nodeType": "ArrayTypeName", + "src": "7997:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5138, + "mutability": "mutable", + "name": "distributionX", + "nameLocation": "8048:13:10", + "nodeType": "VariableDeclaration", + "scope": 5153, + "src": "8029:32:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8029:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5137, + "nodeType": "ArrayTypeName", + "src": "8029:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5141, + "mutability": "mutable", + "name": "distributionY", + "nameLocation": "8090:13:10", + "nodeType": "VariableDeclaration", + "scope": 5153, + "src": "8071:32:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5139, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8071:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5140, + "nodeType": "ArrayTypeName", + "src": "8071:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5143, + "mutability": "mutable", + "name": "to", + "nameLocation": "8121:2:10", + "nodeType": "VariableDeclaration", + "scope": 5153, + "src": "8113:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8113:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7987:142:10" + }, + "returnParameters": { + "id": 5152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5146, + "mutability": "mutable", + "name": "amountXAddedToPair", + "nameLocation": "8156:18:10", + "nodeType": "VariableDeclaration", + "scope": 5153, + "src": "8148:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5145, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8148:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5148, + "mutability": "mutable", + "name": "amountYAddedToPair", + "nameLocation": "8184:18:10", + "nodeType": "VariableDeclaration", + "scope": 5153, + "src": "8176:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5147, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8176:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5151, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "8221:15:10", + "nodeType": "VariableDeclaration", + "scope": 5153, + "src": "8204:32:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8204:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5150, + "nodeType": "ArrayTypeName", + "src": "8204:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "8147:90:10" + }, + "scope": 5216, + "src": "7974:264:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0acd451d", + "id": 5168, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "8253:4:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5156, + "mutability": "mutable", + "name": "ids", + "nameLocation": "8277:3:10", + "nodeType": "VariableDeclaration", + "scope": 5168, + "src": "8258:22:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5154, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8258:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5155, + "nodeType": "ArrayTypeName", + "src": "8258:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5159, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "8301:7:10", + "nodeType": "VariableDeclaration", + "scope": 5168, + "src": "8282:26:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8282:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5158, + "nodeType": "ArrayTypeName", + "src": "8282:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5161, + "mutability": "mutable", + "name": "to", + "nameLocation": "8318:2:10", + "nodeType": "VariableDeclaration", + "scope": 5168, + "src": "8310:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8310:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8257:64:10" + }, + "returnParameters": { + "id": 5167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5164, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "8364:7:10", + "nodeType": "VariableDeclaration", + "scope": 5168, + "src": "8356:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8356:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5166, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "8381:7:10", + "nodeType": "VariableDeclaration", + "scope": 5168, + "src": "8373:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5165, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8373:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8355:34:10" + }, + "scope": 5216, + "src": "8244:146:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c7bd6586", + "id": 5173, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "increaseOracleLength", + "nameLocation": "8405:20:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5170, + "mutability": "mutable", + "name": "newSize", + "nameLocation": "8433:7:10", + "nodeType": "VariableDeclaration", + "scope": 5173, + "src": "8426:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5169, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "8426:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "8425:16:10" + }, + "returnParameters": { + "id": 5172, + "nodeType": "ParameterList", + "parameters": [], + "src": "8450:0:10" + }, + "scope": 5216, + "src": "8396:55:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "225b20b9", + "id": 5185, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "collectFees", + "nameLocation": "8466:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5175, + "mutability": "mutable", + "name": "account", + "nameLocation": "8486:7:10", + "nodeType": "VariableDeclaration", + "scope": 5185, + "src": "8478:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8478:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5178, + "mutability": "mutable", + "name": "ids", + "nameLocation": "8514:3:10", + "nodeType": "VariableDeclaration", + "scope": 5185, + "src": "8495:22:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8495:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5177, + "nodeType": "ArrayTypeName", + "src": "8495:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "8477:41:10" + }, + "returnParameters": { + "id": 5184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5181, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "8545:7:10", + "nodeType": "VariableDeclaration", + "scope": 5185, + "src": "8537:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5180, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8537:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5183, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "8562:7:10", + "nodeType": "VariableDeclaration", + "scope": 5185, + "src": "8554:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8554:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8536:34:10" + }, + "scope": 5216, + "src": "8457:114:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a1af5b9a", + "id": 5192, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "collectProtocolFees", + "nameLocation": "8586:19:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5186, + "nodeType": "ParameterList", + "parameters": [], + "src": "8605:2:10" + }, + "returnParameters": { + "id": 5191, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5188, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "8634:7:10", + "nodeType": "VariableDeclaration", + "scope": 5192, + "src": "8626:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5187, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "8626:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5190, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "8651:7:10", + "nodeType": "VariableDeclaration", + "scope": 5192, + "src": "8643:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5189, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "8643:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "8625:34:10" + }, + "scope": 5216, + "src": "8577:83:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "54b5fc87", + "id": 5197, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeesParameters", + "nameLocation": "8675:17:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5194, + "mutability": "mutable", + "name": "packedFeeParameters", + "nameLocation": "8701:19:10", + "nodeType": "VariableDeclaration", + "scope": 5197, + "src": "8693:27:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5193, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8693:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8692:29:10" + }, + "returnParameters": { + "id": 5196, + "nodeType": "ParameterList", + "parameters": [], + "src": "8730:0:10" + }, + "scope": 5216, + "src": "8666:65:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d3b9fbe4", + "id": 5200, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "forceDecay", + "nameLocation": "8746:10:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5198, + "nodeType": "ParameterList", + "parameters": [], + "src": "8756:2:10" + }, + "returnParameters": { + "id": 5199, + "nodeType": "ParameterList", + "parameters": [], + "src": "8767:0:10" + }, + "scope": 5216, + "src": "8737:31:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d32db437", + "id": 5215, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "8783:10:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5203, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "8810:6:10", + "nodeType": "VariableDeclaration", + "scope": 5215, + "src": "8803:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5202, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5201, + "name": "IERC20", + "nameLocations": [ + "8803:6:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "8803:6:10" + }, + "referencedDeclaration": 479, + "src": "8803:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5206, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "8833:6:10", + "nodeType": "VariableDeclaration", + "scope": 5215, + "src": "8826:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5205, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5204, + "name": "IERC20", + "nameLocations": [ + "8826:6:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "8826:6:10" + }, + "referencedDeclaration": 479, + "src": "8826:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5208, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "8856:8:10", + "nodeType": "VariableDeclaration", + "scope": 5215, + "src": "8849:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5207, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8849:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5210, + "mutability": "mutable", + "name": "sampleLifetime", + "nameLocation": "8881:14:10", + "nodeType": "VariableDeclaration", + "scope": 5215, + "src": "8874:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5209, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "8874:6:10", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5212, + "mutability": "mutable", + "name": "packedFeeParameters", + "nameLocation": "8913:19:10", + "nodeType": "VariableDeclaration", + "scope": 5215, + "src": "8905:27:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8905:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8793:145:10" + }, + "returnParameters": { + "id": 5214, + "nodeType": "ParameterList", + "parameters": [], + "src": "8947:0:10" + }, + "scope": 5216, + "src": "8774:174:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5217, + "src": "279:8671:10", + "usedErrors": [], + "usedEvents": [ + 4933, + 4946, + 4958, + 4970, + 4982, + 4992, + 5002, + 5008, + 5643, + 5657, + 5665 + ] + } + ], + "src": "33:8918:10" + }, + "id": 10 + }, + "src/interfaces/ILBLegacyRouter.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBLegacyRouter.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "ILBFactory": [ + 4236 + ], + "ILBLegacyPair": [ + 5216 + ], + "ILBLegacyRouter": [ + 5625 + ], + "ILBToken": [ + 6842 + ], + "ISovrynLBFactoryV1": [ + 6916 + ], + "IWNATIVE": [ + 7175 + ] + }, + "id": 5626, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5218, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:11" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 5220, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5626, + "sourceUnit": 480, + "src": "59:70:11", + "symbolAliases": [ + { + "foreign": { + "id": 5219, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFactory.sol", + "file": "./ILBFactory.sol", + "id": 5222, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5626, + "sourceUnit": 4237, + "src": "131:44:11", + "symbolAliases": [ + { + "foreign": { + "id": 5221, + "name": "ILBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4236, + "src": "139:10:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ISovrynLBFactoryV1.sol", + "file": "./ISovrynLBFactoryV1.sol", + "id": 5224, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5626, + "sourceUnit": 6917, + "src": "176:60:11", + "symbolAliases": [ + { + "foreign": { + "id": 5223, + "name": "ISovrynLBFactoryV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6916, + "src": "184:18:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyPair.sol", + "file": "./ILBLegacyPair.sol", + "id": 5226, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5626, + "sourceUnit": 5217, + "src": "237:50:11", + "symbolAliases": [ + { + "foreign": { + "id": 5225, + "name": "ILBLegacyPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5216, + "src": "245:13:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBToken.sol", + "file": "./ILBToken.sol", + "id": 5228, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5626, + "sourceUnit": 6843, + "src": "288:40:11", + "symbolAliases": [ + { + "foreign": { + "id": 5227, + "name": "ILBToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6842, + "src": "296:8:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/IWNATIVE.sol", + "file": "./IWNATIVE.sol", + "id": 5230, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5626, + "sourceUnit": 7176, + "src": "329:40:11", + "symbolAliases": [ + { + "foreign": { + "id": 5229, + "name": "IWNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "337:8:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBLegacyRouter", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5231, + "nodeType": "StructuredDocumentation", + "src": "371:95:11", + "text": "@title Liquidity Book Router Interface\n @notice Required interface of LBRouter contract" + }, + "fullyImplemented": false, + "id": 5625, + "linearizedBaseContracts": [ + 5625 + ], + "name": "ILBLegacyRouter", + "nameLocation": "476:15:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ILBLegacyRouter.LiquidityParameters", + "id": 5265, + "members": [ + { + "constant": false, + "id": 5234, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "542:6:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "535:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5233, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5232, + "name": "IERC20", + "nameLocations": [ + "535:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "535:6:11" + }, + "referencedDeclaration": 479, + "src": "535:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5237, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "565:6:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "558:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5236, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5235, + "name": "IERC20", + "nameLocations": [ + "558:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "558:6:11" + }, + "referencedDeclaration": 479, + "src": "558:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5239, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "589:7:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "581:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "581:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5241, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "614:7:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "606:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5240, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "606:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5243, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "639:7:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "631:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "631:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5245, + "mutability": "mutable", + "name": "amountXMin", + "nameLocation": "664:10:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "656:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "656:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5247, + "mutability": "mutable", + "name": "amountYMin", + "nameLocation": "692:10:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "684:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "684:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5249, + "mutability": "mutable", + "name": "activeIdDesired", + "nameLocation": "720:15:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "712:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5248, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "712:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5251, + "mutability": "mutable", + "name": "idSlippage", + "nameLocation": "753:10:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "745:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "745:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5254, + "mutability": "mutable", + "name": "deltaIds", + "nameLocation": "782:8:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "773:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr", + "typeString": "int256[]" + }, + "typeName": { + "baseType": { + "id": 5252, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "773:6:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 5253, + "nodeType": "ArrayTypeName", + "src": "773:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr", + "typeString": "int256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5257, + "mutability": "mutable", + "name": "distributionX", + "nameLocation": "810:13:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "800:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "800:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5256, + "nodeType": "ArrayTypeName", + "src": "800:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5260, + "mutability": "mutable", + "name": "distributionY", + "nameLocation": "843:13:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "833:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "833:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5259, + "nodeType": "ArrayTypeName", + "src": "833:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5262, + "mutability": "mutable", + "name": "to", + "nameLocation": "874:2:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "866:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "866:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5264, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "894:8:11", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "886:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5263, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "886:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "LiquidityParameters", + "nameLocation": "505:19:11", + "nodeType": "StructDefinition", + "scope": 5625, + "src": "498:411:11", + "visibility": "public" + }, + { + "functionSelector": "c45a0155", + "id": 5270, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nameLocation": "924:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5266, + "nodeType": "ParameterList", + "parameters": [], + "src": "931:2:11" + }, + "returnParameters": { + "id": 5269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5268, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5270, + "src": "957:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "957:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "956:9:11" + }, + "scope": 5625, + "src": "915:51:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "117be4c2", + "id": 5275, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "wavax", + "nameLocation": "981:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5271, + "nodeType": "ParameterList", + "parameters": [], + "src": "986:2:11" + }, + "returnParameters": { + "id": 5274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5273, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5275, + "src": "1012:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1012:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1011:9:11" + }, + "scope": 5625, + "src": "972:49:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1bd6dfe1", + "id": 5280, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "oldFactory", + "nameLocation": "1036:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5276, + "nodeType": "ParameterList", + "parameters": [], + "src": "1046:2:11" + }, + "returnParameters": { + "id": 5279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5278, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5280, + "src": "1072:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1072:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1071:9:11" + }, + "scope": 5625, + "src": "1027:54:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f96fe925", + "id": 5290, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getIdFromPrice", + "nameLocation": "1096:14:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5283, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "1125:6:11", + "nodeType": "VariableDeclaration", + "scope": 5290, + "src": "1111:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 5282, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5281, + "name": "ILBLegacyPair", + "nameLocations": [ + "1111:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "1111:13:11" + }, + "referencedDeclaration": 5216, + "src": "1111:13:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5285, + "mutability": "mutable", + "name": "price", + "nameLocation": "1141:5:11", + "nodeType": "VariableDeclaration", + "scope": 5290, + "src": "1133:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1133:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1110:37:11" + }, + "returnParameters": { + "id": 5289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5288, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5290, + "src": "1171:6:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5287, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1171:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1170:8:11" + }, + "scope": 5625, + "src": "1087:92:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d0e380f2", + "id": 5300, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPriceFromId", + "nameLocation": "1194:14:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5293, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "1223:6:11", + "nodeType": "VariableDeclaration", + "scope": 5300, + "src": "1209:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 5292, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5291, + "name": "ILBLegacyPair", + "nameLocations": [ + "1209:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "1209:13:11" + }, + "referencedDeclaration": 5216, + "src": "1209:13:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5295, + "mutability": "mutable", + "name": "id", + "nameLocation": "1238:2:11", + "nodeType": "VariableDeclaration", + "scope": 5300, + "src": "1231:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5294, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1231:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1208:33:11" + }, + "returnParameters": { + "id": 5299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5298, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5300, + "src": "1265:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1265:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1264:9:11" + }, + "scope": 5625, + "src": "1185:89:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5bdd4b7c", + "id": 5314, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapIn", + "nameLocation": "1289:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5303, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "1313:6:11", + "nodeType": "VariableDeclaration", + "scope": 5314, + "src": "1299:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 5302, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5301, + "name": "ILBLegacyPair", + "nameLocations": [ + "1299:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "1299:13:11" + }, + "referencedDeclaration": 5216, + "src": "1299:13:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5305, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "1329:9:11", + "nodeType": "VariableDeclaration", + "scope": 5314, + "src": "1321:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5304, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1321:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5307, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "1345:8:11", + "nodeType": "VariableDeclaration", + "scope": 5314, + "src": "1340:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5306, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1340:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1298:56:11" + }, + "returnParameters": { + "id": 5313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5310, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "1410:8:11", + "nodeType": "VariableDeclaration", + "scope": 5314, + "src": "1402:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1402:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5312, + "mutability": "mutable", + "name": "feesIn", + "nameLocation": "1428:6:11", + "nodeType": "VariableDeclaration", + "scope": 5314, + "src": "1420:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1420:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1401:34:11" + }, + "scope": 5625, + "src": "1280:156:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2004b724", + "id": 5328, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapOut", + "nameLocation": "1451:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5317, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "1476:6:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "1462:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 5316, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5315, + "name": "ILBLegacyPair", + "nameLocations": [ + "1462:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "1462:13:11" + }, + "referencedDeclaration": 5216, + "src": "1462:13:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5319, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "1492:8:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "1484:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1484:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5321, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "1507:8:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "1502:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5320, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1502:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1461:55:11" + }, + "returnParameters": { + "id": 5327, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5324, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "1572:9:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "1564:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1564:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5326, + "mutability": "mutable", + "name": "feesIn", + "nameLocation": "1591:6:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "1583:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1583:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1563:35:11" + }, + "scope": 5625, + "src": "1442:157:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "659ac74b", + "id": 5344, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createLBPair", + "nameLocation": "1614:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5331, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "1634:6:11", + "nodeType": "VariableDeclaration", + "scope": 5344, + "src": "1627:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5330, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5329, + "name": "IERC20", + "nameLocations": [ + "1627:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "1627:6:11" + }, + "referencedDeclaration": 479, + "src": "1627:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5334, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "1649:6:11", + "nodeType": "VariableDeclaration", + "scope": 5344, + "src": "1642:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5333, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5332, + "name": "IERC20", + "nameLocations": [ + "1642:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "1642:6:11" + }, + "referencedDeclaration": 479, + "src": "1642:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5336, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "1664:8:11", + "nodeType": "VariableDeclaration", + "scope": 5344, + "src": "1657:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5335, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1657:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5338, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1681:7:11", + "nodeType": "VariableDeclaration", + "scope": 5344, + "src": "1674:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5337, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1674:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "1626:63:11" + }, + "returnParameters": { + "id": 5343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5342, + "mutability": "mutable", + "name": "pair", + "nameLocation": "1738:4:11", + "nodeType": "VariableDeclaration", + "scope": 5344, + "src": "1724:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + }, + "typeName": { + "id": 5341, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5340, + "name": "ILBLegacyPair", + "nameLocations": [ + "1724:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5216, + "src": "1724:13:11" + }, + "referencedDeclaration": 5216, + "src": "1724:13:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBLegacyPair_$5216", + "typeString": "contract ILBLegacyPair" + } + }, + "visibility": "internal" + } + ], + "src": "1723:20:11" + }, + "scope": 5625, + "src": "1605:139:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e324a3e4", + "id": 5356, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidity", + "nameLocation": "1759:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5347, + "mutability": "mutable", + "name": "liquidityParameters", + "nameLocation": "1801:19:11", + "nodeType": "VariableDeclaration", + "scope": 5356, + "src": "1772:48:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$5265_calldata_ptr", + "typeString": "struct ILBLegacyRouter.LiquidityParameters" + }, + "typeName": { + "id": 5346, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5345, + "name": "LiquidityParameters", + "nameLocations": [ + "1772:19:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5265, + "src": "1772:19:11" + }, + "referencedDeclaration": 5265, + "src": "1772:19:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$5265_storage_ptr", + "typeString": "struct ILBLegacyRouter.LiquidityParameters" + } + }, + "visibility": "internal" + } + ], + "src": "1771:50:11" + }, + "returnParameters": { + "id": 5355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5351, + "mutability": "mutable", + "name": "depositIds", + "nameLocation": "1873:10:11", + "nodeType": "VariableDeclaration", + "scope": 5356, + "src": "1856:27:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1856:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5350, + "nodeType": "ArrayTypeName", + "src": "1856:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5354, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "1902:15:11", + "nodeType": "VariableDeclaration", + "scope": 5356, + "src": "1885:32:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5352, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1885:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5353, + "nodeType": "ArrayTypeName", + "src": "1885:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1855:63:11" + }, + "scope": 5625, + "src": "1750:169:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ea8f43d8", + "id": 5368, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidityAVAX", + "nameLocation": "1934:16:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5359, + "mutability": "mutable", + "name": "liquidityParameters", + "nameLocation": "1980:19:11", + "nodeType": "VariableDeclaration", + "scope": 5368, + "src": "1951:48:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$5265_calldata_ptr", + "typeString": "struct ILBLegacyRouter.LiquidityParameters" + }, + "typeName": { + "id": 5358, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5357, + "name": "LiquidityParameters", + "nameLocations": [ + "1951:19:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5265, + "src": "1951:19:11" + }, + "referencedDeclaration": 5265, + "src": "1951:19:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$5265_storage_ptr", + "typeString": "struct ILBLegacyRouter.LiquidityParameters" + } + }, + "visibility": "internal" + } + ], + "src": "1950:50:11" + }, + "returnParameters": { + "id": 5367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5363, + "mutability": "mutable", + "name": "depositIds", + "nameLocation": "2068:10:11", + "nodeType": "VariableDeclaration", + "scope": 5368, + "src": "2051:27:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5361, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2051:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5362, + "nodeType": "ArrayTypeName", + "src": "2051:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5366, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "2097:15:11", + "nodeType": "VariableDeclaration", + "scope": 5368, + "src": "2080:32:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2080:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5365, + "nodeType": "ArrayTypeName", + "src": "2080:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2050:63:11" + }, + "scope": 5625, + "src": "1925:189:11", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c22159b6", + "id": 5397, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidity", + "nameLocation": "2129:15:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5371, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "2161:6:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2154:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5370, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5369, + "name": "IERC20", + "nameLocations": [ + "2154:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2154:6:11" + }, + "referencedDeclaration": 479, + "src": "2154:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5374, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "2184:6:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2177:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5373, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5372, + "name": "IERC20", + "nameLocations": [ + "2177:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2177:6:11" + }, + "referencedDeclaration": 479, + "src": "2177:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5376, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2207:7:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2200:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5375, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2200:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5378, + "mutability": "mutable", + "name": "amountXMin", + "nameLocation": "2232:10:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2224:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5377, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2224:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5380, + "mutability": "mutable", + "name": "amountYMin", + "nameLocation": "2260:10:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2252:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2252:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5383, + "mutability": "mutable", + "name": "ids", + "nameLocation": "2297:3:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2280:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2280:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5382, + "nodeType": "ArrayTypeName", + "src": "2280:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5386, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2327:7:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2310:24:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2310:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5385, + "nodeType": "ArrayTypeName", + "src": "2310:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5388, + "mutability": "mutable", + "name": "to", + "nameLocation": "2352:2:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2344:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2344:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5390, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2372:8:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2364:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2364:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2144:242:11" + }, + "returnParameters": { + "id": 5396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5393, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "2413:7:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2405:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2405:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5395, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "2430:7:11", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "2422:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2422:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2404:34:11" + }, + "scope": 5625, + "src": "2120:319:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bcb1c957", + "id": 5423, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityAVAX", + "nameLocation": "2454:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5400, + "mutability": "mutable", + "name": "token", + "nameLocation": "2490:5:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2483:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5399, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5398, + "name": "IERC20", + "nameLocations": [ + "2483:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2483:6:11" + }, + "referencedDeclaration": 479, + "src": "2483:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5402, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2512:7:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2505:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5401, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2505:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5404, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "2537:14:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2529:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2529:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5406, + "mutability": "mutable", + "name": "amountAVAXMin", + "nameLocation": "2569:13:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2561:21:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2561:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5409, + "mutability": "mutable", + "name": "ids", + "nameLocation": "2609:3:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2592:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5407, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2592:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5408, + "nodeType": "ArrayTypeName", + "src": "2592:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5412, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2639:7:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2622:24:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2622:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5411, + "nodeType": "ArrayTypeName", + "src": "2622:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5414, + "mutability": "mutable", + "name": "to", + "nameLocation": "2672:2:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2656:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2656:15:11", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5416, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2692:8:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2684:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2684:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2473:233:11" + }, + "returnParameters": { + "id": 5422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5419, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "2733:11:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2725:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2725:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5421, + "mutability": "mutable", + "name": "amountAVAX", + "nameLocation": "2754:10:11", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "2746:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2746:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2724:41:11" + }, + "scope": 5625, + "src": "2445:321:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6d0ff495", + "id": 5443, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokens", + "nameLocation": "2781:24:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5425, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "2823:8:11", + "nodeType": "VariableDeclaration", + "scope": 5443, + "src": "2815:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2815:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5427, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "2849:12:11", + "nodeType": "VariableDeclaration", + "scope": 5443, + "src": "2841:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2841:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5430, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "2888:12:11", + "nodeType": "VariableDeclaration", + "scope": 5443, + "src": "2871:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2871:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5429, + "nodeType": "ArrayTypeName", + "src": "2871:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5434, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "2926:9:11", + "nodeType": "VariableDeclaration", + "scope": 5443, + "src": "2910:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5432, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5431, + "name": "IERC20", + "nameLocations": [ + "2910:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "2910:6:11" + }, + "referencedDeclaration": 479, + "src": "2910:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5433, + "nodeType": "ArrayTypeName", + "src": "2910:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5436, + "mutability": "mutable", + "name": "to", + "nameLocation": "2953:2:11", + "nodeType": "VariableDeclaration", + "scope": 5443, + "src": "2945:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5435, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2945:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5438, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "2973:8:11", + "nodeType": "VariableDeclaration", + "scope": 5443, + "src": "2965:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5437, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2965:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2805:182:11" + }, + "returnParameters": { + "id": 5442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5441, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3014:9:11", + "nodeType": "VariableDeclaration", + "scope": 5443, + "src": "3006:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3006:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3005:19:11" + }, + "scope": 5625, + "src": "2772:253:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fb321c70", + "id": 5463, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForAVAX", + "nameLocation": "3040:22:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5445, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "3080:8:11", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "3072:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5444, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3072:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5447, + "mutability": "mutable", + "name": "amountOutMinAVAX", + "nameLocation": "3106:16:11", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "3098:24:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3098:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5450, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "3149:12:11", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "3132:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5448, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3132:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5449, + "nodeType": "ArrayTypeName", + "src": "3132:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5454, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "3187:9:11", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "3171:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5452, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5451, + "name": "IERC20", + "nameLocations": [ + "3171:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3171:6:11" + }, + "referencedDeclaration": 479, + "src": "3171:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5453, + "nodeType": "ArrayTypeName", + "src": "3171:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5456, + "mutability": "mutable", + "name": "to", + "nameLocation": "3222:2:11", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "3206:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5455, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3206:15:11", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5458, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "3242:8:11", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "3234:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3234:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3062:194:11" + }, + "returnParameters": { + "id": 5462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5461, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3283:9:11", + "nodeType": "VariableDeclaration", + "scope": 5463, + "src": "3275:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3275:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3274:19:11" + }, + "scope": 5625, + "src": "3031:263:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "264bb94e", + "id": 5481, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactAVAXForTokens", + "nameLocation": "3309:22:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5465, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "3349:12:11", + "nodeType": "VariableDeclaration", + "scope": 5481, + "src": "3341:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3341:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5468, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "3388:12:11", + "nodeType": "VariableDeclaration", + "scope": 5481, + "src": "3371:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5466, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3371:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5467, + "nodeType": "ArrayTypeName", + "src": "3371:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5472, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "3426:9:11", + "nodeType": "VariableDeclaration", + "scope": 5481, + "src": "3410:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5470, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5469, + "name": "IERC20", + "nameLocations": [ + "3410:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3410:6:11" + }, + "referencedDeclaration": 479, + "src": "3410:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5471, + "nodeType": "ArrayTypeName", + "src": "3410:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5474, + "mutability": "mutable", + "name": "to", + "nameLocation": "3453:2:11", + "nodeType": "VariableDeclaration", + "scope": 5481, + "src": "3445:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3445:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5476, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "3473:8:11", + "nodeType": "VariableDeclaration", + "scope": 5481, + "src": "3465:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3465:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3331:156:11" + }, + "returnParameters": { + "id": 5480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5479, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3522:9:11", + "nodeType": "VariableDeclaration", + "scope": 5481, + "src": "3514:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5478, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3514:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3513:19:11" + }, + "scope": 5625, + "src": "3300:233:11", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a7b856d3", + "id": 5502, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactTokens", + "nameLocation": "3548:24:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5483, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3590:9:11", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "3582:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3582:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5485, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "3617:11:11", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "3609:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3609:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5488, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "3655:12:11", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "3638:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5486, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3638:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5487, + "nodeType": "ArrayTypeName", + "src": "3638:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5492, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "3693:9:11", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "3677:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5490, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5489, + "name": "IERC20", + "nameLocations": [ + "3677:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3677:6:11" + }, + "referencedDeclaration": 479, + "src": "3677:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5491, + "nodeType": "ArrayTypeName", + "src": "3677:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5494, + "mutability": "mutable", + "name": "to", + "nameLocation": "3720:2:11", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "3712:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3712:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5496, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "3740:8:11", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "3732:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3732:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3572:182:11" + }, + "returnParameters": { + "id": 5501, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5500, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "3790:9:11", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "3773:26:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3773:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5499, + "nodeType": "ArrayTypeName", + "src": "3773:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "3772:28:11" + }, + "scope": 5625, + "src": "3539:262:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6d3420ed", + "id": 5523, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactAVAX", + "nameLocation": "3816:22:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5504, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "3856:9:11", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "3848:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3848:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5506, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "3883:11:11", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "3875:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3875:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5509, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "3921:12:11", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "3904:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3904:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5508, + "nodeType": "ArrayTypeName", + "src": "3904:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5513, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "3959:9:11", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "3943:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5511, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5510, + "name": "IERC20", + "nameLocations": [ + "3943:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3943:6:11" + }, + "referencedDeclaration": 479, + "src": "3943:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5512, + "nodeType": "ArrayTypeName", + "src": "3943:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5515, + "mutability": "mutable", + "name": "to", + "nameLocation": "3994:2:11", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "3978:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3978:15:11", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5517, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "4014:8:11", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "4006:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4006:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3838:190:11" + }, + "returnParameters": { + "id": 5522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5521, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "4064:9:11", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "4047:26:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5519, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4047:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5520, + "nodeType": "ArrayTypeName", + "src": "4047:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4046:28:11" + }, + "scope": 5625, + "src": "3807:268:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "42f564a0", + "id": 5542, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapAVAXForExactTokens", + "nameLocation": "4090:22:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5525, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4130:9:11", + "nodeType": "VariableDeclaration", + "scope": 5542, + "src": "4122:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4122:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5528, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "4166:12:11", + "nodeType": "VariableDeclaration", + "scope": 5542, + "src": "4149:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4149:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5527, + "nodeType": "ArrayTypeName", + "src": "4149:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5532, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "4204:9:11", + "nodeType": "VariableDeclaration", + "scope": 5542, + "src": "4188:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5530, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5529, + "name": "IERC20", + "nameLocations": [ + "4188:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4188:6:11" + }, + "referencedDeclaration": 479, + "src": "4188:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5531, + "nodeType": "ArrayTypeName", + "src": "4188:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5534, + "mutability": "mutable", + "name": "to", + "nameLocation": "4231:2:11", + "nodeType": "VariableDeclaration", + "scope": 5542, + "src": "4223:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4223:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5536, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "4251:8:11", + "nodeType": "VariableDeclaration", + "scope": 5542, + "src": "4243:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4243:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4112:153:11" + }, + "returnParameters": { + "id": 5541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5540, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "4309:9:11", + "nodeType": "VariableDeclaration", + "scope": 5542, + "src": "4292:26:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4292:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5539, + "nodeType": "ArrayTypeName", + "src": "4292:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4291:28:11" + }, + "scope": 5625, + "src": "4081:239:11", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "212a1d94", + "id": 5562, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nameLocation": "4335:53:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5544, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4406:8:11", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "4398:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4398:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5546, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "4432:12:11", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "4424:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4424:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5549, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "4471:12:11", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "4454:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4454:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5548, + "nodeType": "ArrayTypeName", + "src": "4454:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5553, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "4509:9:11", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "4493:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5551, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5550, + "name": "IERC20", + "nameLocations": [ + "4493:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4493:6:11" + }, + "referencedDeclaration": 479, + "src": "4493:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5552, + "nodeType": "ArrayTypeName", + "src": "4493:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5555, + "mutability": "mutable", + "name": "to", + "nameLocation": "4536:2:11", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "4528:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4528:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5557, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "4556:8:11", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "4548:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4548:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4388:182:11" + }, + "returnParameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5560, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4597:9:11", + "nodeType": "VariableDeclaration", + "scope": 5562, + "src": "4589:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5559, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4589:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4588:19:11" + }, + "scope": 5625, + "src": "4326:282:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "9a17e820", + "id": 5582, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens", + "nameLocation": "4623:51:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5564, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4692:8:11", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "4684:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4684:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5566, + "mutability": "mutable", + "name": "amountOutMinAVAX", + "nameLocation": "4718:16:11", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "4710:24:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4710:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5569, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "4761:12:11", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "4744:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4744:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5568, + "nodeType": "ArrayTypeName", + "src": "4744:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5573, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "4799:9:11", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "4783:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5571, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5570, + "name": "IERC20", + "nameLocations": [ + "4783:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4783:6:11" + }, + "referencedDeclaration": 479, + "src": "4783:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5572, + "nodeType": "ArrayTypeName", + "src": "4783:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5575, + "mutability": "mutable", + "name": "to", + "nameLocation": "4834:2:11", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "4818:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4818:15:11", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5577, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "4854:8:11", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "4846:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4846:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4674:194:11" + }, + "returnParameters": { + "id": 5581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5580, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4895:9:11", + "nodeType": "VariableDeclaration", + "scope": 5582, + "src": "4887:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5579, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4887:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4886:19:11" + }, + "scope": 5625, + "src": "4614:292:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "440830bd", + "id": 5600, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens", + "nameLocation": "4921:51:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5584, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "4990:12:11", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "4982:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4982:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5587, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "5029:12:11", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "5012:29:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5012:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5586, + "nodeType": "ArrayTypeName", + "src": "5012:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5591, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "5067:9:11", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "5051:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_memory_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 5589, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5588, + "name": "IERC20", + "nameLocations": [ + "5051:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5051:6:11" + }, + "referencedDeclaration": 479, + "src": "5051:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 5590, + "nodeType": "ArrayTypeName", + "src": "5051:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5593, + "mutability": "mutable", + "name": "to", + "nameLocation": "5094:2:11", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "5086:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5086:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5595, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "5114:8:11", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "5106:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5106:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4972:156:11" + }, + "returnParameters": { + "id": 5599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5598, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "5163:9:11", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "5155:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5155:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5154:19:11" + }, + "scope": 5625, + "src": "4912:262:11", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "62c06767", + "id": 5610, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sweep", + "nameLocation": "5189:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5603, + "mutability": "mutable", + "name": "token", + "nameLocation": "5202:5:11", + "nodeType": "VariableDeclaration", + "scope": 5610, + "src": "5195:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5602, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5601, + "name": "IERC20", + "nameLocations": [ + "5195:6:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5195:6:11" + }, + "referencedDeclaration": 479, + "src": "5195:6:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5605, + "mutability": "mutable", + "name": "to", + "nameLocation": "5217:2:11", + "nodeType": "VariableDeclaration", + "scope": 5610, + "src": "5209:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5604, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5209:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5607, + "mutability": "mutable", + "name": "amount", + "nameLocation": "5229:6:11", + "nodeType": "VariableDeclaration", + "scope": 5610, + "src": "5221:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5221:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5194:42:11" + }, + "returnParameters": { + "id": 5609, + "nodeType": "ParameterList", + "parameters": [], + "src": "5245:0:11" + }, + "scope": 5625, + "src": "5180:66:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e9361c08", + "id": 5624, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sweepLBToken", + "nameLocation": "5261:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5613, + "mutability": "mutable", + "name": "_lbToken", + "nameLocation": "5283:8:11", + "nodeType": "VariableDeclaration", + "scope": 5624, + "src": "5274:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBToken_$6842", + "typeString": "contract ILBToken" + }, + "typeName": { + "id": 5612, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5611, + "name": "ILBToken", + "nameLocations": [ + "5274:8:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6842, + "src": "5274:8:11" + }, + "referencedDeclaration": 6842, + "src": "5274:8:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBToken_$6842", + "typeString": "contract ILBToken" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5615, + "mutability": "mutable", + "name": "_to", + "nameLocation": "5301:3:11", + "nodeType": "VariableDeclaration", + "scope": 5624, + "src": "5293:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5293:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5618, + "mutability": "mutable", + "name": "_ids", + "nameLocation": "5325:4:11", + "nodeType": "VariableDeclaration", + "scope": 5624, + "src": "5306:23:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5616, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5306:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5617, + "nodeType": "ArrayTypeName", + "src": "5306:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5621, + "mutability": "mutable", + "name": "_amounts", + "nameLocation": "5350:8:11", + "nodeType": "VariableDeclaration", + "scope": 5624, + "src": "5331:27:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5619, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5331:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5620, + "nodeType": "ArrayTypeName", + "src": "5331:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5273:86:11" + }, + "returnParameters": { + "id": 5623, + "nodeType": "ParameterList", + "parameters": [], + "src": "5376:0:11" + }, + "scope": 5625, + "src": "5252:125:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5626, + "src": "466:4913:11", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:5347:11" + }, + "id": 11 + }, + "src/interfaces/ILBLegacyToken.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBLegacyToken.sol", + "exportedSymbols": { + "IERC165": [ + 521 + ], + "ILBLegacyToken": [ + 5744 + ] + }, + "id": 5745, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5627, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:12" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 5628, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5745, + "sourceUnit": 522, + "src": "59:65:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 5630, + "name": "IERC165", + "nameLocations": [ + "250:7:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 521, + "src": "250:7:12" + }, + "id": 5631, + "nodeType": "InheritanceSpecifier", + "src": "250:7:12" + } + ], + "canonicalName": "ILBLegacyToken", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5629, + "nodeType": "StructuredDocumentation", + "src": "126:96:12", + "text": "@title Liquidity Book V2 Token Interface\n @notice Required interface of LBToken contract" + }, + "fullyImplemented": false, + "id": 5744, + "linearizedBaseContracts": [ + 5744, + 521 + ], + "name": "ILBLegacyToken", + "nameLocation": "232:14:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62", + "id": 5643, + "name": "TransferSingle", + "nameLocation": "270:14:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 5642, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5633, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "301:6:12", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "285:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "285:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5635, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "325:4:12", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "309:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "309:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5637, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "347:2:12", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "331:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "331:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5639, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nameLocation": "359:2:12", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "351:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5638, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "351:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5641, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "371:6:12", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "363:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5640, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "363:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "284:94:12" + }, + "src": "264:115:12" + }, + { + "anonymous": false, + "eventSelector": "4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb", + "id": 5657, + "name": "TransferBatch", + "nameLocation": "391:13:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 5656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5645, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "430:6:12", + "nodeType": "VariableDeclaration", + "scope": 5657, + "src": "414:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "414:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5647, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "454:4:12", + "nodeType": "VariableDeclaration", + "scope": 5657, + "src": "438:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5646, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "438:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5649, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "476:2:12", + "nodeType": "VariableDeclaration", + "scope": 5657, + "src": "460:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "460:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5652, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nameLocation": "490:3:12", + "nodeType": "VariableDeclaration", + "scope": 5657, + "src": "480:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "480:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5651, + "nodeType": "ArrayTypeName", + "src": "480:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5655, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "505:7:12", + "nodeType": "VariableDeclaration", + "scope": 5657, + "src": "495:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "495:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5654, + "nodeType": "ArrayTypeName", + "src": "495:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "404:114:12" + }, + "src": "385:134:12" + }, + { + "anonymous": false, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "id": 5665, + "name": "ApprovalForAll", + "nameLocation": "531:14:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 5664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5659, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "562:7:12", + "nodeType": "VariableDeclaration", + "scope": 5665, + "src": "546:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5661, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "587:6:12", + "nodeType": "VariableDeclaration", + "scope": 5665, + "src": "571:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "571:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5663, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "600:8:12", + "nodeType": "VariableDeclaration", + "scope": 5665, + "src": "595:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5662, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "595:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "545:64:12" + }, + "src": "525:85:12" + }, + { + "functionSelector": "06fdde03", + "id": 5670, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "625:4:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5666, + "nodeType": "ParameterList", + "parameters": [], + "src": "629:2:12" + }, + "returnParameters": { + "id": 5669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5668, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5670, + "src": "655:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5667, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "655:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "654:15:12" + }, + "scope": 5744, + "src": "616:54:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 5675, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "685:6:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5671, + "nodeType": "ParameterList", + "parameters": [], + "src": "691:2:12" + }, + "returnParameters": { + "id": 5674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5673, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5675, + "src": "717:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5672, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "717:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "716:15:12" + }, + "scope": 5744, + "src": "676:56:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "00fdd58e", + "id": 5684, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "747:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5677, + "mutability": "mutable", + "name": "account", + "nameLocation": "765:7:12", + "nodeType": "VariableDeclaration", + "scope": 5684, + "src": "757:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5679, + "mutability": "mutable", + "name": "id", + "nameLocation": "782:2:12", + "nodeType": "VariableDeclaration", + "scope": 5684, + "src": "774:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5678, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "774:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "756:29:12" + }, + "returnParameters": { + "id": 5683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5682, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5684, + "src": "809:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "809:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "808:9:12" + }, + "scope": 5744, + "src": "738:80:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e1273f4", + "id": 5696, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOfBatch", + "nameLocation": "833:14:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5687, + "mutability": "mutable", + "name": "accounts", + "nameLocation": "867:8:12", + "nodeType": "VariableDeclaration", + "scope": 5696, + "src": "848:27:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 5685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "848:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5686, + "nodeType": "ArrayTypeName", + "src": "848:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5690, + "mutability": "mutable", + "name": "ids", + "nameLocation": "896:3:12", + "nodeType": "VariableDeclaration", + "scope": 5696, + "src": "877:22:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "877:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5689, + "nodeType": "ArrayTypeName", + "src": "877:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "847:53:12" + }, + "returnParameters": { + "id": 5695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5694, + "mutability": "mutable", + "name": "batchBalances", + "nameLocation": "965:13:12", + "nodeType": "VariableDeclaration", + "scope": 5696, + "src": "948:30:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5692, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "948:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5693, + "nodeType": "ArrayTypeName", + "src": "948:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "947:32:12" + }, + "scope": 5744, + "src": "824:156:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bd85b039", + "id": 5703, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "995:11:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5698, + "mutability": "mutable", + "name": "id", + "nameLocation": "1015:2:12", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "1007:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1007:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1006:12:12" + }, + "returnParameters": { + "id": 5702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5701, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "1042:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1042:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1041:9:12" + }, + "scope": 5744, + "src": "986:65:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e985e9c5", + "id": 5712, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "1066:16:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5705, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1091:5:12", + "nodeType": "VariableDeclaration", + "scope": 5712, + "src": "1083:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1083:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5707, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1106:7:12", + "nodeType": "VariableDeclaration", + "scope": 5712, + "src": "1098:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5706, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1098:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1082:32:12" + }, + "returnParameters": { + "id": 5711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5710, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5712, + "src": "1138:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5709, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1138:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1137:6:12" + }, + "scope": 5744, + "src": "1057:87:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a22cb465", + "id": 5719, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "1159:17:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5714, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1185:6:12", + "nodeType": "VariableDeclaration", + "scope": 5719, + "src": "1177:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1177:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5716, + "mutability": "mutable", + "name": "approved", + "nameLocation": "1198:8:12", + "nodeType": "VariableDeclaration", + "scope": 5719, + "src": "1193:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5715, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1193:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1176:31:12" + }, + "returnParameters": { + "id": 5718, + "nodeType": "ParameterList", + "parameters": [], + "src": "1216:0:12" + }, + "scope": 5744, + "src": "1150:67:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0febdd49", + "id": 5730, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1232:16:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5721, + "mutability": "mutable", + "name": "from", + "nameLocation": "1257:4:12", + "nodeType": "VariableDeclaration", + "scope": 5730, + "src": "1249:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1249:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5723, + "mutability": "mutable", + "name": "to", + "nameLocation": "1271:2:12", + "nodeType": "VariableDeclaration", + "scope": 5730, + "src": "1263:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1263:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5725, + "mutability": "mutable", + "name": "id", + "nameLocation": "1283:2:12", + "nodeType": "VariableDeclaration", + "scope": 5730, + "src": "1275:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1275:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5727, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1295:6:12", + "nodeType": "VariableDeclaration", + "scope": 5730, + "src": "1287:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1287:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1248:54:12" + }, + "returnParameters": { + "id": 5729, + "nodeType": "ParameterList", + "parameters": [], + "src": "1311:0:12" + }, + "scope": 5744, + "src": "1223:89:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fba0ee64", + "id": 5743, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeBatchTransferFrom", + "nameLocation": "1327:21:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5732, + "mutability": "mutable", + "name": "from", + "nameLocation": "1357:4:12", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "1349:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5731, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1349:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5734, + "mutability": "mutable", + "name": "to", + "nameLocation": "1371:2:12", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "1363:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1363:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5737, + "mutability": "mutable", + "name": "id", + "nameLocation": "1394:2:12", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "1375:21:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5735, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1375:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5736, + "nodeType": "ArrayTypeName", + "src": "1375:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5740, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1417:6:12", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "1398:25:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1398:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5739, + "nodeType": "ArrayTypeName", + "src": "1398:9:12", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1348:76:12" + }, + "returnParameters": { + "id": 5742, + "nodeType": "ParameterList", + "parameters": [], + "src": "1441:0:12" + }, + "scope": 5744, + "src": "1318:124:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5745, + "src": "222:1222:12", + "usedErrors": [], + "usedEvents": [ + 5643, + 5657, + 5665 + ] + } + ], + "src": "33:1412:12" + }, + "id": 12 + }, + "src/interfaces/ILBPair.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBPair.sol", + "exportedSymbols": { + "Hooks": [ + 9239 + ], + "IERC20": [ + 479 + ], + "ILBFactory": [ + 4236 + ], + "ILBFlashLoanCallback": [ + 4261 + ], + "ILBPair": [ + 6187 + ], + "ILBToken": [ + 6842 + ] + }, + "id": 6188, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5746, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:13" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 5748, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6188, + "sourceUnit": 480, + "src": "59:70:13", + "symbolAliases": [ + { + "foreign": { + "id": 5747, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Hooks.sol", + "file": "../libraries/Hooks.sol", + "id": 5750, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6188, + "sourceUnit": 9240, + "src": "131:45:13", + "symbolAliases": [ + { + "foreign": { + "id": 5749, + "name": "Hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9239, + "src": "139:5:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFactory.sol", + "file": "./ILBFactory.sol", + "id": 5752, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6188, + "sourceUnit": 4237, + "src": "177:44:13", + "symbolAliases": [ + { + "foreign": { + "id": 5751, + "name": "ILBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4236, + "src": "185:10:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFlashLoanCallback.sol", + "file": "./ILBFlashLoanCallback.sol", + "id": 5754, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6188, + "sourceUnit": 4262, + "src": "222:64:13", + "symbolAliases": [ + { + "foreign": { + "id": 5753, + "name": "ILBFlashLoanCallback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4261, + "src": "230:20:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBToken.sol", + "file": "./ILBToken.sol", + "id": 5756, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6188, + "sourceUnit": 6843, + "src": "287:40:13", + "symbolAliases": [ + { + "foreign": { + "id": 5755, + "name": "ILBToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6842, + "src": "295:8:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 5757, + "name": "ILBToken", + "nameLocations": [ + "350:8:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6842, + "src": "350:8:13" + }, + "id": 5758, + "nodeType": "InheritanceSpecifier", + "src": "350:8:13" + } + ], + "canonicalName": "ILBPair", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 6187, + "linearizedBaseContracts": [ + 6187, + 6842 + ], + "name": "ILBPair", + "nameLocation": "339:7:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "e4f56042", + "id": 5760, + "name": "LBPair__ZeroBorrowAmount", + "nameLocation": "371:24:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5759, + "nodeType": "ParameterList", + "parameters": [], + "src": "395:2:13" + }, + "src": "365:33:13" + }, + { + "errorSelector": "17be04b7", + "id": 5762, + "name": "LBPair__AddressZero", + "nameLocation": "409:19:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5761, + "nodeType": "ParameterList", + "parameters": [], + "src": "428:2:13" + }, + "src": "403:28:13" + }, + { + "errorSelector": "296db0d9", + "id": 5764, + "name": "LBPair__EmptyMarketConfigs", + "nameLocation": "442:26:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5763, + "nodeType": "ParameterList", + "parameters": [], + "src": "468:2:13" + }, + "src": "436:35:13" + }, + { + "errorSelector": "4a570113", + "id": 5766, + "name": "LBPair__FlashLoanCallbackFailed", + "nameLocation": "482:31:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5765, + "nodeType": "ParameterList", + "parameters": [], + "src": "513:2:13" + }, + "src": "476:40:13" + }, + { + "errorSelector": "1c78e2e2", + "id": 5768, + "name": "LBPair__FlashLoanInsufficientAmount", + "nameLocation": "527:35:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5767, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:2:13" + }, + "src": "521:44:13" + }, + { + "errorSelector": "7df801c7", + "id": 5770, + "name": "LBPair__InsufficientAmountIn", + "nameLocation": "576:28:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5769, + "nodeType": "ParameterList", + "parameters": [], + "src": "604:2:13" + }, + "src": "570:37:13" + }, + { + "errorSelector": "873bf0ba", + "id": 5772, + "name": "LBPair__InsufficientAmountOut", + "nameLocation": "618:29:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5771, + "nodeType": "ParameterList", + "parameters": [], + "src": "647:2:13" + }, + "src": "612:38:13" + }, + { + "errorSelector": "3ab78707", + "id": 5774, + "name": "LBPair__InvalidInput", + "nameLocation": "661:20:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5773, + "nodeType": "ParameterList", + "parameters": [], + "src": "681:2:13" + }, + "src": "655:29:13" + }, + { + "errorSelector": "626ebc06", + "id": 5776, + "name": "LBPair__InvalidStaticFeeParameters", + "nameLocation": "695:34:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5775, + "nodeType": "ParameterList", + "parameters": [], + "src": "729:2:13" + }, + "src": "689:43:13" + }, + { + "errorSelector": "24860853", + "id": 5778, + "name": "LBPair__OnlyFactory", + "nameLocation": "743:19:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5777, + "nodeType": "ParameterList", + "parameters": [], + "src": "762:2:13" + }, + "src": "737:28:13" + }, + { + "errorSelector": "3e24df14", + "id": 5780, + "name": "LBPair__OnlyProtocolFeeRecipient", + "nameLocation": "776:32:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5779, + "nodeType": "ParameterList", + "parameters": [], + "src": "808:2:13" + }, + "src": "770:41:13" + }, + { + "errorSelector": "d36bfd88", + "id": 5782, + "name": "LBPair__OutOfLiquidity", + "nameLocation": "822:22:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5781, + "nodeType": "ParameterList", + "parameters": [], + "src": "844:2:13" + }, + "src": "816:31:13" + }, + { + "errorSelector": "803fc59a", + "id": 5784, + "name": "LBPair__TokenNotSupported", + "nameLocation": "858:25:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5783, + "nodeType": "ParameterList", + "parameters": [], + "src": "883:2:13" + }, + "src": "852:34:13" + }, + { + "errorSelector": "6996a925", + "id": 5788, + "name": "LBPair__ZeroAmount", + "nameLocation": "897:18:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5786, + "mutability": "mutable", + "name": "id", + "nameLocation": "923:2:13", + "nodeType": "VariableDeclaration", + "scope": 5788, + "src": "916:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5785, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "916:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "915:11:13" + }, + "src": "891:36:13" + }, + { + "errorSelector": "fd447929", + "id": 5792, + "name": "LBPair__ZeroAmountsOut", + "nameLocation": "938:22:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5790, + "mutability": "mutable", + "name": "id", + "nameLocation": "968:2:13", + "nodeType": "VariableDeclaration", + "scope": 5792, + "src": "961:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5789, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "961:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "960:11:13" + }, + "src": "932:40:13" + }, + { + "errorSelector": "9931a6ae", + "id": 5796, + "name": "LBPair__ZeroShares", + "nameLocation": "983:18:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5795, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5794, + "mutability": "mutable", + "name": "id", + "nameLocation": "1009:2:13", + "nodeType": "VariableDeclaration", + "scope": 5796, + "src": "1002:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5793, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1002:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1001:11:13" + }, + "src": "977:36:13" + }, + { + "errorSelector": "e5b73816", + "id": 5798, + "name": "LBPair__MaxTotalFeeExceeded", + "nameLocation": "1024:27:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5797, + "nodeType": "ParameterList", + "parameters": [], + "src": "1051:2:13" + }, + "src": "1018:36:13" + }, + { + "errorSelector": "1b5de6eb", + "id": 5800, + "name": "LBPair__InvalidHooks", + "nameLocation": "1065:20:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5799, + "nodeType": "ParameterList", + "parameters": [], + "src": "1085:2:13" + }, + "src": "1059:29:13" + }, + { + "canonicalName": "ILBPair.MintArrays", + "id": 5810, + "members": [ + { + "constant": false, + "id": 5803, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1132:3:13", + "nodeType": "VariableDeclaration", + "scope": 5810, + "src": "1122:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1122:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5802, + "nodeType": "ArrayTypeName", + "src": "1122:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5806, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1155:7:13", + "nodeType": "VariableDeclaration", + "scope": 5810, + "src": "1145:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 5804, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1145:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5805, + "nodeType": "ArrayTypeName", + "src": "1145:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5809, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "1182:15:13", + "nodeType": "VariableDeclaration", + "scope": 5810, + "src": "1172:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5808, + "nodeType": "ArrayTypeName", + "src": "1172:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "name": "MintArrays", + "nameLocation": "1101:10:13", + "nodeType": "StructDefinition", + "scope": 6187, + "src": "1094:110:13", + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a", + "id": 5822, + "name": "DepositedToBins", + "nameLocation": "1216:15:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5812, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1248:6:13", + "nodeType": "VariableDeclaration", + "scope": 5822, + "src": "1232:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1232:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5814, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1272:2:13", + "nodeType": "VariableDeclaration", + "scope": 5822, + "src": "1256:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1256:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5817, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1286:3:13", + "nodeType": "VariableDeclaration", + "scope": 5822, + "src": "1276:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5815, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1276:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5816, + "nodeType": "ArrayTypeName", + "src": "1276:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5820, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1301:7:13", + "nodeType": "VariableDeclaration", + "scope": 5822, + "src": "1291:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 5818, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1291:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5819, + "nodeType": "ArrayTypeName", + "src": "1291:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "1231:78:13" + }, + "src": "1210:100:13" + }, + { + "anonymous": false, + "eventSelector": "a32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb24350", + "id": 5834, + "name": "WithdrawnFromBins", + "nameLocation": "1322:17:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5824, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1356:6:13", + "nodeType": "VariableDeclaration", + "scope": 5834, + "src": "1340:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1340:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5826, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1380:2:13", + "nodeType": "VariableDeclaration", + "scope": 5834, + "src": "1364:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1364:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5829, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1394:3:13", + "nodeType": "VariableDeclaration", + "scope": 5834, + "src": "1384:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1384:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5828, + "nodeType": "ArrayTypeName", + "src": "1384:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5832, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1409:7:13", + "nodeType": "VariableDeclaration", + "scope": 5834, + "src": "1399:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 5830, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1399:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5831, + "nodeType": "ArrayTypeName", + "src": "1399:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "1339:78:13" + }, + "src": "1316:102:13" + }, + { + "anonymous": false, + "eventSelector": "3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff4", + "id": 5844, + "name": "CompositionFees", + "nameLocation": "1430:15:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5836, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1462:6:13", + "nodeType": "VariableDeclaration", + "scope": 5844, + "src": "1446:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1446:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5838, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nameLocation": "1477:2:13", + "nodeType": "VariableDeclaration", + "scope": 5844, + "src": "1470:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5837, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1470:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5840, + "indexed": false, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "1489:9:13", + "nodeType": "VariableDeclaration", + "scope": 5844, + "src": "1481:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5839, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1481:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5842, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "1508:12:13", + "nodeType": "VariableDeclaration", + "scope": 5844, + "src": "1500:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5841, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1500:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1445:76:13" + }, + "src": "1424:98:13" + }, + { + "anonymous": false, + "eventSelector": "3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e32", + "id": 5850, + "name": "CollectedProtocolFees", + "nameLocation": "1534:21:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5846, + "indexed": true, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "1572:12:13", + "nodeType": "VariableDeclaration", + "scope": 5850, + "src": "1556:28:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5845, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5848, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "1594:12:13", + "nodeType": "VariableDeclaration", + "scope": 5850, + "src": "1586:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5847, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1586:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1555:52:13" + }, + "src": "1528:80:13" + }, + { + "anonymous": false, + "eventSelector": "ad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70", + "id": 5868, + "name": "Swap", + "nameLocation": "1620:4:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5852, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1650:6:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1634:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5851, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1634:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5854, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1682:2:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1666:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5853, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1666:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5856, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nameLocation": "1701:2:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1694:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5855, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1694:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5858, + "indexed": false, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "1721:9:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1713:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5857, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1713:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5860, + "indexed": false, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "1748:10:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1740:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5859, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1740:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5862, + "indexed": false, + "mutability": "mutable", + "name": "volatilityAccumulator", + "nameLocation": "1775:21:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1768:28:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5861, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1768:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5864, + "indexed": false, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "1814:9:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1806:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5863, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1806:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5866, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "1841:12:13", + "nodeType": "VariableDeclaration", + "scope": 5868, + "src": "1833:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5865, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1833:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1624:235:13" + }, + "src": "1614:246:13" + }, + { + "anonymous": false, + "eventSelector": "d09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046", + "id": 5886, + "name": "StaticFeeParametersSet", + "nameLocation": "1872:22:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5870, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1920:6:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "1904:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5869, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1904:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5872, + "indexed": false, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "1943:10:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "1936:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5871, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1936:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5874, + "indexed": false, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "1970:12:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "1963:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5873, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1963:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5876, + "indexed": false, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "1999:11:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "1992:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5875, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1992:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5878, + "indexed": false, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "2027:15:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "2020:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5877, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2020:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5880, + "indexed": false, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "2059:18:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "2052:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5879, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2052:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5882, + "indexed": false, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "2094:13:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "2087:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5881, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2087:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5884, + "indexed": false, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "2124:24:13", + "nodeType": "VariableDeclaration", + "scope": 5886, + "src": "2117:31:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5883, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2117:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1894:260:13" + }, + "src": "1866:289:13" + }, + { + "anonymous": false, + "eventSelector": "4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d934", + "id": 5892, + "name": "HooksParametersSet", + "nameLocation": "2167:18:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5891, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5888, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2202:6:13", + "nodeType": "VariableDeclaration", + "scope": 5892, + "src": "2186:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5887, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2186:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5890, + "indexed": false, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "2218:15:13", + "nodeType": "VariableDeclaration", + "scope": 5892, + "src": "2210:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5889, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2210:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2185:49:13" + }, + "src": "2161:74:13" + }, + { + "anonymous": false, + "eventSelector": "d126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d", + "id": 5907, + "name": "FlashLoan", + "nameLocation": "2247:9:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5894, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2282:6:13", + "nodeType": "VariableDeclaration", + "scope": 5907, + "src": "2266:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2266:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5897, + "indexed": true, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "2327:8:13", + "nodeType": "VariableDeclaration", + "scope": 5907, + "src": "2298:37:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$4261", + "typeString": "contract ILBFlashLoanCallback" + }, + "typeName": { + "id": 5896, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5895, + "name": "ILBFlashLoanCallback", + "nameLocations": [ + "2298:20:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4261, + "src": "2298:20:13" + }, + "referencedDeclaration": 4261, + "src": "2298:20:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$4261", + "typeString": "contract ILBFlashLoanCallback" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5899, + "indexed": false, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "2352:8:13", + "nodeType": "VariableDeclaration", + "scope": 5907, + "src": "2345:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5898, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2345:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5901, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2378:7:13", + "nodeType": "VariableDeclaration", + "scope": 5907, + "src": "2370:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5900, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2370:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5903, + "indexed": false, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "2403:9:13", + "nodeType": "VariableDeclaration", + "scope": 5907, + "src": "2395:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2395:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5905, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "2430:12:13", + "nodeType": "VariableDeclaration", + "scope": 5907, + "src": "2422:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5904, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2422:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2256:192:13" + }, + "src": "2241:208:13" + }, + { + "anonymous": false, + "eventSelector": "c975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d6", + "id": 5913, + "name": "OracleLengthIncreased", + "nameLocation": "2461:21:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5909, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2499:6:13", + "nodeType": "VariableDeclaration", + "scope": 5913, + "src": "2483:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2483:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5911, + "indexed": false, + "mutability": "mutable", + "name": "oracleLength", + "nameLocation": "2514:12:13", + "nodeType": "VariableDeclaration", + "scope": 5913, + "src": "2507:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5910, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2507:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2482:45:13" + }, + "src": "2455:73:13" + }, + { + "anonymous": false, + "eventSelector": "282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc", + "id": 5921, + "name": "ForcedDecay", + "nameLocation": "2540:11:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 5920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5915, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2568:6:13", + "nodeType": "VariableDeclaration", + "scope": 5921, + "src": "2552:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5914, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2552:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5917, + "indexed": false, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "2583:11:13", + "nodeType": "VariableDeclaration", + "scope": 5921, + "src": "2576:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5916, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2576:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5919, + "indexed": false, + "mutability": "mutable", + "name": "volatilityReference", + "nameLocation": "2603:19:13", + "nodeType": "VariableDeclaration", + "scope": 5921, + "src": "2596:26:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5918, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2596:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "2551:72:13" + }, + "src": "2534:90:13" + }, + { + "functionSelector": "47973bff", + "id": 5940, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "2639:10:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5923, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "2666:10:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2659:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5922, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2659:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5925, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "2693:12:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2686:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5924, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2686:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5927, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "2722:11:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2715:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5926, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2715:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5929, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "2750:15:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2743:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5928, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2743:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5931, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "2782:18:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2775:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5930, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2775:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5933, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "2817:13:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2810:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5932, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2810:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5935, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "2847:24:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2840:31:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5934, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2840:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5937, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "2888:8:13", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "2881:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5936, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2881:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "2649:253:13" + }, + "returnParameters": { + "id": 5939, + "nodeType": "ParameterList", + "parameters": [], + "src": "2911:0:13" + }, + "scope": 6187, + "src": "2630:282:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "88cc58e4", + "id": 5946, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFactory", + "nameLocation": "2927:10:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5941, + "nodeType": "ParameterList", + "parameters": [], + "src": "2937:2:13" + }, + "returnParameters": { + "id": 5945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5944, + "mutability": "mutable", + "name": "factory", + "nameLocation": "2974:7:13", + "nodeType": "VariableDeclaration", + "scope": 5946, + "src": "2963:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + }, + "typeName": { + "id": 5943, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5942, + "name": "ILBFactory", + "nameLocations": [ + "2963:10:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4236, + "src": "2963:10:13" + }, + "referencedDeclaration": 4236, + "src": "2963:10:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "visibility": "internal" + } + ], + "src": "2962:20:13" + }, + "scope": 6187, + "src": "2918:65:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "05e8746d", + "id": 5952, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getTokenX", + "nameLocation": "2998:9:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5947, + "nodeType": "ParameterList", + "parameters": [], + "src": "3007:2:13" + }, + "returnParameters": { + "id": 5951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5950, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "3040:6:13", + "nodeType": "VariableDeclaration", + "scope": 5952, + "src": "3033:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5949, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5948, + "name": "IERC20", + "nameLocations": [ + "3033:6:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3033:6:13" + }, + "referencedDeclaration": 479, + "src": "3033:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3032:15:13" + }, + "scope": 6187, + "src": "2989:59:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "da10610c", + "id": 5958, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getTokenY", + "nameLocation": "3063:9:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5953, + "nodeType": "ParameterList", + "parameters": [], + "src": "3072:2:13" + }, + "returnParameters": { + "id": 5957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5956, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "3105:6:13", + "nodeType": "VariableDeclaration", + "scope": 5958, + "src": "3098:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5955, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5954, + "name": "IERC20", + "nameLocations": [ + "3098:6:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3098:6:13" + }, + "referencedDeclaration": 479, + "src": "3098:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3097:15:13" + }, + "scope": 6187, + "src": "3054:59:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "17f11ecc", + "id": 5963, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getBinStep", + "nameLocation": "3128:10:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5959, + "nodeType": "ParameterList", + "parameters": [], + "src": "3138:2:13" + }, + "returnParameters": { + "id": 5962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5961, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3171:7:13", + "nodeType": "VariableDeclaration", + "scope": 5963, + "src": "3164:14:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5960, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3164:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3163:16:13" + }, + "scope": 6187, + "src": "3119:61:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0902f1ac", + "id": 5970, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nameLocation": "3195:11:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5964, + "nodeType": "ParameterList", + "parameters": [], + "src": "3206:2:13" + }, + "returnParameters": { + "id": 5969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5966, + "mutability": "mutable", + "name": "reserveX", + "nameLocation": "3240:8:13", + "nodeType": "VariableDeclaration", + "scope": 5970, + "src": "3232:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5965, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3232:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5968, + "mutability": "mutable", + "name": "reserveY", + "nameLocation": "3258:8:13", + "nodeType": "VariableDeclaration", + "scope": 5970, + "src": "3250:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5967, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3250:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3231:36:13" + }, + "scope": 6187, + "src": "3186:82:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "dbe65edc", + "id": 5975, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getActiveId", + "nameLocation": "3283:11:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5971, + "nodeType": "ParameterList", + "parameters": [], + "src": "3294:2:13" + }, + "returnParameters": { + "id": 5974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5973, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "3327:8:13", + "nodeType": "VariableDeclaration", + "scope": 5975, + "src": "3320:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5972, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3320:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3319:17:13" + }, + "scope": 6187, + "src": "3274:63:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0abe9688", + "id": 5984, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getBin", + "nameLocation": "3352:6:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5977, + "mutability": "mutable", + "name": "id", + "nameLocation": "3366:2:13", + "nodeType": "VariableDeclaration", + "scope": 5984, + "src": "3359:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5976, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3359:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3358:11:13" + }, + "returnParameters": { + "id": 5983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5980, + "mutability": "mutable", + "name": "binReserveX", + "nameLocation": "3401:11:13", + "nodeType": "VariableDeclaration", + "scope": 5984, + "src": "3393:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5979, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3393:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5982, + "mutability": "mutable", + "name": "binReserveY", + "nameLocation": "3422:11:13", + "nodeType": "VariableDeclaration", + "scope": 5984, + "src": "3414:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5981, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3414:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3392:42:13" + }, + "scope": 6187, + "src": "3343:92:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a41a01fb", + "id": 5993, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNextNonEmptyBin", + "nameLocation": "3450:18:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5989, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5986, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "3474:8:13", + "nodeType": "VariableDeclaration", + "scope": 5993, + "src": "3469:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5985, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3469:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5988, + "mutability": "mutable", + "name": "id", + "nameLocation": "3491:2:13", + "nodeType": "VariableDeclaration", + "scope": 5993, + "src": "3484:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5987, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3484:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3468:26:13" + }, + "returnParameters": { + "id": 5992, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5991, + "mutability": "mutable", + "name": "nextId", + "nameLocation": "3525:6:13", + "nodeType": "VariableDeclaration", + "scope": 5993, + "src": "3518:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5990, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3518:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3517:15:13" + }, + "scope": 6187, + "src": "3441:92:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d8dfcea0", + "id": 6000, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getProtocolFees", + "nameLocation": "3548:15:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5994, + "nodeType": "ParameterList", + "parameters": [], + "src": "3563:2:13" + }, + "returnParameters": { + "id": 5999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5996, + "mutability": "mutable", + "name": "protocolFeeX", + "nameLocation": "3597:12:13", + "nodeType": "VariableDeclaration", + "scope": 6000, + "src": "3589:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5995, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3589:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5998, + "mutability": "mutable", + "name": "protocolFeeY", + "nameLocation": "3619:12:13", + "nodeType": "VariableDeclaration", + "scope": 6000, + "src": "3611:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5997, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3611:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3588:44:13" + }, + "scope": 6187, + "src": "3539:94:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ca0de30", + "id": 6017, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getStaticFeeParameters", + "nameLocation": "3648:22:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6001, + "nodeType": "ParameterList", + "parameters": [], + "src": "3670:2:13" + }, + "returnParameters": { + "id": 6016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6003, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "3740:10:13", + "nodeType": "VariableDeclaration", + "scope": 6017, + "src": "3733:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6002, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3733:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6005, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "3771:12:13", + "nodeType": "VariableDeclaration", + "scope": 6017, + "src": "3764:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6004, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3764:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6007, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "3804:11:13", + "nodeType": "VariableDeclaration", + "scope": 6017, + "src": "3797:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6006, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3797:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6009, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "3836:15:13", + "nodeType": "VariableDeclaration", + "scope": 6017, + "src": "3829:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6008, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3829:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6011, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "3872:18:13", + "nodeType": "VariableDeclaration", + "scope": 6017, + "src": "3865:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6010, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3865:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6013, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "3911:13:13", + "nodeType": "VariableDeclaration", + "scope": 6017, + "src": "3904:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6012, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3904:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6015, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "3945:24:13", + "nodeType": "VariableDeclaration", + "scope": 6017, + "src": "3938:31:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6014, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3938:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3719:260:13" + }, + "scope": 6187, + "src": "3639:341:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "781a8915", + "id": 6022, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBHooksParameters", + "nameLocation": "3995:20:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6018, + "nodeType": "ParameterList", + "parameters": [], + "src": "4015:2:13" + }, + "returnParameters": { + "id": 6021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6020, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "4049:15:13", + "nodeType": "VariableDeclaration", + "scope": 6022, + "src": "4041:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6019, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4041:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4040:25:13" + }, + "scope": 6187, + "src": "3986:80:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8d7024e5", + "id": 6033, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getVariableFeeParameters", + "nameLocation": "4081:24:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6023, + "nodeType": "ParameterList", + "parameters": [], + "src": "4105:2:13" + }, + "returnParameters": { + "id": 6032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6025, + "mutability": "mutable", + "name": "volatilityAccumulator", + "nameLocation": "4162:21:13", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "4155:28:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6024, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4155:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6027, + "mutability": "mutable", + "name": "volatilityReference", + "nameLocation": "4192:19:13", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "4185:26:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6026, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4185:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6029, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "4220:11:13", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "4213:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6028, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4213:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6031, + "mutability": "mutable", + "name": "timeOfLastUpdate", + "nameLocation": "4240:16:13", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "4233:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 6030, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4233:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "4154:103:13" + }, + "scope": 6187, + "src": "4072:186:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "55182894", + "id": 6046, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracleParameters", + "nameLocation": "4273:19:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6034, + "nodeType": "ParameterList", + "parameters": [], + "src": "4292:2:13" + }, + "returnParameters": { + "id": 6045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6036, + "mutability": "mutable", + "name": "sampleLifetime", + "nameLocation": "4348:14:13", + "nodeType": "VariableDeclaration", + "scope": 6046, + "src": "4342:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6035, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4342:5:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6038, + "mutability": "mutable", + "name": "size", + "nameLocation": "4371:4:13", + "nodeType": "VariableDeclaration", + "scope": 6046, + "src": "4364:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6037, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4364:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6040, + "mutability": "mutable", + "name": "activeSize", + "nameLocation": "4384:10:13", + "nodeType": "VariableDeclaration", + "scope": 6046, + "src": "4377:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6039, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4377:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6042, + "mutability": "mutable", + "name": "lastUpdated", + "nameLocation": "4403:11:13", + "nodeType": "VariableDeclaration", + "scope": 6046, + "src": "4396:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 6041, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4396:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6044, + "mutability": "mutable", + "name": "firstTimestamp", + "nameLocation": "4423:14:13", + "nodeType": "VariableDeclaration", + "scope": 6046, + "src": "4416:21:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 6043, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4416:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "4341:97:13" + }, + "scope": 6187, + "src": "4264:175:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8940a16a", + "id": 6057, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracleSampleAt", + "nameLocation": "4454:17:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6048, + "mutability": "mutable", + "name": "lookupTimestamp", + "nameLocation": "4479:15:13", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "4472:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 6047, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4472:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "4471:24:13" + }, + "returnParameters": { + "id": 6056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6051, + "mutability": "mutable", + "name": "cumulativeId", + "nameLocation": "4550:12:13", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "4543:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 6050, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4543:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6053, + "mutability": "mutable", + "name": "cumulativeVolatility", + "nameLocation": "4571:20:13", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "4564:27:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 6052, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4564:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6055, + "mutability": "mutable", + "name": "cumulativeBinCrossed", + "nameLocation": "4600:20:13", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "4593:27:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 6054, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4593:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "4542:79:13" + }, + "scope": 6187, + "src": "4445:177:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4c7cffbd", + "id": 6064, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPriceFromId", + "nameLocation": "4637:14:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6059, + "mutability": "mutable", + "name": "id", + "nameLocation": "4659:2:13", + "nodeType": "VariableDeclaration", + "scope": 6064, + "src": "4652:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6058, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4652:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4651:11:13" + }, + "returnParameters": { + "id": 6063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6062, + "mutability": "mutable", + "name": "price", + "nameLocation": "4694:5:13", + "nodeType": "VariableDeclaration", + "scope": 6064, + "src": "4686:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4686:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4685:15:13" + }, + "scope": 6187, + "src": "4628:73:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f5e29329", + "id": 6071, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getIdFromPrice", + "nameLocation": "4716:14:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6066, + "mutability": "mutable", + "name": "price", + "nameLocation": "4739:5:13", + "nodeType": "VariableDeclaration", + "scope": 6071, + "src": "4731:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4731:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4730:15:13" + }, + "returnParameters": { + "id": 6070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6069, + "mutability": "mutable", + "name": "id", + "nameLocation": "4776:2:13", + "nodeType": "VariableDeclaration", + "scope": 6071, + "src": "4769:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6068, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4769:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4768:11:13" + }, + "scope": 6187, + "src": "4707:73:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "abcd7830", + "id": 6084, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapIn", + "nameLocation": "4795:9:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6073, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4813:9:13", + "nodeType": "VariableDeclaration", + "scope": 6084, + "src": "4805:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6072, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4805:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6075, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "4829:8:13", + "nodeType": "VariableDeclaration", + "scope": 6084, + "src": "4824:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6074, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4824:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4804:34:13" + }, + "returnParameters": { + "id": 6083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6078, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4894:8:13", + "nodeType": "VariableDeclaration", + "scope": 6084, + "src": "4886:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6077, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4886:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6080, + "mutability": "mutable", + "name": "amountOutLeft", + "nameLocation": "4912:13:13", + "nodeType": "VariableDeclaration", + "scope": 6084, + "src": "4904:21:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6079, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4904:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6082, + "mutability": "mutable", + "name": "fee", + "nameLocation": "4935:3:13", + "nodeType": "VariableDeclaration", + "scope": 6084, + "src": "4927:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6081, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4927:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "4885:54:13" + }, + "scope": 6187, + "src": "4786:154:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e77366f8", + "id": 6097, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapOut", + "nameLocation": "4955:10:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6086, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4974:8:13", + "nodeType": "VariableDeclaration", + "scope": 6097, + "src": "4966:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6085, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4966:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6088, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "4989:8:13", + "nodeType": "VariableDeclaration", + "scope": 6097, + "src": "4984:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6087, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4984:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4965:33:13" + }, + "returnParameters": { + "id": 6096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6091, + "mutability": "mutable", + "name": "amountInLeft", + "nameLocation": "5054:12:13", + "nodeType": "VariableDeclaration", + "scope": 6097, + "src": "5046:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6090, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5046:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6093, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "5076:9:13", + "nodeType": "VariableDeclaration", + "scope": 6097, + "src": "5068:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6092, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5068:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6095, + "mutability": "mutable", + "name": "fee", + "nameLocation": "5095:3:13", + "nodeType": "VariableDeclaration", + "scope": 6097, + "src": "5087:11:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6094, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5087:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "5045:54:13" + }, + "scope": 6187, + "src": "4946:154:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "53c059a0", + "id": 6106, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swap", + "nameLocation": "5115:4:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6099, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "5125:8:13", + "nodeType": "VariableDeclaration", + "scope": 6106, + "src": "5120:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6098, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5120:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6101, + "mutability": "mutable", + "name": "to", + "nameLocation": "5143:2:13", + "nodeType": "VariableDeclaration", + "scope": 6106, + "src": "5135:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5135:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5119:27:13" + }, + "returnParameters": { + "id": 6105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6104, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "5173:10:13", + "nodeType": "VariableDeclaration", + "scope": 6106, + "src": "5165:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6103, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5165:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5164:20:13" + }, + "scope": 6187, + "src": "5106:79:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ea3446bf", + "id": 6116, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "flashLoan", + "nameLocation": "5200:9:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6109, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "5231:8:13", + "nodeType": "VariableDeclaration", + "scope": 6116, + "src": "5210:29:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$4261", + "typeString": "contract ILBFlashLoanCallback" + }, + "typeName": { + "id": 6108, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6107, + "name": "ILBFlashLoanCallback", + "nameLocations": [ + "5210:20:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4261, + "src": "5210:20:13" + }, + "referencedDeclaration": 4261, + "src": "5210:20:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$4261", + "typeString": "contract ILBFlashLoanCallback" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6111, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "5249:7:13", + "nodeType": "VariableDeclaration", + "scope": 6116, + "src": "5241:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6110, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5241:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6113, + "mutability": "mutable", + "name": "data", + "nameLocation": "5273:4:13", + "nodeType": "VariableDeclaration", + "scope": 6116, + "src": "5258:19:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6112, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5258:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5209:69:13" + }, + "returnParameters": { + "id": 6115, + "nodeType": "ParameterList", + "parameters": [], + "src": "5287:0:13" + }, + "scope": 6187, + "src": "5191:97:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "383d15c5", + "id": 6133, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "5303:4:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6118, + "mutability": "mutable", + "name": "to", + "nameLocation": "5316:2:13", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "5308:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5308:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6121, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "5339:16:13", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "5320:35:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 6119, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5320:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6120, + "nodeType": "ArrayTypeName", + "src": "5320:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6123, + "mutability": "mutable", + "name": "refundTo", + "nameLocation": "5365:8:13", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "5357:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5357:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5307:67:13" + }, + "returnParameters": { + "id": 6132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6126, + "mutability": "mutable", + "name": "amountsReceived", + "nameLocation": "5417:15:13", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "5409:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6125, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5409:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6128, + "mutability": "mutable", + "name": "amountsLeft", + "nameLocation": "5442:11:13", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "5434:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6127, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5434:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6131, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "5472:15:13", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "5455:32:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5455:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6130, + "nodeType": "ArrayTypeName", + "src": "5455:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5408:80:13" + }, + "scope": 6187, + "src": "5294:195:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c9939f5e", + "id": 6149, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "5504:4:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6135, + "mutability": "mutable", + "name": "from", + "nameLocation": "5517:4:13", + "nodeType": "VariableDeclaration", + "scope": 6149, + "src": "5509:12:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5509:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6137, + "mutability": "mutable", + "name": "to", + "nameLocation": "5531:2:13", + "nodeType": "VariableDeclaration", + "scope": 6149, + "src": "5523:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5523:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6140, + "mutability": "mutable", + "name": "ids", + "nameLocation": "5554:3:13", + "nodeType": "VariableDeclaration", + "scope": 6149, + "src": "5535:22:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6138, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5535:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6139, + "nodeType": "ArrayTypeName", + "src": "5535:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6143, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "5578:13:13", + "nodeType": "VariableDeclaration", + "scope": 6149, + "src": "5559:32:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6141, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5559:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6142, + "nodeType": "ArrayTypeName", + "src": "5559:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5508:84:13" + }, + "returnParameters": { + "id": 6148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6147, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "5644:7:13", + "nodeType": "VariableDeclaration", + "scope": 6149, + "src": "5627:24:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 6145, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5627:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6146, + "nodeType": "ArrayTypeName", + "src": "5627:9:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "5626:26:13" + }, + "scope": 6187, + "src": "5495:158:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a1af5b9a", + "id": 6154, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "collectProtocolFees", + "nameLocation": "5668:19:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6150, + "nodeType": "ParameterList", + "parameters": [], + "src": "5687:2:13" + }, + "returnParameters": { + "id": 6153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6152, + "mutability": "mutable", + "name": "collectedProtocolFees", + "nameLocation": "5716:21:13", + "nodeType": "VariableDeclaration", + "scope": 6154, + "src": "5708:29:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6151, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5708:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5707:31:13" + }, + "scope": 6187, + "src": "5659:80:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c7bd6586", + "id": 6159, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "increaseOracleLength", + "nameLocation": "5754:20:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6156, + "mutability": "mutable", + "name": "newLength", + "nameLocation": "5782:9:13", + "nodeType": "VariableDeclaration", + "scope": 6159, + "src": "5775:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6155, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5775:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5774:18:13" + }, + "returnParameters": { + "id": 6158, + "nodeType": "ParameterList", + "parameters": [], + "src": "5801:0:13" + }, + "scope": 6187, + "src": "5745:57:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6653851a", + "id": 6176, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setStaticFeeParameters", + "nameLocation": "5817:22:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6161, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "5856:10:13", + "nodeType": "VariableDeclaration", + "scope": 6176, + "src": "5849:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6160, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5849:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6163, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "5883:12:13", + "nodeType": "VariableDeclaration", + "scope": 6176, + "src": "5876:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6162, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5876:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6165, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "5912:11:13", + "nodeType": "VariableDeclaration", + "scope": 6176, + "src": "5905:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6164, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5905:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6167, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "5940:15:13", + "nodeType": "VariableDeclaration", + "scope": 6176, + "src": "5933:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6166, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5933:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6169, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "5972:18:13", + "nodeType": "VariableDeclaration", + "scope": 6176, + "src": "5965:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6168, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5965:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6171, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "6007:13:13", + "nodeType": "VariableDeclaration", + "scope": 6176, + "src": "6000:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6170, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6000:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6173, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "6037:24:13", + "nodeType": "VariableDeclaration", + "scope": 6176, + "src": "6030:31:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6172, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6030:6:13", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5839:228:13" + }, + "returnParameters": { + "id": 6175, + "nodeType": "ParameterList", + "parameters": [], + "src": "6076:0:13" + }, + "scope": 6187, + "src": "5808:269:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1b057f6d", + "id": 6183, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setHooksParameters", + "nameLocation": "6092:18:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6178, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "6119:15:13", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "6111:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6177, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6111:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6180, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "6151:14:13", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "6136:29:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6179, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6136:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6110:56:13" + }, + "returnParameters": { + "id": 6182, + "nodeType": "ParameterList", + "parameters": [], + "src": "6175:0:13" + }, + "scope": 6187, + "src": "6083:93:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d3b9fbe4", + "id": 6186, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "forceDecay", + "nameLocation": "6191:10:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6184, + "nodeType": "ParameterList", + "parameters": [], + "src": "6201:2:13" + }, + "returnParameters": { + "id": 6185, + "nodeType": "ParameterList", + "parameters": [], + "src": "6212:0:13" + }, + "scope": 6187, + "src": "6182:31:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6188, + "src": "329:5886:13", + "usedErrors": [ + 5760, + 5762, + 5764, + 5766, + 5768, + 5770, + 5772, + 5774, + 5776, + 5778, + 5780, + 5782, + 5784, + 5788, + 5792, + 5796, + 5798, + 5800, + 6724, + 6726, + 6730, + 6736, + 6744, + 6752 + ], + "usedEvents": [ + 5822, + 5834, + 5844, + 5850, + 5868, + 5886, + 5892, + 5907, + 5913, + 5921, + 6766, + 6774 + ] + } + ], + "src": "33:6183:13" + }, + "id": 13 + }, + "src/interfaces/ILBRouter.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBRouter.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "ILBFactory": [ + 4236 + ], + "ILBLegacyFactory": [ + 4800 + ], + "ILBLegacyRouter": [ + 5625 + ], + "ILBPair": [ + 6187 + ], + "ILBRouter": [ + 6719 + ], + "ILBToken": [ + 6842 + ], + "ISovrynLBFactoryV1": [ + 6916 + ], + "IWNATIVE": [ + 7175 + ] + }, + "id": 6720, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6189, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:14" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 6191, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 480, + "src": "59:70:14", + "symbolAliases": [ + { + "foreign": { + "id": 6190, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ISovrynLBFactoryV1.sol", + "file": "./ISovrynLBFactoryV1.sol", + "id": 6193, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 6917, + "src": "131:60:14", + "symbolAliases": [ + { + "foreign": { + "id": 6192, + "name": "ISovrynLBFactoryV1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6916, + "src": "139:18:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFactory.sol", + "file": "./ILBFactory.sol", + "id": 6195, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 4237, + "src": "192:44:14", + "symbolAliases": [ + { + "foreign": { + "id": 6194, + "name": "ILBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4236, + "src": "200:10:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyFactory.sol", + "file": "./ILBLegacyFactory.sol", + "id": 6197, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 4801, + "src": "237:56:14", + "symbolAliases": [ + { + "foreign": { + "id": 6196, + "name": "ILBLegacyFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4800, + "src": "245:16:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBLegacyRouter.sol", + "file": "./ILBLegacyRouter.sol", + "id": 6199, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 5626, + "src": "294:54:14", + "symbolAliases": [ + { + "foreign": { + "id": 6198, + "name": "ILBLegacyRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "302:15:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBPair.sol", + "file": "./ILBPair.sol", + "id": 6201, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 6188, + "src": "349:38:14", + "symbolAliases": [ + { + "foreign": { + "id": 6200, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6187, + "src": "357:7:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBToken.sol", + "file": "./ILBToken.sol", + "id": 6203, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 6843, + "src": "388:40:14", + "symbolAliases": [ + { + "foreign": { + "id": 6202, + "name": "ILBToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6842, + "src": "396:8:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/IWNATIVE.sol", + "file": "./IWNATIVE.sol", + "id": 6205, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6720, + "sourceUnit": 7176, + "src": "429:40:14", + "symbolAliases": [ + { + "foreign": { + "id": 6204, + "name": "IWNATIVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "437:8:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBRouter", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 6206, + "nodeType": "StructuredDocumentation", + "src": "471:100:14", + "text": " @title Liquidity Book Router Interface\n @notice Required interface of LBRouter contract" + }, + "fullyImplemented": false, + "id": 6719, + "linearizedBaseContracts": [ + 6719 + ], + "name": "ILBRouter", + "nameLocation": "582:9:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "6c8cb793", + "id": 6208, + "name": "LBRouter__SenderIsNotWNATIVE", + "nameLocation": "604:28:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6207, + "nodeType": "ParameterList", + "parameters": [], + "src": "632:2:14" + }, + "src": "598:37:14" + }, + { + "errorSelector": "d648e3a2", + "id": 6216, + "name": "LBRouter__PairNotCreated", + "nameLocation": "646:24:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6210, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "679:6:14", + "nodeType": "VariableDeclaration", + "scope": 6216, + "src": "671:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "671:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6212, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "695:6:14", + "nodeType": "VariableDeclaration", + "scope": 6216, + "src": "687:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6214, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "711:7:14", + "nodeType": "VariableDeclaration", + "scope": 6216, + "src": "703:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "703:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "670:49:14" + }, + "src": "640:80:14" + }, + { + "errorSelector": "7c40a4df", + "id": 6222, + "name": "LBRouter__WrongAmounts", + "nameLocation": "731:22:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6218, + "mutability": "mutable", + "name": "amount", + "nameLocation": "762:6:14", + "nodeType": "VariableDeclaration", + "scope": 6222, + "src": "754:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6217, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "754:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6220, + "mutability": "mutable", + "name": "reserve", + "nameLocation": "778:7:14", + "nodeType": "VariableDeclaration", + "scope": 6222, + "src": "770:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6219, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "770:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "753:33:14" + }, + "src": "725:62:14" + }, + { + "errorSelector": "ec44eb89", + "id": 6226, + "name": "LBRouter__SwapOverflows", + "nameLocation": "798:23:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6224, + "mutability": "mutable", + "name": "id", + "nameLocation": "830:2:14", + "nodeType": "VariableDeclaration", + "scope": 6226, + "src": "822:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "822:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "821:12:14" + }, + "src": "792:42:14" + }, + { + "errorSelector": "c2c4cd5c", + "id": 6228, + "name": "LBRouter__BrokenSwapSafetyCheck", + "nameLocation": "845:31:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6227, + "nodeType": "ParameterList", + "parameters": [], + "src": "876:2:14" + }, + "src": "839:40:14" + }, + { + "errorSelector": "bb2a2b72", + "id": 6230, + "name": "LBRouter__NotFactoryOwner", + "nameLocation": "890:25:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6229, + "nodeType": "ParameterList", + "parameters": [], + "src": "915:2:14" + }, + "src": "884:34:14" + }, + { + "errorSelector": "939b4b9a", + "id": 6234, + "name": "LBRouter__TooMuchTokensIn", + "nameLocation": "929:25:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6232, + "mutability": "mutable", + "name": "excess", + "nameLocation": "963:6:14", + "nodeType": "VariableDeclaration", + "scope": 6234, + "src": "955:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6231, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "955:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "954:16:14" + }, + "src": "923:48:14" + }, + { + "errorSelector": "7b35e9c2", + "id": 6238, + "name": "LBRouter__BinReserveOverflows", + "nameLocation": "982:29:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6236, + "mutability": "mutable", + "name": "id", + "nameLocation": "1020:2:14", + "nodeType": "VariableDeclaration", + "scope": 6238, + "src": "1012:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1012:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1011:12:14" + }, + "src": "976:48:14" + }, + { + "errorSelector": "e1505cc2", + "id": 6242, + "name": "LBRouter__IdOverflows", + "nameLocation": "1035:21:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6240, + "mutability": "mutable", + "name": "id", + "nameLocation": "1064:2:14", + "nodeType": "VariableDeclaration", + "scope": 6242, + "src": "1057:9:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 6239, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1057:6:14", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1056:11:14" + }, + "src": "1029:39:14" + }, + { + "errorSelector": "b91b4d4d", + "id": 6244, + "name": "LBRouter__LengthsMismatch", + "nameLocation": "1079:25:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6243, + "nodeType": "ParameterList", + "parameters": [], + "src": "1104:2:14" + }, + "src": "1073:34:14" + }, + { + "errorSelector": "b33f8ab9", + "id": 6246, + "name": "LBRouter__WrongTokenOrder", + "nameLocation": "1118:25:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6245, + "nodeType": "ParameterList", + "parameters": [], + "src": "1143:2:14" + }, + "src": "1112:34:14" + }, + { + "errorSelector": "faa1db56", + "id": 6254, + "name": "LBRouter__IdSlippageCaught", + "nameLocation": "1157:26:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6248, + "mutability": "mutable", + "name": "activeIdDesired", + "nameLocation": "1192:15:14", + "nodeType": "VariableDeclaration", + "scope": 6254, + "src": "1184:23:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1184:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6250, + "mutability": "mutable", + "name": "idSlippage", + "nameLocation": "1217:10:14", + "nodeType": "VariableDeclaration", + "scope": 6254, + "src": "1209:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6249, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1209:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6252, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "1237:8:14", + "nodeType": "VariableDeclaration", + "scope": 6254, + "src": "1229:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1229:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1183:63:14" + }, + "src": "1151:96:14" + }, + { + "errorSelector": "3199f6ee", + "id": 6264, + "name": "LBRouter__AmountSlippageCaught", + "nameLocation": "1258:30:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6256, + "mutability": "mutable", + "name": "amountXMin", + "nameLocation": "1297:10:14", + "nodeType": "VariableDeclaration", + "scope": 6264, + "src": "1289:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1289:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6258, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "1317:7:14", + "nodeType": "VariableDeclaration", + "scope": 6264, + "src": "1309:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1309:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6260, + "mutability": "mutable", + "name": "amountYMin", + "nameLocation": "1334:10:14", + "nodeType": "VariableDeclaration", + "scope": 6264, + "src": "1326:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1326:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6262, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "1354:7:14", + "nodeType": "VariableDeclaration", + "scope": 6264, + "src": "1346:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1346:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1288:74:14" + }, + "src": "1252:111:14" + }, + { + "errorSelector": "32f4ab8e", + "id": 6270, + "name": "LBRouter__IdDesiredOverflows", + "nameLocation": "1374:28:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6266, + "mutability": "mutable", + "name": "idDesired", + "nameLocation": "1411:9:14", + "nodeType": "VariableDeclaration", + "scope": 6270, + "src": "1403:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6265, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1403:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6268, + "mutability": "mutable", + "name": "idSlippage", + "nameLocation": "1430:10:14", + "nodeType": "VariableDeclaration", + "scope": 6270, + "src": "1422:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6267, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1422:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1402:39:14" + }, + "src": "1368:74:14" + }, + { + "errorSelector": "47b96f70", + "id": 6276, + "name": "LBRouter__FailedToSendNATIVE", + "nameLocation": "1453:28:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6275, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6272, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1490:9:14", + "nodeType": "VariableDeclaration", + "scope": 6276, + "src": "1482:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1482:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6274, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1509:6:14", + "nodeType": "VariableDeclaration", + "scope": 6276, + "src": "1501:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6273, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1501:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1481:35:14" + }, + "src": "1447:70:14" + }, + { + "errorSelector": "dae7ca7d", + "id": 6282, + "name": "LBRouter__DeadlineExceeded", + "nameLocation": "1528:26:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6278, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1563:8:14", + "nodeType": "VariableDeclaration", + "scope": 6282, + "src": "1555:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6277, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1555:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6280, + "mutability": "mutable", + "name": "currentTimestamp", + "nameLocation": "1581:16:14", + "nodeType": "VariableDeclaration", + "scope": 6282, + "src": "1573:24:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1573:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1554:44:14" + }, + "src": "1522:77:14" + }, + { + "errorSelector": "194b603b", + "id": 6286, + "name": "LBRouter__AmountSlippageBPTooBig", + "nameLocation": "1610:32:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6284, + "mutability": "mutable", + "name": "amountSlippage", + "nameLocation": "1651:14:14", + "nodeType": "VariableDeclaration", + "scope": 6286, + "src": "1643:22:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1643:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1642:24:14" + }, + "src": "1604:63:14" + }, + { + "errorSelector": "4feac00c", + "id": 6292, + "name": "LBRouter__InsufficientAmountOut", + "nameLocation": "1678:31:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6288, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "1718:12:14", + "nodeType": "VariableDeclaration", + "scope": 6292, + "src": "1710:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1710:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6290, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "1740:9:14", + "nodeType": "VariableDeclaration", + "scope": 6292, + "src": "1732:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1732:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1709:41:14" + }, + "src": "1672:79:14" + }, + { + "errorSelector": "ca7710c8", + "id": 6298, + "name": "LBRouter__MaxAmountInExceeded", + "nameLocation": "1762:29:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6294, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "1800:11:14", + "nodeType": "VariableDeclaration", + "scope": 6298, + "src": "1792:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1792:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6296, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "1821:8:14", + "nodeType": "VariableDeclaration", + "scope": 6298, + "src": "1813:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1813:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1791:39:14" + }, + "src": "1756:75:14" + }, + { + "errorSelector": "cfec0e01", + "id": 6302, + "name": "LBRouter__InvalidTokenPath", + "nameLocation": "1842:26:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6300, + "mutability": "mutable", + "name": "wrongToken", + "nameLocation": "1877:10:14", + "nodeType": "VariableDeclaration", + "scope": 6302, + "src": "1869:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6299, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1869:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1868:20:14" + }, + "src": "1836:53:14" + }, + { + "errorSelector": "6b988fba", + "id": 6306, + "name": "LBRouter__InvalidVersion", + "nameLocation": "1900:24:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6304, + "mutability": "mutable", + "name": "version", + "nameLocation": "1933:7:14", + "nodeType": "VariableDeclaration", + "scope": 6306, + "src": "1925:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1925:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1924:17:14" + }, + "src": "1894:48:14" + }, + { + "errorSelector": "d0a4f13b", + "id": 6318, + "name": "LBRouter__WrongNativeLiquidityParameters", + "nameLocation": "1953:40:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6308, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "2011:6:14", + "nodeType": "VariableDeclaration", + "scope": 6318, + "src": "2003:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2003:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6310, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "2027:6:14", + "nodeType": "VariableDeclaration", + "scope": 6318, + "src": "2019:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2019:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6312, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "2043:7:14", + "nodeType": "VariableDeclaration", + "scope": 6318, + "src": "2035:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2035:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6314, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "2060:7:14", + "nodeType": "VariableDeclaration", + "scope": 6318, + "src": "2052:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6313, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2052:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6316, + "mutability": "mutable", + "name": "msgValue", + "nameLocation": "2077:8:14", + "nodeType": "VariableDeclaration", + "scope": 6318, + "src": "2069:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2069:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1993:98:14" + }, + "src": "1947:145:14" + }, + { + "canonicalName": "ILBRouter.Version", + "documentation": { + "id": 6319, + "nodeType": "StructuredDocumentation", + "src": "2098:153:14", + "text": " @dev This enum represents the version of the pair requested\n - V1: Sovryn LB V1 pair\n - V2: LB pair V2.2 (current version)" + }, + "id": 6322, + "members": [ + { + "id": 6320, + "name": "V1", + "nameLocation": "2279:2:14", + "nodeType": "EnumValue", + "src": "2279:2:14" + }, + { + "id": 6321, + "name": "V2", + "nameLocation": "2291:2:14", + "nodeType": "EnumValue", + "src": "2291:2:14" + } + ], + "name": "Version", + "nameLocation": "2261:7:14", + "nodeType": "EnumDefinition", + "src": "2256:43:14" + }, + { + "canonicalName": "ILBRouter.LiquidityParameters", + "documentation": { + "id": 6323, + "nodeType": "StructuredDocumentation", + "src": "2305:1033:14", + "text": " @dev The liquidity parameters, such as:\n - tokenX: The address of token X\n - tokenY: The address of token Y\n - binStep: The bin step of the pair\n - amountX: The amount to send of token X\n - amountY: The amount to send of token Y\n - amountXMin: The min amount of token X added to liquidity\n - amountYMin: The min amount of token Y added to liquidity\n - activeIdDesired: The active id that user wants to add liquidity from\n - idSlippage: The number of id that are allowed to slip\n - deltaIds: The list of delta ids to add liquidity (`deltaId = activeId - desiredId`)\n - distributionX: The distribution of tokenX with sum(distributionX) = 1e18 (100%) or 0 (0%)\n - distributionY: The distribution of tokenY with sum(distributionY) = 1e18 (100%) or 0 (0%)\n - to: The address of the recipient\n - refundTo: The address of the recipient of the refunded tokens if too much tokens are sent\n - deadline: The deadline of the transaction" + }, + "id": 6359, + "members": [ + { + "constant": false, + "id": 6326, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "3387:6:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3380:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6325, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6324, + "name": "IERC20", + "nameLocations": [ + "3380:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3380:6:14" + }, + "referencedDeclaration": 479, + "src": "3380:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6329, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "3410:6:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3403:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6328, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6327, + "name": "IERC20", + "nameLocations": [ + "3403:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "3403:6:14" + }, + "referencedDeclaration": 479, + "src": "3403:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6331, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3434:7:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3426:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6330, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3426:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6333, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "3459:7:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3451:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3451:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6335, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "3484:7:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3476:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3476:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6337, + "mutability": "mutable", + "name": "amountXMin", + "nameLocation": "3509:10:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3501:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3501:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6339, + "mutability": "mutable", + "name": "amountYMin", + "nameLocation": "3537:10:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3529:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3529:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6341, + "mutability": "mutable", + "name": "activeIdDesired", + "nameLocation": "3565:15:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3557:23:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3557:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6343, + "mutability": "mutable", + "name": "idSlippage", + "nameLocation": "3598:10:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3590:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6342, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3590:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6346, + "mutability": "mutable", + "name": "deltaIds", + "nameLocation": "3627:8:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3618:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr", + "typeString": "int256[]" + }, + "typeName": { + "baseType": { + "id": 6344, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "3618:6:14", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 6345, + "nodeType": "ArrayTypeName", + "src": "3618:8:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr", + "typeString": "int256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6349, + "mutability": "mutable", + "name": "distributionX", + "nameLocation": "3655:13:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3645:23:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3645:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6348, + "nodeType": "ArrayTypeName", + "src": "3645:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6352, + "mutability": "mutable", + "name": "distributionY", + "nameLocation": "3688:13:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3678:23:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3678:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6351, + "nodeType": "ArrayTypeName", + "src": "3678:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6354, + "mutability": "mutable", + "name": "to", + "nameLocation": "3719:2:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3711:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3711:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6356, + "mutability": "mutable", + "name": "refundTo", + "nameLocation": "3739:8:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3731:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3731:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6358, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "3765:8:14", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "3757:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3757:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "LiquidityParameters", + "nameLocation": "3350:19:14", + "nodeType": "StructDefinition", + "scope": 6719, + "src": "3343:437:14", + "visibility": "public" + }, + { + "canonicalName": "ILBRouter.Path", + "documentation": { + "id": 6360, + "nodeType": "StructuredDocumentation", + "src": "3786:257:14", + "text": " @dev The path parameters, such as:\n - pairBinSteps: The list of bin steps of the pairs to go through\n - versions: The list of versions of the pairs to go through\n - tokenPath: The list of tokens in the path to go through" + }, + "id": 6372, + "members": [ + { + "constant": false, + "id": 6363, + "mutability": "mutable", + "name": "pairBinSteps", + "nameLocation": "4080:12:14", + "nodeType": "VariableDeclaration", + "scope": 6372, + "src": "4070:22:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6361, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4070:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6362, + "nodeType": "ArrayTypeName", + "src": "4070:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6367, + "mutability": "mutable", + "name": "versions", + "nameLocation": "4112:8:14", + "nodeType": "VariableDeclaration", + "scope": 6372, + "src": "4102:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_storage_ptr", + "typeString": "enum ILBRouter.Version[]" + }, + "typeName": { + "baseType": { + "id": 6365, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6364, + "name": "Version", + "nameLocations": [ + "4102:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6322, + "src": "4102:7:14" + }, + "referencedDeclaration": 6322, + "src": "4102:7:14", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Version_$6322", + "typeString": "enum ILBRouter.Version" + } + }, + "id": 6366, + "nodeType": "ArrayTypeName", + "src": "4102:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Version_$6322_$dyn_storage_ptr", + "typeString": "enum ILBRouter.Version[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6371, + "mutability": "mutable", + "name": "tokenPath", + "nameLocation": "4139:9:14", + "nodeType": "VariableDeclaration", + "scope": 6372, + "src": "4130:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + }, + "typeName": { + "baseType": { + "id": 6369, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6368, + "name": "IERC20", + "nameLocations": [ + "4130:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4130:6:14" + }, + "referencedDeclaration": 479, + "src": "4130:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 6370, + "nodeType": "ArrayTypeName", + "src": "4130:8:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_IERC20_$479_$dyn_storage_ptr", + "typeString": "contract IERC20[]" + } + }, + "visibility": "internal" + } + ], + "name": "Path", + "nameLocation": "4055:4:14", + "nodeType": "StructDefinition", + "scope": 6719, + "src": "4048:107:14", + "visibility": "public" + }, + { + "functionSelector": "88cc58e4", + "id": 6378, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFactory", + "nameLocation": "4170:10:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6373, + "nodeType": "ParameterList", + "parameters": [], + "src": "4180:2:14" + }, + "returnParameters": { + "id": 6377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6376, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6378, + "src": "4206:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + }, + "typeName": { + "id": 6375, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6374, + "name": "ILBFactory", + "nameLocations": [ + "4206:10:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4236, + "src": "4206:10:14" + }, + "referencedDeclaration": 4236, + "src": "4206:10:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$4236", + "typeString": "contract ILBFactory" + } + }, + "visibility": "internal" + } + ], + "src": "4205:12:14" + }, + "scope": 6719, + "src": "4161:57:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bb558a9f", + "id": 6384, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getV1Factory", + "nameLocation": "4233:12:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6379, + "nodeType": "ParameterList", + "parameters": [], + "src": "4245:2:14" + }, + "returnParameters": { + "id": 6383, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6382, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6384, + "src": "4271:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + }, + "typeName": { + "id": 6381, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6380, + "name": "ISovrynLBFactoryV1", + "nameLocations": [ + "4271:18:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6916, + "src": "4271:18:14" + }, + "referencedDeclaration": 6916, + "src": "4271:18:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISovrynLBFactoryV1_$6916", + "typeString": "contract ISovrynLBFactoryV1" + } + }, + "visibility": "internal" + } + ], + "src": "4270:20:14" + }, + "scope": 6719, + "src": "4224:67:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6c9c0078", + "id": 6390, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getWNATIVE", + "nameLocation": "4306:10:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6385, + "nodeType": "ParameterList", + "parameters": [], + "src": "4316:2:14" + }, + "returnParameters": { + "id": 6389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6388, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6390, + "src": "4342:8:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + }, + "typeName": { + "id": 6387, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6386, + "name": "IWNATIVE", + "nameLocations": [ + "4342:8:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7175, + "src": "4342:8:14" + }, + "referencedDeclaration": 7175, + "src": "4342:8:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWNATIVE_$7175", + "typeString": "contract IWNATIVE" + } + }, + "visibility": "internal" + } + ], + "src": "4341:10:14" + }, + "scope": 6719, + "src": "4297:55:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f96fe925", + "id": 6400, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getIdFromPrice", + "nameLocation": "4367:14:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6393, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "4390:6:14", + "nodeType": "VariableDeclaration", + "scope": 6400, + "src": "4382:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6392, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6391, + "name": "ILBPair", + "nameLocations": [ + "4382:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "4382:7:14" + }, + "referencedDeclaration": 6187, + "src": "4382:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6395, + "mutability": "mutable", + "name": "price", + "nameLocation": "4406:5:14", + "nodeType": "VariableDeclaration", + "scope": 6400, + "src": "4398:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4398:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4381:31:14" + }, + "returnParameters": { + "id": 6399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6398, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6400, + "src": "4436:6:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6397, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4436:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4435:8:14" + }, + "scope": 6719, + "src": "4358:86:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d0e380f2", + "id": 6410, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPriceFromId", + "nameLocation": "4459:14:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6403, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "4482:6:14", + "nodeType": "VariableDeclaration", + "scope": 6410, + "src": "4474:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6402, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6401, + "name": "ILBPair", + "nameLocations": [ + "4474:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "4474:7:14" + }, + "referencedDeclaration": 6187, + "src": "4474:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6405, + "mutability": "mutable", + "name": "id", + "nameLocation": "4497:2:14", + "nodeType": "VariableDeclaration", + "scope": 6410, + "src": "4490:9:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6404, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4490:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4473:27:14" + }, + "returnParameters": { + "id": 6409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6408, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6410, + "src": "4524:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6407, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4524:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4523:9:14" + }, + "scope": 6719, + "src": "4450:83:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "964f987c", + "id": 6426, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapIn", + "nameLocation": "4548:9:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6413, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "4566:6:14", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "4558:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6412, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6411, + "name": "ILBPair", + "nameLocations": [ + "4558:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "4558:7:14" + }, + "referencedDeclaration": 6187, + "src": "4558:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6415, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4582:9:14", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "4574:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6414, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4574:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6417, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "4598:8:14", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "4593:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4593:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4557:50:14" + }, + "returnParameters": { + "id": 6425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6420, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4663:8:14", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "4655:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6419, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4655:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6422, + "mutability": "mutable", + "name": "amountOutLeft", + "nameLocation": "4681:13:14", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "4673:21:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6421, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4673:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6424, + "mutability": "mutable", + "name": "fee", + "nameLocation": "4704:3:14", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "4696:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6423, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4696:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "4654:54:14" + }, + "scope": 6719, + "src": "4539:170:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a0d376cf", + "id": 6442, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapOut", + "nameLocation": "4724:10:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6429, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "4743:6:14", + "nodeType": "VariableDeclaration", + "scope": 6442, + "src": "4735:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6428, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6427, + "name": "ILBPair", + "nameLocations": [ + "4735:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "4735:7:14" + }, + "referencedDeclaration": 6187, + "src": "4735:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6431, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4759:8:14", + "nodeType": "VariableDeclaration", + "scope": 6442, + "src": "4751:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6430, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4751:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6433, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "4774:8:14", + "nodeType": "VariableDeclaration", + "scope": 6442, + "src": "4769:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6432, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4769:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4734:49:14" + }, + "returnParameters": { + "id": 6441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6436, + "mutability": "mutable", + "name": "amountInLeft", + "nameLocation": "4839:12:14", + "nodeType": "VariableDeclaration", + "scope": 6442, + "src": "4831:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6435, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4831:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6438, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4861:9:14", + "nodeType": "VariableDeclaration", + "scope": 6442, + "src": "4853:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6437, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4853:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6440, + "mutability": "mutable", + "name": "fee", + "nameLocation": "4880:3:14", + "nodeType": "VariableDeclaration", + "scope": 6442, + "src": "4872:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6439, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4872:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "4830:54:14" + }, + "scope": 6719, + "src": "4715:170:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "659ac74b", + "id": 6458, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createLBPair", + "nameLocation": "4900:12:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6445, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "4920:6:14", + "nodeType": "VariableDeclaration", + "scope": 6458, + "src": "4913:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6444, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6443, + "name": "IERC20", + "nameLocations": [ + "4913:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4913:6:14" + }, + "referencedDeclaration": 479, + "src": "4913:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6448, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "4935:6:14", + "nodeType": "VariableDeclaration", + "scope": 6458, + "src": "4928:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6447, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6446, + "name": "IERC20", + "nameLocations": [ + "4928:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "4928:6:14" + }, + "referencedDeclaration": 479, + "src": "4928:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6450, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "4950:8:14", + "nodeType": "VariableDeclaration", + "scope": 6458, + "src": "4943:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6449, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4943:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6452, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4967:7:14", + "nodeType": "VariableDeclaration", + "scope": 6458, + "src": "4960:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6451, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4960:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4912:63:14" + }, + "returnParameters": { + "id": 6457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6456, + "mutability": "mutable", + "name": "pair", + "nameLocation": "5018:4:14", + "nodeType": "VariableDeclaration", + "scope": 6458, + "src": "5010:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6455, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6454, + "name": "ILBPair", + "nameLocations": [ + "5010:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6187, + "src": "5010:7:14" + }, + "referencedDeclaration": 6187, + "src": "5010:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$6187", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "5009:14:14" + }, + "scope": 6719, + "src": "4891:133:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a3c7271a", + "id": 6478, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidity", + "nameLocation": "5039:12:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6461, + "mutability": "mutable", + "name": "liquidityParameters", + "nameLocation": "5081:19:14", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "5052:48:14", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + }, + "typeName": { + "id": 6460, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6459, + "name": "LiquidityParameters", + "nameLocations": [ + "5052:19:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6359, + "src": "5052:19:14" + }, + "referencedDeclaration": 6359, + "src": "5052:19:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_storage_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + } + }, + "visibility": "internal" + } + ], + "src": "5051:50:14" + }, + "returnParameters": { + "id": 6477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6464, + "mutability": "mutable", + "name": "amountXAdded", + "nameLocation": "5157:12:14", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "5149:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5149:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6466, + "mutability": "mutable", + "name": "amountYAdded", + "nameLocation": "5191:12:14", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "5183:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5183:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6468, + "mutability": "mutable", + "name": "amountXLeft", + "nameLocation": "5225:11:14", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "5217:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5217:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6470, + "mutability": "mutable", + "name": "amountYLeft", + "nameLocation": "5258:11:14", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "5250:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5250:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6473, + "mutability": "mutable", + "name": "depositIds", + "nameLocation": "5300:10:14", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "5283:27:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6471, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5283:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6472, + "nodeType": "ArrayTypeName", + "src": "5283:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6476, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "5341:15:14", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "5324:32:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5324:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6475, + "nodeType": "ArrayTypeName", + "src": "5324:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5135:231:14" + }, + "scope": 6719, + "src": "5030:337:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8efc2b2c", + "id": 6498, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidityNATIVE", + "nameLocation": "5382:18:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6481, + "mutability": "mutable", + "name": "liquidityParameters", + "nameLocation": "5430:19:14", + "nodeType": "VariableDeclaration", + "scope": 6498, + "src": "5401:48:14", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_calldata_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + }, + "typeName": { + "id": 6480, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6479, + "name": "LiquidityParameters", + "nameLocations": [ + "5401:19:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6359, + "src": "5401:19:14" + }, + "referencedDeclaration": 6359, + "src": "5401:19:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LiquidityParameters_$6359_storage_ptr", + "typeString": "struct ILBRouter.LiquidityParameters" + } + }, + "visibility": "internal" + } + ], + "src": "5400:50:14" + }, + "returnParameters": { + "id": 6497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6484, + "mutability": "mutable", + "name": "amountXAdded", + "nameLocation": "5522:12:14", + "nodeType": "VariableDeclaration", + "scope": 6498, + "src": "5514:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5514:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6486, + "mutability": "mutable", + "name": "amountYAdded", + "nameLocation": "5556:12:14", + "nodeType": "VariableDeclaration", + "scope": 6498, + "src": "5548:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5548:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6488, + "mutability": "mutable", + "name": "amountXLeft", + "nameLocation": "5590:11:14", + "nodeType": "VariableDeclaration", + "scope": 6498, + "src": "5582:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5582:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6490, + "mutability": "mutable", + "name": "amountYLeft", + "nameLocation": "5623:11:14", + "nodeType": "VariableDeclaration", + "scope": 6498, + "src": "5615:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6489, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5615:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6493, + "mutability": "mutable", + "name": "depositIds", + "nameLocation": "5665:10:14", + "nodeType": "VariableDeclaration", + "scope": 6498, + "src": "5648:27:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5648:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6492, + "nodeType": "ArrayTypeName", + "src": "5648:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6496, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "5706:15:14", + "nodeType": "VariableDeclaration", + "scope": 6498, + "src": "5689:32:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5689:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6495, + "nodeType": "ArrayTypeName", + "src": "5689:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5500:231:14" + }, + "scope": 6719, + "src": "5373:359:14", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c22159b6", + "id": 6527, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidity", + "nameLocation": "5747:15:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6501, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "5779:6:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5772:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6500, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6499, + "name": "IERC20", + "nameLocations": [ + "5772:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5772:6:14" + }, + "referencedDeclaration": 479, + "src": "5772:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6504, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "5802:6:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5795:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6503, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6502, + "name": "IERC20", + "nameLocations": [ + "5795:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "5795:6:14" + }, + "referencedDeclaration": 479, + "src": "5795:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6506, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5825:7:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5818:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6505, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5818:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6508, + "mutability": "mutable", + "name": "amountXMin", + "nameLocation": "5850:10:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5842:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5842:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6510, + "mutability": "mutable", + "name": "amountYMin", + "nameLocation": "5878:10:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5870:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6509, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5870:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6513, + "mutability": "mutable", + "name": "ids", + "nameLocation": "5915:3:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5898:20:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5898:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6512, + "nodeType": "ArrayTypeName", + "src": "5898:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6516, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "5945:7:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5928:24:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6514, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5928:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6515, + "nodeType": "ArrayTypeName", + "src": "5928:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6518, + "mutability": "mutable", + "name": "to", + "nameLocation": "5970:2:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5962:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5962:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6520, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "5990:8:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "5982:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6519, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5982:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5762:242:14" + }, + "returnParameters": { + "id": 6526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6523, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "6031:7:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "6023:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6023:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6525, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "6048:7:14", + "nodeType": "VariableDeclaration", + "scope": 6527, + "src": "6040:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6040:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6022:34:14" + }, + "scope": 6719, + "src": "5738:319:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "81c2fdfb", + "id": 6553, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityNATIVE", + "nameLocation": "6072:21:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6530, + "mutability": "mutable", + "name": "token", + "nameLocation": "6110:5:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6103:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6529, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6528, + "name": "IERC20", + "nameLocations": [ + "6103:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "6103:6:14" + }, + "referencedDeclaration": 479, + "src": "6103:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6532, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "6132:7:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6125:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6531, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6125:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6534, + "mutability": "mutable", + "name": "amountTokenMin", + "nameLocation": "6157:14:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6149:22:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6149:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6536, + "mutability": "mutable", + "name": "amountNATIVEMin", + "nameLocation": "6189:15:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6181:23:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6181:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6539, + "mutability": "mutable", + "name": "ids", + "nameLocation": "6231:3:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6214:20:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6537, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6214:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6538, + "nodeType": "ArrayTypeName", + "src": "6214:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6542, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "6261:7:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6244:24:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6540, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6244:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6541, + "nodeType": "ArrayTypeName", + "src": "6244:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6544, + "mutability": "mutable", + "name": "to", + "nameLocation": "6294:2:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6278:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6543, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6278:15:14", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6546, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "6314:8:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6306:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6306:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6093:235:14" + }, + "returnParameters": { + "id": 6552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6549, + "mutability": "mutable", + "name": "amountToken", + "nameLocation": "6355:11:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6347:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6347:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6551, + "mutability": "mutable", + "name": "amountNATIVE", + "nameLocation": "6376:12:14", + "nodeType": "VariableDeclaration", + "scope": 6553, + "src": "6368:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6368:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6346:43:14" + }, + "scope": 6719, + "src": "6063:327:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2a443fae", + "id": 6569, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokens", + "nameLocation": "6405:24:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6555, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "6447:8:14", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "6439:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6439:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6557, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "6473:12:14", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "6465:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6465:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6560, + "mutability": "mutable", + "name": "path", + "nameLocation": "6507:4:14", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "6495:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6559, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6558, + "name": "Path", + "nameLocations": [ + "6495:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "6495:4:14" + }, + "referencedDeclaration": 6372, + "src": "6495:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6562, + "mutability": "mutable", + "name": "to", + "nameLocation": "6529:2:14", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "6521:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6561, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6521:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6564, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "6549:8:14", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "6541:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6541:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6429:134:14" + }, + "returnParameters": { + "id": 6568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6567, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "6590:9:14", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "6582:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6582:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6581:19:14" + }, + "scope": 6719, + "src": "6396:205:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "9ab6156b", + "id": 6585, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForNATIVE", + "nameLocation": "6616:24:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6571, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "6658:8:14", + "nodeType": "VariableDeclaration", + "scope": 6585, + "src": "6650:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6650:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6573, + "mutability": "mutable", + "name": "amountOutMinNATIVE", + "nameLocation": "6684:18:14", + "nodeType": "VariableDeclaration", + "scope": 6585, + "src": "6676:26:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6676:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6576, + "mutability": "mutable", + "name": "path", + "nameLocation": "6724:4:14", + "nodeType": "VariableDeclaration", + "scope": 6585, + "src": "6712:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6575, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6574, + "name": "Path", + "nameLocations": [ + "6712:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "6712:4:14" + }, + "referencedDeclaration": 6372, + "src": "6712:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6578, + "mutability": "mutable", + "name": "to", + "nameLocation": "6754:2:14", + "nodeType": "VariableDeclaration", + "scope": 6585, + "src": "6738:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6738:15:14", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6580, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "6774:8:14", + "nodeType": "VariableDeclaration", + "scope": 6585, + "src": "6766:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6579, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6766:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6640:148:14" + }, + "returnParameters": { + "id": 6584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6583, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "6815:9:14", + "nodeType": "VariableDeclaration", + "scope": 6585, + "src": "6807:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6582, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6807:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6806:19:14" + }, + "scope": 6719, + "src": "6607:219:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b066ea7c", + "id": 6599, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactNATIVEForTokens", + "nameLocation": "6841:24:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6587, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "6874:12:14", + "nodeType": "VariableDeclaration", + "scope": 6599, + "src": "6866:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6866:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6590, + "mutability": "mutable", + "name": "path", + "nameLocation": "6900:4:14", + "nodeType": "VariableDeclaration", + "scope": 6599, + "src": "6888:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6589, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6588, + "name": "Path", + "nameLocations": [ + "6888:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "6888:4:14" + }, + "referencedDeclaration": 6372, + "src": "6888:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6592, + "mutability": "mutable", + "name": "to", + "nameLocation": "6914:2:14", + "nodeType": "VariableDeclaration", + "scope": 6599, + "src": "6906:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6591, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6906:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6594, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "6926:8:14", + "nodeType": "VariableDeclaration", + "scope": 6599, + "src": "6918:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6918:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6865:70:14" + }, + "returnParameters": { + "id": 6598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6597, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "6994:9:14", + "nodeType": "VariableDeclaration", + "scope": 6599, + "src": "6986:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6596, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6986:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6985:19:14" + }, + "scope": 6719, + "src": "6832:173:14", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "92fe8e70", + "id": 6616, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactTokens", + "nameLocation": "7020:24:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6601, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "7062:9:14", + "nodeType": "VariableDeclaration", + "scope": 6616, + "src": "7054:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7054:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6603, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "7089:11:14", + "nodeType": "VariableDeclaration", + "scope": 6616, + "src": "7081:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7081:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6606, + "mutability": "mutable", + "name": "path", + "nameLocation": "7122:4:14", + "nodeType": "VariableDeclaration", + "scope": 6616, + "src": "7110:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6605, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6604, + "name": "Path", + "nameLocations": [ + "7110:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "7110:4:14" + }, + "referencedDeclaration": 6372, + "src": "7110:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6608, + "mutability": "mutable", + "name": "to", + "nameLocation": "7144:2:14", + "nodeType": "VariableDeclaration", + "scope": 6616, + "src": "7136:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7136:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6610, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "7164:8:14", + "nodeType": "VariableDeclaration", + "scope": 6616, + "src": "7156:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7156:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7044:134:14" + }, + "returnParameters": { + "id": 6615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6614, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "7214:9:14", + "nodeType": "VariableDeclaration", + "scope": 6616, + "src": "7197:26:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7197:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6613, + "nodeType": "ArrayTypeName", + "src": "7197:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "7196:28:14" + }, + "scope": 6719, + "src": "7011:214:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3dc8f8ec", + "id": 6633, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapTokensForExactNATIVE", + "nameLocation": "7240:24:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6618, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "7282:9:14", + "nodeType": "VariableDeclaration", + "scope": 6633, + "src": "7274:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6617, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7274:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6620, + "mutability": "mutable", + "name": "amountInMax", + "nameLocation": "7309:11:14", + "nodeType": "VariableDeclaration", + "scope": 6633, + "src": "7301:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6619, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7301:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6623, + "mutability": "mutable", + "name": "path", + "nameLocation": "7342:4:14", + "nodeType": "VariableDeclaration", + "scope": 6633, + "src": "7330:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6622, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6621, + "name": "Path", + "nameLocations": [ + "7330:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "7330:4:14" + }, + "referencedDeclaration": 6372, + "src": "7330:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6625, + "mutability": "mutable", + "name": "to", + "nameLocation": "7372:2:14", + "nodeType": "VariableDeclaration", + "scope": 6633, + "src": "7356:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7356:15:14", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6627, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "7392:8:14", + "nodeType": "VariableDeclaration", + "scope": 6633, + "src": "7384:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7384:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7264:142:14" + }, + "returnParameters": { + "id": 6632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6631, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "7442:9:14", + "nodeType": "VariableDeclaration", + "scope": 6633, + "src": "7425:26:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7425:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6630, + "nodeType": "ArrayTypeName", + "src": "7425:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "7424:28:14" + }, + "scope": 6719, + "src": "7231:222:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2075ad22", + "id": 6648, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapNATIVEForExactTokens", + "nameLocation": "7468:24:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6635, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "7501:9:14", + "nodeType": "VariableDeclaration", + "scope": 6648, + "src": "7493:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7493:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6638, + "mutability": "mutable", + "name": "path", + "nameLocation": "7524:4:14", + "nodeType": "VariableDeclaration", + "scope": 6648, + "src": "7512:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6637, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6636, + "name": "Path", + "nameLocations": [ + "7512:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "7512:4:14" + }, + "referencedDeclaration": 6372, + "src": "7512:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6640, + "mutability": "mutable", + "name": "to", + "nameLocation": "7538:2:14", + "nodeType": "VariableDeclaration", + "scope": 6648, + "src": "7530:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7530:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6642, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "7550:8:14", + "nodeType": "VariableDeclaration", + "scope": 6648, + "src": "7542:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6641, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7542:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7492:67:14" + }, + "returnParameters": { + "id": 6647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6646, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "7627:9:14", + "nodeType": "VariableDeclaration", + "scope": 6648, + "src": "7610:26:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7610:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6645, + "nodeType": "ArrayTypeName", + "src": "7610:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "7609:28:14" + }, + "scope": 6719, + "src": "7459:179:14", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4b801870", + "id": 6664, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "nameLocation": "7653:53:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6650, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "7724:8:14", + "nodeType": "VariableDeclaration", + "scope": 6664, + "src": "7716:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7716:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6652, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "7750:12:14", + "nodeType": "VariableDeclaration", + "scope": 6664, + "src": "7742:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7742:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6655, + "mutability": "mutable", + "name": "path", + "nameLocation": "7784:4:14", + "nodeType": "VariableDeclaration", + "scope": 6664, + "src": "7772:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6654, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6653, + "name": "Path", + "nameLocations": [ + "7772:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "7772:4:14" + }, + "referencedDeclaration": 6372, + "src": "7772:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6657, + "mutability": "mutable", + "name": "to", + "nameLocation": "7806:2:14", + "nodeType": "VariableDeclaration", + "scope": 6664, + "src": "7798:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7798:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6659, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "7826:8:14", + "nodeType": "VariableDeclaration", + "scope": 6664, + "src": "7818:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7818:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7706:134:14" + }, + "returnParameters": { + "id": 6663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6662, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "7867:9:14", + "nodeType": "VariableDeclaration", + "scope": 6664, + "src": "7859:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7859:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7858:19:14" + }, + "scope": 6719, + "src": "7644:234:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1a24f9a9", + "id": 6680, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactTokensForNATIVESupportingFeeOnTransferTokens", + "nameLocation": "7893:53:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6666, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "7964:8:14", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "7956:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7956:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6668, + "mutability": "mutable", + "name": "amountOutMinNATIVE", + "nameLocation": "7990:18:14", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "7982:26:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7982:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6671, + "mutability": "mutable", + "name": "path", + "nameLocation": "8030:4:14", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "8018:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6670, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6669, + "name": "Path", + "nameLocations": [ + "8018:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "8018:4:14" + }, + "referencedDeclaration": 6372, + "src": "8018:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6673, + "mutability": "mutable", + "name": "to", + "nameLocation": "8060:2:14", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "8044:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 6672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8044:15:14", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6675, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "8080:8:14", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "8072:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8072:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7946:148:14" + }, + "returnParameters": { + "id": 6679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6678, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "8121:9:14", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "8113:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8113:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8112:19:14" + }, + "scope": 6719, + "src": "7884:248:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e038e6dc", + "id": 6694, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swapExactNATIVEForTokensSupportingFeeOnTransferTokens", + "nameLocation": "8147:53:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6682, + "mutability": "mutable", + "name": "amountOutMin", + "nameLocation": "8218:12:14", + "nodeType": "VariableDeclaration", + "scope": 6694, + "src": "8210:20:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8210:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6685, + "mutability": "mutable", + "name": "path", + "nameLocation": "8252:4:14", + "nodeType": "VariableDeclaration", + "scope": 6694, + "src": "8240:16:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_memory_ptr", + "typeString": "struct ILBRouter.Path" + }, + "typeName": { + "id": 6684, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6683, + "name": "Path", + "nameLocations": [ + "8240:4:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6372, + "src": "8240:4:14" + }, + "referencedDeclaration": 6372, + "src": "8240:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Path_$6372_storage_ptr", + "typeString": "struct ILBRouter.Path" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6687, + "mutability": "mutable", + "name": "to", + "nameLocation": "8274:2:14", + "nodeType": "VariableDeclaration", + "scope": 6694, + "src": "8266:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8266:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6689, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "8294:8:14", + "nodeType": "VariableDeclaration", + "scope": 6694, + "src": "8286:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8286:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8200:108:14" + }, + "returnParameters": { + "id": 6693, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6692, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "8343:9:14", + "nodeType": "VariableDeclaration", + "scope": 6694, + "src": "8335:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6691, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8335:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8334:19:14" + }, + "scope": 6719, + "src": "8138:216:14", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "62c06767", + "id": 6704, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sweep", + "nameLocation": "8369:5:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6697, + "mutability": "mutable", + "name": "token", + "nameLocation": "8382:5:14", + "nodeType": "VariableDeclaration", + "scope": 6704, + "src": "8375:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6696, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6695, + "name": "IERC20", + "nameLocations": [ + "8375:6:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "8375:6:14" + }, + "referencedDeclaration": 479, + "src": "8375:6:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6699, + "mutability": "mutable", + "name": "to", + "nameLocation": "8397:2:14", + "nodeType": "VariableDeclaration", + "scope": 6704, + "src": "8389:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6698, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8389:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6701, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8409:6:14", + "nodeType": "VariableDeclaration", + "scope": 6704, + "src": "8401:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8401:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8374:42:14" + }, + "returnParameters": { + "id": 6703, + "nodeType": "ParameterList", + "parameters": [], + "src": "8425:0:14" + }, + "scope": 6719, + "src": "8360:66:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e9361c08", + "id": 6718, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sweepLBToken", + "nameLocation": "8441:12:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6707, + "mutability": "mutable", + "name": "_lbToken", + "nameLocation": "8463:8:14", + "nodeType": "VariableDeclaration", + "scope": 6718, + "src": "8454:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBToken_$6842", + "typeString": "contract ILBToken" + }, + "typeName": { + "id": 6706, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6705, + "name": "ILBToken", + "nameLocations": [ + "8454:8:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6842, + "src": "8454:8:14" + }, + "referencedDeclaration": 6842, + "src": "8454:8:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBToken_$6842", + "typeString": "contract ILBToken" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6709, + "mutability": "mutable", + "name": "_to", + "nameLocation": "8481:3:14", + "nodeType": "VariableDeclaration", + "scope": 6718, + "src": "8473:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8473:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6712, + "mutability": "mutable", + "name": "_ids", + "nameLocation": "8505:4:14", + "nodeType": "VariableDeclaration", + "scope": 6718, + "src": "8486:23:14", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8486:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6711, + "nodeType": "ArrayTypeName", + "src": "8486:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6715, + "mutability": "mutable", + "name": "_amounts", + "nameLocation": "8530:8:14", + "nodeType": "VariableDeclaration", + "scope": 6718, + "src": "8511:27:14", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6713, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8511:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6714, + "nodeType": "ArrayTypeName", + "src": "8511:9:14", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "8453:86:14" + }, + "returnParameters": { + "id": 6717, + "nodeType": "ParameterList", + "parameters": [], + "src": "8556:0:14" + }, + "scope": 6719, + "src": "8432:125:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6720, + "src": "572:7987:14", + "usedErrors": [ + 6208, + 6216, + 6222, + 6226, + 6228, + 6230, + 6234, + 6238, + 6242, + 6244, + 6246, + 6254, + 6264, + 6270, + 6276, + 6282, + 6286, + 6292, + 6298, + 6302, + 6306, + 6318 + ], + "usedEvents": [] + } + ], + "src": "33:8527:14" + }, + "id": 14 + }, + "src/interfaces/ILBToken.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBToken.sol", + "exportedSymbols": { + "ILBToken": [ + 6842 + ] + }, + "id": 6843, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6721, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:15" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBToken", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 6722, + "nodeType": "StructuredDocumentation", + "src": "59:99:15", + "text": " @title Liquidity Book Token Interface\n @notice Interface to interact with the LBToken." + }, + "fullyImplemented": false, + "id": 6842, + "linearizedBaseContracts": [ + 6842 + ], + "name": "ILBToken", + "nameLocation": "169:8:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "8b8421ce", + "id": 6724, + "name": "LBToken__AddressThisOrZero", + "nameLocation": "190:26:15", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6723, + "nodeType": "ParameterList", + "parameters": [], + "src": "216:2:15" + }, + "src": "184:35:15" + }, + { + "errorSelector": "80623ffa", + "id": 6726, + "name": "LBToken__InvalidLength", + "nameLocation": "230:22:15", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6725, + "nodeType": "ParameterList", + "parameters": [], + "src": "252:2:15" + }, + "src": "224:31:15" + }, + { + "errorSelector": "782ee707", + "id": 6730, + "name": "LBToken__SelfApproval", + "nameLocation": "266:21:15", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6728, + "mutability": "mutable", + "name": "owner", + "nameLocation": "296:5:15", + "nodeType": "VariableDeclaration", + "scope": 6730, + "src": "288:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "288:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "287:15:15" + }, + "src": "260:43:15" + }, + { + "errorSelector": "548f773d", + "id": 6736, + "name": "LBToken__SpenderNotApproved", + "nameLocation": "314:27:15", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6732, + "mutability": "mutable", + "name": "from", + "nameLocation": "350:4:15", + "nodeType": "VariableDeclaration", + "scope": 6736, + "src": "342:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6731, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "342:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6734, + "mutability": "mutable", + "name": "spender", + "nameLocation": "364:7:15", + "nodeType": "VariableDeclaration", + "scope": 6736, + "src": "356:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "356:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "341:31:15" + }, + "src": "308:65:15" + }, + { + "errorSelector": "58b4690f", + "id": 6744, + "name": "LBToken__TransferExceedsBalance", + "nameLocation": "384:31:15", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6738, + "mutability": "mutable", + "name": "from", + "nameLocation": "424:4:15", + "nodeType": "VariableDeclaration", + "scope": 6744, + "src": "416:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6737, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "416:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6740, + "mutability": "mutable", + "name": "id", + "nameLocation": "438:2:15", + "nodeType": "VariableDeclaration", + "scope": 6744, + "src": "430:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "430:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6742, + "mutability": "mutable", + "name": "amount", + "nameLocation": "450:6:15", + "nodeType": "VariableDeclaration", + "scope": 6744, + "src": "442:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "442:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "415:42:15" + }, + "src": "378:80:15" + }, + { + "errorSelector": "02d9c3b8", + "id": 6752, + "name": "LBToken__BurnExceedsBalance", + "nameLocation": "469:27:15", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6746, + "mutability": "mutable", + "name": "from", + "nameLocation": "505:4:15", + "nodeType": "VariableDeclaration", + "scope": 6752, + "src": "497:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "497:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6748, + "mutability": "mutable", + "name": "id", + "nameLocation": "519:2:15", + "nodeType": "VariableDeclaration", + "scope": 6752, + "src": "511:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "511:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6750, + "mutability": "mutable", + "name": "amount", + "nameLocation": "531:6:15", + "nodeType": "VariableDeclaration", + "scope": 6752, + "src": "523:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "496:42:15" + }, + "src": "463:76:15" + }, + { + "anonymous": false, + "eventSelector": "4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb", + "id": 6766, + "name": "TransferBatch", + "nameLocation": "551:13:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 6765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6754, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "590:6:15", + "nodeType": "VariableDeclaration", + "scope": 6766, + "src": "574:22:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6753, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "574:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6756, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "614:4:15", + "nodeType": "VariableDeclaration", + "scope": 6766, + "src": "598:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6755, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "598:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6758, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "636:2:15", + "nodeType": "VariableDeclaration", + "scope": 6766, + "src": "620:18:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6757, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "620:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6761, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nameLocation": "650:3:15", + "nodeType": "VariableDeclaration", + "scope": 6766, + "src": "640:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "640:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6760, + "nodeType": "ArrayTypeName", + "src": "640:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6764, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "665:7:15", + "nodeType": "VariableDeclaration", + "scope": 6766, + "src": "655:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "655:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6763, + "nodeType": "ArrayTypeName", + "src": "655:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "564:114:15" + }, + "src": "545:134:15" + }, + { + "anonymous": false, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "id": 6774, + "name": "ApprovalForAll", + "nameLocation": "691:14:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 6773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6768, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "722:7:15", + "nodeType": "VariableDeclaration", + "scope": 6774, + "src": "706:23:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6770, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "747:6:15", + "nodeType": "VariableDeclaration", + "scope": 6774, + "src": "731:22:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "731:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6772, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "760:8:15", + "nodeType": "VariableDeclaration", + "scope": 6774, + "src": "755:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6771, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "755:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "705:64:15" + }, + "src": "685:85:15" + }, + { + "functionSelector": "06fdde03", + "id": 6779, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "785:4:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6775, + "nodeType": "ParameterList", + "parameters": [], + "src": "789:2:15" + }, + "returnParameters": { + "id": 6778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6777, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6779, + "src": "815:13:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6776, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "815:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "814:15:15" + }, + "scope": 6842, + "src": "776:54:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 6784, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "845:6:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6780, + "nodeType": "ParameterList", + "parameters": [], + "src": "851:2:15" + }, + "returnParameters": { + "id": 6783, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6782, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6784, + "src": "877:13:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6781, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "877:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "876:15:15" + }, + "scope": 6842, + "src": "836:56:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bd85b039", + "id": 6791, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "907:11:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6786, + "mutability": "mutable", + "name": "id", + "nameLocation": "927:2:15", + "nodeType": "VariableDeclaration", + "scope": 6791, + "src": "919:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6785, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "919:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "918:12:15" + }, + "returnParameters": { + "id": 6790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6789, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6791, + "src": "954:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6788, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "954:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "953:9:15" + }, + "scope": 6842, + "src": "898:65:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "00fdd58e", + "id": 6800, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "978:9:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6793, + "mutability": "mutable", + "name": "account", + "nameLocation": "996:7:15", + "nodeType": "VariableDeclaration", + "scope": 6800, + "src": "988:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "988:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6795, + "mutability": "mutable", + "name": "id", + "nameLocation": "1013:2:15", + "nodeType": "VariableDeclaration", + "scope": 6800, + "src": "1005:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1005:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "987:29:15" + }, + "returnParameters": { + "id": 6799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6798, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6800, + "src": "1040:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1040:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1039:9:15" + }, + "scope": 6842, + "src": "969:80:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e1273f4", + "id": 6812, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOfBatch", + "nameLocation": "1064:14:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6803, + "mutability": "mutable", + "name": "accounts", + "nameLocation": "1098:8:15", + "nodeType": "VariableDeclaration", + "scope": 6812, + "src": "1079:27:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 6801, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1079:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6802, + "nodeType": "ArrayTypeName", + "src": "1079:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6806, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1127:3:15", + "nodeType": "VariableDeclaration", + "scope": 6812, + "src": "1108:22:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6804, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1108:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6805, + "nodeType": "ArrayTypeName", + "src": "1108:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1078:53:15" + }, + "returnParameters": { + "id": 6811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6810, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6812, + "src": "1179:16:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6808, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1179:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6809, + "nodeType": "ArrayTypeName", + "src": "1179:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1178:18:15" + }, + "scope": 6842, + "src": "1055:142:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e985e9c5", + "id": 6821, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "1212:16:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6814, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1237:5:15", + "nodeType": "VariableDeclaration", + "scope": 6821, + "src": "1229:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1229:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6816, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1252:7:15", + "nodeType": "VariableDeclaration", + "scope": 6821, + "src": "1244:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1244:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1228:32:15" + }, + "returnParameters": { + "id": 6820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6819, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6821, + "src": "1284:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6818, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1284:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1283:6:15" + }, + "scope": 6842, + "src": "1203:87:15", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e584b654", + "id": 6828, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approveForAll", + "nameLocation": "1305:13:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6823, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1327:7:15", + "nodeType": "VariableDeclaration", + "scope": 6828, + "src": "1319:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6822, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1319:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6825, + "mutability": "mutable", + "name": "approved", + "nameLocation": "1341:8:15", + "nodeType": "VariableDeclaration", + "scope": 6828, + "src": "1336:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6824, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1336:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1318:32:15" + }, + "returnParameters": { + "id": 6827, + "nodeType": "ParameterList", + "parameters": [], + "src": "1359:0:15" + }, + "scope": 6842, + "src": "1296:64:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "17fad7fc", + "id": 6841, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "batchTransferFrom", + "nameLocation": "1375:17:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6830, + "mutability": "mutable", + "name": "from", + "nameLocation": "1401:4:15", + "nodeType": "VariableDeclaration", + "scope": 6841, + "src": "1393:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1393:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6832, + "mutability": "mutable", + "name": "to", + "nameLocation": "1415:2:15", + "nodeType": "VariableDeclaration", + "scope": 6841, + "src": "1407:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6831, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1407:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6835, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1438:3:15", + "nodeType": "VariableDeclaration", + "scope": 6841, + "src": "1419:22:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1419:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6834, + "nodeType": "ArrayTypeName", + "src": "1419:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6838, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1462:7:15", + "nodeType": "VariableDeclaration", + "scope": 6841, + "src": "1443:26:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1443:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6837, + "nodeType": "ArrayTypeName", + "src": "1443:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1392:78:15" + }, + "returnParameters": { + "id": 6840, + "nodeType": "ParameterList", + "parameters": [], + "src": "1479:0:15" + }, + "scope": 6842, + "src": "1366:114:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6843, + "src": "159:1323:15", + "usedErrors": [ + 6724, + 6726, + 6730, + 6736, + 6744, + 6752 + ], + "usedEvents": [ + 6766, + 6774 + ] + } + ], + "src": "33:1450:15" + }, + "id": 15 + }, + "src/interfaces/ISovrynLBFactoryV1.sol": { + "ast": { + "absolutePath": "src/interfaces/ISovrynLBFactoryV1.sol", + "exportedSymbols": { + "ISovrynLBFactoryV1": [ + 6916 + ] + }, + "id": 6917, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6844, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "37:24:16" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ISovrynLBFactoryV1", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 6845, + "nodeType": "StructuredDocumentation", + "src": "63:102:16", + "text": "@title Sovryn LB V1 Factory Interface\n @notice Interface to interact with Sovryn LB V1 Factory" + }, + "fullyImplemented": false, + "id": 6916, + "linearizedBaseContracts": [ + 6916 + ], + "name": "ISovrynLBFactoryV1", + "nameLocation": "175:18:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9", + "id": 6855, + "name": "PairCreated", + "nameLocation": "206:11:16", + "nodeType": "EventDefinition", + "parameters": { + "id": 6854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6847, + "indexed": true, + "mutability": "mutable", + "name": "token0", + "nameLocation": "234:6:16", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "218:22:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "218:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6849, + "indexed": true, + "mutability": "mutable", + "name": "token1", + "nameLocation": "258:6:16", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "242:22:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6848, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "242:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6851, + "indexed": false, + "mutability": "mutable", + "name": "pair", + "nameLocation": "274:4:16", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "266:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6850, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "266:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6853, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "280:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6852, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "280:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "217:71:16" + }, + "src": "200:89:16" + }, + { + "functionSelector": "017e7e58", + "id": 6860, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeTo", + "nameLocation": "304:5:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6856, + "nodeType": "ParameterList", + "parameters": [], + "src": "309:2:16" + }, + "returnParameters": { + "id": 6859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6858, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6860, + "src": "335:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "335:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "334:9:16" + }, + "scope": 6916, + "src": "295:49:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "094b7415", + "id": 6865, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "feeToSetter", + "nameLocation": "359:11:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6861, + "nodeType": "ParameterList", + "parameters": [], + "src": "370:2:16" + }, + "returnParameters": { + "id": 6864, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6863, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6865, + "src": "396:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "396:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "395:9:16" + }, + "scope": 6916, + "src": "350:55:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7cd07e47", + "id": 6870, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "migrator", + "nameLocation": "420:8:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6866, + "nodeType": "ParameterList", + "parameters": [], + "src": "428:2:16" + }, + "returnParameters": { + "id": 6869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6868, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6870, + "src": "454:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6867, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "454:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "453:9:16" + }, + "scope": 6916, + "src": "411:52:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e6a43905", + "id": 6879, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPair", + "nameLocation": "478:7:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6872, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "494:6:16", + "nodeType": "VariableDeclaration", + "scope": 6879, + "src": "486:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6871, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "486:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6874, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "510:6:16", + "nodeType": "VariableDeclaration", + "scope": 6879, + "src": "502:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6873, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "502:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "485:32:16" + }, + "returnParameters": { + "id": 6878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6877, + "mutability": "mutable", + "name": "pair", + "nameLocation": "549:4:16", + "nodeType": "VariableDeclaration", + "scope": 6879, + "src": "541:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6876, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "541:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "540:14:16" + }, + "scope": 6916, + "src": "469:86:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1e3dd18b", + "id": 6886, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairs", + "nameLocation": "570:8:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6882, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6881, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6886, + "src": "579:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "579:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "578:9:16" + }, + "returnParameters": { + "id": 6885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6884, + "mutability": "mutable", + "name": "pair", + "nameLocation": "619:4:16", + "nodeType": "VariableDeclaration", + "scope": 6886, + "src": "611:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6883, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "611:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "610:14:16" + }, + "scope": 6916, + "src": "561:64:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "574f2ba3", + "id": 6891, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allPairsLength", + "nameLocation": "640:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6887, + "nodeType": "ParameterList", + "parameters": [], + "src": "654:2:16" + }, + "returnParameters": { + "id": 6890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6889, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6891, + "src": "680:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "680:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "679:9:16" + }, + "scope": 6916, + "src": "631:58:16", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c9c65396", + "id": 6900, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createPair", + "nameLocation": "704:10:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6896, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6893, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "723:6:16", + "nodeType": "VariableDeclaration", + "scope": 6900, + "src": "715:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6892, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6895, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "739:6:16", + "nodeType": "VariableDeclaration", + "scope": 6900, + "src": "731:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "731:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "714:32:16" + }, + "returnParameters": { + "id": 6899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6898, + "mutability": "mutable", + "name": "pair", + "nameLocation": "773:4:16", + "nodeType": "VariableDeclaration", + "scope": 6900, + "src": "765:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "765:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "764:14:16" + }, + "scope": 6916, + "src": "695:84:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f46901ed", + "id": 6905, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeTo", + "nameLocation": "794:8:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6902, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6905, + "src": "803:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6901, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "803:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "802:9:16" + }, + "returnParameters": { + "id": 6904, + "nodeType": "ParameterList", + "parameters": [], + "src": "820:0:16" + }, + "scope": 6916, + "src": "785:36:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a2e74af6", + "id": 6910, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeToSetter", + "nameLocation": "836:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6907, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6910, + "src": "851:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "851:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "850:9:16" + }, + "returnParameters": { + "id": 6909, + "nodeType": "ParameterList", + "parameters": [], + "src": "868:0:16" + }, + "scope": 6916, + "src": "827:42:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "23cf3118", + "id": 6915, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setMigrator", + "nameLocation": "884:11:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6912, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6915, + "src": "896:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "896:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "895:9:16" + }, + "returnParameters": { + "id": 6914, + "nodeType": "ParameterList", + "parameters": [], + "src": "913:0:16" + }, + "scope": 6916, + "src": "875:39:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6917, + "src": "165:751:16", + "usedErrors": [], + "usedEvents": [ + 6855 + ] + } + ], + "src": "37:880:16" + }, + "id": 16 + }, + "src/interfaces/ISovrynLBPairV1.sol": { + "ast": { + "absolutePath": "src/interfaces/ISovrynLBPairV1.sol", + "exportedSymbols": { + "ISovrynLBPairV1": [ + 7159 + ] + }, + "id": 7160, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6918, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "37:24:17" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ISovrynLBPairV1", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 6919, + "nodeType": "StructuredDocumentation", + "src": "63:97:17", + "text": "@title Sovryn LB V1 Pair Interface\n @notice Interface to interact with Sovryn LB V1 Pairs" + }, + "fullyImplemented": false, + "id": 7159, + "linearizedBaseContracts": [ + 7159 + ], + "name": "ISovrynLBPairV1", + "nameLocation": "170:15:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 6927, + "name": "Approval", + "nameLocation": "198:8:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 6926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6921, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "223:5:17", + "nodeType": "VariableDeclaration", + "scope": 6927, + "src": "207:21:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "207:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6923, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "246:7:17", + "nodeType": "VariableDeclaration", + "scope": 6927, + "src": "230:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "230:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6925, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "263:5:17", + "nodeType": "VariableDeclaration", + "scope": 6927, + "src": "255:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "255:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "206:63:17" + }, + "src": "192:78:17" + }, + { + "anonymous": false, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 6935, + "name": "Transfer", + "nameLocation": "281:8:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 6934, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6929, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "306:4:17", + "nodeType": "VariableDeclaration", + "scope": 6935, + "src": "290:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6928, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "290:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6931, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "328:2:17", + "nodeType": "VariableDeclaration", + "scope": 6935, + "src": "312:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6930, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "312:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6933, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "340:5:17", + "nodeType": "VariableDeclaration", + "scope": 6935, + "src": "332:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6932, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "332:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "289:57:17" + }, + "src": "275:72:17" + }, + { + "functionSelector": "06fdde03", + "id": 6940, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "362:4:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6936, + "nodeType": "ParameterList", + "parameters": [], + "src": "366:2:17" + }, + "returnParameters": { + "id": 6939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6938, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6940, + "src": "392:13:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6937, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "392:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "391:15:17" + }, + "scope": 7159, + "src": "353:54:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 6945, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "422:6:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6941, + "nodeType": "ParameterList", + "parameters": [], + "src": "428:2:17" + }, + "returnParameters": { + "id": 6944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6943, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6945, + "src": "454:13:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6942, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "454:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "453:15:17" + }, + "scope": 7159, + "src": "413:56:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "313ce567", + "id": 6950, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "484:8:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6946, + "nodeType": "ParameterList", + "parameters": [], + "src": "492:2:17" + }, + "returnParameters": { + "id": 6949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6948, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6950, + "src": "518:5:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6947, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "518:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "517:7:17" + }, + "scope": 7159, + "src": "475:50:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "18160ddd", + "id": 6955, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "540:11:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6951, + "nodeType": "ParameterList", + "parameters": [], + "src": "551:2:17" + }, + "returnParameters": { + "id": 6954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6953, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6955, + "src": "577:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "577:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "576:9:17" + }, + "scope": 7159, + "src": "531:55:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "70a08231", + "id": 6962, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "601:9:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6958, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6957, + "mutability": "mutable", + "name": "owner", + "nameLocation": "619:5:17", + "nodeType": "VariableDeclaration", + "scope": 6962, + "src": "611:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6956, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "611:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "610:15:17" + }, + "returnParameters": { + "id": 6961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6960, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6962, + "src": "649:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6959, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "649:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "648:9:17" + }, + "scope": 7159, + "src": "592:66:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "dd62ed3e", + "id": 6971, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "673:9:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6964, + "mutability": "mutable", + "name": "owner", + "nameLocation": "691:5:17", + "nodeType": "VariableDeclaration", + "scope": 6971, + "src": "683:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6963, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "683:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6966, + "mutability": "mutable", + "name": "spender", + "nameLocation": "706:7:17", + "nodeType": "VariableDeclaration", + "scope": 6971, + "src": "698:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "698:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "682:32:17" + }, + "returnParameters": { + "id": 6970, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6969, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6971, + "src": "738:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6968, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "738:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "737:9:17" + }, + "scope": 7159, + "src": "664:83:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "095ea7b3", + "id": 6980, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "762:7:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6973, + "mutability": "mutable", + "name": "spender", + "nameLocation": "778:7:17", + "nodeType": "VariableDeclaration", + "scope": 6980, + "src": "770:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "770:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6975, + "mutability": "mutable", + "name": "value", + "nameLocation": "795:5:17", + "nodeType": "VariableDeclaration", + "scope": 6980, + "src": "787:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6974, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "787:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "769:32:17" + }, + "returnParameters": { + "id": 6979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6978, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6980, + "src": "820:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6977, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "820:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "819:6:17" + }, + "scope": 7159, + "src": "753:73:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a9059cbb", + "id": 6989, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "841:8:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6982, + "mutability": "mutable", + "name": "to", + "nameLocation": "858:2:17", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "850:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "850:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6984, + "mutability": "mutable", + "name": "value", + "nameLocation": "870:5:17", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "862:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "862:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "849:27:17" + }, + "returnParameters": { + "id": 6988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6987, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "895:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6986, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "895:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "894:6:17" + }, + "scope": 7159, + "src": "832:69:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "23b872dd", + "id": 7000, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "916:12:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6991, + "mutability": "mutable", + "name": "from", + "nameLocation": "937:4:17", + "nodeType": "VariableDeclaration", + "scope": 7000, + "src": "929:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6990, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "929:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6993, + "mutability": "mutable", + "name": "to", + "nameLocation": "951:2:17", + "nodeType": "VariableDeclaration", + "scope": 7000, + "src": "943:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6992, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "943:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6995, + "mutability": "mutable", + "name": "value", + "nameLocation": "963:5:17", + "nodeType": "VariableDeclaration", + "scope": 7000, + "src": "955:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "955:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "928:41:17" + }, + "returnParameters": { + "id": 6999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6998, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7000, + "src": "988:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6997, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "988:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "987:6:17" + }, + "scope": 7159, + "src": "907:87:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3644e515", + "id": 7005, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "1009:16:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7001, + "nodeType": "ParameterList", + "parameters": [], + "src": "1025:2:17" + }, + "returnParameters": { + "id": 7004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7003, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7005, + "src": "1051:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7002, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1051:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1050:9:17" + }, + "scope": 7159, + "src": "1000:60:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "30adf81f", + "id": 7010, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "PERMIT_TYPEHASH", + "nameLocation": "1075:15:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7006, + "nodeType": "ParameterList", + "parameters": [], + "src": "1090:2:17" + }, + "returnParameters": { + "id": 7009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7008, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7010, + "src": "1116:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7007, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1116:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1115:9:17" + }, + "scope": 7159, + "src": "1066:59:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ecebe00", + "id": 7017, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "nonces", + "nameLocation": "1140:6:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7012, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1155:5:17", + "nodeType": "VariableDeclaration", + "scope": 7017, + "src": "1147:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1147:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1146:15:17" + }, + "returnParameters": { + "id": 7016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7015, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7017, + "src": "1185:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1185:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1184:9:17" + }, + "scope": 7159, + "src": "1131:63:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d505accf", + "id": 7034, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "1209:6:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7019, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1224:5:17", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "1216:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7018, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1216:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7021, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1239:7:17", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "1231:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1231:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7023, + "mutability": "mutable", + "name": "value", + "nameLocation": "1256:5:17", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "1248:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1248:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7025, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "1271:8:17", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "1263:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1263:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7027, + "mutability": "mutable", + "name": "v", + "nameLocation": "1287:1:17", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "1281:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 7026, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1281:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7029, + "mutability": "mutable", + "name": "r", + "nameLocation": "1298:1:17", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "1290:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7028, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1290:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7031, + "mutability": "mutable", + "name": "s", + "nameLocation": "1309:1:17", + "nodeType": "VariableDeclaration", + "scope": 7034, + "src": "1301:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7030, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1301:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1215:96:17" + }, + "returnParameters": { + "id": 7033, + "nodeType": "ParameterList", + "parameters": [], + "src": "1328:0:17" + }, + "scope": 7159, + "src": "1200:129:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "eventSelector": "4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f", + "id": 7042, + "name": "Mint", + "nameLocation": "1341:4:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 7041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7036, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1362:6:17", + "nodeType": "VariableDeclaration", + "scope": 7042, + "src": "1346:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7035, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1346:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7038, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "1378:7:17", + "nodeType": "VariableDeclaration", + "scope": 7042, + "src": "1370:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7037, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1370:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7040, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "1395:7:17", + "nodeType": "VariableDeclaration", + "scope": 7042, + "src": "1387:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7039, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1387:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1345:58:17" + }, + "src": "1335:69:17" + }, + { + "anonymous": false, + "eventSelector": "dccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496", + "id": 7052, + "name": "Burn", + "nameLocation": "1415:4:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 7051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7044, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1436:6:17", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "1420:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1420:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7046, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "1452:7:17", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "1444:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7048, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "1469:7:17", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "1461:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1461:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7050, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1494:2:17", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "1478:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1478:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1419:78:17" + }, + "src": "1409:89:17" + }, + { + "anonymous": false, + "eventSelector": "d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "id": 7066, + "name": "Swap", + "nameLocation": "1509:4:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 7065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7054, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1539:6:17", + "nodeType": "VariableDeclaration", + "scope": 7066, + "src": "1523:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1523:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7056, + "indexed": false, + "mutability": "mutable", + "name": "amount0In", + "nameLocation": "1563:9:17", + "nodeType": "VariableDeclaration", + "scope": 7066, + "src": "1555:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1555:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7058, + "indexed": false, + "mutability": "mutable", + "name": "amount1In", + "nameLocation": "1590:9:17", + "nodeType": "VariableDeclaration", + "scope": 7066, + "src": "1582:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1582:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7060, + "indexed": false, + "mutability": "mutable", + "name": "amount0Out", + "nameLocation": "1617:10:17", + "nodeType": "VariableDeclaration", + "scope": 7066, + "src": "1609:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7059, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1609:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7062, + "indexed": false, + "mutability": "mutable", + "name": "amount1Out", + "nameLocation": "1645:10:17", + "nodeType": "VariableDeclaration", + "scope": 7066, + "src": "1637:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1637:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7064, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1681:2:17", + "nodeType": "VariableDeclaration", + "scope": 7066, + "src": "1665:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7063, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1665:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1513:176:17" + }, + "src": "1503:187:17" + }, + { + "anonymous": false, + "eventSelector": "1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1", + "id": 7072, + "name": "Sync", + "nameLocation": "1701:4:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 7071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7068, + "indexed": false, + "mutability": "mutable", + "name": "reserve0", + "nameLocation": "1714:8:17", + "nodeType": "VariableDeclaration", + "scope": 7072, + "src": "1706:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 7067, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1706:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7070, + "indexed": false, + "mutability": "mutable", + "name": "reserve1", + "nameLocation": "1732:8:17", + "nodeType": "VariableDeclaration", + "scope": 7072, + "src": "1724:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 7069, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "1724:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "1705:36:17" + }, + "src": "1695:47:17" + }, + { + "functionSelector": "ba9a7a56", + "id": 7077, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "MINIMUM_LIQUIDITY", + "nameLocation": "1757:17:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7073, + "nodeType": "ParameterList", + "parameters": [], + "src": "1774:2:17" + }, + "returnParameters": { + "id": 7076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7075, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7077, + "src": "1800:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1800:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1799:9:17" + }, + "scope": 7159, + "src": "1748:61:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c45a0155", + "id": 7082, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nameLocation": "1824:7:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7078, + "nodeType": "ParameterList", + "parameters": [], + "src": "1831:2:17" + }, + "returnParameters": { + "id": 7081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7080, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7082, + "src": "1857:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7079, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1857:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1856:9:17" + }, + "scope": 7159, + "src": "1815:51:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0dfe1681", + "id": 7087, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "token0", + "nameLocation": "1881:6:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7083, + "nodeType": "ParameterList", + "parameters": [], + "src": "1887:2:17" + }, + "returnParameters": { + "id": 7086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7085, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7087, + "src": "1913:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7084, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1913:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1912:9:17" + }, + "scope": 7159, + "src": "1872:50:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d21220a7", + "id": 7092, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "token1", + "nameLocation": "1937:6:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7088, + "nodeType": "ParameterList", + "parameters": [], + "src": "1943:2:17" + }, + "returnParameters": { + "id": 7091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7090, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7092, + "src": "1969:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7089, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1969:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1968:9:17" + }, + "scope": 7159, + "src": "1928:50:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0902f1ac", + "id": 7101, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nameLocation": "1993:11:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7093, + "nodeType": "ParameterList", + "parameters": [], + "src": "2004:2:17" + }, + "returnParameters": { + "id": 7100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7095, + "mutability": "mutable", + "name": "reserve0", + "nameLocation": "2038:8:17", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "2030:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 7094, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2030:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7097, + "mutability": "mutable", + "name": "reserve1", + "nameLocation": "2056:8:17", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "2048:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 7096, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "2048:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7099, + "mutability": "mutable", + "name": "blockTimestampLast", + "nameLocation": "2073:18:17", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "2066:25:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 7098, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2066:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "2029:63:17" + }, + "scope": 7159, + "src": "1984:109:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5909c0d5", + "id": 7106, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "price0CumulativeLast", + "nameLocation": "2108:20:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7102, + "nodeType": "ParameterList", + "parameters": [], + "src": "2128:2:17" + }, + "returnParameters": { + "id": 7105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7104, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7106, + "src": "2154:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2154:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2153:9:17" + }, + "scope": 7159, + "src": "2099:64:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a3d5493", + "id": 7111, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "price1CumulativeLast", + "nameLocation": "2178:20:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7107, + "nodeType": "ParameterList", + "parameters": [], + "src": "2198:2:17" + }, + "returnParameters": { + "id": 7110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7109, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7111, + "src": "2224:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2224:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2223:9:17" + }, + "scope": 7159, + "src": "2169:64:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7464fc3d", + "id": 7116, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "kLast", + "nameLocation": "2248:5:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7112, + "nodeType": "ParameterList", + "parameters": [], + "src": "2253:2:17" + }, + "returnParameters": { + "id": 7115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7114, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7116, + "src": "2279:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2279:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2278:9:17" + }, + "scope": 7159, + "src": "2239:49:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6a627842", + "id": 7123, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "2303:4:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7118, + "mutability": "mutable", + "name": "to", + "nameLocation": "2316:2:17", + "nodeType": "VariableDeclaration", + "scope": 7123, + "src": "2308:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2308:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2307:12:17" + }, + "returnParameters": { + "id": 7122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7121, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "2346:9:17", + "nodeType": "VariableDeclaration", + "scope": 7123, + "src": "2338:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2338:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2337:19:17" + }, + "scope": 7159, + "src": "2294:63:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "89afcb44", + "id": 7132, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "2372:4:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7125, + "mutability": "mutable", + "name": "to", + "nameLocation": "2385:2:17", + "nodeType": "VariableDeclaration", + "scope": 7132, + "src": "2377:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2377:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2376:12:17" + }, + "returnParameters": { + "id": 7131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7128, + "mutability": "mutable", + "name": "amount0", + "nameLocation": "2415:7:17", + "nodeType": "VariableDeclaration", + "scope": 7132, + "src": "2407:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2407:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7130, + "mutability": "mutable", + "name": "amount1", + "nameLocation": "2432:7:17", + "nodeType": "VariableDeclaration", + "scope": 7132, + "src": "2424:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2424:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2406:34:17" + }, + "scope": 7159, + "src": "2363:78:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "022c0d9f", + "id": 7143, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swap", + "nameLocation": "2456:4:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7134, + "mutability": "mutable", + "name": "amount0Out", + "nameLocation": "2469:10:17", + "nodeType": "VariableDeclaration", + "scope": 7143, + "src": "2461:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7133, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2461:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7136, + "mutability": "mutable", + "name": "amount1Out", + "nameLocation": "2489:10:17", + "nodeType": "VariableDeclaration", + "scope": 7143, + "src": "2481:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2481:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7138, + "mutability": "mutable", + "name": "to", + "nameLocation": "2509:2:17", + "nodeType": "VariableDeclaration", + "scope": 7143, + "src": "2501:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2501:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7140, + "mutability": "mutable", + "name": "data", + "nameLocation": "2528:4:17", + "nodeType": "VariableDeclaration", + "scope": 7143, + "src": "2513:19:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7139, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2513:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2460:73:17" + }, + "returnParameters": { + "id": 7142, + "nodeType": "ParameterList", + "parameters": [], + "src": "2542:0:17" + }, + "scope": 7159, + "src": "2447:96:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bc25cf77", + "id": 7148, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "skim", + "nameLocation": "2558:4:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7145, + "mutability": "mutable", + "name": "to", + "nameLocation": "2571:2:17", + "nodeType": "VariableDeclaration", + "scope": 7148, + "src": "2563:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2563:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2562:12:17" + }, + "returnParameters": { + "id": 7147, + "nodeType": "ParameterList", + "parameters": [], + "src": "2583:0:17" + }, + "scope": 7159, + "src": "2549:35:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fff6cae9", + "id": 7151, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sync", + "nameLocation": "2599:4:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7149, + "nodeType": "ParameterList", + "parameters": [], + "src": "2603:2:17" + }, + "returnParameters": { + "id": 7150, + "nodeType": "ParameterList", + "parameters": [], + "src": "2614:0:17" + }, + "scope": 7159, + "src": "2590:25:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "485cc955", + "id": 7158, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "2630:10:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7153, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7158, + "src": "2641:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2641:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7155, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7158, + "src": "2650:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2650:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2640:18:17" + }, + "returnParameters": { + "id": 7157, + "nodeType": "ParameterList", + "parameters": [], + "src": "2667:0:17" + }, + "scope": 7159, + "src": "2621:47:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 7160, + "src": "160:2510:17", + "usedErrors": [], + "usedEvents": [ + 6927, + 6935, + 7042, + 7052, + 7066, + 7072 + ] + } + ], + "src": "37:2634:17" + }, + "id": 17 + }, + "src/interfaces/IWNATIVE.sol": { + "ast": { + "absolutePath": "src/interfaces/IWNATIVE.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "IWNATIVE": [ + 7175 + ] + }, + "id": 7176, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7161, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:18" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 7163, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7176, + "sourceUnit": 480, + "src": "59:70:18", + "symbolAliases": [ + { + "foreign": { + "id": 7162, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:18", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 7165, + "name": "IERC20", + "nameLocations": [ + "246:6:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "246:6:18" + }, + "id": 7166, + "nodeType": "InheritanceSpecifier", + "src": "246:6:18" + } + ], + "canonicalName": "IWNATIVE", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 7164, + "nodeType": "StructuredDocumentation", + "src": "131:92:18", + "text": " @title WNATIVE Interface\n @notice Required interface of Wrapped NATIVE contract" + }, + "fullyImplemented": false, + "id": 7175, + "linearizedBaseContracts": [ + 7175, + 479 + ], + "name": "IWNATIVE", + "nameLocation": "234:8:18", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "d0e30db0", + "id": 7169, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "268:7:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7167, + "nodeType": "ParameterList", + "parameters": [], + "src": "275:2:18" + }, + "returnParameters": { + "id": 7168, + "nodeType": "ParameterList", + "parameters": [], + "src": "294:0:18" + }, + "scope": 7175, + "src": "259:36:18", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2e1a7d4d", + "id": 7174, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "310:8:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7171, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7174, + "src": "319:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7170, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "319:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "318:9:18" + }, + "returnParameters": { + "id": 7173, + "nodeType": "ParameterList", + "parameters": [], + "src": "336:0:18" + }, + "scope": 7175, + "src": "301:36:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 7176, + "src": "224:115:18", + "usedErrors": [], + "usedEvents": [ + 413, + 422 + ] + } + ], + "src": "33:307:18" + }, + "id": 18 + }, + "src/libraries/BinHelper.sol": { + "ast": { + "absolutePath": "src/libraries/BinHelper.sol", + "exportedSymbols": { + "BinHelper": [ + 8134 + ], + "Constants": [ + 8172 + ], + "FeeHelper": [ + 8365 + ], + "IERC20": [ + 479 + ], + "PackedUint128Math": [ + 11387 + ], + "PairParameterHelper": [ + 10096 + ], + "PriceHelper": [ + 10270 + ], + "SafeCast": [ + 12135 + ], + "TokenHelper": [ + 10562 + ], + "Uint256x256Math": [ + 12771 + ] + }, + "id": 8135, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7177, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:19" + }, + { + "absolutePath": "src/libraries/math/PackedUint128Math.sol", + "file": "./math/PackedUint128Math.sol", + "id": 7179, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 11388, + "src": "59:63:19", + "symbolAliases": [ + { + "foreign": { + "id": 7178, + "name": "PackedUint128Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11387, + "src": "67:17:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Uint256x256Math.sol", + "file": "./math/Uint256x256Math.sol", + "id": 7181, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 12772, + "src": "123:59:19", + "symbolAliases": [ + { + "foreign": { + "id": 7180, + "name": "Uint256x256Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12771, + "src": "131:15:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/SafeCast.sol", + "file": "./math/SafeCast.sol", + "id": 7183, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 12136, + "src": "183:45:19", + "symbolAliases": [ + { + "foreign": { + "id": 7182, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12135, + "src": "191:8:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "./Constants.sol", + "id": 7185, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 8173, + "src": "229:42:19", + "symbolAliases": [ + { + "foreign": { + "id": 7184, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "237:9:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/PairParameterHelper.sol", + "file": "./PairParameterHelper.sol", + "id": 7187, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 10097, + "src": "272:62:19", + "symbolAliases": [ + { + "foreign": { + "id": 7186, + "name": "PairParameterHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10096, + "src": "280:19:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/FeeHelper.sol", + "file": "./FeeHelper.sol", + "id": 7189, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 8366, + "src": "335:42:19", + "symbolAliases": [ + { + "foreign": { + "id": 7188, + "name": "FeeHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8365, + "src": "343:9:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/PriceHelper.sol", + "file": "./PriceHelper.sol", + "id": 7191, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 10271, + "src": "378:46:19", + "symbolAliases": [ + { + "foreign": { + "id": 7190, + "name": "PriceHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10270, + "src": "386:11:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/TokenHelper.sol", + "file": "./TokenHelper.sol", + "id": 7194, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8135, + "sourceUnit": 10563, + "src": "425:54:19", + "symbolAliases": [ + { + "foreign": { + "id": 7192, + "name": "TokenHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10562, + "src": "433:11:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 7193, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "446:6:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BinHelper", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 7195, + "nodeType": "StructuredDocumentation", + "src": "481:125:19", + "text": " @title Liquidity Book Bin Helper Library\n @notice This library contains functions to help interaction with bins." + }, + "fullyImplemented": true, + "id": 8134, + "linearizedBaseContracts": [ + 8134 + ], + "name": "BinHelper", + "nameLocation": "615:9:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 7198, + "libraryName": { + "id": 7196, + "name": "PackedUint128Math", + "nameLocations": [ + "637:17:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11387, + "src": "637:17:19" + }, + "nodeType": "UsingForDirective", + "src": "631:36:19", + "typeName": { + "id": 7197, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "659:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 7201, + "libraryName": { + "id": 7199, + "name": "PackedUint128Math", + "nameLocations": [ + "678:17:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11387, + "src": "678:17:19" + }, + "nodeType": "UsingForDirective", + "src": "672:36:19", + "typeName": { + "id": 7200, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "700:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + }, + { + "global": false, + "id": 7204, + "libraryName": { + "id": 7202, + "name": "Uint256x256Math", + "nameLocations": [ + "719:15:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12771, + "src": "719:15:19" + }, + "nodeType": "UsingForDirective", + "src": "713:34:19", + "typeName": { + "id": 7203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "739:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 7207, + "libraryName": { + "id": 7205, + "name": "PriceHelper", + "nameLocations": [ + "758:11:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10270, + "src": "758:11:19" + }, + "nodeType": "UsingForDirective", + "src": "752:29:19", + "typeName": { + "id": 7206, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "774:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + }, + { + "global": false, + "id": 7210, + "libraryName": { + "id": 7208, + "name": "SafeCast", + "nameLocations": [ + "792:8:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12135, + "src": "792:8:19" + }, + "nodeType": "UsingForDirective", + "src": "786:27:19", + "typeName": { + "id": 7209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "805:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 7213, + "libraryName": { + "id": 7211, + "name": "PairParameterHelper", + "nameLocations": [ + "824:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10096, + "src": "824:19:19" + }, + "nodeType": "UsingForDirective", + "src": "818:38:19", + "typeName": { + "id": 7212, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "848:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 7216, + "libraryName": { + "id": 7214, + "name": "FeeHelper", + "nameLocations": [ + "867:9:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8365, + "src": "867:9:19" + }, + "nodeType": "UsingForDirective", + "src": "861:28:19", + "typeName": { + "id": 7215, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "881:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + }, + { + "global": false, + "id": 7220, + "libraryName": { + "id": 7217, + "name": "TokenHelper", + "nameLocations": [ + "900:11:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10562, + "src": "900:11:19" + }, + "nodeType": "UsingForDirective", + "src": "894:29:19", + "typeName": { + "id": 7219, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7218, + "name": "IERC20", + "nameLocations": [ + "916:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "916:6:19" + }, + "referencedDeclaration": 479, + "src": "916:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + }, + { + "errorSelector": "89ef61c4", + "id": 7224, + "name": "BinHelper__CompositionFactorFlawed", + "nameLocation": "935:34:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7222, + "mutability": "mutable", + "name": "id", + "nameLocation": "977:2:19", + "nodeType": "VariableDeclaration", + "scope": 7224, + "src": "970:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7221, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "970:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "969:11:19" + }, + "src": "929:52:19" + }, + { + "errorSelector": "63f1e01f", + "id": 7226, + "name": "BinHelper__LiquidityOverflow", + "nameLocation": "992:28:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7225, + "nodeType": "ParameterList", + "parameters": [], + "src": "1020:2:19" + }, + "src": "986:37:19" + }, + { + "errorSelector": "a2d76527", + "id": 7228, + "name": "BinHelper__MaxLiquidityPerBinExceeded", + "nameLocation": "1034:37:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7227, + "nodeType": "ParameterList", + "parameters": [], + "src": "1071:2:19" + }, + "src": "1028:46:19" + }, + { + "body": { + "id": 7293, + "nodeType": "Block", + "src": "1615:504:19", + "statements": [ + { + "assignments": [ + 7241, + 7243 + ], + "declarations": [ + { + "constant": false, + "id": 7241, + "mutability": "mutable", + "name": "binReserveX", + "nameLocation": "1634:11:19", + "nodeType": "VariableDeclaration", + "scope": 7293, + "src": "1626:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7240, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1626:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7243, + "mutability": "mutable", + "name": "binReserveY", + "nameLocation": "1655:11:19", + "nodeType": "VariableDeclaration", + "scope": 7293, + "src": "1647:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7242, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1647:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7247, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7244, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7231, + "src": "1670:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1682:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "1670:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 7246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1670:20:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1625:65:19" + }, + { + "assignments": [ + 7249 + ], + "declarations": [ + { + "constant": false, + "id": 7249, + "mutability": "mutable", + "name": "amountXOutFromBin", + "nameLocation": "1709:17:19", + "nodeType": "VariableDeclaration", + "scope": 7293, + "src": "1701:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7248, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1701:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7250, + "nodeType": "VariableDeclarationStatement", + "src": "1701:25:19" + }, + { + "assignments": [ + 7252 + ], + "declarations": [ + { + "constant": false, + "id": 7252, + "mutability": "mutable", + "name": "amountYOutFromBin", + "nameLocation": "1744:17:19", + "nodeType": "VariableDeclaration", + "scope": 7293, + "src": "1736:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7251, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1736:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7253, + "nodeType": "VariableDeclarationStatement", + "src": "1736:25:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7254, + "name": "binReserveX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7241, + "src": "1776:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 7255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1790:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1776:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7269, + "nodeType": "IfStatement", + "src": "1772:132:19", + "trueBody": { + "id": 7268, + "nodeType": "Block", + "src": "1793:111:19", + "statements": [ + { + "expression": { + "id": 7266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7257, + "name": "amountXOutFromBin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "1807:17:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "arguments": [ + { + "id": 7260, + "name": "binReserveX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7241, + "src": "1857:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 7261, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7235, + "src": "1870:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7258, + "name": "amountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7233, + "src": "1828:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1841:15:19", + "memberName": "mulDivRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 12400, + "src": "1828:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 7262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1828:54:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7263, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1827:56:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1884:7:19", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "1827:64:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 7265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1827:66:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "1807:86:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7267, + "nodeType": "ExpressionStatement", + "src": "1807:86:19" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7270, + "name": "binReserveY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7243, + "src": "1918:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 7271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1932:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1918:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7285, + "nodeType": "IfStatement", + "src": "1914:132:19", + "trueBody": { + "id": 7284, + "nodeType": "Block", + "src": "1935:111:19", + "statements": [ + { + "expression": { + "id": 7282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7273, + "name": "amountYOutFromBin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7252, + "src": "1949:17:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "arguments": [ + { + "id": 7276, + "name": "binReserveY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7243, + "src": "1999:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 7277, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7235, + "src": "2012:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7274, + "name": "amountToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7233, + "src": "1970:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1983:15:19", + "memberName": "mulDivRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 12400, + "src": "1970:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 7278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1970:54:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7279, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1969:56:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2026:7:19", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "1969:64:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 7281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1969:66:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "1949:86:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7283, + "nodeType": "ExpressionStatement", + "src": "1949:86:19" + } + ] + } + }, + { + "expression": { + "id": 7291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7286, + "name": "amountsOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7238, + "src": "2056:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 7289, + "name": "amountYOutFromBin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7252, + "src": "2094:17:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 7287, + "name": "amountXOutFromBin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "2069:17:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2087:6:19", + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11067, + "src": "2069:24:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (bytes32)" + } + }, + "id": 7290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2069:43:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2056:56:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7292, + "nodeType": "ExpressionStatement", + "src": "2056:56:19" + } + ] + }, + "documentation": { + "id": 7229, + "nodeType": "StructuredDocumentation", + "src": "1080:368:19", + "text": " @dev Returns the amount of tokens that will be received when burning the given amount of liquidity\n @param binReserves The reserves of the bin\n @param amountToBurn The amount of liquidity to burn\n @param totalSupply The total supply of the liquidity book\n @return amountsOut The encoded amount of tokens that will be received" + }, + "id": 7294, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountOutOfBin", + "nameLocation": "1462:17:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7231, + "mutability": "mutable", + "name": "binReserves", + "nameLocation": "1488:11:19", + "nodeType": "VariableDeclaration", + "scope": 7294, + "src": "1480:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7230, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1480:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7233, + "mutability": "mutable", + "name": "amountToBurn", + "nameLocation": "1509:12:19", + "nodeType": "VariableDeclaration", + "scope": 7294, + "src": "1501:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1501:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7235, + "mutability": "mutable", + "name": "totalSupply", + "nameLocation": "1531:11:19", + "nodeType": "VariableDeclaration", + "scope": 7294, + "src": "1523:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7234, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1523:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1479:64:19" + }, + "returnParameters": { + "id": 7239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7238, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "1599:10:19", + "nodeType": "VariableDeclaration", + "scope": 7294, + "src": "1591:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7237, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1591:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1590:20:19" + }, + "scope": 8134, + "src": "1453:666:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7471, + "nodeType": "Block", + "src": "2975:1472:19", + "statements": [ + { + "assignments": [ + 7311, + 7313 + ], + "declarations": [ + { + "constant": false, + "id": 7311, + "mutability": "mutable", + "name": "x", + "nameLocation": "2994:1:19", + "nodeType": "VariableDeclaration", + "scope": 7471, + "src": "2986:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2986:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7313, + "mutability": "mutable", + "name": "y", + "nameLocation": "3005:1:19", + "nodeType": "VariableDeclaration", + "scope": 7471, + "src": "2997:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7312, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2997:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7317, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7314, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7299, + "src": "3010:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3020:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "3010:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 7316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3010:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2985:43:19" + }, + { + "assignments": [ + 7319 + ], + "declarations": [ + { + "constant": false, + "id": 7319, + "mutability": "mutable", + "name": "userLiquidity", + "nameLocation": "3047:13:19", + "nodeType": "VariableDeclaration", + "scope": 7471, + "src": "3039:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3039:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7325, + "initialValue": { + "arguments": [ + { + "id": 7321, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7311, + "src": "3076:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7322, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7313, + "src": "3079:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7323, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7301, + "src": "3082:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7320, + "name": "getLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7497, + 7555 + ], + "referencedDeclaration": 7555, + "src": "3063:12:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 7324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3063:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3039:49:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7326, + "name": "userLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7319, + "src": "3102:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3119:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3102:18:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7333, + "nodeType": "IfStatement", + "src": "3098:37:19", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 7329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3130:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 7330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3133:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 7331, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3129:6:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 7309, + "id": 7332, + "nodeType": "Return", + "src": "3122:13:19" + } + }, + { + "assignments": [ + 7335 + ], + "declarations": [ + { + "constant": false, + "id": 7335, + "mutability": "mutable", + "name": "binLiquidity", + "nameLocation": "3154:12:19", + "nodeType": "VariableDeclaration", + "scope": 7471, + "src": "3146:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3146:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7340, + "initialValue": { + "arguments": [ + { + "id": 7337, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7297, + "src": "3182:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7338, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7301, + "src": "3195:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7336, + "name": "getLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7497, + 7555 + ], + "referencedDeclaration": 7497, + "src": "3169:12:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes32,uint256) pure returns (uint256)" + } + }, + "id": 7339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3169:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3146:55:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7341, + "name": "binLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7335, + "src": "3215:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3231:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3215:17:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7344, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7303, + "src": "3236:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3251:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3236:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3215:37:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7354, + "nodeType": "IfStatement", + "src": "3211:83:19", + "trueBody": { + "expression": { + "components": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7348, + "name": "userLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7319, + "src": "3262:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3276:4:19", + "memberName": "sqrt", + "nodeType": "MemberAccess", + "referencedDeclaration": 12770, + "src": "3262:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 7350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3262:20:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7351, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7299, + "src": "3284:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 7352, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3261:33:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", + "typeString": "tuple(uint256,bytes32)" + } + }, + "functionReturnParameters": 7309, + "id": 7353, + "nodeType": "Return", + "src": "3254:40:19" + } + }, + { + "expression": { + "id": 7361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7355, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7306, + "src": "3305:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 7358, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7303, + "src": "3344:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7359, + "name": "binLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7335, + "src": "3357:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7356, + "name": "userLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7319, + "src": "3314:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3328:15:19", + "memberName": "mulDivRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 12400, + "src": "3314:29:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 7360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3314:56:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3305:65:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7362, + "nodeType": "ExpressionStatement", + "src": "3305:65:19" + }, + { + "assignments": [ + 7364 + ], + "declarations": [ + { + "constant": false, + "id": 7364, + "mutability": "mutable", + "name": "effectiveLiquidity", + "nameLocation": "3388:18:19", + "nodeType": "VariableDeclaration", + "scope": 7471, + "src": "3380:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7363, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3380:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7370, + "initialValue": { + "arguments": [ + { + "id": 7367, + "name": "binLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7335, + "src": "3430:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7368, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7303, + "src": "3444:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7365, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7306, + "src": "3409:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3416:13:19", + "memberName": "mulDivRoundUp", + "nodeType": "MemberAccess", + "referencedDeclaration": 12433, + "src": "3409:20:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 7369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3409:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3380:76:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7371, + "name": "userLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7319, + "src": "3471:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7372, + "name": "effectiveLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7364, + "src": "3487:18:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3471:34:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7451, + "nodeType": "IfStatement", + "src": "3467:769:19", + "trueBody": { + "id": 7450, + "nodeType": "Block", + "src": "3507:729:19", + "statements": [ + { + "assignments": [ + 7375 + ], + "declarations": [ + { + "constant": false, + "id": 7375, + "mutability": "mutable", + "name": "deltaLiquidity", + "nameLocation": "3529:14:19", + "nodeType": "VariableDeclaration", + "scope": 7450, + "src": "3521:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3521:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7379, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7376, + "name": "userLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7319, + "src": "3546:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7377, + "name": "effectiveLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7364, + "src": "3562:18:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3546:34:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3521:59:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7380, + "name": "deltaLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "3702:14:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 7381, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "3720:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3730:5:19", + "memberName": "SCALE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8145, + "src": "3720:15:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3702:33:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7412, + "nodeType": "IfStatement", + "src": "3698:277:19", + "trueBody": { + "id": 7411, + "nodeType": "Block", + "src": "3737:238:19", + "statements": [ + { + "assignments": [ + 7385 + ], + "declarations": [ + { + "constant": false, + "id": 7385, + "mutability": "mutable", + "name": "deltaY", + "nameLocation": "3763:6:19", + "nodeType": "VariableDeclaration", + "scope": 7411, + "src": "3755:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3755:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7390, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7386, + "name": "deltaLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "3772:14:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "expression": { + "id": 7387, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "3790:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3800:12:19", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "3790:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3772:40:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3755:57:19" + }, + { + "expression": { + "id": 7398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7391, + "name": "deltaY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "3830:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7392, + "name": "deltaY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "3839:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7393, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7313, + "src": "3848:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3839:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 7396, + "name": "deltaY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "3856:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "3839:23:19", + "trueExpression": { + "id": 7395, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7313, + "src": "3852:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3830:32:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7399, + "nodeType": "ExpressionStatement", + "src": "3830:32:19" + }, + { + "expression": { + "id": 7402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7400, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7313, + "src": "3881:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 7401, + "name": "deltaY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "3886:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3881:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7403, + "nodeType": "ExpressionStatement", + "src": "3881:11:19" + }, + { + "expression": { + "id": 7409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7404, + "name": "deltaLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "3910:14:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7405, + "name": "deltaY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7385, + "src": "3928:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "expression": { + "id": 7406, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "3938:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3948:12:19", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "3938:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3928:32:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3910:50:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7410, + "nodeType": "ExpressionStatement", + "src": "3910:50:19" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7413, + "name": "deltaLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "3993:14:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 7414, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7301, + "src": "4011:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3993:23:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7436, + "nodeType": "IfStatement", + "src": "3989:181:19", + "trueBody": { + "id": 7435, + "nodeType": "Block", + "src": "4018:152:19", + "statements": [ + { + "assignments": [ + 7417 + ], + "declarations": [ + { + "constant": false, + "id": 7417, + "mutability": "mutable", + "name": "deltaX", + "nameLocation": "4044:6:19", + "nodeType": "VariableDeclaration", + "scope": 7435, + "src": "4036:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4036:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7421, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7418, + "name": "deltaLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7375, + "src": "4053:14:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7419, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7301, + "src": "4070:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4053:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4036:39:19" + }, + { + "expression": { + "id": 7429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7422, + "name": "deltaX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "4093:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7423, + "name": "deltaX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "4102:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7424, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7311, + "src": "4111:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4102:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 7427, + "name": "deltaX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "4119:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "4102:23:19", + "trueExpression": { + "id": 7426, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7311, + "src": "4115:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4093:32:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7430, + "nodeType": "ExpressionStatement", + "src": "4093:32:19" + }, + { + "expression": { + "id": 7433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7431, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7311, + "src": "4144:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 7432, + "name": "deltaX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "4149:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4144:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7434, + "nodeType": "ExpressionStatement", + "src": "4144:11:19" + } + ] + } + }, + { + "expression": { + "id": 7448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7437, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7299, + "src": "4184:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 7445, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7313, + "src": "4222:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4214:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 7443, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4214:7:19", + "typeDescriptions": {} + } + }, + "id": 7446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4214:10:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "arguments": [ + { + "id": 7440, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7311, + "src": "4204:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4196:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 7438, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4196:7:19", + "typeDescriptions": {} + } + }, + "id": 7441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4196:10:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4207:6:19", + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11067, + "src": "4196:17:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (bytes32)" + } + }, + "id": 7447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4196:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4184:41:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7449, + "nodeType": "ExpressionStatement", + "src": "4184:41:19" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 7455, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7299, + "src": "4279:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7453, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7297, + "src": "4263:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4275:3:19", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 11195, + "src": "4263:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 7456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4263:26:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7457, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7301, + "src": "4291:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7452, + "name": "getLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7497, + 7555 + ], + "referencedDeclaration": 7497, + "src": "4250:12:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes32,uint256) pure returns (uint256)" + } + }, + "id": 7458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4250:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 7459, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "4300:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4310:21:19", + "memberName": "MAX_LIQUIDITY_PER_BIN", + "nodeType": "MemberAccess", + "referencedDeclaration": 8165, + "src": "4300:31:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4250:81:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7466, + "nodeType": "IfStatement", + "src": "4246:158:19", + "trueBody": { + "id": 7465, + "nodeType": "Block", + "src": "4333:71:19", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7462, + "name": "BinHelper__MaxLiquidityPerBinExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7228, + "src": "4354:37:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4354:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7464, + "nodeType": "RevertStatement", + "src": "4347:46:19" + } + ] + } + }, + { + "expression": { + "components": [ + { + "id": 7467, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7306, + "src": "4422:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7468, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7299, + "src": "4430:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 7469, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4421:19:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", + "typeString": "tuple(uint256,bytes32)" + } + }, + "functionReturnParameters": 7309, + "id": 7470, + "nodeType": "Return", + "src": "4414:26:19" + } + ] + }, + "documentation": { + "id": 7295, + "nodeType": "StructuredDocumentation", + "src": "2125:634:19", + "text": " @dev Returns the share and the effective amounts in when adding liquidity\n @param binReserves The reserves of the bin\n @param amountsIn The amounts of tokens to add\n @param price The price of the bin\n @param totalSupply The total supply of the liquidity book\n @return shares The share of the liquidity book that the user will receive\n @return effectiveAmountsIn The encoded effective amounts of tokens that the user will add.\n This is the amount of tokens that the user will actually add to the liquidity book,\n and will always be less than or equal to the amountsIn." + }, + "id": 7472, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSharesAndEffectiveAmountsIn", + "nameLocation": "2773:30:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7297, + "mutability": "mutable", + "name": "binReserves", + "nameLocation": "2812:11:19", + "nodeType": "VariableDeclaration", + "scope": 7472, + "src": "2804:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7296, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2804:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7299, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "2833:9:19", + "nodeType": "VariableDeclaration", + "scope": 7472, + "src": "2825:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2825:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7301, + "mutability": "mutable", + "name": "price", + "nameLocation": "2852:5:19", + "nodeType": "VariableDeclaration", + "scope": 7472, + "src": "2844:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2844:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7303, + "mutability": "mutable", + "name": "totalSupply", + "nameLocation": "2867:11:19", + "nodeType": "VariableDeclaration", + "scope": 7472, + "src": "2859:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2859:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2803:76:19" + }, + "returnParameters": { + "id": 7309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7306, + "mutability": "mutable", + "name": "shares", + "nameLocation": "2935:6:19", + "nodeType": "VariableDeclaration", + "scope": 7472, + "src": "2927:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2927:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7308, + "mutability": "mutable", + "name": "effectiveAmountsIn", + "nameLocation": "2951:18:19", + "nodeType": "VariableDeclaration", + "scope": 7472, + "src": "2943:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7307, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2943:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2926:44:19" + }, + "scope": 8134, + "src": "2764:1683:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7496, + "nodeType": "Block", + "src": "4798:100:19", + "statements": [ + { + "assignments": [ + 7483, + 7485 + ], + "declarations": [ + { + "constant": false, + "id": 7483, + "mutability": "mutable", + "name": "x", + "nameLocation": "4817:1:19", + "nodeType": "VariableDeclaration", + "scope": 7496, + "src": "4809:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4809:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7485, + "mutability": "mutable", + "name": "y", + "nameLocation": "4828:1:19", + "nodeType": "VariableDeclaration", + "scope": 7496, + "src": "4820:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4820:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7489, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7486, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7475, + "src": "4833:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4841:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "4833:14:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 7488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4833:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4808:41:19" + }, + { + "expression": { + "arguments": [ + { + "id": 7491, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7483, + "src": "4879:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7492, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7485, + "src": "4882:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7493, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7477, + "src": "4885:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7490, + "name": "getLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7497, + 7555 + ], + "referencedDeclaration": 7555, + "src": "4866:12:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 7494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4866:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7481, + "id": 7495, + "nodeType": "Return", + "src": "4859:32:19" + } + ] + }, + "documentation": { + "id": 7473, + "nodeType": "StructuredDocumentation", + "src": "4453:244:19", + "text": " @dev Returns the amount of liquidity following the constant sum formula `L = price * x + y`\n @param amounts The amounts of tokens\n @param price The price of the bin\n @return liquidity The amount of liquidity" + }, + "id": 7497, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLiquidity", + "nameLocation": "4711:12:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7475, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "4732:7:19", + "nodeType": "VariableDeclaration", + "scope": 7497, + "src": "4724:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7474, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4724:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7477, + "mutability": "mutable", + "name": "price", + "nameLocation": "4749:5:19", + "nodeType": "VariableDeclaration", + "scope": 7497, + "src": "4741:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7476, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4741:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4723:32:19" + }, + "returnParameters": { + "id": 7481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7480, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "4787:9:19", + "nodeType": "VariableDeclaration", + "scope": 7497, + "src": "4779:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7479, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4779:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4778:19:19" + }, + "scope": 8134, + "src": "4702:196:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7554, + "nodeType": "Block", + "src": "5294:447:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7509, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7500, + "src": "5308:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 7510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5312:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5308:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7529, + "nodeType": "IfStatement", + "src": "5304:182:19", + "trueBody": { + "id": 7528, + "nodeType": "Block", + "src": "5315:171:19", + "statements": [ + { + "id": 7527, + "nodeType": "UncheckedBlock", + "src": "5329:147:19", + "statements": [ + { + "expression": { + "id": 7516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7512, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7507, + "src": "5357:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7513, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7504, + "src": "5369:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7514, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7500, + "src": "5377:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5369:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5357:21:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7517, + "nodeType": "ExpressionStatement", + "src": "5357:21:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7518, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7507, + "src": "5400:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7519, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7500, + "src": "5412:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5400:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 7521, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7504, + "src": "5417:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5400:22:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7526, + "nodeType": "IfStatement", + "src": "5396:65:19", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7523, + "name": "BinHelper__LiquidityOverflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7226, + "src": "5431:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5431:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7525, + "nodeType": "RevertStatement", + "src": "5424:37:19" + } + } + ] + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7530, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7502, + "src": "5499:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 7531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5503:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5499:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7551, + "nodeType": "IfStatement", + "src": "5495:213:19", + "trueBody": { + "id": 7550, + "nodeType": "Block", + "src": "5506:202:19", + "statements": [ + { + "id": 7549, + "nodeType": "UncheckedBlock", + "src": "5520:178:19", + "statements": [ + { + "expression": { + "id": 7536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7533, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7502, + "src": "5548:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "expression": { + "id": 7534, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "5554:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5564:12:19", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "5554:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5548:28:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7537, + "nodeType": "ExpressionStatement", + "src": "5548:28:19" + }, + { + "expression": { + "id": 7540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7538, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7507, + "src": "5594:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7539, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7502, + "src": "5607:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5594:14:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7541, + "nodeType": "ExpressionStatement", + "src": "5594:14:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7542, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7507, + "src": "5631:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7543, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7502, + "src": "5643:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5631:13:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7548, + "nodeType": "IfStatement", + "src": "5627:56:19", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7545, + "name": "BinHelper__LiquidityOverflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7226, + "src": "5653:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5653:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7547, + "nodeType": "RevertStatement", + "src": "5646:37:19" + } + } + ] + } + ] + } + }, + { + "expression": { + "id": 7552, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7507, + "src": "5725:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7508, + "id": 7553, + "nodeType": "Return", + "src": "5718:16:19" + } + ] + }, + "documentation": { + "id": 7498, + "nodeType": "StructuredDocumentation", + "src": "4904:284:19", + "text": " @dev Returns the amount of liquidity following the constant sum formula `L = price * x + y`\n @param x The amount of the token X\n @param y The amount of the token Y\n @param price The price of the bin\n @return liquidity The amount of liquidity" + }, + "id": 7555, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLiquidity", + "nameLocation": "5202:12:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7500, + "mutability": "mutable", + "name": "x", + "nameLocation": "5223:1:19", + "nodeType": "VariableDeclaration", + "scope": 7555, + "src": "5215:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5215:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7502, + "mutability": "mutable", + "name": "y", + "nameLocation": "5234:1:19", + "nodeType": "VariableDeclaration", + "scope": 7555, + "src": "5226:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5226:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7504, + "mutability": "mutable", + "name": "price", + "nameLocation": "5245:5:19", + "nodeType": "VariableDeclaration", + "scope": 7555, + "src": "5237:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5237:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5214:37:19" + }, + "returnParameters": { + "id": 7508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7507, + "mutability": "mutable", + "name": "liquidity", + "nameLocation": "5283:9:19", + "nodeType": "VariableDeclaration", + "scope": 7555, + "src": "5275:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5275:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5274:19:19" + }, + "scope": 8134, + "src": "5193:548:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7596, + "nodeType": "Block", + "src": "6066:186:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 7567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7565, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7562, + "src": "6080:2:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7566, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7560, + "src": "6085:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "6080:13:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 7573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 7570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7568, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7558, + "src": "6098:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313238", + "id": 7569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6109:3:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "6098:14:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 7571, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6097:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 7572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6116:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6097:20:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6080:37:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 7577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7575, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7562, + "src": "6121:2:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7576, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7560, + "src": "6126:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "6121:13:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7580, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7558, + "src": "6146:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6138:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6138:7:19", + "typeDescriptions": {} + } + }, + "id": 7581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6138:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 7584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6162:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 7583, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6162:7:19", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + } + ], + "id": 7582, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "6157:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6157:13:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint128", + "typeString": "type(uint128)" + } + }, + "id": 7586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6171:3:19", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "6157:17:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "6138:36:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6121:53:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6080:94:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7595, + "nodeType": "IfStatement", + "src": "6076:170:19", + "trueBody": { + "id": 7594, + "nodeType": "Block", + "src": "6176:70:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7591, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7562, + "src": "6232:2:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 7590, + "name": "BinHelper__CompositionFactorFlawed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7224, + "src": "6197:34:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint24_$returns$__$", + "typeString": "function (uint24) pure" + } + }, + "id": 7592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6197:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7593, + "nodeType": "RevertStatement", + "src": "6190:45:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 7556, + "nodeType": "StructuredDocumentation", + "src": "5747:232:19", + "text": " @dev Verify that the amounts are correct and that the composition factor is not flawed\n @param amounts The amounts of tokens\n @param activeId The id of the active bin\n @param id The id of the bin" + }, + "id": 7597, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyAmounts", + "nameLocation": "5993:13:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7558, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "6015:7:19", + "nodeType": "VariableDeclaration", + "scope": 7597, + "src": "6007:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7557, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6007:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7560, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "6031:8:19", + "nodeType": "VariableDeclaration", + "scope": 7597, + "src": "6024:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7559, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6024:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7562, + "mutability": "mutable", + "name": "id", + "nameLocation": "6048:2:19", + "nodeType": "VariableDeclaration", + "scope": 7597, + "src": "6041:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7561, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6041:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "6006:45:19" + }, + "returnParameters": { + "id": 7564, + "nodeType": "ParameterList", + "parameters": [], + "src": "6066:0:19" + }, + "scope": 8134, + "src": "5984:268:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7694, + "nodeType": "Block", + "src": "7088:662:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7615, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7610, + "src": "7102:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7112:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7102:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7620, + "nodeType": "IfStatement", + "src": "7098:25:19", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 7618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7122:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 7614, + "id": 7619, + "nodeType": "Return", + "src": "7115:8:19" + } + }, + { + "assignments": [ + 7622, + 7624 + ], + "declarations": [ + { + "constant": false, + "id": 7622, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "7143:7:19", + "nodeType": "VariableDeclaration", + "scope": 7694, + "src": "7135:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7621, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7135:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7624, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "7160:7:19", + "nodeType": "VariableDeclaration", + "scope": 7694, + "src": "7152:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7623, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7152:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7628, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7625, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7606, + "src": "7171:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7181:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "7171:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 7627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7171:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7134:55:19" + }, + { + "assignments": [ + 7630, + 7632 + ], + "declarations": [ + { + "constant": false, + "id": 7630, + "mutability": "mutable", + "name": "receivedAmountX", + "nameLocation": "7208:15:19", + "nodeType": "VariableDeclaration", + "scope": 7694, + "src": "7200:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7629, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7200:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7632, + "mutability": "mutable", + "name": "receivedAmountY", + "nameLocation": "7233:15:19", + "nodeType": "VariableDeclaration", + "scope": 7694, + "src": "7225:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7631, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7225:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7645, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7636, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7606, + "src": "7298:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7634, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7600, + "src": "7282:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7294:3:19", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 11195, + "src": "7282:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 7637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7282:26:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7638, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7610, + "src": "7310:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7639, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7608, + "src": "7318:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 7640, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7610, + "src": "7332:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7318:20:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7633, + "name": "getAmountOutOfBin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7294, + "src": "7264:17:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 7642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7264:75:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7340:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "7264:82:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 7644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7264:84:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7199:149:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7646, + "name": "receivedAmountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7630, + "src": "7363:15:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7647, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7622, + "src": "7381:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "7363:25:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7669, + "name": "receivedAmountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7632, + "src": "7559:15:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7670, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7624, + "src": "7577:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "7559:25:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7692, + "nodeType": "IfStatement", + "src": "7555:189:19", + "trueBody": { + "id": 7691, + "nodeType": "Block", + "src": "7586:158:19", + "statements": [ + { + "assignments": [ + 7673 + ], + "declarations": [ + { + "constant": false, + "id": 7673, + "mutability": "mutable", + "name": "feeX", + "nameLocation": "7608:4:19", + "nodeType": "VariableDeclaration", + "scope": 7691, + "src": "7600:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7672, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7600:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7684, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 7681, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7604, + "src": "7684:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 7679, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7602, + "src": "7661:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7672:11:19", + "memberName": "getTotalFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 9630, + "src": "7661:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint16) pure returns (uint128)" + } + }, + "id": 7682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7661:31:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7674, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7622, + "src": "7616:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7675, + "name": "receivedAmountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7630, + "src": "7626:15:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "7616:25:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 7677, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7615:27:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7643:17:19", + "memberName": "getCompositionFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 8321, + "src": "7615:45:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (uint128)" + } + }, + "id": 7683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7615:78:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7600:93:19" + }, + { + "expression": { + "id": 7689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7685, + "name": "fees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7613, + "src": "7708:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7686, + "name": "feeX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7673, + "src": "7715:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7720:11:19", + "memberName": "encodeFirst", + "nodeType": "MemberAccess", + "referencedDeclaration": 11077, + "src": "7715:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7715:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7708:25:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7690, + "nodeType": "ExpressionStatement", + "src": "7708:25:19" + } + ] + } + }, + "id": 7693, + "nodeType": "IfStatement", + "src": "7359:385:19", + "trueBody": { + "id": 7668, + "nodeType": "Block", + "src": "7390:159:19", + "statements": [ + { + "assignments": [ + 7650 + ], + "declarations": [ + { + "constant": false, + "id": 7650, + "mutability": "mutable", + "name": "feeY", + "nameLocation": "7412:4:19", + "nodeType": "VariableDeclaration", + "scope": 7668, + "src": "7404:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7649, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7404:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7661, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 7658, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7604, + "src": "7488:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 7656, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7602, + "src": "7465:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7476:11:19", + "memberName": "getTotalFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 9630, + "src": "7465:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint16) pure returns (uint128)" + } + }, + "id": 7659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7465:31:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7651, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7624, + "src": "7420:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7652, + "name": "receivedAmountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7632, + "src": "7430:15:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "7420:25:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 7654, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7419:27:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7447:17:19", + "memberName": "getCompositionFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 8321, + "src": "7419:45:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (uint128)" + } + }, + "id": 7660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7419:78:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7404:93:19" + }, + { + "expression": { + "id": 7666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7662, + "name": "fees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7613, + "src": "7512:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7663, + "name": "feeY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7650, + "src": "7519:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7524:12:19", + "memberName": "encodeSecond", + "nodeType": "MemberAccess", + "referencedDeclaration": 11087, + "src": "7519:17:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7519:19:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7512:26:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7667, + "nodeType": "ExpressionStatement", + "src": "7512:26:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 7598, + "nodeType": "StructuredDocumentation", + "src": "6258:593:19", + "text": " @dev Returns the composition fees when adding liquidity to the active bin with a different\n composition factor than the bin's one, as it does an implicit swap\n @param binReserves The reserves of the bin\n @param parameters The parameters of the liquidity book\n @param binStep The step of the bin\n @param amountsIn The amounts of tokens to add\n @param totalSupply The total supply of the liquidity book\n @param shares The share of the liquidity book that the user will receive\n @return fees The encoded fees that will be charged" + }, + "id": 7695, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCompositionFees", + "nameLocation": "6865:18:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7600, + "mutability": "mutable", + "name": "binReserves", + "nameLocation": "6901:11:19", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "6893:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7599, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6893:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7602, + "mutability": "mutable", + "name": "parameters", + "nameLocation": "6930:10:19", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "6922:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7601, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6922:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7604, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "6957:7:19", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "6950:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7603, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6950:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7606, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "6982:9:19", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "6974:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7605, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6974:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7608, + "mutability": "mutable", + "name": "totalSupply", + "nameLocation": "7009:11:19", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "7001:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7001:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7610, + "mutability": "mutable", + "name": "shares", + "nameLocation": "7038:6:19", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "7030:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7030:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6883:167:19" + }, + "returnParameters": { + "id": 7614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7613, + "mutability": "mutable", + "name": "fees", + "nameLocation": "7082:4:19", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "7074:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7612, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7074:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7073:14:19" + }, + "scope": 8134, + "src": "6856:894:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7718, + "nodeType": "Block", + "src": "8124:85:19", + "statements": [ + { + "expression": { + "condition": { + "id": 7705, + "name": "isX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7700, + "src": "8141:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7711, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7698, + "src": "8176:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8188:7:19", + "memberName": "decodeY", + "nodeType": "MemberAccess", + "referencedDeclaration": 11139, + "src": "8176:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 7713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8176:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8201:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8176:26:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "8141:61:19", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7706, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7698, + "src": "8147:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8159:7:19", + "memberName": "decodeX", + "nodeType": "MemberAccess", + "referencedDeclaration": 11129, + "src": "8147:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 7708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8147:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8172:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8147:26:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7704, + "id": 7717, + "nodeType": "Return", + "src": "8134:68:19" + } + ] + }, + "documentation": { + "id": 7696, + "nodeType": "StructuredDocumentation", + "src": "7756:286:19", + "text": " @dev Returns whether the bin is empty (true) or not (false)\n @param binReserves The reserves of the bin\n @param isX Whether the reserve to check is the X reserve (true) or the Y reserve (false)\n @return Whether the bin is empty (true) or not (false)" + }, + "id": 7719, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isEmpty", + "nameLocation": "8056:7:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7698, + "mutability": "mutable", + "name": "binReserves", + "nameLocation": "8072:11:19", + "nodeType": "VariableDeclaration", + "scope": 7719, + "src": "8064:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7697, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8064:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7700, + "mutability": "mutable", + "name": "isX", + "nameLocation": "8090:3:19", + "nodeType": "VariableDeclaration", + "scope": 7719, + "src": "8085:8:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7699, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8085:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8063:31:19" + }, + "returnParameters": { + "id": 7704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7703, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7719, + "src": "8118:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7702, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8118:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8117:6:19" + }, + "scope": 8134, + "src": "8047:162:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7927, + "nodeType": "Block", + "src": "9322:1841:19", + "statements": [ + { + "assignments": [ + 7742 + ], + "declarations": [ + { + "constant": false, + "id": 7742, + "mutability": "mutable", + "name": "price", + "nameLocation": "9340:5:19", + "nodeType": "VariableDeclaration", + "scope": 7927, + "src": "9332:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9332:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7747, + "initialValue": { + "arguments": [ + { + "id": 7745, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7726, + "src": "9372:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 7743, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7730, + "src": "9348:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 7744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9357:14:19", + "memberName": "getPriceFromId", + "nodeType": "MemberAccess", + "referencedDeclaration": 10151, + "src": "9348:23:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint24_$_t_uint16_$returns$_t_uint256_$attached_to$_t_uint24_$", + "typeString": "function (uint24,uint16) pure returns (uint256)" + } + }, + "id": 7746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9348:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9332:48:19" + }, + { + "id": 7908, + "nodeType": "Block", + "src": "9391:1531:19", + "statements": [ + { + "assignments": [ + 7749 + ], + "declarations": [ + { + "constant": false, + "id": 7749, + "mutability": "mutable", + "name": "binReserveOut", + "nameLocation": "9413:13:19", + "nodeType": "VariableDeclaration", + "scope": 7908, + "src": "9405:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7748, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9405:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7755, + "initialValue": { + "arguments": [ + { + "id": 7753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9448:9:19", + "subExpression": { + "id": 7752, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7728, + "src": "9449:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7750, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7722, + "src": "9429:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9441:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11159, + "src": "9429:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bool_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bool) pure returns (uint128)" + } + }, + "id": 7754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9429:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9405:53:19" + }, + { + "assignments": [ + 7757 + ], + "declarations": [ + { + "constant": false, + "id": 7757, + "mutability": "mutable", + "name": "maxAmountIn", + "nameLocation": "9481:11:19", + "nodeType": "VariableDeclaration", + "scope": 7908, + "src": "9473:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7756, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9473:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7782, + "initialValue": { + "condition": { + "id": 7758, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7728, + "src": "9495:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 7775, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7742, + "src": "9659:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 7776, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "9666:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9676:12:19", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "9666:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "arguments": [ + { + "id": 7772, + "name": "binReserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7749, + "src": "9628:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 7771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9620:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9620:7:19", + "typeDescriptions": {} + } + }, + "id": 7773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9620:22:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9643:15:19", + "memberName": "mulShiftRoundUp", + "nodeType": "MemberAccess", + "referencedDeclaration": 12524, + "src": "9620:38:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 7778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9620:69:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9690:7:19", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "9620:77:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 7780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9620:79:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9495:204:19", + "trueExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "expression": { + "id": 7764, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "9561:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9571:12:19", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "9561:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 7766, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7742, + "src": "9585:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7761, + "name": "binReserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7749, + "src": "9530:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 7760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9522:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9522:7:19", + "typeDescriptions": {} + } + }, + "id": 7762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9522:22:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9545:15:19", + "memberName": "shiftDivRoundUp", + "nodeType": "MemberAccess", + "referencedDeclaration": 12604, + "src": "9522:38:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint8_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint8,uint256) pure returns (uint256)" + } + }, + "id": 7767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9522:69:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9592:7:19", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "9522:77:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 7769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9522:79:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9473:226:19" + }, + { + "assignments": [ + 7784 + ], + "declarations": [ + { + "constant": false, + "id": 7784, + "mutability": "mutable", + "name": "totalFee", + "nameLocation": "9722:8:19", + "nodeType": "VariableDeclaration", + "scope": 7908, + "src": "9714:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7783, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9714:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7789, + "initialValue": { + "arguments": [ + { + "id": 7787, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7726, + "src": "9756:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 7785, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7724, + "src": "9733:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9744:11:19", + "memberName": "getTotalFee", + "nodeType": "MemberAccess", + "referencedDeclaration": 9630, + "src": "9733:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint16) pure returns (uint128)" + } + }, + "id": 7788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9733:31:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9714:50:19" + }, + { + "assignments": [ + 7791 + ], + "declarations": [ + { + "constant": false, + "id": 7791, + "mutability": "mutable", + "name": "maxFee", + "nameLocation": "9786:6:19", + "nodeType": "VariableDeclaration", + "scope": 7908, + "src": "9778:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7790, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9778:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7796, + "initialValue": { + "arguments": [ + { + "id": 7794, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7784, + "src": "9820:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 7792, + "name": "maxAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7757, + "src": "9795:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9807:12:19", + "memberName": "getFeeAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 8280, + "src": "9795:24:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (uint128)" + } + }, + "id": 7795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9795:34:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9778:51:19" + }, + { + "expression": { + "id": 7799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7797, + "name": "maxAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7757, + "src": "9844:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7798, + "name": "maxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7791, + "src": "9859:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "9844:21:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7800, + "nodeType": "ExpressionStatement", + "src": "9844:21:19" + }, + { + "assignments": [ + 7802 + ], + "declarations": [ + { + "constant": false, + "id": 7802, + "mutability": "mutable", + "name": "amountIn128", + "nameLocation": "9888:11:19", + "nodeType": "VariableDeclaration", + "scope": 7908, + "src": "9880:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7801, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9880:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7807, + "initialValue": { + "arguments": [ + { + "id": 7805, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7728, + "src": "9923:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7803, + "name": "amountsInLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7732, + "src": "9902:13:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9916:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11159, + "src": "9902:20:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bool_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bool) pure returns (uint128)" + } + }, + "id": 7806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9902:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9880:52:19" + }, + { + "assignments": [ + 7809 + ], + "declarations": [ + { + "constant": false, + "id": 7809, + "mutability": "mutable", + "name": "fee128", + "nameLocation": "9954:6:19", + "nodeType": "VariableDeclaration", + "scope": 7908, + "src": "9946:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7808, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9946:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7810, + "nodeType": "VariableDeclarationStatement", + "src": "9946:14:19" + }, + { + "assignments": [ + 7812 + ], + "declarations": [ + { + "constant": false, + "id": 7812, + "mutability": "mutable", + "name": "amountOut128", + "nameLocation": "9982:12:19", + "nodeType": "VariableDeclaration", + "scope": 7908, + "src": "9974:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7811, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9974:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7813, + "nodeType": "VariableDeclarationStatement", + "src": "9974:20:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7814, + "name": "amountIn128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "10013:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 7815, + "name": "maxAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7757, + "src": "10028:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10013:26:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 7878, + "nodeType": "Block", + "src": "10185:459:19", + "statements": [ + { + "expression": { + "id": 7835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7830, + "name": "fee128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7809, + "src": "10203:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 7833, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7784, + "src": "10241:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 7831, + "name": "amountIn128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "10212:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10224:16:19", + "memberName": "getFeeAmountFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8241, + "src": "10212:28:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (uint128)" + } + }, + "id": 7834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10212:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10203:47:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7836, + "nodeType": "ExpressionStatement", + "src": "10203:47:19" + }, + { + "assignments": [ + 7838 + ], + "declarations": [ + { + "constant": false, + "id": 7838, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "10277:8:19", + "nodeType": "VariableDeclaration", + "scope": 7878, + "src": "10269:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10269:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7842, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7839, + "name": "amountIn128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "10288:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7840, + "name": "fee128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7809, + "src": "10302:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10288:20:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10269:39:19" + }, + { + "expression": { + "id": 7868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7843, + "name": "amountOut128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7812, + "src": "10327:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "id": 7844, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7728, + "src": "10342:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "expression": { + "id": 7861, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "10508:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10518:12:19", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "10508:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 7863, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7742, + "src": "10532:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 7858, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7838, + "src": "10480:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10472:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7856, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10472:7:19", + "typeDescriptions": {} + } + }, + "id": 7859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10472:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10490:17:19", + "memberName": "shiftDivRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 12569, + "src": "10472:35:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint8_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint8,uint256) pure returns (uint256)" + } + }, + "id": 7864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10472:66:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10539:7:19", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "10472:74:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 7866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10472:76:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "10342:206:19", + "trueExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 7850, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7742, + "src": "10409:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 7851, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "10416:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10426:12:19", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "10416:22:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "arguments": [ + { + "id": 7847, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7838, + "src": "10381:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10373:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7845, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10373:7:19", + "typeDescriptions": {} + } + }, + "id": 7848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10373:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10391:17:19", + "memberName": "mulShiftRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 12489, + "src": "10373:35:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 7853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10373:66:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10440:7:19", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "10373:74:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 7855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10373:76:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10327:221:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7869, + "nodeType": "ExpressionStatement", + "src": "10327:221:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7870, + "name": "amountOut128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7812, + "src": "10571:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 7871, + "name": "binReserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7749, + "src": "10586:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10571:28:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7877, + "nodeType": "IfStatement", + "src": "10567:62:19", + "trueBody": { + "expression": { + "id": 7875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7873, + "name": "amountOut128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7812, + "src": "10601:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7874, + "name": "binReserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7749, + "src": "10616:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10601:28:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7876, + "nodeType": "ExpressionStatement", + "src": "10601:28:19" + } + } + ] + }, + "id": 7879, + "nodeType": "IfStatement", + "src": "10009:635:19", + "trueBody": { + "id": 7829, + "nodeType": "Block", + "src": "10041:138:19", + "statements": [ + { + "expression": { + "id": 7819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7817, + "name": "fee128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7809, + "src": "10059:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7818, + "name": "maxFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7791, + "src": "10068:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10059:15:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7820, + "nodeType": "ExpressionStatement", + "src": "10059:15:19" + }, + { + "expression": { + "id": 7823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7821, + "name": "amountIn128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "10093:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7822, + "name": "maxAmountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7757, + "src": "10107:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10093:25:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7824, + "nodeType": "ExpressionStatement", + "src": "10093:25:19" + }, + { + "expression": { + "id": 7827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7825, + "name": "amountOut128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7812, + "src": "10136:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7826, + "name": "binReserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7749, + "src": "10151:13:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "10136:28:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7828, + "nodeType": "ExpressionStatement", + "src": "10136:28:19" + } + ] + } + }, + { + "expression": { + "id": 7906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 7880, + "name": "amountsInWithFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7735, + "src": "10659:17:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7881, + "name": "amountsOutOfBin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7737, + "src": "10678:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7882, + "name": "totalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7739, + "src": "10695:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 7883, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "10658:47:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32,bytes32)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "id": 7884, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7728, + "src": "10708:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "components": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7895, + "name": "amountIn128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "10833:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10845:12:19", + "memberName": "encodeSecond", + "nodeType": "MemberAccess", + "referencedDeclaration": 11087, + "src": "10833:24:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10833:26:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7898, + "name": "amountOut128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7812, + "src": "10861:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10874:11:19", + "memberName": "encodeFirst", + "nodeType": "MemberAccess", + "referencedDeclaration": 11077, + "src": "10861:24:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10861:26:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7901, + "name": "fee128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7809, + "src": "10889:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10896:12:19", + "memberName": "encodeSecond", + "nodeType": "MemberAccess", + "referencedDeclaration": 11087, + "src": "10889:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10889:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 7904, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10832:79:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32,bytes32)" + } + }, + "id": 7905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "10708:203:19", + "trueExpression": { + "components": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7885, + "name": "amountIn128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7802, + "src": "10736:11:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10748:11:19", + "memberName": "encodeFirst", + "nodeType": "MemberAccess", + "referencedDeclaration": 11077, + "src": "10736:23:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10736:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7888, + "name": "amountOut128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7812, + "src": "10763:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10776:12:19", + "memberName": "encodeSecond", + "nodeType": "MemberAccess", + "referencedDeclaration": 11087, + "src": "10763:25:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10763:27:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7891, + "name": "fee128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7809, + "src": "10792:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10799:11:19", + "memberName": "encodeFirst", + "nodeType": "MemberAccess", + "referencedDeclaration": 11077, + "src": "10792:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10792:20:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 7894, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10735:78:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32,bytes32)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32,bytes32)" + } + }, + "src": "10658:253:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7907, + "nodeType": "ExpressionStatement", + "src": "10658:253:19" + } + ] + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 7915, + "name": "amountsOutOfBin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7737, + "src": "11001:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "id": 7912, + "name": "amountsInWithFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7735, + "src": "10978:17:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7910, + "name": "binReserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7722, + "src": "10962:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10974:3:19", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 11195, + "src": "10962:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 7913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10962:34:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10997:3:19", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 11252, + "src": "10962:38:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 7916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10962:55:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7917, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7742, + "src": "11019:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7909, + "name": "getLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7497, + 7555 + ], + "referencedDeclaration": 7497, + "src": "10949:12:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes32,uint256) pure returns (uint256)" + } + }, + "id": 7918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10949:76:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 7919, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "11044:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 7920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11054:21:19", + "memberName": "MAX_LIQUIDITY_PER_BIN", + "nodeType": "MemberAccess", + "referencedDeclaration": 8165, + "src": "11044:31:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10949:126:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7926, + "nodeType": "IfStatement", + "src": "10932:225:19", + "trueBody": { + "id": 7925, + "nodeType": "Block", + "src": "11086:71:19", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7922, + "name": "BinHelper__MaxLiquidityPerBinExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7228, + "src": "11107:37:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11107:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7924, + "nodeType": "RevertStatement", + "src": "11100:46:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 7720, + "nodeType": "StructuredDocumentation", + "src": "8215:764:19", + "text": " @dev Returns the amounts of tokens that will be added and removed from the bin during a swap\n along with the fees that will be charged\n @param binReserves The reserves of the bin\n @param parameters The parameters of the liquidity book\n @param binStep The step of the bin\n @param swapForY Whether the swap is for Y (true) or for X (false)\n @param activeId The id of the active bin\n @param amountsInLeft The amounts of tokens left to swap\n @return amountsInWithFees The encoded amounts of tokens that will be added to the bin, including fees\n @return amountsOutOfBin The encoded amounts of tokens that will be removed from the bin\n @return totalFees The encoded fees that will be charged" + }, + "id": 7928, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmounts", + "nameLocation": "8993:10:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7722, + "mutability": "mutable", + "name": "binReserves", + "nameLocation": "9021:11:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9013:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7721, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9013:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7724, + "mutability": "mutable", + "name": "parameters", + "nameLocation": "9050:10:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9042:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7723, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9042:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7726, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "9077:7:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9070:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7725, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "9070:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7728, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "9099:8:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9094:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7727, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9094:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7730, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "9182:8:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9175:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7729, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "9175:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7732, + "mutability": "mutable", + "name": "amountsInLeft", + "nameLocation": "9208:13:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9200:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7731, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9200:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "9003:224:19" + }, + "returnParameters": { + "id": 7740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7735, + "mutability": "mutable", + "name": "amountsInWithFees", + "nameLocation": "9259:17:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9251:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7734, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9251:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7737, + "mutability": "mutable", + "name": "amountsOutOfBin", + "nameLocation": "9286:15:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9278:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7736, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9278:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7739, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "9311:9:19", + "nodeType": "VariableDeclaration", + "scope": 7928, + "src": "9303:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7738, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9303:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "9250:71:19" + }, + "scope": 8134, + "src": "8984:2179:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7956, + "nodeType": "Block", + "src": "11581:86:19", + "statements": [ + { + "expression": { + "id": 7954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7942, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7940, + "src": "11591:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 7952, + "name": "reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7931, + "src": "11651:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7948, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7937, + "src": "11638:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 7947, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8133, + "src": "11627:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$returns$_t_uint128_$", + "typeString": "function (contract IERC20) view returns (uint128)" + } + }, + "id": 7949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11627:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "arguments": [ + { + "id": 7944, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7934, + "src": "11612:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 7943, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8133, + "src": "11601:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$returns$_t_uint128_$", + "typeString": "function (contract IERC20) view returns (uint128)" + } + }, + "id": 7945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11601:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11620:6:19", + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11067, + "src": "11601:25:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (bytes32)" + } + }, + "id": 7950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11601:45:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11647:3:19", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 11252, + "src": "11601:49:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 7953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11601:59:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "11591:69:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7955, + "nodeType": "ExpressionStatement", + "src": "11591:69:19" + } + ] + }, + "documentation": { + "id": 7929, + "nodeType": "StructuredDocumentation", + "src": "11169:301:19", + "text": " @dev Returns the encoded amounts that were transferred to the contract\n @param reserves The reserves\n @param tokenX The token X\n @param tokenY The token Y\n @return amounts The amounts, encoded as follows:\n [0 - 128[: amountX\n [128 - 256[: amountY" + }, + "id": 7957, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "received", + "nameLocation": "11484:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7931, + "mutability": "mutable", + "name": "reserves", + "nameLocation": "11501:8:19", + "nodeType": "VariableDeclaration", + "scope": 7957, + "src": "11493:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7930, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11493:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7934, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "11518:6:19", + "nodeType": "VariableDeclaration", + "scope": 7957, + "src": "11511:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7933, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7932, + "name": "IERC20", + "nameLocations": [ + "11511:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "11511:6:19" + }, + "referencedDeclaration": 479, + "src": "11511:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7937, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "11533:6:19", + "nodeType": "VariableDeclaration", + "scope": 7957, + "src": "11526:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7936, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7935, + "name": "IERC20", + "nameLocations": [ + "11526:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "11526:6:19" + }, + "referencedDeclaration": 479, + "src": "11526:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "11492:48:19" + }, + "returnParameters": { + "id": 7941, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7940, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "11572:7:19", + "nodeType": "VariableDeclaration", + "scope": 7957, + "src": "11564:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7939, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11564:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11563:17:19" + }, + "scope": 8134, + "src": "11475:192:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7983, + "nodeType": "Block", + "src": "12046:116:19", + "statements": [ + { + "assignments": [ + 7969 + ], + "declarations": [ + { + "constant": false, + "id": 7969, + "mutability": "mutable", + "name": "reserveX", + "nameLocation": "12064:8:19", + "nodeType": "VariableDeclaration", + "scope": 7983, + "src": "12056:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7968, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "12056:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 7973, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7970, + "name": "reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7960, + "src": "12075:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12084:7:19", + "memberName": "decodeX", + "nodeType": "MemberAccess", + "referencedDeclaration": 11129, + "src": "12075:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 7972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12075:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12056:37:19" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 7978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7975, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7963, + "src": "12122:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 7974, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8133, + "src": "12111:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$returns$_t_uint128_$", + "typeString": "function (contract IERC20) view returns (uint128)" + } + }, + "id": 7976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12111:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 7977, + "name": "reserveX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7969, + "src": "12132:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "12111:29:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 7979, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12110:31:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 7980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12142:11:19", + "memberName": "encodeFirst", + "nodeType": "MemberAccess", + "referencedDeclaration": 11077, + "src": "12110:43:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 7981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12110:45:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7967, + "id": 7982, + "nodeType": "Return", + "src": "12103:52:19" + } + ] + }, + "documentation": { + "id": 7958, + "nodeType": "StructuredDocumentation", + "src": "11673:284:19", + "text": " @dev Returns the encoded amounts that were transferred to the contract, only for token X\n @param reserves The reserves\n @param tokenX The token X\n @return amounts The amounts, encoded as follows:\n [0 - 128[: amountX\n [128 - 256[: empty" + }, + "id": 7984, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "receivedX", + "nameLocation": "11971:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7960, + "mutability": "mutable", + "name": "reserves", + "nameLocation": "11989:8:19", + "nodeType": "VariableDeclaration", + "scope": 7984, + "src": "11981:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7959, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11981:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7963, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "12006:6:19", + "nodeType": "VariableDeclaration", + "scope": 7984, + "src": "11999:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7962, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7961, + "name": "IERC20", + "nameLocations": [ + "11999:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "11999:6:19" + }, + "referencedDeclaration": 479, + "src": "11999:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "11980:33:19" + }, + "returnParameters": { + "id": 7967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7966, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7984, + "src": "12037:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7965, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12037:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12036:9:19" + }, + "scope": 8134, + "src": "11962:200:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8010, + "nodeType": "Block", + "src": "12541:117:19", + "statements": [ + { + "assignments": [ + 7996 + ], + "declarations": [ + { + "constant": false, + "id": 7996, + "mutability": "mutable", + "name": "reserveY", + "nameLocation": "12559:8:19", + "nodeType": "VariableDeclaration", + "scope": 8010, + "src": "12551:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7995, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "12551:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 8000, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 7997, + "name": "reserves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7987, + "src": "12570:8:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12579:7:19", + "memberName": "decodeY", + "nodeType": "MemberAccess", + "referencedDeclaration": 11139, + "src": "12570:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 7999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12570:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12551:37:19" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 8005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8002, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7990, + "src": "12617:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + ], + "id": 8001, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8133, + "src": "12606:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$479_$returns$_t_uint128_$", + "typeString": "function (contract IERC20) view returns (uint128)" + } + }, + "id": 8003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12606:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 8004, + "name": "reserveY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7996, + "src": "12627:8:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "12606:29:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 8006, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12605:31:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 8007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12637:12:19", + "memberName": "encodeSecond", + "nodeType": "MemberAccess", + "referencedDeclaration": 11087, + "src": "12605:44:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 8008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12605:46:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7994, + "id": 8009, + "nodeType": "Return", + "src": "12598:53:19" + } + ] + }, + "documentation": { + "id": 7985, + "nodeType": "StructuredDocumentation", + "src": "12168:284:19", + "text": " @dev Returns the encoded amounts that were transferred to the contract, only for token Y\n @param reserves The reserves\n @param tokenY The token Y\n @return amounts The amounts, encoded as follows:\n [0 - 128[: empty\n [128 - 256[: amountY" + }, + "id": 8011, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "receivedY", + "nameLocation": "12466:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7987, + "mutability": "mutable", + "name": "reserves", + "nameLocation": "12484:8:19", + "nodeType": "VariableDeclaration", + "scope": 8011, + "src": "12476:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7986, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12476:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7990, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "12501:6:19", + "nodeType": "VariableDeclaration", + "scope": 8011, + "src": "12494:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7989, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7988, + "name": "IERC20", + "nameLocations": [ + "12494:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "12494:6:19" + }, + "referencedDeclaration": 479, + "src": "12494:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "12475:33:19" + }, + "returnParameters": { + "id": 7994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7993, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8011, + "src": "12532:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7992, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12532:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12531:9:19" + }, + "scope": 8134, + "src": "12457:201:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8055, + "nodeType": "Block", + "src": "13045:203:19", + "statements": [ + { + "assignments": [ + 8026, + 8028 + ], + "declarations": [ + { + "constant": false, + "id": 8026, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "13064:7:19", + "nodeType": "VariableDeclaration", + "scope": 8055, + "src": "13056:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8025, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13056:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8028, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "13081:7:19", + "nodeType": "VariableDeclaration", + "scope": 8055, + "src": "13073:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8027, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13073:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 8032, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 8029, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8014, + "src": "13092:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13100:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "13092:14:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 8031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13092:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13055:53:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 8035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8033, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8026, + "src": "13123:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13133:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13123:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8043, + "nodeType": "IfStatement", + "src": "13119:56:19", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 8039, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8022, + "src": "13156:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8040, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8026, + "src": "13167:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 8036, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "13136:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 8038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13143:12:19", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10542, + "src": "13136:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 8041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13136:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8042, + "nodeType": "ExpressionStatement", + "src": "13136:39:19" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 8046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8044, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8028, + "src": "13189:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13199:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13189:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8054, + "nodeType": "IfStatement", + "src": "13185:56:19", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 8050, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8022, + "src": "13222:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8051, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8028, + "src": "13233:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 8047, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8020, + "src": "13202:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 8049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13209:12:19", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10542, + "src": "13202:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 8052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13202:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8053, + "nodeType": "ExpressionStatement", + "src": "13202:39:19" + } + } + ] + }, + "documentation": { + "id": 8012, + "nodeType": "StructuredDocumentation", + "src": "12664:283:19", + "text": " @dev Transfers the encoded amounts to the recipient\n @param amounts The amounts, encoded as follows:\n [0 - 128[: amountX\n [128 - 256[: amountY\n @param tokenX The token X\n @param tokenY The token Y\n @param recipient The recipient" + }, + "id": 8056, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "12961:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8014, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "12978:7:19", + "nodeType": "VariableDeclaration", + "scope": 8056, + "src": "12970:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8013, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12970:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8017, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "12994:6:19", + "nodeType": "VariableDeclaration", + "scope": 8056, + "src": "12987:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 8016, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8015, + "name": "IERC20", + "nameLocations": [ + "12987:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "12987:6:19" + }, + "referencedDeclaration": 479, + "src": "12987:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8020, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "13009:6:19", + "nodeType": "VariableDeclaration", + "scope": 8056, + "src": "13002:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 8019, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8018, + "name": "IERC20", + "nameLocations": [ + "13002:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "13002:6:19" + }, + "referencedDeclaration": 479, + "src": "13002:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8022, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "13025:9:19", + "nodeType": "VariableDeclaration", + "scope": 8056, + "src": "13017:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13017:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12969:66:19" + }, + "returnParameters": { + "id": 8024, + "nodeType": "ParameterList", + "parameters": [], + "src": "13045:0:19" + }, + "scope": 8134, + "src": "12952:296:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8084, + "nodeType": "Block", + "src": "13604:119:19", + "statements": [ + { + "assignments": [ + 8068 + ], + "declarations": [ + { + "constant": false, + "id": 8068, + "mutability": "mutable", + "name": "amountX", + "nameLocation": "13622:7:19", + "nodeType": "VariableDeclaration", + "scope": 8084, + "src": "13614:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8067, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13614:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 8072, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 8069, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8059, + "src": "13632:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13640:7:19", + "memberName": "decodeX", + "nodeType": "MemberAccess", + "referencedDeclaration": 11129, + "src": "13632:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 8071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13632:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13614:35:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 8075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8073, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8068, + "src": "13664:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13674:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13664:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8083, + "nodeType": "IfStatement", + "src": "13660:56:19", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 8079, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8064, + "src": "13697:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8080, + "name": "amountX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8068, + "src": "13708:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 8076, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8062, + "src": "13677:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 8078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13684:12:19", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10542, + "src": "13677:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 8081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13677:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8082, + "nodeType": "ExpressionStatement", + "src": "13677:39:19" + } + } + ] + }, + "documentation": { + "id": 8057, + "nodeType": "StructuredDocumentation", + "src": "13254:266:19", + "text": " @dev Transfers the encoded amounts to the recipient, only for token X\n @param amounts The amounts, encoded as follows:\n [0 - 128[: amountX\n [128 - 256[: empty\n @param tokenX The token X\n @param recipient The recipient" + }, + "id": 8085, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferX", + "nameLocation": "13534:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8059, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "13552:7:19", + "nodeType": "VariableDeclaration", + "scope": 8085, + "src": "13544:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8058, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13544:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8062, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "13568:6:19", + "nodeType": "VariableDeclaration", + "scope": 8085, + "src": "13561:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 8061, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8060, + "name": "IERC20", + "nameLocations": [ + "13561:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "13561:6:19" + }, + "referencedDeclaration": 479, + "src": "13561:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8064, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "13584:9:19", + "nodeType": "VariableDeclaration", + "scope": 8085, + "src": "13576:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8063, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13576:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13543:51:19" + }, + "returnParameters": { + "id": 8066, + "nodeType": "ParameterList", + "parameters": [], + "src": "13604:0:19" + }, + "scope": 8134, + "src": "13525:198:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8113, + "nodeType": "Block", + "src": "14079:119:19", + "statements": [ + { + "assignments": [ + 8097 + ], + "declarations": [ + { + "constant": false, + "id": 8097, + "mutability": "mutable", + "name": "amountY", + "nameLocation": "14097:7:19", + "nodeType": "VariableDeclaration", + "scope": 8113, + "src": "14089:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8096, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "14089:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 8101, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 8098, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8088, + "src": "14107:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14115:7:19", + "memberName": "decodeY", + "nodeType": "MemberAccess", + "referencedDeclaration": 11139, + "src": "14107:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 8100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14107:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14089:35:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 8104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8102, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8097, + "src": "14139:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14149:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14139:11:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8112, + "nodeType": "IfStatement", + "src": "14135:56:19", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 8108, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8093, + "src": "14172:9:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8109, + "name": "amountY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8097, + "src": "14183:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 8105, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8091, + "src": "14152:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 8107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14159:12:19", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 10542, + "src": "14152:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$479_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 8110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14152:39:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8111, + "nodeType": "ExpressionStatement", + "src": "14152:39:19" + } + } + ] + }, + "documentation": { + "id": 8086, + "nodeType": "StructuredDocumentation", + "src": "13729:266:19", + "text": " @dev Transfers the encoded amounts to the recipient, only for token Y\n @param amounts The amounts, encoded as follows:\n [0 - 128[: empty\n [128 - 256[: amountY\n @param tokenY The token Y\n @param recipient The recipient" + }, + "id": 8114, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferY", + "nameLocation": "14009:9:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8094, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8088, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "14027:7:19", + "nodeType": "VariableDeclaration", + "scope": 8114, + "src": "14019:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8087, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14019:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8091, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "14043:6:19", + "nodeType": "VariableDeclaration", + "scope": 8114, + "src": "14036:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 8090, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8089, + "name": "IERC20", + "nameLocations": [ + "14036:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "14036:6:19" + }, + "referencedDeclaration": 479, + "src": "14036:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8093, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "14059:9:19", + "nodeType": "VariableDeclaration", + "scope": 8114, + "src": "14051:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8092, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14051:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14018:51:19" + }, + "returnParameters": { + "id": 8095, + "nodeType": "ParameterList", + "parameters": [], + "src": "14079:0:19" + }, + "scope": 8134, + "src": "14000:198:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8132, + "nodeType": "Block", + "src": "14269:64:19", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 8126, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "14310:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BinHelper_$8134", + "typeString": "library BinHelper" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_BinHelper_$8134", + "typeString": "library BinHelper" + } + ], + "id": 8125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14302:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14302:7:19", + "typeDescriptions": {} + } + }, + "id": 8127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14302:13:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 8122, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8117, + "src": "14286:5:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 8123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14292:9:19", + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 436, + "src": "14286:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 8128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14286:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14317:7:19", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "14286:38:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 8130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14286:40:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 8121, + "id": 8131, + "nodeType": "Return", + "src": "14279:47:19" + } + ] + }, + "id": 8133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_balanceOf", + "nameLocation": "14213:10:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8117, + "mutability": "mutable", + "name": "token", + "nameLocation": "14231:5:19", + "nodeType": "VariableDeclaration", + "scope": 8133, + "src": "14224:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 8116, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8115, + "name": "IERC20", + "nameLocations": [ + "14224:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "14224:6:19" + }, + "referencedDeclaration": 479, + "src": "14224:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "14223:14:19" + }, + "returnParameters": { + "id": 8121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8120, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8133, + "src": "14260:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8119, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "14260:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "14259:9:19" + }, + "scope": 8134, + "src": "14204:129:19", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + } + ], + "scope": 8135, + "src": "607:13728:19", + "usedErrors": [ + 7224, + 7226, + 7228 + ], + "usedEvents": [] + } + ], + "src": "33:14303:19" + }, + "id": 19 + }, + "src/libraries/Constants.sol": { + "ast": { + "absolutePath": "src/libraries/Constants.sol", + "exportedSymbols": { + "Constants": [ + 8172 + ] + }, + "id": 8173, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8136, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:20" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Constants", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 8137, + "nodeType": "StructuredDocumentation", + "src": "59:107:20", + "text": " @title Liquidity Book Constants Library\n @notice Set of constants for Liquidity Book contracts" + }, + "fullyImplemented": true, + "id": 8172, + "linearizedBaseContracts": [ + 8172 + ], + "name": "Constants", + "nameLocation": "175:9:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 8140, + "mutability": "constant", + "name": "SCALE_OFFSET", + "nameLocation": "215:12:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "191:42:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8138, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "191:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "313238", + "id": 8139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "230:3:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8145, + "mutability": "constant", + "name": "SCALE", + "nameLocation": "265:5:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "239:51:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8141, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "239:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "273:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 8143, + "name": "SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8140, + "src": "278:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "273:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8148, + "mutability": "constant", + "name": "PRECISION", + "nameLocation": "323:9:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "297:42:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "297:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31653138", + "id": 8147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:4:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + }, + "value": "1e18" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8153, + "mutability": "constant", + "name": "SQUARED_PRECISION", + "nameLocation": "371:17:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "345:67:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "345:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 8150, + "name": "PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8148, + "src": "391:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 8151, + "name": "PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8148, + "src": "403:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "391:21:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8156, + "mutability": "constant", + "name": "MAX_FEE", + "nameLocation": "445:7:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "419:42:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8154, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "419:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "302e31653138", + "id": 8155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "455:6:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000_by_1", + "typeString": "int_const 100000000000000000" + }, + "value": "0.1e18" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8159, + "mutability": "constant", + "name": "MAX_PROTOCOL_SHARE", + "nameLocation": "500:18:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "474:52:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "474:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "325f353030", + "id": 8158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "521:5:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_2500_by_1", + "typeString": "int_const 2500" + }, + "value": "2_500" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8162, + "mutability": "constant", + "name": "BASIS_POINT_MAX", + "nameLocation": "577:15:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "551:50:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "551:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31305f303030", + "id": 8161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "595:6:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10_000" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8165, + "mutability": "constant", + "name": "MAX_LIQUIDITY_PER_BIN", + "nameLocation": "687:21:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "661:129:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3635323531373433313136373139363733303130393635363235353430323434363533313931363139393233303134333835393835333739363030333834313033313334373337", + "id": 8164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "719:71:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_65251743116719673010965625540244653191619923014385985379600384103134737_by_1", + "typeString": "int_const 6525...(63 digits omitted)...4737" + }, + "value": "65251743116719673010965625540244653191619923014385985379600384103134737" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 8166, + "nodeType": "StructuredDocumentation", + "src": "797:58:20", + "text": "@dev The expected return after a successful flash loan" + }, + "id": 8171, + "mutability": "constant", + "name": "CALLBACK_SUCCESS", + "nameLocation": "886:16:20", + "nodeType": "VariableDeclaration", + "scope": 8172, + "src": "860:76:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8167, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "860:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4c42506169722e6f6e466c6173684c6f616e", + "id": 8169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "915:20:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2", + "typeString": "literal_string \"LBPair.onFlashLoan\"" + }, + "value": "LBPair.onFlashLoan" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2", + "typeString": "literal_string \"LBPair.onFlashLoan\"" + } + ], + "id": 8168, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "905:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "905:31:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "scope": 8173, + "src": "167:772:20", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:907:20" + }, + "id": 20 + }, + "src/libraries/FeeHelper.sol": { + "ast": { + "absolutePath": "src/libraries/FeeHelper.sol", + "exportedSymbols": { + "Constants": [ + 8172 + ], + "FeeHelper": [ + 8365 + ] + }, + "id": 8366, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8174, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:21" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "./Constants.sol", + "id": 8176, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8366, + "sourceUnit": 8173, + "src": "59:42:21", + "symbolAliases": [ + { + "foreign": { + "id": 8175, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "67:9:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "FeeHelper", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 8177, + "nodeType": "StructuredDocumentation", + "src": "103:112:21", + "text": " @title Liquidity Book Fee Helper Library\n @notice This library contains functions to calculate fees" + }, + "fullyImplemented": true, + "id": 8365, + "linearizedBaseContracts": [ + 8365 + ], + "name": "FeeHelper", + "nameLocation": "224:9:21", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "8630bc6b", + "id": 8179, + "name": "FeeHelper__FeeTooLarge", + "nameLocation": "246:22:21", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8178, + "nodeType": "ParameterList", + "parameters": [], + "src": "268:2:21" + }, + "src": "240:31:21" + }, + { + "errorSelector": "f3970f5a", + "id": 8181, + "name": "FeeHelper__ProtocolShareTooLarge", + "nameLocation": "282:32:21", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8180, + "nodeType": "ParameterList", + "parameters": [], + "src": "314:2:21" + }, + "src": "276:41:21" + }, + { + "body": { + "id": 8191, + "nodeType": "Block", + "src": "457:43:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8187, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8184, + "src": "478:3:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 8186, + "name": "_verifyFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8364, + "src": "467:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$__$", + "typeString": "function (uint128) pure" + } + }, + "id": 8188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "467:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8189, + "nodeType": "ExpressionStatement", + "src": "467:15:21" + }, + { + "id": 8190, + "nodeType": "PlaceholderStatement", + "src": "492:1:21" + } + ] + }, + "documentation": { + "id": 8182, + "nodeType": "StructuredDocumentation", + "src": "323:97:21", + "text": " @dev Modifier to check that the fee is not too large\n @param fee The fee" + }, + "id": 8192, + "name": "verifyFee", + "nameLocation": "434:9:21", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 8185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8184, + "mutability": "mutable", + "name": "fee", + "nameLocation": "452:3:21", + "nodeType": "VariableDeclaration", + "scope": 8192, + "src": "444:11:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8183, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "444:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "443:13:21" + }, + "src": "425:75:21", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8206, + "nodeType": "Block", + "src": "692:119:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8197, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8195, + "src": "706:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 8198, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "722:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "732:18:21", + "memberName": "MAX_PROTOCOL_SHARE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8159, + "src": "722:28:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "706:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8204, + "nodeType": "IfStatement", + "src": "702:91:21", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8201, + "name": "FeeHelper__ProtocolShareTooLarge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8181, + "src": "759:32:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "759:34:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8203, + "nodeType": "RevertStatement", + "src": "752:41:21" + } + }, + { + "id": 8205, + "nodeType": "PlaceholderStatement", + "src": "803:1:21" + } + ] + }, + "documentation": { + "id": 8193, + "nodeType": "StructuredDocumentation", + "src": "506:129:21", + "text": " @dev Modifier to check that the protocol share is not too large\n @param protocolShare The protocol share" + }, + "id": 8207, + "name": "verifyProtocolShare", + "nameLocation": "649:19:21", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 8196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8195, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "677:13:21", + "nodeType": "VariableDeclaration", + "scope": 8207, + "src": "669:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8194, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "669:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "668:23:21" + }, + "src": "640:171:21", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8240, + "nodeType": "Block", + "src": "1193:251:21", + "statements": [ + { + "id": 8239, + "nodeType": "UncheckedBlock", + "src": "1203:235:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8224, + "name": "amountWithFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8210, + "src": "1351:14:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 8223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1343:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8222, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1343:7:21", + "typeDescriptions": {} + } + }, + "id": 8225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1343:23:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 8226, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8212, + "src": "1369:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "1343:34:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 8228, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "1380:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1390:9:21", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8148, + "src": "1380:19:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1343:56:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 8231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1402:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1343:60:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 8233, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1342:62:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 8234, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "1407:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1417:9:21", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8148, + "src": "1407:19:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1342:84:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1334:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 8220, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1334:7:21", + "typeDescriptions": {} + } + }, + "id": 8237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1334:93:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 8219, + "id": 8238, + "nodeType": "Return", + "src": "1327:100:21" + } + ] + } + ] + }, + "documentation": { + "id": 8208, + "nodeType": "StructuredDocumentation", + "src": "817:215:21", + "text": " @dev Calculates the fee amount from the amount with fees, rounding up\n @param amountWithFees The amount with fees\n @param totalFee The total fee\n @return feeAmount The fee amount" + }, + "id": 8241, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8215, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8212, + "src": "1153:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 8216, + "kind": "modifierInvocation", + "modifierName": { + "id": 8214, + "name": "verifyFee", + "nameLocations": [ + "1143:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8192, + "src": "1143:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "1143:19:21" + } + ], + "name": "getFeeAmountFrom", + "nameLocation": "1046:16:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8210, + "mutability": "mutable", + "name": "amountWithFees", + "nameLocation": "1071:14:21", + "nodeType": "VariableDeclaration", + "scope": 8241, + "src": "1063:22:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8209, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1063:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8212, + "mutability": "mutable", + "name": "totalFee", + "nameLocation": "1095:8:21", + "nodeType": "VariableDeclaration", + "scope": 8241, + "src": "1087:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8211, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1087:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "1062:42:21" + }, + "returnParameters": { + "id": 8219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8218, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8241, + "src": "1180:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8217, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1180:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "1179:9:21" + }, + "scope": 8365, + "src": "1037:407:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8279, + "nodeType": "Block", + "src": "1755:297:21", + "statements": [ + { + "id": 8278, + "nodeType": "UncheckedBlock", + "src": "1765:281:21", + "statements": [ + { + "assignments": [ + 8255 + ], + "declarations": [ + { + "constant": false, + "id": 8255, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "1797:11:21", + "nodeType": "VariableDeclaration", + "scope": 8278, + "src": "1789:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1789:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8260, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8256, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "1811:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1821:9:21", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8148, + "src": "1811:19:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 8258, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8246, + "src": "1833:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "1811:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1789:52:21" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8265, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8244, + "src": "1983:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 8264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1975:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8263, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1975:7:21", + "typeDescriptions": {} + } + }, + "id": 8266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1975:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 8267, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8246, + "src": "1993:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "1975:26:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 8269, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8255, + "src": "2004:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1975:40:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 8271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2018:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1975:44:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 8273, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1974:46:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 8274, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8255, + "src": "2023:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1974:60:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1966:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 8261, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1966:7:21", + "typeDescriptions": {} + } + }, + "id": 8276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1966:69:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 8253, + "id": 8277, + "nodeType": "Return", + "src": "1959:76:21" + } + ] + } + ] + }, + "documentation": { + "id": 8242, + "nodeType": "StructuredDocumentation", + "src": "1450:192:21", + "text": " @dev Calculates the fee amount that will be charged, rounding up\n @param amount The amount\n @param totalFee The total fee\n @return feeAmount The fee amount" + }, + "id": 8280, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8249, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8246, + "src": "1727:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 8250, + "kind": "modifierInvocation", + "modifierName": { + "id": 8248, + "name": "verifyFee", + "nameLocations": [ + "1717:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8192, + "src": "1717:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "1717:19:21" + } + ], + "name": "getFeeAmount", + "nameLocation": "1656:12:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8244, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1677:6:21", + "nodeType": "VariableDeclaration", + "scope": 8280, + "src": "1669:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8243, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1669:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8246, + "mutability": "mutable", + "name": "totalFee", + "nameLocation": "1693:8:21", + "nodeType": "VariableDeclaration", + "scope": 8280, + "src": "1685:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8245, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1685:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "1668:34:21" + }, + "returnParameters": { + "id": 8253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8252, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8280, + "src": "1746:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8251, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1746:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "1745:9:21" + }, + "scope": 8365, + "src": "1647:405:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8320, + "nodeType": "Block", + "src": "2445:344:21", + "statements": [ + { + "id": 8319, + "nodeType": "UncheckedBlock", + "src": "2455:328:21", + "statements": [ + { + "assignments": [ + 8294 + ], + "declarations": [ + { + "constant": false, + "id": 8294, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "2487:11:21", + "nodeType": "VariableDeclaration", + "scope": 8319, + "src": "2479:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2479:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 8297, + "initialValue": { + "expression": { + "id": 8295, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "2501:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2511:17:21", + "memberName": "SQUARED_PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8153, + "src": "2501:27:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2479:49:21" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8302, + "name": "amountWithFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8283, + "src": "2687:14:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 8301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2679:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2679:7:21", + "typeDescriptions": {} + } + }, + "id": 8303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2679:23:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 8304, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8285, + "src": "2705:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "2679:34:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8308, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8285, + "src": "2725:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 8307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2717:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2717:7:21", + "typeDescriptions": {} + } + }, + "id": 8309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2717:17:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 8310, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "2737:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2747:9:21", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8148, + "src": "2737:19:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2717:39:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 8313, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2716:41:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2679:78:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 8315, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8294, + "src": "2760:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2679:92:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2671:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 8298, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2671:7:21", + "typeDescriptions": {} + } + }, + "id": 8317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2671:101:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 8292, + "id": 8318, + "nodeType": "Return", + "src": "2664:108:21" + } + ] + } + ] + }, + "documentation": { + "id": 8281, + "nodeType": "StructuredDocumentation", + "src": "2058:225:21", + "text": " @dev Calculates the composition fee amount from the amount with fees, rounding down\n @param amountWithFees The amount with fees\n @param totalFee The total fee\n @return The amount with fees" + }, + "id": 8321, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8288, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8285, + "src": "2405:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 8289, + "kind": "modifierInvocation", + "modifierName": { + "id": 8287, + "name": "verifyFee", + "nameLocations": [ + "2395:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8192, + "src": "2395:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "2395:19:21" + } + ], + "name": "getCompositionFee", + "nameLocation": "2297:17:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8283, + "mutability": "mutable", + "name": "amountWithFees", + "nameLocation": "2323:14:21", + "nodeType": "VariableDeclaration", + "scope": 8321, + "src": "2315:22:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8282, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2315:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8285, + "mutability": "mutable", + "name": "totalFee", + "nameLocation": "2347:8:21", + "nodeType": "VariableDeclaration", + "scope": 8321, + "src": "2339:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8284, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2339:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "2314:42:21" + }, + "returnParameters": { + "id": 8292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8291, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8321, + "src": "2432:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8290, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2432:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "2431:9:21" + }, + "scope": 8365, + "src": "2288:501:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8348, + "nodeType": "Block", + "src": "3234:129:21", + "statements": [ + { + "id": 8347, + "nodeType": "UncheckedBlock", + "src": "3244:113:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8338, + "name": "feeAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8324, + "src": "3291:9:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 8337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3283:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3283:7:21", + "typeDescriptions": {} + } + }, + "id": 8339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3283:18:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 8340, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8326, + "src": "3304:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "3283:34:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 8342, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "3320:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3330:15:21", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8162, + "src": "3320:25:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3283:62:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3275:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 8334, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3275:7:21", + "typeDescriptions": {} + } + }, + "id": 8345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3275:71:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 8333, + "id": 8346, + "nodeType": "Return", + "src": "3268:78:21" + } + ] + } + ] + }, + "documentation": { + "id": 8322, + "nodeType": "StructuredDocumentation", + "src": "2795:259:21", + "text": " @dev Calculates the protocol fee amount from the fee amount and the protocol share, rounding down\n @param feeAmount The fee amount\n @param protocolShare The protocol share\n @return protocolFeeAmount The protocol fee amount" + }, + "id": 8349, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 8329, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8326, + "src": "3189:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 8330, + "kind": "modifierInvocation", + "modifierName": { + "id": 8328, + "name": "verifyProtocolShare", + "nameLocations": [ + "3169:19:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8207, + "src": "3169:19:21" + }, + "nodeType": "ModifierInvocation", + "src": "3169:34:21" + } + ], + "name": "getProtocolFeeAmount", + "nameLocation": "3068:20:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8327, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8324, + "mutability": "mutable", + "name": "feeAmount", + "nameLocation": "3097:9:21", + "nodeType": "VariableDeclaration", + "scope": 8349, + "src": "3089:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8323, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3089:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8326, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "3116:13:21", + "nodeType": "VariableDeclaration", + "scope": 8349, + "src": "3108:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8325, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3108:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3088:42:21" + }, + "returnParameters": { + "id": 8333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8332, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8349, + "src": "3221:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8331, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3221:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3220:9:21" + }, + "scope": 8365, + "src": "3059:304:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8363, + "nodeType": "Block", + "src": "3526:77:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8355, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8352, + "src": "3540:3:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 8356, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "3546:9:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 8357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3556:7:21", + "memberName": "MAX_FEE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8156, + "src": "3546:17:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3540:23:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8362, + "nodeType": "IfStatement", + "src": "3536:60:21", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8359, + "name": "FeeHelper__FeeTooLarge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8179, + "src": "3572:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3572:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8361, + "nodeType": "RevertStatement", + "src": "3565:31:21" + } + } + ] + }, + "documentation": { + "id": 8350, + "nodeType": "StructuredDocumentation", + "src": "3369:106:21", + "text": " @dev Internal function to check that the fee is not too large\n @param fee The fee" + }, + "id": 8364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_verifyFee", + "nameLocation": "3489:10:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8352, + "mutability": "mutable", + "name": "fee", + "nameLocation": "3508:3:21", + "nodeType": "VariableDeclaration", + "scope": 8364, + "src": "3500:11:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8351, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3500:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3499:13:21" + }, + "returnParameters": { + "id": 8354, + "nodeType": "ParameterList", + "parameters": [], + "src": "3526:0:21" + }, + "scope": 8365, + "src": "3480:123:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 8366, + "src": "216:3389:21", + "usedErrors": [ + 8179, + 8181 + ], + "usedEvents": [] + } + ], + "src": "33:3573:21" + }, + "id": 21 + }, + "src/libraries/Hooks.sol": { + "ast": { + "absolutePath": "src/libraries/Hooks.sol", + "exportedSymbols": { + "Hooks": [ + 9239 + ], + "ILBHooks": [ + 4434 + ] + }, + "id": 9240, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8367, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:24:22" + }, + { + "absolutePath": "src/interfaces/ILBHooks.sol", + "file": "../interfaces/ILBHooks.sol", + "id": 8369, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9240, + "sourceUnit": 4435, + "src": "58:52:22", + "symbolAliases": [ + { + "foreign": { + "id": 8368, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "66:8:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Hooks", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 8370, + "nodeType": "StructuredDocumentation", + "src": "112:117:22", + "text": " @title Hooks library\n @notice This library contains functions that should be used to interact with hooks" + }, + "fullyImplemented": true, + "id": 9239, + "linearizedBaseContracts": [ + 9239 + ], + "name": "Hooks", + "nameLocation": "238:5:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "6c93cb9b", + "id": 8372, + "name": "Hooks__CallFailed", + "nameLocation": "256:17:22", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8371, + "nodeType": "ParameterList", + "parameters": [], + "src": "273:2:22" + }, + "src": "250:26:22" + }, + { + "constant": true, + "id": 8383, + "mutability": "constant", + "name": "BEFORE_SWAP_FLAG", + "nameLocation": "308:16:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "282:71:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8373, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "282:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1", + "typeString": "int_const 1461...(41 digits omitted)...2976" + }, + "id": 8380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "343:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313630", + "id": 8379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "348:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "343:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1", + "typeString": "int_const 1461...(41 digits omitted)...2976" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1", + "typeString": "int_const 1461...(41 digits omitted)...2976" + } + ], + "id": 8377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "335:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "335:7:22", + "typeDescriptions": {} + } + }, + "id": 8381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "335:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8374, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "327:7:22", + "typeDescriptions": {} + } + }, + "id": 8382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "327:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8394, + "mutability": "constant", + "name": "AFTER_SWAP_FLAG", + "nameLocation": "385:15:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "359:70:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8384, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "359:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_2923003274661805836407369665432566039311865085952_by_1", + "typeString": "int_const 2923...(41 digits omitted)...5952" + }, + "id": 8391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "419:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313631", + "id": 8390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "424:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_161_by_1", + "typeString": "int_const 161" + }, + "value": "161" + }, + "src": "419:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_2923003274661805836407369665432566039311865085952_by_1", + "typeString": "int_const 2923...(41 digits omitted)...5952" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2923003274661805836407369665432566039311865085952_by_1", + "typeString": "int_const 2923...(41 digits omitted)...5952" + } + ], + "id": 8388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "411:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "411:7:22", + "typeDescriptions": {} + } + }, + "id": 8392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "411:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "403:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8385, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "403:7:22", + "typeDescriptions": {} + } + }, + "id": 8393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "403:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8405, + "mutability": "constant", + "name": "BEFORE_FLASH_LOAN_FLAG", + "nameLocation": "461:22:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "435:77:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8395, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "435:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_5846006549323611672814739330865132078623730171904_by_1", + "typeString": "int_const 5846...(41 digits omitted)...1904" + }, + "id": 8402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "502:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313632", + "id": 8401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "507:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_162_by_1", + "typeString": "int_const 162" + }, + "value": "162" + }, + "src": "502:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_5846006549323611672814739330865132078623730171904_by_1", + "typeString": "int_const 5846...(41 digits omitted)...1904" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5846006549323611672814739330865132078623730171904_by_1", + "typeString": "int_const 5846...(41 digits omitted)...1904" + } + ], + "id": 8399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "494:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8398, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "494:7:22", + "typeDescriptions": {} + } + }, + "id": 8403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "494:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "486:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8396, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "486:7:22", + "typeDescriptions": {} + } + }, + "id": 8404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "486:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8416, + "mutability": "constant", + "name": "AFTER_FLASH_LOAN_FLAG", + "nameLocation": "544:21:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "518:76:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8406, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "518:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_11692013098647223345629478661730264157247460343808_by_1", + "typeString": "int_const 1169...(42 digits omitted)...3808" + }, + "id": 8413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "584:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313633", + "id": 8412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "589:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_163_by_1", + "typeString": "int_const 163" + }, + "value": "163" + }, + "src": "584:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_11692013098647223345629478661730264157247460343808_by_1", + "typeString": "int_const 1169...(42 digits omitted)...3808" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_11692013098647223345629478661730264157247460343808_by_1", + "typeString": "int_const 1169...(42 digits omitted)...3808" + } + ], + "id": 8410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "576:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "576:7:22", + "typeDescriptions": {} + } + }, + "id": 8414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "576:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8408, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "568:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8407, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "568:7:22", + "typeDescriptions": {} + } + }, + "id": 8415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "568:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8427, + "mutability": "constant", + "name": "BEFORE_MINT_FLAG", + "nameLocation": "626:16:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "600:71:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8417, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "600:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_23384026197294446691258957323460528314494920687616_by_1", + "typeString": "int_const 2338...(42 digits omitted)...7616" + }, + "id": 8424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "661:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313634", + "id": 8423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "666:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_164_by_1", + "typeString": "int_const 164" + }, + "value": "164" + }, + "src": "661:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_23384026197294446691258957323460528314494920687616_by_1", + "typeString": "int_const 2338...(42 digits omitted)...7616" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_23384026197294446691258957323460528314494920687616_by_1", + "typeString": "int_const 2338...(42 digits omitted)...7616" + } + ], + "id": 8421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "653:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "653:7:22", + "typeDescriptions": {} + } + }, + "id": 8425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "653:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "645:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8418, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "645:7:22", + "typeDescriptions": {} + } + }, + "id": 8426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "645:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8438, + "mutability": "constant", + "name": "AFTER_MINT_FLAG", + "nameLocation": "703:15:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "677:70:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8428, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "677:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_46768052394588893382517914646921056628989841375232_by_1", + "typeString": "int_const 4676...(42 digits omitted)...5232" + }, + "id": 8435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "737:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313635", + "id": 8434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "742:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_165_by_1", + "typeString": "int_const 165" + }, + "value": "165" + }, + "src": "737:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_46768052394588893382517914646921056628989841375232_by_1", + "typeString": "int_const 4676...(42 digits omitted)...5232" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_46768052394588893382517914646921056628989841375232_by_1", + "typeString": "int_const 4676...(42 digits omitted)...5232" + } + ], + "id": 8432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "729:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "729:7:22", + "typeDescriptions": {} + } + }, + "id": 8436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "729:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "721:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8429, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "721:7:22", + "typeDescriptions": {} + } + }, + "id": 8437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "721:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8449, + "mutability": "constant", + "name": "BEFORE_BURN_FLAG", + "nameLocation": "779:16:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "753:71:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8439, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "753:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_93536104789177786765035829293842113257979682750464_by_1", + "typeString": "int_const 9353...(42 digits omitted)...0464" + }, + "id": 8446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "814:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313636", + "id": 8445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "819:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_166_by_1", + "typeString": "int_const 166" + }, + "value": "166" + }, + "src": "814:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_93536104789177786765035829293842113257979682750464_by_1", + "typeString": "int_const 9353...(42 digits omitted)...0464" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_93536104789177786765035829293842113257979682750464_by_1", + "typeString": "int_const 9353...(42 digits omitted)...0464" + } + ], + "id": 8443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "806:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:22", + "typeDescriptions": {} + } + }, + "id": 8447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "806:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "798:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8440, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "798:7:22", + "typeDescriptions": {} + } + }, + "id": 8448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "798:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8460, + "mutability": "constant", + "name": "AFTER_BURN_FLAG", + "nameLocation": "856:15:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "830:70:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8450, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "830:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_187072209578355573530071658587684226515959365500928_by_1", + "typeString": "int_const 1870...(43 digits omitted)...0928" + }, + "id": 8457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "890:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313637", + "id": 8456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "895:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_167_by_1", + "typeString": "int_const 167" + }, + "value": "167" + }, + "src": "890:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_187072209578355573530071658587684226515959365500928_by_1", + "typeString": "int_const 1870...(43 digits omitted)...0928" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_187072209578355573530071658587684226515959365500928_by_1", + "typeString": "int_const 1870...(43 digits omitted)...0928" + } + ], + "id": 8454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "882:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "882:7:22", + "typeDescriptions": {} + } + }, + "id": 8458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "882:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "874:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8451, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "874:7:22", + "typeDescriptions": {} + } + }, + "id": 8459, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "874:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8471, + "mutability": "constant", + "name": "BEFORE_TRANSFER_FLAG", + "nameLocation": "932:20:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "906:75:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8461, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "906:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_374144419156711147060143317175368453031918731001856_by_1", + "typeString": "int_const 3741...(43 digits omitted)...1856" + }, + "id": 8468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8466, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "971:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313638", + "id": 8467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "976:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + "value": "168" + }, + "src": "971:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_374144419156711147060143317175368453031918731001856_by_1", + "typeString": "int_const 3741...(43 digits omitted)...1856" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_374144419156711147060143317175368453031918731001856_by_1", + "typeString": "int_const 3741...(43 digits omitted)...1856" + } + ], + "id": 8465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "963:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "963:7:22", + "typeDescriptions": {} + } + }, + "id": 8469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "963:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "955:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8462, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "955:7:22", + "typeDescriptions": {} + } + }, + "id": 8470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "955:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8482, + "mutability": "constant", + "name": "AFTER_TRANSFER_FLAG", + "nameLocation": "1013:19:22", + "nodeType": "VariableDeclaration", + "scope": 9239, + "src": "987:74:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8472, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "987:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_748288838313422294120286634350736906063837462003712_by_1", + "typeString": "int_const 7482...(43 digits omitted)...3712" + }, + "id": 8479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1051:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313639", + "id": 8478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1056:3:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_169_by_1", + "typeString": "int_const 169" + }, + "value": "169" + }, + "src": "1051:8:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_748288838313422294120286634350736906063837462003712_by_1", + "typeString": "int_const 7482...(43 digits omitted)...3712" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_748288838313422294120286634350736906063837462003712_by_1", + "typeString": "int_const 7482...(43 digits omitted)...3712" + } + ], + "id": 8476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1043:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1043:7:22", + "typeDescriptions": {} + } + }, + "id": 8480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1043:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1035:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8473, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1035:7:22", + "typeDescriptions": {} + } + }, + "id": 8481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1035:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "canonicalName": "Hooks.Parameters", + "id": 8505, + "members": [ + { + "constant": false, + "id": 8484, + "mutability": "mutable", + "name": "hooks", + "nameLocation": "1104:5:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1096:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1096:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8486, + "mutability": "mutable", + "name": "beforeSwap", + "nameLocation": "1124:10:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1119:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8485, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1119:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8488, + "mutability": "mutable", + "name": "afterSwap", + "nameLocation": "1149:9:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1144:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8487, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1144:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8490, + "mutability": "mutable", + "name": "beforeFlashLoan", + "nameLocation": "1173:15:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1168:20:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8489, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1168:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8492, + "mutability": "mutable", + "name": "afterFlashLoan", + "nameLocation": "1203:14:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1198:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8491, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1198:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8494, + "mutability": "mutable", + "name": "beforeMint", + "nameLocation": "1232:10:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1227:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8493, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1227:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8496, + "mutability": "mutable", + "name": "afterMint", + "nameLocation": "1257:9:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1252:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8495, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1252:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8498, + "mutability": "mutable", + "name": "beforeBurn", + "nameLocation": "1281:10:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1276:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8497, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1276:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8500, + "mutability": "mutable", + "name": "afterBurn", + "nameLocation": "1306:9:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1301:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8499, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1301:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8502, + "mutability": "mutable", + "name": "beforeBatchTransferFrom", + "nameLocation": "1330:23:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1325:28:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8501, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1325:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8504, + "mutability": "mutable", + "name": "afterBatchTransferFrom", + "nameLocation": "1368:22:22", + "nodeType": "VariableDeclaration", + "scope": 8505, + "src": "1363:27:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8503, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1363:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "Parameters", + "nameLocation": "1075:10:22", + "nodeType": "StructDefinition", + "scope": 9239, + "src": "1068:329:22", + "visibility": "public" + }, + { + "body": { + "id": 8601, + "nodeType": "Block", + "src": "1704:854:22", + "statements": [ + { + "expression": { + "id": 8529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8514, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "1714:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 8523, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "1764:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8524, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1775:5:22", + "memberName": "hooks", + "nodeType": "MemberAccess", + "referencedDeclaration": 8484, + "src": "1764:16:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8522, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1756:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1756:7:22", + "typeDescriptions": {} + } + }, + "id": 8525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1756:25:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1748:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8519, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1748:7:22", + "typeDescriptions": {} + } + }, + "id": 8526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1748:34:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 8518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1740:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1740:7:22", + "typeDescriptions": {} + } + }, + "id": 8527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1740:43:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1732:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8515, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1732:7:22", + "typeDescriptions": {} + } + }, + "id": 8528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1732:52:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1714:70:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8530, + "nodeType": "ExpressionStatement", + "src": "1714:70:22" + }, + { + "condition": { + "expression": { + "id": 8531, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "1799:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8532, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1810:10:22", + "memberName": "beforeSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8486, + "src": "1799:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8537, + "nodeType": "IfStatement", + "src": "1795:62:22", + "trueBody": { + "expression": { + "id": 8535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8533, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "1822:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8534, + "name": "BEFORE_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8383, + "src": "1841:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1822:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8536, + "nodeType": "ExpressionStatement", + "src": "1822:35:22" + } + }, + { + "condition": { + "expression": { + "id": 8538, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "1871:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8539, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1882:9:22", + "memberName": "afterSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8488, + "src": "1871:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8544, + "nodeType": "IfStatement", + "src": "1867:60:22", + "trueBody": { + "expression": { + "id": 8542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8540, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "1893:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8541, + "name": "AFTER_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8394, + "src": "1912:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1893:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8543, + "nodeType": "ExpressionStatement", + "src": "1893:34:22" + } + }, + { + "condition": { + "expression": { + "id": 8545, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "1941:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8546, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1952:15:22", + "memberName": "beforeFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8490, + "src": "1941:26:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8551, + "nodeType": "IfStatement", + "src": "1937:73:22", + "trueBody": { + "expression": { + "id": 8549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8547, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "1969:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8548, + "name": "BEFORE_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8405, + "src": "1988:22:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1969:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8550, + "nodeType": "ExpressionStatement", + "src": "1969:41:22" + } + }, + { + "condition": { + "expression": { + "id": 8552, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "2024:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8553, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2035:14:22", + "memberName": "afterFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8492, + "src": "2024:25:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8558, + "nodeType": "IfStatement", + "src": "2020:71:22", + "trueBody": { + "expression": { + "id": 8556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8554, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "2051:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8555, + "name": "AFTER_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8416, + "src": "2070:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2051:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8557, + "nodeType": "ExpressionStatement", + "src": "2051:40:22" + } + }, + { + "condition": { + "expression": { + "id": 8559, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "2105:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2116:10:22", + "memberName": "beforeMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8494, + "src": "2105:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8565, + "nodeType": "IfStatement", + "src": "2101:62:22", + "trueBody": { + "expression": { + "id": 8563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8561, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "2128:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8562, + "name": "BEFORE_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8427, + "src": "2147:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2128:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8564, + "nodeType": "ExpressionStatement", + "src": "2128:35:22" + } + }, + { + "condition": { + "expression": { + "id": 8566, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "2177:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2188:9:22", + "memberName": "afterMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8496, + "src": "2177:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8572, + "nodeType": "IfStatement", + "src": "2173:60:22", + "trueBody": { + "expression": { + "id": 8570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8568, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "2199:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8569, + "name": "AFTER_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8438, + "src": "2218:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2199:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8571, + "nodeType": "ExpressionStatement", + "src": "2199:34:22" + } + }, + { + "condition": { + "expression": { + "id": 8573, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "2247:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2258:10:22", + "memberName": "beforeBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8498, + "src": "2247:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8579, + "nodeType": "IfStatement", + "src": "2243:62:22", + "trueBody": { + "expression": { + "id": 8577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8575, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "2270:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8576, + "name": "BEFORE_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8449, + "src": "2289:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2270:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8578, + "nodeType": "ExpressionStatement", + "src": "2270:35:22" + } + }, + { + "condition": { + "expression": { + "id": 8580, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "2319:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8581, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2330:9:22", + "memberName": "afterBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8500, + "src": "2319:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8586, + "nodeType": "IfStatement", + "src": "2315:60:22", + "trueBody": { + "expression": { + "id": 8584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8582, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "2341:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8583, + "name": "AFTER_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8460, + "src": "2360:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2341:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8585, + "nodeType": "ExpressionStatement", + "src": "2341:34:22" + } + }, + { + "condition": { + "expression": { + "id": 8587, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "2389:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2400:23:22", + "memberName": "beforeBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8502, + "src": "2389:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8593, + "nodeType": "IfStatement", + "src": "2385:79:22", + "trueBody": { + "expression": { + "id": 8591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8589, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "2425:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8590, + "name": "BEFORE_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8471, + "src": "2444:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2425:39:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8592, + "nodeType": "ExpressionStatement", + "src": "2425:39:22" + } + }, + { + "condition": { + "expression": { + "id": 8594, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8509, + "src": "2478:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8595, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2489:22:22", + "memberName": "afterBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8504, + "src": "2478:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8600, + "nodeType": "IfStatement", + "src": "2474:77:22", + "trueBody": { + "expression": { + "id": 8598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8596, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8512, + "src": "2513:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8597, + "name": "AFTER_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8482, + "src": "2532:19:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2513:38:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8599, + "nodeType": "ExpressionStatement", + "src": "2513:38:22" + } + } + ] + }, + "documentation": { + "id": 8506, + "nodeType": "StructuredDocumentation", + "src": "1403:202:22", + "text": " @dev Helper function to encode the hooks parameters to a single bytes32 value\n @param parameters The hooks parameters\n @return hooksParameters The encoded hooks parameters" + }, + "id": 8602, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "1619:6:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8509, + "mutability": "mutable", + "name": "parameters", + "nameLocation": "1644:10:22", + "nodeType": "VariableDeclaration", + "scope": 8602, + "src": "1626:28:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters" + }, + "typeName": { + "id": 8508, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8507, + "name": "Parameters", + "nameLocations": [ + "1626:10:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8505, + "src": "1626:10:22" + }, + "referencedDeclaration": 8505, + "src": "1626:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_storage_ptr", + "typeString": "struct Hooks.Parameters" + } + }, + "visibility": "internal" + } + ], + "src": "1625:30:22" + }, + "returnParameters": { + "id": 8513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8512, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "1687:15:22", + "nodeType": "VariableDeclaration", + "scope": 8602, + "src": "1679:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8511, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1679:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1678:25:22" + }, + "scope": 9239, + "src": "1610:948:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8729, + "nodeType": "Block", + "src": "2867:858:22", + "statements": [ + { + "expression": { + "id": 8617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8611, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "2877:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8613, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2888:5:22", + "memberName": "hooks", + "nodeType": "MemberAccess", + "referencedDeclaration": 8484, + "src": "2877:16:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8615, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "2905:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8614, + "name": "getHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8752, + "src": "2896:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) pure returns (address)" + } + }, + "id": 8616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2896:25:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2877:44:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8618, + "nodeType": "ExpressionStatement", + "src": "2877:44:22" + }, + { + "expression": { + "id": 8628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8619, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "2932:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8621, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2943:10:22", + "memberName": "beforeSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8486, + "src": "2932:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8622, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "2957:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8623, + "name": "BEFORE_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8383, + "src": "2975:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2957:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8625, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2956:36:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2996:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2956:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2932:65:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8629, + "nodeType": "ExpressionStatement", + "src": "2932:65:22" + }, + { + "expression": { + "id": 8639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8630, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3007:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8632, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3018:9:22", + "memberName": "afterSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8488, + "src": "3007:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8633, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3031:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8634, + "name": "AFTER_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8394, + "src": "3049:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3031:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8636, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3030:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3069:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3030:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3007:63:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8640, + "nodeType": "ExpressionStatement", + "src": "3007:63:22" + }, + { + "expression": { + "id": 8650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8641, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3080:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3091:15:22", + "memberName": "beforeFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8490, + "src": "3080:26:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8644, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3110:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8645, + "name": "BEFORE_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8405, + "src": "3128:22:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3110:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8647, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3109:42:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3155:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3109:47:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3080:76:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8651, + "nodeType": "ExpressionStatement", + "src": "3080:76:22" + }, + { + "expression": { + "id": 8661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8652, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3166:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3177:14:22", + "memberName": "afterFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8492, + "src": "3166:25:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8655, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3195:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8656, + "name": "AFTER_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8416, + "src": "3213:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3195:39:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8658, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3194:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3239:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3194:46:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3166:74:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8662, + "nodeType": "ExpressionStatement", + "src": "3166:74:22" + }, + { + "expression": { + "id": 8672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8663, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3250:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3261:10:22", + "memberName": "beforeMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8494, + "src": "3250:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8666, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3275:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8667, + "name": "BEFORE_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8427, + "src": "3293:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3275:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8669, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3274:36:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3314:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3274:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3250:65:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8673, + "nodeType": "ExpressionStatement", + "src": "3250:65:22" + }, + { + "expression": { + "id": 8683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8674, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3325:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8676, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3336:9:22", + "memberName": "afterMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8496, + "src": "3325:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8677, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3349:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8678, + "name": "AFTER_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8438, + "src": "3367:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3349:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8680, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3348:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3387:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3348:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3325:63:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8684, + "nodeType": "ExpressionStatement", + "src": "3325:63:22" + }, + { + "expression": { + "id": 8694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8685, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3398:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8687, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3409:10:22", + "memberName": "beforeBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8498, + "src": "3398:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8688, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3423:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8689, + "name": "BEFORE_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8449, + "src": "3441:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3423:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8691, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3422:36:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3462:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3422:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3398:65:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8695, + "nodeType": "ExpressionStatement", + "src": "3398:65:22" + }, + { + "expression": { + "id": 8705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8696, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3473:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3484:9:22", + "memberName": "afterBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8500, + "src": "3473:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8699, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3497:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8700, + "name": "AFTER_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8460, + "src": "3515:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3497:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8702, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3496:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3535:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3496:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3473:63:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8706, + "nodeType": "ExpressionStatement", + "src": "3473:63:22" + }, + { + "expression": { + "id": 8716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8707, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3546:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3557:23:22", + "memberName": "beforeBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8502, + "src": "3546:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8710, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3584:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8711, + "name": "BEFORE_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8471, + "src": "3602:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3584:38:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8713, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3583:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3627:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3583:45:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3546:82:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8717, + "nodeType": "ExpressionStatement", + "src": "3546:82:22" + }, + { + "expression": { + "id": 8727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8718, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8609, + "src": "3638:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3649:22:22", + "memberName": "afterBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8504, + "src": "3638:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8721, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8605, + "src": "3675:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8722, + "name": "AFTER_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8482, + "src": "3693:19:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3675:37:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8724, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3674:39:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3717:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3674:44:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3638:80:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8728, + "nodeType": "ExpressionStatement", + "src": "3638:80:22" + } + ] + }, + "documentation": { + "id": 8603, + "nodeType": "StructuredDocumentation", + "src": "2564:204:22", + "text": " @dev Helper function to decode the hooks parameters from a single bytes32 value\n @param hooksParameters The encoded hooks parameters\n @return parameters The hooks parameters" + }, + "id": 8730, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode", + "nameLocation": "2782:6:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8605, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "2797:15:22", + "nodeType": "VariableDeclaration", + "scope": 8730, + "src": "2789:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8604, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2789:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2788:25:22" + }, + "returnParameters": { + "id": 8610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8609, + "mutability": "mutable", + "name": "parameters", + "nameLocation": "2855:10:22", + "nodeType": "VariableDeclaration", + "scope": 8730, + "src": "2837:28:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_memory_ptr", + "typeString": "struct Hooks.Parameters" + }, + "typeName": { + "id": 8608, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8607, + "name": "Parameters", + "nameLocations": [ + "2837:10:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8505, + "src": "2837:10:22" + }, + "referencedDeclaration": 8505, + "src": "2837:10:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8505_storage_ptr", + "typeString": "struct Hooks.Parameters" + } + }, + "visibility": "internal" + } + ], + "src": "2836:30:22" + }, + "scope": 9239, + "src": "2773:952:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8751, + "nodeType": "Block", + "src": "4013:67:22", + "statements": [ + { + "expression": { + "id": 8749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8738, + "name": "hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8736, + "src": "4023:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 8745, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8733, + "src": "4055:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4047:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4047:7:22", + "typeDescriptions": {} + } + }, + "id": 8746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4047:24:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4039:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8741, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "4039:7:22", + "typeDescriptions": {} + } + }, + "id": 8747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4039:33:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 8740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4031:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4031:7:22", + "typeDescriptions": {} + } + }, + "id": 8748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4031:42:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4023:50:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8750, + "nodeType": "ExpressionStatement", + "src": "4023:50:22" + } + ] + }, + "documentation": { + "id": 8731, + "nodeType": "StructuredDocumentation", + "src": "3731:196:22", + "text": " @dev Helper function to get the hooks address from the encoded hooks parameters\n @param hooksParameters The encoded hooks parameters\n @return hooks The hooks address" + }, + "id": 8752, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getHooks", + "nameLocation": "3941:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8733, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "3958:15:22", + "nodeType": "VariableDeclaration", + "scope": 8752, + "src": "3950:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8732, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3950:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3949:25:22" + }, + "returnParameters": { + "id": 8737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8736, + "mutability": "mutable", + "name": "hooks", + "nameLocation": "4006:5:22", + "nodeType": "VariableDeclaration", + "scope": 8752, + "src": "3998:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8735, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3998:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3997:15:22" + }, + "scope": 9239, + "src": "3932:148:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8781, + "nodeType": "Block", + "src": "4444:95:22", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 8766, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8755, + "src": "4477:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4469:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes12_$", + "typeString": "type(bytes12)" + }, + "typeName": { + "id": 8764, + "name": "bytes12", + "nodeType": "ElementaryTypeName", + "src": "4469:7:22", + "typeDescriptions": {} + } + }, + "id": 8767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4469:24:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + ], + "id": 8763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4461:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8762, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4461:7:22", + "typeDescriptions": {} + } + }, + "id": 8768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4461:33:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 8775, + "name": "newHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8757, + "src": "4521:8:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4513:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8773, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "4513:7:22", + "typeDescriptions": {} + } + }, + "id": 8776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4513:17:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 8772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4505:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4505:7:22", + "typeDescriptions": {} + } + }, + "id": 8777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4505:26:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4497:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8769, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4497:7:22", + "typeDescriptions": {} + } + }, + "id": 8778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4497:35:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4461:71:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 8761, + "id": 8780, + "nodeType": "Return", + "src": "4454:78:22" + } + ] + }, + "documentation": { + "id": 8753, + "nodeType": "StructuredDocumentation", + "src": "4086:260:22", + "text": " @dev Helper function to set the hooks address in the encoded hooks parameters\n @param hooksParameters The encoded hooks parameters\n @param newHooks The new hooks address\n @return hooksParameters The updated hooks parameters" + }, + "id": 8782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setHooks", + "nameLocation": "4360:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8758, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8755, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "4377:15:22", + "nodeType": "VariableDeclaration", + "scope": 8782, + "src": "4369:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8754, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4369:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8757, + "mutability": "mutable", + "name": "newHooks", + "nameLocation": "4402:8:22", + "nodeType": "VariableDeclaration", + "scope": 8782, + "src": "4394:16:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4394:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4368:43:22" + }, + "returnParameters": { + "id": 8761, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8760, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8782, + "src": "4435:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8759, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4435:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4434:9:22" + }, + "scope": 9239, + "src": "4351:188:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8797, + "nodeType": "Block", + "src": "4811:49:22", + "statements": [ + { + "expression": { + "id": 8795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8790, + "name": "flags", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8788, + "src": "4821:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8793, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8785, + "src": "4837:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4829:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes12_$", + "typeString": "type(bytes12)" + }, + "typeName": { + "id": 8791, + "name": "bytes12", + "nodeType": "ElementaryTypeName", + "src": "4829:7:22", + "typeDescriptions": {} + } + }, + "id": 8794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4829:24:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "src": "4821:32:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "id": 8796, + "nodeType": "ExpressionStatement", + "src": "4821:32:22" + } + ] + }, + "documentation": { + "id": 8783, + "nodeType": "StructuredDocumentation", + "src": "4545:180:22", + "text": " @dev Helper function to get the flags from the encoded hooks parameters\n @param hooksParameters The encoded hooks parameters\n @return flags The flags" + }, + "id": 8798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFlags", + "nameLocation": "4739:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8785, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "4756:15:22", + "nodeType": "VariableDeclaration", + "scope": 8798, + "src": "4748:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8784, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4748:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4747:25:22" + }, + "returnParameters": { + "id": 8789, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8788, + "mutability": "mutable", + "name": "flags", + "nameLocation": "4804:5:22", + "nodeType": "VariableDeclaration", + "scope": 8798, + "src": "4796:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + }, + "typeName": { + "id": 8787, + "name": "bytes12", + "nodeType": "ElementaryTypeName", + "src": "4796:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "visibility": "internal" + } + ], + "src": "4795:15:22" + }, + "scope": 9239, + "src": "4730:130:22", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8823, + "nodeType": "Block", + "src": "5223:210:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8806, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8801, + "src": "5237:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5256:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5237:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8822, + "nodeType": "IfStatement", + "src": "5233:194:22", + "trueBody": { + "id": 8821, + "nodeType": "Block", + "src": "5259:168:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8810, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8801, + "src": "5300:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8813, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "5340:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5349:10:22", + "memberName": "onHooksSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 4287, + "src": "5340:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.onHooksSet(bytes32,bytes calldata) returns (bytes4)" + } + }, + "id": 8815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5360:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "5340:28:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8816, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8801, + "src": "5370:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8817, + "name": "onHooksSetData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8803, + "src": "5387:14:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 8811, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "5317:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5321:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "5317:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5317:85:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8809, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "5273:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5273:143:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8820, + "nodeType": "ExpressionStatement", + "src": "5273:143:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 8799, + "nodeType": "StructuredDocumentation", + "src": "4866:267:22", + "text": " @dev Helper function call the onHooksSet function on the hooks contract, only if the\n hooksParameters is not 0\n @param hooksParameters The encoded hooks parameters\n @param onHooksSetData The data to pass to the onHooksSet function" + }, + "id": 8824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onHooksSet", + "nameLocation": "5147:10:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8801, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "5166:15:22", + "nodeType": "VariableDeclaration", + "scope": 8824, + "src": "5158:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8800, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5158:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8803, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "5198:14:22", + "nodeType": "VariableDeclaration", + "scope": 8824, + "src": "5183:29:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8802, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5183:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5157:56:22" + }, + "returnParameters": { + "id": 8805, + "nodeType": "ParameterList", + "parameters": [], + "src": "5223:0:22" + }, + "scope": 9239, + "src": "5138:295:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8860, + "nodeType": "Block", + "src": "5942:231:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8838, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8827, + "src": "5957:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8839, + "name": "BEFORE_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8383, + "src": "5975:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5957:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8841, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5956:36:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5996:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5956:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8859, + "nodeType": "IfStatement", + "src": "5952:215:22", + "trueBody": { + "id": 8858, + "nodeType": "Block", + "src": "5999:168:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8845, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8827, + "src": "6040:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8848, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "6080:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6089:10:22", + "memberName": "beforeSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 4300, + "src": "6080:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bool_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeSwap(address,address,bool,bytes32) returns (bytes4)" + } + }, + "id": 8850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6100:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6080:28:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8851, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8829, + "src": "6110:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8852, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8831, + "src": "6118:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8853, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8833, + "src": "6122:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 8854, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8835, + "src": "6132:9:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8846, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "6057:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6061:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "6057:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6057:85:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8844, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "6013:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6013:143:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8857, + "nodeType": "ExpressionStatement", + "src": "6013:143:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 8825, + "nodeType": "StructuredDocumentation", + "src": "5439:370:22", + "text": " @dev Helper function to call the beforeSwap function on the hooks contract, only if the\n BEFORE_SWAP_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param swapForY Whether the swap is for Y\n @param amountsIn The amounts in" + }, + "id": 8861, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeSwap", + "nameLocation": "5823:10:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8827, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "5842:15:22", + "nodeType": "VariableDeclaration", + "scope": 8861, + "src": "5834:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8826, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5834:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8829, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5867:6:22", + "nodeType": "VariableDeclaration", + "scope": 8861, + "src": "5859:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8828, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5859:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8831, + "mutability": "mutable", + "name": "to", + "nameLocation": "5883:2:22", + "nodeType": "VariableDeclaration", + "scope": 8861, + "src": "5875:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5875:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8833, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "5892:8:22", + "nodeType": "VariableDeclaration", + "scope": 8861, + "src": "5887:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8832, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5887:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8835, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "5910:9:22", + "nodeType": "VariableDeclaration", + "scope": 8861, + "src": "5902:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8834, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5902:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5833:87:22" + }, + "returnParameters": { + "id": 8837, + "nodeType": "ParameterList", + "parameters": [], + "src": "5942:0:22" + }, + "scope": 9239, + "src": "5814:359:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8897, + "nodeType": "Block", + "src": "6682:230:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8875, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8864, + "src": "6697:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8876, + "name": "AFTER_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8394, + "src": "6715:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6697:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8878, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6696:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6735:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6696:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8896, + "nodeType": "IfStatement", + "src": "6692:214:22", + "trueBody": { + "id": 8895, + "nodeType": "Block", + "src": "6738:168:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8882, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8864, + "src": "6779:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8885, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "6819:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6828:9:22", + "memberName": "afterSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 4313, + "src": "6819:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bool_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterSwap(address,address,bool,bytes32) returns (bytes4)" + } + }, + "id": 8887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6838:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6819:27:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8888, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8866, + "src": "6848:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8889, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8868, + "src": "6856:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8890, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8870, + "src": "6860:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 8891, + "name": "amountsOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8872, + "src": "6870:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8883, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "6796:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6800:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "6796:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6796:85:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8881, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "6752:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6752:143:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8894, + "nodeType": "ExpressionStatement", + "src": "6752:143:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 8862, + "nodeType": "StructuredDocumentation", + "src": "6179:370:22", + "text": " @dev Helper function to call the afterSwap function on the hooks contract, only if the\n AFTER_SWAP_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param swapForY Whether the swap is for Y\n @param amountsOut The amounts out" + }, + "id": 8898, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterSwap", + "nameLocation": "6563:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8864, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "6581:15:22", + "nodeType": "VariableDeclaration", + "scope": 8898, + "src": "6573:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8863, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6573:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8866, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6606:6:22", + "nodeType": "VariableDeclaration", + "scope": 8898, + "src": "6598:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6598:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8868, + "mutability": "mutable", + "name": "to", + "nameLocation": "6622:2:22", + "nodeType": "VariableDeclaration", + "scope": 8898, + "src": "6614:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8867, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6614:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8870, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "6631:8:22", + "nodeType": "VariableDeclaration", + "scope": 8898, + "src": "6626:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8869, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6626:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8872, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "6649:10:22", + "nodeType": "VariableDeclaration", + "scope": 8898, + "src": "6641:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8871, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6641:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6572:88:22" + }, + "returnParameters": { + "id": 8874, + "nodeType": "ParameterList", + "parameters": [], + "src": "6682:0:22" + }, + "scope": 9239, + "src": "6554:358:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8931, + "nodeType": "Block", + "src": "7354:200:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8910, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8901, + "src": "7369:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8911, + "name": "BEFORE_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8405, + "src": "7387:22:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7369:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8913, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7368:42:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7414:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7368:47:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8930, + "nodeType": "IfStatement", + "src": "7364:184:22", + "trueBody": { + "id": 8929, + "nodeType": "Block", + "src": "7417:131:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8917, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8901, + "src": "7441:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8920, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "7481:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7490:15:22", + "memberName": "beforeFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 4324, + "src": "7481:24:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeFlashLoan(address,address,bytes32) returns (bytes4)" + } + }, + "id": 8922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7506:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "7481:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8923, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8903, + "src": "7516:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8924, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8905, + "src": "7524:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8925, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8907, + "src": "7528:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8918, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "7458:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7462:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "7458:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7458:78:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8916, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "7431:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7431:106:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8928, + "nodeType": "ExpressionStatement", + "src": "7431:106:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 8899, + "nodeType": "StructuredDocumentation", + "src": "6918:327:22", + "text": " @dev Helper function to call the beforeFlashLoan function on the hooks contract, only if the\n BEFORE_FLASH_LOAN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param amounts The amounts" + }, + "id": 8932, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeFlashLoan", + "nameLocation": "7259:15:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8901, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "7283:15:22", + "nodeType": "VariableDeclaration", + "scope": 8932, + "src": "7275:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8900, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7275:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8903, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7308:6:22", + "nodeType": "VariableDeclaration", + "scope": 8932, + "src": "7300:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8902, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7300:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8905, + "mutability": "mutable", + "name": "to", + "nameLocation": "7324:2:22", + "nodeType": "VariableDeclaration", + "scope": 8932, + "src": "7316:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8904, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7316:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8907, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "7336:7:22", + "nodeType": "VariableDeclaration", + "scope": 8932, + "src": "7328:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8906, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7328:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7274:70:22" + }, + "returnParameters": { + "id": 8909, + "nodeType": "ParameterList", + "parameters": [], + "src": "7354:0:22" + }, + "scope": 9239, + "src": "7250:304:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8968, + "nodeType": "Block", + "src": "8063:255:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8946, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8935, + "src": "8078:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8947, + "name": "AFTER_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8416, + "src": "8096:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8078:39:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8949, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8077:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8122:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8077:46:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8967, + "nodeType": "IfStatement", + "src": "8073:239:22", + "trueBody": { + "id": 8966, + "nodeType": "Block", + "src": "8125:187:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8953, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8935, + "src": "8166:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8956, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "8222:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8231:14:22", + "memberName": "afterFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 4337, + "src": "8222:23:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterFlashLoan(address,address,bytes32,bytes32) returns (bytes4)" + } + }, + "id": 8958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8246:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "8222:32:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8959, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8937, + "src": "8256:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8960, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8939, + "src": "8264:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8961, + "name": "fees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8941, + "src": "8268:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8962, + "name": "feesReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8943, + "src": "8274:12:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8954, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "8199:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8955, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8203:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "8199:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8199:88:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8952, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "8139:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8139:162:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8965, + "nodeType": "ExpressionStatement", + "src": "8139:162:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 8933, + "nodeType": "StructuredDocumentation", + "src": "7560:364:22", + "text": " @dev Helper function to call the afterFlashLoan function on the hooks contract, only if the\n AFTER_FLASH_LOAN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param fees The fees\n @param feesReceived The fees received" + }, + "id": 8969, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterFlashLoan", + "nameLocation": "7938:14:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8935, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "7961:15:22", + "nodeType": "VariableDeclaration", + "scope": 8969, + "src": "7953:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8934, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7953:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8937, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7986:6:22", + "nodeType": "VariableDeclaration", + "scope": 8969, + "src": "7978:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7978:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8939, + "mutability": "mutable", + "name": "to", + "nameLocation": "8002:2:22", + "nodeType": "VariableDeclaration", + "scope": 8969, + "src": "7994:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7994:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8941, + "mutability": "mutable", + "name": "fees", + "nameLocation": "8014:4:22", + "nodeType": "VariableDeclaration", + "scope": 8969, + "src": "8006:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8940, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8006:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8943, + "mutability": "mutable", + "name": "feesReceived", + "nameLocation": "8028:12:22", + "nodeType": "VariableDeclaration", + "scope": 8969, + "src": "8020:20:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8020:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7952:89:22" + }, + "returnParameters": { + "id": 8945, + "nodeType": "ParameterList", + "parameters": [], + "src": "8063:0:22" + }, + "scope": 9239, + "src": "7929:389:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9006, + "nodeType": "Block", + "src": "8905:261:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8984, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8972, + "src": "8920:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8985, + "name": "BEFORE_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8427, + "src": "8938:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8920:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8987, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8919:36:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8959:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8919:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9005, + "nodeType": "IfStatement", + "src": "8915:245:22", + "trueBody": { + "id": 9004, + "nodeType": "Block", + "src": "8962:198:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8991, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8972, + "src": "9003:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8994, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "9059:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9068:10:22", + "memberName": "beforeMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4351, + "src": "9059:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeMint(address,address,bytes32[] calldata,bytes32) returns (bytes4)" + } + }, + "id": 8996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9079:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "9059:28:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8997, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8974, + "src": "9089:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8998, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8976, + "src": "9097:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8999, + "name": "liquidityConfigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8979, + "src": "9101:16:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + { + "id": 9000, + "name": "amountsReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8981, + "src": "9119:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8992, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "9036:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9040:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "9036:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9036:99:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8990, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "8976:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 9002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8976:173:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9003, + "nodeType": "ExpressionStatement", + "src": "8976:173:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 8970, + "nodeType": "StructuredDocumentation", + "src": "8324:386:22", + "text": " @dev Helper function to call the beforeMint function on the hooks contract, only if the\n BEFORE_MINT_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param liquidityConfigs The liquidity configs\n @param amountsReceived The amounts received" + }, + "id": 9007, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeMint", + "nameLocation": "8724:10:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8982, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8972, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "8752:15:22", + "nodeType": "VariableDeclaration", + "scope": 9007, + "src": "8744:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8971, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8744:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8974, + "mutability": "mutable", + "name": "sender", + "nameLocation": "8785:6:22", + "nodeType": "VariableDeclaration", + "scope": 9007, + "src": "8777:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8777:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8976, + "mutability": "mutable", + "name": "to", + "nameLocation": "8809:2:22", + "nodeType": "VariableDeclaration", + "scope": 9007, + "src": "8801:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8801:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8979, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "8840:16:22", + "nodeType": "VariableDeclaration", + "scope": 9007, + "src": "8821:35:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 8977, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8821:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8978, + "nodeType": "ArrayTypeName", + "src": "8821:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8981, + "mutability": "mutable", + "name": "amountsReceived", + "nameLocation": "8874:15:22", + "nodeType": "VariableDeclaration", + "scope": 9007, + "src": "8866:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8980, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8866:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8734:161:22" + }, + "returnParameters": { + "id": 8983, + "nodeType": "ParameterList", + "parameters": [], + "src": "8905:0:22" + }, + "scope": 9239, + "src": "8715:451:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9044, + "nodeType": "Block", + "src": "9732:253:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9022, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9010, + "src": "9747:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 9023, + "name": "AFTER_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8438, + "src": "9765:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9747:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 9025, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9746:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9785:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9746:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9043, + "nodeType": "IfStatement", + "src": "9742:237:22", + "trueBody": { + "id": 9042, + "nodeType": "Block", + "src": "9788:191:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9029, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9010, + "src": "9829:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 9032, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "9885:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 9033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9894:9:22", + "memberName": "afterMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4365, + "src": "9885:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterMint(address,address,bytes32[] calldata,bytes32) returns (bytes4)" + } + }, + "id": 9034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9904:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "9885:27:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 9035, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9012, + "src": "9914:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9036, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9014, + "src": "9922:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9037, + "name": "liquidityConfigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9017, + "src": "9926:16:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + { + "id": 9038, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9019, + "src": "9944:9:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 9030, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "9862:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9866:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "9862:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9862:92:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9028, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "9802:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 9040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9802:166:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9041, + "nodeType": "ExpressionStatement", + "src": "9802:166:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 9008, + "nodeType": "StructuredDocumentation", + "src": "9172:372:22", + "text": " @dev Helper function to call the afterMint function on the hooks contract, only if the\n AFTER_MINT_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param liquidityConfigs The liquidity configs\n @param amountsIn The amounts in" + }, + "id": 9045, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterMint", + "nameLocation": "9558:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9020, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9010, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "9585:15:22", + "nodeType": "VariableDeclaration", + "scope": 9045, + "src": "9577:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9009, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9577:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9012, + "mutability": "mutable", + "name": "sender", + "nameLocation": "9618:6:22", + "nodeType": "VariableDeclaration", + "scope": 9045, + "src": "9610:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9610:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9014, + "mutability": "mutable", + "name": "to", + "nameLocation": "9642:2:22", + "nodeType": "VariableDeclaration", + "scope": 9045, + "src": "9634:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9013, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9634:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9017, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "9673:16:22", + "nodeType": "VariableDeclaration", + "scope": 9045, + "src": "9654:35:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 9015, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9654:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9016, + "nodeType": "ArrayTypeName", + "src": "9654:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9019, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "9707:9:22", + "nodeType": "VariableDeclaration", + "scope": 9045, + "src": "9699:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9018, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9699:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "9567:155:22" + }, + "returnParameters": { + "id": 9021, + "nodeType": "ParameterList", + "parameters": [], + "src": "9732:0:22" + }, + "scope": 9239, + "src": "9549:436:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9086, + "nodeType": "Block", + "src": "10590:252:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9063, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9048, + "src": "10605:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 9064, + "name": "BEFORE_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8449, + "src": "10623:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "10605:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 9066, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10604:36:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10644:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10604:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9085, + "nodeType": "IfStatement", + "src": "10600:236:22", + "trueBody": { + "id": 9084, + "nodeType": "Block", + "src": "10647:189:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9070, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9048, + "src": "10688:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 9073, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "10744:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 9074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10753:10:22", + "memberName": "beforeBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 4382, + "src": "10744:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeBurn(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 9075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10764:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "10744:28:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 9076, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9050, + "src": "10774:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9077, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9052, + "src": "10782:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9078, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9054, + "src": "10788:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9079, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9057, + "src": "10792:3:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 9080, + "name": "amountsToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9060, + "src": "10797:13:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 9071, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "10721:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10725:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "10721:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10721:90:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9069, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "10661:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 9082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10661:164:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9083, + "nodeType": "ExpressionStatement", + "src": "10661:164:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 9046, + "nodeType": "StructuredDocumentation", + "src": "9991:386:22", + "text": " @dev Helper function to call the beforeBurn function on the hooks contract, only if the\n BEFORE_BURN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The ids\n @param amountsToBurn The amounts to burn" + }, + "id": 9087, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeBurn", + "nameLocation": "10391:10:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9048, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "10419:15:22", + "nodeType": "VariableDeclaration", + "scope": 9087, + "src": "10411:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9047, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10411:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9050, + "mutability": "mutable", + "name": "sender", + "nameLocation": "10452:6:22", + "nodeType": "VariableDeclaration", + "scope": 9087, + "src": "10444:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10444:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9052, + "mutability": "mutable", + "name": "from", + "nameLocation": "10476:4:22", + "nodeType": "VariableDeclaration", + "scope": 9087, + "src": "10468:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10468:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9054, + "mutability": "mutable", + "name": "to", + "nameLocation": "10498:2:22", + "nodeType": "VariableDeclaration", + "scope": 9087, + "src": "10490:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10490:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9057, + "mutability": "mutable", + "name": "ids", + "nameLocation": "10529:3:22", + "nodeType": "VariableDeclaration", + "scope": 9087, + "src": "10510:22:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10510:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9056, + "nodeType": "ArrayTypeName", + "src": "10510:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9060, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "10561:13:22", + "nodeType": "VariableDeclaration", + "scope": 9087, + "src": "10542:32:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10542:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9059, + "nodeType": "ArrayTypeName", + "src": "10542:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "10401:179:22" + }, + "returnParameters": { + "id": 9062, + "nodeType": "ParameterList", + "parameters": [], + "src": "10590:0:22" + }, + "scope": 9239, + "src": "10382:460:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9128, + "nodeType": "Block", + "src": "11444:250:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9105, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9090, + "src": "11459:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 9106, + "name": "AFTER_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8460, + "src": "11477:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "11459:33:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 9108, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11458:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11497:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11458:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9127, + "nodeType": "IfStatement", + "src": "11454:234:22", + "trueBody": { + "id": 9126, + "nodeType": "Block", + "src": "11500:188:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9112, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9090, + "src": "11541:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 9115, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "11597:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 9116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11606:9:22", + "memberName": "afterBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 4399, + "src": "11597:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterBurn(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 9117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11616:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "11597:27:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 9118, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9092, + "src": "11626:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9119, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9094, + "src": "11634:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9120, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9096, + "src": "11640:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9121, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9099, + "src": "11644:3:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 9122, + "name": "amountsToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9102, + "src": "11649:13:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 9113, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "11574:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11578:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "11574:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11574:89:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9111, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "11514:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 9124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11514:163:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9125, + "nodeType": "ExpressionStatement", + "src": "11514:163:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 9088, + "nodeType": "StructuredDocumentation", + "src": "10848:384:22", + "text": " @dev Helper function to call the afterBurn function on the hooks contract, only if the\n AFTER_BURN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The ids\n @param amountsToBurn The amounts to burn" + }, + "id": 9129, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterBurn", + "nameLocation": "11246:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9090, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "11273:15:22", + "nodeType": "VariableDeclaration", + "scope": 9129, + "src": "11265:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9089, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11265:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9092, + "mutability": "mutable", + "name": "sender", + "nameLocation": "11306:6:22", + "nodeType": "VariableDeclaration", + "scope": 9129, + "src": "11298:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9091, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11298:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9094, + "mutability": "mutable", + "name": "from", + "nameLocation": "11330:4:22", + "nodeType": "VariableDeclaration", + "scope": 9129, + "src": "11322:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11322:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9096, + "mutability": "mutable", + "name": "to", + "nameLocation": "11352:2:22", + "nodeType": "VariableDeclaration", + "scope": 9129, + "src": "11344:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11344:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9099, + "mutability": "mutable", + "name": "ids", + "nameLocation": "11383:3:22", + "nodeType": "VariableDeclaration", + "scope": 9129, + "src": "11364:22:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9097, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11364:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9098, + "nodeType": "ArrayTypeName", + "src": "11364:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9102, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "11415:13:22", + "nodeType": "VariableDeclaration", + "scope": 9129, + "src": "11396:32:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11396:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9101, + "nodeType": "ArrayTypeName", + "src": "11396:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "11255:179:22" + }, + "returnParameters": { + "id": 9104, + "nodeType": "ParameterList", + "parameters": [], + "src": "11444:0:22" + }, + "scope": 9239, + "src": "11237:457:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9170, + "nodeType": "Block", + "src": "12320:263:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9147, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9132, + "src": "12335:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 9148, + "name": "BEFORE_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8471, + "src": "12353:20:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "12335:38:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 9150, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12334:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12378:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12334:45:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9169, + "nodeType": "IfStatement", + "src": "12330:247:22", + "trueBody": { + "id": 9168, + "nodeType": "Block", + "src": "12381:196:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9154, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9132, + "src": "12422:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 9157, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "12478:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 9158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12487:23:22", + "memberName": "beforeBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4416, + "src": "12478:32:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeBatchTransferFrom(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 9159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12511:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12478:41:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 9160, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9134, + "src": "12521:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9161, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9136, + "src": "12529:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9162, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9138, + "src": "12535:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9163, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9141, + "src": "12539:3:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 9164, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9144, + "src": "12544:7:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 9155, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "12455:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12459:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "12455:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12455:97:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9153, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "12395:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 9166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12395:171:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9167, + "nodeType": "ExpressionStatement", + "src": "12395:171:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 9130, + "nodeType": "StructuredDocumentation", + "src": "11700:400:22", + "text": " @dev Helper function to call the beforeTransferFrom function on the hooks contract, only if the\n BEFORE_TRANSFER_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The list of ids\n @param amounts The list of amounts" + }, + "id": 9171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeBatchTransferFrom", + "nameLocation": "12114:23:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9132, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "12155:15:22", + "nodeType": "VariableDeclaration", + "scope": 9171, + "src": "12147:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12147:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9134, + "mutability": "mutable", + "name": "sender", + "nameLocation": "12188:6:22", + "nodeType": "VariableDeclaration", + "scope": 9171, + "src": "12180:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12180:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9136, + "mutability": "mutable", + "name": "from", + "nameLocation": "12212:4:22", + "nodeType": "VariableDeclaration", + "scope": 9171, + "src": "12204:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12204:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9138, + "mutability": "mutable", + "name": "to", + "nameLocation": "12234:2:22", + "nodeType": "VariableDeclaration", + "scope": 9171, + "src": "12226:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12226:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9141, + "mutability": "mutable", + "name": "ids", + "nameLocation": "12265:3:22", + "nodeType": "VariableDeclaration", + "scope": 9171, + "src": "12246:22:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9139, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12246:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9140, + "nodeType": "ArrayTypeName", + "src": "12246:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9144, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "12297:7:22", + "nodeType": "VariableDeclaration", + "scope": 9171, + "src": "12278:26:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12278:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9143, + "nodeType": "ArrayTypeName", + "src": "12278:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "12137:173:22" + }, + "returnParameters": { + "id": 9146, + "nodeType": "ParameterList", + "parameters": [], + "src": "12320:0:22" + }, + "scope": 9239, + "src": "12105:478:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9212, + "nodeType": "Block", + "src": "13206:261:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 9191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9189, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9174, + "src": "13221:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 9190, + "name": "AFTER_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8482, + "src": "13239:19:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13221:37:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 9192, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13220:39:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13263:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13220:44:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9211, + "nodeType": "IfStatement", + "src": "13216:245:22", + "trueBody": { + "id": 9210, + "nodeType": "Block", + "src": "13266:195:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9196, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9174, + "src": "13307:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 9199, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "13363:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$4434_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 9200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13372:22:22", + "memberName": "afterBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4433, + "src": "13363:31:22", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterBatchTransferFrom(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 9201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13395:8:22", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "13363:40:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 9202, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9176, + "src": "13405:6:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9203, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9178, + "src": "13413:4:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9204, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9180, + "src": "13419:2:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9205, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9183, + "src": "13423:3:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 9206, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9186, + "src": "13428:7:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 9197, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "13340:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 9198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13344:18:22", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "13340:22:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 9207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13340:96:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9195, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9238, + "src": "13280:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 9208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13280:170:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9209, + "nodeType": "ExpressionStatement", + "src": "13280:170:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 9172, + "nodeType": "StructuredDocumentation", + "src": "12589:398:22", + "text": " @dev Helper function to call the afterTransferFrom function on the hooks contract, only if the\n AFTER_TRANSFER_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The list of ids\n @param amounts The list of amounts" + }, + "id": 9213, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterBatchTransferFrom", + "nameLocation": "13001:22:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9187, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9174, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "13041:15:22", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "13033:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13033:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9176, + "mutability": "mutable", + "name": "sender", + "nameLocation": "13074:6:22", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "13066:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13066:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9178, + "mutability": "mutable", + "name": "from", + "nameLocation": "13098:4:22", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "13090:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9177, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13090:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9180, + "mutability": "mutable", + "name": "to", + "nameLocation": "13120:2:22", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "13112:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9179, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13112:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9183, + "mutability": "mutable", + "name": "ids", + "nameLocation": "13151:3:22", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "13132:22:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13132:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9182, + "nodeType": "ArrayTypeName", + "src": "13132:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9186, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "13183:7:22", + "nodeType": "VariableDeclaration", + "scope": 9213, + "src": "13164:26:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 9184, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13164:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9185, + "nodeType": "ArrayTypeName", + "src": "13164:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "13023:173:22" + }, + "returnParameters": { + "id": 9188, + "nodeType": "ParameterList", + "parameters": [], + "src": "13206:0:22" + }, + "scope": 9239, + "src": "12992:475:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9237, + "nodeType": "Block", + "src": "13831:614:22", + "statements": [ + { + "assignments": [ + 9222 + ], + "declarations": [ + { + "constant": false, + "id": 9222, + "mutability": "mutable", + "name": "success", + "nameLocation": "13846:7:22", + "nodeType": "VariableDeclaration", + "scope": 9237, + "src": "13841:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9221, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13841:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 9223, + "nodeType": "VariableDeclarationStatement", + "src": "13841:12:22" + }, + { + "assignments": [ + 9225 + ], + "declarations": [ + { + "constant": false, + "id": 9225, + "mutability": "mutable", + "name": "hooks", + "nameLocation": "13872:5:22", + "nodeType": "VariableDeclaration", + "scope": 9237, + "src": "13864:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13864:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 9229, + "initialValue": { + "arguments": [ + { + "id": 9227, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9216, + "src": "13889:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9226, + "name": "getHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8752, + "src": "13880:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) pure returns (address)" + } + }, + "id": 9228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13880:25:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13864:41:22" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "13925:463:22", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13939:56:22", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13967:3:22", + "type": "", + "value": "224" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "13982:4:22" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13988:4:22", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13978:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "13978:15:22" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13972:5:22" + }, + "nodeType": "YulFunctionCall", + "src": "13972:22:22" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "13963:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "13963:32:22" + }, + "variables": [ + { + "name": "expectedSelector", + "nodeType": "YulTypedName", + "src": "13943:16:22", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14009:71:22", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nodeType": "YulIdentifier", + "src": "14025:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "14025:5:22" + }, + { + "name": "hooks", + "nodeType": "YulIdentifier", + "src": "14032:5:22" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14039:1:22", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "14046:4:22" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14052:4:22", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14042:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "14042:15:22" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "14065:4:22" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14059:5:22" + }, + "nodeType": "YulFunctionCall", + "src": "14059:11:22" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14072:1:22", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14075:4:22", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "call", + "nodeType": "YulIdentifier", + "src": "14020:4:22" + }, + "nodeType": "YulFunctionCall", + "src": "14020:60:22" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14009:7:22" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14152:114:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14185:1:22", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14188:1:22", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14191:14:22" + }, + "nodeType": "YulFunctionCall", + "src": "14191:16:22" + } + ], + "functionName": { + "name": "returndatacopy", + "nodeType": "YulIdentifier", + "src": "14170:14:22" + }, + "nodeType": "YulFunctionCall", + "src": "14170:38:22" + }, + "nodeType": "YulExpressionStatement", + "src": "14170:38:22" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14232:1:22", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14235:14:22" + }, + "nodeType": "YulFunctionCall", + "src": "14235:16:22" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14225:6:22" + }, + "nodeType": "YulFunctionCall", + "src": "14225:27:22" + }, + "nodeType": "YulExpressionStatement", + "src": "14225:27:22" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14108:7:22" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14101:6:22" + }, + "nodeType": "YulFunctionCall", + "src": "14101:15:22" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14132:14:22" + }, + "nodeType": "YulFunctionCall", + "src": "14132:16:22" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14125:6:22" + }, + "nodeType": "YulFunctionCall", + "src": "14125:24:22" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14118:6:22" + }, + "nodeType": "YulFunctionCall", + "src": "14118:32:22" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14097:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "14097:54:22" + }, + "nodeType": "YulIf", + "src": "14094:172:22" + }, + { + "nodeType": "YulAssignment", + "src": "14280:98:22", + "value": { + "arguments": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14295:7:22" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14311:14:22" + }, + "nodeType": "YulFunctionCall", + "src": "14311:16:22" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14329:4:22", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14308:2:22" + }, + "nodeType": "YulFunctionCall", + "src": "14308:26:22" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14343:3:22", + "type": "", + "value": "224" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14354:1:22", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14348:5:22" + }, + "nodeType": "YulFunctionCall", + "src": "14348:8:22" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "14339:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "14339:18:22" + }, + { + "name": "expectedSelector", + "nodeType": "YulIdentifier", + "src": "14359:16:22" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "14336:2:22" + }, + "nodeType": "YulFunctionCall", + "src": "14336:40:22" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14304:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "14304:73:22" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14291:3:22" + }, + "nodeType": "YulFunctionCall", + "src": "14291:87:22" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14280:7:22" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 9218, + "isOffset": false, + "isSlot": false, + "src": "13982:4:22", + "valueSize": 1 + }, + { + "declaration": 9218, + "isOffset": false, + "isSlot": false, + "src": "14046:4:22", + "valueSize": 1 + }, + { + "declaration": 9218, + "isOffset": false, + "isSlot": false, + "src": "14065:4:22", + "valueSize": 1 + }, + { + "declaration": 9225, + "isOffset": false, + "isSlot": false, + "src": "14032:5:22", + "valueSize": 1 + }, + { + "declaration": 9222, + "isOffset": false, + "isSlot": false, + "src": "14009:7:22", + "valueSize": 1 + }, + { + "declaration": 9222, + "isOffset": false, + "isSlot": false, + "src": "14108:7:22", + "valueSize": 1 + }, + { + "declaration": 9222, + "isOffset": false, + "isSlot": false, + "src": "14280:7:22", + "valueSize": 1 + }, + { + "declaration": 9222, + "isOffset": false, + "isSlot": false, + "src": "14295:7:22", + "valueSize": 1 + } + ], + "id": 9230, + "nodeType": "InlineAssembly", + "src": "13916:472:22" + }, + { + "condition": { + "id": 9232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14402:8:22", + "subExpression": { + "id": 9231, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9222, + "src": "14403:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9236, + "nodeType": "IfStatement", + "src": "14398:40:22", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9233, + "name": "Hooks__CallFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8372, + "src": "14419:17:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14419:19:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9235, + "nodeType": "RevertStatement", + "src": "14412:26:22" + } + } + ] + }, + "documentation": { + "id": 9214, + "nodeType": "StructuredDocumentation", + "src": "13473:282:22", + "text": " @dev Helper function to call the hooks contract and verify the call was successful\n by matching the expected selector with the returned data\n @param hooksParameters The encoded hooks parameters\n @param data The data to pass to the hooks contract" + }, + "id": 9238, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeCall", + "nameLocation": "13769:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9216, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "13787:15:22", + "nodeType": "VariableDeclaration", + "scope": 9238, + "src": "13779:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9215, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13779:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9218, + "mutability": "mutable", + "name": "data", + "nameLocation": "13817:4:22", + "nodeType": "VariableDeclaration", + "scope": 9238, + "src": "13804:17:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9217, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13804:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13778:44:22" + }, + "returnParameters": { + "id": 9220, + "nodeType": "ParameterList", + "parameters": [], + "src": "13831:0:22" + }, + "scope": 9239, + "src": "13760:685:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 9240, + "src": "230:14217:22", + "usedErrors": [ + 8372 + ], + "usedEvents": [] + } + ], + "src": "32:14416:22" + }, + "id": 22 + }, + "src/libraries/PairParameterHelper.sol": { + "ast": { + "absolutePath": "src/libraries/PairParameterHelper.sol", + "exportedSymbols": { + "Constants": [ + 8172 + ], + "Encoded": [ + 10863 + ], + "PairParameterHelper": [ + 10096 + ], + "SafeCast": [ + 12135 + ] + }, + "id": 10097, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9241, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:23" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "./Constants.sol", + "id": 9243, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10097, + "sourceUnit": 8173, + "src": "59:42:23", + "symbolAliases": [ + { + "foreign": { + "id": 9242, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "67:9:23", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/SafeCast.sol", + "file": "./math/SafeCast.sol", + "id": 9245, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10097, + "sourceUnit": 12136, + "src": "102:45:23", + "symbolAliases": [ + { + "foreign": { + "id": 9244, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12135, + "src": "110:8:23", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Encoded.sol", + "file": "./math/Encoded.sol", + "id": 9247, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10097, + "sourceUnit": 10864, + "src": "148:43:23", + "symbolAliases": [ + { + "foreign": { + "id": 9246, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "156:7:23", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "PairParameterHelper", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 9248, + "nodeType": "StructuredDocumentation", + "src": "193:770:23", + "text": " @title Liquidity Book Pair Parameter Helper Library\n @dev This library contains functions to get and set parameters of a pair\n The parameters are stored in a single bytes32 variable in the following format:\n [0 - 16[: base factor (16 bits)\n [16 - 28[: filter period (12 bits)\n [28 - 40[: decay period (12 bits)\n [40 - 54[: reduction factor (14 bits)\n [54 - 78[: variable fee control (24 bits)\n [78 - 92[: protocol share (14 bits)\n [92 - 112[: max volatility accumulator (20 bits)\n [112 - 132[: volatility accumulator (20 bits)\n [132 - 152[: volatility reference (20 bits)\n [152 - 176[: index reference (24 bits)\n [176 - 216[: time of last update (40 bits)\n [216 - 232[: oracle index (16 bits)\n [232 - 256[: active index (24 bits)" + }, + "fullyImplemented": true, + "id": 10096, + "linearizedBaseContracts": [ + 10096 + ], + "name": "PairParameterHelper", + "nameLocation": "972:19:23", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 9251, + "libraryName": { + "id": 9249, + "name": "SafeCast", + "nameLocations": [ + "1004:8:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12135, + "src": "1004:8:23" + }, + "nodeType": "UsingForDirective", + "src": "998:27:23", + "typeName": { + "id": 9250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1017:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 9254, + "libraryName": { + "id": 9252, + "name": "Encoded", + "nameLocations": [ + "1036:7:23" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10863, + "src": "1036:7:23" + }, + "nodeType": "UsingForDirective", + "src": "1030:26:23", + "typeName": { + "id": 9253, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1048:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "errorSelector": "1c07203f", + "id": 9256, + "name": "PairParametersHelper__InvalidParameter", + "nameLocation": "1068:38:23", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9255, + "nodeType": "ParameterList", + "parameters": [], + "src": "1106:2:23" + }, + "src": "1062:47:23" + }, + { + "constant": true, + "id": 9259, + "mutability": "constant", + "name": "OFFSET_BASE_FACTOR", + "nameLocation": "1141:18:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1115:48:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1115:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 9258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1162:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9262, + "mutability": "constant", + "name": "OFFSET_FILTER_PERIOD", + "nameLocation": "1195:20:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1169:51:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9260, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1169:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3136", + "id": 9261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1218:2:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9265, + "mutability": "constant", + "name": "OFFSET_DECAY_PERIOD", + "nameLocation": "1252:19:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1226:50:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9263, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1226:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3238", + "id": 9264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1274:2:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_28_by_1", + "typeString": "int_const 28" + }, + "value": "28" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9268, + "mutability": "constant", + "name": "OFFSET_REDUCTION_FACTOR", + "nameLocation": "1308:23:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1282:54:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9266, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1282:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3430", + "id": 9267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1334:2:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9271, + "mutability": "constant", + "name": "OFFSET_VAR_FEE_CONTROL", + "nameLocation": "1368:22:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1342:53:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9269, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1342:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3534", + "id": 9270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1393:2:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_54_by_1", + "typeString": "int_const 54" + }, + "value": "54" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9274, + "mutability": "constant", + "name": "OFFSET_PROTOCOL_SHARE", + "nameLocation": "1427:21:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1401:52:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9272, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1401:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3738", + "id": 9273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1451:2:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_78_by_1", + "typeString": "int_const 78" + }, + "value": "78" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9277, + "mutability": "constant", + "name": "OFFSET_MAX_VOL_ACC", + "nameLocation": "1485:18:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1459:49:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9275, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1459:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3932", + "id": 9276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1506:2:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_92_by_1", + "typeString": "int_const 92" + }, + "value": "92" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9280, + "mutability": "constant", + "name": "OFFSET_VOL_ACC", + "nameLocation": "1540:14:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1514:46:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9278, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1514:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313132", + "id": 9279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1557:3:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9283, + "mutability": "constant", + "name": "OFFSET_VOL_REF", + "nameLocation": "1592:14:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1566:46:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9281, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1566:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313332", + "id": 9282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1609:3:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_132_by_1", + "typeString": "int_const 132" + }, + "value": "132" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9286, + "mutability": "constant", + "name": "OFFSET_ID_REF", + "nameLocation": "1644:13:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1618:45:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1618:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313532", + "id": 9285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1660:3:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + "value": "152" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9289, + "mutability": "constant", + "name": "OFFSET_TIME_LAST_UPDATE", + "nameLocation": "1695:23:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1669:55:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1669:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313736", + "id": 9288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1721:3:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + "value": "176" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9292, + "mutability": "constant", + "name": "OFFSET_ORACLE_ID", + "nameLocation": "1756:16:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1730:48:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1730:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "323136", + "id": 9291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1775:3:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + "value": "216" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9295, + "mutability": "constant", + "name": "OFFSET_ACTIVE_ID", + "nameLocation": "1810:16:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1784:48:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1784:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "323332", + "id": 9294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1829:3:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + "value": "232" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9298, + "mutability": "constant", + "name": "MASK_STATIC_PARAMETER", + "nameLocation": "1865:21:23", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "1839:80:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9296, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1839:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666666666666666666666666666666666666666666666666666", + "id": 9297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1889:30:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_5192296858534827628530496329220095_by_1", + "typeString": "int_const 5192...(26 digits omitted)...0095" + }, + "value": "0xffffffffffffffffffffffffffff" + }, + "visibility": "internal" + }, + { + "body": { + "id": 9313, + "nodeType": "Block", + "src": "2267:69:23", + "statements": [ + { + "expression": { + "id": 9311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9306, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9304, + "src": "2277:10:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9309, + "name": "OFFSET_BASE_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9259, + "src": "2310:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9307, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9301, + "src": "2290:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2297:12:23", + "memberName": "decodeUint16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10802, + "src": "2290:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2290:39:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "2277:52:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9312, + "nodeType": "ExpressionStatement", + "src": "2277:52:23" + } + ] + }, + "documentation": { + "id": 9299, + "nodeType": "StructuredDocumentation", + "src": "1926:255:23", + "text": " @dev Get the base factor from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 16[: base factor (16 bits)\n [16 - 256[: other parameters\n @return baseFactor The base factor" + }, + "id": 9314, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBaseFactor", + "nameLocation": "2195:13:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9301, + "mutability": "mutable", + "name": "params", + "nameLocation": "2217:6:23", + "nodeType": "VariableDeclaration", + "scope": 9314, + "src": "2209:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9300, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2209:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2208:16:23" + }, + "returnParameters": { + "id": 9305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9304, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "2255:10:23", + "nodeType": "VariableDeclaration", + "scope": 9314, + "src": "2248:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9303, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2248:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2247:19:23" + }, + "scope": 10096, + "src": "2186:150:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9329, + "nodeType": "Block", + "src": "2730:73:23", + "statements": [ + { + "expression": { + "id": 9327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9322, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9320, + "src": "2740:12:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9325, + "name": "OFFSET_FILTER_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9262, + "src": "2775:20:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9323, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9317, + "src": "2755:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2762:12:23", + "memberName": "decodeUint12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10778, + "src": "2755:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2755:41:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "2740:56:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9328, + "nodeType": "ExpressionStatement", + "src": "2740:56:23" + } + ] + }, + "documentation": { + "id": 9315, + "nodeType": "StructuredDocumentation", + "src": "2342:298:23", + "text": " @dev Get the filter period from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 16[: other parameters\n [16 - 28[: filter period (12 bits)\n [28 - 256[: other parameters\n @return filterPeriod The filter period" + }, + "id": 9330, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFilterPeriod", + "nameLocation": "2654:15:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9317, + "mutability": "mutable", + "name": "params", + "nameLocation": "2678:6:23", + "nodeType": "VariableDeclaration", + "scope": 9330, + "src": "2670:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9316, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2670:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2669:16:23" + }, + "returnParameters": { + "id": 9321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9320, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "2716:12:23", + "nodeType": "VariableDeclaration", + "scope": 9330, + "src": "2709:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9319, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2709:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2708:21:23" + }, + "scope": 10096, + "src": "2645:158:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9345, + "nodeType": "Block", + "src": "3191:71:23", + "statements": [ + { + "expression": { + "id": 9343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9338, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9336, + "src": "3201:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9341, + "name": "OFFSET_DECAY_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9265, + "src": "3235:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9339, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9333, + "src": "3215:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3222:12:23", + "memberName": "decodeUint12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10778, + "src": "3215:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3215:40:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "3201:54:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9344, + "nodeType": "ExpressionStatement", + "src": "3201:54:23" + } + ] + }, + "documentation": { + "id": 9331, + "nodeType": "StructuredDocumentation", + "src": "2809:294:23", + "text": " @dev Get the decay period from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 28[: other parameters\n [28 - 40[: decay period (12 bits)\n [40 - 256[: other parameters\n @return decayPeriod The decay period" + }, + "id": 9346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDecayPeriod", + "nameLocation": "3117:14:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9333, + "mutability": "mutable", + "name": "params", + "nameLocation": "3140:6:23", + "nodeType": "VariableDeclaration", + "scope": 9346, + "src": "3132:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9332, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3132:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3131:16:23" + }, + "returnParameters": { + "id": 9337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9336, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "3178:11:23", + "nodeType": "VariableDeclaration", + "scope": 9346, + "src": "3171:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9335, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3171:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3170:20:23" + }, + "scope": 10096, + "src": "3108:154:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9361, + "nodeType": "Block", + "src": "3674:79:23", + "statements": [ + { + "expression": { + "id": 9359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9354, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9352, + "src": "3684:15:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9357, + "name": "OFFSET_REDUCTION_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9268, + "src": "3722:23:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9355, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9349, + "src": "3702:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3709:12:23", + "memberName": "decodeUint14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10790, + "src": "3702:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3702:44:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "3684:62:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9360, + "nodeType": "ExpressionStatement", + "src": "3684:62:23" + } + ] + }, + "documentation": { + "id": 9347, + "nodeType": "StructuredDocumentation", + "src": "3268:310:23", + "text": " @dev Get the reduction factor from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 40[: other parameters\n [40 - 54[: reduction factor (14 bits)\n [54 - 256[: other parameters\n @return reductionFactor The reduction factor" + }, + "id": 9362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReductionFactor", + "nameLocation": "3592:18:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9349, + "mutability": "mutable", + "name": "params", + "nameLocation": "3619:6:23", + "nodeType": "VariableDeclaration", + "scope": 9362, + "src": "3611:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9348, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3611:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3610:16:23" + }, + "returnParameters": { + "id": 9353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9352, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "3657:15:23", + "nodeType": "VariableDeclaration", + "scope": 9362, + "src": "3650:22:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9351, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3650:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3649:24:23" + }, + "scope": 10096, + "src": "3583:170:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9377, + "nodeType": "Block", + "src": "4186:81:23", + "statements": [ + { + "expression": { + "id": 9375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9370, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9368, + "src": "4196:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9373, + "name": "OFFSET_VAR_FEE_CONTROL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9271, + "src": "4237:22:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9371, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9365, + "src": "4217:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4224:12:23", + "memberName": "decodeUint24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10826, + "src": "4217:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4217:43:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "4196:64:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9376, + "nodeType": "ExpressionStatement", + "src": "4196:64:23" + } + ] + }, + "documentation": { + "id": 9363, + "nodeType": "StructuredDocumentation", + "src": "3759:325:23", + "text": " @dev Get the variable fee control from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 54[: other parameters\n [54 - 78[: variable fee control (24 bits)\n [78 - 256[: other parameters\n @return variableFeeControl The variable fee control" + }, + "id": 9378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVariableFeeControl", + "nameLocation": "4098:21:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9365, + "mutability": "mutable", + "name": "params", + "nameLocation": "4128:6:23", + "nodeType": "VariableDeclaration", + "scope": 9378, + "src": "4120:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9364, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4120:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4119:16:23" + }, + "returnParameters": { + "id": 9369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9368, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "4166:18:23", + "nodeType": "VariableDeclaration", + "scope": 9378, + "src": "4159:25:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9367, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4159:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4158:27:23" + }, + "scope": 10096, + "src": "4089:178:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9393, + "nodeType": "Block", + "src": "4667:75:23", + "statements": [ + { + "expression": { + "id": 9391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9386, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9384, + "src": "4677:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9389, + "name": "OFFSET_PROTOCOL_SHARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9274, + "src": "4713:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9387, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9381, + "src": "4693:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4700:12:23", + "memberName": "decodeUint14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10790, + "src": "4693:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4693:42:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "4677:58:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9392, + "nodeType": "ExpressionStatement", + "src": "4677:58:23" + } + ] + }, + "documentation": { + "id": 9379, + "nodeType": "StructuredDocumentation", + "src": "4273:302:23", + "text": " @dev Get the protocol share from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 78[: other parameters\n [78 - 92[: protocol share (14 bits)\n [92 - 256[: other parameters\n @return protocolShare The protocol share" + }, + "id": 9394, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getProtocolShare", + "nameLocation": "4589:16:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9382, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9381, + "mutability": "mutable", + "name": "params", + "nameLocation": "4614:6:23", + "nodeType": "VariableDeclaration", + "scope": 9394, + "src": "4606:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9380, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4606:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4605:16:23" + }, + "returnParameters": { + "id": 9385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9384, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "4652:13:23", + "nodeType": "VariableDeclaration", + "scope": 9394, + "src": "4645:20:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9383, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4645:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4644:22:23" + }, + "scope": 10096, + "src": "4580:162:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9409, + "nodeType": "Block", + "src": "5213:83:23", + "statements": [ + { + "expression": { + "id": 9407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9402, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9400, + "src": "5223:24:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9405, + "name": "OFFSET_MAX_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9277, + "src": "5270:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9403, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9397, + "src": "5250:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5257:12:23", + "memberName": "decodeUint20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10814, + "src": "5250:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5250:39:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "5223:66:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9408, + "nodeType": "ExpressionStatement", + "src": "5223:66:23" + } + ] + }, + "documentation": { + "id": 9395, + "nodeType": "StructuredDocumentation", + "src": "4748:351:23", + "text": " @dev Get the max volatility accumulator from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 92[: other parameters\n [92 - 112[: max volatility accumulator (20 bits)\n [112 - 256[: other parameters\n @return maxVolatilityAccumulator The max volatility accumulator" + }, + "id": 9410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMaxVolatilityAccumulator", + "nameLocation": "5113:27:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9397, + "mutability": "mutable", + "name": "params", + "nameLocation": "5149:6:23", + "nodeType": "VariableDeclaration", + "scope": 9410, + "src": "5141:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9396, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5141:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5140:16:23" + }, + "returnParameters": { + "id": 9401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9400, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "5187:24:23", + "nodeType": "VariableDeclaration", + "scope": 9410, + "src": "5180:31:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9399, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5180:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5179:33:23" + }, + "scope": 10096, + "src": "5104:192:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9425, + "nodeType": "Block", + "src": "5748:76:23", + "statements": [ + { + "expression": { + "id": 9423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9418, + "name": "volatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9416, + "src": "5758:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9421, + "name": "OFFSET_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9280, + "src": "5802:14:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9419, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9413, + "src": "5782:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5789:12:23", + "memberName": "decodeUint20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10814, + "src": "5782:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5782:35:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "5758:59:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9424, + "nodeType": "ExpressionStatement", + "src": "5758:59:23" + } + ] + }, + "documentation": { + "id": 9411, + "nodeType": "StructuredDocumentation", + "src": "5302:338:23", + "text": " @dev Get the volatility accumulator from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 112[: other parameters\n [112 - 132[: volatility accumulator (20 bits)\n [132 - 256[: other parameters\n @return volatilityAccumulator The volatility accumulator" + }, + "id": 9426, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVolatilityAccumulator", + "nameLocation": "5654:24:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9413, + "mutability": "mutable", + "name": "params", + "nameLocation": "5687:6:23", + "nodeType": "VariableDeclaration", + "scope": 9426, + "src": "5679:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9412, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5679:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5678:16:23" + }, + "returnParameters": { + "id": 9417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9416, + "mutability": "mutable", + "name": "volatilityAccumulator", + "nameLocation": "5725:21:23", + "nodeType": "VariableDeclaration", + "scope": 9426, + "src": "5718:28:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9415, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5718:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5717:30:23" + }, + "scope": 10096, + "src": "5645:179:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9441, + "nodeType": "Block", + "src": "6264:74:23", + "statements": [ + { + "expression": { + "id": 9439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9434, + "name": "volatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9432, + "src": "6274:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9437, + "name": "OFFSET_VOL_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9283, + "src": "6316:14:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9435, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9429, + "src": "6296:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6303:12:23", + "memberName": "decodeUint20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10814, + "src": "6296:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6296:35:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "6274:57:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9440, + "nodeType": "ExpressionStatement", + "src": "6274:57:23" + } + ] + }, + "documentation": { + "id": 9427, + "nodeType": "StructuredDocumentation", + "src": "5830:330:23", + "text": " @dev Get the volatility reference from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 132[: other parameters\n [132 - 152[: volatility reference (20 bits)\n [152 - 256[: other parameters\n @return volatilityReference The volatility reference" + }, + "id": 9442, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVolatilityReference", + "nameLocation": "6174:22:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9429, + "mutability": "mutable", + "name": "params", + "nameLocation": "6205:6:23", + "nodeType": "VariableDeclaration", + "scope": 9442, + "src": "6197:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9428, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6197:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6196:16:23" + }, + "returnParameters": { + "id": 9433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9432, + "mutability": "mutable", + "name": "volatilityReference", + "nameLocation": "6243:19:23", + "nodeType": "VariableDeclaration", + "scope": 9442, + "src": "6236:26:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9431, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6236:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "6235:28:23" + }, + "scope": 10096, + "src": "6165:173:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9457, + "nodeType": "Block", + "src": "6739:65:23", + "statements": [ + { + "expression": { + "id": 9455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9450, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9448, + "src": "6749:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9453, + "name": "OFFSET_ID_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9286, + "src": "6783:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9451, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9445, + "src": "6763:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6770:12:23", + "memberName": "decodeUint24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10826, + "src": "6763:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6763:34:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "6749:48:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9456, + "nodeType": "ExpressionStatement", + "src": "6749:48:23" + } + ] + }, + "documentation": { + "id": 9443, + "nodeType": "StructuredDocumentation", + "src": "6344:307:23", + "text": " @dev Get the index reference from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 152[: other parameters\n [152 - 176[: index reference (24 bits)\n [176 - 256[: other parameters\n @return idReference The index reference" + }, + "id": 9458, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIdReference", + "nameLocation": "6665:14:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9445, + "mutability": "mutable", + "name": "params", + "nameLocation": "6688:6:23", + "nodeType": "VariableDeclaration", + "scope": 9458, + "src": "6680:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9444, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6680:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6679:16:23" + }, + "returnParameters": { + "id": 9449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9448, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "6726:11:23", + "nodeType": "VariableDeclaration", + "scope": 9458, + "src": "6719:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9447, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6719:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "6718:20:23" + }, + "scope": 10096, + "src": "6656:148:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9473, + "nodeType": "Block", + "src": "7232:80:23", + "statements": [ + { + "expression": { + "id": 9471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9466, + "name": "timeOflastUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9464, + "src": "7242:16:23", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9469, + "name": "OFFSET_TIME_LAST_UPDATE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9289, + "src": "7281:23:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9467, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9461, + "src": "7261:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7268:12:23", + "memberName": "decodeUint40", + "nodeType": "MemberAccess", + "referencedDeclaration": 10838, + "src": "7261:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint40_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint40)" + } + }, + "id": 9470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7261:44:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "7242:63:23", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "id": 9472, + "nodeType": "ExpressionStatement", + "src": "7242:63:23" + } + ] + }, + "documentation": { + "id": 9459, + "nodeType": "StructuredDocumentation", + "src": "6810:324:23", + "text": " @dev Get the time of last update from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 176[: other parameters\n [176 - 216[: time of last update (40 bits)\n [216 - 256[: other parameters\n @return timeOflastUpdate The time of last update" + }, + "id": 9474, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTimeOfLastUpdate", + "nameLocation": "7148:19:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9461, + "mutability": "mutable", + "name": "params", + "nameLocation": "7176:6:23", + "nodeType": "VariableDeclaration", + "scope": 9474, + "src": "7168:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9460, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7168:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7167:16:23" + }, + "returnParameters": { + "id": 9465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9464, + "mutability": "mutable", + "name": "timeOflastUpdate", + "nameLocation": "7214:16:23", + "nodeType": "VariableDeclaration", + "scope": 9474, + "src": "7207:23:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 9463, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "7207:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "7206:25:23" + }, + "scope": 10096, + "src": "7139:173:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9489, + "nodeType": "Block", + "src": "7686:65:23", + "statements": [ + { + "expression": { + "id": 9487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9482, + "name": "oracleId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9480, + "src": "7696:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9485, + "name": "OFFSET_ORACLE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9292, + "src": "7727:16:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9483, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9477, + "src": "7707:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7714:12:23", + "memberName": "decodeUint16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10802, + "src": "7707:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7707:37:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "7696:48:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9488, + "nodeType": "ExpressionStatement", + "src": "7696:48:23" + } + ] + }, + "documentation": { + "id": 9475, + "nodeType": "StructuredDocumentation", + "src": "7318:286:23", + "text": " @dev Get the oracle id from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 216[: other parameters\n [216 - 232[: oracle id (16 bits)\n [232 - 256[: other parameters\n @return oracleId The oracle id" + }, + "id": 9490, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOracleId", + "nameLocation": "7618:11:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9477, + "mutability": "mutable", + "name": "params", + "nameLocation": "7638:6:23", + "nodeType": "VariableDeclaration", + "scope": 9490, + "src": "7630:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9476, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7630:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7629:16:23" + }, + "returnParameters": { + "id": 9481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9480, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "7676:8:23", + "nodeType": "VariableDeclaration", + "scope": 9490, + "src": "7669:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9479, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "7669:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "7668:17:23" + }, + "scope": 10096, + "src": "7609:142:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9505, + "nodeType": "Block", + "src": "8097:65:23", + "statements": [ + { + "expression": { + "id": 9503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9498, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9496, + "src": "8107:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9501, + "name": "OFFSET_ACTIVE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9295, + "src": "8138:16:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9499, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9493, + "src": "8118:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8125:12:23", + "memberName": "decodeUint24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10826, + "src": "8118:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8118:37:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8107:48:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9504, + "nodeType": "ExpressionStatement", + "src": "8107:48:23" + } + ] + }, + "documentation": { + "id": 9491, + "nodeType": "StructuredDocumentation", + "src": "7757:258:23", + "text": " @dev Get the active index from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 232[: other parameters\n [232 - 256[: active index (24 bits)\n @return activeId The active index" + }, + "id": 9506, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getActiveId", + "nameLocation": "8029:11:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9493, + "mutability": "mutable", + "name": "params", + "nameLocation": "8049:6:23", + "nodeType": "VariableDeclaration", + "scope": 9506, + "src": "8041:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9492, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8041:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8040:16:23" + }, + "returnParameters": { + "id": 9497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9496, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "8087:8:23", + "nodeType": "VariableDeclaration", + "scope": 9506, + "src": "8080:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9495, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8080:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "8079:17:23" + }, + "scope": 10096, + "src": "8020:142:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9534, + "nodeType": "Block", + "src": "8568:144:23", + "statements": [ + { + "assignments": [ + 9517 + ], + "declarations": [ + { + "constant": false, + "id": 9517, + "mutability": "mutable", + "name": "id", + "nameLocation": "8585:2:23", + "nodeType": "VariableDeclaration", + "scope": 9534, + "src": "8578:9:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9516, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8578:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "id": 9521, + "initialValue": { + "arguments": [ + { + "id": 9519, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9509, + "src": "8602:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9518, + "name": "getActiveId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9506, + "src": "8590:11:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8590:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8578:31:23" + }, + { + "id": 9533, + "nodeType": "UncheckedBlock", + "src": "8619:87:23", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 9524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9522, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9511, + "src": "8650:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9523, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9517, + "src": "8661:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8650:13:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 9530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9528, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9517, + "src": "8682:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9529, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9511, + "src": "8687:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8682:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "8650:45:23", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 9527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9525, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9511, + "src": "8666:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9526, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9517, + "src": "8677:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8666:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "functionReturnParameters": 9515, + "id": 9532, + "nodeType": "Return", + "src": "8643:52:23" + } + ] + } + ] + }, + "documentation": { + "id": 9507, + "nodeType": "StructuredDocumentation", + "src": "8168:311:23", + "text": " @dev Get the delta between the current active index and the cached active index\n @param params The encoded pair parameters, as follows:\n [0 - 232[: other parameters\n [232 - 256[: active index (24 bits)\n @param activeId The current active index\n @return The delta" + }, + "id": 9535, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDeltaId", + "nameLocation": "8493:10:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9509, + "mutability": "mutable", + "name": "params", + "nameLocation": "8512:6:23", + "nodeType": "VariableDeclaration", + "scope": 9535, + "src": "8504:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9508, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8504:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9511, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "8527:8:23", + "nodeType": "VariableDeclaration", + "scope": 9535, + "src": "8520:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9510, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8520:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "8503:33:23" + }, + "returnParameters": { + "id": 9515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9514, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9535, + "src": "8560:6:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9513, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8560:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "8559:8:23" + }, + "scope": 10096, + "src": "8484:228:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9557, + "nodeType": "Block", + "src": "9010:203:23", + "statements": [ + { + "id": 9556, + "nodeType": "UncheckedBlock", + "src": "9020:187:23", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 9548, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9538, + "src": "9171:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9547, + "name": "getBaseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9314, + "src": "9157:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 9549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9157:21:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 9546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9149:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9149:7:23", + "typeDescriptions": {} + } + }, + "id": 9550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9149:30:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9551, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9540, + "src": "9182:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "9149:40:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "31653130", + "id": 9553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9192:4:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000_by_1", + "typeString": "int_const 10000000000" + }, + "value": "1e10" + }, + "src": "9149:47:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9544, + "id": 9555, + "nodeType": "Return", + "src": "9142:54:23" + } + ] + } + ] + }, + "documentation": { + "id": 9536, + "nodeType": "StructuredDocumentation", + "src": "8718:203:23", + "text": " @dev Calculates the base fee, with 18 decimals\n @param params The encoded pair parameters\n @param binStep The bin step (in basis points)\n @return baseFee The base fee" + }, + "id": 9558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBaseFee", + "nameLocation": "8935:10:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9538, + "mutability": "mutable", + "name": "params", + "nameLocation": "8954:6:23", + "nodeType": "VariableDeclaration", + "scope": 9558, + "src": "8946:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8946:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9540, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "8969:7:23", + "nodeType": "VariableDeclaration", + "scope": 9558, + "src": "8962:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9539, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "8962:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "8945:32:23" + }, + "returnParameters": { + "id": 9544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9543, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9558, + "src": "9001:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9001:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9000:9:23" + }, + "scope": 10096, + "src": "8926:287:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9604, + "nodeType": "Block", + "src": "9521:515:23", + "statements": [ + { + "assignments": [ + 9569 + ], + "declarations": [ + { + "constant": false, + "id": 9569, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "9539:18:23", + "nodeType": "VariableDeclaration", + "scope": 9604, + "src": "9531:26:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9568, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9531:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9573, + "initialValue": { + "arguments": [ + { + "id": 9571, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9561, + "src": "9582:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9570, + "name": "getVariableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9378, + "src": "9560:21:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9560:29:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9531:58:23" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9574, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9569, + "src": "9604:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9626:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9604:23:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9603, + "nodeType": "IfStatement", + "src": "9600:430:23", + "trueBody": { + "id": 9602, + "nodeType": "Block", + "src": "9629:401:23", + "statements": [ + { + "id": 9601, + "nodeType": "UncheckedBlock", + "src": "9643:377:23", + "statements": [ + { + "assignments": [ + 9578 + ], + "declarations": [ + { + "constant": false, + "id": 9578, + "mutability": "mutable", + "name": "prod", + "nameLocation": "9870:4:23", + "nodeType": "VariableDeclaration", + "scope": 9601, + "src": "9862:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9577, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9862:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9587, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 9582, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9561, + "src": "9910:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9581, + "name": "getVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9426, + "src": "9885:24:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9885:32:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9877:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9579, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9877:7:23", + "typeDescriptions": {} + } + }, + "id": 9584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9877:41:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9585, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9563, + "src": "9921:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "9877:51:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9862:66:23" + }, + { + "expression": { + "id": 9599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9588, + "name": "variableFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9566, + "src": "9946:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9589, + "name": "prod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9578, + "src": "9961:4:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9590, + "name": "prod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9578, + "src": "9968:4:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9961:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9592, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9569, + "src": "9975:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9961:32:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3939", + "id": 9594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9996:2:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_99_by_1", + "typeString": "int_const 99" + }, + "value": "99" + }, + "src": "9961:37:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9596, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9960:39:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "313030", + "id": 9597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10002:3:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "9960:45:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9946:59:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9600, + "nodeType": "ExpressionStatement", + "src": "9946:59:23" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 9559, + "nodeType": "StructuredDocumentation", + "src": "9219:197:23", + "text": " @dev Calculates the variable fee\n @param params The encoded pair parameters\n @param binStep The bin step (in basis points)\n @return variableFee The variable fee" + }, + "id": 9605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVariableFee", + "nameLocation": "9430:14:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9561, + "mutability": "mutable", + "name": "params", + "nameLocation": "9453:6:23", + "nodeType": "VariableDeclaration", + "scope": 9605, + "src": "9445:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9560, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9445:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9563, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "9468:7:23", + "nodeType": "VariableDeclaration", + "scope": 9605, + "src": "9461:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9562, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "9461:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "9444:32:23" + }, + "returnParameters": { + "id": 9567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9566, + "mutability": "mutable", + "name": "variableFee", + "nameLocation": "9508:11:23", + "nodeType": "VariableDeclaration", + "scope": 9605, + "src": "9500:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9500:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9499:21:23" + }, + "scope": 10096, + "src": "9421:615:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9629, + "nodeType": "Block", + "src": "10375:131:23", + "statements": [ + { + "id": 9628, + "nodeType": "UncheckedBlock", + "src": "10385:115:23", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 9616, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9608, + "src": "10428:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9617, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9610, + "src": "10436:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 9615, + "name": "getBaseFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9558, + "src": "10417:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (bytes32,uint16) pure returns (uint256)" + } + }, + "id": 9618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10417:27:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "id": 9620, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9608, + "src": "10462:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9621, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9610, + "src": "10470:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 9619, + "name": "getVariableFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9605, + "src": "10447:14:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (bytes32,uint16) pure returns (uint256)" + } + }, + "id": 9622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10447:31:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10417:61:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9624, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10416:63:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10480:7:23", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 11804, + "src": "10416:71:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 9626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10416:73:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 9614, + "id": 9627, + "nodeType": "Return", + "src": "10409:80:23" + } + ] + } + ] + }, + "documentation": { + "id": 9606, + "nodeType": "StructuredDocumentation", + "src": "10042:243:23", + "text": " @dev Calculates the total fee, which is the sum of the base fee and the variable fee\n @param params The encoded pair parameters\n @param binStep The bin step (in basis points)\n @return totalFee The total fee" + }, + "id": 9630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTotalFee", + "nameLocation": "10299:11:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9608, + "mutability": "mutable", + "name": "params", + "nameLocation": "10319:6:23", + "nodeType": "VariableDeclaration", + "scope": 9630, + "src": "10311:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9607, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10311:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9610, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "10334:7:23", + "nodeType": "VariableDeclaration", + "scope": 9630, + "src": "10327:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9609, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10327:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "10310:32:23" + }, + "returnParameters": { + "id": 9614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9613, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9630, + "src": "10366:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 9612, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "10366:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "10365:9:23" + }, + "scope": 10096, + "src": "10290:216:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9648, + "nodeType": "Block", + "src": "10812:83:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9642, + "name": "oracleId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9635, + "src": "10840:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9643, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "10850:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10858:11:23", + "memberName": "MASK_UINT16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10674, + "src": "10850:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9645, + "name": "OFFSET_ORACLE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9292, + "src": "10871:16:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9640, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9633, + "src": "10829:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10836:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "10829:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10829:59:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9639, + "id": 9647, + "nodeType": "Return", + "src": "10822:66:23" + } + ] + }, + "documentation": { + "id": 9631, + "nodeType": "StructuredDocumentation", + "src": "10512:209:23", + "text": " @dev Set the oracle id in the encoded pair parameters\n @param params The encoded pair parameters\n @param oracleId The oracle id\n @return The updated encoded pair parameters" + }, + "id": 9649, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setOracleId", + "nameLocation": "10735:11:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9633, + "mutability": "mutable", + "name": "params", + "nameLocation": "10755:6:23", + "nodeType": "VariableDeclaration", + "scope": 9649, + "src": "10747:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9632, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10747:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9635, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "10770:8:23", + "nodeType": "VariableDeclaration", + "scope": 9649, + "src": "10763:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9634, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10763:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "10746:33:23" + }, + "returnParameters": { + "id": 9639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9638, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9649, + "src": "10803:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9637, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10803:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10802:9:23" + }, + "scope": 10096, + "src": "10726:169:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9675, + "nodeType": "Block", + "src": "11230:171:23", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9659, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9654, + "src": "11244:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9660, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "11253:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11261:11:23", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10677, + "src": "11253:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11244:28:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9666, + "nodeType": "IfStatement", + "src": "11240:81:23", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9663, + "name": "PairParametersHelper__InvalidParameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9256, + "src": "11281:38:23", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11281:40:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9665, + "nodeType": "RevertStatement", + "src": "11274:47:23" + } + }, + { + "expression": { + "arguments": [ + { + "id": 9669, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9654, + "src": "11350:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9670, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "11358:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11366:11:23", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10677, + "src": "11358:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9672, + "name": "OFFSET_VOL_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9283, + "src": "11379:14:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9667, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9652, + "src": "11339:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11346:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "11339:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11339:55:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9658, + "id": 9674, + "nodeType": "Return", + "src": "11332:62:23" + } + ] + }, + "documentation": { + "id": 9650, + "nodeType": "StructuredDocumentation", + "src": "10901:229:23", + "text": " @dev Set the volatility reference in the encoded pair parameters\n @param params The encoded pair parameters\n @param volRef The volatility reference\n @return The updated encoded pair parameters" + }, + "id": 9676, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setVolatilityReference", + "nameLocation": "11144:22:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9652, + "mutability": "mutable", + "name": "params", + "nameLocation": "11175:6:23", + "nodeType": "VariableDeclaration", + "scope": 9676, + "src": "11167:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9651, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11167:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9654, + "mutability": "mutable", + "name": "volRef", + "nameLocation": "11190:6:23", + "nodeType": "VariableDeclaration", + "scope": 9676, + "src": "11183:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9653, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "11183:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "11166:31:23" + }, + "returnParameters": { + "id": 9658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9657, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9676, + "src": "11221:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9656, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11221:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11220:9:23" + }, + "scope": 10096, + "src": "11135:266:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9702, + "nodeType": "Block", + "src": "11742:171:23", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9686, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9681, + "src": "11756:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9687, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "11765:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11773:11:23", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10677, + "src": "11765:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11756:28:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9693, + "nodeType": "IfStatement", + "src": "11752:81:23", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9690, + "name": "PairParametersHelper__InvalidParameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9256, + "src": "11793:38:23", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11793:40:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9692, + "nodeType": "RevertStatement", + "src": "11786:47:23" + } + }, + { + "expression": { + "arguments": [ + { + "id": 9696, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9681, + "src": "11862:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9697, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "11870:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11878:11:23", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10677, + "src": "11870:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9699, + "name": "OFFSET_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9280, + "src": "11891:14:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9694, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9679, + "src": "11851:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11858:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "11851:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11851:55:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9685, + "id": 9701, + "nodeType": "Return", + "src": "11844:62:23" + } + ] + }, + "documentation": { + "id": 9677, + "nodeType": "StructuredDocumentation", + "src": "11407:233:23", + "text": " @dev Set the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param volAcc The volatility accumulator\n @return The updated encoded pair parameters" + }, + "id": 9703, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setVolatilityAccumulator", + "nameLocation": "11654:24:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9679, + "mutability": "mutable", + "name": "params", + "nameLocation": "11687:6:23", + "nodeType": "VariableDeclaration", + "scope": 9703, + "src": "11679:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9678, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11679:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9681, + "mutability": "mutable", + "name": "volAcc", + "nameLocation": "11702:6:23", + "nodeType": "VariableDeclaration", + "scope": 9703, + "src": "11695:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9680, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "11695:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "11678:31:23" + }, + "returnParameters": { + "id": 9685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9684, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9703, + "src": "11733:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9683, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11733:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11732:9:23" + }, + "scope": 10096, + "src": "11645:268:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9721, + "nodeType": "Block", + "src": "12239:83:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9715, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9708, + "src": "12267:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9716, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "12277:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12285:11:23", + "memberName": "MASK_UINT24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10680, + "src": "12277:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9718, + "name": "OFFSET_ACTIVE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9295, + "src": "12298:16:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9713, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9706, + "src": "12256:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12263:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "12256:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12256:59:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9712, + "id": 9720, + "nodeType": "Return", + "src": "12249:66:23" + } + ] + }, + "documentation": { + "id": 9704, + "nodeType": "StructuredDocumentation", + "src": "11919:219:23", + "text": " @dev Set the active id in the encoded pair parameters\n @param params The encoded pair parameters\n @param activeId The active id\n @return newParams The updated encoded pair parameters" + }, + "id": 9722, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setActiveId", + "nameLocation": "12152:11:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9706, + "mutability": "mutable", + "name": "params", + "nameLocation": "12172:6:23", + "nodeType": "VariableDeclaration", + "scope": 9722, + "src": "12164:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9705, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12164:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9708, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "12187:8:23", + "nodeType": "VariableDeclaration", + "scope": 9722, + "src": "12180:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9707, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "12180:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "12163:33:23" + }, + "returnParameters": { + "id": 9712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9711, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "12228:9:23", + "nodeType": "VariableDeclaration", + "scope": 9722, + "src": "12220:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9710, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12220:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12219:19:23" + }, + "scope": 10096, + "src": "12143:179:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9851, + "nodeType": "Block", + "src": "13209:1071:23", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 9746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9744, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9729, + "src": "13236:12:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9745, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9731, + "src": "13251:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "13236:26:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9747, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9731, + "src": "13266:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9748, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "13280:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13288:11:23", + "memberName": "MASK_UINT12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10668, + "src": "13280:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13266:33:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:63:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9752, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9733, + "src": "13319:15:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9753, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "13337:9:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 9754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13347:15:23", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8162, + "src": "13337:25:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13319:43:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:126:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9757, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9737, + "src": "13366:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9758, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "13382:9:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 9759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13392:18:23", + "memberName": "MAX_PROTOCOL_SHARE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8159, + "src": "13382:28:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13366:44:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:174:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9762, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9739, + "src": "13430:24:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9763, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "13457:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13465:11:23", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10677, + "src": "13457:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13430:46:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:240:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9770, + "nodeType": "IfStatement", + "src": "13219:315:23", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9767, + "name": "PairParametersHelper__InvalidParameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9256, + "src": "13494:38:23", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13494:40:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9769, + "nodeType": "RevertStatement", + "src": "13487:47:23" + } + }, + { + "expression": { + "id": 9779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9771, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13545:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9774, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9727, + "src": "13571:10:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9775, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "13583:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13591:11:23", + "memberName": "MASK_UINT16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10674, + "src": "13583:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9777, + "name": "OFFSET_BASE_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9259, + "src": "13604:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9772, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13557:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13567:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "13557:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13557:66:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13545:78:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9780, + "nodeType": "ExpressionStatement", + "src": "13545:78:23" + }, + { + "expression": { + "id": 9789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9781, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13633:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9784, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9729, + "src": "13659:12:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9785, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "13673:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13681:11:23", + "memberName": "MASK_UINT12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10668, + "src": "13673:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9787, + "name": "OFFSET_FILTER_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9262, + "src": "13694:20:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9782, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13645:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13655:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "13645:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13645:70:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13633:82:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9790, + "nodeType": "ExpressionStatement", + "src": "13633:82:23" + }, + { + "expression": { + "id": 9799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9791, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13725:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9794, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9731, + "src": "13751:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9795, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "13764:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13772:11:23", + "memberName": "MASK_UINT12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10668, + "src": "13764:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9797, + "name": "OFFSET_DECAY_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9265, + "src": "13785:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9792, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13737:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13747:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "13737:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13737:68:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13725:80:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9800, + "nodeType": "ExpressionStatement", + "src": "13725:80:23" + }, + { + "expression": { + "id": 9809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9801, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13815:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9804, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9733, + "src": "13841:15:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9805, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "13858:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13866:11:23", + "memberName": "MASK_UINT14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10671, + "src": "13858:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9807, + "name": "OFFSET_REDUCTION_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9268, + "src": "13879:23:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9802, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13827:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13837:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "13827:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13827:76:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13815:88:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9810, + "nodeType": "ExpressionStatement", + "src": "13815:88:23" + }, + { + "expression": { + "id": 9819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9811, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13913:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9814, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9735, + "src": "13939:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9815, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "13959:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13967:11:23", + "memberName": "MASK_UINT24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10680, + "src": "13959:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9817, + "name": "OFFSET_VAR_FEE_CONTROL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9271, + "src": "13980:22:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9812, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "13925:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13935:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "13925:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13925:78:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13913:90:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9820, + "nodeType": "ExpressionStatement", + "src": "13913:90:23" + }, + { + "expression": { + "id": 9829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9821, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "14013:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9824, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9737, + "src": "14039:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9825, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "14054:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14062:11:23", + "memberName": "MASK_UINT14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10671, + "src": "14054:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9827, + "name": "OFFSET_PROTOCOL_SHARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9274, + "src": "14075:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9822, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "14025:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14035:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "14025:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14025:72:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "14013:84:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9830, + "nodeType": "ExpressionStatement", + "src": "14013:84:23" + }, + { + "expression": { + "id": 9839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9831, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "14107:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9834, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9739, + "src": "14133:24:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9835, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "14159:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14167:11:23", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10677, + "src": "14159:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9837, + "name": "OFFSET_MAX_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9277, + "src": "14180:18:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9832, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "14119:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14129:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "14119:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14119:80:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "14107:92:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9840, + "nodeType": "ExpressionStatement", + "src": "14107:92:23" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 9845, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9742, + "src": "14236:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14228:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9843, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14228:7:23", + "typeDescriptions": {} + } + }, + "id": 9846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14228:18:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9847, + "name": "MASK_STATIC_PARAMETER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9298, + "src": "14248:21:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 9848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14271:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 9841, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9725, + "src": "14217:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14224:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "14217:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14217:56:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9743, + "id": 9850, + "nodeType": "Return", + "src": "14210:63:23" + } + ] + }, + "documentation": { + "id": 9723, + "nodeType": "StructuredDocumentation", + "src": "12328:550:23", + "text": " @dev Sets the static fee parameters in the encoded pair parameters\n @param params The encoded pair parameters\n @param baseFactor The base factor\n @param filterPeriod The filter period\n @param decayPeriod The decay period\n @param reductionFactor The reduction factor\n @param variableFeeControl The variable fee control\n @param protocolShare The protocol share\n @param maxVolatilityAccumulator The max volatility accumulator\n @return newParams The updated encoded pair parameters" + }, + "id": 9852, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setStaticFeeParameters", + "nameLocation": "12892:22:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9725, + "mutability": "mutable", + "name": "params", + "nameLocation": "12932:6:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "12924:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9724, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12924:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9727, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "12955:10:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "12948:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9726, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12948:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9729, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "12982:12:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "12975:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9728, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12975:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9731, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "13011:11:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "13004:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9730, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13004:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9733, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "13039:15:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "13032:22:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9732, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13032:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9735, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "13071:18:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "13064:25:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9734, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "13064:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9737, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "13106:13:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "13099:20:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9736, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13099:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9739, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "13136:24:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "13129:31:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9738, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "13129:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "12914:252:23" + }, + "returnParameters": { + "id": 9743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9742, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "13198:9:23", + "nodeType": "VariableDeclaration", + "scope": 9852, + "src": "13190:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9741, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13190:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13189:19:23" + }, + "scope": 10096, + "src": "12883:1397:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9874, + "nodeType": "Block", + "src": "14568:127:23", + "statements": [ + { + "assignments": [ + 9861 + ], + "declarations": [ + { + "constant": false, + "id": 9861, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "14585:8:23", + "nodeType": "VariableDeclaration", + "scope": 9874, + "src": "14578:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9860, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "14578:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "id": 9865, + "initialValue": { + "arguments": [ + { + "id": 9863, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9855, + "src": "14608:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9862, + "name": "getActiveId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9506, + "src": "14596:11:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14596:19:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14578:37:23" + }, + { + "expression": { + "arguments": [ + { + "id": 9868, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9861, + "src": "14643:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9869, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "14653:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14661:11:23", + "memberName": "MASK_UINT24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10680, + "src": "14653:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9871, + "name": "OFFSET_ID_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9286, + "src": "14674:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9866, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9855, + "src": "14632:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14639:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "14632:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14632:56:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9859, + "id": 9873, + "nodeType": "Return", + "src": "14625:63:23" + } + ] + }, + "documentation": { + "id": 9853, + "nodeType": "StructuredDocumentation", + "src": "14286:192:23", + "text": " @dev Updates the index reference in the encoded pair parameters\n @param params The encoded pair parameters\n @return newParams The updated encoded pair parameters" + }, + "id": 9875, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateIdReference", + "nameLocation": "14492:17:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9855, + "mutability": "mutable", + "name": "params", + "nameLocation": "14518:6:23", + "nodeType": "VariableDeclaration", + "scope": 9875, + "src": "14510:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9854, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14510:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14509:16:23" + }, + "returnParameters": { + "id": 9859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9858, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "14557:9:23", + "nodeType": "VariableDeclaration", + "scope": 9875, + "src": "14549:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9857, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14549:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14548:19:23" + }, + "scope": 10096, + "src": "14483:212:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9899, + "nodeType": "Block", + "src": "15049:142:23", + "statements": [ + { + "assignments": [ + 9886 + ], + "declarations": [ + { + "constant": false, + "id": 9886, + "mutability": "mutable", + "name": "currentTime", + "nameLocation": "15066:11:23", + "nodeType": "VariableDeclaration", + "scope": 9899, + "src": "15059:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 9885, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "15059:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "id": 9890, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 9887, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9880, + "src": "15080:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15090:6:23", + "memberName": "safe40", + "nodeType": "MemberAccess", + "referencedDeclaration": 12046, + "src": "15080:16:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint40_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint40)" + } + }, + "id": 9889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15080:18:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15059:39:23" + }, + { + "expression": { + "arguments": [ + { + "id": 9893, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9886, + "src": "15126:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + { + "expression": { + "id": 9894, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "15139:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15147:11:23", + "memberName": "MASK_UINT40", + "nodeType": "MemberAccess", + "referencedDeclaration": 10683, + "src": "15139:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9896, + "name": "OFFSET_TIME_LAST_UPDATE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9289, + "src": "15160:23:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9891, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9878, + "src": "15115:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15122:3:23", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "15115:10:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15115:69:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9884, + "id": 9898, + "nodeType": "Return", + "src": "15108:76:23" + } + ] + }, + "documentation": { + "id": 9876, + "nodeType": "StructuredDocumentation", + "src": "14701:234:23", + "text": " @dev Updates the time of last update in the encoded pair parameters\n @param params The encoded pair parameters\n @param timestamp The timestamp\n @return newParams The updated encoded pair parameters" + }, + "id": 9900, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateTimeOfLastUpdate", + "nameLocation": "14949:22:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9878, + "mutability": "mutable", + "name": "params", + "nameLocation": "14980:6:23", + "nodeType": "VariableDeclaration", + "scope": 9900, + "src": "14972:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9877, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14972:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9880, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "14996:9:23", + "nodeType": "VariableDeclaration", + "scope": 9900, + "src": "14988:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14988:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14971:35:23" + }, + "returnParameters": { + "id": 9884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9883, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "15038:9:23", + "nodeType": "VariableDeclaration", + "scope": 9900, + "src": "15030:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9882, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15030:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "15029:19:23" + }, + "scope": 10096, + "src": "14940:251:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9941, + "nodeType": "Block", + "src": "15472:321:23", + "statements": [ + { + "assignments": [ + 9909 + ], + "declarations": [ + { + "constant": false, + "id": 9909, + "mutability": "mutable", + "name": "volAcc", + "nameLocation": "15490:6:23", + "nodeType": "VariableDeclaration", + "scope": 9941, + "src": "15482:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15482:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9913, + "initialValue": { + "arguments": [ + { + "id": 9911, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9903, + "src": "15524:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9910, + "name": "getVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9426, + "src": "15499:24:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15499:32:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15482:49:23" + }, + { + "assignments": [ + 9915 + ], + "declarations": [ + { + "constant": false, + "id": 9915, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "15549:15:23", + "nodeType": "VariableDeclaration", + "scope": 9941, + "src": "15541:23:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9914, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15541:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9919, + "initialValue": { + "arguments": [ + { + "id": 9917, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9903, + "src": "15586:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9916, + "name": "getReductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9362, + "src": "15567:18:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 9918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15567:26:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15541:52:23" + }, + { + "assignments": [ + 9921 + ], + "declarations": [ + { + "constant": false, + "id": 9921, + "mutability": "mutable", + "name": "volRef", + "nameLocation": "15611:6:23", + "nodeType": "VariableDeclaration", + "scope": 9941, + "src": "15604:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9920, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15604:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "id": 9922, + "nodeType": "VariableDeclarationStatement", + "src": "15604:13:23" + }, + { + "id": 9935, + "nodeType": "UncheckedBlock", + "src": "15627:104:23", + "statements": [ + { + "expression": { + "id": 9933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9923, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9921, + "src": "15651:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9926, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9909, + "src": "15667:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9927, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9915, + "src": "15676:15:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15667:24:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 9929, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "15694:9:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 9930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15704:15:23", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8162, + "src": "15694:25:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15667:52:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15660:6:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 9924, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15660:6:23", + "typeDescriptions": {} + } + }, + "id": 9932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15660:60:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "15651:69:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9934, + "nodeType": "ExpressionStatement", + "src": "15651:69:23" + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 9937, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9903, + "src": "15771:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9938, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9921, + "src": "15779:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9936, + "name": "setVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9676, + "src": "15748:22:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 9939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15748:38:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9907, + "id": 9940, + "nodeType": "Return", + "src": "15741:45:23" + } + ] + }, + "documentation": { + "id": 9901, + "nodeType": "StructuredDocumentation", + "src": "15197:187:23", + "text": " @dev Updates the volatility reference in the encoded pair parameters\n @param params The encoded pair parameters\n @return The updated encoded pair parameters" + }, + "id": 9942, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateVolatilityReference", + "nameLocation": "15398:25:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9903, + "mutability": "mutable", + "name": "params", + "nameLocation": "15432:6:23", + "nodeType": "VariableDeclaration", + "scope": 9942, + "src": "15424:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15424:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "15423:16:23" + }, + "returnParameters": { + "id": 9907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9906, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9942, + "src": "15463:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9905, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15463:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "15462:9:23" + }, + "scope": 10096, + "src": "15389:404:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10016, + "nodeType": "Block", + "src": "16132:531:23", + "statements": [ + { + "assignments": [ + 9953 + ], + "declarations": [ + { + "constant": false, + "id": 9953, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "16150:11:23", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "16142:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16142:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9957, + "initialValue": { + "arguments": [ + { + "id": 9955, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "16179:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9954, + "name": "getIdReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9458, + "src": "16164:14:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16164:22:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16142:44:23" + }, + { + "assignments": [ + 9959 + ], + "declarations": [ + { + "constant": false, + "id": 9959, + "mutability": "mutable", + "name": "deltaId", + "nameLocation": "16205:7:23", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "16197:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16197:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9960, + "nodeType": "VariableDeclarationStatement", + "src": "16197:15:23" + }, + { + "assignments": [ + 9962 + ], + "declarations": [ + { + "constant": false, + "id": 9962, + "mutability": "mutable", + "name": "volAcc", + "nameLocation": "16230:6:23", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "16222:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16222:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9963, + "nodeType": "VariableDeclarationStatement", + "src": "16222:14:23" + }, + { + "id": 9992, + "nodeType": "UncheckedBlock", + "src": "16247:219:23", + "statements": [ + { + "expression": { + "id": 9975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9964, + "name": "deltaId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9959, + "src": "16271:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9965, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9947, + "src": "16281:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9966, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9953, + "src": "16292:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16281:22:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9971, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9953, + "src": "16331:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9972, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9947, + "src": "16345:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "16331:22:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "16281:72:23", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9968, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9947, + "src": "16306:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9969, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9953, + "src": "16317:11:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16306:22:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16271:82:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9976, + "nodeType": "ExpressionStatement", + "src": "16271:82:23" + }, + { + "expression": { + "id": 9990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9977, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9962, + "src": "16367:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 9981, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "16408:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9980, + "name": "getVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9442, + "src": "16385:22:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16385:30:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16377:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9978, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16377:7:23", + "typeDescriptions": {} + } + }, + "id": 9983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16377:39:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9984, + "name": "deltaId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9959, + "src": "16419:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 9985, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "16429:9:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 9986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16439:15:23", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8162, + "src": "16429:25:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16419:35:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16377:77:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9989, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16376:79:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16367:88:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9991, + "nodeType": "ExpressionStatement", + "src": "16367:88:23" + } + ] + }, + { + "assignments": [ + 9994 + ], + "declarations": [ + { + "constant": false, + "id": 9994, + "mutability": "mutable", + "name": "maxVolAcc", + "nameLocation": "16484:9:23", + "nodeType": "VariableDeclaration", + "scope": 10016, + "src": "16476:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16476:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9998, + "initialValue": { + "arguments": [ + { + "id": 9996, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "16524:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9995, + "name": "getMaxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9410, + "src": "16496:27:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16496:35:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16476:55:23" + }, + { + "expression": { + "id": 10006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9999, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9962, + "src": "16542:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10000, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9962, + "src": "16551:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 10001, + "name": "maxVolAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9994, + "src": "16560:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16551:18:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 10004, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9962, + "src": "16584:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "16551:39:23", + "trueExpression": { + "id": 10003, + "name": "maxVolAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9994, + "src": "16572:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16542:48:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10007, + "nodeType": "ExpressionStatement", + "src": "16542:48:23" + }, + { + "expression": { + "arguments": [ + { + "id": 10009, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9945, + "src": "16633:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 10012, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9962, + "src": "16648:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16641:6:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 10010, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "16641:6:23", + "typeDescriptions": {} + } + }, + "id": 10013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16641:14:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 10008, + "name": "setVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9703, + "src": "16608:24:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 10014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16608:48:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9951, + "id": 10015, + "nodeType": "Return", + "src": "16601:55:23" + } + ] + }, + "documentation": { + "id": 9943, + "nodeType": "StructuredDocumentation", + "src": "15799:226:23", + "text": " @dev Updates the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param activeId The active id\n @return The updated encoded pair parameters" + }, + "id": 10017, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateVolatilityAccumulator", + "nameLocation": "16039:27:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9945, + "mutability": "mutable", + "name": "params", + "nameLocation": "16075:6:23", + "nodeType": "VariableDeclaration", + "scope": 10017, + "src": "16067:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9944, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16067:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9947, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "16090:8:23", + "nodeType": "VariableDeclaration", + "scope": 10017, + "src": "16083:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9946, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "16083:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "16066:33:23" + }, + "returnParameters": { + "id": 9951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9950, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10017, + "src": "16123:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9949, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16123:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "16122:9:23" + }, + "scope": 10096, + "src": "16030:633:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10069, + "nodeType": "Block", + "src": "17023:354:23", + "statements": [ + { + "assignments": [ + 10028 + ], + "declarations": [ + { + "constant": false, + "id": 10028, + "mutability": "mutable", + "name": "dt", + "nameLocation": "17041:2:23", + "nodeType": "VariableDeclaration", + "scope": 10069, + "src": "17033:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17033:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10034, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10029, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10022, + "src": "17046:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 10031, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17078:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10030, + "name": "getTimeOfLastUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9474, + "src": "17058:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint40_$", + "typeString": "function (bytes32) pure returns (uint40)" + } + }, + "id": 10032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17058:27:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "17046:39:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17033:52:23" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10035, + "name": "dt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10028, + "src": "17100:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [ + { + "id": 10037, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17122:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10036, + "name": "getFilterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9330, + "src": "17106:15:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 10038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17106:23:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "17100:29:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10063, + "nodeType": "IfStatement", + "src": "17096:216:23", + "trueBody": { + "id": 10062, + "nodeType": "Block", + "src": "17131:181:23", + "statements": [ + { + "expression": { + "id": 10044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10040, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17145:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10042, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17172:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10041, + "name": "updateIdReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9875, + "src": "17154:17:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 10043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17154:25:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "17145:34:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10045, + "nodeType": "ExpressionStatement", + "src": "17145:34:23" + }, + { + "expression": { + "id": 10060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10046, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17193:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10047, + "name": "dt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10028, + "src": "17202:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "arguments": [ + { + "id": 10049, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17222:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10048, + "name": "getDecayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9346, + "src": "17207:14:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 10050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17207:22:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "17202:27:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [ + { + "id": 10056, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17291:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "30", + "id": 10057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17299:1:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10055, + "name": "setVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9676, + "src": "17268:22:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 10058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17268:33:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "17202:99:23", + "trueExpression": { + "arguments": [ + { + "id": 10053, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17258:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10052, + "name": "updateVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9942, + "src": "17232:25:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 10054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17232:33:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "17193:108:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10061, + "nodeType": "ExpressionStatement", + "src": "17193:108:23" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 10065, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10020, + "src": "17352:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10066, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10022, + "src": "17360:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10064, + "name": "updateTimeOfLastUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9900, + "src": "17329:22:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (bytes32)" + } + }, + "id": 10067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17329:41:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 10026, + "id": 10068, + "nodeType": "Return", + "src": "17322:48:23" + } + ] + }, + "documentation": { + "id": 10018, + "nodeType": "StructuredDocumentation", + "src": "16669:256:23", + "text": " @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param timestamp The timestamp\n @return The updated encoded pair parameters" + }, + "id": 10070, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateReferences", + "nameLocation": "16939:16:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10020, + "mutability": "mutable", + "name": "params", + "nameLocation": "16964:6:23", + "nodeType": "VariableDeclaration", + "scope": 10070, + "src": "16956:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10019, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16956:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10022, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "16980:9:23", + "nodeType": "VariableDeclaration", + "scope": 10070, + "src": "16972:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10021, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16972:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16955:35:23" + }, + "returnParameters": { + "id": 10026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10025, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10070, + "src": "17014:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10024, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17014:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "17013:9:23" + }, + "scope": 10096, + "src": "16930:447:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10094, + "nodeType": "Block", + "src": "17829:123:23", + "statements": [ + { + "expression": { + "id": 10087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10082, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10073, + "src": "17839:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10084, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10073, + "src": "17865:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10085, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10077, + "src": "17873:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10083, + "name": "updateReferences", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10070, + "src": "17848:16:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (bytes32)" + } + }, + "id": 10086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17848:35:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "17839:44:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10088, + "nodeType": "ExpressionStatement", + "src": "17839:44:23" + }, + { + "expression": { + "arguments": [ + { + "id": 10090, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10073, + "src": "17928:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10091, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10075, + "src": "17936:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 10089, + "name": "updateVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10017, + "src": "17900:27:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 10092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17900:45:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 10081, + "id": 10093, + "nodeType": "Return", + "src": "17893:52:23" + } + ] + }, + "documentation": { + "id": 10071, + "nodeType": "StructuredDocumentation", + "src": "17383:293:23", + "text": " @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param activeId The active id\n @param timestamp The timestamp\n @return The updated encoded pair parameters" + }, + "id": 10095, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateVolatilityParameters", + "nameLocation": "17690:26:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10073, + "mutability": "mutable", + "name": "params", + "nameLocation": "17725:6:23", + "nodeType": "VariableDeclaration", + "scope": 10095, + "src": "17717:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17717:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10075, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "17740:8:23", + "nodeType": "VariableDeclaration", + "scope": 10095, + "src": "17733:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10074, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "17733:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10077, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "17758:9:23", + "nodeType": "VariableDeclaration", + "scope": 10095, + "src": "17750:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10076, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17750:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17716:52:23" + }, + "returnParameters": { + "id": 10081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10080, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10095, + "src": "17816:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10079, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17816:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "17815:9:23" + }, + "scope": 10096, + "src": "17681:271:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10097, + "src": "964:16990:23", + "usedErrors": [ + 9256 + ], + "usedEvents": [] + } + ], + "src": "33:17922:23" + }, + "id": 23 + }, + "src/libraries/PriceHelper.sol": { + "ast": { + "absolutePath": "src/libraries/PriceHelper.sol", + "exportedSymbols": { + "Constants": [ + 8172 + ], + "PriceHelper": [ + 10270 + ], + "SafeCast": [ + 12135 + ], + "Uint128x128Math": [ + 12361 + ], + "Uint256x256Math": [ + 12771 + ] + }, + "id": 10271, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10098, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:24" + }, + { + "absolutePath": "src/libraries/math/Uint128x128Math.sol", + "file": "./math/Uint128x128Math.sol", + "id": 10100, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10271, + "sourceUnit": 12362, + "src": "59:59:24", + "symbolAliases": [ + { + "foreign": { + "id": 10099, + "name": "Uint128x128Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12361, + "src": "67:15:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Uint256x256Math.sol", + "file": "./math/Uint256x256Math.sol", + "id": 10102, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10271, + "sourceUnit": 12772, + "src": "119:59:24", + "symbolAliases": [ + { + "foreign": { + "id": 10101, + "name": "Uint256x256Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12771, + "src": "127:15:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/SafeCast.sol", + "file": "./math/SafeCast.sol", + "id": 10104, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10271, + "sourceUnit": 12136, + "src": "179:45:24", + "symbolAliases": [ + { + "foreign": { + "id": 10103, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12135, + "src": "187:8:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "./Constants.sol", + "id": 10106, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10271, + "sourceUnit": 8173, + "src": "225:42:24", + "symbolAliases": [ + { + "foreign": { + "id": 10105, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "233:9:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "PriceHelper", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10107, + "nodeType": "StructuredDocumentation", + "src": "269:116:24", + "text": " @title Liquidity Book Price Helper Library\n @notice This library contains functions to calculate prices" + }, + "fullyImplemented": true, + "id": 10270, + "linearizedBaseContracts": [ + 10270 + ], + "name": "PriceHelper", + "nameLocation": "394:11:24", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 10110, + "libraryName": { + "id": 10108, + "name": "Uint128x128Math", + "nameLocations": [ + "418:15:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12361, + "src": "418:15:24" + }, + "nodeType": "UsingForDirective", + "src": "412:34:24", + "typeName": { + "id": 10109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "438:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 10113, + "libraryName": { + "id": 10111, + "name": "Uint256x256Math", + "nameLocations": [ + "457:15:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12771, + "src": "457:15:24" + }, + "nodeType": "UsingForDirective", + "src": "451:34:24", + "typeName": { + "id": 10112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "477:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 10116, + "libraryName": { + "id": 10114, + "name": "SafeCast", + "nameLocations": [ + "496:8:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12135, + "src": "496:8:24" + }, + "nodeType": "UsingForDirective", + "src": "490:27:24", + "typeName": { + "id": 10115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "509:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "id": 10121, + "mutability": "constant", + "name": "REAL_ID_SHIFT", + "nameLocation": "547:13:24", + "nodeType": "VariableDeclaration", + "scope": 10270, + "src": "523:47:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 10117, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "523:6:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_8388608_by_1", + "typeString": "int_const 8388608" + }, + "id": 10120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 10118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "563:1:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3233", + "id": 10119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "568:2:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_23_by_1", + "typeString": "int_const 23" + }, + "value": "23" + }, + "src": "563:7:24", + "typeDescriptions": { + "typeIdentifier": "t_rational_8388608_by_1", + "typeString": "int_const 8388608" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 10150, + "nodeType": "Block", + "src": "873:128:24", + "statements": [ + { + "assignments": [ + 10132 + ], + "declarations": [ + { + "constant": false, + "id": 10132, + "mutability": "mutable", + "name": "base", + "nameLocation": "891:4:24", + "nodeType": "VariableDeclaration", + "scope": 10150, + "src": "883:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "883:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10136, + "initialValue": { + "arguments": [ + { + "id": 10134, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10126, + "src": "906:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10133, + "name": "getBase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10215, + "src": "898:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (uint16) pure returns (uint256)" + } + }, + "id": 10135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "898:16:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "883:31:24" + }, + { + "assignments": [ + 10138 + ], + "declarations": [ + { + "constant": false, + "id": 10138, + "mutability": "mutable", + "name": "exponent", + "nameLocation": "931:8:24", + "nodeType": "VariableDeclaration", + "scope": 10150, + "src": "924:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 10137, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "924:6:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 10142, + "initialValue": { + "arguments": [ + { + "id": 10140, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10124, + "src": "954:2:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 10139, + "name": "getExponent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10235, + "src": "942:11:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint24_$returns$_t_int256_$", + "typeString": "function (uint24) pure returns (int256)" + } + }, + "id": 10141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "942:15:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "924:33:24" + }, + { + "expression": { + "id": 10148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10143, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10129, + "src": "968:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10146, + "name": "exponent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10138, + "src": "985:8:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "id": 10144, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10132, + "src": "976:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "981:3:24", + "memberName": "pow", + "nodeType": "MemberAccess", + "referencedDeclaration": 12360, + "src": "976:8:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_int256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,int256) pure returns (uint256)" + } + }, + "id": 10147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "976:18:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "968:26:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10149, + "nodeType": "ExpressionStatement", + "src": "968:26:24" + } + ] + }, + "documentation": { + "id": 10122, + "nodeType": "StructuredDocumentation", + "src": "577:202:24", + "text": " @dev Calculates the price from the id and the bin step\n @param id The id\n @param binStep The bin step\n @return price The price as a 128.128-binary fixed-point number" + }, + "id": 10151, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPriceFromId", + "nameLocation": "793:14:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10124, + "mutability": "mutable", + "name": "id", + "nameLocation": "815:2:24", + "nodeType": "VariableDeclaration", + "scope": 10151, + "src": "808:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10123, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "808:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10126, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "826:7:24", + "nodeType": "VariableDeclaration", + "scope": 10151, + "src": "819:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10125, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "819:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "807:27:24" + }, + "returnParameters": { + "id": 10130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10129, + "mutability": "mutable", + "name": "price", + "nameLocation": "866:5:24", + "nodeType": "VariableDeclaration", + "scope": 10151, + "src": "858:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "858:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "857:15:24" + }, + "scope": 10270, + "src": "784:217:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10189, + "nodeType": "Block", + "src": "1303:190:24", + "statements": [ + { + "assignments": [ + 10162 + ], + "declarations": [ + { + "constant": false, + "id": 10162, + "mutability": "mutable", + "name": "base", + "nameLocation": "1321:4:24", + "nodeType": "VariableDeclaration", + "scope": 10189, + "src": "1313:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10161, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1313:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10166, + "initialValue": { + "arguments": [ + { + "id": 10164, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10156, + "src": "1336:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10163, + "name": "getBase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10215, + "src": "1328:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (uint16) pure returns (uint256)" + } + }, + "id": 10165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1328:16:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1313:31:24" + }, + { + "assignments": [ + 10168 + ], + "declarations": [ + { + "constant": false, + "id": 10168, + "mutability": "mutable", + "name": "realId", + "nameLocation": "1361:6:24", + "nodeType": "VariableDeclaration", + "scope": 10189, + "src": "1354:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 10167, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1354:6:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 10176, + "initialValue": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 10175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 10169, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10154, + "src": "1370:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1376:4:24", + "memberName": "log2", + "nodeType": "MemberAccess", + "referencedDeclaration": 12304, + "src": "1370:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 10171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1370:12:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 10172, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10162, + "src": "1385:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1390:4:24", + "memberName": "log2", + "nodeType": "MemberAccess", + "referencedDeclaration": 12304, + "src": "1385:9:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 10174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1385:11:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1370:26:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1354:42:24" + }, + { + "id": 10188, + "nodeType": "UncheckedBlock", + "src": "1407:80:24", + "statements": [ + { + "expression": { + "id": 10186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10177, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10159, + "src": "1431:2:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 10182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10180, + "name": "REAL_ID_SHIFT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10121, + "src": "1444:13:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 10181, + "name": "realId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10168, + "src": "1460:6:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1444:22:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 10179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1436:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10178, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1436:7:24", + "typeDescriptions": {} + } + }, + "id": 10183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1436:31:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1468:6:24", + "memberName": "safe24", + "nodeType": "MemberAccess", + "referencedDeclaration": 12090, + "src": "1436:38:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint24_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint24)" + } + }, + "id": 10185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1436:40:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "1431:45:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 10187, + "nodeType": "ExpressionStatement", + "src": "1431:45:24" + } + ] + } + ] + }, + "documentation": { + "id": 10152, + "nodeType": "StructuredDocumentation", + "src": "1007:202:24", + "text": " @dev Calculates the id from the price and the bin step\n @param price The price as a 128.128-binary fixed-point number\n @param binStep The bin step\n @return id The id" + }, + "id": 10190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIdFromPrice", + "nameLocation": "1223:14:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10154, + "mutability": "mutable", + "name": "price", + "nameLocation": "1246:5:24", + "nodeType": "VariableDeclaration", + "scope": 10190, + "src": "1238:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1238:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10156, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1260:7:24", + "nodeType": "VariableDeclaration", + "scope": 10190, + "src": "1253:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10155, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1253:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "1237:31:24" + }, + "returnParameters": { + "id": 10160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10159, + "mutability": "mutable", + "name": "id", + "nameLocation": "1299:2:24", + "nodeType": "VariableDeclaration", + "scope": 10190, + "src": "1292:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10158, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1292:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1291:11:24" + }, + "scope": 10270, + "src": "1214:279:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10214, + "nodeType": "Block", + "src": "1736:148:24", + "statements": [ + { + "id": 10213, + "nodeType": "UncheckedBlock", + "src": "1746:132:24", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10198, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "1777:9:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 10199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1787:5:24", + "memberName": "SCALE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8145, + "src": "1777:15:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10202, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10193, + "src": "1804:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1796:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10200, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1796:7:24", + "typeDescriptions": {} + } + }, + "id": 10203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1796:16:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "expression": { + "id": 10204, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "1816:9:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 10205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1826:12:24", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "1816:22:24", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1796:42:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 10207, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1795:44:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 10208, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "1842:9:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 10209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1852:15:24", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8162, + "src": "1842:25:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1795:72:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1777:90:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10197, + "id": 10212, + "nodeType": "Return", + "src": "1770:97:24" + } + ] + } + ] + }, + "documentation": { + "id": 10191, + "nodeType": "StructuredDocumentation", + "src": "1499:167:24", + "text": " @dev Calculates the base from the bin step, which is `1 + binStep / BASIS_POINT_MAX`\n @param binStep The bin step\n @return base The base" + }, + "id": 10215, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBase", + "nameLocation": "1680:7:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10193, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1695:7:24", + "nodeType": "VariableDeclaration", + "scope": 10215, + "src": "1688:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10192, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1688:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "1687:16:24" + }, + "returnParameters": { + "id": 10197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10196, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10215, + "src": "1727:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1727:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1726:9:24" + }, + "scope": 10270, + "src": "1671:213:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10234, + "nodeType": "Block", + "src": "2109:93:24", + "statements": [ + { + "id": 10233, + "nodeType": "UncheckedBlock", + "src": "2119:77:24", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 10231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 10227, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10218, + "src": "2165:2:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 10226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2157:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10225, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2157:7:24", + "typeDescriptions": {} + } + }, + "id": 10228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2157:11:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2150:6:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 10223, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2150:6:24", + "typeDescriptions": {} + } + }, + "id": 10229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2150:19:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10230, + "name": "REAL_ID_SHIFT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10121, + "src": "2172:13:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2150:35:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 10222, + "id": 10232, + "nodeType": "Return", + "src": "2143:42:24" + } + ] + } + ] + }, + "documentation": { + "id": 10216, + "nodeType": "StructuredDocumentation", + "src": "1890:151:24", + "text": " @dev Calculates the exponent from the id, which is `id - REAL_ID_SHIFT`\n @param id The id\n @return exponent The exponent" + }, + "id": 10235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getExponent", + "nameLocation": "2055:11:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10218, + "mutability": "mutable", + "name": "id", + "nameLocation": "2074:2:24", + "nodeType": "VariableDeclaration", + "scope": 10235, + "src": "2067:9:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10217, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2067:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "2066:11:24" + }, + "returnParameters": { + "id": 10222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10221, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10235, + "src": "2101:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 10220, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2101:6:24", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "2100:8:24" + }, + "scope": 10270, + "src": "2046:156:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10251, + "nodeType": "Block", + "src": "2507:92:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10245, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "2548:9:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 10246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2558:12:24", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "2548:22:24", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "expression": { + "id": 10247, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "2572:9:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 10248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2582:9:24", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8148, + "src": "2572:19:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10243, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10238, + "src": "2524:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2530:17:24", + "memberName": "shiftDivRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 12569, + "src": "2524:23:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint8_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint8,uint256) pure returns (uint256)" + } + }, + "id": 10249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2524:68:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10242, + "id": 10250, + "nodeType": "Return", + "src": "2517:75:24" + } + ] + }, + "documentation": { + "id": 10236, + "nodeType": "StructuredDocumentation", + "src": "2208:209:24", + "text": " @dev Converts a price with 18 decimals to a 128.128-binary fixed-point number\n @param price The price with 18 decimals\n @return price128x128 The 128.128-binary fixed-point number" + }, + "id": 10252, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "convertDecimalPriceTo128x128", + "nameLocation": "2431:28:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10238, + "mutability": "mutable", + "name": "price", + "nameLocation": "2468:5:24", + "nodeType": "VariableDeclaration", + "scope": 10252, + "src": "2460:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10237, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2460:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2459:15:24" + }, + "returnParameters": { + "id": 10242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10241, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10252, + "src": "2498:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10240, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2498:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2497:9:24" + }, + "scope": 10270, + "src": "2422:177:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10268, + "nodeType": "Block", + "src": "2911:99:24", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10262, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "2959:9:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 10263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2969:9:24", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8148, + "src": "2959:19:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 10264, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "2980:9:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 10265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2990:12:24", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8140, + "src": "2980:22:24", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "id": 10260, + "name": "price128x128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10255, + "src": "2928:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2941:17:24", + "memberName": "mulShiftRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 12489, + "src": "2928:30:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 10266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2928:75:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10259, + "id": 10267, + "nodeType": "Return", + "src": "2921:82:24" + } + ] + }, + "documentation": { + "id": 10253, + "nodeType": "StructuredDocumentation", + "src": "2605:209:24", + "text": " @dev Converts a 128.128-binary fixed-point number to a price with 18 decimals\n @param price128x128 The 128.128-binary fixed-point number\n @return price The price with 18 decimals" + }, + "id": 10269, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "convert128x128PriceToDecimal", + "nameLocation": "2828:28:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10255, + "mutability": "mutable", + "name": "price128x128", + "nameLocation": "2865:12:24", + "nodeType": "VariableDeclaration", + "scope": 10269, + "src": "2857:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2857:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2856:22:24" + }, + "returnParameters": { + "id": 10259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10258, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10269, + "src": "2902:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2902:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2901:9:24" + }, + "scope": 10270, + "src": "2819:191:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10271, + "src": "386:2626:24", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:2980:24" + }, + "id": 24 + }, + "src/libraries/SovrynLBLibrary.sol": { + "ast": { + "absolutePath": "src/libraries/SovrynLBLibrary.sol", + "exportedSymbols": { + "SovrynLBLibrary": [ + 10476 + ] + }, + "id": 10477, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10272, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "37:24:25" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SovrynLBLibrary", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10273, + "nodeType": "StructuredDocumentation", + "src": "63:112:25", + "text": " @title Sovryn LB Helper Library\n @notice Helper contract used for Sovryn LB V1 related calculations" + }, + "fullyImplemented": true, + "id": 10476, + "linearizedBaseContracts": [ + 10476 + ], + "name": "SovrynLBLibrary", + "nameLocation": "184:15:25", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "44d04f22", + "id": 10275, + "name": "SovrynLBLibrary__AddressZero", + "nameLocation": "212:28:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10274, + "nodeType": "ParameterList", + "parameters": [], + "src": "240:2:25" + }, + "src": "206:37:25" + }, + { + "errorSelector": "827524a3", + "id": 10277, + "name": "SovrynLBLibrary__IdenticalAddresses", + "nameLocation": "254:35:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10276, + "nodeType": "ParameterList", + "parameters": [], + "src": "289:2:25" + }, + "src": "248:44:25" + }, + { + "errorSelector": "b937356b", + "id": 10279, + "name": "SovrynLBLibrary__InsufficientAmount", + "nameLocation": "303:35:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10278, + "nodeType": "ParameterList", + "parameters": [], + "src": "338:2:25" + }, + "src": "297:44:25" + }, + { + "errorSelector": "7b035555", + "id": 10281, + "name": "SovrynLBLibrary__InsufficientLiquidity", + "nameLocation": "352:38:25", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10280, + "nodeType": "ParameterList", + "parameters": [], + "src": "390:2:25" + }, + "src": "346:47:25" + }, + { + "body": { + "id": 10324, + "nodeType": "Block", + "src": "606:238:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10292, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10283, + "src": "620:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 10293, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10285, + "src": "630:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "620:16:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10298, + "nodeType": "IfStatement", + "src": "616:66:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10295, + "name": "SovrynLBLibrary__IdenticalAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10277, + "src": "645:35:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "645:37:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10297, + "nodeType": "RevertStatement", + "src": "638:44:25" + } + }, + { + "expression": { + "id": 10312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 10299, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10288, + "src": "693:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10300, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10290, + "src": "701:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 10301, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "692:16:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10302, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10283, + "src": "711:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 10303, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10285, + "src": "720:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "711:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "components": [ + { + "id": 10308, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10285, + "src": "749:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10309, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10283, + "src": "757:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 10310, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "748:16:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "id": 10311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "711:53:25", + "trueExpression": { + "components": [ + { + "id": 10305, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10283, + "src": "730:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10306, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10285, + "src": "738:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 10307, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "729:16:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "src": "692:72:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10313, + "nodeType": "ExpressionStatement", + "src": "692:72:25" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10314, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10288, + "src": "778:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 10317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "796:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 10316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "788:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "788:7:25", + "typeDescriptions": {} + } + }, + "id": 10318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "788:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "778:20:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10323, + "nodeType": "IfStatement", + "src": "774:63:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10320, + "name": "SovrynLBLibrary__AddressZero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10275, + "src": "807:28:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "807:30:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10322, + "nodeType": "RevertStatement", + "src": "800:37:25" + } + } + ] + }, + "id": 10325, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sortTokens", + "nameLocation": "508:10:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10283, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "527:6:25", + "nodeType": "VariableDeclaration", + "scope": 10325, + "src": "519:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "519:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10285, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "543:6:25", + "nodeType": "VariableDeclaration", + "scope": 10325, + "src": "535:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "535:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "518:32:25" + }, + "returnParameters": { + "id": 10291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10288, + "mutability": "mutable", + "name": "token0", + "nameLocation": "582:6:25", + "nodeType": "VariableDeclaration", + "scope": 10325, + "src": "574:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "574:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10290, + "mutability": "mutable", + "name": "token1", + "nameLocation": "598:6:25", + "nodeType": "VariableDeclaration", + "scope": 10325, + "src": "590:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "590:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "573:32:25" + }, + "scope": 10476, + "src": "499:345:25", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10363, + "nodeType": "Block", + "src": "1062:223:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10336, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10327, + "src": "1076:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1087:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1076:12:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10342, + "nodeType": "IfStatement", + "src": "1072:62:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10339, + "name": "SovrynLBLibrary__InsufficientAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10279, + "src": "1097:35:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1097:37:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10341, + "nodeType": "RevertStatement", + "src": "1090:44:25" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10343, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10329, + "src": "1148:8:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1160:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1148:13:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10346, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10331, + "src": "1165:8:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1177:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1165:13:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1148:30:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10353, + "nodeType": "IfStatement", + "src": "1144:83:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10350, + "name": "SovrynLBLibrary__InsufficientLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10281, + "src": "1187:38:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1187:40:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10352, + "nodeType": "RevertStatement", + "src": "1180:47:25" + } + }, + { + "expression": { + "id": 10361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10354, + "name": "amountB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10334, + "src": "1237:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10355, + "name": "amountA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10327, + "src": "1248:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 10356, + "name": "reserveB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10331, + "src": "1258:8:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1248:18:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 10358, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1247:20:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10359, + "name": "reserveA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10329, + "src": "1270:8:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1247:31:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1237:41:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10362, + "nodeType": "ExpressionStatement", + "src": "1237:41:25" + } + ] + }, + "id": 10364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "quote", + "nameLocation": "963:5:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10327, + "mutability": "mutable", + "name": "amountA", + "nameLocation": "977:7:25", + "nodeType": "VariableDeclaration", + "scope": 10364, + "src": "969:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "969:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10329, + "mutability": "mutable", + "name": "reserveA", + "nameLocation": "994:8:25", + "nodeType": "VariableDeclaration", + "scope": 10364, + "src": "986:16:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10328, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "986:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10331, + "mutability": "mutable", + "name": "reserveB", + "nameLocation": "1012:8:25", + "nodeType": "VariableDeclaration", + "scope": 10364, + "src": "1004:16:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10330, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1004:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "968:53:25" + }, + "returnParameters": { + "id": 10335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10334, + "mutability": "mutable", + "name": "amountB", + "nameLocation": "1053:7:25", + "nodeType": "VariableDeclaration", + "scope": 10364, + "src": "1045:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1045:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1044:17:25" + }, + "scope": 10476, + "src": "954:331:25", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10419, + "nodeType": "Block", + "src": "1553:395:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10375, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10366, + "src": "1567:8:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1579:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1567:13:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10381, + "nodeType": "IfStatement", + "src": "1563:63:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10378, + "name": "SovrynLBLibrary__InsufficientAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10279, + "src": "1589:35:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1589:37:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10380, + "nodeType": "RevertStatement", + "src": "1582:44:25" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10382, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10368, + "src": "1640:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1653:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1640:14:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10385, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10370, + "src": "1658:10:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1672:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1658:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1640:33:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10392, + "nodeType": "IfStatement", + "src": "1636:86:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10389, + "name": "SovrynLBLibrary__InsufficientLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10281, + "src": "1682:38:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1682:40:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10391, + "nodeType": "RevertStatement", + "src": "1675:47:25" + } + }, + { + "assignments": [ + 10394 + ], + "declarations": [ + { + "constant": false, + "id": 10394, + "mutability": "mutable", + "name": "amountInWithFee", + "nameLocation": "1740:15:25", + "nodeType": "VariableDeclaration", + "scope": 10419, + "src": "1732:23:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10393, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1732:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10398, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10395, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10366, + "src": "1758:8:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "393937", + "id": 10396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1769:3:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + }, + "src": "1758:14:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1732:40:25" + }, + { + "assignments": [ + 10400 + ], + "declarations": [ + { + "constant": false, + "id": 10400, + "mutability": "mutable", + "name": "numerator", + "nameLocation": "1790:9:25", + "nodeType": "VariableDeclaration", + "scope": 10419, + "src": "1782:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1782:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10404, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10401, + "name": "amountInWithFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10394, + "src": "1802:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 10402, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10370, + "src": "1820:10:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1802:28:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1782:48:25" + }, + { + "assignments": [ + 10406 + ], + "declarations": [ + { + "constant": false, + "id": 10406, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "1848:11:25", + "nodeType": "VariableDeclaration", + "scope": 10419, + "src": "1840:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1840:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10412, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10407, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10368, + "src": "1862:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "31303030", + "id": 10408, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1874:4:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "1862:16:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 10410, + "name": "amountInWithFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10394, + "src": "1881:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1862:34:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1840:56:25" + }, + { + "expression": { + "id": 10417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10413, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10373, + "src": "1906:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10414, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10400, + "src": "1918:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10415, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10406, + "src": "1930:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1918:23:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1906:35:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10418, + "nodeType": "ExpressionStatement", + "src": "1906:35:25" + } + ] + }, + "id": 10420, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountOut", + "nameLocation": "1413:12:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10366, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "1434:8:25", + "nodeType": "VariableDeclaration", + "scope": 10420, + "src": "1426:16:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1426:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10368, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "1452:9:25", + "nodeType": "VariableDeclaration", + "scope": 10420, + "src": "1444:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10370, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "1471:10:25", + "nodeType": "VariableDeclaration", + "scope": 10420, + "src": "1463:18:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1463:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1425:57:25" + }, + "returnParameters": { + "id": 10374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10373, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "1538:9:25", + "nodeType": "VariableDeclaration", + "scope": 10420, + "src": "1530:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1530:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1529:19:25" + }, + "scope": 10476, + "src": "1404:544:25", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10474, + "nodeType": "Block", + "src": "2214:345:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10431, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10422, + "src": "2228:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2241:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2228:14:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10437, + "nodeType": "IfStatement", + "src": "2224:64:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10434, + "name": "SovrynLBLibrary__InsufficientAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10279, + "src": "2251:35:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2251:37:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10436, + "nodeType": "RevertStatement", + "src": "2244:44:25" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10438, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10424, + "src": "2302:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2315:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2302:14:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10441, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10426, + "src": "2320:10:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2334:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2320:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2302:33:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10448, + "nodeType": "IfStatement", + "src": "2298:86:25", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10445, + "name": "SovrynLBLibrary__InsufficientLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10281, + "src": "2344:38:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2344:40:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10447, + "nodeType": "RevertStatement", + "src": "2337:47:25" + } + }, + { + "assignments": [ + 10450 + ], + "declarations": [ + { + "constant": false, + "id": 10450, + "mutability": "mutable", + "name": "numerator", + "nameLocation": "2402:9:25", + "nodeType": "VariableDeclaration", + "scope": 10474, + "src": "2394:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2394:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10456, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10451, + "name": "reserveIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10424, + "src": "2414:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 10452, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10422, + "src": "2426:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2414:21:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "31303030", + "id": 10454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2438:4:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "2414:28:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2394:48:25" + }, + { + "assignments": [ + 10458 + ], + "declarations": [ + { + "constant": false, + "id": 10458, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "2460:11:25", + "nodeType": "VariableDeclaration", + "scope": 10474, + "src": "2452:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2452:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10465, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10459, + "name": "reserveOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10426, + "src": "2475:10:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10460, + "name": "amountOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10422, + "src": "2488:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2475:22:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 10462, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2474:24:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "393937", + "id": 10463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2501:3:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_997_by_1", + "typeString": "int_const 997" + }, + "value": "997" + }, + "src": "2474:30:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2452:52:25" + }, + { + "expression": { + "id": 10472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10466, + "name": "amountIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10429, + "src": "2514:8:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10467, + "name": "numerator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10450, + "src": "2525:9:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 10468, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10458, + "src": "2537:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2525:23:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 10470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2551:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2525:27:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2514:38:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10473, + "nodeType": "ExpressionStatement", + "src": "2514:38:25" + } + ] + }, + "id": 10475, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountIn", + "nameLocation": "2075:11:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10422, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "2095:9:25", + "nodeType": "VariableDeclaration", + "scope": 10475, + "src": "2087:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2087:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10424, + "mutability": "mutable", + "name": "reserveIn", + "nameLocation": "2114:9:25", + "nodeType": "VariableDeclaration", + "scope": 10475, + "src": "2106:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2106:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10426, + "mutability": "mutable", + "name": "reserveOut", + "nameLocation": "2133:10:25", + "nodeType": "VariableDeclaration", + "scope": 10475, + "src": "2125:18:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10425, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2125:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2086:58:25" + }, + "returnParameters": { + "id": 10430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10429, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "2200:8:25", + "nodeType": "VariableDeclaration", + "scope": 10475, + "src": "2192:16:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2192:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2191:18:25" + }, + "scope": 10476, + "src": "2066:493:25", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10477, + "src": "176:2385:25", + "usedErrors": [ + 10275, + 10277, + 10279, + 10281 + ], + "usedEvents": [] + } + ], + "src": "37:2525:25" + }, + "id": 25 + }, + "src/libraries/TokenHelper.sol": { + "ast": { + "absolutePath": "src/libraries/TokenHelper.sol", + "exportedSymbols": { + "IERC20": [ + 479 + ], + "TokenHelper": [ + 10562 + ] + }, + "id": 10563, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10478, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:26" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 10480, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10563, + "sourceUnit": 480, + "src": "59:70:26", + "symbolAliases": [ + { + "foreign": { + "id": 10479, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "67:6:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "TokenHelper", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10481, + "nodeType": "StructuredDocumentation", + "src": "131:481:26", + "text": " @title Liquidity Book Token Helper Library\n @notice Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using TokenHelper for IERC20;` statement to your contract,\n which allows you to call the safe operation as `token.safeTransfer(...)`" + }, + "fullyImplemented": true, + "id": 10562, + "linearizedBaseContracts": [ + 10562 + ], + "name": "TokenHelper", + "nameLocation": "621:11:26", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "32e2717a", + "id": 10483, + "name": "TokenHelper__TransferFailed", + "nameLocation": "645:27:26", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10482, + "nodeType": "ParameterList", + "parameters": [], + "src": "672:2:26" + }, + "src": "639:36:26" + }, + { + "body": { + "id": 10513, + "nodeType": "Block", + "src": "1043:151:26", + "statements": [ + { + "assignments": [ + 10497 + ], + "declarations": [ + { + "constant": false, + "id": 10497, + "mutability": "mutable", + "name": "data", + "nameLocation": "1066:4:26", + "nodeType": "VariableDeclaration", + "scope": 10513, + "src": "1053:17:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10496, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1053:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 10507, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 10500, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10487, + "src": "1096:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 10501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1102:12:26", + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 478, + "src": "1096:18:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 10502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1115:8:26", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "1096:27:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 10503, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10489, + "src": "1125:5:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10504, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10491, + "src": "1132:9:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10505, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10493, + "src": "1143:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10498, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "1073:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1077:18:26", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "1073:22:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 10506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1073:77:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1053:97:26" + }, + { + "expression": { + "arguments": [ + { + "id": 10509, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10487, + "src": "1175:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 10510, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10497, + "src": "1182:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10508, + "name": "_callAndCatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10561, + "src": "1161:13:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 10511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1161:26:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10512, + "nodeType": "ExpressionStatement", + "src": "1161:26:26" + } + ] + }, + "documentation": { + "id": 10484, + "nodeType": "StructuredDocumentation", + "src": "681:258:26", + "text": " @notice Transfers token and reverts if the transfer fails\n @param token The address of the token\n @param owner The owner of the tokens\n @param recipient The address of the recipient\n @param amount The amount to send" + }, + "id": 10514, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "953:16:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10487, + "mutability": "mutable", + "name": "token", + "nameLocation": "977:5:26", + "nodeType": "VariableDeclaration", + "scope": 10514, + "src": "970:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10486, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10485, + "name": "IERC20", + "nameLocations": [ + "970:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "970:6:26" + }, + "referencedDeclaration": 479, + "src": "970:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10489, + "mutability": "mutable", + "name": "owner", + "nameLocation": "992:5:26", + "nodeType": "VariableDeclaration", + "scope": 10514, + "src": "984:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "984:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10491, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1007:9:26", + "nodeType": "VariableDeclaration", + "scope": 10514, + "src": "999:17:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "999:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10493, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1026:6:26", + "nodeType": "VariableDeclaration", + "scope": 10514, + "src": "1018:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10492, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1018:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "969:64:26" + }, + "returnParameters": { + "id": 10495, + "nodeType": "ParameterList", + "parameters": [], + "src": "1043:0:26" + }, + "scope": 10562, + "src": "944:250:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10541, + "nodeType": "Block", + "src": "1499:140:26", + "statements": [ + { + "assignments": [ + 10526 + ], + "declarations": [ + { + "constant": false, + "id": 10526, + "mutability": "mutable", + "name": "data", + "nameLocation": "1522:4:26", + "nodeType": "VariableDeclaration", + "scope": 10541, + "src": "1509:17:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10525, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1509:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 10535, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 10529, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10518, + "src": "1552:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "id": 10530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1558:8:26", + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 446, + "src": "1552:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 10531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1567:8:26", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "1552:23:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 10532, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10520, + "src": "1577:9:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10533, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10522, + "src": "1588:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10527, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "1529:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 10528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1533:18:26", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "1529:22:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 10534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1529:66:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1509:86:26" + }, + { + "expression": { + "arguments": [ + { + "id": 10537, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10518, + "src": "1620:5:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + { + "id": 10538, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10526, + "src": "1627:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10536, + "name": "_callAndCatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10561, + "src": "1606:13:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$479_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 10539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1606:26:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10540, + "nodeType": "ExpressionStatement", + "src": "1606:26:26" + } + ] + }, + "documentation": { + "id": 10515, + "nodeType": "StructuredDocumentation", + "src": "1200:214:26", + "text": " @notice Transfers token and reverts if the transfer fails\n @param token The address of the token\n @param recipient The address of the recipient\n @param amount The amount to send" + }, + "id": 10542, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nameLocation": "1428:12:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10518, + "mutability": "mutable", + "name": "token", + "nameLocation": "1448:5:26", + "nodeType": "VariableDeclaration", + "scope": 10542, + "src": "1441:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10517, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10516, + "name": "IERC20", + "nameLocations": [ + "1441:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "1441:6:26" + }, + "referencedDeclaration": 479, + "src": "1441:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10520, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1463:9:26", + "nodeType": "VariableDeclaration", + "scope": 10542, + "src": "1455:17:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1455:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10522, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1482:6:26", + "nodeType": "VariableDeclaration", + "scope": 10542, + "src": "1474:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10521, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1474:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1440:49:26" + }, + "returnParameters": { + "id": 10524, + "nodeType": "ParameterList", + "parameters": [], + "src": "1499:0:26" + }, + "scope": 10562, + "src": "1419:220:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10560, + "nodeType": "Block", + "src": "1710:692:26", + "statements": [ + { + "assignments": [ + 10551 + ], + "declarations": [ + { + "constant": false, + "id": 10551, + "mutability": "mutable", + "name": "success", + "nameLocation": "1725:7:26", + "nodeType": "VariableDeclaration", + "scope": 10560, + "src": "1720:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10550, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1720:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 10552, + "nodeType": "VariableDeclarationStatement", + "src": "1720:12:26" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1752:583:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1773:4:26", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1779:1:26", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1766:6:26" + }, + "nodeType": "YulFunctionCall", + "src": "1766:15:26" + }, + "nodeType": "YulExpressionStatement", + "src": "1766:15:26" + }, + { + "nodeType": "YulAssignment", + "src": "1795:74:26", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nodeType": "YulIdentifier", + "src": "1811:3:26" + }, + "nodeType": "YulFunctionCall", + "src": "1811:5:26" + }, + { + "name": "token", + "nodeType": "YulIdentifier", + "src": "1818:5:26" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1825:1:26", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1832:4:26" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1838:4:26", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1828:3:26" + }, + "nodeType": "YulFunctionCall", + "src": "1828:15:26" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1851:4:26" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1845:5:26" + }, + "nodeType": "YulFunctionCall", + "src": "1845:11:26" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1858:4:26", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1864:4:26", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "call", + "nodeType": "YulIdentifier", + "src": "1806:4:26" + }, + "nodeType": "YulFunctionCall", + "src": "1806:63:26" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "1795:7:26" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1917:187:26", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1955:135:26", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1992:4:26", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1998:4:26", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "2004:14:26" + }, + "nodeType": "YulFunctionCall", + "src": "2004:16:26" + } + ], + "functionName": { + "name": "returndatacopy", + "nodeType": "YulIdentifier", + "src": "1977:14:26" + }, + "nodeType": "YulFunctionCall", + "src": "1977:44:26" + }, + "nodeType": "YulExpressionStatement", + "src": "1977:44:26" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2049:4:26", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "2055:14:26" + }, + "nodeType": "YulFunctionCall", + "src": "2055:16:26" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2042:6:26" + }, + "nodeType": "YulFunctionCall", + "src": "2042:30:26" + }, + "nodeType": "YulExpressionStatement", + "src": "2042:30:26" + } + ] + }, + "condition": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "1938:14:26" + }, + "nodeType": "YulFunctionCall", + "src": "1938:16:26" + }, + "nodeType": "YulIf", + "src": "1935:155:26" + } + ] + }, + "nodeType": "YulCase", + "src": "1910:194:26", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1915:1:26", + "type": "", + "value": "0" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2125:200:26", + "statements": [ + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2190:49:26", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2192:45:26", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "token", + "nodeType": "YulIdentifier", + "src": "2229:5:26" + } + ], + "functionName": { + "name": "extcodesize", + "nodeType": "YulIdentifier", + "src": "2217:11:26" + }, + "nodeType": "YulFunctionCall", + "src": "2217:18:26" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2210:6:26" + }, + "nodeType": "YulFunctionCall", + "src": "2210:26:26" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2203:6:26" + }, + "nodeType": "YulFunctionCall", + "src": "2203:34:26" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "2192:7:26" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "2183:56:26", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2188:1:26", + "type": "", + "value": "0" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2264:47:26", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2266:43:26", + "value": { + "arguments": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "2281:7:26" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2299:4:26", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2293:5:26" + }, + "nodeType": "YulFunctionCall", + "src": "2293:11:26" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2306:1:26", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2290:2:26" + }, + "nodeType": "YulFunctionCall", + "src": "2290:18:26" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2277:3:26" + }, + "nodeType": "YulFunctionCall", + "src": "2277:32:26" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "2266:7:26" + } + ] + } + ] + }, + "nodeType": "YulCase", + "src": "2256:55:26", + "value": "default" + } + ], + "expression": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "2150:14:26" + }, + "nodeType": "YulFunctionCall", + "src": "2150:16:26" + }, + "nodeType": "YulSwitch", + "src": "2143:168:26" + } + ] + }, + "nodeType": "YulCase", + "src": "2117:208:26", + "value": "default" + } + ], + "expression": { + "name": "success", + "nodeType": "YulIdentifier", + "src": "1890:7:26" + }, + "nodeType": "YulSwitch", + "src": "1883:442:26" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10547, + "isOffset": false, + "isSlot": false, + "src": "1832:4:26", + "valueSize": 1 + }, + { + "declaration": 10547, + "isOffset": false, + "isSlot": false, + "src": "1851:4:26", + "valueSize": 1 + }, + { + "declaration": 10551, + "isOffset": false, + "isSlot": false, + "src": "1795:7:26", + "valueSize": 1 + }, + { + "declaration": 10551, + "isOffset": false, + "isSlot": false, + "src": "1890:7:26", + "valueSize": 1 + }, + { + "declaration": 10551, + "isOffset": false, + "isSlot": false, + "src": "2192:7:26", + "valueSize": 1 + }, + { + "declaration": 10551, + "isOffset": false, + "isSlot": false, + "src": "2266:7:26", + "valueSize": 1 + }, + { + "declaration": 10551, + "isOffset": false, + "isSlot": false, + "src": "2281:7:26", + "valueSize": 1 + }, + { + "declaration": 10545, + "isOffset": false, + "isSlot": false, + "src": "1818:5:26", + "valueSize": 1 + }, + { + "declaration": 10545, + "isOffset": false, + "isSlot": false, + "src": "2229:5:26", + "valueSize": 1 + } + ], + "id": 10553, + "nodeType": "InlineAssembly", + "src": "1743:592:26" + }, + { + "condition": { + "id": 10555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2349:8:26", + "subExpression": { + "id": 10554, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10551, + "src": "2350:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10559, + "nodeType": "IfStatement", + "src": "2345:50:26", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10556, + "name": "TokenHelper__TransferFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10483, + "src": "2366:27:26", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2366:29:26", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10558, + "nodeType": "RevertStatement", + "src": "2359:36:26" + } + } + ] + }, + "id": 10561, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callAndCatch", + "nameLocation": "1654:13:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10545, + "mutability": "mutable", + "name": "token", + "nameLocation": "1675:5:26", + "nodeType": "VariableDeclaration", + "scope": 10561, + "src": "1668:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 10544, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10543, + "name": "IERC20", + "nameLocations": [ + "1668:6:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 479, + "src": "1668:6:26" + }, + "referencedDeclaration": 479, + "src": "1668:6:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$479", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10547, + "mutability": "mutable", + "name": "data", + "nameLocation": "1695:4:26", + "nodeType": "VariableDeclaration", + "scope": 10561, + "src": "1682:17:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10546, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1682:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1667:33:26" + }, + "returnParameters": { + "id": 10549, + "nodeType": "ParameterList", + "parameters": [], + "src": "1710:0:26" + }, + "scope": 10562, + "src": "1645:757:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10563, + "src": "613:1791:26", + "usedErrors": [ + 10483 + ], + "usedEvents": [] + } + ], + "src": "33:2372:26" + }, + "id": 26 + }, + "src/libraries/math/BitMath.sol": { + "ast": { + "absolutePath": "src/libraries/math/BitMath.sol", + "exportedSymbols": { + "BitMath": [ + 10656 + ] + }, + "id": 10657, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10564, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:27" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BitMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10565, + "nodeType": "StructuredDocumentation", + "src": "59:102:27", + "text": " @title Liquidity Book Bit Math Library\n @notice Helper contract used for bit calculations" + }, + "fullyImplemented": true, + "id": 10656, + "linearizedBaseContracts": [ + 10656 + ], + "name": "BitMath", + "nameLocation": "170:7:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 10602, + "nodeType": "Block", + "src": "600:260:27", + "statements": [ + { + "id": 10601, + "nodeType": "UncheckedBlock", + "src": "610:244:27", + "statements": [ + { + "assignments": [ + 10576 + ], + "declarations": [ + { + "constant": false, + "id": 10576, + "mutability": "mutable", + "name": "shift", + "nameLocation": "642:5:27", + "nodeType": "VariableDeclaration", + "scope": 10601, + "src": "634:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10575, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "634:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10580, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 10579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323535", + "id": 10577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "650:3:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10578, + "name": "bit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10570, + "src": "656:3:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "650:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "634:25:27" + }, + { + "expression": { + "id": 10583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10581, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10568, + "src": "673:1:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "id": 10582, + "name": "shift", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10576, + "src": "679:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "673:11:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10584, + "nodeType": "ExpressionStatement", + "src": "673:11:27" + }, + { + "expression": { + "condition": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10585, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10568, + "src": "784:1:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "789:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "784:6:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10588, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "783:8:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10595, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10568, + "src": "833:1:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10594, + "name": "mostSignificantBit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10645, + "src": "814:18:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 10596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "814:21:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10597, + "name": "shift", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10576, + "src": "838:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "814:29:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "783:60:27", + "trueExpression": { + "expression": { + "arguments": [ + { + "id": 10591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "799:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "799:7:27", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 10589, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "794:4:27", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "794:13:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 10593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "808:3:27", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "794:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10574, + "id": 10600, + "nodeType": "Return", + "src": "776:67:27" + } + ] + } + ] + }, + "documentation": { + "id": 10566, + "nodeType": "StructuredDocumentation", + "src": "184:329:27", + "text": " @dev Returns the index of the closest bit on the right of x that is non null\n @param x The value as a uint256\n @param bit The index of the bit to start searching at\n @return id The index of the closest non null bit on the right of x.\n If there is no closest bit, it returns max(uint256)" + }, + "id": 10603, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "closestBitRight", + "nameLocation": "527:15:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10568, + "mutability": "mutable", + "name": "x", + "nameLocation": "551:1:27", + "nodeType": "VariableDeclaration", + "scope": 10603, + "src": "543:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "543:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10570, + "mutability": "mutable", + "name": "bit", + "nameLocation": "560:3:27", + "nodeType": "VariableDeclaration", + "scope": 10603, + "src": "554:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10569, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "554:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "542:22:27" + }, + "returnParameters": { + "id": 10574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10573, + "mutability": "mutable", + "name": "id", + "nameLocation": "596:2:27", + "nodeType": "VariableDeclaration", + "scope": 10603, + "src": "588:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "588:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "587:12:27" + }, + "scope": 10656, + "src": "518:342:27", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10634, + "nodeType": "Block", + "src": "1279:141:27", + "statements": [ + { + "id": 10633, + "nodeType": "UncheckedBlock", + "src": "1289:125:27", + "statements": [ + { + "expression": { + "id": 10615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10613, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "1313:1:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 10614, + "name": "bit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10608, + "src": "1319:3:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1313:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10616, + "nodeType": "ExpressionStatement", + "src": "1313:9:27" + }, + { + "expression": { + "condition": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10617, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "1345:1:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1350:1:27", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1345:6:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10620, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1344:8:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 10630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10627, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "1395:1:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10626, + "name": "leastSignificantBit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10655, + "src": "1375:19:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 10628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1375:22:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 10629, + "name": "bit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10608, + "src": "1400:3:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1375:28:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 10631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1344:59:27", + "trueExpression": { + "expression": { + "arguments": [ + { + "id": 10623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1360:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1360:7:27", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 10621, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "1355:4:27", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1355:13:27", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 10625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1369:3:27", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1355:17:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10612, + "id": 10632, + "nodeType": "Return", + "src": "1337:66:27" + } + ] + } + ] + }, + "documentation": { + "id": 10604, + "nodeType": "StructuredDocumentation", + "src": "866:327:27", + "text": " @dev Returns the index of the closest bit on the left of x that is non null\n @param x The value as a uint256\n @param bit The index of the bit to start searching at\n @return id The index of the closest non null bit on the left of x.\n If there is no closest bit, it returns max(uint256)" + }, + "id": 10635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "closestBitLeft", + "nameLocation": "1207:14:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10606, + "mutability": "mutable", + "name": "x", + "nameLocation": "1230:1:27", + "nodeType": "VariableDeclaration", + "scope": 10635, + "src": "1222:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1222:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10608, + "mutability": "mutable", + "name": "bit", + "nameLocation": "1239:3:27", + "nodeType": "VariableDeclaration", + "scope": 10635, + "src": "1233:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10607, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1233:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "1221:22:27" + }, + "returnParameters": { + "id": 10612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10611, + "mutability": "mutable", + "name": "id", + "nameLocation": "1275:2:27", + "nodeType": "VariableDeclaration", + "scope": 10635, + "src": "1267:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1267:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1266:12:27" + }, + "scope": 10656, + "src": "1198:222:27", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10644, + "nodeType": "Block", + "src": "1720:898:27", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1739:873:27", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1798:75:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1816:16:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1825:3:27", + "type": "", + "value": "128" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1830:1:27" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1821:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "1821:11:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1816:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1849:10:27", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1856:3:27", + "type": "", + "value": "128" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "1849:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1759:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1762:34:27", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1756:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "1756:41:27" + }, + "nodeType": "YulIf", + "src": "1753:120:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1915:83:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1933:15:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1942:2:27", + "type": "", + "value": "64" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1946:1:27" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1938:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "1938:10:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1933:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1965:19:27", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "1976:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1981:2:27", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1972:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "1972:12:27" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "1965:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1892:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1895:18:27", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1889:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "1889:25:27" + }, + "nodeType": "YulIf", + "src": "1886:112:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2032:83:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2050:15:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2059:2:27", + "type": "", + "value": "32" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2063:1:27" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2055:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2055:10:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2050:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2082:19:27", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2093:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2098:2:27", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2089:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2089:12:27" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2082:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2017:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2020:10:27", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2014:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "2014:17:27" + }, + "nodeType": "YulIf", + "src": "2011:104:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2145:83:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2163:15:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2172:2:27", + "type": "", + "value": "16" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2176:1:27" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2168:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2168:10:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2163:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2195:19:27", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2206:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2211:2:27", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2202:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2202:12:27" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2195:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2134:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2137:6:27", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2131:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "2131:13:27" + }, + "nodeType": "YulIf", + "src": "2128:100:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2256:81:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2274:14:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2283:1:27", + "type": "", + "value": "8" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2286:1:27" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2279:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2279:9:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2274:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2305:18:27", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2316:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2321:1:27", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2312:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2312:11:27" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2305:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2247:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2250:4:27", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2244:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "2244:11:27" + }, + "nodeType": "YulIf", + "src": "2241:96:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2364:81:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2382:14:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2391:1:27", + "type": "", + "value": "4" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2394:1:27" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2387:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2387:9:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2382:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2413:18:27", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2424:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2429:1:27", + "type": "", + "value": "4" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2420:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2420:11:27" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2413:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2356:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2359:3:27", + "type": "", + "value": "0xf" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2353:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "2353:10:27" + }, + "nodeType": "YulIf", + "src": "2350:95:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2472:81:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2490:14:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2499:1:27", + "type": "", + "value": "2" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2502:1:27" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2495:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2495:9:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2490:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2521:18:27", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2532:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2537:1:27", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2528:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2528:11:27" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2521:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2464:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2467:3:27", + "type": "", + "value": "0x3" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2461:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "2461:10:27" + }, + "nodeType": "YulIf", + "src": "2458:95:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2580:22:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2582:18:27", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2593:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2598:1:27", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2589:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2589:11:27" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2582:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2572:1:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2575:3:27", + "type": "", + "value": "0x1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2569:2:27" + }, + "nodeType": "YulFunctionCall", + "src": "2569:10:27" + }, + "nodeType": "YulIf", + "src": "2566:36:27" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "1849:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "1965:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "1976:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2082:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2093:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2195:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2206:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2305:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2316:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2413:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2424:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2521:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2532:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2582:3:27", + "valueSize": 1 + }, + { + "declaration": 10641, + "isOffset": false, + "isSlot": false, + "src": "2593:3:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "1759:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "1816:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "1830:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "1892:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "1933:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "1946:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2017:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2050:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2063:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2134:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2163:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2176:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2247:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2274:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2286:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2356:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2382:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2394:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2464:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2490:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2502:1:27", + "valueSize": 1 + }, + { + "declaration": 10638, + "isOffset": false, + "isSlot": false, + "src": "2572:1:27", + "valueSize": 1 + } + ], + "id": 10643, + "nodeType": "InlineAssembly", + "src": "1730:882:27" + } + ] + }, + "documentation": { + "id": 10636, + "nodeType": "StructuredDocumentation", + "src": "1426:216:27", + "text": " @dev Returns the index of the most significant bit of x\n This function returns 0 if x is 0\n @param x The value as a uint256\n @return msb The index of the most significant bit of x" + }, + "id": 10645, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mostSignificantBit", + "nameLocation": "1656:18:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10638, + "mutability": "mutable", + "name": "x", + "nameLocation": "1683:1:27", + "nodeType": "VariableDeclaration", + "scope": 10645, + "src": "1675:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1675:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1674:11:27" + }, + "returnParameters": { + "id": 10642, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10641, + "mutability": "mutable", + "name": "msb", + "nameLocation": "1715:3:27", + "nodeType": "VariableDeclaration", + "scope": 10645, + "src": "1709:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10640, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1709:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "1708:11:27" + }, + "scope": 10656, + "src": "1647:971:27", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10654, + "nodeType": "Block", + "src": "2923:1097:27", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2942:1072:27", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2956:21:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2970:3:27", + "type": "", + "value": "128" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2975:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2966:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "2966:11:27" + }, + "variables": [ + { + "name": "sx", + "nodeType": "YulTypedName", + "src": "2960:2:27", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3012:66:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3030:10:27", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3037:3:27", + "type": "", + "value": "128" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3030:3:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3057:7:27", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3062:2:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3057:1:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3007:2:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3000:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3000:10:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2993:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "2993:18:27" + }, + "nodeType": "YulIf", + "src": "2990:88:27" + }, + { + "nodeType": "YulAssignment", + "src": "3091:16:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3101:2:27", + "type": "", + "value": "64" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3105:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3097:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3097:10:27" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3091:2:27" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3142:75:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3160:7:27", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3165:2:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3160:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3184:19:27", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3195:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3200:2:27", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3191:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3191:12:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3184:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3137:2:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3130:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3130:10:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3123:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3123:18:27" + }, + "nodeType": "YulIf", + "src": "3120:97:27" + }, + { + "nodeType": "YulAssignment", + "src": "3230:16:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3240:2:27", + "type": "", + "value": "32" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3244:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3236:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3236:10:27" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3230:2:27" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3281:75:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3299:7:27", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3304:2:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3299:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3323:19:27", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3334:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3339:2:27", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3330:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3330:12:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3323:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3276:2:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3269:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3269:10:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3262:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3262:18:27" + }, + "nodeType": "YulIf", + "src": "3259:97:27" + }, + { + "nodeType": "YulAssignment", + "src": "3369:16:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3379:2:27", + "type": "", + "value": "16" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3383:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3375:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3375:10:27" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3369:2:27" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3420:75:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3438:7:27", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3443:2:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3438:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3462:19:27", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3473:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3478:2:27", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3469:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3469:12:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3462:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3415:2:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3408:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3408:10:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3401:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3401:18:27" + }, + "nodeType": "YulIf", + "src": "3398:97:27" + }, + { + "nodeType": "YulAssignment", + "src": "3508:15:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3518:1:27", + "type": "", + "value": "8" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3521:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3514:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3514:9:27" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3508:2:27" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3558:74:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3576:7:27", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3581:2:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3576:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3600:18:27", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3611:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3616:1:27", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3607:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3607:11:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3600:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3553:2:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3546:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3546:10:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3539:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3539:18:27" + }, + "nodeType": "YulIf", + "src": "3536:96:27" + }, + { + "nodeType": "YulAssignment", + "src": "3645:15:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3655:1:27", + "type": "", + "value": "4" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3658:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3651:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3651:9:27" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3645:2:27" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3695:74:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3713:7:27", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3718:2:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3713:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3737:18:27", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3748:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3753:1:27", + "type": "", + "value": "4" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3744:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3744:11:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3737:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3690:2:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3683:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3683:10:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3676:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3676:18:27" + }, + "nodeType": "YulIf", + "src": "3673:96:27" + }, + { + "nodeType": "YulAssignment", + "src": "3782:15:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3792:1:27", + "type": "", + "value": "2" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3795:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3788:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3788:9:27" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3782:2:27" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3832:74:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3850:7:27", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3855:2:27" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3850:1:27" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3874:18:27", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3885:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3890:1:27", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3881:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3881:11:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3874:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3827:2:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3820:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3820:10:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3813:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3813:18:27" + }, + "nodeType": "YulIf", + "src": "3810:96:27" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3948:22:27", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3950:18:27", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3961:3:27" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3966:1:27", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3957:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3957:11:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3950:3:27" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3940:1:27", + "type": "", + "value": "1" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3943:1:27" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3936:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3936:9:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3929:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3929:17:27" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3922:6:27" + }, + "nodeType": "YulFunctionCall", + "src": "3922:25:27" + }, + "nodeType": "YulIf", + "src": "3919:51:27" + }, + { + "nodeType": "YulAssignment", + "src": "3984:20:27", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3995:3:27", + "type": "", + "value": "255" + }, + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "4000:3:27" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3991:3:27" + }, + "nodeType": "YulFunctionCall", + "src": "3991:13:27" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3984:3:27" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3030:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3184:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3195:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3323:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3334:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3462:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3473:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3600:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3611:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3737:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3748:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3874:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3885:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3950:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3961:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "3984:3:27", + "valueSize": 1 + }, + { + "declaration": 10651, + "isOffset": false, + "isSlot": false, + "src": "4000:3:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "2975:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3057:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3105:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3160:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3244:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3299:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3383:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3438:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3521:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3576:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3658:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3713:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3795:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3850:1:27", + "valueSize": 1 + }, + { + "declaration": 10648, + "isOffset": false, + "isSlot": false, + "src": "3943:1:27", + "valueSize": 1 + } + ], + "id": 10653, + "nodeType": "InlineAssembly", + "src": "2933:1081:27" + } + ] + }, + "documentation": { + "id": 10646, + "nodeType": "StructuredDocumentation", + "src": "2624:220:27", + "text": " @dev Returns the index of the least significant bit of x\n This function returns 255 if x is 0\n @param x The value as a uint256\n @return lsb The index of the least significant bit of x" + }, + "id": 10655, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "leastSignificantBit", + "nameLocation": "2858:19:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10648, + "mutability": "mutable", + "name": "x", + "nameLocation": "2886:1:27", + "nodeType": "VariableDeclaration", + "scope": 10655, + "src": "2878:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10647, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2878:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2877:11:27" + }, + "returnParameters": { + "id": 10652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10651, + "mutability": "mutable", + "name": "lsb", + "nameLocation": "2918:3:27", + "nodeType": "VariableDeclaration", + "scope": 10655, + "src": "2912:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10650, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2912:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "2911:11:27" + }, + "scope": 10656, + "src": "2849:1171:27", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10657, + "src": "162:3860:27", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:3990:27" + }, + "id": 27 + }, + "src/libraries/math/Encoded.sol": { + "ast": { + "absolutePath": "src/libraries/math/Encoded.sol", + "exportedSymbols": { + "Encoded": [ + 10863 + ] + }, + "id": 10864, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10658, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:28" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Encoded", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10659, + "nodeType": "StructuredDocumentation", + "src": "59:108:28", + "text": " @title Liquidity Book Encoded Library\n @notice Helper contract used for decoding bytes32 sample" + }, + "fullyImplemented": true, + "id": 10863, + "linearizedBaseContracts": [ + 10863 + ], + "name": "Encoded", + "nameLocation": "176:7:28", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 10662, + "mutability": "constant", + "name": "MASK_UINT1", + "nameLocation": "216:10:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "190:42:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "190:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307831", + "id": 10661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "229:3:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x1" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10665, + "mutability": "constant", + "name": "MASK_UINT8", + "nameLocation": "264:10:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "238:43:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10663, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "238:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30786666", + "id": 10664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "277:4:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10668, + "mutability": "constant", + "name": "MASK_UINT12", + "nameLocation": "313:11:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "287:45:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10666, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "287:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3078666666", + "id": 10667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "327:5:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_4095_by_1", + "typeString": "int_const 4095" + }, + "value": "0xfff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10671, + "mutability": "constant", + "name": "MASK_UINT14", + "nameLocation": "364:11:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "338:46:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "338:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307833666666", + "id": 10670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "378:6:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_16383_by_1", + "typeString": "int_const 16383" + }, + "value": "0x3fff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10674, + "mutability": "constant", + "name": "MASK_UINT16", + "nameLocation": "416:11:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "390:46:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10672, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "390:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666", + "id": 10673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "430:6:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + }, + "value": "0xffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10677, + "mutability": "constant", + "name": "MASK_UINT20", + "nameLocation": "468:11:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "442:47:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "442:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30786666666666", + "id": 10676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "482:7:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_1048575_by_1", + "typeString": "int_const 1048575" + }, + "value": "0xfffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10680, + "mutability": "constant", + "name": "MASK_UINT24", + "nameLocation": "521:11:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "495:48:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10678, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "495:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3078666666666666", + "id": 10679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "535:8:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_16777215_by_1", + "typeString": "int_const 16777215" + }, + "value": "0xffffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10683, + "mutability": "constant", + "name": "MASK_UINT40", + "nameLocation": "575:11:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "549:52:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "549:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666666666666666", + "id": 10682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "589:12:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_1099511627775_by_1", + "typeString": "int_const 1099511627775" + }, + "value": "0xffffffffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10686, + "mutability": "constant", + "name": "MASK_UINT64", + "nameLocation": "633:11:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "607:58:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10684, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "607:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666666666666666666666666666", + "id": 10685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "647:18:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + }, + "value": "0xffffffffffffffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10689, + "mutability": "constant", + "name": "MASK_UINT128", + "nameLocation": "697:12:28", + "nodeType": "VariableDeclaration", + "scope": 10863, + "src": "671:75:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666", + "id": 10688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "712:34:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "value": "0xffffffffffffffffffffffffffffffff" + }, + "visibility": "internal" + }, + { + "body": { + "id": 10704, + "nodeType": "Block", + "src": "1245:171:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1264:146:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1278:50:28", + "value": { + "arguments": [ + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "1296:7:28" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1313:6:28" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "1321:4:28" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1309:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "1309:17:28" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1305:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "1305:22:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1292:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "1292:36:28" + }, + "variableNames": [ + { + "name": "newEncoded", + "nodeType": "YulIdentifier", + "src": "1278:10:28" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1341:59:28", + "value": { + "arguments": [ + { + "name": "newEncoded", + "nodeType": "YulIdentifier", + "src": "1358:10:28" + }, + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1374:6:28" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1386:5:28" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "1393:4:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1382:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "1382:16:28" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1370:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "1370:29:28" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1355:2:28" + }, + "nodeType": "YulFunctionCall", + "src": "1355:45:28" + }, + "variableNames": [ + { + "name": "newEncoded", + "nodeType": "YulIdentifier", + "src": "1341:10:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10692, + "isOffset": false, + "isSlot": false, + "src": "1296:7:28", + "valueSize": 1 + }, + { + "declaration": 10696, + "isOffset": false, + "isSlot": false, + "src": "1321:4:28", + "valueSize": 1 + }, + { + "declaration": 10696, + "isOffset": false, + "isSlot": false, + "src": "1393:4:28", + "valueSize": 1 + }, + { + "declaration": 10701, + "isOffset": false, + "isSlot": false, + "src": "1278:10:28", + "valueSize": 1 + }, + { + "declaration": 10701, + "isOffset": false, + "isSlot": false, + "src": "1341:10:28", + "valueSize": 1 + }, + { + "declaration": 10701, + "isOffset": false, + "isSlot": false, + "src": "1358:10:28", + "valueSize": 1 + }, + { + "declaration": 10698, + "isOffset": false, + "isSlot": false, + "src": "1313:6:28", + "valueSize": 1 + }, + { + "declaration": 10698, + "isOffset": false, + "isSlot": false, + "src": "1374:6:28", + "valueSize": 1 + }, + { + "declaration": 10694, + "isOffset": false, + "isSlot": false, + "src": "1386:5:28", + "valueSize": 1 + } + ], + "id": 10703, + "nodeType": "InlineAssembly", + "src": "1255:155:28" + } + ] + }, + "documentation": { + "id": 10690, + "nodeType": "StructuredDocumentation", + "src": "753:341:28", + "text": " @notice Internal function to set a value in an encoded bytes32 using a mask and offset\n @dev This function can overflow\n @param encoded The previous encoded value\n @param value The value to encode\n @param mask The mask\n @param offset The offset\n @return newEncoded The new encoded value" + }, + "id": 10705, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "1108:3:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10692, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "1120:7:28", + "nodeType": "VariableDeclaration", + "scope": 10705, + "src": "1112:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10691, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1112:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10694, + "mutability": "mutable", + "name": "value", + "nameLocation": "1137:5:28", + "nodeType": "VariableDeclaration", + "scope": 10705, + "src": "1129:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10693, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1129:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10696, + "mutability": "mutable", + "name": "mask", + "nameLocation": "1152:4:28", + "nodeType": "VariableDeclaration", + "scope": 10705, + "src": "1144:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1144:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10698, + "mutability": "mutable", + "name": "offset", + "nameLocation": "1166:6:28", + "nodeType": "VariableDeclaration", + "scope": 10705, + "src": "1158:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1158:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1111:62:28" + }, + "returnParameters": { + "id": 10702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10701, + "mutability": "mutable", + "name": "newEncoded", + "nameLocation": "1229:10:28", + "nodeType": "VariableDeclaration", + "scope": 10705, + "src": "1221:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10700, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1221:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1220:20:28" + }, + "scope": 10863, + "src": "1099:317:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10727, + "nodeType": "Block", + "src": "1839:73:28", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10718, + "name": "encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10708, + "src": "1860:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "condition": { + "id": 10719, + "name": "boolean", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10710, + "src": "1869:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 10721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1883:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 10722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1869:15:28", + "trueExpression": { + "hexValue": "31", + "id": 10720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1879:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 10723, + "name": "MASK_UINT1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10662, + "src": "1886:10:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10724, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10712, + "src": "1898:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10717, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10705, + "src": "1856:3:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 10725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1856:49:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 10716, + "id": 10726, + "nodeType": "Return", + "src": "1849:56:28" + } + ] + }, + "documentation": { + "id": 10706, + "nodeType": "StructuredDocumentation", + "src": "1422:305:28", + "text": " @notice Internal function to set a bool in an encoded bytes32 using an offset\n @dev This function can overflow\n @param encoded The previous encoded value\n @param boolean The bool to encode\n @param offset The offset\n @return newEncoded The new encoded value" + }, + "id": 10728, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setBool", + "nameLocation": "1741:7:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10708, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "1757:7:28", + "nodeType": "VariableDeclaration", + "scope": 10728, + "src": "1749:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10707, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1749:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10710, + "mutability": "mutable", + "name": "boolean", + "nameLocation": "1771:7:28", + "nodeType": "VariableDeclaration", + "scope": 10728, + "src": "1766:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10709, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1766:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10712, + "mutability": "mutable", + "name": "offset", + "nameLocation": "1788:6:28", + "nodeType": "VariableDeclaration", + "scope": 10728, + "src": "1780:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1780:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1748:47:28" + }, + "returnParameters": { + "id": 10716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10715, + "mutability": "mutable", + "name": "newEncoded", + "nameLocation": "1827:10:28", + "nodeType": "VariableDeclaration", + "scope": 10728, + "src": "1819:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10714, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1819:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1818:20:28" + }, + "scope": 10863, + "src": "1732:180:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10741, + "nodeType": "Block", + "src": "2297:89:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2316:64:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2330:40:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2347:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "2355:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2343:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "2343:20:28" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "2365:4:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2339:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "2339:31:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2330:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10731, + "isOffset": false, + "isSlot": false, + "src": "2355:7:28", + "valueSize": 1 + }, + { + "declaration": 10733, + "isOffset": false, + "isSlot": false, + "src": "2365:4:28", + "valueSize": 1 + }, + { + "declaration": 10735, + "isOffset": false, + "isSlot": false, + "src": "2347:6:28", + "valueSize": 1 + }, + { + "declaration": 10738, + "isOffset": false, + "isSlot": false, + "src": "2330:5:28", + "valueSize": 1 + } + ], + "id": 10740, + "nodeType": "InlineAssembly", + "src": "2307:73:28" + } + ] + }, + "documentation": { + "id": 10729, + "nodeType": "StructuredDocumentation", + "src": "1918:273:28", + "text": " @notice Internal function to decode a bytes32 sample using a mask and offset\n @dev This function can overflow\n @param encoded The encoded value\n @param mask The mask\n @param offset The offset\n @return value The decoded value" + }, + "id": 10742, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode", + "nameLocation": "2205:6:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10736, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10731, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "2220:7:28", + "nodeType": "VariableDeclaration", + "scope": 10742, + "src": "2212:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10730, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2212:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10733, + "mutability": "mutable", + "name": "mask", + "nameLocation": "2237:4:28", + "nodeType": "VariableDeclaration", + "scope": 10742, + "src": "2229:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10732, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2229:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10735, + "mutability": "mutable", + "name": "offset", + "nameLocation": "2251:6:28", + "nodeType": "VariableDeclaration", + "scope": 10742, + "src": "2243:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10734, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2243:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2211:47:28" + }, + "returnParameters": { + "id": 10739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10738, + "mutability": "mutable", + "name": "value", + "nameLocation": "2290:5:28", + "nodeType": "VariableDeclaration", + "scope": 10742, + "src": "2282:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2282:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2281:15:28" + }, + "scope": 10863, + "src": "2196:190:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10753, + "nodeType": "Block", + "src": "2748:97:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2767:72:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2781:48:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2800:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "2808:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2796:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "2796:20:28" + }, + { + "name": "MASK_UINT1", + "nodeType": "YulIdentifier", + "src": "2818:10:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2792:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "2792:37:28" + }, + "variableNames": [ + { + "name": "boolean", + "nodeType": "YulIdentifier", + "src": "2781:7:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10662, + "isOffset": false, + "isSlot": false, + "src": "2818:10:28", + "valueSize": 1 + }, + { + "declaration": 10750, + "isOffset": false, + "isSlot": false, + "src": "2781:7:28", + "valueSize": 1 + }, + { + "declaration": 10745, + "isOffset": false, + "isSlot": false, + "src": "2808:7:28", + "valueSize": 1 + }, + { + "declaration": 10747, + "isOffset": false, + "isSlot": false, + "src": "2800:6:28", + "valueSize": 1 + } + ], + "id": 10752, + "nodeType": "InlineAssembly", + "src": "2758:81:28" + } + ] + }, + "documentation": { + "id": 10743, + "nodeType": "StructuredDocumentation", + "src": "2392:261:28", + "text": " @notice Internal function to decode a bytes32 sample into a bool using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return boolean The decoded value as a bool" + }, + "id": 10754, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeBool", + "nameLocation": "2667:10:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10745, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "2686:7:28", + "nodeType": "VariableDeclaration", + "scope": 10754, + "src": "2678:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10744, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2678:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10747, + "mutability": "mutable", + "name": "offset", + "nameLocation": "2703:6:28", + "nodeType": "VariableDeclaration", + "scope": 10754, + "src": "2695:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2695:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2677:33:28" + }, + "returnParameters": { + "id": 10751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10750, + "mutability": "mutable", + "name": "boolean", + "nameLocation": "2739:7:28", + "nodeType": "VariableDeclaration", + "scope": 10754, + "src": "2734:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10749, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2734:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2733:14:28" + }, + "scope": 10863, + "src": "2658:187:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10765, + "nodeType": "Block", + "src": "3196:95:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3215:70:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3229:46:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3246:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "3254:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "3242:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "3242:20:28" + }, + { + "name": "MASK_UINT8", + "nodeType": "YulIdentifier", + "src": "3264:10:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3238:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "3238:37:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3229:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10665, + "isOffset": false, + "isSlot": false, + "src": "3264:10:28", + "valueSize": 1 + }, + { + "declaration": 10757, + "isOffset": false, + "isSlot": false, + "src": "3254:7:28", + "valueSize": 1 + }, + { + "declaration": 10759, + "isOffset": false, + "isSlot": false, + "src": "3246:6:28", + "valueSize": 1 + }, + { + "declaration": 10762, + "isOffset": false, + "isSlot": false, + "src": "3229:5:28", + "valueSize": 1 + } + ], + "id": 10764, + "nodeType": "InlineAssembly", + "src": "3206:79:28" + } + ] + }, + "documentation": { + "id": 10755, + "nodeType": "StructuredDocumentation", + "src": "2851:250:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint8 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10766, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint8", + "nameLocation": "3115:11:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10760, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10757, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "3135:7:28", + "nodeType": "VariableDeclaration", + "scope": 10766, + "src": "3127:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10756, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3127:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10759, + "mutability": "mutable", + "name": "offset", + "nameLocation": "3152:6:28", + "nodeType": "VariableDeclaration", + "scope": 10766, + "src": "3144:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3144:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3126:33:28" + }, + "returnParameters": { + "id": 10763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10762, + "mutability": "mutable", + "name": "value", + "nameLocation": "3189:5:28", + "nodeType": "VariableDeclaration", + "scope": 10766, + "src": "3183:11:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10761, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3183:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3182:13:28" + }, + "scope": 10863, + "src": "3106:185:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10777, + "nodeType": "Block", + "src": "3688:96:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3707:71:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3721:47:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3738:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "3746:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "3734:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "3734:20:28" + }, + { + "name": "MASK_UINT12", + "nodeType": "YulIdentifier", + "src": "3756:11:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3730:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "3730:38:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3721:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10668, + "isOffset": false, + "isSlot": false, + "src": "3756:11:28", + "valueSize": 1 + }, + { + "declaration": 10769, + "isOffset": false, + "isSlot": false, + "src": "3746:7:28", + "valueSize": 1 + }, + { + "declaration": 10771, + "isOffset": false, + "isSlot": false, + "src": "3738:6:28", + "valueSize": 1 + }, + { + "declaration": 10774, + "isOffset": false, + "isSlot": false, + "src": "3721:5:28", + "valueSize": 1 + } + ], + "id": 10776, + "nodeType": "InlineAssembly", + "src": "3698:80:28" + } + ] + }, + "documentation": { + "id": 10767, + "nodeType": "StructuredDocumentation", + "src": "3297:294:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint12 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value as a uint16, since uint12 is not supported" + }, + "id": 10778, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint12", + "nameLocation": "3605:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10769, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "3626:7:28", + "nodeType": "VariableDeclaration", + "scope": 10778, + "src": "3618:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10768, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3618:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10771, + "mutability": "mutable", + "name": "offset", + "nameLocation": "3643:6:28", + "nodeType": "VariableDeclaration", + "scope": 10778, + "src": "3635:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3635:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3617:33:28" + }, + "returnParameters": { + "id": 10775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10774, + "mutability": "mutable", + "name": "value", + "nameLocation": "3681:5:28", + "nodeType": "VariableDeclaration", + "scope": 10778, + "src": "3674:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10773, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3674:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3673:14:28" + }, + "scope": 10863, + "src": "3596:188:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10789, + "nodeType": "Block", + "src": "4181:96:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "4200:71:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4214:47:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4231:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "4239:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4227:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "4227:20:28" + }, + { + "name": "MASK_UINT14", + "nodeType": "YulIdentifier", + "src": "4249:11:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4223:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "4223:38:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4214:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10671, + "isOffset": false, + "isSlot": false, + "src": "4249:11:28", + "valueSize": 1 + }, + { + "declaration": 10781, + "isOffset": false, + "isSlot": false, + "src": "4239:7:28", + "valueSize": 1 + }, + { + "declaration": 10783, + "isOffset": false, + "isSlot": false, + "src": "4231:6:28", + "valueSize": 1 + }, + { + "declaration": 10786, + "isOffset": false, + "isSlot": false, + "src": "4214:5:28", + "valueSize": 1 + } + ], + "id": 10788, + "nodeType": "InlineAssembly", + "src": "4191:80:28" + } + ] + }, + "documentation": { + "id": 10779, + "nodeType": "StructuredDocumentation", + "src": "3790:294:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint14 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value as a uint16, since uint14 is not supported" + }, + "id": 10790, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint14", + "nameLocation": "4098:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10781, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "4119:7:28", + "nodeType": "VariableDeclaration", + "scope": 10790, + "src": "4111:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10780, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4111:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10783, + "mutability": "mutable", + "name": "offset", + "nameLocation": "4136:6:28", + "nodeType": "VariableDeclaration", + "scope": 10790, + "src": "4128:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10782, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4128:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4110:33:28" + }, + "returnParameters": { + "id": 10787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10786, + "mutability": "mutable", + "name": "value", + "nameLocation": "4174:5:28", + "nodeType": "VariableDeclaration", + "scope": 10790, + "src": "4167:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10785, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4167:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4166:14:28" + }, + "scope": 10863, + "src": "4089:188:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10801, + "nodeType": "Block", + "src": "4631:96:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "4650:71:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4664:47:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4681:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "4689:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4677:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "4677:20:28" + }, + { + "name": "MASK_UINT16", + "nodeType": "YulIdentifier", + "src": "4699:11:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4673:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "4673:38:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4664:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10674, + "isOffset": false, + "isSlot": false, + "src": "4699:11:28", + "valueSize": 1 + }, + { + "declaration": 10793, + "isOffset": false, + "isSlot": false, + "src": "4689:7:28", + "valueSize": 1 + }, + { + "declaration": 10795, + "isOffset": false, + "isSlot": false, + "src": "4681:6:28", + "valueSize": 1 + }, + { + "declaration": 10798, + "isOffset": false, + "isSlot": false, + "src": "4664:5:28", + "valueSize": 1 + } + ], + "id": 10800, + "nodeType": "InlineAssembly", + "src": "4641:80:28" + } + ] + }, + "documentation": { + "id": 10791, + "nodeType": "StructuredDocumentation", + "src": "4283:251:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint16 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10802, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint16", + "nameLocation": "4548:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10793, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "4569:7:28", + "nodeType": "VariableDeclaration", + "scope": 10802, + "src": "4561:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10792, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4561:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10795, + "mutability": "mutable", + "name": "offset", + "nameLocation": "4586:6:28", + "nodeType": "VariableDeclaration", + "scope": 10802, + "src": "4578:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4578:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4560:33:28" + }, + "returnParameters": { + "id": 10799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10798, + "mutability": "mutable", + "name": "value", + "nameLocation": "4624:5:28", + "nodeType": "VariableDeclaration", + "scope": 10802, + "src": "4617:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10797, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4617:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4616:14:28" + }, + "scope": 10863, + "src": "4539:188:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10813, + "nodeType": "Block", + "src": "5124:96:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5143:71:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5157:47:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5174:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "5182:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5170:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "5170:20:28" + }, + { + "name": "MASK_UINT20", + "nodeType": "YulIdentifier", + "src": "5192:11:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5166:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "5166:38:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5157:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10677, + "isOffset": false, + "isSlot": false, + "src": "5192:11:28", + "valueSize": 1 + }, + { + "declaration": 10805, + "isOffset": false, + "isSlot": false, + "src": "5182:7:28", + "valueSize": 1 + }, + { + "declaration": 10807, + "isOffset": false, + "isSlot": false, + "src": "5174:6:28", + "valueSize": 1 + }, + { + "declaration": 10810, + "isOffset": false, + "isSlot": false, + "src": "5157:5:28", + "valueSize": 1 + } + ], + "id": 10812, + "nodeType": "InlineAssembly", + "src": "5134:80:28" + } + ] + }, + "documentation": { + "id": 10803, + "nodeType": "StructuredDocumentation", + "src": "4733:294:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint20 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value as a uint24, since uint20 is not supported" + }, + "id": 10814, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint20", + "nameLocation": "5041:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10805, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "5062:7:28", + "nodeType": "VariableDeclaration", + "scope": 10814, + "src": "5054:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10804, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5054:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10807, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5079:6:28", + "nodeType": "VariableDeclaration", + "scope": 10814, + "src": "5071:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5071:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5053:33:28" + }, + "returnParameters": { + "id": 10811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10810, + "mutability": "mutable", + "name": "value", + "nameLocation": "5117:5:28", + "nodeType": "VariableDeclaration", + "scope": 10814, + "src": "5110:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10809, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5110:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5109:14:28" + }, + "scope": 10863, + "src": "5032:188:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10825, + "nodeType": "Block", + "src": "5574:96:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5593:71:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5607:47:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5624:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "5632:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5620:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "5620:20:28" + }, + { + "name": "MASK_UINT24", + "nodeType": "YulIdentifier", + "src": "5642:11:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5616:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "5616:38:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5607:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10680, + "isOffset": false, + "isSlot": false, + "src": "5642:11:28", + "valueSize": 1 + }, + { + "declaration": 10817, + "isOffset": false, + "isSlot": false, + "src": "5632:7:28", + "valueSize": 1 + }, + { + "declaration": 10819, + "isOffset": false, + "isSlot": false, + "src": "5624:6:28", + "valueSize": 1 + }, + { + "declaration": 10822, + "isOffset": false, + "isSlot": false, + "src": "5607:5:28", + "valueSize": 1 + } + ], + "id": 10824, + "nodeType": "InlineAssembly", + "src": "5584:80:28" + } + ] + }, + "documentation": { + "id": 10815, + "nodeType": "StructuredDocumentation", + "src": "5226:251:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint24 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10826, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint24", + "nameLocation": "5491:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10817, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "5512:7:28", + "nodeType": "VariableDeclaration", + "scope": 10826, + "src": "5504:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10816, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5504:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10819, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5529:6:28", + "nodeType": "VariableDeclaration", + "scope": 10826, + "src": "5521:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5521:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5503:33:28" + }, + "returnParameters": { + "id": 10823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10822, + "mutability": "mutable", + "name": "value", + "nameLocation": "5567:5:28", + "nodeType": "VariableDeclaration", + "scope": 10826, + "src": "5560:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10821, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5560:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5559:14:28" + }, + "scope": 10863, + "src": "5482:188:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10837, + "nodeType": "Block", + "src": "6024:96:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6043:71:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6057:47:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6074:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "6082:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6070:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "6070:20:28" + }, + { + "name": "MASK_UINT40", + "nodeType": "YulIdentifier", + "src": "6092:11:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6066:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "6066:38:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6057:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10683, + "isOffset": false, + "isSlot": false, + "src": "6092:11:28", + "valueSize": 1 + }, + { + "declaration": 10829, + "isOffset": false, + "isSlot": false, + "src": "6082:7:28", + "valueSize": 1 + }, + { + "declaration": 10831, + "isOffset": false, + "isSlot": false, + "src": "6074:6:28", + "valueSize": 1 + }, + { + "declaration": 10834, + "isOffset": false, + "isSlot": false, + "src": "6057:5:28", + "valueSize": 1 + } + ], + "id": 10836, + "nodeType": "InlineAssembly", + "src": "6034:80:28" + } + ] + }, + "documentation": { + "id": 10827, + "nodeType": "StructuredDocumentation", + "src": "5676:251:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint40 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10838, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint40", + "nameLocation": "5941:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10829, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "5962:7:28", + "nodeType": "VariableDeclaration", + "scope": 10838, + "src": "5954:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10828, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5954:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10831, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5979:6:28", + "nodeType": "VariableDeclaration", + "scope": 10838, + "src": "5971:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5971:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5953:33:28" + }, + "returnParameters": { + "id": 10835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10834, + "mutability": "mutable", + "name": "value", + "nameLocation": "6017:5:28", + "nodeType": "VariableDeclaration", + "scope": 10838, + "src": "6010:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 10833, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "6010:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "6009:14:28" + }, + "scope": 10863, + "src": "5932:188:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10849, + "nodeType": "Block", + "src": "6474:96:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6493:71:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6507:47:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6524:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "6532:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6520:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "6520:20:28" + }, + { + "name": "MASK_UINT64", + "nodeType": "YulIdentifier", + "src": "6542:11:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6516:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "6516:38:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6507:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10686, + "isOffset": false, + "isSlot": false, + "src": "6542:11:28", + "valueSize": 1 + }, + { + "declaration": 10841, + "isOffset": false, + "isSlot": false, + "src": "6532:7:28", + "valueSize": 1 + }, + { + "declaration": 10843, + "isOffset": false, + "isSlot": false, + "src": "6524:6:28", + "valueSize": 1 + }, + { + "declaration": 10846, + "isOffset": false, + "isSlot": false, + "src": "6507:5:28", + "valueSize": 1 + } + ], + "id": 10848, + "nodeType": "InlineAssembly", + "src": "6484:80:28" + } + ] + }, + "documentation": { + "id": 10839, + "nodeType": "StructuredDocumentation", + "src": "6126:251:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint64 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10850, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint64", + "nameLocation": "6391:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10841, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "6412:7:28", + "nodeType": "VariableDeclaration", + "scope": 10850, + "src": "6404:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10840, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6404:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10843, + "mutability": "mutable", + "name": "offset", + "nameLocation": "6429:6:28", + "nodeType": "VariableDeclaration", + "scope": 10850, + "src": "6421:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6421:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6403:33:28" + }, + "returnParameters": { + "id": 10847, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10846, + "mutability": "mutable", + "name": "value", + "nameLocation": "6467:5:28", + "nodeType": "VariableDeclaration", + "scope": 10850, + "src": "6460:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 10845, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6460:6:28", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "6459:14:28" + }, + "scope": 10863, + "src": "6382:188:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10861, + "nodeType": "Block", + "src": "6927:97:28", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6946:72:28", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6960:48:28", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6977:6:28" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "6985:7:28" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6973:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "6973:20:28" + }, + { + "name": "MASK_UINT128", + "nodeType": "YulIdentifier", + "src": "6995:12:28" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6969:3:28" + }, + "nodeType": "YulFunctionCall", + "src": "6969:39:28" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6960:5:28" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10689, + "isOffset": false, + "isSlot": false, + "src": "6995:12:28", + "valueSize": 1 + }, + { + "declaration": 10853, + "isOffset": false, + "isSlot": false, + "src": "6985:7:28", + "valueSize": 1 + }, + { + "declaration": 10855, + "isOffset": false, + "isSlot": false, + "src": "6977:6:28", + "valueSize": 1 + }, + { + "declaration": 10858, + "isOffset": false, + "isSlot": false, + "src": "6960:5:28", + "valueSize": 1 + } + ], + "id": 10860, + "nodeType": "InlineAssembly", + "src": "6937:81:28" + } + ] + }, + "documentation": { + "id": 10851, + "nodeType": "StructuredDocumentation", + "src": "6576:252:28", + "text": " @notice Internal function to decode a bytes32 sample into a uint128 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10862, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint128", + "nameLocation": "6842:13:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10853, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "6864:7:28", + "nodeType": "VariableDeclaration", + "scope": 10862, + "src": "6856:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10852, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6856:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10855, + "mutability": "mutable", + "name": "offset", + "nameLocation": "6881:6:28", + "nodeType": "VariableDeclaration", + "scope": 10862, + "src": "6873:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10854, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6873:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6855:33:28" + }, + "returnParameters": { + "id": 10859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10858, + "mutability": "mutable", + "name": "value", + "nameLocation": "6920:5:28", + "nodeType": "VariableDeclaration", + "scope": 10862, + "src": "6912:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 10857, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6912:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "6911:15:28" + }, + "scope": 10863, + "src": "6833:191:28", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10864, + "src": "168:6858:28", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:6994:28" + }, + "id": 28 + }, + "src/libraries/math/LiquidityConfigurations.sol": { + "ast": { + "absolutePath": "src/libraries/math/LiquidityConfigurations.sol", + "exportedSymbols": { + "Encoded": [ + 10863 + ], + "LiquidityConfigurations": [ + 11033 + ], + "PackedUint128Math": [ + 11387 + ] + }, + "id": 11034, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10865, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:29" + }, + { + "absolutePath": "src/libraries/math/PackedUint128Math.sol", + "file": "./PackedUint128Math.sol", + "id": 10867, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11034, + "sourceUnit": 11388, + "src": "59:58:29", + "symbolAliases": [ + { + "foreign": { + "id": 10866, + "name": "PackedUint128Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11387, + "src": "67:17:29", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Encoded.sol", + "file": "./Encoded.sol", + "id": 10869, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11034, + "sourceUnit": 10864, + "src": "118:38:29", + "symbolAliases": [ + { + "foreign": { + "id": 10868, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "126:7:29", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LiquidityConfigurations", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10870, + "nodeType": "StructuredDocumentation", + "src": "158:189:29", + "text": " @title Liquidity Book Liquidity Configurations Library\n @notice This library contains functions to encode and decode the config of a pool and interact with the encoded bytes32." + }, + "fullyImplemented": true, + "id": 11033, + "linearizedBaseContracts": [ + 11033 + ], + "name": "LiquidityConfigurations", + "nameLocation": "356:23:29", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 10873, + "libraryName": { + "id": 10871, + "name": "PackedUint128Math", + "nameLocations": [ + "392:17:29" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11387, + "src": "392:17:29" + }, + "nodeType": "UsingForDirective", + "src": "386:36:29", + "typeName": { + "id": 10872, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "414:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 10876, + "libraryName": { + "id": 10874, + "name": "PackedUint128Math", + "nameLocations": [ + "433:17:29" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11387, + "src": "433:17:29" + }, + "nodeType": "UsingForDirective", + "src": "427:36:29", + "typeName": { + "id": 10875, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "455:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + }, + { + "global": false, + "id": 10879, + "libraryName": { + "id": 10877, + "name": "Encoded", + "nameLocations": [ + "474:7:29" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10863, + "src": "474:7:29" + }, + "nodeType": "UsingForDirective", + "src": "468:26:29", + "typeName": { + "id": 10878, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "486:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "errorSelector": "eea4aafe", + "id": 10881, + "name": "LiquidityConfigurations__InvalidConfig", + "nameLocation": "506:38:29", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10880, + "nodeType": "ParameterList", + "parameters": [], + "src": "544:2:29" + }, + "src": "500:47:29" + }, + { + "constant": true, + "id": 10884, + "mutability": "constant", + "name": "OFFSET_ID", + "nameLocation": "578:9:29", + "nodeType": "VariableDeclaration", + "scope": 11033, + "src": "553:38:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "553:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 10883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "590:1:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 10887, + "mutability": "constant", + "name": "OFFSET_DISTRIBUTION_Y", + "nameLocation": "622:21:29", + "nodeType": "VariableDeclaration", + "scope": 11033, + "src": "597:51:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "597:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3234", + "id": 10886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "646:2:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "value": "24" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 10890, + "mutability": "constant", + "name": "OFFSET_DISTRIBUTION_X", + "nameLocation": "679:21:29", + "nodeType": "VariableDeclaration", + "scope": 11033, + "src": "654:51:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "654:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3838", + "id": 10889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "703:2:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + "value": "88" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 10893, + "mutability": "constant", + "name": "PRECISION", + "nameLocation": "737:9:29", + "nodeType": "VariableDeclaration", + "scope": 11033, + "src": "712:41:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "712:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31653138", + "id": 10892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "749:4:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + }, + "value": "1e18" + }, + "visibility": "private" + }, + { + "body": { + "id": 10935, + "nodeType": "Block", + "src": "1330:248:29", + "statements": [ + { + "expression": { + "id": 10913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10905, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "1340:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10908, + "name": "distributionX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10896, + "src": "1360:13:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 10909, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "1375:7:29", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 10910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1383:11:29", + "memberName": "MASK_UINT64", + "nodeType": "MemberAccess", + "referencedDeclaration": 10686, + "src": "1375:19:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10911, + "name": "OFFSET_DISTRIBUTION_X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10890, + "src": "1396:21:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10906, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "1349:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1356:3:29", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "1349:10:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 10912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1349:69:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1340:78:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10914, + "nodeType": "ExpressionStatement", + "src": "1340:78:29" + }, + { + "expression": { + "id": 10923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10915, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "1428:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10918, + "name": "distributionY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10898, + "src": "1448:13:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 10919, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "1463:7:29", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 10920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1471:11:29", + "memberName": "MASK_UINT64", + "nodeType": "MemberAccess", + "referencedDeclaration": 10686, + "src": "1463:19:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10921, + "name": "OFFSET_DISTRIBUTION_Y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10887, + "src": "1484:21:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10916, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "1437:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1444:3:29", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "1437:10:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 10922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1437:69:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1428:78:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10924, + "nodeType": "ExpressionStatement", + "src": "1428:78:29" + }, + { + "expression": { + "id": 10933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10925, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "1516:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10928, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10900, + "src": "1536:2:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 10929, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10863, + "src": "1540:7:29", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10863_$", + "typeString": "type(library Encoded)" + } + }, + "id": 10930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1548:11:29", + "memberName": "MASK_UINT24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10680, + "src": "1540:19:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10931, + "name": "OFFSET_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10884, + "src": "1561:9:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10926, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10903, + "src": "1525:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1532:3:29", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10705, + "src": "1525:10:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 10932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1525:46:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1516:55:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10934, + "nodeType": "ExpressionStatement", + "src": "1516:55:29" + } + ] + }, + "documentation": { + "id": 10894, + "nodeType": "StructuredDocumentation", + "src": "760:421:29", + "text": " @dev Encode the distributionX, distributionY and id into a single bytes32\n @param distributionX The distribution of the first token\n @param distributionY The distribution of the second token\n @param id The id of the pool\n @return config The encoded config as follows:\n [0 - 24[: id\n [24 - 88[: distributionY\n [88 - 152[: distributionX\n [152 - 256[: empty" + }, + "id": 10936, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encodeParams", + "nameLocation": "1195:12:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10896, + "mutability": "mutable", + "name": "distributionX", + "nameLocation": "1215:13:29", + "nodeType": "VariableDeclaration", + "scope": 10936, + "src": "1208:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 10895, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1208:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10898, + "mutability": "mutable", + "name": "distributionY", + "nameLocation": "1237:13:29", + "nodeType": "VariableDeclaration", + "scope": 10936, + "src": "1230:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 10897, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1230:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10900, + "mutability": "mutable", + "name": "id", + "nameLocation": "1259:2:29", + "nodeType": "VariableDeclaration", + "scope": 10936, + "src": "1252:9:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10899, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1252:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1207:55:29" + }, + "returnParameters": { + "id": 10904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10903, + "mutability": "mutable", + "name": "config", + "nameLocation": "1318:6:29", + "nodeType": "VariableDeclaration", + "scope": 10936, + "src": "1310:14:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1310:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1309:16:29" + }, + "scope": 11033, + "src": "1186:392:29", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10992, + "nodeType": "Block", + "src": "2179:369:29", + "statements": [ + { + "expression": { + "id": 10953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10948, + "name": "distributionX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10942, + "src": "2189:13:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10951, + "name": "OFFSET_DISTRIBUTION_X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10890, + "src": "2225:21:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10949, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10939, + "src": "2205:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2212:12:29", + "memberName": "decodeUint64", + "nodeType": "MemberAccess", + "referencedDeclaration": 10850, + "src": "2205:19:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint64_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint64)" + } + }, + "id": 10952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2205:42:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "2189:58:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 10954, + "nodeType": "ExpressionStatement", + "src": "2189:58:29" + }, + { + "expression": { + "id": 10960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10955, + "name": "distributionY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10944, + "src": "2257:13:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10958, + "name": "OFFSET_DISTRIBUTION_Y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10887, + "src": "2293:21:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10956, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10939, + "src": "2273:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2280:12:29", + "memberName": "decodeUint64", + "nodeType": "MemberAccess", + "referencedDeclaration": 10850, + "src": "2273:19:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint64_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint64)" + } + }, + "id": 10959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2273:42:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "2257:58:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 10961, + "nodeType": "ExpressionStatement", + "src": "2257:58:29" + }, + { + "expression": { + "id": 10967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10962, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10946, + "src": "2325:2:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10965, + "name": "OFFSET_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10884, + "src": "2350:9:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10963, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10939, + "src": "2330:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2337:12:29", + "memberName": "decodeUint24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10826, + "src": "2330:19:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 10966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2330:30:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "2325:35:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 10968, + "nodeType": "ExpressionStatement", + "src": "2325:35:29" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 10982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10971, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10939, + "src": "2383:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2375:7:29", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2375:7:29", + "typeDescriptions": {} + } + }, + "id": 10972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2375:15:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 10975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2398:7:29", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + }, + "typeName": { + "id": 10974, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "2398:7:29", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + } + ], + "id": 10973, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "2393:4:29", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2393:13:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint152", + "typeString": "type(uint152)" + } + }, + "id": 10977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2407:3:29", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2393:17:29", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "src": "2375:35:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10979, + "name": "distributionX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10942, + "src": "2414:13:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 10980, + "name": "PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10893, + "src": "2430:9:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2414:25:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2375:64:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10983, + "name": "distributionY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10944, + "src": "2443:13:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 10984, + "name": "PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10893, + "src": "2459:9:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2443:25:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2375:93:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10991, + "nodeType": "IfStatement", + "src": "2371:171:29", + "trueBody": { + "id": 10990, + "nodeType": "Block", + "src": "2470:72:29", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10987, + "name": "LiquidityConfigurations__InvalidConfig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10881, + "src": "2491:38:29", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2491:40:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10989, + "nodeType": "RevertStatement", + "src": "2484:47:29" + } + ] + } + } + ] + }, + "documentation": { + "id": 10937, + "nodeType": "StructuredDocumentation", + "src": "1584:446:29", + "text": " @dev Decode the distributionX, distributionY and id from a single bytes32\n @param config The encoded config as follows:\n [0 - 24[: id\n [24 - 88[: distributionY\n [88 - 152[: distributionX\n [152 - 256[: empty\n @return distributionX The distribution of the first token\n @return distributionY The distribution of the second token\n @return id The id of the bin to add the liquidity to" + }, + "id": 10993, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeParams", + "nameLocation": "2044:12:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10939, + "mutability": "mutable", + "name": "config", + "nameLocation": "2065:6:29", + "nodeType": "VariableDeclaration", + "scope": 10993, + "src": "2057:14:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10938, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2057:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2056:16:29" + }, + "returnParameters": { + "id": 10947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10942, + "mutability": "mutable", + "name": "distributionX", + "nameLocation": "2127:13:29", + "nodeType": "VariableDeclaration", + "scope": 10993, + "src": "2120:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 10941, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2120:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10944, + "mutability": "mutable", + "name": "distributionY", + "nameLocation": "2149:13:29", + "nodeType": "VariableDeclaration", + "scope": 10993, + "src": "2142:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 10943, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2142:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10946, + "mutability": "mutable", + "name": "id", + "nameLocation": "2171:2:29", + "nodeType": "VariableDeclaration", + "scope": 10993, + "src": "2164:9:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10945, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2164:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "2119:55:29" + }, + "scope": 11033, + "src": "2035:513:29", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11031, + "nodeType": "Block", + "src": "3165:332:29", + "statements": [ + { + "assignments": [ + 11006, + 11008, + 11010 + ], + "declarations": [ + { + "constant": false, + "id": 11006, + "mutability": "mutable", + "name": "distributionX", + "nameLocation": "3183:13:29", + "nodeType": "VariableDeclaration", + "scope": 11031, + "src": "3176:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 11005, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3176:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11008, + "mutability": "mutable", + "name": "distributionY", + "nameLocation": "3205:13:29", + "nodeType": "VariableDeclaration", + "scope": 11031, + "src": "3198:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 11007, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3198:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11010, + "mutability": "mutable", + "name": "id", + "nameLocation": "3227:2:29", + "nodeType": "VariableDeclaration", + "scope": 11031, + "src": "3220:9:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 11009, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3220:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "id": 11014, + "initialValue": { + "arguments": [ + { + "id": 11012, + "name": "config", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10996, + "src": "3246:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11011, + "name": "decodeParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10993, + "src": "3233:12:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint64_$_t_uint64_$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint64,uint64,uint24)" + } + }, + "id": 11013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3233:20:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint64_$_t_uint64_$_t_uint24_$", + "typeString": "tuple(uint64,uint64,uint24)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3175:78:29" + }, + { + "assignments": [ + 11016, + 11018 + ], + "declarations": [ + { + "constant": false, + "id": 11016, + "mutability": "mutable", + "name": "x1", + "nameLocation": "3273:2:29", + "nodeType": "VariableDeclaration", + "scope": 11031, + "src": "3265:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11015, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3265:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11018, + "mutability": "mutable", + "name": "x2", + "nameLocation": "3285:2:29", + "nodeType": "VariableDeclaration", + "scope": 11031, + "src": "3277:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11017, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3277:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 11022, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 11019, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10998, + "src": "3291:9:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 11020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3301:6:29", + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11119, + "src": "3291:16:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 11021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3291:18:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3264:45:29" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "3329:125:29", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3343:44:29", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x1", + "nodeType": "YulIdentifier", + "src": "3357:2:29" + }, + { + "name": "distributionX", + "nodeType": "YulIdentifier", + "src": "3361:13:29" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3353:3:29" + }, + "nodeType": "YulFunctionCall", + "src": "3353:22:29" + }, + { + "name": "PRECISION", + "nodeType": "YulIdentifier", + "src": "3377:9:29" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "3349:3:29" + }, + "nodeType": "YulFunctionCall", + "src": "3349:38:29" + }, + "variableNames": [ + { + "name": "x1", + "nodeType": "YulIdentifier", + "src": "3343:2:29" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3400:44:29", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x2", + "nodeType": "YulIdentifier", + "src": "3414:2:29" + }, + { + "name": "distributionY", + "nodeType": "YulIdentifier", + "src": "3418:13:29" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3410:3:29" + }, + "nodeType": "YulFunctionCall", + "src": "3410:22:29" + }, + { + "name": "PRECISION", + "nodeType": "YulIdentifier", + "src": "3434:9:29" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "3406:3:29" + }, + "nodeType": "YulFunctionCall", + "src": "3406:38:29" + }, + "variableNames": [ + { + "name": "x2", + "nodeType": "YulIdentifier", + "src": "3400:2:29" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10893, + "isOffset": false, + "isSlot": false, + "src": "3377:9:29", + "valueSize": 1 + }, + { + "declaration": 10893, + "isOffset": false, + "isSlot": false, + "src": "3434:9:29", + "valueSize": 1 + }, + { + "declaration": 11006, + "isOffset": false, + "isSlot": false, + "src": "3361:13:29", + "valueSize": 1 + }, + { + "declaration": 11008, + "isOffset": false, + "isSlot": false, + "src": "3418:13:29", + "valueSize": 1 + }, + { + "declaration": 11016, + "isOffset": false, + "isSlot": false, + "src": "3343:2:29", + "valueSize": 1 + }, + { + "declaration": 11016, + "isOffset": false, + "isSlot": false, + "src": "3357:2:29", + "valueSize": 1 + }, + { + "declaration": 11018, + "isOffset": false, + "isSlot": false, + "src": "3400:2:29", + "valueSize": 1 + }, + { + "declaration": 11018, + "isOffset": false, + "isSlot": false, + "src": "3414:2:29", + "valueSize": 1 + } + ], + "id": 11023, + "nodeType": "InlineAssembly", + "src": "3320:134:29" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 11026, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11018, + "src": "3482:2:29", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 11024, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11016, + "src": "3472:2:29", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 11025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3475:6:29", + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 11067, + "src": "3472:9:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_bytes32_$attached_to$_t_uint128_$", + "typeString": "function (uint128,uint128) pure returns (bytes32)" + } + }, + "id": 11027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3472:13:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11028, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11010, + "src": "3487:2:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "id": 11029, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3471:19:29", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint24_$", + "typeString": "tuple(bytes32,uint24)" + } + }, + "functionReturnParameters": 11004, + "id": 11030, + "nodeType": "Return", + "src": "3464:26:29" + } + ] + }, + "documentation": { + "id": 10994, + "nodeType": "StructuredDocumentation", + "src": "2554:506:29", + "text": " @dev Get the amounts and id from a config and amountsIn\n @param config The encoded config as follows:\n [0 - 24[: id\n [24 - 88[: distributionY\n [88 - 152[: distributionX\n [152 - 256[: empty\n @param amountsIn The amounts to distribute as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @return amounts The distributed amounts as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @return id The id of the bin to add the liquidity to" + }, + "id": 11032, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAmountsAndId", + "nameLocation": "3074:15:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10996, + "mutability": "mutable", + "name": "config", + "nameLocation": "3098:6:29", + "nodeType": "VariableDeclaration", + "scope": 11032, + "src": "3090:14:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10995, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3090:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10998, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "3114:9:29", + "nodeType": "VariableDeclaration", + "scope": 11032, + "src": "3106:17:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10997, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3106:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3089:35:29" + }, + "returnParameters": { + "id": 11004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11001, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11032, + "src": "3148:7:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11000, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3148:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11003, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11032, + "src": "3157:6:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 11002, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3157:6:29", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3147:17:29" + }, + "scope": 11033, + "src": "3065:432:29", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 11034, + "src": "348:3151:29", + "usedErrors": [ + 10881 + ], + "usedEvents": [] + } + ], + "src": "33:3467:29" + }, + "id": 29 + }, + "src/libraries/math/PackedUint128Math.sol": { + "ast": { + "absolutePath": "src/libraries/math/PackedUint128Math.sol", + "exportedSymbols": { + "Constants": [ + 8172 + ], + "PackedUint128Math": [ + 11387 + ] + }, + "id": 11388, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11035, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:30" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "../Constants.sol", + "id": 11037, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11388, + "sourceUnit": 8173, + "src": "59:43:30", + "symbolAliases": [ + { + "foreign": { + "id": 11036, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "67:9:30", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "PackedUint128Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 11038, + "nodeType": "StructuredDocumentation", + "src": "104:200:30", + "text": " @title Liquidity Book Packed Uint128 Math Library\n @notice This library contains functions to encode and decode two uint128 into a single bytes32\n and interact with the encoded bytes32." + }, + "fullyImplemented": true, + "id": 11387, + "linearizedBaseContracts": [ + 11387 + ], + "name": "PackedUint128Math", + "nameLocation": "313:17:30", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "16692de9", + "id": 11040, + "name": "PackedUint128Math__AddOverflow", + "nameLocation": "343:30:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11039, + "nodeType": "ParameterList", + "parameters": [], + "src": "373:2:30" + }, + "src": "337:39:30" + }, + { + "errorSelector": "e599af55", + "id": 11042, + "name": "PackedUint128Math__SubUnderflow", + "nameLocation": "387:31:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11041, + "nodeType": "ParameterList", + "parameters": [], + "src": "418:2:30" + }, + "src": "381:40:30" + }, + { + "errorSelector": "5452a524", + "id": 11044, + "name": "PackedUint128Math__MultiplierTooLarge", + "nameLocation": "432:37:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11043, + "nodeType": "ParameterList", + "parameters": [], + "src": "469:2:30" + }, + "src": "426:46:30" + }, + { + "constant": true, + "id": 11047, + "mutability": "constant", + "name": "OFFSET", + "nameLocation": "503:6:30", + "nodeType": "VariableDeclaration", + "scope": 11387, + "src": "478:37:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "478:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313238", + "id": 11046, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "512:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 11050, + "mutability": "constant", + "name": "MASK_128", + "nameLocation": "546:8:30", + "nodeType": "VariableDeclaration", + "scope": 11387, + "src": "521:70:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "521:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666", + "id": 11049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "557:34:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "value": "0xffffffffffffffffffffffffffffffff" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 11055, + "mutability": "constant", + "name": "MASK_128_PLUS_ONE", + "nameLocation": "622:17:30", + "nodeType": "VariableDeclaration", + "scope": 11387, + "src": "597:57:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11051, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "597:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 11052, + "name": "MASK_128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11050, + "src": "642:8:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 11053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "653:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "642:12:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 11066, + "nodeType": "Block", + "src": "969:92:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "988:67:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1002:43:30", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x1", + "nodeType": "YulIdentifier", + "src": "1014:2:30" + }, + { + "name": "MASK_128", + "nodeType": "YulIdentifier", + "src": "1018:8:30" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1010:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "1010:17:30" + }, + { + "arguments": [ + { + "name": "OFFSET", + "nodeType": "YulIdentifier", + "src": "1033:6:30" + }, + { + "name": "x2", + "nodeType": "YulIdentifier", + "src": "1041:2:30" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1029:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "1029:15:30" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1007:2:30" + }, + "nodeType": "YulFunctionCall", + "src": "1007:38:30" + }, + "variableNames": [ + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "1002:1:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11050, + "isOffset": false, + "isSlot": false, + "src": "1018:8:30", + "valueSize": 1 + }, + { + "declaration": 11047, + "isOffset": false, + "isSlot": false, + "src": "1033:6:30", + "valueSize": 1 + }, + { + "declaration": 11058, + "isOffset": false, + "isSlot": false, + "src": "1014:2:30", + "valueSize": 1 + }, + { + "declaration": 11060, + "isOffset": false, + "isSlot": false, + "src": "1041:2:30", + "valueSize": 1 + }, + { + "declaration": 11063, + "isOffset": false, + "isSlot": false, + "src": "1002:1:30", + "valueSize": 1 + } + ], + "id": 11065, + "nodeType": "InlineAssembly", + "src": "979:76:30" + } + ] + }, + "documentation": { + "id": 11056, + "nodeType": "StructuredDocumentation", + "src": "661:229:30", + "text": " @dev Encodes two uint128 into a single bytes32\n @param x1 The first uint128\n @param x2 The second uint128\n @return z The encoded bytes32 as follows:\n [0 - 128[: x1\n [128 - 256[: x2" + }, + "id": 11067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "904:6:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11058, + "mutability": "mutable", + "name": "x1", + "nameLocation": "919:2:30", + "nodeType": "VariableDeclaration", + "scope": 11067, + "src": "911:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11057, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "911:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11060, + "mutability": "mutable", + "name": "x2", + "nameLocation": "931:2:30", + "nodeType": "VariableDeclaration", + "scope": 11067, + "src": "923:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11059, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "923:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "910:24:30" + }, + "returnParameters": { + "id": 11064, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11063, + "mutability": "mutable", + "name": "z", + "nameLocation": "966:1:30", + "nodeType": "VariableDeclaration", + "scope": 11067, + "src": "958:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11062, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "958:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "957:11:30" + }, + "scope": 11387, + "src": "895:166:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11076, + "nodeType": "Block", + "src": "1348:71:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1367:46:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1381:22:30", + "value": { + "arguments": [ + { + "name": "x1", + "nodeType": "YulIdentifier", + "src": "1390:2:30" + }, + { + "name": "MASK_128", + "nodeType": "YulIdentifier", + "src": "1394:8:30" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1386:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "1386:17:30" + }, + "variableNames": [ + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "1381:1:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11050, + "isOffset": false, + "isSlot": false, + "src": "1394:8:30", + "valueSize": 1 + }, + { + "declaration": 11070, + "isOffset": false, + "isSlot": false, + "src": "1390:2:30", + "valueSize": 1 + }, + { + "declaration": 11073, + "isOffset": false, + "isSlot": false, + "src": "1381:1:30", + "valueSize": 1 + } + ], + "id": 11075, + "nodeType": "InlineAssembly", + "src": "1358:55:30" + } + ] + }, + "documentation": { + "id": 11068, + "nodeType": "StructuredDocumentation", + "src": "1067:209:30", + "text": " @dev Encodes a uint128 into a single bytes32 as the first uint128\n @param x1 The uint128\n @return z The encoded bytes32 as follows:\n [0 - 128[: x1\n [128 - 256[: empty" + }, + "id": 11077, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encodeFirst", + "nameLocation": "1290:11:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11070, + "mutability": "mutable", + "name": "x1", + "nameLocation": "1310:2:30", + "nodeType": "VariableDeclaration", + "scope": 11077, + "src": "1302:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11069, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1302:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "1301:12:30" + }, + "returnParameters": { + "id": 11074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11073, + "mutability": "mutable", + "name": "z", + "nameLocation": "1345:1:30", + "nodeType": "VariableDeclaration", + "scope": 11077, + "src": "1337:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1337:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1336:11:30" + }, + "scope": 11387, + "src": "1281:138:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11086, + "nodeType": "Block", + "src": "1708:69:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1727:44:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1741:20:30", + "value": { + "arguments": [ + { + "name": "OFFSET", + "nodeType": "YulIdentifier", + "src": "1750:6:30" + }, + { + "name": "x2", + "nodeType": "YulIdentifier", + "src": "1758:2:30" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1746:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "1746:15:30" + }, + "variableNames": [ + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "1741:1:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11047, + "isOffset": false, + "isSlot": false, + "src": "1750:6:30", + "valueSize": 1 + }, + { + "declaration": 11080, + "isOffset": false, + "isSlot": false, + "src": "1758:2:30", + "valueSize": 1 + }, + { + "declaration": 11083, + "isOffset": false, + "isSlot": false, + "src": "1741:1:30", + "valueSize": 1 + } + ], + "id": 11085, + "nodeType": "InlineAssembly", + "src": "1718:53:30" + } + ] + }, + "documentation": { + "id": 11078, + "nodeType": "StructuredDocumentation", + "src": "1425:210:30", + "text": " @dev Encodes a uint128 into a single bytes32 as the second uint128\n @param x2 The uint128\n @return z The encoded bytes32 as follows:\n [0 - 128[: empty\n [128 - 256[: x2" + }, + "id": 11087, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encodeSecond", + "nameLocation": "1649:12:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11080, + "mutability": "mutable", + "name": "x2", + "nameLocation": "1670:2:30", + "nodeType": "VariableDeclaration", + "scope": 11087, + "src": "1662:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11079, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1662:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "1661:12:30" + }, + "returnParameters": { + "id": 11084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11083, + "mutability": "mutable", + "name": "z", + "nameLocation": "1705:1:30", + "nodeType": "VariableDeclaration", + "scope": 11087, + "src": "1697:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11082, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1697:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1696:11:30" + }, + "scope": 11387, + "src": "1640:137:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11106, + "nodeType": "Block", + "src": "2223:64:30", + "statements": [ + { + "expression": { + "condition": { + "id": 11097, + "name": "first", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11092, + "src": "2240:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [ + { + "id": 11102, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11090, + "src": "2278:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 11101, + "name": "encodeSecond", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11087, + "src": "2265:12:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 11103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2265:15:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 11104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2240:40:30", + "trueExpression": { + "arguments": [ + { + "id": 11099, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11090, + "src": "2260:1:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 11098, + "name": "encodeFirst", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11077, + "src": "2248:11:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$returns$_t_bytes32_$", + "typeString": "function (uint128) pure returns (bytes32)" + } + }, + "id": 11100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2248:14:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 11096, + "id": 11105, + "nodeType": "Return", + "src": "2233:47:30" + } + ] + }, + "documentation": { + "id": 11088, + "nodeType": "StructuredDocumentation", + "src": "1783:362:30", + "text": " @dev Encodes a uint128 into a single bytes32 as the first or second uint128\n @param x The uint128\n @param first Whether to encode as the first or second uint128\n @return z The encoded bytes32 as follows:\n if first:\n [0 - 128[: x\n [128 - 256[: empty\n else:\n [0 - 128[: empty\n [128 - 256[: x" + }, + "id": 11107, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "2159:6:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11090, + "mutability": "mutable", + "name": "x", + "nameLocation": "2174:1:30", + "nodeType": "VariableDeclaration", + "scope": 11107, + "src": "2166:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11089, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2166:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11092, + "mutability": "mutable", + "name": "first", + "nameLocation": "2182:5:30", + "nodeType": "VariableDeclaration", + "scope": 11107, + "src": "2177:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11091, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2177:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2165:23:30" + }, + "returnParameters": { + "id": 11096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11095, + "mutability": "mutable", + "name": "z", + "nameLocation": "2220:1:30", + "nodeType": "VariableDeclaration", + "scope": 11107, + "src": "2212:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11094, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2212:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2211:11:30" + }, + "scope": 11387, + "src": "2150:137:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11118, + "nodeType": "Block", + "src": "2595:104:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2614:79:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2628:22:30", + "value": { + "arguments": [ + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "2638:1:30" + }, + { + "name": "MASK_128", + "nodeType": "YulIdentifier", + "src": "2641:8:30" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2634:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "2634:16:30" + }, + "variableNames": [ + { + "name": "x1", + "nodeType": "YulIdentifier", + "src": "2628:2:30" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2663:20:30", + "value": { + "arguments": [ + { + "name": "OFFSET", + "nodeType": "YulIdentifier", + "src": "2673:6:30" + }, + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "2681:1:30" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2669:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "2669:14:30" + }, + "variableNames": [ + { + "name": "x2", + "nodeType": "YulIdentifier", + "src": "2663:2:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11050, + "isOffset": false, + "isSlot": false, + "src": "2641:8:30", + "valueSize": 1 + }, + { + "declaration": 11047, + "isOffset": false, + "isSlot": false, + "src": "2673:6:30", + "valueSize": 1 + }, + { + "declaration": 11113, + "isOffset": false, + "isSlot": false, + "src": "2628:2:30", + "valueSize": 1 + }, + { + "declaration": 11115, + "isOffset": false, + "isSlot": false, + "src": "2663:2:30", + "valueSize": 1 + }, + { + "declaration": 11110, + "isOffset": false, + "isSlot": false, + "src": "2638:1:30", + "valueSize": 1 + }, + { + "declaration": 11110, + "isOffset": false, + "isSlot": false, + "src": "2681:1:30", + "valueSize": 1 + } + ], + "id": 11117, + "nodeType": "InlineAssembly", + "src": "2605:88:30" + } + ] + }, + "documentation": { + "id": 11108, + "nodeType": "StructuredDocumentation", + "src": "2293:223:30", + "text": " @dev Decodes a bytes32 into two uint128\n @param z The encoded bytes32 as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @return x1 The first uint128\n @return x2 The second uint128" + }, + "id": 11119, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode", + "nameLocation": "2530:6:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11110, + "mutability": "mutable", + "name": "z", + "nameLocation": "2545:1:30", + "nodeType": "VariableDeclaration", + "scope": 11119, + "src": "2537:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11109, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2537:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2536:11:30" + }, + "returnParameters": { + "id": 11116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11113, + "mutability": "mutable", + "name": "x1", + "nameLocation": "2579:2:30", + "nodeType": "VariableDeclaration", + "scope": 11119, + "src": "2571:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11112, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2571:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11115, + "mutability": "mutable", + "name": "x2", + "nameLocation": "2591:2:30", + "nodeType": "VariableDeclaration", + "scope": 11119, + "src": "2583:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11114, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2583:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "2570:24:30" + }, + "scope": 11387, + "src": "2521:178:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11128, + "nodeType": "Block", + "src": "2976:70:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2995:45:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3009:21:30", + "value": { + "arguments": [ + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "3018:1:30" + }, + { + "name": "MASK_128", + "nodeType": "YulIdentifier", + "src": "3021:8:30" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3014:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "3014:16:30" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3009:1:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11050, + "isOffset": false, + "isSlot": false, + "src": "3021:8:30", + "valueSize": 1 + }, + { + "declaration": 11125, + "isOffset": false, + "isSlot": false, + "src": "3009:1:30", + "valueSize": 1 + }, + { + "declaration": 11122, + "isOffset": false, + "isSlot": false, + "src": "3018:1:30", + "valueSize": 1 + } + ], + "id": 11127, + "nodeType": "InlineAssembly", + "src": "2986:54:30" + } + ] + }, + "documentation": { + "id": 11120, + "nodeType": "StructuredDocumentation", + "src": "2705:204:30", + "text": " @dev Decodes a bytes32 into a uint128 as the first uint128\n @param z The encoded bytes32 as follows:\n [0 - 128[: x\n [128 - 256[: any\n @return x The first uint128" + }, + "id": 11129, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeX", + "nameLocation": "2923:7:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11122, + "mutability": "mutable", + "name": "z", + "nameLocation": "2939:1:30", + "nodeType": "VariableDeclaration", + "scope": 11129, + "src": "2931:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11121, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2931:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2930:11:30" + }, + "returnParameters": { + "id": 11126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11125, + "mutability": "mutable", + "name": "x", + "nameLocation": "2973:1:30", + "nodeType": "VariableDeclaration", + "scope": 11129, + "src": "2965:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11124, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2965:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "2964:11:30" + }, + "scope": 11387, + "src": "2914:132:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11138, + "nodeType": "Block", + "src": "3325:68:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3344:43:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3358:19:30", + "value": { + "arguments": [ + { + "name": "OFFSET", + "nodeType": "YulIdentifier", + "src": "3367:6:30" + }, + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "3375:1:30" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "3363:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "3363:14:30" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3358:1:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11047, + "isOffset": false, + "isSlot": false, + "src": "3367:6:30", + "valueSize": 1 + }, + { + "declaration": 11135, + "isOffset": false, + "isSlot": false, + "src": "3358:1:30", + "valueSize": 1 + }, + { + "declaration": 11132, + "isOffset": false, + "isSlot": false, + "src": "3375:1:30", + "valueSize": 1 + } + ], + "id": 11137, + "nodeType": "InlineAssembly", + "src": "3335:52:30" + } + ] + }, + "documentation": { + "id": 11130, + "nodeType": "StructuredDocumentation", + "src": "3052:206:30", + "text": " @dev Decodes a bytes32 into a uint128 as the second uint128\n @param z The encoded bytes32 as follows:\n [0 - 128[: any\n [128 - 256[: y\n @return y The second uint128" + }, + "id": 11139, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeY", + "nameLocation": "3272:7:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11132, + "mutability": "mutable", + "name": "z", + "nameLocation": "3288:1:30", + "nodeType": "VariableDeclaration", + "scope": 11139, + "src": "3280:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3280:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3279:11:30" + }, + "returnParameters": { + "id": 11136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11135, + "mutability": "mutable", + "name": "y", + "nameLocation": "3322:1:30", + "nodeType": "VariableDeclaration", + "scope": 11139, + "src": "3314:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11134, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3314:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3313:11:30" + }, + "scope": 11387, + "src": "3263:130:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11158, + "nodeType": "Block", + "src": "3842:55:30", + "statements": [ + { + "expression": { + "condition": { + "id": 11149, + "name": "first", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11144, + "src": "3859:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [ + { + "id": 11154, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11142, + "src": "3888:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11153, + "name": "decodeY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11139, + "src": "3880:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 11155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3880:10:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 11156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "3859:31:30", + "trueExpression": { + "arguments": [ + { + "id": 11151, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11142, + "src": "3875:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11150, + "name": "decodeX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11129, + "src": "3867:7:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$", + "typeString": "function (bytes32) pure returns (uint128)" + } + }, + "id": 11152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3867:10:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 11148, + "id": 11157, + "nodeType": "Return", + "src": "3852:38:30" + } + ] + }, + "documentation": { + "id": 11140, + "nodeType": "StructuredDocumentation", + "src": "3399:365:30", + "text": " @dev Decodes a bytes32 into a uint128 as the first or second uint128\n @param z The encoded bytes32 as follows:\n if first:\n [0 - 128[: x1\n [128 - 256[: empty\n else:\n [0 - 128[: empty\n [128 - 256[: x2\n @param first Whether to decode as the first or second uint128\n @return x The decoded uint128" + }, + "id": 11159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode", + "nameLocation": "3778:6:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11142, + "mutability": "mutable", + "name": "z", + "nameLocation": "3793:1:30", + "nodeType": "VariableDeclaration", + "scope": 11159, + "src": "3785:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11141, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3785:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11144, + "mutability": "mutable", + "name": "first", + "nameLocation": "3801:5:30", + "nodeType": "VariableDeclaration", + "scope": 11159, + "src": "3796:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11143, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3796:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3784:23:30" + }, + "returnParameters": { + "id": 11148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11147, + "mutability": "mutable", + "name": "x", + "nameLocation": "3839:1:30", + "nodeType": "VariableDeclaration", + "scope": 11159, + "src": "3831:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11146, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3831:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3830:11:30" + }, + "scope": 11387, + "src": "3769:128:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11194, + "nodeType": "Block", + "src": "4377:193:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "4396:38:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4410:14:30", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4419:1:30" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4422:1:30" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4415:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "4415:9:30" + }, + "variableNames": [ + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "4410:1:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11162, + "isOffset": false, + "isSlot": false, + "src": "4419:1:30", + "valueSize": 1 + }, + { + "declaration": 11164, + "isOffset": false, + "isSlot": false, + "src": "4422:1:30", + "valueSize": 1 + }, + { + "declaration": 11167, + "isOffset": false, + "isSlot": false, + "src": "4410:1:30", + "valueSize": 1 + } + ], + "id": 11169, + "nodeType": "InlineAssembly", + "src": "4387:47:30" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 11172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11170, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11167, + "src": "4448:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 11171, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11162, + "src": "4452:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4448:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 11187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 11177, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11167, + "src": "4473:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4465:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 11175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4465:7:30", + "typeDescriptions": {} + } + }, + "id": 11178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4465:10:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4457:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 11173, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4457:7:30", + "typeDescriptions": {} + } + }, + "id": 11179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4457:19:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 11184, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11162, + "src": "4495:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4487:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 11182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4487:7:30", + "typeDescriptions": {} + } + }, + "id": 11185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4487:10:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4479:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 11180, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4479:7:30", + "typeDescriptions": {} + } + }, + "id": 11186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4479:19:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "4457:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4448:50:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11193, + "nodeType": "IfStatement", + "src": "4444:120:30", + "trueBody": { + "id": 11192, + "nodeType": "Block", + "src": "4500:64:30", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11189, + "name": "PackedUint128Math__AddOverflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11040, + "src": "4521:30:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4521:32:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11191, + "nodeType": "RevertStatement", + "src": "4514:39:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 11160, + "nodeType": "StructuredDocumentation", + "src": "3903:400:30", + "text": " @dev Adds two encoded bytes32, reverting on overflow on any of the uint128\n @param x The first bytes32 encoded as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @param y The second bytes32 encoded as follows:\n [0 - 128[: y1\n [128 - 256[: y2\n @return z The sum of x and y encoded as follows:\n [0 - 128[: x1 + y1\n [128 - 256[: x2 + y2" + }, + "id": 11195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "4317:3:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11162, + "mutability": "mutable", + "name": "x", + "nameLocation": "4329:1:30", + "nodeType": "VariableDeclaration", + "scope": 11195, + "src": "4321:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4321:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11164, + "mutability": "mutable", + "name": "y", + "nameLocation": "4340:1:30", + "nodeType": "VariableDeclaration", + "scope": 11195, + "src": "4332:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11163, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4332:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4320:22:30" + }, + "returnParameters": { + "id": 11168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11167, + "mutability": "mutable", + "name": "z", + "nameLocation": "4374:1:30", + "nodeType": "VariableDeclaration", + "scope": 11195, + "src": "4366:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11166, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4366:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4365:11:30" + }, + "scope": 11387, + "src": "4308:262:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11215, + "nodeType": "Block", + "src": "5042:46:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11208, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11198, + "src": "5063:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 11210, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11200, + "src": "5073:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 11211, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11202, + "src": "5077:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 11209, + "name": "encode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11067, + 11107 + ], + "referencedDeclaration": 11067, + "src": "5066:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_bytes32_$", + "typeString": "function (uint128,uint128) pure returns (bytes32)" + } + }, + "id": 11212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5066:14:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11207, + "name": "add", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11195, + 11216 + ], + "referencedDeclaration": 11195, + "src": "5059:3:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 11213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5059:22:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 11206, + "id": 11214, + "nodeType": "Return", + "src": "5052:29:30" + } + ] + }, + "documentation": { + "id": 11196, + "nodeType": "StructuredDocumentation", + "src": "4576:381:30", + "text": " @dev Adds an encoded bytes32 and two uint128, reverting on overflow on any of the uint128\n @param x The bytes32 encoded as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @param y1 The first uint128\n @param y2 The second uint128\n @return z The sum of x and y encoded as follows:\n [0 - 128[: x1 + y1\n [128 - 256[: x2 + y2" + }, + "id": 11216, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "4971:3:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11198, + "mutability": "mutable", + "name": "x", + "nameLocation": "4983:1:30", + "nodeType": "VariableDeclaration", + "scope": 11216, + "src": "4975:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11197, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4975:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11200, + "mutability": "mutable", + "name": "y1", + "nameLocation": "4994:2:30", + "nodeType": "VariableDeclaration", + "scope": 11216, + "src": "4986:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11199, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4986:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11202, + "mutability": "mutable", + "name": "y2", + "nameLocation": "5006:2:30", + "nodeType": "VariableDeclaration", + "scope": 11216, + "src": "4998:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11201, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4998:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "4974:35:30" + }, + "returnParameters": { + "id": 11206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11205, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11216, + "src": "5033:7:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11204, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5033:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5032:9:30" + }, + "scope": 11387, + "src": "4962:126:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11251, + "nodeType": "Block", + "src": "5581:194:30", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5600:38:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5614:14:30", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5623:1:30" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5626:1:30" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5619:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "5619:9:30" + }, + "variableNames": [ + { + "name": "z", + "nodeType": "YulIdentifier", + "src": "5614:1:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11219, + "isOffset": false, + "isSlot": false, + "src": "5623:1:30", + "valueSize": 1 + }, + { + "declaration": 11221, + "isOffset": false, + "isSlot": false, + "src": "5626:1:30", + "valueSize": 1 + }, + { + "declaration": 11224, + "isOffset": false, + "isSlot": false, + "src": "5614:1:30", + "valueSize": 1 + } + ], + "id": 11226, + "nodeType": "InlineAssembly", + "src": "5591:47:30" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 11229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11227, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11224, + "src": "5652:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 11228, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11219, + "src": "5656:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5652:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 11244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 11234, + "name": "z", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11224, + "src": "5677:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5669:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 11232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5669:7:30", + "typeDescriptions": {} + } + }, + "id": 11235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5669:10:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5661:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 11230, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5661:7:30", + "typeDescriptions": {} + } + }, + "id": 11236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5661:19:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 11241, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11219, + "src": "5699:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5691:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 11239, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5691:7:30", + "typeDescriptions": {} + } + }, + "id": 11242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5691:10:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5683:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 11237, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5683:7:30", + "typeDescriptions": {} + } + }, + "id": 11243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5683:19:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "5661:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5652:50:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11250, + "nodeType": "IfStatement", + "src": "5648:121:30", + "trueBody": { + "id": 11249, + "nodeType": "Block", + "src": "5704:65:30", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11246, + "name": "PackedUint128Math__SubUnderflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11042, + "src": "5725:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5725:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11248, + "nodeType": "RevertStatement", + "src": "5718:40:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 11217, + "nodeType": "StructuredDocumentation", + "src": "5094:413:30", + "text": " @dev Subtracts two encoded bytes32, reverting on underflow on any of the uint128\n @param x The first bytes32 encoded as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @param y The second bytes32 encoded as follows:\n [0 - 128[: y1\n [128 - 256[: y2\n @return z The difference of x and y encoded as follows:\n [0 - 128[: x1 - y1\n [128 - 256[: x2 - y2" + }, + "id": 11252, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "5521:3:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11219, + "mutability": "mutable", + "name": "x", + "nameLocation": "5533:1:30", + "nodeType": "VariableDeclaration", + "scope": 11252, + "src": "5525:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11218, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5525:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11221, + "mutability": "mutable", + "name": "y", + "nameLocation": "5544:1:30", + "nodeType": "VariableDeclaration", + "scope": 11252, + "src": "5536:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11220, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5536:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5524:22:30" + }, + "returnParameters": { + "id": 11225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11224, + "mutability": "mutable", + "name": "z", + "nameLocation": "5578:1:30", + "nodeType": "VariableDeclaration", + "scope": 11252, + "src": "5570:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11223, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5570:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5569:11:30" + }, + "scope": 11387, + "src": "5512:263:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11272, + "nodeType": "Block", + "src": "6260:46:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11265, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11255, + "src": "6281:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 11267, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11257, + "src": "6291:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 11268, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11259, + "src": "6295:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 11266, + "name": "encode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11067, + 11107 + ], + "referencedDeclaration": 11067, + "src": "6284:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_bytes32_$", + "typeString": "function (uint128,uint128) pure returns (bytes32)" + } + }, + "id": 11269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6284:14:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11264, + "name": "sub", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11252, + 11273 + ], + "referencedDeclaration": 11252, + "src": "6277:3:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 11270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6277:22:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 11263, + "id": 11271, + "nodeType": "Return", + "src": "6270:29:30" + } + ] + }, + "documentation": { + "id": 11253, + "nodeType": "StructuredDocumentation", + "src": "5781:394:30", + "text": " @dev Subtracts an encoded bytes32 and two uint128, reverting on underflow on any of the uint128\n @param x The bytes32 encoded as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @param y1 The first uint128\n @param y2 The second uint128\n @return z The difference of x and y encoded as follows:\n [0 - 128[: x1 - y1\n [128 - 256[: x2 - y2" + }, + "id": 11273, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nameLocation": "6189:3:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11255, + "mutability": "mutable", + "name": "x", + "nameLocation": "6201:1:30", + "nodeType": "VariableDeclaration", + "scope": 11273, + "src": "6193:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11254, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6193:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11257, + "mutability": "mutable", + "name": "y1", + "nameLocation": "6212:2:30", + "nodeType": "VariableDeclaration", + "scope": 11273, + "src": "6204:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11256, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6204:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11259, + "mutability": "mutable", + "name": "y2", + "nameLocation": "6224:2:30", + "nodeType": "VariableDeclaration", + "scope": 11273, + "src": "6216:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11258, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6216:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "6192:35:30" + }, + "returnParameters": { + "id": 11263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11262, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11273, + "src": "6251:7:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11261, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6251:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6250:9:30" + }, + "scope": 11387, + "src": "6180:126:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11307, + "nodeType": "Block", + "src": "6730:135:30", + "statements": [ + { + "assignments": [ + 11284, + 11286 + ], + "declarations": [ + { + "constant": false, + "id": 11284, + "mutability": "mutable", + "name": "x1", + "nameLocation": "6749:2:30", + "nodeType": "VariableDeclaration", + "scope": 11307, + "src": "6741:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11283, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6741:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11286, + "mutability": "mutable", + "name": "x2", + "nameLocation": "6761:2:30", + "nodeType": "VariableDeclaration", + "scope": 11307, + "src": "6753:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11285, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6753:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 11290, + "initialValue": { + "arguments": [ + { + "id": 11288, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11276, + "src": "6774:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11287, + "name": "decode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11119, + 11159 + ], + "referencedDeclaration": 11119, + "src": "6767:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 11289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6767:9:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6740:36:30" + }, + { + "assignments": [ + 11292, + 11294 + ], + "declarations": [ + { + "constant": false, + "id": 11292, + "mutability": "mutable", + "name": "y1", + "nameLocation": "6795:2:30", + "nodeType": "VariableDeclaration", + "scope": 11307, + "src": "6787:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11291, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6787:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11294, + "mutability": "mutable", + "name": "y2", + "nameLocation": "6807:2:30", + "nodeType": "VariableDeclaration", + "scope": 11307, + "src": "6799:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11293, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6799:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 11298, + "initialValue": { + "arguments": [ + { + "id": 11296, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "6820:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11295, + "name": "decode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11119, + 11159 + ], + "referencedDeclaration": 11119, + "src": "6813:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 11297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6813:9:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6786:36:30" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 11301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11299, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11284, + "src": "6840:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 11300, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11292, + "src": "6845:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "6840:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 11304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11302, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11286, + "src": "6851:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 11303, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11294, + "src": "6856:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "6851:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6840:18:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11282, + "id": 11306, + "nodeType": "Return", + "src": "6833:25:30" + } + ] + }, + "documentation": { + "id": 11274, + "nodeType": "StructuredDocumentation", + "src": "6312:350:30", + "text": " @dev Returns whether any of the uint128 of x is strictly greater than the corresponding uint128 of y\n @param x The first bytes32 encoded as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @param y The second bytes32 encoded as follows:\n [0 - 128[: y1\n [128 - 256[: y2\n @return x1 < y1 || x2 < y2" + }, + "id": 11308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lt", + "nameLocation": "6676:2:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11276, + "mutability": "mutable", + "name": "x", + "nameLocation": "6687:1:30", + "nodeType": "VariableDeclaration", + "scope": 11308, + "src": "6679:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11275, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6679:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11278, + "mutability": "mutable", + "name": "y", + "nameLocation": "6698:1:30", + "nodeType": "VariableDeclaration", + "scope": 11308, + "src": "6690:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11277, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6690:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6678:22:30" + }, + "returnParameters": { + "id": 11282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11281, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11308, + "src": "6724:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11280, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6724:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6723:6:30" + }, + "scope": 11387, + "src": "6667:198:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11342, + "nodeType": "Block", + "src": "7289:135:30", + "statements": [ + { + "assignments": [ + 11319, + 11321 + ], + "declarations": [ + { + "constant": false, + "id": 11319, + "mutability": "mutable", + "name": "x1", + "nameLocation": "7308:2:30", + "nodeType": "VariableDeclaration", + "scope": 11342, + "src": "7300:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11318, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7300:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11321, + "mutability": "mutable", + "name": "x2", + "nameLocation": "7320:2:30", + "nodeType": "VariableDeclaration", + "scope": 11342, + "src": "7312:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11320, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7312:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 11325, + "initialValue": { + "arguments": [ + { + "id": 11323, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11311, + "src": "7333:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11322, + "name": "decode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11119, + 11159 + ], + "referencedDeclaration": 11119, + "src": "7326:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 11324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7326:9:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7299:36:30" + }, + { + "assignments": [ + 11327, + 11329 + ], + "declarations": [ + { + "constant": false, + "id": 11327, + "mutability": "mutable", + "name": "y1", + "nameLocation": "7354:2:30", + "nodeType": "VariableDeclaration", + "scope": 11342, + "src": "7346:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11326, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7346:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11329, + "mutability": "mutable", + "name": "y2", + "nameLocation": "7366:2:30", + "nodeType": "VariableDeclaration", + "scope": 11342, + "src": "7358:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11328, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "7358:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 11333, + "initialValue": { + "arguments": [ + { + "id": 11331, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11313, + "src": "7379:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11330, + "name": "decode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11119, + 11159 + ], + "referencedDeclaration": 11119, + "src": "7372:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 11332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7372:9:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7345:36:30" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 11340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 11336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11334, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11319, + "src": "7399:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 11335, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11327, + "src": "7404:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "7399:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 11339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11337, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11321, + "src": "7410:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 11338, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11329, + "src": "7415:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "7410:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7399:18:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11317, + "id": 11341, + "nodeType": "Return", + "src": "7392:25:30" + } + ] + }, + "documentation": { + "id": 11309, + "nodeType": "StructuredDocumentation", + "src": "6871:350:30", + "text": " @dev Returns whether any of the uint128 of x is strictly greater than the corresponding uint128 of y\n @param x The first bytes32 encoded as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @param y The second bytes32 encoded as follows:\n [0 - 128[: y1\n [128 - 256[: y2\n @return x1 < y1 || x2 < y2" + }, + "id": 11343, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "gt", + "nameLocation": "7235:2:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11311, + "mutability": "mutable", + "name": "x", + "nameLocation": "7246:1:30", + "nodeType": "VariableDeclaration", + "scope": 11343, + "src": "7238:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11310, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7238:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11313, + "mutability": "mutable", + "name": "y", + "nameLocation": "7257:1:30", + "nodeType": "VariableDeclaration", + "scope": 11343, + "src": "7249:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11312, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7249:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7237:22:30" + }, + "returnParameters": { + "id": 11317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11316, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11343, + "src": "7283:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11315, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7283:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7282:6:30" + }, + "scope": 11387, + "src": "7226:198:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11385, + "nodeType": "Block", + "src": "8102:427:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 11355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11353, + "name": "multiplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11348, + "src": "8116:10:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8130:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8116:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11358, + "nodeType": "IfStatement", + "src": "8112:29:30", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 11356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8140:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 11352, + "id": 11357, + "nodeType": "Return", + "src": "8133:8:30" + } + }, + { + "assignments": [ + 11360 + ], + "declarations": [ + { + "constant": false, + "id": 11360, + "mutability": "mutable", + "name": "BASIS_POINT_MAX", + "nameLocation": "8160:15:30", + "nodeType": "VariableDeclaration", + "scope": 11385, + "src": "8152:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8152:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11363, + "initialValue": { + "expression": { + "id": 11361, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "8178:9:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 11362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8188:15:30", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8162, + "src": "8178:25:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8152:51:30" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11364, + "name": "multiplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11348, + "src": "8217:10:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 11365, + "name": "BASIS_POINT_MAX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11360, + "src": "8230:15:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8217:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11370, + "nodeType": "IfStatement", + "src": "8213:80:30", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11367, + "name": "PackedUint128Math__MultiplierTooLarge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11044, + "src": "8254:37:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8254:39:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11369, + "nodeType": "RevertStatement", + "src": "8247:46:30" + } + }, + { + "assignments": [ + 11372, + 11374 + ], + "declarations": [ + { + "constant": false, + "id": 11372, + "mutability": "mutable", + "name": "x1", + "nameLocation": "8313:2:30", + "nodeType": "VariableDeclaration", + "scope": 11385, + "src": "8305:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11371, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "8305:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11374, + "mutability": "mutable", + "name": "x2", + "nameLocation": "8325:2:30", + "nodeType": "VariableDeclaration", + "scope": 11385, + "src": "8317:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11373, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "8317:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 11378, + "initialValue": { + "arguments": [ + { + "id": 11376, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11346, + "src": "8338:1:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11375, + "name": "decode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11119, + 11159 + ], + "referencedDeclaration": 11119, + "src": "8331:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint128_$_t_uint128_$", + "typeString": "function (bytes32) pure returns (uint128,uint128)" + } + }, + "id": 11377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8331:9:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8304:36:30" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8360:131:30", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8374:47:30", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x1", + "nodeType": "YulIdentifier", + "src": "8388:2:30" + }, + { + "name": "multiplier", + "nodeType": "YulIdentifier", + "src": "8392:10:30" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "8384:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "8384:19:30" + }, + { + "name": "BASIS_POINT_MAX", + "nodeType": "YulIdentifier", + "src": "8405:15:30" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8380:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "8380:41:30" + }, + "variableNames": [ + { + "name": "x1", + "nodeType": "YulIdentifier", + "src": "8374:2:30" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8434:47:30", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x2", + "nodeType": "YulIdentifier", + "src": "8448:2:30" + }, + { + "name": "multiplier", + "nodeType": "YulIdentifier", + "src": "8452:10:30" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "8444:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "8444:19:30" + }, + { + "name": "BASIS_POINT_MAX", + "nodeType": "YulIdentifier", + "src": "8465:15:30" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8440:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "8440:41:30" + }, + "variableNames": [ + { + "name": "x2", + "nodeType": "YulIdentifier", + "src": "8434:2:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11360, + "isOffset": false, + "isSlot": false, + "src": "8405:15:30", + "valueSize": 1 + }, + { + "declaration": 11360, + "isOffset": false, + "isSlot": false, + "src": "8465:15:30", + "valueSize": 1 + }, + { + "declaration": 11348, + "isOffset": false, + "isSlot": false, + "src": "8392:10:30", + "valueSize": 1 + }, + { + "declaration": 11348, + "isOffset": false, + "isSlot": false, + "src": "8452:10:30", + "valueSize": 1 + }, + { + "declaration": 11372, + "isOffset": false, + "isSlot": false, + "src": "8374:2:30", + "valueSize": 1 + }, + { + "declaration": 11372, + "isOffset": false, + "isSlot": false, + "src": "8388:2:30", + "valueSize": 1 + }, + { + "declaration": 11374, + "isOffset": false, + "isSlot": false, + "src": "8434:2:30", + "valueSize": 1 + }, + { + "declaration": 11374, + "isOffset": false, + "isSlot": false, + "src": "8448:2:30", + "valueSize": 1 + } + ], + "id": 11379, + "nodeType": "InlineAssembly", + "src": "8351:140:30" + }, + { + "expression": { + "arguments": [ + { + "id": 11381, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11372, + "src": "8515:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 11382, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11374, + "src": "8519:2:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 11380, + "name": "encode", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11067, + 11107 + ], + "referencedDeclaration": 11067, + "src": "8508:6:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_bytes32_$", + "typeString": "function (uint128,uint128) pure returns (bytes32)" + } + }, + "id": 11383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8508:14:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 11352, + "id": 11384, + "nodeType": "Return", + "src": "8501:21:30" + } + ] + }, + "documentation": { + "id": 11344, + "nodeType": "StructuredDocumentation", + "src": "7430:561:30", + "text": " @dev Multiplies an encoded bytes32 by a uint128 then divides the result by 10_000, rounding down\n The result can't overflow as the multiplier needs to be smaller or equal to 10_000\n @param x The bytes32 encoded as follows:\n [0 - 128[: x1\n [128 - 256[: x2\n @param multiplier The uint128 to multiply by (must be smaller or equal to 10_000)\n @return z The product of x and multiplier encoded as follows:\n [0 - 128[: floor((x1 * multiplier) / 10_000)\n [128 - 256[: floor((x2 * multiplier) / 10_000)" + }, + "id": 11386, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "scalarMulDivBasisPointRoundDown", + "nameLocation": "8005:31:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11346, + "mutability": "mutable", + "name": "x", + "nameLocation": "8045:1:30", + "nodeType": "VariableDeclaration", + "scope": 11386, + "src": "8037:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11345, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8037:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11348, + "mutability": "mutable", + "name": "multiplier", + "nameLocation": "8056:10:30", + "nodeType": "VariableDeclaration", + "scope": 11386, + "src": "8048:18:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11347, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "8048:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "8036:31:30" + }, + "returnParameters": { + "id": 11352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11351, + "mutability": "mutable", + "name": "z", + "nameLocation": "8099:1:30", + "nodeType": "VariableDeclaration", + "scope": 11386, + "src": "8091:9:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11350, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8091:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8090:11:30" + }, + "scope": 11387, + "src": "7996:533:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 11388, + "src": "305:8226:30", + "usedErrors": [ + 11040, + 11042, + 11044 + ], + "usedEvents": [] + } + ], + "src": "33:8499:30" + }, + "id": 30 + }, + "src/libraries/math/SafeCast.sol": { + "ast": { + "absolutePath": "src/libraries/math/SafeCast.sol", + "exportedSymbols": { + "SafeCast": [ + 12135 + ] + }, + "id": 12136, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11389, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:31" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeCast", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 11390, + "nodeType": "StructuredDocumentation", + "src": "59:141:31", + "text": " @title Liquidity Book Safe Cast Library\n @notice This library contains functions to safely cast uint256 to different uint types." + }, + "fullyImplemented": true, + "id": 12135, + "linearizedBaseContracts": [ + 12135 + ], + "name": "SafeCast", + "nameLocation": "209:8:31", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "43309043", + "id": 11392, + "name": "SafeCast__Exceeds248Bits", + "nameLocation": "230:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11391, + "nodeType": "ParameterList", + "parameters": [], + "src": "254:2:31" + }, + "src": "224:33:31" + }, + { + "errorSelector": "23168091", + "id": 11394, + "name": "SafeCast__Exceeds240Bits", + "nameLocation": "268:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11393, + "nodeType": "ParameterList", + "parameters": [], + "src": "292:2:31" + }, + "src": "262:33:31" + }, + { + "errorSelector": "e071bc6c", + "id": 11396, + "name": "SafeCast__Exceeds232Bits", + "nameLocation": "306:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11395, + "nodeType": "ParameterList", + "parameters": [], + "src": "330:2:31" + }, + "src": "300:33:31" + }, + { + "errorSelector": "c1374949", + "id": 11398, + "name": "SafeCast__Exceeds224Bits", + "nameLocation": "344:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11397, + "nodeType": "ParameterList", + "parameters": [], + "src": "368:2:31" + }, + "src": "338:33:31" + }, + { + "errorSelector": "28125e51", + "id": 11400, + "name": "SafeCast__Exceeds216Bits", + "nameLocation": "382:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11399, + "nodeType": "ParameterList", + "parameters": [], + "src": "406:2:31" + }, + "src": "376:33:31" + }, + { + "errorSelector": "e29314f0", + "id": 11402, + "name": "SafeCast__Exceeds208Bits", + "nameLocation": "420:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11401, + "nodeType": "ParameterList", + "parameters": [], + "src": "444:2:31" + }, + "src": "414:33:31" + }, + { + "errorSelector": "8c307999", + "id": 11404, + "name": "SafeCast__Exceeds200Bits", + "nameLocation": "458:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11403, + "nodeType": "ParameterList", + "parameters": [], + "src": "482:2:31" + }, + "src": "452:33:31" + }, + { + "errorSelector": "762bc6eb", + "id": 11406, + "name": "SafeCast__Exceeds192Bits", + "nameLocation": "496:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11405, + "nodeType": "ParameterList", + "parameters": [], + "src": "520:2:31" + }, + "src": "490:33:31" + }, + { + "errorSelector": "f6cedbe8", + "id": 11408, + "name": "SafeCast__Exceeds184Bits", + "nameLocation": "534:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11407, + "nodeType": "ParameterList", + "parameters": [], + "src": "558:2:31" + }, + "src": "528:33:31" + }, + { + "errorSelector": "b19778dd", + "id": 11410, + "name": "SafeCast__Exceeds176Bits", + "nameLocation": "572:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11409, + "nodeType": "ParameterList", + "parameters": [], + "src": "596:2:31" + }, + "src": "566:33:31" + }, + { + "errorSelector": "5d103a95", + "id": 11412, + "name": "SafeCast__Exceeds168Bits", + "nameLocation": "610:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11411, + "nodeType": "ParameterList", + "parameters": [], + "src": "634:2:31" + }, + "src": "604:33:31" + }, + { + "errorSelector": "2de55695", + "id": 11414, + "name": "SafeCast__Exceeds160Bits", + "nameLocation": "648:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11413, + "nodeType": "ParameterList", + "parameters": [], + "src": "672:2:31" + }, + "src": "642:33:31" + }, + { + "errorSelector": "2176a06f", + "id": 11416, + "name": "SafeCast__Exceeds152Bits", + "nameLocation": "686:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11415, + "nodeType": "ParameterList", + "parameters": [], + "src": "710:2:31" + }, + "src": "680:33:31" + }, + { + "errorSelector": "7696a631", + "id": 11418, + "name": "SafeCast__Exceeds144Bits", + "nameLocation": "724:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11417, + "nodeType": "ParameterList", + "parameters": [], + "src": "748:2:31" + }, + "src": "718:33:31" + }, + { + "errorSelector": "febf6c60", + "id": 11420, + "name": "SafeCast__Exceeds136Bits", + "nameLocation": "762:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11419, + "nodeType": "ParameterList", + "parameters": [], + "src": "786:2:31" + }, + "src": "756:33:31" + }, + { + "errorSelector": "bd176cf4", + "id": 11422, + "name": "SafeCast__Exceeds128Bits", + "nameLocation": "800:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11421, + "nodeType": "ParameterList", + "parameters": [], + "src": "824:2:31" + }, + "src": "794:33:31" + }, + { + "errorSelector": "e3780e2a", + "id": 11424, + "name": "SafeCast__Exceeds120Bits", + "nameLocation": "838:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11423, + "nodeType": "ParameterList", + "parameters": [], + "src": "862:2:31" + }, + "src": "832:33:31" + }, + { + "errorSelector": "2887faea", + "id": 11426, + "name": "SafeCast__Exceeds112Bits", + "nameLocation": "876:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11425, + "nodeType": "ParameterList", + "parameters": [], + "src": "900:2:31" + }, + "src": "870:33:31" + }, + { + "errorSelector": "10f74066", + "id": 11428, + "name": "SafeCast__Exceeds104Bits", + "nameLocation": "914:24:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11427, + "nodeType": "ParameterList", + "parameters": [], + "src": "938:2:31" + }, + "src": "908:33:31" + }, + { + "errorSelector": "64590320", + "id": 11430, + "name": "SafeCast__Exceeds96Bits", + "nameLocation": "952:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11429, + "nodeType": "ParameterList", + "parameters": [], + "src": "975:2:31" + }, + "src": "946:32:31" + }, + { + "errorSelector": "4befa826", + "id": 11432, + "name": "SafeCast__Exceeds88Bits", + "nameLocation": "989:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11431, + "nodeType": "ParameterList", + "parameters": [], + "src": "1012:2:31" + }, + "src": "983:32:31" + }, + { + "errorSelector": "b5ceabe8", + "id": 11434, + "name": "SafeCast__Exceeds80Bits", + "nameLocation": "1026:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11433, + "nodeType": "ParameterList", + "parameters": [], + "src": "1049:2:31" + }, + "src": "1020:32:31" + }, + { + "errorSelector": "622e0cc2", + "id": 11436, + "name": "SafeCast__Exceeds72Bits", + "nameLocation": "1063:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11435, + "nodeType": "ParameterList", + "parameters": [], + "src": "1086:2:31" + }, + "src": "1057:32:31" + }, + { + "errorSelector": "cc21feb9", + "id": 11438, + "name": "SafeCast__Exceeds64Bits", + "nameLocation": "1100:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11437, + "nodeType": "ParameterList", + "parameters": [], + "src": "1123:2:31" + }, + "src": "1094:32:31" + }, + { + "errorSelector": "8900c539", + "id": 11440, + "name": "SafeCast__Exceeds56Bits", + "nameLocation": "1137:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11439, + "nodeType": "ParameterList", + "parameters": [], + "src": "1160:2:31" + }, + "src": "1131:32:31" + }, + { + "errorSelector": "066f0d4c", + "id": 11442, + "name": "SafeCast__Exceeds48Bits", + "nameLocation": "1174:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11441, + "nodeType": "ParameterList", + "parameters": [], + "src": "1197:2:31" + }, + "src": "1168:32:31" + }, + { + "errorSelector": "a1b7f90e", + "id": 11444, + "name": "SafeCast__Exceeds40Bits", + "nameLocation": "1211:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11443, + "nodeType": "ParameterList", + "parameters": [], + "src": "1234:2:31" + }, + "src": "1205:32:31" + }, + { + "errorSelector": "4355cdd0", + "id": 11446, + "name": "SafeCast__Exceeds32Bits", + "nameLocation": "1248:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11445, + "nodeType": "ParameterList", + "parameters": [], + "src": "1271:2:31" + }, + "src": "1242:32:31" + }, + { + "errorSelector": "9b636415", + "id": 11448, + "name": "SafeCast__Exceeds24Bits", + "nameLocation": "1285:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11447, + "nodeType": "ParameterList", + "parameters": [], + "src": "1308:2:31" + }, + "src": "1279:32:31" + }, + { + "errorSelector": "64ae406d", + "id": 11450, + "name": "SafeCast__Exceeds16Bits", + "nameLocation": "1322:23:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11449, + "nodeType": "ParameterList", + "parameters": [], + "src": "1345:2:31" + }, + "src": "1316:32:31" + }, + { + "errorSelector": "a1102bbf", + "id": 11452, + "name": "SafeCast__Exceeds8Bits", + "nameLocation": "1359:22:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11451, + "nodeType": "ParameterList", + "parameters": [], + "src": "1381:2:31" + }, + "src": "1353:31:31" + }, + { + "body": { + "id": 11473, + "nodeType": "Block", + "src": "1618:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11460, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11458, + "src": "1633:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11463, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11455, + "src": "1645:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1637:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + }, + "typeName": { + "id": 11461, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1637:7:31", + "typeDescriptions": {} + } + }, + "id": 11464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1637:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "src": "1633:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + } + ], + "id": 11466, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1632:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11467, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11455, + "src": "1652:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1632:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11472, + "nodeType": "IfStatement", + "src": "1628:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11469, + "name": "SafeCast__Exceeds248Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11392, + "src": "1662:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1662:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11471, + "nodeType": "RevertStatement", + "src": "1655:33:31" + } + } + ] + }, + "documentation": { + "id": 11453, + "nodeType": "StructuredDocumentation", + "src": "1390:161:31", + "text": " @dev Returns x on uint248 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint248" + }, + "id": 11474, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe248", + "nameLocation": "1565:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11455, + "mutability": "mutable", + "name": "x", + "nameLocation": "1581:1:31", + "nodeType": "VariableDeclaration", + "scope": 11474, + "src": "1573:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1573:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1572:11:31" + }, + "returnParameters": { + "id": 11459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11458, + "mutability": "mutable", + "name": "y", + "nameLocation": "1615:1:31", + "nodeType": "VariableDeclaration", + "scope": 11474, + "src": "1607:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + }, + "typeName": { + "id": 11457, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1607:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "visibility": "internal" + } + ], + "src": "1606:11:31" + }, + "scope": 12135, + "src": "1556:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11495, + "nodeType": "Block", + "src": "1929:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11482, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11480, + "src": "1944:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11485, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11477, + "src": "1956:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1948:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + }, + "typeName": { + "id": 11483, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "1948:7:31", + "typeDescriptions": {} + } + }, + "id": 11486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1948:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "src": "1944:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + } + ], + "id": 11488, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1943:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11489, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11477, + "src": "1963:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1943:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11494, + "nodeType": "IfStatement", + "src": "1939:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11491, + "name": "SafeCast__Exceeds240Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11394, + "src": "1973:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1973:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11493, + "nodeType": "RevertStatement", + "src": "1966:33:31" + } + } + ] + }, + "documentation": { + "id": 11475, + "nodeType": "StructuredDocumentation", + "src": "1701:161:31", + "text": " @dev Returns x on uint240 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint240" + }, + "id": 11496, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe240", + "nameLocation": "1876:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11477, + "mutability": "mutable", + "name": "x", + "nameLocation": "1892:1:31", + "nodeType": "VariableDeclaration", + "scope": 11496, + "src": "1884:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11476, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1884:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1883:11:31" + }, + "returnParameters": { + "id": 11481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11480, + "mutability": "mutable", + "name": "y", + "nameLocation": "1926:1:31", + "nodeType": "VariableDeclaration", + "scope": 11496, + "src": "1918:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + }, + "typeName": { + "id": 11479, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "1918:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "visibility": "internal" + } + ], + "src": "1917:11:31" + }, + "scope": 12135, + "src": "1867:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11517, + "nodeType": "Block", + "src": "2240:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11504, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11502, + "src": "2255:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11507, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11499, + "src": "2267:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2259:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + }, + "typeName": { + "id": 11505, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2259:7:31", + "typeDescriptions": {} + } + }, + "id": 11508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2259:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "src": "2255:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + } + ], + "id": 11510, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2254:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11511, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11499, + "src": "2274:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2254:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11516, + "nodeType": "IfStatement", + "src": "2250:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11513, + "name": "SafeCast__Exceeds232Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11396, + "src": "2284:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2284:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11515, + "nodeType": "RevertStatement", + "src": "2277:33:31" + } + } + ] + }, + "documentation": { + "id": 11497, + "nodeType": "StructuredDocumentation", + "src": "2012:161:31", + "text": " @dev Returns x on uint232 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint232" + }, + "id": 11518, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe232", + "nameLocation": "2187:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11499, + "mutability": "mutable", + "name": "x", + "nameLocation": "2203:1:31", + "nodeType": "VariableDeclaration", + "scope": 11518, + "src": "2195:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2195:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2194:11:31" + }, + "returnParameters": { + "id": 11503, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11502, + "mutability": "mutable", + "name": "y", + "nameLocation": "2237:1:31", + "nodeType": "VariableDeclaration", + "scope": 11518, + "src": "2229:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + }, + "typeName": { + "id": 11501, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2229:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "visibility": "internal" + } + ], + "src": "2228:11:31" + }, + "scope": 12135, + "src": "2178:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11539, + "nodeType": "Block", + "src": "2551:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11526, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11524, + "src": "2566:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11529, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11521, + "src": "2578:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2570:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 11527, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "2570:7:31", + "typeDescriptions": {} + } + }, + "id": 11530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2570:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "2566:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "id": 11532, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2565:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11533, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11521, + "src": "2585:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11538, + "nodeType": "IfStatement", + "src": "2561:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11535, + "name": "SafeCast__Exceeds224Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11398, + "src": "2595:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2595:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11537, + "nodeType": "RevertStatement", + "src": "2588:33:31" + } + } + ] + }, + "documentation": { + "id": 11519, + "nodeType": "StructuredDocumentation", + "src": "2323:161:31", + "text": " @dev Returns x on uint224 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint224" + }, + "id": 11540, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe224", + "nameLocation": "2498:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11521, + "mutability": "mutable", + "name": "x", + "nameLocation": "2514:1:31", + "nodeType": "VariableDeclaration", + "scope": 11540, + "src": "2506:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2506:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2505:11:31" + }, + "returnParameters": { + "id": 11525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11524, + "mutability": "mutable", + "name": "y", + "nameLocation": "2548:1:31", + "nodeType": "VariableDeclaration", + "scope": 11540, + "src": "2540:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 11523, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "2540:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + } + ], + "src": "2539:11:31" + }, + "scope": 12135, + "src": "2489:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11561, + "nodeType": "Block", + "src": "2862:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11548, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11546, + "src": "2877:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11551, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11543, + "src": "2889:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2881:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + }, + "typeName": { + "id": 11549, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "2881:7:31", + "typeDescriptions": {} + } + }, + "id": 11552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2881:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "src": "2877:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + } + ], + "id": 11554, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2876:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11555, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11543, + "src": "2896:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2876:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11560, + "nodeType": "IfStatement", + "src": "2872:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11557, + "name": "SafeCast__Exceeds216Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11400, + "src": "2906:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2906:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11559, + "nodeType": "RevertStatement", + "src": "2899:33:31" + } + } + ] + }, + "documentation": { + "id": 11541, + "nodeType": "StructuredDocumentation", + "src": "2634:161:31", + "text": " @dev Returns x on uint216 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint216" + }, + "id": 11562, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe216", + "nameLocation": "2809:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11543, + "mutability": "mutable", + "name": "x", + "nameLocation": "2825:1:31", + "nodeType": "VariableDeclaration", + "scope": 11562, + "src": "2817:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2817:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2816:11:31" + }, + "returnParameters": { + "id": 11547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11546, + "mutability": "mutable", + "name": "y", + "nameLocation": "2859:1:31", + "nodeType": "VariableDeclaration", + "scope": 11562, + "src": "2851:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + }, + "typeName": { + "id": 11545, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "2851:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "visibility": "internal" + } + ], + "src": "2850:11:31" + }, + "scope": 12135, + "src": "2800:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11583, + "nodeType": "Block", + "src": "3173:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11570, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11568, + "src": "3188:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11573, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11565, + "src": "3200:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3192:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + }, + "typeName": { + "id": 11571, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "3192:7:31", + "typeDescriptions": {} + } + }, + "id": 11574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3192:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "src": "3188:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + } + ], + "id": 11576, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3187:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11577, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11565, + "src": "3207:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3187:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11582, + "nodeType": "IfStatement", + "src": "3183:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11579, + "name": "SafeCast__Exceeds208Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11402, + "src": "3217:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3217:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11581, + "nodeType": "RevertStatement", + "src": "3210:33:31" + } + } + ] + }, + "documentation": { + "id": 11563, + "nodeType": "StructuredDocumentation", + "src": "2945:161:31", + "text": " @dev Returns x on uint208 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint208" + }, + "id": 11584, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe208", + "nameLocation": "3120:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11565, + "mutability": "mutable", + "name": "x", + "nameLocation": "3136:1:31", + "nodeType": "VariableDeclaration", + "scope": 11584, + "src": "3128:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3128:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3127:11:31" + }, + "returnParameters": { + "id": 11569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11568, + "mutability": "mutable", + "name": "y", + "nameLocation": "3170:1:31", + "nodeType": "VariableDeclaration", + "scope": 11584, + "src": "3162:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + }, + "typeName": { + "id": 11567, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "3162:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "visibility": "internal" + } + ], + "src": "3161:11:31" + }, + "scope": 12135, + "src": "3111:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11605, + "nodeType": "Block", + "src": "3484:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11592, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11590, + "src": "3499:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11595, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11587, + "src": "3511:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3503:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + }, + "typeName": { + "id": 11593, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "3503:7:31", + "typeDescriptions": {} + } + }, + "id": 11596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3503:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "src": "3499:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + } + ], + "id": 11598, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3498:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11599, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11587, + "src": "3518:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3498:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11604, + "nodeType": "IfStatement", + "src": "3494:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11601, + "name": "SafeCast__Exceeds200Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11404, + "src": "3528:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3528:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11603, + "nodeType": "RevertStatement", + "src": "3521:33:31" + } + } + ] + }, + "documentation": { + "id": 11585, + "nodeType": "StructuredDocumentation", + "src": "3256:161:31", + "text": " @dev Returns x on uint200 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint200" + }, + "id": 11606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe200", + "nameLocation": "3431:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11587, + "mutability": "mutable", + "name": "x", + "nameLocation": "3447:1:31", + "nodeType": "VariableDeclaration", + "scope": 11606, + "src": "3439:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3439:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3438:11:31" + }, + "returnParameters": { + "id": 11591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11590, + "mutability": "mutable", + "name": "y", + "nameLocation": "3481:1:31", + "nodeType": "VariableDeclaration", + "scope": 11606, + "src": "3473:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + }, + "typeName": { + "id": 11589, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "3473:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "visibility": "internal" + } + ], + "src": "3472:11:31" + }, + "scope": 12135, + "src": "3422:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11627, + "nodeType": "Block", + "src": "3795:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11614, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11612, + "src": "3810:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11617, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11609, + "src": "3822:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3814:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + }, + "typeName": { + "id": 11615, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "3814:7:31", + "typeDescriptions": {} + } + }, + "id": 11618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3814:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "src": "3810:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + } + ], + "id": 11620, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3809:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11621, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11609, + "src": "3829:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3809:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11626, + "nodeType": "IfStatement", + "src": "3805:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11623, + "name": "SafeCast__Exceeds192Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11406, + "src": "3839:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3839:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11625, + "nodeType": "RevertStatement", + "src": "3832:33:31" + } + } + ] + }, + "documentation": { + "id": 11607, + "nodeType": "StructuredDocumentation", + "src": "3567:161:31", + "text": " @dev Returns x on uint192 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint192" + }, + "id": 11628, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe192", + "nameLocation": "3742:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11609, + "mutability": "mutable", + "name": "x", + "nameLocation": "3758:1:31", + "nodeType": "VariableDeclaration", + "scope": 11628, + "src": "3750:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11608, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3750:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3749:11:31" + }, + "returnParameters": { + "id": 11613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11612, + "mutability": "mutable", + "name": "y", + "nameLocation": "3792:1:31", + "nodeType": "VariableDeclaration", + "scope": 11628, + "src": "3784:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + }, + "typeName": { + "id": 11611, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "3784:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "visibility": "internal" + } + ], + "src": "3783:11:31" + }, + "scope": 12135, + "src": "3733:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11649, + "nodeType": "Block", + "src": "4106:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11636, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11634, + "src": "4121:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11639, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11631, + "src": "4133:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11638, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4125:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + }, + "typeName": { + "id": 11637, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "4125:7:31", + "typeDescriptions": {} + } + }, + "id": 11640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4125:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "src": "4121:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + } + ], + "id": 11642, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4120:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11643, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11631, + "src": "4140:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4120:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11648, + "nodeType": "IfStatement", + "src": "4116:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11645, + "name": "SafeCast__Exceeds184Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11408, + "src": "4150:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4150:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11647, + "nodeType": "RevertStatement", + "src": "4143:33:31" + } + } + ] + }, + "documentation": { + "id": 11629, + "nodeType": "StructuredDocumentation", + "src": "3878:161:31", + "text": " @dev Returns x on uint184 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint184" + }, + "id": 11650, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe184", + "nameLocation": "4053:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11631, + "mutability": "mutable", + "name": "x", + "nameLocation": "4069:1:31", + "nodeType": "VariableDeclaration", + "scope": 11650, + "src": "4061:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11630, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4061:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4060:11:31" + }, + "returnParameters": { + "id": 11635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11634, + "mutability": "mutable", + "name": "y", + "nameLocation": "4103:1:31", + "nodeType": "VariableDeclaration", + "scope": 11650, + "src": "4095:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "typeName": { + "id": 11633, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "4095:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "visibility": "internal" + } + ], + "src": "4094:11:31" + }, + "scope": 12135, + "src": "4044:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11671, + "nodeType": "Block", + "src": "4417:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11658, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11656, + "src": "4432:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11661, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11653, + "src": "4444:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4436:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + }, + "typeName": { + "id": 11659, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "4436:7:31", + "typeDescriptions": {} + } + }, + "id": 11662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4436:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "src": "4432:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + } + ], + "id": 11664, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4431:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11665, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11653, + "src": "4451:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4431:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11670, + "nodeType": "IfStatement", + "src": "4427:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11667, + "name": "SafeCast__Exceeds176Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11410, + "src": "4461:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4461:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11669, + "nodeType": "RevertStatement", + "src": "4454:33:31" + } + } + ] + }, + "documentation": { + "id": 11651, + "nodeType": "StructuredDocumentation", + "src": "4189:161:31", + "text": " @dev Returns x on uint176 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint176" + }, + "id": 11672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe176", + "nameLocation": "4364:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11653, + "mutability": "mutable", + "name": "x", + "nameLocation": "4380:1:31", + "nodeType": "VariableDeclaration", + "scope": 11672, + "src": "4372:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4372:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4371:11:31" + }, + "returnParameters": { + "id": 11657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11656, + "mutability": "mutable", + "name": "y", + "nameLocation": "4414:1:31", + "nodeType": "VariableDeclaration", + "scope": 11672, + "src": "4406:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + }, + "typeName": { + "id": 11655, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "4406:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "visibility": "internal" + } + ], + "src": "4405:11:31" + }, + "scope": 12135, + "src": "4355:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11693, + "nodeType": "Block", + "src": "4728:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11680, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11678, + "src": "4743:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11683, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11675, + "src": "4755:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4747:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + }, + "typeName": { + "id": 11681, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "4747:7:31", + "typeDescriptions": {} + } + }, + "id": 11684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4747:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "src": "4743:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + } + ], + "id": 11686, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4742:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11687, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11675, + "src": "4762:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4742:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11692, + "nodeType": "IfStatement", + "src": "4738:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11689, + "name": "SafeCast__Exceeds168Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11412, + "src": "4772:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4772:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11691, + "nodeType": "RevertStatement", + "src": "4765:33:31" + } + } + ] + }, + "documentation": { + "id": 11673, + "nodeType": "StructuredDocumentation", + "src": "4500:161:31", + "text": " @dev Returns x on uint168 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint168" + }, + "id": 11694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe168", + "nameLocation": "4675:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11675, + "mutability": "mutable", + "name": "x", + "nameLocation": "4691:1:31", + "nodeType": "VariableDeclaration", + "scope": 11694, + "src": "4683:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4683:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4682:11:31" + }, + "returnParameters": { + "id": 11679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11678, + "mutability": "mutable", + "name": "y", + "nameLocation": "4725:1:31", + "nodeType": "VariableDeclaration", + "scope": 11694, + "src": "4717:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + }, + "typeName": { + "id": 11677, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "4717:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "visibility": "internal" + } + ], + "src": "4716:11:31" + }, + "scope": 12135, + "src": "4666:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11715, + "nodeType": "Block", + "src": "5039:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11702, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11700, + "src": "5054:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11705, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "5066:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5058:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 11703, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "5058:7:31", + "typeDescriptions": {} + } + }, + "id": 11706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5058:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "5054:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 11708, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5053:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11709, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11697, + "src": "5073:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5053:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11714, + "nodeType": "IfStatement", + "src": "5049:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11711, + "name": "SafeCast__Exceeds160Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11414, + "src": "5083:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5083:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11713, + "nodeType": "RevertStatement", + "src": "5076:33:31" + } + } + ] + }, + "documentation": { + "id": 11695, + "nodeType": "StructuredDocumentation", + "src": "4811:161:31", + "text": " @dev Returns x on uint160 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint160" + }, + "id": 11716, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe160", + "nameLocation": "4986:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11697, + "mutability": "mutable", + "name": "x", + "nameLocation": "5002:1:31", + "nodeType": "VariableDeclaration", + "scope": 11716, + "src": "4994:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4994:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4993:11:31" + }, + "returnParameters": { + "id": 11701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11700, + "mutability": "mutable", + "name": "y", + "nameLocation": "5036:1:31", + "nodeType": "VariableDeclaration", + "scope": 11716, + "src": "5028:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 11699, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "5028:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + } + ], + "src": "5027:11:31" + }, + "scope": 12135, + "src": "4977:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11737, + "nodeType": "Block", + "src": "5350:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11724, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11722, + "src": "5365:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11727, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11719, + "src": "5377:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5369:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + }, + "typeName": { + "id": 11725, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "5369:7:31", + "typeDescriptions": {} + } + }, + "id": 11728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5369:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "src": "5365:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + } + ], + "id": 11730, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5364:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11731, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11719, + "src": "5384:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5364:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11736, + "nodeType": "IfStatement", + "src": "5360:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11733, + "name": "SafeCast__Exceeds152Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11416, + "src": "5394:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5394:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11735, + "nodeType": "RevertStatement", + "src": "5387:33:31" + } + } + ] + }, + "documentation": { + "id": 11717, + "nodeType": "StructuredDocumentation", + "src": "5122:161:31", + "text": " @dev Returns x on uint152 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint152" + }, + "id": 11738, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe152", + "nameLocation": "5297:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11719, + "mutability": "mutable", + "name": "x", + "nameLocation": "5313:1:31", + "nodeType": "VariableDeclaration", + "scope": 11738, + "src": "5305:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5305:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5304:11:31" + }, + "returnParameters": { + "id": 11723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11722, + "mutability": "mutable", + "name": "y", + "nameLocation": "5347:1:31", + "nodeType": "VariableDeclaration", + "scope": 11738, + "src": "5339:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + }, + "typeName": { + "id": 11721, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "5339:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "visibility": "internal" + } + ], + "src": "5338:11:31" + }, + "scope": 12135, + "src": "5288:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11759, + "nodeType": "Block", + "src": "5661:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11746, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11744, + "src": "5676:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11749, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11741, + "src": "5688:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5680:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + }, + "typeName": { + "id": 11747, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "5680:7:31", + "typeDescriptions": {} + } + }, + "id": 11750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5680:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "src": "5676:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + } + ], + "id": 11752, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5675:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11753, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11741, + "src": "5695:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5675:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11758, + "nodeType": "IfStatement", + "src": "5671:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11755, + "name": "SafeCast__Exceeds144Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11418, + "src": "5705:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5705:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11757, + "nodeType": "RevertStatement", + "src": "5698:33:31" + } + } + ] + }, + "documentation": { + "id": 11739, + "nodeType": "StructuredDocumentation", + "src": "5433:161:31", + "text": " @dev Returns x on uint144 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint144" + }, + "id": 11760, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe144", + "nameLocation": "5608:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11741, + "mutability": "mutable", + "name": "x", + "nameLocation": "5624:1:31", + "nodeType": "VariableDeclaration", + "scope": 11760, + "src": "5616:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5616:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5615:11:31" + }, + "returnParameters": { + "id": 11745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11744, + "mutability": "mutable", + "name": "y", + "nameLocation": "5658:1:31", + "nodeType": "VariableDeclaration", + "scope": 11760, + "src": "5650:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + }, + "typeName": { + "id": 11743, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "5650:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "visibility": "internal" + } + ], + "src": "5649:11:31" + }, + "scope": 12135, + "src": "5599:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11781, + "nodeType": "Block", + "src": "5972:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11768, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11766, + "src": "5987:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11771, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11763, + "src": "5999:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5991:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + }, + "typeName": { + "id": 11769, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "5991:7:31", + "typeDescriptions": {} + } + }, + "id": 11772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5991:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "src": "5987:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + } + ], + "id": 11774, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5986:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11775, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11763, + "src": "6006:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5986:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11780, + "nodeType": "IfStatement", + "src": "5982:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11777, + "name": "SafeCast__Exceeds136Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11420, + "src": "6016:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6016:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11779, + "nodeType": "RevertStatement", + "src": "6009:33:31" + } + } + ] + }, + "documentation": { + "id": 11761, + "nodeType": "StructuredDocumentation", + "src": "5744:161:31", + "text": " @dev Returns x on uint136 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint136" + }, + "id": 11782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe136", + "nameLocation": "5919:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11763, + "mutability": "mutable", + "name": "x", + "nameLocation": "5935:1:31", + "nodeType": "VariableDeclaration", + "scope": 11782, + "src": "5927:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5927:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5926:11:31" + }, + "returnParameters": { + "id": 11767, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11766, + "mutability": "mutable", + "name": "y", + "nameLocation": "5969:1:31", + "nodeType": "VariableDeclaration", + "scope": 11782, + "src": "5961:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + }, + "typeName": { + "id": 11765, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "5961:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "visibility": "internal" + } + ], + "src": "5960:11:31" + }, + "scope": 12135, + "src": "5910:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11803, + "nodeType": "Block", + "src": "6283:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11790, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11788, + "src": "6298:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11793, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11785, + "src": "6310:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6302:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 11791, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6302:7:31", + "typeDescriptions": {} + } + }, + "id": 11794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6302:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "6298:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 11796, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6297:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11797, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11785, + "src": "6317:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6297:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11802, + "nodeType": "IfStatement", + "src": "6293:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11799, + "name": "SafeCast__Exceeds128Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11422, + "src": "6327:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6327:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11801, + "nodeType": "RevertStatement", + "src": "6320:33:31" + } + } + ] + }, + "documentation": { + "id": 11783, + "nodeType": "StructuredDocumentation", + "src": "6055:161:31", + "text": " @dev Returns x on uint128 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint128" + }, + "id": 11804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe128", + "nameLocation": "6230:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11785, + "mutability": "mutable", + "name": "x", + "nameLocation": "6246:1:31", + "nodeType": "VariableDeclaration", + "scope": 11804, + "src": "6238:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6238:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6237:11:31" + }, + "returnParameters": { + "id": 11789, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11788, + "mutability": "mutable", + "name": "y", + "nameLocation": "6280:1:31", + "nodeType": "VariableDeclaration", + "scope": 11804, + "src": "6272:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 11787, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6272:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "6271:11:31" + }, + "scope": 12135, + "src": "6221:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11825, + "nodeType": "Block", + "src": "6594:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11812, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11810, + "src": "6609:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11815, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11807, + "src": "6621:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6613:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + }, + "typeName": { + "id": 11813, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "6613:7:31", + "typeDescriptions": {} + } + }, + "id": 11816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6613:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "src": "6609:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + } + ], + "id": 11818, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6608:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11819, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11807, + "src": "6628:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6608:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11824, + "nodeType": "IfStatement", + "src": "6604:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11821, + "name": "SafeCast__Exceeds120Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11424, + "src": "6638:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6638:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11823, + "nodeType": "RevertStatement", + "src": "6631:33:31" + } + } + ] + }, + "documentation": { + "id": 11805, + "nodeType": "StructuredDocumentation", + "src": "6366:161:31", + "text": " @dev Returns x on uint120 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint120" + }, + "id": 11826, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe120", + "nameLocation": "6541:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11807, + "mutability": "mutable", + "name": "x", + "nameLocation": "6557:1:31", + "nodeType": "VariableDeclaration", + "scope": 11826, + "src": "6549:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6549:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6548:11:31" + }, + "returnParameters": { + "id": 11811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11810, + "mutability": "mutable", + "name": "y", + "nameLocation": "6591:1:31", + "nodeType": "VariableDeclaration", + "scope": 11826, + "src": "6583:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + }, + "typeName": { + "id": 11809, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "6583:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "visibility": "internal" + } + ], + "src": "6582:11:31" + }, + "scope": 12135, + "src": "6532:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11847, + "nodeType": "Block", + "src": "6905:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11834, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11832, + "src": "6920:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11837, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11829, + "src": "6932:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6924:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 11835, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "6924:7:31", + "typeDescriptions": {} + } + }, + "id": 11838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6924:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "6920:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "id": 11840, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6919:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11841, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11829, + "src": "6939:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6919:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11846, + "nodeType": "IfStatement", + "src": "6915:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11843, + "name": "SafeCast__Exceeds112Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11426, + "src": "6949:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6949:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11845, + "nodeType": "RevertStatement", + "src": "6942:33:31" + } + } + ] + }, + "documentation": { + "id": 11827, + "nodeType": "StructuredDocumentation", + "src": "6677:161:31", + "text": " @dev Returns x on uint112 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint112" + }, + "id": 11848, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe112", + "nameLocation": "6852:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11829, + "mutability": "mutable", + "name": "x", + "nameLocation": "6868:1:31", + "nodeType": "VariableDeclaration", + "scope": 11848, + "src": "6860:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6860:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6859:11:31" + }, + "returnParameters": { + "id": 11833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11832, + "mutability": "mutable", + "name": "y", + "nameLocation": "6902:1:31", + "nodeType": "VariableDeclaration", + "scope": 11848, + "src": "6894:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 11831, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "6894:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "6893:11:31" + }, + "scope": 12135, + "src": "6843:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11869, + "nodeType": "Block", + "src": "7216:77:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11856, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11854, + "src": "7231:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11859, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11851, + "src": "7243:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7235:7:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + }, + "typeName": { + "id": 11857, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "7235:7:31", + "typeDescriptions": {} + } + }, + "id": 11860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7235:10:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "src": "7231:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + } + ], + "id": 11862, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7230:16:31", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11863, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11851, + "src": "7250:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7230:21:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11868, + "nodeType": "IfStatement", + "src": "7226:60:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11865, + "name": "SafeCast__Exceeds104Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11428, + "src": "7260:24:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7260:26:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11867, + "nodeType": "RevertStatement", + "src": "7253:33:31" + } + } + ] + }, + "documentation": { + "id": 11849, + "nodeType": "StructuredDocumentation", + "src": "6988:161:31", + "text": " @dev Returns x on uint104 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint104" + }, + "id": 11870, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe104", + "nameLocation": "7163:7:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11851, + "mutability": "mutable", + "name": "x", + "nameLocation": "7179:1:31", + "nodeType": "VariableDeclaration", + "scope": 11870, + "src": "7171:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7171:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7170:11:31" + }, + "returnParameters": { + "id": 11855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11854, + "mutability": "mutable", + "name": "y", + "nameLocation": "7213:1:31", + "nodeType": "VariableDeclaration", + "scope": 11870, + "src": "7205:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + }, + "typeName": { + "id": 11853, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "7205:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "visibility": "internal" + } + ], + "src": "7204:11:31" + }, + "scope": 12135, + "src": "7154:139:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11891, + "nodeType": "Block", + "src": "7523:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11878, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11876, + "src": "7538:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11881, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11873, + "src": "7549:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7542:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + }, + "typeName": { + "id": 11879, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "7542:6:31", + "typeDescriptions": {} + } + }, + "id": 11882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7542:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "src": "7538:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + } + ], + "id": 11884, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7537:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11885, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11873, + "src": "7556:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7537:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11890, + "nodeType": "IfStatement", + "src": "7533:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11887, + "name": "SafeCast__Exceeds96Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11430, + "src": "7566:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7566:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11889, + "nodeType": "RevertStatement", + "src": "7559:32:31" + } + } + ] + }, + "documentation": { + "id": 11871, + "nodeType": "StructuredDocumentation", + "src": "7299:159:31", + "text": " @dev Returns x on uint96 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint96" + }, + "id": 11892, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe96", + "nameLocation": "7472:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11873, + "mutability": "mutable", + "name": "x", + "nameLocation": "7487:1:31", + "nodeType": "VariableDeclaration", + "scope": 11892, + "src": "7479:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11872, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7479:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7478:11:31" + }, + "returnParameters": { + "id": 11877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11876, + "mutability": "mutable", + "name": "y", + "nameLocation": "7520:1:31", + "nodeType": "VariableDeclaration", + "scope": 11892, + "src": "7513:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 11875, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "7513:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "visibility": "internal" + } + ], + "src": "7512:10:31" + }, + "scope": 12135, + "src": "7463:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11913, + "nodeType": "Block", + "src": "7828:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11900, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11898, + "src": "7843:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11903, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11895, + "src": "7854:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7847:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + }, + "typeName": { + "id": 11901, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "7847:6:31", + "typeDescriptions": {} + } + }, + "id": 11904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7847:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "src": "7843:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + } + ], + "id": 11906, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7842:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11907, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11895, + "src": "7861:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7842:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11912, + "nodeType": "IfStatement", + "src": "7838:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11909, + "name": "SafeCast__Exceeds88Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11432, + "src": "7871:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7871:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11911, + "nodeType": "RevertStatement", + "src": "7864:32:31" + } + } + ] + }, + "documentation": { + "id": 11893, + "nodeType": "StructuredDocumentation", + "src": "7604:159:31", + "text": " @dev Returns x on uint88 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint88" + }, + "id": 11914, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe88", + "nameLocation": "7777:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11896, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11895, + "mutability": "mutable", + "name": "x", + "nameLocation": "7792:1:31", + "nodeType": "VariableDeclaration", + "scope": 11914, + "src": "7784:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11894, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7784:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7783:11:31" + }, + "returnParameters": { + "id": 11899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11898, + "mutability": "mutable", + "name": "y", + "nameLocation": "7825:1:31", + "nodeType": "VariableDeclaration", + "scope": 11914, + "src": "7818:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + }, + "typeName": { + "id": 11897, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "7818:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "visibility": "internal" + } + ], + "src": "7817:10:31" + }, + "scope": 12135, + "src": "7768:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11935, + "nodeType": "Block", + "src": "8133:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11922, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11920, + "src": "8148:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11925, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11917, + "src": "8159:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8152:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + }, + "typeName": { + "id": 11923, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "8152:6:31", + "typeDescriptions": {} + } + }, + "id": 11926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8152:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "src": "8148:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + } + ], + "id": 11928, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8147:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11929, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11917, + "src": "8166:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8147:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11934, + "nodeType": "IfStatement", + "src": "8143:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11931, + "name": "SafeCast__Exceeds80Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11434, + "src": "8176:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8176:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11933, + "nodeType": "RevertStatement", + "src": "8169:32:31" + } + } + ] + }, + "documentation": { + "id": 11915, + "nodeType": "StructuredDocumentation", + "src": "7909:159:31", + "text": " @dev Returns x on uint80 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint80" + }, + "id": 11936, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe80", + "nameLocation": "8082:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11917, + "mutability": "mutable", + "name": "x", + "nameLocation": "8097:1:31", + "nodeType": "VariableDeclaration", + "scope": 11936, + "src": "8089:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11916, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8089:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8088:11:31" + }, + "returnParameters": { + "id": 11921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11920, + "mutability": "mutable", + "name": "y", + "nameLocation": "8130:1:31", + "nodeType": "VariableDeclaration", + "scope": 11936, + "src": "8123:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + }, + "typeName": { + "id": 11919, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "8123:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "visibility": "internal" + } + ], + "src": "8122:10:31" + }, + "scope": 12135, + "src": "8073:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11957, + "nodeType": "Block", + "src": "8438:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11944, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11942, + "src": "8453:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11947, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11939, + "src": "8464:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8457:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 11945, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "8457:6:31", + "typeDescriptions": {} + } + }, + "id": 11948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8457:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "src": "8453:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + } + ], + "id": 11950, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8452:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11951, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11939, + "src": "8471:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8452:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11956, + "nodeType": "IfStatement", + "src": "8448:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11953, + "name": "SafeCast__Exceeds72Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11436, + "src": "8481:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8481:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11955, + "nodeType": "RevertStatement", + "src": "8474:32:31" + } + } + ] + }, + "documentation": { + "id": 11937, + "nodeType": "StructuredDocumentation", + "src": "8214:159:31", + "text": " @dev Returns x on uint72 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint72" + }, + "id": 11958, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe72", + "nameLocation": "8387:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11939, + "mutability": "mutable", + "name": "x", + "nameLocation": "8402:1:31", + "nodeType": "VariableDeclaration", + "scope": 11958, + "src": "8394:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11938, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8394:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8393:11:31" + }, + "returnParameters": { + "id": 11943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11942, + "mutability": "mutable", + "name": "y", + "nameLocation": "8435:1:31", + "nodeType": "VariableDeclaration", + "scope": 11958, + "src": "8428:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 11941, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "8428:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "src": "8427:10:31" + }, + "scope": 12135, + "src": "8378:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11979, + "nodeType": "Block", + "src": "8743:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11966, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11964, + "src": "8758:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11969, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11961, + "src": "8769:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8762:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 11967, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8762:6:31", + "typeDescriptions": {} + } + }, + "id": 11970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8762:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8758:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 11972, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8757:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11973, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11961, + "src": "8776:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8757:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11978, + "nodeType": "IfStatement", + "src": "8753:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11975, + "name": "SafeCast__Exceeds64Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11438, + "src": "8786:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8786:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11977, + "nodeType": "RevertStatement", + "src": "8779:32:31" + } + } + ] + }, + "documentation": { + "id": 11959, + "nodeType": "StructuredDocumentation", + "src": "8519:159:31", + "text": " @dev Returns x on uint64 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint64" + }, + "id": 11980, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe64", + "nameLocation": "8692:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11961, + "mutability": "mutable", + "name": "x", + "nameLocation": "8707:1:31", + "nodeType": "VariableDeclaration", + "scope": 11980, + "src": "8699:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8699:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8698:11:31" + }, + "returnParameters": { + "id": 11965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11964, + "mutability": "mutable", + "name": "y", + "nameLocation": "8740:1:31", + "nodeType": "VariableDeclaration", + "scope": 11980, + "src": "8733:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 11963, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8733:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "8732:10:31" + }, + "scope": 12135, + "src": "8683:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12001, + "nodeType": "Block", + "src": "9048:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11988, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11986, + "src": "9063:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11991, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11983, + "src": "9074:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9067:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + }, + "typeName": { + "id": 11989, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "9067:6:31", + "typeDescriptions": {} + } + }, + "id": 11992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9067:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "src": "9063:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + } + ], + "id": 11994, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9062:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11995, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11983, + "src": "9081:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9062:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12000, + "nodeType": "IfStatement", + "src": "9058:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11997, + "name": "SafeCast__Exceeds56Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11440, + "src": "9091:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9091:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11999, + "nodeType": "RevertStatement", + "src": "9084:32:31" + } + } + ] + }, + "documentation": { + "id": 11981, + "nodeType": "StructuredDocumentation", + "src": "8824:159:31", + "text": " @dev Returns x on uint56 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint56" + }, + "id": 12002, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe56", + "nameLocation": "8997:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11983, + "mutability": "mutable", + "name": "x", + "nameLocation": "9012:1:31", + "nodeType": "VariableDeclaration", + "scope": 12002, + "src": "9004:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11982, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9004:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9003:11:31" + }, + "returnParameters": { + "id": 11987, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11986, + "mutability": "mutable", + "name": "y", + "nameLocation": "9045:1:31", + "nodeType": "VariableDeclaration", + "scope": 12002, + "src": "9038:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + }, + "typeName": { + "id": 11985, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "9038:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "visibility": "internal" + } + ], + "src": "9037:10:31" + }, + "scope": 12135, + "src": "8988:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12023, + "nodeType": "Block", + "src": "9353:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 12015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12010, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12008, + "src": "9368:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12013, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12005, + "src": "9379:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9372:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 12011, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "9372:6:31", + "typeDescriptions": {} + } + }, + "id": 12014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9372:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "9368:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "id": 12016, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9367:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12017, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12005, + "src": "9386:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9367:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12022, + "nodeType": "IfStatement", + "src": "9363:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12019, + "name": "SafeCast__Exceeds48Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11442, + "src": "9396:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9396:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12021, + "nodeType": "RevertStatement", + "src": "9389:32:31" + } + } + ] + }, + "documentation": { + "id": 12003, + "nodeType": "StructuredDocumentation", + "src": "9129:159:31", + "text": " @dev Returns x on uint48 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint48" + }, + "id": 12024, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe48", + "nameLocation": "9302:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12005, + "mutability": "mutable", + "name": "x", + "nameLocation": "9317:1:31", + "nodeType": "VariableDeclaration", + "scope": 12024, + "src": "9309:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9309:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9308:11:31" + }, + "returnParameters": { + "id": 12009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12008, + "mutability": "mutable", + "name": "y", + "nameLocation": "9350:1:31", + "nodeType": "VariableDeclaration", + "scope": 12024, + "src": "9343:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 12007, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "9343:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "src": "9342:10:31" + }, + "scope": 12135, + "src": "9293:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12045, + "nodeType": "Block", + "src": "9658:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 12037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12032, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12030, + "src": "9673:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12035, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12027, + "src": "9684:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9677:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + }, + "typeName": { + "id": 12033, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "9677:6:31", + "typeDescriptions": {} + } + }, + "id": 12036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9677:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "9673:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + } + ], + "id": 12038, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9672:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12039, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12027, + "src": "9691:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9672:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12044, + "nodeType": "IfStatement", + "src": "9668:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12041, + "name": "SafeCast__Exceeds40Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11444, + "src": "9701:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9701:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12043, + "nodeType": "RevertStatement", + "src": "9694:32:31" + } + } + ] + }, + "documentation": { + "id": 12025, + "nodeType": "StructuredDocumentation", + "src": "9434:159:31", + "text": " @dev Returns x on uint40 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint40" + }, + "id": 12046, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe40", + "nameLocation": "9607:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12027, + "mutability": "mutable", + "name": "x", + "nameLocation": "9622:1:31", + "nodeType": "VariableDeclaration", + "scope": 12046, + "src": "9614:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9614:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9613:11:31" + }, + "returnParameters": { + "id": 12031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12030, + "mutability": "mutable", + "name": "y", + "nameLocation": "9655:1:31", + "nodeType": "VariableDeclaration", + "scope": 12046, + "src": "9648:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 12029, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "9648:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "9647:10:31" + }, + "scope": 12135, + "src": "9598:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12067, + "nodeType": "Block", + "src": "9963:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 12059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12054, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12052, + "src": "9978:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12057, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12049, + "src": "9989:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9982:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 12055, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "9982:6:31", + "typeDescriptions": {} + } + }, + "id": 12058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9982:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "9978:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 12060, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9977:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12061, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12049, + "src": "9996:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9977:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12066, + "nodeType": "IfStatement", + "src": "9973:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12063, + "name": "SafeCast__Exceeds32Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11446, + "src": "10006:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10006:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12065, + "nodeType": "RevertStatement", + "src": "9999:32:31" + } + } + ] + }, + "documentation": { + "id": 12047, + "nodeType": "StructuredDocumentation", + "src": "9739:159:31", + "text": " @dev Returns x on uint32 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint32" + }, + "id": 12068, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe32", + "nameLocation": "9912:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12049, + "mutability": "mutable", + "name": "x", + "nameLocation": "9927:1:31", + "nodeType": "VariableDeclaration", + "scope": 12068, + "src": "9919:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9919:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9918:11:31" + }, + "returnParameters": { + "id": 12053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12052, + "mutability": "mutable", + "name": "y", + "nameLocation": "9960:1:31", + "nodeType": "VariableDeclaration", + "scope": 12068, + "src": "9953:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 12051, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "9953:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "9952:10:31" + }, + "scope": 12135, + "src": "9903:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12089, + "nodeType": "Block", + "src": "10268:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 12081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12076, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12074, + "src": "10283:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12079, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12071, + "src": "10294:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10287:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 12077, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "10287:6:31", + "typeDescriptions": {} + } + }, + "id": 12080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10287:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "10283:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "id": 12082, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10282:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12083, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12071, + "src": "10301:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10282:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12088, + "nodeType": "IfStatement", + "src": "10278:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12085, + "name": "SafeCast__Exceeds24Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11448, + "src": "10311:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10311:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12087, + "nodeType": "RevertStatement", + "src": "10304:32:31" + } + } + ] + }, + "documentation": { + "id": 12069, + "nodeType": "StructuredDocumentation", + "src": "10044:159:31", + "text": " @dev Returns x on uint24 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint24" + }, + "id": 12090, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe24", + "nameLocation": "10217:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12071, + "mutability": "mutable", + "name": "x", + "nameLocation": "10232:1:31", + "nodeType": "VariableDeclaration", + "scope": 12090, + "src": "10224:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10224:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10223:11:31" + }, + "returnParameters": { + "id": 12075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12074, + "mutability": "mutable", + "name": "y", + "nameLocation": "10265:1:31", + "nodeType": "VariableDeclaration", + "scope": 12090, + "src": "10258:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 12073, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "10258:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "10257:10:31" + }, + "scope": 12135, + "src": "10208:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12111, + "nodeType": "Block", + "src": "10573:75:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 12103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12098, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12096, + "src": "10588:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12101, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12093, + "src": "10599:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10592:6:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 12099, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10592:6:31", + "typeDescriptions": {} + } + }, + "id": 12102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10592:9:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "10588:13:31", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 12104, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10587:15:31", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12105, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12093, + "src": "10606:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10587:20:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12110, + "nodeType": "IfStatement", + "src": "10583:58:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12107, + "name": "SafeCast__Exceeds16Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11450, + "src": "10616:23:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10616:25:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12109, + "nodeType": "RevertStatement", + "src": "10609:32:31" + } + } + ] + }, + "documentation": { + "id": 12091, + "nodeType": "StructuredDocumentation", + "src": "10349:159:31", + "text": " @dev Returns x on uint16 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint16" + }, + "id": 12112, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe16", + "nameLocation": "10522:6:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12094, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12093, + "mutability": "mutable", + "name": "x", + "nameLocation": "10537:1:31", + "nodeType": "VariableDeclaration", + "scope": 12112, + "src": "10529:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10529:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10528:11:31" + }, + "returnParameters": { + "id": 12097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12096, + "mutability": "mutable", + "name": "y", + "nameLocation": "10570:1:31", + "nodeType": "VariableDeclaration", + "scope": 12112, + "src": "10563:8:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 12095, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10563:6:31", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "10562:10:31" + }, + "scope": 12135, + "src": "10513:135:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12133, + "nodeType": "Block", + "src": "10874:73:31", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 12125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12120, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12118, + "src": "10889:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12123, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12115, + "src": "10899:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10893:5:31", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 12121, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10893:5:31", + "typeDescriptions": {} + } + }, + "id": 12124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10893:8:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "10889:12:31", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 12126, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10888:14:31", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12127, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12115, + "src": "10906:1:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10888:19:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12132, + "nodeType": "IfStatement", + "src": "10884:56:31", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12129, + "name": "SafeCast__Exceeds8Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11452, + "src": "10916:22:31", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10916:24:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12131, + "nodeType": "RevertStatement", + "src": "10909:31:31" + } + } + ] + }, + "documentation": { + "id": 12113, + "nodeType": "StructuredDocumentation", + "src": "10654:157:31", + "text": " @dev Returns x on uint8 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint8" + }, + "id": 12134, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe8", + "nameLocation": "10825:5:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12115, + "mutability": "mutable", + "name": "x", + "nameLocation": "10839:1:31", + "nodeType": "VariableDeclaration", + "scope": 12134, + "src": "10831:9:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10831:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10830:11:31" + }, + "returnParameters": { + "id": 12119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12118, + "mutability": "mutable", + "name": "y", + "nameLocation": "10871:1:31", + "nodeType": "VariableDeclaration", + "scope": 12134, + "src": "10865:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 12117, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10865:5:31", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "10864:9:31" + }, + "scope": 12135, + "src": "10816:131:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 12136, + "src": "201:10748:31", + "usedErrors": [ + 11392, + 11394, + 11396, + 11398, + 11400, + 11402, + 11404, + 11406, + 11408, + 11410, + 11412, + 11414, + 11416, + 11418, + 11420, + 11422, + 11424, + 11426, + 11428, + 11430, + 11432, + 11434, + 11436, + 11438, + 11440, + 11442, + 11444, + 11446, + 11448, + 11450, + 11452 + ], + "usedEvents": [] + } + ], + "src": "33:10917:31" + }, + "id": 31 + }, + "src/libraries/math/Uint128x128Math.sol": { + "ast": { + "absolutePath": "src/libraries/math/Uint128x128Math.sol", + "exportedSymbols": { + "BitMath": [ + 10656 + ], + "Constants": [ + 8172 + ], + "Uint128x128Math": [ + 12361 + ] + }, + "id": 12362, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12137, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:32" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "../Constants.sol", + "id": 12139, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12362, + "sourceUnit": 8173, + "src": "59:43:32", + "symbolAliases": [ + { + "foreign": { + "id": 12138, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "67:9:32", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/BitMath.sol", + "file": "./BitMath.sol", + "id": 12141, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12362, + "sourceUnit": 10657, + "src": "103:38:32", + "symbolAliases": [ + { + "foreign": { + "id": 12140, + "name": "BitMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10656, + "src": "111:7:32", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Uint128x128Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 12142, + "nodeType": "StructuredDocumentation", + "src": "143:120:32", + "text": " @title Liquidity Book Uint128x128 Math Library\n @notice Helper contract used for power and log calculations" + }, + "fullyImplemented": true, + "id": 12361, + "linearizedBaseContracts": [ + 12361 + ], + "name": "Uint128x128Math", + "nameLocation": "272:15:32", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 12145, + "libraryName": { + "id": 12143, + "name": "BitMath", + "nameLocations": [ + "300:7:32" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10656, + "src": "300:7:32" + }, + "nodeType": "UsingForDirective", + "src": "294:26:32", + "typeName": { + "id": 12144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "312:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "errorSelector": "24b28d9e", + "id": 12147, + "name": "Uint128x128Math__LogUnderflow", + "nameLocation": "332:29:32", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12146, + "nodeType": "ParameterList", + "parameters": [], + "src": "361:2:32" + }, + "src": "326:38:32" + }, + { + "errorSelector": "3b74b31a", + "id": 12153, + "name": "Uint128x128Math__PowUnderflow", + "nameLocation": "375:29:32", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12149, + "mutability": "mutable", + "name": "x", + "nameLocation": "413:1:32", + "nodeType": "VariableDeclaration", + "scope": 12153, + "src": "405:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12148, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12151, + "mutability": "mutable", + "name": "y", + "nameLocation": "423:1:32", + "nodeType": "VariableDeclaration", + "scope": 12153, + "src": "416:8:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 12150, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "416:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "404:21:32" + }, + "src": "369:57:32" + }, + { + "constant": true, + "id": 12156, + "mutability": "constant", + "name": "LOG_SCALE_OFFSET", + "nameLocation": "449:16:32", + "nodeType": "VariableDeclaration", + "scope": 12361, + "src": "432:39:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12154, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "432:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313237", + "id": 12155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "468:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_127_by_1", + "typeString": "int_const 127" + }, + "value": "127" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 12161, + "mutability": "constant", + "name": "LOG_SCALE", + "nameLocation": "494:9:32", + "nodeType": "VariableDeclaration", + "scope": 12361, + "src": "477:50:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "477:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 12158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "506:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 12159, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12156, + "src": "511:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "506:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 12166, + "mutability": "constant", + "name": "LOG_SCALE_SQUARED", + "nameLocation": "550:17:32", + "nodeType": "VariableDeclaration", + "scope": 12361, + "src": "533:58:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "533:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 12163, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12161, + "src": "570:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12164, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12161, + "src": "582:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "570:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 12303, + "nodeType": "Block", + "src": "1404:2307:32", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12174, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "1800:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 12175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1805:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1800:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12180, + "nodeType": "IfStatement", + "src": "1796:23:32", + "trueBody": { + "expression": { + "id": 12178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1815:4:32", + "subExpression": { + "hexValue": "313238", + "id": 12177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1816:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_128_by_1", + "typeString": "int_const -128" + } + }, + "functionReturnParameters": 12173, + "id": 12179, + "nodeType": "Return", + "src": "1808:11:32" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12181, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "1833:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 12182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1838:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1833:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12187, + "nodeType": "IfStatement", + "src": "1829:50:32", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12184, + "name": "Uint128x128Math__LogUnderflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12147, + "src": "1848:29:32", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1848:31:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12186, + "nodeType": "RevertStatement", + "src": "1841:38:32" + } + }, + { + "expression": { + "id": 12190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12188, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "1890:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "31", + "id": 12189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1896:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1890:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12191, + "nodeType": "ExpressionStatement", + "src": "1890:7:32" + }, + { + "id": 12302, + "nodeType": "UncheckedBlock", + "src": "1908:1797:32", + "statements": [ + { + "assignments": [ + 12193 + ], + "declarations": [ + { + "constant": false, + "id": 12193, + "mutability": "mutable", + "name": "sign", + "nameLocation": "1995:4:32", + "nodeType": "VariableDeclaration", + "scope": 12302, + "src": "1988:11:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 12192, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1988:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 12194, + "nodeType": "VariableDeclarationStatement", + "src": "1988:11:32" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12195, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "2017:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 12196, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12161, + "src": "2022:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2017:14:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12214, + "nodeType": "Block", + "src": "2080:152:32", + "statements": [ + { + "expression": { + "id": 12206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12203, + "name": "sign", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12193, + "src": "2098:4:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2105:2:32", + "subExpression": { + "hexValue": "31", + "id": 12204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2106:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "2098:9:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 12207, + "nodeType": "ExpressionStatement", + "src": "2098:9:32" + }, + { + "expression": { + "id": 12212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12208, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "2192:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12209, + "name": "LOG_SCALE_SQUARED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12166, + "src": "2196:17:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 12210, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "2216:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2196:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2192:25:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12213, + "nodeType": "ExpressionStatement", + "src": "2192:25:32" + } + ] + }, + "id": 12215, + "nodeType": "IfStatement", + "src": "2013:219:32", + "trueBody": { + "id": 12202, + "nodeType": "Block", + "src": "2033:41:32", + "statements": [ + { + "expression": { + "id": 12200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12198, + "name": "sign", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12193, + "src": "2051:4:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 12199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2058:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2051:8:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 12201, + "nodeType": "ExpressionStatement", + "src": "2051:8:32" + } + ] + } + }, + { + "assignments": [ + 12217 + ], + "declarations": [ + { + "constant": false, + "id": 12217, + "mutability": "mutable", + "name": "n", + "nameLocation": "2376:1:32", + "nodeType": "VariableDeclaration", + "scope": 12302, + "src": "2368:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12216, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2368:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12224, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12218, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "2381:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 12219, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12156, + "src": "2386:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2381:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12221, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2380:23:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2404:18:32", + "memberName": "mostSignificantBit", + "nodeType": "MemberAccess", + "referencedDeclaration": 10645, + "src": "2380:42:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 12223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2380:44:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2368:56:32" + }, + { + "expression": { + "id": 12232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12225, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12172, + "src": "2662:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 12231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 12228, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12217, + "src": "2678:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2671:6:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 12226, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2671:6:32", + "typeDescriptions": {} + } + }, + "id": 12229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2671:9:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 12230, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12156, + "src": "2684:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2671:29:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2662:38:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 12233, + "nodeType": "ExpressionStatement", + "src": "2662:38:32" + }, + { + "assignments": [ + 12235 + ], + "declarations": [ + { + "constant": false, + "id": 12235, + "mutability": "mutable", + "name": "y", + "nameLocation": "2762:1:32", + "nodeType": "VariableDeclaration", + "scope": 12302, + "src": "2754:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12234, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2754:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12239, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12236, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12169, + "src": "2766:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 12237, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12217, + "src": "2771:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2766:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2754:18:32" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12240, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12235, + "src": "2845:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12241, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12161, + "src": "2850:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2845:14:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12292, + "nodeType": "IfStatement", + "src": "2841:735:32", + "trueBody": { + "id": 12291, + "nodeType": "Block", + "src": "2861:715:32", + "statements": [ + { + "body": { + "id": 12289, + "nodeType": "Block", + "src": "3144:418:32", + "statements": [ + { + "expression": { + "id": 12269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12262, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12235, + "src": "3166:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12263, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12235, + "src": "3171:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12264, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12235, + "src": "3175:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3171:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12266, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3170:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 12267, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12156, + "src": "3181:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3170:27:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3166:31:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12270, + "nodeType": "ExpressionStatement", + "src": "3166:31:32" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12271, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12235, + "src": "3285:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 12272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3290:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 12273, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12156, + "src": "3296:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 12274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3315:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3296:20:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12276, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3295:22:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3290:27:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3285:32:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12288, + "nodeType": "IfStatement", + "src": "3281:263:32", + "trueBody": { + "id": 12287, + "nodeType": "Block", + "src": "3319:225:32", + "statements": [ + { + "expression": { + "id": 12281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12279, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12172, + "src": "3412:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 12280, + "name": "delta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12244, + "src": "3422:5:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "3412:15:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 12282, + "nodeType": "ExpressionStatement", + "src": "3412:15:32" + }, + { + "expression": { + "id": 12285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12283, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12235, + "src": "3514:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "31", + "id": 12284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3520:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3514:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12286, + "nodeType": "ExpressionStatement", + "src": "3514:7:32" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 12257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12255, + "name": "delta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12244, + "src": "3120:5:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 12256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3128:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3120:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12290, + "initializationExpression": { + "assignments": [ + 12244 + ], + "declarations": [ + { + "constant": false, + "id": 12244, + "mutability": "mutable", + "name": "delta", + "nameLocation": "3075:5:32", + "nodeType": "VariableDeclaration", + "scope": 12290, + "src": "3068:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 12243, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "3068:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 12254, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 12247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3090:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 12248, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12156, + "src": "3096:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 12249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3115:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3096:20:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12251, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3095:22:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3090:27:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3083:6:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 12245, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "3083:6:32", + "typeDescriptions": {} + } + }, + "id": 12253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3083:35:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3068:50:32" + }, + "loopExpression": { + "expression": { + "id": 12260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12258, + "name": "delta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12244, + "src": "3131:5:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "31", + "id": 12259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3141:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3131:11:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 12261, + "nodeType": "ExpressionStatement", + "src": "3131:11:32" + }, + "nodeType": "ForStatement", + "src": "3063:499:32" + } + ] + } + }, + { + "expression": { + "id": 12300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12293, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12172, + "src": "3665:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 12299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 12296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12294, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12172, + "src": "3675:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12295, + "name": "sign", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12193, + "src": "3684:4:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "3675:13:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 12297, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3674:15:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "31", + "id": 12298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3693:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3674:20:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "3665:29:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 12301, + "nodeType": "ExpressionStatement", + "src": "3665:29:32" + } + ] + } + ] + }, + "documentation": { + "id": 12167, + "nodeType": "StructuredDocumentation", + "src": "598:738:32", + "text": " @notice Calculates the binary logarithm of x.\n @dev Based on the iterative approximation algorithm.\n https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation\n Requirements:\n - x must be greater than zero.\n Caveats:\n - The results are not perfectly accurate to the last decimal, due to the lossy precision of the iterative approximation\n Also because x is converted to an unsigned 129.127-binary fixed-point number during the operation to optimize the multiplication\n @param x The unsigned 128.128-binary fixed-point number for which to calculate the binary logarithm.\n @return result The binary logarithm as a signed 128.128-binary fixed-point number." + }, + "id": 12304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "1350:4:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12169, + "mutability": "mutable", + "name": "x", + "nameLocation": "1363:1:32", + "nodeType": "VariableDeclaration", + "scope": 12304, + "src": "1355:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12168, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1355:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1354:11:32" + }, + "returnParameters": { + "id": 12173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12172, + "mutability": "mutable", + "name": "result", + "nameLocation": "1396:6:32", + "nodeType": "VariableDeclaration", + "scope": 12304, + "src": "1389:13:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 12171, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1389:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1388:15:32" + }, + "scope": 12361, + "src": "1341:2370:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12359, + "nodeType": "Block", + "src": "4158:3527:32", + "statements": [ + { + "assignments": [ + 12315 + ], + "declarations": [ + { + "constant": false, + "id": 12315, + "mutability": "mutable", + "name": "invert", + "nameLocation": "4173:6:32", + "nodeType": "VariableDeclaration", + "scope": 12359, + "src": "4168:11:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12314, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4168:4:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 12316, + "nodeType": "VariableDeclarationStatement", + "src": "4168:11:32" + }, + { + "assignments": [ + 12318 + ], + "declarations": [ + { + "constant": false, + "id": 12318, + "mutability": "mutable", + "name": "absY", + "nameLocation": "4197:4:32", + "nodeType": "VariableDeclaration", + "scope": 12359, + "src": "4189:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4189:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12319, + "nodeType": "VariableDeclarationStatement", + "src": "4189:12:32" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 12322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12320, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12309, + "src": "4216:1:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 12321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4221:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4216:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12326, + "nodeType": "IfStatement", + "src": "4212:34:32", + "trueBody": { + "expression": { + "expression": { + "id": 12323, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "4231:9:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 12324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4241:5:32", + "memberName": "SCALE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8145, + "src": "4231:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12313, + "id": 12325, + "nodeType": "Return", + "src": "4224:22:32" + } + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "4266:155:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4280:9:32", + "value": { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4288:1:32" + }, + "variableNames": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4280:4:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4318:93:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4336:20:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4348:1:32", + "type": "", + "value": "0" + }, + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4351:4:32" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4344:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4344:12:32" + }, + "variableNames": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4336:4:32" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4373:24:32", + "value": { + "arguments": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4390:6:32" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4383:6:32" + }, + "nodeType": "YulFunctionCall", + "src": "4383:14:32" + }, + "variableNames": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4373:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4309:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4315:1:32", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4305:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4305:12:32" + }, + "nodeType": "YulIf", + "src": "4302:109:32" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "4280:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "4309:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "4336:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "4351:4:32", + "valueSize": 1 + }, + { + "declaration": 12315, + "isOffset": false, + "isSlot": false, + "src": "4373:6:32", + "valueSize": 1 + }, + { + "declaration": 12315, + "isOffset": false, + "isSlot": false, + "src": "4390:6:32", + "valueSize": 1 + }, + { + "declaration": 12309, + "isOffset": false, + "isSlot": false, + "src": "4288:1:32", + "valueSize": 1 + } + ], + "id": 12327, + "nodeType": "InlineAssembly", + "src": "4257:164:32" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12328, + "name": "absY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12318, + "src": "4435:4:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "3078313030303030", + "id": 12329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4442:8:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_1048576_by_1", + "typeString": "int_const 1048576" + }, + "value": "0x100000" + }, + "src": "4435:15:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12338, + "nodeType": "IfStatement", + "src": "4431:3060:32", + "trueBody": { + "id": 12337, + "nodeType": "Block", + "src": "4452:3039:32", + "statements": [ + { + "expression": { + "id": 12334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12331, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12312, + "src": "4466:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 12332, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8172, + "src": "4475:9:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8172_$", + "typeString": "type(library Constants)" + } + }, + "id": 12333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4485:5:32", + "memberName": "SCALE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8145, + "src": "4475:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4466:24:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12335, + "nodeType": "ExpressionStatement", + "src": "4466:24:32" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "4513:2968:32", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4531:16:32", + "value": { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4546:1:32" + }, + "variables": [ + { + "name": "squared", + "nodeType": "YulTypedName", + "src": "4535:7:32", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4609:116:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4631:31:32", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4650:1:32", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "4646:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4646:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4654:7:32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "4642:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4642:20:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4631:7:32" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4683:24:32", + "value": { + "arguments": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4700:6:32" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4693:6:32" + }, + "nodeType": "YulFunctionCall", + "src": "4693:14:32" + }, + "variableNames": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4683:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4570:1:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4573:34:32", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4567:2:32" + }, + "nodeType": "YulFunctionCall", + "src": "4567:41:32" + }, + "nodeType": "YulIf", + "src": "4564:161:32" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4761:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4763:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4777:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4786:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4794:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4782:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4782:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4773:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4773:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4763:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4750:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4756:3:32", + "type": "", + "value": "0x1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4746:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4746:14:32" + }, + "nodeType": "YulIf", + "src": "4743:62:32" + }, + { + "nodeType": "YulAssignment", + "src": "4822:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4837:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4846:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4855:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4842:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4842:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4833:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4833:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4822:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4899:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4901:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4915:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4924:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4932:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4920:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4920:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4911:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4911:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4901:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4888:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4894:3:32", + "type": "", + "value": "0x2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4884:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4884:14:32" + }, + "nodeType": "YulIf", + "src": "4881:62:32" + }, + { + "nodeType": "YulAssignment", + "src": "4960:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4975:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4984:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4993:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4980:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4980:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4971:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "4971:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4960:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5037:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5039:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5053:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5062:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5070:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5058:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5058:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5049:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5049:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5039:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5026:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5032:3:32", + "type": "", + "value": "0x4" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5022:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5022:14:32" + }, + "nodeType": "YulIf", + "src": "5019:62:32" + }, + { + "nodeType": "YulAssignment", + "src": "5098:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5113:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5122:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5131:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5118:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5118:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5109:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5109:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5098:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5175:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5177:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5191:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5200:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5208:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5196:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5196:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5187:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5187:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5177:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5164:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5170:3:32", + "type": "", + "value": "0x8" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5160:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5160:14:32" + }, + "nodeType": "YulIf", + "src": "5157:62:32" + }, + { + "nodeType": "YulAssignment", + "src": "5236:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5251:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5260:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5269:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5256:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5256:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5247:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5247:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5236:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5314:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5316:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5330:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5339:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5347:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5335:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5335:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5326:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5326:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5316:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5302:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5308:4:32", + "type": "", + "value": "0x10" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5298:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5298:15:32" + }, + "nodeType": "YulIf", + "src": "5295:63:32" + }, + { + "nodeType": "YulAssignment", + "src": "5375:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5390:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5399:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5408:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5395:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5395:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5386:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5386:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5375:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5453:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5455:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5469:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5478:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5486:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5474:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5474:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5465:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5465:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5455:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5441:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5447:4:32", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5437:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5437:15:32" + }, + "nodeType": "YulIf", + "src": "5434:63:32" + }, + { + "nodeType": "YulAssignment", + "src": "5514:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5529:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5538:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5547:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5534:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5534:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5525:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5525:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5514:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5592:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5594:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5608:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5617:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5625:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5613:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5613:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5604:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5604:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5594:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5580:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5586:4:32", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5576:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5576:15:32" + }, + "nodeType": "YulIf", + "src": "5573:63:32" + }, + { + "nodeType": "YulAssignment", + "src": "5653:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5668:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5677:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5686:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5673:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5673:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5664:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5664:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5653:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5731:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5733:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5747:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5756:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5764:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5752:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5752:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5743:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5743:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5733:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5719:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5725:4:32", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5715:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5715:15:32" + }, + "nodeType": "YulIf", + "src": "5712:63:32" + }, + { + "nodeType": "YulAssignment", + "src": "5792:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5807:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5816:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5825:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5812:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5812:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5803:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5803:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5792:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5871:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5873:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5887:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5896:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5904:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5892:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5892:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5883:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5883:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5873:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5858:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5864:5:32", + "type": "", + "value": "0x100" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5854:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5854:16:32" + }, + "nodeType": "YulIf", + "src": "5851:64:32" + }, + { + "nodeType": "YulAssignment", + "src": "5932:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5947:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5956:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5965:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5952:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5952:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5943:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5943:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5932:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6011:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6013:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6027:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6036:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6044:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6032:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6032:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6023:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6023:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6013:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5998:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6004:5:32", + "type": "", + "value": "0x200" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5994:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "5994:16:32" + }, + "nodeType": "YulIf", + "src": "5991:64:32" + }, + { + "nodeType": "YulAssignment", + "src": "6072:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6087:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6096:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6105:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6092:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6092:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6083:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6083:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6072:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6151:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6153:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6167:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6176:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6184:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6172:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6172:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6163:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6163:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6153:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6138:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6144:5:32", + "type": "", + "value": "0x400" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6134:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6134:16:32" + }, + "nodeType": "YulIf", + "src": "6131:64:32" + }, + { + "nodeType": "YulAssignment", + "src": "6212:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6227:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6236:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6245:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6232:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6232:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6223:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6223:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6212:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6291:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6293:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6307:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6316:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6324:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6312:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6312:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6303:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6303:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6293:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6278:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6284:5:32", + "type": "", + "value": "0x800" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6274:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6274:16:32" + }, + "nodeType": "YulIf", + "src": "6271:64:32" + }, + { + "nodeType": "YulAssignment", + "src": "6352:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6367:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6376:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6385:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6372:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6372:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6363:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6363:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6352:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6432:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6434:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6448:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6457:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6465:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6453:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6453:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6444:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6444:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6434:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6418:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6424:6:32", + "type": "", + "value": "0x1000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6414:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6414:17:32" + }, + "nodeType": "YulIf", + "src": "6411:65:32" + }, + { + "nodeType": "YulAssignment", + "src": "6493:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6508:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6517:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6526:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6513:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6513:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6504:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6504:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6493:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6573:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6575:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6589:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6598:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6606:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6594:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6594:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6585:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6585:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6575:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6559:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6565:6:32", + "type": "", + "value": "0x2000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6555:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6555:17:32" + }, + "nodeType": "YulIf", + "src": "6552:65:32" + }, + { + "nodeType": "YulAssignment", + "src": "6634:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6649:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6658:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6667:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6654:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6654:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6645:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6645:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6634:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6714:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6716:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6730:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6739:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6747:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6735:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6735:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6726:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6726:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6716:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6700:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6706:6:32", + "type": "", + "value": "0x4000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6696:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6696:17:32" + }, + "nodeType": "YulIf", + "src": "6693:65:32" + }, + { + "nodeType": "YulAssignment", + "src": "6775:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6790:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6799:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6808:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6795:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6795:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6786:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6786:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6775:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6855:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6857:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6871:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6880:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6888:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6876:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6876:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6867:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6867:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6857:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6841:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6847:6:32", + "type": "", + "value": "0x8000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6837:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6837:17:32" + }, + "nodeType": "YulIf", + "src": "6834:65:32" + }, + { + "nodeType": "YulAssignment", + "src": "6916:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6931:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6940:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6949:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6936:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6936:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6927:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6927:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6916:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6997:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6999:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7013:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7022:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7030:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7018:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7018:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7009:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7009:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6999:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6982:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6988:7:32", + "type": "", + "value": "0x10000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6978:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "6978:18:32" + }, + "nodeType": "YulIf", + "src": "6975:66:32" + }, + { + "nodeType": "YulAssignment", + "src": "7058:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7073:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7082:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7091:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7078:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7078:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7069:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7069:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7058:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7139:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7141:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7155:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7164:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7172:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7160:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7160:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7151:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7151:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7141:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "7124:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7130:7:32", + "type": "", + "value": "0x20000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7120:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7120:18:32" + }, + "nodeType": "YulIf", + "src": "7117:66:32" + }, + { + "nodeType": "YulAssignment", + "src": "7200:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7215:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7224:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7233:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7220:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7220:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7211:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7211:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7200:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7281:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7283:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7297:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7306:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7314:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7302:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7302:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7293:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7293:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7283:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "7266:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7272:7:32", + "type": "", + "value": "0x40000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7262:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7262:18:32" + }, + "nodeType": "YulIf", + "src": "7259:66:32" + }, + { + "nodeType": "YulAssignment", + "src": "7342:42:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7357:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7366:7:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7375:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7362:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7362:21:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7353:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7353:31:32" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7342:7:32" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7423:44:32", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7425:40:32", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7439:3:32", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7448:6:32" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7456:7:32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7444:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7444:20:32" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7435:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7435:30:32" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7425:6:32" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "7408:4:32" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7414:7:32", + "type": "", + "value": "0x80000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7404:3:32" + }, + "nodeType": "YulFunctionCall", + "src": "7404:18:32" + }, + "nodeType": "YulIf", + "src": "7401:66:32" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "4750:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "4888:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5026:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5164:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5302:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5441:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5580:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5719:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5858:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "5998:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "6138:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "6278:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "6418:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "6559:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "6700:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "6841:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "6982:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "7124:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "7266:4:32", + "valueSize": 1 + }, + { + "declaration": 12318, + "isOffset": false, + "isSlot": false, + "src": "7408:4:32", + "valueSize": 1 + }, + { + "declaration": 12315, + "isOffset": false, + "isSlot": false, + "src": "4683:6:32", + "valueSize": 1 + }, + { + "declaration": 12315, + "isOffset": false, + "isSlot": false, + "src": "4700:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "4763:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "4786:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "4901:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "4924:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5039:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5062:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5177:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5200:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5316:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5339:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5455:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5478:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5594:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5617:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5733:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5756:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5873:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "5896:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6013:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6036:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6153:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6176:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6293:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6316:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6434:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6457:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6575:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6598:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6716:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6739:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6857:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6880:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "6999:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "7022:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "7141:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "7164:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "7283:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "7306:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "7425:6:32", + "valueSize": 1 + }, + { + "declaration": 12312, + "isOffset": false, + "isSlot": false, + "src": "7448:6:32", + "valueSize": 1 + }, + { + "declaration": 12307, + "isOffset": false, + "isSlot": false, + "src": "4546:1:32", + "valueSize": 1 + }, + { + "declaration": 12307, + "isOffset": false, + "isSlot": false, + "src": "4570:1:32", + "valueSize": 1 + } + ], + "id": 12336, + "nodeType": "InlineAssembly", + "src": "4504:2977:32" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12339, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12312, + "src": "7561:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 12340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7571:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7561:11:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12347, + "nodeType": "IfStatement", + "src": "7557:59:32", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 12343, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12307, + "src": "7611:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12344, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12309, + "src": "7614:1:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 12342, + "name": "Uint128x128Math__PowUnderflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12153, + "src": "7581:29:32", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_int256_$returns$__$", + "typeString": "function (uint256,int256) pure" + } + }, + "id": 12345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7581:35:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12346, + "nodeType": "RevertStatement", + "src": "7574:42:32" + } + }, + { + "expression": { + "condition": { + "id": 12348, + "name": "invert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12315, + "src": "7634:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 12356, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12312, + "src": "7672:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "7634:44:32", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 12351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7648:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 12350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7648:7:32", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 12349, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "7643:4:32", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7643:13:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 12353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7657:3:32", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "7643:17:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 12354, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12312, + "src": "7663:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7643:26:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12313, + "id": 12358, + "nodeType": "Return", + "src": "7627:51:32" + } + ] + }, + "documentation": { + "id": 12305, + "nodeType": "StructuredDocumentation", + "src": "3717:363:32", + "text": " @notice Returns the value of x^y. It calculates `1 / x^abs(y)` if x is bigger than 2^128.\n At the end of the operations, we invert the result if needed.\n @param x The unsigned 128.128-binary fixed-point number for which to calculate the power\n @param y A relative number without any decimals, needs to be between ]-2^21; 2^21[" + }, + "id": 12360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pow", + "nameLocation": "4094:3:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12307, + "mutability": "mutable", + "name": "x", + "nameLocation": "4106:1:32", + "nodeType": "VariableDeclaration", + "scope": 12360, + "src": "4098:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4098:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12309, + "mutability": "mutable", + "name": "y", + "nameLocation": "4116:1:32", + "nodeType": "VariableDeclaration", + "scope": 12360, + "src": "4109:8:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 12308, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "4109:6:32", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "4097:21:32" + }, + "returnParameters": { + "id": 12313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12312, + "mutability": "mutable", + "name": "result", + "nameLocation": "4150:6:32", + "nodeType": "VariableDeclaration", + "scope": 12360, + "src": "4142:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4142:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4141:16:32" + }, + "scope": 12361, + "src": "4085:3600:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 12362, + "src": "264:7423:32", + "usedErrors": [ + 12147, + 12153 + ], + "usedEvents": [] + } + ], + "src": "33:7655:32" + }, + "id": 32 + }, + "src/libraries/math/Uint256x256Math.sol": { + "ast": { + "absolutePath": "src/libraries/math/Uint256x256Math.sol", + "exportedSymbols": { + "BitMath": [ + 10656 + ], + "Uint256x256Math": [ + 12771 + ] + }, + "id": 12772, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12363, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:33" + }, + { + "absolutePath": "src/libraries/math/BitMath.sol", + "file": "./BitMath.sol", + "id": 12365, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12772, + "sourceUnit": 10657, + "src": "59:38:33", + "symbolAliases": [ + { + "foreign": { + "id": 12364, + "name": "BitMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10656, + "src": "67:7:33", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Uint256x256Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 12366, + "nodeType": "StructuredDocumentation", + "src": "99:121:33", + "text": " @title Liquidity Book Uint256x256 Math Library\n @notice Helper contract used for full precision calculations" + }, + "fullyImplemented": true, + "id": 12771, + "linearizedBaseContracts": [ + 12771 + ], + "name": "Uint256x256Math", + "nameLocation": "229:15:33", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "8e471a89", + "id": 12368, + "name": "Uint256x256Math__MulShiftOverflow", + "nameLocation": "257:33:33", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12367, + "nodeType": "ParameterList", + "parameters": [], + "src": "290:2:33" + }, + "src": "251:42:33" + }, + { + "errorSelector": "13eae715", + "id": 12370, + "name": "Uint256x256Math__MulDivOverflow", + "nameLocation": "304:31:33", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12369, + "nodeType": "ParameterList", + "parameters": [], + "src": "335:2:33" + }, + "src": "298:40:33" + }, + { + "body": { + "id": 12399, + "nodeType": "Block", + "src": "1035:140:33", + "statements": [ + { + "assignments": [ + 12383, + 12385 + ], + "declarations": [ + { + "constant": false, + "id": 12383, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "1054:5:33", + "nodeType": "VariableDeclaration", + "scope": 12399, + "src": "1046:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1046:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12385, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "1069:5:33", + "nodeType": "VariableDeclaration", + "scope": 12399, + "src": "1061:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1061:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12390, + "initialValue": { + "arguments": [ + { + "id": 12387, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12373, + "src": "1091:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12388, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12375, + "src": "1094:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12386, + "name": "_getMulProds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12618, + "src": "1078:12:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256,uint256)" + } + }, + "id": 12389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1078:18:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1045:51:33" + }, + { + "expression": { + "arguments": [ + { + "id": 12392, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12373, + "src": "1136:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12393, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12375, + "src": "1139:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12394, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12377, + "src": "1142:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12395, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12383, + "src": "1155:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12396, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12385, + "src": "1162:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12391, + "name": "_getEndOfDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12740, + "src": "1114:21:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 12397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1114:54:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12381, + "id": 12398, + "nodeType": "Return", + "src": "1107:61:33" + } + ] + }, + "documentation": { + "id": 12371, + "nodeType": "StructuredDocumentation", + "src": "344:579:33", + "text": " @notice Calculates floor(x*y/denominator) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The denominator cannot be zero\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 12400, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDivRoundDown", + "nameLocation": "937:15:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12373, + "mutability": "mutable", + "name": "x", + "nameLocation": "961:1:33", + "nodeType": "VariableDeclaration", + "scope": 12400, + "src": "953:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "953:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12375, + "mutability": "mutable", + "name": "y", + "nameLocation": "972:1:33", + "nodeType": "VariableDeclaration", + "scope": 12400, + "src": "964:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "964:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12377, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "983:11:33", + "nodeType": "VariableDeclaration", + "scope": 12400, + "src": "975:19:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "975:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "952:43:33" + }, + "returnParameters": { + "id": 12381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12380, + "mutability": "mutable", + "name": "result", + "nameLocation": "1027:6:33", + "nodeType": "VariableDeclaration", + "scope": 12400, + "src": "1019:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1019:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1018:16:33" + }, + "scope": 12771, + "src": "928:247:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12432, + "nodeType": "Block", + "src": "1867:117:33", + "statements": [ + { + "expression": { + "id": 12418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12412, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12410, + "src": "1877:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12414, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12403, + "src": "1902:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12415, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12405, + "src": "1905:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12416, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12407, + "src": "1908:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12413, + "name": "mulDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12400, + "src": "1886:15:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 12417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1886:34:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1877:43:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12419, + "nodeType": "ExpressionStatement", + "src": "1877:43:33" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 12421, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12403, + "src": "1941:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12422, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12405, + "src": "1944:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12423, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12407, + "src": "1947:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12420, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "1934:6:33", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 12424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1934:25:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 12425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1963:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1934:30:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12431, + "nodeType": "IfStatement", + "src": "1930:47:33", + "trueBody": { + "expression": { + "id": 12429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12427, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12410, + "src": "1966:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 12428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1976:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1966:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12430, + "nodeType": "ExpressionStatement", + "src": "1966:11:33" + } + } + ] + }, + "documentation": { + "id": 12401, + "nodeType": "StructuredDocumentation", + "src": "1181:576:33", + "text": " @notice Calculates ceil(x*y/denominator) with full precision\n The result will be rounded up\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The denominator cannot be zero\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 12433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDivRoundUp", + "nameLocation": "1771:13:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12403, + "mutability": "mutable", + "name": "x", + "nameLocation": "1793:1:33", + "nodeType": "VariableDeclaration", + "scope": 12433, + "src": "1785:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1785:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12405, + "mutability": "mutable", + "name": "y", + "nameLocation": "1804:1:33", + "nodeType": "VariableDeclaration", + "scope": 12433, + "src": "1796:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1796:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12407, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "1815:11:33", + "nodeType": "VariableDeclaration", + "scope": 12433, + "src": "1807:19:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1807:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1784:43:33" + }, + "returnParameters": { + "id": 12411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12410, + "mutability": "mutable", + "name": "result", + "nameLocation": "1859:6:33", + "nodeType": "VariableDeclaration", + "scope": 12433, + "src": "1851:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1851:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1850:16:33" + }, + "scope": 12771, + "src": "1762:222:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12488, + "nodeType": "Block", + "src": "2715:383:33", + "statements": [ + { + "assignments": [ + 12446, + 12448 + ], + "declarations": [ + { + "constant": false, + "id": 12446, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "2734:5:33", + "nodeType": "VariableDeclaration", + "scope": 12488, + "src": "2726:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12445, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2726:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12448, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "2749:5:33", + "nodeType": "VariableDeclaration", + "scope": 12488, + "src": "2741:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12447, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2741:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12453, + "initialValue": { + "arguments": [ + { + "id": 12450, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12436, + "src": "2771:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12451, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12438, + "src": "2774:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12449, + "name": "_getMulProds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12618, + "src": "2758:12:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256,uint256)" + } + }, + "id": 12452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2758:18:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2725:51:33" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12454, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12446, + "src": "2791:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 12455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2800:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2791:10:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12463, + "nodeType": "IfStatement", + "src": "2787:40:33", + "trueBody": { + "expression": { + "id": 12461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12457, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12443, + "src": "2803:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12458, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12446, + "src": "2812:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 12459, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12440, + "src": "2821:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2812:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2803:24:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12462, + "nodeType": "ExpressionStatement", + "src": "2803:24:33" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12464, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12448, + "src": "2841:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 12465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2850:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2841:10:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12487, + "nodeType": "IfStatement", + "src": "2837:255:33", + "trueBody": { + "id": 12486, + "nodeType": "Block", + "src": "2853:239:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12467, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12448, + "src": "2927:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 12468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2936:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 12469, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12440, + "src": "2941:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2936:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2927:20:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12475, + "nodeType": "IfStatement", + "src": "2923:68:33", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12472, + "name": "Uint256x256Math__MulShiftOverflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12368, + "src": "2956:33:33", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2956:35:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12474, + "nodeType": "RevertStatement", + "src": "2949:42:33" + } + }, + { + "id": 12485, + "nodeType": "UncheckedBlock", + "src": "3006:76:33", + "statements": [ + { + "expression": { + "id": 12483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12476, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12443, + "src": "3034:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12477, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12448, + "src": "3044:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 12480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323536", + "id": 12478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3054:3:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 12479, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12440, + "src": "3060:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3054:12:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 12481, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3053:14:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "3044:23:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3034:33:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12484, + "nodeType": "ExpressionStatement", + "src": "3034:33:33" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 12434, + "nodeType": "StructuredDocumentation", + "src": "1990:618:33", + "text": " @notice Calculates floor(x * y / 2**offset) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param offset The offset as an uint256, can't be greater than 256\n @return result The result as an uint256" + }, + "id": 12489, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulShiftRoundDown", + "nameLocation": "2622:17:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12436, + "mutability": "mutable", + "name": "x", + "nameLocation": "2648:1:33", + "nodeType": "VariableDeclaration", + "scope": 12489, + "src": "2640:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12435, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2640:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12438, + "mutability": "mutable", + "name": "y", + "nameLocation": "2659:1:33", + "nodeType": "VariableDeclaration", + "scope": 12489, + "src": "2651:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12437, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2651:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12440, + "mutability": "mutable", + "name": "offset", + "nameLocation": "2668:6:33", + "nodeType": "VariableDeclaration", + "scope": 12489, + "src": "2662:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 12439, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2662:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "2639:36:33" + }, + "returnParameters": { + "id": 12444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12443, + "mutability": "mutable", + "name": "result", + "nameLocation": "2707:6:33", + "nodeType": "VariableDeclaration", + "scope": 12489, + "src": "2699:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2699:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2698:16:33" + }, + "scope": 12771, + "src": "2613:485:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12523, + "nodeType": "Block", + "src": "3827:114:33", + "statements": [ + { + "expression": { + "id": 12507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12501, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12499, + "src": "3837:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12503, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12492, + "src": "3864:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12504, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12494, + "src": "3867:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12505, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12496, + "src": "3870:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 12502, + "name": "mulShiftRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12489, + "src": "3846:17:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 12506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3846:31:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3837:40:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12508, + "nodeType": "ExpressionStatement", + "src": "3837:40:33" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 12510, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12492, + "src": "3898:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12511, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12494, + "src": "3901:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 12512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3904:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 12513, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12496, + "src": "3909:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3904:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12509, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "3891:6:33", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 12515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3891:25:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 12516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3920:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3891:30:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12522, + "nodeType": "IfStatement", + "src": "3887:47:33", + "trueBody": { + "expression": { + "id": 12520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12518, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12499, + "src": "3923:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 12519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3933:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3923:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12521, + "nodeType": "ExpressionStatement", + "src": "3923:11:33" + } + } + ] + }, + "documentation": { + "id": 12490, + "nodeType": "StructuredDocumentation", + "src": "3104:618:33", + "text": " @notice Calculates floor(x * y / 2**offset) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param offset The offset as an uint256, can't be greater than 256\n @return result The result as an uint256" + }, + "id": 12524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulShiftRoundUp", + "nameLocation": "3736:15:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12492, + "mutability": "mutable", + "name": "x", + "nameLocation": "3760:1:33", + "nodeType": "VariableDeclaration", + "scope": 12524, + "src": "3752:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3752:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12494, + "mutability": "mutable", + "name": "y", + "nameLocation": "3771:1:33", + "nodeType": "VariableDeclaration", + "scope": 12524, + "src": "3763:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12493, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3763:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12496, + "mutability": "mutable", + "name": "offset", + "nameLocation": "3780:6:33", + "nodeType": "VariableDeclaration", + "scope": 12524, + "src": "3774:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 12495, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3774:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3751:36:33" + }, + "returnParameters": { + "id": 12500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12499, + "mutability": "mutable", + "name": "result", + "nameLocation": "3819:6:33", + "nodeType": "VariableDeclaration", + "scope": 12524, + "src": "3811:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3811:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3810:16:33" + }, + "scope": 12771, + "src": "3727:214:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12568, + "nodeType": "Block", + "src": "4678:325:33", + "statements": [ + { + "assignments": [ + 12537 + ], + "declarations": [ + { + "constant": false, + "id": 12537, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "4696:5:33", + "nodeType": "VariableDeclaration", + "scope": 12568, + "src": "4688:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4688:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12538, + "nodeType": "VariableDeclarationStatement", + "src": "4688:13:33" + }, + { + "assignments": [ + 12540 + ], + "declarations": [ + { + "constant": false, + "id": 12540, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "4719:5:33", + "nodeType": "VariableDeclaration", + "scope": 12568, + "src": "4711:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4711:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12541, + "nodeType": "VariableDeclarationStatement", + "src": "4711:13:33" + }, + { + "expression": { + "id": 12546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12542, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12537, + "src": "4735:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12543, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12527, + "src": "4743:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 12544, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12529, + "src": "4748:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4743:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4735:19:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12547, + "nodeType": "ExpressionStatement", + "src": "4735:19:33" + }, + { + "id": 12557, + "nodeType": "UncheckedBlock", + "src": "4809:106:33", + "statements": [ + { + "expression": { + "id": 12555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12548, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12540, + "src": "4833:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12549, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12527, + "src": "4841:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 12552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323536", + "id": 12550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4847:3:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 12551, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12529, + "src": "4853:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4847:12:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 12553, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4846:14:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "4841:19:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4833:27:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12556, + "nodeType": "ExpressionStatement", + "src": "4833:27:33" + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 12559, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12527, + "src": "4954:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 12560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4957:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 12561, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12529, + "src": "4962:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4957:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12563, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12531, + "src": "4970:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12564, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12537, + "src": "4983:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12565, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12540, + "src": "4990:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12558, + "name": "_getEndOfDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12740, + "src": "4932:21:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 12566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4932:64:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12535, + "id": 12567, + "nodeType": "Return", + "src": "4925:71:33" + } + ] + }, + "documentation": { + "id": 12525, + "nodeType": "StructuredDocumentation", + "src": "3947:614:33", + "text": " @notice Calculates floor(x << offset / y) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param offset The number of bit to shift x as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 12569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "shiftDivRoundDown", + "nameLocation": "4575:17:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12527, + "mutability": "mutable", + "name": "x", + "nameLocation": "4601:1:33", + "nodeType": "VariableDeclaration", + "scope": 12569, + "src": "4593:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4593:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12529, + "mutability": "mutable", + "name": "offset", + "nameLocation": "4610:6:33", + "nodeType": "VariableDeclaration", + "scope": 12569, + "src": "4604:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 12528, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4604:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12531, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "4626:11:33", + "nodeType": "VariableDeclaration", + "scope": 12569, + "src": "4618:19:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4618:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4592:46:33" + }, + "returnParameters": { + "id": 12535, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12534, + "mutability": "mutable", + "name": "result", + "nameLocation": "4670:6:33", + "nodeType": "VariableDeclaration", + "scope": 12569, + "src": "4662:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4662:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4661:16:33" + }, + "scope": 12771, + "src": "4566:437:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12603, + "nodeType": "Block", + "src": "5735:134:33", + "statements": [ + { + "expression": { + "id": 12587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12581, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12579, + "src": "5745:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12583, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12572, + "src": "5772:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12584, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12574, + "src": "5775:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 12585, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12576, + "src": "5783:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12582, + "name": "shiftDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12569, + "src": "5754:17:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint8_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint8,uint256) pure returns (uint256)" + } + }, + "id": 12586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5754:41:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5745:50:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12588, + "nodeType": "ExpressionStatement", + "src": "5745:50:33" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 12590, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12572, + "src": "5816:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 12591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5819:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 12592, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12574, + "src": "5824:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5819:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12594, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12576, + "src": "5832:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12589, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "5809:6:33", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 12595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5809:35:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 12596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5848:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5809:40:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12602, + "nodeType": "IfStatement", + "src": "5805:57:33", + "trueBody": { + "expression": { + "id": 12600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12598, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12579, + "src": "5851:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 12599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5861:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5851:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12601, + "nodeType": "ExpressionStatement", + "src": "5851:11:33" + } + } + ] + }, + "documentation": { + "id": 12570, + "nodeType": "StructuredDocumentation", + "src": "5009:611:33", + "text": " @notice Calculates ceil(x << offset / y) with full precision\n The result will be rounded up\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param offset The number of bit to shift x as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 12604, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "shiftDivRoundUp", + "nameLocation": "5634:15:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12572, + "mutability": "mutable", + "name": "x", + "nameLocation": "5658:1:33", + "nodeType": "VariableDeclaration", + "scope": 12604, + "src": "5650:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12571, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5650:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12574, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5667:6:33", + "nodeType": "VariableDeclaration", + "scope": 12604, + "src": "5661:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 12573, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5661:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12576, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "5683:11:33", + "nodeType": "VariableDeclaration", + "scope": 12604, + "src": "5675:19:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12575, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5675:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5649:46:33" + }, + "returnParameters": { + "id": 12580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12579, + "mutability": "mutable", + "name": "result", + "nameLocation": "5727:6:33", + "nodeType": "VariableDeclaration", + "scope": 12604, + "src": "5719:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5719:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5718:16:33" + }, + "scope": 12771, + "src": "5625:244:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12617, + "nodeType": "Block", + "src": "6288:451:33", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6592:141:33", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6606:30:33", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6623:1:33" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6626:1:33" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6633:1:33", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "6629:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "6629:6:33" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier", + "src": "6616:6:33" + }, + "nodeType": "YulFunctionCall", + "src": "6616:20:33" + }, + "variables": [ + { + "name": "mm", + "nodeType": "YulTypedName", + "src": "6610:2:33", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6649:18:33", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6662:1:33" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6665:1:33" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6658:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "6658:9:33" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "6649:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6680:43:33", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "mm", + "nodeType": "YulIdentifier", + "src": "6697:2:33" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "6701:5:33" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6693:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "6693:14:33" + }, + { + "arguments": [ + { + "name": "mm", + "nodeType": "YulIdentifier", + "src": "6712:2:33" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "6716:5:33" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6709:2:33" + }, + "nodeType": "YulFunctionCall", + "src": "6709:13:33" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6689:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "6689:34:33" + }, + "variableNames": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "6680:5:33" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 12612, + "isOffset": false, + "isSlot": false, + "src": "6649:5:33", + "valueSize": 1 + }, + { + "declaration": 12612, + "isOffset": false, + "isSlot": false, + "src": "6701:5:33", + "valueSize": 1 + }, + { + "declaration": 12612, + "isOffset": false, + "isSlot": false, + "src": "6716:5:33", + "valueSize": 1 + }, + { + "declaration": 12614, + "isOffset": false, + "isSlot": false, + "src": "6680:5:33", + "valueSize": 1 + }, + { + "declaration": 12607, + "isOffset": false, + "isSlot": false, + "src": "6623:1:33", + "valueSize": 1 + }, + { + "declaration": 12607, + "isOffset": false, + "isSlot": false, + "src": "6662:1:33", + "valueSize": 1 + }, + { + "declaration": 12609, + "isOffset": false, + "isSlot": false, + "src": "6626:1:33", + "valueSize": 1 + }, + { + "declaration": 12609, + "isOffset": false, + "isSlot": false, + "src": "6665:1:33", + "valueSize": 1 + } + ], + "id": 12616, + "nodeType": "InlineAssembly", + "src": "6583:150:33" + } + ] + }, + "documentation": { + "id": 12605, + "nodeType": "StructuredDocumentation", + "src": "5875:312:33", + "text": " @notice Helper function to return the result of `x * y` as 2 uint256\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @return prod0 The least significant 256 bits of the product\n @return prod1 The most significant 256 bits of the product" + }, + "id": 12618, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getMulProds", + "nameLocation": "6201:12:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12607, + "mutability": "mutable", + "name": "x", + "nameLocation": "6222:1:33", + "nodeType": "VariableDeclaration", + "scope": 12618, + "src": "6214:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6214:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12609, + "mutability": "mutable", + "name": "y", + "nameLocation": "6233:1:33", + "nodeType": "VariableDeclaration", + "scope": 12618, + "src": "6225:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12608, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6225:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6213:22:33" + }, + "returnParameters": { + "id": 12615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12612, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "6266:5:33", + "nodeType": "VariableDeclaration", + "scope": 12618, + "src": "6258:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12611, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6258:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12614, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "6281:5:33", + "nodeType": "VariableDeclaration", + "scope": 12618, + "src": "6273:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6273:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6257:30:33" + }, + "scope": 12771, + "src": "6192:547:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 12739, + "nodeType": "Block", + "src": "7350:3225:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12634, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12629, + "src": "7422:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 12635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7431:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7422:10:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 12737, + "nodeType": "Block", + "src": "7535:3034:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12645, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12629, + "src": "7640:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 12646, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "7649:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7640:20:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12651, + "nodeType": "IfStatement", + "src": "7636:66:33", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12648, + "name": "Uint256x256Math__MulDivOverflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12370, + "src": "7669:31:33", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 12649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7669:33:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12650, + "nodeType": "RevertStatement", + "src": "7662:40:33" + } + }, + { + "assignments": [ + 12653 + ], + "declarations": [ + { + "constant": false, + "id": 12653, + "mutability": "mutable", + "name": "remainder", + "nameLocation": "7809:9:33", + "nodeType": "VariableDeclaration", + "scope": 12737, + "src": "7801:17:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7801:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12654, + "nodeType": "VariableDeclarationStatement", + "src": "7801:17:33" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "7841:291:33", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7910:38:33", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "7930:1:33" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "7933:1:33" + }, + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "7936:11:33" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier", + "src": "7923:6:33" + }, + "nodeType": "YulFunctionCall", + "src": "7923:25:33" + }, + "variableNames": [ + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "7910:9:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8030:41:33", + "value": { + "arguments": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "8043:5:33" + }, + { + "arguments": [ + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "8053:9:33" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8064:5:33" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8050:2:33" + }, + "nodeType": "YulFunctionCall", + "src": "8050:20:33" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8039:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "8039:32:33" + }, + "variableNames": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "8030:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8088:30:33", + "value": { + "arguments": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8101:5:33" + }, + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "8108:9:33" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8097:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "8097:21:33" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8088:5:33" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 12625, + "isOffset": false, + "isSlot": false, + "src": "7936:11:33", + "valueSize": 1 + }, + { + "declaration": 12627, + "isOffset": false, + "isSlot": false, + "src": "8064:5:33", + "valueSize": 1 + }, + { + "declaration": 12627, + "isOffset": false, + "isSlot": false, + "src": "8088:5:33", + "valueSize": 1 + }, + { + "declaration": 12627, + "isOffset": false, + "isSlot": false, + "src": "8101:5:33", + "valueSize": 1 + }, + { + "declaration": 12629, + "isOffset": false, + "isSlot": false, + "src": "8030:5:33", + "valueSize": 1 + }, + { + "declaration": 12629, + "isOffset": false, + "isSlot": false, + "src": "8043:5:33", + "valueSize": 1 + }, + { + "declaration": 12653, + "isOffset": false, + "isSlot": false, + "src": "7910:9:33", + "valueSize": 1 + }, + { + "declaration": 12653, + "isOffset": false, + "isSlot": false, + "src": "8053:9:33", + "valueSize": 1 + }, + { + "declaration": 12653, + "isOffset": false, + "isSlot": false, + "src": "8108:9:33", + "valueSize": 1 + }, + { + "declaration": 12621, + "isOffset": false, + "isSlot": false, + "src": "7930:1:33", + "valueSize": 1 + }, + { + "declaration": 12623, + "isOffset": false, + "isSlot": false, + "src": "7933:1:33", + "valueSize": 1 + } + ], + "id": 12655, + "nodeType": "InlineAssembly", + "src": "7832:300:33" + }, + { + "id": 12736, + "nodeType": "UncheckedBlock", + "src": "8333:2226:33", + "statements": [ + { + "assignments": [ + 12657 + ], + "declarations": [ + { + "constant": false, + "id": 12657, + "mutability": "mutable", + "name": "lpotdod", + "nameLocation": "8475:7:33", + "nodeType": "VariableDeclaration", + "scope": 12736, + "src": "8467:15:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12656, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8467:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12665, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12658, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "8485:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "8500:12:33", + "subExpression": { + "id": 12659, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "8501:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 12661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8515:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8500:16:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12663, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8499:18:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8485:32:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8467:50:33" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8544:419:33", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8620:40:33", + "value": { + "arguments": [ + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "8639:11:33" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8652:7:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8635:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "8635:25:33" + }, + "variableNames": [ + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "8620:11:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8738:28:33", + "value": { + "arguments": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8751:5:33" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8758:7:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8747:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "8747:19:33" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8738:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8897:48:33", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8920:1:33", + "type": "", + "value": "0" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8923:7:33" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8916:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "8916:15:33" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8933:7:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8912:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "8912:29:33" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8943:1:33", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8908:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "8908:37:33" + }, + "variableNames": [ + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8897:7:33" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 12625, + "isOffset": false, + "isSlot": false, + "src": "8620:11:33", + "valueSize": 1 + }, + { + "declaration": 12625, + "isOffset": false, + "isSlot": false, + "src": "8639:11:33", + "valueSize": 1 + }, + { + "declaration": 12657, + "isOffset": false, + "isSlot": false, + "src": "8652:7:33", + "valueSize": 1 + }, + { + "declaration": 12657, + "isOffset": false, + "isSlot": false, + "src": "8758:7:33", + "valueSize": 1 + }, + { + "declaration": 12657, + "isOffset": false, + "isSlot": false, + "src": "8897:7:33", + "valueSize": 1 + }, + { + "declaration": 12657, + "isOffset": false, + "isSlot": false, + "src": "8923:7:33", + "valueSize": 1 + }, + { + "declaration": 12657, + "isOffset": false, + "isSlot": false, + "src": "8933:7:33", + "valueSize": 1 + }, + { + "declaration": 12627, + "isOffset": false, + "isSlot": false, + "src": "8738:5:33", + "valueSize": 1 + }, + { + "declaration": 12627, + "isOffset": false, + "isSlot": false, + "src": "8751:5:33", + "valueSize": 1 + } + ], + "id": 12666, + "nodeType": "InlineAssembly", + "src": "8535:428:33" + }, + { + "expression": { + "id": 12671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12667, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12627, + "src": "9036:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12668, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12629, + "src": "9045:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12669, + "name": "lpotdod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12657, + "src": "9053:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9045:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9036:24:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12672, + "nodeType": "ExpressionStatement", + "src": "9036:24:33" + }, + { + "assignments": [ + 12674 + ], + "declarations": [ + { + "constant": false, + "id": 12674, + "mutability": "mutable", + "name": "inverse", + "nameLocation": "9401:7:33", + "nodeType": "VariableDeclaration", + "scope": 12736, + "src": "9393:15:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9393:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12681, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 12675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9412:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12676, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "9416:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9412:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12678, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9411:17:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "32", + "id": 12679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9431:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "9411:21:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9393:39:33" + }, + { + "expression": { + "id": 12688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12682, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9660:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 12683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9671:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12684, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "9675:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12685, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9689:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9675:21:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9671:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9660:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12689, + "nodeType": "ExpressionStatement", + "src": "9660:36:33" + }, + { + "expression": { + "id": 12696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12690, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9733:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 12691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9744:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12692, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "9748:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12693, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9762:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9748:21:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9744:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9733:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12697, + "nodeType": "ExpressionStatement", + "src": "9733:36:33" + }, + { + "expression": { + "id": 12704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12698, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9807:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 12699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9818:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12700, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "9822:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12701, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9836:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9822:21:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9818:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9807:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12705, + "nodeType": "ExpressionStatement", + "src": "9807:36:33" + }, + { + "expression": { + "id": 12712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12706, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9881:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 12707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9892:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12708, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "9896:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12709, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9910:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9896:21:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9892:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9881:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12713, + "nodeType": "ExpressionStatement", + "src": "9881:36:33" + }, + { + "expression": { + "id": 12720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12714, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9955:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 12715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9966:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12716, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "9970:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12717, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "9984:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9970:21:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9966:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9955:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12721, + "nodeType": "ExpressionStatement", + "src": "9955:36:33" + }, + { + "expression": { + "id": 12728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12722, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "10030:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 12723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10041:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12724, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "10045:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12725, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "10059:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10045:21:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10041:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10030:36:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12729, + "nodeType": "ExpressionStatement", + "src": "10030:36:33" + }, + { + "expression": { + "id": 12734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12730, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12632, + "src": "10520:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12731, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12627, + "src": "10529:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 12732, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12674, + "src": "10537:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10529:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10520:24:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12735, + "nodeType": "ExpressionStatement", + "src": "10520:24:33" + } + ] + } + ] + }, + "id": 12738, + "nodeType": "IfStatement", + "src": "7418:3151:33", + "trueBody": { + "id": 12644, + "nodeType": "Block", + "src": "7434:95:33", + "statements": [ + { + "id": 12643, + "nodeType": "UncheckedBlock", + "src": "7448:71:33", + "statements": [ + { + "expression": { + "id": 12641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12637, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12632, + "src": "7476:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12638, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12627, + "src": "7485:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 12639, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12625, + "src": "7493:11:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7485:19:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7476:28:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12642, + "nodeType": "ExpressionStatement", + "src": "7476:28:33" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 12619, + "nodeType": "StructuredDocumentation", + "src": "6745:430:33", + "text": " @notice Helper function to return the result of `x * y / denominator` with full precision\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param denominator The divisor as an uint256\n @param prod0 The least significant 256 bits of the product\n @param prod1 The most significant 256 bits of the product\n @return result The result as an uint256" + }, + "id": 12740, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getEndOfDivRoundDown", + "nameLocation": "7189:21:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12621, + "mutability": "mutable", + "name": "x", + "nameLocation": "7219:1:33", + "nodeType": "VariableDeclaration", + "scope": 12740, + "src": "7211:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7211:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12623, + "mutability": "mutable", + "name": "y", + "nameLocation": "7230:1:33", + "nodeType": "VariableDeclaration", + "scope": 12740, + "src": "7222:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7222:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12625, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "7241:11:33", + "nodeType": "VariableDeclaration", + "scope": 12740, + "src": "7233:19:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12624, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7233:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12627, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "7262:5:33", + "nodeType": "VariableDeclaration", + "scope": 12740, + "src": "7254:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7254:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12629, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "7277:5:33", + "nodeType": "VariableDeclaration", + "scope": 12740, + "src": "7269:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7269:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7210:73:33" + }, + "returnParameters": { + "id": 12633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12632, + "mutability": "mutable", + "name": "result", + "nameLocation": "7338:6:33", + "nodeType": "VariableDeclaration", + "scope": 12740, + "src": "7330:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7330:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7329:16:33" + }, + "scope": 12771, + "src": "7180:3395:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 12769, + "nodeType": "Block", + "src": "10775:619:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12748, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12743, + "src": "10789:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 12749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10794:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10789:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12753, + "nodeType": "IfStatement", + "src": "10785:20:33", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 12751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10804:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 12747, + "id": 12752, + "nodeType": "Return", + "src": "10797:8:33" + } + }, + { + "assignments": [ + 12755 + ], + "declarations": [ + { + "constant": false, + "id": 12755, + "mutability": "mutable", + "name": "msb", + "nameLocation": "10824:3:33", + "nodeType": "VariableDeclaration", + "scope": 12769, + "src": "10816:11:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12754, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10816:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12760, + "initialValue": { + "arguments": [ + { + "id": 12758, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12743, + "src": "10857:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 12756, + "name": "BitMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10656, + "src": "10830:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BitMath_$10656_$", + "typeString": "type(library BitMath)" + } + }, + "id": 12757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10838:18:33", + "memberName": "mostSignificantBit", + "nodeType": "MemberAccess", + "referencedDeclaration": 10645, + "src": "10830:26:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 12759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10830:29:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10816:43:33" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "10879:470:33", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10893:28:33", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10910:1:33", + "type": "", + "value": "1" + }, + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "10913:3:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "10906:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "10906:11:33" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10919:1:33", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "10902:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "10902:19:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10893:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10935:42:33", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10948:1:33", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10955:5:33" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10966:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10969:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "10962:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "10962:13:33" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10951:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "10951:25:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "10944:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "10944:33:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10935:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10990:42:33", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11003:1:33", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11010:5:33" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11021:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11024:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11017:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11017:13:33" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11006:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11006:25:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "10999:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "10999:33:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10990:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11045:42:33", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11058:1:33", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11065:5:33" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11076:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11079:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11072:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11072:13:33" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11061:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11061:25:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11054:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11054:33:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11045:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11100:42:33", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11113:1:33", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11120:5:33" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11131:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11134:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11127:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11127:13:33" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11116:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11116:25:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11109:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11109:33:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11100:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11155:42:33", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11168:1:33", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11175:5:33" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11186:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11189:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11182:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11182:13:33" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11171:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11171:25:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11164:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11164:33:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11155:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11210:42:33", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11223:1:33", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11230:5:33" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11241:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11244:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11237:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11237:13:33" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11226:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11226:25:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11219:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11219:33:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11210:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11265:42:33", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11278:1:33", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11285:5:33" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11296:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11299:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11292:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11292:13:33" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11281:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11281:25:33" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11274:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11274:33:33" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11265:5:33" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11321:18:33", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11330:1:33" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11333:5:33" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11326:3:33" + }, + "nodeType": "YulFunctionCall", + "src": "11326:13:33" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11321:1:33" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 12755, + "isOffset": false, + "isSlot": false, + "src": "10913:3:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "10893:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "10935:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "10955:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "10969:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "10990:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11010:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11024:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11045:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11065:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11079:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11100:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11120:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11134:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11155:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11175:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11189:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11210:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11230:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11244:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11265:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11285:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11299:5:33", + "valueSize": 1 + }, + { + "declaration": 12746, + "isOffset": false, + "isSlot": false, + "src": "11333:5:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "10966:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11021:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11076:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11131:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11186:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11241:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11296:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11321:1:33", + "valueSize": 1 + }, + { + "declaration": 12743, + "isOffset": false, + "isSlot": false, + "src": "11330:1:33", + "valueSize": 1 + } + ], + "id": 12761, + "nodeType": "InlineAssembly", + "src": "10870:479:33" + }, + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12762, + "name": "sqrtX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12746, + "src": "11366:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 12763, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12743, + "src": "11374:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11366:9:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 12766, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12743, + "src": "11386:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "11366:21:33", + "trueExpression": { + "id": 12765, + "name": "sqrtX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12746, + "src": "11378:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12747, + "id": 12768, + "nodeType": "Return", + "src": "11359:28:33" + } + ] + }, + "documentation": { + "id": 12741, + "nodeType": "StructuredDocumentation", + "src": "10581:126:33", + "text": " @notice Calculates the square root of x\n @dev Credit to OpenZeppelin's Math library under MIT license" + }, + "id": 12770, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "10721:4:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12743, + "mutability": "mutable", + "name": "x", + "nameLocation": "10734:1:33", + "nodeType": "VariableDeclaration", + "scope": 12770, + "src": "10726:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12742, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10726:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10725:11:33" + }, + "returnParameters": { + "id": 12747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12746, + "mutability": "mutable", + "name": "sqrtX", + "nameLocation": "10768:5:33", + "nodeType": "VariableDeclaration", + "scope": 12770, + "src": "10760:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12745, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10760:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10759:15:33" + }, + "scope": 12771, + "src": "10712:682:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 12772, + "src": "221:11175:33", + "usedErrors": [ + 12368, + 12370 + ], + "usedEvents": [] + } + ], + "src": "33:11364:33" + }, + "id": 33 + } + } + } +} \ No newline at end of file diff --git a/src/artifacts/build-info/8c82b71e21e53d0871534b06cc98f82f.json b/src/artifacts/build-info/8c82b71e21e53d0871534b06cc98f82f.json new file mode 100644 index 00000000..8d622bb9 --- /dev/null +++ b/src/artifacts/build-info/8c82b71e21e53d0871534b06cc98f82f.json @@ -0,0 +1,369383 @@ +{ + "id": "8c82b71e21e53d0871534b06cc98f82f", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.20", + "solcLongVersion": "0.8.20+commit.a1b79de6", + "input": { + "language": "Solidity", + "sources": { + "src/LBFactory.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport {EnumerableSet} from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\nimport {EnumerableMap} from \"@openzeppelin/contracts/utils/structs/EnumerableMap.sol\";\nimport {AccessControlUpgradeable} from \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {Ownable2StepUpgradeable, OwnableUpgradeable} from \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\nimport {UpgradeableBeacon} from \"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol\";\n\nimport {PairParameterHelper} from \"./libraries/PairParameterHelper.sol\";\nimport {Encoded} from \"./libraries/math/Encoded.sol\";\nimport {ImmutableClone} from \"./libraries/ImmutableClone.sol\";\nimport {PriceHelper} from \"./libraries/PriceHelper.sol\";\nimport {SafeCast} from \"./libraries/math/SafeCast.sol\";\nimport {Hooks} from \"./libraries/Hooks.sol\";\n\nimport {ILBFactory} from \"./interfaces/ILBFactory.sol\";\nimport {ILBPair} from \"./interfaces/ILBPair.sol\";\nimport {ILBHooks} from \"./interfaces/ILBHooks.sol\";\nimport {LBPairBeaconProxy} from \"./LBPairBeaconProxy.sol\";\nimport {Create2} from \"@openzeppelin/contracts/utils/Create2.sol\";\n\n\n/**\n * @title Liquidity Book Factory\n * @notice Contract used to deploy and register new LBPairs.\n * Enables setting fee parameters, flashloan fees and LBPair implementation.\n * Unless the `isOpen` is `true`, only the owner of the factory can create pairs.\n */\ncontract LBFactory is Ownable2StepUpgradeable, AccessControlUpgradeable, ILBFactory {\n using SafeCast for uint256;\n using Encoded for bytes32;\n using PairParameterHelper for bytes32;\n using EnumerableSet for EnumerableSet.AddressSet;\n using EnumerableSet for EnumerableSet.UintSet;\n using EnumerableMap for EnumerableMap.UintToUintMap;\n\n bytes32 public constant LB_HOOKS_MANAGER_ROLE = keccak256(\"LB_HOOKS_MANAGER_ROLE\");\n bytes32 public constant LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = keccak256(\"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\");\n\n uint256 private constant _OFFSET_IS_PRESET_OPEN = 255;\n\n uint256 private constant _MIN_BIN_STEP = 1; // 0.001%\n\n uint256 private constant _MAX_FLASHLOAN_FEE = 0.1e18; // 10%\n\n address private _feeRecipient;\n uint256 private _flashLoanFee;\n\n address private _lbPairBeacon;\n\n ILBPair[] private _allLBPairs;\n\n /**\n * @dev Mapping from a (tokenA, tokenB, binStep) to a LBPair. The tokens are ordered to save gas, but they can be\n * in the reverse order in the actual pair.\n * Always query one of the 2 tokens of the pair to assert the order of the 2 tokens\n */\n mapping(IERC20 => mapping(IERC20 => mapping(uint256 => LBPairInformation))) private _lbPairsInfo;\n\n EnumerableMap.UintToUintMap private _presets;\n EnumerableSet.AddressSet private _quoteAssetWhitelist;\n\n /**\n * @dev Mapping from a (tokenA, tokenB) to a set of available bin steps, this is used to keep track of the\n * bin steps that are already used for a pair.\n * The tokens are ordered to save gas, but they can be in the reverse order in the actual pair.\n * Always query one of the 2 tokens of the pair to assert the order of the 2 tokens\n */\n mapping(IERC20 => mapping(IERC20 => EnumerableSet.UintSet)) private _availableLBPairBinSteps;\n\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializer function\n * @param feeRecipient The address of the fee recipient\n * @param flashLoanFee The value of the fee for flash loan\n */\n function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) initializer external {\n __Ownable_init(initialOwner);\n\n if (flashLoanFee > _MAX_FLASHLOAN_FEE) revert LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE);\n\n _setFeeRecipient(feeRecipient);\n\n _flashLoanFee = flashLoanFee;\n _lbPairBeacon = lbPairBeaconAddress;\n emit FlashLoanFeeSet(0, flashLoanFee);\n }\n\n /**\n * @notice Get the minimum bin step a pair can have\n * @return minBinStep\n */\n function getMinBinStep() external pure override returns (uint256 minBinStep) {\n return _MIN_BIN_STEP;\n }\n\n /**\n * @notice Get the protocol fee recipient\n * @return feeRecipient\n */\n function getFeeRecipient() external view override returns (address feeRecipient) {\n return _feeRecipient;\n }\n\n /**\n * @notice Get the maximum fee percentage for flashLoans\n * @return maxFee\n */\n function getMaxFlashLoanFee() external pure override returns (uint256 maxFee) {\n return _MAX_FLASHLOAN_FEE;\n }\n\n /**\n * @notice Get the fee for flash loans, in 1e18\n * @return flashLoanFee The fee for flash loans, in 1e18\n */\n function getFlashLoanFee() external view override returns (uint256 flashLoanFee) {\n return _flashLoanFee;\n }\n\n /**\n * @notice Get the address of the LBPair beacon\n * @return lbPairBeacon The address of the LBPair beacon\n */\n function getLBPairBeacon() external view override returns (address lbPairBeacon) {\n return _lbPairBeacon;\n }\n\n /**\n * @notice View function to return the number of LBPairs created\n * @return lbPairNumber\n */\n function getNumberOfLBPairs() external view override returns (uint256 lbPairNumber) {\n return _allLBPairs.length;\n }\n\n /**\n * @notice View function to return the LBPair created at index `index`\n * @param index The index\n * @return lbPair The address of the LBPair at index `index`\n */\n function getLBPairAtIndex(uint256 index) external view override returns (ILBPair lbPair) {\n return _allLBPairs[index];\n }\n\n /**\n * @notice View function to return the number of quote assets whitelisted\n * @return numberOfQuoteAssets The number of quote assets\n */\n function getNumberOfQuoteAssets() external view override returns (uint256 numberOfQuoteAssets) {\n return _quoteAssetWhitelist.length();\n }\n\n /**\n * @notice View function to return the quote asset whitelisted at index `index`\n * @param index The index\n * @return asset The address of the quoteAsset at index `index`\n */\n function getQuoteAssetAtIndex(uint256 index) external view override returns (IERC20 asset) {\n return IERC20(_quoteAssetWhitelist.at(index));\n }\n\n /**\n * @notice View function to return whether a token is a quotedAsset (true) or not (false)\n * @param token The address of the asset\n * @return isQuote Whether the token is a quote asset or not\n */\n function isQuoteAsset(IERC20 token) external view override returns (bool isQuote) {\n return _quoteAssetWhitelist.contains(address(token));\n }\n\n /**\n * @notice Returns the LBPairInformation if it exists,\n * if not, then the address 0 is returned. The order doesn't matter\n * @param tokenA The address of the first token of the pair\n * @param tokenB The address of the second token of the pair\n * @param binStep The bin step of the LBPair\n * @return lbPairInformation The LBPairInformation\n */\n function getLBPairInformation(IERC20 tokenA, IERC20 tokenB, uint256 binStep)\n external\n view\n override\n returns (LBPairInformation memory lbPairInformation)\n {\n return _getLBPairInformation(tokenA, tokenB, binStep);\n }\n\n /**\n * @notice View function to return the different parameters of the preset\n * Will revert if the preset doesn't exist\n * @param binStep The bin step of the preset\n * @return baseFactor The base factor\n * @return filterPeriod The filter period of the preset\n * @return decayPeriod The decay period of the preset\n * @return reductionFactor The reduction factor of the preset\n * @return variableFeeControl The variable fee control of the preset\n * @return protocolShare The protocol share of the preset\n * @return maxVolatilityAccumulator The max volatility accumulator of the preset\n * @return isOpen Whether the preset is open or not\n */\n function getPreset(uint256 binStep)\n external\n view\n override\n returns (\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxVolatilityAccumulator,\n bool isOpen\n )\n {\n if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep);\n\n bytes32 preset = bytes32(_presets.get(binStep));\n\n baseFactor = preset.getBaseFactor();\n filterPeriod = preset.getFilterPeriod();\n decayPeriod = preset.getDecayPeriod();\n reductionFactor = preset.getReductionFactor();\n variableFeeControl = preset.getVariableFeeControl();\n protocolShare = preset.getProtocolShare();\n maxVolatilityAccumulator = preset.getMaxVolatilityAccumulator();\n\n isOpen = preset.decodeBool(_OFFSET_IS_PRESET_OPEN);\n }\n\n /**\n * @notice View function to return the list of available binStep with a preset\n * @return binStepWithPreset The list of binStep\n */\n function getAllBinSteps() external view override returns (uint256[] memory binStepWithPreset) {\n return _presets.keys();\n }\n\n /**\n * @notice View function to return the list of open binSteps\n * @return openBinStep The list of open binSteps\n */\n function getOpenBinSteps() external view override returns (uint256[] memory openBinStep) {\n uint256 length = _presets.length();\n\n if (length > 0) {\n openBinStep = new uint256[](length);\n\n uint256 index;\n\n for (uint256 i; i < length; ++i) {\n (uint256 binStep, uint256 preset) = _presets.at(i);\n\n if (_isPresetOpen(bytes32(preset))) {\n openBinStep[index] = binStep;\n index++;\n }\n }\n\n if (index < length) {\n assembly {\n mstore(openBinStep, index)\n }\n }\n }\n }\n\n /**\n * @notice View function to return all the LBPair of a pair of tokens\n * @param tokenX The first token of the pair\n * @param tokenY The second token of the pair\n * @return lbPairsAvailable The list of available LBPairs\n */\n function getAllLBPairs(IERC20 tokenX, IERC20 tokenY)\n external\n view\n override\n returns (LBPairInformation[] memory lbPairsAvailable)\n {\n unchecked {\n (IERC20 tokenA, IERC20 tokenB) = _sortTokens(tokenX, tokenY);\n\n EnumerableSet.UintSet storage addressSet = _availableLBPairBinSteps[tokenA][tokenB];\n\n uint256 length = addressSet.length();\n\n if (length > 0) {\n lbPairsAvailable = new LBPairInformation[](length);\n\n mapping(uint256 => LBPairInformation) storage lbPairsInfo = _lbPairsInfo[tokenA][tokenB];\n\n for (uint256 i = 0; i < length; ++i) {\n uint16 binStep = addressSet.at(i).safe16();\n\n lbPairsAvailable[i] = LBPairInformation({\n binStep: binStep,\n LBPair: lbPairsInfo[binStep].LBPair,\n createdByOwner: lbPairsInfo[binStep].createdByOwner,\n ignoredForRouting: lbPairsInfo[binStep].ignoredForRouting\n });\n }\n }\n }\n }\n\n // Getter function for the constant variable\n function getPauserRole() external pure returns (bytes32) {\n return LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE;\n }\n\n /**\n * @notice Create a liquidity bin LBPair for tokenX and tokenY\n * @param tokenX The address of the first token\n * @param tokenY The address of the second token\n * @param activeId The active id of the pair\n * @param binStep The bin step in basis point, used to calculate log(1 + binStep / 10_000)\n * @return pair The address of the newly created LBPair\n */\n function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)\n external\n override\n returns (ILBPair pair)\n {\n if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep);\n\n bytes32 preset = bytes32(_presets.get(binStep));\n bool isOwner = msg.sender == owner();\n\n if (!_isPresetOpen(preset) && !isOwner) {\n revert LBFactory__PresetIsLockedForUsers(msg.sender, binStep);\n }\n\n if (!_quoteAssetWhitelist.contains(address(tokenY))) revert LBFactory__QuoteAssetNotWhitelisted(tokenY);\n\n if (tokenX == tokenY) revert LBFactory__IdenticalAddresses(tokenX);\n\n // safety check, making sure that the price can be calculated\n PriceHelper.getPriceFromId(activeId, binStep);\n\n // We sort token for storage efficiency, only one input needs to be stored because they are sorted\n (IERC20 tokenA, IERC20 tokenB) = _sortTokens(tokenX, tokenY);\n // single check is sufficient\n if (address(tokenA) == address(0)) revert LBFactory__AddressZero();\n if (address(_lbPairsInfo[tokenA][tokenB][binStep].LBPair) != address(0)) {\n revert LBFactory__LBPairAlreadyExists(tokenX, tokenY, binStep);\n }\n\n {\n bytes memory data = abi.encodeWithSignature(\"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)\",\n preset.getBaseFactor(),\n preset.getFilterPeriod(),\n preset.getDecayPeriod(),\n preset.getReductionFactor(),\n preset.getVariableFeeControl(),\n preset.getProtocolShare(),\n preset.getMaxVolatilityAccumulator(),\n activeId\n );\n\n bytes32 salt = keccak256(abi.encodePacked(tokenA, tokenB, binStep));\n\n bytes memory bytecode = abi.encodePacked(\n type(LBPairBeaconProxy).creationCode,\n abi.encode(_lbPairBeacon, tokenX, tokenY, binStep, data)\n );\n\n // Deterministic deployment\n pair = ILBPair(Create2.deploy(0, salt, bytecode));\n }\n\n _lbPairsInfo[tokenA][tokenB][binStep] =\n LBPairInformation({binStep: binStep, LBPair: pair, createdByOwner: isOwner, ignoredForRouting: false});\n\n _allLBPairs.push(pair);\n _availableLBPairBinSteps[tokenA][tokenB].add(binStep);\n\n emit LBPairCreated(tokenX, tokenY, binStep, pair, _allLBPairs.length - 1);\n }\n\n /**\n * @notice Function to set whether the pair is ignored or not for routing, it will make the pair unusable by the router\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The pair doesn't exist\n * - The ignored state is already in the same state\n * @param tokenX The address of the first token of the pair\n * @param tokenY The address of the second token of the pair\n * @param binStep The bin step in basis point of the pair\n * @param ignored Whether to ignore (true) or not (false) the pair for routing\n */\n function setLBPairIgnored(IERC20 tokenX, IERC20 tokenY, uint16 binStep, bool ignored) external override onlyOwner {\n (IERC20 tokenA, IERC20 tokenB) = _sortTokens(tokenX, tokenY);\n\n LBPairInformation memory pairInformation = _lbPairsInfo[tokenA][tokenB][binStep];\n if (address(pairInformation.LBPair) == address(0)) {\n revert LBFactory__LBPairDoesNotExist(tokenX, tokenY, binStep);\n }\n\n if (pairInformation.ignoredForRouting == ignored) revert LBFactory__LBPairIgnoredIsAlreadyInTheSameState();\n\n _lbPairsInfo[tokenA][tokenB][binStep].ignoredForRouting = ignored;\n\n emit LBPairIgnoredStateChanged(pairInformation.LBPair, ignored);\n }\n\n /**\n * @notice Sets the preset parameters of a bin step\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The binStep is lower than the minimum bin step\n * @param binStep The bin step in basis point, used to calculate the price\n * @param baseFactor The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\n * @param filterPeriod The period where the accumulator value is untouched, prevent spam\n * @param decayPeriod The period where the accumulator value is decayed, by the reduction factor\n * @param reductionFactor The reduction factor, used to calculate the reduction of the accumulator\n * @param variableFeeControl The variable fee control, used to control the variable fee, can be 0 to disable it\n * @param protocolShare The share of the fees received by the protocol\n * @param maxVolatilityAccumulator The max value of the volatility accumulator\n */\n function setPreset(\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator,\n bool isOpen\n ) external override onlyOwner {\n if (binStep < _MIN_BIN_STEP) revert LBFactory__BinStepTooLow(binStep);\n\n bytes32 preset = bytes32(0).setStaticFeeParameters(\n baseFactor,\n filterPeriod,\n decayPeriod,\n reductionFactor,\n variableFeeControl,\n protocolShare,\n maxVolatilityAccumulator\n );\n\n if (isOpen) {\n preset = preset.setBool(true, _OFFSET_IS_PRESET_OPEN);\n }\n\n _presets.set(binStep, uint256(preset));\n\n emit PresetSet(\n binStep,\n baseFactor,\n filterPeriod,\n decayPeriod,\n reductionFactor,\n variableFeeControl,\n protocolShare,\n maxVolatilityAccumulator\n );\n\n emit PresetOpenStateChanged(binStep, isOpen);\n }\n\n /**\n * @notice Sets if the preset is open or not to be used by users\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The binStep doesn't have a preset\n * - The preset is already in the same state\n * @param binStep The bin step in basis point, used to calculate the price\n * @param isOpen Whether the preset is open or not\n */\n function setPresetOpenState(uint16 binStep, bool isOpen) external override onlyOwner {\n if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep);\n\n bytes32 preset = bytes32(_presets.get(binStep));\n\n if (preset.decodeBool(_OFFSET_IS_PRESET_OPEN) == isOpen) {\n revert LBFactory__PresetOpenStateIsAlreadyInTheSameState();\n }\n\n _presets.set(binStep, uint256(preset.setBool(isOpen, _OFFSET_IS_PRESET_OPEN)));\n\n emit PresetOpenStateChanged(binStep, isOpen);\n }\n\n /**\n * @notice Remove the preset linked to a binStep\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The binStep doesn't have a preset\n * @param binStep The bin step to remove\n */\n function removePreset(uint16 binStep) external override onlyOwner {\n if (!_presets.remove(binStep)) revert LBFactory__BinStepHasNoPreset(binStep);\n\n emit PresetRemoved(binStep);\n }\n\n /**\n * @notice Function to set the fee parameter of a LBPair\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The pair doesn't exist\n * @param tokenX The address of the first token\n * @param tokenY The address of the second token\n * @param binStep The bin step in basis point, used to calculate the price\n * @param baseFactor The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\n * @param filterPeriod The period where the accumulator value is untouched, prevent spam\n * @param decayPeriod The period where the accumulator value is decayed, by the reduction factor\n * @param reductionFactor The reduction factor, used to calculate the reduction of the accumulator\n * @param variableFeeControl The variable fee control, used to control the variable fee, can be 0 to disable it\n * @param protocolShare The share of the fees received by the protocol\n * @param maxVolatilityAccumulator The max value of volatility accumulator\n */\n function setFeesParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) external override onlyOwner {\n ILBPair lbPair = _getLBPairInformation(tokenX, tokenY, binStep).LBPair;\n\n if (address(lbPair) == address(0)) revert LBFactory__LBPairNotCreated(tokenX, tokenY, binStep);\n\n lbPair.setStaticFeeParameters(\n baseFactor,\n filterPeriod,\n decayPeriod,\n reductionFactor,\n variableFeeControl,\n protocolShare,\n maxVolatilityAccumulator\n );\n }\n\n /**\n * @notice Function to set the hooks parameters of a pair\n * @dev Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE\n * Reverts if:\n * - The pair doesn't exist\n * - The hooks is `address(0)` or the hooks flags are all false\n * @param tokenX The address of the first token\n * @param tokenY The address of the second token\n * @param binStep The bin step in basis point, used to calculate the price\n * @param hooksParameters The hooks parameters\n * @param onHooksSetData The data to pass to the onHooksSet function\n */\n function setLBHooksParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n bytes32 hooksParameters,\n bytes calldata onHooksSetData\n ) external override onlyRole(LB_HOOKS_MANAGER_ROLE) {\n if (Hooks.getHooks(hooksParameters) == address(0) || Hooks.getFlags(hooksParameters) == 0) {\n revert LBFactory__InvalidHooksParameters();\n }\n\n _setLBHooksParametersOnPair(tokenX, tokenY, binStep, hooksParameters, onHooksSetData);\n }\n\n /**\n * @notice Function to remove the hooks contract from the pair\n * @dev Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE\n * Reverts if:\n * - The pair doesn't exist\n * @param tokenX The address of the first token\n * @param tokenY The address of the second token\n * @param binStep The bin step in basis point, used to calculate the price\n */\n function removeLBHooksOnPair(IERC20 tokenX, IERC20 tokenY, uint16 binStep)\n external\n override\n onlyRole(LB_HOOKS_MANAGER_ROLE)\n {\n _setLBHooksParametersOnPair(tokenX, tokenY, binStep, 0, new bytes(0));\n }\n\n /**\n * @notice Function to set the recipient of the fees. This address needs to be able to receive ERC20s\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The feeRecipient is `address(0)`\n * - The feeRecipient is the same as the current one\n * @param feeRecipient The address of the recipient\n */\n function setFeeRecipient(address feeRecipient) external override onlyOwner {\n _setFeeRecipient(feeRecipient);\n }\n\n /**\n * @notice Function to set the flash loan fee\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The flashLoanFee is the same as the current one\n * - The flashLoanFee is above the maximum flash loan fee\n * @param flashLoanFee The value of the fee for flash loan\n */\n function setFlashLoanFee(uint256 flashLoanFee) external override onlyOwner {\n uint256 oldFlashLoanFee = _flashLoanFee;\n\n if (oldFlashLoanFee == flashLoanFee) revert LBFactory__SameFlashLoanFee(flashLoanFee);\n if (flashLoanFee > _MAX_FLASHLOAN_FEE) revert LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE);\n\n _flashLoanFee = flashLoanFee;\n emit FlashLoanFeeSet(oldFlashLoanFee, flashLoanFee);\n }\n\n /**\n * @notice Function to add an asset to the whitelist of quote assets\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The quoteAsset is already whitelisted\n * @param quoteAsset The quote asset (e.g: NATIVE, USDC...)\n */\n function addQuoteAsset(IERC20 quoteAsset) external override onlyOwner {\n if (!_quoteAssetWhitelist.add(address(quoteAsset))) {\n revert LBFactory__QuoteAssetAlreadyWhitelisted(quoteAsset);\n }\n\n emit QuoteAssetAdded(quoteAsset);\n }\n\n /**\n * @notice Function to remove an asset from the whitelist of quote assets\n * @dev Needs to be called by the owner\n * Reverts if:\n * - The quoteAsset was not whitelisted\n * @param quoteAsset The quote asset (e.g: NATIVE, USDC...)\n */\n function removeQuoteAsset(IERC20 quoteAsset) external override onlyOwner {\n if (!_quoteAssetWhitelist.remove(address(quoteAsset))) revert LBFactory__QuoteAssetNotWhitelisted(quoteAsset);\n\n emit QuoteAssetRemoved(quoteAsset);\n }\n\n function _isPresetOpen(bytes32 preset) internal pure returns (bool) {\n return preset.decodeBool(_OFFSET_IS_PRESET_OPEN);\n }\n\n /**\n * @notice Internal function to set the recipient of the fee\n * @param feeRecipient The address of the recipient\n */\n function _setFeeRecipient(address feeRecipient) internal {\n if (feeRecipient == address(0)) revert LBFactory__AddressZero();\n\n address oldFeeRecipient = _feeRecipient;\n if (oldFeeRecipient == feeRecipient) revert LBFactory__SameFeeRecipient(_feeRecipient);\n\n _feeRecipient = feeRecipient;\n emit FeeRecipientSet(oldFeeRecipient, feeRecipient);\n }\n\n /**\n * @notice Function to force the decay of the volatility accumulator of a pair\n * @dev Needs to be called by the owner\n * @param pair The pair to force the decay\n */\n function forceDecay(ILBPair pair) external override onlyOwner {\n pair.forceDecay();\n }\n\n /**\n * @notice Returns the LBPairInformation if it exists,\n * if not, then the address 0 is returned. The order doesn't matter\n * @param tokenA The address of the first token of the pair\n * @param tokenB The address of the second token of the pair\n * @param binStep The bin step of the LBPair\n * @return The LBPairInformation\n */\n function _getLBPairInformation(IERC20 tokenA, IERC20 tokenB, uint256 binStep)\n private\n view\n returns (LBPairInformation memory)\n {\n (tokenA, tokenB) = _sortTokens(tokenA, tokenB);\n return _lbPairsInfo[tokenA][tokenB][binStep];\n }\n\n /**\n * @notice Private view function to sort 2 tokens in ascending order\n * @param tokenA The first token\n * @param tokenB The second token\n * @return The sorted first token\n * @return The sorted second token\n */\n function _sortTokens(IERC20 tokenA, IERC20 tokenB) private pure returns (IERC20, IERC20) {\n if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA);\n return (tokenA, tokenB);\n }\n\n /**\n * @notice Internal function to set a hooks contract to the pair\n * @param tokenX The address of the first token\n * @param tokenY The address of the second token\n * @param binStep The bin step in basis point, used to calculate the price\n * @param hooksParameters The hooks parameters\n * @param onHooksSetData The data to pass to the onHooksSet function\n */\n function _setLBHooksParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n bytes32 hooksParameters,\n bytes memory onHooksSetData\n ) internal {\n ILBPair lbPair = _getLBPairInformation(tokenX, tokenY, binStep).LBPair;\n\n if (address(lbPair) == address(0)) revert LBFactory__LBPairNotCreated(tokenX, tokenY, binStep);\n if (lbPair.getLBHooksParameters() == hooksParameters) revert LBFactory__SameHooksParameters(hooksParameters);\n\n lbPair.setHooksParameters(hooksParameters, onHooksSetData);\n }\n\n /**\n * @notice Returns whether the caller has the role or not, only the owner has the DEFAULT_ADMIN_ROLE\n * @param role The role to check\n * @param account The address to check\n * @return Whether the account has the role or not\n */\n function hasRole(bytes32 role, address account) public view override returns (bool) {\n if (role == DEFAULT_ADMIN_ROLE) return account == owner();\n return super.hasRole(role, account);\n }\n\n /**\n * @notice Grants a role to an address, the DEFAULT_ADMIN_ROLE can not be granted\n * @param role The role to grant\n * @param account The address to grant the role to\n * @return Whether the role has been granted or not\n */\n function _grantRole(bytes32 role, address account) internal override returns (bool) {\n if (role == DEFAULT_ADMIN_ROLE) revert LBFactory__CannotGrantDefaultAdminRole();\n return super._grantRole(role, account);\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/Create2.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Create2.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n * `CREATE2` can be used to compute in advance the address where a smart\n * contract will be deployed, which allows for interesting new mechanisms known\n * as 'counterfactual interactions'.\n *\n * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n * information.\n */\nlibrary Create2 {\n /**\n * @dev Not enough balance for performing a CREATE2 deploy.\n */\n error Create2InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev There's no code to deploy.\n */\n error Create2EmptyBytecode();\n\n /**\n * @dev The deployment failed.\n */\n error Create2FailedDeployment();\n\n /**\n * @dev Deploys a contract using `CREATE2`. The address where the contract\n * will be deployed can be known in advance via {computeAddress}.\n *\n * The bytecode for a contract can be obtained from Solidity with\n * `type(contractName).creationCode`.\n *\n * Requirements:\n *\n * - `bytecode` must not be empty.\n * - `salt` must have not been used for `bytecode` already.\n * - the factory must have a balance of at least `amount`.\n * - if `amount` is non-zero, `bytecode` must have a `payable` constructor.\n */\n function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address addr) {\n if (address(this).balance < amount) {\n revert Create2InsufficientBalance(address(this).balance, amount);\n }\n if (bytecode.length == 0) {\n revert Create2EmptyBytecode();\n }\n /// @solidity memory-safe-assembly\n assembly {\n addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)\n }\n if (addr == address(0)) {\n revert Create2FailedDeployment();\n }\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n * `bytecodeHash` or `salt` will result in a new destination address.\n */\n function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {\n return computeAddress(salt, bytecodeHash, address(this));\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.\n */\n function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address addr) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40) // Get free memory pointer\n\n // | | ↓ ptr ... ↓ ptr + 0x0B (start) ... ↓ ptr + 0x20 ... ↓ ptr + 0x40 ... |\n // |-------------------|---------------------------------------------------------------------------|\n // | bytecodeHash | CCCCCCCCCCCCC...CC |\n // | salt | BBBBBBBBBBBBB...BB |\n // | deployer | 000000...0000AAAAAAAAAAAAAAAAAAA...AA |\n // | 0xFF | FF |\n // |-------------------|---------------------------------------------------------------------------|\n // | memory | 000000...00FFAAAAAAAAAAAAAAAAAAA...AABBBBBBBBBBBBB...BBCCCCCCCCCCCCC...CC |\n // | keccak(start, 85) | ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ |\n\n mstore(add(ptr, 0x40), bytecodeHash)\n mstore(add(ptr, 0x20), salt)\n mstore(ptr, deployer) // Right-aligned with 12 preceding garbage bytes\n let start := add(ptr, 0x0b) // The hashed data starts at the final garbage byte which we will set to 0xff\n mstore8(start, 0xff)\n addr := keccak256(start, 85)\n }\n }\n}\n" + }, + "src/LBPairBeaconProxy.sol": { + "content": "// SPDX-License-Identifier: GPL-3\npragma solidity 0.8.20;\n\nimport {BeaconProxy, ERC1967Utils} from \"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\";\nimport {StorageSlot} from \"@openzeppelin/contracts/utils/StorageSlot.sol\";\nimport {LBPairUnstructuredStorage} from \"./LBPairUnstructuredStorage.sol\";\nimport {StringUtils} from \"./libraries/StringUtils.sol\";\n\n\ninterface IOwnable {\n function owner() external view returns (address);\n}\n\n/**\n * @dev this is the Proxy contract of the LBPair.\n * @dev this contract instantiates LBPair contract via OZ Beacon Proxy (LBPairUpgradeableBeacon in this case).\n */\ncontract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {\n\n using StringUtils for uint16; \n receive() external payable {}\n\n constructor(address _beaconAddress, address _tokenX, address _tokenY, uint16 _binStep, bytes memory _data) payable BeaconProxy(_beaconAddress, \"\") {\n (bool successSymbolX, bytes memory symbolXData) = _tokenX.staticcall(abi.encodeWithSignature(\"symbol()\"));\n string memory tokenXSymbol = abi.decode(symbolXData, (string));\n\n (bool successSymbolY, bytes memory symbolYData) = _tokenY.staticcall(abi.encodeWithSignature(\"symbol()\"));\n string memory tokenYSymbol = abi.decode(symbolYData, (string));\n\n require(successSymbolX && successSymbolY , \"LBPairBeaconProxy: Failed to get token symbols\");\n require(\n keccak256(bytes(tokenXSymbol)) != keccak256(bytes(\"\")) &&\n keccak256(bytes(tokenYSymbol)) != keccak256(bytes(\"\")),\n \"LBPairBeaconProxy: Invalid token symbols\"\n );\n\n StorageSlot.getAddressSlot(_SLOT_TOKEN_X).value = _tokenX;\n StorageSlot.getAddressSlot(_SLOT_TOKEN_Y).value = _tokenY;\n StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value = _binStep;\n string memory binStepStr = _binStep.uint16ToString();\n StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL).value = string.concat(\"LBT_\", tokenXSymbol, \"/\", tokenYSymbol, \"/\", binStepStr);\n StorageSlot.getStringSlot(_SLOT_PAIR_NAME).value = string.concat(\"Liquidity Book Token \", tokenXSymbol, \"/\", tokenYSymbol,\"/\", binStepStr);\n\n ERC1967Utils.upgradeBeaconToAndCall(_beaconAddress, _data);\n }\n\n function getLBPairBeacon() external view returns (address) {\n return _getBeacon();\n }\n}" + }, + "src/interfaces/ILBHooks.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.10;\n\nimport {ILBPair} from \"./ILBPair.sol\";\n\nimport {Hooks} from \"../libraries/Hooks.sol\";\n\ninterface ILBHooks {\n function getLBPair() external view returns (ILBPair);\n\n function isLinked() external view returns (bool);\n\n function onHooksSet(bytes32 hooksParameters, bytes calldata onHooksSetData) external returns (bytes4);\n\n function beforeSwap(address sender, address to, bool swapForY, bytes32 amountsIn) external returns (bytes4);\n\n function afterSwap(address sender, address to, bool swapForY, bytes32 amountsOut) external returns (bytes4);\n\n function beforeFlashLoan(address sender, address to, bytes32 amounts) external returns (bytes4);\n\n function afterFlashLoan(address sender, address to, bytes32 fees, bytes32 feesReceived) external returns (bytes4);\n\n function beforeMint(address sender, address to, bytes32[] calldata liquidityConfigs, bytes32 amountsReceived)\n external\n returns (bytes4);\n\n function afterMint(address sender, address to, bytes32[] calldata liquidityConfigs, bytes32 amountsIn)\n external\n returns (bytes4);\n\n function beforeBurn(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) external returns (bytes4);\n\n function afterBurn(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) external returns (bytes4);\n\n function beforeBatchTransferFrom(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) external returns (bytes4);\n\n function afterBatchTransferFrom(\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) external returns (bytes4);\n}\n" + }, + "src/interfaces/ILBPair.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {Hooks} from \"../libraries/Hooks.sol\";\nimport {ILBFactory} from \"./ILBFactory.sol\";\nimport {ILBFlashLoanCallback} from \"./ILBFlashLoanCallback.sol\";\nimport {ILBToken} from \"./ILBToken.sol\";\n\ninterface ILBPair is ILBToken {\n error LBPair__ZeroBorrowAmount();\n error LBPair__AddressZero();\n error LBPair__EmptyMarketConfigs();\n error LBPair__FlashLoanCallbackFailed();\n error LBPair__FlashLoanInsufficientAmount();\n error LBPair__InsufficientAmountIn();\n error LBPair__InsufficientAmountOut();\n error LBPair__InvalidInput();\n error LBPair__InvalidStaticFeeParameters();\n error LBPair__OnlyFactory();\n error LBPair__OnlyProtocolFeeRecipient();\n error LBPair__OutOfLiquidity();\n error LBPair__TokenNotSupported();\n error LBPair__ZeroAmount(uint24 id);\n error LBPair__ZeroAmountsOut(uint24 id);\n error LBPair__ZeroShares(uint24 id);\n error LBPair__MaxTotalFeeExceeded();\n error LBPair__InvalidHooks();\n\n struct MintArrays {\n uint256[] ids;\n bytes32[] amounts;\n uint256[] liquidityMinted;\n }\n\n event DepositedToBins(address indexed sender, address indexed to, uint256[] ids, bytes32[] amounts);\n\n event WithdrawnFromBins(address indexed sender, address indexed to, uint256[] ids, bytes32[] amounts);\n\n event CompositionFees(address indexed sender, uint24 id, bytes32 totalFees, bytes32 protocolFees);\n\n event CollectedProtocolFees(address indexed feeRecipient, bytes32 protocolFees);\n\n event Swap(\n address indexed sender,\n address indexed to,\n uint24 id,\n bytes32 amountsIn,\n bytes32 amountsOut,\n uint24 volatilityAccumulator,\n bytes32 totalFees,\n bytes32 protocolFees\n );\n\n event StaticFeeParametersSet(\n address indexed sender,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n );\n\n event HooksParametersSet(address indexed sender, bytes32 hooksParameters);\n\n event FlashLoan(\n address indexed sender,\n ILBFlashLoanCallback indexed receiver,\n uint24 activeId,\n bytes32 amounts,\n bytes32 totalFees,\n bytes32 protocolFees\n );\n\n event OracleLengthIncreased(address indexed sender, uint16 oracleLength);\n\n event ForcedDecay(address indexed sender, uint24 idReference, uint24 volatilityReference);\n\n function initialize(\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator,\n uint24 activeId\n ) external;\n\n function getFactory() external view returns (ILBFactory factory);\n\n function getTokenX() external view returns (IERC20 tokenX);\n\n function getTokenY() external view returns (IERC20 tokenY);\n\n function getBinStep() external view returns (uint16 binStep);\n\n function getReserves() external view returns (uint128 reserveX, uint128 reserveY);\n\n function getActiveId() external view returns (uint24 activeId);\n\n function getBin(uint24 id) external view returns (uint128 binReserveX, uint128 binReserveY);\n\n function getNextNonEmptyBin(bool swapForY, uint24 id) external view returns (uint24 nextId);\n\n function getProtocolFees() external view returns (uint128 protocolFeeX, uint128 protocolFeeY);\n\n function getStaticFeeParameters()\n external\n view\n returns (\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n );\n\n function getLBHooksParameters() external view returns (bytes32 hooksParameters);\n\n function getVariableFeeParameters()\n external\n view\n returns (uint24 volatilityAccumulator, uint24 volatilityReference, uint24 idReference, uint40 timeOfLastUpdate);\n\n function getOracleParameters()\n external\n view\n returns (uint8 sampleLifetime, uint16 size, uint16 activeSize, uint40 lastUpdated, uint40 firstTimestamp);\n\n function getOracleSampleAt(uint40 lookupTimestamp)\n external\n view\n returns (uint64 cumulativeId, uint64 cumulativeVolatility, uint64 cumulativeBinCrossed);\n\n function getPriceFromId(uint24 id) external view returns (uint256 price);\n\n function getIdFromPrice(uint256 price) external view returns (uint24 id);\n\n function getSwapIn(uint128 amountOut, bool swapForY)\n external\n view\n returns (uint128 amountIn, uint128 amountOutLeft, uint128 fee);\n\n function getSwapOut(uint128 amountIn, bool swapForY)\n external\n view\n returns (uint128 amountInLeft, uint128 amountOut, uint128 fee);\n\n function swap(bool swapForY, address to) external returns (bytes32 amountsOut);\n\n function flashLoan(ILBFlashLoanCallback receiver, bytes32 amounts, bytes calldata data) external;\n\n function mint(address to, bytes32[] calldata liquidityConfigs, address refundTo)\n external\n returns (bytes32 amountsReceived, bytes32 amountsLeft, uint256[] memory liquidityMinted);\n\n function burn(address from, address to, uint256[] calldata ids, uint256[] calldata amountsToBurn)\n external\n returns (bytes32[] memory amounts);\n\n function collectProtocolFees() external returns (bytes32 collectedProtocolFees);\n\n function increaseOracleLength(uint16 newLength) external;\n\n function setStaticFeeParameters(\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) external;\n\n function setHooksParameters(bytes32 hooksParameters, bytes calldata onHooksSetData) external;\n\n function forceDecay() external;\n}\n" + }, + "src/interfaces/ILBFactory.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {ILBHooks} from \"./ILBHooks.sol\";\nimport {ILBPair} from \"./ILBPair.sol\";\n\n/**\n * @title Liquidity Book Factory Interface\n * @notice Required interface of LBFactory contract\n */\ninterface ILBFactory {\n error LBFactory__IdenticalAddresses(IERC20 token);\n error LBFactory__QuoteAssetNotWhitelisted(IERC20 quoteAsset);\n error LBFactory__QuoteAssetAlreadyWhitelisted(IERC20 quoteAsset);\n error LBFactory__AddressZero();\n error LBFactory__LBPairAlreadyExists(IERC20 tokenX, IERC20 tokenY, uint256 _binStep);\n error LBFactory__LBPairDoesNotExist(IERC20 tokenX, IERC20 tokenY, uint256 binStep);\n error LBFactory__LBPairNotCreated(IERC20 tokenX, IERC20 tokenY, uint256 binStep);\n error LBFactory__FlashLoanFeeAboveMax(uint256 fees, uint256 maxFees);\n error LBFactory__BinStepTooLow(uint256 binStep);\n error LBFactory__PresetIsLockedForUsers(address user, uint256 binStep);\n error LBFactory__LBPairIgnoredIsAlreadyInTheSameState();\n error LBFactory__BinStepHasNoPreset(uint256 binStep);\n error LBFactory__PresetOpenStateIsAlreadyInTheSameState();\n error LBFactory__SameFeeRecipient(address feeRecipient);\n error LBFactory__SameFlashLoanFee(uint256 flashLoanFee);\n error LBFactory__LBPairSafetyCheckFailed(address LBPairImplementation);\n error LBFactory__SameImplementation(address LBPairImplementation);\n error LBFactory__SameHooksImplementation(address hooksImplementation);\n error LBFactory__SameHooksParameters(bytes32 hooksParameters);\n error LBFactory__InvalidHooksParameters();\n error LBFactory__CannotGrantDefaultAdminRole();\n\n /**\n * @dev Structure to store the LBPair information, such as:\n * binStep: The bin step of the LBPair\n * LBPair: The address of the LBPair\n * createdByOwner: Whether the pair was created by the owner of the factory\n * ignoredForRouting: Whether the pair is ignored for routing or not. An ignored pair will not be explored during routes finding\n */\n struct LBPairInformation {\n uint16 binStep;\n ILBPair LBPair;\n bool createdByOwner;\n bool ignoredForRouting;\n }\n\n event LBPairCreated(\n IERC20 indexed tokenX, IERC20 indexed tokenY, uint256 indexed binStep, ILBPair LBPair, uint256 pid\n );\n\n event FeeRecipientSet(address oldRecipient, address newRecipient);\n\n event FlashLoanFeeSet(uint256 oldFlashLoanFee, uint256 newFlashLoanFee);\n\n event LBPairImplementationSet(address oldLBPairImplementation, address LBPairImplementation);\n\n event LBPairIgnoredStateChanged(ILBPair indexed LBPair, bool ignored);\n\n event PresetSet(\n uint256 indexed binStep,\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxVolatilityAccumulator\n );\n\n event PresetOpenStateChanged(uint256 indexed binStep, bool indexed isOpen);\n\n event PresetRemoved(uint256 indexed binStep);\n\n event QuoteAssetAdded(IERC20 indexed quoteAsset);\n\n event QuoteAssetRemoved(IERC20 indexed quoteAsset);\n\n function getMinBinStep() external pure returns (uint256);\n\n function getFeeRecipient() external view returns (address);\n\n function getMaxFlashLoanFee() external pure returns (uint256);\n\n function getFlashLoanFee() external view returns (uint256);\n\n function getLBPairBeacon() external view returns (address);\n\n function getNumberOfLBPairs() external view returns (uint256);\n\n function getLBPairAtIndex(uint256 id) external returns (ILBPair);\n\n function getNumberOfQuoteAssets() external view returns (uint256);\n\n function getQuoteAssetAtIndex(uint256 index) external view returns (IERC20);\n\n function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) external;\n\n function isQuoteAsset(IERC20 token) external view returns (bool);\n\n function getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep)\n external\n view\n returns (LBPairInformation memory);\n\n function getPreset(uint256 binStep)\n external\n view\n returns (\n uint256 baseFactor,\n uint256 filterPeriod,\n uint256 decayPeriod,\n uint256 reductionFactor,\n uint256 variableFeeControl,\n uint256 protocolShare,\n uint256 maxAccumulator,\n bool isOpen\n );\n\n function getAllBinSteps() external view returns (uint256[] memory presetsBinStep);\n\n function getOpenBinSteps() external view returns (uint256[] memory openBinStep);\n\n function getAllLBPairs(IERC20 tokenX, IERC20 tokenY)\n external\n view\n returns (LBPairInformation[] memory LBPairsBinStep);\n\n function getPauserRole() external pure returns (bytes32);\n\n function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)\n external\n returns (ILBPair pair);\n\n function setLBPairIgnored(IERC20 tokenX, IERC20 tokenY, uint16 binStep, bool ignored) external;\n\n function setPreset(\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator,\n bool isOpen\n ) external;\n\n function setPresetOpenState(uint16 binStep, bool isOpen) external;\n\n function removePreset(uint16 binStep) external;\n\n function setFeesParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) external;\n\n function setLBHooksParametersOnPair(\n IERC20 tokenX,\n IERC20 tokenY,\n uint16 binStep,\n bytes32 hooksParameters,\n bytes memory onHooksSetData\n ) external;\n\n function removeLBHooksOnPair(IERC20 tokenX, IERC20 tokenY, uint16 binStep) external;\n\n function setFeeRecipient(address feeRecipient) external;\n\n function setFlashLoanFee(uint256 flashLoanFee) external;\n\n function addQuoteAsset(IERC20 quoteAsset) external;\n\n function removeQuoteAsset(IERC20 quoteAsset) external;\n\n function forceDecay(ILBPair lbPair) external;\n}\n" + }, + "src/libraries/Hooks.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.10;\n\nimport {ILBHooks} from \"../interfaces/ILBHooks.sol\";\n\n/**\n * @title Hooks library\n * @notice This library contains functions that should be used to interact with hooks\n */\nlibrary Hooks {\n error Hooks__CallFailed();\n\n bytes32 internal constant BEFORE_SWAP_FLAG = bytes32(uint256(1 << 160));\n bytes32 internal constant AFTER_SWAP_FLAG = bytes32(uint256(1 << 161));\n bytes32 internal constant BEFORE_FLASH_LOAN_FLAG = bytes32(uint256(1 << 162));\n bytes32 internal constant AFTER_FLASH_LOAN_FLAG = bytes32(uint256(1 << 163));\n bytes32 internal constant BEFORE_MINT_FLAG = bytes32(uint256(1 << 164));\n bytes32 internal constant AFTER_MINT_FLAG = bytes32(uint256(1 << 165));\n bytes32 internal constant BEFORE_BURN_FLAG = bytes32(uint256(1 << 166));\n bytes32 internal constant AFTER_BURN_FLAG = bytes32(uint256(1 << 167));\n bytes32 internal constant BEFORE_TRANSFER_FLAG = bytes32(uint256(1 << 168));\n bytes32 internal constant AFTER_TRANSFER_FLAG = bytes32(uint256(1 << 169));\n\n struct Parameters {\n address hooks;\n bool beforeSwap;\n bool afterSwap;\n bool beforeFlashLoan;\n bool afterFlashLoan;\n bool beforeMint;\n bool afterMint;\n bool beforeBurn;\n bool afterBurn;\n bool beforeBatchTransferFrom;\n bool afterBatchTransferFrom;\n }\n\n /**\n * @dev Helper function to encode the hooks parameters to a single bytes32 value\n * @param parameters The hooks parameters\n * @return hooksParameters The encoded hooks parameters\n */\n function encode(Parameters memory parameters) internal pure returns (bytes32 hooksParameters) {\n hooksParameters = bytes32(uint256(uint160(address(parameters.hooks))));\n\n if (parameters.beforeSwap) hooksParameters |= BEFORE_SWAP_FLAG;\n if (parameters.afterSwap) hooksParameters |= AFTER_SWAP_FLAG;\n if (parameters.beforeFlashLoan) hooksParameters |= BEFORE_FLASH_LOAN_FLAG;\n if (parameters.afterFlashLoan) hooksParameters |= AFTER_FLASH_LOAN_FLAG;\n if (parameters.beforeMint) hooksParameters |= BEFORE_MINT_FLAG;\n if (parameters.afterMint) hooksParameters |= AFTER_MINT_FLAG;\n if (parameters.beforeBurn) hooksParameters |= BEFORE_BURN_FLAG;\n if (parameters.afterBurn) hooksParameters |= AFTER_BURN_FLAG;\n if (parameters.beforeBatchTransferFrom) hooksParameters |= BEFORE_TRANSFER_FLAG;\n if (parameters.afterBatchTransferFrom) hooksParameters |= AFTER_TRANSFER_FLAG;\n }\n\n /**\n * @dev Helper function to decode the hooks parameters from a single bytes32 value\n * @param hooksParameters The encoded hooks parameters\n * @return parameters The hooks parameters\n */\n function decode(bytes32 hooksParameters) internal pure returns (Parameters memory parameters) {\n parameters.hooks = getHooks(hooksParameters);\n\n parameters.beforeSwap = (hooksParameters & BEFORE_SWAP_FLAG) != 0;\n parameters.afterSwap = (hooksParameters & AFTER_SWAP_FLAG) != 0;\n parameters.beforeFlashLoan = (hooksParameters & BEFORE_FLASH_LOAN_FLAG) != 0;\n parameters.afterFlashLoan = (hooksParameters & AFTER_FLASH_LOAN_FLAG) != 0;\n parameters.beforeMint = (hooksParameters & BEFORE_MINT_FLAG) != 0;\n parameters.afterMint = (hooksParameters & AFTER_MINT_FLAG) != 0;\n parameters.beforeBurn = (hooksParameters & BEFORE_BURN_FLAG) != 0;\n parameters.afterBurn = (hooksParameters & AFTER_BURN_FLAG) != 0;\n parameters.beforeBatchTransferFrom = (hooksParameters & BEFORE_TRANSFER_FLAG) != 0;\n parameters.afterBatchTransferFrom = (hooksParameters & AFTER_TRANSFER_FLAG) != 0;\n }\n\n /**\n * @dev Helper function to get the hooks address from the encoded hooks parameters\n * @param hooksParameters The encoded hooks parameters\n * @return hooks The hooks address\n */\n function getHooks(bytes32 hooksParameters) internal pure returns (address hooks) {\n hooks = address(uint160(uint256(hooksParameters)));\n }\n\n /**\n * @dev Helper function to set the hooks address in the encoded hooks parameters\n * @param hooksParameters The encoded hooks parameters\n * @param newHooks The new hooks address\n * @return hooksParameters The updated hooks parameters\n */\n function setHooks(bytes32 hooksParameters, address newHooks) internal pure returns (bytes32) {\n return bytes32(bytes12(hooksParameters)) | bytes32(uint256(uint160(newHooks)));\n }\n\n /**\n * @dev Helper function to get the flags from the encoded hooks parameters\n * @param hooksParameters The encoded hooks parameters\n * @return flags The flags\n */\n function getFlags(bytes32 hooksParameters) internal pure returns (bytes12 flags) {\n flags = bytes12(hooksParameters);\n }\n\n /**\n * @dev Helper function call the onHooksSet function on the hooks contract, only if the\n * hooksParameters is not 0\n * @param hooksParameters The encoded hooks parameters\n * @param onHooksSetData The data to pass to the onHooksSet function\n */\n function onHooksSet(bytes32 hooksParameters, bytes calldata onHooksSetData) internal {\n if (hooksParameters != 0) {\n _safeCall(\n hooksParameters, abi.encodeWithSelector(ILBHooks.onHooksSet.selector, hooksParameters, onHooksSetData)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeSwap function on the hooks contract, only if the\n * BEFORE_SWAP_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param swapForY Whether the swap is for Y\n * @param amountsIn The amounts in\n */\n function beforeSwap(bytes32 hooksParameters, address sender, address to, bool swapForY, bytes32 amountsIn)\n internal\n {\n if ((hooksParameters & BEFORE_SWAP_FLAG) != 0) {\n _safeCall(\n hooksParameters, abi.encodeWithSelector(ILBHooks.beforeSwap.selector, sender, to, swapForY, amountsIn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterSwap function on the hooks contract, only if the\n * AFTER_SWAP_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param swapForY Whether the swap is for Y\n * @param amountsOut The amounts out\n */\n function afterSwap(bytes32 hooksParameters, address sender, address to, bool swapForY, bytes32 amountsOut)\n internal\n {\n if ((hooksParameters & AFTER_SWAP_FLAG) != 0) {\n _safeCall(\n hooksParameters, abi.encodeWithSelector(ILBHooks.afterSwap.selector, sender, to, swapForY, amountsOut)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeFlashLoan function on the hooks contract, only if the\n * BEFORE_FLASH_LOAN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param amounts The amounts\n */\n function beforeFlashLoan(bytes32 hooksParameters, address sender, address to, bytes32 amounts) internal {\n if ((hooksParameters & BEFORE_FLASH_LOAN_FLAG) != 0) {\n _safeCall(hooksParameters, abi.encodeWithSelector(ILBHooks.beforeFlashLoan.selector, sender, to, amounts));\n }\n }\n\n /**\n * @dev Helper function to call the afterFlashLoan function on the hooks contract, only if the\n * AFTER_FLASH_LOAN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param fees The fees\n * @param feesReceived The fees received\n */\n function afterFlashLoan(bytes32 hooksParameters, address sender, address to, bytes32 fees, bytes32 feesReceived)\n internal\n {\n if ((hooksParameters & AFTER_FLASH_LOAN_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterFlashLoan.selector, sender, to, fees, feesReceived)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeMint function on the hooks contract, only if the\n * BEFORE_MINT_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param liquidityConfigs The liquidity configs\n * @param amountsReceived The amounts received\n */\n function beforeMint(\n bytes32 hooksParameters,\n address sender,\n address to,\n bytes32[] calldata liquidityConfigs,\n bytes32 amountsReceived\n ) internal {\n if ((hooksParameters & BEFORE_MINT_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.beforeMint.selector, sender, to, liquidityConfigs, amountsReceived)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterMint function on the hooks contract, only if the\n * AFTER_MINT_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param to The recipient\n * @param liquidityConfigs The liquidity configs\n * @param amountsIn The amounts in\n */\n function afterMint(\n bytes32 hooksParameters,\n address sender,\n address to,\n bytes32[] calldata liquidityConfigs,\n bytes32 amountsIn\n ) internal {\n if ((hooksParameters & AFTER_MINT_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterMint.selector, sender, to, liquidityConfigs, amountsIn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeBurn function on the hooks contract, only if the\n * BEFORE_BURN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The ids\n * @param amountsToBurn The amounts to burn\n */\n function beforeBurn(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) internal {\n if ((hooksParameters & BEFORE_BURN_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.beforeBurn.selector, sender, from, to, ids, amountsToBurn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterBurn function on the hooks contract, only if the\n * AFTER_BURN_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The ids\n * @param amountsToBurn The amounts to burn\n */\n function afterBurn(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amountsToBurn\n ) internal {\n if ((hooksParameters & AFTER_BURN_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterBurn.selector, sender, from, to, ids, amountsToBurn)\n );\n }\n }\n\n /**\n * @dev Helper function to call the beforeTransferFrom function on the hooks contract, only if the\n * BEFORE_TRANSFER_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The list of ids\n * @param amounts The list of amounts\n */\n function beforeBatchTransferFrom(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) internal {\n if ((hooksParameters & BEFORE_TRANSFER_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.beforeBatchTransferFrom.selector, sender, from, to, ids, amounts)\n );\n }\n }\n\n /**\n * @dev Helper function to call the afterTransferFrom function on the hooks contract, only if the\n * AFTER_TRANSFER_FLAG is set in the hooksParameters\n * @param hooksParameters The encoded hooks parameters\n * @param sender The sender\n * @param from The sender\n * @param to The recipient\n * @param ids The list of ids\n * @param amounts The list of amounts\n */\n function afterBatchTransferFrom(\n bytes32 hooksParameters,\n address sender,\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts\n ) internal {\n if ((hooksParameters & AFTER_TRANSFER_FLAG) != 0) {\n _safeCall(\n hooksParameters,\n abi.encodeWithSelector(ILBHooks.afterBatchTransferFrom.selector, sender, from, to, ids, amounts)\n );\n }\n }\n\n /**\n * @dev Helper function to call the hooks contract and verify the call was successful\n * by matching the expected selector with the returned data\n * @param hooksParameters The encoded hooks parameters\n * @param data The data to pass to the hooks contract\n */\n function _safeCall(bytes32 hooksParameters, bytes memory data) private {\n bool success;\n\n address hooks = getHooks(hooksParameters);\n\n assembly {\n let expectedSelector := shr(224, mload(add(data, 0x20)))\n\n success := call(gas(), hooks, 0, add(data, 0x20), mload(data), 0, 0x20)\n\n if and(iszero(success), iszero(iszero(returndatasize()))) {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n\n success := and(success, and(gt(returndatasize(), 0x1f), eq(shr(224, mload(0)), expectedSelector)))\n }\n\n if (!success) revert Hooks__CallFailed();\n }\n}\n" + }, + "src/libraries/math/SafeCast.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Safe Cast Library\n * @notice This library contains functions to safely cast uint256 to different uint types.\n */\nlibrary SafeCast {\n error SafeCast__Exceeds248Bits();\n error SafeCast__Exceeds240Bits();\n error SafeCast__Exceeds232Bits();\n error SafeCast__Exceeds224Bits();\n error SafeCast__Exceeds216Bits();\n error SafeCast__Exceeds208Bits();\n error SafeCast__Exceeds200Bits();\n error SafeCast__Exceeds192Bits();\n error SafeCast__Exceeds184Bits();\n error SafeCast__Exceeds176Bits();\n error SafeCast__Exceeds168Bits();\n error SafeCast__Exceeds160Bits();\n error SafeCast__Exceeds152Bits();\n error SafeCast__Exceeds144Bits();\n error SafeCast__Exceeds136Bits();\n error SafeCast__Exceeds128Bits();\n error SafeCast__Exceeds120Bits();\n error SafeCast__Exceeds112Bits();\n error SafeCast__Exceeds104Bits();\n error SafeCast__Exceeds96Bits();\n error SafeCast__Exceeds88Bits();\n error SafeCast__Exceeds80Bits();\n error SafeCast__Exceeds72Bits();\n error SafeCast__Exceeds64Bits();\n error SafeCast__Exceeds56Bits();\n error SafeCast__Exceeds48Bits();\n error SafeCast__Exceeds40Bits();\n error SafeCast__Exceeds32Bits();\n error SafeCast__Exceeds24Bits();\n error SafeCast__Exceeds16Bits();\n error SafeCast__Exceeds8Bits();\n\n /**\n * @dev Returns x on uint248 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint248\n */\n function safe248(uint256 x) internal pure returns (uint248 y) {\n if ((y = uint248(x)) != x) revert SafeCast__Exceeds248Bits();\n }\n\n /**\n * @dev Returns x on uint240 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint240\n */\n function safe240(uint256 x) internal pure returns (uint240 y) {\n if ((y = uint240(x)) != x) revert SafeCast__Exceeds240Bits();\n }\n\n /**\n * @dev Returns x on uint232 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint232\n */\n function safe232(uint256 x) internal pure returns (uint232 y) {\n if ((y = uint232(x)) != x) revert SafeCast__Exceeds232Bits();\n }\n\n /**\n * @dev Returns x on uint224 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint224\n */\n function safe224(uint256 x) internal pure returns (uint224 y) {\n if ((y = uint224(x)) != x) revert SafeCast__Exceeds224Bits();\n }\n\n /**\n * @dev Returns x on uint216 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint216\n */\n function safe216(uint256 x) internal pure returns (uint216 y) {\n if ((y = uint216(x)) != x) revert SafeCast__Exceeds216Bits();\n }\n\n /**\n * @dev Returns x on uint208 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint208\n */\n function safe208(uint256 x) internal pure returns (uint208 y) {\n if ((y = uint208(x)) != x) revert SafeCast__Exceeds208Bits();\n }\n\n /**\n * @dev Returns x on uint200 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint200\n */\n function safe200(uint256 x) internal pure returns (uint200 y) {\n if ((y = uint200(x)) != x) revert SafeCast__Exceeds200Bits();\n }\n\n /**\n * @dev Returns x on uint192 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint192\n */\n function safe192(uint256 x) internal pure returns (uint192 y) {\n if ((y = uint192(x)) != x) revert SafeCast__Exceeds192Bits();\n }\n\n /**\n * @dev Returns x on uint184 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint184\n */\n function safe184(uint256 x) internal pure returns (uint184 y) {\n if ((y = uint184(x)) != x) revert SafeCast__Exceeds184Bits();\n }\n\n /**\n * @dev Returns x on uint176 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint176\n */\n function safe176(uint256 x) internal pure returns (uint176 y) {\n if ((y = uint176(x)) != x) revert SafeCast__Exceeds176Bits();\n }\n\n /**\n * @dev Returns x on uint168 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint168\n */\n function safe168(uint256 x) internal pure returns (uint168 y) {\n if ((y = uint168(x)) != x) revert SafeCast__Exceeds168Bits();\n }\n\n /**\n * @dev Returns x on uint160 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint160\n */\n function safe160(uint256 x) internal pure returns (uint160 y) {\n if ((y = uint160(x)) != x) revert SafeCast__Exceeds160Bits();\n }\n\n /**\n * @dev Returns x on uint152 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint152\n */\n function safe152(uint256 x) internal pure returns (uint152 y) {\n if ((y = uint152(x)) != x) revert SafeCast__Exceeds152Bits();\n }\n\n /**\n * @dev Returns x on uint144 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint144\n */\n function safe144(uint256 x) internal pure returns (uint144 y) {\n if ((y = uint144(x)) != x) revert SafeCast__Exceeds144Bits();\n }\n\n /**\n * @dev Returns x on uint136 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint136\n */\n function safe136(uint256 x) internal pure returns (uint136 y) {\n if ((y = uint136(x)) != x) revert SafeCast__Exceeds136Bits();\n }\n\n /**\n * @dev Returns x on uint128 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint128\n */\n function safe128(uint256 x) internal pure returns (uint128 y) {\n if ((y = uint128(x)) != x) revert SafeCast__Exceeds128Bits();\n }\n\n /**\n * @dev Returns x on uint120 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint120\n */\n function safe120(uint256 x) internal pure returns (uint120 y) {\n if ((y = uint120(x)) != x) revert SafeCast__Exceeds120Bits();\n }\n\n /**\n * @dev Returns x on uint112 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint112\n */\n function safe112(uint256 x) internal pure returns (uint112 y) {\n if ((y = uint112(x)) != x) revert SafeCast__Exceeds112Bits();\n }\n\n /**\n * @dev Returns x on uint104 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint104\n */\n function safe104(uint256 x) internal pure returns (uint104 y) {\n if ((y = uint104(x)) != x) revert SafeCast__Exceeds104Bits();\n }\n\n /**\n * @dev Returns x on uint96 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint96\n */\n function safe96(uint256 x) internal pure returns (uint96 y) {\n if ((y = uint96(x)) != x) revert SafeCast__Exceeds96Bits();\n }\n\n /**\n * @dev Returns x on uint88 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint88\n */\n function safe88(uint256 x) internal pure returns (uint88 y) {\n if ((y = uint88(x)) != x) revert SafeCast__Exceeds88Bits();\n }\n\n /**\n * @dev Returns x on uint80 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint80\n */\n function safe80(uint256 x) internal pure returns (uint80 y) {\n if ((y = uint80(x)) != x) revert SafeCast__Exceeds80Bits();\n }\n\n /**\n * @dev Returns x on uint72 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint72\n */\n function safe72(uint256 x) internal pure returns (uint72 y) {\n if ((y = uint72(x)) != x) revert SafeCast__Exceeds72Bits();\n }\n\n /**\n * @dev Returns x on uint64 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint64\n */\n function safe64(uint256 x) internal pure returns (uint64 y) {\n if ((y = uint64(x)) != x) revert SafeCast__Exceeds64Bits();\n }\n\n /**\n * @dev Returns x on uint56 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint56\n */\n function safe56(uint256 x) internal pure returns (uint56 y) {\n if ((y = uint56(x)) != x) revert SafeCast__Exceeds56Bits();\n }\n\n /**\n * @dev Returns x on uint48 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint48\n */\n function safe48(uint256 x) internal pure returns (uint48 y) {\n if ((y = uint48(x)) != x) revert SafeCast__Exceeds48Bits();\n }\n\n /**\n * @dev Returns x on uint40 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint40\n */\n function safe40(uint256 x) internal pure returns (uint40 y) {\n if ((y = uint40(x)) != x) revert SafeCast__Exceeds40Bits();\n }\n\n /**\n * @dev Returns x on uint32 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint32\n */\n function safe32(uint256 x) internal pure returns (uint32 y) {\n if ((y = uint32(x)) != x) revert SafeCast__Exceeds32Bits();\n }\n\n /**\n * @dev Returns x on uint24 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint24\n */\n function safe24(uint256 x) internal pure returns (uint24 y) {\n if ((y = uint24(x)) != x) revert SafeCast__Exceeds24Bits();\n }\n\n /**\n * @dev Returns x on uint16 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint16\n */\n function safe16(uint256 x) internal pure returns (uint16 y) {\n if ((y = uint16(x)) != x) revert SafeCast__Exceeds16Bits();\n }\n\n /**\n * @dev Returns x on uint8 and check that it does not overflow\n * @param x The value as an uint256\n * @return y The value as an uint8\n */\n function safe8(uint256 x) internal pure returns (uint8 y) {\n if ((y = uint8(x)) != x) revert SafeCast__Exceeds8Bits();\n }\n}\n" + }, + "src/libraries/PriceHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Uint128x128Math} from \"./math/Uint128x128Math.sol\";\nimport {Uint256x256Math} from \"./math/Uint256x256Math.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {Constants} from \"./Constants.sol\";\n\n/**\n * @title Liquidity Book Price Helper Library\n * @notice This library contains functions to calculate prices\n */\nlibrary PriceHelper {\n using Uint128x128Math for uint256;\n using Uint256x256Math for uint256;\n using SafeCast for uint256;\n\n int256 private constant REAL_ID_SHIFT = 1 << 23;\n\n /**\n * @dev Calculates the price from the id and the bin step\n * @param id The id\n * @param binStep The bin step\n * @return price The price as a 128.128-binary fixed-point number\n */\n function getPriceFromId(uint24 id, uint16 binStep) internal pure returns (uint256 price) {\n uint256 base = getBase(binStep);\n int256 exponent = getExponent(id);\n\n price = base.pow(exponent);\n }\n\n /**\n * @dev Calculates the id from the price and the bin step\n * @param price The price as a 128.128-binary fixed-point number\n * @param binStep The bin step\n * @return id The id\n */\n function getIdFromPrice(uint256 price, uint16 binStep) internal pure returns (uint24 id) {\n uint256 base = getBase(binStep);\n int256 realId = price.log2() / base.log2();\n\n unchecked {\n id = uint256(REAL_ID_SHIFT + realId).safe24();\n }\n }\n\n /**\n * @dev Calculates the base from the bin step, which is `1 + binStep / BASIS_POINT_MAX`\n * @param binStep The bin step\n * @return base The base\n */\n function getBase(uint16 binStep) internal pure returns (uint256) {\n unchecked {\n return Constants.SCALE + (uint256(binStep) << Constants.SCALE_OFFSET) / Constants.BASIS_POINT_MAX;\n }\n }\n\n /**\n * @dev Calculates the exponent from the id, which is `id - REAL_ID_SHIFT`\n * @param id The id\n * @return exponent The exponent\n */\n function getExponent(uint24 id) internal pure returns (int256) {\n unchecked {\n return int256(uint256(id)) - REAL_ID_SHIFT;\n }\n }\n\n /**\n * @dev Converts a price with 18 decimals to a 128.128-binary fixed-point number\n * @param price The price with 18 decimals\n * @return price128x128 The 128.128-binary fixed-point number\n */\n function convertDecimalPriceTo128x128(uint256 price) internal pure returns (uint256) {\n return price.shiftDivRoundDown(Constants.SCALE_OFFSET, Constants.PRECISION);\n }\n\n /**\n * @dev Converts a 128.128-binary fixed-point number to a price with 18 decimals\n * @param price128x128 The 128.128-binary fixed-point number\n * @return price The price with 18 decimals\n */\n function convert128x128PriceToDecimal(uint256 price128x128) internal pure returns (uint256) {\n return price128x128.mulShiftRoundDown(Constants.PRECISION, Constants.SCALE_OFFSET);\n }\n}\n" + }, + "src/libraries/ImmutableClone.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Immutable Clone Library\n * @notice Minimal immutable proxy library.\n * @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)\n * @author Minimal proxy by 0age (https://github.com/0age)\n * @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie\n * (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\n * @dev Minimal proxy:\n * Although the sw0nt pattern saves 5 gas over the erc-1167 pattern during runtime,\n * it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern,\n * which saves 4 gas over the erc-1167 pattern during runtime, and has the smallest bytecode.\n * @dev Clones with immutable args (CWIA):\n * The implementation of CWIA here doesn't implements a `receive()` as it is not needed for LB.\n */\nlibrary ImmutableClone {\n error DeploymentFailed();\n error PackedDataTooBig();\n\n /**\n * @dev Deploys a deterministic clone of `implementation` using immutable arguments encoded in `data`, with `salt`\n * @param implementation The address of the implementation\n * @param data The encoded immutable arguments\n * @param salt The salt\n */\n function cloneDeterministic(address implementation, bytes memory data, bytes32 salt)\n internal\n returns (address instance)\n {\n assembly {\n // Compute the boundaries of the data and cache the memory slots around it.\n let mBefore2 := mload(sub(data, 0x40))\n let mBefore1 := mload(sub(data, 0x20))\n let dataLength := mload(data)\n let dataEnd := add(add(data, 0x20), dataLength)\n let mAfter1 := mload(dataEnd)\n\n // +2 bytes for telling how much data there is appended to the call.\n let extraLength := add(dataLength, 2)\n // The `creationSize` is `extraLength + 63`\n // The `runSize` is `creationSize - 10`.\n\n // if `extraLength` is greater than `0xffca` revert as the `creationSize` would be greater than `0xffff`.\n if gt(extraLength, 0xffca) {\n // Store the function selector of `PackedDataTooBig()`.\n mstore(0x00, 0xc8c78139)\n // Revert with (offset, size).\n revert(0x1c, 0x04)\n }\n\n /**\n * ---------------------------------------------------------------------------------------------------+\n * CREATION (10 bytes) |\n * ---------------------------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------------------------|\n * 61 runSize | PUSH2 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------------------------|\n * RUNTIME (98 bytes + extraLength) |\n * ---------------------------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..cds): calldata |\n * |\n * ::: keep some values in stack :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 0 0 0 | [0..cds): calldata |\n * 61 extra | PUSH2 extra | e 0 0 0 0 | [0..cds): calldata |\n * |\n * ::: copy extra data to memory :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 80 | DUP1 | e e 0 0 0 0 | [0..cds): calldata |\n * 60 0x35 | PUSH1 0x35 | 0x35 e e 0 0 0 0 | [0..cds): calldata |\n * 36 | CALLDATASIZE | cds 0x35 e e 0 0 0 0 | [0..cds): calldata |\n * 39 | CODECOPY | e 0 0 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * |\n * ::: delegate call to the implementation contract ::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds e 0 0 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * 01 | ADD | cds+e 0 0 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * 3d | RETURNDATASIZE | 0 cds+e 0 0 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * 73 addr | PUSH20 addr | addr 0 cds+e 0 0 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * 5a | GAS | gas addr 0 cds+e 0 0 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * f4 | DELEGATECALL | success 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * |\n * ::: copy return data to memory ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds success 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * 3d | RETURNDATASIZE | rds rds success 0 0 | [0..cds): calldata, [cds..cds+e): extraData |\n * 93 | SWAP4 | 0 rds success 0 rds | [0..cds): calldata, [cds..cds+e): extraData |\n * 80 | DUP1 | 0 0 rds success 0 rds | [0..cds): calldata, [cds..cds+e): extraData |\n * 3e | RETURNDATACOPY | success 0 rds | [0..rds): returndata |\n * |\n * 60 0x33 | PUSH1 0x33 | 0x33 success 0 rds | [0..rds): returndata |\n * 57 | JUMPI | 0 rds | [0..rds): returndata |\n * |\n * ::: revert ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * fd | REVERT | | [0..rds): returndata |\n * |\n * ::: return ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | 0 rds | [0..rds): returndata |\n * f3 | RETURN | | [0..rds): returndata |\n * ---------------------------------------------------------------------------------------------------+\n */\n // Write the bytecode before the data.\n mstore(data, 0x5af43d3d93803e603357fd5bf3)\n // Write the address of the implementation.\n mstore(sub(data, 0x0d), implementation)\n mstore(\n sub(data, 0x21),\n or(\n shl(0xd8, add(extraLength, 0x35)),\n or(shl(0x48, extraLength), 0x6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d73)\n )\n )\n mstore(dataEnd, shl(0xf0, extraLength))\n\n // Create the instance.\n instance := create2(0, sub(data, 0x1f), add(extraLength, 0x3f), salt)\n\n // If `instance` is zero, revert.\n if iszero(instance) {\n // Store the function selector of `DeploymentFailed()`.\n mstore(0x00, 0x30116425)\n // Revert with (offset, size).\n revert(0x1c, 0x04)\n }\n\n // Restore the overwritten memory surrounding `data`.\n mstore(dataEnd, mAfter1)\n mstore(data, dataLength)\n mstore(sub(data, 0x20), mBefore1)\n mstore(sub(data, 0x40), mBefore2)\n }\n }\n\n /**\n * @dev Returns the initialization code hash of the clone of `implementation`\n * using immutable arguments encoded in `data`.\n * Used for mining vanity addresses with create2crunch.\n * @param implementation The address of the implementation contract.\n * @param data The encoded immutable arguments.\n * @return hash The initialization code hash.\n */\n function initCodeHash(address implementation, bytes memory data) internal pure returns (bytes32 hash) {\n assembly {\n // Compute the boundaries of the data and cache the memory slots around it.\n let mBefore2 := mload(sub(data, 0x40))\n let mBefore1 := mload(sub(data, 0x20))\n let dataLength := mload(data)\n let dataEnd := add(add(data, 0x20), dataLength)\n let mAfter1 := mload(dataEnd)\n\n // +2 bytes for telling how much data there is appended to the call.\n let extraLength := add(dataLength, 2)\n // The `creationSize` is `extraLength + 63`\n // The `runSize` is `creationSize - 10`.\n\n // if `extraLength` is greater than `0xffca` revert as the `creationSize` would be greater than `0xffff`.\n if gt(extraLength, 0xffca) {\n // Store the function selector of `PackedDataTooBig()`.\n mstore(0x00, 0xc8c78139)\n // Revert with (offset, size).\n revert(0x1c, 0x04)\n }\n\n // Write the bytecode before the data.\n mstore(data, 0x5af43d3d93803e603357fd5bf3)\n // Write the address of the implementation.\n mstore(sub(data, 0x0d), implementation)\n mstore(\n sub(data, 0x21),\n or(\n shl(0xd8, add(extraLength, 0x35)),\n or(shl(0x48, extraLength), 0x6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d73)\n )\n )\n mstore(dataEnd, shl(0xf0, extraLength))\n\n // Create the instance.\n hash := keccak256(sub(data, 0x1f), add(extraLength, 0x3f))\n\n // Restore the overwritten memory surrounding `data`.\n mstore(dataEnd, mAfter1)\n mstore(data, dataLength)\n mstore(sub(data, 0x20), mBefore1)\n mstore(sub(data, 0x40), mBefore2)\n }\n }\n\n /**\n * @dev Returns the address of the deterministic clone of\n * `implementation` using immutable arguments encoded in `data`, with `salt`, by `deployer`.\n * @param implementation The address of the implementation.\n * @param data The immutable arguments of the implementation.\n * @param salt The salt used to compute the address.\n * @param deployer The address of the deployer.\n * @return predicted The predicted address.\n */\n function predictDeterministicAddress(address implementation, bytes memory data, bytes32 salt, address deployer)\n internal\n pure\n returns (address predicted)\n {\n bytes32 hash = initCodeHash(implementation, data);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /**\n * @dev Returns the address when a contract with initialization code hash,\n * `hash`, is deployed with `salt`, by `deployer`.\n * @param hash The initialization code hash.\n * @param salt The salt used to compute the address.\n * @param deployer The address of the deployer.\n * @return predicted The predicted address.\n */\n function predictDeterministicAddress(bytes32 hash, bytes32 salt, address deployer)\n internal\n pure\n returns (address predicted)\n {\n /// @solidity memory-safe-assembly\n assembly {\n // Compute the boundaries of the data and cache the memory slots around it.\n let mBefore := mload(0x35)\n\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, hash)\n mstore(0x01, shl(96, deployer))\n mstore(0x15, salt)\n predicted := keccak256(0x00, 0x55)\n\n // Restore the part of the free memory pointer that has been overwritten.\n mstore(0x35, mBefore)\n }\n }\n}\n" + }, + "src/libraries/math/Encoded.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Encoded Library\n * @notice Helper contract used for decoding bytes32 sample\n */\nlibrary Encoded {\n uint256 internal constant MASK_UINT1 = 0x1;\n uint256 internal constant MASK_UINT8 = 0xff;\n uint256 internal constant MASK_UINT12 = 0xfff;\n uint256 internal constant MASK_UINT14 = 0x3fff;\n uint256 internal constant MASK_UINT16 = 0xffff;\n uint256 internal constant MASK_UINT20 = 0xfffff;\n uint256 internal constant MASK_UINT24 = 0xffffff;\n uint256 internal constant MASK_UINT40 = 0xffffffffff;\n uint256 internal constant MASK_UINT64 = 0xffffffffffffffff;\n uint256 internal constant MASK_UINT128 = 0xffffffffffffffffffffffffffffffff;\n\n /**\n * @notice Internal function to set a value in an encoded bytes32 using a mask and offset\n * @dev This function can overflow\n * @param encoded The previous encoded value\n * @param value The value to encode\n * @param mask The mask\n * @param offset The offset\n * @return newEncoded The new encoded value\n */\n function set(bytes32 encoded, uint256 value, uint256 mask, uint256 offset)\n internal\n pure\n returns (bytes32 newEncoded)\n {\n assembly {\n newEncoded := and(encoded, not(shl(offset, mask)))\n newEncoded := or(newEncoded, shl(offset, and(value, mask)))\n }\n }\n\n /**\n * @notice Internal function to set a bool in an encoded bytes32 using an offset\n * @dev This function can overflow\n * @param encoded The previous encoded value\n * @param boolean The bool to encode\n * @param offset The offset\n * @return newEncoded The new encoded value\n */\n function setBool(bytes32 encoded, bool boolean, uint256 offset) internal pure returns (bytes32 newEncoded) {\n return set(encoded, boolean ? 1 : 0, MASK_UINT1, offset);\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample using a mask and offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param mask The mask\n * @param offset The offset\n * @return value The decoded value\n */\n function decode(bytes32 encoded, uint256 mask, uint256 offset) internal pure returns (uint256 value) {\n assembly {\n value := and(shr(offset, encoded), mask)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a bool using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return boolean The decoded value as a bool\n */\n function decodeBool(bytes32 encoded, uint256 offset) internal pure returns (bool boolean) {\n assembly {\n boolean := and(shr(offset, encoded), MASK_UINT1)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint8 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint8(bytes32 encoded, uint256 offset) internal pure returns (uint8 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT8)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint12 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value as a uint16, since uint12 is not supported\n */\n function decodeUint12(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT12)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint14 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value as a uint16, since uint14 is not supported\n */\n function decodeUint14(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT14)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint16 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint16(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT16)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint20 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value as a uint24, since uint20 is not supported\n */\n function decodeUint20(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT20)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint24 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint24(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT24)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint40 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint40(bytes32 encoded, uint256 offset) internal pure returns (uint40 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT40)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint64 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint64(bytes32 encoded, uint256 offset) internal pure returns (uint64 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT64)\n }\n }\n\n /**\n * @notice Internal function to decode a bytes32 sample into a uint128 using an offset\n * @dev This function can overflow\n * @param encoded The encoded value\n * @param offset The offset\n * @return value The decoded value\n */\n function decodeUint128(bytes32 encoded, uint256 offset) internal pure returns (uint128 value) {\n assembly {\n value := and(shr(offset, encoded), MASK_UINT128)\n }\n }\n}\n" + }, + "src/libraries/PairParameterHelper.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Constants} from \"./Constants.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {Encoded} from \"./math/Encoded.sol\";\n\n/**\n * @title Liquidity Book Pair Parameter Helper Library\n * @dev This library contains functions to get and set parameters of a pair\n * The parameters are stored in a single bytes32 variable in the following format:\n * [0 - 16[: base factor (16 bits)\n * [16 - 28[: filter period (12 bits)\n * [28 - 40[: decay period (12 bits)\n * [40 - 54[: reduction factor (14 bits)\n * [54 - 78[: variable fee control (24 bits)\n * [78 - 92[: protocol share (14 bits)\n * [92 - 112[: max volatility accumulator (20 bits)\n * [112 - 132[: volatility accumulator (20 bits)\n * [132 - 152[: volatility reference (20 bits)\n * [152 - 176[: index reference (24 bits)\n * [176 - 216[: time of last update (40 bits)\n * [216 - 232[: oracle index (16 bits)\n * [232 - 256[: active index (24 bits)\n */\nlibrary PairParameterHelper {\n using SafeCast for uint256;\n using Encoded for bytes32;\n\n error PairParametersHelper__InvalidParameter();\n\n uint256 internal constant OFFSET_BASE_FACTOR = 0;\n uint256 internal constant OFFSET_FILTER_PERIOD = 16;\n uint256 internal constant OFFSET_DECAY_PERIOD = 28;\n uint256 internal constant OFFSET_REDUCTION_FACTOR = 40;\n uint256 internal constant OFFSET_VAR_FEE_CONTROL = 54;\n uint256 internal constant OFFSET_PROTOCOL_SHARE = 78;\n uint256 internal constant OFFSET_MAX_VOL_ACC = 92;\n uint256 internal constant OFFSET_VOL_ACC = 112;\n uint256 internal constant OFFSET_VOL_REF = 132;\n uint256 internal constant OFFSET_ID_REF = 152;\n uint256 internal constant OFFSET_TIME_LAST_UPDATE = 176;\n uint256 internal constant OFFSET_ORACLE_ID = 216;\n uint256 internal constant OFFSET_ACTIVE_ID = 232;\n\n uint256 internal constant MASK_STATIC_PARAMETER = 0xffffffffffffffffffffffffffff;\n\n /**\n * @dev Get the base factor from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 16[: base factor (16 bits)\n * [16 - 256[: other parameters\n * @return baseFactor The base factor\n */\n function getBaseFactor(bytes32 params) internal pure returns (uint16 baseFactor) {\n baseFactor = params.decodeUint16(OFFSET_BASE_FACTOR);\n }\n\n /**\n * @dev Get the filter period from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 16[: other parameters\n * [16 - 28[: filter period (12 bits)\n * [28 - 256[: other parameters\n * @return filterPeriod The filter period\n */\n function getFilterPeriod(bytes32 params) internal pure returns (uint16 filterPeriod) {\n filterPeriod = params.decodeUint12(OFFSET_FILTER_PERIOD);\n }\n\n /**\n * @dev Get the decay period from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 28[: other parameters\n * [28 - 40[: decay period (12 bits)\n * [40 - 256[: other parameters\n * @return decayPeriod The decay period\n */\n function getDecayPeriod(bytes32 params) internal pure returns (uint16 decayPeriod) {\n decayPeriod = params.decodeUint12(OFFSET_DECAY_PERIOD);\n }\n\n /**\n * @dev Get the reduction factor from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 40[: other parameters\n * [40 - 54[: reduction factor (14 bits)\n * [54 - 256[: other parameters\n * @return reductionFactor The reduction factor\n */\n function getReductionFactor(bytes32 params) internal pure returns (uint16 reductionFactor) {\n reductionFactor = params.decodeUint14(OFFSET_REDUCTION_FACTOR);\n }\n\n /**\n * @dev Get the variable fee control from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 54[: other parameters\n * [54 - 78[: variable fee control (24 bits)\n * [78 - 256[: other parameters\n * @return variableFeeControl The variable fee control\n */\n function getVariableFeeControl(bytes32 params) internal pure returns (uint24 variableFeeControl) {\n variableFeeControl = params.decodeUint24(OFFSET_VAR_FEE_CONTROL);\n }\n\n /**\n * @dev Get the protocol share from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 78[: other parameters\n * [78 - 92[: protocol share (14 bits)\n * [92 - 256[: other parameters\n * @return protocolShare The protocol share\n */\n function getProtocolShare(bytes32 params) internal pure returns (uint16 protocolShare) {\n protocolShare = params.decodeUint14(OFFSET_PROTOCOL_SHARE);\n }\n\n /**\n * @dev Get the max volatility accumulator from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 92[: other parameters\n * [92 - 112[: max volatility accumulator (20 bits)\n * [112 - 256[: other parameters\n * @return maxVolatilityAccumulator The max volatility accumulator\n */\n function getMaxVolatilityAccumulator(bytes32 params) internal pure returns (uint24 maxVolatilityAccumulator) {\n maxVolatilityAccumulator = params.decodeUint20(OFFSET_MAX_VOL_ACC);\n }\n\n /**\n * @dev Get the volatility accumulator from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 112[: other parameters\n * [112 - 132[: volatility accumulator (20 bits)\n * [132 - 256[: other parameters\n * @return volatilityAccumulator The volatility accumulator\n */\n function getVolatilityAccumulator(bytes32 params) internal pure returns (uint24 volatilityAccumulator) {\n volatilityAccumulator = params.decodeUint20(OFFSET_VOL_ACC);\n }\n\n /**\n * @dev Get the volatility reference from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 132[: other parameters\n * [132 - 152[: volatility reference (20 bits)\n * [152 - 256[: other parameters\n * @return volatilityReference The volatility reference\n */\n function getVolatilityReference(bytes32 params) internal pure returns (uint24 volatilityReference) {\n volatilityReference = params.decodeUint20(OFFSET_VOL_REF);\n }\n\n /**\n * @dev Get the index reference from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 152[: other parameters\n * [152 - 176[: index reference (24 bits)\n * [176 - 256[: other parameters\n * @return idReference The index reference\n */\n function getIdReference(bytes32 params) internal pure returns (uint24 idReference) {\n idReference = params.decodeUint24(OFFSET_ID_REF);\n }\n\n /**\n * @dev Get the time of last update from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 176[: other parameters\n * [176 - 216[: time of last update (40 bits)\n * [216 - 256[: other parameters\n * @return timeOflastUpdate The time of last update\n */\n function getTimeOfLastUpdate(bytes32 params) internal pure returns (uint40 timeOflastUpdate) {\n timeOflastUpdate = params.decodeUint40(OFFSET_TIME_LAST_UPDATE);\n }\n\n /**\n * @dev Get the oracle id from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 216[: other parameters\n * [216 - 232[: oracle id (16 bits)\n * [232 - 256[: other parameters\n * @return oracleId The oracle id\n */\n function getOracleId(bytes32 params) internal pure returns (uint16 oracleId) {\n oracleId = params.decodeUint16(OFFSET_ORACLE_ID);\n }\n\n /**\n * @dev Get the active index from the encoded pair parameters\n * @param params The encoded pair parameters, as follows:\n * [0 - 232[: other parameters\n * [232 - 256[: active index (24 bits)\n * @return activeId The active index\n */\n function getActiveId(bytes32 params) internal pure returns (uint24 activeId) {\n activeId = params.decodeUint24(OFFSET_ACTIVE_ID);\n }\n\n /**\n * @dev Get the delta between the current active index and the cached active index\n * @param params The encoded pair parameters, as follows:\n * [0 - 232[: other parameters\n * [232 - 256[: active index (24 bits)\n * @param activeId The current active index\n * @return The delta\n */\n function getDeltaId(bytes32 params, uint24 activeId) internal pure returns (uint24) {\n uint24 id = getActiveId(params);\n unchecked {\n return activeId > id ? activeId - id : id - activeId;\n }\n }\n\n /**\n * @dev Calculates the base fee, with 18 decimals\n * @param params The encoded pair parameters\n * @param binStep The bin step (in basis points)\n * @return baseFee The base fee\n */\n function getBaseFee(bytes32 params, uint16 binStep) internal pure returns (uint256) {\n unchecked {\n // Base factor is in basis points, binStep is in basis points, so we multiply by 1e10\n return uint256(getBaseFactor(params)) * binStep * 1e10;\n }\n }\n\n /**\n * @dev Calculates the variable fee\n * @param params The encoded pair parameters\n * @param binStep The bin step (in basis points)\n * @return variableFee The variable fee\n */\n function getVariableFee(bytes32 params, uint16 binStep) internal pure returns (uint256 variableFee) {\n uint256 variableFeeControl = getVariableFeeControl(params);\n\n if (variableFeeControl != 0) {\n unchecked {\n // The volatility accumulator is in basis points, binStep is in basis points,\n // and the variable fee control is in basis points, so the result is in 100e18th\n uint256 prod = uint256(getVolatilityAccumulator(params)) * binStep;\n variableFee = (prod * prod * variableFeeControl + 99) / 100;\n }\n }\n }\n\n /**\n * @dev Calculates the total fee, which is the sum of the base fee and the variable fee\n * @param params The encoded pair parameters\n * @param binStep The bin step (in basis points)\n * @return totalFee The total fee\n */\n function getTotalFee(bytes32 params, uint16 binStep) internal pure returns (uint128) {\n unchecked {\n return (getBaseFee(params, binStep) + getVariableFee(params, binStep)).safe128();\n }\n }\n\n /**\n * @dev Set the oracle id in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param oracleId The oracle id\n * @return The updated encoded pair parameters\n */\n function setOracleId(bytes32 params, uint16 oracleId) internal pure returns (bytes32) {\n return params.set(oracleId, Encoded.MASK_UINT16, OFFSET_ORACLE_ID);\n }\n\n /**\n * @dev Set the volatility reference in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param volRef The volatility reference\n * @return The updated encoded pair parameters\n */\n function setVolatilityReference(bytes32 params, uint24 volRef) internal pure returns (bytes32) {\n if (volRef > Encoded.MASK_UINT20) revert PairParametersHelper__InvalidParameter();\n\n return params.set(volRef, Encoded.MASK_UINT20, OFFSET_VOL_REF);\n }\n\n /**\n * @dev Set the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param volAcc The volatility accumulator\n * @return The updated encoded pair parameters\n */\n function setVolatilityAccumulator(bytes32 params, uint24 volAcc) internal pure returns (bytes32) {\n if (volAcc > Encoded.MASK_UINT20) revert PairParametersHelper__InvalidParameter();\n\n return params.set(volAcc, Encoded.MASK_UINT20, OFFSET_VOL_ACC);\n }\n\n /**\n * @dev Set the active id in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param activeId The active id\n * @return newParams The updated encoded pair parameters\n */\n function setActiveId(bytes32 params, uint24 activeId) internal pure returns (bytes32 newParams) {\n return params.set(activeId, Encoded.MASK_UINT24, OFFSET_ACTIVE_ID);\n }\n\n /**\n * @dev Sets the static fee parameters in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param baseFactor The base factor\n * @param filterPeriod The filter period\n * @param decayPeriod The decay period\n * @param reductionFactor The reduction factor\n * @param variableFeeControl The variable fee control\n * @param protocolShare The protocol share\n * @param maxVolatilityAccumulator The max volatility accumulator\n * @return newParams The updated encoded pair parameters\n */\n function setStaticFeeParameters(\n bytes32 params,\n uint16 baseFactor,\n uint16 filterPeriod,\n uint16 decayPeriod,\n uint16 reductionFactor,\n uint24 variableFeeControl,\n uint16 protocolShare,\n uint24 maxVolatilityAccumulator\n ) internal pure returns (bytes32 newParams) {\n if (\n filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12\n || reductionFactor > Constants.BASIS_POINT_MAX || protocolShare > Constants.MAX_PROTOCOL_SHARE\n || maxVolatilityAccumulator > Encoded.MASK_UINT20\n ) revert PairParametersHelper__InvalidParameter();\n\n newParams = newParams.set(baseFactor, Encoded.MASK_UINT16, OFFSET_BASE_FACTOR);\n newParams = newParams.set(filterPeriod, Encoded.MASK_UINT12, OFFSET_FILTER_PERIOD);\n newParams = newParams.set(decayPeriod, Encoded.MASK_UINT12, OFFSET_DECAY_PERIOD);\n newParams = newParams.set(reductionFactor, Encoded.MASK_UINT14, OFFSET_REDUCTION_FACTOR);\n newParams = newParams.set(variableFeeControl, Encoded.MASK_UINT24, OFFSET_VAR_FEE_CONTROL);\n newParams = newParams.set(protocolShare, Encoded.MASK_UINT14, OFFSET_PROTOCOL_SHARE);\n newParams = newParams.set(maxVolatilityAccumulator, Encoded.MASK_UINT20, OFFSET_MAX_VOL_ACC);\n\n return params.set(uint256(newParams), MASK_STATIC_PARAMETER, 0);\n }\n\n /**\n * @dev Updates the index reference in the encoded pair parameters\n * @param params The encoded pair parameters\n * @return newParams The updated encoded pair parameters\n */\n function updateIdReference(bytes32 params) internal pure returns (bytes32 newParams) {\n uint24 activeId = getActiveId(params);\n return params.set(activeId, Encoded.MASK_UINT24, OFFSET_ID_REF);\n }\n\n /**\n * @dev Updates the time of last update in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param timestamp The timestamp\n * @return newParams The updated encoded pair parameters\n */\n function updateTimeOfLastUpdate(bytes32 params, uint256 timestamp) internal pure returns (bytes32 newParams) {\n uint40 currentTime = timestamp.safe40();\n return params.set(currentTime, Encoded.MASK_UINT40, OFFSET_TIME_LAST_UPDATE);\n }\n\n /**\n * @dev Updates the volatility reference in the encoded pair parameters\n * @param params The encoded pair parameters\n * @return The updated encoded pair parameters\n */\n function updateVolatilityReference(bytes32 params) internal pure returns (bytes32) {\n uint256 volAcc = getVolatilityAccumulator(params);\n uint256 reductionFactor = getReductionFactor(params);\n\n uint24 volRef;\n unchecked {\n volRef = uint24(volAcc * reductionFactor / Constants.BASIS_POINT_MAX);\n }\n\n return setVolatilityReference(params, volRef);\n }\n\n /**\n * @dev Updates the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param activeId The active id\n * @return The updated encoded pair parameters\n */\n function updateVolatilityAccumulator(bytes32 params, uint24 activeId) internal pure returns (bytes32) {\n uint256 idReference = getIdReference(params);\n\n uint256 deltaId;\n uint256 volAcc;\n\n unchecked {\n deltaId = activeId > idReference ? activeId - idReference : idReference - activeId;\n volAcc = (uint256(getVolatilityReference(params)) + deltaId * Constants.BASIS_POINT_MAX);\n }\n\n uint256 maxVolAcc = getMaxVolatilityAccumulator(params);\n\n volAcc = volAcc > maxVolAcc ? maxVolAcc : volAcc;\n\n return setVolatilityAccumulator(params, uint24(volAcc));\n }\n\n /**\n * @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param timestamp The timestamp\n * @return The updated encoded pair parameters\n */\n function updateReferences(bytes32 params, uint256 timestamp) internal pure returns (bytes32) {\n uint256 dt = timestamp - getTimeOfLastUpdate(params);\n\n if (dt >= getFilterPeriod(params)) {\n params = updateIdReference(params);\n params = dt < getDecayPeriod(params) ? updateVolatilityReference(params) : setVolatilityReference(params, 0);\n }\n\n return updateTimeOfLastUpdate(params, timestamp);\n }\n\n /**\n * @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n * @param params The encoded pair parameters\n * @param activeId The active id\n * @param timestamp The timestamp\n * @return The updated encoded pair parameters\n */\n function updateVolatilityParameters(bytes32 params, uint24 activeId, uint256 timestamp)\n internal\n pure\n returns (bytes32)\n {\n params = updateReferences(params, timestamp);\n return updateVolatilityAccumulator(params, activeId);\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/UpgradeableBeacon.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"./IBeacon.sol\";\nimport {Ownable} from \"../../access/Ownable.sol\";\n\n/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */\ncontract UpgradeableBeacon is IBeacon, Ownable {\n address private _implementation;\n\n /**\n * @dev The `implementation` of the beacon is invalid.\n */\n error BeaconInvalidImplementation(address implementation);\n\n /**\n * @dev Emitted when the implementation returned by the beacon is changed.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Sets the address of the initial implementation, and the initial owner who can upgrade the beacon.\n */\n constructor(address implementation_, address initialOwner) Ownable(initialOwner) {\n _setImplementation(implementation_);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function implementation() public view virtual returns (address) {\n return _implementation;\n }\n\n /**\n * @dev Upgrades the beacon to a new implementation.\n *\n * Emits an {Upgraded} event.\n *\n * Requirements:\n *\n * - msg.sender must be the owner of the contract.\n * - `newImplementation` must be a contract.\n */\n function upgradeTo(address newImplementation) public virtual onlyOwner {\n _setImplementation(newImplementation);\n }\n\n /**\n * @dev Sets the implementation contract address for this beacon\n *\n * Requirements:\n *\n * - `newImplementation` must be a contract.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert BeaconInvalidImplementation(newImplementation);\n }\n _implementation = newImplementation;\n emit Upgraded(newImplementation);\n }\n}\n" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.20;\n\nimport {OwnableUpgradeable} from \"./OwnableUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * This extension of the {Ownable} contract includes a two-step mechanism to transfer\n * ownership, where the new owner must call {acceptOwnership} in order to replace the\n * old one. This can help prevent common mistakes, such as transfers of ownership to\n * incorrect accounts, or to contracts that are unable to interact with the\n * permission system.\n *\n * The initial owner is specified at deployment time in the constructor for `Ownable`. This\n * can later be changed with {transferOwnership} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\n /// @custom:storage-location erc7201:openzeppelin.storage.Ownable2Step\n struct Ownable2StepStorage {\n address _pendingOwner;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Ownable2Step\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant Ownable2StepStorageLocation = 0x237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00;\n\n function _getOwnable2StepStorage() private pure returns (Ownable2StepStorage storage $) {\n assembly {\n $.slot := Ownable2StepStorageLocation\n }\n }\n\n event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n function __Ownable2Step_init() internal onlyInitializing {\n }\n\n function __Ownable2Step_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns the address of the pending owner.\n */\n function pendingOwner() public view virtual returns (address) {\n Ownable2StepStorage storage $ = _getOwnable2StepStorage();\n return $._pendingOwner;\n }\n\n /**\n * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual override onlyOwner {\n Ownable2StepStorage storage $ = _getOwnable2StepStorage();\n $._pendingOwner = newOwner;\n emit OwnershipTransferStarted(owner(), newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual override {\n Ownable2StepStorage storage $ = _getOwnable2StepStorage();\n delete $._pendingOwner;\n super._transferOwnership(newOwner);\n }\n\n /**\n * @dev The new owner accepts the ownership transfer.\n */\n function acceptOwnership() public virtual {\n address sender = _msgSender();\n if (pendingOwner() != sender) {\n revert OwnableUnauthorizedAccount(sender);\n }\n _transferOwnership(sender);\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n struct AccessControlStorage {\n mapping(bytes32 role => RoleData) _roles;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n assembly {\n $.slot := AccessControlStorageLocation\n }\n }\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n function __AccessControl_init() internal onlyInitializing {\n }\n\n function __AccessControl_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n AccessControlStorage storage $ = _getAccessControlStorage();\n bytes32 previousAdminRole = getRoleAdmin(role);\n $._roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (!hasRole(role, account)) {\n $._roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (hasRole(role, account)) {\n $._roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/EnumerableMap.sol)\n// This file was procedurally generated from scripts/generate/templates/EnumerableMap.js.\n\npragma solidity ^0.8.20;\n\nimport {EnumerableSet} from \"./EnumerableSet.sol\";\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```solidity\n * contract Example {\n * // Add the library methods\n * using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n * // Declare a set state variable\n * EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * The following map types are supported:\n *\n * - `uint256 -> address` (`UintToAddressMap`) since v3.0.0\n * - `address -> uint256` (`AddressToUintMap`) since v4.6.0\n * - `bytes32 -> bytes32` (`Bytes32ToBytes32Map`) since v4.6.0\n * - `uint256 -> uint256` (`UintToUintMap`) since v4.7.0\n * - `bytes32 -> uint256` (`Bytes32ToUintMap`) since v4.7.0\n * - `uint256 -> bytes32` (`UintToBytes32Map`) since v5.1.0\n * - `address -> address` (`AddressToAddressMap`) since v5.1.0\n * - `address -> bytes32` (`AddressToBytes32Map`) since v5.1.0\n * - `bytes32 -> address` (`Bytes32ToAddressMap`) since v5.1.0\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n * unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableMap, you can either remove all elements one by one or create a fresh instance using an\n * array of EnumerableMap.\n * ====\n */\nlibrary EnumerableMap {\n using EnumerableSet for EnumerableSet.Bytes32Set;\n\n // To implement this library for multiple types with as little code repetition as possible, we write it in\n // terms of a generic Map type with bytes32 keys and values. The Map implementation uses private functions,\n // and user-facing implementations such as `UintToAddressMap` are just wrappers around the underlying Map.\n // This means that we can only create new EnumerableMaps for types that fit in bytes32.\n\n /**\n * @dev Query for a nonexistent map key.\n */\n error EnumerableMapNonexistentKey(bytes32 key);\n\n struct Bytes32ToBytes32Map {\n // Storage of keys\n EnumerableSet.Bytes32Set _keys;\n mapping(bytes32 key => bytes32) _values;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(Bytes32ToBytes32Map storage map, bytes32 key, bytes32 value) internal returns (bool) {\n map._values[key] = value;\n return map._keys.add(key);\n }\n\n /**\n * @dev Removes a key-value pair from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(Bytes32ToBytes32Map storage map, bytes32 key) internal returns (bool) {\n delete map._values[key];\n return map._keys.remove(key);\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(Bytes32ToBytes32Map storage map, bytes32 key) internal view returns (bool) {\n return map._keys.contains(key);\n }\n\n /**\n * @dev Returns the number of key-value pairs in the map. O(1).\n */\n function length(Bytes32ToBytes32Map storage map) internal view returns (uint256) {\n return map._keys.length();\n }\n\n /**\n * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n *\n * Note that there are no guarantees on the ordering of entries inside the\n * array, and it may change when more entries are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32ToBytes32Map storage map, uint256 index) internal view returns (bytes32, bytes32) {\n bytes32 key = map._keys.at(index);\n return (key, map._values[key]);\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(Bytes32ToBytes32Map storage map, bytes32 key) internal view returns (bool, bytes32) {\n bytes32 value = map._values[key];\n if (value == bytes32(0)) {\n return (contains(map, key), bytes32(0));\n } else {\n return (true, value);\n }\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(Bytes32ToBytes32Map storage map, bytes32 key) internal view returns (bytes32) {\n bytes32 value = map._values[key];\n if (value == 0 && !contains(map, key)) {\n revert EnumerableMapNonexistentKey(key);\n }\n return value;\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(Bytes32ToBytes32Map storage map) internal view returns (bytes32[] memory) {\n return map._keys.values();\n }\n\n // UintToUintMap\n\n struct UintToUintMap {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(UintToUintMap storage map, uint256 key, uint256 value) internal returns (bool) {\n return set(map._inner, bytes32(key), bytes32(value));\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(UintToUintMap storage map, uint256 key) internal returns (bool) {\n return remove(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(UintToUintMap storage map, uint256 key) internal view returns (bool) {\n return contains(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(UintToUintMap storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintToUintMap storage map, uint256 index) internal view returns (uint256, uint256) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (uint256(key), uint256(value));\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(UintToUintMap storage map, uint256 key) internal view returns (bool, uint256) {\n (bool success, bytes32 value) = tryGet(map._inner, bytes32(key));\n return (success, uint256(value));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(UintToUintMap storage map, uint256 key) internal view returns (uint256) {\n return uint256(get(map._inner, bytes32(key)));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(UintToUintMap storage map) internal view returns (uint256[] memory) {\n bytes32[] memory store = keys(map._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintToAddressMap\n\n struct UintToAddressMap {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n return set(map._inner, bytes32(key), bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n return remove(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n return contains(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(UintToAddressMap storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (uint256(key), address(uint160(uint256(value))));\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) {\n (bool success, bytes32 value) = tryGet(map._inner, bytes32(key));\n return (success, address(uint160(uint256(value))));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n return address(uint160(uint256(get(map._inner, bytes32(key)))));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(UintToAddressMap storage map) internal view returns (uint256[] memory) {\n bytes32[] memory store = keys(map._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintToBytes32Map\n\n struct UintToBytes32Map {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(UintToBytes32Map storage map, uint256 key, bytes32 value) internal returns (bool) {\n return set(map._inner, bytes32(key), value);\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(UintToBytes32Map storage map, uint256 key) internal returns (bool) {\n return remove(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(UintToBytes32Map storage map, uint256 key) internal view returns (bool) {\n return contains(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(UintToBytes32Map storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintToBytes32Map storage map, uint256 index) internal view returns (uint256, bytes32) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (uint256(key), value);\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(UintToBytes32Map storage map, uint256 key) internal view returns (bool, bytes32) {\n (bool success, bytes32 value) = tryGet(map._inner, bytes32(key));\n return (success, value);\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(UintToBytes32Map storage map, uint256 key) internal view returns (bytes32) {\n return get(map._inner, bytes32(key));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(UintToBytes32Map storage map) internal view returns (uint256[] memory) {\n bytes32[] memory store = keys(map._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // AddressToUintMap\n\n struct AddressToUintMap {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(AddressToUintMap storage map, address key, uint256 value) internal returns (bool) {\n return set(map._inner, bytes32(uint256(uint160(key))), bytes32(value));\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(AddressToUintMap storage map, address key) internal returns (bool) {\n return remove(map._inner, bytes32(uint256(uint160(key))));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(AddressToUintMap storage map, address key) internal view returns (bool) {\n return contains(map._inner, bytes32(uint256(uint160(key))));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(AddressToUintMap storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressToUintMap storage map, uint256 index) internal view returns (address, uint256) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (address(uint160(uint256(key))), uint256(value));\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(AddressToUintMap storage map, address key) internal view returns (bool, uint256) {\n (bool success, bytes32 value) = tryGet(map._inner, bytes32(uint256(uint160(key))));\n return (success, uint256(value));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(AddressToUintMap storage map, address key) internal view returns (uint256) {\n return uint256(get(map._inner, bytes32(uint256(uint160(key)))));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(AddressToUintMap storage map) internal view returns (address[] memory) {\n bytes32[] memory store = keys(map._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // AddressToAddressMap\n\n struct AddressToAddressMap {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(AddressToAddressMap storage map, address key, address value) internal returns (bool) {\n return set(map._inner, bytes32(uint256(uint160(key))), bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(AddressToAddressMap storage map, address key) internal returns (bool) {\n return remove(map._inner, bytes32(uint256(uint160(key))));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(AddressToAddressMap storage map, address key) internal view returns (bool) {\n return contains(map._inner, bytes32(uint256(uint160(key))));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(AddressToAddressMap storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressToAddressMap storage map, uint256 index) internal view returns (address, address) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (address(uint160(uint256(key))), address(uint160(uint256(value))));\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(AddressToAddressMap storage map, address key) internal view returns (bool, address) {\n (bool success, bytes32 value) = tryGet(map._inner, bytes32(uint256(uint160(key))));\n return (success, address(uint160(uint256(value))));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(AddressToAddressMap storage map, address key) internal view returns (address) {\n return address(uint160(uint256(get(map._inner, bytes32(uint256(uint160(key)))))));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(AddressToAddressMap storage map) internal view returns (address[] memory) {\n bytes32[] memory store = keys(map._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // AddressToBytes32Map\n\n struct AddressToBytes32Map {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(AddressToBytes32Map storage map, address key, bytes32 value) internal returns (bool) {\n return set(map._inner, bytes32(uint256(uint160(key))), value);\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(AddressToBytes32Map storage map, address key) internal returns (bool) {\n return remove(map._inner, bytes32(uint256(uint160(key))));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(AddressToBytes32Map storage map, address key) internal view returns (bool) {\n return contains(map._inner, bytes32(uint256(uint160(key))));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(AddressToBytes32Map storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressToBytes32Map storage map, uint256 index) internal view returns (address, bytes32) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (address(uint160(uint256(key))), value);\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(AddressToBytes32Map storage map, address key) internal view returns (bool, bytes32) {\n (bool success, bytes32 value) = tryGet(map._inner, bytes32(uint256(uint160(key))));\n return (success, value);\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(AddressToBytes32Map storage map, address key) internal view returns (bytes32) {\n return get(map._inner, bytes32(uint256(uint160(key))));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(AddressToBytes32Map storage map) internal view returns (address[] memory) {\n bytes32[] memory store = keys(map._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // Bytes32ToUintMap\n\n struct Bytes32ToUintMap {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(Bytes32ToUintMap storage map, bytes32 key, uint256 value) internal returns (bool) {\n return set(map._inner, key, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(Bytes32ToUintMap storage map, bytes32 key) internal returns (bool) {\n return remove(map._inner, key);\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(Bytes32ToUintMap storage map, bytes32 key) internal view returns (bool) {\n return contains(map._inner, key);\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(Bytes32ToUintMap storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32ToUintMap storage map, uint256 index) internal view returns (bytes32, uint256) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (key, uint256(value));\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(Bytes32ToUintMap storage map, bytes32 key) internal view returns (bool, uint256) {\n (bool success, bytes32 value) = tryGet(map._inner, key);\n return (success, uint256(value));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(Bytes32ToUintMap storage map, bytes32 key) internal view returns (uint256) {\n return uint256(get(map._inner, key));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(Bytes32ToUintMap storage map) internal view returns (bytes32[] memory) {\n bytes32[] memory store = keys(map._inner);\n bytes32[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // Bytes32ToAddressMap\n\n struct Bytes32ToAddressMap {\n Bytes32ToBytes32Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(Bytes32ToAddressMap storage map, bytes32 key, address value) internal returns (bool) {\n return set(map._inner, key, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(Bytes32ToAddressMap storage map, bytes32 key) internal returns (bool) {\n return remove(map._inner, key);\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(Bytes32ToAddressMap storage map, bytes32 key) internal view returns (bool) {\n return contains(map._inner, key);\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(Bytes32ToAddressMap storage map) internal view returns (uint256) {\n return length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the map. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32ToAddressMap storage map, uint256 index) internal view returns (bytes32, address) {\n (bytes32 key, bytes32 value) = at(map._inner, index);\n return (key, address(uint160(uint256(value))));\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function tryGet(Bytes32ToAddressMap storage map, bytes32 key) internal view returns (bool, address) {\n (bool success, bytes32 value) = tryGet(map._inner, key);\n return (success, address(uint160(uint256(value))));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(Bytes32ToAddressMap storage map, bytes32 key) internal view returns (address) {\n return address(uint160(uint256(get(map._inner, key))));\n }\n\n /**\n * @dev Return the an array containing all the keys\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function keys(Bytes32ToAddressMap storage map) internal view returns (bytes32[] memory) {\n bytes32[] memory store = keys(map._inner);\n bytes32[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/EnumerableSet.sol)\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```solidity\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n * unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n * array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position is the index of the value in the `values` array plus 1.\n // Position 0 is used to mean a value is not in the set.\n mapping(bytes32 value => uint256) _positions;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._positions[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We cache the value's position to prevent multiple reads from the same storage slot\n uint256 position = set._positions[value];\n\n if (position != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 valueIndex = position - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (valueIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the lastValue to the index where the value to delete is\n set._values[valueIndex] = lastValue;\n // Update the tracked position of the lastValue (that was just moved)\n set._positions[lastValue] = position;\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the tracked position for the deleted slot\n delete set._positions[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._positions[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n bytes32[] memory store = _values(set._inner);\n bytes32[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n" + }, + "src/libraries/Constants.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Constants Library\n * @notice Set of constants for Liquidity Book contracts\n */\nlibrary Constants {\n uint8 internal constant SCALE_OFFSET = 128;\n uint256 internal constant SCALE = 1 << SCALE_OFFSET;\n\n uint256 internal constant PRECISION = 1e18;\n uint256 internal constant SQUARED_PRECISION = PRECISION * PRECISION;\n\n uint256 internal constant MAX_FEE = 0.1e18; // 10%\n uint256 internal constant MAX_PROTOCOL_SHARE = 2_500; // 25% of the fee\n\n uint256 internal constant BASIS_POINT_MAX = 10_000;\n\n // (2^256 - 1) / (2 * log(2**128) / log(1.0001))\n uint256 internal constant MAX_LIQUIDITY_PER_BIN =\n 65251743116719673010965625540244653191619923014385985379600384103134737;\n\n /// @dev The expected return after a successful flash loan\n bytes32 internal constant CALLBACK_SUCCESS = keccak256(\"LBPair.onFlashLoan\");\n}\n" + }, + "src/libraries/math/Uint256x256Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {BitMath} from \"./BitMath.sol\";\n\n/**\n * @title Liquidity Book Uint256x256 Math Library\n * @notice Helper contract used for full precision calculations\n */\nlibrary Uint256x256Math {\n error Uint256x256Math__MulShiftOverflow();\n error Uint256x256Math__MulDivOverflow();\n\n /**\n * @notice Calculates floor(x*y/denominator) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The denominator cannot be zero\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function mulDivRoundDown(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n (uint256 prod0, uint256 prod1) = _getMulProds(x, y);\n\n return _getEndOfDivRoundDown(x, y, denominator, prod0, prod1);\n }\n\n /**\n * @notice Calculates ceil(x*y/denominator) with full precision\n * The result will be rounded up\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The denominator cannot be zero\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function mulDivRoundUp(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n result = mulDivRoundDown(x, y, denominator);\n if (mulmod(x, y, denominator) != 0) result += 1;\n }\n\n /**\n * @notice Calculates floor(x * y / 2**offset) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param offset The offset as an uint256, can't be greater than 256\n * @return result The result as an uint256\n */\n function mulShiftRoundDown(uint256 x, uint256 y, uint8 offset) internal pure returns (uint256 result) {\n (uint256 prod0, uint256 prod1) = _getMulProds(x, y);\n\n if (prod0 != 0) result = prod0 >> offset;\n if (prod1 != 0) {\n // Make sure the result is less than 2^256.\n if (prod1 >= 1 << offset) revert Uint256x256Math__MulShiftOverflow();\n\n unchecked {\n result += prod1 << (256 - offset);\n }\n }\n }\n\n /**\n * @notice Calculates floor(x * y / 2**offset) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param offset The offset as an uint256, can't be greater than 256\n * @return result The result as an uint256\n */\n function mulShiftRoundUp(uint256 x, uint256 y, uint8 offset) internal pure returns (uint256 result) {\n result = mulShiftRoundDown(x, y, offset);\n if (mulmod(x, y, 1 << offset) != 0) result += 1;\n }\n\n /**\n * @notice Calculates floor(x << offset / y) with full precision\n * The result will be rounded down\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param offset The number of bit to shift x as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function shiftDivRoundDown(uint256 x, uint8 offset, uint256 denominator) internal pure returns (uint256 result) {\n uint256 prod0;\n uint256 prod1;\n\n prod0 = x << offset; // Least significant 256 bits of the product\n unchecked {\n prod1 = x >> (256 - offset); // Most significant 256 bits of the product\n }\n\n return _getEndOfDivRoundDown(x, 1 << offset, denominator, prod0, prod1);\n }\n\n /**\n * @notice Calculates ceil(x << offset / y) with full precision\n * The result will be rounded up\n * @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n * Requirements:\n * - The offset needs to be strictly lower than 256\n * - The result must fit within uint256\n * Caveats:\n * - This function does not work with fixed-point numbers\n * @param x The multiplicand as an uint256\n * @param offset The number of bit to shift x as an uint256\n * @param denominator The divisor as an uint256\n * @return result The result as an uint256\n */\n function shiftDivRoundUp(uint256 x, uint8 offset, uint256 denominator) internal pure returns (uint256 result) {\n result = shiftDivRoundDown(x, offset, denominator);\n if (mulmod(x, 1 << offset, denominator) != 0) result += 1;\n }\n\n /**\n * @notice Helper function to return the result of `x * y` as 2 uint256\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @return prod0 The least significant 256 bits of the product\n * @return prod1 The most significant 256 bits of the product\n */\n function _getMulProds(uint256 x, uint256 y) private pure returns (uint256 prod0, uint256 prod1) {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n }\n\n /**\n * @notice Helper function to return the result of `x * y / denominator` with full precision\n * @param x The multiplicand as an uint256\n * @param y The multiplier as an uint256\n * @param denominator The divisor as an uint256\n * @param prod0 The least significant 256 bits of the product\n * @param prod1 The most significant 256 bits of the product\n * @return result The result as an uint256\n */\n function _getEndOfDivRoundDown(uint256 x, uint256 y, uint256 denominator, uint256 prod0, uint256 prod1)\n private\n pure\n returns (uint256 result)\n {\n // Handle non-overflow cases, 256 by 256 division\n if (prod1 == 0) {\n unchecked {\n result = prod0 / denominator;\n }\n } else {\n // Make sure the result is less than 2^256. Also prevents denominator == 0\n if (prod1 >= denominator) revert Uint256x256Math__MulDivOverflow();\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1\n // See https://cs.stackexchange.com/q/138556/92363\n unchecked {\n // Does not overflow because the denominator cannot be zero at this stage in the function\n uint256 lpotdod = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by lpotdod.\n denominator := div(denominator, lpotdod)\n\n // Divide [prod1 prod0] by lpotdod.\n prod0 := div(prod0, lpotdod)\n\n // Flip lpotdod such that it is 2^256 / lpotdod. If lpotdod is zero, then it becomes one\n lpotdod := add(div(sub(0, lpotdod), lpotdod), 1)\n }\n\n // Shift in bits from prod1 into prod0\n prod0 |= prod1 * lpotdod;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n }\n }\n }\n\n /**\n * @notice Calculates the square root of x\n * @dev Credit to OpenZeppelin's Math library under MIT license\n */\n function sqrt(uint256 x) internal pure returns (uint256 sqrtX) {\n if (x == 0) return 0;\n\n uint256 msb = BitMath.mostSignificantBit(x);\n\n assembly {\n sqrtX := shl(shr(1, msb), 1)\n\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n sqrtX := shr(1, add(sqrtX, div(x, sqrtX)))\n\n x := div(x, sqrtX)\n }\n\n return sqrtX < x ? sqrtX : x;\n }\n}\n" + }, + "src/libraries/math/Uint128x128Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {Constants} from \"../Constants.sol\";\nimport {BitMath} from \"./BitMath.sol\";\n\n/**\n * @title Liquidity Book Uint128x128 Math Library\n * @notice Helper contract used for power and log calculations\n */\nlibrary Uint128x128Math {\n using BitMath for uint256;\n\n error Uint128x128Math__LogUnderflow();\n error Uint128x128Math__PowUnderflow(uint256 x, int256 y);\n\n uint256 constant LOG_SCALE_OFFSET = 127;\n uint256 constant LOG_SCALE = 1 << LOG_SCALE_OFFSET;\n uint256 constant LOG_SCALE_SQUARED = LOG_SCALE * LOG_SCALE;\n\n /**\n * @notice Calculates the binary logarithm of x.\n * @dev Based on the iterative approximation algorithm.\n * https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation\n * Requirements:\n * - x must be greater than zero.\n * Caveats:\n * - The results are not perfectly accurate to the last decimal, due to the lossy precision of the iterative approximation\n * Also because x is converted to an unsigned 129.127-binary fixed-point number during the operation to optimize the multiplication\n * @param x The unsigned 128.128-binary fixed-point number for which to calculate the binary logarithm.\n * @return result The binary logarithm as a signed 128.128-binary fixed-point number.\n */\n function log2(uint256 x) internal pure returns (int256 result) {\n // Convert x to a unsigned 129.127-binary fixed-point number to optimize the multiplication.\n // If we use an offset of 128 bits, y would need 129 bits and y**2 would would overflow and we would have to\n // use mulDiv, by reducing x to 129.127-binary fixed-point number we assert that y will use 128 bits, and we\n // can use the regular multiplication\n\n if (x == 1) return -128;\n if (x == 0) revert Uint128x128Math__LogUnderflow();\n\n x >>= 1;\n\n unchecked {\n // This works because log2(x) = -log2(1/x).\n int256 sign;\n if (x >= LOG_SCALE) {\n sign = 1;\n } else {\n sign = -1;\n // Do the fixed-point inversion inline to save gas\n x = LOG_SCALE_SQUARED / x;\n }\n\n // Calculate the integer part of the logarithm and add it to the result and finally calculate y = x * 2^(-n).\n uint256 n = (x >> LOG_SCALE_OFFSET).mostSignificantBit();\n\n // The integer part of the logarithm as a signed 129.127-binary fixed-point number. The operation can't overflow\n // because n is maximum 255, LOG_SCALE_OFFSET is 127 bits and sign is either 1 or -1.\n result = int256(n) << LOG_SCALE_OFFSET;\n\n // This is y = x * 2^(-n).\n uint256 y = x >> n;\n\n // If y = 1, the fractional part is zero.\n if (y != LOG_SCALE) {\n // Calculate the fractional part via the iterative approximation.\n // The \"delta >>= 1\" part is equivalent to \"delta /= 2\", but shifting bits is faster.\n for (int256 delta = int256(1 << (LOG_SCALE_OFFSET - 1)); delta > 0; delta >>= 1) {\n y = (y * y) >> LOG_SCALE_OFFSET;\n\n // Is y^2 > 2 and so in the range [2,4)?\n if (y >= 1 << (LOG_SCALE_OFFSET + 1)) {\n // Add the 2^(-m) factor to the logarithm.\n result += delta;\n\n // Corresponds to z/2 on Wikipedia.\n y >>= 1;\n }\n }\n }\n // Convert x back to unsigned 128.128-binary fixed-point number\n result = (result * sign) << 1;\n }\n }\n\n /**\n * @notice Returns the value of x^y. It calculates `1 / x^abs(y)` if x is bigger than 2^128.\n * At the end of the operations, we invert the result if needed.\n * @param x The unsigned 128.128-binary fixed-point number for which to calculate the power\n * @param y A relative number without any decimals, needs to be between ]-2^21; 2^21[\n */\n function pow(uint256 x, int256 y) internal pure returns (uint256 result) {\n bool invert;\n uint256 absY;\n\n if (y == 0) return Constants.SCALE;\n\n assembly {\n absY := y\n if slt(absY, 0) {\n absY := sub(0, absY)\n invert := iszero(invert)\n }\n }\n\n if (absY < 0x100000) {\n result = Constants.SCALE;\n assembly {\n let squared := x\n if gt(x, 0xffffffffffffffffffffffffffffffff) {\n squared := div(not(0), squared)\n invert := iszero(invert)\n }\n\n if and(absY, 0x1) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x2) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x4) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x8) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x10) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x20) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x40) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x80) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x100) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x200) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x400) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x800) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x1000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x2000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x4000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x8000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x10000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x20000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x40000) { result := shr(128, mul(result, squared)) }\n squared := shr(128, mul(squared, squared))\n if and(absY, 0x80000) { result := shr(128, mul(result, squared)) }\n }\n }\n\n // revert if y is too big or if x^y underflowed\n if (result == 0) revert Uint128x128Math__PowUnderflow(x, y);\n\n return invert ? type(uint256).max / result : result;\n }\n}\n" + }, + "src/interfaces/ILBToken.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Token Interface\n * @notice Interface to interact with the LBToken.\n */\ninterface ILBToken {\n error LBToken__AddressThisOrZero();\n error LBToken__InvalidLength();\n error LBToken__SelfApproval(address owner);\n error LBToken__SpenderNotApproved(address from, address spender);\n error LBToken__TransferExceedsBalance(address from, uint256 id, uint256 amount);\n error LBToken__BurnExceedsBalance(address from, uint256 id, uint256 amount);\n\n event TransferBatch(\n address indexed sender, address indexed from, address indexed to, uint256[] ids, uint256[] amounts\n );\n\n event ApprovalForAll(address indexed account, address indexed sender, bool approved);\n\n function name() external view returns (string memory);\n\n function symbol() external view returns (string memory);\n\n function totalSupply(uint256 id) external view returns (uint256);\n\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n external\n view\n returns (uint256[] memory);\n\n function isApprovedForAll(address owner, address spender) external view returns (bool);\n\n function approveForAll(address spender, bool approved) external;\n\n function batchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts) external;\n}\n" + }, + "src/interfaces/ILBFlashLoanCallback.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/// @title Liquidity Book Flashloan Callback Interface\n/// @notice Required interface to interact with LB flash loans\ninterface ILBFlashLoanCallback {\n function LBFlashLoanCallback(\n address sender,\n IERC20 tokenX,\n IERC20 tokenY,\n bytes32 amounts,\n bytes32 totalFees,\n bytes calldata data\n ) external returns (bytes32);\n}\n" + }, + "src/libraries/StringUtils.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.10;\n\nlibrary StringUtils {\n function uint16ToString(uint16 value) internal pure returns (string memory) {\n if (value == 0) {\n return \"0\";\n }\n uint16 temp = value;\n uint16 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n while (value != 0) {\n digits -= 1;\n buffer[digits] = bytes1(uint8(48 + uint16(value % 10)));\n value /= 10;\n }\n return string(buffer);\n }\n}\n" + }, + "src/LBPairUnstructuredStorage.sol": { + "content": "// SPDX-License-Identifier: GPL-3\npragma solidity 0.8.20;\n\ncontract LBPairUnstructuredStorage {\n bytes32 internal constant _SLOT_TOKEN_X = 0x3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec31; // keccak256(abi.encode(uint256(keccak256(\"sovrynlbdex.pair.storage.TokenX\")) - 1));\n bytes32 internal constant _SLOT_TOKEN_Y = 0x7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264; // keccak256(abi.encode(uint256(keccak256(\"sovrynlbdex.pair.storage.TokenY\")) - 1));\n bytes32 internal constant _SLOT_BIN_STEP = 0xff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782; // keccak256(abi.encode(uint256(keccak256(\"sovrynlbdex.pair.storage.BinStep\")) - 1));\n bytes32 internal constant _SLOT_PAIR_SYMBOL = 0x64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f; // keccak256(abi.encode(uint256(keccak256(\"sovrynlbdex.pair.storage.PairTokenSymbol\")) - 1));\n bytes32 internal constant _SLOT_PAIR_NAME = 0xd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d84; // keccak256(abi.encode(uint256(keccak256(\"sovrynlbdex.pair.storage.PairTokenName\")) - 1));\n\n}" + }, + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/BeaconProxy.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"./IBeacon.sol\";\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"../ERC1967/ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\n *\n * The beacon address can only be set once during construction, and cannot be changed afterwards. It is stored in an\n * immutable variable to avoid unnecessary storage reads, and also in the beacon storage slot specified by\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] so that it can be accessed externally.\n *\n * CAUTION: Since the beacon address can never be changed, you must ensure that you either control the beacon, or trust\n * the beacon to not upgrade the implementation maliciously.\n *\n * IMPORTANT: Do not use the implementation logic to modify the beacon storage slot. Doing so would leave the proxy in\n * an inconsistent state where the beacon storage slot does not match the beacon address.\n */\ncontract BeaconProxy is Proxy {\n // An immutable address for the beacon to avoid unnecessary SLOADs before each delegate call.\n address private immutable _beacon;\n\n /**\n * @dev Initializes the proxy with `beacon`.\n *\n * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\n * constructor.\n *\n * Requirements:\n *\n * - `beacon` must be a contract with the interface {IBeacon}.\n * - If `data` is empty, `msg.value` must be zero.\n */\n constructor(address beacon, bytes memory data) payable {\n ERC1967Utils.upgradeBeaconToAndCall(beacon, data);\n _beacon = beacon;\n }\n\n /**\n * @dev Returns the current implementation address of the associated beacon.\n */\n function _implementation() internal view virtual override returns (address) {\n return IBeacon(_getBeacon()).implementation();\n }\n\n /**\n * @dev Returns the beacon.\n */\n function _getBeacon() internal view virtual returns (address) {\n return _beacon;\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reininitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n assembly {\n $.slot := INITIALIZABLE_STORAGE\n }\n }\n}\n" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\n struct OwnableStorage {\n address _owner;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Ownable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\n\n function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\n assembly {\n $.slot := OwnableStorageLocation\n }\n }\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n function __Ownable_init(address initialOwner) internal onlyInitializing {\n __Ownable_init_unchained(initialOwner);\n }\n\n function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n OwnableStorage storage $ = _getOwnableStorage();\n return $._owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n OwnableStorage storage $ = _getOwnableStorage();\n address oldOwner = $._owner;\n $._owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n" + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC-165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n" + }, + "src/libraries/math/BitMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.10;\n\n/**\n * @title Liquidity Book Bit Math Library\n * @notice Helper contract used for bit calculations\n */\nlibrary BitMath {\n /**\n * @dev Returns the index of the closest bit on the right of x that is non null\n * @param x The value as a uint256\n * @param bit The index of the bit to start searching at\n * @return id The index of the closest non null bit on the right of x.\n * If there is no closest bit, it returns max(uint256)\n */\n function closestBitRight(uint256 x, uint8 bit) internal pure returns (uint256 id) {\n unchecked {\n uint256 shift = 255 - bit;\n x <<= shift;\n\n // can't overflow as it's non-zero and we shifted it by `_shift`\n return (x == 0) ? type(uint256).max : mostSignificantBit(x) - shift;\n }\n }\n\n /**\n * @dev Returns the index of the closest bit on the left of x that is non null\n * @param x The value as a uint256\n * @param bit The index of the bit to start searching at\n * @return id The index of the closest non null bit on the left of x.\n * If there is no closest bit, it returns max(uint256)\n */\n function closestBitLeft(uint256 x, uint8 bit) internal pure returns (uint256 id) {\n unchecked {\n x >>= bit;\n\n return (x == 0) ? type(uint256).max : leastSignificantBit(x) + bit;\n }\n }\n\n /**\n * @dev Returns the index of the most significant bit of x\n * This function returns 0 if x is 0\n * @param x The value as a uint256\n * @return msb The index of the most significant bit of x\n */\n function mostSignificantBit(uint256 x) internal pure returns (uint8 msb) {\n assembly {\n if gt(x, 0xffffffffffffffffffffffffffffffff) {\n x := shr(128, x)\n msb := 128\n }\n if gt(x, 0xffffffffffffffff) {\n x := shr(64, x)\n msb := add(msb, 64)\n }\n if gt(x, 0xffffffff) {\n x := shr(32, x)\n msb := add(msb, 32)\n }\n if gt(x, 0xffff) {\n x := shr(16, x)\n msb := add(msb, 16)\n }\n if gt(x, 0xff) {\n x := shr(8, x)\n msb := add(msb, 8)\n }\n if gt(x, 0xf) {\n x := shr(4, x)\n msb := add(msb, 4)\n }\n if gt(x, 0x3) {\n x := shr(2, x)\n msb := add(msb, 2)\n }\n if gt(x, 0x1) { msb := add(msb, 1) }\n }\n }\n\n /**\n * @dev Returns the index of the least significant bit of x\n * This function returns 255 if x is 0\n * @param x The value as a uint256\n * @return lsb The index of the least significant bit of x\n */\n function leastSignificantBit(uint256 x) internal pure returns (uint8 lsb) {\n assembly {\n let sx := shl(128, x)\n if iszero(iszero(sx)) {\n lsb := 128\n x := sx\n }\n sx := shl(64, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 64)\n }\n sx := shl(32, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 32)\n }\n sx := shl(16, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 16)\n }\n sx := shl(8, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 8)\n }\n sx := shl(4, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 4)\n }\n sx := shl(2, x)\n if iszero(iszero(sx)) {\n x := sx\n lsb := add(lsb, 2)\n }\n if iszero(iszero(shl(1, x))) { lsb := add(lsb, 1) }\n\n lsb := sub(255, lsb)\n }\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the ERC-1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error AddressInsufficientBalance(address account);\n\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedInnerCall();\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert AddressInsufficientBalance(address(this));\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert FailedInnerCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {FailedInnerCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert AddressInsufficientBalance(address(this));\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n * unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {FailedInnerCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert FailedInnerCall();\n }\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.legacyAssembly", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "evm.gasEstimates", + "evm.assembly" + ] + } + }, + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "forge-std/=lib/forge-std/src/", + "src/=src/", + "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", + "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/" + ] + } + }, + "output": { + "contracts": { + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "AccessControlUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.", + "errors": { + "AccessControlBadConfirmation()": [ + { + "details": "The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}." + } + ], + "AccessControlUnauthorizedAccount(address,bytes32)": [ + { + "details": "The `account` is missing a role." + } + ], + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + }, + "RoleAdminChanged(bytes32,bytes32,bytes32)": { + "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this." + }, + "RoleGranted(bytes32,address,address)": { + "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}." + }, + "RoleRevoked(bytes32,address,address)": { + "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" + } + }, + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xddfe0afa85367153020524d383fe0bc9a1545f343019ddf33f98f392887047f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62f3df350ce83190e81673e424dd47d9ee8ffb121a6f72994c75c8ae3fc9dded\",\"dweb:/ipfs/QmaA2CMuqESmdgVao4XzCL4aRwcZW1xjUXpY7RqHZfQoAV\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol": { + "Ownable2StepUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. This extension of the {Ownable} contract includes a two-step mechanism to transfer ownership, where the new owner must call {acceptOwnership} in order to replace the old one. This can help prevent common mistakes, such as transfers of ownership to incorrect accounts, or to contracts that are unable to interact with the permission system. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).", + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ], + "OwnableInvalidOwner(address)": [ + { + "details": "The owner is not a valid owner account. (eg. `address(0)`)" + } + ], + "OwnableUnauthorizedAccount(address)": [ + { + "details": "The caller account is not authorized to perform an operation." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, + "kind": "dev", + "methods": { + "acceptOwnership()": { + "details": "The new owner accepts the ownership transfer." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "pendingOwner()": { + "details": "Returns the address of the pending owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "acceptOwnership()": "79ba5097", + "owner()": "8da5cb5b", + "pendingOwner()": "e30c3978", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. This extension of the {Ownable} contract includes a two-step mechanism to transfer ownership, where the new owner must call {acceptOwnership} in order to replace the old one. This can help prevent common mistakes, such as transfers of ownership to incorrect accounts, or to contracts that are unable to interact with the permission system. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":\"Ownable2StepUpgradeable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x72a2cb65884e565b059fdf43b1c8e074a2128d4456c467cabfcebd28f2f4c336\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ed917865e6ddc26ddefbd9376bb36a258e40dac98ed4836e54c8920c8982d22\",\"dweb:/ipfs/QmNonmf4PWnH2CzyTGmrgDkfzRz1uQaZdCQYQRaMpX3YNB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "OwnableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ], + "OwnableInvalidOwner(address)": [ + { + "details": "The owner is not a valid owner account. (eg. `address(0)`)" + } + ], + "OwnableUnauthorizedAccount(address)": [ + { + "details": "The caller account is not authorized to perform an operation." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, + "kind": "dev", + "methods": { + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "Initializable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "devdoc": { + "custom:oz-upgrades-unsafe-allow": "constructor constructor() { _disableInitializers(); } ``` ====", + "details": "This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```", + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "ContextUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "devdoc": { + "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "ERC165Upgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```", + "errors": { + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + } + }, + "kind": "dev", + "methods": { + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xddfe0afa85367153020524d383fe0bc9a1545f343019ddf33f98f392887047f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62f3df350ce83190e81673e424dd47d9ee8ffb121a6f72994c75c8ae3fc9dded\",\"dweb:/ipfs/QmaA2CMuqESmdgVao4XzCL4aRwcZW1xjUXpY7RqHZfQoAV\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { + "IAccessControl": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "External interface of AccessControl declared to support ERC-165 detection.", + "errors": { + "AccessControlBadConfirmation()": [ + { + "details": "The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}." + } + ], + "AccessControlUnauthorizedAccount(address,bytes32)": [ + { + "details": "The `account` is missing a role." + } + ] + }, + "events": { + "RoleAdminChanged(bytes32,bytes32,bytes32)": { + "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this." + }, + "RoleGranted(bytes32,address,address)": { + "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}." + }, + "RoleRevoked(bytes32,address,address)": { + "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" + } + }, + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "Ownable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", + "errors": { + "OwnableInvalidOwner(address)": [ + { + "details": "The owner is not a valid owner account. (eg. `address(0)`)" + } + ], + "OwnableUnauthorizedAccount(address)": [ + { + "details": "The caller account is not authorized to perform an operation." + } + ] + }, + "kind": "dev", + "methods": { + "constructor": { + "details": "Initializes the contract setting the address provided by the deployer as the initial owner." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 1126, + "contract": "lib/openzeppelin-contracts/contracts/access/Ownable.sol:Ownable", + "label": "_owner", + "offset": 0, + "slot": "0", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ERC1967Utils": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "ERC1967InvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "ERC1967InvalidBeacon", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "devdoc": { + "details": "This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.", + "errors": { + "ERC1967InvalidAdmin(address)": [ + { + "details": "The `admin` of the proxy is invalid." + } + ], + "ERC1967InvalidBeacon(address)": [ + { + "details": "The `beacon` of the proxy is invalid." + } + ], + "ERC1967InvalidImplementation(address)": [ + { + "details": "The `implementation` of the proxy is invalid." + } + ], + "ERC1967NonPayable()": [ + { + "details": "An upgrade function sees `msg.value > 0` that may be lost." + } + ] + }, + "events": { + "AdminChanged(address,address)": { + "details": "Emitted when the admin account has changed." + }, + "BeaconUpgraded(address)": { + "details": "Emitted when the beacon is changed." + }, + "Upgraded(address)": { + "details": "Emitted when the implementation is upgraded." + } + }, + "kind": "dev", + "methods": {}, + "stateVariables": { + "ADMIN_SLOT": { + "details": "Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1." + }, + "BEACON_SLOT": { + "details": "The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1." + }, + "IMPLEMENTATION_SLOT": { + "details": "Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1." + } + }, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":450:6543 library ERC1967Utils {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":450:6543 library ERC1967Utils {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212200f3ebd4c201977539e4ba56c20121718759afe70dc35293e6f6f65af9a8ea11064736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200f3ebd4c201977539e4ba56c20121718759afe70dc35293e6f6f65af9a8ea11064736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF RETURNDATACOPY 0xBD 0x4C KECCAK256 NOT PUSH24 0x539E4BA56C20121718759AFE70DC35293E6F6F65AF9A8EA1 LT PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "450:6093:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200f3ebd4c201977539e4ba56c20121718759afe70dc35293e6f6f65af9a8ea11064736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF RETURNDATACOPY 0xBD 0x4C KECCAK256 NOT PUSH24 0x539E4BA56C20121718759AFE70DC35293E6F6F65AF9A8EA1 LT PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "450:6093:8:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_checkNonPayable()": "infinite", + "_setAdmin(address)": "infinite", + "_setBeacon(address)": "infinite", + "_setImplementation(address)": "infinite", + "changeAdmin(address)": "infinite", + "getAdmin()": "infinite", + "getBeacon()": "infinite", + "getImplementation()": "infinite", + "upgradeBeaconToAndCall(address,bytes memory)": "infinite", + "upgradeToAndCall(address,bytes memory)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 450, + "end": 6543, + "name": "PUSH #[$]", + "source": 8, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH [$]", + "source": 8, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "B" + }, + { + "begin": 450, + "end": 6543, + "name": "DUP3", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "DUP3", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "DUP3", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "CODECOPY", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "DUP1", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 450, + "end": 6543, + "name": "BYTE", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "73" + }, + { + "begin": 450, + "end": 6543, + "name": "EQ", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH [tag]", + "source": 8, + "value": "1" + }, + { + "begin": 450, + "end": 6543, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 450, + "end": 6543, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 450, + "end": 6543, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "24" + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 450, + "end": 6543, + "name": "REVERT", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "tag", + "source": 8, + "value": "1" + }, + { + "begin": 450, + "end": 6543, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "ADDRESS", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 450, + "end": 6543, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "73" + }, + { + "begin": 450, + "end": 6543, + "name": "DUP2", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "MSTORE8", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "DUP3", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "DUP2", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "RETURN", + "source": 8 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212200f3ebd4c201977539e4ba56c20121718759afe70dc35293e6f6f65af9a8ea11064736f6c63430008140033", + ".code": [ + { + "begin": 450, + "end": 6543, + "name": "PUSHDEPLOYADDRESS", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "ADDRESS", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "EQ", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "80" + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 450, + "end": 6543, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 450, + "end": 6543, + "name": "DUP1", + "source": 8 + }, + { + "begin": 450, + "end": 6543, + "name": "REVERT", + "source": 8 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06bd04b0d6af06424c58c24ad861ac4fbe68ae729c199127f4b64361a0629510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a9228dd927facb9a400333848e8cf616c7a7f30693563d98a963266dc8ae28a\",\"dweb:/ipfs/Qmehe5JAWCK7g8A9VkS9LpfiNkYzXkrxnXfpvtuqbrA9BA\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x70d9a9cf8d5cc830d7396505ef8eb9686bd0c60a29c6644bd6cc278f9bab8ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719abb402c11be12355088da587ffd971fee1b035b5aa6b1ba3b1a9493d3c1d7\",\"dweb:/ipfs/QmanHMFVDqVtZAFFaH1CeGQWoHWsFnWHH75fCrguwi77Hq\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol": { + "Proxy": { + "abi": [ + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "devdoc": { + "details": "This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol": { + "BeaconProxy": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "ERC1967InvalidBeacon", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "devdoc": { + "details": "This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}. The beacon address can only be set once during construction, and cannot be changed afterwards. It is stored in an immutable variable to avoid unnecessary storage reads, and also in the beacon storage slot specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] so that it can be accessed externally. CAUTION: Since the beacon address can never be changed, you must ensure that you either control the beacon, or trust the beacon to not upgrade the implementation maliciously. IMPORTANT: Do not use the implementation logic to modify the beacon storage slot. Doing so would leave the proxy in an inconsistent state where the beacon storage slot does not match the beacon address.", + "errors": { + "AddressEmptyCode(address)": [ + { + "details": "There's no code at `target` (it is not a contract)." + } + ], + "ERC1967InvalidBeacon(address)": [ + { + "details": "The `beacon` of the proxy is invalid." + } + ], + "ERC1967InvalidImplementation(address)": [ + { + "details": "The `implementation` of the proxy is invalid." + } + ], + "ERC1967NonPayable()": [ + { + "details": "An upgrade function sees `msg.value > 0` that may be lost." + } + ], + "FailedInnerCall()": [ + { + "details": "A call to an address target failed. The target may have reverted." + } + ] + }, + "events": { + "BeaconUpgraded(address)": { + "details": "Emitted when the beacon is changed." + } + }, + "kind": "dev", + "methods": { + "constructor": { + "details": "Initializes the proxy with `beacon`. If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - `beacon` must be a contract with the interface {IBeacon}. - If `data` is empty, `msg.value` must be zero." + } + }, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1116:2310 contract BeaconProxy is Proxy {... */\n mstore(0x40, 0xa0)\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1773:1920 constructor(address beacon, bytes memory data) payable {... */\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_1\n swap2\n swap1\n tag_2\n jump\t// in\ntag_1:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1887 ERC1967Utils.upgradeBeaconToAndCall(beacon, data) */\n tag_5\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1874:1880 beacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1882:1886 data */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1873 ERC1967Utils.upgradeBeaconToAndCall */\n shl(0x20, tag_6)\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1887 ERC1967Utils.upgradeBeaconToAndCall(beacon, data) */\n 0x20\n shr\n jump\t// in\ntag_5:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1907:1913 beacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1897:1913 _beacon = beacon */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x80\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1773:1920 constructor(address beacon, bytes memory data) payable {... */\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1116:2310 contract BeaconProxy is Proxy {... */\n jump(tag_7)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5897:6230 function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {... */\ntag_6:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:6007 _setBeacon(newBeacon) */\n tag_9\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5997:6006 newBeacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:5996 _setBeacon */\n shl(0x20, tag_10)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:6007 _setBeacon(newBeacon) */\n 0x20\n shr\n jump\t// in\ntag_9:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6037:6046 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6022:6047 BeaconUpgraded(newBeacon) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6076:6077 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6066 data */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6073 data.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6077 data.length > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\n iszero\n tag_11\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6164 Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data) */\n tag_12\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6130:6139 newBeacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6122:6155 IBeacon(newBeacon).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6122:6157 IBeacon(newBeacon).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_14\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\ntag_14:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_15\n swap2\n swap1\n tag_16\n jump\t// in\ntag_15:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6159:6163 data */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6121 Address.functionDelegateCall */\n shl(0x20, tag_17)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6164 Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data) */\n 0x20\n shr\n jump\t// in\ntag_12:\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\n jump(tag_18)\ntag_11:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6213 _checkNonPayable() */\n tag_19\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6211 _checkNonPayable */\n shl(0x20, tag_20)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6213 _checkNonPayable() */\n 0x20\n shr\n jump\t// in\ntag_19:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\ntag_18:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5897:6230 function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {... */\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4935:5372 function _setBeacon(address newBeacon) private {... */\ntag_10:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5021:5022 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5005 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5017 newBeacon.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5022 newBeacon.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4992:5087 if (newBeacon.code.length == 0) {... */\n tag_22\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5066:5075 newBeacon */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5045:5076 ERC1967InvalidBeacon(newBeacon) */\n mload(0x40)\n 0x64ced0ec00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_23\n swap2\n swap1\n tag_24\n jump\t// in\ntag_23:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4992:5087 if (newBeacon.code.length == 0) {... */\ntag_22:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5145:5154 newBeacon */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5136 StorageSlot.getAddressSlot(BEACON_SLOT) */\n tag_25\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4601:4667 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50 */\n 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5124:5135 BEACON_SLOT */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5123 StorageSlot.getAddressSlot */\n shl(0x20, tag_26)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5136 StorageSlot.getAddressSlot(BEACON_SLOT) */\n 0x20\n shr\n jump\t// in\ntag_25:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5142 StorageSlot.getAddressSlot(BEACON_SLOT).value */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5154 StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5165:5193 address beaconImplementation */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5204:5213 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5196:5229 IBeacon(newBeacon).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5196:5231 IBeacon(newBeacon).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_28\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\ntag_28:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_29\n swap2\n swap1\n tag_16\n jump\t// in\ntag_29:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5165:5231 address beaconImplementation = IBeacon(newBeacon).implementation() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5281:5282 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5265 beaconImplementation */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5277 beaconImplementation.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5282 beaconImplementation.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5241:5366 if (beaconImplementation.code.length == 0) {... */\n tag_30\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5334:5354 beaconImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5305:5355 ERC1967InvalidImplementation(beaconImplementation) */\n mload(0x40)\n 0x4c9c8ce300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_31\n swap2\n swap1\n tag_24\n jump\t// in\ntag_31:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5241:5366 if (beaconImplementation.code.length == 0) {... */\ntag_30:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4982:5372 {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4935:5372 function _setBeacon(address newBeacon) private {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\ntag_17:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4189:4201 bytes memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4214:4226 bool success */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4228:4251 bytes memory returndata */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4261 target */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4274 target.delegatecall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4275:4279 data */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4280 target.delegatecall(data) */\n mload(0x40)\n tag_33\n swap2\n swap1\n tag_34\n jump\t// in\ntag_33:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n delegatecall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_37\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_36)\ntag_37:\n 0x60\n swap2\n pop\ntag_36:\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4213:4280 (bool success, bytes memory returndata) = target.delegatecall(data) */\n swap2\n pop\n swap2\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n tag_38\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4324:4330 target */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4332:4339 success */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4341:4351 returndata */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4323 verifyCallResultFromTarget */\n shl(0x20, tag_39)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n 0x20\n shr\n jump\t// in\ntag_38:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4290:4352 return verifyCallResultFromTarget(target, success, returndata) */\n swap3\n pop\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6419:6541 function _checkNonPayable() private {... */\ntag_20:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6481:6482 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6469:6478 msg.value */\n callvalue\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6469:6482 msg.value > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6465:6535 if (msg.value > 0) {... */\n iszero\n tag_41\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6505:6524 ERC1967NonPayable() */\n mload(0x40)\n 0xb398979f00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6465:6535 if (msg.value > 0) {... */\ntag_41:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6419:6541 function _checkNonPayable() private {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1685:1875 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\ntag_26:\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1746:1767 AddressSlot storage r */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1855:1859 slot */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1845:1859 r.slot := slot */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1685:1875 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\ntag_39:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4769:4781 bytes memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4798:4805 success */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n tag_44\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n tag_45\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4829:4839 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4828 _revert */\n shl(0x20, tag_46)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n 0x20\n shr\n jump\t// in\ntag_45:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n jump(tag_47)\ntag_44:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5066:5067 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5055 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5062 returndata.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5067 returndata.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\n dup1\n iszero\n tag_48\n jumpi\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5093:5094 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5077 target */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5089 target.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5094 target.code.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\ntag_48:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\n iszero\n tag_49\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5138:5144 target */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5121:5145 AddressEmptyCode(target) */\n mload(0x40)\n 0x9996b31500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_50\n swap2\n swap1\n tag_24\n jump\t// in\ntag_50:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\ntag_49:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5180:5190 returndata */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5173:5190 return returndata */\n swap1\n pop\n jump(tag_43)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\ntag_47:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\ntag_43:\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5743:6259 function _revert(bytes memory returndata) private pure {... */\ntag_46:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5894:5895 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5884 returndata */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5891 returndata.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5895 returndata.length > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\n iszero\n tag_52\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6102:6112 returndata */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6096:6113 mload(returndata) */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6158:6173 returndata_size */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6145:6155 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6141:6143 32 */\n 0x20\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6137:6156 add(32, returndata) */\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6130:6174 revert(add(32, returndata), returndata_size) */\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\ntag_52:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6225:6242 FailedInnerCall() */\n mload(0x40)\n 0x1425ea4200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"#utility.yul\":7:82 */\ntag_54:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_55:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\ntag_56:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:460 */\ntag_57:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\ntag_58:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_81\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_57\n jump\t// in\ntag_81:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\ntag_59:\n /* \"#utility.yul\":641:665 */\n tag_83\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_58\n jump\t// in\ntag_83:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_84\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\ntag_84:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:839 */\ntag_60:\n /* \"#utility.yul\":753:758 */\n 0x00\n /* \"#utility.yul\":784:790 */\n dup2\n /* \"#utility.yul\":778:791 */\n mload\n /* \"#utility.yul\":769:791 */\n swap1\n pop\n /* \"#utility.yul\":800:833 */\n tag_86\n /* \"#utility.yul\":827:832 */\n dup2\n /* \"#utility.yul\":800:833 */\n tag_59\n jump\t// in\ntag_86:\n /* \"#utility.yul\":696:839 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":845:962 */\ntag_61:\n /* \"#utility.yul\":954:955 */\n 0x00\n /* \"#utility.yul\":951:952 */\n dup1\n /* \"#utility.yul\":944:956 */\n revert\n /* \"#utility.yul\":968:1085 */\ntag_62:\n /* \"#utility.yul\":1077:1078 */\n 0x00\n /* \"#utility.yul\":1074:1075 */\n dup1\n /* \"#utility.yul\":1067:1079 */\n revert\n /* \"#utility.yul\":1091:1193 */\ntag_63:\n /* \"#utility.yul\":1132:1138 */\n 0x00\n /* \"#utility.yul\":1183:1185 */\n 0x1f\n /* \"#utility.yul\":1179:1186 */\n not\n /* \"#utility.yul\":1174:1176 */\n 0x1f\n /* \"#utility.yul\":1167:1172 */\n dup4\n /* \"#utility.yul\":1163:1177 */\n add\n /* \"#utility.yul\":1159:1187 */\n and\n /* \"#utility.yul\":1149:1187 */\n swap1\n pop\n /* \"#utility.yul\":1091:1193 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1199:1379 */\ntag_64:\n /* \"#utility.yul\":1247:1324 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1244:1245 */\n 0x00\n /* \"#utility.yul\":1237:1325 */\n mstore\n /* \"#utility.yul\":1344:1348 */\n 0x41\n /* \"#utility.yul\":1341:1342 */\n 0x04\n /* \"#utility.yul\":1334:1349 */\n mstore\n /* \"#utility.yul\":1368:1372 */\n 0x24\n /* \"#utility.yul\":1365:1366 */\n 0x00\n /* \"#utility.yul\":1358:1373 */\n revert\n /* \"#utility.yul\":1385:1666 */\ntag_65:\n /* \"#utility.yul\":1468:1495 */\n tag_92\n /* \"#utility.yul\":1490:1494 */\n dup3\n /* \"#utility.yul\":1468:1495 */\n tag_63\n jump\t// in\ntag_92:\n /* \"#utility.yul\":1460:1466 */\n dup2\n /* \"#utility.yul\":1456:1496 */\n add\n /* \"#utility.yul\":1598:1604 */\n dup2\n /* \"#utility.yul\":1586:1596 */\n dup2\n /* \"#utility.yul\":1583:1605 */\n lt\n /* \"#utility.yul\":1562:1580 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1550:1560 */\n dup3\n /* \"#utility.yul\":1547:1581 */\n gt\n /* \"#utility.yul\":1544:1606 */\n or\n /* \"#utility.yul\":1541:1629 */\n iszero\n tag_93\n jumpi\n /* \"#utility.yul\":1609:1627 */\n tag_94\n tag_64\n jump\t// in\ntag_94:\n /* \"#utility.yul\":1541:1629 */\ntag_93:\n /* \"#utility.yul\":1649:1659 */\n dup1\n /* \"#utility.yul\":1645:1647 */\n 0x40\n /* \"#utility.yul\":1638:1660 */\n mstore\n /* \"#utility.yul\":1428:1666 */\n pop\n /* \"#utility.yul\":1385:1666 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1672:1801 */\ntag_66:\n /* \"#utility.yul\":1706:1712 */\n 0x00\n /* \"#utility.yul\":1733:1753 */\n tag_96\n tag_54\n jump\t// in\ntag_96:\n /* \"#utility.yul\":1723:1753 */\n swap1\n pop\n /* \"#utility.yul\":1762:1795 */\n tag_97\n /* \"#utility.yul\":1790:1794 */\n dup3\n /* \"#utility.yul\":1782:1788 */\n dup3\n /* \"#utility.yul\":1762:1795 */\n tag_65\n jump\t// in\ntag_97:\n /* \"#utility.yul\":1672:1801 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1807:2114 */\ntag_67:\n /* \"#utility.yul\":1868:1872 */\n 0x00\n /* \"#utility.yul\":1958:1976 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1950:1956 */\n dup3\n /* \"#utility.yul\":1947:1977 */\n gt\n /* \"#utility.yul\":1944:2000 */\n iszero\n tag_99\n jumpi\n /* \"#utility.yul\":1980:1998 */\n tag_100\n tag_64\n jump\t// in\ntag_100:\n /* \"#utility.yul\":1944:2000 */\ntag_99:\n /* \"#utility.yul\":2018:2047 */\n tag_101\n /* \"#utility.yul\":2040:2046 */\n dup3\n /* \"#utility.yul\":2018:2047 */\n tag_63\n jump\t// in\ntag_101:\n /* \"#utility.yul\":2010:2047 */\n swap1\n pop\n /* \"#utility.yul\":2102:2106 */\n 0x20\n /* \"#utility.yul\":2096:2100 */\n dup2\n /* \"#utility.yul\":2092:2107 */\n add\n /* \"#utility.yul\":2084:2107 */\n swap1\n pop\n /* \"#utility.yul\":1807:2114 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2120:2366 */\ntag_68:\n /* \"#utility.yul\":2201:2202 */\n 0x00\n /* \"#utility.yul\":2211:2324 */\ntag_103:\n /* \"#utility.yul\":2225:2231 */\n dup4\n /* \"#utility.yul\":2222:2223 */\n dup2\n /* \"#utility.yul\":2219:2232 */\n lt\n /* \"#utility.yul\":2211:2324 */\n iszero\n tag_105\n jumpi\n /* \"#utility.yul\":2310:2311 */\n dup1\n /* \"#utility.yul\":2305:2308 */\n dup3\n /* \"#utility.yul\":2301:2312 */\n add\n /* \"#utility.yul\":2295:2313 */\n mload\n /* \"#utility.yul\":2291:2292 */\n dup2\n /* \"#utility.yul\":2286:2289 */\n dup5\n /* \"#utility.yul\":2282:2293 */\n add\n /* \"#utility.yul\":2275:2314 */\n mstore\n /* \"#utility.yul\":2247:2249 */\n 0x20\n /* \"#utility.yul\":2244:2245 */\n dup2\n /* \"#utility.yul\":2240:2250 */\n add\n /* \"#utility.yul\":2235:2250 */\n swap1\n pop\n /* \"#utility.yul\":2211:2324 */\n jump(tag_103)\ntag_105:\n /* \"#utility.yul\":2358:2359 */\n 0x00\n /* \"#utility.yul\":2349:2355 */\n dup5\n /* \"#utility.yul\":2344:2347 */\n dup5\n /* \"#utility.yul\":2340:2356 */\n add\n /* \"#utility.yul\":2333:2360 */\n mstore\n /* \"#utility.yul\":2182:2366 */\n pop\n /* \"#utility.yul\":2120:2366 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2372:2804 */\ntag_69:\n /* \"#utility.yul\":2460:2465 */\n 0x00\n /* \"#utility.yul\":2485:2550 */\n tag_107\n /* \"#utility.yul\":2501:2549 */\n tag_108\n /* \"#utility.yul\":2542:2548 */\n dup5\n /* \"#utility.yul\":2501:2549 */\n tag_67\n jump\t// in\ntag_108:\n /* \"#utility.yul\":2485:2550 */\n tag_66\n jump\t// in\ntag_107:\n /* \"#utility.yul\":2476:2550 */\n swap1\n pop\n /* \"#utility.yul\":2573:2579 */\n dup3\n /* \"#utility.yul\":2566:2571 */\n dup2\n /* \"#utility.yul\":2559:2580 */\n mstore\n /* \"#utility.yul\":2611:2615 */\n 0x20\n /* \"#utility.yul\":2604:2609 */\n dup2\n /* \"#utility.yul\":2600:2616 */\n add\n /* \"#utility.yul\":2649:2652 */\n dup5\n /* \"#utility.yul\":2640:2646 */\n dup5\n /* \"#utility.yul\":2635:2638 */\n dup5\n /* \"#utility.yul\":2631:2647 */\n add\n /* \"#utility.yul\":2628:2653 */\n gt\n /* \"#utility.yul\":2625:2737 */\n iszero\n tag_109\n jumpi\n /* \"#utility.yul\":2656:2735 */\n tag_110\n tag_62\n jump\t// in\ntag_110:\n /* \"#utility.yul\":2625:2737 */\ntag_109:\n /* \"#utility.yul\":2746:2798 */\n tag_111\n /* \"#utility.yul\":2791:2797 */\n dup5\n /* \"#utility.yul\":2786:2789 */\n dup3\n /* \"#utility.yul\":2781:2784 */\n dup6\n /* \"#utility.yul\":2746:2798 */\n tag_68\n jump\t// in\ntag_111:\n /* \"#utility.yul\":2466:2804 */\n pop\n /* \"#utility.yul\":2372:2804 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2823:3176 */\ntag_70:\n /* \"#utility.yul\":2889:2894 */\n 0x00\n /* \"#utility.yul\":2938:2941 */\n dup3\n /* \"#utility.yul\":2931:2935 */\n 0x1f\n /* \"#utility.yul\":2923:2929 */\n dup4\n /* \"#utility.yul\":2919:2936 */\n add\n /* \"#utility.yul\":2915:2942 */\n slt\n /* \"#utility.yul\":2905:3027 */\n tag_113\n jumpi\n /* \"#utility.yul\":2946:3025 */\n tag_114\n tag_61\n jump\t// in\ntag_114:\n /* \"#utility.yul\":2905:3027 */\ntag_113:\n /* \"#utility.yul\":3056:3062 */\n dup2\n /* \"#utility.yul\":3050:3063 */\n mload\n /* \"#utility.yul\":3081:3170 */\n tag_115\n /* \"#utility.yul\":3166:3169 */\n dup5\n /* \"#utility.yul\":3158:3164 */\n dup3\n /* \"#utility.yul\":3151:3155 */\n 0x20\n /* \"#utility.yul\":3143:3149 */\n dup7\n /* \"#utility.yul\":3139:3156 */\n add\n /* \"#utility.yul\":3081:3170 */\n tag_69\n jump\t// in\ntag_115:\n /* \"#utility.yul\":3072:3170 */\n swap2\n pop\n /* \"#utility.yul\":2895:3176 */\n pop\n /* \"#utility.yul\":2823:3176 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3182:3860 */\ntag_2:\n /* \"#utility.yul\":3270:3276 */\n 0x00\n /* \"#utility.yul\":3278:3284 */\n dup1\n /* \"#utility.yul\":3327:3329 */\n 0x40\n /* \"#utility.yul\":3315:3324 */\n dup4\n /* \"#utility.yul\":3306:3313 */\n dup6\n /* \"#utility.yul\":3302:3325 */\n sub\n /* \"#utility.yul\":3298:3330 */\n slt\n /* \"#utility.yul\":3295:3414 */\n iszero\n tag_117\n jumpi\n /* \"#utility.yul\":3333:3412 */\n tag_118\n tag_55\n jump\t// in\ntag_118:\n /* \"#utility.yul\":3295:3414 */\ntag_117:\n /* \"#utility.yul\":3453:3454 */\n 0x00\n /* \"#utility.yul\":3478:3542 */\n tag_119\n /* \"#utility.yul\":3534:3541 */\n dup6\n /* \"#utility.yul\":3525:3531 */\n dup3\n /* \"#utility.yul\":3514:3523 */\n dup7\n /* \"#utility.yul\":3510:3532 */\n add\n /* \"#utility.yul\":3478:3542 */\n tag_60\n jump\t// in\ntag_119:\n /* \"#utility.yul\":3468:3542 */\n swap3\n pop\n /* \"#utility.yul\":3424:3552 */\n pop\n /* \"#utility.yul\":3612:3614 */\n 0x20\n /* \"#utility.yul\":3601:3610 */\n dup4\n /* \"#utility.yul\":3597:3615 */\n add\n /* \"#utility.yul\":3591:3616 */\n mload\n /* \"#utility.yul\":3643:3661 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3635:3641 */\n dup2\n /* \"#utility.yul\":3632:3662 */\n gt\n /* \"#utility.yul\":3629:3746 */\n iszero\n tag_120\n jumpi\n /* \"#utility.yul\":3665:3744 */\n tag_121\n tag_56\n jump\t// in\ntag_121:\n /* \"#utility.yul\":3629:3746 */\ntag_120:\n /* \"#utility.yul\":3770:3843 */\n tag_122\n /* \"#utility.yul\":3835:3842 */\n dup6\n /* \"#utility.yul\":3826:3832 */\n dup3\n /* \"#utility.yul\":3815:3824 */\n dup7\n /* \"#utility.yul\":3811:3833 */\n add\n /* \"#utility.yul\":3770:3843 */\n tag_70\n jump\t// in\ntag_122:\n /* \"#utility.yul\":3760:3843 */\n swap2\n pop\n /* \"#utility.yul\":3562:3853 */\n pop\n /* \"#utility.yul\":3182:3860 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3866:4217 */\ntag_16:\n /* \"#utility.yul\":3936:3942 */\n 0x00\n /* \"#utility.yul\":3985:3987 */\n 0x20\n /* \"#utility.yul\":3973:3982 */\n dup3\n /* \"#utility.yul\":3964:3971 */\n dup5\n /* \"#utility.yul\":3960:3983 */\n sub\n /* \"#utility.yul\":3956:3988 */\n slt\n /* \"#utility.yul\":3953:4072 */\n iszero\n tag_124\n jumpi\n /* \"#utility.yul\":3991:4070 */\n tag_125\n tag_55\n jump\t// in\ntag_125:\n /* \"#utility.yul\":3953:4072 */\ntag_124:\n /* \"#utility.yul\":4111:4112 */\n 0x00\n /* \"#utility.yul\":4136:4200 */\n tag_126\n /* \"#utility.yul\":4192:4199 */\n dup5\n /* \"#utility.yul\":4183:4189 */\n dup3\n /* \"#utility.yul\":4172:4181 */\n dup6\n /* \"#utility.yul\":4168:4190 */\n add\n /* \"#utility.yul\":4136:4200 */\n tag_60\n jump\t// in\ntag_126:\n /* \"#utility.yul\":4126:4200 */\n swap2\n pop\n /* \"#utility.yul\":4082:4210 */\n pop\n /* \"#utility.yul\":3866:4217 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4223:4341 */\ntag_71:\n /* \"#utility.yul\":4310:4334 */\n tag_128\n /* \"#utility.yul\":4328:4333 */\n dup2\n /* \"#utility.yul\":4310:4334 */\n tag_58\n jump\t// in\ntag_128:\n /* \"#utility.yul\":4305:4308 */\n dup3\n /* \"#utility.yul\":4298:4335 */\n mstore\n /* \"#utility.yul\":4223:4341 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4347:4569 */\ntag_24:\n /* \"#utility.yul\":4440:4444 */\n 0x00\n /* \"#utility.yul\":4478:4480 */\n 0x20\n /* \"#utility.yul\":4467:4476 */\n dup3\n /* \"#utility.yul\":4463:4481 */\n add\n /* \"#utility.yul\":4455:4481 */\n swap1\n pop\n /* \"#utility.yul\":4491:4562 */\n tag_130\n /* \"#utility.yul\":4559:4560 */\n 0x00\n /* \"#utility.yul\":4548:4557 */\n dup4\n /* \"#utility.yul\":4544:4561 */\n add\n /* \"#utility.yul\":4535:4541 */\n dup5\n /* \"#utility.yul\":4491:4562 */\n tag_71\n jump\t// in\ntag_130:\n /* \"#utility.yul\":4347:4569 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4575:4673 */\ntag_72:\n /* \"#utility.yul\":4626:4632 */\n 0x00\n /* \"#utility.yul\":4660:4665 */\n dup2\n /* \"#utility.yul\":4654:4666 */\n mload\n /* \"#utility.yul\":4644:4666 */\n swap1\n pop\n /* \"#utility.yul\":4575:4673 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4679:4826 */\ntag_73:\n /* \"#utility.yul\":4780:4791 */\n 0x00\n /* \"#utility.yul\":4817:4820 */\n dup2\n /* \"#utility.yul\":4802:4820 */\n swap1\n pop\n /* \"#utility.yul\":4679:4826 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4832:5218 */\ntag_74:\n /* \"#utility.yul\":4936:4939 */\n 0x00\n /* \"#utility.yul\":4964:5002 */\n tag_134\n /* \"#utility.yul\":4996:5001 */\n dup3\n /* \"#utility.yul\":4964:5002 */\n tag_72\n jump\t// in\ntag_134:\n /* \"#utility.yul\":5018:5106 */\n tag_135\n /* \"#utility.yul\":5099:5105 */\n dup2\n /* \"#utility.yul\":5094:5097 */\n dup6\n /* \"#utility.yul\":5018:5106 */\n tag_73\n jump\t// in\ntag_135:\n /* \"#utility.yul\":5011:5106 */\n swap4\n pop\n /* \"#utility.yul\":5115:5180 */\n tag_136\n /* \"#utility.yul\":5173:5179 */\n dup2\n /* \"#utility.yul\":5168:5171 */\n dup6\n /* \"#utility.yul\":5161:5165 */\n 0x20\n /* \"#utility.yul\":5154:5159 */\n dup7\n /* \"#utility.yul\":5150:5166 */\n add\n /* \"#utility.yul\":5115:5180 */\n tag_68\n jump\t// in\ntag_136:\n /* \"#utility.yul\":5205:5211 */\n dup1\n /* \"#utility.yul\":5200:5203 */\n dup5\n /* \"#utility.yul\":5196:5212 */\n add\n /* \"#utility.yul\":5189:5212 */\n swap2\n pop\n /* \"#utility.yul\":4940:5218 */\n pop\n /* \"#utility.yul\":4832:5218 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5224:5495 */\ntag_34:\n /* \"#utility.yul\":5354:5357 */\n 0x00\n /* \"#utility.yul\":5376:5469 */\n tag_138\n /* \"#utility.yul\":5465:5468 */\n dup3\n /* \"#utility.yul\":5456:5462 */\n dup5\n /* \"#utility.yul\":5376:5469 */\n tag_74\n jump\t// in\ntag_138:\n /* \"#utility.yul\":5369:5469 */\n swap2\n pop\n /* \"#utility.yul\":5486:5489 */\n dup2\n /* \"#utility.yul\":5479:5489 */\n swap1\n pop\n /* \"#utility.yul\":5224:5495 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1116:2310 contract BeaconProxy is Proxy {... */\ntag_7:\n mload(0x80)\n codecopy(0x00, dataOffset(sub_0), dataSize(sub_0))\n 0x00\n assignImmutable(\"0x6c359167374f49fb5c7d4806c3799bb86fc04d6dd416c2ad9d7b00d01c9c2e24\")\n return(0x00, dataSize(sub_0))\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1116:2310 contract BeaconProxy is Proxy {... */\n mstore(0x40, 0x80)\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n tag_5\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2658 _fallback */\n tag_6\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n jump\t// in\n tag_5:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1116:2310 contract BeaconProxy is Proxy {... */\n stop\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n tag_6:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n tag_8\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n tag_9\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2396 _implementation */\n tag_10\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n jump\t// in\n tag_9:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2380 _delegate */\n tag_11\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n jump\t// in\n tag_8:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2023:2161 function _implementation() internal view virtual override returns (address) {... */\n tag_10:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2090:2097 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2136 _getBeacon() */\n tag_13\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2134 _getBeacon */\n tag_14\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2136 _getBeacon() */\n jump\t// in\n tag_13:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2116:2152 IBeacon(_getBeacon()).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2116:2154 IBeacon(_getBeacon()).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_16\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_16:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_17\n swap2\n swap1\n tag_18\n jump\t// in\n tag_17:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2109:2154 return IBeacon(_getBeacon()).implementation() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2023:2161 function _implementation() internal view virtual override returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":949:1844 function _delegate(address implementation) internal virtual {... */\n tag_11:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1287:1301 calldatasize() */\n calldatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1284:1285 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1281:1282 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1268:1302 calldatacopy(0, 0, calldatasize()) */\n calldatacopy\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1501:1502 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1498:1499 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1482:1496 calldatasize() */\n calldatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1479:1480 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1463:1477 implementation */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1456:1461 gas() */\n gas\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1443:1503 delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) */\n delegatecall\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1577:1593 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1574:1575 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1571:1572 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1556:1594 returndatacopy(0, 0, returndatasize()) */\n returndatacopy\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1615:1621 result */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1687:1688 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n dup2\n eq\n tag_21\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1797:1813 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1794:1795 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1787:1814 return(0, returndatasize()) */\n return\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n tag_21:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1717:1733 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1714:1715 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1707:1734 revert(0, returndatasize()) */\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2215:2308 function _getBeacon() internal view virtual returns (address) {... */\n tag_14:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2268:2275 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2294:2301 _beacon */\n immutable(\"0x6c359167374f49fb5c7d4806c3799bb86fc04d6dd416c2ad9d7b00d01c9c2e24\")\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2287:2301 return _beacon */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2215:2308 function _getBeacon() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_24:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:460 */\n tag_26:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\n tag_27:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_36\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_26\n jump\t// in\n tag_36:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\n tag_28:\n /* \"#utility.yul\":641:665 */\n tag_38\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_27\n jump\t// in\n tag_38:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_39\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\n tag_39:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:839 */\n tag_29:\n /* \"#utility.yul\":753:758 */\n 0x00\n /* \"#utility.yul\":784:790 */\n dup2\n /* \"#utility.yul\":778:791 */\n mload\n /* \"#utility.yul\":769:791 */\n swap1\n pop\n /* \"#utility.yul\":800:833 */\n tag_41\n /* \"#utility.yul\":827:832 */\n dup2\n /* \"#utility.yul\":800:833 */\n tag_28\n jump\t// in\n tag_41:\n /* \"#utility.yul\":696:839 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":845:1196 */\n tag_18:\n /* \"#utility.yul\":915:921 */\n 0x00\n /* \"#utility.yul\":964:966 */\n 0x20\n /* \"#utility.yul\":952:961 */\n dup3\n /* \"#utility.yul\":943:950 */\n dup5\n /* \"#utility.yul\":939:962 */\n sub\n /* \"#utility.yul\":935:967 */\n slt\n /* \"#utility.yul\":932:1051 */\n iszero\n tag_43\n jumpi\n /* \"#utility.yul\":970:1049 */\n tag_44\n tag_24\n jump\t// in\n tag_44:\n /* \"#utility.yul\":932:1051 */\n tag_43:\n /* \"#utility.yul\":1090:1091 */\n 0x00\n /* \"#utility.yul\":1115:1179 */\n tag_45\n /* \"#utility.yul\":1171:1178 */\n dup5\n /* \"#utility.yul\":1162:1168 */\n dup3\n /* \"#utility.yul\":1151:1160 */\n dup6\n /* \"#utility.yul\":1147:1169 */\n add\n /* \"#utility.yul\":1115:1179 */\n tag_29\n jump\t// in\n tag_45:\n /* \"#utility.yul\":1105:1179 */\n swap2\n pop\n /* \"#utility.yul\":1061:1189 */\n pop\n /* \"#utility.yul\":845:1196 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220e6b94c1acd793d7c218feef09f5a20900e4b9f3db44ddcf106581f880b40de4364736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": { + "@_1637": { + "entryPoint": null, + "id": 1637, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkNonPayable_1567": { + "entryPoint": 897, + "id": 1567, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_2090": { + "entryPoint": 1113, + "id": 2090, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setBeacon_1515": { + "entryPoint": 352, + "id": 1515, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@functionDelegateCall_2010": { + "entryPoint": 763, + "id": 2010, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_2256": { + "entryPoint": 957, + "id": 2256, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@upgradeBeaconToAndCall_1553": { + "entryPoint": 112, + "id": 1553, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@verifyCallResultFromTarget_2050": { + "entryPoint": 966, + "id": 2050, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_bytes_memory_ptr_fromMemory": { + "entryPoint": 1520, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 1268, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes_memory_ptr_fromMemory": { + "entryPoint": 1585, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 1720, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": { + "entryPoint": 1630, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 1763, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 1823, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 1871, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 1778, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 1406, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": 1181, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_t_bytes_memory_ptr": { + "entryPoint": 1432, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_bytes_memory_ptr": { + "entryPoint": 1803, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 1813, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 1229, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 1198, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 1480, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "finalize_allocation": { + "entryPoint": 1357, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 1312, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { + "entryPoint": 1288, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": { + "entryPoint": 1292, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": 1194, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 1190, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 1296, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "validator_revert_t_address": { + "entryPoint": 1246, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:5498:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:40", + "type": "" + } + ], + "src": "334:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:40", + "type": "" + } + ], + "src": "466:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:40" + }, + "nodeType": "YulIf", + "src": "621:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:40", + "type": "" + } + ], + "src": "568:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "769:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:40" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:40", + "type": "" + } + ], + "src": "696:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "934:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "951:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "954:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "944:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "944:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "944:12:40" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "845:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1057:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1074:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1077:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1067:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1067:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1067:12:40" + } + ] + }, + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulFunctionDefinition", + "src": "968:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1139:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1149:38:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1167:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1174:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1163:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1163:14:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1183:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1179:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1179:7:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1159:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1159:28:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "1149:6:40" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1122:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "1132:6:40", + "type": "" + } + ], + "src": "1091:102:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1227:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1244:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1247:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1237:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1237:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1237:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1341:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1344:4:40", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1334:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1334:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1334:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1365:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1368:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1358:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1358:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1358:15:40" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "1199:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1428:238:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1438:58:40", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1460:6:40" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1490:4:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1468:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "1468:27:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1456:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1456:40:40" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1442:10:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1607:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1609:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "1609:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1609:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1550:10:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1562:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1547:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1547:34:40" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1586:10:40" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1598:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1583:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1583:22:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1544:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1544:62:40" + }, + "nodeType": "YulIf", + "src": "1541:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1645:2:40", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1649:10:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1638:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1638:22:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1638:22:40" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1414:6:40", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1422:4:40", + "type": "" + } + ], + "src": "1385:281:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1713:88:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1723:30:40", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1733:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "1733:20:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1723:6:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1782:6:40" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1790:4:40" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1762:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "1762:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1762:33:40" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1697:4:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1706:6:40", + "type": "" + } + ], + "src": "1672:129:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1873:241:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1978:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1980:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "1980:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1980:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1950:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1958:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1947:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1947:30:40" + }, + "nodeType": "YulIf", + "src": "1944:56:40" + }, + { + "nodeType": "YulAssignment", + "src": "2010:37:40", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2040:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2018:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "2018:29:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2010:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2084:23:40", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2096:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2102:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2092:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2092:15:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2084:4:40" + } + ] + } + ] + }, + "name": "array_allocation_size_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1857:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1868:4:40", + "type": "" + } + ], + "src": "1807:307:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2182:184:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2192:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2201:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "2196:1:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2261:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2286:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2291:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2282:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2282:11:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2305:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2310:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2301:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2301:11:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2295:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "2295:18:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2275:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2275:39:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2275:39:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2222:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2225:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2219:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2219:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2233:19:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2235:15:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2244:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2247:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2240:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2240:10:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2235:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2215:3:40", + "statements": [] + }, + "src": "2211:113:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2344:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2349:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2340:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2340:16:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2358:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2333:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2333:27:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2333:27:40" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2164:3:40", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2169:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2174:6:40", + "type": "" + } + ], + "src": "2120:246:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2466:338:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2476:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2542:6:40" + } + ], + "functionName": { + "name": "array_allocation_size_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2501:40:40" + }, + "nodeType": "YulFunctionCall", + "src": "2501:48:40" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2485:15:40" + }, + "nodeType": "YulFunctionCall", + "src": "2485:65:40" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2476:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2566:5:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2573:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2559:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2559:21:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2559:21:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2589:27:40", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2604:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2611:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2600:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2600:16:40" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2593:3:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2654:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulIdentifier", + "src": "2656:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "2656:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2656:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2635:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2640:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2631:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2631:16:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2649:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2628:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2628:25:40" + }, + "nodeType": "YulIf", + "src": "2625:112:40" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2781:3:40" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2786:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2791:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "2746:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "2746:52:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2746:52:40" + } + ] + }, + "name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2439:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2444:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2452:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2460:5:40", + "type": "" + } + ], + "src": "2372:432:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2895:281:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2944:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "2946:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "2946:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2946:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2923:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2931:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2919:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2919:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2938:3:40" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2915:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2915:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2908:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2908:35:40" + }, + "nodeType": "YulIf", + "src": "2905:122:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3036:27:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3056:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3050:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "3050:13:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3040:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3072:98:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3143:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3151:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3139:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3139:17:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3158:6:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3166:3:40" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3081:57:40" + }, + "nodeType": "YulFunctionCall", + "src": "3081:89:40" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3072:5:40" + } + ] + } + ] + }, + "name": "abi_decode_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2873:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2881:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2889:5:40", + "type": "" + } + ], + "src": "2823:353:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3285:575:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3331:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3333:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3333:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3333:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3306:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3315:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3302:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3302:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3327:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3298:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3298:32:40" + }, + "nodeType": "YulIf", + "src": "3295:119:40" + }, + { + "nodeType": "YulBlock", + "src": "3424:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3439:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3453:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3443:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3468:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3514:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3525:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3510:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3510:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3534:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "3478:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "3478:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3468:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3562:291:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3577:39:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3601:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3612:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3597:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3597:18:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3591:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "3591:25:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3581:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3663:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "3665:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3665:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3665:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3635:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3643:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3632:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "3632:30:40" + }, + "nodeType": "YulIf", + "src": "3629:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "3760:83:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3815:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3826:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3811:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3811:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3835:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3770:40:40" + }, + "nodeType": "YulFunctionCall", + "src": "3770:73:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3760:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3247:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3258:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3270:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3278:6:40", + "type": "" + } + ], + "src": "3182:678:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3943:274:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3989:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3991:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3991:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3991:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3964:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3973:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3960:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3960:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3985:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3956:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3956:32:40" + }, + "nodeType": "YulIf", + "src": "3953:119:40" + }, + { + "nodeType": "YulBlock", + "src": "4082:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4097:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4111:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4101:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4126:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4172:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4183:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4168:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4168:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4192:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "4136:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "4136:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4126:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3913:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3924:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3936:6:40", + "type": "" + } + ], + "src": "3866:351:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4288:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4305:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4328:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "4310:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "4310:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4298:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "4298:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4298:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4276:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4283:3:40", + "type": "" + } + ], + "src": "4223:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4445:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4455:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4467:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4478:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4463:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4463:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4455:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4535:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4548:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4559:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4544:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4544:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "4491:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "4491:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4491:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4417:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4429:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4440:4:40", + "type": "" + } + ], + "src": "4347:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4633:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4644:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4660:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4654:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "4654:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4644:6:40" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4616:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4626:6:40", + "type": "" + } + ], + "src": "4575:98:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4792:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4802:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4817:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "4802:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4764:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4769:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "4780:11:40", + "type": "" + } + ], + "src": "4679:147:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4940:278:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4950:52:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4996:5:40" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "4964:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "4964:38:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4954:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5011:95:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5094:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5099:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "5018:75:40" + }, + "nodeType": "YulFunctionCall", + "src": "5018:88:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5011:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5154:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5161:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5150:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5150:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5168:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5173:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "5115:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "5115:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5115:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "5189:23:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5200:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5205:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5196:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5196:16:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5189:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4921:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4928:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4936:3:40", + "type": "" + } + ], + "src": "4832:386:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5358:137:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5369:100:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5456:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5465:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "5376:79:40" + }, + "nodeType": "YulFunctionCall", + "src": "5376:93:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5369:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5479:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5486:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5479:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5337:3:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5343:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5354:3:40", + "type": "" + } + ], + "src": "5224:271:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a060405260405161091b38038061091b8339818101604052810190610025919061065e565b610035828261007060201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050610765565b61007f8261016060201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a25f8151111561014d576101478273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013b91906106b8565b826102fb60201b60201c565b5061015c565b61015b61038160201b60201c565b5b5050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036101bb57806040517f64ced0ec0000000000000000000000000000000000000000000000000000000081526004016101b291906106f2565b60405180910390fd5b806101ed7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505f1b6103bd60201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610276573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029a91906106b8565b90505f8173ffffffffffffffffffffffffffffffffffffffff163b036102f757806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016102ee91906106f2565b60405180910390fd5b5050565b60605f808473ffffffffffffffffffffffffffffffffffffffff1684604051610324919061074f565b5f60405180830381855af49150503d805f811461035c576040519150601f19603f3d011682016040523d82523d5f602084013e610361565b606091505b50915091506103778583836103c660201b60201c565b9250505092915050565b5f3411156103bb576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f819050919050565b6060826103e1576103dc8261045960201b60201c565b610451565b5f825114801561040757505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561044957836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161044091906106f2565b60405180910390fd5b819050610452565b5b9392505050565b5f8151111561046b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104d7826104ae565b9050919050565b6104e7816104cd565b81146104f1575f80fd5b50565b5f81519050610502816104de565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61055682610510565b810181811067ffffffffffffffff8211171561057557610574610520565b5b80604052505050565b5f61058761049d565b9050610593828261054d565b919050565b5f67ffffffffffffffff8211156105b2576105b1610520565b5b6105bb82610510565b9050602081019050919050565b5f5b838110156105e55780820151818401526020810190506105ca565b5f8484015250505050565b5f6106026105fd84610598565b61057e565b90508281526020810184848401111561061e5761061d61050c565b5b6106298482856105c8565b509392505050565b5f82601f83011261064557610644610508565b5b81516106558482602086016105f0565b91505092915050565b5f8060408385031215610674576106736104a6565b5b5f610681858286016104f4565b925050602083015167ffffffffffffffff8111156106a2576106a16104aa565b5b6106ae85828601610631565b9150509250929050565b5f602082840312156106cd576106cc6104a6565b5b5f6106da848285016104f4565b91505092915050565b6106ec816104cd565b82525050565b5f6020820190506107055f8301846106e3565b92915050565b5f81519050919050565b5f81905092915050565b5f6107298261070b565b6107338185610715565b93506107438185602086016105c8565b80840191505092915050565b5f61075a828461071f565b915081905092915050565b60805161019f61077c5f395f60bc015261019f5ff3fe608060405261000c61000e565b005b61001e610019610020565b61009a565b565b5f6100296100b9565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610071573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610095919061013e565b905090565b365f80375f80365f845af43d5f803e805f81146100b5573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010d826100e4565b9050919050565b61011d81610103565b8114610127575f80fd5b50565b5f8151905061013881610114565b92915050565b5f60208284031215610153576101526100e0565b5b5f6101608482850161012a565b9150509291505056fea2646970667358221220e6b94c1acd793d7c218feef09f5a20900e4b9f3db44ddcf106581f880b40de4364736f6c63430008140033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x91B CODESIZE SUB DUP1 PUSH2 0x91B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x25 SWAP2 SWAP1 PUSH2 0x65E JUMP JUMPDEST PUSH2 0x35 DUP3 DUP3 PUSH2 0x70 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP PUSH2 0x765 JUMP JUMPDEST PUSH2 0x7F DUP3 PUSH2 0x160 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0x14D JUMPI PUSH2 0x147 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13B SWAP2 SWAP1 PUSH2 0x6B8 JUMP JUMPDEST DUP3 PUSH2 0x2FB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0x15C JUMP JUMPDEST PUSH2 0x15B PUSH2 0x381 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x1BB JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x64CED0EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B2 SWAP2 SWAP1 PUSH2 0x6F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1ED PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH0 SHL PUSH2 0x3BD PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29A SWAP2 SWAP1 PUSH2 0x6B8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x2F7 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x6F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x324 SWAP2 SWAP1 PUSH2 0x74F JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x35C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x361 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x377 DUP6 DUP4 DUP4 PUSH2 0x3C6 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH2 0x3BB JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3E1 JUMPI PUSH2 0x3DC DUP3 PUSH2 0x459 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x451 JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH2 0x407 JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH2 0x449 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x440 SWAP2 SWAP1 PUSH2 0x6F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH2 0x452 JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0x46B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4D7 DUP3 PUSH2 0x4AE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E7 DUP2 PUSH2 0x4CD JUMP JUMPDEST DUP2 EQ PUSH2 0x4F1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x502 DUP2 PUSH2 0x4DE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x556 DUP3 PUSH2 0x510 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x575 JUMPI PUSH2 0x574 PUSH2 0x520 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x587 PUSH2 0x49D JUMP JUMPDEST SWAP1 POP PUSH2 0x593 DUP3 DUP3 PUSH2 0x54D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5B2 JUMPI PUSH2 0x5B1 PUSH2 0x520 JUMP JUMPDEST JUMPDEST PUSH2 0x5BB DUP3 PUSH2 0x510 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5E5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5CA JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x602 PUSH2 0x5FD DUP5 PUSH2 0x598 JUMP JUMPDEST PUSH2 0x57E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x61E JUMPI PUSH2 0x61D PUSH2 0x50C JUMP JUMPDEST JUMPDEST PUSH2 0x629 DUP5 DUP3 DUP6 PUSH2 0x5C8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x645 JUMPI PUSH2 0x644 PUSH2 0x508 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x655 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x5F0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x674 JUMPI PUSH2 0x673 PUSH2 0x4A6 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x681 DUP6 DUP3 DUP7 ADD PUSH2 0x4F4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6A2 JUMPI PUSH2 0x6A1 PUSH2 0x4AA JUMP JUMPDEST JUMPDEST PUSH2 0x6AE DUP6 DUP3 DUP7 ADD PUSH2 0x631 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CC PUSH2 0x4A6 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x6DA DUP5 DUP3 DUP6 ADD PUSH2 0x4F4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6EC DUP2 PUSH2 0x4CD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x705 PUSH0 DUP4 ADD DUP5 PUSH2 0x6E3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x729 DUP3 PUSH2 0x70B JUMP JUMPDEST PUSH2 0x733 DUP2 DUP6 PUSH2 0x715 JUMP JUMPDEST SWAP4 POP PUSH2 0x743 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5C8 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x75A DUP3 DUP5 PUSH2 0x71F JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x19F PUSH2 0x77C PUSH0 CODECOPY PUSH0 PUSH1 0xBC ADD MSTORE PUSH2 0x19F PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0xC PUSH2 0xE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E PUSH2 0x19 PUSH2 0x20 JUMP JUMPDEST PUSH2 0x9A JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x29 PUSH2 0xB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x71 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x95 SWAP2 SWAP1 PUSH2 0x13E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0xB5 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x10D DUP3 PUSH2 0xE4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x11D DUP2 PUSH2 0x103 JUMP JUMPDEST DUP2 EQ PUSH2 0x127 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x138 DUP2 PUSH2 0x114 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153 JUMPI PUSH2 0x152 PUSH2 0xE0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x160 DUP5 DUP3 DUP6 ADD PUSH2 0x12A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xB9 0x4C BYTE 0xCD PUSH26 0x3D7C218FEEF09F5A20900E4B9F3DB44DDCF106581F880B40DE43 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1116:1194:10:-:0;;;1773:147;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1838:49;1874:6;1882:4;1838:35;;;:49;;:::i;:::-;1907:6;1897:16;;;;;;;;;;1773:147;;1116:1194;;5897:333:8;5986:21;5997:9;5986:10;;;:21;;:::i;:::-;6037:9;6022:25;;;;;;;;;;;;6076:1;6062:4;:11;:15;6058:166;;;6093:71;6130:9;6122:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6159:4;6093:28;;;:71;;:::i;:::-;;6058:166;;;6195:18;:16;;;:18;;:::i;:::-;6058:166;5897:333;;:::o;4935:437::-;5021:1;4996:9;:21;;;:26;4992:95;;5066:9;5045:31;;;;;;;;;;;:::i;:::-;;;;;;;;4992:95;5145:9;5097:39;4601:66;5124:11;;5097:26;;;:39;;:::i;:::-;:45;;;:57;;;;;;;;;;;;;;;;;;5165:28;5204:9;5196:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5165:66;;5281:1;5245:20;:32;;;:37;5241:125;;5334:20;5305:50;;;;;;;;;;;:::i;:::-;;;;;;;;5241:125;4982:390;4935:437;:::o;4106:253:14:-;4189:12;4214;4228:23;4255:6;:19;;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;;;:55;;:::i;:::-;4290:62;;;;4106:253;;;;:::o;6419:122:8:-;6481:1;6469:9;:13;6465:70;;;6505:19;;;;;;;;;;;;;;6465:70;6419:122::o;1685:190:17:-;1746:21;1855:4;1845:14;;1685:190;;;:::o;4625:582:14:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;;;:19;;:::i;:::-;4793:408;;;5066:1;5045:10;:17;:22;:49;;;;;5093:1;5071:6;:18;;;:23;5045:49;5041:119;;;5138:6;5121:24;;;;;;;;;;;:::i;:::-;;;;;;;;5041:119;5180:10;5173:17;;;;4793:408;4625:582;;;;;;:::o;5743:516::-;5894:1;5874:10;:17;:21;5870:383;;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;7:75:40;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:117::-;954:1;951;944:12;968:117;1077:1;1074;1067:12;1091:102;1132:6;1183:2;1179:7;1174:2;1167:5;1163:14;1159:28;1149:38;;1091:102;;;:::o;1199:180::-;1247:77;1244:1;1237:88;1344:4;1341:1;1334:15;1368:4;1365:1;1358:15;1385:281;1468:27;1490:4;1468:27;:::i;:::-;1460:6;1456:40;1598:6;1586:10;1583:22;1562:18;1550:10;1547:34;1544:62;1541:88;;;1609:18;;:::i;:::-;1541:88;1649:10;1645:2;1638:22;1428:238;1385:281;;:::o;1672:129::-;1706:6;1733:20;;:::i;:::-;1723:30;;1762:33;1790:4;1782:6;1762:33;:::i;:::-;1672:129;;;:::o;1807:307::-;1868:4;1958:18;1950:6;1947:30;1944:56;;;1980:18;;:::i;:::-;1944:56;2018:29;2040:6;2018:29;:::i;:::-;2010:37;;2102:4;2096;2092:15;2084:23;;1807:307;;;:::o;2120:246::-;2201:1;2211:113;2225:6;2222:1;2219:13;2211:113;;;2310:1;2305:3;2301:11;2295:18;2291:1;2286:3;2282:11;2275:39;2247:2;2244:1;2240:10;2235:15;;2211:113;;;2358:1;2349:6;2344:3;2340:16;2333:27;2182:184;2120:246;;;:::o;2372:432::-;2460:5;2485:65;2501:48;2542:6;2501:48;:::i;:::-;2485:65;:::i;:::-;2476:74;;2573:6;2566:5;2559:21;2611:4;2604:5;2600:16;2649:3;2640:6;2635:3;2631:16;2628:25;2625:112;;;2656:79;;:::i;:::-;2625:112;2746:52;2791:6;2786:3;2781;2746:52;:::i;:::-;2466:338;2372:432;;;;;:::o;2823:353::-;2889:5;2938:3;2931:4;2923:6;2919:17;2915:27;2905:122;;2946:79;;:::i;:::-;2905:122;3056:6;3050:13;3081:89;3166:3;3158:6;3151:4;3143:6;3139:17;3081:89;:::i;:::-;3072:98;;2895:281;2823:353;;;;:::o;3182:678::-;3270:6;3278;3327:2;3315:9;3306:7;3302:23;3298:32;3295:119;;;3333:79;;:::i;:::-;3295:119;3453:1;3478:64;3534:7;3525:6;3514:9;3510:22;3478:64;:::i;:::-;3468:74;;3424:128;3612:2;3601:9;3597:18;3591:25;3643:18;3635:6;3632:30;3629:117;;;3665:79;;:::i;:::-;3629:117;3770:73;3835:7;3826:6;3815:9;3811:22;3770:73;:::i;:::-;3760:83;;3562:291;3182:678;;;;;:::o;3866:351::-;3936:6;3985:2;3973:9;3964:7;3960:23;3956:32;3953:119;;;3991:79;;:::i;:::-;3953:119;4111:1;4136:64;4192:7;4183:6;4172:9;4168:22;4136:64;:::i;:::-;4126:74;;4082:128;3866:351;;;;:::o;4223:118::-;4310:24;4328:5;4310:24;:::i;:::-;4305:3;4298:37;4223:118;;:::o;4347:222::-;4440:4;4478:2;4467:9;4463:18;4455:26;;4491:71;4559:1;4548:9;4544:17;4535:6;4491:71;:::i;:::-;4347:222;;;;:::o;4575:98::-;4626:6;4660:5;4654:12;4644:22;;4575:98;;;:::o;4679:147::-;4780:11;4817:3;4802:18;;4679:147;;;;:::o;4832:386::-;4936:3;4964:38;4996:5;4964:38;:::i;:::-;5018:88;5099:6;5094:3;5018:88;:::i;:::-;5011:95;;5115:65;5173:6;5168:3;5161:4;5154:5;5150:16;5115:65;:::i;:::-;5205:6;5200:3;5196:16;5189:23;;4940:278;4832:386;;;;:::o;5224:271::-;5354:3;5376:93;5465:3;5456:6;5376:93;:::i;:::-;5369:100;;5486:3;5479:10;;5224:271;;;;:::o;1116:1194:10:-;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_1603": { + "entryPoint": null, + "id": 1603, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_delegate_1579": { + "entryPoint": 154, + "id": 1579, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_fallback_1595": { + "entryPoint": 14, + "id": 1595, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getBeacon_1661": { + "entryPoint": 185, + "id": 1661, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_implementation_1652": { + "entryPoint": 32, + "id": 1652, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 298, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 318, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 259, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 228, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 224, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 276, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1199:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:40", + "type": "" + } + ], + "src": "334:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:40", + "type": "" + } + ], + "src": "466:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:40" + }, + "nodeType": "YulIf", + "src": "621:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:40", + "type": "" + } + ], + "src": "568:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "769:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:40" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:40", + "type": "" + } + ], + "src": "696:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "922:274:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "968:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "970:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "970:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "970:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "943:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "952:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "939:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "939:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "964:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "935:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "935:32:40" + }, + "nodeType": "YulIf", + "src": "932:119:40" + }, + { + "nodeType": "YulBlock", + "src": "1061:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1076:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1090:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1080:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1105:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1151:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1162:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1147:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1147:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1171:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1115:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "1115:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1105:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "892:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "903:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "915:6:40", + "type": "" + } + ], + "src": "845:351:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "1617": [ + { + "length": 32, + "start": 188 + } + ] + }, + "linkReferences": {}, + "object": "608060405261000c61000e565b005b61001e610019610020565b61009a565b565b5f6100296100b9565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610071573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610095919061013e565b905090565b365f80375f80365f845af43d5f803e805f81146100b5573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010d826100e4565b9050919050565b61011d81610103565b8114610127575f80fd5b50565b5f8151905061013881610114565b92915050565b5f60208284031215610153576101526100e0565b5b5f6101608482850161012a565b9150509291505056fea2646970667358221220e6b94c1acd793d7c218feef09f5a20900e4b9f3db44ddcf106581f880b40de4364736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0xC PUSH2 0xE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E PUSH2 0x19 PUSH2 0x20 JUMP JUMPDEST PUSH2 0x9A JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x29 PUSH2 0xB9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x71 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x95 SWAP2 SWAP1 PUSH2 0x13E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0xB5 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x10D DUP3 PUSH2 0xE4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x11D DUP2 PUSH2 0x103 JUMP JUMPDEST DUP2 EQ PUSH2 0x127 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x138 DUP2 PUSH2 0x114 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x153 JUMPI PUSH2 0x152 PUSH2 0xE0 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x160 DUP5 DUP3 DUP6 ADD PUSH2 0x12A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xB9 0x4C BYTE 0xCD PUSH26 0x3D7C218FEEF09F5A20900E4B9F3DB44DDCF106581F880B40DE43 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1116:1194:10:-:0;;;2649:11:9;:9;:11::i;:::-;1116:1194:10;2323:83:9;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;2023:138:10:-;2090:7;2124:12;:10;:12::i;:::-;2116:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2109:45;;2023:138;:::o;949:895:9:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1687:1;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;2215:93:10;2268:7;2294;2287:14;;2215:93;:::o;88:117:40:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;;:::i;:::-;932:119;1090:1;1115:64;1171:7;1162:6;1151:9;1147:22;1115:64;:::i;:::-;1105:74;;1061:128;845:351;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "83000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "": "infinite" + }, + "internal": { + "_getBeacon()": "infinite", + "_implementation()": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "A0" + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1116, + "end": 2310, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1773, + "end": 1920, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSHSIZE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "CODESIZE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "SUB", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP1", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSHSIZE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP4", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "CODECOPY", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "ADD", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1773, + "end": 1920, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "ADD", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH [tag]", + "source": 10, + "value": "1" + }, + { + "begin": 1773, + "end": 1920, + "name": "SWAP2", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH [tag]", + "source": 10, + "value": "2" + }, + { + "begin": 1773, + "end": 1920, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "tag", + "source": 10, + "value": "1" + }, + { + "begin": 1773, + "end": 1920, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "PUSH [tag]", + "source": 10, + "value": "5" + }, + { + "begin": 1874, + "end": 1880, + "name": "DUP3", + "source": 10 + }, + { + "begin": 1882, + "end": 1886, + "name": "DUP3", + "source": 10 + }, + { + "begin": 1838, + "end": 1873, + "name": "PUSH [tag]", + "source": 10, + "value": "6" + }, + { + "begin": 1838, + "end": 1873, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1838, + "end": 1873, + "name": "SHL", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1838, + "end": 1887, + "name": "SHR", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "tag", + "source": 10, + "value": "5" + }, + { + "begin": 1838, + "end": 1887, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 1907, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1897, + "end": 1913, + "name": "AND", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "80" + }, + { + "begin": 1897, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1897, + "end": 1913, + "name": "AND", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "POP", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "POP", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH [tag]", + "source": 10, + "value": "7" + }, + { + "begin": 1116, + "end": 2310, + "name": "JUMP", + "source": 10 + }, + { + "begin": 5897, + "end": 6230, + "name": "tag", + "source": 8, + "value": "6" + }, + { + "begin": 5897, + "end": 6230, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "PUSH [tag]", + "source": 8, + "value": "9" + }, + { + "begin": 5997, + "end": 6006, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5986, + "end": 5996, + "name": "PUSH [tag]", + "source": 8, + "value": "10" + }, + { + "begin": 5986, + "end": 5996, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5986, + "end": 5996, + "name": "SHL", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5986, + "end": 6007, + "name": "SHR", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "tag", + "source": 8, + "value": "9" + }, + { + "begin": 5986, + "end": 6007, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6037, + "end": 6046, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6022, + "end": 6047, + "name": "AND", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E" + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6022, + "end": 6047, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6022, + "end": 6047, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SUB", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "LOG2", + "source": 8 + }, + { + "begin": 6076, + "end": 6077, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6062, + "end": 6066, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6062, + "end": 6073, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6062, + "end": 6077, + "name": "GT", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "PUSH [tag]", + "source": 8, + "value": "11" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "PUSH [tag]", + "source": 8, + "value": "12" + }, + { + "begin": 6130, + "end": 6139, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6155, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6122, + "end": 6155, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6155, + "name": "PUSH", + "source": 8, + "value": "5C60DA1B" + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFF" + }, + { + "begin": 6122, + "end": 6157, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "E0" + }, + { + "begin": 6122, + "end": 6157, + "name": "SHL", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP4", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SUB", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP7", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "GAS", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "STATICCALL", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "14" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATACOPY", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6122, + "end": 6157, + "name": "REVERT", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "tag", + "source": 8, + "value": "14" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 6122, + "end": 6157, + "name": "NOT", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "15" + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "16" + }, + { + "begin": 6122, + "end": 6157, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "tag", + "source": 8, + "value": "15" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6159, + "end": 6163, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6093, + "end": 6121, + "name": "PUSH [tag]", + "source": 8, + "value": "17" + }, + { + "begin": 6093, + "end": 6121, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6093, + "end": 6121, + "name": "SHL", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6093, + "end": 6164, + "name": "SHR", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "tag", + "source": 8, + "value": "12" + }, + { + "begin": 6093, + "end": 6164, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "POP", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "PUSH [tag]", + "source": 8, + "value": "18" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMP", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "tag", + "source": 8, + "value": "11" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "PUSH [tag]", + "source": 8, + "value": "19" + }, + { + "begin": 6195, + "end": 6211, + "name": "PUSH [tag]", + "source": 8, + "value": "20" + }, + { + "begin": 6195, + "end": 6211, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6195, + "end": 6211, + "name": "SHL", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6195, + "end": 6213, + "name": "SHR", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "tag", + "source": 8, + "value": "19" + }, + { + "begin": 6195, + "end": 6213, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "tag", + "source": 8, + "value": "18" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "name": "POP", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "name": "POP", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4935, + "end": 5372, + "name": "tag", + "source": 8, + "value": "10" + }, + { + "begin": 4935, + "end": 5372, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5021, + "end": 5022, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4996, + "end": 5005, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4996, + "end": 5017, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4996, + "end": 5017, + "name": "AND", + "source": 8 + }, + { + "begin": 4996, + "end": 5017, + "name": "EXTCODESIZE", + "source": 8 + }, + { + "begin": 4996, + "end": 5022, + "name": "SUB", + "source": 8 + }, + { + "begin": 4992, + "end": 5087, + "name": "PUSH [tag]", + "source": 8, + "value": "22" + }, + { + "begin": 4992, + "end": 5087, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5066, + "end": 5075, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5045, + "end": 5076, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "64CED0EC00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5045, + "end": 5076, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5045, + "end": 5076, + "name": "ADD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH [tag]", + "source": 8, + "value": "23" + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH [tag]", + "source": 8, + "value": "24" + }, + { + "begin": 5045, + "end": 5076, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "tag", + "source": 8, + "value": "23" + }, + { + "begin": 5045, + "end": 5076, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5045, + "end": 5076, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SUB", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "REVERT", + "source": 8 + }, + { + "begin": 4992, + "end": 5087, + "name": "tag", + "source": 8, + "value": "22" + }, + { + "begin": 4992, + "end": 5087, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5145, + "end": 5154, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "PUSH [tag]", + "source": 8, + "value": "25" + }, + { + "begin": 4601, + "end": 4667, + "name": "PUSH", + "source": 8, + "value": "A3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50" + }, + { + "begin": 5124, + "end": 5135, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5124, + "end": 5135, + "name": "SHL", + "source": 8 + }, + { + "begin": 5097, + "end": 5123, + "name": "PUSH [tag]", + "source": 8, + "value": "26" + }, + { + "begin": 5097, + "end": 5123, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5097, + "end": 5123, + "name": "SHL", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5097, + "end": 5136, + "name": "SHR", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "tag", + "source": 8, + "value": "25" + }, + { + "begin": 5097, + "end": 5136, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5097, + "end": 5142, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5097, + "end": 5142, + "name": "ADD", + "source": 8 + }, + { + "begin": 5097, + "end": 5142, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "100" + }, + { + "begin": 5097, + "end": 5154, + "name": "EXP", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SLOAD", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5097, + "end": 5154, + "name": "MUL", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "NOT", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "AND", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP4", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5097, + "end": 5154, + "name": "AND", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "MUL", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "OR", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "POP", + "source": 8 + }, + { + "begin": 5165, + "end": 5193, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5204, + "end": 5213, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5229, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5196, + "end": 5229, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5229, + "name": "PUSH", + "source": 8, + "value": "5C60DA1B" + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFF" + }, + { + "begin": 5196, + "end": 5231, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "E0" + }, + { + "begin": 5196, + "end": 5231, + "name": "SHL", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP4", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SUB", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP7", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "GAS", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "STATICCALL", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "28" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATACOPY", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5196, + "end": 5231, + "name": "REVERT", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "tag", + "source": 8, + "value": "28" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 5196, + "end": 5231, + "name": "NOT", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "29" + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "16" + }, + { + "begin": 5196, + "end": 5231, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "tag", + "source": 8, + "value": "29" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5165, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5165, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5281, + "end": 5282, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5245, + "end": 5265, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5245, + "end": 5277, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5245, + "end": 5277, + "name": "AND", + "source": 8 + }, + { + "begin": 5245, + "end": 5277, + "name": "EXTCODESIZE", + "source": 8 + }, + { + "begin": 5245, + "end": 5282, + "name": "SUB", + "source": 8 + }, + { + "begin": 5241, + "end": 5366, + "name": "PUSH [tag]", + "source": 8, + "value": "30" + }, + { + "begin": 5241, + "end": 5366, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5334, + "end": 5354, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5305, + "end": 5355, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "4C9C8CE300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5305, + "end": 5355, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5305, + "end": 5355, + "name": "ADD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH [tag]", + "source": 8, + "value": "31" + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH [tag]", + "source": 8, + "value": "24" + }, + { + "begin": 5305, + "end": 5355, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "tag", + "source": 8, + "value": "31" + }, + { + "begin": 5305, + "end": 5355, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5305, + "end": 5355, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SUB", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "REVERT", + "source": 8 + }, + { + "begin": 5241, + "end": 5366, + "name": "tag", + "source": 8, + "value": "30" + }, + { + "begin": 5241, + "end": 5366, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4982, + "end": 5372, + "name": "POP", + "source": 8 + }, + { + "begin": 4935, + "end": 5372, + "name": "POP", + "source": 8 + }, + { + "begin": 4935, + "end": 5372, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4106, + "end": 4359, + "name": "tag", + "source": 14, + "value": "17" + }, + { + "begin": 4106, + "end": 4359, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4189, + "end": 4201, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4214, + "end": 4226, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4228, + "end": 4251, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4261, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4274, + "name": "PUSH", + "source": 14, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4255, + "end": 4274, + "name": "AND", + "source": 14 + }, + { + "begin": 4275, + "end": 4279, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "33" + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "34" + }, + { + "begin": 4255, + "end": 4280, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "33" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SUB", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP6", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "GAS", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DELEGATECALL", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "EQ", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "37" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "1F" + }, + { + "begin": 4255, + "end": 4280, + "name": "NOT", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "3F" + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "AND", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATACOPY", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "36" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "37" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "36" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "PUSH [tag]", + "source": 14, + "value": "38" + }, + { + "begin": 4324, + "end": 4330, + "name": "DUP6", + "source": 14 + }, + { + "begin": 4332, + "end": 4339, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4341, + "end": 4351, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4297, + "end": 4323, + "name": "PUSH [tag]", + "source": 14, + "value": "39" + }, + { + "begin": 4297, + "end": 4323, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4297, + "end": 4323, + "name": "SHL", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4297, + "end": 4352, + "name": "SHR", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "tag", + "source": 14, + "value": "38" + }, + { + "begin": 4297, + "end": 4352, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "jumpType": "[out]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 6419, + "end": 6541, + "name": "tag", + "source": 8, + "value": "20" + }, + { + "begin": 6419, + "end": 6541, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6481, + "end": 6482, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6469, + "end": 6478, + "name": "CALLVALUE", + "source": 8 + }, + { + "begin": 6469, + "end": 6482, + "name": "GT", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "PUSH [tag]", + "source": 8, + "value": "41" + }, + { + "begin": 6465, + "end": 6535, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6505, + "end": 6524, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "B398979F00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6505, + "end": 6524, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 6505, + "end": 6524, + "name": "ADD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6505, + "end": 6524, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SUB", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "REVERT", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "tag", + "source": 8, + "value": "41" + }, + { + "begin": 6465, + "end": 6535, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6419, + "end": 6541, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1685, + "end": 1875, + "name": "tag", + "source": 17, + "value": "26" + }, + { + "begin": 1685, + "end": 1875, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 1746, + "end": 1767, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1855, + "end": 1859, + "name": "DUP2", + "source": 17 + }, + { + "begin": 1845, + "end": 1859, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 1845, + "end": 1859, + "name": "POP", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "SWAP2", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "POP", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "jumpType": "[out]", + "name": "JUMP", + "source": 17 + }, + { + "begin": 4625, + "end": 5207, + "name": "tag", + "source": 14, + "value": "39" + }, + { + "begin": 4625, + "end": 5207, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4769, + "end": 4781, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4798, + "end": 4805, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "PUSH [tag]", + "source": 14, + "value": "44" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "PUSH [tag]", + "source": 14, + "value": "45" + }, + { + "begin": 4829, + "end": 4839, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4821, + "end": 4828, + "name": "PUSH [tag]", + "source": 14, + "value": "46" + }, + { + "begin": 4821, + "end": 4828, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4821, + "end": 4828, + "name": "SHL", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4821, + "end": 4840, + "name": "SHR", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "tag", + "source": 14, + "value": "45" + }, + { + "begin": 4821, + "end": 4840, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "PUSH [tag]", + "source": 14, + "value": "47" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "tag", + "source": 14, + "value": "44" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5066, + "end": 5067, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5045, + "end": 5055, + "name": "DUP3", + "source": 14 + }, + { + "begin": 5045, + "end": 5062, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5045, + "end": 5067, + "name": "EQ", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "DUP1", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "PUSH [tag]", + "source": 14, + "value": "48" + }, + { + "begin": 5045, + "end": 5094, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "POP", + "source": 14 + }, + { + "begin": 5093, + "end": 5094, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5071, + "end": 5077, + "name": "DUP5", + "source": 14 + }, + { + "begin": 5071, + "end": 5089, + "name": "PUSH", + "source": 14, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5071, + "end": 5089, + "name": "AND", + "source": 14 + }, + { + "begin": 5071, + "end": 5089, + "name": "EXTCODESIZE", + "source": 14 + }, + { + "begin": 5071, + "end": 5094, + "name": "EQ", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "tag", + "source": 14, + "value": "48" + }, + { + "begin": 5045, + "end": 5094, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "PUSH [tag]", + "source": 14, + "value": "49" + }, + { + "begin": 5041, + "end": 5160, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 5138, + "end": 5144, + "name": "DUP4", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 5121, + "end": 5145, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "9996B31500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5121, + "end": 5145, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "4" + }, + { + "begin": 5121, + "end": 5145, + "name": "ADD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH [tag]", + "source": 14, + "value": "50" + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH [tag]", + "source": 14, + "value": "24" + }, + { + "begin": 5121, + "end": 5145, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "tag", + "source": 14, + "value": "50" + }, + { + "begin": 5121, + "end": 5145, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 5121, + "end": 5145, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "DUP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SUB", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "REVERT", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "tag", + "source": 14, + "value": "49" + }, + { + "begin": 5041, + "end": 5160, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5180, + "end": 5190, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "POP", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "PUSH [tag]", + "source": 14, + "value": "43" + }, + { + "begin": 5173, + "end": 5190, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "tag", + "source": 14, + "value": "47" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "tag", + "source": 14, + "value": "43" + }, + { + "begin": 4625, + "end": 5207, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "SWAP4", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "jumpType": "[out]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 5743, + "end": 6259, + "name": "tag", + "source": 14, + "value": "46" + }, + { + "begin": 5743, + "end": 6259, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5894, + "end": 5895, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5874, + "end": 5884, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5874, + "end": 5891, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5874, + "end": 5895, + "name": "GT", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "PUSH [tag]", + "source": 14, + "value": "52" + }, + { + "begin": 5870, + "end": 6253, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 6102, + "end": 6112, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6096, + "end": 6113, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6158, + "end": 6173, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6145, + "end": 6155, + "name": "DUP3", + "source": 14 + }, + { + "begin": 6141, + "end": 6143, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 6137, + "end": 6156, + "name": "ADD", + "source": 14 + }, + { + "begin": 6130, + "end": 6174, + "name": "REVERT", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "tag", + "source": 14, + "value": "52" + }, + { + "begin": 5870, + "end": 6253, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 6225, + "end": 6242, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "1425EA4200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6225, + "end": 6242, + "name": "DUP2", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "4" + }, + { + "begin": 6225, + "end": 6242, + "name": "ADD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 6225, + "end": 6242, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SUB", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "REVERT", + "source": 14 + }, + { + "begin": 7, + "end": 82, + "name": "tag", + "source": 40, + "value": "54" + }, + { + "begin": 7, + "end": 82, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40, + "end": 46, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 73, + "end": 75, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 67, + "end": 76, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 57, + "end": 76, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 57, + "end": 76, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 82, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7, + "end": 82, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 40, + "value": "55" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 40 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 40 + }, + { + "begin": 211, + "end": 328, + "name": "tag", + "source": 40, + "value": "56" + }, + { + "begin": 211, + "end": 328, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 320, + "end": 321, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 317, + "end": 318, + "name": "DUP1", + "source": 40 + }, + { + "begin": 310, + "end": 322, + "name": "REVERT", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 40, + "value": "57" + }, + { + "begin": 334, + "end": 460, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 404, + "end": 409, + "name": "DUP3", + "source": 40 + }, + { + "begin": 400, + "end": 454, + "name": "AND", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 40, + "value": "58" + }, + { + "begin": 466, + "end": 562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "81" + }, + { + "begin": 550, + "end": 555, + "name": "DUP3", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "57" + }, + { + "begin": 532, + "end": 556, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 40, + "value": "81" + }, + { + "begin": 532, + "end": 556, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "tag", + "source": 40, + "value": "59" + }, + { + "begin": 568, + "end": 690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "83" + }, + { + "begin": 659, + "end": 664, + "name": "DUP2", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "58" + }, + { + "begin": 641, + "end": 665, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "tag", + "source": 40, + "value": "83" + }, + { + "begin": 641, + "end": 665, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 634, + "end": 639, + "name": "DUP2", + "source": 40 + }, + { + "begin": 631, + "end": 666, + "name": "EQ", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "PUSH [tag]", + "source": 40, + "value": "84" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 680, + "end": 681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 677, + "end": 678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 670, + "end": 682, + "name": "REVERT", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "tag", + "source": 40, + "value": "84" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "POP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "tag", + "source": 40, + "value": "60" + }, + { + "begin": 696, + "end": 839, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 753, + "end": 758, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 784, + "end": 790, + "name": "DUP2", + "source": 40 + }, + { + "begin": 778, + "end": 791, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "POP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "86" + }, + { + "begin": 827, + "end": 832, + "name": "DUP2", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "59" + }, + { + "begin": 800, + "end": 833, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "tag", + "source": 40, + "value": "86" + }, + { + "begin": 800, + "end": 833, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 845, + "end": 962, + "name": "tag", + "source": 40, + "value": "61" + }, + { + "begin": 845, + "end": 962, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 954, + "end": 955, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 951, + "end": 952, + "name": "DUP1", + "source": 40 + }, + { + "begin": 944, + "end": 956, + "name": "REVERT", + "source": 40 + }, + { + "begin": 968, + "end": 1085, + "name": "tag", + "source": 40, + "value": "62" + }, + { + "begin": 968, + "end": 1085, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1077, + "end": 1078, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1074, + "end": 1075, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1067, + "end": 1079, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1091, + "end": 1193, + "name": "tag", + "source": 40, + "value": "63" + }, + { + "begin": 1091, + "end": 1193, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1132, + "end": 1138, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1183, + "end": 1185, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 1179, + "end": 1186, + "name": "NOT", + "source": 40 + }, + { + "begin": 1174, + "end": 1176, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 1167, + "end": 1172, + "name": "DUP4", + "source": 40 + }, + { + "begin": 1163, + "end": 1177, + "name": "ADD", + "source": 40 + }, + { + "begin": 1159, + "end": 1187, + "name": "AND", + "source": 40 + }, + { + "begin": 1149, + "end": 1187, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1149, + "end": 1187, + "name": "POP", + "source": 40 + }, + { + "begin": 1091, + "end": 1193, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1091, + "end": 1193, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1091, + "end": 1193, + "name": "POP", + "source": 40 + }, + { + "begin": 1091, + "end": 1193, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1199, + "end": 1379, + "name": "tag", + "source": 40, + "value": "64" + }, + { + "begin": 1199, + "end": 1379, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1247, + "end": 1324, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1244, + "end": 1245, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1237, + "end": 1325, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1344, + "end": 1348, + "name": "PUSH", + "source": 40, + "value": "41" + }, + { + "begin": 1341, + "end": 1342, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 1334, + "end": 1349, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1368, + "end": 1372, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 1365, + "end": 1366, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1358, + "end": 1373, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1385, + "end": 1666, + "name": "tag", + "source": 40, + "value": "65" + }, + { + "begin": 1385, + "end": 1666, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1468, + "end": 1495, + "name": "PUSH [tag]", + "source": 40, + "value": "92" + }, + { + "begin": 1490, + "end": 1494, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1468, + "end": 1495, + "name": "PUSH [tag]", + "source": 40, + "value": "63" + }, + { + "begin": 1468, + "end": 1495, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1468, + "end": 1495, + "name": "tag", + "source": 40, + "value": "92" + }, + { + "begin": 1468, + "end": 1495, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1460, + "end": 1466, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1456, + "end": 1496, + "name": "ADD", + "source": 40 + }, + { + "begin": 1598, + "end": 1604, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1586, + "end": 1596, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1583, + "end": 1605, + "name": "LT", + "source": 40 + }, + { + "begin": 1562, + "end": 1580, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1550, + "end": 1560, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1547, + "end": 1581, + "name": "GT", + "source": 40 + }, + { + "begin": 1544, + "end": 1606, + "name": "OR", + "source": 40 + }, + { + "begin": 1541, + "end": 1629, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1541, + "end": 1629, + "name": "PUSH [tag]", + "source": 40, + "value": "93" + }, + { + "begin": 1541, + "end": 1629, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1609, + "end": 1627, + "name": "PUSH [tag]", + "source": 40, + "value": "94" + }, + { + "begin": 1609, + "end": 1627, + "name": "PUSH [tag]", + "source": 40, + "value": "64" + }, + { + "begin": 1609, + "end": 1627, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1609, + "end": 1627, + "name": "tag", + "source": 40, + "value": "94" + }, + { + "begin": 1609, + "end": 1627, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1541, + "end": 1629, + "name": "tag", + "source": 40, + "value": "93" + }, + { + "begin": 1541, + "end": 1629, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1649, + "end": 1659, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1645, + "end": 1647, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 1638, + "end": 1660, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1428, + "end": 1666, + "name": "POP", + "source": 40 + }, + { + "begin": 1385, + "end": 1666, + "name": "POP", + "source": 40 + }, + { + "begin": 1385, + "end": 1666, + "name": "POP", + "source": 40 + }, + { + "begin": 1385, + "end": 1666, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1672, + "end": 1801, + "name": "tag", + "source": 40, + "value": "66" + }, + { + "begin": 1672, + "end": 1801, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1706, + "end": 1712, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1733, + "end": 1753, + "name": "PUSH [tag]", + "source": 40, + "value": "96" + }, + { + "begin": 1733, + "end": 1753, + "name": "PUSH [tag]", + "source": 40, + "value": "54" + }, + { + "begin": 1733, + "end": 1753, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1733, + "end": 1753, + "name": "tag", + "source": 40, + "value": "96" + }, + { + "begin": 1733, + "end": 1753, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1723, + "end": 1753, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1723, + "end": 1753, + "name": "POP", + "source": 40 + }, + { + "begin": 1762, + "end": 1795, + "name": "PUSH [tag]", + "source": 40, + "value": "97" + }, + { + "begin": 1790, + "end": 1794, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1782, + "end": 1788, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1762, + "end": 1795, + "name": "PUSH [tag]", + "source": 40, + "value": "65" + }, + { + "begin": 1762, + "end": 1795, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1762, + "end": 1795, + "name": "tag", + "source": 40, + "value": "97" + }, + { + "begin": 1762, + "end": 1795, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1672, + "end": 1801, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1672, + "end": 1801, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1672, + "end": 1801, + "name": "POP", + "source": 40 + }, + { + "begin": 1672, + "end": 1801, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1807, + "end": 2114, + "name": "tag", + "source": 40, + "value": "67" + }, + { + "begin": 1807, + "end": 2114, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1868, + "end": 1872, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1958, + "end": 1976, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1950, + "end": 1956, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1947, + "end": 1977, + "name": "GT", + "source": 40 + }, + { + "begin": 1944, + "end": 2000, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1944, + "end": 2000, + "name": "PUSH [tag]", + "source": 40, + "value": "99" + }, + { + "begin": 1944, + "end": 2000, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1980, + "end": 1998, + "name": "PUSH [tag]", + "source": 40, + "value": "100" + }, + { + "begin": 1980, + "end": 1998, + "name": "PUSH [tag]", + "source": 40, + "value": "64" + }, + { + "begin": 1980, + "end": 1998, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1980, + "end": 1998, + "name": "tag", + "source": 40, + "value": "100" + }, + { + "begin": 1980, + "end": 1998, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1944, + "end": 2000, + "name": "tag", + "source": 40, + "value": "99" + }, + { + "begin": 1944, + "end": 2000, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2018, + "end": 2047, + "name": "PUSH [tag]", + "source": 40, + "value": "101" + }, + { + "begin": 2040, + "end": 2046, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2018, + "end": 2047, + "name": "PUSH [tag]", + "source": 40, + "value": "63" + }, + { + "begin": 2018, + "end": 2047, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2018, + "end": 2047, + "name": "tag", + "source": 40, + "value": "101" + }, + { + "begin": 2018, + "end": 2047, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2010, + "end": 2047, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2010, + "end": 2047, + "name": "POP", + "source": 40 + }, + { + "begin": 2102, + "end": 2106, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2096, + "end": 2100, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2092, + "end": 2107, + "name": "ADD", + "source": 40 + }, + { + "begin": 2084, + "end": 2107, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2084, + "end": 2107, + "name": "POP", + "source": 40 + }, + { + "begin": 1807, + "end": 2114, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1807, + "end": 2114, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1807, + "end": 2114, + "name": "POP", + "source": 40 + }, + { + "begin": 1807, + "end": 2114, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2120, + "end": 2366, + "name": "tag", + "source": 40, + "value": "68" + }, + { + "begin": 2120, + "end": 2366, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2201, + "end": 2202, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2211, + "end": 2324, + "name": "tag", + "source": 40, + "value": "103" + }, + { + "begin": 2211, + "end": 2324, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2225, + "end": 2231, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2222, + "end": 2223, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2219, + "end": 2232, + "name": "LT", + "source": 40 + }, + { + "begin": 2211, + "end": 2324, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2211, + "end": 2324, + "name": "PUSH [tag]", + "source": 40, + "value": "105" + }, + { + "begin": 2211, + "end": 2324, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 2310, + "end": 2311, + "name": "DUP1", + "source": 40 + }, + { + "begin": 2305, + "end": 2308, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2301, + "end": 2312, + "name": "ADD", + "source": 40 + }, + { + "begin": 2295, + "end": 2313, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 2291, + "end": 2292, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2286, + "end": 2289, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2282, + "end": 2293, + "name": "ADD", + "source": 40 + }, + { + "begin": 2275, + "end": 2314, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2247, + "end": 2249, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2244, + "end": 2245, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2240, + "end": 2250, + "name": "ADD", + "source": 40 + }, + { + "begin": 2235, + "end": 2250, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2235, + "end": 2250, + "name": "POP", + "source": 40 + }, + { + "begin": 2211, + "end": 2324, + "name": "PUSH [tag]", + "source": 40, + "value": "103" + }, + { + "begin": 2211, + "end": 2324, + "name": "JUMP", + "source": 40 + }, + { + "begin": 2211, + "end": 2324, + "name": "tag", + "source": 40, + "value": "105" + }, + { + "begin": 2211, + "end": 2324, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2358, + "end": 2359, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2349, + "end": 2355, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2344, + "end": 2347, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2340, + "end": 2356, + "name": "ADD", + "source": 40 + }, + { + "begin": 2333, + "end": 2360, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2182, + "end": 2366, + "name": "POP", + "source": 40 + }, + { + "begin": 2120, + "end": 2366, + "name": "POP", + "source": 40 + }, + { + "begin": 2120, + "end": 2366, + "name": "POP", + "source": 40 + }, + { + "begin": 2120, + "end": 2366, + "name": "POP", + "source": 40 + }, + { + "begin": 2120, + "end": 2366, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2372, + "end": 2804, + "name": "tag", + "source": 40, + "value": "69" + }, + { + "begin": 2372, + "end": 2804, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2460, + "end": 2465, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2485, + "end": 2550, + "name": "PUSH [tag]", + "source": 40, + "value": "107" + }, + { + "begin": 2501, + "end": 2549, + "name": "PUSH [tag]", + "source": 40, + "value": "108" + }, + { + "begin": 2542, + "end": 2548, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2501, + "end": 2549, + "name": "PUSH [tag]", + "source": 40, + "value": "67" + }, + { + "begin": 2501, + "end": 2549, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2501, + "end": 2549, + "name": "tag", + "source": 40, + "value": "108" + }, + { + "begin": 2501, + "end": 2549, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2485, + "end": 2550, + "name": "PUSH [tag]", + "source": 40, + "value": "66" + }, + { + "begin": 2485, + "end": 2550, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2485, + "end": 2550, + "name": "tag", + "source": 40, + "value": "107" + }, + { + "begin": 2485, + "end": 2550, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2476, + "end": 2550, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2476, + "end": 2550, + "name": "POP", + "source": 40 + }, + { + "begin": 2573, + "end": 2579, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2566, + "end": 2571, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2559, + "end": 2580, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2611, + "end": 2615, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2604, + "end": 2609, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2600, + "end": 2616, + "name": "ADD", + "source": 40 + }, + { + "begin": 2649, + "end": 2652, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2640, + "end": 2646, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2635, + "end": 2638, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2631, + "end": 2647, + "name": "ADD", + "source": 40 + }, + { + "begin": 2628, + "end": 2653, + "name": "GT", + "source": 40 + }, + { + "begin": 2625, + "end": 2737, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2625, + "end": 2737, + "name": "PUSH [tag]", + "source": 40, + "value": "109" + }, + { + "begin": 2625, + "end": 2737, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 2656, + "end": 2735, + "name": "PUSH [tag]", + "source": 40, + "value": "110" + }, + { + "begin": 2656, + "end": 2735, + "name": "PUSH [tag]", + "source": 40, + "value": "62" + }, + { + "begin": 2656, + "end": 2735, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2656, + "end": 2735, + "name": "tag", + "source": 40, + "value": "110" + }, + { + "begin": 2656, + "end": 2735, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2625, + "end": 2737, + "name": "tag", + "source": 40, + "value": "109" + }, + { + "begin": 2625, + "end": 2737, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2746, + "end": 2798, + "name": "PUSH [tag]", + "source": 40, + "value": "111" + }, + { + "begin": 2791, + "end": 2797, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2786, + "end": 2789, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2781, + "end": 2784, + "name": "DUP6", + "source": 40 + }, + { + "begin": 2746, + "end": 2798, + "name": "PUSH [tag]", + "source": 40, + "value": "68" + }, + { + "begin": 2746, + "end": 2798, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2746, + "end": 2798, + "name": "tag", + "source": 40, + "value": "111" + }, + { + "begin": 2746, + "end": 2798, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2466, + "end": 2804, + "name": "POP", + "source": 40 + }, + { + "begin": 2372, + "end": 2804, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 2372, + "end": 2804, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 2372, + "end": 2804, + "name": "POP", + "source": 40 + }, + { + "begin": 2372, + "end": 2804, + "name": "POP", + "source": 40 + }, + { + "begin": 2372, + "end": 2804, + "name": "POP", + "source": 40 + }, + { + "begin": 2372, + "end": 2804, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2823, + "end": 3176, + "name": "tag", + "source": 40, + "value": "70" + }, + { + "begin": 2823, + "end": 3176, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2889, + "end": 2894, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2938, + "end": 2941, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2931, + "end": 2935, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 2923, + "end": 2929, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2919, + "end": 2936, + "name": "ADD", + "source": 40 + }, + { + "begin": 2915, + "end": 2942, + "name": "SLT", + "source": 40 + }, + { + "begin": 2905, + "end": 3027, + "name": "PUSH [tag]", + "source": 40, + "value": "113" + }, + { + "begin": 2905, + "end": 3027, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 2946, + "end": 3025, + "name": "PUSH [tag]", + "source": 40, + "value": "114" + }, + { + "begin": 2946, + "end": 3025, + "name": "PUSH [tag]", + "source": 40, + "value": "61" + }, + { + "begin": 2946, + "end": 3025, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2946, + "end": 3025, + "name": "tag", + "source": 40, + "value": "114" + }, + { + "begin": 2946, + "end": 3025, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2905, + "end": 3027, + "name": "tag", + "source": 40, + "value": "113" + }, + { + "begin": 2905, + "end": 3027, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3056, + "end": 3062, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3050, + "end": 3063, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 3081, + "end": 3170, + "name": "PUSH [tag]", + "source": 40, + "value": "115" + }, + { + "begin": 3166, + "end": 3169, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3158, + "end": 3164, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3151, + "end": 3155, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 3143, + "end": 3149, + "name": "DUP7", + "source": 40 + }, + { + "begin": 3139, + "end": 3156, + "name": "ADD", + "source": 40 + }, + { + "begin": 3081, + "end": 3170, + "name": "PUSH [tag]", + "source": 40, + "value": "69" + }, + { + "begin": 3081, + "end": 3170, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3081, + "end": 3170, + "name": "tag", + "source": 40, + "value": "115" + }, + { + "begin": 3081, + "end": 3170, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3072, + "end": 3170, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3072, + "end": 3170, + "name": "POP", + "source": 40 + }, + { + "begin": 2895, + "end": 3176, + "name": "POP", + "source": 40 + }, + { + "begin": 2823, + "end": 3176, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 2823, + "end": 3176, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2823, + "end": 3176, + "name": "POP", + "source": 40 + }, + { + "begin": 2823, + "end": 3176, + "name": "POP", + "source": 40 + }, + { + "begin": 2823, + "end": 3176, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3182, + "end": 3860, + "name": "tag", + "source": 40, + "value": "2" + }, + { + "begin": 3182, + "end": 3860, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3270, + "end": 3276, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3278, + "end": 3284, + "name": "DUP1", + "source": 40 + }, + { + "begin": 3327, + "end": 3329, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 3315, + "end": 3324, + "name": "DUP4", + "source": 40 + }, + { + "begin": 3306, + "end": 3313, + "name": "DUP6", + "source": 40 + }, + { + "begin": 3302, + "end": 3325, + "name": "SUB", + "source": 40 + }, + { + "begin": 3298, + "end": 3330, + "name": "SLT", + "source": 40 + }, + { + "begin": 3295, + "end": 3414, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 3295, + "end": 3414, + "name": "PUSH [tag]", + "source": 40, + "value": "117" + }, + { + "begin": 3295, + "end": 3414, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3333, + "end": 3412, + "name": "PUSH [tag]", + "source": 40, + "value": "118" + }, + { + "begin": 3333, + "end": 3412, + "name": "PUSH [tag]", + "source": 40, + "value": "55" + }, + { + "begin": 3333, + "end": 3412, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3333, + "end": 3412, + "name": "tag", + "source": 40, + "value": "118" + }, + { + "begin": 3333, + "end": 3412, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3295, + "end": 3414, + "name": "tag", + "source": 40, + "value": "117" + }, + { + "begin": 3295, + "end": 3414, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3453, + "end": 3454, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3478, + "end": 3542, + "name": "PUSH [tag]", + "source": 40, + "value": "119" + }, + { + "begin": 3534, + "end": 3541, + "name": "DUP6", + "source": 40 + }, + { + "begin": 3525, + "end": 3531, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3514, + "end": 3523, + "name": "DUP7", + "source": 40 + }, + { + "begin": 3510, + "end": 3532, + "name": "ADD", + "source": 40 + }, + { + "begin": 3478, + "end": 3542, + "name": "PUSH [tag]", + "source": 40, + "value": "60" + }, + { + "begin": 3478, + "end": 3542, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3478, + "end": 3542, + "name": "tag", + "source": 40, + "value": "119" + }, + { + "begin": 3478, + "end": 3542, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3468, + "end": 3542, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3468, + "end": 3542, + "name": "POP", + "source": 40 + }, + { + "begin": 3424, + "end": 3552, + "name": "POP", + "source": 40 + }, + { + "begin": 3612, + "end": 3614, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 3601, + "end": 3610, + "name": "DUP4", + "source": 40 + }, + { + "begin": 3597, + "end": 3615, + "name": "ADD", + "source": 40 + }, + { + "begin": 3591, + "end": 3616, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 3643, + "end": 3661, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 3635, + "end": 3641, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3632, + "end": 3662, + "name": "GT", + "source": 40 + }, + { + "begin": 3629, + "end": 3746, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 3629, + "end": 3746, + "name": "PUSH [tag]", + "source": 40, + "value": "120" + }, + { + "begin": 3629, + "end": 3746, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3665, + "end": 3744, + "name": "PUSH [tag]", + "source": 40, + "value": "121" + }, + { + "begin": 3665, + "end": 3744, + "name": "PUSH [tag]", + "source": 40, + "value": "56" + }, + { + "begin": 3665, + "end": 3744, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3665, + "end": 3744, + "name": "tag", + "source": 40, + "value": "121" + }, + { + "begin": 3665, + "end": 3744, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3629, + "end": 3746, + "name": "tag", + "source": 40, + "value": "120" + }, + { + "begin": 3629, + "end": 3746, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3770, + "end": 3843, + "name": "PUSH [tag]", + "source": 40, + "value": "122" + }, + { + "begin": 3835, + "end": 3842, + "name": "DUP6", + "source": 40 + }, + { + "begin": 3826, + "end": 3832, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3815, + "end": 3824, + "name": "DUP7", + "source": 40 + }, + { + "begin": 3811, + "end": 3833, + "name": "ADD", + "source": 40 + }, + { + "begin": 3770, + "end": 3843, + "name": "PUSH [tag]", + "source": 40, + "value": "70" + }, + { + "begin": 3770, + "end": 3843, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3770, + "end": 3843, + "name": "tag", + "source": 40, + "value": "122" + }, + { + "begin": 3770, + "end": 3843, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3760, + "end": 3843, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3760, + "end": 3843, + "name": "POP", + "source": 40 + }, + { + "begin": 3562, + "end": 3853, + "name": "POP", + "source": 40 + }, + { + "begin": 3182, + "end": 3860, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3182, + "end": 3860, + "name": "POP", + "source": 40 + }, + { + "begin": 3182, + "end": 3860, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3182, + "end": 3860, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 3182, + "end": 3860, + "name": "POP", + "source": 40 + }, + { + "begin": 3182, + "end": 3860, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3866, + "end": 4217, + "name": "tag", + "source": 40, + "value": "16" + }, + { + "begin": 3866, + "end": 4217, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3936, + "end": 3942, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3985, + "end": 3987, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 3973, + "end": 3982, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3964, + "end": 3971, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3960, + "end": 3983, + "name": "SUB", + "source": 40 + }, + { + "begin": 3956, + "end": 3988, + "name": "SLT", + "source": 40 + }, + { + "begin": 3953, + "end": 4072, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 3953, + "end": 4072, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 3953, + "end": 4072, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3991, + "end": 4070, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 3991, + "end": 4070, + "name": "PUSH [tag]", + "source": 40, + "value": "55" + }, + { + "begin": 3991, + "end": 4070, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3991, + "end": 4070, + "name": "tag", + "source": 40, + "value": "125" + }, + { + "begin": 3991, + "end": 4070, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3953, + "end": 4072, + "name": "tag", + "source": 40, + "value": "124" + }, + { + "begin": 3953, + "end": 4072, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4111, + "end": 4112, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4136, + "end": 4200, + "name": "PUSH [tag]", + "source": 40, + "value": "126" + }, + { + "begin": 4192, + "end": 4199, + "name": "DUP5", + "source": 40 + }, + { + "begin": 4183, + "end": 4189, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4172, + "end": 4181, + "name": "DUP6", + "source": 40 + }, + { + "begin": 4168, + "end": 4190, + "name": "ADD", + "source": 40 + }, + { + "begin": 4136, + "end": 4200, + "name": "PUSH [tag]", + "source": 40, + "value": "60" + }, + { + "begin": 4136, + "end": 4200, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4136, + "end": 4200, + "name": "tag", + "source": 40, + "value": "126" + }, + { + "begin": 4136, + "end": 4200, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4126, + "end": 4200, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4126, + "end": 4200, + "name": "POP", + "source": 40 + }, + { + "begin": 4082, + "end": 4210, + "name": "POP", + "source": 40 + }, + { + "begin": 3866, + "end": 4217, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3866, + "end": 4217, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3866, + "end": 4217, + "name": "POP", + "source": 40 + }, + { + "begin": 3866, + "end": 4217, + "name": "POP", + "source": 40 + }, + { + "begin": 3866, + "end": 4217, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4223, + "end": 4341, + "name": "tag", + "source": 40, + "value": "71" + }, + { + "begin": 4223, + "end": 4341, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4310, + "end": 4334, + "name": "PUSH [tag]", + "source": 40, + "value": "128" + }, + { + "begin": 4328, + "end": 4333, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4310, + "end": 4334, + "name": "PUSH [tag]", + "source": 40, + "value": "58" + }, + { + "begin": 4310, + "end": 4334, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4310, + "end": 4334, + "name": "tag", + "source": 40, + "value": "128" + }, + { + "begin": 4310, + "end": 4334, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4305, + "end": 4308, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4298, + "end": 4335, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 4223, + "end": 4341, + "name": "POP", + "source": 40 + }, + { + "begin": 4223, + "end": 4341, + "name": "POP", + "source": 40 + }, + { + "begin": 4223, + "end": 4341, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4347, + "end": 4569, + "name": "tag", + "source": 40, + "value": "24" + }, + { + "begin": 4347, + "end": 4569, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4440, + "end": 4444, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4478, + "end": 4480, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 4467, + "end": 4476, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4463, + "end": 4481, + "name": "ADD", + "source": 40 + }, + { + "begin": 4455, + "end": 4481, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4455, + "end": 4481, + "name": "POP", + "source": 40 + }, + { + "begin": 4491, + "end": 4562, + "name": "PUSH [tag]", + "source": 40, + "value": "130" + }, + { + "begin": 4559, + "end": 4560, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4548, + "end": 4557, + "name": "DUP4", + "source": 40 + }, + { + "begin": 4544, + "end": 4561, + "name": "ADD", + "source": 40 + }, + { + "begin": 4535, + "end": 4541, + "name": "DUP5", + "source": 40 + }, + { + "begin": 4491, + "end": 4562, + "name": "PUSH [tag]", + "source": 40, + "value": "71" + }, + { + "begin": 4491, + "end": 4562, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4491, + "end": 4562, + "name": "tag", + "source": 40, + "value": "130" + }, + { + "begin": 4491, + "end": 4562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4347, + "end": 4569, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4347, + "end": 4569, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4347, + "end": 4569, + "name": "POP", + "source": 40 + }, + { + "begin": 4347, + "end": 4569, + "name": "POP", + "source": 40 + }, + { + "begin": 4347, + "end": 4569, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4575, + "end": 4673, + "name": "tag", + "source": 40, + "value": "72" + }, + { + "begin": 4575, + "end": 4673, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4626, + "end": 4632, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4660, + "end": 4665, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4654, + "end": 4666, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 4644, + "end": 4666, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4644, + "end": 4666, + "name": "POP", + "source": 40 + }, + { + "begin": 4575, + "end": 4673, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4575, + "end": 4673, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4575, + "end": 4673, + "name": "POP", + "source": 40 + }, + { + "begin": 4575, + "end": 4673, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4679, + "end": 4826, + "name": "tag", + "source": 40, + "value": "73" + }, + { + "begin": 4679, + "end": 4826, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4780, + "end": 4791, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4817, + "end": 4820, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4802, + "end": 4820, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4802, + "end": 4820, + "name": "POP", + "source": 40 + }, + { + "begin": 4679, + "end": 4826, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4679, + "end": 4826, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4679, + "end": 4826, + "name": "POP", + "source": 40 + }, + { + "begin": 4679, + "end": 4826, + "name": "POP", + "source": 40 + }, + { + "begin": 4679, + "end": 4826, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4832, + "end": 5218, + "name": "tag", + "source": 40, + "value": "74" + }, + { + "begin": 4832, + "end": 5218, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4936, + "end": 4939, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4964, + "end": 5002, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 4996, + "end": 5001, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4964, + "end": 5002, + "name": "PUSH [tag]", + "source": 40, + "value": "72" + }, + { + "begin": 4964, + "end": 5002, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4964, + "end": 5002, + "name": "tag", + "source": 40, + "value": "134" + }, + { + "begin": 4964, + "end": 5002, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5018, + "end": 5106, + "name": "PUSH [tag]", + "source": 40, + "value": "135" + }, + { + "begin": 5099, + "end": 5105, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5094, + "end": 5097, + "name": "DUP6", + "source": 40 + }, + { + "begin": 5018, + "end": 5106, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 5018, + "end": 5106, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5018, + "end": 5106, + "name": "tag", + "source": 40, + "value": "135" + }, + { + "begin": 5018, + "end": 5106, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5011, + "end": 5106, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 5011, + "end": 5106, + "name": "POP", + "source": 40 + }, + { + "begin": 5115, + "end": 5180, + "name": "PUSH [tag]", + "source": 40, + "value": "136" + }, + { + "begin": 5173, + "end": 5179, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5168, + "end": 5171, + "name": "DUP6", + "source": 40 + }, + { + "begin": 5161, + "end": 5165, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 5154, + "end": 5159, + "name": "DUP7", + "source": 40 + }, + { + "begin": 5150, + "end": 5166, + "name": "ADD", + "source": 40 + }, + { + "begin": 5115, + "end": 5180, + "name": "PUSH [tag]", + "source": 40, + "value": "68" + }, + { + "begin": 5115, + "end": 5180, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5115, + "end": 5180, + "name": "tag", + "source": 40, + "value": "136" + }, + { + "begin": 5115, + "end": 5180, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5205, + "end": 5211, + "name": "DUP1", + "source": 40 + }, + { + "begin": 5200, + "end": 5203, + "name": "DUP5", + "source": 40 + }, + { + "begin": 5196, + "end": 5212, + "name": "ADD", + "source": 40 + }, + { + "begin": 5189, + "end": 5212, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5189, + "end": 5212, + "name": "POP", + "source": 40 + }, + { + "begin": 4940, + "end": 5218, + "name": "POP", + "source": 40 + }, + { + "begin": 4832, + "end": 5218, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4832, + "end": 5218, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4832, + "end": 5218, + "name": "POP", + "source": 40 + }, + { + "begin": 4832, + "end": 5218, + "name": "POP", + "source": 40 + }, + { + "begin": 4832, + "end": 5218, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5224, + "end": 5495, + "name": "tag", + "source": 40, + "value": "34" + }, + { + "begin": 5224, + "end": 5495, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5354, + "end": 5357, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5376, + "end": 5469, + "name": "PUSH [tag]", + "source": 40, + "value": "138" + }, + { + "begin": 5465, + "end": 5468, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5456, + "end": 5462, + "name": "DUP5", + "source": 40 + }, + { + "begin": 5376, + "end": 5469, + "name": "PUSH [tag]", + "source": 40, + "value": "74" + }, + { + "begin": 5376, + "end": 5469, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5376, + "end": 5469, + "name": "tag", + "source": 40, + "value": "138" + }, + { + "begin": 5376, + "end": 5469, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5369, + "end": 5469, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5369, + "end": 5469, + "name": "POP", + "source": 40 + }, + { + "begin": 5486, + "end": 5489, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5479, + "end": 5489, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5479, + "end": 5489, + "name": "POP", + "source": 40 + }, + { + "begin": 5224, + "end": 5495, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 5224, + "end": 5495, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5224, + "end": 5495, + "name": "POP", + "source": 40 + }, + { + "begin": 5224, + "end": 5495, + "name": "POP", + "source": 40 + }, + { + "begin": 5224, + "end": 5495, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1116, + "end": 2310, + "name": "tag", + "source": 10, + "value": "7" + }, + { + "begin": 1116, + "end": 2310, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "80" + }, + { + "begin": 1116, + "end": 2310, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH #[$]", + "source": 10, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH [$]", + "source": 10, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 1116, + "end": 2310, + "name": "CODECOPY", + "source": 10 + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 1116, + "end": 2310, + "name": "ASSIGNIMMUTABLE", + "source": 10, + "value": "1617" + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH #[$]", + "source": 10, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 1116, + "end": 2310, + "name": "RETURN", + "source": 10 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220e6b94c1acd793d7c218feef09f5a20900e4b9f3db44ddcf106581f880b40de4364736f6c63430008140033", + ".code": [ + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "80" + }, + { + "begin": 1116, + "end": 2310, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1116, + "end": 2310, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 2649, + "end": 2660, + "name": "PUSH [tag]", + "source": 9, + "value": "5" + }, + { + "begin": 2649, + "end": 2658, + "name": "PUSH [tag]", + "source": 9, + "value": "6" + }, + { + "begin": 2649, + "end": 2660, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2649, + "end": 2660, + "name": "tag", + "source": 9, + "value": "5" + }, + { + "begin": 2649, + "end": 2660, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 1116, + "end": 2310, + "name": "STOP", + "source": 10 + }, + { + "begin": 2323, + "end": 2406, + "name": "tag", + "source": 9, + "value": "6" + }, + { + "begin": 2323, + "end": 2406, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2371, + "end": 2399, + "name": "PUSH [tag]", + "source": 9, + "value": "8" + }, + { + "begin": 2381, + "end": 2398, + "name": "PUSH [tag]", + "source": 9, + "value": "9" + }, + { + "begin": 2381, + "end": 2396, + "name": "PUSH [tag]", + "source": 9, + "value": "10" + }, + { + "begin": 2381, + "end": 2398, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2381, + "end": 2398, + "name": "tag", + "source": 9, + "value": "9" + }, + { + "begin": 2381, + "end": 2398, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2371, + "end": 2380, + "name": "PUSH [tag]", + "source": 9, + "value": "11" + }, + { + "begin": 2371, + "end": 2399, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2371, + "end": 2399, + "name": "tag", + "source": 9, + "value": "8" + }, + { + "begin": 2371, + "end": 2399, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2323, + "end": 2406, + "jumpType": "[out]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2023, + "end": 2161, + "name": "tag", + "source": 10, + "value": "10" + }, + { + "begin": 2023, + "end": 2161, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2090, + "end": 2097, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2124, + "end": 2136, + "name": "PUSH [tag]", + "source": 10, + "value": "13" + }, + { + "begin": 2124, + "end": 2134, + "name": "PUSH [tag]", + "source": 10, + "value": "14" + }, + { + "begin": 2124, + "end": 2136, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 2124, + "end": 2136, + "name": "tag", + "source": 10, + "value": "13" + }, + { + "begin": 2124, + "end": 2136, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2116, + "end": 2152, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2116, + "end": 2152, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2152, + "name": "PUSH", + "source": 10, + "value": "5C60DA1B" + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFF" + }, + { + "begin": 2116, + "end": 2154, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "E0" + }, + { + "begin": 2116, + "end": 2154, + "name": "SHL", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "4" + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP4", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SUB", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP7", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "GAS", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "STATICCALL", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ISZERO", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ISZERO", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "16" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPI", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATACOPY", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2116, + "end": 2154, + "name": "REVERT", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "tag", + "source": 10, + "value": "16" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "1F" + }, + { + "begin": 2116, + "end": 2154, + "name": "NOT", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "1F" + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP3", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP3", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "17" + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "18" + }, + { + "begin": 2116, + "end": 2154, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "tag", + "source": 10, + "value": "17" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2109, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2109, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2023, + "end": 2161, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2023, + "end": 2161, + "jumpType": "[out]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 949, + "end": 1844, + "name": "tag", + "source": 9, + "value": "11" + }, + { + "begin": 949, + "end": 1844, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 1287, + "end": 1301, + "name": "CALLDATASIZE", + "source": 9 + }, + { + "begin": 1284, + "end": 1285, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1281, + "end": 1282, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1268, + "end": 1302, + "name": "CALLDATACOPY", + "source": 9 + }, + { + "begin": 1501, + "end": 1502, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1498, + "end": 1499, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1482, + "end": 1496, + "name": "CALLDATASIZE", + "source": 9 + }, + { + "begin": 1479, + "end": 1480, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1463, + "end": 1477, + "name": "DUP5", + "source": 9 + }, + { + "begin": 1456, + "end": 1461, + "name": "GAS", + "source": 9 + }, + { + "begin": 1443, + "end": 1503, + "name": "DELEGATECALL", + "source": 9 + }, + { + "begin": 1577, + "end": 1593, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1574, + "end": 1575, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1571, + "end": 1572, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1556, + "end": 1594, + "name": "RETURNDATACOPY", + "source": 9 + }, + { + "begin": 1615, + "end": 1621, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1687, + "end": 1688, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1682, + "end": 1748, + "name": "DUP2", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "EQ", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "PUSH [tag]", + "source": 9, + "value": "21" + }, + { + "begin": 1682, + "end": 1748, + "name": "JUMPI", + "source": 9 + }, + { + "begin": 1797, + "end": 1813, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1794, + "end": 1795, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1787, + "end": 1814, + "name": "RETURN", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "tag", + "source": 9, + "value": "21" + }, + { + "begin": 1682, + "end": 1748, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 1717, + "end": 1733, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1714, + "end": 1715, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1707, + "end": 1734, + "name": "REVERT", + "source": 9 + }, + { + "begin": 2215, + "end": 2308, + "name": "tag", + "source": 10, + "value": "14" + }, + { + "begin": 2215, + "end": 2308, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2268, + "end": 2275, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2294, + "end": 2301, + "name": "PUSHIMMUTABLE", + "source": 10, + "value": "1617" + }, + { + "begin": 2287, + "end": 2301, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2287, + "end": 2301, + "name": "POP", + "source": 10 + }, + { + "begin": 2215, + "end": 2308, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2215, + "end": 2308, + "jumpType": "[out]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 40, + "value": "24" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 40 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 40, + "value": "26" + }, + { + "begin": 334, + "end": 460, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 404, + "end": 409, + "name": "DUP3", + "source": 40 + }, + { + "begin": 400, + "end": 454, + "name": "AND", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 40, + "value": "27" + }, + { + "begin": 466, + "end": 562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "36" + }, + { + "begin": 550, + "end": 555, + "name": "DUP3", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "26" + }, + { + "begin": 532, + "end": 556, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 40, + "value": "36" + }, + { + "begin": 532, + "end": 556, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "tag", + "source": 40, + "value": "28" + }, + { + "begin": 568, + "end": 690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "38" + }, + { + "begin": 659, + "end": 664, + "name": "DUP2", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "27" + }, + { + "begin": 641, + "end": 665, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "tag", + "source": 40, + "value": "38" + }, + { + "begin": 641, + "end": 665, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 634, + "end": 639, + "name": "DUP2", + "source": 40 + }, + { + "begin": 631, + "end": 666, + "name": "EQ", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "PUSH [tag]", + "source": 40, + "value": "39" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 680, + "end": 681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 677, + "end": 678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 670, + "end": 682, + "name": "REVERT", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "tag", + "source": 40, + "value": "39" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "POP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "tag", + "source": 40, + "value": "29" + }, + { + "begin": 696, + "end": 839, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 753, + "end": 758, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 784, + "end": 790, + "name": "DUP2", + "source": 40 + }, + { + "begin": 778, + "end": 791, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "POP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "41" + }, + { + "begin": 827, + "end": 832, + "name": "DUP2", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "28" + }, + { + "begin": 800, + "end": 833, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "tag", + "source": 40, + "value": "41" + }, + { + "begin": 800, + "end": 833, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 845, + "end": 1196, + "name": "tag", + "source": 40, + "value": "18" + }, + { + "begin": 845, + "end": 1196, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 915, + "end": 921, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 964, + "end": 966, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 952, + "end": 961, + "name": "DUP3", + "source": 40 + }, + { + "begin": 943, + "end": 950, + "name": "DUP5", + "source": 40 + }, + { + "begin": 939, + "end": 962, + "name": "SUB", + "source": 40 + }, + { + "begin": 935, + "end": 967, + "name": "SLT", + "source": 40 + }, + { + "begin": 932, + "end": 1051, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 932, + "end": 1051, + "name": "PUSH [tag]", + "source": 40, + "value": "43" + }, + { + "begin": 932, + "end": 1051, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 970, + "end": 1049, + "name": "PUSH [tag]", + "source": 40, + "value": "44" + }, + { + "begin": 970, + "end": 1049, + "name": "PUSH [tag]", + "source": 40, + "value": "24" + }, + { + "begin": 970, + "end": 1049, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 970, + "end": 1049, + "name": "tag", + "source": 40, + "value": "44" + }, + { + "begin": 970, + "end": 1049, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 932, + "end": 1051, + "name": "tag", + "source": 40, + "value": "43" + }, + { + "begin": 932, + "end": 1051, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1090, + "end": 1091, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1115, + "end": 1179, + "name": "PUSH [tag]", + "source": 40, + "value": "45" + }, + { + "begin": 1171, + "end": 1178, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1162, + "end": 1168, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1151, + "end": 1160, + "name": "DUP6", + "source": 40 + }, + { + "begin": 1147, + "end": 1169, + "name": "ADD", + "source": 40 + }, + { + "begin": 1115, + "end": 1179, + "name": "PUSH [tag]", + "source": 40, + "value": "29" + }, + { + "begin": 1115, + "end": 1179, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1115, + "end": 1179, + "name": "tag", + "source": 40, + "value": "45" + }, + { + "begin": 1115, + "end": 1179, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1105, + "end": 1179, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1105, + "end": 1179, + "name": "POP", + "source": 40 + }, + { + "begin": 1061, + "end": 1189, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 1196, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 845, + "end": 1196, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 845, + "end": 1196, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 1196, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 1196, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}. The beacon address can only be set once during construction, and cannot be changed afterwards. It is stored in an immutable variable to avoid unnecessary storage reads, and also in the beacon storage slot specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] so that it can be accessed externally. CAUTION: Since the beacon address can never be changed, you must ensure that you either control the beacon, or trust the beacon to not upgrade the implementation maliciously. IMPORTANT: Do not use the implementation logic to modify the beacon storage slot. Doing so would leave the proxy in an inconsistent state where the beacon storage slot does not match the beacon address.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the proxy with `beacon`. If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - `beacon` must be a contract with the interface {IBeacon}. - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":\"BeaconProxy\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06bd04b0d6af06424c58c24ad861ac4fbe68ae729c199127f4b64361a0629510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a9228dd927facb9a400333848e8cf616c7a7f30693563d98a963266dc8ae28a\",\"dweb:/ipfs/Qmehe5JAWCK7g8A9VkS9LpfiNkYzXkrxnXfpvtuqbrA9BA\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x25052a8e6c783ab01f98a9ac7f521649be60b9963f352e2453997ba8fbc2d285\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ba3d98053a310582febe79742e566a36073f1f2645ddc772c638c84ae93b88\",\"dweb:/ipfs/QmTHUMHniPNJ9H2Ui2zgk35CZDSThg2nQ8j5sNXaNarL9D\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x70d9a9cf8d5cc830d7396505ef8eb9686bd0c60a29c6644bd6cc278f9bab8ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719abb402c11be12355088da587ffd971fee1b035b5aa6b1ba3b1a9493d3c1d7\",\"dweb:/ipfs/QmanHMFVDqVtZAFFaH1CeGQWoHWsFnWHH75fCrguwi77Hq\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": { + "IBeacon": { + "abi": [ + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "This is the interface that {BeaconProxy} expects of its beacon.", + "kind": "dev", + "methods": { + "implementation()": { + "details": "Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "implementation()": "5c60da1b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol": { + "UpgradeableBeacon": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementation_", + "type": "address" + }, + { + "internalType": "address", + "name": "initialOwner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "BeaconInvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their implementation contract, which is where they will delegate all function calls. An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.", + "errors": { + "BeaconInvalidImplementation(address)": [ + { + "details": "The `implementation` of the beacon is invalid." + } + ], + "OwnableInvalidOwner(address)": [ + { + "details": "The owner is not a valid owner account. (eg. `address(0)`)" + } + ], + "OwnableUnauthorizedAccount(address)": [ + { + "details": "The caller account is not authorized to perform an operation." + } + ] + }, + "events": { + "Upgraded(address)": { + "details": "Emitted when the implementation returned by the beacon is changed." + } + }, + "kind": "dev", + "methods": { + "constructor": { + "details": "Sets the address of the initial implementation, and the initial owner who can upgrade the beacon." + }, + "implementation()": { + "details": "Returns the current implementation address." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "upgradeTo(address)": { + "details": "Upgrades the beacon to a new implementation. Emits an {Upgraded} event. Requirements: - msg.sender must be the owner of the contract. - `newImplementation` must be a contract." + } + }, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":555:2218 contract UpgradeableBeacon is IBeacon, Ownable {... */\n mstore(0x40, 0x80)\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1059:1192 constructor(address implementation_, address initialOwner) Ownable(initialOwner) {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_2\n swap2\n swap1\n tag_3\n jump\t// in\ntag_2:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1126:1138 initialOwner */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1297:1298 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1273:1299 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1273:1285 initialOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1273:1299 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1269:1364 if (initialOwner == address(0)) {... */\n tag_7\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1350:1351 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1322:1353 OwnableInvalidOwner(address(0)) */\n mload(0x40)\n 0x1e4fbdf700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_8\n swap2\n swap1\n tag_9\n jump\t// in\ntag_8:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1269:1364 if (initialOwner == address(0)) {... */\ntag_7:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1373:1405 _transferOwnership(initialOwner) */\n tag_10\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1392:1404 initialOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1373:1391 _transferOwnership */\n shl(0x20, tag_11)\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1373:1405 _transferOwnership(initialOwner) */\n 0x20\n shr\n jump\t// in\ntag_10:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1225:1412 constructor(address initialOwner) {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1150:1185 _setImplementation(implementation_) */\n tag_13\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1169:1184 implementation_ */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1150:1168 _setImplementation */\n shl(0x20, tag_14)\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1150:1185 _setImplementation(implementation_) */\n 0x20\n shr\n jump\t// in\ntag_13:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1059:1192 constructor(address implementation_, address initialOwner) Ownable(initialOwner) {... */\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":555:2218 contract UpgradeableBeacon is IBeacon, Ownable {... */\n jump(tag_15)\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\ntag_11:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2985:3001 address oldOwner */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3004:3010 _owner */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2985:3010 address oldOwner = _owner */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3029:3037 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3020:3026 _owner */\n 0x00\n dup1\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3020:3037 _owner = newOwner */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3083:3091 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3073:3081 oldOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2975:3099 {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1932:2216 function _setImplementation(address newImplementation) private {... */\ntag_14:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2042:2043 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2009:2026 newImplementation */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2009:2038 newImplementation.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2009:2043 newImplementation.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2005:2123 if (newImplementation.code.length == 0) {... */\n tag_18\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2094:2111 newImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2066:2112 BeaconInvalidImplementation(newImplementation) */\n mload(0x40)\n 0x847ac56400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_19\n swap2\n swap1\n tag_9\n jump\t// in\ntag_19:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2005:2123 if (newImplementation.code.length == 0) {... */\ntag_18:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2150:2167 newImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2132:2147 _implementation */\n 0x01\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2132:2167 _implementation = newImplementation */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2191:2208 newImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2182:2209 Upgraded(newImplementation) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1932:2216 function _setImplementation(address newImplementation) private {... */\n pop\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_21:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:460 */\ntag_23:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\ntag_24:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_34\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_23\n jump\t// in\ntag_34:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\ntag_25:\n /* \"#utility.yul\":641:665 */\n tag_36\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_24\n jump\t// in\ntag_36:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_37\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\ntag_37:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:839 */\ntag_26:\n /* \"#utility.yul\":753:758 */\n 0x00\n /* \"#utility.yul\":784:790 */\n dup2\n /* \"#utility.yul\":778:791 */\n mload\n /* \"#utility.yul\":769:791 */\n swap1\n pop\n /* \"#utility.yul\":800:833 */\n tag_39\n /* \"#utility.yul\":827:832 */\n dup2\n /* \"#utility.yul\":800:833 */\n tag_25\n jump\t// in\ntag_39:\n /* \"#utility.yul\":696:839 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":845:1352 */\ntag_3:\n /* \"#utility.yul\":924:930 */\n 0x00\n /* \"#utility.yul\":932:938 */\n dup1\n /* \"#utility.yul\":981:983 */\n 0x40\n /* \"#utility.yul\":969:978 */\n dup4\n /* \"#utility.yul\":960:967 */\n dup6\n /* \"#utility.yul\":956:979 */\n sub\n /* \"#utility.yul\":952:984 */\n slt\n /* \"#utility.yul\":949:1068 */\n iszero\n tag_41\n jumpi\n /* \"#utility.yul\":987:1066 */\n tag_42\n tag_21\n jump\t// in\ntag_42:\n /* \"#utility.yul\":949:1068 */\ntag_41:\n /* \"#utility.yul\":1107:1108 */\n 0x00\n /* \"#utility.yul\":1132:1196 */\n tag_43\n /* \"#utility.yul\":1188:1195 */\n dup6\n /* \"#utility.yul\":1179:1185 */\n dup3\n /* \"#utility.yul\":1168:1177 */\n dup7\n /* \"#utility.yul\":1164:1186 */\n add\n /* \"#utility.yul\":1132:1196 */\n tag_26\n jump\t// in\ntag_43:\n /* \"#utility.yul\":1122:1196 */\n swap3\n pop\n /* \"#utility.yul\":1078:1206 */\n pop\n /* \"#utility.yul\":1245:1247 */\n 0x20\n /* \"#utility.yul\":1271:1335 */\n tag_44\n /* \"#utility.yul\":1327:1334 */\n dup6\n /* \"#utility.yul\":1318:1324 */\n dup3\n /* \"#utility.yul\":1307:1316 */\n dup7\n /* \"#utility.yul\":1303:1325 */\n add\n /* \"#utility.yul\":1271:1335 */\n tag_26\n jump\t// in\ntag_44:\n /* \"#utility.yul\":1261:1335 */\n swap2\n pop\n /* \"#utility.yul\":1216:1345 */\n pop\n /* \"#utility.yul\":845:1352 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1358:1476 */\ntag_27:\n /* \"#utility.yul\":1445:1469 */\n tag_46\n /* \"#utility.yul\":1463:1468 */\n dup2\n /* \"#utility.yul\":1445:1469 */\n tag_24\n jump\t// in\ntag_46:\n /* \"#utility.yul\":1440:1443 */\n dup3\n /* \"#utility.yul\":1433:1470 */\n mstore\n /* \"#utility.yul\":1358:1476 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1482:1704 */\ntag_9:\n /* \"#utility.yul\":1575:1579 */\n 0x00\n /* \"#utility.yul\":1613:1615 */\n 0x20\n /* \"#utility.yul\":1602:1611 */\n dup3\n /* \"#utility.yul\":1598:1616 */\n add\n /* \"#utility.yul\":1590:1616 */\n swap1\n pop\n /* \"#utility.yul\":1626:1697 */\n tag_48\n /* \"#utility.yul\":1694:1695 */\n 0x00\n /* \"#utility.yul\":1683:1692 */\n dup4\n /* \"#utility.yul\":1679:1696 */\n add\n /* \"#utility.yul\":1670:1676 */\n dup5\n /* \"#utility.yul\":1626:1697 */\n tag_27\n jump\t// in\ntag_48:\n /* \"#utility.yul\":1482:1704 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":555:2218 contract UpgradeableBeacon is IBeacon, Ownable {... */\ntag_15:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":555:2218 contract UpgradeableBeacon is IBeacon, Ownable {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x3659cfe6\n eq\n tag_3\n jumpi\n dup1\n 0x5c60da1b\n eq\n tag_4\n jumpi\n dup1\n 0x715018a6\n eq\n tag_5\n jumpi\n dup1\n 0x8da5cb5b\n eq\n tag_6\n jumpi\n dup1\n 0xf2fde38b\n eq\n tag_7\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1632:1757 function upgradeTo(address newImplementation) public virtual onlyOwner {... */\n tag_3:\n tag_8\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_9\n swap2\n swap1\n tag_10\n jump\t// in\n tag_9:\n tag_11\n jump\t// in\n tag_8:\n stop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1270:1373 function implementation() public view virtual returns (address) {... */\n tag_4:\n tag_12\n tag_13\n jump\t// in\n tag_12:\n mload(0x40)\n tag_14\n swap2\n swap1\n tag_15\n jump\t// in\n tag_14:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2293:2394 function renounceOwnership() public virtual onlyOwner {... */\n tag_5:\n tag_16\n tag_17\n jump\t// in\n tag_16:\n stop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1638:1723 function owner() public view virtual returns (address) {... */\n tag_6:\n tag_18\n tag_19\n jump\t// in\n tag_18:\n mload(0x40)\n tag_20\n swap2\n swap1\n tag_15\n jump\t// in\n tag_20:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2543:2758 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n tag_7:\n tag_21\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_22\n swap2\n swap1\n tag_10\n jump\t// in\n tag_22:\n tag_23\n jump\t// in\n tag_21:\n stop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1632:1757 function upgradeTo(address newImplementation) public virtual onlyOwner {... */\n tag_11:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n tag_25\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1542 _checkOwner */\n tag_26\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n jump\t// in\n tag_25:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1713:1750 _setImplementation(newImplementation) */\n tag_28\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1732:1749 newImplementation */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1713:1731 _setImplementation */\n tag_29\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1713:1750 _setImplementation(newImplementation) */\n jump\t// in\n tag_28:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1632:1757 function upgradeTo(address newImplementation) public virtual onlyOwner {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1270:1373 function implementation() public view virtual returns (address) {... */\n tag_13:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1325:1332 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1351:1366 _implementation */\n 0x01\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1344:1366 return _implementation */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1270:1373 function implementation() public view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2293:2394 function renounceOwnership() public virtual onlyOwner {... */\n tag_17:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n tag_32\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1542 _checkOwner */\n tag_26\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n jump\t// in\n tag_32:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2357:2387 _transferOwnership(address(0)) */\n tag_34\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2384:2385 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2357:2375 _transferOwnership */\n tag_35\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2357:2387 _transferOwnership(address(0)) */\n jump\t// in\n tag_34:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2293:2394 function renounceOwnership() public virtual onlyOwner {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1638:1723 function owner() public view virtual returns (address) {... */\n tag_19:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1684:1691 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1710:1716 _owner */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1703:1716 return _owner */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1638:1723 function owner() public view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2543:2758 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n tag_23:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n tag_38\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1542 _checkOwner */\n tag_26\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n jump\t// in\n tag_38:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2647:2648 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2627:2649 newOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2627:2635 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2627:2649 newOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2623:2714 if (newOwner == address(0)) {... */\n tag_40\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2700:2701 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2672:2703 OwnableInvalidOwner(address(0)) */\n mload(0x40)\n 0x1e4fbdf700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_41\n swap2\n swap1\n tag_15\n jump\t// in\n tag_41:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2623:2714 if (newOwner == address(0)) {... */\n tag_40:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2723:2751 _transferOwnership(newOwner) */\n tag_42\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2742:2750 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2723:2741 _transferOwnership */\n tag_35\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2723:2751 _transferOwnership(newOwner) */\n jump\t// in\n tag_42:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2543:2758 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1796:1958 function _checkOwner() internal view virtual {... */\n tag_26:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1866:1878 _msgSender() */\n tag_44\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1866:1876 _msgSender */\n tag_45\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1866:1878 _msgSender() */\n jump\t// in\n tag_44:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1855:1878 owner() != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1855:1862 owner() */\n tag_46\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1855:1860 owner */\n tag_19\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1855:1862 owner() */\n jump\t// in\n tag_46:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1855:1878 owner() != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1851:1952 if (owner() != _msgSender()) {... */\n tag_47\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1928:1940 _msgSender() */\n tag_48\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1928:1938 _msgSender */\n tag_45\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1928:1940 _msgSender() */\n jump\t// in\n tag_48:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1901:1941 OwnableUnauthorizedAccount(_msgSender()) */\n mload(0x40)\n 0x118cdaa700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_49\n swap2\n swap1\n tag_15\n jump\t// in\n tag_49:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1851:1952 if (owner() != _msgSender()) {... */\n tag_47:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":1796:1958 function _checkOwner() internal view virtual {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1932:2216 function _setImplementation(address newImplementation) private {... */\n tag_29:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2042:2043 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2009:2026 newImplementation */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2009:2038 newImplementation.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2009:2043 newImplementation.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2005:2123 if (newImplementation.code.length == 0) {... */\n tag_51\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2094:2111 newImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2066:2112 BeaconInvalidImplementation(newImplementation) */\n mload(0x40)\n 0x847ac56400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_52\n swap2\n swap1\n tag_15\n jump\t// in\n tag_52:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2005:2123 if (newImplementation.code.length == 0) {... */\n tag_51:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2150:2167 newImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2132:2147 _implementation */\n 0x01\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2132:2167 _implementation = newImplementation */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2191:2208 newImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":2182:2209 Upgraded(newImplementation) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":1932:2216 function _setImplementation(address newImplementation) private {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\n tag_35:\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2985:3001 address oldOwner */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3004:3010 _owner */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2985:3010 address oldOwner = _owner */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3029:3037 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3020:3026 _owner */\n 0x00\n dup1\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3020:3037 _owner = newOwner */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3083:3091 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3073:3081 oldOwner */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2975:3099 {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Context.sol\":656:752 function _msgSender() internal view virtual returns (address) {... */\n tag_45:\n /* \"lib/openzeppelin-contracts/contracts/utils/Context.sol\":709:716 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Context.sol\":735:745 msg.sender */\n caller\n /* \"lib/openzeppelin-contracts/contracts/utils/Context.sol\":728:745 return msg.sender */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Context.sol\":656:752 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_56:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:460 */\n tag_58:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\n tag_59:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_69\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_58\n jump\t// in\n tag_69:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\n tag_60:\n /* \"#utility.yul\":641:665 */\n tag_71\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_59\n jump\t// in\n tag_71:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_72\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\n tag_72:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:835 */\n tag_61:\n /* \"#utility.yul\":742:747 */\n 0x00\n /* \"#utility.yul\":780:786 */\n dup2\n /* \"#utility.yul\":767:787 */\n calldataload\n /* \"#utility.yul\":758:787 */\n swap1\n pop\n /* \"#utility.yul\":796:829 */\n tag_74\n /* \"#utility.yul\":823:828 */\n dup2\n /* \"#utility.yul\":796:829 */\n tag_60\n jump\t// in\n tag_74:\n /* \"#utility.yul\":696:835 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":841:1170 */\n tag_10:\n /* \"#utility.yul\":900:906 */\n 0x00\n /* \"#utility.yul\":949:951 */\n 0x20\n /* \"#utility.yul\":937:946 */\n dup3\n /* \"#utility.yul\":928:935 */\n dup5\n /* \"#utility.yul\":924:947 */\n sub\n /* \"#utility.yul\":920:952 */\n slt\n /* \"#utility.yul\":917:1036 */\n iszero\n tag_76\n jumpi\n /* \"#utility.yul\":955:1034 */\n tag_77\n tag_56\n jump\t// in\n tag_77:\n /* \"#utility.yul\":917:1036 */\n tag_76:\n /* \"#utility.yul\":1075:1076 */\n 0x00\n /* \"#utility.yul\":1100:1153 */\n tag_78\n /* \"#utility.yul\":1145:1152 */\n dup5\n /* \"#utility.yul\":1136:1142 */\n dup3\n /* \"#utility.yul\":1125:1134 */\n dup6\n /* \"#utility.yul\":1121:1143 */\n add\n /* \"#utility.yul\":1100:1153 */\n tag_61\n jump\t// in\n tag_78:\n /* \"#utility.yul\":1090:1153 */\n swap2\n pop\n /* \"#utility.yul\":1046:1163 */\n pop\n /* \"#utility.yul\":841:1170 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1176:1294 */\n tag_62:\n /* \"#utility.yul\":1263:1287 */\n tag_80\n /* \"#utility.yul\":1281:1286 */\n dup2\n /* \"#utility.yul\":1263:1287 */\n tag_59\n jump\t// in\n tag_80:\n /* \"#utility.yul\":1258:1261 */\n dup3\n /* \"#utility.yul\":1251:1288 */\n mstore\n /* \"#utility.yul\":1176:1294 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1300:1522 */\n tag_15:\n /* \"#utility.yul\":1393:1397 */\n 0x00\n /* \"#utility.yul\":1431:1433 */\n 0x20\n /* \"#utility.yul\":1420:1429 */\n dup3\n /* \"#utility.yul\":1416:1434 */\n add\n /* \"#utility.yul\":1408:1434 */\n swap1\n pop\n /* \"#utility.yul\":1444:1515 */\n tag_82\n /* \"#utility.yul\":1512:1513 */\n 0x00\n /* \"#utility.yul\":1501:1510 */\n dup4\n /* \"#utility.yul\":1497:1514 */\n add\n /* \"#utility.yul\":1488:1494 */\n dup5\n /* \"#utility.yul\":1444:1515 */\n tag_62\n jump\t// in\n tag_82:\n /* \"#utility.yul\":1300:1522 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122076177e7ce150633048a9281e7416c5666bbb6571a7ad384cef63bb017fd3727a64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": { + "@_1168": { + "entryPoint": null, + "id": 1168, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_1711": { + "entryPoint": null, + "id": 1711, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setImplementation_1759": { + "entryPoint": 393, + "id": 1759, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_transferOwnership_1264": { + "entryPoint": 200, + "id": 1264, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 692, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address_fromMemory": { + "entryPoint": 712, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 774, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 789, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 653, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 622, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 618, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 670, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1707:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:40", + "type": "" + } + ], + "src": "334:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:40", + "type": "" + } + ], + "src": "466:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:40" + }, + "nodeType": "YulIf", + "src": "621:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:40", + "type": "" + } + ], + "src": "568:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "769:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:40" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:40", + "type": "" + } + ], + "src": "696:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "939:413:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "985:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "987:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "987:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "987:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "960:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "969:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "956:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "956:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "981:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "952:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "952:32:40" + }, + "nodeType": "YulIf", + "src": "949:119:40" + }, + { + "nodeType": "YulBlock", + "src": "1078:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1093:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1107:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1097:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1122:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1168:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1179:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1164:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1164:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1188:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1132:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "1132:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1122:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "1216:129:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1231:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1245:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1235:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1261:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1307:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1318:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1303:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1303:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1327:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1271:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "1271:64:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1261:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "901:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "912:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "924:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "932:6:40", + "type": "" + } + ], + "src": "845:507:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1423:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1440:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1463:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1445:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "1445:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1433:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1433:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1433:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1411:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1418:3:40", + "type": "" + } + ], + "src": "1358:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1580:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1590:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1602:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1613:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1598:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1598:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1590:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1670:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1683:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1694:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1679:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1679:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "1626:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "1626:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1626:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1552:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1564:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1575:4:40", + "type": "" + } + ], + "src": "1482:222:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561000f575f80fd5b50604051610823380380610823833981810160405281019061003191906102c8565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610315565b60405180910390fd5b6100b1816100c860201b60201c565b506100c18261018960201b60201c565b505061032e565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036101e457806040517f847ac5640000000000000000000000000000000000000000000000000000000081526004016101db9190610315565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102978261026e565b9050919050565b6102a78161028d565b81146102b1575f80fd5b50565b5f815190506102c28161029e565b92915050565b5f80604083850312156102de576102dd61026a565b5b5f6102eb858286016102b4565b92505060206102fc858286016102b4565b9150509250929050565b61030f8161028d565b82525050565b5f6020820190506103285f830184610306565b92915050565b6104e88061033b5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b14610075578063715018a6146100935780638da5cb5b1461009d578063f2fde38b146100bb575b5f80fd5b610073600480360381019061006e919061045f565b6100d7565b005b61007d6100eb565b60405161008a9190610499565b60405180910390f35b61009b610113565b005b6100a5610126565b6040516100b29190610499565b60405180910390f35b6100d560048036038101906100d0919061045f565b61014d565b005b6100df6101d1565b6100e881610258565b50565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61011b6101d1565b6101245f610339565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101556101d1565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101c5575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101bc9190610499565b60405180910390fd5b6101ce81610339565b50565b6101d96103fa565b73ffffffffffffffffffffffffffffffffffffffff166101f7610126565b73ffffffffffffffffffffffffffffffffffffffff16146102565761021a6103fa565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161024d9190610499565b60405180910390fd5b565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036102b357806040517f847ac5640000000000000000000000000000000000000000000000000000000081526004016102aa9190610499565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61042e82610405565b9050919050565b61043e81610424565b8114610448575f80fd5b50565b5f8135905061045981610435565b92915050565b5f6020828403121561047457610473610401565b5b5f6104818482850161044b565b91505092915050565b61049381610424565b82525050565b5f6020820190506104ac5f83018461048a565b9291505056fea264697066735822122076177e7ce150633048a9281e7416c5666bbb6571a7ad384cef63bb017fd3727a64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x823 CODESIZE SUB DUP1 PUSH2 0x823 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x31 SWAP2 SWAP1 PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA2 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x99 SWAP2 SWAP1 PUSH2 0x315 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB1 DUP2 PUSH2 0xC8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0xC1 DUP3 PUSH2 0x189 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP PUSH2 0x32E JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x1E4 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x847AC56400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DB SWAP2 SWAP1 PUSH2 0x315 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x297 DUP3 PUSH2 0x26E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A7 DUP2 PUSH2 0x28D JUMP JUMPDEST DUP2 EQ PUSH2 0x2B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x2C2 DUP2 PUSH2 0x29E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2DE JUMPI PUSH2 0x2DD PUSH2 0x26A JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2EB DUP6 DUP3 DUP7 ADD PUSH2 0x2B4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FC DUP6 DUP3 DUP7 ADD PUSH2 0x2B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x30F DUP2 PUSH2 0x28D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x328 PUSH0 DUP4 ADD DUP5 PUSH2 0x306 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4E8 DUP1 PUSH2 0x33B PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x59 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x9D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xBB JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7D PUSH2 0xEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH2 0x113 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH2 0x126 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB2 SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDF PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0xE8 DUP2 PUSH2 0x258 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x124 PUSH0 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x155 PUSH2 0x1D1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C5 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CE DUP2 PUSH2 0x339 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x3FA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1F7 PUSH2 0x126 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x256 JUMPI PUSH2 0x21A PUSH2 0x3FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x2B3 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x847AC56400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AA SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x42E DUP3 PUSH2 0x405 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x43E DUP2 PUSH2 0x424 JUMP JUMPDEST DUP2 EQ PUSH2 0x448 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x459 DUP2 PUSH2 0x435 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x474 JUMPI PUSH2 0x473 PUSH2 0x401 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x481 DUP5 DUP3 DUP6 ADD PUSH2 0x44B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x493 DUP2 PUSH2 0x424 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4AC PUSH0 DUP4 ADD DUP5 PUSH2 0x48A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0x177E7CE150633048A9281E7416C5666BBB6571A7AD384C 0xEF PUSH4 0xBB017FD3 PUSH19 0x7A64736F6C6343000814003300000000000000 ", + "sourceMap": "555:1663:12:-:0;;;1059:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1126:12;1297:1:7;1273:26;;:12;:26;;;1269:95;;1350:1;1322:31;;;;;;;;;;;:::i;:::-;;;;;;;;1269:95;1373:32;1392:12;1373:18;;;:32;;:::i;:::-;1225:187;1150:35:12::1;1169:15;1150:18;;;:35;;:::i;:::-;1059:133:::0;;555:1663;;2912:187:7;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;1932:284:12:-;2042:1;2009:17;:29;;;:34;2005:118;;2094:17;2066:46;;;;;;;;;;;:::i;:::-;;;;;;;;2005:118;2150:17;2132:15;;:35;;;;;;;;;;;;;;;;;;2191:17;2182:27;;;;;;;;;;;;1932:284;:::o;88:117:40:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:507::-;924:6;932;981:2;969:9;960:7;956:23;952:32;949:119;;;987:79;;:::i;:::-;949:119;1107:1;1132:64;1188:7;1179:6;1168:9;1164:22;1132:64;:::i;:::-;1122:74;;1078:128;1245:2;1271:64;1327:7;1318:6;1307:9;1303:22;1271:64;:::i;:::-;1261:74;;1216:129;845:507;;;;;:::o;1358:118::-;1445:24;1463:5;1445:24;:::i;:::-;1440:3;1433:37;1358:118;;:::o;1482:222::-;1575:4;1613:2;1602:9;1598:18;1590:26;;1626:71;1694:1;1683:9;1679:17;1670:6;1626:71;:::i;:::-;1482:222;;;;:::o;555:1663:12:-;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_checkOwner_1202": { + "entryPoint": 465, + "id": 1202, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_msgSender_2103": { + "entryPoint": 1018, + "id": 2103, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_setImplementation_1759": { + "entryPoint": 600, + "id": 1759, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_transferOwnership_1264": { + "entryPoint": 825, + "id": 1264, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@implementation_1720": { + "entryPoint": 235, + "id": 1720, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@owner_1185": { + "entryPoint": 294, + "id": 1185, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@renounceOwnership_1216": { + "entryPoint": 275, + "id": 1216, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@transferOwnership_1244": { + "entryPoint": 333, + "id": 1244, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@upgradeTo_1733": { + "entryPoint": 215, + "id": 1733, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_t_address": { + "entryPoint": 1099, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 1119, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 1162, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 1177, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 1060, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 1029, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 1025, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 1077, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1525:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:40", + "type": "" + } + ], + "src": "334:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:40", + "type": "" + } + ], + "src": "466:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:40" + }, + "nodeType": "YulIf", + "src": "621:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:40", + "type": "" + } + ], + "src": "568:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "748:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "758:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "780:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "767:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "767:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "758:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "823:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "796:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "796:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "796:33:40" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "726:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "734:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "742:5:40", + "type": "" + } + ], + "src": "696:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "907:263:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "953:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "955:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "955:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "955:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "928:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "937:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "924:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "924:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "949:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "920:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "920:32:40" + }, + "nodeType": "YulIf", + "src": "917:119:40" + }, + { + "nodeType": "YulBlock", + "src": "1046:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1061:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1075:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1065:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1090:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1125:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1136:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1121:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1121:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1145:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1100:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "1100:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1090:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "877:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "888:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "900:6:40", + "type": "" + } + ], + "src": "841:329:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1241:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1258:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1281:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1263:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "1263:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1251:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1251:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1251:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1229:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1236:3:40", + "type": "" + } + ], + "src": "1176:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1398:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1408:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1420:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1431:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1416:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1416:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1408:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1488:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1501:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1512:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1497:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1497:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "1444:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "1444:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1444:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1370:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1382:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1393:4:40", + "type": "" + } + ], + "src": "1300:222:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561000f575f80fd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b14610075578063715018a6146100935780638da5cb5b1461009d578063f2fde38b146100bb575b5f80fd5b610073600480360381019061006e919061045f565b6100d7565b005b61007d6100eb565b60405161008a9190610499565b60405180910390f35b61009b610113565b005b6100a5610126565b6040516100b29190610499565b60405180910390f35b6100d560048036038101906100d0919061045f565b61014d565b005b6100df6101d1565b6100e881610258565b50565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61011b6101d1565b6101245f610339565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101556101d1565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101c5575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101bc9190610499565b60405180910390fd5b6101ce81610339565b50565b6101d96103fa565b73ffffffffffffffffffffffffffffffffffffffff166101f7610126565b73ffffffffffffffffffffffffffffffffffffffff16146102565761021a6103fa565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161024d9190610499565b60405180910390fd5b565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036102b357806040517f847ac5640000000000000000000000000000000000000000000000000000000081526004016102aa9190610499565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61042e82610405565b9050919050565b61043e81610424565b8114610448575f80fd5b50565b5f8135905061045981610435565b92915050565b5f6020828403121561047457610473610401565b5b5f6104818482850161044b565b91505092915050565b61049381610424565b82525050565b5f6020820190506104ac5f83018461048a565b9291505056fea264697066735822122076177e7ce150633048a9281e7416c5666bbb6571a7ad384cef63bb017fd3727a64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x59 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x9D JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xBB JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7D PUSH2 0xEB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH2 0x113 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH2 0x126 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB2 SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD0 SWAP2 SWAP1 PUSH2 0x45F JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDF PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0xE8 DUP2 PUSH2 0x258 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x11B PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x124 PUSH0 PUSH2 0x339 JUMP JUMPDEST JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x155 PUSH2 0x1D1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C5 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1CE DUP2 PUSH2 0x339 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x3FA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1F7 PUSH2 0x126 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x256 JUMPI PUSH2 0x21A PUSH2 0x3FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x2B3 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x847AC56400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AA SWAP2 SWAP1 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x42E DUP3 PUSH2 0x405 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x43E DUP2 PUSH2 0x424 JUMP JUMPDEST DUP2 EQ PUSH2 0x448 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x459 DUP2 PUSH2 0x435 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x474 JUMPI PUSH2 0x473 PUSH2 0x401 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x481 DUP5 DUP3 DUP6 ADD PUSH2 0x44B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x493 DUP2 PUSH2 0x424 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4AC PUSH0 DUP4 ADD DUP5 PUSH2 0x48A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0x177E7CE150633048A9281E7416C5666BBB6571A7AD384C 0xEF PUSH4 0xBB017FD3 PUSH19 0x7A64736F6C6343000814003300000000000000 ", + "sourceMap": "555:1663:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1632:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1270:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:101:7;;;:::i;:::-;;1638:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2543:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1632:125:12;1531:13:7;:11;:13::i;:::-;1713:37:12::1;1732:17;1713:18;:37::i;:::-;1632:125:::0;:::o;1270:103::-;1325:7;1351:15;;;;;;;;;;;1344:22;;1270:103;:::o;2293:101:7:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1638:85::-;1684:7;1710:6;;;;;;;;;;;1703:13;;1638:85;:::o;2543:215::-;1531:13;:11;:13::i;:::-;2647:1:::1;2627:22;;:8;:22;;::::0;2623:91:::1;;2700:1;2672:31;;;;;;;;;;;:::i;:::-;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1866:12;:10;:12::i;:::-;1855:23;;:7;:5;:7::i;:::-;:23;;;1851:101;;1928:12;:10;:12::i;:::-;1901:40;;;;;;;;;;;:::i;:::-;;;;;;;;1851:101;1796:162::o;1932:284:12:-;2042:1;2009:17;:29;;;:34;2005:118;;2094:17;2066:46;;;;;;;;;;;:::i;:::-;;;;;;;;2005:118;2150:17;2132:15;;:35;;;;;;;;;;;;;;;;;;2191:17;2182:27;;;;;;;;;;;;1932:284;:::o;2912:187:7:-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;656:96:15:-;709:7;735:10;728:17;;656:96;:::o;88:117:40:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:118::-;1263:24;1281:5;1263:24;:::i;:::-;1258:3;1251:37;1176:118;;:::o;1300:222::-;1393:4;1431:2;1420:9;1416:18;1408:26;;1444:71;1512:1;1501:9;1497:17;1488:6;1444:71;:::i;:::-;1300:222;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "251200", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "implementation()": "2515", + "owner()": "2559", + "renounceOwnership()": "infinite", + "transferOwnership(address)": "infinite", + "upgradeTo(address)": "infinite" + }, + "internal": { + "_setImplementation(address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "80" + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 555, + "end": 2218, + "name": "MSTORE", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "CALLVALUE", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "DUP1", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "ISZERO", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSH [tag]", + "source": 12, + "value": "1" + }, + { + "begin": 1059, + "end": 1192, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 1059, + "end": 1192, + "name": "DUP1", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "REVERT", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "tag", + "source": 12, + "value": "1" + }, + { + "begin": 1059, + "end": 1192, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "POP", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 1059, + "end": 1192, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSHSIZE", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "CODESIZE", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "SUB", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "DUP1", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSHSIZE", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "DUP4", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "CODECOPY", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "DUP2", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "DUP2", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "ADD", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 1059, + "end": 1192, + "name": "MSTORE", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "DUP2", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "ADD", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSH [tag]", + "source": 12, + "value": "2" + }, + { + "begin": 1059, + "end": 1192, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "PUSH [tag]", + "source": 12, + "value": "3" + }, + { + "begin": 1059, + "end": 1192, + "jumpType": "[in]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "tag", + "source": 12, + "value": "2" + }, + { + "begin": 1059, + "end": 1192, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1126, + "end": 1138, + "name": "DUP1", + "source": 12 + }, + { + "begin": 1297, + "end": 1298, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 1273, + "end": 1299, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1273, + "end": 1299, + "name": "AND", + "source": 7 + }, + { + "begin": 1273, + "end": 1285, + "name": "DUP2", + "source": 7 + }, + { + "begin": 1273, + "end": 1299, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1273, + "end": 1299, + "name": "AND", + "source": 7 + }, + { + "begin": 1273, + "end": 1299, + "name": "SUB", + "source": 7 + }, + { + "begin": 1269, + "end": 1364, + "name": "PUSH [tag]", + "source": 7, + "value": "7" + }, + { + "begin": 1269, + "end": 1364, + "name": "JUMPI", + "source": 7 + }, + { + "begin": 1350, + "end": 1351, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 1322, + "end": 1353, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1322, + "end": 1353, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "PUSH", + "source": 7, + "value": "1E4FBDF700000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1322, + "end": 1353, + "name": "DUP2", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "MSTORE", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "PUSH", + "source": 7, + "value": "4" + }, + { + "begin": 1322, + "end": 1353, + "name": "ADD", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "PUSH [tag]", + "source": 7, + "value": "8" + }, + { + "begin": 1322, + "end": 1353, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "PUSH [tag]", + "source": 7, + "value": "9" + }, + { + "begin": 1322, + "end": 1353, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "tag", + "source": 7, + "value": "8" + }, + { + "begin": 1322, + "end": 1353, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1322, + "end": 1353, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "DUP1", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "SUB", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1322, + "end": 1353, + "name": "REVERT", + "source": 7 + }, + { + "begin": 1269, + "end": 1364, + "name": "tag", + "source": 7, + "value": "7" + }, + { + "begin": 1269, + "end": 1364, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1373, + "end": 1405, + "name": "PUSH [tag]", + "source": 7, + "value": "10" + }, + { + "begin": 1392, + "end": 1404, + "name": "DUP2", + "source": 7 + }, + { + "begin": 1373, + "end": 1391, + "name": "PUSH [tag]", + "source": 7, + "value": "11" + }, + { + "begin": 1373, + "end": 1391, + "name": "PUSH", + "source": 7, + "value": "20" + }, + { + "begin": 1373, + "end": 1391, + "name": "SHL", + "source": 7 + }, + { + "begin": 1373, + "end": 1405, + "name": "PUSH", + "source": 7, + "value": "20" + }, + { + "begin": 1373, + "end": 1405, + "name": "SHR", + "source": 7 + }, + { + "begin": 1373, + "end": 1405, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1373, + "end": 1405, + "name": "tag", + "source": 7, + "value": "10" + }, + { + "begin": 1373, + "end": 1405, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1225, + "end": 1412, + "name": "POP", + "source": 7 + }, + { + "begin": 1150, + "end": 1185, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 12, + "value": "13" + }, + { + "begin": 1169, + "end": 1184, + "modifierDepth": 1, + "name": "DUP3", + "source": 12 + }, + { + "begin": 1150, + "end": 1168, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 12, + "value": "14" + }, + { + "begin": 1150, + "end": 1168, + "modifierDepth": 1, + "name": "PUSH", + "source": 12, + "value": "20" + }, + { + "begin": 1150, + "end": 1168, + "modifierDepth": 1, + "name": "SHL", + "source": 12 + }, + { + "begin": 1150, + "end": 1185, + "modifierDepth": 1, + "name": "PUSH", + "source": 12, + "value": "20" + }, + { + "begin": 1150, + "end": 1185, + "modifierDepth": 1, + "name": "SHR", + "source": 12 + }, + { + "begin": 1150, + "end": 1185, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 12 + }, + { + "begin": 1150, + "end": 1185, + "modifierDepth": 1, + "name": "tag", + "source": 12, + "value": "13" + }, + { + "begin": 1150, + "end": 1185, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "POP", + "source": 12 + }, + { + "begin": 1059, + "end": 1192, + "name": "POP", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "15" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMP", + "source": 12 + }, + { + "begin": 2912, + "end": 3099, + "name": "tag", + "source": 7, + "value": "11" + }, + { + "begin": 2912, + "end": 3099, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2985, + "end": 3001, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 3004, + "end": 3010, + "name": "DUP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 3004, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "SLOAD", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "PUSH", + "source": 7, + "value": "100" + }, + { + "begin": 3004, + "end": 3010, + "name": "EXP", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "DIV", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3004, + "end": 3010, + "name": "AND", + "source": 7 + }, + { + "begin": 2985, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2985, + "end": 3010, + "name": "POP", + "source": 7 + }, + { + "begin": 3029, + "end": 3037, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3020, + "end": 3026, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 3020, + "end": 3026, + "name": "DUP1", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "PUSH", + "source": 7, + "value": "100" + }, + { + "begin": 3020, + "end": 3037, + "name": "EXP", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SLOAD", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3020, + "end": 3037, + "name": "MUL", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "NOT", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "AND", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "DUP4", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3020, + "end": 3037, + "name": "AND", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "MUL", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "OR", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SSTORE", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "POP", + "source": 7 + }, + { + "begin": 3083, + "end": 3091, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3052, + "end": 3092, + "name": "AND", + "source": 7 + }, + { + "begin": 3073, + "end": 3081, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3052, + "end": 3092, + "name": "AND", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0" + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 3052, + "end": 3092, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 3052, + "end": 3092, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "DUP1", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "SUB", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "LOG3", + "source": 7 + }, + { + "begin": 2975, + "end": 3099, + "name": "POP", + "source": 7 + }, + { + "begin": 2912, + "end": 3099, + "name": "POP", + "source": 7 + }, + { + "begin": 2912, + "end": 3099, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1932, + "end": 2216, + "name": "tag", + "source": 12, + "value": "14" + }, + { + "begin": 1932, + "end": 2216, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 2042, + "end": 2043, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 2009, + "end": 2026, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2009, + "end": 2038, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2009, + "end": 2038, + "name": "AND", + "source": 12 + }, + { + "begin": 2009, + "end": 2038, + "name": "EXTCODESIZE", + "source": 12 + }, + { + "begin": 2009, + "end": 2043, + "name": "SUB", + "source": 12 + }, + { + "begin": 2005, + "end": 2123, + "name": "PUSH [tag]", + "source": 12, + "value": "18" + }, + { + "begin": 2005, + "end": 2123, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 2094, + "end": 2111, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2066, + "end": 2112, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "847AC56400000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2066, + "end": 2112, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "MSTORE", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "4" + }, + { + "begin": 2066, + "end": 2112, + "name": "ADD", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH [tag]", + "source": 12, + "value": "19" + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH [tag]", + "source": 12, + "value": "9" + }, + { + "begin": 2066, + "end": 2112, + "jumpType": "[in]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "tag", + "source": 12, + "value": "19" + }, + { + "begin": 2066, + "end": 2112, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2066, + "end": 2112, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SUB", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "REVERT", + "source": 12 + }, + { + "begin": 2005, + "end": 2123, + "name": "tag", + "source": 12, + "value": "18" + }, + { + "begin": 2005, + "end": 2123, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 2150, + "end": 2167, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2132, + "end": 2147, + "name": "PUSH", + "source": 12, + "value": "1" + }, + { + "begin": 2132, + "end": 2147, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 2132, + "end": 2167, + "name": "PUSH", + "source": 12, + "value": "100" + }, + { + "begin": 2132, + "end": 2167, + "name": "EXP", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SLOAD", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2132, + "end": 2167, + "name": "MUL", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "NOT", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "AND", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "DUP4", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2132, + "end": 2167, + "name": "AND", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "MUL", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "OR", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SSTORE", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "POP", + "source": 12 + }, + { + "begin": 2191, + "end": 2208, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2182, + "end": 2209, + "name": "AND", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "BC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B" + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2182, + "end": 2209, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2182, + "end": 2209, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "SUB", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "LOG2", + "source": 12 + }, + { + "begin": 1932, + "end": 2216, + "name": "POP", + "source": 12 + }, + { + "begin": 1932, + "end": 2216, + "jumpType": "[out]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 40, + "value": "21" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 40 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 40, + "value": "23" + }, + { + "begin": 334, + "end": 460, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 404, + "end": 409, + "name": "DUP3", + "source": 40 + }, + { + "begin": 400, + "end": 454, + "name": "AND", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 40, + "value": "24" + }, + { + "begin": 466, + "end": 562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "34" + }, + { + "begin": 550, + "end": 555, + "name": "DUP3", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "23" + }, + { + "begin": 532, + "end": 556, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 40, + "value": "34" + }, + { + "begin": 532, + "end": 556, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "tag", + "source": 40, + "value": "25" + }, + { + "begin": 568, + "end": 690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "36" + }, + { + "begin": 659, + "end": 664, + "name": "DUP2", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "24" + }, + { + "begin": 641, + "end": 665, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "tag", + "source": 40, + "value": "36" + }, + { + "begin": 641, + "end": 665, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 634, + "end": 639, + "name": "DUP2", + "source": 40 + }, + { + "begin": 631, + "end": 666, + "name": "EQ", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "PUSH [tag]", + "source": 40, + "value": "37" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 680, + "end": 681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 677, + "end": 678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 670, + "end": 682, + "name": "REVERT", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "tag", + "source": 40, + "value": "37" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "POP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "tag", + "source": 40, + "value": "26" + }, + { + "begin": 696, + "end": 839, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 753, + "end": 758, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 784, + "end": 790, + "name": "DUP2", + "source": 40 + }, + { + "begin": 778, + "end": 791, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "POP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "39" + }, + { + "begin": 827, + "end": 832, + "name": "DUP2", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "25" + }, + { + "begin": 800, + "end": 833, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "tag", + "source": 40, + "value": "39" + }, + { + "begin": 800, + "end": 833, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 845, + "end": 1352, + "name": "tag", + "source": 40, + "value": "3" + }, + { + "begin": 845, + "end": 1352, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 924, + "end": 930, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 932, + "end": 938, + "name": "DUP1", + "source": 40 + }, + { + "begin": 981, + "end": 983, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 969, + "end": 978, + "name": "DUP4", + "source": 40 + }, + { + "begin": 960, + "end": 967, + "name": "DUP6", + "source": 40 + }, + { + "begin": 956, + "end": 979, + "name": "SUB", + "source": 40 + }, + { + "begin": 952, + "end": 984, + "name": "SLT", + "source": 40 + }, + { + "begin": 949, + "end": 1068, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 949, + "end": 1068, + "name": "PUSH [tag]", + "source": 40, + "value": "41" + }, + { + "begin": 949, + "end": 1068, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 987, + "end": 1066, + "name": "PUSH [tag]", + "source": 40, + "value": "42" + }, + { + "begin": 987, + "end": 1066, + "name": "PUSH [tag]", + "source": 40, + "value": "21" + }, + { + "begin": 987, + "end": 1066, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 987, + "end": 1066, + "name": "tag", + "source": 40, + "value": "42" + }, + { + "begin": 987, + "end": 1066, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 949, + "end": 1068, + "name": "tag", + "source": 40, + "value": "41" + }, + { + "begin": 949, + "end": 1068, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1107, + "end": 1108, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1132, + "end": 1196, + "name": "PUSH [tag]", + "source": 40, + "value": "43" + }, + { + "begin": 1188, + "end": 1195, + "name": "DUP6", + "source": 40 + }, + { + "begin": 1179, + "end": 1185, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1168, + "end": 1177, + "name": "DUP7", + "source": 40 + }, + { + "begin": 1164, + "end": 1186, + "name": "ADD", + "source": 40 + }, + { + "begin": 1132, + "end": 1196, + "name": "PUSH [tag]", + "source": 40, + "value": "26" + }, + { + "begin": 1132, + "end": 1196, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1132, + "end": 1196, + "name": "tag", + "source": 40, + "value": "43" + }, + { + "begin": 1132, + "end": 1196, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1122, + "end": 1196, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1122, + "end": 1196, + "name": "POP", + "source": 40 + }, + { + "begin": 1078, + "end": 1206, + "name": "POP", + "source": 40 + }, + { + "begin": 1245, + "end": 1247, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1271, + "end": 1335, + "name": "PUSH [tag]", + "source": 40, + "value": "44" + }, + { + "begin": 1327, + "end": 1334, + "name": "DUP6", + "source": 40 + }, + { + "begin": 1318, + "end": 1324, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1307, + "end": 1316, + "name": "DUP7", + "source": 40 + }, + { + "begin": 1303, + "end": 1325, + "name": "ADD", + "source": 40 + }, + { + "begin": 1271, + "end": 1335, + "name": "PUSH [tag]", + "source": 40, + "value": "26" + }, + { + "begin": 1271, + "end": 1335, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1271, + "end": 1335, + "name": "tag", + "source": 40, + "value": "44" + }, + { + "begin": 1271, + "end": 1335, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1261, + "end": 1335, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1261, + "end": 1335, + "name": "POP", + "source": 40 + }, + { + "begin": 1216, + "end": 1345, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 1352, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 845, + "end": 1352, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 1352, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 845, + "end": 1352, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 845, + "end": 1352, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 1352, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1358, + "end": 1476, + "name": "tag", + "source": 40, + "value": "27" + }, + { + "begin": 1358, + "end": 1476, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1445, + "end": 1469, + "name": "PUSH [tag]", + "source": 40, + "value": "46" + }, + { + "begin": 1463, + "end": 1468, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1445, + "end": 1469, + "name": "PUSH [tag]", + "source": 40, + "value": "24" + }, + { + "begin": 1445, + "end": 1469, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1445, + "end": 1469, + "name": "tag", + "source": 40, + "value": "46" + }, + { + "begin": 1445, + "end": 1469, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1440, + "end": 1443, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1433, + "end": 1470, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1358, + "end": 1476, + "name": "POP", + "source": 40 + }, + { + "begin": 1358, + "end": 1476, + "name": "POP", + "source": 40 + }, + { + "begin": 1358, + "end": 1476, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1482, + "end": 1704, + "name": "tag", + "source": 40, + "value": "9" + }, + { + "begin": 1482, + "end": 1704, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1575, + "end": 1579, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1613, + "end": 1615, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1602, + "end": 1611, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1598, + "end": 1616, + "name": "ADD", + "source": 40 + }, + { + "begin": 1590, + "end": 1616, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1590, + "end": 1616, + "name": "POP", + "source": 40 + }, + { + "begin": 1626, + "end": 1697, + "name": "PUSH [tag]", + "source": 40, + "value": "48" + }, + { + "begin": 1694, + "end": 1695, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1683, + "end": 1692, + "name": "DUP4", + "source": 40 + }, + { + "begin": 1679, + "end": 1696, + "name": "ADD", + "source": 40 + }, + { + "begin": 1670, + "end": 1676, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1626, + "end": 1697, + "name": "PUSH [tag]", + "source": 40, + "value": "27" + }, + { + "begin": 1626, + "end": 1697, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1626, + "end": 1697, + "name": "tag", + "source": 40, + "value": "48" + }, + { + "begin": 1626, + "end": 1697, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1482, + "end": 1704, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1482, + "end": 1704, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1482, + "end": 1704, + "name": "POP", + "source": 40 + }, + { + "begin": 1482, + "end": 1704, + "name": "POP", + "source": 40 + }, + { + "begin": 1482, + "end": 1704, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 555, + "end": 2218, + "name": "tag", + "source": 12, + "value": "15" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH #[$]", + "source": 12, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [$]", + "source": 12, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 555, + "end": 2218, + "name": "CODECOPY", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 555, + "end": 2218, + "name": "RETURN", + "source": 12 + } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122076177e7ce150633048a9281e7416c5666bbb6571a7ad384cef63bb017fd3727a64736f6c63430008140033", + ".code": [ + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "80" + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 555, + "end": 2218, + "name": "MSTORE", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "CALLVALUE", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "ISZERO", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "1" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "REVERT", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "tag", + "source": 12, + "value": "1" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "POP", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "4" + }, + { + "begin": 555, + "end": 2218, + "name": "CALLDATASIZE", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "LT", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "2" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 555, + "end": 2218, + "name": "CALLDATALOAD", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "E0" + }, + { + "begin": 555, + "end": 2218, + "name": "SHR", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "3659CFE6" + }, + { + "begin": 555, + "end": 2218, + "name": "EQ", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "3" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "5C60DA1B" + }, + { + "begin": 555, + "end": 2218, + "name": "EQ", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "4" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "715018A6" + }, + { + "begin": 555, + "end": 2218, + "name": "EQ", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "5" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "8DA5CB5B" + }, + { + "begin": 555, + "end": 2218, + "name": "EQ", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "6" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "F2FDE38B" + }, + { + "begin": 555, + "end": 2218, + "name": "EQ", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH [tag]", + "source": 12, + "value": "7" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "tag", + "source": 12, + "value": "2" + }, + { + "begin": 555, + "end": 2218, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 555, + "end": 2218, + "name": "DUP1", + "source": 12 + }, + { + "begin": 555, + "end": 2218, + "name": "REVERT", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "tag", + "source": 12, + "value": "3" + }, + { + "begin": 1632, + "end": 1757, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "PUSH [tag]", + "source": 12, + "value": "8" + }, + { + "begin": 1632, + "end": 1757, + "name": "PUSH", + "source": 12, + "value": "4" + }, + { + "begin": 1632, + "end": 1757, + "name": "DUP1", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "CALLDATASIZE", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "SUB", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "DUP2", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "ADD", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "PUSH [tag]", + "source": 12, + "value": "9" + }, + { + "begin": 1632, + "end": 1757, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "PUSH [tag]", + "source": 12, + "value": "10" + }, + { + "begin": 1632, + "end": 1757, + "jumpType": "[in]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "tag", + "source": 12, + "value": "9" + }, + { + "begin": 1632, + "end": 1757, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "PUSH [tag]", + "source": 12, + "value": "11" + }, + { + "begin": 1632, + "end": 1757, + "jumpType": "[in]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "tag", + "source": 12, + "value": "8" + }, + { + "begin": 1632, + "end": 1757, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "STOP", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "tag", + "source": 12, + "value": "4" + }, + { + "begin": 1270, + "end": 1373, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "PUSH [tag]", + "source": 12, + "value": "12" + }, + { + "begin": 1270, + "end": 1373, + "name": "PUSH [tag]", + "source": 12, + "value": "13" + }, + { + "begin": 1270, + "end": 1373, + "jumpType": "[in]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "tag", + "source": 12, + "value": "12" + }, + { + "begin": 1270, + "end": 1373, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 1270, + "end": 1373, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "PUSH [tag]", + "source": 12, + "value": "14" + }, + { + "begin": 1270, + "end": 1373, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "PUSH [tag]", + "source": 12, + "value": "15" + }, + { + "begin": 1270, + "end": 1373, + "jumpType": "[in]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "tag", + "source": 12, + "value": "14" + }, + { + "begin": 1270, + "end": 1373, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 1270, + "end": 1373, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "DUP1", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "SUB", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "RETURN", + "source": 12 + }, + { + "begin": 2293, + "end": 2394, + "name": "tag", + "source": 7, + "value": "5" + }, + { + "begin": 2293, + "end": 2394, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2293, + "end": 2394, + "name": "PUSH [tag]", + "source": 7, + "value": "16" + }, + { + "begin": 2293, + "end": 2394, + "name": "PUSH [tag]", + "source": 7, + "value": "17" + }, + { + "begin": 2293, + "end": 2394, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 2293, + "end": 2394, + "name": "tag", + "source": 7, + "value": "16" + }, + { + "begin": 2293, + "end": 2394, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2293, + "end": 2394, + "name": "STOP", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "tag", + "source": 7, + "value": "6" + }, + { + "begin": 1638, + "end": 1723, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "PUSH [tag]", + "source": 7, + "value": "18" + }, + { + "begin": 1638, + "end": 1723, + "name": "PUSH [tag]", + "source": 7, + "value": "19" + }, + { + "begin": 1638, + "end": 1723, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "tag", + "source": 7, + "value": "18" + }, + { + "begin": 1638, + "end": 1723, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1638, + "end": 1723, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "PUSH [tag]", + "source": 7, + "value": "20" + }, + { + "begin": 1638, + "end": 1723, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "PUSH [tag]", + "source": 7, + "value": "15" + }, + { + "begin": 1638, + "end": 1723, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "tag", + "source": 7, + "value": "20" + }, + { + "begin": 1638, + "end": 1723, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1638, + "end": 1723, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "DUP1", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "SUB", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "RETURN", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "tag", + "source": 7, + "value": "7" + }, + { + "begin": 2543, + "end": 2758, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "PUSH [tag]", + "source": 7, + "value": "21" + }, + { + "begin": 2543, + "end": 2758, + "name": "PUSH", + "source": 7, + "value": "4" + }, + { + "begin": 2543, + "end": 2758, + "name": "DUP1", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "CALLDATASIZE", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "SUB", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "DUP2", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "ADD", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "PUSH [tag]", + "source": 7, + "value": "22" + }, + { + "begin": 2543, + "end": 2758, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "PUSH [tag]", + "source": 7, + "value": "10" + }, + { + "begin": 2543, + "end": 2758, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "tag", + "source": 7, + "value": "22" + }, + { + "begin": 2543, + "end": 2758, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "PUSH [tag]", + "source": 7, + "value": "23" + }, + { + "begin": 2543, + "end": 2758, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "tag", + "source": 7, + "value": "21" + }, + { + "begin": 2543, + "end": 2758, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "STOP", + "source": 7 + }, + { + "begin": 1632, + "end": 1757, + "name": "tag", + "source": 12, + "value": "11" + }, + { + "begin": 1632, + "end": 1757, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1531, + "end": 1544, + "name": "PUSH [tag]", + "source": 7, + "value": "25" + }, + { + "begin": 1531, + "end": 1542, + "name": "PUSH [tag]", + "source": 7, + "value": "26" + }, + { + "begin": 1531, + "end": 1544, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1531, + "end": 1544, + "name": "tag", + "source": 7, + "value": "25" + }, + { + "begin": 1531, + "end": 1544, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1713, + "end": 1750, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 12, + "value": "28" + }, + { + "begin": 1732, + "end": 1749, + "modifierDepth": 1, + "name": "DUP2", + "source": 12 + }, + { + "begin": 1713, + "end": 1731, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 12, + "value": "29" + }, + { + "begin": 1713, + "end": 1750, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 12 + }, + { + "begin": 1713, + "end": 1750, + "modifierDepth": 1, + "name": "tag", + "source": 12, + "value": "28" + }, + { + "begin": 1713, + "end": 1750, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "name": "POP", + "source": 12 + }, + { + "begin": 1632, + "end": 1757, + "jumpType": "[out]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "tag", + "source": 12, + "value": "13" + }, + { + "begin": 1270, + "end": 1373, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 1325, + "end": 1332, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 1351, + "end": 1366, + "name": "PUSH", + "source": 12, + "value": "1" + }, + { + "begin": 1351, + "end": 1366, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 1351, + "end": 1366, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1351, + "end": 1366, + "name": "SLOAD", + "source": 12 + }, + { + "begin": 1351, + "end": 1366, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1351, + "end": 1366, + "name": "PUSH", + "source": 12, + "value": "100" + }, + { + "begin": 1351, + "end": 1366, + "name": "EXP", + "source": 12 + }, + { + "begin": 1351, + "end": 1366, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1351, + "end": 1366, + "name": "DIV", + "source": 12 + }, + { + "begin": 1351, + "end": 1366, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1351, + "end": 1366, + "name": "AND", + "source": 12 + }, + { + "begin": 1344, + "end": 1366, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1344, + "end": 1366, + "name": "POP", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 1270, + "end": 1373, + "jumpType": "[out]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 2293, + "end": 2394, + "name": "tag", + "source": 7, + "value": "17" + }, + { + "begin": 2293, + "end": 2394, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1531, + "end": 1544, + "name": "PUSH [tag]", + "source": 7, + "value": "32" + }, + { + "begin": 1531, + "end": 1542, + "name": "PUSH [tag]", + "source": 7, + "value": "26" + }, + { + "begin": 1531, + "end": 1544, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1531, + "end": 1544, + "name": "tag", + "source": 7, + "value": "32" + }, + { + "begin": 1531, + "end": 1544, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2357, + "end": 2387, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "34" + }, + { + "begin": 2384, + "end": 2385, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 2357, + "end": 2375, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "35" + }, + { + "begin": 2357, + "end": 2387, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 7 + }, + { + "begin": 2357, + "end": 2387, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "34" + }, + { + "begin": 2357, + "end": 2387, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2293, + "end": 2394, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "tag", + "source": 7, + "value": "19" + }, + { + "begin": 1638, + "end": 1723, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1684, + "end": 1691, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 1710, + "end": 1716, + "name": "DUP1", + "source": 7 + }, + { + "begin": 1710, + "end": 1716, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 1710, + "end": 1716, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1710, + "end": 1716, + "name": "SLOAD", + "source": 7 + }, + { + "begin": 1710, + "end": 1716, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1710, + "end": 1716, + "name": "PUSH", + "source": 7, + "value": "100" + }, + { + "begin": 1710, + "end": 1716, + "name": "EXP", + "source": 7 + }, + { + "begin": 1710, + "end": 1716, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1710, + "end": 1716, + "name": "DIV", + "source": 7 + }, + { + "begin": 1710, + "end": 1716, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1710, + "end": 1716, + "name": "AND", + "source": 7 + }, + { + "begin": 1703, + "end": 1716, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1703, + "end": 1716, + "name": "POP", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1638, + "end": 1723, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "tag", + "source": 7, + "value": "23" + }, + { + "begin": 2543, + "end": 2758, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1531, + "end": 1544, + "name": "PUSH [tag]", + "source": 7, + "value": "38" + }, + { + "begin": 1531, + "end": 1542, + "name": "PUSH [tag]", + "source": 7, + "value": "26" + }, + { + "begin": 1531, + "end": 1544, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1531, + "end": 1544, + "name": "tag", + "source": 7, + "value": "38" + }, + { + "begin": 1531, + "end": 1544, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2647, + "end": 2648, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 2627, + "end": 2649, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2627, + "end": 2649, + "modifierDepth": 1, + "name": "AND", + "source": 7 + }, + { + "begin": 2627, + "end": 2635, + "modifierDepth": 1, + "name": "DUP2", + "source": 7 + }, + { + "begin": 2627, + "end": 2649, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2627, + "end": 2649, + "modifierDepth": 1, + "name": "AND", + "source": 7 + }, + { + "begin": 2627, + "end": 2649, + "name": "SUB", + "source": 7 + }, + { + "begin": 2623, + "end": 2714, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "40" + }, + { + "begin": 2623, + "end": 2714, + "modifierDepth": 1, + "name": "JUMPI", + "source": 7 + }, + { + "begin": 2700, + "end": 2701, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "1E4FBDF700000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "DUP2", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "MSTORE", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "4" + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "ADD", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "41" + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "15" + }, + { + "begin": 2672, + "end": 2703, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "41" + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "DUP1", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "SUB", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2672, + "end": 2703, + "modifierDepth": 1, + "name": "REVERT", + "source": 7 + }, + { + "begin": 2623, + "end": 2714, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "40" + }, + { + "begin": 2623, + "end": 2714, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2723, + "end": 2751, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "42" + }, + { + "begin": 2742, + "end": 2750, + "modifierDepth": 1, + "name": "DUP2", + "source": 7 + }, + { + "begin": 2723, + "end": 2741, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 7, + "value": "35" + }, + { + "begin": 2723, + "end": 2751, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 7 + }, + { + "begin": 2723, + "end": 2751, + "modifierDepth": 1, + "name": "tag", + "source": 7, + "value": "42" + }, + { + "begin": 2723, + "end": 2751, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "name": "POP", + "source": 7 + }, + { + "begin": 2543, + "end": 2758, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1796, + "end": 1958, + "name": "tag", + "source": 7, + "value": "26" + }, + { + "begin": 1796, + "end": 1958, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1866, + "end": 1878, + "name": "PUSH [tag]", + "source": 7, + "value": "44" + }, + { + "begin": 1866, + "end": 1876, + "name": "PUSH [tag]", + "source": 7, + "value": "45" + }, + { + "begin": 1866, + "end": 1878, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1866, + "end": 1878, + "name": "tag", + "source": 7, + "value": "44" + }, + { + "begin": 1866, + "end": 1878, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1855, + "end": 1878, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1855, + "end": 1878, + "name": "AND", + "source": 7 + }, + { + "begin": 1855, + "end": 1862, + "name": "PUSH [tag]", + "source": 7, + "value": "46" + }, + { + "begin": 1855, + "end": 1860, + "name": "PUSH [tag]", + "source": 7, + "value": "19" + }, + { + "begin": 1855, + "end": 1862, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1855, + "end": 1862, + "name": "tag", + "source": 7, + "value": "46" + }, + { + "begin": 1855, + "end": 1862, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1855, + "end": 1878, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1855, + "end": 1878, + "name": "AND", + "source": 7 + }, + { + "begin": 1855, + "end": 1878, + "name": "EQ", + "source": 7 + }, + { + "begin": 1851, + "end": 1952, + "name": "PUSH [tag]", + "source": 7, + "value": "47" + }, + { + "begin": 1851, + "end": 1952, + "name": "JUMPI", + "source": 7 + }, + { + "begin": 1928, + "end": 1940, + "name": "PUSH [tag]", + "source": 7, + "value": "48" + }, + { + "begin": 1928, + "end": 1938, + "name": "PUSH [tag]", + "source": 7, + "value": "45" + }, + { + "begin": 1928, + "end": 1940, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1928, + "end": 1940, + "name": "tag", + "source": 7, + "value": "48" + }, + { + "begin": 1928, + "end": 1940, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1901, + "end": 1941, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "PUSH", + "source": 7, + "value": "118CDAA700000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1901, + "end": 1941, + "name": "DUP2", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "MSTORE", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "PUSH", + "source": 7, + "value": "4" + }, + { + "begin": 1901, + "end": 1941, + "name": "ADD", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "PUSH [tag]", + "source": 7, + "value": "49" + }, + { + "begin": 1901, + "end": 1941, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "PUSH [tag]", + "source": 7, + "value": "15" + }, + { + "begin": 1901, + "end": 1941, + "jumpType": "[in]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "tag", + "source": 7, + "value": "49" + }, + { + "begin": 1901, + "end": 1941, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 1901, + "end": 1941, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "DUP1", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "SUB", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 1901, + "end": 1941, + "name": "REVERT", + "source": 7 + }, + { + "begin": 1851, + "end": 1952, + "name": "tag", + "source": 7, + "value": "47" + }, + { + "begin": 1851, + "end": 1952, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 1796, + "end": 1958, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 1932, + "end": 2216, + "name": "tag", + "source": 12, + "value": "29" + }, + { + "begin": 1932, + "end": 2216, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 2042, + "end": 2043, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 2009, + "end": 2026, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2009, + "end": 2038, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2009, + "end": 2038, + "name": "AND", + "source": 12 + }, + { + "begin": 2009, + "end": 2038, + "name": "EXTCODESIZE", + "source": 12 + }, + { + "begin": 2009, + "end": 2043, + "name": "SUB", + "source": 12 + }, + { + "begin": 2005, + "end": 2123, + "name": "PUSH [tag]", + "source": 12, + "value": "51" + }, + { + "begin": 2005, + "end": 2123, + "name": "JUMPI", + "source": 12 + }, + { + "begin": 2094, + "end": 2111, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2066, + "end": 2112, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "847AC56400000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2066, + "end": 2112, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "MSTORE", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "4" + }, + { + "begin": 2066, + "end": 2112, + "name": "ADD", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH [tag]", + "source": 12, + "value": "52" + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH [tag]", + "source": 12, + "value": "15" + }, + { + "begin": 2066, + "end": 2112, + "jumpType": "[in]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "tag", + "source": 12, + "value": "52" + }, + { + "begin": 2066, + "end": 2112, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2066, + "end": 2112, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SUB", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2066, + "end": 2112, + "name": "REVERT", + "source": 12 + }, + { + "begin": 2005, + "end": 2123, + "name": "tag", + "source": 12, + "value": "51" + }, + { + "begin": 2005, + "end": 2123, + "name": "JUMPDEST", + "source": 12 + }, + { + "begin": 2150, + "end": 2167, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2132, + "end": 2147, + "name": "PUSH", + "source": 12, + "value": "1" + }, + { + "begin": 2132, + "end": 2147, + "name": "PUSH", + "source": 12, + "value": "0" + }, + { + "begin": 2132, + "end": 2167, + "name": "PUSH", + "source": 12, + "value": "100" + }, + { + "begin": 2132, + "end": 2167, + "name": "EXP", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SLOAD", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "DUP2", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2132, + "end": 2167, + "name": "MUL", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "NOT", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "AND", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "DUP4", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2132, + "end": 2167, + "name": "AND", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "MUL", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "OR", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "SSTORE", + "source": 12 + }, + { + "begin": 2132, + "end": 2167, + "name": "POP", + "source": 12 + }, + { + "begin": 2191, + "end": 2208, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2182, + "end": 2209, + "name": "AND", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "BC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B" + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2182, + "end": 2209, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "PUSH", + "source": 12, + "value": "40" + }, + { + "begin": 2182, + "end": 2209, + "name": "MLOAD", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "DUP1", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "SWAP2", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "SUB", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "SWAP1", + "source": 12 + }, + { + "begin": 2182, + "end": 2209, + "name": "LOG2", + "source": 12 + }, + { + "begin": 1932, + "end": 2216, + "name": "POP", + "source": 12 + }, + { + "begin": 1932, + "end": 2216, + "jumpType": "[out]", + "name": "JUMP", + "source": 12 + }, + { + "begin": 2912, + "end": 3099, + "name": "tag", + "source": 7, + "value": "35" + }, + { + "begin": 2912, + "end": 3099, + "name": "JUMPDEST", + "source": 7 + }, + { + "begin": 2985, + "end": 3001, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 3004, + "end": 3010, + "name": "DUP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 3004, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "SLOAD", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "PUSH", + "source": 7, + "value": "100" + }, + { + "begin": 3004, + "end": 3010, + "name": "EXP", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "DIV", + "source": 7 + }, + { + "begin": 3004, + "end": 3010, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3004, + "end": 3010, + "name": "AND", + "source": 7 + }, + { + "begin": 2985, + "end": 3010, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 2985, + "end": 3010, + "name": "POP", + "source": 7 + }, + { + "begin": 3029, + "end": 3037, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3020, + "end": 3026, + "name": "PUSH", + "source": 7, + "value": "0" + }, + { + "begin": 3020, + "end": 3026, + "name": "DUP1", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "PUSH", + "source": 7, + "value": "100" + }, + { + "begin": 3020, + "end": 3037, + "name": "EXP", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SLOAD", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3020, + "end": 3037, + "name": "MUL", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "NOT", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "AND", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "DUP4", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3020, + "end": 3037, + "name": "AND", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "MUL", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "OR", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "SSTORE", + "source": 7 + }, + { + "begin": 3020, + "end": 3037, + "name": "POP", + "source": 7 + }, + { + "begin": 3083, + "end": 3091, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3052, + "end": 3092, + "name": "AND", + "source": 7 + }, + { + "begin": 3073, + "end": 3081, + "name": "DUP2", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3052, + "end": 3092, + "name": "AND", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0" + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 3052, + "end": 3092, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "PUSH", + "source": 7, + "value": "40" + }, + { + "begin": 3052, + "end": 3092, + "name": "MLOAD", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "DUP1", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "SWAP2", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "SUB", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "SWAP1", + "source": 7 + }, + { + "begin": 3052, + "end": 3092, + "name": "LOG3", + "source": 7 + }, + { + "begin": 2975, + "end": 3099, + "name": "POP", + "source": 7 + }, + { + "begin": 2912, + "end": 3099, + "name": "POP", + "source": 7 + }, + { + "begin": 2912, + "end": 3099, + "jumpType": "[out]", + "name": "JUMP", + "source": 7 + }, + { + "begin": 656, + "end": 752, + "name": "tag", + "source": 15, + "value": "45" + }, + { + "begin": 656, + "end": 752, + "name": "JUMPDEST", + "source": 15 + }, + { + "begin": 709, + "end": 716, + "name": "PUSH", + "source": 15, + "value": "0" + }, + { + "begin": 735, + "end": 745, + "name": "CALLER", + "source": 15 + }, + { + "begin": 728, + "end": 745, + "name": "SWAP1", + "source": 15 + }, + { + "begin": 728, + "end": 745, + "name": "POP", + "source": 15 + }, + { + "begin": 656, + "end": 752, + "name": "SWAP1", + "source": 15 + }, + { + "begin": 656, + "end": 752, + "jumpType": "[out]", + "name": "JUMP", + "source": 15 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 40, + "value": "56" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 40 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 40, + "value": "58" + }, + { + "begin": 334, + "end": 460, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 404, + "end": 409, + "name": "DUP3", + "source": 40 + }, + { + "begin": 400, + "end": 454, + "name": "AND", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 40, + "value": "59" + }, + { + "begin": 466, + "end": 562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "69" + }, + { + "begin": 550, + "end": 555, + "name": "DUP3", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "58" + }, + { + "begin": 532, + "end": 556, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 40, + "value": "69" + }, + { + "begin": 532, + "end": 556, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "tag", + "source": 40, + "value": "60" + }, + { + "begin": 568, + "end": 690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "71" + }, + { + "begin": 659, + "end": 664, + "name": "DUP2", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "59" + }, + { + "begin": 641, + "end": 665, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "tag", + "source": 40, + "value": "71" + }, + { + "begin": 641, + "end": 665, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 634, + "end": 639, + "name": "DUP2", + "source": 40 + }, + { + "begin": 631, + "end": 666, + "name": "EQ", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "PUSH [tag]", + "source": 40, + "value": "72" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 680, + "end": 681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 677, + "end": 678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 670, + "end": 682, + "name": "REVERT", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "tag", + "source": 40, + "value": "72" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "POP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 696, + "end": 835, + "name": "tag", + "source": 40, + "value": "61" + }, + { + "begin": 696, + "end": 835, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 742, + "end": 747, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 780, + "end": 786, + "name": "DUP2", + "source": 40 + }, + { + "begin": 767, + "end": 787, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 758, + "end": 787, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 758, + "end": 787, + "name": "POP", + "source": 40 + }, + { + "begin": 796, + "end": 829, + "name": "PUSH [tag]", + "source": 40, + "value": "74" + }, + { + "begin": 823, + "end": 828, + "name": "DUP2", + "source": 40 + }, + { + "begin": 796, + "end": 829, + "name": "PUSH [tag]", + "source": 40, + "value": "60" + }, + { + "begin": 796, + "end": 829, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 796, + "end": 829, + "name": "tag", + "source": 40, + "value": "74" + }, + { + "begin": 796, + "end": 829, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 696, + "end": 835, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 696, + "end": 835, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 696, + "end": 835, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 835, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 835, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 841, + "end": 1170, + "name": "tag", + "source": 40, + "value": "10" + }, + { + "begin": 841, + "end": 1170, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 900, + "end": 906, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 949, + "end": 951, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 937, + "end": 946, + "name": "DUP3", + "source": 40 + }, + { + "begin": 928, + "end": 935, + "name": "DUP5", + "source": 40 + }, + { + "begin": 924, + "end": 947, + "name": "SUB", + "source": 40 + }, + { + "begin": 920, + "end": 952, + "name": "SLT", + "source": 40 + }, + { + "begin": 917, + "end": 1036, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 917, + "end": 1036, + "name": "PUSH [tag]", + "source": 40, + "value": "76" + }, + { + "begin": 917, + "end": 1036, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 955, + "end": 1034, + "name": "PUSH [tag]", + "source": 40, + "value": "77" + }, + { + "begin": 955, + "end": 1034, + "name": "PUSH [tag]", + "source": 40, + "value": "56" + }, + { + "begin": 955, + "end": 1034, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 955, + "end": 1034, + "name": "tag", + "source": 40, + "value": "77" + }, + { + "begin": 955, + "end": 1034, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 917, + "end": 1036, + "name": "tag", + "source": 40, + "value": "76" + }, + { + "begin": 917, + "end": 1036, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1075, + "end": 1076, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1100, + "end": 1153, + "name": "PUSH [tag]", + "source": 40, + "value": "78" + }, + { + "begin": 1145, + "end": 1152, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1136, + "end": 1142, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1125, + "end": 1134, + "name": "DUP6", + "source": 40 + }, + { + "begin": 1121, + "end": 1143, + "name": "ADD", + "source": 40 + }, + { + "begin": 1100, + "end": 1153, + "name": "PUSH [tag]", + "source": 40, + "value": "61" + }, + { + "begin": 1100, + "end": 1153, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1100, + "end": 1153, + "name": "tag", + "source": 40, + "value": "78" + }, + { + "begin": 1100, + "end": 1153, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1090, + "end": 1153, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1090, + "end": 1153, + "name": "POP", + "source": 40 + }, + { + "begin": 1046, + "end": 1163, + "name": "POP", + "source": 40 + }, + { + "begin": 841, + "end": 1170, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 841, + "end": 1170, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 841, + "end": 1170, + "name": "POP", + "source": 40 + }, + { + "begin": 841, + "end": 1170, + "name": "POP", + "source": 40 + }, + { + "begin": 841, + "end": 1170, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1176, + "end": 1294, + "name": "tag", + "source": 40, + "value": "62" + }, + { + "begin": 1176, + "end": 1294, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1263, + "end": 1287, + "name": "PUSH [tag]", + "source": 40, + "value": "80" + }, + { + "begin": 1281, + "end": 1286, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1263, + "end": 1287, + "name": "PUSH [tag]", + "source": 40, + "value": "59" + }, + { + "begin": 1263, + "end": 1287, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1263, + "end": 1287, + "name": "tag", + "source": 40, + "value": "80" + }, + { + "begin": 1263, + "end": 1287, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1258, + "end": 1261, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1251, + "end": 1288, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1176, + "end": 1294, + "name": "POP", + "source": 40 + }, + { + "begin": 1176, + "end": 1294, + "name": "POP", + "source": 40 + }, + { + "begin": 1176, + "end": 1294, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1300, + "end": 1522, + "name": "tag", + "source": 40, + "value": "15" + }, + { + "begin": 1300, + "end": 1522, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1393, + "end": 1397, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1431, + "end": 1433, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1420, + "end": 1429, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1416, + "end": 1434, + "name": "ADD", + "source": 40 + }, + { + "begin": 1408, + "end": 1434, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1408, + "end": 1434, + "name": "POP", + "source": 40 + }, + { + "begin": 1444, + "end": 1515, + "name": "PUSH [tag]", + "source": 40, + "value": "82" + }, + { + "begin": 1512, + "end": 1513, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1501, + "end": 1510, + "name": "DUP4", + "source": 40 + }, + { + "begin": 1497, + "end": 1514, + "name": "ADD", + "source": 40 + }, + { + "begin": 1488, + "end": 1494, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1444, + "end": 1515, + "name": "PUSH [tag]", + "source": 40, + "value": "62" + }, + { + "begin": 1444, + "end": 1515, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1444, + "end": 1515, + "name": "tag", + "source": 40, + "value": "82" + }, + { + "begin": 1444, + "end": 1515, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1300, + "end": 1522, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1300, + "end": 1522, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1300, + "end": 1522, + "name": "POP", + "source": 40 + }, + { + "begin": 1300, + "end": 1522, + "name": "POP", + "source": 40 + }, + { + "begin": 1300, + "end": 1522, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": { + "implementation()": "5c60da1b", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b", + "upgradeTo(address)": "3659cfe6" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"BeaconInvalidImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their implementation contract, which is where they will delegate all function calls. An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\",\"errors\":{\"BeaconInvalidImplementation(address)\":[{\"details\":\"The `implementation` of the beacon is invalid.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation returned by the beacon is changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Sets the address of the initial implementation, and the initial owner who can upgrade the beacon.\"},\"implementation()\":{\"details\":\"Returns the current implementation address.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrades the beacon to a new implementation. Emits an {Upgraded} event. Requirements: - msg.sender must be the owner of the contract. - `newImplementation` must be a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":\"UpgradeableBeacon\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x5920bac7215d12961e23b207f6e81a1d64aa4935a4469abe95b64a96a3c3007b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34bb828c45c3a4ebf6c2c585971abf5089e61357a3818a2900c7e85b74a1299\",\"dweb:/ipfs/QmewGAzKsPXYfSjCKxuH1SekKxtdyzhdbdyxjF5gohLigt\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 1126, + "contract": "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol:UpgradeableBeacon", + "label": "_owner", + "offset": 0, + "slot": "0", + "type": "t_address" + }, + { + "astId": 1685, + "contract": "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol:UpgradeableBeacon", + "label": "_implementation", + "offset": 0, + "slot": "1", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "Interface of the ERC-20 standard as defined in the ERC.", + "events": { + "Approval(address,address,uint256)": { + "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance." + }, + "Transfer(address,address,uint256)": { + "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero." + } + }, + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called." + }, + "approve(address,uint256)": { + "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event." + }, + "balanceOf(address)": { + "details": "Returns the value of tokens owned by `account`." + }, + "totalSupply()": { + "details": "Returns the value of tokens in existence." + }, + "transfer(address,uint256)": { + "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + }, + "transferFrom(address,address,uint256)": { + "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "Address": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + } + ], + "devdoc": { + "details": "Collection of functions related to the address type", + "errors": { + "AddressEmptyCode(address)": [ + { + "details": "There's no code at `target` (it is not a contract)." + } + ], + "AddressInsufficientBalance(address)": [ + { + "details": "The ETH balance of the account is not enough to perform the operation." + } + ], + "FailedInnerCall()": [ + { + "details": "A call to an address target failed. The target may have reverted." + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":195:6261 library Address {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":195:6261 library Address {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220b52e2d78fae4a03b70ef259d9543873397b0b93914561cf96f792e44530d45fb64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220b52e2d78fae4a03b70ef259d9543873397b0b93914561cf96f792e44530d45fb64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0x2E 0x2D PUSH25 0xFAE4A03B70EF259D9543873397B0B93914561CF96F792E4453 0xD GASLIMIT 0xFB PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "195:6066:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220b52e2d78fae4a03b70ef259d9543873397b0b93914561cf96f792e44530d45fb64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0x2E 0x2D PUSH25 0xFAE4A03B70EF259D9543873397B0B93914561CF96F792E4453 0xD GASLIMIT 0xFB PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "195:6066:14:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_revert(bytes memory)": "infinite", + "functionCall(address,bytes memory)": "infinite", + "functionCallWithValue(address,bytes memory,uint256)": "infinite", + "functionDelegateCall(address,bytes memory)": "infinite", + "functionStaticCall(address,bytes memory)": "infinite", + "sendValue(address payable,uint256)": "infinite", + "verifyCallResult(bool,bytes memory)": "infinite", + "verifyCallResultFromTarget(address,bool,bytes memory)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 195, + "end": 6261, + "name": "PUSH #[$]", + "source": 14, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH [$]", + "source": 14, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "B" + }, + { + "begin": 195, + "end": 6261, + "name": "DUP3", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "DUP3", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "DUP3", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "CODECOPY", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "DUP1", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 195, + "end": 6261, + "name": "BYTE", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "73" + }, + { + "begin": 195, + "end": 6261, + "name": "EQ", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH [tag]", + "source": 14, + "value": "1" + }, + { + "begin": 195, + "end": 6261, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 195, + "end": 6261, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "4" + }, + { + "begin": 195, + "end": 6261, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "24" + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 195, + "end": 6261, + "name": "REVERT", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "tag", + "source": 14, + "value": "1" + }, + { + "begin": 195, + "end": 6261, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "ADDRESS", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 195, + "end": 6261, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "73" + }, + { + "begin": 195, + "end": 6261, + "name": "DUP2", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "MSTORE8", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "DUP3", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "DUP2", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "RETURN", + "source": 14 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220b52e2d78fae4a03b70ef259d9543873397b0b93914561cf96f792e44530d45fb64736f6c63430008140033", + ".code": [ + { + "begin": 195, + "end": 6261, + "name": "PUSHDEPLOYADDRESS", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "ADDRESS", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "EQ", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "80" + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 195, + "end": 6261, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 195, + "end": 6261, + "name": "DUP1", + "source": 14 + }, + { + "begin": 195, + "end": 6261, + "name": "REVERT", + "source": 14 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "Context": { + "abi": [], + "devdoc": { + "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/Create2.sol": { + "Create2": { + "abi": [ + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + } + ], + "devdoc": { + "details": "Helper to make usage of the `CREATE2` EVM opcode easier and safer. `CREATE2` can be used to compute in advance the address where a smart contract will be deployed, which allows for interesting new mechanisms known as 'counterfactual interactions'. See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more information.", + "errors": { + "Create2EmptyBytecode()": [ + { + "details": "There's no code to deploy." + } + ], + "Create2FailedDeployment()": [ + { + "details": "The deployment failed." + } + ], + "Create2InsufficientBalance(uint256,uint256)": [ + { + "details": "Not enough balance for performing a CREATE2 deploy." + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":495:4372 library Create2 {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":495:4372 library Create2 {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220dce80311481c0d1d320320bac503c118c6de8d3c5b6f37cb39263d4846544c6c64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dce80311481c0d1d320320bac503c118c6de8d3c5b6f37cb39263d4846544c6c64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xE8 SUB GT BASEFEE SHR 0xD SAR ORIGIN SUB KECCAK256 0xBA 0xC5 SUB 0xC1 XOR 0xC6 0xDE DUP14 EXTCODECOPY JUMPDEST PUSH16 0x37CB39263D4846544C6C64736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "495:3877:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220dce80311481c0d1d320320bac503c118c6de8d3c5b6f37cb39263d4846544c6c64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xE8 SUB GT BASEFEE SHR 0xD SAR ORIGIN SUB KECCAK256 0xBA 0xC5 SUB 0xC1 XOR 0xC6 0xDE DUP14 EXTCODECOPY JUMPDEST PUSH16 0x37CB39263D4846544C6C64736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "495:3877:16:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "computeAddress(bytes32,bytes32)": "infinite", + "computeAddress(bytes32,bytes32,address)": "infinite", + "deploy(uint256,bytes32,bytes memory)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 495, + "end": 4372, + "name": "PUSH #[$]", + "source": 16, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH [$]", + "source": 16, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "B" + }, + { + "begin": 495, + "end": 4372, + "name": "DUP3", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "DUP3", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "DUP3", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "CODECOPY", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "DUP1", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 495, + "end": 4372, + "name": "BYTE", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "73" + }, + { + "begin": 495, + "end": 4372, + "name": "EQ", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH [tag]", + "source": 16, + "value": "1" + }, + { + "begin": 495, + "end": 4372, + "name": "JUMPI", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 495, + "end": 4372, + "name": "MSTORE", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "4" + }, + { + "begin": 495, + "end": 4372, + "name": "MSTORE", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "24" + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 495, + "end": 4372, + "name": "REVERT", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "tag", + "source": 16, + "value": "1" + }, + { + "begin": 495, + "end": 4372, + "name": "JUMPDEST", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "ADDRESS", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 495, + "end": 4372, + "name": "MSTORE", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "73" + }, + { + "begin": 495, + "end": 4372, + "name": "DUP2", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "MSTORE8", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "DUP3", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "DUP2", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "RETURN", + "source": 16 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220dce80311481c0d1d320320bac503c118c6de8d3c5b6f37cb39263d4846544c6c64736f6c63430008140033", + ".code": [ + { + "begin": 495, + "end": 4372, + "name": "PUSHDEPLOYADDRESS", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "ADDRESS", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "EQ", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "80" + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "40" + }, + { + "begin": 495, + "end": 4372, + "name": "MSTORE", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 495, + "end": 4372, + "name": "DUP1", + "source": 16 + }, + { + "begin": 495, + "end": 4372, + "name": "REVERT", + "source": 16 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Create2EmptyBytecode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Create2FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"Create2InsufficientBalance\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Helper to make usage of the `CREATE2` EVM opcode easier and safer. `CREATE2` can be used to compute in advance the address where a smart contract will be deployed, which allows for interesting new mechanisms known as 'counterfactual interactions'. See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more information.\",\"errors\":{\"Create2EmptyBytecode()\":[{\"details\":\"There's no code to deploy.\"}],\"Create2FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"Create2InsufficientBalance(uint256,uint256)\":[{\"details\":\"Not enough balance for performing a CREATE2 deploy.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":\"Create2\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": { + "StorageSlot": { + "abi": [], + "devdoc": { + "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1246:3931 library StorageSlot {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1246:3931 library StorageSlot {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212208e4665e8eca80b63500a76958281163098ade9641647cad81d8b42d743fcb50a64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208e4665e8eca80b63500a76958281163098ade9641647cad81d8b42d743fcb50a64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 CHAINID PUSH6 0xE8ECA80B6350 EXP PUSH23 0x958281163098ADE9641647CAD81D8B42D743FCB50A6473 PUSH16 0x6C634300081400330000000000000000 ", + "sourceMap": "1246:2685:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208e4665e8eca80b63500a76958281163098ade9641647cad81d8b42d743fcb50a64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP15 CHAINID PUSH6 0xE8ECA80B6350 EXP PUSH23 0x958281163098ADE9641647CAD81D8B42D743FCB50A6473 PUSH16 0x6C634300081400330000000000000000 ", + "sourceMap": "1246:2685:17:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "getAddressSlot(bytes32)": "infinite", + "getBooleanSlot(bytes32)": "infinite", + "getBytes32Slot(bytes32)": "infinite", + "getBytesSlot(bytes storage pointer)": "infinite", + "getBytesSlot(bytes32)": "infinite", + "getStringSlot(bytes32)": "infinite", + "getStringSlot(string storage pointer)": "infinite", + "getUint256Slot(bytes32)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 1246, + "end": 3931, + "name": "PUSH #[$]", + "source": 17, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH [$]", + "source": 17, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "B" + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP3", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP3", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP3", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "CODECOPY", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP1", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "MLOAD", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1246, + "end": 3931, + "name": "BYTE", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "73" + }, + { + "begin": 1246, + "end": 3931, + "name": "EQ", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH [tag]", + "source": 17, + "value": "1" + }, + { + "begin": 1246, + "end": 3931, + "name": "JUMPI", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1246, + "end": 3931, + "name": "MSTORE", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "4" + }, + { + "begin": 1246, + "end": 3931, + "name": "MSTORE", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "24" + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1246, + "end": 3931, + "name": "REVERT", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "tag", + "source": 17, + "value": "1" + }, + { + "begin": 1246, + "end": 3931, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "ADDRESS", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1246, + "end": 3931, + "name": "MSTORE", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "73" + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP2", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "MSTORE8", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP3", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP2", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "RETURN", + "source": 17 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212208e4665e8eca80b63500a76958281163098ade9641647cad81d8b42d743fcb50a64736f6c63430008140033", + ".code": [ + { + "begin": 1246, + "end": 3931, + "name": "PUSHDEPLOYADDRESS", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "ADDRESS", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "EQ", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "80" + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "40" + }, + { + "begin": 1246, + "end": 3931, + "name": "MSTORE", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1246, + "end": 3931, + "name": "DUP1", + "source": 17 + }, + { + "begin": 1246, + "end": 3931, + "name": "REVERT", + "source": 17 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x70d9a9cf8d5cc830d7396505ef8eb9686bd0c60a29c6644bd6cc278f9bab8ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719abb402c11be12355088da587ffd971fee1b035b5aa6b1ba3b1a9493d3c1d7\",\"dweb:/ipfs/QmanHMFVDqVtZAFFaH1CeGQWoHWsFnWHH75fCrguwi77Hq\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "IERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.", + "kind": "dev", + "methods": { + "supportsInterface(bytes4)": { + "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas." + } + }, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol": { + "EnumerableMap": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + } + ], + "name": "EnumerableMapNonexistentKey", + "type": "error" + } + ], + "devdoc": { + "details": "Library for managing an enumerable variant of Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type. Maps have the following properties: - Entries are added, removed, and checked for existence in constant time (O(1)). - Entries are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableMap for EnumerableMap.UintToAddressMap; // Declare a set state variable EnumerableMap.UintToAddressMap private myMap; } ``` The following map types are supported: - `uint256 -> address` (`UintToAddressMap`) since v3.0.0 - `address -> uint256` (`AddressToUintMap`) since v4.6.0 - `bytes32 -> bytes32` (`Bytes32ToBytes32Map`) since v4.6.0 - `uint256 -> uint256` (`UintToUintMap`) since v4.7.0 - `bytes32 -> uint256` (`Bytes32ToUintMap`) since v4.7.0 - `uint256 -> bytes32` (`UintToBytes32Map`) since v5.1.0 - `address -> address` (`AddressToAddressMap`) since v5.1.0 - `address -> bytes32` (`AddressToBytes32Map`) since v5.1.0 - `bytes32 -> address` (`Bytes32ToAddressMap`) since v5.1.0 [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableMap, you can either remove all elements one by one or create a fresh instance using an array of EnumerableMap. ====", + "errors": { + "EnumerableMapNonexistentKey(bytes32)": [ + { + "details": "Query for a nonexistent map key." + } + ] + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":1900:32597 library EnumerableMap {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":1900:32597 library EnumerableMap {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220953a818b2a6a4555cd21ddd366ebc5ba0986f317058e7edc68f7c0a6a6dc1c1564736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220953a818b2a6a4555cd21ddd366ebc5ba0986f317058e7edc68f7c0a6a6dc1c1564736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 GASPRICE DUP2 DUP12 0x2A PUSH11 0x4555CD21DDD366EBC5BA09 DUP7 RETURN OR SDIV DUP15 PUSH31 0xDC68F7C0A6A6DC1C1564736F6C634300081400330000000000000000000000 ", + "sourceMap": "1900:30697:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220953a818b2a6a4555cd21ddd366ebc5ba0986f317058e7edc68f7c0a6a6dc1c1564736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 GASPRICE DUP2 DUP12 0x2A PUSH11 0x4555CD21DDD366EBC5BA09 DUP7 RETURN OR SDIV DUP15 PUSH31 0xDC68F7C0A6A6DC1C1564736F6C634300081400330000000000000000000000 ", + "sourceMap": "1900:30697:19:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "at(struct EnumerableMap.AddressToAddressMap storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.AddressToBytes32Map storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.AddressToUintMap storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.Bytes32ToAddressMap storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.Bytes32ToUintMap storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.UintToBytes32Map storage pointer,uint256)": "infinite", + "at(struct EnumerableMap.UintToUintMap storage pointer,uint256)": "infinite", + "contains(struct EnumerableMap.AddressToAddressMap storage pointer,address)": "infinite", + "contains(struct EnumerableMap.AddressToBytes32Map storage pointer,address)": "infinite", + "contains(struct EnumerableMap.AddressToUintMap storage pointer,address)": "infinite", + "contains(struct EnumerableMap.Bytes32ToAddressMap storage pointer,bytes32)": "infinite", + "contains(struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32)": "infinite", + "contains(struct EnumerableMap.Bytes32ToUintMap storage pointer,bytes32)": "infinite", + "contains(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "contains(struct EnumerableMap.UintToBytes32Map storage pointer,uint256)": "infinite", + "contains(struct EnumerableMap.UintToUintMap storage pointer,uint256)": "infinite", + "get(struct EnumerableMap.AddressToAddressMap storage pointer,address)": "infinite", + "get(struct EnumerableMap.AddressToBytes32Map storage pointer,address)": "infinite", + "get(struct EnumerableMap.AddressToUintMap storage pointer,address)": "infinite", + "get(struct EnumerableMap.Bytes32ToAddressMap storage pointer,bytes32)": "infinite", + "get(struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32)": "infinite", + "get(struct EnumerableMap.Bytes32ToUintMap storage pointer,bytes32)": "infinite", + "get(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "get(struct EnumerableMap.UintToBytes32Map storage pointer,uint256)": "infinite", + "get(struct EnumerableMap.UintToUintMap storage pointer,uint256)": "infinite", + "keys(struct EnumerableMap.AddressToAddressMap storage pointer)": "infinite", + "keys(struct EnumerableMap.AddressToBytes32Map storage pointer)": "infinite", + "keys(struct EnumerableMap.AddressToUintMap storage pointer)": "infinite", + "keys(struct EnumerableMap.Bytes32ToAddressMap storage pointer)": "infinite", + "keys(struct EnumerableMap.Bytes32ToBytes32Map storage pointer)": "infinite", + "keys(struct EnumerableMap.Bytes32ToUintMap storage pointer)": "infinite", + "keys(struct EnumerableMap.UintToAddressMap storage pointer)": "infinite", + "keys(struct EnumerableMap.UintToBytes32Map storage pointer)": "infinite", + "keys(struct EnumerableMap.UintToUintMap storage pointer)": "infinite", + "length(struct EnumerableMap.AddressToAddressMap storage pointer)": "infinite", + "length(struct EnumerableMap.AddressToBytes32Map storage pointer)": "infinite", + "length(struct EnumerableMap.AddressToUintMap storage pointer)": "infinite", + "length(struct EnumerableMap.Bytes32ToAddressMap storage pointer)": "infinite", + "length(struct EnumerableMap.Bytes32ToBytes32Map storage pointer)": "infinite", + "length(struct EnumerableMap.Bytes32ToUintMap storage pointer)": "infinite", + "length(struct EnumerableMap.UintToAddressMap storage pointer)": "infinite", + "length(struct EnumerableMap.UintToBytes32Map storage pointer)": "infinite", + "length(struct EnumerableMap.UintToUintMap storage pointer)": "infinite", + "remove(struct EnumerableMap.AddressToAddressMap storage pointer,address)": "infinite", + "remove(struct EnumerableMap.AddressToBytes32Map storage pointer,address)": "infinite", + "remove(struct EnumerableMap.AddressToUintMap storage pointer,address)": "infinite", + "remove(struct EnumerableMap.Bytes32ToAddressMap storage pointer,bytes32)": "infinite", + "remove(struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32)": "infinite", + "remove(struct EnumerableMap.Bytes32ToUintMap storage pointer,bytes32)": "infinite", + "remove(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "remove(struct EnumerableMap.UintToBytes32Map storage pointer,uint256)": "infinite", + "remove(struct EnumerableMap.UintToUintMap storage pointer,uint256)": "infinite", + "set(struct EnumerableMap.AddressToAddressMap storage pointer,address,address)": "infinite", + "set(struct EnumerableMap.AddressToBytes32Map storage pointer,address,bytes32)": "infinite", + "set(struct EnumerableMap.AddressToUintMap storage pointer,address,uint256)": "infinite", + "set(struct EnumerableMap.Bytes32ToAddressMap storage pointer,bytes32,address)": "infinite", + "set(struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32)": "infinite", + "set(struct EnumerableMap.Bytes32ToUintMap storage pointer,bytes32,uint256)": "infinite", + "set(struct EnumerableMap.UintToAddressMap storage pointer,uint256,address)": "infinite", + "set(struct EnumerableMap.UintToBytes32Map storage pointer,uint256,bytes32)": "infinite", + "set(struct EnumerableMap.UintToUintMap storage pointer,uint256,uint256)": "infinite", + "tryGet(struct EnumerableMap.AddressToAddressMap storage pointer,address)": "infinite", + "tryGet(struct EnumerableMap.AddressToBytes32Map storage pointer,address)": "infinite", + "tryGet(struct EnumerableMap.AddressToUintMap storage pointer,address)": "infinite", + "tryGet(struct EnumerableMap.Bytes32ToAddressMap storage pointer,bytes32)": "infinite", + "tryGet(struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32)": "infinite", + "tryGet(struct EnumerableMap.Bytes32ToUintMap storage pointer,bytes32)": "infinite", + "tryGet(struct EnumerableMap.UintToAddressMap storage pointer,uint256)": "infinite", + "tryGet(struct EnumerableMap.UintToBytes32Map storage pointer,uint256)": "infinite", + "tryGet(struct EnumerableMap.UintToUintMap storage pointer,uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 1900, + "end": 32597, + "name": "PUSH #[$]", + "source": 19, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH [$]", + "source": 19, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "B" + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP3", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP3", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP3", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "CODECOPY", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP1", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "MLOAD", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 1900, + "end": 32597, + "name": "BYTE", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "73" + }, + { + "begin": 1900, + "end": 32597, + "name": "EQ", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH [tag]", + "source": 19, + "value": "1" + }, + { + "begin": 1900, + "end": 32597, + "name": "JUMPI", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 1900, + "end": 32597, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "4" + }, + { + "begin": 1900, + "end": 32597, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "24" + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 1900, + "end": 32597, + "name": "REVERT", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "tag", + "source": 19, + "value": "1" + }, + { + "begin": 1900, + "end": 32597, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "ADDRESS", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 1900, + "end": 32597, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "73" + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP2", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "MSTORE8", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP3", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP2", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "RETURN", + "source": 19 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220953a818b2a6a4555cd21ddd366ebc5ba0986f317058e7edc68f7c0a6a6dc1c1564736f6c63430008140033", + ".code": [ + { + "begin": 1900, + "end": 32597, + "name": "PUSHDEPLOYADDRESS", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "ADDRESS", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "EQ", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "80" + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "40" + }, + { + "begin": 1900, + "end": 32597, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 1900, + "end": 32597, + "name": "DUP1", + "source": 19 + }, + { + "begin": 1900, + "end": 32597, + "name": "REVERT", + "source": 19 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"EnumerableMapNonexistentKey\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Library for managing an enumerable variant of Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type. Maps have the following properties: - Entries are added, removed, and checked for existence in constant time (O(1)). - Entries are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableMap for EnumerableMap.UintToAddressMap; // Declare a set state variable EnumerableMap.UintToAddressMap private myMap; } ``` The following map types are supported: - `uint256 -> address` (`UintToAddressMap`) since v3.0.0 - `address -> uint256` (`AddressToUintMap`) since v4.6.0 - `bytes32 -> bytes32` (`Bytes32ToBytes32Map`) since v4.6.0 - `uint256 -> uint256` (`UintToUintMap`) since v4.7.0 - `bytes32 -> uint256` (`Bytes32ToUintMap`) since v4.7.0 - `uint256 -> bytes32` (`UintToBytes32Map`) since v5.1.0 - `address -> address` (`AddressToAddressMap`) since v5.1.0 - `address -> bytes32` (`AddressToBytes32Map`) since v5.1.0 - `bytes32 -> address` (`Bytes32ToAddressMap`) since v5.1.0 [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableMap, you can either remove all elements one by one or create a fresh instance using an array of EnumerableMap. ====\",\"errors\":{\"EnumerableMapNonexistentKey(bytes32)\":[{\"details\":\"Query for a nonexistent map key.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { + "EnumerableSet": { + "abi": [], + "devdoc": { + "details": "Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====", + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":1330:12970 library EnumerableSet {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":1330:12970 library EnumerableSet {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212203b38b2d76b2971ab0e181a2ae55974f92e1b75bd44af3f2a81219d4d451e557f64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212203b38b2d76b2971ab0e181a2ae55974f92e1b75bd44af3f2a81219d4d451e557f64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE CODESIZE 0xB2 0xD7 PUSH12 0x2971AB0E181A2AE55974F92E SHL PUSH22 0xBD44AF3F2A81219D4D451E557F64736F6C6343000814 STOP CALLER ", + "sourceMap": "1330:11640:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212203b38b2d76b2971ab0e181a2ae55974f92e1b75bd44af3f2a81219d4d451e557f64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE CODESIZE 0xB2 0xD7 PUSH12 0x2971AB0E181A2AE55974F92E SHL PUSH22 0xBD44AF3F2A81219D4D451E557F64736F6C6343000814 STOP CALLER ", + "sourceMap": "1330:11640:20:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_add(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "_at(struct EnumerableSet.Set storage pointer,uint256)": "infinite", + "_contains(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "_length(struct EnumerableSet.Set storage pointer)": "infinite", + "_remove(struct EnumerableSet.Set storage pointer,bytes32)": "infinite", + "_values(struct EnumerableSet.Set storage pointer)": "infinite", + "add(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "add(struct EnumerableSet.Bytes32Set storage pointer,bytes32)": "infinite", + "add(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.AddressSet storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.Bytes32Set storage pointer,uint256)": "infinite", + "at(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "contains(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "contains(struct EnumerableSet.Bytes32Set storage pointer,bytes32)": "infinite", + "contains(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "length(struct EnumerableSet.AddressSet storage pointer)": "infinite", + "length(struct EnumerableSet.Bytes32Set storage pointer)": "infinite", + "length(struct EnumerableSet.UintSet storage pointer)": "infinite", + "remove(struct EnumerableSet.AddressSet storage pointer,address)": "infinite", + "remove(struct EnumerableSet.Bytes32Set storage pointer,bytes32)": "infinite", + "remove(struct EnumerableSet.UintSet storage pointer,uint256)": "infinite", + "values(struct EnumerableSet.AddressSet storage pointer)": "infinite", + "values(struct EnumerableSet.Bytes32Set storage pointer)": "infinite", + "values(struct EnumerableSet.UintSet storage pointer)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 1330, + "end": 12970, + "name": "PUSH #[$]", + "source": 20, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH [$]", + "source": 20, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "B" + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP3", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP3", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP3", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "CODECOPY", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP1", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "MLOAD", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 1330, + "end": 12970, + "name": "BYTE", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "73" + }, + { + "begin": 1330, + "end": 12970, + "name": "EQ", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH [tag]", + "source": 20, + "value": "1" + }, + { + "begin": 1330, + "end": 12970, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 1330, + "end": 12970, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "4" + }, + { + "begin": 1330, + "end": 12970, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "24" + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 1330, + "end": 12970, + "name": "REVERT", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "tag", + "source": 20, + "value": "1" + }, + { + "begin": 1330, + "end": 12970, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "ADDRESS", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 1330, + "end": 12970, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "73" + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP2", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "MSTORE8", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP3", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP2", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "RETURN", + "source": 20 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212203b38b2d76b2971ab0e181a2ae55974f92e1b75bd44af3f2a81219d4d451e557f64736f6c63430008140033", + ".code": [ + { + "begin": 1330, + "end": 12970, + "name": "PUSHDEPLOYADDRESS", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "ADDRESS", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "EQ", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "80" + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "40" + }, + { + "begin": 1330, + "end": 12970, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 1330, + "end": 12970, + "name": "DUP1", + "source": 20 + }, + { + "begin": 1330, + "end": 12970, + "name": "REVERT", + "source": 20 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/LBFactory.sol": { + "LBFactory": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + } + ], + "name": "EnumerableMapNonexistentKey", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__AddressZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__BinStepHasNoPreset", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__BinStepTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__CannotGrantDefaultAdminRole", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "fees", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFees", + "type": "uint256" + } + ], + "name": "LBFactory__FlashLoanFeeAboveMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "LBFactory__IdenticalAddresses", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__InvalidHooksParameters", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__LBPairIgnoredIsAlreadyInTheSameState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairNotCreated", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBFactory__LBPairSafetyCheckFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__PresetIsLockedForUsers", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__PresetOpenStateIsAlreadyInTheSameState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "LBFactory__QuoteAssetAlreadyWhitelisted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "LBFactory__QuoteAssetNotWhitelisted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "name": "LBFactory__SameFeeRecipient", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "name": "LBFactory__SameFlashLoanFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "hooksImplementation", + "type": "address" + } + ], + "name": "LBFactory__SameHooksImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + } + ], + "name": "LBFactory__SameHooksParameters", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBFactory__SameImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "PairParametersHelper__InvalidParameter", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds16Bits", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "y", + "type": "int256" + } + ], + "name": "Uint128x128Math__PowUnderflow", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldRecipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newRecipient", + "type": "address" + } + ], + "name": "FeeRecipientSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFlashLoanFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFlashLoanFee", + "type": "uint256" + } + ], + "name": "FlashLoanFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + } + ], + "name": "LBPairCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "LBPairIgnoredStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldLBPairImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBPairImplementationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "PresetOpenStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "PresetRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxVolatilityAccumulator", + "type": "uint256" + } + ], + "name": "PresetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LB_HOOKS_MANAGER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "addQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "createLBPair", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + } + ], + "name": "forceDecay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllBinSteps", + "outputs": [ + { + "internalType": "uint256[]", + "name": "binStepWithPreset", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + } + ], + "name": "getAllLBPairs", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBFactory.LBPairInformation[]", + "name": "lbPairsAvailable", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFeeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFlashLoanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getLBPairAtIndex", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "lbPair", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLBPairBeacon", + "outputs": [ + { + "internalType": "address", + "name": "lbPairBeacon", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "getLBPairInformation", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBFactory.LBPairInformation", + "name": "lbPairInformation", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxFlashLoanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "maxFee", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getMinBinStep", + "outputs": [ + { + "internalType": "uint256", + "name": "minBinStep", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfLBPairs", + "outputs": [ + { + "internalType": "uint256", + "name": "lbPairNumber", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfQuoteAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "numberOfQuoteAssets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOpenBinSteps", + "outputs": [ + { + "internalType": "uint256[]", + "name": "openBinStep", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPauserRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "getPreset", + "outputs": [ + { + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxVolatilityAccumulator", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getQuoteAssetAtIndex", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "asset", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "address", + "name": "initialOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lbPairBeaconAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "isQuoteAsset", + "outputs": [ + { + "internalType": "bool", + "name": "isQuote", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "removeLBHooksOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "removePreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "removeQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "name": "setFeeRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "setFeesParametersOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "name": "setFlashLoanFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "onHooksSetData", + "type": "bytes" + } + ], + "name": "setLBHooksParametersOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "setLBPairIgnored", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "setPreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "setPresetOpenState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "errors": { + "AccessControlBadConfirmation()": [ + { + "details": "The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}." + } + ], + "AccessControlUnauthorizedAccount(address,bytes32)": [ + { + "details": "The `account` is missing a role." + } + ], + "Create2EmptyBytecode()": [ + { + "details": "There's no code to deploy." + } + ], + "Create2FailedDeployment()": [ + { + "details": "The deployment failed." + } + ], + "Create2InsufficientBalance(uint256,uint256)": [ + { + "details": "Not enough balance for performing a CREATE2 deploy." + } + ], + "EnumerableMapNonexistentKey(bytes32)": [ + { + "details": "Query for a nonexistent map key." + } + ], + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ], + "OwnableInvalidOwner(address)": [ + { + "details": "The owner is not a valid owner account. (eg. `address(0)`)" + } + ], + "OwnableUnauthorizedAccount(address)": [ + { + "details": "The caller account is not authorized to perform an operation." + } + ] + }, + "events": { + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + }, + "RoleAdminChanged(bytes32,bytes32,bytes32)": { + "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this." + }, + "RoleGranted(bytes32,address,address)": { + "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}." + }, + "RoleRevoked(bytes32,address,address)": { + "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" + } + }, + "kind": "dev", + "methods": { + "acceptOwnership()": { + "details": "The new owner accepts the ownership transfer." + }, + "addQuoteAsset(address)": { + "details": "Needs to be called by the owner Reverts if: - The quoteAsset is already whitelisted", + "params": { + "quoteAsset": "The quote asset (e.g: NATIVE, USDC...)" + } + }, + "constructor": { + "custom:oz-upgrades-unsafe-allow": "constructor" + }, + "createLBPair(address,address,uint24,uint16)": { + "params": { + "activeId": "The active id of the pair", + "binStep": "The bin step in basis point, used to calculate log(1 + binStep / 10_000)", + "tokenX": "The address of the first token", + "tokenY": "The address of the second token" + }, + "returns": { + "pair": "The address of the newly created LBPair" + } + }, + "forceDecay(address)": { + "details": "Needs to be called by the owner", + "params": { + "pair": "The pair to force the decay" + } + }, + "getAllBinSteps()": { + "returns": { + "binStepWithPreset": "The list of binStep" + } + }, + "getAllLBPairs(address,address)": { + "params": { + "tokenX": "The first token of the pair", + "tokenY": "The second token of the pair" + }, + "returns": { + "lbPairsAvailable": "The list of available LBPairs" + } + }, + "getFeeRecipient()": { + "returns": { + "feeRecipient": "feeRecipient" + } + }, + "getFlashLoanFee()": { + "returns": { + "flashLoanFee": "The fee for flash loans, in 1e18" + } + }, + "getLBPairAtIndex(uint256)": { + "params": { + "index": "The index" + }, + "returns": { + "lbPair": "The address of the LBPair at index `index`" + } + }, + "getLBPairBeacon()": { + "returns": { + "lbPairBeacon": "The address of the LBPair beacon" + } + }, + "getLBPairInformation(address,address,uint256)": { + "params": { + "binStep": "The bin step of the LBPair", + "tokenA": "The address of the first token of the pair", + "tokenB": "The address of the second token of the pair" + }, + "returns": { + "lbPairInformation": "The LBPairInformation" + } + }, + "getMaxFlashLoanFee()": { + "returns": { + "maxFee": "maxFee" + } + }, + "getMinBinStep()": { + "returns": { + "minBinStep": "minBinStep" + } + }, + "getNumberOfLBPairs()": { + "returns": { + "lbPairNumber": "lbPairNumber" + } + }, + "getNumberOfQuoteAssets()": { + "returns": { + "numberOfQuoteAssets": "The number of quote assets" + } + }, + "getOpenBinSteps()": { + "returns": { + "openBinStep": "The list of open binSteps" + } + }, + "getPreset(uint256)": { + "params": { + "binStep": "The bin step of the preset" + }, + "returns": { + "baseFactor": "The base factor", + "decayPeriod": "The decay period of the preset", + "filterPeriod": "The filter period of the preset", + "isOpen": "Whether the preset is open or not", + "maxVolatilityAccumulator": "The max volatility accumulator of the preset", + "protocolShare": "The protocol share of the preset", + "reductionFactor": "The reduction factor of the preset", + "variableFeeControl": "The variable fee control of the preset" + } + }, + "getQuoteAssetAtIndex(uint256)": { + "params": { + "index": "The index" + }, + "returns": { + "asset": "The address of the quoteAsset at index `index`" + } + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." + }, + "hasRole(bytes32,address)": { + "params": { + "account": "The address to check", + "role": "The role to check" + }, + "returns": { + "_0": "Whether the account has the role or not" + } + }, + "initialize(address,address,uint256,address)": { + "params": { + "feeRecipient": "The address of the fee recipient", + "flashLoanFee": "The value of the fee for flash loan" + } + }, + "isQuoteAsset(address)": { + "params": { + "token": "The address of the asset" + }, + "returns": { + "isQuote": "Whether the token is a quote asset or not" + } + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "pendingOwner()": { + "details": "Returns the address of the pending owner." + }, + "removeLBHooksOnPair(address,address,uint16)": { + "details": "Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist", + "params": { + "binStep": "The bin step in basis point, used to calculate the price", + "tokenX": "The address of the first token", + "tokenY": "The address of the second token" + } + }, + "removePreset(uint16)": { + "details": "Needs to be called by the owner Reverts if: - The binStep doesn't have a preset", + "params": { + "binStep": "The bin step to remove" + } + }, + "removeQuoteAsset(address)": { + "details": "Needs to be called by the owner Reverts if: - The quoteAsset was not whitelisted", + "params": { + "quoteAsset": "The quote asset (e.g: NATIVE, USDC...)" + } + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." + }, + "setFeeRecipient(address)": { + "details": "Needs to be called by the owner Reverts if: - The feeRecipient is `address(0)` - The feeRecipient is the same as the current one", + "params": { + "feeRecipient": "The address of the recipient" + } + }, + "setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": { + "details": "Needs to be called by the owner Reverts if: - The pair doesn't exist", + "params": { + "baseFactor": "The base factor, used to calculate the base fee, baseFee = baseFactor * binStep", + "binStep": "The bin step in basis point, used to calculate the price", + "decayPeriod": "The period where the accumulator value is decayed, by the reduction factor", + "filterPeriod": "The period where the accumulator value is untouched, prevent spam", + "maxVolatilityAccumulator": "The max value of volatility accumulator", + "protocolShare": "The share of the fees received by the protocol", + "reductionFactor": "The reduction factor, used to calculate the reduction of the accumulator", + "tokenX": "The address of the first token", + "tokenY": "The address of the second token", + "variableFeeControl": "The variable fee control, used to control the variable fee, can be 0 to disable it" + } + }, + "setFlashLoanFee(uint256)": { + "details": "Needs to be called by the owner Reverts if: - The flashLoanFee is the same as the current one - The flashLoanFee is above the maximum flash loan fee", + "params": { + "flashLoanFee": "The value of the fee for flash loan" + } + }, + "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": { + "details": "Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist - The hooks is `address(0)` or the hooks flags are all false", + "params": { + "binStep": "The bin step in basis point, used to calculate the price", + "hooksParameters": "The hooks parameters", + "onHooksSetData": "The data to pass to the onHooksSet function", + "tokenX": "The address of the first token", + "tokenY": "The address of the second token" + } + }, + "setLBPairIgnored(address,address,uint16,bool)": { + "details": "Needs to be called by the owner Reverts if: - The pair doesn't exist - The ignored state is already in the same state", + "params": { + "binStep": "The bin step in basis point of the pair", + "ignored": "Whether to ignore (true) or not (false) the pair for routing", + "tokenX": "The address of the first token of the pair", + "tokenY": "The address of the second token of the pair" + } + }, + "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": { + "details": "Needs to be called by the owner Reverts if: - The binStep is lower than the minimum bin step", + "params": { + "baseFactor": "The base factor, used to calculate the base fee, baseFee = baseFactor * binStep", + "binStep": "The bin step in basis point, used to calculate the price", + "decayPeriod": "The period where the accumulator value is decayed, by the reduction factor", + "filterPeriod": "The period where the accumulator value is untouched, prevent spam", + "maxVolatilityAccumulator": "The max value of the volatility accumulator", + "protocolShare": "The share of the fees received by the protocol", + "reductionFactor": "The reduction factor, used to calculate the reduction of the accumulator", + "variableFeeControl": "The variable fee control, used to control the variable fee, can be 0 to disable it" + } + }, + "setPresetOpenState(uint16,bool)": { + "details": "Needs to be called by the owner Reverts if: - The binStep doesn't have a preset - The preset is already in the same state", + "params": { + "binStep": "The bin step in basis point, used to calculate the price", + "isOpen": "Whether the preset is open or not" + } + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, + "transferOwnership(address)": { + "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner." + } + }, + "stateVariables": { + "_availableLBPairBinSteps": { + "details": "Mapping from a (tokenA, tokenB) to a set of available bin steps, this is used to keep track of the bin steps that are already used for a pair. The tokens are ordered to save gas, but they can be in the reverse order in the actual pair. Always query one of the 2 tokens of the pair to assert the order of the 2 tokens" + }, + "_lbPairsInfo": { + "details": "Mapping from a (tokenA, tokenB, binStep) to a LBPair. The tokens are ordered to save gas, but they can be in the reverse order in the actual pair. Always query one of the 2 tokens of the pair to assert the order of the 2 tokens" + } + }, + "title": "Liquidity Book Factory", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/LBFactory.sol\":1541:29334 contract LBFactory is Ownable2StepUpgradeable, AccessControlUpgradeable, ILBFactory {... */\n mstore(0x40, 0x80)\n /* \"src/LBFactory.sol\":3448:3501 constructor() {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n /* \"src/LBFactory.sol\":3472:3494 _disableInitializers() */\n tag_4\n /* \"src/LBFactory.sol\":3472:3492 _disableInitializers */\n shl(0x20, tag_5)\n /* \"src/LBFactory.sol\":3472:3494 _disableInitializers() */\n 0x20\n shr\n jump\t// in\ntag_4:\n /* \"src/LBFactory.sol\":1541:29334 contract LBFactory is Ownable2StepUpgradeable, AccessControlUpgradeable, ILBFactory {... */\n jump(tag_6)\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7711:8133 function _disableInitializers() internal virtual {... */\ntag_5:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7826:7856 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7859:7885 _getInitializableStorage() */\n tag_8\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7859:7883 _getInitializableStorage */\n shl(0x20, tag_9)\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7859:7885 _getInitializableStorage() */\n 0x20\n shr\n jump\t// in\ntag_8:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7826:7885 InitializableStorage storage $ = _getInitializableStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7900:7901 $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7900:7915 $._initializing */\n 0x00\n add\n 0x08\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7896:7972 if ($._initializing) {... */\n iszero\n tag_10\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7938:7961 InvalidInitialization() */\n mload(0x40)\n 0xf92ee8a900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7896:7972 if ($._initializing) {... */\ntag_10:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8003:8019 type(uint64).max */\n 0xffffffffffffffff\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7985:8019 $._initialized != type(uint64).max */\n dup1\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7985:7986 $ */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7985:7999 $._initialized */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7985:8019 $._initialized != type(uint64).max */\n 0xffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7981:8127 if ($._initialized != type(uint64).max) {... */\n tag_11\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8052:8068 type(uint64).max */\n 0xffffffffffffffff\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8035:8036 $ */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8035:8049 $._initialized */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8035:8068 $._initialized = type(uint64).max */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8087:8116 Initialized(type(uint64).max) */\n 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8099:8115 type(uint64).max */\n 0xffffffffffffffff\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8087:8116 Initialized(type(uint64).max) */\n mload(0x40)\n tag_12\n swap2\n swap1\n tag_13\n jump\t// in\ntag_12:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7981:8127 if ($._initialized != type(uint64).max) {... */\ntag_11:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7760:8133 {... */\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7711:8133 function _disableInitializers() internal virtual {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\ntag_9:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8795:8825 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8870:8891 INITIALIZABLE_STORAGE */\n 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8860:8891 $.slot := INITIALIZABLE_STORAGE */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":7:108 */\ntag_15:\n /* \"#utility.yul\":43:50 */\n 0x00\n /* \"#utility.yul\":83:101 */\n 0xffffffffffffffff\n /* \"#utility.yul\":76:81 */\n dup3\n /* \"#utility.yul\":72:102 */\n and\n /* \"#utility.yul\":61:102 */\n swap1\n pop\n /* \"#utility.yul\":7:108 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":114:229 */\ntag_16:\n /* \"#utility.yul\":199:222 */\n tag_20\n /* \"#utility.yul\":216:221 */\n dup2\n /* \"#utility.yul\":199:222 */\n tag_15\n jump\t// in\ntag_20:\n /* \"#utility.yul\":194:197 */\n dup3\n /* \"#utility.yul\":187:223 */\n mstore\n /* \"#utility.yul\":114:229 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":235:453 */\ntag_13:\n /* \"#utility.yul\":326:330 */\n 0x00\n /* \"#utility.yul\":364:366 */\n 0x20\n /* \"#utility.yul\":353:362 */\n dup3\n /* \"#utility.yul\":349:367 */\n add\n /* \"#utility.yul\":341:367 */\n swap1\n pop\n /* \"#utility.yul\":377:446 */\n tag_22\n /* \"#utility.yul\":443:444 */\n 0x00\n /* \"#utility.yul\":432:441 */\n dup4\n /* \"#utility.yul\":428:445 */\n add\n /* \"#utility.yul\":419:425 */\n dup5\n /* \"#utility.yul\":377:446 */\n tag_16\n jump\t// in\ntag_22:\n /* \"#utility.yul\":235:453 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":1541:29334 contract LBFactory is Ownable2StepUpgradeable, AccessControlUpgradeable, ILBFactory {... */\ntag_6:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"src/LBFactory.sol\":1541:29334 contract LBFactory is Ownable2StepUpgradeable, AccessControlUpgradeable, ILBFactory {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x701ab8c1\n gt\n tag_47\n jumpi\n dup1\n 0xaabc4b3c\n gt\n tag_48\n jumpi\n dup1\n 0xe203a31f\n gt\n tag_49\n jumpi\n dup1\n 0xe203a31f\n eq\n tag_41\n jumpi\n dup1\n 0xe30c3978\n eq\n tag_42\n jumpi\n dup1\n 0xe74b981b\n eq\n tag_43\n jumpi\n dup1\n 0xe92d0d5d\n eq\n tag_44\n jumpi\n dup1\n 0xf2fde38b\n eq\n tag_45\n jumpi\n dup1\n 0xfd90c2be\n eq\n tag_46\n jumpi\n jump(tag_2)\n tag_49:\n dup1\n 0xaabc4b3c\n eq\n tag_36\n jumpi\n dup1\n 0xbe203094\n eq\n tag_37\n jumpi\n dup1\n 0xc1b931be\n eq\n tag_38\n jumpi\n dup1\n 0xd547741f\n eq\n tag_39\n jumpi\n dup1\n 0xddbfd941\n eq\n tag_40\n jumpi\n jump(tag_2)\n tag_48:\n dup1\n 0x80c5061e\n gt\n tag_50\n jumpi\n dup1\n 0x80c5061e\n eq\n tag_30\n jumpi\n dup1\n 0x8ce9aa1c\n eq\n tag_31\n jumpi\n dup1\n 0x8da5cb5b\n eq\n tag_32\n jumpi\n dup1\n 0x91d14854\n eq\n tag_33\n jumpi\n dup1\n 0xa0a0ea39\n eq\n tag_34\n jumpi\n dup1\n 0xa217fddf\n eq\n tag_35\n jumpi\n jump(tag_2)\n tag_50:\n dup1\n 0x701ab8c1\n eq\n tag_25\n jumpi\n dup1\n 0x704037bd\n eq\n tag_26\n jumpi\n dup1\n 0x715018a6\n eq\n tag_27\n jumpi\n dup1\n 0x79ba5097\n eq\n tag_28\n jumpi\n dup1\n 0x7daf5d66\n eq\n tag_29\n jumpi\n jump(tag_2)\n tag_47:\n dup1\n 0x3a2f1a91\n gt\n tag_51\n jumpi\n dup1\n 0x5a440923\n gt\n tag_52\n jumpi\n dup1\n 0x5a440923\n eq\n tag_19\n jumpi\n dup1\n 0x5b35875c\n eq\n tag_20\n jumpi\n dup1\n 0x659ac74b\n eq\n tag_21\n jumpi\n dup1\n 0x661d7ffb\n eq\n tag_22\n jumpi\n dup1\n 0x6622e0d7\n eq\n tag_23\n jumpi\n dup1\n 0x69d56ea3\n eq\n tag_24\n jumpi\n jump(tag_2)\n tag_52:\n dup1\n 0x3a2f1a91\n eq\n tag_14\n jumpi\n dup1\n 0x3c78a941\n eq\n tag_15\n jumpi\n dup1\n 0x4ccb20c0\n eq\n tag_16\n jumpi\n dup1\n 0x4cd161d3\n eq\n tag_17\n jumpi\n dup1\n 0x4e937c3a\n eq\n tag_18\n jumpi\n jump(tag_2)\n tag_51:\n dup1\n 0x248a9ca3\n gt\n tag_53\n jumpi\n dup1\n 0x248a9ca3\n eq\n tag_8\n jumpi\n dup1\n 0x27721842\n eq\n tag_9\n jumpi\n dup1\n 0x2cc06b8c\n eq\n tag_10\n jumpi\n dup1\n 0x2f2ff15d\n eq\n tag_11\n jumpi\n dup1\n 0x36568abe\n eq\n tag_12\n jumpi\n dup1\n 0x379ee803\n eq\n tag_13\n jumpi\n jump(tag_2)\n tag_53:\n dup1\n 0x01ffc9a7\n eq\n tag_3\n jumpi\n dup1\n 0x0282c9c1\n eq\n tag_4\n jumpi\n dup1\n 0x0752092b\n eq\n tag_5\n jumpi\n dup1\n 0x093ff769\n eq\n tag_6\n jumpi\n dup1\n 0x1af5bacc\n eq\n tag_7\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3443:3645 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n tag_3:\n tag_54\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_55\n swap2\n swap1\n tag_56\n jump\t// in\n tag_55:\n tag_57\n jump\t// in\n tag_54:\n mload(0x40)\n tag_58\n swap2\n swap1\n tag_59\n jump\t// in\n tag_58:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":9698:10375 function getOpenBinSteps() external view override returns (uint256[] memory openBinStep) {... */\n tag_4:\n tag_60\n tag_61\n jump\t// in\n tag_60:\n mload(0x40)\n tag_62\n swap2\n swap1\n tag_63\n jump\t// in\n tag_62:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":6402:6555 function getQuoteAssetAtIndex(uint256 index) external view override returns (IERC20 asset) {... */\n tag_5:\n tag_64\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_65\n swap2\n swap1\n tag_66\n jump\t// in\n tag_65:\n tag_67\n jump\t// in\n tag_64:\n mload(0x40)\n tag_68\n swap2\n swap1\n tag_69\n jump\t// in\n tag_68:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":20562:21364 function setFeesParametersOnPair(... */\n tag_6:\n tag_70\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_71\n swap2\n swap1\n tag_72\n jump\t// in\n tag_71:\n tag_73\n jump\t// in\n tag_70:\n stop\n /* \"src/LBFactory.sol\":1900:1982 bytes32 public constant LB_HOOKS_MANAGER_ROLE = keccak256(\"LB_HOOKS_MANAGER_ROLE\") */\n tag_7:\n tag_74\n tag_75\n jump\t// in\n tag_74:\n mload(0x40)\n tag_76\n swap2\n swap1\n tag_77\n jump\t// in\n tag_76:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4759:4950 function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {... */\n tag_8:\n tag_78\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_79\n swap2\n swap1\n tag_80\n jump\t// in\n tag_79:\n tag_81\n jump\t// in\n tag_78:\n mload(0x40)\n tag_82\n swap2\n swap1\n tag_77\n jump\t// in\n tag_82:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":6781:6932 function isQuoteAsset(IERC20 token) external view override returns (bool isQuote) {... */\n tag_9:\n tag_83\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_84\n swap2\n swap1\n tag_85\n jump\t// in\n tag_84:\n tag_86\n jump\t// in\n tag_83:\n mload(0x40)\n tag_87\n swap2\n swap1\n tag_59\n jump\t// in\n tag_87:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":22855:23094 function removeLBHooksOnPair(IERC20 tokenX, IERC20 tokenY, uint16 binStep)... */\n tag_10:\n tag_88\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_89\n swap2\n swap1\n tag_90\n jump\t// in\n tag_89:\n tag_91\n jump\t// in\n tag_88:\n stop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5246:5382 function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {... */\n tag_11:\n tag_92\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_93\n swap2\n swap1\n tag_94\n jump\t// in\n tag_93:\n tag_95\n jump\t// in\n tag_92:\n stop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6348:6593 function renounceRole(bytes32 role, address callerConfirmation) public virtual {... */\n tag_12:\n tag_96\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_97\n swap2\n swap1\n tag_94\n jump\t// in\n tag_97:\n tag_98\n jump\t// in\n tag_96:\n stop\n /* \"src/LBFactory.sol\":17054:18193 function setPreset(... */\n tag_13:\n tag_99\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_100\n swap2\n swap1\n tag_101\n jump\t// in\n tag_100:\n tag_102\n jump\t// in\n tag_99:\n stop\n /* \"src/LBFactory.sol\":21951:22455 function setLBHooksParametersOnPair(... */\n tag_14:\n tag_103\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_104\n swap2\n swap1\n tag_105\n jump\t// in\n tag_104:\n tag_106\n jump\t// in\n tag_103:\n stop\n /* \"src/LBFactory.sol\":26236:26332 function forceDecay(ILBPair pair) external override onlyOwner {... */\n tag_15:\n tag_107\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_108\n swap2\n swap1\n tag_109\n jump\t// in\n tag_108:\n tag_110\n jump\t// in\n tag_107:\n stop\n /* \"src/LBFactory.sol\":4471:4589 function getFeeRecipient() external view override returns (address feeRecipient) {... */\n tag_16:\n tag_111\n tag_112\n jump\t// in\n tag_111:\n mload(0x40)\n tag_113\n swap2\n swap1\n tag_114\n jump\t// in\n tag_113:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":18573:19105 function setPresetOpenState(uint16 binStep, bool isOpen) external override onlyOwner {... */\n tag_17:\n tag_115\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_116\n swap2\n swap1\n tag_117\n jump\t// in\n tag_116:\n tag_118\n jump\t// in\n tag_115:\n stop\n /* \"src/LBFactory.sol\":5439:5565 function getNumberOfLBPairs() external view override returns (uint256 lbPairNumber) {... */\n tag_18:\n tag_119\n tag_120\n jump\t// in\n tag_119:\n mload(0x40)\n tag_121\n swap2\n swap1\n tag_122\n jump\t// in\n tag_121:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":24596:24860 function addQuoteAsset(IERC20 quoteAsset) external override onlyOwner {... */\n tag_19:\n tag_123\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_124\n swap2\n swap1\n tag_85\n jump\t// in\n tag_124:\n tag_125\n jump\t// in\n tag_123:\n stop\n /* \"src/LBFactory.sol\":9425:9558 function getAllBinSteps() external view override returns (uint256[] memory binStepWithPreset) {... */\n tag_20:\n tag_126\n tag_127\n jump\t// in\n tag_126:\n mload(0x40)\n tag_128\n swap2\n swap1\n tag_63\n jump\t// in\n tag_128:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":12340:14836 function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)... */\n tag_21:\n tag_129\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_130\n swap2\n swap1\n tag_131\n jump\t// in\n tag_130:\n tag_132\n jump\t// in\n tag_129:\n mload(0x40)\n tag_133\n swap2\n swap1\n tag_134\n jump\t// in\n tag_133:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":1988:2110 bytes32 public constant LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = keccak256(\"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\") */\n tag_22:\n tag_135\n tag_136\n jump\t// in\n tag_135:\n mload(0x40)\n tag_137\n swap2\n swap1\n tag_77\n jump\t// in\n tag_137:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":10632:11765 function getAllLBPairs(IERC20 tokenX, IERC20 tokenY)... */\n tag_23:\n tag_138\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_139\n swap2\n swap1\n tag_140\n jump\t// in\n tag_139:\n tag_141\n jump\t// in\n tag_138:\n mload(0x40)\n tag_142\n swap2\n swap1\n tag_143\n jump\t// in\n tag_142:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":15407:16102 function setLBPairIgnored(IERC20 tokenX, IERC20 tokenY, uint16 binStep, bool ignored) external override onlyOwner {... */\n tag_24:\n tag_144\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_145\n swap2\n swap1\n tag_146\n jump\t// in\n tag_145:\n tag_147\n jump\t// in\n tag_144:\n stop\n /* \"src/LBFactory.sol\":4261:4375 function getMinBinStep() external pure override returns (uint256 minBinStep) {... */\n tag_25:\n tag_148\n tag_149\n jump\t// in\n tag_148:\n mload(0x40)\n tag_150\n swap2\n swap1\n tag_122\n jump\t// in\n tag_150:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":7318:7577 function getLBPairInformation(IERC20 tokenA, IERC20 tokenB, uint256 binStep)... */\n tag_26:\n tag_151\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_152\n swap2\n swap1\n tag_153\n jump\t// in\n tag_152:\n tag_154\n jump\t// in\n tag_151:\n mload(0x40)\n tag_155\n swap2\n swap1\n tag_156\n jump\t// in\n tag_155:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3155:3256 function renounceOwnership() public virtual onlyOwner {... */\n tag_27:\n tag_157\n tag_158\n jump\t// in\n tag_157:\n stop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3132:3361 function acceptOwnership() public virtual {... */\n tag_28:\n tag_159\n tag_160\n jump\t// in\n tag_159:\n stop\n /* \"src/LBFactory.sol\":5757:5888 function getLBPairAtIndex(uint256 index) external view override returns (ILBPair lbPair) {... */\n tag_29:\n tag_161\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_162\n swap2\n swap1\n tag_66\n jump\t// in\n tag_162:\n tag_163\n jump\t// in\n tag_161:\n mload(0x40)\n tag_164\n swap2\n swap1\n tag_134\n jump\t// in\n tag_164:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":6050:6198 function getNumberOfQuoteAssets() external view override returns (uint256 numberOfQuoteAssets) {... */\n tag_30:\n tag_165\n tag_166\n jump\t// in\n tag_165:\n mload(0x40)\n tag_167\n swap2\n swap1\n tag_122\n jump\t// in\n tag_167:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":4694:4814 function getMaxFlashLoanFee() external pure override returns (uint256 maxFee) {... */\n tag_31:\n tag_168\n tag_169\n jump\t// in\n tag_168:\n mload(0x40)\n tag_170\n swap2\n swap1\n tag_122\n jump\t// in\n tag_170:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2441:2585 function owner() public view virtual returns (address) {... */\n tag_32:\n tag_171\n tag_172\n jump\t// in\n tag_171:\n mload(0x40)\n tag_173\n swap2\n swap1\n tag_114\n jump\t// in\n tag_173:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":28645:28848 function hasRole(bytes32 role, address account) public view override returns (bool) {... */\n tag_33:\n tag_174\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_175\n swap2\n swap1\n tag_94\n jump\t// in\n tag_175:\n tag_176\n jump\t// in\n tag_174:\n mload(0x40)\n tag_177\n swap2\n swap1\n tag_59\n jump\t// in\n tag_177:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":5202:5320 function getLBPairBeacon() external view override returns (address lbPairBeacon) {... */\n tag_34:\n tag_178\n tag_179\n jump\t// in\n tag_178:\n mload(0x40)\n tag_180\n swap2\n swap1\n tag_114\n jump\t// in\n tag_180:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2317:2366 bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00 */\n tag_35:\n tag_181\n tag_182\n jump\t// in\n tag_181:\n mload(0x40)\n tag_183\n swap2\n swap1\n tag_77\n jump\t// in\n tag_183:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":8275:9267 function getPreset(uint256 binStep)... */\n tag_36:\n tag_184\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_185\n swap2\n swap1\n tag_66\n jump\t// in\n tag_185:\n tag_186\n jump\t// in\n tag_184:\n mload(0x40)\n tag_187\n swap9\n swap8\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_188\n jump\t// in\n tag_187:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":3682:4157 function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) initializer external {... */\n tag_37:\n tag_189\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_190\n swap2\n swap1\n tag_191\n jump\t// in\n tag_190:\n tag_192\n jump\t// in\n tag_189:\n stop\n /* \"src/LBFactory.sol\":11820:11942 function getPauserRole() external pure returns (bytes32) {... */\n tag_38:\n tag_193\n tag_194\n jump\t// in\n tag_193:\n mload(0x40)\n tag_195\n swap2\n swap1\n tag_77\n jump\t// in\n tag_195:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5662:5800 function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {... */\n tag_39:\n tag_196\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_197\n swap2\n swap1\n tag_94\n jump\t// in\n tag_197:\n tag_198\n jump\t// in\n tag_196:\n stop\n /* \"src/LBFactory.sol\":25131:25375 function removeQuoteAsset(IERC20 quoteAsset) external override onlyOwner {... */\n tag_40:\n tag_199\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_200\n swap2\n swap1\n tag_85\n jump\t// in\n tag_200:\n tag_201\n jump\t// in\n tag_199:\n stop\n /* \"src/LBFactory.sol\":19331:19528 function removePreset(uint16 binStep) external override onlyOwner {... */\n tag_41:\n tag_202\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_203\n swap2\n swap1\n tag_204\n jump\t// in\n tag_203:\n tag_205\n jump\t// in\n tag_202:\n stop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2038:2206 function pendingOwner() public view virtual returns (address) {... */\n tag_42:\n tag_206\n tag_207\n jump\t// in\n tag_206:\n mload(0x40)\n tag_208\n swap2\n swap1\n tag_114\n jump\t// in\n tag_208:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"src/LBFactory.sol\":23440:23562 function setFeeRecipient(address feeRecipient) external override onlyOwner {... */\n tag_43:\n tag_209\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_210\n swap2\n swap1\n tag_211\n jump\t// in\n tag_210:\n tag_212\n jump\t// in\n tag_209:\n stop\n /* \"src/LBFactory.sol\":23879:24327 function setFlashLoanFee(uint256 flashLoanFee) external override onlyOwner {... */\n tag_44:\n tag_213\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_214\n swap2\n swap1\n tag_66\n jump\t// in\n tag_214:\n tag_215\n jump\t// in\n tag_213:\n stop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2399:2646 function transferOwnership(address newOwner) public virtual override onlyOwner {... */\n tag_45:\n tag_216\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_217\n swap2\n swap1\n tag_211\n jump\t// in\n tag_217:\n tag_218\n jump\t// in\n tag_216:\n stop\n /* \"src/LBFactory.sol\":4949:5067 function getFlashLoanFee() external view override returns (uint256 flashLoanFee) {... */\n tag_46:\n tag_219\n tag_220\n jump\t// in\n tag_219:\n mload(0x40)\n tag_221\n swap2\n swap1\n tag_122\n jump\t// in\n tag_221:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3443:3645 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n tag_57:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3528:3532 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3566:3598 type(IAccessControl).interfaceId */\n 0x7965db0b00000000000000000000000000000000000000000000000000000000\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3551:3598 interfaceId == type(IAccessControl).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3551:3562 interfaceId */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3551:3598 interfaceId == type(IAccessControl).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3551:3638 interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId) */\n dup1\n tag_223\n jumpi\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3602:3638 super.supportsInterface(interfaceId) */\n tag_224\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3626:3637 interfaceId */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3602:3625 super.supportsInterface */\n tag_225\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3602:3638 super.supportsInterface(interfaceId) */\n jump\t// in\n tag_224:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3551:3638 interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId) */\n tag_223:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3544:3638 return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3443:3645 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":9698:10375 function getOpenBinSteps() external view override returns (uint256[] memory openBinStep) {... */\n tag_61:\n /* \"src/LBFactory.sol\":9757:9785 uint256[] memory openBinStep */\n 0x60\n /* \"src/LBFactory.sol\":9797:9811 uint256 length */\n 0x00\n /* \"src/LBFactory.sol\":9814:9831 _presets.length() */\n tag_227\n /* \"src/LBFactory.sol\":9814:9822 _presets */\n 0x05\n /* \"src/LBFactory.sol\":9814:9829 _presets.length */\n tag_228\n /* \"src/LBFactory.sol\":9814:9831 _presets.length() */\n jump\t// in\n tag_227:\n /* \"src/LBFactory.sol\":9797:9831 uint256 length = _presets.length() */\n swap1\n pop\n /* \"src/LBFactory.sol\":9855:9856 0 */\n 0x00\n /* \"src/LBFactory.sol\":9846:9852 length */\n dup2\n /* \"src/LBFactory.sol\":9846:9856 length > 0 */\n gt\n /* \"src/LBFactory.sol\":9842:10369 if (length > 0) {... */\n iszero\n tag_229\n jumpi\n /* \"src/LBFactory.sol\":9900:9906 length */\n dup1\n /* \"src/LBFactory.sol\":9886:9907 new uint256[](length) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_230\n jumpi\n tag_231\n tag_232\n jump\t// in\n tag_231:\n tag_230:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x20\n mul\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_233\n jumpi\n dup2\n 0x20\n add\n 0x20\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_233:\n pop\n /* \"src/LBFactory.sol\":9872:9907 openBinStep = new uint256[](length) */\n swap2\n pop\n /* \"src/LBFactory.sol\":9922:9935 uint256 index */\n 0x00\n /* \"src/LBFactory.sol\":9955:9964 uint256 i */\n dup1\n /* \"src/LBFactory.sol\":9950:10218 for (uint256 i; i < length; ++i) {... */\n tag_234:\n /* \"src/LBFactory.sol\":9970:9976 length */\n dup3\n /* \"src/LBFactory.sol\":9966:9967 i */\n dup2\n /* \"src/LBFactory.sol\":9966:9976 i < length */\n lt\n /* \"src/LBFactory.sol\":9950:10218 for (uint256 i; i < length; ++i) {... */\n iszero\n tag_235\n jumpi\n /* \"src/LBFactory.sol\":10002:10017 uint256 binStep */\n 0x00\n /* \"src/LBFactory.sol\":10019:10033 uint256 preset */\n dup1\n /* \"src/LBFactory.sol\":10037:10051 _presets.at(i) */\n tag_237\n /* \"src/LBFactory.sol\":10049:10050 i */\n dup4\n /* \"src/LBFactory.sol\":10037:10045 _presets */\n 0x05\n /* \"src/LBFactory.sol\":10037:10048 _presets.at */\n tag_238\n swap1\n /* \"src/LBFactory.sol\":10037:10051 _presets.at(i) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_237:\n /* \"src/LBFactory.sol\":10001:10051 (uint256 binStep, uint256 preset) = _presets.at(i) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBFactory.sol\":10074:10104 _isPresetOpen(bytes32(preset)) */\n tag_239\n /* \"src/LBFactory.sol\":10096:10102 preset */\n dup2\n /* \"src/LBFactory.sol\":10088:10103 bytes32(preset) */\n 0x00\n shl\n /* \"src/LBFactory.sol\":10074:10087 _isPresetOpen */\n tag_240\n /* \"src/LBFactory.sol\":10074:10104 _isPresetOpen(bytes32(preset)) */\n jump\t// in\n tag_239:\n /* \"src/LBFactory.sol\":10070:10204 if (_isPresetOpen(bytes32(preset))) {... */\n iszero\n tag_241\n jumpi\n /* \"src/LBFactory.sol\":10149:10156 binStep */\n dup2\n /* \"src/LBFactory.sol\":10128:10139 openBinStep */\n dup7\n /* \"src/LBFactory.sol\":10140:10145 index */\n dup6\n /* \"src/LBFactory.sol\":10128:10146 openBinStep[index] */\n dup2\n mload\n dup2\n lt\n tag_242\n jumpi\n tag_243\n tag_244\n jump\t// in\n tag_243:\n tag_242:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBFactory.sol\":10128:10156 openBinStep[index] = binStep */\n dup2\n dup2\n mstore\n pop\n pop\n /* \"src/LBFactory.sol\":10178:10185 index++ */\n dup4\n dup1\n tag_245\n swap1\n tag_246\n jump\t// in\n tag_245:\n swap5\n pop\n pop\n /* \"src/LBFactory.sol\":10070:10204 if (_isPresetOpen(bytes32(preset))) {... */\n tag_241:\n /* \"src/LBFactory.sol\":9983:10218 {... */\n pop\n pop\n /* \"src/LBFactory.sol\":9978:9981 ++i */\n dup1\n tag_247\n swap1\n tag_246\n jump\t// in\n tag_247:\n swap1\n pop\n /* \"src/LBFactory.sol\":9950:10218 for (uint256 i; i < length; ++i) {... */\n jump(tag_234)\n tag_235:\n pop\n /* \"src/LBFactory.sol\":10244:10250 length */\n dup2\n /* \"src/LBFactory.sol\":10236:10241 index */\n dup2\n /* \"src/LBFactory.sol\":10236:10250 index < length */\n lt\n /* \"src/LBFactory.sol\":10232:10359 if (index < length) {... */\n iszero\n tag_248\n jumpi\n /* \"src/LBFactory.sol\":10321:10326 index */\n dup1\n /* \"src/LBFactory.sol\":10308:10319 openBinStep */\n dup4\n /* \"src/LBFactory.sol\":10301:10327 mstore(openBinStep, index) */\n mstore\n /* \"src/LBFactory.sol\":10232:10359 if (index < length) {... */\n tag_248:\n /* \"src/LBFactory.sol\":9858:10369 {... */\n pop\n /* \"src/LBFactory.sol\":9842:10369 if (length > 0) {... */\n tag_229:\n /* \"src/LBFactory.sol\":9787:10375 {... */\n pop\n /* \"src/LBFactory.sol\":9698:10375 function getOpenBinSteps() external view override returns (uint256[] memory openBinStep) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":6402:6555 function getQuoteAssetAtIndex(uint256 index) external view override returns (IERC20 asset) {... */\n tag_67:\n /* \"src/LBFactory.sol\":6479:6491 IERC20 asset */\n 0x00\n /* \"src/LBFactory.sol\":6517:6547 _quoteAssetWhitelist.at(index) */\n tag_250\n /* \"src/LBFactory.sol\":6541:6546 index */\n dup3\n /* \"src/LBFactory.sol\":6517:6537 _quoteAssetWhitelist */\n 0x08\n /* \"src/LBFactory.sol\":6517:6540 _quoteAssetWhitelist.at */\n tag_251\n swap1\n /* \"src/LBFactory.sol\":6517:6547 _quoteAssetWhitelist.at(index) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_250:\n /* \"src/LBFactory.sol\":6503:6548 return IERC20(_quoteAssetWhitelist.at(index)) */\n swap1\n pop\n /* \"src/LBFactory.sol\":6402:6555 function getQuoteAssetAtIndex(uint256 index) external view override returns (IERC20 asset) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":20562:21364 function setFeesParametersOnPair(... */\n tag_73:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_253\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_253:\n /* \"src/LBFactory.sol\":20931:20945 ILBPair lbPair */\n 0x00\n /* \"src/LBFactory.sol\":20948:20994 _getLBPairInformation(tokenX, tokenY, binStep) */\n tag_256\n /* \"src/LBFactory.sol\":20970:20976 tokenX */\n dup12\n /* \"src/LBFactory.sol\":20978:20984 tokenY */\n dup12\n /* \"src/LBFactory.sol\":20986:20993 binStep */\n dup12\n /* \"src/LBFactory.sol\":20948:20994 _getLBPairInformation(tokenX, tokenY, binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":20948:20969 _getLBPairInformation */\n tag_257\n /* \"src/LBFactory.sol\":20948:20994 _getLBPairInformation(tokenX, tokenY, binStep) */\n jump\t// in\n tag_256:\n /* \"src/LBFactory.sol\":20948:21001 _getLBPairInformation(tokenX, tokenY, binStep).LBPair */\n 0x20\n add\n mload\n /* \"src/LBFactory.sol\":20931:21001 ILBPair lbPair = _getLBPairInformation(tokenX, tokenY, binStep).LBPair */\n swap1\n pop\n /* \"src/LBFactory.sol\":21043:21044 0 */\n 0x00\n /* \"src/LBFactory.sol\":21016:21045 address(lbPair) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":21024:21030 lbPair */\n dup2\n /* \"src/LBFactory.sol\":21016:21045 address(lbPair) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBFactory.sol\":21012:21106 if (address(lbPair) == address(0)) revert LBFactory__LBPairNotCreated(tokenX, tokenY, binStep) */\n tag_258\n jumpi\n /* \"src/LBFactory.sol\":21082:21088 tokenX */\n dup11\n /* \"src/LBFactory.sol\":21090:21096 tokenY */\n dup11\n /* \"src/LBFactory.sol\":21098:21105 binStep */\n dup11\n /* \"src/LBFactory.sol\":21054:21106 LBFactory__LBPairNotCreated(tokenX, tokenY, binStep) */\n mload(0x40)\n 0xb65ee95300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_259\n swap4\n swap3\n swap2\n swap1\n tag_260\n jump\t// in\n tag_259:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":21012:21106 if (address(lbPair) == address(0)) revert LBFactory__LBPairNotCreated(tokenX, tokenY, binStep) */\n tag_258:\n /* \"src/LBFactory.sol\":21117:21123 lbPair */\n dup1\n /* \"src/LBFactory.sol\":21117:21146 lbPair.setStaticFeeParameters */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x6653851a\n /* \"src/LBFactory.sol\":21160:21170 baseFactor */\n dup10\n /* \"src/LBFactory.sol\":21184:21196 filterPeriod */\n dup10\n /* \"src/LBFactory.sol\":21210:21221 decayPeriod */\n dup10\n /* \"src/LBFactory.sol\":21235:21250 reductionFactor */\n dup10\n /* \"src/LBFactory.sol\":21264:21282 variableFeeControl */\n dup10\n /* \"src/LBFactory.sol\":21296:21309 protocolShare */\n dup10\n /* \"src/LBFactory.sol\":21323:21347 maxVolatilityAccumulator */\n dup10\n /* \"src/LBFactory.sol\":21117:21357 lbPair.setStaticFeeParameters(... */\n mload(0x40)\n dup9\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_261\n swap8\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_262\n jump\t// in\n tag_261:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_263\n jumpi\n 0x00\n dup1\n revert\n tag_263:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_265\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_265:\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":20921:21364 {... */\n pop\n /* \"src/LBFactory.sol\":20562:21364 function setFeesParametersOnPair(... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":1900:1982 bytes32 public constant LB_HOOKS_MANAGER_ROLE = keccak256(\"LB_HOOKS_MANAGER_ROLE\") */\n tag_75:\n /* \"src/LBFactory.sol\":1948:1982 keccak256(\"LB_HOOKS_MANAGER_ROLE\") */\n 0xdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9\n /* \"src/LBFactory.sol\":1900:1982 bytes32 public constant LB_HOOKS_MANAGER_ROLE = keccak256(\"LB_HOOKS_MANAGER_ROLE\") */\n dup2\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4759:4950 function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {... */\n tag_81:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4824:4831 bytes32 */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4843:4873 AccessControlStorage storage $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4876:4902 _getAccessControlStorage() */\n tag_267\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4876:4900 _getAccessControlStorage */\n tag_268\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4876:4902 _getAccessControlStorage() */\n jump\t// in\n tag_267:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4843:4902 AccessControlStorage storage $ = _getAccessControlStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4919:4920 $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4919:4927 $._roles */\n 0x00\n add\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4919:4933 $._roles[role] */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4928:4932 role */\n dup5\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4919:4933 $._roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4919:4943 $._roles[role].adminRole */\n 0x01\n add\n sload\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4912:4943 return $._roles[role].adminRole */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4759:4950 function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":6781:6932 function isQuoteAsset(IERC20 token) external view override returns (bool isQuote) {... */\n tag_86:\n /* \"src/LBFactory.sol\":6849:6861 bool isQuote */\n 0x00\n /* \"src/LBFactory.sol\":6880:6925 _quoteAssetWhitelist.contains(address(token)) */\n tag_270\n /* \"src/LBFactory.sol\":6918:6923 token */\n dup3\n /* \"src/LBFactory.sol\":6880:6900 _quoteAssetWhitelist */\n 0x08\n /* \"src/LBFactory.sol\":6880:6909 _quoteAssetWhitelist.contains */\n tag_271\n swap1\n /* \"src/LBFactory.sol\":6880:6925 _quoteAssetWhitelist.contains(address(token)) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_270:\n /* \"src/LBFactory.sol\":6873:6925 return _quoteAssetWhitelist.contains(address(token)) */\n swap1\n pop\n /* \"src/LBFactory.sol\":6781:6932 function isQuoteAsset(IERC20 token) external view override returns (bool isQuote) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":22855:23094 function removeLBHooksOnPair(IERC20 tokenX, IERC20 tokenY, uint16 binStep)... */\n tag_91:\n /* \"src/LBFactory.sol\":1948:1982 keccak256(\"LB_HOOKS_MANAGER_ROLE\") */\n 0xdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n tag_273\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3202:3206 role */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3201 _checkRole */\n tag_274\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n jump\t// in\n tag_273:\n /* \"src/LBFactory.sol\":23018:23087 _setLBHooksParametersOnPair(tokenX, tokenY, binStep, 0, new bytes(0)) */\n tag_276\n /* \"src/LBFactory.sol\":23046:23052 tokenX */\n dup5\n /* \"src/LBFactory.sol\":23054:23060 tokenY */\n dup5\n /* \"src/LBFactory.sol\":23062:23069 binStep */\n dup5\n /* \"src/LBFactory.sol\":23071:23072 0 */\n 0x00\n /* \"src/LBFactory.sol\":23018:23087 _setLBHooksParametersOnPair(tokenX, tokenY, binStep, 0, new bytes(0)) */\n dup1\n shl\n /* \"src/LBFactory.sol\":23084:23085 0 */\n 0x00\n /* \"src/LBFactory.sol\":23074:23086 new bytes(0) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_277\n jumpi\n tag_278\n tag_232\n jump\t// in\n tag_278:\n tag_277:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x1f\n add\n not(0x1f)\n and\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_279\n jumpi\n dup2\n 0x20\n add\n 0x01\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_279:\n pop\n /* \"src/LBFactory.sol\":23018:23045 _setLBHooksParametersOnPair */\n tag_280\n /* \"src/LBFactory.sol\":23018:23087 _setLBHooksParametersOnPair(tokenX, tokenY, binStep, 0, new bytes(0)) */\n jump\t// in\n tag_276:\n /* \"src/LBFactory.sol\":22855:23094 function removeLBHooksOnPair(IERC20 tokenX, IERC20 tokenY, uint16 binStep)... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5246:5382 function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {... */\n tag_95:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5320:5338 getRoleAdmin(role) */\n tag_281\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5333:5337 role */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5320:5332 getRoleAdmin */\n tag_81\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5320:5338 getRoleAdmin(role) */\n jump\t// in\n tag_281:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n tag_283\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3202:3206 role */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3201 _checkRole */\n tag_274\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n jump\t// in\n tag_283:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5350:5375 _grantRole(role, account) */\n tag_285\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5361:5365 role */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5367:5374 account */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5350:5360 _grantRole */\n tag_286\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5350:5375 _grantRole(role, account) */\n jump\t// in\n tag_285:\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5246:5382 function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {... */\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6348:6593 function renounceRole(bytes32 role, address callerConfirmation) public virtual {... */\n tag_98:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6463:6475 _msgSender() */\n tag_288\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6463:6473 _msgSender */\n tag_289\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6463:6475 _msgSender() */\n jump\t// in\n tag_288:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6441:6475 callerConfirmation != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6441:6459 callerConfirmation */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6441:6475 callerConfirmation != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6437:6539 if (callerConfirmation != _msgSender()) {... */\n tag_290\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6498:6528 AccessControlBadConfirmation() */\n mload(0x40)\n 0x6697b23200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6437:6539 if (callerConfirmation != _msgSender()) {... */\n tag_290:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6549:6586 _revokeRole(role, callerConfirmation) */\n tag_291\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6561:6565 role */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6567:6585 callerConfirmation */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6549:6560 _revokeRole */\n tag_292\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6549:6586 _revokeRole(role, callerConfirmation) */\n jump\t// in\n tag_291:\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":6348:6593 function renounceRole(bytes32 role, address callerConfirmation) public virtual {... */\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":17054:18193 function setPreset(... */\n tag_102:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_294\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_294:\n /* \"src/LBFactory.sol\":2218:2219 1 */\n 0x01\n /* \"src/LBFactory.sol\":17388:17395 binStep */\n dup10\n /* \"src/LBFactory.sol\":17388:17411 binStep < _MIN_BIN_STEP */\n 0xffff\n and\n lt\n /* \"src/LBFactory.sol\":17384:17453 if (binStep < _MIN_BIN_STEP) revert LBFactory__BinStepTooLow(binStep) */\n iszero\n tag_296\n jumpi\n /* \"src/LBFactory.sol\":17445:17452 binStep */\n dup9\n /* \"src/LBFactory.sol\":17420:17453 LBFactory__BinStepTooLow(binStep) */\n mload(0x40)\n 0x4f958e7100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_297\n swap2\n swap1\n tag_298\n jump\t// in\n tag_297:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":17384:17453 if (binStep < _MIN_BIN_STEP) revert LBFactory__BinStepTooLow(binStep) */\n tag_296:\n /* \"src/LBFactory.sol\":17464:17478 bytes32 preset */\n 0x00\n /* \"src/LBFactory.sol\":17481:17725 bytes32(0).setStaticFeeParameters(... */\n tag_299\n /* \"src/LBFactory.sol\":17528:17538 baseFactor */\n dup10\n /* \"src/LBFactory.sol\":17552:17564 filterPeriod */\n dup10\n /* \"src/LBFactory.sol\":17578:17589 decayPeriod */\n dup10\n /* \"src/LBFactory.sol\":17603:17618 reductionFactor */\n dup10\n /* \"src/LBFactory.sol\":17632:17650 variableFeeControl */\n dup10\n /* \"src/LBFactory.sol\":17664:17677 protocolShare */\n dup10\n /* \"src/LBFactory.sol\":17691:17715 maxVolatilityAccumulator */\n dup10\n /* \"src/LBFactory.sol\":17489:17490 0 */\n 0x00\n /* \"src/LBFactory.sol\":17481:17491 bytes32(0) */\n dup1\n shl\n /* \"src/LBFactory.sol\":17481:17514 bytes32(0).setStaticFeeParameters */\n tag_300\n swap1\n /* \"src/LBFactory.sol\":17481:17725 bytes32(0).setStaticFeeParameters(... */\n swap8\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_299:\n /* \"src/LBFactory.sol\":17464:17725 bytes32 preset = bytes32(0).setStaticFeeParameters(... */\n swap1\n pop\n /* \"src/LBFactory.sol\":17740:17746 isOpen */\n dup2\n /* \"src/LBFactory.sol\":17736:17826 if (isOpen) {... */\n iszero\n tag_301\n jumpi\n /* \"src/LBFactory.sol\":17771:17815 preset.setBool(true, _OFFSET_IS_PRESET_OPEN) */\n tag_302\n /* \"src/LBFactory.sol\":17786:17790 true */\n 0x01\n /* \"src/LBFactory.sol\":2167:2170 255 */\n 0xff\n /* \"src/LBFactory.sol\":17771:17777 preset */\n dup4\n /* \"src/LBFactory.sol\":17771:17785 preset.setBool */\n tag_303\n swap1\n /* \"src/LBFactory.sol\":17771:17815 preset.setBool(true, _OFFSET_IS_PRESET_OPEN) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_302:\n /* \"src/LBFactory.sol\":17762:17815 preset = preset.setBool(true, _OFFSET_IS_PRESET_OPEN) */\n swap1\n pop\n /* \"src/LBFactory.sol\":17736:17826 if (isOpen) {... */\n tag_301:\n /* \"src/LBFactory.sol\":17836:17874 _presets.set(binStep, uint256(preset)) */\n tag_304\n /* \"src/LBFactory.sol\":17849:17856 binStep */\n dup11\n /* \"src/LBFactory.sol\":17836:17874 _presets.set(binStep, uint256(preset)) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":17866:17872 preset */\n dup3\n /* \"src/LBFactory.sol\":17858:17873 uint256(preset) */\n 0x00\n shr\n /* \"src/LBFactory.sol\":17836:17844 _presets */\n 0x05\n /* \"src/LBFactory.sol\":17836:17848 _presets.set */\n tag_305\n swap1\n /* \"src/LBFactory.sol\":17836:17874 _presets.set(binStep, uint256(preset)) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_304:\n pop\n /* \"src/LBFactory.sol\":17913:17920 binStep */\n dup10\n /* \"src/LBFactory.sol\":17890:18131 PresetSet(... */\n 0xffff\n and\n 0x839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28\n /* \"src/LBFactory.sol\":17934:17944 baseFactor */\n dup11\n /* \"src/LBFactory.sol\":17958:17970 filterPeriod */\n dup11\n /* \"src/LBFactory.sol\":17984:17995 decayPeriod */\n dup11\n /* \"src/LBFactory.sol\":18009:18024 reductionFactor */\n dup11\n /* \"src/LBFactory.sol\":18038:18056 variableFeeControl */\n dup11\n /* \"src/LBFactory.sol\":18070:18083 protocolShare */\n dup11\n /* \"src/LBFactory.sol\":18097:18121 maxVolatilityAccumulator */\n dup11\n /* \"src/LBFactory.sol\":17890:18131 PresetSet(... */\n mload(0x40)\n tag_306\n swap8\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_307\n jump\t// in\n tag_306:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"src/LBFactory.sol\":18179:18185 isOpen */\n dup2\n /* \"src/LBFactory.sol\":18147:18186 PresetOpenStateChanged(binStep, isOpen) */\n iszero\n iszero\n /* \"src/LBFactory.sol\":18170:18177 binStep */\n dup11\n /* \"src/LBFactory.sol\":18147:18186 PresetOpenStateChanged(binStep, isOpen) */\n 0xffff\n and\n 0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"src/LBFactory.sol\":17374:18193 {... */\n pop\n /* \"src/LBFactory.sol\":17054:18193 function setPreset(... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":21951:22455 function setLBHooksParametersOnPair(... */\n tag_106:\n /* \"src/LBFactory.sol\":1948:1982 keccak256(\"LB_HOOKS_MANAGER_ROLE\") */\n 0xdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n tag_309\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3202:3206 role */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3201 _checkRole */\n tag_274\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n jump\t// in\n tag_309:\n /* \"src/LBFactory.sol\":22242:22243 0 */\n 0x00\n /* \"src/LBFactory.sol\":22199:22244 Hooks.getHooks(hooksParameters) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":22199:22230 Hooks.getHooks(hooksParameters) */\n tag_311\n /* \"src/LBFactory.sol\":22214:22229 hooksParameters */\n dup6\n /* \"src/LBFactory.sol\":22199:22213 Hooks.getHooks */\n tag_312\n /* \"src/LBFactory.sol\":22199:22230 Hooks.getHooks(hooksParameters) */\n jump\t// in\n tag_311:\n /* \"src/LBFactory.sol\":22199:22244 Hooks.getHooks(hooksParameters) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBFactory.sol\":22199:22284 Hooks.getHooks(hooksParameters) == address(0) || Hooks.getFlags(hooksParameters) == 0 */\n dup1\n tag_313\n jumpi\n pop\n /* \"src/LBFactory.sol\":22283:22284 0 */\n 0x00\n /* \"src/LBFactory.sol\":22248:22284 Hooks.getFlags(hooksParameters) == 0 */\n 0xa0\n shl\n /* \"src/LBFactory.sol\":22248:22279 Hooks.getFlags(hooksParameters) */\n tag_314\n /* \"src/LBFactory.sol\":22263:22278 hooksParameters */\n dup6\n /* \"src/LBFactory.sol\":22248:22262 Hooks.getFlags */\n tag_315\n /* \"src/LBFactory.sol\":22248:22279 Hooks.getFlags(hooksParameters) */\n jump\t// in\n tag_314:\n /* \"src/LBFactory.sol\":22248:22284 Hooks.getFlags(hooksParameters) == 0 */\n not(0xffffffffffffffffffffffffffffffffffffffff)\n and\n eq\n /* \"src/LBFactory.sol\":22199:22284 Hooks.getHooks(hooksParameters) == address(0) || Hooks.getFlags(hooksParameters) == 0 */\n tag_313:\n /* \"src/LBFactory.sol\":22195:22353 if (Hooks.getHooks(hooksParameters) == address(0) || Hooks.getFlags(hooksParameters) == 0) {... */\n iszero\n tag_316\n jumpi\n /* \"src/LBFactory.sol\":22307:22342 LBFactory__InvalidHooksParameters() */\n mload(0x40)\n 0xd43a15d100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":22195:22353 if (Hooks.getHooks(hooksParameters) == address(0) || Hooks.getFlags(hooksParameters) == 0) {... */\n tag_316:\n /* \"src/LBFactory.sol\":22363:22448 _setLBHooksParametersOnPair(tokenX, tokenY, binStep, hooksParameters, onHooksSetData) */\n tag_317\n /* \"src/LBFactory.sol\":22391:22397 tokenX */\n dup8\n /* \"src/LBFactory.sol\":22399:22405 tokenY */\n dup8\n /* \"src/LBFactory.sol\":22407:22414 binStep */\n dup8\n /* \"src/LBFactory.sol\":22416:22431 hooksParameters */\n dup8\n /* \"src/LBFactory.sol\":22433:22447 onHooksSetData */\n dup8\n dup8\n /* \"src/LBFactory.sol\":22363:22448 _setLBHooksParametersOnPair(tokenX, tokenY, binStep, hooksParameters, onHooksSetData) */\n dup1\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap4\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup4\n dup4\n dup1\n dup3\n dup5\n calldatacopy\n 0x00\n dup2\n dup5\n add\n mstore\n not(0x1f)\n 0x1f\n dup3\n add\n and\n swap1\n pop\n dup1\n dup4\n add\n swap3\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":22363:22390 _setLBHooksParametersOnPair */\n tag_280\n /* \"src/LBFactory.sol\":22363:22448 _setLBHooksParametersOnPair(tokenX, tokenY, binStep, hooksParameters, onHooksSetData) */\n jump\t// in\n tag_317:\n /* \"src/LBFactory.sol\":21951:22455 function setLBHooksParametersOnPair(... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":26236:26332 function forceDecay(ILBPair pair) external override onlyOwner {... */\n tag_110:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_319\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_319:\n /* \"src/LBFactory.sol\":26308:26312 pair */\n dup1\n /* \"src/LBFactory.sol\":26308:26323 pair.forceDecay */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xd3b9fbe4\n /* \"src/LBFactory.sol\":26308:26325 pair.forceDecay() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_321\n jumpi\n 0x00\n dup1\n revert\n tag_321:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_323\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_323:\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":26236:26332 function forceDecay(ILBPair pair) external override onlyOwner {... */\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":4471:4589 function getFeeRecipient() external view override returns (address feeRecipient) {... */\n tag_112:\n /* \"src/LBFactory.sol\":4530:4550 address feeRecipient */\n 0x00\n /* \"src/LBFactory.sol\":4569:4582 _feeRecipient */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":4562:4582 return _feeRecipient */\n swap1\n pop\n /* \"src/LBFactory.sol\":4471:4589 function getFeeRecipient() external view override returns (address feeRecipient) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":18573:19105 function setPresetOpenState(uint16 binStep, bool isOpen) external override onlyOwner {... */\n tag_118:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_326\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_326:\n /* \"src/LBFactory.sol\":18673:18699 _presets.contains(binStep) */\n tag_328\n /* \"src/LBFactory.sol\":18691:18698 binStep */\n dup3\n /* \"src/LBFactory.sol\":18673:18699 _presets.contains(binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":18673:18681 _presets */\n 0x05\n /* \"src/LBFactory.sol\":18673:18690 _presets.contains */\n tag_329\n swap1\n /* \"src/LBFactory.sol\":18673:18699 _presets.contains(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_328:\n /* \"src/LBFactory.sol\":18668:18746 if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_330\n jumpi\n /* \"src/LBFactory.sol\":18738:18745 binStep */\n dup2\n /* \"src/LBFactory.sol\":18708:18746 LBFactory__BinStepHasNoPreset(binStep) */\n mload(0x40)\n 0xfb22c17e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_331\n swap2\n swap1\n tag_298\n jump\t// in\n tag_331:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":18668:18746 if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_330:\n /* \"src/LBFactory.sol\":18757:18771 bytes32 preset */\n 0x00\n /* \"src/LBFactory.sol\":18782:18803 _presets.get(binStep) */\n tag_332\n /* \"src/LBFactory.sol\":18795:18802 binStep */\n dup4\n /* \"src/LBFactory.sol\":18782:18803 _presets.get(binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":18782:18790 _presets */\n 0x05\n /* \"src/LBFactory.sol\":18782:18794 _presets.get */\n tag_333\n swap1\n /* \"src/LBFactory.sol\":18782:18803 _presets.get(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_332:\n /* \"src/LBFactory.sol\":18774:18804 bytes32(_presets.get(binStep)) */\n 0x00\n shl\n /* \"src/LBFactory.sol\":18757:18804 bytes32 preset = bytes32(_presets.get(binStep)) */\n swap1\n pop\n /* \"src/LBFactory.sol\":18864:18870 isOpen */\n dup2\n /* \"src/LBFactory.sol\":18819:18870 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) == isOpen */\n iszero\n iszero\n /* \"src/LBFactory.sol\":18819:18860 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n tag_334\n /* \"src/LBFactory.sol\":2167:2170 255 */\n 0xff\n /* \"src/LBFactory.sol\":18819:18825 preset */\n dup4\n /* \"src/LBFactory.sol\":18819:18836 preset.decodeBool */\n tag_335\n swap1\n /* \"src/LBFactory.sol\":18819:18860 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_334:\n /* \"src/LBFactory.sol\":18819:18870 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) == isOpen */\n iszero\n iszero\n sub\n /* \"src/LBFactory.sol\":18815:18955 if (preset.decodeBool(_OFFSET_IS_PRESET_OPEN) == isOpen) {... */\n tag_336\n jumpi\n /* \"src/LBFactory.sol\":18893:18944 LBFactory__PresetOpenStateIsAlreadyInTheSameState() */\n mload(0x40)\n 0x237c71b600000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":18815:18955 if (preset.decodeBool(_OFFSET_IS_PRESET_OPEN) == isOpen) {... */\n tag_336:\n /* \"src/LBFactory.sol\":18965:19043 _presets.set(binStep, uint256(preset.setBool(isOpen, _OFFSET_IS_PRESET_OPEN))) */\n tag_337\n /* \"src/LBFactory.sol\":18978:18985 binStep */\n dup4\n /* \"src/LBFactory.sol\":18965:19043 _presets.set(binStep, uint256(preset.setBool(isOpen, _OFFSET_IS_PRESET_OPEN))) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":18995:19041 preset.setBool(isOpen, _OFFSET_IS_PRESET_OPEN) */\n tag_338\n /* \"src/LBFactory.sol\":19010:19016 isOpen */\n dup5\n /* \"src/LBFactory.sol\":2167:2170 255 */\n 0xff\n /* \"src/LBFactory.sol\":18995:19001 preset */\n dup6\n /* \"src/LBFactory.sol\":18995:19009 preset.setBool */\n tag_303\n swap1\n /* \"src/LBFactory.sol\":18995:19041 preset.setBool(isOpen, _OFFSET_IS_PRESET_OPEN) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_338:\n /* \"src/LBFactory.sol\":18987:19042 uint256(preset.setBool(isOpen, _OFFSET_IS_PRESET_OPEN)) */\n 0x00\n shr\n /* \"src/LBFactory.sol\":18965:18973 _presets */\n 0x05\n /* \"src/LBFactory.sol\":18965:18977 _presets.set */\n tag_305\n swap1\n /* \"src/LBFactory.sol\":18965:19043 _presets.set(binStep, uint256(preset.setBool(isOpen, _OFFSET_IS_PRESET_OPEN))) */\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_337:\n pop\n /* \"src/LBFactory.sol\":19091:19097 isOpen */\n dup2\n /* \"src/LBFactory.sol\":19059:19098 PresetOpenStateChanged(binStep, isOpen) */\n iszero\n iszero\n /* \"src/LBFactory.sol\":19082:19089 binStep */\n dup4\n /* \"src/LBFactory.sol\":19059:19098 PresetOpenStateChanged(binStep, isOpen) */\n 0xffff\n and\n 0x58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"src/LBFactory.sol\":18658:19105 {... */\n pop\n /* \"src/LBFactory.sol\":18573:19105 function setPresetOpenState(uint16 binStep, bool isOpen) external override onlyOwner {... */\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":5439:5565 function getNumberOfLBPairs() external view override returns (uint256 lbPairNumber) {... */\n tag_120:\n /* \"src/LBFactory.sol\":5501:5521 uint256 lbPairNumber */\n 0x00\n /* \"src/LBFactory.sol\":5540:5551 _allLBPairs */\n 0x03\n /* \"src/LBFactory.sol\":5540:5558 _allLBPairs.length */\n dup1\n sload\n swap1\n pop\n /* \"src/LBFactory.sol\":5533:5558 return _allLBPairs.length */\n swap1\n pop\n /* \"src/LBFactory.sol\":5439:5565 function getNumberOfLBPairs() external view override returns (uint256 lbPairNumber) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":24596:24860 function addQuoteAsset(IERC20 quoteAsset) external override onlyOwner {... */\n tag_125:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_341\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_341:\n /* \"src/LBFactory.sol\":24681:24726 _quoteAssetWhitelist.add(address(quoteAsset)) */\n tag_343\n /* \"src/LBFactory.sol\":24714:24724 quoteAsset */\n dup2\n /* \"src/LBFactory.sol\":24681:24701 _quoteAssetWhitelist */\n 0x08\n /* \"src/LBFactory.sol\":24681:24705 _quoteAssetWhitelist.add */\n tag_344\n swap1\n /* \"src/LBFactory.sol\":24681:24726 _quoteAssetWhitelist.add(address(quoteAsset)) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_343:\n /* \"src/LBFactory.sol\":24676:24811 if (!_quoteAssetWhitelist.add(address(quoteAsset))) {... */\n tag_345\n jumpi\n /* \"src/LBFactory.sol\":24789:24799 quoteAsset */\n dup1\n /* \"src/LBFactory.sol\":24749:24800 LBFactory__QuoteAssetAlreadyWhitelisted(quoteAsset) */\n mload(0x40)\n 0x03ce0ad900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_346\n swap2\n swap1\n tag_69\n jump\t// in\n tag_346:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":24676:24811 if (!_quoteAssetWhitelist.add(address(quoteAsset))) {... */\n tag_345:\n /* \"src/LBFactory.sol\":24842:24852 quoteAsset */\n dup1\n /* \"src/LBFactory.sol\":24826:24853 QuoteAssetAdded(quoteAsset) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"src/LBFactory.sol\":24596:24860 function addQuoteAsset(IERC20 quoteAsset) external override onlyOwner {... */\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":9425:9558 function getAllBinSteps() external view override returns (uint256[] memory binStepWithPreset) {... */\n tag_127:\n /* \"src/LBFactory.sol\":9483:9517 uint256[] memory binStepWithPreset */\n 0x60\n /* \"src/LBFactory.sol\":9536:9551 _presets.keys() */\n tag_348\n /* \"src/LBFactory.sol\":9536:9544 _presets */\n 0x05\n /* \"src/LBFactory.sol\":9536:9549 _presets.keys */\n tag_349\n /* \"src/LBFactory.sol\":9536:9551 _presets.keys() */\n jump\t// in\n tag_348:\n /* \"src/LBFactory.sol\":9529:9551 return _presets.keys() */\n swap1\n pop\n /* \"src/LBFactory.sol\":9425:9558 function getAllBinSteps() external view override returns (uint256[] memory binStepWithPreset) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":12340:14836 function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)... */\n tag_132:\n /* \"src/LBFactory.sol\":12476:12488 ILBPair pair */\n 0x00\n /* \"src/LBFactory.sol\":12509:12535 _presets.contains(binStep) */\n tag_351\n /* \"src/LBFactory.sol\":12527:12534 binStep */\n dup3\n /* \"src/LBFactory.sol\":12509:12535 _presets.contains(binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":12509:12517 _presets */\n 0x05\n /* \"src/LBFactory.sol\":12509:12526 _presets.contains */\n tag_329\n swap1\n /* \"src/LBFactory.sol\":12509:12535 _presets.contains(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_351:\n /* \"src/LBFactory.sol\":12504:12582 if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_352\n jumpi\n /* \"src/LBFactory.sol\":12574:12581 binStep */\n dup2\n /* \"src/LBFactory.sol\":12544:12582 LBFactory__BinStepHasNoPreset(binStep) */\n mload(0x40)\n 0xfb22c17e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_353\n swap2\n swap1\n tag_298\n jump\t// in\n tag_353:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":12504:12582 if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_352:\n /* \"src/LBFactory.sol\":12593:12607 bytes32 preset */\n 0x00\n /* \"src/LBFactory.sol\":12618:12639 _presets.get(binStep) */\n tag_354\n /* \"src/LBFactory.sol\":12631:12638 binStep */\n dup4\n /* \"src/LBFactory.sol\":12618:12639 _presets.get(binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":12618:12626 _presets */\n 0x05\n /* \"src/LBFactory.sol\":12618:12630 _presets.get */\n tag_333\n swap1\n /* \"src/LBFactory.sol\":12618:12639 _presets.get(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_354:\n /* \"src/LBFactory.sol\":12610:12640 bytes32(_presets.get(binStep)) */\n 0x00\n shl\n /* \"src/LBFactory.sol\":12593:12640 bytes32 preset = bytes32(_presets.get(binStep)) */\n swap1\n pop\n /* \"src/LBFactory.sol\":12650:12662 bool isOwner */\n 0x00\n /* \"src/LBFactory.sol\":12679:12686 owner() */\n tag_355\n /* \"src/LBFactory.sol\":12679:12684 owner */\n tag_172\n /* \"src/LBFactory.sol\":12679:12686 owner() */\n jump\t// in\n tag_355:\n /* \"src/LBFactory.sol\":12665:12686 msg.sender == owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":12665:12675 msg.sender */\n caller\n /* \"src/LBFactory.sol\":12665:12686 msg.sender == owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBFactory.sol\":12650:12686 bool isOwner = msg.sender == owner() */\n swap1\n pop\n /* \"src/LBFactory.sol\":12702:12723 _isPresetOpen(preset) */\n tag_356\n /* \"src/LBFactory.sol\":12716:12722 preset */\n dup3\n /* \"src/LBFactory.sol\":12702:12715 _isPresetOpen */\n tag_240\n /* \"src/LBFactory.sol\":12702:12723 _isPresetOpen(preset) */\n jump\t// in\n tag_356:\n /* \"src/LBFactory.sol\":12701:12723 !_isPresetOpen(preset) */\n iszero\n /* \"src/LBFactory.sol\":12701:12735 !_isPresetOpen(preset) && !isOwner */\n dup1\n iszero\n tag_357\n jumpi\n pop\n /* \"src/LBFactory.sol\":12728:12735 isOwner */\n dup1\n /* \"src/LBFactory.sol\":12727:12735 !isOwner */\n iszero\n /* \"src/LBFactory.sol\":12701:12735 !_isPresetOpen(preset) && !isOwner */\n tag_357:\n /* \"src/LBFactory.sol\":12697:12823 if (!_isPresetOpen(preset) && !isOwner) {... */\n iszero\n tag_358\n jumpi\n /* \"src/LBFactory.sol\":12792:12802 msg.sender */\n caller\n /* \"src/LBFactory.sol\":12804:12811 binStep */\n dup5\n /* \"src/LBFactory.sol\":12758:12812 LBFactory__PresetIsLockedForUsers(msg.sender, binStep) */\n mload(0x40)\n 0x09f85fce00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_359\n swap3\n swap2\n swap1\n tag_360\n jump\t// in\n tag_359:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":12697:12823 if (!_isPresetOpen(preset) && !isOwner) {... */\n tag_358:\n /* \"src/LBFactory.sol\":12838:12884 _quoteAssetWhitelist.contains(address(tokenY)) */\n tag_361\n /* \"src/LBFactory.sol\":12876:12882 tokenY */\n dup7\n /* \"src/LBFactory.sol\":12838:12858 _quoteAssetWhitelist */\n 0x08\n /* \"src/LBFactory.sol\":12838:12867 _quoteAssetWhitelist.contains */\n tag_271\n swap1\n /* \"src/LBFactory.sol\":12838:12884 _quoteAssetWhitelist.contains(address(tokenY)) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_361:\n /* \"src/LBFactory.sol\":12833:12936 if (!_quoteAssetWhitelist.contains(address(tokenY))) revert LBFactory__QuoteAssetNotWhitelisted(tokenY) */\n tag_362\n jumpi\n /* \"src/LBFactory.sol\":12929:12935 tokenY */\n dup6\n /* \"src/LBFactory.sol\":12893:12936 LBFactory__QuoteAssetNotWhitelisted(tokenY) */\n mload(0x40)\n 0x8e888ef300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_363\n swap2\n swap1\n tag_69\n jump\t// in\n tag_363:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":12833:12936 if (!_quoteAssetWhitelist.contains(address(tokenY))) revert LBFactory__QuoteAssetNotWhitelisted(tokenY) */\n tag_362:\n /* \"src/LBFactory.sol\":12961:12967 tokenY */\n dup6\n /* \"src/LBFactory.sol\":12951:12967 tokenX == tokenY */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":12951:12957 tokenX */\n dup8\n /* \"src/LBFactory.sol\":12951:12967 tokenX == tokenY */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBFactory.sol\":12947:13013 if (tokenX == tokenY) revert LBFactory__IdenticalAddresses(tokenX) */\n tag_364\n jumpi\n /* \"src/LBFactory.sol\":13006:13012 tokenX */\n dup7\n /* \"src/LBFactory.sol\":12976:13013 LBFactory__IdenticalAddresses(tokenX) */\n mload(0x40)\n 0x2f9b185300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_365\n swap2\n swap1\n tag_69\n jump\t// in\n tag_365:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":12947:13013 if (tokenX == tokenY) revert LBFactory__IdenticalAddresses(tokenX) */\n tag_364:\n /* \"src/LBFactory.sol\":13094:13139 PriceHelper.getPriceFromId(activeId, binStep) */\n tag_366\n /* \"src/LBFactory.sol\":13121:13129 activeId */\n dup6\n /* \"src/LBFactory.sol\":13131:13138 binStep */\n dup6\n /* \"src/LBFactory.sol\":13094:13120 PriceHelper.getPriceFromId */\n tag_367\n /* \"src/LBFactory.sol\":13094:13139 PriceHelper.getPriceFromId(activeId, binStep) */\n jump\t// in\n tag_366:\n pop\n /* \"src/LBFactory.sol\":13258:13271 IERC20 tokenA */\n 0x00\n /* \"src/LBFactory.sol\":13273:13286 IERC20 tokenB */\n dup1\n /* \"src/LBFactory.sol\":13290:13317 _sortTokens(tokenX, tokenY) */\n tag_368\n /* \"src/LBFactory.sol\":13302:13308 tokenX */\n dup10\n /* \"src/LBFactory.sol\":13310:13316 tokenY */\n dup10\n /* \"src/LBFactory.sol\":13290:13301 _sortTokens */\n tag_369\n /* \"src/LBFactory.sol\":13290:13317 _sortTokens(tokenX, tokenY) */\n jump\t// in\n tag_368:\n /* \"src/LBFactory.sol\":13257:13317 (IERC20 tokenA, IERC20 tokenB) = _sortTokens(tokenX, tokenY) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBFactory.sol\":13396:13397 0 */\n 0x00\n /* \"src/LBFactory.sol\":13369:13398 address(tokenA) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":13377:13383 tokenA */\n dup3\n /* \"src/LBFactory.sol\":13369:13398 address(tokenA) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBFactory.sol\":13365:13431 if (address(tokenA) == address(0)) revert LBFactory__AddressZero() */\n tag_370\n jumpi\n /* \"src/LBFactory.sol\":13407:13431 LBFactory__AddressZero() */\n mload(0x40)\n 0x95cf3ee400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":13365:13431 if (address(tokenA) == address(0)) revert LBFactory__AddressZero() */\n tag_370:\n /* \"src/LBFactory.sol\":13510:13511 0 */\n 0x00\n /* \"src/LBFactory.sol\":13445:13512 address(_lbPairsInfo[tokenA][tokenB][binStep].LBPair) != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":13453:13465 _lbPairsInfo */\n 0x04\n /* \"src/LBFactory.sol\":13453:13473 _lbPairsInfo[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":13466:13472 tokenA */\n dup5\n /* \"src/LBFactory.sol\":13453:13473 _lbPairsInfo[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":13453:13481 _lbPairsInfo[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":13474:13480 tokenB */\n dup4\n /* \"src/LBFactory.sol\":13453:13481 _lbPairsInfo[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":13453:13490 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0x00\n /* \"src/LBFactory.sol\":13482:13489 binStep */\n dup9\n /* \"src/LBFactory.sol\":13453:13490 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":13453:13497 _lbPairsInfo[tokenA][tokenB][binStep].LBPair */\n 0x00\n add\n 0x02\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":13445:13512 address(_lbPairsInfo[tokenA][tokenB][binStep].LBPair) != address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBFactory.sol\":13441:13601 if (address(_lbPairsInfo[tokenA][tokenB][binStep].LBPair) != address(0)) {... */\n tag_371\n jumpi\n /* \"src/LBFactory.sol\":13566:13572 tokenX */\n dup9\n /* \"src/LBFactory.sol\":13574:13580 tokenY */\n dup9\n /* \"src/LBFactory.sol\":13582:13589 binStep */\n dup8\n /* \"src/LBFactory.sol\":13535:13590 LBFactory__LBPairAlreadyExists(tokenX, tokenY, binStep) */\n mload(0x40)\n 0xcb27a43500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_372\n swap4\n swap3\n swap2\n swap1\n tag_260\n jump\t// in\n tag_372:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":13441:13601 if (address(_lbPairsInfo[tokenA][tokenB][binStep].LBPair) != address(0)) {... */\n tag_371:\n /* \"src/LBFactory.sol\":13625:13642 bytes memory data */\n 0x00\n /* \"src/LBFactory.sol\":13756:13778 preset.getBaseFactor() */\n tag_373\n /* \"src/LBFactory.sol\":13756:13762 preset */\n dup6\n /* \"src/LBFactory.sol\":13756:13776 preset.getBaseFactor */\n tag_374\n /* \"src/LBFactory.sol\":13756:13778 preset.getBaseFactor() */\n jump\t// in\n tag_373:\n /* \"src/LBFactory.sol\":13796:13820 preset.getFilterPeriod() */\n tag_375\n /* \"src/LBFactory.sol\":13796:13802 preset */\n dup7\n /* \"src/LBFactory.sol\":13796:13818 preset.getFilterPeriod */\n tag_376\n /* \"src/LBFactory.sol\":13796:13820 preset.getFilterPeriod() */\n jump\t// in\n tag_375:\n /* \"src/LBFactory.sol\":13838:13861 preset.getDecayPeriod() */\n tag_377\n /* \"src/LBFactory.sol\":13838:13844 preset */\n dup8\n /* \"src/LBFactory.sol\":13838:13859 preset.getDecayPeriod */\n tag_378\n /* \"src/LBFactory.sol\":13838:13861 preset.getDecayPeriod() */\n jump\t// in\n tag_377:\n /* \"src/LBFactory.sol\":13879:13906 preset.getReductionFactor() */\n tag_379\n /* \"src/LBFactory.sol\":13879:13885 preset */\n dup9\n /* \"src/LBFactory.sol\":13879:13904 preset.getReductionFactor */\n tag_380\n /* \"src/LBFactory.sol\":13879:13906 preset.getReductionFactor() */\n jump\t// in\n tag_379:\n /* \"src/LBFactory.sol\":13924:13954 preset.getVariableFeeControl() */\n tag_381\n /* \"src/LBFactory.sol\":13924:13930 preset */\n dup10\n /* \"src/LBFactory.sol\":13924:13952 preset.getVariableFeeControl */\n tag_382\n /* \"src/LBFactory.sol\":13924:13954 preset.getVariableFeeControl() */\n jump\t// in\n tag_381:\n /* \"src/LBFactory.sol\":13972:13997 preset.getProtocolShare() */\n tag_383\n /* \"src/LBFactory.sol\":13972:13978 preset */\n dup11\n /* \"src/LBFactory.sol\":13972:13995 preset.getProtocolShare */\n tag_384\n /* \"src/LBFactory.sol\":13972:13997 preset.getProtocolShare() */\n jump\t// in\n tag_383:\n /* \"src/LBFactory.sol\":14015:14051 preset.getMaxVolatilityAccumulator() */\n tag_385\n /* \"src/LBFactory.sol\":14015:14021 preset */\n dup12\n /* \"src/LBFactory.sol\":14015:14049 preset.getMaxVolatilityAccumulator */\n tag_386\n /* \"src/LBFactory.sol\":14015:14051 preset.getMaxVolatilityAccumulator() */\n jump\t// in\n tag_385:\n /* \"src/LBFactory.sol\":14069:14077 activeId */\n dup15\n /* \"src/LBFactory.sol\":13645:14091 abi.encodeWithSignature(\"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)\",... */\n add(0x24, mload(0x40))\n tag_387\n swap9\n swap8\n swap7\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_388\n jump\t// in\n tag_387:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n and(not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff), 0x47973bff00000000000000000000000000000000000000000000000000000000)\n 0x20\n dup3\n add\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup4\n dup2\n dup4\n and\n or\n dup4\n mstore\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":13625:14091 bytes memory data = abi.encodeWithSignature(\"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)\",... */\n swap1\n pop\n /* \"src/LBFactory.sol\":14106:14118 bytes32 salt */\n 0x00\n /* \"src/LBFactory.sol\":14148:14154 tokenA */\n dup4\n /* \"src/LBFactory.sol\":14156:14162 tokenB */\n dup4\n /* \"src/LBFactory.sol\":14164:14171 binStep */\n dup10\n /* \"src/LBFactory.sol\":14131:14172 abi.encodePacked(tokenA, tokenB, binStep) */\n add(0x20, mload(0x40))\n tag_389\n swap4\n swap3\n swap2\n swap1\n tag_390\n jump\t// in\n tag_389:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"src/LBFactory.sol\":14121:14173 keccak256(abi.encodePacked(tokenA, tokenB, binStep)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBFactory.sol\":14106:14173 bytes32 salt = keccak256(abi.encodePacked(tokenA, tokenB, binStep)) */\n swap1\n pop\n /* \"src/LBFactory.sol\":14188:14209 bytes memory bytecode */\n 0x00\n /* \"src/LBFactory.sol\":14246:14282 type(LBPairBeaconProxy).creationCode */\n mload(0x40)\n dup1\n 0x20\n add\n tag_391\n swap1\n tag_392\n jump\t// in\n tag_391:\n 0x20\n dup3\n add\n dup2\n sub\n dup3\n mstore\n not(0x1f)\n 0x1f\n dup3\n add\n and\n 0x40\n mstore\n pop\n /* \"src/LBFactory.sol\":14311:14324 _lbPairBeacon */\n 0x02\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":14326:14332 tokenX */\n dup14\n /* \"src/LBFactory.sol\":14334:14340 tokenY */\n dup14\n /* \"src/LBFactory.sol\":14342:14349 binStep */\n dup13\n /* \"src/LBFactory.sol\":14351:14355 data */\n dup8\n /* \"src/LBFactory.sol\":14300:14356 abi.encode(_lbPairBeacon, tokenX, tokenY, binStep, data) */\n add(0x20, mload(0x40))\n tag_393\n swap6\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_394\n jump\t// in\n tag_393:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"src/LBFactory.sol\":14212:14370 abi.encodePacked(... */\n add(0x20, mload(0x40))\n tag_395\n swap3\n swap2\n swap1\n tag_396\n jump\t// in\n tag_395:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"src/LBFactory.sol\":14188:14370 bytes memory bytecode = abi.encodePacked(... */\n swap1\n pop\n /* \"src/LBFactory.sol\":14440:14473 Create2.deploy(0, salt, bytecode) */\n tag_397\n /* \"src/LBFactory.sol\":14455:14456 0 */\n 0x00\n /* \"src/LBFactory.sol\":14458:14462 salt */\n dup4\n /* \"src/LBFactory.sol\":14464:14472 bytecode */\n dup4\n /* \"src/LBFactory.sol\":14440:14454 Create2.deploy */\n tag_398\n /* \"src/LBFactory.sol\":14440:14473 Create2.deploy(0, salt, bytecode) */\n jump\t// in\n tag_397:\n /* \"src/LBFactory.sol\":14425:14474 pair = ILBPair(Create2.deploy(0, salt, bytecode)) */\n swap8\n pop\n /* \"src/LBFactory.sol\":13611:14485 {... */\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":14547:14649 LBPairInformation({binStep: binStep, LBPair: pair, createdByOwner: isOwner, ignoredForRouting: false}) */\n mload(0x40)\n dup1\n 0x80\n add\n 0x40\n mstore\n dup1\n /* \"src/LBFactory.sol\":14575:14582 binStep */\n dup8\n /* \"src/LBFactory.sol\":14547:14649 LBPairInformation({binStep: binStep, LBPair: pair, createdByOwner: isOwner, ignoredForRouting: false}) */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n /* \"src/LBFactory.sol\":14592:14596 pair */\n dup7\n /* \"src/LBFactory.sol\":14547:14649 LBPairInformation({binStep: binStep, LBPair: pair, createdByOwner: isOwner, ignoredForRouting: false}) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n /* \"src/LBFactory.sol\":14614:14621 isOwner */\n dup5\n /* \"src/LBFactory.sol\":14547:14649 LBPairInformation({binStep: binStep, LBPair: pair, createdByOwner: isOwner, ignoredForRouting: false}) */\n iszero\n iszero\n dup2\n mstore\n 0x20\n add\n /* \"src/LBFactory.sol\":14642:14647 false */\n 0x00\n /* \"src/LBFactory.sol\":14547:14649 LBPairInformation({binStep: binStep, LBPair: pair, createdByOwner: isOwner, ignoredForRouting: false}) */\n iszero\n iszero\n dup2\n mstore\n pop\n /* \"src/LBFactory.sol\":14495:14507 _lbPairsInfo */\n 0x04\n /* \"src/LBFactory.sol\":14495:14515 _lbPairsInfo[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":14508:14514 tokenA */\n dup5\n /* \"src/LBFactory.sol\":14495:14515 _lbPairsInfo[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":14495:14523 _lbPairsInfo[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":14516:14522 tokenB */\n dup4\n /* \"src/LBFactory.sol\":14495:14523 _lbPairsInfo[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":14495:14532 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0x00\n /* \"src/LBFactory.sol\":14524:14531 binStep */\n dup9\n /* \"src/LBFactory.sol\":14495:14532 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":14495:14649 _lbPairsInfo[tokenA][tokenB][binStep] =... */\n 0x00\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x00)\n dup2\n sload\n dup2\n 0xffff\n mul\n not\n and\n swap1\n dup4\n 0xffff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x20\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x02)\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x40\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x16)\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n 0x60\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x17)\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n swap1\n pop\n pop\n /* \"src/LBFactory.sol\":14660:14671 _allLBPairs */\n 0x03\n /* \"src/LBFactory.sol\":14677:14681 pair */\n dup6\n /* \"src/LBFactory.sol\":14660:14682 _allLBPairs.push(pair) */\n swap1\n dup1\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n 0x01\n swap1\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n 0x00\n swap1\n swap2\n swap1\n swap2\n swap1\n swap2\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBFactory.sol\":14692:14745 _availableLBPairBinSteps[tokenA][tokenB].add(binStep) */\n tag_400\n /* \"src/LBFactory.sol\":14737:14744 binStep */\n dup7\n /* \"src/LBFactory.sol\":14692:14745 _availableLBPairBinSteps[tokenA][tokenB].add(binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":14692:14716 _availableLBPairBinSteps */\n 0x0a\n /* \"src/LBFactory.sol\":14692:14724 _availableLBPairBinSteps[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":14717:14723 tokenA */\n dup6\n /* \"src/LBFactory.sol\":14692:14724 _availableLBPairBinSteps[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":14692:14732 _availableLBPairBinSteps[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":14725:14731 tokenB */\n dup5\n /* \"src/LBFactory.sol\":14692:14732 _availableLBPairBinSteps[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":14692:14736 _availableLBPairBinSteps[tokenA][tokenB].add */\n tag_401\n swap1\n /* \"src/LBFactory.sol\":14692:14745 _availableLBPairBinSteps[tokenA][tokenB].add(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_400:\n pop\n /* \"src/LBFactory.sol\":14791:14798 binStep */\n dup6\n /* \"src/LBFactory.sol\":14761:14829 LBPairCreated(tokenX, tokenY, binStep, pair, _allLBPairs.length - 1) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":14783:14789 tokenY */\n dup9\n /* \"src/LBFactory.sol\":14761:14829 LBPairCreated(tokenX, tokenY, binStep, pair, _allLBPairs.length - 1) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":14775:14781 tokenX */\n dup11\n /* \"src/LBFactory.sol\":14761:14829 LBPairCreated(tokenX, tokenY, binStep, pair, _allLBPairs.length - 1) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff\n /* \"src/LBFactory.sol\":14800:14804 pair */\n dup9\n /* \"src/LBFactory.sol\":14827:14828 1 */\n 0x01\n /* \"src/LBFactory.sol\":14806:14817 _allLBPairs */\n 0x03\n /* \"src/LBFactory.sol\":14806:14824 _allLBPairs.length */\n dup1\n sload\n swap1\n pop\n /* \"src/LBFactory.sol\":14806:14828 _allLBPairs.length - 1 */\n tag_402\n swap2\n swap1\n tag_403\n jump\t// in\n tag_402:\n /* \"src/LBFactory.sol\":14761:14829 LBPairCreated(tokenX, tokenY, binStep, pair, _allLBPairs.length - 1) */\n mload(0x40)\n tag_404\n swap3\n swap2\n swap1\n tag_405\n jump\t// in\n tag_404:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log4\n /* \"src/LBFactory.sol\":12494:14836 {... */\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":12340:14836 function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep)... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":1988:2110 bytes32 public constant LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = keccak256(\"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\") */\n tag_136:\n /* \"src/LBFactory.sol\":2056:2110 keccak256(\"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\") */\n 0x9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d\n /* \"src/LBFactory.sol\":1988:2110 bytes32 public constant LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = keccak256(\"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\") */\n dup2\n jump\t// out\n /* \"src/LBFactory.sol\":10632:11765 function getAllLBPairs(IERC20 tokenX, IERC20 tokenY)... */\n tag_141:\n /* \"src/LBFactory.sol\":10749:10792 LBPairInformation[] memory lbPairsAvailable */\n 0x60\n /* \"src/LBFactory.sol\":10833:10846 IERC20 tokenA */\n 0x00\n /* \"src/LBFactory.sol\":10848:10861 IERC20 tokenB */\n dup1\n /* \"src/LBFactory.sol\":10865:10892 _sortTokens(tokenX, tokenY) */\n tag_407\n /* \"src/LBFactory.sol\":10877:10883 tokenX */\n dup6\n /* \"src/LBFactory.sol\":10885:10891 tokenY */\n dup6\n /* \"src/LBFactory.sol\":10865:10876 _sortTokens */\n tag_369\n /* \"src/LBFactory.sol\":10865:10892 _sortTokens(tokenX, tokenY) */\n jump\t// in\n tag_407:\n /* \"src/LBFactory.sol\":10832:10892 (IERC20 tokenA, IERC20 tokenB) = _sortTokens(tokenX, tokenY) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBFactory.sol\":10907:10947 EnumerableSet.UintSet storage addressSet */\n 0x00\n /* \"src/LBFactory.sol\":10950:10974 _availableLBPairBinSteps */\n 0x0a\n /* \"src/LBFactory.sol\":10950:10982 _availableLBPairBinSteps[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":10975:10981 tokenA */\n dup5\n /* \"src/LBFactory.sol\":10950:10982 _availableLBPairBinSteps[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":10950:10990 _availableLBPairBinSteps[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":10983:10989 tokenB */\n dup4\n /* \"src/LBFactory.sol\":10950:10990 _availableLBPairBinSteps[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":10907:10990 EnumerableSet.UintSet storage addressSet = _availableLBPairBinSteps[tokenA][tokenB] */\n swap1\n pop\n /* \"src/LBFactory.sol\":11005:11019 uint256 length */\n 0x00\n /* \"src/LBFactory.sol\":11022:11041 addressSet.length() */\n tag_408\n /* \"src/LBFactory.sol\":11022:11032 addressSet */\n dup3\n /* \"src/LBFactory.sol\":11022:11039 addressSet.length */\n tag_409\n /* \"src/LBFactory.sol\":11022:11041 addressSet.length() */\n jump\t// in\n tag_408:\n /* \"src/LBFactory.sol\":11005:11041 uint256 length = addressSet.length() */\n swap1\n pop\n /* \"src/LBFactory.sol\":11069:11070 0 */\n 0x00\n /* \"src/LBFactory.sol\":11060:11066 length */\n dup2\n /* \"src/LBFactory.sol\":11060:11070 length > 0 */\n gt\n /* \"src/LBFactory.sol\":11056:11749 if (length > 0) {... */\n iszero\n tag_410\n jumpi\n /* \"src/LBFactory.sol\":11133:11139 length */\n dup1\n /* \"src/LBFactory.sol\":11109:11140 new LBPairInformation[](length) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_411\n jumpi\n tag_412\n tag_232\n jump\t// in\n tag_412:\n tag_411:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x20\n mul\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_413\n jumpi\n dup2\n 0x20\n add\n tag_414:\n tag_415\n tag_416\n jump\t// in\n tag_415:\n dup2\n mstore\n 0x20\n add\n swap1\n 0x01\n swap1\n sub\n swap1\n dup2\n tag_414\n jumpi\n swap1\n pop\n tag_413:\n pop\n /* \"src/LBFactory.sol\":11090:11140 lbPairsAvailable = new LBPairInformation[](length) */\n swap5\n pop\n /* \"src/LBFactory.sol\":11159:11216 mapping(uint256 => LBPairInformation) storage lbPairsInfo */\n 0x00\n /* \"src/LBFactory.sol\":11219:11231 _lbPairsInfo */\n 0x04\n /* \"src/LBFactory.sol\":11219:11239 _lbPairsInfo[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":11232:11238 tokenA */\n dup7\n /* \"src/LBFactory.sol\":11219:11239 _lbPairsInfo[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":11219:11247 _lbPairsInfo[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":11240:11246 tokenB */\n dup6\n /* \"src/LBFactory.sol\":11219:11247 _lbPairsInfo[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":11159:11247 mapping(uint256 => LBPairInformation) storage lbPairsInfo = _lbPairsInfo[tokenA][tokenB] */\n swap1\n pop\n /* \"src/LBFactory.sol\":11271:11280 uint256 i */\n 0x00\n /* \"src/LBFactory.sol\":11266:11735 for (uint256 i = 0; i < length; ++i) {... */\n tag_417:\n /* \"src/LBFactory.sol\":11290:11296 length */\n dup3\n /* \"src/LBFactory.sol\":11286:11287 i */\n dup2\n /* \"src/LBFactory.sol\":11286:11296 i < length */\n lt\n /* \"src/LBFactory.sol\":11266:11735 for (uint256 i = 0; i < length; ++i) {... */\n iszero\n tag_418\n jumpi\n /* \"src/LBFactory.sol\":11325:11339 uint16 binStep */\n 0x00\n /* \"src/LBFactory.sol\":11342:11367 addressSet.at(i).safe16() */\n tag_420\n /* \"src/LBFactory.sol\":11342:11358 addressSet.at(i) */\n tag_421\n /* \"src/LBFactory.sol\":11356:11357 i */\n dup4\n /* \"src/LBFactory.sol\":11342:11352 addressSet */\n dup8\n /* \"src/LBFactory.sol\":11342:11355 addressSet.at */\n tag_422\n swap1\n /* \"src/LBFactory.sol\":11342:11358 addressSet.at(i) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_421:\n /* \"src/LBFactory.sol\":11342:11365 addressSet.at(i).safe16 */\n tag_423\n /* \"src/LBFactory.sol\":11342:11367 addressSet.at(i).safe16() */\n jump\t// in\n tag_420:\n /* \"src/LBFactory.sol\":11325:11367 uint16 binStep = addressSet.at(i).safe16() */\n swap1\n pop\n /* \"src/LBFactory.sol\":11412:11716 LBPairInformation({... */\n mload(0x40)\n dup1\n 0x80\n add\n 0x40\n mstore\n dup1\n /* \"src/LBFactory.sol\":11465:11472 binStep */\n dup3\n /* \"src/LBFactory.sol\":11412:11716 LBPairInformation({... */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n /* \"src/LBFactory.sol\":11506:11517 lbPairsInfo */\n dup5\n /* \"src/LBFactory.sol\":11506:11526 lbPairsInfo[binStep] */\n 0x00\n /* \"src/LBFactory.sol\":11518:11525 binStep */\n dup5\n /* \"src/LBFactory.sol\":11506:11526 lbPairsInfo[binStep] */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":11506:11533 lbPairsInfo[binStep].LBPair */\n 0x00\n add\n 0x02\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":11412:11716 LBPairInformation({... */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n /* \"src/LBFactory.sol\":11575:11586 lbPairsInfo */\n dup5\n /* \"src/LBFactory.sol\":11575:11595 lbPairsInfo[binStep] */\n 0x00\n /* \"src/LBFactory.sol\":11587:11594 binStep */\n dup5\n /* \"src/LBFactory.sol\":11575:11595 lbPairsInfo[binStep] */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":11575:11610 lbPairsInfo[binStep].createdByOwner */\n 0x00\n add\n 0x16\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"src/LBFactory.sol\":11412:11716 LBPairInformation({... */\n iszero\n iszero\n dup2\n mstore\n 0x20\n add\n /* \"src/LBFactory.sol\":11655:11666 lbPairsInfo */\n dup5\n /* \"src/LBFactory.sol\":11655:11675 lbPairsInfo[binStep] */\n 0x00\n /* \"src/LBFactory.sol\":11667:11674 binStep */\n dup5\n /* \"src/LBFactory.sol\":11655:11675 lbPairsInfo[binStep] */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":11655:11693 lbPairsInfo[binStep].ignoredForRouting */\n 0x00\n add\n 0x17\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"src/LBFactory.sol\":11412:11716 LBPairInformation({... */\n iszero\n iszero\n dup2\n mstore\n pop\n /* \"src/LBFactory.sol\":11390:11406 lbPairsAvailable */\n dup9\n /* \"src/LBFactory.sol\":11407:11408 i */\n dup4\n /* \"src/LBFactory.sol\":11390:11409 lbPairsAvailable[i] */\n dup2\n mload\n dup2\n lt\n tag_424\n jumpi\n tag_425\n tag_244\n jump\t// in\n tag_425:\n tag_424:\n 0x20\n mul\n 0x20\n add\n add\n /* \"src/LBFactory.sol\":11390:11716 lbPairsAvailable[i] = LBPairInformation({... */\n dup2\n swap1\n mstore\n pop\n /* \"src/LBFactory.sol\":11303:11735 {... */\n pop\n /* \"src/LBFactory.sol\":11298:11301 ++i */\n dup1\n 0x01\n add\n swap1\n pop\n /* \"src/LBFactory.sol\":11266:11735 for (uint256 i = 0; i < length; ++i) {... */\n jump(tag_417)\n tag_418:\n pop\n /* \"src/LBFactory.sol\":11072:11749 {... */\n pop\n /* \"src/LBFactory.sol\":11056:11749 if (length > 0) {... */\n tag_410:\n /* \"src/LBFactory.sol\":10808:11759 unchecked {... */\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":10632:11765 function getAllLBPairs(IERC20 tokenX, IERC20 tokenY)... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":15407:16102 function setLBPairIgnored(IERC20 tokenX, IERC20 tokenY, uint16 binStep, bool ignored) external override onlyOwner {... */\n tag_147:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_427\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_427:\n /* \"src/LBFactory.sol\":15532:15545 IERC20 tokenA */\n 0x00\n /* \"src/LBFactory.sol\":15547:15560 IERC20 tokenB */\n dup1\n /* \"src/LBFactory.sol\":15564:15591 _sortTokens(tokenX, tokenY) */\n tag_429\n /* \"src/LBFactory.sol\":15576:15582 tokenX */\n dup7\n /* \"src/LBFactory.sol\":15584:15590 tokenY */\n dup7\n /* \"src/LBFactory.sol\":15564:15575 _sortTokens */\n tag_369\n /* \"src/LBFactory.sol\":15564:15591 _sortTokens(tokenX, tokenY) */\n jump\t// in\n tag_429:\n /* \"src/LBFactory.sol\":15531:15591 (IERC20 tokenA, IERC20 tokenB) = _sortTokens(tokenX, tokenY) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBFactory.sol\":15602:15642 LBPairInformation memory pairInformation */\n 0x00\n /* \"src/LBFactory.sol\":15645:15657 _lbPairsInfo */\n 0x04\n /* \"src/LBFactory.sol\":15645:15665 _lbPairsInfo[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":15658:15664 tokenA */\n dup5\n /* \"src/LBFactory.sol\":15645:15665 _lbPairsInfo[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":15645:15673 _lbPairsInfo[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":15666:15672 tokenB */\n dup4\n /* \"src/LBFactory.sol\":15645:15673 _lbPairsInfo[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":15645:15682 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0x00\n /* \"src/LBFactory.sol\":15674:15681 binStep */\n dup7\n /* \"src/LBFactory.sol\":15645:15682 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":15602:15682 LBPairInformation memory pairInformation = _lbPairsInfo[tokenA][tokenB][binStep] */\n mload(0x40)\n dup1\n 0x80\n add\n 0x40\n mstore\n swap1\n dup2\n 0x00\n dup3\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffff\n and\n 0xffff\n and\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n 0x00\n dup3\n add\n 0x02\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n 0x00\n dup3\n add\n 0x16\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n iszero\n iszero\n iszero\n iszero\n dup2\n mstore\n 0x20\n add\n 0x00\n dup3\n add\n 0x17\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n iszero\n iszero\n iszero\n iszero\n dup2\n mstore\n pop\n pop\n swap1\n pop\n /* \"src/LBFactory.sol\":15739:15740 0 */\n 0x00\n /* \"src/LBFactory.sol\":15696:15741 address(pairInformation.LBPair) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":15704:15719 pairInformation */\n dup2\n /* \"src/LBFactory.sol\":15704:15726 pairInformation.LBPair */\n 0x20\n add\n mload\n /* \"src/LBFactory.sol\":15696:15741 address(pairInformation.LBPair) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBFactory.sol\":15692:15829 if (address(pairInformation.LBPair) == address(0)) {... */\n tag_430\n jumpi\n /* \"src/LBFactory.sol\":15794:15800 tokenX */\n dup7\n /* \"src/LBFactory.sol\":15802:15808 tokenY */\n dup7\n /* \"src/LBFactory.sol\":15810:15817 binStep */\n dup7\n /* \"src/LBFactory.sol\":15764:15818 LBFactory__LBPairDoesNotExist(tokenX, tokenY, binStep) */\n mload(0x40)\n 0x40aa464400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_431\n swap4\n swap3\n swap2\n swap1\n tag_260\n jump\t// in\n tag_431:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":15692:15829 if (address(pairInformation.LBPair) == address(0)) {... */\n tag_430:\n /* \"src/LBFactory.sol\":15880:15887 ignored */\n dup4\n /* \"src/LBFactory.sol\":15843:15887 pairInformation.ignoredForRouting == ignored */\n iszero\n iszero\n /* \"src/LBFactory.sol\":15843:15858 pairInformation */\n dup2\n /* \"src/LBFactory.sol\":15843:15876 pairInformation.ignoredForRouting */\n 0x60\n add\n mload\n /* \"src/LBFactory.sol\":15843:15887 pairInformation.ignoredForRouting == ignored */\n iszero\n iszero\n sub\n /* \"src/LBFactory.sol\":15839:15945 if (pairInformation.ignoredForRouting == ignored) revert LBFactory__LBPairIgnoredIsAlreadyInTheSameState() */\n tag_432\n jumpi\n /* \"src/LBFactory.sol\":15896:15945 LBFactory__LBPairIgnoredIsAlreadyInTheSameState() */\n mload(0x40)\n 0xddccca00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":15839:15945 if (pairInformation.ignoredForRouting == ignored) revert LBFactory__LBPairIgnoredIsAlreadyInTheSameState() */\n tag_432:\n /* \"src/LBFactory.sol\":16014:16021 ignored */\n dup4\n /* \"src/LBFactory.sol\":15956:15968 _lbPairsInfo */\n 0x04\n /* \"src/LBFactory.sol\":15956:15976 _lbPairsInfo[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":15969:15975 tokenA */\n dup6\n /* \"src/LBFactory.sol\":15956:15976 _lbPairsInfo[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":15956:15984 _lbPairsInfo[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":15977:15983 tokenB */\n dup5\n /* \"src/LBFactory.sol\":15956:15984 _lbPairsInfo[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":15956:15993 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0x00\n /* \"src/LBFactory.sol\":15985:15992 binStep */\n dup8\n /* \"src/LBFactory.sol\":15956:15993 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":15956:16011 _lbPairsInfo[tokenA][tokenB][binStep].ignoredForRouting */\n 0x00\n add\n 0x17\n /* \"src/LBFactory.sol\":15956:16021 _lbPairsInfo[tokenA][tokenB][binStep].ignoredForRouting = ignored */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBFactory.sol\":16063:16078 pairInformation */\n dup1\n /* \"src/LBFactory.sol\":16063:16085 pairInformation.LBPair */\n 0x20\n add\n mload\n /* \"src/LBFactory.sol\":16037:16095 LBPairIgnoredStateChanged(pairInformation.LBPair, ignored) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f\n /* \"src/LBFactory.sol\":16087:16094 ignored */\n dup6\n /* \"src/LBFactory.sol\":16037:16095 LBPairIgnoredStateChanged(pairInformation.LBPair, ignored) */\n mload(0x40)\n tag_433\n swap2\n swap1\n tag_59\n jump\t// in\n tag_433:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"src/LBFactory.sol\":15521:16102 {... */\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":15407:16102 function setLBPairIgnored(IERC20 tokenX, IERC20 tokenY, uint16 binStep, bool ignored) external override onlyOwner {... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":4261:4375 function getMinBinStep() external pure override returns (uint256 minBinStep) {... */\n tag_149:\n /* \"src/LBFactory.sol\":4318:4336 uint256 minBinStep */\n 0x00\n /* \"src/LBFactory.sol\":2218:2219 1 */\n 0x01\n /* \"src/LBFactory.sol\":4348:4368 return _MIN_BIN_STEP */\n swap1\n pop\n /* \"src/LBFactory.sol\":4261:4375 function getMinBinStep() external pure override returns (uint256 minBinStep) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":7318:7577 function getLBPairInformation(IERC20 tokenA, IERC20 tokenB, uint256 binStep)... */\n tag_154:\n /* \"src/LBFactory.sol\":7459:7501 LBPairInformation memory lbPairInformation */\n tag_435\n tag_416\n jump\t// in\n tag_435:\n /* \"src/LBFactory.sol\":7524:7570 _getLBPairInformation(tokenA, tokenB, binStep) */\n tag_437\n /* \"src/LBFactory.sol\":7546:7552 tokenA */\n dup5\n /* \"src/LBFactory.sol\":7554:7560 tokenB */\n dup5\n /* \"src/LBFactory.sol\":7562:7569 binStep */\n dup5\n /* \"src/LBFactory.sol\":7524:7545 _getLBPairInformation */\n tag_257\n /* \"src/LBFactory.sol\":7524:7570 _getLBPairInformation(tokenA, tokenB, binStep) */\n jump\t// in\n tag_437:\n /* \"src/LBFactory.sol\":7517:7570 return _getLBPairInformation(tokenA, tokenB, binStep) */\n swap1\n pop\n /* \"src/LBFactory.sol\":7318:7577 function getLBPairInformation(IERC20 tokenA, IERC20 tokenB, uint256 binStep)... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3155:3256 function renounceOwnership() public virtual onlyOwner {... */\n tag_158:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_439\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_439:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3219:3249 _transferOwnership(address(0)) */\n tag_441\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3246:3247 0 */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3219:3237 _transferOwnership */\n tag_442\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3219:3249 _transferOwnership(address(0)) */\n jump\t// in\n tag_441:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3155:3256 function renounceOwnership() public virtual onlyOwner {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3132:3361 function acceptOwnership() public virtual {... */\n tag_160:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3184:3198 address sender */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3201:3213 _msgSender() */\n tag_444\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3201:3211 _msgSender */\n tag_289\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3201:3213 _msgSender() */\n jump\t// in\n tag_444:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3184:3213 address sender = _msgSender() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3245:3251 sender */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3227:3251 pendingOwner() != sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3227:3241 pendingOwner() */\n tag_445\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3227:3239 pendingOwner */\n tag_207\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3227:3241 pendingOwner() */\n jump\t// in\n tag_445:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3227:3251 pendingOwner() != sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3223:3319 if (pendingOwner() != sender) {... */\n tag_446\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3301:3307 sender */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3274:3308 OwnableUnauthorizedAccount(sender) */\n mload(0x40)\n 0x118cdaa700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_447\n swap2\n swap1\n tag_114\n jump\t// in\n tag_447:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3223:3319 if (pendingOwner() != sender) {... */\n tag_446:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3328:3354 _transferOwnership(sender) */\n tag_448\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3347:3353 sender */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3328:3346 _transferOwnership */\n tag_442\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3328:3354 _transferOwnership(sender) */\n jump\t// in\n tag_448:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3174:3361 {... */\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3132:3361 function acceptOwnership() public virtual {... */\n jump\t// out\n /* \"src/LBFactory.sol\":5757:5888 function getLBPairAtIndex(uint256 index) external view override returns (ILBPair lbPair) {... */\n tag_163:\n /* \"src/LBFactory.sol\":5830:5844 ILBPair lbPair */\n 0x00\n /* \"src/LBFactory.sol\":5863:5874 _allLBPairs */\n 0x03\n /* \"src/LBFactory.sol\":5875:5880 index */\n dup3\n /* \"src/LBFactory.sol\":5863:5881 _allLBPairs[index] */\n dup2\n sload\n dup2\n lt\n tag_450\n jumpi\n tag_451\n tag_244\n jump\t// in\n tag_451:\n tag_450:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":5856:5881 return _allLBPairs[index] */\n swap1\n pop\n /* \"src/LBFactory.sol\":5757:5888 function getLBPairAtIndex(uint256 index) external view override returns (ILBPair lbPair) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":6050:6198 function getNumberOfQuoteAssets() external view override returns (uint256 numberOfQuoteAssets) {... */\n tag_166:\n /* \"src/LBFactory.sol\":6116:6143 uint256 numberOfQuoteAssets */\n 0x00\n /* \"src/LBFactory.sol\":6162:6191 _quoteAssetWhitelist.length() */\n tag_454\n /* \"src/LBFactory.sol\":6162:6182 _quoteAssetWhitelist */\n 0x08\n /* \"src/LBFactory.sol\":6162:6189 _quoteAssetWhitelist.length */\n tag_455\n /* \"src/LBFactory.sol\":6162:6191 _quoteAssetWhitelist.length() */\n jump\t// in\n tag_454:\n /* \"src/LBFactory.sol\":6155:6191 return _quoteAssetWhitelist.length() */\n swap1\n pop\n /* \"src/LBFactory.sol\":6050:6198 function getNumberOfQuoteAssets() external view override returns (uint256 numberOfQuoteAssets) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":4694:4814 function getMaxFlashLoanFee() external pure override returns (uint256 maxFee) {... */\n tag_169:\n /* \"src/LBFactory.sol\":4756:4770 uint256 maxFee */\n 0x00\n /* \"src/LBFactory.sol\":2282:2288 0.1e18 */\n 0x016345785d8a0000\n /* \"src/LBFactory.sol\":4782:4807 return _MAX_FLASHLOAN_FEE */\n swap1\n pop\n /* \"src/LBFactory.sol\":4694:4814 function getMaxFlashLoanFee() external pure override returns (uint256 maxFee) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2441:2585 function owner() public view virtual returns (address) {... */\n tag_172:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2487:2494 address */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2506:2530 OwnableStorage storage $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2533:2553 _getOwnableStorage() */\n tag_458\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2533:2551 _getOwnableStorage */\n tag_459\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2533:2553 _getOwnableStorage() */\n jump\t// in\n tag_458:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2506:2553 OwnableStorage storage $ = _getOwnableStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2570:2571 $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2570:2578 $._owner */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2563:2578 return $._owner */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2441:2585 function owner() public view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":28645:28848 function hasRole(bytes32 role, address account) public view override returns (bool) {... */\n tag_176:\n /* \"src/LBFactory.sol\":28723:28727 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2362:2366 0x00 */\n dup1\n /* \"src/LBFactory.sol\":28751:28769 DEFAULT_ADMIN_ROLE */\n 0x00\n shl\n /* \"src/LBFactory.sol\":28743:28747 role */\n dup4\n /* \"src/LBFactory.sol\":28743:28769 role == DEFAULT_ADMIN_ROLE */\n sub\n /* \"src/LBFactory.sol\":28739:28796 if (role == DEFAULT_ADMIN_ROLE) return account == owner() */\n tag_461\n jumpi\n /* \"src/LBFactory.sol\":28789:28796 owner() */\n tag_462\n /* \"src/LBFactory.sol\":28789:28794 owner */\n tag_172\n /* \"src/LBFactory.sol\":28789:28796 owner() */\n jump\t// in\n tag_462:\n /* \"src/LBFactory.sol\":28778:28796 account == owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":28778:28785 account */\n dup3\n /* \"src/LBFactory.sol\":28778:28796 account == owner() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"src/LBFactory.sol\":28771:28796 return account == owner() */\n swap1\n pop\n jump(tag_460)\n /* \"src/LBFactory.sol\":28739:28796 if (role == DEFAULT_ADMIN_ROLE) return account == owner() */\n tag_461:\n /* \"src/LBFactory.sol\":28813:28841 super.hasRole(role, account) */\n tag_463\n /* \"src/LBFactory.sol\":28827:28831 role */\n dup4\n /* \"src/LBFactory.sol\":28833:28840 account */\n dup4\n /* \"src/LBFactory.sol\":28813:28826 super.hasRole */\n tag_464\n /* \"src/LBFactory.sol\":28813:28841 super.hasRole(role, account) */\n jump\t// in\n tag_463:\n /* \"src/LBFactory.sol\":28806:28841 return super.hasRole(role, account) */\n swap1\n pop\n /* \"src/LBFactory.sol\":28645:28848 function hasRole(bytes32 role, address account) public view override returns (bool) {... */\n tag_460:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":5202:5320 function getLBPairBeacon() external view override returns (address lbPairBeacon) {... */\n tag_179:\n /* \"src/LBFactory.sol\":5261:5281 address lbPairBeacon */\n 0x00\n /* \"src/LBFactory.sol\":5300:5313 _lbPairBeacon */\n 0x02\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":5293:5313 return _lbPairBeacon */\n swap1\n pop\n /* \"src/LBFactory.sol\":5202:5320 function getLBPairBeacon() external view override returns (address lbPairBeacon) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2317:2366 bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00 */\n tag_182:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2362:2366 0x00 */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2317:2366 bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00 */\n dup1\n shl\n dup2\n jump\t// out\n /* \"src/LBFactory.sol\":8275:9267 function getPreset(uint256 binStep)... */\n tag_186:\n /* \"src/LBFactory.sol\":8388:8406 uint256 baseFactor */\n 0x00\n /* \"src/LBFactory.sol\":8420:8440 uint256 filterPeriod */\n dup1\n /* \"src/LBFactory.sol\":8454:8473 uint256 decayPeriod */\n 0x00\n /* \"src/LBFactory.sol\":8487:8510 uint256 reductionFactor */\n dup1\n /* \"src/LBFactory.sol\":8524:8550 uint256 variableFeeControl */\n 0x00\n /* \"src/LBFactory.sol\":8564:8585 uint256 protocolShare */\n dup1\n /* \"src/LBFactory.sol\":8599:8631 uint256 maxVolatilityAccumulator */\n 0x00\n /* \"src/LBFactory.sol\":8645:8656 bool isOpen */\n dup1\n /* \"src/LBFactory.sol\":8686:8712 _presets.contains(binStep) */\n tag_467\n /* \"src/LBFactory.sol\":8704:8711 binStep */\n dup10\n /* \"src/LBFactory.sol\":8686:8694 _presets */\n 0x05\n /* \"src/LBFactory.sol\":8686:8703 _presets.contains */\n tag_329\n swap1\n /* \"src/LBFactory.sol\":8686:8712 _presets.contains(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_467:\n /* \"src/LBFactory.sol\":8681:8759 if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_468\n jumpi\n /* \"src/LBFactory.sol\":8751:8758 binStep */\n dup9\n /* \"src/LBFactory.sol\":8721:8759 LBFactory__BinStepHasNoPreset(binStep) */\n mload(0x40)\n 0xfb22c17e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_469\n swap2\n swap1\n tag_122\n jump\t// in\n tag_469:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":8681:8759 if (!_presets.contains(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_468:\n /* \"src/LBFactory.sol\":8770:8784 bytes32 preset */\n 0x00\n /* \"src/LBFactory.sol\":8795:8816 _presets.get(binStep) */\n tag_470\n /* \"src/LBFactory.sol\":8808:8815 binStep */\n dup11\n /* \"src/LBFactory.sol\":8795:8803 _presets */\n 0x05\n /* \"src/LBFactory.sol\":8795:8807 _presets.get */\n tag_333\n swap1\n /* \"src/LBFactory.sol\":8795:8816 _presets.get(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_470:\n /* \"src/LBFactory.sol\":8787:8817 bytes32(_presets.get(binStep)) */\n 0x00\n shl\n /* \"src/LBFactory.sol\":8770:8817 bytes32 preset = bytes32(_presets.get(binStep)) */\n swap1\n pop\n /* \"src/LBFactory.sol\":8841:8863 preset.getBaseFactor() */\n tag_471\n /* \"src/LBFactory.sol\":8841:8847 preset */\n dup2\n /* \"src/LBFactory.sol\":8841:8861 preset.getBaseFactor */\n tag_374\n /* \"src/LBFactory.sol\":8841:8863 preset.getBaseFactor() */\n jump\t// in\n tag_471:\n /* \"src/LBFactory.sol\":8828:8863 baseFactor = preset.getBaseFactor() */\n 0xffff\n and\n swap9\n pop\n /* \"src/LBFactory.sol\":8888:8912 preset.getFilterPeriod() */\n tag_472\n /* \"src/LBFactory.sol\":8888:8894 preset */\n dup2\n /* \"src/LBFactory.sol\":8888:8910 preset.getFilterPeriod */\n tag_376\n /* \"src/LBFactory.sol\":8888:8912 preset.getFilterPeriod() */\n jump\t// in\n tag_472:\n /* \"src/LBFactory.sol\":8873:8912 filterPeriod = preset.getFilterPeriod() */\n 0xffff\n and\n swap8\n pop\n /* \"src/LBFactory.sol\":8936:8959 preset.getDecayPeriod() */\n tag_473\n /* \"src/LBFactory.sol\":8936:8942 preset */\n dup2\n /* \"src/LBFactory.sol\":8936:8957 preset.getDecayPeriod */\n tag_378\n /* \"src/LBFactory.sol\":8936:8959 preset.getDecayPeriod() */\n jump\t// in\n tag_473:\n /* \"src/LBFactory.sol\":8922:8959 decayPeriod = preset.getDecayPeriod() */\n 0xffff\n and\n swap7\n pop\n /* \"src/LBFactory.sol\":8987:9014 preset.getReductionFactor() */\n tag_474\n /* \"src/LBFactory.sol\":8987:8993 preset */\n dup2\n /* \"src/LBFactory.sol\":8987:9012 preset.getReductionFactor */\n tag_380\n /* \"src/LBFactory.sol\":8987:9014 preset.getReductionFactor() */\n jump\t// in\n tag_474:\n /* \"src/LBFactory.sol\":8969:9014 reductionFactor = preset.getReductionFactor() */\n 0xffff\n and\n swap6\n pop\n /* \"src/LBFactory.sol\":9045:9075 preset.getVariableFeeControl() */\n tag_475\n /* \"src/LBFactory.sol\":9045:9051 preset */\n dup2\n /* \"src/LBFactory.sol\":9045:9073 preset.getVariableFeeControl */\n tag_382\n /* \"src/LBFactory.sol\":9045:9075 preset.getVariableFeeControl() */\n jump\t// in\n tag_475:\n /* \"src/LBFactory.sol\":9024:9075 variableFeeControl = preset.getVariableFeeControl() */\n 0xffffff\n and\n swap5\n pop\n /* \"src/LBFactory.sol\":9101:9126 preset.getProtocolShare() */\n tag_476\n /* \"src/LBFactory.sol\":9101:9107 preset */\n dup2\n /* \"src/LBFactory.sol\":9101:9124 preset.getProtocolShare */\n tag_384\n /* \"src/LBFactory.sol\":9101:9126 preset.getProtocolShare() */\n jump\t// in\n tag_476:\n /* \"src/LBFactory.sol\":9085:9126 protocolShare = preset.getProtocolShare() */\n 0xffff\n and\n swap4\n pop\n /* \"src/LBFactory.sol\":9163:9199 preset.getMaxVolatilityAccumulator() */\n tag_477\n /* \"src/LBFactory.sol\":9163:9169 preset */\n dup2\n /* \"src/LBFactory.sol\":9163:9197 preset.getMaxVolatilityAccumulator */\n tag_386\n /* \"src/LBFactory.sol\":9163:9199 preset.getMaxVolatilityAccumulator() */\n jump\t// in\n tag_477:\n /* \"src/LBFactory.sol\":9136:9199 maxVolatilityAccumulator = preset.getMaxVolatilityAccumulator() */\n 0xffffff\n and\n swap3\n pop\n /* \"src/LBFactory.sol\":9219:9260 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n tag_478\n /* \"src/LBFactory.sol\":2167:2170 255 */\n 0xff\n /* \"src/LBFactory.sol\":9219:9225 preset */\n dup3\n /* \"src/LBFactory.sol\":9219:9236 preset.decodeBool */\n tag_335\n swap1\n /* \"src/LBFactory.sol\":9219:9260 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_478:\n /* \"src/LBFactory.sol\":9210:9260 isOpen = preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n swap2\n pop\n /* \"src/LBFactory.sol\":8671:9267 {... */\n pop\n /* \"src/LBFactory.sol\":8275:9267 function getPreset(uint256 binStep)... */\n swap2\n swap4\n swap6\n swap8\n pop\n swap2\n swap4\n swap6\n swap8\n jump\t// out\n /* \"src/LBFactory.sol\":3682:4157 function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) initializer external {... */\n tag_192:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4158:4188 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4191:4217 _getInitializableStorage() */\n tag_480\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4191:4215 _getInitializableStorage */\n tag_481\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4191:4217 _getInitializableStorage() */\n jump\t// in\n tag_480:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4158:4217 InitializableStorage storage $ = _getInitializableStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4279:4298 bool isTopLevelCall */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4302:4303 $ */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4302:4317 $._initializing */\n 0x00\n add\n 0x08\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4301:4317 !$._initializing */\n iszero\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4279:4317 bool isTopLevelCall = !$._initializing */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4327:4345 uint64 initialized */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4348:4349 $ */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4348:4362 $._initialized */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4327:4362 uint64 initialized = $._initialized */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4706:4723 bool initialSetup */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4741:4742 0 */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4726:4737 initialized */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4726:4742 initialized == 0 */\n 0xffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4726:4760 initialized == 0 && isTopLevelCall */\n dup1\n iszero\n tag_482\n jumpi\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4746:4760 isTopLevelCall */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4726:4760 initialized == 0 && isTopLevelCall */\n tag_482:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4706:4760 bool initialSetup = initialized == 0 && isTopLevelCall */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4770:4787 bool construction */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4805:4806 1 */\n 0x01\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4790:4801 initialized */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4790:4806 initialized == 1 */\n 0xffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4790:4840 initialized == 1 && address(this).code.length == 0 */\n dup1\n iszero\n tag_483\n jumpi\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4839:4840 0 */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4818:4822 this */\n address\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4810:4835 address(this).code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4810:4840 address(this).code.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4790:4840 initialized == 1 && address(this).code.length == 0 */\n tag_483:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4770:4840 bool construction = initialized == 1 && address(this).code.length == 0 */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4856:4868 initialSetup */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4855:4868 !initialSetup */\n iszero\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4855:4885 !initialSetup && !construction */\n dup1\n iszero\n tag_484\n jumpi\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4873:4885 construction */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4872:4885 !construction */\n iszero\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4855:4885 !initialSetup && !construction */\n tag_484:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4851:4942 if (!initialSetup && !construction) {... */\n iszero\n tag_485\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4908:4931 InvalidInitialization() */\n mload(0x40)\n 0xf92ee8a900000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4851:4942 if (!initialSetup && !construction) {... */\n tag_485:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4968:4969 1 */\n 0x01\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4951:4952 $ */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4951:4965 $._initialized */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4951:4969 $._initialized = 1 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4983:4997 isTopLevelCall */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4979:5046 if (isTopLevelCall) {... */\n iszero\n tag_486\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5031:5035 true */\n 0x01\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5013:5014 $ */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5013:5028 $._initializing */\n 0x00\n add\n 0x08\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5013:5035 $._initializing = true */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4979:5046 if (isTopLevelCall) {... */\n tag_486:\n /* \"src/LBFactory.sol\":3828:3856 __Ownable_init(initialOwner) */\n tag_488\n /* \"src/LBFactory.sol\":3843:3855 initialOwner */\n dup9\n /* \"src/LBFactory.sol\":3828:3842 __Ownable_init */\n tag_489\n /* \"src/LBFactory.sol\":3828:3856 __Ownable_init(initialOwner) */\n jump\t// in\n tag_488:\n /* \"src/LBFactory.sol\":2282:2288 0.1e18 */\n 0x016345785d8a0000\n /* \"src/LBFactory.sol\":3871:3883 flashLoanFee */\n dup8\n /* \"src/LBFactory.sol\":3871:3904 flashLoanFee > _MAX_FLASHLOAN_FEE */\n gt\n /* \"src/LBFactory.sol\":3867:3978 if (flashLoanFee > _MAX_FLASHLOAN_FEE) revert LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE) */\n iszero\n tag_490\n jumpi\n /* \"src/LBFactory.sol\":3945:3957 flashLoanFee */\n dup7\n /* \"src/LBFactory.sol\":2282:2288 0.1e18 */\n 0x016345785d8a0000\n /* \"src/LBFactory.sol\":3913:3978 LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE) */\n mload(0x40)\n 0x5e8988c100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_491\n swap3\n swap2\n swap1\n tag_492\n jump\t// in\n tag_491:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":3867:3978 if (flashLoanFee > _MAX_FLASHLOAN_FEE) revert LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE) */\n tag_490:\n /* \"src/LBFactory.sol\":3989:4019 _setFeeRecipient(feeRecipient) */\n tag_493\n /* \"src/LBFactory.sol\":4006:4018 feeRecipient */\n dup10\n /* \"src/LBFactory.sol\":3989:4005 _setFeeRecipient */\n tag_494\n /* \"src/LBFactory.sol\":3989:4019 _setFeeRecipient(feeRecipient) */\n jump\t// in\n tag_493:\n /* \"src/LBFactory.sol\":4046:4058 flashLoanFee */\n dup7\n /* \"src/LBFactory.sol\":4030:4043 _flashLoanFee */\n 0x01\n /* \"src/LBFactory.sol\":4030:4058 _flashLoanFee = flashLoanFee */\n dup2\n swap1\n sstore\n pop\n /* \"src/LBFactory.sol\":4084:4103 lbPairBeaconAddress */\n dup6\n /* \"src/LBFactory.sol\":4068:4081 _lbPairBeacon */\n 0x02\n 0x00\n /* \"src/LBFactory.sol\":4068:4103 _lbPairBeacon = lbPairBeaconAddress */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBFactory.sol\":4118:4150 FlashLoanFeeSet(0, flashLoanFee) */\n 0x5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50\n /* \"src/LBFactory.sol\":4134:4135 0 */\n 0x00\n /* \"src/LBFactory.sol\":4137:4149 flashLoanFee */\n dup9\n /* \"src/LBFactory.sol\":4118:4150 FlashLoanFeeSet(0, flashLoanFee) */\n mload(0x40)\n tag_495\n swap3\n swap2\n swap1\n tag_496\n jump\t// in\n tag_495:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5070:5084 isTopLevelCall */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5066:5167 if (isTopLevelCall) {... */\n iszero\n tag_497\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5118:5123 false */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5100:5101 $ */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5100:5115 $._initializing */\n 0x00\n add\n 0x08\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5100:5123 $._initializing = false */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5142:5156 Initialized(1) */\n 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5154:5155 1 */\n 0x01\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5142:5156 Initialized(1) */\n mload(0x40)\n tag_498\n swap2\n swap1\n tag_499\n jump\t// in\n tag_498:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":5066:5167 if (isTopLevelCall) {... */\n tag_497:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":4092:5173 {... */\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":3682:4157 function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) initializer external {... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":11820:11942 function getPauserRole() external pure returns (bytes32) {... */\n tag_194:\n /* \"src/LBFactory.sol\":11868:11875 bytes32 */\n 0x00\n /* \"src/LBFactory.sol\":2056:2110 keccak256(\"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\") */\n 0x9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d\n /* \"src/LBFactory.sol\":11887:11935 return LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE */\n swap1\n pop\n /* \"src/LBFactory.sol\":11820:11942 function getPauserRole() external pure returns (bytes32) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5662:5800 function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {... */\n tag_198:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5737:5755 getRoleAdmin(role) */\n tag_501\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5750:5754 role */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5737:5749 getRoleAdmin */\n tag_81\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5737:5755 getRoleAdmin(role) */\n jump\t// in\n tag_501:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n tag_503\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3202:3206 role */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3201 _checkRole */\n tag_274\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3191:3207 _checkRole(role) */\n jump\t// in\n tag_503:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5767:5793 _revokeRole(role, account) */\n tag_505\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5779:5783 role */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5785:5792 account */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5767:5778 _revokeRole */\n tag_292\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5767:5793 _revokeRole(role, account) */\n jump\t// in\n tag_505:\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":5662:5800 function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {... */\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":25131:25375 function removeQuoteAsset(IERC20 quoteAsset) external override onlyOwner {... */\n tag_201:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_507\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_507:\n /* \"src/LBFactory.sol\":25219:25267 _quoteAssetWhitelist.remove(address(quoteAsset)) */\n tag_509\n /* \"src/LBFactory.sol\":25255:25265 quoteAsset */\n dup2\n /* \"src/LBFactory.sol\":25219:25239 _quoteAssetWhitelist */\n 0x08\n /* \"src/LBFactory.sol\":25219:25246 _quoteAssetWhitelist.remove */\n tag_510\n swap1\n /* \"src/LBFactory.sol\":25219:25267 _quoteAssetWhitelist.remove(address(quoteAsset)) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_509:\n /* \"src/LBFactory.sol\":25214:25323 if (!_quoteAssetWhitelist.remove(address(quoteAsset))) revert LBFactory__QuoteAssetNotWhitelisted(quoteAsset) */\n tag_511\n jumpi\n /* \"src/LBFactory.sol\":25312:25322 quoteAsset */\n dup1\n /* \"src/LBFactory.sol\":25276:25323 LBFactory__QuoteAssetNotWhitelisted(quoteAsset) */\n mload(0x40)\n 0x8e888ef300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_512\n swap2\n swap1\n tag_69\n jump\t// in\n tag_512:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":25214:25323 if (!_quoteAssetWhitelist.remove(address(quoteAsset))) revert LBFactory__QuoteAssetNotWhitelisted(quoteAsset) */\n tag_511:\n /* \"src/LBFactory.sol\":25357:25367 quoteAsset */\n dup1\n /* \"src/LBFactory.sol\":25339:25368 QuoteAssetRemoved(quoteAsset) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb3\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"src/LBFactory.sol\":25131:25375 function removeQuoteAsset(IERC20 quoteAsset) external override onlyOwner {... */\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":19331:19528 function removePreset(uint16 binStep) external override onlyOwner {... */\n tag_205:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_514\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_514:\n /* \"src/LBFactory.sol\":19412:19436 _presets.remove(binStep) */\n tag_516\n /* \"src/LBFactory.sol\":19428:19435 binStep */\n dup2\n /* \"src/LBFactory.sol\":19412:19436 _presets.remove(binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":19412:19420 _presets */\n 0x05\n /* \"src/LBFactory.sol\":19412:19427 _presets.remove */\n tag_517\n swap1\n /* \"src/LBFactory.sol\":19412:19436 _presets.remove(binStep) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_516:\n /* \"src/LBFactory.sol\":19407:19483 if (!_presets.remove(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_518\n jumpi\n /* \"src/LBFactory.sol\":19475:19482 binStep */\n dup1\n /* \"src/LBFactory.sol\":19445:19483 LBFactory__BinStepHasNoPreset(binStep) */\n mload(0x40)\n 0xfb22c17e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_519\n swap2\n swap1\n tag_298\n jump\t// in\n tag_519:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":19407:19483 if (!_presets.remove(binStep)) revert LBFactory__BinStepHasNoPreset(binStep) */\n tag_518:\n /* \"src/LBFactory.sol\":19513:19520 binStep */\n dup1\n /* \"src/LBFactory.sol\":19499:19521 PresetRemoved(binStep) */\n 0xffff\n and\n 0xdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be13\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"src/LBFactory.sol\":19331:19528 function removePreset(uint16 binStep) external override onlyOwner {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2038:2206 function pendingOwner() public view virtual returns (address) {... */\n tag_207:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2091:2098 address */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2110:2139 Ownable2StepStorage storage $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2142:2167 _getOwnable2StepStorage() */\n tag_521\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2142:2165 _getOwnable2StepStorage */\n tag_522\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2142:2167 _getOwnable2StepStorage() */\n jump\t// in\n tag_521:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2110:2167 Ownable2StepStorage storage $ = _getOwnable2StepStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2184:2185 $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2184:2199 $._pendingOwner */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2177:2199 return $._pendingOwner */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2038:2206 function pendingOwner() public view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"src/LBFactory.sol\":23440:23562 function setFeeRecipient(address feeRecipient) external override onlyOwner {... */\n tag_212:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_524\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_524:\n /* \"src/LBFactory.sol\":23525:23555 _setFeeRecipient(feeRecipient) */\n tag_526\n /* \"src/LBFactory.sol\":23542:23554 feeRecipient */\n dup2\n /* \"src/LBFactory.sol\":23525:23541 _setFeeRecipient */\n tag_494\n /* \"src/LBFactory.sol\":23525:23555 _setFeeRecipient(feeRecipient) */\n jump\t// in\n tag_526:\n /* \"src/LBFactory.sol\":23440:23562 function setFeeRecipient(address feeRecipient) external override onlyOwner {... */\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":23879:24327 function setFlashLoanFee(uint256 flashLoanFee) external override onlyOwner {... */\n tag_215:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_528\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_528:\n /* \"src/LBFactory.sol\":23964:23987 uint256 oldFlashLoanFee */\n 0x00\n /* \"src/LBFactory.sol\":23990:24003 _flashLoanFee */\n sload(0x01)\n /* \"src/LBFactory.sol\":23964:24003 uint256 oldFlashLoanFee = _flashLoanFee */\n swap1\n pop\n /* \"src/LBFactory.sol\":24037:24049 flashLoanFee */\n dup2\n /* \"src/LBFactory.sol\":24018:24033 oldFlashLoanFee */\n dup2\n /* \"src/LBFactory.sol\":24018:24049 oldFlashLoanFee == flashLoanFee */\n sub\n /* \"src/LBFactory.sol\":24014:24099 if (oldFlashLoanFee == flashLoanFee) revert LBFactory__SameFlashLoanFee(flashLoanFee) */\n tag_530\n jumpi\n /* \"src/LBFactory.sol\":24086:24098 flashLoanFee */\n dup2\n /* \"src/LBFactory.sol\":24058:24099 LBFactory__SameFlashLoanFee(flashLoanFee) */\n mload(0x40)\n 0x6ea8c7a400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_531\n swap2\n swap1\n tag_122\n jump\t// in\n tag_531:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":24014:24099 if (oldFlashLoanFee == flashLoanFee) revert LBFactory__SameFlashLoanFee(flashLoanFee) */\n tag_530:\n /* \"src/LBFactory.sol\":2282:2288 0.1e18 */\n 0x016345785d8a0000\n /* \"src/LBFactory.sol\":24113:24125 flashLoanFee */\n dup3\n /* \"src/LBFactory.sol\":24113:24146 flashLoanFee > _MAX_FLASHLOAN_FEE */\n gt\n /* \"src/LBFactory.sol\":24109:24220 if (flashLoanFee > _MAX_FLASHLOAN_FEE) revert LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE) */\n iszero\n tag_532\n jumpi\n /* \"src/LBFactory.sol\":24187:24199 flashLoanFee */\n dup2\n /* \"src/LBFactory.sol\":2282:2288 0.1e18 */\n 0x016345785d8a0000\n /* \"src/LBFactory.sol\":24155:24220 LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE) */\n mload(0x40)\n 0x5e8988c100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_533\n swap3\n swap2\n swap1\n tag_492\n jump\t// in\n tag_533:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":24109:24220 if (flashLoanFee > _MAX_FLASHLOAN_FEE) revert LBFactory__FlashLoanFeeAboveMax(flashLoanFee, _MAX_FLASHLOAN_FEE) */\n tag_532:\n /* \"src/LBFactory.sol\":24247:24259 flashLoanFee */\n dup2\n /* \"src/LBFactory.sol\":24231:24244 _flashLoanFee */\n 0x01\n /* \"src/LBFactory.sol\":24231:24259 _flashLoanFee = flashLoanFee */\n dup2\n swap1\n sstore\n pop\n /* \"src/LBFactory.sol\":24274:24320 FlashLoanFeeSet(oldFlashLoanFee, flashLoanFee) */\n 0x5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50\n /* \"src/LBFactory.sol\":24290:24305 oldFlashLoanFee */\n dup2\n /* \"src/LBFactory.sol\":24307:24319 flashLoanFee */\n dup4\n /* \"src/LBFactory.sol\":24274:24320 FlashLoanFeeSet(oldFlashLoanFee, flashLoanFee) */\n mload(0x40)\n tag_534\n swap3\n swap2\n swap1\n tag_492\n jump\t// in\n tag_534:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"src/LBFactory.sol\":23954:24327 {... */\n pop\n /* \"src/LBFactory.sol\":23879:24327 function setFlashLoanFee(uint256 flashLoanFee) external override onlyOwner {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2399:2646 function transferOwnership(address newOwner) public virtual override onlyOwner {... */\n tag_218:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n tag_536\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2345 _checkOwner */\n tag_254\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2334:2347 _checkOwner() */\n jump\t// in\n tag_536:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2488:2517 Ownable2StepStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2520:2545 _getOwnable2StepStorage() */\n tag_538\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2520:2543 _getOwnable2StepStorage */\n tag_522\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2520:2545 _getOwnable2StepStorage() */\n jump\t// in\n tag_538:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2488:2545 Ownable2StepStorage storage $ = _getOwnable2StepStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2573:2581 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2555:2556 $ */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2555:2570 $._pendingOwner */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2555:2581 $._pendingOwner = newOwner */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2630:2638 newOwner */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2596:2639 OwnershipTransferStarted(owner(), newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2621:2628 owner() */\n tag_539\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2621:2626 owner */\n tag_172\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2621:2628 owner() */\n jump\t// in\n tag_539:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2596:2639 OwnershipTransferStarted(owner(), newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2478:2646 {... */\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2399:2646 function transferOwnership(address newOwner) public virtual override onlyOwner {... */\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":4949:5067 function getFlashLoanFee() external view override returns (uint256 flashLoanFee) {... */\n tag_220:\n /* \"src/LBFactory.sol\":5008:5028 uint256 flashLoanFee */\n 0x00\n /* \"src/LBFactory.sol\":5047:5060 _flashLoanFee */\n sload(0x01)\n /* \"src/LBFactory.sol\":5040:5060 return _flashLoanFee */\n swap1\n pop\n /* \"src/LBFactory.sol\":4949:5067 function getFlashLoanFee() external view override returns (uint256 flashLoanFee) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1035:1181 function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {... */\n tag_225:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1111:1115 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1149:1174 type(IERC165).interfaceId */\n 0x01ffc9a700000000000000000000000000000000000000000000000000000000\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1134:1174 interfaceId == type(IERC165).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1134:1145 interfaceId */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1134:1174 interfaceId == type(IERC165).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1127:1174 return interfaceId == type(IERC165).interfaceId */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":1035:1181 function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7009:7126 function length(UintToUintMap storage map) internal view returns (uint256) {... */\n tag_228:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7075:7082 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7101:7119 length(map._inner) */\n tag_543\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7108:7111 map */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7108:7118 map._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7101:7107 length */\n tag_544\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7101:7119 length(map._inner) */\n jump\t// in\n tag_543:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7094:7119 return length(map._inner) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7009:7126 function length(UintToUintMap storage map) internal view returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7463:7674 function at(UintToUintMap storage map, uint256 index) internal view returns (uint256, uint256) {... */\n tag_238:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7540:7547 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7549:7556 uint256 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7569:7580 bytes32 key */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7582:7595 bytes32 value */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7599:7620 at(map._inner, index) */\n tag_546\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7602:7605 map */\n dup7\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7602:7612 map._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7614:7619 index */\n dup7\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7599:7601 at */\n tag_547\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7599:7620 at(map._inner, index) */\n jump\t// in\n tag_546:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7568:7620 (bytes32 key, bytes32 value) = at(map._inner, index) */\n swap2\n pop\n swap2\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7646:7649 key */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7638:7650 uint256(key) */\n 0x00\n shr\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7660:7665 value */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7652:7666 uint256(value) */\n 0x00\n shr\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7630:7667 return (uint256(key), uint256(value)) */\n swap4\n pop\n swap4\n pop\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":7463:7674 function at(UintToUintMap storage map, uint256 index) internal view returns (uint256, uint256) {... */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":25381:25514 function _isPresetOpen(bytes32 preset) internal pure returns (bool) {... */\n tag_240:\n /* \"src/LBFactory.sol\":25443:25447 bool */\n 0x00\n /* \"src/LBFactory.sol\":25466:25507 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n tag_549\n /* \"src/LBFactory.sol\":2167:2170 255 */\n 0xff\n /* \"src/LBFactory.sol\":25466:25472 preset */\n dup4\n /* \"src/LBFactory.sol\":25466:25483 preset.decodeBool */\n tag_335\n swap1\n /* \"src/LBFactory.sol\":25466:25507 preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_549:\n /* \"src/LBFactory.sol\":25459:25507 return preset.decodeBool(_OFFSET_IS_PRESET_OPEN) */\n swap1\n pop\n /* \"src/LBFactory.sol\":25381:25514 function _isPresetOpen(bytes32 preset) internal pure returns (bool) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9574:9730 function at(AddressSet storage set, uint256 index) internal view returns (address) {... */\n tag_251:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9648:9655 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9698:9720 _at(set._inner, index) */\n tag_551\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9702:9705 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9702:9712 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9714:9719 index */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9698:9701 _at */\n tag_552\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9698:9720 _at(set._inner, index) */\n jump\t// in\n tag_551:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9690:9721 uint256(_at(set._inner, index)) */\n 0x00\n shr\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9667:9723 return address(uint160(uint256(_at(set._inner, index)))) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9574:9730 function at(AddressSet storage set, uint256 index) internal view returns (address) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2658:2820 function _checkOwner() internal view virtual {... */\n tag_254:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2728:2740 _msgSender() */\n tag_554\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2728:2738 _msgSender */\n tag_289\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2728:2740 _msgSender() */\n jump\t// in\n tag_554:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2717:2740 owner() != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2717:2724 owner() */\n tag_555\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2717:2722 owner */\n tag_172\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2717:2724 owner() */\n jump\t// in\n tag_555:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2717:2740 owner() != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2713:2814 if (owner() != _msgSender()) {... */\n tag_556\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2790:2802 _msgSender() */\n tag_557\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2790:2800 _msgSender */\n tag_289\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2790:2802 _msgSender() */\n jump\t// in\n tag_557:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2763:2803 OwnableUnauthorizedAccount(_msgSender()) */\n mload(0x40)\n 0x118cdaa700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_558\n swap2\n swap1\n tag_114\n jump\t// in\n tag_558:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2713:2814 if (owner() != _msgSender()) {... */\n tag_556:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2658:2820 function _checkOwner() internal view virtual {... */\n jump\t// out\n /* \"src/LBFactory.sol\":26700:26971 function _getLBPairInformation(IERC20 tokenA, IERC20 tokenB, uint256 binStep)... */\n tag_257:\n /* \"src/LBFactory.sol\":26824:26848 LBPairInformation memory */\n tag_559\n tag_416\n jump\t// in\n tag_559:\n /* \"src/LBFactory.sol\":26883:26910 _sortTokens(tokenA, tokenB) */\n tag_561\n /* \"src/LBFactory.sol\":26895:26901 tokenA */\n dup5\n /* \"src/LBFactory.sol\":26903:26909 tokenB */\n dup5\n /* \"src/LBFactory.sol\":26883:26894 _sortTokens */\n tag_369\n /* \"src/LBFactory.sol\":26883:26910 _sortTokens(tokenA, tokenB) */\n jump\t// in\n tag_561:\n /* \"src/LBFactory.sol\":26864:26910 (tokenA, tokenB) = _sortTokens(tokenA, tokenB) */\n dup1\n swap5\n pop\n dup2\n swap6\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":26927:26939 _lbPairsInfo */\n 0x04\n /* \"src/LBFactory.sol\":26927:26947 _lbPairsInfo[tokenA] */\n 0x00\n /* \"src/LBFactory.sol\":26940:26946 tokenA */\n dup6\n /* \"src/LBFactory.sol\":26927:26947 _lbPairsInfo[tokenA] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":26927:26955 _lbPairsInfo[tokenA][tokenB] */\n 0x00\n /* \"src/LBFactory.sol\":26948:26954 tokenB */\n dup5\n /* \"src/LBFactory.sol\":26927:26955 _lbPairsInfo[tokenA][tokenB] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":26927:26964 _lbPairsInfo[tokenA][tokenB][binStep] */\n 0x00\n /* \"src/LBFactory.sol\":26956:26963 binStep */\n dup4\n /* \"src/LBFactory.sol\":26927:26964 _lbPairsInfo[tokenA][tokenB][binStep] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"src/LBFactory.sol\":26920:26964 return _lbPairsInfo[tokenA][tokenB][binStep] */\n mload(0x40)\n dup1\n 0x80\n add\n 0x40\n mstore\n swap1\n dup2\n 0x00\n dup3\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffff\n and\n 0xffff\n and\n 0xffff\n and\n dup2\n mstore\n 0x20\n add\n 0x00\n dup3\n add\n 0x02\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n 0x00\n dup3\n add\n 0x16\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n iszero\n iszero\n iszero\n iszero\n dup2\n mstore\n 0x20\n add\n 0x00\n dup3\n add\n 0x17\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n iszero\n iszero\n iszero\n iszero\n dup2\n mstore\n pop\n pop\n swap1\n pop\n /* \"src/LBFactory.sol\":26700:26971 function _getLBPairInformation(IERC20 tokenA, IERC20 tokenB, uint256 binStep)... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2787:2964 function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {... */\n tag_268:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2845:2875 AccessControlStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2920:2948 AccessControlStorageLocation */\n 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2910:2948 $.slot := AccessControlStorageLocation */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2787:2964 function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8871:9036 function contains(AddressSet storage set, address value) internal view returns (bool) {... */\n tag_271:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8951:8955 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8974:9029 _contains(set._inner, bytes32(uint256(uint160(value)))) */\n tag_564\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8984:8987 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8984:8994 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9020:9025 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9004:9027 uint256(uint160(value)) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8996:9028 bytes32(uint256(uint160(value))) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8974:8983 _contains */\n tag_565\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8974:9029 _contains(set._inner, bytes32(uint256(uint160(value)))) */\n jump\t// in\n tag_564:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8967:9029 return _contains(set._inner, bytes32(uint256(uint160(value)))) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8871:9036 function contains(AddressSet storage set, address value) internal view returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4148:4251 function _checkRole(bytes32 role) internal view virtual {... */\n tag_274:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4214:4244 _checkRole(role, _msgSender()) */\n tag_567\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4225:4229 role */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4231:4243 _msgSender() */\n tag_568\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4231:4241 _msgSender */\n tag_289\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4231:4243 _msgSender() */\n jump\t// in\n tag_568:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4214:4224 _checkRole */\n tag_569\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4214:4244 _checkRole(role, _msgSender()) */\n jump\t// in\n tag_567:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4148:4251 function _checkRole(bytes32 role) internal view virtual {... */\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":27812:28383 function _setLBHooksParametersOnPair(... */\n tag_280:\n /* \"src/LBFactory.sol\":28014:28028 ILBPair lbPair */\n 0x00\n /* \"src/LBFactory.sol\":28031:28077 _getLBPairInformation(tokenX, tokenY, binStep) */\n tag_571\n /* \"src/LBFactory.sol\":28053:28059 tokenX */\n dup7\n /* \"src/LBFactory.sol\":28061:28067 tokenY */\n dup7\n /* \"src/LBFactory.sol\":28069:28076 binStep */\n dup7\n /* \"src/LBFactory.sol\":28031:28077 _getLBPairInformation(tokenX, tokenY, binStep) */\n 0xffff\n and\n /* \"src/LBFactory.sol\":28031:28052 _getLBPairInformation */\n tag_257\n /* \"src/LBFactory.sol\":28031:28077 _getLBPairInformation(tokenX, tokenY, binStep) */\n jump\t// in\n tag_571:\n /* \"src/LBFactory.sol\":28031:28084 _getLBPairInformation(tokenX, tokenY, binStep).LBPair */\n 0x20\n add\n mload\n /* \"src/LBFactory.sol\":28014:28084 ILBPair lbPair = _getLBPairInformation(tokenX, tokenY, binStep).LBPair */\n swap1\n pop\n /* \"src/LBFactory.sol\":28126:28127 0 */\n 0x00\n /* \"src/LBFactory.sol\":28099:28128 address(lbPair) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":28107:28113 lbPair */\n dup2\n /* \"src/LBFactory.sol\":28099:28128 address(lbPair) == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBFactory.sol\":28095:28189 if (address(lbPair) == address(0)) revert LBFactory__LBPairNotCreated(tokenX, tokenY, binStep) */\n tag_572\n jumpi\n /* \"src/LBFactory.sol\":28165:28171 tokenX */\n dup6\n /* \"src/LBFactory.sol\":28173:28179 tokenY */\n dup6\n /* \"src/LBFactory.sol\":28181:28188 binStep */\n dup6\n /* \"src/LBFactory.sol\":28137:28189 LBFactory__LBPairNotCreated(tokenX, tokenY, binStep) */\n mload(0x40)\n 0xb65ee95300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_573\n swap4\n swap3\n swap2\n swap1\n tag_260\n jump\t// in\n tag_573:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":28095:28189 if (address(lbPair) == address(0)) revert LBFactory__LBPairNotCreated(tokenX, tokenY, binStep) */\n tag_572:\n /* \"src/LBFactory.sol\":28236:28251 hooksParameters */\n dup3\n /* \"src/LBFactory.sol\":28203:28209 lbPair */\n dup2\n /* \"src/LBFactory.sol\":28203:28230 lbPair.getLBHooksParameters */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x781a8915\n /* \"src/LBFactory.sol\":28203:28232 lbPair.getLBHooksParameters() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_575\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_575:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_576\n swap2\n swap1\n tag_577\n jump\t// in\n tag_576:\n /* \"src/LBFactory.sol\":28203:28251 lbPair.getLBHooksParameters() == hooksParameters */\n sub\n /* \"src/LBFactory.sol\":28199:28307 if (lbPair.getLBHooksParameters() == hooksParameters) revert LBFactory__SameHooksParameters(hooksParameters) */\n tag_578\n jumpi\n /* \"src/LBFactory.sol\":28291:28306 hooksParameters */\n dup3\n /* \"src/LBFactory.sol\":28260:28307 LBFactory__SameHooksParameters(hooksParameters) */\n mload(0x40)\n 0xb70cd0db00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_579\n swap2\n swap1\n tag_77\n jump\t// in\n tag_579:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":28199:28307 if (lbPair.getLBHooksParameters() == hooksParameters) revert LBFactory__SameHooksParameters(hooksParameters) */\n tag_578:\n /* \"src/LBFactory.sol\":28318:28324 lbPair */\n dup1\n /* \"src/LBFactory.sol\":28318:28343 lbPair.setHooksParameters */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x1b057f6d\n /* \"src/LBFactory.sol\":28344:28359 hooksParameters */\n dup5\n /* \"src/LBFactory.sol\":28361:28375 onHooksSetData */\n dup5\n /* \"src/LBFactory.sol\":28318:28376 lbPair.setHooksParameters(hooksParameters, onHooksSetData) */\n mload(0x40)\n dup4\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_580\n swap3\n swap2\n swap1\n tag_581\n jump\t// in\n tag_580:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x00\n dup8\n dup1\n extcodesize\n iszero\n dup1\n iszero\n tag_582\n jumpi\n 0x00\n dup1\n revert\n tag_582:\n pop\n gas\n call\n iszero\n dup1\n iszero\n tag_584\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_584:\n pop\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":28004:28383 {... */\n pop\n /* \"src/LBFactory.sol\":27812:28383 function _setLBHooksParametersOnPair(... */\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":29104:29332 function _grantRole(bytes32 role, address account) internal override returns (bool) {... */\n tag_286:\n /* \"src/LBFactory.sol\":29182:29186 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":2362:2366 0x00 */\n dup1\n /* \"src/LBFactory.sol\":29210:29228 DEFAULT_ADMIN_ROLE */\n 0x00\n shl\n /* \"src/LBFactory.sol\":29202:29206 role */\n dup4\n /* \"src/LBFactory.sol\":29202:29228 role == DEFAULT_ADMIN_ROLE */\n sub\n /* \"src/LBFactory.sol\":29198:29277 if (role == DEFAULT_ADMIN_ROLE) revert LBFactory__CannotGrantDefaultAdminRole() */\n tag_586\n jumpi\n /* \"src/LBFactory.sol\":29237:29277 LBFactory__CannotGrantDefaultAdminRole() */\n mload(0x40)\n 0x7c64a79e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":29198:29277 if (role == DEFAULT_ADMIN_ROLE) revert LBFactory__CannotGrantDefaultAdminRole() */\n tag_586:\n /* \"src/LBFactory.sol\":29294:29325 super._grantRole(role, account) */\n tag_587\n /* \"src/LBFactory.sol\":29311:29315 role */\n dup4\n /* \"src/LBFactory.sol\":29317:29324 account */\n dup4\n /* \"src/LBFactory.sol\":29294:29310 super._grantRole */\n tag_588\n /* \"src/LBFactory.sol\":29294:29325 super._grantRole(role, account) */\n jump\t// in\n tag_587:\n /* \"src/LBFactory.sol\":29287:29325 return super._grantRole(role, account) */\n swap1\n pop\n /* \"src/LBFactory.sol\":29104:29332 function _grantRole(bytes32 role, address account) internal override returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":887:983 function _msgSender() internal view virtual returns (address) {... */\n tag_289:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":940:947 address */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":966:976 msg.sender */\n caller\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":959:976 return msg.sender */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":887:983 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7892:8280 function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {... */\n tag_292:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7970:7974 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7986:8016 AccessControlStorage storage $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8019:8045 _getAccessControlStorage() */\n tag_591\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8019:8043 _getAccessControlStorage */\n tag_268\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8019:8045 _getAccessControlStorage() */\n jump\t// in\n tag_591:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7986:8045 AccessControlStorage storage $ = _getAccessControlStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8059:8081 hasRole(role, account) */\n tag_592\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8067:8071 role */\n dup5\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8073:8080 account */\n dup5\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8059:8066 hasRole */\n tag_176\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8059:8081 hasRole(role, account) */\n jump\t// in\n tag_592:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8055:8274 if (hasRole(role, account)) {... */\n iszero\n tag_593\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8131:8136 false */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8098 $ */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8105 $._roles */\n 0x00\n add\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8111 $._roles[role] */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8106:8110 role */\n dup7\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8111 $._roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8119 $._roles[role].hasRole */\n 0x00\n add\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8128 $._roles[role].hasRole[account] */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8120:8127 account */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8128 $._roles[role].hasRole[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8097:8136 $._roles[role].hasRole[account] = false */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8182:8194 _msgSender() */\n tag_594\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8182:8192 _msgSender */\n tag_289\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8182:8194 _msgSender() */\n jump\t// in\n tag_594:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8155:8195 RoleRevoked(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8173:8180 account */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8155:8195 RoleRevoked(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8167:8171 role */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8155:8195 RoleRevoked(role, account, _msgSender()) */\n 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8216:8220 true */\n 0x01\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8209:8220 return true */\n swap2\n pop\n pop\n jump(tag_590)\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8055:8274 if (hasRole(role, account)) {... */\n tag_593:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8258:8263 false */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":8251:8263 return false */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7892:8280 function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {... */\n tag_590:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":12883:14280 function setStaticFeeParameters(... */\n tag_300:\n /* \"src/libraries/PairParameterHelper.sol\":13190:13207 bytes32 newParams */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":13251:13262 decayPeriod */\n dup6\n /* \"src/libraries/PairParameterHelper.sol\":13236:13262 filterPeriod > decayPeriod */\n 0xffff\n and\n /* \"src/libraries/PairParameterHelper.sol\":13236:13248 filterPeriod */\n dup8\n /* \"src/libraries/PairParameterHelper.sol\":13236:13262 filterPeriod > decayPeriod */\n 0xffff\n and\n gt\n /* \"src/libraries/PairParameterHelper.sol\":13236:13299 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12 */\n dup1\n tag_597\n jumpi\n pop\n /* \"src/libraries/math/Encoded.sol\":327:332 0xfff */\n 0x0fff\n /* \"src/libraries/PairParameterHelper.sol\":13266:13277 decayPeriod */\n dup7\n /* \"src/libraries/PairParameterHelper.sol\":13266:13299 decayPeriod > Encoded.MASK_UINT12 */\n 0xffff\n and\n gt\n /* \"src/libraries/PairParameterHelper.sol\":13236:13299 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12 */\n tag_597:\n /* \"src/libraries/PairParameterHelper.sol\":13236:13362 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12... */\n dup1\n tag_598\n jumpi\n pop\n /* \"src/libraries/Constants.sol\":595:601 10_000 */\n 0x2710\n /* \"src/libraries/PairParameterHelper.sol\":13319:13334 reductionFactor */\n dup6\n /* \"src/libraries/PairParameterHelper.sol\":13319:13362 reductionFactor > Constants.BASIS_POINT_MAX */\n 0xffff\n and\n gt\n /* \"src/libraries/PairParameterHelper.sol\":13236:13362 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12... */\n tag_598:\n /* \"src/libraries/PairParameterHelper.sol\":13236:13410 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12... */\n dup1\n tag_599\n jumpi\n pop\n /* \"src/libraries/Constants.sol\":521:526 2_500 */\n 0x09c4\n /* \"src/libraries/PairParameterHelper.sol\":13366:13379 protocolShare */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":13366:13410 protocolShare > Constants.MAX_PROTOCOL_SHARE */\n 0xffff\n and\n gt\n /* \"src/libraries/PairParameterHelper.sol\":13236:13410 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12... */\n tag_599:\n /* \"src/libraries/PairParameterHelper.sol\":13236:13476 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12... */\n dup1\n tag_600\n jumpi\n pop\n /* \"src/libraries/math/Encoded.sol\":482:489 0xfffff */\n 0x0fffff\n /* \"src/libraries/PairParameterHelper.sol\":13430:13454 maxVolatilityAccumulator */\n dup3\n /* \"src/libraries/PairParameterHelper.sol\":13430:13476 maxVolatilityAccumulator > Encoded.MASK_UINT20 */\n 0xffffff\n and\n gt\n /* \"src/libraries/PairParameterHelper.sol\":13236:13476 filterPeriod > decayPeriod || decayPeriod > Encoded.MASK_UINT12... */\n tag_600:\n /* \"src/libraries/PairParameterHelper.sol\":13219:13534 if (... */\n iszero\n tag_601\n jumpi\n /* \"src/libraries/PairParameterHelper.sol\":13494:13534 PairParametersHelper__InvalidParameter() */\n mload(0x40)\n 0x1c07203f00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/PairParameterHelper.sol\":13219:13534 if (... */\n tag_601:\n /* \"src/libraries/PairParameterHelper.sol\":13557:13623 newParams.set(baseFactor, Encoded.MASK_UINT16, OFFSET_BASE_FACTOR) */\n tag_602\n /* \"src/libraries/PairParameterHelper.sol\":13571:13581 baseFactor */\n dup9\n /* \"src/libraries/PairParameterHelper.sol\":13557:13623 newParams.set(baseFactor, Encoded.MASK_UINT16, OFFSET_BASE_FACTOR) */\n 0xffff\n and\n /* \"src/libraries/math/Encoded.sol\":430:436 0xffff */\n 0xffff\n /* \"src/libraries/PairParameterHelper.sol\":1162:1163 0 */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":13557:13566 newParams */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":13557:13570 newParams.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":13557:13623 newParams.set(baseFactor, Encoded.MASK_UINT16, OFFSET_BASE_FACTOR) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_602:\n /* \"src/libraries/PairParameterHelper.sol\":13545:13623 newParams = newParams.set(baseFactor, Encoded.MASK_UINT16, OFFSET_BASE_FACTOR) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":13645:13715 newParams.set(filterPeriod, Encoded.MASK_UINT12, OFFSET_FILTER_PERIOD) */\n tag_604\n /* \"src/libraries/PairParameterHelper.sol\":13659:13671 filterPeriod */\n dup8\n /* \"src/libraries/PairParameterHelper.sol\":13645:13715 newParams.set(filterPeriod, Encoded.MASK_UINT12, OFFSET_FILTER_PERIOD) */\n 0xffff\n and\n /* \"src/libraries/math/Encoded.sol\":327:332 0xfff */\n 0x0fff\n /* \"src/libraries/PairParameterHelper.sol\":1218:1220 16 */\n 0x10\n /* \"src/libraries/PairParameterHelper.sol\":13645:13654 newParams */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":13645:13658 newParams.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":13645:13715 newParams.set(filterPeriod, Encoded.MASK_UINT12, OFFSET_FILTER_PERIOD) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_604:\n /* \"src/libraries/PairParameterHelper.sol\":13633:13715 newParams = newParams.set(filterPeriod, Encoded.MASK_UINT12, OFFSET_FILTER_PERIOD) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":13737:13805 newParams.set(decayPeriod, Encoded.MASK_UINT12, OFFSET_DECAY_PERIOD) */\n tag_605\n /* \"src/libraries/PairParameterHelper.sol\":13751:13762 decayPeriod */\n dup7\n /* \"src/libraries/PairParameterHelper.sol\":13737:13805 newParams.set(decayPeriod, Encoded.MASK_UINT12, OFFSET_DECAY_PERIOD) */\n 0xffff\n and\n /* \"src/libraries/math/Encoded.sol\":327:332 0xfff */\n 0x0fff\n /* \"src/libraries/PairParameterHelper.sol\":1274:1276 28 */\n 0x1c\n /* \"src/libraries/PairParameterHelper.sol\":13737:13746 newParams */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":13737:13750 newParams.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":13737:13805 newParams.set(decayPeriod, Encoded.MASK_UINT12, OFFSET_DECAY_PERIOD) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_605:\n /* \"src/libraries/PairParameterHelper.sol\":13725:13805 newParams = newParams.set(decayPeriod, Encoded.MASK_UINT12, OFFSET_DECAY_PERIOD) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":13827:13903 newParams.set(reductionFactor, Encoded.MASK_UINT14, OFFSET_REDUCTION_FACTOR) */\n tag_606\n /* \"src/libraries/PairParameterHelper.sol\":13841:13856 reductionFactor */\n dup6\n /* \"src/libraries/PairParameterHelper.sol\":13827:13903 newParams.set(reductionFactor, Encoded.MASK_UINT14, OFFSET_REDUCTION_FACTOR) */\n 0xffff\n and\n /* \"src/libraries/math/Encoded.sol\":378:384 0x3fff */\n 0x3fff\n /* \"src/libraries/PairParameterHelper.sol\":1334:1336 40 */\n 0x28\n /* \"src/libraries/PairParameterHelper.sol\":13827:13836 newParams */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":13827:13840 newParams.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":13827:13903 newParams.set(reductionFactor, Encoded.MASK_UINT14, OFFSET_REDUCTION_FACTOR) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_606:\n /* \"src/libraries/PairParameterHelper.sol\":13815:13903 newParams = newParams.set(reductionFactor, Encoded.MASK_UINT14, OFFSET_REDUCTION_FACTOR) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":13925:14003 newParams.set(variableFeeControl, Encoded.MASK_UINT24, OFFSET_VAR_FEE_CONTROL) */\n tag_607\n /* \"src/libraries/PairParameterHelper.sol\":13939:13957 variableFeeControl */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":13925:14003 newParams.set(variableFeeControl, Encoded.MASK_UINT24, OFFSET_VAR_FEE_CONTROL) */\n 0xffffff\n and\n /* \"src/libraries/math/Encoded.sol\":535:543 0xffffff */\n 0xffffff\n /* \"src/libraries/PairParameterHelper.sol\":1393:1395 54 */\n 0x36\n /* \"src/libraries/PairParameterHelper.sol\":13925:13934 newParams */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":13925:13938 newParams.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":13925:14003 newParams.set(variableFeeControl, Encoded.MASK_UINT24, OFFSET_VAR_FEE_CONTROL) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_607:\n /* \"src/libraries/PairParameterHelper.sol\":13913:14003 newParams = newParams.set(variableFeeControl, Encoded.MASK_UINT24, OFFSET_VAR_FEE_CONTROL) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":14025:14097 newParams.set(protocolShare, Encoded.MASK_UINT14, OFFSET_PROTOCOL_SHARE) */\n tag_608\n /* \"src/libraries/PairParameterHelper.sol\":14039:14052 protocolShare */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":14025:14097 newParams.set(protocolShare, Encoded.MASK_UINT14, OFFSET_PROTOCOL_SHARE) */\n 0xffff\n and\n /* \"src/libraries/math/Encoded.sol\":378:384 0x3fff */\n 0x3fff\n /* \"src/libraries/PairParameterHelper.sol\":1451:1453 78 */\n 0x4e\n /* \"src/libraries/PairParameterHelper.sol\":14025:14034 newParams */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":14025:14038 newParams.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":14025:14097 newParams.set(protocolShare, Encoded.MASK_UINT14, OFFSET_PROTOCOL_SHARE) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_608:\n /* \"src/libraries/PairParameterHelper.sol\":14013:14097 newParams = newParams.set(protocolShare, Encoded.MASK_UINT14, OFFSET_PROTOCOL_SHARE) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":14119:14199 newParams.set(maxVolatilityAccumulator, Encoded.MASK_UINT20, OFFSET_MAX_VOL_ACC) */\n tag_609\n /* \"src/libraries/PairParameterHelper.sol\":14133:14157 maxVolatilityAccumulator */\n dup3\n /* \"src/libraries/PairParameterHelper.sol\":14119:14199 newParams.set(maxVolatilityAccumulator, Encoded.MASK_UINT20, OFFSET_MAX_VOL_ACC) */\n 0xffffff\n and\n /* \"src/libraries/math/Encoded.sol\":482:489 0xfffff */\n 0x0fffff\n /* \"src/libraries/PairParameterHelper.sol\":1506:1508 92 */\n 0x5c\n /* \"src/libraries/PairParameterHelper.sol\":14119:14128 newParams */\n dup5\n /* \"src/libraries/PairParameterHelper.sol\":14119:14132 newParams.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":14119:14199 newParams.set(maxVolatilityAccumulator, Encoded.MASK_UINT20, OFFSET_MAX_VOL_ACC) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_609:\n /* \"src/libraries/PairParameterHelper.sol\":14107:14199 newParams = newParams.set(maxVolatilityAccumulator, Encoded.MASK_UINT20, OFFSET_MAX_VOL_ACC) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":14217:14273 params.set(uint256(newParams), MASK_STATIC_PARAMETER, 0) */\n tag_610\n /* \"src/libraries/PairParameterHelper.sol\":14236:14245 newParams */\n dup2\n /* \"src/libraries/PairParameterHelper.sol\":14228:14246 uint256(newParams) */\n 0x00\n shr\n /* \"src/libraries/PairParameterHelper.sol\":1889:1919 0xffffffffffffffffffffffffffff */\n 0xffffffffffffffffffffffffffff\n /* \"src/libraries/PairParameterHelper.sol\":14271:14272 0 */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":14217:14223 params */\n dup13\n /* \"src/libraries/PairParameterHelper.sol\":14217:14227 params.set */\n tag_603\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":14217:14273 params.set(uint256(newParams), MASK_STATIC_PARAMETER, 0) */\n swap4\n swap3\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_610:\n /* \"src/libraries/PairParameterHelper.sol\":14210:14273 return params.set(uint256(newParams), MASK_STATIC_PARAMETER, 0) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":12883:14280 function setStaticFeeParameters(... */\n swap9\n swap8\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":1732:1912 function setBool(bytes32 encoded, bool boolean, uint256 offset) internal pure returns (bytes32 newEncoded) {... */\n tag_303:\n /* \"src/libraries/math/Encoded.sol\":1819:1837 bytes32 newEncoded */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":1856:1905 set(encoded, boolean ? 1 : 0, MASK_UINT1, offset) */\n tag_612\n /* \"src/libraries/math/Encoded.sol\":1860:1867 encoded */\n dup5\n /* \"src/libraries/math/Encoded.sol\":1869:1876 boolean */\n dup5\n /* \"src/libraries/math/Encoded.sol\":1869:1884 boolean ? 1 : 0 */\n tag_613\n jumpi\n /* \"src/libraries/math/Encoded.sol\":1883:1884 0 */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":1869:1884 boolean ? 1 : 0 */\n jump(tag_614)\n tag_613:\n /* \"src/libraries/math/Encoded.sol\":1879:1880 1 */\n 0x01\n /* \"src/libraries/math/Encoded.sol\":1869:1884 boolean ? 1 : 0 */\n tag_614:\n /* \"src/libraries/math/Encoded.sol\":1856:1905 set(encoded, boolean ? 1 : 0, MASK_UINT1, offset) */\n 0xff\n and\n /* \"src/libraries/math/Encoded.sol\":229:232 0x1 */\n 0x01\n /* \"src/libraries/math/Encoded.sol\":1898:1904 offset */\n dup6\n /* \"src/libraries/math/Encoded.sol\":1856:1859 set */\n tag_603\n /* \"src/libraries/math/Encoded.sol\":1856:1905 set(encoded, boolean ? 1 : 0, MASK_UINT1, offset) */\n jump\t// in\n tag_612:\n /* \"src/libraries/math/Encoded.sol\":1849:1905 return set(encoded, boolean ? 1 : 0, MASK_UINT1, offset) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":1732:1912 function setBool(bytes32 encoded, bool boolean, uint256 offset) internal pure returns (bytes32 newEncoded) {... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6246:6407 function set(UintToUintMap storage map, uint256 key, uint256 value) internal returns (bool) {... */\n tag_305:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6332:6336 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6355:6400 set(map._inner, bytes32(key), bytes32(value)) */\n tag_616\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6359:6362 map */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6359:6369 map._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6379:6382 key */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6371:6383 bytes32(key) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6393:6398 value */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6385:6399 bytes32(value) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6355:6358 set */\n tag_617\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6355:6400 set(map._inner, bytes32(key), bytes32(value)) */\n jump\t// in\n tag_616:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6348:6400 return set(map._inner, bytes32(key), bytes32(value)) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6246:6407 function set(UintToUintMap storage map, uint256 key, uint256 value) internal returns (bool) {... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"src/libraries/Hooks.sol\":3932:4080 function getHooks(bytes32 hooksParameters) internal pure returns (address hooks) {... */\n tag_312:\n /* \"src/libraries/Hooks.sol\":3998:4011 address hooks */\n 0x00\n /* \"src/libraries/Hooks.sol\":4055:4070 hooksParameters */\n dup2\n /* \"src/libraries/Hooks.sol\":4047:4071 uint256(hooksParameters) */\n 0x00\n shr\n /* \"src/libraries/Hooks.sol\":4023:4073 hooks = address(uint160(uint256(hooksParameters))) */\n swap1\n pop\n /* \"src/libraries/Hooks.sol\":3932:4080 function getHooks(bytes32 hooksParameters) internal pure returns (address hooks) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/Hooks.sol\":4730:4860 function getFlags(bytes32 hooksParameters) internal pure returns (bytes12 flags) {... */\n tag_315:\n /* \"src/libraries/Hooks.sol\":4796:4809 bytes12 flags */\n 0x00\n /* \"src/libraries/Hooks.sol\":4837:4852 hooksParameters */\n dup2\n /* \"src/libraries/Hooks.sol\":4821:4853 flags = bytes12(hooksParameters) */\n swap1\n pop\n /* \"src/libraries/Hooks.sol\":4730:4860 function getFlags(bytes32 hooksParameters) internal pure returns (bytes12 flags) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6781:6926 function contains(UintToUintMap storage map, uint256 key) internal view returns (bool) {... */\n tag_329:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6862:6866 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6885:6919 contains(map._inner, bytes32(key)) */\n tag_621\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6894:6897 map */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6894:6904 map._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6914:6917 key */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6906:6918 bytes32(key) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6885:6893 contains */\n tag_622\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6885:6919 contains(map._inner, bytes32(key)) */\n jump\t// in\n tag_621:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6878:6919 return contains(map._inner, bytes32(key)) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6781:6926 function contains(UintToUintMap storage map, uint256 key) internal view returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8183:8330 function get(UintToUintMap storage map, uint256 key) internal view returns (uint256) {... */\n tag_333:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8259:8266 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8293:8322 get(map._inner, bytes32(key)) */\n tag_624\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8297:8300 map */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8297:8307 map._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8317:8320 key */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8309:8321 bytes32(key) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8293:8296 get */\n tag_625\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8293:8322 get(map._inner, bytes32(key)) */\n jump\t// in\n tag_624:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8285:8323 uint256(get(map._inner, bytes32(key))) */\n 0x00\n shr\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8278:8323 return uint256(get(map._inner, bytes32(key))) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8183:8330 function get(UintToUintMap storage map, uint256 key) internal view returns (uint256) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":2658:2845 function decodeBool(bytes32 encoded, uint256 offset) internal pure returns (bool boolean) {... */\n tag_335:\n /* \"src/libraries/math/Encoded.sol\":2734:2746 bool boolean */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":2818:2828 MASK_UINT1 */\n 0x01\n /* \"src/libraries/math/Encoded.sol\":2808:2815 encoded */\n dup4\n /* \"src/libraries/math/Encoded.sol\":2800:2806 offset */\n dup4\n /* \"src/libraries/math/Encoded.sol\":2796:2816 shr(offset, encoded) */\n shr\n /* \"src/libraries/math/Encoded.sol\":2792:2829 and(shr(offset, encoded), MASK_UINT1) */\n and\n /* \"src/libraries/math/Encoded.sol\":2781:2829 boolean := and(shr(offset, encoded), MASK_UINT1) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":2658:2845 function decodeBool(bytes32 encoded, uint256 offset) internal pure returns (bool boolean) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8316:8466 function add(AddressSet storage set, address value) internal returns (bool) {... */\n tag_344:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8386:8390 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8409:8459 _add(set._inner, bytes32(uint256(uint160(value)))) */\n tag_628\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8414:8417 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8414:8424 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8450:8455 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8434:8457 uint256(uint160(value)) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8426:8458 bytes32(uint256(uint160(value))) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8409:8413 _add */\n tag_629\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8409:8459 _add(set._inner, bytes32(uint256(uint160(value)))) */\n jump\t// in\n tag_628:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8402:8459 return _add(set._inner, bytes32(uint256(uint160(value)))) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8316:8466 function add(AddressSet storage set, address value) internal returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8880:9178 function keys(UintToUintMap storage map) internal view returns (uint256[] memory) {... */\n tag_349:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8944:8960 uint256[] memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8972:8994 bytes32[] memory store */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8997:9013 keys(map._inner) */\n tag_631\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":9002:9005 map */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":9002:9012 map._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8997:9001 keys */\n tag_632\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8997:9013 keys(map._inner) */\n jump\t// in\n tag_631:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8972:9013 bytes32[] memory store = keys(map._inner) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":9023:9046 uint256[] memory result */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":9133:9138 store */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":9123:9138 result := store */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":9165:9171 result */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":9158:9171 return result */\n swap3\n pop\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":8880:9178 function keys(UintToUintMap storage map) internal view returns (uint256[] memory) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PriceHelper.sol\":784:1001 function getPriceFromId(uint24 id, uint16 binStep) internal pure returns (uint256 price) {... */\n tag_367:\n /* \"src/libraries/PriceHelper.sol\":858:871 uint256 price */\n 0x00\n /* \"src/libraries/PriceHelper.sol\":883:895 uint256 base */\n dup1\n /* \"src/libraries/PriceHelper.sol\":898:914 getBase(binStep) */\n tag_634\n /* \"src/libraries/PriceHelper.sol\":906:913 binStep */\n dup4\n /* \"src/libraries/PriceHelper.sol\":898:905 getBase */\n tag_635\n /* \"src/libraries/PriceHelper.sol\":898:914 getBase(binStep) */\n jump\t// in\n tag_634:\n /* \"src/libraries/PriceHelper.sol\":883:914 uint256 base = getBase(binStep) */\n swap1\n pop\n /* \"src/libraries/PriceHelper.sol\":924:939 int256 exponent */\n 0x00\n /* \"src/libraries/PriceHelper.sol\":942:957 getExponent(id) */\n tag_636\n /* \"src/libraries/PriceHelper.sol\":954:956 id */\n dup6\n /* \"src/libraries/PriceHelper.sol\":942:953 getExponent */\n tag_637\n /* \"src/libraries/PriceHelper.sol\":942:957 getExponent(id) */\n jump\t// in\n tag_636:\n /* \"src/libraries/PriceHelper.sol\":924:957 int256 exponent = getExponent(id) */\n swap1\n pop\n /* \"src/libraries/PriceHelper.sol\":976:994 base.pow(exponent) */\n tag_638\n /* \"src/libraries/PriceHelper.sol\":985:993 exponent */\n dup2\n /* \"src/libraries/PriceHelper.sol\":976:980 base */\n dup4\n /* \"src/libraries/PriceHelper.sol\":976:984 base.pow */\n tag_639\n swap1\n /* \"src/libraries/PriceHelper.sol\":976:994 base.pow(exponent) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_638:\n /* \"src/libraries/PriceHelper.sol\":968:994 price = base.pow(exponent) */\n swap3\n pop\n /* \"src/libraries/PriceHelper.sol\":873:1001 {... */\n pop\n pop\n /* \"src/libraries/PriceHelper.sol\":784:1001 function getPriceFromId(uint24 id, uint16 binStep) internal pure returns (uint256 price) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":27218:27413 function _sortTokens(IERC20 tokenA, IERC20 tokenB) private pure returns (IERC20, IERC20) {... */\n tag_369:\n /* \"src/LBFactory.sol\":27291:27297 IERC20 */\n 0x00\n /* \"src/LBFactory.sol\":27299:27305 IERC20 */\n dup1\n /* \"src/LBFactory.sol\":27330:27336 tokenB */\n dup3\n /* \"src/LBFactory.sol\":27321:27336 tokenA > tokenB */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":27321:27327 tokenA */\n dup5\n /* \"src/LBFactory.sol\":27321:27336 tokenA > tokenB */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n gt\n /* \"src/LBFactory.sol\":27317:27373 if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA) */\n iszero\n tag_641\n jumpi\n /* \"src/LBFactory.sol\":27358:27364 tokenB */\n dup3\n /* \"src/LBFactory.sol\":27366:27372 tokenA */\n dup5\n /* \"src/LBFactory.sol\":27338:27373 (tokenA, tokenB) = (tokenB, tokenA) */\n dup1\n swap5\n pop\n dup2\n swap6\n pop\n pop\n pop\n /* \"src/LBFactory.sol\":27317:27373 if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA) */\n tag_641:\n /* \"src/LBFactory.sol\":27391:27397 tokenA */\n dup4\n /* \"src/LBFactory.sol\":27399:27405 tokenB */\n dup4\n /* \"src/LBFactory.sol\":27383:27406 return (tokenA, tokenB) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBFactory.sol\":27218:27413 function _sortTokens(IERC20 tokenA, IERC20 tokenB) private pure returns (IERC20, IERC20) {... */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":2186:2336 function getBaseFactor(bytes32 params) internal pure returns (uint16 baseFactor) {... */\n tag_374:\n /* \"src/libraries/PairParameterHelper.sol\":2248:2265 uint16 baseFactor */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":2290:2329 params.decodeUint16(OFFSET_BASE_FACTOR) */\n tag_643\n /* \"src/libraries/PairParameterHelper.sol\":1162:1163 0 */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":2290:2296 params */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":2290:2309 params.decodeUint16 */\n tag_644\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":2290:2329 params.decodeUint16(OFFSET_BASE_FACTOR) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_643:\n /* \"src/libraries/PairParameterHelper.sol\":2277:2329 baseFactor = params.decodeUint16(OFFSET_BASE_FACTOR) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":2186:2336 function getBaseFactor(bytes32 params) internal pure returns (uint16 baseFactor) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":2645:2803 function getFilterPeriod(bytes32 params) internal pure returns (uint16 filterPeriod) {... */\n tag_376:\n /* \"src/libraries/PairParameterHelper.sol\":2709:2728 uint16 filterPeriod */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":2755:2796 params.decodeUint12(OFFSET_FILTER_PERIOD) */\n tag_646\n /* \"src/libraries/PairParameterHelper.sol\":1218:1220 16 */\n 0x10\n /* \"src/libraries/PairParameterHelper.sol\":2755:2761 params */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":2755:2774 params.decodeUint12 */\n tag_647\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":2755:2796 params.decodeUint12(OFFSET_FILTER_PERIOD) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_646:\n /* \"src/libraries/PairParameterHelper.sol\":2740:2796 filterPeriod = params.decodeUint12(OFFSET_FILTER_PERIOD) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":2645:2803 function getFilterPeriod(bytes32 params) internal pure returns (uint16 filterPeriod) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":3108:3262 function getDecayPeriod(bytes32 params) internal pure returns (uint16 decayPeriod) {... */\n tag_378:\n /* \"src/libraries/PairParameterHelper.sol\":3171:3189 uint16 decayPeriod */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":3215:3255 params.decodeUint12(OFFSET_DECAY_PERIOD) */\n tag_649\n /* \"src/libraries/PairParameterHelper.sol\":1274:1276 28 */\n 0x1c\n /* \"src/libraries/PairParameterHelper.sol\":3215:3221 params */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":3215:3234 params.decodeUint12 */\n tag_647\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":3215:3255 params.decodeUint12(OFFSET_DECAY_PERIOD) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_649:\n /* \"src/libraries/PairParameterHelper.sol\":3201:3255 decayPeriod = params.decodeUint12(OFFSET_DECAY_PERIOD) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":3108:3262 function getDecayPeriod(bytes32 params) internal pure returns (uint16 decayPeriod) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":3583:3753 function getReductionFactor(bytes32 params) internal pure returns (uint16 reductionFactor) {... */\n tag_380:\n /* \"src/libraries/PairParameterHelper.sol\":3650:3672 uint16 reductionFactor */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":3702:3746 params.decodeUint14(OFFSET_REDUCTION_FACTOR) */\n tag_651\n /* \"src/libraries/PairParameterHelper.sol\":1334:1336 40 */\n 0x28\n /* \"src/libraries/PairParameterHelper.sol\":3702:3708 params */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":3702:3721 params.decodeUint14 */\n tag_652\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":3702:3746 params.decodeUint14(OFFSET_REDUCTION_FACTOR) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_651:\n /* \"src/libraries/PairParameterHelper.sol\":3684:3746 reductionFactor = params.decodeUint14(OFFSET_REDUCTION_FACTOR) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":3583:3753 function getReductionFactor(bytes32 params) internal pure returns (uint16 reductionFactor) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":4089:4267 function getVariableFeeControl(bytes32 params) internal pure returns (uint24 variableFeeControl) {... */\n tag_382:\n /* \"src/libraries/PairParameterHelper.sol\":4159:4184 uint24 variableFeeControl */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":4217:4260 params.decodeUint24(OFFSET_VAR_FEE_CONTROL) */\n tag_654\n /* \"src/libraries/PairParameterHelper.sol\":1393:1395 54 */\n 0x36\n /* \"src/libraries/PairParameterHelper.sol\":4217:4223 params */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":4217:4236 params.decodeUint24 */\n tag_655\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":4217:4260 params.decodeUint24(OFFSET_VAR_FEE_CONTROL) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_654:\n /* \"src/libraries/PairParameterHelper.sol\":4196:4260 variableFeeControl = params.decodeUint24(OFFSET_VAR_FEE_CONTROL) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":4089:4267 function getVariableFeeControl(bytes32 params) internal pure returns (uint24 variableFeeControl) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":4580:4742 function getProtocolShare(bytes32 params) internal pure returns (uint16 protocolShare) {... */\n tag_384:\n /* \"src/libraries/PairParameterHelper.sol\":4645:4665 uint16 protocolShare */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":4693:4735 params.decodeUint14(OFFSET_PROTOCOL_SHARE) */\n tag_657\n /* \"src/libraries/PairParameterHelper.sol\":1451:1453 78 */\n 0x4e\n /* \"src/libraries/PairParameterHelper.sol\":4693:4699 params */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":4693:4712 params.decodeUint14 */\n tag_652\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":4693:4735 params.decodeUint14(OFFSET_PROTOCOL_SHARE) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_657:\n /* \"src/libraries/PairParameterHelper.sol\":4677:4735 protocolShare = params.decodeUint14(OFFSET_PROTOCOL_SHARE) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":4580:4742 function getProtocolShare(bytes32 params) internal pure returns (uint16 protocolShare) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PairParameterHelper.sol\":5104:5296 function getMaxVolatilityAccumulator(bytes32 params) internal pure returns (uint24 maxVolatilityAccumulator) {... */\n tag_386:\n /* \"src/libraries/PairParameterHelper.sol\":5180:5211 uint24 maxVolatilityAccumulator */\n 0x00\n /* \"src/libraries/PairParameterHelper.sol\":5250:5289 params.decodeUint20(OFFSET_MAX_VOL_ACC) */\n tag_659\n /* \"src/libraries/PairParameterHelper.sol\":1506:1508 92 */\n 0x5c\n /* \"src/libraries/PairParameterHelper.sol\":5250:5256 params */\n dup4\n /* \"src/libraries/PairParameterHelper.sol\":5250:5269 params.decodeUint20 */\n tag_660\n swap1\n /* \"src/libraries/PairParameterHelper.sol\":5250:5289 params.decodeUint20(OFFSET_MAX_VOL_ACC) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_659:\n /* \"src/libraries/PairParameterHelper.sol\":5223:5289 maxVolatilityAccumulator = params.decodeUint20(OFFSET_MAX_VOL_ACC) */\n swap1\n pop\n /* \"src/libraries/PairParameterHelper.sol\":5104:5296 function getMaxVolatilityAccumulator(bytes32 params) internal pure returns (uint24 maxVolatilityAccumulator) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1413:1986 function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address addr) {... */\n tag_398:\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1500:1512 address addr */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1552:1558 amount */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1528:1549 address(this).balance */\n selfbalance\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1528:1558 address(this).balance < amount */\n lt\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1524:1649 if (address(this).balance < amount) {... */\n iszero\n tag_662\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1608:1629 address(this).balance */\n selfbalance\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1631:1637 amount */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1581:1638 Create2InsufficientBalance(address(this).balance, amount) */\n mload(0x40)\n 0xe4bbecac00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_663\n swap3\n swap2\n swap1\n tag_492\n jump\t// in\n tag_663:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1524:1649 if (address(this).balance < amount) {... */\n tag_662:\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1681:1682 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1662:1670 bytecode */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1662:1677 bytecode.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1662:1682 bytecode.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1658:1738 if (bytecode.length == 0) {... */\n tag_664\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1705:1727 Create2EmptyBytecode() */\n mload(0x40)\n 0x4ca249dc00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1658:1738 if (bytecode.length == 0) {... */\n tag_664:\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1875:1879 salt */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1864:1872 bytecode */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1858:1873 mload(bytecode) */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1851:1855 0x20 */\n 0x20\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1841:1849 bytecode */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1837:1856 add(bytecode, 0x20) */\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1829:1835 amount */\n dup7\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1821:1880 create2(amount, add(bytecode, 0x20), mload(bytecode), salt) */\n create2\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1813:1880 addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1919:1920 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1903:1921 addr == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1903:1907 addr */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1903:1921 addr == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1899:1980 if (addr == address(0)) {... */\n tag_665\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1944:1969 Create2FailedDeployment() */\n mload(0x40)\n 0x741752c200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1899:1980 if (addr == address(0)) {... */\n tag_665:\n /* \"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":1413:1986 function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address addr) {... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10804:10933 function add(UintSet storage set, uint256 value) internal returns (bool) {... */\n tag_401:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10871:10875 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10894:10926 _add(set._inner, bytes32(value)) */\n tag_667\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10899:10902 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10899:10909 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10919:10924 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10911:10925 bytes32(value) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10894:10898 _add */\n tag_629\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10894:10926 _add(set._inner, bytes32(value)) */\n jump\t// in\n tag_667:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10887:10926 return _add(set._inner, bytes32(value)) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":10804:10933 function add(UintSet storage set, uint256 value) internal returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11542:11654 function length(UintSet storage set) internal view returns (uint256) {... */\n tag_409:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11602:11609 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11628:11647 _length(set._inner) */\n tag_669\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11636:11639 set */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11636:11646 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11628:11635 _length */\n tag_670\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11628:11647 _length(set._inner) */\n jump\t// in\n tag_669:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11621:11647 return _length(set._inner) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11542:11654 function length(UintSet storage set) internal view returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11996:12131 function at(UintSet storage set, uint256 index) internal view returns (uint256) {... */\n tag_422:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12067:12074 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12101:12123 _at(set._inner, index) */\n tag_672\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12105:12108 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12105:12115 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12117:12122 index */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12101:12104 _at */\n tag_552\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12101:12123 _at(set._inner, index) */\n jump\t// in\n tag_672:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12093:12124 uint256(_at(set._inner, index)) */\n 0x00\n shr\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":12086:12124 return uint256(_at(set._inner, index)) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":11996:12131 function at(UintSet storage set, uint256 index) internal view returns (uint256) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/SafeCast.sol\":10513:10648 function safe16(uint256 x) internal pure returns (uint16 y) {... */\n tag_423:\n /* \"src/libraries/math/SafeCast.sol\":10563:10571 uint16 y */\n 0x00\n /* \"src/libraries/math/SafeCast.sol\":10606:10607 x */\n dup2\n /* \"src/libraries/math/SafeCast.sol\":10599:10600 x */\n dup3\n /* \"src/libraries/math/SafeCast.sol\":10588:10601 y = uint16(x) */\n swap2\n pop\n dup2\n /* \"src/libraries/math/SafeCast.sol\":10587:10607 (y = uint16(x)) != x */\n 0xffff\n and\n eq\n /* \"src/libraries/math/SafeCast.sol\":10583:10641 if ((y = uint16(x)) != x) revert SafeCast__Exceeds16Bits() */\n tag_674\n jumpi\n /* \"src/libraries/math/SafeCast.sol\":10616:10641 SafeCast__Exceeds16Bits() */\n mload(0x40)\n 0x64ae406d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/math/SafeCast.sol\":10583:10641 if ((y = uint16(x)) != x) revert SafeCast__Exceeds16Bits() */\n tag_674:\n /* \"src/libraries/math/SafeCast.sol\":10513:10648 function safe16(uint256 x) internal pure returns (uint16 y) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2830:3052 function _transferOwnership(address newOwner) internal virtual override {... */\n tag_442:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2912:2941 Ownable2StepStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2944:2969 _getOwnable2StepStorage() */\n tag_676\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2944:2967 _getOwnable2StepStorage */\n tag_522\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2944:2969 _getOwnable2StepStorage() */\n jump\t// in\n tag_676:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2912:2969 Ownable2StepStorage storage $ = _getOwnable2StepStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2986:2987 $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2986:3001 $._pendingOwner */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2979:3001 delete $._pendingOwner */\n 0x0100\n exp\n dup2\n sload\n swap1\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n sstore\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3011:3045 super._transferOwnership(newOwner) */\n tag_677\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3036:3044 newOwner */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3011:3035 super._transferOwnership */\n tag_678\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":3011:3045 super._transferOwnership(newOwner) */\n jump\t// in\n tag_677:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2902:3052 {... */\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":2830:3052 function _transferOwnership(address newOwner) internal virtual override {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9117:9232 function length(AddressSet storage set) internal view returns (uint256) {... */\n tag_455:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9180:9187 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9206:9225 _length(set._inner) */\n tag_680\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9214:9217 set */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9214:9224 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9206:9213 _length */\n tag_670\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9206:9225 _length(set._inner) */\n jump\t// in\n tag_680:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9199:9225 return _length(set._inner) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":9117:9232 function length(AddressSet storage set) internal view returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1192:1351 function _getOwnableStorage() private pure returns (OwnableStorage storage $) {... */\n tag_459:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1244:1268 OwnableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1313:1335 OwnableStorageLocation */\n 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1303:1335 $.slot := OwnableStorageLocation */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1192:1351 function _getOwnableStorage() private pure returns (OwnableStorage storage $) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3732:3939 function hasRole(bytes32 role, address account) public view virtual returns (bool) {... */\n tag_464:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3809:3813 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3825:3855 AccessControlStorage storage $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3858:3884 _getAccessControlStorage() */\n tag_683\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3858:3882 _getAccessControlStorage */\n tag_268\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3858:3884 _getAccessControlStorage() */\n jump\t// in\n tag_683:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3825:3884 AccessControlStorage storage $ = _getAccessControlStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3901:3902 $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3901:3909 $._roles */\n 0x00\n add\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3901:3915 $._roles[role] */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3910:3914 role */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3901:3915 $._roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3901:3923 $._roles[role].hasRole */\n 0x00\n add\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3901:3932 $._roles[role].hasRole[account] */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3924:3931 account */\n dup5\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3901:3932 $._roles[role].hasRole[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3894:3932 return $._roles[role].hasRole[account] */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":3732:3939 function hasRole(bytes32 role, address account) public view virtual returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\n tag_481:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8795:8825 InitializableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8870:8891 INITIALIZABLE_STORAGE */\n 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8860:8891 $.slot := INITIALIZABLE_STORAGE */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8737:8907 function _getInitializableStorage() private pure returns (InitializableStorage storage $) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1847:1974 function __Ownable_init(address initialOwner) internal onlyInitializing {... */\n tag_489:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":6931:6951 _checkInitializing() */\n tag_686\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":6931:6949 _checkInitializing */\n tag_687\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":6931:6951 _checkInitializing() */\n jump\t// in\n tag_686:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1929:1967 __Ownable_init_unchained(initialOwner) */\n tag_689\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1954:1966 initialOwner */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1929:1953 __Ownable_init_unchained */\n tag_690\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1929:1967 __Ownable_init_unchained(initialOwner) */\n jump\t// in\n tag_689:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1847:1974 function __Ownable_init(address initialOwner) internal onlyInitializing {... */\n pop\n jump\t// out\n /* \"src/LBFactory.sol\":25657:26040 function _setFeeRecipient(address feeRecipient) internal {... */\n tag_494:\n /* \"src/LBFactory.sol\":25752:25753 0 */\n 0x00\n /* \"src/LBFactory.sol\":25728:25754 feeRecipient == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":25728:25740 feeRecipient */\n dup2\n /* \"src/LBFactory.sol\":25728:25754 feeRecipient == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBFactory.sol\":25724:25787 if (feeRecipient == address(0)) revert LBFactory__AddressZero() */\n tag_692\n jumpi\n /* \"src/LBFactory.sol\":25763:25787 LBFactory__AddressZero() */\n mload(0x40)\n 0x95cf3ee400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":25724:25787 if (feeRecipient == address(0)) revert LBFactory__AddressZero() */\n tag_692:\n /* \"src/LBFactory.sol\":25798:25821 address oldFeeRecipient */\n 0x00\n /* \"src/LBFactory.sol\":25824:25837 _feeRecipient */\n dup1\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":25798:25837 address oldFeeRecipient = _feeRecipient */\n swap1\n pop\n /* \"src/LBFactory.sol\":25870:25882 feeRecipient */\n dup2\n /* \"src/LBFactory.sol\":25851:25882 oldFeeRecipient == feeRecipient */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":25851:25866 oldFeeRecipient */\n dup2\n /* \"src/LBFactory.sol\":25851:25882 oldFeeRecipient == feeRecipient */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"src/LBFactory.sol\":25847:25933 if (oldFeeRecipient == feeRecipient) revert LBFactory__SameFeeRecipient(_feeRecipient) */\n tag_693\n jumpi\n /* \"src/LBFactory.sol\":25919:25932 _feeRecipient */\n 0x00\n dup1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBFactory.sol\":25891:25933 LBFactory__SameFeeRecipient(_feeRecipient) */\n mload(0x40)\n 0x4fcea97100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_694\n swap2\n swap1\n tag_114\n jump\t// in\n tag_694:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/LBFactory.sol\":25847:25933 if (oldFeeRecipient == feeRecipient) revert LBFactory__SameFeeRecipient(_feeRecipient) */\n tag_693:\n /* \"src/LBFactory.sol\":25960:25972 feeRecipient */\n dup2\n /* \"src/LBFactory.sol\":25944:25957 _feeRecipient */\n 0x00\n dup1\n /* \"src/LBFactory.sol\":25944:25972 _feeRecipient = feeRecipient */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBFactory.sol\":25987:26033 FeeRecipientSet(oldFeeRecipient, feeRecipient) */\n 0x15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721\n /* \"src/LBFactory.sol\":26003:26018 oldFeeRecipient */\n dup2\n /* \"src/LBFactory.sol\":26020:26032 feeRecipient */\n dup4\n /* \"src/LBFactory.sol\":25987:26033 FeeRecipientSet(oldFeeRecipient, feeRecipient) */\n mload(0x40)\n tag_695\n swap3\n swap2\n swap1\n tag_696\n jump\t// in\n tag_695:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"src/LBFactory.sol\":25714:26040 {... */\n pop\n /* \"src/LBFactory.sol\":25657:26040 function _setFeeRecipient(address feeRecipient) internal {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8634:8790 function remove(AddressSet storage set, address value) internal returns (bool) {... */\n tag_510:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8707:8711 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8730:8783 _remove(set._inner, bytes32(uint256(uint160(value)))) */\n tag_698\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8738:8741 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8738:8748 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8774:8779 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8758:8781 uint256(uint160(value)) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8750:8782 bytes32(uint256(uint160(value))) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8730:8737 _remove */\n tag_699\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8730:8783 _remove(set._inner, bytes32(uint256(uint160(value)))) */\n jump\t// in\n tag_698:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8723:8783 return _remove(set._inner, bytes32(uint256(uint160(value)))) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8634:8790 function remove(AddressSet storage set, address value) internal returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6566:6702 function remove(UintToUintMap storage map, uint256 key) internal returns (bool) {... */\n tag_517:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6640:6644 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6663:6695 remove(map._inner, bytes32(key)) */\n tag_701\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6670:6673 map */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6670:6680 map._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6690:6693 key */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6682:6694 bytes32(key) */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6663:6669 remove */\n tag_702\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6663:6695 remove(map._inner, bytes32(key)) */\n jump\t// in\n tag_701:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6656:6695 return remove(map._inner, bytes32(key)) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":6566:6702 function remove(UintToUintMap storage map, uint256 key) internal returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":1545:1719 function _getOwnable2StepStorage() private pure returns (Ownable2StepStorage storage $) {... */\n tag_522:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":1602:1631 Ownable2StepStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":1676:1703 Ownable2StepStorageLocation */\n 0x237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":1666:1703 $.slot := Ownable2StepStorageLocation */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":1545:1719 function _getOwnable2StepStorage() private pure returns (Ownable2StepStorage storage $) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3716:3839 function length(Bytes32ToBytes32Map storage map) internal view returns (uint256) {... */\n tag_544:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3788:3795 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3814:3832 map._keys.length() */\n tag_705\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3814:3817 map */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3814:3823 map._keys */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3814:3830 map._keys.length */\n tag_706\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3814:3832 map._keys.length() */\n jump\t// in\n tag_705:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3807:3832 return map._keys.length() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3716:3839 function length(Bytes32ToBytes32Map storage map) internal view returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4192:4383 function at(Bytes32ToBytes32Map storage map, uint256 index) internal view returns (bytes32, bytes32) {... */\n tag_547:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4275:4282 bytes32 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4284:4291 bytes32 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4303:4314 bytes32 key */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4317:4336 map._keys.at(index) */\n tag_708\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4330:4335 index */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4317:4320 map */\n dup7\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4317:4326 map._keys */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4317:4329 map._keys.at */\n tag_709\n swap1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4317:4336 map._keys.at(index) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_708:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4303:4336 bytes32 key = map._keys.at(index) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4354:4357 key */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4359:4362 map */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4359:4370 map._values */\n 0x02\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4359:4375 map._values[key] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4371:4374 key */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4359:4375 map._values[key] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4346:4376 return (key, map._values[key]) */\n swap3\n pop\n swap3\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4192:4383 function at(Bytes32ToBytes32Map storage map, uint256 index) internal view returns (bytes32, bytes32) {... */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4923:5041 function _at(Set storage set, uint256 index) private view returns (bytes32) {... */\n tag_552:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4990:4997 bytes32 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5016:5019 set */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5016:5027 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5028:5033 index */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5016:5034 set._values[index] */\n dup2\n sload\n dup2\n lt\n tag_711\n jumpi\n tag_712\n tag_244\n jump\t// in\n tag_712:\n tag_711:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n sload\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5009:5034 return set._values[index] */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4923:5041 function _at(Set storage set, uint256 index) private view returns (bytes32) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4264:4393 function _contains(Set storage set, bytes32 value) private view returns (bool) {... */\n tag_565:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4337:4341 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4385:4386 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4360:4363 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4360:4374 set._positions */\n 0x01\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4360:4381 set._positions[value] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4375:4380 value */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4360:4381 set._positions[value] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4360:4386 set._positions[value] != 0 */\n eq\n iszero\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4353:4386 return set._positions[value] != 0 */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4264:4393 function _contains(Set storage set, bytes32 value) private view returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4381:4578 function _checkRole(bytes32 role, address account) internal view virtual {... */\n tag_569:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4469:4491 hasRole(role, account) */\n tag_716\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4477:4481 role */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4483:4490 account */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4469:4476 hasRole */\n tag_176\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4469:4491 hasRole(role, account) */\n jump\t// in\n tag_716:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4464:4572 if (!hasRole(role, account)) {... */\n tag_717\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4547:4554 account */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4556:4560 role */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4514:4561 AccessControlUnauthorizedAccount(account, role) */\n mload(0x40)\n 0xe2517d3f00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_718\n swap3\n swap2\n swap1\n tag_719\n jump\t// in\n tag_718:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4464:4572 if (!hasRole(role, account)) {... */\n tag_717:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":4381:4578 function _checkRole(bytes32 role, address account) internal view virtual {... */\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7270:7657 function _grantRole(bytes32 role, address account) internal virtual returns (bool) {... */\n tag_588:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7347:7351 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7363:7393 AccessControlStorage storage $ */\n dup1\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7396:7422 _getAccessControlStorage() */\n tag_721\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7396:7420 _getAccessControlStorage */\n tag_268\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7396:7422 _getAccessControlStorage() */\n jump\t// in\n tag_721:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7363:7422 AccessControlStorage storage $ = _getAccessControlStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7437:7459 hasRole(role, account) */\n tag_722\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7445:7449 role */\n dup5\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7451:7458 account */\n dup5\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7437:7444 hasRole */\n tag_176\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7437:7459 hasRole(role, account) */\n jump\t// in\n tag_722:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7432:7651 if (!hasRole(role, account)) {... */\n tag_723\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7509:7513 true */\n 0x01\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7476 $ */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7483 $._roles */\n 0x00\n add\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7489 $._roles[role] */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7484:7488 role */\n dup7\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7489 $._roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7497 $._roles[role].hasRole */\n 0x00\n add\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7506 $._roles[role].hasRole[account] */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7498:7505 account */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7506 $._roles[role].hasRole[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7475:7513 $._roles[role].hasRole[account] = true */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7559:7571 _msgSender() */\n tag_724\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7559:7569 _msgSender */\n tag_289\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7559:7571 _msgSender() */\n jump\t// in\n tag_724:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7532:7572 RoleGranted(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7550:7557 account */\n dup4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7532:7572 RoleGranted(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7544:7548 role */\n dup6\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7532:7572 RoleGranted(role, account, _msgSender()) */\n 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log4\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7593:7597 true */\n 0x01\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7586:7597 return true */\n swap2\n pop\n pop\n jump(tag_720)\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7432:7651 if (!hasRole(role, account)) {... */\n tag_723:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7635:7640 false */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7628:7640 return false */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":7270:7657 function _grantRole(bytes32 role, address account) internal virtual returns (bool) {... */\n tag_720:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":1099:1416 function set(bytes32 encoded, uint256 value, uint256 mask, uint256 offset)... */\n tag_603:\n /* \"src/libraries/math/Encoded.sol\":1221:1239 bytes32 newEncoded */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":1321:1325 mask */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1313:1319 offset */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1309:1326 shl(offset, mask) */\n shl\n /* \"src/libraries/math/Encoded.sol\":1305:1327 not(shl(offset, mask)) */\n not\n /* \"src/libraries/math/Encoded.sol\":1296:1303 encoded */\n dup6\n /* \"src/libraries/math/Encoded.sol\":1292:1328 and(encoded, not(shl(offset, mask))) */\n and\n /* \"src/libraries/math/Encoded.sol\":1278:1328 newEncoded := and(encoded, not(shl(offset, mask))) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":1393:1397 mask */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1386:1391 value */\n dup5\n /* \"src/libraries/math/Encoded.sol\":1382:1398 and(value, mask) */\n and\n /* \"src/libraries/math/Encoded.sol\":1374:1380 offset */\n dup3\n /* \"src/libraries/math/Encoded.sol\":1370:1399 shl(offset, and(value, mask)) */\n shl\n /* \"src/libraries/math/Encoded.sol\":1358:1368 newEncoded */\n dup2\n /* \"src/libraries/math/Encoded.sol\":1355:1400 or(newEncoded, shl(offset, and(value, mask))) */\n or\n /* \"src/libraries/math/Encoded.sol\":1341:1400 newEncoded := or(newEncoded, shl(offset, and(value, mask))) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":1099:1416 function set(bytes32 encoded, uint256 value, uint256 mask, uint256 offset)... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":2901:3075 function set(Bytes32ToBytes32Map storage map, bytes32 key, bytes32 value) internal returns (bool) {... */\n tag_617:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":2993:2997 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3028:3033 value */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3009:3012 map */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3009:3020 map._values */\n 0x02\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3009:3025 map._values[key] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3021:3024 key */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3009:3025 map._values[key] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3009:3033 map._values[key] = value */\n dup2\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3050:3068 map._keys.add(key) */\n tag_728\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3064:3067 key */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3050:3053 map */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3050:3059 map._keys */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3050:3063 map._keys.add */\n tag_729\n swap1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3050:3068 map._keys.add(key) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_728:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3043:3068 return map._keys.add(key) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":2901:3075 function set(Bytes32ToBytes32Map storage map, bytes32 key, bytes32 value) internal returns (bool) {... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3486:3626 function contains(Bytes32ToBytes32Map storage map, bytes32 key) internal view returns (bool) {... */\n tag_622:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3573:3577 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3596:3619 map._keys.contains(key) */\n tag_731\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3615:3618 key */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3596:3599 map */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3596:3605 map._keys */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3596:3614 map._keys.contains */\n tag_732\n swap1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3596:3619 map._keys.contains(key) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_731:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3589:3619 return map._keys.contains(key) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3486:3626 function contains(Bytes32ToBytes32Map storage map, bytes32 key) internal view returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4973:5247 function get(Bytes32ToBytes32Map storage map, bytes32 key) internal view returns (bytes32) {... */\n tag_625:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5055:5062 bytes32 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5074:5087 bytes32 value */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5090:5093 map */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5090:5101 map._values */\n 0x02\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5090:5106 map._values[key] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5102:5105 key */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5090:5106 map._values[key] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5074:5106 bytes32 value = map._values[key] */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5129:5130 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5120:5130 value == 0 */\n dup1\n shl\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5120:5125 value */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5120:5130 value == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5120:5153 value == 0 && !contains(map, key) */\n dup1\n iszero\n tag_734\n jumpi\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5135:5153 contains(map, key) */\n tag_735\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5144:5147 map */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5149:5152 key */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5135:5143 contains */\n tag_622\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5135:5153 contains(map, key) */\n jump\t// in\n tag_735:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5134:5153 !contains(map, key) */\n iszero\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5120:5153 value == 0 && !contains(map, key) */\n tag_734:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5116:5219 if (value == 0 && !contains(map, key)) {... */\n iszero\n tag_736\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5204:5207 key */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5176:5208 EnumerableMapNonexistentKey(key) */\n mload(0x40)\n 0x02b5668600000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_737\n swap2\n swap1\n tag_77\n jump\t// in\n tag_737:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5116:5219 if (value == 0 && !contains(map, key)) {... */\n tag_736:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5235:5240 value */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5228:5240 return value */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":4973:5247 function get(Bytes32ToBytes32Map storage map, bytes32 key) internal view returns (bytes32) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2241:2647 function _add(Set storage set, bytes32 value) private returns (bool) {... */\n tag_629:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2304:2308 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2325:2346 _contains(set, value) */\n tag_739\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2335:2338 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2340:2345 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2325:2334 _contains */\n tag_565\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2325:2346 _contains(set, value) */\n jump\t// in\n tag_739:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2320:2641 if (!_contains(set, value)) {... */\n tag_740\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2362:2365 set */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2362:2373 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2379:2384 value */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2362:2385 set._values.push(value) */\n swap1\n dup1\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n 0x01\n swap1\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n 0x00\n swap1\n swap2\n swap1\n swap2\n swap1\n swap2\n pop\n sstore\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2544:2547 set */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2544:2555 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2544:2562 set._values.length */\n dup1\n sload\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2520:2523 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2520:2534 set._positions */\n 0x01\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2520:2541 set._positions[value] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2535:2540 value */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2520:2541 set._positions[value] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2520:2562 set._positions[value] = set._values.length */\n dup2\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2583:2587 true */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2576:2587 return true */\n swap1\n pop\n jump(tag_738)\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2320:2641 if (!_contains(set, value)) {... */\n tag_740:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2625:2630 false */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2618:2630 return false */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2241:2647 function _add(Set storage set, bytes32 value) private returns (bool) {... */\n tag_738:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5797:5927 function keys(Bytes32ToBytes32Map storage map) internal view returns (bytes32[] memory) {... */\n tag_632:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5867:5883 bytes32[] memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5902:5920 map._keys.values() */\n tag_744\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5902:5905 map */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5902:5911 map._keys */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5902:5918 map._keys.values */\n tag_745\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5902:5920 map._keys.values() */\n jump\t// in\n tag_744:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5895:5920 return map._keys.values() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":5797:5927 function keys(Bytes32ToBytes32Map storage map) internal view returns (bytes32[] memory) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PriceHelper.sol\":1671:1884 function getBase(uint16 binStep) internal pure returns (uint256) {... */\n tag_635:\n /* \"src/libraries/PriceHelper.sol\":1727:1734 uint256 */\n 0x00\n /* \"src/libraries/Constants.sol\":595:601 10_000 */\n 0x2710\n /* \"src/libraries/Constants.sol\":230:233 128 */\n 0x80\n /* \"src/libraries/PriceHelper.sol\":1796:1838 uint256(binStep) << Constants.SCALE_OFFSET */\n 0xff\n and\n /* \"src/libraries/PriceHelper.sol\":1804:1811 binStep */\n dup4\n /* \"src/libraries/PriceHelper.sol\":1796:1812 uint256(binStep) */\n 0xffff\n and\n /* \"src/libraries/PriceHelper.sol\":1796:1838 uint256(binStep) << Constants.SCALE_OFFSET */\n swap1\n shl\n /* \"src/libraries/PriceHelper.sol\":1795:1867 (uint256(binStep) << Constants.SCALE_OFFSET) / Constants.BASIS_POINT_MAX */\n dup2\n tag_747\n jumpi\n tag_748\n tag_749\n jump\t// in\n tag_748:\n tag_747:\n div\n /* \"src/libraries/Constants.sol\":230:233 128 */\n 0x80\n /* \"src/libraries/Constants.sol\":273:290 1 << SCALE_OFFSET */\n 0xff\n and\n /* \"src/libraries/Constants.sol\":273:274 1 */\n 0x01\n /* \"src/libraries/Constants.sol\":273:290 1 << SCALE_OFFSET */\n swap1\n shl\n /* \"src/libraries/PriceHelper.sol\":1777:1867 Constants.SCALE + (uint256(binStep) << Constants.SCALE_OFFSET) / Constants.BASIS_POINT_MAX */\n add\n /* \"src/libraries/PriceHelper.sol\":1770:1867 return Constants.SCALE + (uint256(binStep) << Constants.SCALE_OFFSET) / Constants.BASIS_POINT_MAX */\n swap1\n pop\n /* \"src/libraries/PriceHelper.sol\":1671:1884 function getBase(uint16 binStep) internal pure returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/PriceHelper.sol\":2046:2202 function getExponent(uint24 id) internal pure returns (int256) {... */\n tag_637:\n /* \"src/libraries/PriceHelper.sol\":2101:2107 int256 */\n 0x00\n /* \"src/libraries/PriceHelper.sol\":563:570 1 << 23 */\n 0x800000\n /* \"src/libraries/PriceHelper.sol\":2165:2167 id */\n dup3\n /* \"src/libraries/PriceHelper.sol\":2157:2168 uint256(id) */\n 0xffffff\n and\n /* \"src/libraries/PriceHelper.sol\":2150:2185 int256(uint256(id)) - REAL_ID_SHIFT */\n sub\n /* \"src/libraries/PriceHelper.sol\":2143:2185 return int256(uint256(id)) - REAL_ID_SHIFT */\n swap1\n pop\n /* \"src/libraries/PriceHelper.sol\":2046:2202 function getExponent(uint24 id) internal pure returns (int256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/math/Uint128x128Math.sol\":4085:7685 function pow(uint256 x, int256 y) internal pure returns (uint256 result) {... */\n tag_639:\n /* \"src/libraries/math/Uint128x128Math.sol\":4142:4156 uint256 result */\n 0x00\n /* \"src/libraries/math/Uint128x128Math.sol\":4168:4179 bool invert */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4189:4201 uint256 absY */\n 0x00\n /* \"src/libraries/math/Uint128x128Math.sol\":4221:4222 0 */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4216:4217 y */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":4216:4222 y == 0 */\n sub\n /* \"src/libraries/math/Uint128x128Math.sol\":4212:4246 if (y == 0) return Constants.SCALE */\n tag_752\n jumpi\n /* \"src/libraries/Constants.sol\":230:233 128 */\n 0x80\n /* \"src/libraries/Constants.sol\":273:290 1 << SCALE_OFFSET */\n 0xff\n and\n /* \"src/libraries/Constants.sol\":273:274 1 */\n 0x01\n /* \"src/libraries/Constants.sol\":273:290 1 << SCALE_OFFSET */\n swap1\n shl\n /* \"src/libraries/math/Uint128x128Math.sol\":4224:4246 return Constants.SCALE */\n swap3\n pop\n pop\n pop\n jump(tag_751)\n /* \"src/libraries/math/Uint128x128Math.sol\":4212:4246 if (y == 0) return Constants.SCALE */\n tag_752:\n /* \"src/libraries/math/Uint128x128Math.sol\":4288:4289 y */\n dup4\n /* \"src/libraries/math/Uint128x128Math.sol\":4280:4289 absY := y */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4315:4316 0 */\n 0x00\n /* \"src/libraries/math/Uint128x128Math.sol\":4309:4313 absY */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":4305:4317 slt(absY, 0) */\n slt\n /* \"src/libraries/math/Uint128x128Math.sol\":4302:4411 if slt(absY, 0) {... */\n iszero\n tag_753\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":4351:4355 absY */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4348:4349 0 */\n 0x00\n /* \"src/libraries/math/Uint128x128Math.sol\":4344:4356 sub(0, absY) */\n sub\n /* \"src/libraries/math/Uint128x128Math.sol\":4336:4356 absY := sub(0, absY) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4390:4396 invert */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":4383:4397 iszero(invert) */\n iszero\n /* \"src/libraries/math/Uint128x128Math.sol\":4373:4397 invert := iszero(invert) */\n swap2\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4302:4411 if slt(absY, 0) {... */\n tag_753:\n /* \"src/libraries/math/Uint128x128Math.sol\":4442:4450 0x100000 */\n 0x100000\n /* \"src/libraries/math/Uint128x128Math.sol\":4435:4439 absY */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":4435:4450 absY < 0x100000 */\n lt\n /* \"src/libraries/math/Uint128x128Math.sol\":4431:7491 if (absY < 0x100000) {... */\n iszero\n tag_754\n jumpi\n /* \"src/libraries/Constants.sol\":230:233 128 */\n 0x80\n /* \"src/libraries/Constants.sol\":273:290 1 << SCALE_OFFSET */\n 0xff\n and\n /* \"src/libraries/Constants.sol\":273:274 1 */\n 0x01\n /* \"src/libraries/Constants.sol\":273:290 1 << SCALE_OFFSET */\n swap1\n shl\n /* \"src/libraries/math/Uint128x128Math.sol\":4466:4490 result = Constants.SCALE */\n swap3\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4546:4547 x */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":4573:4607 0xffffffffffffffffffffffffffffffff */\n 0xffffffffffffffffffffffffffffffff\n /* \"src/libraries/math/Uint128x128Math.sol\":4570:4571 x */\n dup7\n /* \"src/libraries/math/Uint128x128Math.sol\":4567:4608 gt(x, 0xffffffffffffffffffffffffffffffff) */\n gt\n /* \"src/libraries/math/Uint128x128Math.sol\":4564:4725 if gt(x, 0xffffffffffffffffffffffffffffffff) {... */\n iszero\n tag_755\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":4654:4661 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4650:4651 0 */\n 0x00\n /* \"src/libraries/math/Uint128x128Math.sol\":4646:4652 not(0) */\n not\n /* \"src/libraries/math/Uint128x128Math.sol\":4642:4662 div(not(0), squared) */\n div\n /* \"src/libraries/math/Uint128x128Math.sol\":4631:4662 squared := div(not(0), squared) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4700:4706 invert */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":4693:4707 iszero(invert) */\n iszero\n /* \"src/libraries/math/Uint128x128Math.sol\":4683:4707 invert := iszero(invert) */\n swap3\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4564:4725 if gt(x, 0xffffffffffffffffffffffffffffffff) {... */\n tag_755:\n /* \"src/libraries/math/Uint128x128Math.sol\":4756:4759 0x1 */\n 0x01\n /* \"src/libraries/math/Uint128x128Math.sol\":4750:4754 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":4746:4760 and(absY, 0x1) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":4743:4805 if and(absY, 0x1) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_756\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":4794:4801 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4786:4792 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":4782:4802 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":4777:4780 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":4773:4803 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":4763:4803 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4743:4805 if and(absY, 0x1) { result := shr(128, mul(result, squared)) } */\n tag_756:\n /* \"src/libraries/math/Uint128x128Math.sol\":4855:4862 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4846:4853 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":4842:4863 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":4837:4840 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":4833:4864 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":4822:4864 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4894:4897 0x2 */\n 0x02\n /* \"src/libraries/math/Uint128x128Math.sol\":4888:4892 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":4884:4898 and(absY, 0x2) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":4881:4943 if and(absY, 0x2) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_757\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":4932:4939 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4924:4930 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":4920:4940 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":4915:4918 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":4911:4941 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":4901:4941 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4881:4943 if and(absY, 0x2) { result := shr(128, mul(result, squared)) } */\n tag_757:\n /* \"src/libraries/math/Uint128x128Math.sol\":4993:5000 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":4984:4991 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":4980:5001 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":4975:4978 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":4971:5002 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":4960:5002 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5032:5035 0x4 */\n 0x04\n /* \"src/libraries/math/Uint128x128Math.sol\":5026:5030 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5022:5036 and(absY, 0x4) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5019:5081 if and(absY, 0x4) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_758\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":5070:5077 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5062:5068 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":5058:5078 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5053:5056 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5049:5079 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5039:5079 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5019:5081 if and(absY, 0x4) { result := shr(128, mul(result, squared)) } */\n tag_758:\n /* \"src/libraries/math/Uint128x128Math.sol\":5131:5138 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5122:5129 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":5118:5139 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5113:5116 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5109:5140 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5098:5140 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5170:5173 0x8 */\n 0x08\n /* \"src/libraries/math/Uint128x128Math.sol\":5164:5168 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5160:5174 and(absY, 0x8) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5157:5219 if and(absY, 0x8) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_759\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":5208:5215 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5200:5206 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":5196:5216 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5191:5194 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5187:5217 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5177:5217 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5157:5219 if and(absY, 0x8) { result := shr(128, mul(result, squared)) } */\n tag_759:\n /* \"src/libraries/math/Uint128x128Math.sol\":5269:5276 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5260:5267 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":5256:5277 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5251:5254 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5247:5278 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5236:5278 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5308:5312 0x10 */\n 0x10\n /* \"src/libraries/math/Uint128x128Math.sol\":5302:5306 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5298:5313 and(absY, 0x10) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5295:5358 if and(absY, 0x10) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_760\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":5347:5354 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5339:5345 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":5335:5355 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5330:5333 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5326:5356 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5316:5356 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5295:5358 if and(absY, 0x10) { result := shr(128, mul(result, squared)) } */\n tag_760:\n /* \"src/libraries/math/Uint128x128Math.sol\":5408:5415 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5399:5406 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":5395:5416 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5390:5393 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5386:5417 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5375:5417 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5447:5451 0x20 */\n 0x20\n /* \"src/libraries/math/Uint128x128Math.sol\":5441:5445 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5437:5452 and(absY, 0x20) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5434:5497 if and(absY, 0x20) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_761\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":5486:5493 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5478:5484 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":5474:5494 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5469:5472 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5465:5495 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5455:5495 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5434:5497 if and(absY, 0x20) { result := shr(128, mul(result, squared)) } */\n tag_761:\n /* \"src/libraries/math/Uint128x128Math.sol\":5547:5554 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5538:5545 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":5534:5555 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5529:5532 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5525:5556 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5514:5556 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5586:5590 0x40 */\n 0x40\n /* \"src/libraries/math/Uint128x128Math.sol\":5580:5584 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5576:5591 and(absY, 0x40) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5573:5636 if and(absY, 0x40) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_762\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":5625:5632 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5617:5623 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":5613:5633 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5608:5611 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5604:5634 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5594:5634 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5573:5636 if and(absY, 0x40) { result := shr(128, mul(result, squared)) } */\n tag_762:\n /* \"src/libraries/math/Uint128x128Math.sol\":5686:5693 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5677:5684 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":5673:5694 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5668:5671 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5664:5695 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5653:5695 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5725:5729 0x80 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5719:5723 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5715:5730 and(absY, 0x80) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5712:5775 if and(absY, 0x80) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_763\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":5764:5771 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5756:5762 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":5752:5772 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5747:5750 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5743:5773 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5733:5773 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5712:5775 if and(absY, 0x80) { result := shr(128, mul(result, squared)) } */\n tag_763:\n /* \"src/libraries/math/Uint128x128Math.sol\":5825:5832 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5816:5823 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":5812:5833 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5807:5810 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5803:5834 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5792:5834 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5864:5869 0x100 */\n 0x0100\n /* \"src/libraries/math/Uint128x128Math.sol\":5858:5862 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5854:5870 and(absY, 0x100) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5851:5915 if and(absY, 0x100) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_764\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":5904:5911 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5896:5902 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":5892:5912 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5887:5890 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5883:5913 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5873:5913 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5851:5915 if and(absY, 0x100) { result := shr(128, mul(result, squared)) } */\n tag_764:\n /* \"src/libraries/math/Uint128x128Math.sol\":5965:5972 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":5956:5963 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":5952:5973 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":5947:5950 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":5943:5974 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":5932:5974 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6004:6009 0x200 */\n 0x0200\n /* \"src/libraries/math/Uint128x128Math.sol\":5998:6002 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":5994:6010 and(absY, 0x200) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":5991:6055 if and(absY, 0x200) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_765\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":6044:6051 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6036:6042 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":6032:6052 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6027:6030 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6023:6053 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6013:6053 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":5991:6055 if and(absY, 0x200) { result := shr(128, mul(result, squared)) } */\n tag_765:\n /* \"src/libraries/math/Uint128x128Math.sol\":6105:6112 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6096:6103 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":6092:6113 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6087:6090 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6083:6114 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6072:6114 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6144:6149 0x400 */\n 0x0400\n /* \"src/libraries/math/Uint128x128Math.sol\":6138:6142 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":6134:6150 and(absY, 0x400) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":6131:6195 if and(absY, 0x400) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_766\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":6184:6191 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6176:6182 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":6172:6192 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6167:6170 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6163:6193 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6153:6193 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6131:6195 if and(absY, 0x400) { result := shr(128, mul(result, squared)) } */\n tag_766:\n /* \"src/libraries/math/Uint128x128Math.sol\":6245:6252 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6236:6243 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":6232:6253 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6227:6230 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6223:6254 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6212:6254 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6284:6289 0x800 */\n 0x0800\n /* \"src/libraries/math/Uint128x128Math.sol\":6278:6282 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":6274:6290 and(absY, 0x800) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":6271:6335 if and(absY, 0x800) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_767\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":6324:6331 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6316:6322 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":6312:6332 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6307:6310 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6303:6333 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6293:6333 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6271:6335 if and(absY, 0x800) { result := shr(128, mul(result, squared)) } */\n tag_767:\n /* \"src/libraries/math/Uint128x128Math.sol\":6385:6392 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6376:6383 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":6372:6393 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6367:6370 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6363:6394 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6352:6394 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6424:6430 0x1000 */\n 0x1000\n /* \"src/libraries/math/Uint128x128Math.sol\":6418:6422 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":6414:6431 and(absY, 0x1000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":6411:6476 if and(absY, 0x1000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_768\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":6465:6472 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6457:6463 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":6453:6473 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6448:6451 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6444:6474 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6434:6474 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6411:6476 if and(absY, 0x1000) { result := shr(128, mul(result, squared)) } */\n tag_768:\n /* \"src/libraries/math/Uint128x128Math.sol\":6526:6533 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6517:6524 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":6513:6534 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6508:6511 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6504:6535 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6493:6535 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6565:6571 0x2000 */\n 0x2000\n /* \"src/libraries/math/Uint128x128Math.sol\":6559:6563 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":6555:6572 and(absY, 0x2000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":6552:6617 if and(absY, 0x2000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_769\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":6606:6613 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6598:6604 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":6594:6614 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6589:6592 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6585:6615 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6575:6615 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6552:6617 if and(absY, 0x2000) { result := shr(128, mul(result, squared)) } */\n tag_769:\n /* \"src/libraries/math/Uint128x128Math.sol\":6667:6674 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6658:6665 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":6654:6675 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6649:6652 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6645:6676 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6634:6676 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6706:6712 0x4000 */\n 0x4000\n /* \"src/libraries/math/Uint128x128Math.sol\":6700:6704 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":6696:6713 and(absY, 0x4000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":6693:6758 if and(absY, 0x4000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_770\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":6747:6754 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6739:6745 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":6735:6755 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6730:6733 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6726:6756 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6716:6756 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6693:6758 if and(absY, 0x4000) { result := shr(128, mul(result, squared)) } */\n tag_770:\n /* \"src/libraries/math/Uint128x128Math.sol\":6808:6815 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6799:6806 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":6795:6816 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6790:6793 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6786:6817 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6775:6817 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6847:6853 0x8000 */\n 0x8000\n /* \"src/libraries/math/Uint128x128Math.sol\":6841:6845 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":6837:6854 and(absY, 0x8000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":6834:6899 if and(absY, 0x8000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_771\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":6888:6895 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6880:6886 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":6876:6896 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6871:6874 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6867:6897 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6857:6897 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6834:6899 if and(absY, 0x8000) { result := shr(128, mul(result, squared)) } */\n tag_771:\n /* \"src/libraries/math/Uint128x128Math.sol\":6949:6956 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":6940:6947 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":6936:6957 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":6931:6934 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":6927:6958 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6916:6958 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6988:6995 0x10000 */\n 0x010000\n /* \"src/libraries/math/Uint128x128Math.sol\":6982:6986 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":6978:6996 and(absY, 0x10000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":6975:7041 if and(absY, 0x10000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_772\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":7030:7037 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":7022:7028 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":7018:7038 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":7013:7016 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":7009:7039 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":6999:7039 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":6975:7041 if and(absY, 0x10000) { result := shr(128, mul(result, squared)) } */\n tag_772:\n /* \"src/libraries/math/Uint128x128Math.sol\":7091:7098 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":7082:7089 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":7078:7099 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":7073:7076 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":7069:7100 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":7058:7100 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":7130:7137 0x20000 */\n 0x020000\n /* \"src/libraries/math/Uint128x128Math.sol\":7124:7128 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":7120:7138 and(absY, 0x20000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":7117:7183 if and(absY, 0x20000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_773\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":7172:7179 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":7164:7170 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":7160:7180 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":7155:7158 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":7151:7181 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":7141:7181 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":7117:7183 if and(absY, 0x20000) { result := shr(128, mul(result, squared)) } */\n tag_773:\n /* \"src/libraries/math/Uint128x128Math.sol\":7233:7240 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":7224:7231 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":7220:7241 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":7215:7218 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":7211:7242 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":7200:7242 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":7272:7279 0x40000 */\n 0x040000\n /* \"src/libraries/math/Uint128x128Math.sol\":7266:7270 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":7262:7280 and(absY, 0x40000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":7259:7325 if and(absY, 0x40000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_774\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":7314:7321 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":7306:7312 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":7302:7322 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":7297:7300 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":7293:7323 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":7283:7323 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":7259:7325 if and(absY, 0x40000) { result := shr(128, mul(result, squared)) } */\n tag_774:\n /* \"src/libraries/math/Uint128x128Math.sol\":7375:7382 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":7366:7373 squared */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":7362:7383 mul(squared, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":7357:7360 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":7353:7384 shr(128, mul(squared, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":7342:7384 squared := shr(128, mul(squared, squared)) */\n swap1\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":7414:7421 0x80000 */\n 0x080000\n /* \"src/libraries/math/Uint128x128Math.sol\":7408:7412 absY */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":7404:7422 and(absY, 0x80000) */\n and\n /* \"src/libraries/math/Uint128x128Math.sol\":7401:7467 if and(absY, 0x80000) { result := shr(128, mul(result, squared)) } */\n iszero\n tag_775\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":7456:7463 squared */\n dup1\n /* \"src/libraries/math/Uint128x128Math.sol\":7448:7454 result */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":7444:7464 mul(result, squared) */\n mul\n /* \"src/libraries/math/Uint128x128Math.sol\":7439:7442 128 */\n 0x80\n /* \"src/libraries/math/Uint128x128Math.sol\":7435:7465 shr(128, mul(result, squared)) */\n shr\n /* \"src/libraries/math/Uint128x128Math.sol\":7425:7465 result := shr(128, mul(result, squared)) */\n swap4\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":7401:7467 if and(absY, 0x80000) { result := shr(128, mul(result, squared)) } */\n tag_775:\n /* \"src/libraries/math/Uint128x128Math.sol\":4513:7481 {... */\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4431:7491 if (absY < 0x100000) {... */\n tag_754:\n /* \"src/libraries/math/Uint128x128Math.sol\":7571:7572 0 */\n 0x00\n /* \"src/libraries/math/Uint128x128Math.sol\":7561:7567 result */\n dup4\n /* \"src/libraries/math/Uint128x128Math.sol\":7561:7572 result == 0 */\n sub\n /* \"src/libraries/math/Uint128x128Math.sol\":7557:7616 if (result == 0) revert Uint128x128Math__PowUnderflow(x, y) */\n tag_776\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":7611:7612 x */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":7614:7615 y */\n dup5\n /* \"src/libraries/math/Uint128x128Math.sol\":7581:7616 Uint128x128Math__PowUnderflow(x, y) */\n mload(0x40)\n 0x3b74b31a00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_777\n swap3\n swap2\n swap1\n tag_778\n jump\t// in\n tag_777:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"src/libraries/math/Uint128x128Math.sol\":7557:7616 if (result == 0) revert Uint128x128Math__PowUnderflow(x, y) */\n tag_776:\n /* \"src/libraries/math/Uint128x128Math.sol\":7634:7640 invert */\n dup2\n /* \"src/libraries/math/Uint128x128Math.sol\":7634:7678 invert ? type(uint256).max / result : result */\n tag_779\n jumpi\n /* \"src/libraries/math/Uint128x128Math.sol\":7672:7678 result */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":7634:7678 invert ? type(uint256).max / result : result */\n jump(tag_780)\n tag_779:\n /* \"src/libraries/math/Uint128x128Math.sol\":7663:7669 result */\n dup3\n /* \"src/libraries/math/Uint128x128Math.sol\":7643:7660 type(uint256).max */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"src/libraries/math/Uint128x128Math.sol\":7643:7669 type(uint256).max / result */\n tag_781\n swap2\n swap1\n tag_782\n jump\t// in\n tag_781:\n /* \"src/libraries/math/Uint128x128Math.sol\":7634:7678 invert ? type(uint256).max / result : result */\n tag_780:\n /* \"src/libraries/math/Uint128x128Math.sol\":7627:7678 return invert ? type(uint256).max / result : result */\n swap3\n pop\n pop\n pop\n /* \"src/libraries/math/Uint128x128Math.sol\":4085:7685 function pow(uint256 x, int256 y) internal pure returns (uint256 result) {... */\n tag_751:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":4539:4727 function decodeUint16(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {... */\n tag_644:\n /* \"src/libraries/math/Encoded.sol\":4617:4629 uint16 value */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":4699:4710 MASK_UINT16 */\n 0xffff\n /* \"src/libraries/math/Encoded.sol\":4689:4696 encoded */\n dup4\n /* \"src/libraries/math/Encoded.sol\":4681:4687 offset */\n dup4\n /* \"src/libraries/math/Encoded.sol\":4677:4697 shr(offset, encoded) */\n shr\n /* \"src/libraries/math/Encoded.sol\":4673:4711 and(shr(offset, encoded), MASK_UINT16) */\n and\n /* \"src/libraries/math/Encoded.sol\":4664:4711 value := and(shr(offset, encoded), MASK_UINT16) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":4539:4727 function decodeUint16(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":3596:3784 function decodeUint12(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {... */\n tag_647:\n /* \"src/libraries/math/Encoded.sol\":3674:3686 uint16 value */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":3756:3767 MASK_UINT12 */\n 0x0fff\n /* \"src/libraries/math/Encoded.sol\":3746:3753 encoded */\n dup4\n /* \"src/libraries/math/Encoded.sol\":3738:3744 offset */\n dup4\n /* \"src/libraries/math/Encoded.sol\":3734:3754 shr(offset, encoded) */\n shr\n /* \"src/libraries/math/Encoded.sol\":3730:3768 and(shr(offset, encoded), MASK_UINT12) */\n and\n /* \"src/libraries/math/Encoded.sol\":3721:3768 value := and(shr(offset, encoded), MASK_UINT12) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":3596:3784 function decodeUint12(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":4089:4277 function decodeUint14(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {... */\n tag_652:\n /* \"src/libraries/math/Encoded.sol\":4167:4179 uint16 value */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":4249:4260 MASK_UINT14 */\n 0x3fff\n /* \"src/libraries/math/Encoded.sol\":4239:4246 encoded */\n dup4\n /* \"src/libraries/math/Encoded.sol\":4231:4237 offset */\n dup4\n /* \"src/libraries/math/Encoded.sol\":4227:4247 shr(offset, encoded) */\n shr\n /* \"src/libraries/math/Encoded.sol\":4223:4261 and(shr(offset, encoded), MASK_UINT14) */\n and\n /* \"src/libraries/math/Encoded.sol\":4214:4261 value := and(shr(offset, encoded), MASK_UINT14) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":4089:4277 function decodeUint14(bytes32 encoded, uint256 offset) internal pure returns (uint16 value) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":5482:5670 function decodeUint24(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {... */\n tag_655:\n /* \"src/libraries/math/Encoded.sol\":5560:5572 uint24 value */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":5642:5653 MASK_UINT24 */\n 0xffffff\n /* \"src/libraries/math/Encoded.sol\":5632:5639 encoded */\n dup4\n /* \"src/libraries/math/Encoded.sol\":5624:5630 offset */\n dup4\n /* \"src/libraries/math/Encoded.sol\":5620:5640 shr(offset, encoded) */\n shr\n /* \"src/libraries/math/Encoded.sol\":5616:5654 and(shr(offset, encoded), MASK_UINT24) */\n and\n /* \"src/libraries/math/Encoded.sol\":5607:5654 value := and(shr(offset, encoded), MASK_UINT24) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":5482:5670 function decodeUint24(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/libraries/math/Encoded.sol\":5032:5220 function decodeUint20(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {... */\n tag_660:\n /* \"src/libraries/math/Encoded.sol\":5110:5122 uint24 value */\n 0x00\n /* \"src/libraries/math/Encoded.sol\":5192:5203 MASK_UINT20 */\n 0x0fffff\n /* \"src/libraries/math/Encoded.sol\":5182:5189 encoded */\n dup4\n /* \"src/libraries/math/Encoded.sol\":5174:5180 offset */\n dup4\n /* \"src/libraries/math/Encoded.sol\":5170:5190 shr(offset, encoded) */\n shr\n /* \"src/libraries/math/Encoded.sol\":5166:5204 and(shr(offset, encoded), MASK_UINT20) */\n and\n /* \"src/libraries/math/Encoded.sol\":5157:5204 value := and(shr(offset, encoded), MASK_UINT20) */\n swap1\n pop\n /* \"src/libraries/math/Encoded.sol\":5032:5220 function decodeUint20(bytes32 encoded, uint256 offset) internal pure returns (uint24 value) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4474:4581 function _length(Set storage set) private view returns (uint256) {... */\n tag_670:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4530:4537 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4556:4559 set */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4556:4567 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4556:4574 set._values.length */\n dup1\n sload\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4549:4574 return set._values.length */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4474:4581 function _length(Set storage set) private view returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3774:4022 function _transferOwnership(address newOwner) internal virtual {... */\n tag_678:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3847:3871 OwnableStorage storage $ */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3874:3894 _getOwnableStorage() */\n tag_790\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3874:3892 _getOwnableStorage */\n tag_459\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3874:3894 _getOwnableStorage() */\n jump\t// in\n tag_790:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3847:3894 OwnableStorage storage $ = _getOwnableStorage() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3904:3920 address oldOwner */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3923:3924 $ */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3923:3931 $._owner */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3904:3931 address oldOwner = $._owner */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3952:3960 newOwner */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3941:3942 $ */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3941:3949 $._owner */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3941:3960 $._owner = newOwner */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":4006:4014 newOwner */\n dup3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3975:4015 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3996:4004 oldOwner */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3975:4015 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3837:4022 {... */\n pop\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":3774:4022 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7084:7225 function _checkInitializing() internal view virtual {... */\n tag_687:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7151:7168 _isInitializing() */\n tag_792\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7151:7166 _isInitializing */\n tag_793\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7151:7168 _isInitializing() */\n jump\t// in\n tag_792:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7146:7219 if (!_isInitializing()) {... */\n tag_794\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7191:7208 NotInitializing() */\n mload(0x40)\n 0xd7e6bcf800000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7146:7219 if (!_isInitializing()) {... */\n tag_794:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":7084:7225 function _checkInitializing() internal view virtual {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1980:2215 function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {... */\n tag_690:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":6931:6951 _checkInitializing() */\n tag_796\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":6931:6949 _checkInitializing */\n tag_687\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":6931:6951 _checkInitializing() */\n jump\t// in\n tag_796:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2100:2101 0 */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2076:2102 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2076:2088 initialOwner */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2076:2102 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2072:2167 if (initialOwner == address(0)) {... */\n tag_798\n jumpi\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2153:2154 0 */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2125:2156 OwnableInvalidOwner(address(0)) */\n mload(0x40)\n 0x1e4fbdf700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_799\n swap2\n swap1\n tag_114\n jump\t// in\n tag_799:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2072:2167 if (initialOwner == address(0)) {... */\n tag_798:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2176:2208 _transferOwnership(initialOwner) */\n tag_800\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2195:2207 initialOwner */\n dup2\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2176:2194 _transferOwnership */\n tag_442\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":2176:2208 _transferOwnership(initialOwner) */\n jump\t// in\n tag_800:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":1980:2215 function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2815:4183 function _remove(Set storage set, bytes32 value) private returns (bool) {... */\n tag_699:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2881:2885 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2991:3007 uint256 position */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3010:3013 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3010:3024 set._positions */\n 0x01\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3010:3031 set._positions[value] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3025:3030 value */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3010:3031 set._positions[value] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2991:3031 uint256 position = set._positions[value] */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3058:3059 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3046:3054 position */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3046:3059 position != 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3042:4177 if (position != 0) {... */\n tag_802\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3413:3431 uint256 valueIndex */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3445:3446 1 */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3434:3442 position */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3434:3446 position - 1 */\n tag_803\n swap2\n swap1\n tag_403\n jump\t// in\n tag_803:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3413:3446 uint256 valueIndex = position - 1 */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3460:3477 uint256 lastIndex */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3501:3502 1 */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3480:3483 set */\n dup7\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3480:3491 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3480:3498 set._values.length */\n dup1\n sload\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3480:3502 set._values.length - 1 */\n tag_804\n swap2\n swap1\n tag_403\n jump\t// in\n tag_804:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3460:3502 uint256 lastIndex = set._values.length - 1 */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3535:3544 lastIndex */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3521:3531 valueIndex */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3521:3544 valueIndex != lastIndex */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3517:3895 if (valueIndex != lastIndex) {... */\n tag_805\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3564:3581 bytes32 lastValue */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3584:3587 set */\n dup7\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3584:3595 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3596:3605 lastIndex */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3584:3606 set._values[lastIndex] */\n dup2\n sload\n dup2\n lt\n tag_806\n jumpi\n tag_807\n tag_244\n jump\t// in\n tag_807:\n tag_806:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n sload\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3564:3606 bytes32 lastValue = set._values[lastIndex] */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3731:3740 lastValue */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3705:3708 set */\n dup8\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3705:3716 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3717:3727 valueIndex */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3705:3728 set._values[valueIndex] */\n dup2\n sload\n dup2\n lt\n tag_809\n jumpi\n tag_810\n tag_244\n jump\t// in\n tag_810:\n tag_809:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3705:3740 set._values[valueIndex] = lastValue */\n dup2\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3872:3880 position */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3844:3847 set */\n dup8\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3844:3858 set._positions */\n 0x01\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3844:3869 set._positions[lastValue] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3859:3868 lastValue */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3844:3869 set._positions[lastValue] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3844:3880 set._positions[lastValue] = position */\n dup2\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3546:3895 {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3517:3895 if (valueIndex != lastIndex) {... */\n tag_805:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3973:3976 set */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3973:3984 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3973:3990 set._values.pop() */\n dup1\n sload\n dup1\n tag_812\n jumpi\n tag_813\n tag_814\n jump\t// in\n tag_813:\n tag_812:\n 0x01\n swap1\n sub\n dup2\n dup2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n 0x00\n swap1\n sstore\n swap1\n sstore\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4076:4079 set */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4076:4090 set._positions */\n 0x01\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4076:4097 set._positions[value] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4091:4096 value */\n dup7\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4076:4097 set._positions[value] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4069:4097 delete set._positions[value] */\n 0x00\n swap1\n sstore\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4119:4123 true */\n 0x01\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4112:4123 return true */\n swap4\n pop\n pop\n pop\n pop\n jump(tag_801)\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":3042:4177 if (position != 0) {... */\n tag_802:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4161:4166 false */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":4154:4166 return false */\n swap2\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":2815:4183 function _remove(Set storage set, bytes32 value) private returns (bool) {... */\n tag_801:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3243:3407 function remove(Bytes32ToBytes32Map storage map, bytes32 key) internal returns (bool) {... */\n tag_702:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3323:3327 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3346:3349 map */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3346:3357 map._values */\n 0x02\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3346:3362 map._values[key] */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3358:3361 key */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3346:3362 map._values[key] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3339:3362 delete map._values[key] */\n 0x00\n swap1\n sstore\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3379:3400 map._keys.remove(key) */\n tag_818\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3396:3399 key */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3379:3382 map */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3379:3388 map._keys */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3379:3395 map._keys.remove */\n tag_819\n swap1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3379:3400 map._keys.remove(key) */\n swap2\n swap1\n 0xffffffff\n and\n jump\t// in\n tag_818:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3372:3400 return map._keys.remove(key) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":3243:3407 function remove(Bytes32ToBytes32Map storage map, bytes32 key) internal returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6650:6765 function length(Bytes32Set storage set) internal view returns (uint256) {... */\n tag_706:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6713:6720 uint256 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6739:6758 _length(set._inner) */\n tag_821\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6747:6750 set */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6747:6757 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6739:6746 _length */\n tag_670\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6739:6758 _length(set._inner) */\n jump\t// in\n tag_821:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6732:6758 return _length(set._inner) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6650:6765 function length(Bytes32Set storage set) internal view returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7107:7236 function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {... */\n tag_709:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7181:7188 bytes32 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7207:7229 _at(set._inner, index) */\n tag_823\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7211:7214 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7211:7221 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7223:7228 index */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7207:7210 _at */\n tag_552\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7207:7229 _at(set._inner, index) */\n jump\t// in\n tag_823:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7200:7229 return _at(set._inner, index) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7107:7236 function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5930:6053 function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {... */\n tag_729:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6000:6004 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6023:6046 _add(set._inner, value) */\n tag_825\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6028:6031 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6028:6038 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6040:6045 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6023:6027 _add */\n tag_629\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6023:6046 _add(set._inner, value) */\n jump\t// in\n tag_825:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6016:6046 return _add(set._inner, value) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5930:6053 function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6431:6569 function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {... */\n tag_732:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6511:6515 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6534:6562 _contains(set._inner, value) */\n tag_827\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6544:6547 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6544:6554 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6556:6561 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6534:6543 _contains */\n tag_565\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6534:6562 _contains(set._inner, value) */\n jump\t// in\n tag_827:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6527:6562 return _contains(set._inner, value) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6431:6569 function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7776:8076 function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {... */\n tag_745:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7839:7855 bytes32[] memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7867:7889 bytes32[] memory store */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7892:7911 _values(set._inner) */\n tag_829\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7900:7903 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7900:7910 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7892:7899 _values */\n tag_830\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7892:7911 _values(set._inner) */\n jump\t// in\n tag_829:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7867:7911 bytes32[] memory store = _values(set._inner) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7921:7944 bytes32[] memory result */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8031:8036 store */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8021:8036 result := store */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8063:8069 result */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":8056:8069 return result */\n swap3\n pop\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":7776:8076 function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8487:8607 function _isInitializing() internal view returns (bool) {... */\n tag_793:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8537:8541 bool */\n 0x00\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8560:8586 _getInitializableStorage() */\n tag_832\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8560:8584 _getInitializableStorage */\n tag_481\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8560:8586 _getInitializableStorage() */\n jump\t// in\n tag_832:\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8560:8600 _getInitializableStorage()._initializing */\n 0x00\n add\n 0x08\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8553:8600 return _getInitializableStorage()._initializing */\n swap1\n pop\n /* \"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":8487:8607 function _isInitializing() internal view returns (bool) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6221:6350 function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {... */\n tag_819:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6294:6298 bool */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6317:6343 _remove(set._inner, value) */\n tag_834\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6325:6328 set */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6325:6335 set._inner */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6337:6342 value */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6317:6324 _remove */\n tag_699\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6317:6343 _remove(set._inner, value) */\n jump\t// in\n tag_834:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6310:6343 return _remove(set._inner, value) */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":6221:6350 function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5581:5690 function _values(Set storage set) private view returns (bytes32[] memory) {... */\n tag_830:\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5637:5653 bytes32[] memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5672:5675 set */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5672:5683 set._values */\n 0x00\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5665:5683 return set._values */\n dup1\n sload\n dup1\n 0x20\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n dup1\n iszero\n tag_836\n jumpi\n 0x20\n mul\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_837:\n dup2\n sload\n dup2\n mstore\n 0x20\n add\n swap1\n 0x01\n add\n swap1\n dup1\n dup4\n gt\n tag_837\n jumpi\n tag_836:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":5581:5690 function _values(Set storage set) private view returns (bytes32[] memory) {... */\n swap2\n swap1\n pop\n jump\t// out\n tag_392:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n dup4\n codecopy\n add\n swap1\n jump\t// out\n tag_416:\n mload(0x40)\n dup1\n 0x80\n add\n 0x40\n mstore\n dup1\n and(0xffff, 0x00)\n dup2\n mstore\n 0x20\n add\n and(0xffffffffffffffffffffffffffffffffffffffff, 0x00)\n dup2\n mstore\n 0x20\n add\n iszero(iszero(0x00))\n dup2\n mstore\n 0x20\n add\n iszero(iszero(0x00))\n dup2\n mstore\n pop\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_839:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\n tag_840:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:483 */\n tag_841:\n /* \"#utility.yul\":370:377 */\n 0x00\n /* \"#utility.yul\":410:476 */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":403:408 */\n dup3\n /* \"#utility.yul\":399:477 */\n and\n /* \"#utility.yul\":388:477 */\n swap1\n pop\n /* \"#utility.yul\":334:483 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":489:609 */\n tag_842:\n /* \"#utility.yul\":561:584 */\n tag_939\n /* \"#utility.yul\":578:583 */\n dup2\n /* \"#utility.yul\":561:584 */\n tag_841\n jump\t// in\n tag_939:\n /* \"#utility.yul\":554:559 */\n dup2\n /* \"#utility.yul\":551:585 */\n eq\n /* \"#utility.yul\":541:603 */\n tag_940\n jumpi\n /* \"#utility.yul\":599:600 */\n 0x00\n /* \"#utility.yul\":596:597 */\n dup1\n /* \"#utility.yul\":589:601 */\n revert\n /* \"#utility.yul\":541:603 */\n tag_940:\n /* \"#utility.yul\":489:609 */\n pop\n jump\t// out\n /* \"#utility.yul\":615:752 */\n tag_843:\n /* \"#utility.yul\":660:665 */\n 0x00\n /* \"#utility.yul\":698:704 */\n dup2\n /* \"#utility.yul\":685:705 */\n calldataload\n /* \"#utility.yul\":676:705 */\n swap1\n pop\n /* \"#utility.yul\":714:746 */\n tag_942\n /* \"#utility.yul\":740:745 */\n dup2\n /* \"#utility.yul\":714:746 */\n tag_842\n jump\t// in\n tag_942:\n /* \"#utility.yul\":615:752 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":758:1085 */\n tag_56:\n /* \"#utility.yul\":816:822 */\n 0x00\n /* \"#utility.yul\":865:867 */\n 0x20\n /* \"#utility.yul\":853:862 */\n dup3\n /* \"#utility.yul\":844:851 */\n dup5\n /* \"#utility.yul\":840:863 */\n sub\n /* \"#utility.yul\":836:868 */\n slt\n /* \"#utility.yul\":833:952 */\n iszero\n tag_944\n jumpi\n /* \"#utility.yul\":871:950 */\n tag_945\n tag_839\n jump\t// in\n tag_945:\n /* \"#utility.yul\":833:952 */\n tag_944:\n /* \"#utility.yul\":991:992 */\n 0x00\n /* \"#utility.yul\":1016:1068 */\n tag_946\n /* \"#utility.yul\":1060:1067 */\n dup5\n /* \"#utility.yul\":1051:1057 */\n dup3\n /* \"#utility.yul\":1040:1049 */\n dup6\n /* \"#utility.yul\":1036:1058 */\n add\n /* \"#utility.yul\":1016:1068 */\n tag_843\n jump\t// in\n tag_946:\n /* \"#utility.yul\":1006:1068 */\n swap2\n pop\n /* \"#utility.yul\":962:1078 */\n pop\n /* \"#utility.yul\":758:1085 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1091:1181 */\n tag_844:\n /* \"#utility.yul\":1125:1132 */\n 0x00\n /* \"#utility.yul\":1168:1173 */\n dup2\n /* \"#utility.yul\":1161:1174 */\n iszero\n /* \"#utility.yul\":1154:1175 */\n iszero\n /* \"#utility.yul\":1143:1175 */\n swap1\n pop\n /* \"#utility.yul\":1091:1181 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1187:1296 */\n tag_845:\n /* \"#utility.yul\":1268:1289 */\n tag_949\n /* \"#utility.yul\":1283:1288 */\n dup2\n /* \"#utility.yul\":1268:1289 */\n tag_844\n jump\t// in\n tag_949:\n /* \"#utility.yul\":1263:1266 */\n dup3\n /* \"#utility.yul\":1256:1290 */\n mstore\n /* \"#utility.yul\":1187:1296 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1302:1512 */\n tag_59:\n /* \"#utility.yul\":1389:1393 */\n 0x00\n /* \"#utility.yul\":1427:1429 */\n 0x20\n /* \"#utility.yul\":1416:1425 */\n dup3\n /* \"#utility.yul\":1412:1430 */\n add\n /* \"#utility.yul\":1404:1430 */\n swap1\n pop\n /* \"#utility.yul\":1440:1505 */\n tag_951\n /* \"#utility.yul\":1502:1503 */\n 0x00\n /* \"#utility.yul\":1491:1500 */\n dup4\n /* \"#utility.yul\":1487:1504 */\n add\n /* \"#utility.yul\":1478:1484 */\n dup5\n /* \"#utility.yul\":1440:1505 */\n tag_845\n jump\t// in\n tag_951:\n /* \"#utility.yul\":1302:1512 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1518:1632 */\n tag_846:\n /* \"#utility.yul\":1585:1591 */\n 0x00\n /* \"#utility.yul\":1619:1624 */\n dup2\n /* \"#utility.yul\":1613:1625 */\n mload\n /* \"#utility.yul\":1603:1625 */\n swap1\n pop\n /* \"#utility.yul\":1518:1632 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1638:1822 */\n tag_847:\n /* \"#utility.yul\":1737:1748 */\n 0x00\n /* \"#utility.yul\":1771:1777 */\n dup3\n /* \"#utility.yul\":1766:1769 */\n dup3\n /* \"#utility.yul\":1759:1778 */\n mstore\n /* \"#utility.yul\":1811:1815 */\n 0x20\n /* \"#utility.yul\":1806:1809 */\n dup3\n /* \"#utility.yul\":1802:1816 */\n add\n /* \"#utility.yul\":1787:1816 */\n swap1\n pop\n /* \"#utility.yul\":1638:1822 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1828:1960 */\n tag_848:\n /* \"#utility.yul\":1895:1899 */\n 0x00\n /* \"#utility.yul\":1918:1921 */\n dup2\n /* \"#utility.yul\":1910:1921 */\n swap1\n pop\n /* \"#utility.yul\":1948:1952 */\n 0x20\n /* \"#utility.yul\":1943:1946 */\n dup3\n /* \"#utility.yul\":1939:1953 */\n add\n /* \"#utility.yul\":1931:1953 */\n swap1\n pop\n /* \"#utility.yul\":1828:1960 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1966:2043 */\n tag_849:\n /* \"#utility.yul\":2003:2010 */\n 0x00\n /* \"#utility.yul\":2032:2037 */\n dup2\n /* \"#utility.yul\":2021:2037 */\n swap1\n pop\n /* \"#utility.yul\":1966:2043 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2049:2157 */\n tag_850:\n /* \"#utility.yul\":2126:2150 */\n tag_957\n /* \"#utility.yul\":2144:2149 */\n dup2\n /* \"#utility.yul\":2126:2150 */\n tag_849\n jump\t// in\n tag_957:\n /* \"#utility.yul\":2121:2124 */\n dup3\n /* \"#utility.yul\":2114:2151 */\n mstore\n /* \"#utility.yul\":2049:2157 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2163:2342 */\n tag_851:\n /* \"#utility.yul\":2232:2242 */\n 0x00\n /* \"#utility.yul\":2253:2299 */\n tag_959\n /* \"#utility.yul\":2295:2298 */\n dup4\n /* \"#utility.yul\":2287:2293 */\n dup4\n /* \"#utility.yul\":2253:2299 */\n tag_850\n jump\t// in\n tag_959:\n /* \"#utility.yul\":2331:2335 */\n 0x20\n /* \"#utility.yul\":2326:2329 */\n dup4\n /* \"#utility.yul\":2322:2336 */\n add\n /* \"#utility.yul\":2308:2336 */\n swap1\n pop\n /* \"#utility.yul\":2163:2342 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2348:2461 */\n tag_852:\n /* \"#utility.yul\":2418:2422 */\n 0x00\n /* \"#utility.yul\":2450:2454 */\n 0x20\n /* \"#utility.yul\":2445:2448 */\n dup3\n /* \"#utility.yul\":2441:2455 */\n add\n /* \"#utility.yul\":2433:2455 */\n swap1\n pop\n /* \"#utility.yul\":2348:2461 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2497:3229 */\n tag_853:\n /* \"#utility.yul\":2616:2619 */\n 0x00\n /* \"#utility.yul\":2645:2699 */\n tag_962\n /* \"#utility.yul\":2693:2698 */\n dup3\n /* \"#utility.yul\":2645:2699 */\n tag_846\n jump\t// in\n tag_962:\n /* \"#utility.yul\":2715:2801 */\n tag_963\n /* \"#utility.yul\":2794:2800 */\n dup2\n /* \"#utility.yul\":2789:2792 */\n dup6\n /* \"#utility.yul\":2715:2801 */\n tag_847\n jump\t// in\n tag_963:\n /* \"#utility.yul\":2708:2801 */\n swap4\n pop\n /* \"#utility.yul\":2825:2881 */\n tag_964\n /* \"#utility.yul\":2875:2880 */\n dup4\n /* \"#utility.yul\":2825:2881 */\n tag_848\n jump\t// in\n tag_964:\n /* \"#utility.yul\":2904:2911 */\n dup1\n /* \"#utility.yul\":2935:2936 */\n 0x00\n /* \"#utility.yul\":2920:3204 */\n tag_965:\n /* \"#utility.yul\":2945:2951 */\n dup4\n /* \"#utility.yul\":2942:2943 */\n dup2\n /* \"#utility.yul\":2939:2952 */\n lt\n /* \"#utility.yul\":2920:3204 */\n iszero\n tag_967\n jumpi\n /* \"#utility.yul\":3021:3027 */\n dup2\n /* \"#utility.yul\":3015:3028 */\n mload\n /* \"#utility.yul\":3048:3111 */\n tag_968\n /* \"#utility.yul\":3107:3110 */\n dup9\n /* \"#utility.yul\":3092:3105 */\n dup3\n /* \"#utility.yul\":3048:3111 */\n tag_851\n jump\t// in\n tag_968:\n /* \"#utility.yul\":3041:3111 */\n swap8\n pop\n /* \"#utility.yul\":3134:3194 */\n tag_969\n /* \"#utility.yul\":3187:3193 */\n dup4\n /* \"#utility.yul\":3134:3194 */\n tag_852\n jump\t// in\n tag_969:\n /* \"#utility.yul\":3124:3194 */\n swap3\n pop\n /* \"#utility.yul\":2980:3204 */\n pop\n /* \"#utility.yul\":2967:2968 */\n 0x01\n /* \"#utility.yul\":2964:2965 */\n dup2\n /* \"#utility.yul\":2960:2969 */\n add\n /* \"#utility.yul\":2955:2969 */\n swap1\n pop\n /* \"#utility.yul\":2920:3204 */\n jump(tag_965)\n tag_967:\n /* \"#utility.yul\":2924:2938 */\n pop\n /* \"#utility.yul\":3220:3223 */\n dup6\n /* \"#utility.yul\":3213:3223 */\n swap4\n pop\n /* \"#utility.yul\":2621:3229 */\n pop\n pop\n pop\n /* \"#utility.yul\":2497:3229 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3235:3608 */\n tag_63:\n /* \"#utility.yul\":3378:3382 */\n 0x00\n /* \"#utility.yul\":3416:3418 */\n 0x20\n /* \"#utility.yul\":3405:3414 */\n dup3\n /* \"#utility.yul\":3401:3419 */\n add\n /* \"#utility.yul\":3393:3419 */\n swap1\n pop\n /* \"#utility.yul\":3465:3474 */\n dup2\n /* \"#utility.yul\":3459:3463 */\n dup2\n /* \"#utility.yul\":3455:3475 */\n sub\n /* \"#utility.yul\":3451:3452 */\n 0x00\n /* \"#utility.yul\":3440:3449 */\n dup4\n /* \"#utility.yul\":3436:3453 */\n add\n /* \"#utility.yul\":3429:3476 */\n mstore\n /* \"#utility.yul\":3493:3601 */\n tag_971\n /* \"#utility.yul\":3596:3600 */\n dup2\n /* \"#utility.yul\":3587:3593 */\n dup5\n /* \"#utility.yul\":3493:3601 */\n tag_853\n jump\t// in\n tag_971:\n /* \"#utility.yul\":3485:3601 */\n swap1\n pop\n /* \"#utility.yul\":3235:3608 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3614:3736 */\n tag_854:\n /* \"#utility.yul\":3687:3711 */\n tag_973\n /* \"#utility.yul\":3705:3710 */\n dup2\n /* \"#utility.yul\":3687:3711 */\n tag_849\n jump\t// in\n tag_973:\n /* \"#utility.yul\":3680:3685 */\n dup2\n /* \"#utility.yul\":3677:3712 */\n eq\n /* \"#utility.yul\":3667:3730 */\n tag_974\n jumpi\n /* \"#utility.yul\":3726:3727 */\n 0x00\n /* \"#utility.yul\":3723:3724 */\n dup1\n /* \"#utility.yul\":3716:3728 */\n revert\n /* \"#utility.yul\":3667:3730 */\n tag_974:\n /* \"#utility.yul\":3614:3736 */\n pop\n jump\t// out\n /* \"#utility.yul\":3742:3881 */\n tag_855:\n /* \"#utility.yul\":3788:3793 */\n 0x00\n /* \"#utility.yul\":3826:3832 */\n dup2\n /* \"#utility.yul\":3813:3833 */\n calldataload\n /* \"#utility.yul\":3804:3833 */\n swap1\n pop\n /* \"#utility.yul\":3842:3875 */\n tag_976\n /* \"#utility.yul\":3869:3874 */\n dup2\n /* \"#utility.yul\":3842:3875 */\n tag_854\n jump\t// in\n tag_976:\n /* \"#utility.yul\":3742:3881 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3887:4216 */\n tag_66:\n /* \"#utility.yul\":3946:3952 */\n 0x00\n /* \"#utility.yul\":3995:3997 */\n 0x20\n /* \"#utility.yul\":3983:3992 */\n dup3\n /* \"#utility.yul\":3974:3981 */\n dup5\n /* \"#utility.yul\":3970:3993 */\n sub\n /* \"#utility.yul\":3966:3998 */\n slt\n /* \"#utility.yul\":3963:4082 */\n iszero\n tag_978\n jumpi\n /* \"#utility.yul\":4001:4080 */\n tag_979\n tag_839\n jump\t// in\n tag_979:\n /* \"#utility.yul\":3963:4082 */\n tag_978:\n /* \"#utility.yul\":4121:4122 */\n 0x00\n /* \"#utility.yul\":4146:4199 */\n tag_980\n /* \"#utility.yul\":4191:4198 */\n dup5\n /* \"#utility.yul\":4182:4188 */\n dup3\n /* \"#utility.yul\":4171:4180 */\n dup6\n /* \"#utility.yul\":4167:4189 */\n add\n /* \"#utility.yul\":4146:4199 */\n tag_855\n jump\t// in\n tag_980:\n /* \"#utility.yul\":4136:4199 */\n swap2\n pop\n /* \"#utility.yul\":4092:4209 */\n pop\n /* \"#utility.yul\":3887:4216 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4222:4348 */\n tag_856:\n /* \"#utility.yul\":4259:4266 */\n 0x00\n /* \"#utility.yul\":4299:4341 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":4292:4297 */\n dup3\n /* \"#utility.yul\":4288:4342 */\n and\n /* \"#utility.yul\":4277:4342 */\n swap1\n pop\n /* \"#utility.yul\":4222:4348 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4354:4414 */\n tag_857:\n /* \"#utility.yul\":4382:4385 */\n 0x00\n /* \"#utility.yul\":4403:4408 */\n dup2\n /* \"#utility.yul\":4396:4408 */\n swap1\n pop\n /* \"#utility.yul\":4354:4414 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4420:4562 */\n tag_858:\n /* \"#utility.yul\":4470:4479 */\n 0x00\n /* \"#utility.yul\":4503:4556 */\n tag_984\n /* \"#utility.yul\":4521:4555 */\n tag_985\n /* \"#utility.yul\":4530:4554 */\n tag_986\n /* \"#utility.yul\":4548:4553 */\n dup5\n /* \"#utility.yul\":4530:4554 */\n tag_856\n jump\t// in\n tag_986:\n /* \"#utility.yul\":4521:4555 */\n tag_857\n jump\t// in\n tag_985:\n /* \"#utility.yul\":4503:4556 */\n tag_856\n jump\t// in\n tag_984:\n /* \"#utility.yul\":4490:4556 */\n swap1\n pop\n /* \"#utility.yul\":4420:4562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4568:4694 */\n tag_859:\n /* \"#utility.yul\":4618:4627 */\n 0x00\n /* \"#utility.yul\":4651:4688 */\n tag_988\n /* \"#utility.yul\":4682:4687 */\n dup3\n /* \"#utility.yul\":4651:4688 */\n tag_858\n jump\t// in\n tag_988:\n /* \"#utility.yul\":4638:4688 */\n swap1\n pop\n /* \"#utility.yul\":4568:4694 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4700:4841 */\n tag_860:\n /* \"#utility.yul\":4765:4774 */\n 0x00\n /* \"#utility.yul\":4798:4835 */\n tag_990\n /* \"#utility.yul\":4829:4834 */\n dup3\n /* \"#utility.yul\":4798:4835 */\n tag_859\n jump\t// in\n tag_990:\n /* \"#utility.yul\":4785:4835 */\n swap1\n pop\n /* \"#utility.yul\":4700:4841 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4847:5008 */\n tag_861:\n /* \"#utility.yul\":4949:5001 */\n tag_992\n /* \"#utility.yul\":4995:5000 */\n dup2\n /* \"#utility.yul\":4949:5001 */\n tag_860\n jump\t// in\n tag_992:\n /* \"#utility.yul\":4944:4947 */\n dup3\n /* \"#utility.yul\":4937:5002 */\n mstore\n /* \"#utility.yul\":4847:5008 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5014:5266 */\n tag_69:\n /* \"#utility.yul\":5122:5126 */\n 0x00\n /* \"#utility.yul\":5160:5162 */\n 0x20\n /* \"#utility.yul\":5149:5158 */\n dup3\n /* \"#utility.yul\":5145:5163 */\n add\n /* \"#utility.yul\":5137:5163 */\n swap1\n pop\n /* \"#utility.yul\":5173:5259 */\n tag_994\n /* \"#utility.yul\":5256:5257 */\n 0x00\n /* \"#utility.yul\":5245:5254 */\n dup4\n /* \"#utility.yul\":5241:5258 */\n add\n /* \"#utility.yul\":5232:5238 */\n dup5\n /* \"#utility.yul\":5173:5259 */\n tag_861\n jump\t// in\n tag_994:\n /* \"#utility.yul\":5014:5266 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5272:5368 */\n tag_862:\n /* \"#utility.yul\":5309:5316 */\n 0x00\n /* \"#utility.yul\":5338:5362 */\n tag_996\n /* \"#utility.yul\":5356:5361 */\n dup3\n /* \"#utility.yul\":5338:5362 */\n tag_856\n jump\t// in\n tag_996:\n /* \"#utility.yul\":5327:5362 */\n swap1\n pop\n /* \"#utility.yul\":5272:5368 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5374:5485 */\n tag_863:\n /* \"#utility.yul\":5426:5433 */\n 0x00\n /* \"#utility.yul\":5455:5479 */\n tag_998\n /* \"#utility.yul\":5473:5478 */\n dup3\n /* \"#utility.yul\":5455:5479 */\n tag_862\n jump\t// in\n tag_998:\n /* \"#utility.yul\":5444:5479 */\n swap1\n pop\n /* \"#utility.yul\":5374:5485 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5491:5643 */\n tag_864:\n /* \"#utility.yul\":5579:5618 */\n tag_1000\n /* \"#utility.yul\":5612:5617 */\n dup2\n /* \"#utility.yul\":5579:5618 */\n tag_863\n jump\t// in\n tag_1000:\n /* \"#utility.yul\":5572:5577 */\n dup2\n /* \"#utility.yul\":5569:5619 */\n eq\n /* \"#utility.yul\":5559:5637 */\n tag_1001\n jumpi\n /* \"#utility.yul\":5633:5634 */\n 0x00\n /* \"#utility.yul\":5630:5631 */\n dup1\n /* \"#utility.yul\":5623:5635 */\n revert\n /* \"#utility.yul\":5559:5637 */\n tag_1001:\n /* \"#utility.yul\":5491:5643 */\n pop\n jump\t// out\n /* \"#utility.yul\":5649:5818 */\n tag_865:\n /* \"#utility.yul\":5710:5715 */\n 0x00\n /* \"#utility.yul\":5748:5754 */\n dup2\n /* \"#utility.yul\":5735:5755 */\n calldataload\n /* \"#utility.yul\":5726:5755 */\n swap1\n pop\n /* \"#utility.yul\":5764:5812 */\n tag_1003\n /* \"#utility.yul\":5806:5811 */\n dup2\n /* \"#utility.yul\":5764:5812 */\n tag_864\n jump\t// in\n tag_1003:\n /* \"#utility.yul\":5649:5818 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5824:5913 */\n tag_866:\n /* \"#utility.yul\":5860:5867 */\n 0x00\n /* \"#utility.yul\":5900:5906 */\n 0xffff\n /* \"#utility.yul\":5893:5898 */\n dup3\n /* \"#utility.yul\":5889:5907 */\n and\n /* \"#utility.yul\":5878:5907 */\n swap1\n pop\n /* \"#utility.yul\":5824:5913 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5919:6039 */\n tag_867:\n /* \"#utility.yul\":5991:6014 */\n tag_1006\n /* \"#utility.yul\":6008:6013 */\n dup2\n /* \"#utility.yul\":5991:6014 */\n tag_866\n jump\t// in\n tag_1006:\n /* \"#utility.yul\":5984:5989 */\n dup2\n /* \"#utility.yul\":5981:6015 */\n eq\n /* \"#utility.yul\":5971:6033 */\n tag_1007\n jumpi\n /* \"#utility.yul\":6029:6030 */\n 0x00\n /* \"#utility.yul\":6026:6027 */\n dup1\n /* \"#utility.yul\":6019:6031 */\n revert\n /* \"#utility.yul\":5971:6033 */\n tag_1007:\n /* \"#utility.yul\":5919:6039 */\n pop\n jump\t// out\n /* \"#utility.yul\":6045:6182 */\n tag_868:\n /* \"#utility.yul\":6090:6095 */\n 0x00\n /* \"#utility.yul\":6128:6134 */\n dup2\n /* \"#utility.yul\":6115:6135 */\n calldataload\n /* \"#utility.yul\":6106:6135 */\n swap1\n pop\n /* \"#utility.yul\":6144:6176 */\n tag_1009\n /* \"#utility.yul\":6170:6175 */\n dup2\n /* \"#utility.yul\":6144:6176 */\n tag_867\n jump\t// in\n tag_1009:\n /* \"#utility.yul\":6045:6182 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6188:6279 */\n tag_869:\n /* \"#utility.yul\":6224:6231 */\n 0x00\n /* \"#utility.yul\":6264:6272 */\n 0xffffff\n /* \"#utility.yul\":6257:6262 */\n dup3\n /* \"#utility.yul\":6253:6273 */\n and\n /* \"#utility.yul\":6242:6273 */\n swap1\n pop\n /* \"#utility.yul\":6188:6279 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6285:6405 */\n tag_870:\n /* \"#utility.yul\":6357:6380 */\n tag_1012\n /* \"#utility.yul\":6374:6379 */\n dup2\n /* \"#utility.yul\":6357:6380 */\n tag_869\n jump\t// in\n tag_1012:\n /* \"#utility.yul\":6350:6355 */\n dup2\n /* \"#utility.yul\":6347:6381 */\n eq\n /* \"#utility.yul\":6337:6399 */\n tag_1013\n jumpi\n /* \"#utility.yul\":6395:6396 */\n 0x00\n /* \"#utility.yul\":6392:6393 */\n dup1\n /* \"#utility.yul\":6385:6397 */\n revert\n /* \"#utility.yul\":6337:6399 */\n tag_1013:\n /* \"#utility.yul\":6285:6405 */\n pop\n jump\t// out\n /* \"#utility.yul\":6411:6548 */\n tag_871:\n /* \"#utility.yul\":6456:6461 */\n 0x00\n /* \"#utility.yul\":6494:6500 */\n dup2\n /* \"#utility.yul\":6481:6501 */\n calldataload\n /* \"#utility.yul\":6472:6501 */\n swap1\n pop\n /* \"#utility.yul\":6510:6542 */\n tag_1015\n /* \"#utility.yul\":6536:6541 */\n dup2\n /* \"#utility.yul\":6510:6542 */\n tag_870\n jump\t// in\n tag_1015:\n /* \"#utility.yul\":6411:6548 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6554:8239 */\n tag_72:\n /* \"#utility.yul\":6716:6722 */\n 0x00\n /* \"#utility.yul\":6724:6730 */\n dup1\n /* \"#utility.yul\":6732:6738 */\n 0x00\n /* \"#utility.yul\":6740:6746 */\n dup1\n /* \"#utility.yul\":6748:6754 */\n 0x00\n /* \"#utility.yul\":6756:6762 */\n dup1\n /* \"#utility.yul\":6764:6770 */\n 0x00\n /* \"#utility.yul\":6772:6778 */\n dup1\n /* \"#utility.yul\":6780:6786 */\n 0x00\n /* \"#utility.yul\":6788:6794 */\n dup1\n /* \"#utility.yul\":6837:6840 */\n 0x0140\n /* \"#utility.yul\":6825:6834 */\n dup12\n /* \"#utility.yul\":6816:6823 */\n dup14\n /* \"#utility.yul\":6812:6835 */\n sub\n /* \"#utility.yul\":6808:6841 */\n slt\n /* \"#utility.yul\":6805:6925 */\n iszero\n tag_1017\n jumpi\n /* \"#utility.yul\":6844:6923 */\n tag_1018\n tag_839\n jump\t// in\n tag_1018:\n /* \"#utility.yul\":6805:6925 */\n tag_1017:\n /* \"#utility.yul\":6964:6965 */\n 0x00\n /* \"#utility.yul\":6989:7057 */\n tag_1019\n /* \"#utility.yul\":7049:7056 */\n dup14\n /* \"#utility.yul\":7040:7046 */\n dup3\n /* \"#utility.yul\":7029:7038 */\n dup15\n /* \"#utility.yul\":7025:7047 */\n add\n /* \"#utility.yul\":6989:7057 */\n tag_865\n jump\t// in\n tag_1019:\n /* \"#utility.yul\":6979:7057 */\n swap11\n pop\n /* \"#utility.yul\":6935:7067 */\n pop\n /* \"#utility.yul\":7106:7108 */\n 0x20\n /* \"#utility.yul\":7132:7200 */\n tag_1020\n /* \"#utility.yul\":7192:7199 */\n dup14\n /* \"#utility.yul\":7183:7189 */\n dup3\n /* \"#utility.yul\":7172:7181 */\n dup15\n /* \"#utility.yul\":7168:7190 */\n add\n /* \"#utility.yul\":7132:7200 */\n tag_865\n jump\t// in\n tag_1020:\n /* \"#utility.yul\":7122:7200 */\n swap10\n pop\n /* \"#utility.yul\":7077:7210 */\n pop\n /* \"#utility.yul\":7249:7251 */\n 0x40\n /* \"#utility.yul\":7275:7327 */\n tag_1021\n /* \"#utility.yul\":7319:7326 */\n dup14\n /* \"#utility.yul\":7310:7316 */\n dup3\n /* \"#utility.yul\":7299:7308 */\n dup15\n /* \"#utility.yul\":7295:7317 */\n add\n /* \"#utility.yul\":7275:7327 */\n tag_868\n jump\t// in\n tag_1021:\n /* \"#utility.yul\":7265:7327 */\n swap9\n pop\n /* \"#utility.yul\":7220:7337 */\n pop\n /* \"#utility.yul\":7376:7378 */\n 0x60\n /* \"#utility.yul\":7402:7454 */\n tag_1022\n /* \"#utility.yul\":7446:7453 */\n dup14\n /* \"#utility.yul\":7437:7443 */\n dup3\n /* \"#utility.yul\":7426:7435 */\n dup15\n /* \"#utility.yul\":7422:7444 */\n add\n /* \"#utility.yul\":7402:7454 */\n tag_868\n jump\t// in\n tag_1022:\n /* \"#utility.yul\":7392:7454 */\n swap8\n pop\n /* \"#utility.yul\":7347:7464 */\n pop\n /* \"#utility.yul\":7503:7506 */\n 0x80\n /* \"#utility.yul\":7530:7582 */\n tag_1023\n /* \"#utility.yul\":7574:7581 */\n dup14\n /* \"#utility.yul\":7565:7571 */\n dup3\n /* \"#utility.yul\":7554:7563 */\n dup15\n /* \"#utility.yul\":7550:7572 */\n add\n /* \"#utility.yul\":7530:7582 */\n tag_868\n jump\t// in\n tag_1023:\n /* \"#utility.yul\":7520:7582 */\n swap7\n pop\n /* \"#utility.yul\":7474:7592 */\n pop\n /* \"#utility.yul\":7631:7634 */\n 0xa0\n /* \"#utility.yul\":7658:7710 */\n tag_1024\n /* \"#utility.yul\":7702:7709 */\n dup14\n /* \"#utility.yul\":7693:7699 */\n dup3\n /* \"#utility.yul\":7682:7691 */\n dup15\n /* \"#utility.yul\":7678:7700 */\n add\n /* \"#utility.yul\":7658:7710 */\n tag_868\n jump\t// in\n tag_1024:\n /* \"#utility.yul\":7648:7710 */\n swap6\n pop\n /* \"#utility.yul\":7602:7720 */\n pop\n /* \"#utility.yul\":7759:7762 */\n 0xc0\n /* \"#utility.yul\":7786:7838 */\n tag_1025\n /* \"#utility.yul\":7830:7837 */\n dup14\n /* \"#utility.yul\":7821:7827 */\n dup3\n /* \"#utility.yul\":7810:7819 */\n dup15\n /* \"#utility.yul\":7806:7828 */\n add\n /* \"#utility.yul\":7786:7838 */\n tag_868\n jump\t// in\n tag_1025:\n /* \"#utility.yul\":7776:7838 */\n swap5\n pop\n /* \"#utility.yul\":7730:7848 */\n pop\n /* \"#utility.yul\":7887:7890 */\n 0xe0\n /* \"#utility.yul\":7914:7966 */\n tag_1026\n /* \"#utility.yul\":7958:7965 */\n dup14\n /* \"#utility.yul\":7949:7955 */\n dup3\n /* \"#utility.yul\":7938:7947 */\n dup15\n /* \"#utility.yul\":7934:7956 */\n add\n /* \"#utility.yul\":7914:7966 */\n tag_871\n jump\t// in\n tag_1026:\n /* \"#utility.yul\":7904:7966 */\n swap4\n pop\n /* \"#utility.yul\":7858:7976 */\n pop\n /* \"#utility.yul\":8015:8018 */\n 0x0100\n /* \"#utility.yul\":8042:8094 */\n tag_1027\n /* \"#utility.yul\":8086:8093 */\n dup14\n /* \"#utility.yul\":8077:8083 */\n dup3\n /* \"#utility.yul\":8066:8075 */\n dup15\n /* \"#utility.yul\":8062:8084 */\n add\n /* \"#utility.yul\":8042:8094 */\n tag_868\n jump\t// in\n tag_1027:\n /* \"#utility.yul\":8032:8094 */\n swap3\n pop\n /* \"#utility.yul\":7986:8104 */\n pop\n /* \"#utility.yul\":8143:8146 */\n 0x0120\n /* \"#utility.yul\":8170:8222 */\n tag_1028\n /* \"#utility.yul\":8214:8221 */\n dup14\n /* \"#utility.yul\":8205:8211 */\n dup3\n /* \"#utility.yul\":8194:8203 */\n dup15\n /* \"#utility.yul\":8190:8212 */\n add\n /* \"#utility.yul\":8170:8222 */\n tag_871\n jump\t// in\n tag_1028:\n /* \"#utility.yul\":8160:8222 */\n swap2\n pop\n /* \"#utility.yul\":8114:8232 */\n pop\n /* \"#utility.yul\":6554:8239 */\n swap3\n swap6\n swap9\n swap12\n swap2\n swap5\n swap8\n swap11\n pop\n swap3\n swap6\n swap9\n pop\n jump\t// out\n /* \"#utility.yul\":8245:8322 */\n tag_872:\n /* \"#utility.yul\":8282:8289 */\n 0x00\n /* \"#utility.yul\":8311:8316 */\n dup2\n /* \"#utility.yul\":8300:8316 */\n swap1\n pop\n /* \"#utility.yul\":8245:8322 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8328:8446 */\n tag_873:\n /* \"#utility.yul\":8415:8439 */\n tag_1031\n /* \"#utility.yul\":8433:8438 */\n dup2\n /* \"#utility.yul\":8415:8439 */\n tag_872\n jump\t// in\n tag_1031:\n /* \"#utility.yul\":8410:8413 */\n dup3\n /* \"#utility.yul\":8403:8440 */\n mstore\n /* \"#utility.yul\":8328:8446 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8452:8674 */\n tag_77:\n /* \"#utility.yul\":8545:8549 */\n 0x00\n /* \"#utility.yul\":8583:8585 */\n 0x20\n /* \"#utility.yul\":8572:8581 */\n dup3\n /* \"#utility.yul\":8568:8586 */\n add\n /* \"#utility.yul\":8560:8586 */\n swap1\n pop\n /* \"#utility.yul\":8596:8667 */\n tag_1033\n /* \"#utility.yul\":8664:8665 */\n 0x00\n /* \"#utility.yul\":8653:8662 */\n dup4\n /* \"#utility.yul\":8649:8666 */\n add\n /* \"#utility.yul\":8640:8646 */\n dup5\n /* \"#utility.yul\":8596:8667 */\n tag_873\n jump\t// in\n tag_1033:\n /* \"#utility.yul\":8452:8674 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8680:8802 */\n tag_874:\n /* \"#utility.yul\":8753:8777 */\n tag_1035\n /* \"#utility.yul\":8771:8776 */\n dup2\n /* \"#utility.yul\":8753:8777 */\n tag_872\n jump\t// in\n tag_1035:\n /* \"#utility.yul\":8746:8751 */\n dup2\n /* \"#utility.yul\":8743:8778 */\n eq\n /* \"#utility.yul\":8733:8796 */\n tag_1036\n jumpi\n /* \"#utility.yul\":8792:8793 */\n 0x00\n /* \"#utility.yul\":8789:8790 */\n dup1\n /* \"#utility.yul\":8782:8794 */\n revert\n /* \"#utility.yul\":8733:8796 */\n tag_1036:\n /* \"#utility.yul\":8680:8802 */\n pop\n jump\t// out\n /* \"#utility.yul\":8808:8947 */\n tag_875:\n /* \"#utility.yul\":8854:8859 */\n 0x00\n /* \"#utility.yul\":8892:8898 */\n dup2\n /* \"#utility.yul\":8879:8899 */\n calldataload\n /* \"#utility.yul\":8870:8899 */\n swap1\n pop\n /* \"#utility.yul\":8908:8941 */\n tag_1038\n /* \"#utility.yul\":8935:8940 */\n dup2\n /* \"#utility.yul\":8908:8941 */\n tag_874\n jump\t// in\n tag_1038:\n /* \"#utility.yul\":8808:8947 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8953:9282 */\n tag_80:\n /* \"#utility.yul\":9012:9018 */\n 0x00\n /* \"#utility.yul\":9061:9063 */\n 0x20\n /* \"#utility.yul\":9049:9058 */\n dup3\n /* \"#utility.yul\":9040:9047 */\n dup5\n /* \"#utility.yul\":9036:9059 */\n sub\n /* \"#utility.yul\":9032:9064 */\n slt\n /* \"#utility.yul\":9029:9148 */\n iszero\n tag_1040\n jumpi\n /* \"#utility.yul\":9067:9146 */\n tag_1041\n tag_839\n jump\t// in\n tag_1041:\n /* \"#utility.yul\":9029:9148 */\n tag_1040:\n /* \"#utility.yul\":9187:9188 */\n 0x00\n /* \"#utility.yul\":9212:9265 */\n tag_1042\n /* \"#utility.yul\":9257:9264 */\n dup5\n /* \"#utility.yul\":9248:9254 */\n dup3\n /* \"#utility.yul\":9237:9246 */\n dup6\n /* \"#utility.yul\":9233:9255 */\n add\n /* \"#utility.yul\":9212:9265 */\n tag_875\n jump\t// in\n tag_1042:\n /* \"#utility.yul\":9202:9265 */\n swap2\n pop\n /* \"#utility.yul\":9158:9275 */\n pop\n /* \"#utility.yul\":8953:9282 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9288:9647 */\n tag_85:\n /* \"#utility.yul\":9362:9368 */\n 0x00\n /* \"#utility.yul\":9411:9413 */\n 0x20\n /* \"#utility.yul\":9399:9408 */\n dup3\n /* \"#utility.yul\":9390:9397 */\n dup5\n /* \"#utility.yul\":9386:9409 */\n sub\n /* \"#utility.yul\":9382:9414 */\n slt\n /* \"#utility.yul\":9379:9498 */\n iszero\n tag_1044\n jumpi\n /* \"#utility.yul\":9417:9496 */\n tag_1045\n tag_839\n jump\t// in\n tag_1045:\n /* \"#utility.yul\":9379:9498 */\n tag_1044:\n /* \"#utility.yul\":9537:9538 */\n 0x00\n /* \"#utility.yul\":9562:9630 */\n tag_1046\n /* \"#utility.yul\":9622:9629 */\n dup5\n /* \"#utility.yul\":9613:9619 */\n dup3\n /* \"#utility.yul\":9602:9611 */\n dup6\n /* \"#utility.yul\":9598:9620 */\n add\n /* \"#utility.yul\":9562:9630 */\n tag_865\n jump\t// in\n tag_1046:\n /* \"#utility.yul\":9552:9630 */\n swap2\n pop\n /* \"#utility.yul\":9508:9640 */\n pop\n /* \"#utility.yul\":9288:9647 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9653:10330 */\n tag_90:\n /* \"#utility.yul\":9759:9765 */\n 0x00\n /* \"#utility.yul\":9767:9773 */\n dup1\n /* \"#utility.yul\":9775:9781 */\n 0x00\n /* \"#utility.yul\":9824:9826 */\n 0x60\n /* \"#utility.yul\":9812:9821 */\n dup5\n /* \"#utility.yul\":9803:9810 */\n dup7\n /* \"#utility.yul\":9799:9822 */\n sub\n /* \"#utility.yul\":9795:9827 */\n slt\n /* \"#utility.yul\":9792:9911 */\n iszero\n tag_1048\n jumpi\n /* \"#utility.yul\":9830:9909 */\n tag_1049\n tag_839\n jump\t// in\n tag_1049:\n /* \"#utility.yul\":9792:9911 */\n tag_1048:\n /* \"#utility.yul\":9950:9951 */\n 0x00\n /* \"#utility.yul\":9975:10043 */\n tag_1050\n /* \"#utility.yul\":10035:10042 */\n dup7\n /* \"#utility.yul\":10026:10032 */\n dup3\n /* \"#utility.yul\":10015:10024 */\n dup8\n /* \"#utility.yul\":10011:10033 */\n add\n /* \"#utility.yul\":9975:10043 */\n tag_865\n jump\t// in\n tag_1050:\n /* \"#utility.yul\":9965:10043 */\n swap4\n pop\n /* \"#utility.yul\":9921:10053 */\n pop\n /* \"#utility.yul\":10092:10094 */\n 0x20\n /* \"#utility.yul\":10118:10186 */\n tag_1051\n /* \"#utility.yul\":10178:10185 */\n dup7\n /* \"#utility.yul\":10169:10175 */\n dup3\n /* \"#utility.yul\":10158:10167 */\n dup8\n /* \"#utility.yul\":10154:10176 */\n add\n /* \"#utility.yul\":10118:10186 */\n tag_865\n jump\t// in\n tag_1051:\n /* \"#utility.yul\":10108:10186 */\n swap3\n pop\n /* \"#utility.yul\":10063:10196 */\n pop\n /* \"#utility.yul\":10235:10237 */\n 0x40\n /* \"#utility.yul\":10261:10313 */\n tag_1052\n /* \"#utility.yul\":10305:10312 */\n dup7\n /* \"#utility.yul\":10296:10302 */\n dup3\n /* \"#utility.yul\":10285:10294 */\n dup8\n /* \"#utility.yul\":10281:10303 */\n add\n /* \"#utility.yul\":10261:10313 */\n tag_868\n jump\t// in\n tag_1052:\n /* \"#utility.yul\":10251:10313 */\n swap2\n pop\n /* \"#utility.yul\":10206:10323 */\n pop\n /* \"#utility.yul\":9653:10330 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":10336:10458 */\n tag_876:\n /* \"#utility.yul\":10409:10433 */\n tag_1054\n /* \"#utility.yul\":10427:10432 */\n dup2\n /* \"#utility.yul\":10409:10433 */\n tag_862\n jump\t// in\n tag_1054:\n /* \"#utility.yul\":10402:10407 */\n dup2\n /* \"#utility.yul\":10399:10434 */\n eq\n /* \"#utility.yul\":10389:10452 */\n tag_1055\n jumpi\n /* \"#utility.yul\":10448:10449 */\n 0x00\n /* \"#utility.yul\":10445:10446 */\n dup1\n /* \"#utility.yul\":10438:10450 */\n revert\n /* \"#utility.yul\":10389:10452 */\n tag_1055:\n /* \"#utility.yul\":10336:10458 */\n pop\n jump\t// out\n /* \"#utility.yul\":10464:10603 */\n tag_877:\n /* \"#utility.yul\":10510:10515 */\n 0x00\n /* \"#utility.yul\":10548:10554 */\n dup2\n /* \"#utility.yul\":10535:10555 */\n calldataload\n /* \"#utility.yul\":10526:10555 */\n swap1\n pop\n /* \"#utility.yul\":10564:10597 */\n tag_1057\n /* \"#utility.yul\":10591:10596 */\n dup2\n /* \"#utility.yul\":10564:10597 */\n tag_876\n jump\t// in\n tag_1057:\n /* \"#utility.yul\":10464:10603 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10609:11083 */\n tag_94:\n /* \"#utility.yul\":10677:10683 */\n 0x00\n /* \"#utility.yul\":10685:10691 */\n dup1\n /* \"#utility.yul\":10734:10736 */\n 0x40\n /* \"#utility.yul\":10722:10731 */\n dup4\n /* \"#utility.yul\":10713:10720 */\n dup6\n /* \"#utility.yul\":10709:10732 */\n sub\n /* \"#utility.yul\":10705:10737 */\n slt\n /* \"#utility.yul\":10702:10821 */\n iszero\n tag_1059\n jumpi\n /* \"#utility.yul\":10740:10819 */\n tag_1060\n tag_839\n jump\t// in\n tag_1060:\n /* \"#utility.yul\":10702:10821 */\n tag_1059:\n /* \"#utility.yul\":10860:10861 */\n 0x00\n /* \"#utility.yul\":10885:10938 */\n tag_1061\n /* \"#utility.yul\":10930:10937 */\n dup6\n /* \"#utility.yul\":10921:10927 */\n dup3\n /* \"#utility.yul\":10910:10919 */\n dup7\n /* \"#utility.yul\":10906:10928 */\n add\n /* \"#utility.yul\":10885:10938 */\n tag_875\n jump\t// in\n tag_1061:\n /* \"#utility.yul\":10875:10938 */\n swap3\n pop\n /* \"#utility.yul\":10831:10948 */\n pop\n /* \"#utility.yul\":10987:10989 */\n 0x20\n /* \"#utility.yul\":11013:11066 */\n tag_1062\n /* \"#utility.yul\":11058:11065 */\n dup6\n /* \"#utility.yul\":11049:11055 */\n dup3\n /* \"#utility.yul\":11038:11047 */\n dup7\n /* \"#utility.yul\":11034:11056 */\n add\n /* \"#utility.yul\":11013:11066 */\n tag_877\n jump\t// in\n tag_1062:\n /* \"#utility.yul\":11003:11066 */\n swap2\n pop\n /* \"#utility.yul\":10958:11076 */\n pop\n /* \"#utility.yul\":10609:11083 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":11089:11205 */\n tag_878:\n /* \"#utility.yul\":11159:11180 */\n tag_1064\n /* \"#utility.yul\":11174:11179 */\n dup2\n /* \"#utility.yul\":11159:11180 */\n tag_844\n jump\t// in\n tag_1064:\n /* \"#utility.yul\":11152:11157 */\n dup2\n /* \"#utility.yul\":11149:11181 */\n eq\n /* \"#utility.yul\":11139:11199 */\n tag_1065\n jumpi\n /* \"#utility.yul\":11195:11196 */\n 0x00\n /* \"#utility.yul\":11192:11193 */\n dup1\n /* \"#utility.yul\":11185:11197 */\n revert\n /* \"#utility.yul\":11139:11199 */\n tag_1065:\n /* \"#utility.yul\":11089:11205 */\n pop\n jump\t// out\n /* \"#utility.yul\":11211:11344 */\n tag_879:\n /* \"#utility.yul\":11254:11259 */\n 0x00\n /* \"#utility.yul\":11292:11298 */\n dup2\n /* \"#utility.yul\":11279:11299 */\n calldataload\n /* \"#utility.yul\":11270:11299 */\n swap1\n pop\n /* \"#utility.yul\":11308:11338 */\n tag_1067\n /* \"#utility.yul\":11332:11337 */\n dup2\n /* \"#utility.yul\":11308:11338 */\n tag_878\n jump\t// in\n tag_1067:\n /* \"#utility.yul\":11211:11344 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11350:12823 */\n tag_101:\n /* \"#utility.yul\":11470:11476 */\n 0x00\n /* \"#utility.yul\":11478:11484 */\n dup1\n /* \"#utility.yul\":11486:11492 */\n 0x00\n /* \"#utility.yul\":11494:11500 */\n dup1\n /* \"#utility.yul\":11502:11508 */\n 0x00\n /* \"#utility.yul\":11510:11516 */\n dup1\n /* \"#utility.yul\":11518:11524 */\n 0x00\n /* \"#utility.yul\":11526:11532 */\n dup1\n /* \"#utility.yul\":11534:11540 */\n 0x00\n /* \"#utility.yul\":11583:11586 */\n 0x0120\n /* \"#utility.yul\":11571:11580 */\n dup11\n /* \"#utility.yul\":11562:11569 */\n dup13\n /* \"#utility.yul\":11558:11581 */\n sub\n /* \"#utility.yul\":11554:11587 */\n slt\n /* \"#utility.yul\":11551:11671 */\n iszero\n tag_1069\n jumpi\n /* \"#utility.yul\":11590:11669 */\n tag_1070\n tag_839\n jump\t// in\n tag_1070:\n /* \"#utility.yul\":11551:11671 */\n tag_1069:\n /* \"#utility.yul\":11710:11711 */\n 0x00\n /* \"#utility.yul\":11735:11787 */\n tag_1071\n /* \"#utility.yul\":11779:11786 */\n dup13\n /* \"#utility.yul\":11770:11776 */\n dup3\n /* \"#utility.yul\":11759:11768 */\n dup14\n /* \"#utility.yul\":11755:11777 */\n add\n /* \"#utility.yul\":11735:11787 */\n tag_868\n jump\t// in\n tag_1071:\n /* \"#utility.yul\":11725:11787 */\n swap10\n pop\n /* \"#utility.yul\":11681:11797 */\n pop\n /* \"#utility.yul\":11836:11838 */\n 0x20\n /* \"#utility.yul\":11862:11914 */\n tag_1072\n /* \"#utility.yul\":11906:11913 */\n dup13\n /* \"#utility.yul\":11897:11903 */\n dup3\n /* \"#utility.yul\":11886:11895 */\n dup14\n /* \"#utility.yul\":11882:11904 */\n add\n /* \"#utility.yul\":11862:11914 */\n tag_868\n jump\t// in\n tag_1072:\n /* \"#utility.yul\":11852:11914 */\n swap9\n pop\n /* \"#utility.yul\":11807:11924 */\n pop\n /* \"#utility.yul\":11963:11965 */\n 0x40\n /* \"#utility.yul\":11989:12041 */\n tag_1073\n /* \"#utility.yul\":12033:12040 */\n dup13\n /* \"#utility.yul\":12024:12030 */\n dup3\n /* \"#utility.yul\":12013:12022 */\n dup14\n /* \"#utility.yul\":12009:12031 */\n add\n /* \"#utility.yul\":11989:12041 */\n tag_868\n jump\t// in\n tag_1073:\n /* \"#utility.yul\":11979:12041 */\n swap8\n pop\n /* \"#utility.yul\":11934:12051 */\n pop\n /* \"#utility.yul\":12090:12092 */\n 0x60\n /* \"#utility.yul\":12116:12168 */\n tag_1074\n /* \"#utility.yul\":12160:12167 */\n dup13\n /* \"#utility.yul\":12151:12157 */\n dup3\n /* \"#utility.yul\":12140:12149 */\n dup14\n /* \"#utility.yul\":12136:12158 */\n add\n /* \"#utility.yul\":12116:12168 */\n tag_868\n jump\t// in\n tag_1074:\n /* \"#utility.yul\":12106:12168 */\n swap7\n pop\n /* \"#utility.yul\":12061:12178 */\n pop\n /* \"#utility.yul\":12217:12220 */\n 0x80\n /* \"#utility.yul\":12244:12296 */\n tag_1075\n /* \"#utility.yul\":12288:12295 */\n dup13\n /* \"#utility.yul\":12279:12285 */\n dup3\n /* \"#utility.yul\":12268:12277 */\n dup14\n /* \"#utility.yul\":12264:12286 */\n add\n /* \"#utility.yul\":12244:12296 */\n tag_868\n jump\t// in\n tag_1075:\n /* \"#utility.yul\":12234:12296 */\n swap6\n pop\n /* \"#utility.yul\":12188:12306 */\n pop\n /* \"#utility.yul\":12345:12348 */\n 0xa0\n /* \"#utility.yul\":12372:12424 */\n tag_1076\n /* \"#utility.yul\":12416:12423 */\n dup13\n /* \"#utility.yul\":12407:12413 */\n dup3\n /* \"#utility.yul\":12396:12405 */\n dup14\n /* \"#utility.yul\":12392:12414 */\n add\n /* \"#utility.yul\":12372:12424 */\n tag_871\n jump\t// in\n tag_1076:\n /* \"#utility.yul\":12362:12424 */\n swap5\n pop\n /* \"#utility.yul\":12316:12434 */\n pop\n /* \"#utility.yul\":12473:12476 */\n 0xc0\n /* \"#utility.yul\":12500:12552 */\n tag_1077\n /* \"#utility.yul\":12544:12551 */\n dup13\n /* \"#utility.yul\":12535:12541 */\n dup3\n /* \"#utility.yul\":12524:12533 */\n dup14\n /* \"#utility.yul\":12520:12542 */\n add\n /* \"#utility.yul\":12500:12552 */\n tag_868\n jump\t// in\n tag_1077:\n /* \"#utility.yul\":12490:12552 */\n swap4\n pop\n /* \"#utility.yul\":12444:12562 */\n pop\n /* \"#utility.yul\":12601:12604 */\n 0xe0\n /* \"#utility.yul\":12628:12680 */\n tag_1078\n /* \"#utility.yul\":12672:12679 */\n dup13\n /* \"#utility.yul\":12663:12669 */\n dup3\n /* \"#utility.yul\":12652:12661 */\n dup14\n /* \"#utility.yul\":12648:12670 */\n add\n /* \"#utility.yul\":12628:12680 */\n tag_871\n jump\t// in\n tag_1078:\n /* \"#utility.yul\":12618:12680 */\n swap3\n pop\n /* \"#utility.yul\":12572:12690 */\n pop\n /* \"#utility.yul\":12729:12732 */\n 0x0100\n /* \"#utility.yul\":12756:12806 */\n tag_1079\n /* \"#utility.yul\":12798:12805 */\n dup13\n /* \"#utility.yul\":12789:12795 */\n dup3\n /* \"#utility.yul\":12778:12787 */\n dup14\n /* \"#utility.yul\":12774:12796 */\n add\n /* \"#utility.yul\":12756:12806 */\n tag_879\n jump\t// in\n tag_1079:\n /* \"#utility.yul\":12746:12806 */\n swap2\n pop\n /* \"#utility.yul\":12700:12816 */\n pop\n /* \"#utility.yul\":11350:12823 */\n swap3\n swap6\n swap9\n pop\n swap3\n swap6\n swap9\n pop\n swap3\n swap6\n swap9\n jump\t// out\n /* \"#utility.yul\":12829:12946 */\n tag_880:\n /* \"#utility.yul\":12938:12939 */\n 0x00\n /* \"#utility.yul\":12935:12936 */\n dup1\n /* \"#utility.yul\":12928:12940 */\n revert\n /* \"#utility.yul\":12952:13069 */\n tag_881:\n /* \"#utility.yul\":13061:13062 */\n 0x00\n /* \"#utility.yul\":13058:13059 */\n dup1\n /* \"#utility.yul\":13051:13063 */\n revert\n /* \"#utility.yul\":13075:13192 */\n tag_882:\n /* \"#utility.yul\":13184:13185 */\n 0x00\n /* \"#utility.yul\":13181:13182 */\n dup1\n /* \"#utility.yul\":13174:13186 */\n revert\n /* \"#utility.yul\":13211:13763 */\n tag_883:\n /* \"#utility.yul\":13268:13276 */\n 0x00\n /* \"#utility.yul\":13278:13284 */\n dup1\n /* \"#utility.yul\":13328:13331 */\n dup4\n /* \"#utility.yul\":13321:13325 */\n 0x1f\n /* \"#utility.yul\":13313:13319 */\n dup5\n /* \"#utility.yul\":13309:13326 */\n add\n /* \"#utility.yul\":13305:13332 */\n slt\n /* \"#utility.yul\":13295:13417 */\n tag_1084\n jumpi\n /* \"#utility.yul\":13336:13415 */\n tag_1085\n tag_880\n jump\t// in\n tag_1085:\n /* \"#utility.yul\":13295:13417 */\n tag_1084:\n /* \"#utility.yul\":13449:13455 */\n dup3\n /* \"#utility.yul\":13436:13456 */\n calldataload\n /* \"#utility.yul\":13426:13456 */\n swap1\n pop\n /* \"#utility.yul\":13479:13497 */\n 0xffffffffffffffff\n /* \"#utility.yul\":13471:13477 */\n dup2\n /* \"#utility.yul\":13468:13498 */\n gt\n /* \"#utility.yul\":13465:13582 */\n iszero\n tag_1086\n jumpi\n /* \"#utility.yul\":13501:13580 */\n tag_1087\n tag_881\n jump\t// in\n tag_1087:\n /* \"#utility.yul\":13465:13582 */\n tag_1086:\n /* \"#utility.yul\":13615:13619 */\n 0x20\n /* \"#utility.yul\":13607:13613 */\n dup4\n /* \"#utility.yul\":13603:13620 */\n add\n /* \"#utility.yul\":13591:13620 */\n swap2\n pop\n /* \"#utility.yul\":13669:13672 */\n dup4\n /* \"#utility.yul\":13661:13665 */\n 0x01\n /* \"#utility.yul\":13653:13659 */\n dup3\n /* \"#utility.yul\":13649:13666 */\n mul\n /* \"#utility.yul\":13639:13647 */\n dup4\n /* \"#utility.yul\":13635:13667 */\n add\n /* \"#utility.yul\":13632:13673 */\n gt\n /* \"#utility.yul\":13629:13757 */\n iszero\n tag_1088\n jumpi\n /* \"#utility.yul\":13676:13755 */\n tag_1089\n tag_882\n jump\t// in\n tag_1089:\n /* \"#utility.yul\":13629:13757 */\n tag_1088:\n /* \"#utility.yul\":13211:13763 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13769:14936 */\n tag_105:\n /* \"#utility.yul\":13904:13910 */\n 0x00\n /* \"#utility.yul\":13912:13918 */\n dup1\n /* \"#utility.yul\":13920:13926 */\n 0x00\n /* \"#utility.yul\":13928:13934 */\n dup1\n /* \"#utility.yul\":13936:13942 */\n 0x00\n /* \"#utility.yul\":13944:13950 */\n dup1\n /* \"#utility.yul\":13993:13996 */\n 0xa0\n /* \"#utility.yul\":13981:13990 */\n dup8\n /* \"#utility.yul\":13972:13979 */\n dup10\n /* \"#utility.yul\":13968:13991 */\n sub\n /* \"#utility.yul\":13964:13997 */\n slt\n /* \"#utility.yul\":13961:14081 */\n iszero\n tag_1091\n jumpi\n /* \"#utility.yul\":14000:14079 */\n tag_1092\n tag_839\n jump\t// in\n tag_1092:\n /* \"#utility.yul\":13961:14081 */\n tag_1091:\n /* \"#utility.yul\":14120:14121 */\n 0x00\n /* \"#utility.yul\":14145:14213 */\n tag_1093\n /* \"#utility.yul\":14205:14212 */\n dup10\n /* \"#utility.yul\":14196:14202 */\n dup3\n /* \"#utility.yul\":14185:14194 */\n dup11\n /* \"#utility.yul\":14181:14203 */\n add\n /* \"#utility.yul\":14145:14213 */\n tag_865\n jump\t// in\n tag_1093:\n /* \"#utility.yul\":14135:14213 */\n swap7\n pop\n /* \"#utility.yul\":14091:14223 */\n pop\n /* \"#utility.yul\":14262:14264 */\n 0x20\n /* \"#utility.yul\":14288:14356 */\n tag_1094\n /* \"#utility.yul\":14348:14355 */\n dup10\n /* \"#utility.yul\":14339:14345 */\n dup3\n /* \"#utility.yul\":14328:14337 */\n dup11\n /* \"#utility.yul\":14324:14346 */\n add\n /* \"#utility.yul\":14288:14356 */\n tag_865\n jump\t// in\n tag_1094:\n /* \"#utility.yul\":14278:14356 */\n swap6\n pop\n /* \"#utility.yul\":14233:14366 */\n pop\n /* \"#utility.yul\":14405:14407 */\n 0x40\n /* \"#utility.yul\":14431:14483 */\n tag_1095\n /* \"#utility.yul\":14475:14482 */\n dup10\n /* \"#utility.yul\":14466:14472 */\n dup3\n /* \"#utility.yul\":14455:14464 */\n dup11\n /* \"#utility.yul\":14451:14473 */\n add\n /* \"#utility.yul\":14431:14483 */\n tag_868\n jump\t// in\n tag_1095:\n /* \"#utility.yul\":14421:14483 */\n swap5\n pop\n /* \"#utility.yul\":14376:14493 */\n pop\n /* \"#utility.yul\":14532:14534 */\n 0x60\n /* \"#utility.yul\":14558:14611 */\n tag_1096\n /* \"#utility.yul\":14603:14610 */\n dup10\n /* \"#utility.yul\":14594:14600 */\n dup3\n /* \"#utility.yul\":14583:14592 */\n dup11\n /* \"#utility.yul\":14579:14601 */\n add\n /* \"#utility.yul\":14558:14611 */\n tag_875\n jump\t// in\n tag_1096:\n /* \"#utility.yul\":14548:14611 */\n swap4\n pop\n /* \"#utility.yul\":14503:14621 */\n pop\n /* \"#utility.yul\":14688:14691 */\n 0x80\n /* \"#utility.yul\":14677:14686 */\n dup8\n /* \"#utility.yul\":14673:14692 */\n add\n /* \"#utility.yul\":14660:14693 */\n calldataload\n /* \"#utility.yul\":14720:14738 */\n 0xffffffffffffffff\n /* \"#utility.yul\":14712:14718 */\n dup2\n /* \"#utility.yul\":14709:14739 */\n gt\n /* \"#utility.yul\":14706:14823 */\n iszero\n tag_1097\n jumpi\n /* \"#utility.yul\":14742:14821 */\n tag_1098\n tag_840\n jump\t// in\n tag_1098:\n /* \"#utility.yul\":14706:14823 */\n tag_1097:\n /* \"#utility.yul\":14855:14919 */\n tag_1099\n /* \"#utility.yul\":14911:14918 */\n dup10\n /* \"#utility.yul\":14902:14908 */\n dup3\n /* \"#utility.yul\":14891:14900 */\n dup11\n /* \"#utility.yul\":14887:14909 */\n add\n /* \"#utility.yul\":14855:14919 */\n tag_883\n jump\t// in\n tag_1099:\n /* \"#utility.yul\":14837:14919 */\n swap3\n pop\n swap3\n pop\n /* \"#utility.yul\":14631:14929 */\n pop\n /* \"#utility.yul\":13769:14936 */\n swap3\n swap6\n pop\n swap3\n swap6\n pop\n swap3\n swap6\n jump\t// out\n /* \"#utility.yul\":14942:15054 */\n tag_884:\n /* \"#utility.yul\":14995:15002 */\n 0x00\n /* \"#utility.yul\":15024:15048 */\n tag_1101\n /* \"#utility.yul\":15042:15047 */\n dup3\n /* \"#utility.yul\":15024:15048 */\n tag_862\n jump\t// in\n tag_1101:\n /* \"#utility.yul\":15013:15048 */\n swap1\n pop\n /* \"#utility.yul\":14942:15054 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":15060:15214 */\n tag_885:\n /* \"#utility.yul\":15149:15189 */\n tag_1103\n /* \"#utility.yul\":15183:15188 */\n dup2\n /* \"#utility.yul\":15149:15189 */\n tag_884\n jump\t// in\n tag_1103:\n /* \"#utility.yul\":15142:15147 */\n dup2\n /* \"#utility.yul\":15139:15190 */\n eq\n /* \"#utility.yul\":15129:15208 */\n tag_1104\n jumpi\n /* \"#utility.yul\":15204:15205 */\n 0x00\n /* \"#utility.yul\":15201:15202 */\n dup1\n /* \"#utility.yul\":15194:15206 */\n revert\n /* \"#utility.yul\":15129:15208 */\n tag_1104:\n /* \"#utility.yul\":15060:15214 */\n pop\n jump\t// out\n /* \"#utility.yul\":15220:15391 */\n tag_886:\n /* \"#utility.yul\":15282:15287 */\n 0x00\n /* \"#utility.yul\":15320:15326 */\n dup2\n /* \"#utility.yul\":15307:15327 */\n calldataload\n /* \"#utility.yul\":15298:15327 */\n swap1\n pop\n /* \"#utility.yul\":15336:15385 */\n tag_1106\n /* \"#utility.yul\":15379:15384 */\n dup2\n /* \"#utility.yul\":15336:15385 */\n tag_885\n jump\t// in\n tag_1106:\n /* \"#utility.yul\":15220:15391 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15397:15758 */\n tag_109:\n /* \"#utility.yul\":15472:15478 */\n 0x00\n /* \"#utility.yul\":15521:15523 */\n 0x20\n /* \"#utility.yul\":15509:15518 */\n dup3\n /* \"#utility.yul\":15500:15507 */\n dup5\n /* \"#utility.yul\":15496:15519 */\n sub\n /* \"#utility.yul\":15492:15524 */\n slt\n /* \"#utility.yul\":15489:15608 */\n iszero\n tag_1108\n jumpi\n /* \"#utility.yul\":15527:15606 */\n tag_1109\n tag_839\n jump\t// in\n tag_1109:\n /* \"#utility.yul\":15489:15608 */\n tag_1108:\n /* \"#utility.yul\":15647:15648 */\n 0x00\n /* \"#utility.yul\":15672:15741 */\n tag_1110\n /* \"#utility.yul\":15733:15740 */\n dup5\n /* \"#utility.yul\":15724:15730 */\n dup3\n /* \"#utility.yul\":15713:15722 */\n dup6\n /* \"#utility.yul\":15709:15731 */\n add\n /* \"#utility.yul\":15672:15741 */\n tag_886\n jump\t// in\n tag_1110:\n /* \"#utility.yul\":15662:15741 */\n swap2\n pop\n /* \"#utility.yul\":15618:15751 */\n pop\n /* \"#utility.yul\":15397:15758 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15764:15882 */\n tag_887:\n /* \"#utility.yul\":15851:15875 */\n tag_1112\n /* \"#utility.yul\":15869:15874 */\n dup2\n /* \"#utility.yul\":15851:15875 */\n tag_862\n jump\t// in\n tag_1112:\n /* \"#utility.yul\":15846:15849 */\n dup3\n /* \"#utility.yul\":15839:15876 */\n mstore\n /* \"#utility.yul\":15764:15882 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15888:16110 */\n tag_114:\n /* \"#utility.yul\":15981:15985 */\n 0x00\n /* \"#utility.yul\":16019:16021 */\n 0x20\n /* \"#utility.yul\":16008:16017 */\n dup3\n /* \"#utility.yul\":16004:16022 */\n add\n /* \"#utility.yul\":15996:16022 */\n swap1\n pop\n /* \"#utility.yul\":16032:16103 */\n tag_1114\n /* \"#utility.yul\":16100:16101 */\n 0x00\n /* \"#utility.yul\":16089:16098 */\n dup4\n /* \"#utility.yul\":16085:16102 */\n add\n /* \"#utility.yul\":16076:16082 */\n dup5\n /* \"#utility.yul\":16032:16103 */\n tag_887\n jump\t// in\n tag_1114:\n /* \"#utility.yul\":15888:16110 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16116:16582 */\n tag_117:\n /* \"#utility.yul\":16180:16186 */\n 0x00\n /* \"#utility.yul\":16188:16194 */\n dup1\n /* \"#utility.yul\":16237:16239 */\n 0x40\n /* \"#utility.yul\":16225:16234 */\n dup4\n /* \"#utility.yul\":16216:16223 */\n dup6\n /* \"#utility.yul\":16212:16235 */\n sub\n /* \"#utility.yul\":16208:16240 */\n slt\n /* \"#utility.yul\":16205:16324 */\n iszero\n tag_1116\n jumpi\n /* \"#utility.yul\":16243:16322 */\n tag_1117\n tag_839\n jump\t// in\n tag_1117:\n /* \"#utility.yul\":16205:16324 */\n tag_1116:\n /* \"#utility.yul\":16363:16364 */\n 0x00\n /* \"#utility.yul\":16388:16440 */\n tag_1118\n /* \"#utility.yul\":16432:16439 */\n dup6\n /* \"#utility.yul\":16423:16429 */\n dup3\n /* \"#utility.yul\":16412:16421 */\n dup7\n /* \"#utility.yul\":16408:16430 */\n add\n /* \"#utility.yul\":16388:16440 */\n tag_868\n jump\t// in\n tag_1118:\n /* \"#utility.yul\":16378:16440 */\n swap3\n pop\n /* \"#utility.yul\":16334:16450 */\n pop\n /* \"#utility.yul\":16489:16491 */\n 0x20\n /* \"#utility.yul\":16515:16565 */\n tag_1119\n /* \"#utility.yul\":16557:16564 */\n dup6\n /* \"#utility.yul\":16548:16554 */\n dup3\n /* \"#utility.yul\":16537:16546 */\n dup7\n /* \"#utility.yul\":16533:16555 */\n add\n /* \"#utility.yul\":16515:16565 */\n tag_879\n jump\t// in\n tag_1119:\n /* \"#utility.yul\":16505:16565 */\n swap2\n pop\n /* \"#utility.yul\":16460:16575 */\n pop\n /* \"#utility.yul\":16116:16582 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":16588:16706 */\n tag_888:\n /* \"#utility.yul\":16675:16699 */\n tag_1121\n /* \"#utility.yul\":16693:16698 */\n dup2\n /* \"#utility.yul\":16675:16699 */\n tag_849\n jump\t// in\n tag_1121:\n /* \"#utility.yul\":16670:16673 */\n dup3\n /* \"#utility.yul\":16663:16700 */\n mstore\n /* \"#utility.yul\":16588:16706 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16712:16934 */\n tag_122:\n /* \"#utility.yul\":16805:16809 */\n 0x00\n /* \"#utility.yul\":16843:16845 */\n 0x20\n /* \"#utility.yul\":16832:16841 */\n dup3\n /* \"#utility.yul\":16828:16846 */\n add\n /* \"#utility.yul\":16820:16846 */\n swap1\n pop\n /* \"#utility.yul\":16856:16927 */\n tag_1123\n /* \"#utility.yul\":16924:16925 */\n 0x00\n /* \"#utility.yul\":16913:16922 */\n dup4\n /* \"#utility.yul\":16909:16926 */\n add\n /* \"#utility.yul\":16900:16906 */\n dup5\n /* \"#utility.yul\":16856:16927 */\n tag_888\n jump\t// in\n tag_1123:\n /* \"#utility.yul\":16712:16934 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16940:17761 */\n tag_131:\n /* \"#utility.yul\":17054:17060 */\n 0x00\n /* \"#utility.yul\":17062:17068 */\n dup1\n /* \"#utility.yul\":17070:17076 */\n 0x00\n /* \"#utility.yul\":17078:17084 */\n dup1\n /* \"#utility.yul\":17127:17130 */\n 0x80\n /* \"#utility.yul\":17115:17124 */\n dup6\n /* \"#utility.yul\":17106:17113 */\n dup8\n /* \"#utility.yul\":17102:17125 */\n sub\n /* \"#utility.yul\":17098:17131 */\n slt\n /* \"#utility.yul\":17095:17215 */\n iszero\n tag_1125\n jumpi\n /* \"#utility.yul\":17134:17213 */\n tag_1126\n tag_839\n jump\t// in\n tag_1126:\n /* \"#utility.yul\":17095:17215 */\n tag_1125:\n /* \"#utility.yul\":17254:17255 */\n 0x00\n /* \"#utility.yul\":17279:17347 */\n tag_1127\n /* \"#utility.yul\":17339:17346 */\n dup8\n /* \"#utility.yul\":17330:17336 */\n dup3\n /* \"#utility.yul\":17319:17328 */\n dup9\n /* \"#utility.yul\":17315:17337 */\n add\n /* \"#utility.yul\":17279:17347 */\n tag_865\n jump\t// in\n tag_1127:\n /* \"#utility.yul\":17269:17347 */\n swap5\n pop\n /* \"#utility.yul\":17225:17357 */\n pop\n /* \"#utility.yul\":17396:17398 */\n 0x20\n /* \"#utility.yul\":17422:17490 */\n tag_1128\n /* \"#utility.yul\":17482:17489 */\n dup8\n /* \"#utility.yul\":17473:17479 */\n dup3\n /* \"#utility.yul\":17462:17471 */\n dup9\n /* \"#utility.yul\":17458:17480 */\n add\n /* \"#utility.yul\":17422:17490 */\n tag_865\n jump\t// in\n tag_1128:\n /* \"#utility.yul\":17412:17490 */\n swap4\n pop\n /* \"#utility.yul\":17367:17500 */\n pop\n /* \"#utility.yul\":17539:17541 */\n 0x40\n /* \"#utility.yul\":17565:17617 */\n tag_1129\n /* \"#utility.yul\":17609:17616 */\n dup8\n /* \"#utility.yul\":17600:17606 */\n dup3\n /* \"#utility.yul\":17589:17598 */\n dup9\n /* \"#utility.yul\":17585:17607 */\n add\n /* \"#utility.yul\":17565:17617 */\n tag_871\n jump\t// in\n tag_1129:\n /* \"#utility.yul\":17555:17617 */\n swap3\n pop\n /* \"#utility.yul\":17510:17627 */\n pop\n /* \"#utility.yul\":17666:17668 */\n 0x60\n /* \"#utility.yul\":17692:17744 */\n tag_1130\n /* \"#utility.yul\":17736:17743 */\n dup8\n /* \"#utility.yul\":17727:17733 */\n dup3\n /* \"#utility.yul\":17716:17725 */\n dup9\n /* \"#utility.yul\":17712:17734 */\n add\n /* \"#utility.yul\":17692:17744 */\n tag_868\n jump\t// in\n tag_1130:\n /* \"#utility.yul\":17682:17744 */\n swap2\n pop\n /* \"#utility.yul\":17637:17754 */\n pop\n /* \"#utility.yul\":16940:17761 */\n swap3\n swap6\n swap2\n swap5\n pop\n swap3\n pop\n jump\t// out\n /* \"#utility.yul\":17767:17909 */\n tag_889:\n /* \"#utility.yul\":17833:17842 */\n 0x00\n /* \"#utility.yul\":17866:17903 */\n tag_1132\n /* \"#utility.yul\":17897:17902 */\n dup3\n /* \"#utility.yul\":17866:17903 */\n tag_859\n jump\t// in\n tag_1132:\n /* \"#utility.yul\":17853:17903 */\n swap1\n pop\n /* \"#utility.yul\":17767:17909 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":17915:18078 */\n tag_890:\n /* \"#utility.yul\":18018:18071 */\n tag_1134\n /* \"#utility.yul\":18065:18070 */\n dup2\n /* \"#utility.yul\":18018:18071 */\n tag_889\n jump\t// in\n tag_1134:\n /* \"#utility.yul\":18013:18016 */\n dup3\n /* \"#utility.yul\":18006:18072 */\n mstore\n /* \"#utility.yul\":17915:18078 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18084:18338 */\n tag_134:\n /* \"#utility.yul\":18193:18197 */\n 0x00\n /* \"#utility.yul\":18231:18233 */\n 0x20\n /* \"#utility.yul\":18220:18229 */\n dup3\n /* \"#utility.yul\":18216:18234 */\n add\n /* \"#utility.yul\":18208:18234 */\n swap1\n pop\n /* \"#utility.yul\":18244:18331 */\n tag_1136\n /* \"#utility.yul\":18328:18329 */\n 0x00\n /* \"#utility.yul\":18317:18326 */\n dup4\n /* \"#utility.yul\":18313:18330 */\n add\n /* \"#utility.yul\":18304:18310 */\n dup5\n /* \"#utility.yul\":18244:18331 */\n tag_890\n jump\t// in\n tag_1136:\n /* \"#utility.yul\":18084:18338 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18344:18878 */\n tag_140:\n /* \"#utility.yul\":18442:18448 */\n 0x00\n /* \"#utility.yul\":18450:18456 */\n dup1\n /* \"#utility.yul\":18499:18501 */\n 0x40\n /* \"#utility.yul\":18487:18496 */\n dup4\n /* \"#utility.yul\":18478:18485 */\n dup6\n /* \"#utility.yul\":18474:18497 */\n sub\n /* \"#utility.yul\":18470:18502 */\n slt\n /* \"#utility.yul\":18467:18586 */\n iszero\n tag_1138\n jumpi\n /* \"#utility.yul\":18505:18584 */\n tag_1139\n tag_839\n jump\t// in\n tag_1139:\n /* \"#utility.yul\":18467:18586 */\n tag_1138:\n /* \"#utility.yul\":18625:18626 */\n 0x00\n /* \"#utility.yul\":18650:18718 */\n tag_1140\n /* \"#utility.yul\":18710:18717 */\n dup6\n /* \"#utility.yul\":18701:18707 */\n dup3\n /* \"#utility.yul\":18690:18699 */\n dup7\n /* \"#utility.yul\":18686:18708 */\n add\n /* \"#utility.yul\":18650:18718 */\n tag_865\n jump\t// in\n tag_1140:\n /* \"#utility.yul\":18640:18718 */\n swap3\n pop\n /* \"#utility.yul\":18596:18728 */\n pop\n /* \"#utility.yul\":18767:18769 */\n 0x20\n /* \"#utility.yul\":18793:18861 */\n tag_1141\n /* \"#utility.yul\":18853:18860 */\n dup6\n /* \"#utility.yul\":18844:18850 */\n dup3\n /* \"#utility.yul\":18833:18842 */\n dup7\n /* \"#utility.yul\":18829:18851 */\n add\n /* \"#utility.yul\":18793:18861 */\n tag_865\n jump\t// in\n tag_1141:\n /* \"#utility.yul\":18783:18861 */\n swap2\n pop\n /* \"#utility.yul\":18738:18871 */\n pop\n /* \"#utility.yul\":18344:18878 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":18884:19033 */\n tag_891:\n /* \"#utility.yul\":18986:18992 */\n 0x00\n /* \"#utility.yul\":19020:19025 */\n dup2\n /* \"#utility.yul\":19014:19026 */\n mload\n /* \"#utility.yul\":19004:19026 */\n swap1\n pop\n /* \"#utility.yul\":18884:19033 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":19039:19258 */\n tag_892:\n /* \"#utility.yul\":19173:19184 */\n 0x00\n /* \"#utility.yul\":19207:19213 */\n dup3\n /* \"#utility.yul\":19202:19205 */\n dup3\n /* \"#utility.yul\":19195:19214 */\n mstore\n /* \"#utility.yul\":19247:19251 */\n 0x20\n /* \"#utility.yul\":19242:19245 */\n dup3\n /* \"#utility.yul\":19238:19252 */\n add\n /* \"#utility.yul\":19223:19252 */\n swap1\n pop\n /* \"#utility.yul\":19039:19258 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19264:19431 */\n tag_893:\n /* \"#utility.yul\":19366:19370 */\n 0x00\n /* \"#utility.yul\":19389:19392 */\n dup2\n /* \"#utility.yul\":19381:19392 */\n swap1\n pop\n /* \"#utility.yul\":19419:19423 */\n 0x20\n /* \"#utility.yul\":19414:19417 */\n dup3\n /* \"#utility.yul\":19410:19424 */\n add\n /* \"#utility.yul\":19402:19424 */\n swap1\n pop\n /* \"#utility.yul\":19264:19431 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":19437:19542 */\n tag_894:\n /* \"#utility.yul\":19512:19535 */\n tag_1146\n /* \"#utility.yul\":19529:19534 */\n dup2\n /* \"#utility.yul\":19512:19535 */\n tag_866\n jump\t// in\n tag_1146:\n /* \"#utility.yul\":19507:19510 */\n dup3\n /* \"#utility.yul\":19500:19536 */\n mstore\n /* \"#utility.yul\":19437:19542 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19548:19701 */\n tag_895:\n /* \"#utility.yul\":19641:19694 */\n tag_1148\n /* \"#utility.yul\":19688:19693 */\n dup2\n /* \"#utility.yul\":19641:19694 */\n tag_889\n jump\t// in\n tag_1148:\n /* \"#utility.yul\":19636:19639 */\n dup3\n /* \"#utility.yul\":19629:19695 */\n mstore\n /* \"#utility.yul\":19548:19701 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19707:19806 */\n tag_896:\n /* \"#utility.yul\":19778:19799 */\n tag_1150\n /* \"#utility.yul\":19793:19798 */\n dup2\n /* \"#utility.yul\":19778:19799 */\n tag_844\n jump\t// in\n tag_1150:\n /* \"#utility.yul\":19773:19776 */\n dup3\n /* \"#utility.yul\":19766:19800 */\n mstore\n /* \"#utility.yul\":19707:19806 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19894:20789 */\n tag_897:\n /* \"#utility.yul\":20051:20055 */\n 0x80\n /* \"#utility.yul\":20046:20049 */\n dup3\n /* \"#utility.yul\":20042:20056 */\n add\n /* \"#utility.yul\":20141:20145 */\n 0x00\n /* \"#utility.yul\":20134:20139 */\n dup3\n /* \"#utility.yul\":20130:20146 */\n add\n /* \"#utility.yul\":20124:20147 */\n mload\n /* \"#utility.yul\":20160:20221 */\n tag_1152\n /* \"#utility.yul\":20215:20219 */\n 0x00\n /* \"#utility.yul\":20210:20213 */\n dup6\n /* \"#utility.yul\":20206:20220 */\n add\n /* \"#utility.yul\":20192:20204 */\n dup3\n /* \"#utility.yul\":20160:20221 */\n tag_894\n jump\t// in\n tag_1152:\n /* \"#utility.yul\":20066:20231 */\n pop\n /* \"#utility.yul\":20315:20319 */\n 0x20\n /* \"#utility.yul\":20308:20313 */\n dup3\n /* \"#utility.yul\":20304:20320 */\n add\n /* \"#utility.yul\":20298:20321 */\n mload\n /* \"#utility.yul\":20334:20413 */\n tag_1153\n /* \"#utility.yul\":20407:20411 */\n 0x20\n /* \"#utility.yul\":20402:20405 */\n dup6\n /* \"#utility.yul\":20398:20412 */\n add\n /* \"#utility.yul\":20384:20396 */\n dup3\n /* \"#utility.yul\":20334:20413 */\n tag_895\n jump\t// in\n tag_1153:\n /* \"#utility.yul\":20241:20423 */\n pop\n /* \"#utility.yul\":20515:20519 */\n 0x40\n /* \"#utility.yul\":20508:20513 */\n dup3\n /* \"#utility.yul\":20504:20520 */\n add\n /* \"#utility.yul\":20498:20521 */\n mload\n /* \"#utility.yul\":20534:20591 */\n tag_1154\n /* \"#utility.yul\":20585:20589 */\n 0x40\n /* \"#utility.yul\":20580:20583 */\n dup6\n /* \"#utility.yul\":20576:20590 */\n add\n /* \"#utility.yul\":20562:20574 */\n dup3\n /* \"#utility.yul\":20534:20591 */\n tag_896\n jump\t// in\n tag_1154:\n /* \"#utility.yul\":20433:20601 */\n pop\n /* \"#utility.yul\":20696:20700 */\n 0x60\n /* \"#utility.yul\":20689:20694 */\n dup3\n /* \"#utility.yul\":20685:20701 */\n add\n /* \"#utility.yul\":20679:20702 */\n mload\n /* \"#utility.yul\":20715:20772 */\n tag_1155\n /* \"#utility.yul\":20766:20770 */\n 0x60\n /* \"#utility.yul\":20761:20764 */\n dup6\n /* \"#utility.yul\":20757:20771 */\n add\n /* \"#utility.yul\":20743:20755 */\n dup3\n /* \"#utility.yul\":20715:20772 */\n tag_896\n jump\t// in\n tag_1155:\n /* \"#utility.yul\":20611:20782 */\n pop\n /* \"#utility.yul\":20020:20789 */\n pop\n /* \"#utility.yul\":19894:20789 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":20795:21114 */\n tag_898:\n /* \"#utility.yul\":20934:20944 */\n 0x00\n /* \"#utility.yul\":20955:21071 */\n tag_1157\n /* \"#utility.yul\":21067:21070 */\n dup4\n /* \"#utility.yul\":21059:21065 */\n dup4\n /* \"#utility.yul\":20955:21071 */\n tag_897\n jump\t// in\n tag_1157:\n /* \"#utility.yul\":21103:21107 */\n 0x80\n /* \"#utility.yul\":21098:21101 */\n dup4\n /* \"#utility.yul\":21094:21108 */\n add\n /* \"#utility.yul\":21080:21108 */\n swap1\n pop\n /* \"#utility.yul\":20795:21114 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":21120:21268 */\n tag_899:\n /* \"#utility.yul\":21225:21229 */\n 0x00\n /* \"#utility.yul\":21257:21261 */\n 0x20\n /* \"#utility.yul\":21252:21255 */\n dup3\n /* \"#utility.yul\":21248:21262 */\n add\n /* \"#utility.yul\":21240:21262 */\n swap1\n pop\n /* \"#utility.yul\":21120:21268 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":21360:22372 */\n tag_900:\n /* \"#utility.yul\":21549:21552 */\n 0x00\n /* \"#utility.yul\":21578:21667 */\n tag_1160\n /* \"#utility.yul\":21661:21666 */\n dup3\n /* \"#utility.yul\":21578:21667 */\n tag_891\n jump\t// in\n tag_1160:\n /* \"#utility.yul\":21683:21804 */\n tag_1161\n /* \"#utility.yul\":21797:21803 */\n dup2\n /* \"#utility.yul\":21792:21795 */\n dup6\n /* \"#utility.yul\":21683:21804 */\n tag_892\n jump\t// in\n tag_1161:\n /* \"#utility.yul\":21676:21804 */\n swap4\n pop\n /* \"#utility.yul\":21828:21919 */\n tag_1162\n /* \"#utility.yul\":21913:21918 */\n dup4\n /* \"#utility.yul\":21828:21919 */\n tag_893\n jump\t// in\n tag_1162:\n /* \"#utility.yul\":21942:21949 */\n dup1\n /* \"#utility.yul\":21973:21974 */\n 0x00\n /* \"#utility.yul\":21958:22347 */\n tag_1163:\n /* \"#utility.yul\":21983:21989 */\n dup4\n /* \"#utility.yul\":21980:21981 */\n dup2\n /* \"#utility.yul\":21977:21990 */\n lt\n /* \"#utility.yul\":21958:22347 */\n iszero\n tag_1165\n jumpi\n /* \"#utility.yul\":22059:22065 */\n dup2\n /* \"#utility.yul\":22053:22066 */\n mload\n /* \"#utility.yul\":22086:22219 */\n tag_1166\n /* \"#utility.yul\":22215:22218 */\n dup9\n /* \"#utility.yul\":22200:22213 */\n dup3\n /* \"#utility.yul\":22086:22219 */\n tag_898\n jump\t// in\n tag_1166:\n /* \"#utility.yul\":22079:22219 */\n swap8\n pop\n /* \"#utility.yul\":22242:22337 */\n tag_1167\n /* \"#utility.yul\":22330:22336 */\n dup4\n /* \"#utility.yul\":22242:22337 */\n tag_899\n jump\t// in\n tag_1167:\n /* \"#utility.yul\":22232:22337 */\n swap3\n pop\n /* \"#utility.yul\":22018:22347 */\n pop\n /* \"#utility.yul\":22005:22006 */\n 0x01\n /* \"#utility.yul\":22002:22003 */\n dup2\n /* \"#utility.yul\":21998:22007 */\n add\n /* \"#utility.yul\":21993:22007 */\n swap1\n pop\n /* \"#utility.yul\":21958:22347 */\n jump(tag_1163)\n tag_1165:\n /* \"#utility.yul\":21962:21976 */\n pop\n /* \"#utility.yul\":22363:22366 */\n dup6\n /* \"#utility.yul\":22356:22366 */\n swap4\n pop\n /* \"#utility.yul\":21554:22372 */\n pop\n pop\n pop\n /* \"#utility.yul\":21360:22372 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":22378:22891 */\n tag_143:\n /* \"#utility.yul\":22591:22595 */\n 0x00\n /* \"#utility.yul\":22629:22631 */\n 0x20\n /* \"#utility.yul\":22618:22627 */\n dup3\n /* \"#utility.yul\":22614:22632 */\n add\n /* \"#utility.yul\":22606:22632 */\n swap1\n pop\n /* \"#utility.yul\":22678:22687 */\n dup2\n /* \"#utility.yul\":22672:22676 */\n dup2\n /* \"#utility.yul\":22668:22688 */\n sub\n /* \"#utility.yul\":22664:22665 */\n 0x00\n /* \"#utility.yul\":22653:22662 */\n dup4\n /* \"#utility.yul\":22649:22666 */\n add\n /* \"#utility.yul\":22642:22689 */\n mstore\n /* \"#utility.yul\":22706:22884 */\n tag_1169\n /* \"#utility.yul\":22879:22883 */\n dup2\n /* \"#utility.yul\":22870:22876 */\n dup5\n /* \"#utility.yul\":22706:22884 */\n tag_900\n jump\t// in\n tag_1169:\n /* \"#utility.yul\":22698:22884 */\n swap1\n pop\n /* \"#utility.yul\":22378:22891 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":22897:23714 */\n tag_146:\n /* \"#utility.yul\":23009:23015 */\n 0x00\n /* \"#utility.yul\":23017:23023 */\n dup1\n /* \"#utility.yul\":23025:23031 */\n 0x00\n /* \"#utility.yul\":23033:23039 */\n dup1\n /* \"#utility.yul\":23082:23085 */\n 0x80\n /* \"#utility.yul\":23070:23079 */\n dup6\n /* \"#utility.yul\":23061:23068 */\n dup8\n /* \"#utility.yul\":23057:23080 */\n sub\n /* \"#utility.yul\":23053:23086 */\n slt\n /* \"#utility.yul\":23050:23170 */\n iszero\n tag_1171\n jumpi\n /* \"#utility.yul\":23089:23168 */\n tag_1172\n tag_839\n jump\t// in\n tag_1172:\n /* \"#utility.yul\":23050:23170 */\n tag_1171:\n /* \"#utility.yul\":23209:23210 */\n 0x00\n /* \"#utility.yul\":23234:23302 */\n tag_1173\n /* \"#utility.yul\":23294:23301 */\n dup8\n /* \"#utility.yul\":23285:23291 */\n dup3\n /* \"#utility.yul\":23274:23283 */\n dup9\n /* \"#utility.yul\":23270:23292 */\n add\n /* \"#utility.yul\":23234:23302 */\n tag_865\n jump\t// in\n tag_1173:\n /* \"#utility.yul\":23224:23302 */\n swap5\n pop\n /* \"#utility.yul\":23180:23312 */\n pop\n /* \"#utility.yul\":23351:23353 */\n 0x20\n /* \"#utility.yul\":23377:23445 */\n tag_1174\n /* \"#utility.yul\":23437:23444 */\n dup8\n /* \"#utility.yul\":23428:23434 */\n dup3\n /* \"#utility.yul\":23417:23426 */\n dup9\n /* \"#utility.yul\":23413:23435 */\n add\n /* \"#utility.yul\":23377:23445 */\n tag_865\n jump\t// in\n tag_1174:\n /* \"#utility.yul\":23367:23445 */\n swap4\n pop\n /* \"#utility.yul\":23322:23455 */\n pop\n /* \"#utility.yul\":23494:23496 */\n 0x40\n /* \"#utility.yul\":23520:23572 */\n tag_1175\n /* \"#utility.yul\":23564:23571 */\n dup8\n /* \"#utility.yul\":23555:23561 */\n dup3\n /* \"#utility.yul\":23544:23553 */\n dup9\n /* \"#utility.yul\":23540:23562 */\n add\n /* \"#utility.yul\":23520:23572 */\n tag_868\n jump\t// in\n tag_1175:\n /* \"#utility.yul\":23510:23572 */\n swap3\n pop\n /* \"#utility.yul\":23465:23582 */\n pop\n /* \"#utility.yul\":23621:23623 */\n 0x60\n /* \"#utility.yul\":23647:23697 */\n tag_1176\n /* \"#utility.yul\":23689:23696 */\n dup8\n /* \"#utility.yul\":23680:23686 */\n dup3\n /* \"#utility.yul\":23669:23678 */\n dup9\n /* \"#utility.yul\":23665:23687 */\n add\n /* \"#utility.yul\":23647:23697 */\n tag_879\n jump\t// in\n tag_1176:\n /* \"#utility.yul\":23637:23697 */\n swap2\n pop\n /* \"#utility.yul\":23592:23707 */\n pop\n /* \"#utility.yul\":22897:23714 */\n swap3\n swap6\n swap2\n swap5\n pop\n swap3\n pop\n jump\t// out\n /* \"#utility.yul\":23720:24399 */\n tag_153:\n /* \"#utility.yul\":23827:23833 */\n 0x00\n /* \"#utility.yul\":23835:23841 */\n dup1\n /* \"#utility.yul\":23843:23849 */\n 0x00\n /* \"#utility.yul\":23892:23894 */\n 0x60\n /* \"#utility.yul\":23880:23889 */\n dup5\n /* \"#utility.yul\":23871:23878 */\n dup7\n /* \"#utility.yul\":23867:23890 */\n sub\n /* \"#utility.yul\":23863:23895 */\n slt\n /* \"#utility.yul\":23860:23979 */\n iszero\n tag_1178\n jumpi\n /* \"#utility.yul\":23898:23977 */\n tag_1179\n tag_839\n jump\t// in\n tag_1179:\n /* \"#utility.yul\":23860:23979 */\n tag_1178:\n /* \"#utility.yul\":24018:24019 */\n 0x00\n /* \"#utility.yul\":24043:24111 */\n tag_1180\n /* \"#utility.yul\":24103:24110 */\n dup7\n /* \"#utility.yul\":24094:24100 */\n dup3\n /* \"#utility.yul\":24083:24092 */\n dup8\n /* \"#utility.yul\":24079:24101 */\n add\n /* \"#utility.yul\":24043:24111 */\n tag_865\n jump\t// in\n tag_1180:\n /* \"#utility.yul\":24033:24111 */\n swap4\n pop\n /* \"#utility.yul\":23989:24121 */\n pop\n /* \"#utility.yul\":24160:24162 */\n 0x20\n /* \"#utility.yul\":24186:24254 */\n tag_1181\n /* \"#utility.yul\":24246:24253 */\n dup7\n /* \"#utility.yul\":24237:24243 */\n dup3\n /* \"#utility.yul\":24226:24235 */\n dup8\n /* \"#utility.yul\":24222:24244 */\n add\n /* \"#utility.yul\":24186:24254 */\n tag_865\n jump\t// in\n tag_1181:\n /* \"#utility.yul\":24176:24254 */\n swap3\n pop\n /* \"#utility.yul\":24131:24264 */\n pop\n /* \"#utility.yul\":24303:24305 */\n 0x40\n /* \"#utility.yul\":24329:24382 */\n tag_1182\n /* \"#utility.yul\":24374:24381 */\n dup7\n /* \"#utility.yul\":24365:24371 */\n dup3\n /* \"#utility.yul\":24354:24363 */\n dup8\n /* \"#utility.yul\":24350:24372 */\n add\n /* \"#utility.yul\":24329:24382 */\n tag_855\n jump\t// in\n tag_1182:\n /* \"#utility.yul\":24319:24382 */\n swap2\n pop\n /* \"#utility.yul\":24274:24392 */\n pop\n /* \"#utility.yul\":23720:24399 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":24487:25392 */\n tag_901:\n /* \"#utility.yul\":24654:24658 */\n 0x80\n /* \"#utility.yul\":24649:24652 */\n dup3\n /* \"#utility.yul\":24645:24659 */\n add\n /* \"#utility.yul\":24744:24748 */\n 0x00\n /* \"#utility.yul\":24737:24742 */\n dup3\n /* \"#utility.yul\":24733:24749 */\n add\n /* \"#utility.yul\":24727:24750 */\n mload\n /* \"#utility.yul\":24763:24824 */\n tag_1184\n /* \"#utility.yul\":24818:24822 */\n 0x00\n /* \"#utility.yul\":24813:24816 */\n dup6\n /* \"#utility.yul\":24809:24823 */\n add\n /* \"#utility.yul\":24795:24807 */\n dup3\n /* \"#utility.yul\":24763:24824 */\n tag_894\n jump\t// in\n tag_1184:\n /* \"#utility.yul\":24669:24834 */\n pop\n /* \"#utility.yul\":24918:24922 */\n 0x20\n /* \"#utility.yul\":24911:24916 */\n dup3\n /* \"#utility.yul\":24907:24923 */\n add\n /* \"#utility.yul\":24901:24924 */\n mload\n /* \"#utility.yul\":24937:25016 */\n tag_1185\n /* \"#utility.yul\":25010:25014 */\n 0x20\n /* \"#utility.yul\":25005:25008 */\n dup6\n /* \"#utility.yul\":25001:25015 */\n add\n /* \"#utility.yul\":24987:24999 */\n dup3\n /* \"#utility.yul\":24937:25016 */\n tag_895\n jump\t// in\n tag_1185:\n /* \"#utility.yul\":24844:25026 */\n pop\n /* \"#utility.yul\":25118:25122 */\n 0x40\n /* \"#utility.yul\":25111:25116 */\n dup3\n /* \"#utility.yul\":25107:25123 */\n add\n /* \"#utility.yul\":25101:25124 */\n mload\n /* \"#utility.yul\":25137:25194 */\n tag_1186\n /* \"#utility.yul\":25188:25192 */\n 0x40\n /* \"#utility.yul\":25183:25186 */\n dup6\n /* \"#utility.yul\":25179:25193 */\n add\n /* \"#utility.yul\":25165:25177 */\n dup3\n /* \"#utility.yul\":25137:25194 */\n tag_896\n jump\t// in\n tag_1186:\n /* \"#utility.yul\":25036:25204 */\n pop\n /* \"#utility.yul\":25299:25303 */\n 0x60\n /* \"#utility.yul\":25292:25297 */\n dup3\n /* \"#utility.yul\":25288:25304 */\n add\n /* \"#utility.yul\":25282:25305 */\n mload\n /* \"#utility.yul\":25318:25375 */\n tag_1187\n /* \"#utility.yul\":25369:25373 */\n 0x60\n /* \"#utility.yul\":25364:25367 */\n dup6\n /* \"#utility.yul\":25360:25374 */\n add\n /* \"#utility.yul\":25346:25358 */\n dup3\n /* \"#utility.yul\":25318:25375 */\n tag_896\n jump\t// in\n tag_1187:\n /* \"#utility.yul\":25214:25385 */\n pop\n /* \"#utility.yul\":24623:25392 */\n pop\n /* \"#utility.yul\":24487:25392 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":25398:25761 */\n tag_156:\n /* \"#utility.yul\":25561:25565 */\n 0x00\n /* \"#utility.yul\":25599:25602 */\n 0x80\n /* \"#utility.yul\":25588:25597 */\n dup3\n /* \"#utility.yul\":25584:25603 */\n add\n /* \"#utility.yul\":25576:25603 */\n swap1\n pop\n /* \"#utility.yul\":25613:25754 */\n tag_1189\n /* \"#utility.yul\":25751:25752 */\n 0x00\n /* \"#utility.yul\":25740:25749 */\n dup4\n /* \"#utility.yul\":25736:25753 */\n add\n /* \"#utility.yul\":25727:25733 */\n dup5\n /* \"#utility.yul\":25613:25754 */\n tag_901\n jump\t// in\n tag_1189:\n /* \"#utility.yul\":25398:25761 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":25767:26752 */\n tag_188:\n /* \"#utility.yul\":26050:26054 */\n 0x00\n /* \"#utility.yul\":26088:26091 */\n 0x0100\n /* \"#utility.yul\":26077:26086 */\n dup3\n /* \"#utility.yul\":26073:26092 */\n add\n /* \"#utility.yul\":26065:26092 */\n swap1\n pop\n /* \"#utility.yul\":26102:26173 */\n tag_1191\n /* \"#utility.yul\":26170:26171 */\n 0x00\n /* \"#utility.yul\":26159:26168 */\n dup4\n /* \"#utility.yul\":26155:26172 */\n add\n /* \"#utility.yul\":26146:26152 */\n dup12\n /* \"#utility.yul\":26102:26173 */\n tag_888\n jump\t// in\n tag_1191:\n /* \"#utility.yul\":26183:26255 */\n tag_1192\n /* \"#utility.yul\":26251:26253 */\n 0x20\n /* \"#utility.yul\":26240:26249 */\n dup4\n /* \"#utility.yul\":26236:26254 */\n add\n /* \"#utility.yul\":26227:26233 */\n dup11\n /* \"#utility.yul\":26183:26255 */\n tag_888\n jump\t// in\n tag_1192:\n /* \"#utility.yul\":26265:26337 */\n tag_1193\n /* \"#utility.yul\":26333:26335 */\n 0x40\n /* \"#utility.yul\":26322:26331 */\n dup4\n /* \"#utility.yul\":26318:26336 */\n add\n /* \"#utility.yul\":26309:26315 */\n dup10\n /* \"#utility.yul\":26265:26337 */\n tag_888\n jump\t// in\n tag_1193:\n /* \"#utility.yul\":26347:26419 */\n tag_1194\n /* \"#utility.yul\":26415:26417 */\n 0x60\n /* \"#utility.yul\":26404:26413 */\n dup4\n /* \"#utility.yul\":26400:26418 */\n add\n /* \"#utility.yul\":26391:26397 */\n dup9\n /* \"#utility.yul\":26347:26419 */\n tag_888\n jump\t// in\n tag_1194:\n /* \"#utility.yul\":26429:26502 */\n tag_1195\n /* \"#utility.yul\":26497:26500 */\n 0x80\n /* \"#utility.yul\":26486:26495 */\n dup4\n /* \"#utility.yul\":26482:26501 */\n add\n /* \"#utility.yul\":26473:26479 */\n dup8\n /* \"#utility.yul\":26429:26502 */\n tag_888\n jump\t// in\n tag_1195:\n /* \"#utility.yul\":26512:26585 */\n tag_1196\n /* \"#utility.yul\":26580:26583 */\n 0xa0\n /* \"#utility.yul\":26569:26578 */\n dup4\n /* \"#utility.yul\":26565:26584 */\n add\n /* \"#utility.yul\":26556:26562 */\n dup7\n /* \"#utility.yul\":26512:26585 */\n tag_888\n jump\t// in\n tag_1196:\n /* \"#utility.yul\":26595:26668 */\n tag_1197\n /* \"#utility.yul\":26663:26666 */\n 0xc0\n /* \"#utility.yul\":26652:26661 */\n dup4\n /* \"#utility.yul\":26648:26667 */\n add\n /* \"#utility.yul\":26639:26645 */\n dup6\n /* \"#utility.yul\":26595:26668 */\n tag_888\n jump\t// in\n tag_1197:\n /* \"#utility.yul\":26678:26745 */\n tag_1198\n /* \"#utility.yul\":26740:26743 */\n 0xe0\n /* \"#utility.yul\":26729:26738 */\n dup4\n /* \"#utility.yul\":26725:26744 */\n add\n /* \"#utility.yul\":26716:26722 */\n dup5\n /* \"#utility.yul\":26678:26745 */\n tag_845\n jump\t// in\n tag_1198:\n /* \"#utility.yul\":25767:26752 */\n swap10\n swap9\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":26758:27523 */\n tag_191:\n /* \"#utility.yul\":26844:26850 */\n 0x00\n /* \"#utility.yul\":26852:26858 */\n dup1\n /* \"#utility.yul\":26860:26866 */\n 0x00\n /* \"#utility.yul\":26868:26874 */\n dup1\n /* \"#utility.yul\":26917:26920 */\n 0x80\n /* \"#utility.yul\":26905:26914 */\n dup6\n /* \"#utility.yul\":26896:26903 */\n dup8\n /* \"#utility.yul\":26892:26915 */\n sub\n /* \"#utility.yul\":26888:26921 */\n slt\n /* \"#utility.yul\":26885:27005 */\n iszero\n tag_1200\n jumpi\n /* \"#utility.yul\":26924:27003 */\n tag_1201\n tag_839\n jump\t// in\n tag_1201:\n /* \"#utility.yul\":26885:27005 */\n tag_1200:\n /* \"#utility.yul\":27044:27045 */\n 0x00\n /* \"#utility.yul\":27069:27122 */\n tag_1202\n /* \"#utility.yul\":27114:27121 */\n dup8\n /* \"#utility.yul\":27105:27111 */\n dup3\n /* \"#utility.yul\":27094:27103 */\n dup9\n /* \"#utility.yul\":27090:27112 */\n add\n /* \"#utility.yul\":27069:27122 */\n tag_877\n jump\t// in\n tag_1202:\n /* \"#utility.yul\":27059:27122 */\n swap5\n pop\n /* \"#utility.yul\":27015:27132 */\n pop\n /* \"#utility.yul\":27171:27173 */\n 0x20\n /* \"#utility.yul\":27197:27250 */\n tag_1203\n /* \"#utility.yul\":27242:27249 */\n dup8\n /* \"#utility.yul\":27233:27239 */\n dup3\n /* \"#utility.yul\":27222:27231 */\n dup9\n /* \"#utility.yul\":27218:27240 */\n add\n /* \"#utility.yul\":27197:27250 */\n tag_877\n jump\t// in\n tag_1203:\n /* \"#utility.yul\":27187:27250 */\n swap4\n pop\n /* \"#utility.yul\":27142:27260 */\n pop\n /* \"#utility.yul\":27299:27301 */\n 0x40\n /* \"#utility.yul\":27325:27378 */\n tag_1204\n /* \"#utility.yul\":27370:27377 */\n dup8\n /* \"#utility.yul\":27361:27367 */\n dup3\n /* \"#utility.yul\":27350:27359 */\n dup9\n /* \"#utility.yul\":27346:27368 */\n add\n /* \"#utility.yul\":27325:27378 */\n tag_855\n jump\t// in\n tag_1204:\n /* \"#utility.yul\":27315:27378 */\n swap3\n pop\n /* \"#utility.yul\":27270:27388 */\n pop\n /* \"#utility.yul\":27427:27429 */\n 0x60\n /* \"#utility.yul\":27453:27506 */\n tag_1205\n /* \"#utility.yul\":27498:27505 */\n dup8\n /* \"#utility.yul\":27489:27495 */\n dup3\n /* \"#utility.yul\":27478:27487 */\n dup9\n /* \"#utility.yul\":27474:27496 */\n add\n /* \"#utility.yul\":27453:27506 */\n tag_877\n jump\t// in\n tag_1205:\n /* \"#utility.yul\":27443:27506 */\n swap2\n pop\n /* \"#utility.yul\":27398:27516 */\n pop\n /* \"#utility.yul\":26758:27523 */\n swap3\n swap6\n swap2\n swap5\n pop\n swap3\n pop\n jump\t// out\n /* \"#utility.yul\":27529:27856 */\n tag_204:\n /* \"#utility.yul\":27587:27593 */\n 0x00\n /* \"#utility.yul\":27636:27638 */\n 0x20\n /* \"#utility.yul\":27624:27633 */\n dup3\n /* \"#utility.yul\":27615:27622 */\n dup5\n /* \"#utility.yul\":27611:27634 */\n sub\n /* \"#utility.yul\":27607:27639 */\n slt\n /* \"#utility.yul\":27604:27723 */\n iszero\n tag_1207\n jumpi\n /* \"#utility.yul\":27642:27721 */\n tag_1208\n tag_839\n jump\t// in\n tag_1208:\n /* \"#utility.yul\":27604:27723 */\n tag_1207:\n /* \"#utility.yul\":27762:27763 */\n 0x00\n /* \"#utility.yul\":27787:27839 */\n tag_1209\n /* \"#utility.yul\":27831:27838 */\n dup5\n /* \"#utility.yul\":27822:27828 */\n dup3\n /* \"#utility.yul\":27811:27820 */\n dup6\n /* \"#utility.yul\":27807:27829 */\n add\n /* \"#utility.yul\":27787:27839 */\n tag_868\n jump\t// in\n tag_1209:\n /* \"#utility.yul\":27777:27839 */\n swap2\n pop\n /* \"#utility.yul\":27733:27849 */\n pop\n /* \"#utility.yul\":27529:27856 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":27862:28191 */\n tag_211:\n /* \"#utility.yul\":27921:27927 */\n 0x00\n /* \"#utility.yul\":27970:27972 */\n 0x20\n /* \"#utility.yul\":27958:27967 */\n dup3\n /* \"#utility.yul\":27949:27956 */\n dup5\n /* \"#utility.yul\":27945:27968 */\n sub\n /* \"#utility.yul\":27941:27973 */\n slt\n /* \"#utility.yul\":27938:28057 */\n iszero\n tag_1211\n jumpi\n /* \"#utility.yul\":27976:28055 */\n tag_1212\n tag_839\n jump\t// in\n tag_1212:\n /* \"#utility.yul\":27938:28057 */\n tag_1211:\n /* \"#utility.yul\":28096:28097 */\n 0x00\n /* \"#utility.yul\":28121:28174 */\n tag_1213\n /* \"#utility.yul\":28166:28173 */\n dup5\n /* \"#utility.yul\":28157:28163 */\n dup3\n /* \"#utility.yul\":28146:28155 */\n dup6\n /* \"#utility.yul\":28142:28164 */\n add\n /* \"#utility.yul\":28121:28174 */\n tag_877\n jump\t// in\n tag_1213:\n /* \"#utility.yul\":28111:28174 */\n swap2\n pop\n /* \"#utility.yul\":28067:28184 */\n pop\n /* \"#utility.yul\":27862:28191 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":28197:28377 */\n tag_232:\n /* \"#utility.yul\":28245:28322 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":28242:28243 */\n 0x00\n /* \"#utility.yul\":28235:28323 */\n mstore\n /* \"#utility.yul\":28342:28346 */\n 0x41\n /* \"#utility.yul\":28339:28340 */\n 0x04\n /* \"#utility.yul\":28332:28347 */\n mstore\n /* \"#utility.yul\":28366:28370 */\n 0x24\n /* \"#utility.yul\":28363:28364 */\n 0x00\n /* \"#utility.yul\":28356:28371 */\n revert\n /* \"#utility.yul\":28383:28563 */\n tag_244:\n /* \"#utility.yul\":28431:28508 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":28428:28429 */\n 0x00\n /* \"#utility.yul\":28421:28509 */\n mstore\n /* \"#utility.yul\":28528:28532 */\n 0x32\n /* \"#utility.yul\":28525:28526 */\n 0x04\n /* \"#utility.yul\":28518:28533 */\n mstore\n /* \"#utility.yul\":28552:28556 */\n 0x24\n /* \"#utility.yul\":28549:28550 */\n 0x00\n /* \"#utility.yul\":28542:28557 */\n revert\n /* \"#utility.yul\":28569:28749 */\n tag_902:\n /* \"#utility.yul\":28617:28694 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":28614:28615 */\n 0x00\n /* \"#utility.yul\":28607:28695 */\n mstore\n /* \"#utility.yul\":28714:28718 */\n 0x11\n /* \"#utility.yul\":28711:28712 */\n 0x04\n /* \"#utility.yul\":28704:28719 */\n mstore\n /* \"#utility.yul\":28738:28742 */\n 0x24\n /* \"#utility.yul\":28735:28736 */\n 0x00\n /* \"#utility.yul\":28728:28743 */\n revert\n /* \"#utility.yul\":28755:28988 */\n tag_246:\n /* \"#utility.yul\":28794:28797 */\n 0x00\n /* \"#utility.yul\":28817:28841 */\n tag_1218\n /* \"#utility.yul\":28835:28840 */\n dup3\n /* \"#utility.yul\":28817:28841 */\n tag_849\n jump\t// in\n tag_1218:\n /* \"#utility.yul\":28808:28841 */\n swap2\n pop\n /* \"#utility.yul\":28863:28929 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":28856:28861 */\n dup3\n /* \"#utility.yul\":28853:28930 */\n sub\n /* \"#utility.yul\":28850:28953 */\n tag_1219\n jumpi\n /* \"#utility.yul\":28933:28951 */\n tag_1220\n tag_902\n jump\t// in\n tag_1220:\n /* \"#utility.yul\":28850:28953 */\n tag_1219:\n /* \"#utility.yul\":28980:28981 */\n 0x01\n /* \"#utility.yul\":28973:28978 */\n dup3\n /* \"#utility.yul\":28969:28982 */\n add\n /* \"#utility.yul\":28962:28982 */\n swap1\n pop\n /* \"#utility.yul\":28755:28988 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":28994:29134 */\n tag_903:\n /* \"#utility.yul\":29043:29052 */\n 0x00\n /* \"#utility.yul\":29076:29128 */\n tag_1222\n /* \"#utility.yul\":29094:29127 */\n tag_1223\n /* \"#utility.yul\":29103:29126 */\n tag_1224\n /* \"#utility.yul\":29120:29125 */\n dup5\n /* \"#utility.yul\":29103:29126 */\n tag_866\n jump\t// in\n tag_1224:\n /* \"#utility.yul\":29094:29127 */\n tag_857\n jump\t// in\n tag_1223:\n /* \"#utility.yul\":29076:29128 */\n tag_849\n jump\t// in\n tag_1222:\n /* \"#utility.yul\":29063:29128 */\n swap1\n pop\n /* \"#utility.yul\":28994:29134 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":29140:29269 */\n tag_904:\n /* \"#utility.yul\":29226:29262 */\n tag_1226\n /* \"#utility.yul\":29256:29261 */\n dup2\n /* \"#utility.yul\":29226:29262 */\n tag_903\n jump\t// in\n tag_1226:\n /* \"#utility.yul\":29221:29224 */\n dup3\n /* \"#utility.yul\":29214:29263 */\n mstore\n /* \"#utility.yul\":29140:29269 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":29275:29775 */\n tag_260:\n /* \"#utility.yul\":29453:29457 */\n 0x00\n /* \"#utility.yul\":29491:29493 */\n 0x60\n /* \"#utility.yul\":29480:29489 */\n dup3\n /* \"#utility.yul\":29476:29494 */\n add\n /* \"#utility.yul\":29468:29494 */\n swap1\n pop\n /* \"#utility.yul\":29504:29590 */\n tag_1228\n /* \"#utility.yul\":29587:29588 */\n 0x00\n /* \"#utility.yul\":29576:29585 */\n dup4\n /* \"#utility.yul\":29572:29589 */\n add\n /* \"#utility.yul\":29563:29569 */\n dup7\n /* \"#utility.yul\":29504:29590 */\n tag_861\n jump\t// in\n tag_1228:\n /* \"#utility.yul\":29600:29687 */\n tag_1229\n /* \"#utility.yul\":29683:29685 */\n 0x20\n /* \"#utility.yul\":29672:29681 */\n dup4\n /* \"#utility.yul\":29668:29686 */\n add\n /* \"#utility.yul\":29659:29665 */\n dup6\n /* \"#utility.yul\":29600:29687 */\n tag_861\n jump\t// in\n tag_1229:\n /* \"#utility.yul\":29697:29768 */\n tag_1230\n /* \"#utility.yul\":29764:29766 */\n 0x40\n /* \"#utility.yul\":29753:29762 */\n dup4\n /* \"#utility.yul\":29749:29767 */\n add\n /* \"#utility.yul\":29740:29746 */\n dup5\n /* \"#utility.yul\":29697:29768 */\n tag_904\n jump\t// in\n tag_1230:\n /* \"#utility.yul\":29275:29775 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":29781:29896 */\n tag_905:\n /* \"#utility.yul\":29866:29889 */\n tag_1232\n /* \"#utility.yul\":29883:29888 */\n dup2\n /* \"#utility.yul\":29866:29889 */\n tag_866\n jump\t// in\n tag_1232:\n /* \"#utility.yul\":29861:29864 */\n dup3\n /* \"#utility.yul\":29854:29890 */\n mstore\n /* \"#utility.yul\":29781:29896 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":29902:30017 */\n tag_906:\n /* \"#utility.yul\":29987:30010 */\n tag_1234\n /* \"#utility.yul\":30004:30009 */\n dup2\n /* \"#utility.yul\":29987:30010 */\n tag_869\n jump\t// in\n tag_1234:\n /* \"#utility.yul\":29982:29985 */\n dup3\n /* \"#utility.yul\":29975:30011 */\n mstore\n /* \"#utility.yul\":29902:30017 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":30023:30881 */\n tag_262:\n /* \"#utility.yul\":30270:30274 */\n 0x00\n /* \"#utility.yul\":30308:30311 */\n 0xe0\n /* \"#utility.yul\":30297:30306 */\n dup3\n /* \"#utility.yul\":30293:30312 */\n add\n /* \"#utility.yul\":30285:30312 */\n swap1\n pop\n /* \"#utility.yul\":30322:30391 */\n tag_1236\n /* \"#utility.yul\":30388:30389 */\n 0x00\n /* \"#utility.yul\":30377:30386 */\n dup4\n /* \"#utility.yul\":30373:30390 */\n add\n /* \"#utility.yul\":30364:30370 */\n dup11\n /* \"#utility.yul\":30322:30391 */\n tag_905\n jump\t// in\n tag_1236:\n /* \"#utility.yul\":30401:30471 */\n tag_1237\n /* \"#utility.yul\":30467:30469 */\n 0x20\n /* \"#utility.yul\":30456:30465 */\n dup4\n /* \"#utility.yul\":30452:30470 */\n add\n /* \"#utility.yul\":30443:30449 */\n dup10\n /* \"#utility.yul\":30401:30471 */\n tag_905\n jump\t// in\n tag_1237:\n /* \"#utility.yul\":30481:30551 */\n tag_1238\n /* \"#utility.yul\":30547:30549 */\n 0x40\n /* \"#utility.yul\":30536:30545 */\n dup4\n /* \"#utility.yul\":30532:30550 */\n add\n /* \"#utility.yul\":30523:30529 */\n dup9\n /* \"#utility.yul\":30481:30551 */\n tag_905\n jump\t// in\n tag_1238:\n /* \"#utility.yul\":30561:30631 */\n tag_1239\n /* \"#utility.yul\":30627:30629 */\n 0x60\n /* \"#utility.yul\":30616:30625 */\n dup4\n /* \"#utility.yul\":30612:30630 */\n add\n /* \"#utility.yul\":30603:30609 */\n dup8\n /* \"#utility.yul\":30561:30631 */\n tag_905\n jump\t// in\n tag_1239:\n /* \"#utility.yul\":30641:30712 */\n tag_1240\n /* \"#utility.yul\":30707:30710 */\n 0x80\n /* \"#utility.yul\":30696:30705 */\n dup4\n /* \"#utility.yul\":30692:30711 */\n add\n /* \"#utility.yul\":30683:30689 */\n dup7\n /* \"#utility.yul\":30641:30712 */\n tag_906\n jump\t// in\n tag_1240:\n /* \"#utility.yul\":30722:30793 */\n tag_1241\n /* \"#utility.yul\":30788:30791 */\n 0xa0\n /* \"#utility.yul\":30777:30786 */\n dup4\n /* \"#utility.yul\":30773:30792 */\n add\n /* \"#utility.yul\":30764:30770 */\n dup6\n /* \"#utility.yul\":30722:30793 */\n tag_905\n jump\t// in\n tag_1241:\n /* \"#utility.yul\":30803:30874 */\n tag_1242\n /* \"#utility.yul\":30869:30872 */\n 0xc0\n /* \"#utility.yul\":30858:30867 */\n dup4\n /* \"#utility.yul\":30854:30873 */\n add\n /* \"#utility.yul\":30845:30851 */\n dup5\n /* \"#utility.yul\":30803:30874 */\n tag_906\n jump\t// in\n tag_1242:\n /* \"#utility.yul\":30023:30881 */\n swap9\n swap8\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":30887:31107 */\n tag_298:\n /* \"#utility.yul\":30979:30983 */\n 0x00\n /* \"#utility.yul\":31017:31019 */\n 0x20\n /* \"#utility.yul\":31006:31015 */\n dup3\n /* \"#utility.yul\":31002:31020 */\n add\n /* \"#utility.yul\":30994:31020 */\n swap1\n pop\n /* \"#utility.yul\":31030:31100 */\n tag_1244\n /* \"#utility.yul\":31097:31098 */\n 0x00\n /* \"#utility.yul\":31086:31095 */\n dup4\n /* \"#utility.yul\":31082:31099 */\n add\n /* \"#utility.yul\":31073:31079 */\n dup5\n /* \"#utility.yul\":31030:31100 */\n tag_904\n jump\t// in\n tag_1244:\n /* \"#utility.yul\":30887:31107 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":31113:31253 */\n tag_907:\n /* \"#utility.yul\":31162:31171 */\n 0x00\n /* \"#utility.yul\":31195:31247 */\n tag_1246\n /* \"#utility.yul\":31213:31246 */\n tag_1247\n /* \"#utility.yul\":31222:31245 */\n tag_1248\n /* \"#utility.yul\":31239:31244 */\n dup5\n /* \"#utility.yul\":31222:31245 */\n tag_869\n jump\t// in\n tag_1248:\n /* \"#utility.yul\":31213:31246 */\n tag_857\n jump\t// in\n tag_1247:\n /* \"#utility.yul\":31195:31247 */\n tag_849\n jump\t// in\n tag_1246:\n /* \"#utility.yul\":31182:31247 */\n swap1\n pop\n /* \"#utility.yul\":31113:31253 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":31259:31388 */\n tag_908:\n /* \"#utility.yul\":31345:31381 */\n tag_1250\n /* \"#utility.yul\":31375:31380 */\n dup2\n /* \"#utility.yul\":31345:31381 */\n tag_907\n jump\t// in\n tag_1250:\n /* \"#utility.yul\":31340:31343 */\n dup3\n /* \"#utility.yul\":31333:31382 */\n mstore\n /* \"#utility.yul\":31259:31388 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":31394:32266 */\n tag_307:\n /* \"#utility.yul\":31648:31652 */\n 0x00\n /* \"#utility.yul\":31686:31689 */\n 0xe0\n /* \"#utility.yul\":31675:31684 */\n dup3\n /* \"#utility.yul\":31671:31690 */\n add\n /* \"#utility.yul\":31663:31690 */\n swap1\n pop\n /* \"#utility.yul\":31700:31770 */\n tag_1252\n /* \"#utility.yul\":31767:31768 */\n 0x00\n /* \"#utility.yul\":31756:31765 */\n dup4\n /* \"#utility.yul\":31752:31769 */\n add\n /* \"#utility.yul\":31743:31749 */\n dup11\n /* \"#utility.yul\":31700:31770 */\n tag_904\n jump\t// in\n tag_1252:\n /* \"#utility.yul\":31780:31851 */\n tag_1253\n /* \"#utility.yul\":31847:31849 */\n 0x20\n /* \"#utility.yul\":31836:31845 */\n dup4\n /* \"#utility.yul\":31832:31850 */\n add\n /* \"#utility.yul\":31823:31829 */\n dup10\n /* \"#utility.yul\":31780:31851 */\n tag_904\n jump\t// in\n tag_1253:\n /* \"#utility.yul\":31861:31932 */\n tag_1254\n /* \"#utility.yul\":31928:31930 */\n 0x40\n /* \"#utility.yul\":31917:31926 */\n dup4\n /* \"#utility.yul\":31913:31931 */\n add\n /* \"#utility.yul\":31904:31910 */\n dup9\n /* \"#utility.yul\":31861:31932 */\n tag_904\n jump\t// in\n tag_1254:\n /* \"#utility.yul\":31942:32013 */\n tag_1255\n /* \"#utility.yul\":32009:32011 */\n 0x60\n /* \"#utility.yul\":31998:32007 */\n dup4\n /* \"#utility.yul\":31994:32012 */\n add\n /* \"#utility.yul\":31985:31991 */\n dup8\n /* \"#utility.yul\":31942:32013 */\n tag_904\n jump\t// in\n tag_1255:\n /* \"#utility.yul\":32023:32095 */\n tag_1256\n /* \"#utility.yul\":32090:32093 */\n 0x80\n /* \"#utility.yul\":32079:32088 */\n dup4\n /* \"#utility.yul\":32075:32094 */\n add\n /* \"#utility.yul\":32066:32072 */\n dup7\n /* \"#utility.yul\":32023:32095 */\n tag_908\n jump\t// in\n tag_1256:\n /* \"#utility.yul\":32105:32177 */\n tag_1257\n /* \"#utility.yul\":32172:32175 */\n 0xa0\n /* \"#utility.yul\":32161:32170 */\n dup4\n /* \"#utility.yul\":32157:32176 */\n add\n /* \"#utility.yul\":32148:32154 */\n dup6\n /* \"#utility.yul\":32105:32177 */\n tag_904\n jump\t// in\n tag_1257:\n /* \"#utility.yul\":32187:32259 */\n tag_1258\n /* \"#utility.yul\":32254:32257 */\n 0xc0\n /* \"#utility.yul\":32243:32252 */\n dup4\n /* \"#utility.yul\":32239:32258 */\n add\n /* \"#utility.yul\":32230:32236 */\n dup5\n /* \"#utility.yul\":32187:32259 */\n tag_908\n jump\t// in\n tag_1258:\n /* \"#utility.yul\":31394:32266 */\n swap9\n swap8\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":32272:32602 */\n tag_360:\n /* \"#utility.yul\":32392:32396 */\n 0x00\n /* \"#utility.yul\":32430:32432 */\n 0x40\n /* \"#utility.yul\":32419:32428 */\n dup3\n /* \"#utility.yul\":32415:32433 */\n add\n /* \"#utility.yul\":32407:32433 */\n swap1\n pop\n /* \"#utility.yul\":32443:32514 */\n tag_1260\n /* \"#utility.yul\":32511:32512 */\n 0x00\n /* \"#utility.yul\":32500:32509 */\n dup4\n /* \"#utility.yul\":32496:32513 */\n add\n /* \"#utility.yul\":32487:32493 */\n dup6\n /* \"#utility.yul\":32443:32514 */\n tag_887\n jump\t// in\n tag_1260:\n /* \"#utility.yul\":32524:32595 */\n tag_1261\n /* \"#utility.yul\":32591:32593 */\n 0x20\n /* \"#utility.yul\":32580:32589 */\n dup4\n /* \"#utility.yul\":32576:32594 */\n add\n /* \"#utility.yul\":32567:32573 */\n dup5\n /* \"#utility.yul\":32524:32595 */\n tag_904\n jump\t// in\n tag_1261:\n /* \"#utility.yul\":32272:32602 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":32608:33573 */\n tag_388:\n /* \"#utility.yul\":32881:32885 */\n 0x00\n /* \"#utility.yul\":32919:32922 */\n 0x0100\n /* \"#utility.yul\":32908:32917 */\n dup3\n /* \"#utility.yul\":32904:32923 */\n add\n /* \"#utility.yul\":32896:32923 */\n swap1\n pop\n /* \"#utility.yul\":32933:33002 */\n tag_1263\n /* \"#utility.yul\":32999:33000 */\n 0x00\n /* \"#utility.yul\":32988:32997 */\n dup4\n /* \"#utility.yul\":32984:33001 */\n add\n /* \"#utility.yul\":32975:32981 */\n dup12\n /* \"#utility.yul\":32933:33002 */\n tag_905\n jump\t// in\n tag_1263:\n /* \"#utility.yul\":33012:33082 */\n tag_1264\n /* \"#utility.yul\":33078:33080 */\n 0x20\n /* \"#utility.yul\":33067:33076 */\n dup4\n /* \"#utility.yul\":33063:33081 */\n add\n /* \"#utility.yul\":33054:33060 */\n dup11\n /* \"#utility.yul\":33012:33082 */\n tag_905\n jump\t// in\n tag_1264:\n /* \"#utility.yul\":33092:33162 */\n tag_1265\n /* \"#utility.yul\":33158:33160 */\n 0x40\n /* \"#utility.yul\":33147:33156 */\n dup4\n /* \"#utility.yul\":33143:33161 */\n add\n /* \"#utility.yul\":33134:33140 */\n dup10\n /* \"#utility.yul\":33092:33162 */\n tag_905\n jump\t// in\n tag_1265:\n /* \"#utility.yul\":33172:33242 */\n tag_1266\n /* \"#utility.yul\":33238:33240 */\n 0x60\n /* \"#utility.yul\":33227:33236 */\n dup4\n /* \"#utility.yul\":33223:33241 */\n add\n /* \"#utility.yul\":33214:33220 */\n dup9\n /* \"#utility.yul\":33172:33242 */\n tag_905\n jump\t// in\n tag_1266:\n /* \"#utility.yul\":33252:33323 */\n tag_1267\n /* \"#utility.yul\":33318:33321 */\n 0x80\n /* \"#utility.yul\":33307:33316 */\n dup4\n /* \"#utility.yul\":33303:33322 */\n add\n /* \"#utility.yul\":33294:33300 */\n dup8\n /* \"#utility.yul\":33252:33323 */\n tag_906\n jump\t// in\n tag_1267:\n /* \"#utility.yul\":33333:33404 */\n tag_1268\n /* \"#utility.yul\":33399:33402 */\n 0xa0\n /* \"#utility.yul\":33388:33397 */\n dup4\n /* \"#utility.yul\":33384:33403 */\n add\n /* \"#utility.yul\":33375:33381 */\n dup7\n /* \"#utility.yul\":33333:33404 */\n tag_905\n jump\t// in\n tag_1268:\n /* \"#utility.yul\":33414:33485 */\n tag_1269\n /* \"#utility.yul\":33480:33483 */\n 0xc0\n /* \"#utility.yul\":33469:33478 */\n dup4\n /* \"#utility.yul\":33465:33484 */\n add\n /* \"#utility.yul\":33456:33462 */\n dup6\n /* \"#utility.yul\":33414:33485 */\n tag_906\n jump\t// in\n tag_1269:\n /* \"#utility.yul\":33495:33566 */\n tag_1270\n /* \"#utility.yul\":33561:33564 */\n 0xe0\n /* \"#utility.yul\":33550:33559 */\n dup4\n /* \"#utility.yul\":33546:33565 */\n add\n /* \"#utility.yul\":33537:33543 */\n dup5\n /* \"#utility.yul\":33495:33566 */\n tag_906\n jump\t// in\n tag_1270:\n /* \"#utility.yul\":32608:33573 */\n swap10\n swap9\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":33579:33673 */\n tag_909:\n /* \"#utility.yul\":33612:33620 */\n 0x00\n /* \"#utility.yul\":33660:33665 */\n dup2\n /* \"#utility.yul\":33656:33658 */\n 0x60\n /* \"#utility.yul\":33652:33666 */\n shl\n /* \"#utility.yul\":33631:33666 */\n swap1\n pop\n /* \"#utility.yul\":33579:33673 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":33679:33773 */\n tag_910:\n /* \"#utility.yul\":33718:33725 */\n 0x00\n /* \"#utility.yul\":33747:33767 */\n tag_1273\n /* \"#utility.yul\":33761:33766 */\n dup3\n /* \"#utility.yul\":33747:33767 */\n tag_909\n jump\t// in\n tag_1273:\n /* \"#utility.yul\":33736:33767 */\n swap1\n pop\n /* \"#utility.yul\":33679:33773 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":33779:33879 */\n tag_911:\n /* \"#utility.yul\":33818:33825 */\n 0x00\n /* \"#utility.yul\":33847:33873 */\n tag_1275\n /* \"#utility.yul\":33867:33872 */\n dup3\n /* \"#utility.yul\":33847:33873 */\n tag_910\n jump\t// in\n tag_1275:\n /* \"#utility.yul\":33836:33873 */\n swap1\n pop\n /* \"#utility.yul\":33779:33879 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":33885:34085 */\n tag_912:\n /* \"#utility.yul\":34005:34078 */\n tag_1277\n /* \"#utility.yul\":34025:34077 */\n tag_1278\n /* \"#utility.yul\":34071:34076 */\n dup3\n /* \"#utility.yul\":34025:34077 */\n tag_860\n jump\t// in\n tag_1278:\n /* \"#utility.yul\":34005:34078 */\n tag_911\n jump\t// in\n tag_1277:\n /* \"#utility.yul\":34000:34003 */\n dup3\n /* \"#utility.yul\":33993:34079 */\n mstore\n /* \"#utility.yul\":33885:34085 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":34091:34187 */\n tag_913:\n /* \"#utility.yul\":34125:34133 */\n 0x00\n /* \"#utility.yul\":34174:34179 */\n dup2\n /* \"#utility.yul\":34169:34172 */\n 0xf0\n /* \"#utility.yul\":34165:34180 */\n shl\n /* \"#utility.yul\":34144:34180 */\n swap1\n pop\n /* \"#utility.yul\":34091:34187 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":34193:34287 */\n tag_914:\n /* \"#utility.yul\":34231:34238 */\n 0x00\n /* \"#utility.yul\":34260:34281 */\n tag_1281\n /* \"#utility.yul\":34275:34280 */\n dup3\n /* \"#utility.yul\":34260:34281 */\n tag_913\n jump\t// in\n tag_1281:\n /* \"#utility.yul\":34249:34281 */\n swap1\n pop\n /* \"#utility.yul\":34193:34287 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":34293:34446 */\n tag_915:\n /* \"#utility.yul\":34396:34439 */\n tag_1283\n /* \"#utility.yul\":34415:34438 */\n tag_1284\n /* \"#utility.yul\":34432:34437 */\n dup3\n /* \"#utility.yul\":34415:34438 */\n tag_866\n jump\t// in\n tag_1284:\n /* \"#utility.yul\":34396:34439 */\n tag_914\n jump\t// in\n tag_1283:\n /* \"#utility.yul\":34391:34394 */\n dup3\n /* \"#utility.yul\":34384:34440 */\n mstore\n /* \"#utility.yul\":34293:34446 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":34452:35045 */\n tag_390:\n /* \"#utility.yul\":34648:34651 */\n 0x00\n /* \"#utility.yul\":34663:34753 */\n tag_1286\n /* \"#utility.yul\":34749:34752 */\n dup3\n /* \"#utility.yul\":34740:34746 */\n dup7\n /* \"#utility.yul\":34663:34753 */\n tag_912\n jump\t// in\n tag_1286:\n /* \"#utility.yul\":34778:34780 */\n 0x14\n /* \"#utility.yul\":34773:34776 */\n dup3\n /* \"#utility.yul\":34769:34781 */\n add\n /* \"#utility.yul\":34762:34781 */\n swap2\n pop\n /* \"#utility.yul\":34791:34881 */\n tag_1287\n /* \"#utility.yul\":34877:34880 */\n dup3\n /* \"#utility.yul\":34868:34874 */\n dup6\n /* \"#utility.yul\":34791:34881 */\n tag_912\n jump\t// in\n tag_1287:\n /* \"#utility.yul\":34906:34908 */\n 0x14\n /* \"#utility.yul\":34901:34904 */\n dup3\n /* \"#utility.yul\":34897:34909 */\n add\n /* \"#utility.yul\":34890:34909 */\n swap2\n pop\n /* \"#utility.yul\":34919:34992 */\n tag_1288\n /* \"#utility.yul\":34988:34991 */\n dup3\n /* \"#utility.yul\":34979:34985 */\n dup5\n /* \"#utility.yul\":34919:34992 */\n tag_915\n jump\t// in\n tag_1288:\n /* \"#utility.yul\":35017:35018 */\n 0x02\n /* \"#utility.yul\":35012:35015 */\n dup3\n /* \"#utility.yul\":35008:35019 */\n add\n /* \"#utility.yul\":35001:35019 */\n swap2\n pop\n /* \"#utility.yul\":35036:35039 */\n dup2\n /* \"#utility.yul\":35029:35039 */\n swap1\n pop\n /* \"#utility.yul\":34452:35045 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":35051:35149 */\n tag_916:\n /* \"#utility.yul\":35102:35108 */\n 0x00\n /* \"#utility.yul\":35136:35141 */\n dup2\n /* \"#utility.yul\":35130:35142 */\n mload\n /* \"#utility.yul\":35120:35142 */\n swap1\n pop\n /* \"#utility.yul\":35051:35149 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":35155:35323 */\n tag_917:\n /* \"#utility.yul\":35238:35249 */\n 0x00\n /* \"#utility.yul\":35272:35278 */\n dup3\n /* \"#utility.yul\":35267:35270 */\n dup3\n /* \"#utility.yul\":35260:35279 */\n mstore\n /* \"#utility.yul\":35312:35316 */\n 0x20\n /* \"#utility.yul\":35307:35310 */\n dup3\n /* \"#utility.yul\":35303:35317 */\n add\n /* \"#utility.yul\":35288:35317 */\n swap1\n pop\n /* \"#utility.yul\":35155:35323 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":35329:35575 */\n tag_918:\n /* \"#utility.yul\":35410:35411 */\n 0x00\n /* \"#utility.yul\":35420:35533 */\n tag_1292:\n /* \"#utility.yul\":35434:35440 */\n dup4\n /* \"#utility.yul\":35431:35432 */\n dup2\n /* \"#utility.yul\":35428:35441 */\n lt\n /* \"#utility.yul\":35420:35533 */\n iszero\n tag_1294\n jumpi\n /* \"#utility.yul\":35519:35520 */\n dup1\n /* \"#utility.yul\":35514:35517 */\n dup3\n /* \"#utility.yul\":35510:35521 */\n add\n /* \"#utility.yul\":35504:35522 */\n mload\n /* \"#utility.yul\":35500:35501 */\n dup2\n /* \"#utility.yul\":35495:35498 */\n dup5\n /* \"#utility.yul\":35491:35502 */\n add\n /* \"#utility.yul\":35484:35523 */\n mstore\n /* \"#utility.yul\":35456:35458 */\n 0x20\n /* \"#utility.yul\":35453:35454 */\n dup2\n /* \"#utility.yul\":35449:35459 */\n add\n /* \"#utility.yul\":35444:35459 */\n swap1\n pop\n /* \"#utility.yul\":35420:35533 */\n jump(tag_1292)\n tag_1294:\n /* \"#utility.yul\":35567:35568 */\n 0x00\n /* \"#utility.yul\":35558:35564 */\n dup5\n /* \"#utility.yul\":35553:35556 */\n dup5\n /* \"#utility.yul\":35549:35565 */\n add\n /* \"#utility.yul\":35542:35569 */\n mstore\n /* \"#utility.yul\":35391:35575 */\n pop\n /* \"#utility.yul\":35329:35575 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":35581:35683 */\n tag_919:\n /* \"#utility.yul\":35622:35628 */\n 0x00\n /* \"#utility.yul\":35673:35675 */\n 0x1f\n /* \"#utility.yul\":35669:35676 */\n not\n /* \"#utility.yul\":35664:35666 */\n 0x1f\n /* \"#utility.yul\":35657:35662 */\n dup4\n /* \"#utility.yul\":35653:35667 */\n add\n /* \"#utility.yul\":35649:35677 */\n and\n /* \"#utility.yul\":35639:35677 */\n swap1\n pop\n /* \"#utility.yul\":35581:35683 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":35689:36062 */\n tag_920:\n /* \"#utility.yul\":35775:35778 */\n 0x00\n /* \"#utility.yul\":35803:35841 */\n tag_1297\n /* \"#utility.yul\":35835:35840 */\n dup3\n /* \"#utility.yul\":35803:35841 */\n tag_916\n jump\t// in\n tag_1297:\n /* \"#utility.yul\":35857:35927 */\n tag_1298\n /* \"#utility.yul\":35920:35926 */\n dup2\n /* \"#utility.yul\":35915:35918 */\n dup6\n /* \"#utility.yul\":35857:35927 */\n tag_917\n jump\t// in\n tag_1298:\n /* \"#utility.yul\":35850:35927 */\n swap4\n pop\n /* \"#utility.yul\":35936:36001 */\n tag_1299\n /* \"#utility.yul\":35994:36000 */\n dup2\n /* \"#utility.yul\":35989:35992 */\n dup6\n /* \"#utility.yul\":35982:35986 */\n 0x20\n /* \"#utility.yul\":35975:35980 */\n dup7\n /* \"#utility.yul\":35971:35987 */\n add\n /* \"#utility.yul\":35936:36001 */\n tag_918\n jump\t// in\n tag_1299:\n /* \"#utility.yul\":36026:36055 */\n tag_1300\n /* \"#utility.yul\":36048:36054 */\n dup2\n /* \"#utility.yul\":36026:36055 */\n tag_919\n jump\t// in\n tag_1300:\n /* \"#utility.yul\":36021:36024 */\n dup5\n /* \"#utility.yul\":36017:36056 */\n add\n /* \"#utility.yul\":36010:36056 */\n swap2\n pop\n /* \"#utility.yul\":35779:36062 */\n pop\n /* \"#utility.yul\":35689:36062 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":36068:36875 */\n tag_394:\n /* \"#utility.yul\":36319:36323 */\n 0x00\n /* \"#utility.yul\":36357:36360 */\n 0xa0\n /* \"#utility.yul\":36346:36355 */\n dup3\n /* \"#utility.yul\":36342:36361 */\n add\n /* \"#utility.yul\":36334:36361 */\n swap1\n pop\n /* \"#utility.yul\":36371:36442 */\n tag_1302\n /* \"#utility.yul\":36439:36440 */\n 0x00\n /* \"#utility.yul\":36428:36437 */\n dup4\n /* \"#utility.yul\":36424:36441 */\n add\n /* \"#utility.yul\":36415:36421 */\n dup9\n /* \"#utility.yul\":36371:36442 */\n tag_887\n jump\t// in\n tag_1302:\n /* \"#utility.yul\":36452:36539 */\n tag_1303\n /* \"#utility.yul\":36535:36537 */\n 0x20\n /* \"#utility.yul\":36524:36533 */\n dup4\n /* \"#utility.yul\":36520:36538 */\n add\n /* \"#utility.yul\":36511:36517 */\n dup8\n /* \"#utility.yul\":36452:36539 */\n tag_861\n jump\t// in\n tag_1303:\n /* \"#utility.yul\":36549:36636 */\n tag_1304\n /* \"#utility.yul\":36632:36634 */\n 0x40\n /* \"#utility.yul\":36621:36630 */\n dup4\n /* \"#utility.yul\":36617:36635 */\n add\n /* \"#utility.yul\":36608:36614 */\n dup7\n /* \"#utility.yul\":36549:36636 */\n tag_861\n jump\t// in\n tag_1304:\n /* \"#utility.yul\":36646:36716 */\n tag_1305\n /* \"#utility.yul\":36712:36714 */\n 0x60\n /* \"#utility.yul\":36701:36710 */\n dup4\n /* \"#utility.yul\":36697:36715 */\n add\n /* \"#utility.yul\":36688:36694 */\n dup6\n /* \"#utility.yul\":36646:36716 */\n tag_905\n jump\t// in\n tag_1305:\n /* \"#utility.yul\":36764:36773 */\n dup2\n /* \"#utility.yul\":36758:36762 */\n dup2\n /* \"#utility.yul\":36754:36774 */\n sub\n /* \"#utility.yul\":36748:36751 */\n 0x80\n /* \"#utility.yul\":36737:36746 */\n dup4\n /* \"#utility.yul\":36733:36752 */\n add\n /* \"#utility.yul\":36726:36775 */\n mstore\n /* \"#utility.yul\":36792:36868 */\n tag_1306\n /* \"#utility.yul\":36863:36867 */\n dup2\n /* \"#utility.yul\":36854:36860 */\n dup5\n /* \"#utility.yul\":36792:36868 */\n tag_920\n jump\t// in\n tag_1306:\n /* \"#utility.yul\":36784:36868 */\n swap1\n pop\n /* \"#utility.yul\":36068:36875 */\n swap7\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":36881:37028 */\n tag_921:\n /* \"#utility.yul\":36982:36993 */\n 0x00\n /* \"#utility.yul\":37019:37022 */\n dup2\n /* \"#utility.yul\":37004:37022 */\n swap1\n pop\n /* \"#utility.yul\":36881:37028 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":37034:37420 */\n tag_922:\n /* \"#utility.yul\":37138:37141 */\n 0x00\n /* \"#utility.yul\":37166:37204 */\n tag_1309\n /* \"#utility.yul\":37198:37203 */\n dup3\n /* \"#utility.yul\":37166:37204 */\n tag_916\n jump\t// in\n tag_1309:\n /* \"#utility.yul\":37220:37308 */\n tag_1310\n /* \"#utility.yul\":37301:37307 */\n dup2\n /* \"#utility.yul\":37296:37299 */\n dup6\n /* \"#utility.yul\":37220:37308 */\n tag_921\n jump\t// in\n tag_1310:\n /* \"#utility.yul\":37213:37308 */\n swap4\n pop\n /* \"#utility.yul\":37317:37382 */\n tag_1311\n /* \"#utility.yul\":37375:37381 */\n dup2\n /* \"#utility.yul\":37370:37373 */\n dup6\n /* \"#utility.yul\":37363:37367 */\n 0x20\n /* \"#utility.yul\":37356:37361 */\n dup7\n /* \"#utility.yul\":37352:37368 */\n add\n /* \"#utility.yul\":37317:37382 */\n tag_918\n jump\t// in\n tag_1311:\n /* \"#utility.yul\":37407:37413 */\n dup1\n /* \"#utility.yul\":37402:37405 */\n dup5\n /* \"#utility.yul\":37398:37414 */\n add\n /* \"#utility.yul\":37391:37414 */\n swap2\n pop\n /* \"#utility.yul\":37142:37420 */\n pop\n /* \"#utility.yul\":37034:37420 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":37426:37853 */\n tag_396:\n /* \"#utility.yul\":37602:37605 */\n 0x00\n /* \"#utility.yul\":37624:37717 */\n tag_1313\n /* \"#utility.yul\":37713:37716 */\n dup3\n /* \"#utility.yul\":37704:37710 */\n dup6\n /* \"#utility.yul\":37624:37717 */\n tag_922\n jump\t// in\n tag_1313:\n /* \"#utility.yul\":37617:37717 */\n swap2\n pop\n /* \"#utility.yul\":37734:37827 */\n tag_1314\n /* \"#utility.yul\":37823:37826 */\n dup3\n /* \"#utility.yul\":37814:37820 */\n dup5\n /* \"#utility.yul\":37734:37827 */\n tag_922\n jump\t// in\n tag_1314:\n /* \"#utility.yul\":37727:37827 */\n swap2\n pop\n /* \"#utility.yul\":37844:37847 */\n dup2\n /* \"#utility.yul\":37837:37847 */\n swap1\n pop\n /* \"#utility.yul\":37426:37853 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":37859:38053 */\n tag_403:\n /* \"#utility.yul\":37899:37903 */\n 0x00\n /* \"#utility.yul\":37919:37939 */\n tag_1316\n /* \"#utility.yul\":37937:37938 */\n dup3\n /* \"#utility.yul\":37919:37939 */\n tag_849\n jump\t// in\n tag_1316:\n /* \"#utility.yul\":37914:37939 */\n swap2\n pop\n /* \"#utility.yul\":37953:37973 */\n tag_1317\n /* \"#utility.yul\":37971:37972 */\n dup4\n /* \"#utility.yul\":37953:37973 */\n tag_849\n jump\t// in\n tag_1317:\n /* \"#utility.yul\":37948:37973 */\n swap3\n pop\n /* \"#utility.yul\":37997:37998 */\n dup3\n /* \"#utility.yul\":37994:37995 */\n dup3\n /* \"#utility.yul\":37990:37999 */\n sub\n /* \"#utility.yul\":37982:37999 */\n swap1\n pop\n /* \"#utility.yul\":38021:38022 */\n dup2\n /* \"#utility.yul\":38015:38019 */\n dup2\n /* \"#utility.yul\":38012:38023 */\n gt\n /* \"#utility.yul\":38009:38046 */\n iszero\n tag_1318\n jumpi\n /* \"#utility.yul\":38026:38044 */\n tag_1319\n tag_902\n jump\t// in\n tag_1319:\n /* \"#utility.yul\":38009:38046 */\n tag_1318:\n /* \"#utility.yul\":37859:38053 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":38059:38423 */\n tag_405:\n /* \"#utility.yul\":38196:38200 */\n 0x00\n /* \"#utility.yul\":38234:38236 */\n 0x40\n /* \"#utility.yul\":38223:38232 */\n dup3\n /* \"#utility.yul\":38219:38237 */\n add\n /* \"#utility.yul\":38211:38237 */\n swap1\n pop\n /* \"#utility.yul\":38247:38334 */\n tag_1321\n /* \"#utility.yul\":38331:38332 */\n 0x00\n /* \"#utility.yul\":38320:38329 */\n dup4\n /* \"#utility.yul\":38316:38333 */\n add\n /* \"#utility.yul\":38307:38313 */\n dup6\n /* \"#utility.yul\":38247:38334 */\n tag_890\n jump\t// in\n tag_1321:\n /* \"#utility.yul\":38344:38416 */\n tag_1322\n /* \"#utility.yul\":38412:38414 */\n 0x20\n /* \"#utility.yul\":38401:38410 */\n dup4\n /* \"#utility.yul\":38397:38415 */\n add\n /* \"#utility.yul\":38388:38394 */\n dup5\n /* \"#utility.yul\":38344:38416 */\n tag_888\n jump\t// in\n tag_1322:\n /* \"#utility.yul\":38059:38423 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":38429:38761 */\n tag_492:\n /* \"#utility.yul\":38550:38554 */\n 0x00\n /* \"#utility.yul\":38588:38590 */\n 0x40\n /* \"#utility.yul\":38577:38586 */\n dup3\n /* \"#utility.yul\":38573:38591 */\n add\n /* \"#utility.yul\":38565:38591 */\n swap1\n pop\n /* \"#utility.yul\":38601:38672 */\n tag_1324\n /* \"#utility.yul\":38669:38670 */\n 0x00\n /* \"#utility.yul\":38658:38667 */\n dup4\n /* \"#utility.yul\":38654:38671 */\n add\n /* \"#utility.yul\":38645:38651 */\n dup6\n /* \"#utility.yul\":38601:38672 */\n tag_888\n jump\t// in\n tag_1324:\n /* \"#utility.yul\":38682:38754 */\n tag_1325\n /* \"#utility.yul\":38750:38752 */\n 0x20\n /* \"#utility.yul\":38739:38748 */\n dup4\n /* \"#utility.yul\":38735:38753 */\n add\n /* \"#utility.yul\":38726:38732 */\n dup5\n /* \"#utility.yul\":38682:38754 */\n tag_888\n jump\t// in\n tag_1325:\n /* \"#utility.yul\":38429:38761 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":38767:38852 */\n tag_923:\n /* \"#utility.yul\":38812:38819 */\n 0x00\n /* \"#utility.yul\":38841:38846 */\n dup2\n /* \"#utility.yul\":38830:38846 */\n swap1\n pop\n /* \"#utility.yul\":38767:38852 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":38858:39016 */\n tag_924:\n /* \"#utility.yul\":38916:38925 */\n 0x00\n /* \"#utility.yul\":38949:39010 */\n tag_1328\n /* \"#utility.yul\":38967:39009 */\n tag_1329\n /* \"#utility.yul\":38976:39008 */\n tag_1330\n /* \"#utility.yul\":39002:39007 */\n dup5\n /* \"#utility.yul\":38976:39008 */\n tag_923\n jump\t// in\n tag_1330:\n /* \"#utility.yul\":38967:39009 */\n tag_857\n jump\t// in\n tag_1329:\n /* \"#utility.yul\":38949:39010 */\n tag_849\n jump\t// in\n tag_1328:\n /* \"#utility.yul\":38936:39010 */\n swap1\n pop\n /* \"#utility.yul\":38858:39016 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":39022:39169 */\n tag_925:\n /* \"#utility.yul\":39117:39162 */\n tag_1332\n /* \"#utility.yul\":39156:39161 */\n dup2\n /* \"#utility.yul\":39117:39162 */\n tag_924\n jump\t// in\n tag_1332:\n /* \"#utility.yul\":39112:39115 */\n dup3\n /* \"#utility.yul\":39105:39163 */\n mstore\n /* \"#utility.yul\":39022:39169 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":39175:39523 */\n tag_496:\n /* \"#utility.yul\":39304:39308 */\n 0x00\n /* \"#utility.yul\":39342:39344 */\n 0x40\n /* \"#utility.yul\":39331:39340 */\n dup3\n /* \"#utility.yul\":39327:39345 */\n add\n /* \"#utility.yul\":39319:39345 */\n swap1\n pop\n /* \"#utility.yul\":39355:39434 */\n tag_1334\n /* \"#utility.yul\":39431:39432 */\n 0x00\n /* \"#utility.yul\":39420:39429 */\n dup4\n /* \"#utility.yul\":39416:39433 */\n add\n /* \"#utility.yul\":39407:39413 */\n dup6\n /* \"#utility.yul\":39355:39434 */\n tag_925\n jump\t// in\n tag_1334:\n /* \"#utility.yul\":39444:39516 */\n tag_1335\n /* \"#utility.yul\":39512:39514 */\n 0x20\n /* \"#utility.yul\":39501:39510 */\n dup4\n /* \"#utility.yul\":39497:39515 */\n add\n /* \"#utility.yul\":39488:39494 */\n dup5\n /* \"#utility.yul\":39444:39516 */\n tag_888\n jump\t// in\n tag_1335:\n /* \"#utility.yul\":39175:39523 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":39529:39614 */\n tag_926:\n /* \"#utility.yul\":39574:39581 */\n 0x00\n /* \"#utility.yul\":39603:39608 */\n dup2\n /* \"#utility.yul\":39592:39608 */\n swap1\n pop\n /* \"#utility.yul\":39529:39614 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":39620:39721 */\n tag_927:\n /* \"#utility.yul\":39656:39663 */\n 0x00\n /* \"#utility.yul\":39696:39714 */\n 0xffffffffffffffff\n /* \"#utility.yul\":39689:39694 */\n dup3\n /* \"#utility.yul\":39685:39715 */\n and\n /* \"#utility.yul\":39674:39715 */\n swap1\n pop\n /* \"#utility.yul\":39620:39721 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":39727:39883 */\n tag_928:\n /* \"#utility.yul\":39784:39793 */\n 0x00\n /* \"#utility.yul\":39817:39877 */\n tag_1339\n /* \"#utility.yul\":39834:39876 */\n tag_1340\n /* \"#utility.yul\":39843:39875 */\n tag_1341\n /* \"#utility.yul\":39869:39874 */\n dup5\n /* \"#utility.yul\":39843:39875 */\n tag_926\n jump\t// in\n tag_1341:\n /* \"#utility.yul\":39834:39876 */\n tag_857\n jump\t// in\n tag_1340:\n /* \"#utility.yul\":39817:39877 */\n tag_927\n jump\t// in\n tag_1339:\n /* \"#utility.yul\":39804:39877 */\n swap1\n pop\n /* \"#utility.yul\":39727:39883 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":39889:40034 */\n tag_929:\n /* \"#utility.yul\":39983:40027 */\n tag_1343\n /* \"#utility.yul\":40021:40026 */\n dup2\n /* \"#utility.yul\":39983:40027 */\n tag_928\n jump\t// in\n tag_1343:\n /* \"#utility.yul\":39978:39981 */\n dup3\n /* \"#utility.yul\":39971:40028 */\n mstore\n /* \"#utility.yul\":39889:40034 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":40040:40276 */\n tag_499:\n /* \"#utility.yul\":40140:40144 */\n 0x00\n /* \"#utility.yul\":40178:40180 */\n 0x20\n /* \"#utility.yul\":40167:40176 */\n dup3\n /* \"#utility.yul\":40163:40181 */\n add\n /* \"#utility.yul\":40155:40181 */\n swap1\n pop\n /* \"#utility.yul\":40191:40269 */\n tag_1345\n /* \"#utility.yul\":40266:40267 */\n 0x00\n /* \"#utility.yul\":40255:40264 */\n dup4\n /* \"#utility.yul\":40251:40268 */\n add\n /* \"#utility.yul\":40242:40248 */\n dup5\n /* \"#utility.yul\":40191:40269 */\n tag_929\n jump\t// in\n tag_1345:\n /* \"#utility.yul\":40040:40276 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":40282:40425 */\n tag_930:\n /* \"#utility.yul\":40339:40344 */\n 0x00\n /* \"#utility.yul\":40370:40376 */\n dup2\n /* \"#utility.yul\":40364:40377 */\n mload\n /* \"#utility.yul\":40355:40377 */\n swap1\n pop\n /* \"#utility.yul\":40386:40419 */\n tag_1347\n /* \"#utility.yul\":40413:40418 */\n dup2\n /* \"#utility.yul\":40386:40419 */\n tag_874\n jump\t// in\n tag_1347:\n /* \"#utility.yul\":40282:40425 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":40431:40782 */\n tag_577:\n /* \"#utility.yul\":40501:40507 */\n 0x00\n /* \"#utility.yul\":40550:40552 */\n 0x20\n /* \"#utility.yul\":40538:40547 */\n dup3\n /* \"#utility.yul\":40529:40536 */\n dup5\n /* \"#utility.yul\":40525:40548 */\n sub\n /* \"#utility.yul\":40521:40553 */\n slt\n /* \"#utility.yul\":40518:40637 */\n iszero\n tag_1349\n jumpi\n /* \"#utility.yul\":40556:40635 */\n tag_1350\n tag_839\n jump\t// in\n tag_1350:\n /* \"#utility.yul\":40518:40637 */\n tag_1349:\n /* \"#utility.yul\":40676:40677 */\n 0x00\n /* \"#utility.yul\":40701:40765 */\n tag_1351\n /* \"#utility.yul\":40757:40764 */\n dup5\n /* \"#utility.yul\":40748:40754 */\n dup3\n /* \"#utility.yul\":40737:40746 */\n dup6\n /* \"#utility.yul\":40733:40755 */\n add\n /* \"#utility.yul\":40701:40765 */\n tag_930\n jump\t// in\n tag_1351:\n /* \"#utility.yul\":40691:40765 */\n swap2\n pop\n /* \"#utility.yul\":40647:40775 */\n pop\n /* \"#utility.yul\":40431:40782 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":40788:41207 */\n tag_581:\n /* \"#utility.yul\":40927:40931 */\n 0x00\n /* \"#utility.yul\":40965:40967 */\n 0x40\n /* \"#utility.yul\":40954:40963 */\n dup3\n /* \"#utility.yul\":40950:40968 */\n add\n /* \"#utility.yul\":40942:40968 */\n swap1\n pop\n /* \"#utility.yul\":40978:41049 */\n tag_1353\n /* \"#utility.yul\":41046:41047 */\n 0x00\n /* \"#utility.yul\":41035:41044 */\n dup4\n /* \"#utility.yul\":41031:41048 */\n add\n /* \"#utility.yul\":41022:41028 */\n dup6\n /* \"#utility.yul\":40978:41049 */\n tag_873\n jump\t// in\n tag_1353:\n /* \"#utility.yul\":41096:41105 */\n dup2\n /* \"#utility.yul\":41090:41094 */\n dup2\n /* \"#utility.yul\":41086:41106 */\n sub\n /* \"#utility.yul\":41081:41083 */\n 0x20\n /* \"#utility.yul\":41070:41079 */\n dup4\n /* \"#utility.yul\":41066:41084 */\n add\n /* \"#utility.yul\":41059:41107 */\n mstore\n /* \"#utility.yul\":41124:41200 */\n tag_1354\n /* \"#utility.yul\":41195:41199 */\n dup2\n /* \"#utility.yul\":41186:41192 */\n dup5\n /* \"#utility.yul\":41124:41200 */\n tag_920\n jump\t// in\n tag_1354:\n /* \"#utility.yul\":41116:41200 */\n swap1\n pop\n /* \"#utility.yul\":40788:41207 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":41213:41545 */\n tag_696:\n /* \"#utility.yul\":41334:41338 */\n 0x00\n /* \"#utility.yul\":41372:41374 */\n 0x40\n /* \"#utility.yul\":41361:41370 */\n dup3\n /* \"#utility.yul\":41357:41375 */\n add\n /* \"#utility.yul\":41349:41375 */\n swap1\n pop\n /* \"#utility.yul\":41385:41456 */\n tag_1356\n /* \"#utility.yul\":41453:41454 */\n 0x00\n /* \"#utility.yul\":41442:41451 */\n dup4\n /* \"#utility.yul\":41438:41455 */\n add\n /* \"#utility.yul\":41429:41435 */\n dup6\n /* \"#utility.yul\":41385:41456 */\n tag_887\n jump\t// in\n tag_1356:\n /* \"#utility.yul\":41466:41538 */\n tag_1357\n /* \"#utility.yul\":41534:41536 */\n 0x20\n /* \"#utility.yul\":41523:41532 */\n dup4\n /* \"#utility.yul\":41519:41537 */\n add\n /* \"#utility.yul\":41510:41516 */\n dup5\n /* \"#utility.yul\":41466:41538 */\n tag_887\n jump\t// in\n tag_1357:\n /* \"#utility.yul\":41213:41545 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":41551:41883 */\n tag_719:\n /* \"#utility.yul\":41672:41676 */\n 0x00\n /* \"#utility.yul\":41710:41712 */\n 0x40\n /* \"#utility.yul\":41699:41708 */\n dup3\n /* \"#utility.yul\":41695:41713 */\n add\n /* \"#utility.yul\":41687:41713 */\n swap1\n pop\n /* \"#utility.yul\":41723:41794 */\n tag_1359\n /* \"#utility.yul\":41791:41792 */\n 0x00\n /* \"#utility.yul\":41780:41789 */\n dup4\n /* \"#utility.yul\":41776:41793 */\n add\n /* \"#utility.yul\":41767:41773 */\n dup6\n /* \"#utility.yul\":41723:41794 */\n tag_887\n jump\t// in\n tag_1359:\n /* \"#utility.yul\":41804:41876 */\n tag_1360\n /* \"#utility.yul\":41872:41874 */\n 0x20\n /* \"#utility.yul\":41861:41870 */\n dup4\n /* \"#utility.yul\":41857:41875 */\n add\n /* \"#utility.yul\":41848:41854 */\n dup5\n /* \"#utility.yul\":41804:41876 */\n tag_873\n jump\t// in\n tag_1360:\n /* \"#utility.yul\":41551:41883 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":41889:42069 */\n tag_749:\n /* \"#utility.yul\":41937:42014 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":41934:41935 */\n 0x00\n /* \"#utility.yul\":41927:42015 */\n mstore\n /* \"#utility.yul\":42034:42038 */\n 0x12\n /* \"#utility.yul\":42031:42032 */\n 0x04\n /* \"#utility.yul\":42024:42039 */\n mstore\n /* \"#utility.yul\":42058:42062 */\n 0x24\n /* \"#utility.yul\":42055:42056 */\n 0x00\n /* \"#utility.yul\":42048:42063 */\n revert\n /* \"#utility.yul\":42075:42151 */\n tag_931:\n /* \"#utility.yul\":42111:42118 */\n 0x00\n /* \"#utility.yul\":42140:42145 */\n dup2\n /* \"#utility.yul\":42129:42145 */\n swap1\n pop\n /* \"#utility.yul\":42075:42151 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":42157:42272 */\n tag_932:\n /* \"#utility.yul\":42242:42265 */\n tag_1364\n /* \"#utility.yul\":42259:42264 */\n dup2\n /* \"#utility.yul\":42242:42265 */\n tag_931\n jump\t// in\n tag_1364:\n /* \"#utility.yul\":42237:42240 */\n dup3\n /* \"#utility.yul\":42230:42266 */\n mstore\n /* \"#utility.yul\":42157:42272 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":42278:42606 */\n tag_778:\n /* \"#utility.yul\":42397:42401 */\n 0x00\n /* \"#utility.yul\":42435:42437 */\n 0x40\n /* \"#utility.yul\":42424:42433 */\n dup3\n /* \"#utility.yul\":42420:42438 */\n add\n /* \"#utility.yul\":42412:42438 */\n swap1\n pop\n /* \"#utility.yul\":42448:42519 */\n tag_1366\n /* \"#utility.yul\":42516:42517 */\n 0x00\n /* \"#utility.yul\":42505:42514 */\n dup4\n /* \"#utility.yul\":42501:42518 */\n add\n /* \"#utility.yul\":42492:42498 */\n dup6\n /* \"#utility.yul\":42448:42519 */\n tag_888\n jump\t// in\n tag_1366:\n /* \"#utility.yul\":42529:42599 */\n tag_1367\n /* \"#utility.yul\":42595:42597 */\n 0x20\n /* \"#utility.yul\":42584:42593 */\n dup4\n /* \"#utility.yul\":42580:42598 */\n add\n /* \"#utility.yul\":42571:42577 */\n dup5\n /* \"#utility.yul\":42529:42599 */\n tag_932\n jump\t// in\n tag_1367:\n /* \"#utility.yul\":42278:42606 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":42612:42797 */\n tag_782:\n /* \"#utility.yul\":42652:42653 */\n 0x00\n /* \"#utility.yul\":42669:42689 */\n tag_1369\n /* \"#utility.yul\":42687:42688 */\n dup3\n /* \"#utility.yul\":42669:42689 */\n tag_849\n jump\t// in\n tag_1369:\n /* \"#utility.yul\":42664:42689 */\n swap2\n pop\n /* \"#utility.yul\":42703:42723 */\n tag_1370\n /* \"#utility.yul\":42721:42722 */\n dup4\n /* \"#utility.yul\":42703:42723 */\n tag_849\n jump\t// in\n tag_1370:\n /* \"#utility.yul\":42698:42723 */\n swap3\n pop\n /* \"#utility.yul\":42742:42743 */\n dup3\n /* \"#utility.yul\":42732:42767 */\n tag_1371\n jumpi\n /* \"#utility.yul\":42747:42765 */\n tag_1372\n tag_749\n jump\t// in\n tag_1372:\n /* \"#utility.yul\":42732:42767 */\n tag_1371:\n /* \"#utility.yul\":42789:42790 */\n dup3\n /* \"#utility.yul\":42786:42787 */\n dup3\n /* \"#utility.yul\":42782:42791 */\n div\n /* \"#utility.yul\":42777:42791 */\n swap1\n pop\n /* \"#utility.yul\":42612:42797 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":42803:42983 */\n tag_814:\n /* \"#utility.yul\":42851:42928 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":42848:42849 */\n 0x00\n /* \"#utility.yul\":42841:42929 */\n mstore\n /* \"#utility.yul\":42948:42952 */\n 0x31\n /* \"#utility.yul\":42945:42946 */\n 0x04\n /* \"#utility.yul\":42938:42953 */\n mstore\n /* \"#utility.yul\":42972:42976 */\n 0x24\n /* \"#utility.yul\":42969:42970 */\n 0x00\n /* \"#utility.yul\":42962:42977 */\n revert\n stop\n\n sub_0: assembly {\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n mstore(0x40, 0xa0)\n /* \"src/LBPairBeaconProxy.sol\":757:2227 constructor(address _beaconAddress, address _tokenX, address _tokenY, uint16 _binStep, bytes memory _data) payable BeaconProxy(_beaconAddress, \"\") {... */\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_1\n swap2\n swap1\n tag_2\n jump\t// in\n tag_1:\n /* \"src/LBPairBeaconProxy.sol\":884:898 _beaconAddress */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1773:1920 constructor(address beacon, bytes memory data) payable {... */\n mload(0x40)\n dup1\n 0x20\n add\n 0x40\n mstore\n dup1\n 0x00\n dup2\n mstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1887 ERC1967Utils.upgradeBeaconToAndCall(beacon, data) */\n tag_6\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1874:1880 beacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1882:1886 data */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1873 ERC1967Utils.upgradeBeaconToAndCall */\n shl(0x20, tag_7)\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1887 ERC1967Utils.upgradeBeaconToAndCall(beacon, data) */\n 0x20\n shr\n jump\t// in\n tag_6:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1907:1913 beacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1897:1913 _beacon = beacon */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x80\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1773:1920 constructor(address beacon, bytes memory data) payable {... */\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":915:934 bool successSymbolX */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":936:960 bytes memory symbolXData */\n dup1\n /* \"src/LBPairBeaconProxy.sol\":964:971 _tokenX */\n dup6\n /* \"src/LBPairBeaconProxy.sol\":964:982 _tokenX.staticcall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBPairBeaconProxy.sol\":983:1018 abi.encodeWithSignature(\"symbol()\") */\n add(0x24, mload(0x40))\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n and(not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff), 0x95d89b4100000000000000000000000000000000000000000000000000000000)\n 0x20\n dup3\n add\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup4\n dup2\n dup4\n and\n or\n dup4\n mstore\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":964:1019 _tokenX.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n mload(0x40)\n tag_9\n swap2\n swap1\n tag_10\n jump\t// in\n tag_9:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n staticcall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_13\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_12)\n tag_13:\n 0x60\n swap2\n pop\n tag_12:\n pop\n /* \"src/LBPairBeaconProxy.sol\":914:1019 (bool successSymbolX, bytes memory symbolXData) = _tokenX.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBPairBeaconProxy.sol\":1029:1055 string memory tokenXSymbol */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1069:1080 symbolXData */\n dup2\n /* \"src/LBPairBeaconProxy.sol\":1058:1091 abi.decode(symbolXData, (string)) */\n dup1\n 0x20\n add\n swap1\n mload\n dup2\n add\n swap1\n tag_14\n swap2\n swap1\n tag_15\n jump\t// in\n tag_14:\n /* \"src/LBPairBeaconProxy.sol\":1029:1091 string memory tokenXSymbol = abi.decode(symbolXData, (string)) */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":1103:1122 bool successSymbolY */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1124:1148 bytes memory symbolYData */\n dup1\n /* \"src/LBPairBeaconProxy.sol\":1152:1159 _tokenY */\n dup8\n /* \"src/LBPairBeaconProxy.sol\":1152:1170 _tokenY.staticcall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBPairBeaconProxy.sol\":1171:1206 abi.encodeWithSignature(\"symbol()\") */\n add(0x24, mload(0x40))\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n and(not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff), 0x95d89b4100000000000000000000000000000000000000000000000000000000)\n 0x20\n dup3\n add\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup4\n dup2\n dup4\n and\n or\n dup4\n mstore\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":1152:1207 _tokenY.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n mload(0x40)\n tag_16\n swap2\n swap1\n tag_10\n jump\t// in\n tag_16:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n staticcall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_19\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_18)\n tag_19:\n 0x60\n swap2\n pop\n tag_18:\n pop\n /* \"src/LBPairBeaconProxy.sol\":1102:1207 (bool successSymbolY, bytes memory symbolYData) = _tokenY.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBPairBeaconProxy.sol\":1217:1243 string memory tokenYSymbol */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1257:1268 symbolYData */\n dup2\n /* \"src/LBPairBeaconProxy.sol\":1246:1279 abi.decode(symbolYData, (string)) */\n dup1\n 0x20\n add\n swap1\n mload\n dup2\n add\n swap1\n tag_20\n swap2\n swap1\n tag_15\n jump\t// in\n tag_20:\n /* \"src/LBPairBeaconProxy.sol\":1217:1279 string memory tokenYSymbol = abi.decode(symbolYData, (string)) */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":1298:1312 successSymbolX */\n dup6\n /* \"src/LBPairBeaconProxy.sol\":1298:1330 successSymbolX && successSymbolY */\n dup1\n iszero\n tag_21\n jumpi\n pop\n /* \"src/LBPairBeaconProxy.sol\":1316:1330 successSymbolY */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":1298:1330 successSymbolX && successSymbolY */\n tag_21:\n /* \"src/LBPairBeaconProxy.sol\":1290:1382 require(successSymbolX && successSymbolY , \"LBPairBeaconProxy: Failed to get token symbols\") */\n tag_22\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_23\n swap1\n tag_24\n jump\t// in\n tag_23:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_22:\n /* \"src/LBPairBeaconProxy.sol\":1457:1466 bytes(\"\") */\n mload(0x40)\n dup1\n 0x20\n add\n 0x40\n mstore\n dup1\n 0x00\n dup2\n mstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1447:1467 keccak256(bytes(\"\")) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1429:1441 tokenXSymbol */\n dup5\n /* \"src/LBPairBeaconProxy.sol\":1413:1443 keccak256(bytes(tokenXSymbol)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1413:1467 keccak256(bytes(tokenXSymbol)) != keccak256(bytes(\"\")) */\n eq\n iszero\n /* \"src/LBPairBeaconProxy.sol\":1413:1537 keccak256(bytes(tokenXSymbol)) != keccak256(bytes(\"\")) &&... */\n dup1\n iszero\n tag_25\n jumpi\n pop\n /* \"src/LBPairBeaconProxy.sol\":1527:1536 bytes(\"\") */\n mload(0x40)\n dup1\n 0x20\n add\n 0x40\n mstore\n dup1\n 0x00\n dup2\n mstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1517:1537 keccak256(bytes(\"\")) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1499:1511 tokenYSymbol */\n dup2\n /* \"src/LBPairBeaconProxy.sol\":1483:1513 keccak256(bytes(tokenYSymbol)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1483:1537 keccak256(bytes(tokenYSymbol)) != keccak256(bytes(\"\")) */\n eq\n iszero\n /* \"src/LBPairBeaconProxy.sol\":1413:1537 keccak256(bytes(tokenXSymbol)) != keccak256(bytes(\"\")) &&... */\n tag_25:\n /* \"src/LBPairBeaconProxy.sol\":1392:1603 require(... */\n tag_26\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_27\n swap1\n tag_28\n jump\t// in\n tag_27:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_26:\n /* \"src/LBPairBeaconProxy.sol\":1664:1671 _tokenX */\n dup10\n /* \"src/LBPairBeaconProxy.sol\":1614:1655 StorageSlot.getAddressSlot(_SLOT_TOKEN_X) */\n tag_29\n /* \"src/LBPairUnstructuredStorage.sol\":142:208 0x3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec31 */\n 0x3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec31\n /* \"src/LBPairBeaconProxy.sol\":1641:1654 _SLOT_TOKEN_X */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1614:1640 StorageSlot.getAddressSlot */\n shl(0x20, tag_30)\n /* \"src/LBPairBeaconProxy.sol\":1614:1655 StorageSlot.getAddressSlot(_SLOT_TOKEN_X) */\n 0x20\n shr\n jump\t// in\n tag_29:\n /* \"src/LBPairBeaconProxy.sol\":1614:1661 StorageSlot.getAddressSlot(_SLOT_TOKEN_X).value */\n 0x00\n add\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1614:1671 StorageSlot.getAddressSlot(_SLOT_TOKEN_X).value = _tokenX */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1731:1738 _tokenY */\n dup9\n /* \"src/LBPairBeaconProxy.sol\":1681:1722 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y) */\n tag_31\n /* \"src/LBPairUnstructuredStorage.sol\":341:407 0x7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264 */\n 0x7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264\n /* \"src/LBPairBeaconProxy.sol\":1708:1721 _SLOT_TOKEN_Y */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1681:1707 StorageSlot.getAddressSlot */\n shl(0x20, tag_30)\n /* \"src/LBPairBeaconProxy.sol\":1681:1722 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y) */\n 0x20\n shr\n jump\t// in\n tag_31:\n /* \"src/LBPairBeaconProxy.sol\":1681:1728 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y).value */\n 0x00\n add\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1681:1738 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y).value = _tokenY */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1799:1807 _binStep */\n dup8\n /* \"src/LBPairBeaconProxy.sol\":1748:1807 StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value = _binStep */\n 0xffff\n and\n /* \"src/LBPairBeaconProxy.sol\":1748:1790 StorageSlot.getUint256Slot(_SLOT_BIN_STEP) */\n tag_32\n /* \"src/LBPairUnstructuredStorage.sol\":541:607 0xff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782 */\n 0xff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782\n /* \"src/LBPairBeaconProxy.sol\":1775:1789 _SLOT_BIN_STEP */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1748:1774 StorageSlot.getUint256Slot */\n shl(0x20, tag_33)\n /* \"src/LBPairBeaconProxy.sol\":1748:1790 StorageSlot.getUint256Slot(_SLOT_BIN_STEP) */\n 0x20\n shr\n jump\t// in\n tag_32:\n /* \"src/LBPairBeaconProxy.sol\":1748:1796 StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value */\n 0x00\n add\n /* \"src/LBPairBeaconProxy.sol\":1748:1807 StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value = _binStep */\n dup2\n swap1\n sstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1817:1841 string memory binStepStr */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1844:1869 _binStep.uint16ToString() */\n tag_34\n /* \"src/LBPairBeaconProxy.sol\":1844:1852 _binStep */\n dup10\n /* \"src/LBPairBeaconProxy.sol\":1844:1867 _binStep.uint16ToString */\n 0xffff\n and\n shl(0x20, tag_35)\n /* \"src/LBPairBeaconProxy.sol\":1844:1869 _binStep.uint16ToString() */\n 0x20\n shr\n jump\t// in\n tag_34:\n /* \"src/LBPairBeaconProxy.sol\":1817:1869 string memory binStepStr = _binStep.uint16ToString() */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":1954:1966 tokenXSymbol */\n dup5\n /* \"src/LBPairBeaconProxy.sol\":1973:1985 tokenYSymbol */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":1992:2002 binStepStr */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":1932:2003 string.concat(\"LBT_\", tokenXSymbol, \"/\", tokenYSymbol, \"/\", binStepStr) */\n add(0x20, mload(0x40))\n tag_36\n swap4\n swap3\n swap2\n swap1\n tag_37\n jump\t// in\n tag_36:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"src/LBPairBeaconProxy.sol\":1879:1923 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL) */\n tag_38\n /* \"src/LBPairUnstructuredStorage.sol\":745:811 0x64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f */\n 0x64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f\n /* \"src/LBPairBeaconProxy.sol\":1905:1922 _SLOT_PAIR_SYMBOL */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1879:1904 StorageSlot.getStringSlot */\n shl(0x20, tag_39)\n /* \"src/LBPairBeaconProxy.sol\":1879:1923 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL) */\n 0x20\n shr\n jump\t// in\n tag_38:\n /* \"src/LBPairBeaconProxy.sol\":1879:1929 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL).value */\n 0x00\n add\n /* \"src/LBPairBeaconProxy.sol\":1879:2003 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL).value = string.concat(\"LBT_\", tokenXSymbol, \"/\", tokenYSymbol, \"/\", binStepStr) */\n swap1\n dup2\n tag_40\n swap2\n swap1\n tag_41\n jump\t// in\n tag_40:\n pop\n /* \"src/LBPairBeaconProxy.sol\":2103:2115 tokenXSymbol */\n dup5\n /* \"src/LBPairBeaconProxy.sol\":2122:2134 tokenYSymbol */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":2140:2150 binStepStr */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":2064:2151 string.concat(\"Liquidity Book Token \", tokenXSymbol, \"/\", tokenYSymbol,\"/\", binStepStr) */\n add(0x20, mload(0x40))\n tag_42\n swap4\n swap3\n swap2\n swap1\n tag_43\n jump\t// in\n tag_42:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"src/LBPairBeaconProxy.sol\":2013:2055 StorageSlot.getStringSlot(_SLOT_PAIR_NAME) */\n tag_44\n /* \"src/LBPairUnstructuredStorage.sol\":955:1021 0xd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d84 */\n 0xd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d84\n /* \"src/LBPairBeaconProxy.sol\":2039:2054 _SLOT_PAIR_NAME */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":2013:2038 StorageSlot.getStringSlot */\n shl(0x20, tag_39)\n /* \"src/LBPairBeaconProxy.sol\":2013:2055 StorageSlot.getStringSlot(_SLOT_PAIR_NAME) */\n 0x20\n shr\n jump\t// in\n tag_44:\n /* \"src/LBPairBeaconProxy.sol\":2013:2061 StorageSlot.getStringSlot(_SLOT_PAIR_NAME).value */\n 0x00\n add\n /* \"src/LBPairBeaconProxy.sol\":2013:2151 StorageSlot.getStringSlot(_SLOT_PAIR_NAME).value = string.concat(\"Liquidity Book Token \", tokenXSymbol, \"/\", tokenYSymbol,\"/\", binStepStr) */\n swap1\n dup2\n tag_45\n swap2\n swap1\n tag_41\n jump\t// in\n tag_45:\n pop\n /* \"src/LBPairBeaconProxy.sol\":2162:2220 ERC1967Utils.upgradeBeaconToAndCall(_beaconAddress, _data) */\n tag_46\n /* \"src/LBPairBeaconProxy.sol\":2198:2212 _beaconAddress */\n dup13\n /* \"src/LBPairBeaconProxy.sol\":2214:2219 _data */\n dup10\n /* \"src/LBPairBeaconProxy.sol\":2162:2197 ERC1967Utils.upgradeBeaconToAndCall */\n shl(0x20, tag_7)\n /* \"src/LBPairBeaconProxy.sol\":2162:2220 ERC1967Utils.upgradeBeaconToAndCall(_beaconAddress, _data) */\n 0x20\n shr\n jump\t// in\n tag_46:\n /* \"src/LBPairBeaconProxy.sol\":904:2227 {... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":757:2227 constructor(address _beaconAddress, address _tokenX, address _tokenY, uint16 _binStep, bytes memory _data) payable BeaconProxy(_beaconAddress, \"\") {... */\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n jump(tag_47)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5897:6230 function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {... */\n tag_7:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:6007 _setBeacon(newBeacon) */\n tag_49\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5997:6006 newBeacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:5996 _setBeacon */\n shl(0x20, tag_50)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:6007 _setBeacon(newBeacon) */\n 0x20\n shr\n jump\t// in\n tag_49:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6037:6046 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6022:6047 BeaconUpgraded(newBeacon) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6076:6077 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6066 data */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6073 data.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6077 data.length > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\n iszero\n tag_51\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6164 Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data) */\n tag_52\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6130:6139 newBeacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6122:6155 IBeacon(newBeacon).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6122:6157 IBeacon(newBeacon).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_54\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_54:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_55\n swap2\n swap1\n tag_56\n jump\t// in\n tag_55:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6159:6163 data */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6121 Address.functionDelegateCall */\n shl(0x20, tag_57)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6164 Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data) */\n 0x20\n shr\n jump\t// in\n tag_52:\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\n jump(tag_58)\n tag_51:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6213 _checkNonPayable() */\n tag_59\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6211 _checkNonPayable */\n shl(0x20, tag_60)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6213 _checkNonPayable() */\n 0x20\n shr\n jump\t// in\n tag_59:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\n tag_58:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5897:6230 function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {... */\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1685:1875 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\n tag_30:\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1746:1767 AddressSlot storage r */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1855:1859 slot */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1845:1859 r.slot := slot */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1685:1875 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2549:2739 function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {... */\n tag_33:\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2610:2631 Uint256Slot storage r */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2719:2723 slot */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2709:2723 r.slot := slot */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2549:2739 function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/StringUtils.sol\":89:606 function uint16ToString(uint16 value) internal pure returns (string memory) {... */\n tag_35:\n /* \"src/libraries/StringUtils.sol\":150:163 string memory */\n 0x60\n /* \"src/libraries/StringUtils.sol\":188:189 0 */\n 0x00\n /* \"src/libraries/StringUtils.sol\":179:184 value */\n dup3\n /* \"src/libraries/StringUtils.sol\":179:189 value == 0 */\n 0xffff\n and\n sub\n /* \"src/libraries/StringUtils.sol\":175:226 if (value == 0) {... */\n tag_64\n jumpi\n /* \"src/libraries/StringUtils.sol\":205:215 return \"0\" */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x01\n dup2\n mstore\n 0x20\n add\n 0x3000000000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n swap1\n pop\n jump(tag_63)\n /* \"src/libraries/StringUtils.sol\":175:226 if (value == 0) {... */\n tag_64:\n /* \"src/libraries/StringUtils.sol\":235:246 uint16 temp */\n 0x00\n /* \"src/libraries/StringUtils.sol\":249:254 value */\n dup3\n /* \"src/libraries/StringUtils.sol\":235:254 uint16 temp = value */\n swap1\n pop\n /* \"src/libraries/StringUtils.sol\":264:277 uint16 digits */\n 0x00\n /* \"src/libraries/StringUtils.sol\":287:362 while (temp != 0) {... */\n tag_65:\n /* \"src/libraries/StringUtils.sol\":302:303 0 */\n 0x00\n /* \"src/libraries/StringUtils.sol\":294:298 temp */\n dup3\n /* \"src/libraries/StringUtils.sol\":294:303 temp != 0 */\n 0xffff\n and\n eq\n /* \"src/libraries/StringUtils.sol\":287:362 while (temp != 0) {... */\n tag_66\n jumpi\n /* \"src/libraries/StringUtils.sol\":319:327 digits++ */\n dup1\n dup1\n tag_67\n swap1\n tag_68\n jump\t// in\n tag_67:\n swap2\n pop\n pop\n /* \"src/libraries/StringUtils.sol\":349:351 10 */\n 0x0a\n /* \"src/libraries/StringUtils.sol\":341:351 temp /= 10 */\n dup3\n tag_69\n swap2\n swap1\n tag_70\n jump\t// in\n tag_69:\n swap2\n pop\n /* \"src/libraries/StringUtils.sol\":287:362 while (temp != 0) {... */\n jump(tag_65)\n tag_66:\n /* \"src/libraries/StringUtils.sol\":371:390 bytes memory buffer */\n 0x00\n /* \"src/libraries/StringUtils.sol\":403:409 digits */\n dup2\n /* \"src/libraries/StringUtils.sol\":393:410 new bytes(digits) */\n 0xffff\n and\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_71\n jumpi\n tag_72\n tag_73\n jump\t// in\n tag_72:\n tag_71:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x1f\n add\n not(0x1f)\n and\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_74\n jumpi\n dup2\n 0x20\n add\n 0x01\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_74:\n pop\n /* \"src/libraries/StringUtils.sol\":371:410 bytes memory buffer = new bytes(digits) */\n swap1\n pop\n /* \"src/libraries/StringUtils.sol\":420:569 while (value != 0) {... */\n tag_75:\n /* \"src/libraries/StringUtils.sol\":436:437 0 */\n 0x00\n /* \"src/libraries/StringUtils.sol\":427:432 value */\n dup6\n /* \"src/libraries/StringUtils.sol\":427:437 value != 0 */\n 0xffff\n and\n eq\n /* \"src/libraries/StringUtils.sol\":420:569 while (value != 0) {... */\n tag_76\n jumpi\n /* \"src/libraries/StringUtils.sol\":463:464 1 */\n 0x01\n /* \"src/libraries/StringUtils.sol\":453:464 digits -= 1 */\n dup3\n tag_77\n swap2\n swap1\n tag_78\n jump\t// in\n tag_77:\n swap2\n pop\n /* \"src/libraries/StringUtils.sol\":528:530 10 */\n 0x0a\n /* \"src/libraries/StringUtils.sol\":520:525 value */\n dup6\n /* \"src/libraries/StringUtils.sol\":520:530 value % 10 */\n tag_79\n swap2\n swap1\n tag_80\n jump\t// in\n tag_79:\n /* \"src/libraries/StringUtils.sol\":508:510 48 */\n 0x30\n /* \"src/libraries/StringUtils.sol\":508:531 48 + uint16(value % 10) */\n tag_81\n swap2\n swap1\n tag_82\n jump\t// in\n tag_81:\n /* \"src/libraries/StringUtils.sol\":495:533 bytes1(uint8(48 + uint16(value % 10))) */\n 0xf8\n shl\n /* \"src/libraries/StringUtils.sol\":478:484 buffer */\n dup2\n /* \"src/libraries/StringUtils.sol\":485:491 digits */\n dup4\n /* \"src/libraries/StringUtils.sol\":478:492 buffer[digits] */\n 0xffff\n and\n dup2\n mload\n dup2\n lt\n tag_83\n jumpi\n tag_84\n tag_85\n jump\t// in\n tag_84:\n tag_83:\n 0x20\n add\n add\n /* \"src/libraries/StringUtils.sol\":478:533 buffer[digits] = bytes1(uint8(48 + uint16(value % 10))) */\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n swap1\n dup2\n 0x00\n byte\n swap1\n mstore8\n pop\n /* \"src/libraries/StringUtils.sol\":556:558 10 */\n 0x0a\n /* \"src/libraries/StringUtils.sol\":547:558 value /= 10 */\n dup6\n tag_86\n swap2\n swap1\n tag_70\n jump\t// in\n tag_86:\n swap5\n pop\n /* \"src/libraries/StringUtils.sol\":420:569 while (value != 0) {... */\n jump(tag_75)\n tag_76:\n /* \"src/libraries/StringUtils.sol\":592:598 buffer */\n dup1\n /* \"src/libraries/StringUtils.sol\":578:599 return string(buffer) */\n swap4\n pop\n pop\n pop\n pop\n /* \"src/libraries/StringUtils.sol\":89:606 function uint16ToString(uint16 value) internal pure returns (string memory) {... */\n tag_63:\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2836:3024 function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {... */\n tag_39:\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2896:2916 StringSlot storage r */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":3004:3008 slot */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2994:3008 r.slot := slot */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2836:3024 function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4935:5372 function _setBeacon(address newBeacon) private {... */\n tag_50:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5021:5022 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5005 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5017 newBeacon.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5022 newBeacon.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4992:5087 if (newBeacon.code.length == 0) {... */\n tag_89\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5066:5075 newBeacon */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5045:5076 ERC1967InvalidBeacon(newBeacon) */\n mload(0x40)\n 0x64ced0ec00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_90\n swap2\n swap1\n tag_91\n jump\t// in\n tag_90:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4992:5087 if (newBeacon.code.length == 0) {... */\n tag_89:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5145:5154 newBeacon */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5136 StorageSlot.getAddressSlot(BEACON_SLOT) */\n tag_92\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4601:4667 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50 */\n 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5124:5135 BEACON_SLOT */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5123 StorageSlot.getAddressSlot */\n shl(0x20, tag_30)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5136 StorageSlot.getAddressSlot(BEACON_SLOT) */\n 0x20\n shr\n jump\t// in\n tag_92:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5142 StorageSlot.getAddressSlot(BEACON_SLOT).value */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5154 StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5165:5193 address beaconImplementation */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5204:5213 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5196:5229 IBeacon(newBeacon).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5196:5231 IBeacon(newBeacon).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_94\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_94:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_95\n swap2\n swap1\n tag_56\n jump\t// in\n tag_95:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5165:5231 address beaconImplementation = IBeacon(newBeacon).implementation() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5281:5282 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5265 beaconImplementation */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5277 beaconImplementation.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5282 beaconImplementation.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5241:5366 if (beaconImplementation.code.length == 0) {... */\n tag_96\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5334:5354 beaconImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5305:5355 ERC1967InvalidImplementation(beaconImplementation) */\n mload(0x40)\n 0x4c9c8ce300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_97\n swap2\n swap1\n tag_91\n jump\t// in\n tag_97:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5241:5366 if (beaconImplementation.code.length == 0) {... */\n tag_96:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4982:5372 {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4935:5372 function _setBeacon(address newBeacon) private {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\n tag_57:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4189:4201 bytes memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4214:4226 bool success */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4228:4251 bytes memory returndata */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4261 target */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4274 target.delegatecall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4275:4279 data */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4280 target.delegatecall(data) */\n mload(0x40)\n tag_99\n swap2\n swap1\n tag_10\n jump\t// in\n tag_99:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n delegatecall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_102\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_101)\n tag_102:\n 0x60\n swap2\n pop\n tag_101:\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4213:4280 (bool success, bytes memory returndata) = target.delegatecall(data) */\n swap2\n pop\n swap2\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n tag_103\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4324:4330 target */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4332:4339 success */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4341:4351 returndata */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4323 verifyCallResultFromTarget */\n shl(0x20, tag_104)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n 0x20\n shr\n jump\t// in\n tag_103:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4290:4352 return verifyCallResultFromTarget(target, success, returndata) */\n swap3\n pop\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6419:6541 function _checkNonPayable() private {... */\n tag_60:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6481:6482 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6469:6478 msg.value */\n callvalue\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6469:6482 msg.value > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6465:6535 if (msg.value > 0) {... */\n iszero\n tag_106\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6505:6524 ERC1967NonPayable() */\n mload(0x40)\n 0xb398979f00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6465:6535 if (msg.value > 0) {... */\n tag_106:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6419:6541 function _checkNonPayable() private {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\n tag_104:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4769:4781 bytes memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4798:4805 success */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n tag_108\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n tag_109\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4829:4839 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4828 _revert */\n shl(0x20, tag_110)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n 0x20\n shr\n jump\t// in\n tag_109:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n jump(tag_111)\n tag_108:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5066:5067 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5055 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5062 returndata.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5067 returndata.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\n dup1\n iszero\n tag_112\n jumpi\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5093:5094 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5077 target */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5089 target.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5094 target.code.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\n tag_112:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\n iszero\n tag_113\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5138:5144 target */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5121:5145 AddressEmptyCode(target) */\n mload(0x40)\n 0x9996b31500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_114\n swap2\n swap1\n tag_91\n jump\t// in\n tag_114:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\n tag_113:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5180:5190 returndata */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5173:5190 return returndata */\n swap1\n pop\n jump(tag_107)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n tag_111:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\n tag_107:\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5743:6259 function _revert(bytes memory returndata) private pure {... */\n tag_110:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5894:5895 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5884 returndata */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5891 returndata.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5895 returndata.length > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\n iszero\n tag_116\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6102:6112 returndata */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6096:6113 mload(returndata) */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6158:6173 returndata_size */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6145:6155 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6141:6143 32 */\n 0x20\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6137:6156 add(32, returndata) */\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6130:6174 revert(add(32, returndata), returndata_size) */\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\n tag_116:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6225:6242 FailedInnerCall() */\n mload(0x40)\n 0x1425ea4200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"#utility.yul\":7:82 */\n tag_118:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_119:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\n tag_120:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:460 */\n tag_121:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\n tag_122:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_181\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_121\n jump\t// in\n tag_181:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\n tag_123:\n /* \"#utility.yul\":641:665 */\n tag_183\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_122\n jump\t// in\n tag_183:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_184\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\n tag_184:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:839 */\n tag_124:\n /* \"#utility.yul\":753:758 */\n 0x00\n /* \"#utility.yul\":784:790 */\n dup2\n /* \"#utility.yul\":778:791 */\n mload\n /* \"#utility.yul\":769:791 */\n swap1\n pop\n /* \"#utility.yul\":800:833 */\n tag_186\n /* \"#utility.yul\":827:832 */\n dup2\n /* \"#utility.yul\":800:833 */\n tag_123\n jump\t// in\n tag_186:\n /* \"#utility.yul\":696:839 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":845:934 */\n tag_125:\n /* \"#utility.yul\":881:888 */\n 0x00\n /* \"#utility.yul\":921:927 */\n 0xffff\n /* \"#utility.yul\":914:919 */\n dup3\n /* \"#utility.yul\":910:928 */\n and\n /* \"#utility.yul\":899:928 */\n swap1\n pop\n /* \"#utility.yul\":845:934 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":940:1060 */\n tag_126:\n /* \"#utility.yul\":1012:1035 */\n tag_189\n /* \"#utility.yul\":1029:1034 */\n dup2\n /* \"#utility.yul\":1012:1035 */\n tag_125\n jump\t// in\n tag_189:\n /* \"#utility.yul\":1005:1010 */\n dup2\n /* \"#utility.yul\":1002:1036 */\n eq\n /* \"#utility.yul\":992:1054 */\n tag_190\n jumpi\n /* \"#utility.yul\":1050:1051 */\n 0x00\n /* \"#utility.yul\":1047:1048 */\n dup1\n /* \"#utility.yul\":1040:1052 */\n revert\n /* \"#utility.yul\":992:1054 */\n tag_190:\n /* \"#utility.yul\":940:1060 */\n pop\n jump\t// out\n /* \"#utility.yul\":1066:1207 */\n tag_127:\n /* \"#utility.yul\":1122:1127 */\n 0x00\n /* \"#utility.yul\":1153:1159 */\n dup2\n /* \"#utility.yul\":1147:1160 */\n mload\n /* \"#utility.yul\":1138:1160 */\n swap1\n pop\n /* \"#utility.yul\":1169:1201 */\n tag_192\n /* \"#utility.yul\":1195:1200 */\n dup2\n /* \"#utility.yul\":1169:1201 */\n tag_126\n jump\t// in\n tag_192:\n /* \"#utility.yul\":1066:1207 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1213:1330 */\n tag_128:\n /* \"#utility.yul\":1322:1323 */\n 0x00\n /* \"#utility.yul\":1319:1320 */\n dup1\n /* \"#utility.yul\":1312:1324 */\n revert\n /* \"#utility.yul\":1336:1453 */\n tag_129:\n /* \"#utility.yul\":1445:1446 */\n 0x00\n /* \"#utility.yul\":1442:1443 */\n dup1\n /* \"#utility.yul\":1435:1447 */\n revert\n /* \"#utility.yul\":1459:1561 */\n tag_130:\n /* \"#utility.yul\":1500:1506 */\n 0x00\n /* \"#utility.yul\":1551:1553 */\n 0x1f\n /* \"#utility.yul\":1547:1554 */\n not\n /* \"#utility.yul\":1542:1544 */\n 0x1f\n /* \"#utility.yul\":1535:1540 */\n dup4\n /* \"#utility.yul\":1531:1545 */\n add\n /* \"#utility.yul\":1527:1555 */\n and\n /* \"#utility.yul\":1517:1555 */\n swap1\n pop\n /* \"#utility.yul\":1459:1561 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1567:1747 */\n tag_73:\n /* \"#utility.yul\":1615:1692 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1612:1613 */\n 0x00\n /* \"#utility.yul\":1605:1693 */\n mstore\n /* \"#utility.yul\":1712:1716 */\n 0x41\n /* \"#utility.yul\":1709:1710 */\n 0x04\n /* \"#utility.yul\":1702:1717 */\n mstore\n /* \"#utility.yul\":1736:1740 */\n 0x24\n /* \"#utility.yul\":1733:1734 */\n 0x00\n /* \"#utility.yul\":1726:1741 */\n revert\n /* \"#utility.yul\":1753:2034 */\n tag_131:\n /* \"#utility.yul\":1836:1863 */\n tag_198\n /* \"#utility.yul\":1858:1862 */\n dup3\n /* \"#utility.yul\":1836:1863 */\n tag_130\n jump\t// in\n tag_198:\n /* \"#utility.yul\":1828:1834 */\n dup2\n /* \"#utility.yul\":1824:1864 */\n add\n /* \"#utility.yul\":1966:1972 */\n dup2\n /* \"#utility.yul\":1954:1964 */\n dup2\n /* \"#utility.yul\":1951:1973 */\n lt\n /* \"#utility.yul\":1930:1948 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1918:1928 */\n dup3\n /* \"#utility.yul\":1915:1949 */\n gt\n /* \"#utility.yul\":1912:1974 */\n or\n /* \"#utility.yul\":1909:1997 */\n iszero\n tag_199\n jumpi\n /* \"#utility.yul\":1977:1995 */\n tag_200\n tag_73\n jump\t// in\n tag_200:\n /* \"#utility.yul\":1909:1997 */\n tag_199:\n /* \"#utility.yul\":2017:2027 */\n dup1\n /* \"#utility.yul\":2013:2015 */\n 0x40\n /* \"#utility.yul\":2006:2028 */\n mstore\n /* \"#utility.yul\":1796:2034 */\n pop\n /* \"#utility.yul\":1753:2034 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2040:2169 */\n tag_132:\n /* \"#utility.yul\":2074:2080 */\n 0x00\n /* \"#utility.yul\":2101:2121 */\n tag_202\n tag_118\n jump\t// in\n tag_202:\n /* \"#utility.yul\":2091:2121 */\n swap1\n pop\n /* \"#utility.yul\":2130:2163 */\n tag_203\n /* \"#utility.yul\":2158:2162 */\n dup3\n /* \"#utility.yul\":2150:2156 */\n dup3\n /* \"#utility.yul\":2130:2163 */\n tag_131\n jump\t// in\n tag_203:\n /* \"#utility.yul\":2040:2169 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2175:2482 */\n tag_133:\n /* \"#utility.yul\":2236:2240 */\n 0x00\n /* \"#utility.yul\":2326:2344 */\n 0xffffffffffffffff\n /* \"#utility.yul\":2318:2324 */\n dup3\n /* \"#utility.yul\":2315:2345 */\n gt\n /* \"#utility.yul\":2312:2368 */\n iszero\n tag_205\n jumpi\n /* \"#utility.yul\":2348:2366 */\n tag_206\n tag_73\n jump\t// in\n tag_206:\n /* \"#utility.yul\":2312:2368 */\n tag_205:\n /* \"#utility.yul\":2386:2415 */\n tag_207\n /* \"#utility.yul\":2408:2414 */\n dup3\n /* \"#utility.yul\":2386:2415 */\n tag_130\n jump\t// in\n tag_207:\n /* \"#utility.yul\":2378:2415 */\n swap1\n pop\n /* \"#utility.yul\":2470:2474 */\n 0x20\n /* \"#utility.yul\":2464:2468 */\n dup2\n /* \"#utility.yul\":2460:2475 */\n add\n /* \"#utility.yul\":2452:2475 */\n swap1\n pop\n /* \"#utility.yul\":2175:2482 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2488:2734 */\n tag_134:\n /* \"#utility.yul\":2569:2570 */\n 0x00\n /* \"#utility.yul\":2579:2692 */\n tag_209:\n /* \"#utility.yul\":2593:2599 */\n dup4\n /* \"#utility.yul\":2590:2591 */\n dup2\n /* \"#utility.yul\":2587:2600 */\n lt\n /* \"#utility.yul\":2579:2692 */\n iszero\n tag_211\n jumpi\n /* \"#utility.yul\":2678:2679 */\n dup1\n /* \"#utility.yul\":2673:2676 */\n dup3\n /* \"#utility.yul\":2669:2680 */\n add\n /* \"#utility.yul\":2663:2681 */\n mload\n /* \"#utility.yul\":2659:2660 */\n dup2\n /* \"#utility.yul\":2654:2657 */\n dup5\n /* \"#utility.yul\":2650:2661 */\n add\n /* \"#utility.yul\":2643:2682 */\n mstore\n /* \"#utility.yul\":2615:2617 */\n 0x20\n /* \"#utility.yul\":2612:2613 */\n dup2\n /* \"#utility.yul\":2608:2618 */\n add\n /* \"#utility.yul\":2603:2618 */\n swap1\n pop\n /* \"#utility.yul\":2579:2692 */\n jump(tag_209)\n tag_211:\n /* \"#utility.yul\":2726:2727 */\n 0x00\n /* \"#utility.yul\":2717:2723 */\n dup5\n /* \"#utility.yul\":2712:2715 */\n dup5\n /* \"#utility.yul\":2708:2724 */\n add\n /* \"#utility.yul\":2701:2728 */\n mstore\n /* \"#utility.yul\":2550:2734 */\n pop\n /* \"#utility.yul\":2488:2734 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2740:3172 */\n tag_135:\n /* \"#utility.yul\":2828:2833 */\n 0x00\n /* \"#utility.yul\":2853:2918 */\n tag_213\n /* \"#utility.yul\":2869:2917 */\n tag_214\n /* \"#utility.yul\":2910:2916 */\n dup5\n /* \"#utility.yul\":2869:2917 */\n tag_133\n jump\t// in\n tag_214:\n /* \"#utility.yul\":2853:2918 */\n tag_132\n jump\t// in\n tag_213:\n /* \"#utility.yul\":2844:2918 */\n swap1\n pop\n /* \"#utility.yul\":2941:2947 */\n dup3\n /* \"#utility.yul\":2934:2939 */\n dup2\n /* \"#utility.yul\":2927:2948 */\n mstore\n /* \"#utility.yul\":2979:2983 */\n 0x20\n /* \"#utility.yul\":2972:2977 */\n dup2\n /* \"#utility.yul\":2968:2984 */\n add\n /* \"#utility.yul\":3017:3020 */\n dup5\n /* \"#utility.yul\":3008:3014 */\n dup5\n /* \"#utility.yul\":3003:3006 */\n dup5\n /* \"#utility.yul\":2999:3015 */\n add\n /* \"#utility.yul\":2996:3021 */\n gt\n /* \"#utility.yul\":2993:3105 */\n iszero\n tag_215\n jumpi\n /* \"#utility.yul\":3024:3103 */\n tag_216\n tag_129\n jump\t// in\n tag_216:\n /* \"#utility.yul\":2993:3105 */\n tag_215:\n /* \"#utility.yul\":3114:3166 */\n tag_217\n /* \"#utility.yul\":3159:3165 */\n dup5\n /* \"#utility.yul\":3154:3157 */\n dup3\n /* \"#utility.yul\":3149:3152 */\n dup6\n /* \"#utility.yul\":3114:3166 */\n tag_134\n jump\t// in\n tag_217:\n /* \"#utility.yul\":2834:3172 */\n pop\n /* \"#utility.yul\":2740:3172 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3191:3544 */\n tag_136:\n /* \"#utility.yul\":3257:3262 */\n 0x00\n /* \"#utility.yul\":3306:3309 */\n dup3\n /* \"#utility.yul\":3299:3303 */\n 0x1f\n /* \"#utility.yul\":3291:3297 */\n dup4\n /* \"#utility.yul\":3287:3304 */\n add\n /* \"#utility.yul\":3283:3310 */\n slt\n /* \"#utility.yul\":3273:3395 */\n tag_219\n jumpi\n /* \"#utility.yul\":3314:3393 */\n tag_220\n tag_128\n jump\t// in\n tag_220:\n /* \"#utility.yul\":3273:3395 */\n tag_219:\n /* \"#utility.yul\":3424:3430 */\n dup2\n /* \"#utility.yul\":3418:3431 */\n mload\n /* \"#utility.yul\":3449:3538 */\n tag_221\n /* \"#utility.yul\":3534:3537 */\n dup5\n /* \"#utility.yul\":3526:3532 */\n dup3\n /* \"#utility.yul\":3519:3523 */\n 0x20\n /* \"#utility.yul\":3511:3517 */\n dup7\n /* \"#utility.yul\":3507:3524 */\n add\n /* \"#utility.yul\":3449:3538 */\n tag_135\n jump\t// in\n tag_221:\n /* \"#utility.yul\":3440:3538 */\n swap2\n pop\n /* \"#utility.yul\":3263:3544 */\n pop\n /* \"#utility.yul\":3191:3544 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3550:4696 */\n tag_2:\n /* \"#utility.yul\":3664:3670 */\n 0x00\n /* \"#utility.yul\":3672:3678 */\n dup1\n /* \"#utility.yul\":3680:3686 */\n 0x00\n /* \"#utility.yul\":3688:3694 */\n dup1\n /* \"#utility.yul\":3696:3702 */\n 0x00\n /* \"#utility.yul\":3745:3748 */\n 0xa0\n /* \"#utility.yul\":3733:3742 */\n dup7\n /* \"#utility.yul\":3724:3731 */\n dup9\n /* \"#utility.yul\":3720:3743 */\n sub\n /* \"#utility.yul\":3716:3749 */\n slt\n /* \"#utility.yul\":3713:3833 */\n iszero\n tag_223\n jumpi\n /* \"#utility.yul\":3752:3831 */\n tag_224\n tag_119\n jump\t// in\n tag_224:\n /* \"#utility.yul\":3713:3833 */\n tag_223:\n /* \"#utility.yul\":3872:3873 */\n 0x00\n /* \"#utility.yul\":3897:3961 */\n tag_225\n /* \"#utility.yul\":3953:3960 */\n dup9\n /* \"#utility.yul\":3944:3950 */\n dup3\n /* \"#utility.yul\":3933:3942 */\n dup10\n /* \"#utility.yul\":3929:3951 */\n add\n /* \"#utility.yul\":3897:3961 */\n tag_124\n jump\t// in\n tag_225:\n /* \"#utility.yul\":3887:3961 */\n swap6\n pop\n /* \"#utility.yul\":3843:3971 */\n pop\n /* \"#utility.yul\":4010:4012 */\n 0x20\n /* \"#utility.yul\":4036:4100 */\n tag_226\n /* \"#utility.yul\":4092:4099 */\n dup9\n /* \"#utility.yul\":4083:4089 */\n dup3\n /* \"#utility.yul\":4072:4081 */\n dup10\n /* \"#utility.yul\":4068:4090 */\n add\n /* \"#utility.yul\":4036:4100 */\n tag_124\n jump\t// in\n tag_226:\n /* \"#utility.yul\":4026:4100 */\n swap5\n pop\n /* \"#utility.yul\":3981:4110 */\n pop\n /* \"#utility.yul\":4149:4151 */\n 0x40\n /* \"#utility.yul\":4175:4239 */\n tag_227\n /* \"#utility.yul\":4231:4238 */\n dup9\n /* \"#utility.yul\":4222:4228 */\n dup3\n /* \"#utility.yul\":4211:4220 */\n dup10\n /* \"#utility.yul\":4207:4229 */\n add\n /* \"#utility.yul\":4175:4239 */\n tag_124\n jump\t// in\n tag_227:\n /* \"#utility.yul\":4165:4239 */\n swap4\n pop\n /* \"#utility.yul\":4120:4249 */\n pop\n /* \"#utility.yul\":4288:4290 */\n 0x60\n /* \"#utility.yul\":4314:4377 */\n tag_228\n /* \"#utility.yul\":4369:4376 */\n dup9\n /* \"#utility.yul\":4360:4366 */\n dup3\n /* \"#utility.yul\":4349:4358 */\n dup10\n /* \"#utility.yul\":4345:4367 */\n add\n /* \"#utility.yul\":4314:4377 */\n tag_127\n jump\t// in\n tag_228:\n /* \"#utility.yul\":4304:4377 */\n swap3\n pop\n /* \"#utility.yul\":4259:4387 */\n pop\n /* \"#utility.yul\":4447:4450 */\n 0x80\n /* \"#utility.yul\":4436:4445 */\n dup7\n /* \"#utility.yul\":4432:4451 */\n add\n /* \"#utility.yul\":4426:4452 */\n mload\n /* \"#utility.yul\":4479:4497 */\n 0xffffffffffffffff\n /* \"#utility.yul\":4471:4477 */\n dup2\n /* \"#utility.yul\":4468:4498 */\n gt\n /* \"#utility.yul\":4465:4582 */\n iszero\n tag_229\n jumpi\n /* \"#utility.yul\":4501:4580 */\n tag_230\n tag_120\n jump\t// in\n tag_230:\n /* \"#utility.yul\":4465:4582 */\n tag_229:\n /* \"#utility.yul\":4606:4679 */\n tag_231\n /* \"#utility.yul\":4671:4678 */\n dup9\n /* \"#utility.yul\":4662:4668 */\n dup3\n /* \"#utility.yul\":4651:4660 */\n dup10\n /* \"#utility.yul\":4647:4669 */\n add\n /* \"#utility.yul\":4606:4679 */\n tag_136\n jump\t// in\n tag_231:\n /* \"#utility.yul\":4596:4679 */\n swap2\n pop\n /* \"#utility.yul\":4397:4689 */\n pop\n /* \"#utility.yul\":3550:4696 */\n swap3\n swap6\n pop\n swap3\n swap6\n swap1\n swap4\n pop\n jump\t// out\n /* \"#utility.yul\":4702:4800 */\n tag_137:\n /* \"#utility.yul\":4753:4759 */\n 0x00\n /* \"#utility.yul\":4787:4792 */\n dup2\n /* \"#utility.yul\":4781:4793 */\n mload\n /* \"#utility.yul\":4771:4793 */\n swap1\n pop\n /* \"#utility.yul\":4702:4800 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4806:4953 */\n tag_138:\n /* \"#utility.yul\":4907:4918 */\n 0x00\n /* \"#utility.yul\":4944:4947 */\n dup2\n /* \"#utility.yul\":4929:4947 */\n swap1\n pop\n /* \"#utility.yul\":4806:4953 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4959:5345 */\n tag_139:\n /* \"#utility.yul\":5063:5066 */\n 0x00\n /* \"#utility.yul\":5091:5129 */\n tag_235\n /* \"#utility.yul\":5123:5128 */\n dup3\n /* \"#utility.yul\":5091:5129 */\n tag_137\n jump\t// in\n tag_235:\n /* \"#utility.yul\":5145:5233 */\n tag_236\n /* \"#utility.yul\":5226:5232 */\n dup2\n /* \"#utility.yul\":5221:5224 */\n dup6\n /* \"#utility.yul\":5145:5233 */\n tag_138\n jump\t// in\n tag_236:\n /* \"#utility.yul\":5138:5233 */\n swap4\n pop\n /* \"#utility.yul\":5242:5307 */\n tag_237\n /* \"#utility.yul\":5300:5306 */\n dup2\n /* \"#utility.yul\":5295:5298 */\n dup6\n /* \"#utility.yul\":5288:5292 */\n 0x20\n /* \"#utility.yul\":5281:5286 */\n dup7\n /* \"#utility.yul\":5277:5293 */\n add\n /* \"#utility.yul\":5242:5307 */\n tag_134\n jump\t// in\n tag_237:\n /* \"#utility.yul\":5332:5338 */\n dup1\n /* \"#utility.yul\":5327:5330 */\n dup5\n /* \"#utility.yul\":5323:5339 */\n add\n /* \"#utility.yul\":5316:5339 */\n swap2\n pop\n /* \"#utility.yul\":5067:5345 */\n pop\n /* \"#utility.yul\":4959:5345 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5351:5622 */\n tag_10:\n /* \"#utility.yul\":5481:5484 */\n 0x00\n /* \"#utility.yul\":5503:5596 */\n tag_239\n /* \"#utility.yul\":5592:5595 */\n dup3\n /* \"#utility.yul\":5583:5589 */\n dup5\n /* \"#utility.yul\":5503:5596 */\n tag_139\n jump\t// in\n tag_239:\n /* \"#utility.yul\":5496:5596 */\n swap2\n pop\n /* \"#utility.yul\":5613:5616 */\n dup2\n /* \"#utility.yul\":5606:5616 */\n swap1\n pop\n /* \"#utility.yul\":5351:5622 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5628:5936 */\n tag_140:\n /* \"#utility.yul\":5690:5694 */\n 0x00\n /* \"#utility.yul\":5780:5798 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5772:5778 */\n dup3\n /* \"#utility.yul\":5769:5799 */\n gt\n /* \"#utility.yul\":5766:5822 */\n iszero\n tag_241\n jumpi\n /* \"#utility.yul\":5802:5820 */\n tag_242\n tag_73\n jump\t// in\n tag_242:\n /* \"#utility.yul\":5766:5822 */\n tag_241:\n /* \"#utility.yul\":5840:5869 */\n tag_243\n /* \"#utility.yul\":5862:5868 */\n dup3\n /* \"#utility.yul\":5840:5869 */\n tag_130\n jump\t// in\n tag_243:\n /* \"#utility.yul\":5832:5869 */\n swap1\n pop\n /* \"#utility.yul\":5924:5928 */\n 0x20\n /* \"#utility.yul\":5918:5922 */\n dup2\n /* \"#utility.yul\":5914:5929 */\n add\n /* \"#utility.yul\":5906:5929 */\n swap1\n pop\n /* \"#utility.yul\":5628:5936 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5942:6376 */\n tag_141:\n /* \"#utility.yul\":6031:6036 */\n 0x00\n /* \"#utility.yul\":6056:6122 */\n tag_245\n /* \"#utility.yul\":6072:6121 */\n tag_246\n /* \"#utility.yul\":6114:6120 */\n dup5\n /* \"#utility.yul\":6072:6121 */\n tag_140\n jump\t// in\n tag_246:\n /* \"#utility.yul\":6056:6122 */\n tag_132\n jump\t// in\n tag_245:\n /* \"#utility.yul\":6047:6122 */\n swap1\n pop\n /* \"#utility.yul\":6145:6151 */\n dup3\n /* \"#utility.yul\":6138:6143 */\n dup2\n /* \"#utility.yul\":6131:6152 */\n mstore\n /* \"#utility.yul\":6183:6187 */\n 0x20\n /* \"#utility.yul\":6176:6181 */\n dup2\n /* \"#utility.yul\":6172:6188 */\n add\n /* \"#utility.yul\":6221:6224 */\n dup5\n /* \"#utility.yul\":6212:6218 */\n dup5\n /* \"#utility.yul\":6207:6210 */\n dup5\n /* \"#utility.yul\":6203:6219 */\n add\n /* \"#utility.yul\":6200:6225 */\n gt\n /* \"#utility.yul\":6197:6309 */\n iszero\n tag_247\n jumpi\n /* \"#utility.yul\":6228:6307 */\n tag_248\n tag_129\n jump\t// in\n tag_248:\n /* \"#utility.yul\":6197:6309 */\n tag_247:\n /* \"#utility.yul\":6318:6370 */\n tag_249\n /* \"#utility.yul\":6363:6369 */\n dup5\n /* \"#utility.yul\":6358:6361 */\n dup3\n /* \"#utility.yul\":6353:6356 */\n dup6\n /* \"#utility.yul\":6318:6370 */\n tag_134\n jump\t// in\n tag_249:\n /* \"#utility.yul\":6037:6376 */\n pop\n /* \"#utility.yul\":5942:6376 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6396:6751 */\n tag_142:\n /* \"#utility.yul\":6463:6468 */\n 0x00\n /* \"#utility.yul\":6512:6515 */\n dup3\n /* \"#utility.yul\":6505:6509 */\n 0x1f\n /* \"#utility.yul\":6497:6503 */\n dup4\n /* \"#utility.yul\":6493:6510 */\n add\n /* \"#utility.yul\":6489:6516 */\n slt\n /* \"#utility.yul\":6479:6601 */\n tag_251\n jumpi\n /* \"#utility.yul\":6520:6599 */\n tag_252\n tag_128\n jump\t// in\n tag_252:\n /* \"#utility.yul\":6479:6601 */\n tag_251:\n /* \"#utility.yul\":6630:6636 */\n dup2\n /* \"#utility.yul\":6624:6637 */\n mload\n /* \"#utility.yul\":6655:6745 */\n tag_253\n /* \"#utility.yul\":6741:6744 */\n dup5\n /* \"#utility.yul\":6733:6739 */\n dup3\n /* \"#utility.yul\":6726:6730 */\n 0x20\n /* \"#utility.yul\":6718:6724 */\n dup7\n /* \"#utility.yul\":6714:6731 */\n add\n /* \"#utility.yul\":6655:6745 */\n tag_141\n jump\t// in\n tag_253:\n /* \"#utility.yul\":6646:6745 */\n swap2\n pop\n /* \"#utility.yul\":6469:6751 */\n pop\n /* \"#utility.yul\":6396:6751 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6757:7281 */\n tag_15:\n /* \"#utility.yul\":6837:6843 */\n 0x00\n /* \"#utility.yul\":6886:6888 */\n 0x20\n /* \"#utility.yul\":6874:6883 */\n dup3\n /* \"#utility.yul\":6865:6872 */\n dup5\n /* \"#utility.yul\":6861:6884 */\n sub\n /* \"#utility.yul\":6857:6889 */\n slt\n /* \"#utility.yul\":6854:6973 */\n iszero\n tag_255\n jumpi\n /* \"#utility.yul\":6892:6971 */\n tag_256\n tag_119\n jump\t// in\n tag_256:\n /* \"#utility.yul\":6854:6973 */\n tag_255:\n /* \"#utility.yul\":7033:7034 */\n 0x00\n /* \"#utility.yul\":7022:7031 */\n dup3\n /* \"#utility.yul\":7018:7035 */\n add\n /* \"#utility.yul\":7012:7036 */\n mload\n /* \"#utility.yul\":7063:7081 */\n 0xffffffffffffffff\n /* \"#utility.yul\":7055:7061 */\n dup2\n /* \"#utility.yul\":7052:7082 */\n gt\n /* \"#utility.yul\":7049:7166 */\n iszero\n tag_257\n jumpi\n /* \"#utility.yul\":7085:7164 */\n tag_258\n tag_120\n jump\t// in\n tag_258:\n /* \"#utility.yul\":7049:7166 */\n tag_257:\n /* \"#utility.yul\":7190:7264 */\n tag_259\n /* \"#utility.yul\":7256:7263 */\n dup5\n /* \"#utility.yul\":7247:7253 */\n dup3\n /* \"#utility.yul\":7236:7245 */\n dup6\n /* \"#utility.yul\":7232:7254 */\n add\n /* \"#utility.yul\":7190:7264 */\n tag_142\n jump\t// in\n tag_259:\n /* \"#utility.yul\":7180:7264 */\n swap2\n pop\n /* \"#utility.yul\":6983:7274 */\n pop\n /* \"#utility.yul\":6757:7281 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7287:7456 */\n tag_143:\n /* \"#utility.yul\":7371:7382 */\n 0x00\n /* \"#utility.yul\":7405:7411 */\n dup3\n /* \"#utility.yul\":7400:7403 */\n dup3\n /* \"#utility.yul\":7393:7412 */\n mstore\n /* \"#utility.yul\":7445:7449 */\n 0x20\n /* \"#utility.yul\":7440:7443 */\n dup3\n /* \"#utility.yul\":7436:7450 */\n add\n /* \"#utility.yul\":7421:7450 */\n swap1\n pop\n /* \"#utility.yul\":7287:7456 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7462:7695 */\n tag_144:\n /* \"#utility.yul\":7602:7636 */\n 0x4c4250616972426561636f6e50726f78793a204661696c656420746f20676574\n /* \"#utility.yul\":7598:7599 */\n 0x00\n /* \"#utility.yul\":7590:7596 */\n dup3\n /* \"#utility.yul\":7586:7600 */\n add\n /* \"#utility.yul\":7579:7637 */\n mstore\n /* \"#utility.yul\":7671:7687 */\n 0x20746f6b656e2073796d626f6c73000000000000000000000000000000000000\n /* \"#utility.yul\":7666:7668 */\n 0x20\n /* \"#utility.yul\":7658:7664 */\n dup3\n /* \"#utility.yul\":7654:7669 */\n add\n /* \"#utility.yul\":7647:7688 */\n mstore\n /* \"#utility.yul\":7462:7695 */\n pop\n jump\t// out\n /* \"#utility.yul\":7701:8067 */\n tag_145:\n /* \"#utility.yul\":7843:7846 */\n 0x00\n /* \"#utility.yul\":7864:7931 */\n tag_263\n /* \"#utility.yul\":7928:7930 */\n 0x2e\n /* \"#utility.yul\":7923:7926 */\n dup4\n /* \"#utility.yul\":7864:7931 */\n tag_143\n jump\t// in\n tag_263:\n /* \"#utility.yul\":7857:7931 */\n swap2\n pop\n /* \"#utility.yul\":7940:8033 */\n tag_264\n /* \"#utility.yul\":8029:8032 */\n dup3\n /* \"#utility.yul\":7940:8033 */\n tag_144\n jump\t// in\n tag_264:\n /* \"#utility.yul\":8058:8060 */\n 0x40\n /* \"#utility.yul\":8053:8056 */\n dup3\n /* \"#utility.yul\":8049:8061 */\n add\n /* \"#utility.yul\":8042:8061 */\n swap1\n pop\n /* \"#utility.yul\":7701:8067 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8073:8492 */\n tag_24:\n /* \"#utility.yul\":8239:8243 */\n 0x00\n /* \"#utility.yul\":8277:8279 */\n 0x20\n /* \"#utility.yul\":8266:8275 */\n dup3\n /* \"#utility.yul\":8262:8280 */\n add\n /* \"#utility.yul\":8254:8280 */\n swap1\n pop\n /* \"#utility.yul\":8326:8335 */\n dup2\n /* \"#utility.yul\":8320:8324 */\n dup2\n /* \"#utility.yul\":8316:8336 */\n sub\n /* \"#utility.yul\":8312:8313 */\n 0x00\n /* \"#utility.yul\":8301:8310 */\n dup4\n /* \"#utility.yul\":8297:8314 */\n add\n /* \"#utility.yul\":8290:8337 */\n mstore\n /* \"#utility.yul\":8354:8485 */\n tag_266\n /* \"#utility.yul\":8480:8484 */\n dup2\n /* \"#utility.yul\":8354:8485 */\n tag_145\n jump\t// in\n tag_266:\n /* \"#utility.yul\":8346:8485 */\n swap1\n pop\n /* \"#utility.yul\":8073:8492 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8498:8725 */\n tag_146:\n /* \"#utility.yul\":8638:8672 */\n 0x4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e\n /* \"#utility.yul\":8634:8635 */\n 0x00\n /* \"#utility.yul\":8626:8632 */\n dup3\n /* \"#utility.yul\":8622:8636 */\n add\n /* \"#utility.yul\":8615:8673 */\n mstore\n /* \"#utility.yul\":8707:8717 */\n 0x2073796d626f6c73000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":8702:8704 */\n 0x20\n /* \"#utility.yul\":8694:8700 */\n dup3\n /* \"#utility.yul\":8690:8705 */\n add\n /* \"#utility.yul\":8683:8718 */\n mstore\n /* \"#utility.yul\":8498:8725 */\n pop\n jump\t// out\n /* \"#utility.yul\":8731:9097 */\n tag_147:\n /* \"#utility.yul\":8873:8876 */\n 0x00\n /* \"#utility.yul\":8894:8961 */\n tag_269\n /* \"#utility.yul\":8958:8960 */\n 0x28\n /* \"#utility.yul\":8953:8956 */\n dup4\n /* \"#utility.yul\":8894:8961 */\n tag_143\n jump\t// in\n tag_269:\n /* \"#utility.yul\":8887:8961 */\n swap2\n pop\n /* \"#utility.yul\":8970:9063 */\n tag_270\n /* \"#utility.yul\":9059:9062 */\n dup3\n /* \"#utility.yul\":8970:9063 */\n tag_146\n jump\t// in\n tag_270:\n /* \"#utility.yul\":9088:9090 */\n 0x40\n /* \"#utility.yul\":9083:9086 */\n dup3\n /* \"#utility.yul\":9079:9091 */\n add\n /* \"#utility.yul\":9072:9091 */\n swap1\n pop\n /* \"#utility.yul\":8731:9097 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9103:9522 */\n tag_28:\n /* \"#utility.yul\":9269:9273 */\n 0x00\n /* \"#utility.yul\":9307:9309 */\n 0x20\n /* \"#utility.yul\":9296:9305 */\n dup3\n /* \"#utility.yul\":9292:9310 */\n add\n /* \"#utility.yul\":9284:9310 */\n swap1\n pop\n /* \"#utility.yul\":9356:9365 */\n dup2\n /* \"#utility.yul\":9350:9354 */\n dup2\n /* \"#utility.yul\":9346:9366 */\n sub\n /* \"#utility.yul\":9342:9343 */\n 0x00\n /* \"#utility.yul\":9331:9340 */\n dup4\n /* \"#utility.yul\":9327:9344 */\n add\n /* \"#utility.yul\":9320:9367 */\n mstore\n /* \"#utility.yul\":9384:9515 */\n tag_272\n /* \"#utility.yul\":9510:9514 */\n dup2\n /* \"#utility.yul\":9384:9515 */\n tag_147\n jump\t// in\n tag_272:\n /* \"#utility.yul\":9376:9515 */\n swap1\n pop\n /* \"#utility.yul\":9103:9522 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9528:9709 */\n tag_148:\n /* \"#utility.yul\":9696:9702 */\n 0x4c42545f00000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":9691:9694 */\n dup2\n /* \"#utility.yul\":9684:9703 */\n mstore\n /* \"#utility.yul\":9528:9709 */\n pop\n jump\t// out\n /* \"#utility.yul\":9715:9814 */\n tag_149:\n /* \"#utility.yul\":9767:9773 */\n 0x00\n /* \"#utility.yul\":9801:9806 */\n dup2\n /* \"#utility.yul\":9795:9807 */\n mload\n /* \"#utility.yul\":9785:9807 */\n swap1\n pop\n /* \"#utility.yul\":9715:9814 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9820:9968 */\n tag_150:\n /* \"#utility.yul\":9922:9933 */\n 0x00\n /* \"#utility.yul\":9959:9962 */\n dup2\n /* \"#utility.yul\":9944:9962 */\n swap1\n pop\n /* \"#utility.yul\":9820:9968 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9974:10364 */\n tag_151:\n /* \"#utility.yul\":10080:10083 */\n 0x00\n /* \"#utility.yul\":10108:10147 */\n tag_277\n /* \"#utility.yul\":10141:10146 */\n dup3\n /* \"#utility.yul\":10108:10147 */\n tag_149\n jump\t// in\n tag_277:\n /* \"#utility.yul\":10163:10252 */\n tag_278\n /* \"#utility.yul\":10245:10251 */\n dup2\n /* \"#utility.yul\":10240:10243 */\n dup6\n /* \"#utility.yul\":10163:10252 */\n tag_150\n jump\t// in\n tag_278:\n /* \"#utility.yul\":10156:10252 */\n swap4\n pop\n /* \"#utility.yul\":10261:10326 */\n tag_279\n /* \"#utility.yul\":10319:10325 */\n dup2\n /* \"#utility.yul\":10314:10317 */\n dup6\n /* \"#utility.yul\":10307:10311 */\n 0x20\n /* \"#utility.yul\":10300:10305 */\n dup7\n /* \"#utility.yul\":10296:10312 */\n add\n /* \"#utility.yul\":10261:10326 */\n tag_134\n jump\t// in\n tag_279:\n /* \"#utility.yul\":10351:10357 */\n dup1\n /* \"#utility.yul\":10346:10349 */\n dup5\n /* \"#utility.yul\":10342:10358 */\n add\n /* \"#utility.yul\":10335:10358 */\n swap2\n pop\n /* \"#utility.yul\":10084:10364 */\n pop\n /* \"#utility.yul\":9974:10364 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10370:10548 */\n tag_152:\n /* \"#utility.yul\":10538:10541 */\n 0x2f00000000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":10533:10536 */\n dup2\n /* \"#utility.yul\":10526:10542 */\n mstore\n /* \"#utility.yul\":10370:10548 */\n pop\n jump\t// out\n /* \"#utility.yul\":10554:11941 */\n tag_37:\n /* \"#utility.yul\":11052:11055 */\n 0x00\n /* \"#utility.yul\":11067:11204 */\n tag_282\n /* \"#utility.yul\":11200:11203 */\n dup3\n /* \"#utility.yul\":11067:11204 */\n tag_148\n jump\t// in\n tag_282:\n /* \"#utility.yul\":11229:11230 */\n 0x04\n /* \"#utility.yul\":11224:11227 */\n dup3\n /* \"#utility.yul\":11220:11231 */\n add\n /* \"#utility.yul\":11213:11231 */\n swap2\n pop\n /* \"#utility.yul\":11248:11343 */\n tag_283\n /* \"#utility.yul\":11339:11342 */\n dup3\n /* \"#utility.yul\":11330:11336 */\n dup7\n /* \"#utility.yul\":11248:11343 */\n tag_151\n jump\t// in\n tag_283:\n /* \"#utility.yul\":11241:11343 */\n swap2\n pop\n /* \"#utility.yul\":11353:11490 */\n tag_284\n /* \"#utility.yul\":11486:11489 */\n dup3\n /* \"#utility.yul\":11353:11490 */\n tag_152\n jump\t// in\n tag_284:\n /* \"#utility.yul\":11515:11516 */\n 0x01\n /* \"#utility.yul\":11510:11513 */\n dup3\n /* \"#utility.yul\":11506:11517 */\n add\n /* \"#utility.yul\":11499:11517 */\n swap2\n pop\n /* \"#utility.yul\":11534:11629 */\n tag_285\n /* \"#utility.yul\":11625:11628 */\n dup3\n /* \"#utility.yul\":11616:11622 */\n dup6\n /* \"#utility.yul\":11534:11629 */\n tag_151\n jump\t// in\n tag_285:\n /* \"#utility.yul\":11527:11629 */\n swap2\n pop\n /* \"#utility.yul\":11639:11776 */\n tag_286\n /* \"#utility.yul\":11772:11775 */\n dup3\n /* \"#utility.yul\":11639:11776 */\n tag_152\n jump\t// in\n tag_286:\n /* \"#utility.yul\":11801:11802 */\n 0x01\n /* \"#utility.yul\":11796:11799 */\n dup3\n /* \"#utility.yul\":11792:11803 */\n add\n /* \"#utility.yul\":11785:11803 */\n swap2\n pop\n /* \"#utility.yul\":11820:11915 */\n tag_287\n /* \"#utility.yul\":11911:11914 */\n dup3\n /* \"#utility.yul\":11902:11908 */\n dup5\n /* \"#utility.yul\":11820:11915 */\n tag_151\n jump\t// in\n tag_287:\n /* \"#utility.yul\":11813:11915 */\n swap2\n pop\n /* \"#utility.yul\":11932:11935 */\n dup2\n /* \"#utility.yul\":11925:11935 */\n swap1\n pop\n /* \"#utility.yul\":10554:11941 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11947:12127 */\n tag_153:\n /* \"#utility.yul\":11995:12072 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":11992:11993 */\n 0x00\n /* \"#utility.yul\":11985:12073 */\n mstore\n /* \"#utility.yul\":12092:12096 */\n 0x22\n /* \"#utility.yul\":12089:12090 */\n 0x04\n /* \"#utility.yul\":12082:12097 */\n mstore\n /* \"#utility.yul\":12116:12120 */\n 0x24\n /* \"#utility.yul\":12113:12114 */\n 0x00\n /* \"#utility.yul\":12106:12121 */\n revert\n /* \"#utility.yul\":12133:12453 */\n tag_154:\n /* \"#utility.yul\":12177:12183 */\n 0x00\n /* \"#utility.yul\":12214:12215 */\n 0x02\n /* \"#utility.yul\":12208:12212 */\n dup3\n /* \"#utility.yul\":12204:12216 */\n div\n /* \"#utility.yul\":12194:12216 */\n swap1\n pop\n /* \"#utility.yul\":12261:12262 */\n 0x01\n /* \"#utility.yul\":12255:12259 */\n dup3\n /* \"#utility.yul\":12251:12263 */\n and\n /* \"#utility.yul\":12282:12300 */\n dup1\n /* \"#utility.yul\":12272:12353 */\n tag_290\n jumpi\n /* \"#utility.yul\":12338:12342 */\n 0x7f\n /* \"#utility.yul\":12330:12336 */\n dup3\n /* \"#utility.yul\":12326:12343 */\n and\n /* \"#utility.yul\":12316:12343 */\n swap2\n pop\n /* \"#utility.yul\":12272:12353 */\n tag_290:\n /* \"#utility.yul\":12400:12402 */\n 0x20\n /* \"#utility.yul\":12392:12398 */\n dup3\n /* \"#utility.yul\":12389:12403 */\n lt\n /* \"#utility.yul\":12369:12387 */\n dup2\n /* \"#utility.yul\":12366:12404 */\n sub\n /* \"#utility.yul\":12363:12447 */\n tag_291\n jumpi\n /* \"#utility.yul\":12419:12437 */\n tag_292\n tag_153\n jump\t// in\n tag_292:\n /* \"#utility.yul\":12363:12447 */\n tag_291:\n /* \"#utility.yul\":12184:12453 */\n pop\n /* \"#utility.yul\":12133:12453 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12459:12600 */\n tag_155:\n /* \"#utility.yul\":12508:12512 */\n 0x00\n /* \"#utility.yul\":12531:12534 */\n dup2\n /* \"#utility.yul\":12523:12534 */\n swap1\n pop\n /* \"#utility.yul\":12554:12557 */\n dup2\n /* \"#utility.yul\":12551:12552 */\n 0x00\n /* \"#utility.yul\":12544:12558 */\n mstore\n /* \"#utility.yul\":12588:12592 */\n 0x20\n /* \"#utility.yul\":12585:12586 */\n 0x00\n /* \"#utility.yul\":12575:12593 */\n keccak256\n /* \"#utility.yul\":12567:12593 */\n swap1\n pop\n /* \"#utility.yul\":12459:12600 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12606:12699 */\n tag_156:\n /* \"#utility.yul\":12643:12649 */\n 0x00\n /* \"#utility.yul\":12690:12692 */\n 0x20\n /* \"#utility.yul\":12685:12687 */\n 0x1f\n /* \"#utility.yul\":12678:12683 */\n dup4\n /* \"#utility.yul\":12674:12688 */\n add\n /* \"#utility.yul\":12670:12693 */\n div\n /* \"#utility.yul\":12660:12693 */\n swap1\n pop\n /* \"#utility.yul\":12606:12699 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12705:12812 */\n tag_157:\n /* \"#utility.yul\":12749:12757 */\n 0x00\n /* \"#utility.yul\":12799:12804 */\n dup3\n /* \"#utility.yul\":12793:12797 */\n dup3\n /* \"#utility.yul\":12789:12805 */\n shl\n /* \"#utility.yul\":12768:12805 */\n swap1\n pop\n /* \"#utility.yul\":12705:12812 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12818:13211 */\n tag_158:\n /* \"#utility.yul\":12887:12893 */\n 0x00\n /* \"#utility.yul\":12937:12938 */\n 0x08\n /* \"#utility.yul\":12925:12935 */\n dup4\n /* \"#utility.yul\":12921:12939 */\n mul\n /* \"#utility.yul\":12960:13057 */\n tag_297\n /* \"#utility.yul\":12990:13056 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":12979:12988 */\n dup3\n /* \"#utility.yul\":12960:13057 */\n tag_157\n jump\t// in\n tag_297:\n /* \"#utility.yul\":13078:13117 */\n tag_298\n /* \"#utility.yul\":13108:13116 */\n dup7\n /* \"#utility.yul\":13097:13106 */\n dup4\n /* \"#utility.yul\":13078:13117 */\n tag_157\n jump\t// in\n tag_298:\n /* \"#utility.yul\":13066:13117 */\n swap6\n pop\n /* \"#utility.yul\":13150:13154 */\n dup1\n /* \"#utility.yul\":13146:13155 */\n not\n /* \"#utility.yul\":13139:13144 */\n dup5\n /* \"#utility.yul\":13135:13156 */\n and\n /* \"#utility.yul\":13126:13156 */\n swap4\n pop\n /* \"#utility.yul\":13199:13203 */\n dup1\n /* \"#utility.yul\":13189:13197 */\n dup7\n /* \"#utility.yul\":13185:13204 */\n and\n /* \"#utility.yul\":13178:13183 */\n dup5\n /* \"#utility.yul\":13175:13205 */\n or\n /* \"#utility.yul\":13165:13205 */\n swap3\n pop\n /* \"#utility.yul\":12894:13211 */\n pop\n pop\n /* \"#utility.yul\":12818:13211 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13217:13294 */\n tag_159:\n /* \"#utility.yul\":13254:13261 */\n 0x00\n /* \"#utility.yul\":13283:13288 */\n dup2\n /* \"#utility.yul\":13272:13288 */\n swap1\n pop\n /* \"#utility.yul\":13217:13294 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13300:13360 */\n tag_160:\n /* \"#utility.yul\":13328:13331 */\n 0x00\n /* \"#utility.yul\":13349:13354 */\n dup2\n /* \"#utility.yul\":13342:13354 */\n swap1\n pop\n /* \"#utility.yul\":13300:13360 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13366:13508 */\n tag_161:\n /* \"#utility.yul\":13416:13425 */\n 0x00\n /* \"#utility.yul\":13449:13502 */\n tag_302\n /* \"#utility.yul\":13467:13501 */\n tag_303\n /* \"#utility.yul\":13476:13500 */\n tag_304\n /* \"#utility.yul\":13494:13499 */\n dup5\n /* \"#utility.yul\":13476:13500 */\n tag_159\n jump\t// in\n tag_304:\n /* \"#utility.yul\":13467:13501 */\n tag_160\n jump\t// in\n tag_303:\n /* \"#utility.yul\":13449:13502 */\n tag_159\n jump\t// in\n tag_302:\n /* \"#utility.yul\":13436:13502 */\n swap1\n pop\n /* \"#utility.yul\":13366:13508 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13514:13589 */\n tag_162:\n /* \"#utility.yul\":13557:13560 */\n 0x00\n /* \"#utility.yul\":13578:13583 */\n dup2\n /* \"#utility.yul\":13571:13583 */\n swap1\n pop\n /* \"#utility.yul\":13514:13589 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13595:13864 */\n tag_163:\n /* \"#utility.yul\":13705:13744 */\n tag_307\n /* \"#utility.yul\":13736:13743 */\n dup4\n /* \"#utility.yul\":13705:13744 */\n tag_161\n jump\t// in\n tag_307:\n /* \"#utility.yul\":13766:13857 */\n tag_308\n /* \"#utility.yul\":13815:13856 */\n tag_309\n /* \"#utility.yul\":13839:13855 */\n dup3\n /* \"#utility.yul\":13815:13856 */\n tag_162\n jump\t// in\n tag_309:\n /* \"#utility.yul\":13807:13813 */\n dup5\n /* \"#utility.yul\":13800:13804 */\n dup5\n /* \"#utility.yul\":13794:13805 */\n sload\n /* \"#utility.yul\":13766:13857 */\n tag_158\n jump\t// in\n tag_308:\n /* \"#utility.yul\":13760:13764 */\n dup3\n /* \"#utility.yul\":13753:13858 */\n sstore\n /* \"#utility.yul\":13671:13864 */\n pop\n /* \"#utility.yul\":13595:13864 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13870:13943 */\n tag_164:\n /* \"#utility.yul\":13915:13918 */\n 0x00\n /* \"#utility.yul\":13870:13943 */\n swap1\n jump\t// out\n /* \"#utility.yul\":13949:14138 */\n tag_165:\n /* \"#utility.yul\":14026:14058 */\n tag_312\n tag_164\n jump\t// in\n tag_312:\n /* \"#utility.yul\":14067:14132 */\n tag_313\n /* \"#utility.yul\":14125:14131 */\n dup2\n /* \"#utility.yul\":14117:14123 */\n dup5\n /* \"#utility.yul\":14111:14115 */\n dup5\n /* \"#utility.yul\":14067:14132 */\n tag_163\n jump\t// in\n tag_313:\n /* \"#utility.yul\":14002:14138 */\n pop\n /* \"#utility.yul\":13949:14138 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14144:14330 */\n tag_166:\n /* \"#utility.yul\":14204:14324 */\n tag_315:\n /* \"#utility.yul\":14221:14224 */\n dup2\n /* \"#utility.yul\":14214:14219 */\n dup2\n /* \"#utility.yul\":14211:14225 */\n lt\n /* \"#utility.yul\":14204:14324 */\n iszero\n tag_317\n jumpi\n /* \"#utility.yul\":14275:14314 */\n tag_318\n /* \"#utility.yul\":14312:14313 */\n 0x00\n /* \"#utility.yul\":14305:14310 */\n dup3\n /* \"#utility.yul\":14275:14314 */\n tag_165\n jump\t// in\n tag_318:\n /* \"#utility.yul\":14248:14249 */\n 0x01\n /* \"#utility.yul\":14241:14246 */\n dup2\n /* \"#utility.yul\":14237:14250 */\n add\n /* \"#utility.yul\":14228:14250 */\n swap1\n pop\n /* \"#utility.yul\":14204:14324 */\n jump(tag_315)\n tag_317:\n /* \"#utility.yul\":14144:14330 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14336:14879 */\n tag_167:\n /* \"#utility.yul\":14437:14439 */\n 0x1f\n /* \"#utility.yul\":14432:14435 */\n dup3\n /* \"#utility.yul\":14429:14440 */\n gt\n /* \"#utility.yul\":14426:14872 */\n iszero\n tag_320\n jumpi\n /* \"#utility.yul\":14471:14509 */\n tag_321\n /* \"#utility.yul\":14503:14508 */\n dup2\n /* \"#utility.yul\":14471:14509 */\n tag_155\n jump\t// in\n tag_321:\n /* \"#utility.yul\":14555:14584 */\n tag_322\n /* \"#utility.yul\":14573:14583 */\n dup5\n /* \"#utility.yul\":14555:14584 */\n tag_156\n jump\t// in\n tag_322:\n /* \"#utility.yul\":14545:14553 */\n dup2\n /* \"#utility.yul\":14541:14585 */\n add\n /* \"#utility.yul\":14738:14740 */\n 0x20\n /* \"#utility.yul\":14726:14736 */\n dup6\n /* \"#utility.yul\":14723:14741 */\n lt\n /* \"#utility.yul\":14720:14769 */\n iszero\n tag_323\n jumpi\n /* \"#utility.yul\":14759:14767 */\n dup2\n /* \"#utility.yul\":14744:14767 */\n swap1\n pop\n /* \"#utility.yul\":14720:14769 */\n tag_323:\n /* \"#utility.yul\":14782:14862 */\n tag_324\n /* \"#utility.yul\":14838:14860 */\n tag_325\n /* \"#utility.yul\":14856:14859 */\n dup6\n /* \"#utility.yul\":14838:14860 */\n tag_156\n jump\t// in\n tag_325:\n /* \"#utility.yul\":14828:14836 */\n dup4\n /* \"#utility.yul\":14824:14861 */\n add\n /* \"#utility.yul\":14811:14822 */\n dup3\n /* \"#utility.yul\":14782:14862 */\n tag_166\n jump\t// in\n tag_324:\n /* \"#utility.yul\":14441:14872 */\n pop\n pop\n /* \"#utility.yul\":14426:14872 */\n tag_320:\n /* \"#utility.yul\":14336:14879 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14885:15002 */\n tag_168:\n /* \"#utility.yul\":14939:14947 */\n 0x00\n /* \"#utility.yul\":14989:14994 */\n dup3\n /* \"#utility.yul\":14983:14987 */\n dup3\n /* \"#utility.yul\":14979:14995 */\n shr\n /* \"#utility.yul\":14958:14995 */\n swap1\n pop\n /* \"#utility.yul\":14885:15002 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15008:15177 */\n tag_169:\n /* \"#utility.yul\":15052:15058 */\n 0x00\n /* \"#utility.yul\":15085:15136 */\n tag_328\n /* \"#utility.yul\":15133:15134 */\n 0x00\n /* \"#utility.yul\":15129:15135 */\n not\n /* \"#utility.yul\":15121:15126 */\n dup5\n /* \"#utility.yul\":15118:15119 */\n 0x08\n /* \"#utility.yul\":15114:15127 */\n mul\n /* \"#utility.yul\":15085:15136 */\n tag_168\n jump\t// in\n tag_328:\n /* \"#utility.yul\":15081:15137 */\n not\n /* \"#utility.yul\":15166:15170 */\n dup1\n /* \"#utility.yul\":15160:15164 */\n dup4\n /* \"#utility.yul\":15156:15171 */\n and\n /* \"#utility.yul\":15146:15171 */\n swap2\n pop\n /* \"#utility.yul\":15059:15177 */\n pop\n /* \"#utility.yul\":15008:15177 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15182:15477 */\n tag_170:\n /* \"#utility.yul\":15258:15262 */\n 0x00\n /* \"#utility.yul\":15404:15433 */\n tag_330\n /* \"#utility.yul\":15429:15432 */\n dup4\n /* \"#utility.yul\":15423:15427 */\n dup4\n /* \"#utility.yul\":15404:15433 */\n tag_169\n jump\t// in\n tag_330:\n /* \"#utility.yul\":15396:15433 */\n swap2\n pop\n /* \"#utility.yul\":15466:15469 */\n dup3\n /* \"#utility.yul\":15463:15464 */\n 0x02\n /* \"#utility.yul\":15459:15470 */\n mul\n /* \"#utility.yul\":15453:15457 */\n dup3\n /* \"#utility.yul\":15450:15471 */\n or\n /* \"#utility.yul\":15442:15471 */\n swap1\n pop\n /* \"#utility.yul\":15182:15477 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15482:16877 */\n tag_41:\n /* \"#utility.yul\":15599:15636 */\n tag_332\n /* \"#utility.yul\":15632:15635 */\n dup3\n /* \"#utility.yul\":15599:15636 */\n tag_149\n jump\t// in\n tag_332:\n /* \"#utility.yul\":15701:15719 */\n 0xffffffffffffffff\n /* \"#utility.yul\":15693:15699 */\n dup2\n /* \"#utility.yul\":15690:15720 */\n gt\n /* \"#utility.yul\":15687:15743 */\n iszero\n tag_333\n jumpi\n /* \"#utility.yul\":15723:15741 */\n tag_334\n tag_73\n jump\t// in\n tag_334:\n /* \"#utility.yul\":15687:15743 */\n tag_333:\n /* \"#utility.yul\":15767:15805 */\n tag_335\n /* \"#utility.yul\":15799:15803 */\n dup3\n /* \"#utility.yul\":15793:15804 */\n sload\n /* \"#utility.yul\":15767:15805 */\n tag_154\n jump\t// in\n tag_335:\n /* \"#utility.yul\":15852:15919 */\n tag_336\n /* \"#utility.yul\":15912:15918 */\n dup3\n /* \"#utility.yul\":15904:15910 */\n dup3\n /* \"#utility.yul\":15898:15902 */\n dup6\n /* \"#utility.yul\":15852:15919 */\n tag_167\n jump\t// in\n tag_336:\n /* \"#utility.yul\":15946:15947 */\n 0x00\n /* \"#utility.yul\":15970:15974 */\n 0x20\n /* \"#utility.yul\":15957:15974 */\n swap1\n pop\n /* \"#utility.yul\":16002:16004 */\n 0x1f\n /* \"#utility.yul\":15994:16000 */\n dup4\n /* \"#utility.yul\":15991:16005 */\n gt\n /* \"#utility.yul\":16019:16020 */\n 0x01\n /* \"#utility.yul\":16014:16632 */\n dup2\n eq\n tag_338\n jumpi\n /* \"#utility.yul\":16676:16677 */\n 0x00\n /* \"#utility.yul\":16693:16699 */\n dup5\n /* \"#utility.yul\":16690:16767 */\n iszero\n tag_339\n jumpi\n /* \"#utility.yul\":16742:16751 */\n dup3\n /* \"#utility.yul\":16737:16740 */\n dup8\n /* \"#utility.yul\":16733:16752 */\n add\n /* \"#utility.yul\":16727:16753 */\n mload\n /* \"#utility.yul\":16718:16753 */\n swap1\n pop\n /* \"#utility.yul\":16690:16767 */\n tag_339:\n /* \"#utility.yul\":16793:16860 */\n tag_340\n /* \"#utility.yul\":16853:16859 */\n dup6\n /* \"#utility.yul\":16846:16851 */\n dup3\n /* \"#utility.yul\":16793:16860 */\n tag_170\n jump\t// in\n tag_340:\n /* \"#utility.yul\":16787:16791 */\n dup7\n /* \"#utility.yul\":16780:16861 */\n sstore\n /* \"#utility.yul\":16649:16871 */\n pop\n /* \"#utility.yul\":15984:16871 */\n jump(tag_337)\n /* \"#utility.yul\":16014:16632 */\n tag_338:\n /* \"#utility.yul\":16066:16070 */\n 0x1f\n /* \"#utility.yul\":16062:16071 */\n not\n /* \"#utility.yul\":16054:16060 */\n dup5\n /* \"#utility.yul\":16050:16072 */\n and\n /* \"#utility.yul\":16100:16137 */\n tag_341\n /* \"#utility.yul\":16132:16136 */\n dup7\n /* \"#utility.yul\":16100:16137 */\n tag_155\n jump\t// in\n tag_341:\n /* \"#utility.yul\":16159:16160 */\n 0x00\n /* \"#utility.yul\":16173:16381 */\n tag_342:\n /* \"#utility.yul\":16187:16194 */\n dup3\n /* \"#utility.yul\":16184:16185 */\n dup2\n /* \"#utility.yul\":16181:16195 */\n lt\n /* \"#utility.yul\":16173:16381 */\n iszero\n tag_344\n jumpi\n /* \"#utility.yul\":16266:16275 */\n dup5\n /* \"#utility.yul\":16261:16264 */\n dup10\n /* \"#utility.yul\":16257:16276 */\n add\n /* \"#utility.yul\":16251:16277 */\n mload\n /* \"#utility.yul\":16243:16249 */\n dup3\n /* \"#utility.yul\":16236:16278 */\n sstore\n /* \"#utility.yul\":16317:16318 */\n 0x01\n /* \"#utility.yul\":16309:16315 */\n dup3\n /* \"#utility.yul\":16305:16319 */\n add\n /* \"#utility.yul\":16295:16319 */\n swap2\n pop\n /* \"#utility.yul\":16364:16366 */\n 0x20\n /* \"#utility.yul\":16353:16362 */\n dup6\n /* \"#utility.yul\":16349:16367 */\n add\n /* \"#utility.yul\":16336:16367 */\n swap5\n pop\n /* \"#utility.yul\":16210:16214 */\n 0x20\n /* \"#utility.yul\":16207:16208 */\n dup2\n /* \"#utility.yul\":16203:16215 */\n add\n /* \"#utility.yul\":16198:16215 */\n swap1\n pop\n /* \"#utility.yul\":16173:16381 */\n jump(tag_342)\n tag_344:\n /* \"#utility.yul\":16409:16415 */\n dup7\n /* \"#utility.yul\":16400:16407 */\n dup4\n /* \"#utility.yul\":16397:16416 */\n lt\n /* \"#utility.yul\":16394:16573 */\n iszero\n tag_345\n jumpi\n /* \"#utility.yul\":16467:16476 */\n dup5\n /* \"#utility.yul\":16462:16465 */\n dup10\n /* \"#utility.yul\":16458:16477 */\n add\n /* \"#utility.yul\":16452:16478 */\n mload\n /* \"#utility.yul\":16510:16558 */\n tag_346\n /* \"#utility.yul\":16552:16556 */\n 0x1f\n /* \"#utility.yul\":16544:16550 */\n dup10\n /* \"#utility.yul\":16540:16557 */\n and\n /* \"#utility.yul\":16529:16538 */\n dup3\n /* \"#utility.yul\":16510:16558 */\n tag_169\n jump\t// in\n tag_346:\n /* \"#utility.yul\":16502:16508 */\n dup4\n /* \"#utility.yul\":16495:16559 */\n sstore\n /* \"#utility.yul\":16417:16573 */\n pop\n /* \"#utility.yul\":16394:16573 */\n tag_345:\n /* \"#utility.yul\":16619:16620 */\n 0x01\n /* \"#utility.yul\":16615:16616 */\n 0x02\n /* \"#utility.yul\":16607:16613 */\n dup9\n /* \"#utility.yul\":16603:16617 */\n mul\n /* \"#utility.yul\":16599:16621 */\n add\n /* \"#utility.yul\":16593:16597 */\n dup9\n /* \"#utility.yul\":16586:16622 */\n sstore\n /* \"#utility.yul\":16021:16632 */\n pop\n pop\n pop\n /* \"#utility.yul\":15984:16871 */\n tag_337:\n pop\n /* \"#utility.yul\":15574:16877 */\n pop\n pop\n pop\n /* \"#utility.yul\":15482:16877 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16883:17082 */\n tag_171:\n /* \"#utility.yul\":17052:17075 */\n 0x4c697175696469747920426f6f6b20546f6b656e200000000000000000000000\n /* \"#utility.yul\":17047:17050 */\n dup2\n /* \"#utility.yul\":17040:17076 */\n mstore\n /* \"#utility.yul\":16883:17082 */\n pop\n jump\t// out\n /* \"#utility.yul\":17088:18478 */\n tag_43:\n /* \"#utility.yul\":17587:17590 */\n 0x00\n /* \"#utility.yul\":17602:17740 */\n tag_349\n /* \"#utility.yul\":17736:17739 */\n dup3\n /* \"#utility.yul\":17602:17740 */\n tag_171\n jump\t// in\n tag_349:\n /* \"#utility.yul\":17765:17767 */\n 0x15\n /* \"#utility.yul\":17760:17763 */\n dup3\n /* \"#utility.yul\":17756:17768 */\n add\n /* \"#utility.yul\":17749:17768 */\n swap2\n pop\n /* \"#utility.yul\":17785:17880 */\n tag_350\n /* \"#utility.yul\":17876:17879 */\n dup3\n /* \"#utility.yul\":17867:17873 */\n dup7\n /* \"#utility.yul\":17785:17880 */\n tag_151\n jump\t// in\n tag_350:\n /* \"#utility.yul\":17778:17880 */\n swap2\n pop\n /* \"#utility.yul\":17890:18027 */\n tag_351\n /* \"#utility.yul\":18023:18026 */\n dup3\n /* \"#utility.yul\":17890:18027 */\n tag_152\n jump\t// in\n tag_351:\n /* \"#utility.yul\":18052:18053 */\n 0x01\n /* \"#utility.yul\":18047:18050 */\n dup3\n /* \"#utility.yul\":18043:18054 */\n add\n /* \"#utility.yul\":18036:18054 */\n swap2\n pop\n /* \"#utility.yul\":18071:18166 */\n tag_352\n /* \"#utility.yul\":18162:18165 */\n dup3\n /* \"#utility.yul\":18153:18159 */\n dup6\n /* \"#utility.yul\":18071:18166 */\n tag_151\n jump\t// in\n tag_352:\n /* \"#utility.yul\":18064:18166 */\n swap2\n pop\n /* \"#utility.yul\":18176:18313 */\n tag_353\n /* \"#utility.yul\":18309:18312 */\n dup3\n /* \"#utility.yul\":18176:18313 */\n tag_152\n jump\t// in\n tag_353:\n /* \"#utility.yul\":18338:18339 */\n 0x01\n /* \"#utility.yul\":18333:18336 */\n dup3\n /* \"#utility.yul\":18329:18340 */\n add\n /* \"#utility.yul\":18322:18340 */\n swap2\n pop\n /* \"#utility.yul\":18357:18452 */\n tag_354\n /* \"#utility.yul\":18448:18451 */\n dup3\n /* \"#utility.yul\":18439:18445 */\n dup5\n /* \"#utility.yul\":18357:18452 */\n tag_151\n jump\t// in\n tag_354:\n /* \"#utility.yul\":18350:18452 */\n swap2\n pop\n /* \"#utility.yul\":18469:18472 */\n dup2\n /* \"#utility.yul\":18462:18472 */\n swap1\n pop\n /* \"#utility.yul\":17088:18478 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18484:18835 */\n tag_56:\n /* \"#utility.yul\":18554:18560 */\n 0x00\n /* \"#utility.yul\":18603:18605 */\n 0x20\n /* \"#utility.yul\":18591:18600 */\n dup3\n /* \"#utility.yul\":18582:18589 */\n dup5\n /* \"#utility.yul\":18578:18601 */\n sub\n /* \"#utility.yul\":18574:18606 */\n slt\n /* \"#utility.yul\":18571:18690 */\n iszero\n tag_356\n jumpi\n /* \"#utility.yul\":18609:18688 */\n tag_357\n tag_119\n jump\t// in\n tag_357:\n /* \"#utility.yul\":18571:18690 */\n tag_356:\n /* \"#utility.yul\":18729:18730 */\n 0x00\n /* \"#utility.yul\":18754:18818 */\n tag_358\n /* \"#utility.yul\":18810:18817 */\n dup5\n /* \"#utility.yul\":18801:18807 */\n dup3\n /* \"#utility.yul\":18790:18799 */\n dup6\n /* \"#utility.yul\":18786:18808 */\n add\n /* \"#utility.yul\":18754:18818 */\n tag_124\n jump\t// in\n tag_358:\n /* \"#utility.yul\":18744:18818 */\n swap2\n pop\n /* \"#utility.yul\":18700:18828 */\n pop\n /* \"#utility.yul\":18484:18835 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18841:19021 */\n tag_172:\n /* \"#utility.yul\":18889:18966 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":18886:18887 */\n 0x00\n /* \"#utility.yul\":18879:18967 */\n mstore\n /* \"#utility.yul\":18986:18990 */\n 0x11\n /* \"#utility.yul\":18983:18984 */\n 0x04\n /* \"#utility.yul\":18976:18991 */\n mstore\n /* \"#utility.yul\":19010:19014 */\n 0x24\n /* \"#utility.yul\":19007:19008 */\n 0x00\n /* \"#utility.yul\":19000:19015 */\n revert\n /* \"#utility.yul\":19027:19198 */\n tag_68:\n /* \"#utility.yul\":19065:19068 */\n 0x00\n /* \"#utility.yul\":19088:19111 */\n tag_361\n /* \"#utility.yul\":19105:19110 */\n dup3\n /* \"#utility.yul\":19088:19111 */\n tag_125\n jump\t// in\n tag_361:\n /* \"#utility.yul\":19079:19111 */\n swap2\n pop\n /* \"#utility.yul\":19133:19139 */\n 0xffff\n /* \"#utility.yul\":19126:19131 */\n dup3\n /* \"#utility.yul\":19123:19140 */\n sub\n /* \"#utility.yul\":19120:19163 */\n tag_362\n jumpi\n /* \"#utility.yul\":19143:19161 */\n tag_363\n tag_172\n jump\t// in\n tag_363:\n /* \"#utility.yul\":19120:19163 */\n tag_362:\n /* \"#utility.yul\":19190:19191 */\n 0x01\n /* \"#utility.yul\":19183:19188 */\n dup3\n /* \"#utility.yul\":19179:19192 */\n add\n /* \"#utility.yul\":19172:19192 */\n swap1\n pop\n /* \"#utility.yul\":19027:19198 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":19204:19384 */\n tag_173:\n /* \"#utility.yul\":19252:19329 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":19249:19250 */\n 0x00\n /* \"#utility.yul\":19242:19330 */\n mstore\n /* \"#utility.yul\":19349:19353 */\n 0x12\n /* \"#utility.yul\":19346:19347 */\n 0x04\n /* \"#utility.yul\":19339:19354 */\n mstore\n /* \"#utility.yul\":19373:19377 */\n 0x24\n /* \"#utility.yul\":19370:19371 */\n 0x00\n /* \"#utility.yul\":19363:19378 */\n revert\n /* \"#utility.yul\":19390:19572 */\n tag_70:\n /* \"#utility.yul\":19429:19430 */\n 0x00\n /* \"#utility.yul\":19446:19465 */\n tag_366\n /* \"#utility.yul\":19463:19464 */\n dup3\n /* \"#utility.yul\":19446:19465 */\n tag_125\n jump\t// in\n tag_366:\n /* \"#utility.yul\":19441:19465 */\n swap2\n pop\n /* \"#utility.yul\":19479:19498 */\n tag_367\n /* \"#utility.yul\":19496:19497 */\n dup4\n /* \"#utility.yul\":19479:19498 */\n tag_125\n jump\t// in\n tag_367:\n /* \"#utility.yul\":19474:19498 */\n swap3\n pop\n /* \"#utility.yul\":19517:19518 */\n dup3\n /* \"#utility.yul\":19507:19542 */\n tag_368\n jumpi\n /* \"#utility.yul\":19522:19540 */\n tag_369\n tag_173\n jump\t// in\n tag_369:\n /* \"#utility.yul\":19507:19542 */\n tag_368:\n /* \"#utility.yul\":19564:19565 */\n dup3\n /* \"#utility.yul\":19561:19562 */\n dup3\n /* \"#utility.yul\":19557:19566 */\n div\n /* \"#utility.yul\":19552:19566 */\n swap1\n pop\n /* \"#utility.yul\":19390:19572 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19578:19774 */\n tag_78:\n /* \"#utility.yul\":19617:19621 */\n 0x00\n /* \"#utility.yul\":19637:19656 */\n tag_371\n /* \"#utility.yul\":19654:19655 */\n dup3\n /* \"#utility.yul\":19637:19656 */\n tag_125\n jump\t// in\n tag_371:\n /* \"#utility.yul\":19632:19656 */\n swap2\n pop\n /* \"#utility.yul\":19670:19689 */\n tag_372\n /* \"#utility.yul\":19687:19688 */\n dup4\n /* \"#utility.yul\":19670:19689 */\n tag_125\n jump\t// in\n tag_372:\n /* \"#utility.yul\":19665:19689 */\n swap3\n pop\n /* \"#utility.yul\":19713:19714 */\n dup3\n /* \"#utility.yul\":19710:19711 */\n dup3\n /* \"#utility.yul\":19706:19715 */\n sub\n /* \"#utility.yul\":19698:19715 */\n swap1\n pop\n /* \"#utility.yul\":19737:19743 */\n 0xffff\n /* \"#utility.yul\":19731:19735 */\n dup2\n /* \"#utility.yul\":19728:19744 */\n gt\n /* \"#utility.yul\":19725:19767 */\n iszero\n tag_373\n jumpi\n /* \"#utility.yul\":19747:19765 */\n tag_374\n tag_172\n jump\t// in\n tag_374:\n /* \"#utility.yul\":19725:19767 */\n tag_373:\n /* \"#utility.yul\":19578:19774 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19780:19953 */\n tag_80:\n /* \"#utility.yul\":19811:19812 */\n 0x00\n /* \"#utility.yul\":19828:19847 */\n tag_376\n /* \"#utility.yul\":19845:19846 */\n dup3\n /* \"#utility.yul\":19828:19847 */\n tag_125\n jump\t// in\n tag_376:\n /* \"#utility.yul\":19823:19847 */\n swap2\n pop\n /* \"#utility.yul\":19861:19880 */\n tag_377\n /* \"#utility.yul\":19878:19879 */\n dup4\n /* \"#utility.yul\":19861:19880 */\n tag_125\n jump\t// in\n tag_377:\n /* \"#utility.yul\":19856:19880 */\n swap3\n pop\n /* \"#utility.yul\":19899:19900 */\n dup3\n /* \"#utility.yul\":19889:19924 */\n tag_378\n jumpi\n /* \"#utility.yul\":19904:19922 */\n tag_379\n tag_173\n jump\t// in\n tag_379:\n /* \"#utility.yul\":19889:19924 */\n tag_378:\n /* \"#utility.yul\":19945:19946 */\n dup3\n /* \"#utility.yul\":19942:19943 */\n dup3\n /* \"#utility.yul\":19938:19947 */\n mod\n /* \"#utility.yul\":19933:19947 */\n swap1\n pop\n /* \"#utility.yul\":19780:19953 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19959:20152 */\n tag_82:\n /* \"#utility.yul\":19998:20001 */\n 0x00\n /* \"#utility.yul\":20017:20036 */\n tag_381\n /* \"#utility.yul\":20034:20035 */\n dup3\n /* \"#utility.yul\":20017:20036 */\n tag_125\n jump\t// in\n tag_381:\n /* \"#utility.yul\":20012:20036 */\n swap2\n pop\n /* \"#utility.yul\":20050:20069 */\n tag_382\n /* \"#utility.yul\":20067:20068 */\n dup4\n /* \"#utility.yul\":20050:20069 */\n tag_125\n jump\t// in\n tag_382:\n /* \"#utility.yul\":20045:20069 */\n swap3\n pop\n /* \"#utility.yul\":20092:20093 */\n dup3\n /* \"#utility.yul\":20089:20090 */\n dup3\n /* \"#utility.yul\":20085:20094 */\n add\n /* \"#utility.yul\":20078:20094 */\n swap1\n pop\n /* \"#utility.yul\":20115:20121 */\n 0xffff\n /* \"#utility.yul\":20110:20113 */\n dup2\n /* \"#utility.yul\":20107:20122 */\n gt\n /* \"#utility.yul\":20104:20145 */\n iszero\n tag_383\n jumpi\n /* \"#utility.yul\":20125:20143 */\n tag_384\n tag_172\n jump\t// in\n tag_384:\n /* \"#utility.yul\":20104:20145 */\n tag_383:\n /* \"#utility.yul\":19959:20152 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":20158:20338 */\n tag_85:\n /* \"#utility.yul\":20206:20283 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":20203:20204 */\n 0x00\n /* \"#utility.yul\":20196:20284 */\n mstore\n /* \"#utility.yul\":20303:20307 */\n 0x32\n /* \"#utility.yul\":20300:20301 */\n 0x04\n /* \"#utility.yul\":20293:20308 */\n mstore\n /* \"#utility.yul\":20327:20331 */\n 0x24\n /* \"#utility.yul\":20324:20325 */\n 0x00\n /* \"#utility.yul\":20317:20332 */\n revert\n /* \"#utility.yul\":20344:20462 */\n tag_174:\n /* \"#utility.yul\":20431:20455 */\n tag_387\n /* \"#utility.yul\":20449:20454 */\n dup2\n /* \"#utility.yul\":20431:20455 */\n tag_122\n jump\t// in\n tag_387:\n /* \"#utility.yul\":20426:20429 */\n dup3\n /* \"#utility.yul\":20419:20456 */\n mstore\n /* \"#utility.yul\":20344:20462 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":20468:20690 */\n tag_91:\n /* \"#utility.yul\":20561:20565 */\n 0x00\n /* \"#utility.yul\":20599:20601 */\n 0x20\n /* \"#utility.yul\":20588:20597 */\n dup3\n /* \"#utility.yul\":20584:20602 */\n add\n /* \"#utility.yul\":20576:20602 */\n swap1\n pop\n /* \"#utility.yul\":20612:20683 */\n tag_389\n /* \"#utility.yul\":20680:20681 */\n 0x00\n /* \"#utility.yul\":20669:20678 */\n dup4\n /* \"#utility.yul\":20665:20682 */\n add\n /* \"#utility.yul\":20656:20662 */\n dup5\n /* \"#utility.yul\":20612:20683 */\n tag_174\n jump\t// in\n tag_389:\n /* \"#utility.yul\":20468:20690 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n tag_47:\n mload(0x80)\n codecopy(0x00, dataOffset(sub_0), dataSize(sub_0))\n 0x00\n assignImmutable(\"0x6c359167374f49fb5c7d4806c3799bb86fc04d6dd416c2ad9d7b00d01c9c2e24\")\n return(0x00, dataSize(sub_0))\n stop\n\n sub_0: assembly {\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xa0a0ea39\n eq\n tag_3\n jumpi\n jump(tag_2)\n tag_1:\n jumpi(tag_2, calldatasize)\n stop\n tag_2:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n tag_8\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2658 _fallback */\n tag_9\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n jump\t// in\n tag_8:\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n stop\n /* \"src/LBPairBeaconProxy.sol\":2233:2328 function getLBPairBeacon() external view returns (address) {... */\n tag_3:\n callvalue\n dup1\n iszero\n tag_10\n jumpi\n 0x00\n dup1\n revert\n tag_10:\n pop\n tag_11\n tag_12\n jump\t// in\n tag_11:\n mload(0x40)\n tag_13\n swap2\n swap1\n tag_14\n jump\t// in\n tag_13:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n tag_9:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n tag_16\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n tag_17\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2396 _implementation */\n tag_18\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n jump\t// in\n tag_17:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2380 _delegate */\n tag_19\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n jump\t// in\n tag_16:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n jump\t// out\n /* \"src/LBPairBeaconProxy.sol\":2233:2328 function getLBPairBeacon() external view returns (address) {... */\n tag_12:\n /* \"src/LBPairBeaconProxy.sol\":2283:2290 address */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":2309:2321 _getBeacon() */\n tag_21\n /* \"src/LBPairBeaconProxy.sol\":2309:2319 _getBeacon */\n tag_22\n /* \"src/LBPairBeaconProxy.sol\":2309:2321 _getBeacon() */\n jump\t// in\n tag_21:\n /* \"src/LBPairBeaconProxy.sol\":2302:2321 return _getBeacon() */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":2233:2328 function getLBPairBeacon() external view returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2023:2161 function _implementation() internal view virtual override returns (address) {... */\n tag_18:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2090:2097 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2136 _getBeacon() */\n tag_24\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2134 _getBeacon */\n tag_22\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2136 _getBeacon() */\n jump\t// in\n tag_24:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2116:2152 IBeacon(_getBeacon()).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2116:2154 IBeacon(_getBeacon()).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_26\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_26:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_27\n swap2\n swap1\n tag_28\n jump\t// in\n tag_27:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2109:2154 return IBeacon(_getBeacon()).implementation() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2023:2161 function _implementation() internal view virtual override returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":949:1844 function _delegate(address implementation) internal virtual {... */\n tag_19:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1287:1301 calldatasize() */\n calldatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1284:1285 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1281:1282 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1268:1302 calldatacopy(0, 0, calldatasize()) */\n calldatacopy\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1501:1502 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1498:1499 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1482:1496 calldatasize() */\n calldatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1479:1480 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1463:1477 implementation */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1456:1461 gas() */\n gas\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1443:1503 delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) */\n delegatecall\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1577:1593 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1574:1575 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1571:1572 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1556:1594 returndatacopy(0, 0, returndatasize()) */\n returndatacopy\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1615:1621 result */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1687:1688 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n dup2\n eq\n tag_31\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1797:1813 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1794:1795 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1787:1814 return(0, returndatasize()) */\n return\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n tag_31:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1717:1733 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1714:1715 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1707:1734 revert(0, returndatasize()) */\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2215:2308 function _getBeacon() internal view virtual returns (address) {... */\n tag_22:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2268:2275 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2294:2301 _beacon */\n immutable(\"0x6c359167374f49fb5c7d4806c3799bb86fc04d6dd416c2ad9d7b00d01c9c2e24\")\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2287:2301 return _beacon */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2215:2308 function _getBeacon() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":7:133 */\n tag_33:\n /* \"#utility.yul\":44:51 */\n 0x00\n /* \"#utility.yul\":84:126 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":77:82 */\n dup3\n /* \"#utility.yul\":73:127 */\n and\n /* \"#utility.yul\":62:127 */\n swap1\n pop\n /* \"#utility.yul\":7:133 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":139:235 */\n tag_34:\n /* \"#utility.yul\":176:183 */\n 0x00\n /* \"#utility.yul\":205:229 */\n tag_44\n /* \"#utility.yul\":223:228 */\n dup3\n /* \"#utility.yul\":205:229 */\n tag_33\n jump\t// in\n tag_44:\n /* \"#utility.yul\":194:229 */\n swap1\n pop\n /* \"#utility.yul\":139:235 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":241:359 */\n tag_35:\n /* \"#utility.yul\":328:352 */\n tag_46\n /* \"#utility.yul\":346:351 */\n dup2\n /* \"#utility.yul\":328:352 */\n tag_34\n jump\t// in\n tag_46:\n /* \"#utility.yul\":323:326 */\n dup3\n /* \"#utility.yul\":316:353 */\n mstore\n /* \"#utility.yul\":241:359 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":365:587 */\n tag_14:\n /* \"#utility.yul\":458:462 */\n 0x00\n /* \"#utility.yul\":496:498 */\n 0x20\n /* \"#utility.yul\":485:494 */\n dup3\n /* \"#utility.yul\":481:499 */\n add\n /* \"#utility.yul\":473:499 */\n swap1\n pop\n /* \"#utility.yul\":509:580 */\n tag_48\n /* \"#utility.yul\":577:578 */\n 0x00\n /* \"#utility.yul\":566:575 */\n dup4\n /* \"#utility.yul\":562:579 */\n add\n /* \"#utility.yul\":553:559 */\n dup5\n /* \"#utility.yul\":509:580 */\n tag_35\n jump\t// in\n tag_48:\n /* \"#utility.yul\":365:587 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":674:791 */\n tag_37:\n /* \"#utility.yul\":783:784 */\n 0x00\n /* \"#utility.yul\":780:781 */\n dup1\n /* \"#utility.yul\":773:785 */\n revert\n /* \"#utility.yul\":920:1042 */\n tag_39:\n /* \"#utility.yul\":993:1017 */\n tag_53\n /* \"#utility.yul\":1011:1016 */\n dup2\n /* \"#utility.yul\":993:1017 */\n tag_34\n jump\t// in\n tag_53:\n /* \"#utility.yul\":986:991 */\n dup2\n /* \"#utility.yul\":983:1018 */\n eq\n /* \"#utility.yul\":973:1036 */\n tag_54\n jumpi\n /* \"#utility.yul\":1032:1033 */\n 0x00\n /* \"#utility.yul\":1029:1030 */\n dup1\n /* \"#utility.yul\":1022:1034 */\n revert\n /* \"#utility.yul\":973:1036 */\n tag_54:\n /* \"#utility.yul\":920:1042 */\n pop\n jump\t// out\n /* \"#utility.yul\":1048:1191 */\n tag_40:\n /* \"#utility.yul\":1105:1110 */\n 0x00\n /* \"#utility.yul\":1136:1142 */\n dup2\n /* \"#utility.yul\":1130:1143 */\n mload\n /* \"#utility.yul\":1121:1143 */\n swap1\n pop\n /* \"#utility.yul\":1152:1185 */\n tag_56\n /* \"#utility.yul\":1179:1184 */\n dup2\n /* \"#utility.yul\":1152:1185 */\n tag_39\n jump\t// in\n tag_56:\n /* \"#utility.yul\":1048:1191 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1197:1548 */\n tag_28:\n /* \"#utility.yul\":1267:1273 */\n 0x00\n /* \"#utility.yul\":1316:1318 */\n 0x20\n /* \"#utility.yul\":1304:1313 */\n dup3\n /* \"#utility.yul\":1295:1302 */\n dup5\n /* \"#utility.yul\":1291:1314 */\n sub\n /* \"#utility.yul\":1287:1319 */\n slt\n /* \"#utility.yul\":1284:1403 */\n iszero\n tag_58\n jumpi\n /* \"#utility.yul\":1322:1401 */\n tag_59\n tag_37\n jump\t// in\n tag_59:\n /* \"#utility.yul\":1284:1403 */\n tag_58:\n /* \"#utility.yul\":1442:1443 */\n 0x00\n /* \"#utility.yul\":1467:1531 */\n tag_60\n /* \"#utility.yul\":1523:1530 */\n dup5\n /* \"#utility.yul\":1514:1520 */\n dup3\n /* \"#utility.yul\":1503:1512 */\n dup6\n /* \"#utility.yul\":1499:1521 */\n add\n /* \"#utility.yul\":1467:1531 */\n tag_40\n jump\t// in\n tag_60:\n /* \"#utility.yul\":1457:1531 */\n swap2\n pop\n /* \"#utility.yul\":1413:1541 */\n pop\n /* \"#utility.yul\":1197:1548 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033\n }\n }\n\n auxdata: 0xa2646970667358221220408f674abc88915a00048d86f4f02c24344fb5b67b185d05ce64c6c9aedc7e7c64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": { + "@_5122": { + "entryPoint": null, + "id": 5122, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_916": { + "entryPoint": 39, + "id": 916, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_947": { + "entryPoint": 299, + "id": 947, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_t_uint64_to_t_uint64_fromStack": { + "entryPoint": 357, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": 374, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_uint64": { + "entryPoint": 338, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:456:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "51:57:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "61:41:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "76:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "83:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "72:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "72:30:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "61:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "43:7:40", + "type": "" + } + ], + "src": "7:101:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "194:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "216:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "199:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "199:23:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:36:40" + } + ] + }, + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "165:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "172:3:40", + "type": "" + } + ], + "src": "114:115:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "331:122:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "341:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "353:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "364:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "349:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "349:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "341:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "419:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "432:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "443:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "428:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "428:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", + "nodeType": "YulIdentifier", + "src": "377:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "377:69:40" + }, + "nodeType": "YulExpressionStatement", + "src": "377:69:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "303:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "315:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "326:4:40", + "type": "" + } + ], + "src": "235:218:40" + } + ] + }, + "contents": "{\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801562000010575f80fd5b50620000216200002760201b60201c565b62000191565b5f620000386200012b60201b60201c565b9050805f0160089054906101000a900460ff161562000083576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1614620001285767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff6040516200011f919062000176565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b620001708162000152565b82525050565b5f6020820190506200018b5f83018462000165565b92915050565b617503806200019f5f395ff3fe608060405234801562000010575f80fd5b5060043610620002ae575f3560e01c8063701ab8c1116200016f578063aabc4b3c11620000d3578063e203a31f1162000091578063e203a31f1462000847578063e30c39781462000867578063e74b981b1462000889578063e92d0d5d14620008a9578063f2fde38b14620008c9578063fd90c2be14620008e957620002ae565b8063aabc4b3c1462000788578063be20309414620007c5578063c1b931be14620007e5578063d547741f1462000807578063ddbfd941146200082757620002ae565b806380c5061e116200012d57806380c5061e14620006a85780638ce9aa1c14620006ca5780638da5cb5b14620006ec57806391d14854146200070e578063a0a0ea391462000744578063a217fddf146200076657620002ae565b8063701ab8c11462000602578063704037bd1462000624578063715018a6146200065a57806379ba509714620006665780637daf5d66146200067257620002ae565b80633a2f1a9111620002175780635a44092311620001d55780635a44092314620005125780635b35875c1462000532578063659ac74b1462000554578063661d7ffb146200058a5780636622e0d714620005ac57806369d56ea314620005e257620002ae565b80633a2f1a91146200046e5780633c78a941146200048e5780634ccb20c014620004ae5780634cd161d314620004d05780634e937c3a14620004f057620002ae565b8063248a9ca31162000271578063248a9ca314620003825780632772184214620003b85780632cc06b8c14620003ee5780632f2ff15d146200040e57806336568abe146200042e578063379ee803146200044e57620002ae565b806301ffc9a714620002b25780630282c9c114620002e85780630752092b146200030a578063093ff76914620003405780631af5bacc1462000360575b5f80fd5b620002d06004803603810190620002ca9190620044b5565b6200090b565b604051620002df919062004501565b60405180910390f35b620002f262000987565b604051620003019190620045ec565b60405180910390f35b6200032860048036038101906200032291906200463d565b62000a89565b604051620003379190620046f3565b60405180910390f35b6200035e6004803603810190620003589190620047dc565b62000aa7565b005b6200036a62000bc3565b604051620003799190620048e6565b60405180910390f35b620003a060048036038101906200039a919062004930565b62000be7565b604051620003af9190620048e6565b60405180910390f35b620003d66004803603810190620003d0919062004960565b62000c13565b604051620003e5919062004501565b60405180910390f35b6200040c600480360381019062000406919062004990565b62000c31565b005b6200042c600480360381019062000426919062004a18565b62000cc4565b005b6200044c600480360381019062000446919062004a18565b62000cec565b005b6200046c600480360381019062000466919062004a8c565b62000d6c565b005b6200048c600480360381019062000486919062004bcf565b62000eb5565b005b620004ac6004803603810190620004a6919062004cb7565b62000fdc565b005b620004b862001046565b604051620004c7919062004cf8565b60405180910390f35b620004ee6004803603810190620004e8919062004d13565b6200106d565b005b620004fa620011b6565b60405162000509919062004d69565b60405180910390f35b6200053060048036038101906200052a919062004960565b620011c2565b005b6200053c6200126c565b6040516200054b9190620045ec565b60405180910390f35b6200057260048036038101906200056c919062004d84565b6200127f565b60405162000581919062004e17565b60405180910390f35b6200059462001aba565b604051620005a39190620048e6565b60405180910390f35b620005ca6004803603810190620005c4919062004e32565b62001ade565b604051620005d9919062004fbb565b60405180910390f35b620006006004803603810190620005fa919062004fdd565b62001d7f565b005b6200060c62002099565b6040516200061b919062004d69565b60405180910390f35b6200064260048036038101906200063c91906200504c565b620020a1565b60405162000651919062005100565b60405180910390f35b62000664620020c1565b005b62000670620020d8565b005b6200069060048036038101906200068a91906200463d565b6200216f565b6040516200069f919062004e17565b60405180910390f35b620006b2620021b6565b604051620006c1919062004d69565b60405180910390f35b620006d4620021c8565b604051620006e3919062004d69565b60405180910390f35b620006f6620021d7565b60405162000705919062004cf8565b60405180910390f35b6200072c600480360381019062000726919062004a18565b6200220e565b6040516200073b919062004501565b60405180910390f35b6200074e6200226e565b6040516200075d919062004cf8565b60405180910390f35b6200077062002296565b6040516200077f9190620048e6565b60405180910390f35b620007a66004803603810190620007a091906200463d565b6200229c565b604051620007bc9897969594939291906200511b565b60405180910390f35b620007e36004803603810190620007dd9190620051a7565b620023b6565b005b620007ef6200262d565b604051620007fe9190620048e6565b60405180910390f35b6200082560048036038101906200081f919062004a18565b62002654565b005b6200084560048036038101906200083f919062004960565b6200267c565b005b6200086560048036038101906200085f919062005216565b62002726565b005b62000871620027c2565b60405162000880919062004cf8565b60405180910390f35b620008a76004803603810190620008a1919062005246565b620027f9565b005b620008c76004803603810190620008c191906200463d565b62002811565b005b620008e76004803603810190620008e1919062005246565b62002908565b005b620008f3620029c7565b60405162000902919062004d69565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806200098057506200097f82620029d0565b5b9050919050565b60605f62000996600562002a39565b90505f81111562000a85578067ffffffffffffffff811115620009be57620009bd62005276565b5b604051908082528060200260200182016040528015620009ed5781602001602082028036833780820191505090505b5091505f805b8281101562000a75575f8062000a1483600562002a4e90919063ffffffff16565b9150915062000a25815f1b62002a77565b1562000a5f578186858151811062000a425762000a41620052a3565b5b602002602001018181525050838062000a5b90620052fd565b9450505b50508062000a6d90620052fd565b9050620009f3565b508181101562000a83578083525b505b5090565b5f62000aa082600862002a9590919063ffffffff16565b9050919050565b62000ab162002aae565b5f62000ac38b8b8b61ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b40578a8a8a6040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162000b379392919062005381565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16636653851a898989898989896040518863ffffffff1660e01b815260040162000b879796959493929190620053de565b5f604051808303815f87803b15801562000b9f575f80fd5b505af115801562000bb2573d5f803e3d5ffd5b505050505050505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b5f8062000bf362002c9e565b9050805f015f8481526020019081526020015f2060010154915050919050565b5f62000c2a82600862002cc590919063ffffffff16565b9050919050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000c5d8162002cf4565b62000cbe8484845f801b5f67ffffffffffffffff81111562000c845762000c8362005276565b5b6040519080825280601f01601f19166020018201604052801562000cb75781602001600182028036833780820191505090505b5062002d0c565b50505050565b62000ccf8262000be7565b62000cda8162002cf4565b62000ce6838362002ec5565b50505050565b62000cf662002f16565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000d5b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000d67828262002f1d565b505050565b62000d7662002aae565b60018961ffff16101562000dc357886040517f4f958e7100000000000000000000000000000000000000000000000000000000815260040162000dba919062005459565b60405180910390fd5b5f62000de7898989898989895f801b6200301d90979695949392919063ffffffff16565b9050811562000e0c5762000e09600160ff83620031cf9092919063ffffffff16565b90505b62000e2a8a61ffff16825f1c6005620031fa9092919063ffffffff16565b508961ffff167f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a288a8a8a8a8a8a8a60405162000e6d9796959493929190620054ac565b60405180910390a28115158a61ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000ee18162002cf4565b5f73ffffffffffffffffffffffffffffffffffffffff1662000f038562003217565b73ffffffffffffffffffffffffffffffffffffffff16148062000f4957505f60a01b62000f308562003222565b73ffffffffffffffffffffffffffffffffffffffff1916145b1562000f81576040517fd43a15d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000fd38787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505062002d0c565b50505050505050565b62000fe662002aae565b8073ffffffffffffffffffffffffffffffffffffffff1663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200102c575f80fd5b505af11580156200103f573d5f803e3d5ffd5b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200107762002aae565b620010918261ffff1660056200322b90919063ffffffff16565b620010d557816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620010cc919062005459565b60405180910390fd5b5f620010f08361ffff1660056200324490919063ffffffff16565b5f1b90508115156200110d60ff836200325f90919063ffffffff16565b15150362001147576040517f237c71b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200117c8361ffff16620011688460ff85620031cf9092919063ffffffff16565b5f1c6005620031fa9092919063ffffffff16565b508115158361ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a3505050565b5f600380549050905090565b620011cc62002aae565b620011e28160086200326e90919063ffffffff16565b6200122657806040517f03ce0ad90000000000000000000000000000000000000000000000000000000081526004016200121d9190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e60405160405180910390a250565b60606200127a60056200329d565b905090565b5f6200129a8261ffff1660056200322b90919063ffffffff16565b620012de57816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620012d5919062005459565b60405180910390fd5b5f620012f98361ffff1660056200324490919063ffffffff16565b5f1b90505f62001308620021d7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050620013438262002a77565b1580156200134f575080155b15620013965733846040517f09f85fce0000000000000000000000000000000000000000000000000000000081526004016200138d92919062005527565b60405180910390fd5b620013ac86600862002cc590919063ffffffff16565b620013f057856040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620013e79190620046f3565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036200146357866040517f2f9b18530000000000000000000000000000000000000000000000000000000081526004016200145a9190620046f3565b60405180910390fd5b6200146f8585620032be565b505f806200147e8989620032fa565b915091505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620014e8576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200160c578888876040517fcb27a435000000000000000000000000000000000000000000000000000000008152600401620016039392919062005381565b60405180910390fd5b5f620016188562003349565b620016238662003366565b6200162e8762003384565b6200163988620033a2565b6200164489620033c0565b6200164f8a620033de565b6200165a8b620033fc565b8e6040516024016200167498979695949392919062005552565b6040516020818303038152906040527f47973bff000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f8383896040516020016200170b9392919062005665565b6040516020818303038152906040528051906020012090505f60405180602001620017369062004403565b6020820181038252601f19601f8201166040525060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8c87604051602001620017869594939291906200573b565b604051602081830303815290604052604051602001620017a8929190620057dd565b6040516020818303038152906040529050620017c65f83836200341a565b975050505060405180608001604052808761ffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200184151581526020015f151581525060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600385908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062001a2c8661ffff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206200351890919063ffffffff16565b508561ffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff88600160038054905062001a96919062005804565b60405162001aa69291906200583e565b60405180910390a450505050949350505050565b7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d81565b60605f8062001aee8585620032fa565b915091505f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f62001b798262003531565b90505f81111562001d75578067ffffffffffffffff81111562001ba15762001ba062005276565b5b60405190808252806020026020018201604052801562001bde57816020015b62001bca62004411565b81526020019060019003908162001bc05790505b5094505f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b8281101562001d72575f62001c8762001c8183876200354690919063ffffffff16565b6200355f565b905060405180608001604052808261ffff168152602001845f8461ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001845f8461ffff1681526020019081526020015f205f0160169054906101000a900460ff1615158152602001845f8461ffff1681526020019081526020015f205f0160179054906101000a900460ff16151581525088838151811062001d5a5762001d59620052a3565b5b60200260200101819052505080600101905062001c5e565b50505b5050505092915050565b62001d8962002aae565b5f8062001d978686620032fa565b915091505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8661ffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff160362001f56578686866040517f40aa464400000000000000000000000000000000000000000000000000000000815260040162001f4d9392919062005381565b60405180910390fd5b831515816060015115150362001f97576040517eddccca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8761ffff1681526020019081526020015f205f0160176101000a81548160ff021916908315150217905550806020015173ffffffffffffffffffffffffffffffffffffffff167f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f8560405162002088919062004501565b60405180910390a250505050505050565b5f6001905090565b620020ab62004411565b620020b884848462002b3e565b90509392505050565b620020cb62002aae565b620020d65f620035a6565b565b5f620020e362002f16565b90508073ffffffffffffffffffffffffffffffffffffffff1662002106620027c2565b73ffffffffffffffffffffffffffffffffffffffff16146200216157806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002158919062004cf8565b60405180910390fd5b6200216c81620035a6565b50565b5f60038281548110620021875762002186620052a3565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f620021c36008620035e7565b905090565b5f67016345785d8a0000905090565b5f80620021e3620035fc565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f805f1b8303620022595762002223620021d7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905062002268565b62002265838362003623565b90505b92915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f801b81565b5f805f805f805f80620022ba8960056200322b90919063ffffffff16565b620022fe57886040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620022f5919062004d69565b60405180910390fd5b5f620023158a60056200324490919063ffffffff16565b5f1b9050620023248162003349565b61ffff169850620023358162003366565b61ffff169750620023468162003384565b61ffff1696506200235781620033a2565b61ffff1695506200236881620033c0565b62ffffff1694506200237a81620033de565b61ffff1693506200238b81620033fc565b62ffffff169250620023a860ff826200325f90919063ffffffff16565b915050919395975091939597565b5f620023c162003696565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156200240a5750825b90505f60018367ffffffffffffffff161480156200243e57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156200244d575080155b1562002485576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620024d3576001855f0160086101000a81548160ff0219169083151502179055505b620024de88620036bd565b67016345785d8a000087111562002538578667016345785d8a00006040517f5e8988c10000000000000000000000000000000000000000000000000000000081526004016200252f92919062005869565b60405180910390fd5b6200254389620036d5565b866001819055508560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e505f88604051620025bd929190620058d5565b60405180910390a1831562002622575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162002619919062005954565b60405180910390a15b505050505050505050565b5f7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d905090565b6200265f8262000be7565b6200266a8162002cf4565b62002676838362002f1d565b50505050565b6200268662002aae565b6200269c8160086200386f90919063ffffffff16565b620026e057806040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620026d79190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb360405160405180910390a250565b6200273062002aae565b6200274a8161ffff1660056200389e90919063ffffffff16565b6200278e57806040517ffb22c17e00000000000000000000000000000000000000000000000000000000815260040162002785919062005459565b60405180910390fd5b8061ffff167fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1360405160405180910390a250565b5f80620027ce620038b7565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6200280362002aae565b6200280e81620036d5565b50565b6200281b62002aae565b5f60015490508181036200286857816040517f6ea8c7a40000000000000000000000000000000000000000000000000000000081526004016200285f919062004d69565b60405180910390fd5b67016345785d8a0000821115620028c2578167016345785d8a00006040517f5e8988c1000000000000000000000000000000000000000000000000000000008152600401620028b992919062005869565b60405180910390fd5b816001819055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e508183604051620028fc92919062005869565b60405180910390a15050565b6200291262002aae565b5f6200291d620038b7565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1662002981620021d7565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f600154905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f62002a47825f01620038de565b9050919050565b5f805f8062002a60865f0186620038f3565b91509150815f1c815f1c9350935050509250929050565b5f62002a8e60ff836200325f90919063ffffffff16565b9050919050565b5f62002aa4835f018362003930565b5f1c905092915050565b62002ab862002f16565b73ffffffffffffffffffffffffffffffffffffffff1662002ad8620021d7565b73ffffffffffffffffffffffffffffffffffffffff161462002b3c5762002afe62002f16565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002b33919062004cf8565b60405180910390fd5b565b62002b4862004411565b62002b548484620032fa565b809450819550505060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090509392505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b5f62002cec835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6200395a565b905092915050565b62002d098162002d0362002f16565b6200397a565b50565b5f62002d1e86868661ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362002d9b578585856040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162002d929392919062005381565b60405180910390fd5b828173ffffffffffffffffffffffffffffffffffffffff1663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002de6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e0c919062005985565b0362002e5157826040517fb70cd0db00000000000000000000000000000000000000000000000000000000815260040162002e489190620048e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16631b057f6d84846040518363ffffffff1660e01b815260040162002e8e929190620059b5565b5f604051808303815f87803b15801562002ea6575f80fd5b505af115801562002eb9573d5f803e3d5ffd5b50505050505050505050565b5f805f1b830362002f02576040517f7c64a79e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62002f0e8383620039d0565b905092915050565b5f33905090565b5f8062002f2962002c9e565b905062002f3784846200220e565b1562003012575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062002fad62002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600191505062003017565b5f9150505b92915050565b5f8561ffff168761ffff1611806200303a5750610fff8661ffff16115b806200304b57506127108561ffff16115b806200305c57506109c48361ffff16115b806200306f5750620fffff8262ffffff16115b15620030a7576040517f1c07203f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620030c68861ffff1661ffff5f8462003ad0909392919063ffffffff16565b9050620030e88761ffff16610fff60108462003ad0909392919063ffffffff16565b90506200310a8661ffff16610fff601c8462003ad0909392919063ffffffff16565b90506200312c8561ffff16613fff60288462003ad0909392919063ffffffff16565b9050620031508462ffffff1662ffffff60368462003ad0909392919063ffffffff16565b9050620031728361ffff16613fff604e8462003ad0909392919063ffffffff16565b9050620031968262ffffff16620fffff605c8462003ad0909392919063ffffffff16565b9050620031c1815f1c6dffffffffffffffffffffffffffff5f8c62003ad0909392919063ffffffff16565b905098975050505050505050565b5f620031f18484620031e2575f620031e5565b60015b60ff1660018562003ad0565b90509392505050565b5f6200320e845f01845f1b845f1b62003aea565b90509392505050565b5f815f1c9050919050565b5f819050919050565b5f6200323c835f01835f1b62003b23565b905092915050565b5f62003255835f01835f1b62003b43565b5f1c905092915050565b5f600183831c16905092915050565b5f62003295835f018373ffffffffffffffffffffffffffffffffffffffff165f1b62003bc5565b905092915050565b60605f620032ad835f0162003c30565b905060608190508092505050919050565b5f80620032cb8362003c46565b90505f620032d98562003c79565b9050620032f0818362003c8c90919063ffffffff16565b9250505092915050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156200333c57828480945081955050505b8383915091509250929050565b5f6200335f5f8362003fb290919063ffffffff16565b9050919050565b5f6200337d60108362003fc290919063ffffffff16565b9050919050565b5f6200339b601c8362003fc290919063ffffffff16565b9050919050565b5f620033b960288362003fd290919063ffffffff16565b9050919050565b5f620033d760368362003fe290919063ffffffff16565b9050919050565b5f620033f5604e8362003fd290919063ffffffff16565b9050919050565b5f62003413605c8362003ff390919063ffffffff16565b9050919050565b5f83471015620034655747846040517fe4bbecac0000000000000000000000000000000000000000000000000000000081526004016200345c92919062005869565b60405180910390fd5b5f825103620034a0576040517f4ca249dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282516020840186f590505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362003511576040517f741752c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b5f62003529835f01835f1b62003bc5565b905092915050565b5f6200353f825f0162004004565b9050919050565b5f62003555835f018362003930565b5f1c905092915050565b5f818291508161ffff1614620035a1576040517f64ae406d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f620035b1620038b7565b9050805f015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620035e38262004013565b5050565b5f620035f5825f0162004004565b9050919050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f806200362f62002c9e565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b620036c7620040e6565b620036d28162004129565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200373b576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620037f1575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f4fcea971000000000000000000000000000000000000000000000000000000008152600401620037e8919062004cf8565b60405180910390fd5b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721818360405162003863929190620059e7565b60405180910390a15050565b5f62003896835f018373ffffffffffffffffffffffffffffffffffffffff165f1b620041b4565b905092915050565b5f620038af835f01835f1b620042c0565b905092915050565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00905090565b5f620038ec825f01620042f6565b9050919050565b5f805f6200390d84865f016200430b90919063ffffffff16565b905080856002015f8381526020019081526020015f205492509250509250929050565b5f825f018281548110620039495762003948620052a3565b5b905f5260205f200154905092915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6200398682826200220e565b620039cc5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401620039c392919062005a12565b60405180910390fd5b5050565b5f80620039dc62002c9e565b9050620039ea84846200220e565b62003ac5576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062003a6062002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062003aca565b5f9150505b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f81846002015f8581526020019081526020015f208190555062003b1a83855f016200432290919063ffffffff16565b90509392505050565b5f62003b3b82845f016200433990919063ffffffff16565b905092915050565b5f80836002015f8481526020019081526020015f205490505f801b8114801562003b76575062003b74848462003b23565b155b1562003bbb57826040517f02b5668600000000000000000000000000000000000000000000000000000000815260040162003bb29190620048e6565b60405180910390fd5b8091505092915050565b5f62003bd283836200395a565b62003c2657825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f20819055506001905062003c2a565b5f90505b92915050565b606062003c3f825f0162004350565b9050919050565b5f612710608060ff168361ffff16901b8162003c675762003c6662005a3d565b5b04608060ff166001901b019050919050565b5f628000008262ffffff16039050919050565b5f805f80840362003caa57608060ff166001901b9250505062003fac565b8390505f81121562003cc057805f039050811591505b6210000081101562003f2257608060ff166001901b9250846fffffffffffffffffffffffffffffffff86111562003cfc57805f19049050821592505b600182161562003d0f5780840260801c93505b80810260801c9050600282161562003d2a5780840260801c93505b80810260801c9050600482161562003d455780840260801c93505b80810260801c9050600882161562003d605780840260801c93505b80810260801c9050601082161562003d7b5780840260801c93505b80810260801c9050602082161562003d965780840260801c93505b80810260801c9050604082161562003db15780840260801c93505b80810260801c9050608082161562003dcc5780840260801c93505b80810260801c905061010082161562003de85780840260801c93505b80810260801c905061020082161562003e045780840260801c93505b80810260801c905061040082161562003e205780840260801c93505b80810260801c905061080082161562003e3c5780840260801c93505b80810260801c905061100082161562003e585780840260801c93505b80810260801c905061200082161562003e745780840260801c93505b80810260801c905061400082161562003e905780840260801c93505b80810260801c905061800082161562003eac5780840260801c93505b80810260801c90506201000082161562003ec95780840260801c93505b80810260801c90506202000082161562003ee65780840260801c93505b80810260801c90506204000082161562003f035780840260801c93505b80810260801c90506208000082161562003f205780840260801c93505b505b5f830362003f6b5784846040517f3b74b31a00000000000000000000000000000000000000000000000000000000815260040162003f6292919062005a84565b60405180910390fd5b8162003f78578262003fa7565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62003fa6919062005aaf565b5b925050505b92915050565b5f61ffff83831c16905092915050565b5f610fff83831c16905092915050565b5f613fff83831c16905092915050565b5f62ffffff83831c16905092915050565b5f620fffff83831c16905092915050565b5f815f01805490509050919050565b5f6200401e620035fc565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b620040f062004371565b62004127576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b62004133620040e6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620041a6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200419d919062004cf8565b60405180910390fd5b620041b181620035a6565b50565b5f80836001015f8481526020019081526020015f205490505f8114620042b5575f600182620041e4919062005804565b90505f6001865f0180549050620041fc919062005804565b905080821462004269575f865f0182815481106200421f576200421e620052a3565b5b905f5260205f200154905080875f018481548110620042435762004242620052a3565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f018054806200427f576200427e62005ae6565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050620042ba565b5f9150505b92915050565b5f826002015f8381526020019081526020015f205f9055620042ee82845f016200439190919063ffffffff16565b905092915050565b5f62004304825f0162004004565b9050919050565b5f6200431a835f018362003930565b905092915050565b5f62004331835f018362003bc5565b905092915050565b5f62004348835f01836200395a565b905092915050565b60605f62004360835f01620043a8565b905060608190508092505050919050565b5f6200437c62003696565b5f0160089054906101000a900460ff16905090565b5f620043a0835f0183620041b4565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015620043f757602002820191905f5260205f20905b815481526020019060010190808311620043e2575b50505050509050919050565b6119ba8062005b1483390190565b60405180608001604052805f61ffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62004491816200445b565b81146200449c575f80fd5b50565b5f81359050620044af8162004486565b92915050565b5f60208284031215620044cd57620044cc62004453565b5b5f620044dc848285016200449f565b91505092915050565b5f8115159050919050565b620044fb81620044e5565b82525050565b5f602082019050620045165f830184620044f0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b620045598162004545565b82525050565b5f6200456c83836200454e565b60208301905092915050565b5f602082019050919050565b5f62004590826200451c565b6200459c818562004526565b9350620045a98362004536565b805f5b83811015620045df578151620045c388826200455f565b9750620045d08362004578565b925050600181019050620045ac565b5085935050505092915050565b5f6020820190508181035f83015262004606818462004584565b905092915050565b620046198162004545565b811462004624575f80fd5b50565b5f8135905062004637816200460e565b92915050565b5f6020828403121562004655576200465462004453565b5b5f620046648482850162004627565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f620046b5620046af620046a9846200466d565b6200468c565b6200466d565b9050919050565b5f620046c88262004695565b9050919050565b5f620046db82620046bc565b9050919050565b620046ed81620046cf565b82525050565b5f602082019050620047085f830184620046e2565b92915050565b5f6200471a826200466d565b9050919050565b5f6200472d826200470e565b9050919050565b6200473f8162004721565b81146200474a575f80fd5b50565b5f813590506200475d8162004734565b92915050565b5f61ffff82169050919050565b6200477b8162004763565b811462004786575f80fd5b50565b5f81359050620047998162004770565b92915050565b5f62ffffff82169050919050565b620047b8816200479f565b8114620047c3575f80fd5b50565b5f81359050620047d681620047ad565b92915050565b5f805f805f805f805f806101408b8d031215620047fe57620047fd62004453565b5b5f6200480d8d828e016200474d565b9a50506020620048208d828e016200474d565b9950506040620048338d828e0162004789565b9850506060620048468d828e0162004789565b9750506080620048598d828e0162004789565b96505060a06200486c8d828e0162004789565b95505060c06200487f8d828e0162004789565b94505060e0620048928d828e01620047c6565b935050610100620048a68d828e0162004789565b925050610120620048ba8d828e01620047c6565b9150509295989b9194979a5092959850565b5f819050919050565b620048e081620048cc565b82525050565b5f602082019050620048fb5f830184620048d5565b92915050565b6200490c81620048cc565b811462004917575f80fd5b50565b5f813590506200492a8162004901565b92915050565b5f6020828403121562004948576200494762004453565b5b5f62004957848285016200491a565b91505092915050565b5f6020828403121562004978576200497762004453565b5b5f62004987848285016200474d565b91505092915050565b5f805f60608486031215620049aa57620049a962004453565b5b5f620049b9868287016200474d565b9350506020620049cc868287016200474d565b9250506040620049df8682870162004789565b9150509250925092565b620049f4816200470e565b8114620049ff575f80fd5b50565b5f8135905062004a1281620049e9565b92915050565b5f806040838503121562004a315762004a3062004453565b5b5f62004a40858286016200491a565b925050602062004a538582860162004a02565b9150509250929050565b62004a6881620044e5565b811462004a73575f80fd5b50565b5f8135905062004a868162004a5d565b92915050565b5f805f805f805f805f6101208a8c03121562004aad5762004aac62004453565b5b5f62004abc8c828d0162004789565b995050602062004acf8c828d0162004789565b985050604062004ae28c828d0162004789565b975050606062004af58c828d0162004789565b965050608062004b088c828d0162004789565b95505060a062004b1b8c828d01620047c6565b94505060c062004b2e8c828d0162004789565b93505060e062004b418c828d01620047c6565b92505061010062004b558c828d0162004a76565b9150509295985092959850929598565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011262004b895762004b8862004b65565b5b8235905067ffffffffffffffff81111562004ba95762004ba862004b69565b5b60208301915083600182028301111562004bc85762004bc762004b6d565b5b9250929050565b5f805f805f8060a0878903121562004bec5762004beb62004453565b5b5f62004bfb89828a016200474d565b965050602062004c0e89828a016200474d565b955050604062004c2189828a0162004789565b945050606062004c3489828a016200491a565b935050608087013567ffffffffffffffff81111562004c585762004c5762004457565b5b62004c6689828a0162004b71565b92509250509295509295509295565b5f62004c81826200470e565b9050919050565b62004c938162004c75565b811462004c9e575f80fd5b50565b5f8135905062004cb18162004c88565b92915050565b5f6020828403121562004ccf5762004cce62004453565b5b5f62004cde8482850162004ca1565b91505092915050565b62004cf2816200470e565b82525050565b5f60208201905062004d0d5f83018462004ce7565b92915050565b5f806040838503121562004d2c5762004d2b62004453565b5b5f62004d3b8582860162004789565b925050602062004d4e8582860162004a76565b9150509250929050565b62004d638162004545565b82525050565b5f60208201905062004d7e5f83018462004d58565b92915050565b5f805f806080858703121562004d9f5762004d9e62004453565b5b5f62004dae878288016200474d565b945050602062004dc1878288016200474d565b935050604062004dd487828801620047c6565b925050606062004de78782880162004789565b91505092959194509250565b5f62004dff82620046bc565b9050919050565b62004e118162004df3565b82525050565b5f60208201905062004e2c5f83018462004e06565b92915050565b5f806040838503121562004e4b5762004e4a62004453565b5b5f62004e5a858286016200474d565b925050602062004e6d858286016200474d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b62004eab8162004763565b82525050565b62004ebc8162004df3565b82525050565b62004ecd81620044e5565b82525050565b608082015f82015162004ee95f85018262004ea0565b50602082015162004efe602085018262004eb1565b50604082015162004f13604085018262004ec2565b50606082015162004f28606085018262004ec2565b50505050565b5f62004f3b838362004ed3565b60808301905092915050565b5f602082019050919050565b5f62004f5f8262004e77565b62004f6b818562004e81565b935062004f788362004e91565b805f5b8381101562004fae57815162004f92888262004f2e565b975062004f9f8362004f47565b92505060018101905062004f7b565b5085935050505092915050565b5f6020820190508181035f83015262004fd5818462004f53565b905092915050565b5f805f806080858703121562004ff85762004ff762004453565b5b5f62005007878288016200474d565b94505060206200501a878288016200474d565b93505060406200502d8782880162004789565b9250506060620050408782880162004a76565b91505092959194509250565b5f805f6060848603121562005066576200506562004453565b5b5f62005075868287016200474d565b935050602062005088868287016200474d565b92505060406200509b8682870162004627565b9150509250925092565b608082015f820151620050bb5f85018262004ea0565b506020820151620050d0602085018262004eb1565b506040820151620050e5604085018262004ec2565b506060820151620050fa606085018262004ec2565b50505050565b5f608082019050620051155f830184620050a5565b92915050565b5f61010082019050620051315f83018b62004d58565b62005140602083018a62004d58565b6200514f604083018962004d58565b6200515e606083018862004d58565b6200516d608083018762004d58565b6200517c60a083018662004d58565b6200518b60c083018562004d58565b6200519a60e0830184620044f0565b9998505050505050505050565b5f805f8060808587031215620051c257620051c162004453565b5b5f620051d18782880162004a02565b9450506020620051e48782880162004a02565b9350506040620051f78782880162004627565b92505060606200520a8782880162004a02565b91505092959194509250565b5f602082840312156200522e576200522d62004453565b5b5f6200523d8482850162004789565b91505092915050565b5f602082840312156200525e576200525d62004453565b5b5f6200526d8482850162004a02565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620053098262004545565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200533e576200533d620052d0565b5b600182019050919050565b5f62005369620053636200535d8462004763565b6200468c565b62004545565b9050919050565b6200537b8162005349565b82525050565b5f606082019050620053965f830186620046e2565b620053a56020830185620046e2565b620053b4604083018462005370565b949350505050565b620053c78162004763565b82525050565b620053d8816200479f565b82525050565b5f60e082019050620053f35f83018a620053bc565b620054026020830189620053bc565b620054116040830188620053bc565b620054206060830187620053bc565b6200542f6080830186620053cd565b6200543e60a0830185620053bc565b6200544d60c0830184620053cd565b98975050505050505050565b5f6020820190506200546e5f83018462005370565b92915050565b5f620054946200548e62005488846200479f565b6200468c565b62004545565b9050919050565b620054a68162005474565b82525050565b5f60e082019050620054c15f83018a62005370565b620054d0602083018962005370565b620054df604083018862005370565b620054ee606083018762005370565b620054fd60808301866200549b565b6200550c60a083018562005370565b6200551b60c08301846200549b565b98975050505050505050565b5f6040820190506200553c5f83018562004ce7565b6200554b602083018462005370565b9392505050565b5f61010082019050620055685f83018b620053bc565b62005577602083018a620053bc565b620055866040830189620053bc565b620055956060830188620053bc565b620055a46080830187620053cd565b620055b360a0830186620053bc565b620055c260c0830185620053cd565b620055d160e0830184620053cd565b9998505050505050505050565b5f8160601b9050919050565b5f620055f682620055de565b9050919050565b5f6200560982620055ea565b9050919050565b620056256200561f82620046cf565b620055fd565b82525050565b5f8160f01b9050919050565b5f62005643826200562b565b9050919050565b6200565f620056598262004763565b62005637565b82525050565b5f62005672828662005610565b60148201915062005684828562005610565b6014820191506200569682846200564a565b600282019150819050949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015620056e0578082015181840152602081019050620056c3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200570782620056a7565b620057138185620056b1565b935062005725818560208601620056c1565b6200573081620056eb565b840191505092915050565b5f60a082019050620057505f83018862004ce7565b6200575f6020830187620046e2565b6200576e6040830186620046e2565b6200577d6060830185620053bc565b8181036080830152620057918184620056fb565b90509695505050505050565b5f81905092915050565b5f620057b382620056a7565b620057bf81856200579d565b9350620057d1818560208601620056c1565b80840191505092915050565b5f620057ea8285620057a7565b9150620057f88284620057a7565b91508190509392505050565b5f620058108262004545565b91506200581d8362004545565b9250828203905081811115620058385762005837620052d0565b5b92915050565b5f604082019050620058535f83018562004e06565b62005862602083018462004d58565b9392505050565b5f6040820190506200587e5f83018562004d58565b6200588d602083018462004d58565b9392505050565b5f819050919050565b5f620058bd620058b7620058b18462005894565b6200468c565b62004545565b9050919050565b620058cf816200589d565b82525050565b5f604082019050620058ea5f830185620058c4565b620058f9602083018462004d58565b9392505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6200593c62005936620059308462005900565b6200468c565b62005909565b9050919050565b6200594e816200591c565b82525050565b5f602082019050620059695f83018462005943565b92915050565b5f815190506200597f8162004901565b92915050565b5f602082840312156200599d576200599c62004453565b5b5f620059ac848285016200596f565b91505092915050565b5f604082019050620059ca5f830185620048d5565b8181036020830152620059de8184620056fb565b90509392505050565b5f604082019050620059fc5f83018562004ce7565b62005a0b602083018462004ce7565b9392505050565b5f60408201905062005a275f83018562004ce7565b62005a366020830184620048d5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f819050919050565b62005a7e8162005a6a565b82525050565b5f60408201905062005a995f83018562004d58565b62005aa8602083018462005a73565b9392505050565b5f62005abb8262004545565b915062005ac88362004545565b92508262005adb5762005ada62005a3d565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe60a0604052604051620019ba380380620019ba833981810160405281019062000029919062000dab565b8460405180602001604052805f8152506200004b82826200059d60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505f808573ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516200012c919062000e98565b5f60405180830381855afa9150503d805f811462000166576040519150601f19603f3d011682016040523d82523d5f602084013e6200016b565b606091505b50915091505f8180602001905181019062000187919062000f61565b90505f808773ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000234919062000e98565b5f60405180830381855afa9150503d805f81146200026e576040519150601f19603f3d011682016040523d82523d5f602084013e62000273565b606091505b50915091505f818060200190518101906200028f919062000f61565b90508580156200029c5750825b620002de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d59062001034565b60405180910390fd5b60405180602001604052805f8152508051906020012084805190602001201415801562000327575060405180602001604052805f81525080519060200120818051906020012014155b62000369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036090620010c8565b60405180910390fd5b896200039d7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088620004107f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa582645f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508761ffff16620004877fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f569738427825f1b620006a160201b60201c565b5f01819055505f620004a38961ffff16620006aa60201b60201c565b9050848282604051602001620004bc939291906200117e565b604051602081830303815290604052620004fe7f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f5f1b6200083060201b60201c565b5f0190816200050e919062001414565b5084828260405160200162000526939291906200151e565b604051602081830303815290604052620005687fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845f1b6200083060201b60201c565b5f01908162000578919062001414565b506200058b8c896200059d60201b60201c565b5050505050505050505050506200177e565b620005ae826200083960201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a25f8151111562000683576200067c8273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000649573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200066f919062001587565b82620009df60201b60201c565b5062000694565b6200069362000a6b60201b60201c565b5b5050565b5f819050919050565b5f819050919050565b60605f8261ffff1603620006f6576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506200082b565b5f8290505f5b5f8261ffff16146200072f5780806200071590620015e4565b915050600a826200072791906200163f565b9150620006fc565b5f8161ffff1667ffffffffffffffff81111562000751576200075062000c4f565b5b6040519080825280601f01601f191660200182016040528015620007845781602001600182028036833780820191505090505b5090505b5f8561ffff16146200082457600182620007a3919062001676565b9150600a85620007b49190620016b2565b6030620007c29190620016e9565b60f81b818361ffff1681518110620007df57620007de62001725565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856200081c91906200163f565b945062000788565b8093505050505b919050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036200089757806040517f64ced0ec0000000000000000000000000000000000000000000000000000000081526004016200088e919062001763565b60405180910390fd5b80620008cb7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000955573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200097b919062001587565b90505f8173ffffffffffffffffffffffffffffffffffffffff163b03620009db57806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401620009d2919062001763565b60405180910390fd5b5050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405162000a0a919062000e98565b5f60405180830381855af49150503d805f811462000a44576040519150601f19603f3d011682016040523d82523d5f602084013e62000a49565b606091505b509150915062000a6185838362000aa860201b60201c565b9250505092915050565b5f34111562000aa6576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60608262000ac75762000ac18262000b4460201b60201c565b62000b3c565b5f825114801562000aee57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1562000b3357836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040162000b2a919062001763565b60405180910390fd5b81905062000b3d565b5b9392505050565b5f8151111562000b575780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bc58262000b9a565b9050919050565b62000bd78162000bb9565b811462000be2575f80fd5b50565b5f8151905062000bf58162000bcc565b92915050565b5f61ffff82169050919050565b62000c138162000bfb565b811462000c1e575f80fd5b50565b5f8151905062000c318162000c08565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000c878262000c3f565b810181811067ffffffffffffffff8211171562000ca95762000ca862000c4f565b5b80604052505050565b5f62000cbd62000b89565b905062000ccb828262000c7c565b919050565b5f67ffffffffffffffff82111562000ced5762000cec62000c4f565b5b62000cf88262000c3f565b9050602081019050919050565b5f5b8381101562000d2457808201518184015260208101905062000d07565b5f8484015250505050565b5f62000d4562000d3f8462000cd0565b62000cb2565b90508281526020810184848401111562000d645762000d6362000c3b565b5b62000d7184828562000d05565b509392505050565b5f82601f83011262000d905762000d8f62000c37565b5b815162000da284826020860162000d2f565b91505092915050565b5f805f805f60a0868803121562000dc75762000dc662000b92565b5b5f62000dd68882890162000be5565b955050602062000de98882890162000be5565b945050604062000dfc8882890162000be5565b935050606062000e0f8882890162000c21565b925050608086015167ffffffffffffffff81111562000e335762000e3262000b96565b5b62000e418882890162000d79565b9150509295509295909350565b5f81519050919050565b5f81905092915050565b5f62000e6e8262000e4e565b62000e7a818562000e58565b935062000e8c81856020860162000d05565b80840191505092915050565b5f62000ea5828462000e62565b915081905092915050565b5f67ffffffffffffffff82111562000ecd5762000ecc62000c4f565b5b62000ed88262000c3f565b9050602081019050919050565b5f62000efb62000ef58462000eb0565b62000cb2565b90508281526020810184848401111562000f1a5762000f1962000c3b565b5b62000f2784828562000d05565b509392505050565b5f82601f83011262000f465762000f4562000c37565b5b815162000f5884826020860162000ee5565b91505092915050565b5f6020828403121562000f795762000f7862000b92565b5b5f82015167ffffffffffffffff81111562000f995762000f9862000b96565b5b62000fa78482850162000f2f565b91505092915050565b5f82825260208201905092915050565b7f4c4250616972426561636f6e50726f78793a204661696c656420746f206765745f8201527f20746f6b656e2073796d626f6c73000000000000000000000000000000000000602082015250565b5f6200101c602e8362000fb0565b9150620010298262000fc0565b604082019050919050565b5f6020820190508181035f8301526200104d816200100e565b9050919050565b7f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e5f8201527f2073796d626f6c73000000000000000000000000000000000000000000000000602082015250565b5f620010b060288362000fb0565b9150620010bd8262001054565b604082019050919050565b5f6020820190508181035f830152620010e181620010a2565b9050919050565b7f4c42545f00000000000000000000000000000000000000000000000000000000815250565b5f81519050919050565b5f81905092915050565b5f6200112e826200110e565b6200113a818562001118565b93506200114c81856020860162000d05565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b5f6200118a82620010e8565b6004820191506200119c828662001122565b9150620011a98262001158565b600182019150620011bb828562001122565b9150620011c88262001158565b600182019150620011da828462001122565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200122c57607f821691505b602082108103620012425762001241620011e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620012a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001269565b620012b2868362001269565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620012fc620012f6620012f084620012ca565b620012d3565b620012ca565b9050919050565b5f819050919050565b6200131783620012dc565b6200132f620013268262001303565b84845462001275565b825550505050565b5f90565b6200134562001337565b620013528184846200130c565b505050565b5b8181101562001379576200136d5f826200133b565b60018101905062001358565b5050565b601f821115620013c857620013928162001248565b6200139d846200125a565b81016020851015620013ad578190505b620013c5620013bc856200125a565b83018262001357565b50505b505050565b5f82821c905092915050565b5f620013ea5f1984600802620013cd565b1980831691505092915050565b5f620014048383620013d9565b9150826002028217905092915050565b6200141f826200110e565b67ffffffffffffffff8111156200143b576200143a62000c4f565b5b62001447825462001214565b620014548282856200137d565b5f60209050601f8311600181146200148a575f841562001475578287015190505b620014818582620013f7565b865550620014f0565b601f1984166200149a8662001248565b5f5b82811015620014c3578489015182556001820191506020850194506020810190506200149c565b86831015620014e35784890151620014df601f891682620013d9565b8355505b6001600288020188555050505b505050505050565b7f4c697175696469747920426f6f6b20546f6b656e200000000000000000000000815250565b5f6200152a82620014f8565b6015820191506200153c828662001122565b9150620015498262001158565b6001820191506200155b828562001122565b9150620015688262001158565b6001820191506200157a828462001122565b9150819050949350505050565b5f602082840312156200159f576200159e62000b92565b5b5f620015ae8482850162000be5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620015f08262000bfb565b915061ffff8203620016075762001606620015b7565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200164b8262000bfb565b9150620016588362000bfb565b9250826200166b576200166a62001612565b5b828204905092915050565b5f620016828262000bfb565b91506200168f8362000bfb565b9250828203905061ffff811115620016ac57620016ab620015b7565b5b92915050565b5f620016be8262000bfb565b9150620016cb8362000bfb565b925082620016de57620016dd62001612565b5b828206905092915050565b5f620016f58262000bfb565b9150620017028362000bfb565b9250828201905061ffff8111156200171f576200171e620015b7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6200175d8162000bb9565b82525050565b5f602082019050620017785f83018462001752565b92915050565b608051610223620017975f395f61011801526102235ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061005c565b005b34801561003d575f80fd5b5061004661006e565b604051610053919061017b565b60405180910390f35b61006c61006761007c565b6100f6565b565b5f610077610115565b905090565b5f610085610115565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f191906101c2565b905090565b365f80375f80365f845af43d5f803e805f8114610111573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101658261013c565b9050919050565b6101758161015b565b82525050565b5f60208201905061018e5f83018461016c565b92915050565b5f80fd5b6101a18161015b565b81146101ab575f80fd5b50565b5f815190506101bc81610198565b92915050565b5f602082840312156101d7576101d6610194565b5b5f6101e4848285016101ae565b9150509291505056fea2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033a2646970667358221220408f674abc88915a00048d86f4f02c24344fb5b67b185d05ce64c6c9aedc7e7c64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH3 0x21 PUSH3 0x27 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x191 JUMP JUMPDEST PUSH0 PUSH3 0x38 PUSH3 0x12B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x83 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 AND DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH3 0x128 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD PUSH3 0x11F SWAP2 SWAP1 PUSH3 0x176 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x170 DUP2 PUSH3 0x152 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x18B PUSH0 DUP4 ADD DUP5 PUSH3 0x165 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7503 DUP1 PUSH3 0x19F PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x2AE JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x701AB8C1 GT PUSH3 0x16F JUMPI DUP1 PUSH4 0xAABC4B3C GT PUSH3 0xD3 JUMPI DUP1 PUSH4 0xE203A31F GT PUSH3 0x91 JUMPI DUP1 PUSH4 0xE203A31F EQ PUSH3 0x847 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH3 0x867 JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH3 0x889 JUMPI DUP1 PUSH4 0xE92D0D5D EQ PUSH3 0x8A9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x8C9 JUMPI DUP1 PUSH4 0xFD90C2BE EQ PUSH3 0x8E9 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0xAABC4B3C EQ PUSH3 0x788 JUMPI DUP1 PUSH4 0xBE203094 EQ PUSH3 0x7C5 JUMPI DUP1 PUSH4 0xC1B931BE EQ PUSH3 0x7E5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x807 JUMPI DUP1 PUSH4 0xDDBFD941 EQ PUSH3 0x827 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x80C5061E GT PUSH3 0x12D JUMPI DUP1 PUSH4 0x80C5061E EQ PUSH3 0x6A8 JUMPI DUP1 PUSH4 0x8CE9AA1C EQ PUSH3 0x6CA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x6EC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x70E JUMPI DUP1 PUSH4 0xA0A0EA39 EQ PUSH3 0x744 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x766 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x701AB8C1 EQ PUSH3 0x602 JUMPI DUP1 PUSH4 0x704037BD EQ PUSH3 0x624 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x65A JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH3 0x666 JUMPI DUP1 PUSH4 0x7DAF5D66 EQ PUSH3 0x672 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 GT PUSH3 0x217 JUMPI DUP1 PUSH4 0x5A440923 GT PUSH3 0x1D5 JUMPI DUP1 PUSH4 0x5A440923 EQ PUSH3 0x512 JUMPI DUP1 PUSH4 0x5B35875C EQ PUSH3 0x532 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH3 0x554 JUMPI DUP1 PUSH4 0x661D7FFB EQ PUSH3 0x58A JUMPI DUP1 PUSH4 0x6622E0D7 EQ PUSH3 0x5AC JUMPI DUP1 PUSH4 0x69D56EA3 EQ PUSH3 0x5E2 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 EQ PUSH3 0x46E JUMPI DUP1 PUSH4 0x3C78A941 EQ PUSH3 0x48E JUMPI DUP1 PUSH4 0x4CCB20C0 EQ PUSH3 0x4AE JUMPI DUP1 PUSH4 0x4CD161D3 EQ PUSH3 0x4D0 JUMPI DUP1 PUSH4 0x4E937C3A EQ PUSH3 0x4F0 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH3 0x271 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x382 JUMPI DUP1 PUSH4 0x27721842 EQ PUSH3 0x3B8 JUMPI DUP1 PUSH4 0x2CC06B8C EQ PUSH3 0x3EE JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x40E JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x42E JUMPI DUP1 PUSH4 0x379EE803 EQ PUSH3 0x44E JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x2B2 JUMPI DUP1 PUSH4 0x282C9C1 EQ PUSH3 0x2E8 JUMPI DUP1 PUSH4 0x752092B EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x93FF769 EQ PUSH3 0x340 JUMPI DUP1 PUSH4 0x1AF5BACC EQ PUSH3 0x360 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH3 0x2D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x2CA SWAP2 SWAP1 PUSH3 0x44B5 JUMP JUMPDEST PUSH3 0x90B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x2DF SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x2F2 PUSH3 0x987 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x301 SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x322 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0xA89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x337 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x35E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x358 SWAP2 SWAP1 PUSH3 0x47DC JUMP JUMPDEST PUSH3 0xAA7 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x36A PUSH3 0xBC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x379 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x39A SWAP2 SWAP1 PUSH3 0x4930 JUMP JUMPDEST PUSH3 0xBE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3AF SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x3D0 SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0xC13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3E5 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x406 SWAP2 SWAP1 PUSH3 0x4990 JUMP JUMPDEST PUSH3 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x42C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x426 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCC4 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x44C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x446 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCEC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x466 SWAP2 SWAP1 PUSH3 0x4A8C JUMP JUMPDEST PUSH3 0xD6C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x48C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x486 SWAP2 SWAP1 PUSH3 0x4BCF JUMP JUMPDEST PUSH3 0xEB5 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4A6 SWAP2 SWAP1 PUSH3 0x4CB7 JUMP JUMPDEST PUSH3 0xFDC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4B8 PUSH3 0x1046 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x4C7 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x4EE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4E8 SWAP2 SWAP1 PUSH3 0x4D13 JUMP JUMPDEST PUSH3 0x106D JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4FA PUSH3 0x11B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x509 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x530 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x52A SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x11C2 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x53C PUSH3 0x126C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x54B SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x572 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x56C SWAP2 SWAP1 PUSH3 0x4D84 JUMP JUMPDEST PUSH3 0x127F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x581 SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x594 PUSH3 0x1ABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5A3 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x5CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5C4 SWAP2 SWAP1 PUSH3 0x4E32 JUMP JUMPDEST PUSH3 0x1ADE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5D9 SWAP2 SWAP1 PUSH3 0x4FBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x600 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5FA SWAP2 SWAP1 PUSH3 0x4FDD JUMP JUMPDEST PUSH3 0x1D7F JUMP JUMPDEST STOP JUMPDEST PUSH3 0x60C PUSH3 0x2099 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x61B SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x642 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x63C SWAP2 SWAP1 PUSH3 0x504C JUMP JUMPDEST PUSH3 0x20A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x651 SWAP2 SWAP1 PUSH3 0x5100 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x664 PUSH3 0x20C1 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x670 PUSH3 0x20D8 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x690 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x68A SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x216F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x69F SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6B2 PUSH3 0x21B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6C1 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6D4 PUSH3 0x21C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6E3 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6F6 PUSH3 0x21D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x705 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x72C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x726 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x220E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x73B SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x74E PUSH3 0x226E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x75D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x770 PUSH3 0x2296 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x77F SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7A0 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x229C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7BC SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x511B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7DD SWAP2 SWAP1 PUSH3 0x51A7 JUMP JUMPDEST PUSH3 0x23B6 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x7EF PUSH3 0x262D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7FE SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x825 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x81F SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x2654 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x845 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x83F SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x267C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x865 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x85F SWAP2 SWAP1 PUSH3 0x5216 JUMP JUMPDEST PUSH3 0x2726 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x871 PUSH3 0x27C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x880 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x8A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8A1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x27F9 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8C1 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x2811 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8E1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x2908 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8F3 PUSH3 0x29C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x902 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH3 0x980 JUMPI POP PUSH3 0x97F DUP3 PUSH3 0x29D0 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x996 PUSH1 0x5 PUSH3 0x2A39 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0xA85 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x9BE JUMPI PUSH3 0x9BD PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x9ED JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0xA75 JUMPI PUSH0 DUP1 PUSH3 0xA14 DUP4 PUSH1 0x5 PUSH3 0x2A4E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xA25 DUP2 PUSH0 SHL PUSH3 0x2A77 JUMP JUMPDEST ISZERO PUSH3 0xA5F JUMPI DUP2 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH3 0xA42 JUMPI PUSH3 0xA41 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP1 PUSH3 0xA5B SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP DUP1 PUSH3 0xA6D SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP1 POP PUSH3 0x9F3 JUMP JUMPDEST POP DUP2 DUP2 LT ISZERO PUSH3 0xA83 JUMPI DUP1 DUP4 MSTORE JUMPDEST POP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0xAA0 DUP3 PUSH1 0x8 PUSH3 0x2A95 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xAB1 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0xAC3 DUP12 DUP12 DUP12 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xB40 JUMPI DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB37 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6653851A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB87 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x53DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xB9F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xBB2 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0xBF3 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xC2A DUP3 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xC5D DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCBE DUP5 DUP5 DUP5 PUSH0 DUP1 SHL PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xC84 JUMPI PUSH3 0xC83 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xCB7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCCF DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0xCDA DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCE6 DUP4 DUP4 PUSH3 0x2EC5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCF6 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0xD5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xD67 DUP3 DUP3 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH3 0xD76 PUSH3 0x2AAE JUMP JUMPDEST PUSH1 0x1 DUP10 PUSH2 0xFFFF AND LT ISZERO PUSH3 0xDC3 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0x4F958E7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xDBA SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0xDE7 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH0 DUP1 SHL PUSH3 0x301D SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH3 0xE0C JUMPI PUSH3 0xE09 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH3 0xE2A DUP11 PUSH2 0xFFFF AND DUP3 PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP10 PUSH2 0xFFFF AND PUSH32 0x839844A256A87F87C9C835117D9A1C40BE013954064C937072ACB32D36DB6A28 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH3 0xE6D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x54AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP2 ISZERO ISZERO DUP11 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xEE1 DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF03 DUP6 PUSH3 0x3217 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH3 0xF49 JUMPI POP PUSH0 PUSH1 0xA0 SHL PUSH3 0xF30 DUP6 PUSH3 0x3222 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST ISZERO PUSH3 0xF81 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD43A15D100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFD3 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0xFE6 PUSH3 0x2AAE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3B9FBE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x102C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x103F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x1077 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x1091 DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x10D5 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x10CC SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x10F0 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP DUP2 ISZERO ISZERO PUSH3 0x110D PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO SUB PUSH3 0x1147 JUMPI PUSH1 0x40 MLOAD PUSH32 0x237C71B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x117C DUP4 PUSH2 0xFFFF AND PUSH3 0x1168 DUP5 PUSH1 0xFF DUP6 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP2 ISZERO ISZERO DUP4 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x11CC PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x11E2 DUP2 PUSH1 0x8 PUSH3 0x326E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x1226 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x3CE0AD900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x121D SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x84CC2115995684DCB0CD3D3A9565E3D32F075DE81DB70C8DC3A719B2A47AF67E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x127A PUSH1 0x5 PUSH3 0x329D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x129A DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x12DE JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x12D5 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x12F9 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH3 0x1308 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x1343 DUP3 PUSH3 0x2A77 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH3 0x134F JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x1396 JUMPI CALLER DUP5 PUSH1 0x40 MLOAD PUSH32 0x9F85FCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x138D SWAP3 SWAP2 SWAP1 PUSH3 0x5527 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x13AC DUP7 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x13F0 JUMPI DUP6 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x13E7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1463 JUMPI DUP7 PUSH1 0x40 MLOAD PUSH32 0x2F9B185300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x145A SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x146F DUP6 DUP6 PUSH3 0x32BE JUMP JUMPDEST POP PUSH0 DUP1 PUSH3 0x147E DUP10 DUP10 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x14E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x160C JUMPI DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH32 0xCB27A43500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1603 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x1618 DUP6 PUSH3 0x3349 JUMP JUMPDEST PUSH3 0x1623 DUP7 PUSH3 0x3366 JUMP JUMPDEST PUSH3 0x162E DUP8 PUSH3 0x3384 JUMP JUMPDEST PUSH3 0x1639 DUP9 PUSH3 0x33A2 JUMP JUMPDEST PUSH3 0x1644 DUP10 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0x164F DUP11 PUSH3 0x33DE JUMP JUMPDEST PUSH3 0x165A DUP12 PUSH3 0x33FC JUMP JUMPDEST DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x1674 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5552 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x47973BFF00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH0 DUP4 DUP4 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x170B SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5665 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH3 0x1736 SWAP1 PUSH3 0x4403 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP14 DUP14 DUP13 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1786 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x573B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17A8 SWAP3 SWAP2 SWAP1 PUSH3 0x57DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH3 0x17C6 PUSH0 DUP4 DUP4 PUSH3 0x341A JUMP JUMPDEST SWAP8 POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x3 DUP6 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x1A2C DUP7 PUSH2 0xFFFF AND PUSH1 0xA PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH3 0x3518 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP6 PUSH2 0xFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C8D104B27C6B7F4492017A6F5CF3803043688934EBCAA6A03540BEEAF976AFF DUP9 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH3 0x1A96 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x1AA6 SWAP3 SWAP2 SWAP1 PUSH3 0x583E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 PUSH3 0x1AEE DUP6 DUP6 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0xA PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 PUSH3 0x1B79 DUP3 PUSH3 0x3531 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0x1D75 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1BA1 JUMPI PUSH3 0x1BA0 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1BDE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH3 0x1BCA PUSH3 0x4411 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x1BC0 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH0 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x1D72 JUMPI PUSH0 PUSH3 0x1C87 PUSH3 0x1C81 DUP4 DUP8 PUSH3 0x3546 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x355F JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE POP DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x1D5A JUMPI PUSH3 0x1D59 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH3 0x1C5E JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1D89 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x1D97 DUP7 DUP7 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1F56 JUMPI DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x40AA464400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1F4D SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP2 PUSH1 0x60 ADD MLOAD ISZERO ISZERO SUB PUSH3 0x1F97 JUMPI PUSH1 0x40 MLOAD PUSH31 0xDDCCCA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x44CF35361C9FF3C8C1397EC6410D5495CC481FEAEF35C9AF11DA1A637107DE4F DUP6 PUSH1 0x40 MLOAD PUSH3 0x2088 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x20AB PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x20B8 DUP5 DUP5 DUP5 PUSH3 0x2B3E JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x20CB PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x20D6 PUSH0 PUSH3 0x35A6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH3 0x20E3 PUSH3 0x2F16 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2106 PUSH3 0x27C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2161 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2158 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x216C DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x2187 JUMPI PUSH3 0x2186 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x21C3 PUSH1 0x8 PUSH3 0x35E7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0x16345785D8A0000 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x21E3 PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2259 JUMPI PUSH3 0x2223 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x2268 JUMP JUMPDEST PUSH3 0x2265 DUP4 DUP4 PUSH3 0x3623 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x22BA DUP10 PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x22FE JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x22F5 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x2315 DUP11 PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH3 0x2324 DUP2 PUSH3 0x3349 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 POP PUSH3 0x2335 DUP2 PUSH3 0x3366 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP8 POP PUSH3 0x2346 DUP2 PUSH3 0x3384 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP7 POP PUSH3 0x2357 DUP2 PUSH3 0x33A2 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP6 POP PUSH3 0x2368 DUP2 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP5 POP PUSH3 0x237A DUP2 PUSH3 0x33DE JUMP JUMPDEST PUSH2 0xFFFF AND SWAP4 POP PUSH3 0x238B DUP2 PUSH3 0x33FC JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP3 POP PUSH3 0x23A8 PUSH1 0xFF DUP3 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH0 PUSH3 0x23C1 PUSH3 0x3696 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x240A JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x243E JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0x244D JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x2485 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH3 0x24D3 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH3 0x24DE DUP9 PUSH3 0x36BD JUMP JUMPDEST PUSH8 0x16345785D8A0000 DUP8 GT ISZERO PUSH3 0x2538 JUMPI DUP7 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x252F SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2543 DUP10 PUSH3 0x36D5 JUMP JUMPDEST DUP7 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x2 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 PUSH0 DUP9 PUSH1 0x40 MLOAD PUSH3 0x25BD SWAP3 SWAP2 SWAP1 PUSH3 0x58D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP4 ISZERO PUSH3 0x2622 JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH3 0x2619 SWAP2 SWAP1 PUSH3 0x5954 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x265F DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0x266A DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0x2676 DUP4 DUP4 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0x2686 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x269C DUP2 PUSH1 0x8 PUSH3 0x386F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x26E0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x26D7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB767739217755D8AF5A2BA75B181A19FA1750F8BB701F09311CB19A90140CB3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH3 0x2730 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x274A DUP2 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x389E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x278E JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2785 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xFFFF AND PUSH32 0xDD86B848BB56FF540CAA68683FA467D0E7EB5F8B2D44E4EE435742EEEAE9BE13 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x27CE PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH3 0x2803 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x280E DUP2 PUSH3 0x36D5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x281B PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP DUP2 DUP2 SUB PUSH3 0x2868 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6EA8C7A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x285F SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0x16345785D8A0000 DUP3 GT ISZERO PUSH3 0x28C2 JUMPI DUP2 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x28B9 SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x28FC SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH3 0x2912 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0x291D PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2981 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A47 DUP3 PUSH0 ADD PUSH3 0x38DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x2A60 DUP7 PUSH0 ADD DUP7 PUSH3 0x38F3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SHR DUP2 PUSH0 SHR SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A8E PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2AA4 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2AB8 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2AD8 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2B3C JUMPI PUSH3 0x2AFE PUSH3 0x2F16 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2B33 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x2B48 PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x2B54 DUP5 DUP5 PUSH3 0x32FA JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x2CEC DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2D09 DUP2 PUSH3 0x2D03 PUSH3 0x2F16 JUMP JUMPDEST PUSH3 0x397A JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH3 0x2D1E DUP7 DUP7 DUP7 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x2D9B JUMPI DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D92 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x781A8915 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2DE6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E0C SWAP2 SWAP1 PUSH3 0x5985 JUMP JUMPDEST SUB PUSH3 0x2E51 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xB70CD0DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E48 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B057F6D DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E8E SWAP3 SWAP2 SWAP1 PUSH3 0x59B5 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2EA6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x2EB9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2F02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C64A79E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2F0E DUP4 DUP4 PUSH3 0x39D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x2F29 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x2F37 DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST ISZERO PUSH3 0x3012 JUMPI PUSH0 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x2FAD PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3017 JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND DUP8 PUSH2 0xFFFF AND GT DUP1 PUSH3 0x303A JUMPI POP PUSH2 0xFFF DUP7 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x304B JUMPI POP PUSH2 0x2710 DUP6 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x305C JUMPI POP PUSH2 0x9C4 DUP4 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x306F JUMPI POP PUSH3 0xFFFFF DUP3 PUSH3 0xFFFFFF AND GT JUMPDEST ISZERO PUSH3 0x30A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1C07203F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x30C6 DUP9 PUSH2 0xFFFF AND PUSH2 0xFFFF PUSH0 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x30E8 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x10 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x310A DUP7 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x1C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x312C DUP6 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x28 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3150 DUP5 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH1 0x36 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3172 DUP4 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x4E DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3196 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFF PUSH1 0x5C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x31C1 DUP2 PUSH0 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 DUP13 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x31F1 DUP5 DUP5 PUSH3 0x31E2 JUMPI PUSH0 PUSH3 0x31E5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP6 PUSH3 0x3AD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x320E DUP5 PUSH0 ADD DUP5 PUSH0 SHL DUP5 PUSH0 SHL PUSH3 0x3AEA JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x323C DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B23 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3255 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B43 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3295 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x32AD DUP4 PUSH0 ADD PUSH3 0x3C30 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x32CB DUP4 PUSH3 0x3C46 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH3 0x32D9 DUP6 PUSH3 0x3C79 JUMP JUMPDEST SWAP1 POP PUSH3 0x32F0 DUP2 DUP4 PUSH3 0x3C8C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x333C JUMPI DUP3 DUP5 DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP JUMPDEST DUP4 DUP4 SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x335F PUSH0 DUP4 PUSH3 0x3FB2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x337D PUSH1 0x10 DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x339B PUSH1 0x1C DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33B9 PUSH1 0x28 DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33D7 PUSH1 0x36 DUP4 PUSH3 0x3FE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33F5 PUSH1 0x4E DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3413 PUSH1 0x5C DUP4 PUSH3 0x3FF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 SELFBALANCE LT ISZERO PUSH3 0x3465 JUMPI SELFBALANCE DUP5 PUSH1 0x40 MLOAD PUSH32 0xE4BBECAC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x345C SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 MLOAD SUB PUSH3 0x34A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD DUP7 CREATE2 SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x3511 JUMPI PUSH1 0x40 MLOAD PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3529 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x353F DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3555 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP3 SWAP2 POP DUP2 PUSH2 0xFFFF AND EQ PUSH3 0x35A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x64AE406D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x35B1 PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH3 0x35E3 DUP3 PUSH3 0x4013 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH3 0x35F5 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x362F PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x36C7 PUSH3 0x40E6 JUMP JUMPDEST PUSH3 0x36D2 DUP2 PUSH3 0x4129 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x373B JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x37F1 JUMPI PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH32 0x4FCEA97100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x37E8 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x3863 SWAP3 SWAP2 SWAP1 PUSH3 0x59E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3896 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x38AF DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x42C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0x237E158222E3E6968B72B9DB0D8043AACF074AD9F650F0D1606B4D82EE432C00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x38EC DUP3 PUSH0 ADD PUSH3 0x42F6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH3 0x390D DUP5 DUP7 PUSH0 ADD PUSH3 0x430B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x3949 JUMPI PUSH3 0x3948 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x3986 DUP3 DUP3 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x39CC JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x39C3 SWAP3 SWAP2 SWAP1 PUSH3 0x5A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x39DC PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x39EA DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x3AC5 JUMPI PUSH1 0x1 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x3A60 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3ACA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP5 PUSH1 0x2 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH3 0x3B1A DUP4 DUP6 PUSH0 ADD PUSH3 0x4322 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3B3B DUP3 DUP5 PUSH0 ADD PUSH3 0x4339 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x2 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP1 SHL DUP2 EQ DUP1 ISZERO PUSH3 0x3B76 JUMPI POP PUSH3 0x3B74 DUP5 DUP5 PUSH3 0x3B23 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH3 0x3BBB JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x2B5668600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3BB2 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3BD2 DUP4 DUP4 PUSH3 0x395A JUMP JUMPDEST PUSH3 0x3C26 JUMPI DUP3 PUSH0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH0 ADD DUP1 SLOAD SWAP1 POP DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP PUSH3 0x3C2A JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x3C3F DUP3 PUSH0 ADD PUSH3 0x4350 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2710 PUSH1 0x80 PUSH1 0xFF AND DUP4 PUSH2 0xFFFF AND SWAP1 SHL DUP2 PUSH3 0x3C67 JUMPI PUSH3 0x3C66 PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DIV PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x800000 DUP3 PUSH3 0xFFFFFF AND SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 DUP5 SUB PUSH3 0x3CAA JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP POP POP PUSH3 0x3FAC JUMP JUMPDEST DUP4 SWAP1 POP PUSH0 DUP2 SLT ISZERO PUSH3 0x3CC0 JUMPI DUP1 PUSH0 SUB SWAP1 POP DUP2 ISZERO SWAP2 POP JUMPDEST PUSH3 0x100000 DUP2 LT ISZERO PUSH3 0x3F22 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 GT ISZERO PUSH3 0x3CFC JUMPI DUP1 PUSH0 NOT DIV SWAP1 POP DUP3 ISZERO SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH3 0x3D0F JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH3 0x3D2A JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x4 DUP3 AND ISZERO PUSH3 0x3D45 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x8 DUP3 AND ISZERO PUSH3 0x3D60 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x10 DUP3 AND ISZERO PUSH3 0x3D7B JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x20 DUP3 AND ISZERO PUSH3 0x3D96 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x40 DUP3 AND ISZERO PUSH3 0x3DB1 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x80 DUP3 AND ISZERO PUSH3 0x3DCC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x100 DUP3 AND ISZERO PUSH3 0x3DE8 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x200 DUP3 AND ISZERO PUSH3 0x3E04 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x400 DUP3 AND ISZERO PUSH3 0x3E20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x800 DUP3 AND ISZERO PUSH3 0x3E3C JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x1000 DUP3 AND ISZERO PUSH3 0x3E58 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x2000 DUP3 AND ISZERO PUSH3 0x3E74 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x4000 DUP3 AND ISZERO PUSH3 0x3E90 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x8000 DUP3 AND ISZERO PUSH3 0x3EAC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x10000 DUP3 AND ISZERO PUSH3 0x3EC9 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x20000 DUP3 AND ISZERO PUSH3 0x3EE6 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x40000 DUP3 AND ISZERO PUSH3 0x3F03 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x80000 DUP3 AND ISZERO PUSH3 0x3F20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST POP JUMPDEST PUSH0 DUP4 SUB PUSH3 0x3F6B JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3B74B31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3F62 SWAP3 SWAP2 SWAP1 PUSH3 0x5A84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH3 0x3F78 JUMPI DUP3 PUSH3 0x3FA7 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x3FA6 SWAP2 SWAP1 PUSH3 0x5AAF JUMP JUMPDEST JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3FFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x401E PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP3 DUP3 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH3 0x40F0 PUSH3 0x4371 JUMP JUMPDEST PUSH3 0x4127 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x4133 PUSH3 0x40E6 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x41A6 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x419D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x41B1 DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 EQ PUSH3 0x42B5 JUMPI PUSH0 PUSH1 0x1 DUP3 PUSH3 0x41E4 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP7 PUSH0 ADD DUP1 SLOAD SWAP1 POP PUSH3 0x41FC SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x4269 JUMPI PUSH0 DUP7 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x421F JUMPI PUSH3 0x421E PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x4243 JUMPI PUSH3 0x4242 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP8 PUSH1 0x1 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP6 PUSH0 ADD DUP1 SLOAD DUP1 PUSH3 0x427F JUMPI PUSH3 0x427E PUSH3 0x5AE6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x42BA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH3 0x42EE DUP3 DUP5 PUSH0 ADD PUSH3 0x4391 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4304 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x431A DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4331 DUP4 PUSH0 ADD DUP4 PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4348 DUP4 PUSH0 ADD DUP4 PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x4360 DUP4 PUSH0 ADD PUSH3 0x43A8 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x437C PUSH3 0x3696 JUMP JUMPDEST PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x43A0 DUP4 PUSH0 ADD DUP4 PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x43F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x43E2 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x19BA DUP1 PUSH3 0x5B14 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4491 DUP2 PUSH3 0x445B JUMP JUMPDEST DUP2 EQ PUSH3 0x449C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x44AF DUP2 PUSH3 0x4486 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x44CD JUMPI PUSH3 0x44CC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x44DC DUP5 DUP3 DUP6 ADD PUSH3 0x449F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x44FB DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4516 PUSH0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4559 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x456C DUP4 DUP4 PUSH3 0x454E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4590 DUP3 PUSH3 0x451C JUMP JUMPDEST PUSH3 0x459C DUP2 DUP6 PUSH3 0x4526 JUMP JUMPDEST SWAP4 POP PUSH3 0x45A9 DUP4 PUSH3 0x4536 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x45DF JUMPI DUP2 MLOAD PUSH3 0x45C3 DUP9 DUP3 PUSH3 0x455F JUMP JUMPDEST SWAP8 POP PUSH3 0x45D0 DUP4 PUSH3 0x4578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x45AC JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4606 DUP2 DUP5 PUSH3 0x4584 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4619 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP2 EQ PUSH3 0x4624 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4637 DUP2 PUSH3 0x460E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4655 JUMPI PUSH3 0x4654 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4664 DUP5 DUP3 DUP6 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46B5 PUSH3 0x46AF PUSH3 0x46A9 DUP5 PUSH3 0x466D JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46C8 DUP3 PUSH3 0x4695 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46DB DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x46ED DUP2 PUSH3 0x46CF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4708 PUSH0 DUP4 ADD DUP5 PUSH3 0x46E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x471A DUP3 PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x472D DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x473F DUP2 PUSH3 0x4721 JUMP JUMPDEST DUP2 EQ PUSH3 0x474A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x475D DUP2 PUSH3 0x4734 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x477B DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP2 EQ PUSH3 0x4786 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4799 DUP2 PUSH3 0x4770 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x47B8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP2 EQ PUSH3 0x47C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x47D6 DUP2 PUSH3 0x47AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH3 0x47FE JUMPI PUSH3 0x47FD PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x480D DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH3 0x4820 DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH3 0x4833 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH3 0x4846 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH3 0x4859 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH3 0x486C DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH3 0x487F DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH3 0x4892 DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 PUSH3 0x48A6 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x120 PUSH3 0x48BA DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x48E0 DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x48FB PUSH0 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x490C DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP2 EQ PUSH3 0x4917 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x492A DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4948 JUMPI PUSH3 0x4947 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4957 DUP5 DUP3 DUP6 ADD PUSH3 0x491A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4978 JUMPI PUSH3 0x4977 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4987 DUP5 DUP3 DUP6 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x49AA JUMPI PUSH3 0x49A9 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x49B9 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x49CC DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x49DF DUP7 DUP3 DUP8 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x49F4 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP2 EQ PUSH3 0x49FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A12 DUP2 PUSH3 0x49E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4A31 JUMPI PUSH3 0x4A30 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4A40 DUP6 DUP3 DUP7 ADD PUSH3 0x491A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4A53 DUP6 DUP3 DUP7 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4A68 DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP2 EQ PUSH3 0x4A73 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A86 DUP2 PUSH3 0x4A5D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH3 0x4AAD JUMPI PUSH3 0x4AAC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4ABC DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH3 0x4ACF DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH3 0x4AE2 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH3 0x4AF5 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH3 0x4B08 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH3 0x4B1B DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH3 0x4B2E DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH3 0x4B41 DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH3 0x4B55 DUP13 DUP3 DUP14 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x4B89 JUMPI PUSH3 0x4B88 PUSH3 0x4B65 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4BA9 JUMPI PUSH3 0x4BA8 PUSH3 0x4B69 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH3 0x4BC8 JUMPI PUSH3 0x4BC7 PUSH3 0x4B6D JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x4BEC JUMPI PUSH3 0x4BEB PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4BFB DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH3 0x4C0E DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH3 0x4C21 DUP10 DUP3 DUP11 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH3 0x4C34 DUP10 DUP3 DUP11 ADD PUSH3 0x491A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4C58 JUMPI PUSH3 0x4C57 PUSH3 0x4457 JUMP JUMPDEST JUMPDEST PUSH3 0x4C66 DUP10 DUP3 DUP11 ADD PUSH3 0x4B71 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH3 0x4C81 DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4C93 DUP2 PUSH3 0x4C75 JUMP JUMPDEST DUP2 EQ PUSH3 0x4C9E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4CB1 DUP2 PUSH3 0x4C88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4CCF JUMPI PUSH3 0x4CCE PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4CDE DUP5 DUP3 DUP6 ADD PUSH3 0x4CA1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4CF2 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D0D PUSH0 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4D2C JUMPI PUSH3 0x4D2B PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4D3B DUP6 DUP3 DUP7 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4D4E DUP6 DUP3 DUP7 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4D63 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D7E PUSH0 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4D9F JUMPI PUSH3 0x4D9E PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4DAE DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x4DC1 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x4DD4 DUP8 DUP3 DUP9 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x4DE7 DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH3 0x4DFF DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4E11 DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4E2C PUSH0 DUP4 ADD DUP5 PUSH3 0x4E06 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4E4B JUMPI PUSH3 0x4E4A PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4E5A DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4E6D DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4EAB DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4EBC DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4ECD DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x4EE9 PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x4EFE PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x4F13 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x4F28 PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4F3B DUP4 DUP4 PUSH3 0x4ED3 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4F5F DUP3 PUSH3 0x4E77 JUMP JUMPDEST PUSH3 0x4F6B DUP2 DUP6 PUSH3 0x4E81 JUMP JUMPDEST SWAP4 POP PUSH3 0x4F78 DUP4 PUSH3 0x4E91 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x4FAE JUMPI DUP2 MLOAD PUSH3 0x4F92 DUP9 DUP3 PUSH3 0x4F2E JUMP JUMPDEST SWAP8 POP PUSH3 0x4F9F DUP4 PUSH3 0x4F47 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x4F7B JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4FD5 DUP2 DUP5 PUSH3 0x4F53 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4FF8 JUMPI PUSH3 0x4FF7 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5007 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x501A DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x502D DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x5040 DUP8 DUP3 DUP9 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x5066 JUMPI PUSH3 0x5065 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5075 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x5088 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x509B DUP7 DUP3 DUP8 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x50BB PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x50D0 PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x50E5 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x50FA PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH3 0x5115 PUSH0 DUP4 ADD DUP5 PUSH3 0x50A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5131 PUSH0 DUP4 ADD DUP12 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5140 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x514F PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x515E PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x516D PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x517C PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x518B PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x519A PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x51C2 JUMPI PUSH3 0x51C1 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x51D1 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x51E4 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x51F7 DUP8 DUP3 DUP9 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x520A DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x522E JUMPI PUSH3 0x522D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x523D DUP5 DUP3 DUP6 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x525E JUMPI PUSH3 0x525D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x526D DUP5 DUP3 DUP6 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x5309 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH3 0x533E JUMPI PUSH3 0x533D PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5369 PUSH3 0x5363 PUSH3 0x535D DUP5 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x537B DUP2 PUSH3 0x5349 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH3 0x5396 PUSH0 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53A5 PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53B4 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH3 0x53C7 DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x53D8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x53F3 PUSH0 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5402 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5411 PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5420 PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x542F PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x543E PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x544D PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x546E PUSH0 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5494 PUSH3 0x548E PUSH3 0x5488 DUP5 PUSH3 0x479F JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x54A6 DUP2 PUSH3 0x5474 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x54C1 PUSH0 DUP4 ADD DUP11 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54D0 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54DF PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54EE PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54FD PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x549B JUMP JUMPDEST PUSH3 0x550C PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x551B PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x549B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x553C PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x554B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5568 PUSH0 DUP4 ADD DUP12 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5577 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5586 PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5595 PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55A4 PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55B3 PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55C2 PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55D1 PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x60 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x55F6 DUP3 PUSH3 0x55DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5609 DUP3 PUSH3 0x55EA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5625 PUSH3 0x561F DUP3 PUSH3 0x46CF JUMP JUMPDEST PUSH3 0x55FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0xF0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5643 DUP3 PUSH3 0x562B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x565F PUSH3 0x5659 DUP3 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x5637 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5672 DUP3 DUP7 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5684 DUP3 DUP6 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5696 DUP3 DUP5 PUSH3 0x564A JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x56E0 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x56C3 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5707 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x5713 DUP2 DUP6 PUSH3 0x56B1 JUMP JUMPDEST SWAP4 POP PUSH3 0x5725 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST PUSH3 0x5730 DUP2 PUSH3 0x56EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH3 0x5750 PUSH0 DUP4 ADD DUP9 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x575F PUSH1 0x20 DUP4 ADD DUP8 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x576E PUSH1 0x40 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x577D PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH3 0x5791 DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57B3 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x57BF DUP2 DUP6 PUSH3 0x579D JUMP JUMPDEST SWAP4 POP PUSH3 0x57D1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57EA DUP3 DUP6 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP PUSH3 0x57F8 DUP3 DUP5 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5810 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x581D DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH3 0x5838 JUMPI PUSH3 0x5837 PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5853 PUSH0 DUP4 ADD DUP6 PUSH3 0x4E06 JUMP JUMPDEST PUSH3 0x5862 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x587E PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x588D PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x58BD PUSH3 0x58B7 PUSH3 0x58B1 DUP5 PUSH3 0x5894 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x58CF DUP2 PUSH3 0x589D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x58EA PUSH0 DUP4 ADD DUP6 PUSH3 0x58C4 JUMP JUMPDEST PUSH3 0x58F9 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x593C PUSH3 0x5936 PUSH3 0x5930 DUP5 PUSH3 0x5900 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x5909 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x594E DUP2 PUSH3 0x591C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x5969 PUSH0 DUP4 ADD DUP5 PUSH3 0x5943 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x597F DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x599D JUMPI PUSH3 0x599C PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x59AC DUP5 DUP3 DUP6 ADD PUSH3 0x596F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59CA PUSH0 DUP4 ADD DUP6 PUSH3 0x48D5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0x59DE DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59FC PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A0B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A27 PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A36 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5A7E DUP2 PUSH3 0x5A6A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A99 PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5AA8 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5A73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5ABB DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x5AC8 DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x5ADB JUMPI PUSH3 0x5ADA PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH3 0x19BA CODESIZE SUB DUP1 PUSH3 0x19BA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x29 SWAP2 SWAP1 PUSH3 0xDAB JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH3 0x4B DUP3 DUP3 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP PUSH0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x12C SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x16B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x187 SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x234 SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x26E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x273 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x28F SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP DUP6 DUP1 ISZERO PUSH3 0x29C JUMPI POP DUP3 JUMPDEST PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D5 SWAP1 PUSH3 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO DUP1 ISZERO PUSH3 0x327 JUMPI POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO JUMPDEST PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x360 SWAP1 PUSH3 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH3 0x39D PUSH32 0x3441AB29B24DAF7A3FD59500B0E08396EC08EC96F5CC2D0362924CDD45CFEC31 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP9 PUSH3 0x410 PUSH32 0x7E1935766B7C49E7482A018A5EE52CA183A2DDFCB6810787916934079AA58264 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 PUSH2 0xFFFF AND PUSH3 0x487 PUSH32 0xFF057B3B4D4500DDA208CDE5D654DB7AA2EC63AC10AB9F9956A1F56973842782 PUSH0 SHL PUSH3 0x6A1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD DUP2 SWAP1 SSTORE POP PUSH0 PUSH3 0x4A3 DUP10 PUSH2 0xFFFF AND PUSH3 0x6AA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x4BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x117E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x4FE PUSH32 0x64FB4ECF63A4059A0BB1412609335673D4954BFF8E9740D216D9469D190CBB3F PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x50E SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x526 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x151E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x568 PUSH32 0xD668863F064048EE8C87390227CA6556D110ECF41306C7B64AAB5C1C530B2D84 PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x578 SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP PUSH3 0x58B DUP13 DUP10 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x177E JUMP JUMPDEST PUSH3 0x5AE DUP3 PUSH3 0x839 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0x683 JUMPI PUSH3 0x67C DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x649 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x66F SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST DUP3 PUSH3 0x9DF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x694 JUMP JUMPDEST PUSH3 0x693 PUSH3 0xA6B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP3 PUSH2 0xFFFF AND SUB PUSH3 0x6F6 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH3 0x82B JUMP JUMPDEST PUSH0 DUP3 SWAP1 POP PUSH0 JUMPDEST PUSH0 DUP3 PUSH2 0xFFFF AND EQ PUSH3 0x72F JUMPI DUP1 DUP1 PUSH3 0x715 SWAP1 PUSH3 0x15E4 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA DUP3 PUSH3 0x727 SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP2 POP PUSH3 0x6FC JUMP JUMPDEST PUSH0 DUP2 PUSH2 0xFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x751 JUMPI PUSH3 0x750 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x784 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND EQ PUSH3 0x824 JUMPI PUSH1 0x1 DUP3 PUSH3 0x7A3 SWAP2 SWAP1 PUSH3 0x1676 JUMP JUMPDEST SWAP2 POP PUSH1 0xA DUP6 PUSH3 0x7B4 SWAP2 SWAP1 PUSH3 0x16B2 JUMP JUMPDEST PUSH1 0x30 PUSH3 0x7C2 SWAP2 SWAP1 PUSH3 0x16E9 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH3 0x7DF JUMPI PUSH3 0x7DE PUSH3 0x1725 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP6 PUSH3 0x81C SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP5 POP PUSH3 0x788 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x897 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x64CED0EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x88E SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x8CB PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x955 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x97B SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x9DB JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9D2 SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xA0A SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0xA44 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xA49 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xA61 DUP6 DUP4 DUP4 PUSH3 0xAA8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH3 0xAA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0xAC7 JUMPI PUSH3 0xAC1 DUP3 PUSH3 0xB44 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xB3C JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH3 0xAEE JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH3 0xB33 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB2A SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH3 0xB3D JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0xB57 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xBC5 DUP3 PUSH3 0xB9A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xBD7 DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP2 EQ PUSH3 0xBE2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xBF5 DUP2 PUSH3 0xBCC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xC13 DUP2 PUSH3 0xBFB JUMP JUMPDEST DUP2 EQ PUSH3 0xC1E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xC31 DUP2 PUSH3 0xC08 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xC87 DUP3 PUSH3 0xC3F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0xCA9 JUMPI PUSH3 0xCA8 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xCBD PUSH3 0xB89 JUMP JUMPDEST SWAP1 POP PUSH3 0xCCB DUP3 DUP3 PUSH3 0xC7C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xCED JUMPI PUSH3 0xCEC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xCF8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xD24 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0xD07 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xD45 PUSH3 0xD3F DUP5 PUSH3 0xCD0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xD64 JUMPI PUSH3 0xD63 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xD71 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xD90 JUMPI PUSH3 0xD8F PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xDA2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xD2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0xDC7 JUMPI PUSH3 0xDC6 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0xDD6 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0xDE9 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0xDFC DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0xE0F DUP9 DUP3 DUP10 ADD PUSH3 0xC21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xE33 JUMPI PUSH3 0xE32 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xE41 DUP9 DUP3 DUP10 ADD PUSH3 0xD79 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xE6E DUP3 PUSH3 0xE4E JUMP JUMPDEST PUSH3 0xE7A DUP2 DUP6 PUSH3 0xE58 JUMP JUMPDEST SWAP4 POP PUSH3 0xE8C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xEA5 DUP3 DUP5 PUSH3 0xE62 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xECD JUMPI PUSH3 0xECC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xED8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xEFB PUSH3 0xEF5 DUP5 PUSH3 0xEB0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xF1A JUMPI PUSH3 0xF19 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xF27 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xF46 JUMPI PUSH3 0xF45 PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xF58 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xEE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xF79 JUMPI PUSH3 0xF78 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xF99 JUMPI PUSH3 0xF98 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xFA7 DUP5 DUP3 DUP6 ADD PUSH3 0xF2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A204661696C656420746F20676574 PUSH0 DUP3 ADD MSTORE PUSH32 0x20746F6B656E2073796D626F6C73000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x101C PUSH1 0x2E DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x1029 DUP3 PUSH3 0xFC0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x104D DUP2 PUSH3 0x100E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A20496E76616C696420746F6B656E PUSH0 DUP3 ADD MSTORE PUSH32 0x2073796D626F6C73000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x10B0 PUSH1 0x28 DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x10BD DUP3 PUSH3 0x1054 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x10E1 DUP2 PUSH3 0x10A2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C42545F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x112E DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH3 0x113A DUP2 DUP6 PUSH3 0x1118 JUMP JUMPDEST SWAP4 POP PUSH3 0x114C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2F00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x118A DUP3 PUSH3 0x10E8 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH3 0x119C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11A9 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11BB DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11C8 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11DA DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x122C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1242 JUMPI PUSH3 0x1241 PUSH3 0x11E7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH3 0x12A6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x1269 JUMP JUMPDEST PUSH3 0x12B2 DUP7 DUP4 PUSH3 0x1269 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x12FC PUSH3 0x12F6 PUSH3 0x12F0 DUP5 PUSH3 0x12CA JUMP JUMPDEST PUSH3 0x12D3 JUMP JUMPDEST PUSH3 0x12CA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1317 DUP4 PUSH3 0x12DC JUMP JUMPDEST PUSH3 0x132F PUSH3 0x1326 DUP3 PUSH3 0x1303 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x1275 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x1345 PUSH3 0x1337 JUMP JUMPDEST PUSH3 0x1352 DUP2 DUP5 DUP5 PUSH3 0x130C JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1379 JUMPI PUSH3 0x136D PUSH0 DUP3 PUSH3 0x133B JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1358 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x13C8 JUMPI PUSH3 0x1392 DUP2 PUSH3 0x1248 JUMP JUMPDEST PUSH3 0x139D DUP5 PUSH3 0x125A JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x13AD JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x13C5 PUSH3 0x13BC DUP6 PUSH3 0x125A JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x1357 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x13EA PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x13CD JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1404 DUP4 DUP4 PUSH3 0x13D9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x141F DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x143B JUMPI PUSH3 0x143A PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0x1447 DUP3 SLOAD PUSH3 0x1214 JUMP JUMPDEST PUSH3 0x1454 DUP3 DUP3 DUP6 PUSH3 0x137D JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x148A JUMPI PUSH0 DUP5 ISZERO PUSH3 0x1475 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x1481 DUP6 DUP3 PUSH3 0x13F7 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x14F0 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x149A DUP7 PUSH3 0x1248 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x14C3 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x149C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x14E3 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x14DF PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x13D9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4C697175696469747920426F6F6B20546F6B656E200000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x152A DUP3 PUSH3 0x14F8 JUMP JUMPDEST PUSH1 0x15 DUP3 ADD SWAP2 POP PUSH3 0x153C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1549 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x155B DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1568 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x157A DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x159F JUMPI PUSH3 0x159E PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x15AE DUP5 DUP3 DUP6 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x15F0 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH2 0xFFFF DUP3 SUB PUSH3 0x1607 JUMPI PUSH3 0x1606 PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x164B DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1658 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x166B JUMPI PUSH3 0x166A PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1682 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x168F DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x16AC JUMPI PUSH3 0x16AB PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16BE DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x16CB DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x16DE JUMPI PUSH3 0x16DD PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16F5 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1702 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x171F JUMPI PUSH3 0x171E PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0x175D DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1778 PUSH0 DUP4 ADD DUP5 PUSH3 0x1752 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x223 PUSH3 0x1797 PUSH0 CODECOPY PUSH0 PUSH2 0x118 ADD MSTORE PUSH2 0x223 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0A0EA39 EQ PUSH2 0x32 JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH2 0x30 PUSH2 0x5C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x46 PUSH2 0x6E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53 SWAP2 SWAP1 PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x67 PUSH2 0x7C JUMP JUMPDEST PUSH2 0xF6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x77 PUSH2 0x115 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85 PUSH2 0x115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0x111 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x165 DUP3 PUSH2 0x13C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x175 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x18E PUSH0 DUP4 ADD DUP5 PUSH2 0x16C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A1 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP2 EQ PUSH2 0x1AB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC DUP2 PUSH2 0x198 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH2 0x1D6 PUSH2 0x194 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1E4 DUP5 DUP3 DUP6 ADD PUSH2 0x1AE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xF 0xAC 0xD1 PUSH26 0xFF68AFE8C4F5F51E9F66C8A009AF1F057180AF91B116A45A1361 0xC6 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH DUP16 PUSH8 0x4ABC88915A00048D DUP7 DELEGATECALL CREATE 0x2C 0x24 CALLVALUE 0x4F 0xB5 0xB6 PUSH28 0x185D05CE64C6C9AEDC7E7C64736F6C63430008140033000000000000 ", + "sourceMap": "1541:27793:21:-:0;;;3448:53;;;;;;;;;;3472:22;:20;;;:22;;:::i;:::-;1541:27793;;7711:422:3;7826:30;7859:26;:24;;;:26;;:::i;:::-;7826:59;;7900:1;:15;;;;;;;;;;;;7896:76;;;7938:23;;;;;;;;;;;;;;7896:76;8003:16;7985:34;;:1;:14;;;;;;;;;;;;:34;;;7981:146;;8052:16;8035:1;:14;;;:33;;;;;;;;;;;;;;;;;;8087:29;8099:16;8087:29;;;;;;:::i;:::-;;;;;;;;7981:146;7760:373;7711:422::o;8737:170::-;8795:30;8870:21;8860:31;;8737:170;:::o;7:101:40:-;43:7;83:18;76:5;72:30;61:41;;7:101;;;:::o;114:115::-;199:23;216:5;199:23;:::i;:::-;194:3;187:36;114:115;;:::o;235:218::-;326:4;364:2;353:9;349:18;341:26;;377:69;443:1;432:9;428:17;419:6;377:69;:::i;:::-;235:218;;;;:::o;1541:27793:21:-;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": 8854, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@LB_HOOKS_MANAGER_ROLE_5062": { + "entryPoint": 3011, + "id": 5062, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE_5067": { + "entryPoint": 6842, + "id": 5067, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Ownable_init_554": { + "entryPoint": 14013, + "id": 554, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@__Ownable_init_unchained_581": { + "entryPoint": 16681, + "id": 581, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_add_4432": { + "entryPoint": 15301, + "id": 4432, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_4566": { + "entryPoint": 14640, + "id": 4566, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_checkInitializing_870": { + "entryPoint": 16614, + "id": 870, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkOwner_622": { + "entryPoint": 10926, + "id": 622, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 11508, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 14714, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_4535": { + "entryPoint": 14682, + "id": 4535, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 11422, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_947": { + "entryPoint": 13974, + "id": 947, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getLBPairInformation_6476": { + "entryPoint": 11070, + "id": 6476, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_getOwnable2StepStorage_388": { + "entryPoint": 14519, + "id": 388, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getOwnableStorage_525": { + "entryPoint": 13820, + "id": 525, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 14800, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_6621": { + "entryPoint": 11973, + "id": 6621, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_938": { + "entryPoint": 17265, + "id": 938, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_isPresetOpen_6389": { + "entryPoint": 10871, + "id": 6389, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_length_4549": { + "entryPoint": 16388, + "id": 4549, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_976": { + "entryPoint": 12054, + "id": 976, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_remove_4516": { + "entryPoint": 16820, + "id": 4516, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_361": { + "entryPoint": 12061, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setFeeRecipient_6427": { + "entryPoint": 14037, + "id": 6427, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setLBHooksParametersOnPair_6569": { + "entryPoint": 11532, + "id": 6569, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@_sortTokens_6509": { + "entryPoint": 13050, + "id": 6509, + "parameterSlots": 2, + "returnSlots": 2 + }, + "@_transferOwnership_474": { + "entryPoint": 13734, + "id": 474, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_transferOwnership_693": { + "entryPoint": 16403, + "id": 693, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_values_4580": { + "entryPoint": 17320, + "id": 4580, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@acceptOwnership_498": { + "entryPoint": 8408, + "id": 498, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@addQuoteAsset_6348": { + "entryPoint": 4546, + "id": 6348, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@add_4602": { + "entryPoint": 17186, + "id": 4602, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_4732": { + "entryPoint": 12910, + "id": 4732, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_4883": { + "entryPoint": 13592, + "id": 4883, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_2482": { + "entryPoint": 14579, + "id": 2482, + "parameterSlots": 2, + "returnSlots": 2 + }, + "@at_2700": { + "entryPoint": 10830, + "id": 2700, + "parameterSlots": 2, + "returnSlots": 2 + }, + "@at_4671": { + "entryPoint": 17163, + "id": 4671, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_4828": { + "entryPoint": 10901, + "id": 4828, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_4961": { + "entryPoint": 13638, + "id": 4961, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_2438": { + "entryPoint": 15139, + "id": 2438, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_2651": { + "entryPoint": 12843, + "id": 2651, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_4638": { + "entryPoint": 17209, + "id": 4638, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_4786": { + "entryPoint": 11461, + "id": 4786, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@createLBPair_5863": { + "entryPoint": 4735, + "id": 5863, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@decodeBool_10387": { + "entryPoint": 12895, + "id": 10387, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@decodeUint12_10411": { + "entryPoint": 16322, + "id": 10411, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@decodeUint14_10423": { + "entryPoint": 16338, + "id": 10423, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@decodeUint16_10435": { + "entryPoint": 16306, + "id": 10435, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@decodeUint20_10447": { + "entryPoint": 16371, + "id": 10447, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@decodeUint24_10459": { + "entryPoint": 16354, + "id": 10459, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@deploy_2189": { + "entryPoint": 13338, + "id": 2189, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@forceDecay_6443": { + "entryPoint": 4060, + "id": 6443, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@getAllBinSteps_5421": { + "entryPoint": 4716, + "id": 5421, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAllLBPairs_5606": { + "entryPoint": 6878, + "id": 5606, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getBaseFactor_9158": { + "entryPoint": 13129, + "id": 9158, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getBase_10059": { + "entryPoint": 15430, + "id": 10059, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getDecayPeriod_9190": { + "entryPoint": 13188, + "id": 9190, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getExponent_10079": { + "entryPoint": 15481, + "id": 10079, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getFeeRecipient_5187": { + "entryPoint": 4166, + "id": 5187, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getFilterPeriod_9174": { + "entryPoint": 13158, + "id": 9174, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getFlags_8564": { + "entryPoint": 12834, + "id": 8564, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getFlashLoanFee_5207": { + "entryPoint": 10695, + "id": 5207, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getHooks_8518": { + "entryPoint": 12823, + "id": 8518, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getLBPairAtIndex_5243": { + "entryPoint": 8559, + "id": 5243, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getLBPairBeacon_5217": { + "entryPoint": 8814, + "id": 5217, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getLBPairInformation_5315": { + "entryPoint": 8353, + "id": 5315, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@getMaxFlashLoanFee_5197": { + "entryPoint": 8648, + "id": 5197, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getMaxVolatilityAccumulator_9254": { + "entryPoint": 13308, + "id": 9254, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getMinBinStep_5177": { + "entryPoint": 8345, + "id": 5177, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getNumberOfLBPairs_5228": { + "entryPoint": 4534, + "id": 5228, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getNumberOfQuoteAssets_5255": { + "entryPoint": 8630, + "id": 5255, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getOpenBinSteps_5495": { + "entryPoint": 2439, + "id": 5495, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPauserRole_5614": { + "entryPoint": 9773, + "id": 5614, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPreset_5408": { + "entryPoint": 8860, + "id": 5408, + "parameterSlots": 1, + "returnSlots": 8 + }, + "@getPriceFromId_9995": { + "entryPoint": 12990, + "id": 9995, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getProtocolShare_9238": { + "entryPoint": 13278, + "id": 9238, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getQuoteAssetAtIndex_5273": { + "entryPoint": 2697, + "id": 5273, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getReductionFactor_9206": { + "entryPoint": 13218, + "id": 9206, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 3047, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getVariableFeeControl_9222": { + "entryPoint": 13248, + "id": 9222, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@get_2562": { + "entryPoint": 15171, + "id": 2562, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@get_2758": { + "entryPoint": 12868, + "id": 2758, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 3268, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 13859, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@hasRole_6596": { + "entryPoint": 8718, + "id": 6596, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@initialize_5167": { + "entryPoint": 9142, + "id": 5167, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@isQuoteAsset_5292": { + "entryPoint": 3091, + "id": 5292, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@keys_2578": { + "entryPoint": 15408, + "id": 2578, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@keys_2788": { + "entryPoint": 12957, + "id": 2788, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_2453": { + "entryPoint": 14558, + "id": 2453, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_2666": { + "entryPoint": 10809, + "id": 2666, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_4653": { + "entryPoint": 17142, + "id": 4653, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_4801": { + "entryPoint": 13799, + "id": 4801, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_4940": { + "entryPoint": 13617, + "id": 4940, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@owner_605": { + "entryPoint": 8663, + "id": 605, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@pendingOwner_422": { + "entryPoint": 10178, + "id": 422, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@pow_11469": { + "entryPoint": 15500, + "id": 11469, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@removeLBHooksOnPair_6265": { + "entryPoint": 3121, + "id": 6265, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@removePreset_6119": { + "entryPoint": 10022, + "id": 6119, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeQuoteAsset_6376": { + "entryPoint": 9852, + "id": 6376, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_2420": { + "entryPoint": 17088, + "id": 2420, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_2630": { + "entryPoint": 14494, + "id": 2630, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_4620": { + "entryPoint": 17297, + "id": 4620, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_4759": { + "entryPoint": 14447, + "id": 4759, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceOwnership_636": { + "entryPoint": 8385, + "id": 636, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@renounceRole_232": { + "entryPoint": 3308, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 9812, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safe16_11221": { + "entryPoint": 13663, + "id": 11221, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@setBool_10361": { + "entryPoint": 12751, + "id": 10361, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@setFeeRecipient_6279": { + "entryPoint": 10233, + "id": 6279, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setFeesParametersOnPair_6187": { + "entryPoint": 2727, + "id": 6187, + "parameterSlots": 10, + "returnSlots": 0 + }, + "@setFlashLoanFee_6319": { + "entryPoint": 10257, + "id": 6319, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setLBHooksParametersOnPair_6237": { + "entryPoint": 3765, + "id": 6237, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@setLBPairIgnored_5946": { + "entryPoint": 7551, + "id": 5946, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@setPresetOpenState_6095": { + "entryPoint": 4205, + "id": 6095, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setPreset_6033": { + "entryPoint": 3436, + "id": 6033, + "parameterSlots": 9, + "returnSlots": 0 + }, + "@setStaticFeeParameters_9696": { + "entryPoint": 12317, + "id": 9696, + "parameterSlots": 8, + "returnSlots": 1 + }, + "@set_10338": { + "entryPoint": 15056, + "id": 10338, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@set_2396": { + "entryPoint": 15082, + "id": 2396, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@set_2609": { + "entryPoint": 12794, + "id": 2609, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@supportsInterface_1033": { + "entryPoint": 10704, + "id": 1033, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 2315, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@transferOwnership_450": { + "entryPoint": 10504, + "id": 450, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@values_4701": { + "entryPoint": 17232, + "id": 4701, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_t_address": { + "entryPoint": 18946, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bool": { + "entryPoint": 19062, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes32": { + "entryPoint": 18714, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes32_fromMemory": { + "entryPoint": 22895, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes4": { + "entryPoint": 17567, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes_calldata_ptr": { + "entryPoint": 19313, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_t_contract$_IERC20_$1838": { + "entryPoint": 18253, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_contract$_ILBPair_$7970": { + "entryPoint": 19617, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint16": { + "entryPoint": 18313, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint24": { + "entryPoint": 18374, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 17959, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 21062, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_address": { + "entryPoint": 20903, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 18736, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 22917, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 18968, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 17589, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838": { + "entryPoint": 18784, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838": { + "entryPoint": 20018, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16": { + "entryPoint": 18832, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bool": { + "entryPoint": 20445, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bytes32t_bytes_calldata_ptr": { + "entryPoint": 19407, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24": { + "entryPoint": 18396, + "id": null, + "parameterSlots": 2, + "returnSlots": 10 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint24t_uint16": { + "entryPoint": 19844, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint256": { + "entryPoint": 20556, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_ILBPair_$7970": { + "entryPoint": 19639, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint16": { + "entryPoint": 21014, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint16t_bool": { + "entryPoint": 19731, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24t_bool": { + "entryPoint": 19084, + "id": null, + "parameterSlots": 2, + "returnSlots": 9 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 17981, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr": { + "entryPoint": 20270, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encodeUpdatedPos_t_uint256_to_t_uint256": { + "entryPoint": 17759, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 19687, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack": { + "entryPoint": 20307, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 17796, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_bool_to_t_bool": { + "entryPoint": 20162, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bool_to_t_bool_fromStack": { + "entryPoint": 17648, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bytes32_to_t_bytes32_fromStack": { + "entryPoint": 18645, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack": { + "entryPoint": 22267, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 22439, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack": { + "entryPoint": 18146, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack": { + "entryPoint": 22032, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ILBPair_$7970_to_t_address": { + "entryPoint": 20145, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack": { + "entryPoint": 19974, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_int256_to_t_int256_fromStack": { + "entryPoint": 23155, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": { + "entryPoint": 22724, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack": { + "entryPoint": 22851, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr": { + "entryPoint": 20179, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack": { + "entryPoint": 20645, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint16_to_t_uint16": { + "entryPoint": 20128, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint16_to_t_uint16_fromStack": { + "entryPoint": 21436, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack": { + "entryPoint": 22090, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint16_to_t_uint256_fromStack": { + "entryPoint": 21360, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint24_to_t_uint24_fromStack": { + "entryPoint": 21453, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint24_to_t_uint256_fromStack": { + "entryPoint": 21659, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256": { + "entryPoint": 17742, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 19800, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 22493, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 22117, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 19704, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 23015, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": 23058, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint16_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 22331, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 21799, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 20411, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 17900, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": 17665, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": 18662, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 22965, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$1838__to_t_address__fromStack_reversed": { + "entryPoint": 18163, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 21377, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ILBPair_$7970__to_t_address__fromStack_reversed": { + "entryPoint": 19991, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_ILBPair_$7970_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 22590, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 22741, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": 22868, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_LBPairInformation_$6974_memory_ptr__to_t_struct$_LBPairInformation_$6974_memory_ptr__fromStack_reversed": { + "entryPoint": 20736, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed": { + "entryPoint": 21593, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed": { + "entryPoint": 21470, + "id": null, + "parameterSlots": 8, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 21676, + "id": null, + "parameterSlots": 8, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed": { + "entryPoint": 21842, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 19817, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed": { + "entryPoint": 23172, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 22633, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed": { + "entryPoint": 20763, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 20113, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 17718, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 20087, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 17692, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_bytes_memory_ptr": { + "entryPoint": 22183, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 20295, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": { + "entryPoint": 17784, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack": { + "entryPoint": 20097, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { + "entryPoint": 17702, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": { + "entryPoint": 22193, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 22429, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 23215, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 22532, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 18190, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 17637, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bytes32": { + "entryPoint": 18636, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bytes4": { + "entryPoint": 17499, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_IERC20_$1838": { + "entryPoint": 18209, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_contract$_ILBPair_$7970": { + "entryPoint": 19573, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_int256": { + "entryPoint": 23146, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_rational_0_by_1": { + "entryPoint": 22676, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_rational_1_by_1": { + "entryPoint": 22784, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint16": { + "entryPoint": 18275, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 18029, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint24": { + "entryPoint": 18335, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 17733, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint64": { + "entryPoint": 22793, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_IERC20_$1838_to_t_address": { + "entryPoint": 18127, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_contract$_ILBPair_$7970_to_t_address": { + "entryPoint": 19955, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_rational_0_by_1_to_t_uint256": { + "entryPoint": 22685, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_rational_1_by_1_to_t_uint64": { + "entryPoint": 22812, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_address": { + "entryPoint": 18108, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint160_to_t_uint160": { + "entryPoint": 18069, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint16_to_t_uint256": { + "entryPoint": 21321, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_t_uint24_to_t_uint256": { + "entryPoint": 21620, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 22209, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "identity": { + "entryPoint": 18060, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 21245, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "leftAlign_t_address": { + "entryPoint": 22013, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "leftAlign_t_uint16": { + "entryPoint": 22071, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "leftAlign_t_uint160": { + "entryPoint": 21994, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 21200, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": 23101, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 23270, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 21155, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 21110, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { + "entryPoint": 19305, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { + "entryPoint": 19301, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { + "entryPoint": 19309, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": 17495, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 17491, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 22251, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "shift_left_240": { + "entryPoint": 22059, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "shift_left_96": { + "entryPoint": 21982, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "validator_revert_t_address": { + "entryPoint": 18921, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bool": { + "entryPoint": 19037, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bytes32": { + "entryPoint": 18689, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bytes4": { + "entryPoint": 17542, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_IERC20_$1838": { + "entryPoint": 18228, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_contract$_ILBPair_$7970": { + "entryPoint": 19592, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint16": { + "entryPoint": 18288, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint24": { + "entryPoint": 18349, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 17934, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:42986:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "378:105:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "388:89:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "403:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "410:66:40", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "399:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "399:78:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "388:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "360:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "370:7:40", + "type": "" + } + ], + "src": "334:149:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:78:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "587:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "596:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "599:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "589:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "589:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "589:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "554:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "578:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "561:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "561:23:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "551:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "551:34:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "544:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "544:42:40" + }, + "nodeType": "YulIf", + "src": "541:62:40" + } + ] + }, + "name": "validator_revert_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "524:5:40", + "type": "" + } + ], + "src": "489:120:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "666:86:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "676:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "698:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "685:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "685:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "676:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "740:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "714:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "714:32:40" + }, + "nodeType": "YulExpressionStatement", + "src": "714:32:40" + } + ] + }, + "name": "abi_decode_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "644:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "652:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "660:5:40", + "type": "" + } + ], + "src": "615:137:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "823:262:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "871:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "871:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "871:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "844:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "853:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "840:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "840:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "865:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "836:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "836:32:40" + }, + "nodeType": "YulIf", + "src": "833:119:40" + }, + { + "nodeType": "YulBlock", + "src": "962:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "977:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "991:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "981:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1006:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1040:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1051:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1036:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1036:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1060:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "1016:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "1016:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1006:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "793:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "804:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "816:6:40", + "type": "" + } + ], + "src": "758:327:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1133:48:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1143:32:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1168:5:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1161:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1161:13:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1154:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1154:21:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1143:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1115:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1125:7:40", + "type": "" + } + ], + "src": "1091:90:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1246:50:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1263:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1283:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "1268:14:40" + }, + "nodeType": "YulFunctionCall", + "src": "1268:21:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1256:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1256:34:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1256:34:40" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1234:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1241:3:40", + "type": "" + } + ], + "src": "1187:109:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1394:118:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1404:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1416:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1427:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1412:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1412:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1404:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1478:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1491:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1502:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1487:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1487:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "1440:37:40" + }, + "nodeType": "YulFunctionCall", + "src": "1440:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1440:65:40" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1366:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1378:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1389:4:40", + "type": "" + } + ], + "src": "1302:210:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1592:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1603:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1619:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1613:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "1613:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1603:6:40" + } + ] + } + ] + }, + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1575:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1585:6:40", + "type": "" + } + ], + "src": "1518:114:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1749:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1766:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1771:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1759:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1759:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1759:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "1787:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1806:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1811:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1802:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1802:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "1787:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1721:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1726:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "1737:11:40", + "type": "" + } + ], + "src": "1638:184:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1900:60:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1910:11:40", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "1918:3:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1910:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1931:22:40", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "1943:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1948:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1939:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1939:14:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1931:4:40" + } + ] + } + ] + }, + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "1887:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "1895:4:40", + "type": "" + } + ], + "src": "1828:132:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2011:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2021:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2032:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2021:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1993:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2003:7:40", + "type": "" + } + ], + "src": "1966:77:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2104:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2121:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2144:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "2126:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "2126:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2114:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2114:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2114:37:40" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2092:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2099:3:40", + "type": "" + } + ], + "src": "2049:108:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2243:99:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2287:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2295:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "2253:33:40" + }, + "nodeType": "YulFunctionCall", + "src": "2253:46:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2253:46:40" + }, + { + "nodeType": "YulAssignment", + "src": "2308:28:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2326:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2331:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2322:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2322:14:40" + }, + "variableNames": [ + { + "name": "updatedPos", + "nodeType": "YulIdentifier", + "src": "2308:10:40" + } + ] + } + ] + }, + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2216:6:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2224:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updatedPos", + "nodeType": "YulTypedName", + "src": "2232:10:40", + "type": "" + } + ], + "src": "2163:179:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2423:38:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2433:22:40", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "2445:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2450:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2441:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2441:14:40" + }, + "variableNames": [ + { + "name": "next", + "nodeType": "YulIdentifier", + "src": "2433:4:40" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "2410:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nodeType": "YulTypedName", + "src": "2418:4:40", + "type": "" + } + ], + "src": "2348:113:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2621:608:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2631:68:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2693:5:40" + } + ], + "functionName": { + "name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2645:47:40" + }, + "nodeType": "YulFunctionCall", + "src": "2645:54:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2635:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2708:93:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2789:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2794:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "2715:73:40" + }, + "nodeType": "YulFunctionCall", + "src": "2715:86:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "2708:3:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2810:71:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2875:5:40" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2825:49:40" + }, + "nodeType": "YulFunctionCall", + "src": "2825:56:40" + }, + "variables": [ + { + "name": "baseRef", + "nodeType": "YulTypedName", + "src": "2814:7:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2890:21:40", + "value": { + "name": "baseRef", + "nodeType": "YulIdentifier", + "src": "2904:7:40" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "2894:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2980:224:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2994:34:40", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "3021:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3015:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "3015:13:40" + }, + "variables": [ + { + "name": "elementValue0", + "nodeType": "YulTypedName", + "src": "2998:13:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3041:70:40", + "value": { + "arguments": [ + { + "name": "elementValue0", + "nodeType": "YulIdentifier", + "src": "3092:13:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3107:3:40" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "3048:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "3048:63:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3041:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3124:70:40", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "3187:6:40" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "3134:52:40" + }, + "nodeType": "YulFunctionCall", + "src": "3134:60:40" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "3124:6:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2942:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2945:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2939:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2939:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2953:18:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2955:14:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2964:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2967:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2960:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2960:9:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2955:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2924:14:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2926:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2935:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "2930:1:40", + "type": "" + } + ] + } + ] + }, + "src": "2920:284:40" + }, + { + "nodeType": "YulAssignment", + "src": "3213:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "3220:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3213:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2600:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "2607:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2616:3:40", + "type": "" + } + ], + "src": "2497:732:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3383:225:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3393:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3405:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3416:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3401:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3401:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3393:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3440:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3451:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3436:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3436:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3459:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3465:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3455:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3455:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3429:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3429:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3429:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "3485:116:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3587:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3596:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "3493:93:40" + }, + "nodeType": "YulFunctionCall", + "src": "3493:108:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3485:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3355:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3367:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3378:4:40", + "type": "" + } + ], + "src": "3235:373:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3657:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3714:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3723:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3726:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3716:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3716:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3716:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3680:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3705:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "3687:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "3687:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3677:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "3677:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3670:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3670:43:40" + }, + "nodeType": "YulIf", + "src": "3667:63:40" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3650:5:40", + "type": "" + } + ], + "src": "3614:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3794:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3804:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3826:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3813:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "3813:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3804:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3869:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "3842:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "3842:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3842:33:40" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3772:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3780:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3788:5:40", + "type": "" + } + ], + "src": "3742:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3953:263:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3999:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4001:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "4001:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4001:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3974:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3983:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3970:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3970:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3995:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3966:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3966:32:40" + }, + "nodeType": "YulIf", + "src": "3963:119:40" + }, + { + "nodeType": "YulBlock", + "src": "4092:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4107:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4121:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4111:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4136:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4171:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4182:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4167:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4167:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4191:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "4146:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "4146:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4136:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3923:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3934:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3946:6:40", + "type": "" + } + ], + "src": "3887:329:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4267:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4277:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4292:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4299:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4288:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4288:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "4277:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4249:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "4259:7:40", + "type": "" + } + ], + "src": "4222:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4386:28:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4396:12:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4403:5:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "4396:3:40" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4372:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "4382:3:40", + "type": "" + } + ], + "src": "4354:60:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4480:82:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4490:66:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4548:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "4530:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "4530:24:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "4521:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "4521:34:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "4503:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "4503:53:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "4490:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4460:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "4470:9:40", + "type": "" + } + ], + "src": "4420:142:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4628:66:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4638:50:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4682:5:40" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_uint160", + "nodeType": "YulIdentifier", + "src": "4651:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "4651:37:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "4638:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4608:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "4618:9:40", + "type": "" + } + ], + "src": "4568:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4775:66:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4785:50:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4829:5:40" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "4798:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "4798:37:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "4785:9:40" + } + ] + } + ] + }, + "name": "convert_t_contract$_IERC20_$1838_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4755:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "4765:9:40", + "type": "" + } + ], + "src": "4700:141:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4927:81:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4944:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4995:5:40" + } + ], + "functionName": { + "name": "convert_t_contract$_IERC20_$1838_to_t_address", + "nodeType": "YulIdentifier", + "src": "4949:45:40" + }, + "nodeType": "YulFunctionCall", + "src": "4949:52:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4937:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "4937:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4937:65:40" + } + ] + }, + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4915:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4922:3:40", + "type": "" + } + ], + "src": "4847:161:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5127:139:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5137:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5149:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5160:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5145:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5145:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5137:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5232:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5245:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5256:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5241:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5241:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "5173:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "5173:86:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5173:86:40" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$1838__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5099:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5111:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5122:4:40", + "type": "" + } + ], + "src": "5014:252:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5317:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5327:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5356:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "5338:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "5338:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5327:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5299:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5309:7:40", + "type": "" + } + ], + "src": "5272:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5434:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5444:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5473:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "5455:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "5455:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5444:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_IERC20_$1838", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5416:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5426:7:40", + "type": "" + } + ], + "src": "5374:111:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5549:94:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5621:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5630:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5633:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5623:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5623:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5623:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5572:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5612:5:40" + } + ], + "functionName": { + "name": "cleanup_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "5579:32:40" + }, + "nodeType": "YulFunctionCall", + "src": "5579:39:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5569:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "5569:50:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5562:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5562:58:40" + }, + "nodeType": "YulIf", + "src": "5559:78:40" + } + ] + }, + "name": "validator_revert_t_contract$_IERC20_$1838", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5542:5:40", + "type": "" + } + ], + "src": "5491:152:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5716:102:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5726:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5748:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5735:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "5735:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5726:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5806:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "5764:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "5764:48:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5764:48:40" + } + ] + }, + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5694:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5702:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5710:5:40", + "type": "" + } + ], + "src": "5649:169:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5868:45:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5878:29:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5893:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5900:6:40", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5889:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5889:18:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5878:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5850:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5860:7:40", + "type": "" + } + ], + "src": "5824:89:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5961:78:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6017:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6026:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6029:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6019:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6019:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6019:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5984:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6008:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "5991:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "5991:23:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5981:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "5981:34:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5974:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5974:42:40" + }, + "nodeType": "YulIf", + "src": "5971:62:40" + } + ] + }, + "name": "validator_revert_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5954:5:40", + "type": "" + } + ], + "src": "5919:120:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6096:86:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6106:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6128:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6115:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "6115:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6106:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6170:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "6144:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "6144:32:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6144:32:40" + } + ] + }, + "name": "abi_decode_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6074:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6082:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6090:5:40", + "type": "" + } + ], + "src": "6045:137:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6232:47:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6242:31:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6257:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6264:8:40", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6253:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6253:20:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "6242:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6214:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "6224:7:40", + "type": "" + } + ], + "src": "6188:91:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6327:78:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6383:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6392:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6395:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6385:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6385:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6385:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6350:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6374:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint24", + "nodeType": "YulIdentifier", + "src": "6357:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "6357:23:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "6347:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "6347:34:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6340:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6340:42:40" + }, + "nodeType": "YulIf", + "src": "6337:62:40" + } + ] + }, + "name": "validator_revert_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6320:5:40", + "type": "" + } + ], + "src": "6285:120:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6462:86:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6472:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6494:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6481:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "6481:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6472:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6536:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint24", + "nodeType": "YulIdentifier", + "src": "6510:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "6510:32:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6510:32:40" + } + ] + }, + "name": "abi_decode_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6440:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6448:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6456:5:40", + "type": "" + } + ], + "src": "6411:137:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6795:1444:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6842:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "6844:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "6844:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6844:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6816:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6825:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6812:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6812:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6837:3:40", + "type": "", + "value": "320" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6808:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6808:33:40" + }, + "nodeType": "YulIf", + "src": "6805:120:40" + }, + { + "nodeType": "YulBlock", + "src": "6935:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6950:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6964:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6954:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6979:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7029:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7040:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7025:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7025:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7049:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "6989:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "6989:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6979:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7077:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7092:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7106:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7096:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7122:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7172:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7183:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7168:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7168:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7192:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "7132:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "7132:68:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7122:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7220:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7235:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7249:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7239:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7265:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7299:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7310:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7295:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7295:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7319:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "7275:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "7275:52:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7265:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7347:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7362:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7376:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7366:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7392:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7426:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7437:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7422:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7422:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7446:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "7402:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "7402:52:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "7392:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7474:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7489:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7503:3:40", + "type": "", + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7493:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7520:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7554:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7565:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7550:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7550:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7574:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "7530:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "7530:52:40" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "7520:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7602:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7617:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7631:3:40", + "type": "", + "value": "160" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7621:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7648:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7682:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7693:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7678:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7678:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7702:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "7658:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "7658:52:40" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "7648:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7730:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7745:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7759:3:40", + "type": "", + "value": "192" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7749:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7776:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7810:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7821:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7806:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7806:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7830:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "7786:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "7786:52:40" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "7776:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7858:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7873:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7887:3:40", + "type": "", + "value": "224" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7877:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7904:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7938:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7949:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7934:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7934:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7958:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "7914:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "7914:52:40" + }, + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "7904:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7986:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8001:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8015:3:40", + "type": "", + "value": "256" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8005:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8032:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8066:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8077:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8062:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8062:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8086:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "8042:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "8042:52:40" + }, + "variableNames": [ + { + "name": "value8", + "nodeType": "YulIdentifier", + "src": "8032:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8114:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8129:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8143:3:40", + "type": "", + "value": "288" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8133:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8160:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8194:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8205:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8190:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8190:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8214:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "8170:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "8170:52:40" + }, + "variableNames": [ + { + "name": "value9", + "nodeType": "YulIdentifier", + "src": "8160:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6693:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6704:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6716:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6724:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "6732:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "6740:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "6748:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "6756:6:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "6764:6:40", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "6772:6:40", + "type": "" + }, + { + "name": "value8", + "nodeType": "YulTypedName", + "src": "6780:6:40", + "type": "" + }, + { + "name": "value9", + "nodeType": "YulTypedName", + "src": "6788:6:40", + "type": "" + } + ], + "src": "6554:1685:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8290:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8300:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8311:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "8300:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8272:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "8282:7:40", + "type": "" + } + ], + "src": "8245:77:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8393:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8410:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8433:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "8415:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "8415:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8403:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8403:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8403:37:40" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8381:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8388:3:40", + "type": "" + } + ], + "src": "8328:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8550:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8560:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8572:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8583:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8568:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8568:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8560:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8640:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8653:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8664:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8649:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8649:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "8596:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "8596:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8596:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8522:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8534:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8545:4:40", + "type": "" + } + ], + "src": "8452:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8723:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8780:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8789:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8792:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8782:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8782:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8782:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8746:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8771:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "8753:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "8753:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8743:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "8743:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8736:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8736:43:40" + }, + "nodeType": "YulIf", + "src": "8733:63:40" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8716:5:40", + "type": "" + } + ], + "src": "8680:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8860:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8870:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8892:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8879:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "8879:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8870:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8935:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "8908:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "8908:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8908:33:40" + } + ] + }, + "name": "abi_decode_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8838:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8846:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8854:5:40", + "type": "" + } + ], + "src": "8808:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9019:263:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9065:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9067:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "9067:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9067:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9040:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9049:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9036:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9036:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9061:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9032:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9032:32:40" + }, + "nodeType": "YulIf", + "src": "9029:119:40" + }, + { + "nodeType": "YulBlock", + "src": "9158:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9173:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9187:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9177:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9202:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9237:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9248:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9233:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9233:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9257:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "9212:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "9212:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9202:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8989:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9000:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9012:6:40", + "type": "" + } + ], + "src": "8953:329:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9369:278:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9415:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9417:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "9417:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9417:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9390:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9399:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9386:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9386:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9411:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9382:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9382:32:40" + }, + "nodeType": "YulIf", + "src": "9379:119:40" + }, + { + "nodeType": "YulBlock", + "src": "9508:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9523:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9537:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9527:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9552:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9602:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9613:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9598:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9598:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9622:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "9562:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "9562:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9552:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9339:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9350:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9362:6:40", + "type": "" + } + ], + "src": "9288:359:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9782:548:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9828:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9830:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "9830:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9830:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9803:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9812:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9799:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9799:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9824:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9795:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9795:32:40" + }, + "nodeType": "YulIf", + "src": "9792:119:40" + }, + { + "nodeType": "YulBlock", + "src": "9921:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9936:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9950:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9940:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9965:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10015:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10026:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10011:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10011:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10035:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "9975:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "9975:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9965:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10063:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10078:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10092:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10082:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10108:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10158:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10169:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10154:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10154:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10178:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "10118:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "10118:68:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10108:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10206:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10221:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10235:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10225:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10251:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10285:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10296:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10281:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10281:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10305:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "10261:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "10261:52:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "10251:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9736:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9747:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9759:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9767:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9775:6:40", + "type": "" + } + ], + "src": "9653:677:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10379:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10436:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10445:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10448:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10438:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "10438:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10438:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10402:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10427:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "10409:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "10409:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10399:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "10399:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10392:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "10392:43:40" + }, + "nodeType": "YulIf", + "src": "10389:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10372:5:40", + "type": "" + } + ], + "src": "10336:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10516:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10526:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10548:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10535:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "10535:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10526:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10591:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "10564:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "10564:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10564:33:40" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10494:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10502:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10510:5:40", + "type": "" + } + ], + "src": "10464:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10692:391:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10738:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "10740:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "10740:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10740:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10713:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10722:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10709:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10709:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10734:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10705:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10705:32:40" + }, + "nodeType": "YulIf", + "src": "10702:119:40" + }, + { + "nodeType": "YulBlock", + "src": "10831:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10846:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10860:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10850:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10875:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10910:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10921:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10906:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10906:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10930:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "10885:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "10885:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10875:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10958:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10973:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10987:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10977:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11003:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11038:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11049:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11034:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11034:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11058:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "11013:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "11013:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11003:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10654:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10665:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10677:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10685:6:40", + "type": "" + } + ], + "src": "10609:474:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11129:76:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11183:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11192:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11195:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "11185:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "11185:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11185:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11152:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11174:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "11159:14:40" + }, + "nodeType": "YulFunctionCall", + "src": "11159:21:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "11149:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "11149:32:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11142:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "11142:40:40" + }, + "nodeType": "YulIf", + "src": "11139:60:40" + } + ] + }, + "name": "validator_revert_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11122:5:40", + "type": "" + } + ], + "src": "11089:116:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11260:84:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11270:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11292:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11279:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "11279:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11270:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11332:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "11308:23:40" + }, + "nodeType": "YulFunctionCall", + "src": "11308:30:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11308:30:40" + } + ] + }, + "name": "abi_decode_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11238:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11246:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11254:5:40", + "type": "" + } + ], + "src": "11211:133:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11541:1282:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11588:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "11590:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "11590:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11590:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11562:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11571:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11558:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11558:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11583:3:40", + "type": "", + "value": "288" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11554:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11554:33:40" + }, + "nodeType": "YulIf", + "src": "11551:120:40" + }, + { + "nodeType": "YulBlock", + "src": "11681:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11696:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11710:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11700:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11725:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11759:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11770:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11755:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11755:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11779:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "11735:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "11735:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11725:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11807:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11822:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11836:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11826:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11852:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11886:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11897:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11882:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11882:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11906:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "11862:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "11862:52:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11852:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11934:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11949:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11963:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11953:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11979:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12013:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12024:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12009:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12009:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12033:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "11989:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "11989:52:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11979:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12061:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12076:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12090:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12080:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12106:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12140:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12151:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12136:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12136:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12160:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "12116:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "12116:52:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "12106:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12188:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12203:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12217:3:40", + "type": "", + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12207:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12234:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12268:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12279:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12264:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12264:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12288:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "12244:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "12244:52:40" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "12234:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12316:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12331:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12345:3:40", + "type": "", + "value": "160" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12335:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12362:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12396:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12407:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12392:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12392:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12416:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "12372:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "12372:52:40" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "12362:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12444:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12459:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12473:3:40", + "type": "", + "value": "192" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12463:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12490:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12524:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12535:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12520:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12520:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12544:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "12500:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "12500:52:40" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "12490:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12572:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12587:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12601:3:40", + "type": "", + "value": "224" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12591:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12618:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12652:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12663:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12648:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12648:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12672:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "12628:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "12628:52:40" + }, + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "12618:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12700:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12715:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12729:3:40", + "type": "", + "value": "256" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12719:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12746:60:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12778:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12789:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12774:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12774:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12798:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bool", + "nodeType": "YulIdentifier", + "src": "12756:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "12756:50:40" + }, + "variableNames": [ + { + "name": "value8", + "nodeType": "YulIdentifier", + "src": "12746:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11447:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "11458:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11470:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11478:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "11486:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "11494:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "11502:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "11510:6:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "11518:6:40", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "11526:6:40", + "type": "" + }, + { + "name": "value8", + "nodeType": "YulTypedName", + "src": "11534:6:40", + "type": "" + } + ], + "src": "11350:1473:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12918:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12935:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12938:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12928:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "12928:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12928:12:40" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "12829:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13041:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13058:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13061:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13051:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "13051:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13051:12:40" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "12952:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13164:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13181:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13184:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13174:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "13174:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13174:12:40" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "13075:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13285:478:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13334:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "13336:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "13336:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13336:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13313:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13321:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13309:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13309:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13328:3:40" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "13305:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13305:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13298:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "13298:35:40" + }, + "nodeType": "YulIf", + "src": "13295:122:40" + }, + { + "nodeType": "YulAssignment", + "src": "13426:30:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13449:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "13436:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "13436:20:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13426:6:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13499:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "13501:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "13501:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13501:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13471:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13479:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "13468:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "13468:30:40" + }, + "nodeType": "YulIf", + "src": "13465:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "13591:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13607:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13615:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13603:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13603:17:40" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "13591:8:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13674:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "13676:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "13676:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13676:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "13639:8:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "13653:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13661:4:40", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "13649:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13649:17:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13635:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13635:32:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13669:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "13632:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "13632:41:40" + }, + "nodeType": "YulIf", + "src": "13629:128:40" + } + ] + }, + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13252:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13260:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "13268:8:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "13278:6:40", + "type": "" + } + ], + "src": "13211:552:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13951:985:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13998:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "14000:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "14000:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14000:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13972:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13981:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13968:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13968:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13993:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "13964:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13964:33:40" + }, + "nodeType": "YulIf", + "src": "13961:120:40" + }, + { + "nodeType": "YulBlock", + "src": "14091:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14106:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14120:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14110:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14135:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14185:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14196:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14181:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14181:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14205:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "14145:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "14145:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14135:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14233:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14248:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14262:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14252:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14278:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14328:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14339:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14324:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14324:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14348:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "14288:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "14288:68:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14278:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14376:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14391:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14405:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14395:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14421:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14455:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14466:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14451:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14451:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14475:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "14431:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "14431:52:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14421:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14503:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14518:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14532:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14522:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14548:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14583:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14594:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14579:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14579:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14603:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "14558:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "14558:53:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "14548:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14631:298:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14646:47:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14677:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14688:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14673:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14673:19:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "14660:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "14660:33:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14650:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14740:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "14742:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "14742:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14742:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14712:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14720:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14709:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "14709:30:40" + }, + "nodeType": "YulIf", + "src": "14706:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "14837:82:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14891:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14902:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14887:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14887:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14911:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "14855:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "14855:64:40" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "14837:6:40" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "14845:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bytes32t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13881:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "13892:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13904:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13912:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13920:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "13928:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "13936:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "13944:6:40", + "type": "" + } + ], + "src": "13769:1167:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15003:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15013:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15042:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "15024:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "15024:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "15013:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_contract$_ILBPair_$7970", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14985:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "14995:7:40", + "type": "" + } + ], + "src": "14942:112:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15119:95:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15192:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15201:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15204:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15194:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "15194:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15194:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15142:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15183:5:40" + } + ], + "functionName": { + "name": "cleanup_t_contract$_ILBPair_$7970", + "nodeType": "YulIdentifier", + "src": "15149:33:40" + }, + "nodeType": "YulFunctionCall", + "src": "15149:40:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "15139:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "15139:51:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15132:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "15132:59:40" + }, + "nodeType": "YulIf", + "src": "15129:79:40" + } + ] + }, + "name": "validator_revert_t_contract$_ILBPair_$7970", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15112:5:40", + "type": "" + } + ], + "src": "15060:154:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15288:103:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15298:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15320:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "15307:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "15307:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15298:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15379:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_contract$_ILBPair_$7970", + "nodeType": "YulIdentifier", + "src": "15336:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "15336:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15336:49:40" + } + ] + }, + "name": "abi_decode_t_contract$_ILBPair_$7970", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15266:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15274:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15282:5:40", + "type": "" + } + ], + "src": "15220:171:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15479:279:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15525:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "15527:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "15527:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15527:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15500:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15509:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15496:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15496:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15521:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15492:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15492:32:40" + }, + "nodeType": "YulIf", + "src": "15489:119:40" + }, + { + "nodeType": "YulBlock", + "src": "15618:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15633:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15647:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15637:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15662:79:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15713:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15724:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15709:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15709:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15733:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_ILBPair_$7970", + "nodeType": "YulIdentifier", + "src": "15672:36:40" + }, + "nodeType": "YulFunctionCall", + "src": "15672:69:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "15662:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_ILBPair_$7970", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15449:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15460:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15472:6:40", + "type": "" + } + ], + "src": "15397:361:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15829:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15846:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15869:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "15851:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "15851:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15839:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "15839:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15839:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "15817:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15824:3:40", + "type": "" + } + ], + "src": "15764:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15986:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15996:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16008:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16019:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16004:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16004:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15996:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16076:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16089:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16100:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16085:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16085:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "16032:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "16032:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16032:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15958:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15970:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15981:4:40", + "type": "" + } + ], + "src": "15888:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16195:387:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16241:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "16243:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "16243:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16243:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16216:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16225:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16212:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16212:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16237:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "16208:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16208:32:40" + }, + "nodeType": "YulIf", + "src": "16205:119:40" + }, + { + "nodeType": "YulBlock", + "src": "16334:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16349:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16363:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16353:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16378:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16412:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16423:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16408:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16408:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16432:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "16388:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "16388:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16378:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16460:115:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16475:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16489:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16479:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16505:60:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16537:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16548:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16533:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16533:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16557:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bool", + "nodeType": "YulIdentifier", + "src": "16515:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "16515:50:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "16505:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint16t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16157:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "16168:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16180:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16188:6:40", + "type": "" + } + ], + "src": "16116:466:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16653:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16670:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16693:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "16675:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "16675:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16663:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "16663:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16663:37:40" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16641:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "16648:3:40", + "type": "" + } + ], + "src": "16588:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16810:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16820:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16832:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16843:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16828:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16828:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16820:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16900:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16913:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16924:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16909:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16909:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "16856:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "16856:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16856:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16782:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16794:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16805:4:40", + "type": "" + } + ], + "src": "16712:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17085:676:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17132:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "17134:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "17134:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17134:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17106:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17115:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "17102:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17102:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17127:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "17098:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17098:33:40" + }, + "nodeType": "YulIf", + "src": "17095:120:40" + }, + { + "nodeType": "YulBlock", + "src": "17225:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17240:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17254:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17244:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17269:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17319:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17330:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17315:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17315:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17339:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "17279:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "17279:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "17269:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "17367:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17382:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17396:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17386:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17412:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17462:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17473:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17458:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17458:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17482:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "17422:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "17422:68:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "17412:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "17510:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17525:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17539:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17529:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17555:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17589:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17600:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17585:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17585:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17609:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "17565:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "17565:52:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "17555:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "17637:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17652:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17666:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17656:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17682:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17716:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17727:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17712:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17712:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17736:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "17692:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "17692:52:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "17682:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint24t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17031:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "17042:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17054:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "17062:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "17070:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "17078:6:40", + "type": "" + } + ], + "src": "16940:821:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17843:66:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17853:50:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17897:5:40" + } + ], + "functionName": { + "name": "convert_t_uint160_to_t_address", + "nodeType": "YulIdentifier", + "src": "17866:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "17866:37:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "17853:9:40" + } + ] + } + ] + }, + "name": "convert_t_contract$_ILBPair_$7970_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17823:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "17833:9:40", + "type": "" + } + ], + "src": "17767:142:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17996:82:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18013:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18065:5:40" + } + ], + "functionName": { + "name": "convert_t_contract$_ILBPair_$7970_to_t_address", + "nodeType": "YulIdentifier", + "src": "18018:46:40" + }, + "nodeType": "YulFunctionCall", + "src": "18018:53:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18006:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "18006:66:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18006:66:40" + } + ] + }, + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17984:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17991:3:40", + "type": "" + } + ], + "src": "17915:163:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18198:140:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18208:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18220:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18231:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18216:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18216:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18208:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18304:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18317:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18328:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18313:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18313:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "18244:59:40" + }, + "nodeType": "YulFunctionCall", + "src": "18244:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18244:87:40" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_ILBPair_$7970__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18170:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18182:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18193:4:40", + "type": "" + } + ], + "src": "18084:254:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18457:421:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18503:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "18505:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "18505:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18505:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18478:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18487:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "18474:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18474:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18499:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "18470:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18470:32:40" + }, + "nodeType": "YulIf", + "src": "18467:119:40" + }, + { + "nodeType": "YulBlock", + "src": "18596:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18611:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18625:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "18615:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18640:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18690:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "18701:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18686:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18686:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18710:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "18650:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "18650:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18640:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "18738:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18753:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18767:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "18757:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18783:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18833:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "18844:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18829:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18829:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18853:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "18793:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "18793:68:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18783:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18419:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "18430:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18442:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "18450:6:40", + "type": "" + } + ], + "src": "18344:534:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18993:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19004:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19020:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "19014:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "19014:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19004:6:40" + } + ] + } + ] + }, + "name": "array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18976:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "18986:6:40", + "type": "" + } + ], + "src": "18884:149:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19185:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19202:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19207:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19195:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19195:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19195:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "19223:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19242:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19247:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19238:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19238:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "19223:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19157:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "19162:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "19173:11:40", + "type": "" + } + ], + "src": "19039:219:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19371:60:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19381:11:40", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "19389:3:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19381:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19402:22:40", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "19414:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19419:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19410:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19410:14:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19402:4:40" + } + ] + } + ] + }, + "name": "array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "19358:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "19366:4:40", + "type": "" + } + ], + "src": "19264:167:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19490:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19507:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19529:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19512:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19512:23:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19500:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19500:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19500:36:40" + } + ] + }, + "name": "abi_encode_t_uint16_to_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19478:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19485:3:40", + "type": "" + } + ], + "src": "19437:105:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19619:82:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19636:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19688:5:40" + } + ], + "functionName": { + "name": "convert_t_contract$_ILBPair_$7970_to_t_address", + "nodeType": "YulIdentifier", + "src": "19641:46:40" + }, + "nodeType": "YulFunctionCall", + "src": "19641:53:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19629:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19629:66:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19629:66:40" + } + ] + }, + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19607:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19614:3:40", + "type": "" + } + ], + "src": "19548:153:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19756:50:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19773:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19793:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "19778:14:40" + }, + "nodeType": "YulFunctionCall", + "src": "19778:21:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19766:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19766:34:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19766:34:40" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19744:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19751:3:40", + "type": "" + } + ], + "src": "19707:99:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20020:769:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20030:26:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20046:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20051:4:40", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20042:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20042:14:40" + }, + "variables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20034:4:40", + "type": "" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20066:165:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20104:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20134:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20141:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20130:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20130:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "20124:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "20124:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "20108:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "20192:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20210:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20215:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20206:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20206:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16", + "nodeType": "YulIdentifier", + "src": "20160:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "20160:61:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20160:61:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20241:182:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20278:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20308:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20315:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20304:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20304:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "20298:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "20298:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "20282:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "20384:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20402:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20407:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20398:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20398:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address", + "nodeType": "YulIdentifier", + "src": "20334:49:40" + }, + "nodeType": "YulFunctionCall", + "src": "20334:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20334:79:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20433:168:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20478:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20508:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20515:4:40", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20504:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20504:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "20498:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "20498:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "20482:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "20562:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20580:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20585:4:40", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20576:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20576:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool", + "nodeType": "YulIdentifier", + "src": "20534:27:40" + }, + "nodeType": "YulFunctionCall", + "src": "20534:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20534:57:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20611:171:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20659:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20689:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20696:4:40", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20685:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20685:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "20679:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "20679:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "20663:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "20743:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20761:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20766:4:40", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20757:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20757:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool", + "nodeType": "YulIdentifier", + "src": "20715:27:40" + }, + "nodeType": "YulFunctionCall", + "src": "20715:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20715:57:40" + } + ] + } + ] + }, + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20007:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20014:3:40", + "type": "" + } + ], + "src": "19894:895:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20945:169:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "21059:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21067:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", + "nodeType": "YulIdentifier", + "src": "20955:103:40" + }, + "nodeType": "YulFunctionCall", + "src": "20955:116:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20955:116:40" + }, + { + "nodeType": "YulAssignment", + "src": "21080:28:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21098:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21103:4:40", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21094:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21094:14:40" + }, + "variableNames": [ + { + "name": "updatedPos", + "nodeType": "YulIdentifier", + "src": "21080:10:40" + } + ] + } + ] + }, + "name": "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "20918:6:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20926:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updatedPos", + "nodeType": "YulTypedName", + "src": "20934:10:40", + "type": "" + } + ], + "src": "20795:319:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21230:38:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21240:22:40", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "21252:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21257:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21248:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21248:14:40" + }, + "variableNames": [ + { + "name": "next", + "nodeType": "YulIdentifier", + "src": "21240:4:40" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "21217:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nodeType": "YulTypedName", + "src": "21225:4:40", + "type": "" + } + ], + "src": "21120:148:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21554:818:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21564:103:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21661:5:40" + } + ], + "functionName": { + "name": "array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "21578:82:40" + }, + "nodeType": "YulFunctionCall", + "src": "21578:89:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "21568:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "21676:128:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21792:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "21797:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "21683:108:40" + }, + "nodeType": "YulFunctionCall", + "src": "21683:121:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21676:3:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "21813:106:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21913:5:40" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "21828:84:40" + }, + "nodeType": "YulFunctionCall", + "src": "21828:91:40" + }, + "variables": [ + { + "name": "baseRef", + "nodeType": "YulTypedName", + "src": "21817:7:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "21928:21:40", + "value": { + "name": "baseRef", + "nodeType": "YulIdentifier", + "src": "21942:7:40" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "21932:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22018:329:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22032:34:40", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22059:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22053:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "22053:13:40" + }, + "variables": [ + { + "name": "elementValue0", + "nodeType": "YulTypedName", + "src": "22036:13:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22079:140:40", + "value": { + "arguments": [ + { + "name": "elementValue0", + "nodeType": "YulIdentifier", + "src": "22200:13:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22215:3:40" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr", + "nodeType": "YulIdentifier", + "src": "22086:113:40" + }, + "nodeType": "YulFunctionCall", + "src": "22086:133:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22079:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22232:105:40", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22330:6:40" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "22242:87:40" + }, + "nodeType": "YulFunctionCall", + "src": "22242:95:40" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "22232:6:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "21980:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "21983:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "21977:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "21977:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "21991:18:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21993:14:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22002:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22005:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21998:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21998:9:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "21993:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "21962:14:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21964:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21973:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "21968:1:40", + "type": "" + } + ] + } + ] + }, + "src": "21958:389:40" + }, + { + "nodeType": "YulAssignment", + "src": "22356:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22363:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "22356:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "21533:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "21540:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "21549:3:40", + "type": "" + } + ], + "src": "21360:1012:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22596:295:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22606:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22618:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22629:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22614:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22614:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22606:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22653:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22664:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22649:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22649:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22672:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22678:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "22668:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22668:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22642:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "22642:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "22642:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "22698:186:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22870:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22879:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "22706:163:40" + }, + "nodeType": "YulFunctionCall", + "src": "22706:178:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22698:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22568:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22580:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22591:4:40", + "type": "" + } + ], + "src": "22378:513:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23040:674:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "23087:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "23089:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "23089:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "23089:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23061:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23070:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "23057:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23057:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23082:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "23053:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23053:33:40" + }, + "nodeType": "YulIf", + "src": "23050:120:40" + }, + { + "nodeType": "YulBlock", + "src": "23180:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23195:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23209:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23199:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23224:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23274:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23285:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23270:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23270:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23294:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "23234:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "23234:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23224:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "23322:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23337:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23351:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23341:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23367:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23417:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23428:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23413:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23413:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23437:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "23377:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "23377:68:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23367:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "23465:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23480:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23494:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23484:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23510:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23544:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23555:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23540:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23540:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23564:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "23520:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "23520:52:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23510:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "23592:115:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23607:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23621:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23611:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23637:60:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23669:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23680:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23665:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23665:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23689:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bool", + "nodeType": "YulIdentifier", + "src": "23647:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "23647:50:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "23637:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22986:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "22997:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23009:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23017:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23025:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "23033:6:40", + "type": "" + } + ], + "src": "22897:817:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23850:549:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "23896:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "23898:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "23898:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "23898:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23871:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23880:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "23867:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23867:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23892:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "23863:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23863:32:40" + }, + "nodeType": "YulIf", + "src": "23860:119:40" + }, + { + "nodeType": "YulBlock", + "src": "23989:132:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24004:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24018:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24008:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24033:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24083:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24094:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24079:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24079:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24103:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "24043:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "24043:68:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24033:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24131:133:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24146:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24160:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24150:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24176:78:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24226:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24237:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24222:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24222:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24246:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_contract$_IERC20_$1838", + "nodeType": "YulIdentifier", + "src": "24186:35:40" + }, + "nodeType": "YulFunctionCall", + "src": "24186:68:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "24176:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24274:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24289:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24303:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24293:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24319:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24354:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24365:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24350:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24350:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24374:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "24329:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "24329:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "24319:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23804:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "23815:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23827:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23835:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23843:6:40", + "type": "" + } + ], + "src": "23720:679:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24623:769:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24633:26:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24649:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24654:4:40", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24645:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24645:14:40" + }, + "variables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24637:4:40", + "type": "" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24669:165:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24707:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24737:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24744:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24733:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24733:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24727:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "24727:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "24711:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "24795:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24813:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24818:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24809:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24809:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16", + "nodeType": "YulIdentifier", + "src": "24763:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "24763:61:40" + }, + "nodeType": "YulExpressionStatement", + "src": "24763:61:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24844:182:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24881:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "24911:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24918:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24907:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24907:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24901:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "24901:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "24885:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "24987:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25005:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25010:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25001:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25001:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address", + "nodeType": "YulIdentifier", + "src": "24937:49:40" + }, + "nodeType": "YulFunctionCall", + "src": "24937:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "24937:79:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "25036:168:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25081:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25111:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25118:4:40", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25107:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25107:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25101:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "25101:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "25085:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "25165:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25183:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25188:4:40", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25179:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25179:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool", + "nodeType": "YulIdentifier", + "src": "25137:27:40" + }, + "nodeType": "YulFunctionCall", + "src": "25137:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "25137:57:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "25214:171:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25262:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25292:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25299:4:40", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25288:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25288:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25282:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "25282:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "25266:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "25346:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25364:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25369:4:40", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25360:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25360:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool", + "nodeType": "YulIdentifier", + "src": "25318:27:40" + }, + "nodeType": "YulFunctionCall", + "src": "25318:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "25318:57:40" + } + ] + } + ] + }, + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24610:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "24617:3:40", + "type": "" + } + ], + "src": "24487:905:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25566:195:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25576:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25588:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25599:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25584:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25584:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25576:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25727:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25740:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25751:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25736:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25736:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25613:113:40" + }, + "nodeType": "YulFunctionCall", + "src": "25613:141:40" + }, + "nodeType": "YulExpressionStatement", + "src": "25613:141:40" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_LBPairInformation_$6974_memory_ptr__to_t_struct$_LBPairInformation_$6974_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25538:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25550:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25561:4:40", + "type": "" + } + ], + "src": "25398:363:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26055:697:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26065:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26077:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26088:3:40", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26073:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26073:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26065:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26146:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26159:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26170:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26155:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26155:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26102:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26102:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26102:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "26227:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26240:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26251:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26236:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26236:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26183:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26183:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26183:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "26309:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26322:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26333:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26318:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26318:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26265:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26265:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26265:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "26391:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26404:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26415:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26400:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26400:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26347:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26347:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26347:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "26473:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26486:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26497:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26482:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26482:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26429:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26429:73:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26429:73:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "26556:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26569:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26580:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26565:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26565:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26512:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26512:73:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26512:73:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "26639:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26652:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26663:3:40", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26648:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26648:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26595:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "26595:73:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26595:73:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "26716:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26729:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26740:3:40", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26725:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26725:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "26678:37:40" + }, + "nodeType": "YulFunctionCall", + "src": "26678:67:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26678:67:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25971:9:40", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "25983:6:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "25991:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "25999:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "26007:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "26015:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "26023:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26031:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26039:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26050:4:40", + "type": "" + } + ], + "src": "25767:985:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26875:648:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "26922:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "26924:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "26924:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26924:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "26896:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26905:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26892:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26892:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26917:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "26888:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26888:33:40" + }, + "nodeType": "YulIf", + "src": "26885:120:40" + }, + { + "nodeType": "YulBlock", + "src": "27015:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27030:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27044:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27034:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27059:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27094:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27105:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27090:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27090:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27114:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "27069:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "27069:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27059:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27142:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27157:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27171:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27161:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27187:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27222:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27233:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27218:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27218:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27242:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "27197:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "27197:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27187:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27270:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27285:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27299:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27289:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27315:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27350:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27361:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27346:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27346:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27370:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "27325:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "27325:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "27315:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "27398:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27413:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27427:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27417:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27443:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27478:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27489:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27474:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27474:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27498:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "27453:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "27453:53:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "27443:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26821:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "26832:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26844:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26852:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "26860:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "26868:6:40", + "type": "" + } + ], + "src": "26758:765:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27594:262:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "27640:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "27642:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "27642:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27642:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27615:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27624:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "27611:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27611:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27636:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "27607:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27607:32:40" + }, + "nodeType": "YulIf", + "src": "27604:119:40" + }, + { + "nodeType": "YulBlock", + "src": "27733:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "27748:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27762:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "27752:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "27777:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27811:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "27822:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27807:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27807:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27831:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16", + "nodeType": "YulIdentifier", + "src": "27787:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "27787:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27777:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27564:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "27575:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27587:6:40", + "type": "" + } + ], + "src": "27529:327:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27928:263:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "27974:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "27976:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "27976:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27976:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "27949:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27958:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "27945:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27945:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27970:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "27941:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27941:32:40" + }, + "nodeType": "YulIf", + "src": "27938:119:40" + }, + { + "nodeType": "YulBlock", + "src": "28067:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "28082:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28096:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "28086:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "28111:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28146:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "28157:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28142:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28142:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "28166:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "28121:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "28121:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "28111:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27898:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "27909:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27921:6:40", + "type": "" + } + ], + "src": "27862:329:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28225:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28242:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28245:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28235:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28235:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28235:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28339:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28342:4:40", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28332:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28332:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28332:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28363:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28366:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "28356:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28356:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28356:15:40" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "28197:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28411:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28428:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28431:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28421:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28421:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28421:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28525:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28528:4:40", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28518:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28518:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28518:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28549:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28552:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "28542:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28542:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28542:15:40" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "28383:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28597:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28614:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28617:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28607:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28607:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28607:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28711:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28714:4:40", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28704:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28704:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28704:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28735:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28738:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "28728:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28728:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28728:15:40" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "28569:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28798:190:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28808:33:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28835:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "28817:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "28817:24:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28808:5:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28931:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "28933:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "28933:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28933:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28856:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28863:66:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "28853:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "28853:77:40" + }, + "nodeType": "YulIf", + "src": "28850:103:40" + }, + { + "nodeType": "YulAssignment", + "src": "28962:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28973:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28980:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28969:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28969:13:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "28962:3:40" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "28784:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "28794:3:40", + "type": "" + } + ], + "src": "28755:233:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29053:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29063:65:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29120:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "29103:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "29103:23:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "29094:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "29094:33:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "29076:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "29076:52:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "29063:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint16_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29033:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "29043:9:40", + "type": "" + } + ], + "src": "28994:140:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29204:65:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29221:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29256:5:40" + } + ], + "functionName": { + "name": "convert_t_uint16_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "29226:29:40" + }, + "nodeType": "YulFunctionCall", + "src": "29226:36:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29214:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "29214:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29214:49:40" + } + ] + }, + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29192:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29199:3:40", + "type": "" + } + ], + "src": "29140:129:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29458:317:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29468:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29480:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29491:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29476:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29476:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "29468:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "29563:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29576:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29587:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29572:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29572:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "29504:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "29504:86:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29504:86:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "29659:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29672:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29683:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29668:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29668:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "29600:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "29600:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29600:87:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "29740:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "29753:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29764:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "29749:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29749:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "29697:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "29697:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29697:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "29414:9:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "29426:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "29434:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "29442:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "29453:4:40", + "type": "" + } + ], + "src": "29275:500:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29844:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29861:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29883:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "29866:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "29866:23:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29854:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "29854:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29854:36:40" + } + ] + }, + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29832:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29839:3:40", + "type": "" + } + ], + "src": "29781:115:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29965:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "29982:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "30004:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint24", + "nodeType": "YulIdentifier", + "src": "29987:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "29987:23:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "29975:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "29975:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29975:36:40" + } + ] + }, + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29953:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "29960:3:40", + "type": "" + } + ], + "src": "29902:115:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30275:606:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30285:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30297:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30308:3:40", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30293:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30293:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30285:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "30364:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30377:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30388:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30373:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30373:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30322:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30322:69:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30322:69:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "30443:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30456:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30467:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30452:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30452:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30401:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30401:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30401:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "30523:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30536:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30547:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30532:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30532:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30481:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30481:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30481:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "30603:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30616:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30627:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30612:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30612:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30561:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30561:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30561:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "30683:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30696:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30707:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30692:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30692:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulIdentifier", + "src": "30641:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30641:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30641:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "30764:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30777:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30788:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30773:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30773:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "30722:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30722:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30722:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "30845:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "30858:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30869:3:40", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30854:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30854:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulIdentifier", + "src": "30803:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "30803:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30803:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30199:9:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "30211:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "30219:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "30227:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "30235:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "30243:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "30251:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30259:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30270:4:40", + "type": "" + } + ], + "src": "30023:858:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30984:123:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30994:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31006:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31017:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31002:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31002:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "30994:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "31073:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31086:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31097:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31082:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31082:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "31030:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "31030:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31030:70:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "30956:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "30968:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "30979:4:40", + "type": "" + } + ], + "src": "30887:220:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31172:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "31182:65:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "31239:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint24", + "nodeType": "YulIdentifier", + "src": "31222:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "31222:23:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "31213:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "31213:33:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "31195:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "31195:52:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "31182:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint24_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "31152:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "31162:9:40", + "type": "" + } + ], + "src": "31113:140:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31323:65:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "31340:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "31375:5:40" + } + ], + "functionName": { + "name": "convert_t_uint24_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "31345:29:40" + }, + "nodeType": "YulFunctionCall", + "src": "31345:36:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "31333:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "31333:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31333:49:40" + } + ] + }, + "name": "abi_encode_t_uint24_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "31311:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "31318:3:40", + "type": "" + } + ], + "src": "31259:129:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31653:613:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "31663:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31675:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31686:3:40", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31671:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31671:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "31663:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "31743:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31756:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31767:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31752:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31752:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "31700:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "31700:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31700:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "31823:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31836:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31847:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31832:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31832:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "31780:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "31780:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31780:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "31904:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31917:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31928:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31913:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31913:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "31861:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "31861:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31861:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "31985:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "31998:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32009:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "31994:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31994:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "31942:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "31942:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31942:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "32066:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32079:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32090:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32075:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32075:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "32023:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "32023:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32023:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "32148:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32161:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32172:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32157:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32157:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "32105:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "32105:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32105:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "32230:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32243:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32254:3:40", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32239:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32239:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "32187:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "32187:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32187:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "31577:9:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "31589:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "31597:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "31605:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "31613:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "31621:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "31629:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "31637:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "31648:4:40", + "type": "" + } + ], + "src": "31394:872:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32397:205:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32407:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32419:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32430:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32415:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32415:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32407:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32487:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32500:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32511:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32496:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32496:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "32443:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "32443:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32443:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "32567:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32580:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32591:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32576:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32576:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "32524:42:40" + }, + "nodeType": "YulFunctionCall", + "src": "32524:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32524:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32361:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "32373:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32381:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32392:4:40", + "type": "" + } + ], + "src": "32272:330:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32886:687:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32896:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32908:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32919:3:40", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32904:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32904:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "32896:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "32975:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "32988:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32999:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32984:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32984:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "32933:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "32933:69:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32933:69:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "33054:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33067:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33078:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33063:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33063:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "33012:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33012:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33012:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "33134:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33147:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33158:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33143:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33143:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "33092:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33092:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33092:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "33214:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33227:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33238:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33223:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33223:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "33172:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33172:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33172:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "33294:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33307:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33318:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33303:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33303:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulIdentifier", + "src": "33252:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33252:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33252:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "33375:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33388:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33399:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33384:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33384:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "33333:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33333:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33333:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "33456:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33469:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33480:3:40", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33465:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33465:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulIdentifier", + "src": "33414:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33414:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33414:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "33537:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33550:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33561:3:40", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33546:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33546:19:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint24_to_t_uint24_fromStack", + "nodeType": "YulIdentifier", + "src": "33495:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33495:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33495:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "32802:9:40", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "32814:6:40", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "32822:6:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "32830:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "32838:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "32846:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "32854:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "32862:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "32870:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "32881:4:40", + "type": "" + } + ], + "src": "32608:965:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33621:52:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33631:35:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33656:2:40", + "type": "", + "value": "96" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33660:5:40" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "33652:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33652:14:40" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "33631:8:40" + } + ] + } + ] + }, + "name": "shift_left_96", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33602:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "33612:8:40", + "type": "" + } + ], + "src": "33579:94:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33726:47:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33736:31:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33761:5:40" + } + ], + "functionName": { + "name": "shift_left_96", + "nodeType": "YulIdentifier", + "src": "33747:13:40" + }, + "nodeType": "YulFunctionCall", + "src": "33747:20:40" + }, + "variableNames": [ + { + "name": "aligned", + "nodeType": "YulIdentifier", + "src": "33736:7:40" + } + ] + } + ] + }, + "name": "leftAlign_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33708:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "aligned", + "nodeType": "YulTypedName", + "src": "33718:7:40", + "type": "" + } + ], + "src": "33679:94:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33826:53:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33836:37:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "33867:5:40" + } + ], + "functionName": { + "name": "leftAlign_t_uint160", + "nodeType": "YulIdentifier", + "src": "33847:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "33847:26:40" + }, + "variableNames": [ + { + "name": "aligned", + "nodeType": "YulIdentifier", + "src": "33836:7:40" + } + ] + } + ] + }, + "name": "leftAlign_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33808:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "aligned", + "nodeType": "YulTypedName", + "src": "33818:7:40", + "type": "" + } + ], + "src": "33779:100:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33983:102:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34000:3:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34071:5:40" + } + ], + "functionName": { + "name": "convert_t_contract$_IERC20_$1838_to_t_address", + "nodeType": "YulIdentifier", + "src": "34025:45:40" + }, + "nodeType": "YulFunctionCall", + "src": "34025:52:40" + } + ], + "functionName": { + "name": "leftAlign_t_address", + "nodeType": "YulIdentifier", + "src": "34005:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "34005:73:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33993:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "33993:86:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33993:86:40" + } + ] + }, + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "33971:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "33978:3:40", + "type": "" + } + ], + "src": "33885:200:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34134:53:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34144:36:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34169:3:40", + "type": "", + "value": "240" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34174:5:40" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "34165:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34165:15:40" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "34144:8:40" + } + ] + } + ] + }, + "name": "shift_left_240", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34115:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "34125:8:40", + "type": "" + } + ], + "src": "34091:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34239:48:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34249:32:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34275:5:40" + } + ], + "functionName": { + "name": "shift_left_240", + "nodeType": "YulIdentifier", + "src": "34260:14:40" + }, + "nodeType": "YulFunctionCall", + "src": "34260:21:40" + }, + "variableNames": [ + { + "name": "aligned", + "nodeType": "YulIdentifier", + "src": "34249:7:40" + } + ] + } + ] + }, + "name": "leftAlign_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34221:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "aligned", + "nodeType": "YulTypedName", + "src": "34231:7:40", + "type": "" + } + ], + "src": "34193:94:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34374:72:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34391:3:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "34432:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "34415:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "34415:23:40" + } + ], + "functionName": { + "name": "leftAlign_t_uint16", + "nodeType": "YulIdentifier", + "src": "34396:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "34396:43:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34384:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "34384:56:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34384:56:40" + } + ] + }, + "name": "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34362:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "34369:3:40", + "type": "" + } + ], + "src": "34293:153:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34652:393:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "34740:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34749:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "34663:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "34663:90:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34663:90:40" + }, + { + "nodeType": "YulAssignment", + "src": "34762:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34773:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34778:2:40", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34769:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34769:12:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34762:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "34868:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34877:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "34791:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "34791:90:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34791:90:40" + }, + { + "nodeType": "YulAssignment", + "src": "34890:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34901:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34906:2:40", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34897:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34897:12:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34890:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "34979:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34988:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "34919:59:40" + }, + "nodeType": "YulFunctionCall", + "src": "34919:73:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34919:73:40" + }, + { + "nodeType": "YulAssignment", + "src": "35001:18:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35012:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35017:1:40", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35008:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35008:11:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35001:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "35029:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35036:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "35029:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "34615:3:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "34621:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "34629:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "34637:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "34648:3:40", + "type": "" + } + ], + "src": "34452:593:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35109:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35120:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "35136:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "35130:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "35130:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35120:6:40" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "35092:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "35102:6:40", + "type": "" + } + ], + "src": "35051:98:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35250:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35267:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35272:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35260:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "35260:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35260:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "35288:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35307:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35312:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35303:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35303:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "35288:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "35222:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "35227:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "35238:11:40", + "type": "" + } + ], + "src": "35155:168:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35391:184:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "35401:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35410:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "35405:1:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35470:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "35495:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35500:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35491:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35491:11:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "35514:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35519:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35510:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35510:11:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "35504:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "35504:18:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35484:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "35484:39:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35484:39:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35431:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35434:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "35428:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "35428:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "35442:19:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35444:15:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35453:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35456:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35449:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35449:10:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "35444:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "35424:3:40", + "statements": [] + }, + "src": "35420:113:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "35553:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35558:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35549:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35549:16:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35567:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35542:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "35542:27:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35542:27:40" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "35373:3:40", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "35378:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "35383:6:40", + "type": "" + } + ], + "src": "35329:246:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35629:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35639:38:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "35657:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35664:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35653:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35653:14:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35673:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "35669:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35669:7:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "35649:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35649:28:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "35639:6:40" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "35612:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "35622:6:40", + "type": "" + } + ], + "src": "35581:102:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35779:283:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "35789:52:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "35835:5:40" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "35803:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "35803:38:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "35793:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "35850:77:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35915:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35920:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "35857:57:40" + }, + "nodeType": "YulFunctionCall", + "src": "35857:70:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35850:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "35975:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35982:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35971:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35971:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35989:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "35994:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "35936:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "35936:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35936:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "36010:46:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "36021:3:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "36048:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "36026:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "36026:29:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36017:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36017:39:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "36010:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "35760:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "35767:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "35775:3:40", + "type": "" + } + ], + "src": "35689:373:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36324:551:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "36334:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36346:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36357:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36342:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36342:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36334:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "36415:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36428:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36439:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36424:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36424:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "36371:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "36371:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36371:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "36511:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36524:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36535:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36520:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36520:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "36452:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "36452:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36452:87:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "36608:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36621:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36632:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36617:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36617:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "36549:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "36549:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36549:87:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "36688:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36701:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36712:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36697:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36697:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint16_to_t_uint16_fromStack", + "nodeType": "YulIdentifier", + "src": "36646:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "36646:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36646:70:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36737:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36748:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36733:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36733:19:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36758:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36764:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "36754:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36754:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36726:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "36726:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36726:49:40" + }, + { + "nodeType": "YulAssignment", + "src": "36784:84:40", + "value": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "36854:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36863:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "36792:61:40" + }, + "nodeType": "YulFunctionCall", + "src": "36792:76:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36784:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint16_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36264:9:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "36276:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "36284:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "36292:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "36300:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "36308:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36319:4:40", + "type": "" + } + ], + "src": "36068:807:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36994:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37004:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37019:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "37004:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "36966:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "36971:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "36982:11:40", + "type": "" + } + ], + "src": "36881:147:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37142:278:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "37152:52:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "37198:5:40" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "37166:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "37166:38:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "37156:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "37213:95:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37296:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "37301:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "37220:75:40" + }, + "nodeType": "YulFunctionCall", + "src": "37220:88:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37213:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "37356:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37363:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37352:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37352:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37370:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "37375:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "37317:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "37317:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "37317:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "37391:23:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37402:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "37407:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37398:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37398:16:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "37391:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "37123:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "37130:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "37138:3:40", + "type": "" + } + ], + "src": "37034:386:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37606:247:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37617:100:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "37704:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37713:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "37624:79:40" + }, + "nodeType": "YulFunctionCall", + "src": "37624:93:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37617:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "37727:100:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "37814:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37823:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "37734:79:40" + }, + "nodeType": "YulFunctionCall", + "src": "37734:93:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37727:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "37837:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37844:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "37837:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "37577:3:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "37583:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "37591:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "37602:3:40", + "type": "" + } + ], + "src": "37426:427:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37904:149:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37914:25:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "37937:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "37919:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "37919:20:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "37914:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "37948:25:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "37971:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "37953:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "37953:20:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "37948:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "37982:17:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "37994:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "37997:1:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "37990:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37990:9:40" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "37982:4:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38024:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "38026:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "38026:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38026:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "38015:4:40" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "38021:1:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "38012:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "38012:11:40" + }, + "nodeType": "YulIf", + "src": "38009:37:40" + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "37890:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "37893:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "37899:4:40", + "type": "" + } + ], + "src": "37859:194:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38201:222:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38211:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38223:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38234:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38219:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38219:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38211:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38307:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38320:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38331:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38316:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38316:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "38247:59:40" + }, + "nodeType": "YulFunctionCall", + "src": "38247:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38247:87:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38388:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38401:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38412:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38397:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38397:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "38344:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "38344:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38344:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_ILBPair_$7970_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38165:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38177:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38185:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38196:4:40", + "type": "" + } + ], + "src": "38059:364:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38555:206:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38565:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38577:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38588:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38573:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38573:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38565:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "38645:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38658:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38669:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38654:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38654:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "38601:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "38601:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38601:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "38726:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "38739:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38750:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38735:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38735:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "38682:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "38682:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38682:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "38519:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "38531:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "38539:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "38550:4:40", + "type": "" + } + ], + "src": "38429:332:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38820:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38830:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "38841:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "38830:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_rational_0_by_1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "38802:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "38812:7:40", + "type": "" + } + ], + "src": "38767:85:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38926:90:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38936:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39002:5:40" + } + ], + "functionName": { + "name": "cleanup_t_rational_0_by_1", + "nodeType": "YulIdentifier", + "src": "38976:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "38976:32:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "38967:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "38967:42:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "38949:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "38949:61:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "38936:9:40" + } + ] + } + ] + }, + "name": "convert_t_rational_0_by_1_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "38906:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "38916:9:40", + "type": "" + } + ], + "src": "38858:158:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39095:74:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "39112:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39156:5:40" + } + ], + "functionName": { + "name": "convert_t_rational_0_by_1_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "39117:38:40" + }, + "nodeType": "YulFunctionCall", + "src": "39117:45:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39105:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "39105:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39105:58:40" + } + ] + }, + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "39083:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "39090:3:40", + "type": "" + } + ], + "src": "39022:147:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39309:214:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39319:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39331:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39342:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39327:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39327:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39319:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "39407:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39420:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39431:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39416:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39416:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "39355:51:40" + }, + "nodeType": "YulFunctionCall", + "src": "39355:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39355:79:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "39488:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39501:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39512:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39497:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39497:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "39444:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "39444:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39444:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39273:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "39285:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "39293:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39304:4:40", + "type": "" + } + ], + "src": "39175:348:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39582:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39592:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39603:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "39592:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_rational_1_by_1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "39564:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "39574:7:40", + "type": "" + } + ], + "src": "39529:85:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39664:57:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39674:41:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39689:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39696:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "39685:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39685:30:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "39674:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "39646:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "39656:7:40", + "type": "" + } + ], + "src": "39620:101:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39794:89:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39804:73:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "39869:5:40" + } + ], + "functionName": { + "name": "cleanup_t_rational_1_by_1", + "nodeType": "YulIdentifier", + "src": "39843:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "39843:32:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "39834:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "39834:42:40" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "39817:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "39817:60:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "39804:9:40" + } + ] + } + ] + }, + "name": "convert_t_rational_1_by_1_to_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "39774:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "39784:9:40", + "type": "" + } + ], + "src": "39727:156:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39961:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "39978:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "40021:5:40" + } + ], + "functionName": { + "name": "convert_t_rational_1_by_1_to_t_uint64", + "nodeType": "YulIdentifier", + "src": "39983:37:40" + }, + "nodeType": "YulFunctionCall", + "src": "39983:44:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39971:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "39971:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39971:57:40" + } + ] + }, + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "39949:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "39956:3:40", + "type": "" + } + ], + "src": "39889:145:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40145:131:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40155:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40167:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40178:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40163:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40163:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40155:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "40242:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40255:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40266:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40251:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40251:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack", + "nodeType": "YulIdentifier", + "src": "40191:50:40" + }, + "nodeType": "YulFunctionCall", + "src": "40191:78:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40191:78:40" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "40117:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "40129:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "40140:4:40", + "type": "" + } + ], + "src": "40040:236:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40345:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40355:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "40370:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "40364:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "40364:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "40355:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "40413:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "40386:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "40386:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40386:33:40" + } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "40323:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "40331:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "40339:5:40", + "type": "" + } + ], + "src": "40282:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40508:274:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "40554:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "40556:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "40556:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40556:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "40529:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40538:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "40525:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40525:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40550:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "40521:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40521:32:40" + }, + "nodeType": "YulIf", + "src": "40518:119:40" + }, + { + "nodeType": "YulBlock", + "src": "40647:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "40662:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40676:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "40666:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "40691:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40737:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "40748:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40733:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40733:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "40757:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "40701:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "40701:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "40691:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "40478:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "40489:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "40501:6:40", + "type": "" + } + ], + "src": "40431:351:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40932:275:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40942:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40954:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40965:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40950:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40950:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40942:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "41022:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41035:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41046:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41031:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41031:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "40978:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "40978:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40978:71:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41070:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41081:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41066:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41066:18:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41090:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41096:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41086:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41086:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "41059:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "41059:48:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41059:48:40" + }, + { + "nodeType": "YulAssignment", + "src": "41116:84:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "41186:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41195:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "41124:61:40" + }, + "nodeType": "YulFunctionCall", + "src": "41124:76:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41116:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "40896:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "40908:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "40916:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "40927:4:40", + "type": "" + } + ], + "src": "40788:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41339:206:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "41349:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41361:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41372:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41357:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41357:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41349:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "41429:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41442:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41453:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41438:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41438:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "41385:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "41385:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41385:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "41510:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41523:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41534:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41519:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41519:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "41466:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "41466:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41466:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "41303:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "41315:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "41323:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "41334:4:40", + "type": "" + } + ], + "src": "41213:332:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41677:206:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "41687:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41699:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41710:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41695:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41695:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41687:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "41767:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41780:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41791:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41776:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41776:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "41723:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "41723:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41723:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "41848:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41861:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41872:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41857:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41857:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "41804:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "41804:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41804:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "41641:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "41653:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "41661:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "41672:4:40", + "type": "" + } + ], + "src": "41551:332:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41917:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41934:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41937:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "41927:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "41927:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41927:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42031:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42034:4:40", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "42024:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42024:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42024:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42055:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42058:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "42048:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42048:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42048:15:40" + } + ] + }, + "name": "panic_error_0x12", + "nodeType": "YulFunctionDefinition", + "src": "41889:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42119:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42129:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42140:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "42129:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_int256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42101:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "42111:7:40", + "type": "" + } + ], + "src": "42075:76:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42220:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "42237:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42259:5:40" + } + ], + "functionName": { + "name": "cleanup_t_int256", + "nodeType": "YulIdentifier", + "src": "42242:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "42242:23:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "42230:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42230:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42230:36:40" + } + ] + }, + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42208:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "42215:3:40", + "type": "" + } + ], + "src": "42157:115:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42402:204:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42412:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "42424:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42435:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "42420:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42420:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "42412:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "42492:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "42505:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42516:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "42501:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42501:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "42448:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "42448:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42448:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "42571:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "42584:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42595:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "42580:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42580:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_int256_to_t_int256_fromStack", + "nodeType": "YulIdentifier", + "src": "42529:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "42529:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42529:70:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "42366:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "42378:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "42386:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "42397:4:40", + "type": "" + } + ], + "src": "42278:328:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42654:143:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42664:25:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "42687:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "42669:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "42669:20:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "42664:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "42698:25:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "42721:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "42703:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "42703:20:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "42698:1:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42745:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "42747:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "42747:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42747:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "42742:1:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "42735:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42735:9:40" + }, + "nodeType": "YulIf", + "src": "42732:35:40" + }, + { + "nodeType": "YulAssignment", + "src": "42777:14:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "42786:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "42789:1:40" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "42782:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42782:9:40" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "42777:1:40" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "42643:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "42646:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "42652:1:40", + "type": "" + } + ], + "src": "42612:185:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42831:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42848:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42851:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "42841:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42841:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42841:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42945:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42948:4:40", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "42938:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42938:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42938:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42969:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42972:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "42962:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42962:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42962:15:40" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "42803:180:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_IERC20_$1838_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$1838_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$1838__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_contract$_IERC20_$1838(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_IERC20_$1838(value) {\n if iszero(eq(value, cleanup_t_contract$_IERC20_$1838(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_IERC20_$1838(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_IERC20_$1838(value)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n function cleanup_t_uint24(value) -> cleaned {\n cleaned := and(value, 0xffffff)\n }\n\n function validator_revert_t_uint24(value) {\n if iszero(eq(value, cleanup_t_uint24(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint24(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint24(value)\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n if slt(sub(dataEnd, headStart), 320) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 288\n\n value9 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_uint16t_uint16t_uint16t_uint16t_uint16t_uint24t_uint16t_uint24t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8 {\n if slt(sub(dataEnd, headStart), 288) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 224\n\n value7 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 256\n\n value8 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ILBPair_$7970(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ILBPair_$7970(value) {\n if iszero(eq(value, cleanup_t_contract$_ILBPair_$7970(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ILBPair_$7970(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_contract$_ILBPair_$7970(value)\n }\n\n function abi_decode_tuple_t_contract$_ILBPair_$7970(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ILBPair_$7970(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint16t_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint24t_uint16(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint24(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function convert_t_contract$_ILBPair_$7970_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$7970_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$7970__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint16_to_t_uint16(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_t_contract$_ILBPair_$7970_to_t_address(value, pos) {\n mstore(pos, convert_t_contract$_ILBPair_$7970_to_t_address(value))\n }\n\n function abi_encode_t_bool_to_t_bool(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n // struct ILBFactory.LBPairInformation -> struct ILBFactory.LBPairInformation\n function abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(value, pos) {\n let tail := add(pos, 0x80)\n\n {\n // binStep\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint16_to_t_uint16(memberValue0, add(pos, 0x00))\n }\n\n {\n // LBPair\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_contract$_ILBPair_$7970_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // createdByOwner\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x40))\n }\n\n {\n // ignoredForRouting\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x60))\n }\n\n }\n\n function abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(value0, pos) -> updatedPos {\n abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(value0, pos)\n updatedPos := add(pos, 0x80)\n }\n\n function array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct ILBFactory.LBPairInformation[] -> struct ILBFactory.LBPairInformation[]\n function abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint16t_bool(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_contract$_IERC20_$1838t_contract$_IERC20_$1838t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_contract$_IERC20_$1838(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n // struct ILBFactory.LBPairInformation -> struct ILBFactory.LBPairInformation\n function abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack(value, pos) {\n let tail := add(pos, 0x80)\n\n {\n // binStep\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint16_to_t_uint16(memberValue0, add(pos, 0x00))\n }\n\n {\n // LBPair\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_contract$_ILBPair_$7970_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // createdByOwner\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x40))\n }\n\n {\n // ignoredForRouting\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x60))\n }\n\n }\n\n function abi_encode_tuple_t_struct$_LBPairInformation_$6974_memory_ptr__to_t_struct$_LBPairInformation_$6974_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_struct$_LBPairInformation_$6974_memory_ptr_to_t_struct$_LBPairInformation_$6974_memory_ptr_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed(headStart , value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n abi_encode_t_bool_to_t_bool_fromStack(value7, add(headStart, 224))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function convert_t_uint16_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint16(value)))\n }\n\n function abi_encode_t_uint16_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint16_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_t_uint24_to_t_uint24_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint24(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 224)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value6, add(headStart, 192))\n\n }\n\n function abi_encode_tuple_t_uint16__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function convert_t_uint24_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint24(value)))\n }\n\n function abi_encode_t_uint24_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_uint24_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 224)\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n }\n\n function abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint24_t_uint16_t_uint24_t_uint24__fromStack_reversed(headStart , value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value6, add(headStart, 192))\n\n abi_encode_t_uint24_to_t_uint24_fromStack(value7, add(headStart, 224))\n\n }\n\n function shift_left_96(value) -> newValue {\n newValue :=\n\n shl(96, value)\n\n }\n\n function leftAlign_t_uint160(value) -> aligned {\n aligned := shift_left_96(value)\n }\n\n function leftAlign_t_address(value) -> aligned {\n aligned := leftAlign_t_uint160(value)\n }\n\n function abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_address(convert_t_contract$_IERC20_$1838_to_t_address(value)))\n }\n\n function shift_left_240(value) -> newValue {\n newValue :=\n\n shl(240, value)\n\n }\n\n function leftAlign_t_uint16(value) -> aligned {\n aligned := shift_left_240(value)\n }\n\n function abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint16(cleanup_t_uint16(value)))\n }\n\n function abi_encode_tuple_packed_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16__to_t_address_t_address_t_uint16__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 20)\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 20)\n\n abi_encode_t_uint16_to_t_uint16_nonPadded_inplace_fromStack(value2, pos)\n pos := add(pos, 2)\n\n end := pos\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_contract$_IERC20_$1838_t_contract$_IERC20_$1838_t_uint16_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint16_t_bytes_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_contract$_IERC20_$1838_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value4, tail)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_contract$_ILBPair_$7970_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ILBPair_$7970_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_rational_0_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n function abi_encode_tuple_t_rational_0_by_1_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function convert_t_rational_1_by_1_to_t_uint64(value) -> converted {\n converted := cleanup_t_uint64(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint64(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_int256_to_t_int256_fromStack(value1, add(headStart, 32))\n\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801562000010575f80fd5b5060043610620002ae575f3560e01c8063701ab8c1116200016f578063aabc4b3c11620000d3578063e203a31f1162000091578063e203a31f1462000847578063e30c39781462000867578063e74b981b1462000889578063e92d0d5d14620008a9578063f2fde38b14620008c9578063fd90c2be14620008e957620002ae565b8063aabc4b3c1462000788578063be20309414620007c5578063c1b931be14620007e5578063d547741f1462000807578063ddbfd941146200082757620002ae565b806380c5061e116200012d57806380c5061e14620006a85780638ce9aa1c14620006ca5780638da5cb5b14620006ec57806391d14854146200070e578063a0a0ea391462000744578063a217fddf146200076657620002ae565b8063701ab8c11462000602578063704037bd1462000624578063715018a6146200065a57806379ba509714620006665780637daf5d66146200067257620002ae565b80633a2f1a9111620002175780635a44092311620001d55780635a44092314620005125780635b35875c1462000532578063659ac74b1462000554578063661d7ffb146200058a5780636622e0d714620005ac57806369d56ea314620005e257620002ae565b80633a2f1a91146200046e5780633c78a941146200048e5780634ccb20c014620004ae5780634cd161d314620004d05780634e937c3a14620004f057620002ae565b8063248a9ca31162000271578063248a9ca314620003825780632772184214620003b85780632cc06b8c14620003ee5780632f2ff15d146200040e57806336568abe146200042e578063379ee803146200044e57620002ae565b806301ffc9a714620002b25780630282c9c114620002e85780630752092b146200030a578063093ff76914620003405780631af5bacc1462000360575b5f80fd5b620002d06004803603810190620002ca9190620044b5565b6200090b565b604051620002df919062004501565b60405180910390f35b620002f262000987565b604051620003019190620045ec565b60405180910390f35b6200032860048036038101906200032291906200463d565b62000a89565b604051620003379190620046f3565b60405180910390f35b6200035e6004803603810190620003589190620047dc565b62000aa7565b005b6200036a62000bc3565b604051620003799190620048e6565b60405180910390f35b620003a060048036038101906200039a919062004930565b62000be7565b604051620003af9190620048e6565b60405180910390f35b620003d66004803603810190620003d0919062004960565b62000c13565b604051620003e5919062004501565b60405180910390f35b6200040c600480360381019062000406919062004990565b62000c31565b005b6200042c600480360381019062000426919062004a18565b62000cc4565b005b6200044c600480360381019062000446919062004a18565b62000cec565b005b6200046c600480360381019062000466919062004a8c565b62000d6c565b005b6200048c600480360381019062000486919062004bcf565b62000eb5565b005b620004ac6004803603810190620004a6919062004cb7565b62000fdc565b005b620004b862001046565b604051620004c7919062004cf8565b60405180910390f35b620004ee6004803603810190620004e8919062004d13565b6200106d565b005b620004fa620011b6565b60405162000509919062004d69565b60405180910390f35b6200053060048036038101906200052a919062004960565b620011c2565b005b6200053c6200126c565b6040516200054b9190620045ec565b60405180910390f35b6200057260048036038101906200056c919062004d84565b6200127f565b60405162000581919062004e17565b60405180910390f35b6200059462001aba565b604051620005a39190620048e6565b60405180910390f35b620005ca6004803603810190620005c4919062004e32565b62001ade565b604051620005d9919062004fbb565b60405180910390f35b620006006004803603810190620005fa919062004fdd565b62001d7f565b005b6200060c62002099565b6040516200061b919062004d69565b60405180910390f35b6200064260048036038101906200063c91906200504c565b620020a1565b60405162000651919062005100565b60405180910390f35b62000664620020c1565b005b62000670620020d8565b005b6200069060048036038101906200068a91906200463d565b6200216f565b6040516200069f919062004e17565b60405180910390f35b620006b2620021b6565b604051620006c1919062004d69565b60405180910390f35b620006d4620021c8565b604051620006e3919062004d69565b60405180910390f35b620006f6620021d7565b60405162000705919062004cf8565b60405180910390f35b6200072c600480360381019062000726919062004a18565b6200220e565b6040516200073b919062004501565b60405180910390f35b6200074e6200226e565b6040516200075d919062004cf8565b60405180910390f35b6200077062002296565b6040516200077f9190620048e6565b60405180910390f35b620007a66004803603810190620007a091906200463d565b6200229c565b604051620007bc9897969594939291906200511b565b60405180910390f35b620007e36004803603810190620007dd9190620051a7565b620023b6565b005b620007ef6200262d565b604051620007fe9190620048e6565b60405180910390f35b6200082560048036038101906200081f919062004a18565b62002654565b005b6200084560048036038101906200083f919062004960565b6200267c565b005b6200086560048036038101906200085f919062005216565b62002726565b005b62000871620027c2565b60405162000880919062004cf8565b60405180910390f35b620008a76004803603810190620008a1919062005246565b620027f9565b005b620008c76004803603810190620008c191906200463d565b62002811565b005b620008e76004803603810190620008e1919062005246565b62002908565b005b620008f3620029c7565b60405162000902919062004d69565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806200098057506200097f82620029d0565b5b9050919050565b60605f62000996600562002a39565b90505f81111562000a85578067ffffffffffffffff811115620009be57620009bd62005276565b5b604051908082528060200260200182016040528015620009ed5781602001602082028036833780820191505090505b5091505f805b8281101562000a75575f8062000a1483600562002a4e90919063ffffffff16565b9150915062000a25815f1b62002a77565b1562000a5f578186858151811062000a425762000a41620052a3565b5b602002602001018181525050838062000a5b90620052fd565b9450505b50508062000a6d90620052fd565b9050620009f3565b508181101562000a83578083525b505b5090565b5f62000aa082600862002a9590919063ffffffff16565b9050919050565b62000ab162002aae565b5f62000ac38b8b8b61ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b40578a8a8a6040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162000b379392919062005381565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16636653851a898989898989896040518863ffffffff1660e01b815260040162000b879796959493929190620053de565b5f604051808303815f87803b15801562000b9f575f80fd5b505af115801562000bb2573d5f803e3d5ffd5b505050505050505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa981565b5f8062000bf362002c9e565b9050805f015f8481526020019081526020015f2060010154915050919050565b5f62000c2a82600862002cc590919063ffffffff16565b9050919050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000c5d8162002cf4565b62000cbe8484845f801b5f67ffffffffffffffff81111562000c845762000c8362005276565b5b6040519080825280601f01601f19166020018201604052801562000cb75781602001600182028036833780820191505090505b5062002d0c565b50505050565b62000ccf8262000be7565b62000cda8162002cf4565b62000ce6838362002ec5565b50505050565b62000cf662002f16565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000d5b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000d67828262002f1d565b505050565b62000d7662002aae565b60018961ffff16101562000dc357886040517f4f958e7100000000000000000000000000000000000000000000000000000000815260040162000dba919062005459565b60405180910390fd5b5f62000de7898989898989895f801b6200301d90979695949392919063ffffffff16565b9050811562000e0c5762000e09600160ff83620031cf9092919063ffffffff16565b90505b62000e2a8a61ffff16825f1c6005620031fa9092919063ffffffff16565b508961ffff167f839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a288a8a8a8a8a8a8a60405162000e6d9796959493929190620054ac565b60405180910390a28115158a61ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a350505050505050505050565b7fdcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa962000ee18162002cf4565b5f73ffffffffffffffffffffffffffffffffffffffff1662000f038562003217565b73ffffffffffffffffffffffffffffffffffffffff16148062000f4957505f60a01b62000f308562003222565b73ffffffffffffffffffffffffffffffffffffffff1916145b1562000f81576040517fd43a15d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000fd38787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505062002d0c565b50505050505050565b62000fe662002aae565b8073ffffffffffffffffffffffffffffffffffffffff1663d3b9fbe46040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200102c575f80fd5b505af11580156200103f573d5f803e3d5ffd5b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200107762002aae565b620010918261ffff1660056200322b90919063ffffffff16565b620010d557816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620010cc919062005459565b60405180910390fd5b5f620010f08361ffff1660056200324490919063ffffffff16565b5f1b90508115156200110d60ff836200325f90919063ffffffff16565b15150362001147576040517f237c71b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200117c8361ffff16620011688460ff85620031cf9092919063ffffffff16565b5f1c6005620031fa9092919063ffffffff16565b508115158361ffff167f58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd60405160405180910390a3505050565b5f600380549050905090565b620011cc62002aae565b620011e28160086200326e90919063ffffffff16565b6200122657806040517f03ce0ad90000000000000000000000000000000000000000000000000000000081526004016200121d9190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e60405160405180910390a250565b60606200127a60056200329d565b905090565b5f6200129a8261ffff1660056200322b90919063ffffffff16565b620012de57816040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620012d5919062005459565b60405180910390fd5b5f620012f98361ffff1660056200324490919063ffffffff16565b5f1b90505f62001308620021d7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050620013438262002a77565b1580156200134f575080155b15620013965733846040517f09f85fce0000000000000000000000000000000000000000000000000000000081526004016200138d92919062005527565b60405180910390fd5b620013ac86600862002cc590919063ffffffff16565b620013f057856040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620013e79190620046f3565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036200146357866040517f2f9b18530000000000000000000000000000000000000000000000000000000081526004016200145a9190620046f3565b60405180910390fd5b6200146f8585620032be565b505f806200147e8989620032fa565b915091505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620014e8576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200160c578888876040517fcb27a435000000000000000000000000000000000000000000000000000000008152600401620016039392919062005381565b60405180910390fd5b5f620016188562003349565b620016238662003366565b6200162e8762003384565b6200163988620033a2565b6200164489620033c0565b6200164f8a620033de565b6200165a8b620033fc565b8e6040516024016200167498979695949392919062005552565b6040516020818303038152906040527f47973bff000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f8383896040516020016200170b9392919062005665565b6040516020818303038152906040528051906020012090505f60405180602001620017369062004403565b6020820181038252601f19601f8201166040525060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8c87604051602001620017869594939291906200573b565b604051602081830303815290604052604051602001620017a8929190620057dd565b6040516020818303038152906040529050620017c65f83836200341a565b975050505060405180608001604052808761ffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200184151581526020015f151581525060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8861ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151815f0160166101000a81548160ff0219169083151502179055506060820151815f0160176101000a81548160ff021916908315150217905550905050600385908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062001a2c8661ffff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206200351890919063ffffffff16565b508561ffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff88600160038054905062001a96919062005804565b60405162001aa69291906200583e565b60405180910390a450505050949350505050565b7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d81565b60605f8062001aee8585620032fa565b915091505f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f62001b798262003531565b90505f81111562001d75578067ffffffffffffffff81111562001ba15762001ba062005276565b5b60405190808252806020026020018201604052801562001bde57816020015b62001bca62004411565b81526020019060019003908162001bc05790505b5094505f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b8281101562001d72575f62001c8762001c8183876200354690919063ffffffff16565b6200355f565b905060405180608001604052808261ffff168152602001845f8461ffff1681526020019081526020015f205f0160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001845f8461ffff1681526020019081526020015f205f0160169054906101000a900460ff1615158152602001845f8461ffff1681526020019081526020015f205f0160179054906101000a900460ff16151581525088838151811062001d5a5762001d59620052a3565b5b60200260200101819052505080600101905062001c5e565b50505b5050505092915050565b62001d8962002aae565b5f8062001d978686620032fa565b915091505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8661ffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff160362001f56578686866040517f40aa464400000000000000000000000000000000000000000000000000000000815260040162001f4d9392919062005381565b60405180910390fd5b831515816060015115150362001f97576040517eddccca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8761ffff1681526020019081526020015f205f0160176101000a81548160ff021916908315150217905550806020015173ffffffffffffffffffffffffffffffffffffffff167f44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f8560405162002088919062004501565b60405180910390a250505050505050565b5f6001905090565b620020ab62004411565b620020b884848462002b3e565b90509392505050565b620020cb62002aae565b620020d65f620035a6565b565b5f620020e362002f16565b90508073ffffffffffffffffffffffffffffffffffffffff1662002106620027c2565b73ffffffffffffffffffffffffffffffffffffffff16146200216157806040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002158919062004cf8565b60405180910390fd5b6200216c81620035a6565b50565b5f60038281548110620021875762002186620052a3565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f620021c36008620035e7565b905090565b5f67016345785d8a0000905090565b5f80620021e3620035fc565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f805f1b8303620022595762002223620021d7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905062002268565b62002265838362003623565b90505b92915050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f801b81565b5f805f805f805f80620022ba8960056200322b90919063ffffffff16565b620022fe57886040517ffb22c17e000000000000000000000000000000000000000000000000000000008152600401620022f5919062004d69565b60405180910390fd5b5f620023158a60056200324490919063ffffffff16565b5f1b9050620023248162003349565b61ffff169850620023358162003366565b61ffff169750620023468162003384565b61ffff1696506200235781620033a2565b61ffff1695506200236881620033c0565b62ffffff1694506200237a81620033de565b61ffff1693506200238b81620033fc565b62ffffff169250620023a860ff826200325f90919063ffffffff16565b915050919395975091939597565b5f620023c162003696565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156200240a5750825b90505f60018367ffffffffffffffff161480156200243e57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156200244d575080155b1562002485576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620024d3576001855f0160086101000a81548160ff0219169083151502179055505b620024de88620036bd565b67016345785d8a000087111562002538578667016345785d8a00006040517f5e8988c10000000000000000000000000000000000000000000000000000000081526004016200252f92919062005869565b60405180910390fd5b6200254389620036d5565b866001819055508560025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e505f88604051620025bd929190620058d5565b60405180910390a1831562002622575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162002619919062005954565b60405180910390a15b505050505050505050565b5f7f9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d905090565b6200265f8262000be7565b6200266a8162002cf4565b62002676838362002f1d565b50505050565b6200268662002aae565b6200269c8160086200386f90919063ffffffff16565b620026e057806040517f8e888ef3000000000000000000000000000000000000000000000000000000008152600401620026d79190620046f3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb360405160405180910390a250565b6200273062002aae565b6200274a8161ffff1660056200389e90919063ffffffff16565b6200278e57806040517ffb22c17e00000000000000000000000000000000000000000000000000000000815260040162002785919062005459565b60405180910390fd5b8061ffff167fdd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be1360405160405180910390a250565b5f80620027ce620038b7565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6200280362002aae565b6200280e81620036d5565b50565b6200281b62002aae565b5f60015490508181036200286857816040517f6ea8c7a40000000000000000000000000000000000000000000000000000000081526004016200285f919062004d69565b60405180910390fd5b67016345785d8a0000821115620028c2578167016345785d8a00006040517f5e8988c1000000000000000000000000000000000000000000000000000000008152600401620028b992919062005869565b60405180910390fd5b816001819055507f5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e508183604051620028fc92919062005869565b60405180910390a15050565b6200291262002aae565b5f6200291d620038b7565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1662002981620021d7565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f600154905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f62002a47825f01620038de565b9050919050565b5f805f8062002a60865f0186620038f3565b91509150815f1c815f1c9350935050509250929050565b5f62002a8e60ff836200325f90919063ffffffff16565b9050919050565b5f62002aa4835f018362003930565b5f1c905092915050565b62002ab862002f16565b73ffffffffffffffffffffffffffffffffffffffff1662002ad8620021d7565b73ffffffffffffffffffffffffffffffffffffffff161462002b3c5762002afe62002f16565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162002b33919062004cf8565b60405180910390fd5b565b62002b4862004411565b62002b548484620032fa565b809450819550505060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f206040518060800160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160169054906101000a900460ff161515151581526020015f820160179054906101000a900460ff16151515158152505090509392505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b5f62002cec835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6200395a565b905092915050565b62002d098162002d0362002f16565b6200397a565b50565b5f62002d1e86868661ffff1662002b3e565b6020015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362002d9b578585856040517fb65ee95300000000000000000000000000000000000000000000000000000000815260040162002d929392919062005381565b60405180910390fd5b828173ffffffffffffffffffffffffffffffffffffffff1663781a89156040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002de6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e0c919062005985565b0362002e5157826040517fb70cd0db00000000000000000000000000000000000000000000000000000000815260040162002e489190620048e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16631b057f6d84846040518363ffffffff1660e01b815260040162002e8e929190620059b5565b5f604051808303815f87803b15801562002ea6575f80fd5b505af115801562002eb9573d5f803e3d5ffd5b50505050505050505050565b5f805f1b830362002f02576040517f7c64a79e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62002f0e8383620039d0565b905092915050565b5f33905090565b5f8062002f2962002c9e565b905062002f3784846200220e565b1562003012575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062002fad62002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600191505062003017565b5f9150505b92915050565b5f8561ffff168761ffff1611806200303a5750610fff8661ffff16115b806200304b57506127108561ffff16115b806200305c57506109c48361ffff16115b806200306f5750620fffff8262ffffff16115b15620030a7576040517f1c07203f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620030c68861ffff1661ffff5f8462003ad0909392919063ffffffff16565b9050620030e88761ffff16610fff60108462003ad0909392919063ffffffff16565b90506200310a8661ffff16610fff601c8462003ad0909392919063ffffffff16565b90506200312c8561ffff16613fff60288462003ad0909392919063ffffffff16565b9050620031508462ffffff1662ffffff60368462003ad0909392919063ffffffff16565b9050620031728361ffff16613fff604e8462003ad0909392919063ffffffff16565b9050620031968262ffffff16620fffff605c8462003ad0909392919063ffffffff16565b9050620031c1815f1c6dffffffffffffffffffffffffffff5f8c62003ad0909392919063ffffffff16565b905098975050505050505050565b5f620031f18484620031e2575f620031e5565b60015b60ff1660018562003ad0565b90509392505050565b5f6200320e845f01845f1b845f1b62003aea565b90509392505050565b5f815f1c9050919050565b5f819050919050565b5f6200323c835f01835f1b62003b23565b905092915050565b5f62003255835f01835f1b62003b43565b5f1c905092915050565b5f600183831c16905092915050565b5f62003295835f018373ffffffffffffffffffffffffffffffffffffffff165f1b62003bc5565b905092915050565b60605f620032ad835f0162003c30565b905060608190508092505050919050565b5f80620032cb8362003c46565b90505f620032d98562003c79565b9050620032f0818362003c8c90919063ffffffff16565b9250505092915050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156200333c57828480945081955050505b8383915091509250929050565b5f6200335f5f8362003fb290919063ffffffff16565b9050919050565b5f6200337d60108362003fc290919063ffffffff16565b9050919050565b5f6200339b601c8362003fc290919063ffffffff16565b9050919050565b5f620033b960288362003fd290919063ffffffff16565b9050919050565b5f620033d760368362003fe290919063ffffffff16565b9050919050565b5f620033f5604e8362003fd290919063ffffffff16565b9050919050565b5f62003413605c8362003ff390919063ffffffff16565b9050919050565b5f83471015620034655747846040517fe4bbecac0000000000000000000000000000000000000000000000000000000081526004016200345c92919062005869565b60405180910390fd5b5f825103620034a0576040517f4ca249dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282516020840186f590505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362003511576040517f741752c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b5f62003529835f01835f1b62003bc5565b905092915050565b5f6200353f825f0162004004565b9050919050565b5f62003555835f018362003930565b5f1c905092915050565b5f818291508161ffff1614620035a1576040517f64ae406d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f620035b1620038b7565b9050805f015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620035e38262004013565b5050565b5f620035f5825f0162004004565b9050919050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f806200362f62002c9e565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b620036c7620040e6565b620036d28162004129565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200373b576040517f95cf3ee400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620037f1575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f4fcea971000000000000000000000000000000000000000000000000000000008152600401620037e8919062004cf8565b60405180910390fd5b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721818360405162003863929190620059e7565b60405180910390a15050565b5f62003896835f018373ffffffffffffffffffffffffffffffffffffffff165f1b620041b4565b905092915050565b5f620038af835f01835f1b620042c0565b905092915050565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00905090565b5f620038ec825f01620042f6565b9050919050565b5f805f6200390d84865f016200430b90919063ffffffff16565b905080856002015f8381526020019081526020015f205492509250509250929050565b5f825f018281548110620039495762003948620052a3565b5b905f5260205f200154905092915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6200398682826200220e565b620039cc5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401620039c392919062005a12565b60405180910390fd5b5050565b5f80620039dc62002c9e565b9050620039ea84846200220e565b62003ac5576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062003a6062002f16565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062003aca565b5f9150505b92915050565b5f82821b1985169050828416821b81179050949350505050565b5f81846002015f8581526020019081526020015f208190555062003b1a83855f016200432290919063ffffffff16565b90509392505050565b5f62003b3b82845f016200433990919063ffffffff16565b905092915050565b5f80836002015f8481526020019081526020015f205490505f801b8114801562003b76575062003b74848462003b23565b155b1562003bbb57826040517f02b5668600000000000000000000000000000000000000000000000000000000815260040162003bb29190620048e6565b60405180910390fd5b8091505092915050565b5f62003bd283836200395a565b62003c2657825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f20819055506001905062003c2a565b5f90505b92915050565b606062003c3f825f0162004350565b9050919050565b5f612710608060ff168361ffff16901b8162003c675762003c6662005a3d565b5b04608060ff166001901b019050919050565b5f628000008262ffffff16039050919050565b5f805f80840362003caa57608060ff166001901b9250505062003fac565b8390505f81121562003cc057805f039050811591505b6210000081101562003f2257608060ff166001901b9250846fffffffffffffffffffffffffffffffff86111562003cfc57805f19049050821592505b600182161562003d0f5780840260801c93505b80810260801c9050600282161562003d2a5780840260801c93505b80810260801c9050600482161562003d455780840260801c93505b80810260801c9050600882161562003d605780840260801c93505b80810260801c9050601082161562003d7b5780840260801c93505b80810260801c9050602082161562003d965780840260801c93505b80810260801c9050604082161562003db15780840260801c93505b80810260801c9050608082161562003dcc5780840260801c93505b80810260801c905061010082161562003de85780840260801c93505b80810260801c905061020082161562003e045780840260801c93505b80810260801c905061040082161562003e205780840260801c93505b80810260801c905061080082161562003e3c5780840260801c93505b80810260801c905061100082161562003e585780840260801c93505b80810260801c905061200082161562003e745780840260801c93505b80810260801c905061400082161562003e905780840260801c93505b80810260801c905061800082161562003eac5780840260801c93505b80810260801c90506201000082161562003ec95780840260801c93505b80810260801c90506202000082161562003ee65780840260801c93505b80810260801c90506204000082161562003f035780840260801c93505b80810260801c90506208000082161562003f205780840260801c93505b505b5f830362003f6b5784846040517f3b74b31a00000000000000000000000000000000000000000000000000000000815260040162003f6292919062005a84565b60405180910390fd5b8162003f78578262003fa7565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62003fa6919062005aaf565b5b925050505b92915050565b5f61ffff83831c16905092915050565b5f610fff83831c16905092915050565b5f613fff83831c16905092915050565b5f62ffffff83831c16905092915050565b5f620fffff83831c16905092915050565b5f815f01805490509050919050565b5f6200401e620035fc565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b620040f062004371565b62004127576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b62004133620040e6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620041a6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200419d919062004cf8565b60405180910390fd5b620041b181620035a6565b50565b5f80836001015f8481526020019081526020015f205490505f8114620042b5575f600182620041e4919062005804565b90505f6001865f0180549050620041fc919062005804565b905080821462004269575f865f0182815481106200421f576200421e620052a3565b5b905f5260205f200154905080875f018481548110620042435762004242620052a3565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f018054806200427f576200427e62005ae6565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050620042ba565b5f9150505b92915050565b5f826002015f8381526020019081526020015f205f9055620042ee82845f016200439190919063ffffffff16565b905092915050565b5f62004304825f0162004004565b9050919050565b5f6200431a835f018362003930565b905092915050565b5f62004331835f018362003bc5565b905092915050565b5f62004348835f01836200395a565b905092915050565b60605f62004360835f01620043a8565b905060608190508092505050919050565b5f6200437c62003696565b5f0160089054906101000a900460ff16905090565b5f620043a0835f0183620041b4565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015620043f757602002820191905f5260205f20905b815481526020019060010190808311620043e2575b50505050509050919050565b6119ba8062005b1483390190565b60405180608001604052805f61ffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62004491816200445b565b81146200449c575f80fd5b50565b5f81359050620044af8162004486565b92915050565b5f60208284031215620044cd57620044cc62004453565b5b5f620044dc848285016200449f565b91505092915050565b5f8115159050919050565b620044fb81620044e5565b82525050565b5f602082019050620045165f830184620044f0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b620045598162004545565b82525050565b5f6200456c83836200454e565b60208301905092915050565b5f602082019050919050565b5f62004590826200451c565b6200459c818562004526565b9350620045a98362004536565b805f5b83811015620045df578151620045c388826200455f565b9750620045d08362004578565b925050600181019050620045ac565b5085935050505092915050565b5f6020820190508181035f83015262004606818462004584565b905092915050565b620046198162004545565b811462004624575f80fd5b50565b5f8135905062004637816200460e565b92915050565b5f6020828403121562004655576200465462004453565b5b5f620046648482850162004627565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f620046b5620046af620046a9846200466d565b6200468c565b6200466d565b9050919050565b5f620046c88262004695565b9050919050565b5f620046db82620046bc565b9050919050565b620046ed81620046cf565b82525050565b5f602082019050620047085f830184620046e2565b92915050565b5f6200471a826200466d565b9050919050565b5f6200472d826200470e565b9050919050565b6200473f8162004721565b81146200474a575f80fd5b50565b5f813590506200475d8162004734565b92915050565b5f61ffff82169050919050565b6200477b8162004763565b811462004786575f80fd5b50565b5f81359050620047998162004770565b92915050565b5f62ffffff82169050919050565b620047b8816200479f565b8114620047c3575f80fd5b50565b5f81359050620047d681620047ad565b92915050565b5f805f805f805f805f806101408b8d031215620047fe57620047fd62004453565b5b5f6200480d8d828e016200474d565b9a50506020620048208d828e016200474d565b9950506040620048338d828e0162004789565b9850506060620048468d828e0162004789565b9750506080620048598d828e0162004789565b96505060a06200486c8d828e0162004789565b95505060c06200487f8d828e0162004789565b94505060e0620048928d828e01620047c6565b935050610100620048a68d828e0162004789565b925050610120620048ba8d828e01620047c6565b9150509295989b9194979a5092959850565b5f819050919050565b620048e081620048cc565b82525050565b5f602082019050620048fb5f830184620048d5565b92915050565b6200490c81620048cc565b811462004917575f80fd5b50565b5f813590506200492a8162004901565b92915050565b5f6020828403121562004948576200494762004453565b5b5f62004957848285016200491a565b91505092915050565b5f6020828403121562004978576200497762004453565b5b5f62004987848285016200474d565b91505092915050565b5f805f60608486031215620049aa57620049a962004453565b5b5f620049b9868287016200474d565b9350506020620049cc868287016200474d565b9250506040620049df8682870162004789565b9150509250925092565b620049f4816200470e565b8114620049ff575f80fd5b50565b5f8135905062004a1281620049e9565b92915050565b5f806040838503121562004a315762004a3062004453565b5b5f62004a40858286016200491a565b925050602062004a538582860162004a02565b9150509250929050565b62004a6881620044e5565b811462004a73575f80fd5b50565b5f8135905062004a868162004a5d565b92915050565b5f805f805f805f805f6101208a8c03121562004aad5762004aac62004453565b5b5f62004abc8c828d0162004789565b995050602062004acf8c828d0162004789565b985050604062004ae28c828d0162004789565b975050606062004af58c828d0162004789565b965050608062004b088c828d0162004789565b95505060a062004b1b8c828d01620047c6565b94505060c062004b2e8c828d0162004789565b93505060e062004b418c828d01620047c6565b92505061010062004b558c828d0162004a76565b9150509295985092959850929598565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011262004b895762004b8862004b65565b5b8235905067ffffffffffffffff81111562004ba95762004ba862004b69565b5b60208301915083600182028301111562004bc85762004bc762004b6d565b5b9250929050565b5f805f805f8060a0878903121562004bec5762004beb62004453565b5b5f62004bfb89828a016200474d565b965050602062004c0e89828a016200474d565b955050604062004c2189828a0162004789565b945050606062004c3489828a016200491a565b935050608087013567ffffffffffffffff81111562004c585762004c5762004457565b5b62004c6689828a0162004b71565b92509250509295509295509295565b5f62004c81826200470e565b9050919050565b62004c938162004c75565b811462004c9e575f80fd5b50565b5f8135905062004cb18162004c88565b92915050565b5f6020828403121562004ccf5762004cce62004453565b5b5f62004cde8482850162004ca1565b91505092915050565b62004cf2816200470e565b82525050565b5f60208201905062004d0d5f83018462004ce7565b92915050565b5f806040838503121562004d2c5762004d2b62004453565b5b5f62004d3b8582860162004789565b925050602062004d4e8582860162004a76565b9150509250929050565b62004d638162004545565b82525050565b5f60208201905062004d7e5f83018462004d58565b92915050565b5f805f806080858703121562004d9f5762004d9e62004453565b5b5f62004dae878288016200474d565b945050602062004dc1878288016200474d565b935050604062004dd487828801620047c6565b925050606062004de78782880162004789565b91505092959194509250565b5f62004dff82620046bc565b9050919050565b62004e118162004df3565b82525050565b5f60208201905062004e2c5f83018462004e06565b92915050565b5f806040838503121562004e4b5762004e4a62004453565b5b5f62004e5a858286016200474d565b925050602062004e6d858286016200474d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b62004eab8162004763565b82525050565b62004ebc8162004df3565b82525050565b62004ecd81620044e5565b82525050565b608082015f82015162004ee95f85018262004ea0565b50602082015162004efe602085018262004eb1565b50604082015162004f13604085018262004ec2565b50606082015162004f28606085018262004ec2565b50505050565b5f62004f3b838362004ed3565b60808301905092915050565b5f602082019050919050565b5f62004f5f8262004e77565b62004f6b818562004e81565b935062004f788362004e91565b805f5b8381101562004fae57815162004f92888262004f2e565b975062004f9f8362004f47565b92505060018101905062004f7b565b5085935050505092915050565b5f6020820190508181035f83015262004fd5818462004f53565b905092915050565b5f805f806080858703121562004ff85762004ff762004453565b5b5f62005007878288016200474d565b94505060206200501a878288016200474d565b93505060406200502d8782880162004789565b9250506060620050408782880162004a76565b91505092959194509250565b5f805f6060848603121562005066576200506562004453565b5b5f62005075868287016200474d565b935050602062005088868287016200474d565b92505060406200509b8682870162004627565b9150509250925092565b608082015f820151620050bb5f85018262004ea0565b506020820151620050d0602085018262004eb1565b506040820151620050e5604085018262004ec2565b506060820151620050fa606085018262004ec2565b50505050565b5f608082019050620051155f830184620050a5565b92915050565b5f61010082019050620051315f83018b62004d58565b62005140602083018a62004d58565b6200514f604083018962004d58565b6200515e606083018862004d58565b6200516d608083018762004d58565b6200517c60a083018662004d58565b6200518b60c083018562004d58565b6200519a60e0830184620044f0565b9998505050505050505050565b5f805f8060808587031215620051c257620051c162004453565b5b5f620051d18782880162004a02565b9450506020620051e48782880162004a02565b9350506040620051f78782880162004627565b92505060606200520a8782880162004a02565b91505092959194509250565b5f602082840312156200522e576200522d62004453565b5b5f6200523d8482850162004789565b91505092915050565b5f602082840312156200525e576200525d62004453565b5b5f6200526d8482850162004a02565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620053098262004545565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200533e576200533d620052d0565b5b600182019050919050565b5f62005369620053636200535d8462004763565b6200468c565b62004545565b9050919050565b6200537b8162005349565b82525050565b5f606082019050620053965f830186620046e2565b620053a56020830185620046e2565b620053b4604083018462005370565b949350505050565b620053c78162004763565b82525050565b620053d8816200479f565b82525050565b5f60e082019050620053f35f83018a620053bc565b620054026020830189620053bc565b620054116040830188620053bc565b620054206060830187620053bc565b6200542f6080830186620053cd565b6200543e60a0830185620053bc565b6200544d60c0830184620053cd565b98975050505050505050565b5f6020820190506200546e5f83018462005370565b92915050565b5f620054946200548e62005488846200479f565b6200468c565b62004545565b9050919050565b620054a68162005474565b82525050565b5f60e082019050620054c15f83018a62005370565b620054d0602083018962005370565b620054df604083018862005370565b620054ee606083018762005370565b620054fd60808301866200549b565b6200550c60a083018562005370565b6200551b60c08301846200549b565b98975050505050505050565b5f6040820190506200553c5f83018562004ce7565b6200554b602083018462005370565b9392505050565b5f61010082019050620055685f83018b620053bc565b62005577602083018a620053bc565b620055866040830189620053bc565b620055956060830188620053bc565b620055a46080830187620053cd565b620055b360a0830186620053bc565b620055c260c0830185620053cd565b620055d160e0830184620053cd565b9998505050505050505050565b5f8160601b9050919050565b5f620055f682620055de565b9050919050565b5f6200560982620055ea565b9050919050565b620056256200561f82620046cf565b620055fd565b82525050565b5f8160f01b9050919050565b5f62005643826200562b565b9050919050565b6200565f620056598262004763565b62005637565b82525050565b5f62005672828662005610565b60148201915062005684828562005610565b6014820191506200569682846200564a565b600282019150819050949350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015620056e0578082015181840152602081019050620056c3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200570782620056a7565b620057138185620056b1565b935062005725818560208601620056c1565b6200573081620056eb565b840191505092915050565b5f60a082019050620057505f83018862004ce7565b6200575f6020830187620046e2565b6200576e6040830186620046e2565b6200577d6060830185620053bc565b8181036080830152620057918184620056fb565b90509695505050505050565b5f81905092915050565b5f620057b382620056a7565b620057bf81856200579d565b9350620057d1818560208601620056c1565b80840191505092915050565b5f620057ea8285620057a7565b9150620057f88284620057a7565b91508190509392505050565b5f620058108262004545565b91506200581d8362004545565b9250828203905081811115620058385762005837620052d0565b5b92915050565b5f604082019050620058535f83018562004e06565b62005862602083018462004d58565b9392505050565b5f6040820190506200587e5f83018562004d58565b6200588d602083018462004d58565b9392505050565b5f819050919050565b5f620058bd620058b7620058b18462005894565b6200468c565b62004545565b9050919050565b620058cf816200589d565b82525050565b5f604082019050620058ea5f830185620058c4565b620058f9602083018462004d58565b9392505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6200593c62005936620059308462005900565b6200468c565b62005909565b9050919050565b6200594e816200591c565b82525050565b5f602082019050620059695f83018462005943565b92915050565b5f815190506200597f8162004901565b92915050565b5f602082840312156200599d576200599c62004453565b5b5f620059ac848285016200596f565b91505092915050565b5f604082019050620059ca5f830185620048d5565b8181036020830152620059de8184620056fb565b90509392505050565b5f604082019050620059fc5f83018562004ce7565b62005a0b602083018462004ce7565b9392505050565b5f60408201905062005a275f83018562004ce7565b62005a366020830184620048d5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f819050919050565b62005a7e8162005a6a565b82525050565b5f60408201905062005a995f83018562004d58565b62005aa8602083018462005a73565b9392505050565b5f62005abb8262004545565b915062005ac88362004545565b92508262005adb5762005ada62005a3d565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe60a0604052604051620019ba380380620019ba833981810160405281019062000029919062000dab565b8460405180602001604052805f8152506200004b82826200059d60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505f808573ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516200012c919062000e98565b5f60405180830381855afa9150503d805f811462000166576040519150601f19603f3d011682016040523d82523d5f602084013e6200016b565b606091505b50915091505f8180602001905181019062000187919062000f61565b90505f808773ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000234919062000e98565b5f60405180830381855afa9150503d805f81146200026e576040519150601f19603f3d011682016040523d82523d5f602084013e62000273565b606091505b50915091505f818060200190518101906200028f919062000f61565b90508580156200029c5750825b620002de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d59062001034565b60405180910390fd5b60405180602001604052805f8152508051906020012084805190602001201415801562000327575060405180602001604052805f81525080519060200120818051906020012014155b62000369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036090620010c8565b60405180910390fd5b896200039d7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088620004107f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa582645f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508761ffff16620004877fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f569738427825f1b620006a160201b60201c565b5f01819055505f620004a38961ffff16620006aa60201b60201c565b9050848282604051602001620004bc939291906200117e565b604051602081830303815290604052620004fe7f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f5f1b6200083060201b60201c565b5f0190816200050e919062001414565b5084828260405160200162000526939291906200151e565b604051602081830303815290604052620005687fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845f1b6200083060201b60201c565b5f01908162000578919062001414565b506200058b8c896200059d60201b60201c565b5050505050505050505050506200177e565b620005ae826200083960201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a25f8151111562000683576200067c8273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000649573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200066f919062001587565b82620009df60201b60201c565b5062000694565b6200069362000a6b60201b60201c565b5b5050565b5f819050919050565b5f819050919050565b60605f8261ffff1603620006f6576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506200082b565b5f8290505f5b5f8261ffff16146200072f5780806200071590620015e4565b915050600a826200072791906200163f565b9150620006fc565b5f8161ffff1667ffffffffffffffff81111562000751576200075062000c4f565b5b6040519080825280601f01601f191660200182016040528015620007845781602001600182028036833780820191505090505b5090505b5f8561ffff16146200082457600182620007a3919062001676565b9150600a85620007b49190620016b2565b6030620007c29190620016e9565b60f81b818361ffff1681518110620007df57620007de62001725565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856200081c91906200163f565b945062000788565b8093505050505b919050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036200089757806040517f64ced0ec0000000000000000000000000000000000000000000000000000000081526004016200088e919062001763565b60405180910390fd5b80620008cb7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000955573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200097b919062001587565b90505f8173ffffffffffffffffffffffffffffffffffffffff163b03620009db57806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401620009d2919062001763565b60405180910390fd5b5050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405162000a0a919062000e98565b5f60405180830381855af49150503d805f811462000a44576040519150601f19603f3d011682016040523d82523d5f602084013e62000a49565b606091505b509150915062000a6185838362000aa860201b60201c565b9250505092915050565b5f34111562000aa6576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60608262000ac75762000ac18262000b4460201b60201c565b62000b3c565b5f825114801562000aee57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1562000b3357836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040162000b2a919062001763565b60405180910390fd5b81905062000b3d565b5b9392505050565b5f8151111562000b575780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bc58262000b9a565b9050919050565b62000bd78162000bb9565b811462000be2575f80fd5b50565b5f8151905062000bf58162000bcc565b92915050565b5f61ffff82169050919050565b62000c138162000bfb565b811462000c1e575f80fd5b50565b5f8151905062000c318162000c08565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000c878262000c3f565b810181811067ffffffffffffffff8211171562000ca95762000ca862000c4f565b5b80604052505050565b5f62000cbd62000b89565b905062000ccb828262000c7c565b919050565b5f67ffffffffffffffff82111562000ced5762000cec62000c4f565b5b62000cf88262000c3f565b9050602081019050919050565b5f5b8381101562000d2457808201518184015260208101905062000d07565b5f8484015250505050565b5f62000d4562000d3f8462000cd0565b62000cb2565b90508281526020810184848401111562000d645762000d6362000c3b565b5b62000d7184828562000d05565b509392505050565b5f82601f83011262000d905762000d8f62000c37565b5b815162000da284826020860162000d2f565b91505092915050565b5f805f805f60a0868803121562000dc75762000dc662000b92565b5b5f62000dd68882890162000be5565b955050602062000de98882890162000be5565b945050604062000dfc8882890162000be5565b935050606062000e0f8882890162000c21565b925050608086015167ffffffffffffffff81111562000e335762000e3262000b96565b5b62000e418882890162000d79565b9150509295509295909350565b5f81519050919050565b5f81905092915050565b5f62000e6e8262000e4e565b62000e7a818562000e58565b935062000e8c81856020860162000d05565b80840191505092915050565b5f62000ea5828462000e62565b915081905092915050565b5f67ffffffffffffffff82111562000ecd5762000ecc62000c4f565b5b62000ed88262000c3f565b9050602081019050919050565b5f62000efb62000ef58462000eb0565b62000cb2565b90508281526020810184848401111562000f1a5762000f1962000c3b565b5b62000f2784828562000d05565b509392505050565b5f82601f83011262000f465762000f4562000c37565b5b815162000f5884826020860162000ee5565b91505092915050565b5f6020828403121562000f795762000f7862000b92565b5b5f82015167ffffffffffffffff81111562000f995762000f9862000b96565b5b62000fa78482850162000f2f565b91505092915050565b5f82825260208201905092915050565b7f4c4250616972426561636f6e50726f78793a204661696c656420746f206765745f8201527f20746f6b656e2073796d626f6c73000000000000000000000000000000000000602082015250565b5f6200101c602e8362000fb0565b9150620010298262000fc0565b604082019050919050565b5f6020820190508181035f8301526200104d816200100e565b9050919050565b7f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e5f8201527f2073796d626f6c73000000000000000000000000000000000000000000000000602082015250565b5f620010b060288362000fb0565b9150620010bd8262001054565b604082019050919050565b5f6020820190508181035f830152620010e181620010a2565b9050919050565b7f4c42545f00000000000000000000000000000000000000000000000000000000815250565b5f81519050919050565b5f81905092915050565b5f6200112e826200110e565b6200113a818562001118565b93506200114c81856020860162000d05565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b5f6200118a82620010e8565b6004820191506200119c828662001122565b9150620011a98262001158565b600182019150620011bb828562001122565b9150620011c88262001158565b600182019150620011da828462001122565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200122c57607f821691505b602082108103620012425762001241620011e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620012a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001269565b620012b2868362001269565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620012fc620012f6620012f084620012ca565b620012d3565b620012ca565b9050919050565b5f819050919050565b6200131783620012dc565b6200132f620013268262001303565b84845462001275565b825550505050565b5f90565b6200134562001337565b620013528184846200130c565b505050565b5b8181101562001379576200136d5f826200133b565b60018101905062001358565b5050565b601f821115620013c857620013928162001248565b6200139d846200125a565b81016020851015620013ad578190505b620013c5620013bc856200125a565b83018262001357565b50505b505050565b5f82821c905092915050565b5f620013ea5f1984600802620013cd565b1980831691505092915050565b5f620014048383620013d9565b9150826002028217905092915050565b6200141f826200110e565b67ffffffffffffffff8111156200143b576200143a62000c4f565b5b62001447825462001214565b620014548282856200137d565b5f60209050601f8311600181146200148a575f841562001475578287015190505b620014818582620013f7565b865550620014f0565b601f1984166200149a8662001248565b5f5b82811015620014c3578489015182556001820191506020850194506020810190506200149c565b86831015620014e35784890151620014df601f891682620013d9565b8355505b6001600288020188555050505b505050505050565b7f4c697175696469747920426f6f6b20546f6b656e200000000000000000000000815250565b5f6200152a82620014f8565b6015820191506200153c828662001122565b9150620015498262001158565b6001820191506200155b828562001122565b9150620015688262001158565b6001820191506200157a828462001122565b9150819050949350505050565b5f602082840312156200159f576200159e62000b92565b5b5f620015ae8482850162000be5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620015f08262000bfb565b915061ffff8203620016075762001606620015b7565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200164b8262000bfb565b9150620016588362000bfb565b9250826200166b576200166a62001612565b5b828204905092915050565b5f620016828262000bfb565b91506200168f8362000bfb565b9250828203905061ffff811115620016ac57620016ab620015b7565b5b92915050565b5f620016be8262000bfb565b9150620016cb8362000bfb565b925082620016de57620016dd62001612565b5b828206905092915050565b5f620016f58262000bfb565b9150620017028362000bfb565b9250828201905061ffff8111156200171f576200171e620015b7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6200175d8162000bb9565b82525050565b5f602082019050620017785f83018462001752565b92915050565b608051610223620017975f395f61011801526102235ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061005c565b005b34801561003d575f80fd5b5061004661006e565b604051610053919061017b565b60405180910390f35b61006c61006761007c565b6100f6565b565b5f610077610115565b905090565b5f610085610115565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f191906101c2565b905090565b365f80375f80365f845af43d5f803e805f8114610111573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101658261013c565b9050919050565b6101758161015b565b82525050565b5f60208201905061018e5f83018461016c565b92915050565b5f80fd5b6101a18161015b565b81146101ab575f80fd5b50565b5f815190506101bc81610198565b92915050565b5f602082840312156101d7576101d6610194565b5b5f6101e4848285016101ae565b9150509291505056fea2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033a2646970667358221220408f674abc88915a00048d86f4f02c24344fb5b67b185d05ce64c6c9aedc7e7c64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x2AE JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x701AB8C1 GT PUSH3 0x16F JUMPI DUP1 PUSH4 0xAABC4B3C GT PUSH3 0xD3 JUMPI DUP1 PUSH4 0xE203A31F GT PUSH3 0x91 JUMPI DUP1 PUSH4 0xE203A31F EQ PUSH3 0x847 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH3 0x867 JUMPI DUP1 PUSH4 0xE74B981B EQ PUSH3 0x889 JUMPI DUP1 PUSH4 0xE92D0D5D EQ PUSH3 0x8A9 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH3 0x8C9 JUMPI DUP1 PUSH4 0xFD90C2BE EQ PUSH3 0x8E9 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0xAABC4B3C EQ PUSH3 0x788 JUMPI DUP1 PUSH4 0xBE203094 EQ PUSH3 0x7C5 JUMPI DUP1 PUSH4 0xC1B931BE EQ PUSH3 0x7E5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x807 JUMPI DUP1 PUSH4 0xDDBFD941 EQ PUSH3 0x827 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x80C5061E GT PUSH3 0x12D JUMPI DUP1 PUSH4 0x80C5061E EQ PUSH3 0x6A8 JUMPI DUP1 PUSH4 0x8CE9AA1C EQ PUSH3 0x6CA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH3 0x6EC JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x70E JUMPI DUP1 PUSH4 0xA0A0EA39 EQ PUSH3 0x744 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x766 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x701AB8C1 EQ PUSH3 0x602 JUMPI DUP1 PUSH4 0x704037BD EQ PUSH3 0x624 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH3 0x65A JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH3 0x666 JUMPI DUP1 PUSH4 0x7DAF5D66 EQ PUSH3 0x672 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 GT PUSH3 0x217 JUMPI DUP1 PUSH4 0x5A440923 GT PUSH3 0x1D5 JUMPI DUP1 PUSH4 0x5A440923 EQ PUSH3 0x512 JUMPI DUP1 PUSH4 0x5B35875C EQ PUSH3 0x532 JUMPI DUP1 PUSH4 0x659AC74B EQ PUSH3 0x554 JUMPI DUP1 PUSH4 0x661D7FFB EQ PUSH3 0x58A JUMPI DUP1 PUSH4 0x6622E0D7 EQ PUSH3 0x5AC JUMPI DUP1 PUSH4 0x69D56EA3 EQ PUSH3 0x5E2 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x3A2F1A91 EQ PUSH3 0x46E JUMPI DUP1 PUSH4 0x3C78A941 EQ PUSH3 0x48E JUMPI DUP1 PUSH4 0x4CCB20C0 EQ PUSH3 0x4AE JUMPI DUP1 PUSH4 0x4CD161D3 EQ PUSH3 0x4D0 JUMPI DUP1 PUSH4 0x4E937C3A EQ PUSH3 0x4F0 JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH3 0x271 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x382 JUMPI DUP1 PUSH4 0x27721842 EQ PUSH3 0x3B8 JUMPI DUP1 PUSH4 0x2CC06B8C EQ PUSH3 0x3EE JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x40E JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x42E JUMPI DUP1 PUSH4 0x379EE803 EQ PUSH3 0x44E JUMPI PUSH3 0x2AE JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x2B2 JUMPI DUP1 PUSH4 0x282C9C1 EQ PUSH3 0x2E8 JUMPI DUP1 PUSH4 0x752092B EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x93FF769 EQ PUSH3 0x340 JUMPI DUP1 PUSH4 0x1AF5BACC EQ PUSH3 0x360 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH3 0x2D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x2CA SWAP2 SWAP1 PUSH3 0x44B5 JUMP JUMPDEST PUSH3 0x90B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x2DF SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x2F2 PUSH3 0x987 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x301 SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x328 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x322 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0xA89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x337 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x35E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x358 SWAP2 SWAP1 PUSH3 0x47DC JUMP JUMPDEST PUSH3 0xAA7 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x36A PUSH3 0xBC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x379 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x39A SWAP2 SWAP1 PUSH3 0x4930 JUMP JUMPDEST PUSH3 0xBE7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3AF SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x3D0 SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0xC13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x3E5 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x406 SWAP2 SWAP1 PUSH3 0x4990 JUMP JUMPDEST PUSH3 0xC31 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x42C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x426 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCC4 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x44C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x446 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0xCEC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x466 SWAP2 SWAP1 PUSH3 0x4A8C JUMP JUMPDEST PUSH3 0xD6C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x48C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x486 SWAP2 SWAP1 PUSH3 0x4BCF JUMP JUMPDEST PUSH3 0xEB5 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4A6 SWAP2 SWAP1 PUSH3 0x4CB7 JUMP JUMPDEST PUSH3 0xFDC JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4B8 PUSH3 0x1046 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x4C7 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x4EE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x4E8 SWAP2 SWAP1 PUSH3 0x4D13 JUMP JUMPDEST PUSH3 0x106D JUMP JUMPDEST STOP JUMPDEST PUSH3 0x4FA PUSH3 0x11B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x509 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x530 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x52A SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x11C2 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x53C PUSH3 0x126C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x54B SWAP2 SWAP1 PUSH3 0x45EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x572 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x56C SWAP2 SWAP1 PUSH3 0x4D84 JUMP JUMPDEST PUSH3 0x127F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x581 SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x594 PUSH3 0x1ABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5A3 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x5CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5C4 SWAP2 SWAP1 PUSH3 0x4E32 JUMP JUMPDEST PUSH3 0x1ADE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5D9 SWAP2 SWAP1 PUSH3 0x4FBB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x600 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x5FA SWAP2 SWAP1 PUSH3 0x4FDD JUMP JUMPDEST PUSH3 0x1D7F JUMP JUMPDEST STOP JUMPDEST PUSH3 0x60C PUSH3 0x2099 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x61B SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x642 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x63C SWAP2 SWAP1 PUSH3 0x504C JUMP JUMPDEST PUSH3 0x20A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x651 SWAP2 SWAP1 PUSH3 0x5100 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x664 PUSH3 0x20C1 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x670 PUSH3 0x20D8 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x690 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x68A SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x216F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x69F SWAP2 SWAP1 PUSH3 0x4E17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6B2 PUSH3 0x21B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6C1 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6D4 PUSH3 0x21C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x6E3 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6F6 PUSH3 0x21D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x705 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x72C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x726 SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x220E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x73B SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x74E PUSH3 0x226E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x75D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x770 PUSH3 0x2296 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x77F SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7A0 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x229C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7BC SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x511B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x7E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x7DD SWAP2 SWAP1 PUSH3 0x51A7 JUMP JUMPDEST PUSH3 0x23B6 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x7EF PUSH3 0x262D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x7FE SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x825 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x81F SWAP2 SWAP1 PUSH3 0x4A18 JUMP JUMPDEST PUSH3 0x2654 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x845 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x83F SWAP2 SWAP1 PUSH3 0x4960 JUMP JUMPDEST PUSH3 0x267C JUMP JUMPDEST STOP JUMPDEST PUSH3 0x865 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x85F SWAP2 SWAP1 PUSH3 0x5216 JUMP JUMPDEST PUSH3 0x2726 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x871 PUSH3 0x27C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x880 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x8A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8A1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x27F9 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8C1 SWAP2 SWAP1 PUSH3 0x463D JUMP JUMPDEST PUSH3 0x2811 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8E7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH3 0x8E1 SWAP2 SWAP1 PUSH3 0x5246 JUMP JUMPDEST PUSH3 0x2908 JUMP JUMPDEST STOP JUMPDEST PUSH3 0x8F3 PUSH3 0x29C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x902 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH3 0x980 JUMPI POP PUSH3 0x97F DUP3 PUSH3 0x29D0 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x996 PUSH1 0x5 PUSH3 0x2A39 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0xA85 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x9BE JUMPI PUSH3 0x9BD PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x9ED JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP2 POP PUSH0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0xA75 JUMPI PUSH0 DUP1 PUSH3 0xA14 DUP4 PUSH1 0x5 PUSH3 0x2A4E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH3 0xA25 DUP2 PUSH0 SHL PUSH3 0x2A77 JUMP JUMPDEST ISZERO PUSH3 0xA5F JUMPI DUP2 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH3 0xA42 JUMPI PUSH3 0xA41 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP1 PUSH3 0xA5B SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP5 POP POP JUMPDEST POP POP DUP1 PUSH3 0xA6D SWAP1 PUSH3 0x52FD JUMP JUMPDEST SWAP1 POP PUSH3 0x9F3 JUMP JUMPDEST POP DUP2 DUP2 LT ISZERO PUSH3 0xA83 JUMPI DUP1 DUP4 MSTORE JUMPDEST POP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0xAA0 DUP3 PUSH1 0x8 PUSH3 0x2A95 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xAB1 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0xAC3 DUP12 DUP12 DUP12 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xB40 JUMPI DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB37 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6653851A DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB87 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x53DE JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xB9F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xBB2 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0xBF3 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xC2A DUP3 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xC5D DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCBE DUP5 DUP5 DUP5 PUSH0 DUP1 SHL PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xC84 JUMPI PUSH3 0xC83 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xCB7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCCF DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0xCDA DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0xCE6 DUP4 DUP4 PUSH3 0x2EC5 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0xCF6 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0xD5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xD67 DUP3 DUP3 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH3 0xD76 PUSH3 0x2AAE JUMP JUMPDEST PUSH1 0x1 DUP10 PUSH2 0xFFFF AND LT ISZERO PUSH3 0xDC3 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0x4F958E7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xDBA SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0xDE7 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH0 DUP1 SHL PUSH3 0x301D SWAP1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 ISZERO PUSH3 0xE0C JUMPI PUSH3 0xE09 PUSH1 0x1 PUSH1 0xFF DUP4 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH3 0xE2A DUP11 PUSH2 0xFFFF AND DUP3 PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP10 PUSH2 0xFFFF AND PUSH32 0x839844A256A87F87C9C835117D9A1C40BE013954064C937072ACB32D36DB6A28 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH3 0xE6D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x54AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP2 ISZERO ISZERO DUP11 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xDCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9 PUSH3 0xEE1 DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF03 DUP6 PUSH3 0x3217 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH3 0xF49 JUMPI POP PUSH0 PUSH1 0xA0 SHL PUSH3 0xF30 DUP6 PUSH3 0x3222 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST ISZERO PUSH3 0xF81 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD43A15D100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xFD3 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH3 0x2D0C JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH3 0xFE6 PUSH3 0x2AAE JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD3B9FBE4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x102C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x103F JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x1077 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x1091 DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x10D5 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x10CC SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x10F0 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP DUP2 ISZERO ISZERO PUSH3 0x110D PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST ISZERO ISZERO SUB PUSH3 0x1147 JUMPI PUSH1 0x40 MLOAD PUSH32 0x237C71B600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x117C DUP4 PUSH2 0xFFFF AND PUSH3 0x1168 DUP5 PUSH1 0xFF DUP6 PUSH3 0x31CF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHR PUSH1 0x5 PUSH3 0x31FA SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP2 ISZERO ISZERO DUP4 PUSH2 0xFFFF AND PUSH32 0x58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x11CC PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x11E2 DUP2 PUSH1 0x8 PUSH3 0x326E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x1226 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x3CE0AD900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x121D SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x84CC2115995684DCB0CD3D3A9565E3D32F075DE81DB70C8DC3A719B2A47AF67E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x127A PUSH1 0x5 PUSH3 0x329D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x129A DUP3 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x12DE JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x12D5 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x12F9 DUP4 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH3 0x1308 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x1343 DUP3 PUSH3 0x2A77 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH3 0x134F JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x1396 JUMPI CALLER DUP5 PUSH1 0x40 MLOAD PUSH32 0x9F85FCE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x138D SWAP3 SWAP2 SWAP1 PUSH3 0x5527 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x13AC DUP7 PUSH1 0x8 PUSH3 0x2CC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x13F0 JUMPI DUP6 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x13E7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1463 JUMPI DUP7 PUSH1 0x40 MLOAD PUSH32 0x2F9B185300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x145A SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x146F DUP6 DUP6 PUSH3 0x32BE JUMP JUMPDEST POP PUSH0 DUP1 PUSH3 0x147E DUP10 DUP10 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x14E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x160C JUMPI DUP9 DUP9 DUP8 PUSH1 0x40 MLOAD PUSH32 0xCB27A43500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1603 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x1618 DUP6 PUSH3 0x3349 JUMP JUMPDEST PUSH3 0x1623 DUP7 PUSH3 0x3366 JUMP JUMPDEST PUSH3 0x162E DUP8 PUSH3 0x3384 JUMP JUMPDEST PUSH3 0x1639 DUP9 PUSH3 0x33A2 JUMP JUMPDEST PUSH3 0x1644 DUP10 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0x164F DUP11 PUSH3 0x33DE JUMP JUMPDEST PUSH3 0x165A DUP12 PUSH3 0x33FC JUMP JUMPDEST DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH3 0x1674 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5552 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x47973BFF00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH0 DUP4 DUP4 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x170B SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5665 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH3 0x1736 SWAP1 PUSH3 0x4403 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP14 DUP14 DUP13 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1786 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x573B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x17A8 SWAP3 SWAP2 SWAP1 PUSH3 0x57DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH3 0x17C6 PUSH0 DUP4 DUP4 PUSH3 0x341A JUMP JUMPDEST SWAP8 POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP9 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x3 DUP6 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x1A2C DUP7 PUSH2 0xFFFF AND PUSH1 0xA PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH3 0x3518 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP6 PUSH2 0xFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2C8D104B27C6B7F4492017A6F5CF3803043688934EBCAA6A03540BEEAF976AFF DUP9 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH3 0x1A96 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x1AA6 SWAP3 SWAP2 SWAP1 PUSH3 0x583E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 PUSH3 0x1AEE DUP6 DUP6 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0xA PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 PUSH3 0x1B79 DUP3 PUSH3 0x3531 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 GT ISZERO PUSH3 0x1D75 JUMPI DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x1BA1 JUMPI PUSH3 0x1BA0 PUSH3 0x5276 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1BDE JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH3 0x1BCA PUSH3 0x4411 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x1BC0 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH0 PUSH1 0x4 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SWAP1 POP PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x1D72 JUMPI PUSH0 PUSH3 0x1C87 PUSH3 0x1C81 DUP4 DUP8 PUSH3 0x3546 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x355F JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 DUP5 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE POP DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x1D5A JUMPI PUSH3 0x1D59 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH3 0x1C5E JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1D89 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x1D97 DUP7 DUP7 PUSH3 0x32FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH1 0x4 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x1F56 JUMPI DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x40AA464400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1F4D SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP2 PUSH1 0x60 ADD MLOAD ISZERO ISZERO SUB PUSH3 0x1F97 JUMPI PUSH1 0x40 MLOAD PUSH31 0xDDCCCA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP8 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH1 0x17 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x20 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x44CF35361C9FF3C8C1397EC6410D5495CC481FEAEF35C9AF11DA1A637107DE4F DUP6 PUSH1 0x40 MLOAD PUSH3 0x2088 SWAP2 SWAP1 PUSH3 0x4501 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x20AB PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x20B8 DUP5 DUP5 DUP5 PUSH3 0x2B3E JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH3 0x20CB PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x20D6 PUSH0 PUSH3 0x35A6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH3 0x20E3 PUSH3 0x2F16 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2106 PUSH3 0x27C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2161 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2158 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x216C DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x2187 JUMPI PUSH3 0x2186 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x21C3 PUSH1 0x8 PUSH3 0x35E7 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0x16345785D8A0000 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x21E3 PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2259 JUMPI PUSH3 0x2223 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH3 0x2268 JUMP JUMPDEST PUSH3 0x2265 DUP4 DUP4 PUSH3 0x3623 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x22BA DUP10 PUSH1 0x5 PUSH3 0x322B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x22FE JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x22F5 SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH3 0x2315 DUP11 PUSH1 0x5 PUSH3 0x3244 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH3 0x2324 DUP2 PUSH3 0x3349 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP9 POP PUSH3 0x2335 DUP2 PUSH3 0x3366 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP8 POP PUSH3 0x2346 DUP2 PUSH3 0x3384 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP7 POP PUSH3 0x2357 DUP2 PUSH3 0x33A2 JUMP JUMPDEST PUSH2 0xFFFF AND SWAP6 POP PUSH3 0x2368 DUP2 PUSH3 0x33C0 JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP5 POP PUSH3 0x237A DUP2 PUSH3 0x33DE JUMP JUMPDEST PUSH2 0xFFFF AND SWAP4 POP PUSH3 0x238B DUP2 PUSH3 0x33FC JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP3 POP PUSH3 0x23A8 PUSH1 0xFF DUP3 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP2 SWAP4 SWAP6 SWAP8 POP SWAP2 SWAP4 SWAP6 SWAP8 JUMP JUMPDEST PUSH0 PUSH3 0x23C1 PUSH3 0x3696 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x240A JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH3 0x243E JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0x244D JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0x2485 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH3 0x24D3 JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH3 0x24DE DUP9 PUSH3 0x36BD JUMP JUMPDEST PUSH8 0x16345785D8A0000 DUP8 GT ISZERO PUSH3 0x2538 JUMPI DUP7 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x252F SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2543 DUP10 PUSH3 0x36D5 JUMP JUMPDEST DUP7 PUSH1 0x1 DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x2 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 PUSH0 DUP9 PUSH1 0x40 MLOAD PUSH3 0x25BD SWAP3 SWAP2 SWAP1 PUSH3 0x58D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP4 ISZERO PUSH3 0x2622 JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH3 0x2619 SWAP2 SWAP1 PUSH3 0x5954 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x265F DUP3 PUSH3 0xBE7 JUMP JUMPDEST PUSH3 0x266A DUP2 PUSH3 0x2CF4 JUMP JUMPDEST PUSH3 0x2676 DUP4 DUP4 PUSH3 0x2F1D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0x2686 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x269C DUP2 PUSH1 0x8 PUSH3 0x386F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x26E0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x8E888EF300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x26D7 SWAP2 SWAP1 PUSH3 0x46F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB767739217755D8AF5A2BA75B181A19FA1750F8BB701F09311CB19A90140CB3 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH3 0x2730 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x274A DUP2 PUSH2 0xFFFF AND PUSH1 0x5 PUSH3 0x389E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH3 0x278E JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xFB22C17E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2785 SWAP2 SWAP1 PUSH3 0x5459 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xFFFF AND PUSH32 0xDD86B848BB56FF540CAA68683FA467D0E7EB5F8B2D44E4EE435742EEEAE9BE13 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x27CE PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH3 0x2803 PUSH3 0x2AAE JUMP JUMPDEST PUSH3 0x280E DUP2 PUSH3 0x36D5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x281B PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP DUP2 DUP2 SUB PUSH3 0x2868 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x6EA8C7A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x285F SWAP2 SWAP1 PUSH3 0x4D69 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0x16345785D8A0000 DUP3 GT ISZERO PUSH3 0x28C2 JUMPI DUP2 PUSH8 0x16345785D8A0000 PUSH1 0x40 MLOAD PUSH32 0x5E8988C100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x28B9 SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH32 0x5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x28FC SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH3 0x2912 PUSH3 0x2AAE JUMP JUMPDEST PUSH0 PUSH3 0x291D PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2981 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A47 DUP3 PUSH0 ADD PUSH3 0x38DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH3 0x2A60 DUP7 PUSH0 ADD DUP7 PUSH3 0x38F3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SHR DUP2 PUSH0 SHR SWAP4 POP SWAP4 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2A8E PUSH1 0xFF DUP4 PUSH3 0x325F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x2AA4 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2AB8 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2AD8 PUSH3 0x21D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x2B3C JUMPI PUSH3 0x2AFE PUSH3 0x2F16 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2B33 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x2B48 PUSH3 0x4411 JUMP JUMPDEST PUSH3 0x2B54 DUP5 DUP5 PUSH3 0x32FA JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP PUSH1 0x4 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH0 DUP3 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 DUP3 ADD PUSH1 0x17 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE POP POP SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x2CEC DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2D09 DUP2 PUSH3 0x2D03 PUSH3 0x2F16 JUMP JUMPDEST PUSH3 0x397A JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH3 0x2D1E DUP7 DUP7 DUP7 PUSH2 0xFFFF AND PUSH3 0x2B3E JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x2D9B JUMPI DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH32 0xB65EE95300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D92 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x5381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x781A8915 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2DE6 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x2E0C SWAP2 SWAP1 PUSH3 0x5985 JUMP JUMPDEST SUB PUSH3 0x2E51 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0xB70CD0DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E48 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B057F6D DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2E8E SWAP3 SWAP2 SWAP1 PUSH3 0x59B5 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2EA6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x2EB9 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 SHL DUP4 SUB PUSH3 0x2F02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C64A79E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2F0E DUP4 DUP4 PUSH3 0x39D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x2F29 PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x2F37 DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST ISZERO PUSH3 0x3012 JUMPI PUSH0 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x2FAD PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3017 JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND DUP8 PUSH2 0xFFFF AND GT DUP1 PUSH3 0x303A JUMPI POP PUSH2 0xFFF DUP7 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x304B JUMPI POP PUSH2 0x2710 DUP6 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x305C JUMPI POP PUSH2 0x9C4 DUP4 PUSH2 0xFFFF AND GT JUMPDEST DUP1 PUSH3 0x306F JUMPI POP PUSH3 0xFFFFF DUP3 PUSH3 0xFFFFFF AND GT JUMPDEST ISZERO PUSH3 0x30A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1C07203F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x30C6 DUP9 PUSH2 0xFFFF AND PUSH2 0xFFFF PUSH0 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x30E8 DUP8 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x10 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x310A DUP7 PUSH2 0xFFFF AND PUSH2 0xFFF PUSH1 0x1C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x312C DUP6 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x28 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3150 DUP5 PUSH3 0xFFFFFF AND PUSH3 0xFFFFFF PUSH1 0x36 DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3172 DUP4 PUSH2 0xFFFF AND PUSH2 0x3FFF PUSH1 0x4E DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x3196 DUP3 PUSH3 0xFFFFFF AND PUSH3 0xFFFFF PUSH1 0x5C DUP5 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH3 0x31C1 DUP2 PUSH0 SHR PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 DUP13 PUSH3 0x3AD0 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x31F1 DUP5 DUP5 PUSH3 0x31E2 JUMPI PUSH0 PUSH3 0x31E5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP6 PUSH3 0x3AD0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x320E DUP5 PUSH0 ADD DUP5 PUSH0 SHL DUP5 PUSH0 SHL PUSH3 0x3AEA JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x323C DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B23 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3255 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3B43 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3295 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x32AD DUP4 PUSH0 ADD PUSH3 0x3C30 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x32CB DUP4 PUSH3 0x3C46 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH3 0x32D9 DUP6 PUSH3 0x3C79 JUMP JUMPDEST SWAP1 POP PUSH3 0x32F0 DUP2 DUP4 PUSH3 0x3C8C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x333C JUMPI DUP3 DUP5 DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP JUMPDEST DUP4 DUP4 SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x335F PUSH0 DUP4 PUSH3 0x3FB2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x337D PUSH1 0x10 DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x339B PUSH1 0x1C DUP4 PUSH3 0x3FC2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33B9 PUSH1 0x28 DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33D7 PUSH1 0x36 DUP4 PUSH3 0x3FE2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x33F5 PUSH1 0x4E DUP4 PUSH3 0x3FD2 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3413 PUSH1 0x5C DUP4 PUSH3 0x3FF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 SELFBALANCE LT ISZERO PUSH3 0x3465 JUMPI SELFBALANCE DUP5 PUSH1 0x40 MLOAD PUSH32 0xE4BBECAC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x345C SWAP3 SWAP2 SWAP1 PUSH3 0x5869 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 MLOAD SUB PUSH3 0x34A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD DUP7 CREATE2 SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x3511 JUMPI PUSH1 0x40 MLOAD PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3529 DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x353F DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x3555 DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST PUSH0 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 DUP3 SWAP2 POP DUP2 PUSH2 0xFFFF AND EQ PUSH3 0x35A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x64AE406D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x35B1 PUSH3 0x38B7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH3 0x35E3 DUP3 PUSH3 0x4013 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH3 0x35F5 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH32 0x9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x362F PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x36C7 PUSH3 0x40E6 JUMP JUMPDEST PUSH3 0x36D2 DUP2 PUSH3 0x4129 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x373B JUMPI PUSH1 0x40 MLOAD PUSH32 0x95CF3EE400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x37F1 JUMPI PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH32 0x4FCEA97100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x37E8 SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH3 0x3863 SWAP3 SWAP2 SWAP1 PUSH3 0x59E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3896 DUP4 PUSH0 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 SHL PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x38AF DUP4 PUSH0 ADD DUP4 PUSH0 SHL PUSH3 0x42C0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0x237E158222E3E6968B72B9DB0D8043AACF074AD9F650F0D1606B4D82EE432C00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x38EC DUP3 PUSH0 ADD PUSH3 0x42F6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH3 0x390D DUP5 DUP7 PUSH0 ADD PUSH3 0x430B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x3949 JUMPI PUSH3 0x3948 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD EQ ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x3986 DUP3 DUP3 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x39CC JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x39C3 SWAP3 SWAP2 SWAP1 PUSH3 0x5A12 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH3 0x39DC PUSH3 0x2C9E JUMP JUMPDEST SWAP1 POP PUSH3 0x39EA DUP5 DUP5 PUSH3 0x220E JUMP JUMPDEST PUSH3 0x3AC5 JUMPI PUSH1 0x1 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0x3A60 PUSH3 0x2F16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x3ACA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL NOT DUP6 AND SWAP1 POP DUP3 DUP5 AND DUP3 SHL DUP2 OR SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP5 PUSH1 0x2 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH3 0x3B1A DUP4 DUP6 PUSH0 ADD PUSH3 0x4322 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3B3B DUP3 DUP5 PUSH0 ADD PUSH3 0x4339 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x2 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP1 SHL DUP2 EQ DUP1 ISZERO PUSH3 0x3B76 JUMPI POP PUSH3 0x3B74 DUP5 DUP5 PUSH3 0x3B23 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH3 0x3BBB JUMPI DUP3 PUSH1 0x40 MLOAD PUSH32 0x2B5668600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3BB2 SWAP2 SWAP1 PUSH3 0x48E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x3BD2 DUP4 DUP4 PUSH3 0x395A JUMP JUMPDEST PUSH3 0x3C26 JUMPI DUP3 PUSH0 ADD DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE DUP3 PUSH0 ADD DUP1 SLOAD SWAP1 POP DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SWAP1 POP PUSH3 0x3C2A JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH3 0x3C3F DUP3 PUSH0 ADD PUSH3 0x4350 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2710 PUSH1 0x80 PUSH1 0xFF AND DUP4 PUSH2 0xFFFF AND SWAP1 SHL DUP2 PUSH3 0x3C67 JUMPI PUSH3 0x3C66 PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DIV PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x800000 DUP3 PUSH3 0xFFFFFF AND SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 DUP5 SUB PUSH3 0x3CAA JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP POP POP PUSH3 0x3FAC JUMP JUMPDEST DUP4 SWAP1 POP PUSH0 DUP2 SLT ISZERO PUSH3 0x3CC0 JUMPI DUP1 PUSH0 SUB SWAP1 POP DUP2 ISZERO SWAP2 POP JUMPDEST PUSH3 0x100000 DUP2 LT ISZERO PUSH3 0x3F22 JUMPI PUSH1 0x80 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SWAP3 POP DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 GT ISZERO PUSH3 0x3CFC JUMPI DUP1 PUSH0 NOT DIV SWAP1 POP DUP3 ISZERO SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH3 0x3D0F JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH3 0x3D2A JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x4 DUP3 AND ISZERO PUSH3 0x3D45 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x8 DUP3 AND ISZERO PUSH3 0x3D60 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x10 DUP3 AND ISZERO PUSH3 0x3D7B JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x20 DUP3 AND ISZERO PUSH3 0x3D96 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x40 DUP3 AND ISZERO PUSH3 0x3DB1 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH1 0x80 DUP3 AND ISZERO PUSH3 0x3DCC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x100 DUP3 AND ISZERO PUSH3 0x3DE8 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x200 DUP3 AND ISZERO PUSH3 0x3E04 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x400 DUP3 AND ISZERO PUSH3 0x3E20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x800 DUP3 AND ISZERO PUSH3 0x3E3C JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x1000 DUP3 AND ISZERO PUSH3 0x3E58 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x2000 DUP3 AND ISZERO PUSH3 0x3E74 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x4000 DUP3 AND ISZERO PUSH3 0x3E90 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH2 0x8000 DUP3 AND ISZERO PUSH3 0x3EAC JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x10000 DUP3 AND ISZERO PUSH3 0x3EC9 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x20000 DUP3 AND ISZERO PUSH3 0x3EE6 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x40000 DUP3 AND ISZERO PUSH3 0x3F03 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST DUP1 DUP2 MUL PUSH1 0x80 SHR SWAP1 POP PUSH3 0x80000 DUP3 AND ISZERO PUSH3 0x3F20 JUMPI DUP1 DUP5 MUL PUSH1 0x80 SHR SWAP4 POP JUMPDEST POP JUMPDEST PUSH0 DUP4 SUB PUSH3 0x3F6B JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH32 0x3B74B31A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x3F62 SWAP3 SWAP2 SWAP1 PUSH3 0x5A84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH3 0x3F78 JUMPI DUP3 PUSH3 0x3FA7 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH3 0x3FA6 SWAP2 SWAP1 PUSH3 0x5AAF JUMP JUMPDEST JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3FFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFF DUP4 DUP4 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x401E PUSH3 0x35FC JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP3 DUP3 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH3 0x40F0 PUSH3 0x4371 JUMP JUMPDEST PUSH3 0x4127 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH3 0x4133 PUSH3 0x40E6 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x41A6 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x419D SWAP2 SWAP1 PUSH3 0x4CF8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x41B1 DUP2 PUSH3 0x35A6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 EQ PUSH3 0x42B5 JUMPI PUSH0 PUSH1 0x1 DUP3 PUSH3 0x41E4 SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP7 PUSH0 ADD DUP1 SLOAD SWAP1 POP PUSH3 0x41FC SWAP2 SWAP1 PUSH3 0x5804 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x4269 JUMPI PUSH0 DUP7 PUSH0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x421F JUMPI PUSH3 0x421E PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x4243 JUMPI PUSH3 0x4242 PUSH3 0x52A3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP8 PUSH1 0x1 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP6 PUSH0 ADD DUP1 SLOAD DUP1 PUSH3 0x427F JUMPI PUSH3 0x427E PUSH3 0x5AE6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD PUSH0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x42BA JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x2 ADD PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SSTORE PUSH3 0x42EE DUP3 DUP5 PUSH0 ADD PUSH3 0x4391 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4304 DUP3 PUSH0 ADD PUSH3 0x4004 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x431A DUP4 PUSH0 ADD DUP4 PUSH3 0x3930 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4331 DUP4 PUSH0 ADD DUP4 PUSH3 0x3BC5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4348 DUP4 PUSH0 ADD DUP4 PUSH3 0x395A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH3 0x4360 DUP4 PUSH0 ADD PUSH3 0x43A8 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 SWAP1 POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x437C PUSH3 0x3696 JUMP JUMPDEST PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH3 0x43A0 DUP4 PUSH0 ADD DUP4 PUSH3 0x41B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x43F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x43E2 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x19BA DUP1 PUSH3 0x5B14 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4491 DUP2 PUSH3 0x445B JUMP JUMPDEST DUP2 EQ PUSH3 0x449C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x44AF DUP2 PUSH3 0x4486 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x44CD JUMPI PUSH3 0x44CC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x44DC DUP5 DUP3 DUP6 ADD PUSH3 0x449F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x44FB DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4516 PUSH0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4559 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x456C DUP4 DUP4 PUSH3 0x454E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4590 DUP3 PUSH3 0x451C JUMP JUMPDEST PUSH3 0x459C DUP2 DUP6 PUSH3 0x4526 JUMP JUMPDEST SWAP4 POP PUSH3 0x45A9 DUP4 PUSH3 0x4536 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x45DF JUMPI DUP2 MLOAD PUSH3 0x45C3 DUP9 DUP3 PUSH3 0x455F JUMP JUMPDEST SWAP8 POP PUSH3 0x45D0 DUP4 PUSH3 0x4578 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x45AC JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4606 DUP2 DUP5 PUSH3 0x4584 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4619 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP2 EQ PUSH3 0x4624 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4637 DUP2 PUSH3 0x460E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4655 JUMPI PUSH3 0x4654 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4664 DUP5 DUP3 DUP6 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46B5 PUSH3 0x46AF PUSH3 0x46A9 DUP5 PUSH3 0x466D JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46C8 DUP3 PUSH3 0x4695 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x46DB DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x46ED DUP2 PUSH3 0x46CF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4708 PUSH0 DUP4 ADD DUP5 PUSH3 0x46E2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x471A DUP3 PUSH3 0x466D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x472D DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x473F DUP2 PUSH3 0x4721 JUMP JUMPDEST DUP2 EQ PUSH3 0x474A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x475D DUP2 PUSH3 0x4734 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x477B DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP2 EQ PUSH3 0x4786 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4799 DUP2 PUSH3 0x4770 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x47B8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP2 EQ PUSH3 0x47C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x47D6 DUP2 PUSH3 0x47AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH3 0x47FE JUMPI PUSH3 0x47FD PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x480D DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP11 POP POP PUSH1 0x20 PUSH3 0x4820 DUP14 DUP3 DUP15 ADD PUSH3 0x474D JUMP JUMPDEST SWAP10 POP POP PUSH1 0x40 PUSH3 0x4833 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x60 PUSH3 0x4846 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x80 PUSH3 0x4859 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0xA0 PUSH3 0x486C DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xC0 PUSH3 0x487F DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xE0 PUSH3 0x4892 DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x100 PUSH3 0x48A6 DUP14 DUP3 DUP15 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x120 PUSH3 0x48BA DUP14 DUP3 DUP15 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x48E0 DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x48FB PUSH0 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x490C DUP2 PUSH3 0x48CC JUMP JUMPDEST DUP2 EQ PUSH3 0x4917 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x492A DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4948 JUMPI PUSH3 0x4947 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4957 DUP5 DUP3 DUP6 ADD PUSH3 0x491A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4978 JUMPI PUSH3 0x4977 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4987 DUP5 DUP3 DUP6 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x49AA JUMPI PUSH3 0x49A9 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x49B9 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x49CC DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x49DF DUP7 DUP3 DUP8 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH3 0x49F4 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP2 EQ PUSH3 0x49FF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A12 DUP2 PUSH3 0x49E9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4A31 JUMPI PUSH3 0x4A30 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4A40 DUP6 DUP3 DUP7 ADD PUSH3 0x491A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4A53 DUP6 DUP3 DUP7 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4A68 DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP2 EQ PUSH3 0x4A73 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4A86 DUP2 PUSH3 0x4A5D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH3 0x4AAD JUMPI PUSH3 0x4AAC PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4ABC DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP10 POP POP PUSH1 0x20 PUSH3 0x4ACF DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x40 PUSH3 0x4AE2 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x60 PUSH3 0x4AF5 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x80 PUSH3 0x4B08 DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP6 POP POP PUSH1 0xA0 PUSH3 0x4B1B DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xC0 PUSH3 0x4B2E DUP13 DUP3 DUP14 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xE0 PUSH3 0x4B41 DUP13 DUP3 DUP14 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x100 PUSH3 0x4B55 DUP13 DUP3 DUP14 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH3 0x4B89 JUMPI PUSH3 0x4B88 PUSH3 0x4B65 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4BA9 JUMPI PUSH3 0x4BA8 PUSH3 0x4B69 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH3 0x4BC8 JUMPI PUSH3 0x4BC7 PUSH3 0x4B6D JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x4BEC JUMPI PUSH3 0x4BEB PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4BFB DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH3 0x4C0E DUP10 DUP3 DUP11 ADD PUSH3 0x474D JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH3 0x4C21 DUP10 DUP3 DUP11 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH3 0x4C34 DUP10 DUP3 DUP11 ADD PUSH3 0x491A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4C58 JUMPI PUSH3 0x4C57 PUSH3 0x4457 JUMP JUMPDEST JUMPDEST PUSH3 0x4C66 DUP10 DUP3 DUP11 ADD PUSH3 0x4B71 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH3 0x4C81 DUP3 PUSH3 0x470E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4C93 DUP2 PUSH3 0x4C75 JUMP JUMPDEST DUP2 EQ PUSH3 0x4C9E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH3 0x4CB1 DUP2 PUSH3 0x4C88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4CCF JUMPI PUSH3 0x4CCE PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4CDE DUP5 DUP3 DUP6 ADD PUSH3 0x4CA1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x4CF2 DUP2 PUSH3 0x470E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D0D PUSH0 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4D2C JUMPI PUSH3 0x4D2B PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4D3B DUP6 DUP3 DUP7 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4D4E DUP6 DUP3 DUP7 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x4D63 DUP2 PUSH3 0x4545 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4D7E PUSH0 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4D9F JUMPI PUSH3 0x4D9E PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4DAE DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x4DC1 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x4DD4 DUP8 DUP3 DUP9 ADD PUSH3 0x47C6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x4DE7 DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH3 0x4DFF DUP3 PUSH3 0x46BC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4E11 DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x4E2C PUSH0 DUP4 ADD DUP5 PUSH3 0x4E06 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x4E4B JUMPI PUSH3 0x4E4A PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x4E5A DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x4E6D DUP6 DUP3 DUP7 ADD PUSH3 0x474D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4EAB DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4EBC DUP2 PUSH3 0x4DF3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x4ECD DUP2 PUSH3 0x44E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x4EE9 PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x4EFE PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x4F13 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x4F28 PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x4F3B DUP4 DUP4 PUSH3 0x4ED3 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x4F5F DUP3 PUSH3 0x4E77 JUMP JUMPDEST PUSH3 0x4F6B DUP2 DUP6 PUSH3 0x4E81 JUMP JUMPDEST SWAP4 POP PUSH3 0x4F78 DUP4 PUSH3 0x4E91 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x4FAE JUMPI DUP2 MLOAD PUSH3 0x4F92 DUP9 DUP3 PUSH3 0x4F2E JUMP JUMPDEST SWAP8 POP PUSH3 0x4F9F DUP4 PUSH3 0x4F47 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x4F7B JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x4FD5 DUP2 DUP5 PUSH3 0x4F53 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4FF8 JUMPI PUSH3 0x4FF7 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5007 DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x501A DUP8 DUP3 DUP9 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x502D DUP8 DUP3 DUP9 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x5040 DUP8 DUP3 DUP9 ADD PUSH3 0x4A76 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x5066 JUMPI PUSH3 0x5065 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x5075 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x5088 DUP7 DUP3 DUP8 ADD PUSH3 0x474D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x509B DUP7 DUP3 DUP8 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH0 DUP3 ADD MLOAD PUSH3 0x50BB PUSH0 DUP6 ADD DUP3 PUSH3 0x4EA0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH3 0x50D0 PUSH1 0x20 DUP6 ADD DUP3 PUSH3 0x4EB1 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH3 0x50E5 PUSH1 0x40 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH3 0x50FA PUSH1 0x60 DUP6 ADD DUP3 PUSH3 0x4EC2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH3 0x5115 PUSH0 DUP4 ADD DUP5 PUSH3 0x50A5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5131 PUSH0 DUP4 ADD DUP12 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5140 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x514F PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x515E PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x516D PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x517C PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x518B PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x519A PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x44F0 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x51C2 JUMPI PUSH3 0x51C1 PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x51D1 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH3 0x51E4 DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH3 0x51F7 DUP8 DUP3 DUP9 ADD PUSH3 0x4627 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH3 0x520A DUP8 DUP3 DUP9 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x522E JUMPI PUSH3 0x522D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x523D DUP5 DUP3 DUP6 ADD PUSH3 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x525E JUMPI PUSH3 0x525D PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x526D DUP5 DUP3 DUP6 ADD PUSH3 0x4A02 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x5309 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH3 0x533E JUMPI PUSH3 0x533D PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5369 PUSH3 0x5363 PUSH3 0x535D DUP5 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x537B DUP2 PUSH3 0x5349 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH3 0x5396 PUSH0 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53A5 PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x53B4 PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH3 0x53C7 DUP2 PUSH3 0x4763 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x53D8 DUP2 PUSH3 0x479F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x53F3 PUSH0 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5402 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5411 PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5420 PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x542F PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x543E PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x544D PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x546E PUSH0 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5494 PUSH3 0x548E PUSH3 0x5488 DUP5 PUSH3 0x479F JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x54A6 DUP2 PUSH3 0x5474 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH3 0x54C1 PUSH0 DUP4 ADD DUP11 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54D0 PUSH1 0x20 DUP4 ADD DUP10 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54DF PUSH1 0x40 DUP4 ADD DUP9 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54EE PUSH1 0x60 DUP4 ADD DUP8 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x54FD PUSH1 0x80 DUP4 ADD DUP7 PUSH3 0x549B JUMP JUMPDEST PUSH3 0x550C PUSH1 0xA0 DUP4 ADD DUP6 PUSH3 0x5370 JUMP JUMPDEST PUSH3 0x551B PUSH1 0xC0 DUP4 ADD DUP5 PUSH3 0x549B JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x553C PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x554B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5370 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 ADD SWAP1 POP PUSH3 0x5568 PUSH0 DUP4 ADD DUP12 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5577 PUSH1 0x20 DUP4 ADD DUP11 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5586 PUSH1 0x40 DUP4 ADD DUP10 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x5595 PUSH1 0x60 DUP4 ADD DUP9 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55A4 PUSH1 0x80 DUP4 ADD DUP8 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55B3 PUSH1 0xA0 DUP4 ADD DUP7 PUSH3 0x53BC JUMP JUMPDEST PUSH3 0x55C2 PUSH1 0xC0 DUP4 ADD DUP6 PUSH3 0x53CD JUMP JUMPDEST PUSH3 0x55D1 PUSH1 0xE0 DUP4 ADD DUP5 PUSH3 0x53CD JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x60 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x55F6 DUP3 PUSH3 0x55DE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5609 DUP3 PUSH3 0x55EA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5625 PUSH3 0x561F DUP3 PUSH3 0x46CF JUMP JUMPDEST PUSH3 0x55FD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0xF0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5643 DUP3 PUSH3 0x562B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x565F PUSH3 0x5659 DUP3 PUSH3 0x4763 JUMP JUMPDEST PUSH3 0x5637 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5672 DUP3 DUP7 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5684 DUP3 DUP6 PUSH3 0x5610 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP PUSH3 0x5696 DUP3 DUP5 PUSH3 0x564A JUMP JUMPDEST PUSH1 0x2 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x56E0 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x56C3 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x5707 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x5713 DUP2 DUP6 PUSH3 0x56B1 JUMP JUMPDEST SWAP4 POP PUSH3 0x5725 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST PUSH3 0x5730 DUP2 PUSH3 0x56EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH3 0x5750 PUSH0 DUP4 ADD DUP9 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x575F PUSH1 0x20 DUP4 ADD DUP8 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x576E PUSH1 0x40 DUP4 ADD DUP7 PUSH3 0x46E2 JUMP JUMPDEST PUSH3 0x577D PUSH1 0x60 DUP4 ADD DUP6 PUSH3 0x53BC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH3 0x5791 DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57B3 DUP3 PUSH3 0x56A7 JUMP JUMPDEST PUSH3 0x57BF DUP2 DUP6 PUSH3 0x579D JUMP JUMPDEST SWAP4 POP PUSH3 0x57D1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x56C1 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x57EA DUP3 DUP6 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP PUSH3 0x57F8 DUP3 DUP5 PUSH3 0x57A7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5810 DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x581D DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH3 0x5838 JUMPI PUSH3 0x5837 PUSH3 0x52D0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5853 PUSH0 DUP4 ADD DUP6 PUSH3 0x4E06 JUMP JUMPDEST PUSH3 0x5862 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x587E PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x588D PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x58BD PUSH3 0x58B7 PUSH3 0x58B1 DUP5 PUSH3 0x5894 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x4545 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x58CF DUP2 PUSH3 0x589D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x58EA PUSH0 DUP4 ADD DUP6 PUSH3 0x58C4 JUMP JUMPDEST PUSH3 0x58F9 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4D58 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x593C PUSH3 0x5936 PUSH3 0x5930 DUP5 PUSH3 0x5900 JUMP JUMPDEST PUSH3 0x468C JUMP JUMPDEST PUSH3 0x5909 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x594E DUP2 PUSH3 0x591C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x5969 PUSH0 DUP4 ADD DUP5 PUSH3 0x5943 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x597F DUP2 PUSH3 0x4901 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x599D JUMPI PUSH3 0x599C PUSH3 0x4453 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x59AC DUP5 DUP3 DUP6 ADD PUSH3 0x596F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59CA PUSH0 DUP4 ADD DUP6 PUSH3 0x48D5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0x59DE DUP2 DUP5 PUSH3 0x56FB JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x59FC PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A0B PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x4CE7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A27 PUSH0 DUP4 ADD DUP6 PUSH3 0x4CE7 JUMP JUMPDEST PUSH3 0x5A36 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x48D5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5A7E DUP2 PUSH3 0x5A6A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x5A99 PUSH0 DUP4 ADD DUP6 PUSH3 0x4D58 JUMP JUMPDEST PUSH3 0x5AA8 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x5A73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0x5ABB DUP3 PUSH3 0x4545 JUMP JUMPDEST SWAP2 POP PUSH3 0x5AC8 DUP4 PUSH3 0x4545 JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x5ADB JUMPI PUSH3 0x5ADA PUSH3 0x5A3D JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH3 0x19BA CODESIZE SUB DUP1 PUSH3 0x19BA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x29 SWAP2 SWAP1 PUSH3 0xDAB JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH3 0x4B DUP3 DUP3 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP PUSH0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x12C SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x16B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x187 SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x234 SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x26E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x273 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x28F SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP DUP6 DUP1 ISZERO PUSH3 0x29C JUMPI POP DUP3 JUMPDEST PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D5 SWAP1 PUSH3 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO DUP1 ISZERO PUSH3 0x327 JUMPI POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO JUMPDEST PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x360 SWAP1 PUSH3 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH3 0x39D PUSH32 0x3441AB29B24DAF7A3FD59500B0E08396EC08EC96F5CC2D0362924CDD45CFEC31 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP9 PUSH3 0x410 PUSH32 0x7E1935766B7C49E7482A018A5EE52CA183A2DDFCB6810787916934079AA58264 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 PUSH2 0xFFFF AND PUSH3 0x487 PUSH32 0xFF057B3B4D4500DDA208CDE5D654DB7AA2EC63AC10AB9F9956A1F56973842782 PUSH0 SHL PUSH3 0x6A1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD DUP2 SWAP1 SSTORE POP PUSH0 PUSH3 0x4A3 DUP10 PUSH2 0xFFFF AND PUSH3 0x6AA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x4BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x117E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x4FE PUSH32 0x64FB4ECF63A4059A0BB1412609335673D4954BFF8E9740D216D9469D190CBB3F PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x50E SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x526 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x151E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x568 PUSH32 0xD668863F064048EE8C87390227CA6556D110ECF41306C7B64AAB5C1C530B2D84 PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x578 SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP PUSH3 0x58B DUP13 DUP10 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x177E JUMP JUMPDEST PUSH3 0x5AE DUP3 PUSH3 0x839 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0x683 JUMPI PUSH3 0x67C DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x649 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x66F SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST DUP3 PUSH3 0x9DF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x694 JUMP JUMPDEST PUSH3 0x693 PUSH3 0xA6B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP3 PUSH2 0xFFFF AND SUB PUSH3 0x6F6 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH3 0x82B JUMP JUMPDEST PUSH0 DUP3 SWAP1 POP PUSH0 JUMPDEST PUSH0 DUP3 PUSH2 0xFFFF AND EQ PUSH3 0x72F JUMPI DUP1 DUP1 PUSH3 0x715 SWAP1 PUSH3 0x15E4 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA DUP3 PUSH3 0x727 SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP2 POP PUSH3 0x6FC JUMP JUMPDEST PUSH0 DUP2 PUSH2 0xFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x751 JUMPI PUSH3 0x750 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x784 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND EQ PUSH3 0x824 JUMPI PUSH1 0x1 DUP3 PUSH3 0x7A3 SWAP2 SWAP1 PUSH3 0x1676 JUMP JUMPDEST SWAP2 POP PUSH1 0xA DUP6 PUSH3 0x7B4 SWAP2 SWAP1 PUSH3 0x16B2 JUMP JUMPDEST PUSH1 0x30 PUSH3 0x7C2 SWAP2 SWAP1 PUSH3 0x16E9 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH3 0x7DF JUMPI PUSH3 0x7DE PUSH3 0x1725 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP6 PUSH3 0x81C SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP5 POP PUSH3 0x788 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x897 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x64CED0EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x88E SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x8CB PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x955 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x97B SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x9DB JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9D2 SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xA0A SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0xA44 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xA49 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xA61 DUP6 DUP4 DUP4 PUSH3 0xAA8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH3 0xAA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0xAC7 JUMPI PUSH3 0xAC1 DUP3 PUSH3 0xB44 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xB3C JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH3 0xAEE JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH3 0xB33 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB2A SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH3 0xB3D JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0xB57 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xBC5 DUP3 PUSH3 0xB9A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xBD7 DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP2 EQ PUSH3 0xBE2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xBF5 DUP2 PUSH3 0xBCC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xC13 DUP2 PUSH3 0xBFB JUMP JUMPDEST DUP2 EQ PUSH3 0xC1E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xC31 DUP2 PUSH3 0xC08 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xC87 DUP3 PUSH3 0xC3F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0xCA9 JUMPI PUSH3 0xCA8 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xCBD PUSH3 0xB89 JUMP JUMPDEST SWAP1 POP PUSH3 0xCCB DUP3 DUP3 PUSH3 0xC7C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xCED JUMPI PUSH3 0xCEC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xCF8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xD24 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0xD07 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xD45 PUSH3 0xD3F DUP5 PUSH3 0xCD0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xD64 JUMPI PUSH3 0xD63 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xD71 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xD90 JUMPI PUSH3 0xD8F PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xDA2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xD2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0xDC7 JUMPI PUSH3 0xDC6 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0xDD6 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0xDE9 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0xDFC DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0xE0F DUP9 DUP3 DUP10 ADD PUSH3 0xC21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xE33 JUMPI PUSH3 0xE32 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xE41 DUP9 DUP3 DUP10 ADD PUSH3 0xD79 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xE6E DUP3 PUSH3 0xE4E JUMP JUMPDEST PUSH3 0xE7A DUP2 DUP6 PUSH3 0xE58 JUMP JUMPDEST SWAP4 POP PUSH3 0xE8C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xEA5 DUP3 DUP5 PUSH3 0xE62 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xECD JUMPI PUSH3 0xECC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xED8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xEFB PUSH3 0xEF5 DUP5 PUSH3 0xEB0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xF1A JUMPI PUSH3 0xF19 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xF27 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xF46 JUMPI PUSH3 0xF45 PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xF58 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xEE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xF79 JUMPI PUSH3 0xF78 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xF99 JUMPI PUSH3 0xF98 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xFA7 DUP5 DUP3 DUP6 ADD PUSH3 0xF2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A204661696C656420746F20676574 PUSH0 DUP3 ADD MSTORE PUSH32 0x20746F6B656E2073796D626F6C73000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x101C PUSH1 0x2E DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x1029 DUP3 PUSH3 0xFC0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x104D DUP2 PUSH3 0x100E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A20496E76616C696420746F6B656E PUSH0 DUP3 ADD MSTORE PUSH32 0x2073796D626F6C73000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x10B0 PUSH1 0x28 DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x10BD DUP3 PUSH3 0x1054 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x10E1 DUP2 PUSH3 0x10A2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C42545F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x112E DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH3 0x113A DUP2 DUP6 PUSH3 0x1118 JUMP JUMPDEST SWAP4 POP PUSH3 0x114C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2F00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x118A DUP3 PUSH3 0x10E8 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH3 0x119C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11A9 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11BB DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11C8 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11DA DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x122C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1242 JUMPI PUSH3 0x1241 PUSH3 0x11E7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH3 0x12A6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x1269 JUMP JUMPDEST PUSH3 0x12B2 DUP7 DUP4 PUSH3 0x1269 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x12FC PUSH3 0x12F6 PUSH3 0x12F0 DUP5 PUSH3 0x12CA JUMP JUMPDEST PUSH3 0x12D3 JUMP JUMPDEST PUSH3 0x12CA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1317 DUP4 PUSH3 0x12DC JUMP JUMPDEST PUSH3 0x132F PUSH3 0x1326 DUP3 PUSH3 0x1303 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x1275 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x1345 PUSH3 0x1337 JUMP JUMPDEST PUSH3 0x1352 DUP2 DUP5 DUP5 PUSH3 0x130C JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1379 JUMPI PUSH3 0x136D PUSH0 DUP3 PUSH3 0x133B JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1358 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x13C8 JUMPI PUSH3 0x1392 DUP2 PUSH3 0x1248 JUMP JUMPDEST PUSH3 0x139D DUP5 PUSH3 0x125A JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x13AD JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x13C5 PUSH3 0x13BC DUP6 PUSH3 0x125A JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x1357 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x13EA PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x13CD JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1404 DUP4 DUP4 PUSH3 0x13D9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x141F DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x143B JUMPI PUSH3 0x143A PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0x1447 DUP3 SLOAD PUSH3 0x1214 JUMP JUMPDEST PUSH3 0x1454 DUP3 DUP3 DUP6 PUSH3 0x137D JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x148A JUMPI PUSH0 DUP5 ISZERO PUSH3 0x1475 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x1481 DUP6 DUP3 PUSH3 0x13F7 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x14F0 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x149A DUP7 PUSH3 0x1248 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x14C3 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x149C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x14E3 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x14DF PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x13D9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4C697175696469747920426F6F6B20546F6B656E200000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x152A DUP3 PUSH3 0x14F8 JUMP JUMPDEST PUSH1 0x15 DUP3 ADD SWAP2 POP PUSH3 0x153C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1549 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x155B DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1568 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x157A DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x159F JUMPI PUSH3 0x159E PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x15AE DUP5 DUP3 DUP6 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x15F0 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH2 0xFFFF DUP3 SUB PUSH3 0x1607 JUMPI PUSH3 0x1606 PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x164B DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1658 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x166B JUMPI PUSH3 0x166A PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1682 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x168F DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x16AC JUMPI PUSH3 0x16AB PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16BE DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x16CB DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x16DE JUMPI PUSH3 0x16DD PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16F5 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1702 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x171F JUMPI PUSH3 0x171E PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0x175D DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1778 PUSH0 DUP4 ADD DUP5 PUSH3 0x1752 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x223 PUSH3 0x1797 PUSH0 CODECOPY PUSH0 PUSH2 0x118 ADD MSTORE PUSH2 0x223 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0A0EA39 EQ PUSH2 0x32 JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH2 0x30 PUSH2 0x5C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x46 PUSH2 0x6E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53 SWAP2 SWAP1 PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x67 PUSH2 0x7C JUMP JUMPDEST PUSH2 0xF6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x77 PUSH2 0x115 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85 PUSH2 0x115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0x111 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x165 DUP3 PUSH2 0x13C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x175 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x18E PUSH0 DUP4 ADD DUP5 PUSH2 0x16C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A1 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP2 EQ PUSH2 0x1AB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC DUP2 PUSH2 0x198 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH2 0x1D6 PUSH2 0x194 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1E4 DUP5 DUP3 DUP6 ADD PUSH2 0x1AE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xF 0xAC 0xD1 PUSH26 0xFF68AFE8C4F5F51E9F66C8A009AF1F057180AF91B116A45A1361 0xC6 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH DUP16 PUSH8 0x4ABC88915A00048D DUP7 DELEGATECALL CREATE 0x2C 0x24 CALLVALUE 0x4F 0xB5 0xB6 PUSH28 0x185D05CE64C6C9AEDC7E7C64736F6C63430008140033000000000000 ", + "sourceMap": "1541:27793:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9698:677:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6402:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20562:802;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1900:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4759:191:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6781:151:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22855:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5246:136:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6348:245;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17054:1139:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21951:504;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26236:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4471:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18573:532;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5439:126;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24596:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9425:133;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12340:2496;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1988:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10632:1133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15407:695;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4261:114;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7318:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3155:101:2;;;:::i;:::-;;3132:229:1;;;:::i;:::-;;5757:131:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6050:148;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4694:120;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2441:144:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28645:203:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5202:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2317:49:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8275:992:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3682:475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11820:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5662:138:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25131:244:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19331:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2038:168:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23440:122:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23879:448;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2399:247:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4949:118:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3443:202:0;3528:4;3566:32;3551:47;;;:11;:47;;;;:87;;;;3602:36;3626:11;3602:23;:36::i;:::-;3551:87;3544:94;;3443:202;;;:::o;9698:677:21:-;9757:28;9797:14;9814:17;:8;:15;:17::i;:::-;9797:34;;9855:1;9846:6;:10;9842:527;;;9900:6;9886:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9872:35;;9922:13;9955:9;9950:268;9970:6;9966:1;:10;9950:268;;;10002:15;10019:14;10037;10049:1;10037:8;:11;;:14;;;;:::i;:::-;10001:50;;;;10074:30;10096:6;10088:15;;10074:13;:30::i;:::-;10070:134;;;10149:7;10128:11;10140:5;10128:18;;;;;;;;:::i;:::-;;;;;;;:28;;;;;10178:7;;;;;:::i;:::-;;;;10070:134;9983:235;;9978:3;;;;:::i;:::-;;;9950:268;;;;10244:6;10236:5;:14;10232:127;;;10321:5;10308:11;10301:26;10232:127;9858:511;9842:527;9787:588;9698:677;:::o;6402:153::-;6479:12;6517:30;6541:5;6517:20;:23;;:30;;;;:::i;:::-;6503:45;;6402:153;;;:::o;20562:802::-;2334:13:2;:11;:13::i;:::-;20931:14:21::1;20948:46;20970:6;20978;20986:7;20948:46;;:21;:46::i;:::-;:53;;;20931:70;;21043:1;21016:29;;21024:6;21016:29;;::::0;21012:94:::1;;21082:6;21090;21098:7;21054:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;21012:94;21117:6;:29;;;21160:10;21184:12;21210:11;21235:15;21264:18;21296:13;21323:24;21117:240;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20921:443;20562:802:::0;;;;;;;;;;:::o;1900:82::-;1948:34;1900:82;:::o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4843:59;;4919:1;:8;;:14;4928:4;4919:14;;;;;;;;;;;:24;;;4912:31;;;4759:191;;;:::o;6781:151:21:-;6849:12;6880:45;6918:5;6880:20;:29;;:45;;;;:::i;:::-;6873:52;;6781:151;;;:::o;22855:239::-;1948:34;3191:16:0;3202:4;3191:10;:16::i;:::-;23018:69:21::1;23046:6;23054;23062:7;23071:1;23018:69:::0;::::1;23084:1;23074:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23018:27;:69::i;:::-;22855:239:::0;;;;:::o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;6463:12;:10;:12::i;:::-;6441:34;;:18;:34;;;6437:102;;6498:30;;;;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;17054:1139:21:-;2334:13:2;:11;:13::i;:::-;2218:1:21::1;17388:7;:23;;;17384:69;;;17445:7;17420:33;;;;;;;;;;;:::i;:::-;;;;;;;;17384:69;17464:14;17481:244;17528:10;17552:12;17578:11;17603:15;17632:18;17664:13;17691:24;17489:1;17481:10:::0;::::1;:33;;:244;;;;;;;;;;:::i;:::-;17464:261;;17740:6;17736:90;;;17771:44;17786:4;2167:3;17771:6;:14;;:44;;;;;:::i;:::-;17762:53;;17736:90;17836:38;17849:7;17836:38;;17866:6;17858:15;;17836:8;:12;;:38;;;;;:::i;:::-;;17913:7;17890:241;;;17934:10;17958:12;17984:11;18009:15;18038:18;18070:13;18097:24;17890:241;;;;;;;;;;;;:::i;:::-;;;;;;;;18179:6;18147:39;;18170:7;18147:39;;;;;;;;;;;;17374:819;17054:1139:::0;;;;;;;;;:::o;21951:504::-;1948:34;3191:16:0;3202:4;3191:10;:16::i;:::-;22242:1:21::1;22199:45;;:31;22214:15;22199:14;:31::i;:::-;:45;;;:85;;;;22283:1;22248:36;;:31;22263:15;22248:14;:31::i;:::-;:36;;;;22199:85;22195:158;;;22307:35;;;;;;;;;;;;;;22195:158;22363:85;22391:6;22399;22407:7;22416:15;22433:14;;22363:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;:85::i;:::-;21951:504:::0;;;;;;;:::o;26236:96::-;2334:13:2;:11;:13::i;:::-;26308:4:21::1;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26236:96:::0;:::o;4471:118::-;4530:20;4569:13;;;;;;;;;;;4562:20;;4471:118;:::o;18573:532::-;2334:13:2;:11;:13::i;:::-;18673:26:21::1;18691:7;18673:26;;:8;:17;;:26;;;;:::i;:::-;18668:78;;18738:7;18708:38;;;;;;;;;;;:::i;:::-;;;;;;;;18668:78;18757:14;18782:21;18795:7;18782:21;;:8;:12;;:21;;;;:::i;:::-;18774:30;;18757:47;;18864:6;18819:51;;:41;2167:3;18819:6;:17;;:41;;;;:::i;:::-;:51;;::::0;18815:140:::1;;18893:51;;;;;;;;;;;;;;18815:140;18965:78;18978:7;18965:78;;18995:46;19010:6;2167:3;18995:6;:14;;:46;;;;;:::i;:::-;18987:55;;18965:8;:12;;:78;;;;;:::i;:::-;;19091:6;19059:39;;19082:7;19059:39;;;;;;;;;;;;18658:447;18573:532:::0;;:::o;5439:126::-;5501:20;5540:11;:18;;;;5533:25;;5439:126;:::o;24596:264::-;2334:13:2;:11;:13::i;:::-;24681:45:21::1;24714:10;24681:20;:24;;:45;;;;:::i;:::-;24676:135;;24789:10;24749:51;;;;;;;;;;;:::i;:::-;;;;;;;;24676:135;24842:10;24826:27;;;;;;;;;;;;24596:264:::0;:::o;9425:133::-;9483:34;9536:15;:8;:13;:15::i;:::-;9529:22;;9425:133;:::o;12340:2496::-;12476:12;12509:26;12527:7;12509:26;;:8;:17;;:26;;;;:::i;:::-;12504:78;;12574:7;12544:38;;;;;;;;;;;:::i;:::-;;;;;;;;12504:78;12593:14;12618:21;12631:7;12618:21;;:8;:12;;:21;;;;:::i;:::-;12610:30;;12593:47;;12650:12;12679:7;:5;:7::i;:::-;12665:21;;:10;:21;;;12650:36;;12702:21;12716:6;12702:13;:21::i;:::-;12701:22;:34;;;;;12728:7;12727:8;12701:34;12697:126;;;12792:10;12804:7;12758:54;;;;;;;;;;;;:::i;:::-;;;;;;;;12697:126;12838:46;12876:6;12838:20;:29;;:46;;;;:::i;:::-;12833:103;;12929:6;12893:43;;;;;;;;;;;:::i;:::-;;;;;;;;12833:103;12961:6;12951:16;;:6;:16;;;12947:66;;13006:6;12976:37;;;;;;;;;;;:::i;:::-;;;;;;;;12947:66;13094:45;13121:8;13131:7;13094:26;:45::i;:::-;;13258:13;13273;13290:27;13302:6;13310;13290:11;:27::i;:::-;13257:60;;;;13396:1;13369:29;;13377:6;13369:29;;;13365:66;;13407:24;;;;;;;;;;;;;;13365:66;13510:1;13445:67;;13453:12;:20;13466:6;13453:20;;;;;;;;;;;;;;;:28;13474:6;13453:28;;;;;;;;;;;;;;;:37;13482:7;13453:37;;;;;;;;;;;;;:44;;;;;;;;;;;;13445:67;;;13441:160;;13566:6;13574;13582:7;13535:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;13441:160;13625:17;13756:22;:6;:20;:22::i;:::-;13796:24;:6;:22;:24::i;:::-;13838:23;:6;:21;:23::i;:::-;13879:27;:6;:25;:27::i;:::-;13924:30;:6;:28;:30::i;:::-;13972:25;:6;:23;:25::i;:::-;14015:36;:6;:34;:36::i;:::-;14069:8;13645:446;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13625:466;;14106:12;14148:6;14156;14164:7;14131:41;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14121:52;;;;;;14106:67;;14188:21;14246:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;14311:13;;;;;;;;;;;14326:6;14334;14342:7;14351:4;14300:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14212:158;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14188:182;;14440:33;14455:1;14458:4;14464:8;14440:14;:33::i;:::-;14425:49;;13611:874;;;14547:102;;;;;;;;14575:7;14547:102;;;;;;14592:4;14547:102;;;;;;14614:7;14547:102;;;;;;14642:5;14547:102;;;;;14495:12;:20;14508:6;14495:20;;;;;;;;;;;;;;;:28;14516:6;14495:28;;;;;;;;;;;;;;;:37;14524:7;14495:37;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14660:11;14677:4;14660:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14692:53;14737:7;14692:53;;:24;:32;14717:6;14692:32;;;;;;;;;;;;;;;:40;14725:6;14692:40;;;;;;;;;;;;;;;:44;;:53;;;;:::i;:::-;;14791:7;14761:68;;14783:6;14761:68;;14775:6;14761:68;;;14800:4;14827:1;14806:11;:18;;;;:22;;;;:::i;:::-;14761:68;;;;;;;:::i;:::-;;;;;;;;12494:2342;;;;12340:2496;;;;;;:::o;1988:122::-;2056:54;1988:122;:::o;10632:1133::-;10749:43;10833:13;10848;10865:27;10877:6;10885;10865:11;:27::i;:::-;10832:60;;;;10907:40;10950:24;:32;10975:6;10950:32;;;;;;;;;;;;;;;:40;10983:6;10950:40;;;;;;;;;;;;;;;10907:83;;11005:14;11022:19;:10;:17;:19::i;:::-;11005:36;;11069:1;11060:6;:10;11056:693;;;11133:6;11109:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11090:50;;11159:57;11219:12;:20;11232:6;11219:20;;;;;;;;;;;;;;;:28;11240:6;11219:28;;;;;;;;;;;;;;;11159:88;;11271:9;11266:469;11290:6;11286:1;:10;11266:469;;;11325:14;11342:25;:16;11356:1;11342:10;:13;;:16;;;;:::i;:::-;:23;:25::i;:::-;11325:42;;11412:304;;;;;;;;11465:7;11412:304;;;;;;11506:11;:20;11518:7;11506:20;;;;;;;;;;;;;:27;;;;;;;;;;;;11412:304;;;;;;11575:11;:20;11587:7;11575:20;;;;;;;;;;;;;:35;;;;;;;;;;;;11412:304;;;;;;11655:11;:20;11667:7;11655:20;;;;;;;;;;;;;:38;;;;;;;;;;;;11412:304;;;;;11390:16;11407:1;11390:19;;;;;;;;:::i;:::-;;;;;;;:326;;;;11303:432;11298:3;;;;;11266:469;;;;11072:677;11056:693;10808:951;;;;10632:1133;;;;:::o;15407:695::-;2334:13:2;:11;:13::i;:::-;15532::21::1;15547::::0;15564:27:::1;15576:6;15584;15564:11;:27::i;:::-;15531:60;;;;15602:40;15645:12;:20;15658:6;15645:20;;;;;;;;;;;;;;;:28;15666:6;15645:28;;;;;;;;;;;;;;;:37;15674:7;15645:37;;;;;;;;;;;;;15602:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;15739:1;15696:45;;15704:15;:22;;;15696:45;;::::0;15692:137:::1;;15794:6;15802;15810:7;15764:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;15692:137;15880:7;15843:44;;:15;:33;;;:44;;::::0;15839:106:::1;;15896:49;;;;;;;;;;;;;;15839:106;16014:7;15956:12;:20;15969:6;15956:20;;;;;;;;;;;;;;;:28;15977:6;15956:28;;;;;;;;;;;;;;;:37;15985:7;15956:37;;;;;;;;;;;;;:55;;;:65;;;;;;;;;;;;;;;;;;16063:15;:22;;;16037:58;;;16087:7;16037:58;;;;;;:::i;:::-;;;;;;;;15521:581;;;15407:695:::0;;;;:::o;4261:114::-;4318:18;2218:1;4348:20;;4261:114;:::o;7318:259::-;7459:42;;:::i;:::-;7524:46;7546:6;7554;7562:7;7524:21;:46::i;:::-;7517:53;;7318:259;;;;;:::o;3155:101:2:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;3132:229:1:-;3184:14;3201:12;:10;:12::i;:::-;3184:29;;3245:6;3227:24;;:14;:12;:14::i;:::-;:24;;;3223:96;;3301:6;3274:34;;;;;;;;;;;:::i;:::-;;;;;;;;3223:96;3328:26;3347:6;3328:18;:26::i;:::-;3174:187;3132:229::o;5757:131:21:-;5830:14;5863:11;5875:5;5863:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5856:25;;5757:131;;;:::o;6050:148::-;6116:27;6162:29;:20;:27;:29::i;:::-;6155:36;;6050:148;:::o;4694:120::-;4756:14;2282:6;4782:25;;4694:120;:::o;2441:144:2:-;2487:7;2506:24;2533:20;:18;:20::i;:::-;2506:47;;2570:1;:8;;;;;;;;;;;;2563:15;;;2441:144;:::o;28645:203:21:-;28723:4;2362::0;28751:18:21;;28743:4;:26;28739:57;;28789:7;:5;:7::i;:::-;28778:18;;:7;:18;;;28771:25;;;;28739:57;28813:28;28827:4;28833:7;28813:13;:28::i;:::-;28806:35;;28645:203;;;;;:::o;5202:118::-;5261:20;5300:13;;;;;;;;;;;5293:20;;5202:118;:::o;2317:49:0:-;2362:4;2317:49;;;:::o;8275:992:21:-;8388:18;8420:20;8454:19;8487:23;8524:26;8564:21;8599:32;8645:11;8686:26;8704:7;8686:8;:17;;:26;;;;:::i;:::-;8681:78;;8751:7;8721:38;;;;;;;;;;;:::i;:::-;;;;;;;;8681:78;8770:14;8795:21;8808:7;8795:8;:12;;:21;;;;:::i;:::-;8787:30;;8770:47;;8841:22;:6;:20;:22::i;:::-;8828:35;;;;8888:24;:6;:22;:24::i;:::-;8873:39;;;;8936:23;:6;:21;:23::i;:::-;8922:37;;;;8987:27;:6;:25;:27::i;:::-;8969:45;;;;9045:30;:6;:28;:30::i;:::-;9024:51;;;;9101:25;:6;:23;:25::i;:::-;9085:41;;;;9163:36;:6;:34;:36::i;:::-;9136:63;;;;9219:41;2167:3;9219:6;:17;;:41;;;;:::i;:::-;9210:50;;8671:596;8275:992;;;;;;;;;:::o;3682:475::-;4158:30:3;4191:26;:24;:26::i;:::-;4158:59;;4279:19;4302:1;:15;;;;;;;;;;;;4301:16;4279:38;;4327:18;4348:1;:14;;;;;;;;;;;;4327:35;;4706:17;4741:1;4726:11;:16;;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4805:1;4790:11;:16;;;:50;;;;;4839:1;4818:4;4810:25;;;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4968:1;4951;:14;;;:18;;;;;;;;;;;;;;;;;;4983:14;4979:67;;;5031:4;5013:1;:15;;;:22;;;;;;;;;;;;;;;;;;4979:67;3828:28:21::1;3843:12;3828:14;:28::i;:::-;2282:6;3871:12;:33;3867:111;;;3945:12;2282:6;3913:65;;;;;;;;;;;;:::i;:::-;;;;;;;;3867:111;3989:30;4006:12;3989:16;:30::i;:::-;4046:12;4030:13;:28;;;;4084:19;4068:13;;:35;;;;;;;;;;;;;;;;;;4118:32;4134:1;4137:12;4118:32;;;;;;;:::i;:::-;;;;;;;;5070:14:3::0;5066:101;;;5118:5;5100:1;:15;;;:23;;;;;;;;;;;;;;;;;;5142:14;5154:1;5142:14;;;;;;:::i;:::-;;;;;;;;5066:101;4092:1081;;;;;3682:475:21;;;;:::o;11820:122::-;11868:7;2056:54;11887:48;;11820:122;:::o;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;:::-;;5662:138:::0;;;:::o;25131:244:21:-;2334:13:2;:11;:13::i;:::-;25219:48:21::1;25255:10;25219:20;:27;;:48;;;;:::i;:::-;25214:109;;25312:10;25276:47;;;;;;;;;;;:::i;:::-;;;;;;;;25214:109;25357:10;25339:29;;;;;;;;;;;;25131:244:::0;:::o;19331:197::-;2334:13:2;:11;:13::i;:::-;19412:24:21::1;19428:7;19412:24;;:8;:15;;:24;;;;:::i;:::-;19407:76;;19475:7;19445:38;;;;;;;;;;;:::i;:::-;;;;;;;;19407:76;19513:7;19499:22;;;;;;;;;;;;19331:197:::0;:::o;2038:168:1:-;2091:7;2110:29;2142:25;:23;:25::i;:::-;2110:57;;2184:1;:15;;;;;;;;;;;;2177:22;;;2038:168;:::o;23440:122:21:-;2334:13:2;:11;:13::i;:::-;23525:30:21::1;23542:12;23525:16;:30::i;:::-;23440:122:::0;:::o;23879:448::-;2334:13:2;:11;:13::i;:::-;23964:23:21::1;23990:13;;23964:39;;24037:12;24018:15;:31:::0;24014:85:::1;;24086:12;24058:41;;;;;;;;;;;:::i;:::-;;;;;;;;24014:85;2282:6;24113:12;:33;24109:111;;;24187:12;2282:6;24155:65;;;;;;;;;;;;:::i;:::-;;;;;;;;24109:111;24247:12;24231:13;:28;;;;24274:46;24290:15;24307:12;24274:46;;;;;;;:::i;:::-;;;;;;;;23954:373;23879:448:::0;:::o;2399:247:1:-;2334:13:2;:11;:13::i;:::-;2488:29:1::1;2520:25;:23;:25::i;:::-;2488:57;;2573:8;2555:1;:15;;;:26;;;;;;;;;;;;;;;;;;2630:8;2596:43;;2621:7;:5;:7::i;:::-;2596:43;;;;;;;;;;;;2478:168;2399:247:::0;:::o;4949:118:21:-;5008:20;5047:13;;5040:20;;4949:118;:::o;1035:146:5:-;1111:4;1149:25;1134:40;;;:11;:40;;;;1127:47;;1035:146;;;:::o;7009:117:19:-;7075:7;7101:18;7108:3;:10;;7101:6;:18::i;:::-;7094:25;;7009:117;;;:::o;7463:211::-;7540:7;7549;7569:11;7582:13;7599:21;7602:3;:10;;7614:5;7599:2;:21::i;:::-;7568:52;;;;7646:3;7638:12;;7660:5;7652:14;;7630:37;;;;;;7463:211;;;;;:::o;25381:133:21:-;25443:4;25466:41;2167:3;25466:6;:17;;:41;;;;:::i;:::-;25459:48;;25381:133;;;:::o;9574:156:20:-;9648:7;9698:22;9702:3;:10;;9714:5;9698:3;:22::i;:::-;9690:31;;9667:56;;9574:156;;;;:::o;2658:162:2:-;2728:12;:10;:12::i;:::-;2717:23;;:7;:5;:7::i;:::-;:23;;;2713:101;;2790:12;:10;:12::i;:::-;2763:40;;;;;;;;;;;:::i;:::-;;;;;;;;2713:101;2658:162::o;26700:271:21:-;26824:24;;:::i;:::-;26883:27;26895:6;26903;26883:11;:27::i;:::-;26864:46;;;;;;;;26927:12;:20;26940:6;26927:20;;;;;;;;;;;;;;;:28;26948:6;26927:28;;;;;;;;;;;;;;;:37;26956:7;26927:37;;;;;;;;;;;26920:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26700:271;;;;;:::o;2787:177:0:-;2845:30;2920:28;2910:38;;2787:177;:::o;8871:165:20:-;8951:4;8974:55;8984:3;:10;;9020:5;9004:23;;8996:32;;8974:9;:55::i;:::-;8967:62;;8871:165;;;;:::o;4148:103:0:-;4214:30;4225:4;4231:12;:10;:12::i;:::-;4214:10;:30::i;:::-;4148:103;:::o;27812:571:21:-;28014:14;28031:46;28053:6;28061;28069:7;28031:46;;:21;:46::i;:::-;:53;;;28014:70;;28126:1;28099:29;;28107:6;28099:29;;;28095:94;;28165:6;28173;28181:7;28137:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;28095:94;28236:15;28203:6;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;28199:108;;28291:15;28260:47;;;;;;;;;;;:::i;:::-;;;;;;;;28199:108;28318:6;:25;;;28344:15;28361:14;28318:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28004:379;27812:571;;;;;:::o;29104:228::-;29182:4;2362::0;29210:18:21;;29202:4;:26;29198:79;;29237:40;;;;;;;;;;;;;;29198:79;29294:31;29311:4;29317:7;29294:16;:31::i;:::-;29287:38;;29104:228;;;;:::o;887:96:4:-;940:7;966:10;959:17;;887:96;:::o;7892:388:0:-;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:1;:8;;:14;8106:4;8097:14;;;;;;;;;;;:22;;:31;8120:7;8097:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8182:12;:10;:12::i;:::-;8155:40;;8173:7;8155:40;;8167:4;8155:40;;;;;;;;;;8216:4;8209:11;;;;;8055:219;8258:5;8251:12;;;7892:388;;;;;:::o;12883:1397:32:-;13190:17;13251:11;13236:26;;:12;:26;;;:63;;;;327:5:36;13266:11:32;:33;;;13236:63;:126;;;;595:6:29;13319:15:32;:43;;;13236:126;:174;;;;521:5:29;13366:13:32;:44;;;13236:174;:240;;;;482:7:36;13430:24:32;:46;;;13236:240;13219:315;;;13494:40;;;;;;;;;;;;;;13219:315;13557:66;13571:10;13557:66;;430:6:36;1162:1:32;13557:9;:13;;:66;;;;;;:::i;:::-;13545:78;;13645:70;13659:12;13645:70;;327:5:36;1218:2:32;13645:9;:13;;:70;;;;;;:::i;:::-;13633:82;;13737:68;13751:11;13737:68;;327:5:36;1274:2:32;13737:9;:13;;:68;;;;;;:::i;:::-;13725:80;;13827:76;13841:15;13827:76;;378:6:36;1334:2:32;13827:9;:13;;:76;;;;;;:::i;:::-;13815:88;;13925:78;13939:18;13925:78;;535:8:36;1393:2:32;13925:9;:13;;:78;;;;;;:::i;:::-;13913:90;;14025:72;14039:13;14025:72;;378:6:36;1451:2:32;14025:9;:13;;:72;;;;;;:::i;:::-;14013:84;;14119:80;14133:24;14119:80;;482:7:36;1506:2:32;14119:9;:13;;:80;;;;;;:::i;:::-;14107:92;;14217:56;14236:9;14228:18;;1889:30;14271:1;14217:6;:10;;:56;;;;;;:::i;:::-;14210:63;;12883:1397;;;;;;;;;;:::o;1732:180:36:-;1819:18;1856:49;1860:7;1869;:15;;1883:1;1869:15;;;1879:1;1869:15;1856:49;;229:3;1898:6;1856:3;:49::i;:::-;1849:56;;1732:180;;;;;:::o;6246:161:19:-;6332:4;6355:45;6359:3;:10;;6379:3;6371:12;;6393:5;6385:14;;6355:3;:45::i;:::-;6348:52;;6246:161;;;;;:::o;3932:148:30:-;3998:13;4055:15;4047:24;;4023:50;;3932:148;;;:::o;4730:130::-;4796:13;4837:15;4821:32;;4730:130;;;:::o;6781:145:19:-;6862:4;6885:34;6894:3;:10;;6914:3;6906:12;;6885:8;:34::i;:::-;6878:41;;6781:145;;;;:::o;8183:147::-;8259:7;8293:29;8297:3;:10;;8317:3;8309:12;;8293:3;:29::i;:::-;8285:38;;8278:45;;8183:147;;;;:::o;2658:187:36:-;2734:12;2818:10;2808:7;2800:6;2796:20;2792:37;2781:48;;2658:187;;;;:::o;8316:150:20:-;8386:4;8409:50;8414:3;:10;;8450:5;8434:23;;8426:32;;8409:4;:50::i;:::-;8402:57;;8316:150;;;;:::o;8880:298:19:-;8944:16;8972:22;8997:16;9002:3;:10;;8997:4;:16::i;:::-;8972:41;;9023:23;9133:5;9123:15;;9165:6;9158:13;;;;8880:298;;;:::o;784:217:33:-;858:13;883:12;898:16;906:7;898;:16::i;:::-;883:31;;924:15;942;954:2;942:11;:15::i;:::-;924:33;;976:18;985:8;976:4;:8;;:18;;;;:::i;:::-;968:26;;873:128;;784:217;;;;:::o;27218:195:21:-;27291:6;27299;27330;27321:15;;:6;:15;;;27317:56;;;27358:6;27366;27338:35;;;;;;;;27317:56;27391:6;27399;27383:23;;;;27218:195;;;;;:::o;2186:150:32:-;2248:17;2290:39;1162:1;2290:6;:19;;:39;;;;:::i;:::-;2277:52;;2186:150;;;:::o;2645:158::-;2709:19;2755:41;1218:2;2755:6;:19;;:41;;;;:::i;:::-;2740:56;;2645:158;;;:::o;3108:154::-;3171:18;3215:40;1274:2;3215:6;:19;;:40;;;;:::i;:::-;3201:54;;3108:154;;;:::o;3583:170::-;3650:22;3702:44;1334:2;3702:6;:19;;:44;;;;:::i;:::-;3684:62;;3583:170;;;:::o;4089:178::-;4159:25;4217:43;1393:2;4217:6;:19;;:43;;;;:::i;:::-;4196:64;;4089:178;;;:::o;4580:162::-;4645:20;4693:42;1451:2;4693:6;:19;;:42;;;;:::i;:::-;4677:58;;4580:162;;;:::o;5104:192::-;5180:31;5250:39;1506:2;5250:6;:19;;:39;;;;:::i;:::-;5223:66;;5104:192;;;:::o;1413:573:16:-;1500:12;1552:6;1528:21;:30;1524:125;;;1608:21;1631:6;1581:57;;;;;;;;;;;;:::i;:::-;;;;;;;;1524:125;1681:1;1662:8;:15;:20;1658:80;;1705:22;;;;;;;;;;;;;;1658:80;1875:4;1864:8;1858:15;1851:4;1841:8;1837:19;1829:6;1821:59;1813:67;;1919:1;1903:18;;:4;:18;;;1899:81;;1944:25;;;;;;;;;;;;;;1899:81;1413:573;;;;;:::o;10804:129:20:-;10871:4;10894:32;10899:3;:10;;10919:5;10911:14;;10894:4;:32::i;:::-;10887:39;;10804:129;;;;:::o;11542:112::-;11602:7;11628:19;11636:3;:10;;11628:7;:19::i;:::-;11621:26;;11542:112;;;:::o;11996:135::-;12067:7;12101:22;12105:3;:10;;12117:5;12101:3;:22::i;:::-;12093:31;;12086:38;;11996:135;;;;:::o;10513::37:-;10563:8;10606:1;10599;10588:13;;;10587:20;;;10583:58;;10616:25;;;;;;;;;;;;;;10583:58;10513:135;;;:::o;2830:222:1:-;2912:29;2944:25;:23;:25::i;:::-;2912:57;;2986:1;:15;;;2979:22;;;;;;;;;;;3011:34;3036:8;3011:24;:34::i;:::-;2902:150;2830:222;:::o;9117:115:20:-;9180:7;9206:19;9214:3;:10;;9206:7;:19::i;:::-;9199:26;;9117:115;;;:::o;1192:159:2:-;1244:24;1313:22;1303:32;;1192:159;:::o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3825:59;;3901:1;:8;;:14;3910:4;3901:14;;;;;;;;;;;:22;;:31;3924:7;3901:31;;;;;;;;;;;;;;;;;;;;;;;;;3894:38;;;3732:207;;;;:::o;8737:170:3:-;8795:30;8870:21;8860:31;;8737:170;:::o;1847:127:2:-;6931:20:3;:18;:20::i;:::-;1929:38:2::1;1954:12;1929:24;:38::i;:::-;1847:127:::0;:::o;25657:383:21:-;25752:1;25728:26;;:12;:26;;;25724:63;;25763:24;;;;;;;;;;;;;;25724:63;25798:23;25824:13;;;;;;;;;;;25798:39;;25870:12;25851:31;;:15;:31;;;25847:86;;25919:13;;;;;;;;;;25891:42;;;;;;;;;;;:::i;:::-;;;;;;;;25847:86;25960:12;25944:13;;:28;;;;;;;;;;;;;;;;;;25987:46;26003:15;26020:12;25987:46;;;;;;;:::i;:::-;;;;;;;;25714:326;25657:383;:::o;8634:156:20:-;8707:4;8730:53;8738:3;:10;;8774:5;8758:23;;8750:32;;8730:7;:53::i;:::-;8723:60;;8634:156;;;;:::o;6566:136:19:-;6640:4;6663:32;6670:3;:10;;6690:3;6682:12;;6663:6;:32::i;:::-;6656:39;;6566:136;;;;:::o;1545:174:1:-;1602:29;1676:27;1666:37;;1545:174;:::o;3716:123:19:-;3788:7;3814:18;:3;:9;;:16;:18::i;:::-;3807:25;;3716:123;;;:::o;4192:191::-;4275:7;4284;4303:11;4317:19;4330:5;4317:3;:9;;:12;;:19;;;;:::i;:::-;4303:33;;4354:3;4359;:11;;:16;4371:3;4359:16;;;;;;;;;;;;4346:30;;;;;4192:191;;;;;:::o;4923:118:20:-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;;5009:25;;4923:118;;;;:::o;4264:129::-;4337:4;4385:1;4360:3;:14;;:21;4375:5;4360:21;;;;;;;;;;;;:26;;4353:33;;4264:129;;;;:::o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;;;;;;;;;;;:::i;:::-;;;;;;;;4464:108;4381:197;;:::o;7270:387::-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7509:4;7475:1;:8;;:14;7484:4;7475:14;;;;;;;;;;;:22;;:31;7498:7;7475:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;7559:12;:10;:12::i;:::-;7532:40;;7550:7;7532:40;;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;7270:387;;;;;:::o;1099:317:36:-;1221:18;1321:4;1313:6;1309:17;1305:22;1296:7;1292:36;1278:50;;1393:4;1386:5;1382:16;1374:6;1370:29;1358:10;1355:45;1341:59;;1099:317;;;;;;:::o;2901:174:19:-;2993:4;3028:5;3009:3;:11;;:16;3021:3;3009:16;;;;;;;;;;;:24;;;;3050:18;3064:3;3050;:9;;:13;;:18;;;;:::i;:::-;3043:25;;2901:174;;;;;:::o;3486:140::-;3573:4;3596:23;3615:3;3596;:9;;:18;;:23;;;;:::i;:::-;3589:30;;3486:140;;;;:::o;4973:274::-;5055:7;5074:13;5090:3;:11;;:16;5102:3;5090:16;;;;;;;;;;;;5074:32;;5129:1;5120:10;;:5;:10;:33;;;;;5135:18;5144:3;5149;5135:8;:18::i;:::-;5134:19;5120:33;5116:103;;;5204:3;5176:32;;;;;;;;;;;:::i;:::-;;;;;;;;5116:103;5235:5;5228:12;;;4973:274;;;;:::o;2241:406:20:-;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;2362:3;:11;;2379:5;2362:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2544:3;:11;;:18;;;;2520:3;:14;;:21;2535:5;2520:21;;;;;;;;;;;:42;;;;2583:4;2576:11;;;;2320:321;2625:5;2618:12;;2241:406;;;;;:::o;5797:130:19:-;5867:16;5902:18;:3;:9;;:16;:18::i;:::-;5895:25;;5797:130;;;:::o;1671:213:33:-;1727:7;595:6:29;230:3;1796:42:33;;1804:7;1796:16;;:42;;1795:72;;;;;:::i;:::-;;;230:3:29;273:17;;:1;:17;;1777:90:33;1770:97;;1671:213;;;:::o;2046:156::-;2101:6;563:7;2165:2;2157:11;;2150:35;2143:42;;2046:156;;;:::o;4085:3600:38:-;4142:14;4168:11;4189:12;4221:1;4216;:6;4212:34;;230:3:29;273:17;;:1;:17;;4224:22:38;;;;;;4212:34;4288:1;4280:9;;4315:1;4309:4;4305:12;4302:109;;;4351:4;4348:1;4344:12;4336:20;;4390:6;4383:14;4373:24;;4302:109;4442:8;4435:4;:15;4431:3060;;;230:3:29;273:17;;:1;:17;;4466:24:38;;4546:1;4573:34;4570:1;4567:41;4564:161;;;4654:7;4650:1;4646:6;4642:20;4631:31;;4700:6;4693:14;4683:24;;4564:161;4756:3;4750:4;4746:14;4743:62;;;4794:7;4786:6;4782:20;4777:3;4773:30;4763:40;;4743:62;4855:7;4846;4842:21;4837:3;4833:31;4822:42;;4894:3;4888:4;4884:14;4881:62;;;4932:7;4924:6;4920:20;4915:3;4911:30;4901:40;;4881:62;4993:7;4984;4980:21;4975:3;4971:31;4960:42;;5032:3;5026:4;5022:14;5019:62;;;5070:7;5062:6;5058:20;5053:3;5049:30;5039:40;;5019:62;5131:7;5122;5118:21;5113:3;5109:31;5098:42;;5170:3;5164:4;5160:14;5157:62;;;5208:7;5200:6;5196:20;5191:3;5187:30;5177:40;;5157:62;5269:7;5260;5256:21;5251:3;5247:31;5236:42;;5308:4;5302;5298:15;5295:63;;;5347:7;5339:6;5335:20;5330:3;5326:30;5316:40;;5295:63;5408:7;5399;5395:21;5390:3;5386:31;5375:42;;5447:4;5441;5437:15;5434:63;;;5486:7;5478:6;5474:20;5469:3;5465:30;5455:40;;5434:63;5547:7;5538;5534:21;5529:3;5525:31;5514:42;;5586:4;5580;5576:15;5573:63;;;5625:7;5617:6;5613:20;5608:3;5604:30;5594:40;;5573:63;5686:7;5677;5673:21;5668:3;5664:31;5653:42;;5725:4;5719;5715:15;5712:63;;;5764:7;5756:6;5752:20;5747:3;5743:30;5733:40;;5712:63;5825:7;5816;5812:21;5807:3;5803:31;5792:42;;5864:5;5858:4;5854:16;5851:64;;;5904:7;5896:6;5892:20;5887:3;5883:30;5873:40;;5851:64;5965:7;5956;5952:21;5947:3;5943:31;5932:42;;6004:5;5998:4;5994:16;5991:64;;;6044:7;6036:6;6032:20;6027:3;6023:30;6013:40;;5991:64;6105:7;6096;6092:21;6087:3;6083:31;6072:42;;6144:5;6138:4;6134:16;6131:64;;;6184:7;6176:6;6172:20;6167:3;6163:30;6153:40;;6131:64;6245:7;6236;6232:21;6227:3;6223:31;6212:42;;6284:5;6278:4;6274:16;6271:64;;;6324:7;6316:6;6312:20;6307:3;6303:30;6293:40;;6271:64;6385:7;6376;6372:21;6367:3;6363:31;6352:42;;6424:6;6418:4;6414:17;6411:65;;;6465:7;6457:6;6453:20;6448:3;6444:30;6434:40;;6411:65;6526:7;6517;6513:21;6508:3;6504:31;6493:42;;6565:6;6559:4;6555:17;6552:65;;;6606:7;6598:6;6594:20;6589:3;6585:30;6575:40;;6552:65;6667:7;6658;6654:21;6649:3;6645:31;6634:42;;6706:6;6700:4;6696:17;6693:65;;;6747:7;6739:6;6735:20;6730:3;6726:30;6716:40;;6693:65;6808:7;6799;6795:21;6790:3;6786:31;6775:42;;6847:6;6841:4;6837:17;6834:65;;;6888:7;6880:6;6876:20;6871:3;6867:30;6857:40;;6834:65;6949:7;6940;6936:21;6931:3;6927:31;6916:42;;6988:7;6982:4;6978:18;6975:66;;;7030:7;7022:6;7018:20;7013:3;7009:30;6999:40;;6975:66;7091:7;7082;7078:21;7073:3;7069:31;7058:42;;7130:7;7124:4;7120:18;7117:66;;;7172:7;7164:6;7160:20;7155:3;7151:30;7141:40;;7117:66;7233:7;7224;7220:21;7215:3;7211:31;7200:42;;7272:7;7266:4;7262:18;7259:66;;;7314:7;7306:6;7302:20;7297:3;7293:30;7283:40;;7259:66;7375:7;7366;7362:21;7357:3;7353:31;7342:42;;7414:7;7408:4;7404:18;7401:66;;;7456:7;7448:6;7444:20;7439:3;7435:30;7425:40;;7401:66;4513:2968;4431:3060;7571:1;7561:6;:11;7557:59;;7611:1;7614;7581:35;;;;;;;;;;;;:::i;:::-;;;;;;;;7557:59;7634:6;:44;;7672:6;7634:44;;;7663:6;7643:17;:26;;;;:::i;:::-;7634:44;7627:51;;;;4085:3600;;;;;:::o;4539:188:36:-;4617:12;4699:11;4689:7;4681:6;4677:20;4673:38;4664:47;;4539:188;;;;:::o;3596:::-;3674:12;3756:11;3746:7;3738:6;3734:20;3730:38;3721:47;;3596:188;;;;:::o;4089:::-;4167:12;4249:11;4239:7;4231:6;4227:20;4223:38;4214:47;;4089:188;;;;:::o;5482:::-;5560:12;5642:11;5632:7;5624:6;5620:20;5616:38;5607:47;;5482:188;;;;:::o;5032:::-;5110:12;5192:11;5182:7;5174:6;5170:20;5166:38;5157:47;;5032:188;;;;:::o;4474:107:20:-;4530:7;4556:3;:11;;:18;;;;4549:25;;4474:107;;;:::o;3774:248:2:-;3847:24;3874:20;:18;:20::i;:::-;3847:47;;3904:16;3923:1;:8;;;;;;;;;;;;3904:27;;3952:8;3941:1;:8;;;:19;;;;;;;;;;;;;;;;;;4006:8;3975:40;;3996:8;3975:40;;;;;;;;;;;;3837:185;;3774:248;:::o;7084:141:3:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;;;;;;;;;;;;;7146:73;7084:141::o;1980:235:2:-;6931:20:3;:18;:20::i;:::-;2100:1:2::1;2076:26;;:12;:26;;::::0;2072:95:::1;;2153:1;2125:31;;;;;;;;;;;:::i;:::-;;;;;;;;2072:95;2176:32;2195:12;2176:18;:32::i;:::-;1980:235:::0;:::o;2815:1368:20:-;2881:4;2991:16;3010:3;:14;;:21;3025:5;3010:21;;;;;;;;;;;;2991:40;;3058:1;3046:8;:13;3042:1135;;3413:18;3445:1;3434:8;:12;;;;:::i;:::-;3413:33;;3460:17;3501:1;3480:3;:11;;:18;;;;:22;;;;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;:35;;;;3872:8;3844:3;:14;;:25;3859:9;3844:25;;;;;;;;;;;:36;;;;3546:349;3517:378;3973:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;3042:1135;4161:5;4154:12;;;2815:1368;;;;;:::o;3243:164:19:-;3323:4;3346:3;:11;;:16;3358:3;3346:16;;;;;;;;;;;3339:23;;;3379:21;3396:3;3379;:9;;:16;;:21;;;;:::i;:::-;3372:28;;3243:164;;;;:::o;6650:115:20:-;6713:7;6739:19;6747:3;:10;;6739:7;:19::i;:::-;6732:26;;6650:115;;;:::o;7107:129::-;7181:7;7207:22;7211:3;:10;;7223:5;7207:3;:22::i;:::-;7200:29;;7107:129;;;;:::o;5930:123::-;6000:4;6023:23;6028:3;:10;;6040:5;6023:4;:23::i;:::-;6016:30;;5930:123;;;;:::o;6431:138::-;6511:4;6534:28;6544:3;:10;;6556:5;6534:9;:28::i;:::-;6527:35;;6431:138;;;;:::o;7776:300::-;7839:16;7867:22;7892:19;7900:3;:10;;7892:7;:19::i;:::-;7867:44;;7921:23;8031:5;8021:15;;8063:6;8056:13;;;;7776:300;;;:::o;8487:120:3:-;8537:4;8560:26;:24;:26::i;:::-;:40;;;;;;;;;;;;8553:47;;8487:120;:::o;6221:129:20:-;6294:4;6317:26;6325:3;:10;;6337:5;6317:7;:26::i;:::-;6310:33;;6221:129;;;;:::o;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:40:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:114::-;1585:6;1619:5;1613:12;1603:22;;1518:114;;;:::o;1638:184::-;1737:11;1771:6;1766:3;1759:19;1811:4;1806:3;1802:14;1787:29;;1638:184;;;;:::o;1828:132::-;1895:4;1918:3;1910:11;;1948:4;1943:3;1939:14;1931:22;;1828:132;;;:::o;1966:77::-;2003:7;2032:5;2021:16;;1966:77;;;:::o;2049:108::-;2126:24;2144:5;2126:24;:::i;:::-;2121:3;2114:37;2049:108;;:::o;2163:179::-;2232:10;2253:46;2295:3;2287:6;2253:46;:::i;:::-;2331:4;2326:3;2322:14;2308:28;;2163:179;;;;:::o;2348:113::-;2418:4;2450;2445:3;2441:14;2433:22;;2348:113;;;:::o;2497:732::-;2616:3;2645:54;2693:5;2645:54;:::i;:::-;2715:86;2794:6;2789:3;2715:86;:::i;:::-;2708:93;;2825:56;2875:5;2825:56;:::i;:::-;2904:7;2935:1;2920:284;2945:6;2942:1;2939:13;2920:284;;;3021:6;3015:13;3048:63;3107:3;3092:13;3048:63;:::i;:::-;3041:70;;3134:60;3187:6;3134:60;:::i;:::-;3124:70;;2980:224;2967:1;2964;2960:9;2955:14;;2920:284;;;2924:14;3220:3;3213:10;;2621:608;;;2497:732;;;;:::o;3235:373::-;3378:4;3416:2;3405:9;3401:18;3393:26;;3465:9;3459:4;3455:20;3451:1;3440:9;3436:17;3429:47;3493:108;3596:4;3587:6;3493:108;:::i;:::-;3485:116;;3235:373;;;;:::o;3614:122::-;3687:24;3705:5;3687:24;:::i;:::-;3680:5;3677:35;3667:63;;3726:1;3723;3716:12;3667:63;3614:122;:::o;3742:139::-;3788:5;3826:6;3813:20;3804:29;;3842:33;3869:5;3842:33;:::i;:::-;3742:139;;;;:::o;3887:329::-;3946:6;3995:2;3983:9;3974:7;3970:23;3966:32;3963:119;;;4001:79;;:::i;:::-;3963:119;4121:1;4146:53;4191:7;4182:6;4171:9;4167:22;4146:53;:::i;:::-;4136:63;;4092:117;3887:329;;;;:::o;4222:126::-;4259:7;4299:42;4292:5;4288:54;4277:65;;4222:126;;;:::o;4354:60::-;4382:3;4403:5;4396:12;;4354:60;;;:::o;4420:142::-;4470:9;4503:53;4521:34;4530:24;4548:5;4530:24;:::i;:::-;4521:34;:::i;:::-;4503:53;:::i;:::-;4490:66;;4420:142;;;:::o;4568:126::-;4618:9;4651:37;4682:5;4651:37;:::i;:::-;4638:50;;4568:126;;;:::o;4700:141::-;4765:9;4798:37;4829:5;4798:37;:::i;:::-;4785:50;;4700:141;;;:::o;4847:161::-;4949:52;4995:5;4949:52;:::i;:::-;4944:3;4937:65;4847:161;;:::o;5014:252::-;5122:4;5160:2;5149:9;5145:18;5137:26;;5173:86;5256:1;5245:9;5241:17;5232:6;5173:86;:::i;:::-;5014:252;;;;:::o;5272:96::-;5309:7;5338:24;5356:5;5338:24;:::i;:::-;5327:35;;5272:96;;;:::o;5374:111::-;5426:7;5455:24;5473:5;5455:24;:::i;:::-;5444:35;;5374:111;;;:::o;5491:152::-;5579:39;5612:5;5579:39;:::i;:::-;5572:5;5569:50;5559:78;;5633:1;5630;5623:12;5559:78;5491:152;:::o;5649:169::-;5710:5;5748:6;5735:20;5726:29;;5764:48;5806:5;5764:48;:::i;:::-;5649:169;;;;:::o;5824:89::-;5860:7;5900:6;5893:5;5889:18;5878:29;;5824:89;;;:::o;5919:120::-;5991:23;6008:5;5991:23;:::i;:::-;5984:5;5981:34;5971:62;;6029:1;6026;6019:12;5971:62;5919:120;:::o;6045:137::-;6090:5;6128:6;6115:20;6106:29;;6144:32;6170:5;6144:32;:::i;:::-;6045:137;;;;:::o;6188:91::-;6224:7;6264:8;6257:5;6253:20;6242:31;;6188:91;;;:::o;6285:120::-;6357:23;6374:5;6357:23;:::i;:::-;6350:5;6347:34;6337:62;;6395:1;6392;6385:12;6337:62;6285:120;:::o;6411:137::-;6456:5;6494:6;6481:20;6472:29;;6510:32;6536:5;6510:32;:::i;:::-;6411:137;;;;:::o;6554:1685::-;6716:6;6724;6732;6740;6748;6756;6764;6772;6780;6788;6837:3;6825:9;6816:7;6812:23;6808:33;6805:120;;;6844:79;;:::i;:::-;6805:120;6964:1;6989:68;7049:7;7040:6;7029:9;7025:22;6989:68;:::i;:::-;6979:78;;6935:132;7106:2;7132:68;7192:7;7183:6;7172:9;7168:22;7132:68;:::i;:::-;7122:78;;7077:133;7249:2;7275:52;7319:7;7310:6;7299:9;7295:22;7275:52;:::i;:::-;7265:62;;7220:117;7376:2;7402:52;7446:7;7437:6;7426:9;7422:22;7402:52;:::i;:::-;7392:62;;7347:117;7503:3;7530:52;7574:7;7565:6;7554:9;7550:22;7530:52;:::i;:::-;7520:62;;7474:118;7631:3;7658:52;7702:7;7693:6;7682:9;7678:22;7658:52;:::i;:::-;7648:62;;7602:118;7759:3;7786:52;7830:7;7821:6;7810:9;7806:22;7786:52;:::i;:::-;7776:62;;7730:118;7887:3;7914:52;7958:7;7949:6;7938:9;7934:22;7914:52;:::i;:::-;7904:62;;7858:118;8015:3;8042:52;8086:7;8077:6;8066:9;8062:22;8042:52;:::i;:::-;8032:62;;7986:118;8143:3;8170:52;8214:7;8205:6;8194:9;8190:22;8170:52;:::i;:::-;8160:62;;8114:118;6554:1685;;;;;;;;;;;;;:::o;8245:77::-;8282:7;8311:5;8300:16;;8245:77;;;:::o;8328:118::-;8415:24;8433:5;8415:24;:::i;:::-;8410:3;8403:37;8328:118;;:::o;8452:222::-;8545:4;8583:2;8572:9;8568:18;8560:26;;8596:71;8664:1;8653:9;8649:17;8640:6;8596:71;:::i;:::-;8452:222;;;;:::o;8680:122::-;8753:24;8771:5;8753:24;:::i;:::-;8746:5;8743:35;8733:63;;8792:1;8789;8782:12;8733:63;8680:122;:::o;8808:139::-;8854:5;8892:6;8879:20;8870:29;;8908:33;8935:5;8908:33;:::i;:::-;8808:139;;;;:::o;8953:329::-;9012:6;9061:2;9049:9;9040:7;9036:23;9032:32;9029:119;;;9067:79;;:::i;:::-;9029:119;9187:1;9212:53;9257:7;9248:6;9237:9;9233:22;9212:53;:::i;:::-;9202:63;;9158:117;8953:329;;;;:::o;9288:359::-;9362:6;9411:2;9399:9;9390:7;9386:23;9382:32;9379:119;;;9417:79;;:::i;:::-;9379:119;9537:1;9562:68;9622:7;9613:6;9602:9;9598:22;9562:68;:::i;:::-;9552:78;;9508:132;9288:359;;;;:::o;9653:677::-;9759:6;9767;9775;9824:2;9812:9;9803:7;9799:23;9795:32;9792:119;;;9830:79;;:::i;:::-;9792:119;9950:1;9975:68;10035:7;10026:6;10015:9;10011:22;9975:68;:::i;:::-;9965:78;;9921:132;10092:2;10118:68;10178:7;10169:6;10158:9;10154:22;10118:68;:::i;:::-;10108:78;;10063:133;10235:2;10261:52;10305:7;10296:6;10285:9;10281:22;10261:52;:::i;:::-;10251:62;;10206:117;9653:677;;;;;:::o;10336:122::-;10409:24;10427:5;10409:24;:::i;:::-;10402:5;10399:35;10389:63;;10448:1;10445;10438:12;10389:63;10336:122;:::o;10464:139::-;10510:5;10548:6;10535:20;10526:29;;10564:33;10591:5;10564:33;:::i;:::-;10464:139;;;;:::o;10609:474::-;10677:6;10685;10734:2;10722:9;10713:7;10709:23;10705:32;10702:119;;;10740:79;;:::i;:::-;10702:119;10860:1;10885:53;10930:7;10921:6;10910:9;10906:22;10885:53;:::i;:::-;10875:63;;10831:117;10987:2;11013:53;11058:7;11049:6;11038:9;11034:22;11013:53;:::i;:::-;11003:63;;10958:118;10609:474;;;;;:::o;11089:116::-;11159:21;11174:5;11159:21;:::i;:::-;11152:5;11149:32;11139:60;;11195:1;11192;11185:12;11139:60;11089:116;:::o;11211:133::-;11254:5;11292:6;11279:20;11270:29;;11308:30;11332:5;11308:30;:::i;:::-;11211:133;;;;:::o;11350:1473::-;11470:6;11478;11486;11494;11502;11510;11518;11526;11534;11583:3;11571:9;11562:7;11558:23;11554:33;11551:120;;;11590:79;;:::i;:::-;11551:120;11710:1;11735:52;11779:7;11770:6;11759:9;11755:22;11735:52;:::i;:::-;11725:62;;11681:116;11836:2;11862:52;11906:7;11897:6;11886:9;11882:22;11862:52;:::i;:::-;11852:62;;11807:117;11963:2;11989:52;12033:7;12024:6;12013:9;12009:22;11989:52;:::i;:::-;11979:62;;11934:117;12090:2;12116:52;12160:7;12151:6;12140:9;12136:22;12116:52;:::i;:::-;12106:62;;12061:117;12217:3;12244:52;12288:7;12279:6;12268:9;12264:22;12244:52;:::i;:::-;12234:62;;12188:118;12345:3;12372:52;12416:7;12407:6;12396:9;12392:22;12372:52;:::i;:::-;12362:62;;12316:118;12473:3;12500:52;12544:7;12535:6;12524:9;12520:22;12500:52;:::i;:::-;12490:62;;12444:118;12601:3;12628:52;12672:7;12663:6;12652:9;12648:22;12628:52;:::i;:::-;12618:62;;12572:118;12729:3;12756:50;12798:7;12789:6;12778:9;12774:22;12756:50;:::i;:::-;12746:60;;12700:116;11350:1473;;;;;;;;;;;:::o;12829:117::-;12938:1;12935;12928:12;12952:117;13061:1;13058;13051:12;13075:117;13184:1;13181;13174:12;13211:552;13268:8;13278:6;13328:3;13321:4;13313:6;13309:17;13305:27;13295:122;;13336:79;;:::i;:::-;13295:122;13449:6;13436:20;13426:30;;13479:18;13471:6;13468:30;13465:117;;;13501:79;;:::i;:::-;13465:117;13615:4;13607:6;13603:17;13591:29;;13669:3;13661:4;13653:6;13649:17;13639:8;13635:32;13632:41;13629:128;;;13676:79;;:::i;:::-;13629:128;13211:552;;;;;:::o;13769:1167::-;13904:6;13912;13920;13928;13936;13944;13993:3;13981:9;13972:7;13968:23;13964:33;13961:120;;;14000:79;;:::i;:::-;13961:120;14120:1;14145:68;14205:7;14196:6;14185:9;14181:22;14145:68;:::i;:::-;14135:78;;14091:132;14262:2;14288:68;14348:7;14339:6;14328:9;14324:22;14288:68;:::i;:::-;14278:78;;14233:133;14405:2;14431:52;14475:7;14466:6;14455:9;14451:22;14431:52;:::i;:::-;14421:62;;14376:117;14532:2;14558:53;14603:7;14594:6;14583:9;14579:22;14558:53;:::i;:::-;14548:63;;14503:118;14688:3;14677:9;14673:19;14660:33;14720:18;14712:6;14709:30;14706:117;;;14742:79;;:::i;:::-;14706:117;14855:64;14911:7;14902:6;14891:9;14887:22;14855:64;:::i;:::-;14837:82;;;;14631:298;13769:1167;;;;;;;;:::o;14942:112::-;14995:7;15024:24;15042:5;15024:24;:::i;:::-;15013:35;;14942:112;;;:::o;15060:154::-;15149:40;15183:5;15149:40;:::i;:::-;15142:5;15139:51;15129:79;;15204:1;15201;15194:12;15129:79;15060:154;:::o;15220:171::-;15282:5;15320:6;15307:20;15298:29;;15336:49;15379:5;15336:49;:::i;:::-;15220:171;;;;:::o;15397:361::-;15472:6;15521:2;15509:9;15500:7;15496:23;15492:32;15489:119;;;15527:79;;:::i;:::-;15489:119;15647:1;15672:69;15733:7;15724:6;15713:9;15709:22;15672:69;:::i;:::-;15662:79;;15618:133;15397:361;;;;:::o;15764:118::-;15851:24;15869:5;15851:24;:::i;:::-;15846:3;15839:37;15764:118;;:::o;15888:222::-;15981:4;16019:2;16008:9;16004:18;15996:26;;16032:71;16100:1;16089:9;16085:17;16076:6;16032:71;:::i;:::-;15888:222;;;;:::o;16116:466::-;16180:6;16188;16237:2;16225:9;16216:7;16212:23;16208:32;16205:119;;;16243:79;;:::i;:::-;16205:119;16363:1;16388:52;16432:7;16423:6;16412:9;16408:22;16388:52;:::i;:::-;16378:62;;16334:116;16489:2;16515:50;16557:7;16548:6;16537:9;16533:22;16515:50;:::i;:::-;16505:60;;16460:115;16116:466;;;;;:::o;16588:118::-;16675:24;16693:5;16675:24;:::i;:::-;16670:3;16663:37;16588:118;;:::o;16712:222::-;16805:4;16843:2;16832:9;16828:18;16820:26;;16856:71;16924:1;16913:9;16909:17;16900:6;16856:71;:::i;:::-;16712:222;;;;:::o;16940:821::-;17054:6;17062;17070;17078;17127:3;17115:9;17106:7;17102:23;17098:33;17095:120;;;17134:79;;:::i;:::-;17095:120;17254:1;17279:68;17339:7;17330:6;17319:9;17315:22;17279:68;:::i;:::-;17269:78;;17225:132;17396:2;17422:68;17482:7;17473:6;17462:9;17458:22;17422:68;:::i;:::-;17412:78;;17367:133;17539:2;17565:52;17609:7;17600:6;17589:9;17585:22;17565:52;:::i;:::-;17555:62;;17510:117;17666:2;17692:52;17736:7;17727:6;17716:9;17712:22;17692:52;:::i;:::-;17682:62;;17637:117;16940:821;;;;;;;:::o;17767:142::-;17833:9;17866:37;17897:5;17866:37;:::i;:::-;17853:50;;17767:142;;;:::o;17915:163::-;18018:53;18065:5;18018:53;:::i;:::-;18013:3;18006:66;17915:163;;:::o;18084:254::-;18193:4;18231:2;18220:9;18216:18;18208:26;;18244:87;18328:1;18317:9;18313:17;18304:6;18244:87;:::i;:::-;18084:254;;;;:::o;18344:534::-;18442:6;18450;18499:2;18487:9;18478:7;18474:23;18470:32;18467:119;;;18505:79;;:::i;:::-;18467:119;18625:1;18650:68;18710:7;18701:6;18690:9;18686:22;18650:68;:::i;:::-;18640:78;;18596:132;18767:2;18793:68;18853:7;18844:6;18833:9;18829:22;18793:68;:::i;:::-;18783:78;;18738:133;18344:534;;;;;:::o;18884:149::-;18986:6;19020:5;19014:12;19004:22;;18884:149;;;:::o;19039:219::-;19173:11;19207:6;19202:3;19195:19;19247:4;19242:3;19238:14;19223:29;;19039:219;;;;:::o;19264:167::-;19366:4;19389:3;19381:11;;19419:4;19414:3;19410:14;19402:22;;19264:167;;;:::o;19437:105::-;19512:23;19529:5;19512:23;:::i;:::-;19507:3;19500:36;19437:105;;:::o;19548:153::-;19641:53;19688:5;19641:53;:::i;:::-;19636:3;19629:66;19548:153;;:::o;19707:99::-;19778:21;19793:5;19778:21;:::i;:::-;19773:3;19766:34;19707:99;;:::o;19894:895::-;20051:4;20046:3;20042:14;20141:4;20134:5;20130:16;20124:23;20160:61;20215:4;20210:3;20206:14;20192:12;20160:61;:::i;:::-;20066:165;20315:4;20308:5;20304:16;20298:23;20334:79;20407:4;20402:3;20398:14;20384:12;20334:79;:::i;:::-;20241:182;20515:4;20508:5;20504:16;20498:23;20534:57;20585:4;20580:3;20576:14;20562:12;20534:57;:::i;:::-;20433:168;20696:4;20689:5;20685:16;20679:23;20715:57;20766:4;20761:3;20757:14;20743:12;20715:57;:::i;:::-;20611:171;20020:769;19894:895;;:::o;20795:319::-;20934:10;20955:116;21067:3;21059:6;20955:116;:::i;:::-;21103:4;21098:3;21094:14;21080:28;;20795:319;;;;:::o;21120:148::-;21225:4;21257;21252:3;21248:14;21240:22;;21120:148;;;:::o;21360:1012::-;21549:3;21578:89;21661:5;21578:89;:::i;:::-;21683:121;21797:6;21792:3;21683:121;:::i;:::-;21676:128;;21828:91;21913:5;21828:91;:::i;:::-;21942:7;21973:1;21958:389;21983:6;21980:1;21977:13;21958:389;;;22059:6;22053:13;22086:133;22215:3;22200:13;22086:133;:::i;:::-;22079:140;;22242:95;22330:6;22242:95;:::i;:::-;22232:105;;22018:329;22005:1;22002;21998:9;21993:14;;21958:389;;;21962:14;22363:3;22356:10;;21554:818;;;21360:1012;;;;:::o;22378:513::-;22591:4;22629:2;22618:9;22614:18;22606:26;;22678:9;22672:4;22668:20;22664:1;22653:9;22649:17;22642:47;22706:178;22879:4;22870:6;22706:178;:::i;:::-;22698:186;;22378:513;;;;:::o;22897:817::-;23009:6;23017;23025;23033;23082:3;23070:9;23061:7;23057:23;23053:33;23050:120;;;23089:79;;:::i;:::-;23050:120;23209:1;23234:68;23294:7;23285:6;23274:9;23270:22;23234:68;:::i;:::-;23224:78;;23180:132;23351:2;23377:68;23437:7;23428:6;23417:9;23413:22;23377:68;:::i;:::-;23367:78;;23322:133;23494:2;23520:52;23564:7;23555:6;23544:9;23540:22;23520:52;:::i;:::-;23510:62;;23465:117;23621:2;23647:50;23689:7;23680:6;23669:9;23665:22;23647:50;:::i;:::-;23637:60;;23592:115;22897:817;;;;;;;:::o;23720:679::-;23827:6;23835;23843;23892:2;23880:9;23871:7;23867:23;23863:32;23860:119;;;23898:79;;:::i;:::-;23860:119;24018:1;24043:68;24103:7;24094:6;24083:9;24079:22;24043:68;:::i;:::-;24033:78;;23989:132;24160:2;24186:68;24246:7;24237:6;24226:9;24222:22;24186:68;:::i;:::-;24176:78;;24131:133;24303:2;24329:53;24374:7;24365:6;24354:9;24350:22;24329:53;:::i;:::-;24319:63;;24274:118;23720:679;;;;;:::o;24487:905::-;24654:4;24649:3;24645:14;24744:4;24737:5;24733:16;24727:23;24763:61;24818:4;24813:3;24809:14;24795:12;24763:61;:::i;:::-;24669:165;24918:4;24911:5;24907:16;24901:23;24937:79;25010:4;25005:3;25001:14;24987:12;24937:79;:::i;:::-;24844:182;25118:4;25111:5;25107:16;25101:23;25137:57;25188:4;25183:3;25179:14;25165:12;25137:57;:::i;:::-;25036:168;25299:4;25292:5;25288:16;25282:23;25318:57;25369:4;25364:3;25360:14;25346:12;25318:57;:::i;:::-;25214:171;24623:769;24487:905;;:::o;25398:363::-;25561:4;25599:3;25588:9;25584:19;25576:27;;25613:141;25751:1;25740:9;25736:17;25727:6;25613:141;:::i;:::-;25398:363;;;;:::o;25767:985::-;26050:4;26088:3;26077:9;26073:19;26065:27;;26102:71;26170:1;26159:9;26155:17;26146:6;26102:71;:::i;:::-;26183:72;26251:2;26240:9;26236:18;26227:6;26183:72;:::i;:::-;26265;26333:2;26322:9;26318:18;26309:6;26265:72;:::i;:::-;26347;26415:2;26404:9;26400:18;26391:6;26347:72;:::i;:::-;26429:73;26497:3;26486:9;26482:19;26473:6;26429:73;:::i;:::-;26512;26580:3;26569:9;26565:19;26556:6;26512:73;:::i;:::-;26595;26663:3;26652:9;26648:19;26639:6;26595:73;:::i;:::-;26678:67;26740:3;26729:9;26725:19;26716:6;26678:67;:::i;:::-;25767:985;;;;;;;;;;;:::o;26758:765::-;26844:6;26852;26860;26868;26917:3;26905:9;26896:7;26892:23;26888:33;26885:120;;;26924:79;;:::i;:::-;26885:120;27044:1;27069:53;27114:7;27105:6;27094:9;27090:22;27069:53;:::i;:::-;27059:63;;27015:117;27171:2;27197:53;27242:7;27233:6;27222:9;27218:22;27197:53;:::i;:::-;27187:63;;27142:118;27299:2;27325:53;27370:7;27361:6;27350:9;27346:22;27325:53;:::i;:::-;27315:63;;27270:118;27427:2;27453:53;27498:7;27489:6;27478:9;27474:22;27453:53;:::i;:::-;27443:63;;27398:118;26758:765;;;;;;;:::o;27529:327::-;27587:6;27636:2;27624:9;27615:7;27611:23;27607:32;27604:119;;;27642:79;;:::i;:::-;27604:119;27762:1;27787:52;27831:7;27822:6;27811:9;27807:22;27787:52;:::i;:::-;27777:62;;27733:116;27529:327;;;;:::o;27862:329::-;27921:6;27970:2;27958:9;27949:7;27945:23;27941:32;27938:119;;;27976:79;;:::i;:::-;27938:119;28096:1;28121:53;28166:7;28157:6;28146:9;28142:22;28121:53;:::i;:::-;28111:63;;28067:117;27862:329;;;;:::o;28197:180::-;28245:77;28242:1;28235:88;28342:4;28339:1;28332:15;28366:4;28363:1;28356:15;28383:180;28431:77;28428:1;28421:88;28528:4;28525:1;28518:15;28552:4;28549:1;28542:15;28569:180;28617:77;28614:1;28607:88;28714:4;28711:1;28704:15;28738:4;28735:1;28728:15;28755:233;28794:3;28817:24;28835:5;28817:24;:::i;:::-;28808:33;;28863:66;28856:5;28853:77;28850:103;;28933:18;;:::i;:::-;28850:103;28980:1;28973:5;28969:13;28962:20;;28755:233;;;:::o;28994:140::-;29043:9;29076:52;29094:33;29103:23;29120:5;29103:23;:::i;:::-;29094:33;:::i;:::-;29076:52;:::i;:::-;29063:65;;28994:140;;;:::o;29140:129::-;29226:36;29256:5;29226:36;:::i;:::-;29221:3;29214:49;29140:129;;:::o;29275:500::-;29453:4;29491:2;29480:9;29476:18;29468:26;;29504:86;29587:1;29576:9;29572:17;29563:6;29504:86;:::i;:::-;29600:87;29683:2;29672:9;29668:18;29659:6;29600:87;:::i;:::-;29697:71;29764:2;29753:9;29749:18;29740:6;29697:71;:::i;:::-;29275:500;;;;;;:::o;29781:115::-;29866:23;29883:5;29866:23;:::i;:::-;29861:3;29854:36;29781:115;;:::o;29902:::-;29987:23;30004:5;29987:23;:::i;:::-;29982:3;29975:36;29902:115;;:::o;30023:858::-;30270:4;30308:3;30297:9;30293:19;30285:27;;30322:69;30388:1;30377:9;30373:17;30364:6;30322:69;:::i;:::-;30401:70;30467:2;30456:9;30452:18;30443:6;30401:70;:::i;:::-;30481;30547:2;30536:9;30532:18;30523:6;30481:70;:::i;:::-;30561;30627:2;30616:9;30612:18;30603:6;30561:70;:::i;:::-;30641:71;30707:3;30696:9;30692:19;30683:6;30641:71;:::i;:::-;30722;30788:3;30777:9;30773:19;30764:6;30722:71;:::i;:::-;30803;30869:3;30858:9;30854:19;30845:6;30803:71;:::i;:::-;30023:858;;;;;;;;;;:::o;30887:220::-;30979:4;31017:2;31006:9;31002:18;30994:26;;31030:70;31097:1;31086:9;31082:17;31073:6;31030:70;:::i;:::-;30887:220;;;;:::o;31113:140::-;31162:9;31195:52;31213:33;31222:23;31239:5;31222:23;:::i;:::-;31213:33;:::i;:::-;31195:52;:::i;:::-;31182:65;;31113:140;;;:::o;31259:129::-;31345:36;31375:5;31345:36;:::i;:::-;31340:3;31333:49;31259:129;;:::o;31394:872::-;31648:4;31686:3;31675:9;31671:19;31663:27;;31700:70;31767:1;31756:9;31752:17;31743:6;31700:70;:::i;:::-;31780:71;31847:2;31836:9;31832:18;31823:6;31780:71;:::i;:::-;31861;31928:2;31917:9;31913:18;31904:6;31861:71;:::i;:::-;31942;32009:2;31998:9;31994:18;31985:6;31942:71;:::i;:::-;32023:72;32090:3;32079:9;32075:19;32066:6;32023:72;:::i;:::-;32105;32172:3;32161:9;32157:19;32148:6;32105:72;:::i;:::-;32187;32254:3;32243:9;32239:19;32230:6;32187:72;:::i;:::-;31394:872;;;;;;;;;;:::o;32272:330::-;32392:4;32430:2;32419:9;32415:18;32407:26;;32443:71;32511:1;32500:9;32496:17;32487:6;32443:71;:::i;:::-;32524;32591:2;32580:9;32576:18;32567:6;32524:71;:::i;:::-;32272:330;;;;;:::o;32608:965::-;32881:4;32919:3;32908:9;32904:19;32896:27;;32933:69;32999:1;32988:9;32984:17;32975:6;32933:69;:::i;:::-;33012:70;33078:2;33067:9;33063:18;33054:6;33012:70;:::i;:::-;33092;33158:2;33147:9;33143:18;33134:6;33092:70;:::i;:::-;33172;33238:2;33227:9;33223:18;33214:6;33172:70;:::i;:::-;33252:71;33318:3;33307:9;33303:19;33294:6;33252:71;:::i;:::-;33333;33399:3;33388:9;33384:19;33375:6;33333:71;:::i;:::-;33414;33480:3;33469:9;33465:19;33456:6;33414:71;:::i;:::-;33495;33561:3;33550:9;33546:19;33537:6;33495:71;:::i;:::-;32608:965;;;;;;;;;;;:::o;33579:94::-;33612:8;33660:5;33656:2;33652:14;33631:35;;33579:94;;;:::o;33679:::-;33718:7;33747:20;33761:5;33747:20;:::i;:::-;33736:31;;33679:94;;;:::o;33779:100::-;33818:7;33847:26;33867:5;33847:26;:::i;:::-;33836:37;;33779:100;;;:::o;33885:200::-;34005:73;34025:52;34071:5;34025:52;:::i;:::-;34005:73;:::i;:::-;34000:3;33993:86;33885:200;;:::o;34091:96::-;34125:8;34174:5;34169:3;34165:15;34144:36;;34091:96;;;:::o;34193:94::-;34231:7;34260:21;34275:5;34260:21;:::i;:::-;34249:32;;34193:94;;;:::o;34293:153::-;34396:43;34415:23;34432:5;34415:23;:::i;:::-;34396:43;:::i;:::-;34391:3;34384:56;34293:153;;:::o;34452:593::-;34648:3;34663:90;34749:3;34740:6;34663:90;:::i;:::-;34778:2;34773:3;34769:12;34762:19;;34791:90;34877:3;34868:6;34791:90;:::i;:::-;34906:2;34901:3;34897:12;34890:19;;34919:73;34988:3;34979:6;34919:73;:::i;:::-;35017:1;35012:3;35008:11;35001:18;;35036:3;35029:10;;34452:593;;;;;;:::o;35051:98::-;35102:6;35136:5;35130:12;35120:22;;35051:98;;;:::o;35155:168::-;35238:11;35272:6;35267:3;35260:19;35312:4;35307:3;35303:14;35288:29;;35155:168;;;;:::o;35329:246::-;35410:1;35420:113;35434:6;35431:1;35428:13;35420:113;;;35519:1;35514:3;35510:11;35504:18;35500:1;35495:3;35491:11;35484:39;35456:2;35453:1;35449:10;35444:15;;35420:113;;;35567:1;35558:6;35553:3;35549:16;35542:27;35391:184;35329:246;;;:::o;35581:102::-;35622:6;35673:2;35669:7;35664:2;35657:5;35653:14;35649:28;35639:38;;35581:102;;;:::o;35689:373::-;35775:3;35803:38;35835:5;35803:38;:::i;:::-;35857:70;35920:6;35915:3;35857:70;:::i;:::-;35850:77;;35936:65;35994:6;35989:3;35982:4;35975:5;35971:16;35936:65;:::i;:::-;36026:29;36048:6;36026:29;:::i;:::-;36021:3;36017:39;36010:46;;35779:283;35689:373;;;;:::o;36068:807::-;36319:4;36357:3;36346:9;36342:19;36334:27;;36371:71;36439:1;36428:9;36424:17;36415:6;36371:71;:::i;:::-;36452:87;36535:2;36524:9;36520:18;36511:6;36452:87;:::i;:::-;36549;36632:2;36621:9;36617:18;36608:6;36549:87;:::i;:::-;36646:70;36712:2;36701:9;36697:18;36688:6;36646:70;:::i;:::-;36764:9;36758:4;36754:20;36748:3;36737:9;36733:19;36726:49;36792:76;36863:4;36854:6;36792:76;:::i;:::-;36784:84;;36068:807;;;;;;;;:::o;36881:147::-;36982:11;37019:3;37004:18;;36881:147;;;;:::o;37034:386::-;37138:3;37166:38;37198:5;37166:38;:::i;:::-;37220:88;37301:6;37296:3;37220:88;:::i;:::-;37213:95;;37317:65;37375:6;37370:3;37363:4;37356:5;37352:16;37317:65;:::i;:::-;37407:6;37402:3;37398:16;37391:23;;37142:278;37034:386;;;;:::o;37426:427::-;37602:3;37624:93;37713:3;37704:6;37624:93;:::i;:::-;37617:100;;37734:93;37823:3;37814:6;37734:93;:::i;:::-;37727:100;;37844:3;37837:10;;37426:427;;;;;:::o;37859:194::-;37899:4;37919:20;37937:1;37919:20;:::i;:::-;37914:25;;37953:20;37971:1;37953:20;:::i;:::-;37948:25;;37997:1;37994;37990:9;37982:17;;38021:1;38015:4;38012:11;38009:37;;;38026:18;;:::i;:::-;38009:37;37859:194;;;;:::o;38059:364::-;38196:4;38234:2;38223:9;38219:18;38211:26;;38247:87;38331:1;38320:9;38316:17;38307:6;38247:87;:::i;:::-;38344:72;38412:2;38401:9;38397:18;38388:6;38344:72;:::i;:::-;38059:364;;;;;:::o;38429:332::-;38550:4;38588:2;38577:9;38573:18;38565:26;;38601:71;38669:1;38658:9;38654:17;38645:6;38601:71;:::i;:::-;38682:72;38750:2;38739:9;38735:18;38726:6;38682:72;:::i;:::-;38429:332;;;;;:::o;38767:85::-;38812:7;38841:5;38830:16;;38767:85;;;:::o;38858:158::-;38916:9;38949:61;38967:42;38976:32;39002:5;38976:32;:::i;:::-;38967:42;:::i;:::-;38949:61;:::i;:::-;38936:74;;38858:158;;;:::o;39022:147::-;39117:45;39156:5;39117:45;:::i;:::-;39112:3;39105:58;39022:147;;:::o;39175:348::-;39304:4;39342:2;39331:9;39327:18;39319:26;;39355:79;39431:1;39420:9;39416:17;39407:6;39355:79;:::i;:::-;39444:72;39512:2;39501:9;39497:18;39488:6;39444:72;:::i;:::-;39175:348;;;;;:::o;39529:85::-;39574:7;39603:5;39592:16;;39529:85;;;:::o;39620:101::-;39656:7;39696:18;39689:5;39685:30;39674:41;;39620:101;;;:::o;39727:156::-;39784:9;39817:60;39834:42;39843:32;39869:5;39843:32;:::i;:::-;39834:42;:::i;:::-;39817:60;:::i;:::-;39804:73;;39727:156;;;:::o;39889:145::-;39983:44;40021:5;39983:44;:::i;:::-;39978:3;39971:57;39889:145;;:::o;40040:236::-;40140:4;40178:2;40167:9;40163:18;40155:26;;40191:78;40266:1;40255:9;40251:17;40242:6;40191:78;:::i;:::-;40040:236;;;;:::o;40282:143::-;40339:5;40370:6;40364:13;40355:22;;40386:33;40413:5;40386:33;:::i;:::-;40282:143;;;;:::o;40431:351::-;40501:6;40550:2;40538:9;40529:7;40525:23;40521:32;40518:119;;;40556:79;;:::i;:::-;40518:119;40676:1;40701:64;40757:7;40748:6;40737:9;40733:22;40701:64;:::i;:::-;40691:74;;40647:128;40431:351;;;;:::o;40788:419::-;40927:4;40965:2;40954:9;40950:18;40942:26;;40978:71;41046:1;41035:9;41031:17;41022:6;40978:71;:::i;:::-;41096:9;41090:4;41086:20;41081:2;41070:9;41066:18;41059:48;41124:76;41195:4;41186:6;41124:76;:::i;:::-;41116:84;;40788:419;;;;;:::o;41213:332::-;41334:4;41372:2;41361:9;41357:18;41349:26;;41385:71;41453:1;41442:9;41438:17;41429:6;41385:71;:::i;:::-;41466:72;41534:2;41523:9;41519:18;41510:6;41466:72;:::i;:::-;41213:332;;;;;:::o;41551:::-;41672:4;41710:2;41699:9;41695:18;41687:26;;41723:71;41791:1;41780:9;41776:17;41767:6;41723:71;:::i;:::-;41804:72;41872:2;41861:9;41857:18;41848:6;41804:72;:::i;:::-;41551:332;;;;;:::o;41889:180::-;41937:77;41934:1;41927:88;42034:4;42031:1;42024:15;42058:4;42055:1;42048:15;42075:76;42111:7;42140:5;42129:16;;42075:76;;;:::o;42157:115::-;42242:23;42259:5;42242:23;:::i;:::-;42237:3;42230:36;42157:115;;:::o;42278:328::-;42397:4;42435:2;42424:9;42420:18;42412:26;;42448:71;42516:1;42505:9;42501:17;42492:6;42448:71;:::i;:::-;42529:70;42595:2;42584:9;42580:18;42571:6;42529:70;:::i;:::-;42278:328;;;;;:::o;42612:185::-;42652:1;42669:20;42687:1;42669:20;:::i;:::-;42664:25;;42703:20;42721:1;42703:20;:::i;:::-;42698:25;;42742:1;42732:35;;42747:18;;:::i;:::-;42732:35;42789:1;42786;42782:9;42777:14;;42612:185;;;;:::o;42803:180::-;42851:77;42848:1;42841:88;42948:4;42945:1;42938:15;42972:4;42969:1;42962:15" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "5991000", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "DEFAULT_ADMIN_ROLE()": "485", + "LB_HOOKS_MANAGER_ROLE()": "460", + "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE()": "436", + "acceptOwnership()": "infinite", + "addQuoteAsset(address)": "infinite", + "createLBPair(address,address,uint24,uint16)": "infinite", + "forceDecay(address)": "infinite", + "getAllBinSteps()": "infinite", + "getAllLBPairs(address,address)": "infinite", + "getFeeRecipient()": "2605", + "getFlashLoanFee()": "2586", + "getLBPairAtIndex(uint256)": "infinite", + "getLBPairBeacon()": "2648", + "getLBPairInformation(address,address,uint256)": "infinite", + "getMaxFlashLoanFee()": "399", + "getMinBinStep()": "378", + "getNumberOfLBPairs()": "2574", + "getNumberOfQuoteAssets()": "2579", + "getOpenBinSteps()": "infinite", + "getPauserRole()": "421", + "getPreset(uint256)": "infinite", + "getQuoteAssetAtIndex(uint256)": "infinite", + "getRoleAdmin(bytes32)": "infinite", + "grantRole(bytes32,address)": "infinite", + "hasRole(bytes32,address)": "3361", + "initialize(address,address,uint256,address)": "infinite", + "isQuoteAsset(address)": "infinite", + "owner()": "2656", + "pendingOwner()": "2633", + "removeLBHooksOnPair(address,address,uint16)": "infinite", + "removePreset(uint16)": "infinite", + "removeQuoteAsset(address)": "infinite", + "renounceOwnership()": "infinite", + "renounceRole(bytes32,address)": "infinite", + "revokeRole(bytes32,address)": "infinite", + "setFeeRecipient(address)": "infinite", + "setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "infinite", + "setFlashLoanFee(uint256)": "infinite", + "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": "infinite", + "setLBPairIgnored(address,address,uint16,bool)": "infinite", + "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": "infinite", + "setPresetOpenState(uint16,bool)": "infinite", + "supportsInterface(bytes4)": "764", + "transferOwnership(address)": "infinite" + }, + "internal": { + "_getLBPairInformation(contract IERC20,contract IERC20,uint256)": "infinite", + "_grantRole(bytes32,address)": "infinite", + "_isPresetOpen(bytes32)": "infinite", + "_setFeeRecipient(address)": "infinite", + "_setLBHooksParametersOnPair(contract IERC20,contract IERC20,uint16,bytes32,bytes memory)": "infinite", + "_sortTokens(contract IERC20,contract IERC20)": "107" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "80" + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 1541, + "end": 29334, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "CALLVALUE", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "DUP1", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "PUSH [tag]", + "source": 21, + "value": "1" + }, + { + "begin": 3448, + "end": 3501, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 3448, + "end": 3501, + "name": "DUP1", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "REVERT", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "tag", + "source": 21, + "value": "1" + }, + { + "begin": 3448, + "end": 3501, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 3448, + "end": 3501, + "name": "POP", + "source": 21 + }, + { + "begin": 3472, + "end": 3494, + "name": "PUSH [tag]", + "source": 21, + "value": "4" + }, + { + "begin": 3472, + "end": 3492, + "name": "PUSH [tag]", + "source": 21, + "value": "5" + }, + { + "begin": 3472, + "end": 3492, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 3472, + "end": 3492, + "name": "SHL", + "source": 21 + }, + { + "begin": 3472, + "end": 3494, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 3472, + "end": 3494, + "name": "SHR", + "source": 21 + }, + { + "begin": 3472, + "end": 3494, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 3472, + "end": 3494, + "name": "tag", + "source": 21, + "value": "4" + }, + { + "begin": 3472, + "end": 3494, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "6" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 7711, + "end": 8133, + "name": "tag", + "source": 3, + "value": "5" + }, + { + "begin": 7711, + "end": 8133, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 7826, + "end": 7856, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 7859, + "end": 7885, + "name": "PUSH [tag]", + "source": 3, + "value": "8" + }, + { + "begin": 7859, + "end": 7883, + "name": "PUSH [tag]", + "source": 3, + "value": "9" + }, + { + "begin": 7859, + "end": 7883, + "name": "PUSH", + "source": 3, + "value": "20" + }, + { + "begin": 7859, + "end": 7883, + "name": "SHL", + "source": 3 + }, + { + "begin": 7859, + "end": 7885, + "name": "PUSH", + "source": 3, + "value": "20" + }, + { + "begin": 7859, + "end": 7885, + "name": "SHR", + "source": 3 + }, + { + "begin": 7859, + "end": 7885, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 7859, + "end": 7885, + "name": "tag", + "source": 3, + "value": "8" + }, + { + "begin": 7859, + "end": 7885, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 7826, + "end": 7885, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7826, + "end": 7885, + "name": "POP", + "source": 3 + }, + { + "begin": 7900, + "end": 7901, + "name": "DUP1", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 7900, + "end": 7915, + "name": "ADD", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 3, + "value": "8" + }, + { + "begin": 7900, + "end": 7915, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 7900, + "end": 7915, + "name": "EXP", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "DIV", + "source": 3 + }, + { + "begin": 7900, + "end": 7915, + "name": "PUSH", + "source": 3, + "value": "FF" + }, + { + "begin": 7900, + "end": 7915, + "name": "AND", + "source": 3 + }, + { + "begin": 7896, + "end": 7972, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 7896, + "end": 7972, + "name": "PUSH [tag]", + "source": 3, + "value": "10" + }, + { + "begin": 7896, + "end": 7972, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 7938, + "end": 7961, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 3, + "value": "F92EE8A900000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 7938, + "end": 7961, + "name": "DUP2", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "MSTORE", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 3, + "value": "4" + }, + { + "begin": 7938, + "end": 7961, + "name": "ADD", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 7938, + "end": 7961, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "DUP1", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "SWAP2", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "SUB", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7938, + "end": 7961, + "name": "REVERT", + "source": 3 + }, + { + "begin": 7896, + "end": 7972, + "name": "tag", + "source": 3, + "value": "10" + }, + { + "begin": 7896, + "end": 7972, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 8003, + "end": 8019, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7985, + "end": 8019, + "name": "DUP1", + "source": 3 + }, + { + "begin": 7985, + "end": 8019, + "name": "AND", + "source": 3 + }, + { + "begin": 7985, + "end": 7986, + "name": "DUP2", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 7985, + "end": 7999, + "name": "ADD", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 7985, + "end": 7999, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 7985, + "end": 7999, + "name": "EXP", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "DIV", + "source": 3 + }, + { + "begin": 7985, + "end": 7999, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7985, + "end": 7999, + "name": "AND", + "source": 3 + }, + { + "begin": 7985, + "end": 8019, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7985, + "end": 8019, + "name": "AND", + "source": 3 + }, + { + "begin": 7985, + "end": 8019, + "name": "EQ", + "source": 3 + }, + { + "begin": 7981, + "end": 8127, + "name": "PUSH [tag]", + "source": 3, + "value": "11" + }, + { + "begin": 7981, + "end": 8127, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 8052, + "end": 8068, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8035, + "end": 8036, + "name": "DUP2", + "source": 3 + }, + { + "begin": 8035, + "end": 8049, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 8035, + "end": 8049, + "name": "ADD", + "source": 3 + }, + { + "begin": 8035, + "end": 8049, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 8035, + "end": 8068, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 8035, + "end": 8068, + "name": "EXP", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "DUP2", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "DUP2", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8035, + "end": 8068, + "name": "MUL", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "NOT", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "AND", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "DUP4", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8035, + "end": 8068, + "name": "AND", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "MUL", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "OR", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "SSTORE", + "source": 3 + }, + { + "begin": 8035, + "end": 8068, + "name": "POP", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH", + "source": 3, + "value": "C7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2" + }, + { + "begin": 8099, + "end": 8115, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 8087, + "end": 8116, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH [tag]", + "source": 3, + "value": "12" + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP2", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH [tag]", + "source": 3, + "value": "13" + }, + { + "begin": 8087, + "end": 8116, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "tag", + "source": 3, + "value": "12" + }, + { + "begin": 8087, + "end": 8116, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 8087, + "end": 8116, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "DUP1", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP2", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "SUB", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8087, + "end": 8116, + "name": "LOG1", + "source": 3 + }, + { + "begin": 7981, + "end": 8127, + "name": "tag", + "source": 3, + "value": "11" + }, + { + "begin": 7981, + "end": 8127, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 7760, + "end": 8133, + "name": "POP", + "source": 3 + }, + { + "begin": 7711, + "end": 8133, + "jumpType": "[out]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 8737, + "end": 8907, + "name": "tag", + "source": 3, + "value": "9" + }, + { + "begin": 8737, + "end": 8907, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 8795, + "end": 8825, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 8870, + "end": 8891, + "name": "PUSH", + "source": 3, + "value": "F0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + { + "begin": 8860, + "end": 8891, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8860, + "end": 8891, + "name": "POP", + "source": 3 + }, + { + "begin": 8737, + "end": 8907, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8737, + "end": 8907, + "jumpType": "[out]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 7, + "end": 108, + "name": "tag", + "source": 40, + "value": "15" + }, + { + "begin": 7, + "end": 108, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 43, + "end": 50, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 83, + "end": 101, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 76, + "end": 81, + "name": "DUP3", + "source": 40 + }, + { + "begin": 72, + "end": 102, + "name": "AND", + "source": 40 + }, + { + "begin": 61, + "end": 102, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 61, + "end": 102, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 108, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7, + "end": 108, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7, + "end": 108, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 108, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 114, + "end": 229, + "name": "tag", + "source": 40, + "value": "16" + }, + { + "begin": 114, + "end": 229, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 199, + "end": 222, + "name": "PUSH [tag]", + "source": 40, + "value": "20" + }, + { + "begin": 216, + "end": 221, + "name": "DUP2", + "source": 40 + }, + { + "begin": 199, + "end": 222, + "name": "PUSH [tag]", + "source": 40, + "value": "15" + }, + { + "begin": 199, + "end": 222, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 199, + "end": 222, + "name": "tag", + "source": 40, + "value": "20" + }, + { + "begin": 199, + "end": 222, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 194, + "end": 197, + "name": "DUP3", + "source": 40 + }, + { + "begin": 187, + "end": 223, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 114, + "end": 229, + "name": "POP", + "source": 40 + }, + { + "begin": 114, + "end": 229, + "name": "POP", + "source": 40 + }, + { + "begin": 114, + "end": 229, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 235, + "end": 453, + "name": "tag", + "source": 40, + "value": "13" + }, + { + "begin": 235, + "end": 453, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 326, + "end": 330, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 364, + "end": 366, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 353, + "end": 362, + "name": "DUP3", + "source": 40 + }, + { + "begin": 349, + "end": 367, + "name": "ADD", + "source": 40 + }, + { + "begin": 341, + "end": 367, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 341, + "end": 367, + "name": "POP", + "source": 40 + }, + { + "begin": 377, + "end": 446, + "name": "PUSH [tag]", + "source": 40, + "value": "22" + }, + { + "begin": 443, + "end": 444, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 432, + "end": 441, + "name": "DUP4", + "source": 40 + }, + { + "begin": 428, + "end": 445, + "name": "ADD", + "source": 40 + }, + { + "begin": 419, + "end": 425, + "name": "DUP5", + "source": 40 + }, + { + "begin": 377, + "end": 446, + "name": "PUSH [tag]", + "source": 40, + "value": "16" + }, + { + "begin": 377, + "end": 446, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 377, + "end": 446, + "name": "tag", + "source": 40, + "value": "22" + }, + { + "begin": 377, + "end": 446, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 235, + "end": 453, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 235, + "end": 453, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 235, + "end": 453, + "name": "POP", + "source": 40 + }, + { + "begin": 235, + "end": 453, + "name": "POP", + "source": 40 + }, + { + "begin": 235, + "end": 453, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "6" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH #[$]", + "source": 21, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [$]", + "source": 21, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 1541, + "end": 29334, + "name": "CODECOPY", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 1541, + "end": 29334, + "name": "RETURN", + "source": 21 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220408f674abc88915a00048d86f4f02c24344fb5b67b185d05ce64c6c9aedc7e7c64736f6c63430008140033", + ".code": [ + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "80" + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 1541, + "end": 29334, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "CALLVALUE", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "1" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "REVERT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "1" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "POP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 1541, + "end": 29334, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "LT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 1541, + "end": 29334, + "name": "CALLDATALOAD", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "E0" + }, + { + "begin": 1541, + "end": 29334, + "name": "SHR", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "701AB8C1" + }, + { + "begin": 1541, + "end": 29334, + "name": "GT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "47" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "AABC4B3C" + }, + { + "begin": 1541, + "end": 29334, + "name": "GT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "48" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "E203A31F" + }, + { + "begin": 1541, + "end": 29334, + "name": "GT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "49" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "E203A31F" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "41" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "E30C3978" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "42" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "E74B981B" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "43" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "E92D0D5D" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "44" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "F2FDE38B" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "45" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "FD90C2BE" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "46" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "49" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "AABC4B3C" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "36" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "BE203094" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "37" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "C1B931BE" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "38" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "D547741F" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "39" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "DDBFD941" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "40" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "48" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "80C5061E" + }, + { + "begin": 1541, + "end": 29334, + "name": "GT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "50" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "80C5061E" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "30" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "8CE9AA1C" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "31" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "8DA5CB5B" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "32" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "91D14854" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "33" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "A0A0EA39" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "34" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "A217FDDF" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "35" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "50" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "701AB8C1" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "25" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "704037BD" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "26" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "715018A6" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "27" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "79BA5097" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "28" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "7DAF5D66" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "29" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "47" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "3A2F1A91" + }, + { + "begin": 1541, + "end": 29334, + "name": "GT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "51" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "5A440923" + }, + { + "begin": 1541, + "end": 29334, + "name": "GT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "52" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "5A440923" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "19" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "5B35875C" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "20" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "659AC74B" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "21" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "661D7FFB" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "22" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "6622E0D7" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "23" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "69D56EA3" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "24" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "52" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "3A2F1A91" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "14" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "3C78A941" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "15" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "4CCB20C0" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "16" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "4CD161D3" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "17" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "4E937C3A" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "18" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "51" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "248A9CA3" + }, + { + "begin": 1541, + "end": 29334, + "name": "GT", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "53" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "248A9CA3" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "8" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "27721842" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "9" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "2CC06B8C" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "10" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "2F2FF15D" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "11" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "36568ABE" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "12" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "379EE803" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "13" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMP", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "53" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "1FFC9A7" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "3" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "282C9C1" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "4" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "752092B" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "5" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "93FF769" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "6" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "1AF5BACC" + }, + { + "begin": 1541, + "end": 29334, + "name": "EQ", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH [tag]", + "source": 21, + "value": "7" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "tag", + "source": 21, + "value": "2" + }, + { + "begin": 1541, + "end": 29334, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 1541, + "end": 29334, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1541, + "end": 29334, + "name": "REVERT", + "source": 21 + }, + { + "begin": 3443, + "end": 3645, + "name": "tag", + "source": 0, + "value": "3" + }, + { + "begin": 3443, + "end": 3645, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH [tag]", + "source": 0, + "value": "54" + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 3443, + "end": 3645, + "name": "DUP1", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SUB", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "ADD", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH [tag]", + "source": 0, + "value": "55" + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH [tag]", + "source": 0, + "value": "56" + }, + { + "begin": 3443, + "end": 3645, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "tag", + "source": 0, + "value": "55" + }, + { + "begin": 3443, + "end": 3645, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH [tag]", + "source": 0, + "value": "57" + }, + { + "begin": 3443, + "end": 3645, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "tag", + "source": 0, + "value": "54" + }, + { + "begin": 3443, + "end": 3645, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 3443, + "end": 3645, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH [tag]", + "source": 0, + "value": "58" + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH [tag]", + "source": 0, + "value": "59" + }, + { + "begin": 3443, + "end": 3645, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "tag", + "source": 0, + "value": "58" + }, + { + "begin": 3443, + "end": 3645, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 3443, + "end": 3645, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "DUP1", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SUB", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "RETURN", + "source": 0 + }, + { + "begin": 9698, + "end": 10375, + "name": "tag", + "source": 21, + "value": "4" + }, + { + "begin": 9698, + "end": 10375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "PUSH [tag]", + "source": 21, + "value": "60" + }, + { + "begin": 9698, + "end": 10375, + "name": "PUSH [tag]", + "source": 21, + "value": "61" + }, + { + "begin": 9698, + "end": 10375, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "tag", + "source": 21, + "value": "60" + }, + { + "begin": 9698, + "end": 10375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 9698, + "end": 10375, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "PUSH [tag]", + "source": 21, + "value": "62" + }, + { + "begin": 9698, + "end": 10375, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "PUSH [tag]", + "source": 21, + "value": "63" + }, + { + "begin": 9698, + "end": 10375, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "tag", + "source": 21, + "value": "62" + }, + { + "begin": 9698, + "end": 10375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 9698, + "end": 10375, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "SUB", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "RETURN", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "tag", + "source": 21, + "value": "5" + }, + { + "begin": 6402, + "end": 6555, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH [tag]", + "source": 21, + "value": "64" + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 6402, + "end": 6555, + "name": "DUP1", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SUB", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "DUP2", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "ADD", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH [tag]", + "source": 21, + "value": "65" + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH [tag]", + "source": 21, + "value": "66" + }, + { + "begin": 6402, + "end": 6555, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "tag", + "source": 21, + "value": "65" + }, + { + "begin": 6402, + "end": 6555, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH [tag]", + "source": 21, + "value": "67" + }, + { + "begin": 6402, + "end": 6555, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "tag", + "source": 21, + "value": "64" + }, + { + "begin": 6402, + "end": 6555, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 6402, + "end": 6555, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH [tag]", + "source": 21, + "value": "68" + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH [tag]", + "source": 21, + "value": "69" + }, + { + "begin": 6402, + "end": 6555, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "tag", + "source": 21, + "value": "68" + }, + { + "begin": 6402, + "end": 6555, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 6402, + "end": 6555, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "DUP1", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SUB", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "RETURN", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "tag", + "source": 21, + "value": "6" + }, + { + "begin": 20562, + "end": 21364, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "PUSH [tag]", + "source": 21, + "value": "70" + }, + { + "begin": 20562, + "end": 21364, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 20562, + "end": 21364, + "name": "DUP1", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "SUB", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "DUP2", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "ADD", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "PUSH [tag]", + "source": 21, + "value": "71" + }, + { + "begin": 20562, + "end": 21364, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "PUSH [tag]", + "source": 21, + "value": "72" + }, + { + "begin": 20562, + "end": 21364, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "tag", + "source": 21, + "value": "71" + }, + { + "begin": 20562, + "end": 21364, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "PUSH [tag]", + "source": 21, + "value": "73" + }, + { + "begin": 20562, + "end": 21364, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "tag", + "source": 21, + "value": "70" + }, + { + "begin": 20562, + "end": 21364, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "STOP", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "tag", + "source": 21, + "value": "7" + }, + { + "begin": 1900, + "end": 1982, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "PUSH [tag]", + "source": 21, + "value": "74" + }, + { + "begin": 1900, + "end": 1982, + "name": "PUSH [tag]", + "source": 21, + "value": "75" + }, + { + "begin": 1900, + "end": 1982, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "tag", + "source": 21, + "value": "74" + }, + { + "begin": 1900, + "end": 1982, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 1900, + "end": 1982, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "PUSH [tag]", + "source": 21, + "value": "76" + }, + { + "begin": 1900, + "end": 1982, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "PUSH [tag]", + "source": 21, + "value": "77" + }, + { + "begin": 1900, + "end": 1982, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "tag", + "source": 21, + "value": "76" + }, + { + "begin": 1900, + "end": 1982, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 1900, + "end": 1982, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "SUB", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "RETURN", + "source": 21 + }, + { + "begin": 4759, + "end": 4950, + "name": "tag", + "source": 0, + "value": "8" + }, + { + "begin": 4759, + "end": 4950, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH [tag]", + "source": 0, + "value": "78" + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 4759, + "end": 4950, + "name": "DUP1", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SUB", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "DUP2", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "ADD", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH [tag]", + "source": 0, + "value": "79" + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH [tag]", + "source": 0, + "value": "80" + }, + { + "begin": 4759, + "end": 4950, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "tag", + "source": 0, + "value": "79" + }, + { + "begin": 4759, + "end": 4950, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH [tag]", + "source": 0, + "value": "81" + }, + { + "begin": 4759, + "end": 4950, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "tag", + "source": 0, + "value": "78" + }, + { + "begin": 4759, + "end": 4950, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 4759, + "end": 4950, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH [tag]", + "source": 0, + "value": "82" + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH [tag]", + "source": 0, + "value": "77" + }, + { + "begin": 4759, + "end": 4950, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "tag", + "source": 0, + "value": "82" + }, + { + "begin": 4759, + "end": 4950, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 4759, + "end": 4950, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "DUP1", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SUB", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "RETURN", + "source": 0 + }, + { + "begin": 6781, + "end": 6932, + "name": "tag", + "source": 21, + "value": "9" + }, + { + "begin": 6781, + "end": 6932, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH [tag]", + "source": 21, + "value": "83" + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 6781, + "end": 6932, + "name": "DUP1", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SUB", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "DUP2", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "ADD", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH [tag]", + "source": 21, + "value": "84" + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH [tag]", + "source": 21, + "value": "85" + }, + { + "begin": 6781, + "end": 6932, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "tag", + "source": 21, + "value": "84" + }, + { + "begin": 6781, + "end": 6932, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH [tag]", + "source": 21, + "value": "86" + }, + { + "begin": 6781, + "end": 6932, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "tag", + "source": 21, + "value": "83" + }, + { + "begin": 6781, + "end": 6932, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 6781, + "end": 6932, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH [tag]", + "source": 21, + "value": "87" + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH [tag]", + "source": 21, + "value": "59" + }, + { + "begin": 6781, + "end": 6932, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "tag", + "source": 21, + "value": "87" + }, + { + "begin": 6781, + "end": 6932, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 6781, + "end": 6932, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "DUP1", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SUB", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "RETURN", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "tag", + "source": 21, + "value": "10" + }, + { + "begin": 22855, + "end": 23094, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "PUSH [tag]", + "source": 21, + "value": "88" + }, + { + "begin": 22855, + "end": 23094, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 22855, + "end": 23094, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "SUB", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "DUP2", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "ADD", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "PUSH [tag]", + "source": 21, + "value": "89" + }, + { + "begin": 22855, + "end": 23094, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "PUSH [tag]", + "source": 21, + "value": "90" + }, + { + "begin": 22855, + "end": 23094, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "tag", + "source": 21, + "value": "89" + }, + { + "begin": 22855, + "end": 23094, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "PUSH [tag]", + "source": 21, + "value": "91" + }, + { + "begin": 22855, + "end": 23094, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "tag", + "source": 21, + "value": "88" + }, + { + "begin": 22855, + "end": 23094, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "STOP", + "source": 21 + }, + { + "begin": 5246, + "end": 5382, + "name": "tag", + "source": 0, + "value": "11" + }, + { + "begin": 5246, + "end": 5382, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "PUSH [tag]", + "source": 0, + "value": "92" + }, + { + "begin": 5246, + "end": 5382, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 5246, + "end": 5382, + "name": "DUP1", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "SUB", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "DUP2", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "ADD", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "PUSH [tag]", + "source": 0, + "value": "93" + }, + { + "begin": 5246, + "end": 5382, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "PUSH [tag]", + "source": 0, + "value": "94" + }, + { + "begin": 5246, + "end": 5382, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "tag", + "source": 0, + "value": "93" + }, + { + "begin": 5246, + "end": 5382, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "PUSH [tag]", + "source": 0, + "value": "95" + }, + { + "begin": 5246, + "end": 5382, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "tag", + "source": 0, + "value": "92" + }, + { + "begin": 5246, + "end": 5382, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "STOP", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "tag", + "source": 0, + "value": "12" + }, + { + "begin": 6348, + "end": 6593, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "PUSH [tag]", + "source": 0, + "value": "96" + }, + { + "begin": 6348, + "end": 6593, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 6348, + "end": 6593, + "name": "DUP1", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "SUB", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "DUP2", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "ADD", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "PUSH [tag]", + "source": 0, + "value": "97" + }, + { + "begin": 6348, + "end": 6593, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "PUSH [tag]", + "source": 0, + "value": "94" + }, + { + "begin": 6348, + "end": 6593, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "tag", + "source": 0, + "value": "97" + }, + { + "begin": 6348, + "end": 6593, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "PUSH [tag]", + "source": 0, + "value": "98" + }, + { + "begin": 6348, + "end": 6593, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "tag", + "source": 0, + "value": "96" + }, + { + "begin": 6348, + "end": 6593, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "STOP", + "source": 0 + }, + { + "begin": 17054, + "end": 18193, + "name": "tag", + "source": 21, + "value": "13" + }, + { + "begin": 17054, + "end": 18193, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "PUSH [tag]", + "source": 21, + "value": "99" + }, + { + "begin": 17054, + "end": 18193, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 17054, + "end": 18193, + "name": "DUP1", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "SUB", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "DUP2", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "ADD", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "PUSH [tag]", + "source": 21, + "value": "100" + }, + { + "begin": 17054, + "end": 18193, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "PUSH [tag]", + "source": 21, + "value": "101" + }, + { + "begin": 17054, + "end": 18193, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "tag", + "source": 21, + "value": "100" + }, + { + "begin": 17054, + "end": 18193, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "PUSH [tag]", + "source": 21, + "value": "102" + }, + { + "begin": 17054, + "end": 18193, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "tag", + "source": 21, + "value": "99" + }, + { + "begin": 17054, + "end": 18193, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "STOP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "tag", + "source": 21, + "value": "14" + }, + { + "begin": 21951, + "end": 22455, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "PUSH [tag]", + "source": 21, + "value": "103" + }, + { + "begin": 21951, + "end": 22455, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 21951, + "end": 22455, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "SUB", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "DUP2", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "ADD", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "PUSH [tag]", + "source": 21, + "value": "104" + }, + { + "begin": 21951, + "end": 22455, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "PUSH [tag]", + "source": 21, + "value": "105" + }, + { + "begin": 21951, + "end": 22455, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "tag", + "source": 21, + "value": "104" + }, + { + "begin": 21951, + "end": 22455, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "PUSH [tag]", + "source": 21, + "value": "106" + }, + { + "begin": 21951, + "end": 22455, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "tag", + "source": 21, + "value": "103" + }, + { + "begin": 21951, + "end": 22455, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "STOP", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "tag", + "source": 21, + "value": "15" + }, + { + "begin": 26236, + "end": 26332, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "PUSH [tag]", + "source": 21, + "value": "107" + }, + { + "begin": 26236, + "end": 26332, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 26236, + "end": 26332, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "SUB", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "ADD", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "PUSH [tag]", + "source": 21, + "value": "108" + }, + { + "begin": 26236, + "end": 26332, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "PUSH [tag]", + "source": 21, + "value": "109" + }, + { + "begin": 26236, + "end": 26332, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "tag", + "source": 21, + "value": "108" + }, + { + "begin": 26236, + "end": 26332, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "PUSH [tag]", + "source": 21, + "value": "110" + }, + { + "begin": 26236, + "end": 26332, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "tag", + "source": 21, + "value": "107" + }, + { + "begin": 26236, + "end": 26332, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "STOP", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "tag", + "source": 21, + "value": "16" + }, + { + "begin": 4471, + "end": 4589, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "PUSH [tag]", + "source": 21, + "value": "111" + }, + { + "begin": 4471, + "end": 4589, + "name": "PUSH [tag]", + "source": 21, + "value": "112" + }, + { + "begin": 4471, + "end": 4589, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "tag", + "source": 21, + "value": "111" + }, + { + "begin": 4471, + "end": 4589, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4471, + "end": 4589, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "PUSH [tag]", + "source": 21, + "value": "113" + }, + { + "begin": 4471, + "end": 4589, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "PUSH [tag]", + "source": 21, + "value": "114" + }, + { + "begin": 4471, + "end": 4589, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "tag", + "source": 21, + "value": "113" + }, + { + "begin": 4471, + "end": 4589, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4471, + "end": 4589, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "DUP1", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "SUB", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "RETURN", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "tag", + "source": 21, + "value": "17" + }, + { + "begin": 18573, + "end": 19105, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "PUSH [tag]", + "source": 21, + "value": "115" + }, + { + "begin": 18573, + "end": 19105, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 18573, + "end": 19105, + "name": "DUP1", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "SUB", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "DUP2", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "ADD", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "PUSH [tag]", + "source": 21, + "value": "116" + }, + { + "begin": 18573, + "end": 19105, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "PUSH [tag]", + "source": 21, + "value": "117" + }, + { + "begin": 18573, + "end": 19105, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "tag", + "source": 21, + "value": "116" + }, + { + "begin": 18573, + "end": 19105, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "PUSH [tag]", + "source": 21, + "value": "118" + }, + { + "begin": 18573, + "end": 19105, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "tag", + "source": 21, + "value": "115" + }, + { + "begin": 18573, + "end": 19105, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "STOP", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "tag", + "source": 21, + "value": "18" + }, + { + "begin": 5439, + "end": 5565, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "PUSH [tag]", + "source": 21, + "value": "119" + }, + { + "begin": 5439, + "end": 5565, + "name": "PUSH [tag]", + "source": 21, + "value": "120" + }, + { + "begin": 5439, + "end": 5565, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "tag", + "source": 21, + "value": "119" + }, + { + "begin": 5439, + "end": 5565, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 5439, + "end": 5565, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "PUSH [tag]", + "source": 21, + "value": "121" + }, + { + "begin": 5439, + "end": 5565, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "PUSH [tag]", + "source": 21, + "value": "122" + }, + { + "begin": 5439, + "end": 5565, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "tag", + "source": 21, + "value": "121" + }, + { + "begin": 5439, + "end": 5565, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 5439, + "end": 5565, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "DUP1", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "SUB", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "RETURN", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "tag", + "source": 21, + "value": "19" + }, + { + "begin": 24596, + "end": 24860, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "PUSH [tag]", + "source": 21, + "value": "123" + }, + { + "begin": 24596, + "end": 24860, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 24596, + "end": 24860, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "SUB", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "ADD", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "PUSH [tag]", + "source": 21, + "value": "124" + }, + { + "begin": 24596, + "end": 24860, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "PUSH [tag]", + "source": 21, + "value": "85" + }, + { + "begin": 24596, + "end": 24860, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "tag", + "source": 21, + "value": "124" + }, + { + "begin": 24596, + "end": 24860, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "PUSH [tag]", + "source": 21, + "value": "125" + }, + { + "begin": 24596, + "end": 24860, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "tag", + "source": 21, + "value": "123" + }, + { + "begin": 24596, + "end": 24860, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "STOP", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "tag", + "source": 21, + "value": "20" + }, + { + "begin": 9425, + "end": 9558, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "PUSH [tag]", + "source": 21, + "value": "126" + }, + { + "begin": 9425, + "end": 9558, + "name": "PUSH [tag]", + "source": 21, + "value": "127" + }, + { + "begin": 9425, + "end": 9558, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "tag", + "source": 21, + "value": "126" + }, + { + "begin": 9425, + "end": 9558, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 9425, + "end": 9558, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "PUSH [tag]", + "source": 21, + "value": "128" + }, + { + "begin": 9425, + "end": 9558, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "PUSH [tag]", + "source": 21, + "value": "63" + }, + { + "begin": 9425, + "end": 9558, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "tag", + "source": 21, + "value": "128" + }, + { + "begin": 9425, + "end": 9558, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 9425, + "end": 9558, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "SUB", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "RETURN", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "tag", + "source": 21, + "value": "21" + }, + { + "begin": 12340, + "end": 14836, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH [tag]", + "source": 21, + "value": "129" + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 12340, + "end": 14836, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SUB", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "DUP2", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "ADD", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH [tag]", + "source": 21, + "value": "130" + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH [tag]", + "source": 21, + "value": "131" + }, + { + "begin": 12340, + "end": 14836, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "tag", + "source": 21, + "value": "130" + }, + { + "begin": 12340, + "end": 14836, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH [tag]", + "source": 21, + "value": "132" + }, + { + "begin": 12340, + "end": 14836, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "tag", + "source": 21, + "value": "129" + }, + { + "begin": 12340, + "end": 14836, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12340, + "end": 14836, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH [tag]", + "source": 21, + "value": "133" + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH [tag]", + "source": 21, + "value": "134" + }, + { + "begin": 12340, + "end": 14836, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "tag", + "source": 21, + "value": "133" + }, + { + "begin": 12340, + "end": 14836, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12340, + "end": 14836, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SUB", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "RETURN", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "tag", + "source": 21, + "value": "22" + }, + { + "begin": 1988, + "end": 2110, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "PUSH [tag]", + "source": 21, + "value": "135" + }, + { + "begin": 1988, + "end": 2110, + "name": "PUSH [tag]", + "source": 21, + "value": "136" + }, + { + "begin": 1988, + "end": 2110, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "tag", + "source": 21, + "value": "135" + }, + { + "begin": 1988, + "end": 2110, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 1988, + "end": 2110, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "PUSH [tag]", + "source": 21, + "value": "137" + }, + { + "begin": 1988, + "end": 2110, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "PUSH [tag]", + "source": 21, + "value": "77" + }, + { + "begin": 1988, + "end": 2110, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "tag", + "source": 21, + "value": "137" + }, + { + "begin": 1988, + "end": 2110, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 1988, + "end": 2110, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "DUP1", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "SUB", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "RETURN", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "tag", + "source": 21, + "value": "23" + }, + { + "begin": 10632, + "end": 11765, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH [tag]", + "source": 21, + "value": "138" + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 10632, + "end": 11765, + "name": "DUP1", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SUB", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "ADD", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH [tag]", + "source": 21, + "value": "139" + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH [tag]", + "source": 21, + "value": "140" + }, + { + "begin": 10632, + "end": 11765, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "tag", + "source": 21, + "value": "139" + }, + { + "begin": 10632, + "end": 11765, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH [tag]", + "source": 21, + "value": "141" + }, + { + "begin": 10632, + "end": 11765, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "tag", + "source": 21, + "value": "138" + }, + { + "begin": 10632, + "end": 11765, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 10632, + "end": 11765, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH [tag]", + "source": 21, + "value": "142" + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH [tag]", + "source": 21, + "value": "143" + }, + { + "begin": 10632, + "end": 11765, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "tag", + "source": 21, + "value": "142" + }, + { + "begin": 10632, + "end": 11765, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 10632, + "end": 11765, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "DUP1", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SUB", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "RETURN", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "tag", + "source": 21, + "value": "24" + }, + { + "begin": 15407, + "end": 16102, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "PUSH [tag]", + "source": 21, + "value": "144" + }, + { + "begin": 15407, + "end": 16102, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 15407, + "end": 16102, + "name": "DUP1", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "SUB", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "ADD", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "PUSH [tag]", + "source": 21, + "value": "145" + }, + { + "begin": 15407, + "end": 16102, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "PUSH [tag]", + "source": 21, + "value": "146" + }, + { + "begin": 15407, + "end": 16102, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "tag", + "source": 21, + "value": "145" + }, + { + "begin": 15407, + "end": 16102, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "PUSH [tag]", + "source": 21, + "value": "147" + }, + { + "begin": 15407, + "end": 16102, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "tag", + "source": 21, + "value": "144" + }, + { + "begin": 15407, + "end": 16102, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "STOP", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "tag", + "source": 21, + "value": "25" + }, + { + "begin": 4261, + "end": 4375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "PUSH [tag]", + "source": 21, + "value": "148" + }, + { + "begin": 4261, + "end": 4375, + "name": "PUSH [tag]", + "source": 21, + "value": "149" + }, + { + "begin": 4261, + "end": 4375, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "tag", + "source": 21, + "value": "148" + }, + { + "begin": 4261, + "end": 4375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4261, + "end": 4375, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "PUSH [tag]", + "source": 21, + "value": "150" + }, + { + "begin": 4261, + "end": 4375, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "PUSH [tag]", + "source": 21, + "value": "122" + }, + { + "begin": 4261, + "end": 4375, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "tag", + "source": 21, + "value": "150" + }, + { + "begin": 4261, + "end": 4375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4261, + "end": 4375, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "DUP1", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "SUB", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "RETURN", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "tag", + "source": 21, + "value": "26" + }, + { + "begin": 7318, + "end": 7577, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH [tag]", + "source": 21, + "value": "151" + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 7318, + "end": 7577, + "name": "DUP1", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SUB", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "DUP2", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "ADD", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH [tag]", + "source": 21, + "value": "152" + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH [tag]", + "source": 21, + "value": "153" + }, + { + "begin": 7318, + "end": 7577, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "tag", + "source": 21, + "value": "152" + }, + { + "begin": 7318, + "end": 7577, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH [tag]", + "source": 21, + "value": "154" + }, + { + "begin": 7318, + "end": 7577, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "tag", + "source": 21, + "value": "151" + }, + { + "begin": 7318, + "end": 7577, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 7318, + "end": 7577, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH [tag]", + "source": 21, + "value": "155" + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH [tag]", + "source": 21, + "value": "156" + }, + { + "begin": 7318, + "end": 7577, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "tag", + "source": 21, + "value": "155" + }, + { + "begin": 7318, + "end": 7577, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 7318, + "end": 7577, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "DUP1", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SUB", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "RETURN", + "source": 21 + }, + { + "begin": 3155, + "end": 3256, + "name": "tag", + "source": 2, + "value": "27" + }, + { + "begin": 3155, + "end": 3256, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3155, + "end": 3256, + "name": "PUSH [tag]", + "source": 2, + "value": "157" + }, + { + "begin": 3155, + "end": 3256, + "name": "PUSH [tag]", + "source": 2, + "value": "158" + }, + { + "begin": 3155, + "end": 3256, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3155, + "end": 3256, + "name": "tag", + "source": 2, + "value": "157" + }, + { + "begin": 3155, + "end": 3256, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3155, + "end": 3256, + "name": "STOP", + "source": 2 + }, + { + "begin": 3132, + "end": 3361, + "name": "tag", + "source": 1, + "value": "28" + }, + { + "begin": 3132, + "end": 3361, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3132, + "end": 3361, + "name": "PUSH [tag]", + "source": 1, + "value": "159" + }, + { + "begin": 3132, + "end": 3361, + "name": "PUSH [tag]", + "source": 1, + "value": "160" + }, + { + "begin": 3132, + "end": 3361, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3132, + "end": 3361, + "name": "tag", + "source": 1, + "value": "159" + }, + { + "begin": 3132, + "end": 3361, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3132, + "end": 3361, + "name": "STOP", + "source": 1 + }, + { + "begin": 5757, + "end": 5888, + "name": "tag", + "source": 21, + "value": "29" + }, + { + "begin": 5757, + "end": 5888, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH [tag]", + "source": 21, + "value": "161" + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 5757, + "end": 5888, + "name": "DUP1", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SUB", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "DUP2", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "ADD", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH [tag]", + "source": 21, + "value": "162" + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH [tag]", + "source": 21, + "value": "66" + }, + { + "begin": 5757, + "end": 5888, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "tag", + "source": 21, + "value": "162" + }, + { + "begin": 5757, + "end": 5888, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH [tag]", + "source": 21, + "value": "163" + }, + { + "begin": 5757, + "end": 5888, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "tag", + "source": 21, + "value": "161" + }, + { + "begin": 5757, + "end": 5888, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 5757, + "end": 5888, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH [tag]", + "source": 21, + "value": "164" + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH [tag]", + "source": 21, + "value": "134" + }, + { + "begin": 5757, + "end": 5888, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "tag", + "source": 21, + "value": "164" + }, + { + "begin": 5757, + "end": 5888, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 5757, + "end": 5888, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "DUP1", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SUB", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "RETURN", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "tag", + "source": 21, + "value": "30" + }, + { + "begin": 6050, + "end": 6198, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "PUSH [tag]", + "source": 21, + "value": "165" + }, + { + "begin": 6050, + "end": 6198, + "name": "PUSH [tag]", + "source": 21, + "value": "166" + }, + { + "begin": 6050, + "end": 6198, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "tag", + "source": 21, + "value": "165" + }, + { + "begin": 6050, + "end": 6198, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 6050, + "end": 6198, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "PUSH [tag]", + "source": 21, + "value": "167" + }, + { + "begin": 6050, + "end": 6198, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "PUSH [tag]", + "source": 21, + "value": "122" + }, + { + "begin": 6050, + "end": 6198, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "tag", + "source": 21, + "value": "167" + }, + { + "begin": 6050, + "end": 6198, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 6050, + "end": 6198, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "DUP1", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "SUB", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "RETURN", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "tag", + "source": 21, + "value": "31" + }, + { + "begin": 4694, + "end": 4814, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "PUSH [tag]", + "source": 21, + "value": "168" + }, + { + "begin": 4694, + "end": 4814, + "name": "PUSH [tag]", + "source": 21, + "value": "169" + }, + { + "begin": 4694, + "end": 4814, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "tag", + "source": 21, + "value": "168" + }, + { + "begin": 4694, + "end": 4814, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4694, + "end": 4814, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "PUSH [tag]", + "source": 21, + "value": "170" + }, + { + "begin": 4694, + "end": 4814, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "PUSH [tag]", + "source": 21, + "value": "122" + }, + { + "begin": 4694, + "end": 4814, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "tag", + "source": 21, + "value": "170" + }, + { + "begin": 4694, + "end": 4814, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4694, + "end": 4814, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "DUP1", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "SUB", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "RETURN", + "source": 21 + }, + { + "begin": 2441, + "end": 2585, + "name": "tag", + "source": 2, + "value": "32" + }, + { + "begin": 2441, + "end": 2585, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "PUSH [tag]", + "source": 2, + "value": "171" + }, + { + "begin": 2441, + "end": 2585, + "name": "PUSH [tag]", + "source": 2, + "value": "172" + }, + { + "begin": 2441, + "end": 2585, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "tag", + "source": 2, + "value": "171" + }, + { + "begin": 2441, + "end": 2585, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2441, + "end": 2585, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "PUSH [tag]", + "source": 2, + "value": "173" + }, + { + "begin": 2441, + "end": 2585, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "PUSH [tag]", + "source": 2, + "value": "114" + }, + { + "begin": 2441, + "end": 2585, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "tag", + "source": 2, + "value": "173" + }, + { + "begin": 2441, + "end": 2585, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2441, + "end": 2585, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "SUB", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "RETURN", + "source": 2 + }, + { + "begin": 28645, + "end": 28848, + "name": "tag", + "source": 21, + "value": "33" + }, + { + "begin": 28645, + "end": 28848, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH [tag]", + "source": 21, + "value": "174" + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 28645, + "end": 28848, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SUB", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "ADD", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH [tag]", + "source": 21, + "value": "175" + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH [tag]", + "source": 21, + "value": "94" + }, + { + "begin": 28645, + "end": 28848, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "tag", + "source": 21, + "value": "175" + }, + { + "begin": 28645, + "end": 28848, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH [tag]", + "source": 21, + "value": "176" + }, + { + "begin": 28645, + "end": 28848, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "tag", + "source": 21, + "value": "174" + }, + { + "begin": 28645, + "end": 28848, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28645, + "end": 28848, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH [tag]", + "source": 21, + "value": "177" + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH [tag]", + "source": 21, + "value": "59" + }, + { + "begin": 28645, + "end": 28848, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "tag", + "source": 21, + "value": "177" + }, + { + "begin": 28645, + "end": 28848, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28645, + "end": 28848, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SUB", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "RETURN", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "tag", + "source": 21, + "value": "34" + }, + { + "begin": 5202, + "end": 5320, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "PUSH [tag]", + "source": 21, + "value": "178" + }, + { + "begin": 5202, + "end": 5320, + "name": "PUSH [tag]", + "source": 21, + "value": "179" + }, + { + "begin": 5202, + "end": 5320, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "tag", + "source": 21, + "value": "178" + }, + { + "begin": 5202, + "end": 5320, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 5202, + "end": 5320, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "PUSH [tag]", + "source": 21, + "value": "180" + }, + { + "begin": 5202, + "end": 5320, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "PUSH [tag]", + "source": 21, + "value": "114" + }, + { + "begin": 5202, + "end": 5320, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "tag", + "source": 21, + "value": "180" + }, + { + "begin": 5202, + "end": 5320, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 5202, + "end": 5320, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "DUP1", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "SUB", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "RETURN", + "source": 21 + }, + { + "begin": 2317, + "end": 2366, + "name": "tag", + "source": 0, + "value": "35" + }, + { + "begin": 2317, + "end": 2366, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "PUSH [tag]", + "source": 0, + "value": "181" + }, + { + "begin": 2317, + "end": 2366, + "name": "PUSH [tag]", + "source": 0, + "value": "182" + }, + { + "begin": 2317, + "end": 2366, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "tag", + "source": 0, + "value": "181" + }, + { + "begin": 2317, + "end": 2366, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 2317, + "end": 2366, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "PUSH [tag]", + "source": 0, + "value": "183" + }, + { + "begin": 2317, + "end": 2366, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "PUSH [tag]", + "source": 0, + "value": "77" + }, + { + "begin": 2317, + "end": 2366, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "tag", + "source": 0, + "value": "183" + }, + { + "begin": 2317, + "end": 2366, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 2317, + "end": 2366, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "DUP1", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "SUB", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "RETURN", + "source": 0 + }, + { + "begin": 8275, + "end": 9267, + "name": "tag", + "source": 21, + "value": "36" + }, + { + "begin": 8275, + "end": 9267, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH [tag]", + "source": 21, + "value": "184" + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 8275, + "end": 9267, + "name": "DUP1", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SUB", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "DUP2", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "ADD", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH [tag]", + "source": 21, + "value": "185" + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH [tag]", + "source": 21, + "value": "66" + }, + { + "begin": 8275, + "end": 9267, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "tag", + "source": 21, + "value": "185" + }, + { + "begin": 8275, + "end": 9267, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH [tag]", + "source": 21, + "value": "186" + }, + { + "begin": 8275, + "end": 9267, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "tag", + "source": 21, + "value": "184" + }, + { + "begin": 8275, + "end": 9267, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 8275, + "end": 9267, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH [tag]", + "source": 21, + "value": "187" + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP9", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP7", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH [tag]", + "source": 21, + "value": "188" + }, + { + "begin": 8275, + "end": 9267, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "tag", + "source": 21, + "value": "187" + }, + { + "begin": 8275, + "end": 9267, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 8275, + "end": 9267, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "DUP1", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SUB", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "RETURN", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "tag", + "source": 21, + "value": "37" + }, + { + "begin": 3682, + "end": 4157, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "PUSH [tag]", + "source": 21, + "value": "189" + }, + { + "begin": 3682, + "end": 4157, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 3682, + "end": 4157, + "name": "DUP1", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "SUB", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "DUP2", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "ADD", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "PUSH [tag]", + "source": 21, + "value": "190" + }, + { + "begin": 3682, + "end": 4157, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "PUSH [tag]", + "source": 21, + "value": "191" + }, + { + "begin": 3682, + "end": 4157, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "tag", + "source": 21, + "value": "190" + }, + { + "begin": 3682, + "end": 4157, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "PUSH [tag]", + "source": 21, + "value": "192" + }, + { + "begin": 3682, + "end": 4157, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "tag", + "source": 21, + "value": "189" + }, + { + "begin": 3682, + "end": 4157, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "STOP", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "tag", + "source": 21, + "value": "38" + }, + { + "begin": 11820, + "end": 11942, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "PUSH [tag]", + "source": 21, + "value": "193" + }, + { + "begin": 11820, + "end": 11942, + "name": "PUSH [tag]", + "source": 21, + "value": "194" + }, + { + "begin": 11820, + "end": 11942, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "tag", + "source": 21, + "value": "193" + }, + { + "begin": 11820, + "end": 11942, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 11820, + "end": 11942, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "PUSH [tag]", + "source": 21, + "value": "195" + }, + { + "begin": 11820, + "end": 11942, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "PUSH [tag]", + "source": 21, + "value": "77" + }, + { + "begin": 11820, + "end": 11942, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "tag", + "source": 21, + "value": "195" + }, + { + "begin": 11820, + "end": 11942, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 11820, + "end": 11942, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "SUB", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "RETURN", + "source": 21 + }, + { + "begin": 5662, + "end": 5800, + "name": "tag", + "source": 0, + "value": "39" + }, + { + "begin": 5662, + "end": 5800, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "PUSH [tag]", + "source": 0, + "value": "196" + }, + { + "begin": 5662, + "end": 5800, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 5662, + "end": 5800, + "name": "DUP1", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "SUB", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "DUP2", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "ADD", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "PUSH [tag]", + "source": 0, + "value": "197" + }, + { + "begin": 5662, + "end": 5800, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "PUSH [tag]", + "source": 0, + "value": "94" + }, + { + "begin": 5662, + "end": 5800, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "tag", + "source": 0, + "value": "197" + }, + { + "begin": 5662, + "end": 5800, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "PUSH [tag]", + "source": 0, + "value": "198" + }, + { + "begin": 5662, + "end": 5800, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "tag", + "source": 0, + "value": "196" + }, + { + "begin": 5662, + "end": 5800, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "STOP", + "source": 0 + }, + { + "begin": 25131, + "end": 25375, + "name": "tag", + "source": 21, + "value": "40" + }, + { + "begin": 25131, + "end": 25375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "PUSH [tag]", + "source": 21, + "value": "199" + }, + { + "begin": 25131, + "end": 25375, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 25131, + "end": 25375, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "SUB", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "ADD", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "PUSH [tag]", + "source": 21, + "value": "200" + }, + { + "begin": 25131, + "end": 25375, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "PUSH [tag]", + "source": 21, + "value": "85" + }, + { + "begin": 25131, + "end": 25375, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "tag", + "source": 21, + "value": "200" + }, + { + "begin": 25131, + "end": 25375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "PUSH [tag]", + "source": 21, + "value": "201" + }, + { + "begin": 25131, + "end": 25375, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "tag", + "source": 21, + "value": "199" + }, + { + "begin": 25131, + "end": 25375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "STOP", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "tag", + "source": 21, + "value": "41" + }, + { + "begin": 19331, + "end": 19528, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "PUSH [tag]", + "source": 21, + "value": "202" + }, + { + "begin": 19331, + "end": 19528, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 19331, + "end": 19528, + "name": "DUP1", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "SUB", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "DUP2", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "ADD", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "PUSH [tag]", + "source": 21, + "value": "203" + }, + { + "begin": 19331, + "end": 19528, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "PUSH [tag]", + "source": 21, + "value": "204" + }, + { + "begin": 19331, + "end": 19528, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "tag", + "source": 21, + "value": "203" + }, + { + "begin": 19331, + "end": 19528, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "PUSH [tag]", + "source": 21, + "value": "205" + }, + { + "begin": 19331, + "end": 19528, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "tag", + "source": 21, + "value": "202" + }, + { + "begin": 19331, + "end": 19528, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "STOP", + "source": 21 + }, + { + "begin": 2038, + "end": 2206, + "name": "tag", + "source": 1, + "value": "42" + }, + { + "begin": 2038, + "end": 2206, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "PUSH [tag]", + "source": 1, + "value": "206" + }, + { + "begin": 2038, + "end": 2206, + "name": "PUSH [tag]", + "source": 1, + "value": "207" + }, + { + "begin": 2038, + "end": 2206, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "tag", + "source": 1, + "value": "206" + }, + { + "begin": 2038, + "end": 2206, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 2038, + "end": 2206, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "PUSH [tag]", + "source": 1, + "value": "208" + }, + { + "begin": 2038, + "end": 2206, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "PUSH [tag]", + "source": 1, + "value": "114" + }, + { + "begin": 2038, + "end": 2206, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "tag", + "source": 1, + "value": "208" + }, + { + "begin": 2038, + "end": 2206, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 2038, + "end": 2206, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "SUB", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "RETURN", + "source": 1 + }, + { + "begin": 23440, + "end": 23562, + "name": "tag", + "source": 21, + "value": "43" + }, + { + "begin": 23440, + "end": 23562, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "PUSH [tag]", + "source": 21, + "value": "209" + }, + { + "begin": 23440, + "end": 23562, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 23440, + "end": 23562, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "SUB", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "DUP2", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "ADD", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "PUSH [tag]", + "source": 21, + "value": "210" + }, + { + "begin": 23440, + "end": 23562, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "PUSH [tag]", + "source": 21, + "value": "211" + }, + { + "begin": 23440, + "end": 23562, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "tag", + "source": 21, + "value": "210" + }, + { + "begin": 23440, + "end": 23562, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "PUSH [tag]", + "source": 21, + "value": "212" + }, + { + "begin": 23440, + "end": 23562, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "tag", + "source": 21, + "value": "209" + }, + { + "begin": 23440, + "end": 23562, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "STOP", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "tag", + "source": 21, + "value": "44" + }, + { + "begin": 23879, + "end": 24327, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "PUSH [tag]", + "source": 21, + "value": "213" + }, + { + "begin": 23879, + "end": 24327, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 23879, + "end": 24327, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "SUB", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "DUP2", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "ADD", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "PUSH [tag]", + "source": 21, + "value": "214" + }, + { + "begin": 23879, + "end": 24327, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "PUSH [tag]", + "source": 21, + "value": "66" + }, + { + "begin": 23879, + "end": 24327, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "tag", + "source": 21, + "value": "214" + }, + { + "begin": 23879, + "end": 24327, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "PUSH [tag]", + "source": 21, + "value": "215" + }, + { + "begin": 23879, + "end": 24327, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "tag", + "source": 21, + "value": "213" + }, + { + "begin": 23879, + "end": 24327, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "STOP", + "source": 21 + }, + { + "begin": 2399, + "end": 2646, + "name": "tag", + "source": 1, + "value": "45" + }, + { + "begin": 2399, + "end": 2646, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "PUSH [tag]", + "source": 1, + "value": "216" + }, + { + "begin": 2399, + "end": 2646, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 2399, + "end": 2646, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "CALLDATASIZE", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "SUB", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "ADD", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "PUSH [tag]", + "source": 1, + "value": "217" + }, + { + "begin": 2399, + "end": 2646, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "PUSH [tag]", + "source": 1, + "value": "211" + }, + { + "begin": 2399, + "end": 2646, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "tag", + "source": 1, + "value": "217" + }, + { + "begin": 2399, + "end": 2646, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "PUSH [tag]", + "source": 1, + "value": "218" + }, + { + "begin": 2399, + "end": 2646, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "tag", + "source": 1, + "value": "216" + }, + { + "begin": 2399, + "end": 2646, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "STOP", + "source": 1 + }, + { + "begin": 4949, + "end": 5067, + "name": "tag", + "source": 21, + "value": "46" + }, + { + "begin": 4949, + "end": 5067, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "PUSH [tag]", + "source": 21, + "value": "219" + }, + { + "begin": 4949, + "end": 5067, + "name": "PUSH [tag]", + "source": 21, + "value": "220" + }, + { + "begin": 4949, + "end": 5067, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "tag", + "source": 21, + "value": "219" + }, + { + "begin": 4949, + "end": 5067, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4949, + "end": 5067, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "PUSH [tag]", + "source": 21, + "value": "221" + }, + { + "begin": 4949, + "end": 5067, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "PUSH [tag]", + "source": 21, + "value": "122" + }, + { + "begin": 4949, + "end": 5067, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "tag", + "source": 21, + "value": "221" + }, + { + "begin": 4949, + "end": 5067, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4949, + "end": 5067, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "DUP1", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "SUB", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "RETURN", + "source": 21 + }, + { + "begin": 3443, + "end": 3645, + "name": "tag", + "source": 0, + "value": "57" + }, + { + "begin": 3443, + "end": 3645, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3528, + "end": 3532, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3566, + "end": 3598, + "name": "PUSH", + "source": 0, + "value": "7965DB0B00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 3551, + "end": 3598, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3551, + "end": 3598, + "name": "NOT", + "source": 0 + }, + { + "begin": 3551, + "end": 3598, + "name": "AND", + "source": 0 + }, + { + "begin": 3551, + "end": 3562, + "name": "DUP3", + "source": 0 + }, + { + "begin": 3551, + "end": 3598, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3551, + "end": 3598, + "name": "NOT", + "source": 0 + }, + { + "begin": 3551, + "end": 3598, + "name": "AND", + "source": 0 + }, + { + "begin": 3551, + "end": 3598, + "name": "EQ", + "source": 0 + }, + { + "begin": 3551, + "end": 3638, + "name": "DUP1", + "source": 0 + }, + { + "begin": 3551, + "end": 3638, + "name": "PUSH [tag]", + "source": 0, + "value": "223" + }, + { + "begin": 3551, + "end": 3638, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 3551, + "end": 3638, + "name": "POP", + "source": 0 + }, + { + "begin": 3602, + "end": 3638, + "name": "PUSH [tag]", + "source": 0, + "value": "224" + }, + { + "begin": 3626, + "end": 3637, + "name": "DUP3", + "source": 0 + }, + { + "begin": 3602, + "end": 3625, + "name": "PUSH [tag]", + "source": 0, + "value": "225" + }, + { + "begin": 3602, + "end": 3638, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3602, + "end": 3638, + "name": "tag", + "source": 0, + "value": "224" + }, + { + "begin": 3602, + "end": 3638, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3551, + "end": 3638, + "name": "tag", + "source": 0, + "value": "223" + }, + { + "begin": 3551, + "end": 3638, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3544, + "end": 3638, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3544, + "end": 3638, + "name": "POP", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "name": "POP", + "source": 0 + }, + { + "begin": 3443, + "end": 3645, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 9698, + "end": 10375, + "name": "tag", + "source": 21, + "value": "61" + }, + { + "begin": 9698, + "end": 10375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9757, + "end": 9785, + "name": "PUSH", + "source": 21, + "value": "60" + }, + { + "begin": 9797, + "end": 9811, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 9814, + "end": 9831, + "name": "PUSH [tag]", + "source": 21, + "value": "227" + }, + { + "begin": 9814, + "end": 9822, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 9814, + "end": 9829, + "name": "PUSH [tag]", + "source": 21, + "value": "228" + }, + { + "begin": 9814, + "end": 9831, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9814, + "end": 9831, + "name": "tag", + "source": 21, + "value": "227" + }, + { + "begin": 9814, + "end": 9831, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9797, + "end": 9831, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9797, + "end": 9831, + "name": "POP", + "source": 21 + }, + { + "begin": 9855, + "end": 9856, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 9846, + "end": 9852, + "name": "DUP2", + "source": 21 + }, + { + "begin": 9846, + "end": 9856, + "name": "GT", + "source": 21 + }, + { + "begin": 9842, + "end": 10369, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 9842, + "end": 10369, + "name": "PUSH [tag]", + "source": 21, + "value": "229" + }, + { + "begin": 9842, + "end": 10369, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 9900, + "end": 9906, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP2", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "GT", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH [tag]", + "source": 21, + "value": "230" + }, + { + "begin": 9886, + "end": 9907, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH [tag]", + "source": 21, + "value": "231" + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH [tag]", + "source": 21, + "value": "232" + }, + { + "begin": 9886, + "end": 9907, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "tag", + "source": 21, + "value": "231" + }, + { + "begin": 9886, + "end": 9907, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "tag", + "source": 21, + "value": "230" + }, + { + "begin": 9886, + "end": 9907, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 9886, + "end": 9907, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP3", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 9886, + "end": 9907, + "name": "MUL", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 9886, + "end": 9907, + "name": "ADD", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP3", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "ADD", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 9886, + "end": 9907, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH [tag]", + "source": 21, + "value": "233" + }, + { + "begin": 9886, + "end": 9907, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP2", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 9886, + "end": 9907, + "name": "ADD", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP3", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "MUL", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP4", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "CALLDATACOPY", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "DUP3", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "ADD", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "POP", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "POP", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "POP", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "tag", + "source": 21, + "value": "233" + }, + { + "begin": 9886, + "end": 9907, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9886, + "end": 9907, + "name": "POP", + "source": 21 + }, + { + "begin": 9872, + "end": 9907, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9872, + "end": 9907, + "name": "POP", + "source": 21 + }, + { + "begin": 9922, + "end": 9935, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 9955, + "end": 9964, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9950, + "end": 10218, + "name": "tag", + "source": 21, + "value": "234" + }, + { + "begin": 9950, + "end": 10218, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9970, + "end": 9976, + "name": "DUP3", + "source": 21 + }, + { + "begin": 9966, + "end": 9967, + "name": "DUP2", + "source": 21 + }, + { + "begin": 9966, + "end": 9976, + "name": "LT", + "source": 21 + }, + { + "begin": 9950, + "end": 10218, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 9950, + "end": 10218, + "name": "PUSH [tag]", + "source": 21, + "value": "235" + }, + { + "begin": 9950, + "end": 10218, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 10002, + "end": 10017, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10019, + "end": 10033, + "name": "DUP1", + "source": 21 + }, + { + "begin": 10037, + "end": 10051, + "name": "PUSH [tag]", + "source": 21, + "value": "237" + }, + { + "begin": 10049, + "end": 10050, + "name": "DUP4", + "source": 21 + }, + { + "begin": 10037, + "end": 10045, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 10037, + "end": 10048, + "name": "PUSH [tag]", + "source": 21, + "value": "238" + }, + { + "begin": 10037, + "end": 10048, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10037, + "end": 10051, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10037, + "end": 10051, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10037, + "end": 10051, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 10037, + "end": 10051, + "name": "AND", + "source": 21 + }, + { + "begin": 10037, + "end": 10051, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10037, + "end": 10051, + "name": "tag", + "source": 21, + "value": "237" + }, + { + "begin": 10037, + "end": 10051, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10001, + "end": 10051, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10001, + "end": 10051, + "name": "POP", + "source": 21 + }, + { + "begin": 10001, + "end": 10051, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10001, + "end": 10051, + "name": "POP", + "source": 21 + }, + { + "begin": 10074, + "end": 10104, + "name": "PUSH [tag]", + "source": 21, + "value": "239" + }, + { + "begin": 10096, + "end": 10102, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10088, + "end": 10103, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10088, + "end": 10103, + "name": "SHL", + "source": 21 + }, + { + "begin": 10074, + "end": 10087, + "name": "PUSH [tag]", + "source": 21, + "value": "240" + }, + { + "begin": 10074, + "end": 10104, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10074, + "end": 10104, + "name": "tag", + "source": 21, + "value": "239" + }, + { + "begin": 10074, + "end": 10104, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10070, + "end": 10204, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 10070, + "end": 10204, + "name": "PUSH [tag]", + "source": 21, + "value": "241" + }, + { + "begin": 10070, + "end": 10204, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 10149, + "end": 10156, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10128, + "end": 10139, + "name": "DUP7", + "source": 21 + }, + { + "begin": 10140, + "end": 10145, + "name": "DUP6", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "LT", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "PUSH [tag]", + "source": 21, + "value": "242" + }, + { + "begin": 10128, + "end": 10146, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "PUSH [tag]", + "source": 21, + "value": "243" + }, + { + "begin": 10128, + "end": 10146, + "name": "PUSH [tag]", + "source": 21, + "value": "244" + }, + { + "begin": 10128, + "end": 10146, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "tag", + "source": 21, + "value": "243" + }, + { + "begin": 10128, + "end": 10146, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "tag", + "source": 21, + "value": "242" + }, + { + "begin": 10128, + "end": 10146, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 10128, + "end": 10146, + "name": "MUL", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 10128, + "end": 10146, + "name": "ADD", + "source": 21 + }, + { + "begin": 10128, + "end": 10146, + "name": "ADD", + "source": 21 + }, + { + "begin": 10128, + "end": 10156, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10128, + "end": 10156, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10128, + "end": 10156, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 10128, + "end": 10156, + "name": "POP", + "source": 21 + }, + { + "begin": 10128, + "end": 10156, + "name": "POP", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "DUP4", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "DUP1", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "PUSH [tag]", + "source": 21, + "value": "245" + }, + { + "begin": 10178, + "end": 10185, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "PUSH [tag]", + "source": 21, + "value": "246" + }, + { + "begin": 10178, + "end": 10185, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "tag", + "source": 21, + "value": "245" + }, + { + "begin": 10178, + "end": 10185, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "POP", + "source": 21 + }, + { + "begin": 10178, + "end": 10185, + "name": "POP", + "source": 21 + }, + { + "begin": 10070, + "end": 10204, + "name": "tag", + "source": 21, + "value": "241" + }, + { + "begin": 10070, + "end": 10204, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9983, + "end": 10218, + "name": "POP", + "source": 21 + }, + { + "begin": 9983, + "end": 10218, + "name": "POP", + "source": 21 + }, + { + "begin": 9978, + "end": 9981, + "name": "DUP1", + "source": 21 + }, + { + "begin": 9978, + "end": 9981, + "name": "PUSH [tag]", + "source": 21, + "value": "247" + }, + { + "begin": 9978, + "end": 9981, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9978, + "end": 9981, + "name": "PUSH [tag]", + "source": 21, + "value": "246" + }, + { + "begin": 9978, + "end": 9981, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9978, + "end": 9981, + "name": "tag", + "source": 21, + "value": "247" + }, + { + "begin": 9978, + "end": 9981, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9978, + "end": 9981, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9978, + "end": 9981, + "name": "POP", + "source": 21 + }, + { + "begin": 9950, + "end": 10218, + "name": "PUSH [tag]", + "source": 21, + "value": "234" + }, + { + "begin": 9950, + "end": 10218, + "name": "JUMP", + "source": 21 + }, + { + "begin": 9950, + "end": 10218, + "name": "tag", + "source": 21, + "value": "235" + }, + { + "begin": 9950, + "end": 10218, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9950, + "end": 10218, + "name": "POP", + "source": 21 + }, + { + "begin": 10244, + "end": 10250, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10236, + "end": 10241, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10236, + "end": 10250, + "name": "LT", + "source": 21 + }, + { + "begin": 10232, + "end": 10359, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 10232, + "end": 10359, + "name": "PUSH [tag]", + "source": 21, + "value": "248" + }, + { + "begin": 10232, + "end": 10359, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 10321, + "end": 10326, + "name": "DUP1", + "source": 21 + }, + { + "begin": 10308, + "end": 10319, + "name": "DUP4", + "source": 21 + }, + { + "begin": 10301, + "end": 10327, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 10232, + "end": 10359, + "name": "tag", + "source": 21, + "value": "248" + }, + { + "begin": 10232, + "end": 10359, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9858, + "end": 10369, + "name": "POP", + "source": 21 + }, + { + "begin": 9842, + "end": 10369, + "name": "tag", + "source": 21, + "value": "229" + }, + { + "begin": 9842, + "end": 10369, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9787, + "end": 10375, + "name": "POP", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9698, + "end": 10375, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "tag", + "source": 21, + "value": "67" + }, + { + "begin": 6402, + "end": 6555, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6479, + "end": 6491, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 6517, + "end": 6547, + "name": "PUSH [tag]", + "source": 21, + "value": "250" + }, + { + "begin": 6541, + "end": 6546, + "name": "DUP3", + "source": 21 + }, + { + "begin": 6517, + "end": 6537, + "name": "PUSH", + "source": 21, + "value": "8" + }, + { + "begin": 6517, + "end": 6540, + "name": "PUSH [tag]", + "source": 21, + "value": "251" + }, + { + "begin": 6517, + "end": 6540, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6517, + "end": 6547, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6517, + "end": 6547, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6517, + "end": 6547, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 6517, + "end": 6547, + "name": "AND", + "source": 21 + }, + { + "begin": 6517, + "end": 6547, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6517, + "end": 6547, + "name": "tag", + "source": 21, + "value": "250" + }, + { + "begin": 6517, + "end": 6547, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6503, + "end": 6548, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6503, + "end": 6548, + "name": "POP", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "name": "POP", + "source": 21 + }, + { + "begin": 6402, + "end": 6555, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "tag", + "source": 21, + "value": "73" + }, + { + "begin": 20562, + "end": 21364, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "253" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "253" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 20931, + "end": 20945, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 20948, + "end": 20994, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "256" + }, + { + "begin": 20970, + "end": 20976, + "modifierDepth": 1, + "name": "DUP12", + "source": 21 + }, + { + "begin": 20978, + "end": 20984, + "modifierDepth": 1, + "name": "DUP12", + "source": 21 + }, + { + "begin": 20986, + "end": 20993, + "modifierDepth": 1, + "name": "DUP12", + "source": 21 + }, + { + "begin": 20948, + "end": 20994, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 20948, + "end": 20994, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 20948, + "end": 20969, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "257" + }, + { + "begin": 20948, + "end": 20994, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 20948, + "end": 20994, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "256" + }, + { + "begin": 20948, + "end": 20994, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 20948, + "end": 21001, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 20948, + "end": 21001, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 20948, + "end": 21001, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 20931, + "end": 21001, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 20931, + "end": 21001, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 21043, + "end": 21044, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 21016, + "end": 21045, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 21016, + "end": 21045, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 21024, + "end": 21030, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 21016, + "end": 21045, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 21016, + "end": 21045, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 21016, + "end": 21045, + "name": "SUB", + "source": 21 + }, + { + "begin": 21012, + "end": 21106, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "258" + }, + { + "begin": 21012, + "end": 21106, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 21082, + "end": 21088, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 21090, + "end": 21096, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 21098, + "end": 21105, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "B65EE95300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "259" + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "260" + }, + { + "begin": 21054, + "end": 21106, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "259" + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 21054, + "end": 21106, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 21012, + "end": 21106, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "258" + }, + { + "begin": 21012, + "end": 21106, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21117, + "end": 21123, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21146, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 21117, + "end": 21146, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 21117, + "end": 21146, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "6653851A" + }, + { + "begin": 21160, + "end": 21170, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 21184, + "end": 21196, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 21210, + "end": 21221, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 21235, + "end": 21250, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 21264, + "end": 21282, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 21296, + "end": 21309, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 21323, + "end": 21347, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP9", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "E0" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SHL", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "261" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP7", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "262" + }, + { + "begin": 21117, + "end": 21357, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "261" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "EXTCODESIZE", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "263" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 21117, + "end": 21357, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "263" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "GAS", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "CALL", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "265" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 21117, + "end": 21357, + "name": "DUP1", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "265" + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 21117, + "end": 21357, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 20921, + "end": 21364, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "name": "POP", + "source": 21 + }, + { + "begin": 20562, + "end": 21364, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "name": "tag", + "source": 21, + "value": "75" + }, + { + "begin": 1900, + "end": 1982, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1948, + "end": 1982, + "name": "PUSH", + "source": 21, + "value": "DCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9" + }, + { + "begin": 1900, + "end": 1982, + "name": "DUP2", + "source": 21 + }, + { + "begin": 1900, + "end": 1982, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4759, + "end": 4950, + "name": "tag", + "source": 0, + "value": "81" + }, + { + "begin": 4759, + "end": 4950, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4824, + "end": 4831, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 4843, + "end": 4873, + "name": "DUP1", + "source": 0 + }, + { + "begin": 4876, + "end": 4902, + "name": "PUSH [tag]", + "source": 0, + "value": "267" + }, + { + "begin": 4876, + "end": 4900, + "name": "PUSH [tag]", + "source": 0, + "value": "268" + }, + { + "begin": 4876, + "end": 4902, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4876, + "end": 4902, + "name": "tag", + "source": 0, + "value": "267" + }, + { + "begin": 4876, + "end": 4902, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4843, + "end": 4902, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4843, + "end": 4902, + "name": "POP", + "source": 0 + }, + { + "begin": 4919, + "end": 4920, + "name": "DUP1", + "source": 0 + }, + { + "begin": 4919, + "end": 4927, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 4919, + "end": 4927, + "name": "ADD", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 4928, + "end": 4932, + "name": "DUP5", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "DUP2", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 4919, + "end": 4933, + "name": "ADD", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "DUP2", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 4919, + "end": 4933, + "name": "ADD", + "source": 0 + }, + { + "begin": 4919, + "end": 4933, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 4919, + "end": 4933, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 4919, + "end": 4943, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 4919, + "end": 4943, + "name": "ADD", + "source": 0 + }, + { + "begin": 4919, + "end": 4943, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 4912, + "end": 4943, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 4912, + "end": 4943, + "name": "POP", + "source": 0 + }, + { + "begin": 4912, + "end": 4943, + "name": "POP", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "name": "POP", + "source": 0 + }, + { + "begin": 4759, + "end": 4950, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 6781, + "end": 6932, + "name": "tag", + "source": 21, + "value": "86" + }, + { + "begin": 6781, + "end": 6932, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6849, + "end": 6861, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 6880, + "end": 6925, + "name": "PUSH [tag]", + "source": 21, + "value": "270" + }, + { + "begin": 6918, + "end": 6923, + "name": "DUP3", + "source": 21 + }, + { + "begin": 6880, + "end": 6900, + "name": "PUSH", + "source": 21, + "value": "8" + }, + { + "begin": 6880, + "end": 6909, + "name": "PUSH [tag]", + "source": 21, + "value": "271" + }, + { + "begin": 6880, + "end": 6909, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6880, + "end": 6925, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6880, + "end": 6925, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6880, + "end": 6925, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 6880, + "end": 6925, + "name": "AND", + "source": 21 + }, + { + "begin": 6880, + "end": 6925, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6880, + "end": 6925, + "name": "tag", + "source": 21, + "value": "270" + }, + { + "begin": 6880, + "end": 6925, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6873, + "end": 6925, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6873, + "end": 6925, + "name": "POP", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "name": "POP", + "source": 21 + }, + { + "begin": 6781, + "end": 6932, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "tag", + "source": 21, + "value": "91" + }, + { + "begin": 22855, + "end": 23094, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1948, + "end": 1982, + "name": "PUSH", + "source": 21, + "value": "DCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9" + }, + { + "begin": 3191, + "end": 3207, + "name": "PUSH [tag]", + "source": 0, + "value": "273" + }, + { + "begin": 3202, + "end": 3206, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3191, + "end": 3201, + "name": "PUSH [tag]", + "source": 0, + "value": "274" + }, + { + "begin": 3191, + "end": 3207, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3191, + "end": 3207, + "name": "tag", + "source": 0, + "value": "273" + }, + { + "begin": 3191, + "end": 3207, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 23018, + "end": 23087, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "276" + }, + { + "begin": 23046, + "end": 23052, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 23054, + "end": 23060, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 23062, + "end": 23069, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 23071, + "end": 23072, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 23018, + "end": 23087, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23018, + "end": 23087, + "modifierDepth": 1, + "name": "SHL", + "source": 21 + }, + { + "begin": 23084, + "end": 23085, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "GT", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "277" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "278" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "232" + }, + { + "begin": 23074, + "end": 23086, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "278" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "277" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "NOT", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "279" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "MUL", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "CALLDATASIZE", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "CALLDATACOPY", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "279" + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23074, + "end": 23086, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 23018, + "end": 23045, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "280" + }, + { + "begin": 23018, + "end": 23087, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 23018, + "end": 23087, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "276" + }, + { + "begin": 23018, + "end": 23087, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "POP", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "POP", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "POP", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "name": "POP", + "source": 21 + }, + { + "begin": 22855, + "end": 23094, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5246, + "end": 5382, + "name": "tag", + "source": 0, + "value": "95" + }, + { + "begin": 5246, + "end": 5382, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5320, + "end": 5338, + "name": "PUSH [tag]", + "source": 0, + "value": "281" + }, + { + "begin": 5333, + "end": 5337, + "name": "DUP3", + "source": 0 + }, + { + "begin": 5320, + "end": 5332, + "name": "PUSH [tag]", + "source": 0, + "value": "81" + }, + { + "begin": 5320, + "end": 5338, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 5320, + "end": 5338, + "name": "tag", + "source": 0, + "value": "281" + }, + { + "begin": 5320, + "end": 5338, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3191, + "end": 3207, + "name": "PUSH [tag]", + "source": 0, + "value": "283" + }, + { + "begin": 3202, + "end": 3206, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3191, + "end": 3201, + "name": "PUSH [tag]", + "source": 0, + "value": "274" + }, + { + "begin": 3191, + "end": 3207, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3191, + "end": 3207, + "name": "tag", + "source": 0, + "value": "283" + }, + { + "begin": 3191, + "end": 3207, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5350, + "end": 5375, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 0, + "value": "285" + }, + { + "begin": 5361, + "end": 5365, + "modifierDepth": 1, + "name": "DUP4", + "source": 0 + }, + { + "begin": 5367, + "end": 5374, + "modifierDepth": 1, + "name": "DUP4", + "source": 0 + }, + { + "begin": 5350, + "end": 5360, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 0, + "value": "286" + }, + { + "begin": 5350, + "end": 5375, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 0 + }, + { + "begin": 5350, + "end": 5375, + "modifierDepth": 1, + "name": "tag", + "source": 0, + "value": "285" + }, + { + "begin": 5350, + "end": 5375, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5350, + "end": 5375, + "modifierDepth": 1, + "name": "POP", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "POP", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "POP", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "name": "POP", + "source": 0 + }, + { + "begin": 5246, + "end": 5382, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "tag", + "source": 0, + "value": "98" + }, + { + "begin": 6348, + "end": 6593, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 6463, + "end": 6475, + "name": "PUSH [tag]", + "source": 0, + "value": "288" + }, + { + "begin": 6463, + "end": 6473, + "name": "PUSH [tag]", + "source": 0, + "value": "289" + }, + { + "begin": 6463, + "end": 6475, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 6463, + "end": 6475, + "name": "tag", + "source": 0, + "value": "288" + }, + { + "begin": 6463, + "end": 6475, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 6441, + "end": 6475, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6441, + "end": 6475, + "name": "AND", + "source": 0 + }, + { + "begin": 6441, + "end": 6459, + "name": "DUP2", + "source": 0 + }, + { + "begin": 6441, + "end": 6475, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6441, + "end": 6475, + "name": "AND", + "source": 0 + }, + { + "begin": 6441, + "end": 6475, + "name": "EQ", + "source": 0 + }, + { + "begin": 6437, + "end": 6539, + "name": "PUSH [tag]", + "source": 0, + "value": "290" + }, + { + "begin": 6437, + "end": 6539, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 6498, + "end": 6528, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "PUSH", + "source": 0, + "value": "6697B23200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6498, + "end": 6528, + "name": "DUP2", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 6498, + "end": 6528, + "name": "ADD", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 6498, + "end": 6528, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "DUP1", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "SUB", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 6498, + "end": 6528, + "name": "REVERT", + "source": 0 + }, + { + "begin": 6437, + "end": 6539, + "name": "tag", + "source": 0, + "value": "290" + }, + { + "begin": 6437, + "end": 6539, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 6549, + "end": 6586, + "name": "PUSH [tag]", + "source": 0, + "value": "291" + }, + { + "begin": 6561, + "end": 6565, + "name": "DUP3", + "source": 0 + }, + { + "begin": 6567, + "end": 6585, + "name": "DUP3", + "source": 0 + }, + { + "begin": 6549, + "end": 6560, + "name": "PUSH [tag]", + "source": 0, + "value": "292" + }, + { + "begin": 6549, + "end": 6586, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 6549, + "end": 6586, + "name": "tag", + "source": 0, + "value": "291" + }, + { + "begin": 6549, + "end": 6586, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 6549, + "end": 6586, + "name": "POP", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "POP", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "name": "POP", + "source": 0 + }, + { + "begin": 6348, + "end": 6593, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 17054, + "end": 18193, + "name": "tag", + "source": 21, + "value": "102" + }, + { + "begin": 17054, + "end": 18193, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "294" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "294" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2218, + "end": 2219, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 17388, + "end": 17395, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17388, + "end": 17411, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 17388, + "end": 17411, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 17388, + "end": 17411, + "modifierDepth": 1, + "name": "LT", + "source": 21 + }, + { + "begin": 17384, + "end": 17453, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 17384, + "end": 17453, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "296" + }, + { + "begin": 17384, + "end": 17453, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 17445, + "end": 17452, + "modifierDepth": 1, + "name": "DUP9", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4F958E7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "297" + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "298" + }, + { + "begin": 17420, + "end": 17453, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "297" + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17420, + "end": 17453, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 17384, + "end": 17453, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "296" + }, + { + "begin": 17384, + "end": 17453, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17464, + "end": 17478, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "299" + }, + { + "begin": 17528, + "end": 17538, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17552, + "end": 17564, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17578, + "end": 17589, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17603, + "end": 17618, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17632, + "end": 17650, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17664, + "end": 17677, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17691, + "end": 17715, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17489, + "end": 17490, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 17481, + "end": 17491, + "name": "DUP1", + "source": 21 + }, + { + "begin": 17481, + "end": 17491, + "modifierDepth": 1, + "name": "SHL", + "source": 21 + }, + { + "begin": 17481, + "end": 17514, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "300" + }, + { + "begin": 17481, + "end": 17514, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP7", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "299" + }, + { + "begin": 17481, + "end": 17725, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17464, + "end": 17725, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17464, + "end": 17725, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 17740, + "end": 17746, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 17736, + "end": 17826, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 17736, + "end": 17826, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "301" + }, + { + "begin": 17736, + "end": 17826, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "302" + }, + { + "begin": 17786, + "end": 17790, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 2167, + "end": 2170, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 17771, + "end": 17777, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 17771, + "end": 17785, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "303" + }, + { + "begin": 17771, + "end": 17785, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 17771, + "end": 17815, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "302" + }, + { + "begin": 17771, + "end": 17815, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17762, + "end": 17815, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17762, + "end": 17815, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 17736, + "end": 17826, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "301" + }, + { + "begin": 17736, + "end": 17826, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "304" + }, + { + "begin": 17849, + "end": 17856, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 17866, + "end": 17872, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 17858, + "end": 17873, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 17858, + "end": 17873, + "modifierDepth": 1, + "name": "SHR", + "source": 21 + }, + { + "begin": 17836, + "end": 17844, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 17836, + "end": 17848, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "305" + }, + { + "begin": 17836, + "end": 17848, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "304" + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17836, + "end": 17874, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 17913, + "end": 17920, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "839844A256A87F87C9C835117D9A1C40BE013954064C937072ACB32D36DB6A28" + }, + { + "begin": 17934, + "end": 17944, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 17958, + "end": 17970, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 17984, + "end": 17995, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 18009, + "end": 18024, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 18038, + "end": 18056, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 18070, + "end": 18083, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 18097, + "end": 18121, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "306" + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP7", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "307" + }, + { + "begin": 17890, + "end": 18131, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "306" + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 17890, + "end": 18131, + "modifierDepth": 1, + "name": "LOG2", + "source": 21 + }, + { + "begin": 18179, + "end": 18185, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 18170, + "end": 18177, + "modifierDepth": 1, + "name": "DUP11", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD" + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18147, + "end": 18186, + "modifierDepth": 1, + "name": "LOG3", + "source": 21 + }, + { + "begin": 17374, + "end": 18193, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "name": "POP", + "source": 21 + }, + { + "begin": 17054, + "end": 18193, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "tag", + "source": 21, + "value": "106" + }, + { + "begin": 21951, + "end": 22455, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 1948, + "end": 1982, + "name": "PUSH", + "source": 21, + "value": "DCF4465AA60D92459EB361FAC2489220AE3C524301CC0433C30A5D83E8FB0FA9" + }, + { + "begin": 3191, + "end": 3207, + "name": "PUSH [tag]", + "source": 0, + "value": "309" + }, + { + "begin": 3202, + "end": 3206, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3191, + "end": 3201, + "name": "PUSH [tag]", + "source": 0, + "value": "274" + }, + { + "begin": 3191, + "end": 3207, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3191, + "end": 3207, + "name": "tag", + "source": 0, + "value": "309" + }, + { + "begin": 3191, + "end": 3207, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 22242, + "end": 22243, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 22199, + "end": 22244, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 22199, + "end": 22244, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 22199, + "end": 22230, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "311" + }, + { + "begin": 22214, + "end": 22229, + "modifierDepth": 1, + "name": "DUP6", + "source": 21 + }, + { + "begin": 22199, + "end": 22213, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "312" + }, + { + "begin": 22199, + "end": 22230, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 22199, + "end": 22230, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "311" + }, + { + "begin": 22199, + "end": 22230, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22199, + "end": 22244, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 22199, + "end": 22244, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 22199, + "end": 22244, + "modifierDepth": 1, + "name": "EQ", + "source": 21 + }, + { + "begin": 22199, + "end": 22284, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22199, + "end": 22284, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "313" + }, + { + "begin": 22199, + "end": 22284, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 22199, + "end": 22284, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22283, + "end": 22284, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 22248, + "end": 22284, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "A0" + }, + { + "begin": 22248, + "end": 22284, + "modifierDepth": 1, + "name": "SHL", + "source": 21 + }, + { + "begin": 22248, + "end": 22279, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "314" + }, + { + "begin": 22263, + "end": 22278, + "modifierDepth": 1, + "name": "DUP6", + "source": 21 + }, + { + "begin": 22248, + "end": 22262, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "315" + }, + { + "begin": 22248, + "end": 22279, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 22248, + "end": 22279, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "314" + }, + { + "begin": 22248, + "end": 22279, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22248, + "end": 22284, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 22248, + "end": 22284, + "modifierDepth": 1, + "name": "NOT", + "source": 21 + }, + { + "begin": 22248, + "end": 22284, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 22248, + "end": 22284, + "modifierDepth": 1, + "name": "EQ", + "source": 21 + }, + { + "begin": 22199, + "end": 22284, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "313" + }, + { + "begin": 22199, + "end": 22284, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22195, + "end": 22353, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 22195, + "end": 22353, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "316" + }, + { + "begin": 22195, + "end": 22353, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "D43A15D100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 22307, + "end": 22342, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 22195, + "end": 22353, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "316" + }, + { + "begin": 22195, + "end": 22353, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "317" + }, + { + "begin": 22391, + "end": 22397, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 22399, + "end": 22405, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 22407, + "end": 22414, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 22416, + "end": 22431, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 22433, + "end": 22447, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 22433, + "end": 22447, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DIV", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "MUL", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "CALLDATACOPY", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "NOT", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 22363, + "end": 22390, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "280" + }, + { + "begin": 22363, + "end": 22448, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "317" + }, + { + "begin": 22363, + "end": 22448, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "POP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "POP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "POP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "POP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "POP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "POP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "name": "POP", + "source": 21 + }, + { + "begin": 21951, + "end": 22455, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "tag", + "source": 21, + "value": "110" + }, + { + "begin": 26236, + "end": 26332, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "319" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "319" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 26308, + "end": 26312, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26308, + "end": 26323, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26308, + "end": 26323, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 26308, + "end": 26323, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "D3B9FBE4" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "E0" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "SHL", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "EXTCODESIZE", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "321" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26308, + "end": 26325, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "321" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "GAS", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "CALL", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "323" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26308, + "end": 26325, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "323" + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 26308, + "end": 26325, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "name": "POP", + "source": 21 + }, + { + "begin": 26236, + "end": 26332, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "tag", + "source": 21, + "value": "112" + }, + { + "begin": 4471, + "end": 4589, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4530, + "end": 4550, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 4569, + "end": 4582, + "name": "DUP1", + "source": 21 + }, + { + "begin": 4569, + "end": 4582, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 4569, + "end": 4582, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4569, + "end": 4582, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 4569, + "end": 4582, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4569, + "end": 4582, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 4569, + "end": 4582, + "name": "EXP", + "source": 21 + }, + { + "begin": 4569, + "end": 4582, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4569, + "end": 4582, + "name": "DIV", + "source": 21 + }, + { + "begin": 4569, + "end": 4582, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4569, + "end": 4582, + "name": "AND", + "source": 21 + }, + { + "begin": 4562, + "end": 4582, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4562, + "end": 4582, + "name": "POP", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4471, + "end": 4589, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "tag", + "source": 21, + "value": "118" + }, + { + "begin": 18573, + "end": 19105, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "326" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "326" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "328" + }, + { + "begin": 18691, + "end": 18698, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18673, + "end": 18681, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 18673, + "end": 18690, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "329" + }, + { + "begin": 18673, + "end": 18690, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18673, + "end": 18699, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "328" + }, + { + "begin": 18673, + "end": 18699, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18668, + "end": 18746, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "330" + }, + { + "begin": 18668, + "end": 18746, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 18738, + "end": 18745, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FB22C17E00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "331" + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "298" + }, + { + "begin": 18708, + "end": 18746, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "331" + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18708, + "end": 18746, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 18668, + "end": 18746, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "330" + }, + { + "begin": 18668, + "end": 18746, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18757, + "end": 18771, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "332" + }, + { + "begin": 18795, + "end": 18802, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18782, + "end": 18790, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 18782, + "end": 18794, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "333" + }, + { + "begin": 18782, + "end": 18794, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18782, + "end": 18803, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "332" + }, + { + "begin": 18782, + "end": 18803, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18774, + "end": 18804, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 18774, + "end": 18804, + "modifierDepth": 1, + "name": "SHL", + "source": 21 + }, + { + "begin": 18757, + "end": 18804, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18757, + "end": 18804, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 18864, + "end": 18870, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 18819, + "end": 18870, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 18819, + "end": 18870, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 18819, + "end": 18860, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "334" + }, + { + "begin": 2167, + "end": 2170, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 18819, + "end": 18825, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 18819, + "end": 18836, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "335" + }, + { + "begin": 18819, + "end": 18836, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18819, + "end": 18860, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18819, + "end": 18860, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18819, + "end": 18860, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 18819, + "end": 18860, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18819, + "end": 18860, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 18819, + "end": 18860, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "334" + }, + { + "begin": 18819, + "end": 18860, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18819, + "end": 18870, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 18819, + "end": 18870, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 18819, + "end": 18870, + "name": "SUB", + "source": 21 + }, + { + "begin": 18815, + "end": 18955, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "336" + }, + { + "begin": 18815, + "end": 18955, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "237C71B600000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18893, + "end": 18944, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 18815, + "end": 18955, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "336" + }, + { + "begin": 18815, + "end": 18955, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "337" + }, + { + "begin": 18978, + "end": 18985, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "338" + }, + { + "begin": 19010, + "end": 19016, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 2167, + "end": 2170, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 18995, + "end": 19001, + "modifierDepth": 1, + "name": "DUP6", + "source": 21 + }, + { + "begin": 18995, + "end": 19009, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "303" + }, + { + "begin": 18995, + "end": 19009, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18995, + "end": 19041, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "338" + }, + { + "begin": 18995, + "end": 19041, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18987, + "end": 19042, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 18987, + "end": 19042, + "modifierDepth": 1, + "name": "SHR", + "source": 21 + }, + { + "begin": 18965, + "end": 18973, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 18965, + "end": 18977, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "305" + }, + { + "begin": 18965, + "end": 18977, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "337" + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 18965, + "end": 19043, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 19091, + "end": 19097, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 19082, + "end": 19089, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "58A8B6A02B964CCA2712E5A71D7B0D564A56B4A0F573B4C47F389341ADE14CFD" + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19059, + "end": 19098, + "modifierDepth": 1, + "name": "LOG3", + "source": 21 + }, + { + "begin": 18658, + "end": 19105, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "POP", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "name": "POP", + "source": 21 + }, + { + "begin": 18573, + "end": 19105, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "tag", + "source": 21, + "value": "120" + }, + { + "begin": 5439, + "end": 5565, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5501, + "end": 5521, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5540, + "end": 5551, + "name": "PUSH", + "source": 21, + "value": "3" + }, + { + "begin": 5540, + "end": 5558, + "name": "DUP1", + "source": 21 + }, + { + "begin": 5540, + "end": 5558, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 5540, + "end": 5558, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5540, + "end": 5558, + "name": "POP", + "source": 21 + }, + { + "begin": 5533, + "end": 5558, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5533, + "end": 5558, + "name": "POP", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5439, + "end": 5565, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "tag", + "source": 21, + "value": "125" + }, + { + "begin": 24596, + "end": 24860, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "341" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "341" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 24681, + "end": 24726, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "343" + }, + { + "begin": 24714, + "end": 24724, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24681, + "end": 24701, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "8" + }, + { + "begin": 24681, + "end": 24705, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "344" + }, + { + "begin": 24681, + "end": 24705, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24681, + "end": 24726, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24681, + "end": 24726, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24681, + "end": 24726, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 24681, + "end": 24726, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 24681, + "end": 24726, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 24681, + "end": 24726, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "343" + }, + { + "begin": 24681, + "end": 24726, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24676, + "end": 24811, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "345" + }, + { + "begin": 24676, + "end": 24811, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 24789, + "end": 24799, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "3CE0AD900000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "346" + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "69" + }, + { + "begin": 24749, + "end": 24800, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "346" + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24749, + "end": 24800, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 24676, + "end": 24811, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "345" + }, + { + "begin": 24676, + "end": 24811, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24842, + "end": 24852, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "84CC2115995684DCB0CD3D3A9565E3D32F075DE81DB70C8DC3A719B2A47AF67E" + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24826, + "end": 24853, + "modifierDepth": 1, + "name": "LOG2", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "name": "POP", + "source": 21 + }, + { + "begin": 24596, + "end": 24860, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "tag", + "source": 21, + "value": "127" + }, + { + "begin": 9425, + "end": 9558, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9483, + "end": 9517, + "name": "PUSH", + "source": 21, + "value": "60" + }, + { + "begin": 9536, + "end": 9551, + "name": "PUSH [tag]", + "source": 21, + "value": "348" + }, + { + "begin": 9536, + "end": 9544, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 9536, + "end": 9549, + "name": "PUSH [tag]", + "source": 21, + "value": "349" + }, + { + "begin": 9536, + "end": 9551, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9536, + "end": 9551, + "name": "tag", + "source": 21, + "value": "348" + }, + { + "begin": 9536, + "end": 9551, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9529, + "end": 9551, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9529, + "end": 9551, + "name": "POP", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9425, + "end": 9558, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "tag", + "source": 21, + "value": "132" + }, + { + "begin": 12340, + "end": 14836, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12476, + "end": 12488, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 12509, + "end": 12535, + "name": "PUSH [tag]", + "source": 21, + "value": "351" + }, + { + "begin": 12527, + "end": 12534, + "name": "DUP3", + "source": 21 + }, + { + "begin": 12509, + "end": 12535, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 12509, + "end": 12535, + "name": "AND", + "source": 21 + }, + { + "begin": 12509, + "end": 12517, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 12509, + "end": 12526, + "name": "PUSH [tag]", + "source": 21, + "value": "329" + }, + { + "begin": 12509, + "end": 12526, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12509, + "end": 12535, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12509, + "end": 12535, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12509, + "end": 12535, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 12509, + "end": 12535, + "name": "AND", + "source": 21 + }, + { + "begin": 12509, + "end": 12535, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12509, + "end": 12535, + "name": "tag", + "source": 21, + "value": "351" + }, + { + "begin": 12509, + "end": 12535, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12504, + "end": 12582, + "name": "PUSH [tag]", + "source": 21, + "value": "352" + }, + { + "begin": 12504, + "end": 12582, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 12574, + "end": 12581, + "name": "DUP2", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12544, + "end": 12582, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "PUSH", + "source": 21, + "value": "FB22C17E00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 12544, + "end": 12582, + "name": "DUP2", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 12544, + "end": 12582, + "name": "ADD", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "PUSH [tag]", + "source": 21, + "value": "353" + }, + { + "begin": 12544, + "end": 12582, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "PUSH [tag]", + "source": 21, + "value": "298" + }, + { + "begin": 12544, + "end": 12582, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "tag", + "source": 21, + "value": "353" + }, + { + "begin": 12544, + "end": 12582, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12544, + "end": 12582, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "SUB", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12544, + "end": 12582, + "name": "REVERT", + "source": 21 + }, + { + "begin": 12504, + "end": 12582, + "name": "tag", + "source": 21, + "value": "352" + }, + { + "begin": 12504, + "end": 12582, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12593, + "end": 12607, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 12618, + "end": 12639, + "name": "PUSH [tag]", + "source": 21, + "value": "354" + }, + { + "begin": 12631, + "end": 12638, + "name": "DUP4", + "source": 21 + }, + { + "begin": 12618, + "end": 12639, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 12618, + "end": 12639, + "name": "AND", + "source": 21 + }, + { + "begin": 12618, + "end": 12626, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 12618, + "end": 12630, + "name": "PUSH [tag]", + "source": 21, + "value": "333" + }, + { + "begin": 12618, + "end": 12630, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12618, + "end": 12639, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12618, + "end": 12639, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12618, + "end": 12639, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 12618, + "end": 12639, + "name": "AND", + "source": 21 + }, + { + "begin": 12618, + "end": 12639, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12618, + "end": 12639, + "name": "tag", + "source": 21, + "value": "354" + }, + { + "begin": 12618, + "end": 12639, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12610, + "end": 12640, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 12610, + "end": 12640, + "name": "SHL", + "source": 21 + }, + { + "begin": 12593, + "end": 12640, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12593, + "end": 12640, + "name": "POP", + "source": 21 + }, + { + "begin": 12650, + "end": 12662, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 12679, + "end": 12686, + "name": "PUSH [tag]", + "source": 21, + "value": "355" + }, + { + "begin": 12679, + "end": 12684, + "name": "PUSH [tag]", + "source": 21, + "value": "172" + }, + { + "begin": 12679, + "end": 12686, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12679, + "end": 12686, + "name": "tag", + "source": 21, + "value": "355" + }, + { + "begin": 12679, + "end": 12686, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12665, + "end": 12686, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12665, + "end": 12686, + "name": "AND", + "source": 21 + }, + { + "begin": 12665, + "end": 12675, + "name": "CALLER", + "source": 21 + }, + { + "begin": 12665, + "end": 12686, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12665, + "end": 12686, + "name": "AND", + "source": 21 + }, + { + "begin": 12665, + "end": 12686, + "name": "EQ", + "source": 21 + }, + { + "begin": 12650, + "end": 12686, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12650, + "end": 12686, + "name": "POP", + "source": 21 + }, + { + "begin": 12702, + "end": 12723, + "name": "PUSH [tag]", + "source": 21, + "value": "356" + }, + { + "begin": 12716, + "end": 12722, + "name": "DUP3", + "source": 21 + }, + { + "begin": 12702, + "end": 12715, + "name": "PUSH [tag]", + "source": 21, + "value": "240" + }, + { + "begin": 12702, + "end": 12723, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12702, + "end": 12723, + "name": "tag", + "source": 21, + "value": "356" + }, + { + "begin": 12702, + "end": 12723, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12701, + "end": 12723, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 12701, + "end": 12735, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12701, + "end": 12735, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 12701, + "end": 12735, + "name": "PUSH [tag]", + "source": 21, + "value": "357" + }, + { + "begin": 12701, + "end": 12735, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 12701, + "end": 12735, + "name": "POP", + "source": 21 + }, + { + "begin": 12728, + "end": 12735, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12727, + "end": 12735, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 12701, + "end": 12735, + "name": "tag", + "source": 21, + "value": "357" + }, + { + "begin": 12701, + "end": 12735, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12697, + "end": 12823, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 12697, + "end": 12823, + "name": "PUSH [tag]", + "source": 21, + "value": "358" + }, + { + "begin": 12697, + "end": 12823, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 12792, + "end": 12802, + "name": "CALLER", + "source": 21 + }, + { + "begin": 12804, + "end": 12811, + "name": "DUP5", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12758, + "end": 12812, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "PUSH", + "source": 21, + "value": "9F85FCE00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 12758, + "end": 12812, + "name": "DUP2", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 12758, + "end": 12812, + "name": "ADD", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "PUSH [tag]", + "source": 21, + "value": "359" + }, + { + "begin": 12758, + "end": 12812, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "PUSH [tag]", + "source": 21, + "value": "360" + }, + { + "begin": 12758, + "end": 12812, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "tag", + "source": 21, + "value": "359" + }, + { + "begin": 12758, + "end": 12812, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12758, + "end": 12812, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "SUB", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12758, + "end": 12812, + "name": "REVERT", + "source": 21 + }, + { + "begin": 12697, + "end": 12823, + "name": "tag", + "source": 21, + "value": "358" + }, + { + "begin": 12697, + "end": 12823, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12838, + "end": 12884, + "name": "PUSH [tag]", + "source": 21, + "value": "361" + }, + { + "begin": 12876, + "end": 12882, + "name": "DUP7", + "source": 21 + }, + { + "begin": 12838, + "end": 12858, + "name": "PUSH", + "source": 21, + "value": "8" + }, + { + "begin": 12838, + "end": 12867, + "name": "PUSH [tag]", + "source": 21, + "value": "271" + }, + { + "begin": 12838, + "end": 12867, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12838, + "end": 12884, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12838, + "end": 12884, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12838, + "end": 12884, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 12838, + "end": 12884, + "name": "AND", + "source": 21 + }, + { + "begin": 12838, + "end": 12884, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12838, + "end": 12884, + "name": "tag", + "source": 21, + "value": "361" + }, + { + "begin": 12838, + "end": 12884, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12833, + "end": 12936, + "name": "PUSH [tag]", + "source": 21, + "value": "362" + }, + { + "begin": 12833, + "end": 12936, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 12929, + "end": 12935, + "name": "DUP6", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12893, + "end": 12936, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "PUSH", + "source": 21, + "value": "8E888EF300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 12893, + "end": 12936, + "name": "DUP2", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 12893, + "end": 12936, + "name": "ADD", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "PUSH [tag]", + "source": 21, + "value": "363" + }, + { + "begin": 12893, + "end": 12936, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "PUSH [tag]", + "source": 21, + "value": "69" + }, + { + "begin": 12893, + "end": 12936, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "tag", + "source": 21, + "value": "363" + }, + { + "begin": 12893, + "end": 12936, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12893, + "end": 12936, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "SUB", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12893, + "end": 12936, + "name": "REVERT", + "source": 21 + }, + { + "begin": 12833, + "end": 12936, + "name": "tag", + "source": 21, + "value": "362" + }, + { + "begin": 12833, + "end": 12936, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12961, + "end": 12967, + "name": "DUP6", + "source": 21 + }, + { + "begin": 12951, + "end": 12967, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12951, + "end": 12967, + "name": "AND", + "source": 21 + }, + { + "begin": 12951, + "end": 12957, + "name": "DUP8", + "source": 21 + }, + { + "begin": 12951, + "end": 12967, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12951, + "end": 12967, + "name": "AND", + "source": 21 + }, + { + "begin": 12951, + "end": 12967, + "name": "SUB", + "source": 21 + }, + { + "begin": 12947, + "end": 13013, + "name": "PUSH [tag]", + "source": 21, + "value": "364" + }, + { + "begin": 12947, + "end": 13013, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 13006, + "end": 13012, + "name": "DUP7", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12976, + "end": 13013, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "PUSH", + "source": 21, + "value": "2F9B185300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 12976, + "end": 13013, + "name": "DUP2", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 12976, + "end": 13013, + "name": "ADD", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "PUSH [tag]", + "source": 21, + "value": "365" + }, + { + "begin": 12976, + "end": 13013, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "PUSH [tag]", + "source": 21, + "value": "69" + }, + { + "begin": 12976, + "end": 13013, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "tag", + "source": 21, + "value": "365" + }, + { + "begin": 12976, + "end": 13013, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 12976, + "end": 13013, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "DUP1", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "SUB", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 12976, + "end": 13013, + "name": "REVERT", + "source": 21 + }, + { + "begin": 12947, + "end": 13013, + "name": "tag", + "source": 21, + "value": "364" + }, + { + "begin": 12947, + "end": 13013, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13094, + "end": 13139, + "name": "PUSH [tag]", + "source": 21, + "value": "366" + }, + { + "begin": 13121, + "end": 13129, + "name": "DUP6", + "source": 21 + }, + { + "begin": 13131, + "end": 13138, + "name": "DUP6", + "source": 21 + }, + { + "begin": 13094, + "end": 13120, + "name": "PUSH [tag]", + "source": 21, + "value": "367" + }, + { + "begin": 13094, + "end": 13139, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13094, + "end": 13139, + "name": "tag", + "source": 21, + "value": "366" + }, + { + "begin": 13094, + "end": 13139, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13094, + "end": 13139, + "name": "POP", + "source": 21 + }, + { + "begin": 13258, + "end": 13271, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13273, + "end": 13286, + "name": "DUP1", + "source": 21 + }, + { + "begin": 13290, + "end": 13317, + "name": "PUSH [tag]", + "source": 21, + "value": "368" + }, + { + "begin": 13302, + "end": 13308, + "name": "DUP10", + "source": 21 + }, + { + "begin": 13310, + "end": 13316, + "name": "DUP10", + "source": 21 + }, + { + "begin": 13290, + "end": 13301, + "name": "PUSH [tag]", + "source": 21, + "value": "369" + }, + { + "begin": 13290, + "end": 13317, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13290, + "end": 13317, + "name": "tag", + "source": 21, + "value": "368" + }, + { + "begin": 13290, + "end": 13317, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13257, + "end": 13317, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 13257, + "end": 13317, + "name": "POP", + "source": 21 + }, + { + "begin": 13257, + "end": 13317, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 13257, + "end": 13317, + "name": "POP", + "source": 21 + }, + { + "begin": 13396, + "end": 13397, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13369, + "end": 13398, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13369, + "end": 13398, + "name": "AND", + "source": 21 + }, + { + "begin": 13377, + "end": 13383, + "name": "DUP3", + "source": 21 + }, + { + "begin": 13369, + "end": 13398, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13369, + "end": 13398, + "name": "AND", + "source": 21 + }, + { + "begin": 13369, + "end": 13398, + "name": "SUB", + "source": 21 + }, + { + "begin": 13365, + "end": 13431, + "name": "PUSH [tag]", + "source": 21, + "value": "370" + }, + { + "begin": 13365, + "end": 13431, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 13407, + "end": 13431, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "PUSH", + "source": 21, + "value": "95CF3EE400000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 13407, + "end": 13431, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 13407, + "end": 13431, + "name": "ADD", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 13407, + "end": 13431, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "DUP1", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "SUB", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13407, + "end": 13431, + "name": "REVERT", + "source": 21 + }, + { + "begin": 13365, + "end": 13431, + "name": "tag", + "source": 21, + "value": "370" + }, + { + "begin": 13365, + "end": 13431, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13510, + "end": 13511, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13445, + "end": 13512, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13445, + "end": 13512, + "name": "AND", + "source": 21 + }, + { + "begin": 13453, + "end": 13465, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 13453, + "end": 13473, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13466, + "end": 13472, + "name": "DUP5", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13453, + "end": 13473, + "name": "AND", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13453, + "end": 13473, + "name": "AND", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13453, + "end": 13473, + "name": "ADD", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13453, + "end": 13473, + "name": "ADD", + "source": 21 + }, + { + "begin": 13453, + "end": 13473, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13453, + "end": 13473, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13474, + "end": 13480, + "name": "DUP4", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13453, + "end": 13481, + "name": "AND", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13453, + "end": 13481, + "name": "AND", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13453, + "end": 13481, + "name": "ADD", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13453, + "end": 13481, + "name": "ADD", + "source": 21 + }, + { + "begin": 13453, + "end": 13481, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13453, + "end": 13481, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13482, + "end": 13489, + "name": "DUP9", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 13453, + "end": 13490, + "name": "AND", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13453, + "end": 13490, + "name": "ADD", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13453, + "end": 13490, + "name": "ADD", + "source": 21 + }, + { + "begin": 13453, + "end": 13490, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13453, + "end": 13490, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13453, + "end": 13497, + "name": "ADD", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 13453, + "end": 13497, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 13453, + "end": 13497, + "name": "EXP", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "DIV", + "source": 21 + }, + { + "begin": 13453, + "end": 13497, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13453, + "end": 13497, + "name": "AND", + "source": 21 + }, + { + "begin": 13445, + "end": 13512, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13445, + "end": 13512, + "name": "AND", + "source": 21 + }, + { + "begin": 13445, + "end": 13512, + "name": "EQ", + "source": 21 + }, + { + "begin": 13441, + "end": 13601, + "name": "PUSH [tag]", + "source": 21, + "value": "371" + }, + { + "begin": 13441, + "end": 13601, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 13566, + "end": 13572, + "name": "DUP9", + "source": 21 + }, + { + "begin": 13574, + "end": 13580, + "name": "DUP9", + "source": 21 + }, + { + "begin": 13582, + "end": 13589, + "name": "DUP8", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 13535, + "end": 13590, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "PUSH", + "source": 21, + "value": "CB27A43500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 13535, + "end": 13590, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 13535, + "end": 13590, + "name": "ADD", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "PUSH [tag]", + "source": 21, + "value": "372" + }, + { + "begin": 13535, + "end": 13590, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "PUSH [tag]", + "source": 21, + "value": "260" + }, + { + "begin": 13535, + "end": 13590, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "tag", + "source": 21, + "value": "372" + }, + { + "begin": 13535, + "end": 13590, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 13535, + "end": 13590, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "DUP1", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "SUB", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13535, + "end": 13590, + "name": "REVERT", + "source": 21 + }, + { + "begin": 13441, + "end": 13601, + "name": "tag", + "source": 21, + "value": "371" + }, + { + "begin": 13441, + "end": 13601, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13625, + "end": 13642, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 13756, + "end": 13778, + "name": "PUSH [tag]", + "source": 21, + "value": "373" + }, + { + "begin": 13756, + "end": 13762, + "name": "DUP6", + "source": 21 + }, + { + "begin": 13756, + "end": 13776, + "name": "PUSH [tag]", + "source": 21, + "value": "374" + }, + { + "begin": 13756, + "end": 13778, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13756, + "end": 13778, + "name": "tag", + "source": 21, + "value": "373" + }, + { + "begin": 13756, + "end": 13778, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13796, + "end": 13820, + "name": "PUSH [tag]", + "source": 21, + "value": "375" + }, + { + "begin": 13796, + "end": 13802, + "name": "DUP7", + "source": 21 + }, + { + "begin": 13796, + "end": 13818, + "name": "PUSH [tag]", + "source": 21, + "value": "376" + }, + { + "begin": 13796, + "end": 13820, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13796, + "end": 13820, + "name": "tag", + "source": 21, + "value": "375" + }, + { + "begin": 13796, + "end": 13820, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13838, + "end": 13861, + "name": "PUSH [tag]", + "source": 21, + "value": "377" + }, + { + "begin": 13838, + "end": 13844, + "name": "DUP8", + "source": 21 + }, + { + "begin": 13838, + "end": 13859, + "name": "PUSH [tag]", + "source": 21, + "value": "378" + }, + { + "begin": 13838, + "end": 13861, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13838, + "end": 13861, + "name": "tag", + "source": 21, + "value": "377" + }, + { + "begin": 13838, + "end": 13861, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13879, + "end": 13906, + "name": "PUSH [tag]", + "source": 21, + "value": "379" + }, + { + "begin": 13879, + "end": 13885, + "name": "DUP9", + "source": 21 + }, + { + "begin": 13879, + "end": 13904, + "name": "PUSH [tag]", + "source": 21, + "value": "380" + }, + { + "begin": 13879, + "end": 13906, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13879, + "end": 13906, + "name": "tag", + "source": 21, + "value": "379" + }, + { + "begin": 13879, + "end": 13906, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13924, + "end": 13954, + "name": "PUSH [tag]", + "source": 21, + "value": "381" + }, + { + "begin": 13924, + "end": 13930, + "name": "DUP10", + "source": 21 + }, + { + "begin": 13924, + "end": 13952, + "name": "PUSH [tag]", + "source": 21, + "value": "382" + }, + { + "begin": 13924, + "end": 13954, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13924, + "end": 13954, + "name": "tag", + "source": 21, + "value": "381" + }, + { + "begin": 13924, + "end": 13954, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13972, + "end": 13997, + "name": "PUSH [tag]", + "source": 21, + "value": "383" + }, + { + "begin": 13972, + "end": 13978, + "name": "DUP11", + "source": 21 + }, + { + "begin": 13972, + "end": 13995, + "name": "PUSH [tag]", + "source": 21, + "value": "384" + }, + { + "begin": 13972, + "end": 13997, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13972, + "end": 13997, + "name": "tag", + "source": 21, + "value": "383" + }, + { + "begin": 13972, + "end": 13997, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14015, + "end": 14051, + "name": "PUSH [tag]", + "source": 21, + "value": "385" + }, + { + "begin": 14015, + "end": 14021, + "name": "DUP12", + "source": 21 + }, + { + "begin": 14015, + "end": 14049, + "name": "PUSH [tag]", + "source": 21, + "value": "386" + }, + { + "begin": 14015, + "end": 14051, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14015, + "end": 14051, + "name": "tag", + "source": 21, + "value": "385" + }, + { + "begin": 14015, + "end": 14051, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14069, + "end": 14077, + "name": "DUP15", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 13645, + "end": 14091, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "24" + }, + { + "begin": 13645, + "end": 14091, + "name": "ADD", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH [tag]", + "source": 21, + "value": "387" + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP9", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP7", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH [tag]", + "source": 21, + "value": "388" + }, + { + "begin": 13645, + "end": 14091, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "tag", + "source": 21, + "value": "387" + }, + { + "begin": 13645, + "end": 14091, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 13645, + "end": 14091, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP4", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SUB", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SUB", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 13645, + "end": 14091, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "47973BFF00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13645, + "end": 14091, + "name": "NOT", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "AND", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP3", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "ADD", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP1", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP4", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP2", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP4", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "AND", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "OR", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "DUP4", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "POP", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "POP", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "POP", + "source": 21 + }, + { + "begin": 13645, + "end": 14091, + "name": "POP", + "source": 21 + }, + { + "begin": 13625, + "end": 14091, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 13625, + "end": 14091, + "name": "POP", + "source": 21 + }, + { + "begin": 14106, + "end": 14118, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14148, + "end": 14154, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14156, + "end": 14162, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14164, + "end": 14171, + "name": "DUP10", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14131, + "end": 14172, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14131, + "end": 14172, + "name": "ADD", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "PUSH [tag]", + "source": 21, + "value": "389" + }, + { + "begin": 14131, + "end": 14172, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "PUSH [tag]", + "source": 21, + "value": "390" + }, + { + "begin": 14131, + "end": 14172, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "tag", + "source": 21, + "value": "389" + }, + { + "begin": 14131, + "end": 14172, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14131, + "end": 14172, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14131, + "end": 14172, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "SUB", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "SUB", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14131, + "end": 14172, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14131, + "end": 14172, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14121, + "end": 14173, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14121, + "end": 14173, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14121, + "end": 14173, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14121, + "end": 14173, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14121, + "end": 14173, + "name": "ADD", + "source": 21 + }, + { + "begin": 14121, + "end": 14173, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 14106, + "end": 14173, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14106, + "end": 14173, + "name": "POP", + "source": 21 + }, + { + "begin": 14188, + "end": 14209, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14246, + "end": 14282, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14246, + "end": 14282, + "name": "ADD", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH [tag]", + "source": 21, + "value": "391" + }, + { + "begin": 14246, + "end": 14282, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH [tag]", + "source": 21, + "value": "392" + }, + { + "begin": 14246, + "end": 14282, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "tag", + "source": 21, + "value": "391" + }, + { + "begin": 14246, + "end": 14282, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14246, + "end": 14282, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "ADD", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "SUB", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 14246, + "end": 14282, + "name": "NOT", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 14246, + "end": 14282, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "ADD", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "AND", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14246, + "end": 14282, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14246, + "end": 14282, + "name": "POP", + "source": 21 + }, + { + "begin": 14311, + "end": 14324, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 14311, + "end": 14324, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14311, + "end": 14324, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14311, + "end": 14324, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14311, + "end": 14324, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14311, + "end": 14324, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 14311, + "end": 14324, + "name": "EXP", + "source": 21 + }, + { + "begin": 14311, + "end": 14324, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14311, + "end": 14324, + "name": "DIV", + "source": 21 + }, + { + "begin": 14311, + "end": 14324, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14311, + "end": 14324, + "name": "AND", + "source": 21 + }, + { + "begin": 14326, + "end": 14332, + "name": "DUP14", + "source": 21 + }, + { + "begin": 14334, + "end": 14340, + "name": "DUP14", + "source": 21 + }, + { + "begin": 14342, + "end": 14349, + "name": "DUP13", + "source": 21 + }, + { + "begin": 14351, + "end": 14355, + "name": "DUP8", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14300, + "end": 14356, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14300, + "end": 14356, + "name": "ADD", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "PUSH [tag]", + "source": 21, + "value": "393" + }, + { + "begin": 14300, + "end": 14356, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "PUSH [tag]", + "source": 21, + "value": "394" + }, + { + "begin": 14300, + "end": 14356, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "tag", + "source": 21, + "value": "393" + }, + { + "begin": 14300, + "end": 14356, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14300, + "end": 14356, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14300, + "end": 14356, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SUB", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SUB", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14300, + "end": 14356, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14300, + "end": 14356, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14212, + "end": 14370, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14212, + "end": 14370, + "name": "ADD", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "PUSH [tag]", + "source": 21, + "value": "395" + }, + { + "begin": 14212, + "end": 14370, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "PUSH [tag]", + "source": 21, + "value": "396" + }, + { + "begin": 14212, + "end": 14370, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "tag", + "source": 21, + "value": "395" + }, + { + "begin": 14212, + "end": 14370, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14212, + "end": 14370, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14212, + "end": 14370, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "SUB", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "SUB", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14212, + "end": 14370, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14212, + "end": 14370, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14188, + "end": 14370, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14188, + "end": 14370, + "name": "POP", + "source": 21 + }, + { + "begin": 14440, + "end": 14473, + "name": "PUSH [tag]", + "source": 21, + "value": "397" + }, + { + "begin": 14455, + "end": 14456, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14458, + "end": 14462, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14464, + "end": 14472, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14440, + "end": 14454, + "name": "PUSH [tag]", + "source": 21, + "value": "398" + }, + { + "begin": 14440, + "end": 14473, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14440, + "end": 14473, + "name": "tag", + "source": 21, + "value": "397" + }, + { + "begin": 14440, + "end": 14473, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14425, + "end": 14474, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 14425, + "end": 14474, + "name": "POP", + "source": 21 + }, + { + "begin": 13611, + "end": 14485, + "name": "POP", + "source": 21 + }, + { + "begin": 13611, + "end": 14485, + "name": "POP", + "source": 21 + }, + { + "begin": 13611, + "end": 14485, + "name": "POP", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14547, + "end": 14649, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "80" + }, + { + "begin": 14547, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14547, + "end": 14649, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14575, + "end": 14582, + "name": "DUP8", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 14547, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14547, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14592, + "end": 14596, + "name": "DUP7", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14547, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14547, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14614, + "end": 14621, + "name": "DUP5", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14547, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14642, + "end": 14647, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14547, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14547, + "end": 14649, + "name": "POP", + "source": 21 + }, + { + "begin": 14495, + "end": 14507, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 14495, + "end": 14515, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14508, + "end": 14514, + "name": "DUP5", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14495, + "end": 14515, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14495, + "end": 14515, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14495, + "end": 14515, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14495, + "end": 14515, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14515, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14515, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14516, + "end": 14522, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14495, + "end": 14523, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14495, + "end": 14523, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14495, + "end": 14523, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14495, + "end": 14523, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14523, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14523, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14524, + "end": 14531, + "name": "DUP9", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 14495, + "end": 14532, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14495, + "end": 14532, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14495, + "end": 14532, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14532, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14532, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 14495, + "end": 14649, + "name": "EXP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "NOT", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 14495, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "OR", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "POP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 14495, + "end": 14649, + "name": "EXP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "NOT", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14495, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "OR", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "POP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "16" + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 14495, + "end": 14649, + "name": "EXP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "NOT", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "OR", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "POP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "60" + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14495, + "end": 14649, + "name": "ADD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "17" + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 14495, + "end": 14649, + "name": "EXP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "NOT", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "AND", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "MUL", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "OR", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "POP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "POP", + "source": 21 + }, + { + "begin": 14495, + "end": 14649, + "name": "POP", + "source": 21 + }, + { + "begin": 14660, + "end": 14671, + "name": "PUSH", + "source": 21, + "value": "3" + }, + { + "begin": 14677, + "end": 14681, + "name": "DUP6", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "ADD", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP3", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "POP", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "POP", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SUB", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14660, + "end": 14682, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14660, + "end": 14682, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "ADD", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 14660, + "end": 14682, + "name": "EXP", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14660, + "end": 14682, + "name": "MUL", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "NOT", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "AND", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "DUP4", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14660, + "end": 14682, + "name": "AND", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "MUL", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "OR", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 14660, + "end": 14682, + "name": "POP", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "name": "PUSH [tag]", + "source": 21, + "value": "400" + }, + { + "begin": 14737, + "end": 14744, + "name": "DUP7", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 14692, + "end": 14745, + "name": "AND", + "source": 21 + }, + { + "begin": 14692, + "end": 14716, + "name": "PUSH", + "source": 21, + "value": "A" + }, + { + "begin": 14692, + "end": 14724, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14717, + "end": 14723, + "name": "DUP6", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14692, + "end": 14724, + "name": "AND", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14692, + "end": 14724, + "name": "AND", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14692, + "end": 14724, + "name": "ADD", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14692, + "end": 14724, + "name": "ADD", + "source": 21 + }, + { + "begin": 14692, + "end": 14724, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14692, + "end": 14724, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14725, + "end": 14731, + "name": "DUP5", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14692, + "end": 14732, + "name": "AND", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14692, + "end": 14732, + "name": "AND", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14692, + "end": 14732, + "name": "ADD", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "DUP2", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 14692, + "end": 14732, + "name": "ADD", + "source": 21 + }, + { + "begin": 14692, + "end": 14732, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 14692, + "end": 14732, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 14692, + "end": 14736, + "name": "PUSH [tag]", + "source": 21, + "value": "401" + }, + { + "begin": 14692, + "end": 14736, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 14692, + "end": 14745, + "name": "AND", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "name": "tag", + "source": 21, + "value": "400" + }, + { + "begin": 14692, + "end": 14745, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14692, + "end": 14745, + "name": "POP", + "source": 21 + }, + { + "begin": 14791, + "end": 14798, + "name": "DUP6", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 14761, + "end": 14829, + "name": "AND", + "source": 21 + }, + { + "begin": 14783, + "end": 14789, + "name": "DUP9", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14761, + "end": 14829, + "name": "AND", + "source": 21 + }, + { + "begin": 14775, + "end": 14781, + "name": "DUP11", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14761, + "end": 14829, + "name": "AND", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH", + "source": 21, + "value": "2C8D104B27C6B7F4492017A6F5CF3803043688934EBCAA6A03540BEEAF976AFF" + }, + { + "begin": 14800, + "end": 14804, + "name": "DUP9", + "source": 21 + }, + { + "begin": 14827, + "end": 14828, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 14806, + "end": 14817, + "name": "PUSH", + "source": 21, + "value": "3" + }, + { + "begin": 14806, + "end": 14824, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14806, + "end": 14824, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 14806, + "end": 14824, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14806, + "end": 14824, + "name": "POP", + "source": 21 + }, + { + "begin": 14806, + "end": 14828, + "name": "PUSH [tag]", + "source": 21, + "value": "402" + }, + { + "begin": 14806, + "end": 14828, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14806, + "end": 14828, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14806, + "end": 14828, + "name": "PUSH [tag]", + "source": 21, + "value": "403" + }, + { + "begin": 14806, + "end": 14828, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14806, + "end": 14828, + "name": "tag", + "source": 21, + "value": "402" + }, + { + "begin": 14806, + "end": 14828, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14761, + "end": 14829, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH [tag]", + "source": 21, + "value": "404" + }, + { + "begin": 14761, + "end": 14829, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH [tag]", + "source": 21, + "value": "405" + }, + { + "begin": 14761, + "end": 14829, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "tag", + "source": 21, + "value": "404" + }, + { + "begin": 14761, + "end": 14829, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 14761, + "end": 14829, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "DUP1", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "SUB", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 14761, + "end": 14829, + "name": "LOG4", + "source": 21 + }, + { + "begin": 12494, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12494, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12494, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12494, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "name": "POP", + "source": 21 + }, + { + "begin": 12340, + "end": 14836, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "name": "tag", + "source": 21, + "value": "136" + }, + { + "begin": 1988, + "end": 2110, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2056, + "end": 2110, + "name": "PUSH", + "source": 21, + "value": "9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D" + }, + { + "begin": 1988, + "end": 2110, + "name": "DUP2", + "source": 21 + }, + { + "begin": 1988, + "end": 2110, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "tag", + "source": 21, + "value": "141" + }, + { + "begin": 10632, + "end": 11765, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10749, + "end": 10792, + "name": "PUSH", + "source": 21, + "value": "60" + }, + { + "begin": 10833, + "end": 10846, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10848, + "end": 10861, + "name": "DUP1", + "source": 21 + }, + { + "begin": 10865, + "end": 10892, + "name": "PUSH [tag]", + "source": 21, + "value": "407" + }, + { + "begin": 10877, + "end": 10883, + "name": "DUP6", + "source": 21 + }, + { + "begin": 10885, + "end": 10891, + "name": "DUP6", + "source": 21 + }, + { + "begin": 10865, + "end": 10876, + "name": "PUSH [tag]", + "source": 21, + "value": "369" + }, + { + "begin": 10865, + "end": 10892, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 10865, + "end": 10892, + "name": "tag", + "source": 21, + "value": "407" + }, + { + "begin": 10865, + "end": 10892, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10832, + "end": 10892, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10832, + "end": 10892, + "name": "POP", + "source": 21 + }, + { + "begin": 10832, + "end": 10892, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10832, + "end": 10892, + "name": "POP", + "source": 21 + }, + { + "begin": 10907, + "end": 10947, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10950, + "end": 10974, + "name": "PUSH", + "source": 21, + "value": "A" + }, + { + "begin": 10950, + "end": 10982, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10975, + "end": 10981, + "name": "DUP5", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10950, + "end": 10982, + "name": "AND", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10950, + "end": 10982, + "name": "AND", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 10950, + "end": 10982, + "name": "ADD", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 10950, + "end": 10982, + "name": "ADD", + "source": 21 + }, + { + "begin": 10950, + "end": 10982, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10950, + "end": 10982, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10983, + "end": 10989, + "name": "DUP4", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10950, + "end": 10990, + "name": "AND", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 10950, + "end": 10990, + "name": "AND", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 10950, + "end": 10990, + "name": "ADD", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "DUP2", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 10950, + "end": 10990, + "name": "ADD", + "source": 21 + }, + { + "begin": 10950, + "end": 10990, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 10950, + "end": 10990, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 10907, + "end": 10990, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 10907, + "end": 10990, + "name": "POP", + "source": 21 + }, + { + "begin": 11005, + "end": 11019, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11022, + "end": 11041, + "name": "PUSH [tag]", + "source": 21, + "value": "408" + }, + { + "begin": 11022, + "end": 11032, + "name": "DUP3", + "source": 21 + }, + { + "begin": 11022, + "end": 11039, + "name": "PUSH [tag]", + "source": 21, + "value": "409" + }, + { + "begin": 11022, + "end": 11041, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11022, + "end": 11041, + "name": "tag", + "source": 21, + "value": "408" + }, + { + "begin": 11022, + "end": 11041, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11005, + "end": 11041, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11005, + "end": 11041, + "name": "POP", + "source": 21 + }, + { + "begin": 11069, + "end": 11070, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11060, + "end": 11066, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11060, + "end": 11070, + "name": "GT", + "source": 21 + }, + { + "begin": 11056, + "end": 11749, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11056, + "end": 11749, + "name": "PUSH [tag]", + "source": 21, + "value": "410" + }, + { + "begin": 11056, + "end": 11749, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 11133, + "end": 11139, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "GT", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH [tag]", + "source": 21, + "value": "411" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH [tag]", + "source": 21, + "value": "412" + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH [tag]", + "source": 21, + "value": "232" + }, + { + "begin": 11109, + "end": 11140, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "tag", + "source": 21, + "value": "412" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "tag", + "source": 21, + "value": "411" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 11109, + "end": 11140, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP3", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11109, + "end": 11140, + "name": "MUL", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11109, + "end": 11140, + "name": "ADD", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP3", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "ADD", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 11109, + "end": 11140, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH [tag]", + "source": 21, + "value": "413" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11109, + "end": 11140, + "name": "ADD", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "tag", + "source": 21, + "value": "414" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH [tag]", + "source": 21, + "value": "415" + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH [tag]", + "source": 21, + "value": "416" + }, + { + "begin": 11109, + "end": 11140, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "tag", + "source": 21, + "value": "415" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11109, + "end": 11140, + "name": "ADD", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 11109, + "end": 11140, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "SUB", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "PUSH [tag]", + "source": 21, + "value": "414" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "POP", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "tag", + "source": 21, + "value": "413" + }, + { + "begin": 11109, + "end": 11140, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11109, + "end": 11140, + "name": "POP", + "source": 21 + }, + { + "begin": 11090, + "end": 11140, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 11090, + "end": 11140, + "name": "POP", + "source": 21 + }, + { + "begin": 11159, + "end": 11216, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11219, + "end": 11231, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 11219, + "end": 11239, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11232, + "end": 11238, + "name": "DUP7", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 11219, + "end": 11239, + "name": "AND", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 11219, + "end": 11239, + "name": "AND", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11219, + "end": 11239, + "name": "ADD", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11219, + "end": 11239, + "name": "ADD", + "source": 21 + }, + { + "begin": 11219, + "end": 11239, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11219, + "end": 11239, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11240, + "end": 11246, + "name": "DUP6", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 11219, + "end": 11247, + "name": "AND", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 11219, + "end": 11247, + "name": "AND", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11219, + "end": 11247, + "name": "ADD", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11219, + "end": 11247, + "name": "ADD", + "source": 21 + }, + { + "begin": 11219, + "end": 11247, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11219, + "end": 11247, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 11159, + "end": 11247, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11159, + "end": 11247, + "name": "POP", + "source": 21 + }, + { + "begin": 11271, + "end": 11280, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11266, + "end": 11735, + "name": "tag", + "source": 21, + "value": "417" + }, + { + "begin": 11266, + "end": 11735, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11290, + "end": 11296, + "name": "DUP3", + "source": 21 + }, + { + "begin": 11286, + "end": 11287, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11286, + "end": 11296, + "name": "LT", + "source": 21 + }, + { + "begin": 11266, + "end": 11735, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11266, + "end": 11735, + "name": "PUSH [tag]", + "source": 21, + "value": "418" + }, + { + "begin": 11266, + "end": 11735, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 11325, + "end": 11339, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11342, + "end": 11367, + "name": "PUSH [tag]", + "source": 21, + "value": "420" + }, + { + "begin": 11342, + "end": 11358, + "name": "PUSH [tag]", + "source": 21, + "value": "421" + }, + { + "begin": 11356, + "end": 11357, + "name": "DUP4", + "source": 21 + }, + { + "begin": 11342, + "end": 11352, + "name": "DUP8", + "source": 21 + }, + { + "begin": 11342, + "end": 11355, + "name": "PUSH [tag]", + "source": 21, + "value": "422" + }, + { + "begin": 11342, + "end": 11355, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11342, + "end": 11358, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 11342, + "end": 11358, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11342, + "end": 11358, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 11342, + "end": 11358, + "name": "AND", + "source": 21 + }, + { + "begin": 11342, + "end": 11358, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11342, + "end": 11358, + "name": "tag", + "source": 21, + "value": "421" + }, + { + "begin": 11342, + "end": 11358, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11342, + "end": 11365, + "name": "PUSH [tag]", + "source": 21, + "value": "423" + }, + { + "begin": 11342, + "end": 11367, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11342, + "end": 11367, + "name": "tag", + "source": 21, + "value": "420" + }, + { + "begin": 11342, + "end": 11367, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11325, + "end": 11367, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11325, + "end": 11367, + "name": "POP", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 11412, + "end": 11716, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "80" + }, + { + "begin": 11412, + "end": 11716, + "name": "ADD", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 11412, + "end": 11716, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11465, + "end": 11472, + "name": "DUP3", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 11412, + "end": 11716, + "name": "AND", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11412, + "end": 11716, + "name": "ADD", + "source": 21 + }, + { + "begin": 11506, + "end": 11517, + "name": "DUP5", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11518, + "end": 11525, + "name": "DUP5", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 11506, + "end": 11526, + "name": "AND", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11506, + "end": 11526, + "name": "ADD", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11506, + "end": 11526, + "name": "ADD", + "source": 21 + }, + { + "begin": 11506, + "end": 11526, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11506, + "end": 11526, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11506, + "end": 11533, + "name": "ADD", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 11506, + "end": 11533, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 11506, + "end": 11533, + "name": "EXP", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "DIV", + "source": 21 + }, + { + "begin": 11506, + "end": 11533, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 11506, + "end": 11533, + "name": "AND", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 11412, + "end": 11716, + "name": "AND", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11412, + "end": 11716, + "name": "ADD", + "source": 21 + }, + { + "begin": 11575, + "end": 11586, + "name": "DUP5", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11587, + "end": 11594, + "name": "DUP5", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 11575, + "end": 11595, + "name": "AND", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11575, + "end": 11595, + "name": "ADD", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11575, + "end": 11595, + "name": "ADD", + "source": 21 + }, + { + "begin": 11575, + "end": 11595, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11575, + "end": 11595, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11575, + "end": 11610, + "name": "ADD", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "PUSH", + "source": 21, + "value": "16" + }, + { + "begin": 11575, + "end": 11610, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 11575, + "end": 11610, + "name": "EXP", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "DIV", + "source": 21 + }, + { + "begin": 11575, + "end": 11610, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 11575, + "end": 11610, + "name": "AND", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11412, + "end": 11716, + "name": "ADD", + "source": 21 + }, + { + "begin": 11655, + "end": 11666, + "name": "DUP5", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11667, + "end": 11674, + "name": "DUP5", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 11655, + "end": 11675, + "name": "AND", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11655, + "end": 11675, + "name": "ADD", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11655, + "end": 11675, + "name": "ADD", + "source": 21 + }, + { + "begin": 11655, + "end": 11675, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11655, + "end": 11675, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 11655, + "end": 11693, + "name": "ADD", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "PUSH", + "source": 21, + "value": "17" + }, + { + "begin": 11655, + "end": 11693, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 11655, + "end": 11693, + "name": "EXP", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "DIV", + "source": 21 + }, + { + "begin": 11655, + "end": 11693, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 11655, + "end": 11693, + "name": "AND", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11412, + "end": 11716, + "name": "POP", + "source": 21 + }, + { + "begin": 11390, + "end": 11406, + "name": "DUP9", + "source": 21 + }, + { + "begin": 11407, + "end": 11408, + "name": "DUP4", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "LT", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "PUSH [tag]", + "source": 21, + "value": "424" + }, + { + "begin": 11390, + "end": 11409, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "PUSH [tag]", + "source": 21, + "value": "425" + }, + { + "begin": 11390, + "end": 11409, + "name": "PUSH [tag]", + "source": 21, + "value": "244" + }, + { + "begin": 11390, + "end": 11409, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "tag", + "source": 21, + "value": "425" + }, + { + "begin": 11390, + "end": 11409, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "tag", + "source": 21, + "value": "424" + }, + { + "begin": 11390, + "end": 11409, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11390, + "end": 11409, + "name": "MUL", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 11390, + "end": 11409, + "name": "ADD", + "source": 21 + }, + { + "begin": 11390, + "end": 11409, + "name": "ADD", + "source": 21 + }, + { + "begin": 11390, + "end": 11716, + "name": "DUP2", + "source": 21 + }, + { + "begin": 11390, + "end": 11716, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11390, + "end": 11716, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 11390, + "end": 11716, + "name": "POP", + "source": 21 + }, + { + "begin": 11303, + "end": 11735, + "name": "POP", + "source": 21 + }, + { + "begin": 11298, + "end": 11301, + "name": "DUP1", + "source": 21 + }, + { + "begin": 11298, + "end": 11301, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 11298, + "end": 11301, + "name": "ADD", + "source": 21 + }, + { + "begin": 11298, + "end": 11301, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11298, + "end": 11301, + "name": "POP", + "source": 21 + }, + { + "begin": 11266, + "end": 11735, + "name": "PUSH [tag]", + "source": 21, + "value": "417" + }, + { + "begin": 11266, + "end": 11735, + "name": "JUMP", + "source": 21 + }, + { + "begin": 11266, + "end": 11735, + "name": "tag", + "source": 21, + "value": "418" + }, + { + "begin": 11266, + "end": 11735, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11266, + "end": 11735, + "name": "POP", + "source": 21 + }, + { + "begin": 11072, + "end": 11749, + "name": "POP", + "source": 21 + }, + { + "begin": 11056, + "end": 11749, + "name": "tag", + "source": 21, + "value": "410" + }, + { + "begin": 11056, + "end": 11749, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 10808, + "end": 11759, + "name": "POP", + "source": 21 + }, + { + "begin": 10808, + "end": 11759, + "name": "POP", + "source": 21 + }, + { + "begin": 10808, + "end": 11759, + "name": "POP", + "source": 21 + }, + { + "begin": 10808, + "end": 11759, + "name": "POP", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "POP", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "name": "POP", + "source": 21 + }, + { + "begin": 10632, + "end": 11765, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "tag", + "source": 21, + "value": "147" + }, + { + "begin": 15407, + "end": 16102, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "427" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "427" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 15532, + "end": 15545, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15547, + "end": 15560, + "name": "DUP1", + "source": 21 + }, + { + "begin": 15564, + "end": 15591, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "429" + }, + { + "begin": 15576, + "end": 15582, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 15584, + "end": 15590, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 15564, + "end": 15575, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "369" + }, + { + "begin": 15564, + "end": 15591, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 15564, + "end": 15591, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "429" + }, + { + "begin": 15564, + "end": 15591, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 15531, + "end": 15591, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 15531, + "end": 15591, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 15531, + "end": 15591, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 15531, + "end": 15591, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 15602, + "end": 15642, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15645, + "end": 15657, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15658, + "end": 15664, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15645, + "end": 15665, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15666, + "end": 15672, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15645, + "end": 15673, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15674, + "end": 15681, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15645, + "end": 15682, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "80" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "EXP", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DIV", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "EXP", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DIV", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "16" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "EXP", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DIV", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "17" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "EXP", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DIV", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "name": "POP", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15602, + "end": 15682, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 15739, + "end": 15740, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15696, + "end": 15741, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15696, + "end": 15741, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15704, + "end": 15719, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15704, + "end": 15726, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15704, + "end": 15726, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15704, + "end": 15726, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 15696, + "end": 15741, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15696, + "end": 15741, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15696, + "end": 15741, + "name": "SUB", + "source": 21 + }, + { + "begin": 15692, + "end": 15829, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "430" + }, + { + "begin": 15692, + "end": 15829, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 15794, + "end": 15800, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 15802, + "end": 15808, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 15810, + "end": 15817, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40AA464400000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "431" + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "260" + }, + { + "begin": 15764, + "end": 15818, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "431" + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15764, + "end": 15818, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 15692, + "end": 15829, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "430" + }, + { + "begin": 15692, + "end": 15829, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 15880, + "end": 15887, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 15843, + "end": 15887, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15843, + "end": 15887, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15843, + "end": 15858, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15843, + "end": 15876, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "60" + }, + { + "begin": 15843, + "end": 15876, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15843, + "end": 15876, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 15843, + "end": 15887, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15843, + "end": 15887, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15843, + "end": 15887, + "name": "SUB", + "source": 21 + }, + { + "begin": 15839, + "end": 15945, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "432" + }, + { + "begin": 15839, + "end": 15945, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "DDCCCA00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15896, + "end": 15945, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 15839, + "end": 15945, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "432" + }, + { + "begin": 15839, + "end": 15945, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 16014, + "end": 16021, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 15956, + "end": 15968, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15969, + "end": 15975, + "modifierDepth": 1, + "name": "DUP6", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15956, + "end": 15976, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15977, + "end": 15983, + "modifierDepth": 1, + "name": "DUP5", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15956, + "end": 15984, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15985, + "end": 15992, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15956, + "end": 15993, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 15956, + "end": 16011, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 15956, + "end": 16011, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 15956, + "end": 16011, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "17" + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "EXP", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "MUL", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "NOT", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "MUL", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "OR", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 15956, + "end": 16021, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 16063, + "end": 16078, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 16063, + "end": 16085, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 16063, + "end": 16085, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 16063, + "end": 16085, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "44CF35361C9FF3C8C1397EC6410D5495CC481FEAEF35C9AF11DA1A637107DE4F" + }, + { + "begin": 16087, + "end": 16094, + "modifierDepth": 1, + "name": "DUP6", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "433" + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "59" + }, + { + "begin": 16037, + "end": 16095, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "433" + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 16037, + "end": 16095, + "modifierDepth": 1, + "name": "LOG2", + "source": 21 + }, + { + "begin": 15521, + "end": 16102, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 15521, + "end": 16102, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 15521, + "end": 16102, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "POP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "POP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "POP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "name": "POP", + "source": 21 + }, + { + "begin": 15407, + "end": 16102, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "tag", + "source": 21, + "value": "149" + }, + { + "begin": 4261, + "end": 4375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4318, + "end": 4336, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 2218, + "end": 2219, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 4348, + "end": 4368, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4348, + "end": 4368, + "name": "POP", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4261, + "end": 4375, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "tag", + "source": 21, + "value": "154" + }, + { + "begin": 7318, + "end": 7577, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 7459, + "end": 7501, + "name": "PUSH [tag]", + "source": 21, + "value": "435" + }, + { + "begin": 7459, + "end": 7501, + "name": "PUSH [tag]", + "source": 21, + "value": "416" + }, + { + "begin": 7459, + "end": 7501, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 7459, + "end": 7501, + "name": "tag", + "source": 21, + "value": "435" + }, + { + "begin": 7459, + "end": 7501, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 7524, + "end": 7570, + "name": "PUSH [tag]", + "source": 21, + "value": "437" + }, + { + "begin": 7546, + "end": 7552, + "name": "DUP5", + "source": 21 + }, + { + "begin": 7554, + "end": 7560, + "name": "DUP5", + "source": 21 + }, + { + "begin": 7562, + "end": 7569, + "name": "DUP5", + "source": 21 + }, + { + "begin": 7524, + "end": 7545, + "name": "PUSH [tag]", + "source": 21, + "value": "257" + }, + { + "begin": 7524, + "end": 7570, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 7524, + "end": 7570, + "name": "tag", + "source": 21, + "value": "437" + }, + { + "begin": 7524, + "end": 7570, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 7517, + "end": 7570, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 7517, + "end": 7570, + "name": "POP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "POP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "POP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "name": "POP", + "source": 21 + }, + { + "begin": 7318, + "end": 7577, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 3155, + "end": 3256, + "name": "tag", + "source": 2, + "value": "158" + }, + { + "begin": 3155, + "end": 3256, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "439" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "439" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3219, + "end": 3249, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "441" + }, + { + "begin": 3246, + "end": 3247, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3219, + "end": 3237, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "442" + }, + { + "begin": 3219, + "end": 3249, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 2 + }, + { + "begin": 3219, + "end": 3249, + "modifierDepth": 1, + "name": "tag", + "source": 2, + "value": "441" + }, + { + "begin": 3219, + "end": 3249, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3155, + "end": 3256, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3132, + "end": 3361, + "name": "tag", + "source": 1, + "value": "160" + }, + { + "begin": 3132, + "end": 3361, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3184, + "end": 3198, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3201, + "end": 3213, + "name": "PUSH [tag]", + "source": 1, + "value": "444" + }, + { + "begin": 3201, + "end": 3211, + "name": "PUSH [tag]", + "source": 1, + "value": "289" + }, + { + "begin": 3201, + "end": 3213, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3201, + "end": 3213, + "name": "tag", + "source": 1, + "value": "444" + }, + { + "begin": 3201, + "end": 3213, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3184, + "end": 3213, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 3184, + "end": 3213, + "name": "POP", + "source": 1 + }, + { + "begin": 3245, + "end": 3251, + "name": "DUP1", + "source": 1 + }, + { + "begin": 3227, + "end": 3251, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3227, + "end": 3251, + "name": "AND", + "source": 1 + }, + { + "begin": 3227, + "end": 3241, + "name": "PUSH [tag]", + "source": 1, + "value": "445" + }, + { + "begin": 3227, + "end": 3239, + "name": "PUSH [tag]", + "source": 1, + "value": "207" + }, + { + "begin": 3227, + "end": 3241, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3227, + "end": 3241, + "name": "tag", + "source": 1, + "value": "445" + }, + { + "begin": 3227, + "end": 3241, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3227, + "end": 3251, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3227, + "end": 3251, + "name": "AND", + "source": 1 + }, + { + "begin": 3227, + "end": 3251, + "name": "EQ", + "source": 1 + }, + { + "begin": 3223, + "end": 3319, + "name": "PUSH [tag]", + "source": 1, + "value": "446" + }, + { + "begin": 3223, + "end": 3319, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 3301, + "end": 3307, + "name": "DUP1", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 3274, + "end": 3308, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "PUSH", + "source": 1, + "value": "118CDAA700000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 3274, + "end": 3308, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 3274, + "end": 3308, + "name": "ADD", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "PUSH [tag]", + "source": 1, + "value": "447" + }, + { + "begin": 3274, + "end": 3308, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "PUSH [tag]", + "source": 1, + "value": "114" + }, + { + "begin": 3274, + "end": 3308, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "tag", + "source": 1, + "value": "447" + }, + { + "begin": 3274, + "end": 3308, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 3274, + "end": 3308, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "DUP1", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "SUB", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 3274, + "end": 3308, + "name": "REVERT", + "source": 1 + }, + { + "begin": 3223, + "end": 3319, + "name": "tag", + "source": 1, + "value": "446" + }, + { + "begin": 3223, + "end": 3319, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3328, + "end": 3354, + "name": "PUSH [tag]", + "source": 1, + "value": "448" + }, + { + "begin": 3347, + "end": 3353, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3328, + "end": 3346, + "name": "PUSH [tag]", + "source": 1, + "value": "442" + }, + { + "begin": 3328, + "end": 3354, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3328, + "end": 3354, + "name": "tag", + "source": 1, + "value": "448" + }, + { + "begin": 3328, + "end": 3354, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3174, + "end": 3361, + "name": "POP", + "source": 1 + }, + { + "begin": 3132, + "end": 3361, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5757, + "end": 5888, + "name": "tag", + "source": 21, + "value": "163" + }, + { + "begin": 5757, + "end": 5888, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5830, + "end": 5844, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5863, + "end": 5874, + "name": "PUSH", + "source": 21, + "value": "3" + }, + { + "begin": 5875, + "end": 5880, + "name": "DUP3", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "DUP2", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "DUP2", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "LT", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH [tag]", + "source": 21, + "value": "450" + }, + { + "begin": 5863, + "end": 5881, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH [tag]", + "source": 21, + "value": "451" + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH [tag]", + "source": 21, + "value": "244" + }, + { + "begin": 5863, + "end": 5881, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "tag", + "source": 21, + "value": "451" + }, + { + "begin": 5863, + "end": 5881, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "tag", + "source": 21, + "value": "450" + }, + { + "begin": 5863, + "end": 5881, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5863, + "end": 5881, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5863, + "end": 5881, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "ADD", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5863, + "end": 5881, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 5863, + "end": 5881, + "name": "EXP", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "DIV", + "source": 21 + }, + { + "begin": 5863, + "end": 5881, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5863, + "end": 5881, + "name": "AND", + "source": 21 + }, + { + "begin": 5856, + "end": 5881, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5856, + "end": 5881, + "name": "POP", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "name": "POP", + "source": 21 + }, + { + "begin": 5757, + "end": 5888, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "tag", + "source": 21, + "value": "166" + }, + { + "begin": 6050, + "end": 6198, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6116, + "end": 6143, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 6162, + "end": 6191, + "name": "PUSH [tag]", + "source": 21, + "value": "454" + }, + { + "begin": 6162, + "end": 6182, + "name": "PUSH", + "source": 21, + "value": "8" + }, + { + "begin": 6162, + "end": 6189, + "name": "PUSH [tag]", + "source": 21, + "value": "455" + }, + { + "begin": 6162, + "end": 6191, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 6162, + "end": 6191, + "name": "tag", + "source": 21, + "value": "454" + }, + { + "begin": 6162, + "end": 6191, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 6155, + "end": 6191, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6155, + "end": 6191, + "name": "POP", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 6050, + "end": 6198, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "tag", + "source": 21, + "value": "169" + }, + { + "begin": 4694, + "end": 4814, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4756, + "end": 4770, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 2282, + "end": 2288, + "name": "PUSH", + "source": 21, + "value": "16345785D8A0000" + }, + { + "begin": 4782, + "end": 4807, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4782, + "end": 4807, + "name": "POP", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4694, + "end": 4814, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 2441, + "end": 2585, + "name": "tag", + "source": 2, + "value": "172" + }, + { + "begin": 2441, + "end": 2585, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2487, + "end": 2494, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2506, + "end": 2530, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2533, + "end": 2553, + "name": "PUSH [tag]", + "source": 2, + "value": "458" + }, + { + "begin": 2533, + "end": 2551, + "name": "PUSH [tag]", + "source": 2, + "value": "459" + }, + { + "begin": 2533, + "end": 2553, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2533, + "end": 2553, + "name": "tag", + "source": 2, + "value": "458" + }, + { + "begin": 2533, + "end": 2553, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2506, + "end": 2553, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2506, + "end": 2553, + "name": "POP", + "source": 2 + }, + { + "begin": 2570, + "end": 2571, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2570, + "end": 2578, + "name": "ADD", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2570, + "end": 2578, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "PUSH", + "source": 2, + "value": "100" + }, + { + "begin": 2570, + "end": 2578, + "name": "EXP", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "DIV", + "source": 2 + }, + { + "begin": 2570, + "end": 2578, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2570, + "end": 2578, + "name": "AND", + "source": 2 + }, + { + "begin": 2563, + "end": 2578, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2563, + "end": 2578, + "name": "POP", + "source": 2 + }, + { + "begin": 2563, + "end": 2578, + "name": "POP", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2441, + "end": 2585, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 28645, + "end": 28848, + "name": "tag", + "source": 21, + "value": "176" + }, + { + "begin": 28645, + "end": 28848, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28723, + "end": 28727, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 2362, + "end": 2366, + "name": "DUP1", + "source": 0 + }, + { + "begin": 28751, + "end": 28769, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28751, + "end": 28769, + "name": "SHL", + "source": 21 + }, + { + "begin": 28743, + "end": 28747, + "name": "DUP4", + "source": 21 + }, + { + "begin": 28743, + "end": 28769, + "name": "SUB", + "source": 21 + }, + { + "begin": 28739, + "end": 28796, + "name": "PUSH [tag]", + "source": 21, + "value": "461" + }, + { + "begin": 28739, + "end": 28796, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 28789, + "end": 28796, + "name": "PUSH [tag]", + "source": 21, + "value": "462" + }, + { + "begin": 28789, + "end": 28794, + "name": "PUSH [tag]", + "source": 21, + "value": "172" + }, + { + "begin": 28789, + "end": 28796, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28789, + "end": 28796, + "name": "tag", + "source": 21, + "value": "462" + }, + { + "begin": 28789, + "end": 28796, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28778, + "end": 28796, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 28778, + "end": 28796, + "name": "AND", + "source": 21 + }, + { + "begin": 28778, + "end": 28785, + "name": "DUP3", + "source": 21 + }, + { + "begin": 28778, + "end": 28796, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 28778, + "end": 28796, + "name": "AND", + "source": 21 + }, + { + "begin": 28778, + "end": 28796, + "name": "EQ", + "source": 21 + }, + { + "begin": 28771, + "end": 28796, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28771, + "end": 28796, + "name": "POP", + "source": 21 + }, + { + "begin": 28771, + "end": 28796, + "name": "PUSH [tag]", + "source": 21, + "value": "460" + }, + { + "begin": 28771, + "end": 28796, + "name": "JUMP", + "source": 21 + }, + { + "begin": 28739, + "end": 28796, + "name": "tag", + "source": 21, + "value": "461" + }, + { + "begin": 28739, + "end": 28796, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28813, + "end": 28841, + "name": "PUSH [tag]", + "source": 21, + "value": "463" + }, + { + "begin": 28827, + "end": 28831, + "name": "DUP4", + "source": 21 + }, + { + "begin": 28833, + "end": 28840, + "name": "DUP4", + "source": 21 + }, + { + "begin": 28813, + "end": 28826, + "name": "PUSH [tag]", + "source": 21, + "value": "464" + }, + { + "begin": 28813, + "end": 28841, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28813, + "end": 28841, + "name": "tag", + "source": 21, + "value": "463" + }, + { + "begin": 28813, + "end": 28841, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28806, + "end": 28841, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28806, + "end": 28841, + "name": "POP", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "tag", + "source": 21, + "value": "460" + }, + { + "begin": 28645, + "end": 28848, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "POP", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "name": "POP", + "source": 21 + }, + { + "begin": 28645, + "end": 28848, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "tag", + "source": 21, + "value": "179" + }, + { + "begin": 5202, + "end": 5320, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5261, + "end": 5281, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5300, + "end": 5313, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 5300, + "end": 5313, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5300, + "end": 5313, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5300, + "end": 5313, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 5300, + "end": 5313, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5300, + "end": 5313, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 5300, + "end": 5313, + "name": "EXP", + "source": 21 + }, + { + "begin": 5300, + "end": 5313, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5300, + "end": 5313, + "name": "DIV", + "source": 21 + }, + { + "begin": 5300, + "end": 5313, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5300, + "end": 5313, + "name": "AND", + "source": 21 + }, + { + "begin": 5293, + "end": 5313, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5293, + "end": 5313, + "name": "POP", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5202, + "end": 5320, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 2317, + "end": 2366, + "name": "tag", + "source": 0, + "value": "182" + }, + { + "begin": 2317, + "end": 2366, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 2362, + "end": 2366, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 2317, + "end": 2366, + "name": "DUP1", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "SHL", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "name": "DUP2", + "source": 0 + }, + { + "begin": 2317, + "end": 2366, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 8275, + "end": 9267, + "name": "tag", + "source": 21, + "value": "186" + }, + { + "begin": 8275, + "end": 9267, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8388, + "end": 8406, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 8420, + "end": 8440, + "name": "DUP1", + "source": 21 + }, + { + "begin": 8454, + "end": 8473, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 8487, + "end": 8510, + "name": "DUP1", + "source": 21 + }, + { + "begin": 8524, + "end": 8550, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 8564, + "end": 8585, + "name": "DUP1", + "source": 21 + }, + { + "begin": 8599, + "end": 8631, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 8645, + "end": 8656, + "name": "DUP1", + "source": 21 + }, + { + "begin": 8686, + "end": 8712, + "name": "PUSH [tag]", + "source": 21, + "value": "467" + }, + { + "begin": 8704, + "end": 8711, + "name": "DUP10", + "source": 21 + }, + { + "begin": 8686, + "end": 8694, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 8686, + "end": 8703, + "name": "PUSH [tag]", + "source": 21, + "value": "329" + }, + { + "begin": 8686, + "end": 8703, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8686, + "end": 8712, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8686, + "end": 8712, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8686, + "end": 8712, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 8686, + "end": 8712, + "name": "AND", + "source": 21 + }, + { + "begin": 8686, + "end": 8712, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8686, + "end": 8712, + "name": "tag", + "source": 21, + "value": "467" + }, + { + "begin": 8686, + "end": 8712, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8681, + "end": 8759, + "name": "PUSH [tag]", + "source": 21, + "value": "468" + }, + { + "begin": 8681, + "end": 8759, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 8751, + "end": 8758, + "name": "DUP9", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 8721, + "end": 8759, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "PUSH", + "source": 21, + "value": "FB22C17E00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 8721, + "end": 8759, + "name": "DUP2", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 8721, + "end": 8759, + "name": "ADD", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "PUSH [tag]", + "source": 21, + "value": "469" + }, + { + "begin": 8721, + "end": 8759, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "PUSH [tag]", + "source": 21, + "value": "122" + }, + { + "begin": 8721, + "end": 8759, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "tag", + "source": 21, + "value": "469" + }, + { + "begin": 8721, + "end": 8759, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 8721, + "end": 8759, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "DUP1", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "SUB", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8721, + "end": 8759, + "name": "REVERT", + "source": 21 + }, + { + "begin": 8681, + "end": 8759, + "name": "tag", + "source": 21, + "value": "468" + }, + { + "begin": 8681, + "end": 8759, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8770, + "end": 8784, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 8795, + "end": 8816, + "name": "PUSH [tag]", + "source": 21, + "value": "470" + }, + { + "begin": 8808, + "end": 8815, + "name": "DUP11", + "source": 21 + }, + { + "begin": 8795, + "end": 8803, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 8795, + "end": 8807, + "name": "PUSH [tag]", + "source": 21, + "value": "333" + }, + { + "begin": 8795, + "end": 8807, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8795, + "end": 8816, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8795, + "end": 8816, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8795, + "end": 8816, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 8795, + "end": 8816, + "name": "AND", + "source": 21 + }, + { + "begin": 8795, + "end": 8816, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8795, + "end": 8816, + "name": "tag", + "source": 21, + "value": "470" + }, + { + "begin": 8795, + "end": 8816, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8787, + "end": 8817, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 8787, + "end": 8817, + "name": "SHL", + "source": 21 + }, + { + "begin": 8770, + "end": 8817, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 8770, + "end": 8817, + "name": "POP", + "source": 21 + }, + { + "begin": 8841, + "end": 8863, + "name": "PUSH [tag]", + "source": 21, + "value": "471" + }, + { + "begin": 8841, + "end": 8847, + "name": "DUP2", + "source": 21 + }, + { + "begin": 8841, + "end": 8861, + "name": "PUSH [tag]", + "source": 21, + "value": "374" + }, + { + "begin": 8841, + "end": 8863, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8841, + "end": 8863, + "name": "tag", + "source": 21, + "value": "471" + }, + { + "begin": 8841, + "end": 8863, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8828, + "end": 8863, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 8828, + "end": 8863, + "name": "AND", + "source": 21 + }, + { + "begin": 8828, + "end": 8863, + "name": "SWAP9", + "source": 21 + }, + { + "begin": 8828, + "end": 8863, + "name": "POP", + "source": 21 + }, + { + "begin": 8888, + "end": 8912, + "name": "PUSH [tag]", + "source": 21, + "value": "472" + }, + { + "begin": 8888, + "end": 8894, + "name": "DUP2", + "source": 21 + }, + { + "begin": 8888, + "end": 8910, + "name": "PUSH [tag]", + "source": 21, + "value": "376" + }, + { + "begin": 8888, + "end": 8912, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8888, + "end": 8912, + "name": "tag", + "source": 21, + "value": "472" + }, + { + "begin": 8888, + "end": 8912, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8873, + "end": 8912, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 8873, + "end": 8912, + "name": "AND", + "source": 21 + }, + { + "begin": 8873, + "end": 8912, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 8873, + "end": 8912, + "name": "POP", + "source": 21 + }, + { + "begin": 8936, + "end": 8959, + "name": "PUSH [tag]", + "source": 21, + "value": "473" + }, + { + "begin": 8936, + "end": 8942, + "name": "DUP2", + "source": 21 + }, + { + "begin": 8936, + "end": 8957, + "name": "PUSH [tag]", + "source": 21, + "value": "378" + }, + { + "begin": 8936, + "end": 8959, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8936, + "end": 8959, + "name": "tag", + "source": 21, + "value": "473" + }, + { + "begin": 8936, + "end": 8959, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8922, + "end": 8959, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 8922, + "end": 8959, + "name": "AND", + "source": 21 + }, + { + "begin": 8922, + "end": 8959, + "name": "SWAP7", + "source": 21 + }, + { + "begin": 8922, + "end": 8959, + "name": "POP", + "source": 21 + }, + { + "begin": 8987, + "end": 9014, + "name": "PUSH [tag]", + "source": 21, + "value": "474" + }, + { + "begin": 8987, + "end": 8993, + "name": "DUP2", + "source": 21 + }, + { + "begin": 8987, + "end": 9012, + "name": "PUSH [tag]", + "source": 21, + "value": "380" + }, + { + "begin": 8987, + "end": 9014, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8987, + "end": 9014, + "name": "tag", + "source": 21, + "value": "474" + }, + { + "begin": 8987, + "end": 9014, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 8969, + "end": 9014, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 8969, + "end": 9014, + "name": "AND", + "source": 21 + }, + { + "begin": 8969, + "end": 9014, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 8969, + "end": 9014, + "name": "POP", + "source": 21 + }, + { + "begin": 9045, + "end": 9075, + "name": "PUSH [tag]", + "source": 21, + "value": "475" + }, + { + "begin": 9045, + "end": 9051, + "name": "DUP2", + "source": 21 + }, + { + "begin": 9045, + "end": 9073, + "name": "PUSH [tag]", + "source": 21, + "value": "382" + }, + { + "begin": 9045, + "end": 9075, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9045, + "end": 9075, + "name": "tag", + "source": 21, + "value": "475" + }, + { + "begin": 9045, + "end": 9075, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9024, + "end": 9075, + "name": "PUSH", + "source": 21, + "value": "FFFFFF" + }, + { + "begin": 9024, + "end": 9075, + "name": "AND", + "source": 21 + }, + { + "begin": 9024, + "end": 9075, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 9024, + "end": 9075, + "name": "POP", + "source": 21 + }, + { + "begin": 9101, + "end": 9126, + "name": "PUSH [tag]", + "source": 21, + "value": "476" + }, + { + "begin": 9101, + "end": 9107, + "name": "DUP2", + "source": 21 + }, + { + "begin": 9101, + "end": 9124, + "name": "PUSH [tag]", + "source": 21, + "value": "384" + }, + { + "begin": 9101, + "end": 9126, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9101, + "end": 9126, + "name": "tag", + "source": 21, + "value": "476" + }, + { + "begin": 9101, + "end": 9126, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9085, + "end": 9126, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 9085, + "end": 9126, + "name": "AND", + "source": 21 + }, + { + "begin": 9085, + "end": 9126, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 9085, + "end": 9126, + "name": "POP", + "source": 21 + }, + { + "begin": 9163, + "end": 9199, + "name": "PUSH [tag]", + "source": 21, + "value": "477" + }, + { + "begin": 9163, + "end": 9169, + "name": "DUP2", + "source": 21 + }, + { + "begin": 9163, + "end": 9197, + "name": "PUSH [tag]", + "source": 21, + "value": "386" + }, + { + "begin": 9163, + "end": 9199, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9163, + "end": 9199, + "name": "tag", + "source": 21, + "value": "477" + }, + { + "begin": 9163, + "end": 9199, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9136, + "end": 9199, + "name": "PUSH", + "source": 21, + "value": "FFFFFF" + }, + { + "begin": 9136, + "end": 9199, + "name": "AND", + "source": 21 + }, + { + "begin": 9136, + "end": 9199, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 9136, + "end": 9199, + "name": "POP", + "source": 21 + }, + { + "begin": 9219, + "end": 9260, + "name": "PUSH [tag]", + "source": 21, + "value": "478" + }, + { + "begin": 2167, + "end": 2170, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 9219, + "end": 9225, + "name": "DUP3", + "source": 21 + }, + { + "begin": 9219, + "end": 9236, + "name": "PUSH [tag]", + "source": 21, + "value": "335" + }, + { + "begin": 9219, + "end": 9236, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9219, + "end": 9260, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9219, + "end": 9260, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 9219, + "end": 9260, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 9219, + "end": 9260, + "name": "AND", + "source": 21 + }, + { + "begin": 9219, + "end": 9260, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9219, + "end": 9260, + "name": "tag", + "source": 21, + "value": "478" + }, + { + "begin": 9219, + "end": 9260, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 9210, + "end": 9260, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 9210, + "end": 9260, + "name": "POP", + "source": 21 + }, + { + "begin": 8671, + "end": 9267, + "name": "POP", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "POP", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "name": "SWAP8", + "source": 21 + }, + { + "begin": 8275, + "end": 9267, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "tag", + "source": 21, + "value": "192" + }, + { + "begin": 3682, + "end": 4157, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4158, + "end": 4188, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4191, + "end": 4217, + "name": "PUSH [tag]", + "source": 3, + "value": "480" + }, + { + "begin": 4191, + "end": 4215, + "name": "PUSH [tag]", + "source": 3, + "value": "481" + }, + { + "begin": 4191, + "end": 4217, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 4191, + "end": 4217, + "name": "tag", + "source": 3, + "value": "480" + }, + { + "begin": 4191, + "end": 4217, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 4158, + "end": 4217, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4158, + "end": 4217, + "name": "POP", + "source": 3 + }, + { + "begin": 4279, + "end": 4298, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4302, + "end": 4303, + "name": "DUP2", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4302, + "end": 4317, + "name": "ADD", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 3, + "value": "8" + }, + { + "begin": 4302, + "end": 4317, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 4302, + "end": 4317, + "name": "EXP", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "DIV", + "source": 3 + }, + { + "begin": 4302, + "end": 4317, + "name": "PUSH", + "source": 3, + "value": "FF" + }, + { + "begin": 4302, + "end": 4317, + "name": "AND", + "source": 3 + }, + { + "begin": 4301, + "end": 4317, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4279, + "end": 4317, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4279, + "end": 4317, + "name": "POP", + "source": 3 + }, + { + "begin": 4327, + "end": 4345, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4348, + "end": 4349, + "name": "DUP3", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4348, + "end": 4362, + "name": "ADD", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4348, + "end": 4362, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 4348, + "end": 4362, + "name": "EXP", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "DIV", + "source": 3 + }, + { + "begin": 4348, + "end": 4362, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4348, + "end": 4362, + "name": "AND", + "source": 3 + }, + { + "begin": 4327, + "end": 4362, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4327, + "end": 4362, + "name": "POP", + "source": 3 + }, + { + "begin": 4706, + "end": 4723, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4741, + "end": 4742, + "name": "DUP1", + "source": 3 + }, + { + "begin": 4726, + "end": 4737, + "name": "DUP3", + "source": 3 + }, + { + "begin": 4726, + "end": 4742, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4726, + "end": 4742, + "name": "AND", + "source": 3 + }, + { + "begin": 4726, + "end": 4742, + "name": "EQ", + "source": 3 + }, + { + "begin": 4726, + "end": 4760, + "name": "DUP1", + "source": 3 + }, + { + "begin": 4726, + "end": 4760, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4726, + "end": 4760, + "name": "PUSH [tag]", + "source": 3, + "value": "482" + }, + { + "begin": 4726, + "end": 4760, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 4726, + "end": 4760, + "name": "POP", + "source": 3 + }, + { + "begin": 4746, + "end": 4760, + "name": "DUP3", + "source": 3 + }, + { + "begin": 4726, + "end": 4760, + "name": "tag", + "source": 3, + "value": "482" + }, + { + "begin": 4726, + "end": 4760, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 4706, + "end": 4760, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4706, + "end": 4760, + "name": "POP", + "source": 3 + }, + { + "begin": 4770, + "end": 4787, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4805, + "end": 4806, + "name": "PUSH", + "source": 3, + "value": "1" + }, + { + "begin": 4790, + "end": 4801, + "name": "DUP4", + "source": 3 + }, + { + "begin": 4790, + "end": 4806, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4790, + "end": 4806, + "name": "AND", + "source": 3 + }, + { + "begin": 4790, + "end": 4806, + "name": "EQ", + "source": 3 + }, + { + "begin": 4790, + "end": 4840, + "name": "DUP1", + "source": 3 + }, + { + "begin": 4790, + "end": 4840, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4790, + "end": 4840, + "name": "PUSH [tag]", + "source": 3, + "value": "483" + }, + { + "begin": 4790, + "end": 4840, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 4790, + "end": 4840, + "name": "POP", + "source": 3 + }, + { + "begin": 4839, + "end": 4840, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4818, + "end": 4822, + "name": "ADDRESS", + "source": 3 + }, + { + "begin": 4810, + "end": 4835, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4810, + "end": 4835, + "name": "AND", + "source": 3 + }, + { + "begin": 4810, + "end": 4835, + "name": "EXTCODESIZE", + "source": 3 + }, + { + "begin": 4810, + "end": 4840, + "name": "EQ", + "source": 3 + }, + { + "begin": 4790, + "end": 4840, + "name": "tag", + "source": 3, + "value": "483" + }, + { + "begin": 4790, + "end": 4840, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 4770, + "end": 4840, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4770, + "end": 4840, + "name": "POP", + "source": 3 + }, + { + "begin": 4856, + "end": 4868, + "name": "DUP2", + "source": 3 + }, + { + "begin": 4855, + "end": 4868, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4855, + "end": 4885, + "name": "DUP1", + "source": 3 + }, + { + "begin": 4855, + "end": 4885, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4855, + "end": 4885, + "name": "PUSH [tag]", + "source": 3, + "value": "484" + }, + { + "begin": 4855, + "end": 4885, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 4855, + "end": 4885, + "name": "POP", + "source": 3 + }, + { + "begin": 4873, + "end": 4885, + "name": "DUP1", + "source": 3 + }, + { + "begin": 4872, + "end": 4885, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4855, + "end": 4885, + "name": "tag", + "source": 3, + "value": "484" + }, + { + "begin": 4855, + "end": 4885, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 4851, + "end": 4942, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4851, + "end": 4942, + "name": "PUSH [tag]", + "source": 3, + "value": "485" + }, + { + "begin": 4851, + "end": 4942, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 4908, + "end": 4931, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 3, + "value": "F92EE8A900000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 4908, + "end": 4931, + "name": "DUP2", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "MSTORE", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 3, + "value": "4" + }, + { + "begin": 4908, + "end": 4931, + "name": "ADD", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 4908, + "end": 4931, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "DUP1", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "SWAP2", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "SUB", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4908, + "end": 4931, + "name": "REVERT", + "source": 3 + }, + { + "begin": 4851, + "end": 4942, + "name": "tag", + "source": 3, + "value": "485" + }, + { + "begin": 4851, + "end": 4942, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 4968, + "end": 4969, + "name": "PUSH", + "source": 3, + "value": "1" + }, + { + "begin": 4951, + "end": 4952, + "name": "DUP6", + "source": 3 + }, + { + "begin": 4951, + "end": 4965, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4951, + "end": 4965, + "name": "ADD", + "source": 3 + }, + { + "begin": 4951, + "end": 4965, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 4951, + "end": 4969, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 4951, + "end": 4969, + "name": "EXP", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "DUP2", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "DUP2", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4951, + "end": 4969, + "name": "MUL", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "NOT", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "AND", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "DUP4", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "PUSH", + "source": 3, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4951, + "end": 4969, + "name": "AND", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "MUL", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "OR", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "SSTORE", + "source": 3 + }, + { + "begin": 4951, + "end": 4969, + "name": "POP", + "source": 3 + }, + { + "begin": 4983, + "end": 4997, + "name": "DUP4", + "source": 3 + }, + { + "begin": 4979, + "end": 5046, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 4979, + "end": 5046, + "name": "PUSH [tag]", + "source": 3, + "value": "486" + }, + { + "begin": 4979, + "end": 5046, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 5031, + "end": 5035, + "name": "PUSH", + "source": 3, + "value": "1" + }, + { + "begin": 5013, + "end": 5014, + "name": "DUP6", + "source": 3 + }, + { + "begin": 5013, + "end": 5028, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 5013, + "end": 5028, + "name": "ADD", + "source": 3 + }, + { + "begin": 5013, + "end": 5028, + "name": "PUSH", + "source": 3, + "value": "8" + }, + { + "begin": 5013, + "end": 5035, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 5013, + "end": 5035, + "name": "EXP", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "DUP2", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "DUP2", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "PUSH", + "source": 3, + "value": "FF" + }, + { + "begin": 5013, + "end": 5035, + "name": "MUL", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "NOT", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "AND", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "DUP4", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "MUL", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "OR", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "SSTORE", + "source": 3 + }, + { + "begin": 5013, + "end": 5035, + "name": "POP", + "source": 3 + }, + { + "begin": 4979, + "end": 5046, + "name": "tag", + "source": 3, + "value": "486" + }, + { + "begin": 4979, + "end": 5046, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 3828, + "end": 3856, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "488" + }, + { + "begin": 3843, + "end": 3855, + "modifierDepth": 1, + "name": "DUP9", + "source": 21 + }, + { + "begin": 3828, + "end": 3842, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "489" + }, + { + "begin": 3828, + "end": 3856, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 3828, + "end": 3856, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "488" + }, + { + "begin": 3828, + "end": 3856, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2282, + "end": 2288, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "16345785D8A0000" + }, + { + "begin": 3871, + "end": 3883, + "modifierDepth": 1, + "name": "DUP8", + "source": 21 + }, + { + "begin": 3871, + "end": 3904, + "modifierDepth": 1, + "name": "GT", + "source": 21 + }, + { + "begin": 3867, + "end": 3978, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 3867, + "end": 3978, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "490" + }, + { + "begin": 3867, + "end": 3978, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 3945, + "end": 3957, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 2282, + "end": 2288, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "16345785D8A0000" + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5E8988C100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "491" + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "492" + }, + { + "begin": 3913, + "end": 3978, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "491" + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 3913, + "end": 3978, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 3867, + "end": 3978, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "490" + }, + { + "begin": 3867, + "end": 3978, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 3989, + "end": 4019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "493" + }, + { + "begin": 4006, + "end": 4018, + "modifierDepth": 1, + "name": "DUP10", + "source": 21 + }, + { + "begin": 3989, + "end": 4005, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "494" + }, + { + "begin": 3989, + "end": 4019, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 3989, + "end": 4019, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "493" + }, + { + "begin": 3989, + "end": 4019, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4046, + "end": 4058, + "modifierDepth": 1, + "name": "DUP7", + "source": 21 + }, + { + "begin": 4030, + "end": 4043, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 4030, + "end": 4058, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 4030, + "end": 4058, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4030, + "end": 4058, + "modifierDepth": 1, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 4030, + "end": 4058, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 4084, + "end": 4103, + "modifierDepth": 1, + "name": "DUP6", + "source": 21 + }, + { + "begin": 4068, + "end": 4081, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 4068, + "end": 4081, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "EXP", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "MUL", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "NOT", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "MUL", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "OR", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 4068, + "end": 4103, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50" + }, + { + "begin": 4134, + "end": 4135, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 4137, + "end": 4149, + "modifierDepth": 1, + "name": "DUP9", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "495" + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "496" + }, + { + "begin": 4118, + "end": 4150, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "495" + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4118, + "end": 4150, + "modifierDepth": 1, + "name": "LOG1", + "source": 21 + }, + { + "begin": 5070, + "end": 5084, + "name": "DUP4", + "source": 3 + }, + { + "begin": 5066, + "end": 5167, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 5066, + "end": 5167, + "name": "PUSH [tag]", + "source": 3, + "value": "497" + }, + { + "begin": 5066, + "end": 5167, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 5118, + "end": 5123, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 5100, + "end": 5101, + "name": "DUP6", + "source": 3 + }, + { + "begin": 5100, + "end": 5115, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 5100, + "end": 5115, + "name": "ADD", + "source": 3 + }, + { + "begin": 5100, + "end": 5115, + "name": "PUSH", + "source": 3, + "value": "8" + }, + { + "begin": 5100, + "end": 5123, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 5100, + "end": 5123, + "name": "EXP", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "DUP2", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "DUP2", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "PUSH", + "source": 3, + "value": "FF" + }, + { + "begin": 5100, + "end": 5123, + "name": "MUL", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "NOT", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "AND", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "DUP4", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "ISZERO", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "MUL", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "OR", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "SSTORE", + "source": 3 + }, + { + "begin": 5100, + "end": 5123, + "name": "POP", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH", + "source": 3, + "value": "C7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2" + }, + { + "begin": 5154, + "end": 5155, + "name": "PUSH", + "source": 3, + "value": "1" + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 5142, + "end": 5156, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH [tag]", + "source": 3, + "value": "498" + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP2", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH [tag]", + "source": 3, + "value": "499" + }, + { + "begin": 5142, + "end": 5156, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "tag", + "source": 3, + "value": "498" + }, + { + "begin": 5142, + "end": 5156, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 5142, + "end": 5156, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "DUP1", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP2", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "SUB", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 5142, + "end": 5156, + "name": "LOG1", + "source": 3 + }, + { + "begin": 5066, + "end": 5167, + "name": "tag", + "source": 3, + "value": "497" + }, + { + "begin": 5066, + "end": 5167, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 3 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 3 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 3 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 3 + }, + { + "begin": 4092, + "end": 5173, + "name": "POP", + "source": 3 + }, + { + "begin": 3682, + "end": 4157, + "name": "POP", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "POP", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "POP", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "name": "POP", + "source": 21 + }, + { + "begin": 3682, + "end": 4157, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "tag", + "source": 21, + "value": "194" + }, + { + "begin": 11820, + "end": 11942, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 11868, + "end": 11875, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 2056, + "end": 2110, + "name": "PUSH", + "source": 21, + "value": "9DAAD794D31BFFEA33C7C571B462185CBD402366F4696E49C91BE26E9222BB9D" + }, + { + "begin": 11887, + "end": 11935, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11887, + "end": 11935, + "name": "POP", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 11820, + "end": 11942, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 5662, + "end": 5800, + "name": "tag", + "source": 0, + "value": "198" + }, + { + "begin": 5662, + "end": 5800, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5737, + "end": 5755, + "name": "PUSH [tag]", + "source": 0, + "value": "501" + }, + { + "begin": 5750, + "end": 5754, + "name": "DUP3", + "source": 0 + }, + { + "begin": 5737, + "end": 5749, + "name": "PUSH [tag]", + "source": 0, + "value": "81" + }, + { + "begin": 5737, + "end": 5755, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 5737, + "end": 5755, + "name": "tag", + "source": 0, + "value": "501" + }, + { + "begin": 5737, + "end": 5755, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3191, + "end": 3207, + "name": "PUSH [tag]", + "source": 0, + "value": "503" + }, + { + "begin": 3202, + "end": 3206, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3191, + "end": 3201, + "name": "PUSH [tag]", + "source": 0, + "value": "274" + }, + { + "begin": 3191, + "end": 3207, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3191, + "end": 3207, + "name": "tag", + "source": 0, + "value": "503" + }, + { + "begin": 3191, + "end": 3207, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5767, + "end": 5793, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 0, + "value": "505" + }, + { + "begin": 5779, + "end": 5783, + "modifierDepth": 1, + "name": "DUP4", + "source": 0 + }, + { + "begin": 5785, + "end": 5792, + "modifierDepth": 1, + "name": "DUP4", + "source": 0 + }, + { + "begin": 5767, + "end": 5778, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 0, + "value": "292" + }, + { + "begin": 5767, + "end": 5793, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 0 + }, + { + "begin": 5767, + "end": 5793, + "modifierDepth": 1, + "name": "tag", + "source": 0, + "value": "505" + }, + { + "begin": 5767, + "end": 5793, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 5767, + "end": 5793, + "modifierDepth": 1, + "name": "POP", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "POP", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "POP", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "name": "POP", + "source": 0 + }, + { + "begin": 5662, + "end": 5800, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 25131, + "end": 25375, + "name": "tag", + "source": 21, + "value": "201" + }, + { + "begin": 25131, + "end": 25375, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "507" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "507" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 25219, + "end": 25267, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "509" + }, + { + "begin": 25255, + "end": 25265, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25219, + "end": 25239, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "8" + }, + { + "begin": 25219, + "end": 25246, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "510" + }, + { + "begin": 25219, + "end": 25246, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25219, + "end": 25267, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25219, + "end": 25267, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25219, + "end": 25267, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 25219, + "end": 25267, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 25219, + "end": 25267, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 25219, + "end": 25267, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "509" + }, + { + "begin": 25219, + "end": 25267, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25214, + "end": 25323, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "511" + }, + { + "begin": 25214, + "end": 25323, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 25312, + "end": 25322, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "8E888EF300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "512" + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "69" + }, + { + "begin": 25276, + "end": 25323, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "512" + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25276, + "end": 25323, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 25214, + "end": 25323, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "511" + }, + { + "begin": 25214, + "end": 25323, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25357, + "end": 25367, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "B767739217755D8AF5A2BA75B181A19FA1750F8BB701F09311CB19A90140CB3" + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25339, + "end": 25368, + "modifierDepth": 1, + "name": "LOG2", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "name": "POP", + "source": 21 + }, + { + "begin": 25131, + "end": 25375, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "tag", + "source": 21, + "value": "205" + }, + { + "begin": 19331, + "end": 19528, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "514" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "514" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "516" + }, + { + "begin": 19428, + "end": 19435, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 19412, + "end": 19420, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5" + }, + { + "begin": 19412, + "end": 19427, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "517" + }, + { + "begin": 19412, + "end": 19427, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 19412, + "end": 19436, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "516" + }, + { + "begin": 19412, + "end": 19436, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 19407, + "end": 19483, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "518" + }, + { + "begin": 19407, + "end": 19483, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 19475, + "end": 19482, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FB22C17E00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "519" + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "298" + }, + { + "begin": 19445, + "end": 19483, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "519" + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19445, + "end": 19483, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 19407, + "end": 19483, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "518" + }, + { + "begin": 19407, + "end": 19483, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 19513, + "end": 19520, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "AND", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "DD86B848BB56FF540CAA68683FA467D0E7EB5F8B2D44E4EE435742EEEAE9BE13" + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 19499, + "end": 19521, + "modifierDepth": 1, + "name": "LOG2", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "name": "POP", + "source": 21 + }, + { + "begin": 19331, + "end": 19528, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 2038, + "end": 2206, + "name": "tag", + "source": 1, + "value": "207" + }, + { + "begin": 2038, + "end": 2206, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2091, + "end": 2098, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2110, + "end": 2139, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2142, + "end": 2167, + "name": "PUSH [tag]", + "source": 1, + "value": "521" + }, + { + "begin": 2142, + "end": 2165, + "name": "PUSH [tag]", + "source": 1, + "value": "522" + }, + { + "begin": 2142, + "end": 2167, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2142, + "end": 2167, + "name": "tag", + "source": 1, + "value": "521" + }, + { + "begin": 2142, + "end": 2167, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2110, + "end": 2167, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2110, + "end": 2167, + "name": "POP", + "source": 1 + }, + { + "begin": 2184, + "end": 2185, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2184, + "end": 2199, + "name": "ADD", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2184, + "end": 2199, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 2184, + "end": 2199, + "name": "EXP", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "DIV", + "source": 1 + }, + { + "begin": 2184, + "end": 2199, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2184, + "end": 2199, + "name": "AND", + "source": 1 + }, + { + "begin": 2177, + "end": 2199, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2177, + "end": 2199, + "name": "POP", + "source": 1 + }, + { + "begin": 2177, + "end": 2199, + "name": "POP", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2038, + "end": 2206, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 23440, + "end": 23562, + "name": "tag", + "source": 21, + "value": "212" + }, + { + "begin": 23440, + "end": 23562, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "524" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "524" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 23525, + "end": 23555, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "526" + }, + { + "begin": 23542, + "end": 23554, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 23525, + "end": 23541, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "494" + }, + { + "begin": 23525, + "end": 23555, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 23525, + "end": 23555, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "526" + }, + { + "begin": 23525, + "end": 23555, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "name": "POP", + "source": 21 + }, + { + "begin": 23440, + "end": 23562, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "tag", + "source": 21, + "value": "215" + }, + { + "begin": 23879, + "end": 24327, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "528" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "528" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 23964, + "end": 23987, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 23990, + "end": 24003, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 23990, + "end": 24003, + "modifierDepth": 1, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 23964, + "end": 24003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 23964, + "end": 24003, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 24037, + "end": 24049, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24018, + "end": 24033, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24018, + "end": 24049, + "name": "SUB", + "source": 21 + }, + { + "begin": 24014, + "end": 24099, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "530" + }, + { + "begin": 24014, + "end": 24099, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 24086, + "end": 24098, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "6EA8C7A400000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "531" + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "122" + }, + { + "begin": 24058, + "end": 24099, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "531" + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24058, + "end": 24099, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 24014, + "end": 24099, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "530" + }, + { + "begin": 24014, + "end": 24099, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 2282, + "end": 2288, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "16345785D8A0000" + }, + { + "begin": 24113, + "end": 24125, + "modifierDepth": 1, + "name": "DUP3", + "source": 21 + }, + { + "begin": 24113, + "end": 24146, + "modifierDepth": 1, + "name": "GT", + "source": 21 + }, + { + "begin": 24109, + "end": 24220, + "modifierDepth": 1, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 24109, + "end": 24220, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "532" + }, + { + "begin": 24109, + "end": 24220, + "modifierDepth": 1, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 24187, + "end": 24199, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 2282, + "end": 2288, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "16345785D8A0000" + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5E8988C100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "ADD", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "533" + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "492" + }, + { + "begin": 24155, + "end": 24220, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "533" + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24155, + "end": 24220, + "modifierDepth": 1, + "name": "REVERT", + "source": 21 + }, + { + "begin": 24109, + "end": 24220, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "532" + }, + { + "begin": 24109, + "end": 24220, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24247, + "end": 24259, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24231, + "end": 24244, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 24231, + "end": 24259, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24231, + "end": 24259, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24231, + "end": 24259, + "modifierDepth": 1, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 24231, + "end": 24259, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "5C34E91C94C78B662A45D0BD4A25A4E32C584C54A45A76E4A4D43BE27BA40E50" + }, + { + "begin": 24290, + "end": 24305, + "modifierDepth": 1, + "name": "DUP2", + "source": 21 + }, + { + "begin": 24307, + "end": 24319, + "modifierDepth": 1, + "name": "DUP4", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "534" + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 21, + "value": "492" + }, + { + "begin": 24274, + "end": 24320, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "tag", + "source": 21, + "value": "534" + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "DUP1", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "SUB", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 24274, + "end": 24320, + "modifierDepth": 1, + "name": "LOG1", + "source": 21 + }, + { + "begin": 23954, + "end": 24327, + "modifierDepth": 1, + "name": "POP", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "name": "POP", + "source": 21 + }, + { + "begin": 23879, + "end": 24327, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 2399, + "end": 2646, + "name": "tag", + "source": 1, + "value": "218" + }, + { + "begin": 2399, + "end": 2646, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2334, + "end": 2347, + "name": "PUSH [tag]", + "source": 2, + "value": "536" + }, + { + "begin": 2334, + "end": 2345, + "name": "PUSH [tag]", + "source": 2, + "value": "254" + }, + { + "begin": 2334, + "end": 2347, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2334, + "end": 2347, + "name": "tag", + "source": 2, + "value": "536" + }, + { + "begin": 2334, + "end": 2347, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2488, + "end": 2517, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2520, + "end": 2545, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 1, + "value": "538" + }, + { + "begin": 2520, + "end": 2543, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 1, + "value": "522" + }, + { + "begin": 2520, + "end": 2545, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 1 + }, + { + "begin": 2520, + "end": 2545, + "modifierDepth": 1, + "name": "tag", + "source": 1, + "value": "538" + }, + { + "begin": 2520, + "end": 2545, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2488, + "end": 2545, + "modifierDepth": 1, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2488, + "end": 2545, + "modifierDepth": 1, + "name": "POP", + "source": 1 + }, + { + "begin": 2573, + "end": 2581, + "modifierDepth": 1, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2555, + "end": 2556, + "modifierDepth": 1, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2555, + "end": 2570, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2555, + "end": 2570, + "modifierDepth": 1, + "name": "ADD", + "source": 1 + }, + { + "begin": 2555, + "end": 2570, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "EXP", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "MUL", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "NOT", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "AND", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "DUP4", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "AND", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "MUL", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "OR", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 2555, + "end": 2581, + "modifierDepth": 1, + "name": "POP", + "source": 1 + }, + { + "begin": 2630, + "end": 2638, + "modifierDepth": 1, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "AND", + "source": 1 + }, + { + "begin": 2621, + "end": 2628, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 1, + "value": "539" + }, + { + "begin": 2621, + "end": 2626, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 1, + "value": "172" + }, + { + "begin": 2621, + "end": 2628, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 1 + }, + { + "begin": 2621, + "end": 2628, + "modifierDepth": 1, + "name": "tag", + "source": 1, + "value": "539" + }, + { + "begin": 2621, + "end": 2628, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "AND", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700" + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "PUSH", + "source": 1, + "value": "40" + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "SUB", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2596, + "end": 2639, + "modifierDepth": 1, + "name": "LOG3", + "source": 1 + }, + { + "begin": 2478, + "end": 2646, + "modifierDepth": 1, + "name": "POP", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "name": "POP", + "source": 1 + }, + { + "begin": 2399, + "end": 2646, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4949, + "end": 5067, + "name": "tag", + "source": 21, + "value": "220" + }, + { + "begin": 4949, + "end": 5067, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 5008, + "end": 5028, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 5047, + "end": 5060, + "name": "PUSH", + "source": 21, + "value": "1" + }, + { + "begin": 5047, + "end": 5060, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 5040, + "end": 5060, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 5040, + "end": 5060, + "name": "POP", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 4949, + "end": 5067, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 1035, + "end": 1181, + "name": "tag", + "source": 5, + "value": "225" + }, + { + "begin": 1035, + "end": 1181, + "name": "JUMPDEST", + "source": 5 + }, + { + "begin": 1111, + "end": 1115, + "name": "PUSH", + "source": 5, + "value": "0" + }, + { + "begin": 1149, + "end": 1174, + "name": "PUSH", + "source": 5, + "value": "1FFC9A700000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1134, + "end": 1174, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1134, + "end": 1174, + "name": "NOT", + "source": 5 + }, + { + "begin": 1134, + "end": 1174, + "name": "AND", + "source": 5 + }, + { + "begin": 1134, + "end": 1145, + "name": "DUP3", + "source": 5 + }, + { + "begin": 1134, + "end": 1174, + "name": "PUSH", + "source": 5, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1134, + "end": 1174, + "name": "NOT", + "source": 5 + }, + { + "begin": 1134, + "end": 1174, + "name": "AND", + "source": 5 + }, + { + "begin": 1134, + "end": 1174, + "name": "EQ", + "source": 5 + }, + { + "begin": 1127, + "end": 1174, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 1127, + "end": 1174, + "name": "POP", + "source": 5 + }, + { + "begin": 1035, + "end": 1181, + "name": "SWAP2", + "source": 5 + }, + { + "begin": 1035, + "end": 1181, + "name": "SWAP1", + "source": 5 + }, + { + "begin": 1035, + "end": 1181, + "name": "POP", + "source": 5 + }, + { + "begin": 1035, + "end": 1181, + "jumpType": "[out]", + "name": "JUMP", + "source": 5 + }, + { + "begin": 7009, + "end": 7126, + "name": "tag", + "source": 19, + "value": "228" + }, + { + "begin": 7009, + "end": 7126, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 7075, + "end": 7082, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 7101, + "end": 7119, + "name": "PUSH [tag]", + "source": 19, + "value": "543" + }, + { + "begin": 7108, + "end": 7111, + "name": "DUP3", + "source": 19 + }, + { + "begin": 7108, + "end": 7118, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 7108, + "end": 7118, + "name": "ADD", + "source": 19 + }, + { + "begin": 7101, + "end": 7107, + "name": "PUSH [tag]", + "source": 19, + "value": "544" + }, + { + "begin": 7101, + "end": 7119, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 7101, + "end": 7119, + "name": "tag", + "source": 19, + "value": "543" + }, + { + "begin": 7101, + "end": 7119, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 7094, + "end": 7119, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 7094, + "end": 7119, + "name": "POP", + "source": 19 + }, + { + "begin": 7009, + "end": 7126, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 7009, + "end": 7126, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 7009, + "end": 7126, + "name": "POP", + "source": 19 + }, + { + "begin": 7009, + "end": 7126, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 7463, + "end": 7674, + "name": "tag", + "source": 19, + "value": "238" + }, + { + "begin": 7463, + "end": 7674, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 7540, + "end": 7547, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 7549, + "end": 7556, + "name": "DUP1", + "source": 19 + }, + { + "begin": 7569, + "end": 7580, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 7582, + "end": 7595, + "name": "DUP1", + "source": 19 + }, + { + "begin": 7599, + "end": 7620, + "name": "PUSH [tag]", + "source": 19, + "value": "546" + }, + { + "begin": 7602, + "end": 7605, + "name": "DUP7", + "source": 19 + }, + { + "begin": 7602, + "end": 7612, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 7602, + "end": 7612, + "name": "ADD", + "source": 19 + }, + { + "begin": 7614, + "end": 7619, + "name": "DUP7", + "source": 19 + }, + { + "begin": 7599, + "end": 7601, + "name": "PUSH [tag]", + "source": 19, + "value": "547" + }, + { + "begin": 7599, + "end": 7620, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 7599, + "end": 7620, + "name": "tag", + "source": 19, + "value": "546" + }, + { + "begin": 7599, + "end": 7620, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 7568, + "end": 7620, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 7568, + "end": 7620, + "name": "POP", + "source": 19 + }, + { + "begin": 7568, + "end": 7620, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 7568, + "end": 7620, + "name": "POP", + "source": 19 + }, + { + "begin": 7646, + "end": 7649, + "name": "DUP2", + "source": 19 + }, + { + "begin": 7638, + "end": 7650, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 7638, + "end": 7650, + "name": "SHR", + "source": 19 + }, + { + "begin": 7660, + "end": 7665, + "name": "DUP2", + "source": 19 + }, + { + "begin": 7652, + "end": 7666, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 7652, + "end": 7666, + "name": "SHR", + "source": 19 + }, + { + "begin": 7630, + "end": 7667, + "name": "SWAP4", + "source": 19 + }, + { + "begin": 7630, + "end": 7667, + "name": "POP", + "source": 19 + }, + { + "begin": 7630, + "end": 7667, + "name": "SWAP4", + "source": 19 + }, + { + "begin": 7630, + "end": 7667, + "name": "POP", + "source": 19 + }, + { + "begin": 7630, + "end": 7667, + "name": "POP", + "source": 19 + }, + { + "begin": 7630, + "end": 7667, + "name": "POP", + "source": 19 + }, + { + "begin": 7463, + "end": 7674, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 7463, + "end": 7674, + "name": "POP", + "source": 19 + }, + { + "begin": 7463, + "end": 7674, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 7463, + "end": 7674, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 7463, + "end": 7674, + "name": "POP", + "source": 19 + }, + { + "begin": 7463, + "end": 7674, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 25381, + "end": 25514, + "name": "tag", + "source": 21, + "value": "240" + }, + { + "begin": 25381, + "end": 25514, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25443, + "end": 25447, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 25466, + "end": 25507, + "name": "PUSH [tag]", + "source": 21, + "value": "549" + }, + { + "begin": 2167, + "end": 2170, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 25466, + "end": 25472, + "name": "DUP4", + "source": 21 + }, + { + "begin": 25466, + "end": 25483, + "name": "PUSH [tag]", + "source": 21, + "value": "335" + }, + { + "begin": 25466, + "end": 25483, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25466, + "end": 25507, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25466, + "end": 25507, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25466, + "end": 25507, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 25466, + "end": 25507, + "name": "AND", + "source": 21 + }, + { + "begin": 25466, + "end": 25507, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 25466, + "end": 25507, + "name": "tag", + "source": 21, + "value": "549" + }, + { + "begin": 25466, + "end": 25507, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25459, + "end": 25507, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25459, + "end": 25507, + "name": "POP", + "source": 21 + }, + { + "begin": 25381, + "end": 25514, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25381, + "end": 25514, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25381, + "end": 25514, + "name": "POP", + "source": 21 + }, + { + "begin": 25381, + "end": 25514, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 9574, + "end": 9730, + "name": "tag", + "source": 20, + "value": "251" + }, + { + "begin": 9574, + "end": 9730, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 9648, + "end": 9655, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 9698, + "end": 9720, + "name": "PUSH [tag]", + "source": 20, + "value": "551" + }, + { + "begin": 9702, + "end": 9705, + "name": "DUP4", + "source": 20 + }, + { + "begin": 9702, + "end": 9712, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 9702, + "end": 9712, + "name": "ADD", + "source": 20 + }, + { + "begin": 9714, + "end": 9719, + "name": "DUP4", + "source": 20 + }, + { + "begin": 9698, + "end": 9701, + "name": "PUSH [tag]", + "source": 20, + "value": "552" + }, + { + "begin": 9698, + "end": 9720, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 9698, + "end": 9720, + "name": "tag", + "source": 20, + "value": "551" + }, + { + "begin": 9698, + "end": 9720, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 9690, + "end": 9721, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 9690, + "end": 9721, + "name": "SHR", + "source": 20 + }, + { + "begin": 9667, + "end": 9723, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 9667, + "end": 9723, + "name": "POP", + "source": 20 + }, + { + "begin": 9574, + "end": 9730, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 9574, + "end": 9730, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 9574, + "end": 9730, + "name": "POP", + "source": 20 + }, + { + "begin": 9574, + "end": 9730, + "name": "POP", + "source": 20 + }, + { + "begin": 9574, + "end": 9730, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 2658, + "end": 2820, + "name": "tag", + "source": 2, + "value": "254" + }, + { + "begin": 2658, + "end": 2820, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2728, + "end": 2740, + "name": "PUSH [tag]", + "source": 2, + "value": "554" + }, + { + "begin": 2728, + "end": 2738, + "name": "PUSH [tag]", + "source": 2, + "value": "289" + }, + { + "begin": 2728, + "end": 2740, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2728, + "end": 2740, + "name": "tag", + "source": 2, + "value": "554" + }, + { + "begin": 2728, + "end": 2740, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2717, + "end": 2740, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2717, + "end": 2740, + "name": "AND", + "source": 2 + }, + { + "begin": 2717, + "end": 2724, + "name": "PUSH [tag]", + "source": 2, + "value": "555" + }, + { + "begin": 2717, + "end": 2722, + "name": "PUSH [tag]", + "source": 2, + "value": "172" + }, + { + "begin": 2717, + "end": 2724, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2717, + "end": 2724, + "name": "tag", + "source": 2, + "value": "555" + }, + { + "begin": 2717, + "end": 2724, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2717, + "end": 2740, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2717, + "end": 2740, + "name": "AND", + "source": 2 + }, + { + "begin": 2717, + "end": 2740, + "name": "EQ", + "source": 2 + }, + { + "begin": 2713, + "end": 2814, + "name": "PUSH [tag]", + "source": 2, + "value": "556" + }, + { + "begin": 2713, + "end": 2814, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 2790, + "end": 2802, + "name": "PUSH [tag]", + "source": 2, + "value": "557" + }, + { + "begin": 2790, + "end": 2800, + "name": "PUSH [tag]", + "source": 2, + "value": "289" + }, + { + "begin": 2790, + "end": 2802, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2790, + "end": 2802, + "name": "tag", + "source": 2, + "value": "557" + }, + { + "begin": 2790, + "end": 2802, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2763, + "end": 2803, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "PUSH", + "source": 2, + "value": "118CDAA700000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2763, + "end": 2803, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 2763, + "end": 2803, + "name": "ADD", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "PUSH [tag]", + "source": 2, + "value": "558" + }, + { + "begin": 2763, + "end": 2803, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "PUSH [tag]", + "source": 2, + "value": "114" + }, + { + "begin": 2763, + "end": 2803, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "tag", + "source": 2, + "value": "558" + }, + { + "begin": 2763, + "end": 2803, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2763, + "end": 2803, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "SUB", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2763, + "end": 2803, + "name": "REVERT", + "source": 2 + }, + { + "begin": 2713, + "end": 2814, + "name": "tag", + "source": 2, + "value": "556" + }, + { + "begin": 2713, + "end": 2814, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2658, + "end": 2820, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 26700, + "end": 26971, + "name": "tag", + "source": 21, + "value": "257" + }, + { + "begin": 26700, + "end": 26971, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26824, + "end": 26848, + "name": "PUSH [tag]", + "source": 21, + "value": "559" + }, + { + "begin": 26824, + "end": 26848, + "name": "PUSH [tag]", + "source": 21, + "value": "416" + }, + { + "begin": 26824, + "end": 26848, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 26824, + "end": 26848, + "name": "tag", + "source": 21, + "value": "559" + }, + { + "begin": 26824, + "end": 26848, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26883, + "end": 26910, + "name": "PUSH [tag]", + "source": 21, + "value": "561" + }, + { + "begin": 26895, + "end": 26901, + "name": "DUP5", + "source": 21 + }, + { + "begin": 26903, + "end": 26909, + "name": "DUP5", + "source": 21 + }, + { + "begin": 26883, + "end": 26894, + "name": "PUSH [tag]", + "source": 21, + "value": "369" + }, + { + "begin": 26883, + "end": 26910, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 26883, + "end": 26910, + "name": "tag", + "source": 21, + "value": "561" + }, + { + "begin": 26883, + "end": 26910, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "POP", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "POP", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "POP", + "source": 21 + }, + { + "begin": 26864, + "end": 26910, + "name": "POP", + "source": 21 + }, + { + "begin": 26927, + "end": 26939, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 26927, + "end": 26947, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26940, + "end": 26946, + "name": "DUP6", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26927, + "end": 26947, + "name": "AND", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26927, + "end": 26947, + "name": "AND", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26927, + "end": 26947, + "name": "ADD", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26927, + "end": 26947, + "name": "ADD", + "source": 21 + }, + { + "begin": 26927, + "end": 26947, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26927, + "end": 26947, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26948, + "end": 26954, + "name": "DUP5", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26927, + "end": 26955, + "name": "AND", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26927, + "end": 26955, + "name": "AND", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26927, + "end": 26955, + "name": "ADD", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26927, + "end": 26955, + "name": "ADD", + "source": 21 + }, + { + "begin": 26927, + "end": 26955, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26927, + "end": 26955, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26956, + "end": 26963, + "name": "DUP4", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26927, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26927, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26927, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26927, + "end": 26964, + "name": "KECCAK256", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 26920, + "end": 26964, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "80" + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 26920, + "end": 26964, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP3", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 26920, + "end": 26964, + "name": "EXP", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DIV", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP3", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "2" + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 26920, + "end": 26964, + "name": "EXP", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DIV", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP3", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "16" + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 26920, + "end": 26964, + "name": "EXP", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DIV", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP3", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ADD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "17" + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 26920, + "end": 26964, + "name": "EXP", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DIV", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "PUSH", + "source": 21, + "value": "FF" + }, + { + "begin": 26920, + "end": 26964, + "name": "AND", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "POP", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "POP", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 26920, + "end": 26964, + "name": "POP", + "source": 21 + }, + { + "begin": 26700, + "end": 26971, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 26700, + "end": 26971, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 26700, + "end": 26971, + "name": "POP", + "source": 21 + }, + { + "begin": 26700, + "end": 26971, + "name": "POP", + "source": 21 + }, + { + "begin": 26700, + "end": 26971, + "name": "POP", + "source": 21 + }, + { + "begin": 26700, + "end": 26971, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 2787, + "end": 2964, + "name": "tag", + "source": 0, + "value": "268" + }, + { + "begin": 2787, + "end": 2964, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 2845, + "end": 2875, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 2920, + "end": 2948, + "name": "PUSH", + "source": 0, + "value": "2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800" + }, + { + "begin": 2910, + "end": 2948, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 2910, + "end": 2948, + "name": "POP", + "source": 0 + }, + { + "begin": 2787, + "end": 2964, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 2787, + "end": 2964, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 8871, + "end": 9036, + "name": "tag", + "source": 20, + "value": "271" + }, + { + "begin": 8871, + "end": 9036, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 8951, + "end": 8955, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8974, + "end": 9029, + "name": "PUSH [tag]", + "source": 20, + "value": "564" + }, + { + "begin": 8984, + "end": 8987, + "name": "DUP4", + "source": 20 + }, + { + "begin": 8984, + "end": 8994, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8984, + "end": 8994, + "name": "ADD", + "source": 20 + }, + { + "begin": 9020, + "end": 9025, + "name": "DUP4", + "source": 20 + }, + { + "begin": 9004, + "end": 9027, + "name": "PUSH", + "source": 20, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 9004, + "end": 9027, + "name": "AND", + "source": 20 + }, + { + "begin": 8996, + "end": 9028, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8996, + "end": 9028, + "name": "SHL", + "source": 20 + }, + { + "begin": 8974, + "end": 8983, + "name": "PUSH [tag]", + "source": 20, + "value": "565" + }, + { + "begin": 8974, + "end": 9029, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 8974, + "end": 9029, + "name": "tag", + "source": 20, + "value": "564" + }, + { + "begin": 8974, + "end": 9029, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 8967, + "end": 9029, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 8967, + "end": 9029, + "name": "POP", + "source": 20 + }, + { + "begin": 8871, + "end": 9036, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 8871, + "end": 9036, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 8871, + "end": 9036, + "name": "POP", + "source": 20 + }, + { + "begin": 8871, + "end": 9036, + "name": "POP", + "source": 20 + }, + { + "begin": 8871, + "end": 9036, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 4148, + "end": 4251, + "name": "tag", + "source": 0, + "value": "274" + }, + { + "begin": 4148, + "end": 4251, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4214, + "end": 4244, + "name": "PUSH [tag]", + "source": 0, + "value": "567" + }, + { + "begin": 4225, + "end": 4229, + "name": "DUP2", + "source": 0 + }, + { + "begin": 4231, + "end": 4243, + "name": "PUSH [tag]", + "source": 0, + "value": "568" + }, + { + "begin": 4231, + "end": 4241, + "name": "PUSH [tag]", + "source": 0, + "value": "289" + }, + { + "begin": 4231, + "end": 4243, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4231, + "end": 4243, + "name": "tag", + "source": 0, + "value": "568" + }, + { + "begin": 4231, + "end": 4243, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4214, + "end": 4224, + "name": "PUSH [tag]", + "source": 0, + "value": "569" + }, + { + "begin": 4214, + "end": 4244, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4214, + "end": 4244, + "name": "tag", + "source": 0, + "value": "567" + }, + { + "begin": 4214, + "end": 4244, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4148, + "end": 4251, + "name": "POP", + "source": 0 + }, + { + "begin": 4148, + "end": 4251, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 27812, + "end": 28383, + "name": "tag", + "source": 21, + "value": "280" + }, + { + "begin": 27812, + "end": 28383, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28014, + "end": 28028, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28031, + "end": 28077, + "name": "PUSH [tag]", + "source": 21, + "value": "571" + }, + { + "begin": 28053, + "end": 28059, + "name": "DUP7", + "source": 21 + }, + { + "begin": 28061, + "end": 28067, + "name": "DUP7", + "source": 21 + }, + { + "begin": 28069, + "end": 28076, + "name": "DUP7", + "source": 21 + }, + { + "begin": 28031, + "end": 28077, + "name": "PUSH", + "source": 21, + "value": "FFFF" + }, + { + "begin": 28031, + "end": 28077, + "name": "AND", + "source": 21 + }, + { + "begin": 28031, + "end": 28052, + "name": "PUSH [tag]", + "source": 21, + "value": "257" + }, + { + "begin": 28031, + "end": 28077, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28031, + "end": 28077, + "name": "tag", + "source": 21, + "value": "571" + }, + { + "begin": 28031, + "end": 28077, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28031, + "end": 28084, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 28031, + "end": 28084, + "name": "ADD", + "source": 21 + }, + { + "begin": 28031, + "end": 28084, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28014, + "end": 28084, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28014, + "end": 28084, + "name": "POP", + "source": 21 + }, + { + "begin": 28126, + "end": 28127, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28099, + "end": 28128, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 28099, + "end": 28128, + "name": "AND", + "source": 21 + }, + { + "begin": 28107, + "end": 28113, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28099, + "end": 28128, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 28099, + "end": 28128, + "name": "AND", + "source": 21 + }, + { + "begin": 28099, + "end": 28128, + "name": "SUB", + "source": 21 + }, + { + "begin": 28095, + "end": 28189, + "name": "PUSH [tag]", + "source": 21, + "value": "572" + }, + { + "begin": 28095, + "end": 28189, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 28165, + "end": 28171, + "name": "DUP6", + "source": 21 + }, + { + "begin": 28173, + "end": 28179, + "name": "DUP6", + "source": 21 + }, + { + "begin": 28181, + "end": 28188, + "name": "DUP6", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28137, + "end": 28189, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "PUSH", + "source": 21, + "value": "B65EE95300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 28137, + "end": 28189, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 28137, + "end": 28189, + "name": "ADD", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "PUSH [tag]", + "source": 21, + "value": "573" + }, + { + "begin": 28137, + "end": 28189, + "name": "SWAP4", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "PUSH [tag]", + "source": 21, + "value": "260" + }, + { + "begin": 28137, + "end": 28189, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "tag", + "source": 21, + "value": "573" + }, + { + "begin": 28137, + "end": 28189, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28137, + "end": 28189, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "SUB", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28137, + "end": 28189, + "name": "REVERT", + "source": 21 + }, + { + "begin": 28095, + "end": 28189, + "name": "tag", + "source": 21, + "value": "572" + }, + { + "begin": 28095, + "end": 28189, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28236, + "end": 28251, + "name": "DUP3", + "source": 21 + }, + { + "begin": 28203, + "end": 28209, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28203, + "end": 28230, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 28203, + "end": 28230, + "name": "AND", + "source": 21 + }, + { + "begin": 28203, + "end": 28230, + "name": "PUSH", + "source": 21, + "value": "781A8915" + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28203, + "end": 28232, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 28203, + "end": 28232, + "name": "AND", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "E0" + }, + { + "begin": 28203, + "end": 28232, + "name": "SHL", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 28203, + "end": 28232, + "name": "ADD", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "20" + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28203, + "end": 28232, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP4", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "SUB", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP7", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "GAS", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "STATICCALL", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH [tag]", + "source": 21, + "value": "575" + }, + { + "begin": 28203, + "end": 28232, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "RETURNDATACOPY", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28203, + "end": 28232, + "name": "REVERT", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "tag", + "source": 21, + "value": "575" + }, + { + "begin": 28203, + "end": 28232, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "POP", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "POP", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "POP", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "POP", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28203, + "end": 28232, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 28203, + "end": 28232, + "name": "NOT", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "1F" + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP3", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "ADD", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "AND", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP3", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "ADD", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28203, + "end": 28232, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "POP", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "ADD", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH [tag]", + "source": 21, + "value": "576" + }, + { + "begin": 28203, + "end": 28232, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "PUSH [tag]", + "source": 21, + "value": "577" + }, + { + "begin": 28203, + "end": 28232, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28203, + "end": 28232, + "name": "tag", + "source": 21, + "value": "576" + }, + { + "begin": 28203, + "end": 28232, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28203, + "end": 28251, + "name": "SUB", + "source": 21 + }, + { + "begin": 28199, + "end": 28307, + "name": "PUSH [tag]", + "source": 21, + "value": "578" + }, + { + "begin": 28199, + "end": 28307, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 28291, + "end": 28306, + "name": "DUP3", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28260, + "end": 28307, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "PUSH", + "source": 21, + "value": "B70CD0DB00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 28260, + "end": 28307, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 28260, + "end": 28307, + "name": "ADD", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "PUSH [tag]", + "source": 21, + "value": "579" + }, + { + "begin": 28260, + "end": 28307, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "PUSH [tag]", + "source": 21, + "value": "77" + }, + { + "begin": 28260, + "end": 28307, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "tag", + "source": 21, + "value": "579" + }, + { + "begin": 28260, + "end": 28307, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28260, + "end": 28307, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "SUB", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28260, + "end": 28307, + "name": "REVERT", + "source": 21 + }, + { + "begin": 28199, + "end": 28307, + "name": "tag", + "source": 21, + "value": "578" + }, + { + "begin": 28199, + "end": 28307, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28318, + "end": 28324, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28343, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 28318, + "end": 28343, + "name": "AND", + "source": 21 + }, + { + "begin": 28318, + "end": 28343, + "name": "PUSH", + "source": 21, + "value": "1B057F6D" + }, + { + "begin": 28344, + "end": 28359, + "name": "DUP5", + "source": 21 + }, + { + "begin": 28361, + "end": 28375, + "name": "DUP5", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28318, + "end": 28376, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP4", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFF" + }, + { + "begin": 28318, + "end": 28376, + "name": "AND", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "E0" + }, + { + "begin": 28318, + "end": 28376, + "name": "SHL", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 28318, + "end": 28376, + "name": "ADD", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH [tag]", + "source": 21, + "value": "580" + }, + { + "begin": 28318, + "end": 28376, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH [tag]", + "source": 21, + "value": "581" + }, + { + "begin": 28318, + "end": 28376, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "tag", + "source": 21, + "value": "580" + }, + { + "begin": 28318, + "end": 28376, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 28318, + "end": 28376, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP4", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "SUB", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP2", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP8", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "EXTCODESIZE", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH [tag]", + "source": 21, + "value": "582" + }, + { + "begin": 28318, + "end": 28376, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "REVERT", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "tag", + "source": 21, + "value": "582" + }, + { + "begin": 28318, + "end": 28376, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "POP", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "GAS", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "CALL", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH [tag]", + "source": 21, + "value": "584" + }, + { + "begin": 28318, + "end": 28376, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28318, + "end": 28376, + "name": "DUP1", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "RETURNDATACOPY", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "RETURNDATASIZE", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 28318, + "end": 28376, + "name": "REVERT", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "tag", + "source": 21, + "value": "584" + }, + { + "begin": 28318, + "end": 28376, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "POP", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "POP", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "POP", + "source": 21 + }, + { + "begin": 28318, + "end": 28376, + "name": "POP", + "source": 21 + }, + { + "begin": 28004, + "end": 28383, + "name": "POP", + "source": 21 + }, + { + "begin": 27812, + "end": 28383, + "name": "POP", + "source": 21 + }, + { + "begin": 27812, + "end": 28383, + "name": "POP", + "source": 21 + }, + { + "begin": 27812, + "end": 28383, + "name": "POP", + "source": 21 + }, + { + "begin": 27812, + "end": 28383, + "name": "POP", + "source": 21 + }, + { + "begin": 27812, + "end": 28383, + "name": "POP", + "source": 21 + }, + { + "begin": 27812, + "end": 28383, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 29104, + "end": 29332, + "name": "tag", + "source": 21, + "value": "286" + }, + { + "begin": 29104, + "end": 29332, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 29182, + "end": 29186, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 2362, + "end": 2366, + "name": "DUP1", + "source": 0 + }, + { + "begin": 29210, + "end": 29228, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 29210, + "end": 29228, + "name": "SHL", + "source": 21 + }, + { + "begin": 29202, + "end": 29206, + "name": "DUP4", + "source": 21 + }, + { + "begin": 29202, + "end": 29228, + "name": "SUB", + "source": 21 + }, + { + "begin": 29198, + "end": 29277, + "name": "PUSH [tag]", + "source": 21, + "value": "586" + }, + { + "begin": 29198, + "end": 29277, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 29237, + "end": 29277, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "PUSH", + "source": 21, + "value": "7C64A79E00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 29237, + "end": 29277, + "name": "DUP2", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 29237, + "end": 29277, + "name": "ADD", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 29237, + "end": 29277, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "DUP1", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "SUB", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 29237, + "end": 29277, + "name": "REVERT", + "source": 21 + }, + { + "begin": 29198, + "end": 29277, + "name": "tag", + "source": 21, + "value": "586" + }, + { + "begin": 29198, + "end": 29277, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 29294, + "end": 29325, + "name": "PUSH [tag]", + "source": 21, + "value": "587" + }, + { + "begin": 29311, + "end": 29315, + "name": "DUP4", + "source": 21 + }, + { + "begin": 29317, + "end": 29324, + "name": "DUP4", + "source": 21 + }, + { + "begin": 29294, + "end": 29310, + "name": "PUSH [tag]", + "source": 21, + "value": "588" + }, + { + "begin": 29294, + "end": 29325, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 29294, + "end": 29325, + "name": "tag", + "source": 21, + "value": "587" + }, + { + "begin": 29294, + "end": 29325, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 29287, + "end": 29325, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 29287, + "end": 29325, + "name": "POP", + "source": 21 + }, + { + "begin": 29104, + "end": 29332, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 29104, + "end": 29332, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 29104, + "end": 29332, + "name": "POP", + "source": 21 + }, + { + "begin": 29104, + "end": 29332, + "name": "POP", + "source": 21 + }, + { + "begin": 29104, + "end": 29332, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 887, + "end": 983, + "name": "tag", + "source": 4, + "value": "289" + }, + { + "begin": 887, + "end": 983, + "name": "JUMPDEST", + "source": 4 + }, + { + "begin": 940, + "end": 947, + "name": "PUSH", + "source": 4, + "value": "0" + }, + { + "begin": 966, + "end": 976, + "name": "CALLER", + "source": 4 + }, + { + "begin": 959, + "end": 976, + "name": "SWAP1", + "source": 4 + }, + { + "begin": 959, + "end": 976, + "name": "POP", + "source": 4 + }, + { + "begin": 887, + "end": 983, + "name": "SWAP1", + "source": 4 + }, + { + "begin": 887, + "end": 983, + "jumpType": "[out]", + "name": "JUMP", + "source": 4 + }, + { + "begin": 7892, + "end": 8280, + "name": "tag", + "source": 0, + "value": "292" + }, + { + "begin": 7892, + "end": 8280, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7970, + "end": 7974, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7986, + "end": 8016, + "name": "DUP1", + "source": 0 + }, + { + "begin": 8019, + "end": 8045, + "name": "PUSH [tag]", + "source": 0, + "value": "591" + }, + { + "begin": 8019, + "end": 8043, + "name": "PUSH [tag]", + "source": 0, + "value": "268" + }, + { + "begin": 8019, + "end": 8045, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 8019, + "end": 8045, + "name": "tag", + "source": 0, + "value": "591" + }, + { + "begin": 8019, + "end": 8045, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7986, + "end": 8045, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 7986, + "end": 8045, + "name": "POP", + "source": 0 + }, + { + "begin": 8059, + "end": 8081, + "name": "PUSH [tag]", + "source": 0, + "value": "592" + }, + { + "begin": 8067, + "end": 8071, + "name": "DUP5", + "source": 0 + }, + { + "begin": 8073, + "end": 8080, + "name": "DUP5", + "source": 0 + }, + { + "begin": 8059, + "end": 8066, + "name": "PUSH [tag]", + "source": 0, + "value": "176" + }, + { + "begin": 8059, + "end": 8081, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 8059, + "end": 8081, + "name": "tag", + "source": 0, + "value": "592" + }, + { + "begin": 8059, + "end": 8081, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 8055, + "end": 8274, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 8055, + "end": 8274, + "name": "PUSH [tag]", + "source": 0, + "value": "593" + }, + { + "begin": 8055, + "end": 8274, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 8131, + "end": 8136, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8097, + "end": 8098, + "name": "DUP2", + "source": 0 + }, + { + "begin": 8097, + "end": 8105, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8097, + "end": 8105, + "name": "ADD", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8106, + "end": 8110, + "name": "DUP7", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "DUP2", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 8097, + "end": 8111, + "name": "ADD", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "DUP2", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 8097, + "end": 8111, + "name": "ADD", + "source": 0 + }, + { + "begin": 8097, + "end": 8111, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8097, + "end": 8111, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 8097, + "end": 8119, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8097, + "end": 8119, + "name": "ADD", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8120, + "end": 8127, + "name": "DUP6", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8097, + "end": 8128, + "name": "AND", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8097, + "end": 8128, + "name": "AND", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "DUP2", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 8097, + "end": 8128, + "name": "ADD", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "DUP2", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 8097, + "end": 8128, + "name": "ADD", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8097, + "end": 8128, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 8097, + "end": 8128, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8097, + "end": 8136, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 8097, + "end": 8136, + "name": "EXP", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "DUP2", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "DUP2", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 8097, + "end": 8136, + "name": "MUL", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "NOT", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "AND", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "DUP4", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "MUL", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "OR", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 8097, + "end": 8136, + "name": "POP", + "source": 0 + }, + { + "begin": 8182, + "end": 8194, + "name": "PUSH [tag]", + "source": 0, + "value": "594" + }, + { + "begin": 8182, + "end": 8192, + "name": "PUSH [tag]", + "source": 0, + "value": "289" + }, + { + "begin": 8182, + "end": 8194, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 8182, + "end": 8194, + "name": "tag", + "source": 0, + "value": "594" + }, + { + "begin": 8182, + "end": 8194, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8155, + "end": 8195, + "name": "AND", + "source": 0 + }, + { + "begin": 8173, + "end": 8180, + "name": "DUP4", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8155, + "end": 8195, + "name": "AND", + "source": 0 + }, + { + "begin": 8167, + "end": 8171, + "name": "DUP6", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "PUSH", + "source": 0, + "value": "F6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B" + }, + { + "begin": 8155, + "end": 8195, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 8155, + "end": 8195, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 8155, + "end": 8195, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "DUP1", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "SUB", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 8155, + "end": 8195, + "name": "LOG4", + "source": 0 + }, + { + "begin": 8216, + "end": 8220, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 8209, + "end": 8220, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 8209, + "end": 8220, + "name": "POP", + "source": 0 + }, + { + "begin": 8209, + "end": 8220, + "name": "POP", + "source": 0 + }, + { + "begin": 8209, + "end": 8220, + "name": "PUSH [tag]", + "source": 0, + "value": "590" + }, + { + "begin": 8209, + "end": 8220, + "name": "JUMP", + "source": 0 + }, + { + "begin": 8055, + "end": 8274, + "name": "tag", + "source": 0, + "value": "593" + }, + { + "begin": 8055, + "end": 8274, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 8258, + "end": 8263, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 8251, + "end": 8263, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 8251, + "end": 8263, + "name": "POP", + "source": 0 + }, + { + "begin": 8251, + "end": 8263, + "name": "POP", + "source": 0 + }, + { + "begin": 7892, + "end": 8280, + "name": "tag", + "source": 0, + "value": "590" + }, + { + "begin": 7892, + "end": 8280, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7892, + "end": 8280, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 7892, + "end": 8280, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 7892, + "end": 8280, + "name": "POP", + "source": 0 + }, + { + "begin": 7892, + "end": 8280, + "name": "POP", + "source": 0 + }, + { + "begin": 7892, + "end": 8280, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 12883, + "end": 14280, + "name": "tag", + "source": 32, + "value": "300" + }, + { + "begin": 12883, + "end": 14280, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13190, + "end": 13207, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 13251, + "end": 13262, + "name": "DUP6", + "source": 32 + }, + { + "begin": 13236, + "end": 13262, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13236, + "end": 13262, + "name": "AND", + "source": 32 + }, + { + "begin": 13236, + "end": 13248, + "name": "DUP8", + "source": 32 + }, + { + "begin": 13236, + "end": 13262, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13236, + "end": 13262, + "name": "AND", + "source": 32 + }, + { + "begin": 13236, + "end": 13262, + "name": "GT", + "source": 32 + }, + { + "begin": 13236, + "end": 13299, + "name": "DUP1", + "source": 32 + }, + { + "begin": 13236, + "end": 13299, + "name": "PUSH [tag]", + "source": 32, + "value": "597" + }, + { + "begin": 13236, + "end": 13299, + "name": "JUMPI", + "source": 32 + }, + { + "begin": 13236, + "end": 13299, + "name": "POP", + "source": 32 + }, + { + "begin": 327, + "end": 332, + "name": "PUSH", + "source": 36, + "value": "FFF" + }, + { + "begin": 13266, + "end": 13277, + "name": "DUP7", + "source": 32 + }, + { + "begin": 13266, + "end": 13299, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13266, + "end": 13299, + "name": "AND", + "source": 32 + }, + { + "begin": 13266, + "end": 13299, + "name": "GT", + "source": 32 + }, + { + "begin": 13236, + "end": 13299, + "name": "tag", + "source": 32, + "value": "597" + }, + { + "begin": 13236, + "end": 13299, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13236, + "end": 13362, + "name": "DUP1", + "source": 32 + }, + { + "begin": 13236, + "end": 13362, + "name": "PUSH [tag]", + "source": 32, + "value": "598" + }, + { + "begin": 13236, + "end": 13362, + "name": "JUMPI", + "source": 32 + }, + { + "begin": 13236, + "end": 13362, + "name": "POP", + "source": 32 + }, + { + "begin": 595, + "end": 601, + "name": "PUSH", + "source": 29, + "value": "2710" + }, + { + "begin": 13319, + "end": 13334, + "name": "DUP6", + "source": 32 + }, + { + "begin": 13319, + "end": 13362, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13319, + "end": 13362, + "name": "AND", + "source": 32 + }, + { + "begin": 13319, + "end": 13362, + "name": "GT", + "source": 32 + }, + { + "begin": 13236, + "end": 13362, + "name": "tag", + "source": 32, + "value": "598" + }, + { + "begin": 13236, + "end": 13362, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13236, + "end": 13410, + "name": "DUP1", + "source": 32 + }, + { + "begin": 13236, + "end": 13410, + "name": "PUSH [tag]", + "source": 32, + "value": "599" + }, + { + "begin": 13236, + "end": 13410, + "name": "JUMPI", + "source": 32 + }, + { + "begin": 13236, + "end": 13410, + "name": "POP", + "source": 32 + }, + { + "begin": 521, + "end": 526, + "name": "PUSH", + "source": 29, + "value": "9C4" + }, + { + "begin": 13366, + "end": 13379, + "name": "DUP4", + "source": 32 + }, + { + "begin": 13366, + "end": 13410, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13366, + "end": 13410, + "name": "AND", + "source": 32 + }, + { + "begin": 13366, + "end": 13410, + "name": "GT", + "source": 32 + }, + { + "begin": 13236, + "end": 13410, + "name": "tag", + "source": 32, + "value": "599" + }, + { + "begin": 13236, + "end": 13410, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13236, + "end": 13476, + "name": "DUP1", + "source": 32 + }, + { + "begin": 13236, + "end": 13476, + "name": "PUSH [tag]", + "source": 32, + "value": "600" + }, + { + "begin": 13236, + "end": 13476, + "name": "JUMPI", + "source": 32 + }, + { + "begin": 13236, + "end": 13476, + "name": "POP", + "source": 32 + }, + { + "begin": 482, + "end": 489, + "name": "PUSH", + "source": 36, + "value": "FFFFF" + }, + { + "begin": 13430, + "end": 13454, + "name": "DUP3", + "source": 32 + }, + { + "begin": 13430, + "end": 13476, + "name": "PUSH", + "source": 32, + "value": "FFFFFF" + }, + { + "begin": 13430, + "end": 13476, + "name": "AND", + "source": 32 + }, + { + "begin": 13430, + "end": 13476, + "name": "GT", + "source": 32 + }, + { + "begin": 13236, + "end": 13476, + "name": "tag", + "source": 32, + "value": "600" + }, + { + "begin": 13236, + "end": 13476, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13219, + "end": 13534, + "name": "ISZERO", + "source": 32 + }, + { + "begin": 13219, + "end": 13534, + "name": "PUSH [tag]", + "source": 32, + "value": "601" + }, + { + "begin": 13219, + "end": 13534, + "name": "JUMPI", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "PUSH", + "source": 32, + "value": "40" + }, + { + "begin": 13494, + "end": 13534, + "name": "MLOAD", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "PUSH", + "source": 32, + "value": "1C07203F00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 13494, + "end": 13534, + "name": "DUP2", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "PUSH", + "source": 32, + "value": "4" + }, + { + "begin": 13494, + "end": 13534, + "name": "ADD", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "PUSH", + "source": 32, + "value": "40" + }, + { + "begin": 13494, + "end": 13534, + "name": "MLOAD", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "DUP1", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "SUB", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13494, + "end": 13534, + "name": "REVERT", + "source": 32 + }, + { + "begin": 13219, + "end": 13534, + "name": "tag", + "source": 32, + "value": "601" + }, + { + "begin": 13219, + "end": 13534, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "PUSH [tag]", + "source": 32, + "value": "602" + }, + { + "begin": 13571, + "end": 13581, + "name": "DUP9", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13557, + "end": 13623, + "name": "AND", + "source": 32 + }, + { + "begin": 430, + "end": 436, + "name": "PUSH", + "source": 36, + "value": "FFFF" + }, + { + "begin": 1162, + "end": 1163, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 13557, + "end": 13566, + "name": "DUP5", + "source": 32 + }, + { + "begin": 13557, + "end": 13570, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 13557, + "end": 13570, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 13557, + "end": 13623, + "name": "AND", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 13557, + "end": 13623, + "name": "tag", + "source": 32, + "value": "602" + }, + { + "begin": 13557, + "end": 13623, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13545, + "end": 13623, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13545, + "end": 13623, + "name": "POP", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "PUSH [tag]", + "source": 32, + "value": "604" + }, + { + "begin": 13659, + "end": 13671, + "name": "DUP8", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13645, + "end": 13715, + "name": "AND", + "source": 32 + }, + { + "begin": 327, + "end": 332, + "name": "PUSH", + "source": 36, + "value": "FFF" + }, + { + "begin": 1218, + "end": 1220, + "name": "PUSH", + "source": 32, + "value": "10" + }, + { + "begin": 13645, + "end": 13654, + "name": "DUP5", + "source": 32 + }, + { + "begin": 13645, + "end": 13658, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 13645, + "end": 13658, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 13645, + "end": 13715, + "name": "AND", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 13645, + "end": 13715, + "name": "tag", + "source": 32, + "value": "604" + }, + { + "begin": 13645, + "end": 13715, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13633, + "end": 13715, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13633, + "end": 13715, + "name": "POP", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "PUSH [tag]", + "source": 32, + "value": "605" + }, + { + "begin": 13751, + "end": 13762, + "name": "DUP7", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13737, + "end": 13805, + "name": "AND", + "source": 32 + }, + { + "begin": 327, + "end": 332, + "name": "PUSH", + "source": 36, + "value": "FFF" + }, + { + "begin": 1274, + "end": 1276, + "name": "PUSH", + "source": 32, + "value": "1C" + }, + { + "begin": 13737, + "end": 13746, + "name": "DUP5", + "source": 32 + }, + { + "begin": 13737, + "end": 13750, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 13737, + "end": 13750, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 13737, + "end": 13805, + "name": "AND", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 13737, + "end": 13805, + "name": "tag", + "source": 32, + "value": "605" + }, + { + "begin": 13737, + "end": 13805, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13725, + "end": 13805, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13725, + "end": 13805, + "name": "POP", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "PUSH [tag]", + "source": 32, + "value": "606" + }, + { + "begin": 13841, + "end": 13856, + "name": "DUP6", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 13827, + "end": 13903, + "name": "AND", + "source": 32 + }, + { + "begin": 378, + "end": 384, + "name": "PUSH", + "source": 36, + "value": "3FFF" + }, + { + "begin": 1334, + "end": 1336, + "name": "PUSH", + "source": 32, + "value": "28" + }, + { + "begin": 13827, + "end": 13836, + "name": "DUP5", + "source": 32 + }, + { + "begin": 13827, + "end": 13840, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 13827, + "end": 13840, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 13827, + "end": 13903, + "name": "AND", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 13827, + "end": 13903, + "name": "tag", + "source": 32, + "value": "606" + }, + { + "begin": 13827, + "end": 13903, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13815, + "end": 13903, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13815, + "end": 13903, + "name": "POP", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "PUSH [tag]", + "source": 32, + "value": "607" + }, + { + "begin": 13939, + "end": 13957, + "name": "DUP5", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "PUSH", + "source": 32, + "value": "FFFFFF" + }, + { + "begin": 13925, + "end": 14003, + "name": "AND", + "source": 32 + }, + { + "begin": 535, + "end": 543, + "name": "PUSH", + "source": 36, + "value": "FFFFFF" + }, + { + "begin": 1393, + "end": 1395, + "name": "PUSH", + "source": 32, + "value": "36" + }, + { + "begin": 13925, + "end": 13934, + "name": "DUP5", + "source": 32 + }, + { + "begin": 13925, + "end": 13938, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 13925, + "end": 13938, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 13925, + "end": 14003, + "name": "AND", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 13925, + "end": 14003, + "name": "tag", + "source": 32, + "value": "607" + }, + { + "begin": 13925, + "end": 14003, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 13913, + "end": 14003, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 13913, + "end": 14003, + "name": "POP", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "PUSH [tag]", + "source": 32, + "value": "608" + }, + { + "begin": 14039, + "end": 14052, + "name": "DUP4", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "PUSH", + "source": 32, + "value": "FFFF" + }, + { + "begin": 14025, + "end": 14097, + "name": "AND", + "source": 32 + }, + { + "begin": 378, + "end": 384, + "name": "PUSH", + "source": 36, + "value": "3FFF" + }, + { + "begin": 1451, + "end": 1453, + "name": "PUSH", + "source": 32, + "value": "4E" + }, + { + "begin": 14025, + "end": 14034, + "name": "DUP5", + "source": 32 + }, + { + "begin": 14025, + "end": 14038, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 14025, + "end": 14038, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 14025, + "end": 14097, + "name": "AND", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 14025, + "end": 14097, + "name": "tag", + "source": 32, + "value": "608" + }, + { + "begin": 14025, + "end": 14097, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 14013, + "end": 14097, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14013, + "end": 14097, + "name": "POP", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "PUSH [tag]", + "source": 32, + "value": "609" + }, + { + "begin": 14133, + "end": 14157, + "name": "DUP3", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "PUSH", + "source": 32, + "value": "FFFFFF" + }, + { + "begin": 14119, + "end": 14199, + "name": "AND", + "source": 32 + }, + { + "begin": 482, + "end": 489, + "name": "PUSH", + "source": 36, + "value": "FFFFF" + }, + { + "begin": 1506, + "end": 1508, + "name": "PUSH", + "source": 32, + "value": "5C" + }, + { + "begin": 14119, + "end": 14128, + "name": "DUP5", + "source": 32 + }, + { + "begin": 14119, + "end": 14132, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 14119, + "end": 14132, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 14119, + "end": 14199, + "name": "AND", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 14119, + "end": 14199, + "name": "tag", + "source": 32, + "value": "609" + }, + { + "begin": 14119, + "end": 14199, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 14107, + "end": 14199, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14107, + "end": 14199, + "name": "POP", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "name": "PUSH [tag]", + "source": 32, + "value": "610" + }, + { + "begin": 14236, + "end": 14245, + "name": "DUP2", + "source": 32 + }, + { + "begin": 14228, + "end": 14246, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 14228, + "end": 14246, + "name": "SHR", + "source": 32 + }, + { + "begin": 1889, + "end": 1919, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 14271, + "end": 14272, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 14217, + "end": 14223, + "name": "DUP13", + "source": 32 + }, + { + "begin": 14217, + "end": 14227, + "name": "PUSH [tag]", + "source": 32, + "value": "603" + }, + { + "begin": 14217, + "end": 14227, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "name": "SWAP4", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "name": "SWAP3", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 14217, + "end": 14273, + "name": "AND", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 14217, + "end": 14273, + "name": "tag", + "source": 32, + "value": "610" + }, + { + "begin": 14217, + "end": 14273, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 14210, + "end": 14273, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 14210, + "end": 14273, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "SWAP9", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "SWAP8", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "name": "POP", + "source": 32 + }, + { + "begin": 12883, + "end": 14280, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 1732, + "end": 1912, + "name": "tag", + "source": 36, + "value": "303" + }, + { + "begin": 1732, + "end": 1912, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 1819, + "end": 1837, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 1856, + "end": 1905, + "name": "PUSH [tag]", + "source": 36, + "value": "612" + }, + { + "begin": 1860, + "end": 1867, + "name": "DUP5", + "source": 36 + }, + { + "begin": 1869, + "end": 1876, + "name": "DUP5", + "source": 36 + }, + { + "begin": 1869, + "end": 1884, + "name": "PUSH [tag]", + "source": 36, + "value": "613" + }, + { + "begin": 1869, + "end": 1884, + "name": "JUMPI", + "source": 36 + }, + { + "begin": 1883, + "end": 1884, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 1869, + "end": 1884, + "name": "PUSH [tag]", + "source": 36, + "value": "614" + }, + { + "begin": 1869, + "end": 1884, + "name": "JUMP", + "source": 36 + }, + { + "begin": 1869, + "end": 1884, + "name": "tag", + "source": 36, + "value": "613" + }, + { + "begin": 1869, + "end": 1884, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 1879, + "end": 1880, + "name": "PUSH", + "source": 36, + "value": "1" + }, + { + "begin": 1869, + "end": 1884, + "name": "tag", + "source": 36, + "value": "614" + }, + { + "begin": 1869, + "end": 1884, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 1856, + "end": 1905, + "name": "PUSH", + "source": 36, + "value": "FF" + }, + { + "begin": 1856, + "end": 1905, + "name": "AND", + "source": 36 + }, + { + "begin": 229, + "end": 232, + "name": "PUSH", + "source": 36, + "value": "1" + }, + { + "begin": 1898, + "end": 1904, + "name": "DUP6", + "source": 36 + }, + { + "begin": 1856, + "end": 1859, + "name": "PUSH [tag]", + "source": 36, + "value": "603" + }, + { + "begin": 1856, + "end": 1905, + "jumpType": "[in]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 1856, + "end": 1905, + "name": "tag", + "source": 36, + "value": "612" + }, + { + "begin": 1856, + "end": 1905, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 1849, + "end": 1905, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 1849, + "end": 1905, + "name": "POP", + "source": 36 + }, + { + "begin": 1732, + "end": 1912, + "name": "SWAP4", + "source": 36 + }, + { + "begin": 1732, + "end": 1912, + "name": "SWAP3", + "source": 36 + }, + { + "begin": 1732, + "end": 1912, + "name": "POP", + "source": 36 + }, + { + "begin": 1732, + "end": 1912, + "name": "POP", + "source": 36 + }, + { + "begin": 1732, + "end": 1912, + "name": "POP", + "source": 36 + }, + { + "begin": 1732, + "end": 1912, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 6246, + "end": 6407, + "name": "tag", + "source": 19, + "value": "305" + }, + { + "begin": 6246, + "end": 6407, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 6332, + "end": 6336, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6355, + "end": 6400, + "name": "PUSH [tag]", + "source": 19, + "value": "616" + }, + { + "begin": 6359, + "end": 6362, + "name": "DUP5", + "source": 19 + }, + { + "begin": 6359, + "end": 6369, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6359, + "end": 6369, + "name": "ADD", + "source": 19 + }, + { + "begin": 6379, + "end": 6382, + "name": "DUP5", + "source": 19 + }, + { + "begin": 6371, + "end": 6383, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6371, + "end": 6383, + "name": "SHL", + "source": 19 + }, + { + "begin": 6393, + "end": 6398, + "name": "DUP5", + "source": 19 + }, + { + "begin": 6385, + "end": 6399, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6385, + "end": 6399, + "name": "SHL", + "source": 19 + }, + { + "begin": 6355, + "end": 6358, + "name": "PUSH [tag]", + "source": 19, + "value": "617" + }, + { + "begin": 6355, + "end": 6400, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 6355, + "end": 6400, + "name": "tag", + "source": 19, + "value": "616" + }, + { + "begin": 6355, + "end": 6400, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 6348, + "end": 6400, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 6348, + "end": 6400, + "name": "POP", + "source": 19 + }, + { + "begin": 6246, + "end": 6407, + "name": "SWAP4", + "source": 19 + }, + { + "begin": 6246, + "end": 6407, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 6246, + "end": 6407, + "name": "POP", + "source": 19 + }, + { + "begin": 6246, + "end": 6407, + "name": "POP", + "source": 19 + }, + { + "begin": 6246, + "end": 6407, + "name": "POP", + "source": 19 + }, + { + "begin": 6246, + "end": 6407, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 3932, + "end": 4080, + "name": "tag", + "source": 30, + "value": "312" + }, + { + "begin": 3932, + "end": 4080, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 3998, + "end": 4011, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 4055, + "end": 4070, + "name": "DUP2", + "source": 30 + }, + { + "begin": 4047, + "end": 4071, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 4047, + "end": 4071, + "name": "SHR", + "source": 30 + }, + { + "begin": 4023, + "end": 4073, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 4023, + "end": 4073, + "name": "POP", + "source": 30 + }, + { + "begin": 3932, + "end": 4080, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 3932, + "end": 4080, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 3932, + "end": 4080, + "name": "POP", + "source": 30 + }, + { + "begin": 3932, + "end": 4080, + "jumpType": "[out]", + "name": "JUMP", + "source": 30 + }, + { + "begin": 4730, + "end": 4860, + "name": "tag", + "source": 30, + "value": "315" + }, + { + "begin": 4730, + "end": 4860, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 4796, + "end": 4809, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 4837, + "end": 4852, + "name": "DUP2", + "source": 30 + }, + { + "begin": 4821, + "end": 4853, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 4821, + "end": 4853, + "name": "POP", + "source": 30 + }, + { + "begin": 4730, + "end": 4860, + "name": "SWAP2", + "source": 30 + }, + { + "begin": 4730, + "end": 4860, + "name": "SWAP1", + "source": 30 + }, + { + "begin": 4730, + "end": 4860, + "name": "POP", + "source": 30 + }, + { + "begin": 4730, + "end": 4860, + "jumpType": "[out]", + "name": "JUMP", + "source": 30 + }, + { + "begin": 6781, + "end": 6926, + "name": "tag", + "source": 19, + "value": "329" + }, + { + "begin": 6781, + "end": 6926, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 6862, + "end": 6866, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6885, + "end": 6919, + "name": "PUSH [tag]", + "source": 19, + "value": "621" + }, + { + "begin": 6894, + "end": 6897, + "name": "DUP4", + "source": 19 + }, + { + "begin": 6894, + "end": 6904, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6894, + "end": 6904, + "name": "ADD", + "source": 19 + }, + { + "begin": 6914, + "end": 6917, + "name": "DUP4", + "source": 19 + }, + { + "begin": 6906, + "end": 6918, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6906, + "end": 6918, + "name": "SHL", + "source": 19 + }, + { + "begin": 6885, + "end": 6893, + "name": "PUSH [tag]", + "source": 19, + "value": "622" + }, + { + "begin": 6885, + "end": 6919, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 6885, + "end": 6919, + "name": "tag", + "source": 19, + "value": "621" + }, + { + "begin": 6885, + "end": 6919, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 6878, + "end": 6919, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 6878, + "end": 6919, + "name": "POP", + "source": 19 + }, + { + "begin": 6781, + "end": 6926, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 6781, + "end": 6926, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 6781, + "end": 6926, + "name": "POP", + "source": 19 + }, + { + "begin": 6781, + "end": 6926, + "name": "POP", + "source": 19 + }, + { + "begin": 6781, + "end": 6926, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 8183, + "end": 8330, + "name": "tag", + "source": 19, + "value": "333" + }, + { + "begin": 8183, + "end": 8330, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 8259, + "end": 8266, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 8293, + "end": 8322, + "name": "PUSH [tag]", + "source": 19, + "value": "624" + }, + { + "begin": 8297, + "end": 8300, + "name": "DUP4", + "source": 19 + }, + { + "begin": 8297, + "end": 8307, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 8297, + "end": 8307, + "name": "ADD", + "source": 19 + }, + { + "begin": 8317, + "end": 8320, + "name": "DUP4", + "source": 19 + }, + { + "begin": 8309, + "end": 8321, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 8309, + "end": 8321, + "name": "SHL", + "source": 19 + }, + { + "begin": 8293, + "end": 8296, + "name": "PUSH [tag]", + "source": 19, + "value": "625" + }, + { + "begin": 8293, + "end": 8322, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 8293, + "end": 8322, + "name": "tag", + "source": 19, + "value": "624" + }, + { + "begin": 8293, + "end": 8322, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 8285, + "end": 8323, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 8285, + "end": 8323, + "name": "SHR", + "source": 19 + }, + { + "begin": 8278, + "end": 8323, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 8278, + "end": 8323, + "name": "POP", + "source": 19 + }, + { + "begin": 8183, + "end": 8330, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 8183, + "end": 8330, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 8183, + "end": 8330, + "name": "POP", + "source": 19 + }, + { + "begin": 8183, + "end": 8330, + "name": "POP", + "source": 19 + }, + { + "begin": 8183, + "end": 8330, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 2658, + "end": 2845, + "name": "tag", + "source": 36, + "value": "335" + }, + { + "begin": 2658, + "end": 2845, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 2734, + "end": 2746, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 2818, + "end": 2828, + "name": "PUSH", + "source": 36, + "value": "1" + }, + { + "begin": 2808, + "end": 2815, + "name": "DUP4", + "source": 36 + }, + { + "begin": 2800, + "end": 2806, + "name": "DUP4", + "source": 36 + }, + { + "begin": 2796, + "end": 2816, + "name": "SHR", + "source": 36 + }, + { + "begin": 2792, + "end": 2829, + "name": "AND", + "source": 36 + }, + { + "begin": 2781, + "end": 2829, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 2781, + "end": 2829, + "name": "POP", + "source": 36 + }, + { + "begin": 2658, + "end": 2845, + "name": "SWAP3", + "source": 36 + }, + { + "begin": 2658, + "end": 2845, + "name": "SWAP2", + "source": 36 + }, + { + "begin": 2658, + "end": 2845, + "name": "POP", + "source": 36 + }, + { + "begin": 2658, + "end": 2845, + "name": "POP", + "source": 36 + }, + { + "begin": 2658, + "end": 2845, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 8316, + "end": 8466, + "name": "tag", + "source": 20, + "value": "344" + }, + { + "begin": 8316, + "end": 8466, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 8386, + "end": 8390, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8409, + "end": 8459, + "name": "PUSH [tag]", + "source": 20, + "value": "628" + }, + { + "begin": 8414, + "end": 8417, + "name": "DUP4", + "source": 20 + }, + { + "begin": 8414, + "end": 8424, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8414, + "end": 8424, + "name": "ADD", + "source": 20 + }, + { + "begin": 8450, + "end": 8455, + "name": "DUP4", + "source": 20 + }, + { + "begin": 8434, + "end": 8457, + "name": "PUSH", + "source": 20, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8434, + "end": 8457, + "name": "AND", + "source": 20 + }, + { + "begin": 8426, + "end": 8458, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8426, + "end": 8458, + "name": "SHL", + "source": 20 + }, + { + "begin": 8409, + "end": 8413, + "name": "PUSH [tag]", + "source": 20, + "value": "629" + }, + { + "begin": 8409, + "end": 8459, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 8409, + "end": 8459, + "name": "tag", + "source": 20, + "value": "628" + }, + { + "begin": 8409, + "end": 8459, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 8402, + "end": 8459, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 8402, + "end": 8459, + "name": "POP", + "source": 20 + }, + { + "begin": 8316, + "end": 8466, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 8316, + "end": 8466, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 8316, + "end": 8466, + "name": "POP", + "source": 20 + }, + { + "begin": 8316, + "end": 8466, + "name": "POP", + "source": 20 + }, + { + "begin": 8316, + "end": 8466, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 8880, + "end": 9178, + "name": "tag", + "source": 19, + "value": "349" + }, + { + "begin": 8880, + "end": 9178, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 8944, + "end": 8960, + "name": "PUSH", + "source": 19, + "value": "60" + }, + { + "begin": 8972, + "end": 8994, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 8997, + "end": 9013, + "name": "PUSH [tag]", + "source": 19, + "value": "631" + }, + { + "begin": 9002, + "end": 9005, + "name": "DUP4", + "source": 19 + }, + { + "begin": 9002, + "end": 9012, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 9002, + "end": 9012, + "name": "ADD", + "source": 19 + }, + { + "begin": 8997, + "end": 9001, + "name": "PUSH [tag]", + "source": 19, + "value": "632" + }, + { + "begin": 8997, + "end": 9013, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 8997, + "end": 9013, + "name": "tag", + "source": 19, + "value": "631" + }, + { + "begin": 8997, + "end": 9013, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 8972, + "end": 9013, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 8972, + "end": 9013, + "name": "POP", + "source": 19 + }, + { + "begin": 9023, + "end": 9046, + "name": "PUSH", + "source": 19, + "value": "60" + }, + { + "begin": 9133, + "end": 9138, + "name": "DUP2", + "source": 19 + }, + { + "begin": 9123, + "end": 9138, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 9123, + "end": 9138, + "name": "POP", + "source": 19 + }, + { + "begin": 9165, + "end": 9171, + "name": "DUP1", + "source": 19 + }, + { + "begin": 9158, + "end": 9171, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 9158, + "end": 9171, + "name": "POP", + "source": 19 + }, + { + "begin": 9158, + "end": 9171, + "name": "POP", + "source": 19 + }, + { + "begin": 9158, + "end": 9171, + "name": "POP", + "source": 19 + }, + { + "begin": 8880, + "end": 9178, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 8880, + "end": 9178, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 8880, + "end": 9178, + "name": "POP", + "source": 19 + }, + { + "begin": 8880, + "end": 9178, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 784, + "end": 1001, + "name": "tag", + "source": 33, + "value": "367" + }, + { + "begin": 784, + "end": 1001, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 858, + "end": 871, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 883, + "end": 895, + "name": "DUP1", + "source": 33 + }, + { + "begin": 898, + "end": 914, + "name": "PUSH [tag]", + "source": 33, + "value": "634" + }, + { + "begin": 906, + "end": 913, + "name": "DUP4", + "source": 33 + }, + { + "begin": 898, + "end": 905, + "name": "PUSH [tag]", + "source": 33, + "value": "635" + }, + { + "begin": 898, + "end": 914, + "jumpType": "[in]", + "name": "JUMP", + "source": 33 + }, + { + "begin": 898, + "end": 914, + "name": "tag", + "source": 33, + "value": "634" + }, + { + "begin": 898, + "end": 914, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 883, + "end": 914, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 883, + "end": 914, + "name": "POP", + "source": 33 + }, + { + "begin": 924, + "end": 939, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 942, + "end": 957, + "name": "PUSH [tag]", + "source": 33, + "value": "636" + }, + { + "begin": 954, + "end": 956, + "name": "DUP6", + "source": 33 + }, + { + "begin": 942, + "end": 953, + "name": "PUSH [tag]", + "source": 33, + "value": "637" + }, + { + "begin": 942, + "end": 957, + "jumpType": "[in]", + "name": "JUMP", + "source": 33 + }, + { + "begin": 942, + "end": 957, + "name": "tag", + "source": 33, + "value": "636" + }, + { + "begin": 942, + "end": 957, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 924, + "end": 957, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 924, + "end": 957, + "name": "POP", + "source": 33 + }, + { + "begin": 976, + "end": 994, + "name": "PUSH [tag]", + "source": 33, + "value": "638" + }, + { + "begin": 985, + "end": 993, + "name": "DUP2", + "source": 33 + }, + { + "begin": 976, + "end": 980, + "name": "DUP4", + "source": 33 + }, + { + "begin": 976, + "end": 984, + "name": "PUSH [tag]", + "source": 33, + "value": "639" + }, + { + "begin": 976, + "end": 984, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 976, + "end": 994, + "name": "SWAP2", + "source": 33 + }, + { + "begin": 976, + "end": 994, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 976, + "end": 994, + "name": "PUSH", + "source": 33, + "value": "FFFFFFFF" + }, + { + "begin": 976, + "end": 994, + "name": "AND", + "source": 33 + }, + { + "begin": 976, + "end": 994, + "jumpType": "[in]", + "name": "JUMP", + "source": 33 + }, + { + "begin": 976, + "end": 994, + "name": "tag", + "source": 33, + "value": "638" + }, + { + "begin": 976, + "end": 994, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 968, + "end": 994, + "name": "SWAP3", + "source": 33 + }, + { + "begin": 968, + "end": 994, + "name": "POP", + "source": 33 + }, + { + "begin": 873, + "end": 1001, + "name": "POP", + "source": 33 + }, + { + "begin": 873, + "end": 1001, + "name": "POP", + "source": 33 + }, + { + "begin": 784, + "end": 1001, + "name": "SWAP3", + "source": 33 + }, + { + "begin": 784, + "end": 1001, + "name": "SWAP2", + "source": 33 + }, + { + "begin": 784, + "end": 1001, + "name": "POP", + "source": 33 + }, + { + "begin": 784, + "end": 1001, + "name": "POP", + "source": 33 + }, + { + "begin": 784, + "end": 1001, + "jumpType": "[out]", + "name": "JUMP", + "source": 33 + }, + { + "begin": 27218, + "end": 27413, + "name": "tag", + "source": 21, + "value": "369" + }, + { + "begin": 27218, + "end": 27413, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 27291, + "end": 27297, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 27299, + "end": 27305, + "name": "DUP1", + "source": 21 + }, + { + "begin": 27330, + "end": 27336, + "name": "DUP3", + "source": 21 + }, + { + "begin": 27321, + "end": 27336, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 27321, + "end": 27336, + "name": "AND", + "source": 21 + }, + { + "begin": 27321, + "end": 27327, + "name": "DUP5", + "source": 21 + }, + { + "begin": 27321, + "end": 27336, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 27321, + "end": 27336, + "name": "AND", + "source": 21 + }, + { + "begin": 27321, + "end": 27336, + "name": "GT", + "source": 21 + }, + { + "begin": 27317, + "end": 27373, + "name": "ISZERO", + "source": 21 + }, + { + "begin": 27317, + "end": 27373, + "name": "PUSH [tag]", + "source": 21, + "value": "641" + }, + { + "begin": 27317, + "end": 27373, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 27358, + "end": 27364, + "name": "DUP3", + "source": 21 + }, + { + "begin": 27366, + "end": 27372, + "name": "DUP5", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "DUP1", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "SWAP5", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "POP", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "DUP2", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "SWAP6", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "POP", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "POP", + "source": 21 + }, + { + "begin": 27338, + "end": 27373, + "name": "POP", + "source": 21 + }, + { + "begin": 27317, + "end": 27373, + "name": "tag", + "source": 21, + "value": "641" + }, + { + "begin": 27317, + "end": 27373, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 27391, + "end": 27397, + "name": "DUP4", + "source": 21 + }, + { + "begin": 27399, + "end": 27405, + "name": "DUP4", + "source": 21 + }, + { + "begin": 27383, + "end": 27406, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 27383, + "end": 27406, + "name": "POP", + "source": 21 + }, + { + "begin": 27383, + "end": 27406, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 27383, + "end": 27406, + "name": "POP", + "source": 21 + }, + { + "begin": 27218, + "end": 27413, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 27218, + "end": 27413, + "name": "POP", + "source": 21 + }, + { + "begin": 27218, + "end": 27413, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 27218, + "end": 27413, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 27218, + "end": 27413, + "name": "POP", + "source": 21 + }, + { + "begin": 27218, + "end": 27413, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 2186, + "end": 2336, + "name": "tag", + "source": 32, + "value": "374" + }, + { + "begin": 2186, + "end": 2336, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 2248, + "end": 2265, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 2290, + "end": 2329, + "name": "PUSH [tag]", + "source": 32, + "value": "643" + }, + { + "begin": 1162, + "end": 1163, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 2290, + "end": 2296, + "name": "DUP4", + "source": 32 + }, + { + "begin": 2290, + "end": 2309, + "name": "PUSH [tag]", + "source": 32, + "value": "644" + }, + { + "begin": 2290, + "end": 2309, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2290, + "end": 2329, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 2290, + "end": 2329, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2290, + "end": 2329, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 2290, + "end": 2329, + "name": "AND", + "source": 32 + }, + { + "begin": 2290, + "end": 2329, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 2290, + "end": 2329, + "name": "tag", + "source": 32, + "value": "643" + }, + { + "begin": 2290, + "end": 2329, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 2277, + "end": 2329, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2277, + "end": 2329, + "name": "POP", + "source": 32 + }, + { + "begin": 2186, + "end": 2336, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 2186, + "end": 2336, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2186, + "end": 2336, + "name": "POP", + "source": 32 + }, + { + "begin": 2186, + "end": 2336, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 2645, + "end": 2803, + "name": "tag", + "source": 32, + "value": "376" + }, + { + "begin": 2645, + "end": 2803, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 2709, + "end": 2728, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 2755, + "end": 2796, + "name": "PUSH [tag]", + "source": 32, + "value": "646" + }, + { + "begin": 1218, + "end": 1220, + "name": "PUSH", + "source": 32, + "value": "10" + }, + { + "begin": 2755, + "end": 2761, + "name": "DUP4", + "source": 32 + }, + { + "begin": 2755, + "end": 2774, + "name": "PUSH [tag]", + "source": 32, + "value": "647" + }, + { + "begin": 2755, + "end": 2774, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2755, + "end": 2796, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 2755, + "end": 2796, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2755, + "end": 2796, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 2755, + "end": 2796, + "name": "AND", + "source": 32 + }, + { + "begin": 2755, + "end": 2796, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 2755, + "end": 2796, + "name": "tag", + "source": 32, + "value": "646" + }, + { + "begin": 2755, + "end": 2796, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 2740, + "end": 2796, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2740, + "end": 2796, + "name": "POP", + "source": 32 + }, + { + "begin": 2645, + "end": 2803, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 2645, + "end": 2803, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 2645, + "end": 2803, + "name": "POP", + "source": 32 + }, + { + "begin": 2645, + "end": 2803, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 3108, + "end": 3262, + "name": "tag", + "source": 32, + "value": "378" + }, + { + "begin": 3108, + "end": 3262, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 3171, + "end": 3189, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 3215, + "end": 3255, + "name": "PUSH [tag]", + "source": 32, + "value": "649" + }, + { + "begin": 1274, + "end": 1276, + "name": "PUSH", + "source": 32, + "value": "1C" + }, + { + "begin": 3215, + "end": 3221, + "name": "DUP4", + "source": 32 + }, + { + "begin": 3215, + "end": 3234, + "name": "PUSH [tag]", + "source": 32, + "value": "647" + }, + { + "begin": 3215, + "end": 3234, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3215, + "end": 3255, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 3215, + "end": 3255, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3215, + "end": 3255, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 3215, + "end": 3255, + "name": "AND", + "source": 32 + }, + { + "begin": 3215, + "end": 3255, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 3215, + "end": 3255, + "name": "tag", + "source": 32, + "value": "649" + }, + { + "begin": 3215, + "end": 3255, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 3201, + "end": 3255, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3201, + "end": 3255, + "name": "POP", + "source": 32 + }, + { + "begin": 3108, + "end": 3262, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 3108, + "end": 3262, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3108, + "end": 3262, + "name": "POP", + "source": 32 + }, + { + "begin": 3108, + "end": 3262, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 3583, + "end": 3753, + "name": "tag", + "source": 32, + "value": "380" + }, + { + "begin": 3583, + "end": 3753, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 3650, + "end": 3672, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 3702, + "end": 3746, + "name": "PUSH [tag]", + "source": 32, + "value": "651" + }, + { + "begin": 1334, + "end": 1336, + "name": "PUSH", + "source": 32, + "value": "28" + }, + { + "begin": 3702, + "end": 3708, + "name": "DUP4", + "source": 32 + }, + { + "begin": 3702, + "end": 3721, + "name": "PUSH [tag]", + "source": 32, + "value": "652" + }, + { + "begin": 3702, + "end": 3721, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3702, + "end": 3746, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 3702, + "end": 3746, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3702, + "end": 3746, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 3702, + "end": 3746, + "name": "AND", + "source": 32 + }, + { + "begin": 3702, + "end": 3746, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 3702, + "end": 3746, + "name": "tag", + "source": 32, + "value": "651" + }, + { + "begin": 3702, + "end": 3746, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 3684, + "end": 3746, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3684, + "end": 3746, + "name": "POP", + "source": 32 + }, + { + "begin": 3583, + "end": 3753, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 3583, + "end": 3753, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 3583, + "end": 3753, + "name": "POP", + "source": 32 + }, + { + "begin": 3583, + "end": 3753, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 4089, + "end": 4267, + "name": "tag", + "source": 32, + "value": "382" + }, + { + "begin": 4089, + "end": 4267, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 4159, + "end": 4184, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 4217, + "end": 4260, + "name": "PUSH [tag]", + "source": 32, + "value": "654" + }, + { + "begin": 1393, + "end": 1395, + "name": "PUSH", + "source": 32, + "value": "36" + }, + { + "begin": 4217, + "end": 4223, + "name": "DUP4", + "source": 32 + }, + { + "begin": 4217, + "end": 4236, + "name": "PUSH [tag]", + "source": 32, + "value": "655" + }, + { + "begin": 4217, + "end": 4236, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4217, + "end": 4260, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 4217, + "end": 4260, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4217, + "end": 4260, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 4217, + "end": 4260, + "name": "AND", + "source": 32 + }, + { + "begin": 4217, + "end": 4260, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 4217, + "end": 4260, + "name": "tag", + "source": 32, + "value": "654" + }, + { + "begin": 4217, + "end": 4260, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 4196, + "end": 4260, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4196, + "end": 4260, + "name": "POP", + "source": 32 + }, + { + "begin": 4089, + "end": 4267, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 4089, + "end": 4267, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4089, + "end": 4267, + "name": "POP", + "source": 32 + }, + { + "begin": 4089, + "end": 4267, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 4580, + "end": 4742, + "name": "tag", + "source": 32, + "value": "384" + }, + { + "begin": 4580, + "end": 4742, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 4645, + "end": 4665, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 4693, + "end": 4735, + "name": "PUSH [tag]", + "source": 32, + "value": "657" + }, + { + "begin": 1451, + "end": 1453, + "name": "PUSH", + "source": 32, + "value": "4E" + }, + { + "begin": 4693, + "end": 4699, + "name": "DUP4", + "source": 32 + }, + { + "begin": 4693, + "end": 4712, + "name": "PUSH [tag]", + "source": 32, + "value": "652" + }, + { + "begin": 4693, + "end": 4712, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4693, + "end": 4735, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 4693, + "end": 4735, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4693, + "end": 4735, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 4693, + "end": 4735, + "name": "AND", + "source": 32 + }, + { + "begin": 4693, + "end": 4735, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 4693, + "end": 4735, + "name": "tag", + "source": 32, + "value": "657" + }, + { + "begin": 4693, + "end": 4735, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 4677, + "end": 4735, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4677, + "end": 4735, + "name": "POP", + "source": 32 + }, + { + "begin": 4580, + "end": 4742, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 4580, + "end": 4742, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 4580, + "end": 4742, + "name": "POP", + "source": 32 + }, + { + "begin": 4580, + "end": 4742, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 5104, + "end": 5296, + "name": "tag", + "source": 32, + "value": "386" + }, + { + "begin": 5104, + "end": 5296, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 5180, + "end": 5211, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 5250, + "end": 5289, + "name": "PUSH [tag]", + "source": 32, + "value": "659" + }, + { + "begin": 1506, + "end": 1508, + "name": "PUSH", + "source": 32, + "value": "5C" + }, + { + "begin": 5250, + "end": 5256, + "name": "DUP4", + "source": 32 + }, + { + "begin": 5250, + "end": 5269, + "name": "PUSH [tag]", + "source": 32, + "value": "660" + }, + { + "begin": 5250, + "end": 5269, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 5250, + "end": 5289, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 5250, + "end": 5289, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 5250, + "end": 5289, + "name": "PUSH", + "source": 32, + "value": "FFFFFFFF" + }, + { + "begin": 5250, + "end": 5289, + "name": "AND", + "source": 32 + }, + { + "begin": 5250, + "end": 5289, + "jumpType": "[in]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 5250, + "end": 5289, + "name": "tag", + "source": 32, + "value": "659" + }, + { + "begin": 5250, + "end": 5289, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 5223, + "end": 5289, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 5223, + "end": 5289, + "name": "POP", + "source": 32 + }, + { + "begin": 5104, + "end": 5296, + "name": "SWAP2", + "source": 32 + }, + { + "begin": 5104, + "end": 5296, + "name": "SWAP1", + "source": 32 + }, + { + "begin": 5104, + "end": 5296, + "name": "POP", + "source": 32 + }, + { + "begin": 5104, + "end": 5296, + "jumpType": "[out]", + "name": "JUMP", + "source": 32 + }, + { + "begin": 1413, + "end": 1986, + "name": "tag", + "source": 16, + "value": "398" + }, + { + "begin": 1413, + "end": 1986, + "name": "JUMPDEST", + "source": 16 + }, + { + "begin": 1500, + "end": 1512, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 1552, + "end": 1558, + "name": "DUP4", + "source": 16 + }, + { + "begin": 1528, + "end": 1549, + "name": "SELFBALANCE", + "source": 16 + }, + { + "begin": 1528, + "end": 1558, + "name": "LT", + "source": 16 + }, + { + "begin": 1524, + "end": 1649, + "name": "ISZERO", + "source": 16 + }, + { + "begin": 1524, + "end": 1649, + "name": "PUSH [tag]", + "source": 16, + "value": "662" + }, + { + "begin": 1524, + "end": 1649, + "name": "JUMPI", + "source": 16 + }, + { + "begin": 1608, + "end": 1629, + "name": "SELFBALANCE", + "source": 16 + }, + { + "begin": 1631, + "end": 1637, + "name": "DUP5", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "PUSH", + "source": 16, + "value": "40" + }, + { + "begin": 1581, + "end": 1638, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "PUSH", + "source": 16, + "value": "E4BBECAC00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1581, + "end": 1638, + "name": "DUP2", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "MSTORE", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "PUSH", + "source": 16, + "value": "4" + }, + { + "begin": 1581, + "end": 1638, + "name": "ADD", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "PUSH [tag]", + "source": 16, + "value": "663" + }, + { + "begin": 1581, + "end": 1638, + "name": "SWAP3", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "SWAP2", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "SWAP1", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "PUSH [tag]", + "source": 16, + "value": "492" + }, + { + "begin": 1581, + "end": 1638, + "jumpType": "[in]", + "name": "JUMP", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "tag", + "source": 16, + "value": "663" + }, + { + "begin": 1581, + "end": 1638, + "name": "JUMPDEST", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "PUSH", + "source": 16, + "value": "40" + }, + { + "begin": 1581, + "end": 1638, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "DUP1", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "SWAP2", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "SUB", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "SWAP1", + "source": 16 + }, + { + "begin": 1581, + "end": 1638, + "name": "REVERT", + "source": 16 + }, + { + "begin": 1524, + "end": 1649, + "name": "tag", + "source": 16, + "value": "662" + }, + { + "begin": 1524, + "end": 1649, + "name": "JUMPDEST", + "source": 16 + }, + { + "begin": 1681, + "end": 1682, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 1662, + "end": 1670, + "name": "DUP3", + "source": 16 + }, + { + "begin": 1662, + "end": 1677, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1662, + "end": 1682, + "name": "SUB", + "source": 16 + }, + { + "begin": 1658, + "end": 1738, + "name": "PUSH [tag]", + "source": 16, + "value": "664" + }, + { + "begin": 1658, + "end": 1738, + "name": "JUMPI", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "PUSH", + "source": 16, + "value": "40" + }, + { + "begin": 1705, + "end": 1727, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "PUSH", + "source": 16, + "value": "4CA249DC00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1705, + "end": 1727, + "name": "DUP2", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "MSTORE", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "PUSH", + "source": 16, + "value": "4" + }, + { + "begin": 1705, + "end": 1727, + "name": "ADD", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "PUSH", + "source": 16, + "value": "40" + }, + { + "begin": 1705, + "end": 1727, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "DUP1", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "SWAP2", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "SUB", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "SWAP1", + "source": 16 + }, + { + "begin": 1705, + "end": 1727, + "name": "REVERT", + "source": 16 + }, + { + "begin": 1658, + "end": 1738, + "name": "tag", + "source": 16, + "value": "664" + }, + { + "begin": 1658, + "end": 1738, + "name": "JUMPDEST", + "source": 16 + }, + { + "begin": 1875, + "end": 1879, + "name": "DUP3", + "source": 16 + }, + { + "begin": 1864, + "end": 1872, + "name": "DUP3", + "source": 16 + }, + { + "begin": 1858, + "end": 1873, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1851, + "end": 1855, + "name": "PUSH", + "source": 16, + "value": "20" + }, + { + "begin": 1841, + "end": 1849, + "name": "DUP5", + "source": 16 + }, + { + "begin": 1837, + "end": 1856, + "name": "ADD", + "source": 16 + }, + { + "begin": 1829, + "end": 1835, + "name": "DUP7", + "source": 16 + }, + { + "begin": 1821, + "end": 1880, + "name": "CREATE2", + "source": 16 + }, + { + "begin": 1813, + "end": 1880, + "name": "SWAP1", + "source": 16 + }, + { + "begin": 1813, + "end": 1880, + "name": "POP", + "source": 16 + }, + { + "begin": 1919, + "end": 1920, + "name": "PUSH", + "source": 16, + "value": "0" + }, + { + "begin": 1903, + "end": 1921, + "name": "PUSH", + "source": 16, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1903, + "end": 1921, + "name": "AND", + "source": 16 + }, + { + "begin": 1903, + "end": 1907, + "name": "DUP2", + "source": 16 + }, + { + "begin": 1903, + "end": 1921, + "name": "PUSH", + "source": 16, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1903, + "end": 1921, + "name": "AND", + "source": 16 + }, + { + "begin": 1903, + "end": 1921, + "name": "SUB", + "source": 16 + }, + { + "begin": 1899, + "end": 1980, + "name": "PUSH [tag]", + "source": 16, + "value": "665" + }, + { + "begin": 1899, + "end": 1980, + "name": "JUMPI", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "PUSH", + "source": 16, + "value": "40" + }, + { + "begin": 1944, + "end": 1969, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "PUSH", + "source": 16, + "value": "741752C200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1944, + "end": 1969, + "name": "DUP2", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "MSTORE", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "PUSH", + "source": 16, + "value": "4" + }, + { + "begin": 1944, + "end": 1969, + "name": "ADD", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "PUSH", + "source": 16, + "value": "40" + }, + { + "begin": 1944, + "end": 1969, + "name": "MLOAD", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "DUP1", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "SWAP2", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "SUB", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "SWAP1", + "source": 16 + }, + { + "begin": 1944, + "end": 1969, + "name": "REVERT", + "source": 16 + }, + { + "begin": 1899, + "end": 1980, + "name": "tag", + "source": 16, + "value": "665" + }, + { + "begin": 1899, + "end": 1980, + "name": "JUMPDEST", + "source": 16 + }, + { + "begin": 1413, + "end": 1986, + "name": "SWAP4", + "source": 16 + }, + { + "begin": 1413, + "end": 1986, + "name": "SWAP3", + "source": 16 + }, + { + "begin": 1413, + "end": 1986, + "name": "POP", + "source": 16 + }, + { + "begin": 1413, + "end": 1986, + "name": "POP", + "source": 16 + }, + { + "begin": 1413, + "end": 1986, + "name": "POP", + "source": 16 + }, + { + "begin": 1413, + "end": 1986, + "jumpType": "[out]", + "name": "JUMP", + "source": 16 + }, + { + "begin": 10804, + "end": 10933, + "name": "tag", + "source": 20, + "value": "401" + }, + { + "begin": 10804, + "end": 10933, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 10871, + "end": 10875, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 10894, + "end": 10926, + "name": "PUSH [tag]", + "source": 20, + "value": "667" + }, + { + "begin": 10899, + "end": 10902, + "name": "DUP4", + "source": 20 + }, + { + "begin": 10899, + "end": 10909, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 10899, + "end": 10909, + "name": "ADD", + "source": 20 + }, + { + "begin": 10919, + "end": 10924, + "name": "DUP4", + "source": 20 + }, + { + "begin": 10911, + "end": 10925, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 10911, + "end": 10925, + "name": "SHL", + "source": 20 + }, + { + "begin": 10894, + "end": 10898, + "name": "PUSH [tag]", + "source": 20, + "value": "629" + }, + { + "begin": 10894, + "end": 10926, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 10894, + "end": 10926, + "name": "tag", + "source": 20, + "value": "667" + }, + { + "begin": 10894, + "end": 10926, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 10887, + "end": 10926, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 10887, + "end": 10926, + "name": "POP", + "source": 20 + }, + { + "begin": 10804, + "end": 10933, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 10804, + "end": 10933, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 10804, + "end": 10933, + "name": "POP", + "source": 20 + }, + { + "begin": 10804, + "end": 10933, + "name": "POP", + "source": 20 + }, + { + "begin": 10804, + "end": 10933, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 11542, + "end": 11654, + "name": "tag", + "source": 20, + "value": "409" + }, + { + "begin": 11542, + "end": 11654, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 11602, + "end": 11609, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 11628, + "end": 11647, + "name": "PUSH [tag]", + "source": 20, + "value": "669" + }, + { + "begin": 11636, + "end": 11639, + "name": "DUP3", + "source": 20 + }, + { + "begin": 11636, + "end": 11646, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 11636, + "end": 11646, + "name": "ADD", + "source": 20 + }, + { + "begin": 11628, + "end": 11635, + "name": "PUSH [tag]", + "source": 20, + "value": "670" + }, + { + "begin": 11628, + "end": 11647, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 11628, + "end": 11647, + "name": "tag", + "source": 20, + "value": "669" + }, + { + "begin": 11628, + "end": 11647, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 11621, + "end": 11647, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 11621, + "end": 11647, + "name": "POP", + "source": 20 + }, + { + "begin": 11542, + "end": 11654, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 11542, + "end": 11654, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 11542, + "end": 11654, + "name": "POP", + "source": 20 + }, + { + "begin": 11542, + "end": 11654, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 11996, + "end": 12131, + "name": "tag", + "source": 20, + "value": "422" + }, + { + "begin": 11996, + "end": 12131, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 12067, + "end": 12074, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 12101, + "end": 12123, + "name": "PUSH [tag]", + "source": 20, + "value": "672" + }, + { + "begin": 12105, + "end": 12108, + "name": "DUP4", + "source": 20 + }, + { + "begin": 12105, + "end": 12115, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 12105, + "end": 12115, + "name": "ADD", + "source": 20 + }, + { + "begin": 12117, + "end": 12122, + "name": "DUP4", + "source": 20 + }, + { + "begin": 12101, + "end": 12104, + "name": "PUSH [tag]", + "source": 20, + "value": "552" + }, + { + "begin": 12101, + "end": 12123, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 12101, + "end": 12123, + "name": "tag", + "source": 20, + "value": "672" + }, + { + "begin": 12101, + "end": 12123, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 12093, + "end": 12124, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 12093, + "end": 12124, + "name": "SHR", + "source": 20 + }, + { + "begin": 12086, + "end": 12124, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 12086, + "end": 12124, + "name": "POP", + "source": 20 + }, + { + "begin": 11996, + "end": 12131, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 11996, + "end": 12131, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 11996, + "end": 12131, + "name": "POP", + "source": 20 + }, + { + "begin": 11996, + "end": 12131, + "name": "POP", + "source": 20 + }, + { + "begin": 11996, + "end": 12131, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 10513, + "end": 10648, + "name": "tag", + "source": 37, + "value": "423" + }, + { + "begin": 10513, + "end": 10648, + "name": "JUMPDEST", + "source": 37 + }, + { + "begin": 10563, + "end": 10571, + "name": "PUSH", + "source": 37, + "value": "0" + }, + { + "begin": 10606, + "end": 10607, + "name": "DUP2", + "source": 37 + }, + { + "begin": 10599, + "end": 10600, + "name": "DUP3", + "source": 37 + }, + { + "begin": 10588, + "end": 10601, + "name": "SWAP2", + "source": 37 + }, + { + "begin": 10588, + "end": 10601, + "name": "POP", + "source": 37 + }, + { + "begin": 10588, + "end": 10601, + "name": "DUP2", + "source": 37 + }, + { + "begin": 10587, + "end": 10607, + "name": "PUSH", + "source": 37, + "value": "FFFF" + }, + { + "begin": 10587, + "end": 10607, + "name": "AND", + "source": 37 + }, + { + "begin": 10587, + "end": 10607, + "name": "EQ", + "source": 37 + }, + { + "begin": 10583, + "end": 10641, + "name": "PUSH [tag]", + "source": 37, + "value": "674" + }, + { + "begin": 10583, + "end": 10641, + "name": "JUMPI", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "PUSH", + "source": 37, + "value": "40" + }, + { + "begin": 10616, + "end": 10641, + "name": "MLOAD", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "PUSH", + "source": 37, + "value": "64AE406D00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 10616, + "end": 10641, + "name": "DUP2", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "MSTORE", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "PUSH", + "source": 37, + "value": "4" + }, + { + "begin": 10616, + "end": 10641, + "name": "ADD", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "PUSH", + "source": 37, + "value": "40" + }, + { + "begin": 10616, + "end": 10641, + "name": "MLOAD", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "DUP1", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "SWAP2", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "SUB", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "SWAP1", + "source": 37 + }, + { + "begin": 10616, + "end": 10641, + "name": "REVERT", + "source": 37 + }, + { + "begin": 10583, + "end": 10641, + "name": "tag", + "source": 37, + "value": "674" + }, + { + "begin": 10583, + "end": 10641, + "name": "JUMPDEST", + "source": 37 + }, + { + "begin": 10513, + "end": 10648, + "name": "SWAP2", + "source": 37 + }, + { + "begin": 10513, + "end": 10648, + "name": "SWAP1", + "source": 37 + }, + { + "begin": 10513, + "end": 10648, + "name": "POP", + "source": 37 + }, + { + "begin": 10513, + "end": 10648, + "jumpType": "[out]", + "name": "JUMP", + "source": 37 + }, + { + "begin": 2830, + "end": 3052, + "name": "tag", + "source": 1, + "value": "442" + }, + { + "begin": 2830, + "end": 3052, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2912, + "end": 2941, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2944, + "end": 2969, + "name": "PUSH [tag]", + "source": 1, + "value": "676" + }, + { + "begin": 2944, + "end": 2967, + "name": "PUSH [tag]", + "source": 1, + "value": "522" + }, + { + "begin": 2944, + "end": 2969, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2944, + "end": 2969, + "name": "tag", + "source": 1, + "value": "676" + }, + { + "begin": 2944, + "end": 2969, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2912, + "end": 2969, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2912, + "end": 2969, + "name": "POP", + "source": 1 + }, + { + "begin": 2986, + "end": 2987, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2986, + "end": 3001, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2986, + "end": 3001, + "name": "ADD", + "source": 1 + }, + { + "begin": 2986, + "end": 3001, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2979, + "end": 3001, + "name": "PUSH", + "source": 1, + "value": "100" + }, + { + "begin": 2979, + "end": 3001, + "name": "EXP", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2979, + "end": 3001, + "name": "MUL", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "NOT", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "AND", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2979, + "end": 3001, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 3011, + "end": 3045, + "name": "PUSH [tag]", + "source": 1, + "value": "677" + }, + { + "begin": 3036, + "end": 3044, + "name": "DUP3", + "source": 1 + }, + { + "begin": 3011, + "end": 3035, + "name": "PUSH [tag]", + "source": 1, + "value": "678" + }, + { + "begin": 3011, + "end": 3045, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3011, + "end": 3045, + "name": "tag", + "source": 1, + "value": "677" + }, + { + "begin": 3011, + "end": 3045, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2902, + "end": 3052, + "name": "POP", + "source": 1 + }, + { + "begin": 2830, + "end": 3052, + "name": "POP", + "source": 1 + }, + { + "begin": 2830, + "end": 3052, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 9117, + "end": 9232, + "name": "tag", + "source": 20, + "value": "455" + }, + { + "begin": 9117, + "end": 9232, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 9180, + "end": 9187, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 9206, + "end": 9225, + "name": "PUSH [tag]", + "source": 20, + "value": "680" + }, + { + "begin": 9214, + "end": 9217, + "name": "DUP3", + "source": 20 + }, + { + "begin": 9214, + "end": 9224, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 9214, + "end": 9224, + "name": "ADD", + "source": 20 + }, + { + "begin": 9206, + "end": 9213, + "name": "PUSH [tag]", + "source": 20, + "value": "670" + }, + { + "begin": 9206, + "end": 9225, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 9206, + "end": 9225, + "name": "tag", + "source": 20, + "value": "680" + }, + { + "begin": 9206, + "end": 9225, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 9199, + "end": 9225, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 9199, + "end": 9225, + "name": "POP", + "source": 20 + }, + { + "begin": 9117, + "end": 9232, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 9117, + "end": 9232, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 9117, + "end": 9232, + "name": "POP", + "source": 20 + }, + { + "begin": 9117, + "end": 9232, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 1192, + "end": 1351, + "name": "tag", + "source": 2, + "value": "459" + }, + { + "begin": 1192, + "end": 1351, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1244, + "end": 1268, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 1313, + "end": 1335, + "name": "PUSH", + "source": 2, + "value": "9016D09D72D40FDAE2FD8CEAC6B6234C7706214FD39C1CD1E609A0528C199300" + }, + { + "begin": 1303, + "end": 1335, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1303, + "end": 1335, + "name": "POP", + "source": 2 + }, + { + "begin": 1192, + "end": 1351, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 1192, + "end": 1351, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3732, + "end": 3939, + "name": "tag", + "source": 0, + "value": "464" + }, + { + "begin": 3732, + "end": 3939, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3809, + "end": 3813, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3825, + "end": 3855, + "name": "DUP1", + "source": 0 + }, + { + "begin": 3858, + "end": 3884, + "name": "PUSH [tag]", + "source": 0, + "value": "683" + }, + { + "begin": 3858, + "end": 3882, + "name": "PUSH [tag]", + "source": 0, + "value": "268" + }, + { + "begin": 3858, + "end": 3884, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 3858, + "end": 3884, + "name": "tag", + "source": 0, + "value": "683" + }, + { + "begin": 3858, + "end": 3884, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 3825, + "end": 3884, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3825, + "end": 3884, + "name": "POP", + "source": 0 + }, + { + "begin": 3901, + "end": 3902, + "name": "DUP1", + "source": 0 + }, + { + "begin": 3901, + "end": 3909, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3901, + "end": 3909, + "name": "ADD", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3910, + "end": 3914, + "name": "DUP6", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 3901, + "end": 3915, + "name": "ADD", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 3901, + "end": 3915, + "name": "ADD", + "source": 0 + }, + { + "begin": 3901, + "end": 3915, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3901, + "end": 3915, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 3901, + "end": 3923, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3901, + "end": 3923, + "name": "ADD", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3924, + "end": 3931, + "name": "DUP5", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3901, + "end": 3932, + "name": "AND", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3901, + "end": 3932, + "name": "AND", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 3901, + "end": 3932, + "name": "ADD", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "DUP2", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 3901, + "end": 3932, + "name": "ADD", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3901, + "end": 3932, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 3901, + "end": 3932, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 3901, + "end": 3932, + "name": "EXP", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "DIV", + "source": 0 + }, + { + "begin": 3901, + "end": 3932, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 3901, + "end": 3932, + "name": "AND", + "source": 0 + }, + { + "begin": 3894, + "end": 3932, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 3894, + "end": 3932, + "name": "POP", + "source": 0 + }, + { + "begin": 3894, + "end": 3932, + "name": "POP", + "source": 0 + }, + { + "begin": 3732, + "end": 3939, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 3732, + "end": 3939, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 3732, + "end": 3939, + "name": "POP", + "source": 0 + }, + { + "begin": 3732, + "end": 3939, + "name": "POP", + "source": 0 + }, + { + "begin": 3732, + "end": 3939, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 8737, + "end": 8907, + "name": "tag", + "source": 3, + "value": "481" + }, + { + "begin": 8737, + "end": 8907, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 8795, + "end": 8825, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 8870, + "end": 8891, + "name": "PUSH", + "source": 3, + "value": "F0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + { + "begin": 8860, + "end": 8891, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8860, + "end": 8891, + "name": "POP", + "source": 3 + }, + { + "begin": 8737, + "end": 8907, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8737, + "end": 8907, + "jumpType": "[out]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 1847, + "end": 1974, + "name": "tag", + "source": 2, + "value": "489" + }, + { + "begin": 1847, + "end": 1974, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6931, + "end": 6951, + "name": "PUSH [tag]", + "source": 3, + "value": "686" + }, + { + "begin": 6931, + "end": 6949, + "name": "PUSH [tag]", + "source": 3, + "value": "687" + }, + { + "begin": 6931, + "end": 6951, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 6931, + "end": 6951, + "name": "tag", + "source": 3, + "value": "686" + }, + { + "begin": 6931, + "end": 6951, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 1929, + "end": 1967, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "689" + }, + { + "begin": 1954, + "end": 1966, + "modifierDepth": 1, + "name": "DUP2", + "source": 2 + }, + { + "begin": 1929, + "end": 1953, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "690" + }, + { + "begin": 1929, + "end": 1967, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 2 + }, + { + "begin": 1929, + "end": 1967, + "modifierDepth": 1, + "name": "tag", + "source": 2, + "value": "689" + }, + { + "begin": 1929, + "end": 1967, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1847, + "end": 1974, + "name": "POP", + "source": 2 + }, + { + "begin": 1847, + "end": 1974, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 25657, + "end": 26040, + "name": "tag", + "source": 21, + "value": "494" + }, + { + "begin": 25657, + "end": 26040, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25752, + "end": 25753, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 25728, + "end": 25754, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25728, + "end": 25754, + "name": "AND", + "source": 21 + }, + { + "begin": 25728, + "end": 25740, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25728, + "end": 25754, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25728, + "end": 25754, + "name": "AND", + "source": 21 + }, + { + "begin": 25728, + "end": 25754, + "name": "SUB", + "source": 21 + }, + { + "begin": 25724, + "end": 25787, + "name": "PUSH [tag]", + "source": 21, + "value": "692" + }, + { + "begin": 25724, + "end": 25787, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25763, + "end": 25787, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "PUSH", + "source": 21, + "value": "95CF3EE400000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 25763, + "end": 25787, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 25763, + "end": 25787, + "name": "ADD", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25763, + "end": 25787, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "SUB", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25763, + "end": 25787, + "name": "REVERT", + "source": 21 + }, + { + "begin": 25724, + "end": 25787, + "name": "tag", + "source": 21, + "value": "692" + }, + { + "begin": 25724, + "end": 25787, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25798, + "end": 25821, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 25824, + "end": 25837, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25824, + "end": 25837, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 25824, + "end": 25837, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25824, + "end": 25837, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 25824, + "end": 25837, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25824, + "end": 25837, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 25824, + "end": 25837, + "name": "EXP", + "source": 21 + }, + { + "begin": 25824, + "end": 25837, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25824, + "end": 25837, + "name": "DIV", + "source": 21 + }, + { + "begin": 25824, + "end": 25837, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25824, + "end": 25837, + "name": "AND", + "source": 21 + }, + { + "begin": 25798, + "end": 25837, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25798, + "end": 25837, + "name": "POP", + "source": 21 + }, + { + "begin": 25870, + "end": 25882, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25851, + "end": 25882, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25851, + "end": 25882, + "name": "AND", + "source": 21 + }, + { + "begin": 25851, + "end": 25866, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25851, + "end": 25882, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25851, + "end": 25882, + "name": "AND", + "source": 21 + }, + { + "begin": 25851, + "end": 25882, + "name": "SUB", + "source": 21 + }, + { + "begin": 25847, + "end": 25933, + "name": "PUSH [tag]", + "source": 21, + "value": "693" + }, + { + "begin": 25847, + "end": 25933, + "name": "JUMPI", + "source": 21 + }, + { + "begin": 25919, + "end": 25932, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 25919, + "end": 25932, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25919, + "end": 25932, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 25919, + "end": 25932, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25919, + "end": 25932, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 25919, + "end": 25932, + "name": "EXP", + "source": 21 + }, + { + "begin": 25919, + "end": 25932, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25919, + "end": 25932, + "name": "DIV", + "source": 21 + }, + { + "begin": 25919, + "end": 25932, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25919, + "end": 25932, + "name": "AND", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25891, + "end": 25933, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "PUSH", + "source": 21, + "value": "4FCEA97100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 25891, + "end": 25933, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "MSTORE", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "PUSH", + "source": 21, + "value": "4" + }, + { + "begin": 25891, + "end": 25933, + "name": "ADD", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "PUSH [tag]", + "source": 21, + "value": "694" + }, + { + "begin": 25891, + "end": 25933, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "PUSH [tag]", + "source": 21, + "value": "114" + }, + { + "begin": 25891, + "end": 25933, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "tag", + "source": 21, + "value": "694" + }, + { + "begin": 25891, + "end": 25933, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25891, + "end": 25933, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "SUB", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25891, + "end": 25933, + "name": "REVERT", + "source": 21 + }, + { + "begin": 25847, + "end": 25933, + "name": "tag", + "source": 21, + "value": "693" + }, + { + "begin": 25847, + "end": 25933, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25960, + "end": 25972, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25944, + "end": 25957, + "name": "PUSH", + "source": 21, + "value": "0" + }, + { + "begin": 25944, + "end": 25957, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "PUSH", + "source": 21, + "value": "100" + }, + { + "begin": 25944, + "end": 25972, + "name": "EXP", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "SLOAD", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "DUP2", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25944, + "end": 25972, + "name": "MUL", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "NOT", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "AND", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "DUP4", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "PUSH", + "source": 21, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 25944, + "end": 25972, + "name": "AND", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "MUL", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "OR", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "SSTORE", + "source": 21 + }, + { + "begin": 25944, + "end": 25972, + "name": "POP", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "PUSH", + "source": 21, + "value": "15D80A013F22151BC7246E3BC132E12828CDE19DE98870475E3FA70840152721" + }, + { + "begin": 26003, + "end": 26018, + "name": "DUP2", + "source": 21 + }, + { + "begin": 26020, + "end": 26032, + "name": "DUP4", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25987, + "end": 26033, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "PUSH [tag]", + "source": 21, + "value": "695" + }, + { + "begin": 25987, + "end": 26033, + "name": "SWAP3", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "PUSH [tag]", + "source": 21, + "value": "696" + }, + { + "begin": 25987, + "end": 26033, + "jumpType": "[in]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "tag", + "source": 21, + "value": "695" + }, + { + "begin": 25987, + "end": 26033, + "name": "JUMPDEST", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "PUSH", + "source": 21, + "value": "40" + }, + { + "begin": 25987, + "end": 26033, + "name": "MLOAD", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "DUP1", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "SWAP2", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "SUB", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "SWAP1", + "source": 21 + }, + { + "begin": 25987, + "end": 26033, + "name": "LOG1", + "source": 21 + }, + { + "begin": 25714, + "end": 26040, + "name": "POP", + "source": 21 + }, + { + "begin": 25657, + "end": 26040, + "name": "POP", + "source": 21 + }, + { + "begin": 25657, + "end": 26040, + "jumpType": "[out]", + "name": "JUMP", + "source": 21 + }, + { + "begin": 8634, + "end": 8790, + "name": "tag", + "source": 20, + "value": "510" + }, + { + "begin": 8634, + "end": 8790, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 8707, + "end": 8711, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8730, + "end": 8783, + "name": "PUSH [tag]", + "source": 20, + "value": "698" + }, + { + "begin": 8738, + "end": 8741, + "name": "DUP4", + "source": 20 + }, + { + "begin": 8738, + "end": 8748, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8738, + "end": 8748, + "name": "ADD", + "source": 20 + }, + { + "begin": 8774, + "end": 8779, + "name": "DUP4", + "source": 20 + }, + { + "begin": 8758, + "end": 8781, + "name": "PUSH", + "source": 20, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 8758, + "end": 8781, + "name": "AND", + "source": 20 + }, + { + "begin": 8750, + "end": 8782, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 8750, + "end": 8782, + "name": "SHL", + "source": 20 + }, + { + "begin": 8730, + "end": 8737, + "name": "PUSH [tag]", + "source": 20, + "value": "699" + }, + { + "begin": 8730, + "end": 8783, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 8730, + "end": 8783, + "name": "tag", + "source": 20, + "value": "698" + }, + { + "begin": 8730, + "end": 8783, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 8723, + "end": 8783, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 8723, + "end": 8783, + "name": "POP", + "source": 20 + }, + { + "begin": 8634, + "end": 8790, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 8634, + "end": 8790, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 8634, + "end": 8790, + "name": "POP", + "source": 20 + }, + { + "begin": 8634, + "end": 8790, + "name": "POP", + "source": 20 + }, + { + "begin": 8634, + "end": 8790, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 6566, + "end": 6702, + "name": "tag", + "source": 19, + "value": "517" + }, + { + "begin": 6566, + "end": 6702, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 6640, + "end": 6644, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6663, + "end": 6695, + "name": "PUSH [tag]", + "source": 19, + "value": "701" + }, + { + "begin": 6670, + "end": 6673, + "name": "DUP4", + "source": 19 + }, + { + "begin": 6670, + "end": 6680, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6670, + "end": 6680, + "name": "ADD", + "source": 19 + }, + { + "begin": 6690, + "end": 6693, + "name": "DUP4", + "source": 19 + }, + { + "begin": 6682, + "end": 6694, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 6682, + "end": 6694, + "name": "SHL", + "source": 19 + }, + { + "begin": 6663, + "end": 6669, + "name": "PUSH [tag]", + "source": 19, + "value": "702" + }, + { + "begin": 6663, + "end": 6695, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 6663, + "end": 6695, + "name": "tag", + "source": 19, + "value": "701" + }, + { + "begin": 6663, + "end": 6695, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 6656, + "end": 6695, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 6656, + "end": 6695, + "name": "POP", + "source": 19 + }, + { + "begin": 6566, + "end": 6702, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 6566, + "end": 6702, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 6566, + "end": 6702, + "name": "POP", + "source": 19 + }, + { + "begin": 6566, + "end": 6702, + "name": "POP", + "source": 19 + }, + { + "begin": 6566, + "end": 6702, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 1545, + "end": 1719, + "name": "tag", + "source": 1, + "value": "522" + }, + { + "begin": 1545, + "end": 1719, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1602, + "end": 1631, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1676, + "end": 1703, + "name": "PUSH", + "source": 1, + "value": "237E158222E3E6968B72B9DB0D8043AACF074AD9F650F0D1606B4D82EE432C00" + }, + { + "begin": 1666, + "end": 1703, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1666, + "end": 1703, + "name": "POP", + "source": 1 + }, + { + "begin": 1545, + "end": 1719, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1545, + "end": 1719, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3716, + "end": 3839, + "name": "tag", + "source": 19, + "value": "544" + }, + { + "begin": 3716, + "end": 3839, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 3788, + "end": 3795, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3814, + "end": 3832, + "name": "PUSH [tag]", + "source": 19, + "value": "705" + }, + { + "begin": 3814, + "end": 3817, + "name": "DUP3", + "source": 19 + }, + { + "begin": 3814, + "end": 3823, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3814, + "end": 3823, + "name": "ADD", + "source": 19 + }, + { + "begin": 3814, + "end": 3830, + "name": "PUSH [tag]", + "source": 19, + "value": "706" + }, + { + "begin": 3814, + "end": 3832, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 3814, + "end": 3832, + "name": "tag", + "source": 19, + "value": "705" + }, + { + "begin": 3814, + "end": 3832, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 3807, + "end": 3832, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3807, + "end": 3832, + "name": "POP", + "source": 19 + }, + { + "begin": 3716, + "end": 3839, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 3716, + "end": 3839, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3716, + "end": 3839, + "name": "POP", + "source": 19 + }, + { + "begin": 3716, + "end": 3839, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 4192, + "end": 4383, + "name": "tag", + "source": 19, + "value": "547" + }, + { + "begin": 4192, + "end": 4383, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 4275, + "end": 4282, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 4284, + "end": 4291, + "name": "DUP1", + "source": 19 + }, + { + "begin": 4303, + "end": 4314, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 4317, + "end": 4336, + "name": "PUSH [tag]", + "source": 19, + "value": "708" + }, + { + "begin": 4330, + "end": 4335, + "name": "DUP5", + "source": 19 + }, + { + "begin": 4317, + "end": 4320, + "name": "DUP7", + "source": 19 + }, + { + "begin": 4317, + "end": 4326, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 4317, + "end": 4326, + "name": "ADD", + "source": 19 + }, + { + "begin": 4317, + "end": 4329, + "name": "PUSH [tag]", + "source": 19, + "value": "709" + }, + { + "begin": 4317, + "end": 4329, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 4317, + "end": 4336, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 4317, + "end": 4336, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 4317, + "end": 4336, + "name": "PUSH", + "source": 19, + "value": "FFFFFFFF" + }, + { + "begin": 4317, + "end": 4336, + "name": "AND", + "source": 19 + }, + { + "begin": 4317, + "end": 4336, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 4317, + "end": 4336, + "name": "tag", + "source": 19, + "value": "708" + }, + { + "begin": 4317, + "end": 4336, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 4303, + "end": 4336, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 4303, + "end": 4336, + "name": "POP", + "source": 19 + }, + { + "begin": 4354, + "end": 4357, + "name": "DUP1", + "source": 19 + }, + { + "begin": 4359, + "end": 4362, + "name": "DUP6", + "source": 19 + }, + { + "begin": 4359, + "end": 4370, + "name": "PUSH", + "source": 19, + "value": "2" + }, + { + "begin": 4359, + "end": 4370, + "name": "ADD", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 4371, + "end": 4374, + "name": "DUP4", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "DUP2", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 4359, + "end": 4375, + "name": "ADD", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "DUP2", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 4359, + "end": 4375, + "name": "ADD", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 4359, + "end": 4375, + "name": "KECCAK256", + "source": 19 + }, + { + "begin": 4359, + "end": 4375, + "name": "SLOAD", + "source": 19 + }, + { + "begin": 4346, + "end": 4376, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 4346, + "end": 4376, + "name": "POP", + "source": 19 + }, + { + "begin": 4346, + "end": 4376, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 4346, + "end": 4376, + "name": "POP", + "source": 19 + }, + { + "begin": 4346, + "end": 4376, + "name": "POP", + "source": 19 + }, + { + "begin": 4192, + "end": 4383, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 4192, + "end": 4383, + "name": "POP", + "source": 19 + }, + { + "begin": 4192, + "end": 4383, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 4192, + "end": 4383, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 4192, + "end": 4383, + "name": "POP", + "source": 19 + }, + { + "begin": 4192, + "end": 4383, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 4923, + "end": 5041, + "name": "tag", + "source": 20, + "value": "552" + }, + { + "begin": 4923, + "end": 5041, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 4990, + "end": 4997, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 5016, + "end": 5019, + "name": "DUP3", + "source": 20 + }, + { + "begin": 5016, + "end": 5027, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 5016, + "end": 5027, + "name": "ADD", + "source": 20 + }, + { + "begin": 5028, + "end": 5033, + "name": "DUP3", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "LT", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "PUSH [tag]", + "source": 20, + "value": "711" + }, + { + "begin": 5016, + "end": 5034, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "PUSH [tag]", + "source": 20, + "value": "712" + }, + { + "begin": 5016, + "end": 5034, + "name": "PUSH [tag]", + "source": 20, + "value": "244" + }, + { + "begin": 5016, + "end": 5034, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "tag", + "source": 20, + "value": "712" + }, + { + "begin": 5016, + "end": 5034, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "tag", + "source": 20, + "value": "711" + }, + { + "begin": 5016, + "end": 5034, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 5016, + "end": 5034, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 5016, + "end": 5034, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 5016, + "end": 5034, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "ADD", + "source": 20 + }, + { + "begin": 5016, + "end": 5034, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 5009, + "end": 5034, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5009, + "end": 5034, + "name": "POP", + "source": 20 + }, + { + "begin": 4923, + "end": 5041, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 4923, + "end": 5041, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 4923, + "end": 5041, + "name": "POP", + "source": 20 + }, + { + "begin": 4923, + "end": 5041, + "name": "POP", + "source": 20 + }, + { + "begin": 4923, + "end": 5041, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 4264, + "end": 4393, + "name": "tag", + "source": 20, + "value": "565" + }, + { + "begin": 4264, + "end": 4393, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 4337, + "end": 4341, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4385, + "end": 4386, + "name": "DUP1", + "source": 20 + }, + { + "begin": 4360, + "end": 4363, + "name": "DUP4", + "source": 20 + }, + { + "begin": 4360, + "end": 4374, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 4360, + "end": 4374, + "name": "ADD", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4375, + "end": 4380, + "name": "DUP5", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "DUP2", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 4360, + "end": 4381, + "name": "ADD", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "DUP2", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 4360, + "end": 4381, + "name": "ADD", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4360, + "end": 4381, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 4360, + "end": 4381, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 4360, + "end": 4386, + "name": "EQ", + "source": 20 + }, + { + "begin": 4360, + "end": 4386, + "name": "ISZERO", + "source": 20 + }, + { + "begin": 4353, + "end": 4386, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 4353, + "end": 4386, + "name": "POP", + "source": 20 + }, + { + "begin": 4264, + "end": 4393, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 4264, + "end": 4393, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 4264, + "end": 4393, + "name": "POP", + "source": 20 + }, + { + "begin": 4264, + "end": 4393, + "name": "POP", + "source": 20 + }, + { + "begin": 4264, + "end": 4393, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 4381, + "end": 4578, + "name": "tag", + "source": 0, + "value": "569" + }, + { + "begin": 4381, + "end": 4578, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4469, + "end": 4491, + "name": "PUSH [tag]", + "source": 0, + "value": "716" + }, + { + "begin": 4477, + "end": 4481, + "name": "DUP3", + "source": 0 + }, + { + "begin": 4483, + "end": 4490, + "name": "DUP3", + "source": 0 + }, + { + "begin": 4469, + "end": 4476, + "name": "PUSH [tag]", + "source": 0, + "value": "176" + }, + { + "begin": 4469, + "end": 4491, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4469, + "end": 4491, + "name": "tag", + "source": 0, + "value": "716" + }, + { + "begin": 4469, + "end": 4491, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4464, + "end": 4572, + "name": "PUSH [tag]", + "source": 0, + "value": "717" + }, + { + "begin": 4464, + "end": 4572, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 4547, + "end": 4554, + "name": "DUP1", + "source": 0 + }, + { + "begin": 4556, + "end": 4560, + "name": "DUP3", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 4514, + "end": 4561, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "PUSH", + "source": 0, + "value": "E2517D3F00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 4514, + "end": 4561, + "name": "DUP2", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 4514, + "end": 4561, + "name": "ADD", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "PUSH [tag]", + "source": 0, + "value": "718" + }, + { + "begin": 4514, + "end": 4561, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "PUSH [tag]", + "source": 0, + "value": "719" + }, + { + "begin": 4514, + "end": 4561, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "tag", + "source": 0, + "value": "718" + }, + { + "begin": 4514, + "end": 4561, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 4514, + "end": 4561, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "DUP1", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "SUB", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 4514, + "end": 4561, + "name": "REVERT", + "source": 0 + }, + { + "begin": 4464, + "end": 4572, + "name": "tag", + "source": 0, + "value": "717" + }, + { + "begin": 4464, + "end": 4572, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 4381, + "end": 4578, + "name": "POP", + "source": 0 + }, + { + "begin": 4381, + "end": 4578, + "name": "POP", + "source": 0 + }, + { + "begin": 4381, + "end": 4578, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 7270, + "end": 7657, + "name": "tag", + "source": 0, + "value": "588" + }, + { + "begin": 7270, + "end": 7657, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7347, + "end": 7351, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7363, + "end": 7393, + "name": "DUP1", + "source": 0 + }, + { + "begin": 7396, + "end": 7422, + "name": "PUSH [tag]", + "source": 0, + "value": "721" + }, + { + "begin": 7396, + "end": 7420, + "name": "PUSH [tag]", + "source": 0, + "value": "268" + }, + { + "begin": 7396, + "end": 7422, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 7396, + "end": 7422, + "name": "tag", + "source": 0, + "value": "721" + }, + { + "begin": 7396, + "end": 7422, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7363, + "end": 7422, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 7363, + "end": 7422, + "name": "POP", + "source": 0 + }, + { + "begin": 7437, + "end": 7459, + "name": "PUSH [tag]", + "source": 0, + "value": "722" + }, + { + "begin": 7445, + "end": 7449, + "name": "DUP5", + "source": 0 + }, + { + "begin": 7451, + "end": 7458, + "name": "DUP5", + "source": 0 + }, + { + "begin": 7437, + "end": 7444, + "name": "PUSH [tag]", + "source": 0, + "value": "176" + }, + { + "begin": 7437, + "end": 7459, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 7437, + "end": 7459, + "name": "tag", + "source": 0, + "value": "722" + }, + { + "begin": 7437, + "end": 7459, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7432, + "end": 7651, + "name": "PUSH [tag]", + "source": 0, + "value": "723" + }, + { + "begin": 7432, + "end": 7651, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 7509, + "end": 7513, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 7475, + "end": 7476, + "name": "DUP2", + "source": 0 + }, + { + "begin": 7475, + "end": 7483, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7475, + "end": 7483, + "name": "ADD", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7484, + "end": 7488, + "name": "DUP7", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "DUP2", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 7475, + "end": 7489, + "name": "ADD", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "DUP2", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 7475, + "end": 7489, + "name": "ADD", + "source": 0 + }, + { + "begin": 7475, + "end": 7489, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7475, + "end": 7489, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 7475, + "end": 7497, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7475, + "end": 7497, + "name": "ADD", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7498, + "end": 7505, + "name": "DUP6", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 7475, + "end": 7506, + "name": "AND", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 7475, + "end": 7506, + "name": "AND", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "DUP2", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 7475, + "end": 7506, + "name": "ADD", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "DUP2", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 7475, + "end": 7506, + "name": "ADD", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7475, + "end": 7506, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 7475, + "end": 7506, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7475, + "end": 7513, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 7475, + "end": 7513, + "name": "EXP", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "DUP2", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "DUP2", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 7475, + "end": 7513, + "name": "MUL", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "NOT", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "AND", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "DUP4", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "MUL", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "OR", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 7475, + "end": 7513, + "name": "POP", + "source": 0 + }, + { + "begin": 7559, + "end": 7571, + "name": "PUSH [tag]", + "source": 0, + "value": "724" + }, + { + "begin": 7559, + "end": 7569, + "name": "PUSH [tag]", + "source": 0, + "value": "289" + }, + { + "begin": 7559, + "end": 7571, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 7559, + "end": 7571, + "name": "tag", + "source": 0, + "value": "724" + }, + { + "begin": 7559, + "end": 7571, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 7532, + "end": 7572, + "name": "AND", + "source": 0 + }, + { + "begin": 7550, + "end": 7557, + "name": "DUP4", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 7532, + "end": 7572, + "name": "AND", + "source": 0 + }, + { + "begin": 7544, + "end": 7548, + "name": "DUP6", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "PUSH", + "source": 0, + "value": "2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D" + }, + { + "begin": 7532, + "end": 7572, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 7532, + "end": 7572, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 7532, + "end": 7572, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "DUP1", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "SUB", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 7532, + "end": 7572, + "name": "LOG4", + "source": 0 + }, + { + "begin": 7593, + "end": 7597, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 7586, + "end": 7597, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 7586, + "end": 7597, + "name": "POP", + "source": 0 + }, + { + "begin": 7586, + "end": 7597, + "name": "POP", + "source": 0 + }, + { + "begin": 7586, + "end": 7597, + "name": "PUSH [tag]", + "source": 0, + "value": "720" + }, + { + "begin": 7586, + "end": 7597, + "name": "JUMP", + "source": 0 + }, + { + "begin": 7432, + "end": 7651, + "name": "tag", + "source": 0, + "value": "723" + }, + { + "begin": 7432, + "end": 7651, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7635, + "end": 7640, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 7628, + "end": 7640, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 7628, + "end": 7640, + "name": "POP", + "source": 0 + }, + { + "begin": 7628, + "end": 7640, + "name": "POP", + "source": 0 + }, + { + "begin": 7270, + "end": 7657, + "name": "tag", + "source": 0, + "value": "720" + }, + { + "begin": 7270, + "end": 7657, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 7270, + "end": 7657, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 7270, + "end": 7657, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 7270, + "end": 7657, + "name": "POP", + "source": 0 + }, + { + "begin": 7270, + "end": 7657, + "name": "POP", + "source": 0 + }, + { + "begin": 7270, + "end": 7657, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 1099, + "end": 1416, + "name": "tag", + "source": 36, + "value": "603" + }, + { + "begin": 1099, + "end": 1416, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 1221, + "end": 1239, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 1321, + "end": 1325, + "name": "DUP3", + "source": 36 + }, + { + "begin": 1313, + "end": 1319, + "name": "DUP3", + "source": 36 + }, + { + "begin": 1309, + "end": 1326, + "name": "SHL", + "source": 36 + }, + { + "begin": 1305, + "end": 1327, + "name": "NOT", + "source": 36 + }, + { + "begin": 1296, + "end": 1303, + "name": "DUP6", + "source": 36 + }, + { + "begin": 1292, + "end": 1328, + "name": "AND", + "source": 36 + }, + { + "begin": 1278, + "end": 1328, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 1278, + "end": 1328, + "name": "POP", + "source": 36 + }, + { + "begin": 1393, + "end": 1397, + "name": "DUP3", + "source": 36 + }, + { + "begin": 1386, + "end": 1391, + "name": "DUP5", + "source": 36 + }, + { + "begin": 1382, + "end": 1398, + "name": "AND", + "source": 36 + }, + { + "begin": 1374, + "end": 1380, + "name": "DUP3", + "source": 36 + }, + { + "begin": 1370, + "end": 1399, + "name": "SHL", + "source": 36 + }, + { + "begin": 1358, + "end": 1368, + "name": "DUP2", + "source": 36 + }, + { + "begin": 1355, + "end": 1400, + "name": "OR", + "source": 36 + }, + { + "begin": 1341, + "end": 1400, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 1341, + "end": 1400, + "name": "POP", + "source": 36 + }, + { + "begin": 1099, + "end": 1416, + "name": "SWAP5", + "source": 36 + }, + { + "begin": 1099, + "end": 1416, + "name": "SWAP4", + "source": 36 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 36 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 36 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 36 + }, + { + "begin": 1099, + "end": 1416, + "name": "POP", + "source": 36 + }, + { + "begin": 1099, + "end": 1416, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 2901, + "end": 3075, + "name": "tag", + "source": 19, + "value": "617" + }, + { + "begin": 2901, + "end": 3075, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 2993, + "end": 2997, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3028, + "end": 3033, + "name": "DUP2", + "source": 19 + }, + { + "begin": 3009, + "end": 3012, + "name": "DUP5", + "source": 19 + }, + { + "begin": 3009, + "end": 3020, + "name": "PUSH", + "source": 19, + "value": "2" + }, + { + "begin": 3009, + "end": 3020, + "name": "ADD", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3021, + "end": 3024, + "name": "DUP6", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "DUP2", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 3009, + "end": 3025, + "name": "ADD", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "DUP2", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 3009, + "end": 3025, + "name": "ADD", + "source": 19 + }, + { + "begin": 3009, + "end": 3025, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3009, + "end": 3025, + "name": "KECCAK256", + "source": 19 + }, + { + "begin": 3009, + "end": 3033, + "name": "DUP2", + "source": 19 + }, + { + "begin": 3009, + "end": 3033, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3009, + "end": 3033, + "name": "SSTORE", + "source": 19 + }, + { + "begin": 3009, + "end": 3033, + "name": "POP", + "source": 19 + }, + { + "begin": 3050, + "end": 3068, + "name": "PUSH [tag]", + "source": 19, + "value": "728" + }, + { + "begin": 3064, + "end": 3067, + "name": "DUP4", + "source": 19 + }, + { + "begin": 3050, + "end": 3053, + "name": "DUP6", + "source": 19 + }, + { + "begin": 3050, + "end": 3059, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3050, + "end": 3059, + "name": "ADD", + "source": 19 + }, + { + "begin": 3050, + "end": 3063, + "name": "PUSH [tag]", + "source": 19, + "value": "729" + }, + { + "begin": 3050, + "end": 3063, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3050, + "end": 3068, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 3050, + "end": 3068, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3050, + "end": 3068, + "name": "PUSH", + "source": 19, + "value": "FFFFFFFF" + }, + { + "begin": 3050, + "end": 3068, + "name": "AND", + "source": 19 + }, + { + "begin": 3050, + "end": 3068, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 3050, + "end": 3068, + "name": "tag", + "source": 19, + "value": "728" + }, + { + "begin": 3050, + "end": 3068, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 3043, + "end": 3068, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3043, + "end": 3068, + "name": "POP", + "source": 19 + }, + { + "begin": 2901, + "end": 3075, + "name": "SWAP4", + "source": 19 + }, + { + "begin": 2901, + "end": 3075, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 2901, + "end": 3075, + "name": "POP", + "source": 19 + }, + { + "begin": 2901, + "end": 3075, + "name": "POP", + "source": 19 + }, + { + "begin": 2901, + "end": 3075, + "name": "POP", + "source": 19 + }, + { + "begin": 2901, + "end": 3075, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 3486, + "end": 3626, + "name": "tag", + "source": 19, + "value": "622" + }, + { + "begin": 3486, + "end": 3626, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 3573, + "end": 3577, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3596, + "end": 3619, + "name": "PUSH [tag]", + "source": 19, + "value": "731" + }, + { + "begin": 3615, + "end": 3618, + "name": "DUP3", + "source": 19 + }, + { + "begin": 3596, + "end": 3599, + "name": "DUP5", + "source": 19 + }, + { + "begin": 3596, + "end": 3605, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3596, + "end": 3605, + "name": "ADD", + "source": 19 + }, + { + "begin": 3596, + "end": 3614, + "name": "PUSH [tag]", + "source": 19, + "value": "732" + }, + { + "begin": 3596, + "end": 3614, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3596, + "end": 3619, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 3596, + "end": 3619, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3596, + "end": 3619, + "name": "PUSH", + "source": 19, + "value": "FFFFFFFF" + }, + { + "begin": 3596, + "end": 3619, + "name": "AND", + "source": 19 + }, + { + "begin": 3596, + "end": 3619, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 3596, + "end": 3619, + "name": "tag", + "source": 19, + "value": "731" + }, + { + "begin": 3596, + "end": 3619, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 3589, + "end": 3619, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3589, + "end": 3619, + "name": "POP", + "source": 19 + }, + { + "begin": 3486, + "end": 3626, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 3486, + "end": 3626, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 3486, + "end": 3626, + "name": "POP", + "source": 19 + }, + { + "begin": 3486, + "end": 3626, + "name": "POP", + "source": 19 + }, + { + "begin": 3486, + "end": 3626, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 4973, + "end": 5247, + "name": "tag", + "source": 19, + "value": "625" + }, + { + "begin": 4973, + "end": 5247, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 5055, + "end": 5062, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 5074, + "end": 5087, + "name": "DUP1", + "source": 19 + }, + { + "begin": 5090, + "end": 5093, + "name": "DUP4", + "source": 19 + }, + { + "begin": 5090, + "end": 5101, + "name": "PUSH", + "source": 19, + "value": "2" + }, + { + "begin": 5090, + "end": 5101, + "name": "ADD", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 5102, + "end": 5105, + "name": "DUP5", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "DUP2", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 5090, + "end": 5106, + "name": "ADD", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "DUP2", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 5090, + "end": 5106, + "name": "ADD", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 5090, + "end": 5106, + "name": "KECCAK256", + "source": 19 + }, + { + "begin": 5090, + "end": 5106, + "name": "SLOAD", + "source": 19 + }, + { + "begin": 5074, + "end": 5106, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 5074, + "end": 5106, + "name": "POP", + "source": 19 + }, + { + "begin": 5129, + "end": 5130, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 5120, + "end": 5130, + "name": "DUP1", + "source": 19 + }, + { + "begin": 5120, + "end": 5130, + "name": "SHL", + "source": 19 + }, + { + "begin": 5120, + "end": 5125, + "name": "DUP2", + "source": 19 + }, + { + "begin": 5120, + "end": 5130, + "name": "EQ", + "source": 19 + }, + { + "begin": 5120, + "end": 5153, + "name": "DUP1", + "source": 19 + }, + { + "begin": 5120, + "end": 5153, + "name": "ISZERO", + "source": 19 + }, + { + "begin": 5120, + "end": 5153, + "name": "PUSH [tag]", + "source": 19, + "value": "734" + }, + { + "begin": 5120, + "end": 5153, + "name": "JUMPI", + "source": 19 + }, + { + "begin": 5120, + "end": 5153, + "name": "POP", + "source": 19 + }, + { + "begin": 5135, + "end": 5153, + "name": "PUSH [tag]", + "source": 19, + "value": "735" + }, + { + "begin": 5144, + "end": 5147, + "name": "DUP5", + "source": 19 + }, + { + "begin": 5149, + "end": 5152, + "name": "DUP5", + "source": 19 + }, + { + "begin": 5135, + "end": 5143, + "name": "PUSH [tag]", + "source": 19, + "value": "622" + }, + { + "begin": 5135, + "end": 5153, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 5135, + "end": 5153, + "name": "tag", + "source": 19, + "value": "735" + }, + { + "begin": 5135, + "end": 5153, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 5134, + "end": 5153, + "name": "ISZERO", + "source": 19 + }, + { + "begin": 5120, + "end": 5153, + "name": "tag", + "source": 19, + "value": "734" + }, + { + "begin": 5120, + "end": 5153, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 5116, + "end": 5219, + "name": "ISZERO", + "source": 19 + }, + { + "begin": 5116, + "end": 5219, + "name": "PUSH [tag]", + "source": 19, + "value": "736" + }, + { + "begin": 5116, + "end": 5219, + "name": "JUMPI", + "source": 19 + }, + { + "begin": 5204, + "end": 5207, + "name": "DUP3", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "PUSH", + "source": 19, + "value": "40" + }, + { + "begin": 5176, + "end": 5208, + "name": "MLOAD", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "PUSH", + "source": 19, + "value": "2B5668600000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5176, + "end": 5208, + "name": "DUP2", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "PUSH", + "source": 19, + "value": "4" + }, + { + "begin": 5176, + "end": 5208, + "name": "ADD", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "PUSH [tag]", + "source": 19, + "value": "737" + }, + { + "begin": 5176, + "end": 5208, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "PUSH [tag]", + "source": 19, + "value": "77" + }, + { + "begin": 5176, + "end": 5208, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "tag", + "source": 19, + "value": "737" + }, + { + "begin": 5176, + "end": 5208, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "PUSH", + "source": 19, + "value": "40" + }, + { + "begin": 5176, + "end": 5208, + "name": "MLOAD", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "DUP1", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "SUB", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 5176, + "end": 5208, + "name": "REVERT", + "source": 19 + }, + { + "begin": 5116, + "end": 5219, + "name": "tag", + "source": 19, + "value": "736" + }, + { + "begin": 5116, + "end": 5219, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 5235, + "end": 5240, + "name": "DUP1", + "source": 19 + }, + { + "begin": 5228, + "end": 5240, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 5228, + "end": 5240, + "name": "POP", + "source": 19 + }, + { + "begin": 5228, + "end": 5240, + "name": "POP", + "source": 19 + }, + { + "begin": 4973, + "end": 5247, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 4973, + "end": 5247, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 4973, + "end": 5247, + "name": "POP", + "source": 19 + }, + { + "begin": 4973, + "end": 5247, + "name": "POP", + "source": 19 + }, + { + "begin": 4973, + "end": 5247, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 2241, + "end": 2647, + "name": "tag", + "source": 20, + "value": "629" + }, + { + "begin": 2241, + "end": 2647, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 2304, + "end": 2308, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2325, + "end": 2346, + "name": "PUSH [tag]", + "source": 20, + "value": "739" + }, + { + "begin": 2335, + "end": 2338, + "name": "DUP4", + "source": 20 + }, + { + "begin": 2340, + "end": 2345, + "name": "DUP4", + "source": 20 + }, + { + "begin": 2325, + "end": 2334, + "name": "PUSH [tag]", + "source": 20, + "value": "565" + }, + { + "begin": 2325, + "end": 2346, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 2325, + "end": 2346, + "name": "tag", + "source": 20, + "value": "739" + }, + { + "begin": 2325, + "end": 2346, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 2320, + "end": 2641, + "name": "PUSH [tag]", + "source": 20, + "value": "740" + }, + { + "begin": 2320, + "end": 2641, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 2362, + "end": 2365, + "name": "DUP3", + "source": 20 + }, + { + "begin": 2362, + "end": 2373, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2362, + "end": 2373, + "name": "ADD", + "source": 20 + }, + { + "begin": 2379, + "end": 2384, + "name": "DUP3", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "DUP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 2362, + "end": 2385, + "name": "DUP2", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "ADD", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "DUP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "DUP3", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "DUP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "POP", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "POP", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SUB", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2362, + "end": 2385, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 2362, + "end": 2385, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2362, + "end": 2385, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "ADD", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "POP", + "source": 20 + }, + { + "begin": 2362, + "end": 2385, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 2544, + "end": 2547, + "name": "DUP3", + "source": 20 + }, + { + "begin": 2544, + "end": 2555, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2544, + "end": 2555, + "name": "ADD", + "source": 20 + }, + { + "begin": 2544, + "end": 2562, + "name": "DUP1", + "source": 20 + }, + { + "begin": 2544, + "end": 2562, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 2544, + "end": 2562, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2544, + "end": 2562, + "name": "POP", + "source": 20 + }, + { + "begin": 2520, + "end": 2523, + "name": "DUP4", + "source": 20 + }, + { + "begin": 2520, + "end": 2534, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 2520, + "end": 2534, + "name": "ADD", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2535, + "end": 2540, + "name": "DUP5", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "DUP2", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 2520, + "end": 2541, + "name": "ADD", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "DUP2", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 2520, + "end": 2541, + "name": "ADD", + "source": 20 + }, + { + "begin": 2520, + "end": 2541, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2520, + "end": 2541, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 2520, + "end": 2562, + "name": "DUP2", + "source": 20 + }, + { + "begin": 2520, + "end": 2562, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2520, + "end": 2562, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 2520, + "end": 2562, + "name": "POP", + "source": 20 + }, + { + "begin": 2583, + "end": 2587, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 2576, + "end": 2587, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2576, + "end": 2587, + "name": "POP", + "source": 20 + }, + { + "begin": 2576, + "end": 2587, + "name": "PUSH [tag]", + "source": 20, + "value": "738" + }, + { + "begin": 2576, + "end": 2587, + "name": "JUMP", + "source": 20 + }, + { + "begin": 2320, + "end": 2641, + "name": "tag", + "source": 20, + "value": "740" + }, + { + "begin": 2320, + "end": 2641, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 2625, + "end": 2630, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2618, + "end": 2630, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2618, + "end": 2630, + "name": "POP", + "source": 20 + }, + { + "begin": 2241, + "end": 2647, + "name": "tag", + "source": 20, + "value": "738" + }, + { + "begin": 2241, + "end": 2647, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 2241, + "end": 2647, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 2241, + "end": 2647, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 2241, + "end": 2647, + "name": "POP", + "source": 20 + }, + { + "begin": 2241, + "end": 2647, + "name": "POP", + "source": 20 + }, + { + "begin": 2241, + "end": 2647, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 5797, + "end": 5927, + "name": "tag", + "source": 19, + "value": "632" + }, + { + "begin": 5797, + "end": 5927, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 5867, + "end": 5883, + "name": "PUSH", + "source": 19, + "value": "60" + }, + { + "begin": 5902, + "end": 5920, + "name": "PUSH [tag]", + "source": 19, + "value": "744" + }, + { + "begin": 5902, + "end": 5905, + "name": "DUP3", + "source": 19 + }, + { + "begin": 5902, + "end": 5911, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 5902, + "end": 5911, + "name": "ADD", + "source": 19 + }, + { + "begin": 5902, + "end": 5918, + "name": "PUSH [tag]", + "source": 19, + "value": "745" + }, + { + "begin": 5902, + "end": 5920, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 5902, + "end": 5920, + "name": "tag", + "source": 19, + "value": "744" + }, + { + "begin": 5902, + "end": 5920, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 5895, + "end": 5920, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 5895, + "end": 5920, + "name": "POP", + "source": 19 + }, + { + "begin": 5797, + "end": 5927, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 5797, + "end": 5927, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 5797, + "end": 5927, + "name": "POP", + "source": 19 + }, + { + "begin": 5797, + "end": 5927, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 1671, + "end": 1884, + "name": "tag", + "source": 33, + "value": "635" + }, + { + "begin": 1671, + "end": 1884, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 1727, + "end": 1734, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 595, + "end": 601, + "name": "PUSH", + "source": 29, + "value": "2710" + }, + { + "begin": 230, + "end": 233, + "name": "PUSH", + "source": 29, + "value": "80" + }, + { + "begin": 1796, + "end": 1838, + "name": "PUSH", + "source": 33, + "value": "FF" + }, + { + "begin": 1796, + "end": 1838, + "name": "AND", + "source": 33 + }, + { + "begin": 1804, + "end": 1811, + "name": "DUP4", + "source": 33 + }, + { + "begin": 1796, + "end": 1812, + "name": "PUSH", + "source": 33, + "value": "FFFF" + }, + { + "begin": 1796, + "end": 1812, + "name": "AND", + "source": 33 + }, + { + "begin": 1796, + "end": 1838, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 1796, + "end": 1838, + "name": "SHL", + "source": 33 + }, + { + "begin": 1795, + "end": 1867, + "name": "DUP2", + "source": 33 + }, + { + "begin": 1795, + "end": 1867, + "name": "PUSH [tag]", + "source": 33, + "value": "747" + }, + { + "begin": 1795, + "end": 1867, + "name": "JUMPI", + "source": 33 + }, + { + "begin": 1795, + "end": 1867, + "name": "PUSH [tag]", + "source": 33, + "value": "748" + }, + { + "begin": 1795, + "end": 1867, + "name": "PUSH [tag]", + "source": 33, + "value": "749" + }, + { + "begin": 1795, + "end": 1867, + "jumpType": "[in]", + "name": "JUMP", + "source": 33 + }, + { + "begin": 1795, + "end": 1867, + "name": "tag", + "source": 33, + "value": "748" + }, + { + "begin": 1795, + "end": 1867, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 1795, + "end": 1867, + "name": "tag", + "source": 33, + "value": "747" + }, + { + "begin": 1795, + "end": 1867, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 1795, + "end": 1867, + "name": "DIV", + "source": 33 + }, + { + "begin": 230, + "end": 233, + "name": "PUSH", + "source": 29, + "value": "80" + }, + { + "begin": 273, + "end": 290, + "name": "PUSH", + "source": 29, + "value": "FF" + }, + { + "begin": 273, + "end": 290, + "name": "AND", + "source": 29 + }, + { + "begin": 273, + "end": 274, + "name": "PUSH", + "source": 29, + "value": "1" + }, + { + "begin": 273, + "end": 290, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 273, + "end": 290, + "name": "SHL", + "source": 29 + }, + { + "begin": 1777, + "end": 1867, + "name": "ADD", + "source": 33 + }, + { + "begin": 1770, + "end": 1867, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 1770, + "end": 1867, + "name": "POP", + "source": 33 + }, + { + "begin": 1671, + "end": 1884, + "name": "SWAP2", + "source": 33 + }, + { + "begin": 1671, + "end": 1884, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 1671, + "end": 1884, + "name": "POP", + "source": 33 + }, + { + "begin": 1671, + "end": 1884, + "jumpType": "[out]", + "name": "JUMP", + "source": 33 + }, + { + "begin": 2046, + "end": 2202, + "name": "tag", + "source": 33, + "value": "637" + }, + { + "begin": 2046, + "end": 2202, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 2101, + "end": 2107, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 563, + "end": 570, + "name": "PUSH", + "source": 33, + "value": "800000" + }, + { + "begin": 2165, + "end": 2167, + "name": "DUP3", + "source": 33 + }, + { + "begin": 2157, + "end": 2168, + "name": "PUSH", + "source": 33, + "value": "FFFFFF" + }, + { + "begin": 2157, + "end": 2168, + "name": "AND", + "source": 33 + }, + { + "begin": 2150, + "end": 2185, + "name": "SUB", + "source": 33 + }, + { + "begin": 2143, + "end": 2185, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 2143, + "end": 2185, + "name": "POP", + "source": 33 + }, + { + "begin": 2046, + "end": 2202, + "name": "SWAP2", + "source": 33 + }, + { + "begin": 2046, + "end": 2202, + "name": "SWAP1", + "source": 33 + }, + { + "begin": 2046, + "end": 2202, + "name": "POP", + "source": 33 + }, + { + "begin": 2046, + "end": 2202, + "jumpType": "[out]", + "name": "JUMP", + "source": 33 + }, + { + "begin": 4085, + "end": 7685, + "name": "tag", + "source": 38, + "value": "639" + }, + { + "begin": 4085, + "end": 7685, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4142, + "end": 4156, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 4168, + "end": 4179, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4189, + "end": 4201, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 4221, + "end": 4222, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4216, + "end": 4217, + "name": "DUP5", + "source": 38 + }, + { + "begin": 4216, + "end": 4222, + "name": "SUB", + "source": 38 + }, + { + "begin": 4212, + "end": 4246, + "name": "PUSH [tag]", + "source": 38, + "value": "752" + }, + { + "begin": 4212, + "end": 4246, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 230, + "end": 233, + "name": "PUSH", + "source": 29, + "value": "80" + }, + { + "begin": 273, + "end": 290, + "name": "PUSH", + "source": 29, + "value": "FF" + }, + { + "begin": 273, + "end": 290, + "name": "AND", + "source": 29 + }, + { + "begin": 273, + "end": 274, + "name": "PUSH", + "source": 29, + "value": "1" + }, + { + "begin": 273, + "end": 290, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 273, + "end": 290, + "name": "SHL", + "source": 29 + }, + { + "begin": 4224, + "end": 4246, + "name": "SWAP3", + "source": 38 + }, + { + "begin": 4224, + "end": 4246, + "name": "POP", + "source": 38 + }, + { + "begin": 4224, + "end": 4246, + "name": "POP", + "source": 38 + }, + { + "begin": 4224, + "end": 4246, + "name": "POP", + "source": 38 + }, + { + "begin": 4224, + "end": 4246, + "name": "PUSH [tag]", + "source": 38, + "value": "751" + }, + { + "begin": 4224, + "end": 4246, + "name": "JUMP", + "source": 38 + }, + { + "begin": 4212, + "end": 4246, + "name": "tag", + "source": 38, + "value": "752" + }, + { + "begin": 4212, + "end": 4246, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4288, + "end": 4289, + "name": "DUP4", + "source": 38 + }, + { + "begin": 4280, + "end": 4289, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 4280, + "end": 4289, + "name": "POP", + "source": 38 + }, + { + "begin": 4315, + "end": 4316, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 4309, + "end": 4313, + "name": "DUP2", + "source": 38 + }, + { + "begin": 4305, + "end": 4317, + "name": "SLT", + "source": 38 + }, + { + "begin": 4302, + "end": 4411, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 4302, + "end": 4411, + "name": "PUSH [tag]", + "source": 38, + "value": "753" + }, + { + "begin": 4302, + "end": 4411, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 4351, + "end": 4355, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4348, + "end": 4349, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 4344, + "end": 4356, + "name": "SUB", + "source": 38 + }, + { + "begin": 4336, + "end": 4356, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 4336, + "end": 4356, + "name": "POP", + "source": 38 + }, + { + "begin": 4390, + "end": 4396, + "name": "DUP2", + "source": 38 + }, + { + "begin": 4383, + "end": 4397, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 4373, + "end": 4397, + "name": "SWAP2", + "source": 38 + }, + { + "begin": 4373, + "end": 4397, + "name": "POP", + "source": 38 + }, + { + "begin": 4302, + "end": 4411, + "name": "tag", + "source": 38, + "value": "753" + }, + { + "begin": 4302, + "end": 4411, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4442, + "end": 4450, + "name": "PUSH", + "source": 38, + "value": "100000" + }, + { + "begin": 4435, + "end": 4439, + "name": "DUP2", + "source": 38 + }, + { + "begin": 4435, + "end": 4450, + "name": "LT", + "source": 38 + }, + { + "begin": 4431, + "end": 7491, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 4431, + "end": 7491, + "name": "PUSH [tag]", + "source": 38, + "value": "754" + }, + { + "begin": 4431, + "end": 7491, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 230, + "end": 233, + "name": "PUSH", + "source": 29, + "value": "80" + }, + { + "begin": 273, + "end": 290, + "name": "PUSH", + "source": 29, + "value": "FF" + }, + { + "begin": 273, + "end": 290, + "name": "AND", + "source": 29 + }, + { + "begin": 273, + "end": 274, + "name": "PUSH", + "source": 29, + "value": "1" + }, + { + "begin": 273, + "end": 290, + "name": "SWAP1", + "source": 29 + }, + { + "begin": 273, + "end": 290, + "name": "SHL", + "source": 29 + }, + { + "begin": 4466, + "end": 4490, + "name": "SWAP3", + "source": 38 + }, + { + "begin": 4466, + "end": 4490, + "name": "POP", + "source": 38 + }, + { + "begin": 4546, + "end": 4547, + "name": "DUP5", + "source": 38 + }, + { + "begin": 4573, + "end": 4607, + "name": "PUSH", + "source": 38, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4570, + "end": 4571, + "name": "DUP7", + "source": 38 + }, + { + "begin": 4567, + "end": 4608, + "name": "GT", + "source": 38 + }, + { + "begin": 4564, + "end": 4725, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 4564, + "end": 4725, + "name": "PUSH [tag]", + "source": 38, + "value": "755" + }, + { + "begin": 4564, + "end": 4725, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 4654, + "end": 4661, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4650, + "end": 4651, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 4646, + "end": 4652, + "name": "NOT", + "source": 38 + }, + { + "begin": 4642, + "end": 4662, + "name": "DIV", + "source": 38 + }, + { + "begin": 4631, + "end": 4662, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 4631, + "end": 4662, + "name": "POP", + "source": 38 + }, + { + "begin": 4700, + "end": 4706, + "name": "DUP3", + "source": 38 + }, + { + "begin": 4693, + "end": 4707, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 4683, + "end": 4707, + "name": "SWAP3", + "source": 38 + }, + { + "begin": 4683, + "end": 4707, + "name": "POP", + "source": 38 + }, + { + "begin": 4564, + "end": 4725, + "name": "tag", + "source": 38, + "value": "755" + }, + { + "begin": 4564, + "end": 4725, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4756, + "end": 4759, + "name": "PUSH", + "source": 38, + "value": "1" + }, + { + "begin": 4750, + "end": 4754, + "name": "DUP3", + "source": 38 + }, + { + "begin": 4746, + "end": 4760, + "name": "AND", + "source": 38 + }, + { + "begin": 4743, + "end": 4805, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 4743, + "end": 4805, + "name": "PUSH [tag]", + "source": 38, + "value": "756" + }, + { + "begin": 4743, + "end": 4805, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 4794, + "end": 4801, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4786, + "end": 4792, + "name": "DUP5", + "source": 38 + }, + { + "begin": 4782, + "end": 4802, + "name": "MUL", + "source": 38 + }, + { + "begin": 4777, + "end": 4780, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 4773, + "end": 4803, + "name": "SHR", + "source": 38 + }, + { + "begin": 4763, + "end": 4803, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 4763, + "end": 4803, + "name": "POP", + "source": 38 + }, + { + "begin": 4743, + "end": 4805, + "name": "tag", + "source": 38, + "value": "756" + }, + { + "begin": 4743, + "end": 4805, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4855, + "end": 4862, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4846, + "end": 4853, + "name": "DUP2", + "source": 38 + }, + { + "begin": 4842, + "end": 4863, + "name": "MUL", + "source": 38 + }, + { + "begin": 4837, + "end": 4840, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 4833, + "end": 4864, + "name": "SHR", + "source": 38 + }, + { + "begin": 4822, + "end": 4864, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 4822, + "end": 4864, + "name": "POP", + "source": 38 + }, + { + "begin": 4894, + "end": 4897, + "name": "PUSH", + "source": 38, + "value": "2" + }, + { + "begin": 4888, + "end": 4892, + "name": "DUP3", + "source": 38 + }, + { + "begin": 4884, + "end": 4898, + "name": "AND", + "source": 38 + }, + { + "begin": 4881, + "end": 4943, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 4881, + "end": 4943, + "name": "PUSH [tag]", + "source": 38, + "value": "757" + }, + { + "begin": 4881, + "end": 4943, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 4932, + "end": 4939, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4924, + "end": 4930, + "name": "DUP5", + "source": 38 + }, + { + "begin": 4920, + "end": 4940, + "name": "MUL", + "source": 38 + }, + { + "begin": 4915, + "end": 4918, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 4911, + "end": 4941, + "name": "SHR", + "source": 38 + }, + { + "begin": 4901, + "end": 4941, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 4901, + "end": 4941, + "name": "POP", + "source": 38 + }, + { + "begin": 4881, + "end": 4943, + "name": "tag", + "source": 38, + "value": "757" + }, + { + "begin": 4881, + "end": 4943, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4993, + "end": 5000, + "name": "DUP1", + "source": 38 + }, + { + "begin": 4984, + "end": 4991, + "name": "DUP2", + "source": 38 + }, + { + "begin": 4980, + "end": 5001, + "name": "MUL", + "source": 38 + }, + { + "begin": 4975, + "end": 4978, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 4971, + "end": 5002, + "name": "SHR", + "source": 38 + }, + { + "begin": 4960, + "end": 5002, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 4960, + "end": 5002, + "name": "POP", + "source": 38 + }, + { + "begin": 5032, + "end": 5035, + "name": "PUSH", + "source": 38, + "value": "4" + }, + { + "begin": 5026, + "end": 5030, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5022, + "end": 5036, + "name": "AND", + "source": 38 + }, + { + "begin": 5019, + "end": 5081, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5019, + "end": 5081, + "name": "PUSH [tag]", + "source": 38, + "value": "758" + }, + { + "begin": 5019, + "end": 5081, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 5070, + "end": 5077, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5062, + "end": 5068, + "name": "DUP5", + "source": 38 + }, + { + "begin": 5058, + "end": 5078, + "name": "MUL", + "source": 38 + }, + { + "begin": 5053, + "end": 5056, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5049, + "end": 5079, + "name": "SHR", + "source": 38 + }, + { + "begin": 5039, + "end": 5079, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 5039, + "end": 5079, + "name": "POP", + "source": 38 + }, + { + "begin": 5019, + "end": 5081, + "name": "tag", + "source": 38, + "value": "758" + }, + { + "begin": 5019, + "end": 5081, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 5131, + "end": 5138, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5122, + "end": 5129, + "name": "DUP2", + "source": 38 + }, + { + "begin": 5118, + "end": 5139, + "name": "MUL", + "source": 38 + }, + { + "begin": 5113, + "end": 5116, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5109, + "end": 5140, + "name": "SHR", + "source": 38 + }, + { + "begin": 5098, + "end": 5140, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 5098, + "end": 5140, + "name": "POP", + "source": 38 + }, + { + "begin": 5170, + "end": 5173, + "name": "PUSH", + "source": 38, + "value": "8" + }, + { + "begin": 5164, + "end": 5168, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5160, + "end": 5174, + "name": "AND", + "source": 38 + }, + { + "begin": 5157, + "end": 5219, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5157, + "end": 5219, + "name": "PUSH [tag]", + "source": 38, + "value": "759" + }, + { + "begin": 5157, + "end": 5219, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 5208, + "end": 5215, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5200, + "end": 5206, + "name": "DUP5", + "source": 38 + }, + { + "begin": 5196, + "end": 5216, + "name": "MUL", + "source": 38 + }, + { + "begin": 5191, + "end": 5194, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5187, + "end": 5217, + "name": "SHR", + "source": 38 + }, + { + "begin": 5177, + "end": 5217, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 5177, + "end": 5217, + "name": "POP", + "source": 38 + }, + { + "begin": 5157, + "end": 5219, + "name": "tag", + "source": 38, + "value": "759" + }, + { + "begin": 5157, + "end": 5219, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 5269, + "end": 5276, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5260, + "end": 5267, + "name": "DUP2", + "source": 38 + }, + { + "begin": 5256, + "end": 5277, + "name": "MUL", + "source": 38 + }, + { + "begin": 5251, + "end": 5254, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5247, + "end": 5278, + "name": "SHR", + "source": 38 + }, + { + "begin": 5236, + "end": 5278, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 5236, + "end": 5278, + "name": "POP", + "source": 38 + }, + { + "begin": 5308, + "end": 5312, + "name": "PUSH", + "source": 38, + "value": "10" + }, + { + "begin": 5302, + "end": 5306, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5298, + "end": 5313, + "name": "AND", + "source": 38 + }, + { + "begin": 5295, + "end": 5358, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5295, + "end": 5358, + "name": "PUSH [tag]", + "source": 38, + "value": "760" + }, + { + "begin": 5295, + "end": 5358, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 5347, + "end": 5354, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5339, + "end": 5345, + "name": "DUP5", + "source": 38 + }, + { + "begin": 5335, + "end": 5355, + "name": "MUL", + "source": 38 + }, + { + "begin": 5330, + "end": 5333, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5326, + "end": 5356, + "name": "SHR", + "source": 38 + }, + { + "begin": 5316, + "end": 5356, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 5316, + "end": 5356, + "name": "POP", + "source": 38 + }, + { + "begin": 5295, + "end": 5358, + "name": "tag", + "source": 38, + "value": "760" + }, + { + "begin": 5295, + "end": 5358, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 5408, + "end": 5415, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5399, + "end": 5406, + "name": "DUP2", + "source": 38 + }, + { + "begin": 5395, + "end": 5416, + "name": "MUL", + "source": 38 + }, + { + "begin": 5390, + "end": 5393, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5386, + "end": 5417, + "name": "SHR", + "source": 38 + }, + { + "begin": 5375, + "end": 5417, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 5375, + "end": 5417, + "name": "POP", + "source": 38 + }, + { + "begin": 5447, + "end": 5451, + "name": "PUSH", + "source": 38, + "value": "20" + }, + { + "begin": 5441, + "end": 5445, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5437, + "end": 5452, + "name": "AND", + "source": 38 + }, + { + "begin": 5434, + "end": 5497, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5434, + "end": 5497, + "name": "PUSH [tag]", + "source": 38, + "value": "761" + }, + { + "begin": 5434, + "end": 5497, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 5486, + "end": 5493, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5478, + "end": 5484, + "name": "DUP5", + "source": 38 + }, + { + "begin": 5474, + "end": 5494, + "name": "MUL", + "source": 38 + }, + { + "begin": 5469, + "end": 5472, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5465, + "end": 5495, + "name": "SHR", + "source": 38 + }, + { + "begin": 5455, + "end": 5495, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 5455, + "end": 5495, + "name": "POP", + "source": 38 + }, + { + "begin": 5434, + "end": 5497, + "name": "tag", + "source": 38, + "value": "761" + }, + { + "begin": 5434, + "end": 5497, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 5547, + "end": 5554, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5538, + "end": 5545, + "name": "DUP2", + "source": 38 + }, + { + "begin": 5534, + "end": 5555, + "name": "MUL", + "source": 38 + }, + { + "begin": 5529, + "end": 5532, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5525, + "end": 5556, + "name": "SHR", + "source": 38 + }, + { + "begin": 5514, + "end": 5556, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 5514, + "end": 5556, + "name": "POP", + "source": 38 + }, + { + "begin": 5586, + "end": 5590, + "name": "PUSH", + "source": 38, + "value": "40" + }, + { + "begin": 5580, + "end": 5584, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5576, + "end": 5591, + "name": "AND", + "source": 38 + }, + { + "begin": 5573, + "end": 5636, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5573, + "end": 5636, + "name": "PUSH [tag]", + "source": 38, + "value": "762" + }, + { + "begin": 5573, + "end": 5636, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 5625, + "end": 5632, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5617, + "end": 5623, + "name": "DUP5", + "source": 38 + }, + { + "begin": 5613, + "end": 5633, + "name": "MUL", + "source": 38 + }, + { + "begin": 5608, + "end": 5611, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5604, + "end": 5634, + "name": "SHR", + "source": 38 + }, + { + "begin": 5594, + "end": 5634, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 5594, + "end": 5634, + "name": "POP", + "source": 38 + }, + { + "begin": 5573, + "end": 5636, + "name": "tag", + "source": 38, + "value": "762" + }, + { + "begin": 5573, + "end": 5636, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 5686, + "end": 5693, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5677, + "end": 5684, + "name": "DUP2", + "source": 38 + }, + { + "begin": 5673, + "end": 5694, + "name": "MUL", + "source": 38 + }, + { + "begin": 5668, + "end": 5671, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5664, + "end": 5695, + "name": "SHR", + "source": 38 + }, + { + "begin": 5653, + "end": 5695, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 5653, + "end": 5695, + "name": "POP", + "source": 38 + }, + { + "begin": 5725, + "end": 5729, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5719, + "end": 5723, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5715, + "end": 5730, + "name": "AND", + "source": 38 + }, + { + "begin": 5712, + "end": 5775, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5712, + "end": 5775, + "name": "PUSH [tag]", + "source": 38, + "value": "763" + }, + { + "begin": 5712, + "end": 5775, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 5764, + "end": 5771, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5756, + "end": 5762, + "name": "DUP5", + "source": 38 + }, + { + "begin": 5752, + "end": 5772, + "name": "MUL", + "source": 38 + }, + { + "begin": 5747, + "end": 5750, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5743, + "end": 5773, + "name": "SHR", + "source": 38 + }, + { + "begin": 5733, + "end": 5773, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 5733, + "end": 5773, + "name": "POP", + "source": 38 + }, + { + "begin": 5712, + "end": 5775, + "name": "tag", + "source": 38, + "value": "763" + }, + { + "begin": 5712, + "end": 5775, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 5825, + "end": 5832, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5816, + "end": 5823, + "name": "DUP2", + "source": 38 + }, + { + "begin": 5812, + "end": 5833, + "name": "MUL", + "source": 38 + }, + { + "begin": 5807, + "end": 5810, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5803, + "end": 5834, + "name": "SHR", + "source": 38 + }, + { + "begin": 5792, + "end": 5834, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 5792, + "end": 5834, + "name": "POP", + "source": 38 + }, + { + "begin": 5864, + "end": 5869, + "name": "PUSH", + "source": 38, + "value": "100" + }, + { + "begin": 5858, + "end": 5862, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5854, + "end": 5870, + "name": "AND", + "source": 38 + }, + { + "begin": 5851, + "end": 5915, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5851, + "end": 5915, + "name": "PUSH [tag]", + "source": 38, + "value": "764" + }, + { + "begin": 5851, + "end": 5915, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 5904, + "end": 5911, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5896, + "end": 5902, + "name": "DUP5", + "source": 38 + }, + { + "begin": 5892, + "end": 5912, + "name": "MUL", + "source": 38 + }, + { + "begin": 5887, + "end": 5890, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5883, + "end": 5913, + "name": "SHR", + "source": 38 + }, + { + "begin": 5873, + "end": 5913, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 5873, + "end": 5913, + "name": "POP", + "source": 38 + }, + { + "begin": 5851, + "end": 5915, + "name": "tag", + "source": 38, + "value": "764" + }, + { + "begin": 5851, + "end": 5915, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 5965, + "end": 5972, + "name": "DUP1", + "source": 38 + }, + { + "begin": 5956, + "end": 5963, + "name": "DUP2", + "source": 38 + }, + { + "begin": 5952, + "end": 5973, + "name": "MUL", + "source": 38 + }, + { + "begin": 5947, + "end": 5950, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 5943, + "end": 5974, + "name": "SHR", + "source": 38 + }, + { + "begin": 5932, + "end": 5974, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 5932, + "end": 5974, + "name": "POP", + "source": 38 + }, + { + "begin": 6004, + "end": 6009, + "name": "PUSH", + "source": 38, + "value": "200" + }, + { + "begin": 5998, + "end": 6002, + "name": "DUP3", + "source": 38 + }, + { + "begin": 5994, + "end": 6010, + "name": "AND", + "source": 38 + }, + { + "begin": 5991, + "end": 6055, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 5991, + "end": 6055, + "name": "PUSH [tag]", + "source": 38, + "value": "765" + }, + { + "begin": 5991, + "end": 6055, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 6044, + "end": 6051, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6036, + "end": 6042, + "name": "DUP5", + "source": 38 + }, + { + "begin": 6032, + "end": 6052, + "name": "MUL", + "source": 38 + }, + { + "begin": 6027, + "end": 6030, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6023, + "end": 6053, + "name": "SHR", + "source": 38 + }, + { + "begin": 6013, + "end": 6053, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6013, + "end": 6053, + "name": "POP", + "source": 38 + }, + { + "begin": 5991, + "end": 6055, + "name": "tag", + "source": 38, + "value": "765" + }, + { + "begin": 5991, + "end": 6055, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 6105, + "end": 6112, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6096, + "end": 6103, + "name": "DUP2", + "source": 38 + }, + { + "begin": 6092, + "end": 6113, + "name": "MUL", + "source": 38 + }, + { + "begin": 6087, + "end": 6090, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6083, + "end": 6114, + "name": "SHR", + "source": 38 + }, + { + "begin": 6072, + "end": 6114, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 6072, + "end": 6114, + "name": "POP", + "source": 38 + }, + { + "begin": 6144, + "end": 6149, + "name": "PUSH", + "source": 38, + "value": "400" + }, + { + "begin": 6138, + "end": 6142, + "name": "DUP3", + "source": 38 + }, + { + "begin": 6134, + "end": 6150, + "name": "AND", + "source": 38 + }, + { + "begin": 6131, + "end": 6195, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 6131, + "end": 6195, + "name": "PUSH [tag]", + "source": 38, + "value": "766" + }, + { + "begin": 6131, + "end": 6195, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 6184, + "end": 6191, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6176, + "end": 6182, + "name": "DUP5", + "source": 38 + }, + { + "begin": 6172, + "end": 6192, + "name": "MUL", + "source": 38 + }, + { + "begin": 6167, + "end": 6170, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6163, + "end": 6193, + "name": "SHR", + "source": 38 + }, + { + "begin": 6153, + "end": 6193, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6153, + "end": 6193, + "name": "POP", + "source": 38 + }, + { + "begin": 6131, + "end": 6195, + "name": "tag", + "source": 38, + "value": "766" + }, + { + "begin": 6131, + "end": 6195, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 6245, + "end": 6252, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6236, + "end": 6243, + "name": "DUP2", + "source": 38 + }, + { + "begin": 6232, + "end": 6253, + "name": "MUL", + "source": 38 + }, + { + "begin": 6227, + "end": 6230, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6223, + "end": 6254, + "name": "SHR", + "source": 38 + }, + { + "begin": 6212, + "end": 6254, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 6212, + "end": 6254, + "name": "POP", + "source": 38 + }, + { + "begin": 6284, + "end": 6289, + "name": "PUSH", + "source": 38, + "value": "800" + }, + { + "begin": 6278, + "end": 6282, + "name": "DUP3", + "source": 38 + }, + { + "begin": 6274, + "end": 6290, + "name": "AND", + "source": 38 + }, + { + "begin": 6271, + "end": 6335, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 6271, + "end": 6335, + "name": "PUSH [tag]", + "source": 38, + "value": "767" + }, + { + "begin": 6271, + "end": 6335, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 6324, + "end": 6331, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6316, + "end": 6322, + "name": "DUP5", + "source": 38 + }, + { + "begin": 6312, + "end": 6332, + "name": "MUL", + "source": 38 + }, + { + "begin": 6307, + "end": 6310, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6303, + "end": 6333, + "name": "SHR", + "source": 38 + }, + { + "begin": 6293, + "end": 6333, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6293, + "end": 6333, + "name": "POP", + "source": 38 + }, + { + "begin": 6271, + "end": 6335, + "name": "tag", + "source": 38, + "value": "767" + }, + { + "begin": 6271, + "end": 6335, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 6385, + "end": 6392, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6376, + "end": 6383, + "name": "DUP2", + "source": 38 + }, + { + "begin": 6372, + "end": 6393, + "name": "MUL", + "source": 38 + }, + { + "begin": 6367, + "end": 6370, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6363, + "end": 6394, + "name": "SHR", + "source": 38 + }, + { + "begin": 6352, + "end": 6394, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 6352, + "end": 6394, + "name": "POP", + "source": 38 + }, + { + "begin": 6424, + "end": 6430, + "name": "PUSH", + "source": 38, + "value": "1000" + }, + { + "begin": 6418, + "end": 6422, + "name": "DUP3", + "source": 38 + }, + { + "begin": 6414, + "end": 6431, + "name": "AND", + "source": 38 + }, + { + "begin": 6411, + "end": 6476, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 6411, + "end": 6476, + "name": "PUSH [tag]", + "source": 38, + "value": "768" + }, + { + "begin": 6411, + "end": 6476, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 6465, + "end": 6472, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6457, + "end": 6463, + "name": "DUP5", + "source": 38 + }, + { + "begin": 6453, + "end": 6473, + "name": "MUL", + "source": 38 + }, + { + "begin": 6448, + "end": 6451, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6444, + "end": 6474, + "name": "SHR", + "source": 38 + }, + { + "begin": 6434, + "end": 6474, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6434, + "end": 6474, + "name": "POP", + "source": 38 + }, + { + "begin": 6411, + "end": 6476, + "name": "tag", + "source": 38, + "value": "768" + }, + { + "begin": 6411, + "end": 6476, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 6526, + "end": 6533, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6517, + "end": 6524, + "name": "DUP2", + "source": 38 + }, + { + "begin": 6513, + "end": 6534, + "name": "MUL", + "source": 38 + }, + { + "begin": 6508, + "end": 6511, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6504, + "end": 6535, + "name": "SHR", + "source": 38 + }, + { + "begin": 6493, + "end": 6535, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 6493, + "end": 6535, + "name": "POP", + "source": 38 + }, + { + "begin": 6565, + "end": 6571, + "name": "PUSH", + "source": 38, + "value": "2000" + }, + { + "begin": 6559, + "end": 6563, + "name": "DUP3", + "source": 38 + }, + { + "begin": 6555, + "end": 6572, + "name": "AND", + "source": 38 + }, + { + "begin": 6552, + "end": 6617, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 6552, + "end": 6617, + "name": "PUSH [tag]", + "source": 38, + "value": "769" + }, + { + "begin": 6552, + "end": 6617, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 6606, + "end": 6613, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6598, + "end": 6604, + "name": "DUP5", + "source": 38 + }, + { + "begin": 6594, + "end": 6614, + "name": "MUL", + "source": 38 + }, + { + "begin": 6589, + "end": 6592, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6585, + "end": 6615, + "name": "SHR", + "source": 38 + }, + { + "begin": 6575, + "end": 6615, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6575, + "end": 6615, + "name": "POP", + "source": 38 + }, + { + "begin": 6552, + "end": 6617, + "name": "tag", + "source": 38, + "value": "769" + }, + { + "begin": 6552, + "end": 6617, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 6667, + "end": 6674, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6658, + "end": 6665, + "name": "DUP2", + "source": 38 + }, + { + "begin": 6654, + "end": 6675, + "name": "MUL", + "source": 38 + }, + { + "begin": 6649, + "end": 6652, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6645, + "end": 6676, + "name": "SHR", + "source": 38 + }, + { + "begin": 6634, + "end": 6676, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 6634, + "end": 6676, + "name": "POP", + "source": 38 + }, + { + "begin": 6706, + "end": 6712, + "name": "PUSH", + "source": 38, + "value": "4000" + }, + { + "begin": 6700, + "end": 6704, + "name": "DUP3", + "source": 38 + }, + { + "begin": 6696, + "end": 6713, + "name": "AND", + "source": 38 + }, + { + "begin": 6693, + "end": 6758, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 6693, + "end": 6758, + "name": "PUSH [tag]", + "source": 38, + "value": "770" + }, + { + "begin": 6693, + "end": 6758, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 6747, + "end": 6754, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6739, + "end": 6745, + "name": "DUP5", + "source": 38 + }, + { + "begin": 6735, + "end": 6755, + "name": "MUL", + "source": 38 + }, + { + "begin": 6730, + "end": 6733, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6726, + "end": 6756, + "name": "SHR", + "source": 38 + }, + { + "begin": 6716, + "end": 6756, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6716, + "end": 6756, + "name": "POP", + "source": 38 + }, + { + "begin": 6693, + "end": 6758, + "name": "tag", + "source": 38, + "value": "770" + }, + { + "begin": 6693, + "end": 6758, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 6808, + "end": 6815, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6799, + "end": 6806, + "name": "DUP2", + "source": 38 + }, + { + "begin": 6795, + "end": 6816, + "name": "MUL", + "source": 38 + }, + { + "begin": 6790, + "end": 6793, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6786, + "end": 6817, + "name": "SHR", + "source": 38 + }, + { + "begin": 6775, + "end": 6817, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 6775, + "end": 6817, + "name": "POP", + "source": 38 + }, + { + "begin": 6847, + "end": 6853, + "name": "PUSH", + "source": 38, + "value": "8000" + }, + { + "begin": 6841, + "end": 6845, + "name": "DUP3", + "source": 38 + }, + { + "begin": 6837, + "end": 6854, + "name": "AND", + "source": 38 + }, + { + "begin": 6834, + "end": 6899, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 6834, + "end": 6899, + "name": "PUSH [tag]", + "source": 38, + "value": "771" + }, + { + "begin": 6834, + "end": 6899, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 6888, + "end": 6895, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6880, + "end": 6886, + "name": "DUP5", + "source": 38 + }, + { + "begin": 6876, + "end": 6896, + "name": "MUL", + "source": 38 + }, + { + "begin": 6871, + "end": 6874, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6867, + "end": 6897, + "name": "SHR", + "source": 38 + }, + { + "begin": 6857, + "end": 6897, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6857, + "end": 6897, + "name": "POP", + "source": 38 + }, + { + "begin": 6834, + "end": 6899, + "name": "tag", + "source": 38, + "value": "771" + }, + { + "begin": 6834, + "end": 6899, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 6949, + "end": 6956, + "name": "DUP1", + "source": 38 + }, + { + "begin": 6940, + "end": 6947, + "name": "DUP2", + "source": 38 + }, + { + "begin": 6936, + "end": 6957, + "name": "MUL", + "source": 38 + }, + { + "begin": 6931, + "end": 6934, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 6927, + "end": 6958, + "name": "SHR", + "source": 38 + }, + { + "begin": 6916, + "end": 6958, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 6916, + "end": 6958, + "name": "POP", + "source": 38 + }, + { + "begin": 6988, + "end": 6995, + "name": "PUSH", + "source": 38, + "value": "10000" + }, + { + "begin": 6982, + "end": 6986, + "name": "DUP3", + "source": 38 + }, + { + "begin": 6978, + "end": 6996, + "name": "AND", + "source": 38 + }, + { + "begin": 6975, + "end": 7041, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 6975, + "end": 7041, + "name": "PUSH [tag]", + "source": 38, + "value": "772" + }, + { + "begin": 6975, + "end": 7041, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 7030, + "end": 7037, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7022, + "end": 7028, + "name": "DUP5", + "source": 38 + }, + { + "begin": 7018, + "end": 7038, + "name": "MUL", + "source": 38 + }, + { + "begin": 7013, + "end": 7016, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 7009, + "end": 7039, + "name": "SHR", + "source": 38 + }, + { + "begin": 6999, + "end": 7039, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 6999, + "end": 7039, + "name": "POP", + "source": 38 + }, + { + "begin": 6975, + "end": 7041, + "name": "tag", + "source": 38, + "value": "772" + }, + { + "begin": 6975, + "end": 7041, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7091, + "end": 7098, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7082, + "end": 7089, + "name": "DUP2", + "source": 38 + }, + { + "begin": 7078, + "end": 7099, + "name": "MUL", + "source": 38 + }, + { + "begin": 7073, + "end": 7076, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 7069, + "end": 7100, + "name": "SHR", + "source": 38 + }, + { + "begin": 7058, + "end": 7100, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 7058, + "end": 7100, + "name": "POP", + "source": 38 + }, + { + "begin": 7130, + "end": 7137, + "name": "PUSH", + "source": 38, + "value": "20000" + }, + { + "begin": 7124, + "end": 7128, + "name": "DUP3", + "source": 38 + }, + { + "begin": 7120, + "end": 7138, + "name": "AND", + "source": 38 + }, + { + "begin": 7117, + "end": 7183, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 7117, + "end": 7183, + "name": "PUSH [tag]", + "source": 38, + "value": "773" + }, + { + "begin": 7117, + "end": 7183, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 7172, + "end": 7179, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7164, + "end": 7170, + "name": "DUP5", + "source": 38 + }, + { + "begin": 7160, + "end": 7180, + "name": "MUL", + "source": 38 + }, + { + "begin": 7155, + "end": 7158, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 7151, + "end": 7181, + "name": "SHR", + "source": 38 + }, + { + "begin": 7141, + "end": 7181, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 7141, + "end": 7181, + "name": "POP", + "source": 38 + }, + { + "begin": 7117, + "end": 7183, + "name": "tag", + "source": 38, + "value": "773" + }, + { + "begin": 7117, + "end": 7183, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7233, + "end": 7240, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7224, + "end": 7231, + "name": "DUP2", + "source": 38 + }, + { + "begin": 7220, + "end": 7241, + "name": "MUL", + "source": 38 + }, + { + "begin": 7215, + "end": 7218, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 7211, + "end": 7242, + "name": "SHR", + "source": 38 + }, + { + "begin": 7200, + "end": 7242, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 7200, + "end": 7242, + "name": "POP", + "source": 38 + }, + { + "begin": 7272, + "end": 7279, + "name": "PUSH", + "source": 38, + "value": "40000" + }, + { + "begin": 7266, + "end": 7270, + "name": "DUP3", + "source": 38 + }, + { + "begin": 7262, + "end": 7280, + "name": "AND", + "source": 38 + }, + { + "begin": 7259, + "end": 7325, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 7259, + "end": 7325, + "name": "PUSH [tag]", + "source": 38, + "value": "774" + }, + { + "begin": 7259, + "end": 7325, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 7314, + "end": 7321, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7306, + "end": 7312, + "name": "DUP5", + "source": 38 + }, + { + "begin": 7302, + "end": 7322, + "name": "MUL", + "source": 38 + }, + { + "begin": 7297, + "end": 7300, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 7293, + "end": 7323, + "name": "SHR", + "source": 38 + }, + { + "begin": 7283, + "end": 7323, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 7283, + "end": 7323, + "name": "POP", + "source": 38 + }, + { + "begin": 7259, + "end": 7325, + "name": "tag", + "source": 38, + "value": "774" + }, + { + "begin": 7259, + "end": 7325, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7375, + "end": 7382, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7366, + "end": 7373, + "name": "DUP2", + "source": 38 + }, + { + "begin": 7362, + "end": 7383, + "name": "MUL", + "source": 38 + }, + { + "begin": 7357, + "end": 7360, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 7353, + "end": 7384, + "name": "SHR", + "source": 38 + }, + { + "begin": 7342, + "end": 7384, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 7342, + "end": 7384, + "name": "POP", + "source": 38 + }, + { + "begin": 7414, + "end": 7421, + "name": "PUSH", + "source": 38, + "value": "80000" + }, + { + "begin": 7408, + "end": 7412, + "name": "DUP3", + "source": 38 + }, + { + "begin": 7404, + "end": 7422, + "name": "AND", + "source": 38 + }, + { + "begin": 7401, + "end": 7467, + "name": "ISZERO", + "source": 38 + }, + { + "begin": 7401, + "end": 7467, + "name": "PUSH [tag]", + "source": 38, + "value": "775" + }, + { + "begin": 7401, + "end": 7467, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 7456, + "end": 7463, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7448, + "end": 7454, + "name": "DUP5", + "source": 38 + }, + { + "begin": 7444, + "end": 7464, + "name": "MUL", + "source": 38 + }, + { + "begin": 7439, + "end": 7442, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 7435, + "end": 7465, + "name": "SHR", + "source": 38 + }, + { + "begin": 7425, + "end": 7465, + "name": "SWAP4", + "source": 38 + }, + { + "begin": 7425, + "end": 7465, + "name": "POP", + "source": 38 + }, + { + "begin": 7401, + "end": 7467, + "name": "tag", + "source": 38, + "value": "775" + }, + { + "begin": 7401, + "end": 7467, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4513, + "end": 7481, + "name": "POP", + "source": 38 + }, + { + "begin": 4431, + "end": 7491, + "name": "tag", + "source": 38, + "value": "754" + }, + { + "begin": 4431, + "end": 7491, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7571, + "end": 7572, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 7561, + "end": 7567, + "name": "DUP4", + "source": 38 + }, + { + "begin": 7561, + "end": 7572, + "name": "SUB", + "source": 38 + }, + { + "begin": 7557, + "end": 7616, + "name": "PUSH [tag]", + "source": 38, + "value": "776" + }, + { + "begin": 7557, + "end": 7616, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 7611, + "end": 7612, + "name": "DUP5", + "source": 38 + }, + { + "begin": 7614, + "end": 7615, + "name": "DUP5", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "PUSH", + "source": 38, + "value": "40" + }, + { + "begin": 7581, + "end": 7616, + "name": "MLOAD", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "PUSH", + "source": 38, + "value": "3B74B31A00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 7581, + "end": 7616, + "name": "DUP2", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "MSTORE", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "PUSH", + "source": 38, + "value": "4" + }, + { + "begin": 7581, + "end": 7616, + "name": "ADD", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "PUSH [tag]", + "source": 38, + "value": "777" + }, + { + "begin": 7581, + "end": 7616, + "name": "SWAP3", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "SWAP2", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "PUSH [tag]", + "source": 38, + "value": "778" + }, + { + "begin": 7581, + "end": 7616, + "jumpType": "[in]", + "name": "JUMP", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "tag", + "source": 38, + "value": "777" + }, + { + "begin": 7581, + "end": 7616, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "PUSH", + "source": 38, + "value": "40" + }, + { + "begin": 7581, + "end": 7616, + "name": "MLOAD", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "DUP1", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "SWAP2", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "SUB", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 7581, + "end": 7616, + "name": "REVERT", + "source": 38 + }, + { + "begin": 7557, + "end": 7616, + "name": "tag", + "source": 38, + "value": "776" + }, + { + "begin": 7557, + "end": 7616, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7634, + "end": 7640, + "name": "DUP2", + "source": 38 + }, + { + "begin": 7634, + "end": 7678, + "name": "PUSH [tag]", + "source": 38, + "value": "779" + }, + { + "begin": 7634, + "end": 7678, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 7672, + "end": 7678, + "name": "DUP3", + "source": 38 + }, + { + "begin": 7634, + "end": 7678, + "name": "PUSH [tag]", + "source": 38, + "value": "780" + }, + { + "begin": 7634, + "end": 7678, + "name": "JUMP", + "source": 38 + }, + { + "begin": 7634, + "end": 7678, + "name": "tag", + "source": 38, + "value": "779" + }, + { + "begin": 7634, + "end": 7678, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7663, + "end": 7669, + "name": "DUP3", + "source": 38 + }, + { + "begin": 7643, + "end": 7660, + "name": "PUSH", + "source": 38, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 7643, + "end": 7669, + "name": "PUSH [tag]", + "source": 38, + "value": "781" + }, + { + "begin": 7643, + "end": 7669, + "name": "SWAP2", + "source": 38 + }, + { + "begin": 7643, + "end": 7669, + "name": "SWAP1", + "source": 38 + }, + { + "begin": 7643, + "end": 7669, + "name": "PUSH [tag]", + "source": 38, + "value": "782" + }, + { + "begin": 7643, + "end": 7669, + "jumpType": "[in]", + "name": "JUMP", + "source": 38 + }, + { + "begin": 7643, + "end": 7669, + "name": "tag", + "source": 38, + "value": "781" + }, + { + "begin": 7643, + "end": 7669, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7634, + "end": 7678, + "name": "tag", + "source": 38, + "value": "780" + }, + { + "begin": 7634, + "end": 7678, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 7627, + "end": 7678, + "name": "SWAP3", + "source": 38 + }, + { + "begin": 7627, + "end": 7678, + "name": "POP", + "source": 38 + }, + { + "begin": 7627, + "end": 7678, + "name": "POP", + "source": 38 + }, + { + "begin": 7627, + "end": 7678, + "name": "POP", + "source": 38 + }, + { + "begin": 4085, + "end": 7685, + "name": "tag", + "source": 38, + "value": "751" + }, + { + "begin": 4085, + "end": 7685, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 4085, + "end": 7685, + "name": "SWAP3", + "source": 38 + }, + { + "begin": 4085, + "end": 7685, + "name": "SWAP2", + "source": 38 + }, + { + "begin": 4085, + "end": 7685, + "name": "POP", + "source": 38 + }, + { + "begin": 4085, + "end": 7685, + "name": "POP", + "source": 38 + }, + { + "begin": 4085, + "end": 7685, + "jumpType": "[out]", + "name": "JUMP", + "source": 38 + }, + { + "begin": 4539, + "end": 4727, + "name": "tag", + "source": 36, + "value": "644" + }, + { + "begin": 4539, + "end": 4727, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 4617, + "end": 4629, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 4699, + "end": 4710, + "name": "PUSH", + "source": 36, + "value": "FFFF" + }, + { + "begin": 4689, + "end": 4696, + "name": "DUP4", + "source": 36 + }, + { + "begin": 4681, + "end": 4687, + "name": "DUP4", + "source": 36 + }, + { + "begin": 4677, + "end": 4697, + "name": "SHR", + "source": 36 + }, + { + "begin": 4673, + "end": 4711, + "name": "AND", + "source": 36 + }, + { + "begin": 4664, + "end": 4711, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 4664, + "end": 4711, + "name": "POP", + "source": 36 + }, + { + "begin": 4539, + "end": 4727, + "name": "SWAP3", + "source": 36 + }, + { + "begin": 4539, + "end": 4727, + "name": "SWAP2", + "source": 36 + }, + { + "begin": 4539, + "end": 4727, + "name": "POP", + "source": 36 + }, + { + "begin": 4539, + "end": 4727, + "name": "POP", + "source": 36 + }, + { + "begin": 4539, + "end": 4727, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 3596, + "end": 3784, + "name": "tag", + "source": 36, + "value": "647" + }, + { + "begin": 3596, + "end": 3784, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 3674, + "end": 3686, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 3756, + "end": 3767, + "name": "PUSH", + "source": 36, + "value": "FFF" + }, + { + "begin": 3746, + "end": 3753, + "name": "DUP4", + "source": 36 + }, + { + "begin": 3738, + "end": 3744, + "name": "DUP4", + "source": 36 + }, + { + "begin": 3734, + "end": 3754, + "name": "SHR", + "source": 36 + }, + { + "begin": 3730, + "end": 3768, + "name": "AND", + "source": 36 + }, + { + "begin": 3721, + "end": 3768, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 3721, + "end": 3768, + "name": "POP", + "source": 36 + }, + { + "begin": 3596, + "end": 3784, + "name": "SWAP3", + "source": 36 + }, + { + "begin": 3596, + "end": 3784, + "name": "SWAP2", + "source": 36 + }, + { + "begin": 3596, + "end": 3784, + "name": "POP", + "source": 36 + }, + { + "begin": 3596, + "end": 3784, + "name": "POP", + "source": 36 + }, + { + "begin": 3596, + "end": 3784, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 4089, + "end": 4277, + "name": "tag", + "source": 36, + "value": "652" + }, + { + "begin": 4089, + "end": 4277, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 4167, + "end": 4179, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 4249, + "end": 4260, + "name": "PUSH", + "source": 36, + "value": "3FFF" + }, + { + "begin": 4239, + "end": 4246, + "name": "DUP4", + "source": 36 + }, + { + "begin": 4231, + "end": 4237, + "name": "DUP4", + "source": 36 + }, + { + "begin": 4227, + "end": 4247, + "name": "SHR", + "source": 36 + }, + { + "begin": 4223, + "end": 4261, + "name": "AND", + "source": 36 + }, + { + "begin": 4214, + "end": 4261, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 4214, + "end": 4261, + "name": "POP", + "source": 36 + }, + { + "begin": 4089, + "end": 4277, + "name": "SWAP3", + "source": 36 + }, + { + "begin": 4089, + "end": 4277, + "name": "SWAP2", + "source": 36 + }, + { + "begin": 4089, + "end": 4277, + "name": "POP", + "source": 36 + }, + { + "begin": 4089, + "end": 4277, + "name": "POP", + "source": 36 + }, + { + "begin": 4089, + "end": 4277, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 5482, + "end": 5670, + "name": "tag", + "source": 36, + "value": "655" + }, + { + "begin": 5482, + "end": 5670, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 5560, + "end": 5572, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 5642, + "end": 5653, + "name": "PUSH", + "source": 36, + "value": "FFFFFF" + }, + { + "begin": 5632, + "end": 5639, + "name": "DUP4", + "source": 36 + }, + { + "begin": 5624, + "end": 5630, + "name": "DUP4", + "source": 36 + }, + { + "begin": 5620, + "end": 5640, + "name": "SHR", + "source": 36 + }, + { + "begin": 5616, + "end": 5654, + "name": "AND", + "source": 36 + }, + { + "begin": 5607, + "end": 5654, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 5607, + "end": 5654, + "name": "POP", + "source": 36 + }, + { + "begin": 5482, + "end": 5670, + "name": "SWAP3", + "source": 36 + }, + { + "begin": 5482, + "end": 5670, + "name": "SWAP2", + "source": 36 + }, + { + "begin": 5482, + "end": 5670, + "name": "POP", + "source": 36 + }, + { + "begin": 5482, + "end": 5670, + "name": "POP", + "source": 36 + }, + { + "begin": 5482, + "end": 5670, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 5032, + "end": 5220, + "name": "tag", + "source": 36, + "value": "660" + }, + { + "begin": 5032, + "end": 5220, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 5110, + "end": 5122, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 5192, + "end": 5203, + "name": "PUSH", + "source": 36, + "value": "FFFFF" + }, + { + "begin": 5182, + "end": 5189, + "name": "DUP4", + "source": 36 + }, + { + "begin": 5174, + "end": 5180, + "name": "DUP4", + "source": 36 + }, + { + "begin": 5170, + "end": 5190, + "name": "SHR", + "source": 36 + }, + { + "begin": 5166, + "end": 5204, + "name": "AND", + "source": 36 + }, + { + "begin": 5157, + "end": 5204, + "name": "SWAP1", + "source": 36 + }, + { + "begin": 5157, + "end": 5204, + "name": "POP", + "source": 36 + }, + { + "begin": 5032, + "end": 5220, + "name": "SWAP3", + "source": 36 + }, + { + "begin": 5032, + "end": 5220, + "name": "SWAP2", + "source": 36 + }, + { + "begin": 5032, + "end": 5220, + "name": "POP", + "source": 36 + }, + { + "begin": 5032, + "end": 5220, + "name": "POP", + "source": 36 + }, + { + "begin": 5032, + "end": 5220, + "jumpType": "[out]", + "name": "JUMP", + "source": 36 + }, + { + "begin": 4474, + "end": 4581, + "name": "tag", + "source": 20, + "value": "670" + }, + { + "begin": 4474, + "end": 4581, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 4530, + "end": 4537, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4556, + "end": 4559, + "name": "DUP2", + "source": 20 + }, + { + "begin": 4556, + "end": 4567, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4556, + "end": 4567, + "name": "ADD", + "source": 20 + }, + { + "begin": 4556, + "end": 4574, + "name": "DUP1", + "source": 20 + }, + { + "begin": 4556, + "end": 4574, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 4556, + "end": 4574, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 4556, + "end": 4574, + "name": "POP", + "source": 20 + }, + { + "begin": 4549, + "end": 4574, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 4549, + "end": 4574, + "name": "POP", + "source": 20 + }, + { + "begin": 4474, + "end": 4581, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 4474, + "end": 4581, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 4474, + "end": 4581, + "name": "POP", + "source": 20 + }, + { + "begin": 4474, + "end": 4581, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 3774, + "end": 4022, + "name": "tag", + "source": 2, + "value": "678" + }, + { + "begin": 3774, + "end": 4022, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3847, + "end": 3871, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3874, + "end": 3894, + "name": "PUSH [tag]", + "source": 2, + "value": "790" + }, + { + "begin": 3874, + "end": 3892, + "name": "PUSH [tag]", + "source": 2, + "value": "459" + }, + { + "begin": 3874, + "end": 3894, + "jumpType": "[in]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 3874, + "end": 3894, + "name": "tag", + "source": 2, + "value": "790" + }, + { + "begin": 3874, + "end": 3894, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 3847, + "end": 3894, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3847, + "end": 3894, + "name": "POP", + "source": 2 + }, + { + "begin": 3904, + "end": 3920, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3923, + "end": 3924, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3923, + "end": 3931, + "name": "ADD", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3923, + "end": 3931, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "PUSH", + "source": 2, + "value": "100" + }, + { + "begin": 3923, + "end": 3931, + "name": "EXP", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "DIV", + "source": 2 + }, + { + "begin": 3923, + "end": 3931, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3923, + "end": 3931, + "name": "AND", + "source": 2 + }, + { + "begin": 3904, + "end": 3931, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3904, + "end": 3931, + "name": "POP", + "source": 2 + }, + { + "begin": 3952, + "end": 3960, + "name": "DUP3", + "source": 2 + }, + { + "begin": 3941, + "end": 3942, + "name": "DUP3", + "source": 2 + }, + { + "begin": 3941, + "end": 3949, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3941, + "end": 3949, + "name": "ADD", + "source": 2 + }, + { + "begin": 3941, + "end": 3949, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 3941, + "end": 3960, + "name": "PUSH", + "source": 2, + "value": "100" + }, + { + "begin": 3941, + "end": 3960, + "name": "EXP", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "SLOAD", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3941, + "end": 3960, + "name": "MUL", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "NOT", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "AND", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "DUP4", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3941, + "end": 3960, + "name": "AND", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "MUL", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "OR", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "SSTORE", + "source": 2 + }, + { + "begin": 3941, + "end": 3960, + "name": "POP", + "source": 2 + }, + { + "begin": 4006, + "end": 4014, + "name": "DUP3", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3975, + "end": 4015, + "name": "AND", + "source": 2 + }, + { + "begin": 3996, + "end": 4004, + "name": "DUP2", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 3975, + "end": 4015, + "name": "AND", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "PUSH", + "source": 2, + "value": "8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0" + }, + { + "begin": 3975, + "end": 4015, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3975, + "end": 4015, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 3975, + "end": 4015, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "DUP1", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "SUB", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 3975, + "end": 4015, + "name": "LOG3", + "source": 2 + }, + { + "begin": 3837, + "end": 4022, + "name": "POP", + "source": 2 + }, + { + "begin": 3837, + "end": 4022, + "name": "POP", + "source": 2 + }, + { + "begin": 3774, + "end": 4022, + "name": "POP", + "source": 2 + }, + { + "begin": 3774, + "end": 4022, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 7084, + "end": 7225, + "name": "tag", + "source": 3, + "value": "687" + }, + { + "begin": 7084, + "end": 7225, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 7151, + "end": 7168, + "name": "PUSH [tag]", + "source": 3, + "value": "792" + }, + { + "begin": 7151, + "end": 7166, + "name": "PUSH [tag]", + "source": 3, + "value": "793" + }, + { + "begin": 7151, + "end": 7168, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 7151, + "end": 7168, + "name": "tag", + "source": 3, + "value": "792" + }, + { + "begin": 7151, + "end": 7168, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 7146, + "end": 7219, + "name": "PUSH [tag]", + "source": 3, + "value": "794" + }, + { + "begin": 7146, + "end": 7219, + "name": "JUMPI", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 7191, + "end": 7208, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "PUSH", + "source": 3, + "value": "D7E6BCF800000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 7191, + "end": 7208, + "name": "DUP2", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "MSTORE", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "PUSH", + "source": 3, + "value": "4" + }, + { + "begin": 7191, + "end": 7208, + "name": "ADD", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "PUSH", + "source": 3, + "value": "40" + }, + { + "begin": 7191, + "end": 7208, + "name": "MLOAD", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "DUP1", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "SWAP2", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "SUB", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 7191, + "end": 7208, + "name": "REVERT", + "source": 3 + }, + { + "begin": 7146, + "end": 7219, + "name": "tag", + "source": 3, + "value": "794" + }, + { + "begin": 7146, + "end": 7219, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 7084, + "end": 7225, + "jumpType": "[out]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 1980, + "end": 2215, + "name": "tag", + "source": 2, + "value": "690" + }, + { + "begin": 1980, + "end": 2215, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 6931, + "end": 6951, + "name": "PUSH [tag]", + "source": 3, + "value": "796" + }, + { + "begin": 6931, + "end": 6949, + "name": "PUSH [tag]", + "source": 3, + "value": "687" + }, + { + "begin": 6931, + "end": 6951, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 6931, + "end": 6951, + "name": "tag", + "source": 3, + "value": "796" + }, + { + "begin": 6931, + "end": 6951, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 2100, + "end": 2101, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2076, + "end": 2102, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2076, + "end": 2102, + "modifierDepth": 1, + "name": "AND", + "source": 2 + }, + { + "begin": 2076, + "end": 2088, + "modifierDepth": 1, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2076, + "end": 2102, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2076, + "end": 2102, + "modifierDepth": 1, + "name": "AND", + "source": 2 + }, + { + "begin": 2076, + "end": 2102, + "name": "SUB", + "source": 2 + }, + { + "begin": 2072, + "end": 2167, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "798" + }, + { + "begin": 2072, + "end": 2167, + "modifierDepth": 1, + "name": "JUMPI", + "source": 2 + }, + { + "begin": 2153, + "end": 2154, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "0" + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "1E4FBDF700000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "MSTORE", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "4" + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "ADD", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "799" + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "114" + }, + { + "begin": 2125, + "end": 2156, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "tag", + "source": 2, + "value": "799" + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "PUSH", + "source": 2, + "value": "40" + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "MLOAD", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "DUP1", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "SWAP2", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "SUB", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "SWAP1", + "source": 2 + }, + { + "begin": 2125, + "end": 2156, + "modifierDepth": 1, + "name": "REVERT", + "source": 2 + }, + { + "begin": 2072, + "end": 2167, + "modifierDepth": 1, + "name": "tag", + "source": 2, + "value": "798" + }, + { + "begin": 2072, + "end": 2167, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 2176, + "end": 2208, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "800" + }, + { + "begin": 2195, + "end": 2207, + "modifierDepth": 1, + "name": "DUP2", + "source": 2 + }, + { + "begin": 2176, + "end": 2194, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 2, + "value": "442" + }, + { + "begin": 2176, + "end": 2208, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 2 + }, + { + "begin": 2176, + "end": 2208, + "modifierDepth": 1, + "name": "tag", + "source": 2, + "value": "800" + }, + { + "begin": 2176, + "end": 2208, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 2 + }, + { + "begin": 1980, + "end": 2215, + "name": "POP", + "source": 2 + }, + { + "begin": 1980, + "end": 2215, + "jumpType": "[out]", + "name": "JUMP", + "source": 2 + }, + { + "begin": 2815, + "end": 4183, + "name": "tag", + "source": 20, + "value": "699" + }, + { + "begin": 2815, + "end": 4183, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 2881, + "end": 2885, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 2991, + "end": 3007, + "name": "DUP1", + "source": 20 + }, + { + "begin": 3010, + "end": 3013, + "name": "DUP4", + "source": 20 + }, + { + "begin": 3010, + "end": 3024, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 3010, + "end": 3024, + "name": "ADD", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3025, + "end": 3030, + "name": "DUP5", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 3010, + "end": 3031, + "name": "ADD", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 3010, + "end": 3031, + "name": "ADD", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3010, + "end": 3031, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 3010, + "end": 3031, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 2991, + "end": 3031, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 2991, + "end": 3031, + "name": "POP", + "source": 20 + }, + { + "begin": 3058, + "end": 3059, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3046, + "end": 3054, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3046, + "end": 3059, + "name": "EQ", + "source": 20 + }, + { + "begin": 3042, + "end": 4177, + "name": "PUSH [tag]", + "source": 20, + "value": "802" + }, + { + "begin": 3042, + "end": 4177, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 3413, + "end": 3431, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3445, + "end": 3446, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 3434, + "end": 3442, + "name": "DUP3", + "source": 20 + }, + { + "begin": 3434, + "end": 3446, + "name": "PUSH [tag]", + "source": 20, + "value": "803" + }, + { + "begin": 3434, + "end": 3446, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 3434, + "end": 3446, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3434, + "end": 3446, + "name": "PUSH [tag]", + "source": 20, + "value": "403" + }, + { + "begin": 3434, + "end": 3446, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 3434, + "end": 3446, + "name": "tag", + "source": 20, + "value": "803" + }, + { + "begin": 3434, + "end": 3446, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3413, + "end": 3446, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3413, + "end": 3446, + "name": "POP", + "source": 20 + }, + { + "begin": 3460, + "end": 3477, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3501, + "end": 3502, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 3480, + "end": 3483, + "name": "DUP7", + "source": 20 + }, + { + "begin": 3480, + "end": 3491, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3480, + "end": 3491, + "name": "ADD", + "source": 20 + }, + { + "begin": 3480, + "end": 3498, + "name": "DUP1", + "source": 20 + }, + { + "begin": 3480, + "end": 3498, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 3480, + "end": 3498, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3480, + "end": 3498, + "name": "POP", + "source": 20 + }, + { + "begin": 3480, + "end": 3502, + "name": "PUSH [tag]", + "source": 20, + "value": "804" + }, + { + "begin": 3480, + "end": 3502, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 3480, + "end": 3502, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3480, + "end": 3502, + "name": "PUSH [tag]", + "source": 20, + "value": "403" + }, + { + "begin": 3480, + "end": 3502, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 3480, + "end": 3502, + "name": "tag", + "source": 20, + "value": "804" + }, + { + "begin": 3480, + "end": 3502, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3460, + "end": 3502, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3460, + "end": 3502, + "name": "POP", + "source": 20 + }, + { + "begin": 3535, + "end": 3544, + "name": "DUP1", + "source": 20 + }, + { + "begin": 3521, + "end": 3531, + "name": "DUP3", + "source": 20 + }, + { + "begin": 3521, + "end": 3544, + "name": "EQ", + "source": 20 + }, + { + "begin": 3517, + "end": 3895, + "name": "PUSH [tag]", + "source": 20, + "value": "805" + }, + { + "begin": 3517, + "end": 3895, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 3564, + "end": 3581, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3584, + "end": 3587, + "name": "DUP7", + "source": 20 + }, + { + "begin": 3584, + "end": 3595, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3584, + "end": 3595, + "name": "ADD", + "source": 20 + }, + { + "begin": 3596, + "end": 3605, + "name": "DUP3", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "LT", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "PUSH [tag]", + "source": 20, + "value": "806" + }, + { + "begin": 3584, + "end": 3606, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "PUSH [tag]", + "source": 20, + "value": "807" + }, + { + "begin": 3584, + "end": 3606, + "name": "PUSH [tag]", + "source": 20, + "value": "244" + }, + { + "begin": 3584, + "end": 3606, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "tag", + "source": 20, + "value": "807" + }, + { + "begin": 3584, + "end": 3606, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "tag", + "source": 20, + "value": "806" + }, + { + "begin": 3584, + "end": 3606, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3584, + "end": 3606, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 3584, + "end": 3606, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3584, + "end": 3606, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "ADD", + "source": 20 + }, + { + "begin": 3584, + "end": 3606, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 3564, + "end": 3606, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3564, + "end": 3606, + "name": "POP", + "source": 20 + }, + { + "begin": 3731, + "end": 3740, + "name": "DUP1", + "source": 20 + }, + { + "begin": 3705, + "end": 3708, + "name": "DUP8", + "source": 20 + }, + { + "begin": 3705, + "end": 3716, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3705, + "end": 3716, + "name": "ADD", + "source": 20 + }, + { + "begin": 3717, + "end": 3727, + "name": "DUP5", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "LT", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "PUSH [tag]", + "source": 20, + "value": "809" + }, + { + "begin": 3705, + "end": 3728, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "PUSH [tag]", + "source": 20, + "value": "810" + }, + { + "begin": 3705, + "end": 3728, + "name": "PUSH [tag]", + "source": 20, + "value": "244" + }, + { + "begin": 3705, + "end": 3728, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "tag", + "source": 20, + "value": "810" + }, + { + "begin": 3705, + "end": 3728, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "tag", + "source": 20, + "value": "809" + }, + { + "begin": 3705, + "end": 3728, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3705, + "end": 3728, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 3705, + "end": 3728, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3705, + "end": 3728, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 3705, + "end": 3728, + "name": "ADD", + "source": 20 + }, + { + "begin": 3705, + "end": 3740, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3705, + "end": 3740, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3705, + "end": 3740, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 3705, + "end": 3740, + "name": "POP", + "source": 20 + }, + { + "begin": 3872, + "end": 3880, + "name": "DUP4", + "source": 20 + }, + { + "begin": 3844, + "end": 3847, + "name": "DUP8", + "source": 20 + }, + { + "begin": 3844, + "end": 3858, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 3844, + "end": 3858, + "name": "ADD", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3859, + "end": 3868, + "name": "DUP4", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 3844, + "end": 3869, + "name": "ADD", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 3844, + "end": 3869, + "name": "ADD", + "source": 20 + }, + { + "begin": 3844, + "end": 3869, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3844, + "end": 3869, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 3844, + "end": 3880, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3844, + "end": 3880, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3844, + "end": 3880, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 3844, + "end": 3880, + "name": "POP", + "source": 20 + }, + { + "begin": 3546, + "end": 3895, + "name": "POP", + "source": 20 + }, + { + "begin": 3517, + "end": 3895, + "name": "tag", + "source": 20, + "value": "805" + }, + { + "begin": 3517, + "end": 3895, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3973, + "end": 3976, + "name": "DUP6", + "source": 20 + }, + { + "begin": 3973, + "end": 3984, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3973, + "end": 3984, + "name": "ADD", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "DUP1", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "DUP1", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH [tag]", + "source": 20, + "value": "812" + }, + { + "begin": 3973, + "end": 3990, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH [tag]", + "source": 20, + "value": "813" + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH [tag]", + "source": 20, + "value": "814" + }, + { + "begin": 3973, + "end": 3990, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "tag", + "source": 20, + "value": "813" + }, + { + "begin": 3973, + "end": 3990, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "tag", + "source": 20, + "value": "812" + }, + { + "begin": 3973, + "end": 3990, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 3973, + "end": 3990, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "SUB", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "DUP2", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3973, + "end": 3990, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3973, + "end": 3990, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "ADD", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 3973, + "end": 3990, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 3973, + "end": 3990, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 4076, + "end": 4079, + "name": "DUP6", + "source": 20 + }, + { + "begin": 4076, + "end": 4090, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 4076, + "end": 4090, + "name": "ADD", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4091, + "end": 4096, + "name": "DUP7", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "DUP2", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 4076, + "end": 4097, + "name": "ADD", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "DUP2", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 4076, + "end": 4097, + "name": "ADD", + "source": 20 + }, + { + "begin": 4076, + "end": 4097, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4076, + "end": 4097, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 4069, + "end": 4097, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4069, + "end": 4097, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 4069, + "end": 4097, + "name": "SSTORE", + "source": 20 + }, + { + "begin": 4119, + "end": 4123, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 4112, + "end": 4123, + "name": "SWAP4", + "source": 20 + }, + { + "begin": 4112, + "end": 4123, + "name": "POP", + "source": 20 + }, + { + "begin": 4112, + "end": 4123, + "name": "POP", + "source": 20 + }, + { + "begin": 4112, + "end": 4123, + "name": "POP", + "source": 20 + }, + { + "begin": 4112, + "end": 4123, + "name": "POP", + "source": 20 + }, + { + "begin": 4112, + "end": 4123, + "name": "PUSH [tag]", + "source": 20, + "value": "801" + }, + { + "begin": 4112, + "end": 4123, + "name": "JUMP", + "source": 20 + }, + { + "begin": 3042, + "end": 4177, + "name": "tag", + "source": 20, + "value": "802" + }, + { + "begin": 3042, + "end": 4177, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 4161, + "end": 4166, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 4154, + "end": 4166, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 4154, + "end": 4166, + "name": "POP", + "source": 20 + }, + { + "begin": 4154, + "end": 4166, + "name": "POP", + "source": 20 + }, + { + "begin": 2815, + "end": 4183, + "name": "tag", + "source": 20, + "value": "801" + }, + { + "begin": 2815, + "end": 4183, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 2815, + "end": 4183, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 2815, + "end": 4183, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 2815, + "end": 4183, + "name": "POP", + "source": 20 + }, + { + "begin": 2815, + "end": 4183, + "name": "POP", + "source": 20 + }, + { + "begin": 2815, + "end": 4183, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 3243, + "end": 3407, + "name": "tag", + "source": 19, + "value": "702" + }, + { + "begin": 3243, + "end": 3407, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 3323, + "end": 3327, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3346, + "end": 3349, + "name": "DUP3", + "source": 19 + }, + { + "begin": 3346, + "end": 3357, + "name": "PUSH", + "source": 19, + "value": "2" + }, + { + "begin": 3346, + "end": 3357, + "name": "ADD", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3358, + "end": 3361, + "name": "DUP4", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "DUP2", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 3346, + "end": 3362, + "name": "ADD", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "DUP2", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "MSTORE", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "PUSH", + "source": 19, + "value": "20" + }, + { + "begin": 3346, + "end": 3362, + "name": "ADD", + "source": 19 + }, + { + "begin": 3346, + "end": 3362, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3346, + "end": 3362, + "name": "KECCAK256", + "source": 19 + }, + { + "begin": 3339, + "end": 3362, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3339, + "end": 3362, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3339, + "end": 3362, + "name": "SSTORE", + "source": 19 + }, + { + "begin": 3379, + "end": 3400, + "name": "PUSH [tag]", + "source": 19, + "value": "818" + }, + { + "begin": 3396, + "end": 3399, + "name": "DUP3", + "source": 19 + }, + { + "begin": 3379, + "end": 3382, + "name": "DUP5", + "source": 19 + }, + { + "begin": 3379, + "end": 3388, + "name": "PUSH", + "source": 19, + "value": "0" + }, + { + "begin": 3379, + "end": 3388, + "name": "ADD", + "source": 19 + }, + { + "begin": 3379, + "end": 3395, + "name": "PUSH [tag]", + "source": 19, + "value": "819" + }, + { + "begin": 3379, + "end": 3395, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3379, + "end": 3400, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 3379, + "end": 3400, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3379, + "end": 3400, + "name": "PUSH", + "source": 19, + "value": "FFFFFFFF" + }, + { + "begin": 3379, + "end": 3400, + "name": "AND", + "source": 19 + }, + { + "begin": 3379, + "end": 3400, + "jumpType": "[in]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 3379, + "end": 3400, + "name": "tag", + "source": 19, + "value": "818" + }, + { + "begin": 3379, + "end": 3400, + "name": "JUMPDEST", + "source": 19 + }, + { + "begin": 3372, + "end": 3400, + "name": "SWAP1", + "source": 19 + }, + { + "begin": 3372, + "end": 3400, + "name": "POP", + "source": 19 + }, + { + "begin": 3243, + "end": 3407, + "name": "SWAP3", + "source": 19 + }, + { + "begin": 3243, + "end": 3407, + "name": "SWAP2", + "source": 19 + }, + { + "begin": 3243, + "end": 3407, + "name": "POP", + "source": 19 + }, + { + "begin": 3243, + "end": 3407, + "name": "POP", + "source": 19 + }, + { + "begin": 3243, + "end": 3407, + "jumpType": "[out]", + "name": "JUMP", + "source": 19 + }, + { + "begin": 6650, + "end": 6765, + "name": "tag", + "source": 20, + "value": "706" + }, + { + "begin": 6650, + "end": 6765, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6713, + "end": 6720, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6739, + "end": 6758, + "name": "PUSH [tag]", + "source": 20, + "value": "821" + }, + { + "begin": 6747, + "end": 6750, + "name": "DUP3", + "source": 20 + }, + { + "begin": 6747, + "end": 6757, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6747, + "end": 6757, + "name": "ADD", + "source": 20 + }, + { + "begin": 6739, + "end": 6746, + "name": "PUSH [tag]", + "source": 20, + "value": "670" + }, + { + "begin": 6739, + "end": 6758, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 6739, + "end": 6758, + "name": "tag", + "source": 20, + "value": "821" + }, + { + "begin": 6739, + "end": 6758, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6732, + "end": 6758, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 6732, + "end": 6758, + "name": "POP", + "source": 20 + }, + { + "begin": 6650, + "end": 6765, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 6650, + "end": 6765, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 6650, + "end": 6765, + "name": "POP", + "source": 20 + }, + { + "begin": 6650, + "end": 6765, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 7107, + "end": 7236, + "name": "tag", + "source": 20, + "value": "709" + }, + { + "begin": 7107, + "end": 7236, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 7181, + "end": 7188, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 7207, + "end": 7229, + "name": "PUSH [tag]", + "source": 20, + "value": "823" + }, + { + "begin": 7211, + "end": 7214, + "name": "DUP4", + "source": 20 + }, + { + "begin": 7211, + "end": 7221, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 7211, + "end": 7221, + "name": "ADD", + "source": 20 + }, + { + "begin": 7223, + "end": 7228, + "name": "DUP4", + "source": 20 + }, + { + "begin": 7207, + "end": 7210, + "name": "PUSH [tag]", + "source": 20, + "value": "552" + }, + { + "begin": 7207, + "end": 7229, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 7207, + "end": 7229, + "name": "tag", + "source": 20, + "value": "823" + }, + { + "begin": 7207, + "end": 7229, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 7200, + "end": 7229, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 7200, + "end": 7229, + "name": "POP", + "source": 20 + }, + { + "begin": 7107, + "end": 7236, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 7107, + "end": 7236, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 7107, + "end": 7236, + "name": "POP", + "source": 20 + }, + { + "begin": 7107, + "end": 7236, + "name": "POP", + "source": 20 + }, + { + "begin": 7107, + "end": 7236, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 5930, + "end": 6053, + "name": "tag", + "source": 20, + "value": "729" + }, + { + "begin": 5930, + "end": 6053, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6000, + "end": 6004, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6023, + "end": 6046, + "name": "PUSH [tag]", + "source": 20, + "value": "825" + }, + { + "begin": 6028, + "end": 6031, + "name": "DUP4", + "source": 20 + }, + { + "begin": 6028, + "end": 6038, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6028, + "end": 6038, + "name": "ADD", + "source": 20 + }, + { + "begin": 6040, + "end": 6045, + "name": "DUP4", + "source": 20 + }, + { + "begin": 6023, + "end": 6027, + "name": "PUSH [tag]", + "source": 20, + "value": "629" + }, + { + "begin": 6023, + "end": 6046, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 6023, + "end": 6046, + "name": "tag", + "source": 20, + "value": "825" + }, + { + "begin": 6023, + "end": 6046, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6016, + "end": 6046, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 6016, + "end": 6046, + "name": "POP", + "source": 20 + }, + { + "begin": 5930, + "end": 6053, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 5930, + "end": 6053, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 5930, + "end": 6053, + "name": "POP", + "source": 20 + }, + { + "begin": 5930, + "end": 6053, + "name": "POP", + "source": 20 + }, + { + "begin": 5930, + "end": 6053, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 6431, + "end": 6569, + "name": "tag", + "source": 20, + "value": "732" + }, + { + "begin": 6431, + "end": 6569, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6511, + "end": 6515, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6534, + "end": 6562, + "name": "PUSH [tag]", + "source": 20, + "value": "827" + }, + { + "begin": 6544, + "end": 6547, + "name": "DUP4", + "source": 20 + }, + { + "begin": 6544, + "end": 6554, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6544, + "end": 6554, + "name": "ADD", + "source": 20 + }, + { + "begin": 6556, + "end": 6561, + "name": "DUP4", + "source": 20 + }, + { + "begin": 6534, + "end": 6543, + "name": "PUSH [tag]", + "source": 20, + "value": "565" + }, + { + "begin": 6534, + "end": 6562, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 6534, + "end": 6562, + "name": "tag", + "source": 20, + "value": "827" + }, + { + "begin": 6534, + "end": 6562, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6527, + "end": 6562, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 6527, + "end": 6562, + "name": "POP", + "source": 20 + }, + { + "begin": 6431, + "end": 6569, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 6431, + "end": 6569, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 6431, + "end": 6569, + "name": "POP", + "source": 20 + }, + { + "begin": 6431, + "end": 6569, + "name": "POP", + "source": 20 + }, + { + "begin": 6431, + "end": 6569, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 7776, + "end": 8076, + "name": "tag", + "source": 20, + "value": "745" + }, + { + "begin": 7776, + "end": 8076, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 7839, + "end": 7855, + "name": "PUSH", + "source": 20, + "value": "60" + }, + { + "begin": 7867, + "end": 7889, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 7892, + "end": 7911, + "name": "PUSH [tag]", + "source": 20, + "value": "829" + }, + { + "begin": 7900, + "end": 7903, + "name": "DUP4", + "source": 20 + }, + { + "begin": 7900, + "end": 7910, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 7900, + "end": 7910, + "name": "ADD", + "source": 20 + }, + { + "begin": 7892, + "end": 7899, + "name": "PUSH [tag]", + "source": 20, + "value": "830" + }, + { + "begin": 7892, + "end": 7911, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 7892, + "end": 7911, + "name": "tag", + "source": 20, + "value": "829" + }, + { + "begin": 7892, + "end": 7911, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 7867, + "end": 7911, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 7867, + "end": 7911, + "name": "POP", + "source": 20 + }, + { + "begin": 7921, + "end": 7944, + "name": "PUSH", + "source": 20, + "value": "60" + }, + { + "begin": 8031, + "end": 8036, + "name": "DUP2", + "source": 20 + }, + { + "begin": 8021, + "end": 8036, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 8021, + "end": 8036, + "name": "POP", + "source": 20 + }, + { + "begin": 8063, + "end": 8069, + "name": "DUP1", + "source": 20 + }, + { + "begin": 8056, + "end": 8069, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 8056, + "end": 8069, + "name": "POP", + "source": 20 + }, + { + "begin": 8056, + "end": 8069, + "name": "POP", + "source": 20 + }, + { + "begin": 8056, + "end": 8069, + "name": "POP", + "source": 20 + }, + { + "begin": 7776, + "end": 8076, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 7776, + "end": 8076, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 7776, + "end": 8076, + "name": "POP", + "source": 20 + }, + { + "begin": 7776, + "end": 8076, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 8487, + "end": 8607, + "name": "tag", + "source": 3, + "value": "793" + }, + { + "begin": 8487, + "end": 8607, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 8537, + "end": 8541, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 8560, + "end": 8586, + "name": "PUSH [tag]", + "source": 3, + "value": "832" + }, + { + "begin": 8560, + "end": 8584, + "name": "PUSH [tag]", + "source": 3, + "value": "481" + }, + { + "begin": 8560, + "end": 8586, + "jumpType": "[in]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 8560, + "end": 8586, + "name": "tag", + "source": 3, + "value": "832" + }, + { + "begin": 8560, + "end": 8586, + "name": "JUMPDEST", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "PUSH", + "source": 3, + "value": "0" + }, + { + "begin": 8560, + "end": 8600, + "name": "ADD", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "PUSH", + "source": 3, + "value": "8" + }, + { + "begin": 8560, + "end": 8600, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "SLOAD", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "PUSH", + "source": 3, + "value": "100" + }, + { + "begin": 8560, + "end": 8600, + "name": "EXP", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "DIV", + "source": 3 + }, + { + "begin": 8560, + "end": 8600, + "name": "PUSH", + "source": 3, + "value": "FF" + }, + { + "begin": 8560, + "end": 8600, + "name": "AND", + "source": 3 + }, + { + "begin": 8553, + "end": 8600, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8553, + "end": 8600, + "name": "POP", + "source": 3 + }, + { + "begin": 8487, + "end": 8607, + "name": "SWAP1", + "source": 3 + }, + { + "begin": 8487, + "end": 8607, + "jumpType": "[out]", + "name": "JUMP", + "source": 3 + }, + { + "begin": 6221, + "end": 6350, + "name": "tag", + "source": 20, + "value": "819" + }, + { + "begin": 6221, + "end": 6350, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6294, + "end": 6298, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6317, + "end": 6343, + "name": "PUSH [tag]", + "source": 20, + "value": "834" + }, + { + "begin": 6325, + "end": 6328, + "name": "DUP4", + "source": 20 + }, + { + "begin": 6325, + "end": 6335, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 6325, + "end": 6335, + "name": "ADD", + "source": 20 + }, + { + "begin": 6337, + "end": 6342, + "name": "DUP4", + "source": 20 + }, + { + "begin": 6317, + "end": 6324, + "name": "PUSH [tag]", + "source": 20, + "value": "699" + }, + { + "begin": 6317, + "end": 6343, + "jumpType": "[in]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 6317, + "end": 6343, + "name": "tag", + "source": 20, + "value": "834" + }, + { + "begin": 6317, + "end": 6343, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 6310, + "end": 6343, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 6310, + "end": 6343, + "name": "POP", + "source": 20 + }, + { + "begin": 6221, + "end": 6350, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 6221, + "end": 6350, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 6221, + "end": 6350, + "name": "POP", + "source": 20 + }, + { + "begin": 6221, + "end": 6350, + "name": "POP", + "source": 20 + }, + { + "begin": 6221, + "end": 6350, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": 5581, + "end": 5690, + "name": "tag", + "source": 20, + "value": "830" + }, + { + "begin": 5581, + "end": 5690, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 5637, + "end": 5653, + "name": "PUSH", + "source": 20, + "value": "60" + }, + { + "begin": 5672, + "end": 5675, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5672, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 5672, + "end": 5683, + "name": "ADD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 5665, + "end": 5683, + "name": "MUL", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 5665, + "end": 5683, + "name": "ADD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "40" + }, + { + "begin": 5665, + "end": 5683, + "name": "MLOAD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "ADD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "40" + }, + { + "begin": 5665, + "end": 5683, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP3", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 5665, + "end": 5683, + "name": "ADD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP3", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "ISZERO", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH [tag]", + "source": 20, + "value": "836" + }, + { + "begin": 5665, + "end": 5683, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 5665, + "end": 5683, + "name": "MUL", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP3", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "ADD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 5665, + "end": 5683, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "0" + }, + { + "begin": 5665, + "end": 5683, + "name": "KECCAK256", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "tag", + "source": 20, + "value": "837" + }, + { + "begin": 5665, + "end": 5683, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SLOAD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP2", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "MSTORE", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "20" + }, + { + "begin": 5665, + "end": 5683, + "name": "ADD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH", + "source": 20, + "value": "1" + }, + { + "begin": 5665, + "end": 5683, + "name": "ADD", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "DUP4", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "GT", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "PUSH [tag]", + "source": 20, + "value": "837" + }, + { + "begin": 5665, + "end": 5683, + "name": "JUMPI", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "tag", + "source": 20, + "value": "836" + }, + { + "begin": 5665, + "end": 5683, + "name": "JUMPDEST", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "POP", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "POP", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "POP", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "POP", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "POP", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5665, + "end": 5683, + "name": "POP", + "source": 20 + }, + { + "begin": 5581, + "end": 5690, + "name": "SWAP2", + "source": 20 + }, + { + "begin": 5581, + "end": 5690, + "name": "SWAP1", + "source": 20 + }, + { + "begin": 5581, + "end": 5690, + "name": "POP", + "source": 20 + }, + { + "begin": 5581, + "end": 5690, + "jumpType": "[out]", + "name": "JUMP", + "source": 20 + }, + { + "begin": -1, + "end": -1, + "name": "tag", + "source": -1, + "value": "392" + }, + { + "begin": -1, + "end": -1, + "name": "JUMPDEST", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH #[$]", + "source": -1, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": -1, + "end": -1, + "name": "DUP1", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH [$]", + "source": -1, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": -1, + "end": -1, + "name": "DUP4", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "CODECOPY", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "ADD", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "SWAP1", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "jumpType": "[out]", + "name": "JUMP", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "tag", + "source": -1, + "value": "416" + }, + { + "begin": -1, + "end": -1, + "name": "JUMPDEST", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "40" + }, + { + "begin": -1, + "end": -1, + "name": "MLOAD", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "DUP1", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "80" + }, + { + "begin": -1, + "end": -1, + "name": "ADD", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "40" + }, + { + "begin": -1, + "end": -1, + "name": "MSTORE", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "DUP1", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "0" + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "FFFF" + }, + { + "begin": -1, + "end": -1, + "name": "AND", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "DUP2", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "MSTORE", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "20" + }, + { + "begin": -1, + "end": -1, + "name": "ADD", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "0" + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": -1, + "end": -1, + "name": "AND", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "DUP2", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "MSTORE", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "20" + }, + { + "begin": -1, + "end": -1, + "name": "ADD", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "0" + }, + { + "begin": -1, + "end": -1, + "name": "ISZERO", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "ISZERO", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "DUP2", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "MSTORE", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "20" + }, + { + "begin": -1, + "end": -1, + "name": "ADD", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "source": -1, + "value": "0" + }, + { + "begin": -1, + "end": -1, + "name": "ISZERO", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "ISZERO", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "DUP2", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "MSTORE", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "POP", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "name": "SWAP1", + "source": -1 + }, + { + "begin": -1, + "end": -1, + "jumpType": "[out]", + "name": "JUMP", + "source": -1 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 40, + "value": "839" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 40 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 40 + }, + { + "begin": 211, + "end": 328, + "name": "tag", + "source": 40, + "value": "840" + }, + { + "begin": 211, + "end": 328, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 320, + "end": 321, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 317, + "end": 318, + "name": "DUP1", + "source": 40 + }, + { + "begin": 310, + "end": 322, + "name": "REVERT", + "source": 40 + }, + { + "begin": 334, + "end": 483, + "name": "tag", + "source": 40, + "value": "841" + }, + { + "begin": 334, + "end": 483, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 370, + "end": 377, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 410, + "end": 476, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 403, + "end": 408, + "name": "DUP3", + "source": 40 + }, + { + "begin": 399, + "end": 477, + "name": "AND", + "source": 40 + }, + { + "begin": 388, + "end": 477, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 388, + "end": 477, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 483, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 334, + "end": 483, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 334, + "end": 483, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 483, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 489, + "end": 609, + "name": "tag", + "source": 40, + "value": "842" + }, + { + "begin": 489, + "end": 609, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 561, + "end": 584, + "name": "PUSH [tag]", + "source": 40, + "value": "939" + }, + { + "begin": 578, + "end": 583, + "name": "DUP2", + "source": 40 + }, + { + "begin": 561, + "end": 584, + "name": "PUSH [tag]", + "source": 40, + "value": "841" + }, + { + "begin": 561, + "end": 584, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 561, + "end": 584, + "name": "tag", + "source": 40, + "value": "939" + }, + { + "begin": 561, + "end": 584, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 554, + "end": 559, + "name": "DUP2", + "source": 40 + }, + { + "begin": 551, + "end": 585, + "name": "EQ", + "source": 40 + }, + { + "begin": 541, + "end": 603, + "name": "PUSH [tag]", + "source": 40, + "value": "940" + }, + { + "begin": 541, + "end": 603, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 599, + "end": 600, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 596, + "end": 597, + "name": "DUP1", + "source": 40 + }, + { + "begin": 589, + "end": 601, + "name": "REVERT", + "source": 40 + }, + { + "begin": 541, + "end": 603, + "name": "tag", + "source": 40, + "value": "940" + }, + { + "begin": 541, + "end": 603, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 489, + "end": 609, + "name": "POP", + "source": 40 + }, + { + "begin": 489, + "end": 609, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 615, + "end": 752, + "name": "tag", + "source": 40, + "value": "843" + }, + { + "begin": 615, + "end": 752, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 660, + "end": 665, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 698, + "end": 704, + "name": "DUP2", + "source": 40 + }, + { + "begin": 685, + "end": 705, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 676, + "end": 705, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 676, + "end": 705, + "name": "POP", + "source": 40 + }, + { + "begin": 714, + "end": 746, + "name": "PUSH [tag]", + "source": 40, + "value": "942" + }, + { + "begin": 740, + "end": 745, + "name": "DUP2", + "source": 40 + }, + { + "begin": 714, + "end": 746, + "name": "PUSH [tag]", + "source": 40, + "value": "842" + }, + { + "begin": 714, + "end": 746, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 714, + "end": 746, + "name": "tag", + "source": 40, + "value": "942" + }, + { + "begin": 714, + "end": 746, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 615, + "end": 752, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 615, + "end": 752, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 615, + "end": 752, + "name": "POP", + "source": 40 + }, + { + "begin": 615, + "end": 752, + "name": "POP", + "source": 40 + }, + { + "begin": 615, + "end": 752, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 758, + "end": 1085, + "name": "tag", + "source": 40, + "value": "56" + }, + { + "begin": 758, + "end": 1085, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 816, + "end": 822, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 865, + "end": 867, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 853, + "end": 862, + "name": "DUP3", + "source": 40 + }, + { + "begin": 844, + "end": 851, + "name": "DUP5", + "source": 40 + }, + { + "begin": 840, + "end": 863, + "name": "SUB", + "source": 40 + }, + { + "begin": 836, + "end": 868, + "name": "SLT", + "source": 40 + }, + { + "begin": 833, + "end": 952, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 833, + "end": 952, + "name": "PUSH [tag]", + "source": 40, + "value": "944" + }, + { + "begin": 833, + "end": 952, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 871, + "end": 950, + "name": "PUSH [tag]", + "source": 40, + "value": "945" + }, + { + "begin": 871, + "end": 950, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 871, + "end": 950, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 871, + "end": 950, + "name": "tag", + "source": 40, + "value": "945" + }, + { + "begin": 871, + "end": 950, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 833, + "end": 952, + "name": "tag", + "source": 40, + "value": "944" + }, + { + "begin": 833, + "end": 952, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 991, + "end": 992, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1016, + "end": 1068, + "name": "PUSH [tag]", + "source": 40, + "value": "946" + }, + { + "begin": 1060, + "end": 1067, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1051, + "end": 1057, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1040, + "end": 1049, + "name": "DUP6", + "source": 40 + }, + { + "begin": 1036, + "end": 1058, + "name": "ADD", + "source": 40 + }, + { + "begin": 1016, + "end": 1068, + "name": "PUSH [tag]", + "source": 40, + "value": "843" + }, + { + "begin": 1016, + "end": 1068, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1016, + "end": 1068, + "name": "tag", + "source": 40, + "value": "946" + }, + { + "begin": 1016, + "end": 1068, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1006, + "end": 1068, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1006, + "end": 1068, + "name": "POP", + "source": 40 + }, + { + "begin": 962, + "end": 1078, + "name": "POP", + "source": 40 + }, + { + "begin": 758, + "end": 1085, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 758, + "end": 1085, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 758, + "end": 1085, + "name": "POP", + "source": 40 + }, + { + "begin": 758, + "end": 1085, + "name": "POP", + "source": 40 + }, + { + "begin": 758, + "end": 1085, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1091, + "end": 1181, + "name": "tag", + "source": 40, + "value": "844" + }, + { + "begin": 1091, + "end": 1181, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1125, + "end": 1132, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1168, + "end": 1173, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1161, + "end": 1174, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1154, + "end": 1175, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1143, + "end": 1175, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1143, + "end": 1175, + "name": "POP", + "source": 40 + }, + { + "begin": 1091, + "end": 1181, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1091, + "end": 1181, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1091, + "end": 1181, + "name": "POP", + "source": 40 + }, + { + "begin": 1091, + "end": 1181, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1187, + "end": 1296, + "name": "tag", + "source": 40, + "value": "845" + }, + { + "begin": 1187, + "end": 1296, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1268, + "end": 1289, + "name": "PUSH [tag]", + "source": 40, + "value": "949" + }, + { + "begin": 1283, + "end": 1288, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1268, + "end": 1289, + "name": "PUSH [tag]", + "source": 40, + "value": "844" + }, + { + "begin": 1268, + "end": 1289, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1268, + "end": 1289, + "name": "tag", + "source": 40, + "value": "949" + }, + { + "begin": 1268, + "end": 1289, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1263, + "end": 1266, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1256, + "end": 1290, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1187, + "end": 1296, + "name": "POP", + "source": 40 + }, + { + "begin": 1187, + "end": 1296, + "name": "POP", + "source": 40 + }, + { + "begin": 1187, + "end": 1296, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1302, + "end": 1512, + "name": "tag", + "source": 40, + "value": "59" + }, + { + "begin": 1302, + "end": 1512, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1389, + "end": 1393, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1427, + "end": 1429, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1416, + "end": 1425, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1412, + "end": 1430, + "name": "ADD", + "source": 40 + }, + { + "begin": 1404, + "end": 1430, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1404, + "end": 1430, + "name": "POP", + "source": 40 + }, + { + "begin": 1440, + "end": 1505, + "name": "PUSH [tag]", + "source": 40, + "value": "951" + }, + { + "begin": 1502, + "end": 1503, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1491, + "end": 1500, + "name": "DUP4", + "source": 40 + }, + { + "begin": 1487, + "end": 1504, + "name": "ADD", + "source": 40 + }, + { + "begin": 1478, + "end": 1484, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1440, + "end": 1505, + "name": "PUSH [tag]", + "source": 40, + "value": "845" + }, + { + "begin": 1440, + "end": 1505, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1440, + "end": 1505, + "name": "tag", + "source": 40, + "value": "951" + }, + { + "begin": 1440, + "end": 1505, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1302, + "end": 1512, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1302, + "end": 1512, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1302, + "end": 1512, + "name": "POP", + "source": 40 + }, + { + "begin": 1302, + "end": 1512, + "name": "POP", + "source": 40 + }, + { + "begin": 1302, + "end": 1512, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1518, + "end": 1632, + "name": "tag", + "source": 40, + "value": "846" + }, + { + "begin": 1518, + "end": 1632, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1585, + "end": 1591, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1619, + "end": 1624, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1613, + "end": 1625, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 1603, + "end": 1625, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1603, + "end": 1625, + "name": "POP", + "source": 40 + }, + { + "begin": 1518, + "end": 1632, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1518, + "end": 1632, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1518, + "end": 1632, + "name": "POP", + "source": 40 + }, + { + "begin": 1518, + "end": 1632, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1638, + "end": 1822, + "name": "tag", + "source": 40, + "value": "847" + }, + { + "begin": 1638, + "end": 1822, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1737, + "end": 1748, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1771, + "end": 1777, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1766, + "end": 1769, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1759, + "end": 1778, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1811, + "end": 1815, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1806, + "end": 1809, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1802, + "end": 1816, + "name": "ADD", + "source": 40 + }, + { + "begin": 1787, + "end": 1816, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1787, + "end": 1816, + "name": "POP", + "source": 40 + }, + { + "begin": 1638, + "end": 1822, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1638, + "end": 1822, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1638, + "end": 1822, + "name": "POP", + "source": 40 + }, + { + "begin": 1638, + "end": 1822, + "name": "POP", + "source": 40 + }, + { + "begin": 1638, + "end": 1822, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1828, + "end": 1960, + "name": "tag", + "source": 40, + "value": "848" + }, + { + "begin": 1828, + "end": 1960, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1895, + "end": 1899, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1918, + "end": 1921, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1910, + "end": 1921, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1910, + "end": 1921, + "name": "POP", + "source": 40 + }, + { + "begin": 1948, + "end": 1952, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1943, + "end": 1946, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1939, + "end": 1953, + "name": "ADD", + "source": 40 + }, + { + "begin": 1931, + "end": 1953, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1931, + "end": 1953, + "name": "POP", + "source": 40 + }, + { + "begin": 1828, + "end": 1960, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1828, + "end": 1960, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1828, + "end": 1960, + "name": "POP", + "source": 40 + }, + { + "begin": 1828, + "end": 1960, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1966, + "end": 2043, + "name": "tag", + "source": 40, + "value": "849" + }, + { + "begin": 1966, + "end": 2043, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2003, + "end": 2010, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2032, + "end": 2037, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2021, + "end": 2037, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2021, + "end": 2037, + "name": "POP", + "source": 40 + }, + { + "begin": 1966, + "end": 2043, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1966, + "end": 2043, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1966, + "end": 2043, + "name": "POP", + "source": 40 + }, + { + "begin": 1966, + "end": 2043, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2049, + "end": 2157, + "name": "tag", + "source": 40, + "value": "850" + }, + { + "begin": 2049, + "end": 2157, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2126, + "end": 2150, + "name": "PUSH [tag]", + "source": 40, + "value": "957" + }, + { + "begin": 2144, + "end": 2149, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2126, + "end": 2150, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 2126, + "end": 2150, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2126, + "end": 2150, + "name": "tag", + "source": 40, + "value": "957" + }, + { + "begin": 2126, + "end": 2150, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2121, + "end": 2124, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2114, + "end": 2151, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2049, + "end": 2157, + "name": "POP", + "source": 40 + }, + { + "begin": 2049, + "end": 2157, + "name": "POP", + "source": 40 + }, + { + "begin": 2049, + "end": 2157, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2163, + "end": 2342, + "name": "tag", + "source": 40, + "value": "851" + }, + { + "begin": 2163, + "end": 2342, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2232, + "end": 2242, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2253, + "end": 2299, + "name": "PUSH [tag]", + "source": 40, + "value": "959" + }, + { + "begin": 2295, + "end": 2298, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2287, + "end": 2293, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2253, + "end": 2299, + "name": "PUSH [tag]", + "source": 40, + "value": "850" + }, + { + "begin": 2253, + "end": 2299, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2253, + "end": 2299, + "name": "tag", + "source": 40, + "value": "959" + }, + { + "begin": 2253, + "end": 2299, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2331, + "end": 2335, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2326, + "end": 2329, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2322, + "end": 2336, + "name": "ADD", + "source": 40 + }, + { + "begin": 2308, + "end": 2336, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2308, + "end": 2336, + "name": "POP", + "source": 40 + }, + { + "begin": 2163, + "end": 2342, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 2163, + "end": 2342, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2163, + "end": 2342, + "name": "POP", + "source": 40 + }, + { + "begin": 2163, + "end": 2342, + "name": "POP", + "source": 40 + }, + { + "begin": 2163, + "end": 2342, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2348, + "end": 2461, + "name": "tag", + "source": 40, + "value": "852" + }, + { + "begin": 2348, + "end": 2461, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2418, + "end": 2422, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2450, + "end": 2454, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2445, + "end": 2448, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2441, + "end": 2455, + "name": "ADD", + "source": 40 + }, + { + "begin": 2433, + "end": 2455, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2433, + "end": 2455, + "name": "POP", + "source": 40 + }, + { + "begin": 2348, + "end": 2461, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2348, + "end": 2461, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2348, + "end": 2461, + "name": "POP", + "source": 40 + }, + { + "begin": 2348, + "end": 2461, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2497, + "end": 3229, + "name": "tag", + "source": 40, + "value": "853" + }, + { + "begin": 2497, + "end": 3229, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2616, + "end": 2619, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2645, + "end": 2699, + "name": "PUSH [tag]", + "source": 40, + "value": "962" + }, + { + "begin": 2693, + "end": 2698, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2645, + "end": 2699, + "name": "PUSH [tag]", + "source": 40, + "value": "846" + }, + { + "begin": 2645, + "end": 2699, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2645, + "end": 2699, + "name": "tag", + "source": 40, + "value": "962" + }, + { + "begin": 2645, + "end": 2699, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2715, + "end": 2801, + "name": "PUSH [tag]", + "source": 40, + "value": "963" + }, + { + "begin": 2794, + "end": 2800, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2789, + "end": 2792, + "name": "DUP6", + "source": 40 + }, + { + "begin": 2715, + "end": 2801, + "name": "PUSH [tag]", + "source": 40, + "value": "847" + }, + { + "begin": 2715, + "end": 2801, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2715, + "end": 2801, + "name": "tag", + "source": 40, + "value": "963" + }, + { + "begin": 2715, + "end": 2801, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2708, + "end": 2801, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 2708, + "end": 2801, + "name": "POP", + "source": 40 + }, + { + "begin": 2825, + "end": 2881, + "name": "PUSH [tag]", + "source": 40, + "value": "964" + }, + { + "begin": 2875, + "end": 2880, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2825, + "end": 2881, + "name": "PUSH [tag]", + "source": 40, + "value": "848" + }, + { + "begin": 2825, + "end": 2881, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2825, + "end": 2881, + "name": "tag", + "source": 40, + "value": "964" + }, + { + "begin": 2825, + "end": 2881, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2904, + "end": 2911, + "name": "DUP1", + "source": 40 + }, + { + "begin": 2935, + "end": 2936, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2920, + "end": 3204, + "name": "tag", + "source": 40, + "value": "965" + }, + { + "begin": 2920, + "end": 3204, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2945, + "end": 2951, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2942, + "end": 2943, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2939, + "end": 2952, + "name": "LT", + "source": 40 + }, + { + "begin": 2920, + "end": 3204, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2920, + "end": 3204, + "name": "PUSH [tag]", + "source": 40, + "value": "967" + }, + { + "begin": 2920, + "end": 3204, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3021, + "end": 3027, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3015, + "end": 3028, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 3048, + "end": 3111, + "name": "PUSH [tag]", + "source": 40, + "value": "968" + }, + { + "begin": 3107, + "end": 3110, + "name": "DUP9", + "source": 40 + }, + { + "begin": 3092, + "end": 3105, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3048, + "end": 3111, + "name": "PUSH [tag]", + "source": 40, + "value": "851" + }, + { + "begin": 3048, + "end": 3111, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3048, + "end": 3111, + "name": "tag", + "source": 40, + "value": "968" + }, + { + "begin": 3048, + "end": 3111, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3041, + "end": 3111, + "name": "SWAP8", + "source": 40 + }, + { + "begin": 3041, + "end": 3111, + "name": "POP", + "source": 40 + }, + { + "begin": 3134, + "end": 3194, + "name": "PUSH [tag]", + "source": 40, + "value": "969" + }, + { + "begin": 3187, + "end": 3193, + "name": "DUP4", + "source": 40 + }, + { + "begin": 3134, + "end": 3194, + "name": "PUSH [tag]", + "source": 40, + "value": "852" + }, + { + "begin": 3134, + "end": 3194, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3134, + "end": 3194, + "name": "tag", + "source": 40, + "value": "969" + }, + { + "begin": 3134, + "end": 3194, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3124, + "end": 3194, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3124, + "end": 3194, + "name": "POP", + "source": 40 + }, + { + "begin": 2980, + "end": 3204, + "name": "POP", + "source": 40 + }, + { + "begin": 2967, + "end": 2968, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 2964, + "end": 2965, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2960, + "end": 2969, + "name": "ADD", + "source": 40 + }, + { + "begin": 2955, + "end": 2969, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2955, + "end": 2969, + "name": "POP", + "source": 40 + }, + { + "begin": 2920, + "end": 3204, + "name": "PUSH [tag]", + "source": 40, + "value": "965" + }, + { + "begin": 2920, + "end": 3204, + "name": "JUMP", + "source": 40 + }, + { + "begin": 2920, + "end": 3204, + "name": "tag", + "source": 40, + "value": "967" + }, + { + "begin": 2920, + "end": 3204, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2924, + "end": 2938, + "name": "POP", + "source": 40 + }, + { + "begin": 3220, + "end": 3223, + "name": "DUP6", + "source": 40 + }, + { + "begin": 3213, + "end": 3223, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 3213, + "end": 3223, + "name": "POP", + "source": 40 + }, + { + "begin": 2621, + "end": 3229, + "name": "POP", + "source": 40 + }, + { + "begin": 2621, + "end": 3229, + "name": "POP", + "source": 40 + }, + { + "begin": 2621, + "end": 3229, + "name": "POP", + "source": 40 + }, + { + "begin": 2497, + "end": 3229, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 2497, + "end": 3229, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2497, + "end": 3229, + "name": "POP", + "source": 40 + }, + { + "begin": 2497, + "end": 3229, + "name": "POP", + "source": 40 + }, + { + "begin": 2497, + "end": 3229, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3235, + "end": 3608, + "name": "tag", + "source": 40, + "value": "63" + }, + { + "begin": 3235, + "end": 3608, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3378, + "end": 3382, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3416, + "end": 3418, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 3405, + "end": 3414, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3401, + "end": 3419, + "name": "ADD", + "source": 40 + }, + { + "begin": 3393, + "end": 3419, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 3393, + "end": 3419, + "name": "POP", + "source": 40 + }, + { + "begin": 3465, + "end": 3474, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3459, + "end": 3463, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3455, + "end": 3475, + "name": "SUB", + "source": 40 + }, + { + "begin": 3451, + "end": 3452, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3440, + "end": 3449, + "name": "DUP4", + "source": 40 + }, + { + "begin": 3436, + "end": 3453, + "name": "ADD", + "source": 40 + }, + { + "begin": 3429, + "end": 3476, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 3493, + "end": 3601, + "name": "PUSH [tag]", + "source": 40, + "value": "971" + }, + { + "begin": 3596, + "end": 3600, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3587, + "end": 3593, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3493, + "end": 3601, + "name": "PUSH [tag]", + "source": 40, + "value": "853" + }, + { + "begin": 3493, + "end": 3601, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3493, + "end": 3601, + "name": "tag", + "source": 40, + "value": "971" + }, + { + "begin": 3493, + "end": 3601, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3485, + "end": 3601, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 3485, + "end": 3601, + "name": "POP", + "source": 40 + }, + { + "begin": 3235, + "end": 3608, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3235, + "end": 3608, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3235, + "end": 3608, + "name": "POP", + "source": 40 + }, + { + "begin": 3235, + "end": 3608, + "name": "POP", + "source": 40 + }, + { + "begin": 3235, + "end": 3608, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3614, + "end": 3736, + "name": "tag", + "source": 40, + "value": "854" + }, + { + "begin": 3614, + "end": 3736, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3687, + "end": 3711, + "name": "PUSH [tag]", + "source": 40, + "value": "973" + }, + { + "begin": 3705, + "end": 3710, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3687, + "end": 3711, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 3687, + "end": 3711, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3687, + "end": 3711, + "name": "tag", + "source": 40, + "value": "973" + }, + { + "begin": 3687, + "end": 3711, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3680, + "end": 3685, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3677, + "end": 3712, + "name": "EQ", + "source": 40 + }, + { + "begin": 3667, + "end": 3730, + "name": "PUSH [tag]", + "source": 40, + "value": "974" + }, + { + "begin": 3667, + "end": 3730, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3726, + "end": 3727, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3723, + "end": 3724, + "name": "DUP1", + "source": 40 + }, + { + "begin": 3716, + "end": 3728, + "name": "REVERT", + "source": 40 + }, + { + "begin": 3667, + "end": 3730, + "name": "tag", + "source": 40, + "value": "974" + }, + { + "begin": 3667, + "end": 3730, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3614, + "end": 3736, + "name": "POP", + "source": 40 + }, + { + "begin": 3614, + "end": 3736, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3742, + "end": 3881, + "name": "tag", + "source": 40, + "value": "855" + }, + { + "begin": 3742, + "end": 3881, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3788, + "end": 3793, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3826, + "end": 3832, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3813, + "end": 3833, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 3804, + "end": 3833, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 3804, + "end": 3833, + "name": "POP", + "source": 40 + }, + { + "begin": 3842, + "end": 3875, + "name": "PUSH [tag]", + "source": 40, + "value": "976" + }, + { + "begin": 3869, + "end": 3874, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3842, + "end": 3875, + "name": "PUSH [tag]", + "source": 40, + "value": "854" + }, + { + "begin": 3842, + "end": 3875, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3842, + "end": 3875, + "name": "tag", + "source": 40, + "value": "976" + }, + { + "begin": 3842, + "end": 3875, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3742, + "end": 3881, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3742, + "end": 3881, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3742, + "end": 3881, + "name": "POP", + "source": 40 + }, + { + "begin": 3742, + "end": 3881, + "name": "POP", + "source": 40 + }, + { + "begin": 3742, + "end": 3881, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3887, + "end": 4216, + "name": "tag", + "source": 40, + "value": "66" + }, + { + "begin": 3887, + "end": 4216, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3946, + "end": 3952, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3995, + "end": 3997, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 3983, + "end": 3992, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3974, + "end": 3981, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3970, + "end": 3993, + "name": "SUB", + "source": 40 + }, + { + "begin": 3966, + "end": 3998, + "name": "SLT", + "source": 40 + }, + { + "begin": 3963, + "end": 4082, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 3963, + "end": 4082, + "name": "PUSH [tag]", + "source": 40, + "value": "978" + }, + { + "begin": 3963, + "end": 4082, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 4001, + "end": 4080, + "name": "PUSH [tag]", + "source": 40, + "value": "979" + }, + { + "begin": 4001, + "end": 4080, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 4001, + "end": 4080, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4001, + "end": 4080, + "name": "tag", + "source": 40, + "value": "979" + }, + { + "begin": 4001, + "end": 4080, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3963, + "end": 4082, + "name": "tag", + "source": 40, + "value": "978" + }, + { + "begin": 3963, + "end": 4082, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4121, + "end": 4122, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4146, + "end": 4199, + "name": "PUSH [tag]", + "source": 40, + "value": "980" + }, + { + "begin": 4191, + "end": 4198, + "name": "DUP5", + "source": 40 + }, + { + "begin": 4182, + "end": 4188, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4171, + "end": 4180, + "name": "DUP6", + "source": 40 + }, + { + "begin": 4167, + "end": 4189, + "name": "ADD", + "source": 40 + }, + { + "begin": 4146, + "end": 4199, + "name": "PUSH [tag]", + "source": 40, + "value": "855" + }, + { + "begin": 4146, + "end": 4199, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4146, + "end": 4199, + "name": "tag", + "source": 40, + "value": "980" + }, + { + "begin": 4146, + "end": 4199, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4136, + "end": 4199, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4136, + "end": 4199, + "name": "POP", + "source": 40 + }, + { + "begin": 4092, + "end": 4209, + "name": "POP", + "source": 40 + }, + { + "begin": 3887, + "end": 4216, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3887, + "end": 4216, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3887, + "end": 4216, + "name": "POP", + "source": 40 + }, + { + "begin": 3887, + "end": 4216, + "name": "POP", + "source": 40 + }, + { + "begin": 3887, + "end": 4216, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4222, + "end": 4348, + "name": "tag", + "source": 40, + "value": "856" + }, + { + "begin": 4222, + "end": 4348, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4259, + "end": 4266, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4299, + "end": 4341, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4292, + "end": 4297, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4288, + "end": 4342, + "name": "AND", + "source": 40 + }, + { + "begin": 4277, + "end": 4342, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4277, + "end": 4342, + "name": "POP", + "source": 40 + }, + { + "begin": 4222, + "end": 4348, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4222, + "end": 4348, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4222, + "end": 4348, + "name": "POP", + "source": 40 + }, + { + "begin": 4222, + "end": 4348, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4354, + "end": 4414, + "name": "tag", + "source": 40, + "value": "857" + }, + { + "begin": 4354, + "end": 4414, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4382, + "end": 4385, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4403, + "end": 4408, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4396, + "end": 4408, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4396, + "end": 4408, + "name": "POP", + "source": 40 + }, + { + "begin": 4354, + "end": 4414, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4354, + "end": 4414, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4354, + "end": 4414, + "name": "POP", + "source": 40 + }, + { + "begin": 4354, + "end": 4414, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4420, + "end": 4562, + "name": "tag", + "source": 40, + "value": "858" + }, + { + "begin": 4420, + "end": 4562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4470, + "end": 4479, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4503, + "end": 4556, + "name": "PUSH [tag]", + "source": 40, + "value": "984" + }, + { + "begin": 4521, + "end": 4555, + "name": "PUSH [tag]", + "source": 40, + "value": "985" + }, + { + "begin": 4530, + "end": 4554, + "name": "PUSH [tag]", + "source": 40, + "value": "986" + }, + { + "begin": 4548, + "end": 4553, + "name": "DUP5", + "source": 40 + }, + { + "begin": 4530, + "end": 4554, + "name": "PUSH [tag]", + "source": 40, + "value": "856" + }, + { + "begin": 4530, + "end": 4554, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4530, + "end": 4554, + "name": "tag", + "source": 40, + "value": "986" + }, + { + "begin": 4530, + "end": 4554, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4521, + "end": 4555, + "name": "PUSH [tag]", + "source": 40, + "value": "857" + }, + { + "begin": 4521, + "end": 4555, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4521, + "end": 4555, + "name": "tag", + "source": 40, + "value": "985" + }, + { + "begin": 4521, + "end": 4555, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4503, + "end": 4556, + "name": "PUSH [tag]", + "source": 40, + "value": "856" + }, + { + "begin": 4503, + "end": 4556, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4503, + "end": 4556, + "name": "tag", + "source": 40, + "value": "984" + }, + { + "begin": 4503, + "end": 4556, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4490, + "end": 4556, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4490, + "end": 4556, + "name": "POP", + "source": 40 + }, + { + "begin": 4420, + "end": 4562, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4420, + "end": 4562, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4420, + "end": 4562, + "name": "POP", + "source": 40 + }, + { + "begin": 4420, + "end": 4562, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4568, + "end": 4694, + "name": "tag", + "source": 40, + "value": "859" + }, + { + "begin": 4568, + "end": 4694, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4618, + "end": 4627, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4651, + "end": 4688, + "name": "PUSH [tag]", + "source": 40, + "value": "988" + }, + { + "begin": 4682, + "end": 4687, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4651, + "end": 4688, + "name": "PUSH [tag]", + "source": 40, + "value": "858" + }, + { + "begin": 4651, + "end": 4688, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4651, + "end": 4688, + "name": "tag", + "source": 40, + "value": "988" + }, + { + "begin": 4651, + "end": 4688, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4638, + "end": 4688, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4638, + "end": 4688, + "name": "POP", + "source": 40 + }, + { + "begin": 4568, + "end": 4694, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4568, + "end": 4694, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4568, + "end": 4694, + "name": "POP", + "source": 40 + }, + { + "begin": 4568, + "end": 4694, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4700, + "end": 4841, + "name": "tag", + "source": 40, + "value": "860" + }, + { + "begin": 4700, + "end": 4841, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4765, + "end": 4774, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4798, + "end": 4835, + "name": "PUSH [tag]", + "source": 40, + "value": "990" + }, + { + "begin": 4829, + "end": 4834, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4798, + "end": 4835, + "name": "PUSH [tag]", + "source": 40, + "value": "859" + }, + { + "begin": 4798, + "end": 4835, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4798, + "end": 4835, + "name": "tag", + "source": 40, + "value": "990" + }, + { + "begin": 4798, + "end": 4835, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4785, + "end": 4835, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4785, + "end": 4835, + "name": "POP", + "source": 40 + }, + { + "begin": 4700, + "end": 4841, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4700, + "end": 4841, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4700, + "end": 4841, + "name": "POP", + "source": 40 + }, + { + "begin": 4700, + "end": 4841, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4847, + "end": 5008, + "name": "tag", + "source": 40, + "value": "861" + }, + { + "begin": 4847, + "end": 5008, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4949, + "end": 5001, + "name": "PUSH [tag]", + "source": 40, + "value": "992" + }, + { + "begin": 4995, + "end": 5000, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4949, + "end": 5001, + "name": "PUSH [tag]", + "source": 40, + "value": "860" + }, + { + "begin": 4949, + "end": 5001, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4949, + "end": 5001, + "name": "tag", + "source": 40, + "value": "992" + }, + { + "begin": 4949, + "end": 5001, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4944, + "end": 4947, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4937, + "end": 5002, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 4847, + "end": 5008, + "name": "POP", + "source": 40 + }, + { + "begin": 4847, + "end": 5008, + "name": "POP", + "source": 40 + }, + { + "begin": 4847, + "end": 5008, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5014, + "end": 5266, + "name": "tag", + "source": 40, + "value": "69" + }, + { + "begin": 5014, + "end": 5266, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5122, + "end": 5126, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5160, + "end": 5162, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 5149, + "end": 5158, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5145, + "end": 5163, + "name": "ADD", + "source": 40 + }, + { + "begin": 5137, + "end": 5163, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5137, + "end": 5163, + "name": "POP", + "source": 40 + }, + { + "begin": 5173, + "end": 5259, + "name": "PUSH [tag]", + "source": 40, + "value": "994" + }, + { + "begin": 5256, + "end": 5257, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5245, + "end": 5254, + "name": "DUP4", + "source": 40 + }, + { + "begin": 5241, + "end": 5258, + "name": "ADD", + "source": 40 + }, + { + "begin": 5232, + "end": 5238, + "name": "DUP5", + "source": 40 + }, + { + "begin": 5173, + "end": 5259, + "name": "PUSH [tag]", + "source": 40, + "value": "861" + }, + { + "begin": 5173, + "end": 5259, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5173, + "end": 5259, + "name": "tag", + "source": 40, + "value": "994" + }, + { + "begin": 5173, + "end": 5259, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5014, + "end": 5266, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 5014, + "end": 5266, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5014, + "end": 5266, + "name": "POP", + "source": 40 + }, + { + "begin": 5014, + "end": 5266, + "name": "POP", + "source": 40 + }, + { + "begin": 5014, + "end": 5266, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5272, + "end": 5368, + "name": "tag", + "source": 40, + "value": "862" + }, + { + "begin": 5272, + "end": 5368, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5309, + "end": 5316, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5338, + "end": 5362, + "name": "PUSH [tag]", + "source": 40, + "value": "996" + }, + { + "begin": 5356, + "end": 5361, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5338, + "end": 5362, + "name": "PUSH [tag]", + "source": 40, + "value": "856" + }, + { + "begin": 5338, + "end": 5362, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5338, + "end": 5362, + "name": "tag", + "source": 40, + "value": "996" + }, + { + "begin": 5338, + "end": 5362, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5327, + "end": 5362, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5327, + "end": 5362, + "name": "POP", + "source": 40 + }, + { + "begin": 5272, + "end": 5368, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5272, + "end": 5368, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5272, + "end": 5368, + "name": "POP", + "source": 40 + }, + { + "begin": 5272, + "end": 5368, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5374, + "end": 5485, + "name": "tag", + "source": 40, + "value": "863" + }, + { + "begin": 5374, + "end": 5485, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5426, + "end": 5433, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5455, + "end": 5479, + "name": "PUSH [tag]", + "source": 40, + "value": "998" + }, + { + "begin": 5473, + "end": 5478, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5455, + "end": 5479, + "name": "PUSH [tag]", + "source": 40, + "value": "862" + }, + { + "begin": 5455, + "end": 5479, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5455, + "end": 5479, + "name": "tag", + "source": 40, + "value": "998" + }, + { + "begin": 5455, + "end": 5479, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5444, + "end": 5479, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5444, + "end": 5479, + "name": "POP", + "source": 40 + }, + { + "begin": 5374, + "end": 5485, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5374, + "end": 5485, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5374, + "end": 5485, + "name": "POP", + "source": 40 + }, + { + "begin": 5374, + "end": 5485, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5491, + "end": 5643, + "name": "tag", + "source": 40, + "value": "864" + }, + { + "begin": 5491, + "end": 5643, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5579, + "end": 5618, + "name": "PUSH [tag]", + "source": 40, + "value": "1000" + }, + { + "begin": 5612, + "end": 5617, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5579, + "end": 5618, + "name": "PUSH [tag]", + "source": 40, + "value": "863" + }, + { + "begin": 5579, + "end": 5618, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5579, + "end": 5618, + "name": "tag", + "source": 40, + "value": "1000" + }, + { + "begin": 5579, + "end": 5618, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5572, + "end": 5577, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5569, + "end": 5619, + "name": "EQ", + "source": 40 + }, + { + "begin": 5559, + "end": 5637, + "name": "PUSH [tag]", + "source": 40, + "value": "1001" + }, + { + "begin": 5559, + "end": 5637, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 5633, + "end": 5634, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5630, + "end": 5631, + "name": "DUP1", + "source": 40 + }, + { + "begin": 5623, + "end": 5635, + "name": "REVERT", + "source": 40 + }, + { + "begin": 5559, + "end": 5637, + "name": "tag", + "source": 40, + "value": "1001" + }, + { + "begin": 5559, + "end": 5637, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5491, + "end": 5643, + "name": "POP", + "source": 40 + }, + { + "begin": 5491, + "end": 5643, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5649, + "end": 5818, + "name": "tag", + "source": 40, + "value": "865" + }, + { + "begin": 5649, + "end": 5818, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5710, + "end": 5715, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5748, + "end": 5754, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5735, + "end": 5755, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 5726, + "end": 5755, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5726, + "end": 5755, + "name": "POP", + "source": 40 + }, + { + "begin": 5764, + "end": 5812, + "name": "PUSH [tag]", + "source": 40, + "value": "1003" + }, + { + "begin": 5806, + "end": 5811, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5764, + "end": 5812, + "name": "PUSH [tag]", + "source": 40, + "value": "864" + }, + { + "begin": 5764, + "end": 5812, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5764, + "end": 5812, + "name": "tag", + "source": 40, + "value": "1003" + }, + { + "begin": 5764, + "end": 5812, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5649, + "end": 5818, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 5649, + "end": 5818, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5649, + "end": 5818, + "name": "POP", + "source": 40 + }, + { + "begin": 5649, + "end": 5818, + "name": "POP", + "source": 40 + }, + { + "begin": 5649, + "end": 5818, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5824, + "end": 5913, + "name": "tag", + "source": 40, + "value": "866" + }, + { + "begin": 5824, + "end": 5913, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5860, + "end": 5867, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5900, + "end": 5906, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 5893, + "end": 5898, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5889, + "end": 5907, + "name": "AND", + "source": 40 + }, + { + "begin": 5878, + "end": 5907, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5878, + "end": 5907, + "name": "POP", + "source": 40 + }, + { + "begin": 5824, + "end": 5913, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5824, + "end": 5913, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5824, + "end": 5913, + "name": "POP", + "source": 40 + }, + { + "begin": 5824, + "end": 5913, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5919, + "end": 6039, + "name": "tag", + "source": 40, + "value": "867" + }, + { + "begin": 5919, + "end": 6039, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5991, + "end": 6014, + "name": "PUSH [tag]", + "source": 40, + "value": "1006" + }, + { + "begin": 6008, + "end": 6013, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5991, + "end": 6014, + "name": "PUSH [tag]", + "source": 40, + "value": "866" + }, + { + "begin": 5991, + "end": 6014, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5991, + "end": 6014, + "name": "tag", + "source": 40, + "value": "1006" + }, + { + "begin": 5991, + "end": 6014, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5984, + "end": 5989, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5981, + "end": 6015, + "name": "EQ", + "source": 40 + }, + { + "begin": 5971, + "end": 6033, + "name": "PUSH [tag]", + "source": 40, + "value": "1007" + }, + { + "begin": 5971, + "end": 6033, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6029, + "end": 6030, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6026, + "end": 6027, + "name": "DUP1", + "source": 40 + }, + { + "begin": 6019, + "end": 6031, + "name": "REVERT", + "source": 40 + }, + { + "begin": 5971, + "end": 6033, + "name": "tag", + "source": 40, + "value": "1007" + }, + { + "begin": 5971, + "end": 6033, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5919, + "end": 6039, + "name": "POP", + "source": 40 + }, + { + "begin": 5919, + "end": 6039, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6045, + "end": 6182, + "name": "tag", + "source": 40, + "value": "868" + }, + { + "begin": 6045, + "end": 6182, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6090, + "end": 6095, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6128, + "end": 6134, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6115, + "end": 6135, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 6106, + "end": 6135, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 6106, + "end": 6135, + "name": "POP", + "source": 40 + }, + { + "begin": 6144, + "end": 6176, + "name": "PUSH [tag]", + "source": 40, + "value": "1009" + }, + { + "begin": 6170, + "end": 6175, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6144, + "end": 6176, + "name": "PUSH [tag]", + "source": 40, + "value": "867" + }, + { + "begin": 6144, + "end": 6176, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6144, + "end": 6176, + "name": "tag", + "source": 40, + "value": "1009" + }, + { + "begin": 6144, + "end": 6176, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6045, + "end": 6182, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6045, + "end": 6182, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6045, + "end": 6182, + "name": "POP", + "source": 40 + }, + { + "begin": 6045, + "end": 6182, + "name": "POP", + "source": 40 + }, + { + "begin": 6045, + "end": 6182, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6188, + "end": 6279, + "name": "tag", + "source": 40, + "value": "869" + }, + { + "begin": 6188, + "end": 6279, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6224, + "end": 6231, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6264, + "end": 6272, + "name": "PUSH", + "source": 40, + "value": "FFFFFF" + }, + { + "begin": 6257, + "end": 6262, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6253, + "end": 6273, + "name": "AND", + "source": 40 + }, + { + "begin": 6242, + "end": 6273, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 6242, + "end": 6273, + "name": "POP", + "source": 40 + }, + { + "begin": 6188, + "end": 6279, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6188, + "end": 6279, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 6188, + "end": 6279, + "name": "POP", + "source": 40 + }, + { + "begin": 6188, + "end": 6279, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6285, + "end": 6405, + "name": "tag", + "source": 40, + "value": "870" + }, + { + "begin": 6285, + "end": 6405, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6357, + "end": 6380, + "name": "PUSH [tag]", + "source": 40, + "value": "1012" + }, + { + "begin": 6374, + "end": 6379, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6357, + "end": 6380, + "name": "PUSH [tag]", + "source": 40, + "value": "869" + }, + { + "begin": 6357, + "end": 6380, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6357, + "end": 6380, + "name": "tag", + "source": 40, + "value": "1012" + }, + { + "begin": 6357, + "end": 6380, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6350, + "end": 6355, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6347, + "end": 6381, + "name": "EQ", + "source": 40 + }, + { + "begin": 6337, + "end": 6399, + "name": "PUSH [tag]", + "source": 40, + "value": "1013" + }, + { + "begin": 6337, + "end": 6399, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6395, + "end": 6396, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6392, + "end": 6393, + "name": "DUP1", + "source": 40 + }, + { + "begin": 6385, + "end": 6397, + "name": "REVERT", + "source": 40 + }, + { + "begin": 6337, + "end": 6399, + "name": "tag", + "source": 40, + "value": "1013" + }, + { + "begin": 6337, + "end": 6399, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6285, + "end": 6405, + "name": "POP", + "source": 40 + }, + { + "begin": 6285, + "end": 6405, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6411, + "end": 6548, + "name": "tag", + "source": 40, + "value": "871" + }, + { + "begin": 6411, + "end": 6548, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6456, + "end": 6461, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6494, + "end": 6500, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6481, + "end": 6501, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 6472, + "end": 6501, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 6472, + "end": 6501, + "name": "POP", + "source": 40 + }, + { + "begin": 6510, + "end": 6542, + "name": "PUSH [tag]", + "source": 40, + "value": "1015" + }, + { + "begin": 6536, + "end": 6541, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6510, + "end": 6542, + "name": "PUSH [tag]", + "source": 40, + "value": "870" + }, + { + "begin": 6510, + "end": 6542, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6510, + "end": 6542, + "name": "tag", + "source": 40, + "value": "1015" + }, + { + "begin": 6510, + "end": 6542, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6411, + "end": 6548, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6411, + "end": 6548, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6411, + "end": 6548, + "name": "POP", + "source": 40 + }, + { + "begin": 6411, + "end": 6548, + "name": "POP", + "source": 40 + }, + { + "begin": 6411, + "end": 6548, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "tag", + "source": 40, + "value": "72" + }, + { + "begin": 6554, + "end": 8239, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6716, + "end": 6722, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6724, + "end": 6730, + "name": "DUP1", + "source": 40 + }, + { + "begin": 6732, + "end": 6738, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6740, + "end": 6746, + "name": "DUP1", + "source": 40 + }, + { + "begin": 6748, + "end": 6754, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6756, + "end": 6762, + "name": "DUP1", + "source": 40 + }, + { + "begin": 6764, + "end": 6770, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6772, + "end": 6778, + "name": "DUP1", + "source": 40 + }, + { + "begin": 6780, + "end": 6786, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6788, + "end": 6794, + "name": "DUP1", + "source": 40 + }, + { + "begin": 6837, + "end": 6840, + "name": "PUSH", + "source": 40, + "value": "140" + }, + { + "begin": 6825, + "end": 6834, + "name": "DUP12", + "source": 40 + }, + { + "begin": 6816, + "end": 6823, + "name": "DUP14", + "source": 40 + }, + { + "begin": 6812, + "end": 6835, + "name": "SUB", + "source": 40 + }, + { + "begin": 6808, + "end": 6841, + "name": "SLT", + "source": 40 + }, + { + "begin": 6805, + "end": 6925, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 6805, + "end": 6925, + "name": "PUSH [tag]", + "source": 40, + "value": "1017" + }, + { + "begin": 6805, + "end": 6925, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6844, + "end": 6923, + "name": "PUSH [tag]", + "source": 40, + "value": "1018" + }, + { + "begin": 6844, + "end": 6923, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 6844, + "end": 6923, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6844, + "end": 6923, + "name": "tag", + "source": 40, + "value": "1018" + }, + { + "begin": 6844, + "end": 6923, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6805, + "end": 6925, + "name": "tag", + "source": 40, + "value": "1017" + }, + { + "begin": 6805, + "end": 6925, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6964, + "end": 6965, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6989, + "end": 7057, + "name": "PUSH [tag]", + "source": 40, + "value": "1019" + }, + { + "begin": 7049, + "end": 7056, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7040, + "end": 7046, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7029, + "end": 7038, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7025, + "end": 7047, + "name": "ADD", + "source": 40 + }, + { + "begin": 6989, + "end": 7057, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 6989, + "end": 7057, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6989, + "end": 7057, + "name": "tag", + "source": 40, + "value": "1019" + }, + { + "begin": 6989, + "end": 7057, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6979, + "end": 7057, + "name": "SWAP11", + "source": 40 + }, + { + "begin": 6979, + "end": 7057, + "name": "POP", + "source": 40 + }, + { + "begin": 6935, + "end": 7067, + "name": "POP", + "source": 40 + }, + { + "begin": 7106, + "end": 7108, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 7132, + "end": 7200, + "name": "PUSH [tag]", + "source": 40, + "value": "1020" + }, + { + "begin": 7192, + "end": 7199, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7183, + "end": 7189, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7172, + "end": 7181, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7168, + "end": 7190, + "name": "ADD", + "source": 40 + }, + { + "begin": 7132, + "end": 7200, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 7132, + "end": 7200, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7132, + "end": 7200, + "name": "tag", + "source": 40, + "value": "1020" + }, + { + "begin": 7132, + "end": 7200, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7122, + "end": 7200, + "name": "SWAP10", + "source": 40 + }, + { + "begin": 7122, + "end": 7200, + "name": "POP", + "source": 40 + }, + { + "begin": 7077, + "end": 7210, + "name": "POP", + "source": 40 + }, + { + "begin": 7249, + "end": 7251, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 7275, + "end": 7327, + "name": "PUSH [tag]", + "source": 40, + "value": "1021" + }, + { + "begin": 7319, + "end": 7326, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7310, + "end": 7316, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7299, + "end": 7308, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7295, + "end": 7317, + "name": "ADD", + "source": 40 + }, + { + "begin": 7275, + "end": 7327, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 7275, + "end": 7327, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7275, + "end": 7327, + "name": "tag", + "source": 40, + "value": "1021" + }, + { + "begin": 7275, + "end": 7327, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7265, + "end": 7327, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 7265, + "end": 7327, + "name": "POP", + "source": 40 + }, + { + "begin": 7220, + "end": 7337, + "name": "POP", + "source": 40 + }, + { + "begin": 7376, + "end": 7378, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 7402, + "end": 7454, + "name": "PUSH [tag]", + "source": 40, + "value": "1022" + }, + { + "begin": 7446, + "end": 7453, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7437, + "end": 7443, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7426, + "end": 7435, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7422, + "end": 7444, + "name": "ADD", + "source": 40 + }, + { + "begin": 7402, + "end": 7454, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 7402, + "end": 7454, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7402, + "end": 7454, + "name": "tag", + "source": 40, + "value": "1022" + }, + { + "begin": 7402, + "end": 7454, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7392, + "end": 7454, + "name": "SWAP8", + "source": 40 + }, + { + "begin": 7392, + "end": 7454, + "name": "POP", + "source": 40 + }, + { + "begin": 7347, + "end": 7464, + "name": "POP", + "source": 40 + }, + { + "begin": 7503, + "end": 7506, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 7530, + "end": 7582, + "name": "PUSH [tag]", + "source": 40, + "value": "1023" + }, + { + "begin": 7574, + "end": 7581, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7565, + "end": 7571, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7554, + "end": 7563, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7550, + "end": 7572, + "name": "ADD", + "source": 40 + }, + { + "begin": 7530, + "end": 7582, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 7530, + "end": 7582, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7530, + "end": 7582, + "name": "tag", + "source": 40, + "value": "1023" + }, + { + "begin": 7530, + "end": 7582, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7520, + "end": 7582, + "name": "SWAP7", + "source": 40 + }, + { + "begin": 7520, + "end": 7582, + "name": "POP", + "source": 40 + }, + { + "begin": 7474, + "end": 7592, + "name": "POP", + "source": 40 + }, + { + "begin": 7631, + "end": 7634, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 7658, + "end": 7710, + "name": "PUSH [tag]", + "source": 40, + "value": "1024" + }, + { + "begin": 7702, + "end": 7709, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7693, + "end": 7699, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7682, + "end": 7691, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7678, + "end": 7700, + "name": "ADD", + "source": 40 + }, + { + "begin": 7658, + "end": 7710, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 7658, + "end": 7710, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7658, + "end": 7710, + "name": "tag", + "source": 40, + "value": "1024" + }, + { + "begin": 7658, + "end": 7710, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7648, + "end": 7710, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 7648, + "end": 7710, + "name": "POP", + "source": 40 + }, + { + "begin": 7602, + "end": 7720, + "name": "POP", + "source": 40 + }, + { + "begin": 7759, + "end": 7762, + "name": "PUSH", + "source": 40, + "value": "C0" + }, + { + "begin": 7786, + "end": 7838, + "name": "PUSH [tag]", + "source": 40, + "value": "1025" + }, + { + "begin": 7830, + "end": 7837, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7821, + "end": 7827, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7810, + "end": 7819, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7806, + "end": 7828, + "name": "ADD", + "source": 40 + }, + { + "begin": 7786, + "end": 7838, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 7786, + "end": 7838, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7786, + "end": 7838, + "name": "tag", + "source": 40, + "value": "1025" + }, + { + "begin": 7786, + "end": 7838, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7776, + "end": 7838, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 7776, + "end": 7838, + "name": "POP", + "source": 40 + }, + { + "begin": 7730, + "end": 7848, + "name": "POP", + "source": 40 + }, + { + "begin": 7887, + "end": 7890, + "name": "PUSH", + "source": 40, + "value": "E0" + }, + { + "begin": 7914, + "end": 7966, + "name": "PUSH [tag]", + "source": 40, + "value": "1026" + }, + { + "begin": 7958, + "end": 7965, + "name": "DUP14", + "source": 40 + }, + { + "begin": 7949, + "end": 7955, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7938, + "end": 7947, + "name": "DUP15", + "source": 40 + }, + { + "begin": 7934, + "end": 7956, + "name": "ADD", + "source": 40 + }, + { + "begin": 7914, + "end": 7966, + "name": "PUSH [tag]", + "source": 40, + "value": "871" + }, + { + "begin": 7914, + "end": 7966, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7914, + "end": 7966, + "name": "tag", + "source": 40, + "value": "1026" + }, + { + "begin": 7914, + "end": 7966, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7904, + "end": 7966, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 7904, + "end": 7966, + "name": "POP", + "source": 40 + }, + { + "begin": 7858, + "end": 7976, + "name": "POP", + "source": 40 + }, + { + "begin": 8015, + "end": 8018, + "name": "PUSH", + "source": 40, + "value": "100" + }, + { + "begin": 8042, + "end": 8094, + "name": "PUSH [tag]", + "source": 40, + "value": "1027" + }, + { + "begin": 8086, + "end": 8093, + "name": "DUP14", + "source": 40 + }, + { + "begin": 8077, + "end": 8083, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8066, + "end": 8075, + "name": "DUP15", + "source": 40 + }, + { + "begin": 8062, + "end": 8084, + "name": "ADD", + "source": 40 + }, + { + "begin": 8042, + "end": 8094, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 8042, + "end": 8094, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8042, + "end": 8094, + "name": "tag", + "source": 40, + "value": "1027" + }, + { + "begin": 8042, + "end": 8094, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8032, + "end": 8094, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 8032, + "end": 8094, + "name": "POP", + "source": 40 + }, + { + "begin": 7986, + "end": 8104, + "name": "POP", + "source": 40 + }, + { + "begin": 8143, + "end": 8146, + "name": "PUSH", + "source": 40, + "value": "120" + }, + { + "begin": 8170, + "end": 8222, + "name": "PUSH [tag]", + "source": 40, + "value": "1028" + }, + { + "begin": 8214, + "end": 8221, + "name": "DUP14", + "source": 40 + }, + { + "begin": 8205, + "end": 8211, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8194, + "end": 8203, + "name": "DUP15", + "source": 40 + }, + { + "begin": 8190, + "end": 8212, + "name": "ADD", + "source": 40 + }, + { + "begin": 8170, + "end": 8222, + "name": "PUSH [tag]", + "source": 40, + "value": "871" + }, + { + "begin": 8170, + "end": 8222, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8170, + "end": 8222, + "name": "tag", + "source": 40, + "value": "1028" + }, + { + "begin": 8170, + "end": 8222, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8160, + "end": 8222, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8160, + "end": 8222, + "name": "POP", + "source": 40 + }, + { + "begin": 8114, + "end": 8232, + "name": "POP", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP12", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP8", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP11", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "POP", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "name": "POP", + "source": 40 + }, + { + "begin": 6554, + "end": 8239, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8245, + "end": 8322, + "name": "tag", + "source": 40, + "value": "872" + }, + { + "begin": 8245, + "end": 8322, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8282, + "end": 8289, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8311, + "end": 8316, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8300, + "end": 8316, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8300, + "end": 8316, + "name": "POP", + "source": 40 + }, + { + "begin": 8245, + "end": 8322, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8245, + "end": 8322, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8245, + "end": 8322, + "name": "POP", + "source": 40 + }, + { + "begin": 8245, + "end": 8322, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8328, + "end": 8446, + "name": "tag", + "source": 40, + "value": "873" + }, + { + "begin": 8328, + "end": 8446, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8415, + "end": 8439, + "name": "PUSH [tag]", + "source": 40, + "value": "1031" + }, + { + "begin": 8433, + "end": 8438, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8415, + "end": 8439, + "name": "PUSH [tag]", + "source": 40, + "value": "872" + }, + { + "begin": 8415, + "end": 8439, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8415, + "end": 8439, + "name": "tag", + "source": 40, + "value": "1031" + }, + { + "begin": 8415, + "end": 8439, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8410, + "end": 8413, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8403, + "end": 8440, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 8328, + "end": 8446, + "name": "POP", + "source": 40 + }, + { + "begin": 8328, + "end": 8446, + "name": "POP", + "source": 40 + }, + { + "begin": 8328, + "end": 8446, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8452, + "end": 8674, + "name": "tag", + "source": 40, + "value": "77" + }, + { + "begin": 8452, + "end": 8674, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8545, + "end": 8549, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8583, + "end": 8585, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 8572, + "end": 8581, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8568, + "end": 8586, + "name": "ADD", + "source": 40 + }, + { + "begin": 8560, + "end": 8586, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8560, + "end": 8586, + "name": "POP", + "source": 40 + }, + { + "begin": 8596, + "end": 8667, + "name": "PUSH [tag]", + "source": 40, + "value": "1033" + }, + { + "begin": 8664, + "end": 8665, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8653, + "end": 8662, + "name": "DUP4", + "source": 40 + }, + { + "begin": 8649, + "end": 8666, + "name": "ADD", + "source": 40 + }, + { + "begin": 8640, + "end": 8646, + "name": "DUP5", + "source": 40 + }, + { + "begin": 8596, + "end": 8667, + "name": "PUSH [tag]", + "source": 40, + "value": "873" + }, + { + "begin": 8596, + "end": 8667, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8596, + "end": 8667, + "name": "tag", + "source": 40, + "value": "1033" + }, + { + "begin": 8596, + "end": 8667, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8452, + "end": 8674, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 8452, + "end": 8674, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8452, + "end": 8674, + "name": "POP", + "source": 40 + }, + { + "begin": 8452, + "end": 8674, + "name": "POP", + "source": 40 + }, + { + "begin": 8452, + "end": 8674, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8680, + "end": 8802, + "name": "tag", + "source": 40, + "value": "874" + }, + { + "begin": 8680, + "end": 8802, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8753, + "end": 8777, + "name": "PUSH [tag]", + "source": 40, + "value": "1035" + }, + { + "begin": 8771, + "end": 8776, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8753, + "end": 8777, + "name": "PUSH [tag]", + "source": 40, + "value": "872" + }, + { + "begin": 8753, + "end": 8777, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8753, + "end": 8777, + "name": "tag", + "source": 40, + "value": "1035" + }, + { + "begin": 8753, + "end": 8777, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8746, + "end": 8751, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8743, + "end": 8778, + "name": "EQ", + "source": 40 + }, + { + "begin": 8733, + "end": 8796, + "name": "PUSH [tag]", + "source": 40, + "value": "1036" + }, + { + "begin": 8733, + "end": 8796, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 8792, + "end": 8793, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8789, + "end": 8790, + "name": "DUP1", + "source": 40 + }, + { + "begin": 8782, + "end": 8794, + "name": "REVERT", + "source": 40 + }, + { + "begin": 8733, + "end": 8796, + "name": "tag", + "source": 40, + "value": "1036" + }, + { + "begin": 8733, + "end": 8796, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8680, + "end": 8802, + "name": "POP", + "source": 40 + }, + { + "begin": 8680, + "end": 8802, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8808, + "end": 8947, + "name": "tag", + "source": 40, + "value": "875" + }, + { + "begin": 8808, + "end": 8947, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8854, + "end": 8859, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8892, + "end": 8898, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8879, + "end": 8899, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 8870, + "end": 8899, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8870, + "end": 8899, + "name": "POP", + "source": 40 + }, + { + "begin": 8908, + "end": 8941, + "name": "PUSH [tag]", + "source": 40, + "value": "1038" + }, + { + "begin": 8935, + "end": 8940, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8908, + "end": 8941, + "name": "PUSH [tag]", + "source": 40, + "value": "874" + }, + { + "begin": 8908, + "end": 8941, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8908, + "end": 8941, + "name": "tag", + "source": 40, + "value": "1038" + }, + { + "begin": 8908, + "end": 8941, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8808, + "end": 8947, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 8808, + "end": 8947, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8808, + "end": 8947, + "name": "POP", + "source": 40 + }, + { + "begin": 8808, + "end": 8947, + "name": "POP", + "source": 40 + }, + { + "begin": 8808, + "end": 8947, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8953, + "end": 9282, + "name": "tag", + "source": 40, + "value": "80" + }, + { + "begin": 8953, + "end": 9282, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9012, + "end": 9018, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9061, + "end": 9063, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 9049, + "end": 9058, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9040, + "end": 9047, + "name": "DUP5", + "source": 40 + }, + { + "begin": 9036, + "end": 9059, + "name": "SUB", + "source": 40 + }, + { + "begin": 9032, + "end": 9064, + "name": "SLT", + "source": 40 + }, + { + "begin": 9029, + "end": 9148, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 9029, + "end": 9148, + "name": "PUSH [tag]", + "source": 40, + "value": "1040" + }, + { + "begin": 9029, + "end": 9148, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 9067, + "end": 9146, + "name": "PUSH [tag]", + "source": 40, + "value": "1041" + }, + { + "begin": 9067, + "end": 9146, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 9067, + "end": 9146, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9067, + "end": 9146, + "name": "tag", + "source": 40, + "value": "1041" + }, + { + "begin": 9067, + "end": 9146, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9029, + "end": 9148, + "name": "tag", + "source": 40, + "value": "1040" + }, + { + "begin": 9029, + "end": 9148, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9187, + "end": 9188, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9212, + "end": 9265, + "name": "PUSH [tag]", + "source": 40, + "value": "1042" + }, + { + "begin": 9257, + "end": 9264, + "name": "DUP5", + "source": 40 + }, + { + "begin": 9248, + "end": 9254, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9237, + "end": 9246, + "name": "DUP6", + "source": 40 + }, + { + "begin": 9233, + "end": 9255, + "name": "ADD", + "source": 40 + }, + { + "begin": 9212, + "end": 9265, + "name": "PUSH [tag]", + "source": 40, + "value": "875" + }, + { + "begin": 9212, + "end": 9265, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9212, + "end": 9265, + "name": "tag", + "source": 40, + "value": "1042" + }, + { + "begin": 9212, + "end": 9265, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9202, + "end": 9265, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9202, + "end": 9265, + "name": "POP", + "source": 40 + }, + { + "begin": 9158, + "end": 9275, + "name": "POP", + "source": 40 + }, + { + "begin": 8953, + "end": 9282, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 8953, + "end": 9282, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8953, + "end": 9282, + "name": "POP", + "source": 40 + }, + { + "begin": 8953, + "end": 9282, + "name": "POP", + "source": 40 + }, + { + "begin": 8953, + "end": 9282, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9288, + "end": 9647, + "name": "tag", + "source": 40, + "value": "85" + }, + { + "begin": 9288, + "end": 9647, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9362, + "end": 9368, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9411, + "end": 9413, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 9399, + "end": 9408, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9390, + "end": 9397, + "name": "DUP5", + "source": 40 + }, + { + "begin": 9386, + "end": 9409, + "name": "SUB", + "source": 40 + }, + { + "begin": 9382, + "end": 9414, + "name": "SLT", + "source": 40 + }, + { + "begin": 9379, + "end": 9498, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 9379, + "end": 9498, + "name": "PUSH [tag]", + "source": 40, + "value": "1044" + }, + { + "begin": 9379, + "end": 9498, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 9417, + "end": 9496, + "name": "PUSH [tag]", + "source": 40, + "value": "1045" + }, + { + "begin": 9417, + "end": 9496, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 9417, + "end": 9496, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9417, + "end": 9496, + "name": "tag", + "source": 40, + "value": "1045" + }, + { + "begin": 9417, + "end": 9496, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9379, + "end": 9498, + "name": "tag", + "source": 40, + "value": "1044" + }, + { + "begin": 9379, + "end": 9498, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9537, + "end": 9538, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9562, + "end": 9630, + "name": "PUSH [tag]", + "source": 40, + "value": "1046" + }, + { + "begin": 9622, + "end": 9629, + "name": "DUP5", + "source": 40 + }, + { + "begin": 9613, + "end": 9619, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9602, + "end": 9611, + "name": "DUP6", + "source": 40 + }, + { + "begin": 9598, + "end": 9620, + "name": "ADD", + "source": 40 + }, + { + "begin": 9562, + "end": 9630, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 9562, + "end": 9630, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9562, + "end": 9630, + "name": "tag", + "source": 40, + "value": "1046" + }, + { + "begin": 9562, + "end": 9630, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9552, + "end": 9630, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9552, + "end": 9630, + "name": "POP", + "source": 40 + }, + { + "begin": 9508, + "end": 9640, + "name": "POP", + "source": 40 + }, + { + "begin": 9288, + "end": 9647, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9288, + "end": 9647, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9288, + "end": 9647, + "name": "POP", + "source": 40 + }, + { + "begin": 9288, + "end": 9647, + "name": "POP", + "source": 40 + }, + { + "begin": 9288, + "end": 9647, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9653, + "end": 10330, + "name": "tag", + "source": 40, + "value": "90" + }, + { + "begin": 9653, + "end": 10330, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9759, + "end": 9765, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9767, + "end": 9773, + "name": "DUP1", + "source": 40 + }, + { + "begin": 9775, + "end": 9781, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9824, + "end": 9826, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 9812, + "end": 9821, + "name": "DUP5", + "source": 40 + }, + { + "begin": 9803, + "end": 9810, + "name": "DUP7", + "source": 40 + }, + { + "begin": 9799, + "end": 9822, + "name": "SUB", + "source": 40 + }, + { + "begin": 9795, + "end": 9827, + "name": "SLT", + "source": 40 + }, + { + "begin": 9792, + "end": 9911, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 9792, + "end": 9911, + "name": "PUSH [tag]", + "source": 40, + "value": "1048" + }, + { + "begin": 9792, + "end": 9911, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 9830, + "end": 9909, + "name": "PUSH [tag]", + "source": 40, + "value": "1049" + }, + { + "begin": 9830, + "end": 9909, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 9830, + "end": 9909, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9830, + "end": 9909, + "name": "tag", + "source": 40, + "value": "1049" + }, + { + "begin": 9830, + "end": 9909, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9792, + "end": 9911, + "name": "tag", + "source": 40, + "value": "1048" + }, + { + "begin": 9792, + "end": 9911, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9950, + "end": 9951, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9975, + "end": 10043, + "name": "PUSH [tag]", + "source": 40, + "value": "1050" + }, + { + "begin": 10035, + "end": 10042, + "name": "DUP7", + "source": 40 + }, + { + "begin": 10026, + "end": 10032, + "name": "DUP3", + "source": 40 + }, + { + "begin": 10015, + "end": 10024, + "name": "DUP8", + "source": 40 + }, + { + "begin": 10011, + "end": 10033, + "name": "ADD", + "source": 40 + }, + { + "begin": 9975, + "end": 10043, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 9975, + "end": 10043, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9975, + "end": 10043, + "name": "tag", + "source": 40, + "value": "1050" + }, + { + "begin": 9975, + "end": 10043, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9965, + "end": 10043, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 9965, + "end": 10043, + "name": "POP", + "source": 40 + }, + { + "begin": 9921, + "end": 10053, + "name": "POP", + "source": 40 + }, + { + "begin": 10092, + "end": 10094, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 10118, + "end": 10186, + "name": "PUSH [tag]", + "source": 40, + "value": "1051" + }, + { + "begin": 10178, + "end": 10185, + "name": "DUP7", + "source": 40 + }, + { + "begin": 10169, + "end": 10175, + "name": "DUP3", + "source": 40 + }, + { + "begin": 10158, + "end": 10167, + "name": "DUP8", + "source": 40 + }, + { + "begin": 10154, + "end": 10176, + "name": "ADD", + "source": 40 + }, + { + "begin": 10118, + "end": 10186, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 10118, + "end": 10186, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10118, + "end": 10186, + "name": "tag", + "source": 40, + "value": "1051" + }, + { + "begin": 10118, + "end": 10186, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10108, + "end": 10186, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 10108, + "end": 10186, + "name": "POP", + "source": 40 + }, + { + "begin": 10063, + "end": 10196, + "name": "POP", + "source": 40 + }, + { + "begin": 10235, + "end": 10237, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 10261, + "end": 10313, + "name": "PUSH [tag]", + "source": 40, + "value": "1052" + }, + { + "begin": 10305, + "end": 10312, + "name": "DUP7", + "source": 40 + }, + { + "begin": 10296, + "end": 10302, + "name": "DUP3", + "source": 40 + }, + { + "begin": 10285, + "end": 10294, + "name": "DUP8", + "source": 40 + }, + { + "begin": 10281, + "end": 10303, + "name": "ADD", + "source": 40 + }, + { + "begin": 10261, + "end": 10313, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 10261, + "end": 10313, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10261, + "end": 10313, + "name": "tag", + "source": 40, + "value": "1052" + }, + { + "begin": 10261, + "end": 10313, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10251, + "end": 10313, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 10251, + "end": 10313, + "name": "POP", + "source": 40 + }, + { + "begin": 10206, + "end": 10323, + "name": "POP", + "source": 40 + }, + { + "begin": 9653, + "end": 10330, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9653, + "end": 10330, + "name": "POP", + "source": 40 + }, + { + "begin": 9653, + "end": 10330, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9653, + "end": 10330, + "name": "POP", + "source": 40 + }, + { + "begin": 9653, + "end": 10330, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9653, + "end": 10330, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10336, + "end": 10458, + "name": "tag", + "source": 40, + "value": "876" + }, + { + "begin": 10336, + "end": 10458, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10409, + "end": 10433, + "name": "PUSH [tag]", + "source": 40, + "value": "1054" + }, + { + "begin": 10427, + "end": 10432, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10409, + "end": 10433, + "name": "PUSH [tag]", + "source": 40, + "value": "862" + }, + { + "begin": 10409, + "end": 10433, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10409, + "end": 10433, + "name": "tag", + "source": 40, + "value": "1054" + }, + { + "begin": 10409, + "end": 10433, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10402, + "end": 10407, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10399, + "end": 10434, + "name": "EQ", + "source": 40 + }, + { + "begin": 10389, + "end": 10452, + "name": "PUSH [tag]", + "source": 40, + "value": "1055" + }, + { + "begin": 10389, + "end": 10452, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 10448, + "end": 10449, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 10445, + "end": 10446, + "name": "DUP1", + "source": 40 + }, + { + "begin": 10438, + "end": 10450, + "name": "REVERT", + "source": 40 + }, + { + "begin": 10389, + "end": 10452, + "name": "tag", + "source": 40, + "value": "1055" + }, + { + "begin": 10389, + "end": 10452, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10336, + "end": 10458, + "name": "POP", + "source": 40 + }, + { + "begin": 10336, + "end": 10458, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10464, + "end": 10603, + "name": "tag", + "source": 40, + "value": "877" + }, + { + "begin": 10464, + "end": 10603, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10510, + "end": 10515, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 10548, + "end": 10554, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10535, + "end": 10555, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 10526, + "end": 10555, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 10526, + "end": 10555, + "name": "POP", + "source": 40 + }, + { + "begin": 10564, + "end": 10597, + "name": "PUSH [tag]", + "source": 40, + "value": "1057" + }, + { + "begin": 10591, + "end": 10596, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10564, + "end": 10597, + "name": "PUSH [tag]", + "source": 40, + "value": "876" + }, + { + "begin": 10564, + "end": 10597, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10564, + "end": 10597, + "name": "tag", + "source": 40, + "value": "1057" + }, + { + "begin": 10564, + "end": 10597, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10464, + "end": 10603, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 10464, + "end": 10603, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 10464, + "end": 10603, + "name": "POP", + "source": 40 + }, + { + "begin": 10464, + "end": 10603, + "name": "POP", + "source": 40 + }, + { + "begin": 10464, + "end": 10603, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10609, + "end": 11083, + "name": "tag", + "source": 40, + "value": "94" + }, + { + "begin": 10609, + "end": 11083, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10677, + "end": 10683, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 10685, + "end": 10691, + "name": "DUP1", + "source": 40 + }, + { + "begin": 10734, + "end": 10736, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 10722, + "end": 10731, + "name": "DUP4", + "source": 40 + }, + { + "begin": 10713, + "end": 10720, + "name": "DUP6", + "source": 40 + }, + { + "begin": 10709, + "end": 10732, + "name": "SUB", + "source": 40 + }, + { + "begin": 10705, + "end": 10737, + "name": "SLT", + "source": 40 + }, + { + "begin": 10702, + "end": 10821, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 10702, + "end": 10821, + "name": "PUSH [tag]", + "source": 40, + "value": "1059" + }, + { + "begin": 10702, + "end": 10821, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 10740, + "end": 10819, + "name": "PUSH [tag]", + "source": 40, + "value": "1060" + }, + { + "begin": 10740, + "end": 10819, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 10740, + "end": 10819, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10740, + "end": 10819, + "name": "tag", + "source": 40, + "value": "1060" + }, + { + "begin": 10740, + "end": 10819, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10702, + "end": 10821, + "name": "tag", + "source": 40, + "value": "1059" + }, + { + "begin": 10702, + "end": 10821, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10860, + "end": 10861, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 10885, + "end": 10938, + "name": "PUSH [tag]", + "source": 40, + "value": "1061" + }, + { + "begin": 10930, + "end": 10937, + "name": "DUP6", + "source": 40 + }, + { + "begin": 10921, + "end": 10927, + "name": "DUP3", + "source": 40 + }, + { + "begin": 10910, + "end": 10919, + "name": "DUP7", + "source": 40 + }, + { + "begin": 10906, + "end": 10928, + "name": "ADD", + "source": 40 + }, + { + "begin": 10885, + "end": 10938, + "name": "PUSH [tag]", + "source": 40, + "value": "875" + }, + { + "begin": 10885, + "end": 10938, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10885, + "end": 10938, + "name": "tag", + "source": 40, + "value": "1061" + }, + { + "begin": 10885, + "end": 10938, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10875, + "end": 10938, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 10875, + "end": 10938, + "name": "POP", + "source": 40 + }, + { + "begin": 10831, + "end": 10948, + "name": "POP", + "source": 40 + }, + { + "begin": 10987, + "end": 10989, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 11013, + "end": 11066, + "name": "PUSH [tag]", + "source": 40, + "value": "1062" + }, + { + "begin": 11058, + "end": 11065, + "name": "DUP6", + "source": 40 + }, + { + "begin": 11049, + "end": 11055, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11038, + "end": 11047, + "name": "DUP7", + "source": 40 + }, + { + "begin": 11034, + "end": 11056, + "name": "ADD", + "source": 40 + }, + { + "begin": 11013, + "end": 11066, + "name": "PUSH [tag]", + "source": 40, + "value": "877" + }, + { + "begin": 11013, + "end": 11066, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11013, + "end": 11066, + "name": "tag", + "source": 40, + "value": "1062" + }, + { + "begin": 11013, + "end": 11066, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11003, + "end": 11066, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11003, + "end": 11066, + "name": "POP", + "source": 40 + }, + { + "begin": 10958, + "end": 11076, + "name": "POP", + "source": 40 + }, + { + "begin": 10609, + "end": 11083, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 10609, + "end": 11083, + "name": "POP", + "source": 40 + }, + { + "begin": 10609, + "end": 11083, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 10609, + "end": 11083, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 10609, + "end": 11083, + "name": "POP", + "source": 40 + }, + { + "begin": 10609, + "end": 11083, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11089, + "end": 11205, + "name": "tag", + "source": 40, + "value": "878" + }, + { + "begin": 11089, + "end": 11205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11159, + "end": 11180, + "name": "PUSH [tag]", + "source": 40, + "value": "1064" + }, + { + "begin": 11174, + "end": 11179, + "name": "DUP2", + "source": 40 + }, + { + "begin": 11159, + "end": 11180, + "name": "PUSH [tag]", + "source": 40, + "value": "844" + }, + { + "begin": 11159, + "end": 11180, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11159, + "end": 11180, + "name": "tag", + "source": 40, + "value": "1064" + }, + { + "begin": 11159, + "end": 11180, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11152, + "end": 11157, + "name": "DUP2", + "source": 40 + }, + { + "begin": 11149, + "end": 11181, + "name": "EQ", + "source": 40 + }, + { + "begin": 11139, + "end": 11199, + "name": "PUSH [tag]", + "source": 40, + "value": "1065" + }, + { + "begin": 11139, + "end": 11199, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 11195, + "end": 11196, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11192, + "end": 11193, + "name": "DUP1", + "source": 40 + }, + { + "begin": 11185, + "end": 11197, + "name": "REVERT", + "source": 40 + }, + { + "begin": 11139, + "end": 11199, + "name": "tag", + "source": 40, + "value": "1065" + }, + { + "begin": 11139, + "end": 11199, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11089, + "end": 11205, + "name": "POP", + "source": 40 + }, + { + "begin": 11089, + "end": 11205, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11211, + "end": 11344, + "name": "tag", + "source": 40, + "value": "879" + }, + { + "begin": 11211, + "end": 11344, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11254, + "end": 11259, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11292, + "end": 11298, + "name": "DUP2", + "source": 40 + }, + { + "begin": 11279, + "end": 11299, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 11270, + "end": 11299, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 11270, + "end": 11299, + "name": "POP", + "source": 40 + }, + { + "begin": 11308, + "end": 11338, + "name": "PUSH [tag]", + "source": 40, + "value": "1067" + }, + { + "begin": 11332, + "end": 11337, + "name": "DUP2", + "source": 40 + }, + { + "begin": 11308, + "end": 11338, + "name": "PUSH [tag]", + "source": 40, + "value": "878" + }, + { + "begin": 11308, + "end": 11338, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11308, + "end": 11338, + "name": "tag", + "source": 40, + "value": "1067" + }, + { + "begin": 11308, + "end": 11338, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11211, + "end": 11344, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 11211, + "end": 11344, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11211, + "end": 11344, + "name": "POP", + "source": 40 + }, + { + "begin": 11211, + "end": 11344, + "name": "POP", + "source": 40 + }, + { + "begin": 11211, + "end": 11344, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "tag", + "source": 40, + "value": "101" + }, + { + "begin": 11350, + "end": 12823, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11470, + "end": 11476, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11478, + "end": 11484, + "name": "DUP1", + "source": 40 + }, + { + "begin": 11486, + "end": 11492, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11494, + "end": 11500, + "name": "DUP1", + "source": 40 + }, + { + "begin": 11502, + "end": 11508, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11510, + "end": 11516, + "name": "DUP1", + "source": 40 + }, + { + "begin": 11518, + "end": 11524, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11526, + "end": 11532, + "name": "DUP1", + "source": 40 + }, + { + "begin": 11534, + "end": 11540, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11583, + "end": 11586, + "name": "PUSH", + "source": 40, + "value": "120" + }, + { + "begin": 11571, + "end": 11580, + "name": "DUP11", + "source": 40 + }, + { + "begin": 11562, + "end": 11569, + "name": "DUP13", + "source": 40 + }, + { + "begin": 11558, + "end": 11581, + "name": "SUB", + "source": 40 + }, + { + "begin": 11554, + "end": 11587, + "name": "SLT", + "source": 40 + }, + { + "begin": 11551, + "end": 11671, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 11551, + "end": 11671, + "name": "PUSH [tag]", + "source": 40, + "value": "1069" + }, + { + "begin": 11551, + "end": 11671, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 11590, + "end": 11669, + "name": "PUSH [tag]", + "source": 40, + "value": "1070" + }, + { + "begin": 11590, + "end": 11669, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 11590, + "end": 11669, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11590, + "end": 11669, + "name": "tag", + "source": 40, + "value": "1070" + }, + { + "begin": 11590, + "end": 11669, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11551, + "end": 11671, + "name": "tag", + "source": 40, + "value": "1069" + }, + { + "begin": 11551, + "end": 11671, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11710, + "end": 11711, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11735, + "end": 11787, + "name": "PUSH [tag]", + "source": 40, + "value": "1071" + }, + { + "begin": 11779, + "end": 11786, + "name": "DUP13", + "source": 40 + }, + { + "begin": 11770, + "end": 11776, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11759, + "end": 11768, + "name": "DUP14", + "source": 40 + }, + { + "begin": 11755, + "end": 11777, + "name": "ADD", + "source": 40 + }, + { + "begin": 11735, + "end": 11787, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 11735, + "end": 11787, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11735, + "end": 11787, + "name": "tag", + "source": 40, + "value": "1071" + }, + { + "begin": 11735, + "end": 11787, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11725, + "end": 11787, + "name": "SWAP10", + "source": 40 + }, + { + "begin": 11725, + "end": 11787, + "name": "POP", + "source": 40 + }, + { + "begin": 11681, + "end": 11797, + "name": "POP", + "source": 40 + }, + { + "begin": 11836, + "end": 11838, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 11862, + "end": 11914, + "name": "PUSH [tag]", + "source": 40, + "value": "1072" + }, + { + "begin": 11906, + "end": 11913, + "name": "DUP13", + "source": 40 + }, + { + "begin": 11897, + "end": 11903, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11886, + "end": 11895, + "name": "DUP14", + "source": 40 + }, + { + "begin": 11882, + "end": 11904, + "name": "ADD", + "source": 40 + }, + { + "begin": 11862, + "end": 11914, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 11862, + "end": 11914, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11862, + "end": 11914, + "name": "tag", + "source": 40, + "value": "1072" + }, + { + "begin": 11862, + "end": 11914, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11852, + "end": 11914, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 11852, + "end": 11914, + "name": "POP", + "source": 40 + }, + { + "begin": 11807, + "end": 11924, + "name": "POP", + "source": 40 + }, + { + "begin": 11963, + "end": 11965, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 11989, + "end": 12041, + "name": "PUSH [tag]", + "source": 40, + "value": "1073" + }, + { + "begin": 12033, + "end": 12040, + "name": "DUP13", + "source": 40 + }, + { + "begin": 12024, + "end": 12030, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12013, + "end": 12022, + "name": "DUP14", + "source": 40 + }, + { + "begin": 12009, + "end": 12031, + "name": "ADD", + "source": 40 + }, + { + "begin": 11989, + "end": 12041, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 11989, + "end": 12041, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11989, + "end": 12041, + "name": "tag", + "source": 40, + "value": "1073" + }, + { + "begin": 11989, + "end": 12041, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11979, + "end": 12041, + "name": "SWAP8", + "source": 40 + }, + { + "begin": 11979, + "end": 12041, + "name": "POP", + "source": 40 + }, + { + "begin": 11934, + "end": 12051, + "name": "POP", + "source": 40 + }, + { + "begin": 12090, + "end": 12092, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 12116, + "end": 12168, + "name": "PUSH [tag]", + "source": 40, + "value": "1074" + }, + { + "begin": 12160, + "end": 12167, + "name": "DUP13", + "source": 40 + }, + { + "begin": 12151, + "end": 12157, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12140, + "end": 12149, + "name": "DUP14", + "source": 40 + }, + { + "begin": 12136, + "end": 12158, + "name": "ADD", + "source": 40 + }, + { + "begin": 12116, + "end": 12168, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 12116, + "end": 12168, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12116, + "end": 12168, + "name": "tag", + "source": 40, + "value": "1074" + }, + { + "begin": 12116, + "end": 12168, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12106, + "end": 12168, + "name": "SWAP7", + "source": 40 + }, + { + "begin": 12106, + "end": 12168, + "name": "POP", + "source": 40 + }, + { + "begin": 12061, + "end": 12178, + "name": "POP", + "source": 40 + }, + { + "begin": 12217, + "end": 12220, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 12244, + "end": 12296, + "name": "PUSH [tag]", + "source": 40, + "value": "1075" + }, + { + "begin": 12288, + "end": 12295, + "name": "DUP13", + "source": 40 + }, + { + "begin": 12279, + "end": 12285, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12268, + "end": 12277, + "name": "DUP14", + "source": 40 + }, + { + "begin": 12264, + "end": 12286, + "name": "ADD", + "source": 40 + }, + { + "begin": 12244, + "end": 12296, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 12244, + "end": 12296, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12244, + "end": 12296, + "name": "tag", + "source": 40, + "value": "1075" + }, + { + "begin": 12244, + "end": 12296, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12234, + "end": 12296, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 12234, + "end": 12296, + "name": "POP", + "source": 40 + }, + { + "begin": 12188, + "end": 12306, + "name": "POP", + "source": 40 + }, + { + "begin": 12345, + "end": 12348, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 12372, + "end": 12424, + "name": "PUSH [tag]", + "source": 40, + "value": "1076" + }, + { + "begin": 12416, + "end": 12423, + "name": "DUP13", + "source": 40 + }, + { + "begin": 12407, + "end": 12413, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12396, + "end": 12405, + "name": "DUP14", + "source": 40 + }, + { + "begin": 12392, + "end": 12414, + "name": "ADD", + "source": 40 + }, + { + "begin": 12372, + "end": 12424, + "name": "PUSH [tag]", + "source": 40, + "value": "871" + }, + { + "begin": 12372, + "end": 12424, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12372, + "end": 12424, + "name": "tag", + "source": 40, + "value": "1076" + }, + { + "begin": 12372, + "end": 12424, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12362, + "end": 12424, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 12362, + "end": 12424, + "name": "POP", + "source": 40 + }, + { + "begin": 12316, + "end": 12434, + "name": "POP", + "source": 40 + }, + { + "begin": 12473, + "end": 12476, + "name": "PUSH", + "source": 40, + "value": "C0" + }, + { + "begin": 12500, + "end": 12552, + "name": "PUSH [tag]", + "source": 40, + "value": "1077" + }, + { + "begin": 12544, + "end": 12551, + "name": "DUP13", + "source": 40 + }, + { + "begin": 12535, + "end": 12541, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12524, + "end": 12533, + "name": "DUP14", + "source": 40 + }, + { + "begin": 12520, + "end": 12542, + "name": "ADD", + "source": 40 + }, + { + "begin": 12500, + "end": 12552, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 12500, + "end": 12552, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12500, + "end": 12552, + "name": "tag", + "source": 40, + "value": "1077" + }, + { + "begin": 12500, + "end": 12552, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12490, + "end": 12552, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 12490, + "end": 12552, + "name": "POP", + "source": 40 + }, + { + "begin": 12444, + "end": 12562, + "name": "POP", + "source": 40 + }, + { + "begin": 12601, + "end": 12604, + "name": "PUSH", + "source": 40, + "value": "E0" + }, + { + "begin": 12628, + "end": 12680, + "name": "PUSH [tag]", + "source": 40, + "value": "1078" + }, + { + "begin": 12672, + "end": 12679, + "name": "DUP13", + "source": 40 + }, + { + "begin": 12663, + "end": 12669, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12652, + "end": 12661, + "name": "DUP14", + "source": 40 + }, + { + "begin": 12648, + "end": 12670, + "name": "ADD", + "source": 40 + }, + { + "begin": 12628, + "end": 12680, + "name": "PUSH [tag]", + "source": 40, + "value": "871" + }, + { + "begin": 12628, + "end": 12680, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12628, + "end": 12680, + "name": "tag", + "source": 40, + "value": "1078" + }, + { + "begin": 12628, + "end": 12680, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12618, + "end": 12680, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 12618, + "end": 12680, + "name": "POP", + "source": 40 + }, + { + "begin": 12572, + "end": 12690, + "name": "POP", + "source": 40 + }, + { + "begin": 12729, + "end": 12732, + "name": "PUSH", + "source": 40, + "value": "100" + }, + { + "begin": 12756, + "end": 12806, + "name": "PUSH [tag]", + "source": 40, + "value": "1079" + }, + { + "begin": 12798, + "end": 12805, + "name": "DUP13", + "source": 40 + }, + { + "begin": 12789, + "end": 12795, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12778, + "end": 12787, + "name": "DUP14", + "source": 40 + }, + { + "begin": 12774, + "end": 12796, + "name": "ADD", + "source": 40 + }, + { + "begin": 12756, + "end": 12806, + "name": "PUSH [tag]", + "source": 40, + "value": "879" + }, + { + "begin": 12756, + "end": 12806, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12756, + "end": 12806, + "name": "tag", + "source": 40, + "value": "1079" + }, + { + "begin": 12756, + "end": 12806, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12746, + "end": 12806, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12746, + "end": 12806, + "name": "POP", + "source": 40 + }, + { + "begin": 12700, + "end": 12816, + "name": "POP", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "POP", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "POP", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 11350, + "end": 12823, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12829, + "end": 12946, + "name": "tag", + "source": 40, + "value": "880" + }, + { + "begin": 12829, + "end": 12946, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12938, + "end": 12939, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12935, + "end": 12936, + "name": "DUP1", + "source": 40 + }, + { + "begin": 12928, + "end": 12940, + "name": "REVERT", + "source": 40 + }, + { + "begin": 12952, + "end": 13069, + "name": "tag", + "source": 40, + "value": "881" + }, + { + "begin": 12952, + "end": 13069, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13061, + "end": 13062, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13058, + "end": 13059, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13051, + "end": 13063, + "name": "REVERT", + "source": 40 + }, + { + "begin": 13075, + "end": 13192, + "name": "tag", + "source": 40, + "value": "882" + }, + { + "begin": 13075, + "end": 13192, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13184, + "end": 13185, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13181, + "end": 13182, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13174, + "end": 13186, + "name": "REVERT", + "source": 40 + }, + { + "begin": 13211, + "end": 13763, + "name": "tag", + "source": 40, + "value": "883" + }, + { + "begin": 13211, + "end": 13763, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13268, + "end": 13276, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13278, + "end": 13284, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13328, + "end": 13331, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13321, + "end": 13325, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 13313, + "end": 13319, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13309, + "end": 13326, + "name": "ADD", + "source": 40 + }, + { + "begin": 13305, + "end": 13332, + "name": "SLT", + "source": 40 + }, + { + "begin": 13295, + "end": 13417, + "name": "PUSH [tag]", + "source": 40, + "value": "1084" + }, + { + "begin": 13295, + "end": 13417, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 13336, + "end": 13415, + "name": "PUSH [tag]", + "source": 40, + "value": "1085" + }, + { + "begin": 13336, + "end": 13415, + "name": "PUSH [tag]", + "source": 40, + "value": "880" + }, + { + "begin": 13336, + "end": 13415, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13336, + "end": 13415, + "name": "tag", + "source": 40, + "value": "1085" + }, + { + "begin": 13336, + "end": 13415, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13295, + "end": 13417, + "name": "tag", + "source": 40, + "value": "1084" + }, + { + "begin": 13295, + "end": 13417, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13449, + "end": 13455, + "name": "DUP3", + "source": 40 + }, + { + "begin": 13436, + "end": 13456, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 13426, + "end": 13456, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13426, + "end": 13456, + "name": "POP", + "source": 40 + }, + { + "begin": 13479, + "end": 13497, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 13471, + "end": 13477, + "name": "DUP2", + "source": 40 + }, + { + "begin": 13468, + "end": 13498, + "name": "GT", + "source": 40 + }, + { + "begin": 13465, + "end": 13582, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 13465, + "end": 13582, + "name": "PUSH [tag]", + "source": 40, + "value": "1086" + }, + { + "begin": 13465, + "end": 13582, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 13501, + "end": 13580, + "name": "PUSH [tag]", + "source": 40, + "value": "1087" + }, + { + "begin": 13501, + "end": 13580, + "name": "PUSH [tag]", + "source": 40, + "value": "881" + }, + { + "begin": 13501, + "end": 13580, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13501, + "end": 13580, + "name": "tag", + "source": 40, + "value": "1087" + }, + { + "begin": 13501, + "end": 13580, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13465, + "end": 13582, + "name": "tag", + "source": 40, + "value": "1086" + }, + { + "begin": 13465, + "end": 13582, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13615, + "end": 13619, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 13607, + "end": 13613, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13603, + "end": 13620, + "name": "ADD", + "source": 40 + }, + { + "begin": 13591, + "end": 13620, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13591, + "end": 13620, + "name": "POP", + "source": 40 + }, + { + "begin": 13669, + "end": 13672, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13661, + "end": 13665, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 13653, + "end": 13659, + "name": "DUP3", + "source": 40 + }, + { + "begin": 13649, + "end": 13666, + "name": "MUL", + "source": 40 + }, + { + "begin": 13639, + "end": 13647, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13635, + "end": 13667, + "name": "ADD", + "source": 40 + }, + { + "begin": 13632, + "end": 13673, + "name": "GT", + "source": 40 + }, + { + "begin": 13629, + "end": 13757, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 13629, + "end": 13757, + "name": "PUSH [tag]", + "source": 40, + "value": "1088" + }, + { + "begin": 13629, + "end": 13757, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 13676, + "end": 13755, + "name": "PUSH [tag]", + "source": 40, + "value": "1089" + }, + { + "begin": 13676, + "end": 13755, + "name": "PUSH [tag]", + "source": 40, + "value": "882" + }, + { + "begin": 13676, + "end": 13755, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13676, + "end": 13755, + "name": "tag", + "source": 40, + "value": "1089" + }, + { + "begin": 13676, + "end": 13755, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13629, + "end": 13757, + "name": "tag", + "source": 40, + "value": "1088" + }, + { + "begin": 13629, + "end": 13757, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13211, + "end": 13763, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 13211, + "end": 13763, + "name": "POP", + "source": 40 + }, + { + "begin": 13211, + "end": 13763, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 13211, + "end": 13763, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13211, + "end": 13763, + "name": "POP", + "source": 40 + }, + { + "begin": 13211, + "end": 13763, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "tag", + "source": 40, + "value": "105" + }, + { + "begin": 13769, + "end": 14936, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13904, + "end": 13910, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13912, + "end": 13918, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13920, + "end": 13926, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13928, + "end": 13934, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13936, + "end": 13942, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13944, + "end": 13950, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13993, + "end": 13996, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 13981, + "end": 13990, + "name": "DUP8", + "source": 40 + }, + { + "begin": 13972, + "end": 13979, + "name": "DUP10", + "source": 40 + }, + { + "begin": 13968, + "end": 13991, + "name": "SUB", + "source": 40 + }, + { + "begin": 13964, + "end": 13997, + "name": "SLT", + "source": 40 + }, + { + "begin": 13961, + "end": 14081, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 13961, + "end": 14081, + "name": "PUSH [tag]", + "source": 40, + "value": "1091" + }, + { + "begin": 13961, + "end": 14081, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14000, + "end": 14079, + "name": "PUSH [tag]", + "source": 40, + "value": "1092" + }, + { + "begin": 14000, + "end": 14079, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 14000, + "end": 14079, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14000, + "end": 14079, + "name": "tag", + "source": 40, + "value": "1092" + }, + { + "begin": 14000, + "end": 14079, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13961, + "end": 14081, + "name": "tag", + "source": 40, + "value": "1091" + }, + { + "begin": 13961, + "end": 14081, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14120, + "end": 14121, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 14145, + "end": 14213, + "name": "PUSH [tag]", + "source": 40, + "value": "1093" + }, + { + "begin": 14205, + "end": 14212, + "name": "DUP10", + "source": 40 + }, + { + "begin": 14196, + "end": 14202, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14185, + "end": 14194, + "name": "DUP11", + "source": 40 + }, + { + "begin": 14181, + "end": 14203, + "name": "ADD", + "source": 40 + }, + { + "begin": 14145, + "end": 14213, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 14145, + "end": 14213, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14145, + "end": 14213, + "name": "tag", + "source": 40, + "value": "1093" + }, + { + "begin": 14145, + "end": 14213, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14135, + "end": 14213, + "name": "SWAP7", + "source": 40 + }, + { + "begin": 14135, + "end": 14213, + "name": "POP", + "source": 40 + }, + { + "begin": 14091, + "end": 14223, + "name": "POP", + "source": 40 + }, + { + "begin": 14262, + "end": 14264, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 14288, + "end": 14356, + "name": "PUSH [tag]", + "source": 40, + "value": "1094" + }, + { + "begin": 14348, + "end": 14355, + "name": "DUP10", + "source": 40 + }, + { + "begin": 14339, + "end": 14345, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14328, + "end": 14337, + "name": "DUP11", + "source": 40 + }, + { + "begin": 14324, + "end": 14346, + "name": "ADD", + "source": 40 + }, + { + "begin": 14288, + "end": 14356, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 14288, + "end": 14356, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14288, + "end": 14356, + "name": "tag", + "source": 40, + "value": "1094" + }, + { + "begin": 14288, + "end": 14356, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14278, + "end": 14356, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 14278, + "end": 14356, + "name": "POP", + "source": 40 + }, + { + "begin": 14233, + "end": 14366, + "name": "POP", + "source": 40 + }, + { + "begin": 14405, + "end": 14407, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 14431, + "end": 14483, + "name": "PUSH [tag]", + "source": 40, + "value": "1095" + }, + { + "begin": 14475, + "end": 14482, + "name": "DUP10", + "source": 40 + }, + { + "begin": 14466, + "end": 14472, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14455, + "end": 14464, + "name": "DUP11", + "source": 40 + }, + { + "begin": 14451, + "end": 14473, + "name": "ADD", + "source": 40 + }, + { + "begin": 14431, + "end": 14483, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 14431, + "end": 14483, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14431, + "end": 14483, + "name": "tag", + "source": 40, + "value": "1095" + }, + { + "begin": 14431, + "end": 14483, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14421, + "end": 14483, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 14421, + "end": 14483, + "name": "POP", + "source": 40 + }, + { + "begin": 14376, + "end": 14493, + "name": "POP", + "source": 40 + }, + { + "begin": 14532, + "end": 14534, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 14558, + "end": 14611, + "name": "PUSH [tag]", + "source": 40, + "value": "1096" + }, + { + "begin": 14603, + "end": 14610, + "name": "DUP10", + "source": 40 + }, + { + "begin": 14594, + "end": 14600, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14583, + "end": 14592, + "name": "DUP11", + "source": 40 + }, + { + "begin": 14579, + "end": 14601, + "name": "ADD", + "source": 40 + }, + { + "begin": 14558, + "end": 14611, + "name": "PUSH [tag]", + "source": 40, + "value": "875" + }, + { + "begin": 14558, + "end": 14611, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14558, + "end": 14611, + "name": "tag", + "source": 40, + "value": "1096" + }, + { + "begin": 14558, + "end": 14611, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14548, + "end": 14611, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 14548, + "end": 14611, + "name": "POP", + "source": 40 + }, + { + "begin": 14503, + "end": 14621, + "name": "POP", + "source": 40 + }, + { + "begin": 14688, + "end": 14691, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 14677, + "end": 14686, + "name": "DUP8", + "source": 40 + }, + { + "begin": 14673, + "end": 14692, + "name": "ADD", + "source": 40 + }, + { + "begin": 14660, + "end": 14693, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 14720, + "end": 14738, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 14712, + "end": 14718, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14709, + "end": 14739, + "name": "GT", + "source": 40 + }, + { + "begin": 14706, + "end": 14823, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 14706, + "end": 14823, + "name": "PUSH [tag]", + "source": 40, + "value": "1097" + }, + { + "begin": 14706, + "end": 14823, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14742, + "end": 14821, + "name": "PUSH [tag]", + "source": 40, + "value": "1098" + }, + { + "begin": 14742, + "end": 14821, + "name": "PUSH [tag]", + "source": 40, + "value": "840" + }, + { + "begin": 14742, + "end": 14821, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14742, + "end": 14821, + "name": "tag", + "source": 40, + "value": "1098" + }, + { + "begin": 14742, + "end": 14821, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14706, + "end": 14823, + "name": "tag", + "source": 40, + "value": "1097" + }, + { + "begin": 14706, + "end": 14823, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14855, + "end": 14919, + "name": "PUSH [tag]", + "source": 40, + "value": "1099" + }, + { + "begin": 14911, + "end": 14918, + "name": "DUP10", + "source": 40 + }, + { + "begin": 14902, + "end": 14908, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14891, + "end": 14900, + "name": "DUP11", + "source": 40 + }, + { + "begin": 14887, + "end": 14909, + "name": "ADD", + "source": 40 + }, + { + "begin": 14855, + "end": 14919, + "name": "PUSH [tag]", + "source": 40, + "value": "883" + }, + { + "begin": 14855, + "end": 14919, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14855, + "end": 14919, + "name": "tag", + "source": 40, + "value": "1099" + }, + { + "begin": 14855, + "end": 14919, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14837, + "end": 14919, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 14837, + "end": 14919, + "name": "POP", + "source": 40 + }, + { + "begin": 14837, + "end": 14919, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 14837, + "end": 14919, + "name": "POP", + "source": 40 + }, + { + "begin": 14631, + "end": 14929, + "name": "POP", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "POP", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "POP", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 13769, + "end": 14936, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14942, + "end": 15054, + "name": "tag", + "source": 40, + "value": "884" + }, + { + "begin": 14942, + "end": 15054, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14995, + "end": 15002, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15024, + "end": 15048, + "name": "PUSH [tag]", + "source": 40, + "value": "1101" + }, + { + "begin": 15042, + "end": 15047, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15024, + "end": 15048, + "name": "PUSH [tag]", + "source": 40, + "value": "862" + }, + { + "begin": 15024, + "end": 15048, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15024, + "end": 15048, + "name": "tag", + "source": 40, + "value": "1101" + }, + { + "begin": 15024, + "end": 15048, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15013, + "end": 15048, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 15013, + "end": 15048, + "name": "POP", + "source": 40 + }, + { + "begin": 14942, + "end": 15054, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 14942, + "end": 15054, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 14942, + "end": 15054, + "name": "POP", + "source": 40 + }, + { + "begin": 14942, + "end": 15054, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15060, + "end": 15214, + "name": "tag", + "source": 40, + "value": "885" + }, + { + "begin": 15060, + "end": 15214, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15149, + "end": 15189, + "name": "PUSH [tag]", + "source": 40, + "value": "1103" + }, + { + "begin": 15183, + "end": 15188, + "name": "DUP2", + "source": 40 + }, + { + "begin": 15149, + "end": 15189, + "name": "PUSH [tag]", + "source": 40, + "value": "884" + }, + { + "begin": 15149, + "end": 15189, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15149, + "end": 15189, + "name": "tag", + "source": 40, + "value": "1103" + }, + { + "begin": 15149, + "end": 15189, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15142, + "end": 15147, + "name": "DUP2", + "source": 40 + }, + { + "begin": 15139, + "end": 15190, + "name": "EQ", + "source": 40 + }, + { + "begin": 15129, + "end": 15208, + "name": "PUSH [tag]", + "source": 40, + "value": "1104" + }, + { + "begin": 15129, + "end": 15208, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 15204, + "end": 15205, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15201, + "end": 15202, + "name": "DUP1", + "source": 40 + }, + { + "begin": 15194, + "end": 15206, + "name": "REVERT", + "source": 40 + }, + { + "begin": 15129, + "end": 15208, + "name": "tag", + "source": 40, + "value": "1104" + }, + { + "begin": 15129, + "end": 15208, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15060, + "end": 15214, + "name": "POP", + "source": 40 + }, + { + "begin": 15060, + "end": 15214, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15220, + "end": 15391, + "name": "tag", + "source": 40, + "value": "886" + }, + { + "begin": 15220, + "end": 15391, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15282, + "end": 15287, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15320, + "end": 15326, + "name": "DUP2", + "source": 40 + }, + { + "begin": 15307, + "end": 15327, + "name": "CALLDATALOAD", + "source": 40 + }, + { + "begin": 15298, + "end": 15327, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 15298, + "end": 15327, + "name": "POP", + "source": 40 + }, + { + "begin": 15336, + "end": 15385, + "name": "PUSH [tag]", + "source": 40, + "value": "1106" + }, + { + "begin": 15379, + "end": 15384, + "name": "DUP2", + "source": 40 + }, + { + "begin": 15336, + "end": 15385, + "name": "PUSH [tag]", + "source": 40, + "value": "885" + }, + { + "begin": 15336, + "end": 15385, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15336, + "end": 15385, + "name": "tag", + "source": 40, + "value": "1106" + }, + { + "begin": 15336, + "end": 15385, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15220, + "end": 15391, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 15220, + "end": 15391, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15220, + "end": 15391, + "name": "POP", + "source": 40 + }, + { + "begin": 15220, + "end": 15391, + "name": "POP", + "source": 40 + }, + { + "begin": 15220, + "end": 15391, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15397, + "end": 15758, + "name": "tag", + "source": 40, + "value": "109" + }, + { + "begin": 15397, + "end": 15758, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15472, + "end": 15478, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15521, + "end": 15523, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 15509, + "end": 15518, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15500, + "end": 15507, + "name": "DUP5", + "source": 40 + }, + { + "begin": 15496, + "end": 15519, + "name": "SUB", + "source": 40 + }, + { + "begin": 15492, + "end": 15524, + "name": "SLT", + "source": 40 + }, + { + "begin": 15489, + "end": 15608, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 15489, + "end": 15608, + "name": "PUSH [tag]", + "source": 40, + "value": "1108" + }, + { + "begin": 15489, + "end": 15608, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 15527, + "end": 15606, + "name": "PUSH [tag]", + "source": 40, + "value": "1109" + }, + { + "begin": 15527, + "end": 15606, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 15527, + "end": 15606, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15527, + "end": 15606, + "name": "tag", + "source": 40, + "value": "1109" + }, + { + "begin": 15527, + "end": 15606, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15489, + "end": 15608, + "name": "tag", + "source": 40, + "value": "1108" + }, + { + "begin": 15489, + "end": 15608, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15647, + "end": 15648, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15672, + "end": 15741, + "name": "PUSH [tag]", + "source": 40, + "value": "1110" + }, + { + "begin": 15733, + "end": 15740, + "name": "DUP5", + "source": 40 + }, + { + "begin": 15724, + "end": 15730, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15713, + "end": 15722, + "name": "DUP6", + "source": 40 + }, + { + "begin": 15709, + "end": 15731, + "name": "ADD", + "source": 40 + }, + { + "begin": 15672, + "end": 15741, + "name": "PUSH [tag]", + "source": 40, + "value": "886" + }, + { + "begin": 15672, + "end": 15741, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15672, + "end": 15741, + "name": "tag", + "source": 40, + "value": "1110" + }, + { + "begin": 15672, + "end": 15741, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15662, + "end": 15741, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15662, + "end": 15741, + "name": "POP", + "source": 40 + }, + { + "begin": 15618, + "end": 15751, + "name": "POP", + "source": 40 + }, + { + "begin": 15397, + "end": 15758, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 15397, + "end": 15758, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15397, + "end": 15758, + "name": "POP", + "source": 40 + }, + { + "begin": 15397, + "end": 15758, + "name": "POP", + "source": 40 + }, + { + "begin": 15397, + "end": 15758, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15764, + "end": 15882, + "name": "tag", + "source": 40, + "value": "887" + }, + { + "begin": 15764, + "end": 15882, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15851, + "end": 15875, + "name": "PUSH [tag]", + "source": 40, + "value": "1112" + }, + { + "begin": 15869, + "end": 15874, + "name": "DUP2", + "source": 40 + }, + { + "begin": 15851, + "end": 15875, + "name": "PUSH [tag]", + "source": 40, + "value": "862" + }, + { + "begin": 15851, + "end": 15875, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15851, + "end": 15875, + "name": "tag", + "source": 40, + "value": "1112" + }, + { + "begin": 15851, + "end": 15875, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15846, + "end": 15849, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15839, + "end": 15876, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 15764, + "end": 15882, + "name": "POP", + "source": 40 + }, + { + "begin": 15764, + "end": 15882, + "name": "POP", + "source": 40 + }, + { + "begin": 15764, + "end": 15882, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15888, + "end": 16110, + "name": "tag", + "source": 40, + "value": "114" + }, + { + "begin": 15888, + "end": 16110, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15981, + "end": 15985, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16019, + "end": 16021, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 16008, + "end": 16017, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16004, + "end": 16022, + "name": "ADD", + "source": 40 + }, + { + "begin": 15996, + "end": 16022, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 15996, + "end": 16022, + "name": "POP", + "source": 40 + }, + { + "begin": 16032, + "end": 16103, + "name": "PUSH [tag]", + "source": 40, + "value": "1114" + }, + { + "begin": 16100, + "end": 16101, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16089, + "end": 16098, + "name": "DUP4", + "source": 40 + }, + { + "begin": 16085, + "end": 16102, + "name": "ADD", + "source": 40 + }, + { + "begin": 16076, + "end": 16082, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16032, + "end": 16103, + "name": "PUSH [tag]", + "source": 40, + "value": "887" + }, + { + "begin": 16032, + "end": 16103, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16032, + "end": 16103, + "name": "tag", + "source": 40, + "value": "1114" + }, + { + "begin": 16032, + "end": 16103, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15888, + "end": 16110, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 15888, + "end": 16110, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15888, + "end": 16110, + "name": "POP", + "source": 40 + }, + { + "begin": 15888, + "end": 16110, + "name": "POP", + "source": 40 + }, + { + "begin": 15888, + "end": 16110, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16116, + "end": 16582, + "name": "tag", + "source": 40, + "value": "117" + }, + { + "begin": 16116, + "end": 16582, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16180, + "end": 16186, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16188, + "end": 16194, + "name": "DUP1", + "source": 40 + }, + { + "begin": 16237, + "end": 16239, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 16225, + "end": 16234, + "name": "DUP4", + "source": 40 + }, + { + "begin": 16216, + "end": 16223, + "name": "DUP6", + "source": 40 + }, + { + "begin": 16212, + "end": 16235, + "name": "SUB", + "source": 40 + }, + { + "begin": 16208, + "end": 16240, + "name": "SLT", + "source": 40 + }, + { + "begin": 16205, + "end": 16324, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 16205, + "end": 16324, + "name": "PUSH [tag]", + "source": 40, + "value": "1116" + }, + { + "begin": 16205, + "end": 16324, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16243, + "end": 16322, + "name": "PUSH [tag]", + "source": 40, + "value": "1117" + }, + { + "begin": 16243, + "end": 16322, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 16243, + "end": 16322, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16243, + "end": 16322, + "name": "tag", + "source": 40, + "value": "1117" + }, + { + "begin": 16243, + "end": 16322, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16205, + "end": 16324, + "name": "tag", + "source": 40, + "value": "1116" + }, + { + "begin": 16205, + "end": 16324, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16363, + "end": 16364, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16388, + "end": 16440, + "name": "PUSH [tag]", + "source": 40, + "value": "1118" + }, + { + "begin": 16432, + "end": 16439, + "name": "DUP6", + "source": 40 + }, + { + "begin": 16423, + "end": 16429, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16412, + "end": 16421, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16408, + "end": 16430, + "name": "ADD", + "source": 40 + }, + { + "begin": 16388, + "end": 16440, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 16388, + "end": 16440, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16388, + "end": 16440, + "name": "tag", + "source": 40, + "value": "1118" + }, + { + "begin": 16388, + "end": 16440, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16378, + "end": 16440, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 16378, + "end": 16440, + "name": "POP", + "source": 40 + }, + { + "begin": 16334, + "end": 16450, + "name": "POP", + "source": 40 + }, + { + "begin": 16489, + "end": 16491, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 16515, + "end": 16565, + "name": "PUSH [tag]", + "source": 40, + "value": "1119" + }, + { + "begin": 16557, + "end": 16564, + "name": "DUP6", + "source": 40 + }, + { + "begin": 16548, + "end": 16554, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16537, + "end": 16546, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16533, + "end": 16555, + "name": "ADD", + "source": 40 + }, + { + "begin": 16515, + "end": 16565, + "name": "PUSH [tag]", + "source": 40, + "value": "879" + }, + { + "begin": 16515, + "end": 16565, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16515, + "end": 16565, + "name": "tag", + "source": 40, + "value": "1119" + }, + { + "begin": 16515, + "end": 16565, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16505, + "end": 16565, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 16505, + "end": 16565, + "name": "POP", + "source": 40 + }, + { + "begin": 16460, + "end": 16575, + "name": "POP", + "source": 40 + }, + { + "begin": 16116, + "end": 16582, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 16116, + "end": 16582, + "name": "POP", + "source": 40 + }, + { + "begin": 16116, + "end": 16582, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 16116, + "end": 16582, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 16116, + "end": 16582, + "name": "POP", + "source": 40 + }, + { + "begin": 16116, + "end": 16582, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16588, + "end": 16706, + "name": "tag", + "source": 40, + "value": "888" + }, + { + "begin": 16588, + "end": 16706, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16675, + "end": 16699, + "name": "PUSH [tag]", + "source": 40, + "value": "1121" + }, + { + "begin": 16693, + "end": 16698, + "name": "DUP2", + "source": 40 + }, + { + "begin": 16675, + "end": 16699, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 16675, + "end": 16699, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16675, + "end": 16699, + "name": "tag", + "source": 40, + "value": "1121" + }, + { + "begin": 16675, + "end": 16699, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16670, + "end": 16673, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16663, + "end": 16700, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 16588, + "end": 16706, + "name": "POP", + "source": 40 + }, + { + "begin": 16588, + "end": 16706, + "name": "POP", + "source": 40 + }, + { + "begin": 16588, + "end": 16706, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16712, + "end": 16934, + "name": "tag", + "source": 40, + "value": "122" + }, + { + "begin": 16712, + "end": 16934, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16805, + "end": 16809, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16843, + "end": 16845, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 16832, + "end": 16841, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16828, + "end": 16846, + "name": "ADD", + "source": 40 + }, + { + "begin": 16820, + "end": 16846, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 16820, + "end": 16846, + "name": "POP", + "source": 40 + }, + { + "begin": 16856, + "end": 16927, + "name": "PUSH [tag]", + "source": 40, + "value": "1123" + }, + { + "begin": 16924, + "end": 16925, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16913, + "end": 16922, + "name": "DUP4", + "source": 40 + }, + { + "begin": 16909, + "end": 16926, + "name": "ADD", + "source": 40 + }, + { + "begin": 16900, + "end": 16906, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16856, + "end": 16927, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 16856, + "end": 16927, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16856, + "end": 16927, + "name": "tag", + "source": 40, + "value": "1123" + }, + { + "begin": 16856, + "end": 16927, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16712, + "end": 16934, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 16712, + "end": 16934, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 16712, + "end": 16934, + "name": "POP", + "source": 40 + }, + { + "begin": 16712, + "end": 16934, + "name": "POP", + "source": 40 + }, + { + "begin": 16712, + "end": 16934, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "tag", + "source": 40, + "value": "131" + }, + { + "begin": 16940, + "end": 17761, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17054, + "end": 17060, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 17062, + "end": 17068, + "name": "DUP1", + "source": 40 + }, + { + "begin": 17070, + "end": 17076, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 17078, + "end": 17084, + "name": "DUP1", + "source": 40 + }, + { + "begin": 17127, + "end": 17130, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 17115, + "end": 17124, + "name": "DUP6", + "source": 40 + }, + { + "begin": 17106, + "end": 17113, + "name": "DUP8", + "source": 40 + }, + { + "begin": 17102, + "end": 17125, + "name": "SUB", + "source": 40 + }, + { + "begin": 17098, + "end": 17131, + "name": "SLT", + "source": 40 + }, + { + "begin": 17095, + "end": 17215, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 17095, + "end": 17215, + "name": "PUSH [tag]", + "source": 40, + "value": "1125" + }, + { + "begin": 17095, + "end": 17215, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 17134, + "end": 17213, + "name": "PUSH [tag]", + "source": 40, + "value": "1126" + }, + { + "begin": 17134, + "end": 17213, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 17134, + "end": 17213, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17134, + "end": 17213, + "name": "tag", + "source": 40, + "value": "1126" + }, + { + "begin": 17134, + "end": 17213, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17095, + "end": 17215, + "name": "tag", + "source": 40, + "value": "1125" + }, + { + "begin": 17095, + "end": 17215, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17254, + "end": 17255, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 17279, + "end": 17347, + "name": "PUSH [tag]", + "source": 40, + "value": "1127" + }, + { + "begin": 17339, + "end": 17346, + "name": "DUP8", + "source": 40 + }, + { + "begin": 17330, + "end": 17336, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17319, + "end": 17328, + "name": "DUP9", + "source": 40 + }, + { + "begin": 17315, + "end": 17337, + "name": "ADD", + "source": 40 + }, + { + "begin": 17279, + "end": 17347, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 17279, + "end": 17347, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17279, + "end": 17347, + "name": "tag", + "source": 40, + "value": "1127" + }, + { + "begin": 17279, + "end": 17347, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17269, + "end": 17347, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 17269, + "end": 17347, + "name": "POP", + "source": 40 + }, + { + "begin": 17225, + "end": 17357, + "name": "POP", + "source": 40 + }, + { + "begin": 17396, + "end": 17398, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 17422, + "end": 17490, + "name": "PUSH [tag]", + "source": 40, + "value": "1128" + }, + { + "begin": 17482, + "end": 17489, + "name": "DUP8", + "source": 40 + }, + { + "begin": 17473, + "end": 17479, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17462, + "end": 17471, + "name": "DUP9", + "source": 40 + }, + { + "begin": 17458, + "end": 17480, + "name": "ADD", + "source": 40 + }, + { + "begin": 17422, + "end": 17490, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 17422, + "end": 17490, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17422, + "end": 17490, + "name": "tag", + "source": 40, + "value": "1128" + }, + { + "begin": 17422, + "end": 17490, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17412, + "end": 17490, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 17412, + "end": 17490, + "name": "POP", + "source": 40 + }, + { + "begin": 17367, + "end": 17500, + "name": "POP", + "source": 40 + }, + { + "begin": 17539, + "end": 17541, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 17565, + "end": 17617, + "name": "PUSH [tag]", + "source": 40, + "value": "1129" + }, + { + "begin": 17609, + "end": 17616, + "name": "DUP8", + "source": 40 + }, + { + "begin": 17600, + "end": 17606, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17589, + "end": 17598, + "name": "DUP9", + "source": 40 + }, + { + "begin": 17585, + "end": 17607, + "name": "ADD", + "source": 40 + }, + { + "begin": 17565, + "end": 17617, + "name": "PUSH [tag]", + "source": 40, + "value": "871" + }, + { + "begin": 17565, + "end": 17617, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17565, + "end": 17617, + "name": "tag", + "source": 40, + "value": "1129" + }, + { + "begin": 17565, + "end": 17617, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17555, + "end": 17617, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 17555, + "end": 17617, + "name": "POP", + "source": 40 + }, + { + "begin": 17510, + "end": 17627, + "name": "POP", + "source": 40 + }, + { + "begin": 17666, + "end": 17668, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 17692, + "end": 17744, + "name": "PUSH [tag]", + "source": 40, + "value": "1130" + }, + { + "begin": 17736, + "end": 17743, + "name": "DUP8", + "source": 40 + }, + { + "begin": 17727, + "end": 17733, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17716, + "end": 17725, + "name": "DUP9", + "source": 40 + }, + { + "begin": 17712, + "end": 17734, + "name": "ADD", + "source": 40 + }, + { + "begin": 17692, + "end": 17744, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 17692, + "end": 17744, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17692, + "end": 17744, + "name": "tag", + "source": 40, + "value": "1130" + }, + { + "begin": 17692, + "end": 17744, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17682, + "end": 17744, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 17682, + "end": 17744, + "name": "POP", + "source": 40 + }, + { + "begin": 17637, + "end": 17754, + "name": "POP", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "POP", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "name": "POP", + "source": 40 + }, + { + "begin": 16940, + "end": 17761, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17767, + "end": 17909, + "name": "tag", + "source": 40, + "value": "889" + }, + { + "begin": 17767, + "end": 17909, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17833, + "end": 17842, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 17866, + "end": 17903, + "name": "PUSH [tag]", + "source": 40, + "value": "1132" + }, + { + "begin": 17897, + "end": 17902, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17866, + "end": 17903, + "name": "PUSH [tag]", + "source": 40, + "value": "859" + }, + { + "begin": 17866, + "end": 17903, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17866, + "end": 17903, + "name": "tag", + "source": 40, + "value": "1132" + }, + { + "begin": 17866, + "end": 17903, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17853, + "end": 17903, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 17853, + "end": 17903, + "name": "POP", + "source": 40 + }, + { + "begin": 17767, + "end": 17909, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 17767, + "end": 17909, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 17767, + "end": 17909, + "name": "POP", + "source": 40 + }, + { + "begin": 17767, + "end": 17909, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17915, + "end": 18078, + "name": "tag", + "source": 40, + "value": "890" + }, + { + "begin": 17915, + "end": 18078, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18018, + "end": 18071, + "name": "PUSH [tag]", + "source": 40, + "value": "1134" + }, + { + "begin": 18065, + "end": 18070, + "name": "DUP2", + "source": 40 + }, + { + "begin": 18018, + "end": 18071, + "name": "PUSH [tag]", + "source": 40, + "value": "889" + }, + { + "begin": 18018, + "end": 18071, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18018, + "end": 18071, + "name": "tag", + "source": 40, + "value": "1134" + }, + { + "begin": 18018, + "end": 18071, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18013, + "end": 18016, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18006, + "end": 18072, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 17915, + "end": 18078, + "name": "POP", + "source": 40 + }, + { + "begin": 17915, + "end": 18078, + "name": "POP", + "source": 40 + }, + { + "begin": 17915, + "end": 18078, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18084, + "end": 18338, + "name": "tag", + "source": 40, + "value": "134" + }, + { + "begin": 18084, + "end": 18338, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18193, + "end": 18197, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18231, + "end": 18233, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 18220, + "end": 18229, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18216, + "end": 18234, + "name": "ADD", + "source": 40 + }, + { + "begin": 18208, + "end": 18234, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 18208, + "end": 18234, + "name": "POP", + "source": 40 + }, + { + "begin": 18244, + "end": 18331, + "name": "PUSH [tag]", + "source": 40, + "value": "1136" + }, + { + "begin": 18328, + "end": 18329, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18317, + "end": 18326, + "name": "DUP4", + "source": 40 + }, + { + "begin": 18313, + "end": 18330, + "name": "ADD", + "source": 40 + }, + { + "begin": 18304, + "end": 18310, + "name": "DUP5", + "source": 40 + }, + { + "begin": 18244, + "end": 18331, + "name": "PUSH [tag]", + "source": 40, + "value": "890" + }, + { + "begin": 18244, + "end": 18331, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18244, + "end": 18331, + "name": "tag", + "source": 40, + "value": "1136" + }, + { + "begin": 18244, + "end": 18331, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18084, + "end": 18338, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 18084, + "end": 18338, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18084, + "end": 18338, + "name": "POP", + "source": 40 + }, + { + "begin": 18084, + "end": 18338, + "name": "POP", + "source": 40 + }, + { + "begin": 18084, + "end": 18338, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18344, + "end": 18878, + "name": "tag", + "source": 40, + "value": "140" + }, + { + "begin": 18344, + "end": 18878, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18442, + "end": 18448, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18450, + "end": 18456, + "name": "DUP1", + "source": 40 + }, + { + "begin": 18499, + "end": 18501, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 18487, + "end": 18496, + "name": "DUP4", + "source": 40 + }, + { + "begin": 18478, + "end": 18485, + "name": "DUP6", + "source": 40 + }, + { + "begin": 18474, + "end": 18497, + "name": "SUB", + "source": 40 + }, + { + "begin": 18470, + "end": 18502, + "name": "SLT", + "source": 40 + }, + { + "begin": 18467, + "end": 18586, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 18467, + "end": 18586, + "name": "PUSH [tag]", + "source": 40, + "value": "1138" + }, + { + "begin": 18467, + "end": 18586, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 18505, + "end": 18584, + "name": "PUSH [tag]", + "source": 40, + "value": "1139" + }, + { + "begin": 18505, + "end": 18584, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 18505, + "end": 18584, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18505, + "end": 18584, + "name": "tag", + "source": 40, + "value": "1139" + }, + { + "begin": 18505, + "end": 18584, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18467, + "end": 18586, + "name": "tag", + "source": 40, + "value": "1138" + }, + { + "begin": 18467, + "end": 18586, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18625, + "end": 18626, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18650, + "end": 18718, + "name": "PUSH [tag]", + "source": 40, + "value": "1140" + }, + { + "begin": 18710, + "end": 18717, + "name": "DUP6", + "source": 40 + }, + { + "begin": 18701, + "end": 18707, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18690, + "end": 18699, + "name": "DUP7", + "source": 40 + }, + { + "begin": 18686, + "end": 18708, + "name": "ADD", + "source": 40 + }, + { + "begin": 18650, + "end": 18718, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 18650, + "end": 18718, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18650, + "end": 18718, + "name": "tag", + "source": 40, + "value": "1140" + }, + { + "begin": 18650, + "end": 18718, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18640, + "end": 18718, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 18640, + "end": 18718, + "name": "POP", + "source": 40 + }, + { + "begin": 18596, + "end": 18728, + "name": "POP", + "source": 40 + }, + { + "begin": 18767, + "end": 18769, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 18793, + "end": 18861, + "name": "PUSH [tag]", + "source": 40, + "value": "1141" + }, + { + "begin": 18853, + "end": 18860, + "name": "DUP6", + "source": 40 + }, + { + "begin": 18844, + "end": 18850, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18833, + "end": 18842, + "name": "DUP7", + "source": 40 + }, + { + "begin": 18829, + "end": 18851, + "name": "ADD", + "source": 40 + }, + { + "begin": 18793, + "end": 18861, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 18793, + "end": 18861, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18793, + "end": 18861, + "name": "tag", + "source": 40, + "value": "1141" + }, + { + "begin": 18793, + "end": 18861, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18783, + "end": 18861, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18783, + "end": 18861, + "name": "POP", + "source": 40 + }, + { + "begin": 18738, + "end": 18871, + "name": "POP", + "source": 40 + }, + { + "begin": 18344, + "end": 18878, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 18344, + "end": 18878, + "name": "POP", + "source": 40 + }, + { + "begin": 18344, + "end": 18878, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 18344, + "end": 18878, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 18344, + "end": 18878, + "name": "POP", + "source": 40 + }, + { + "begin": 18344, + "end": 18878, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18884, + "end": 19033, + "name": "tag", + "source": 40, + "value": "891" + }, + { + "begin": 18884, + "end": 19033, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18986, + "end": 18992, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19020, + "end": 19025, + "name": "DUP2", + "source": 40 + }, + { + "begin": 19014, + "end": 19026, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 19004, + "end": 19026, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19004, + "end": 19026, + "name": "POP", + "source": 40 + }, + { + "begin": 18884, + "end": 19033, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18884, + "end": 19033, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 18884, + "end": 19033, + "name": "POP", + "source": 40 + }, + { + "begin": 18884, + "end": 19033, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19039, + "end": 19258, + "name": "tag", + "source": 40, + "value": "892" + }, + { + "begin": 19039, + "end": 19258, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19173, + "end": 19184, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19207, + "end": 19213, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19202, + "end": 19205, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19195, + "end": 19214, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19247, + "end": 19251, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 19242, + "end": 19245, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19238, + "end": 19252, + "name": "ADD", + "source": 40 + }, + { + "begin": 19223, + "end": 19252, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19223, + "end": 19252, + "name": "POP", + "source": 40 + }, + { + "begin": 19039, + "end": 19258, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19039, + "end": 19258, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19039, + "end": 19258, + "name": "POP", + "source": 40 + }, + { + "begin": 19039, + "end": 19258, + "name": "POP", + "source": 40 + }, + { + "begin": 19039, + "end": 19258, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19264, + "end": 19431, + "name": "tag", + "source": 40, + "value": "893" + }, + { + "begin": 19264, + "end": 19431, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19366, + "end": 19370, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19389, + "end": 19392, + "name": "DUP2", + "source": 40 + }, + { + "begin": 19381, + "end": 19392, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19381, + "end": 19392, + "name": "POP", + "source": 40 + }, + { + "begin": 19419, + "end": 19423, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 19414, + "end": 19417, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19410, + "end": 19424, + "name": "ADD", + "source": 40 + }, + { + "begin": 19402, + "end": 19424, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19402, + "end": 19424, + "name": "POP", + "source": 40 + }, + { + "begin": 19264, + "end": 19431, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19264, + "end": 19431, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19264, + "end": 19431, + "name": "POP", + "source": 40 + }, + { + "begin": 19264, + "end": 19431, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19437, + "end": 19542, + "name": "tag", + "source": 40, + "value": "894" + }, + { + "begin": 19437, + "end": 19542, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19512, + "end": 19535, + "name": "PUSH [tag]", + "source": 40, + "value": "1146" + }, + { + "begin": 19529, + "end": 19534, + "name": "DUP2", + "source": 40 + }, + { + "begin": 19512, + "end": 19535, + "name": "PUSH [tag]", + "source": 40, + "value": "866" + }, + { + "begin": 19512, + "end": 19535, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19512, + "end": 19535, + "name": "tag", + "source": 40, + "value": "1146" + }, + { + "begin": 19512, + "end": 19535, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19507, + "end": 19510, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19500, + "end": 19536, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19437, + "end": 19542, + "name": "POP", + "source": 40 + }, + { + "begin": 19437, + "end": 19542, + "name": "POP", + "source": 40 + }, + { + "begin": 19437, + "end": 19542, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19548, + "end": 19701, + "name": "tag", + "source": 40, + "value": "895" + }, + { + "begin": 19548, + "end": 19701, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19641, + "end": 19694, + "name": "PUSH [tag]", + "source": 40, + "value": "1148" + }, + { + "begin": 19688, + "end": 19693, + "name": "DUP2", + "source": 40 + }, + { + "begin": 19641, + "end": 19694, + "name": "PUSH [tag]", + "source": 40, + "value": "889" + }, + { + "begin": 19641, + "end": 19694, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19641, + "end": 19694, + "name": "tag", + "source": 40, + "value": "1148" + }, + { + "begin": 19641, + "end": 19694, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19636, + "end": 19639, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19629, + "end": 19695, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19548, + "end": 19701, + "name": "POP", + "source": 40 + }, + { + "begin": 19548, + "end": 19701, + "name": "POP", + "source": 40 + }, + { + "begin": 19548, + "end": 19701, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19707, + "end": 19806, + "name": "tag", + "source": 40, + "value": "896" + }, + { + "begin": 19707, + "end": 19806, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19778, + "end": 19799, + "name": "PUSH [tag]", + "source": 40, + "value": "1150" + }, + { + "begin": 19793, + "end": 19798, + "name": "DUP2", + "source": 40 + }, + { + "begin": 19778, + "end": 19799, + "name": "PUSH [tag]", + "source": 40, + "value": "844" + }, + { + "begin": 19778, + "end": 19799, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19778, + "end": 19799, + "name": "tag", + "source": 40, + "value": "1150" + }, + { + "begin": 19778, + "end": 19799, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19773, + "end": 19776, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19766, + "end": 19800, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19707, + "end": 19806, + "name": "POP", + "source": 40 + }, + { + "begin": 19707, + "end": 19806, + "name": "POP", + "source": 40 + }, + { + "begin": 19707, + "end": 19806, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19894, + "end": 20789, + "name": "tag", + "source": 40, + "value": "897" + }, + { + "begin": 19894, + "end": 20789, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20051, + "end": 20055, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 20046, + "end": 20049, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20042, + "end": 20056, + "name": "ADD", + "source": 40 + }, + { + "begin": 20141, + "end": 20145, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20134, + "end": 20139, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20130, + "end": 20146, + "name": "ADD", + "source": 40 + }, + { + "begin": 20124, + "end": 20147, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 20160, + "end": 20221, + "name": "PUSH [tag]", + "source": 40, + "value": "1152" + }, + { + "begin": 20215, + "end": 20219, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20210, + "end": 20213, + "name": "DUP6", + "source": 40 + }, + { + "begin": 20206, + "end": 20220, + "name": "ADD", + "source": 40 + }, + { + "begin": 20192, + "end": 20204, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20160, + "end": 20221, + "name": "PUSH [tag]", + "source": 40, + "value": "894" + }, + { + "begin": 20160, + "end": 20221, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20160, + "end": 20221, + "name": "tag", + "source": 40, + "value": "1152" + }, + { + "begin": 20160, + "end": 20221, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20066, + "end": 20231, + "name": "POP", + "source": 40 + }, + { + "begin": 20315, + "end": 20319, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 20308, + "end": 20313, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20304, + "end": 20320, + "name": "ADD", + "source": 40 + }, + { + "begin": 20298, + "end": 20321, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 20334, + "end": 20413, + "name": "PUSH [tag]", + "source": 40, + "value": "1153" + }, + { + "begin": 20407, + "end": 20411, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 20402, + "end": 20405, + "name": "DUP6", + "source": 40 + }, + { + "begin": 20398, + "end": 20412, + "name": "ADD", + "source": 40 + }, + { + "begin": 20384, + "end": 20396, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20334, + "end": 20413, + "name": "PUSH [tag]", + "source": 40, + "value": "895" + }, + { + "begin": 20334, + "end": 20413, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20334, + "end": 20413, + "name": "tag", + "source": 40, + "value": "1153" + }, + { + "begin": 20334, + "end": 20413, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20241, + "end": 20423, + "name": "POP", + "source": 40 + }, + { + "begin": 20515, + "end": 20519, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 20508, + "end": 20513, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20504, + "end": 20520, + "name": "ADD", + "source": 40 + }, + { + "begin": 20498, + "end": 20521, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 20534, + "end": 20591, + "name": "PUSH [tag]", + "source": 40, + "value": "1154" + }, + { + "begin": 20585, + "end": 20589, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 20580, + "end": 20583, + "name": "DUP6", + "source": 40 + }, + { + "begin": 20576, + "end": 20590, + "name": "ADD", + "source": 40 + }, + { + "begin": 20562, + "end": 20574, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20534, + "end": 20591, + "name": "PUSH [tag]", + "source": 40, + "value": "896" + }, + { + "begin": 20534, + "end": 20591, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20534, + "end": 20591, + "name": "tag", + "source": 40, + "value": "1154" + }, + { + "begin": 20534, + "end": 20591, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20433, + "end": 20601, + "name": "POP", + "source": 40 + }, + { + "begin": 20696, + "end": 20700, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 20689, + "end": 20694, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20685, + "end": 20701, + "name": "ADD", + "source": 40 + }, + { + "begin": 20679, + "end": 20702, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 20715, + "end": 20772, + "name": "PUSH [tag]", + "source": 40, + "value": "1155" + }, + { + "begin": 20766, + "end": 20770, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 20761, + "end": 20764, + "name": "DUP6", + "source": 40 + }, + { + "begin": 20757, + "end": 20771, + "name": "ADD", + "source": 40 + }, + { + "begin": 20743, + "end": 20755, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20715, + "end": 20772, + "name": "PUSH [tag]", + "source": 40, + "value": "896" + }, + { + "begin": 20715, + "end": 20772, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20715, + "end": 20772, + "name": "tag", + "source": 40, + "value": "1155" + }, + { + "begin": 20715, + "end": 20772, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20611, + "end": 20782, + "name": "POP", + "source": 40 + }, + { + "begin": 20020, + "end": 20789, + "name": "POP", + "source": 40 + }, + { + "begin": 19894, + "end": 20789, + "name": "POP", + "source": 40 + }, + { + "begin": 19894, + "end": 20789, + "name": "POP", + "source": 40 + }, + { + "begin": 19894, + "end": 20789, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20795, + "end": 21114, + "name": "tag", + "source": 40, + "value": "898" + }, + { + "begin": 20795, + "end": 21114, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20934, + "end": 20944, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20955, + "end": 21071, + "name": "PUSH [tag]", + "source": 40, + "value": "1157" + }, + { + "begin": 21067, + "end": 21070, + "name": "DUP4", + "source": 40 + }, + { + "begin": 21059, + "end": 21065, + "name": "DUP4", + "source": 40 + }, + { + "begin": 20955, + "end": 21071, + "name": "PUSH [tag]", + "source": 40, + "value": "897" + }, + { + "begin": 20955, + "end": 21071, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20955, + "end": 21071, + "name": "tag", + "source": 40, + "value": "1157" + }, + { + "begin": 20955, + "end": 21071, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21103, + "end": 21107, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 21098, + "end": 21101, + "name": "DUP4", + "source": 40 + }, + { + "begin": 21094, + "end": 21108, + "name": "ADD", + "source": 40 + }, + { + "begin": 21080, + "end": 21108, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 21080, + "end": 21108, + "name": "POP", + "source": 40 + }, + { + "begin": 20795, + "end": 21114, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 20795, + "end": 21114, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 20795, + "end": 21114, + "name": "POP", + "source": 40 + }, + { + "begin": 20795, + "end": 21114, + "name": "POP", + "source": 40 + }, + { + "begin": 20795, + "end": 21114, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 21120, + "end": 21268, + "name": "tag", + "source": 40, + "value": "899" + }, + { + "begin": 21120, + "end": 21268, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21225, + "end": 21229, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 21257, + "end": 21261, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 21252, + "end": 21255, + "name": "DUP3", + "source": 40 + }, + { + "begin": 21248, + "end": 21262, + "name": "ADD", + "source": 40 + }, + { + "begin": 21240, + "end": 21262, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 21240, + "end": 21262, + "name": "POP", + "source": 40 + }, + { + "begin": 21120, + "end": 21268, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 21120, + "end": 21268, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 21120, + "end": 21268, + "name": "POP", + "source": 40 + }, + { + "begin": 21120, + "end": 21268, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 21360, + "end": 22372, + "name": "tag", + "source": 40, + "value": "900" + }, + { + "begin": 21360, + "end": 22372, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21549, + "end": 21552, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 21578, + "end": 21667, + "name": "PUSH [tag]", + "source": 40, + "value": "1160" + }, + { + "begin": 21661, + "end": 21666, + "name": "DUP3", + "source": 40 + }, + { + "begin": 21578, + "end": 21667, + "name": "PUSH [tag]", + "source": 40, + "value": "891" + }, + { + "begin": 21578, + "end": 21667, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 21578, + "end": 21667, + "name": "tag", + "source": 40, + "value": "1160" + }, + { + "begin": 21578, + "end": 21667, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21683, + "end": 21804, + "name": "PUSH [tag]", + "source": 40, + "value": "1161" + }, + { + "begin": 21797, + "end": 21803, + "name": "DUP2", + "source": 40 + }, + { + "begin": 21792, + "end": 21795, + "name": "DUP6", + "source": 40 + }, + { + "begin": 21683, + "end": 21804, + "name": "PUSH [tag]", + "source": 40, + "value": "892" + }, + { + "begin": 21683, + "end": 21804, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 21683, + "end": 21804, + "name": "tag", + "source": 40, + "value": "1161" + }, + { + "begin": 21683, + "end": 21804, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21676, + "end": 21804, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 21676, + "end": 21804, + "name": "POP", + "source": 40 + }, + { + "begin": 21828, + "end": 21919, + "name": "PUSH [tag]", + "source": 40, + "value": "1162" + }, + { + "begin": 21913, + "end": 21918, + "name": "DUP4", + "source": 40 + }, + { + "begin": 21828, + "end": 21919, + "name": "PUSH [tag]", + "source": 40, + "value": "893" + }, + { + "begin": 21828, + "end": 21919, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 21828, + "end": 21919, + "name": "tag", + "source": 40, + "value": "1162" + }, + { + "begin": 21828, + "end": 21919, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21942, + "end": 21949, + "name": "DUP1", + "source": 40 + }, + { + "begin": 21973, + "end": 21974, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 21958, + "end": 22347, + "name": "tag", + "source": 40, + "value": "1163" + }, + { + "begin": 21958, + "end": 22347, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21983, + "end": 21989, + "name": "DUP4", + "source": 40 + }, + { + "begin": 21980, + "end": 21981, + "name": "DUP2", + "source": 40 + }, + { + "begin": 21977, + "end": 21990, + "name": "LT", + "source": 40 + }, + { + "begin": 21958, + "end": 22347, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 21958, + "end": 22347, + "name": "PUSH [tag]", + "source": 40, + "value": "1165" + }, + { + "begin": 21958, + "end": 22347, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 22059, + "end": 22065, + "name": "DUP2", + "source": 40 + }, + { + "begin": 22053, + "end": 22066, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 22086, + "end": 22219, + "name": "PUSH [tag]", + "source": 40, + "value": "1166" + }, + { + "begin": 22215, + "end": 22218, + "name": "DUP9", + "source": 40 + }, + { + "begin": 22200, + "end": 22213, + "name": "DUP3", + "source": 40 + }, + { + "begin": 22086, + "end": 22219, + "name": "PUSH [tag]", + "source": 40, + "value": "898" + }, + { + "begin": 22086, + "end": 22219, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 22086, + "end": 22219, + "name": "tag", + "source": 40, + "value": "1166" + }, + { + "begin": 22086, + "end": 22219, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 22079, + "end": 22219, + "name": "SWAP8", + "source": 40 + }, + { + "begin": 22079, + "end": 22219, + "name": "POP", + "source": 40 + }, + { + "begin": 22242, + "end": 22337, + "name": "PUSH [tag]", + "source": 40, + "value": "1167" + }, + { + "begin": 22330, + "end": 22336, + "name": "DUP4", + "source": 40 + }, + { + "begin": 22242, + "end": 22337, + "name": "PUSH [tag]", + "source": 40, + "value": "899" + }, + { + "begin": 22242, + "end": 22337, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 22242, + "end": 22337, + "name": "tag", + "source": 40, + "value": "1167" + }, + { + "begin": 22242, + "end": 22337, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 22232, + "end": 22337, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 22232, + "end": 22337, + "name": "POP", + "source": 40 + }, + { + "begin": 22018, + "end": 22347, + "name": "POP", + "source": 40 + }, + { + "begin": 22005, + "end": 22006, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 22002, + "end": 22003, + "name": "DUP2", + "source": 40 + }, + { + "begin": 21998, + "end": 22007, + "name": "ADD", + "source": 40 + }, + { + "begin": 21993, + "end": 22007, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 21993, + "end": 22007, + "name": "POP", + "source": 40 + }, + { + "begin": 21958, + "end": 22347, + "name": "PUSH [tag]", + "source": 40, + "value": "1163" + }, + { + "begin": 21958, + "end": 22347, + "name": "JUMP", + "source": 40 + }, + { + "begin": 21958, + "end": 22347, + "name": "tag", + "source": 40, + "value": "1165" + }, + { + "begin": 21958, + "end": 22347, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 21962, + "end": 21976, + "name": "POP", + "source": 40 + }, + { + "begin": 22363, + "end": 22366, + "name": "DUP6", + "source": 40 + }, + { + "begin": 22356, + "end": 22366, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 22356, + "end": 22366, + "name": "POP", + "source": 40 + }, + { + "begin": 21554, + "end": 22372, + "name": "POP", + "source": 40 + }, + { + "begin": 21554, + "end": 22372, + "name": "POP", + "source": 40 + }, + { + "begin": 21554, + "end": 22372, + "name": "POP", + "source": 40 + }, + { + "begin": 21360, + "end": 22372, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 21360, + "end": 22372, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 21360, + "end": 22372, + "name": "POP", + "source": 40 + }, + { + "begin": 21360, + "end": 22372, + "name": "POP", + "source": 40 + }, + { + "begin": 21360, + "end": 22372, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 22378, + "end": 22891, + "name": "tag", + "source": 40, + "value": "143" + }, + { + "begin": 22378, + "end": 22891, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 22591, + "end": 22595, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 22629, + "end": 22631, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 22618, + "end": 22627, + "name": "DUP3", + "source": 40 + }, + { + "begin": 22614, + "end": 22632, + "name": "ADD", + "source": 40 + }, + { + "begin": 22606, + "end": 22632, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 22606, + "end": 22632, + "name": "POP", + "source": 40 + }, + { + "begin": 22678, + "end": 22687, + "name": "DUP2", + "source": 40 + }, + { + "begin": 22672, + "end": 22676, + "name": "DUP2", + "source": 40 + }, + { + "begin": 22668, + "end": 22688, + "name": "SUB", + "source": 40 + }, + { + "begin": 22664, + "end": 22665, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 22653, + "end": 22662, + "name": "DUP4", + "source": 40 + }, + { + "begin": 22649, + "end": 22666, + "name": "ADD", + "source": 40 + }, + { + "begin": 22642, + "end": 22689, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 22706, + "end": 22884, + "name": "PUSH [tag]", + "source": 40, + "value": "1169" + }, + { + "begin": 22879, + "end": 22883, + "name": "DUP2", + "source": 40 + }, + { + "begin": 22870, + "end": 22876, + "name": "DUP5", + "source": 40 + }, + { + "begin": 22706, + "end": 22884, + "name": "PUSH [tag]", + "source": 40, + "value": "900" + }, + { + "begin": 22706, + "end": 22884, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 22706, + "end": 22884, + "name": "tag", + "source": 40, + "value": "1169" + }, + { + "begin": 22706, + "end": 22884, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 22698, + "end": 22884, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 22698, + "end": 22884, + "name": "POP", + "source": 40 + }, + { + "begin": 22378, + "end": 22891, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 22378, + "end": 22891, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 22378, + "end": 22891, + "name": "POP", + "source": 40 + }, + { + "begin": 22378, + "end": 22891, + "name": "POP", + "source": 40 + }, + { + "begin": 22378, + "end": 22891, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "tag", + "source": 40, + "value": "146" + }, + { + "begin": 22897, + "end": 23714, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23009, + "end": 23015, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 23017, + "end": 23023, + "name": "DUP1", + "source": 40 + }, + { + "begin": 23025, + "end": 23031, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 23033, + "end": 23039, + "name": "DUP1", + "source": 40 + }, + { + "begin": 23082, + "end": 23085, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 23070, + "end": 23079, + "name": "DUP6", + "source": 40 + }, + { + "begin": 23061, + "end": 23068, + "name": "DUP8", + "source": 40 + }, + { + "begin": 23057, + "end": 23080, + "name": "SUB", + "source": 40 + }, + { + "begin": 23053, + "end": 23086, + "name": "SLT", + "source": 40 + }, + { + "begin": 23050, + "end": 23170, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 23050, + "end": 23170, + "name": "PUSH [tag]", + "source": 40, + "value": "1171" + }, + { + "begin": 23050, + "end": 23170, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 23089, + "end": 23168, + "name": "PUSH [tag]", + "source": 40, + "value": "1172" + }, + { + "begin": 23089, + "end": 23168, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 23089, + "end": 23168, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 23089, + "end": 23168, + "name": "tag", + "source": 40, + "value": "1172" + }, + { + "begin": 23089, + "end": 23168, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23050, + "end": 23170, + "name": "tag", + "source": 40, + "value": "1171" + }, + { + "begin": 23050, + "end": 23170, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23209, + "end": 23210, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 23234, + "end": 23302, + "name": "PUSH [tag]", + "source": 40, + "value": "1173" + }, + { + "begin": 23294, + "end": 23301, + "name": "DUP8", + "source": 40 + }, + { + "begin": 23285, + "end": 23291, + "name": "DUP3", + "source": 40 + }, + { + "begin": 23274, + "end": 23283, + "name": "DUP9", + "source": 40 + }, + { + "begin": 23270, + "end": 23292, + "name": "ADD", + "source": 40 + }, + { + "begin": 23234, + "end": 23302, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 23234, + "end": 23302, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 23234, + "end": 23302, + "name": "tag", + "source": 40, + "value": "1173" + }, + { + "begin": 23234, + "end": 23302, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23224, + "end": 23302, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 23224, + "end": 23302, + "name": "POP", + "source": 40 + }, + { + "begin": 23180, + "end": 23312, + "name": "POP", + "source": 40 + }, + { + "begin": 23351, + "end": 23353, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 23377, + "end": 23445, + "name": "PUSH [tag]", + "source": 40, + "value": "1174" + }, + { + "begin": 23437, + "end": 23444, + "name": "DUP8", + "source": 40 + }, + { + "begin": 23428, + "end": 23434, + "name": "DUP3", + "source": 40 + }, + { + "begin": 23417, + "end": 23426, + "name": "DUP9", + "source": 40 + }, + { + "begin": 23413, + "end": 23435, + "name": "ADD", + "source": 40 + }, + { + "begin": 23377, + "end": 23445, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 23377, + "end": 23445, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 23377, + "end": 23445, + "name": "tag", + "source": 40, + "value": "1174" + }, + { + "begin": 23377, + "end": 23445, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23367, + "end": 23445, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 23367, + "end": 23445, + "name": "POP", + "source": 40 + }, + { + "begin": 23322, + "end": 23455, + "name": "POP", + "source": 40 + }, + { + "begin": 23494, + "end": 23496, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 23520, + "end": 23572, + "name": "PUSH [tag]", + "source": 40, + "value": "1175" + }, + { + "begin": 23564, + "end": 23571, + "name": "DUP8", + "source": 40 + }, + { + "begin": 23555, + "end": 23561, + "name": "DUP3", + "source": 40 + }, + { + "begin": 23544, + "end": 23553, + "name": "DUP9", + "source": 40 + }, + { + "begin": 23540, + "end": 23562, + "name": "ADD", + "source": 40 + }, + { + "begin": 23520, + "end": 23572, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 23520, + "end": 23572, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 23520, + "end": 23572, + "name": "tag", + "source": 40, + "value": "1175" + }, + { + "begin": 23520, + "end": 23572, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23510, + "end": 23572, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 23510, + "end": 23572, + "name": "POP", + "source": 40 + }, + { + "begin": 23465, + "end": 23582, + "name": "POP", + "source": 40 + }, + { + "begin": 23621, + "end": 23623, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 23647, + "end": 23697, + "name": "PUSH [tag]", + "source": 40, + "value": "1176" + }, + { + "begin": 23689, + "end": 23696, + "name": "DUP8", + "source": 40 + }, + { + "begin": 23680, + "end": 23686, + "name": "DUP3", + "source": 40 + }, + { + "begin": 23669, + "end": 23678, + "name": "DUP9", + "source": 40 + }, + { + "begin": 23665, + "end": 23687, + "name": "ADD", + "source": 40 + }, + { + "begin": 23647, + "end": 23697, + "name": "PUSH [tag]", + "source": 40, + "value": "879" + }, + { + "begin": 23647, + "end": 23697, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 23647, + "end": 23697, + "name": "tag", + "source": 40, + "value": "1176" + }, + { + "begin": 23647, + "end": 23697, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23637, + "end": 23697, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 23637, + "end": 23697, + "name": "POP", + "source": 40 + }, + { + "begin": 23592, + "end": 23707, + "name": "POP", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "POP", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "name": "POP", + "source": 40 + }, + { + "begin": 22897, + "end": 23714, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 23720, + "end": 24399, + "name": "tag", + "source": 40, + "value": "153" + }, + { + "begin": 23720, + "end": 24399, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23827, + "end": 23833, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 23835, + "end": 23841, + "name": "DUP1", + "source": 40 + }, + { + "begin": 23843, + "end": 23849, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 23892, + "end": 23894, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 23880, + "end": 23889, + "name": "DUP5", + "source": 40 + }, + { + "begin": 23871, + "end": 23878, + "name": "DUP7", + "source": 40 + }, + { + "begin": 23867, + "end": 23890, + "name": "SUB", + "source": 40 + }, + { + "begin": 23863, + "end": 23895, + "name": "SLT", + "source": 40 + }, + { + "begin": 23860, + "end": 23979, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 23860, + "end": 23979, + "name": "PUSH [tag]", + "source": 40, + "value": "1178" + }, + { + "begin": 23860, + "end": 23979, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 23898, + "end": 23977, + "name": "PUSH [tag]", + "source": 40, + "value": "1179" + }, + { + "begin": 23898, + "end": 23977, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 23898, + "end": 23977, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 23898, + "end": 23977, + "name": "tag", + "source": 40, + "value": "1179" + }, + { + "begin": 23898, + "end": 23977, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 23860, + "end": 23979, + "name": "tag", + "source": 40, + "value": "1178" + }, + { + "begin": 23860, + "end": 23979, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 24018, + "end": 24019, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 24043, + "end": 24111, + "name": "PUSH [tag]", + "source": 40, + "value": "1180" + }, + { + "begin": 24103, + "end": 24110, + "name": "DUP7", + "source": 40 + }, + { + "begin": 24094, + "end": 24100, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24083, + "end": 24092, + "name": "DUP8", + "source": 40 + }, + { + "begin": 24079, + "end": 24101, + "name": "ADD", + "source": 40 + }, + { + "begin": 24043, + "end": 24111, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 24043, + "end": 24111, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 24043, + "end": 24111, + "name": "tag", + "source": 40, + "value": "1180" + }, + { + "begin": 24043, + "end": 24111, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 24033, + "end": 24111, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 24033, + "end": 24111, + "name": "POP", + "source": 40 + }, + { + "begin": 23989, + "end": 24121, + "name": "POP", + "source": 40 + }, + { + "begin": 24160, + "end": 24162, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 24186, + "end": 24254, + "name": "PUSH [tag]", + "source": 40, + "value": "1181" + }, + { + "begin": 24246, + "end": 24253, + "name": "DUP7", + "source": 40 + }, + { + "begin": 24237, + "end": 24243, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24226, + "end": 24235, + "name": "DUP8", + "source": 40 + }, + { + "begin": 24222, + "end": 24244, + "name": "ADD", + "source": 40 + }, + { + "begin": 24186, + "end": 24254, + "name": "PUSH [tag]", + "source": 40, + "value": "865" + }, + { + "begin": 24186, + "end": 24254, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 24186, + "end": 24254, + "name": "tag", + "source": 40, + "value": "1181" + }, + { + "begin": 24186, + "end": 24254, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 24176, + "end": 24254, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 24176, + "end": 24254, + "name": "POP", + "source": 40 + }, + { + "begin": 24131, + "end": 24264, + "name": "POP", + "source": 40 + }, + { + "begin": 24303, + "end": 24305, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 24329, + "end": 24382, + "name": "PUSH [tag]", + "source": 40, + "value": "1182" + }, + { + "begin": 24374, + "end": 24381, + "name": "DUP7", + "source": 40 + }, + { + "begin": 24365, + "end": 24371, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24354, + "end": 24363, + "name": "DUP8", + "source": 40 + }, + { + "begin": 24350, + "end": 24372, + "name": "ADD", + "source": 40 + }, + { + "begin": 24329, + "end": 24382, + "name": "PUSH [tag]", + "source": 40, + "value": "855" + }, + { + "begin": 24329, + "end": 24382, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 24329, + "end": 24382, + "name": "tag", + "source": 40, + "value": "1182" + }, + { + "begin": 24329, + "end": 24382, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 24319, + "end": 24382, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 24319, + "end": 24382, + "name": "POP", + "source": 40 + }, + { + "begin": 24274, + "end": 24392, + "name": "POP", + "source": 40 + }, + { + "begin": 23720, + "end": 24399, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 23720, + "end": 24399, + "name": "POP", + "source": 40 + }, + { + "begin": 23720, + "end": 24399, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 23720, + "end": 24399, + "name": "POP", + "source": 40 + }, + { + "begin": 23720, + "end": 24399, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 23720, + "end": 24399, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 24487, + "end": 25392, + "name": "tag", + "source": 40, + "value": "901" + }, + { + "begin": 24487, + "end": 25392, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 24654, + "end": 24658, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 24649, + "end": 24652, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24645, + "end": 24659, + "name": "ADD", + "source": 40 + }, + { + "begin": 24744, + "end": 24748, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 24737, + "end": 24742, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24733, + "end": 24749, + "name": "ADD", + "source": 40 + }, + { + "begin": 24727, + "end": 24750, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 24763, + "end": 24824, + "name": "PUSH [tag]", + "source": 40, + "value": "1184" + }, + { + "begin": 24818, + "end": 24822, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 24813, + "end": 24816, + "name": "DUP6", + "source": 40 + }, + { + "begin": 24809, + "end": 24823, + "name": "ADD", + "source": 40 + }, + { + "begin": 24795, + "end": 24807, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24763, + "end": 24824, + "name": "PUSH [tag]", + "source": 40, + "value": "894" + }, + { + "begin": 24763, + "end": 24824, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 24763, + "end": 24824, + "name": "tag", + "source": 40, + "value": "1184" + }, + { + "begin": 24763, + "end": 24824, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 24669, + "end": 24834, + "name": "POP", + "source": 40 + }, + { + "begin": 24918, + "end": 24922, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 24911, + "end": 24916, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24907, + "end": 24923, + "name": "ADD", + "source": 40 + }, + { + "begin": 24901, + "end": 24924, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 24937, + "end": 25016, + "name": "PUSH [tag]", + "source": 40, + "value": "1185" + }, + { + "begin": 25010, + "end": 25014, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 25005, + "end": 25008, + "name": "DUP6", + "source": 40 + }, + { + "begin": 25001, + "end": 25015, + "name": "ADD", + "source": 40 + }, + { + "begin": 24987, + "end": 24999, + "name": "DUP3", + "source": 40 + }, + { + "begin": 24937, + "end": 25016, + "name": "PUSH [tag]", + "source": 40, + "value": "895" + }, + { + "begin": 24937, + "end": 25016, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 24937, + "end": 25016, + "name": "tag", + "source": 40, + "value": "1185" + }, + { + "begin": 24937, + "end": 25016, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 24844, + "end": 25026, + "name": "POP", + "source": 40 + }, + { + "begin": 25118, + "end": 25122, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 25111, + "end": 25116, + "name": "DUP3", + "source": 40 + }, + { + "begin": 25107, + "end": 25123, + "name": "ADD", + "source": 40 + }, + { + "begin": 25101, + "end": 25124, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 25137, + "end": 25194, + "name": "PUSH [tag]", + "source": 40, + "value": "1186" + }, + { + "begin": 25188, + "end": 25192, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 25183, + "end": 25186, + "name": "DUP6", + "source": 40 + }, + { + "begin": 25179, + "end": 25193, + "name": "ADD", + "source": 40 + }, + { + "begin": 25165, + "end": 25177, + "name": "DUP3", + "source": 40 + }, + { + "begin": 25137, + "end": 25194, + "name": "PUSH [tag]", + "source": 40, + "value": "896" + }, + { + "begin": 25137, + "end": 25194, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 25137, + "end": 25194, + "name": "tag", + "source": 40, + "value": "1186" + }, + { + "begin": 25137, + "end": 25194, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 25036, + "end": 25204, + "name": "POP", + "source": 40 + }, + { + "begin": 25299, + "end": 25303, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 25292, + "end": 25297, + "name": "DUP3", + "source": 40 + }, + { + "begin": 25288, + "end": 25304, + "name": "ADD", + "source": 40 + }, + { + "begin": 25282, + "end": 25305, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 25318, + "end": 25375, + "name": "PUSH [tag]", + "source": 40, + "value": "1187" + }, + { + "begin": 25369, + "end": 25373, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 25364, + "end": 25367, + "name": "DUP6", + "source": 40 + }, + { + "begin": 25360, + "end": 25374, + "name": "ADD", + "source": 40 + }, + { + "begin": 25346, + "end": 25358, + "name": "DUP3", + "source": 40 + }, + { + "begin": 25318, + "end": 25375, + "name": "PUSH [tag]", + "source": 40, + "value": "896" + }, + { + "begin": 25318, + "end": 25375, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 25318, + "end": 25375, + "name": "tag", + "source": 40, + "value": "1187" + }, + { + "begin": 25318, + "end": 25375, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 25214, + "end": 25385, + "name": "POP", + "source": 40 + }, + { + "begin": 24623, + "end": 25392, + "name": "POP", + "source": 40 + }, + { + "begin": 24487, + "end": 25392, + "name": "POP", + "source": 40 + }, + { + "begin": 24487, + "end": 25392, + "name": "POP", + "source": 40 + }, + { + "begin": 24487, + "end": 25392, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 25398, + "end": 25761, + "name": "tag", + "source": 40, + "value": "156" + }, + { + "begin": 25398, + "end": 25761, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 25561, + "end": 25565, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 25599, + "end": 25602, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 25588, + "end": 25597, + "name": "DUP3", + "source": 40 + }, + { + "begin": 25584, + "end": 25603, + "name": "ADD", + "source": 40 + }, + { + "begin": 25576, + "end": 25603, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 25576, + "end": 25603, + "name": "POP", + "source": 40 + }, + { + "begin": 25613, + "end": 25754, + "name": "PUSH [tag]", + "source": 40, + "value": "1189" + }, + { + "begin": 25751, + "end": 25752, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 25740, + "end": 25749, + "name": "DUP4", + "source": 40 + }, + { + "begin": 25736, + "end": 25753, + "name": "ADD", + "source": 40 + }, + { + "begin": 25727, + "end": 25733, + "name": "DUP5", + "source": 40 + }, + { + "begin": 25613, + "end": 25754, + "name": "PUSH [tag]", + "source": 40, + "value": "901" + }, + { + "begin": 25613, + "end": 25754, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 25613, + "end": 25754, + "name": "tag", + "source": 40, + "value": "1189" + }, + { + "begin": 25613, + "end": 25754, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 25398, + "end": 25761, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 25398, + "end": 25761, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 25398, + "end": 25761, + "name": "POP", + "source": 40 + }, + { + "begin": 25398, + "end": 25761, + "name": "POP", + "source": 40 + }, + { + "begin": 25398, + "end": 25761, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "tag", + "source": 40, + "value": "188" + }, + { + "begin": 25767, + "end": 26752, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26050, + "end": 26054, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 26088, + "end": 26091, + "name": "PUSH", + "source": 40, + "value": "100" + }, + { + "begin": 26077, + "end": 26086, + "name": "DUP3", + "source": 40 + }, + { + "begin": 26073, + "end": 26092, + "name": "ADD", + "source": 40 + }, + { + "begin": 26065, + "end": 26092, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 26065, + "end": 26092, + "name": "POP", + "source": 40 + }, + { + "begin": 26102, + "end": 26173, + "name": "PUSH [tag]", + "source": 40, + "value": "1191" + }, + { + "begin": 26170, + "end": 26171, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 26159, + "end": 26168, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26155, + "end": 26172, + "name": "ADD", + "source": 40 + }, + { + "begin": 26146, + "end": 26152, + "name": "DUP12", + "source": 40 + }, + { + "begin": 26102, + "end": 26173, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 26102, + "end": 26173, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26102, + "end": 26173, + "name": "tag", + "source": 40, + "value": "1191" + }, + { + "begin": 26102, + "end": 26173, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26183, + "end": 26255, + "name": "PUSH [tag]", + "source": 40, + "value": "1192" + }, + { + "begin": 26251, + "end": 26253, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 26240, + "end": 26249, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26236, + "end": 26254, + "name": "ADD", + "source": 40 + }, + { + "begin": 26227, + "end": 26233, + "name": "DUP11", + "source": 40 + }, + { + "begin": 26183, + "end": 26255, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 26183, + "end": 26255, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26183, + "end": 26255, + "name": "tag", + "source": 40, + "value": "1192" + }, + { + "begin": 26183, + "end": 26255, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26265, + "end": 26337, + "name": "PUSH [tag]", + "source": 40, + "value": "1193" + }, + { + "begin": 26333, + "end": 26335, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 26322, + "end": 26331, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26318, + "end": 26336, + "name": "ADD", + "source": 40 + }, + { + "begin": 26309, + "end": 26315, + "name": "DUP10", + "source": 40 + }, + { + "begin": 26265, + "end": 26337, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 26265, + "end": 26337, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26265, + "end": 26337, + "name": "tag", + "source": 40, + "value": "1193" + }, + { + "begin": 26265, + "end": 26337, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26347, + "end": 26419, + "name": "PUSH [tag]", + "source": 40, + "value": "1194" + }, + { + "begin": 26415, + "end": 26417, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 26404, + "end": 26413, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26400, + "end": 26418, + "name": "ADD", + "source": 40 + }, + { + "begin": 26391, + "end": 26397, + "name": "DUP9", + "source": 40 + }, + { + "begin": 26347, + "end": 26419, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 26347, + "end": 26419, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26347, + "end": 26419, + "name": "tag", + "source": 40, + "value": "1194" + }, + { + "begin": 26347, + "end": 26419, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26429, + "end": 26502, + "name": "PUSH [tag]", + "source": 40, + "value": "1195" + }, + { + "begin": 26497, + "end": 26500, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 26486, + "end": 26495, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26482, + "end": 26501, + "name": "ADD", + "source": 40 + }, + { + "begin": 26473, + "end": 26479, + "name": "DUP8", + "source": 40 + }, + { + "begin": 26429, + "end": 26502, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 26429, + "end": 26502, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26429, + "end": 26502, + "name": "tag", + "source": 40, + "value": "1195" + }, + { + "begin": 26429, + "end": 26502, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26512, + "end": 26585, + "name": "PUSH [tag]", + "source": 40, + "value": "1196" + }, + { + "begin": 26580, + "end": 26583, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 26569, + "end": 26578, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26565, + "end": 26584, + "name": "ADD", + "source": 40 + }, + { + "begin": 26556, + "end": 26562, + "name": "DUP7", + "source": 40 + }, + { + "begin": 26512, + "end": 26585, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 26512, + "end": 26585, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26512, + "end": 26585, + "name": "tag", + "source": 40, + "value": "1196" + }, + { + "begin": 26512, + "end": 26585, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26595, + "end": 26668, + "name": "PUSH [tag]", + "source": 40, + "value": "1197" + }, + { + "begin": 26663, + "end": 26666, + "name": "PUSH", + "source": 40, + "value": "C0" + }, + { + "begin": 26652, + "end": 26661, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26648, + "end": 26667, + "name": "ADD", + "source": 40 + }, + { + "begin": 26639, + "end": 26645, + "name": "DUP6", + "source": 40 + }, + { + "begin": 26595, + "end": 26668, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 26595, + "end": 26668, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26595, + "end": 26668, + "name": "tag", + "source": 40, + "value": "1197" + }, + { + "begin": 26595, + "end": 26668, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26678, + "end": 26745, + "name": "PUSH [tag]", + "source": 40, + "value": "1198" + }, + { + "begin": 26740, + "end": 26743, + "name": "PUSH", + "source": 40, + "value": "E0" + }, + { + "begin": 26729, + "end": 26738, + "name": "DUP4", + "source": 40 + }, + { + "begin": 26725, + "end": 26744, + "name": "ADD", + "source": 40 + }, + { + "begin": 26716, + "end": 26722, + "name": "DUP5", + "source": 40 + }, + { + "begin": 26678, + "end": 26745, + "name": "PUSH [tag]", + "source": 40, + "value": "845" + }, + { + "begin": 26678, + "end": 26745, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26678, + "end": 26745, + "name": "tag", + "source": 40, + "value": "1198" + }, + { + "begin": 26678, + "end": 26745, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "SWAP10", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "name": "POP", + "source": 40 + }, + { + "begin": 25767, + "end": 26752, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "tag", + "source": 40, + "value": "191" + }, + { + "begin": 26758, + "end": 27523, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26844, + "end": 26850, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 26852, + "end": 26858, + "name": "DUP1", + "source": 40 + }, + { + "begin": 26860, + "end": 26866, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 26868, + "end": 26874, + "name": "DUP1", + "source": 40 + }, + { + "begin": 26917, + "end": 26920, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 26905, + "end": 26914, + "name": "DUP6", + "source": 40 + }, + { + "begin": 26896, + "end": 26903, + "name": "DUP8", + "source": 40 + }, + { + "begin": 26892, + "end": 26915, + "name": "SUB", + "source": 40 + }, + { + "begin": 26888, + "end": 26921, + "name": "SLT", + "source": 40 + }, + { + "begin": 26885, + "end": 27005, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 26885, + "end": 27005, + "name": "PUSH [tag]", + "source": 40, + "value": "1200" + }, + { + "begin": 26885, + "end": 27005, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 26924, + "end": 27003, + "name": "PUSH [tag]", + "source": 40, + "value": "1201" + }, + { + "begin": 26924, + "end": 27003, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 26924, + "end": 27003, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 26924, + "end": 27003, + "name": "tag", + "source": 40, + "value": "1201" + }, + { + "begin": 26924, + "end": 27003, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 26885, + "end": 27005, + "name": "tag", + "source": 40, + "value": "1200" + }, + { + "begin": 26885, + "end": 27005, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27044, + "end": 27045, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 27069, + "end": 27122, + "name": "PUSH [tag]", + "source": 40, + "value": "1202" + }, + { + "begin": 27114, + "end": 27121, + "name": "DUP8", + "source": 40 + }, + { + "begin": 27105, + "end": 27111, + "name": "DUP3", + "source": 40 + }, + { + "begin": 27094, + "end": 27103, + "name": "DUP9", + "source": 40 + }, + { + "begin": 27090, + "end": 27112, + "name": "ADD", + "source": 40 + }, + { + "begin": 27069, + "end": 27122, + "name": "PUSH [tag]", + "source": 40, + "value": "877" + }, + { + "begin": 27069, + "end": 27122, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27069, + "end": 27122, + "name": "tag", + "source": 40, + "value": "1202" + }, + { + "begin": 27069, + "end": 27122, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27059, + "end": 27122, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 27059, + "end": 27122, + "name": "POP", + "source": 40 + }, + { + "begin": 27015, + "end": 27132, + "name": "POP", + "source": 40 + }, + { + "begin": 27171, + "end": 27173, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 27197, + "end": 27250, + "name": "PUSH [tag]", + "source": 40, + "value": "1203" + }, + { + "begin": 27242, + "end": 27249, + "name": "DUP8", + "source": 40 + }, + { + "begin": 27233, + "end": 27239, + "name": "DUP3", + "source": 40 + }, + { + "begin": 27222, + "end": 27231, + "name": "DUP9", + "source": 40 + }, + { + "begin": 27218, + "end": 27240, + "name": "ADD", + "source": 40 + }, + { + "begin": 27197, + "end": 27250, + "name": "PUSH [tag]", + "source": 40, + "value": "877" + }, + { + "begin": 27197, + "end": 27250, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27197, + "end": 27250, + "name": "tag", + "source": 40, + "value": "1203" + }, + { + "begin": 27197, + "end": 27250, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27187, + "end": 27250, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 27187, + "end": 27250, + "name": "POP", + "source": 40 + }, + { + "begin": 27142, + "end": 27260, + "name": "POP", + "source": 40 + }, + { + "begin": 27299, + "end": 27301, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 27325, + "end": 27378, + "name": "PUSH [tag]", + "source": 40, + "value": "1204" + }, + { + "begin": 27370, + "end": 27377, + "name": "DUP8", + "source": 40 + }, + { + "begin": 27361, + "end": 27367, + "name": "DUP3", + "source": 40 + }, + { + "begin": 27350, + "end": 27359, + "name": "DUP9", + "source": 40 + }, + { + "begin": 27346, + "end": 27368, + "name": "ADD", + "source": 40 + }, + { + "begin": 27325, + "end": 27378, + "name": "PUSH [tag]", + "source": 40, + "value": "855" + }, + { + "begin": 27325, + "end": 27378, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27325, + "end": 27378, + "name": "tag", + "source": 40, + "value": "1204" + }, + { + "begin": 27325, + "end": 27378, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27315, + "end": 27378, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 27315, + "end": 27378, + "name": "POP", + "source": 40 + }, + { + "begin": 27270, + "end": 27388, + "name": "POP", + "source": 40 + }, + { + "begin": 27427, + "end": 27429, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 27453, + "end": 27506, + "name": "PUSH [tag]", + "source": 40, + "value": "1205" + }, + { + "begin": 27498, + "end": 27505, + "name": "DUP8", + "source": 40 + }, + { + "begin": 27489, + "end": 27495, + "name": "DUP3", + "source": 40 + }, + { + "begin": 27478, + "end": 27487, + "name": "DUP9", + "source": 40 + }, + { + "begin": 27474, + "end": 27496, + "name": "ADD", + "source": 40 + }, + { + "begin": 27453, + "end": 27506, + "name": "PUSH [tag]", + "source": 40, + "value": "877" + }, + { + "begin": 27453, + "end": 27506, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27453, + "end": 27506, + "name": "tag", + "source": 40, + "value": "1205" + }, + { + "begin": 27453, + "end": 27506, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27443, + "end": 27506, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 27443, + "end": 27506, + "name": "POP", + "source": 40 + }, + { + "begin": 27398, + "end": 27516, + "name": "POP", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "POP", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "name": "POP", + "source": 40 + }, + { + "begin": 26758, + "end": 27523, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27529, + "end": 27856, + "name": "tag", + "source": 40, + "value": "204" + }, + { + "begin": 27529, + "end": 27856, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27587, + "end": 27593, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 27636, + "end": 27638, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 27624, + "end": 27633, + "name": "DUP3", + "source": 40 + }, + { + "begin": 27615, + "end": 27622, + "name": "DUP5", + "source": 40 + }, + { + "begin": 27611, + "end": 27634, + "name": "SUB", + "source": 40 + }, + { + "begin": 27607, + "end": 27639, + "name": "SLT", + "source": 40 + }, + { + "begin": 27604, + "end": 27723, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 27604, + "end": 27723, + "name": "PUSH [tag]", + "source": 40, + "value": "1207" + }, + { + "begin": 27604, + "end": 27723, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 27642, + "end": 27721, + "name": "PUSH [tag]", + "source": 40, + "value": "1208" + }, + { + "begin": 27642, + "end": 27721, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 27642, + "end": 27721, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27642, + "end": 27721, + "name": "tag", + "source": 40, + "value": "1208" + }, + { + "begin": 27642, + "end": 27721, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27604, + "end": 27723, + "name": "tag", + "source": 40, + "value": "1207" + }, + { + "begin": 27604, + "end": 27723, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27762, + "end": 27763, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 27787, + "end": 27839, + "name": "PUSH [tag]", + "source": 40, + "value": "1209" + }, + { + "begin": 27831, + "end": 27838, + "name": "DUP5", + "source": 40 + }, + { + "begin": 27822, + "end": 27828, + "name": "DUP3", + "source": 40 + }, + { + "begin": 27811, + "end": 27820, + "name": "DUP6", + "source": 40 + }, + { + "begin": 27807, + "end": 27829, + "name": "ADD", + "source": 40 + }, + { + "begin": 27787, + "end": 27839, + "name": "PUSH [tag]", + "source": 40, + "value": "868" + }, + { + "begin": 27787, + "end": 27839, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27787, + "end": 27839, + "name": "tag", + "source": 40, + "value": "1209" + }, + { + "begin": 27787, + "end": 27839, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27777, + "end": 27839, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 27777, + "end": 27839, + "name": "POP", + "source": 40 + }, + { + "begin": 27733, + "end": 27849, + "name": "POP", + "source": 40 + }, + { + "begin": 27529, + "end": 27856, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 27529, + "end": 27856, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 27529, + "end": 27856, + "name": "POP", + "source": 40 + }, + { + "begin": 27529, + "end": 27856, + "name": "POP", + "source": 40 + }, + { + "begin": 27529, + "end": 27856, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27862, + "end": 28191, + "name": "tag", + "source": 40, + "value": "211" + }, + { + "begin": 27862, + "end": 28191, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27921, + "end": 27927, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 27970, + "end": 27972, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 27958, + "end": 27967, + "name": "DUP3", + "source": 40 + }, + { + "begin": 27949, + "end": 27956, + "name": "DUP5", + "source": 40 + }, + { + "begin": 27945, + "end": 27968, + "name": "SUB", + "source": 40 + }, + { + "begin": 27941, + "end": 27973, + "name": "SLT", + "source": 40 + }, + { + "begin": 27938, + "end": 28057, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 27938, + "end": 28057, + "name": "PUSH [tag]", + "source": 40, + "value": "1211" + }, + { + "begin": 27938, + "end": 28057, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 27976, + "end": 28055, + "name": "PUSH [tag]", + "source": 40, + "value": "1212" + }, + { + "begin": 27976, + "end": 28055, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 27976, + "end": 28055, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 27976, + "end": 28055, + "name": "tag", + "source": 40, + "value": "1212" + }, + { + "begin": 27976, + "end": 28055, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 27938, + "end": 28057, + "name": "tag", + "source": 40, + "value": "1211" + }, + { + "begin": 27938, + "end": 28057, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28096, + "end": 28097, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28121, + "end": 28174, + "name": "PUSH [tag]", + "source": 40, + "value": "1213" + }, + { + "begin": 28166, + "end": 28173, + "name": "DUP5", + "source": 40 + }, + { + "begin": 28157, + "end": 28163, + "name": "DUP3", + "source": 40 + }, + { + "begin": 28146, + "end": 28155, + "name": "DUP6", + "source": 40 + }, + { + "begin": 28142, + "end": 28164, + "name": "ADD", + "source": 40 + }, + { + "begin": 28121, + "end": 28174, + "name": "PUSH [tag]", + "source": 40, + "value": "877" + }, + { + "begin": 28121, + "end": 28174, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 28121, + "end": 28174, + "name": "tag", + "source": 40, + "value": "1213" + }, + { + "begin": 28121, + "end": 28174, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28111, + "end": 28174, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 28111, + "end": 28174, + "name": "POP", + "source": 40 + }, + { + "begin": 28067, + "end": 28184, + "name": "POP", + "source": 40 + }, + { + "begin": 27862, + "end": 28191, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 27862, + "end": 28191, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 27862, + "end": 28191, + "name": "POP", + "source": 40 + }, + { + "begin": 27862, + "end": 28191, + "name": "POP", + "source": 40 + }, + { + "begin": 27862, + "end": 28191, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 28197, + "end": 28377, + "name": "tag", + "source": 40, + "value": "232" + }, + { + "begin": 28197, + "end": 28377, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28245, + "end": 28322, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 28242, + "end": 28243, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28235, + "end": 28323, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 28342, + "end": 28346, + "name": "PUSH", + "source": 40, + "value": "41" + }, + { + "begin": 28339, + "end": 28340, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 28332, + "end": 28347, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 28366, + "end": 28370, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 28363, + "end": 28364, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28356, + "end": 28371, + "name": "REVERT", + "source": 40 + }, + { + "begin": 28383, + "end": 28563, + "name": "tag", + "source": 40, + "value": "244" + }, + { + "begin": 28383, + "end": 28563, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28431, + "end": 28508, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 28428, + "end": 28429, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28421, + "end": 28509, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 28528, + "end": 28532, + "name": "PUSH", + "source": 40, + "value": "32" + }, + { + "begin": 28525, + "end": 28526, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 28518, + "end": 28533, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 28552, + "end": 28556, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 28549, + "end": 28550, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28542, + "end": 28557, + "name": "REVERT", + "source": 40 + }, + { + "begin": 28569, + "end": 28749, + "name": "tag", + "source": 40, + "value": "902" + }, + { + "begin": 28569, + "end": 28749, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28617, + "end": 28694, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 28614, + "end": 28615, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28607, + "end": 28695, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 28714, + "end": 28718, + "name": "PUSH", + "source": 40, + "value": "11" + }, + { + "begin": 28711, + "end": 28712, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 28704, + "end": 28719, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 28738, + "end": 28742, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 28735, + "end": 28736, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28728, + "end": 28743, + "name": "REVERT", + "source": 40 + }, + { + "begin": 28755, + "end": 28988, + "name": "tag", + "source": 40, + "value": "246" + }, + { + "begin": 28755, + "end": 28988, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28794, + "end": 28797, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 28817, + "end": 28841, + "name": "PUSH [tag]", + "source": 40, + "value": "1218" + }, + { + "begin": 28835, + "end": 28840, + "name": "DUP3", + "source": 40 + }, + { + "begin": 28817, + "end": 28841, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 28817, + "end": 28841, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 28817, + "end": 28841, + "name": "tag", + "source": 40, + "value": "1218" + }, + { + "begin": 28817, + "end": 28841, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28808, + "end": 28841, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 28808, + "end": 28841, + "name": "POP", + "source": 40 + }, + { + "begin": 28863, + "end": 28929, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 28856, + "end": 28861, + "name": "DUP3", + "source": 40 + }, + { + "begin": 28853, + "end": 28930, + "name": "SUB", + "source": 40 + }, + { + "begin": 28850, + "end": 28953, + "name": "PUSH [tag]", + "source": 40, + "value": "1219" + }, + { + "begin": 28850, + "end": 28953, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 28933, + "end": 28951, + "name": "PUSH [tag]", + "source": 40, + "value": "1220" + }, + { + "begin": 28933, + "end": 28951, + "name": "PUSH [tag]", + "source": 40, + "value": "902" + }, + { + "begin": 28933, + "end": 28951, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 28933, + "end": 28951, + "name": "tag", + "source": 40, + "value": "1220" + }, + { + "begin": 28933, + "end": 28951, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28850, + "end": 28953, + "name": "tag", + "source": 40, + "value": "1219" + }, + { + "begin": 28850, + "end": 28953, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 28980, + "end": 28981, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 28973, + "end": 28978, + "name": "DUP3", + "source": 40 + }, + { + "begin": 28969, + "end": 28982, + "name": "ADD", + "source": 40 + }, + { + "begin": 28962, + "end": 28982, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 28962, + "end": 28982, + "name": "POP", + "source": 40 + }, + { + "begin": 28755, + "end": 28988, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 28755, + "end": 28988, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 28755, + "end": 28988, + "name": "POP", + "source": 40 + }, + { + "begin": 28755, + "end": 28988, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 28994, + "end": 29134, + "name": "tag", + "source": 40, + "value": "903" + }, + { + "begin": 28994, + "end": 29134, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29043, + "end": 29052, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 29076, + "end": 29128, + "name": "PUSH [tag]", + "source": 40, + "value": "1222" + }, + { + "begin": 29094, + "end": 29127, + "name": "PUSH [tag]", + "source": 40, + "value": "1223" + }, + { + "begin": 29103, + "end": 29126, + "name": "PUSH [tag]", + "source": 40, + "value": "1224" + }, + { + "begin": 29120, + "end": 29125, + "name": "DUP5", + "source": 40 + }, + { + "begin": 29103, + "end": 29126, + "name": "PUSH [tag]", + "source": 40, + "value": "866" + }, + { + "begin": 29103, + "end": 29126, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29103, + "end": 29126, + "name": "tag", + "source": 40, + "value": "1224" + }, + { + "begin": 29103, + "end": 29126, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29094, + "end": 29127, + "name": "PUSH [tag]", + "source": 40, + "value": "857" + }, + { + "begin": 29094, + "end": 29127, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29094, + "end": 29127, + "name": "tag", + "source": 40, + "value": "1223" + }, + { + "begin": 29094, + "end": 29127, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29076, + "end": 29128, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 29076, + "end": 29128, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29076, + "end": 29128, + "name": "tag", + "source": 40, + "value": "1222" + }, + { + "begin": 29076, + "end": 29128, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29063, + "end": 29128, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 29063, + "end": 29128, + "name": "POP", + "source": 40 + }, + { + "begin": 28994, + "end": 29134, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 28994, + "end": 29134, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 28994, + "end": 29134, + "name": "POP", + "source": 40 + }, + { + "begin": 28994, + "end": 29134, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29140, + "end": 29269, + "name": "tag", + "source": 40, + "value": "904" + }, + { + "begin": 29140, + "end": 29269, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29226, + "end": 29262, + "name": "PUSH [tag]", + "source": 40, + "value": "1226" + }, + { + "begin": 29256, + "end": 29261, + "name": "DUP2", + "source": 40 + }, + { + "begin": 29226, + "end": 29262, + "name": "PUSH [tag]", + "source": 40, + "value": "903" + }, + { + "begin": 29226, + "end": 29262, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29226, + "end": 29262, + "name": "tag", + "source": 40, + "value": "1226" + }, + { + "begin": 29226, + "end": 29262, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29221, + "end": 29224, + "name": "DUP3", + "source": 40 + }, + { + "begin": 29214, + "end": 29263, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 29140, + "end": 29269, + "name": "POP", + "source": 40 + }, + { + "begin": 29140, + "end": 29269, + "name": "POP", + "source": 40 + }, + { + "begin": 29140, + "end": 29269, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "name": "tag", + "source": 40, + "value": "260" + }, + { + "begin": 29275, + "end": 29775, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29453, + "end": 29457, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 29491, + "end": 29493, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 29480, + "end": 29489, + "name": "DUP3", + "source": 40 + }, + { + "begin": 29476, + "end": 29494, + "name": "ADD", + "source": 40 + }, + { + "begin": 29468, + "end": 29494, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 29468, + "end": 29494, + "name": "POP", + "source": 40 + }, + { + "begin": 29504, + "end": 29590, + "name": "PUSH [tag]", + "source": 40, + "value": "1228" + }, + { + "begin": 29587, + "end": 29588, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 29576, + "end": 29585, + "name": "DUP4", + "source": 40 + }, + { + "begin": 29572, + "end": 29589, + "name": "ADD", + "source": 40 + }, + { + "begin": 29563, + "end": 29569, + "name": "DUP7", + "source": 40 + }, + { + "begin": 29504, + "end": 29590, + "name": "PUSH [tag]", + "source": 40, + "value": "861" + }, + { + "begin": 29504, + "end": 29590, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29504, + "end": 29590, + "name": "tag", + "source": 40, + "value": "1228" + }, + { + "begin": 29504, + "end": 29590, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29600, + "end": 29687, + "name": "PUSH [tag]", + "source": 40, + "value": "1229" + }, + { + "begin": 29683, + "end": 29685, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 29672, + "end": 29681, + "name": "DUP4", + "source": 40 + }, + { + "begin": 29668, + "end": 29686, + "name": "ADD", + "source": 40 + }, + { + "begin": 29659, + "end": 29665, + "name": "DUP6", + "source": 40 + }, + { + "begin": 29600, + "end": 29687, + "name": "PUSH [tag]", + "source": 40, + "value": "861" + }, + { + "begin": 29600, + "end": 29687, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29600, + "end": 29687, + "name": "tag", + "source": 40, + "value": "1229" + }, + { + "begin": 29600, + "end": 29687, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29697, + "end": 29768, + "name": "PUSH [tag]", + "source": 40, + "value": "1230" + }, + { + "begin": 29764, + "end": 29766, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 29753, + "end": 29762, + "name": "DUP4", + "source": 40 + }, + { + "begin": 29749, + "end": 29767, + "name": "ADD", + "source": 40 + }, + { + "begin": 29740, + "end": 29746, + "name": "DUP5", + "source": 40 + }, + { + "begin": 29697, + "end": 29768, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 29697, + "end": 29768, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29697, + "end": 29768, + "name": "tag", + "source": 40, + "value": "1230" + }, + { + "begin": 29697, + "end": 29768, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "name": "POP", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "name": "POP", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "name": "POP", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "name": "POP", + "source": 40 + }, + { + "begin": 29275, + "end": 29775, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29781, + "end": 29896, + "name": "tag", + "source": 40, + "value": "905" + }, + { + "begin": 29781, + "end": 29896, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29866, + "end": 29889, + "name": "PUSH [tag]", + "source": 40, + "value": "1232" + }, + { + "begin": 29883, + "end": 29888, + "name": "DUP2", + "source": 40 + }, + { + "begin": 29866, + "end": 29889, + "name": "PUSH [tag]", + "source": 40, + "value": "866" + }, + { + "begin": 29866, + "end": 29889, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29866, + "end": 29889, + "name": "tag", + "source": 40, + "value": "1232" + }, + { + "begin": 29866, + "end": 29889, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29861, + "end": 29864, + "name": "DUP3", + "source": 40 + }, + { + "begin": 29854, + "end": 29890, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 29781, + "end": 29896, + "name": "POP", + "source": 40 + }, + { + "begin": 29781, + "end": 29896, + "name": "POP", + "source": 40 + }, + { + "begin": 29781, + "end": 29896, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29902, + "end": 30017, + "name": "tag", + "source": 40, + "value": "906" + }, + { + "begin": 29902, + "end": 30017, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29987, + "end": 30010, + "name": "PUSH [tag]", + "source": 40, + "value": "1234" + }, + { + "begin": 30004, + "end": 30009, + "name": "DUP2", + "source": 40 + }, + { + "begin": 29987, + "end": 30010, + "name": "PUSH [tag]", + "source": 40, + "value": "869" + }, + { + "begin": 29987, + "end": 30010, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 29987, + "end": 30010, + "name": "tag", + "source": 40, + "value": "1234" + }, + { + "begin": 29987, + "end": 30010, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 29982, + "end": 29985, + "name": "DUP3", + "source": 40 + }, + { + "begin": 29975, + "end": 30011, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 29902, + "end": 30017, + "name": "POP", + "source": 40 + }, + { + "begin": 29902, + "end": 30017, + "name": "POP", + "source": 40 + }, + { + "begin": 29902, + "end": 30017, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "tag", + "source": 40, + "value": "262" + }, + { + "begin": 30023, + "end": 30881, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30270, + "end": 30274, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 30308, + "end": 30311, + "name": "PUSH", + "source": 40, + "value": "E0" + }, + { + "begin": 30297, + "end": 30306, + "name": "DUP3", + "source": 40 + }, + { + "begin": 30293, + "end": 30312, + "name": "ADD", + "source": 40 + }, + { + "begin": 30285, + "end": 30312, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 30285, + "end": 30312, + "name": "POP", + "source": 40 + }, + { + "begin": 30322, + "end": 30391, + "name": "PUSH [tag]", + "source": 40, + "value": "1236" + }, + { + "begin": 30388, + "end": 30389, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 30377, + "end": 30386, + "name": "DUP4", + "source": 40 + }, + { + "begin": 30373, + "end": 30390, + "name": "ADD", + "source": 40 + }, + { + "begin": 30364, + "end": 30370, + "name": "DUP11", + "source": 40 + }, + { + "begin": 30322, + "end": 30391, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 30322, + "end": 30391, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30322, + "end": 30391, + "name": "tag", + "source": 40, + "value": "1236" + }, + { + "begin": 30322, + "end": 30391, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30401, + "end": 30471, + "name": "PUSH [tag]", + "source": 40, + "value": "1237" + }, + { + "begin": 30467, + "end": 30469, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 30456, + "end": 30465, + "name": "DUP4", + "source": 40 + }, + { + "begin": 30452, + "end": 30470, + "name": "ADD", + "source": 40 + }, + { + "begin": 30443, + "end": 30449, + "name": "DUP10", + "source": 40 + }, + { + "begin": 30401, + "end": 30471, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 30401, + "end": 30471, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30401, + "end": 30471, + "name": "tag", + "source": 40, + "value": "1237" + }, + { + "begin": 30401, + "end": 30471, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30481, + "end": 30551, + "name": "PUSH [tag]", + "source": 40, + "value": "1238" + }, + { + "begin": 30547, + "end": 30549, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 30536, + "end": 30545, + "name": "DUP4", + "source": 40 + }, + { + "begin": 30532, + "end": 30550, + "name": "ADD", + "source": 40 + }, + { + "begin": 30523, + "end": 30529, + "name": "DUP9", + "source": 40 + }, + { + "begin": 30481, + "end": 30551, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 30481, + "end": 30551, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30481, + "end": 30551, + "name": "tag", + "source": 40, + "value": "1238" + }, + { + "begin": 30481, + "end": 30551, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30561, + "end": 30631, + "name": "PUSH [tag]", + "source": 40, + "value": "1239" + }, + { + "begin": 30627, + "end": 30629, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 30616, + "end": 30625, + "name": "DUP4", + "source": 40 + }, + { + "begin": 30612, + "end": 30630, + "name": "ADD", + "source": 40 + }, + { + "begin": 30603, + "end": 30609, + "name": "DUP8", + "source": 40 + }, + { + "begin": 30561, + "end": 30631, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 30561, + "end": 30631, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30561, + "end": 30631, + "name": "tag", + "source": 40, + "value": "1239" + }, + { + "begin": 30561, + "end": 30631, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30641, + "end": 30712, + "name": "PUSH [tag]", + "source": 40, + "value": "1240" + }, + { + "begin": 30707, + "end": 30710, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 30696, + "end": 30705, + "name": "DUP4", + "source": 40 + }, + { + "begin": 30692, + "end": 30711, + "name": "ADD", + "source": 40 + }, + { + "begin": 30683, + "end": 30689, + "name": "DUP7", + "source": 40 + }, + { + "begin": 30641, + "end": 30712, + "name": "PUSH [tag]", + "source": 40, + "value": "906" + }, + { + "begin": 30641, + "end": 30712, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30641, + "end": 30712, + "name": "tag", + "source": 40, + "value": "1240" + }, + { + "begin": 30641, + "end": 30712, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30722, + "end": 30793, + "name": "PUSH [tag]", + "source": 40, + "value": "1241" + }, + { + "begin": 30788, + "end": 30791, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 30777, + "end": 30786, + "name": "DUP4", + "source": 40 + }, + { + "begin": 30773, + "end": 30792, + "name": "ADD", + "source": 40 + }, + { + "begin": 30764, + "end": 30770, + "name": "DUP6", + "source": 40 + }, + { + "begin": 30722, + "end": 30793, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 30722, + "end": 30793, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30722, + "end": 30793, + "name": "tag", + "source": 40, + "value": "1241" + }, + { + "begin": 30722, + "end": 30793, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30803, + "end": 30874, + "name": "PUSH [tag]", + "source": 40, + "value": "1242" + }, + { + "begin": 30869, + "end": 30872, + "name": "PUSH", + "source": 40, + "value": "C0" + }, + { + "begin": 30858, + "end": 30867, + "name": "DUP4", + "source": 40 + }, + { + "begin": 30854, + "end": 30873, + "name": "ADD", + "source": 40 + }, + { + "begin": 30845, + "end": 30851, + "name": "DUP5", + "source": 40 + }, + { + "begin": 30803, + "end": 30874, + "name": "PUSH [tag]", + "source": 40, + "value": "906" + }, + { + "begin": 30803, + "end": 30874, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30803, + "end": 30874, + "name": "tag", + "source": 40, + "value": "1242" + }, + { + "begin": 30803, + "end": 30874, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "SWAP8", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "name": "POP", + "source": 40 + }, + { + "begin": 30023, + "end": 30881, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 30887, + "end": 31107, + "name": "tag", + "source": 40, + "value": "298" + }, + { + "begin": 30887, + "end": 31107, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30979, + "end": 30983, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 31017, + "end": 31019, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 31006, + "end": 31015, + "name": "DUP3", + "source": 40 + }, + { + "begin": 31002, + "end": 31020, + "name": "ADD", + "source": 40 + }, + { + "begin": 30994, + "end": 31020, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 30994, + "end": 31020, + "name": "POP", + "source": 40 + }, + { + "begin": 31030, + "end": 31100, + "name": "PUSH [tag]", + "source": 40, + "value": "1244" + }, + { + "begin": 31097, + "end": 31098, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 31086, + "end": 31095, + "name": "DUP4", + "source": 40 + }, + { + "begin": 31082, + "end": 31099, + "name": "ADD", + "source": 40 + }, + { + "begin": 31073, + "end": 31079, + "name": "DUP5", + "source": 40 + }, + { + "begin": 31030, + "end": 31100, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 31030, + "end": 31100, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31030, + "end": 31100, + "name": "tag", + "source": 40, + "value": "1244" + }, + { + "begin": 31030, + "end": 31100, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 30887, + "end": 31107, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 30887, + "end": 31107, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 30887, + "end": 31107, + "name": "POP", + "source": 40 + }, + { + "begin": 30887, + "end": 31107, + "name": "POP", + "source": 40 + }, + { + "begin": 30887, + "end": 31107, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31113, + "end": 31253, + "name": "tag", + "source": 40, + "value": "907" + }, + { + "begin": 31113, + "end": 31253, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31162, + "end": 31171, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 31195, + "end": 31247, + "name": "PUSH [tag]", + "source": 40, + "value": "1246" + }, + { + "begin": 31213, + "end": 31246, + "name": "PUSH [tag]", + "source": 40, + "value": "1247" + }, + { + "begin": 31222, + "end": 31245, + "name": "PUSH [tag]", + "source": 40, + "value": "1248" + }, + { + "begin": 31239, + "end": 31244, + "name": "DUP5", + "source": 40 + }, + { + "begin": 31222, + "end": 31245, + "name": "PUSH [tag]", + "source": 40, + "value": "869" + }, + { + "begin": 31222, + "end": 31245, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31222, + "end": 31245, + "name": "tag", + "source": 40, + "value": "1248" + }, + { + "begin": 31222, + "end": 31245, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31213, + "end": 31246, + "name": "PUSH [tag]", + "source": 40, + "value": "857" + }, + { + "begin": 31213, + "end": 31246, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31213, + "end": 31246, + "name": "tag", + "source": 40, + "value": "1247" + }, + { + "begin": 31213, + "end": 31246, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31195, + "end": 31247, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 31195, + "end": 31247, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31195, + "end": 31247, + "name": "tag", + "source": 40, + "value": "1246" + }, + { + "begin": 31195, + "end": 31247, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31182, + "end": 31247, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 31182, + "end": 31247, + "name": "POP", + "source": 40 + }, + { + "begin": 31113, + "end": 31253, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 31113, + "end": 31253, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 31113, + "end": 31253, + "name": "POP", + "source": 40 + }, + { + "begin": 31113, + "end": 31253, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31259, + "end": 31388, + "name": "tag", + "source": 40, + "value": "908" + }, + { + "begin": 31259, + "end": 31388, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31345, + "end": 31381, + "name": "PUSH [tag]", + "source": 40, + "value": "1250" + }, + { + "begin": 31375, + "end": 31380, + "name": "DUP2", + "source": 40 + }, + { + "begin": 31345, + "end": 31381, + "name": "PUSH [tag]", + "source": 40, + "value": "907" + }, + { + "begin": 31345, + "end": 31381, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31345, + "end": 31381, + "name": "tag", + "source": 40, + "value": "1250" + }, + { + "begin": 31345, + "end": 31381, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31340, + "end": 31343, + "name": "DUP3", + "source": 40 + }, + { + "begin": 31333, + "end": 31382, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 31259, + "end": 31388, + "name": "POP", + "source": 40 + }, + { + "begin": 31259, + "end": 31388, + "name": "POP", + "source": 40 + }, + { + "begin": 31259, + "end": 31388, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "tag", + "source": 40, + "value": "307" + }, + { + "begin": 31394, + "end": 32266, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31648, + "end": 31652, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 31686, + "end": 31689, + "name": "PUSH", + "source": 40, + "value": "E0" + }, + { + "begin": 31675, + "end": 31684, + "name": "DUP3", + "source": 40 + }, + { + "begin": 31671, + "end": 31690, + "name": "ADD", + "source": 40 + }, + { + "begin": 31663, + "end": 31690, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 31663, + "end": 31690, + "name": "POP", + "source": 40 + }, + { + "begin": 31700, + "end": 31770, + "name": "PUSH [tag]", + "source": 40, + "value": "1252" + }, + { + "begin": 31767, + "end": 31768, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 31756, + "end": 31765, + "name": "DUP4", + "source": 40 + }, + { + "begin": 31752, + "end": 31769, + "name": "ADD", + "source": 40 + }, + { + "begin": 31743, + "end": 31749, + "name": "DUP11", + "source": 40 + }, + { + "begin": 31700, + "end": 31770, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 31700, + "end": 31770, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31700, + "end": 31770, + "name": "tag", + "source": 40, + "value": "1252" + }, + { + "begin": 31700, + "end": 31770, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31780, + "end": 31851, + "name": "PUSH [tag]", + "source": 40, + "value": "1253" + }, + { + "begin": 31847, + "end": 31849, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 31836, + "end": 31845, + "name": "DUP4", + "source": 40 + }, + { + "begin": 31832, + "end": 31850, + "name": "ADD", + "source": 40 + }, + { + "begin": 31823, + "end": 31829, + "name": "DUP10", + "source": 40 + }, + { + "begin": 31780, + "end": 31851, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 31780, + "end": 31851, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31780, + "end": 31851, + "name": "tag", + "source": 40, + "value": "1253" + }, + { + "begin": 31780, + "end": 31851, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31861, + "end": 31932, + "name": "PUSH [tag]", + "source": 40, + "value": "1254" + }, + { + "begin": 31928, + "end": 31930, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 31917, + "end": 31926, + "name": "DUP4", + "source": 40 + }, + { + "begin": 31913, + "end": 31931, + "name": "ADD", + "source": 40 + }, + { + "begin": 31904, + "end": 31910, + "name": "DUP9", + "source": 40 + }, + { + "begin": 31861, + "end": 31932, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 31861, + "end": 31932, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31861, + "end": 31932, + "name": "tag", + "source": 40, + "value": "1254" + }, + { + "begin": 31861, + "end": 31932, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31942, + "end": 32013, + "name": "PUSH [tag]", + "source": 40, + "value": "1255" + }, + { + "begin": 32009, + "end": 32011, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 31998, + "end": 32007, + "name": "DUP4", + "source": 40 + }, + { + "begin": 31994, + "end": 32012, + "name": "ADD", + "source": 40 + }, + { + "begin": 31985, + "end": 31991, + "name": "DUP8", + "source": 40 + }, + { + "begin": 31942, + "end": 32013, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 31942, + "end": 32013, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 31942, + "end": 32013, + "name": "tag", + "source": 40, + "value": "1255" + }, + { + "begin": 31942, + "end": 32013, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32023, + "end": 32095, + "name": "PUSH [tag]", + "source": 40, + "value": "1256" + }, + { + "begin": 32090, + "end": 32093, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 32079, + "end": 32088, + "name": "DUP4", + "source": 40 + }, + { + "begin": 32075, + "end": 32094, + "name": "ADD", + "source": 40 + }, + { + "begin": 32066, + "end": 32072, + "name": "DUP7", + "source": 40 + }, + { + "begin": 32023, + "end": 32095, + "name": "PUSH [tag]", + "source": 40, + "value": "908" + }, + { + "begin": 32023, + "end": 32095, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32023, + "end": 32095, + "name": "tag", + "source": 40, + "value": "1256" + }, + { + "begin": 32023, + "end": 32095, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32105, + "end": 32177, + "name": "PUSH [tag]", + "source": 40, + "value": "1257" + }, + { + "begin": 32172, + "end": 32175, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 32161, + "end": 32170, + "name": "DUP4", + "source": 40 + }, + { + "begin": 32157, + "end": 32176, + "name": "ADD", + "source": 40 + }, + { + "begin": 32148, + "end": 32154, + "name": "DUP6", + "source": 40 + }, + { + "begin": 32105, + "end": 32177, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 32105, + "end": 32177, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32105, + "end": 32177, + "name": "tag", + "source": 40, + "value": "1257" + }, + { + "begin": 32105, + "end": 32177, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32187, + "end": 32259, + "name": "PUSH [tag]", + "source": 40, + "value": "1258" + }, + { + "begin": 32254, + "end": 32257, + "name": "PUSH", + "source": 40, + "value": "C0" + }, + { + "begin": 32243, + "end": 32252, + "name": "DUP4", + "source": 40 + }, + { + "begin": 32239, + "end": 32258, + "name": "ADD", + "source": 40 + }, + { + "begin": 32230, + "end": 32236, + "name": "DUP5", + "source": 40 + }, + { + "begin": 32187, + "end": 32259, + "name": "PUSH [tag]", + "source": 40, + "value": "908" + }, + { + "begin": 32187, + "end": 32259, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32187, + "end": 32259, + "name": "tag", + "source": 40, + "value": "1258" + }, + { + "begin": 32187, + "end": 32259, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "SWAP8", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "name": "POP", + "source": 40 + }, + { + "begin": 31394, + "end": 32266, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32272, + "end": 32602, + "name": "tag", + "source": 40, + "value": "360" + }, + { + "begin": 32272, + "end": 32602, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32392, + "end": 32396, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 32430, + "end": 32432, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 32419, + "end": 32428, + "name": "DUP3", + "source": 40 + }, + { + "begin": 32415, + "end": 32433, + "name": "ADD", + "source": 40 + }, + { + "begin": 32407, + "end": 32433, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 32407, + "end": 32433, + "name": "POP", + "source": 40 + }, + { + "begin": 32443, + "end": 32514, + "name": "PUSH [tag]", + "source": 40, + "value": "1260" + }, + { + "begin": 32511, + "end": 32512, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 32500, + "end": 32509, + "name": "DUP4", + "source": 40 + }, + { + "begin": 32496, + "end": 32513, + "name": "ADD", + "source": 40 + }, + { + "begin": 32487, + "end": 32493, + "name": "DUP6", + "source": 40 + }, + { + "begin": 32443, + "end": 32514, + "name": "PUSH [tag]", + "source": 40, + "value": "887" + }, + { + "begin": 32443, + "end": 32514, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32443, + "end": 32514, + "name": "tag", + "source": 40, + "value": "1260" + }, + { + "begin": 32443, + "end": 32514, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32524, + "end": 32595, + "name": "PUSH [tag]", + "source": 40, + "value": "1261" + }, + { + "begin": 32591, + "end": 32593, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 32580, + "end": 32589, + "name": "DUP4", + "source": 40 + }, + { + "begin": 32576, + "end": 32594, + "name": "ADD", + "source": 40 + }, + { + "begin": 32567, + "end": 32573, + "name": "DUP5", + "source": 40 + }, + { + "begin": 32524, + "end": 32595, + "name": "PUSH [tag]", + "source": 40, + "value": "904" + }, + { + "begin": 32524, + "end": 32595, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32524, + "end": 32595, + "name": "tag", + "source": 40, + "value": "1261" + }, + { + "begin": 32524, + "end": 32595, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32272, + "end": 32602, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 32272, + "end": 32602, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 32272, + "end": 32602, + "name": "POP", + "source": 40 + }, + { + "begin": 32272, + "end": 32602, + "name": "POP", + "source": 40 + }, + { + "begin": 32272, + "end": 32602, + "name": "POP", + "source": 40 + }, + { + "begin": 32272, + "end": 32602, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "tag", + "source": 40, + "value": "388" + }, + { + "begin": 32608, + "end": 33573, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32881, + "end": 32885, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 32919, + "end": 32922, + "name": "PUSH", + "source": 40, + "value": "100" + }, + { + "begin": 32908, + "end": 32917, + "name": "DUP3", + "source": 40 + }, + { + "begin": 32904, + "end": 32923, + "name": "ADD", + "source": 40 + }, + { + "begin": 32896, + "end": 32923, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 32896, + "end": 32923, + "name": "POP", + "source": 40 + }, + { + "begin": 32933, + "end": 33002, + "name": "PUSH [tag]", + "source": 40, + "value": "1263" + }, + { + "begin": 32999, + "end": 33000, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 32988, + "end": 32997, + "name": "DUP4", + "source": 40 + }, + { + "begin": 32984, + "end": 33001, + "name": "ADD", + "source": 40 + }, + { + "begin": 32975, + "end": 32981, + "name": "DUP12", + "source": 40 + }, + { + "begin": 32933, + "end": 33002, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 32933, + "end": 33002, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 32933, + "end": 33002, + "name": "tag", + "source": 40, + "value": "1263" + }, + { + "begin": 32933, + "end": 33002, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33012, + "end": 33082, + "name": "PUSH [tag]", + "source": 40, + "value": "1264" + }, + { + "begin": 33078, + "end": 33080, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 33067, + "end": 33076, + "name": "DUP4", + "source": 40 + }, + { + "begin": 33063, + "end": 33081, + "name": "ADD", + "source": 40 + }, + { + "begin": 33054, + "end": 33060, + "name": "DUP11", + "source": 40 + }, + { + "begin": 33012, + "end": 33082, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 33012, + "end": 33082, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33012, + "end": 33082, + "name": "tag", + "source": 40, + "value": "1264" + }, + { + "begin": 33012, + "end": 33082, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33092, + "end": 33162, + "name": "PUSH [tag]", + "source": 40, + "value": "1265" + }, + { + "begin": 33158, + "end": 33160, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 33147, + "end": 33156, + "name": "DUP4", + "source": 40 + }, + { + "begin": 33143, + "end": 33161, + "name": "ADD", + "source": 40 + }, + { + "begin": 33134, + "end": 33140, + "name": "DUP10", + "source": 40 + }, + { + "begin": 33092, + "end": 33162, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 33092, + "end": 33162, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33092, + "end": 33162, + "name": "tag", + "source": 40, + "value": "1265" + }, + { + "begin": 33092, + "end": 33162, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33172, + "end": 33242, + "name": "PUSH [tag]", + "source": 40, + "value": "1266" + }, + { + "begin": 33238, + "end": 33240, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 33227, + "end": 33236, + "name": "DUP4", + "source": 40 + }, + { + "begin": 33223, + "end": 33241, + "name": "ADD", + "source": 40 + }, + { + "begin": 33214, + "end": 33220, + "name": "DUP9", + "source": 40 + }, + { + "begin": 33172, + "end": 33242, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 33172, + "end": 33242, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33172, + "end": 33242, + "name": "tag", + "source": 40, + "value": "1266" + }, + { + "begin": 33172, + "end": 33242, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33252, + "end": 33323, + "name": "PUSH [tag]", + "source": 40, + "value": "1267" + }, + { + "begin": 33318, + "end": 33321, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 33307, + "end": 33316, + "name": "DUP4", + "source": 40 + }, + { + "begin": 33303, + "end": 33322, + "name": "ADD", + "source": 40 + }, + { + "begin": 33294, + "end": 33300, + "name": "DUP8", + "source": 40 + }, + { + "begin": 33252, + "end": 33323, + "name": "PUSH [tag]", + "source": 40, + "value": "906" + }, + { + "begin": 33252, + "end": 33323, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33252, + "end": 33323, + "name": "tag", + "source": 40, + "value": "1267" + }, + { + "begin": 33252, + "end": 33323, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33333, + "end": 33404, + "name": "PUSH [tag]", + "source": 40, + "value": "1268" + }, + { + "begin": 33399, + "end": 33402, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 33388, + "end": 33397, + "name": "DUP4", + "source": 40 + }, + { + "begin": 33384, + "end": 33403, + "name": "ADD", + "source": 40 + }, + { + "begin": 33375, + "end": 33381, + "name": "DUP7", + "source": 40 + }, + { + "begin": 33333, + "end": 33404, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 33333, + "end": 33404, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33333, + "end": 33404, + "name": "tag", + "source": 40, + "value": "1268" + }, + { + "begin": 33333, + "end": 33404, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33414, + "end": 33485, + "name": "PUSH [tag]", + "source": 40, + "value": "1269" + }, + { + "begin": 33480, + "end": 33483, + "name": "PUSH", + "source": 40, + "value": "C0" + }, + { + "begin": 33469, + "end": 33478, + "name": "DUP4", + "source": 40 + }, + { + "begin": 33465, + "end": 33484, + "name": "ADD", + "source": 40 + }, + { + "begin": 33456, + "end": 33462, + "name": "DUP6", + "source": 40 + }, + { + "begin": 33414, + "end": 33485, + "name": "PUSH [tag]", + "source": 40, + "value": "906" + }, + { + "begin": 33414, + "end": 33485, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33414, + "end": 33485, + "name": "tag", + "source": 40, + "value": "1269" + }, + { + "begin": 33414, + "end": 33485, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33495, + "end": 33566, + "name": "PUSH [tag]", + "source": 40, + "value": "1270" + }, + { + "begin": 33561, + "end": 33564, + "name": "PUSH", + "source": 40, + "value": "E0" + }, + { + "begin": 33550, + "end": 33559, + "name": "DUP4", + "source": 40 + }, + { + "begin": 33546, + "end": 33565, + "name": "ADD", + "source": 40 + }, + { + "begin": 33537, + "end": 33543, + "name": "DUP5", + "source": 40 + }, + { + "begin": 33495, + "end": 33566, + "name": "PUSH [tag]", + "source": 40, + "value": "906" + }, + { + "begin": 33495, + "end": 33566, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33495, + "end": 33566, + "name": "tag", + "source": 40, + "value": "1270" + }, + { + "begin": 33495, + "end": 33566, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "SWAP10", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "SWAP9", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "name": "POP", + "source": 40 + }, + { + "begin": 32608, + "end": 33573, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33579, + "end": 33673, + "name": "tag", + "source": 40, + "value": "909" + }, + { + "begin": 33579, + "end": 33673, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33612, + "end": 33620, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 33660, + "end": 33665, + "name": "DUP2", + "source": 40 + }, + { + "begin": 33656, + "end": 33658, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 33652, + "end": 33666, + "name": "SHL", + "source": 40 + }, + { + "begin": 33631, + "end": 33666, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 33631, + "end": 33666, + "name": "POP", + "source": 40 + }, + { + "begin": 33579, + "end": 33673, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 33579, + "end": 33673, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 33579, + "end": 33673, + "name": "POP", + "source": 40 + }, + { + "begin": 33579, + "end": 33673, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33679, + "end": 33773, + "name": "tag", + "source": 40, + "value": "910" + }, + { + "begin": 33679, + "end": 33773, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33718, + "end": 33725, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 33747, + "end": 33767, + "name": "PUSH [tag]", + "source": 40, + "value": "1273" + }, + { + "begin": 33761, + "end": 33766, + "name": "DUP3", + "source": 40 + }, + { + "begin": 33747, + "end": 33767, + "name": "PUSH [tag]", + "source": 40, + "value": "909" + }, + { + "begin": 33747, + "end": 33767, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33747, + "end": 33767, + "name": "tag", + "source": 40, + "value": "1273" + }, + { + "begin": 33747, + "end": 33767, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33736, + "end": 33767, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 33736, + "end": 33767, + "name": "POP", + "source": 40 + }, + { + "begin": 33679, + "end": 33773, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 33679, + "end": 33773, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 33679, + "end": 33773, + "name": "POP", + "source": 40 + }, + { + "begin": 33679, + "end": 33773, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33779, + "end": 33879, + "name": "tag", + "source": 40, + "value": "911" + }, + { + "begin": 33779, + "end": 33879, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33818, + "end": 33825, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 33847, + "end": 33873, + "name": "PUSH [tag]", + "source": 40, + "value": "1275" + }, + { + "begin": 33867, + "end": 33872, + "name": "DUP3", + "source": 40 + }, + { + "begin": 33847, + "end": 33873, + "name": "PUSH [tag]", + "source": 40, + "value": "910" + }, + { + "begin": 33847, + "end": 33873, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33847, + "end": 33873, + "name": "tag", + "source": 40, + "value": "1275" + }, + { + "begin": 33847, + "end": 33873, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 33836, + "end": 33873, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 33836, + "end": 33873, + "name": "POP", + "source": 40 + }, + { + "begin": 33779, + "end": 33879, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 33779, + "end": 33879, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 33779, + "end": 33879, + "name": "POP", + "source": 40 + }, + { + "begin": 33779, + "end": 33879, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 33885, + "end": 34085, + "name": "tag", + "source": 40, + "value": "912" + }, + { + "begin": 33885, + "end": 34085, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34005, + "end": 34078, + "name": "PUSH [tag]", + "source": 40, + "value": "1277" + }, + { + "begin": 34025, + "end": 34077, + "name": "PUSH [tag]", + "source": 40, + "value": "1278" + }, + { + "begin": 34071, + "end": 34076, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34025, + "end": 34077, + "name": "PUSH [tag]", + "source": 40, + "value": "860" + }, + { + "begin": 34025, + "end": 34077, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34025, + "end": 34077, + "name": "tag", + "source": 40, + "value": "1278" + }, + { + "begin": 34025, + "end": 34077, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34005, + "end": 34078, + "name": "PUSH [tag]", + "source": 40, + "value": "911" + }, + { + "begin": 34005, + "end": 34078, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34005, + "end": 34078, + "name": "tag", + "source": 40, + "value": "1277" + }, + { + "begin": 34005, + "end": 34078, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34000, + "end": 34003, + "name": "DUP3", + "source": 40 + }, + { + "begin": 33993, + "end": 34079, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 33885, + "end": 34085, + "name": "POP", + "source": 40 + }, + { + "begin": 33885, + "end": 34085, + "name": "POP", + "source": 40 + }, + { + "begin": 33885, + "end": 34085, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34091, + "end": 34187, + "name": "tag", + "source": 40, + "value": "913" + }, + { + "begin": 34091, + "end": 34187, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34125, + "end": 34133, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 34174, + "end": 34179, + "name": "DUP2", + "source": 40 + }, + { + "begin": 34169, + "end": 34172, + "name": "PUSH", + "source": 40, + "value": "F0" + }, + { + "begin": 34165, + "end": 34180, + "name": "SHL", + "source": 40 + }, + { + "begin": 34144, + "end": 34180, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 34144, + "end": 34180, + "name": "POP", + "source": 40 + }, + { + "begin": 34091, + "end": 34187, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 34091, + "end": 34187, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 34091, + "end": 34187, + "name": "POP", + "source": 40 + }, + { + "begin": 34091, + "end": 34187, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34193, + "end": 34287, + "name": "tag", + "source": 40, + "value": "914" + }, + { + "begin": 34193, + "end": 34287, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34231, + "end": 34238, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 34260, + "end": 34281, + "name": "PUSH [tag]", + "source": 40, + "value": "1281" + }, + { + "begin": 34275, + "end": 34280, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34260, + "end": 34281, + "name": "PUSH [tag]", + "source": 40, + "value": "913" + }, + { + "begin": 34260, + "end": 34281, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34260, + "end": 34281, + "name": "tag", + "source": 40, + "value": "1281" + }, + { + "begin": 34260, + "end": 34281, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34249, + "end": 34281, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 34249, + "end": 34281, + "name": "POP", + "source": 40 + }, + { + "begin": 34193, + "end": 34287, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 34193, + "end": 34287, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 34193, + "end": 34287, + "name": "POP", + "source": 40 + }, + { + "begin": 34193, + "end": 34287, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34293, + "end": 34446, + "name": "tag", + "source": 40, + "value": "915" + }, + { + "begin": 34293, + "end": 34446, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34396, + "end": 34439, + "name": "PUSH [tag]", + "source": 40, + "value": "1283" + }, + { + "begin": 34415, + "end": 34438, + "name": "PUSH [tag]", + "source": 40, + "value": "1284" + }, + { + "begin": 34432, + "end": 34437, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34415, + "end": 34438, + "name": "PUSH [tag]", + "source": 40, + "value": "866" + }, + { + "begin": 34415, + "end": 34438, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34415, + "end": 34438, + "name": "tag", + "source": 40, + "value": "1284" + }, + { + "begin": 34415, + "end": 34438, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34396, + "end": 34439, + "name": "PUSH [tag]", + "source": 40, + "value": "914" + }, + { + "begin": 34396, + "end": 34439, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34396, + "end": 34439, + "name": "tag", + "source": 40, + "value": "1283" + }, + { + "begin": 34396, + "end": 34439, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34391, + "end": 34394, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34384, + "end": 34440, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 34293, + "end": 34446, + "name": "POP", + "source": 40 + }, + { + "begin": 34293, + "end": 34446, + "name": "POP", + "source": 40 + }, + { + "begin": 34293, + "end": 34446, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "name": "tag", + "source": 40, + "value": "390" + }, + { + "begin": 34452, + "end": 35045, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34648, + "end": 34651, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 34663, + "end": 34753, + "name": "PUSH [tag]", + "source": 40, + "value": "1286" + }, + { + "begin": 34749, + "end": 34752, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34740, + "end": 34746, + "name": "DUP7", + "source": 40 + }, + { + "begin": 34663, + "end": 34753, + "name": "PUSH [tag]", + "source": 40, + "value": "912" + }, + { + "begin": 34663, + "end": 34753, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34663, + "end": 34753, + "name": "tag", + "source": 40, + "value": "1286" + }, + { + "begin": 34663, + "end": 34753, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34778, + "end": 34780, + "name": "PUSH", + "source": 40, + "value": "14" + }, + { + "begin": 34773, + "end": 34776, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34769, + "end": 34781, + "name": "ADD", + "source": 40 + }, + { + "begin": 34762, + "end": 34781, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 34762, + "end": 34781, + "name": "POP", + "source": 40 + }, + { + "begin": 34791, + "end": 34881, + "name": "PUSH [tag]", + "source": 40, + "value": "1287" + }, + { + "begin": 34877, + "end": 34880, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34868, + "end": 34874, + "name": "DUP6", + "source": 40 + }, + { + "begin": 34791, + "end": 34881, + "name": "PUSH [tag]", + "source": 40, + "value": "912" + }, + { + "begin": 34791, + "end": 34881, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34791, + "end": 34881, + "name": "tag", + "source": 40, + "value": "1287" + }, + { + "begin": 34791, + "end": 34881, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 34906, + "end": 34908, + "name": "PUSH", + "source": 40, + "value": "14" + }, + { + "begin": 34901, + "end": 34904, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34897, + "end": 34909, + "name": "ADD", + "source": 40 + }, + { + "begin": 34890, + "end": 34909, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 34890, + "end": 34909, + "name": "POP", + "source": 40 + }, + { + "begin": 34919, + "end": 34992, + "name": "PUSH [tag]", + "source": 40, + "value": "1288" + }, + { + "begin": 34988, + "end": 34991, + "name": "DUP3", + "source": 40 + }, + { + "begin": 34979, + "end": 34985, + "name": "DUP5", + "source": 40 + }, + { + "begin": 34919, + "end": 34992, + "name": "PUSH [tag]", + "source": 40, + "value": "915" + }, + { + "begin": 34919, + "end": 34992, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 34919, + "end": 34992, + "name": "tag", + "source": 40, + "value": "1288" + }, + { + "begin": 34919, + "end": 34992, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35017, + "end": 35018, + "name": "PUSH", + "source": 40, + "value": "2" + }, + { + "begin": 35012, + "end": 35015, + "name": "DUP3", + "source": 40 + }, + { + "begin": 35008, + "end": 35019, + "name": "ADD", + "source": 40 + }, + { + "begin": 35001, + "end": 35019, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 35001, + "end": 35019, + "name": "POP", + "source": 40 + }, + { + "begin": 35036, + "end": 35039, + "name": "DUP2", + "source": 40 + }, + { + "begin": 35029, + "end": 35039, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 35029, + "end": 35039, + "name": "POP", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "name": "POP", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "name": "POP", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "name": "POP", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "name": "POP", + "source": 40 + }, + { + "begin": 34452, + "end": 35045, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35051, + "end": 35149, + "name": "tag", + "source": 40, + "value": "916" + }, + { + "begin": 35051, + "end": 35149, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35102, + "end": 35108, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 35136, + "end": 35141, + "name": "DUP2", + "source": 40 + }, + { + "begin": 35130, + "end": 35142, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 35120, + "end": 35142, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 35120, + "end": 35142, + "name": "POP", + "source": 40 + }, + { + "begin": 35051, + "end": 35149, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 35051, + "end": 35149, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 35051, + "end": 35149, + "name": "POP", + "source": 40 + }, + { + "begin": 35051, + "end": 35149, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35155, + "end": 35323, + "name": "tag", + "source": 40, + "value": "917" + }, + { + "begin": 35155, + "end": 35323, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35238, + "end": 35249, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 35272, + "end": 35278, + "name": "DUP3", + "source": 40 + }, + { + "begin": 35267, + "end": 35270, + "name": "DUP3", + "source": 40 + }, + { + "begin": 35260, + "end": 35279, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 35312, + "end": 35316, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 35307, + "end": 35310, + "name": "DUP3", + "source": 40 + }, + { + "begin": 35303, + "end": 35317, + "name": "ADD", + "source": 40 + }, + { + "begin": 35288, + "end": 35317, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 35288, + "end": 35317, + "name": "POP", + "source": 40 + }, + { + "begin": 35155, + "end": 35323, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 35155, + "end": 35323, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 35155, + "end": 35323, + "name": "POP", + "source": 40 + }, + { + "begin": 35155, + "end": 35323, + "name": "POP", + "source": 40 + }, + { + "begin": 35155, + "end": 35323, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35329, + "end": 35575, + "name": "tag", + "source": 40, + "value": "918" + }, + { + "begin": 35329, + "end": 35575, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35410, + "end": 35411, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 35420, + "end": 35533, + "name": "tag", + "source": 40, + "value": "1292" + }, + { + "begin": 35420, + "end": 35533, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35434, + "end": 35440, + "name": "DUP4", + "source": 40 + }, + { + "begin": 35431, + "end": 35432, + "name": "DUP2", + "source": 40 + }, + { + "begin": 35428, + "end": 35441, + "name": "LT", + "source": 40 + }, + { + "begin": 35420, + "end": 35533, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 35420, + "end": 35533, + "name": "PUSH [tag]", + "source": 40, + "value": "1294" + }, + { + "begin": 35420, + "end": 35533, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 35519, + "end": 35520, + "name": "DUP1", + "source": 40 + }, + { + "begin": 35514, + "end": 35517, + "name": "DUP3", + "source": 40 + }, + { + "begin": 35510, + "end": 35521, + "name": "ADD", + "source": 40 + }, + { + "begin": 35504, + "end": 35522, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 35500, + "end": 35501, + "name": "DUP2", + "source": 40 + }, + { + "begin": 35495, + "end": 35498, + "name": "DUP5", + "source": 40 + }, + { + "begin": 35491, + "end": 35502, + "name": "ADD", + "source": 40 + }, + { + "begin": 35484, + "end": 35523, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 35456, + "end": 35458, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 35453, + "end": 35454, + "name": "DUP2", + "source": 40 + }, + { + "begin": 35449, + "end": 35459, + "name": "ADD", + "source": 40 + }, + { + "begin": 35444, + "end": 35459, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 35444, + "end": 35459, + "name": "POP", + "source": 40 + }, + { + "begin": 35420, + "end": 35533, + "name": "PUSH [tag]", + "source": 40, + "value": "1292" + }, + { + "begin": 35420, + "end": 35533, + "name": "JUMP", + "source": 40 + }, + { + "begin": 35420, + "end": 35533, + "name": "tag", + "source": 40, + "value": "1294" + }, + { + "begin": 35420, + "end": 35533, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35567, + "end": 35568, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 35558, + "end": 35564, + "name": "DUP5", + "source": 40 + }, + { + "begin": 35553, + "end": 35556, + "name": "DUP5", + "source": 40 + }, + { + "begin": 35549, + "end": 35565, + "name": "ADD", + "source": 40 + }, + { + "begin": 35542, + "end": 35569, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 35391, + "end": 35575, + "name": "POP", + "source": 40 + }, + { + "begin": 35329, + "end": 35575, + "name": "POP", + "source": 40 + }, + { + "begin": 35329, + "end": 35575, + "name": "POP", + "source": 40 + }, + { + "begin": 35329, + "end": 35575, + "name": "POP", + "source": 40 + }, + { + "begin": 35329, + "end": 35575, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35581, + "end": 35683, + "name": "tag", + "source": 40, + "value": "919" + }, + { + "begin": 35581, + "end": 35683, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35622, + "end": 35628, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 35673, + "end": 35675, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 35669, + "end": 35676, + "name": "NOT", + "source": 40 + }, + { + "begin": 35664, + "end": 35666, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 35657, + "end": 35662, + "name": "DUP4", + "source": 40 + }, + { + "begin": 35653, + "end": 35667, + "name": "ADD", + "source": 40 + }, + { + "begin": 35649, + "end": 35677, + "name": "AND", + "source": 40 + }, + { + "begin": 35639, + "end": 35677, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 35639, + "end": 35677, + "name": "POP", + "source": 40 + }, + { + "begin": 35581, + "end": 35683, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 35581, + "end": 35683, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 35581, + "end": 35683, + "name": "POP", + "source": 40 + }, + { + "begin": 35581, + "end": 35683, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35689, + "end": 36062, + "name": "tag", + "source": 40, + "value": "920" + }, + { + "begin": 35689, + "end": 36062, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35775, + "end": 35778, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 35803, + "end": 35841, + "name": "PUSH [tag]", + "source": 40, + "value": "1297" + }, + { + "begin": 35835, + "end": 35840, + "name": "DUP3", + "source": 40 + }, + { + "begin": 35803, + "end": 35841, + "name": "PUSH [tag]", + "source": 40, + "value": "916" + }, + { + "begin": 35803, + "end": 35841, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35803, + "end": 35841, + "name": "tag", + "source": 40, + "value": "1297" + }, + { + "begin": 35803, + "end": 35841, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35857, + "end": 35927, + "name": "PUSH [tag]", + "source": 40, + "value": "1298" + }, + { + "begin": 35920, + "end": 35926, + "name": "DUP2", + "source": 40 + }, + { + "begin": 35915, + "end": 35918, + "name": "DUP6", + "source": 40 + }, + { + "begin": 35857, + "end": 35927, + "name": "PUSH [tag]", + "source": 40, + "value": "917" + }, + { + "begin": 35857, + "end": 35927, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35857, + "end": 35927, + "name": "tag", + "source": 40, + "value": "1298" + }, + { + "begin": 35857, + "end": 35927, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 35850, + "end": 35927, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 35850, + "end": 35927, + "name": "POP", + "source": 40 + }, + { + "begin": 35936, + "end": 36001, + "name": "PUSH [tag]", + "source": 40, + "value": "1299" + }, + { + "begin": 35994, + "end": 36000, + "name": "DUP2", + "source": 40 + }, + { + "begin": 35989, + "end": 35992, + "name": "DUP6", + "source": 40 + }, + { + "begin": 35982, + "end": 35986, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 35975, + "end": 35980, + "name": "DUP7", + "source": 40 + }, + { + "begin": 35971, + "end": 35987, + "name": "ADD", + "source": 40 + }, + { + "begin": 35936, + "end": 36001, + "name": "PUSH [tag]", + "source": 40, + "value": "918" + }, + { + "begin": 35936, + "end": 36001, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 35936, + "end": 36001, + "name": "tag", + "source": 40, + "value": "1299" + }, + { + "begin": 35936, + "end": 36001, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36026, + "end": 36055, + "name": "PUSH [tag]", + "source": 40, + "value": "1300" + }, + { + "begin": 36048, + "end": 36054, + "name": "DUP2", + "source": 40 + }, + { + "begin": 36026, + "end": 36055, + "name": "PUSH [tag]", + "source": 40, + "value": "919" + }, + { + "begin": 36026, + "end": 36055, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36026, + "end": 36055, + "name": "tag", + "source": 40, + "value": "1300" + }, + { + "begin": 36026, + "end": 36055, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36021, + "end": 36024, + "name": "DUP5", + "source": 40 + }, + { + "begin": 36017, + "end": 36056, + "name": "ADD", + "source": 40 + }, + { + "begin": 36010, + "end": 36056, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 36010, + "end": 36056, + "name": "POP", + "source": 40 + }, + { + "begin": 35779, + "end": 36062, + "name": "POP", + "source": 40 + }, + { + "begin": 35689, + "end": 36062, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 35689, + "end": 36062, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 35689, + "end": 36062, + "name": "POP", + "source": 40 + }, + { + "begin": 35689, + "end": 36062, + "name": "POP", + "source": 40 + }, + { + "begin": 35689, + "end": 36062, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "tag", + "source": 40, + "value": "394" + }, + { + "begin": 36068, + "end": 36875, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36319, + "end": 36323, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 36357, + "end": 36360, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 36346, + "end": 36355, + "name": "DUP3", + "source": 40 + }, + { + "begin": 36342, + "end": 36361, + "name": "ADD", + "source": 40 + }, + { + "begin": 36334, + "end": 36361, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 36334, + "end": 36361, + "name": "POP", + "source": 40 + }, + { + "begin": 36371, + "end": 36442, + "name": "PUSH [tag]", + "source": 40, + "value": "1302" + }, + { + "begin": 36439, + "end": 36440, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 36428, + "end": 36437, + "name": "DUP4", + "source": 40 + }, + { + "begin": 36424, + "end": 36441, + "name": "ADD", + "source": 40 + }, + { + "begin": 36415, + "end": 36421, + "name": "DUP9", + "source": 40 + }, + { + "begin": 36371, + "end": 36442, + "name": "PUSH [tag]", + "source": 40, + "value": "887" + }, + { + "begin": 36371, + "end": 36442, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36371, + "end": 36442, + "name": "tag", + "source": 40, + "value": "1302" + }, + { + "begin": 36371, + "end": 36442, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36452, + "end": 36539, + "name": "PUSH [tag]", + "source": 40, + "value": "1303" + }, + { + "begin": 36535, + "end": 36537, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 36524, + "end": 36533, + "name": "DUP4", + "source": 40 + }, + { + "begin": 36520, + "end": 36538, + "name": "ADD", + "source": 40 + }, + { + "begin": 36511, + "end": 36517, + "name": "DUP8", + "source": 40 + }, + { + "begin": 36452, + "end": 36539, + "name": "PUSH [tag]", + "source": 40, + "value": "861" + }, + { + "begin": 36452, + "end": 36539, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36452, + "end": 36539, + "name": "tag", + "source": 40, + "value": "1303" + }, + { + "begin": 36452, + "end": 36539, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36549, + "end": 36636, + "name": "PUSH [tag]", + "source": 40, + "value": "1304" + }, + { + "begin": 36632, + "end": 36634, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 36621, + "end": 36630, + "name": "DUP4", + "source": 40 + }, + { + "begin": 36617, + "end": 36635, + "name": "ADD", + "source": 40 + }, + { + "begin": 36608, + "end": 36614, + "name": "DUP7", + "source": 40 + }, + { + "begin": 36549, + "end": 36636, + "name": "PUSH [tag]", + "source": 40, + "value": "861" + }, + { + "begin": 36549, + "end": 36636, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36549, + "end": 36636, + "name": "tag", + "source": 40, + "value": "1304" + }, + { + "begin": 36549, + "end": 36636, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36646, + "end": 36716, + "name": "PUSH [tag]", + "source": 40, + "value": "1305" + }, + { + "begin": 36712, + "end": 36714, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 36701, + "end": 36710, + "name": "DUP4", + "source": 40 + }, + { + "begin": 36697, + "end": 36715, + "name": "ADD", + "source": 40 + }, + { + "begin": 36688, + "end": 36694, + "name": "DUP6", + "source": 40 + }, + { + "begin": 36646, + "end": 36716, + "name": "PUSH [tag]", + "source": 40, + "value": "905" + }, + { + "begin": 36646, + "end": 36716, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36646, + "end": 36716, + "name": "tag", + "source": 40, + "value": "1305" + }, + { + "begin": 36646, + "end": 36716, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36764, + "end": 36773, + "name": "DUP2", + "source": 40 + }, + { + "begin": 36758, + "end": 36762, + "name": "DUP2", + "source": 40 + }, + { + "begin": 36754, + "end": 36774, + "name": "SUB", + "source": 40 + }, + { + "begin": 36748, + "end": 36751, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 36737, + "end": 36746, + "name": "DUP4", + "source": 40 + }, + { + "begin": 36733, + "end": 36752, + "name": "ADD", + "source": 40 + }, + { + "begin": 36726, + "end": 36775, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 36792, + "end": 36868, + "name": "PUSH [tag]", + "source": 40, + "value": "1306" + }, + { + "begin": 36863, + "end": 36867, + "name": "DUP2", + "source": 40 + }, + { + "begin": 36854, + "end": 36860, + "name": "DUP5", + "source": 40 + }, + { + "begin": 36792, + "end": 36868, + "name": "PUSH [tag]", + "source": 40, + "value": "920" + }, + { + "begin": 36792, + "end": 36868, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36792, + "end": 36868, + "name": "tag", + "source": 40, + "value": "1306" + }, + { + "begin": 36792, + "end": 36868, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36784, + "end": 36868, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 36784, + "end": 36868, + "name": "POP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "SWAP7", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "POP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "POP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "POP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "POP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "POP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "name": "POP", + "source": 40 + }, + { + "begin": 36068, + "end": 36875, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 36881, + "end": 37028, + "name": "tag", + "source": 40, + "value": "921" + }, + { + "begin": 36881, + "end": 37028, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 36982, + "end": 36993, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 37019, + "end": 37022, + "name": "DUP2", + "source": 40 + }, + { + "begin": 37004, + "end": 37022, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 37004, + "end": 37022, + "name": "POP", + "source": 40 + }, + { + "begin": 36881, + "end": 37028, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 36881, + "end": 37028, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 36881, + "end": 37028, + "name": "POP", + "source": 40 + }, + { + "begin": 36881, + "end": 37028, + "name": "POP", + "source": 40 + }, + { + "begin": 36881, + "end": 37028, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37034, + "end": 37420, + "name": "tag", + "source": 40, + "value": "922" + }, + { + "begin": 37034, + "end": 37420, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37138, + "end": 37141, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 37166, + "end": 37204, + "name": "PUSH [tag]", + "source": 40, + "value": "1309" + }, + { + "begin": 37198, + "end": 37203, + "name": "DUP3", + "source": 40 + }, + { + "begin": 37166, + "end": 37204, + "name": "PUSH [tag]", + "source": 40, + "value": "916" + }, + { + "begin": 37166, + "end": 37204, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37166, + "end": 37204, + "name": "tag", + "source": 40, + "value": "1309" + }, + { + "begin": 37166, + "end": 37204, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37220, + "end": 37308, + "name": "PUSH [tag]", + "source": 40, + "value": "1310" + }, + { + "begin": 37301, + "end": 37307, + "name": "DUP2", + "source": 40 + }, + { + "begin": 37296, + "end": 37299, + "name": "DUP6", + "source": 40 + }, + { + "begin": 37220, + "end": 37308, + "name": "PUSH [tag]", + "source": 40, + "value": "921" + }, + { + "begin": 37220, + "end": 37308, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37220, + "end": 37308, + "name": "tag", + "source": 40, + "value": "1310" + }, + { + "begin": 37220, + "end": 37308, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37213, + "end": 37308, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 37213, + "end": 37308, + "name": "POP", + "source": 40 + }, + { + "begin": 37317, + "end": 37382, + "name": "PUSH [tag]", + "source": 40, + "value": "1311" + }, + { + "begin": 37375, + "end": 37381, + "name": "DUP2", + "source": 40 + }, + { + "begin": 37370, + "end": 37373, + "name": "DUP6", + "source": 40 + }, + { + "begin": 37363, + "end": 37367, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 37356, + "end": 37361, + "name": "DUP7", + "source": 40 + }, + { + "begin": 37352, + "end": 37368, + "name": "ADD", + "source": 40 + }, + { + "begin": 37317, + "end": 37382, + "name": "PUSH [tag]", + "source": 40, + "value": "918" + }, + { + "begin": 37317, + "end": 37382, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37317, + "end": 37382, + "name": "tag", + "source": 40, + "value": "1311" + }, + { + "begin": 37317, + "end": 37382, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37407, + "end": 37413, + "name": "DUP1", + "source": 40 + }, + { + "begin": 37402, + "end": 37405, + "name": "DUP5", + "source": 40 + }, + { + "begin": 37398, + "end": 37414, + "name": "ADD", + "source": 40 + }, + { + "begin": 37391, + "end": 37414, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 37391, + "end": 37414, + "name": "POP", + "source": 40 + }, + { + "begin": 37142, + "end": 37420, + "name": "POP", + "source": 40 + }, + { + "begin": 37034, + "end": 37420, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 37034, + "end": 37420, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 37034, + "end": 37420, + "name": "POP", + "source": 40 + }, + { + "begin": 37034, + "end": 37420, + "name": "POP", + "source": 40 + }, + { + "begin": 37034, + "end": 37420, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37426, + "end": 37853, + "name": "tag", + "source": 40, + "value": "396" + }, + { + "begin": 37426, + "end": 37853, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37602, + "end": 37605, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 37624, + "end": 37717, + "name": "PUSH [tag]", + "source": 40, + "value": "1313" + }, + { + "begin": 37713, + "end": 37716, + "name": "DUP3", + "source": 40 + }, + { + "begin": 37704, + "end": 37710, + "name": "DUP6", + "source": 40 + }, + { + "begin": 37624, + "end": 37717, + "name": "PUSH [tag]", + "source": 40, + "value": "922" + }, + { + "begin": 37624, + "end": 37717, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37624, + "end": 37717, + "name": "tag", + "source": 40, + "value": "1313" + }, + { + "begin": 37624, + "end": 37717, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37617, + "end": 37717, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 37617, + "end": 37717, + "name": "POP", + "source": 40 + }, + { + "begin": 37734, + "end": 37827, + "name": "PUSH [tag]", + "source": 40, + "value": "1314" + }, + { + "begin": 37823, + "end": 37826, + "name": "DUP3", + "source": 40 + }, + { + "begin": 37814, + "end": 37820, + "name": "DUP5", + "source": 40 + }, + { + "begin": 37734, + "end": 37827, + "name": "PUSH [tag]", + "source": 40, + "value": "922" + }, + { + "begin": 37734, + "end": 37827, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37734, + "end": 37827, + "name": "tag", + "source": 40, + "value": "1314" + }, + { + "begin": 37734, + "end": 37827, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37727, + "end": 37827, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 37727, + "end": 37827, + "name": "POP", + "source": 40 + }, + { + "begin": 37844, + "end": 37847, + "name": "DUP2", + "source": 40 + }, + { + "begin": 37837, + "end": 37847, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 37837, + "end": 37847, + "name": "POP", + "source": 40 + }, + { + "begin": 37426, + "end": 37853, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 37426, + "end": 37853, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 37426, + "end": 37853, + "name": "POP", + "source": 40 + }, + { + "begin": 37426, + "end": 37853, + "name": "POP", + "source": 40 + }, + { + "begin": 37426, + "end": 37853, + "name": "POP", + "source": 40 + }, + { + "begin": 37426, + "end": 37853, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37859, + "end": 38053, + "name": "tag", + "source": 40, + "value": "403" + }, + { + "begin": 37859, + "end": 38053, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37899, + "end": 37903, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 37919, + "end": 37939, + "name": "PUSH [tag]", + "source": 40, + "value": "1316" + }, + { + "begin": 37937, + "end": 37938, + "name": "DUP3", + "source": 40 + }, + { + "begin": 37919, + "end": 37939, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 37919, + "end": 37939, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37919, + "end": 37939, + "name": "tag", + "source": 40, + "value": "1316" + }, + { + "begin": 37919, + "end": 37939, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37914, + "end": 37939, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 37914, + "end": 37939, + "name": "POP", + "source": 40 + }, + { + "begin": 37953, + "end": 37973, + "name": "PUSH [tag]", + "source": 40, + "value": "1317" + }, + { + "begin": 37971, + "end": 37972, + "name": "DUP4", + "source": 40 + }, + { + "begin": 37953, + "end": 37973, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 37953, + "end": 37973, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 37953, + "end": 37973, + "name": "tag", + "source": 40, + "value": "1317" + }, + { + "begin": 37953, + "end": 37973, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37948, + "end": 37973, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 37948, + "end": 37973, + "name": "POP", + "source": 40 + }, + { + "begin": 37997, + "end": 37998, + "name": "DUP3", + "source": 40 + }, + { + "begin": 37994, + "end": 37995, + "name": "DUP3", + "source": 40 + }, + { + "begin": 37990, + "end": 37999, + "name": "SUB", + "source": 40 + }, + { + "begin": 37982, + "end": 37999, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 37982, + "end": 37999, + "name": "POP", + "source": 40 + }, + { + "begin": 38021, + "end": 38022, + "name": "DUP2", + "source": 40 + }, + { + "begin": 38015, + "end": 38019, + "name": "DUP2", + "source": 40 + }, + { + "begin": 38012, + "end": 38023, + "name": "GT", + "source": 40 + }, + { + "begin": 38009, + "end": 38046, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 38009, + "end": 38046, + "name": "PUSH [tag]", + "source": 40, + "value": "1318" + }, + { + "begin": 38009, + "end": 38046, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 38026, + "end": 38044, + "name": "PUSH [tag]", + "source": 40, + "value": "1319" + }, + { + "begin": 38026, + "end": 38044, + "name": "PUSH [tag]", + "source": 40, + "value": "902" + }, + { + "begin": 38026, + "end": 38044, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38026, + "end": 38044, + "name": "tag", + "source": 40, + "value": "1319" + }, + { + "begin": 38026, + "end": 38044, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38009, + "end": 38046, + "name": "tag", + "source": 40, + "value": "1318" + }, + { + "begin": 38009, + "end": 38046, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 37859, + "end": 38053, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 37859, + "end": 38053, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 37859, + "end": 38053, + "name": "POP", + "source": 40 + }, + { + "begin": 37859, + "end": 38053, + "name": "POP", + "source": 40 + }, + { + "begin": 37859, + "end": 38053, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38059, + "end": 38423, + "name": "tag", + "source": 40, + "value": "405" + }, + { + "begin": 38059, + "end": 38423, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38196, + "end": 38200, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 38234, + "end": 38236, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 38223, + "end": 38232, + "name": "DUP3", + "source": 40 + }, + { + "begin": 38219, + "end": 38237, + "name": "ADD", + "source": 40 + }, + { + "begin": 38211, + "end": 38237, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 38211, + "end": 38237, + "name": "POP", + "source": 40 + }, + { + "begin": 38247, + "end": 38334, + "name": "PUSH [tag]", + "source": 40, + "value": "1321" + }, + { + "begin": 38331, + "end": 38332, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 38320, + "end": 38329, + "name": "DUP4", + "source": 40 + }, + { + "begin": 38316, + "end": 38333, + "name": "ADD", + "source": 40 + }, + { + "begin": 38307, + "end": 38313, + "name": "DUP6", + "source": 40 + }, + { + "begin": 38247, + "end": 38334, + "name": "PUSH [tag]", + "source": 40, + "value": "890" + }, + { + "begin": 38247, + "end": 38334, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38247, + "end": 38334, + "name": "tag", + "source": 40, + "value": "1321" + }, + { + "begin": 38247, + "end": 38334, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38344, + "end": 38416, + "name": "PUSH [tag]", + "source": 40, + "value": "1322" + }, + { + "begin": 38412, + "end": 38414, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 38401, + "end": 38410, + "name": "DUP4", + "source": 40 + }, + { + "begin": 38397, + "end": 38415, + "name": "ADD", + "source": 40 + }, + { + "begin": 38388, + "end": 38394, + "name": "DUP5", + "source": 40 + }, + { + "begin": 38344, + "end": 38416, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 38344, + "end": 38416, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38344, + "end": 38416, + "name": "tag", + "source": 40, + "value": "1322" + }, + { + "begin": 38344, + "end": 38416, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38059, + "end": 38423, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 38059, + "end": 38423, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 38059, + "end": 38423, + "name": "POP", + "source": 40 + }, + { + "begin": 38059, + "end": 38423, + "name": "POP", + "source": 40 + }, + { + "begin": 38059, + "end": 38423, + "name": "POP", + "source": 40 + }, + { + "begin": 38059, + "end": 38423, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38429, + "end": 38761, + "name": "tag", + "source": 40, + "value": "492" + }, + { + "begin": 38429, + "end": 38761, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38550, + "end": 38554, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 38588, + "end": 38590, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 38577, + "end": 38586, + "name": "DUP3", + "source": 40 + }, + { + "begin": 38573, + "end": 38591, + "name": "ADD", + "source": 40 + }, + { + "begin": 38565, + "end": 38591, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 38565, + "end": 38591, + "name": "POP", + "source": 40 + }, + { + "begin": 38601, + "end": 38672, + "name": "PUSH [tag]", + "source": 40, + "value": "1324" + }, + { + "begin": 38669, + "end": 38670, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 38658, + "end": 38667, + "name": "DUP4", + "source": 40 + }, + { + "begin": 38654, + "end": 38671, + "name": "ADD", + "source": 40 + }, + { + "begin": 38645, + "end": 38651, + "name": "DUP6", + "source": 40 + }, + { + "begin": 38601, + "end": 38672, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 38601, + "end": 38672, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38601, + "end": 38672, + "name": "tag", + "source": 40, + "value": "1324" + }, + { + "begin": 38601, + "end": 38672, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38682, + "end": 38754, + "name": "PUSH [tag]", + "source": 40, + "value": "1325" + }, + { + "begin": 38750, + "end": 38752, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 38739, + "end": 38748, + "name": "DUP4", + "source": 40 + }, + { + "begin": 38735, + "end": 38753, + "name": "ADD", + "source": 40 + }, + { + "begin": 38726, + "end": 38732, + "name": "DUP5", + "source": 40 + }, + { + "begin": 38682, + "end": 38754, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 38682, + "end": 38754, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38682, + "end": 38754, + "name": "tag", + "source": 40, + "value": "1325" + }, + { + "begin": 38682, + "end": 38754, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38429, + "end": 38761, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 38429, + "end": 38761, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 38429, + "end": 38761, + "name": "POP", + "source": 40 + }, + { + "begin": 38429, + "end": 38761, + "name": "POP", + "source": 40 + }, + { + "begin": 38429, + "end": 38761, + "name": "POP", + "source": 40 + }, + { + "begin": 38429, + "end": 38761, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38767, + "end": 38852, + "name": "tag", + "source": 40, + "value": "923" + }, + { + "begin": 38767, + "end": 38852, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38812, + "end": 38819, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 38841, + "end": 38846, + "name": "DUP2", + "source": 40 + }, + { + "begin": 38830, + "end": 38846, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 38830, + "end": 38846, + "name": "POP", + "source": 40 + }, + { + "begin": 38767, + "end": 38852, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 38767, + "end": 38852, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 38767, + "end": 38852, + "name": "POP", + "source": 40 + }, + { + "begin": 38767, + "end": 38852, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38858, + "end": 39016, + "name": "tag", + "source": 40, + "value": "924" + }, + { + "begin": 38858, + "end": 39016, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38916, + "end": 38925, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 38949, + "end": 39010, + "name": "PUSH [tag]", + "source": 40, + "value": "1328" + }, + { + "begin": 38967, + "end": 39009, + "name": "PUSH [tag]", + "source": 40, + "value": "1329" + }, + { + "begin": 38976, + "end": 39008, + "name": "PUSH [tag]", + "source": 40, + "value": "1330" + }, + { + "begin": 39002, + "end": 39007, + "name": "DUP5", + "source": 40 + }, + { + "begin": 38976, + "end": 39008, + "name": "PUSH [tag]", + "source": 40, + "value": "923" + }, + { + "begin": 38976, + "end": 39008, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38976, + "end": 39008, + "name": "tag", + "source": 40, + "value": "1330" + }, + { + "begin": 38976, + "end": 39008, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38967, + "end": 39009, + "name": "PUSH [tag]", + "source": 40, + "value": "857" + }, + { + "begin": 38967, + "end": 39009, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38967, + "end": 39009, + "name": "tag", + "source": 40, + "value": "1329" + }, + { + "begin": 38967, + "end": 39009, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38949, + "end": 39010, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 38949, + "end": 39010, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 38949, + "end": 39010, + "name": "tag", + "source": 40, + "value": "1328" + }, + { + "begin": 38949, + "end": 39010, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 38936, + "end": 39010, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 38936, + "end": 39010, + "name": "POP", + "source": 40 + }, + { + "begin": 38858, + "end": 39016, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 38858, + "end": 39016, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 38858, + "end": 39016, + "name": "POP", + "source": 40 + }, + { + "begin": 38858, + "end": 39016, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39022, + "end": 39169, + "name": "tag", + "source": 40, + "value": "925" + }, + { + "begin": 39022, + "end": 39169, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39117, + "end": 39162, + "name": "PUSH [tag]", + "source": 40, + "value": "1332" + }, + { + "begin": 39156, + "end": 39161, + "name": "DUP2", + "source": 40 + }, + { + "begin": 39117, + "end": 39162, + "name": "PUSH [tag]", + "source": 40, + "value": "924" + }, + { + "begin": 39117, + "end": 39162, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39117, + "end": 39162, + "name": "tag", + "source": 40, + "value": "1332" + }, + { + "begin": 39117, + "end": 39162, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39112, + "end": 39115, + "name": "DUP3", + "source": 40 + }, + { + "begin": 39105, + "end": 39163, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 39022, + "end": 39169, + "name": "POP", + "source": 40 + }, + { + "begin": 39022, + "end": 39169, + "name": "POP", + "source": 40 + }, + { + "begin": 39022, + "end": 39169, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39175, + "end": 39523, + "name": "tag", + "source": 40, + "value": "496" + }, + { + "begin": 39175, + "end": 39523, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39304, + "end": 39308, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 39342, + "end": 39344, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 39331, + "end": 39340, + "name": "DUP3", + "source": 40 + }, + { + "begin": 39327, + "end": 39345, + "name": "ADD", + "source": 40 + }, + { + "begin": 39319, + "end": 39345, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 39319, + "end": 39345, + "name": "POP", + "source": 40 + }, + { + "begin": 39355, + "end": 39434, + "name": "PUSH [tag]", + "source": 40, + "value": "1334" + }, + { + "begin": 39431, + "end": 39432, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 39420, + "end": 39429, + "name": "DUP4", + "source": 40 + }, + { + "begin": 39416, + "end": 39433, + "name": "ADD", + "source": 40 + }, + { + "begin": 39407, + "end": 39413, + "name": "DUP6", + "source": 40 + }, + { + "begin": 39355, + "end": 39434, + "name": "PUSH [tag]", + "source": 40, + "value": "925" + }, + { + "begin": 39355, + "end": 39434, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39355, + "end": 39434, + "name": "tag", + "source": 40, + "value": "1334" + }, + { + "begin": 39355, + "end": 39434, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39444, + "end": 39516, + "name": "PUSH [tag]", + "source": 40, + "value": "1335" + }, + { + "begin": 39512, + "end": 39514, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 39501, + "end": 39510, + "name": "DUP4", + "source": 40 + }, + { + "begin": 39497, + "end": 39515, + "name": "ADD", + "source": 40 + }, + { + "begin": 39488, + "end": 39494, + "name": "DUP5", + "source": 40 + }, + { + "begin": 39444, + "end": 39516, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 39444, + "end": 39516, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39444, + "end": 39516, + "name": "tag", + "source": 40, + "value": "1335" + }, + { + "begin": 39444, + "end": 39516, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39175, + "end": 39523, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 39175, + "end": 39523, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 39175, + "end": 39523, + "name": "POP", + "source": 40 + }, + { + "begin": 39175, + "end": 39523, + "name": "POP", + "source": 40 + }, + { + "begin": 39175, + "end": 39523, + "name": "POP", + "source": 40 + }, + { + "begin": 39175, + "end": 39523, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39529, + "end": 39614, + "name": "tag", + "source": 40, + "value": "926" + }, + { + "begin": 39529, + "end": 39614, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39574, + "end": 39581, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 39603, + "end": 39608, + "name": "DUP2", + "source": 40 + }, + { + "begin": 39592, + "end": 39608, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 39592, + "end": 39608, + "name": "POP", + "source": 40 + }, + { + "begin": 39529, + "end": 39614, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 39529, + "end": 39614, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 39529, + "end": 39614, + "name": "POP", + "source": 40 + }, + { + "begin": 39529, + "end": 39614, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39620, + "end": 39721, + "name": "tag", + "source": 40, + "value": "927" + }, + { + "begin": 39620, + "end": 39721, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39656, + "end": 39663, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 39696, + "end": 39714, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 39689, + "end": 39694, + "name": "DUP3", + "source": 40 + }, + { + "begin": 39685, + "end": 39715, + "name": "AND", + "source": 40 + }, + { + "begin": 39674, + "end": 39715, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 39674, + "end": 39715, + "name": "POP", + "source": 40 + }, + { + "begin": 39620, + "end": 39721, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 39620, + "end": 39721, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 39620, + "end": 39721, + "name": "POP", + "source": 40 + }, + { + "begin": 39620, + "end": 39721, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39727, + "end": 39883, + "name": "tag", + "source": 40, + "value": "928" + }, + { + "begin": 39727, + "end": 39883, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39784, + "end": 39793, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 39817, + "end": 39877, + "name": "PUSH [tag]", + "source": 40, + "value": "1339" + }, + { + "begin": 39834, + "end": 39876, + "name": "PUSH [tag]", + "source": 40, + "value": "1340" + }, + { + "begin": 39843, + "end": 39875, + "name": "PUSH [tag]", + "source": 40, + "value": "1341" + }, + { + "begin": 39869, + "end": 39874, + "name": "DUP5", + "source": 40 + }, + { + "begin": 39843, + "end": 39875, + "name": "PUSH [tag]", + "source": 40, + "value": "926" + }, + { + "begin": 39843, + "end": 39875, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39843, + "end": 39875, + "name": "tag", + "source": 40, + "value": "1341" + }, + { + "begin": 39843, + "end": 39875, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39834, + "end": 39876, + "name": "PUSH [tag]", + "source": 40, + "value": "857" + }, + { + "begin": 39834, + "end": 39876, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39834, + "end": 39876, + "name": "tag", + "source": 40, + "value": "1340" + }, + { + "begin": 39834, + "end": 39876, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39817, + "end": 39877, + "name": "PUSH [tag]", + "source": 40, + "value": "927" + }, + { + "begin": 39817, + "end": 39877, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39817, + "end": 39877, + "name": "tag", + "source": 40, + "value": "1339" + }, + { + "begin": 39817, + "end": 39877, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39804, + "end": 39877, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 39804, + "end": 39877, + "name": "POP", + "source": 40 + }, + { + "begin": 39727, + "end": 39883, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 39727, + "end": 39883, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 39727, + "end": 39883, + "name": "POP", + "source": 40 + }, + { + "begin": 39727, + "end": 39883, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39889, + "end": 40034, + "name": "tag", + "source": 40, + "value": "929" + }, + { + "begin": 39889, + "end": 40034, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39983, + "end": 40027, + "name": "PUSH [tag]", + "source": 40, + "value": "1343" + }, + { + "begin": 40021, + "end": 40026, + "name": "DUP2", + "source": 40 + }, + { + "begin": 39983, + "end": 40027, + "name": "PUSH [tag]", + "source": 40, + "value": "928" + }, + { + "begin": 39983, + "end": 40027, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 39983, + "end": 40027, + "name": "tag", + "source": 40, + "value": "1343" + }, + { + "begin": 39983, + "end": 40027, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 39978, + "end": 39981, + "name": "DUP3", + "source": 40 + }, + { + "begin": 39971, + "end": 40028, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 39889, + "end": 40034, + "name": "POP", + "source": 40 + }, + { + "begin": 39889, + "end": 40034, + "name": "POP", + "source": 40 + }, + { + "begin": 39889, + "end": 40034, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40040, + "end": 40276, + "name": "tag", + "source": 40, + "value": "499" + }, + { + "begin": 40040, + "end": 40276, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40140, + "end": 40144, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 40178, + "end": 40180, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 40167, + "end": 40176, + "name": "DUP3", + "source": 40 + }, + { + "begin": 40163, + "end": 40181, + "name": "ADD", + "source": 40 + }, + { + "begin": 40155, + "end": 40181, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 40155, + "end": 40181, + "name": "POP", + "source": 40 + }, + { + "begin": 40191, + "end": 40269, + "name": "PUSH [tag]", + "source": 40, + "value": "1345" + }, + { + "begin": 40266, + "end": 40267, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 40255, + "end": 40264, + "name": "DUP4", + "source": 40 + }, + { + "begin": 40251, + "end": 40268, + "name": "ADD", + "source": 40 + }, + { + "begin": 40242, + "end": 40248, + "name": "DUP5", + "source": 40 + }, + { + "begin": 40191, + "end": 40269, + "name": "PUSH [tag]", + "source": 40, + "value": "929" + }, + { + "begin": 40191, + "end": 40269, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40191, + "end": 40269, + "name": "tag", + "source": 40, + "value": "1345" + }, + { + "begin": 40191, + "end": 40269, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40040, + "end": 40276, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 40040, + "end": 40276, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 40040, + "end": 40276, + "name": "POP", + "source": 40 + }, + { + "begin": 40040, + "end": 40276, + "name": "POP", + "source": 40 + }, + { + "begin": 40040, + "end": 40276, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40282, + "end": 40425, + "name": "tag", + "source": 40, + "value": "930" + }, + { + "begin": 40282, + "end": 40425, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40339, + "end": 40344, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 40370, + "end": 40376, + "name": "DUP2", + "source": 40 + }, + { + "begin": 40364, + "end": 40377, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 40355, + "end": 40377, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 40355, + "end": 40377, + "name": "POP", + "source": 40 + }, + { + "begin": 40386, + "end": 40419, + "name": "PUSH [tag]", + "source": 40, + "value": "1347" + }, + { + "begin": 40413, + "end": 40418, + "name": "DUP2", + "source": 40 + }, + { + "begin": 40386, + "end": 40419, + "name": "PUSH [tag]", + "source": 40, + "value": "874" + }, + { + "begin": 40386, + "end": 40419, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40386, + "end": 40419, + "name": "tag", + "source": 40, + "value": "1347" + }, + { + "begin": 40386, + "end": 40419, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40282, + "end": 40425, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 40282, + "end": 40425, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 40282, + "end": 40425, + "name": "POP", + "source": 40 + }, + { + "begin": 40282, + "end": 40425, + "name": "POP", + "source": 40 + }, + { + "begin": 40282, + "end": 40425, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40431, + "end": 40782, + "name": "tag", + "source": 40, + "value": "577" + }, + { + "begin": 40431, + "end": 40782, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40501, + "end": 40507, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 40550, + "end": 40552, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 40538, + "end": 40547, + "name": "DUP3", + "source": 40 + }, + { + "begin": 40529, + "end": 40536, + "name": "DUP5", + "source": 40 + }, + { + "begin": 40525, + "end": 40548, + "name": "SUB", + "source": 40 + }, + { + "begin": 40521, + "end": 40553, + "name": "SLT", + "source": 40 + }, + { + "begin": 40518, + "end": 40637, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 40518, + "end": 40637, + "name": "PUSH [tag]", + "source": 40, + "value": "1349" + }, + { + "begin": 40518, + "end": 40637, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 40556, + "end": 40635, + "name": "PUSH [tag]", + "source": 40, + "value": "1350" + }, + { + "begin": 40556, + "end": 40635, + "name": "PUSH [tag]", + "source": 40, + "value": "839" + }, + { + "begin": 40556, + "end": 40635, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40556, + "end": 40635, + "name": "tag", + "source": 40, + "value": "1350" + }, + { + "begin": 40556, + "end": 40635, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40518, + "end": 40637, + "name": "tag", + "source": 40, + "value": "1349" + }, + { + "begin": 40518, + "end": 40637, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40676, + "end": 40677, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 40701, + "end": 40765, + "name": "PUSH [tag]", + "source": 40, + "value": "1351" + }, + { + "begin": 40757, + "end": 40764, + "name": "DUP5", + "source": 40 + }, + { + "begin": 40748, + "end": 40754, + "name": "DUP3", + "source": 40 + }, + { + "begin": 40737, + "end": 40746, + "name": "DUP6", + "source": 40 + }, + { + "begin": 40733, + "end": 40755, + "name": "ADD", + "source": 40 + }, + { + "begin": 40701, + "end": 40765, + "name": "PUSH [tag]", + "source": 40, + "value": "930" + }, + { + "begin": 40701, + "end": 40765, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40701, + "end": 40765, + "name": "tag", + "source": 40, + "value": "1351" + }, + { + "begin": 40701, + "end": 40765, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40691, + "end": 40765, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 40691, + "end": 40765, + "name": "POP", + "source": 40 + }, + { + "begin": 40647, + "end": 40775, + "name": "POP", + "source": 40 + }, + { + "begin": 40431, + "end": 40782, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 40431, + "end": 40782, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 40431, + "end": 40782, + "name": "POP", + "source": 40 + }, + { + "begin": 40431, + "end": 40782, + "name": "POP", + "source": 40 + }, + { + "begin": 40431, + "end": 40782, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40788, + "end": 41207, + "name": "tag", + "source": 40, + "value": "581" + }, + { + "begin": 40788, + "end": 41207, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40927, + "end": 40931, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 40965, + "end": 40967, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 40954, + "end": 40963, + "name": "DUP3", + "source": 40 + }, + { + "begin": 40950, + "end": 40968, + "name": "ADD", + "source": 40 + }, + { + "begin": 40942, + "end": 40968, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 40942, + "end": 40968, + "name": "POP", + "source": 40 + }, + { + "begin": 40978, + "end": 41049, + "name": "PUSH [tag]", + "source": 40, + "value": "1353" + }, + { + "begin": 41046, + "end": 41047, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 41035, + "end": 41044, + "name": "DUP4", + "source": 40 + }, + { + "begin": 41031, + "end": 41048, + "name": "ADD", + "source": 40 + }, + { + "begin": 41022, + "end": 41028, + "name": "DUP6", + "source": 40 + }, + { + "begin": 40978, + "end": 41049, + "name": "PUSH [tag]", + "source": 40, + "value": "873" + }, + { + "begin": 40978, + "end": 41049, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 40978, + "end": 41049, + "name": "tag", + "source": 40, + "value": "1353" + }, + { + "begin": 40978, + "end": 41049, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41096, + "end": 41105, + "name": "DUP2", + "source": 40 + }, + { + "begin": 41090, + "end": 41094, + "name": "DUP2", + "source": 40 + }, + { + "begin": 41086, + "end": 41106, + "name": "SUB", + "source": 40 + }, + { + "begin": 41081, + "end": 41083, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 41070, + "end": 41079, + "name": "DUP4", + "source": 40 + }, + { + "begin": 41066, + "end": 41084, + "name": "ADD", + "source": 40 + }, + { + "begin": 41059, + "end": 41107, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 41124, + "end": 41200, + "name": "PUSH [tag]", + "source": 40, + "value": "1354" + }, + { + "begin": 41195, + "end": 41199, + "name": "DUP2", + "source": 40 + }, + { + "begin": 41186, + "end": 41192, + "name": "DUP5", + "source": 40 + }, + { + "begin": 41124, + "end": 41200, + "name": "PUSH [tag]", + "source": 40, + "value": "920" + }, + { + "begin": 41124, + "end": 41200, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41124, + "end": 41200, + "name": "tag", + "source": 40, + "value": "1354" + }, + { + "begin": 41124, + "end": 41200, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41116, + "end": 41200, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 41116, + "end": 41200, + "name": "POP", + "source": 40 + }, + { + "begin": 40788, + "end": 41207, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 40788, + "end": 41207, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 40788, + "end": 41207, + "name": "POP", + "source": 40 + }, + { + "begin": 40788, + "end": 41207, + "name": "POP", + "source": 40 + }, + { + "begin": 40788, + "end": 41207, + "name": "POP", + "source": 40 + }, + { + "begin": 40788, + "end": 41207, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41213, + "end": 41545, + "name": "tag", + "source": 40, + "value": "696" + }, + { + "begin": 41213, + "end": 41545, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41334, + "end": 41338, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 41372, + "end": 41374, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 41361, + "end": 41370, + "name": "DUP3", + "source": 40 + }, + { + "begin": 41357, + "end": 41375, + "name": "ADD", + "source": 40 + }, + { + "begin": 41349, + "end": 41375, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 41349, + "end": 41375, + "name": "POP", + "source": 40 + }, + { + "begin": 41385, + "end": 41456, + "name": "PUSH [tag]", + "source": 40, + "value": "1356" + }, + { + "begin": 41453, + "end": 41454, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 41442, + "end": 41451, + "name": "DUP4", + "source": 40 + }, + { + "begin": 41438, + "end": 41455, + "name": "ADD", + "source": 40 + }, + { + "begin": 41429, + "end": 41435, + "name": "DUP6", + "source": 40 + }, + { + "begin": 41385, + "end": 41456, + "name": "PUSH [tag]", + "source": 40, + "value": "887" + }, + { + "begin": 41385, + "end": 41456, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41385, + "end": 41456, + "name": "tag", + "source": 40, + "value": "1356" + }, + { + "begin": 41385, + "end": 41456, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41466, + "end": 41538, + "name": "PUSH [tag]", + "source": 40, + "value": "1357" + }, + { + "begin": 41534, + "end": 41536, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 41523, + "end": 41532, + "name": "DUP4", + "source": 40 + }, + { + "begin": 41519, + "end": 41537, + "name": "ADD", + "source": 40 + }, + { + "begin": 41510, + "end": 41516, + "name": "DUP5", + "source": 40 + }, + { + "begin": 41466, + "end": 41538, + "name": "PUSH [tag]", + "source": 40, + "value": "887" + }, + { + "begin": 41466, + "end": 41538, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41466, + "end": 41538, + "name": "tag", + "source": 40, + "value": "1357" + }, + { + "begin": 41466, + "end": 41538, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41213, + "end": 41545, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 41213, + "end": 41545, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 41213, + "end": 41545, + "name": "POP", + "source": 40 + }, + { + "begin": 41213, + "end": 41545, + "name": "POP", + "source": 40 + }, + { + "begin": 41213, + "end": 41545, + "name": "POP", + "source": 40 + }, + { + "begin": 41213, + "end": 41545, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41551, + "end": 41883, + "name": "tag", + "source": 40, + "value": "719" + }, + { + "begin": 41551, + "end": 41883, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41672, + "end": 41676, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 41710, + "end": 41712, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 41699, + "end": 41708, + "name": "DUP3", + "source": 40 + }, + { + "begin": 41695, + "end": 41713, + "name": "ADD", + "source": 40 + }, + { + "begin": 41687, + "end": 41713, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 41687, + "end": 41713, + "name": "POP", + "source": 40 + }, + { + "begin": 41723, + "end": 41794, + "name": "PUSH [tag]", + "source": 40, + "value": "1359" + }, + { + "begin": 41791, + "end": 41792, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 41780, + "end": 41789, + "name": "DUP4", + "source": 40 + }, + { + "begin": 41776, + "end": 41793, + "name": "ADD", + "source": 40 + }, + { + "begin": 41767, + "end": 41773, + "name": "DUP6", + "source": 40 + }, + { + "begin": 41723, + "end": 41794, + "name": "PUSH [tag]", + "source": 40, + "value": "887" + }, + { + "begin": 41723, + "end": 41794, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41723, + "end": 41794, + "name": "tag", + "source": 40, + "value": "1359" + }, + { + "begin": 41723, + "end": 41794, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41804, + "end": 41876, + "name": "PUSH [tag]", + "source": 40, + "value": "1360" + }, + { + "begin": 41872, + "end": 41874, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 41861, + "end": 41870, + "name": "DUP4", + "source": 40 + }, + { + "begin": 41857, + "end": 41875, + "name": "ADD", + "source": 40 + }, + { + "begin": 41848, + "end": 41854, + "name": "DUP5", + "source": 40 + }, + { + "begin": 41804, + "end": 41876, + "name": "PUSH [tag]", + "source": 40, + "value": "873" + }, + { + "begin": 41804, + "end": 41876, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41804, + "end": 41876, + "name": "tag", + "source": 40, + "value": "1360" + }, + { + "begin": 41804, + "end": 41876, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41551, + "end": 41883, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 41551, + "end": 41883, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 41551, + "end": 41883, + "name": "POP", + "source": 40 + }, + { + "begin": 41551, + "end": 41883, + "name": "POP", + "source": 40 + }, + { + "begin": 41551, + "end": 41883, + "name": "POP", + "source": 40 + }, + { + "begin": 41551, + "end": 41883, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 41889, + "end": 42069, + "name": "tag", + "source": 40, + "value": "749" + }, + { + "begin": 41889, + "end": 42069, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 41937, + "end": 42014, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 41934, + "end": 41935, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 41927, + "end": 42015, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 42034, + "end": 42038, + "name": "PUSH", + "source": 40, + "value": "12" + }, + { + "begin": 42031, + "end": 42032, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 42024, + "end": 42039, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 42058, + "end": 42062, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 42055, + "end": 42056, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 42048, + "end": 42063, + "name": "REVERT", + "source": 40 + }, + { + "begin": 42075, + "end": 42151, + "name": "tag", + "source": 40, + "value": "931" + }, + { + "begin": 42075, + "end": 42151, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42111, + "end": 42118, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 42140, + "end": 42145, + "name": "DUP2", + "source": 40 + }, + { + "begin": 42129, + "end": 42145, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 42129, + "end": 42145, + "name": "POP", + "source": 40 + }, + { + "begin": 42075, + "end": 42151, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 42075, + "end": 42151, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 42075, + "end": 42151, + "name": "POP", + "source": 40 + }, + { + "begin": 42075, + "end": 42151, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42157, + "end": 42272, + "name": "tag", + "source": 40, + "value": "932" + }, + { + "begin": 42157, + "end": 42272, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42242, + "end": 42265, + "name": "PUSH [tag]", + "source": 40, + "value": "1364" + }, + { + "begin": 42259, + "end": 42264, + "name": "DUP2", + "source": 40 + }, + { + "begin": 42242, + "end": 42265, + "name": "PUSH [tag]", + "source": 40, + "value": "931" + }, + { + "begin": 42242, + "end": 42265, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42242, + "end": 42265, + "name": "tag", + "source": 40, + "value": "1364" + }, + { + "begin": 42242, + "end": 42265, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42237, + "end": 42240, + "name": "DUP3", + "source": 40 + }, + { + "begin": 42230, + "end": 42266, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 42157, + "end": 42272, + "name": "POP", + "source": 40 + }, + { + "begin": 42157, + "end": 42272, + "name": "POP", + "source": 40 + }, + { + "begin": 42157, + "end": 42272, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42278, + "end": 42606, + "name": "tag", + "source": 40, + "value": "778" + }, + { + "begin": 42278, + "end": 42606, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42397, + "end": 42401, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 42435, + "end": 42437, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 42424, + "end": 42433, + "name": "DUP3", + "source": 40 + }, + { + "begin": 42420, + "end": 42438, + "name": "ADD", + "source": 40 + }, + { + "begin": 42412, + "end": 42438, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 42412, + "end": 42438, + "name": "POP", + "source": 40 + }, + { + "begin": 42448, + "end": 42519, + "name": "PUSH [tag]", + "source": 40, + "value": "1366" + }, + { + "begin": 42516, + "end": 42517, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 42505, + "end": 42514, + "name": "DUP4", + "source": 40 + }, + { + "begin": 42501, + "end": 42518, + "name": "ADD", + "source": 40 + }, + { + "begin": 42492, + "end": 42498, + "name": "DUP6", + "source": 40 + }, + { + "begin": 42448, + "end": 42519, + "name": "PUSH [tag]", + "source": 40, + "value": "888" + }, + { + "begin": 42448, + "end": 42519, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42448, + "end": 42519, + "name": "tag", + "source": 40, + "value": "1366" + }, + { + "begin": 42448, + "end": 42519, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42529, + "end": 42599, + "name": "PUSH [tag]", + "source": 40, + "value": "1367" + }, + { + "begin": 42595, + "end": 42597, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 42584, + "end": 42593, + "name": "DUP4", + "source": 40 + }, + { + "begin": 42580, + "end": 42598, + "name": "ADD", + "source": 40 + }, + { + "begin": 42571, + "end": 42577, + "name": "DUP5", + "source": 40 + }, + { + "begin": 42529, + "end": 42599, + "name": "PUSH [tag]", + "source": 40, + "value": "932" + }, + { + "begin": 42529, + "end": 42599, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42529, + "end": 42599, + "name": "tag", + "source": 40, + "value": "1367" + }, + { + "begin": 42529, + "end": 42599, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42278, + "end": 42606, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 42278, + "end": 42606, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 42278, + "end": 42606, + "name": "POP", + "source": 40 + }, + { + "begin": 42278, + "end": 42606, + "name": "POP", + "source": 40 + }, + { + "begin": 42278, + "end": 42606, + "name": "POP", + "source": 40 + }, + { + "begin": 42278, + "end": 42606, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42612, + "end": 42797, + "name": "tag", + "source": 40, + "value": "782" + }, + { + "begin": 42612, + "end": 42797, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42652, + "end": 42653, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 42669, + "end": 42689, + "name": "PUSH [tag]", + "source": 40, + "value": "1369" + }, + { + "begin": 42687, + "end": 42688, + "name": "DUP3", + "source": 40 + }, + { + "begin": 42669, + "end": 42689, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 42669, + "end": 42689, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42669, + "end": 42689, + "name": "tag", + "source": 40, + "value": "1369" + }, + { + "begin": 42669, + "end": 42689, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42664, + "end": 42689, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 42664, + "end": 42689, + "name": "POP", + "source": 40 + }, + { + "begin": 42703, + "end": 42723, + "name": "PUSH [tag]", + "source": 40, + "value": "1370" + }, + { + "begin": 42721, + "end": 42722, + "name": "DUP4", + "source": 40 + }, + { + "begin": 42703, + "end": 42723, + "name": "PUSH [tag]", + "source": 40, + "value": "849" + }, + { + "begin": 42703, + "end": 42723, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42703, + "end": 42723, + "name": "tag", + "source": 40, + "value": "1370" + }, + { + "begin": 42703, + "end": 42723, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42698, + "end": 42723, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 42698, + "end": 42723, + "name": "POP", + "source": 40 + }, + { + "begin": 42742, + "end": 42743, + "name": "DUP3", + "source": 40 + }, + { + "begin": 42732, + "end": 42767, + "name": "PUSH [tag]", + "source": 40, + "value": "1371" + }, + { + "begin": 42732, + "end": 42767, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 42747, + "end": 42765, + "name": "PUSH [tag]", + "source": 40, + "value": "1372" + }, + { + "begin": 42747, + "end": 42765, + "name": "PUSH [tag]", + "source": 40, + "value": "749" + }, + { + "begin": 42747, + "end": 42765, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42747, + "end": 42765, + "name": "tag", + "source": 40, + "value": "1372" + }, + { + "begin": 42747, + "end": 42765, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42732, + "end": 42767, + "name": "tag", + "source": 40, + "value": "1371" + }, + { + "begin": 42732, + "end": 42767, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42789, + "end": 42790, + "name": "DUP3", + "source": 40 + }, + { + "begin": 42786, + "end": 42787, + "name": "DUP3", + "source": 40 + }, + { + "begin": 42782, + "end": 42791, + "name": "DIV", + "source": 40 + }, + { + "begin": 42777, + "end": 42791, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 42777, + "end": 42791, + "name": "POP", + "source": 40 + }, + { + "begin": 42612, + "end": 42797, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 42612, + "end": 42797, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 42612, + "end": 42797, + "name": "POP", + "source": 40 + }, + { + "begin": 42612, + "end": 42797, + "name": "POP", + "source": 40 + }, + { + "begin": 42612, + "end": 42797, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 42803, + "end": 42983, + "name": "tag", + "source": 40, + "value": "814" + }, + { + "begin": 42803, + "end": 42983, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 42851, + "end": 42928, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 42848, + "end": 42849, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 42841, + "end": 42929, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 42948, + "end": 42952, + "name": "PUSH", + "source": 40, + "value": "31" + }, + { + "begin": 42945, + "end": 42946, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 42938, + "end": 42953, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 42972, + "end": 42976, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 42969, + "end": 42970, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 42962, + "end": 42977, + "name": "REVERT", + "source": 40 + } + ], + ".data": { + "0": { + ".code": [ + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "A0" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 611, + "end": 2330, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 757, + "end": 2227, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSHSIZE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "CODESIZE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "SUB", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP1", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSHSIZE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP4", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "CODECOPY", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "ADD", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 757, + "end": 2227, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "ADD", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH [tag]", + "source": 22, + "value": "1" + }, + { + "begin": 757, + "end": 2227, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH [tag]", + "source": 22, + "value": "2" + }, + { + "begin": 757, + "end": 2227, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "tag", + "source": 22, + "value": "1" + }, + { + "begin": 757, + "end": 2227, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 884, + "end": 898, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1773, + "end": 1920, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP1", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1773, + "end": 1920, + "name": "ADD", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1773, + "end": 1920, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP1", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "PUSH [tag]", + "source": 10, + "value": "6" + }, + { + "begin": 1874, + "end": 1880, + "name": "DUP3", + "source": 10 + }, + { + "begin": 1882, + "end": 1886, + "name": "DUP3", + "source": 10 + }, + { + "begin": 1838, + "end": 1873, + "name": "PUSH [tag]", + "source": 10, + "value": "7" + }, + { + "begin": 1838, + "end": 1873, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1838, + "end": 1873, + "name": "SHL", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1838, + "end": 1887, + "name": "SHR", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "tag", + "source": 10, + "value": "6" + }, + { + "begin": 1838, + "end": 1887, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 1907, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1897, + "end": 1913, + "name": "AND", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "80" + }, + { + "begin": 1897, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1897, + "end": 1913, + "name": "AND", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "POP", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "POP", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 915, + "end": 934, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 936, + "end": 960, + "name": "DUP1", + "source": 22 + }, + { + "begin": 964, + "end": 971, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 964, + "end": 982, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 964, + "end": 982, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "24" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "95D89B4100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "9" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "10" + }, + { + "begin": 964, + "end": 1019, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "9" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "GAS", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "13" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "1F" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "3F" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "12" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "13" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "60" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "12" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1029, + "end": 1055, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1069, + "end": 1080, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "14" + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "15" + }, + { + "begin": 1058, + "end": 1091, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "14" + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1029, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1029, + "end": 1091, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1103, + "end": 1122, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1124, + "end": 1148, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1159, + "modifierDepth": 1, + "name": "DUP8", + "source": 22 + }, + { + "begin": 1152, + "end": 1170, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1152, + "end": 1170, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "24" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "95D89B4100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "16" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "10" + }, + { + "begin": 1152, + "end": 1207, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "16" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "GAS", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "19" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "1F" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "3F" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "18" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "19" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "60" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "18" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1217, + "end": 1243, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1257, + "end": 1268, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "20" + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "15" + }, + { + "begin": 1246, + "end": 1279, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "20" + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1217, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1217, + "end": 1279, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1298, + "end": 1312, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "21" + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1316, + "end": 1330, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "21" + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "22" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "4" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "23" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "24" + }, + { + "begin": 1290, + "end": 1382, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "23" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "REVERT", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "22" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "name": "POP", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1429, + "end": 1441, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1413, + "end": 1467, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 1413, + "end": 1467, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "25" + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "name": "POP", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1499, + "end": 1511, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1483, + "end": 1537, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 1483, + "end": 1537, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "25" + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "26" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "4" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "27" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "28" + }, + { + "begin": 1392, + "end": 1603, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "27" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "REVERT", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "26" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1664, + "end": 1671, + "modifierDepth": 1, + "name": "DUP10", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "29" + }, + { + "begin": 142, + "end": 208, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "3441AB29B24DAF7A3FD59500B0E08396EC08EC96F5CC2D0362924CDD45CFEC31" + }, + { + "begin": 1641, + "end": 1654, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1641, + "end": 1654, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1614, + "end": 1640, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "30" + }, + { + "begin": 1614, + "end": 1640, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1614, + "end": 1640, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "29" + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1614, + "end": 1661, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1614, + "end": 1661, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1614, + "end": 1661, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "100" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "EXP", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SLOAD", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SSTORE", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1731, + "end": 1738, + "modifierDepth": 1, + "name": "DUP9", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "31" + }, + { + "begin": 341, + "end": 407, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "7E1935766B7C49E7482A018A5EE52CA183A2DDFCB6810787916934079AA58264" + }, + { + "begin": 1708, + "end": 1721, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1708, + "end": 1721, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1681, + "end": 1707, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "30" + }, + { + "begin": 1681, + "end": 1707, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1681, + "end": 1707, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "31" + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1681, + "end": 1728, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1681, + "end": 1728, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1681, + "end": 1728, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "100" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "EXP", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SLOAD", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SSTORE", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1799, + "end": 1807, + "modifierDepth": 1, + "name": "DUP8", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFF" + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "32" + }, + { + "begin": 541, + "end": 607, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "FF057B3B4D4500DDA208CDE5D654DB7AA2EC63AC10AB9F9956A1F56973842782" + }, + { + "begin": 1775, + "end": 1789, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1775, + "end": 1789, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1748, + "end": 1774, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "33" + }, + { + "begin": 1748, + "end": 1774, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1748, + "end": 1774, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "32" + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1748, + "end": 1796, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1748, + "end": 1796, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "SSTORE", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1817, + "end": 1841, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "34" + }, + { + "begin": 1844, + "end": 1852, + "modifierDepth": 1, + "name": "DUP10", + "source": 22 + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFF" + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "35" + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1844, + "end": 1869, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "34" + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1817, + "end": 1869, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1817, + "end": 1869, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1954, + "end": 1966, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1973, + "end": 1985, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1992, + "end": 2002, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "36" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP4", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP3", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "37" + }, + { + "begin": 1932, + "end": 2003, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "36" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "38" + }, + { + "begin": 745, + "end": 811, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "64FB4ECF63A4059A0BB1412609335673D4954BFF8E9740D216D9469D190CBB3F" + }, + { + "begin": 1905, + "end": 1922, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1905, + "end": 1922, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1879, + "end": 1904, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "39" + }, + { + "begin": 1879, + "end": 1904, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1879, + "end": 1904, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "38" + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1879, + "end": 1929, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1879, + "end": 1929, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "40" + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "41" + }, + { + "begin": 1879, + "end": 2003, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "40" + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 2103, + "end": 2115, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 2122, + "end": 2134, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 2140, + "end": 2150, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "42" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP4", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP3", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "43" + }, + { + "begin": 2064, + "end": 2151, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "42" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "44" + }, + { + "begin": 955, + "end": 1021, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "D668863F064048EE8C87390227CA6556D110ECF41306C7B64AAB5C1C530B2D84" + }, + { + "begin": 2039, + "end": 2054, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2039, + "end": 2054, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 2013, + "end": 2038, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "39" + }, + { + "begin": 2013, + "end": 2038, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2013, + "end": 2038, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "44" + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2013, + "end": 2061, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2013, + "end": 2061, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "45" + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "41" + }, + { + "begin": 2013, + "end": 2151, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "45" + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "46" + }, + { + "begin": 2198, + "end": 2212, + "modifierDepth": 1, + "name": "DUP13", + "source": 22 + }, + { + "begin": 2214, + "end": 2219, + "modifierDepth": 1, + "name": "DUP10", + "source": 22 + }, + { + "begin": 2162, + "end": 2197, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "7" + }, + { + "begin": 2162, + "end": 2197, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2162, + "end": 2197, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "46" + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "47" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMP", + "source": 22 + }, + { + "begin": 5897, + "end": 6230, + "name": "tag", + "source": 8, + "value": "7" + }, + { + "begin": 5897, + "end": 6230, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "PUSH [tag]", + "source": 8, + "value": "49" + }, + { + "begin": 5997, + "end": 6006, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5986, + "end": 5996, + "name": "PUSH [tag]", + "source": 8, + "value": "50" + }, + { + "begin": 5986, + "end": 5996, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5986, + "end": 5996, + "name": "SHL", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5986, + "end": 6007, + "name": "SHR", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "tag", + "source": 8, + "value": "49" + }, + { + "begin": 5986, + "end": 6007, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6037, + "end": 6046, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6022, + "end": 6047, + "name": "AND", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E" + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6022, + "end": 6047, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6022, + "end": 6047, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SUB", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "LOG2", + "source": 8 + }, + { + "begin": 6076, + "end": 6077, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6062, + "end": 6066, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6062, + "end": 6073, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6062, + "end": 6077, + "name": "GT", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "PUSH [tag]", + "source": 8, + "value": "51" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "PUSH [tag]", + "source": 8, + "value": "52" + }, + { + "begin": 6130, + "end": 6139, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6155, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6122, + "end": 6155, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6155, + "name": "PUSH", + "source": 8, + "value": "5C60DA1B" + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFF" + }, + { + "begin": 6122, + "end": 6157, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "E0" + }, + { + "begin": 6122, + "end": 6157, + "name": "SHL", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP4", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SUB", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP7", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "GAS", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "STATICCALL", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "54" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATACOPY", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6122, + "end": 6157, + "name": "REVERT", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "tag", + "source": 8, + "value": "54" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 6122, + "end": 6157, + "name": "NOT", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "55" + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "56" + }, + { + "begin": 6122, + "end": 6157, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "tag", + "source": 8, + "value": "55" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6159, + "end": 6163, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6093, + "end": 6121, + "name": "PUSH [tag]", + "source": 8, + "value": "57" + }, + { + "begin": 6093, + "end": 6121, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6093, + "end": 6121, + "name": "SHL", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6093, + "end": 6164, + "name": "SHR", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "tag", + "source": 8, + "value": "52" + }, + { + "begin": 6093, + "end": 6164, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "POP", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "PUSH [tag]", + "source": 8, + "value": "58" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMP", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "tag", + "source": 8, + "value": "51" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "PUSH [tag]", + "source": 8, + "value": "59" + }, + { + "begin": 6195, + "end": 6211, + "name": "PUSH [tag]", + "source": 8, + "value": "60" + }, + { + "begin": 6195, + "end": 6211, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6195, + "end": 6211, + "name": "SHL", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6195, + "end": 6213, + "name": "SHR", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "tag", + "source": 8, + "value": "59" + }, + { + "begin": 6195, + "end": 6213, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "tag", + "source": 8, + "value": "58" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "name": "POP", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "name": "POP", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1685, + "end": 1875, + "name": "tag", + "source": 17, + "value": "30" + }, + { + "begin": 1685, + "end": 1875, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 1746, + "end": 1767, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1855, + "end": 1859, + "name": "DUP2", + "source": 17 + }, + { + "begin": 1845, + "end": 1859, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 1845, + "end": 1859, + "name": "POP", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "SWAP2", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "POP", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "jumpType": "[out]", + "name": "JUMP", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "tag", + "source": 17, + "value": "33" + }, + { + "begin": 2549, + "end": 2739, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 2610, + "end": 2631, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 2719, + "end": 2723, + "name": "DUP2", + "source": 17 + }, + { + "begin": 2709, + "end": 2723, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2709, + "end": 2723, + "name": "POP", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "SWAP2", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "POP", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "jumpType": "[out]", + "name": "JUMP", + "source": 17 + }, + { + "begin": 89, + "end": 606, + "name": "tag", + "source": 34, + "value": "35" + }, + { + "begin": 89, + "end": 606, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 150, + "end": 163, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 188, + "end": 189, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 179, + "end": 184, + "name": "DUP3", + "source": 34 + }, + { + "begin": 179, + "end": 189, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 179, + "end": 189, + "name": "AND", + "source": 34 + }, + { + "begin": 179, + "end": 189, + "name": "SUB", + "source": 34 + }, + { + "begin": 175, + "end": 226, + "name": "PUSH [tag]", + "source": 34, + "value": "64" + }, + { + "begin": 175, + "end": 226, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 205, + "end": 215, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "DUP1", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 205, + "end": 215, + "name": "ADD", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 205, + "end": 215, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "DUP1", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 205, + "end": 215, + "name": "DUP2", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 205, + "end": 215, + "name": "ADD", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "3000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 205, + "end": 215, + "name": "DUP2", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "POP", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "POP", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH [tag]", + "source": 34, + "value": "63" + }, + { + "begin": 205, + "end": 215, + "name": "JUMP", + "source": 34 + }, + { + "begin": 175, + "end": 226, + "name": "tag", + "source": 34, + "value": "64" + }, + { + "begin": 175, + "end": 226, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 235, + "end": 246, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 249, + "end": 254, + "name": "DUP3", + "source": 34 + }, + { + "begin": 235, + "end": 254, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 235, + "end": 254, + "name": "POP", + "source": 34 + }, + { + "begin": 264, + "end": 277, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 287, + "end": 362, + "name": "tag", + "source": 34, + "value": "65" + }, + { + "begin": 287, + "end": 362, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 302, + "end": 303, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 294, + "end": 298, + "name": "DUP3", + "source": 34 + }, + { + "begin": 294, + "end": 303, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 294, + "end": 303, + "name": "AND", + "source": 34 + }, + { + "begin": 294, + "end": 303, + "name": "EQ", + "source": 34 + }, + { + "begin": 287, + "end": 362, + "name": "PUSH [tag]", + "source": 34, + "value": "66" + }, + { + "begin": 287, + "end": 362, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "DUP1", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "DUP1", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "PUSH [tag]", + "source": 34, + "value": "67" + }, + { + "begin": 319, + "end": 327, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "PUSH [tag]", + "source": 34, + "value": "68" + }, + { + "begin": 319, + "end": 327, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "tag", + "source": 34, + "value": "67" + }, + { + "begin": 319, + "end": 327, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "POP", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "POP", + "source": 34 + }, + { + "begin": 349, + "end": 351, + "name": "PUSH", + "source": 34, + "value": "A" + }, + { + "begin": 341, + "end": 351, + "name": "DUP3", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "PUSH [tag]", + "source": 34, + "value": "69" + }, + { + "begin": 341, + "end": 351, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "PUSH [tag]", + "source": 34, + "value": "70" + }, + { + "begin": 341, + "end": 351, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "tag", + "source": 34, + "value": "69" + }, + { + "begin": 341, + "end": 351, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "POP", + "source": 34 + }, + { + "begin": 287, + "end": 362, + "name": "PUSH [tag]", + "source": 34, + "value": "65" + }, + { + "begin": 287, + "end": 362, + "name": "JUMP", + "source": 34 + }, + { + "begin": 287, + "end": 362, + "name": "tag", + "source": 34, + "value": "66" + }, + { + "begin": 287, + "end": 362, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 371, + "end": 390, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 403, + "end": 409, + "name": "DUP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 393, + "end": 410, + "name": "AND", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 393, + "end": 410, + "name": "DUP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "GT", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "71" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "72" + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "73" + }, + { + "begin": 393, + "end": 410, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "tag", + "source": 34, + "value": "72" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "tag", + "source": 34, + "value": "71" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 393, + "end": 410, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 393, + "end": 410, + "name": "NOT", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "AND", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 393, + "end": 410, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "74" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "MUL", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "CALLDATASIZE", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP4", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "CALLDATACOPY", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "tag", + "source": 34, + "value": "74" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 371, + "end": 410, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 371, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "tag", + "source": 34, + "value": "75" + }, + { + "begin": 420, + "end": 569, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 436, + "end": 437, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 427, + "end": 432, + "name": "DUP6", + "source": 34 + }, + { + "begin": 427, + "end": 437, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 427, + "end": 437, + "name": "AND", + "source": 34 + }, + { + "begin": 427, + "end": 437, + "name": "EQ", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "PUSH [tag]", + "source": 34, + "value": "76" + }, + { + "begin": 420, + "end": 569, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 463, + "end": 464, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 453, + "end": 464, + "name": "DUP3", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "PUSH [tag]", + "source": 34, + "value": "77" + }, + { + "begin": 453, + "end": 464, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "PUSH [tag]", + "source": 34, + "value": "78" + }, + { + "begin": 453, + "end": 464, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "tag", + "source": 34, + "value": "77" + }, + { + "begin": 453, + "end": 464, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "POP", + "source": 34 + }, + { + "begin": 528, + "end": 530, + "name": "PUSH", + "source": 34, + "value": "A" + }, + { + "begin": 520, + "end": 525, + "name": "DUP6", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "PUSH [tag]", + "source": 34, + "value": "79" + }, + { + "begin": 520, + "end": 530, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "PUSH [tag]", + "source": 34, + "value": "80" + }, + { + "begin": 520, + "end": 530, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "tag", + "source": 34, + "value": "79" + }, + { + "begin": 520, + "end": 530, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 508, + "end": 510, + "name": "PUSH", + "source": 34, + "value": "30" + }, + { + "begin": 508, + "end": 531, + "name": "PUSH [tag]", + "source": 34, + "value": "81" + }, + { + "begin": 508, + "end": 531, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 508, + "end": 531, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 508, + "end": 531, + "name": "PUSH [tag]", + "source": 34, + "value": "82" + }, + { + "begin": 508, + "end": 531, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 508, + "end": 531, + "name": "tag", + "source": 34, + "value": "81" + }, + { + "begin": 508, + "end": 531, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 495, + "end": 533, + "name": "PUSH", + "source": 34, + "value": "F8" + }, + { + "begin": 495, + "end": 533, + "name": "SHL", + "source": 34 + }, + { + "begin": 478, + "end": 484, + "name": "DUP2", + "source": 34 + }, + { + "begin": 485, + "end": 491, + "name": "DUP4", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 478, + "end": 492, + "name": "AND", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "DUP2", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "DUP2", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "LT", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH [tag]", + "source": 34, + "value": "83" + }, + { + "begin": 478, + "end": 492, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH [tag]", + "source": 34, + "value": "84" + }, + { + "begin": 478, + "end": 492, + "name": "PUSH [tag]", + "source": 34, + "value": "85" + }, + { + "begin": 478, + "end": 492, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "tag", + "source": 34, + "value": "84" + }, + { + "begin": 478, + "end": 492, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "tag", + "source": 34, + "value": "83" + }, + { + "begin": 478, + "end": 492, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 478, + "end": 492, + "name": "ADD", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "ADD", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 478, + "end": 533, + "name": "NOT", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "AND", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "DUP2", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 478, + "end": 533, + "name": "BYTE", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "MSTORE8", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "POP", + "source": 34 + }, + { + "begin": 556, + "end": 558, + "name": "PUSH", + "source": 34, + "value": "A" + }, + { + "begin": 547, + "end": 558, + "name": "DUP6", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "PUSH [tag]", + "source": 34, + "value": "86" + }, + { + "begin": 547, + "end": 558, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "PUSH [tag]", + "source": 34, + "value": "70" + }, + { + "begin": 547, + "end": 558, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "tag", + "source": 34, + "value": "86" + }, + { + "begin": 547, + "end": 558, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "POP", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "PUSH [tag]", + "source": 34, + "value": "75" + }, + { + "begin": 420, + "end": 569, + "name": "JUMP", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "tag", + "source": 34, + "value": "76" + }, + { + "begin": 420, + "end": 569, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 592, + "end": 598, + "name": "DUP1", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "tag", + "source": 34, + "value": "63" + }, + { + "begin": 89, + "end": 606, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "POP", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2836, + "end": 3024, + "name": "tag", + "source": 17, + "value": "39" + }, + { + "begin": 2836, + "end": 3024, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 2896, + "end": 2916, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 3004, + "end": 3008, + "name": "DUP2", + "source": 17 + }, + { + "begin": 2994, + "end": 3008, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2994, + "end": 3008, + "name": "POP", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "name": "SWAP2", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "name": "POP", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "jumpType": "[out]", + "name": "JUMP", + "source": 17 + }, + { + "begin": 4935, + "end": 5372, + "name": "tag", + "source": 8, + "value": "50" + }, + { + "begin": 4935, + "end": 5372, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5021, + "end": 5022, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4996, + "end": 5005, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4996, + "end": 5017, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4996, + "end": 5017, + "name": "AND", + "source": 8 + }, + { + "begin": 4996, + "end": 5017, + "name": "EXTCODESIZE", + "source": 8 + }, + { + "begin": 4996, + "end": 5022, + "name": "SUB", + "source": 8 + }, + { + "begin": 4992, + "end": 5087, + "name": "PUSH [tag]", + "source": 8, + "value": "89" + }, + { + "begin": 4992, + "end": 5087, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5066, + "end": 5075, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5045, + "end": 5076, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "64CED0EC00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5045, + "end": 5076, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5045, + "end": 5076, + "name": "ADD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH [tag]", + "source": 8, + "value": "90" + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH [tag]", + "source": 8, + "value": "91" + }, + { + "begin": 5045, + "end": 5076, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "tag", + "source": 8, + "value": "90" + }, + { + "begin": 5045, + "end": 5076, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5045, + "end": 5076, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SUB", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "REVERT", + "source": 8 + }, + { + "begin": 4992, + "end": 5087, + "name": "tag", + "source": 8, + "value": "89" + }, + { + "begin": 4992, + "end": 5087, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5145, + "end": 5154, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "PUSH [tag]", + "source": 8, + "value": "92" + }, + { + "begin": 4601, + "end": 4667, + "name": "PUSH", + "source": 8, + "value": "A3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50" + }, + { + "begin": 5124, + "end": 5135, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5124, + "end": 5135, + "name": "SHL", + "source": 8 + }, + { + "begin": 5097, + "end": 5123, + "name": "PUSH [tag]", + "source": 8, + "value": "30" + }, + { + "begin": 5097, + "end": 5123, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5097, + "end": 5123, + "name": "SHL", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5097, + "end": 5136, + "name": "SHR", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "tag", + "source": 8, + "value": "92" + }, + { + "begin": 5097, + "end": 5136, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5097, + "end": 5142, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5097, + "end": 5142, + "name": "ADD", + "source": 8 + }, + { + "begin": 5097, + "end": 5142, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "100" + }, + { + "begin": 5097, + "end": 5154, + "name": "EXP", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SLOAD", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5097, + "end": 5154, + "name": "MUL", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "NOT", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "AND", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP4", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5097, + "end": 5154, + "name": "AND", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "MUL", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "OR", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "POP", + "source": 8 + }, + { + "begin": 5165, + "end": 5193, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5204, + "end": 5213, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5229, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5196, + "end": 5229, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5229, + "name": "PUSH", + "source": 8, + "value": "5C60DA1B" + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFF" + }, + { + "begin": 5196, + "end": 5231, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "E0" + }, + { + "begin": 5196, + "end": 5231, + "name": "SHL", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP4", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SUB", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP7", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "GAS", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "STATICCALL", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "94" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATACOPY", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5196, + "end": 5231, + "name": "REVERT", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "tag", + "source": 8, + "value": "94" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 5196, + "end": 5231, + "name": "NOT", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "95" + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "56" + }, + { + "begin": 5196, + "end": 5231, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "tag", + "source": 8, + "value": "95" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5165, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5165, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5281, + "end": 5282, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5245, + "end": 5265, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5245, + "end": 5277, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5245, + "end": 5277, + "name": "AND", + "source": 8 + }, + { + "begin": 5245, + "end": 5277, + "name": "EXTCODESIZE", + "source": 8 + }, + { + "begin": 5245, + "end": 5282, + "name": "SUB", + "source": 8 + }, + { + "begin": 5241, + "end": 5366, + "name": "PUSH [tag]", + "source": 8, + "value": "96" + }, + { + "begin": 5241, + "end": 5366, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5334, + "end": 5354, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5305, + "end": 5355, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "4C9C8CE300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5305, + "end": 5355, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5305, + "end": 5355, + "name": "ADD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH [tag]", + "source": 8, + "value": "97" + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH [tag]", + "source": 8, + "value": "91" + }, + { + "begin": 5305, + "end": 5355, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "tag", + "source": 8, + "value": "97" + }, + { + "begin": 5305, + "end": 5355, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5305, + "end": 5355, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SUB", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "REVERT", + "source": 8 + }, + { + "begin": 5241, + "end": 5366, + "name": "tag", + "source": 8, + "value": "96" + }, + { + "begin": 5241, + "end": 5366, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4982, + "end": 5372, + "name": "POP", + "source": 8 + }, + { + "begin": 4935, + "end": 5372, + "name": "POP", + "source": 8 + }, + { + "begin": 4935, + "end": 5372, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4106, + "end": 4359, + "name": "tag", + "source": 14, + "value": "57" + }, + { + "begin": 4106, + "end": 4359, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4189, + "end": 4201, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4214, + "end": 4226, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4228, + "end": 4251, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4261, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4274, + "name": "PUSH", + "source": 14, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4255, + "end": 4274, + "name": "AND", + "source": 14 + }, + { + "begin": 4275, + "end": 4279, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "99" + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "10" + }, + { + "begin": 4255, + "end": 4280, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "99" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SUB", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP6", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "GAS", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DELEGATECALL", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "EQ", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "102" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "1F" + }, + { + "begin": 4255, + "end": 4280, + "name": "NOT", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "3F" + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "AND", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATACOPY", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "101" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "102" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "101" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "PUSH [tag]", + "source": 14, + "value": "103" + }, + { + "begin": 4324, + "end": 4330, + "name": "DUP6", + "source": 14 + }, + { + "begin": 4332, + "end": 4339, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4341, + "end": 4351, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4297, + "end": 4323, + "name": "PUSH [tag]", + "source": 14, + "value": "104" + }, + { + "begin": 4297, + "end": 4323, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4297, + "end": 4323, + "name": "SHL", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4297, + "end": 4352, + "name": "SHR", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "tag", + "source": 14, + "value": "103" + }, + { + "begin": 4297, + "end": 4352, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "jumpType": "[out]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 6419, + "end": 6541, + "name": "tag", + "source": 8, + "value": "60" + }, + { + "begin": 6419, + "end": 6541, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6481, + "end": 6482, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6469, + "end": 6478, + "name": "CALLVALUE", + "source": 8 + }, + { + "begin": 6469, + "end": 6482, + "name": "GT", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "PUSH [tag]", + "source": 8, + "value": "106" + }, + { + "begin": 6465, + "end": 6535, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6505, + "end": 6524, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "B398979F00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6505, + "end": 6524, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 6505, + "end": 6524, + "name": "ADD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6505, + "end": 6524, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SUB", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "REVERT", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "tag", + "source": 8, + "value": "106" + }, + { + "begin": 6465, + "end": 6535, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6419, + "end": 6541, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4625, + "end": 5207, + "name": "tag", + "source": 14, + "value": "104" + }, + { + "begin": 4625, + "end": 5207, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4769, + "end": 4781, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4798, + "end": 4805, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "PUSH [tag]", + "source": 14, + "value": "108" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "PUSH [tag]", + "source": 14, + "value": "109" + }, + { + "begin": 4829, + "end": 4839, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4821, + "end": 4828, + "name": "PUSH [tag]", + "source": 14, + "value": "110" + }, + { + "begin": 4821, + "end": 4828, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4821, + "end": 4828, + "name": "SHL", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4821, + "end": 4840, + "name": "SHR", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "tag", + "source": 14, + "value": "109" + }, + { + "begin": 4821, + "end": 4840, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "PUSH [tag]", + "source": 14, + "value": "111" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "tag", + "source": 14, + "value": "108" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5066, + "end": 5067, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5045, + "end": 5055, + "name": "DUP3", + "source": 14 + }, + { + "begin": 5045, + "end": 5062, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5045, + "end": 5067, + "name": "EQ", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "DUP1", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "PUSH [tag]", + "source": 14, + "value": "112" + }, + { + "begin": 5045, + "end": 5094, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "POP", + "source": 14 + }, + { + "begin": 5093, + "end": 5094, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5071, + "end": 5077, + "name": "DUP5", + "source": 14 + }, + { + "begin": 5071, + "end": 5089, + "name": "PUSH", + "source": 14, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5071, + "end": 5089, + "name": "AND", + "source": 14 + }, + { + "begin": 5071, + "end": 5089, + "name": "EXTCODESIZE", + "source": 14 + }, + { + "begin": 5071, + "end": 5094, + "name": "EQ", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "tag", + "source": 14, + "value": "112" + }, + { + "begin": 5045, + "end": 5094, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "PUSH [tag]", + "source": 14, + "value": "113" + }, + { + "begin": 5041, + "end": 5160, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 5138, + "end": 5144, + "name": "DUP4", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 5121, + "end": 5145, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "9996B31500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5121, + "end": 5145, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "4" + }, + { + "begin": 5121, + "end": 5145, + "name": "ADD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH [tag]", + "source": 14, + "value": "114" + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH [tag]", + "source": 14, + "value": "91" + }, + { + "begin": 5121, + "end": 5145, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "tag", + "source": 14, + "value": "114" + }, + { + "begin": 5121, + "end": 5145, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 5121, + "end": 5145, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "DUP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SUB", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "REVERT", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "tag", + "source": 14, + "value": "113" + }, + { + "begin": 5041, + "end": 5160, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5180, + "end": 5190, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "POP", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "PUSH [tag]", + "source": 14, + "value": "107" + }, + { + "begin": 5173, + "end": 5190, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "tag", + "source": 14, + "value": "111" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "tag", + "source": 14, + "value": "107" + }, + { + "begin": 4625, + "end": 5207, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "SWAP4", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "jumpType": "[out]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 5743, + "end": 6259, + "name": "tag", + "source": 14, + "value": "110" + }, + { + "begin": 5743, + "end": 6259, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5894, + "end": 5895, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5874, + "end": 5884, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5874, + "end": 5891, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5874, + "end": 5895, + "name": "GT", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "PUSH [tag]", + "source": 14, + "value": "116" + }, + { + "begin": 5870, + "end": 6253, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 6102, + "end": 6112, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6096, + "end": 6113, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6158, + "end": 6173, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6145, + "end": 6155, + "name": "DUP3", + "source": 14 + }, + { + "begin": 6141, + "end": 6143, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 6137, + "end": 6156, + "name": "ADD", + "source": 14 + }, + { + "begin": 6130, + "end": 6174, + "name": "REVERT", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "tag", + "source": 14, + "value": "116" + }, + { + "begin": 5870, + "end": 6253, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 6225, + "end": 6242, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "1425EA4200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6225, + "end": 6242, + "name": "DUP2", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "4" + }, + { + "begin": 6225, + "end": 6242, + "name": "ADD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 6225, + "end": 6242, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SUB", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "REVERT", + "source": 14 + }, + { + "begin": 7, + "end": 82, + "name": "tag", + "source": 40, + "value": "118" + }, + { + "begin": 7, + "end": 82, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40, + "end": 46, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 73, + "end": 75, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 67, + "end": 76, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 57, + "end": 76, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 57, + "end": 76, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 82, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7, + "end": 82, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 40, + "value": "119" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 40 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 40 + }, + { + "begin": 211, + "end": 328, + "name": "tag", + "source": 40, + "value": "120" + }, + { + "begin": 211, + "end": 328, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 320, + "end": 321, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 317, + "end": 318, + "name": "DUP1", + "source": 40 + }, + { + "begin": 310, + "end": 322, + "name": "REVERT", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 40, + "value": "121" + }, + { + "begin": 334, + "end": 460, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 404, + "end": 409, + "name": "DUP3", + "source": 40 + }, + { + "begin": 400, + "end": 454, + "name": "AND", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 40, + "value": "122" + }, + { + "begin": 466, + "end": 562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "181" + }, + { + "begin": 550, + "end": 555, + "name": "DUP3", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "121" + }, + { + "begin": 532, + "end": 556, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 40, + "value": "181" + }, + { + "begin": 532, + "end": 556, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "tag", + "source": 40, + "value": "123" + }, + { + "begin": 568, + "end": 690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "183" + }, + { + "begin": 659, + "end": 664, + "name": "DUP2", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "122" + }, + { + "begin": 641, + "end": 665, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "tag", + "source": 40, + "value": "183" + }, + { + "begin": 641, + "end": 665, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 634, + "end": 639, + "name": "DUP2", + "source": 40 + }, + { + "begin": 631, + "end": 666, + "name": "EQ", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "PUSH [tag]", + "source": 40, + "value": "184" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 680, + "end": 681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 677, + "end": 678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 670, + "end": 682, + "name": "REVERT", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "tag", + "source": 40, + "value": "184" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "POP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "tag", + "source": 40, + "value": "124" + }, + { + "begin": 696, + "end": 839, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 753, + "end": 758, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 784, + "end": 790, + "name": "DUP2", + "source": 40 + }, + { + "begin": 778, + "end": 791, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "POP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "186" + }, + { + "begin": 827, + "end": 832, + "name": "DUP2", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "123" + }, + { + "begin": 800, + "end": 833, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "tag", + "source": 40, + "value": "186" + }, + { + "begin": 800, + "end": 833, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "tag", + "source": 40, + "value": "125" + }, + { + "begin": 845, + "end": 934, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 881, + "end": 888, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 921, + "end": 927, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 914, + "end": 919, + "name": "DUP3", + "source": 40 + }, + { + "begin": 910, + "end": 928, + "name": "AND", + "source": 40 + }, + { + "begin": 899, + "end": 928, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 899, + "end": 928, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 940, + "end": 1060, + "name": "tag", + "source": 40, + "value": "126" + }, + { + "begin": 940, + "end": 1060, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1012, + "end": 1035, + "name": "PUSH [tag]", + "source": 40, + "value": "189" + }, + { + "begin": 1029, + "end": 1034, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1012, + "end": 1035, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 1012, + "end": 1035, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1012, + "end": 1035, + "name": "tag", + "source": 40, + "value": "189" + }, + { + "begin": 1012, + "end": 1035, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1005, + "end": 1010, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1002, + "end": 1036, + "name": "EQ", + "source": 40 + }, + { + "begin": 992, + "end": 1054, + "name": "PUSH [tag]", + "source": 40, + "value": "190" + }, + { + "begin": 992, + "end": 1054, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1050, + "end": 1051, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1047, + "end": 1048, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1040, + "end": 1052, + "name": "REVERT", + "source": 40 + }, + { + "begin": 992, + "end": 1054, + "name": "tag", + "source": 40, + "value": "190" + }, + { + "begin": 992, + "end": 1054, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 940, + "end": 1060, + "name": "POP", + "source": 40 + }, + { + "begin": 940, + "end": 1060, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "tag", + "source": 40, + "value": "127" + }, + { + "begin": 1066, + "end": 1207, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1122, + "end": 1127, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1153, + "end": 1159, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1147, + "end": 1160, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 1138, + "end": 1160, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1138, + "end": 1160, + "name": "POP", + "source": 40 + }, + { + "begin": 1169, + "end": 1201, + "name": "PUSH [tag]", + "source": 40, + "value": "192" + }, + { + "begin": 1195, + "end": 1200, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1169, + "end": 1201, + "name": "PUSH [tag]", + "source": 40, + "value": "126" + }, + { + "begin": 1169, + "end": 1201, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1169, + "end": 1201, + "name": "tag", + "source": 40, + "value": "192" + }, + { + "begin": 1169, + "end": 1201, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "POP", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "POP", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1213, + "end": 1330, + "name": "tag", + "source": 40, + "value": "128" + }, + { + "begin": 1213, + "end": 1330, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1322, + "end": 1323, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1319, + "end": 1320, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1312, + "end": 1324, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1336, + "end": 1453, + "name": "tag", + "source": 40, + "value": "129" + }, + { + "begin": 1336, + "end": 1453, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1445, + "end": 1446, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1442, + "end": 1443, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1435, + "end": 1447, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "tag", + "source": 40, + "value": "130" + }, + { + "begin": 1459, + "end": 1561, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1500, + "end": 1506, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1551, + "end": 1553, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 1547, + "end": 1554, + "name": "NOT", + "source": 40 + }, + { + "begin": 1542, + "end": 1544, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 1535, + "end": 1540, + "name": "DUP4", + "source": 40 + }, + { + "begin": 1531, + "end": 1545, + "name": "ADD", + "source": 40 + }, + { + "begin": 1527, + "end": 1555, + "name": "AND", + "source": 40 + }, + { + "begin": 1517, + "end": 1555, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1517, + "end": 1555, + "name": "POP", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "POP", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1567, + "end": 1747, + "name": "tag", + "source": 40, + "value": "73" + }, + { + "begin": 1567, + "end": 1747, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1615, + "end": 1692, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1612, + "end": 1613, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1605, + "end": 1693, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1712, + "end": 1716, + "name": "PUSH", + "source": 40, + "value": "41" + }, + { + "begin": 1709, + "end": 1710, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 1702, + "end": 1717, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1736, + "end": 1740, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 1733, + "end": 1734, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1726, + "end": 1741, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "name": "tag", + "source": 40, + "value": "131" + }, + { + "begin": 1753, + "end": 2034, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1836, + "end": 1863, + "name": "PUSH [tag]", + "source": 40, + "value": "198" + }, + { + "begin": 1858, + "end": 1862, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1836, + "end": 1863, + "name": "PUSH [tag]", + "source": 40, + "value": "130" + }, + { + "begin": 1836, + "end": 1863, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1836, + "end": 1863, + "name": "tag", + "source": 40, + "value": "198" + }, + { + "begin": 1836, + "end": 1863, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1828, + "end": 1834, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1824, + "end": 1864, + "name": "ADD", + "source": 40 + }, + { + "begin": 1966, + "end": 1972, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1954, + "end": 1964, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1951, + "end": 1973, + "name": "LT", + "source": 40 + }, + { + "begin": 1930, + "end": 1948, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1918, + "end": 1928, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1915, + "end": 1949, + "name": "GT", + "source": 40 + }, + { + "begin": 1912, + "end": 1974, + "name": "OR", + "source": 40 + }, + { + "begin": 1909, + "end": 1997, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1909, + "end": 1997, + "name": "PUSH [tag]", + "source": 40, + "value": "199" + }, + { + "begin": 1909, + "end": 1997, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1977, + "end": 1995, + "name": "PUSH [tag]", + "source": 40, + "value": "200" + }, + { + "begin": 1977, + "end": 1995, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 1977, + "end": 1995, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1977, + "end": 1995, + "name": "tag", + "source": 40, + "value": "200" + }, + { + "begin": 1977, + "end": 1995, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1909, + "end": 1997, + "name": "tag", + "source": 40, + "value": "199" + }, + { + "begin": 1909, + "end": 1997, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2017, + "end": 2027, + "name": "DUP1", + "source": 40 + }, + { + "begin": 2013, + "end": 2015, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 2006, + "end": 2028, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1796, + "end": 2034, + "name": "POP", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "name": "POP", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "name": "POP", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "tag", + "source": 40, + "value": "132" + }, + { + "begin": 2040, + "end": 2169, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2074, + "end": 2080, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2101, + "end": 2121, + "name": "PUSH [tag]", + "source": 40, + "value": "202" + }, + { + "begin": 2101, + "end": 2121, + "name": "PUSH [tag]", + "source": 40, + "value": "118" + }, + { + "begin": 2101, + "end": 2121, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2101, + "end": 2121, + "name": "tag", + "source": 40, + "value": "202" + }, + { + "begin": 2101, + "end": 2121, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2091, + "end": 2121, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2091, + "end": 2121, + "name": "POP", + "source": 40 + }, + { + "begin": 2130, + "end": 2163, + "name": "PUSH [tag]", + "source": 40, + "value": "203" + }, + { + "begin": 2158, + "end": 2162, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2150, + "end": 2156, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2130, + "end": 2163, + "name": "PUSH [tag]", + "source": 40, + "value": "131" + }, + { + "begin": 2130, + "end": 2163, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2130, + "end": 2163, + "name": "tag", + "source": 40, + "value": "203" + }, + { + "begin": 2130, + "end": 2163, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "POP", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "tag", + "source": 40, + "value": "133" + }, + { + "begin": 2175, + "end": 2482, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2236, + "end": 2240, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2326, + "end": 2344, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 2318, + "end": 2324, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2315, + "end": 2345, + "name": "GT", + "source": 40 + }, + { + "begin": 2312, + "end": 2368, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2312, + "end": 2368, + "name": "PUSH [tag]", + "source": 40, + "value": "205" + }, + { + "begin": 2312, + "end": 2368, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 2348, + "end": 2366, + "name": "PUSH [tag]", + "source": 40, + "value": "206" + }, + { + "begin": 2348, + "end": 2366, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 2348, + "end": 2366, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2348, + "end": 2366, + "name": "tag", + "source": 40, + "value": "206" + }, + { + "begin": 2348, + "end": 2366, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2312, + "end": 2368, + "name": "tag", + "source": 40, + "value": "205" + }, + { + "begin": 2312, + "end": 2368, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2386, + "end": 2415, + "name": "PUSH [tag]", + "source": 40, + "value": "207" + }, + { + "begin": 2408, + "end": 2414, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2386, + "end": 2415, + "name": "PUSH [tag]", + "source": 40, + "value": "130" + }, + { + "begin": 2386, + "end": 2415, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2386, + "end": 2415, + "name": "tag", + "source": 40, + "value": "207" + }, + { + "begin": 2386, + "end": 2415, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2378, + "end": 2415, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2378, + "end": 2415, + "name": "POP", + "source": 40 + }, + { + "begin": 2470, + "end": 2474, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2464, + "end": 2468, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2460, + "end": 2475, + "name": "ADD", + "source": 40 + }, + { + "begin": 2452, + "end": 2475, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2452, + "end": 2475, + "name": "POP", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "POP", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "tag", + "source": 40, + "value": "134" + }, + { + "begin": 2488, + "end": 2734, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2569, + "end": 2570, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2579, + "end": 2692, + "name": "tag", + "source": 40, + "value": "209" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2593, + "end": 2599, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2590, + "end": 2591, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2587, + "end": 2600, + "name": "LT", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "PUSH [tag]", + "source": 40, + "value": "211" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 2678, + "end": 2679, + "name": "DUP1", + "source": 40 + }, + { + "begin": 2673, + "end": 2676, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2669, + "end": 2680, + "name": "ADD", + "source": 40 + }, + { + "begin": 2663, + "end": 2681, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 2659, + "end": 2660, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2654, + "end": 2657, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2650, + "end": 2661, + "name": "ADD", + "source": 40 + }, + { + "begin": 2643, + "end": 2682, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2615, + "end": 2617, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2612, + "end": 2613, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2608, + "end": 2618, + "name": "ADD", + "source": 40 + }, + { + "begin": 2603, + "end": 2618, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2603, + "end": 2618, + "name": "POP", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "PUSH [tag]", + "source": 40, + "value": "209" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMP", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "tag", + "source": 40, + "value": "211" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2726, + "end": 2727, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2717, + "end": 2723, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2712, + "end": 2715, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2708, + "end": 2724, + "name": "ADD", + "source": 40 + }, + { + "begin": 2701, + "end": 2728, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2550, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "tag", + "source": 40, + "value": "135" + }, + { + "begin": 2740, + "end": 3172, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2828, + "end": 2833, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2853, + "end": 2918, + "name": "PUSH [tag]", + "source": 40, + "value": "213" + }, + { + "begin": 2869, + "end": 2917, + "name": "PUSH [tag]", + "source": 40, + "value": "214" + }, + { + "begin": 2910, + "end": 2916, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2869, + "end": 2917, + "name": "PUSH [tag]", + "source": 40, + "value": "133" + }, + { + "begin": 2869, + "end": 2917, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2869, + "end": 2917, + "name": "tag", + "source": 40, + "value": "214" + }, + { + "begin": 2869, + "end": 2917, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2853, + "end": 2918, + "name": "PUSH [tag]", + "source": 40, + "value": "132" + }, + { + "begin": 2853, + "end": 2918, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2853, + "end": 2918, + "name": "tag", + "source": 40, + "value": "213" + }, + { + "begin": 2853, + "end": 2918, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2844, + "end": 2918, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2844, + "end": 2918, + "name": "POP", + "source": 40 + }, + { + "begin": 2941, + "end": 2947, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2934, + "end": 2939, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2927, + "end": 2948, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2979, + "end": 2983, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2972, + "end": 2977, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2968, + "end": 2984, + "name": "ADD", + "source": 40 + }, + { + "begin": 3017, + "end": 3020, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3008, + "end": 3014, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3003, + "end": 3006, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2999, + "end": 3015, + "name": "ADD", + "source": 40 + }, + { + "begin": 2996, + "end": 3021, + "name": "GT", + "source": 40 + }, + { + "begin": 2993, + "end": 3105, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2993, + "end": 3105, + "name": "PUSH [tag]", + "source": 40, + "value": "215" + }, + { + "begin": 2993, + "end": 3105, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3024, + "end": 3103, + "name": "PUSH [tag]", + "source": 40, + "value": "216" + }, + { + "begin": 3024, + "end": 3103, + "name": "PUSH [tag]", + "source": 40, + "value": "129" + }, + { + "begin": 3024, + "end": 3103, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3024, + "end": 3103, + "name": "tag", + "source": 40, + "value": "216" + }, + { + "begin": 3024, + "end": 3103, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2993, + "end": 3105, + "name": "tag", + "source": 40, + "value": "215" + }, + { + "begin": 2993, + "end": 3105, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3114, + "end": 3166, + "name": "PUSH [tag]", + "source": 40, + "value": "217" + }, + { + "begin": 3159, + "end": 3165, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3154, + "end": 3157, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3149, + "end": 3152, + "name": "DUP6", + "source": 40 + }, + { + "begin": 3114, + "end": 3166, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 3114, + "end": 3166, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3114, + "end": 3166, + "name": "tag", + "source": 40, + "value": "217" + }, + { + "begin": 3114, + "end": 3166, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2834, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "tag", + "source": 40, + "value": "136" + }, + { + "begin": 3191, + "end": 3544, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3257, + "end": 3262, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3306, + "end": 3309, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3299, + "end": 3303, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 3291, + "end": 3297, + "name": "DUP4", + "source": 40 + }, + { + "begin": 3287, + "end": 3304, + "name": "ADD", + "source": 40 + }, + { + "begin": 3283, + "end": 3310, + "name": "SLT", + "source": 40 + }, + { + "begin": 3273, + "end": 3395, + "name": "PUSH [tag]", + "source": 40, + "value": "219" + }, + { + "begin": 3273, + "end": 3395, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3314, + "end": 3393, + "name": "PUSH [tag]", + "source": 40, + "value": "220" + }, + { + "begin": 3314, + "end": 3393, + "name": "PUSH [tag]", + "source": 40, + "value": "128" + }, + { + "begin": 3314, + "end": 3393, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3314, + "end": 3393, + "name": "tag", + "source": 40, + "value": "220" + }, + { + "begin": 3314, + "end": 3393, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3273, + "end": 3395, + "name": "tag", + "source": 40, + "value": "219" + }, + { + "begin": 3273, + "end": 3395, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3424, + "end": 3430, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3418, + "end": 3431, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 3449, + "end": 3538, + "name": "PUSH [tag]", + "source": 40, + "value": "221" + }, + { + "begin": 3534, + "end": 3537, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3526, + "end": 3532, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3519, + "end": 3523, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 3511, + "end": 3517, + "name": "DUP7", + "source": 40 + }, + { + "begin": 3507, + "end": 3524, + "name": "ADD", + "source": 40 + }, + { + "begin": 3449, + "end": 3538, + "name": "PUSH [tag]", + "source": 40, + "value": "135" + }, + { + "begin": 3449, + "end": 3538, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3449, + "end": 3538, + "name": "tag", + "source": 40, + "value": "221" + }, + { + "begin": 3449, + "end": 3538, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3440, + "end": 3538, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3440, + "end": 3538, + "name": "POP", + "source": 40 + }, + { + "begin": 3263, + "end": 3544, + "name": "POP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "POP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "POP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "tag", + "source": 40, + "value": "2" + }, + { + "begin": 3550, + "end": 4696, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3664, + "end": 3670, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3672, + "end": 3678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 3680, + "end": 3686, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3688, + "end": 3694, + "name": "DUP1", + "source": 40 + }, + { + "begin": 3696, + "end": 3702, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3745, + "end": 3748, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 3733, + "end": 3742, + "name": "DUP7", + "source": 40 + }, + { + "begin": 3724, + "end": 3731, + "name": "DUP9", + "source": 40 + }, + { + "begin": 3720, + "end": 3743, + "name": "SUB", + "source": 40 + }, + { + "begin": 3716, + "end": 3749, + "name": "SLT", + "source": 40 + }, + { + "begin": 3713, + "end": 3833, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 3713, + "end": 3833, + "name": "PUSH [tag]", + "source": 40, + "value": "223" + }, + { + "begin": 3713, + "end": 3833, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3752, + "end": 3831, + "name": "PUSH [tag]", + "source": 40, + "value": "224" + }, + { + "begin": 3752, + "end": 3831, + "name": "PUSH [tag]", + "source": 40, + "value": "119" + }, + { + "begin": 3752, + "end": 3831, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3752, + "end": 3831, + "name": "tag", + "source": 40, + "value": "224" + }, + { + "begin": 3752, + "end": 3831, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3713, + "end": 3833, + "name": "tag", + "source": 40, + "value": "223" + }, + { + "begin": 3713, + "end": 3833, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3872, + "end": 3873, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3897, + "end": 3961, + "name": "PUSH [tag]", + "source": 40, + "value": "225" + }, + { + "begin": 3953, + "end": 3960, + "name": "DUP9", + "source": 40 + }, + { + "begin": 3944, + "end": 3950, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3933, + "end": 3942, + "name": "DUP10", + "source": 40 + }, + { + "begin": 3929, + "end": 3951, + "name": "ADD", + "source": 40 + }, + { + "begin": 3897, + "end": 3961, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 3897, + "end": 3961, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3897, + "end": 3961, + "name": "tag", + "source": 40, + "value": "225" + }, + { + "begin": 3897, + "end": 3961, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3887, + "end": 3961, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 3887, + "end": 3961, + "name": "POP", + "source": 40 + }, + { + "begin": 3843, + "end": 3971, + "name": "POP", + "source": 40 + }, + { + "begin": 4010, + "end": 4012, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 4036, + "end": 4100, + "name": "PUSH [tag]", + "source": 40, + "value": "226" + }, + { + "begin": 4092, + "end": 4099, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4083, + "end": 4089, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4072, + "end": 4081, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4068, + "end": 4090, + "name": "ADD", + "source": 40 + }, + { + "begin": 4036, + "end": 4100, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 4036, + "end": 4100, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4036, + "end": 4100, + "name": "tag", + "source": 40, + "value": "226" + }, + { + "begin": 4036, + "end": 4100, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4026, + "end": 4100, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 4026, + "end": 4100, + "name": "POP", + "source": 40 + }, + { + "begin": 3981, + "end": 4110, + "name": "POP", + "source": 40 + }, + { + "begin": 4149, + "end": 4151, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 4175, + "end": 4239, + "name": "PUSH [tag]", + "source": 40, + "value": "227" + }, + { + "begin": 4231, + "end": 4238, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4222, + "end": 4228, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4211, + "end": 4220, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4207, + "end": 4229, + "name": "ADD", + "source": 40 + }, + { + "begin": 4175, + "end": 4239, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 4175, + "end": 4239, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4175, + "end": 4239, + "name": "tag", + "source": 40, + "value": "227" + }, + { + "begin": 4175, + "end": 4239, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4165, + "end": 4239, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 4165, + "end": 4239, + "name": "POP", + "source": 40 + }, + { + "begin": 4120, + "end": 4249, + "name": "POP", + "source": 40 + }, + { + "begin": 4288, + "end": 4290, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 4314, + "end": 4377, + "name": "PUSH [tag]", + "source": 40, + "value": "228" + }, + { + "begin": 4369, + "end": 4376, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4360, + "end": 4366, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4349, + "end": 4358, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4345, + "end": 4367, + "name": "ADD", + "source": 40 + }, + { + "begin": 4314, + "end": 4377, + "name": "PUSH [tag]", + "source": 40, + "value": "127" + }, + { + "begin": 4314, + "end": 4377, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4314, + "end": 4377, + "name": "tag", + "source": 40, + "value": "228" + }, + { + "begin": 4314, + "end": 4377, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4304, + "end": 4377, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4304, + "end": 4377, + "name": "POP", + "source": 40 + }, + { + "begin": 4259, + "end": 4387, + "name": "POP", + "source": 40 + }, + { + "begin": 4447, + "end": 4450, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 4436, + "end": 4445, + "name": "DUP7", + "source": 40 + }, + { + "begin": 4432, + "end": 4451, + "name": "ADD", + "source": 40 + }, + { + "begin": 4426, + "end": 4452, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 4479, + "end": 4497, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4471, + "end": 4477, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4468, + "end": 4498, + "name": "GT", + "source": 40 + }, + { + "begin": 4465, + "end": 4582, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 4465, + "end": 4582, + "name": "PUSH [tag]", + "source": 40, + "value": "229" + }, + { + "begin": 4465, + "end": 4582, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 4501, + "end": 4580, + "name": "PUSH [tag]", + "source": 40, + "value": "230" + }, + { + "begin": 4501, + "end": 4580, + "name": "PUSH [tag]", + "source": 40, + "value": "120" + }, + { + "begin": 4501, + "end": 4580, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4501, + "end": 4580, + "name": "tag", + "source": 40, + "value": "230" + }, + { + "begin": 4501, + "end": 4580, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4465, + "end": 4582, + "name": "tag", + "source": 40, + "value": "229" + }, + { + "begin": 4465, + "end": 4582, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4606, + "end": 4679, + "name": "PUSH [tag]", + "source": 40, + "value": "231" + }, + { + "begin": 4671, + "end": 4678, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4662, + "end": 4668, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4651, + "end": 4660, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4647, + "end": 4669, + "name": "ADD", + "source": 40 + }, + { + "begin": 4606, + "end": 4679, + "name": "PUSH [tag]", + "source": 40, + "value": "136" + }, + { + "begin": 4606, + "end": 4679, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4606, + "end": 4679, + "name": "tag", + "source": 40, + "value": "231" + }, + { + "begin": 4606, + "end": 4679, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4596, + "end": 4679, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4596, + "end": 4679, + "name": "POP", + "source": 40 + }, + { + "begin": 4397, + "end": 4689, + "name": "POP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "POP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "POP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "tag", + "source": 40, + "value": "137" + }, + { + "begin": 4702, + "end": 4800, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4753, + "end": 4759, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4787, + "end": 4792, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4781, + "end": 4793, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 4771, + "end": 4793, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4771, + "end": 4793, + "name": "POP", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "POP", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "tag", + "source": 40, + "value": "138" + }, + { + "begin": 4806, + "end": 4953, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4907, + "end": 4918, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4944, + "end": 4947, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4929, + "end": 4947, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4929, + "end": 4947, + "name": "POP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "POP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "POP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "tag", + "source": 40, + "value": "139" + }, + { + "begin": 4959, + "end": 5345, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5063, + "end": 5066, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5091, + "end": 5129, + "name": "PUSH [tag]", + "source": 40, + "value": "235" + }, + { + "begin": 5123, + "end": 5128, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5091, + "end": 5129, + "name": "PUSH [tag]", + "source": 40, + "value": "137" + }, + { + "begin": 5091, + "end": 5129, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5091, + "end": 5129, + "name": "tag", + "source": 40, + "value": "235" + }, + { + "begin": 5091, + "end": 5129, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5145, + "end": 5233, + "name": "PUSH [tag]", + "source": 40, + "value": "236" + }, + { + "begin": 5226, + "end": 5232, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5221, + "end": 5224, + "name": "DUP6", + "source": 40 + }, + { + "begin": 5145, + "end": 5233, + "name": "PUSH [tag]", + "source": 40, + "value": "138" + }, + { + "begin": 5145, + "end": 5233, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5145, + "end": 5233, + "name": "tag", + "source": 40, + "value": "236" + }, + { + "begin": 5145, + "end": 5233, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5138, + "end": 5233, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 5138, + "end": 5233, + "name": "POP", + "source": 40 + }, + { + "begin": 5242, + "end": 5307, + "name": "PUSH [tag]", + "source": 40, + "value": "237" + }, + { + "begin": 5300, + "end": 5306, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5295, + "end": 5298, + "name": "DUP6", + "source": 40 + }, + { + "begin": 5288, + "end": 5292, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 5281, + "end": 5286, + "name": "DUP7", + "source": 40 + }, + { + "begin": 5277, + "end": 5293, + "name": "ADD", + "source": 40 + }, + { + "begin": 5242, + "end": 5307, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 5242, + "end": 5307, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5242, + "end": 5307, + "name": "tag", + "source": 40, + "value": "237" + }, + { + "begin": 5242, + "end": 5307, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5332, + "end": 5338, + "name": "DUP1", + "source": 40 + }, + { + "begin": 5327, + "end": 5330, + "name": "DUP5", + "source": 40 + }, + { + "begin": 5323, + "end": 5339, + "name": "ADD", + "source": 40 + }, + { + "begin": 5316, + "end": 5339, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5316, + "end": 5339, + "name": "POP", + "source": 40 + }, + { + "begin": 5067, + "end": 5345, + "name": "POP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "POP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "POP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "tag", + "source": 40, + "value": "10" + }, + { + "begin": 5351, + "end": 5622, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5481, + "end": 5484, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5503, + "end": 5596, + "name": "PUSH [tag]", + "source": 40, + "value": "239" + }, + { + "begin": 5592, + "end": 5595, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5583, + "end": 5589, + "name": "DUP5", + "source": 40 + }, + { + "begin": 5503, + "end": 5596, + "name": "PUSH [tag]", + "source": 40, + "value": "139" + }, + { + "begin": 5503, + "end": 5596, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5503, + "end": 5596, + "name": "tag", + "source": 40, + "value": "239" + }, + { + "begin": 5503, + "end": 5596, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5496, + "end": 5596, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5496, + "end": 5596, + "name": "POP", + "source": 40 + }, + { + "begin": 5613, + "end": 5616, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5606, + "end": 5616, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5606, + "end": 5616, + "name": "POP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "POP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "POP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "tag", + "source": 40, + "value": "140" + }, + { + "begin": 5628, + "end": 5936, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5690, + "end": 5694, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5780, + "end": 5798, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 5772, + "end": 5778, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5769, + "end": 5799, + "name": "GT", + "source": 40 + }, + { + "begin": 5766, + "end": 5822, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 5766, + "end": 5822, + "name": "PUSH [tag]", + "source": 40, + "value": "241" + }, + { + "begin": 5766, + "end": 5822, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 5802, + "end": 5820, + "name": "PUSH [tag]", + "source": 40, + "value": "242" + }, + { + "begin": 5802, + "end": 5820, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 5802, + "end": 5820, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5802, + "end": 5820, + "name": "tag", + "source": 40, + "value": "242" + }, + { + "begin": 5802, + "end": 5820, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5766, + "end": 5822, + "name": "tag", + "source": 40, + "value": "241" + }, + { + "begin": 5766, + "end": 5822, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5840, + "end": 5869, + "name": "PUSH [tag]", + "source": 40, + "value": "243" + }, + { + "begin": 5862, + "end": 5868, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5840, + "end": 5869, + "name": "PUSH [tag]", + "source": 40, + "value": "130" + }, + { + "begin": 5840, + "end": 5869, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5840, + "end": 5869, + "name": "tag", + "source": 40, + "value": "243" + }, + { + "begin": 5840, + "end": 5869, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5832, + "end": 5869, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5832, + "end": 5869, + "name": "POP", + "source": 40 + }, + { + "begin": 5924, + "end": 5928, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 5918, + "end": 5922, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5914, + "end": 5929, + "name": "ADD", + "source": 40 + }, + { + "begin": 5906, + "end": 5929, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5906, + "end": 5929, + "name": "POP", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "POP", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "tag", + "source": 40, + "value": "141" + }, + { + "begin": 5942, + "end": 6376, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6031, + "end": 6036, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6056, + "end": 6122, + "name": "PUSH [tag]", + "source": 40, + "value": "245" + }, + { + "begin": 6072, + "end": 6121, + "name": "PUSH [tag]", + "source": 40, + "value": "246" + }, + { + "begin": 6114, + "end": 6120, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6072, + "end": 6121, + "name": "PUSH [tag]", + "source": 40, + "value": "140" + }, + { + "begin": 6072, + "end": 6121, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6072, + "end": 6121, + "name": "tag", + "source": 40, + "value": "246" + }, + { + "begin": 6072, + "end": 6121, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6056, + "end": 6122, + "name": "PUSH [tag]", + "source": 40, + "value": "132" + }, + { + "begin": 6056, + "end": 6122, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6056, + "end": 6122, + "name": "tag", + "source": 40, + "value": "245" + }, + { + "begin": 6056, + "end": 6122, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6047, + "end": 6122, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 6047, + "end": 6122, + "name": "POP", + "source": 40 + }, + { + "begin": 6145, + "end": 6151, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6138, + "end": 6143, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6131, + "end": 6152, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 6183, + "end": 6187, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 6176, + "end": 6181, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6172, + "end": 6188, + "name": "ADD", + "source": 40 + }, + { + "begin": 6221, + "end": 6224, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6212, + "end": 6218, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6207, + "end": 6210, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6203, + "end": 6219, + "name": "ADD", + "source": 40 + }, + { + "begin": 6200, + "end": 6225, + "name": "GT", + "source": 40 + }, + { + "begin": 6197, + "end": 6309, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 6197, + "end": 6309, + "name": "PUSH [tag]", + "source": 40, + "value": "247" + }, + { + "begin": 6197, + "end": 6309, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6228, + "end": 6307, + "name": "PUSH [tag]", + "source": 40, + "value": "248" + }, + { + "begin": 6228, + "end": 6307, + "name": "PUSH [tag]", + "source": 40, + "value": "129" + }, + { + "begin": 6228, + "end": 6307, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6228, + "end": 6307, + "name": "tag", + "source": 40, + "value": "248" + }, + { + "begin": 6228, + "end": 6307, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6197, + "end": 6309, + "name": "tag", + "source": 40, + "value": "247" + }, + { + "begin": 6197, + "end": 6309, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6318, + "end": 6370, + "name": "PUSH [tag]", + "source": 40, + "value": "249" + }, + { + "begin": 6363, + "end": 6369, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6358, + "end": 6361, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6353, + "end": 6356, + "name": "DUP6", + "source": 40 + }, + { + "begin": 6318, + "end": 6370, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 6318, + "end": 6370, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6318, + "end": 6370, + "name": "tag", + "source": 40, + "value": "249" + }, + { + "begin": 6318, + "end": 6370, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6037, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "tag", + "source": 40, + "value": "142" + }, + { + "begin": 6396, + "end": 6751, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6463, + "end": 6468, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6512, + "end": 6515, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6505, + "end": 6509, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 6497, + "end": 6503, + "name": "DUP4", + "source": 40 + }, + { + "begin": 6493, + "end": 6510, + "name": "ADD", + "source": 40 + }, + { + "begin": 6489, + "end": 6516, + "name": "SLT", + "source": 40 + }, + { + "begin": 6479, + "end": 6601, + "name": "PUSH [tag]", + "source": 40, + "value": "251" + }, + { + "begin": 6479, + "end": 6601, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6520, + "end": 6599, + "name": "PUSH [tag]", + "source": 40, + "value": "252" + }, + { + "begin": 6520, + "end": 6599, + "name": "PUSH [tag]", + "source": 40, + "value": "128" + }, + { + "begin": 6520, + "end": 6599, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6520, + "end": 6599, + "name": "tag", + "source": 40, + "value": "252" + }, + { + "begin": 6520, + "end": 6599, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6479, + "end": 6601, + "name": "tag", + "source": 40, + "value": "251" + }, + { + "begin": 6479, + "end": 6601, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6630, + "end": 6636, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6624, + "end": 6637, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 6655, + "end": 6745, + "name": "PUSH [tag]", + "source": 40, + "value": "253" + }, + { + "begin": 6741, + "end": 6744, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6733, + "end": 6739, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6726, + "end": 6730, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 6718, + "end": 6724, + "name": "DUP7", + "source": 40 + }, + { + "begin": 6714, + "end": 6731, + "name": "ADD", + "source": 40 + }, + { + "begin": 6655, + "end": 6745, + "name": "PUSH [tag]", + "source": 40, + "value": "141" + }, + { + "begin": 6655, + "end": 6745, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6655, + "end": 6745, + "name": "tag", + "source": 40, + "value": "253" + }, + { + "begin": 6655, + "end": 6745, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6646, + "end": 6745, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6646, + "end": 6745, + "name": "POP", + "source": 40 + }, + { + "begin": 6469, + "end": 6751, + "name": "POP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "POP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "POP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "tag", + "source": 40, + "value": "15" + }, + { + "begin": 6757, + "end": 7281, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6837, + "end": 6843, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6886, + "end": 6888, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 6874, + "end": 6883, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6865, + "end": 6872, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6861, + "end": 6884, + "name": "SUB", + "source": 40 + }, + { + "begin": 6857, + "end": 6889, + "name": "SLT", + "source": 40 + }, + { + "begin": 6854, + "end": 6973, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 6854, + "end": 6973, + "name": "PUSH [tag]", + "source": 40, + "value": "255" + }, + { + "begin": 6854, + "end": 6973, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6892, + "end": 6971, + "name": "PUSH [tag]", + "source": 40, + "value": "256" + }, + { + "begin": 6892, + "end": 6971, + "name": "PUSH [tag]", + "source": 40, + "value": "119" + }, + { + "begin": 6892, + "end": 6971, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6892, + "end": 6971, + "name": "tag", + "source": 40, + "value": "256" + }, + { + "begin": 6892, + "end": 6971, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6854, + "end": 6973, + "name": "tag", + "source": 40, + "value": "255" + }, + { + "begin": 6854, + "end": 6973, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7033, + "end": 7034, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7022, + "end": 7031, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7018, + "end": 7035, + "name": "ADD", + "source": 40 + }, + { + "begin": 7012, + "end": 7036, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 7063, + "end": 7081, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7055, + "end": 7061, + "name": "DUP2", + "source": 40 + }, + { + "begin": 7052, + "end": 7082, + "name": "GT", + "source": 40 + }, + { + "begin": 7049, + "end": 7166, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 7049, + "end": 7166, + "name": "PUSH [tag]", + "source": 40, + "value": "257" + }, + { + "begin": 7049, + "end": 7166, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 7085, + "end": 7164, + "name": "PUSH [tag]", + "source": 40, + "value": "258" + }, + { + "begin": 7085, + "end": 7164, + "name": "PUSH [tag]", + "source": 40, + "value": "120" + }, + { + "begin": 7085, + "end": 7164, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7085, + "end": 7164, + "name": "tag", + "source": 40, + "value": "258" + }, + { + "begin": 7085, + "end": 7164, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7049, + "end": 7166, + "name": "tag", + "source": 40, + "value": "257" + }, + { + "begin": 7049, + "end": 7166, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7190, + "end": 7264, + "name": "PUSH [tag]", + "source": 40, + "value": "259" + }, + { + "begin": 7256, + "end": 7263, + "name": "DUP5", + "source": 40 + }, + { + "begin": 7247, + "end": 7253, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7236, + "end": 7245, + "name": "DUP6", + "source": 40 + }, + { + "begin": 7232, + "end": 7254, + "name": "ADD", + "source": 40 + }, + { + "begin": 7190, + "end": 7264, + "name": "PUSH [tag]", + "source": 40, + "value": "142" + }, + { + "begin": 7190, + "end": 7264, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7190, + "end": 7264, + "name": "tag", + "source": 40, + "value": "259" + }, + { + "begin": 7190, + "end": 7264, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7180, + "end": 7264, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7180, + "end": 7264, + "name": "POP", + "source": 40 + }, + { + "begin": 6983, + "end": 7274, + "name": "POP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "POP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "POP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "tag", + "source": 40, + "value": "143" + }, + { + "begin": 7287, + "end": 7456, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7371, + "end": 7382, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7405, + "end": 7411, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7400, + "end": 7403, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7393, + "end": 7412, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 7445, + "end": 7449, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 7440, + "end": 7443, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7436, + "end": 7450, + "name": "ADD", + "source": 40 + }, + { + "begin": 7421, + "end": 7450, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7421, + "end": 7450, + "name": "POP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "POP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "POP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7462, + "end": 7695, + "name": "tag", + "source": 40, + "value": "144" + }, + { + "begin": 7462, + "end": 7695, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7602, + "end": 7636, + "name": "PUSH", + "source": 40, + "value": "4C4250616972426561636F6E50726F78793A204661696C656420746F20676574" + }, + { + "begin": 7598, + "end": 7599, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7590, + "end": 7596, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7586, + "end": 7600, + "name": "ADD", + "source": 40 + }, + { + "begin": 7579, + "end": 7637, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 7671, + "end": 7687, + "name": "PUSH", + "source": 40, + "value": "20746F6B656E2073796D626F6C73000000000000000000000000000000000000" + }, + { + "begin": 7666, + "end": 7668, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 7658, + "end": 7664, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7654, + "end": 7669, + "name": "ADD", + "source": 40 + }, + { + "begin": 7647, + "end": 7688, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 7462, + "end": 7695, + "name": "POP", + "source": 40 + }, + { + "begin": 7462, + "end": 7695, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "tag", + "source": 40, + "value": "145" + }, + { + "begin": 7701, + "end": 8067, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7843, + "end": 7846, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7864, + "end": 7931, + "name": "PUSH [tag]", + "source": 40, + "value": "263" + }, + { + "begin": 7928, + "end": 7930, + "name": "PUSH", + "source": 40, + "value": "2E" + }, + { + "begin": 7923, + "end": 7926, + "name": "DUP4", + "source": 40 + }, + { + "begin": 7864, + "end": 7931, + "name": "PUSH [tag]", + "source": 40, + "value": "143" + }, + { + "begin": 7864, + "end": 7931, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7864, + "end": 7931, + "name": "tag", + "source": 40, + "value": "263" + }, + { + "begin": 7864, + "end": 7931, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7857, + "end": 7931, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7857, + "end": 7931, + "name": "POP", + "source": 40 + }, + { + "begin": 7940, + "end": 8033, + "name": "PUSH [tag]", + "source": 40, + "value": "264" + }, + { + "begin": 8029, + "end": 8032, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7940, + "end": 8033, + "name": "PUSH [tag]", + "source": 40, + "value": "144" + }, + { + "begin": 7940, + "end": 8033, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7940, + "end": 8033, + "name": "tag", + "source": 40, + "value": "264" + }, + { + "begin": 7940, + "end": 8033, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8058, + "end": 8060, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 8053, + "end": 8056, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8049, + "end": 8061, + "name": "ADD", + "source": 40 + }, + { + "begin": 8042, + "end": 8061, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8042, + "end": 8061, + "name": "POP", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "POP", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "tag", + "source": 40, + "value": "24" + }, + { + "begin": 8073, + "end": 8492, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8239, + "end": 8243, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8277, + "end": 8279, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 8266, + "end": 8275, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8262, + "end": 8280, + "name": "ADD", + "source": 40 + }, + { + "begin": 8254, + "end": 8280, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8254, + "end": 8280, + "name": "POP", + "source": 40 + }, + { + "begin": 8326, + "end": 8335, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8320, + "end": 8324, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8316, + "end": 8336, + "name": "SUB", + "source": 40 + }, + { + "begin": 8312, + "end": 8313, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8301, + "end": 8310, + "name": "DUP4", + "source": 40 + }, + { + "begin": 8297, + "end": 8314, + "name": "ADD", + "source": 40 + }, + { + "begin": 8290, + "end": 8337, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 8354, + "end": 8485, + "name": "PUSH [tag]", + "source": 40, + "value": "266" + }, + { + "begin": 8480, + "end": 8484, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8354, + "end": 8485, + "name": "PUSH [tag]", + "source": 40, + "value": "145" + }, + { + "begin": 8354, + "end": 8485, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8354, + "end": 8485, + "name": "tag", + "source": 40, + "value": "266" + }, + { + "begin": 8354, + "end": 8485, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8346, + "end": 8485, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8346, + "end": 8485, + "name": "POP", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "POP", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8498, + "end": 8725, + "name": "tag", + "source": 40, + "value": "146" + }, + { + "begin": 8498, + "end": 8725, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8638, + "end": 8672, + "name": "PUSH", + "source": 40, + "value": "4C4250616972426561636F6E50726F78793A20496E76616C696420746F6B656E" + }, + { + "begin": 8634, + "end": 8635, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8626, + "end": 8632, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8622, + "end": 8636, + "name": "ADD", + "source": 40 + }, + { + "begin": 8615, + "end": 8673, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 8707, + "end": 8717, + "name": "PUSH", + "source": 40, + "value": "2073796D626F6C73000000000000000000000000000000000000000000000000" + }, + { + "begin": 8702, + "end": 8704, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 8694, + "end": 8700, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8690, + "end": 8705, + "name": "ADD", + "source": 40 + }, + { + "begin": 8683, + "end": 8718, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 8498, + "end": 8725, + "name": "POP", + "source": 40 + }, + { + "begin": 8498, + "end": 8725, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "tag", + "source": 40, + "value": "147" + }, + { + "begin": 8731, + "end": 9097, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8873, + "end": 8876, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8894, + "end": 8961, + "name": "PUSH [tag]", + "source": 40, + "value": "269" + }, + { + "begin": 8958, + "end": 8960, + "name": "PUSH", + "source": 40, + "value": "28" + }, + { + "begin": 8953, + "end": 8956, + "name": "DUP4", + "source": 40 + }, + { + "begin": 8894, + "end": 8961, + "name": "PUSH [tag]", + "source": 40, + "value": "143" + }, + { + "begin": 8894, + "end": 8961, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8894, + "end": 8961, + "name": "tag", + "source": 40, + "value": "269" + }, + { + "begin": 8894, + "end": 8961, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8887, + "end": 8961, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8887, + "end": 8961, + "name": "POP", + "source": 40 + }, + { + "begin": 8970, + "end": 9063, + "name": "PUSH [tag]", + "source": 40, + "value": "270" + }, + { + "begin": 9059, + "end": 9062, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8970, + "end": 9063, + "name": "PUSH [tag]", + "source": 40, + "value": "146" + }, + { + "begin": 8970, + "end": 9063, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8970, + "end": 9063, + "name": "tag", + "source": 40, + "value": "270" + }, + { + "begin": 8970, + "end": 9063, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9088, + "end": 9090, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 9083, + "end": 9086, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9079, + "end": 9091, + "name": "ADD", + "source": 40 + }, + { + "begin": 9072, + "end": 9091, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9072, + "end": 9091, + "name": "POP", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "POP", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "tag", + "source": 40, + "value": "28" + }, + { + "begin": 9103, + "end": 9522, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9269, + "end": 9273, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9307, + "end": 9309, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 9296, + "end": 9305, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9292, + "end": 9310, + "name": "ADD", + "source": 40 + }, + { + "begin": 9284, + "end": 9310, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9284, + "end": 9310, + "name": "POP", + "source": 40 + }, + { + "begin": 9356, + "end": 9365, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9350, + "end": 9354, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9346, + "end": 9366, + "name": "SUB", + "source": 40 + }, + { + "begin": 9342, + "end": 9343, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9331, + "end": 9340, + "name": "DUP4", + "source": 40 + }, + { + "begin": 9327, + "end": 9344, + "name": "ADD", + "source": 40 + }, + { + "begin": 9320, + "end": 9367, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 9384, + "end": 9515, + "name": "PUSH [tag]", + "source": 40, + "value": "272" + }, + { + "begin": 9510, + "end": 9514, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9384, + "end": 9515, + "name": "PUSH [tag]", + "source": 40, + "value": "147" + }, + { + "begin": 9384, + "end": 9515, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9384, + "end": 9515, + "name": "tag", + "source": 40, + "value": "272" + }, + { + "begin": 9384, + "end": 9515, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9376, + "end": 9515, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9376, + "end": 9515, + "name": "POP", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "POP", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9528, + "end": 9709, + "name": "tag", + "source": 40, + "value": "148" + }, + { + "begin": 9528, + "end": 9709, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9696, + "end": 9702, + "name": "PUSH", + "source": 40, + "value": "4C42545F00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 9691, + "end": 9694, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9684, + "end": 9703, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 9528, + "end": 9709, + "name": "POP", + "source": 40 + }, + { + "begin": 9528, + "end": 9709, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "tag", + "source": 40, + "value": "149" + }, + { + "begin": 9715, + "end": 9814, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9767, + "end": 9773, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9801, + "end": 9806, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9795, + "end": 9807, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 9785, + "end": 9807, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9785, + "end": 9807, + "name": "POP", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "POP", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "tag", + "source": 40, + "value": "150" + }, + { + "begin": 9820, + "end": 9968, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9922, + "end": 9933, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9959, + "end": 9962, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9944, + "end": 9962, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9944, + "end": 9962, + "name": "POP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "POP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "POP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "tag", + "source": 40, + "value": "151" + }, + { + "begin": 9974, + "end": 10364, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10080, + "end": 10083, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 10108, + "end": 10147, + "name": "PUSH [tag]", + "source": 40, + "value": "277" + }, + { + "begin": 10141, + "end": 10146, + "name": "DUP3", + "source": 40 + }, + { + "begin": 10108, + "end": 10147, + "name": "PUSH [tag]", + "source": 40, + "value": "149" + }, + { + "begin": 10108, + "end": 10147, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10108, + "end": 10147, + "name": "tag", + "source": 40, + "value": "277" + }, + { + "begin": 10108, + "end": 10147, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10163, + "end": 10252, + "name": "PUSH [tag]", + "source": 40, + "value": "278" + }, + { + "begin": 10245, + "end": 10251, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10240, + "end": 10243, + "name": "DUP6", + "source": 40 + }, + { + "begin": 10163, + "end": 10252, + "name": "PUSH [tag]", + "source": 40, + "value": "150" + }, + { + "begin": 10163, + "end": 10252, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10163, + "end": 10252, + "name": "tag", + "source": 40, + "value": "278" + }, + { + "begin": 10163, + "end": 10252, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10156, + "end": 10252, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 10156, + "end": 10252, + "name": "POP", + "source": 40 + }, + { + "begin": 10261, + "end": 10326, + "name": "PUSH [tag]", + "source": 40, + "value": "279" + }, + { + "begin": 10319, + "end": 10325, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10314, + "end": 10317, + "name": "DUP6", + "source": 40 + }, + { + "begin": 10307, + "end": 10311, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 10300, + "end": 10305, + "name": "DUP7", + "source": 40 + }, + { + "begin": 10296, + "end": 10312, + "name": "ADD", + "source": 40 + }, + { + "begin": 10261, + "end": 10326, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 10261, + "end": 10326, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10261, + "end": 10326, + "name": "tag", + "source": 40, + "value": "279" + }, + { + "begin": 10261, + "end": 10326, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10351, + "end": 10357, + "name": "DUP1", + "source": 40 + }, + { + "begin": 10346, + "end": 10349, + "name": "DUP5", + "source": 40 + }, + { + "begin": 10342, + "end": 10358, + "name": "ADD", + "source": 40 + }, + { + "begin": 10335, + "end": 10358, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 10335, + "end": 10358, + "name": "POP", + "source": 40 + }, + { + "begin": 10084, + "end": 10364, + "name": "POP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "POP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "POP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10370, + "end": 10548, + "name": "tag", + "source": 40, + "value": "152" + }, + { + "begin": 10370, + "end": 10548, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10538, + "end": 10541, + "name": "PUSH", + "source": 40, + "value": "2F00000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 10533, + "end": 10536, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10526, + "end": 10542, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 10370, + "end": 10548, + "name": "POP", + "source": 40 + }, + { + "begin": 10370, + "end": 10548, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "tag", + "source": 40, + "value": "37" + }, + { + "begin": 10554, + "end": 11941, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11052, + "end": 11055, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11067, + "end": 11204, + "name": "PUSH [tag]", + "source": 40, + "value": "282" + }, + { + "begin": 11200, + "end": 11203, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11067, + "end": 11204, + "name": "PUSH [tag]", + "source": 40, + "value": "148" + }, + { + "begin": 11067, + "end": 11204, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11067, + "end": 11204, + "name": "tag", + "source": 40, + "value": "282" + }, + { + "begin": 11067, + "end": 11204, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11229, + "end": 11230, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 11224, + "end": 11227, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11220, + "end": 11231, + "name": "ADD", + "source": 40 + }, + { + "begin": 11213, + "end": 11231, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11213, + "end": 11231, + "name": "POP", + "source": 40 + }, + { + "begin": 11248, + "end": 11343, + "name": "PUSH [tag]", + "source": 40, + "value": "283" + }, + { + "begin": 11339, + "end": 11342, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11330, + "end": 11336, + "name": "DUP7", + "source": 40 + }, + { + "begin": 11248, + "end": 11343, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 11248, + "end": 11343, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11248, + "end": 11343, + "name": "tag", + "source": 40, + "value": "283" + }, + { + "begin": 11248, + "end": 11343, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11241, + "end": 11343, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11241, + "end": 11343, + "name": "POP", + "source": 40 + }, + { + "begin": 11353, + "end": 11490, + "name": "PUSH [tag]", + "source": 40, + "value": "284" + }, + { + "begin": 11486, + "end": 11489, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11353, + "end": 11490, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 11353, + "end": 11490, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11353, + "end": 11490, + "name": "tag", + "source": 40, + "value": "284" + }, + { + "begin": 11353, + "end": 11490, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11515, + "end": 11516, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 11510, + "end": 11513, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11506, + "end": 11517, + "name": "ADD", + "source": 40 + }, + { + "begin": 11499, + "end": 11517, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11499, + "end": 11517, + "name": "POP", + "source": 40 + }, + { + "begin": 11534, + "end": 11629, + "name": "PUSH [tag]", + "source": 40, + "value": "285" + }, + { + "begin": 11625, + "end": 11628, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11616, + "end": 11622, + "name": "DUP6", + "source": 40 + }, + { + "begin": 11534, + "end": 11629, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 11534, + "end": 11629, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11534, + "end": 11629, + "name": "tag", + "source": 40, + "value": "285" + }, + { + "begin": 11534, + "end": 11629, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11527, + "end": 11629, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11527, + "end": 11629, + "name": "POP", + "source": 40 + }, + { + "begin": 11639, + "end": 11776, + "name": "PUSH [tag]", + "source": 40, + "value": "286" + }, + { + "begin": 11772, + "end": 11775, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11639, + "end": 11776, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 11639, + "end": 11776, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11639, + "end": 11776, + "name": "tag", + "source": 40, + "value": "286" + }, + { + "begin": 11639, + "end": 11776, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11801, + "end": 11802, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 11796, + "end": 11799, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11792, + "end": 11803, + "name": "ADD", + "source": 40 + }, + { + "begin": 11785, + "end": 11803, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11785, + "end": 11803, + "name": "POP", + "source": 40 + }, + { + "begin": 11820, + "end": 11915, + "name": "PUSH [tag]", + "source": 40, + "value": "287" + }, + { + "begin": 11911, + "end": 11914, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11902, + "end": 11908, + "name": "DUP5", + "source": 40 + }, + { + "begin": 11820, + "end": 11915, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 11820, + "end": 11915, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11820, + "end": 11915, + "name": "tag", + "source": 40, + "value": "287" + }, + { + "begin": 11820, + "end": 11915, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11813, + "end": 11915, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11813, + "end": 11915, + "name": "POP", + "source": 40 + }, + { + "begin": 11932, + "end": 11935, + "name": "DUP2", + "source": 40 + }, + { + "begin": 11925, + "end": 11935, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 11925, + "end": 11935, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11947, + "end": 12127, + "name": "tag", + "source": 40, + "value": "153" + }, + { + "begin": 11947, + "end": 12127, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11995, + "end": 12072, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 11992, + "end": 11993, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11985, + "end": 12073, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 12092, + "end": 12096, + "name": "PUSH", + "source": 40, + "value": "22" + }, + { + "begin": 12089, + "end": 12090, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 12082, + "end": 12097, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 12116, + "end": 12120, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 12113, + "end": 12114, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12106, + "end": 12121, + "name": "REVERT", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "tag", + "source": 40, + "value": "154" + }, + { + "begin": 12133, + "end": 12453, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12177, + "end": 12183, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12214, + "end": 12215, + "name": "PUSH", + "source": 40, + "value": "2" + }, + { + "begin": 12208, + "end": 12212, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12204, + "end": 12216, + "name": "DIV", + "source": 40 + }, + { + "begin": 12194, + "end": 12216, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12194, + "end": 12216, + "name": "POP", + "source": 40 + }, + { + "begin": 12261, + "end": 12262, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 12255, + "end": 12259, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12251, + "end": 12263, + "name": "AND", + "source": 40 + }, + { + "begin": 12282, + "end": 12300, + "name": "DUP1", + "source": 40 + }, + { + "begin": 12272, + "end": 12353, + "name": "PUSH [tag]", + "source": 40, + "value": "290" + }, + { + "begin": 12272, + "end": 12353, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 12338, + "end": 12342, + "name": "PUSH", + "source": 40, + "value": "7F" + }, + { + "begin": 12330, + "end": 12336, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12326, + "end": 12343, + "name": "AND", + "source": 40 + }, + { + "begin": 12316, + "end": 12343, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12316, + "end": 12343, + "name": "POP", + "source": 40 + }, + { + "begin": 12272, + "end": 12353, + "name": "tag", + "source": 40, + "value": "290" + }, + { + "begin": 12272, + "end": 12353, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12400, + "end": 12402, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 12392, + "end": 12398, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12389, + "end": 12403, + "name": "LT", + "source": 40 + }, + { + "begin": 12369, + "end": 12387, + "name": "DUP2", + "source": 40 + }, + { + "begin": 12366, + "end": 12404, + "name": "SUB", + "source": 40 + }, + { + "begin": 12363, + "end": 12447, + "name": "PUSH [tag]", + "source": 40, + "value": "291" + }, + { + "begin": 12363, + "end": 12447, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 12419, + "end": 12437, + "name": "PUSH [tag]", + "source": 40, + "value": "292" + }, + { + "begin": 12419, + "end": 12437, + "name": "PUSH [tag]", + "source": 40, + "value": "153" + }, + { + "begin": 12419, + "end": 12437, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12419, + "end": 12437, + "name": "tag", + "source": 40, + "value": "292" + }, + { + "begin": 12419, + "end": 12437, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12363, + "end": 12447, + "name": "tag", + "source": 40, + "value": "291" + }, + { + "begin": 12363, + "end": 12447, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12184, + "end": 12453, + "name": "POP", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "POP", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "tag", + "source": 40, + "value": "155" + }, + { + "begin": 12459, + "end": 12600, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12508, + "end": 12512, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12531, + "end": 12534, + "name": "DUP2", + "source": 40 + }, + { + "begin": 12523, + "end": 12534, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12523, + "end": 12534, + "name": "POP", + "source": 40 + }, + { + "begin": 12554, + "end": 12557, + "name": "DUP2", + "source": 40 + }, + { + "begin": 12551, + "end": 12552, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12544, + "end": 12558, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 12588, + "end": 12592, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 12585, + "end": 12586, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12575, + "end": 12593, + "name": "KECCAK256", + "source": 40 + }, + { + "begin": 12567, + "end": 12593, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12567, + "end": 12593, + "name": "POP", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "POP", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "tag", + "source": 40, + "value": "156" + }, + { + "begin": 12606, + "end": 12699, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12643, + "end": 12649, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12690, + "end": 12692, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 12685, + "end": 12687, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 12678, + "end": 12683, + "name": "DUP4", + "source": 40 + }, + { + "begin": 12674, + "end": 12688, + "name": "ADD", + "source": 40 + }, + { + "begin": 12670, + "end": 12693, + "name": "DIV", + "source": 40 + }, + { + "begin": 12660, + "end": 12693, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12660, + "end": 12693, + "name": "POP", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "POP", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "tag", + "source": 40, + "value": "157" + }, + { + "begin": 12705, + "end": 12812, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12749, + "end": 12757, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12799, + "end": 12804, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12793, + "end": 12797, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12789, + "end": 12805, + "name": "SHL", + "source": 40 + }, + { + "begin": 12768, + "end": 12805, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12768, + "end": 12805, + "name": "POP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "POP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "POP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "tag", + "source": 40, + "value": "158" + }, + { + "begin": 12818, + "end": 13211, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12887, + "end": 12893, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12937, + "end": 12938, + "name": "PUSH", + "source": 40, + "value": "8" + }, + { + "begin": 12925, + "end": 12935, + "name": "DUP4", + "source": 40 + }, + { + "begin": 12921, + "end": 12939, + "name": "MUL", + "source": 40 + }, + { + "begin": 12960, + "end": 13057, + "name": "PUSH [tag]", + "source": 40, + "value": "297" + }, + { + "begin": 12990, + "end": 13056, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12979, + "end": 12988, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12960, + "end": 13057, + "name": "PUSH [tag]", + "source": 40, + "value": "157" + }, + { + "begin": 12960, + "end": 13057, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12960, + "end": 13057, + "name": "tag", + "source": 40, + "value": "297" + }, + { + "begin": 12960, + "end": 13057, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13078, + "end": 13117, + "name": "PUSH [tag]", + "source": 40, + "value": "298" + }, + { + "begin": 13108, + "end": 13116, + "name": "DUP7", + "source": 40 + }, + { + "begin": 13097, + "end": 13106, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13078, + "end": 13117, + "name": "PUSH [tag]", + "source": 40, + "value": "157" + }, + { + "begin": 13078, + "end": 13117, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13078, + "end": 13117, + "name": "tag", + "source": 40, + "value": "298" + }, + { + "begin": 13078, + "end": 13117, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13066, + "end": 13117, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 13066, + "end": 13117, + "name": "POP", + "source": 40 + }, + { + "begin": 13150, + "end": 13154, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13146, + "end": 13155, + "name": "NOT", + "source": 40 + }, + { + "begin": 13139, + "end": 13144, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13135, + "end": 13156, + "name": "AND", + "source": 40 + }, + { + "begin": 13126, + "end": 13156, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 13126, + "end": 13156, + "name": "POP", + "source": 40 + }, + { + "begin": 13199, + "end": 13203, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13189, + "end": 13197, + "name": "DUP7", + "source": 40 + }, + { + "begin": 13185, + "end": 13204, + "name": "AND", + "source": 40 + }, + { + "begin": 13178, + "end": 13183, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13175, + "end": 13205, + "name": "OR", + "source": 40 + }, + { + "begin": 13165, + "end": 13205, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 13165, + "end": 13205, + "name": "POP", + "source": 40 + }, + { + "begin": 12894, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12894, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "tag", + "source": 40, + "value": "159" + }, + { + "begin": 13217, + "end": 13294, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13254, + "end": 13261, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13283, + "end": 13288, + "name": "DUP2", + "source": 40 + }, + { + "begin": 13272, + "end": 13288, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13272, + "end": 13288, + "name": "POP", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "POP", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "tag", + "source": 40, + "value": "160" + }, + { + "begin": 13300, + "end": 13360, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13328, + "end": 13331, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13349, + "end": 13354, + "name": "DUP2", + "source": 40 + }, + { + "begin": 13342, + "end": 13354, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13342, + "end": 13354, + "name": "POP", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "POP", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "tag", + "source": 40, + "value": "161" + }, + { + "begin": 13366, + "end": 13508, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13416, + "end": 13425, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13449, + "end": 13502, + "name": "PUSH [tag]", + "source": 40, + "value": "302" + }, + { + "begin": 13467, + "end": 13501, + "name": "PUSH [tag]", + "source": 40, + "value": "303" + }, + { + "begin": 13476, + "end": 13500, + "name": "PUSH [tag]", + "source": 40, + "value": "304" + }, + { + "begin": 13494, + "end": 13499, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13476, + "end": 13500, + "name": "PUSH [tag]", + "source": 40, + "value": "159" + }, + { + "begin": 13476, + "end": 13500, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13476, + "end": 13500, + "name": "tag", + "source": 40, + "value": "304" + }, + { + "begin": 13476, + "end": 13500, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13467, + "end": 13501, + "name": "PUSH [tag]", + "source": 40, + "value": "160" + }, + { + "begin": 13467, + "end": 13501, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13467, + "end": 13501, + "name": "tag", + "source": 40, + "value": "303" + }, + { + "begin": 13467, + "end": 13501, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13449, + "end": 13502, + "name": "PUSH [tag]", + "source": 40, + "value": "159" + }, + { + "begin": 13449, + "end": 13502, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13449, + "end": 13502, + "name": "tag", + "source": 40, + "value": "302" + }, + { + "begin": 13449, + "end": 13502, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13436, + "end": 13502, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13436, + "end": 13502, + "name": "POP", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "POP", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "tag", + "source": 40, + "value": "162" + }, + { + "begin": 13514, + "end": 13589, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13557, + "end": 13560, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13578, + "end": 13583, + "name": "DUP2", + "source": 40 + }, + { + "begin": 13571, + "end": 13583, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13571, + "end": 13583, + "name": "POP", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "POP", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "tag", + "source": 40, + "value": "163" + }, + { + "begin": 13595, + "end": 13864, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13705, + "end": 13744, + "name": "PUSH [tag]", + "source": 40, + "value": "307" + }, + { + "begin": 13736, + "end": 13743, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13705, + "end": 13744, + "name": "PUSH [tag]", + "source": 40, + "value": "161" + }, + { + "begin": 13705, + "end": 13744, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13705, + "end": 13744, + "name": "tag", + "source": 40, + "value": "307" + }, + { + "begin": 13705, + "end": 13744, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13766, + "end": 13857, + "name": "PUSH [tag]", + "source": 40, + "value": "308" + }, + { + "begin": 13815, + "end": 13856, + "name": "PUSH [tag]", + "source": 40, + "value": "309" + }, + { + "begin": 13839, + "end": 13855, + "name": "DUP3", + "source": 40 + }, + { + "begin": 13815, + "end": 13856, + "name": "PUSH [tag]", + "source": 40, + "value": "162" + }, + { + "begin": 13815, + "end": 13856, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13815, + "end": 13856, + "name": "tag", + "source": 40, + "value": "309" + }, + { + "begin": 13815, + "end": 13856, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13807, + "end": 13813, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13800, + "end": 13804, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13794, + "end": 13805, + "name": "SLOAD", + "source": 40 + }, + { + "begin": 13766, + "end": 13857, + "name": "PUSH [tag]", + "source": 40, + "value": "158" + }, + { + "begin": 13766, + "end": 13857, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13766, + "end": 13857, + "name": "tag", + "source": 40, + "value": "308" + }, + { + "begin": 13766, + "end": 13857, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13760, + "end": 13764, + "name": "DUP3", + "source": 40 + }, + { + "begin": 13753, + "end": 13858, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 13671, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13870, + "end": 13943, + "name": "tag", + "source": 40, + "value": "164" + }, + { + "begin": 13870, + "end": 13943, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13915, + "end": 13918, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13870, + "end": 13943, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13870, + "end": 13943, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "name": "tag", + "source": 40, + "value": "165" + }, + { + "begin": 13949, + "end": 14138, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14026, + "end": 14058, + "name": "PUSH [tag]", + "source": 40, + "value": "312" + }, + { + "begin": 14026, + "end": 14058, + "name": "PUSH [tag]", + "source": 40, + "value": "164" + }, + { + "begin": 14026, + "end": 14058, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14026, + "end": 14058, + "name": "tag", + "source": 40, + "value": "312" + }, + { + "begin": 14026, + "end": 14058, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14067, + "end": 14132, + "name": "PUSH [tag]", + "source": 40, + "value": "313" + }, + { + "begin": 14125, + "end": 14131, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14117, + "end": 14123, + "name": "DUP5", + "source": 40 + }, + { + "begin": 14111, + "end": 14115, + "name": "DUP5", + "source": 40 + }, + { + "begin": 14067, + "end": 14132, + "name": "PUSH [tag]", + "source": 40, + "value": "163" + }, + { + "begin": 14067, + "end": 14132, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14067, + "end": 14132, + "name": "tag", + "source": 40, + "value": "313" + }, + { + "begin": 14067, + "end": 14132, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14002, + "end": 14138, + "name": "POP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "name": "POP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "name": "POP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "name": "tag", + "source": 40, + "value": "166" + }, + { + "begin": 14144, + "end": 14330, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "tag", + "source": 40, + "value": "315" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14221, + "end": 14224, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14214, + "end": 14219, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14211, + "end": 14225, + "name": "LT", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "PUSH [tag]", + "source": 40, + "value": "317" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14275, + "end": 14314, + "name": "PUSH [tag]", + "source": 40, + "value": "318" + }, + { + "begin": 14312, + "end": 14313, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 14305, + "end": 14310, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14275, + "end": 14314, + "name": "PUSH [tag]", + "source": 40, + "value": "165" + }, + { + "begin": 14275, + "end": 14314, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14275, + "end": 14314, + "name": "tag", + "source": 40, + "value": "318" + }, + { + "begin": 14275, + "end": 14314, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14248, + "end": 14249, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 14241, + "end": 14246, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14237, + "end": 14250, + "name": "ADD", + "source": 40 + }, + { + "begin": 14228, + "end": 14250, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 14228, + "end": 14250, + "name": "POP", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "PUSH [tag]", + "source": 40, + "value": "315" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMP", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "tag", + "source": 40, + "value": "317" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "name": "POP", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "name": "POP", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "tag", + "source": 40, + "value": "167" + }, + { + "begin": 14336, + "end": 14879, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14437, + "end": 14439, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 14432, + "end": 14435, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14429, + "end": 14440, + "name": "GT", + "source": 40 + }, + { + "begin": 14426, + "end": 14872, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 14426, + "end": 14872, + "name": "PUSH [tag]", + "source": 40, + "value": "320" + }, + { + "begin": 14426, + "end": 14872, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14471, + "end": 14509, + "name": "PUSH [tag]", + "source": 40, + "value": "321" + }, + { + "begin": 14503, + "end": 14508, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14471, + "end": 14509, + "name": "PUSH [tag]", + "source": 40, + "value": "155" + }, + { + "begin": 14471, + "end": 14509, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14471, + "end": 14509, + "name": "tag", + "source": 40, + "value": "321" + }, + { + "begin": 14471, + "end": 14509, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14555, + "end": 14584, + "name": "PUSH [tag]", + "source": 40, + "value": "322" + }, + { + "begin": 14573, + "end": 14583, + "name": "DUP5", + "source": 40 + }, + { + "begin": 14555, + "end": 14584, + "name": "PUSH [tag]", + "source": 40, + "value": "156" + }, + { + "begin": 14555, + "end": 14584, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14555, + "end": 14584, + "name": "tag", + "source": 40, + "value": "322" + }, + { + "begin": 14555, + "end": 14584, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14545, + "end": 14553, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14541, + "end": 14585, + "name": "ADD", + "source": 40 + }, + { + "begin": 14738, + "end": 14740, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 14726, + "end": 14736, + "name": "DUP6", + "source": 40 + }, + { + "begin": 14723, + "end": 14741, + "name": "LT", + "source": 40 + }, + { + "begin": 14720, + "end": 14769, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 14720, + "end": 14769, + "name": "PUSH [tag]", + "source": 40, + "value": "323" + }, + { + "begin": 14720, + "end": 14769, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14759, + "end": 14767, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14744, + "end": 14767, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 14744, + "end": 14767, + "name": "POP", + "source": 40 + }, + { + "begin": 14720, + "end": 14769, + "name": "tag", + "source": 40, + "value": "323" + }, + { + "begin": 14720, + "end": 14769, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14782, + "end": 14862, + "name": "PUSH [tag]", + "source": 40, + "value": "324" + }, + { + "begin": 14838, + "end": 14860, + "name": "PUSH [tag]", + "source": 40, + "value": "325" + }, + { + "begin": 14856, + "end": 14859, + "name": "DUP6", + "source": 40 + }, + { + "begin": 14838, + "end": 14860, + "name": "PUSH [tag]", + "source": 40, + "value": "156" + }, + { + "begin": 14838, + "end": 14860, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14838, + "end": 14860, + "name": "tag", + "source": 40, + "value": "325" + }, + { + "begin": 14838, + "end": 14860, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14828, + "end": 14836, + "name": "DUP4", + "source": 40 + }, + { + "begin": 14824, + "end": 14861, + "name": "ADD", + "source": 40 + }, + { + "begin": 14811, + "end": 14822, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14782, + "end": 14862, + "name": "PUSH [tag]", + "source": 40, + "value": "166" + }, + { + "begin": 14782, + "end": 14862, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14782, + "end": 14862, + "name": "tag", + "source": 40, + "value": "324" + }, + { + "begin": 14782, + "end": 14862, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14441, + "end": 14872, + "name": "POP", + "source": 40 + }, + { + "begin": 14441, + "end": 14872, + "name": "POP", + "source": 40 + }, + { + "begin": 14426, + "end": 14872, + "name": "tag", + "source": 40, + "value": "320" + }, + { + "begin": 14426, + "end": 14872, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "POP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "POP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "POP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "tag", + "source": 40, + "value": "168" + }, + { + "begin": 14885, + "end": 15002, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14939, + "end": 14947, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 14989, + "end": 14994, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14983, + "end": 14987, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14979, + "end": 14995, + "name": "SHR", + "source": 40 + }, + { + "begin": 14958, + "end": 14995, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 14958, + "end": 14995, + "name": "POP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "POP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "POP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "tag", + "source": 40, + "value": "169" + }, + { + "begin": 15008, + "end": 15177, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15052, + "end": 15058, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15085, + "end": 15136, + "name": "PUSH [tag]", + "source": 40, + "value": "328" + }, + { + "begin": 15133, + "end": 15134, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15129, + "end": 15135, + "name": "NOT", + "source": 40 + }, + { + "begin": 15121, + "end": 15126, + "name": "DUP5", + "source": 40 + }, + { + "begin": 15118, + "end": 15119, + "name": "PUSH", + "source": 40, + "value": "8" + }, + { + "begin": 15114, + "end": 15127, + "name": "MUL", + "source": 40 + }, + { + "begin": 15085, + "end": 15136, + "name": "PUSH [tag]", + "source": 40, + "value": "168" + }, + { + "begin": 15085, + "end": 15136, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15085, + "end": 15136, + "name": "tag", + "source": 40, + "value": "328" + }, + { + "begin": 15085, + "end": 15136, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15081, + "end": 15137, + "name": "NOT", + "source": 40 + }, + { + "begin": 15166, + "end": 15170, + "name": "DUP1", + "source": 40 + }, + { + "begin": 15160, + "end": 15164, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15156, + "end": 15171, + "name": "AND", + "source": 40 + }, + { + "begin": 15146, + "end": 15171, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15146, + "end": 15171, + "name": "POP", + "source": 40 + }, + { + "begin": 15059, + "end": 15177, + "name": "POP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "POP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "POP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "tag", + "source": 40, + "value": "170" + }, + { + "begin": 15182, + "end": 15477, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15258, + "end": 15262, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15404, + "end": 15433, + "name": "PUSH [tag]", + "source": 40, + "value": "330" + }, + { + "begin": 15429, + "end": 15432, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15423, + "end": 15427, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15404, + "end": 15433, + "name": "PUSH [tag]", + "source": 40, + "value": "169" + }, + { + "begin": 15404, + "end": 15433, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15404, + "end": 15433, + "name": "tag", + "source": 40, + "value": "330" + }, + { + "begin": 15404, + "end": 15433, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15396, + "end": 15433, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15396, + "end": 15433, + "name": "POP", + "source": 40 + }, + { + "begin": 15466, + "end": 15469, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15463, + "end": 15464, + "name": "PUSH", + "source": 40, + "value": "2" + }, + { + "begin": 15459, + "end": 15470, + "name": "MUL", + "source": 40 + }, + { + "begin": 15453, + "end": 15457, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15450, + "end": 15471, + "name": "OR", + "source": 40 + }, + { + "begin": 15442, + "end": 15471, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 15442, + "end": 15471, + "name": "POP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "POP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "POP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "name": "tag", + "source": 40, + "value": "41" + }, + { + "begin": 15482, + "end": 16877, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15599, + "end": 15636, + "name": "PUSH [tag]", + "source": 40, + "value": "332" + }, + { + "begin": 15632, + "end": 15635, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15599, + "end": 15636, + "name": "PUSH [tag]", + "source": 40, + "value": "149" + }, + { + "begin": 15599, + "end": 15636, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15599, + "end": 15636, + "name": "tag", + "source": 40, + "value": "332" + }, + { + "begin": 15599, + "end": 15636, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15701, + "end": 15719, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 15693, + "end": 15699, + "name": "DUP2", + "source": 40 + }, + { + "begin": 15690, + "end": 15720, + "name": "GT", + "source": 40 + }, + { + "begin": 15687, + "end": 15743, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 15687, + "end": 15743, + "name": "PUSH [tag]", + "source": 40, + "value": "333" + }, + { + "begin": 15687, + "end": 15743, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 15723, + "end": 15741, + "name": "PUSH [tag]", + "source": 40, + "value": "334" + }, + { + "begin": 15723, + "end": 15741, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 15723, + "end": 15741, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15723, + "end": 15741, + "name": "tag", + "source": 40, + "value": "334" + }, + { + "begin": 15723, + "end": 15741, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15687, + "end": 15743, + "name": "tag", + "source": 40, + "value": "333" + }, + { + "begin": 15687, + "end": 15743, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15767, + "end": 15805, + "name": "PUSH [tag]", + "source": 40, + "value": "335" + }, + { + "begin": 15799, + "end": 15803, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15793, + "end": 15804, + "name": "SLOAD", + "source": 40 + }, + { + "begin": 15767, + "end": 15805, + "name": "PUSH [tag]", + "source": 40, + "value": "154" + }, + { + "begin": 15767, + "end": 15805, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15767, + "end": 15805, + "name": "tag", + "source": 40, + "value": "335" + }, + { + "begin": 15767, + "end": 15805, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15852, + "end": 15919, + "name": "PUSH [tag]", + "source": 40, + "value": "336" + }, + { + "begin": 15912, + "end": 15918, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15904, + "end": 15910, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15898, + "end": 15902, + "name": "DUP6", + "source": 40 + }, + { + "begin": 15852, + "end": 15919, + "name": "PUSH [tag]", + "source": 40, + "value": "167" + }, + { + "begin": 15852, + "end": 15919, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15852, + "end": 15919, + "name": "tag", + "source": 40, + "value": "336" + }, + { + "begin": 15852, + "end": 15919, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15946, + "end": 15947, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15970, + "end": 15974, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 15957, + "end": 15974, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 15957, + "end": 15974, + "name": "POP", + "source": 40 + }, + { + "begin": 16002, + "end": 16004, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 15994, + "end": 16000, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15991, + "end": 16005, + "name": "GT", + "source": 40 + }, + { + "begin": 16019, + "end": 16020, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 16014, + "end": 16632, + "name": "DUP2", + "source": 40 + }, + { + "begin": 16014, + "end": 16632, + "name": "EQ", + "source": 40 + }, + { + "begin": 16014, + "end": 16632, + "name": "PUSH [tag]", + "source": 40, + "value": "338" + }, + { + "begin": 16014, + "end": 16632, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16676, + "end": 16677, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16693, + "end": 16699, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16690, + "end": 16767, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 16690, + "end": 16767, + "name": "PUSH [tag]", + "source": 40, + "value": "339" + }, + { + "begin": 16690, + "end": 16767, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16742, + "end": 16751, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16737, + "end": 16740, + "name": "DUP8", + "source": 40 + }, + { + "begin": 16733, + "end": 16752, + "name": "ADD", + "source": 40 + }, + { + "begin": 16727, + "end": 16753, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 16718, + "end": 16753, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 16718, + "end": 16753, + "name": "POP", + "source": 40 + }, + { + "begin": 16690, + "end": 16767, + "name": "tag", + "source": 40, + "value": "339" + }, + { + "begin": 16690, + "end": 16767, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16793, + "end": 16860, + "name": "PUSH [tag]", + "source": 40, + "value": "340" + }, + { + "begin": 16853, + "end": 16859, + "name": "DUP6", + "source": 40 + }, + { + "begin": 16846, + "end": 16851, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16793, + "end": 16860, + "name": "PUSH [tag]", + "source": 40, + "value": "170" + }, + { + "begin": 16793, + "end": 16860, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16793, + "end": 16860, + "name": "tag", + "source": 40, + "value": "340" + }, + { + "begin": 16793, + "end": 16860, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16787, + "end": 16791, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16780, + "end": 16861, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16649, + "end": 16871, + "name": "POP", + "source": 40 + }, + { + "begin": 15984, + "end": 16871, + "name": "PUSH [tag]", + "source": 40, + "value": "337" + }, + { + "begin": 15984, + "end": 16871, + "name": "JUMP", + "source": 40 + }, + { + "begin": 16014, + "end": 16632, + "name": "tag", + "source": 40, + "value": "338" + }, + { + "begin": 16014, + "end": 16632, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16066, + "end": 16070, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 16062, + "end": 16071, + "name": "NOT", + "source": 40 + }, + { + "begin": 16054, + "end": 16060, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16050, + "end": 16072, + "name": "AND", + "source": 40 + }, + { + "begin": 16100, + "end": 16137, + "name": "PUSH [tag]", + "source": 40, + "value": "341" + }, + { + "begin": 16132, + "end": 16136, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16100, + "end": 16137, + "name": "PUSH [tag]", + "source": 40, + "value": "155" + }, + { + "begin": 16100, + "end": 16137, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16100, + "end": 16137, + "name": "tag", + "source": 40, + "value": "341" + }, + { + "begin": 16100, + "end": 16137, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16159, + "end": 16160, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16173, + "end": 16381, + "name": "tag", + "source": 40, + "value": "342" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16187, + "end": 16194, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16184, + "end": 16185, + "name": "DUP2", + "source": 40 + }, + { + "begin": 16181, + "end": 16195, + "name": "LT", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "PUSH [tag]", + "source": 40, + "value": "344" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16266, + "end": 16275, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16261, + "end": 16264, + "name": "DUP10", + "source": 40 + }, + { + "begin": 16257, + "end": 16276, + "name": "ADD", + "source": 40 + }, + { + "begin": 16251, + "end": 16277, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 16243, + "end": 16249, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16236, + "end": 16278, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16317, + "end": 16318, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 16309, + "end": 16315, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16305, + "end": 16319, + "name": "ADD", + "source": 40 + }, + { + "begin": 16295, + "end": 16319, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 16295, + "end": 16319, + "name": "POP", + "source": 40 + }, + { + "begin": 16364, + "end": 16366, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 16353, + "end": 16362, + "name": "DUP6", + "source": 40 + }, + { + "begin": 16349, + "end": 16367, + "name": "ADD", + "source": 40 + }, + { + "begin": 16336, + "end": 16367, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 16336, + "end": 16367, + "name": "POP", + "source": 40 + }, + { + "begin": 16210, + "end": 16214, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 16207, + "end": 16208, + "name": "DUP2", + "source": 40 + }, + { + "begin": 16203, + "end": 16215, + "name": "ADD", + "source": 40 + }, + { + "begin": 16198, + "end": 16215, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 16198, + "end": 16215, + "name": "POP", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "PUSH [tag]", + "source": 40, + "value": "342" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMP", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "tag", + "source": 40, + "value": "344" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16409, + "end": 16415, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16400, + "end": 16407, + "name": "DUP4", + "source": 40 + }, + { + "begin": 16397, + "end": 16416, + "name": "LT", + "source": 40 + }, + { + "begin": 16394, + "end": 16573, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 16394, + "end": 16573, + "name": "PUSH [tag]", + "source": 40, + "value": "345" + }, + { + "begin": 16394, + "end": 16573, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16467, + "end": 16476, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16462, + "end": 16465, + "name": "DUP10", + "source": 40 + }, + { + "begin": 16458, + "end": 16477, + "name": "ADD", + "source": 40 + }, + { + "begin": 16452, + "end": 16478, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 16510, + "end": 16558, + "name": "PUSH [tag]", + "source": 40, + "value": "346" + }, + { + "begin": 16552, + "end": 16556, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 16544, + "end": 16550, + "name": "DUP10", + "source": 40 + }, + { + "begin": 16540, + "end": 16557, + "name": "AND", + "source": 40 + }, + { + "begin": 16529, + "end": 16538, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16510, + "end": 16558, + "name": "PUSH [tag]", + "source": 40, + "value": "169" + }, + { + "begin": 16510, + "end": 16558, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16510, + "end": 16558, + "name": "tag", + "source": 40, + "value": "346" + }, + { + "begin": 16510, + "end": 16558, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16502, + "end": 16508, + "name": "DUP4", + "source": 40 + }, + { + "begin": 16495, + "end": 16559, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16417, + "end": 16573, + "name": "POP", + "source": 40 + }, + { + "begin": 16394, + "end": 16573, + "name": "tag", + "source": 40, + "value": "345" + }, + { + "begin": 16394, + "end": 16573, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16619, + "end": 16620, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 16615, + "end": 16616, + "name": "PUSH", + "source": 40, + "value": "2" + }, + { + "begin": 16607, + "end": 16613, + "name": "DUP9", + "source": 40 + }, + { + "begin": 16603, + "end": 16617, + "name": "MUL", + "source": 40 + }, + { + "begin": 16599, + "end": 16621, + "name": "ADD", + "source": 40 + }, + { + "begin": 16593, + "end": 16597, + "name": "DUP9", + "source": 40 + }, + { + "begin": 16586, + "end": 16622, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16021, + "end": 16632, + "name": "POP", + "source": 40 + }, + { + "begin": 16021, + "end": 16632, + "name": "POP", + "source": 40 + }, + { + "begin": 16021, + "end": 16632, + "name": "POP", + "source": 40 + }, + { + "begin": 15984, + "end": 16871, + "name": "tag", + "source": 40, + "value": "337" + }, + { + "begin": 15984, + "end": 16871, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15984, + "end": 16871, + "name": "POP", + "source": 40 + }, + { + "begin": 15574, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15574, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15574, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16883, + "end": 17082, + "name": "tag", + "source": 40, + "value": "171" + }, + { + "begin": 16883, + "end": 17082, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17052, + "end": 17075, + "name": "PUSH", + "source": 40, + "value": "4C697175696469747920426F6F6B20546F6B656E200000000000000000000000" + }, + { + "begin": 17047, + "end": 17050, + "name": "DUP2", + "source": 40 + }, + { + "begin": 17040, + "end": 17076, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 16883, + "end": 17082, + "name": "POP", + "source": 40 + }, + { + "begin": 16883, + "end": 17082, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "tag", + "source": 40, + "value": "43" + }, + { + "begin": 17088, + "end": 18478, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17587, + "end": 17590, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 17602, + "end": 17740, + "name": "PUSH [tag]", + "source": 40, + "value": "349" + }, + { + "begin": 17736, + "end": 17739, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17602, + "end": 17740, + "name": "PUSH [tag]", + "source": 40, + "value": "171" + }, + { + "begin": 17602, + "end": 17740, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17602, + "end": 17740, + "name": "tag", + "source": 40, + "value": "349" + }, + { + "begin": 17602, + "end": 17740, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17765, + "end": 17767, + "name": "PUSH", + "source": 40, + "value": "15" + }, + { + "begin": 17760, + "end": 17763, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17756, + "end": 17768, + "name": "ADD", + "source": 40 + }, + { + "begin": 17749, + "end": 17768, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 17749, + "end": 17768, + "name": "POP", + "source": 40 + }, + { + "begin": 17785, + "end": 17880, + "name": "PUSH [tag]", + "source": 40, + "value": "350" + }, + { + "begin": 17876, + "end": 17879, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17867, + "end": 17873, + "name": "DUP7", + "source": 40 + }, + { + "begin": 17785, + "end": 17880, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 17785, + "end": 17880, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17785, + "end": 17880, + "name": "tag", + "source": 40, + "value": "350" + }, + { + "begin": 17785, + "end": 17880, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17778, + "end": 17880, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 17778, + "end": 17880, + "name": "POP", + "source": 40 + }, + { + "begin": 17890, + "end": 18027, + "name": "PUSH [tag]", + "source": 40, + "value": "351" + }, + { + "begin": 18023, + "end": 18026, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17890, + "end": 18027, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 17890, + "end": 18027, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17890, + "end": 18027, + "name": "tag", + "source": 40, + "value": "351" + }, + { + "begin": 17890, + "end": 18027, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18052, + "end": 18053, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 18047, + "end": 18050, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18043, + "end": 18054, + "name": "ADD", + "source": 40 + }, + { + "begin": 18036, + "end": 18054, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18036, + "end": 18054, + "name": "POP", + "source": 40 + }, + { + "begin": 18071, + "end": 18166, + "name": "PUSH [tag]", + "source": 40, + "value": "352" + }, + { + "begin": 18162, + "end": 18165, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18153, + "end": 18159, + "name": "DUP6", + "source": 40 + }, + { + "begin": 18071, + "end": 18166, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 18071, + "end": 18166, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18071, + "end": 18166, + "name": "tag", + "source": 40, + "value": "352" + }, + { + "begin": 18071, + "end": 18166, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18064, + "end": 18166, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18064, + "end": 18166, + "name": "POP", + "source": 40 + }, + { + "begin": 18176, + "end": 18313, + "name": "PUSH [tag]", + "source": 40, + "value": "353" + }, + { + "begin": 18309, + "end": 18312, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18176, + "end": 18313, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 18176, + "end": 18313, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18176, + "end": 18313, + "name": "tag", + "source": 40, + "value": "353" + }, + { + "begin": 18176, + "end": 18313, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18338, + "end": 18339, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 18333, + "end": 18336, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18329, + "end": 18340, + "name": "ADD", + "source": 40 + }, + { + "begin": 18322, + "end": 18340, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18322, + "end": 18340, + "name": "POP", + "source": 40 + }, + { + "begin": 18357, + "end": 18452, + "name": "PUSH [tag]", + "source": 40, + "value": "354" + }, + { + "begin": 18448, + "end": 18451, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18439, + "end": 18445, + "name": "DUP5", + "source": 40 + }, + { + "begin": 18357, + "end": 18452, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 18357, + "end": 18452, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18357, + "end": 18452, + "name": "tag", + "source": 40, + "value": "354" + }, + { + "begin": 18357, + "end": 18452, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18350, + "end": 18452, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18350, + "end": 18452, + "name": "POP", + "source": 40 + }, + { + "begin": 18469, + "end": 18472, + "name": "DUP2", + "source": 40 + }, + { + "begin": 18462, + "end": 18472, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 18462, + "end": 18472, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "tag", + "source": 40, + "value": "56" + }, + { + "begin": 18484, + "end": 18835, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18554, + "end": 18560, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18603, + "end": 18605, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 18591, + "end": 18600, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18582, + "end": 18589, + "name": "DUP5", + "source": 40 + }, + { + "begin": 18578, + "end": 18601, + "name": "SUB", + "source": 40 + }, + { + "begin": 18574, + "end": 18606, + "name": "SLT", + "source": 40 + }, + { + "begin": 18571, + "end": 18690, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 18571, + "end": 18690, + "name": "PUSH [tag]", + "source": 40, + "value": "356" + }, + { + "begin": 18571, + "end": 18690, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 18609, + "end": 18688, + "name": "PUSH [tag]", + "source": 40, + "value": "357" + }, + { + "begin": 18609, + "end": 18688, + "name": "PUSH [tag]", + "source": 40, + "value": "119" + }, + { + "begin": 18609, + "end": 18688, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18609, + "end": 18688, + "name": "tag", + "source": 40, + "value": "357" + }, + { + "begin": 18609, + "end": 18688, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18571, + "end": 18690, + "name": "tag", + "source": 40, + "value": "356" + }, + { + "begin": 18571, + "end": 18690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18729, + "end": 18730, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18754, + "end": 18818, + "name": "PUSH [tag]", + "source": 40, + "value": "358" + }, + { + "begin": 18810, + "end": 18817, + "name": "DUP5", + "source": 40 + }, + { + "begin": 18801, + "end": 18807, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18790, + "end": 18799, + "name": "DUP6", + "source": 40 + }, + { + "begin": 18786, + "end": 18808, + "name": "ADD", + "source": 40 + }, + { + "begin": 18754, + "end": 18818, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 18754, + "end": 18818, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18754, + "end": 18818, + "name": "tag", + "source": 40, + "value": "358" + }, + { + "begin": 18754, + "end": 18818, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18744, + "end": 18818, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18744, + "end": 18818, + "name": "POP", + "source": 40 + }, + { + "begin": 18700, + "end": 18828, + "name": "POP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "POP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "POP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18841, + "end": 19021, + "name": "tag", + "source": 40, + "value": "172" + }, + { + "begin": 18841, + "end": 19021, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18889, + "end": 18966, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 18886, + "end": 18887, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18879, + "end": 18967, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 18986, + "end": 18990, + "name": "PUSH", + "source": 40, + "value": "11" + }, + { + "begin": 18983, + "end": 18984, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 18976, + "end": 18991, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19010, + "end": 19014, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 19007, + "end": 19008, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19000, + "end": 19015, + "name": "REVERT", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "tag", + "source": 40, + "value": "68" + }, + { + "begin": 19027, + "end": 19198, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19065, + "end": 19068, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19088, + "end": 19111, + "name": "PUSH [tag]", + "source": 40, + "value": "361" + }, + { + "begin": 19105, + "end": 19110, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19088, + "end": 19111, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19088, + "end": 19111, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19088, + "end": 19111, + "name": "tag", + "source": 40, + "value": "361" + }, + { + "begin": 19088, + "end": 19111, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19079, + "end": 19111, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19079, + "end": 19111, + "name": "POP", + "source": 40 + }, + { + "begin": 19133, + "end": 19139, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 19126, + "end": 19131, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19123, + "end": 19140, + "name": "SUB", + "source": 40 + }, + { + "begin": 19120, + "end": 19163, + "name": "PUSH [tag]", + "source": 40, + "value": "362" + }, + { + "begin": 19120, + "end": 19163, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19143, + "end": 19161, + "name": "PUSH [tag]", + "source": 40, + "value": "363" + }, + { + "begin": 19143, + "end": 19161, + "name": "PUSH [tag]", + "source": 40, + "value": "172" + }, + { + "begin": 19143, + "end": 19161, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19143, + "end": 19161, + "name": "tag", + "source": 40, + "value": "363" + }, + { + "begin": 19143, + "end": 19161, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19120, + "end": 19163, + "name": "tag", + "source": 40, + "value": "362" + }, + { + "begin": 19120, + "end": 19163, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19190, + "end": 19191, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 19183, + "end": 19188, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19179, + "end": 19192, + "name": "ADD", + "source": 40 + }, + { + "begin": 19172, + "end": 19192, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19172, + "end": 19192, + "name": "POP", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "POP", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19204, + "end": 19384, + "name": "tag", + "source": 40, + "value": "173" + }, + { + "begin": 19204, + "end": 19384, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19252, + "end": 19329, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 19249, + "end": 19250, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19242, + "end": 19330, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19349, + "end": 19353, + "name": "PUSH", + "source": 40, + "value": "12" + }, + { + "begin": 19346, + "end": 19347, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 19339, + "end": 19354, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19373, + "end": 19377, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 19370, + "end": 19371, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19363, + "end": 19378, + "name": "REVERT", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "tag", + "source": 40, + "value": "70" + }, + { + "begin": 19390, + "end": 19572, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19429, + "end": 19430, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19446, + "end": 19465, + "name": "PUSH [tag]", + "source": 40, + "value": "366" + }, + { + "begin": 19463, + "end": 19464, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19446, + "end": 19465, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19446, + "end": 19465, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19446, + "end": 19465, + "name": "tag", + "source": 40, + "value": "366" + }, + { + "begin": 19446, + "end": 19465, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19441, + "end": 19465, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19441, + "end": 19465, + "name": "POP", + "source": 40 + }, + { + "begin": 19479, + "end": 19498, + "name": "PUSH [tag]", + "source": 40, + "value": "367" + }, + { + "begin": 19496, + "end": 19497, + "name": "DUP4", + "source": 40 + }, + { + "begin": 19479, + "end": 19498, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19479, + "end": 19498, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19479, + "end": 19498, + "name": "tag", + "source": 40, + "value": "367" + }, + { + "begin": 19479, + "end": 19498, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19474, + "end": 19498, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19474, + "end": 19498, + "name": "POP", + "source": 40 + }, + { + "begin": 19517, + "end": 19518, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19507, + "end": 19542, + "name": "PUSH [tag]", + "source": 40, + "value": "368" + }, + { + "begin": 19507, + "end": 19542, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19522, + "end": 19540, + "name": "PUSH [tag]", + "source": 40, + "value": "369" + }, + { + "begin": 19522, + "end": 19540, + "name": "PUSH [tag]", + "source": 40, + "value": "173" + }, + { + "begin": 19522, + "end": 19540, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19522, + "end": 19540, + "name": "tag", + "source": 40, + "value": "369" + }, + { + "begin": 19522, + "end": 19540, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19507, + "end": 19542, + "name": "tag", + "source": 40, + "value": "368" + }, + { + "begin": 19507, + "end": 19542, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19564, + "end": 19565, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19561, + "end": 19562, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19557, + "end": 19566, + "name": "DIV", + "source": 40 + }, + { + "begin": 19552, + "end": 19566, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19552, + "end": 19566, + "name": "POP", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "POP", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "POP", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "tag", + "source": 40, + "value": "78" + }, + { + "begin": 19578, + "end": 19774, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19617, + "end": 19621, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19637, + "end": 19656, + "name": "PUSH [tag]", + "source": 40, + "value": "371" + }, + { + "begin": 19654, + "end": 19655, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19637, + "end": 19656, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19637, + "end": 19656, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19637, + "end": 19656, + "name": "tag", + "source": 40, + "value": "371" + }, + { + "begin": 19637, + "end": 19656, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19632, + "end": 19656, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19632, + "end": 19656, + "name": "POP", + "source": 40 + }, + { + "begin": 19670, + "end": 19689, + "name": "PUSH [tag]", + "source": 40, + "value": "372" + }, + { + "begin": 19687, + "end": 19688, + "name": "DUP4", + "source": 40 + }, + { + "begin": 19670, + "end": 19689, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19670, + "end": 19689, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19670, + "end": 19689, + "name": "tag", + "source": 40, + "value": "372" + }, + { + "begin": 19670, + "end": 19689, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19665, + "end": 19689, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19665, + "end": 19689, + "name": "POP", + "source": 40 + }, + { + "begin": 19713, + "end": 19714, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19710, + "end": 19711, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19706, + "end": 19715, + "name": "SUB", + "source": 40 + }, + { + "begin": 19698, + "end": 19715, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19698, + "end": 19715, + "name": "POP", + "source": 40 + }, + { + "begin": 19737, + "end": 19743, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 19731, + "end": 19735, + "name": "DUP2", + "source": 40 + }, + { + "begin": 19728, + "end": 19744, + "name": "GT", + "source": 40 + }, + { + "begin": 19725, + "end": 19767, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 19725, + "end": 19767, + "name": "PUSH [tag]", + "source": 40, + "value": "373" + }, + { + "begin": 19725, + "end": 19767, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19747, + "end": 19765, + "name": "PUSH [tag]", + "source": 40, + "value": "374" + }, + { + "begin": 19747, + "end": 19765, + "name": "PUSH [tag]", + "source": 40, + "value": "172" + }, + { + "begin": 19747, + "end": 19765, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19747, + "end": 19765, + "name": "tag", + "source": 40, + "value": "374" + }, + { + "begin": 19747, + "end": 19765, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19725, + "end": 19767, + "name": "tag", + "source": 40, + "value": "373" + }, + { + "begin": 19725, + "end": 19767, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "POP", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "POP", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "tag", + "source": 40, + "value": "80" + }, + { + "begin": 19780, + "end": 19953, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19811, + "end": 19812, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19828, + "end": 19847, + "name": "PUSH [tag]", + "source": 40, + "value": "376" + }, + { + "begin": 19845, + "end": 19846, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19828, + "end": 19847, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19828, + "end": 19847, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19828, + "end": 19847, + "name": "tag", + "source": 40, + "value": "376" + }, + { + "begin": 19828, + "end": 19847, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19823, + "end": 19847, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19823, + "end": 19847, + "name": "POP", + "source": 40 + }, + { + "begin": 19861, + "end": 19880, + "name": "PUSH [tag]", + "source": 40, + "value": "377" + }, + { + "begin": 19878, + "end": 19879, + "name": "DUP4", + "source": 40 + }, + { + "begin": 19861, + "end": 19880, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19861, + "end": 19880, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19861, + "end": 19880, + "name": "tag", + "source": 40, + "value": "377" + }, + { + "begin": 19861, + "end": 19880, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19856, + "end": 19880, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19856, + "end": 19880, + "name": "POP", + "source": 40 + }, + { + "begin": 19899, + "end": 19900, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19889, + "end": 19924, + "name": "PUSH [tag]", + "source": 40, + "value": "378" + }, + { + "begin": 19889, + "end": 19924, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19904, + "end": 19922, + "name": "PUSH [tag]", + "source": 40, + "value": "379" + }, + { + "begin": 19904, + "end": 19922, + "name": "PUSH [tag]", + "source": 40, + "value": "173" + }, + { + "begin": 19904, + "end": 19922, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19904, + "end": 19922, + "name": "tag", + "source": 40, + "value": "379" + }, + { + "begin": 19904, + "end": 19922, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19889, + "end": 19924, + "name": "tag", + "source": 40, + "value": "378" + }, + { + "begin": 19889, + "end": 19924, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19945, + "end": 19946, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19942, + "end": 19943, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19938, + "end": 19947, + "name": "MOD", + "source": 40 + }, + { + "begin": 19933, + "end": 19947, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19933, + "end": 19947, + "name": "POP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "POP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "POP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "tag", + "source": 40, + "value": "82" + }, + { + "begin": 19959, + "end": 20152, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19998, + "end": 20001, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20017, + "end": 20036, + "name": "PUSH [tag]", + "source": 40, + "value": "381" + }, + { + "begin": 20034, + "end": 20035, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20017, + "end": 20036, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 20017, + "end": 20036, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20017, + "end": 20036, + "name": "tag", + "source": 40, + "value": "381" + }, + { + "begin": 20017, + "end": 20036, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20012, + "end": 20036, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 20012, + "end": 20036, + "name": "POP", + "source": 40 + }, + { + "begin": 20050, + "end": 20069, + "name": "PUSH [tag]", + "source": 40, + "value": "382" + }, + { + "begin": 20067, + "end": 20068, + "name": "DUP4", + "source": 40 + }, + { + "begin": 20050, + "end": 20069, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 20050, + "end": 20069, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20050, + "end": 20069, + "name": "tag", + "source": 40, + "value": "382" + }, + { + "begin": 20050, + "end": 20069, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20045, + "end": 20069, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 20045, + "end": 20069, + "name": "POP", + "source": 40 + }, + { + "begin": 20092, + "end": 20093, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20089, + "end": 20090, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20085, + "end": 20094, + "name": "ADD", + "source": 40 + }, + { + "begin": 20078, + "end": 20094, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 20078, + "end": 20094, + "name": "POP", + "source": 40 + }, + { + "begin": 20115, + "end": 20121, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 20110, + "end": 20113, + "name": "DUP2", + "source": 40 + }, + { + "begin": 20107, + "end": 20122, + "name": "GT", + "source": 40 + }, + { + "begin": 20104, + "end": 20145, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 20104, + "end": 20145, + "name": "PUSH [tag]", + "source": 40, + "value": "383" + }, + { + "begin": 20104, + "end": 20145, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 20125, + "end": 20143, + "name": "PUSH [tag]", + "source": 40, + "value": "384" + }, + { + "begin": 20125, + "end": 20143, + "name": "PUSH [tag]", + "source": 40, + "value": "172" + }, + { + "begin": 20125, + "end": 20143, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20125, + "end": 20143, + "name": "tag", + "source": 40, + "value": "384" + }, + { + "begin": 20125, + "end": 20143, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20104, + "end": 20145, + "name": "tag", + "source": 40, + "value": "383" + }, + { + "begin": 20104, + "end": 20145, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "POP", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "POP", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20158, + "end": 20338, + "name": "tag", + "source": 40, + "value": "85" + }, + { + "begin": 20158, + "end": 20338, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20206, + "end": 20283, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 20203, + "end": 20204, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20196, + "end": 20284, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 20303, + "end": 20307, + "name": "PUSH", + "source": 40, + "value": "32" + }, + { + "begin": 20300, + "end": 20301, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 20293, + "end": 20308, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 20327, + "end": 20331, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 20324, + "end": 20325, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20317, + "end": 20332, + "name": "REVERT", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "name": "tag", + "source": 40, + "value": "174" + }, + { + "begin": 20344, + "end": 20462, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20431, + "end": 20455, + "name": "PUSH [tag]", + "source": 40, + "value": "387" + }, + { + "begin": 20449, + "end": 20454, + "name": "DUP2", + "source": 40 + }, + { + "begin": 20431, + "end": 20455, + "name": "PUSH [tag]", + "source": 40, + "value": "122" + }, + { + "begin": 20431, + "end": 20455, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20431, + "end": 20455, + "name": "tag", + "source": 40, + "value": "387" + }, + { + "begin": 20431, + "end": 20455, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20426, + "end": 20429, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20419, + "end": 20456, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "name": "POP", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "name": "POP", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "tag", + "source": 40, + "value": "91" + }, + { + "begin": 20468, + "end": 20690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20561, + "end": 20565, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20599, + "end": 20601, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 20588, + "end": 20597, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20584, + "end": 20602, + "name": "ADD", + "source": 40 + }, + { + "begin": 20576, + "end": 20602, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 20576, + "end": 20602, + "name": "POP", + "source": 40 + }, + { + "begin": 20612, + "end": 20683, + "name": "PUSH [tag]", + "source": 40, + "value": "389" + }, + { + "begin": 20680, + "end": 20681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20669, + "end": 20678, + "name": "DUP4", + "source": 40 + }, + { + "begin": 20665, + "end": 20682, + "name": "ADD", + "source": 40 + }, + { + "begin": 20656, + "end": 20662, + "name": "DUP5", + "source": 40 + }, + { + "begin": 20612, + "end": 20683, + "name": "PUSH [tag]", + "source": 40, + "value": "174" + }, + { + "begin": 20612, + "end": 20683, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20612, + "end": 20683, + "name": "tag", + "source": 40, + "value": "389" + }, + { + "begin": 20612, + "end": 20683, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "POP", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "POP", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 611, + "end": 2330, + "name": "tag", + "source": 22, + "value": "47" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "80" + }, + { + "begin": 611, + "end": 2330, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH #[$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "CODECOPY", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "ASSIGNIMMUTABLE", + "source": 22, + "value": "1617" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH #[$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "RETURN", + "source": 22 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033", + ".code": [ + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "80" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 611, + "end": 2330, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "4" + }, + { + "begin": 611, + "end": 2330, + "name": "CALLDATASIZE", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "LT", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "1" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "CALLDATALOAD", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "E0" + }, + { + "begin": 611, + "end": 2330, + "name": "SHR", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "DUP1", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "A0A0EA39" + }, + { + "begin": 611, + "end": 2330, + "name": "EQ", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "3" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "2" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMP", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "tag", + "source": 22, + "value": "1" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "CALLDATASIZE", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "2" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "STOP", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "tag", + "source": 22, + "value": "2" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2649, + "end": 2660, + "name": "PUSH [tag]", + "source": 9, + "value": "8" + }, + { + "begin": 2649, + "end": 2658, + "name": "PUSH [tag]", + "source": 9, + "value": "9" + }, + { + "begin": 2649, + "end": 2660, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2649, + "end": 2660, + "name": "tag", + "source": 9, + "value": "8" + }, + { + "begin": 2649, + "end": 2660, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 611, + "end": 2330, + "name": "STOP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "3" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "CALLVALUE", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "DUP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "10" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2233, + "end": 2328, + "name": "DUP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "REVERT", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "10" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "POP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "11" + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "12" + }, + { + "begin": 2233, + "end": 2328, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "11" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2233, + "end": 2328, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "13" + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "14" + }, + { + "begin": 2233, + "end": 2328, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "13" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2233, + "end": 2328, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "DUP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SUB", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "RETURN", + "source": 22 + }, + { + "begin": 2323, + "end": 2406, + "name": "tag", + "source": 9, + "value": "9" + }, + { + "begin": 2323, + "end": 2406, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2371, + "end": 2399, + "name": "PUSH [tag]", + "source": 9, + "value": "16" + }, + { + "begin": 2381, + "end": 2398, + "name": "PUSH [tag]", + "source": 9, + "value": "17" + }, + { + "begin": 2381, + "end": 2396, + "name": "PUSH [tag]", + "source": 9, + "value": "18" + }, + { + "begin": 2381, + "end": 2398, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2381, + "end": 2398, + "name": "tag", + "source": 9, + "value": "17" + }, + { + "begin": 2381, + "end": 2398, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2371, + "end": 2380, + "name": "PUSH [tag]", + "source": 9, + "value": "19" + }, + { + "begin": 2371, + "end": 2399, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2371, + "end": 2399, + "name": "tag", + "source": 9, + "value": "16" + }, + { + "begin": 2371, + "end": 2399, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2323, + "end": 2406, + "jumpType": "[out]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "12" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2283, + "end": 2290, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2309, + "end": 2321, + "name": "PUSH [tag]", + "source": 22, + "value": "21" + }, + { + "begin": 2309, + "end": 2319, + "name": "PUSH [tag]", + "source": 22, + "value": "22" + }, + { + "begin": 2309, + "end": 2321, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2309, + "end": 2321, + "name": "tag", + "source": 22, + "value": "21" + }, + { + "begin": 2309, + "end": 2321, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2302, + "end": 2321, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2302, + "end": 2321, + "name": "POP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "jumpType": "[out]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2023, + "end": 2161, + "name": "tag", + "source": 10, + "value": "18" + }, + { + "begin": 2023, + "end": 2161, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2090, + "end": 2097, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2124, + "end": 2136, + "name": "PUSH [tag]", + "source": 10, + "value": "24" + }, + { + "begin": 2124, + "end": 2134, + "name": "PUSH [tag]", + "source": 10, + "value": "22" + }, + { + "begin": 2124, + "end": 2136, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 2124, + "end": 2136, + "name": "tag", + "source": 10, + "value": "24" + }, + { + "begin": 2124, + "end": 2136, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2116, + "end": 2152, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2116, + "end": 2152, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2152, + "name": "PUSH", + "source": 10, + "value": "5C60DA1B" + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFF" + }, + { + "begin": 2116, + "end": 2154, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "E0" + }, + { + "begin": 2116, + "end": 2154, + "name": "SHL", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "4" + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP4", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SUB", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP7", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "GAS", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "STATICCALL", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ISZERO", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ISZERO", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "26" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPI", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATACOPY", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2116, + "end": 2154, + "name": "REVERT", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "tag", + "source": 10, + "value": "26" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "1F" + }, + { + "begin": 2116, + "end": 2154, + "name": "NOT", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "1F" + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP3", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP3", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "27" + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "28" + }, + { + "begin": 2116, + "end": 2154, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "tag", + "source": 10, + "value": "27" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2109, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2109, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2023, + "end": 2161, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2023, + "end": 2161, + "jumpType": "[out]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 949, + "end": 1844, + "name": "tag", + "source": 9, + "value": "19" + }, + { + "begin": 949, + "end": 1844, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 1287, + "end": 1301, + "name": "CALLDATASIZE", + "source": 9 + }, + { + "begin": 1284, + "end": 1285, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1281, + "end": 1282, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1268, + "end": 1302, + "name": "CALLDATACOPY", + "source": 9 + }, + { + "begin": 1501, + "end": 1502, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1498, + "end": 1499, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1482, + "end": 1496, + "name": "CALLDATASIZE", + "source": 9 + }, + { + "begin": 1479, + "end": 1480, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1463, + "end": 1477, + "name": "DUP5", + "source": 9 + }, + { + "begin": 1456, + "end": 1461, + "name": "GAS", + "source": 9 + }, + { + "begin": 1443, + "end": 1503, + "name": "DELEGATECALL", + "source": 9 + }, + { + "begin": 1577, + "end": 1593, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1574, + "end": 1575, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1571, + "end": 1572, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1556, + "end": 1594, + "name": "RETURNDATACOPY", + "source": 9 + }, + { + "begin": 1615, + "end": 1621, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1687, + "end": 1688, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1682, + "end": 1748, + "name": "DUP2", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "EQ", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "PUSH [tag]", + "source": 9, + "value": "31" + }, + { + "begin": 1682, + "end": 1748, + "name": "JUMPI", + "source": 9 + }, + { + "begin": 1797, + "end": 1813, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1794, + "end": 1795, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1787, + "end": 1814, + "name": "RETURN", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "tag", + "source": 9, + "value": "31" + }, + { + "begin": 1682, + "end": 1748, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 1717, + "end": 1733, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1714, + "end": 1715, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1707, + "end": 1734, + "name": "REVERT", + "source": 9 + }, + { + "begin": 2215, + "end": 2308, + "name": "tag", + "source": 10, + "value": "22" + }, + { + "begin": 2215, + "end": 2308, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2268, + "end": 2275, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2294, + "end": 2301, + "name": "PUSHIMMUTABLE", + "source": 10, + "value": "1617" + }, + { + "begin": 2287, + "end": 2301, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2287, + "end": 2301, + "name": "POP", + "source": 10 + }, + { + "begin": 2215, + "end": 2308, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2215, + "end": 2308, + "jumpType": "[out]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 7, + "end": 133, + "name": "tag", + "source": 40, + "value": "33" + }, + { + "begin": 7, + "end": 133, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 44, + "end": 51, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 84, + "end": 126, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 77, + "end": 82, + "name": "DUP3", + "source": 40 + }, + { + "begin": 73, + "end": 127, + "name": "AND", + "source": 40 + }, + { + "begin": 62, + "end": 127, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 62, + "end": 127, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "tag", + "source": 40, + "value": "34" + }, + { + "begin": 139, + "end": 235, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 176, + "end": 183, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 205, + "end": 229, + "name": "PUSH [tag]", + "source": 40, + "value": "44" + }, + { + "begin": 223, + "end": 228, + "name": "DUP3", + "source": 40 + }, + { + "begin": 205, + "end": 229, + "name": "PUSH [tag]", + "source": 40, + "value": "33" + }, + { + "begin": 205, + "end": 229, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 205, + "end": 229, + "name": "tag", + "source": 40, + "value": "44" + }, + { + "begin": 205, + "end": 229, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 194, + "end": 229, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 194, + "end": 229, + "name": "POP", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "POP", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "name": "tag", + "source": 40, + "value": "35" + }, + { + "begin": 241, + "end": 359, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 328, + "end": 352, + "name": "PUSH [tag]", + "source": 40, + "value": "46" + }, + { + "begin": 346, + "end": 351, + "name": "DUP2", + "source": 40 + }, + { + "begin": 328, + "end": 352, + "name": "PUSH [tag]", + "source": 40, + "value": "34" + }, + { + "begin": 328, + "end": 352, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 328, + "end": 352, + "name": "tag", + "source": 40, + "value": "46" + }, + { + "begin": 328, + "end": 352, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 323, + "end": 326, + "name": "DUP3", + "source": 40 + }, + { + "begin": 316, + "end": 353, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "name": "POP", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "name": "POP", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "tag", + "source": 40, + "value": "14" + }, + { + "begin": 365, + "end": 587, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 458, + "end": 462, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 496, + "end": 498, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 485, + "end": 494, + "name": "DUP3", + "source": 40 + }, + { + "begin": 481, + "end": 499, + "name": "ADD", + "source": 40 + }, + { + "begin": 473, + "end": 499, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 473, + "end": 499, + "name": "POP", + "source": 40 + }, + { + "begin": 509, + "end": 580, + "name": "PUSH [tag]", + "source": 40, + "value": "48" + }, + { + "begin": 577, + "end": 578, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 566, + "end": 575, + "name": "DUP4", + "source": 40 + }, + { + "begin": 562, + "end": 579, + "name": "ADD", + "source": 40 + }, + { + "begin": 553, + "end": 559, + "name": "DUP5", + "source": 40 + }, + { + "begin": 509, + "end": 580, + "name": "PUSH [tag]", + "source": 40, + "value": "35" + }, + { + "begin": 509, + "end": 580, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 509, + "end": 580, + "name": "tag", + "source": 40, + "value": "48" + }, + { + "begin": 509, + "end": 580, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "POP", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "POP", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 674, + "end": 791, + "name": "tag", + "source": 40, + "value": "37" + }, + { + "begin": 674, + "end": 791, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 783, + "end": 784, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 780, + "end": 781, + "name": "DUP1", + "source": 40 + }, + { + "begin": 773, + "end": 785, + "name": "REVERT", + "source": 40 + }, + { + "begin": 920, + "end": 1042, + "name": "tag", + "source": 40, + "value": "39" + }, + { + "begin": 920, + "end": 1042, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 993, + "end": 1017, + "name": "PUSH [tag]", + "source": 40, + "value": "53" + }, + { + "begin": 1011, + "end": 1016, + "name": "DUP2", + "source": 40 + }, + { + "begin": 993, + "end": 1017, + "name": "PUSH [tag]", + "source": 40, + "value": "34" + }, + { + "begin": 993, + "end": 1017, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 993, + "end": 1017, + "name": "tag", + "source": 40, + "value": "53" + }, + { + "begin": 993, + "end": 1017, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 986, + "end": 991, + "name": "DUP2", + "source": 40 + }, + { + "begin": 983, + "end": 1018, + "name": "EQ", + "source": 40 + }, + { + "begin": 973, + "end": 1036, + "name": "PUSH [tag]", + "source": 40, + "value": "54" + }, + { + "begin": 973, + "end": 1036, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1032, + "end": 1033, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1029, + "end": 1030, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1022, + "end": 1034, + "name": "REVERT", + "source": 40 + }, + { + "begin": 973, + "end": 1036, + "name": "tag", + "source": 40, + "value": "54" + }, + { + "begin": 973, + "end": 1036, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 920, + "end": 1042, + "name": "POP", + "source": 40 + }, + { + "begin": 920, + "end": 1042, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "tag", + "source": 40, + "value": "40" + }, + { + "begin": 1048, + "end": 1191, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1105, + "end": 1110, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1136, + "end": 1142, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1130, + "end": 1143, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 1121, + "end": 1143, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1121, + "end": 1143, + "name": "POP", + "source": 40 + }, + { + "begin": 1152, + "end": 1185, + "name": "PUSH [tag]", + "source": 40, + "value": "56" + }, + { + "begin": 1179, + "end": 1184, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1152, + "end": 1185, + "name": "PUSH [tag]", + "source": 40, + "value": "39" + }, + { + "begin": 1152, + "end": 1185, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1152, + "end": 1185, + "name": "tag", + "source": 40, + "value": "56" + }, + { + "begin": 1152, + "end": 1185, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "POP", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "POP", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "tag", + "source": 40, + "value": "28" + }, + { + "begin": 1197, + "end": 1548, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1267, + "end": 1273, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1316, + "end": 1318, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1304, + "end": 1313, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1295, + "end": 1302, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1291, + "end": 1314, + "name": "SUB", + "source": 40 + }, + { + "begin": 1287, + "end": 1319, + "name": "SLT", + "source": 40 + }, + { + "begin": 1284, + "end": 1403, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1284, + "end": 1403, + "name": "PUSH [tag]", + "source": 40, + "value": "58" + }, + { + "begin": 1284, + "end": 1403, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1322, + "end": 1401, + "name": "PUSH [tag]", + "source": 40, + "value": "59" + }, + { + "begin": 1322, + "end": 1401, + "name": "PUSH [tag]", + "source": 40, + "value": "37" + }, + { + "begin": 1322, + "end": 1401, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1322, + "end": 1401, + "name": "tag", + "source": 40, + "value": "59" + }, + { + "begin": 1322, + "end": 1401, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1284, + "end": 1403, + "name": "tag", + "source": 40, + "value": "58" + }, + { + "begin": 1284, + "end": 1403, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1442, + "end": 1443, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1467, + "end": 1531, + "name": "PUSH [tag]", + "source": 40, + "value": "60" + }, + { + "begin": 1523, + "end": 1530, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1514, + "end": 1520, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1503, + "end": 1512, + "name": "DUP6", + "source": 40 + }, + { + "begin": 1499, + "end": 1521, + "name": "ADD", + "source": 40 + }, + { + "begin": 1467, + "end": 1531, + "name": "PUSH [tag]", + "source": 40, + "value": "40" + }, + { + "begin": 1467, + "end": 1531, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1467, + "end": 1531, + "name": "tag", + "source": 40, + "value": "60" + }, + { + "begin": 1467, + "end": 1531, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1457, + "end": 1531, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1457, + "end": 1531, + "name": "POP", + "source": 40 + }, + { + "begin": 1413, + "end": 1541, + "name": "POP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "POP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "POP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + } + ] + } + } + } + } + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "LB_HOOKS_MANAGER_ROLE()": "1af5bacc", + "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE()": "661d7ffb", + "acceptOwnership()": "79ba5097", + "addQuoteAsset(address)": "5a440923", + "createLBPair(address,address,uint24,uint16)": "659ac74b", + "forceDecay(address)": "3c78a941", + "getAllBinSteps()": "5b35875c", + "getAllLBPairs(address,address)": "6622e0d7", + "getFeeRecipient()": "4ccb20c0", + "getFlashLoanFee()": "fd90c2be", + "getLBPairAtIndex(uint256)": "7daf5d66", + "getLBPairBeacon()": "a0a0ea39", + "getLBPairInformation(address,address,uint256)": "704037bd", + "getMaxFlashLoanFee()": "8ce9aa1c", + "getMinBinStep()": "701ab8c1", + "getNumberOfLBPairs()": "4e937c3a", + "getNumberOfQuoteAssets()": "80c5061e", + "getOpenBinSteps()": "0282c9c1", + "getPauserRole()": "c1b931be", + "getPreset(uint256)": "aabc4b3c", + "getQuoteAssetAtIndex(uint256)": "0752092b", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,uint256,address)": "be203094", + "isQuoteAsset(address)": "27721842", + "owner()": "8da5cb5b", + "pendingOwner()": "e30c3978", + "removeLBHooksOnPair(address,address,uint16)": "2cc06b8c", + "removePreset(uint16)": "e203a31f", + "removeQuoteAsset(address)": "ddbfd941", + "renounceOwnership()": "715018a6", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setFeeRecipient(address)": "e74b981b", + "setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "093ff769", + "setFlashLoanFee(uint256)": "e92d0d5d", + "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": "3a2f1a91", + "setLBPairIgnored(address,address,uint16,bool)": "69d56ea3", + "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": "379ee803", + "setPresetOpenState(uint16,bool)": "4cd161d3", + "supportsInterface(bytes4)": "01ffc9a7", + "transferOwnership(address)": "f2fde38b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Create2EmptyBytecode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Create2FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"Create2InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"EnumerableMapNonexistentKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__AddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepHasNoPreset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__CannotGrantDefaultAdminRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFees\",\"type\":\"uint256\"}],\"name\":\"LBFactory__FlashLoanFeeAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LBFactory__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__InvalidHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__LBPairIgnoredIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairNotCreated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__LBPairSafetyCheckFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__PresetIsLockedForUsers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__PresetOpenStateIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetAlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"LBFactory__SameFeeRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"LBFactory__SameFlashLoanFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hooksImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameHooksImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"LBFactory__SameHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds16Bits\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"PresetOpenStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LB_HOOKS_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"addQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"binStepWithPreset\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"name\":\"getAllLBPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation[]\",\"name\":\"lbPairsAvailable\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getLBPairAtIndex\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"lbPair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPairBeacon\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lbPairBeacon\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getLBPairInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation\",\"name\":\"lbPairInformation\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinBinStep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minBinStep\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfLBPairs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lbPairNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfQuoteAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"numberOfQuoteAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"openBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauserRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getPreset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuoteAssetAtIndex\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"lbPairBeaconAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isQuoteAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isQuote\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removeLBHooksOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"removeQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setLBHooksParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"setLBPairIgnored\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPresetOpenState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"Create2EmptyBytecode()\":[{\"details\":\"There's no code to deploy.\"}],\"Create2FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"Create2InsufficientBalance(uint256,uint256)\":[{\"details\":\"Not enough balance for performing a CREATE2 deploy.\"}],\"EnumerableMapNonexistentKey(bytes32)\":[{\"details\":\"Query for a nonexistent map key.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"addQuoteAsset(address)\":{\"details\":\"Needs to be called by the owner Reverts if: - The quoteAsset is already whitelisted\",\"params\":{\"quoteAsset\":\"The quote asset (e.g: NATIVE, USDC...)\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createLBPair(address,address,uint24,uint16)\":{\"params\":{\"activeId\":\"The active id of the pair\",\"binStep\":\"The bin step in basis point, used to calculate log(1 + binStep / 10_000)\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"},\"returns\":{\"pair\":\"The address of the newly created LBPair\"}},\"forceDecay(address)\":{\"details\":\"Needs to be called by the owner\",\"params\":{\"pair\":\"The pair to force the decay\"}},\"getAllBinSteps()\":{\"returns\":{\"binStepWithPreset\":\"The list of binStep\"}},\"getAllLBPairs(address,address)\":{\"params\":{\"tokenX\":\"The first token of the pair\",\"tokenY\":\"The second token of the pair\"},\"returns\":{\"lbPairsAvailable\":\"The list of available LBPairs\"}},\"getFeeRecipient()\":{\"returns\":{\"feeRecipient\":\"feeRecipient\"}},\"getFlashLoanFee()\":{\"returns\":{\"flashLoanFee\":\"The fee for flash loans, in 1e18\"}},\"getLBPairAtIndex(uint256)\":{\"params\":{\"index\":\"The index\"},\"returns\":{\"lbPair\":\"The address of the LBPair at index `index`\"}},\"getLBPairBeacon()\":{\"returns\":{\"lbPairBeacon\":\"The address of the LBPair beacon\"}},\"getLBPairInformation(address,address,uint256)\":{\"params\":{\"binStep\":\"The bin step of the LBPair\",\"tokenA\":\"The address of the first token of the pair\",\"tokenB\":\"The address of the second token of the pair\"},\"returns\":{\"lbPairInformation\":\"The LBPairInformation\"}},\"getMaxFlashLoanFee()\":{\"returns\":{\"maxFee\":\"maxFee\"}},\"getMinBinStep()\":{\"returns\":{\"minBinStep\":\"minBinStep\"}},\"getNumberOfLBPairs()\":{\"returns\":{\"lbPairNumber\":\"lbPairNumber\"}},\"getNumberOfQuoteAssets()\":{\"returns\":{\"numberOfQuoteAssets\":\"The number of quote assets\"}},\"getOpenBinSteps()\":{\"returns\":{\"openBinStep\":\"The list of open binSteps\"}},\"getPreset(uint256)\":{\"params\":{\"binStep\":\"The bin step of the preset\"},\"returns\":{\"baseFactor\":\"The base factor\",\"decayPeriod\":\"The decay period of the preset\",\"filterPeriod\":\"The filter period of the preset\",\"isOpen\":\"Whether the preset is open or not\",\"maxVolatilityAccumulator\":\"The max volatility accumulator of the preset\",\"protocolShare\":\"The protocol share of the preset\",\"reductionFactor\":\"The reduction factor of the preset\",\"variableFeeControl\":\"The variable fee control of the preset\"}},\"getQuoteAssetAtIndex(uint256)\":{\"params\":{\"index\":\"The index\"},\"returns\":{\"asset\":\"The address of the quoteAsset at index `index`\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"params\":{\"account\":\"The address to check\",\"role\":\"The role to check\"},\"returns\":{\"_0\":\"Whether the account has the role or not\"}},\"initialize(address,address,uint256,address)\":{\"params\":{\"feeRecipient\":\"The address of the fee recipient\",\"flashLoanFee\":\"The value of the fee for flash loan\"}},\"isQuoteAsset(address)\":{\"params\":{\"token\":\"The address of the asset\"},\"returns\":{\"isQuote\":\"Whether the token is a quote asset or not\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"removeLBHooksOnPair(address,address,uint16)\":{\"details\":\"Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist\",\"params\":{\"binStep\":\"The bin step in basis point, used to calculate the price\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"}},\"removePreset(uint16)\":{\"details\":\"Needs to be called by the owner Reverts if: - The binStep doesn't have a preset\",\"params\":{\"binStep\":\"The bin step to remove\"}},\"removeQuoteAsset(address)\":{\"details\":\"Needs to be called by the owner Reverts if: - The quoteAsset was not whitelisted\",\"params\":{\"quoteAsset\":\"The quote asset (e.g: NATIVE, USDC...)\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setFeeRecipient(address)\":{\"details\":\"Needs to be called by the owner Reverts if: - The feeRecipient is `address(0)` - The feeRecipient is the same as the current one\",\"params\":{\"feeRecipient\":\"The address of the recipient\"}},\"setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)\":{\"details\":\"Needs to be called by the owner Reverts if: - The pair doesn't exist\",\"params\":{\"baseFactor\":\"The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\",\"binStep\":\"The bin step in basis point, used to calculate the price\",\"decayPeriod\":\"The period where the accumulator value is decayed, by the reduction factor\",\"filterPeriod\":\"The period where the accumulator value is untouched, prevent spam\",\"maxVolatilityAccumulator\":\"The max value of volatility accumulator\",\"protocolShare\":\"The share of the fees received by the protocol\",\"reductionFactor\":\"The reduction factor, used to calculate the reduction of the accumulator\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\",\"variableFeeControl\":\"The variable fee control, used to control the variable fee, can be 0 to disable it\"}},\"setFlashLoanFee(uint256)\":{\"details\":\"Needs to be called by the owner Reverts if: - The flashLoanFee is the same as the current one - The flashLoanFee is above the maximum flash loan fee\",\"params\":{\"flashLoanFee\":\"The value of the fee for flash loan\"}},\"setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)\":{\"details\":\"Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE Reverts if: - The pair doesn't exist - The hooks is `address(0)` or the hooks flags are all false\",\"params\":{\"binStep\":\"The bin step in basis point, used to calculate the price\",\"hooksParameters\":\"The hooks parameters\",\"onHooksSetData\":\"The data to pass to the onHooksSet function\",\"tokenX\":\"The address of the first token\",\"tokenY\":\"The address of the second token\"}},\"setLBPairIgnored(address,address,uint16,bool)\":{\"details\":\"Needs to be called by the owner Reverts if: - The pair doesn't exist - The ignored state is already in the same state\",\"params\":{\"binStep\":\"The bin step in basis point of the pair\",\"ignored\":\"Whether to ignore (true) or not (false) the pair for routing\",\"tokenX\":\"The address of the first token of the pair\",\"tokenY\":\"The address of the second token of the pair\"}},\"setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)\":{\"details\":\"Needs to be called by the owner Reverts if: - The binStep is lower than the minimum bin step\",\"params\":{\"baseFactor\":\"The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\",\"binStep\":\"The bin step in basis point, used to calculate the price\",\"decayPeriod\":\"The period where the accumulator value is decayed, by the reduction factor\",\"filterPeriod\":\"The period where the accumulator value is untouched, prevent spam\",\"maxVolatilityAccumulator\":\"The max value of the volatility accumulator\",\"protocolShare\":\"The share of the fees received by the protocol\",\"reductionFactor\":\"The reduction factor, used to calculate the reduction of the accumulator\",\"variableFeeControl\":\"The variable fee control, used to control the variable fee, can be 0 to disable it\"}},\"setPresetOpenState(uint16,bool)\":{\"details\":\"Needs to be called by the owner Reverts if: - The binStep doesn't have a preset - The preset is already in the same state\",\"params\":{\"binStep\":\"The bin step in basis point, used to calculate the price\",\"isOpen\":\"Whether the preset is open or not\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"_availableLBPairBinSteps\":{\"details\":\"Mapping from a (tokenA, tokenB) to a set of available bin steps, this is used to keep track of the bin steps that are already used for a pair. The tokens are ordered to save gas, but they can be in the reverse order in the actual pair. Always query one of the 2 tokens of the pair to assert the order of the 2 tokens\"},\"_lbPairsInfo\":{\"details\":\"Mapping from a (tokenA, tokenB, binStep) to a LBPair. The tokens are ordered to save gas, but they can be in the reverse order in the actual pair. Always query one of the 2 tokens of the pair to assert the order of the 2 tokens\"}},\"title\":\"Liquidity Book Factory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addQuoteAsset(address)\":{\"notice\":\"Function to add an asset to the whitelist of quote assets\"},\"createLBPair(address,address,uint24,uint16)\":{\"notice\":\"Create a liquidity bin LBPair for tokenX and tokenY\"},\"forceDecay(address)\":{\"notice\":\"Function to force the decay of the volatility accumulator of a pair\"},\"getAllBinSteps()\":{\"notice\":\"View function to return the list of available binStep with a preset\"},\"getAllLBPairs(address,address)\":{\"notice\":\"View function to return all the LBPair of a pair of tokens\"},\"getFeeRecipient()\":{\"notice\":\"Get the protocol fee recipient\"},\"getFlashLoanFee()\":{\"notice\":\"Get the fee for flash loans, in 1e18\"},\"getLBPairAtIndex(uint256)\":{\"notice\":\"View function to return the LBPair created at index `index`\"},\"getLBPairBeacon()\":{\"notice\":\"Get the address of the LBPair beacon\"},\"getLBPairInformation(address,address,uint256)\":{\"notice\":\"Returns the LBPairInformation if it exists, if not, then the address 0 is returned. The order doesn't matter\"},\"getMaxFlashLoanFee()\":{\"notice\":\"Get the maximum fee percentage for flashLoans\"},\"getMinBinStep()\":{\"notice\":\"Get the minimum bin step a pair can have\"},\"getNumberOfLBPairs()\":{\"notice\":\"View function to return the number of LBPairs created\"},\"getNumberOfQuoteAssets()\":{\"notice\":\"View function to return the number of quote assets whitelisted\"},\"getOpenBinSteps()\":{\"notice\":\"View function to return the list of open binSteps\"},\"getPreset(uint256)\":{\"notice\":\"View function to return the different parameters of the preset Will revert if the preset doesn't exist\"},\"getQuoteAssetAtIndex(uint256)\":{\"notice\":\"View function to return the quote asset whitelisted at index `index`\"},\"hasRole(bytes32,address)\":{\"notice\":\"Returns whether the caller has the role or not, only the owner has the DEFAULT_ADMIN_ROLE\"},\"initialize(address,address,uint256,address)\":{\"notice\":\"Initializer function\"},\"isQuoteAsset(address)\":{\"notice\":\"View function to return whether a token is a quotedAsset (true) or not (false)\"},\"removeLBHooksOnPair(address,address,uint16)\":{\"notice\":\"Function to remove the hooks contract from the pair\"},\"removePreset(uint16)\":{\"notice\":\"Remove the preset linked to a binStep\"},\"removeQuoteAsset(address)\":{\"notice\":\"Function to remove an asset from the whitelist of quote assets\"},\"setFeeRecipient(address)\":{\"notice\":\"Function to set the recipient of the fees. This address needs to be able to receive ERC20s\"},\"setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)\":{\"notice\":\"Function to set the fee parameter of a LBPair\"},\"setFlashLoanFee(uint256)\":{\"notice\":\"Function to set the flash loan fee\"},\"setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)\":{\"notice\":\"Function to set the hooks parameters of a pair\"},\"setLBPairIgnored(address,address,uint16,bool)\":{\"notice\":\"Function to set whether the pair is ignored or not for routing, it will make the pair unusable by the router\"},\"setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)\":{\"notice\":\"Sets the preset parameters of a bin step\"},\"setPresetOpenState(uint16,bool)\":{\"notice\":\"Sets if the preset is open or not to be used by users\"}},\"notice\":\"Contract used to deploy and register new LBPairs. Enables setting fee parameters, flashloan fees and LBPair implementation. Unless the `isOpen` is `true`, only the owner of the factory can create pairs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBFactory.sol\":\"LBFactory\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0x72a2cb65884e565b059fdf43b1c8e074a2128d4456c467cabfcebd28f2f4c336\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ed917865e6ddc26ddefbd9376bb36a258e40dac98ed4836e54c8920c8982d22\",\"dweb:/ipfs/QmNonmf4PWnH2CzyTGmrgDkfzRz1uQaZdCQYQRaMpX3YNB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xddfe0afa85367153020524d383fe0bc9a1545f343019ddf33f98f392887047f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62f3df350ce83190e81673e424dd47d9ee8ffb121a6f72994c75c8ae3fc9dded\",\"dweb:/ipfs/QmaA2CMuqESmdgVao4XzCL4aRwcZW1xjUXpY7RqHZfQoAV\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x65ca47513b279410048d29579aa4b32d8a7faf4ee8264f22ae4ac51117e733d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a84d41cb877bf31c3db9a3dd917d5d94509834604722e7b972b112e4af705f\",\"dweb:/ipfs/QmYEZBWxWDkdbqqDTUmDpCD7txYMuS2ykcrCH3D5HAJ1J1\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06bd04b0d6af06424c58c24ad861ac4fbe68ae729c199127f4b64361a0629510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a9228dd927facb9a400333848e8cf616c7a7f30693563d98a963266dc8ae28a\",\"dweb:/ipfs/Qmehe5JAWCK7g8A9VkS9LpfiNkYzXkrxnXfpvtuqbrA9BA\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x25052a8e6c783ab01f98a9ac7f521649be60b9963f352e2453997ba8fbc2d285\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ba3d98053a310582febe79742e566a36073f1f2645ddc772c638c84ae93b88\",\"dweb:/ipfs/QmTHUMHniPNJ9H2Ui2zgk35CZDSThg2nQ8j5sNXaNarL9D\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x5920bac7215d12961e23b207f6e81a1d64aa4935a4469abe95b64a96a3c3007b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34bb828c45c3a4ebf6c2c585971abf5089e61357a3818a2900c7e85b74a1299\",\"dweb:/ipfs/QmewGAzKsPXYfSjCKxuH1SekKxtdyzhdbdyxjF5gohLigt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x70d9a9cf8d5cc830d7396505ef8eb9686bd0c60a29c6644bd6cc278f9bab8ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719abb402c11be12355088da587ffd971fee1b035b5aa6b1ba3b1a9493d3c1d7\",\"dweb:/ipfs/QmanHMFVDqVtZAFFaH1CeGQWoHWsFnWHH75fCrguwi77Hq\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xd54305a00b75f1d580747bc916257a6a53d5c0c699d65f947988ef9c1d95a2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e687cd2e6ce64ed9829557eef8b542dd5ef3829ecd1b00a07ff5bfd7dc0c59c4\",\"dweb:/ipfs/QmaX3mE3HbH5cUbyj9RszWEXsjjMJ6LtuovebEYhxjUMvw\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/LBFactory.sol\":{\"keccak256\":\"0x4357528177127b0aa5dae3bda1bd8a085954c39be364d28763e8240c5778e33f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f6b53f5ae61f431780acc158fea89a77c6de5f6c43d0a389307bd22a8e9dbe\",\"dweb:/ipfs/QmZ723Q6wkD9SbwsEz8okjAf8UHbv5xngw8DHvV2BVmSMG\"]},\"src/LBPairBeaconProxy.sol\":{\"keccak256\":\"0x9ef05f6a2b5f9ad4deffb5635999f953d03bdeeca73682a84896c45a44060e7e\",\"license\":\"GPL-3\",\"urls\":[\"bzz-raw://2845d3a65804c8b3f84317b9aef108e46a9e55a7c84295523e0c027e80e24a75\",\"dweb:/ipfs/Qmb3PjAJWVWi1RCz7dy8RjPyAnDRJBU6nnVtxuPo6Pu7Vf\"]},\"src/LBPairUnstructuredStorage.sol\":{\"keccak256\":\"0x0624f033c86f4ba1f900d99163241f879157509e1e93af85fc3418ec87463dcd\",\"license\":\"GPL-3\",\"urls\":[\"bzz-raw://aa622c89b893cc8fea94879e9a7a9d71d265df923f3b884426e2c830cdc8ddca\",\"dweb:/ipfs/QmVM8gFUGnnBSfLJF3mtGYKDChMC5Mt5Q3d6RsEPJ7LpLd\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]},\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0xb11421c05ec91ca74a2ce9c9108fb6a13be96177a072383c8e02490be28590bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3589fceccbeb601e4a2565797acad2ffcc6000ea682ce158d367c541d3d6054a\",\"dweb:/ipfs/QmNz2CLyArtuxTE652mtVfVKysZ8hY99RdssPUjKhVx7ZL\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xd75796a09915a4ce7fd69894504bb21d8f4b6b8fd96b9d863422911313f9dd71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c38fa6ee12c97e1aa1b33ae4cca16f52c1712b7b7a2222dc0cdf61f087ab6e1b\",\"dweb:/ipfs/QmUXVXUhAtZufsRKKEujphnQLhEmiADw215LMcpjooiERr\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0xe8af4af39a9063fa569aa161f0fb0b81825131c102b8504deebe142f79f918a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b6e1bcd23acaf79754aed4eb8f32ca3f1712696396a6f06511a6422f73da01f\",\"dweb:/ipfs/QmNZjn3byK4aDYMC5xYPKWCjVUoSmUQgeaHx14q9iA412N\"]},\"src/libraries/StringUtils.sol\":{\"keccak256\":\"0x9734a4e165526a7590c5303bc983a552eadd5a6e20143a4ea731bca9413320d4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1239d261c4e0e136106e30dae7766c3fb6f8ee5867db31c265740236f3ada40f\",\"dweb:/ipfs/QmfYnsyuxNZrK8gp4JbDqjfdoEDhFqsQRkK54Ht68jUDqE\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94\",\"dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea\",\"dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 5078, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_feeRecipient", + "offset": 0, + "slot": "0", + "type": "t_address" + }, + { + "astId": 5080, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_flashLoanFee", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 5082, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_lbPairBeacon", + "offset": 0, + "slot": "2", + "type": "t_address" + }, + { + "astId": 5086, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_allLBPairs", + "offset": 0, + "slot": "3", + "type": "t_array(t_contract(ILBPair)7970)dyn_storage" + }, + { + "astId": 5098, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_lbPairsInfo", + "offset": 0, + "slot": "4", + "type": "t_mapping(t_contract(IERC20)1838,t_mapping(t_contract(IERC20)1838,t_mapping(t_uint256,t_struct(LBPairInformation)6974_storage)))" + }, + { + "astId": 5101, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_presets", + "offset": 0, + "slot": "5", + "type": "t_struct(UintToUintMap)2582_storage" + }, + { + "astId": 5104, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_quoteAssetWhitelist", + "offset": 0, + "slot": "8", + "type": "t_struct(AddressSet)4705_storage" + }, + { + "astId": 5114, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_availableLBPairBinSteps", + "offset": 0, + "slot": "10", + "type": "t_mapping(t_contract(IERC20)1838,t_mapping(t_contract(IERC20)1838,t_struct(UintSet)4862_storage))" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_array(t_contract(ILBPair)7970)dyn_storage": { + "base": "t_contract(ILBPair)7970", + "encoding": "dynamic_array", + "label": "contract ILBPair[]", + "numberOfBytes": "32" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC20)1838": { + "encoding": "inplace", + "label": "contract IERC20", + "numberOfBytes": "20" + }, + "t_contract(ILBPair)7970": { + "encoding": "inplace", + "label": "contract ILBPair", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_bytes32)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => bytes32)", + "numberOfBytes": "32", + "value": "t_bytes32" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_contract(IERC20)1838,t_mapping(t_contract(IERC20)1838,t_mapping(t_uint256,t_struct(LBPairInformation)6974_storage)))": { + "encoding": "mapping", + "key": "t_contract(IERC20)1838", + "label": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation)))", + "numberOfBytes": "32", + "value": "t_mapping(t_contract(IERC20)1838,t_mapping(t_uint256,t_struct(LBPairInformation)6974_storage))" + }, + "t_mapping(t_contract(IERC20)1838,t_mapping(t_contract(IERC20)1838,t_struct(UintSet)4862_storage))": { + "encoding": "mapping", + "key": "t_contract(IERC20)1838", + "label": "mapping(contract IERC20 => mapping(contract IERC20 => struct EnumerableSet.UintSet))", + "numberOfBytes": "32", + "value": "t_mapping(t_contract(IERC20)1838,t_struct(UintSet)4862_storage)" + }, + "t_mapping(t_contract(IERC20)1838,t_mapping(t_uint256,t_struct(LBPairInformation)6974_storage))": { + "encoding": "mapping", + "key": "t_contract(IERC20)1838", + "label": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation))", + "numberOfBytes": "32", + "value": "t_mapping(t_uint256,t_struct(LBPairInformation)6974_storage)" + }, + "t_mapping(t_contract(IERC20)1838,t_struct(UintSet)4862_storage)": { + "encoding": "mapping", + "key": "t_contract(IERC20)1838", + "label": "mapping(contract IERC20 => struct EnumerableSet.UintSet)", + "numberOfBytes": "32", + "value": "t_struct(UintSet)4862_storage" + }, + "t_mapping(t_uint256,t_struct(LBPairInformation)6974_storage)": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => struct ILBFactory.LBPairInformation)", + "numberOfBytes": "32", + "value": "t_struct(LBPairInformation)6974_storage" + }, + "t_struct(AddressSet)4705_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "astId": 4704, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)4390_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Bytes32Set)4584_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Bytes32Set", + "members": [ + { + "astId": 4583, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)4390_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Bytes32ToBytes32Map)2368_storage": { + "encoding": "inplace", + "label": "struct EnumerableMap.Bytes32ToBytes32Map", + "members": [ + { + "astId": 2363, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_keys", + "offset": 0, + "slot": "0", + "type": "t_struct(Bytes32Set)4584_storage" + }, + { + "astId": 2367, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_values", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_bytes32,t_bytes32)" + } + ], + "numberOfBytes": "96" + }, + "t_struct(LBPairInformation)6974_storage": { + "encoding": "inplace", + "label": "struct ILBFactory.LBPairInformation", + "members": [ + { + "astId": 6966, + "contract": "src/LBFactory.sol:LBFactory", + "label": "binStep", + "offset": 0, + "slot": "0", + "type": "t_uint16" + }, + { + "astId": 6969, + "contract": "src/LBFactory.sol:LBFactory", + "label": "LBPair", + "offset": 2, + "slot": "0", + "type": "t_contract(ILBPair)7970" + }, + { + "astId": 6971, + "contract": "src/LBFactory.sol:LBFactory", + "label": "createdByOwner", + "offset": 22, + "slot": "0", + "type": "t_bool" + }, + { + "astId": 6973, + "contract": "src/LBFactory.sol:LBFactory", + "label": "ignoredForRouting", + "offset": 23, + "slot": "0", + "type": "t_bool" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Set)4390_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "members": [ + { + "astId": 4385, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 4389, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_positions", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_struct(UintSet)4862_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.UintSet", + "members": [ + { + "astId": 4861, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)4390_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(UintToUintMap)2582_storage": { + "encoding": "inplace", + "label": "struct EnumerableMap.UintToUintMap", + "members": [ + { + "astId": 2581, + "contract": "src/LBFactory.sol:LBFactory", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Bytes32ToBytes32Map)2368_storage" + } + ], + "numberOfBytes": "96" + }, + "t_uint16": { + "encoding": "inplace", + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + }, + "userdoc": { + "kind": "user", + "methods": { + "addQuoteAsset(address)": { + "notice": "Function to add an asset to the whitelist of quote assets" + }, + "createLBPair(address,address,uint24,uint16)": { + "notice": "Create a liquidity bin LBPair for tokenX and tokenY" + }, + "forceDecay(address)": { + "notice": "Function to force the decay of the volatility accumulator of a pair" + }, + "getAllBinSteps()": { + "notice": "View function to return the list of available binStep with a preset" + }, + "getAllLBPairs(address,address)": { + "notice": "View function to return all the LBPair of a pair of tokens" + }, + "getFeeRecipient()": { + "notice": "Get the protocol fee recipient" + }, + "getFlashLoanFee()": { + "notice": "Get the fee for flash loans, in 1e18" + }, + "getLBPairAtIndex(uint256)": { + "notice": "View function to return the LBPair created at index `index`" + }, + "getLBPairBeacon()": { + "notice": "Get the address of the LBPair beacon" + }, + "getLBPairInformation(address,address,uint256)": { + "notice": "Returns the LBPairInformation if it exists, if not, then the address 0 is returned. The order doesn't matter" + }, + "getMaxFlashLoanFee()": { + "notice": "Get the maximum fee percentage for flashLoans" + }, + "getMinBinStep()": { + "notice": "Get the minimum bin step a pair can have" + }, + "getNumberOfLBPairs()": { + "notice": "View function to return the number of LBPairs created" + }, + "getNumberOfQuoteAssets()": { + "notice": "View function to return the number of quote assets whitelisted" + }, + "getOpenBinSteps()": { + "notice": "View function to return the list of open binSteps" + }, + "getPreset(uint256)": { + "notice": "View function to return the different parameters of the preset Will revert if the preset doesn't exist" + }, + "getQuoteAssetAtIndex(uint256)": { + "notice": "View function to return the quote asset whitelisted at index `index`" + }, + "hasRole(bytes32,address)": { + "notice": "Returns whether the caller has the role or not, only the owner has the DEFAULT_ADMIN_ROLE" + }, + "initialize(address,address,uint256,address)": { + "notice": "Initializer function" + }, + "isQuoteAsset(address)": { + "notice": "View function to return whether a token is a quotedAsset (true) or not (false)" + }, + "removeLBHooksOnPair(address,address,uint16)": { + "notice": "Function to remove the hooks contract from the pair" + }, + "removePreset(uint16)": { + "notice": "Remove the preset linked to a binStep" + }, + "removeQuoteAsset(address)": { + "notice": "Function to remove an asset from the whitelist of quote assets" + }, + "setFeeRecipient(address)": { + "notice": "Function to set the recipient of the fees. This address needs to be able to receive ERC20s" + }, + "setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": { + "notice": "Function to set the fee parameter of a LBPair" + }, + "setFlashLoanFee(uint256)": { + "notice": "Function to set the flash loan fee" + }, + "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": { + "notice": "Function to set the hooks parameters of a pair" + }, + "setLBPairIgnored(address,address,uint16,bool)": { + "notice": "Function to set whether the pair is ignored or not for routing, it will make the pair unusable by the router" + }, + "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": { + "notice": "Sets the preset parameters of a bin step" + }, + "setPresetOpenState(uint16,bool)": { + "notice": "Sets if the preset is open or not to be used by users" + } + }, + "notice": "Contract used to deploy and register new LBPairs. Enables setting fee parameters, flashloan fees and LBPair implementation. Unless the `isOpen` is `true`, only the owner of the factory can create pairs.", + "version": 1 + } + } + }, + "src/LBPairBeaconProxy.sol": { + "IOwnable": { + "abi": [ + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "owner()": "8da5cb5b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBPairBeaconProxy.sol\":\"IOwnable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06bd04b0d6af06424c58c24ad861ac4fbe68ae729c199127f4b64361a0629510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a9228dd927facb9a400333848e8cf616c7a7f30693563d98a963266dc8ae28a\",\"dweb:/ipfs/Qmehe5JAWCK7g8A9VkS9LpfiNkYzXkrxnXfpvtuqbrA9BA\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x25052a8e6c783ab01f98a9ac7f521649be60b9963f352e2453997ba8fbc2d285\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ba3d98053a310582febe79742e566a36073f1f2645ddc772c638c84ae93b88\",\"dweb:/ipfs/QmTHUMHniPNJ9H2Ui2zgk35CZDSThg2nQ8j5sNXaNarL9D\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x70d9a9cf8d5cc830d7396505ef8eb9686bd0c60a29c6644bd6cc278f9bab8ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719abb402c11be12355088da587ffd971fee1b035b5aa6b1ba3b1a9493d3c1d7\",\"dweb:/ipfs/QmanHMFVDqVtZAFFaH1CeGQWoHWsFnWHH75fCrguwi77Hq\"]},\"src/LBPairBeaconProxy.sol\":{\"keccak256\":\"0x9ef05f6a2b5f9ad4deffb5635999f953d03bdeeca73682a84896c45a44060e7e\",\"license\":\"GPL-3\",\"urls\":[\"bzz-raw://2845d3a65804c8b3f84317b9aef108e46a9e55a7c84295523e0c027e80e24a75\",\"dweb:/ipfs/Qmb3PjAJWVWi1RCz7dy8RjPyAnDRJBU6nnVtxuPo6Pu7Vf\"]},\"src/LBPairUnstructuredStorage.sol\":{\"keccak256\":\"0x0624f033c86f4ba1f900d99163241f879157509e1e93af85fc3418ec87463dcd\",\"license\":\"GPL-3\",\"urls\":[\"bzz-raw://aa622c89b893cc8fea94879e9a7a9d71d265df923f3b884426e2c830cdc8ddca\",\"dweb:/ipfs/QmVM8gFUGnnBSfLJF3mtGYKDChMC5Mt5Q3d6RsEPJ7LpLd\"]},\"src/libraries/StringUtils.sol\":{\"keccak256\":\"0x9734a4e165526a7590c5303bc983a552eadd5a6e20143a4ea731bca9413320d4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1239d261c4e0e136106e30dae7766c3fb6f8ee5867db31c265740236f3ada40f\",\"dweb:/ipfs/QmfYnsyuxNZrK8gp4JbDqjfdoEDhFqsQRkK54Ht68jUDqE\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "LBPairBeaconProxy": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_beaconAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_tokenX", + "type": "address" + }, + { + "internalType": "address", + "name": "_tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_binStep", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "ERC1967InvalidBeacon", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "getLBPairBeacon", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "devdoc": { + "details": "this is the Proxy contract of the LBPair.this contract instantiates LBPair contract via OZ Beacon Proxy (LBPairUpgradeableBeacon in this case).", + "errors": { + "AddressEmptyCode(address)": [ + { + "details": "There's no code at `target` (it is not a contract)." + } + ], + "ERC1967InvalidBeacon(address)": [ + { + "details": "The `beacon` of the proxy is invalid." + } + ], + "ERC1967InvalidImplementation(address)": [ + { + "details": "The `implementation` of the proxy is invalid." + } + ], + "ERC1967NonPayable()": [ + { + "details": "An upgrade function sees `msg.value > 0` that may be lost." + } + ], + "FailedInnerCall()": [ + { + "details": "A call to an address target failed. The target may have reverted." + } + ] + }, + "events": { + "BeaconUpgraded(address)": { + "details": "Emitted when the beacon is changed." + } + }, + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n mstore(0x40, 0xa0)\n /* \"src/LBPairBeaconProxy.sol\":757:2227 constructor(address _beaconAddress, address _tokenX, address _tokenY, uint16 _binStep, bytes memory _data) payable BeaconProxy(_beaconAddress, \"\") {... */\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_1\n swap2\n swap1\n tag_2\n jump\t// in\ntag_1:\n /* \"src/LBPairBeaconProxy.sol\":884:898 _beaconAddress */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1773:1920 constructor(address beacon, bytes memory data) payable {... */\n mload(0x40)\n dup1\n 0x20\n add\n 0x40\n mstore\n dup1\n 0x00\n dup2\n mstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1887 ERC1967Utils.upgradeBeaconToAndCall(beacon, data) */\n tag_6\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1874:1880 beacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1882:1886 data */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1873 ERC1967Utils.upgradeBeaconToAndCall */\n shl(0x20, tag_7)\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1838:1887 ERC1967Utils.upgradeBeaconToAndCall(beacon, data) */\n 0x20\n shr\n jump\t// in\ntag_6:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1907:1913 beacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1897:1913 _beacon = beacon */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x80\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":1773:1920 constructor(address beacon, bytes memory data) payable {... */\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":915:934 bool successSymbolX */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":936:960 bytes memory symbolXData */\n dup1\n /* \"src/LBPairBeaconProxy.sol\":964:971 _tokenX */\n dup6\n /* \"src/LBPairBeaconProxy.sol\":964:982 _tokenX.staticcall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBPairBeaconProxy.sol\":983:1018 abi.encodeWithSignature(\"symbol()\") */\n add(0x24, mload(0x40))\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n and(not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff), 0x95d89b4100000000000000000000000000000000000000000000000000000000)\n 0x20\n dup3\n add\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup4\n dup2\n dup4\n and\n or\n dup4\n mstore\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":964:1019 _tokenX.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n mload(0x40)\n tag_9\n swap2\n swap1\n tag_10\n jump\t// in\ntag_9:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n staticcall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_13\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_12)\ntag_13:\n 0x60\n swap2\n pop\ntag_12:\n pop\n /* \"src/LBPairBeaconProxy.sol\":914:1019 (bool successSymbolX, bytes memory symbolXData) = _tokenX.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBPairBeaconProxy.sol\":1029:1055 string memory tokenXSymbol */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1069:1080 symbolXData */\n dup2\n /* \"src/LBPairBeaconProxy.sol\":1058:1091 abi.decode(symbolXData, (string)) */\n dup1\n 0x20\n add\n swap1\n mload\n dup2\n add\n swap1\n tag_14\n swap2\n swap1\n tag_15\n jump\t// in\ntag_14:\n /* \"src/LBPairBeaconProxy.sol\":1029:1091 string memory tokenXSymbol = abi.decode(symbolXData, (string)) */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":1103:1122 bool successSymbolY */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1124:1148 bytes memory symbolYData */\n dup1\n /* \"src/LBPairBeaconProxy.sol\":1152:1159 _tokenY */\n dup8\n /* \"src/LBPairBeaconProxy.sol\":1152:1170 _tokenY.staticcall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"src/LBPairBeaconProxy.sol\":1171:1206 abi.encodeWithSignature(\"symbol()\") */\n add(0x24, mload(0x40))\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n and(not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff), 0x95d89b4100000000000000000000000000000000000000000000000000000000)\n 0x20\n dup3\n add\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup4\n dup2\n dup4\n and\n or\n dup4\n mstore\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":1152:1207 _tokenY.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n mload(0x40)\n tag_16\n swap2\n swap1\n tag_10\n jump\t// in\ntag_16:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n staticcall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_19\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_18)\ntag_19:\n 0x60\n swap2\n pop\ntag_18:\n pop\n /* \"src/LBPairBeaconProxy.sol\":1102:1207 (bool successSymbolY, bytes memory symbolYData) = _tokenY.staticcall(abi.encodeWithSignature(\"symbol()\")) */\n swap2\n pop\n swap2\n pop\n /* \"src/LBPairBeaconProxy.sol\":1217:1243 string memory tokenYSymbol */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1257:1268 symbolYData */\n dup2\n /* \"src/LBPairBeaconProxy.sol\":1246:1279 abi.decode(symbolYData, (string)) */\n dup1\n 0x20\n add\n swap1\n mload\n dup2\n add\n swap1\n tag_20\n swap2\n swap1\n tag_15\n jump\t// in\ntag_20:\n /* \"src/LBPairBeaconProxy.sol\":1217:1279 string memory tokenYSymbol = abi.decode(symbolYData, (string)) */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":1298:1312 successSymbolX */\n dup6\n /* \"src/LBPairBeaconProxy.sol\":1298:1330 successSymbolX && successSymbolY */\n dup1\n iszero\n tag_21\n jumpi\n pop\n /* \"src/LBPairBeaconProxy.sol\":1316:1330 successSymbolY */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":1298:1330 successSymbolX && successSymbolY */\ntag_21:\n /* \"src/LBPairBeaconProxy.sol\":1290:1382 require(successSymbolX && successSymbolY , \"LBPairBeaconProxy: Failed to get token symbols\") */\n tag_22\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_23\n swap1\n tag_24\n jump\t// in\ntag_23:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\ntag_22:\n /* \"src/LBPairBeaconProxy.sol\":1457:1466 bytes(\"\") */\n mload(0x40)\n dup1\n 0x20\n add\n 0x40\n mstore\n dup1\n 0x00\n dup2\n mstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1447:1467 keccak256(bytes(\"\")) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1429:1441 tokenXSymbol */\n dup5\n /* \"src/LBPairBeaconProxy.sol\":1413:1443 keccak256(bytes(tokenXSymbol)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1413:1467 keccak256(bytes(tokenXSymbol)) != keccak256(bytes(\"\")) */\n eq\n iszero\n /* \"src/LBPairBeaconProxy.sol\":1413:1537 keccak256(bytes(tokenXSymbol)) != keccak256(bytes(\"\")) &&... */\n dup1\n iszero\n tag_25\n jumpi\n pop\n /* \"src/LBPairBeaconProxy.sol\":1527:1536 bytes(\"\") */\n mload(0x40)\n dup1\n 0x20\n add\n 0x40\n mstore\n dup1\n 0x00\n dup2\n mstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1517:1537 keccak256(bytes(\"\")) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1499:1511 tokenYSymbol */\n dup2\n /* \"src/LBPairBeaconProxy.sol\":1483:1513 keccak256(bytes(tokenYSymbol)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"src/LBPairBeaconProxy.sol\":1483:1537 keccak256(bytes(tokenYSymbol)) != keccak256(bytes(\"\")) */\n eq\n iszero\n /* \"src/LBPairBeaconProxy.sol\":1413:1537 keccak256(bytes(tokenXSymbol)) != keccak256(bytes(\"\")) &&... */\ntag_25:\n /* \"src/LBPairBeaconProxy.sol\":1392:1603 require(... */\n tag_26\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_27\n swap1\n tag_28\n jump\t// in\ntag_27:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\ntag_26:\n /* \"src/LBPairBeaconProxy.sol\":1664:1671 _tokenX */\n dup10\n /* \"src/LBPairBeaconProxy.sol\":1614:1655 StorageSlot.getAddressSlot(_SLOT_TOKEN_X) */\n tag_29\n /* \"src/LBPairUnstructuredStorage.sol\":142:208 0x3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec31 */\n 0x3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec31\n /* \"src/LBPairBeaconProxy.sol\":1641:1654 _SLOT_TOKEN_X */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1614:1640 StorageSlot.getAddressSlot */\n shl(0x20, tag_30)\n /* \"src/LBPairBeaconProxy.sol\":1614:1655 StorageSlot.getAddressSlot(_SLOT_TOKEN_X) */\n 0x20\n shr\n jump\t// in\ntag_29:\n /* \"src/LBPairBeaconProxy.sol\":1614:1661 StorageSlot.getAddressSlot(_SLOT_TOKEN_X).value */\n 0x00\n add\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1614:1671 StorageSlot.getAddressSlot(_SLOT_TOKEN_X).value = _tokenX */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1731:1738 _tokenY */\n dup9\n /* \"src/LBPairBeaconProxy.sol\":1681:1722 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y) */\n tag_31\n /* \"src/LBPairUnstructuredStorage.sol\":341:407 0x7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264 */\n 0x7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264\n /* \"src/LBPairBeaconProxy.sol\":1708:1721 _SLOT_TOKEN_Y */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1681:1707 StorageSlot.getAddressSlot */\n shl(0x20, tag_30)\n /* \"src/LBPairBeaconProxy.sol\":1681:1722 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y) */\n 0x20\n shr\n jump\t// in\ntag_31:\n /* \"src/LBPairBeaconProxy.sol\":1681:1728 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y).value */\n 0x00\n add\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1681:1738 StorageSlot.getAddressSlot(_SLOT_TOKEN_Y).value = _tokenY */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1799:1807 _binStep */\n dup8\n /* \"src/LBPairBeaconProxy.sol\":1748:1807 StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value = _binStep */\n 0xffff\n and\n /* \"src/LBPairBeaconProxy.sol\":1748:1790 StorageSlot.getUint256Slot(_SLOT_BIN_STEP) */\n tag_32\n /* \"src/LBPairUnstructuredStorage.sol\":541:607 0xff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782 */\n 0xff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782\n /* \"src/LBPairBeaconProxy.sol\":1775:1789 _SLOT_BIN_STEP */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1748:1774 StorageSlot.getUint256Slot */\n shl(0x20, tag_33)\n /* \"src/LBPairBeaconProxy.sol\":1748:1790 StorageSlot.getUint256Slot(_SLOT_BIN_STEP) */\n 0x20\n shr\n jump\t// in\ntag_32:\n /* \"src/LBPairBeaconProxy.sol\":1748:1796 StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value */\n 0x00\n add\n /* \"src/LBPairBeaconProxy.sol\":1748:1807 StorageSlot.getUint256Slot(_SLOT_BIN_STEP).value = _binStep */\n dup2\n swap1\n sstore\n pop\n /* \"src/LBPairBeaconProxy.sol\":1817:1841 string memory binStepStr */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":1844:1869 _binStep.uint16ToString() */\n tag_34\n /* \"src/LBPairBeaconProxy.sol\":1844:1852 _binStep */\n dup10\n /* \"src/LBPairBeaconProxy.sol\":1844:1867 _binStep.uint16ToString */\n 0xffff\n and\n shl(0x20, tag_35)\n /* \"src/LBPairBeaconProxy.sol\":1844:1869 _binStep.uint16ToString() */\n 0x20\n shr\n jump\t// in\ntag_34:\n /* \"src/LBPairBeaconProxy.sol\":1817:1869 string memory binStepStr = _binStep.uint16ToString() */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":1954:1966 tokenXSymbol */\n dup5\n /* \"src/LBPairBeaconProxy.sol\":1973:1985 tokenYSymbol */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":1992:2002 binStepStr */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":1932:2003 string.concat(\"LBT_\", tokenXSymbol, \"/\", tokenYSymbol, \"/\", binStepStr) */\n add(0x20, mload(0x40))\n tag_36\n swap4\n swap3\n swap2\n swap1\n tag_37\n jump\t// in\ntag_36:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"src/LBPairBeaconProxy.sol\":1879:1923 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL) */\n tag_38\n /* \"src/LBPairUnstructuredStorage.sol\":745:811 0x64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f */\n 0x64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f\n /* \"src/LBPairBeaconProxy.sol\":1905:1922 _SLOT_PAIR_SYMBOL */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":1879:1904 StorageSlot.getStringSlot */\n shl(0x20, tag_39)\n /* \"src/LBPairBeaconProxy.sol\":1879:1923 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL) */\n 0x20\n shr\n jump\t// in\ntag_38:\n /* \"src/LBPairBeaconProxy.sol\":1879:1929 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL).value */\n 0x00\n add\n /* \"src/LBPairBeaconProxy.sol\":1879:2003 StorageSlot.getStringSlot(_SLOT_PAIR_SYMBOL).value = string.concat(\"LBT_\", tokenXSymbol, \"/\", tokenYSymbol, \"/\", binStepStr) */\n swap1\n dup2\n tag_40\n swap2\n swap1\n tag_41\n jump\t// in\ntag_40:\n pop\n /* \"src/LBPairBeaconProxy.sol\":2103:2115 tokenXSymbol */\n dup5\n /* \"src/LBPairBeaconProxy.sol\":2122:2134 tokenYSymbol */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":2140:2150 binStepStr */\n dup3\n /* \"src/LBPairBeaconProxy.sol\":2064:2151 string.concat(\"Liquidity Book Token \", tokenXSymbol, \"/\", tokenYSymbol,\"/\", binStepStr) */\n add(0x20, mload(0x40))\n tag_42\n swap4\n swap3\n swap2\n swap1\n tag_43\n jump\t// in\ntag_42:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"src/LBPairBeaconProxy.sol\":2013:2055 StorageSlot.getStringSlot(_SLOT_PAIR_NAME) */\n tag_44\n /* \"src/LBPairUnstructuredStorage.sol\":955:1021 0xd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d84 */\n 0xd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d84\n /* \"src/LBPairBeaconProxy.sol\":2039:2054 _SLOT_PAIR_NAME */\n 0x00\n shl\n /* \"src/LBPairBeaconProxy.sol\":2013:2038 StorageSlot.getStringSlot */\n shl(0x20, tag_39)\n /* \"src/LBPairBeaconProxy.sol\":2013:2055 StorageSlot.getStringSlot(_SLOT_PAIR_NAME) */\n 0x20\n shr\n jump\t// in\ntag_44:\n /* \"src/LBPairBeaconProxy.sol\":2013:2061 StorageSlot.getStringSlot(_SLOT_PAIR_NAME).value */\n 0x00\n add\n /* \"src/LBPairBeaconProxy.sol\":2013:2151 StorageSlot.getStringSlot(_SLOT_PAIR_NAME).value = string.concat(\"Liquidity Book Token \", tokenXSymbol, \"/\", tokenYSymbol,\"/\", binStepStr) */\n swap1\n dup2\n tag_45\n swap2\n swap1\n tag_41\n jump\t// in\ntag_45:\n pop\n /* \"src/LBPairBeaconProxy.sol\":2162:2220 ERC1967Utils.upgradeBeaconToAndCall(_beaconAddress, _data) */\n tag_46\n /* \"src/LBPairBeaconProxy.sol\":2198:2212 _beaconAddress */\n dup13\n /* \"src/LBPairBeaconProxy.sol\":2214:2219 _data */\n dup10\n /* \"src/LBPairBeaconProxy.sol\":2162:2197 ERC1967Utils.upgradeBeaconToAndCall */\n shl(0x20, tag_7)\n /* \"src/LBPairBeaconProxy.sol\":2162:2220 ERC1967Utils.upgradeBeaconToAndCall(_beaconAddress, _data) */\n 0x20\n shr\n jump\t// in\ntag_46:\n /* \"src/LBPairBeaconProxy.sol\":904:2227 {... */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":757:2227 constructor(address _beaconAddress, address _tokenX, address _tokenY, uint16 _binStep, bytes memory _data) payable BeaconProxy(_beaconAddress, \"\") {... */\n pop\n pop\n pop\n pop\n pop\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n jump(tag_47)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5897:6230 function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {... */\ntag_7:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:6007 _setBeacon(newBeacon) */\n tag_49\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5997:6006 newBeacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:5996 _setBeacon */\n shl(0x20, tag_50)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5986:6007 _setBeacon(newBeacon) */\n 0x20\n shr\n jump\t// in\ntag_49:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6037:6046 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6022:6047 BeaconUpgraded(newBeacon) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6076:6077 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6066 data */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6073 data.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6062:6077 data.length > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\n iszero\n tag_51\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6164 Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data) */\n tag_52\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6130:6139 newBeacon */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6122:6155 IBeacon(newBeacon).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6122:6157 IBeacon(newBeacon).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_54\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\ntag_54:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_55\n swap2\n swap1\n tag_56\n jump\t// in\ntag_55:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6159:6163 data */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6121 Address.functionDelegateCall */\n shl(0x20, tag_57)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6093:6164 Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data) */\n 0x20\n shr\n jump\t// in\ntag_52:\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\n jump(tag_58)\ntag_51:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6213 _checkNonPayable() */\n tag_59\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6211 _checkNonPayable */\n shl(0x20, tag_60)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6195:6213 _checkNonPayable() */\n 0x20\n shr\n jump\t// in\ntag_59:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6058:6224 if (data.length > 0) {... */\ntag_58:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5897:6230 function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {... */\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1685:1875 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\ntag_30:\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1746:1767 AddressSlot storage r */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1855:1859 slot */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1845:1859 r.slot := slot */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1685:1875 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2549:2739 function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {... */\ntag_33:\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2610:2631 Uint256Slot storage r */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2719:2723 slot */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2709:2723 r.slot := slot */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2549:2739 function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"src/libraries/StringUtils.sol\":89:606 function uint16ToString(uint16 value) internal pure returns (string memory) {... */\ntag_35:\n /* \"src/libraries/StringUtils.sol\":150:163 string memory */\n 0x60\n /* \"src/libraries/StringUtils.sol\":188:189 0 */\n 0x00\n /* \"src/libraries/StringUtils.sol\":179:184 value */\n dup3\n /* \"src/libraries/StringUtils.sol\":179:189 value == 0 */\n 0xffff\n and\n sub\n /* \"src/libraries/StringUtils.sol\":175:226 if (value == 0) {... */\n tag_64\n jumpi\n /* \"src/libraries/StringUtils.sol\":205:215 return \"0\" */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x01\n dup2\n mstore\n 0x20\n add\n 0x3000000000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n swap1\n pop\n jump(tag_63)\n /* \"src/libraries/StringUtils.sol\":175:226 if (value == 0) {... */\ntag_64:\n /* \"src/libraries/StringUtils.sol\":235:246 uint16 temp */\n 0x00\n /* \"src/libraries/StringUtils.sol\":249:254 value */\n dup3\n /* \"src/libraries/StringUtils.sol\":235:254 uint16 temp = value */\n swap1\n pop\n /* \"src/libraries/StringUtils.sol\":264:277 uint16 digits */\n 0x00\n /* \"src/libraries/StringUtils.sol\":287:362 while (temp != 0) {... */\ntag_65:\n /* \"src/libraries/StringUtils.sol\":302:303 0 */\n 0x00\n /* \"src/libraries/StringUtils.sol\":294:298 temp */\n dup3\n /* \"src/libraries/StringUtils.sol\":294:303 temp != 0 */\n 0xffff\n and\n eq\n /* \"src/libraries/StringUtils.sol\":287:362 while (temp != 0) {... */\n tag_66\n jumpi\n /* \"src/libraries/StringUtils.sol\":319:327 digits++ */\n dup1\n dup1\n tag_67\n swap1\n tag_68\n jump\t// in\ntag_67:\n swap2\n pop\n pop\n /* \"src/libraries/StringUtils.sol\":349:351 10 */\n 0x0a\n /* \"src/libraries/StringUtils.sol\":341:351 temp /= 10 */\n dup3\n tag_69\n swap2\n swap1\n tag_70\n jump\t// in\ntag_69:\n swap2\n pop\n /* \"src/libraries/StringUtils.sol\":287:362 while (temp != 0) {... */\n jump(tag_65)\ntag_66:\n /* \"src/libraries/StringUtils.sol\":371:390 bytes memory buffer */\n 0x00\n /* \"src/libraries/StringUtils.sol\":403:409 digits */\n dup2\n /* \"src/libraries/StringUtils.sol\":393:410 new bytes(digits) */\n 0xffff\n and\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_71\n jumpi\n tag_72\n tag_73\n jump\t// in\ntag_72:\ntag_71:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x1f\n add\n not(0x1f)\n and\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_74\n jumpi\n dup2\n 0x20\n add\n 0x01\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\ntag_74:\n pop\n /* \"src/libraries/StringUtils.sol\":371:410 bytes memory buffer = new bytes(digits) */\n swap1\n pop\n /* \"src/libraries/StringUtils.sol\":420:569 while (value != 0) {... */\ntag_75:\n /* \"src/libraries/StringUtils.sol\":436:437 0 */\n 0x00\n /* \"src/libraries/StringUtils.sol\":427:432 value */\n dup6\n /* \"src/libraries/StringUtils.sol\":427:437 value != 0 */\n 0xffff\n and\n eq\n /* \"src/libraries/StringUtils.sol\":420:569 while (value != 0) {... */\n tag_76\n jumpi\n /* \"src/libraries/StringUtils.sol\":463:464 1 */\n 0x01\n /* \"src/libraries/StringUtils.sol\":453:464 digits -= 1 */\n dup3\n tag_77\n swap2\n swap1\n tag_78\n jump\t// in\ntag_77:\n swap2\n pop\n /* \"src/libraries/StringUtils.sol\":528:530 10 */\n 0x0a\n /* \"src/libraries/StringUtils.sol\":520:525 value */\n dup6\n /* \"src/libraries/StringUtils.sol\":520:530 value % 10 */\n tag_79\n swap2\n swap1\n tag_80\n jump\t// in\ntag_79:\n /* \"src/libraries/StringUtils.sol\":508:510 48 */\n 0x30\n /* \"src/libraries/StringUtils.sol\":508:531 48 + uint16(value % 10) */\n tag_81\n swap2\n swap1\n tag_82\n jump\t// in\ntag_81:\n /* \"src/libraries/StringUtils.sol\":495:533 bytes1(uint8(48 + uint16(value % 10))) */\n 0xf8\n shl\n /* \"src/libraries/StringUtils.sol\":478:484 buffer */\n dup2\n /* \"src/libraries/StringUtils.sol\":485:491 digits */\n dup4\n /* \"src/libraries/StringUtils.sol\":478:492 buffer[digits] */\n 0xffff\n and\n dup2\n mload\n dup2\n lt\n tag_83\n jumpi\n tag_84\n tag_85\n jump\t// in\ntag_84:\ntag_83:\n 0x20\n add\n add\n /* \"src/libraries/StringUtils.sol\":478:533 buffer[digits] = bytes1(uint8(48 + uint16(value % 10))) */\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n swap1\n dup2\n 0x00\n byte\n swap1\n mstore8\n pop\n /* \"src/libraries/StringUtils.sol\":556:558 10 */\n 0x0a\n /* \"src/libraries/StringUtils.sol\":547:558 value /= 10 */\n dup6\n tag_86\n swap2\n swap1\n tag_70\n jump\t// in\ntag_86:\n swap5\n pop\n /* \"src/libraries/StringUtils.sol\":420:569 while (value != 0) {... */\n jump(tag_75)\ntag_76:\n /* \"src/libraries/StringUtils.sol\":592:598 buffer */\n dup1\n /* \"src/libraries/StringUtils.sol\":578:599 return string(buffer) */\n swap4\n pop\n pop\n pop\n pop\n /* \"src/libraries/StringUtils.sol\":89:606 function uint16ToString(uint16 value) internal pure returns (string memory) {... */\ntag_63:\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2836:3024 function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {... */\ntag_39:\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2896:2916 StringSlot storage r */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":3004:3008 slot */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2994:3008 r.slot := slot */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":2836:3024 function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4935:5372 function _setBeacon(address newBeacon) private {... */\ntag_50:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5021:5022 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5005 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5017 newBeacon.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4996:5022 newBeacon.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4992:5087 if (newBeacon.code.length == 0) {... */\n tag_89\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5066:5075 newBeacon */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5045:5076 ERC1967InvalidBeacon(newBeacon) */\n mload(0x40)\n 0x64ced0ec00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_90\n swap2\n swap1\n tag_91\n jump\t// in\ntag_90:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4992:5087 if (newBeacon.code.length == 0) {... */\ntag_89:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5145:5154 newBeacon */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5136 StorageSlot.getAddressSlot(BEACON_SLOT) */\n tag_92\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4601:4667 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50 */\n 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5124:5135 BEACON_SLOT */\n 0x00\n shl\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5123 StorageSlot.getAddressSlot */\n shl(0x20, tag_30)\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5136 StorageSlot.getAddressSlot(BEACON_SLOT) */\n 0x20\n shr\n jump\t// in\ntag_92:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5142 StorageSlot.getAddressSlot(BEACON_SLOT).value */\n 0x00\n add\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5097:5154 StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5165:5193 address beaconImplementation */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5204:5213 newBeacon */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5196:5229 IBeacon(newBeacon).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5196:5231 IBeacon(newBeacon).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_94\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\ntag_94:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_95\n swap2\n swap1\n tag_56\n jump\t// in\ntag_95:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5165:5231 address beaconImplementation = IBeacon(newBeacon).implementation() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5281:5282 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5265 beaconImplementation */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5277 beaconImplementation.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5245:5282 beaconImplementation.code.length == 0 */\n sub\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5241:5366 if (beaconImplementation.code.length == 0) {... */\n tag_96\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5334:5354 beaconImplementation */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5305:5355 ERC1967InvalidImplementation(beaconImplementation) */\n mload(0x40)\n 0x4c9c8ce300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_97\n swap2\n swap1\n tag_91\n jump\t// in\ntag_97:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":5241:5366 if (beaconImplementation.code.length == 0) {... */\ntag_96:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4982:5372 {... */\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":4935:5372 function _setBeacon(address newBeacon) private {... */\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\ntag_57:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4189:4201 bytes memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4214:4226 bool success */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4228:4251 bytes memory returndata */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4261 target */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4274 target.delegatecall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4275:4279 data */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4280 target.delegatecall(data) */\n mload(0x40)\n tag_99\n swap2\n swap1\n tag_10\n jump\t// in\ntag_99:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n delegatecall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_102\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_101)\ntag_102:\n 0x60\n swap2\n pop\ntag_101:\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4213:4280 (bool success, bytes memory returndata) = target.delegatecall(data) */\n swap2\n pop\n swap2\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n tag_103\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4324:4330 target */\n dup6\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4332:4339 success */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4341:4351 returndata */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4323 verifyCallResultFromTarget */\n shl(0x20, tag_104)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n 0x20\n shr\n jump\t// in\ntag_103:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4290:4352 return verifyCallResultFromTarget(target, success, returndata) */\n swap3\n pop\n pop\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6419:6541 function _checkNonPayable() private {... */\ntag_60:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6481:6482 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6469:6478 msg.value */\n callvalue\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6469:6482 msg.value > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6465:6535 if (msg.value > 0) {... */\n iszero\n tag_106\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6505:6524 ERC1967NonPayable() */\n mload(0x40)\n 0xb398979f00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6465:6535 if (msg.value > 0) {... */\ntag_106:\n /* \"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6419:6541 function _checkNonPayable() private {... */\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\ntag_104:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4769:4781 bytes memory */\n 0x60\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4798:4805 success */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n tag_108\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n tag_109\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4829:4839 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4828 _revert */\n shl(0x20, tag_110)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n 0x20\n shr\n jump\t// in\ntag_109:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n jump(tag_111)\ntag_108:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5066:5067 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5055 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5062 returndata.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5067 returndata.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\n dup1\n iszero\n tag_112\n jumpi\n pop\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5093:5094 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5077 target */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5089 target.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5094 target.code.length == 0 */\n eq\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\ntag_112:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\n iszero\n tag_113\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5138:5144 target */\n dup4\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5121:5145 AddressEmptyCode(target) */\n mload(0x40)\n 0x9996b31500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_114\n swap2\n swap1\n tag_91\n jump\t// in\ntag_114:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\ntag_113:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5180:5190 returndata */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5173:5190 return returndata */\n swap1\n pop\n jump(tag_107)\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\ntag_111:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\ntag_107:\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5743:6259 function _revert(bytes memory returndata) private pure {... */\ntag_110:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5894:5895 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5884 returndata */\n dup2\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5891 returndata.length */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5895 returndata.length > 0 */\n gt\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\n iszero\n tag_116\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6102:6112 returndata */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6096:6113 mload(returndata) */\n mload\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6158:6173 returndata_size */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6145:6155 returndata */\n dup3\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6141:6143 32 */\n 0x20\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6137:6156 add(32, returndata) */\n add\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6130:6174 revert(add(32, returndata), returndata_size) */\n revert\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\ntag_116:\n /* \"lib/openzeppelin-contracts/contracts/utils/Address.sol\":6225:6242 FailedInnerCall() */\n mload(0x40)\n 0x1425ea4200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"#utility.yul\":7:82 */\ntag_118:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_119:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\ntag_120:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:460 */\ntag_121:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\ntag_122:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_181\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_121\n jump\t// in\ntag_181:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\ntag_123:\n /* \"#utility.yul\":641:665 */\n tag_183\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_122\n jump\t// in\ntag_183:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_184\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\ntag_184:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:839 */\ntag_124:\n /* \"#utility.yul\":753:758 */\n 0x00\n /* \"#utility.yul\":784:790 */\n dup2\n /* \"#utility.yul\":778:791 */\n mload\n /* \"#utility.yul\":769:791 */\n swap1\n pop\n /* \"#utility.yul\":800:833 */\n tag_186\n /* \"#utility.yul\":827:832 */\n dup2\n /* \"#utility.yul\":800:833 */\n tag_123\n jump\t// in\ntag_186:\n /* \"#utility.yul\":696:839 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":845:934 */\ntag_125:\n /* \"#utility.yul\":881:888 */\n 0x00\n /* \"#utility.yul\":921:927 */\n 0xffff\n /* \"#utility.yul\":914:919 */\n dup3\n /* \"#utility.yul\":910:928 */\n and\n /* \"#utility.yul\":899:928 */\n swap1\n pop\n /* \"#utility.yul\":845:934 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":940:1060 */\ntag_126:\n /* \"#utility.yul\":1012:1035 */\n tag_189\n /* \"#utility.yul\":1029:1034 */\n dup2\n /* \"#utility.yul\":1012:1035 */\n tag_125\n jump\t// in\ntag_189:\n /* \"#utility.yul\":1005:1010 */\n dup2\n /* \"#utility.yul\":1002:1036 */\n eq\n /* \"#utility.yul\":992:1054 */\n tag_190\n jumpi\n /* \"#utility.yul\":1050:1051 */\n 0x00\n /* \"#utility.yul\":1047:1048 */\n dup1\n /* \"#utility.yul\":1040:1052 */\n revert\n /* \"#utility.yul\":992:1054 */\ntag_190:\n /* \"#utility.yul\":940:1060 */\n pop\n jump\t// out\n /* \"#utility.yul\":1066:1207 */\ntag_127:\n /* \"#utility.yul\":1122:1127 */\n 0x00\n /* \"#utility.yul\":1153:1159 */\n dup2\n /* \"#utility.yul\":1147:1160 */\n mload\n /* \"#utility.yul\":1138:1160 */\n swap1\n pop\n /* \"#utility.yul\":1169:1201 */\n tag_192\n /* \"#utility.yul\":1195:1200 */\n dup2\n /* \"#utility.yul\":1169:1201 */\n tag_126\n jump\t// in\ntag_192:\n /* \"#utility.yul\":1066:1207 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1213:1330 */\ntag_128:\n /* \"#utility.yul\":1322:1323 */\n 0x00\n /* \"#utility.yul\":1319:1320 */\n dup1\n /* \"#utility.yul\":1312:1324 */\n revert\n /* \"#utility.yul\":1336:1453 */\ntag_129:\n /* \"#utility.yul\":1445:1446 */\n 0x00\n /* \"#utility.yul\":1442:1443 */\n dup1\n /* \"#utility.yul\":1435:1447 */\n revert\n /* \"#utility.yul\":1459:1561 */\ntag_130:\n /* \"#utility.yul\":1500:1506 */\n 0x00\n /* \"#utility.yul\":1551:1553 */\n 0x1f\n /* \"#utility.yul\":1547:1554 */\n not\n /* \"#utility.yul\":1542:1544 */\n 0x1f\n /* \"#utility.yul\":1535:1540 */\n dup4\n /* \"#utility.yul\":1531:1545 */\n add\n /* \"#utility.yul\":1527:1555 */\n and\n /* \"#utility.yul\":1517:1555 */\n swap1\n pop\n /* \"#utility.yul\":1459:1561 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1567:1747 */\ntag_73:\n /* \"#utility.yul\":1615:1692 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1612:1613 */\n 0x00\n /* \"#utility.yul\":1605:1693 */\n mstore\n /* \"#utility.yul\":1712:1716 */\n 0x41\n /* \"#utility.yul\":1709:1710 */\n 0x04\n /* \"#utility.yul\":1702:1717 */\n mstore\n /* \"#utility.yul\":1736:1740 */\n 0x24\n /* \"#utility.yul\":1733:1734 */\n 0x00\n /* \"#utility.yul\":1726:1741 */\n revert\n /* \"#utility.yul\":1753:2034 */\ntag_131:\n /* \"#utility.yul\":1836:1863 */\n tag_198\n /* \"#utility.yul\":1858:1862 */\n dup3\n /* \"#utility.yul\":1836:1863 */\n tag_130\n jump\t// in\ntag_198:\n /* \"#utility.yul\":1828:1834 */\n dup2\n /* \"#utility.yul\":1824:1864 */\n add\n /* \"#utility.yul\":1966:1972 */\n dup2\n /* \"#utility.yul\":1954:1964 */\n dup2\n /* \"#utility.yul\":1951:1973 */\n lt\n /* \"#utility.yul\":1930:1948 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1918:1928 */\n dup3\n /* \"#utility.yul\":1915:1949 */\n gt\n /* \"#utility.yul\":1912:1974 */\n or\n /* \"#utility.yul\":1909:1997 */\n iszero\n tag_199\n jumpi\n /* \"#utility.yul\":1977:1995 */\n tag_200\n tag_73\n jump\t// in\ntag_200:\n /* \"#utility.yul\":1909:1997 */\ntag_199:\n /* \"#utility.yul\":2017:2027 */\n dup1\n /* \"#utility.yul\":2013:2015 */\n 0x40\n /* \"#utility.yul\":2006:2028 */\n mstore\n /* \"#utility.yul\":1796:2034 */\n pop\n /* \"#utility.yul\":1753:2034 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2040:2169 */\ntag_132:\n /* \"#utility.yul\":2074:2080 */\n 0x00\n /* \"#utility.yul\":2101:2121 */\n tag_202\n tag_118\n jump\t// in\ntag_202:\n /* \"#utility.yul\":2091:2121 */\n swap1\n pop\n /* \"#utility.yul\":2130:2163 */\n tag_203\n /* \"#utility.yul\":2158:2162 */\n dup3\n /* \"#utility.yul\":2150:2156 */\n dup3\n /* \"#utility.yul\":2130:2163 */\n tag_131\n jump\t// in\ntag_203:\n /* \"#utility.yul\":2040:2169 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2175:2482 */\ntag_133:\n /* \"#utility.yul\":2236:2240 */\n 0x00\n /* \"#utility.yul\":2326:2344 */\n 0xffffffffffffffff\n /* \"#utility.yul\":2318:2324 */\n dup3\n /* \"#utility.yul\":2315:2345 */\n gt\n /* \"#utility.yul\":2312:2368 */\n iszero\n tag_205\n jumpi\n /* \"#utility.yul\":2348:2366 */\n tag_206\n tag_73\n jump\t// in\ntag_206:\n /* \"#utility.yul\":2312:2368 */\ntag_205:\n /* \"#utility.yul\":2386:2415 */\n tag_207\n /* \"#utility.yul\":2408:2414 */\n dup3\n /* \"#utility.yul\":2386:2415 */\n tag_130\n jump\t// in\ntag_207:\n /* \"#utility.yul\":2378:2415 */\n swap1\n pop\n /* \"#utility.yul\":2470:2474 */\n 0x20\n /* \"#utility.yul\":2464:2468 */\n dup2\n /* \"#utility.yul\":2460:2475 */\n add\n /* \"#utility.yul\":2452:2475 */\n swap1\n pop\n /* \"#utility.yul\":2175:2482 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2488:2734 */\ntag_134:\n /* \"#utility.yul\":2569:2570 */\n 0x00\n /* \"#utility.yul\":2579:2692 */\ntag_209:\n /* \"#utility.yul\":2593:2599 */\n dup4\n /* \"#utility.yul\":2590:2591 */\n dup2\n /* \"#utility.yul\":2587:2600 */\n lt\n /* \"#utility.yul\":2579:2692 */\n iszero\n tag_211\n jumpi\n /* \"#utility.yul\":2678:2679 */\n dup1\n /* \"#utility.yul\":2673:2676 */\n dup3\n /* \"#utility.yul\":2669:2680 */\n add\n /* \"#utility.yul\":2663:2681 */\n mload\n /* \"#utility.yul\":2659:2660 */\n dup2\n /* \"#utility.yul\":2654:2657 */\n dup5\n /* \"#utility.yul\":2650:2661 */\n add\n /* \"#utility.yul\":2643:2682 */\n mstore\n /* \"#utility.yul\":2615:2617 */\n 0x20\n /* \"#utility.yul\":2612:2613 */\n dup2\n /* \"#utility.yul\":2608:2618 */\n add\n /* \"#utility.yul\":2603:2618 */\n swap1\n pop\n /* \"#utility.yul\":2579:2692 */\n jump(tag_209)\ntag_211:\n /* \"#utility.yul\":2726:2727 */\n 0x00\n /* \"#utility.yul\":2717:2723 */\n dup5\n /* \"#utility.yul\":2712:2715 */\n dup5\n /* \"#utility.yul\":2708:2724 */\n add\n /* \"#utility.yul\":2701:2728 */\n mstore\n /* \"#utility.yul\":2550:2734 */\n pop\n /* \"#utility.yul\":2488:2734 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2740:3172 */\ntag_135:\n /* \"#utility.yul\":2828:2833 */\n 0x00\n /* \"#utility.yul\":2853:2918 */\n tag_213\n /* \"#utility.yul\":2869:2917 */\n tag_214\n /* \"#utility.yul\":2910:2916 */\n dup5\n /* \"#utility.yul\":2869:2917 */\n tag_133\n jump\t// in\ntag_214:\n /* \"#utility.yul\":2853:2918 */\n tag_132\n jump\t// in\ntag_213:\n /* \"#utility.yul\":2844:2918 */\n swap1\n pop\n /* \"#utility.yul\":2941:2947 */\n dup3\n /* \"#utility.yul\":2934:2939 */\n dup2\n /* \"#utility.yul\":2927:2948 */\n mstore\n /* \"#utility.yul\":2979:2983 */\n 0x20\n /* \"#utility.yul\":2972:2977 */\n dup2\n /* \"#utility.yul\":2968:2984 */\n add\n /* \"#utility.yul\":3017:3020 */\n dup5\n /* \"#utility.yul\":3008:3014 */\n dup5\n /* \"#utility.yul\":3003:3006 */\n dup5\n /* \"#utility.yul\":2999:3015 */\n add\n /* \"#utility.yul\":2996:3021 */\n gt\n /* \"#utility.yul\":2993:3105 */\n iszero\n tag_215\n jumpi\n /* \"#utility.yul\":3024:3103 */\n tag_216\n tag_129\n jump\t// in\ntag_216:\n /* \"#utility.yul\":2993:3105 */\ntag_215:\n /* \"#utility.yul\":3114:3166 */\n tag_217\n /* \"#utility.yul\":3159:3165 */\n dup5\n /* \"#utility.yul\":3154:3157 */\n dup3\n /* \"#utility.yul\":3149:3152 */\n dup6\n /* \"#utility.yul\":3114:3166 */\n tag_134\n jump\t// in\ntag_217:\n /* \"#utility.yul\":2834:3172 */\n pop\n /* \"#utility.yul\":2740:3172 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3191:3544 */\ntag_136:\n /* \"#utility.yul\":3257:3262 */\n 0x00\n /* \"#utility.yul\":3306:3309 */\n dup3\n /* \"#utility.yul\":3299:3303 */\n 0x1f\n /* \"#utility.yul\":3291:3297 */\n dup4\n /* \"#utility.yul\":3287:3304 */\n add\n /* \"#utility.yul\":3283:3310 */\n slt\n /* \"#utility.yul\":3273:3395 */\n tag_219\n jumpi\n /* \"#utility.yul\":3314:3393 */\n tag_220\n tag_128\n jump\t// in\ntag_220:\n /* \"#utility.yul\":3273:3395 */\ntag_219:\n /* \"#utility.yul\":3424:3430 */\n dup2\n /* \"#utility.yul\":3418:3431 */\n mload\n /* \"#utility.yul\":3449:3538 */\n tag_221\n /* \"#utility.yul\":3534:3537 */\n dup5\n /* \"#utility.yul\":3526:3532 */\n dup3\n /* \"#utility.yul\":3519:3523 */\n 0x20\n /* \"#utility.yul\":3511:3517 */\n dup7\n /* \"#utility.yul\":3507:3524 */\n add\n /* \"#utility.yul\":3449:3538 */\n tag_135\n jump\t// in\ntag_221:\n /* \"#utility.yul\":3440:3538 */\n swap2\n pop\n /* \"#utility.yul\":3263:3544 */\n pop\n /* \"#utility.yul\":3191:3544 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3550:4696 */\ntag_2:\n /* \"#utility.yul\":3664:3670 */\n 0x00\n /* \"#utility.yul\":3672:3678 */\n dup1\n /* \"#utility.yul\":3680:3686 */\n 0x00\n /* \"#utility.yul\":3688:3694 */\n dup1\n /* \"#utility.yul\":3696:3702 */\n 0x00\n /* \"#utility.yul\":3745:3748 */\n 0xa0\n /* \"#utility.yul\":3733:3742 */\n dup7\n /* \"#utility.yul\":3724:3731 */\n dup9\n /* \"#utility.yul\":3720:3743 */\n sub\n /* \"#utility.yul\":3716:3749 */\n slt\n /* \"#utility.yul\":3713:3833 */\n iszero\n tag_223\n jumpi\n /* \"#utility.yul\":3752:3831 */\n tag_224\n tag_119\n jump\t// in\ntag_224:\n /* \"#utility.yul\":3713:3833 */\ntag_223:\n /* \"#utility.yul\":3872:3873 */\n 0x00\n /* \"#utility.yul\":3897:3961 */\n tag_225\n /* \"#utility.yul\":3953:3960 */\n dup9\n /* \"#utility.yul\":3944:3950 */\n dup3\n /* \"#utility.yul\":3933:3942 */\n dup10\n /* \"#utility.yul\":3929:3951 */\n add\n /* \"#utility.yul\":3897:3961 */\n tag_124\n jump\t// in\ntag_225:\n /* \"#utility.yul\":3887:3961 */\n swap6\n pop\n /* \"#utility.yul\":3843:3971 */\n pop\n /* \"#utility.yul\":4010:4012 */\n 0x20\n /* \"#utility.yul\":4036:4100 */\n tag_226\n /* \"#utility.yul\":4092:4099 */\n dup9\n /* \"#utility.yul\":4083:4089 */\n dup3\n /* \"#utility.yul\":4072:4081 */\n dup10\n /* \"#utility.yul\":4068:4090 */\n add\n /* \"#utility.yul\":4036:4100 */\n tag_124\n jump\t// in\ntag_226:\n /* \"#utility.yul\":4026:4100 */\n swap5\n pop\n /* \"#utility.yul\":3981:4110 */\n pop\n /* \"#utility.yul\":4149:4151 */\n 0x40\n /* \"#utility.yul\":4175:4239 */\n tag_227\n /* \"#utility.yul\":4231:4238 */\n dup9\n /* \"#utility.yul\":4222:4228 */\n dup3\n /* \"#utility.yul\":4211:4220 */\n dup10\n /* \"#utility.yul\":4207:4229 */\n add\n /* \"#utility.yul\":4175:4239 */\n tag_124\n jump\t// in\ntag_227:\n /* \"#utility.yul\":4165:4239 */\n swap4\n pop\n /* \"#utility.yul\":4120:4249 */\n pop\n /* \"#utility.yul\":4288:4290 */\n 0x60\n /* \"#utility.yul\":4314:4377 */\n tag_228\n /* \"#utility.yul\":4369:4376 */\n dup9\n /* \"#utility.yul\":4360:4366 */\n dup3\n /* \"#utility.yul\":4349:4358 */\n dup10\n /* \"#utility.yul\":4345:4367 */\n add\n /* \"#utility.yul\":4314:4377 */\n tag_127\n jump\t// in\ntag_228:\n /* \"#utility.yul\":4304:4377 */\n swap3\n pop\n /* \"#utility.yul\":4259:4387 */\n pop\n /* \"#utility.yul\":4447:4450 */\n 0x80\n /* \"#utility.yul\":4436:4445 */\n dup7\n /* \"#utility.yul\":4432:4451 */\n add\n /* \"#utility.yul\":4426:4452 */\n mload\n /* \"#utility.yul\":4479:4497 */\n 0xffffffffffffffff\n /* \"#utility.yul\":4471:4477 */\n dup2\n /* \"#utility.yul\":4468:4498 */\n gt\n /* \"#utility.yul\":4465:4582 */\n iszero\n tag_229\n jumpi\n /* \"#utility.yul\":4501:4580 */\n tag_230\n tag_120\n jump\t// in\ntag_230:\n /* \"#utility.yul\":4465:4582 */\ntag_229:\n /* \"#utility.yul\":4606:4679 */\n tag_231\n /* \"#utility.yul\":4671:4678 */\n dup9\n /* \"#utility.yul\":4662:4668 */\n dup3\n /* \"#utility.yul\":4651:4660 */\n dup10\n /* \"#utility.yul\":4647:4669 */\n add\n /* \"#utility.yul\":4606:4679 */\n tag_136\n jump\t// in\ntag_231:\n /* \"#utility.yul\":4596:4679 */\n swap2\n pop\n /* \"#utility.yul\":4397:4689 */\n pop\n /* \"#utility.yul\":3550:4696 */\n swap3\n swap6\n pop\n swap3\n swap6\n swap1\n swap4\n pop\n jump\t// out\n /* \"#utility.yul\":4702:4800 */\ntag_137:\n /* \"#utility.yul\":4753:4759 */\n 0x00\n /* \"#utility.yul\":4787:4792 */\n dup2\n /* \"#utility.yul\":4781:4793 */\n mload\n /* \"#utility.yul\":4771:4793 */\n swap1\n pop\n /* \"#utility.yul\":4702:4800 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4806:4953 */\ntag_138:\n /* \"#utility.yul\":4907:4918 */\n 0x00\n /* \"#utility.yul\":4944:4947 */\n dup2\n /* \"#utility.yul\":4929:4947 */\n swap1\n pop\n /* \"#utility.yul\":4806:4953 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4959:5345 */\ntag_139:\n /* \"#utility.yul\":5063:5066 */\n 0x00\n /* \"#utility.yul\":5091:5129 */\n tag_235\n /* \"#utility.yul\":5123:5128 */\n dup3\n /* \"#utility.yul\":5091:5129 */\n tag_137\n jump\t// in\ntag_235:\n /* \"#utility.yul\":5145:5233 */\n tag_236\n /* \"#utility.yul\":5226:5232 */\n dup2\n /* \"#utility.yul\":5221:5224 */\n dup6\n /* \"#utility.yul\":5145:5233 */\n tag_138\n jump\t// in\ntag_236:\n /* \"#utility.yul\":5138:5233 */\n swap4\n pop\n /* \"#utility.yul\":5242:5307 */\n tag_237\n /* \"#utility.yul\":5300:5306 */\n dup2\n /* \"#utility.yul\":5295:5298 */\n dup6\n /* \"#utility.yul\":5288:5292 */\n 0x20\n /* \"#utility.yul\":5281:5286 */\n dup7\n /* \"#utility.yul\":5277:5293 */\n add\n /* \"#utility.yul\":5242:5307 */\n tag_134\n jump\t// in\ntag_237:\n /* \"#utility.yul\":5332:5338 */\n dup1\n /* \"#utility.yul\":5327:5330 */\n dup5\n /* \"#utility.yul\":5323:5339 */\n add\n /* \"#utility.yul\":5316:5339 */\n swap2\n pop\n /* \"#utility.yul\":5067:5345 */\n pop\n /* \"#utility.yul\":4959:5345 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5351:5622 */\ntag_10:\n /* \"#utility.yul\":5481:5484 */\n 0x00\n /* \"#utility.yul\":5503:5596 */\n tag_239\n /* \"#utility.yul\":5592:5595 */\n dup3\n /* \"#utility.yul\":5583:5589 */\n dup5\n /* \"#utility.yul\":5503:5596 */\n tag_139\n jump\t// in\ntag_239:\n /* \"#utility.yul\":5496:5596 */\n swap2\n pop\n /* \"#utility.yul\":5613:5616 */\n dup2\n /* \"#utility.yul\":5606:5616 */\n swap1\n pop\n /* \"#utility.yul\":5351:5622 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5628:5936 */\ntag_140:\n /* \"#utility.yul\":5690:5694 */\n 0x00\n /* \"#utility.yul\":5780:5798 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5772:5778 */\n dup3\n /* \"#utility.yul\":5769:5799 */\n gt\n /* \"#utility.yul\":5766:5822 */\n iszero\n tag_241\n jumpi\n /* \"#utility.yul\":5802:5820 */\n tag_242\n tag_73\n jump\t// in\ntag_242:\n /* \"#utility.yul\":5766:5822 */\ntag_241:\n /* \"#utility.yul\":5840:5869 */\n tag_243\n /* \"#utility.yul\":5862:5868 */\n dup3\n /* \"#utility.yul\":5840:5869 */\n tag_130\n jump\t// in\ntag_243:\n /* \"#utility.yul\":5832:5869 */\n swap1\n pop\n /* \"#utility.yul\":5924:5928 */\n 0x20\n /* \"#utility.yul\":5918:5922 */\n dup2\n /* \"#utility.yul\":5914:5929 */\n add\n /* \"#utility.yul\":5906:5929 */\n swap1\n pop\n /* \"#utility.yul\":5628:5936 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5942:6376 */\ntag_141:\n /* \"#utility.yul\":6031:6036 */\n 0x00\n /* \"#utility.yul\":6056:6122 */\n tag_245\n /* \"#utility.yul\":6072:6121 */\n tag_246\n /* \"#utility.yul\":6114:6120 */\n dup5\n /* \"#utility.yul\":6072:6121 */\n tag_140\n jump\t// in\ntag_246:\n /* \"#utility.yul\":6056:6122 */\n tag_132\n jump\t// in\ntag_245:\n /* \"#utility.yul\":6047:6122 */\n swap1\n pop\n /* \"#utility.yul\":6145:6151 */\n dup3\n /* \"#utility.yul\":6138:6143 */\n dup2\n /* \"#utility.yul\":6131:6152 */\n mstore\n /* \"#utility.yul\":6183:6187 */\n 0x20\n /* \"#utility.yul\":6176:6181 */\n dup2\n /* \"#utility.yul\":6172:6188 */\n add\n /* \"#utility.yul\":6221:6224 */\n dup5\n /* \"#utility.yul\":6212:6218 */\n dup5\n /* \"#utility.yul\":6207:6210 */\n dup5\n /* \"#utility.yul\":6203:6219 */\n add\n /* \"#utility.yul\":6200:6225 */\n gt\n /* \"#utility.yul\":6197:6309 */\n iszero\n tag_247\n jumpi\n /* \"#utility.yul\":6228:6307 */\n tag_248\n tag_129\n jump\t// in\ntag_248:\n /* \"#utility.yul\":6197:6309 */\ntag_247:\n /* \"#utility.yul\":6318:6370 */\n tag_249\n /* \"#utility.yul\":6363:6369 */\n dup5\n /* \"#utility.yul\":6358:6361 */\n dup3\n /* \"#utility.yul\":6353:6356 */\n dup6\n /* \"#utility.yul\":6318:6370 */\n tag_134\n jump\t// in\ntag_249:\n /* \"#utility.yul\":6037:6376 */\n pop\n /* \"#utility.yul\":5942:6376 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6396:6751 */\ntag_142:\n /* \"#utility.yul\":6463:6468 */\n 0x00\n /* \"#utility.yul\":6512:6515 */\n dup3\n /* \"#utility.yul\":6505:6509 */\n 0x1f\n /* \"#utility.yul\":6497:6503 */\n dup4\n /* \"#utility.yul\":6493:6510 */\n add\n /* \"#utility.yul\":6489:6516 */\n slt\n /* \"#utility.yul\":6479:6601 */\n tag_251\n jumpi\n /* \"#utility.yul\":6520:6599 */\n tag_252\n tag_128\n jump\t// in\ntag_252:\n /* \"#utility.yul\":6479:6601 */\ntag_251:\n /* \"#utility.yul\":6630:6636 */\n dup2\n /* \"#utility.yul\":6624:6637 */\n mload\n /* \"#utility.yul\":6655:6745 */\n tag_253\n /* \"#utility.yul\":6741:6744 */\n dup5\n /* \"#utility.yul\":6733:6739 */\n dup3\n /* \"#utility.yul\":6726:6730 */\n 0x20\n /* \"#utility.yul\":6718:6724 */\n dup7\n /* \"#utility.yul\":6714:6731 */\n add\n /* \"#utility.yul\":6655:6745 */\n tag_141\n jump\t// in\ntag_253:\n /* \"#utility.yul\":6646:6745 */\n swap2\n pop\n /* \"#utility.yul\":6469:6751 */\n pop\n /* \"#utility.yul\":6396:6751 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6757:7281 */\ntag_15:\n /* \"#utility.yul\":6837:6843 */\n 0x00\n /* \"#utility.yul\":6886:6888 */\n 0x20\n /* \"#utility.yul\":6874:6883 */\n dup3\n /* \"#utility.yul\":6865:6872 */\n dup5\n /* \"#utility.yul\":6861:6884 */\n sub\n /* \"#utility.yul\":6857:6889 */\n slt\n /* \"#utility.yul\":6854:6973 */\n iszero\n tag_255\n jumpi\n /* \"#utility.yul\":6892:6971 */\n tag_256\n tag_119\n jump\t// in\ntag_256:\n /* \"#utility.yul\":6854:6973 */\ntag_255:\n /* \"#utility.yul\":7033:7034 */\n 0x00\n /* \"#utility.yul\":7022:7031 */\n dup3\n /* \"#utility.yul\":7018:7035 */\n add\n /* \"#utility.yul\":7012:7036 */\n mload\n /* \"#utility.yul\":7063:7081 */\n 0xffffffffffffffff\n /* \"#utility.yul\":7055:7061 */\n dup2\n /* \"#utility.yul\":7052:7082 */\n gt\n /* \"#utility.yul\":7049:7166 */\n iszero\n tag_257\n jumpi\n /* \"#utility.yul\":7085:7164 */\n tag_258\n tag_120\n jump\t// in\ntag_258:\n /* \"#utility.yul\":7049:7166 */\ntag_257:\n /* \"#utility.yul\":7190:7264 */\n tag_259\n /* \"#utility.yul\":7256:7263 */\n dup5\n /* \"#utility.yul\":7247:7253 */\n dup3\n /* \"#utility.yul\":7236:7245 */\n dup6\n /* \"#utility.yul\":7232:7254 */\n add\n /* \"#utility.yul\":7190:7264 */\n tag_142\n jump\t// in\ntag_259:\n /* \"#utility.yul\":7180:7264 */\n swap2\n pop\n /* \"#utility.yul\":6983:7274 */\n pop\n /* \"#utility.yul\":6757:7281 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7287:7456 */\ntag_143:\n /* \"#utility.yul\":7371:7382 */\n 0x00\n /* \"#utility.yul\":7405:7411 */\n dup3\n /* \"#utility.yul\":7400:7403 */\n dup3\n /* \"#utility.yul\":7393:7412 */\n mstore\n /* \"#utility.yul\":7445:7449 */\n 0x20\n /* \"#utility.yul\":7440:7443 */\n dup3\n /* \"#utility.yul\":7436:7450 */\n add\n /* \"#utility.yul\":7421:7450 */\n swap1\n pop\n /* \"#utility.yul\":7287:7456 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7462:7695 */\ntag_144:\n /* \"#utility.yul\":7602:7636 */\n 0x4c4250616972426561636f6e50726f78793a204661696c656420746f20676574\n /* \"#utility.yul\":7598:7599 */\n 0x00\n /* \"#utility.yul\":7590:7596 */\n dup3\n /* \"#utility.yul\":7586:7600 */\n add\n /* \"#utility.yul\":7579:7637 */\n mstore\n /* \"#utility.yul\":7671:7687 */\n 0x20746f6b656e2073796d626f6c73000000000000000000000000000000000000\n /* \"#utility.yul\":7666:7668 */\n 0x20\n /* \"#utility.yul\":7658:7664 */\n dup3\n /* \"#utility.yul\":7654:7669 */\n add\n /* \"#utility.yul\":7647:7688 */\n mstore\n /* \"#utility.yul\":7462:7695 */\n pop\n jump\t// out\n /* \"#utility.yul\":7701:8067 */\ntag_145:\n /* \"#utility.yul\":7843:7846 */\n 0x00\n /* \"#utility.yul\":7864:7931 */\n tag_263\n /* \"#utility.yul\":7928:7930 */\n 0x2e\n /* \"#utility.yul\":7923:7926 */\n dup4\n /* \"#utility.yul\":7864:7931 */\n tag_143\n jump\t// in\ntag_263:\n /* \"#utility.yul\":7857:7931 */\n swap2\n pop\n /* \"#utility.yul\":7940:8033 */\n tag_264\n /* \"#utility.yul\":8029:8032 */\n dup3\n /* \"#utility.yul\":7940:8033 */\n tag_144\n jump\t// in\ntag_264:\n /* \"#utility.yul\":8058:8060 */\n 0x40\n /* \"#utility.yul\":8053:8056 */\n dup3\n /* \"#utility.yul\":8049:8061 */\n add\n /* \"#utility.yul\":8042:8061 */\n swap1\n pop\n /* \"#utility.yul\":7701:8067 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8073:8492 */\ntag_24:\n /* \"#utility.yul\":8239:8243 */\n 0x00\n /* \"#utility.yul\":8277:8279 */\n 0x20\n /* \"#utility.yul\":8266:8275 */\n dup3\n /* \"#utility.yul\":8262:8280 */\n add\n /* \"#utility.yul\":8254:8280 */\n swap1\n pop\n /* \"#utility.yul\":8326:8335 */\n dup2\n /* \"#utility.yul\":8320:8324 */\n dup2\n /* \"#utility.yul\":8316:8336 */\n sub\n /* \"#utility.yul\":8312:8313 */\n 0x00\n /* \"#utility.yul\":8301:8310 */\n dup4\n /* \"#utility.yul\":8297:8314 */\n add\n /* \"#utility.yul\":8290:8337 */\n mstore\n /* \"#utility.yul\":8354:8485 */\n tag_266\n /* \"#utility.yul\":8480:8484 */\n dup2\n /* \"#utility.yul\":8354:8485 */\n tag_145\n jump\t// in\ntag_266:\n /* \"#utility.yul\":8346:8485 */\n swap1\n pop\n /* \"#utility.yul\":8073:8492 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":8498:8725 */\ntag_146:\n /* \"#utility.yul\":8638:8672 */\n 0x4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e\n /* \"#utility.yul\":8634:8635 */\n 0x00\n /* \"#utility.yul\":8626:8632 */\n dup3\n /* \"#utility.yul\":8622:8636 */\n add\n /* \"#utility.yul\":8615:8673 */\n mstore\n /* \"#utility.yul\":8707:8717 */\n 0x2073796d626f6c73000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":8702:8704 */\n 0x20\n /* \"#utility.yul\":8694:8700 */\n dup3\n /* \"#utility.yul\":8690:8705 */\n add\n /* \"#utility.yul\":8683:8718 */\n mstore\n /* \"#utility.yul\":8498:8725 */\n pop\n jump\t// out\n /* \"#utility.yul\":8731:9097 */\ntag_147:\n /* \"#utility.yul\":8873:8876 */\n 0x00\n /* \"#utility.yul\":8894:8961 */\n tag_269\n /* \"#utility.yul\":8958:8960 */\n 0x28\n /* \"#utility.yul\":8953:8956 */\n dup4\n /* \"#utility.yul\":8894:8961 */\n tag_143\n jump\t// in\ntag_269:\n /* \"#utility.yul\":8887:8961 */\n swap2\n pop\n /* \"#utility.yul\":8970:9063 */\n tag_270\n /* \"#utility.yul\":9059:9062 */\n dup3\n /* \"#utility.yul\":8970:9063 */\n tag_146\n jump\t// in\ntag_270:\n /* \"#utility.yul\":9088:9090 */\n 0x40\n /* \"#utility.yul\":9083:9086 */\n dup3\n /* \"#utility.yul\":9079:9091 */\n add\n /* \"#utility.yul\":9072:9091 */\n swap1\n pop\n /* \"#utility.yul\":8731:9097 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9103:9522 */\ntag_28:\n /* \"#utility.yul\":9269:9273 */\n 0x00\n /* \"#utility.yul\":9307:9309 */\n 0x20\n /* \"#utility.yul\":9296:9305 */\n dup3\n /* \"#utility.yul\":9292:9310 */\n add\n /* \"#utility.yul\":9284:9310 */\n swap1\n pop\n /* \"#utility.yul\":9356:9365 */\n dup2\n /* \"#utility.yul\":9350:9354 */\n dup2\n /* \"#utility.yul\":9346:9366 */\n sub\n /* \"#utility.yul\":9342:9343 */\n 0x00\n /* \"#utility.yul\":9331:9340 */\n dup4\n /* \"#utility.yul\":9327:9344 */\n add\n /* \"#utility.yul\":9320:9367 */\n mstore\n /* \"#utility.yul\":9384:9515 */\n tag_272\n /* \"#utility.yul\":9510:9514 */\n dup2\n /* \"#utility.yul\":9384:9515 */\n tag_147\n jump\t// in\ntag_272:\n /* \"#utility.yul\":9376:9515 */\n swap1\n pop\n /* \"#utility.yul\":9103:9522 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9528:9709 */\ntag_148:\n /* \"#utility.yul\":9696:9702 */\n 0x4c42545f00000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":9691:9694 */\n dup2\n /* \"#utility.yul\":9684:9703 */\n mstore\n /* \"#utility.yul\":9528:9709 */\n pop\n jump\t// out\n /* \"#utility.yul\":9715:9814 */\ntag_149:\n /* \"#utility.yul\":9767:9773 */\n 0x00\n /* \"#utility.yul\":9801:9806 */\n dup2\n /* \"#utility.yul\":9795:9807 */\n mload\n /* \"#utility.yul\":9785:9807 */\n swap1\n pop\n /* \"#utility.yul\":9715:9814 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9820:9968 */\ntag_150:\n /* \"#utility.yul\":9922:9933 */\n 0x00\n /* \"#utility.yul\":9959:9962 */\n dup2\n /* \"#utility.yul\":9944:9962 */\n swap1\n pop\n /* \"#utility.yul\":9820:9968 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9974:10364 */\ntag_151:\n /* \"#utility.yul\":10080:10083 */\n 0x00\n /* \"#utility.yul\":10108:10147 */\n tag_277\n /* \"#utility.yul\":10141:10146 */\n dup3\n /* \"#utility.yul\":10108:10147 */\n tag_149\n jump\t// in\ntag_277:\n /* \"#utility.yul\":10163:10252 */\n tag_278\n /* \"#utility.yul\":10245:10251 */\n dup2\n /* \"#utility.yul\":10240:10243 */\n dup6\n /* \"#utility.yul\":10163:10252 */\n tag_150\n jump\t// in\ntag_278:\n /* \"#utility.yul\":10156:10252 */\n swap4\n pop\n /* \"#utility.yul\":10261:10326 */\n tag_279\n /* \"#utility.yul\":10319:10325 */\n dup2\n /* \"#utility.yul\":10314:10317 */\n dup6\n /* \"#utility.yul\":10307:10311 */\n 0x20\n /* \"#utility.yul\":10300:10305 */\n dup7\n /* \"#utility.yul\":10296:10312 */\n add\n /* \"#utility.yul\":10261:10326 */\n tag_134\n jump\t// in\ntag_279:\n /* \"#utility.yul\":10351:10357 */\n dup1\n /* \"#utility.yul\":10346:10349 */\n dup5\n /* \"#utility.yul\":10342:10358 */\n add\n /* \"#utility.yul\":10335:10358 */\n swap2\n pop\n /* \"#utility.yul\":10084:10364 */\n pop\n /* \"#utility.yul\":9974:10364 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10370:10548 */\ntag_152:\n /* \"#utility.yul\":10538:10541 */\n 0x2f00000000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":10533:10536 */\n dup2\n /* \"#utility.yul\":10526:10542 */\n mstore\n /* \"#utility.yul\":10370:10548 */\n pop\n jump\t// out\n /* \"#utility.yul\":10554:11941 */\ntag_37:\n /* \"#utility.yul\":11052:11055 */\n 0x00\n /* \"#utility.yul\":11067:11204 */\n tag_282\n /* \"#utility.yul\":11200:11203 */\n dup3\n /* \"#utility.yul\":11067:11204 */\n tag_148\n jump\t// in\ntag_282:\n /* \"#utility.yul\":11229:11230 */\n 0x04\n /* \"#utility.yul\":11224:11227 */\n dup3\n /* \"#utility.yul\":11220:11231 */\n add\n /* \"#utility.yul\":11213:11231 */\n swap2\n pop\n /* \"#utility.yul\":11248:11343 */\n tag_283\n /* \"#utility.yul\":11339:11342 */\n dup3\n /* \"#utility.yul\":11330:11336 */\n dup7\n /* \"#utility.yul\":11248:11343 */\n tag_151\n jump\t// in\ntag_283:\n /* \"#utility.yul\":11241:11343 */\n swap2\n pop\n /* \"#utility.yul\":11353:11490 */\n tag_284\n /* \"#utility.yul\":11486:11489 */\n dup3\n /* \"#utility.yul\":11353:11490 */\n tag_152\n jump\t// in\ntag_284:\n /* \"#utility.yul\":11515:11516 */\n 0x01\n /* \"#utility.yul\":11510:11513 */\n dup3\n /* \"#utility.yul\":11506:11517 */\n add\n /* \"#utility.yul\":11499:11517 */\n swap2\n pop\n /* \"#utility.yul\":11534:11629 */\n tag_285\n /* \"#utility.yul\":11625:11628 */\n dup3\n /* \"#utility.yul\":11616:11622 */\n dup6\n /* \"#utility.yul\":11534:11629 */\n tag_151\n jump\t// in\ntag_285:\n /* \"#utility.yul\":11527:11629 */\n swap2\n pop\n /* \"#utility.yul\":11639:11776 */\n tag_286\n /* \"#utility.yul\":11772:11775 */\n dup3\n /* \"#utility.yul\":11639:11776 */\n tag_152\n jump\t// in\ntag_286:\n /* \"#utility.yul\":11801:11802 */\n 0x01\n /* \"#utility.yul\":11796:11799 */\n dup3\n /* \"#utility.yul\":11792:11803 */\n add\n /* \"#utility.yul\":11785:11803 */\n swap2\n pop\n /* \"#utility.yul\":11820:11915 */\n tag_287\n /* \"#utility.yul\":11911:11914 */\n dup3\n /* \"#utility.yul\":11902:11908 */\n dup5\n /* \"#utility.yul\":11820:11915 */\n tag_151\n jump\t// in\ntag_287:\n /* \"#utility.yul\":11813:11915 */\n swap2\n pop\n /* \"#utility.yul\":11932:11935 */\n dup2\n /* \"#utility.yul\":11925:11935 */\n swap1\n pop\n /* \"#utility.yul\":10554:11941 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11947:12127 */\ntag_153:\n /* \"#utility.yul\":11995:12072 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":11992:11993 */\n 0x00\n /* \"#utility.yul\":11985:12073 */\n mstore\n /* \"#utility.yul\":12092:12096 */\n 0x22\n /* \"#utility.yul\":12089:12090 */\n 0x04\n /* \"#utility.yul\":12082:12097 */\n mstore\n /* \"#utility.yul\":12116:12120 */\n 0x24\n /* \"#utility.yul\":12113:12114 */\n 0x00\n /* \"#utility.yul\":12106:12121 */\n revert\n /* \"#utility.yul\":12133:12453 */\ntag_154:\n /* \"#utility.yul\":12177:12183 */\n 0x00\n /* \"#utility.yul\":12214:12215 */\n 0x02\n /* \"#utility.yul\":12208:12212 */\n dup3\n /* \"#utility.yul\":12204:12216 */\n div\n /* \"#utility.yul\":12194:12216 */\n swap1\n pop\n /* \"#utility.yul\":12261:12262 */\n 0x01\n /* \"#utility.yul\":12255:12259 */\n dup3\n /* \"#utility.yul\":12251:12263 */\n and\n /* \"#utility.yul\":12282:12300 */\n dup1\n /* \"#utility.yul\":12272:12353 */\n tag_290\n jumpi\n /* \"#utility.yul\":12338:12342 */\n 0x7f\n /* \"#utility.yul\":12330:12336 */\n dup3\n /* \"#utility.yul\":12326:12343 */\n and\n /* \"#utility.yul\":12316:12343 */\n swap2\n pop\n /* \"#utility.yul\":12272:12353 */\ntag_290:\n /* \"#utility.yul\":12400:12402 */\n 0x20\n /* \"#utility.yul\":12392:12398 */\n dup3\n /* \"#utility.yul\":12389:12403 */\n lt\n /* \"#utility.yul\":12369:12387 */\n dup2\n /* \"#utility.yul\":12366:12404 */\n sub\n /* \"#utility.yul\":12363:12447 */\n tag_291\n jumpi\n /* \"#utility.yul\":12419:12437 */\n tag_292\n tag_153\n jump\t// in\ntag_292:\n /* \"#utility.yul\":12363:12447 */\ntag_291:\n /* \"#utility.yul\":12184:12453 */\n pop\n /* \"#utility.yul\":12133:12453 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12459:12600 */\ntag_155:\n /* \"#utility.yul\":12508:12512 */\n 0x00\n /* \"#utility.yul\":12531:12534 */\n dup2\n /* \"#utility.yul\":12523:12534 */\n swap1\n pop\n /* \"#utility.yul\":12554:12557 */\n dup2\n /* \"#utility.yul\":12551:12552 */\n 0x00\n /* \"#utility.yul\":12544:12558 */\n mstore\n /* \"#utility.yul\":12588:12592 */\n 0x20\n /* \"#utility.yul\":12585:12586 */\n 0x00\n /* \"#utility.yul\":12575:12593 */\n keccak256\n /* \"#utility.yul\":12567:12593 */\n swap1\n pop\n /* \"#utility.yul\":12459:12600 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12606:12699 */\ntag_156:\n /* \"#utility.yul\":12643:12649 */\n 0x00\n /* \"#utility.yul\":12690:12692 */\n 0x20\n /* \"#utility.yul\":12685:12687 */\n 0x1f\n /* \"#utility.yul\":12678:12683 */\n dup4\n /* \"#utility.yul\":12674:12688 */\n add\n /* \"#utility.yul\":12670:12693 */\n div\n /* \"#utility.yul\":12660:12693 */\n swap1\n pop\n /* \"#utility.yul\":12606:12699 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":12705:12812 */\ntag_157:\n /* \"#utility.yul\":12749:12757 */\n 0x00\n /* \"#utility.yul\":12799:12804 */\n dup3\n /* \"#utility.yul\":12793:12797 */\n dup3\n /* \"#utility.yul\":12789:12805 */\n shl\n /* \"#utility.yul\":12768:12805 */\n swap1\n pop\n /* \"#utility.yul\":12705:12812 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12818:13211 */\ntag_158:\n /* \"#utility.yul\":12887:12893 */\n 0x00\n /* \"#utility.yul\":12937:12938 */\n 0x08\n /* \"#utility.yul\":12925:12935 */\n dup4\n /* \"#utility.yul\":12921:12939 */\n mul\n /* \"#utility.yul\":12960:13057 */\n tag_297\n /* \"#utility.yul\":12990:13056 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":12979:12988 */\n dup3\n /* \"#utility.yul\":12960:13057 */\n tag_157\n jump\t// in\ntag_297:\n /* \"#utility.yul\":13078:13117 */\n tag_298\n /* \"#utility.yul\":13108:13116 */\n dup7\n /* \"#utility.yul\":13097:13106 */\n dup4\n /* \"#utility.yul\":13078:13117 */\n tag_157\n jump\t// in\ntag_298:\n /* \"#utility.yul\":13066:13117 */\n swap6\n pop\n /* \"#utility.yul\":13150:13154 */\n dup1\n /* \"#utility.yul\":13146:13155 */\n not\n /* \"#utility.yul\":13139:13144 */\n dup5\n /* \"#utility.yul\":13135:13156 */\n and\n /* \"#utility.yul\":13126:13156 */\n swap4\n pop\n /* \"#utility.yul\":13199:13203 */\n dup1\n /* \"#utility.yul\":13189:13197 */\n dup7\n /* \"#utility.yul\":13185:13204 */\n and\n /* \"#utility.yul\":13178:13183 */\n dup5\n /* \"#utility.yul\":13175:13205 */\n or\n /* \"#utility.yul\":13165:13205 */\n swap3\n pop\n /* \"#utility.yul\":12894:13211 */\n pop\n pop\n /* \"#utility.yul\":12818:13211 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13217:13294 */\ntag_159:\n /* \"#utility.yul\":13254:13261 */\n 0x00\n /* \"#utility.yul\":13283:13288 */\n dup2\n /* \"#utility.yul\":13272:13288 */\n swap1\n pop\n /* \"#utility.yul\":13217:13294 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13300:13360 */\ntag_160:\n /* \"#utility.yul\":13328:13331 */\n 0x00\n /* \"#utility.yul\":13349:13354 */\n dup2\n /* \"#utility.yul\":13342:13354 */\n swap1\n pop\n /* \"#utility.yul\":13300:13360 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13366:13508 */\ntag_161:\n /* \"#utility.yul\":13416:13425 */\n 0x00\n /* \"#utility.yul\":13449:13502 */\n tag_302\n /* \"#utility.yul\":13467:13501 */\n tag_303\n /* \"#utility.yul\":13476:13500 */\n tag_304\n /* \"#utility.yul\":13494:13499 */\n dup5\n /* \"#utility.yul\":13476:13500 */\n tag_159\n jump\t// in\ntag_304:\n /* \"#utility.yul\":13467:13501 */\n tag_160\n jump\t// in\ntag_303:\n /* \"#utility.yul\":13449:13502 */\n tag_159\n jump\t// in\ntag_302:\n /* \"#utility.yul\":13436:13502 */\n swap1\n pop\n /* \"#utility.yul\":13366:13508 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13514:13589 */\ntag_162:\n /* \"#utility.yul\":13557:13560 */\n 0x00\n /* \"#utility.yul\":13578:13583 */\n dup2\n /* \"#utility.yul\":13571:13583 */\n swap1\n pop\n /* \"#utility.yul\":13514:13589 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":13595:13864 */\ntag_163:\n /* \"#utility.yul\":13705:13744 */\n tag_307\n /* \"#utility.yul\":13736:13743 */\n dup4\n /* \"#utility.yul\":13705:13744 */\n tag_161\n jump\t// in\ntag_307:\n /* \"#utility.yul\":13766:13857 */\n tag_308\n /* \"#utility.yul\":13815:13856 */\n tag_309\n /* \"#utility.yul\":13839:13855 */\n dup3\n /* \"#utility.yul\":13815:13856 */\n tag_162\n jump\t// in\ntag_309:\n /* \"#utility.yul\":13807:13813 */\n dup5\n /* \"#utility.yul\":13800:13804 */\n dup5\n /* \"#utility.yul\":13794:13805 */\n sload\n /* \"#utility.yul\":13766:13857 */\n tag_158\n jump\t// in\ntag_308:\n /* \"#utility.yul\":13760:13764 */\n dup3\n /* \"#utility.yul\":13753:13858 */\n sstore\n /* \"#utility.yul\":13671:13864 */\n pop\n /* \"#utility.yul\":13595:13864 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13870:13943 */\ntag_164:\n /* \"#utility.yul\":13915:13918 */\n 0x00\n /* \"#utility.yul\":13870:13943 */\n swap1\n jump\t// out\n /* \"#utility.yul\":13949:14138 */\ntag_165:\n /* \"#utility.yul\":14026:14058 */\n tag_312\n tag_164\n jump\t// in\ntag_312:\n /* \"#utility.yul\":14067:14132 */\n tag_313\n /* \"#utility.yul\":14125:14131 */\n dup2\n /* \"#utility.yul\":14117:14123 */\n dup5\n /* \"#utility.yul\":14111:14115 */\n dup5\n /* \"#utility.yul\":14067:14132 */\n tag_163\n jump\t// in\ntag_313:\n /* \"#utility.yul\":14002:14138 */\n pop\n /* \"#utility.yul\":13949:14138 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14144:14330 */\ntag_166:\n /* \"#utility.yul\":14204:14324 */\ntag_315:\n /* \"#utility.yul\":14221:14224 */\n dup2\n /* \"#utility.yul\":14214:14219 */\n dup2\n /* \"#utility.yul\":14211:14225 */\n lt\n /* \"#utility.yul\":14204:14324 */\n iszero\n tag_317\n jumpi\n /* \"#utility.yul\":14275:14314 */\n tag_318\n /* \"#utility.yul\":14312:14313 */\n 0x00\n /* \"#utility.yul\":14305:14310 */\n dup3\n /* \"#utility.yul\":14275:14314 */\n tag_165\n jump\t// in\ntag_318:\n /* \"#utility.yul\":14248:14249 */\n 0x01\n /* \"#utility.yul\":14241:14246 */\n dup2\n /* \"#utility.yul\":14237:14250 */\n add\n /* \"#utility.yul\":14228:14250 */\n swap1\n pop\n /* \"#utility.yul\":14204:14324 */\n jump(tag_315)\ntag_317:\n /* \"#utility.yul\":14144:14330 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14336:14879 */\ntag_167:\n /* \"#utility.yul\":14437:14439 */\n 0x1f\n /* \"#utility.yul\":14432:14435 */\n dup3\n /* \"#utility.yul\":14429:14440 */\n gt\n /* \"#utility.yul\":14426:14872 */\n iszero\n tag_320\n jumpi\n /* \"#utility.yul\":14471:14509 */\n tag_321\n /* \"#utility.yul\":14503:14508 */\n dup2\n /* \"#utility.yul\":14471:14509 */\n tag_155\n jump\t// in\ntag_321:\n /* \"#utility.yul\":14555:14584 */\n tag_322\n /* \"#utility.yul\":14573:14583 */\n dup5\n /* \"#utility.yul\":14555:14584 */\n tag_156\n jump\t// in\ntag_322:\n /* \"#utility.yul\":14545:14553 */\n dup2\n /* \"#utility.yul\":14541:14585 */\n add\n /* \"#utility.yul\":14738:14740 */\n 0x20\n /* \"#utility.yul\":14726:14736 */\n dup6\n /* \"#utility.yul\":14723:14741 */\n lt\n /* \"#utility.yul\":14720:14769 */\n iszero\n tag_323\n jumpi\n /* \"#utility.yul\":14759:14767 */\n dup2\n /* \"#utility.yul\":14744:14767 */\n swap1\n pop\n /* \"#utility.yul\":14720:14769 */\ntag_323:\n /* \"#utility.yul\":14782:14862 */\n tag_324\n /* \"#utility.yul\":14838:14860 */\n tag_325\n /* \"#utility.yul\":14856:14859 */\n dup6\n /* \"#utility.yul\":14838:14860 */\n tag_156\n jump\t// in\ntag_325:\n /* \"#utility.yul\":14828:14836 */\n dup4\n /* \"#utility.yul\":14824:14861 */\n add\n /* \"#utility.yul\":14811:14822 */\n dup3\n /* \"#utility.yul\":14782:14862 */\n tag_166\n jump\t// in\ntag_324:\n /* \"#utility.yul\":14441:14872 */\n pop\n pop\n /* \"#utility.yul\":14426:14872 */\ntag_320:\n /* \"#utility.yul\":14336:14879 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14885:15002 */\ntag_168:\n /* \"#utility.yul\":14939:14947 */\n 0x00\n /* \"#utility.yul\":14989:14994 */\n dup3\n /* \"#utility.yul\":14983:14987 */\n dup3\n /* \"#utility.yul\":14979:14995 */\n shr\n /* \"#utility.yul\":14958:14995 */\n swap1\n pop\n /* \"#utility.yul\":14885:15002 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15008:15177 */\ntag_169:\n /* \"#utility.yul\":15052:15058 */\n 0x00\n /* \"#utility.yul\":15085:15136 */\n tag_328\n /* \"#utility.yul\":15133:15134 */\n 0x00\n /* \"#utility.yul\":15129:15135 */\n not\n /* \"#utility.yul\":15121:15126 */\n dup5\n /* \"#utility.yul\":15118:15119 */\n 0x08\n /* \"#utility.yul\":15114:15127 */\n mul\n /* \"#utility.yul\":15085:15136 */\n tag_168\n jump\t// in\ntag_328:\n /* \"#utility.yul\":15081:15137 */\n not\n /* \"#utility.yul\":15166:15170 */\n dup1\n /* \"#utility.yul\":15160:15164 */\n dup4\n /* \"#utility.yul\":15156:15171 */\n and\n /* \"#utility.yul\":15146:15171 */\n swap2\n pop\n /* \"#utility.yul\":15059:15177 */\n pop\n /* \"#utility.yul\":15008:15177 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15182:15477 */\ntag_170:\n /* \"#utility.yul\":15258:15262 */\n 0x00\n /* \"#utility.yul\":15404:15433 */\n tag_330\n /* \"#utility.yul\":15429:15432 */\n dup4\n /* \"#utility.yul\":15423:15427 */\n dup4\n /* \"#utility.yul\":15404:15433 */\n tag_169\n jump\t// in\ntag_330:\n /* \"#utility.yul\":15396:15433 */\n swap2\n pop\n /* \"#utility.yul\":15466:15469 */\n dup3\n /* \"#utility.yul\":15463:15464 */\n 0x02\n /* \"#utility.yul\":15459:15470 */\n mul\n /* \"#utility.yul\":15453:15457 */\n dup3\n /* \"#utility.yul\":15450:15471 */\n or\n /* \"#utility.yul\":15442:15471 */\n swap1\n pop\n /* \"#utility.yul\":15182:15477 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15482:16877 */\ntag_41:\n /* \"#utility.yul\":15599:15636 */\n tag_332\n /* \"#utility.yul\":15632:15635 */\n dup3\n /* \"#utility.yul\":15599:15636 */\n tag_149\n jump\t// in\ntag_332:\n /* \"#utility.yul\":15701:15719 */\n 0xffffffffffffffff\n /* \"#utility.yul\":15693:15699 */\n dup2\n /* \"#utility.yul\":15690:15720 */\n gt\n /* \"#utility.yul\":15687:15743 */\n iszero\n tag_333\n jumpi\n /* \"#utility.yul\":15723:15741 */\n tag_334\n tag_73\n jump\t// in\ntag_334:\n /* \"#utility.yul\":15687:15743 */\ntag_333:\n /* \"#utility.yul\":15767:15805 */\n tag_335\n /* \"#utility.yul\":15799:15803 */\n dup3\n /* \"#utility.yul\":15793:15804 */\n sload\n /* \"#utility.yul\":15767:15805 */\n tag_154\n jump\t// in\ntag_335:\n /* \"#utility.yul\":15852:15919 */\n tag_336\n /* \"#utility.yul\":15912:15918 */\n dup3\n /* \"#utility.yul\":15904:15910 */\n dup3\n /* \"#utility.yul\":15898:15902 */\n dup6\n /* \"#utility.yul\":15852:15919 */\n tag_167\n jump\t// in\ntag_336:\n /* \"#utility.yul\":15946:15947 */\n 0x00\n /* \"#utility.yul\":15970:15974 */\n 0x20\n /* \"#utility.yul\":15957:15974 */\n swap1\n pop\n /* \"#utility.yul\":16002:16004 */\n 0x1f\n /* \"#utility.yul\":15994:16000 */\n dup4\n /* \"#utility.yul\":15991:16005 */\n gt\n /* \"#utility.yul\":16019:16020 */\n 0x01\n /* \"#utility.yul\":16014:16632 */\n dup2\n eq\n tag_338\n jumpi\n /* \"#utility.yul\":16676:16677 */\n 0x00\n /* \"#utility.yul\":16693:16699 */\n dup5\n /* \"#utility.yul\":16690:16767 */\n iszero\n tag_339\n jumpi\n /* \"#utility.yul\":16742:16751 */\n dup3\n /* \"#utility.yul\":16737:16740 */\n dup8\n /* \"#utility.yul\":16733:16752 */\n add\n /* \"#utility.yul\":16727:16753 */\n mload\n /* \"#utility.yul\":16718:16753 */\n swap1\n pop\n /* \"#utility.yul\":16690:16767 */\ntag_339:\n /* \"#utility.yul\":16793:16860 */\n tag_340\n /* \"#utility.yul\":16853:16859 */\n dup6\n /* \"#utility.yul\":16846:16851 */\n dup3\n /* \"#utility.yul\":16793:16860 */\n tag_170\n jump\t// in\ntag_340:\n /* \"#utility.yul\":16787:16791 */\n dup7\n /* \"#utility.yul\":16780:16861 */\n sstore\n /* \"#utility.yul\":16649:16871 */\n pop\n /* \"#utility.yul\":15984:16871 */\n jump(tag_337)\n /* \"#utility.yul\":16014:16632 */\ntag_338:\n /* \"#utility.yul\":16066:16070 */\n 0x1f\n /* \"#utility.yul\":16062:16071 */\n not\n /* \"#utility.yul\":16054:16060 */\n dup5\n /* \"#utility.yul\":16050:16072 */\n and\n /* \"#utility.yul\":16100:16137 */\n tag_341\n /* \"#utility.yul\":16132:16136 */\n dup7\n /* \"#utility.yul\":16100:16137 */\n tag_155\n jump\t// in\ntag_341:\n /* \"#utility.yul\":16159:16160 */\n 0x00\n /* \"#utility.yul\":16173:16381 */\ntag_342:\n /* \"#utility.yul\":16187:16194 */\n dup3\n /* \"#utility.yul\":16184:16185 */\n dup2\n /* \"#utility.yul\":16181:16195 */\n lt\n /* \"#utility.yul\":16173:16381 */\n iszero\n tag_344\n jumpi\n /* \"#utility.yul\":16266:16275 */\n dup5\n /* \"#utility.yul\":16261:16264 */\n dup10\n /* \"#utility.yul\":16257:16276 */\n add\n /* \"#utility.yul\":16251:16277 */\n mload\n /* \"#utility.yul\":16243:16249 */\n dup3\n /* \"#utility.yul\":16236:16278 */\n sstore\n /* \"#utility.yul\":16317:16318 */\n 0x01\n /* \"#utility.yul\":16309:16315 */\n dup3\n /* \"#utility.yul\":16305:16319 */\n add\n /* \"#utility.yul\":16295:16319 */\n swap2\n pop\n /* \"#utility.yul\":16364:16366 */\n 0x20\n /* \"#utility.yul\":16353:16362 */\n dup6\n /* \"#utility.yul\":16349:16367 */\n add\n /* \"#utility.yul\":16336:16367 */\n swap5\n pop\n /* \"#utility.yul\":16210:16214 */\n 0x20\n /* \"#utility.yul\":16207:16208 */\n dup2\n /* \"#utility.yul\":16203:16215 */\n add\n /* \"#utility.yul\":16198:16215 */\n swap1\n pop\n /* \"#utility.yul\":16173:16381 */\n jump(tag_342)\ntag_344:\n /* \"#utility.yul\":16409:16415 */\n dup7\n /* \"#utility.yul\":16400:16407 */\n dup4\n /* \"#utility.yul\":16397:16416 */\n lt\n /* \"#utility.yul\":16394:16573 */\n iszero\n tag_345\n jumpi\n /* \"#utility.yul\":16467:16476 */\n dup5\n /* \"#utility.yul\":16462:16465 */\n dup10\n /* \"#utility.yul\":16458:16477 */\n add\n /* \"#utility.yul\":16452:16478 */\n mload\n /* \"#utility.yul\":16510:16558 */\n tag_346\n /* \"#utility.yul\":16552:16556 */\n 0x1f\n /* \"#utility.yul\":16544:16550 */\n dup10\n /* \"#utility.yul\":16540:16557 */\n and\n /* \"#utility.yul\":16529:16538 */\n dup3\n /* \"#utility.yul\":16510:16558 */\n tag_169\n jump\t// in\ntag_346:\n /* \"#utility.yul\":16502:16508 */\n dup4\n /* \"#utility.yul\":16495:16559 */\n sstore\n /* \"#utility.yul\":16417:16573 */\n pop\n /* \"#utility.yul\":16394:16573 */\ntag_345:\n /* \"#utility.yul\":16619:16620 */\n 0x01\n /* \"#utility.yul\":16615:16616 */\n 0x02\n /* \"#utility.yul\":16607:16613 */\n dup9\n /* \"#utility.yul\":16603:16617 */\n mul\n /* \"#utility.yul\":16599:16621 */\n add\n /* \"#utility.yul\":16593:16597 */\n dup9\n /* \"#utility.yul\":16586:16622 */\n sstore\n /* \"#utility.yul\":16021:16632 */\n pop\n pop\n pop\n /* \"#utility.yul\":15984:16871 */\ntag_337:\n pop\n /* \"#utility.yul\":15574:16877 */\n pop\n pop\n pop\n /* \"#utility.yul\":15482:16877 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16883:17082 */\ntag_171:\n /* \"#utility.yul\":17052:17075 */\n 0x4c697175696469747920426f6f6b20546f6b656e200000000000000000000000\n /* \"#utility.yul\":17047:17050 */\n dup2\n /* \"#utility.yul\":17040:17076 */\n mstore\n /* \"#utility.yul\":16883:17082 */\n pop\n jump\t// out\n /* \"#utility.yul\":17088:18478 */\ntag_43:\n /* \"#utility.yul\":17587:17590 */\n 0x00\n /* \"#utility.yul\":17602:17740 */\n tag_349\n /* \"#utility.yul\":17736:17739 */\n dup3\n /* \"#utility.yul\":17602:17740 */\n tag_171\n jump\t// in\ntag_349:\n /* \"#utility.yul\":17765:17767 */\n 0x15\n /* \"#utility.yul\":17760:17763 */\n dup3\n /* \"#utility.yul\":17756:17768 */\n add\n /* \"#utility.yul\":17749:17768 */\n swap2\n pop\n /* \"#utility.yul\":17785:17880 */\n tag_350\n /* \"#utility.yul\":17876:17879 */\n dup3\n /* \"#utility.yul\":17867:17873 */\n dup7\n /* \"#utility.yul\":17785:17880 */\n tag_151\n jump\t// in\ntag_350:\n /* \"#utility.yul\":17778:17880 */\n swap2\n pop\n /* \"#utility.yul\":17890:18027 */\n tag_351\n /* \"#utility.yul\":18023:18026 */\n dup3\n /* \"#utility.yul\":17890:18027 */\n tag_152\n jump\t// in\ntag_351:\n /* \"#utility.yul\":18052:18053 */\n 0x01\n /* \"#utility.yul\":18047:18050 */\n dup3\n /* \"#utility.yul\":18043:18054 */\n add\n /* \"#utility.yul\":18036:18054 */\n swap2\n pop\n /* \"#utility.yul\":18071:18166 */\n tag_352\n /* \"#utility.yul\":18162:18165 */\n dup3\n /* \"#utility.yul\":18153:18159 */\n dup6\n /* \"#utility.yul\":18071:18166 */\n tag_151\n jump\t// in\ntag_352:\n /* \"#utility.yul\":18064:18166 */\n swap2\n pop\n /* \"#utility.yul\":18176:18313 */\n tag_353\n /* \"#utility.yul\":18309:18312 */\n dup3\n /* \"#utility.yul\":18176:18313 */\n tag_152\n jump\t// in\ntag_353:\n /* \"#utility.yul\":18338:18339 */\n 0x01\n /* \"#utility.yul\":18333:18336 */\n dup3\n /* \"#utility.yul\":18329:18340 */\n add\n /* \"#utility.yul\":18322:18340 */\n swap2\n pop\n /* \"#utility.yul\":18357:18452 */\n tag_354\n /* \"#utility.yul\":18448:18451 */\n dup3\n /* \"#utility.yul\":18439:18445 */\n dup5\n /* \"#utility.yul\":18357:18452 */\n tag_151\n jump\t// in\ntag_354:\n /* \"#utility.yul\":18350:18452 */\n swap2\n pop\n /* \"#utility.yul\":18469:18472 */\n dup2\n /* \"#utility.yul\":18462:18472 */\n swap1\n pop\n /* \"#utility.yul\":17088:18478 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18484:18835 */\ntag_56:\n /* \"#utility.yul\":18554:18560 */\n 0x00\n /* \"#utility.yul\":18603:18605 */\n 0x20\n /* \"#utility.yul\":18591:18600 */\n dup3\n /* \"#utility.yul\":18582:18589 */\n dup5\n /* \"#utility.yul\":18578:18601 */\n sub\n /* \"#utility.yul\":18574:18606 */\n slt\n /* \"#utility.yul\":18571:18690 */\n iszero\n tag_356\n jumpi\n /* \"#utility.yul\":18609:18688 */\n tag_357\n tag_119\n jump\t// in\ntag_357:\n /* \"#utility.yul\":18571:18690 */\ntag_356:\n /* \"#utility.yul\":18729:18730 */\n 0x00\n /* \"#utility.yul\":18754:18818 */\n tag_358\n /* \"#utility.yul\":18810:18817 */\n dup5\n /* \"#utility.yul\":18801:18807 */\n dup3\n /* \"#utility.yul\":18790:18799 */\n dup6\n /* \"#utility.yul\":18786:18808 */\n add\n /* \"#utility.yul\":18754:18818 */\n tag_124\n jump\t// in\ntag_358:\n /* \"#utility.yul\":18744:18818 */\n swap2\n pop\n /* \"#utility.yul\":18700:18828 */\n pop\n /* \"#utility.yul\":18484:18835 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18841:19021 */\ntag_172:\n /* \"#utility.yul\":18889:18966 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":18886:18887 */\n 0x00\n /* \"#utility.yul\":18879:18967 */\n mstore\n /* \"#utility.yul\":18986:18990 */\n 0x11\n /* \"#utility.yul\":18983:18984 */\n 0x04\n /* \"#utility.yul\":18976:18991 */\n mstore\n /* \"#utility.yul\":19010:19014 */\n 0x24\n /* \"#utility.yul\":19007:19008 */\n 0x00\n /* \"#utility.yul\":19000:19015 */\n revert\n /* \"#utility.yul\":19027:19198 */\ntag_68:\n /* \"#utility.yul\":19065:19068 */\n 0x00\n /* \"#utility.yul\":19088:19111 */\n tag_361\n /* \"#utility.yul\":19105:19110 */\n dup3\n /* \"#utility.yul\":19088:19111 */\n tag_125\n jump\t// in\ntag_361:\n /* \"#utility.yul\":19079:19111 */\n swap2\n pop\n /* \"#utility.yul\":19133:19139 */\n 0xffff\n /* \"#utility.yul\":19126:19131 */\n dup3\n /* \"#utility.yul\":19123:19140 */\n sub\n /* \"#utility.yul\":19120:19163 */\n tag_362\n jumpi\n /* \"#utility.yul\":19143:19161 */\n tag_363\n tag_172\n jump\t// in\ntag_363:\n /* \"#utility.yul\":19120:19163 */\ntag_362:\n /* \"#utility.yul\":19190:19191 */\n 0x01\n /* \"#utility.yul\":19183:19188 */\n dup3\n /* \"#utility.yul\":19179:19192 */\n add\n /* \"#utility.yul\":19172:19192 */\n swap1\n pop\n /* \"#utility.yul\":19027:19198 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":19204:19384 */\ntag_173:\n /* \"#utility.yul\":19252:19329 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":19249:19250 */\n 0x00\n /* \"#utility.yul\":19242:19330 */\n mstore\n /* \"#utility.yul\":19349:19353 */\n 0x12\n /* \"#utility.yul\":19346:19347 */\n 0x04\n /* \"#utility.yul\":19339:19354 */\n mstore\n /* \"#utility.yul\":19373:19377 */\n 0x24\n /* \"#utility.yul\":19370:19371 */\n 0x00\n /* \"#utility.yul\":19363:19378 */\n revert\n /* \"#utility.yul\":19390:19572 */\ntag_70:\n /* \"#utility.yul\":19429:19430 */\n 0x00\n /* \"#utility.yul\":19446:19465 */\n tag_366\n /* \"#utility.yul\":19463:19464 */\n dup3\n /* \"#utility.yul\":19446:19465 */\n tag_125\n jump\t// in\ntag_366:\n /* \"#utility.yul\":19441:19465 */\n swap2\n pop\n /* \"#utility.yul\":19479:19498 */\n tag_367\n /* \"#utility.yul\":19496:19497 */\n dup4\n /* \"#utility.yul\":19479:19498 */\n tag_125\n jump\t// in\ntag_367:\n /* \"#utility.yul\":19474:19498 */\n swap3\n pop\n /* \"#utility.yul\":19517:19518 */\n dup3\n /* \"#utility.yul\":19507:19542 */\n tag_368\n jumpi\n /* \"#utility.yul\":19522:19540 */\n tag_369\n tag_173\n jump\t// in\ntag_369:\n /* \"#utility.yul\":19507:19542 */\ntag_368:\n /* \"#utility.yul\":19564:19565 */\n dup3\n /* \"#utility.yul\":19561:19562 */\n dup3\n /* \"#utility.yul\":19557:19566 */\n div\n /* \"#utility.yul\":19552:19566 */\n swap1\n pop\n /* \"#utility.yul\":19390:19572 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19578:19774 */\ntag_78:\n /* \"#utility.yul\":19617:19621 */\n 0x00\n /* \"#utility.yul\":19637:19656 */\n tag_371\n /* \"#utility.yul\":19654:19655 */\n dup3\n /* \"#utility.yul\":19637:19656 */\n tag_125\n jump\t// in\ntag_371:\n /* \"#utility.yul\":19632:19656 */\n swap2\n pop\n /* \"#utility.yul\":19670:19689 */\n tag_372\n /* \"#utility.yul\":19687:19688 */\n dup4\n /* \"#utility.yul\":19670:19689 */\n tag_125\n jump\t// in\ntag_372:\n /* \"#utility.yul\":19665:19689 */\n swap3\n pop\n /* \"#utility.yul\":19713:19714 */\n dup3\n /* \"#utility.yul\":19710:19711 */\n dup3\n /* \"#utility.yul\":19706:19715 */\n sub\n /* \"#utility.yul\":19698:19715 */\n swap1\n pop\n /* \"#utility.yul\":19737:19743 */\n 0xffff\n /* \"#utility.yul\":19731:19735 */\n dup2\n /* \"#utility.yul\":19728:19744 */\n gt\n /* \"#utility.yul\":19725:19767 */\n iszero\n tag_373\n jumpi\n /* \"#utility.yul\":19747:19765 */\n tag_374\n tag_172\n jump\t// in\ntag_374:\n /* \"#utility.yul\":19725:19767 */\ntag_373:\n /* \"#utility.yul\":19578:19774 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19780:19953 */\ntag_80:\n /* \"#utility.yul\":19811:19812 */\n 0x00\n /* \"#utility.yul\":19828:19847 */\n tag_376\n /* \"#utility.yul\":19845:19846 */\n dup3\n /* \"#utility.yul\":19828:19847 */\n tag_125\n jump\t// in\ntag_376:\n /* \"#utility.yul\":19823:19847 */\n swap2\n pop\n /* \"#utility.yul\":19861:19880 */\n tag_377\n /* \"#utility.yul\":19878:19879 */\n dup4\n /* \"#utility.yul\":19861:19880 */\n tag_125\n jump\t// in\ntag_377:\n /* \"#utility.yul\":19856:19880 */\n swap3\n pop\n /* \"#utility.yul\":19899:19900 */\n dup3\n /* \"#utility.yul\":19889:19924 */\n tag_378\n jumpi\n /* \"#utility.yul\":19904:19922 */\n tag_379\n tag_173\n jump\t// in\ntag_379:\n /* \"#utility.yul\":19889:19924 */\ntag_378:\n /* \"#utility.yul\":19945:19946 */\n dup3\n /* \"#utility.yul\":19942:19943 */\n dup3\n /* \"#utility.yul\":19938:19947 */\n mod\n /* \"#utility.yul\":19933:19947 */\n swap1\n pop\n /* \"#utility.yul\":19780:19953 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19959:20152 */\ntag_82:\n /* \"#utility.yul\":19998:20001 */\n 0x00\n /* \"#utility.yul\":20017:20036 */\n tag_381\n /* \"#utility.yul\":20034:20035 */\n dup3\n /* \"#utility.yul\":20017:20036 */\n tag_125\n jump\t// in\ntag_381:\n /* \"#utility.yul\":20012:20036 */\n swap2\n pop\n /* \"#utility.yul\":20050:20069 */\n tag_382\n /* \"#utility.yul\":20067:20068 */\n dup4\n /* \"#utility.yul\":20050:20069 */\n tag_125\n jump\t// in\ntag_382:\n /* \"#utility.yul\":20045:20069 */\n swap3\n pop\n /* \"#utility.yul\":20092:20093 */\n dup3\n /* \"#utility.yul\":20089:20090 */\n dup3\n /* \"#utility.yul\":20085:20094 */\n add\n /* \"#utility.yul\":20078:20094 */\n swap1\n pop\n /* \"#utility.yul\":20115:20121 */\n 0xffff\n /* \"#utility.yul\":20110:20113 */\n dup2\n /* \"#utility.yul\":20107:20122 */\n gt\n /* \"#utility.yul\":20104:20145 */\n iszero\n tag_383\n jumpi\n /* \"#utility.yul\":20125:20143 */\n tag_384\n tag_172\n jump\t// in\ntag_384:\n /* \"#utility.yul\":20104:20145 */\ntag_383:\n /* \"#utility.yul\":19959:20152 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":20158:20338 */\ntag_85:\n /* \"#utility.yul\":20206:20283 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":20203:20204 */\n 0x00\n /* \"#utility.yul\":20196:20284 */\n mstore\n /* \"#utility.yul\":20303:20307 */\n 0x32\n /* \"#utility.yul\":20300:20301 */\n 0x04\n /* \"#utility.yul\":20293:20308 */\n mstore\n /* \"#utility.yul\":20327:20331 */\n 0x24\n /* \"#utility.yul\":20324:20325 */\n 0x00\n /* \"#utility.yul\":20317:20332 */\n revert\n /* \"#utility.yul\":20344:20462 */\ntag_174:\n /* \"#utility.yul\":20431:20455 */\n tag_387\n /* \"#utility.yul\":20449:20454 */\n dup2\n /* \"#utility.yul\":20431:20455 */\n tag_122\n jump\t// in\ntag_387:\n /* \"#utility.yul\":20426:20429 */\n dup3\n /* \"#utility.yul\":20419:20456 */\n mstore\n /* \"#utility.yul\":20344:20462 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":20468:20690 */\ntag_91:\n /* \"#utility.yul\":20561:20565 */\n 0x00\n /* \"#utility.yul\":20599:20601 */\n 0x20\n /* \"#utility.yul\":20588:20597 */\n dup3\n /* \"#utility.yul\":20584:20602 */\n add\n /* \"#utility.yul\":20576:20602 */\n swap1\n pop\n /* \"#utility.yul\":20612:20683 */\n tag_389\n /* \"#utility.yul\":20680:20681 */\n 0x00\n /* \"#utility.yul\":20669:20678 */\n dup4\n /* \"#utility.yul\":20665:20682 */\n add\n /* \"#utility.yul\":20656:20662 */\n dup5\n /* \"#utility.yul\":20612:20683 */\n tag_174\n jump\t// in\ntag_389:\n /* \"#utility.yul\":20468:20690 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\ntag_47:\n mload(0x80)\n codecopy(0x00, dataOffset(sub_0), dataSize(sub_0))\n 0x00\n assignImmutable(\"0x6c359167374f49fb5c7d4806c3799bb86fc04d6dd416c2ad9d7b00d01c9c2e24\")\n return(0x00, dataSize(sub_0))\nstop\n\nsub_0: assembly {\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xa0a0ea39\n eq\n tag_3\n jumpi\n jump(tag_2)\n tag_1:\n jumpi(tag_2, calldatasize)\n stop\n tag_2:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n tag_8\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2658 _fallback */\n tag_9\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n jump\t// in\n tag_8:\n /* \"src/LBPairBeaconProxy.sol\":611:2330 contract LBPairBeaconProxy is BeaconProxy, LBPairUnstructuredStorage {... */\n stop\n /* \"src/LBPairBeaconProxy.sol\":2233:2328 function getLBPairBeacon() external view returns (address) {... */\n tag_3:\n callvalue\n dup1\n iszero\n tag_10\n jumpi\n 0x00\n dup1\n revert\n tag_10:\n pop\n tag_11\n tag_12\n jump\t// in\n tag_11:\n mload(0x40)\n tag_13\n swap2\n swap1\n tag_14\n jump\t// in\n tag_13:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n tag_9:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n tag_16\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n tag_17\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2396 _implementation */\n tag_18\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n jump\t// in\n tag_17:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2380 _delegate */\n tag_19\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n jump\t// in\n tag_16:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n jump\t// out\n /* \"src/LBPairBeaconProxy.sol\":2233:2328 function getLBPairBeacon() external view returns (address) {... */\n tag_12:\n /* \"src/LBPairBeaconProxy.sol\":2283:2290 address */\n 0x00\n /* \"src/LBPairBeaconProxy.sol\":2309:2321 _getBeacon() */\n tag_21\n /* \"src/LBPairBeaconProxy.sol\":2309:2319 _getBeacon */\n tag_22\n /* \"src/LBPairBeaconProxy.sol\":2309:2321 _getBeacon() */\n jump\t// in\n tag_21:\n /* \"src/LBPairBeaconProxy.sol\":2302:2321 return _getBeacon() */\n swap1\n pop\n /* \"src/LBPairBeaconProxy.sol\":2233:2328 function getLBPairBeacon() external view returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2023:2161 function _implementation() internal view virtual override returns (address) {... */\n tag_18:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2090:2097 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2136 _getBeacon() */\n tag_24\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2134 _getBeacon */\n tag_22\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2124:2136 _getBeacon() */\n jump\t// in\n tag_24:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2116:2152 IBeacon(_getBeacon()).implementation */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x5c60da1b\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2116:2154 IBeacon(_getBeacon()).implementation() */\n mload(0x40)\n dup2\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_26\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_26:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_27\n swap2\n swap1\n tag_28\n jump\t// in\n tag_27:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2109:2154 return IBeacon(_getBeacon()).implementation() */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2023:2161 function _implementation() internal view virtual override returns (address) {... */\n swap1\n jump\t// out\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":949:1844 function _delegate(address implementation) internal virtual {... */\n tag_19:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1287:1301 calldatasize() */\n calldatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1284:1285 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1281:1282 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1268:1302 calldatacopy(0, 0, calldatasize()) */\n calldatacopy\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1501:1502 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1498:1499 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1482:1496 calldatasize() */\n calldatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1479:1480 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1463:1477 implementation */\n dup5\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1456:1461 gas() */\n gas\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1443:1503 delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) */\n delegatecall\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1577:1593 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1574:1575 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1571:1572 0 */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1556:1594 returndatacopy(0, 0, returndatasize()) */\n returndatacopy\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1615:1621 result */\n dup1\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1687:1688 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n dup2\n eq\n tag_31\n jumpi\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1797:1813 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1794:1795 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1787:1814 return(0, returndatasize()) */\n return\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n tag_31:\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1717:1733 returndatasize() */\n returndatasize\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1714:1715 0 */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1707:1734 revert(0, returndatasize()) */\n revert\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2215:2308 function _getBeacon() internal view virtual returns (address) {... */\n tag_22:\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2268:2275 address */\n 0x00\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2294:2301 _beacon */\n immutable(\"0x6c359167374f49fb5c7d4806c3799bb86fc04d6dd416c2ad9d7b00d01c9c2e24\")\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2287:2301 return _beacon */\n swap1\n pop\n /* \"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":2215:2308 function _getBeacon() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"#utility.yul\":7:133 */\n tag_33:\n /* \"#utility.yul\":44:51 */\n 0x00\n /* \"#utility.yul\":84:126 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":77:82 */\n dup3\n /* \"#utility.yul\":73:127 */\n and\n /* \"#utility.yul\":62:127 */\n swap1\n pop\n /* \"#utility.yul\":7:133 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":139:235 */\n tag_34:\n /* \"#utility.yul\":176:183 */\n 0x00\n /* \"#utility.yul\":205:229 */\n tag_44\n /* \"#utility.yul\":223:228 */\n dup3\n /* \"#utility.yul\":205:229 */\n tag_33\n jump\t// in\n tag_44:\n /* \"#utility.yul\":194:229 */\n swap1\n pop\n /* \"#utility.yul\":139:235 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":241:359 */\n tag_35:\n /* \"#utility.yul\":328:352 */\n tag_46\n /* \"#utility.yul\":346:351 */\n dup2\n /* \"#utility.yul\":328:352 */\n tag_34\n jump\t// in\n tag_46:\n /* \"#utility.yul\":323:326 */\n dup3\n /* \"#utility.yul\":316:353 */\n mstore\n /* \"#utility.yul\":241:359 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":365:587 */\n tag_14:\n /* \"#utility.yul\":458:462 */\n 0x00\n /* \"#utility.yul\":496:498 */\n 0x20\n /* \"#utility.yul\":485:494 */\n dup3\n /* \"#utility.yul\":481:499 */\n add\n /* \"#utility.yul\":473:499 */\n swap1\n pop\n /* \"#utility.yul\":509:580 */\n tag_48\n /* \"#utility.yul\":577:578 */\n 0x00\n /* \"#utility.yul\":566:575 */\n dup4\n /* \"#utility.yul\":562:579 */\n add\n /* \"#utility.yul\":553:559 */\n dup5\n /* \"#utility.yul\":509:580 */\n tag_35\n jump\t// in\n tag_48:\n /* \"#utility.yul\":365:587 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":674:791 */\n tag_37:\n /* \"#utility.yul\":783:784 */\n 0x00\n /* \"#utility.yul\":780:781 */\n dup1\n /* \"#utility.yul\":773:785 */\n revert\n /* \"#utility.yul\":920:1042 */\n tag_39:\n /* \"#utility.yul\":993:1017 */\n tag_53\n /* \"#utility.yul\":1011:1016 */\n dup2\n /* \"#utility.yul\":993:1017 */\n tag_34\n jump\t// in\n tag_53:\n /* \"#utility.yul\":986:991 */\n dup2\n /* \"#utility.yul\":983:1018 */\n eq\n /* \"#utility.yul\":973:1036 */\n tag_54\n jumpi\n /* \"#utility.yul\":1032:1033 */\n 0x00\n /* \"#utility.yul\":1029:1030 */\n dup1\n /* \"#utility.yul\":1022:1034 */\n revert\n /* \"#utility.yul\":973:1036 */\n tag_54:\n /* \"#utility.yul\":920:1042 */\n pop\n jump\t// out\n /* \"#utility.yul\":1048:1191 */\n tag_40:\n /* \"#utility.yul\":1105:1110 */\n 0x00\n /* \"#utility.yul\":1136:1142 */\n dup2\n /* \"#utility.yul\":1130:1143 */\n mload\n /* \"#utility.yul\":1121:1143 */\n swap1\n pop\n /* \"#utility.yul\":1152:1185 */\n tag_56\n /* \"#utility.yul\":1179:1184 */\n dup2\n /* \"#utility.yul\":1152:1185 */\n tag_39\n jump\t// in\n tag_56:\n /* \"#utility.yul\":1048:1191 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1197:1548 */\n tag_28:\n /* \"#utility.yul\":1267:1273 */\n 0x00\n /* \"#utility.yul\":1316:1318 */\n 0x20\n /* \"#utility.yul\":1304:1313 */\n dup3\n /* \"#utility.yul\":1295:1302 */\n dup5\n /* \"#utility.yul\":1291:1314 */\n sub\n /* \"#utility.yul\":1287:1319 */\n slt\n /* \"#utility.yul\":1284:1403 */\n iszero\n tag_58\n jumpi\n /* \"#utility.yul\":1322:1401 */\n tag_59\n tag_37\n jump\t// in\n tag_59:\n /* \"#utility.yul\":1284:1403 */\n tag_58:\n /* \"#utility.yul\":1442:1443 */\n 0x00\n /* \"#utility.yul\":1467:1531 */\n tag_60\n /* \"#utility.yul\":1523:1530 */\n dup5\n /* \"#utility.yul\":1514:1520 */\n dup3\n /* \"#utility.yul\":1503:1512 */\n dup6\n /* \"#utility.yul\":1499:1521 */\n add\n /* \"#utility.yul\":1467:1531 */\n tag_40\n jump\t// in\n tag_60:\n /* \"#utility.yul\":1457:1531 */\n swap2\n pop\n /* \"#utility.yul\":1413:1541 */\n pop\n /* \"#utility.yul\":1197:1548 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": { + "@_1637": { + "entryPoint": null, + "id": 1637, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_6827": { + "entryPoint": null, + "id": 6827, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@_checkNonPayable_1567": { + "entryPoint": 2667, + "id": 1567, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_2090": { + "entryPoint": 2884, + "id": 2090, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setBeacon_1515": { + "entryPoint": 2105, + "id": 1515, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@functionDelegateCall_2010": { + "entryPoint": 2527, + "id": 2010, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_2256": { + "entryPoint": 1688, + "id": 2256, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getStringSlot_2300": { + "entryPoint": 2096, + "id": 2300, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getUint256Slot_2289": { + "entryPoint": 1697, + "id": 2289, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@uint16ToString_10194": { + "entryPoint": 1706, + "id": 10194, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@upgradeBeaconToAndCall_1553": { + "entryPoint": 1437, + "id": 1553, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@verifyCallResultFromTarget_2050": { + "entryPoint": 2728, + "id": 2050, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_bytes_memory_ptr_fromMemory": { + "entryPoint": 3375, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_t_string_memory_ptr_fromMemory": { + "entryPoint": 3813, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 3045, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes_memory_ptr_fromMemory": { + "entryPoint": 3449, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_string_memory_ptr_fromMemory": { + "entryPoint": 3887, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint16_fromMemory": { + "entryPoint": 3105, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 5511, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_uint16t_bytes_memory_ptr_fromMemory": { + "entryPoint": 3499, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_string_memory_ptr_fromMemory": { + "entryPoint": 3937, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 5970, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 3682, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 4386, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_to_t_bytes4_nonPadded_inplace_fromStack": { + "entryPoint": 4328, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_to_t_bytes21_nonPadded_inplace_fromStack": { + "entryPoint": 5368, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199_to_t_string_memory_ptr_fromStack": { + "entryPoint": 4258, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be_to_t_string_memory_ptr_fromStack": { + "entryPoint": 4110, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack": { + "entryPoint": 4440, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 3736, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_bytes4_t_string_memory_ptr_t_bytes1_t_string_memory_ptr_t_bytes1_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 4478, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_bytes21_t_string_memory_ptr_t_bytes1_t_string_memory_ptr_t_bytes1_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 5406, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 5987, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 4296, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 4148, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 3250, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": 2953, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_t_bytes_memory_ptr": { + "entryPoint": 3280, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_t_string_memory_ptr": { + "entryPoint": 3760, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_t_string_storage": { + "entryPoint": 4680, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_bytes_memory_ptr": { + "entryPoint": 3662, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_string_memory_ptr": { + "entryPoint": 4366, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 3672, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_fromStack": { + "entryPoint": 4016, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 4376, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint16": { + "entryPoint": 5865, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint16": { + "entryPoint": 5695, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint16": { + "entryPoint": 5750, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_t_string_storage": { + "entryPoint": 4989, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "cleanup_t_address": { + "entryPoint": 3001, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint16": { + "entryPoint": 3067, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 2970, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 4810, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clear_storage_range_t_bytes1": { + "entryPoint": 4951, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "convert_t_uint256_to_t_uint256": { + "entryPoint": 4828, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 5140, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 3333, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "divide_by_32_ceil": { + "entryPoint": 4698, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 4628, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": 5111, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 3196, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "identity": { + "entryPoint": 4819, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "increment_t_uint16": { + "entryPoint": 5604, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mask_bytes_dynamic": { + "entryPoint": 5081, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "mod_t_uint16": { + "entryPoint": 5810, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 5559, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": 5650, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x22": { + "entryPoint": 4583, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 5925, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 3151, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "prepare_store_t_uint256": { + "entryPoint": 4867, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { + "entryPoint": 3127, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": { + "entryPoint": 3131, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": 2966, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 2962, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "round_up_to_mul_of_32": { + "entryPoint": 3135, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "shift_left_dynamic": { + "entryPoint": 4713, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "shift_right_unsigned_dynamic": { + "entryPoint": 5069, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "storage_set_to_zero_t_uint256": { + "entryPoint": 4923, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "store_literal_in_memory_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199": { + "entryPoint": 4180, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "store_literal_in_memory_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be": { + "entryPoint": 4032, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "update_byte_slice_dynamic32": { + "entryPoint": 4725, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "update_storage_value_t_uint256_to_t_uint256": { + "entryPoint": 4876, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 3020, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint16": { + "entryPoint": 3080, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "zero_value_for_split_t_uint256": { + "entryPoint": 4919, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:20693:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:40", + "type": "" + } + ], + "src": "334:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:40", + "type": "" + } + ], + "src": "466:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:40" + }, + "nodeType": "YulIf", + "src": "621:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:40", + "type": "" + } + ], + "src": "568:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "769:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:40" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:40", + "type": "" + } + ], + "src": "696:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "889:45:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "899:29:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "914:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "921:6:40", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "910:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "910:18:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "899:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "871:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "881:7:40", + "type": "" + } + ], + "src": "845:89:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "982:78:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1038:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1047:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1050:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1040:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1040:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1040:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1005:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1029:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "1012:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "1012:23:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1002:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1002:34:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "995:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "995:42:40" + }, + "nodeType": "YulIf", + "src": "992:62:40" + } + ] + }, + "name": "validator_revert_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "975:5:40", + "type": "" + } + ], + "src": "940:120:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1128:79:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1138:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1153:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1147:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "1147:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1138:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1195:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "1169:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "1169:32:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1169:32:40" + } + ] + }, + "name": "abi_decode_t_uint16_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1106:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1114:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1122:5:40", + "type": "" + } + ], + "src": "1066:141:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1302:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1319:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1322:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1312:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1312:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1312:12:40" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "1213:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1425:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1442:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1445:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1435:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1435:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1435:12:40" + } + ] + }, + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulFunctionDefinition", + "src": "1336:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1507:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1517:38:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1535:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1542:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1531:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1531:14:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1551:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1547:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1547:7:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1527:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1527:28:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "1517:6:40" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1490:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "1500:6:40", + "type": "" + } + ], + "src": "1459:102:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1595:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1612:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1615:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1605:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1605:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1605:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1709:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1712:4:40", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1702:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1702:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1702:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1733:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1736:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1726:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1726:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1726:15:40" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "1567:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1796:238:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1806:58:40", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1828:6:40" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1858:4:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1836:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "1836:27:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1824:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1824:40:40" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1810:10:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1975:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1977:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "1977:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1977:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1918:10:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1930:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1915:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1915:34:40" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1954:10:40" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1966:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1951:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1951:22:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1912:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1912:62:40" + }, + "nodeType": "YulIf", + "src": "1909:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2013:2:40", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2017:10:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2006:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2006:22:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2006:22:40" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1782:6:40", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1790:4:40", + "type": "" + } + ], + "src": "1753:281:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2081:88:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2091:30:40", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "2101:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "2101:20:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2091:6:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2150:6:40" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2158:4:40" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "2130:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "2130:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2130:33:40" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2065:4:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2074:6:40", + "type": "" + } + ], + "src": "2040:129:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2241:241:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2346:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2348:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "2348:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2348:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2318:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2326:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2315:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2315:30:40" + }, + "nodeType": "YulIf", + "src": "2312:56:40" + }, + { + "nodeType": "YulAssignment", + "src": "2378:37:40", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2408:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "2386:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "2386:29:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2378:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2452:23:40", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2464:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2470:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2460:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2460:15:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "2452:4:40" + } + ] + } + ] + }, + "name": "array_allocation_size_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2225:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "2236:4:40", + "type": "" + } + ], + "src": "2175:307:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2550:184:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2560:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2569:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "2564:1:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2629:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2654:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2659:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2650:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2650:11:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2673:3:40" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2678:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2669:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2669:11:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2663:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "2663:18:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2643:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2643:39:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2643:39:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2590:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2593:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2587:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2587:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2601:19:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2603:15:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2612:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2615:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2608:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2608:10:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2603:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2583:3:40", + "statements": [] + }, + "src": "2579:113:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2712:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2717:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2708:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2708:16:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2726:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2701:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2701:27:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2701:27:40" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2532:3:40", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2537:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2542:6:40", + "type": "" + } + ], + "src": "2488:246:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2834:338:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2844:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2910:6:40" + } + ], + "functionName": { + "name": "array_allocation_size_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2869:40:40" + }, + "nodeType": "YulFunctionCall", + "src": "2869:48:40" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2853:15:40" + }, + "nodeType": "YulFunctionCall", + "src": "2853:65:40" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2844:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2934:5:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2941:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2927:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2927:21:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2927:21:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2957:27:40", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2972:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2979:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2968:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2968:16:40" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2961:3:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3022:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulIdentifier", + "src": "3024:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3024:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3024:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3003:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3008:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2999:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2999:16:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3017:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2996:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2996:25:40" + }, + "nodeType": "YulIf", + "src": "2993:112:40" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3149:3:40" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3154:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3159:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "3114:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "3114:52:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3114:52:40" + } + ] + }, + "name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2807:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2812:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2820:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2828:5:40", + "type": "" + } + ], + "src": "2740:432:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3263:281:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3312:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3314:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3314:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3314:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3291:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3299:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3287:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3287:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3306:3:40" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3283:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3283:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3276:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3276:35:40" + }, + "nodeType": "YulIf", + "src": "3273:122:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3404:27:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3424:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3418:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "3418:13:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3408:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3440:98:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3511:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3519:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3507:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3507:17:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3526:6:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3534:3:40" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3449:57:40" + }, + "nodeType": "YulFunctionCall", + "src": "3449:89:40" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3440:5:40" + } + ] + } + ] + }, + "name": "abi_decode_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3241:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3249:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3257:5:40", + "type": "" + } + ], + "src": "3191:353:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3703:993:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3750:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3752:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3752:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3752:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3724:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3733:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3720:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3720:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3745:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3716:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3716:33:40" + }, + "nodeType": "YulIf", + "src": "3713:120:40" + }, + { + "nodeType": "YulBlock", + "src": "3843:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3858:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3872:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3862:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3887:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3933:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3944:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3929:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3929:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3953:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "3897:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "3897:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3887:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3981:129:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3996:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4010:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4000:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4026:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4072:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4083:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4068:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4068:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4092:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "4036:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "4036:64:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4026:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4120:129:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4135:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4149:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4139:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4165:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4211:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4222:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4207:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4207:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4231:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "4175:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "4175:64:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4165:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4259:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4274:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4288:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4278:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4304:73:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4349:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4360:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4345:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4345:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4369:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint16_fromMemory", + "nodeType": "YulIdentifier", + "src": "4314:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "4314:63:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4304:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4397:292:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4412:40:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4436:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4447:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4432:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4432:19:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4426:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "4426:26:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4416:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4499:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "4501:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "4501:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4501:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4471:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4479:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4468:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "4468:30:40" + }, + "nodeType": "YulIf", + "src": "4465:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "4596:83:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4651:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4662:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4647:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4647:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4671:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "4606:40:40" + }, + "nodeType": "YulFunctionCall", + "src": "4606:73:40" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4596:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint16t_bytes_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3641:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3652:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3664:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3672:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3680:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "3688:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "3696:6:40", + "type": "" + } + ], + "src": "3550:1146:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4760:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4771:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4787:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4781:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "4781:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4771:6:40" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4743:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4753:6:40", + "type": "" + } + ], + "src": "4702:98:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4919:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4929:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4944:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "4929:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4891:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4896:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "4907:11:40", + "type": "" + } + ], + "src": "4806:147:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5067:278:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5077:52:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5123:5:40" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "5091:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "5091:38:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5081:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5138:95:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5221:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5226:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "5145:75:40" + }, + "nodeType": "YulFunctionCall", + "src": "5145:88:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5138:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5281:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5288:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5277:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5277:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5295:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5300:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "5242:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "5242:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5242:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "5316:23:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5327:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5332:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5323:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5323:16:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5316:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5048:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5055:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5063:3:40", + "type": "" + } + ], + "src": "4959:386:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5485:137:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5496:100:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5583:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5592:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "5503:79:40" + }, + "nodeType": "YulFunctionCall", + "src": "5503:93:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5496:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5606:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5613:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5606:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5464:3:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5470:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5481:3:40", + "type": "" + } + ], + "src": "5351:271:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5695:241:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5800:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "5802:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "5802:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5802:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5772:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5780:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5769:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "5769:30:40" + }, + "nodeType": "YulIf", + "src": "5766:56:40" + }, + { + "nodeType": "YulAssignment", + "src": "5832:37:40", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5862:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "5840:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "5840:29:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5832:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5906:23:40", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5918:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5924:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5914:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5914:15:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5906:4:40" + } + ] + } + ] + }, + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5679:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "5690:4:40", + "type": "" + } + ], + "src": "5628:308:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6037:339:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6047:75:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6114:6:40" + } + ], + "functionName": { + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "6072:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "6072:49:40" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6056:15:40" + }, + "nodeType": "YulFunctionCall", + "src": "6056:66:40" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6047:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6138:5:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6145:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6131:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6131:21:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6131:21:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6161:27:40", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6176:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6183:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6172:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6172:16:40" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6165:3:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6226:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulIdentifier", + "src": "6228:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "6228:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6228:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6207:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6212:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6203:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6203:16:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6221:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6200:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "6200:25:40" + }, + "nodeType": "YulIf", + "src": "6197:112:40" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6353:3:40" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6358:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6363:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "6318:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "6318:52:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6318:52:40" + } + ] + }, + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "6010:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6015:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6023:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6031:5:40", + "type": "" + } + ], + "src": "5942:434:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6469:282:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6518:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "6520:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "6520:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6520:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6497:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6505:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6493:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6493:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6512:3:40" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6489:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6489:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6482:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6482:35:40" + }, + "nodeType": "YulIf", + "src": "6479:122:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6610:27:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6630:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6624:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "6624:13:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6614:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6646:99:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6718:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6726:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6714:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6714:17:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6733:6:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6741:3:40" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "6655:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "6655:90:40" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6646:5:40" + } + ] + } + ] + }, + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6447:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6455:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6463:5:40", + "type": "" + } + ], + "src": "6396:355:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6844:437:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6890:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "6892:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "6892:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6892:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6865:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6874:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6861:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6861:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6886:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6857:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6857:32:40" + }, + "nodeType": "YulIf", + "src": "6854:119:40" + }, + { + "nodeType": "YulBlock", + "src": "6983:291:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6998:38:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7022:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7033:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7018:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7018:17:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7012:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "7012:24:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7002:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7083:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "7085:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "7085:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7085:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7055:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7063:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7052:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "7052:30:40" + }, + "nodeType": "YulIf", + "src": "7049:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "7180:84:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7236:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7247:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7232:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7232:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7256:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "7190:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "7190:74:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7180:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6814:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6825:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6837:6:40", + "type": "" + } + ], + "src": "6757:524:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7383:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7400:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7405:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7393:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "7393:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7393:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "7421:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7440:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7445:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7436:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7436:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "7421:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7355:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "7360:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "7371:11:40", + "type": "" + } + ], + "src": "7287:169:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7568:127:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7590:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7598:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7586:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7586:14:40" + }, + { + "hexValue": "4c4250616972426561636f6e50726f78793a204661696c656420746f20676574", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7602:34:40", + "type": "", + "value": "LBPairBeaconProxy: Failed to get" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7579:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "7579:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7579:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7658:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7666:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7654:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7654:15:40" + }, + { + "hexValue": "20746f6b656e2073796d626f6c73", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7671:16:40", + "type": "", + "value": " token symbols" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7647:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "7647:41:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7647:41:40" + } + ] + }, + "name": "store_literal_in_memory_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "7560:6:40", + "type": "" + } + ], + "src": "7462:233:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7847:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7857:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7923:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7928:2:40", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7864:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "7864:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7857:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8029:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be", + "nodeType": "YulIdentifier", + "src": "7940:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "7940:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7940:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "8042:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8053:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8058:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8049:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8049:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8042:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7835:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7843:3:40", + "type": "" + } + ], + "src": "7701:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8244:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8254:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8266:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8277:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8262:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8262:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8254:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8301:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8312:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8297:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8297:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8320:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8326:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8316:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8316:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8290:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8290:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8290:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "8346:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8480:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8354:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "8354:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8346:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8224:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8239:4:40", + "type": "" + } + ], + "src": "8073:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8604:121:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8626:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8634:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8622:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8622:14:40" + }, + { + "hexValue": "4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8638:34:40", + "type": "", + "value": "LBPairBeaconProxy: Invalid token" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8615:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8615:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8615:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8694:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8702:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8690:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8690:15:40" + }, + { + "hexValue": "2073796d626f6c73", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8707:10:40", + "type": "", + "value": " symbols" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8683:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8683:35:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8683:35:40" + } + ] + }, + "name": "store_literal_in_memory_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "8596:6:40", + "type": "" + } + ], + "src": "8498:227:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8877:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8887:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8953:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8958:2:40", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8894:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "8894:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8887:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9059:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199", + "nodeType": "YulIdentifier", + "src": "8970:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "8970:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8970:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "9072:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9083:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9088:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9079:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9079:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9072:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8865:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8873:3:40", + "type": "" + } + ], + "src": "8731:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9274:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9284:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9296:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9307:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9292:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9292:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9284:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9331:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9342:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9327:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9327:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9350:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9356:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9346:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9346:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9320:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "9320:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9320:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "9376:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9510:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9384:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "9384:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9376:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9254:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9269:4:40", + "type": "" + } + ], + "src": "9103:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9674:35:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9691:3:40" + }, + { + "hexValue": "4c42545f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9696:6:40", + "type": "", + "value": "LBT_" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9684:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "9684:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9684:19:40" + } + ] + }, + "name": "abi_encode_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_to_t_bytes4_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9669:3:40", + "type": "" + } + ], + "src": "9528:181:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9774:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9785:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9801:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9795:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "9795:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9785:6:40" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9757:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9767:6:40", + "type": "" + } + ], + "src": "9715:99:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9934:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9944:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9959:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "9944:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9906:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9911:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "9922:11:40", + "type": "" + } + ], + "src": "9820:148:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10084:280:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10094:53:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10141:5:40" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "10108:32:40" + }, + "nodeType": "YulFunctionCall", + "src": "10108:39:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10098:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10156:96:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10240:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10245:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "10163:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "10163:89:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10156:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10300:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10307:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10296:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10296:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10314:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10319:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "10261:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "10261:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10261:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "10335:23:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10346:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10351:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10342:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10342:16:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10335:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10065:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10072:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10080:3:40", + "type": "" + } + ], + "src": "9974:390:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10516:32:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10533:3:40" + }, + { + "hexValue": "2f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10538:3:40", + "type": "", + "value": "/" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10526:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "10526:16:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10526:16:40" + } + ] + }, + "name": "abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10511:3:40", + "type": "" + } + ], + "src": "10370:178:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11056:885:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11200:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_to_t_bytes4_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "11067:131:40" + }, + "nodeType": "YulFunctionCall", + "src": "11067:137:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11067:137:40" + }, + { + "nodeType": "YulAssignment", + "src": "11213:18:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11224:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11229:1:40", + "type": "", + "value": "4" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11220:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11220:11:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11213:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11241:102:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11330:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11339:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "11248:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "11248:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11241:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11486:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "11353:131:40" + }, + "nodeType": "YulFunctionCall", + "src": "11353:137:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11353:137:40" + }, + { + "nodeType": "YulAssignment", + "src": "11499:18:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11510:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11515:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11506:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11506:11:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11499:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11527:102:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11616:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11625:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "11534:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "11534:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11527:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11772:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "11639:131:40" + }, + "nodeType": "YulFunctionCall", + "src": "11639:137:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11639:137:40" + }, + { + "nodeType": "YulAssignment", + "src": "11785:18:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11796:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11801:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11792:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11792:11:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11785:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11813:102:40", + "value": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11902:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11911:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "11820:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "11820:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11813:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11925:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11932:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11925:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_bytes4_t_string_memory_ptr_t_bytes1_t_string_memory_ptr_t_bytes1_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11019:3:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "11025:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11033:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11041:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11052:3:40", + "type": "" + } + ], + "src": "10554:1387:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11975:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11992:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11995:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11985:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "11985:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11985:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12089:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12092:4:40", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12082:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "12082:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12082:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12113:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12116:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12106:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "12106:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12106:15:40" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "11947:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12184:269:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12194:22:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12208:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12214:1:40", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "12204:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12204:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12194:6:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "12225:38:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12255:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12261:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12251:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12251:12:40" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "12229:18:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12302:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12316:27:40", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12330:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12338:4:40", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12326:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12326:17:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12316:6:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "12282:18:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "12275:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "12275:26:40" + }, + "nodeType": "YulIf", + "src": "12272:81:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12405:42:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "12419:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "12419:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12419:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "12369:18:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "12392:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12400:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "12389:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "12389:14:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "12366:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "12366:38:40" + }, + "nodeType": "YulIf", + "src": "12363:84:40" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "12168:4:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "12177:6:40", + "type": "" + } + ], + "src": "12133:320:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12513:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12523:11:40", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "12531:3:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12523:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12551:1:40", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "12554:3:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12544:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "12544:14:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12544:14:40" + }, + { + "nodeType": "YulAssignment", + "src": "12567:26:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12585:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12588:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "12575:9:40" + }, + "nodeType": "YulFunctionCall", + "src": "12575:18:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12567:4:40" + } + ] + } + ] + }, + "name": "array_dataslot_t_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "12500:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "12508:4:40", + "type": "" + } + ], + "src": "12459:141:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12650:49:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12660:33:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12678:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12685:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12674:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12674:14:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12690:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "12670:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12670:23:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "12660:6:40" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12633:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "12643:6:40", + "type": "" + } + ], + "src": "12606:93:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12758:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12768:37:40", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "12793:4:40" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12799:5:40" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "12789:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12789:16:40" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "12768:8:40" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "12733:4:40", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12739:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "12749:8:40", + "type": "" + } + ], + "src": "12705:107:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12894:317:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12904:35:40", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nodeType": "YulIdentifier", + "src": "12925:10:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12937:1:40", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "12921:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12921:18:40" + }, + "variables": [ + { + "name": "shiftBits", + "nodeType": "YulTypedName", + "src": "12908:9:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "12948:109:40", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "12979:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12990:66:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "12960:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "12960:97:40" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "12952:4:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13066:51:40", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "13097:9:40" + }, + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "13108:8:40" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "13078:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "13078:39:40" + }, + "variableNames": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "13066:8:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13126:30:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13139:5:40" + }, + { + "arguments": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "13150:4:40" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "13146:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13146:9:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13135:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13135:21:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13126:5:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13165:40:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13178:5:40" + }, + { + "arguments": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "13189:8:40" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "13199:4:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13185:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13185:19:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "13175:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "13175:30:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "13165:6:40" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12855:5:40", + "type": "" + }, + { + "name": "shiftBytes", + "nodeType": "YulTypedName", + "src": "12862:10:40", + "type": "" + }, + { + "name": "toInsert", + "nodeType": "YulTypedName", + "src": "12874:8:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "12887:6:40", + "type": "" + } + ], + "src": "12818:393:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13262:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13272:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13283:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "13272:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13244:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "13254:7:40", + "type": "" + } + ], + "src": "13217:77:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13332:28:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13342:12:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13349:5:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "13342:3:40" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13318:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "13328:3:40", + "type": "" + } + ], + "src": "13300:60:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13426:82:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13436:66:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13494:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "13476:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "13476:24:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "13467:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "13467:34:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "13449:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "13449:53:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "13436:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13406:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "13416:9:40", + "type": "" + } + ], + "src": "13366:142:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13561:28:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13571:12:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13578:5:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "13571:3:40" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13547:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "13557:3:40", + "type": "" + } + ], + "src": "13514:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13671:193:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13681:63:40", + "value": { + "arguments": [ + { + "name": "value_0", + "nodeType": "YulIdentifier", + "src": "13736:7:40" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "13705:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "13705:39:40" + }, + "variables": [ + { + "name": "convertedValue_0", + "nodeType": "YulTypedName", + "src": "13685:16:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "13760:4:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "13800:4:40" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "13794:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "13794:11:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13807:6:40" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nodeType": "YulIdentifier", + "src": "13839:16:40" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nodeType": "YulIdentifier", + "src": "13815:23:40" + }, + "nodeType": "YulFunctionCall", + "src": "13815:41:40" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nodeType": "YulIdentifier", + "src": "13766:27:40" + }, + "nodeType": "YulFunctionCall", + "src": "13766:91:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "13753:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "13753:105:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13753:105:40" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "13648:4:40", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13654:6:40", + "type": "" + }, + { + "name": "value_0", + "nodeType": "YulTypedName", + "src": "13662:7:40", + "type": "" + } + ], + "src": "13595:269:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13919:24:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13929:8:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13936:1:40", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "13929:3:40" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "13915:3:40", + "type": "" + } + ], + "src": "13870:73:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14002:136:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14012:46:40", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulIdentifier", + "src": "14026:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "14026:32:40" + }, + "variables": [ + { + "name": "zero_0", + "nodeType": "YulTypedName", + "src": "14016:6:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "14111:4:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14117:6:40" + }, + { + "name": "zero_0", + "nodeType": "YulIdentifier", + "src": "14125:6:40" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "14067:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "14067:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14067:65:40" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "13988:4:40", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13994:6:40", + "type": "" + } + ], + "src": "13949:189:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14194:136:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14261:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14305:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14312:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulIdentifier", + "src": "14275:29:40" + }, + "nodeType": "YulFunctionCall", + "src": "14275:39:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14275:39:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14214:5:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14221:3:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "14211:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "14211:14:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "14226:26:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14228:22:40", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14241:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14248:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14237:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14237:13:40" + }, + "variableNames": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "14228:5:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "14208:2:40", + "statements": [] + }, + "src": "14204:120:40" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "14182:5:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14189:3:40", + "type": "" + } + ], + "src": "14144:186:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14415:464:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14441:431:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14455:54:40", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "14503:5:40" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nodeType": "YulIdentifier", + "src": "14471:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "14471:38:40" + }, + "variables": [ + { + "name": "dataArea", + "nodeType": "YulTypedName", + "src": "14459:8:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "14522:63:40", + "value": { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "14545:8:40" + }, + { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "14573:10:40" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "14555:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "14555:29:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14541:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14541:44:40" + }, + "variables": [ + { + "name": "deleteStart", + "nodeType": "YulTypedName", + "src": "14526:11:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14742:27:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14744:23:40", + "value": { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "14759:8:40" + }, + "variableNames": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "14744:11:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "14726:10:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14738:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "14723:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "14723:18:40" + }, + "nodeType": "YulIf", + "src": "14720:49:40" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "14811:11:40" + }, + { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "14828:8:40" + }, + { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "14856:3:40" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "14838:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "14838:22:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14824:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14824:37:40" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulIdentifier", + "src": "14782:28:40" + }, + "nodeType": "YulFunctionCall", + "src": "14782:80:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14782:80:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "14432:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14437:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14429:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "14429:11:40" + }, + "nodeType": "YulIf", + "src": "14426:446:40" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "14391:5:40", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "14398:3:40", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "14403:10:40", + "type": "" + } + ], + "src": "14336:543:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14948:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14958:37:40", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "14983:4:40" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14989:5:40" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "14979:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14979:16:40" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "14958:8:40" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "14923:4:40", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14929:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "14939:8:40", + "type": "" + } + ], + "src": "14885:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15059:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15069:68:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15118:1:40", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nodeType": "YulIdentifier", + "src": "15121:5:40" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "15114:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15114:13:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15133:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "15129:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15129:6:40" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulIdentifier", + "src": "15085:28:40" + }, + "nodeType": "YulFunctionCall", + "src": "15085:51:40" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "15081:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15081:56:40" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "15073:4:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15146:25:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "15160:4:40" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "15166:4:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15156:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15156:15:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "15146:6:40" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "15036:4:40", + "type": "" + }, + { + "name": "bytes", + "nodeType": "YulTypedName", + "src": "15042:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "15052:6:40", + "type": "" + } + ], + "src": "15008:169:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15263:214:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15396:37:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "15423:4:40" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "15429:3:40" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "15404:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "15404:29:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "15396:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15442:29:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "15453:4:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15463:1:40", + "type": "", + "value": "2" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "15466:3:40" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "15459:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15459:11:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "15450:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "15450:21:40" + }, + "variableNames": [ + { + "name": "used", + "nodeType": "YulIdentifier", + "src": "15442:4:40" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "15244:4:40", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "15250:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nodeType": "YulTypedName", + "src": "15258:4:40", + "type": "" + } + ], + "src": "15182:295:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15574:1303:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15585:51:40", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "15632:3:40" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "15599:32:40" + }, + "nodeType": "YulFunctionCall", + "src": "15599:37:40" + }, + "variables": [ + { + "name": "newLen", + "nodeType": "YulTypedName", + "src": "15589:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15721:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "15723:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "15723:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15723:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "15693:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15701:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "15690:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "15690:30:40" + }, + "nodeType": "YulIf", + "src": "15687:56:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15753:52:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "15799:4:40" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "15793:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "15793:11:40" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nodeType": "YulIdentifier", + "src": "15767:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "15767:38:40" + }, + "variables": [ + { + "name": "oldLen", + "nodeType": "YulTypedName", + "src": "15757:6:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "15898:4:40" + }, + { + "name": "oldLen", + "nodeType": "YulIdentifier", + "src": "15904:6:40" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "15912:6:40" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nodeType": "YulIdentifier", + "src": "15852:45:40" + }, + "nodeType": "YulFunctionCall", + "src": "15852:67:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15852:67:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15929:18:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15946:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nodeType": "YulTypedName", + "src": "15933:9:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15957:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15970:4:40", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "15957:9:40" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16021:611:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16035:37:40", + "value": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "16054:6:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16066:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "16062:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16062:9:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16050:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16050:22:40" + }, + "variables": [ + { + "name": "loopEnd", + "nodeType": "YulTypedName", + "src": "16039:7:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16086:51:40", + "value": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "16132:4:40" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nodeType": "YulIdentifier", + "src": "16100:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "16100:37:40" + }, + "variables": [ + { + "name": "dstPtr", + "nodeType": "YulTypedName", + "src": "16090:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16150:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16159:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "16154:1:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16218:163:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "16243:6:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "16261:3:40" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "16266:9:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16257:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16257:19:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16251:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "16251:26:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "16236:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "16236:42:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16236:42:40" + }, + { + "nodeType": "YulAssignment", + "src": "16295:24:40", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "16309:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16317:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16305:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16305:14:40" + }, + "variableNames": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "16295:6:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16336:31:40", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "16353:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16364:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16349:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16349:18:40" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "16336:9:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16184:1:40" + }, + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "16187:7:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "16181:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "16181:14:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "16196:21:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16198:17:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16207:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16210:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16203:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16203:12:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "16198:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "16177:3:40", + "statements": [] + }, + "src": "16173:208:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16417:156:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16435:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "16462:3:40" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "16467:9:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16458:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16458:19:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16452:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "16452:26:40" + }, + "variables": [ + { + "name": "lastValue", + "nodeType": "YulTypedName", + "src": "16439:9:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "16502:6:40" + }, + { + "arguments": [ + { + "name": "lastValue", + "nodeType": "YulIdentifier", + "src": "16529:9:40" + }, + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "16544:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16552:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16540:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16540:17:40" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "16510:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "16510:48:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "16495:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "16495:64:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16495:64:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "16400:7:40" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "16409:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "16397:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "16397:19:40" + }, + "nodeType": "YulIf", + "src": "16394:179:40" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "16593:4:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "16607:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16615:1:40", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16603:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16603:14:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16619:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16599:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16599:22:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "16586:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "16586:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16586:36:40" + } + ] + }, + "nodeType": "YulCase", + "src": "16014:618:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16019:1:40", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16649:222:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16663:14:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16676:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16667:5:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16700:67:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16718:35:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "16737:3:40" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "16742:9:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16733:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16733:19:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "16727:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "16727:26:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16718:5:40" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "16693:6:40" + }, + "nodeType": "YulIf", + "src": "16690:77:40" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "16787:4:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16846:5:40" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "16853:6:40" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulIdentifier", + "src": "16793:52:40" + }, + "nodeType": "YulFunctionCall", + "src": "16793:67:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "16780:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "16780:81:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16780:81:40" + } + ] + }, + "nodeType": "YulCase", + "src": "16641:230:40", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "15994:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16002:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "15991:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "15991:14:40" + }, + "nodeType": "YulSwitch", + "src": "15984:887:40" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "15563:4:40", + "type": "" + }, + { + "name": "src", + "nodeType": "YulTypedName", + "src": "15569:3:40", + "type": "" + } + ], + "src": "15482:1395:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17030:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17047:3:40" + }, + { + "hexValue": "4c697175696469747920426f6f6b20546f6b656e20", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17052:23:40", + "type": "", + "value": "Liquidity Book Token " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17040:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "17040:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17040:36:40" + } + ] + }, + "name": "abi_encode_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_to_t_bytes21_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17025:3:40", + "type": "" + } + ], + "src": "16883:199:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17591:887:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17736:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_to_t_bytes21_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17602:132:40" + }, + "nodeType": "YulFunctionCall", + "src": "17602:138:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17602:138:40" + }, + { + "nodeType": "YulAssignment", + "src": "17749:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17760:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17765:2:40", + "type": "", + "value": "21" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17756:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17756:12:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17749:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17778:102:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "17867:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17876:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17785:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "17785:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17778:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18023:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17890:131:40" + }, + "nodeType": "YulFunctionCall", + "src": "17890:137:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17890:137:40" + }, + { + "nodeType": "YulAssignment", + "src": "18036:18:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18047:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18052:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18043:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18043:11:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18036:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18064:102:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18153:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18162:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "18071:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "18071:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18064:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18309:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "18176:131:40" + }, + "nodeType": "YulFunctionCall", + "src": "18176:137:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18176:137:40" + }, + { + "nodeType": "YulAssignment", + "src": "18322:18:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18333:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18338:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18329:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18329:11:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18322:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18350:102:40", + "value": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "18439:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18448:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "18357:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "18357:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18350:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18462:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18469:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "18462:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_bytes21_t_string_memory_ptr_t_bytes1_t_string_memory_ptr_t_bytes1_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17554:3:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "17560:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "17568:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17576:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17587:3:40", + "type": "" + } + ], + "src": "17088:1390:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18561:274:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "18607:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "18609:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "18609:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18609:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18582:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18591:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "18578:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18578:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18603:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "18574:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18574:32:40" + }, + "nodeType": "YulIf", + "src": "18571:119:40" + }, + { + "nodeType": "YulBlock", + "src": "18700:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18715:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18729:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "18719:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18744:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18790:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "18801:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18786:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18786:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18810:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "18754:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "18754:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18744:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18531:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "18542:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18554:6:40", + "type": "" + } + ], + "src": "18484:351:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18869:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18886:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18889:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18879:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "18879:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18879:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18983:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18986:4:40", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18976:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "18976:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18976:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19007:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19010:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "19000:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19000:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19000:15:40" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "18841:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19069:129:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19079:32:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19105:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19088:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19088:23:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19079:5:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19141:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "19143:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19143:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19143:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19126:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19133:6:40", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "19123:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "19123:17:40" + }, + "nodeType": "YulIf", + "src": "19120:43:40" + }, + { + "nodeType": "YulAssignment", + "src": "19172:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19183:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19190:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19179:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19179:13:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "19172:3:40" + } + ] + } + ] + }, + "name": "increment_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19055:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "19065:3:40", + "type": "" + } + ], + "src": "19027:171:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19232:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19249:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19252:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19242:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19242:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19242:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19346:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19349:4:40", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19339:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19339:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19339:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19370:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19373:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "19363:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19363:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19363:15:40" + } + ] + }, + "name": "panic_error_0x12", + "nodeType": "YulFunctionDefinition", + "src": "19204:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19431:141:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19441:24:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19463:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19446:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19446:19:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19441:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19474:24:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19496:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19479:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19479:19:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19474:1:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19520:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "19522:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19522:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19522:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19517:1:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19510:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19510:9:40" + }, + "nodeType": "YulIf", + "src": "19507:35:40" + }, + { + "nodeType": "YulAssignment", + "src": "19552:14:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19561:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19564:1:40" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "19557:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19557:9:40" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "19552:1:40" + } + ] + } + ] + }, + "name": "checked_div_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19420:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19423:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "19429:1:40", + "type": "" + } + ], + "src": "19390:182:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19622:152:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19632:24:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19654:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19637:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19637:19:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19632:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19665:24:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19687:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19670:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19670:19:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19665:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19698:17:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19710:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19713:1:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "19706:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19706:9:40" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "19698:4:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19745:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "19747:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19747:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19747:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "19731:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19737:6:40", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "19728:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "19728:16:40" + }, + "nodeType": "YulIf", + "src": "19725:42:40" + } + ] + }, + "name": "checked_sub_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19608:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19611:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "19617:4:40", + "type": "" + } + ], + "src": "19578:196:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19813:140:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19823:24:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19845:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19828:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19828:19:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19823:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19856:24:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19878:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "19861:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19861:19:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19856:1:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19902:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nodeType": "YulIdentifier", + "src": "19904:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "19904:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19904:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19899:1:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19892:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19892:9:40" + }, + "nodeType": "YulIf", + "src": "19889:35:40" + }, + { + "nodeType": "YulAssignment", + "src": "19933:14:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "19942:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "19945:1:40" + } + ], + "functionName": { + "name": "mod", + "nodeType": "YulIdentifier", + "src": "19938:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19938:9:40" + }, + "variableNames": [ + { + "name": "r", + "nodeType": "YulIdentifier", + "src": "19933:1:40" + } + ] + } + ] + }, + "name": "mod_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19802:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19805:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nodeType": "YulTypedName", + "src": "19811:1:40", + "type": "" + } + ], + "src": "19780:173:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20002:150:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20012:24:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "20034:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "20017:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "20017:19:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "20012:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20045:24:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "20067:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint16", + "nodeType": "YulIdentifier", + "src": "20050:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "20050:19:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "20045:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20078:16:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "20089:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "20092:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20085:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20085:9:40" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "20078:3:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20123:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "20125:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "20125:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20125:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "20110:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20115:6:40", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "20107:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "20107:15:40" + }, + "nodeType": "YulIf", + "src": "20104:41:40" + } + ] + }, + "name": "checked_add_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "19989:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "19992:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "19998:3:40", + "type": "" + } + ], + "src": "19959:193:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20186:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20203:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20206:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20196:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "20196:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20196:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20300:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20303:4:40", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20293:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "20293:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20293:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20324:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20327:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "20317:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "20317:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20317:15:40" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "20158:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20409:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20426:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20449:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "20431:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "20431:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20419:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "20419:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20419:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20397:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20404:3:40", + "type": "" + } + ], + "src": "20344:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20566:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20576:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20588:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20599:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20584:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20584:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20576:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "20656:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20669:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20680:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20665:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20665:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "20612:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "20612:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20612:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20538:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "20550:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20561:4:40", + "type": "" + } + ], + "src": "20468:222:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint16(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_addresst_uint16t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint16_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be(memPtr) {\n\n mstore(add(memPtr, 0), \"LBPairBeaconProxy: Failed to get\")\n\n mstore(add(memPtr, 32), \" token symbols\")\n\n }\n\n function abi_encode_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199(memPtr) {\n\n mstore(add(memPtr, 0), \"LBPairBeaconProxy: Invalid token\")\n\n mstore(add(memPtr, 32), \" symbols\")\n\n }\n\n function abi_encode_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_to_t_bytes4_nonPadded_inplace_fromStack(pos) {\n mstore(pos, \"LBT_\")\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack(pos) {\n mstore(pos, \"/\")\n }\n\n function abi_encode_tuple_packed_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_bytes4_t_string_memory_ptr_t_bytes1_t_string_memory_ptr_t_bytes1_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n abi_encode_t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01_to_t_bytes4_nonPadded_inplace_fromStack( pos)\n pos := add(pos, 4)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack( pos)\n pos := add(pos, 1)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack( pos)\n pos := add(pos, 1)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value2, pos)\n\n end := pos\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function abi_encode_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_to_t_bytes21_nonPadded_inplace_fromStack(pos) {\n mstore(pos, \"Liquidity Book Token \")\n }\n\n function abi_encode_tuple_packed_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_t_string_memory_ptr__to_t_bytes21_t_string_memory_ptr_t_bytes1_t_string_memory_ptr_t_bytes1_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n abi_encode_t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592_to_t_bytes21_nonPadded_inplace_fromStack( pos)\n pos := add(pos, 21)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack( pos)\n pos := add(pos, 1)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n abi_encode_t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527_to_t_bytes1_nonPadded_inplace_fromStack( pos)\n pos := add(pos, 1)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value2, pos)\n\n end := pos\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint16(value) -> ret {\n value := cleanup_t_uint16(value)\n if eq(value, 0xffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint16(x, y) -> r {\n x := cleanup_t_uint16(x)\n y := cleanup_t_uint16(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_sub_t_uint16(x, y) -> diff {\n x := cleanup_t_uint16(x)\n y := cleanup_t_uint16(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffff) { panic_error_0x11() }\n\n }\n\n function mod_t_uint16(x, y) -> r {\n x := cleanup_t_uint16(x)\n y := cleanup_t_uint16(y)\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n\n function checked_add_t_uint16(x, y) -> sum {\n x := cleanup_t_uint16(x)\n y := cleanup_t_uint16(y)\n sum := add(x, y)\n\n if gt(sum, 0xffff) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a0604052604051620019ba380380620019ba833981810160405281019062000029919062000dab565b8460405180602001604052805f8152506200004b82826200059d60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505f808573ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516200012c919062000e98565b5f60405180830381855afa9150503d805f811462000166576040519150601f19603f3d011682016040523d82523d5f602084013e6200016b565b606091505b50915091505f8180602001905181019062000187919062000f61565b90505f808773ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000234919062000e98565b5f60405180830381855afa9150503d805f81146200026e576040519150601f19603f3d011682016040523d82523d5f602084013e62000273565b606091505b50915091505f818060200190518101906200028f919062000f61565b90508580156200029c5750825b620002de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d59062001034565b60405180910390fd5b60405180602001604052805f8152508051906020012084805190602001201415801562000327575060405180602001604052805f81525080519060200120818051906020012014155b62000369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036090620010c8565b60405180910390fd5b896200039d7f3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec315f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088620004107f7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa582645f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508761ffff16620004877fff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f569738427825f1b620006a160201b60201c565b5f01819055505f620004a38961ffff16620006aa60201b60201c565b9050848282604051602001620004bc939291906200117e565b604051602081830303815290604052620004fe7f64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f5f1b6200083060201b60201c565b5f0190816200050e919062001414565b5084828260405160200162000526939291906200151e565b604051602081830303815290604052620005687fd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d845f1b6200083060201b60201c565b5f01908162000578919062001414565b506200058b8c896200059d60201b60201c565b5050505050505050505050506200177e565b620005ae826200083960201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a25f8151111562000683576200067c8273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000649573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200066f919062001587565b82620009df60201b60201c565b5062000694565b6200069362000a6b60201b60201c565b5b5050565b5f819050919050565b5f819050919050565b60605f8261ffff1603620006f6576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506200082b565b5f8290505f5b5f8261ffff16146200072f5780806200071590620015e4565b915050600a826200072791906200163f565b9150620006fc565b5f8161ffff1667ffffffffffffffff81111562000751576200075062000c4f565b5b6040519080825280601f01601f191660200182016040528015620007845781602001600182028036833780820191505090505b5090505b5f8561ffff16146200082457600182620007a3919062001676565b9150600a85620007b49190620016b2565b6030620007c29190620016e9565b60f81b818361ffff1681518110620007df57620007de62001725565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856200081c91906200163f565b945062000788565b8093505050505b919050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036200089757806040517f64ced0ec0000000000000000000000000000000000000000000000000000000081526004016200088e919062001763565b60405180910390fd5b80620008cb7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505f1b6200069860201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000955573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200097b919062001587565b90505f8173ffffffffffffffffffffffffffffffffffffffff163b03620009db57806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401620009d2919062001763565b60405180910390fd5b5050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405162000a0a919062000e98565b5f60405180830381855af49150503d805f811462000a44576040519150601f19603f3d011682016040523d82523d5f602084013e62000a49565b606091505b509150915062000a6185838362000aa860201b60201c565b9250505092915050565b5f34111562000aa6576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60608262000ac75762000ac18262000b4460201b60201c565b62000b3c565b5f825114801562000aee57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1562000b3357836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040162000b2a919062001763565b60405180910390fd5b81905062000b3d565b5b9392505050565b5f8151111562000b575780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bc58262000b9a565b9050919050565b62000bd78162000bb9565b811462000be2575f80fd5b50565b5f8151905062000bf58162000bcc565b92915050565b5f61ffff82169050919050565b62000c138162000bfb565b811462000c1e575f80fd5b50565b5f8151905062000c318162000c08565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000c878262000c3f565b810181811067ffffffffffffffff8211171562000ca95762000ca862000c4f565b5b80604052505050565b5f62000cbd62000b89565b905062000ccb828262000c7c565b919050565b5f67ffffffffffffffff82111562000ced5762000cec62000c4f565b5b62000cf88262000c3f565b9050602081019050919050565b5f5b8381101562000d2457808201518184015260208101905062000d07565b5f8484015250505050565b5f62000d4562000d3f8462000cd0565b62000cb2565b90508281526020810184848401111562000d645762000d6362000c3b565b5b62000d7184828562000d05565b509392505050565b5f82601f83011262000d905762000d8f62000c37565b5b815162000da284826020860162000d2f565b91505092915050565b5f805f805f60a0868803121562000dc75762000dc662000b92565b5b5f62000dd68882890162000be5565b955050602062000de98882890162000be5565b945050604062000dfc8882890162000be5565b935050606062000e0f8882890162000c21565b925050608086015167ffffffffffffffff81111562000e335762000e3262000b96565b5b62000e418882890162000d79565b9150509295509295909350565b5f81519050919050565b5f81905092915050565b5f62000e6e8262000e4e565b62000e7a818562000e58565b935062000e8c81856020860162000d05565b80840191505092915050565b5f62000ea5828462000e62565b915081905092915050565b5f67ffffffffffffffff82111562000ecd5762000ecc62000c4f565b5b62000ed88262000c3f565b9050602081019050919050565b5f62000efb62000ef58462000eb0565b62000cb2565b90508281526020810184848401111562000f1a5762000f1962000c3b565b5b62000f2784828562000d05565b509392505050565b5f82601f83011262000f465762000f4562000c37565b5b815162000f5884826020860162000ee5565b91505092915050565b5f6020828403121562000f795762000f7862000b92565b5b5f82015167ffffffffffffffff81111562000f995762000f9862000b96565b5b62000fa78482850162000f2f565b91505092915050565b5f82825260208201905092915050565b7f4c4250616972426561636f6e50726f78793a204661696c656420746f206765745f8201527f20746f6b656e2073796d626f6c73000000000000000000000000000000000000602082015250565b5f6200101c602e8362000fb0565b9150620010298262000fc0565b604082019050919050565b5f6020820190508181035f8301526200104d816200100e565b9050919050565b7f4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e5f8201527f2073796d626f6c73000000000000000000000000000000000000000000000000602082015250565b5f620010b060288362000fb0565b9150620010bd8262001054565b604082019050919050565b5f6020820190508181035f830152620010e181620010a2565b9050919050565b7f4c42545f00000000000000000000000000000000000000000000000000000000815250565b5f81519050919050565b5f81905092915050565b5f6200112e826200110e565b6200113a818562001118565b93506200114c81856020860162000d05565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b5f6200118a82620010e8565b6004820191506200119c828662001122565b9150620011a98262001158565b600182019150620011bb828562001122565b9150620011c88262001158565b600182019150620011da828462001122565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200122c57607f821691505b602082108103620012425762001241620011e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620012a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001269565b620012b2868362001269565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620012fc620012f6620012f084620012ca565b620012d3565b620012ca565b9050919050565b5f819050919050565b6200131783620012dc565b6200132f620013268262001303565b84845462001275565b825550505050565b5f90565b6200134562001337565b620013528184846200130c565b505050565b5b8181101562001379576200136d5f826200133b565b60018101905062001358565b5050565b601f821115620013c857620013928162001248565b6200139d846200125a565b81016020851015620013ad578190505b620013c5620013bc856200125a565b83018262001357565b50505b505050565b5f82821c905092915050565b5f620013ea5f1984600802620013cd565b1980831691505092915050565b5f620014048383620013d9565b9150826002028217905092915050565b6200141f826200110e565b67ffffffffffffffff8111156200143b576200143a62000c4f565b5b62001447825462001214565b620014548282856200137d565b5f60209050601f8311600181146200148a575f841562001475578287015190505b620014818582620013f7565b865550620014f0565b601f1984166200149a8662001248565b5f5b82811015620014c3578489015182556001820191506020850194506020810190506200149c565b86831015620014e35784890151620014df601f891682620013d9565b8355505b6001600288020188555050505b505050505050565b7f4c697175696469747920426f6f6b20546f6b656e200000000000000000000000815250565b5f6200152a82620014f8565b6015820191506200153c828662001122565b9150620015498262001158565b6001820191506200155b828562001122565b9150620015688262001158565b6001820191506200157a828462001122565b9150819050949350505050565b5f602082840312156200159f576200159e62000b92565b5b5f620015ae8482850162000be5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620015f08262000bfb565b915061ffff8203620016075762001606620015b7565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200164b8262000bfb565b9150620016588362000bfb565b9250826200166b576200166a62001612565b5b828204905092915050565b5f620016828262000bfb565b91506200168f8362000bfb565b9250828203905061ffff811115620016ac57620016ab620015b7565b5b92915050565b5f620016be8262000bfb565b9150620016cb8362000bfb565b925082620016de57620016dd62001612565b5b828206905092915050565b5f620016f58262000bfb565b9150620017028362000bfb565b9250828201905061ffff8111156200171f576200171e620015b7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6200175d8162000bb9565b82525050565b5f602082019050620017785f83018462001752565b92915050565b608051610223620017975f395f61011801526102235ff3fe608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061005c565b005b34801561003d575f80fd5b5061004661006e565b604051610053919061017b565b60405180910390f35b61006c61006761007c565b6100f6565b565b5f610077610115565b905090565b5f610085610115565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f191906101c2565b905090565b365f80375f80365f845af43d5f803e805f8114610111573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101658261013c565b9050919050565b6101758161015b565b82525050565b5f60208201905061018e5f83018461016c565b92915050565b5f80fd5b6101a18161015b565b81146101ab575f80fd5b50565b5f815190506101bc81610198565b92915050565b5f602082840312156101d7576101d6610194565b5b5f6101e4848285016101ae565b9150509291505056fea2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH3 0x19BA CODESIZE SUB DUP1 PUSH3 0x19BA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x29 SWAP2 SWAP1 PUSH3 0xDAB JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH3 0x4B DUP3 DUP3 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP PUSH0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x12C SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x166 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x16B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x187 SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH3 0x234 SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0x26E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x273 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x28F SWAP2 SWAP1 PUSH3 0xF61 JUMP JUMPDEST SWAP1 POP DUP6 DUP1 ISZERO PUSH3 0x29C JUMPI POP DUP3 JUMPDEST PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2D5 SWAP1 PUSH3 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO DUP1 ISZERO PUSH3 0x327 JUMPI POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO JUMPDEST PUSH3 0x369 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x360 SWAP1 PUSH3 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 PUSH3 0x39D PUSH32 0x3441AB29B24DAF7A3FD59500B0E08396EC08EC96F5CC2D0362924CDD45CFEC31 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP9 PUSH3 0x410 PUSH32 0x7E1935766B7C49E7482A018A5EE52CA183A2DDFCB6810787916934079AA58264 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP8 PUSH2 0xFFFF AND PUSH3 0x487 PUSH32 0xFF057B3B4D4500DDA208CDE5D654DB7AA2EC63AC10AB9F9956A1F56973842782 PUSH0 SHL PUSH3 0x6A1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD DUP2 SWAP1 SSTORE POP PUSH0 PUSH3 0x4A3 DUP10 PUSH2 0xFFFF AND PUSH3 0x6AA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x4BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x117E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x4FE PUSH32 0x64FB4ECF63A4059A0BB1412609335673D4954BFF8E9740D216D9469D190CBB3F PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x50E SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP DUP5 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x526 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x151E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH3 0x568 PUSH32 0xD668863F064048EE8C87390227CA6556D110ECF41306C7B64AAB5C1C530B2D84 PUSH0 SHL PUSH3 0x830 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD SWAP1 DUP2 PUSH3 0x578 SWAP2 SWAP1 PUSH3 0x1414 JUMP JUMPDEST POP PUSH3 0x58B DUP13 DUP10 PUSH3 0x59D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x177E JUMP JUMPDEST PUSH3 0x5AE DUP3 PUSH3 0x839 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0x683 JUMPI PUSH3 0x67C DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x649 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x66F SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST DUP3 PUSH3 0x9DF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x694 JUMP JUMPDEST PUSH3 0x693 PUSH3 0xA6B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP3 PUSH2 0xFFFF AND SUB PUSH3 0x6F6 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH3 0x82B JUMP JUMPDEST PUSH0 DUP3 SWAP1 POP PUSH0 JUMPDEST PUSH0 DUP3 PUSH2 0xFFFF AND EQ PUSH3 0x72F JUMPI DUP1 DUP1 PUSH3 0x715 SWAP1 PUSH3 0x15E4 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA DUP3 PUSH3 0x727 SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP2 POP PUSH3 0x6FC JUMP JUMPDEST PUSH0 DUP2 PUSH2 0xFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x751 JUMPI PUSH3 0x750 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x784 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST PUSH0 DUP6 PUSH2 0xFFFF AND EQ PUSH3 0x824 JUMPI PUSH1 0x1 DUP3 PUSH3 0x7A3 SWAP2 SWAP1 PUSH3 0x1676 JUMP JUMPDEST SWAP2 POP PUSH1 0xA DUP6 PUSH3 0x7B4 SWAP2 SWAP1 PUSH3 0x16B2 JUMP JUMPDEST PUSH1 0x30 PUSH3 0x7C2 SWAP2 SWAP1 PUSH3 0x16E9 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH3 0x7DF JUMPI PUSH3 0x7DE PUSH3 0x1725 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP6 PUSH3 0x81C SWAP2 SWAP1 PUSH3 0x163F JUMP JUMPDEST SWAP5 POP PUSH3 0x788 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x897 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x64CED0EC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x88E SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x8CB PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH0 SHL PUSH3 0x698 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x955 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x97B SWAP2 SWAP1 PUSH3 0x1587 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH3 0x9DB JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9D2 SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH3 0xA0A SWAP2 SWAP1 PUSH3 0xE98 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH3 0xA44 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xA49 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0xA61 DUP6 DUP4 DUP4 PUSH3 0xAA8 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH3 0xAA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0xAC7 JUMPI PUSH3 0xAC1 DUP3 PUSH3 0xB44 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xB3C JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH3 0xAEE JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH3 0xB33 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB2A SWAP2 SWAP1 PUSH3 0x1763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH3 0xB3D JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH3 0xB57 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xBC5 DUP3 PUSH3 0xB9A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xBD7 DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP2 EQ PUSH3 0xBE2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xBF5 DUP2 PUSH3 0xBCC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xC13 DUP2 PUSH3 0xBFB JUMP JUMPDEST DUP2 EQ PUSH3 0xC1E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0xC31 DUP2 PUSH3 0xC08 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xC87 DUP3 PUSH3 0xC3F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0xCA9 JUMPI PUSH3 0xCA8 PUSH3 0xC4F JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xCBD PUSH3 0xB89 JUMP JUMPDEST SWAP1 POP PUSH3 0xCCB DUP3 DUP3 PUSH3 0xC7C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xCED JUMPI PUSH3 0xCEC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xCF8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xD24 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0xD07 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH3 0xD45 PUSH3 0xD3F DUP5 PUSH3 0xCD0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xD64 JUMPI PUSH3 0xD63 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xD71 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xD90 JUMPI PUSH3 0xD8F PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xDA2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xD2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0xDC7 JUMPI PUSH3 0xDC6 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0xDD6 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0xDE9 DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0xDFC DUP9 DUP3 DUP10 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0xE0F DUP9 DUP3 DUP10 ADD PUSH3 0xC21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xE33 JUMPI PUSH3 0xE32 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xE41 DUP9 DUP3 DUP10 ADD PUSH3 0xD79 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xE6E DUP3 PUSH3 0xE4E JUMP JUMPDEST PUSH3 0xE7A DUP2 DUP6 PUSH3 0xE58 JUMP JUMPDEST SWAP4 POP PUSH3 0xE8C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0xEA5 DUP3 DUP5 PUSH3 0xE62 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xECD JUMPI PUSH3 0xECC PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0xED8 DUP3 PUSH3 0xC3F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0xEFB PUSH3 0xEF5 DUP5 PUSH3 0xEB0 JUMP JUMPDEST PUSH3 0xCB2 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0xF1A JUMPI PUSH3 0xF19 PUSH3 0xC3B JUMP JUMPDEST JUMPDEST PUSH3 0xF27 DUP5 DUP3 DUP6 PUSH3 0xD05 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xF46 JUMPI PUSH3 0xF45 PUSH3 0xC37 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0xF58 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0xEE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xF79 JUMPI PUSH3 0xF78 PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0xF99 JUMPI PUSH3 0xF98 PUSH3 0xB96 JUMP JUMPDEST JUMPDEST PUSH3 0xFA7 DUP5 DUP3 DUP6 ADD PUSH3 0xF2F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A204661696C656420746F20676574 PUSH0 DUP3 ADD MSTORE PUSH32 0x20746F6B656E2073796D626F6C73000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x101C PUSH1 0x2E DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x1029 DUP3 PUSH3 0xFC0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x104D DUP2 PUSH3 0x100E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C4250616972426561636F6E50726F78793A20496E76616C696420746F6B656E PUSH0 DUP3 ADD MSTORE PUSH32 0x2073796D626F6C73000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x10B0 PUSH1 0x28 DUP4 PUSH3 0xFB0 JUMP JUMPDEST SWAP2 POP PUSH3 0x10BD DUP3 PUSH3 0x1054 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH3 0x10E1 DUP2 PUSH3 0x10A2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C42545F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x112E DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH3 0x113A DUP2 DUP6 PUSH3 0x1118 JUMP JUMPDEST SWAP4 POP PUSH3 0x114C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0xD05 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2F00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x118A DUP3 PUSH3 0x10E8 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SWAP2 POP PUSH3 0x119C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11A9 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11BB DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x11C8 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x11DA DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x122C JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1242 JUMPI PUSH3 0x1241 PUSH3 0x11E7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH3 0x12A6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x1269 JUMP JUMPDEST PUSH3 0x12B2 DUP7 DUP4 PUSH3 0x1269 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x12FC PUSH3 0x12F6 PUSH3 0x12F0 DUP5 PUSH3 0x12CA JUMP JUMPDEST PUSH3 0x12D3 JUMP JUMPDEST PUSH3 0x12CA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1317 DUP4 PUSH3 0x12DC JUMP JUMPDEST PUSH3 0x132F PUSH3 0x1326 DUP3 PUSH3 0x1303 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x1275 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x1345 PUSH3 0x1337 JUMP JUMPDEST PUSH3 0x1352 DUP2 DUP5 DUP5 PUSH3 0x130C JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1379 JUMPI PUSH3 0x136D PUSH0 DUP3 PUSH3 0x133B JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1358 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x13C8 JUMPI PUSH3 0x1392 DUP2 PUSH3 0x1248 JUMP JUMPDEST PUSH3 0x139D DUP5 PUSH3 0x125A JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x13AD JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x13C5 PUSH3 0x13BC DUP6 PUSH3 0x125A JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x1357 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x13EA PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x13CD JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1404 DUP4 DUP4 PUSH3 0x13D9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x141F DUP3 PUSH3 0x110E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x143B JUMPI PUSH3 0x143A PUSH3 0xC4F JUMP JUMPDEST JUMPDEST PUSH3 0x1447 DUP3 SLOAD PUSH3 0x1214 JUMP JUMPDEST PUSH3 0x1454 DUP3 DUP3 DUP6 PUSH3 0x137D JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x148A JUMPI PUSH0 DUP5 ISZERO PUSH3 0x1475 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x1481 DUP6 DUP3 PUSH3 0x13F7 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x14F0 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x149A DUP7 PUSH3 0x1248 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x14C3 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x149C JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x14E3 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x14DF PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x13D9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4C697175696469747920426F6F6B20546F6B656E200000000000000000000000 DUP2 MSTORE POP JUMP JUMPDEST PUSH0 PUSH3 0x152A DUP3 PUSH3 0x14F8 JUMP JUMPDEST PUSH1 0x15 DUP3 ADD SWAP2 POP PUSH3 0x153C DUP3 DUP7 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1549 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x155B DUP3 DUP6 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP PUSH3 0x1568 DUP3 PUSH3 0x1158 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH3 0x157A DUP3 DUP5 PUSH3 0x1122 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x159F JUMPI PUSH3 0x159E PUSH3 0xB92 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x15AE DUP5 DUP3 DUP6 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x15F0 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH2 0xFFFF DUP3 SUB PUSH3 0x1607 JUMPI PUSH3 0x1606 PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x164B DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1658 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x166B JUMPI PUSH3 0x166A PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x1682 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x168F DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x16AC JUMPI PUSH3 0x16AB PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16BE DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x16CB DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH3 0x16DE JUMPI PUSH3 0x16DD PUSH3 0x1612 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x16F5 DUP3 PUSH3 0xBFB JUMP JUMPDEST SWAP2 POP PUSH3 0x1702 DUP4 PUSH3 0xBFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH2 0xFFFF DUP2 GT ISZERO PUSH3 0x171F JUMPI PUSH3 0x171E PUSH3 0x15B7 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0x175D DUP2 PUSH3 0xBB9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x1778 PUSH0 DUP4 ADD DUP5 PUSH3 0x1752 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x223 PUSH3 0x1797 PUSH0 CODECOPY PUSH0 PUSH2 0x118 ADD MSTORE PUSH2 0x223 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0A0EA39 EQ PUSH2 0x32 JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH2 0x30 PUSH2 0x5C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x46 PUSH2 0x6E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53 SWAP2 SWAP1 PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x67 PUSH2 0x7C JUMP JUMPDEST PUSH2 0xF6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x77 PUSH2 0x115 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85 PUSH2 0x115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0x111 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x165 DUP3 PUSH2 0x13C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x175 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x18E PUSH0 DUP4 ADD DUP5 PUSH2 0x16C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A1 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP2 EQ PUSH2 0x1AB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC DUP2 PUSH2 0x198 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH2 0x1D6 PUSH2 0x194 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1E4 DUP5 DUP3 DUP6 ADD PUSH2 0x1AE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xF 0xAC 0xD1 PUSH26 0xFF68AFE8C4F5F51E9F66C8A009AF1F057180AF91B116A45A1361 0xC6 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "611:1719:22:-:0;;;757:1470;;;;;;;;;;;;;;;;;;;;;:::i;:::-;884:14;1773:147:10;;;;;;;;;;;;1838:49;1874:6;1882:4;1838:35;;;:49;;:::i;:::-;1907:6;1897:16;;;;;;;;;;1773:147;;915:19:22::1;936:24:::0;964:7:::1;:18;;983:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;964:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;914:105;;;;1029:26;1069:11;1058:33;;;;;;;;;;;;:::i;:::-;1029:62;;1103:19;1124:24:::0;1152:7:::1;:18;;1171:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1152:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1102:105;;;;1217:26;1257:11;1246:33;;;;;;;;;;;;:::i;:::-;1217:62;;1298:14;:32;;;;;1316:14;1298:32;1290:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;1457:9;;;;;;;;;;;::::0;1447:20:::1;;;;;;1429:12;1413:30;;;;;;:54;;:124;;;;;1527:9;;;;;;;;;;;::::0;1517:20:::1;;;;;;1499:12;1483:30;;;;;;:54;;1413:124;1392:211;;;;;;;;;;;;:::i;:::-;;;;;;;;;1664:7;1614:41;142:66:23;1641:13:22;;1614:26;;;:41;;:::i;:::-;:47;;;:57;;;;;;;;;;;;;;;;;;1731:7;1681:41;341:66:23;1708:13:22;;1681:26;;;:41;;:::i;:::-;:47;;;:57;;;;;;;;;;;;;;;;;;1799:8;1748:59;;:42;541:66:23;1775:14:22;;1748:26;;;:42;;:::i;:::-;:48;;:59;;;;1817:24;1844:25;:8;:23;;;;;:25;;:::i;:::-;1817:52;;1954:12;1973;1992:10;1932:71;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1879:44;745:66:23;1905:17:22;;1879:25;;;:44;;:::i;:::-;:50;;:124;;;;;;:::i;:::-;;2103:12;2122;2140:10;2064:87;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2013:42;955:66:23;2039:15:22;;2013:25;;;:42;;:::i;:::-;:48;;:138;;;;;;:::i;:::-;;2162:58;2198:14;2214:5;2162:35;;;:58;;:::i;:::-;904:1323;;;;;;;757:1470:::0;;;;;611:1719;;5897:333:8;5986:21;5997:9;5986:10;;;:21;;:::i;:::-;6037:9;6022:25;;;;;;;;;;;;6076:1;6062:4;:11;:15;6058:166;;;6093:71;6130:9;6122:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6159:4;6093:28;;;:71;;:::i;:::-;;6058:166;;;6195:18;:16;;;:18;;:::i;:::-;6058:166;5897:333;;:::o;1685:190:17:-;1746:21;1855:4;1845:14;;1685:190;;;:::o;2549:::-;2610:21;2719:4;2709:14;;2549:190;;;:::o;89:517:34:-;150:13;188:1;179:5;:10;;;175:51;;205:10;;;;;;;;;;;;;;;;;;;;;175:51;235:11;249:5;235:19;;264:13;287:75;302:1;294:4;:9;;;287:75;;319:8;;;;;:::i;:::-;;;;349:2;341:10;;;;;:::i;:::-;;;287:75;;;371:19;403:6;393:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;371:39;;420:149;436:1;427:5;:10;;;420:149;;463:1;453:11;;;;;:::i;:::-;;;528:2;520:5;:10;;;;:::i;:::-;508:2;:23;;;;:::i;:::-;495:38;;478:6;485;478:14;;;;;;;;;;:::i;:::-;;;;;:55;;;;;;;;;;;556:2;547:11;;;;;:::i;:::-;;;420:149;;;592:6;578:21;;;;;89:517;;;;:::o;2836:188:17:-;2896:20;3004:4;2994:14;;2836:188;;;:::o;4935:437:8:-;5021:1;4996:9;:21;;;:26;4992:95;;5066:9;5045:31;;;;;;;;;;;:::i;:::-;;;;;;;;4992:95;5145:9;5097:39;4601:66;5124:11;;5097:26;;;:39;;:::i;:::-;:45;;;:57;;;;;;;;;;;;;;;;;;5165:28;5204:9;5196:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5165:66;;5281:1;5245:20;:32;;;:37;5241:125;;5334:20;5305:50;;;;;;;;;;;:::i;:::-;;;;;;;;5241:125;4982:390;4935:437;:::o;4106:253:14:-;4189:12;4214;4228:23;4255:6;:19;;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;;;:55;;:::i;:::-;4290:62;;;;4106:253;;;;:::o;6419:122:8:-;6481:1;6469:9;:13;6465:70;;;6505:19;;;;;;;;;;;;;;6465:70;6419:122::o;4625:582:14:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;;;:19;;:::i;:::-;4793:408;;;5066:1;5045:10;:17;:22;:49;;;;;5093:1;5071:6;:18;;;:23;5045:49;5041:119;;;5138:6;5121:24;;;;;;;;;;;:::i;:::-;;;;;;;;5041:119;5180:10;5173:17;;;;4793:408;4625:582;;;;;;:::o;5743:516::-;5894:1;5874:10;:17;:21;5870:383;;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;7:75:40;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:89::-;881:7;921:6;914:5;910:18;899:29;;845:89;;;:::o;940:120::-;1012:23;1029:5;1012:23;:::i;:::-;1005:5;1002:34;992:62;;1050:1;1047;1040:12;992:62;940:120;:::o;1066:141::-;1122:5;1153:6;1147:13;1138:22;;1169:32;1195:5;1169:32;:::i;:::-;1066:141;;;;:::o;1213:117::-;1322:1;1319;1312:12;1336:117;1445:1;1442;1435:12;1459:102;1500:6;1551:2;1547:7;1542:2;1535:5;1531:14;1527:28;1517:38;;1459:102;;;:::o;1567:180::-;1615:77;1612:1;1605:88;1712:4;1709:1;1702:15;1736:4;1733:1;1726:15;1753:281;1836:27;1858:4;1836:27;:::i;:::-;1828:6;1824:40;1966:6;1954:10;1951:22;1930:18;1918:10;1915:34;1912:62;1909:88;;;1977:18;;:::i;:::-;1909:88;2017:10;2013:2;2006:22;1796:238;1753:281;;:::o;2040:129::-;2074:6;2101:20;;:::i;:::-;2091:30;;2130:33;2158:4;2150:6;2130:33;:::i;:::-;2040:129;;;:::o;2175:307::-;2236:4;2326:18;2318:6;2315:30;2312:56;;;2348:18;;:::i;:::-;2312:56;2386:29;2408:6;2386:29;:::i;:::-;2378:37;;2470:4;2464;2460:15;2452:23;;2175:307;;;:::o;2488:246::-;2569:1;2579:113;2593:6;2590:1;2587:13;2579:113;;;2678:1;2673:3;2669:11;2663:18;2659:1;2654:3;2650:11;2643:39;2615:2;2612:1;2608:10;2603:15;;2579:113;;;2726:1;2717:6;2712:3;2708:16;2701:27;2550:184;2488:246;;;:::o;2740:432::-;2828:5;2853:65;2869:48;2910:6;2869:48;:::i;:::-;2853:65;:::i;:::-;2844:74;;2941:6;2934:5;2927:21;2979:4;2972:5;2968:16;3017:3;3008:6;3003:3;2999:16;2996:25;2993:112;;;3024:79;;:::i;:::-;2993:112;3114:52;3159:6;3154:3;3149;3114:52;:::i;:::-;2834:338;2740:432;;;;;:::o;3191:353::-;3257:5;3306:3;3299:4;3291:6;3287:17;3283:27;3273:122;;3314:79;;:::i;:::-;3273:122;3424:6;3418:13;3449:89;3534:3;3526:6;3519:4;3511:6;3507:17;3449:89;:::i;:::-;3440:98;;3263:281;3191:353;;;;:::o;3550:1146::-;3664:6;3672;3680;3688;3696;3745:3;3733:9;3724:7;3720:23;3716:33;3713:120;;;3752:79;;:::i;:::-;3713:120;3872:1;3897:64;3953:7;3944:6;3933:9;3929:22;3897:64;:::i;:::-;3887:74;;3843:128;4010:2;4036:64;4092:7;4083:6;4072:9;4068:22;4036:64;:::i;:::-;4026:74;;3981:129;4149:2;4175:64;4231:7;4222:6;4211:9;4207:22;4175:64;:::i;:::-;4165:74;;4120:129;4288:2;4314:63;4369:7;4360:6;4349:9;4345:22;4314:63;:::i;:::-;4304:73;;4259:128;4447:3;4436:9;4432:19;4426:26;4479:18;4471:6;4468:30;4465:117;;;4501:79;;:::i;:::-;4465:117;4606:73;4671:7;4662:6;4651:9;4647:22;4606:73;:::i;:::-;4596:83;;4397:292;3550:1146;;;;;;;;:::o;4702:98::-;4753:6;4787:5;4781:12;4771:22;;4702:98;;;:::o;4806:147::-;4907:11;4944:3;4929:18;;4806:147;;;;:::o;4959:386::-;5063:3;5091:38;5123:5;5091:38;:::i;:::-;5145:88;5226:6;5221:3;5145:88;:::i;:::-;5138:95;;5242:65;5300:6;5295:3;5288:4;5281:5;5277:16;5242:65;:::i;:::-;5332:6;5327:3;5323:16;5316:23;;5067:278;4959:386;;;;:::o;5351:271::-;5481:3;5503:93;5592:3;5583:6;5503:93;:::i;:::-;5496:100;;5613:3;5606:10;;5351:271;;;;:::o;5628:308::-;5690:4;5780:18;5772:6;5769:30;5766:56;;;5802:18;;:::i;:::-;5766:56;5840:29;5862:6;5840:29;:::i;:::-;5832:37;;5924:4;5918;5914:15;5906:23;;5628:308;;;:::o;5942:434::-;6031:5;6056:66;6072:49;6114:6;6072:49;:::i;:::-;6056:66;:::i;:::-;6047:75;;6145:6;6138:5;6131:21;6183:4;6176:5;6172:16;6221:3;6212:6;6207:3;6203:16;6200:25;6197:112;;;6228:79;;:::i;:::-;6197:112;6318:52;6363:6;6358:3;6353;6318:52;:::i;:::-;6037:339;5942:434;;;;;:::o;6396:355::-;6463:5;6512:3;6505:4;6497:6;6493:17;6489:27;6479:122;;6520:79;;:::i;:::-;6479:122;6630:6;6624:13;6655:90;6741:3;6733:6;6726:4;6718:6;6714:17;6655:90;:::i;:::-;6646:99;;6469:282;6396:355;;;;:::o;6757:524::-;6837:6;6886:2;6874:9;6865:7;6861:23;6857:32;6854:119;;;6892:79;;:::i;:::-;6854:119;7033:1;7022:9;7018:17;7012:24;7063:18;7055:6;7052:30;7049:117;;;7085:79;;:::i;:::-;7049:117;7190:74;7256:7;7247:6;7236:9;7232:22;7190:74;:::i;:::-;7180:84;;6983:291;6757:524;;;;:::o;7287:169::-;7371:11;7405:6;7400:3;7393:19;7445:4;7440:3;7436:14;7421:29;;7287:169;;;;:::o;7462:233::-;7602:34;7598:1;7590:6;7586:14;7579:58;7671:16;7666:2;7658:6;7654:15;7647:41;7462:233;:::o;7701:366::-;7843:3;7864:67;7928:2;7923:3;7864:67;:::i;:::-;7857:74;;7940:93;8029:3;7940:93;:::i;:::-;8058:2;8053:3;8049:12;8042:19;;7701:366;;;:::o;8073:419::-;8239:4;8277:2;8266:9;8262:18;8254:26;;8326:9;8320:4;8316:20;8312:1;8301:9;8297:17;8290:47;8354:131;8480:4;8354:131;:::i;:::-;8346:139;;8073:419;;;:::o;8498:227::-;8638:34;8634:1;8626:6;8622:14;8615:58;8707:10;8702:2;8694:6;8690:15;8683:35;8498:227;:::o;8731:366::-;8873:3;8894:67;8958:2;8953:3;8894:67;:::i;:::-;8887:74;;8970:93;9059:3;8970:93;:::i;:::-;9088:2;9083:3;9079:12;9072:19;;8731:366;;;:::o;9103:419::-;9269:4;9307:2;9296:9;9292:18;9284:26;;9356:9;9350:4;9346:20;9342:1;9331:9;9327:17;9320:47;9384:131;9510:4;9384:131;:::i;:::-;9376:139;;9103:419;;;:::o;9528:181::-;9696:6;9691:3;9684:19;9528:181;:::o;9715:99::-;9767:6;9801:5;9795:12;9785:22;;9715:99;;;:::o;9820:148::-;9922:11;9959:3;9944:18;;9820:148;;;;:::o;9974:390::-;10080:3;10108:39;10141:5;10108:39;:::i;:::-;10163:89;10245:6;10240:3;10163:89;:::i;:::-;10156:96;;10261:65;10319:6;10314:3;10307:4;10300:5;10296:16;10261:65;:::i;:::-;10351:6;10346:3;10342:16;10335:23;;10084:280;9974:390;;;;:::o;10370:178::-;10538:3;10533;10526:16;10370:178;:::o;10554:1387::-;11052:3;11067:137;11200:3;11067:137;:::i;:::-;11229:1;11224:3;11220:11;11213:18;;11248:95;11339:3;11330:6;11248:95;:::i;:::-;11241:102;;11353:137;11486:3;11353:137;:::i;:::-;11515:1;11510:3;11506:11;11499:18;;11534:95;11625:3;11616:6;11534:95;:::i;:::-;11527:102;;11639:137;11772:3;11639:137;:::i;:::-;11801:1;11796:3;11792:11;11785:18;;11820:95;11911:3;11902:6;11820:95;:::i;:::-;11813:102;;11932:3;11925:10;;10554:1387;;;;;;:::o;11947:180::-;11995:77;11992:1;11985:88;12092:4;12089:1;12082:15;12116:4;12113:1;12106:15;12133:320;12177:6;12214:1;12208:4;12204:12;12194:22;;12261:1;12255:4;12251:12;12282:18;12272:81;;12338:4;12330:6;12326:17;12316:27;;12272:81;12400:2;12392:6;12389:14;12369:18;12366:38;12363:84;;12419:18;;:::i;:::-;12363:84;12184:269;12133:320;;;:::o;12459:141::-;12508:4;12531:3;12523:11;;12554:3;12551:1;12544:14;12588:4;12585:1;12575:18;12567:26;;12459:141;;;:::o;12606:93::-;12643:6;12690:2;12685;12678:5;12674:14;12670:23;12660:33;;12606:93;;;:::o;12705:107::-;12749:8;12799:5;12793:4;12789:16;12768:37;;12705:107;;;;:::o;12818:393::-;12887:6;12937:1;12925:10;12921:18;12960:97;12990:66;12979:9;12960:97;:::i;:::-;13078:39;13108:8;13097:9;13078:39;:::i;:::-;13066:51;;13150:4;13146:9;13139:5;13135:21;13126:30;;13199:4;13189:8;13185:19;13178:5;13175:30;13165:40;;12894:317;;12818:393;;;;;:::o;13217:77::-;13254:7;13283:5;13272:16;;13217:77;;;:::o;13300:60::-;13328:3;13349:5;13342:12;;13300:60;;;:::o;13366:142::-;13416:9;13449:53;13467:34;13476:24;13494:5;13476:24;:::i;:::-;13467:34;:::i;:::-;13449:53;:::i;:::-;13436:66;;13366:142;;;:::o;13514:75::-;13557:3;13578:5;13571:12;;13514:75;;;:::o;13595:269::-;13705:39;13736:7;13705:39;:::i;:::-;13766:91;13815:41;13839:16;13815:41;:::i;:::-;13807:6;13800:4;13794:11;13766:91;:::i;:::-;13760:4;13753:105;13671:193;13595:269;;;:::o;13870:73::-;13915:3;13870:73;:::o;13949:189::-;14026:32;;:::i;:::-;14067:65;14125:6;14117;14111:4;14067:65;:::i;:::-;14002:136;13949:189;;:::o;14144:186::-;14204:120;14221:3;14214:5;14211:14;14204:120;;;14275:39;14312:1;14305:5;14275:39;:::i;:::-;14248:1;14241:5;14237:13;14228:22;;14204:120;;;14144:186;;:::o;14336:543::-;14437:2;14432:3;14429:11;14426:446;;;14471:38;14503:5;14471:38;:::i;:::-;14555:29;14573:10;14555:29;:::i;:::-;14545:8;14541:44;14738:2;14726:10;14723:18;14720:49;;;14759:8;14744:23;;14720:49;14782:80;14838:22;14856:3;14838:22;:::i;:::-;14828:8;14824:37;14811:11;14782:80;:::i;:::-;14441:431;;14426:446;14336:543;;;:::o;14885:117::-;14939:8;14989:5;14983:4;14979:16;14958:37;;14885:117;;;;:::o;15008:169::-;15052:6;15085:51;15133:1;15129:6;15121:5;15118:1;15114:13;15085:51;:::i;:::-;15081:56;15166:4;15160;15156:15;15146:25;;15059:118;15008:169;;;;:::o;15182:295::-;15258:4;15404:29;15429:3;15423:4;15404:29;:::i;:::-;15396:37;;15466:3;15463:1;15459:11;15453:4;15450:21;15442:29;;15182:295;;;;:::o;15482:1395::-;15599:37;15632:3;15599:37;:::i;:::-;15701:18;15693:6;15690:30;15687:56;;;15723:18;;:::i;:::-;15687:56;15767:38;15799:4;15793:11;15767:38;:::i;:::-;15852:67;15912:6;15904;15898:4;15852:67;:::i;:::-;15946:1;15970:4;15957:17;;16002:2;15994:6;15991:14;16019:1;16014:618;;;;16676:1;16693:6;16690:77;;;16742:9;16737:3;16733:19;16727:26;16718:35;;16690:77;16793:67;16853:6;16846:5;16793:67;:::i;:::-;16787:4;16780:81;16649:222;15984:887;;16014:618;16066:4;16062:9;16054:6;16050:22;16100:37;16132:4;16100:37;:::i;:::-;16159:1;16173:208;16187:7;16184:1;16181:14;16173:208;;;16266:9;16261:3;16257:19;16251:26;16243:6;16236:42;16317:1;16309:6;16305:14;16295:24;;16364:2;16353:9;16349:18;16336:31;;16210:4;16207:1;16203:12;16198:17;;16173:208;;;16409:6;16400:7;16397:19;16394:179;;;16467:9;16462:3;16458:19;16452:26;16510:48;16552:4;16544:6;16540:17;16529:9;16510:48;:::i;:::-;16502:6;16495:64;16417:156;16394:179;16619:1;16615;16607:6;16603:14;16599:22;16593:4;16586:36;16021:611;;;15984:887;;15574:1303;;;15482:1395;;:::o;16883:199::-;17052:23;17047:3;17040:36;16883:199;:::o;17088:1390::-;17587:3;17602:138;17736:3;17602:138;:::i;:::-;17765:2;17760:3;17756:12;17749:19;;17785:95;17876:3;17867:6;17785:95;:::i;:::-;17778:102;;17890:137;18023:3;17890:137;:::i;:::-;18052:1;18047:3;18043:11;18036:18;;18071:95;18162:3;18153:6;18071:95;:::i;:::-;18064:102;;18176:137;18309:3;18176:137;:::i;:::-;18338:1;18333:3;18329:11;18322:18;;18357:95;18448:3;18439:6;18357:95;:::i;:::-;18350:102;;18469:3;18462:10;;17088:1390;;;;;;:::o;18484:351::-;18554:6;18603:2;18591:9;18582:7;18578:23;18574:32;18571:119;;;18609:79;;:::i;:::-;18571:119;18729:1;18754:64;18810:7;18801:6;18790:9;18786:22;18754:64;:::i;:::-;18744:74;;18700:128;18484:351;;;;:::o;18841:180::-;18889:77;18886:1;18879:88;18986:4;18983:1;18976:15;19010:4;19007:1;19000:15;19027:171;19065:3;19088:23;19105:5;19088:23;:::i;:::-;19079:32;;19133:6;19126:5;19123:17;19120:43;;19143:18;;:::i;:::-;19120:43;19190:1;19183:5;19179:13;19172:20;;19027:171;;;:::o;19204:180::-;19252:77;19249:1;19242:88;19349:4;19346:1;19339:15;19373:4;19370:1;19363:15;19390:182;19429:1;19446:19;19463:1;19446:19;:::i;:::-;19441:24;;19479:19;19496:1;19479:19;:::i;:::-;19474:24;;19517:1;19507:35;;19522:18;;:::i;:::-;19507:35;19564:1;19561;19557:9;19552:14;;19390:182;;;;:::o;19578:196::-;19617:4;19637:19;19654:1;19637:19;:::i;:::-;19632:24;;19670:19;19687:1;19670:19;:::i;:::-;19665:24;;19713:1;19710;19706:9;19698:17;;19737:6;19731:4;19728:16;19725:42;;;19747:18;;:::i;:::-;19725:42;19578:196;;;;:::o;19780:173::-;19811:1;19828:19;19845:1;19828:19;:::i;:::-;19823:24;;19861:19;19878:1;19861:19;:::i;:::-;19856:24;;19899:1;19889:35;;19904:18;;:::i;:::-;19889:35;19945:1;19942;19938:9;19933:14;;19780:173;;;;:::o;19959:193::-;19998:3;20017:19;20034:1;20017:19;:::i;:::-;20012:24;;20050:19;20067:1;20050:19;:::i;:::-;20045:24;;20092:1;20089;20085:9;20078:16;;20115:6;20110:3;20107:15;20104:41;;;20125:18;;:::i;:::-;20104:41;19959:193;;;;:::o;20158:180::-;20206:77;20203:1;20196:88;20303:4;20300:1;20293:15;20327:4;20324:1;20317:15;20344:118;20431:24;20449:5;20431:24;:::i;:::-;20426:3;20419:37;20344:118;;:::o;20468:222::-;20561:4;20599:2;20588:9;20584:18;20576:26;;20612:71;20680:1;20669:9;20665:17;20656:6;20612:71;:::i;:::-;20468:222;;;;:::o;611:1719:22:-;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_1603": { + "entryPoint": null, + "id": 1603, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_6651": { + "entryPoint": null, + "id": 6651, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_delegate_1579": { + "entryPoint": 246, + "id": 1579, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_fallback_1595": { + "entryPoint": 92, + "id": 1595, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getBeacon_1661": { + "entryPoint": 277, + "id": 1661, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_implementation_1652": { + "entryPoint": 124, + "id": 1652, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getLBPairBeacon_6836": { + "entryPoint": 110, + "id": 6836, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 430, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 450, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 364, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 379, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 347, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 316, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 404, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 408, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1551:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "52:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "77:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "84:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "73:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "73:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "62:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "44:7:40", + "type": "" + } + ], + "src": "7:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "184:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "194:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "223:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "205:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "205:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "194:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "166:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "176:7:40", + "type": "" + } + ], + "src": "139:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "306:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "323:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "346:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "328:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "328:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "316:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "316:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "316:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "294:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "301:3:40", + "type": "" + } + ], + "src": "241:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "463:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "473:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "485:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "496:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "481:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "481:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "473:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "553:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "566:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "577:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "562:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "562:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "509:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "509:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "509:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "435:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "447:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "458:4:40", + "type": "" + } + ], + "src": "365:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "633:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "643:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "659:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "653:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "653:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "643:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "626:6:40", + "type": "" + } + ], + "src": "593:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "763:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "780:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "783:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "773:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "773:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "773:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "674:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "886:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "903:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "906:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "896:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "896:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "896:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "797:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "963:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1020:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1029:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1032:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1022:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1022:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1022:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "986:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1011:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "993:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "993:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "983:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "983:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "976:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "976:43:40" + }, + "nodeType": "YulIf", + "src": "973:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "956:5:40", + "type": "" + } + ], + "src": "920:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1111:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1121:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1136:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1130:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "1130:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1121:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1179:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "1152:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "1152:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1152:33:40" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1089:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1097:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1105:5:40", + "type": "" + } + ], + "src": "1048:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1274:274:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1320:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1322:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "1322:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1322:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1295:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1304:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1291:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1291:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1316:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1287:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1287:32:40" + }, + "nodeType": "YulIf", + "src": "1284:119:40" + }, + { + "nodeType": "YulBlock", + "src": "1413:128:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1428:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1442:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1432:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1457:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1503:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1514:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1499:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1499:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1523:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1467:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "1467:64:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1457:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1244:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1255:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1267:6:40", + "type": "" + } + ], + "src": "1197:351:40" + } + ] + }, + "contents": "{\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "1617": [ + { + "length": 32, + "start": 280 + } + ] + }, + "linkReferences": {}, + "object": "608060405260043610610021575f3560e01c8063a0a0ea391461003257610028565b3661002857005b61003061005c565b005b34801561003d575f80fd5b5061004661006e565b604051610053919061017b565b60405180910390f35b61006c61006761007c565b6100f6565b565b5f610077610115565b905090565b5f610085610115565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f191906101c2565b905090565b365f80375f80365f845af43d5f803e805f8114610111573d5ff35b3d5ffd5b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101658261013c565b9050919050565b6101758161015b565b82525050565b5f60208201905061018e5f83018461016c565b92915050565b5f80fd5b6101a18161015b565b81146101ab575f80fd5b50565b5f815190506101bc81610198565b92915050565b5f602082840312156101d7576101d6610194565b5b5f6101e4848285016101ae565b9150509291505056fea2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA0A0EA39 EQ PUSH2 0x32 JUMPI PUSH2 0x28 JUMP JUMPDEST CALLDATASIZE PUSH2 0x28 JUMPI STOP JUMPDEST PUSH2 0x30 PUSH2 0x5C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x46 PUSH2 0x6E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53 SWAP2 SWAP1 PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x67 PUSH2 0x7C JUMP JUMPDEST PUSH2 0xF6 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x77 PUSH2 0x115 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x85 PUSH2 0x115 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCD JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x1C2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH2 0x111 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x165 DUP3 PUSH2 0x13C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x175 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x18E PUSH0 DUP4 ADD DUP5 PUSH2 0x16C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x1A1 DUP2 PUSH2 0x15B JUMP JUMPDEST DUP2 EQ PUSH2 0x1AB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC DUP2 PUSH2 0x198 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH2 0x1D6 PUSH2 0x194 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x1E4 DUP5 DUP3 DUP6 ADD PUSH2 0x1AE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xF 0xAC 0xD1 PUSH26 0xFF68AFE8C4F5F51E9F66C8A009AF1F057180AF91B116A45A1361 0xC6 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "611:1719:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;2649:11:9;:9;:11::i;:::-;611:1719:22;2233:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2323:83:9;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;2233:95:22:-;2283:7;2309:12;:10;:12::i;:::-;2302:19;;2233:95;:::o;2023:138:10:-;2090:7;2124:12;:10;:12::i;:::-;2116:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2109:45;;2023:138;:::o;949:895:9:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1687:1;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;2215:93:10;2268:7;2294;2287:14;;2215:93;:::o;7:126:40:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;920:122;993:24;1011:5;993:24;:::i;:::-;986:5;983:35;973:63;;1032:1;1029;1022:12;973:63;920:122;:::o;1048:143::-;1105:5;1136:6;1130:13;1121:22;;1152:33;1179:5;1152:33;:::i;:::-;1048:143;;;;:::o;1197:351::-;1267:6;1316:2;1304:9;1295:7;1291:23;1287:32;1284:119;;;1322:79;;:::i;:::-;1284:119;1442:1;1467:64;1523:7;1514:6;1503:9;1499:22;1467:64;:::i;:::-;1457:74;;1413:128;1197:351;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "109400", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "": "infinite", + "getLBPairBeacon()": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "A0" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 611, + "end": 2330, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 757, + "end": 2227, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSHSIZE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "CODESIZE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "SUB", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP1", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSHSIZE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP4", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "CODECOPY", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "ADD", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 757, + "end": 2227, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "DUP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "ADD", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH [tag]", + "source": 22, + "value": "1" + }, + { + "begin": 757, + "end": 2227, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "PUSH [tag]", + "source": 22, + "value": "2" + }, + { + "begin": 757, + "end": 2227, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "tag", + "source": 22, + "value": "1" + }, + { + "begin": 757, + "end": 2227, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 884, + "end": 898, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1773, + "end": 1920, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP1", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1773, + "end": 1920, + "name": "ADD", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 1773, + "end": 1920, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP1", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 1773, + "end": 1920, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "PUSH [tag]", + "source": 10, + "value": "6" + }, + { + "begin": 1874, + "end": 1880, + "name": "DUP3", + "source": 10 + }, + { + "begin": 1882, + "end": 1886, + "name": "DUP3", + "source": 10 + }, + { + "begin": 1838, + "end": 1873, + "name": "PUSH [tag]", + "source": 10, + "value": "7" + }, + { + "begin": 1838, + "end": 1873, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1838, + "end": 1873, + "name": "SHL", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 1838, + "end": 1887, + "name": "SHR", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 1838, + "end": 1887, + "name": "tag", + "source": 10, + "value": "6" + }, + { + "begin": 1838, + "end": 1887, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 1907, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1897, + "end": 1913, + "name": "AND", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "80" + }, + { + "begin": 1897, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1897, + "end": 1913, + "name": "AND", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "DUP2", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "POP", + "source": 10 + }, + { + "begin": 1897, + "end": 1913, + "name": "POP", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 1773, + "end": 1920, + "name": "POP", + "source": 10 + }, + { + "begin": 915, + "end": 934, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 936, + "end": 960, + "name": "DUP1", + "source": 22 + }, + { + "begin": 964, + "end": 971, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 964, + "end": 982, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 964, + "end": 982, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "24" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "95D89B4100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 983, + "end": 1018, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "9" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "10" + }, + { + "begin": 964, + "end": 1019, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "9" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "GAS", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "13" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "1F" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "3F" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "12" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "13" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "60" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "12" + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 964, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 914, + "end": 1019, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1029, + "end": 1055, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1069, + "end": 1080, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "14" + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "15" + }, + { + "begin": 1058, + "end": 1091, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "14" + }, + { + "begin": 1058, + "end": 1091, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1029, + "end": 1091, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1029, + "end": 1091, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1103, + "end": 1122, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1124, + "end": 1148, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1159, + "modifierDepth": 1, + "name": "DUP8", + "source": 22 + }, + { + "begin": 1152, + "end": 1170, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1152, + "end": 1170, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "24" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "95D89B4100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1171, + "end": 1206, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "16" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "10" + }, + { + "begin": 1152, + "end": 1207, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "16" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "GAS", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "STATICCALL", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "19" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "1F" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "3F" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATASIZE", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "RETURNDATACOPY", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "18" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "19" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "60" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "18" + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1152, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1102, + "end": 1207, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1217, + "end": 1243, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1257, + "end": 1268, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "20" + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "15" + }, + { + "begin": 1246, + "end": 1279, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "20" + }, + { + "begin": 1246, + "end": 1279, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1217, + "end": 1279, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1217, + "end": 1279, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1298, + "end": 1312, + "modifierDepth": 1, + "name": "DUP6", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "21" + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1316, + "end": 1330, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "21" + }, + { + "begin": 1298, + "end": 1330, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "22" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "4" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "23" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "24" + }, + { + "begin": 1290, + "end": 1382, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "23" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "REVERT", + "source": 22 + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "22" + }, + { + "begin": 1290, + "end": 1382, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1457, + "end": 1466, + "name": "POP", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1447, + "end": 1467, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1429, + "end": 1441, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1413, + "end": 1443, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1413, + "end": 1467, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 1413, + "end": 1467, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "25" + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1527, + "end": 1536, + "name": "POP", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1517, + "end": 1537, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1499, + "end": 1511, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1483, + "end": 1513, + "modifierDepth": 1, + "name": "KECCAK256", + "source": 22 + }, + { + "begin": 1483, + "end": 1537, + "modifierDepth": 1, + "name": "EQ", + "source": 22 + }, + { + "begin": 1483, + "end": 1537, + "modifierDepth": 1, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "25" + }, + { + "begin": 1413, + "end": 1537, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "26" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "4" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "27" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "28" + }, + { + "begin": 1392, + "end": 1603, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "27" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "DUP1", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "REVERT", + "source": 22 + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "26" + }, + { + "begin": 1392, + "end": 1603, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1664, + "end": 1671, + "modifierDepth": 1, + "name": "DUP10", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "29" + }, + { + "begin": 142, + "end": 208, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "3441AB29B24DAF7A3FD59500B0E08396EC08EC96F5CC2D0362924CDD45CFEC31" + }, + { + "begin": 1641, + "end": 1654, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1641, + "end": 1654, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1614, + "end": 1640, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "30" + }, + { + "begin": 1614, + "end": 1640, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1614, + "end": 1640, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "29" + }, + { + "begin": 1614, + "end": 1655, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1614, + "end": 1661, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1614, + "end": 1661, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1614, + "end": 1661, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "100" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "EXP", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SLOAD", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "SSTORE", + "source": 22 + }, + { + "begin": 1614, + "end": 1671, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1731, + "end": 1738, + "modifierDepth": 1, + "name": "DUP9", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "31" + }, + { + "begin": 341, + "end": 407, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "7E1935766B7C49E7482A018A5EE52CA183A2DDFCB6810787916934079AA58264" + }, + { + "begin": 1708, + "end": 1721, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1708, + "end": 1721, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1681, + "end": 1707, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "30" + }, + { + "begin": 1681, + "end": 1707, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1681, + "end": 1707, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "31" + }, + { + "begin": 1681, + "end": 1722, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1681, + "end": 1728, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1681, + "end": 1728, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1681, + "end": 1728, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "100" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "EXP", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SLOAD", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "NOT", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "MUL", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "OR", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "SSTORE", + "source": 22 + }, + { + "begin": 1681, + "end": 1738, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1799, + "end": 1807, + "modifierDepth": 1, + "name": "DUP8", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFF" + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "32" + }, + { + "begin": 541, + "end": 607, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "FF057B3B4D4500DDA208CDE5D654DB7AA2EC63AC10AB9F9956A1F56973842782" + }, + { + "begin": 1775, + "end": 1789, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1775, + "end": 1789, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1748, + "end": 1774, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "33" + }, + { + "begin": 1748, + "end": 1774, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1748, + "end": 1774, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "32" + }, + { + "begin": 1748, + "end": 1790, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1748, + "end": 1796, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1748, + "end": 1796, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "SSTORE", + "source": 22 + }, + { + "begin": 1748, + "end": 1807, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1817, + "end": 1841, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "34" + }, + { + "begin": 1844, + "end": 1852, + "modifierDepth": 1, + "name": "DUP10", + "source": 22 + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "FFFF" + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "AND", + "source": 22 + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "35" + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1844, + "end": 1867, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1844, + "end": 1869, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "34" + }, + { + "begin": 1844, + "end": 1869, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1817, + "end": 1869, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1817, + "end": 1869, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 1954, + "end": 1966, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 1973, + "end": 1985, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1992, + "end": 2002, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "36" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP4", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP3", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "37" + }, + { + "begin": 1932, + "end": 2003, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "36" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 1932, + "end": 2003, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "38" + }, + { + "begin": 745, + "end": 811, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "64FB4ECF63A4059A0BB1412609335673D4954BFF8E9740D216D9469D190CBB3F" + }, + { + "begin": 1905, + "end": 1922, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1905, + "end": 1922, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1879, + "end": 1904, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "39" + }, + { + "begin": 1879, + "end": 1904, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1879, + "end": 1904, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "38" + }, + { + "begin": 1879, + "end": 1923, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1879, + "end": 1929, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 1879, + "end": 1929, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "40" + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "41" + }, + { + "begin": 1879, + "end": 2003, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "40" + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 1879, + "end": 2003, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 2103, + "end": 2115, + "modifierDepth": 1, + "name": "DUP5", + "source": 22 + }, + { + "begin": 2122, + "end": 2134, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 2140, + "end": 2150, + "modifierDepth": 1, + "name": "DUP3", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "42" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP4", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP3", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "43" + }, + { + "begin": 2064, + "end": 2151, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "42" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "DUP4", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SUB", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2064, + "end": 2151, + "modifierDepth": 1, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "44" + }, + { + "begin": 955, + "end": 1021, + "modifierDepth": 1, + "name": "PUSH", + "source": 23, + "value": "D668863F064048EE8C87390227CA6556D110ECF41306C7B64AAB5C1C530B2D84" + }, + { + "begin": 2039, + "end": 2054, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2039, + "end": 2054, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 2013, + "end": 2038, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "39" + }, + { + "begin": 2013, + "end": 2038, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2013, + "end": 2038, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "44" + }, + { + "begin": 2013, + "end": 2055, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2013, + "end": 2061, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2013, + "end": 2061, + "modifierDepth": 1, + "name": "ADD", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "DUP2", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "45" + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "41" + }, + { + "begin": 2013, + "end": 2151, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "45" + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2013, + "end": 2151, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "46" + }, + { + "begin": 2198, + "end": 2212, + "modifierDepth": 1, + "name": "DUP13", + "source": 22 + }, + { + "begin": 2214, + "end": 2219, + "modifierDepth": 1, + "name": "DUP10", + "source": 22 + }, + { + "begin": 2162, + "end": 2197, + "modifierDepth": 1, + "name": "PUSH [tag]", + "source": 22, + "value": "7" + }, + { + "begin": 2162, + "end": 2197, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2162, + "end": 2197, + "modifierDepth": 1, + "name": "SHL", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "PUSH", + "source": 22, + "value": "20" + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "SHR", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "jumpType": "[in]", + "modifierDepth": 1, + "name": "JUMP", + "source": 22 + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "tag", + "source": 22, + "value": "46" + }, + { + "begin": 2162, + "end": 2220, + "modifierDepth": 1, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 904, + "end": 2227, + "modifierDepth": 1, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 757, + "end": 2227, + "name": "POP", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "47" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMP", + "source": 22 + }, + { + "begin": 5897, + "end": 6230, + "name": "tag", + "source": 8, + "value": "7" + }, + { + "begin": 5897, + "end": 6230, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "PUSH [tag]", + "source": 8, + "value": "49" + }, + { + "begin": 5997, + "end": 6006, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5986, + "end": 5996, + "name": "PUSH [tag]", + "source": 8, + "value": "50" + }, + { + "begin": 5986, + "end": 5996, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5986, + "end": 5996, + "name": "SHL", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5986, + "end": 6007, + "name": "SHR", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5986, + "end": 6007, + "name": "tag", + "source": 8, + "value": "49" + }, + { + "begin": 5986, + "end": 6007, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6037, + "end": 6046, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6022, + "end": 6047, + "name": "AND", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E" + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6022, + "end": 6047, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6022, + "end": 6047, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SUB", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6022, + "end": 6047, + "name": "LOG2", + "source": 8 + }, + { + "begin": 6076, + "end": 6077, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6062, + "end": 6066, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6062, + "end": 6073, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6062, + "end": 6077, + "name": "GT", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "PUSH [tag]", + "source": 8, + "value": "51" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "PUSH [tag]", + "source": 8, + "value": "52" + }, + { + "begin": 6130, + "end": 6139, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6155, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 6122, + "end": 6155, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6155, + "name": "PUSH", + "source": 8, + "value": "5C60DA1B" + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFF" + }, + { + "begin": 6122, + "end": 6157, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "E0" + }, + { + "begin": 6122, + "end": 6157, + "name": "SHL", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP4", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SUB", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP7", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "GAS", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "STATICCALL", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "54" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATACOPY", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6122, + "end": 6157, + "name": "REVERT", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "tag", + "source": 8, + "value": "54" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 6122, + "end": 6157, + "name": "NOT", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "AND", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6122, + "end": 6157, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "POP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "ADD", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "55" + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "PUSH [tag]", + "source": 8, + "value": "56" + }, + { + "begin": 6122, + "end": 6157, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6122, + "end": 6157, + "name": "tag", + "source": 8, + "value": "55" + }, + { + "begin": 6122, + "end": 6157, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6159, + "end": 6163, + "name": "DUP3", + "source": 8 + }, + { + "begin": 6093, + "end": 6121, + "name": "PUSH [tag]", + "source": 8, + "value": "57" + }, + { + "begin": 6093, + "end": 6121, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6093, + "end": 6121, + "name": "SHL", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6093, + "end": 6164, + "name": "SHR", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "tag", + "source": 8, + "value": "52" + }, + { + "begin": 6093, + "end": 6164, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6093, + "end": 6164, + "name": "POP", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "PUSH [tag]", + "source": 8, + "value": "58" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMP", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "tag", + "source": 8, + "value": "51" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "PUSH [tag]", + "source": 8, + "value": "59" + }, + { + "begin": 6195, + "end": 6211, + "name": "PUSH [tag]", + "source": 8, + "value": "60" + }, + { + "begin": 6195, + "end": 6211, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6195, + "end": 6211, + "name": "SHL", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 6195, + "end": 6213, + "name": "SHR", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 6195, + "end": 6213, + "name": "tag", + "source": 8, + "value": "59" + }, + { + "begin": 6195, + "end": 6213, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6058, + "end": 6224, + "name": "tag", + "source": 8, + "value": "58" + }, + { + "begin": 6058, + "end": 6224, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "name": "POP", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "name": "POP", + "source": 8 + }, + { + "begin": 5897, + "end": 6230, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 1685, + "end": 1875, + "name": "tag", + "source": 17, + "value": "30" + }, + { + "begin": 1685, + "end": 1875, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 1746, + "end": 1767, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 1855, + "end": 1859, + "name": "DUP2", + "source": 17 + }, + { + "begin": 1845, + "end": 1859, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 1845, + "end": 1859, + "name": "POP", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "SWAP2", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "name": "POP", + "source": 17 + }, + { + "begin": 1685, + "end": 1875, + "jumpType": "[out]", + "name": "JUMP", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "tag", + "source": 17, + "value": "33" + }, + { + "begin": 2549, + "end": 2739, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 2610, + "end": 2631, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 2719, + "end": 2723, + "name": "DUP2", + "source": 17 + }, + { + "begin": 2709, + "end": 2723, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2709, + "end": 2723, + "name": "POP", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "SWAP2", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "name": "POP", + "source": 17 + }, + { + "begin": 2549, + "end": 2739, + "jumpType": "[out]", + "name": "JUMP", + "source": 17 + }, + { + "begin": 89, + "end": 606, + "name": "tag", + "source": 34, + "value": "35" + }, + { + "begin": 89, + "end": 606, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 150, + "end": 163, + "name": "PUSH", + "source": 34, + "value": "60" + }, + { + "begin": 188, + "end": 189, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 179, + "end": 184, + "name": "DUP3", + "source": 34 + }, + { + "begin": 179, + "end": 189, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 179, + "end": 189, + "name": "AND", + "source": 34 + }, + { + "begin": 179, + "end": 189, + "name": "SUB", + "source": 34 + }, + { + "begin": 175, + "end": 226, + "name": "PUSH [tag]", + "source": 34, + "value": "64" + }, + { + "begin": 175, + "end": 226, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 205, + "end": 215, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "DUP1", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 205, + "end": 215, + "name": "ADD", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 205, + "end": 215, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "DUP1", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 205, + "end": 215, + "name": "DUP2", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 205, + "end": 215, + "name": "ADD", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH", + "source": 34, + "value": "3000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 205, + "end": 215, + "name": "DUP2", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "POP", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "POP", + "source": 34 + }, + { + "begin": 205, + "end": 215, + "name": "PUSH [tag]", + "source": 34, + "value": "63" + }, + { + "begin": 205, + "end": 215, + "name": "JUMP", + "source": 34 + }, + { + "begin": 175, + "end": 226, + "name": "tag", + "source": 34, + "value": "64" + }, + { + "begin": 175, + "end": 226, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 235, + "end": 246, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 249, + "end": 254, + "name": "DUP3", + "source": 34 + }, + { + "begin": 235, + "end": 254, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 235, + "end": 254, + "name": "POP", + "source": 34 + }, + { + "begin": 264, + "end": 277, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 287, + "end": 362, + "name": "tag", + "source": 34, + "value": "65" + }, + { + "begin": 287, + "end": 362, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 302, + "end": 303, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 294, + "end": 298, + "name": "DUP3", + "source": 34 + }, + { + "begin": 294, + "end": 303, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 294, + "end": 303, + "name": "AND", + "source": 34 + }, + { + "begin": 294, + "end": 303, + "name": "EQ", + "source": 34 + }, + { + "begin": 287, + "end": 362, + "name": "PUSH [tag]", + "source": 34, + "value": "66" + }, + { + "begin": 287, + "end": 362, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "DUP1", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "DUP1", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "PUSH [tag]", + "source": 34, + "value": "67" + }, + { + "begin": 319, + "end": 327, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "PUSH [tag]", + "source": 34, + "value": "68" + }, + { + "begin": 319, + "end": 327, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "tag", + "source": 34, + "value": "67" + }, + { + "begin": 319, + "end": 327, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "POP", + "source": 34 + }, + { + "begin": 319, + "end": 327, + "name": "POP", + "source": 34 + }, + { + "begin": 349, + "end": 351, + "name": "PUSH", + "source": 34, + "value": "A" + }, + { + "begin": 341, + "end": 351, + "name": "DUP3", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "PUSH [tag]", + "source": 34, + "value": "69" + }, + { + "begin": 341, + "end": 351, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "PUSH [tag]", + "source": 34, + "value": "70" + }, + { + "begin": 341, + "end": 351, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "tag", + "source": 34, + "value": "69" + }, + { + "begin": 341, + "end": 351, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 341, + "end": 351, + "name": "POP", + "source": 34 + }, + { + "begin": 287, + "end": 362, + "name": "PUSH [tag]", + "source": 34, + "value": "65" + }, + { + "begin": 287, + "end": 362, + "name": "JUMP", + "source": 34 + }, + { + "begin": 287, + "end": 362, + "name": "tag", + "source": 34, + "value": "66" + }, + { + "begin": 287, + "end": 362, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 371, + "end": 390, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 403, + "end": 409, + "name": "DUP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 393, + "end": 410, + "name": "AND", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 393, + "end": 410, + "name": "DUP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "GT", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "71" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "72" + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "73" + }, + { + "begin": 393, + "end": 410, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "tag", + "source": 34, + "value": "72" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "tag", + "source": 34, + "value": "71" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 393, + "end": 410, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "1F" + }, + { + "begin": 393, + "end": 410, + "name": "NOT", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "AND", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 393, + "end": 410, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ISZERO", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH [tag]", + "source": 34, + "value": "74" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "MUL", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "CALLDATASIZE", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP4", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "CALLDATACOPY", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "DUP3", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "ADD", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "tag", + "source": 34, + "value": "74" + }, + { + "begin": 393, + "end": 410, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 393, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 371, + "end": 410, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 371, + "end": 410, + "name": "POP", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "tag", + "source": 34, + "value": "75" + }, + { + "begin": 420, + "end": 569, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 436, + "end": 437, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 427, + "end": 432, + "name": "DUP6", + "source": 34 + }, + { + "begin": 427, + "end": 437, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 427, + "end": 437, + "name": "AND", + "source": 34 + }, + { + "begin": 427, + "end": 437, + "name": "EQ", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "PUSH [tag]", + "source": 34, + "value": "76" + }, + { + "begin": 420, + "end": 569, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 463, + "end": 464, + "name": "PUSH", + "source": 34, + "value": "1" + }, + { + "begin": 453, + "end": 464, + "name": "DUP3", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "PUSH [tag]", + "source": 34, + "value": "77" + }, + { + "begin": 453, + "end": 464, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "PUSH [tag]", + "source": 34, + "value": "78" + }, + { + "begin": 453, + "end": 464, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "tag", + "source": 34, + "value": "77" + }, + { + "begin": 453, + "end": 464, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 453, + "end": 464, + "name": "POP", + "source": 34 + }, + { + "begin": 528, + "end": 530, + "name": "PUSH", + "source": 34, + "value": "A" + }, + { + "begin": 520, + "end": 525, + "name": "DUP6", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "PUSH [tag]", + "source": 34, + "value": "79" + }, + { + "begin": 520, + "end": 530, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "PUSH [tag]", + "source": 34, + "value": "80" + }, + { + "begin": 520, + "end": 530, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 520, + "end": 530, + "name": "tag", + "source": 34, + "value": "79" + }, + { + "begin": 520, + "end": 530, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 508, + "end": 510, + "name": "PUSH", + "source": 34, + "value": "30" + }, + { + "begin": 508, + "end": 531, + "name": "PUSH [tag]", + "source": 34, + "value": "81" + }, + { + "begin": 508, + "end": 531, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 508, + "end": 531, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 508, + "end": 531, + "name": "PUSH [tag]", + "source": 34, + "value": "82" + }, + { + "begin": 508, + "end": 531, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 508, + "end": 531, + "name": "tag", + "source": 34, + "value": "81" + }, + { + "begin": 508, + "end": 531, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 495, + "end": 533, + "name": "PUSH", + "source": 34, + "value": "F8" + }, + { + "begin": 495, + "end": 533, + "name": "SHL", + "source": 34 + }, + { + "begin": 478, + "end": 484, + "name": "DUP2", + "source": 34 + }, + { + "begin": 485, + "end": 491, + "name": "DUP4", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH", + "source": 34, + "value": "FFFF" + }, + { + "begin": 478, + "end": 492, + "name": "AND", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "DUP2", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "DUP2", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "LT", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH [tag]", + "source": 34, + "value": "83" + }, + { + "begin": 478, + "end": 492, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH [tag]", + "source": 34, + "value": "84" + }, + { + "begin": 478, + "end": 492, + "name": "PUSH [tag]", + "source": 34, + "value": "85" + }, + { + "begin": 478, + "end": 492, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "tag", + "source": 34, + "value": "84" + }, + { + "begin": 478, + "end": 492, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "tag", + "source": 34, + "value": "83" + }, + { + "begin": 478, + "end": 492, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "PUSH", + "source": 34, + "value": "20" + }, + { + "begin": 478, + "end": 492, + "name": "ADD", + "source": 34 + }, + { + "begin": 478, + "end": 492, + "name": "ADD", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "PUSH", + "source": 34, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 478, + "end": 533, + "name": "NOT", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "AND", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "DUP2", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 478, + "end": 533, + "name": "BYTE", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "MSTORE8", + "source": 34 + }, + { + "begin": 478, + "end": 533, + "name": "POP", + "source": 34 + }, + { + "begin": 556, + "end": 558, + "name": "PUSH", + "source": 34, + "value": "A" + }, + { + "begin": 547, + "end": 558, + "name": "DUP6", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "PUSH [tag]", + "source": 34, + "value": "86" + }, + { + "begin": 547, + "end": 558, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "PUSH [tag]", + "source": 34, + "value": "70" + }, + { + "begin": 547, + "end": 558, + "jumpType": "[in]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "tag", + "source": 34, + "value": "86" + }, + { + "begin": 547, + "end": 558, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "SWAP5", + "source": 34 + }, + { + "begin": 547, + "end": 558, + "name": "POP", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "PUSH [tag]", + "source": 34, + "value": "75" + }, + { + "begin": 420, + "end": 569, + "name": "JUMP", + "source": 34 + }, + { + "begin": 420, + "end": 569, + "name": "tag", + "source": 34, + "value": "76" + }, + { + "begin": 420, + "end": 569, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 592, + "end": 598, + "name": "DUP1", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "SWAP4", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 578, + "end": 599, + "name": "POP", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "tag", + "source": 34, + "value": "63" + }, + { + "begin": 89, + "end": 606, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "SWAP2", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "SWAP1", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "name": "POP", + "source": 34 + }, + { + "begin": 89, + "end": 606, + "jumpType": "[out]", + "name": "JUMP", + "source": 34 + }, + { + "begin": 2836, + "end": 3024, + "name": "tag", + "source": 17, + "value": "39" + }, + { + "begin": 2836, + "end": 3024, + "name": "JUMPDEST", + "source": 17 + }, + { + "begin": 2896, + "end": 2916, + "name": "PUSH", + "source": 17, + "value": "0" + }, + { + "begin": 3004, + "end": 3008, + "name": "DUP2", + "source": 17 + }, + { + "begin": 2994, + "end": 3008, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2994, + "end": 3008, + "name": "POP", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "name": "SWAP2", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "name": "SWAP1", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "name": "POP", + "source": 17 + }, + { + "begin": 2836, + "end": 3024, + "jumpType": "[out]", + "name": "JUMP", + "source": 17 + }, + { + "begin": 4935, + "end": 5372, + "name": "tag", + "source": 8, + "value": "50" + }, + { + "begin": 4935, + "end": 5372, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5021, + "end": 5022, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 4996, + "end": 5005, + "name": "DUP2", + "source": 8 + }, + { + "begin": 4996, + "end": 5017, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4996, + "end": 5017, + "name": "AND", + "source": 8 + }, + { + "begin": 4996, + "end": 5017, + "name": "EXTCODESIZE", + "source": 8 + }, + { + "begin": 4996, + "end": 5022, + "name": "SUB", + "source": 8 + }, + { + "begin": 4992, + "end": 5087, + "name": "PUSH [tag]", + "source": 8, + "value": "89" + }, + { + "begin": 4992, + "end": 5087, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5066, + "end": 5075, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5045, + "end": 5076, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "64CED0EC00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5045, + "end": 5076, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5045, + "end": 5076, + "name": "ADD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH [tag]", + "source": 8, + "value": "90" + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH [tag]", + "source": 8, + "value": "91" + }, + { + "begin": 5045, + "end": 5076, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "tag", + "source": 8, + "value": "90" + }, + { + "begin": 5045, + "end": 5076, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5045, + "end": 5076, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SUB", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5045, + "end": 5076, + "name": "REVERT", + "source": 8 + }, + { + "begin": 4992, + "end": 5087, + "name": "tag", + "source": 8, + "value": "89" + }, + { + "begin": 4992, + "end": 5087, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5145, + "end": 5154, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "PUSH [tag]", + "source": 8, + "value": "92" + }, + { + "begin": 4601, + "end": 4667, + "name": "PUSH", + "source": 8, + "value": "A3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50" + }, + { + "begin": 5124, + "end": 5135, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5124, + "end": 5135, + "name": "SHL", + "source": 8 + }, + { + "begin": 5097, + "end": 5123, + "name": "PUSH [tag]", + "source": 8, + "value": "30" + }, + { + "begin": 5097, + "end": 5123, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5097, + "end": 5123, + "name": "SHL", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5097, + "end": 5136, + "name": "SHR", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5097, + "end": 5136, + "name": "tag", + "source": 8, + "value": "92" + }, + { + "begin": 5097, + "end": 5136, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5097, + "end": 5142, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5097, + "end": 5142, + "name": "ADD", + "source": 8 + }, + { + "begin": 5097, + "end": 5142, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "100" + }, + { + "begin": 5097, + "end": 5154, + "name": "EXP", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SLOAD", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5097, + "end": 5154, + "name": "MUL", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "NOT", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "AND", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "DUP4", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5097, + "end": 5154, + "name": "AND", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "MUL", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "OR", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "SSTORE", + "source": 8 + }, + { + "begin": 5097, + "end": 5154, + "name": "POP", + "source": 8 + }, + { + "begin": 5165, + "end": 5193, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5204, + "end": 5213, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5229, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5196, + "end": 5229, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5229, + "name": "PUSH", + "source": 8, + "value": "5C60DA1B" + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFF" + }, + { + "begin": 5196, + "end": 5231, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "E0" + }, + { + "begin": 5196, + "end": 5231, + "name": "SHL", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "20" + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP4", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SUB", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP7", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "GAS", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "STATICCALL", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "94" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATACOPY", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5196, + "end": 5231, + "name": "REVERT", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "tag", + "source": 8, + "value": "94" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "RETURNDATASIZE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 5196, + "end": 5231, + "name": "NOT", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "1F" + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "AND", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP3", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5196, + "end": 5231, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "ADD", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "95" + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "PUSH [tag]", + "source": 8, + "value": "56" + }, + { + "begin": 5196, + "end": 5231, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5196, + "end": 5231, + "name": "tag", + "source": 8, + "value": "95" + }, + { + "begin": 5196, + "end": 5231, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5165, + "end": 5231, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5165, + "end": 5231, + "name": "POP", + "source": 8 + }, + { + "begin": 5281, + "end": 5282, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 5245, + "end": 5265, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5245, + "end": 5277, + "name": "PUSH", + "source": 8, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5245, + "end": 5277, + "name": "AND", + "source": 8 + }, + { + "begin": 5245, + "end": 5277, + "name": "EXTCODESIZE", + "source": 8 + }, + { + "begin": 5245, + "end": 5282, + "name": "SUB", + "source": 8 + }, + { + "begin": 5241, + "end": 5366, + "name": "PUSH [tag]", + "source": 8, + "value": "96" + }, + { + "begin": 5241, + "end": 5366, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 5334, + "end": 5354, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5305, + "end": 5355, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "4C9C8CE300000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5305, + "end": 5355, + "name": "DUP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 5305, + "end": 5355, + "name": "ADD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH [tag]", + "source": 8, + "value": "97" + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH [tag]", + "source": 8, + "value": "91" + }, + { + "begin": 5305, + "end": 5355, + "jumpType": "[in]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "tag", + "source": 8, + "value": "97" + }, + { + "begin": 5305, + "end": 5355, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 5305, + "end": 5355, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "DUP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SUB", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 5305, + "end": 5355, + "name": "REVERT", + "source": 8 + }, + { + "begin": 5241, + "end": 5366, + "name": "tag", + "source": 8, + "value": "96" + }, + { + "begin": 5241, + "end": 5366, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 4982, + "end": 5372, + "name": "POP", + "source": 8 + }, + { + "begin": 4935, + "end": 5372, + "name": "POP", + "source": 8 + }, + { + "begin": 4935, + "end": 5372, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4106, + "end": 4359, + "name": "tag", + "source": 14, + "value": "57" + }, + { + "begin": 4106, + "end": 4359, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4189, + "end": 4201, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4214, + "end": 4226, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4228, + "end": 4251, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4261, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4274, + "name": "PUSH", + "source": 14, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 4255, + "end": 4274, + "name": "AND", + "source": 14 + }, + { + "begin": 4275, + "end": 4279, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "99" + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "10" + }, + { + "begin": 4255, + "end": 4280, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "99" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SUB", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP6", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "GAS", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DELEGATECALL", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP1", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "EQ", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "102" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "1F" + }, + { + "begin": 4255, + "end": 4280, + "name": "NOT", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "3F" + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "AND", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 4255, + "end": 4280, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATASIZE", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4255, + "end": 4280, + "name": "DUP5", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "ADD", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "RETURNDATACOPY", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH [tag]", + "source": 14, + "value": "101" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "102" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4255, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "tag", + "source": 14, + "value": "101" + }, + { + "begin": 4255, + "end": 4280, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4255, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4213, + "end": 4280, + "name": "POP", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "PUSH [tag]", + "source": 14, + "value": "103" + }, + { + "begin": 4324, + "end": 4330, + "name": "DUP6", + "source": 14 + }, + { + "begin": 4332, + "end": 4339, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4341, + "end": 4351, + "name": "DUP4", + "source": 14 + }, + { + "begin": 4297, + "end": 4323, + "name": "PUSH [tag]", + "source": 14, + "value": "104" + }, + { + "begin": 4297, + "end": 4323, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4297, + "end": 4323, + "name": "SHL", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4297, + "end": 4352, + "name": "SHR", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4297, + "end": 4352, + "name": "tag", + "source": 14, + "value": "103" + }, + { + "begin": 4297, + "end": 4352, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4290, + "end": 4352, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "name": "POP", + "source": 14 + }, + { + "begin": 4106, + "end": 4359, + "jumpType": "[out]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 6419, + "end": 6541, + "name": "tag", + "source": 8, + "value": "60" + }, + { + "begin": 6419, + "end": 6541, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6481, + "end": 6482, + "name": "PUSH", + "source": 8, + "value": "0" + }, + { + "begin": 6469, + "end": 6478, + "name": "CALLVALUE", + "source": 8 + }, + { + "begin": 6469, + "end": 6482, + "name": "GT", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "ISZERO", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "PUSH [tag]", + "source": 8, + "value": "106" + }, + { + "begin": 6465, + "end": 6535, + "name": "JUMPI", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6505, + "end": 6524, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "B398979F00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6505, + "end": 6524, + "name": "DUP2", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "MSTORE", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "4" + }, + { + "begin": 6505, + "end": 6524, + "name": "ADD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "PUSH", + "source": 8, + "value": "40" + }, + { + "begin": 6505, + "end": 6524, + "name": "MLOAD", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "DUP1", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SWAP2", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SUB", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "SWAP1", + "source": 8 + }, + { + "begin": 6505, + "end": 6524, + "name": "REVERT", + "source": 8 + }, + { + "begin": 6465, + "end": 6535, + "name": "tag", + "source": 8, + "value": "106" + }, + { + "begin": 6465, + "end": 6535, + "name": "JUMPDEST", + "source": 8 + }, + { + "begin": 6419, + "end": 6541, + "jumpType": "[out]", + "name": "JUMP", + "source": 8 + }, + { + "begin": 4625, + "end": 5207, + "name": "tag", + "source": 14, + "value": "104" + }, + { + "begin": 4625, + "end": 5207, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4769, + "end": 4781, + "name": "PUSH", + "source": 14, + "value": "60" + }, + { + "begin": 4798, + "end": 4805, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "PUSH [tag]", + "source": 14, + "value": "108" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "PUSH [tag]", + "source": 14, + "value": "109" + }, + { + "begin": 4829, + "end": 4839, + "name": "DUP3", + "source": 14 + }, + { + "begin": 4821, + "end": 4828, + "name": "PUSH [tag]", + "source": 14, + "value": "110" + }, + { + "begin": 4821, + "end": 4828, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4821, + "end": 4828, + "name": "SHL", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 4821, + "end": 4840, + "name": "SHR", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 4821, + "end": 4840, + "name": "tag", + "source": 14, + "value": "109" + }, + { + "begin": 4821, + "end": 4840, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "PUSH [tag]", + "source": 14, + "value": "111" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "tag", + "source": 14, + "value": "108" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5066, + "end": 5067, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5045, + "end": 5055, + "name": "DUP3", + "source": 14 + }, + { + "begin": 5045, + "end": 5062, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5045, + "end": 5067, + "name": "EQ", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "DUP1", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "PUSH [tag]", + "source": 14, + "value": "112" + }, + { + "begin": 5045, + "end": 5094, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "POP", + "source": 14 + }, + { + "begin": 5093, + "end": 5094, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5071, + "end": 5077, + "name": "DUP5", + "source": 14 + }, + { + "begin": 5071, + "end": 5089, + "name": "PUSH", + "source": 14, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 5071, + "end": 5089, + "name": "AND", + "source": 14 + }, + { + "begin": 5071, + "end": 5089, + "name": "EXTCODESIZE", + "source": 14 + }, + { + "begin": 5071, + "end": 5094, + "name": "EQ", + "source": 14 + }, + { + "begin": 5045, + "end": 5094, + "name": "tag", + "source": 14, + "value": "112" + }, + { + "begin": 5045, + "end": 5094, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "PUSH [tag]", + "source": 14, + "value": "113" + }, + { + "begin": 5041, + "end": 5160, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 5138, + "end": 5144, + "name": "DUP4", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 5121, + "end": 5145, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "9996B31500000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 5121, + "end": 5145, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "4" + }, + { + "begin": 5121, + "end": 5145, + "name": "ADD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH [tag]", + "source": 14, + "value": "114" + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH [tag]", + "source": 14, + "value": "91" + }, + { + "begin": 5121, + "end": 5145, + "jumpType": "[in]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "tag", + "source": 14, + "value": "114" + }, + { + "begin": 5121, + "end": 5145, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 5121, + "end": 5145, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "DUP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SUB", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5121, + "end": 5145, + "name": "REVERT", + "source": 14 + }, + { + "begin": 5041, + "end": 5160, + "name": "tag", + "source": 14, + "value": "113" + }, + { + "begin": 5041, + "end": 5160, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5180, + "end": 5190, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "POP", + "source": 14 + }, + { + "begin": 5173, + "end": 5190, + "name": "PUSH [tag]", + "source": 14, + "value": "107" + }, + { + "begin": 5173, + "end": 5190, + "name": "JUMP", + "source": 14 + }, + { + "begin": 4793, + "end": 5201, + "name": "tag", + "source": 14, + "value": "111" + }, + { + "begin": 4793, + "end": 5201, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "tag", + "source": 14, + "value": "107" + }, + { + "begin": 4625, + "end": 5207, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "SWAP4", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "SWAP3", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "name": "POP", + "source": 14 + }, + { + "begin": 4625, + "end": 5207, + "jumpType": "[out]", + "name": "JUMP", + "source": 14 + }, + { + "begin": 5743, + "end": 6259, + "name": "tag", + "source": 14, + "value": "110" + }, + { + "begin": 5743, + "end": 6259, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 5894, + "end": 5895, + "name": "PUSH", + "source": 14, + "value": "0" + }, + { + "begin": 5874, + "end": 5884, + "name": "DUP2", + "source": 14 + }, + { + "begin": 5874, + "end": 5891, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 5874, + "end": 5895, + "name": "GT", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "ISZERO", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "PUSH [tag]", + "source": 14, + "value": "116" + }, + { + "begin": 5870, + "end": 6253, + "name": "JUMPI", + "source": 14 + }, + { + "begin": 6102, + "end": 6112, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6096, + "end": 6113, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6158, + "end": 6173, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6145, + "end": 6155, + "name": "DUP3", + "source": 14 + }, + { + "begin": 6141, + "end": 6143, + "name": "PUSH", + "source": 14, + "value": "20" + }, + { + "begin": 6137, + "end": 6156, + "name": "ADD", + "source": 14 + }, + { + "begin": 6130, + "end": 6174, + "name": "REVERT", + "source": 14 + }, + { + "begin": 5870, + "end": 6253, + "name": "tag", + "source": 14, + "value": "116" + }, + { + "begin": 5870, + "end": 6253, + "name": "JUMPDEST", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 6225, + "end": 6242, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "1425EA4200000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6225, + "end": 6242, + "name": "DUP2", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "MSTORE", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "4" + }, + { + "begin": 6225, + "end": 6242, + "name": "ADD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "PUSH", + "source": 14, + "value": "40" + }, + { + "begin": 6225, + "end": 6242, + "name": "MLOAD", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "DUP1", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SWAP2", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SUB", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "SWAP1", + "source": 14 + }, + { + "begin": 6225, + "end": 6242, + "name": "REVERT", + "source": 14 + }, + { + "begin": 7, + "end": 82, + "name": "tag", + "source": 40, + "value": "118" + }, + { + "begin": 7, + "end": 82, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 40, + "end": 46, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 73, + "end": 75, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 67, + "end": 76, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 57, + "end": 76, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 57, + "end": 76, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 82, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7, + "end": 82, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 88, + "end": 205, + "name": "tag", + "source": 40, + "value": "119" + }, + { + "begin": 88, + "end": 205, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 197, + "end": 198, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 194, + "end": 195, + "name": "DUP1", + "source": 40 + }, + { + "begin": 187, + "end": 199, + "name": "REVERT", + "source": 40 + }, + { + "begin": 211, + "end": 328, + "name": "tag", + "source": 40, + "value": "120" + }, + { + "begin": 211, + "end": 328, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 320, + "end": 321, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 317, + "end": 318, + "name": "DUP1", + "source": 40 + }, + { + "begin": 310, + "end": 322, + "name": "REVERT", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "tag", + "source": 40, + "value": "121" + }, + { + "begin": 334, + "end": 460, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 371, + "end": 378, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 411, + "end": 453, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 404, + "end": 409, + "name": "DUP3", + "source": 40 + }, + { + "begin": 400, + "end": 454, + "name": "AND", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 389, + "end": 454, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "name": "POP", + "source": 40 + }, + { + "begin": 334, + "end": 460, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "tag", + "source": 40, + "value": "122" + }, + { + "begin": 466, + "end": 562, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 503, + "end": 510, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "181" + }, + { + "begin": 550, + "end": 555, + "name": "DUP3", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "PUSH [tag]", + "source": 40, + "value": "121" + }, + { + "begin": 532, + "end": 556, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 532, + "end": 556, + "name": "tag", + "source": 40, + "value": "181" + }, + { + "begin": 532, + "end": 556, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 521, + "end": 556, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "name": "POP", + "source": 40 + }, + { + "begin": 466, + "end": 562, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "tag", + "source": 40, + "value": "123" + }, + { + "begin": 568, + "end": 690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "183" + }, + { + "begin": 659, + "end": 664, + "name": "DUP2", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "PUSH [tag]", + "source": 40, + "value": "122" + }, + { + "begin": 641, + "end": 665, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 641, + "end": 665, + "name": "tag", + "source": 40, + "value": "183" + }, + { + "begin": 641, + "end": 665, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 634, + "end": 639, + "name": "DUP2", + "source": 40 + }, + { + "begin": 631, + "end": 666, + "name": "EQ", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "PUSH [tag]", + "source": 40, + "value": "184" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 680, + "end": 681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 677, + "end": 678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 670, + "end": 682, + "name": "REVERT", + "source": 40 + }, + { + "begin": 621, + "end": 684, + "name": "tag", + "source": 40, + "value": "184" + }, + { + "begin": 621, + "end": 684, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "name": "POP", + "source": 40 + }, + { + "begin": 568, + "end": 690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "tag", + "source": 40, + "value": "124" + }, + { + "begin": 696, + "end": 839, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 753, + "end": 758, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 784, + "end": 790, + "name": "DUP2", + "source": 40 + }, + { + "begin": 778, + "end": 791, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 769, + "end": 791, + "name": "POP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "186" + }, + { + "begin": 827, + "end": 832, + "name": "DUP2", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "PUSH [tag]", + "source": 40, + "value": "123" + }, + { + "begin": 800, + "end": 833, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 800, + "end": 833, + "name": "tag", + "source": 40, + "value": "186" + }, + { + "begin": 800, + "end": 833, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "name": "POP", + "source": 40 + }, + { + "begin": 696, + "end": 839, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "tag", + "source": 40, + "value": "125" + }, + { + "begin": 845, + "end": 934, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 881, + "end": 888, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 921, + "end": 927, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 914, + "end": 919, + "name": "DUP3", + "source": 40 + }, + { + "begin": 910, + "end": 928, + "name": "AND", + "source": 40 + }, + { + "begin": 899, + "end": 928, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 899, + "end": 928, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "name": "POP", + "source": 40 + }, + { + "begin": 845, + "end": 934, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 940, + "end": 1060, + "name": "tag", + "source": 40, + "value": "126" + }, + { + "begin": 940, + "end": 1060, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1012, + "end": 1035, + "name": "PUSH [tag]", + "source": 40, + "value": "189" + }, + { + "begin": 1029, + "end": 1034, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1012, + "end": 1035, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 1012, + "end": 1035, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1012, + "end": 1035, + "name": "tag", + "source": 40, + "value": "189" + }, + { + "begin": 1012, + "end": 1035, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1005, + "end": 1010, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1002, + "end": 1036, + "name": "EQ", + "source": 40 + }, + { + "begin": 992, + "end": 1054, + "name": "PUSH [tag]", + "source": 40, + "value": "190" + }, + { + "begin": 992, + "end": 1054, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1050, + "end": 1051, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1047, + "end": 1048, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1040, + "end": 1052, + "name": "REVERT", + "source": 40 + }, + { + "begin": 992, + "end": 1054, + "name": "tag", + "source": 40, + "value": "190" + }, + { + "begin": 992, + "end": 1054, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 940, + "end": 1060, + "name": "POP", + "source": 40 + }, + { + "begin": 940, + "end": 1060, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "tag", + "source": 40, + "value": "127" + }, + { + "begin": 1066, + "end": 1207, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1122, + "end": 1127, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1153, + "end": 1159, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1147, + "end": 1160, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 1138, + "end": 1160, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1138, + "end": 1160, + "name": "POP", + "source": 40 + }, + { + "begin": 1169, + "end": 1201, + "name": "PUSH [tag]", + "source": 40, + "value": "192" + }, + { + "begin": 1195, + "end": 1200, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1169, + "end": 1201, + "name": "PUSH [tag]", + "source": 40, + "value": "126" + }, + { + "begin": 1169, + "end": 1201, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1169, + "end": 1201, + "name": "tag", + "source": 40, + "value": "192" + }, + { + "begin": 1169, + "end": 1201, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "POP", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "name": "POP", + "source": 40 + }, + { + "begin": 1066, + "end": 1207, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1213, + "end": 1330, + "name": "tag", + "source": 40, + "value": "128" + }, + { + "begin": 1213, + "end": 1330, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1322, + "end": 1323, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1319, + "end": 1320, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1312, + "end": 1324, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1336, + "end": 1453, + "name": "tag", + "source": 40, + "value": "129" + }, + { + "begin": 1336, + "end": 1453, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1445, + "end": 1446, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1442, + "end": 1443, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1435, + "end": 1447, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "tag", + "source": 40, + "value": "130" + }, + { + "begin": 1459, + "end": 1561, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1500, + "end": 1506, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1551, + "end": 1553, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 1547, + "end": 1554, + "name": "NOT", + "source": 40 + }, + { + "begin": 1542, + "end": 1544, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 1535, + "end": 1540, + "name": "DUP4", + "source": 40 + }, + { + "begin": 1531, + "end": 1545, + "name": "ADD", + "source": 40 + }, + { + "begin": 1527, + "end": 1555, + "name": "AND", + "source": 40 + }, + { + "begin": 1517, + "end": 1555, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1517, + "end": 1555, + "name": "POP", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "name": "POP", + "source": 40 + }, + { + "begin": 1459, + "end": 1561, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1567, + "end": 1747, + "name": "tag", + "source": 40, + "value": "73" + }, + { + "begin": 1567, + "end": 1747, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1615, + "end": 1692, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1612, + "end": 1613, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1605, + "end": 1693, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1712, + "end": 1716, + "name": "PUSH", + "source": 40, + "value": "41" + }, + { + "begin": 1709, + "end": 1710, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 1702, + "end": 1717, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1736, + "end": 1740, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 1733, + "end": 1734, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1726, + "end": 1741, + "name": "REVERT", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "name": "tag", + "source": 40, + "value": "131" + }, + { + "begin": 1753, + "end": 2034, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1836, + "end": 1863, + "name": "PUSH [tag]", + "source": 40, + "value": "198" + }, + { + "begin": 1858, + "end": 1862, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1836, + "end": 1863, + "name": "PUSH [tag]", + "source": 40, + "value": "130" + }, + { + "begin": 1836, + "end": 1863, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1836, + "end": 1863, + "name": "tag", + "source": 40, + "value": "198" + }, + { + "begin": 1836, + "end": 1863, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1828, + "end": 1834, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1824, + "end": 1864, + "name": "ADD", + "source": 40 + }, + { + "begin": 1966, + "end": 1972, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1954, + "end": 1964, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1951, + "end": 1973, + "name": "LT", + "source": 40 + }, + { + "begin": 1930, + "end": 1948, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 1918, + "end": 1928, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1915, + "end": 1949, + "name": "GT", + "source": 40 + }, + { + "begin": 1912, + "end": 1974, + "name": "OR", + "source": 40 + }, + { + "begin": 1909, + "end": 1997, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1909, + "end": 1997, + "name": "PUSH [tag]", + "source": 40, + "value": "199" + }, + { + "begin": 1909, + "end": 1997, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1977, + "end": 1995, + "name": "PUSH [tag]", + "source": 40, + "value": "200" + }, + { + "begin": 1977, + "end": 1995, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 1977, + "end": 1995, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1977, + "end": 1995, + "name": "tag", + "source": 40, + "value": "200" + }, + { + "begin": 1977, + "end": 1995, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1909, + "end": 1997, + "name": "tag", + "source": 40, + "value": "199" + }, + { + "begin": 1909, + "end": 1997, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2017, + "end": 2027, + "name": "DUP1", + "source": 40 + }, + { + "begin": 2013, + "end": 2015, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 2006, + "end": 2028, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 1796, + "end": 2034, + "name": "POP", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "name": "POP", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "name": "POP", + "source": 40 + }, + { + "begin": 1753, + "end": 2034, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "tag", + "source": 40, + "value": "132" + }, + { + "begin": 2040, + "end": 2169, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2074, + "end": 2080, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2101, + "end": 2121, + "name": "PUSH [tag]", + "source": 40, + "value": "202" + }, + { + "begin": 2101, + "end": 2121, + "name": "PUSH [tag]", + "source": 40, + "value": "118" + }, + { + "begin": 2101, + "end": 2121, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2101, + "end": 2121, + "name": "tag", + "source": 40, + "value": "202" + }, + { + "begin": 2101, + "end": 2121, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2091, + "end": 2121, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2091, + "end": 2121, + "name": "POP", + "source": 40 + }, + { + "begin": 2130, + "end": 2163, + "name": "PUSH [tag]", + "source": 40, + "value": "203" + }, + { + "begin": 2158, + "end": 2162, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2150, + "end": 2156, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2130, + "end": 2163, + "name": "PUSH [tag]", + "source": 40, + "value": "131" + }, + { + "begin": 2130, + "end": 2163, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2130, + "end": 2163, + "name": "tag", + "source": 40, + "value": "203" + }, + { + "begin": 2130, + "end": 2163, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "name": "POP", + "source": 40 + }, + { + "begin": 2040, + "end": 2169, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "tag", + "source": 40, + "value": "133" + }, + { + "begin": 2175, + "end": 2482, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2236, + "end": 2240, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2326, + "end": 2344, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 2318, + "end": 2324, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2315, + "end": 2345, + "name": "GT", + "source": 40 + }, + { + "begin": 2312, + "end": 2368, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2312, + "end": 2368, + "name": "PUSH [tag]", + "source": 40, + "value": "205" + }, + { + "begin": 2312, + "end": 2368, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 2348, + "end": 2366, + "name": "PUSH [tag]", + "source": 40, + "value": "206" + }, + { + "begin": 2348, + "end": 2366, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 2348, + "end": 2366, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2348, + "end": 2366, + "name": "tag", + "source": 40, + "value": "206" + }, + { + "begin": 2348, + "end": 2366, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2312, + "end": 2368, + "name": "tag", + "source": 40, + "value": "205" + }, + { + "begin": 2312, + "end": 2368, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2386, + "end": 2415, + "name": "PUSH [tag]", + "source": 40, + "value": "207" + }, + { + "begin": 2408, + "end": 2414, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2386, + "end": 2415, + "name": "PUSH [tag]", + "source": 40, + "value": "130" + }, + { + "begin": 2386, + "end": 2415, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2386, + "end": 2415, + "name": "tag", + "source": 40, + "value": "207" + }, + { + "begin": 2386, + "end": 2415, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2378, + "end": 2415, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2378, + "end": 2415, + "name": "POP", + "source": 40 + }, + { + "begin": 2470, + "end": 2474, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2464, + "end": 2468, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2460, + "end": 2475, + "name": "ADD", + "source": 40 + }, + { + "begin": 2452, + "end": 2475, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2452, + "end": 2475, + "name": "POP", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "name": "POP", + "source": 40 + }, + { + "begin": 2175, + "end": 2482, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "tag", + "source": 40, + "value": "134" + }, + { + "begin": 2488, + "end": 2734, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2569, + "end": 2570, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2579, + "end": 2692, + "name": "tag", + "source": 40, + "value": "209" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2593, + "end": 2599, + "name": "DUP4", + "source": 40 + }, + { + "begin": 2590, + "end": 2591, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2587, + "end": 2600, + "name": "LT", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "PUSH [tag]", + "source": 40, + "value": "211" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 2678, + "end": 2679, + "name": "DUP1", + "source": 40 + }, + { + "begin": 2673, + "end": 2676, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2669, + "end": 2680, + "name": "ADD", + "source": 40 + }, + { + "begin": 2663, + "end": 2681, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 2659, + "end": 2660, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2654, + "end": 2657, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2650, + "end": 2661, + "name": "ADD", + "source": 40 + }, + { + "begin": 2643, + "end": 2682, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2615, + "end": 2617, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2612, + "end": 2613, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2608, + "end": 2618, + "name": "ADD", + "source": 40 + }, + { + "begin": 2603, + "end": 2618, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2603, + "end": 2618, + "name": "POP", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "PUSH [tag]", + "source": 40, + "value": "209" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMP", + "source": 40 + }, + { + "begin": 2579, + "end": 2692, + "name": "tag", + "source": 40, + "value": "211" + }, + { + "begin": 2579, + "end": 2692, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2726, + "end": 2727, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2717, + "end": 2723, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2712, + "end": 2715, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2708, + "end": 2724, + "name": "ADD", + "source": 40 + }, + { + "begin": 2701, + "end": 2728, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2550, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "name": "POP", + "source": 40 + }, + { + "begin": 2488, + "end": 2734, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "tag", + "source": 40, + "value": "135" + }, + { + "begin": 2740, + "end": 3172, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2828, + "end": 2833, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 2853, + "end": 2918, + "name": "PUSH [tag]", + "source": 40, + "value": "213" + }, + { + "begin": 2869, + "end": 2917, + "name": "PUSH [tag]", + "source": 40, + "value": "214" + }, + { + "begin": 2910, + "end": 2916, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2869, + "end": 2917, + "name": "PUSH [tag]", + "source": 40, + "value": "133" + }, + { + "begin": 2869, + "end": 2917, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2869, + "end": 2917, + "name": "tag", + "source": 40, + "value": "214" + }, + { + "begin": 2869, + "end": 2917, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2853, + "end": 2918, + "name": "PUSH [tag]", + "source": 40, + "value": "132" + }, + { + "begin": 2853, + "end": 2918, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 2853, + "end": 2918, + "name": "tag", + "source": 40, + "value": "213" + }, + { + "begin": 2853, + "end": 2918, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2844, + "end": 2918, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 2844, + "end": 2918, + "name": "POP", + "source": 40 + }, + { + "begin": 2941, + "end": 2947, + "name": "DUP3", + "source": 40 + }, + { + "begin": 2934, + "end": 2939, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2927, + "end": 2948, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 2979, + "end": 2983, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 2972, + "end": 2977, + "name": "DUP2", + "source": 40 + }, + { + "begin": 2968, + "end": 2984, + "name": "ADD", + "source": 40 + }, + { + "begin": 3017, + "end": 3020, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3008, + "end": 3014, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3003, + "end": 3006, + "name": "DUP5", + "source": 40 + }, + { + "begin": 2999, + "end": 3015, + "name": "ADD", + "source": 40 + }, + { + "begin": 2996, + "end": 3021, + "name": "GT", + "source": 40 + }, + { + "begin": 2993, + "end": 3105, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 2993, + "end": 3105, + "name": "PUSH [tag]", + "source": 40, + "value": "215" + }, + { + "begin": 2993, + "end": 3105, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3024, + "end": 3103, + "name": "PUSH [tag]", + "source": 40, + "value": "216" + }, + { + "begin": 3024, + "end": 3103, + "name": "PUSH [tag]", + "source": 40, + "value": "129" + }, + { + "begin": 3024, + "end": 3103, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3024, + "end": 3103, + "name": "tag", + "source": 40, + "value": "216" + }, + { + "begin": 3024, + "end": 3103, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2993, + "end": 3105, + "name": "tag", + "source": 40, + "value": "215" + }, + { + "begin": 2993, + "end": 3105, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3114, + "end": 3166, + "name": "PUSH [tag]", + "source": 40, + "value": "217" + }, + { + "begin": 3159, + "end": 3165, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3154, + "end": 3157, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3149, + "end": 3152, + "name": "DUP6", + "source": 40 + }, + { + "begin": 3114, + "end": 3166, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 3114, + "end": 3166, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3114, + "end": 3166, + "name": "tag", + "source": 40, + "value": "217" + }, + { + "begin": 3114, + "end": 3166, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 2834, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "name": "POP", + "source": 40 + }, + { + "begin": 2740, + "end": 3172, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "tag", + "source": 40, + "value": "136" + }, + { + "begin": 3191, + "end": 3544, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3257, + "end": 3262, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3306, + "end": 3309, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3299, + "end": 3303, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 3291, + "end": 3297, + "name": "DUP4", + "source": 40 + }, + { + "begin": 3287, + "end": 3304, + "name": "ADD", + "source": 40 + }, + { + "begin": 3283, + "end": 3310, + "name": "SLT", + "source": 40 + }, + { + "begin": 3273, + "end": 3395, + "name": "PUSH [tag]", + "source": 40, + "value": "219" + }, + { + "begin": 3273, + "end": 3395, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3314, + "end": 3393, + "name": "PUSH [tag]", + "source": 40, + "value": "220" + }, + { + "begin": 3314, + "end": 3393, + "name": "PUSH [tag]", + "source": 40, + "value": "128" + }, + { + "begin": 3314, + "end": 3393, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3314, + "end": 3393, + "name": "tag", + "source": 40, + "value": "220" + }, + { + "begin": 3314, + "end": 3393, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3273, + "end": 3395, + "name": "tag", + "source": 40, + "value": "219" + }, + { + "begin": 3273, + "end": 3395, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3424, + "end": 3430, + "name": "DUP2", + "source": 40 + }, + { + "begin": 3418, + "end": 3431, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 3449, + "end": 3538, + "name": "PUSH [tag]", + "source": 40, + "value": "221" + }, + { + "begin": 3534, + "end": 3537, + "name": "DUP5", + "source": 40 + }, + { + "begin": 3526, + "end": 3532, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3519, + "end": 3523, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 3511, + "end": 3517, + "name": "DUP7", + "source": 40 + }, + { + "begin": 3507, + "end": 3524, + "name": "ADD", + "source": 40 + }, + { + "begin": 3449, + "end": 3538, + "name": "PUSH [tag]", + "source": 40, + "value": "135" + }, + { + "begin": 3449, + "end": 3538, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3449, + "end": 3538, + "name": "tag", + "source": 40, + "value": "221" + }, + { + "begin": 3449, + "end": 3538, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3440, + "end": 3538, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3440, + "end": 3538, + "name": "POP", + "source": 40 + }, + { + "begin": 3263, + "end": 3544, + "name": "POP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "POP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "name": "POP", + "source": 40 + }, + { + "begin": 3191, + "end": 3544, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "tag", + "source": 40, + "value": "2" + }, + { + "begin": 3550, + "end": 4696, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3664, + "end": 3670, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3672, + "end": 3678, + "name": "DUP1", + "source": 40 + }, + { + "begin": 3680, + "end": 3686, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3688, + "end": 3694, + "name": "DUP1", + "source": 40 + }, + { + "begin": 3696, + "end": 3702, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3745, + "end": 3748, + "name": "PUSH", + "source": 40, + "value": "A0" + }, + { + "begin": 3733, + "end": 3742, + "name": "DUP7", + "source": 40 + }, + { + "begin": 3724, + "end": 3731, + "name": "DUP9", + "source": 40 + }, + { + "begin": 3720, + "end": 3743, + "name": "SUB", + "source": 40 + }, + { + "begin": 3716, + "end": 3749, + "name": "SLT", + "source": 40 + }, + { + "begin": 3713, + "end": 3833, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 3713, + "end": 3833, + "name": "PUSH [tag]", + "source": 40, + "value": "223" + }, + { + "begin": 3713, + "end": 3833, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 3752, + "end": 3831, + "name": "PUSH [tag]", + "source": 40, + "value": "224" + }, + { + "begin": 3752, + "end": 3831, + "name": "PUSH [tag]", + "source": 40, + "value": "119" + }, + { + "begin": 3752, + "end": 3831, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3752, + "end": 3831, + "name": "tag", + "source": 40, + "value": "224" + }, + { + "begin": 3752, + "end": 3831, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3713, + "end": 3833, + "name": "tag", + "source": 40, + "value": "223" + }, + { + "begin": 3713, + "end": 3833, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3872, + "end": 3873, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 3897, + "end": 3961, + "name": "PUSH [tag]", + "source": 40, + "value": "225" + }, + { + "begin": 3953, + "end": 3960, + "name": "DUP9", + "source": 40 + }, + { + "begin": 3944, + "end": 3950, + "name": "DUP3", + "source": 40 + }, + { + "begin": 3933, + "end": 3942, + "name": "DUP10", + "source": 40 + }, + { + "begin": 3929, + "end": 3951, + "name": "ADD", + "source": 40 + }, + { + "begin": 3897, + "end": 3961, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 3897, + "end": 3961, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 3897, + "end": 3961, + "name": "tag", + "source": 40, + "value": "225" + }, + { + "begin": 3897, + "end": 3961, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 3887, + "end": 3961, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 3887, + "end": 3961, + "name": "POP", + "source": 40 + }, + { + "begin": 3843, + "end": 3971, + "name": "POP", + "source": 40 + }, + { + "begin": 4010, + "end": 4012, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 4036, + "end": 4100, + "name": "PUSH [tag]", + "source": 40, + "value": "226" + }, + { + "begin": 4092, + "end": 4099, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4083, + "end": 4089, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4072, + "end": 4081, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4068, + "end": 4090, + "name": "ADD", + "source": 40 + }, + { + "begin": 4036, + "end": 4100, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 4036, + "end": 4100, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4036, + "end": 4100, + "name": "tag", + "source": 40, + "value": "226" + }, + { + "begin": 4036, + "end": 4100, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4026, + "end": 4100, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 4026, + "end": 4100, + "name": "POP", + "source": 40 + }, + { + "begin": 3981, + "end": 4110, + "name": "POP", + "source": 40 + }, + { + "begin": 4149, + "end": 4151, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 4175, + "end": 4239, + "name": "PUSH [tag]", + "source": 40, + "value": "227" + }, + { + "begin": 4231, + "end": 4238, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4222, + "end": 4228, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4211, + "end": 4220, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4207, + "end": 4229, + "name": "ADD", + "source": 40 + }, + { + "begin": 4175, + "end": 4239, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 4175, + "end": 4239, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4175, + "end": 4239, + "name": "tag", + "source": 40, + "value": "227" + }, + { + "begin": 4175, + "end": 4239, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4165, + "end": 4239, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 4165, + "end": 4239, + "name": "POP", + "source": 40 + }, + { + "begin": 4120, + "end": 4249, + "name": "POP", + "source": 40 + }, + { + "begin": 4288, + "end": 4290, + "name": "PUSH", + "source": 40, + "value": "60" + }, + { + "begin": 4314, + "end": 4377, + "name": "PUSH [tag]", + "source": 40, + "value": "228" + }, + { + "begin": 4369, + "end": 4376, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4360, + "end": 4366, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4349, + "end": 4358, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4345, + "end": 4367, + "name": "ADD", + "source": 40 + }, + { + "begin": 4314, + "end": 4377, + "name": "PUSH [tag]", + "source": 40, + "value": "127" + }, + { + "begin": 4314, + "end": 4377, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4314, + "end": 4377, + "name": "tag", + "source": 40, + "value": "228" + }, + { + "begin": 4314, + "end": 4377, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4304, + "end": 4377, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4304, + "end": 4377, + "name": "POP", + "source": 40 + }, + { + "begin": 4259, + "end": 4387, + "name": "POP", + "source": 40 + }, + { + "begin": 4447, + "end": 4450, + "name": "PUSH", + "source": 40, + "value": "80" + }, + { + "begin": 4436, + "end": 4445, + "name": "DUP7", + "source": 40 + }, + { + "begin": 4432, + "end": 4451, + "name": "ADD", + "source": 40 + }, + { + "begin": 4426, + "end": 4452, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 4479, + "end": 4497, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 4471, + "end": 4477, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4468, + "end": 4498, + "name": "GT", + "source": 40 + }, + { + "begin": 4465, + "end": 4582, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 4465, + "end": 4582, + "name": "PUSH [tag]", + "source": 40, + "value": "229" + }, + { + "begin": 4465, + "end": 4582, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 4501, + "end": 4580, + "name": "PUSH [tag]", + "source": 40, + "value": "230" + }, + { + "begin": 4501, + "end": 4580, + "name": "PUSH [tag]", + "source": 40, + "value": "120" + }, + { + "begin": 4501, + "end": 4580, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4501, + "end": 4580, + "name": "tag", + "source": 40, + "value": "230" + }, + { + "begin": 4501, + "end": 4580, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4465, + "end": 4582, + "name": "tag", + "source": 40, + "value": "229" + }, + { + "begin": 4465, + "end": 4582, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4606, + "end": 4679, + "name": "PUSH [tag]", + "source": 40, + "value": "231" + }, + { + "begin": 4671, + "end": 4678, + "name": "DUP9", + "source": 40 + }, + { + "begin": 4662, + "end": 4668, + "name": "DUP3", + "source": 40 + }, + { + "begin": 4651, + "end": 4660, + "name": "DUP10", + "source": 40 + }, + { + "begin": 4647, + "end": 4669, + "name": "ADD", + "source": 40 + }, + { + "begin": 4606, + "end": 4679, + "name": "PUSH [tag]", + "source": 40, + "value": "136" + }, + { + "begin": 4606, + "end": 4679, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4606, + "end": 4679, + "name": "tag", + "source": 40, + "value": "231" + }, + { + "begin": 4606, + "end": 4679, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4596, + "end": 4679, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4596, + "end": 4679, + "name": "POP", + "source": 40 + }, + { + "begin": 4397, + "end": 4689, + "name": "POP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "POP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "name": "POP", + "source": 40 + }, + { + "begin": 3550, + "end": 4696, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "tag", + "source": 40, + "value": "137" + }, + { + "begin": 4702, + "end": 4800, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4753, + "end": 4759, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4787, + "end": 4792, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4781, + "end": 4793, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 4771, + "end": 4793, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4771, + "end": 4793, + "name": "POP", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "name": "POP", + "source": 40 + }, + { + "begin": 4702, + "end": 4800, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "tag", + "source": 40, + "value": "138" + }, + { + "begin": 4806, + "end": 4953, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 4907, + "end": 4918, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 4944, + "end": 4947, + "name": "DUP2", + "source": 40 + }, + { + "begin": 4929, + "end": 4947, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 4929, + "end": 4947, + "name": "POP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "POP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "name": "POP", + "source": 40 + }, + { + "begin": 4806, + "end": 4953, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "tag", + "source": 40, + "value": "139" + }, + { + "begin": 4959, + "end": 5345, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5063, + "end": 5066, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5091, + "end": 5129, + "name": "PUSH [tag]", + "source": 40, + "value": "235" + }, + { + "begin": 5123, + "end": 5128, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5091, + "end": 5129, + "name": "PUSH [tag]", + "source": 40, + "value": "137" + }, + { + "begin": 5091, + "end": 5129, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5091, + "end": 5129, + "name": "tag", + "source": 40, + "value": "235" + }, + { + "begin": 5091, + "end": 5129, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5145, + "end": 5233, + "name": "PUSH [tag]", + "source": 40, + "value": "236" + }, + { + "begin": 5226, + "end": 5232, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5221, + "end": 5224, + "name": "DUP6", + "source": 40 + }, + { + "begin": 5145, + "end": 5233, + "name": "PUSH [tag]", + "source": 40, + "value": "138" + }, + { + "begin": 5145, + "end": 5233, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5145, + "end": 5233, + "name": "tag", + "source": 40, + "value": "236" + }, + { + "begin": 5145, + "end": 5233, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5138, + "end": 5233, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 5138, + "end": 5233, + "name": "POP", + "source": 40 + }, + { + "begin": 5242, + "end": 5307, + "name": "PUSH [tag]", + "source": 40, + "value": "237" + }, + { + "begin": 5300, + "end": 5306, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5295, + "end": 5298, + "name": "DUP6", + "source": 40 + }, + { + "begin": 5288, + "end": 5292, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 5281, + "end": 5286, + "name": "DUP7", + "source": 40 + }, + { + "begin": 5277, + "end": 5293, + "name": "ADD", + "source": 40 + }, + { + "begin": 5242, + "end": 5307, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 5242, + "end": 5307, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5242, + "end": 5307, + "name": "tag", + "source": 40, + "value": "237" + }, + { + "begin": 5242, + "end": 5307, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5332, + "end": 5338, + "name": "DUP1", + "source": 40 + }, + { + "begin": 5327, + "end": 5330, + "name": "DUP5", + "source": 40 + }, + { + "begin": 5323, + "end": 5339, + "name": "ADD", + "source": 40 + }, + { + "begin": 5316, + "end": 5339, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5316, + "end": 5339, + "name": "POP", + "source": 40 + }, + { + "begin": 5067, + "end": 5345, + "name": "POP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "POP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "name": "POP", + "source": 40 + }, + { + "begin": 4959, + "end": 5345, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "tag", + "source": 40, + "value": "10" + }, + { + "begin": 5351, + "end": 5622, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5481, + "end": 5484, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5503, + "end": 5596, + "name": "PUSH [tag]", + "source": 40, + "value": "239" + }, + { + "begin": 5592, + "end": 5595, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5583, + "end": 5589, + "name": "DUP5", + "source": 40 + }, + { + "begin": 5503, + "end": 5596, + "name": "PUSH [tag]", + "source": 40, + "value": "139" + }, + { + "begin": 5503, + "end": 5596, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5503, + "end": 5596, + "name": "tag", + "source": 40, + "value": "239" + }, + { + "begin": 5503, + "end": 5596, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5496, + "end": 5596, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5496, + "end": 5596, + "name": "POP", + "source": 40 + }, + { + "begin": 5613, + "end": 5616, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5606, + "end": 5616, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5606, + "end": 5616, + "name": "POP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "POP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "name": "POP", + "source": 40 + }, + { + "begin": 5351, + "end": 5622, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "tag", + "source": 40, + "value": "140" + }, + { + "begin": 5628, + "end": 5936, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5690, + "end": 5694, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 5780, + "end": 5798, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 5772, + "end": 5778, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5769, + "end": 5799, + "name": "GT", + "source": 40 + }, + { + "begin": 5766, + "end": 5822, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 5766, + "end": 5822, + "name": "PUSH [tag]", + "source": 40, + "value": "241" + }, + { + "begin": 5766, + "end": 5822, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 5802, + "end": 5820, + "name": "PUSH [tag]", + "source": 40, + "value": "242" + }, + { + "begin": 5802, + "end": 5820, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 5802, + "end": 5820, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5802, + "end": 5820, + "name": "tag", + "source": 40, + "value": "242" + }, + { + "begin": 5802, + "end": 5820, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5766, + "end": 5822, + "name": "tag", + "source": 40, + "value": "241" + }, + { + "begin": 5766, + "end": 5822, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5840, + "end": 5869, + "name": "PUSH [tag]", + "source": 40, + "value": "243" + }, + { + "begin": 5862, + "end": 5868, + "name": "DUP3", + "source": 40 + }, + { + "begin": 5840, + "end": 5869, + "name": "PUSH [tag]", + "source": 40, + "value": "130" + }, + { + "begin": 5840, + "end": 5869, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5840, + "end": 5869, + "name": "tag", + "source": 40, + "value": "243" + }, + { + "begin": 5840, + "end": 5869, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 5832, + "end": 5869, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5832, + "end": 5869, + "name": "POP", + "source": 40 + }, + { + "begin": 5924, + "end": 5928, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 5918, + "end": 5922, + "name": "DUP2", + "source": 40 + }, + { + "begin": 5914, + "end": 5929, + "name": "ADD", + "source": 40 + }, + { + "begin": 5906, + "end": 5929, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5906, + "end": 5929, + "name": "POP", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "name": "POP", + "source": 40 + }, + { + "begin": 5628, + "end": 5936, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "tag", + "source": 40, + "value": "141" + }, + { + "begin": 5942, + "end": 6376, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6031, + "end": 6036, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6056, + "end": 6122, + "name": "PUSH [tag]", + "source": 40, + "value": "245" + }, + { + "begin": 6072, + "end": 6121, + "name": "PUSH [tag]", + "source": 40, + "value": "246" + }, + { + "begin": 6114, + "end": 6120, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6072, + "end": 6121, + "name": "PUSH [tag]", + "source": 40, + "value": "140" + }, + { + "begin": 6072, + "end": 6121, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6072, + "end": 6121, + "name": "tag", + "source": 40, + "value": "246" + }, + { + "begin": 6072, + "end": 6121, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6056, + "end": 6122, + "name": "PUSH [tag]", + "source": 40, + "value": "132" + }, + { + "begin": 6056, + "end": 6122, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6056, + "end": 6122, + "name": "tag", + "source": 40, + "value": "245" + }, + { + "begin": 6056, + "end": 6122, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6047, + "end": 6122, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 6047, + "end": 6122, + "name": "POP", + "source": 40 + }, + { + "begin": 6145, + "end": 6151, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6138, + "end": 6143, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6131, + "end": 6152, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 6183, + "end": 6187, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 6176, + "end": 6181, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6172, + "end": 6188, + "name": "ADD", + "source": 40 + }, + { + "begin": 6221, + "end": 6224, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6212, + "end": 6218, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6207, + "end": 6210, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6203, + "end": 6219, + "name": "ADD", + "source": 40 + }, + { + "begin": 6200, + "end": 6225, + "name": "GT", + "source": 40 + }, + { + "begin": 6197, + "end": 6309, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 6197, + "end": 6309, + "name": "PUSH [tag]", + "source": 40, + "value": "247" + }, + { + "begin": 6197, + "end": 6309, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6228, + "end": 6307, + "name": "PUSH [tag]", + "source": 40, + "value": "248" + }, + { + "begin": 6228, + "end": 6307, + "name": "PUSH [tag]", + "source": 40, + "value": "129" + }, + { + "begin": 6228, + "end": 6307, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6228, + "end": 6307, + "name": "tag", + "source": 40, + "value": "248" + }, + { + "begin": 6228, + "end": 6307, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6197, + "end": 6309, + "name": "tag", + "source": 40, + "value": "247" + }, + { + "begin": 6197, + "end": 6309, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6318, + "end": 6370, + "name": "PUSH [tag]", + "source": 40, + "value": "249" + }, + { + "begin": 6363, + "end": 6369, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6358, + "end": 6361, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6353, + "end": 6356, + "name": "DUP6", + "source": 40 + }, + { + "begin": 6318, + "end": 6370, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 6318, + "end": 6370, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6318, + "end": 6370, + "name": "tag", + "source": 40, + "value": "249" + }, + { + "begin": 6318, + "end": 6370, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6037, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "name": "POP", + "source": 40 + }, + { + "begin": 5942, + "end": 6376, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "tag", + "source": 40, + "value": "142" + }, + { + "begin": 6396, + "end": 6751, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6463, + "end": 6468, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6512, + "end": 6515, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6505, + "end": 6509, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 6497, + "end": 6503, + "name": "DUP4", + "source": 40 + }, + { + "begin": 6493, + "end": 6510, + "name": "ADD", + "source": 40 + }, + { + "begin": 6489, + "end": 6516, + "name": "SLT", + "source": 40 + }, + { + "begin": 6479, + "end": 6601, + "name": "PUSH [tag]", + "source": 40, + "value": "251" + }, + { + "begin": 6479, + "end": 6601, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6520, + "end": 6599, + "name": "PUSH [tag]", + "source": 40, + "value": "252" + }, + { + "begin": 6520, + "end": 6599, + "name": "PUSH [tag]", + "source": 40, + "value": "128" + }, + { + "begin": 6520, + "end": 6599, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6520, + "end": 6599, + "name": "tag", + "source": 40, + "value": "252" + }, + { + "begin": 6520, + "end": 6599, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6479, + "end": 6601, + "name": "tag", + "source": 40, + "value": "251" + }, + { + "begin": 6479, + "end": 6601, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6630, + "end": 6636, + "name": "DUP2", + "source": 40 + }, + { + "begin": 6624, + "end": 6637, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 6655, + "end": 6745, + "name": "PUSH [tag]", + "source": 40, + "value": "253" + }, + { + "begin": 6741, + "end": 6744, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6733, + "end": 6739, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6726, + "end": 6730, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 6718, + "end": 6724, + "name": "DUP7", + "source": 40 + }, + { + "begin": 6714, + "end": 6731, + "name": "ADD", + "source": 40 + }, + { + "begin": 6655, + "end": 6745, + "name": "PUSH [tag]", + "source": 40, + "value": "141" + }, + { + "begin": 6655, + "end": 6745, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6655, + "end": 6745, + "name": "tag", + "source": 40, + "value": "253" + }, + { + "begin": 6655, + "end": 6745, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6646, + "end": 6745, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6646, + "end": 6745, + "name": "POP", + "source": 40 + }, + { + "begin": 6469, + "end": 6751, + "name": "POP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "POP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "name": "POP", + "source": 40 + }, + { + "begin": 6396, + "end": 6751, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "tag", + "source": 40, + "value": "15" + }, + { + "begin": 6757, + "end": 7281, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6837, + "end": 6843, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 6886, + "end": 6888, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 6874, + "end": 6883, + "name": "DUP3", + "source": 40 + }, + { + "begin": 6865, + "end": 6872, + "name": "DUP5", + "source": 40 + }, + { + "begin": 6861, + "end": 6884, + "name": "SUB", + "source": 40 + }, + { + "begin": 6857, + "end": 6889, + "name": "SLT", + "source": 40 + }, + { + "begin": 6854, + "end": 6973, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 6854, + "end": 6973, + "name": "PUSH [tag]", + "source": 40, + "value": "255" + }, + { + "begin": 6854, + "end": 6973, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 6892, + "end": 6971, + "name": "PUSH [tag]", + "source": 40, + "value": "256" + }, + { + "begin": 6892, + "end": 6971, + "name": "PUSH [tag]", + "source": 40, + "value": "119" + }, + { + "begin": 6892, + "end": 6971, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 6892, + "end": 6971, + "name": "tag", + "source": 40, + "value": "256" + }, + { + "begin": 6892, + "end": 6971, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 6854, + "end": 6973, + "name": "tag", + "source": 40, + "value": "255" + }, + { + "begin": 6854, + "end": 6973, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7033, + "end": 7034, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7022, + "end": 7031, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7018, + "end": 7035, + "name": "ADD", + "source": 40 + }, + { + "begin": 7012, + "end": 7036, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 7063, + "end": 7081, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 7055, + "end": 7061, + "name": "DUP2", + "source": 40 + }, + { + "begin": 7052, + "end": 7082, + "name": "GT", + "source": 40 + }, + { + "begin": 7049, + "end": 7166, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 7049, + "end": 7166, + "name": "PUSH [tag]", + "source": 40, + "value": "257" + }, + { + "begin": 7049, + "end": 7166, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 7085, + "end": 7164, + "name": "PUSH [tag]", + "source": 40, + "value": "258" + }, + { + "begin": 7085, + "end": 7164, + "name": "PUSH [tag]", + "source": 40, + "value": "120" + }, + { + "begin": 7085, + "end": 7164, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7085, + "end": 7164, + "name": "tag", + "source": 40, + "value": "258" + }, + { + "begin": 7085, + "end": 7164, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7049, + "end": 7166, + "name": "tag", + "source": 40, + "value": "257" + }, + { + "begin": 7049, + "end": 7166, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7190, + "end": 7264, + "name": "PUSH [tag]", + "source": 40, + "value": "259" + }, + { + "begin": 7256, + "end": 7263, + "name": "DUP5", + "source": 40 + }, + { + "begin": 7247, + "end": 7253, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7236, + "end": 7245, + "name": "DUP6", + "source": 40 + }, + { + "begin": 7232, + "end": 7254, + "name": "ADD", + "source": 40 + }, + { + "begin": 7190, + "end": 7264, + "name": "PUSH [tag]", + "source": 40, + "value": "142" + }, + { + "begin": 7190, + "end": 7264, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7190, + "end": 7264, + "name": "tag", + "source": 40, + "value": "259" + }, + { + "begin": 7190, + "end": 7264, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7180, + "end": 7264, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7180, + "end": 7264, + "name": "POP", + "source": 40 + }, + { + "begin": 6983, + "end": 7274, + "name": "POP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "POP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "name": "POP", + "source": 40 + }, + { + "begin": 6757, + "end": 7281, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "tag", + "source": 40, + "value": "143" + }, + { + "begin": 7287, + "end": 7456, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7371, + "end": 7382, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7405, + "end": 7411, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7400, + "end": 7403, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7393, + "end": 7412, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 7445, + "end": 7449, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 7440, + "end": 7443, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7436, + "end": 7450, + "name": "ADD", + "source": 40 + }, + { + "begin": 7421, + "end": 7450, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7421, + "end": 7450, + "name": "POP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "POP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "name": "POP", + "source": 40 + }, + { + "begin": 7287, + "end": 7456, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7462, + "end": 7695, + "name": "tag", + "source": 40, + "value": "144" + }, + { + "begin": 7462, + "end": 7695, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7602, + "end": 7636, + "name": "PUSH", + "source": 40, + "value": "4C4250616972426561636F6E50726F78793A204661696C656420746F20676574" + }, + { + "begin": 7598, + "end": 7599, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7590, + "end": 7596, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7586, + "end": 7600, + "name": "ADD", + "source": 40 + }, + { + "begin": 7579, + "end": 7637, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 7671, + "end": 7687, + "name": "PUSH", + "source": 40, + "value": "20746F6B656E2073796D626F6C73000000000000000000000000000000000000" + }, + { + "begin": 7666, + "end": 7668, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 7658, + "end": 7664, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7654, + "end": 7669, + "name": "ADD", + "source": 40 + }, + { + "begin": 7647, + "end": 7688, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 7462, + "end": 7695, + "name": "POP", + "source": 40 + }, + { + "begin": 7462, + "end": 7695, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "tag", + "source": 40, + "value": "145" + }, + { + "begin": 7701, + "end": 8067, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7843, + "end": 7846, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 7864, + "end": 7931, + "name": "PUSH [tag]", + "source": 40, + "value": "263" + }, + { + "begin": 7928, + "end": 7930, + "name": "PUSH", + "source": 40, + "value": "2E" + }, + { + "begin": 7923, + "end": 7926, + "name": "DUP4", + "source": 40 + }, + { + "begin": 7864, + "end": 7931, + "name": "PUSH [tag]", + "source": 40, + "value": "143" + }, + { + "begin": 7864, + "end": 7931, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7864, + "end": 7931, + "name": "tag", + "source": 40, + "value": "263" + }, + { + "begin": 7864, + "end": 7931, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 7857, + "end": 7931, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7857, + "end": 7931, + "name": "POP", + "source": 40 + }, + { + "begin": 7940, + "end": 8033, + "name": "PUSH [tag]", + "source": 40, + "value": "264" + }, + { + "begin": 8029, + "end": 8032, + "name": "DUP3", + "source": 40 + }, + { + "begin": 7940, + "end": 8033, + "name": "PUSH [tag]", + "source": 40, + "value": "144" + }, + { + "begin": 7940, + "end": 8033, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 7940, + "end": 8033, + "name": "tag", + "source": 40, + "value": "264" + }, + { + "begin": 7940, + "end": 8033, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8058, + "end": 8060, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 8053, + "end": 8056, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8049, + "end": 8061, + "name": "ADD", + "source": 40 + }, + { + "begin": 8042, + "end": 8061, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8042, + "end": 8061, + "name": "POP", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "name": "POP", + "source": 40 + }, + { + "begin": 7701, + "end": 8067, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "tag", + "source": 40, + "value": "24" + }, + { + "begin": 8073, + "end": 8492, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8239, + "end": 8243, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8277, + "end": 8279, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 8266, + "end": 8275, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8262, + "end": 8280, + "name": "ADD", + "source": 40 + }, + { + "begin": 8254, + "end": 8280, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8254, + "end": 8280, + "name": "POP", + "source": 40 + }, + { + "begin": 8326, + "end": 8335, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8320, + "end": 8324, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8316, + "end": 8336, + "name": "SUB", + "source": 40 + }, + { + "begin": 8312, + "end": 8313, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8301, + "end": 8310, + "name": "DUP4", + "source": 40 + }, + { + "begin": 8297, + "end": 8314, + "name": "ADD", + "source": 40 + }, + { + "begin": 8290, + "end": 8337, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 8354, + "end": 8485, + "name": "PUSH [tag]", + "source": 40, + "value": "266" + }, + { + "begin": 8480, + "end": 8484, + "name": "DUP2", + "source": 40 + }, + { + "begin": 8354, + "end": 8485, + "name": "PUSH [tag]", + "source": 40, + "value": "145" + }, + { + "begin": 8354, + "end": 8485, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8354, + "end": 8485, + "name": "tag", + "source": 40, + "value": "266" + }, + { + "begin": 8354, + "end": 8485, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8346, + "end": 8485, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8346, + "end": 8485, + "name": "POP", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "name": "POP", + "source": 40 + }, + { + "begin": 8073, + "end": 8492, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8498, + "end": 8725, + "name": "tag", + "source": 40, + "value": "146" + }, + { + "begin": 8498, + "end": 8725, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8638, + "end": 8672, + "name": "PUSH", + "source": 40, + "value": "4C4250616972426561636F6E50726F78793A20496E76616C696420746F6B656E" + }, + { + "begin": 8634, + "end": 8635, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8626, + "end": 8632, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8622, + "end": 8636, + "name": "ADD", + "source": 40 + }, + { + "begin": 8615, + "end": 8673, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 8707, + "end": 8717, + "name": "PUSH", + "source": 40, + "value": "2073796D626F6C73000000000000000000000000000000000000000000000000" + }, + { + "begin": 8702, + "end": 8704, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 8694, + "end": 8700, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8690, + "end": 8705, + "name": "ADD", + "source": 40 + }, + { + "begin": 8683, + "end": 8718, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 8498, + "end": 8725, + "name": "POP", + "source": 40 + }, + { + "begin": 8498, + "end": 8725, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "tag", + "source": 40, + "value": "147" + }, + { + "begin": 8731, + "end": 9097, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8873, + "end": 8876, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 8894, + "end": 8961, + "name": "PUSH [tag]", + "source": 40, + "value": "269" + }, + { + "begin": 8958, + "end": 8960, + "name": "PUSH", + "source": 40, + "value": "28" + }, + { + "begin": 8953, + "end": 8956, + "name": "DUP4", + "source": 40 + }, + { + "begin": 8894, + "end": 8961, + "name": "PUSH [tag]", + "source": 40, + "value": "143" + }, + { + "begin": 8894, + "end": 8961, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8894, + "end": 8961, + "name": "tag", + "source": 40, + "value": "269" + }, + { + "begin": 8894, + "end": 8961, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 8887, + "end": 8961, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8887, + "end": 8961, + "name": "POP", + "source": 40 + }, + { + "begin": 8970, + "end": 9063, + "name": "PUSH [tag]", + "source": 40, + "value": "270" + }, + { + "begin": 9059, + "end": 9062, + "name": "DUP3", + "source": 40 + }, + { + "begin": 8970, + "end": 9063, + "name": "PUSH [tag]", + "source": 40, + "value": "146" + }, + { + "begin": 8970, + "end": 9063, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 8970, + "end": 9063, + "name": "tag", + "source": 40, + "value": "270" + }, + { + "begin": 8970, + "end": 9063, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9088, + "end": 9090, + "name": "PUSH", + "source": 40, + "value": "40" + }, + { + "begin": 9083, + "end": 9086, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9079, + "end": 9091, + "name": "ADD", + "source": 40 + }, + { + "begin": 9072, + "end": 9091, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9072, + "end": 9091, + "name": "POP", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "name": "POP", + "source": 40 + }, + { + "begin": 8731, + "end": 9097, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "tag", + "source": 40, + "value": "28" + }, + { + "begin": 9103, + "end": 9522, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9269, + "end": 9273, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9307, + "end": 9309, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 9296, + "end": 9305, + "name": "DUP3", + "source": 40 + }, + { + "begin": 9292, + "end": 9310, + "name": "ADD", + "source": 40 + }, + { + "begin": 9284, + "end": 9310, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9284, + "end": 9310, + "name": "POP", + "source": 40 + }, + { + "begin": 9356, + "end": 9365, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9350, + "end": 9354, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9346, + "end": 9366, + "name": "SUB", + "source": 40 + }, + { + "begin": 9342, + "end": 9343, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9331, + "end": 9340, + "name": "DUP4", + "source": 40 + }, + { + "begin": 9327, + "end": 9344, + "name": "ADD", + "source": 40 + }, + { + "begin": 9320, + "end": 9367, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 9384, + "end": 9515, + "name": "PUSH [tag]", + "source": 40, + "value": "272" + }, + { + "begin": 9510, + "end": 9514, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9384, + "end": 9515, + "name": "PUSH [tag]", + "source": 40, + "value": "147" + }, + { + "begin": 9384, + "end": 9515, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9384, + "end": 9515, + "name": "tag", + "source": 40, + "value": "272" + }, + { + "begin": 9384, + "end": 9515, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9376, + "end": 9515, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9376, + "end": 9515, + "name": "POP", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "name": "POP", + "source": 40 + }, + { + "begin": 9103, + "end": 9522, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9528, + "end": 9709, + "name": "tag", + "source": 40, + "value": "148" + }, + { + "begin": 9528, + "end": 9709, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9696, + "end": 9702, + "name": "PUSH", + "source": 40, + "value": "4C42545F00000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 9691, + "end": 9694, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9684, + "end": 9703, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 9528, + "end": 9709, + "name": "POP", + "source": 40 + }, + { + "begin": 9528, + "end": 9709, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "tag", + "source": 40, + "value": "149" + }, + { + "begin": 9715, + "end": 9814, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9767, + "end": 9773, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9801, + "end": 9806, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9795, + "end": 9807, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 9785, + "end": 9807, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9785, + "end": 9807, + "name": "POP", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "name": "POP", + "source": 40 + }, + { + "begin": 9715, + "end": 9814, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "tag", + "source": 40, + "value": "150" + }, + { + "begin": 9820, + "end": 9968, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 9922, + "end": 9933, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 9959, + "end": 9962, + "name": "DUP2", + "source": 40 + }, + { + "begin": 9944, + "end": 9962, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 9944, + "end": 9962, + "name": "POP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "POP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "name": "POP", + "source": 40 + }, + { + "begin": 9820, + "end": 9968, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "tag", + "source": 40, + "value": "151" + }, + { + "begin": 9974, + "end": 10364, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10080, + "end": 10083, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 10108, + "end": 10147, + "name": "PUSH [tag]", + "source": 40, + "value": "277" + }, + { + "begin": 10141, + "end": 10146, + "name": "DUP3", + "source": 40 + }, + { + "begin": 10108, + "end": 10147, + "name": "PUSH [tag]", + "source": 40, + "value": "149" + }, + { + "begin": 10108, + "end": 10147, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10108, + "end": 10147, + "name": "tag", + "source": 40, + "value": "277" + }, + { + "begin": 10108, + "end": 10147, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10163, + "end": 10252, + "name": "PUSH [tag]", + "source": 40, + "value": "278" + }, + { + "begin": 10245, + "end": 10251, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10240, + "end": 10243, + "name": "DUP6", + "source": 40 + }, + { + "begin": 10163, + "end": 10252, + "name": "PUSH [tag]", + "source": 40, + "value": "150" + }, + { + "begin": 10163, + "end": 10252, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10163, + "end": 10252, + "name": "tag", + "source": 40, + "value": "278" + }, + { + "begin": 10163, + "end": 10252, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10156, + "end": 10252, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 10156, + "end": 10252, + "name": "POP", + "source": 40 + }, + { + "begin": 10261, + "end": 10326, + "name": "PUSH [tag]", + "source": 40, + "value": "279" + }, + { + "begin": 10319, + "end": 10325, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10314, + "end": 10317, + "name": "DUP6", + "source": 40 + }, + { + "begin": 10307, + "end": 10311, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 10300, + "end": 10305, + "name": "DUP7", + "source": 40 + }, + { + "begin": 10296, + "end": 10312, + "name": "ADD", + "source": 40 + }, + { + "begin": 10261, + "end": 10326, + "name": "PUSH [tag]", + "source": 40, + "value": "134" + }, + { + "begin": 10261, + "end": 10326, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10261, + "end": 10326, + "name": "tag", + "source": 40, + "value": "279" + }, + { + "begin": 10261, + "end": 10326, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10351, + "end": 10357, + "name": "DUP1", + "source": 40 + }, + { + "begin": 10346, + "end": 10349, + "name": "DUP5", + "source": 40 + }, + { + "begin": 10342, + "end": 10358, + "name": "ADD", + "source": 40 + }, + { + "begin": 10335, + "end": 10358, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 10335, + "end": 10358, + "name": "POP", + "source": 40 + }, + { + "begin": 10084, + "end": 10364, + "name": "POP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "POP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "name": "POP", + "source": 40 + }, + { + "begin": 9974, + "end": 10364, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10370, + "end": 10548, + "name": "tag", + "source": 40, + "value": "152" + }, + { + "begin": 10370, + "end": 10548, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 10538, + "end": 10541, + "name": "PUSH", + "source": 40, + "value": "2F00000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 10533, + "end": 10536, + "name": "DUP2", + "source": 40 + }, + { + "begin": 10526, + "end": 10542, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 10370, + "end": 10548, + "name": "POP", + "source": 40 + }, + { + "begin": 10370, + "end": 10548, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "tag", + "source": 40, + "value": "37" + }, + { + "begin": 10554, + "end": 11941, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11052, + "end": 11055, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11067, + "end": 11204, + "name": "PUSH [tag]", + "source": 40, + "value": "282" + }, + { + "begin": 11200, + "end": 11203, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11067, + "end": 11204, + "name": "PUSH [tag]", + "source": 40, + "value": "148" + }, + { + "begin": 11067, + "end": 11204, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11067, + "end": 11204, + "name": "tag", + "source": 40, + "value": "282" + }, + { + "begin": 11067, + "end": 11204, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11229, + "end": 11230, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 11224, + "end": 11227, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11220, + "end": 11231, + "name": "ADD", + "source": 40 + }, + { + "begin": 11213, + "end": 11231, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11213, + "end": 11231, + "name": "POP", + "source": 40 + }, + { + "begin": 11248, + "end": 11343, + "name": "PUSH [tag]", + "source": 40, + "value": "283" + }, + { + "begin": 11339, + "end": 11342, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11330, + "end": 11336, + "name": "DUP7", + "source": 40 + }, + { + "begin": 11248, + "end": 11343, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 11248, + "end": 11343, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11248, + "end": 11343, + "name": "tag", + "source": 40, + "value": "283" + }, + { + "begin": 11248, + "end": 11343, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11241, + "end": 11343, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11241, + "end": 11343, + "name": "POP", + "source": 40 + }, + { + "begin": 11353, + "end": 11490, + "name": "PUSH [tag]", + "source": 40, + "value": "284" + }, + { + "begin": 11486, + "end": 11489, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11353, + "end": 11490, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 11353, + "end": 11490, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11353, + "end": 11490, + "name": "tag", + "source": 40, + "value": "284" + }, + { + "begin": 11353, + "end": 11490, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11515, + "end": 11516, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 11510, + "end": 11513, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11506, + "end": 11517, + "name": "ADD", + "source": 40 + }, + { + "begin": 11499, + "end": 11517, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11499, + "end": 11517, + "name": "POP", + "source": 40 + }, + { + "begin": 11534, + "end": 11629, + "name": "PUSH [tag]", + "source": 40, + "value": "285" + }, + { + "begin": 11625, + "end": 11628, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11616, + "end": 11622, + "name": "DUP6", + "source": 40 + }, + { + "begin": 11534, + "end": 11629, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 11534, + "end": 11629, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11534, + "end": 11629, + "name": "tag", + "source": 40, + "value": "285" + }, + { + "begin": 11534, + "end": 11629, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11527, + "end": 11629, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11527, + "end": 11629, + "name": "POP", + "source": 40 + }, + { + "begin": 11639, + "end": 11776, + "name": "PUSH [tag]", + "source": 40, + "value": "286" + }, + { + "begin": 11772, + "end": 11775, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11639, + "end": 11776, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 11639, + "end": 11776, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11639, + "end": 11776, + "name": "tag", + "source": 40, + "value": "286" + }, + { + "begin": 11639, + "end": 11776, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11801, + "end": 11802, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 11796, + "end": 11799, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11792, + "end": 11803, + "name": "ADD", + "source": 40 + }, + { + "begin": 11785, + "end": 11803, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11785, + "end": 11803, + "name": "POP", + "source": 40 + }, + { + "begin": 11820, + "end": 11915, + "name": "PUSH [tag]", + "source": 40, + "value": "287" + }, + { + "begin": 11911, + "end": 11914, + "name": "DUP3", + "source": 40 + }, + { + "begin": 11902, + "end": 11908, + "name": "DUP5", + "source": 40 + }, + { + "begin": 11820, + "end": 11915, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 11820, + "end": 11915, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11820, + "end": 11915, + "name": "tag", + "source": 40, + "value": "287" + }, + { + "begin": 11820, + "end": 11915, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11813, + "end": 11915, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 11813, + "end": 11915, + "name": "POP", + "source": 40 + }, + { + "begin": 11932, + "end": 11935, + "name": "DUP2", + "source": 40 + }, + { + "begin": 11925, + "end": 11935, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 11925, + "end": 11935, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "name": "POP", + "source": 40 + }, + { + "begin": 10554, + "end": 11941, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 11947, + "end": 12127, + "name": "tag", + "source": 40, + "value": "153" + }, + { + "begin": 11947, + "end": 12127, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 11995, + "end": 12072, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 11992, + "end": 11993, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 11985, + "end": 12073, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 12092, + "end": 12096, + "name": "PUSH", + "source": 40, + "value": "22" + }, + { + "begin": 12089, + "end": 12090, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 12082, + "end": 12097, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 12116, + "end": 12120, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 12113, + "end": 12114, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12106, + "end": 12121, + "name": "REVERT", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "tag", + "source": 40, + "value": "154" + }, + { + "begin": 12133, + "end": 12453, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12177, + "end": 12183, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12214, + "end": 12215, + "name": "PUSH", + "source": 40, + "value": "2" + }, + { + "begin": 12208, + "end": 12212, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12204, + "end": 12216, + "name": "DIV", + "source": 40 + }, + { + "begin": 12194, + "end": 12216, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12194, + "end": 12216, + "name": "POP", + "source": 40 + }, + { + "begin": 12261, + "end": 12262, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 12255, + "end": 12259, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12251, + "end": 12263, + "name": "AND", + "source": 40 + }, + { + "begin": 12282, + "end": 12300, + "name": "DUP1", + "source": 40 + }, + { + "begin": 12272, + "end": 12353, + "name": "PUSH [tag]", + "source": 40, + "value": "290" + }, + { + "begin": 12272, + "end": 12353, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 12338, + "end": 12342, + "name": "PUSH", + "source": 40, + "value": "7F" + }, + { + "begin": 12330, + "end": 12336, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12326, + "end": 12343, + "name": "AND", + "source": 40 + }, + { + "begin": 12316, + "end": 12343, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12316, + "end": 12343, + "name": "POP", + "source": 40 + }, + { + "begin": 12272, + "end": 12353, + "name": "tag", + "source": 40, + "value": "290" + }, + { + "begin": 12272, + "end": 12353, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12400, + "end": 12402, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 12392, + "end": 12398, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12389, + "end": 12403, + "name": "LT", + "source": 40 + }, + { + "begin": 12369, + "end": 12387, + "name": "DUP2", + "source": 40 + }, + { + "begin": 12366, + "end": 12404, + "name": "SUB", + "source": 40 + }, + { + "begin": 12363, + "end": 12447, + "name": "PUSH [tag]", + "source": 40, + "value": "291" + }, + { + "begin": 12363, + "end": 12447, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 12419, + "end": 12437, + "name": "PUSH [tag]", + "source": 40, + "value": "292" + }, + { + "begin": 12419, + "end": 12437, + "name": "PUSH [tag]", + "source": 40, + "value": "153" + }, + { + "begin": 12419, + "end": 12437, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12419, + "end": 12437, + "name": "tag", + "source": 40, + "value": "292" + }, + { + "begin": 12419, + "end": 12437, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12363, + "end": 12447, + "name": "tag", + "source": 40, + "value": "291" + }, + { + "begin": 12363, + "end": 12447, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12184, + "end": 12453, + "name": "POP", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "name": "POP", + "source": 40 + }, + { + "begin": 12133, + "end": 12453, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "tag", + "source": 40, + "value": "155" + }, + { + "begin": 12459, + "end": 12600, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12508, + "end": 12512, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12531, + "end": 12534, + "name": "DUP2", + "source": 40 + }, + { + "begin": 12523, + "end": 12534, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12523, + "end": 12534, + "name": "POP", + "source": 40 + }, + { + "begin": 12554, + "end": 12557, + "name": "DUP2", + "source": 40 + }, + { + "begin": 12551, + "end": 12552, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12544, + "end": 12558, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 12588, + "end": 12592, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 12585, + "end": 12586, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12575, + "end": 12593, + "name": "KECCAK256", + "source": 40 + }, + { + "begin": 12567, + "end": 12593, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12567, + "end": 12593, + "name": "POP", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "name": "POP", + "source": 40 + }, + { + "begin": 12459, + "end": 12600, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "tag", + "source": 40, + "value": "156" + }, + { + "begin": 12606, + "end": 12699, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12643, + "end": 12649, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12690, + "end": 12692, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 12685, + "end": 12687, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 12678, + "end": 12683, + "name": "DUP4", + "source": 40 + }, + { + "begin": 12674, + "end": 12688, + "name": "ADD", + "source": 40 + }, + { + "begin": 12670, + "end": 12693, + "name": "DIV", + "source": 40 + }, + { + "begin": 12660, + "end": 12693, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12660, + "end": 12693, + "name": "POP", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "name": "POP", + "source": 40 + }, + { + "begin": 12606, + "end": 12699, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "tag", + "source": 40, + "value": "157" + }, + { + "begin": 12705, + "end": 12812, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12749, + "end": 12757, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12799, + "end": 12804, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12793, + "end": 12797, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12789, + "end": 12805, + "name": "SHL", + "source": 40 + }, + { + "begin": 12768, + "end": 12805, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 12768, + "end": 12805, + "name": "POP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "POP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "name": "POP", + "source": 40 + }, + { + "begin": 12705, + "end": 12812, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "tag", + "source": 40, + "value": "158" + }, + { + "begin": 12818, + "end": 13211, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 12887, + "end": 12893, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 12937, + "end": 12938, + "name": "PUSH", + "source": 40, + "value": "8" + }, + { + "begin": 12925, + "end": 12935, + "name": "DUP4", + "source": 40 + }, + { + "begin": 12921, + "end": 12939, + "name": "MUL", + "source": 40 + }, + { + "begin": 12960, + "end": 13057, + "name": "PUSH [tag]", + "source": 40, + "value": "297" + }, + { + "begin": 12990, + "end": 13056, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 12979, + "end": 12988, + "name": "DUP3", + "source": 40 + }, + { + "begin": 12960, + "end": 13057, + "name": "PUSH [tag]", + "source": 40, + "value": "157" + }, + { + "begin": 12960, + "end": 13057, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 12960, + "end": 13057, + "name": "tag", + "source": 40, + "value": "297" + }, + { + "begin": 12960, + "end": 13057, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13078, + "end": 13117, + "name": "PUSH [tag]", + "source": 40, + "value": "298" + }, + { + "begin": 13108, + "end": 13116, + "name": "DUP7", + "source": 40 + }, + { + "begin": 13097, + "end": 13106, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13078, + "end": 13117, + "name": "PUSH [tag]", + "source": 40, + "value": "157" + }, + { + "begin": 13078, + "end": 13117, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13078, + "end": 13117, + "name": "tag", + "source": 40, + "value": "298" + }, + { + "begin": 13078, + "end": 13117, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13066, + "end": 13117, + "name": "SWAP6", + "source": 40 + }, + { + "begin": 13066, + "end": 13117, + "name": "POP", + "source": 40 + }, + { + "begin": 13150, + "end": 13154, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13146, + "end": 13155, + "name": "NOT", + "source": 40 + }, + { + "begin": 13139, + "end": 13144, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13135, + "end": 13156, + "name": "AND", + "source": 40 + }, + { + "begin": 13126, + "end": 13156, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 13126, + "end": 13156, + "name": "POP", + "source": 40 + }, + { + "begin": 13199, + "end": 13203, + "name": "DUP1", + "source": 40 + }, + { + "begin": 13189, + "end": 13197, + "name": "DUP7", + "source": 40 + }, + { + "begin": 13185, + "end": 13204, + "name": "AND", + "source": 40 + }, + { + "begin": 13178, + "end": 13183, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13175, + "end": 13205, + "name": "OR", + "source": 40 + }, + { + "begin": 13165, + "end": 13205, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 13165, + "end": 13205, + "name": "POP", + "source": 40 + }, + { + "begin": 12894, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12894, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "name": "POP", + "source": 40 + }, + { + "begin": 12818, + "end": 13211, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "tag", + "source": 40, + "value": "159" + }, + { + "begin": 13217, + "end": 13294, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13254, + "end": 13261, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13283, + "end": 13288, + "name": "DUP2", + "source": 40 + }, + { + "begin": 13272, + "end": 13288, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13272, + "end": 13288, + "name": "POP", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "name": "POP", + "source": 40 + }, + { + "begin": 13217, + "end": 13294, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "tag", + "source": 40, + "value": "160" + }, + { + "begin": 13300, + "end": 13360, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13328, + "end": 13331, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13349, + "end": 13354, + "name": "DUP2", + "source": 40 + }, + { + "begin": 13342, + "end": 13354, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13342, + "end": 13354, + "name": "POP", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "name": "POP", + "source": 40 + }, + { + "begin": 13300, + "end": 13360, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "tag", + "source": 40, + "value": "161" + }, + { + "begin": 13366, + "end": 13508, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13416, + "end": 13425, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13449, + "end": 13502, + "name": "PUSH [tag]", + "source": 40, + "value": "302" + }, + { + "begin": 13467, + "end": 13501, + "name": "PUSH [tag]", + "source": 40, + "value": "303" + }, + { + "begin": 13476, + "end": 13500, + "name": "PUSH [tag]", + "source": 40, + "value": "304" + }, + { + "begin": 13494, + "end": 13499, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13476, + "end": 13500, + "name": "PUSH [tag]", + "source": 40, + "value": "159" + }, + { + "begin": 13476, + "end": 13500, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13476, + "end": 13500, + "name": "tag", + "source": 40, + "value": "304" + }, + { + "begin": 13476, + "end": 13500, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13467, + "end": 13501, + "name": "PUSH [tag]", + "source": 40, + "value": "160" + }, + { + "begin": 13467, + "end": 13501, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13467, + "end": 13501, + "name": "tag", + "source": 40, + "value": "303" + }, + { + "begin": 13467, + "end": 13501, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13449, + "end": 13502, + "name": "PUSH [tag]", + "source": 40, + "value": "159" + }, + { + "begin": 13449, + "end": 13502, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13449, + "end": 13502, + "name": "tag", + "source": 40, + "value": "302" + }, + { + "begin": 13449, + "end": 13502, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13436, + "end": 13502, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13436, + "end": 13502, + "name": "POP", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "name": "POP", + "source": 40 + }, + { + "begin": 13366, + "end": 13508, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "tag", + "source": 40, + "value": "162" + }, + { + "begin": 13514, + "end": 13589, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13557, + "end": 13560, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13578, + "end": 13583, + "name": "DUP2", + "source": 40 + }, + { + "begin": 13571, + "end": 13583, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13571, + "end": 13583, + "name": "POP", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "name": "POP", + "source": 40 + }, + { + "begin": 13514, + "end": 13589, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "tag", + "source": 40, + "value": "163" + }, + { + "begin": 13595, + "end": 13864, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13705, + "end": 13744, + "name": "PUSH [tag]", + "source": 40, + "value": "307" + }, + { + "begin": 13736, + "end": 13743, + "name": "DUP4", + "source": 40 + }, + { + "begin": 13705, + "end": 13744, + "name": "PUSH [tag]", + "source": 40, + "value": "161" + }, + { + "begin": 13705, + "end": 13744, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13705, + "end": 13744, + "name": "tag", + "source": 40, + "value": "307" + }, + { + "begin": 13705, + "end": 13744, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13766, + "end": 13857, + "name": "PUSH [tag]", + "source": 40, + "value": "308" + }, + { + "begin": 13815, + "end": 13856, + "name": "PUSH [tag]", + "source": 40, + "value": "309" + }, + { + "begin": 13839, + "end": 13855, + "name": "DUP3", + "source": 40 + }, + { + "begin": 13815, + "end": 13856, + "name": "PUSH [tag]", + "source": 40, + "value": "162" + }, + { + "begin": 13815, + "end": 13856, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13815, + "end": 13856, + "name": "tag", + "source": 40, + "value": "309" + }, + { + "begin": 13815, + "end": 13856, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13807, + "end": 13813, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13800, + "end": 13804, + "name": "DUP5", + "source": 40 + }, + { + "begin": 13794, + "end": 13805, + "name": "SLOAD", + "source": 40 + }, + { + "begin": 13766, + "end": 13857, + "name": "PUSH [tag]", + "source": 40, + "value": "158" + }, + { + "begin": 13766, + "end": 13857, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13766, + "end": 13857, + "name": "tag", + "source": 40, + "value": "308" + }, + { + "begin": 13766, + "end": 13857, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13760, + "end": 13764, + "name": "DUP3", + "source": 40 + }, + { + "begin": 13753, + "end": 13858, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 13671, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "name": "POP", + "source": 40 + }, + { + "begin": 13595, + "end": 13864, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13870, + "end": 13943, + "name": "tag", + "source": 40, + "value": "164" + }, + { + "begin": 13870, + "end": 13943, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 13915, + "end": 13918, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 13870, + "end": 13943, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 13870, + "end": 13943, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "name": "tag", + "source": 40, + "value": "165" + }, + { + "begin": 13949, + "end": 14138, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14026, + "end": 14058, + "name": "PUSH [tag]", + "source": 40, + "value": "312" + }, + { + "begin": 14026, + "end": 14058, + "name": "PUSH [tag]", + "source": 40, + "value": "164" + }, + { + "begin": 14026, + "end": 14058, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14026, + "end": 14058, + "name": "tag", + "source": 40, + "value": "312" + }, + { + "begin": 14026, + "end": 14058, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14067, + "end": 14132, + "name": "PUSH [tag]", + "source": 40, + "value": "313" + }, + { + "begin": 14125, + "end": 14131, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14117, + "end": 14123, + "name": "DUP5", + "source": 40 + }, + { + "begin": 14111, + "end": 14115, + "name": "DUP5", + "source": 40 + }, + { + "begin": 14067, + "end": 14132, + "name": "PUSH [tag]", + "source": 40, + "value": "163" + }, + { + "begin": 14067, + "end": 14132, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14067, + "end": 14132, + "name": "tag", + "source": 40, + "value": "313" + }, + { + "begin": 14067, + "end": 14132, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14002, + "end": 14138, + "name": "POP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "name": "POP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "name": "POP", + "source": 40 + }, + { + "begin": 13949, + "end": 14138, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "name": "tag", + "source": 40, + "value": "166" + }, + { + "begin": 14144, + "end": 14330, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "tag", + "source": 40, + "value": "315" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14221, + "end": 14224, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14214, + "end": 14219, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14211, + "end": 14225, + "name": "LT", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "PUSH [tag]", + "source": 40, + "value": "317" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14275, + "end": 14314, + "name": "PUSH [tag]", + "source": 40, + "value": "318" + }, + { + "begin": 14312, + "end": 14313, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 14305, + "end": 14310, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14275, + "end": 14314, + "name": "PUSH [tag]", + "source": 40, + "value": "165" + }, + { + "begin": 14275, + "end": 14314, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14275, + "end": 14314, + "name": "tag", + "source": 40, + "value": "318" + }, + { + "begin": 14275, + "end": 14314, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14248, + "end": 14249, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 14241, + "end": 14246, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14237, + "end": 14250, + "name": "ADD", + "source": 40 + }, + { + "begin": 14228, + "end": 14250, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 14228, + "end": 14250, + "name": "POP", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "PUSH [tag]", + "source": 40, + "value": "315" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMP", + "source": 40 + }, + { + "begin": 14204, + "end": 14324, + "name": "tag", + "source": 40, + "value": "317" + }, + { + "begin": 14204, + "end": 14324, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "name": "POP", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "name": "POP", + "source": 40 + }, + { + "begin": 14144, + "end": 14330, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "tag", + "source": 40, + "value": "167" + }, + { + "begin": 14336, + "end": 14879, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14437, + "end": 14439, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 14432, + "end": 14435, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14429, + "end": 14440, + "name": "GT", + "source": 40 + }, + { + "begin": 14426, + "end": 14872, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 14426, + "end": 14872, + "name": "PUSH [tag]", + "source": 40, + "value": "320" + }, + { + "begin": 14426, + "end": 14872, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14471, + "end": 14509, + "name": "PUSH [tag]", + "source": 40, + "value": "321" + }, + { + "begin": 14503, + "end": 14508, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14471, + "end": 14509, + "name": "PUSH [tag]", + "source": 40, + "value": "155" + }, + { + "begin": 14471, + "end": 14509, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14471, + "end": 14509, + "name": "tag", + "source": 40, + "value": "321" + }, + { + "begin": 14471, + "end": 14509, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14555, + "end": 14584, + "name": "PUSH [tag]", + "source": 40, + "value": "322" + }, + { + "begin": 14573, + "end": 14583, + "name": "DUP5", + "source": 40 + }, + { + "begin": 14555, + "end": 14584, + "name": "PUSH [tag]", + "source": 40, + "value": "156" + }, + { + "begin": 14555, + "end": 14584, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14555, + "end": 14584, + "name": "tag", + "source": 40, + "value": "322" + }, + { + "begin": 14555, + "end": 14584, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14545, + "end": 14553, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14541, + "end": 14585, + "name": "ADD", + "source": 40 + }, + { + "begin": 14738, + "end": 14740, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 14726, + "end": 14736, + "name": "DUP6", + "source": 40 + }, + { + "begin": 14723, + "end": 14741, + "name": "LT", + "source": 40 + }, + { + "begin": 14720, + "end": 14769, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 14720, + "end": 14769, + "name": "PUSH [tag]", + "source": 40, + "value": "323" + }, + { + "begin": 14720, + "end": 14769, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 14759, + "end": 14767, + "name": "DUP2", + "source": 40 + }, + { + "begin": 14744, + "end": 14767, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 14744, + "end": 14767, + "name": "POP", + "source": 40 + }, + { + "begin": 14720, + "end": 14769, + "name": "tag", + "source": 40, + "value": "323" + }, + { + "begin": 14720, + "end": 14769, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14782, + "end": 14862, + "name": "PUSH [tag]", + "source": 40, + "value": "324" + }, + { + "begin": 14838, + "end": 14860, + "name": "PUSH [tag]", + "source": 40, + "value": "325" + }, + { + "begin": 14856, + "end": 14859, + "name": "DUP6", + "source": 40 + }, + { + "begin": 14838, + "end": 14860, + "name": "PUSH [tag]", + "source": 40, + "value": "156" + }, + { + "begin": 14838, + "end": 14860, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14838, + "end": 14860, + "name": "tag", + "source": 40, + "value": "325" + }, + { + "begin": 14838, + "end": 14860, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14828, + "end": 14836, + "name": "DUP4", + "source": 40 + }, + { + "begin": 14824, + "end": 14861, + "name": "ADD", + "source": 40 + }, + { + "begin": 14811, + "end": 14822, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14782, + "end": 14862, + "name": "PUSH [tag]", + "source": 40, + "value": "166" + }, + { + "begin": 14782, + "end": 14862, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14782, + "end": 14862, + "name": "tag", + "source": 40, + "value": "324" + }, + { + "begin": 14782, + "end": 14862, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14441, + "end": 14872, + "name": "POP", + "source": 40 + }, + { + "begin": 14441, + "end": 14872, + "name": "POP", + "source": 40 + }, + { + "begin": 14426, + "end": 14872, + "name": "tag", + "source": 40, + "value": "320" + }, + { + "begin": 14426, + "end": 14872, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "POP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "POP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "name": "POP", + "source": 40 + }, + { + "begin": 14336, + "end": 14879, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "tag", + "source": 40, + "value": "168" + }, + { + "begin": 14885, + "end": 15002, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 14939, + "end": 14947, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 14989, + "end": 14994, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14983, + "end": 14987, + "name": "DUP3", + "source": 40 + }, + { + "begin": 14979, + "end": 14995, + "name": "SHR", + "source": 40 + }, + { + "begin": 14958, + "end": 14995, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 14958, + "end": 14995, + "name": "POP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "POP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "name": "POP", + "source": 40 + }, + { + "begin": 14885, + "end": 15002, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "tag", + "source": 40, + "value": "169" + }, + { + "begin": 15008, + "end": 15177, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15052, + "end": 15058, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15085, + "end": 15136, + "name": "PUSH [tag]", + "source": 40, + "value": "328" + }, + { + "begin": 15133, + "end": 15134, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15129, + "end": 15135, + "name": "NOT", + "source": 40 + }, + { + "begin": 15121, + "end": 15126, + "name": "DUP5", + "source": 40 + }, + { + "begin": 15118, + "end": 15119, + "name": "PUSH", + "source": 40, + "value": "8" + }, + { + "begin": 15114, + "end": 15127, + "name": "MUL", + "source": 40 + }, + { + "begin": 15085, + "end": 15136, + "name": "PUSH [tag]", + "source": 40, + "value": "168" + }, + { + "begin": 15085, + "end": 15136, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15085, + "end": 15136, + "name": "tag", + "source": 40, + "value": "328" + }, + { + "begin": 15085, + "end": 15136, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15081, + "end": 15137, + "name": "NOT", + "source": 40 + }, + { + "begin": 15166, + "end": 15170, + "name": "DUP1", + "source": 40 + }, + { + "begin": 15160, + "end": 15164, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15156, + "end": 15171, + "name": "AND", + "source": 40 + }, + { + "begin": 15146, + "end": 15171, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15146, + "end": 15171, + "name": "POP", + "source": 40 + }, + { + "begin": 15059, + "end": 15177, + "name": "POP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "POP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "name": "POP", + "source": 40 + }, + { + "begin": 15008, + "end": 15177, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "tag", + "source": 40, + "value": "170" + }, + { + "begin": 15182, + "end": 15477, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15258, + "end": 15262, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15404, + "end": 15433, + "name": "PUSH [tag]", + "source": 40, + "value": "330" + }, + { + "begin": 15429, + "end": 15432, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15423, + "end": 15427, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15404, + "end": 15433, + "name": "PUSH [tag]", + "source": 40, + "value": "169" + }, + { + "begin": 15404, + "end": 15433, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15404, + "end": 15433, + "name": "tag", + "source": 40, + "value": "330" + }, + { + "begin": 15404, + "end": 15433, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15396, + "end": 15433, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15396, + "end": 15433, + "name": "POP", + "source": 40 + }, + { + "begin": 15466, + "end": 15469, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15463, + "end": 15464, + "name": "PUSH", + "source": 40, + "value": "2" + }, + { + "begin": 15459, + "end": 15470, + "name": "MUL", + "source": 40 + }, + { + "begin": 15453, + "end": 15457, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15450, + "end": 15471, + "name": "OR", + "source": 40 + }, + { + "begin": 15442, + "end": 15471, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 15442, + "end": 15471, + "name": "POP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "POP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "name": "POP", + "source": 40 + }, + { + "begin": 15182, + "end": 15477, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "name": "tag", + "source": 40, + "value": "41" + }, + { + "begin": 15482, + "end": 16877, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15599, + "end": 15636, + "name": "PUSH [tag]", + "source": 40, + "value": "332" + }, + { + "begin": 15632, + "end": 15635, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15599, + "end": 15636, + "name": "PUSH [tag]", + "source": 40, + "value": "149" + }, + { + "begin": 15599, + "end": 15636, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15599, + "end": 15636, + "name": "tag", + "source": 40, + "value": "332" + }, + { + "begin": 15599, + "end": 15636, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15701, + "end": 15719, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 15693, + "end": 15699, + "name": "DUP2", + "source": 40 + }, + { + "begin": 15690, + "end": 15720, + "name": "GT", + "source": 40 + }, + { + "begin": 15687, + "end": 15743, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 15687, + "end": 15743, + "name": "PUSH [tag]", + "source": 40, + "value": "333" + }, + { + "begin": 15687, + "end": 15743, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 15723, + "end": 15741, + "name": "PUSH [tag]", + "source": 40, + "value": "334" + }, + { + "begin": 15723, + "end": 15741, + "name": "PUSH [tag]", + "source": 40, + "value": "73" + }, + { + "begin": 15723, + "end": 15741, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15723, + "end": 15741, + "name": "tag", + "source": 40, + "value": "334" + }, + { + "begin": 15723, + "end": 15741, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15687, + "end": 15743, + "name": "tag", + "source": 40, + "value": "333" + }, + { + "begin": 15687, + "end": 15743, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15767, + "end": 15805, + "name": "PUSH [tag]", + "source": 40, + "value": "335" + }, + { + "begin": 15799, + "end": 15803, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15793, + "end": 15804, + "name": "SLOAD", + "source": 40 + }, + { + "begin": 15767, + "end": 15805, + "name": "PUSH [tag]", + "source": 40, + "value": "154" + }, + { + "begin": 15767, + "end": 15805, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15767, + "end": 15805, + "name": "tag", + "source": 40, + "value": "335" + }, + { + "begin": 15767, + "end": 15805, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15852, + "end": 15919, + "name": "PUSH [tag]", + "source": 40, + "value": "336" + }, + { + "begin": 15912, + "end": 15918, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15904, + "end": 15910, + "name": "DUP3", + "source": 40 + }, + { + "begin": 15898, + "end": 15902, + "name": "DUP6", + "source": 40 + }, + { + "begin": 15852, + "end": 15919, + "name": "PUSH [tag]", + "source": 40, + "value": "167" + }, + { + "begin": 15852, + "end": 15919, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 15852, + "end": 15919, + "name": "tag", + "source": 40, + "value": "336" + }, + { + "begin": 15852, + "end": 15919, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15946, + "end": 15947, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 15970, + "end": 15974, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 15957, + "end": 15974, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 15957, + "end": 15974, + "name": "POP", + "source": 40 + }, + { + "begin": 16002, + "end": 16004, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 15994, + "end": 16000, + "name": "DUP4", + "source": 40 + }, + { + "begin": 15991, + "end": 16005, + "name": "GT", + "source": 40 + }, + { + "begin": 16019, + "end": 16020, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 16014, + "end": 16632, + "name": "DUP2", + "source": 40 + }, + { + "begin": 16014, + "end": 16632, + "name": "EQ", + "source": 40 + }, + { + "begin": 16014, + "end": 16632, + "name": "PUSH [tag]", + "source": 40, + "value": "338" + }, + { + "begin": 16014, + "end": 16632, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16676, + "end": 16677, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16693, + "end": 16699, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16690, + "end": 16767, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 16690, + "end": 16767, + "name": "PUSH [tag]", + "source": 40, + "value": "339" + }, + { + "begin": 16690, + "end": 16767, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16742, + "end": 16751, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16737, + "end": 16740, + "name": "DUP8", + "source": 40 + }, + { + "begin": 16733, + "end": 16752, + "name": "ADD", + "source": 40 + }, + { + "begin": 16727, + "end": 16753, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 16718, + "end": 16753, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 16718, + "end": 16753, + "name": "POP", + "source": 40 + }, + { + "begin": 16690, + "end": 16767, + "name": "tag", + "source": 40, + "value": "339" + }, + { + "begin": 16690, + "end": 16767, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16793, + "end": 16860, + "name": "PUSH [tag]", + "source": 40, + "value": "340" + }, + { + "begin": 16853, + "end": 16859, + "name": "DUP6", + "source": 40 + }, + { + "begin": 16846, + "end": 16851, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16793, + "end": 16860, + "name": "PUSH [tag]", + "source": 40, + "value": "170" + }, + { + "begin": 16793, + "end": 16860, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16793, + "end": 16860, + "name": "tag", + "source": 40, + "value": "340" + }, + { + "begin": 16793, + "end": 16860, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16787, + "end": 16791, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16780, + "end": 16861, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16649, + "end": 16871, + "name": "POP", + "source": 40 + }, + { + "begin": 15984, + "end": 16871, + "name": "PUSH [tag]", + "source": 40, + "value": "337" + }, + { + "begin": 15984, + "end": 16871, + "name": "JUMP", + "source": 40 + }, + { + "begin": 16014, + "end": 16632, + "name": "tag", + "source": 40, + "value": "338" + }, + { + "begin": 16014, + "end": 16632, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16066, + "end": 16070, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 16062, + "end": 16071, + "name": "NOT", + "source": 40 + }, + { + "begin": 16054, + "end": 16060, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16050, + "end": 16072, + "name": "AND", + "source": 40 + }, + { + "begin": 16100, + "end": 16137, + "name": "PUSH [tag]", + "source": 40, + "value": "341" + }, + { + "begin": 16132, + "end": 16136, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16100, + "end": 16137, + "name": "PUSH [tag]", + "source": 40, + "value": "155" + }, + { + "begin": 16100, + "end": 16137, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16100, + "end": 16137, + "name": "tag", + "source": 40, + "value": "341" + }, + { + "begin": 16100, + "end": 16137, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16159, + "end": 16160, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 16173, + "end": 16381, + "name": "tag", + "source": 40, + "value": "342" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16187, + "end": 16194, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16184, + "end": 16185, + "name": "DUP2", + "source": 40 + }, + { + "begin": 16181, + "end": 16195, + "name": "LT", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "PUSH [tag]", + "source": 40, + "value": "344" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16266, + "end": 16275, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16261, + "end": 16264, + "name": "DUP10", + "source": 40 + }, + { + "begin": 16257, + "end": 16276, + "name": "ADD", + "source": 40 + }, + { + "begin": 16251, + "end": 16277, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 16243, + "end": 16249, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16236, + "end": 16278, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16317, + "end": 16318, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 16309, + "end": 16315, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16305, + "end": 16319, + "name": "ADD", + "source": 40 + }, + { + "begin": 16295, + "end": 16319, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 16295, + "end": 16319, + "name": "POP", + "source": 40 + }, + { + "begin": 16364, + "end": 16366, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 16353, + "end": 16362, + "name": "DUP6", + "source": 40 + }, + { + "begin": 16349, + "end": 16367, + "name": "ADD", + "source": 40 + }, + { + "begin": 16336, + "end": 16367, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 16336, + "end": 16367, + "name": "POP", + "source": 40 + }, + { + "begin": 16210, + "end": 16214, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 16207, + "end": 16208, + "name": "DUP2", + "source": 40 + }, + { + "begin": 16203, + "end": 16215, + "name": "ADD", + "source": 40 + }, + { + "begin": 16198, + "end": 16215, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 16198, + "end": 16215, + "name": "POP", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "PUSH [tag]", + "source": 40, + "value": "342" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMP", + "source": 40 + }, + { + "begin": 16173, + "end": 16381, + "name": "tag", + "source": 40, + "value": "344" + }, + { + "begin": 16173, + "end": 16381, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16409, + "end": 16415, + "name": "DUP7", + "source": 40 + }, + { + "begin": 16400, + "end": 16407, + "name": "DUP4", + "source": 40 + }, + { + "begin": 16397, + "end": 16416, + "name": "LT", + "source": 40 + }, + { + "begin": 16394, + "end": 16573, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 16394, + "end": 16573, + "name": "PUSH [tag]", + "source": 40, + "value": "345" + }, + { + "begin": 16394, + "end": 16573, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 16467, + "end": 16476, + "name": "DUP5", + "source": 40 + }, + { + "begin": 16462, + "end": 16465, + "name": "DUP10", + "source": 40 + }, + { + "begin": 16458, + "end": 16477, + "name": "ADD", + "source": 40 + }, + { + "begin": 16452, + "end": 16478, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 16510, + "end": 16558, + "name": "PUSH [tag]", + "source": 40, + "value": "346" + }, + { + "begin": 16552, + "end": 16556, + "name": "PUSH", + "source": 40, + "value": "1F" + }, + { + "begin": 16544, + "end": 16550, + "name": "DUP10", + "source": 40 + }, + { + "begin": 16540, + "end": 16557, + "name": "AND", + "source": 40 + }, + { + "begin": 16529, + "end": 16538, + "name": "DUP3", + "source": 40 + }, + { + "begin": 16510, + "end": 16558, + "name": "PUSH [tag]", + "source": 40, + "value": "169" + }, + { + "begin": 16510, + "end": 16558, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16510, + "end": 16558, + "name": "tag", + "source": 40, + "value": "346" + }, + { + "begin": 16510, + "end": 16558, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16502, + "end": 16508, + "name": "DUP4", + "source": 40 + }, + { + "begin": 16495, + "end": 16559, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16417, + "end": 16573, + "name": "POP", + "source": 40 + }, + { + "begin": 16394, + "end": 16573, + "name": "tag", + "source": 40, + "value": "345" + }, + { + "begin": 16394, + "end": 16573, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 16619, + "end": 16620, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 16615, + "end": 16616, + "name": "PUSH", + "source": 40, + "value": "2" + }, + { + "begin": 16607, + "end": 16613, + "name": "DUP9", + "source": 40 + }, + { + "begin": 16603, + "end": 16617, + "name": "MUL", + "source": 40 + }, + { + "begin": 16599, + "end": 16621, + "name": "ADD", + "source": 40 + }, + { + "begin": 16593, + "end": 16597, + "name": "DUP9", + "source": 40 + }, + { + "begin": 16586, + "end": 16622, + "name": "SSTORE", + "source": 40 + }, + { + "begin": 16021, + "end": 16632, + "name": "POP", + "source": 40 + }, + { + "begin": 16021, + "end": 16632, + "name": "POP", + "source": 40 + }, + { + "begin": 16021, + "end": 16632, + "name": "POP", + "source": 40 + }, + { + "begin": 15984, + "end": 16871, + "name": "tag", + "source": 40, + "value": "337" + }, + { + "begin": 15984, + "end": 16871, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 15984, + "end": 16871, + "name": "POP", + "source": 40 + }, + { + "begin": 15574, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15574, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15574, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "name": "POP", + "source": 40 + }, + { + "begin": 15482, + "end": 16877, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 16883, + "end": 17082, + "name": "tag", + "source": 40, + "value": "171" + }, + { + "begin": 16883, + "end": 17082, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17052, + "end": 17075, + "name": "PUSH", + "source": 40, + "value": "4C697175696469747920426F6F6B20546F6B656E200000000000000000000000" + }, + { + "begin": 17047, + "end": 17050, + "name": "DUP2", + "source": 40 + }, + { + "begin": 17040, + "end": 17076, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 16883, + "end": 17082, + "name": "POP", + "source": 40 + }, + { + "begin": 16883, + "end": 17082, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "tag", + "source": 40, + "value": "43" + }, + { + "begin": 17088, + "end": 18478, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17587, + "end": 17590, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 17602, + "end": 17740, + "name": "PUSH [tag]", + "source": 40, + "value": "349" + }, + { + "begin": 17736, + "end": 17739, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17602, + "end": 17740, + "name": "PUSH [tag]", + "source": 40, + "value": "171" + }, + { + "begin": 17602, + "end": 17740, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17602, + "end": 17740, + "name": "tag", + "source": 40, + "value": "349" + }, + { + "begin": 17602, + "end": 17740, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17765, + "end": 17767, + "name": "PUSH", + "source": 40, + "value": "15" + }, + { + "begin": 17760, + "end": 17763, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17756, + "end": 17768, + "name": "ADD", + "source": 40 + }, + { + "begin": 17749, + "end": 17768, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 17749, + "end": 17768, + "name": "POP", + "source": 40 + }, + { + "begin": 17785, + "end": 17880, + "name": "PUSH [tag]", + "source": 40, + "value": "350" + }, + { + "begin": 17876, + "end": 17879, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17867, + "end": 17873, + "name": "DUP7", + "source": 40 + }, + { + "begin": 17785, + "end": 17880, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 17785, + "end": 17880, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17785, + "end": 17880, + "name": "tag", + "source": 40, + "value": "350" + }, + { + "begin": 17785, + "end": 17880, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 17778, + "end": 17880, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 17778, + "end": 17880, + "name": "POP", + "source": 40 + }, + { + "begin": 17890, + "end": 18027, + "name": "PUSH [tag]", + "source": 40, + "value": "351" + }, + { + "begin": 18023, + "end": 18026, + "name": "DUP3", + "source": 40 + }, + { + "begin": 17890, + "end": 18027, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 17890, + "end": 18027, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 17890, + "end": 18027, + "name": "tag", + "source": 40, + "value": "351" + }, + { + "begin": 17890, + "end": 18027, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18052, + "end": 18053, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 18047, + "end": 18050, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18043, + "end": 18054, + "name": "ADD", + "source": 40 + }, + { + "begin": 18036, + "end": 18054, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18036, + "end": 18054, + "name": "POP", + "source": 40 + }, + { + "begin": 18071, + "end": 18166, + "name": "PUSH [tag]", + "source": 40, + "value": "352" + }, + { + "begin": 18162, + "end": 18165, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18153, + "end": 18159, + "name": "DUP6", + "source": 40 + }, + { + "begin": 18071, + "end": 18166, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 18071, + "end": 18166, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18071, + "end": 18166, + "name": "tag", + "source": 40, + "value": "352" + }, + { + "begin": 18071, + "end": 18166, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18064, + "end": 18166, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18064, + "end": 18166, + "name": "POP", + "source": 40 + }, + { + "begin": 18176, + "end": 18313, + "name": "PUSH [tag]", + "source": 40, + "value": "353" + }, + { + "begin": 18309, + "end": 18312, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18176, + "end": 18313, + "name": "PUSH [tag]", + "source": 40, + "value": "152" + }, + { + "begin": 18176, + "end": 18313, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18176, + "end": 18313, + "name": "tag", + "source": 40, + "value": "353" + }, + { + "begin": 18176, + "end": 18313, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18338, + "end": 18339, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 18333, + "end": 18336, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18329, + "end": 18340, + "name": "ADD", + "source": 40 + }, + { + "begin": 18322, + "end": 18340, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18322, + "end": 18340, + "name": "POP", + "source": 40 + }, + { + "begin": 18357, + "end": 18452, + "name": "PUSH [tag]", + "source": 40, + "value": "354" + }, + { + "begin": 18448, + "end": 18451, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18439, + "end": 18445, + "name": "DUP5", + "source": 40 + }, + { + "begin": 18357, + "end": 18452, + "name": "PUSH [tag]", + "source": 40, + "value": "151" + }, + { + "begin": 18357, + "end": 18452, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18357, + "end": 18452, + "name": "tag", + "source": 40, + "value": "354" + }, + { + "begin": 18357, + "end": 18452, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18350, + "end": 18452, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18350, + "end": 18452, + "name": "POP", + "source": 40 + }, + { + "begin": 18469, + "end": 18472, + "name": "DUP2", + "source": 40 + }, + { + "begin": 18462, + "end": 18472, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 18462, + "end": 18472, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "SWAP5", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "SWAP4", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "name": "POP", + "source": 40 + }, + { + "begin": 17088, + "end": 18478, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "tag", + "source": 40, + "value": "56" + }, + { + "begin": 18484, + "end": 18835, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18554, + "end": 18560, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18603, + "end": 18605, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 18591, + "end": 18600, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18582, + "end": 18589, + "name": "DUP5", + "source": 40 + }, + { + "begin": 18578, + "end": 18601, + "name": "SUB", + "source": 40 + }, + { + "begin": 18574, + "end": 18606, + "name": "SLT", + "source": 40 + }, + { + "begin": 18571, + "end": 18690, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 18571, + "end": 18690, + "name": "PUSH [tag]", + "source": 40, + "value": "356" + }, + { + "begin": 18571, + "end": 18690, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 18609, + "end": 18688, + "name": "PUSH [tag]", + "source": 40, + "value": "357" + }, + { + "begin": 18609, + "end": 18688, + "name": "PUSH [tag]", + "source": 40, + "value": "119" + }, + { + "begin": 18609, + "end": 18688, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18609, + "end": 18688, + "name": "tag", + "source": 40, + "value": "357" + }, + { + "begin": 18609, + "end": 18688, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18571, + "end": 18690, + "name": "tag", + "source": 40, + "value": "356" + }, + { + "begin": 18571, + "end": 18690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18729, + "end": 18730, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18754, + "end": 18818, + "name": "PUSH [tag]", + "source": 40, + "value": "358" + }, + { + "begin": 18810, + "end": 18817, + "name": "DUP5", + "source": 40 + }, + { + "begin": 18801, + "end": 18807, + "name": "DUP3", + "source": 40 + }, + { + "begin": 18790, + "end": 18799, + "name": "DUP6", + "source": 40 + }, + { + "begin": 18786, + "end": 18808, + "name": "ADD", + "source": 40 + }, + { + "begin": 18754, + "end": 18818, + "name": "PUSH [tag]", + "source": 40, + "value": "124" + }, + { + "begin": 18754, + "end": 18818, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18754, + "end": 18818, + "name": "tag", + "source": 40, + "value": "358" + }, + { + "begin": 18754, + "end": 18818, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18744, + "end": 18818, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18744, + "end": 18818, + "name": "POP", + "source": 40 + }, + { + "begin": 18700, + "end": 18828, + "name": "POP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "POP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "name": "POP", + "source": 40 + }, + { + "begin": 18484, + "end": 18835, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 18841, + "end": 19021, + "name": "tag", + "source": 40, + "value": "172" + }, + { + "begin": 18841, + "end": 19021, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 18889, + "end": 18966, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 18886, + "end": 18887, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 18879, + "end": 18967, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 18986, + "end": 18990, + "name": "PUSH", + "source": 40, + "value": "11" + }, + { + "begin": 18983, + "end": 18984, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 18976, + "end": 18991, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19010, + "end": 19014, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 19007, + "end": 19008, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19000, + "end": 19015, + "name": "REVERT", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "tag", + "source": 40, + "value": "68" + }, + { + "begin": 19027, + "end": 19198, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19065, + "end": 19068, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19088, + "end": 19111, + "name": "PUSH [tag]", + "source": 40, + "value": "361" + }, + { + "begin": 19105, + "end": 19110, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19088, + "end": 19111, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19088, + "end": 19111, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19088, + "end": 19111, + "name": "tag", + "source": 40, + "value": "361" + }, + { + "begin": 19088, + "end": 19111, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19079, + "end": 19111, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19079, + "end": 19111, + "name": "POP", + "source": 40 + }, + { + "begin": 19133, + "end": 19139, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 19126, + "end": 19131, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19123, + "end": 19140, + "name": "SUB", + "source": 40 + }, + { + "begin": 19120, + "end": 19163, + "name": "PUSH [tag]", + "source": 40, + "value": "362" + }, + { + "begin": 19120, + "end": 19163, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19143, + "end": 19161, + "name": "PUSH [tag]", + "source": 40, + "value": "363" + }, + { + "begin": 19143, + "end": 19161, + "name": "PUSH [tag]", + "source": 40, + "value": "172" + }, + { + "begin": 19143, + "end": 19161, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19143, + "end": 19161, + "name": "tag", + "source": 40, + "value": "363" + }, + { + "begin": 19143, + "end": 19161, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19120, + "end": 19163, + "name": "tag", + "source": 40, + "value": "362" + }, + { + "begin": 19120, + "end": 19163, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19190, + "end": 19191, + "name": "PUSH", + "source": 40, + "value": "1" + }, + { + "begin": 19183, + "end": 19188, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19179, + "end": 19192, + "name": "ADD", + "source": 40 + }, + { + "begin": 19172, + "end": 19192, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19172, + "end": 19192, + "name": "POP", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "name": "POP", + "source": 40 + }, + { + "begin": 19027, + "end": 19198, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19204, + "end": 19384, + "name": "tag", + "source": 40, + "value": "173" + }, + { + "begin": 19204, + "end": 19384, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19252, + "end": 19329, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 19249, + "end": 19250, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19242, + "end": 19330, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19349, + "end": 19353, + "name": "PUSH", + "source": 40, + "value": "12" + }, + { + "begin": 19346, + "end": 19347, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 19339, + "end": 19354, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 19373, + "end": 19377, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 19370, + "end": 19371, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19363, + "end": 19378, + "name": "REVERT", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "tag", + "source": 40, + "value": "70" + }, + { + "begin": 19390, + "end": 19572, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19429, + "end": 19430, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19446, + "end": 19465, + "name": "PUSH [tag]", + "source": 40, + "value": "366" + }, + { + "begin": 19463, + "end": 19464, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19446, + "end": 19465, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19446, + "end": 19465, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19446, + "end": 19465, + "name": "tag", + "source": 40, + "value": "366" + }, + { + "begin": 19446, + "end": 19465, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19441, + "end": 19465, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19441, + "end": 19465, + "name": "POP", + "source": 40 + }, + { + "begin": 19479, + "end": 19498, + "name": "PUSH [tag]", + "source": 40, + "value": "367" + }, + { + "begin": 19496, + "end": 19497, + "name": "DUP4", + "source": 40 + }, + { + "begin": 19479, + "end": 19498, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19479, + "end": 19498, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19479, + "end": 19498, + "name": "tag", + "source": 40, + "value": "367" + }, + { + "begin": 19479, + "end": 19498, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19474, + "end": 19498, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19474, + "end": 19498, + "name": "POP", + "source": 40 + }, + { + "begin": 19517, + "end": 19518, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19507, + "end": 19542, + "name": "PUSH [tag]", + "source": 40, + "value": "368" + }, + { + "begin": 19507, + "end": 19542, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19522, + "end": 19540, + "name": "PUSH [tag]", + "source": 40, + "value": "369" + }, + { + "begin": 19522, + "end": 19540, + "name": "PUSH [tag]", + "source": 40, + "value": "173" + }, + { + "begin": 19522, + "end": 19540, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19522, + "end": 19540, + "name": "tag", + "source": 40, + "value": "369" + }, + { + "begin": 19522, + "end": 19540, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19507, + "end": 19542, + "name": "tag", + "source": 40, + "value": "368" + }, + { + "begin": 19507, + "end": 19542, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19564, + "end": 19565, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19561, + "end": 19562, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19557, + "end": 19566, + "name": "DIV", + "source": 40 + }, + { + "begin": 19552, + "end": 19566, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19552, + "end": 19566, + "name": "POP", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "POP", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "name": "POP", + "source": 40 + }, + { + "begin": 19390, + "end": 19572, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "tag", + "source": 40, + "value": "78" + }, + { + "begin": 19578, + "end": 19774, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19617, + "end": 19621, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19637, + "end": 19656, + "name": "PUSH [tag]", + "source": 40, + "value": "371" + }, + { + "begin": 19654, + "end": 19655, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19637, + "end": 19656, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19637, + "end": 19656, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19637, + "end": 19656, + "name": "tag", + "source": 40, + "value": "371" + }, + { + "begin": 19637, + "end": 19656, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19632, + "end": 19656, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19632, + "end": 19656, + "name": "POP", + "source": 40 + }, + { + "begin": 19670, + "end": 19689, + "name": "PUSH [tag]", + "source": 40, + "value": "372" + }, + { + "begin": 19687, + "end": 19688, + "name": "DUP4", + "source": 40 + }, + { + "begin": 19670, + "end": 19689, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19670, + "end": 19689, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19670, + "end": 19689, + "name": "tag", + "source": 40, + "value": "372" + }, + { + "begin": 19670, + "end": 19689, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19665, + "end": 19689, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19665, + "end": 19689, + "name": "POP", + "source": 40 + }, + { + "begin": 19713, + "end": 19714, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19710, + "end": 19711, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19706, + "end": 19715, + "name": "SUB", + "source": 40 + }, + { + "begin": 19698, + "end": 19715, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19698, + "end": 19715, + "name": "POP", + "source": 40 + }, + { + "begin": 19737, + "end": 19743, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 19731, + "end": 19735, + "name": "DUP2", + "source": 40 + }, + { + "begin": 19728, + "end": 19744, + "name": "GT", + "source": 40 + }, + { + "begin": 19725, + "end": 19767, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 19725, + "end": 19767, + "name": "PUSH [tag]", + "source": 40, + "value": "373" + }, + { + "begin": 19725, + "end": 19767, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19747, + "end": 19765, + "name": "PUSH [tag]", + "source": 40, + "value": "374" + }, + { + "begin": 19747, + "end": 19765, + "name": "PUSH [tag]", + "source": 40, + "value": "172" + }, + { + "begin": 19747, + "end": 19765, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19747, + "end": 19765, + "name": "tag", + "source": 40, + "value": "374" + }, + { + "begin": 19747, + "end": 19765, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19725, + "end": 19767, + "name": "tag", + "source": 40, + "value": "373" + }, + { + "begin": 19725, + "end": 19767, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "POP", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "name": "POP", + "source": 40 + }, + { + "begin": 19578, + "end": 19774, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "tag", + "source": 40, + "value": "80" + }, + { + "begin": 19780, + "end": 19953, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19811, + "end": 19812, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 19828, + "end": 19847, + "name": "PUSH [tag]", + "source": 40, + "value": "376" + }, + { + "begin": 19845, + "end": 19846, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19828, + "end": 19847, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19828, + "end": 19847, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19828, + "end": 19847, + "name": "tag", + "source": 40, + "value": "376" + }, + { + "begin": 19828, + "end": 19847, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19823, + "end": 19847, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19823, + "end": 19847, + "name": "POP", + "source": 40 + }, + { + "begin": 19861, + "end": 19880, + "name": "PUSH [tag]", + "source": 40, + "value": "377" + }, + { + "begin": 19878, + "end": 19879, + "name": "DUP4", + "source": 40 + }, + { + "begin": 19861, + "end": 19880, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 19861, + "end": 19880, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19861, + "end": 19880, + "name": "tag", + "source": 40, + "value": "377" + }, + { + "begin": 19861, + "end": 19880, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19856, + "end": 19880, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19856, + "end": 19880, + "name": "POP", + "source": 40 + }, + { + "begin": 19899, + "end": 19900, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19889, + "end": 19924, + "name": "PUSH [tag]", + "source": 40, + "value": "378" + }, + { + "begin": 19889, + "end": 19924, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 19904, + "end": 19922, + "name": "PUSH [tag]", + "source": 40, + "value": "379" + }, + { + "begin": 19904, + "end": 19922, + "name": "PUSH [tag]", + "source": 40, + "value": "173" + }, + { + "begin": 19904, + "end": 19922, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19904, + "end": 19922, + "name": "tag", + "source": 40, + "value": "379" + }, + { + "begin": 19904, + "end": 19922, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19889, + "end": 19924, + "name": "tag", + "source": 40, + "value": "378" + }, + { + "begin": 19889, + "end": 19924, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19945, + "end": 19946, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19942, + "end": 19943, + "name": "DUP3", + "source": 40 + }, + { + "begin": 19938, + "end": 19947, + "name": "MOD", + "source": 40 + }, + { + "begin": 19933, + "end": 19947, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 19933, + "end": 19947, + "name": "POP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "POP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "name": "POP", + "source": 40 + }, + { + "begin": 19780, + "end": 19953, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "tag", + "source": 40, + "value": "82" + }, + { + "begin": 19959, + "end": 20152, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19998, + "end": 20001, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20017, + "end": 20036, + "name": "PUSH [tag]", + "source": 40, + "value": "381" + }, + { + "begin": 20034, + "end": 20035, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20017, + "end": 20036, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 20017, + "end": 20036, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20017, + "end": 20036, + "name": "tag", + "source": 40, + "value": "381" + }, + { + "begin": 20017, + "end": 20036, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20012, + "end": 20036, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 20012, + "end": 20036, + "name": "POP", + "source": 40 + }, + { + "begin": 20050, + "end": 20069, + "name": "PUSH [tag]", + "source": 40, + "value": "382" + }, + { + "begin": 20067, + "end": 20068, + "name": "DUP4", + "source": 40 + }, + { + "begin": 20050, + "end": 20069, + "name": "PUSH [tag]", + "source": 40, + "value": "125" + }, + { + "begin": 20050, + "end": 20069, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20050, + "end": 20069, + "name": "tag", + "source": 40, + "value": "382" + }, + { + "begin": 20050, + "end": 20069, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20045, + "end": 20069, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 20045, + "end": 20069, + "name": "POP", + "source": 40 + }, + { + "begin": 20092, + "end": 20093, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20089, + "end": 20090, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20085, + "end": 20094, + "name": "ADD", + "source": 40 + }, + { + "begin": 20078, + "end": 20094, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 20078, + "end": 20094, + "name": "POP", + "source": 40 + }, + { + "begin": 20115, + "end": 20121, + "name": "PUSH", + "source": 40, + "value": "FFFF" + }, + { + "begin": 20110, + "end": 20113, + "name": "DUP2", + "source": 40 + }, + { + "begin": 20107, + "end": 20122, + "name": "GT", + "source": 40 + }, + { + "begin": 20104, + "end": 20145, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 20104, + "end": 20145, + "name": "PUSH [tag]", + "source": 40, + "value": "383" + }, + { + "begin": 20104, + "end": 20145, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 20125, + "end": 20143, + "name": "PUSH [tag]", + "source": 40, + "value": "384" + }, + { + "begin": 20125, + "end": 20143, + "name": "PUSH [tag]", + "source": 40, + "value": "172" + }, + { + "begin": 20125, + "end": 20143, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20125, + "end": 20143, + "name": "tag", + "source": 40, + "value": "384" + }, + { + "begin": 20125, + "end": 20143, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20104, + "end": 20145, + "name": "tag", + "source": 40, + "value": "383" + }, + { + "begin": 20104, + "end": 20145, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "POP", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "name": "POP", + "source": 40 + }, + { + "begin": 19959, + "end": 20152, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20158, + "end": 20338, + "name": "tag", + "source": 40, + "value": "85" + }, + { + "begin": 20158, + "end": 20338, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20206, + "end": 20283, + "name": "PUSH", + "source": 40, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 20203, + "end": 20204, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20196, + "end": 20284, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 20303, + "end": 20307, + "name": "PUSH", + "source": 40, + "value": "32" + }, + { + "begin": 20300, + "end": 20301, + "name": "PUSH", + "source": 40, + "value": "4" + }, + { + "begin": 20293, + "end": 20308, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 20327, + "end": 20331, + "name": "PUSH", + "source": 40, + "value": "24" + }, + { + "begin": 20324, + "end": 20325, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20317, + "end": 20332, + "name": "REVERT", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "name": "tag", + "source": 40, + "value": "174" + }, + { + "begin": 20344, + "end": 20462, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20431, + "end": 20455, + "name": "PUSH [tag]", + "source": 40, + "value": "387" + }, + { + "begin": 20449, + "end": 20454, + "name": "DUP2", + "source": 40 + }, + { + "begin": 20431, + "end": 20455, + "name": "PUSH [tag]", + "source": 40, + "value": "122" + }, + { + "begin": 20431, + "end": 20455, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20431, + "end": 20455, + "name": "tag", + "source": 40, + "value": "387" + }, + { + "begin": 20431, + "end": 20455, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20426, + "end": 20429, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20419, + "end": 20456, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "name": "POP", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "name": "POP", + "source": 40 + }, + { + "begin": 20344, + "end": 20462, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "tag", + "source": 40, + "value": "91" + }, + { + "begin": 20468, + "end": 20690, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20561, + "end": 20565, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20599, + "end": 20601, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 20588, + "end": 20597, + "name": "DUP3", + "source": 40 + }, + { + "begin": 20584, + "end": 20602, + "name": "ADD", + "source": 40 + }, + { + "begin": 20576, + "end": 20602, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 20576, + "end": 20602, + "name": "POP", + "source": 40 + }, + { + "begin": 20612, + "end": 20683, + "name": "PUSH [tag]", + "source": 40, + "value": "389" + }, + { + "begin": 20680, + "end": 20681, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 20669, + "end": 20678, + "name": "DUP4", + "source": 40 + }, + { + "begin": 20665, + "end": 20682, + "name": "ADD", + "source": 40 + }, + { + "begin": 20656, + "end": 20662, + "name": "DUP5", + "source": 40 + }, + { + "begin": 20612, + "end": 20683, + "name": "PUSH [tag]", + "source": 40, + "value": "174" + }, + { + "begin": 20612, + "end": 20683, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 20612, + "end": 20683, + "name": "tag", + "source": 40, + "value": "389" + }, + { + "begin": 20612, + "end": 20683, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "POP", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "name": "POP", + "source": 40 + }, + { + "begin": 20468, + "end": 20690, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 611, + "end": 2330, + "name": "tag", + "source": 22, + "value": "47" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "80" + }, + { + "begin": 611, + "end": 2330, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH #[$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "CODECOPY", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "ASSIGNIMMUTABLE", + "source": 22, + "value": "1617" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH #[$]", + "source": 22, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "RETURN", + "source": 22 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220130facd179ff68afe8c4f5f51e9f66c8a009af1f057180af91b116a45a1361c664736f6c63430008140033", + ".code": [ + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "80" + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 611, + "end": 2330, + "name": "MSTORE", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "4" + }, + { + "begin": 611, + "end": 2330, + "name": "CALLDATASIZE", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "LT", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "1" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 611, + "end": 2330, + "name": "CALLDATALOAD", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "E0" + }, + { + "begin": 611, + "end": 2330, + "name": "SHR", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "DUP1", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH", + "source": 22, + "value": "A0A0EA39" + }, + { + "begin": 611, + "end": 2330, + "name": "EQ", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "3" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "2" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMP", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "tag", + "source": 22, + "value": "1" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "CALLDATASIZE", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "PUSH [tag]", + "source": 22, + "value": "2" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "STOP", + "source": 22 + }, + { + "begin": 611, + "end": 2330, + "name": "tag", + "source": 22, + "value": "2" + }, + { + "begin": 611, + "end": 2330, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2649, + "end": 2660, + "name": "PUSH [tag]", + "source": 9, + "value": "8" + }, + { + "begin": 2649, + "end": 2658, + "name": "PUSH [tag]", + "source": 9, + "value": "9" + }, + { + "begin": 2649, + "end": 2660, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2649, + "end": 2660, + "name": "tag", + "source": 9, + "value": "8" + }, + { + "begin": 2649, + "end": 2660, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 611, + "end": 2330, + "name": "STOP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "3" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "CALLVALUE", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "DUP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "ISZERO", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "10" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPI", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2233, + "end": 2328, + "name": "DUP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "REVERT", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "10" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "POP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "11" + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "12" + }, + { + "begin": 2233, + "end": 2328, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "11" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2233, + "end": 2328, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "13" + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH [tag]", + "source": 22, + "value": "14" + }, + { + "begin": 2233, + "end": 2328, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "13" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "PUSH", + "source": 22, + "value": "40" + }, + { + "begin": 2233, + "end": 2328, + "name": "MLOAD", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "DUP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP2", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SUB", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "RETURN", + "source": 22 + }, + { + "begin": 2323, + "end": 2406, + "name": "tag", + "source": 9, + "value": "9" + }, + { + "begin": 2323, + "end": 2406, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2371, + "end": 2399, + "name": "PUSH [tag]", + "source": 9, + "value": "16" + }, + { + "begin": 2381, + "end": 2398, + "name": "PUSH [tag]", + "source": 9, + "value": "17" + }, + { + "begin": 2381, + "end": 2396, + "name": "PUSH [tag]", + "source": 9, + "value": "18" + }, + { + "begin": 2381, + "end": 2398, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2381, + "end": 2398, + "name": "tag", + "source": 9, + "value": "17" + }, + { + "begin": 2381, + "end": 2398, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2371, + "end": 2380, + "name": "PUSH [tag]", + "source": 9, + "value": "19" + }, + { + "begin": 2371, + "end": 2399, + "jumpType": "[in]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2371, + "end": 2399, + "name": "tag", + "source": 9, + "value": "16" + }, + { + "begin": 2371, + "end": 2399, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 2323, + "end": 2406, + "jumpType": "[out]", + "name": "JUMP", + "source": 9 + }, + { + "begin": 2233, + "end": 2328, + "name": "tag", + "source": 22, + "value": "12" + }, + { + "begin": 2233, + "end": 2328, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2283, + "end": 2290, + "name": "PUSH", + "source": 22, + "value": "0" + }, + { + "begin": 2309, + "end": 2321, + "name": "PUSH [tag]", + "source": 22, + "value": "21" + }, + { + "begin": 2309, + "end": 2319, + "name": "PUSH [tag]", + "source": 22, + "value": "22" + }, + { + "begin": 2309, + "end": 2321, + "jumpType": "[in]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2309, + "end": 2321, + "name": "tag", + "source": 22, + "value": "21" + }, + { + "begin": 2309, + "end": 2321, + "name": "JUMPDEST", + "source": 22 + }, + { + "begin": 2302, + "end": 2321, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2302, + "end": 2321, + "name": "POP", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "name": "SWAP1", + "source": 22 + }, + { + "begin": 2233, + "end": 2328, + "jumpType": "[out]", + "name": "JUMP", + "source": 22 + }, + { + "begin": 2023, + "end": 2161, + "name": "tag", + "source": 10, + "value": "18" + }, + { + "begin": 2023, + "end": 2161, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2090, + "end": 2097, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2124, + "end": 2136, + "name": "PUSH [tag]", + "source": 10, + "value": "24" + }, + { + "begin": 2124, + "end": 2134, + "name": "PUSH [tag]", + "source": 10, + "value": "22" + }, + { + "begin": 2124, + "end": 2136, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 2124, + "end": 2136, + "name": "tag", + "source": 10, + "value": "24" + }, + { + "begin": 2124, + "end": 2136, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2116, + "end": 2152, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2116, + "end": 2152, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2152, + "name": "PUSH", + "source": 10, + "value": "5C60DA1B" + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "FFFFFFFF" + }, + { + "begin": 2116, + "end": 2154, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "E0" + }, + { + "begin": 2116, + "end": 2154, + "name": "SHL", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "4" + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "20" + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP4", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SUB", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP7", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "GAS", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "STATICCALL", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ISZERO", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ISZERO", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "26" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPI", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATACOPY", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2116, + "end": 2154, + "name": "REVERT", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "tag", + "source": 10, + "value": "26" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MLOAD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "RETURNDATASIZE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "1F" + }, + { + "begin": 2116, + "end": 2154, + "name": "NOT", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "1F" + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP3", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "AND", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP3", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH", + "source": 10, + "value": "40" + }, + { + "begin": 2116, + "end": 2154, + "name": "MSTORE", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "DUP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "ADD", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "27" + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP2", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "PUSH [tag]", + "source": 10, + "value": "28" + }, + { + "begin": 2116, + "end": 2154, + "jumpType": "[in]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 2116, + "end": 2154, + "name": "tag", + "source": 10, + "value": "27" + }, + { + "begin": 2116, + "end": 2154, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2109, + "end": 2154, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2109, + "end": 2154, + "name": "POP", + "source": 10 + }, + { + "begin": 2023, + "end": 2161, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2023, + "end": 2161, + "jumpType": "[out]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 949, + "end": 1844, + "name": "tag", + "source": 9, + "value": "19" + }, + { + "begin": 949, + "end": 1844, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 1287, + "end": 1301, + "name": "CALLDATASIZE", + "source": 9 + }, + { + "begin": 1284, + "end": 1285, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1281, + "end": 1282, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1268, + "end": 1302, + "name": "CALLDATACOPY", + "source": 9 + }, + { + "begin": 1501, + "end": 1502, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1498, + "end": 1499, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1482, + "end": 1496, + "name": "CALLDATASIZE", + "source": 9 + }, + { + "begin": 1479, + "end": 1480, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1463, + "end": 1477, + "name": "DUP5", + "source": 9 + }, + { + "begin": 1456, + "end": 1461, + "name": "GAS", + "source": 9 + }, + { + "begin": 1443, + "end": 1503, + "name": "DELEGATECALL", + "source": 9 + }, + { + "begin": 1577, + "end": 1593, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1574, + "end": 1575, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1571, + "end": 1572, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1556, + "end": 1594, + "name": "RETURNDATACOPY", + "source": 9 + }, + { + "begin": 1615, + "end": 1621, + "name": "DUP1", + "source": 9 + }, + { + "begin": 1687, + "end": 1688, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1682, + "end": 1748, + "name": "DUP2", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "EQ", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "PUSH [tag]", + "source": 9, + "value": "31" + }, + { + "begin": 1682, + "end": 1748, + "name": "JUMPI", + "source": 9 + }, + { + "begin": 1797, + "end": 1813, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1794, + "end": 1795, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1787, + "end": 1814, + "name": "RETURN", + "source": 9 + }, + { + "begin": 1682, + "end": 1748, + "name": "tag", + "source": 9, + "value": "31" + }, + { + "begin": 1682, + "end": 1748, + "name": "JUMPDEST", + "source": 9 + }, + { + "begin": 1717, + "end": 1733, + "name": "RETURNDATASIZE", + "source": 9 + }, + { + "begin": 1714, + "end": 1715, + "name": "PUSH", + "source": 9, + "value": "0" + }, + { + "begin": 1707, + "end": 1734, + "name": "REVERT", + "source": 9 + }, + { + "begin": 2215, + "end": 2308, + "name": "tag", + "source": 10, + "value": "22" + }, + { + "begin": 2215, + "end": 2308, + "name": "JUMPDEST", + "source": 10 + }, + { + "begin": 2268, + "end": 2275, + "name": "PUSH", + "source": 10, + "value": "0" + }, + { + "begin": 2294, + "end": 2301, + "name": "PUSHIMMUTABLE", + "source": 10, + "value": "1617" + }, + { + "begin": 2287, + "end": 2301, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2287, + "end": 2301, + "name": "POP", + "source": 10 + }, + { + "begin": 2215, + "end": 2308, + "name": "SWAP1", + "source": 10 + }, + { + "begin": 2215, + "end": 2308, + "jumpType": "[out]", + "name": "JUMP", + "source": 10 + }, + { + "begin": 7, + "end": 133, + "name": "tag", + "source": 40, + "value": "33" + }, + { + "begin": 7, + "end": 133, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 44, + "end": 51, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 84, + "end": 126, + "name": "PUSH", + "source": 40, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 77, + "end": 82, + "name": "DUP3", + "source": 40 + }, + { + "begin": 73, + "end": 127, + "name": "AND", + "source": 40 + }, + { + "begin": 62, + "end": 127, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 62, + "end": 127, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "name": "POP", + "source": 40 + }, + { + "begin": 7, + "end": 133, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "tag", + "source": 40, + "value": "34" + }, + { + "begin": 139, + "end": 235, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 176, + "end": 183, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 205, + "end": 229, + "name": "PUSH [tag]", + "source": 40, + "value": "44" + }, + { + "begin": 223, + "end": 228, + "name": "DUP3", + "source": 40 + }, + { + "begin": 205, + "end": 229, + "name": "PUSH [tag]", + "source": 40, + "value": "33" + }, + { + "begin": 205, + "end": 229, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 205, + "end": 229, + "name": "tag", + "source": 40, + "value": "44" + }, + { + "begin": 205, + "end": 229, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 194, + "end": 229, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 194, + "end": 229, + "name": "POP", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "name": "POP", + "source": 40 + }, + { + "begin": 139, + "end": 235, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "name": "tag", + "source": 40, + "value": "35" + }, + { + "begin": 241, + "end": 359, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 328, + "end": 352, + "name": "PUSH [tag]", + "source": 40, + "value": "46" + }, + { + "begin": 346, + "end": 351, + "name": "DUP2", + "source": 40 + }, + { + "begin": 328, + "end": 352, + "name": "PUSH [tag]", + "source": 40, + "value": "34" + }, + { + "begin": 328, + "end": 352, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 328, + "end": 352, + "name": "tag", + "source": 40, + "value": "46" + }, + { + "begin": 328, + "end": 352, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 323, + "end": 326, + "name": "DUP3", + "source": 40 + }, + { + "begin": 316, + "end": 353, + "name": "MSTORE", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "name": "POP", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "name": "POP", + "source": 40 + }, + { + "begin": 241, + "end": 359, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "tag", + "source": 40, + "value": "14" + }, + { + "begin": 365, + "end": 587, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 458, + "end": 462, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 496, + "end": 498, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 485, + "end": 494, + "name": "DUP3", + "source": 40 + }, + { + "begin": 481, + "end": 499, + "name": "ADD", + "source": 40 + }, + { + "begin": 473, + "end": 499, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 473, + "end": 499, + "name": "POP", + "source": 40 + }, + { + "begin": 509, + "end": 580, + "name": "PUSH [tag]", + "source": 40, + "value": "48" + }, + { + "begin": 577, + "end": 578, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 566, + "end": 575, + "name": "DUP4", + "source": 40 + }, + { + "begin": 562, + "end": 579, + "name": "ADD", + "source": 40 + }, + { + "begin": 553, + "end": 559, + "name": "DUP5", + "source": 40 + }, + { + "begin": 509, + "end": 580, + "name": "PUSH [tag]", + "source": 40, + "value": "35" + }, + { + "begin": 509, + "end": 580, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 509, + "end": 580, + "name": "tag", + "source": 40, + "value": "48" + }, + { + "begin": 509, + "end": 580, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "POP", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "name": "POP", + "source": 40 + }, + { + "begin": 365, + "end": 587, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 674, + "end": 791, + "name": "tag", + "source": 40, + "value": "37" + }, + { + "begin": 674, + "end": 791, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 783, + "end": 784, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 780, + "end": 781, + "name": "DUP1", + "source": 40 + }, + { + "begin": 773, + "end": 785, + "name": "REVERT", + "source": 40 + }, + { + "begin": 920, + "end": 1042, + "name": "tag", + "source": 40, + "value": "39" + }, + { + "begin": 920, + "end": 1042, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 993, + "end": 1017, + "name": "PUSH [tag]", + "source": 40, + "value": "53" + }, + { + "begin": 1011, + "end": 1016, + "name": "DUP2", + "source": 40 + }, + { + "begin": 993, + "end": 1017, + "name": "PUSH [tag]", + "source": 40, + "value": "34" + }, + { + "begin": 993, + "end": 1017, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 993, + "end": 1017, + "name": "tag", + "source": 40, + "value": "53" + }, + { + "begin": 993, + "end": 1017, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 986, + "end": 991, + "name": "DUP2", + "source": 40 + }, + { + "begin": 983, + "end": 1018, + "name": "EQ", + "source": 40 + }, + { + "begin": 973, + "end": 1036, + "name": "PUSH [tag]", + "source": 40, + "value": "54" + }, + { + "begin": 973, + "end": 1036, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1032, + "end": 1033, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1029, + "end": 1030, + "name": "DUP1", + "source": 40 + }, + { + "begin": 1022, + "end": 1034, + "name": "REVERT", + "source": 40 + }, + { + "begin": 973, + "end": 1036, + "name": "tag", + "source": 40, + "value": "54" + }, + { + "begin": 973, + "end": 1036, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 920, + "end": 1042, + "name": "POP", + "source": 40 + }, + { + "begin": 920, + "end": 1042, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "tag", + "source": 40, + "value": "40" + }, + { + "begin": 1048, + "end": 1191, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1105, + "end": 1110, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1136, + "end": 1142, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1130, + "end": 1143, + "name": "MLOAD", + "source": 40 + }, + { + "begin": 1121, + "end": 1143, + "name": "SWAP1", + "source": 40 + }, + { + "begin": 1121, + "end": 1143, + "name": "POP", + "source": 40 + }, + { + "begin": 1152, + "end": 1185, + "name": "PUSH [tag]", + "source": 40, + "value": "56" + }, + { + "begin": 1179, + "end": 1184, + "name": "DUP2", + "source": 40 + }, + { + "begin": 1152, + "end": 1185, + "name": "PUSH [tag]", + "source": 40, + "value": "39" + }, + { + "begin": 1152, + "end": 1185, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1152, + "end": 1185, + "name": "tag", + "source": 40, + "value": "56" + }, + { + "begin": 1152, + "end": 1185, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "POP", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "name": "POP", + "source": 40 + }, + { + "begin": 1048, + "end": 1191, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "tag", + "source": 40, + "value": "28" + }, + { + "begin": 1197, + "end": 1548, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1267, + "end": 1273, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1316, + "end": 1318, + "name": "PUSH", + "source": 40, + "value": "20" + }, + { + "begin": 1304, + "end": 1313, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1295, + "end": 1302, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1291, + "end": 1314, + "name": "SUB", + "source": 40 + }, + { + "begin": 1287, + "end": 1319, + "name": "SLT", + "source": 40 + }, + { + "begin": 1284, + "end": 1403, + "name": "ISZERO", + "source": 40 + }, + { + "begin": 1284, + "end": 1403, + "name": "PUSH [tag]", + "source": 40, + "value": "58" + }, + { + "begin": 1284, + "end": 1403, + "name": "JUMPI", + "source": 40 + }, + { + "begin": 1322, + "end": 1401, + "name": "PUSH [tag]", + "source": 40, + "value": "59" + }, + { + "begin": 1322, + "end": 1401, + "name": "PUSH [tag]", + "source": 40, + "value": "37" + }, + { + "begin": 1322, + "end": 1401, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1322, + "end": 1401, + "name": "tag", + "source": 40, + "value": "59" + }, + { + "begin": 1322, + "end": 1401, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1284, + "end": 1403, + "name": "tag", + "source": 40, + "value": "58" + }, + { + "begin": 1284, + "end": 1403, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1442, + "end": 1443, + "name": "PUSH", + "source": 40, + "value": "0" + }, + { + "begin": 1467, + "end": 1531, + "name": "PUSH [tag]", + "source": 40, + "value": "60" + }, + { + "begin": 1523, + "end": 1530, + "name": "DUP5", + "source": 40 + }, + { + "begin": 1514, + "end": 1520, + "name": "DUP3", + "source": 40 + }, + { + "begin": 1503, + "end": 1512, + "name": "DUP6", + "source": 40 + }, + { + "begin": 1499, + "end": 1521, + "name": "ADD", + "source": 40 + }, + { + "begin": 1467, + "end": 1531, + "name": "PUSH [tag]", + "source": 40, + "value": "40" + }, + { + "begin": 1467, + "end": 1531, + "jumpType": "[in]", + "name": "JUMP", + "source": 40 + }, + { + "begin": 1467, + "end": 1531, + "name": "tag", + "source": 40, + "value": "60" + }, + { + "begin": 1467, + "end": 1531, + "name": "JUMPDEST", + "source": 40 + }, + { + "begin": 1457, + "end": 1531, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1457, + "end": 1531, + "name": "POP", + "source": 40 + }, + { + "begin": 1413, + "end": 1541, + "name": "POP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "SWAP3", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "SWAP2", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "POP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "name": "POP", + "source": 40 + }, + { + "begin": 1197, + "end": 1548, + "jumpType": "[out]", + "name": "JUMP", + "source": 40 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": { + "getLBPairBeacon()": "a0a0ea39" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_beaconAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenX\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_binStep\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"getLBPairBeacon\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"this is the Proxy contract of the LBPair.this contract instantiates LBPair contract via OZ Beacon Proxy (LBPairUpgradeableBeacon in this case).\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBPairBeaconProxy.sol\":\"LBPairBeaconProxy\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06bd04b0d6af06424c58c24ad861ac4fbe68ae729c199127f4b64361a0629510\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a9228dd927facb9a400333848e8cf616c7a7f30693563d98a963266dc8ae28a\",\"dweb:/ipfs/Qmehe5JAWCK7g8A9VkS9LpfiNkYzXkrxnXfpvtuqbrA9BA\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x25052a8e6c783ab01f98a9ac7f521649be60b9963f352e2453997ba8fbc2d285\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ba3d98053a310582febe79742e566a36073f1f2645ddc772c638c84ae93b88\",\"dweb:/ipfs/QmTHUMHniPNJ9H2Ui2zgk35CZDSThg2nQ8j5sNXaNarL9D\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x70d9a9cf8d5cc830d7396505ef8eb9686bd0c60a29c6644bd6cc278f9bab8ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719abb402c11be12355088da587ffd971fee1b035b5aa6b1ba3b1a9493d3c1d7\",\"dweb:/ipfs/QmanHMFVDqVtZAFFaH1CeGQWoHWsFnWHH75fCrguwi77Hq\"]},\"src/LBPairBeaconProxy.sol\":{\"keccak256\":\"0x9ef05f6a2b5f9ad4deffb5635999f953d03bdeeca73682a84896c45a44060e7e\",\"license\":\"GPL-3\",\"urls\":[\"bzz-raw://2845d3a65804c8b3f84317b9aef108e46a9e55a7c84295523e0c027e80e24a75\",\"dweb:/ipfs/Qmb3PjAJWVWi1RCz7dy8RjPyAnDRJBU6nnVtxuPo6Pu7Vf\"]},\"src/LBPairUnstructuredStorage.sol\":{\"keccak256\":\"0x0624f033c86f4ba1f900d99163241f879157509e1e93af85fc3418ec87463dcd\",\"license\":\"GPL-3\",\"urls\":[\"bzz-raw://aa622c89b893cc8fea94879e9a7a9d71d265df923f3b884426e2c830cdc8ddca\",\"dweb:/ipfs/QmVM8gFUGnnBSfLJF3mtGYKDChMC5Mt5Q3d6RsEPJ7LpLd\"]},\"src/libraries/StringUtils.sol\":{\"keccak256\":\"0x9734a4e165526a7590c5303bc983a552eadd5a6e20143a4ea731bca9413320d4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1239d261c4e0e136106e30dae7766c3fb6f8ee5867db31c265740236f3ada40f\",\"dweb:/ipfs/QmfYnsyuxNZrK8gp4JbDqjfdoEDhFqsQRkK54Ht68jUDqE\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/LBPairUnstructuredStorage.sol": { + "LBPairUnstructuredStorage": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"src/LBPairUnstructuredStorage.sol\":59:1117 contract LBPairUnstructuredStorage {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"src/LBPairUnstructuredStorage.sol\":59:1117 contract LBPairUnstructuredStorage {... */\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212201e61c5bc20147b6e3277a2a6376d3e360492f4d89df125f22541ac4451fd4c2b64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea26469706673582212201e61c5bc20147b6e3277a2a6376d3e360492f4d89df125f22541ac4451fd4c2b64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1A PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E PUSH2 0xC5BC KECCAK256 EQ PUSH28 0x6E3277A2A6376D3E360492F4D89DF125F22541AC4451FD4C2B64736F PUSH13 0x63430008140033000000000000 ", + "sourceMap": "59:1058:23:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "60806040525f80fdfea26469706673582212201e61c5bc20147b6e3277a2a6376d3e360492f4d89df125f22541ac4451fd4c2b64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E PUSH2 0xC5BC KECCAK256 EQ PUSH28 0x6E3277A2A6376D3E360492F4D89DF125F22541AC4451FD4C2B64736F PUSH13 0x63430008140033000000000000 ", + "sourceMap": "59:1058:23:-:0;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "12400", + "executionCost": "64", + "totalCost": "12464" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "80" + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "40" + }, + { + "begin": 59, + "end": 1117, + "name": "MSTORE", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "CALLVALUE", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "DUP1", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "ISZERO", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH [tag]", + "source": 23, + "value": "1" + }, + { + "begin": 59, + "end": 1117, + "name": "JUMPI", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 59, + "end": 1117, + "name": "DUP1", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "REVERT", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "tag", + "source": 23, + "value": "1" + }, + { + "begin": 59, + "end": 1117, + "name": "JUMPDEST", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "POP", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH #[$]", + "source": 23, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 59, + "end": 1117, + "name": "DUP1", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH [$]", + "source": 23, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 59, + "end": 1117, + "name": "CODECOPY", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 59, + "end": 1117, + "name": "RETURN", + "source": 23 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212201e61c5bc20147b6e3277a2a6376d3e360492f4d89df125f22541ac4451fd4c2b64736f6c63430008140033", + ".code": [ + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "80" + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "40" + }, + { + "begin": 59, + "end": 1117, + "name": "MSTORE", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "PUSH", + "source": 23, + "value": "0" + }, + { + "begin": 59, + "end": 1117, + "name": "DUP1", + "source": 23 + }, + { + "begin": 59, + "end": 1117, + "name": "REVERT", + "source": 23 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LBPairUnstructuredStorage.sol\":\"LBPairUnstructuredStorage\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/LBPairUnstructuredStorage.sol\":{\"keccak256\":\"0x0624f033c86f4ba1f900d99163241f879157509e1e93af85fc3418ec87463dcd\",\"license\":\"GPL-3\",\"urls\":[\"bzz-raw://aa622c89b893cc8fea94879e9a7a9d71d265df923f3b884426e2c830cdc8ddca\",\"dweb:/ipfs/QmVM8gFUGnnBSfLJF3mtGYKDChMC5Mt5Q3d6RsEPJ7LpLd\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/interfaces/ILBFactory.sol": { + "ILBFactory": { + "abi": [ + { + "inputs": [], + "name": "LBFactory__AddressZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__BinStepHasNoPreset", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__BinStepTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__CannotGrantDefaultAdminRole", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "fees", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFees", + "type": "uint256" + } + ], + "name": "LBFactory__FlashLoanFeeAboveMax", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "LBFactory__IdenticalAddresses", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__InvalidHooksParameters", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__LBPairIgnoredIsAlreadyInTheSameState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__LBPairNotCreated", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBFactory__LBPairSafetyCheckFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "LBFactory__PresetIsLockedForUsers", + "type": "error" + }, + { + "inputs": [], + "name": "LBFactory__PresetOpenStateIsAlreadyInTheSameState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "LBFactory__QuoteAssetAlreadyWhitelisted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "LBFactory__QuoteAssetNotWhitelisted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "name": "LBFactory__SameFeeRecipient", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "name": "LBFactory__SameFlashLoanFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "hooksImplementation", + "type": "address" + } + ], + "name": "LBFactory__SameHooksImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + } + ], + "name": "LBFactory__SameHooksParameters", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBFactory__SameImplementation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldRecipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newRecipient", + "type": "address" + } + ], + "name": "FeeRecipientSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldFlashLoanFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFlashLoanFee", + "type": "uint256" + } + ], + "name": "FlashLoanFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pid", + "type": "uint256" + } + ], + "name": "LBPairCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "LBPairIgnoredStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldLBPairImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "LBPairImplementation", + "type": "address" + } + ], + "name": "LBPairImplementationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "PresetOpenStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "PresetRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxVolatilityAccumulator", + "type": "uint256" + } + ], + "name": "PresetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "QuoteAssetRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "addQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "createLBPair", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "pair", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBPair", + "name": "lbPair", + "type": "address" + } + ], + "name": "forceDecay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllBinSteps", + "outputs": [ + { + "internalType": "uint256[]", + "name": "presetsBinStep", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + } + ], + "name": "getAllLBPairs", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBFactory.LBPairInformation[]", + "name": "LBPairsBinStep", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFeeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFlashLoanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "getLBPairAtIndex", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getLBPairBeacon", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "getLBPairInformation", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "contract ILBPair", + "name": "LBPair", + "type": "address" + }, + { + "internalType": "bool", + "name": "createdByOwner", + "type": "bool" + }, + { + "internalType": "bool", + "name": "ignoredForRouting", + "type": "bool" + } + ], + "internalType": "struct ILBFactory.LBPairInformation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxFlashLoanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getMinBinStep", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfLBPairs", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfQuoteAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOpenBinSteps", + "outputs": [ + { + "internalType": "uint256[]", + "name": "openBinStep", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPauserRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "binStep", + "type": "uint256" + } + ], + "name": "getPreset", + "outputs": [ + { + "internalType": "uint256", + "name": "baseFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "filterPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "decayPeriod", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reductionFactor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableFeeControl", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "protocolShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxAccumulator", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getQuoteAssetAtIndex", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "internalType": "address", + "name": "initialOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lbPairBeaconAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "isQuoteAsset", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "removeLBHooksOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "name": "removePreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "quoteAsset", + "type": "address" + } + ], + "name": "removeQuoteAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeRecipient", + "type": "address" + } + ], + "name": "setFeeRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "setFeesParametersOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "flashLoanFee", + "type": "uint256" + } + ], + "name": "setFlashLoanFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "onHooksSetData", + "type": "bytes" + } + ], + "name": "setLBHooksParametersOnPair", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "ignored", + "type": "bool" + } + ], + "name": "setLBPairIgnored", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "setPreset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "isOpen", + "type": "bool" + } + ], + "name": "setPresetOpenState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Factory Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "addQuoteAsset(address)": "5a440923", + "createLBPair(address,address,uint24,uint16)": "659ac74b", + "forceDecay(address)": "3c78a941", + "getAllBinSteps()": "5b35875c", + "getAllLBPairs(address,address)": "6622e0d7", + "getFeeRecipient()": "4ccb20c0", + "getFlashLoanFee()": "fd90c2be", + "getLBPairAtIndex(uint256)": "7daf5d66", + "getLBPairBeacon()": "a0a0ea39", + "getLBPairInformation(address,address,uint256)": "704037bd", + "getMaxFlashLoanFee()": "8ce9aa1c", + "getMinBinStep()": "701ab8c1", + "getNumberOfLBPairs()": "4e937c3a", + "getNumberOfQuoteAssets()": "80c5061e", + "getOpenBinSteps()": "0282c9c1", + "getPauserRole()": "c1b931be", + "getPreset(uint256)": "aabc4b3c", + "getQuoteAssetAtIndex(uint256)": "0752092b", + "initialize(address,address,uint256,address)": "be203094", + "isQuoteAsset(address)": "27721842", + "removeLBHooksOnPair(address,address,uint16)": "2cc06b8c", + "removePreset(uint16)": "e203a31f", + "removeQuoteAsset(address)": "ddbfd941", + "setFeeRecipient(address)": "e74b981b", + "setFeesParametersOnPair(address,address,uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "093ff769", + "setFlashLoanFee(uint256)": "e92d0d5d", + "setLBHooksParametersOnPair(address,address,uint16,bytes32,bytes)": "3a2f1a91", + "setLBPairIgnored(address,address,uint16,bool)": "69d56ea3", + "setPreset(uint16,uint16,uint16,uint16,uint16,uint24,uint16,uint24,bool)": "379ee803", + "setPresetOpenState(uint16,bool)": "4cd161d3" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBFactory__AddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepHasNoPreset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__BinStepTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__CannotGrantDefaultAdminRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFees\",\"type\":\"uint256\"}],\"name\":\"LBFactory__FlashLoanFeeAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LBFactory__IdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__InvalidHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__LBPairIgnoredIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__LBPairNotCreated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__LBPairSafetyCheckFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"LBFactory__PresetIsLockedForUsers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBFactory__PresetOpenStateIsAlreadyInTheSameState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetAlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"LBFactory__QuoteAssetNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"LBFactory__SameFeeRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"LBFactory__SameFlashLoanFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hooksImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameHooksImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"LBFactory__SameHooksParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBFactory__SameImplementation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"FeeRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFlashLoanFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFee\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"LBPairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"LBPairIgnoredStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLBPairImplementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"LBPairImplementation\",\"type\":\"address\"}],\"name\":\"LBPairImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"PresetOpenStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"PresetRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint256\"}],\"name\":\"PresetSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"QuoteAssetRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"addQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"createLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"lbPair\",\"type\":\"address\"}],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"presetsBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"name\":\"getAllLBPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation[]\",\"name\":\"LBPairsBinStep\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getLBPairAtIndex\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPairBeacon\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getLBPairInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"contract ILBPair\",\"name\":\"LBPair\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"createdByOwner\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ignoredForRouting\",\"type\":\"bool\"}],\"internalType\":\"struct ILBFactory.LBPairInformation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxFlashLoanFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinBinStep\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfLBPairs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfQuoteAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenBinSteps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"openBinStep\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauserRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"binStep\",\"type\":\"uint256\"}],\"name\":\"getPreset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filterPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reductionFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableFeeControl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAccumulator\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getQuoteAssetAtIndex\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"lbPairBeaconAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isQuoteAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removeLBHooksOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"name\":\"removePreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"quoteAsset\",\"type\":\"address\"}],\"name\":\"removeQuoteAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"setFeeRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setFeesParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flashLoanFee\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setLBHooksParametersOnPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"ignored\",\"type\":\"bool\"}],\"name\":\"setLBPairIgnored\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPreset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"setPresetOpenState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Factory Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface of LBFactory contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBFactory.sol\":\"ILBFactory\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface of LBFactory contract", + "version": 1 + } + } + }, + "src/interfaces/ILBFlashLoanCallback.sol": { + "ILBFlashLoanCallback": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "LBFlashLoanCallback", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Flashloan Callback Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "LBFlashLoanCallback(address,address,address,bytes32,bytes32,bytes)": "1faa6b87" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"LBFlashLoanCallback\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Flashloan Callback Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Required interface to interact with LB flash loans\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBFlashLoanCallback.sol\":\"ILBFlashLoanCallback\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Required interface to interact with LB flash loans", + "version": 1 + } + } + }, + "src/interfaces/ILBHooks.sol": { + "ILBHooks": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "afterBatchTransferFrom", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amountsToBurn", + "type": "uint256[]" + } + ], + "name": "afterBurn", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "fees", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "feesReceived", + "type": "bytes32" + } + ], + "name": "afterFlashLoan", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32[]", + "name": "liquidityConfigs", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "amountsIn", + "type": "bytes32" + } + ], + "name": "afterMint", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "amountsOut", + "type": "bytes32" + } + ], + "name": "afterSwap", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "beforeBatchTransferFrom", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amountsToBurn", + "type": "uint256[]" + } + ], + "name": "beforeBurn", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + } + ], + "name": "beforeFlashLoan", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32[]", + "name": "liquidityConfigs", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "amountsReceived", + "type": "bytes32" + } + ], + "name": "beforeMint", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "amountsIn", + "type": "bytes32" + } + ], + "name": "beforeSwap", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getLBPair", + "outputs": [ + { + "internalType": "contract ILBPair", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isLinked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "onHooksSetData", + "type": "bytes" + } + ], + "name": "onHooksSet", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "afterBatchTransferFrom(address,address,address,uint256[],uint256[])": "67ddb278", + "afterBurn(address,address,address,uint256[],uint256[])": "fdc27257", + "afterFlashLoan(address,address,bytes32,bytes32)": "60bed5f3", + "afterMint(address,address,bytes32[],bytes32)": "7a51a4c6", + "afterSwap(address,address,bool,bytes32)": "53e8079b", + "beforeBatchTransferFrom(address,address,address,uint256[],uint256[])": "79c8ccf7", + "beforeBurn(address,address,address,uint256[],uint256[])": "ea9db9d3", + "beforeFlashLoan(address,address,bytes32)": "505d9033", + "beforeMint(address,address,bytes32[],bytes32)": "0d4abdb3", + "beforeSwap(address,address,bool,bytes32)": "feee3735", + "getLBPair()": "5f9c01b1", + "isLinked()": "09fa1f90", + "onHooksSet(bytes32,bytes)": "4e430b5a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"afterBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"afterBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"fees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"feesReceived\",\"type\":\"bytes32\"}],\"name\":\"afterFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"afterMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"name\":\"afterSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"beforeBatchTransferFrom\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"beforeBurn\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"}],\"name\":\"beforeFlashLoan\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"}],\"name\":\"beforeMint\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"}],\"name\":\"beforeSwap\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBPair\",\"outputs\":[{\"internalType\":\"contract ILBPair\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLinked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"onHooksSet\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBHooks.sol\":\"ILBHooks\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/interfaces/ILBPair.sol": { + "ILBPair": { + "abi": [ + { + "inputs": [], + "name": "LBPair__AddressZero", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__EmptyMarketConfigs", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__FlashLoanCallbackFailed", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__FlashLoanInsufficientAmount", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InsufficientAmountIn", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InsufficientAmountOut", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InvalidHooks", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InvalidInput", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__InvalidStaticFeeParameters", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__MaxTotalFeeExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__OnlyFactory", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__OnlyProtocolFeeRecipient", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__OutOfLiquidity", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__TokenNotSupported", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "LBPair__ZeroAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "LBPair__ZeroAmountsOut", + "type": "error" + }, + { + "inputs": [], + "name": "LBPair__ZeroBorrowAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "LBPair__ZeroShares", + "type": "error" + }, + { + "inputs": [], + "name": "LBToken__AddressThisOrZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__BurnExceedsBalance", + "type": "error" + }, + { + "inputs": [], + "name": "LBToken__InvalidLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "LBToken__SelfApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "LBToken__SpenderNotApproved", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__TransferExceedsBalance", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "CollectedProtocolFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "id", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "CompositionFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "amounts", + "type": "bytes32[]" + } + ], + "name": "DepositedToBins", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract ILBFlashLoanCallback", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "FlashLoan", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "idReference", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "volatilityReference", + "type": "uint24" + } + ], + "name": "ForcedDecay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + } + ], + "name": "HooksParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "oracleLength", + "type": "uint16" + } + ], + "name": "OracleLengthIncreased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "StaticFeeParametersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "id", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "amountsIn", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "amountsOut", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint24", + "name": "volatilityAccumulator", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "totalFees", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "protocolFees", + "type": "bytes32" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "amounts", + "type": "bytes32[]" + } + ], + "name": "WithdrawnFromBins", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "approveForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "batchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amountsToBurn", + "type": "uint256[]" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "amounts", + "type": "bytes32[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectProtocolFees", + "outputs": [ + { + "internalType": "bytes32", + "name": "collectedProtocolFees", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILBFlashLoanCallback", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "amounts", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "flashLoan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "forceDecay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getActiveId", + "outputs": [ + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getBin", + "outputs": [ + { + "internalType": "uint128", + "name": "binReserveX", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "binReserveY", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBinStep", + "outputs": [ + { + "internalType": "uint16", + "name": "binStep", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFactory", + "outputs": [ + { + "internalType": "contract ILBFactory", + "name": "factory", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "getIdFromPrice", + "outputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLBHooksParameters", + "outputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getNextNonEmptyBin", + "outputs": [ + { + "internalType": "uint24", + "name": "nextId", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOracleParameters", + "outputs": [ + { + "internalType": "uint8", + "name": "sampleLifetime", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "size", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "activeSize", + "type": "uint16" + }, + { + "internalType": "uint40", + "name": "lastUpdated", + "type": "uint40" + }, + { + "internalType": "uint40", + "name": "firstTimestamp", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint40", + "name": "lookupTimestamp", + "type": "uint40" + } + ], + "name": "getOracleSampleAt", + "outputs": [ + { + "internalType": "uint64", + "name": "cumulativeId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "cumulativeVolatility", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "cumulativeBinCrossed", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "id", + "type": "uint24" + } + ], + "name": "getPriceFromId", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getProtocolFees", + "outputs": [ + { + "internalType": "uint128", + "name": "protocolFeeX", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "protocolFeeY", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint128", + "name": "reserveX", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "reserveY", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStaticFeeParameters", + "outputs": [ + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapIn", + "outputs": [ + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOutLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint128", + "name": "amountIn", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + } + ], + "name": "getSwapOut", + "outputs": [ + { + "internalType": "uint128", + "name": "amountInLeft", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amountOut", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "fee", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenX", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "tokenX", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenY", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "tokenY", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVariableFeeParameters", + "outputs": [ + { + "internalType": "uint24", + "name": "volatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "volatilityReference", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "idReference", + "type": "uint24" + }, + { + "internalType": "uint40", + "name": "timeOfLastUpdate", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newLength", + "type": "uint16" + } + ], + "name": "increaseOracleLength", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + }, + { + "internalType": "uint24", + "name": "activeId", + "type": "uint24" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes32[]", + "name": "liquidityConfigs", + "type": "bytes32[]" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bytes32", + "name": "amountsReceived", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "amountsLeft", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "liquidityMinted", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hooksParameters", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "onHooksSetData", + "type": "bytes" + } + ], + "name": "setHooksParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "baseFactor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "filterPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "decayPeriod", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reductionFactor", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "variableFeeControl", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "protocolShare", + "type": "uint16" + }, + { + "internalType": "uint24", + "name": "maxVolatilityAccumulator", + "type": "uint24" + } + ], + "name": "setStaticFeeParameters", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "swapForY", + "type": "bool" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "swap", + "outputs": [ + { + "internalType": "bytes32", + "name": "amountsOut", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "approveForAll(address,bool)": "e584b654", + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "batchTransferFrom(address,address,uint256[],uint256[])": "17fad7fc", + "burn(address,address,uint256[],uint256[])": "c9939f5e", + "collectProtocolFees()": "a1af5b9a", + "flashLoan(address,bytes32,bytes)": "ea3446bf", + "forceDecay()": "d3b9fbe4", + "getActiveId()": "dbe65edc", + "getBin(uint24)": "0abe9688", + "getBinStep()": "17f11ecc", + "getFactory()": "88cc58e4", + "getIdFromPrice(uint256)": "f5e29329", + "getLBHooksParameters()": "781a8915", + "getNextNonEmptyBin(bool,uint24)": "a41a01fb", + "getOracleParameters()": "55182894", + "getOracleSampleAt(uint40)": "8940a16a", + "getPriceFromId(uint24)": "4c7cffbd", + "getProtocolFees()": "d8dfcea0", + "getReserves()": "0902f1ac", + "getStaticFeeParameters()": "7ca0de30", + "getSwapIn(uint128,bool)": "abcd7830", + "getSwapOut(uint128,bool)": "e77366f8", + "getTokenX()": "05e8746d", + "getTokenY()": "da10610c", + "getVariableFeeParameters()": "8d7024e5", + "increaseOracleLength(uint16)": "c7bd6586", + "initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)": "47973bff", + "isApprovedForAll(address,address)": "e985e9c5", + "mint(address,bytes32[],address)": "383d15c5", + "name()": "06fdde03", + "setHooksParameters(bytes32,bytes)": "1b057f6d", + "setStaticFeeParameters(uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "6653851a", + "swap(bool,address)": "53c059a0", + "symbol()": "95d89b41", + "totalSupply(uint256)": "bd85b039" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBPair__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__EmptyMarketConfigs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanCallbackFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__FlashLoanInsufficientAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InsufficientAmountOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidHooks\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__InvalidStaticFeeParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__MaxTotalFeeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyFactory\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OnlyProtocolFeeRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__OutOfLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__TokenNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroAmountsOut\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBPair__ZeroBorrowAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"LBPair__ZeroShares\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CollectedProtocolFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"CompositionFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"DepositedToBins\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"}],\"name\":\"ForcedDecay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"name\":\"HooksParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"oracleLength\",\"type\":\"uint16\"}],\"name\":\"OracleLengthIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"StaticFeeParametersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsIn\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"totalFees\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"protocolFees\",\"type\":\"bytes32\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"name\":\"WithdrawnFromBins\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToBurn\",\"type\":\"uint256[]\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"amounts\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"collectedProtocolFees\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILBFlashLoanCallback\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"amounts\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceDecay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getActiveId\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getBin\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"binReserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"binReserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBinStep\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"binStep\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactory\",\"outputs\":[{\"internalType\":\"contract ILBFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"getIdFromPrice\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLBHooksParameters\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getNextNonEmptyBin\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"nextId\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOracleParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sampleLifetime\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"size\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"activeSize\",\"type\":\"uint16\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"firstTimestamp\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"lookupTimestamp\",\"type\":\"uint40\"}],\"name\":\"getOracleSampleAt\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"cumulativeId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeVolatility\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"cumulativeBinCrossed\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"id\",\"type\":\"uint24\"}],\"name\":\"getPriceFromId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"protocolFeeX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"reserveX\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"reserveY\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticFeeParameters\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapIn\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOutLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"}],\"name\":\"getSwapOut\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountInLeft\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenX\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenY\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenY\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVariableFeeParameters\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"volatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"volatilityReference\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"idReference\",\"type\":\"uint24\"},{\"internalType\":\"uint40\",\"name\":\"timeOfLastUpdate\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newLength\",\"type\":\"uint16\"}],\"name\":\"increaseOracleLength\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"activeId\",\"type\":\"uint24\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"liquidityConfigs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsReceived\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"amountsLeft\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"liquidityMinted\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hooksParameters\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"onHooksSetData\",\"type\":\"bytes\"}],\"name\":\"setHooksParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"baseFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"filterPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"decayPeriod\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reductionFactor\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"variableFeeControl\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"protocolShare\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"maxVolatilityAccumulator\",\"type\":\"uint24\"}],\"name\":\"setStaticFeeParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"swapForY\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"amountsOut\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBPair.sol\":\"ILBPair\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/interfaces/ILBToken.sol": { + "ILBToken": { + "abi": [ + { + "inputs": [], + "name": "LBToken__AddressThisOrZero", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__BurnExceedsBalance", + "type": "error" + }, + { + "inputs": [], + "name": "LBToken__InvalidLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "LBToken__SelfApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "LBToken__SpenderNotApproved", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "LBToken__TransferExceedsBalance", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "approveForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "batchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Token Interface", + "version": 1 + }, + "evm": { + "assembly": "", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "gasEstimates": null, + "legacyAssembly": null, + "methodIdentifiers": { + "approveForAll(address,bool)": "e584b654", + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "batchTransferFrom(address,address,uint256[],uint256[])": "17fad7fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply(uint256)": "bd85b039" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"LBToken__AddressThisOrZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__BurnExceedsBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LBToken__InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LBToken__SelfApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"LBToken__SpenderNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LBToken__TransferExceedsBalance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"approveForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Token Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface to interact with the LBToken.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ILBToken.sol\":\"ILBToken\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Interface to interact with the LBToken.", + "version": 1 + } + } + }, + "src/libraries/Constants.sol": { + "Constants": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "stateVariables": { + "CALLBACK_SUCCESS": { + "details": "The expected return after a successful flash loan" + } + }, + "title": "Liquidity Book Constants Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/Constants.sol\":167:939 library Constants {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/Constants.sol\":167:939 library Constants {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E 0xED 0x24 0xCB PUSH0 0xB2 0xCA DUP1 SELFDESTRUCT CALLDATACOPY 0xF9 0xCE SWAP13 PUSH28 0xC678255B24E9614B628977A43131DD86854964736F6C634300081400 CALLER ", + "sourceMap": "167:772:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E 0xED 0x24 0xCB PUSH0 0xB2 0xCA DUP1 SELFDESTRUCT CALLDATACOPY 0xF9 0xCE SWAP13 PUSH28 0xC678255B24E9614B628977A43131DD86854964736F6C634300081400 CALLER ", + "sourceMap": "167:772:29:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 167, + "end": 939, + "name": "PUSH #[$]", + "source": 29, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH [$]", + "source": 29, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "B" + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "CODECOPY", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "DUP1", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "MLOAD", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "BYTE", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "73" + }, + { + "begin": 167, + "end": 939, + "name": "EQ", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH [tag]", + "source": 29, + "value": "1" + }, + { + "begin": 167, + "end": 939, + "name": "JUMPI", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "4" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "24" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "REVERT", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "tag", + "source": 29, + "value": "1" + }, + { + "begin": 167, + "end": 939, + "name": "JUMPDEST", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "ADDRESS", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "73" + }, + { + "begin": 167, + "end": 939, + "name": "DUP2", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE8", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "DUP3", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "DUP2", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "RETURN", + "source": 29 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212205eed24cb5fb2ca80ff37f9ce9c7bc678255b24e9614b628977a43131dd86854964736f6c63430008140033", + ".code": [ + { + "begin": 167, + "end": 939, + "name": "PUSHDEPLOYADDRESS", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "ADDRESS", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "EQ", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "80" + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "40" + }, + { + "begin": 167, + "end": 939, + "name": "MSTORE", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "PUSH", + "source": 29, + "value": "0" + }, + { + "begin": 167, + "end": 939, + "name": "DUP1", + "source": 29 + }, + { + "begin": 167, + "end": 939, + "name": "REVERT", + "source": 29 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CALLBACK_SUCCESS\":{\"details\":\"The expected return after a successful flash loan\"}},\"title\":\"Liquidity Book Constants Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Set of constants for Liquidity Book contracts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Constants.sol\":\"Constants\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Set of constants for Liquidity Book contracts", + "version": 1 + } + } + }, + "src/libraries/Hooks.sol": { + "Hooks": { + "abi": [ + { + "inputs": [], + "name": "Hooks__CallFailed", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Hooks library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/Hooks.sol\":230:14447 library Hooks {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/Hooks.sol\":230:14447 library Hooks {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 PUSH7 0x422DAA5202216D 0xC7 DUP7 STOP PUSH19 0x665596BFD1D13C95B19269B90B4BE768574D6F PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "230:14217:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 PUSH7 0x422DAA5202216D 0xC7 DUP7 STOP PUSH19 0x665596BFD1D13C95B19269B90B4BE768574D6F PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "230:14217:30:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_safeCall(bytes32,bytes memory)": "infinite", + "afterBatchTransferFrom(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "afterBurn(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "afterFlashLoan(bytes32,address,address,bytes32,bytes32)": "infinite", + "afterMint(bytes32,address,address,bytes32[] calldata,bytes32)": "infinite", + "afterSwap(bytes32,address,address,bool,bytes32)": "infinite", + "beforeBatchTransferFrom(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "beforeBurn(bytes32,address,address,address,uint256[] calldata,uint256[] calldata)": "infinite", + "beforeFlashLoan(bytes32,address,address,bytes32)": "infinite", + "beforeMint(bytes32,address,address,bytes32[] calldata,bytes32)": "infinite", + "beforeSwap(bytes32,address,address,bool,bytes32)": "infinite", + "decode(bytes32)": "infinite", + "encode(struct Hooks.Parameters memory)": "infinite", + "getFlags(bytes32)": "infinite", + "getHooks(bytes32)": "infinite", + "onHooksSet(bytes32,bytes calldata)": "infinite", + "setHooks(bytes32,address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 230, + "end": 14447, + "name": "PUSH #[$]", + "source": 30, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH [$]", + "source": 30, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "B" + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "CODECOPY", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP1", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "MLOAD", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "BYTE", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "73" + }, + { + "begin": 230, + "end": 14447, + "name": "EQ", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH [tag]", + "source": 30, + "value": "1" + }, + { + "begin": 230, + "end": 14447, + "name": "JUMPI", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "4" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "24" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "REVERT", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "tag", + "source": 30, + "value": "1" + }, + { + "begin": 230, + "end": 14447, + "name": "JUMPDEST", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "ADDRESS", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "73" + }, + { + "begin": 230, + "end": 14447, + "name": "DUP2", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE8", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP3", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "DUP2", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "RETURN", + "source": 30 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212208566422daa5202216dc7860072665596bfd1d13c95b19269b90b4be768574d6f64736f6c63430008140033", + ".code": [ + { + "begin": 230, + "end": 14447, + "name": "PUSHDEPLOYADDRESS", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "ADDRESS", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "EQ", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "80" + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "40" + }, + { + "begin": 230, + "end": 14447, + "name": "MSTORE", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "PUSH", + "source": 30, + "value": "0" + }, + { + "begin": 230, + "end": 14447, + "name": "DUP1", + "source": 30 + }, + { + "begin": 230, + "end": 14447, + "name": "REVERT", + "source": 30 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Hooks__CallFailed\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Hooks library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions that should be used to interact with hooks\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Hooks.sol\":\"Hooks\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"src/interfaces/ILBFactory.sol\":{\"keccak256\":\"0xddcd3890949ab5bb4731a14e4a9c77ec5f08afb45489cf66114579f605fb1f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26a2573f58163514a154a55c62d55cfa05c66fe4169c56b0d94c660a5561f61e\",\"dweb:/ipfs/QmPTiFGfzFBT8jgsXSYpADkjwcgqRPUsewXvZiMzJ1PgrK\"]},\"src/interfaces/ILBFlashLoanCallback.sol\":{\"keccak256\":\"0xd6241939a66626bbfa60eac46b5fc566f55ff302c7b6eb124d453be0e1a3117b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a8d3894f2e0820b6bcd973d7de2450fa310440572a5d83ff55ef0d5b70d90a\",\"dweb:/ipfs/QmXeJXvy2sSW77y1Wotp9HLe9chgs6XM62toq9EyEGVXtt\"]},\"src/interfaces/ILBHooks.sol\":{\"keccak256\":\"0xad32a000f052e48266932bc3eb9818de0a80b77235ae5d44d9a5286264992f1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://044044be7373a509f946ede2ee05580f55438ce317e3c538a888208f18f39109\",\"dweb:/ipfs/QmWK93hkd91t7LQRnVN1QZXUniCLh5HifXrww5BhRxaD9n\"]},\"src/interfaces/ILBPair.sol\":{\"keccak256\":\"0xf020988a240ecda054cadf92745ef85dadcf1df00a86cef5eb2b5e175f3e401d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df1a78f215bc8c00032aa9d52f07ea396495e2a20a69041552001cf72c939d\",\"dweb:/ipfs/Qma6t4CfwRftoAUvsLLVpk9HZ2FwNjCisfHZGnnw7aR8dW\"]},\"src/interfaces/ILBToken.sol\":{\"keccak256\":\"0xe7b35ed8bfc934c205870fbff04dcdcfb7b86947ab55053d5b5d1deebf2a22d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f9d85fc124b31d5a76279e31190d23d48cdd715e5eea97c99ae64feed3301e6\",\"dweb:/ipfs/QmQdrU2VcSQLTG9yCtJK7AexWCEmUX46Ko4eEBzeZV5jKg\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xa68b3308bf297c2cd03f2e4f28a6a5e0e68c415d617672bf356aadff56c53959\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9a6b20fd8aeefacb64dbf3b463b0c10cb8848fd61f4f3344ed53731ffaf686a\",\"dweb:/ipfs/QmRvcBNazvsKvfDXQtdQj3GczaNLbFcqVYdcJCoRA6MDop\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions that should be used to interact with hooks", + "version": 1 + } + } + }, + "src/libraries/ImmutableClone.sol": { + "ImmutableClone": { + "abi": [ + { + "inputs": [], + "name": "DeploymentFailed", + "type": "error" + }, + { + "inputs": [], + "name": "PackedDataTooBig", + "type": "error" + } + ], + "devdoc": { + "author": "Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)Minimal proxy by 0age (https://github.com/0age)Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)", + "details": "Minimal proxy: Although the sw0nt pattern saves 5 gas over the erc-1167 pattern during runtime, it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern, which saves 4 gas over the erc-1167 pattern during runtime, and has the smallest bytecode.Clones with immutable args (CWIA): The implementation of CWIA here doesn't implements a `receive()` as it is not needed for LB.", + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Immutable Clone Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/ImmutableClone.sol\":895:15029 library ImmutableClone {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/ImmutableClone.sol\":895:15029 library ImmutableClone {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212209bd19058450423924a413cde796fd5fd226531614d9168dc39d9b3106ee1b28a64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209bd19058450423924a413cde796fd5fd226531614d9168dc39d9b3106ee1b28a64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xD1 SWAP1 PC GASLIMIT DIV 0x23 SWAP3 0x4A COINBASE EXTCODECOPY 0xDE PUSH26 0x6FD5FD226531614D9168DC39D9B3106EE1B28A64736F6C634300 ADDMOD EQ STOP CALLER ", + "sourceMap": "895:14134:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209bd19058450423924a413cde796fd5fd226531614d9168dc39d9b3106ee1b28a64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xD1 SWAP1 PC GASLIMIT DIV 0x23 SWAP3 0x4A COINBASE EXTCODECOPY 0xDE PUSH26 0x6FD5FD226531614D9168DC39D9B3106EE1B28A64736F6C634300 ADDMOD EQ STOP CALLER ", + "sourceMap": "895:14134:31:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "cloneDeterministic(address,bytes memory,bytes32)": "infinite", + "initCodeHash(address,bytes memory)": "infinite", + "predictDeterministicAddress(address,bytes memory,bytes32,address)": "infinite", + "predictDeterministicAddress(bytes32,bytes32,address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 895, + "end": 15029, + "name": "PUSH #[$]", + "source": 31, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH [$]", + "source": 31, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "B" + }, + { + "begin": 895, + "end": 15029, + "name": "DUP3", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "DUP3", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "DUP3", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "CODECOPY", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "DUP1", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "MLOAD", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 895, + "end": 15029, + "name": "BYTE", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "73" + }, + { + "begin": 895, + "end": 15029, + "name": "EQ", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH [tag]", + "source": 31, + "value": "1" + }, + { + "begin": 895, + "end": 15029, + "name": "JUMPI", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 895, + "end": 15029, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "4" + }, + { + "begin": 895, + "end": 15029, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "24" + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 895, + "end": 15029, + "name": "REVERT", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "tag", + "source": 31, + "value": "1" + }, + { + "begin": 895, + "end": 15029, + "name": "JUMPDEST", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "ADDRESS", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 895, + "end": 15029, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "73" + }, + { + "begin": 895, + "end": 15029, + "name": "DUP2", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "MSTORE8", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "DUP3", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "DUP2", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "RETURN", + "source": 31 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212209bd19058450423924a413cde796fd5fd226531614d9168dc39d9b3106ee1b28a64736f6c63430008140033", + ".code": [ + { + "begin": 895, + "end": 15029, + "name": "PUSHDEPLOYADDRESS", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "ADDRESS", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "EQ", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "80" + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "40" + }, + { + "begin": 895, + "end": 15029, + "name": "MSTORE", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "PUSH", + "source": 31, + "value": "0" + }, + { + "begin": 895, + "end": 15029, + "name": "DUP1", + "source": 31 + }, + { + "begin": 895, + "end": 15029, + "name": "REVERT", + "source": 31 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DeploymentFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PackedDataTooBig\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)Minimal proxy by 0age (https://github.com/0age)Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\",\"details\":\"Minimal proxy: Although the sw0nt pattern saves 5 gas over the erc-1167 pattern during runtime, it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern, which saves 4 gas over the erc-1167 pattern during runtime, and has the smallest bytecode.Clones with immutable args (CWIA): The implementation of CWIA here doesn't implements a `receive()` as it is not needed for LB.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Immutable Clone Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Minimal immutable proxy library.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/ImmutableClone.sol\":\"ImmutableClone\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/ImmutableClone.sol\":{\"keccak256\":\"0xb11421c05ec91ca74a2ce9c9108fb6a13be96177a072383c8e02490be28590bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3589fceccbeb601e4a2565797acad2ffcc6000ea682ce158d367c541d3d6054a\",\"dweb:/ipfs/QmNz2CLyArtuxTE652mtVfVKysZ8hY99RdssPUjKhVx7ZL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Minimal immutable proxy library.", + "version": 1 + } + } + }, + "src/libraries/PairParameterHelper.sol": { + "PairParameterHelper": { + "abi": [ + { + "inputs": [], + "name": "PairParametersHelper__InvalidParameter", + "type": "error" + } + ], + "devdoc": { + "details": "This library contains functions to get and set parameters of a pair The parameters are stored in a single bytes32 variable in the following format: [0 - 16[: base factor (16 bits) [16 - 28[: filter period (12 bits) [28 - 40[: decay period (12 bits) [40 - 54[: reduction factor (14 bits) [54 - 78[: variable fee control (24 bits) [78 - 92[: protocol share (14 bits) [92 - 112[: max volatility accumulator (20 bits) [112 - 132[: volatility accumulator (20 bits) [132 - 152[: volatility reference (20 bits) [152 - 176[: index reference (24 bits) [176 - 216[: time of last update (40 bits) [216 - 232[: oracle index (16 bits) [232 - 256[: active index (24 bits)", + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Pair Parameter Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/PairParameterHelper.sol\":964:17954 library PairParameterHelper {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/PairParameterHelper.sol\":964:17954 library PairParameterHelper {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E PUSH17 0xFBB9D7240B07EF4D5094E64612DE1C56F 0xF9 0xDA 0x5C 0xE6 0x49 DUP7 PUSH23 0x94BDA32A61E464736F6C63430008140033000000000000 ", + "sourceMap": "964:16990:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E PUSH17 0xFBB9D7240B07EF4D5094E64612DE1C56F 0xF9 0xDA 0x5C 0xE6 0x49 DUP7 PUSH23 0x94BDA32A61E464736F6C63430008140033000000000000 ", + "sourceMap": "964:16990:32:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "getActiveId(bytes32)": "infinite", + "getBaseFactor(bytes32)": "infinite", + "getBaseFee(bytes32,uint16)": "infinite", + "getDecayPeriod(bytes32)": "infinite", + "getDeltaId(bytes32,uint24)": "infinite", + "getFilterPeriod(bytes32)": "infinite", + "getIdReference(bytes32)": "infinite", + "getMaxVolatilityAccumulator(bytes32)": "infinite", + "getOracleId(bytes32)": "infinite", + "getProtocolShare(bytes32)": "infinite", + "getReductionFactor(bytes32)": "infinite", + "getTimeOfLastUpdate(bytes32)": "infinite", + "getTotalFee(bytes32,uint16)": "infinite", + "getVariableFee(bytes32,uint16)": "infinite", + "getVariableFeeControl(bytes32)": "infinite", + "getVolatilityAccumulator(bytes32)": "infinite", + "getVolatilityReference(bytes32)": "infinite", + "setActiveId(bytes32,uint24)": "infinite", + "setOracleId(bytes32,uint16)": "infinite", + "setStaticFeeParameters(bytes32,uint16,uint16,uint16,uint16,uint24,uint16,uint24)": "infinite", + "setVolatilityAccumulator(bytes32,uint24)": "infinite", + "setVolatilityReference(bytes32,uint24)": "infinite", + "updateIdReference(bytes32)": "infinite", + "updateReferences(bytes32,uint256)": "infinite", + "updateTimeOfLastUpdate(bytes32,uint256)": "infinite", + "updateVolatilityAccumulator(bytes32,uint24)": "infinite", + "updateVolatilityParameters(bytes32,uint24,uint256)": "infinite", + "updateVolatilityReference(bytes32)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 964, + "end": 17954, + "name": "PUSH #[$]", + "source": 32, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH [$]", + "source": 32, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "B" + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "CODECOPY", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP1", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "MLOAD", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "BYTE", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "73" + }, + { + "begin": 964, + "end": 17954, + "name": "EQ", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH [tag]", + "source": 32, + "value": "1" + }, + { + "begin": 964, + "end": 17954, + "name": "JUMPI", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "4" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "24" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "REVERT", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "tag", + "source": 32, + "value": "1" + }, + { + "begin": 964, + "end": 17954, + "name": "JUMPDEST", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "ADDRESS", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "73" + }, + { + "begin": 964, + "end": 17954, + "name": "DUP2", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE8", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP3", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "DUP2", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "RETURN", + "source": 32 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212204e700fbb9d7240b07ef4d5094e64612de1c56ff9da5ce649867694bda32a61e464736f6c63430008140033", + ".code": [ + { + "begin": 964, + "end": 17954, + "name": "PUSHDEPLOYADDRESS", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "ADDRESS", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "EQ", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "80" + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "40" + }, + { + "begin": 964, + "end": 17954, + "name": "MSTORE", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "PUSH", + "source": 32, + "value": "0" + }, + { + "begin": 964, + "end": 17954, + "name": "DUP1", + "source": 32 + }, + { + "begin": 964, + "end": 17954, + "name": "REVERT", + "source": 32 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PairParametersHelper__InvalidParameter\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library contains functions to get and set parameters of a pair The parameters are stored in a single bytes32 variable in the following format: [0 - 16[: base factor (16 bits) [16 - 28[: filter period (12 bits) [28 - 40[: decay period (12 bits) [40 - 54[: reduction factor (14 bits) [54 - 78[: variable fee control (24 bits) [78 - 92[: protocol share (14 bits) [92 - 112[: max volatility accumulator (20 bits) [112 - 132[: volatility accumulator (20 bits) [132 - 152[: volatility reference (20 bits) [152 - 176[: index reference (24 bits) [176 - 216[: time of last update (40 bits) [216 - 232[: oracle index (16 bits) [232 - 256[: active index (24 bits)\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Pair Parameter Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/PairParameterHelper.sol\":\"PairParameterHelper\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/PairParameterHelper.sol\":{\"keccak256\":\"0xd75796a09915a4ce7fd69894504bb21d8f4b6b8fd96b9d863422911313f9dd71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c38fa6ee12c97e1aa1b33ae4cca16f52c1712b7b7a2222dc0cdf61f087ab6e1b\",\"dweb:/ipfs/QmUXVXUhAtZufsRKKEujphnQLhEmiADw215LMcpjooiERr\"]},\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/libraries/PriceHelper.sol": { + "PriceHelper": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Price Helper Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/PriceHelper.sol\":386:3012 library PriceHelper {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/PriceHelper.sol\":386:3012 library PriceHelper {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP9 SWAP15 SDIV SWAP6 PUSH17 0x8398D935E41B2583F2D244E199402C85C8 0xD0 0xF CODECOPY SWAP16 CODECOPY JUMPI MOD 0xF8 MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "386:2626:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP9 SWAP15 SDIV SWAP6 PUSH17 0x8398D935E41B2583F2D244E199402C85C8 0xD0 0xF CODECOPY SWAP16 CODECOPY JUMPI MOD 0xF8 MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "386:2626:33:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "convert128x128PriceToDecimal(uint256)": "infinite", + "convertDecimalPriceTo128x128(uint256)": "infinite", + "getBase(uint16)": "infinite", + "getExponent(uint24)": "infinite", + "getIdFromPrice(uint256,uint16)": "infinite", + "getPriceFromId(uint24,uint16)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 386, + "end": 3012, + "name": "PUSH #[$]", + "source": 33, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH [$]", + "source": 33, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "B" + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "CODECOPY", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP1", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "MLOAD", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "BYTE", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "73" + }, + { + "begin": 386, + "end": 3012, + "name": "EQ", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH [tag]", + "source": 33, + "value": "1" + }, + { + "begin": 386, + "end": 3012, + "name": "JUMPI", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "4" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "24" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "REVERT", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "tag", + "source": 33, + "value": "1" + }, + { + "begin": 386, + "end": 3012, + "name": "JUMPDEST", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "ADDRESS", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "73" + }, + { + "begin": 386, + "end": 3012, + "name": "DUP2", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE8", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP3", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "DUP2", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "RETURN", + "source": 33 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220d9989e0595708398d935e41b2583f2d244e199402c85c8d00f399f395706f85364736f6c63430008140033", + ".code": [ + { + "begin": 386, + "end": 3012, + "name": "PUSHDEPLOYADDRESS", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "ADDRESS", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "EQ", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "80" + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "40" + }, + { + "begin": 386, + "end": 3012, + "name": "MSTORE", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "PUSH", + "source": 33, + "value": "0" + }, + { + "begin": 386, + "end": 3012, + "name": "DUP1", + "source": 33 + }, + { + "begin": 386, + "end": 3012, + "name": "REVERT", + "source": 33 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Price Helper Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to calculate prices\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/PriceHelper.sol\":\"PriceHelper\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/PriceHelper.sol\":{\"keccak256\":\"0xe8af4af39a9063fa569aa161f0fb0b81825131c102b8504deebe142f79f918a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b6e1bcd23acaf79754aed4eb8f32ca3f1712696396a6f06511a6422f73da01f\",\"dweb:/ipfs/QmNZjn3byK4aDYMC5xYPKWCjVUoSmUQgeaHx14q9iA412N\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94\",\"dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea\",\"dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to calculate prices", + "version": 1 + } + } + }, + "src/libraries/StringUtils.sol": { + "StringUtils": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/StringUtils.sol\":63:608 library StringUtils {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/StringUtils.sol\":63:608 library StringUtils {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220ae1b504b342ecf18682f2083d09bfc4276c18b6c4b9bbbb1200d18c02cf73f5464736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ae1b504b342ecf18682f2083d09bfc4276c18b6c4b9bbbb1200d18c02cf73f5464736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE SHL POP 0x4B CALLVALUE 0x2E 0xCF XOR PUSH9 0x2F2083D09BFC4276C1 DUP12 PUSH13 0x4B9BBBB1200D18C02CF73F5464 PUSH20 0x6F6C634300081400330000000000000000000000 ", + "sourceMap": "63:545:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ae1b504b342ecf18682f2083d09bfc4276c18b6c4b9bbbb1200d18c02cf73f5464736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE SHL POP 0x4B CALLVALUE 0x2E 0xCF XOR PUSH9 0x2F2083D09BFC4276C1 DUP12 PUSH13 0x4B9BBBB1200D18C02CF73F5464 PUSH20 0x6F6C634300081400330000000000000000000000 ", + "sourceMap": "63:545:34:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "uint16ToString(uint16)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 63, + "end": 608, + "name": "PUSH #[$]", + "source": 34, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 63, + "end": 608, + "name": "PUSH [$]", + "source": 34, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "B" + }, + { + "begin": 63, + "end": 608, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "CODECOPY", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "DUP1", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "MLOAD", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63, + "end": 608, + "name": "BYTE", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "73" + }, + { + "begin": 63, + "end": 608, + "name": "EQ", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH [tag]", + "source": 34, + "value": "1" + }, + { + "begin": 63, + "end": 608, + "name": "JUMPI", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63, + "end": 608, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "4" + }, + { + "begin": 63, + "end": 608, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "24" + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63, + "end": 608, + "name": "REVERT", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "tag", + "source": 34, + "value": "1" + }, + { + "begin": 63, + "end": 608, + "name": "JUMPDEST", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "ADDRESS", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63, + "end": 608, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "73" + }, + { + "begin": 63, + "end": 608, + "name": "DUP2", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "MSTORE8", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "DUP3", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "DUP2", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "RETURN", + "source": 34 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220ae1b504b342ecf18682f2083d09bfc4276c18b6c4b9bbbb1200d18c02cf73f5464736f6c63430008140033", + ".code": [ + { + "begin": 63, + "end": 608, + "name": "PUSHDEPLOYADDRESS", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "ADDRESS", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "EQ", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "80" + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "40" + }, + { + "begin": 63, + "end": 608, + "name": "MSTORE", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "PUSH", + "source": 34, + "value": "0" + }, + { + "begin": 63, + "end": 608, + "name": "DUP1", + "source": 34 + }, + { + "begin": 63, + "end": 608, + "name": "REVERT", + "source": 34 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/StringUtils.sol\":\"StringUtils\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/StringUtils.sol\":{\"keccak256\":\"0x9734a4e165526a7590c5303bc983a552eadd5a6e20143a4ea731bca9413320d4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1239d261c4e0e136106e30dae7766c3fb6f8ee5867db31c265740236f3ada40f\",\"dweb:/ipfs/QmfYnsyuxNZrK8gp4JbDqjfdoEDhFqsQRkK54Ht68jUDqE\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + }, + "src/libraries/math/BitMath.sol": { + "BitMath": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Bit Math Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/BitMath.sol\":162:4022 library BitMath {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/BitMath.sol\":162:4022 library BitMath {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER SWAP3 PUSH29 0x3D456F2F4D2C27A0D8BCBE86CFFD05A2B88AA13C652E0E7B7586FFB636 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "162:3860:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER SWAP3 PUSH29 0x3D456F2F4D2C27A0D8BCBE86CFFD05A2B88AA13C652E0E7B7586FFB636 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "162:3860:35:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "closestBitLeft(uint256,uint8)": "infinite", + "closestBitRight(uint256,uint8)": "infinite", + "leastSignificantBit(uint256)": "infinite", + "mostSignificantBit(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 162, + "end": 4022, + "name": "PUSH #[$]", + "source": 35, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH [$]", + "source": 35, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "B" + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "CODECOPY", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP1", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "MLOAD", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "BYTE", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "73" + }, + { + "begin": 162, + "end": 4022, + "name": "EQ", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH [tag]", + "source": 35, + "value": "1" + }, + { + "begin": 162, + "end": 4022, + "name": "JUMPI", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "4" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "24" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "REVERT", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "tag", + "source": 35, + "value": "1" + }, + { + "begin": 162, + "end": 4022, + "name": "JUMPDEST", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "ADDRESS", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "73" + }, + { + "begin": 162, + "end": 4022, + "name": "DUP2", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE8", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP3", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "DUP2", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "RETURN", + "source": 35 + } + ], + ".data": { + "0": { + ".auxdata": "a264697066735822122043927c3d456f2f4d2c27a0d8bcbe86cffd05a2b88aa13c652e0e7b7586ffb63664736f6c63430008140033", + ".code": [ + { + "begin": 162, + "end": 4022, + "name": "PUSHDEPLOYADDRESS", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "ADDRESS", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "EQ", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "80" + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "40" + }, + { + "begin": 162, + "end": 4022, + "name": "MSTORE", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "PUSH", + "source": 35, + "value": "0" + }, + { + "begin": 162, + "end": 4022, + "name": "DUP1", + "source": 35 + }, + { + "begin": 162, + "end": 4022, + "name": "REVERT", + "source": 35 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Bit Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for bit calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for bit calculations", + "version": 1 + } + } + }, + "src/libraries/math/Encoded.sol": { + "Encoded": { + "abi": [], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Encoded Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/Encoded.sol\":168:7026 library Encoded {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/Encoded.sol\":168:7026 library Encoded {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 PUSH18 0x11195A215AB823A6AA955643626822982FA9 0xA5 0xAC ADD 0x4F 0x2B 0xD5 PUSH4 0xD20989E8 0xDC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "168:6858:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 PUSH18 0x11195A215AB823A6AA955643626822982FA9 0xA5 0xAC ADD 0x4F 0x2B 0xD5 PUSH4 0xD20989E8 0xDC PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "168:6858:36:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "decode(bytes32,uint256,uint256)": "infinite", + "decodeBool(bytes32,uint256)": "infinite", + "decodeUint12(bytes32,uint256)": "infinite", + "decodeUint128(bytes32,uint256)": "infinite", + "decodeUint14(bytes32,uint256)": "infinite", + "decodeUint16(bytes32,uint256)": "infinite", + "decodeUint20(bytes32,uint256)": "infinite", + "decodeUint24(bytes32,uint256)": "infinite", + "decodeUint40(bytes32,uint256)": "infinite", + "decodeUint64(bytes32,uint256)": "infinite", + "decodeUint8(bytes32,uint256)": "infinite", + "set(bytes32,uint256,uint256,uint256)": "infinite", + "setBool(bytes32,bool,uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 168, + "end": 7026, + "name": "PUSH #[$]", + "source": 36, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH [$]", + "source": 36, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "B" + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "CODECOPY", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP1", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "MLOAD", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "BYTE", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "73" + }, + { + "begin": 168, + "end": 7026, + "name": "EQ", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH [tag]", + "source": 36, + "value": "1" + }, + { + "begin": 168, + "end": 7026, + "name": "JUMPI", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "4" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "24" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "REVERT", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "tag", + "source": 36, + "value": "1" + }, + { + "begin": 168, + "end": 7026, + "name": "JUMPDEST", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "ADDRESS", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "73" + }, + { + "begin": 168, + "end": 7026, + "name": "DUP2", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE8", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP3", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "DUP2", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "RETURN", + "source": 36 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220837111195a215ab823a6aa955643626822982fa9a5ac014f2bd563d20989e8dc64736f6c63430008140033", + ".code": [ + { + "begin": 168, + "end": 7026, + "name": "PUSHDEPLOYADDRESS", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "ADDRESS", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "EQ", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "80" + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "40" + }, + { + "begin": 168, + "end": 7026, + "name": "MSTORE", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "PUSH", + "source": 36, + "value": "0" + }, + { + "begin": 168, + "end": 7026, + "name": "DUP1", + "source": 36 + }, + { + "begin": 168, + "end": 7026, + "name": "REVERT", + "source": 36 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Encoded Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for decoding bytes32 sample\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Encoded.sol\":\"Encoded\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/Encoded.sol\":{\"keccak256\":\"0x80f30c25043cad96df1f36cf8df7aa2bff2f6ea06446a8c2ca7f39cbb7c20dee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://275111862e401672d91d2eb582e078595947ef1d09cd6ef913770fd1f47c49a1\",\"dweb:/ipfs/QmbbFVyZviadw1S3ZDHeiqFtxQfuEi6f27sxUX6Y87hrew\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for decoding bytes32 sample", + "version": 1 + } + } + }, + "src/libraries/math/SafeCast.sol": { + "SafeCast": { + "abi": [ + { + "inputs": [], + "name": "SafeCast__Exceeds104Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds112Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds120Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds128Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds136Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds144Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds152Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds160Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds168Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds16Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds176Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds184Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds192Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds200Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds208Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds216Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds224Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds232Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds240Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds248Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds24Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds32Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds40Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds48Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds56Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds64Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds72Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds80Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds88Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds8Bits", + "type": "error" + }, + { + "inputs": [], + "name": "SafeCast__Exceeds96Bits", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Safe Cast Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/SafeCast.sol\":201:10949 library SafeCast {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/SafeCast.sol\":201:10949 library SafeCast {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH10 0x10F990EC36998A1D4489 0xAA 0x4B SHR CALL 0xAD GAS SAR 0xC3 0xBC 0xB4 LT ADDRESS 0xC1 SWAP2 DUP6 0xB1 GASLIMIT 0xE0 DUP6 DUP3 SWAP4 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "201:10748:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH10 0x10F990EC36998A1D4489 0xAA 0x4B SHR CALL 0xAD GAS SAR 0xC3 0xBC 0xB4 LT ADDRESS 0xC1 SWAP2 DUP6 0xB1 GASLIMIT 0xE0 DUP6 DUP3 SWAP4 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "201:10748:37:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "safe104(uint256)": "infinite", + "safe112(uint256)": "infinite", + "safe120(uint256)": "infinite", + "safe128(uint256)": "infinite", + "safe136(uint256)": "infinite", + "safe144(uint256)": "infinite", + "safe152(uint256)": "infinite", + "safe16(uint256)": "infinite", + "safe160(uint256)": "infinite", + "safe168(uint256)": "infinite", + "safe176(uint256)": "infinite", + "safe184(uint256)": "infinite", + "safe192(uint256)": "infinite", + "safe200(uint256)": "infinite", + "safe208(uint256)": "infinite", + "safe216(uint256)": "infinite", + "safe224(uint256)": "infinite", + "safe232(uint256)": "infinite", + "safe24(uint256)": "infinite", + "safe240(uint256)": "infinite", + "safe248(uint256)": "infinite", + "safe32(uint256)": "infinite", + "safe40(uint256)": "infinite", + "safe48(uint256)": "infinite", + "safe56(uint256)": "infinite", + "safe64(uint256)": "infinite", + "safe72(uint256)": "infinite", + "safe8(uint256)": "infinite", + "safe80(uint256)": "infinite", + "safe88(uint256)": "infinite", + "safe96(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 201, + "end": 10949, + "name": "PUSH #[$]", + "source": 37, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH [$]", + "source": 37, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "B" + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "CODECOPY", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP1", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "MLOAD", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "BYTE", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "73" + }, + { + "begin": 201, + "end": 10949, + "name": "EQ", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH [tag]", + "source": 37, + "value": "1" + }, + { + "begin": 201, + "end": 10949, + "name": "JUMPI", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "4" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "24" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "REVERT", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "tag", + "source": 37, + "value": "1" + }, + { + "begin": 201, + "end": 10949, + "name": "JUMPDEST", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "ADDRESS", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "73" + }, + { + "begin": 201, + "end": 10949, + "name": "DUP2", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE8", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP3", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "DUP2", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "RETURN", + "source": 37 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212206910f990ec36998a1d4489aa4b1cf1ad5a1dc3bcb41030c19185b145e085829364736f6c63430008140033", + ".code": [ + { + "begin": 201, + "end": 10949, + "name": "PUSHDEPLOYADDRESS", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "ADDRESS", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "EQ", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "80" + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "40" + }, + { + "begin": 201, + "end": 10949, + "name": "MSTORE", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "PUSH", + "source": 37, + "value": "0" + }, + { + "begin": 201, + "end": 10949, + "name": "DUP1", + "source": 37 + }, + { + "begin": 201, + "end": 10949, + "name": "REVERT", + "source": 37 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCast__Exceeds104Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds112Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds120Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds128Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds136Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds144Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds152Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds160Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds168Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds16Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds176Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds184Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds192Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds200Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds208Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds216Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds224Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds232Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds240Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds248Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds24Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds32Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds40Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds48Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds56Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds64Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds72Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds80Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds88Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds8Bits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SafeCast__Exceeds96Bits\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Safe Cast Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions to safely cast uint256 to different uint types.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/SafeCast.sol\":{\"keccak256\":\"0xb766fabcdae5b3f112529aee2b960676bb3e856c1cf7acbcea5912e0bd602257\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9e10644ad1dedd8c479e0a43f805487324325e6c0fc4563cb3e31973cb1962e\",\"dweb:/ipfs/QmaDRad21DDwHJFq1i7QV5xM7KVRJCHFzkJfw6CEk8VYCD\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "This library contains functions to safely cast uint256 to different uint types.", + "version": 1 + } + } + }, + "src/libraries/math/Uint128x128Math.sol": { + "Uint128x128Math": { + "abi": [ + { + "inputs": [], + "name": "Uint128x128Math__LogUnderflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "y", + "type": "int256" + } + ], + "name": "Uint128x128Math__PowUnderflow", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Uint128x128 Math Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/Uint128x128Math.sol\":264:7687 library Uint128x128Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/Uint128x128Math.sol\":264:7687 library Uint128x128Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH5 0x270717C2CD SIGNEXTEND 0x21 PUSH16 0xC9037B34F72ECAA41F5412A3FE4EAE6F POP 0xDE 0x25 PUSH31 0x6C9D64736F6C63430008140033000000000000000000000000000000000000 ", + "sourceMap": "264:7423:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH5 0x270717C2CD SIGNEXTEND 0x21 PUSH16 0xC9037B34F72ECAA41F5412A3FE4EAE6F POP 0xDE 0x25 PUSH31 0x6C9D64736F6C63430008140033000000000000000000000000000000000000 ", + "sourceMap": "264:7423:38:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "log2(uint256)": "infinite", + "pow(uint256,int256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 264, + "end": 7687, + "name": "PUSH #[$]", + "source": 38, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH [$]", + "source": 38, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "B" + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "CODECOPY", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP1", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "MLOAD", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "BYTE", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "73" + }, + { + "begin": 264, + "end": 7687, + "name": "EQ", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH [tag]", + "source": 38, + "value": "1" + }, + { + "begin": 264, + "end": 7687, + "name": "JUMPI", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "4" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "24" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "REVERT", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "tag", + "source": 38, + "value": "1" + }, + { + "begin": 264, + "end": 7687, + "name": "JUMPDEST", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "ADDRESS", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "73" + }, + { + "begin": 264, + "end": 7687, + "name": "DUP2", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE8", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP3", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "DUP2", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "RETURN", + "source": 38 + } + ], + ".data": { + "0": { + ".auxdata": "a2646970667358221220f964270717c2cd0b216fc9037b34f72ecaa41f5412a3fe4eae6f50de257e6c9d64736f6c63430008140033", + ".code": [ + { + "begin": 264, + "end": 7687, + "name": "PUSHDEPLOYADDRESS", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "ADDRESS", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "EQ", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "80" + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "40" + }, + { + "begin": 264, + "end": 7687, + "name": "MSTORE", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "PUSH", + "source": 38, + "value": "0" + }, + { + "begin": 264, + "end": 7687, + "name": "DUP1", + "source": 38 + }, + { + "begin": 264, + "end": 7687, + "name": "REVERT", + "source": 38 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint128x128Math__LogUnderflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"y\",\"type\":\"int256\"}],\"name\":\"Uint128x128Math__PowUnderflow\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Uint128x128 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for power and log calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Uint128x128Math.sol\":\"Uint128x128Math\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/Constants.sol\":{\"keccak256\":\"0xbaec78116502fa592e778f692d21ff4365b92e3e1fe32ffb44442a50d2273401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b932c47fedd8a4ff390e928319882c5682d6e5b718202b84db924cf1de059c65\",\"dweb:/ipfs/QmetbTc4Z5UtXP9Cx7m3K1788LqQCSbYHXkPzgDnCfFCZZ\"]},\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/Uint128x128Math.sol\":{\"keccak256\":\"0xa7cf73467bb5e81673936e1f8858f3e1527b201dd80b60c05cb12d8b6299d59a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d82b3b566be3a0c9374cb34ef19e62876ea020c03f8138bb6a57f4c8a999a94\",\"dweb:/ipfs/QmQwxpssza3hxtRwf1HQEwH1j7Vx5AELvELLTbbbz52KnU\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for power and log calculations", + "version": 1 + } + } + }, + "src/libraries/math/Uint256x256Math.sol": { + "Uint256x256Math": { + "abi": [ + { + "inputs": [], + "name": "Uint256x256Math__MulDivOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "Uint256x256Math__MulShiftOverflow", + "type": "error" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "title": "Liquidity Book Uint256x256 Math Library", + "version": 1 + }, + "evm": { + "assembly": " /* \"src/libraries/math/Uint256x256Math.sol\":221:11396 library Uint256x256Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"src/libraries/math/Uint256x256Math.sol\":221:11396 library Uint256x256Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033\n}\n", + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033", + "opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 0xA6 CALLER SWAP15 SIGNEXTEND 0xF7 0xBD 0xD5 0xCB SDIV PUSH16 0x242D6556AB978A62D5CB572384541F5D TIMESTAMP PUSH12 0x89C22864736F6C6343000814 STOP CALLER ", + "sourceMap": "221:11175:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 0xA6 CALLER SWAP15 SIGNEXTEND 0xF7 0xBD 0xD5 0xCB SDIV PUSH16 0x242D6556AB978A62D5CB572384541F5D TIMESTAMP PUSH12 0x89C22864736F6C6343000814 STOP CALLER ", + "sourceMap": "221:11175:39:-:0;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "92", + "totalCost": "17092" + }, + "internal": { + "_getEndOfDivRoundDown(uint256,uint256,uint256,uint256,uint256)": "infinite", + "_getMulProds(uint256,uint256)": "infinite", + "mulDivRoundDown(uint256,uint256,uint256)": "infinite", + "mulDivRoundUp(uint256,uint256,uint256)": "infinite", + "mulShiftRoundDown(uint256,uint256,uint8)": "infinite", + "mulShiftRoundUp(uint256,uint256,uint8)": "infinite", + "shiftDivRoundDown(uint256,uint8,uint256)": "infinite", + "shiftDivRoundUp(uint256,uint8,uint256)": "infinite", + "sqrt(uint256)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 221, + "end": 11396, + "name": "PUSH #[$]", + "source": 39, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH [$]", + "source": 39, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "B" + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "CODECOPY", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP1", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "MLOAD", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "BYTE", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "73" + }, + { + "begin": 221, + "end": 11396, + "name": "EQ", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH [tag]", + "source": 39, + "value": "1" + }, + { + "begin": 221, + "end": 11396, + "name": "JUMPI", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "4" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "24" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "REVERT", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "tag", + "source": 39, + "value": "1" + }, + { + "begin": 221, + "end": 11396, + "name": "JUMPDEST", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "ADDRESS", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "73" + }, + { + "begin": 221, + "end": 11396, + "name": "DUP2", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE8", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP3", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "DUP2", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "RETURN", + "source": 39 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212209fa6339e0bf7bdd5cb056f242d6556ab978a62d5cb572384541f5d426b89c22864736f6c63430008140033", + ".code": [ + { + "begin": 221, + "end": 11396, + "name": "PUSHDEPLOYADDRESS", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "ADDRESS", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "EQ", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "80" + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "40" + }, + { + "begin": 221, + "end": 11396, + "name": "MSTORE", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "PUSH", + "source": 39, + "value": "0" + }, + { + "begin": 221, + "end": 11396, + "name": "DUP1", + "source": 39 + }, + { + "begin": 221, + "end": 11396, + "name": "REVERT", + "source": 39 + } + ] + } + }, + "sourceList": [ + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "src/LBFactory.sol", + "src/LBPairBeaconProxy.sol", + "src/LBPairUnstructuredStorage.sol", + "src/interfaces/ILBFactory.sol", + "src/interfaces/ILBFlashLoanCallback.sol", + "src/interfaces/ILBHooks.sol", + "src/interfaces/ILBPair.sol", + "src/interfaces/ILBToken.sol", + "src/libraries/Constants.sol", + "src/libraries/Hooks.sol", + "src/libraries/ImmutableClone.sol", + "src/libraries/PairParameterHelper.sol", + "src/libraries/PriceHelper.sol", + "src/libraries/StringUtils.sol", + "src/libraries/math/BitMath.sol", + "src/libraries/math/Encoded.sol", + "src/libraries/math/SafeCast.sol", + "src/libraries/math/Uint128x128Math.sol", + "src/libraries/math/Uint256x256Math.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Uint256x256Math__MulDivOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Uint256x256Math__MulShiftOverflow\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity Book Uint256x256 Math Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper contract used for full precision calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/math/Uint256x256Math.sol\":\"Uint256x256Math\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":src/=src/\"]},\"sources\":{\"src/libraries/math/BitMath.sol\":{\"keccak256\":\"0x91d6b780c0e692375fc3f28fa7dc91945d99631d6d11129019f220ce5cf72546\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3df6c6db95373eff76c8a19686dfdc54cd1648c4aae8213b4e444ddb75e62c7d\",\"dweb:/ipfs/QmQTk9n5Y1jnXm92JY1AzrZ1aRgcJMScfenG1othxwEFp5\"]},\"src/libraries/math/Uint256x256Math.sol\":{\"keccak256\":\"0x53673c6ee8410fa57e2be64120ee214648506d14467260d5f81cacbcd2a3c51f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c44d1bdc36e290edf212767c11d0e374804819f26fbdb8af2cfc78e3271cea\",\"dweb:/ipfs/QmPkmBujndep8jp2wcS63CiSCwYR2nXiGU7hQmz1UpFJ3M\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Helper contract used for full precision calculations", + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "5574", + "formattedMessage": "Warning: Contract code size is 29955 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n --> src/LBFactory.sol:32:1:\n |\n32 | contract LBFactory is Ownable2StepUpgradeable, AccessControlUpgradeable, ILBFactory {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Contract code size is 29955 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.", + "severity": "warning", + "sourceLocation": { + "end": 29334, + "file": "src/LBFactory.sol", + "start": 1541 + }, + "type": "Warning" + } + ], + "sources": { + "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "exportedSymbols": { + "AccessControlUpgradeable": [ + 362 + ], + "ContextUpgradeable": [ + 994 + ], + "ERC165Upgradeable": [ + 1034 + ], + "IAccessControl": [ + 1117 + ], + "Initializable": [ + 948 + ] + }, + "id": 363, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:0" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "file": "@openzeppelin/contracts/access/IAccessControl.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 1118, + "src": "134:81:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "142:14:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "file": "../utils/ContextUpgradeable.sol", + "id": 5, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 995, + "src": "216:67:0", + "symbolAliases": [ + { + "foreign": { + "id": 4, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "224:18:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "file": "../utils/introspection/ERC165Upgradeable.sol", + "id": 7, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 1035, + "src": "284:79:0", + "symbolAliases": [ + { + "foreign": { + "id": 6, + "name": "ERC165Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1034, + "src": "292:17:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 9, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 949, + "src": "364:63:0", + "symbolAliases": [ + { + "foreign": { + "id": 8, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "372:13:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 11, + "name": "Initializable", + "nameLocations": [ + "2136:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 948, + "src": "2136:13:0" + }, + "id": 12, + "nodeType": "InheritanceSpecifier", + "src": "2136:13:0" + }, + { + "baseName": { + "id": 13, + "name": "ContextUpgradeable", + "nameLocations": [ + "2151:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 994, + "src": "2151:18:0" + }, + "id": 14, + "nodeType": "InheritanceSpecifier", + "src": "2151:18:0" + }, + { + "baseName": { + "id": 15, + "name": "IAccessControl", + "nameLocations": [ + "2171:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1117, + "src": "2171:14:0" + }, + "id": 16, + "nodeType": "InheritanceSpecifier", + "src": "2171:14:0" + }, + { + "baseName": { + "id": 17, + "name": "ERC165Upgradeable", + "nameLocations": [ + "2187:17:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1034, + "src": "2187:17:0" + }, + "id": 18, + "nodeType": "InheritanceSpecifier", + "src": "2187:17:0" + } + ], + "canonicalName": "AccessControlUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 10, + "nodeType": "StructuredDocumentation", + "src": "429:1660:0", + "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role." + }, + "fullyImplemented": true, + "id": 362, + "linearizedBaseContracts": [ + 362, + 1034, + 2346, + 1117, + 994, + 948 + ], + "name": "AccessControlUpgradeable", + "nameLocation": "2108:24:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "AccessControlUpgradeable.RoleData", + "id": 25, + "members": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "hasRole", + "nameLocation": "2270:7:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2237:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 21, + "keyName": "account", + "keyNameLocation": "2253:7:0", + "keyType": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2237:32:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 20, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2264:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "2295:9:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2287:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 23, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "RoleData", + "nameLocation": "2218:8:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2211:100:0", + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a217fddf", + "id": 28, + "mutability": "constant", + "name": "DEFAULT_ADMIN_ROLE", + "nameLocation": "2341:18:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2317:49:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 26, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "30783030", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "public" + }, + { + "canonicalName": "AccessControlUpgradeable.AccessControlStorage", + "documentation": { + "id": 29, + "nodeType": "StructuredDocumentation", + "src": "2374:71:0", + "text": "@custom:storage-location erc7201:openzeppelin.storage.AccessControl" + }, + "id": 35, + "members": [ + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "_roles", + "nameLocation": "2522:6:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "2488:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "typeName": { + "id": 33, + "keyName": "role", + "keyNameLocation": "2504:4:0", + "keyType": { + "id": 30, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2496:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2488:33:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 32, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 31, + "name": "RoleData", + "nameLocations": [ + "2512:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 25, + "src": "2512:8:0" + }, + "referencedDeclaration": 25, + "src": "2512:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage_ptr", + "typeString": "struct AccessControlUpgradeable.RoleData" + } + } + }, + "visibility": "internal" + } + ], + "name": "AccessControlStorage", + "nameLocation": "2457:20:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2450:85:0", + "visibility": "public" + }, + { + "constant": true, + "id": 38, + "mutability": "constant", + "name": "AccessControlStorageLocation", + "nameLocation": "2683:28:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2658:122:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 36, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2658:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2714:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1", + "typeString": "int_const 1295...(68 digits omitted)...1824" + }, + "value": "0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800" + }, + "visibility": "private" + }, + { + "body": { + "id": 45, + "nodeType": "Block", + "src": "2877:87:0", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2896:62:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2910:38:0", + "value": { + "name": "AccessControlStorageLocation", + "nodeType": "YulIdentifier", + "src": "2920:28:0" + }, + "variableNames": [ + { + "name": "$.slot", + "nodeType": "YulIdentifier", + "src": "2910:6:0" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 42, + "isOffset": false, + "isSlot": true, + "src": "2910:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 38, + "isOffset": false, + "isSlot": false, + "src": "2920:28:0", + "valueSize": 1 + } + ], + "id": 44, + "nodeType": "InlineAssembly", + "src": "2887:71:0" + } + ] + }, + "id": 46, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAccessControlStorage", + "nameLocation": "2796:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [], + "src": "2820:2:0" + }, + "returnParameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "mutability": "mutable", + "name": "$", + "nameLocation": "2874:1:0", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "2845:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 41, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40, + "name": "AccessControlStorage", + "nameLocations": [ + "2845:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "2845:20:0" + }, + "referencedDeclaration": 35, + "src": "2845:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2844:32:0" + }, + "scope": 362, + "src": "2787:177:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 56, + "nodeType": "Block", + "src": "3181:44:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 52, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "3202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 51, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 129, + "src": "3191:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) view" + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3191:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 54, + "nodeType": "ExpressionStatement", + "src": "3191:16:0" + }, + { + "id": 55, + "nodeType": "PlaceholderStatement", + "src": "3217:1:0" + } + ] + }, + "documentation": { + "id": 47, + "nodeType": "StructuredDocumentation", + "src": "2970:174:0", + "text": " @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role." + }, + "id": 57, + "name": "onlyRole", + "nameLocation": "3158:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "role", + "nameLocation": "3175:4:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "3167:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3166:14:0" + }, + "src": "3149:76:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 62, + "nodeType": "Block", + "src": "3289:7:0", + "statements": [] + }, + "id": 63, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 60, + "kind": "modifierInvocation", + "modifierName": { + "id": 59, + "name": "onlyInitializing", + "nameLocations": [ + "3272:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "3272:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3272:16:0" + } + ], + "name": "__AccessControl_init", + "nameLocation": "3240:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [], + "src": "3260:2:0" + }, + "returnParameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [], + "src": "3289:0:0" + }, + "scope": 362, + "src": "3231:65:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "3370:7:0", + "statements": [] + }, + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 66, + "kind": "modifierInvocation", + "modifierName": { + "id": 65, + "name": "onlyInitializing", + "nameLocations": [ + "3353:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "3353:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3353:16:0" + } + ], + "name": "__AccessControl_init_unchained", + "nameLocation": "3311:30:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [], + "src": "3341:2:0" + }, + "returnParameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [], + "src": "3370:0:0" + }, + "scope": 362, + "src": "3302:75:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1033 + ], + "body": { + "id": 90, + "nodeType": "Block", + "src": "3534:111:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 78, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3551:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 80, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "3571:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$1117_$", + "typeString": "type(contract IAccessControl)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$1117_$", + "typeString": "type(contract IAccessControl)" + } + ], + "id": 79, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "3566:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$1117", + "typeString": "type(contract IAccessControl)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3587:11:0", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "3566:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "3551:47:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 86, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3626:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 84, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "3602:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlUpgradeable_$362_$", + "typeString": "type(contract super AccessControlUpgradeable)" + } + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3608:17:0", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 1033, + "src": "3602:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3602:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3551:87:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 77, + "id": 89, + "nodeType": "Return", + "src": "3544:94:0" + } + ] + }, + "documentation": { + "id": 70, + "nodeType": "StructuredDocumentation", + "src": "3382:56:0", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 91, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "3452:17:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 74, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3510:8:0" + }, + "parameters": { + "id": 73, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "3477:11:0", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3470:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 71, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3470:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3469:20:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3528:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 75, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3528:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3527:6:0" + }, + "scope": 362, + "src": "3443:202:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1084 + ], + "body": { + "id": 115, + "nodeType": "Block", + "src": "3815:124:0", + "statements": [ + { + "assignments": [ + 103 + ], + "declarations": [ + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "$", + "nameLocation": "3854:1:0", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "3825:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 102, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 101, + "name": "AccessControlStorage", + "nameLocations": [ + "3825:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "3825:20:0" + }, + "referencedDeclaration": 35, + "src": "3825:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 106, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 104, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "3858:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3858:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3825:59:0" + }, + { + "expression": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 107, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "3901:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3903:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "3901:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 110, + "indexExpression": { + "id": 109, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3910:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3916:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "3901:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 113, + "indexExpression": { + "id": 112, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "3924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 100, + "id": 114, + "nodeType": "Return", + "src": "3894:38:0" + } + ] + }, + "documentation": { + "id": 92, + "nodeType": "StructuredDocumentation", + "src": "3651:76:0", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "3741:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "role", + "nameLocation": "3757:4:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3749:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 93, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3749:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "account", + "nameLocation": "3771:7:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3763:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 95, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3763:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3748:31:0" + }, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3809:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 98, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3809:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3808:6:0" + }, + "scope": 362, + "src": "3732:207:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 128, + "nodeType": "Block", + "src": "4204:47:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 123, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "4225:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 124, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "4231:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4231:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 122, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 150, + "src": "4214:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address) view" + } + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4214:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 127, + "nodeType": "ExpressionStatement", + "src": "4214:30:0" + } + ] + }, + "documentation": { + "id": 117, + "nodeType": "StructuredDocumentation", + "src": "3945:198:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier." + }, + "id": 129, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4157:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "role", + "nameLocation": "4176:4:0", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4168:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4168:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4167:14:0" + }, + "returnParameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [], + "src": "4204:0:0" + }, + "scope": 362, + "src": "4148:103:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 149, + "nodeType": "Block", + "src": "4454:124:0", + "statements": [ + { + "condition": { + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4468:23:0", + "subExpression": { + "arguments": [ + { + "id": 138, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4477:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 139, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4483:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 137, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "4469:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4469:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 148, + "nodeType": "IfStatement", + "src": "4464:108:0", + "trueBody": { + "id": 147, + "nodeType": "Block", + "src": "4493:79:0", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 143, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4547:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 144, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4556:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 142, + "name": "AccessControlUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "4514:32:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32) pure" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4514:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 146, + "nodeType": "RevertStatement", + "src": "4507:54:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 130, + "nodeType": "StructuredDocumentation", + "src": "4257:119:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`." + }, + "id": 150, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4390:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "role", + "nameLocation": "4409:4:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4401:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4401:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "account", + "nameLocation": "4423:7:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4415:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4415:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4400:31:0" + }, + "returnParameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [], + "src": "4454:0:0" + }, + "scope": 362, + "src": "4381:197:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1092 + ], + "body": { + "id": 170, + "nodeType": "Block", + "src": "4833:117:0", + "statements": [ + { + "assignments": [ + 160 + ], + "declarations": [ + { + "constant": false, + "id": 160, + "mutability": "mutable", + "name": "$", + "nameLocation": "4872:1:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "4843:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 159, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 158, + "name": "AccessControlStorage", + "nameLocations": [ + "4843:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "4843:20:0" + }, + "referencedDeclaration": 35, + "src": "4843:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 163, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 161, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "4876:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4876:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4843:59:0" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 164, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "4919:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 165, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4921:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "4919:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 167, + "indexExpression": { + "id": 166, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "4928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4919:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4934:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "4919:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 157, + "id": 169, + "nodeType": "Return", + "src": "4912:31:0" + } + ] + }, + "documentation": { + "id": 151, + "nodeType": "StructuredDocumentation", + "src": "4584:170:0", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "4768:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "role", + "nameLocation": "4789:4:0", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4781:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4781:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4780:14:0" + }, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4824:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 155, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4824:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4823:9:0" + }, + "scope": 362, + "src": "4759:191:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1100 + ], + "body": { + "id": 189, + "nodeType": "Block", + "src": "5340:42:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 185, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5361:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 186, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "5367:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 184, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5350:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5350:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 188, + "nodeType": "ExpressionStatement", + "src": "5350:25:0" + } + ] + }, + "documentation": { + "id": 172, + "nodeType": "StructuredDocumentation", + "src": "4956:285:0", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event." + }, + "functionSelector": "2f2ff15d", + "id": 190, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 180, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5333:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 179, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5320:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5320:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 182, + "kind": "modifierInvocation", + "modifierName": { + "id": 178, + "name": "onlyRole", + "nameLocations": [ + "5311:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5311:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5311:28:0" + } + ], + "name": "grantRole", + "nameLocation": "5255:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "role", + "nameLocation": "5273:4:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5265:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5265:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "account", + "nameLocation": "5287:7:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5279:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5279:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5264:31:0" + }, + "returnParameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "5340:0:0" + }, + "scope": 362, + "src": "5246:136:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1108 + ], + "body": { + "id": 208, + "nodeType": "Block", + "src": "5757:43:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 204, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5779:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "5785:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 203, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "5767:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5767:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 207, + "nodeType": "ExpressionStatement", + "src": "5767:26:0" + } + ] + }, + "documentation": { + "id": 191, + "nodeType": "StructuredDocumentation", + "src": "5388:269:0", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "d547741f", + "id": 209, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 199, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5750:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 198, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5737:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5737:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 201, + "kind": "modifierInvocation", + "modifierName": { + "id": 197, + "name": "onlyRole", + "nameLocations": [ + "5728:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5728:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5728:28:0" + } + ], + "name": "revokeRole", + "nameLocation": "5671:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "role", + "nameLocation": "5690:4:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5682:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5682:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "account", + "nameLocation": "5704:7:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5696:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5696:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5681:31:0" + }, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [], + "src": "5757:0:0" + }, + "scope": 362, + "src": "5662:138:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1116 + ], + "body": { + "id": 231, + "nodeType": "Block", + "src": "6427:166:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 217, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6441:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 218, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6463:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6463:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6441:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 225, + "nodeType": "IfStatement", + "src": "6437:102:0", + "trueBody": { + "id": 224, + "nodeType": "Block", + "src": "6477:62:0", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 221, + "name": "AccessControlBadConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "6498:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 223, + "nodeType": "RevertStatement", + "src": "6491:37:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 227, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "6561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 228, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6567:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 226, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "6549:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6549:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "6549:37:0" + } + ] + }, + "documentation": { + "id": 210, + "nodeType": "StructuredDocumentation", + "src": "5806:537:0", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "36568abe", + "id": 232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "6357:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 212, + "mutability": "mutable", + "name": "role", + "nameLocation": "6378:4:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6370:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6370:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 214, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "6392:18:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6384:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 213, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6384:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6369:42:0" + }, + "returnParameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [], + "src": "6427:0:0" + }, + "scope": 362, + "src": "6348:245:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 267, + "nodeType": "Block", + "src": "6791:245:0", + "statements": [ + { + "assignments": [ + 242 + ], + "declarations": [ + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "$", + "nameLocation": "6830:1:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6801:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 241, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 240, + "name": "AccessControlStorage", + "nameLocations": [ + "6801:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "6801:20:0" + }, + "referencedDeclaration": 35, + "src": "6801:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 245, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 243, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "6834:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6834:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6801:59:0" + }, + { + "assignments": [ + 247 + ], + "declarations": [ + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "6878:17:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6870:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 246, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6870:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 251, + "initialValue": { + "arguments": [ + { + "id": 249, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6911:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 248, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "6898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6898:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6870:46:0" + }, + { + "expression": { + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 252, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "6926:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 255, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6928:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "6926:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 256, + "indexExpression": { + "id": 254, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6926:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 257, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6941:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "6926:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 258, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "6953:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6926:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 260, + "nodeType": "ExpressionStatement", + "src": "6926:36:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 262, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6994:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 263, + "name": "previousAdminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "7000:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 264, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "7019:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 261, + "name": "RoleAdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1056, + "src": "6977:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6977:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 266, + "nodeType": "EmitStatement", + "src": "6972:57:0" + } + ] + }, + "documentation": { + "id": 233, + "nodeType": "StructuredDocumentation", + "src": "6599:114:0", + "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." + }, + "id": 268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setRoleAdmin", + "nameLocation": "6727:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 235, + "mutability": "mutable", + "name": "role", + "nameLocation": "6749:4:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6741:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 234, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6741:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 237, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "6763:9:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6755:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 236, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6740:33:0" + }, + "returnParameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [], + "src": "6791:0:0" + }, + "scope": 362, + "src": "6718:318:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 314, + "nodeType": "Block", + "src": "7353:304:0", + "statements": [ + { + "assignments": [ + 280 + ], + "declarations": [ + { + "constant": false, + "id": 280, + "mutability": "mutable", + "name": "$", + "nameLocation": "7392:1:0", + "nodeType": "VariableDeclaration", + "scope": 314, + "src": "7363:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 279, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 278, + "name": "AccessControlStorage", + "nameLocations": [ + "7363:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7363:20:0" + }, + "referencedDeclaration": 35, + "src": "7363:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 283, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 281, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "7396:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7396:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7363:59:0" + }, + { + "condition": { + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7436:23:0", + "subExpression": { + "arguments": [ + { + "id": 285, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7445:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 286, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7451:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 284, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "7437:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7437:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 312, + "nodeType": "Block", + "src": "7614:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7635:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 277, + "id": 311, + "nodeType": "Return", + "src": "7628:12:0" + } + ] + }, + "id": 313, + "nodeType": "IfStatement", + "src": "7432:219:0", + "trueBody": { + "id": 309, + "nodeType": "Block", + "src": "7461:147:0", + "statements": [ + { + "expression": { + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 289, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 280, + "src": "7475:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 292, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7477:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "7475:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 293, + "indexExpression": { + "id": 291, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7484:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7475:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 294, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7490:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "7475:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 296, + "indexExpression": { + "id": 295, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7498:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7475:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7509:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "7475:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "7475:38:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 301, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7544:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 302, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7550:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 303, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "7559:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7559:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 300, + "name": "RoleGranted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1065, + "src": "7532:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7532:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "EmitStatement", + "src": "7527:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7593:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 277, + "id": 308, + "nodeType": "Return", + "src": "7586:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 269, + "nodeType": "StructuredDocumentation", + "src": "7042:223:0", + "text": " @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event." + }, + "id": 315, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "7279:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "mutability": "mutable", + "name": "role", + "nameLocation": "7298:4:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7290:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 270, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7290:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "account", + "nameLocation": "7312:7:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7304:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7304:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7289:31:0" + }, + "returnParameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7347:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 275, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7347:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7346:6:0" + }, + "scope": 362, + "src": "7270:387:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 360, + "nodeType": "Block", + "src": "7976:304:0", + "statements": [ + { + "assignments": [ + 327 + ], + "declarations": [ + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "$", + "nameLocation": "8015:1:0", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "7986:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 326, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 325, + "name": "AccessControlStorage", + "nameLocations": [ + "7986:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7986:20:0" + }, + "referencedDeclaration": 35, + "src": "7986:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 330, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 328, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "8019:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8019:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7986:59:0" + }, + { + "condition": { + "arguments": [ + { + "id": 332, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 333, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8073:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 331, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "8059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8059:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 358, + "nodeType": "Block", + "src": "8237:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8258:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 324, + "id": 357, + "nodeType": "Return", + "src": "8251:12:0" + } + ] + }, + "id": 359, + "nodeType": "IfStatement", + "src": "8055:219:0", + "trueBody": { + "id": 355, + "nodeType": "Block", + "src": "8083:148:0", + "statements": [ + { + "expression": { + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 335, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "8097:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8099:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "8097:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 339, + "indexExpression": { + "id": 337, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8106:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8097:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8112:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "8097:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 342, + "indexExpression": { + "id": 341, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8120:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8097:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8131:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "8097:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "8097:39:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 347, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8167:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 348, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8173:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 349, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8182:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8182:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 346, + "name": "RoleRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "8155:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8155:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 352, + "nodeType": "EmitStatement", + "src": "8150:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8216:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 324, + "id": 354, + "nodeType": "Return", + "src": "8209:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 316, + "nodeType": "StructuredDocumentation", + "src": "7663:224:0", + "text": " @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event." + }, + "id": 361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "7901:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 318, + "mutability": "mutable", + "name": "role", + "nameLocation": "7921:4:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7913:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 317, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 320, + "mutability": "mutable", + "name": "account", + "nameLocation": "7935:7:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7927:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7927:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7912:31:0" + }, + "returnParameters": { + "id": 324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 323, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7970:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 322, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7970:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7969:6:0" + }, + "scope": 362, + "src": "7892:388:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 363, + "src": "2090:6192:0", + "usedErrors": [ + 711, + 714, + 1044, + 1047 + ], + "usedEvents": [ + 719, + 1056, + 1065, + 1074 + ] + } + ], + "src": "108:8175:0" + }, + "id": 0 + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "exportedSymbols": { + "Initializable": [ + 948 + ], + "Ownable2StepUpgradeable": [ + 499 + ], + "OwnableUpgradeable": [ + 694 + ] + }, + "id": 500, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 364, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "107:24:1" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "file": "./OwnableUpgradeable.sol", + "id": 366, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 500, + "sourceUnit": 695, + "src": "133:60:1", + "symbolAliases": [ + { + "foreign": { + "id": 365, + "name": "OwnableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "141:18:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 368, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 500, + "sourceUnit": 949, + "src": "194:63:1", + "symbolAliases": [ + { + "foreign": { + "id": 367, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "202:13:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 370, + "name": "Initializable", + "nameLocations": [ + "1115:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 948, + "src": "1115:13:1" + }, + "id": 371, + "nodeType": "InheritanceSpecifier", + "src": "1115:13:1" + }, + { + "baseName": { + "id": 372, + "name": "OwnableUpgradeable", + "nameLocations": [ + "1130:18:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 694, + "src": "1130:18:1" + }, + "id": 373, + "nodeType": "InheritanceSpecifier", + "src": "1130:18:1" + } + ], + "canonicalName": "Ownable2StepUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 369, + "nodeType": "StructuredDocumentation", + "src": "259:810:1", + "text": " @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n This extension of the {Ownable} contract includes a two-step mechanism to transfer\n ownership, where the new owner must call {acceptOwnership} in order to replace the\n old one. This can help prevent common mistakes, such as transfers of ownership to\n incorrect accounts, or to contracts that are unable to interact with the\n permission system.\n The initial owner is specified at deployment time in the constructor for `Ownable`. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)." + }, + "fullyImplemented": true, + "id": 499, + "linearizedBaseContracts": [ + 499, + 694, + 994, + 948 + ], + "name": "Ownable2StepUpgradeable", + "nameLocation": "1088:23:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Ownable2StepUpgradeable.Ownable2StepStorage", + "documentation": { + "id": 374, + "nodeType": "StructuredDocumentation", + "src": "1155:70:1", + "text": "@custom:storage-location erc7201:openzeppelin.storage.Ownable2Step" + }, + "id": 377, + "members": [ + { + "constant": false, + "id": 376, + "mutability": "mutable", + "name": "_pendingOwner", + "nameLocation": "1275:13:1", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "1267:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 375, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1267:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "Ownable2StepStorage", + "nameLocation": "1237:19:1", + "nodeType": "StructDefinition", + "scope": 499, + "src": "1230:65:1", + "visibility": "public" + }, + { + "constant": true, + "id": 380, + "mutability": "constant", + "name": "Ownable2StepStorageLocation", + "nameLocation": "1442:27:1", + "nodeType": "VariableDeclaration", + "scope": 499, + "src": "1417:121:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 378, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1417:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307832333765313538323232653365363936386237326239646230643830343361616366303734616439663635306630643136303662346438326565343332633030", + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1472:66:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_16053720875717120191110171845200109550086765943194951757191984851604933389312_by_1", + "typeString": "int_const 1605...(69 digits omitted)...9312" + }, + "value": "0x237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00" + }, + "visibility": "private" + }, + { + "body": { + "id": 387, + "nodeType": "Block", + "src": "1633:86:1", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1652:61:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1666:37:1", + "value": { + "name": "Ownable2StepStorageLocation", + "nodeType": "YulIdentifier", + "src": "1676:27:1" + }, + "variableNames": [ + { + "name": "$.slot", + "nodeType": "YulIdentifier", + "src": "1666:6:1" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 384, + "isOffset": false, + "isSlot": true, + "src": "1666:6:1", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 380, + "isOffset": false, + "isSlot": false, + "src": "1676:27:1", + "valueSize": 1 + } + ], + "id": 386, + "nodeType": "InlineAssembly", + "src": "1643:70:1" + } + ] + }, + "id": 388, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getOwnable2StepStorage", + "nameLocation": "1554:23:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [], + "src": "1577:2:1" + }, + "returnParameters": { + "id": 385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 384, + "mutability": "mutable", + "name": "$", + "nameLocation": "1630:1:1", + "nodeType": "VariableDeclaration", + "scope": 388, + "src": "1602:29:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + }, + "typeName": { + "id": 383, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 382, + "name": "Ownable2StepStorage", + "nameLocations": [ + "1602:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 377, + "src": "1602:19:1" + }, + "referencedDeclaration": 377, + "src": "1602:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1601:31:1" + }, + "scope": 499, + "src": "1545:174:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "eventSelector": "38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700", + "id": 394, + "name": "OwnershipTransferStarted", + "nameLocation": "1731:24:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 390, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "1772:13:1", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "1756:29:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1756:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 392, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "1803:8:1", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "1787:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1787:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1755:57:1" + }, + "src": "1725:88:1" + }, + { + "body": { + "id": 399, + "nodeType": "Block", + "src": "1876:7:1", + "statements": [] + }, + "id": 400, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 397, + "kind": "modifierInvocation", + "modifierName": { + "id": 396, + "name": "onlyInitializing", + "nameLocations": [ + "1859:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "1859:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1859:16:1" + } + ], + "name": "__Ownable2Step_init", + "nameLocation": "1828:19:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 395, + "nodeType": "ParameterList", + "parameters": [], + "src": "1847:2:1" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [], + "src": "1876:0:1" + }, + "scope": 499, + "src": "1819:64:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 405, + "nodeType": "Block", + "src": "1956:7:1", + "statements": [] + }, + "id": 406, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 403, + "kind": "modifierInvocation", + "modifierName": { + "id": 402, + "name": "onlyInitializing", + "nameLocations": [ + "1939:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "1939:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1939:16:1" + } + ], + "name": "__Ownable2Step_init_unchained", + "nameLocation": "1898:29:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 401, + "nodeType": "ParameterList", + "parameters": [], + "src": "1927:2:1" + }, + "returnParameters": { + "id": 404, + "nodeType": "ParameterList", + "parameters": [], + "src": "1956:0:1" + }, + "scope": 499, + "src": "1889:74:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 421, + "nodeType": "Block", + "src": "2100:106:1", + "statements": [ + { + "assignments": [ + 414 + ], + "declarations": [ + { + "constant": false, + "id": 414, + "mutability": "mutable", + "name": "$", + "nameLocation": "2138:1:1", + "nodeType": "VariableDeclaration", + "scope": 421, + "src": "2110:29:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + }, + "typeName": { + "id": 413, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 412, + "name": "Ownable2StepStorage", + "nameLocations": [ + "2110:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 377, + "src": "2110:19:1" + }, + "referencedDeclaration": 377, + "src": "2110:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + } + }, + "visibility": "internal" + } + ], + "id": 417, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 415, + "name": "_getOwnable2StepStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "2142:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Ownable2StepStorage_$377_storage_ptr_$", + "typeString": "function () pure returns (struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2142:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2110:57:1" + }, + { + "expression": { + "expression": { + "id": 418, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "2184:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer" + } + }, + "id": 419, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2186:13:1", + "memberName": "_pendingOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 376, + "src": "2184:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 411, + "id": 420, + "nodeType": "Return", + "src": "2177:22:1" + } + ] + }, + "documentation": { + "id": 407, + "nodeType": "StructuredDocumentation", + "src": "1968:65:1", + "text": " @dev Returns the address of the pending owner." + }, + "functionSelector": "e30c3978", + "id": 422, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pendingOwner", + "nameLocation": "2047:12:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [], + "src": "2059:2:1" + }, + "returnParameters": { + "id": 411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 410, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 422, + "src": "2091:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2091:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2090:9:1" + }, + "scope": 499, + "src": "2038:168:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 664 + ], + "body": { + "id": 449, + "nodeType": "Block", + "src": "2478:168:1", + "statements": [ + { + "assignments": [ + 433 + ], + "declarations": [ + { + "constant": false, + "id": 433, + "mutability": "mutable", + "name": "$", + "nameLocation": "2516:1:1", + "nodeType": "VariableDeclaration", + "scope": 449, + "src": "2488:29:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + }, + "typeName": { + "id": 432, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 431, + "name": "Ownable2StepStorage", + "nameLocations": [ + "2488:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 377, + "src": "2488:19:1" + }, + "referencedDeclaration": 377, + "src": "2488:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + } + }, + "visibility": "internal" + } + ], + "id": 436, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 434, + "name": "_getOwnable2StepStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "2520:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Ownable2StepStorage_$377_storage_ptr_$", + "typeString": "function () pure returns (struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer)" + } + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2520:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2488:57:1" + }, + { + "expression": { + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 437, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "2555:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer" + } + }, + "id": 439, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2557:13:1", + "memberName": "_pendingOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 376, + "src": "2555:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 440, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "2573:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2555:26:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 442, + "nodeType": "ExpressionStatement", + "src": "2555:26:1" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 444, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "2621:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2621:7:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 446, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "2630:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 443, + "name": "OwnershipTransferStarted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 394, + "src": "2596:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2596:43:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 448, + "nodeType": "EmitStatement", + "src": "2591:48:1" + } + ] + }, + "documentation": { + "id": 423, + "nodeType": "StructuredDocumentation", + "src": "2212:182:1", + "text": " @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 450, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 429, + "kind": "modifierInvocation", + "modifierName": { + "id": 428, + "name": "onlyOwner", + "nameLocations": [ + "2468:9:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "2468:9:1" + }, + "nodeType": "ModifierInvocation", + "src": "2468:9:1" + } + ], + "name": "transferOwnership", + "nameLocation": "2408:17:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 427, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2459:8:1" + }, + "parameters": { + "id": 426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "2434:8:1", + "nodeType": "VariableDeclaration", + "scope": 450, + "src": "2426:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2426:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2425:18:1" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [], + "src": "2478:0:1" + }, + "scope": 499, + "src": "2399:247:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 693 + ], + "body": { + "id": 473, + "nodeType": "Block", + "src": "2902:150:1", + "statements": [ + { + "assignments": [ + 459 + ], + "declarations": [ + { + "constant": false, + "id": 459, + "mutability": "mutable", + "name": "$", + "nameLocation": "2940:1:1", + "nodeType": "VariableDeclaration", + "scope": 473, + "src": "2912:29:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + }, + "typeName": { + "id": 458, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 457, + "name": "Ownable2StepStorage", + "nameLocations": [ + "2912:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 377, + "src": "2912:19:1" + }, + "referencedDeclaration": 377, + "src": "2912:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage" + } + }, + "visibility": "internal" + } + ], + "id": 462, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 460, + "name": "_getOwnable2StepStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 388, + "src": "2944:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Ownable2StepStorage_$377_storage_ptr_$", + "typeString": "function () pure returns (struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer)" + } + }, + "id": 461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2944:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2912:57:1" + }, + { + "expression": { + "id": 465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2979:22:1", + "subExpression": { + "expression": { + "id": 463, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "2986:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Ownable2StepStorage_$377_storage_ptr", + "typeString": "struct Ownable2StepUpgradeable.Ownable2StepStorage storage pointer" + } + }, + "id": 464, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2988:13:1", + "memberName": "_pendingOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 376, + "src": "2986:15:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 466, + "nodeType": "ExpressionStatement", + "src": "2979:22:1" + }, + { + "expression": { + "arguments": [ + { + "id": 470, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "3036:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 467, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "3011:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_Ownable2StepUpgradeable_$499_$", + "typeString": "type(contract super Ownable2StepUpgradeable)" + } + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3017:18:1", + "memberName": "_transferOwnership", + "nodeType": "MemberAccess", + "referencedDeclaration": 693, + "src": "3011:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3011:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 472, + "nodeType": "ExpressionStatement", + "src": "3011:34:1" + } + ] + }, + "documentation": { + "id": 451, + "nodeType": "StructuredDocumentation", + "src": "2652:173:1", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction." + }, + "id": 474, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nameLocation": "2839:18:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 455, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2893:8:1" + }, + "parameters": { + "id": 454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 453, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "2866:8:1", + "nodeType": "VariableDeclaration", + "scope": 474, + "src": "2858:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2858:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2857:18:1" + }, + "returnParameters": { + "id": 456, + "nodeType": "ParameterList", + "parameters": [], + "src": "2902:0:1" + }, + "scope": 499, + "src": "2830:222:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 497, + "nodeType": "Block", + "src": "3174:187:1", + "statements": [ + { + "assignments": [ + 479 + ], + "declarations": [ + { + "constant": false, + "id": 479, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3192:6:1", + "nodeType": "VariableDeclaration", + "scope": 497, + "src": "3184:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3184:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 482, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 480, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "3201:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3201:12:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3184:29:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 483, + "name": "pendingOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "3227:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3227:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 485, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "3245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3227:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 492, + "nodeType": "IfStatement", + "src": "3223:96:1", + "trueBody": { + "id": 491, + "nodeType": "Block", + "src": "3253:66:1", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 488, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "3301:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 487, + "name": "OwnableUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "3274:26:1", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3274:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 490, + "nodeType": "RevertStatement", + "src": "3267:41:1" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 494, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 479, + "src": "3347:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 493, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 474 + ], + "referencedDeclaration": 474, + "src": "3328:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3328:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 496, + "nodeType": "ExpressionStatement", + "src": "3328:26:1" + } + ] + }, + "documentation": { + "id": 475, + "nodeType": "StructuredDocumentation", + "src": "3058:69:1", + "text": " @dev The new owner accepts the ownership transfer." + }, + "functionSelector": "79ba5097", + "id": 498, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptOwnership", + "nameLocation": "3141:15:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [], + "src": "3156:2:1" + }, + "returnParameters": { + "id": 477, + "nodeType": "ParameterList", + "parameters": [], + "src": "3174:0:1" + }, + "scope": 499, + "src": "3132:229:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 500, + "src": "1070:2293:1", + "usedErrors": [ + 530, + 535, + 711, + 714 + ], + "usedEvents": [ + 394, + 541, + 719 + ] + } + ], + "src": "107:3257:1" + }, + "id": 1 + }, + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 994 + ], + "Initializable": [ + 948 + ], + "OwnableUpgradeable": [ + 694 + ] + }, + "id": 695, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 501, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:2" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "file": "../utils/ContextUpgradeable.sol", + "id": 503, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 695, + "sourceUnit": 995, + "src": "128:67:2", + "symbolAliases": [ + { + "foreign": { + "id": 502, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "136:18:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 505, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 695, + "sourceUnit": 949, + "src": "196:63:2", + "symbolAliases": [ + { + "foreign": { + "id": 504, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "204:13:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 507, + "name": "Initializable", + "nameLocations": [ + "789:13:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 948, + "src": "789:13:2" + }, + "id": 508, + "nodeType": "InheritanceSpecifier", + "src": "789:13:2" + }, + { + "baseName": { + "id": 509, + "name": "ContextUpgradeable", + "nameLocations": [ + "804:18:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 994, + "src": "804:18:2" + }, + "id": 510, + "nodeType": "InheritanceSpecifier", + "src": "804:18:2" + } + ], + "canonicalName": "OwnableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 506, + "nodeType": "StructuredDocumentation", + "src": "261:487:2", + "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." + }, + "fullyImplemented": true, + "id": 694, + "linearizedBaseContracts": [ + 694, + 994, + 948 + ], + "name": "OwnableUpgradeable", + "nameLocation": "767:18:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "OwnableUpgradeable.OwnableStorage", + "documentation": { + "id": 511, + "nodeType": "StructuredDocumentation", + "src": "829:65:2", + "text": "@custom:storage-location erc7201:openzeppelin.storage.Ownable" + }, + "id": 514, + "members": [ + { + "constant": false, + "id": 513, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "939:6:2", + "nodeType": "VariableDeclaration", + "scope": 514, + "src": "931:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "931:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "OwnableStorage", + "nameLocation": "906:14:2", + "nodeType": "StructDefinition", + "scope": 694, + "src": "899:53:2", + "visibility": "public" + }, + { + "constant": true, + "id": 517, + "mutability": "constant", + "name": "OwnableStorageLocation", + "nameLocation": "1094:22:2", + "nodeType": "VariableDeclaration", + "scope": 694, + "src": "1069:116:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 515, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1069:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839303136643039643732643430666461653266643863656163366236323334633737303632313466643339633163643165363039613035323863313939333030", + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1119:66:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_65173360639460082030725920392146925864023520599682862633725751242436743107328_by_1", + "typeString": "int_const 6517...(69 digits omitted)...7328" + }, + "value": "0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300" + }, + "visibility": "private" + }, + { + "body": { + "id": 524, + "nodeType": "Block", + "src": "1270:81:2", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1289:56:2", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1303:32:2", + "value": { + "name": "OwnableStorageLocation", + "nodeType": "YulIdentifier", + "src": "1313:22:2" + }, + "variableNames": [ + { + "name": "$.slot", + "nodeType": "YulIdentifier", + "src": "1303:6:2" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 521, + "isOffset": false, + "isSlot": true, + "src": "1303:6:2", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 517, + "isOffset": false, + "isSlot": false, + "src": "1313:22:2", + "valueSize": 1 + } + ], + "id": 523, + "nodeType": "InlineAssembly", + "src": "1280:65:2" + } + ] + }, + "id": 525, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getOwnableStorage", + "nameLocation": "1201:18:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 518, + "nodeType": "ParameterList", + "parameters": [], + "src": "1219:2:2" + }, + "returnParameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 521, + "mutability": "mutable", + "name": "$", + "nameLocation": "1267:1:2", + "nodeType": "VariableDeclaration", + "scope": 525, + "src": "1244:24:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage" + }, + "typeName": { + "id": 520, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 519, + "name": "OwnableStorage", + "nameLocations": [ + "1244:14:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 514, + "src": "1244:14:2" + }, + "referencedDeclaration": 514, + "src": "1244:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1243:26:2" + }, + "scope": 694, + "src": "1192:159:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "documentation": { + "id": 526, + "nodeType": "StructuredDocumentation", + "src": "1357:85:2", + "text": " @dev The caller account is not authorized to perform an operation." + }, + "errorSelector": "118cdaa7", + "id": 530, + "name": "OwnableUnauthorizedAccount", + "nameLocation": "1453:26:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 528, + "mutability": "mutable", + "name": "account", + "nameLocation": "1488:7:2", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "1480:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1480:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1479:17:2" + }, + "src": "1447:50:2" + }, + { + "documentation": { + "id": 531, + "nodeType": "StructuredDocumentation", + "src": "1503:82:2", + "text": " @dev The owner is not a valid owner account. (eg. `address(0)`)" + }, + "errorSelector": "1e4fbdf7", + "id": 535, + "name": "OwnableInvalidOwner", + "nameLocation": "1596:19:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 533, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1624:5:2", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "1616:13:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1616:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1615:15:2" + }, + "src": "1590:41:2" + }, + { + "anonymous": false, + "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "id": 541, + "name": "OwnershipTransferred", + "nameLocation": "1643:20:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 537, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "1680:13:2", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "1664:29:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 536, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1664:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 539, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "1711:8:2", + "nodeType": "VariableDeclaration", + "scope": 541, + "src": "1695:24:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1695:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1663:57:2" + }, + "src": "1637:84:2" + }, + { + "body": { + "id": 553, + "nodeType": "Block", + "src": "1919:55:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 550, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 544, + "src": "1954:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 549, + "name": "__Ownable_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 581, + "src": "1929:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1929:38:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 552, + "nodeType": "ExpressionStatement", + "src": "1929:38:2" + } + ] + }, + "documentation": { + "id": 542, + "nodeType": "StructuredDocumentation", + "src": "1727:115:2", + "text": " @dev Initializes the contract setting the address provided by the deployer as the initial owner." + }, + "id": 554, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 547, + "kind": "modifierInvocation", + "modifierName": { + "id": 546, + "name": "onlyInitializing", + "nameLocations": [ + "1902:16:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "1902:16:2" + }, + "nodeType": "ModifierInvocation", + "src": "1902:16:2" + } + ], + "name": "__Ownable_init", + "nameLocation": "1856:14:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 545, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "1879:12:2", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "1871:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 543, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1871:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1870:22:2" + }, + "returnParameters": { + "id": 548, + "nodeType": "ParameterList", + "parameters": [], + "src": "1919:0:2" + }, + "scope": 694, + "src": "1847:127:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 580, + "nodeType": "Block", + "src": "2062:153:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 561, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "2076:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2100:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2092:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2092:7:2", + "typeDescriptions": {} + } + }, + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2092:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2076:26:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 575, + "nodeType": "IfStatement", + "src": "2072:95:2", + "trueBody": { + "id": 574, + "nodeType": "Block", + "src": "2104:63:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2153:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2145:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2145:7:2", + "typeDescriptions": {} + } + }, + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2145:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 567, + "name": "OwnableInvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "2125:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2125:31:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 573, + "nodeType": "RevertStatement", + "src": "2118:38:2" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 577, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "2195:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 576, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "2176:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2176:32:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 579, + "nodeType": "ExpressionStatement", + "src": "2176:32:2" + } + ] + }, + "id": 581, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 559, + "kind": "modifierInvocation", + "modifierName": { + "id": 558, + "name": "onlyInitializing", + "nameLocations": [ + "2045:16:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "2045:16:2" + }, + "nodeType": "ModifierInvocation", + "src": "2045:16:2" + } + ], + "name": "__Ownable_init_unchained", + "nameLocation": "1989:24:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "2022:12:2", + "nodeType": "VariableDeclaration", + "scope": 581, + "src": "2014:20:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2014:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2013:22:2" + }, + "returnParameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [], + "src": "2062:0:2" + }, + "scope": 694, + "src": "1980:235:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 588, + "nodeType": "Block", + "src": "2324:41:2", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 584, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "2334:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2334:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 586, + "nodeType": "ExpressionStatement", + "src": "2334:13:2" + }, + { + "id": 587, + "nodeType": "PlaceholderStatement", + "src": "2357:1:2" + } + ] + }, + "documentation": { + "id": 582, + "nodeType": "StructuredDocumentation", + "src": "2221:77:2", + "text": " @dev Throws if called by any account other than the owner." + }, + "id": 589, + "name": "onlyOwner", + "nameLocation": "2312:9:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 583, + "nodeType": "ParameterList", + "parameters": [], + "src": "2321:2:2" + }, + "src": "2303:62:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 604, + "nodeType": "Block", + "src": "2496:89:2", + "statements": [ + { + "assignments": [ + 597 + ], + "declarations": [ + { + "constant": false, + "id": 597, + "mutability": "mutable", + "name": "$", + "nameLocation": "2529:1:2", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "2506:24:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage" + }, + "typeName": { + "id": 596, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 595, + "name": "OwnableStorage", + "nameLocations": [ + "2506:14:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 514, + "src": "2506:14:2" + }, + "referencedDeclaration": 514, + "src": "2506:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 600, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 598, + "name": "_getOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "2533:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$514_storage_ptr_$", + "typeString": "function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2533:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2506:47:2" + }, + { + "expression": { + "expression": { + "id": 601, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "2570:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage storage pointer" + } + }, + "id": 602, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2572:6:2", + "memberName": "_owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 513, + "src": "2570:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 594, + "id": 603, + "nodeType": "Return", + "src": "2563:15:2" + } + ] + }, + "documentation": { + "id": 590, + "nodeType": "StructuredDocumentation", + "src": "2371:65:2", + "text": " @dev Returns the address of the current owner." + }, + "functionSelector": "8da5cb5b", + "id": 605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nameLocation": "2450:5:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 591, + "nodeType": "ParameterList", + "parameters": [], + "src": "2455:2:2" + }, + "returnParameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 605, + "src": "2487:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2487:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2486:9:2" + }, + "scope": 694, + "src": "2441:144:2", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 621, + "nodeType": "Block", + "src": "2703:117:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 609, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "2717:5:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2717:7:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 611, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "2728:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2728:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2717:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 620, + "nodeType": "IfStatement", + "src": "2713:101:2", + "trueBody": { + "id": 619, + "nodeType": "Block", + "src": "2742:72:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 615, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "2790:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2790:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 614, + "name": "OwnableUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "2763:26:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2763:40:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 618, + "nodeType": "RevertStatement", + "src": "2756:47:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 606, + "nodeType": "StructuredDocumentation", + "src": "2591:62:2", + "text": " @dev Throws if the sender is not the owner." + }, + "id": 622, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOwner", + "nameLocation": "2667:11:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 607, + "nodeType": "ParameterList", + "parameters": [], + "src": "2678:2:2" + }, + "returnParameters": { + "id": 608, + "nodeType": "ParameterList", + "parameters": [], + "src": "2703:0:2" + }, + "scope": 694, + "src": "2658:162:2", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 635, + "nodeType": "Block", + "src": "3209:47:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3246:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3238:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 629, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3238:7:2", + "typeDescriptions": {} + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3238:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 628, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "3219:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3219:30:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 634, + "nodeType": "ExpressionStatement", + "src": "3219:30:2" + } + ] + }, + "documentation": { + "id": 623, + "nodeType": "StructuredDocumentation", + "src": "2826:324:2", + "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner." + }, + "functionSelector": "715018a6", + "id": 636, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 626, + "kind": "modifierInvocation", + "modifierName": { + "id": 625, + "name": "onlyOwner", + "nameLocations": [ + "3199:9:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "3199:9:2" + }, + "nodeType": "ModifierInvocation", + "src": "3199:9:2" + } + ], + "name": "renounceOwnership", + "nameLocation": "3164:17:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 624, + "nodeType": "ParameterList", + "parameters": [], + "src": "3181:2:2" + }, + "returnParameters": { + "id": 627, + "nodeType": "ParameterList", + "parameters": [], + "src": "3209:0:2" + }, + "scope": 694, + "src": "3155:101:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 663, + "nodeType": "Block", + "src": "3475:145:2", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 644, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "3489:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3509:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3501:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 645, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3501:7:2", + "typeDescriptions": {} + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3501:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3489:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 658, + "nodeType": "IfStatement", + "src": "3485:91:2", + "trueBody": { + "id": 657, + "nodeType": "Block", + "src": "3513:63:2", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3562:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3554:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 651, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3554:7:2", + "typeDescriptions": {} + } + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3554:10:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 650, + "name": "OwnableInvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "3534:19:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3534:31:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 656, + "nodeType": "RevertStatement", + "src": "3527:38:2" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 660, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "3604:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 659, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "3585:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3585:28:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 662, + "nodeType": "ExpressionStatement", + "src": "3585:28:2" + } + ] + }, + "documentation": { + "id": 637, + "nodeType": "StructuredDocumentation", + "src": "3262:138:2", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 664, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 642, + "kind": "modifierInvocation", + "modifierName": { + "id": 641, + "name": "onlyOwner", + "nameLocations": [ + "3465:9:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "3465:9:2" + }, + "nodeType": "ModifierInvocation", + "src": "3465:9:2" + } + ], + "name": "transferOwnership", + "nameLocation": "3414:17:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 639, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "3440:8:2", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "3432:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3432:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3431:18:2" + }, + "returnParameters": { + "id": 643, + "nodeType": "ParameterList", + "parameters": [], + "src": "3475:0:2" + }, + "scope": 694, + "src": "3405:215:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 692, + "nodeType": "Block", + "src": "3837:185:2", + "statements": [ + { + "assignments": [ + 672 + ], + "declarations": [ + { + "constant": false, + "id": 672, + "mutability": "mutable", + "name": "$", + "nameLocation": "3870:1:2", + "nodeType": "VariableDeclaration", + "scope": 692, + "src": "3847:24:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage" + }, + "typeName": { + "id": 671, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 670, + "name": "OwnableStorage", + "nameLocations": [ + "3847:14:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 514, + "src": "3847:14:2" + }, + "referencedDeclaration": 514, + "src": "3847:14:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 675, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 673, + "name": "_getOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 525, + "src": "3874:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$514_storage_ptr_$", + "typeString": "function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)" + } + }, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3874:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3847:47:2" + }, + { + "assignments": [ + 677 + ], + "declarations": [ + { + "constant": false, + "id": 677, + "mutability": "mutable", + "name": "oldOwner", + "nameLocation": "3912:8:2", + "nodeType": "VariableDeclaration", + "scope": 692, + "src": "3904:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3904:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 680, + "initialValue": { + "expression": { + "id": 678, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "3923:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage storage pointer" + } + }, + "id": 679, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3925:6:2", + "memberName": "_owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 513, + "src": "3923:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3904:27:2" + }, + { + "expression": { + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 681, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "3941:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_OwnableStorage_$514_storage_ptr", + "typeString": "struct OwnableUpgradeable.OwnableStorage storage pointer" + } + }, + "id": 683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3943:6:2", + "memberName": "_owner", + "nodeType": "MemberAccess", + "referencedDeclaration": 513, + "src": "3941:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 684, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "3952:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3941:19:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 686, + "nodeType": "ExpressionStatement", + "src": "3941:19:2" + }, + { + "eventCall": { + "arguments": [ + { + "id": 688, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 677, + "src": "3996:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 689, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "4006:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 687, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "3975:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3975:40:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 691, + "nodeType": "EmitStatement", + "src": "3970:45:2" + } + ] + }, + "documentation": { + "id": 665, + "nodeType": "StructuredDocumentation", + "src": "3626:143:2", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction." + }, + "id": 693, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nameLocation": "3783:18:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 667, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "3810:8:2", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "3802:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 666, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3802:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3801:18:2" + }, + "returnParameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "3837:0:2" + }, + "scope": 694, + "src": "3774:248:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 695, + "src": "749:3275:2", + "usedErrors": [ + 530, + 535, + 711, + 714 + ], + "usedEvents": [ + 541, + 719 + ] + } + ], + "src": "102:3923:2" + }, + "id": 2 + }, + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "exportedSymbols": { + "Initializable": [ + 948 + ] + }, + "id": 949, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 696, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:3" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Initializable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 697, + "nodeType": "StructuredDocumentation", + "src": "139:2209:3", + "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ====" + }, + "fullyImplemented": true, + "id": 948, + "linearizedBaseContracts": [ + 948 + ], + "name": "Initializable", + "nameLocation": "2367:13:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Initializable.InitializableStorage", + "documentation": { + "id": 698, + "nodeType": "StructuredDocumentation", + "src": "2387:293:3", + "text": " @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable" + }, + "id": 705, + "members": [ + { + "constant": false, + "id": 701, + "mutability": "mutable", + "name": "_initialized", + "nameLocation": "2820:12:3", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "2813:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 700, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2813:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 704, + "mutability": "mutable", + "name": "_initializing", + "nameLocation": "2955:13:3", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "2950:18:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 703, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2950:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "InitializableStorage", + "nameLocation": "2692:20:3", + "nodeType": "StructDefinition", + "scope": 948, + "src": "2685:290:3", + "visibility": "public" + }, + { + "constant": true, + "id": 708, + "mutability": "constant", + "name": "INITIALIZABLE_STORAGE", + "nameLocation": "3123:21:3", + "nodeType": "VariableDeclaration", + "scope": 948, + "src": "3098:115:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 706, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3098:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3147:66:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1", + "typeString": "int_const 1089...(70 digits omitted)...9600" + }, + "value": "0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 709, + "nodeType": "StructuredDocumentation", + "src": "3220:60:3", + "text": " @dev The contract is already initialized." + }, + "errorSelector": "f92ee8a9", + "id": 711, + "name": "InvalidInitialization", + "nameLocation": "3291:21:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [], + "src": "3312:2:3" + }, + "src": "3285:30:3" + }, + { + "documentation": { + "id": 712, + "nodeType": "StructuredDocumentation", + "src": "3321:57:3", + "text": " @dev The contract is not initializing." + }, + "errorSelector": "d7e6bcf8", + "id": 714, + "name": "NotInitializing", + "nameLocation": "3389:15:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [], + "src": "3404:2:3" + }, + "src": "3383:24:3" + }, + { + "anonymous": false, + "documentation": { + "id": 715, + "nodeType": "StructuredDocumentation", + "src": "3413:90:3", + "text": " @dev Triggered when the contract has been initialized or reinitialized." + }, + "eventSelector": "c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2", + "id": 719, + "name": "Initialized", + "nameLocation": "3514:11:3", + "nodeType": "EventDefinition", + "parameters": { + "id": 718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 717, + "indexed": false, + "mutability": "mutable", + "name": "version", + "nameLocation": "3533:7:3", + "nodeType": "VariableDeclaration", + "scope": 719, + "src": "3526:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 716, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3526:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "3525:16:3" + }, + "src": "3508:34:3" + }, + { + "body": { + "id": 801, + "nodeType": "Block", + "src": "4092:1081:3", + "statements": [ + { + "assignments": [ + 724 + ], + "declarations": [ + { + "constant": false, + "id": 724, + "mutability": "mutable", + "name": "$", + "nameLocation": "4187:1:3", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "4158:30:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 723, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 722, + "name": "InitializableStorage", + "nameLocations": [ + "4158:20:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 705, + "src": "4158:20:3" + }, + "referencedDeclaration": 705, + "src": "4158:20:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 727, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 725, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "4191:24:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$705_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4191:26:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4158:59:3" + }, + { + "assignments": [ + 729 + ], + "declarations": [ + { + "constant": false, + "id": 729, + "mutability": "mutable", + "name": "isTopLevelCall", + "nameLocation": "4284:14:3", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "4279:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 728, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4279:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 733, + "initialValue": { + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4301:16:3", + "subExpression": { + "expression": { + "id": 730, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 724, + "src": "4302:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4304:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "4302:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4279:38:3" + }, + { + "assignments": [ + 735 + ], + "declarations": [ + { + "constant": false, + "id": 735, + "mutability": "mutable", + "name": "initialized", + "nameLocation": "4334:11:3", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "4327:18:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 734, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4327:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 738, + "initialValue": { + "expression": { + "id": 736, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 724, + "src": "4348:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 737, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4350:12:3", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 701, + "src": "4348:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4327:35:3" + }, + { + "assignments": [ + 740 + ], + "declarations": [ + { + "constant": false, + "id": 740, + "mutability": "mutable", + "name": "initialSetup", + "nameLocation": "4711:12:3", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "4706:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 739, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4706:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 746, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 741, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "4726:11:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4741:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4726:16:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 744, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "4746:14:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4726:34:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4706:54:3" + }, + { + "assignments": [ + 748 + ], + "declarations": [ + { + "constant": false, + "id": 748, + "mutability": "mutable", + "name": "construction", + "nameLocation": "4775:12:3", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "4770:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 747, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4770:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 761, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 749, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "4790:11:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4805:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4790:16:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 754, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "4818:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$948", + "typeString": "contract Initializable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Initializable_$948", + "typeString": "contract Initializable" + } + ], + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4810:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4810:7:3", + "typeDescriptions": {} + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4810:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4824:4:3", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4810:18:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4829:6:3", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4810:25:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4839:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4810:30:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4790:50:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4770:70:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4855:13:3", + "subExpression": { + "id": 762, + "name": "initialSetup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "4856:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4872:13:3", + "subExpression": { + "id": 764, + "name": "construction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 748, + "src": "4873:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4855:30:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 771, + "nodeType": "IfStatement", + "src": "4851:91:3", + "trueBody": { + "id": 770, + "nodeType": "Block", + "src": "4887:55:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 767, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "4908:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4908:23:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 769, + "nodeType": "RevertStatement", + "src": "4901:30:3" + } + ] + } + }, + { + "expression": { + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 772, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 724, + "src": "4951:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4953:12:3", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 701, + "src": "4951:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4968:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4951:18:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 777, + "nodeType": "ExpressionStatement", + "src": "4951:18:3" + }, + { + "condition": { + "id": 778, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "4983:14:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 786, + "nodeType": "IfStatement", + "src": "4979:67:3", + "trueBody": { + "id": 785, + "nodeType": "Block", + "src": "4999:47:3", + "statements": [ + { + "expression": { + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 779, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 724, + "src": "5013:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 781, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5015:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "5013:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5031:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5013:22:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 784, + "nodeType": "ExpressionStatement", + "src": "5013:22:3" + } + ] + } + }, + { + "id": 787, + "nodeType": "PlaceholderStatement", + "src": "5055:1:3" + }, + { + "condition": { + "id": 788, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "5070:14:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 800, + "nodeType": "IfStatement", + "src": "5066:101:3", + "trueBody": { + "id": 799, + "nodeType": "Block", + "src": "5086:81:3", + "statements": [ + { + "expression": { + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 789, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 724, + "src": "5100:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 791, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5102:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "5100:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5118:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5100:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 794, + "nodeType": "ExpressionStatement", + "src": "5100:23:3" + }, + { + "eventCall": { + "arguments": [ + { + "hexValue": "31", + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5154:1:3", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 795, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "5142:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5142:14:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 798, + "nodeType": "EmitStatement", + "src": "5137:19:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 720, + "nodeType": "StructuredDocumentation", + "src": "3548:516:3", + "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event." + }, + "id": 802, + "name": "initializer", + "nameLocation": "4078:11:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 721, + "nodeType": "ParameterList", + "parameters": [], + "src": "4089:2:3" + }, + "src": "4069:1104:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 848, + "nodeType": "Block", + "src": "6291:392:3", + "statements": [ + { + "assignments": [ + 809 + ], + "declarations": [ + { + "constant": false, + "id": 809, + "mutability": "mutable", + "name": "$", + "nameLocation": "6386:1:3", + "nodeType": "VariableDeclaration", + "scope": 848, + "src": "6357:30:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 808, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 807, + "name": "InitializableStorage", + "nameLocations": [ + "6357:20:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 705, + "src": "6357:20:3" + }, + "referencedDeclaration": 705, + "src": "6357:20:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 812, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 810, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "6390:24:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$705_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6390:26:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6357:59:3" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 813, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6431:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6433:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "6431:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 815, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6450:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 816, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6452:12:3", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 701, + "src": "6450:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 817, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "6468:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6450:25:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6431:44:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 824, + "nodeType": "IfStatement", + "src": "6427:105:3", + "trueBody": { + "id": 823, + "nodeType": "Block", + "src": "6477:55:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 820, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "6498:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:23:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 822, + "nodeType": "RevertStatement", + "src": "6491:30:3" + } + ] + } + }, + { + "expression": { + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 825, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6541:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 827, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6543:12:3", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 701, + "src": "6541:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 828, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "6558:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6541:24:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 830, + "nodeType": "ExpressionStatement", + "src": "6541:24:3" + }, + { + "expression": { + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 831, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6575:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 833, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6577:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "6575:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6593:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6575:22:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 836, + "nodeType": "ExpressionStatement", + "src": "6575:22:3" + }, + { + "id": 837, + "nodeType": "PlaceholderStatement", + "src": "6607:1:3" + }, + { + "expression": { + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 838, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "6618:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6620:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "6618:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6636:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "6618:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 843, + "nodeType": "ExpressionStatement", + "src": "6618:23:3" + }, + { + "eventCall": { + "arguments": [ + { + "id": 845, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "6668:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 844, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "6656:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6656:20:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 847, + "nodeType": "EmitStatement", + "src": "6651:25:3" + } + ] + }, + "documentation": { + "id": 803, + "nodeType": "StructuredDocumentation", + "src": "5179:1068:3", + "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event." + }, + "id": 849, + "name": "reinitializer", + "nameLocation": "6261:13:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 805, + "mutability": "mutable", + "name": "version", + "nameLocation": "6282:7:3", + "nodeType": "VariableDeclaration", + "scope": 849, + "src": "6275:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 804, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6275:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "6274:16:3" + }, + "src": "6252:431:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "6921:48:3", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 852, + "name": "_checkInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 870, + "src": "6931:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6931:20:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 854, + "nodeType": "ExpressionStatement", + "src": "6931:20:3" + }, + { + "id": 855, + "nodeType": "PlaceholderStatement", + "src": "6961:1:3" + } + ] + }, + "documentation": { + "id": 850, + "nodeType": "StructuredDocumentation", + "src": "6689:199:3", + "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly." + }, + "id": 857, + "name": "onlyInitializing", + "nameLocation": "6902:16:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 851, + "nodeType": "ParameterList", + "parameters": [], + "src": "6918:2:3" + }, + "src": "6893:76:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 869, + "nodeType": "Block", + "src": "7136:89:3", + "statements": [ + { + "condition": { + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7150:18:3", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 861, + "name": "_isInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "7151:15:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7151:17:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 868, + "nodeType": "IfStatement", + "src": "7146:73:3", + "trueBody": { + "id": 867, + "nodeType": "Block", + "src": "7170:49:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 864, + "name": "NotInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "7191:15:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7191:17:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 866, + "nodeType": "RevertStatement", + "src": "7184:24:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 858, + "nodeType": "StructuredDocumentation", + "src": "6975:104:3", + "text": " @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}." + }, + "id": 870, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkInitializing", + "nameLocation": "7093:18:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [], + "src": "7111:2:3" + }, + "returnParameters": { + "id": 860, + "nodeType": "ParameterList", + "parameters": [], + "src": "7136:0:3" + }, + "scope": 948, + "src": "7084:141:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 915, + "nodeType": "Block", + "src": "7760:373:3", + "statements": [ + { + "assignments": [ + 876 + ], + "declarations": [ + { + "constant": false, + "id": 876, + "mutability": "mutable", + "name": "$", + "nameLocation": "7855:1:3", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "7826:30:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 875, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 874, + "name": "InitializableStorage", + "nameLocations": [ + "7826:20:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 705, + "src": "7826:20:3" + }, + "referencedDeclaration": 705, + "src": "7826:20:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 879, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 877, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "7859:24:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$705_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7859:26:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7826:59:3" + }, + { + "condition": { + "expression": { + "id": 880, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "7900:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 881, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7902:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "7900:15:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 886, + "nodeType": "IfStatement", + "src": "7896:76:3", + "trueBody": { + "id": 885, + "nodeType": "Block", + "src": "7917:55:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 882, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "7938:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7938:23:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 884, + "nodeType": "RevertStatement", + "src": "7931:30:3" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 887, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "7985:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 888, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7987:12:3", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 701, + "src": "7985:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8008:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 890, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8008:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 889, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8003:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8003:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8016:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8003:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "7985:34:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 914, + "nodeType": "IfStatement", + "src": "7981:146:3", + "trueBody": { + "id": 913, + "nodeType": "Block", + "src": "8021:106:3", + "statements": [ + { + "expression": { + "id": 903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 895, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "8035:1:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 897, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8037:12:3", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 701, + "src": "8035:14:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8057:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 899, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8057:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 898, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8052:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8065:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8052:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8035:33:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 904, + "nodeType": "ExpressionStatement", + "src": "8035:33:3" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8104:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 907, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8104:6:3", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 906, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "8099:4:3", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8099:12:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8112:3:3", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8099:16:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 905, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 719, + "src": "8087:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8087:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 912, + "nodeType": "EmitStatement", + "src": "8082:34:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 871, + "nodeType": "StructuredDocumentation", + "src": "7231:475:3", + "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed." + }, + "id": 916, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_disableInitializers", + "nameLocation": "7720:20:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 872, + "nodeType": "ParameterList", + "parameters": [], + "src": "7740:2:3" + }, + "returnParameters": { + "id": 873, + "nodeType": "ParameterList", + "parameters": [], + "src": "7760:0:3" + }, + "scope": 948, + "src": "7711:422:3", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 926, + "nodeType": "Block", + "src": "8308:63:3", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 922, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "8325:24:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$705_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8325:26:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 924, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8352:12:3", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 701, + "src": "8325:39:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 921, + "id": 925, + "nodeType": "Return", + "src": "8318:46:3" + } + ] + }, + "documentation": { + "id": 917, + "nodeType": "StructuredDocumentation", + "src": "8139:99:3", + "text": " @dev Returns the highest version that has been initialized. See {reinitializer}." + }, + "id": 927, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializedVersion", + "nameLocation": "8252:22:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 918, + "nodeType": "ParameterList", + "parameters": [], + "src": "8274:2:3" + }, + "returnParameters": { + "id": 921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 920, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 927, + "src": "8300:6:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 919, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8300:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "8299:8:3" + }, + "scope": 948, + "src": "8243:128:3", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 937, + "nodeType": "Block", + "src": "8543:64:3", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 933, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "8560:24:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$705_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8560:26:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 935, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8587:13:3", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 704, + "src": "8560:40:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 932, + "id": 936, + "nodeType": "Return", + "src": "8553:47:3" + } + ] + }, + "documentation": { + "id": 928, + "nodeType": "StructuredDocumentation", + "src": "8377:105:3", + "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}." + }, + "id": 938, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isInitializing", + "nameLocation": "8496:15:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 929, + "nodeType": "ParameterList", + "parameters": [], + "src": "8511:2:3" + }, + "returnParameters": { + "id": 932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 931, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 938, + "src": "8537:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 930, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8537:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8536:6:3" + }, + "scope": 948, + "src": "8487:120:3", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 946, + "nodeType": "Block", + "src": "8827:80:3", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "8846:55:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8860:31:3", + "value": { + "name": "INITIALIZABLE_STORAGE", + "nodeType": "YulIdentifier", + "src": "8870:21:3" + }, + "variableNames": [ + { + "name": "$.slot", + "nodeType": "YulIdentifier", + "src": "8860:6:3" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 943, + "isOffset": false, + "isSlot": true, + "src": "8860:6:3", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 708, + "isOffset": false, + "isSlot": false, + "src": "8870:21:3", + "valueSize": 1 + } + ], + "id": 945, + "nodeType": "InlineAssembly", + "src": "8837:64:3" + } + ] + }, + "documentation": { + "id": 939, + "nodeType": "StructuredDocumentation", + "src": "8613:67:3", + "text": " @dev Returns a pointer to the storage namespace." + }, + "id": 947, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializableStorage", + "nameLocation": "8746:24:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 940, + "nodeType": "ParameterList", + "parameters": [], + "src": "8770:2:3" + }, + "returnParameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 943, + "mutability": "mutable", + "name": "$", + "nameLocation": "8824:1:3", + "nodeType": "VariableDeclaration", + "scope": 947, + "src": "8795:30:3", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 942, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 941, + "name": "InitializableStorage", + "nameLocations": [ + "8795:20:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 705, + "src": "8795:20:3" + }, + "referencedDeclaration": 705, + "src": "8795:20:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$705_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "8794:32:3" + }, + "scope": 948, + "src": "8737:170:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 949, + "src": "2349:6560:3", + "usedErrors": [ + 711, + 714 + ], + "usedEvents": [ + 719 + ] + } + ], + "src": "113:8797:3" + }, + "id": 3 + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 994 + ], + "Initializable": [ + 948 + ] + }, + "id": 995, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 950, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:4" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 952, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 995, + "sourceUnit": 949, + "src": "126:63:4", + "symbolAliases": [ + { + "foreign": { + "id": 951, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "134:13:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 954, + "name": "Initializable", + "nameLocations": [ + "728:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 948, + "src": "728:13:4" + }, + "id": 955, + "nodeType": "InheritanceSpecifier", + "src": "728:13:4" + } + ], + "canonicalName": "ContextUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 953, + "nodeType": "StructuredDocumentation", + "src": "191:496:4", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 994, + "linearizedBaseContracts": [ + 994, + 948 + ], + "name": "ContextUpgradeable", + "nameLocation": "706:18:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 960, + "nodeType": "Block", + "src": "800:7:4", + "statements": [] + }, + "id": 961, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 958, + "kind": "modifierInvocation", + "modifierName": { + "id": 957, + "name": "onlyInitializing", + "nameLocations": [ + "783:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "783:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "783:16:4" + } + ], + "name": "__Context_init", + "nameLocation": "757:14:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 956, + "nodeType": "ParameterList", + "parameters": [], + "src": "771:2:4" + }, + "returnParameters": { + "id": 959, + "nodeType": "ParameterList", + "parameters": [], + "src": "800:0:4" + }, + "scope": 994, + "src": "748:59:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 966, + "nodeType": "Block", + "src": "875:7:4", + "statements": [] + }, + "id": 967, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 964, + "kind": "modifierInvocation", + "modifierName": { + "id": 963, + "name": "onlyInitializing", + "nameLocations": [ + "858:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "858:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "858:16:4" + } + ], + "name": "__Context_init_unchained", + "nameLocation": "822:24:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 962, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:2:4" + }, + "returnParameters": { + "id": 965, + "nodeType": "ParameterList", + "parameters": [], + "src": "875:0:4" + }, + "scope": 994, + "src": "813:69:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 975, + "nodeType": "Block", + "src": "949:34:4", + "statements": [ + { + "expression": { + "expression": { + "id": 972, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "966:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "970:6:4", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "966:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 971, + "id": 974, + "nodeType": "Return", + "src": "959:17:4" + } + ] + }, + "id": 976, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "896:10:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 968, + "nodeType": "ParameterList", + "parameters": [], + "src": "906:2:4" + }, + "returnParameters": { + "id": 971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 970, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 976, + "src": "940:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "940:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "939:9:4" + }, + "scope": 994, + "src": "887:96:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 984, + "nodeType": "Block", + "src": "1056:32:4", + "statements": [ + { + "expression": { + "expression": { + "id": 981, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "1073:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1077:4:4", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "1073:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 980, + "id": 983, + "nodeType": "Return", + "src": "1066:15:4" + } + ] + }, + "id": 985, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "998:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 977, + "nodeType": "ParameterList", + "parameters": [], + "src": "1006:2:4" + }, + "returnParameters": { + "id": 980, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 979, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 985, + "src": "1040:14:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 978, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1040:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1039:16:4" + }, + "scope": 994, + "src": "989:99:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 992, + "nodeType": "Block", + "src": "1166:25:4", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1183:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 989, + "id": 991, + "nodeType": "Return", + "src": "1176:8:4" + } + ] + }, + "id": 993, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "1103:20:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 986, + "nodeType": "ParameterList", + "parameters": [], + "src": "1123:2:4" + }, + "returnParameters": { + "id": 989, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 988, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 993, + "src": "1157:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 987, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1157:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1156:9:4" + }, + "scope": 994, + "src": "1094:97:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 995, + "src": "688:505:4", + "usedErrors": [ + 711, + 714 + ], + "usedEvents": [ + 719 + ] + } + ], + "src": "101:1093:4" + }, + "id": 4 + }, + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol", + "exportedSymbols": { + "ERC165Upgradeable": [ + 1034 + ], + "IERC165": [ + 2346 + ], + "Initializable": [ + 948 + ] + }, + "id": 1035, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 996, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:5" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 998, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1035, + "sourceUnit": 2347, + "src": "140:80:5", + "symbolAliases": [ + { + "foreign": { + "id": 997, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2346, + "src": "148:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 1000, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1035, + "sourceUnit": 949, + "src": "221:66:5", + "symbolAliases": [ + { + "foreign": { + "id": 999, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "229:13:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1002, + "name": "Initializable", + "nameLocations": [ + "808:13:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 948, + "src": "808:13:5" + }, + "id": 1003, + "nodeType": "InheritanceSpecifier", + "src": "808:13:5" + }, + { + "baseName": { + "id": 1004, + "name": "IERC165", + "nameLocations": [ + "823:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2346, + "src": "823:7:5" + }, + "id": 1005, + "nodeType": "InheritanceSpecifier", + "src": "823:7:5" + } + ], + "canonicalName": "ERC165Upgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1001, + "nodeType": "StructuredDocumentation", + "src": "289:479:5", + "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```" + }, + "fullyImplemented": true, + "id": 1034, + "linearizedBaseContracts": [ + 1034, + 2346, + 948 + ], + "name": "ERC165Upgradeable", + "nameLocation": "787:17:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1010, + "nodeType": "Block", + "src": "888:7:5", + "statements": [] + }, + "id": 1011, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1008, + "kind": "modifierInvocation", + "modifierName": { + "id": 1007, + "name": "onlyInitializing", + "nameLocations": [ + "871:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "871:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "871:16:5" + } + ], + "name": "__ERC165_init", + "nameLocation": "846:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1006, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:2:5" + }, + "returnParameters": { + "id": 1009, + "nodeType": "ParameterList", + "parameters": [], + "src": "888:0:5" + }, + "scope": 1034, + "src": "837:58:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1016, + "nodeType": "Block", + "src": "962:7:5", + "statements": [] + }, + "id": 1017, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1014, + "kind": "modifierInvocation", + "modifierName": { + "id": 1013, + "name": "onlyInitializing", + "nameLocations": [ + "945:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 857, + "src": "945:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "945:16:5" + } + ], + "name": "__ERC165_init_unchained", + "nameLocation": "910:23:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1012, + "nodeType": "ParameterList", + "parameters": [], + "src": "933:2:5" + }, + "returnParameters": { + "id": 1015, + "nodeType": "ParameterList", + "parameters": [], + "src": "962:0:5" + }, + "scope": 1034, + "src": "901:68:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 2345 + ], + "body": { + "id": 1032, + "nodeType": "Block", + "src": "1117:64:5", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1025, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "1134:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 1027, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2346, + "src": "1154:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC165_$2346_$", + "typeString": "type(contract IERC165)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC165_$2346_$", + "typeString": "type(contract IERC165)" + } + ], + "id": 1026, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "1149:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1149:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$2346", + "typeString": "type(contract IERC165)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1163:11:5", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1149:25:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1134:40:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1024, + "id": 1031, + "nodeType": "Return", + "src": "1127:47:5" + } + ] + }, + "documentation": { + "id": 1018, + "nodeType": "StructuredDocumentation", + "src": "974:56:5", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 1033, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1044:17:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1020, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1069:11:5", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "1062:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1019, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1062:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1061:20:5" + }, + "returnParameters": { + "id": 1024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1023, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "1111:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1022, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1111:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1110:6:5" + }, + "scope": 1034, + "src": "1035:146:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 1035, + "src": "769:414:5", + "usedErrors": [ + 711, + 714 + ], + "usedEvents": [ + 719 + ] + } + ], + "src": "114:1070:5" + }, + "id": 5 + }, + "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol", + "exportedSymbols": { + "IAccessControl": [ + 1117 + ] + }, + "id": 1118, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1036, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:6" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IAccessControl", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1037, + "nodeType": "StructuredDocumentation", + "src": "135:90:6", + "text": " @dev External interface of AccessControl declared to support ERC-165 detection." + }, + "fullyImplemented": false, + "id": 1117, + "linearizedBaseContracts": [ + 1117 + ], + "name": "IAccessControl", + "nameLocation": "236:14:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1038, + "nodeType": "StructuredDocumentation", + "src": "257:56:6", + "text": " @dev The `account` is missing a role." + }, + "errorSelector": "e2517d3f", + "id": 1044, + "name": "AccessControlUnauthorizedAccount", + "nameLocation": "324:32:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1040, + "mutability": "mutable", + "name": "account", + "nameLocation": "365:7:6", + "nodeType": "VariableDeclaration", + "scope": 1044, + "src": "357:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "357:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1042, + "mutability": "mutable", + "name": "neededRole", + "nameLocation": "382:10:6", + "nodeType": "VariableDeclaration", + "scope": 1044, + "src": "374:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1041, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "374:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "356:37:6" + }, + "src": "318:76:6" + }, + { + "documentation": { + "id": 1045, + "nodeType": "StructuredDocumentation", + "src": "400:148:6", + "text": " @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}." + }, + "errorSelector": "6697b232", + "id": 1047, + "name": "AccessControlBadConfirmation", + "nameLocation": "559:28:6", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1046, + "nodeType": "ParameterList", + "parameters": [], + "src": "587:2:6" + }, + "src": "553:37:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1048, + "nodeType": "StructuredDocumentation", + "src": "596:254:6", + "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this." + }, + "eventSelector": "bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", + "id": 1056, + "name": "RoleAdminChanged", + "nameLocation": "861:16:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 1055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "894:4:6", + "nodeType": "VariableDeclaration", + "scope": 1056, + "src": "878:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1049, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "878:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1052, + "indexed": true, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "916:17:6", + "nodeType": "VariableDeclaration", + "scope": 1056, + "src": "900:33:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1051, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "900:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1054, + "indexed": true, + "mutability": "mutable", + "name": "newAdminRole", + "nameLocation": "951:12:6", + "nodeType": "VariableDeclaration", + "scope": 1056, + "src": "935:28:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1053, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "935:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "877:87:6" + }, + "src": "855:110:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1057, + "nodeType": "StructuredDocumentation", + "src": "971:212:6", + "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}." + }, + "eventSelector": "2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "id": 1065, + "name": "RoleGranted", + "nameLocation": "1194:11:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 1064, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1059, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1222:4:6", + "nodeType": "VariableDeclaration", + "scope": 1065, + "src": "1206:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1058, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1206:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1061, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1244:7:6", + "nodeType": "VariableDeclaration", + "scope": 1065, + "src": "1228:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1060, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1228:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1063, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1269:6:6", + "nodeType": "VariableDeclaration", + "scope": 1065, + "src": "1253:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1253:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1205:71:6" + }, + "src": "1188:89:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1066, + "nodeType": "StructuredDocumentation", + "src": "1283:275:6", + "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "eventSelector": "f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b", + "id": 1074, + "name": "RoleRevoked", + "nameLocation": "1569:11:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 1073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1068, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1597:4:6", + "nodeType": "VariableDeclaration", + "scope": 1074, + "src": "1581:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1067, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1581:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1070, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1619:7:6", + "nodeType": "VariableDeclaration", + "scope": 1074, + "src": "1603:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1069, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1603:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1072, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1644:6:6", + "nodeType": "VariableDeclaration", + "scope": 1074, + "src": "1628:22:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1628:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1580:71:6" + }, + "src": "1563:89:6" + }, + { + "documentation": { + "id": 1075, + "nodeType": "StructuredDocumentation", + "src": "1658:76:6", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 1084, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "1748:7:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1077, + "mutability": "mutable", + "name": "role", + "nameLocation": "1764:4:6", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "1756:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1076, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1756:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1079, + "mutability": "mutable", + "name": "account", + "nameLocation": "1778:7:6", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "1770:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1770:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1755:31:6" + }, + "returnParameters": { + "id": 1083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1082, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1084, + "src": "1810:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1081, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1810:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1809:6:6" + }, + "scope": 1117, + "src": "1739:77:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1085, + "nodeType": "StructuredDocumentation", + "src": "1822:184:6", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 1092, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "2020:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1087, + "mutability": "mutable", + "name": "role", + "nameLocation": "2041:4:6", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "2033:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1086, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2033:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2032:14:6" + }, + "returnParameters": { + "id": 1091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1090, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1092, + "src": "2070:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1089, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2070:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2069:9:6" + }, + "scope": 1117, + "src": "2011:68:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1093, + "nodeType": "StructuredDocumentation", + "src": "2085:239:6", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "2f2ff15d", + "id": 1100, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nameLocation": "2338:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1095, + "mutability": "mutable", + "name": "role", + "nameLocation": "2356:4:6", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "2348:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1094, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2348:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1097, + "mutability": "mutable", + "name": "account", + "nameLocation": "2370:7:6", + "nodeType": "VariableDeclaration", + "scope": 1100, + "src": "2362:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2362:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2347:31:6" + }, + "returnParameters": { + "id": 1099, + "nodeType": "ParameterList", + "parameters": [], + "src": "2387:0:6" + }, + "scope": 1117, + "src": "2329:59:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1101, + "nodeType": "StructuredDocumentation", + "src": "2394:223:6", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "d547741f", + "id": 1108, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nameLocation": "2631:10:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1103, + "mutability": "mutable", + "name": "role", + "nameLocation": "2650:4:6", + "nodeType": "VariableDeclaration", + "scope": 1108, + "src": "2642:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1102, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2642:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1105, + "mutability": "mutable", + "name": "account", + "nameLocation": "2664:7:6", + "nodeType": "VariableDeclaration", + "scope": 1108, + "src": "2656:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2656:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2641:31:6" + }, + "returnParameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [], + "src": "2681:0:6" + }, + "scope": 1117, + "src": "2622:60:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1109, + "nodeType": "StructuredDocumentation", + "src": "2688:491:6", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`." + }, + "functionSelector": "36568abe", + "id": 1116, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "3193:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1111, + "mutability": "mutable", + "name": "role", + "nameLocation": "3214:4:6", + "nodeType": "VariableDeclaration", + "scope": 1116, + "src": "3206:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1110, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3206:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1113, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "3228:18:6", + "nodeType": "VariableDeclaration", + "scope": 1116, + "src": "3220:26:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3220:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3205:42:6" + }, + "returnParameters": { + "id": 1115, + "nodeType": "ParameterList", + "parameters": [], + "src": "3256:0:6" + }, + "scope": 1117, + "src": "3184:73:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1118, + "src": "226:3033:6", + "usedErrors": [ + 1044, + 1047 + ], + "usedEvents": [ + 1056, + 1065, + 1074 + ] + } + ], + "src": "109:3151:6" + }, + "id": 6 + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "exportedSymbols": { + "Context": [ + 2121 + ], + "Ownable": [ + 1265 + ] + }, + "id": 1266, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1119, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:7" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "file": "../utils/Context.sol", + "id": 1121, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1266, + "sourceUnit": 2122, + "src": "128:45:7", + "symbolAliases": [ + { + "foreign": { + "id": 1120, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2121, + "src": "136:7:7", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1123, + "name": "Context", + "nameLocations": [ + "692:7:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2121, + "src": "692:7:7" + }, + "id": 1124, + "nodeType": "InheritanceSpecifier", + "src": "692:7:7" + } + ], + "canonicalName": "Ownable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1122, + "nodeType": "StructuredDocumentation", + "src": "175:487:7", + "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." + }, + "fullyImplemented": true, + "id": 1265, + "linearizedBaseContracts": [ + 1265, + 2121 + ], + "name": "Ownable", + "nameLocation": "681:7:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1126, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "722:6:7", + "nodeType": "VariableDeclaration", + "scope": 1265, + "src": "706:22:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "documentation": { + "id": 1127, + "nodeType": "StructuredDocumentation", + "src": "735:85:7", + "text": " @dev The caller account is not authorized to perform an operation." + }, + "errorSelector": "118cdaa7", + "id": 1131, + "name": "OwnableUnauthorizedAccount", + "nameLocation": "831:26:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1129, + "mutability": "mutable", + "name": "account", + "nameLocation": "866:7:7", + "nodeType": "VariableDeclaration", + "scope": 1131, + "src": "858:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "858:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "857:17:7" + }, + "src": "825:50:7" + }, + { + "documentation": { + "id": 1132, + "nodeType": "StructuredDocumentation", + "src": "881:82:7", + "text": " @dev The owner is not a valid owner account. (eg. `address(0)`)" + }, + "errorSelector": "1e4fbdf7", + "id": 1136, + "name": "OwnableInvalidOwner", + "nameLocation": "974:19:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1134, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1002:5:7", + "nodeType": "VariableDeclaration", + "scope": 1136, + "src": "994:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "994:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "993:15:7" + }, + "src": "968:41:7" + }, + { + "anonymous": false, + "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "id": 1142, + "name": "OwnershipTransferred", + "nameLocation": "1021:20:7", + "nodeType": "EventDefinition", + "parameters": { + "id": 1141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1138, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "1058:13:7", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "1042:29:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1042:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1140, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "1089:8:7", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "1073:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1139, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1073:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1041:57:7" + }, + "src": "1015:84:7" + }, + { + "body": { + "id": 1167, + "nodeType": "Block", + "src": "1259:153:7", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1148, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "1273:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1297:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1289:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1289:7:7", + "typeDescriptions": {} + } + }, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1289:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1273:26:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1162, + "nodeType": "IfStatement", + "src": "1269:95:7", + "trueBody": { + "id": 1161, + "nodeType": "Block", + "src": "1301:63:7", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1350:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1342:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1342:7:7", + "typeDescriptions": {} + } + }, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1342:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1154, + "name": "OwnableInvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1136, + "src": "1322:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1322:31:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1160, + "nodeType": "RevertStatement", + "src": "1315:38:7" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 1164, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "1392:12:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1163, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1264, + "src": "1373:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1373:32:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1166, + "nodeType": "ExpressionStatement", + "src": "1373:32:7" + } + ] + }, + "documentation": { + "id": 1143, + "nodeType": "StructuredDocumentation", + "src": "1105:115:7", + "text": " @dev Initializes the contract setting the address provided by the deployer as the initial owner." + }, + "id": 1168, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1145, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "1245:12:7", + "nodeType": "VariableDeclaration", + "scope": 1168, + "src": "1237:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1237:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1236:22:7" + }, + "returnParameters": { + "id": 1147, + "nodeType": "ParameterList", + "parameters": [], + "src": "1259:0:7" + }, + "scope": 1265, + "src": "1225:187:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1175, + "nodeType": "Block", + "src": "1521:41:7", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1171, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1202, + "src": "1531:11:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1531:13:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1173, + "nodeType": "ExpressionStatement", + "src": "1531:13:7" + }, + { + "id": 1174, + "nodeType": "PlaceholderStatement", + "src": "1554:1:7" + } + ] + }, + "documentation": { + "id": 1169, + "nodeType": "StructuredDocumentation", + "src": "1418:77:7", + "text": " @dev Throws if called by any account other than the owner." + }, + "id": 1176, + "name": "onlyOwner", + "nameLocation": "1509:9:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1170, + "nodeType": "ParameterList", + "parameters": [], + "src": "1518:2:7" + }, + "src": "1500:62:7", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1184, + "nodeType": "Block", + "src": "1693:30:7", + "statements": [ + { + "expression": { + "id": 1182, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "1710:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1181, + "id": 1183, + "nodeType": "Return", + "src": "1703:13:7" + } + ] + }, + "documentation": { + "id": 1177, + "nodeType": "StructuredDocumentation", + "src": "1568:65:7", + "text": " @dev Returns the address of the current owner." + }, + "functionSelector": "8da5cb5b", + "id": 1185, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nameLocation": "1647:5:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1178, + "nodeType": "ParameterList", + "parameters": [], + "src": "1652:2:7" + }, + "returnParameters": { + "id": 1181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1180, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1185, + "src": "1684:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1179, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1684:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1683:9:7" + }, + "scope": 1265, + "src": "1638:85:7", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1201, + "nodeType": "Block", + "src": "1841:117:7", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1189, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1185, + "src": "1855:5:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1855:7:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1191, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "1866:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1866:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1855:23:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1200, + "nodeType": "IfStatement", + "src": "1851:101:7", + "trueBody": { + "id": 1199, + "nodeType": "Block", + "src": "1880:72:7", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1195, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2103, + "src": "1928:10:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1928:12:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1194, + "name": "OwnableUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1131, + "src": "1901:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1901:40:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1198, + "nodeType": "RevertStatement", + "src": "1894:47:7" + } + ] + } + } + ] + }, + "documentation": { + "id": 1186, + "nodeType": "StructuredDocumentation", + "src": "1729:62:7", + "text": " @dev Throws if the sender is not the owner." + }, + "id": 1202, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOwner", + "nameLocation": "1805:11:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1187, + "nodeType": "ParameterList", + "parameters": [], + "src": "1816:2:7" + }, + "returnParameters": { + "id": 1188, + "nodeType": "ParameterList", + "parameters": [], + "src": "1841:0:7" + }, + "scope": 1265, + "src": "1796:162:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1215, + "nodeType": "Block", + "src": "2347:47:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2384:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2376:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2376:7:7", + "typeDescriptions": {} + } + }, + "id": 1212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2376:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1208, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1264, + "src": "2357:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2357:30:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1214, + "nodeType": "ExpressionStatement", + "src": "2357:30:7" + } + ] + }, + "documentation": { + "id": 1203, + "nodeType": "StructuredDocumentation", + "src": "1964:324:7", + "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner." + }, + "functionSelector": "715018a6", + "id": 1216, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1206, + "kind": "modifierInvocation", + "modifierName": { + "id": 1205, + "name": "onlyOwner", + "nameLocations": [ + "2337:9:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1176, + "src": "2337:9:7" + }, + "nodeType": "ModifierInvocation", + "src": "2337:9:7" + } + ], + "name": "renounceOwnership", + "nameLocation": "2302:17:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1204, + "nodeType": "ParameterList", + "parameters": [], + "src": "2319:2:7" + }, + "returnParameters": { + "id": 1207, + "nodeType": "ParameterList", + "parameters": [], + "src": "2347:0:7" + }, + "scope": 1265, + "src": "2293:101:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1243, + "nodeType": "Block", + "src": "2613:145:7", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1224, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1219, + "src": "2627:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2647:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2639:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2639:7:7", + "typeDescriptions": {} + } + }, + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2639:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2627:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1238, + "nodeType": "IfStatement", + "src": "2623:91:7", + "trueBody": { + "id": 1237, + "nodeType": "Block", + "src": "2651:63:7", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2700:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2692:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1231, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2692:7:7", + "typeDescriptions": {} + } + }, + "id": 1234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2692:10:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1230, + "name": "OwnableInvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1136, + "src": "2672:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2672:31:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1236, + "nodeType": "RevertStatement", + "src": "2665:38:7" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 1240, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1219, + "src": "2742:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1239, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1264, + "src": "2723:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2723:28:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1242, + "nodeType": "ExpressionStatement", + "src": "2723:28:7" + } + ] + }, + "documentation": { + "id": 1217, + "nodeType": "StructuredDocumentation", + "src": "2400:138:7", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 1244, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1222, + "kind": "modifierInvocation", + "modifierName": { + "id": 1221, + "name": "onlyOwner", + "nameLocations": [ + "2603:9:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1176, + "src": "2603:9:7" + }, + "nodeType": "ModifierInvocation", + "src": "2603:9:7" + } + ], + "name": "transferOwnership", + "nameLocation": "2552:17:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1219, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "2578:8:7", + "nodeType": "VariableDeclaration", + "scope": 1244, + "src": "2570:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2570:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2569:18:7" + }, + "returnParameters": { + "id": 1223, + "nodeType": "ParameterList", + "parameters": [], + "src": "2613:0:7" + }, + "scope": 1265, + "src": "2543:215:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1263, + "nodeType": "Block", + "src": "2975:124:7", + "statements": [ + { + "assignments": [ + 1251 + ], + "declarations": [ + { + "constant": false, + "id": 1251, + "mutability": "mutable", + "name": "oldOwner", + "nameLocation": "2993:8:7", + "nodeType": "VariableDeclaration", + "scope": 1263, + "src": "2985:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1250, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2985:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1253, + "initialValue": { + "id": 1252, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "3004:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2985:25:7" + }, + { + "expression": { + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1254, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "3020:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1255, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1247, + "src": "3029:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3020:17:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1257, + "nodeType": "ExpressionStatement", + "src": "3020:17:7" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1259, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "3073:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1260, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1247, + "src": "3083:8:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1258, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "3052:20:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3052:40:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1262, + "nodeType": "EmitStatement", + "src": "3047:45:7" + } + ] + }, + "documentation": { + "id": 1245, + "nodeType": "StructuredDocumentation", + "src": "2764:143:7", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction." + }, + "id": 1264, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nameLocation": "2921:18:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1247, + "mutability": "mutable", + "name": "newOwner", + "nameLocation": "2948:8:7", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "2940:16:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1246, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2940:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2939:18:7" + }, + "returnParameters": { + "id": 1249, + "nodeType": "ParameterList", + "parameters": [], + "src": "2975:0:7" + }, + "scope": 1265, + "src": "2912:187:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1266, + "src": "663:2438:7", + "usedErrors": [ + 1131, + 1136 + ], + "usedEvents": [ + 1142 + ] + } + ], + "src": "102:3000:7" + }, + "id": 7 + }, + "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "exportedSymbols": { + "Address": [ + 2091 + ], + "ERC1967Utils": [ + 1568 + ], + "IBeacon": [ + 1672 + ], + "StorageSlot": [ + 2334 + ] + }, + "id": 1569, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1267, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:8" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "file": "../beacon/IBeacon.sol", + "id": 1269, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1569, + "sourceUnit": 1673, + "src": "140:46:8", + "symbolAliases": [ + { + "foreign": { + "id": 1268, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "148:7:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 1271, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1569, + "sourceUnit": 2092, + "src": "187:48:8", + "symbolAliases": [ + { + "foreign": { + "id": 1270, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "195:7:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "file": "../../utils/StorageSlot.sol", + "id": 1273, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1569, + "sourceUnit": 2335, + "src": "236:56:8", + "symbolAliases": [ + { + "foreign": { + "id": 1272, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "244:11:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ERC1967Utils", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1274, + "nodeType": "StructuredDocumentation", + "src": "294:155:8", + "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots." + }, + "fullyImplemented": true, + "id": 1568, + "linearizedBaseContracts": [ + 1568 + ], + "name": "ERC1967Utils", + "nameLocation": "458:12:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 1275, + "nodeType": "StructuredDocumentation", + "src": "477:68:8", + "text": " @dev Emitted when the implementation is upgraded." + }, + "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "id": 1279, + "name": "Upgraded", + "nameLocation": "556:8:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 1278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1277, + "indexed": true, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "581:14:8", + "nodeType": "VariableDeclaration", + "scope": 1279, + "src": "565:30:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "565:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "564:32:8" + }, + "src": "550:47:8" + }, + { + "anonymous": false, + "documentation": { + "id": 1280, + "nodeType": "StructuredDocumentation", + "src": "603:67:8", + "text": " @dev Emitted when the admin account has changed." + }, + "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", + "id": 1286, + "name": "AdminChanged", + "nameLocation": "681:12:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 1285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1282, + "indexed": false, + "mutability": "mutable", + "name": "previousAdmin", + "nameLocation": "702:13:8", + "nodeType": "VariableDeclaration", + "scope": 1286, + "src": "694:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1281, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "694:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1284, + "indexed": false, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "725:8:8", + "nodeType": "VariableDeclaration", + "scope": 1286, + "src": "717:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "717:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "693:41:8" + }, + "src": "675:60:8" + }, + { + "anonymous": false, + "documentation": { + "id": 1287, + "nodeType": "StructuredDocumentation", + "src": "741:59:8", + "text": " @dev Emitted when the beacon is changed." + }, + "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e", + "id": 1291, + "name": "BeaconUpgraded", + "nameLocation": "811:14:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 1290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1289, + "indexed": true, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "842:6:8", + "nodeType": "VariableDeclaration", + "scope": 1291, + "src": "826:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "826:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "825:24:8" + }, + "src": "805:45:8" + }, + { + "constant": true, + "documentation": { + "id": 1292, + "nodeType": "StructuredDocumentation", + "src": "856:170:8", + "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1." + }, + "id": 1295, + "mutability": "constant", + "name": "IMPLEMENTATION_SLOT", + "nameLocation": "1122:19:8", + "nodeType": "VariableDeclaration", + "scope": 1568, + "src": "1096:114:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1293, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1096:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", + "id": 1294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1144:66:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", + "typeString": "int_const 2444...(69 digits omitted)...5612" + }, + "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 1296, + "nodeType": "StructuredDocumentation", + "src": "1217:69:8", + "text": " @dev The `implementation` of the proxy is invalid." + }, + "errorSelector": "4c9c8ce3", + "id": 1300, + "name": "ERC1967InvalidImplementation", + "nameLocation": "1297:28:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1298, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1334:14:8", + "nodeType": "VariableDeclaration", + "scope": 1300, + "src": "1326:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1326:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1325:24:8" + }, + "src": "1291:59:8" + }, + { + "documentation": { + "id": 1301, + "nodeType": "StructuredDocumentation", + "src": "1356:60:8", + "text": " @dev The `admin` of the proxy is invalid." + }, + "errorSelector": "62e77ba2", + "id": 1305, + "name": "ERC1967InvalidAdmin", + "nameLocation": "1427:19:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1303, + "mutability": "mutable", + "name": "admin", + "nameLocation": "1455:5:8", + "nodeType": "VariableDeclaration", + "scope": 1305, + "src": "1447:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1302, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1447:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1446:15:8" + }, + "src": "1421:41:8" + }, + { + "documentation": { + "id": 1306, + "nodeType": "StructuredDocumentation", + "src": "1468:61:8", + "text": " @dev The `beacon` of the proxy is invalid." + }, + "errorSelector": "64ced0ec", + "id": 1310, + "name": "ERC1967InvalidBeacon", + "nameLocation": "1540:20:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1308, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "1569:6:8", + "nodeType": "VariableDeclaration", + "scope": 1310, + "src": "1561:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1561:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1560:16:8" + }, + "src": "1534:43:8" + }, + { + "documentation": { + "id": 1311, + "nodeType": "StructuredDocumentation", + "src": "1583:82:8", + "text": " @dev An upgrade function sees `msg.value > 0` that may be lost." + }, + "errorSelector": "b398979f", + "id": 1313, + "name": "ERC1967NonPayable", + "nameLocation": "1676:17:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1312, + "nodeType": "ParameterList", + "parameters": [], + "src": "1693:2:8" + }, + "src": "1670:26:8" + }, + { + "body": { + "id": 1325, + "nodeType": "Block", + "src": "1835:77:8", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 1321, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "1879:19:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1319, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "1852:11:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1864:14:8", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "1852:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1852:47:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1323, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1900:5:8", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "1852:53:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1318, + "id": 1324, + "nodeType": "Return", + "src": "1845:60:8" + } + ] + }, + "documentation": { + "id": 1314, + "nodeType": "StructuredDocumentation", + "src": "1702:67:8", + "text": " @dev Returns the current implementation address." + }, + "id": 1326, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getImplementation", + "nameLocation": "1783:17:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1315, + "nodeType": "ParameterList", + "parameters": [], + "src": "1800:2:8" + }, + "returnParameters": { + "id": 1318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1317, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "1826:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1316, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1826:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1825:9:8" + }, + "scope": 1568, + "src": "1774:138:8", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1352, + "nodeType": "Block", + "src": "2067:218:8", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1332, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "2081:17:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2099:4:8", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "2081:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2104:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2081:29:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2114:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2081:34:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1342, + "nodeType": "IfStatement", + "src": "2077:119:8", + "trueBody": { + "id": 1341, + "nodeType": "Block", + "src": "2117:79:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1338, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "2167:17:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1337, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1300, + "src": "2138:28:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2138:47:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1340, + "nodeType": "RevertStatement", + "src": "2131:54:8" + } + ] + } + }, + { + "expression": { + "id": 1350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 1346, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "2232:19:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1343, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "2205:11:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2217:14:8", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "2205:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2205:47:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1348, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2253:5:8", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "2205:53:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1349, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "2261:17:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2205:73:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1351, + "nodeType": "ExpressionStatement", + "src": "2205:73:8" + } + ] + }, + "documentation": { + "id": 1327, + "nodeType": "StructuredDocumentation", + "src": "1918:81:8", + "text": " @dev Stores a new address in the ERC-1967 implementation slot." + }, + "id": 1353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setImplementation", + "nameLocation": "2013:18:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1329, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2040:17:8", + "nodeType": "VariableDeclaration", + "scope": 1353, + "src": "2032:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2032:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2031:27:8" + }, + "returnParameters": { + "id": 1331, + "nodeType": "ParameterList", + "parameters": [], + "src": "2067:0:8" + }, + "scope": 1568, + "src": "2004:281:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1386, + "nodeType": "Block", + "src": "2678:254:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1362, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1356, + "src": "2707:17:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1361, + "name": "_setImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1353, + "src": "2688:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2688:37:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1364, + "nodeType": "ExpressionStatement", + "src": "2688:37:8" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1366, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1356, + "src": "2749:17:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1365, + "name": "Upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "2740:8:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2740:27:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1368, + "nodeType": "EmitStatement", + "src": "2735:32:8" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1369, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "2782:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2787:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2782:11:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2796:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2782:15:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1384, + "nodeType": "Block", + "src": "2883:43:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1381, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "2897:16:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2897:18:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1383, + "nodeType": "ExpressionStatement", + "src": "2897:18:8" + } + ] + }, + "id": 1385, + "nodeType": "IfStatement", + "src": "2778:148:8", + "trueBody": { + "id": 1380, + "nodeType": "Block", + "src": "2799:78:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1376, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1356, + "src": "2842:17:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1377, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "2861:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1373, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "2813:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$2091_$", + "typeString": "type(library Address)" + } + }, + "id": 1375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2821:20:8", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 2010, + "src": "2813:28:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2813:53:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1379, + "nodeType": "ExpressionStatement", + "src": "2813:53:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 1354, + "nodeType": "StructuredDocumentation", + "src": "2291:301:8", + "text": " @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event." + }, + "id": 1387, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeToAndCall", + "nameLocation": "2606:16:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1356, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2631:17:8", + "nodeType": "VariableDeclaration", + "scope": 1387, + "src": "2623:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2623:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1358, + "mutability": "mutable", + "name": "data", + "nameLocation": "2663:4:8", + "nodeType": "VariableDeclaration", + "scope": 1387, + "src": "2650:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1357, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2650:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2622:46:8" + }, + "returnParameters": { + "id": 1360, + "nodeType": "ParameterList", + "parameters": [], + "src": "2678:0:8" + }, + "scope": 1568, + "src": "2597:335:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 1388, + "nodeType": "StructuredDocumentation", + "src": "2938:145:8", + "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1." + }, + "id": 1391, + "mutability": "constant", + "name": "ADMIN_SLOT", + "nameLocation": "3179:10:8", + "nodeType": "VariableDeclaration", + "scope": 1568, + "src": "3153:105:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1389, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3153:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033", + "id": 1390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3192:66:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1", + "typeString": "int_const 8195...(69 digits omitted)...7091" + }, + "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103" + }, + "visibility": "internal" + }, + { + "body": { + "id": 1403, + "nodeType": "Block", + "src": "3663:68:8", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 1399, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "3707:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1397, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "3680:11:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3692:14:8", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "3680:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3680:38:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1401, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3719:5:8", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "3680:44:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1396, + "id": 1402, + "nodeType": "Return", + "src": "3673:51:8" + } + ] + }, + "documentation": { + "id": 1392, + "nodeType": "StructuredDocumentation", + "src": "3265:341:8", + "text": " @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" + }, + "id": 1404, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAdmin", + "nameLocation": "3620:8:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1393, + "nodeType": "ParameterList", + "parameters": [], + "src": "3628:2:8" + }, + "returnParameters": { + "id": 1396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1395, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "3654:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3654:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3653:9:8" + }, + "scope": 1568, + "src": "3611:120:8", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1434, + "nodeType": "Block", + "src": "3859:172:8", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1410, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1407, + "src": "3873:8:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3893:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3885:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3885:7:8", + "typeDescriptions": {} + } + }, + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3885:10:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3873:22:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1424, + "nodeType": "IfStatement", + "src": "3869:91:8", + "trueBody": { + "id": 1423, + "nodeType": "Block", + "src": "3897:63:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3946:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3938:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1417, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3938:7:8", + "typeDescriptions": {} + } + }, + "id": 1420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3938:10:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1416, + "name": "ERC1967InvalidAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1305, + "src": "3918:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3918:31:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1422, + "nodeType": "RevertStatement", + "src": "3911:38:8" + } + ] + } + }, + { + "expression": { + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 1428, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1391, + "src": "3996:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1425, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "3969:11:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3981:14:8", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "3969:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3969:38:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1430, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4008:5:8", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "3969:44:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1431, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1407, + "src": "4016:8:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3969:55:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1433, + "nodeType": "ExpressionStatement", + "src": "3969:55:8" + } + ] + }, + "documentation": { + "id": 1405, + "nodeType": "StructuredDocumentation", + "src": "3737:72:8", + "text": " @dev Stores a new address in the ERC-1967 admin slot." + }, + "id": 1435, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setAdmin", + "nameLocation": "3823:9:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1407, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "3841:8:8", + "nodeType": "VariableDeclaration", + "scope": 1435, + "src": "3833:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3833:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3832:18:8" + }, + "returnParameters": { + "id": 1409, + "nodeType": "ParameterList", + "parameters": [], + "src": "3859:0:8" + }, + "scope": 1568, + "src": "3814:217:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1451, + "nodeType": "Block", + "src": "4199:85:8", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1442, + "name": "getAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "4227:8:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4227:10:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1444, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1438, + "src": "4239:8:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1441, + "name": "AdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1286, + "src": "4214:12:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4214:34:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1446, + "nodeType": "EmitStatement", + "src": "4209:39:8" + }, + { + "expression": { + "arguments": [ + { + "id": 1448, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1438, + "src": "4268:8:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1447, + "name": "_setAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "4258:9:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4258:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1450, + "nodeType": "ExpressionStatement", + "src": "4258:19:8" + } + ] + }, + "documentation": { + "id": 1436, + "nodeType": "StructuredDocumentation", + "src": "4037:109:8", + "text": " @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event." + }, + "id": 1452, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "changeAdmin", + "nameLocation": "4160:11:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1438, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "4180:8:8", + "nodeType": "VariableDeclaration", + "scope": 1452, + "src": "4172:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4172:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4171:18:8" + }, + "returnParameters": { + "id": 1440, + "nodeType": "ParameterList", + "parameters": [], + "src": "4199:0:8" + }, + "scope": 1568, + "src": "4151:133:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 1453, + "nodeType": "StructuredDocumentation", + "src": "4290:201:8", + "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1." + }, + "id": 1456, + "mutability": "constant", + "name": "BEACON_SLOT", + "nameLocation": "4587:11:8", + "nodeType": "VariableDeclaration", + "scope": 1568, + "src": "4561:106:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1454, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4561:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530", + "id": 1455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4601:66:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1", + "typeString": "int_const 7415...(69 digits omitted)...4704" + }, + "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50" + }, + "visibility": "internal" + }, + { + "body": { + "id": 1468, + "nodeType": "Block", + "src": "4783:69:8", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 1464, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "4827:11:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1462, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "4800:11:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4812:14:8", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "4800:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4800:39:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1466, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4840:5:8", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "4800:45:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1461, + "id": 1467, + "nodeType": "Return", + "src": "4793:52:8" + } + ] + }, + "documentation": { + "id": 1457, + "nodeType": "StructuredDocumentation", + "src": "4674:51:8", + "text": " @dev Returns the current beacon." + }, + "id": 1469, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBeacon", + "nameLocation": "4739:9:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1458, + "nodeType": "ParameterList", + "parameters": [], + "src": "4748:2:8" + }, + "returnParameters": { + "id": 1461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1460, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1469, + "src": "4774:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4774:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4773:9:8" + }, + "scope": 1568, + "src": "4730:122:8", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1514, + "nodeType": "Block", + "src": "4982:390:8", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1475, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "4996:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5006:4:8", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4996:14:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5011:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4996:21:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5021:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4996:26:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1485, + "nodeType": "IfStatement", + "src": "4992:95:8", + "trueBody": { + "id": 1484, + "nodeType": "Block", + "src": "5024:63:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1481, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "5066:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1480, + "name": "ERC1967InvalidBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "5045:20:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5045:31:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1483, + "nodeType": "RevertStatement", + "src": "5038:38:8" + } + ] + } + }, + { + "expression": { + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 1489, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "5124:11:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 1486, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "5097:11:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5109:14:8", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "5097:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5097:39:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 1491, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5137:5:8", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "5097:45:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1492, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "5145:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5097:57:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1494, + "nodeType": "ExpressionStatement", + "src": "5097:57:8" + }, + { + "assignments": [ + 1496 + ], + "declarations": [ + { + "constant": false, + "id": 1496, + "mutability": "mutable", + "name": "beaconImplementation", + "nameLocation": "5173:20:8", + "nodeType": "VariableDeclaration", + "scope": 1514, + "src": "5165:28:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5165:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1502, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1498, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "5204:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1497, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "5196:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$1672_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5196:18:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$1672", + "typeString": "contract IBeacon" + } + }, + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5215:14:8", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1671, + "src": "5196:33:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5196:35:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5165:66:8" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1503, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1496, + "src": "5245:20:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5266:4:8", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5245:25:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5271:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5245:32:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5281:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5245:37:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1513, + "nodeType": "IfStatement", + "src": "5241:125:8", + "trueBody": { + "id": 1512, + "nodeType": "Block", + "src": "5284:82:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1509, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1496, + "src": "5334:20:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1508, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1300, + "src": "5305:28:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5305:50:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1511, + "nodeType": "RevertStatement", + "src": "5298:57:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 1470, + "nodeType": "StructuredDocumentation", + "src": "4858:72:8", + "text": " @dev Stores a new beacon in the ERC-1967 beacon slot." + }, + "id": 1515, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBeacon", + "nameLocation": "4944:10:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1472, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "4963:9:8", + "nodeType": "VariableDeclaration", + "scope": 1515, + "src": "4955:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4955:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4954:19:8" + }, + "returnParameters": { + "id": 1474, + "nodeType": "ParameterList", + "parameters": [], + "src": "4982:0:8" + }, + "scope": 1568, + "src": "4935:437:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1552, + "nodeType": "Block", + "src": "5976:254:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1524, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1518, + "src": "5997:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1523, + "name": "_setBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1515, + "src": "5986:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5986:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1526, + "nodeType": "ExpressionStatement", + "src": "5986:21:8" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1528, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1518, + "src": "6037:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1527, + "name": "BeaconUpgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "6022:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6022:25:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1530, + "nodeType": "EmitStatement", + "src": "6017:30:8" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1531, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1520, + "src": "6062:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6067:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6062:11:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6076:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6062:15:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1550, + "nodeType": "Block", + "src": "6181:43:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1547, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "6195:16:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6195:18:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1549, + "nodeType": "ExpressionStatement", + "src": "6195:18:8" + } + ] + }, + "id": 1551, + "nodeType": "IfStatement", + "src": "6058:166:8", + "trueBody": { + "id": 1546, + "nodeType": "Block", + "src": "6079:96:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1539, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1518, + "src": "6130:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1538, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "6122:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$1672_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 1540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6122:18:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$1672", + "typeString": "contract IBeacon" + } + }, + "id": 1541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6141:14:8", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1671, + "src": "6122:33:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6122:35:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1543, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1520, + "src": "6159:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1535, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "6093:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$2091_$", + "typeString": "type(library Address)" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6101:20:8", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 2010, + "src": "6093:28:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 1544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6093:71:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1545, + "nodeType": "ExpressionStatement", + "src": "6093:71:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 1516, + "nodeType": "StructuredDocumentation", + "src": "5378:514:8", + "text": " @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency." + }, + "id": 1553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeBeaconToAndCall", + "nameLocation": "5906:22:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1518, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "5937:9:8", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "5929:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1517, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5929:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1520, + "mutability": "mutable", + "name": "data", + "nameLocation": "5961:4:8", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "5948:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1519, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5948:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5928:38:8" + }, + "returnParameters": { + "id": 1522, + "nodeType": "ParameterList", + "parameters": [], + "src": "5976:0:8" + }, + "scope": 1568, + "src": "5897:333:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1566, + "nodeType": "Block", + "src": "6455:86:8", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1557, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "6469:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6473:5:8", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "6469:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6481:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6469:13:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1565, + "nodeType": "IfStatement", + "src": "6465:70:8", + "trueBody": { + "id": 1564, + "nodeType": "Block", + "src": "6484:51:8", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1561, + "name": "ERC1967NonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1313, + "src": "6505:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6505:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1563, + "nodeType": "RevertStatement", + "src": "6498:26:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 1554, + "nodeType": "StructuredDocumentation", + "src": "6236:178:8", + "text": " @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call." + }, + "id": 1567, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNonPayable", + "nameLocation": "6428:16:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1555, + "nodeType": "ParameterList", + "parameters": [], + "src": "6444:2:8" + }, + "returnParameters": { + "id": 1556, + "nodeType": "ParameterList", + "parameters": [], + "src": "6455:0:8" + }, + "scope": 1568, + "src": "6419:122:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1569, + "src": "450:6093:8", + "usedErrors": [ + 1300, + 1305, + 1310, + 1313 + ], + "usedEvents": [ + 1279, + 1286, + 1291 + ] + } + ], + "src": "114:6430:8" + }, + "id": 8 + }, + "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 1604 + ] + }, + "id": 1605, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1570, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "99:24:9" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Proxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1571, + "nodeType": "StructuredDocumentation", + "src": "125:598:9", + "text": " @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy." + }, + "fullyImplemented": false, + "id": 1604, + "linearizedBaseContracts": [ + 1604 + ], + "name": "Proxy", + "nameLocation": "742:5:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1578, + "nodeType": "Block", + "src": "1009:835:9", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1028:810:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1281:1:9", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1284:1:9", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "1287:12:9" + }, + "nodeType": "YulFunctionCall", + "src": "1287:14:9" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "1268:12:9" + }, + "nodeType": "YulFunctionCall", + "src": "1268:34:9" + }, + "nodeType": "YulExpressionStatement", + "src": "1268:34:9" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1429:74:9", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nodeType": "YulIdentifier", + "src": "1456:3:9" + }, + "nodeType": "YulFunctionCall", + "src": "1456:5:9" + }, + { + "name": "implementation", + "nodeType": "YulIdentifier", + "src": "1463:14:9" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1479:1:9", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "1482:12:9" + }, + "nodeType": "YulFunctionCall", + "src": "1482:14:9" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1498:1:9", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1501:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "delegatecall", + "nodeType": "YulIdentifier", + "src": "1443:12:9" + }, + "nodeType": "YulFunctionCall", + "src": "1443:60:9" + }, + "variables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "1433:6:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1571:1:9", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1574:1:9", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "1577:14:9" + }, + "nodeType": "YulFunctionCall", + "src": "1577:16:9" + } + ], + "functionName": { + "name": "returndatacopy", + "nodeType": "YulIdentifier", + "src": "1556:14:9" + }, + "nodeType": "YulFunctionCall", + "src": "1556:38:9" + }, + "nodeType": "YulExpressionStatement", + "src": "1556:38:9" + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1689:59:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1714:1:9", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "1717:14:9" + }, + "nodeType": "YulFunctionCall", + "src": "1717:16:9" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1707:6:9" + }, + "nodeType": "YulFunctionCall", + "src": "1707:27:9" + }, + "nodeType": "YulExpressionStatement", + "src": "1707:27:9" + } + ] + }, + "nodeType": "YulCase", + "src": "1682:66:9", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1687:1:9", + "type": "", + "value": "0" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1769:59:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1794:1:9", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "1797:14:9" + }, + "nodeType": "YulFunctionCall", + "src": "1797:16:9" + } + ], + "functionName": { + "name": "return", + "nodeType": "YulIdentifier", + "src": "1787:6:9" + }, + "nodeType": "YulFunctionCall", + "src": "1787:27:9" + }, + "nodeType": "YulExpressionStatement", + "src": "1787:27:9" + } + ] + }, + "nodeType": "YulCase", + "src": "1761:67:9", + "value": "default" + } + ], + "expression": { + "name": "result", + "nodeType": "YulIdentifier", + "src": "1615:6:9" + }, + "nodeType": "YulSwitch", + "src": "1608:220:9" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 1574, + "isOffset": false, + "isSlot": false, + "src": "1463:14:9", + "valueSize": 1 + } + ], + "id": 1577, + "nodeType": "InlineAssembly", + "src": "1019:819:9" + } + ] + }, + "documentation": { + "id": 1572, + "nodeType": "StructuredDocumentation", + "src": "754:190:9", + "text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 1579, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_delegate", + "nameLocation": "958:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1575, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1574, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "976:14:9", + "nodeType": "VariableDeclaration", + "scope": 1579, + "src": "968:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1573, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "968:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "967:24:9" + }, + "returnParameters": { + "id": 1576, + "nodeType": "ParameterList", + "parameters": [], + "src": "1009:0:9" + }, + "scope": 1604, + "src": "949:895:9", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 1580, + "nodeType": "StructuredDocumentation", + "src": "1850:173:9", + "text": " @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate." + }, + "id": 1585, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "2037:15:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1581, + "nodeType": "ParameterList", + "parameters": [], + "src": "2052:2:9" + }, + "returnParameters": { + "id": 1584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1583, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1585, + "src": "2086:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2086:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2085:9:9" + }, + "scope": 1604, + "src": "2028:67:9", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1594, + "nodeType": "Block", + "src": "2361:45:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1590, + "name": "_implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "2381:15:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2381:17:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1589, + "name": "_delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "2371:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2371:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1593, + "nodeType": "ExpressionStatement", + "src": "2371:28:9" + } + ] + }, + "documentation": { + "id": 1586, + "nodeType": "StructuredDocumentation", + "src": "2101:217:9", + "text": " @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 1595, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_fallback", + "nameLocation": "2332:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1587, + "nodeType": "ParameterList", + "parameters": [], + "src": "2341:2:9" + }, + "returnParameters": { + "id": 1588, + "nodeType": "ParameterList", + "parameters": [], + "src": "2361:0:9" + }, + "scope": 1604, + "src": "2323:83:9", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1602, + "nodeType": "Block", + "src": "2639:28:9", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1599, + "name": "_fallback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1595, + "src": "2649:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2649:11:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1601, + "nodeType": "ExpressionStatement", + "src": "2649:11:9" + } + ] + }, + "documentation": { + "id": 1596, + "nodeType": "StructuredDocumentation", + "src": "2412:186:9", + "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data." + }, + "id": 1603, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1597, + "nodeType": "ParameterList", + "parameters": [], + "src": "2611:2:9" + }, + "returnParameters": { + "id": 1598, + "nodeType": "ParameterList", + "parameters": [], + "src": "2639:0:9" + }, + "scope": 1604, + "src": "2603:64:9", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + } + ], + "scope": 1605, + "src": "724:1945:9", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "99:2571:9" + }, + "id": 9 + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "exportedSymbols": { + "BeaconProxy": [ + 1662 + ], + "ERC1967Utils": [ + 1568 + ], + "IBeacon": [ + 1672 + ], + "Proxy": [ + 1604 + ] + }, + "id": 1663, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1606, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "112:24:10" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "file": "./IBeacon.sol", + "id": 1608, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1663, + "sourceUnit": 1673, + "src": "138:38:10", + "symbolAliases": [ + { + "foreign": { + "id": 1607, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "146:7:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol", + "file": "../Proxy.sol", + "id": 1610, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1663, + "sourceUnit": 1605, + "src": "177:35:10", + "symbolAliases": [ + { + "foreign": { + "id": 1609, + "name": "Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1604, + "src": "185:5:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "../ERC1967/ERC1967Utils.sol", + "id": 1612, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1663, + "sourceUnit": 1569, + "src": "213:57:10", + "symbolAliases": [ + { + "foreign": { + "id": 1611, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "221:12:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1614, + "name": "Proxy", + "nameLocations": [ + "1140:5:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1604, + "src": "1140:5:10" + }, + "id": 1615, + "nodeType": "InheritanceSpecifier", + "src": "1140:5:10" + } + ], + "canonicalName": "BeaconProxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1613, + "nodeType": "StructuredDocumentation", + "src": "272:843:10", + "text": " @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.\n The beacon address can only be set once during construction, and cannot be changed afterwards. It is stored in an\n immutable variable to avoid unnecessary storage reads, and also in the beacon storage slot specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] so that it can be accessed externally.\n CAUTION: Since the beacon address can never be changed, you must ensure that you either control the beacon, or trust\n the beacon to not upgrade the implementation maliciously.\n IMPORTANT: Do not use the implementation logic to modify the beacon storage slot. Doing so would leave the proxy in\n an inconsistent state where the beacon storage slot does not match the beacon address." + }, + "fullyImplemented": true, + "id": 1662, + "linearizedBaseContracts": [ + 1662, + 1604 + ], + "name": "BeaconProxy", + "nameLocation": "1125:11:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1617, + "mutability": "immutable", + "name": "_beacon", + "nameLocation": "1276:7:10", + "nodeType": "VariableDeclaration", + "scope": 1662, + "src": "1250:33:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1250:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 1636, + "nodeType": "Block", + "src": "1828:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1628, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1620, + "src": "1874:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1629, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1622, + "src": "1882:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1625, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "1838:12:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1568_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1851:22:10", + "memberName": "upgradeBeaconToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 1553, + "src": "1838:35:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1838:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1631, + "nodeType": "ExpressionStatement", + "src": "1838:49:10" + }, + { + "expression": { + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1632, + "name": "_beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1617, + "src": "1897:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1633, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1620, + "src": "1907:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1897:16:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1635, + "nodeType": "ExpressionStatement", + "src": "1897:16:10" + } + ] + }, + "documentation": { + "id": 1618, + "nodeType": "StructuredDocumentation", + "src": "1290:478:10", + "text": " @dev Initializes the proxy with `beacon`.\n If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity\n constructor.\n Requirements:\n - `beacon` must be a contract with the interface {IBeacon}.\n - If `data` is empty, `msg.value` must be zero." + }, + "id": 1637, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1620, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "1793:6:10", + "nodeType": "VariableDeclaration", + "scope": 1637, + "src": "1785:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1785:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1622, + "mutability": "mutable", + "name": "data", + "nameLocation": "1814:4:10", + "nodeType": "VariableDeclaration", + "scope": 1637, + "src": "1801:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1621, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1801:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1784:35:10" + }, + "returnParameters": { + "id": 1624, + "nodeType": "ParameterList", + "parameters": [], + "src": "1828:0:10" + }, + "scope": 1662, + "src": "1773:147:10", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1585 + ], + "body": { + "id": 1651, + "nodeType": "Block", + "src": "2099:62:10", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1645, + "name": "_getBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1661, + "src": "2124:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2124:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1644, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "2116:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$1672_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2116:21:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$1672", + "typeString": "contract IBeacon" + } + }, + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2138:14:10", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 1671, + "src": "2116:36:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2116:38:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1643, + "id": 1650, + "nodeType": "Return", + "src": "2109:45:10" + } + ] + }, + "documentation": { + "id": 1638, + "nodeType": "StructuredDocumentation", + "src": "1926:92:10", + "text": " @dev Returns the current implementation address of the associated beacon." + }, + "id": 1652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "2032:15:10", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1640, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2072:8:10" + }, + "parameters": { + "id": 1639, + "nodeType": "ParameterList", + "parameters": [], + "src": "2047:2:10" + }, + "returnParameters": { + "id": 1643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1642, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1652, + "src": "2090:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1641, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2090:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2089:9:10" + }, + "scope": 1662, + "src": "2023:138:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1660, + "nodeType": "Block", + "src": "2277:31:10", + "statements": [ + { + "expression": { + "id": 1658, + "name": "_beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1617, + "src": "2294:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1657, + "id": 1659, + "nodeType": "Return", + "src": "2287:14:10" + } + ] + }, + "documentation": { + "id": 1653, + "nodeType": "StructuredDocumentation", + "src": "2167:43:10", + "text": " @dev Returns the beacon." + }, + "id": 1661, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getBeacon", + "nameLocation": "2224:10:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1654, + "nodeType": "ParameterList", + "parameters": [], + "src": "2234:2:10" + }, + "returnParameters": { + "id": 1657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1656, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1661, + "src": "2268:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2268:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2267:9:10" + }, + "scope": 1662, + "src": "2215:93:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1663, + "src": "1116:1194:10", + "usedErrors": [ + 1300, + 1310, + 1313, + 1851, + 1854 + ], + "usedEvents": [ + 1291 + ] + } + ], + "src": "112:2199:10" + }, + "id": 10 + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "exportedSymbols": { + "IBeacon": [ + 1672 + ] + }, + "id": 1673, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1664, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:11" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IBeacon", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1665, + "nodeType": "StructuredDocumentation", + "src": "134:79:11", + "text": " @dev This is the interface that {BeaconProxy} expects of its beacon." + }, + "fullyImplemented": false, + "id": 1672, + "linearizedBaseContracts": [ + 1672 + ], + "name": "IBeacon", + "nameLocation": "224:7:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1666, + "nodeType": "StructuredDocumentation", + "src": "238:168:11", + "text": " @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract." + }, + "functionSelector": "5c60da1b", + "id": 1671, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "420:14:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [], + "src": "434:2:11" + }, + "returnParameters": { + "id": 1670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1669, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "460:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "460:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "459:9:11" + }, + "scope": 1672, + "src": "411:58:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1673, + "src": "214:257:11", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "108:364:11" + }, + "id": 11 + }, + "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "exportedSymbols": { + "IBeacon": [ + 1672 + ], + "Ownable": [ + 1265 + ], + "UpgradeableBeacon": [ + 1760 + ] + }, + "id": 1761, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1674, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "118:24:12" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol", + "file": "./IBeacon.sol", + "id": 1676, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1761, + "sourceUnit": 1673, + "src": "144:38:12", + "symbolAliases": [ + { + "foreign": { + "id": 1675, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1672, + "src": "152:7:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", + "file": "../../access/Ownable.sol", + "id": 1678, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1761, + "sourceUnit": 1266, + "src": "183:49:12", + "symbolAliases": [ + { + "foreign": { + "id": 1677, + "name": "Ownable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1265, + "src": "191:7:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1680, + "name": "IBeacon", + "nameLocations": [ + "585:7:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1672, + "src": "585:7:12" + }, + "id": 1681, + "nodeType": "InheritanceSpecifier", + "src": "585:7:12" + }, + { + "baseName": { + "id": 1682, + "name": "Ownable", + "nameLocations": [ + "594:7:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1265, + "src": "594:7:12" + }, + "id": 1683, + "nodeType": "InheritanceSpecifier", + "src": "594:7:12" + } + ], + "canonicalName": "UpgradeableBeacon", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1679, + "nodeType": "StructuredDocumentation", + "src": "234:320:12", + "text": " @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n implementation contract, which is where they will delegate all function calls.\n An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon." + }, + "fullyImplemented": true, + "id": 1760, + "linearizedBaseContracts": [ + 1760, + 1265, + 2121, + 1672 + ], + "name": "UpgradeableBeacon", + "nameLocation": "564:17:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1685, + "mutability": "mutable", + "name": "_implementation", + "nameLocation": "624:15:12", + "nodeType": "VariableDeclaration", + "scope": 1760, + "src": "608:31:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "608:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "documentation": { + "id": 1686, + "nodeType": "StructuredDocumentation", + "src": "646:70:12", + "text": " @dev The `implementation` of the beacon is invalid." + }, + "errorSelector": "847ac564", + "id": 1690, + "name": "BeaconInvalidImplementation", + "nameLocation": "727:27:12", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1688, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "763:14:12", + "nodeType": "VariableDeclaration", + "scope": 1690, + "src": "755:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "755:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "754:24:12" + }, + "src": "721:58:12" + }, + { + "anonymous": false, + "documentation": { + "id": 1691, + "nodeType": "StructuredDocumentation", + "src": "785:90:12", + "text": " @dev Emitted when the implementation returned by the beacon is changed." + }, + "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "id": 1695, + "name": "Upgraded", + "nameLocation": "886:8:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 1694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1693, + "indexed": true, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "911:14:12", + "nodeType": "VariableDeclaration", + "scope": 1695, + "src": "895:30:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "895:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "894:32:12" + }, + "src": "880:47:12" + }, + { + "body": { + "id": 1710, + "nodeType": "Block", + "src": "1140:52:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1707, + "name": "implementation_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1698, + "src": "1169:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1706, + "name": "_setImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "1150:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1150:35:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1709, + "nodeType": "ExpressionStatement", + "src": "1150:35:12" + } + ] + }, + "documentation": { + "id": 1696, + "nodeType": "StructuredDocumentation", + "src": "933:121:12", + "text": " @dev Sets the address of the initial implementation, and the initial owner who can upgrade the beacon." + }, + "id": 1711, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 1703, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1700, + "src": "1126:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 1704, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 1702, + "name": "Ownable", + "nameLocations": [ + "1118:7:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1265, + "src": "1118:7:12" + }, + "nodeType": "ModifierInvocation", + "src": "1118:21:12" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1698, + "mutability": "mutable", + "name": "implementation_", + "nameLocation": "1079:15:12", + "nodeType": "VariableDeclaration", + "scope": 1711, + "src": "1071:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1071:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1700, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "1104:12:12", + "nodeType": "VariableDeclaration", + "scope": 1711, + "src": "1096:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1096:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1070:47:12" + }, + "returnParameters": { + "id": 1705, + "nodeType": "ParameterList", + "parameters": [], + "src": "1140:0:12" + }, + "scope": 1760, + "src": "1059:133:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1671 + ], + "body": { + "id": 1719, + "nodeType": "Block", + "src": "1334:39:12", + "statements": [ + { + "expression": { + "id": 1717, + "name": "_implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "1351:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1716, + "id": 1718, + "nodeType": "Return", + "src": "1344:22:12" + } + ] + }, + "documentation": { + "id": 1712, + "nodeType": "StructuredDocumentation", + "src": "1198:67:12", + "text": " @dev Returns the current implementation address." + }, + "functionSelector": "5c60da1b", + "id": 1720, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "1279:14:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1713, + "nodeType": "ParameterList", + "parameters": [], + "src": "1293:2:12" + }, + "returnParameters": { + "id": 1716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1715, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1720, + "src": "1325:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1325:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1324:9:12" + }, + "scope": 1760, + "src": "1270:103:12", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1732, + "nodeType": "Block", + "src": "1703:54:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1729, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1723, + "src": "1732:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1728, + "name": "_setImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "1713:18:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1713:37:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1731, + "nodeType": "ExpressionStatement", + "src": "1713:37:12" + } + ] + }, + "documentation": { + "id": 1721, + "nodeType": "StructuredDocumentation", + "src": "1379:248:12", + "text": " @dev Upgrades the beacon to a new implementation.\n Emits an {Upgraded} event.\n Requirements:\n - msg.sender must be the owner of the contract.\n - `newImplementation` must be a contract." + }, + "functionSelector": "3659cfe6", + "id": 1733, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1726, + "kind": "modifierInvocation", + "modifierName": { + "id": 1725, + "name": "onlyOwner", + "nameLocations": [ + "1693:9:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1176, + "src": "1693:9:12" + }, + "nodeType": "ModifierInvocation", + "src": "1693:9:12" + } + ], + "name": "upgradeTo", + "nameLocation": "1641:9:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1723, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "1659:17:12", + "nodeType": "VariableDeclaration", + "scope": 1733, + "src": "1651:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1651:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1650:27:12" + }, + "returnParameters": { + "id": 1727, + "nodeType": "ParameterList", + "parameters": [], + "src": "1703:0:12" + }, + "scope": 1760, + "src": "1632:125:12", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1758, + "nodeType": "Block", + "src": "1995:221:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1739, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1736, + "src": "2009:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2027:4:12", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "2009:22:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2032:6:12", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2009:29:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2042:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2009:34:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1749, + "nodeType": "IfStatement", + "src": "2005:118:12", + "trueBody": { + "id": 1748, + "nodeType": "Block", + "src": "2045:78:12", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1745, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1736, + "src": "2094:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1744, + "name": "BeaconInvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "2066:27:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2066:46:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1747, + "nodeType": "RevertStatement", + "src": "2059:53:12" + } + ] + } + }, + { + "expression": { + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1750, + "name": "_implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2132:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1751, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1736, + "src": "2150:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2132:35:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1753, + "nodeType": "ExpressionStatement", + "src": "2132:35:12" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1755, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1736, + "src": "2191:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1754, + "name": "Upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1695, + "src": "2182:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2182:27:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1757, + "nodeType": "EmitStatement", + "src": "2177:32:12" + } + ] + }, + "documentation": { + "id": 1734, + "nodeType": "StructuredDocumentation", + "src": "1763:164:12", + "text": " @dev Sets the implementation contract address for this beacon\n Requirements:\n - `newImplementation` must be a contract." + }, + "id": 1759, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setImplementation", + "nameLocation": "1941:18:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1736, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "1968:17:12", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "1960:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1735, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1960:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1959:27:12" + }, + "returnParameters": { + "id": 1738, + "nodeType": "ParameterList", + "parameters": [], + "src": "1995:0:12" + }, + "scope": 1760, + "src": "1932:284:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1761, + "src": "555:1663:12", + "usedErrors": [ + 1131, + 1136, + 1690 + ], + "usedEvents": [ + 1142, + 1695 + ] + } + ], + "src": "118:2101:12" + }, + "id": 12 + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1838 + ] + }, + "id": 1839, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1762, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:13" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1763, + "nodeType": "StructuredDocumentation", + "src": "132:71:13", + "text": " @dev Interface of the ERC-20 standard as defined in the ERC." + }, + "fullyImplemented": false, + "id": 1838, + "linearizedBaseContracts": [ + 1838 + ], + "name": "IERC20", + "nameLocation": "214:6:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 1764, + "nodeType": "StructuredDocumentation", + "src": "227:158:13", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 1772, + "name": "Transfer", + "nameLocation": "396:8:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 1771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1766, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "421:4:13", + "nodeType": "VariableDeclaration", + "scope": 1772, + "src": "405:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1765, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "405:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1768, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "443:2:13", + "nodeType": "VariableDeclaration", + "scope": 1772, + "src": "427:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "427:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1770, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "455:5:13", + "nodeType": "VariableDeclaration", + "scope": 1772, + "src": "447:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "447:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "404:57:13" + }, + "src": "390:72:13" + }, + { + "anonymous": false, + "documentation": { + "id": 1773, + "nodeType": "StructuredDocumentation", + "src": "468:148:13", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 1781, + "name": "Approval", + "nameLocation": "627:8:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 1780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1775, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "652:5:13", + "nodeType": "VariableDeclaration", + "scope": 1781, + "src": "636:21:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1774, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "636:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1777, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "675:7:13", + "nodeType": "VariableDeclaration", + "scope": 1781, + "src": "659:23:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "659:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1779, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "692:5:13", + "nodeType": "VariableDeclaration", + "scope": 1781, + "src": "684:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1778, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "684:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "635:63:13" + }, + "src": "621:78:13" + }, + { + "documentation": { + "id": 1782, + "nodeType": "StructuredDocumentation", + "src": "705:65:13", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 1787, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "784:11:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1783, + "nodeType": "ParameterList", + "parameters": [], + "src": "795:2:13" + }, + "returnParameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1785, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1787, + "src": "821:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "821:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "820:9:13" + }, + "scope": 1838, + "src": "775:55:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1788, + "nodeType": "StructuredDocumentation", + "src": "836:71:13", + "text": " @dev Returns the value of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 1795, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "921:9:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1790, + "mutability": "mutable", + "name": "account", + "nameLocation": "939:7:13", + "nodeType": "VariableDeclaration", + "scope": 1795, + "src": "931:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1789, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "931:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "930:17:13" + }, + "returnParameters": { + "id": 1794, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1793, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1795, + "src": "971:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1792, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "970:9:13" + }, + "scope": 1838, + "src": "912:68:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1796, + "nodeType": "StructuredDocumentation", + "src": "986:213:13", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 1805, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1213:8:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1798, + "mutability": "mutable", + "name": "to", + "nameLocation": "1230:2:13", + "nodeType": "VariableDeclaration", + "scope": 1805, + "src": "1222:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1797, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1222:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1800, + "mutability": "mutable", + "name": "value", + "nameLocation": "1242:5:13", + "nodeType": "VariableDeclaration", + "scope": 1805, + "src": "1234:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1799, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1234:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1221:27:13" + }, + "returnParameters": { + "id": 1804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1803, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1805, + "src": "1267:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1802, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1267:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1266:6:13" + }, + "scope": 1838, + "src": "1204:69:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1806, + "nodeType": "StructuredDocumentation", + "src": "1279:264:13", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 1815, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1557:9:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1808, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1575:5:13", + "nodeType": "VariableDeclaration", + "scope": 1815, + "src": "1567:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1807, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1567:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1810, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1590:7:13", + "nodeType": "VariableDeclaration", + "scope": 1815, + "src": "1582:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1809, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1582:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1566:32:13" + }, + "returnParameters": { + "id": 1814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1813, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1815, + "src": "1622:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1622:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1621:9:13" + }, + "scope": 1838, + "src": "1548:83:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1816, + "nodeType": "StructuredDocumentation", + "src": "1637:667:13", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 1825, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2318:7:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1818, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2334:7:13", + "nodeType": "VariableDeclaration", + "scope": 1825, + "src": "2326:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2326:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1820, + "mutability": "mutable", + "name": "value", + "nameLocation": "2351:5:13", + "nodeType": "VariableDeclaration", + "scope": 1825, + "src": "2343:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2343:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2325:32:13" + }, + "returnParameters": { + "id": 1824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1823, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1825, + "src": "2376:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1822, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2376:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2375:6:13" + }, + "scope": 1838, + "src": "2309:73:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 1826, + "nodeType": "StructuredDocumentation", + "src": "2388:297:13", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 1837, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2699:12:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1828, + "mutability": "mutable", + "name": "from", + "nameLocation": "2720:4:13", + "nodeType": "VariableDeclaration", + "scope": 1837, + "src": "2712:12:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1827, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2712:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1830, + "mutability": "mutable", + "name": "to", + "nameLocation": "2734:2:13", + "nodeType": "VariableDeclaration", + "scope": 1837, + "src": "2726:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2726:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1832, + "mutability": "mutable", + "name": "value", + "nameLocation": "2746:5:13", + "nodeType": "VariableDeclaration", + "scope": 1837, + "src": "2738:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2738:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2711:41:13" + }, + "returnParameters": { + "id": 1836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1835, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1837, + "src": "2771:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1834, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2771:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2770:6:13" + }, + "scope": 1838, + "src": "2690:87:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1839, + "src": "204:2575:13", + "usedErrors": [], + "usedEvents": [ + 1772, + 1781 + ] + } + ], + "src": "106:2674:13" + }, + "id": 13 + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 2091 + ] + }, + "id": 2092, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1840, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:14" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Address", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1841, + "nodeType": "StructuredDocumentation", + "src": "127:67:14", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 2091, + "linearizedBaseContracts": [ + 2091 + ], + "name": "Address", + "nameLocation": "203:7:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1842, + "nodeType": "StructuredDocumentation", + "src": "217:94:14", + "text": " @dev The ETH balance of the account is not enough to perform the operation." + }, + "errorSelector": "cd786059", + "id": 1846, + "name": "AddressInsufficientBalance", + "nameLocation": "322:26:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1845, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1844, + "mutability": "mutable", + "name": "account", + "nameLocation": "357:7:14", + "nodeType": "VariableDeclaration", + "scope": 1846, + "src": "349:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1843, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "349:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "348:17:14" + }, + "src": "316:50:14" + }, + { + "documentation": { + "id": 1847, + "nodeType": "StructuredDocumentation", + "src": "372:75:14", + "text": " @dev There's no code at `target` (it is not a contract)." + }, + "errorSelector": "9996b315", + "id": 1851, + "name": "AddressEmptyCode", + "nameLocation": "458:16:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1849, + "mutability": "mutable", + "name": "target", + "nameLocation": "483:6:14", + "nodeType": "VariableDeclaration", + "scope": 1851, + "src": "475:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1848, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "475:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "474:16:14" + }, + "src": "452:39:14" + }, + { + "documentation": { + "id": 1852, + "nodeType": "StructuredDocumentation", + "src": "497:89:14", + "text": " @dev A call to an address target failed. The target may have reverted." + }, + "errorSelector": "1425ea42", + "id": 1854, + "name": "FailedInnerCall", + "nameLocation": "597:15:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1853, + "nodeType": "ParameterList", + "parameters": [], + "src": "612:2:14" + }, + "src": "591:24:14" + }, + { + "body": { + "id": 1894, + "nodeType": "Block", + "src": "1602:260:14", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1864, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "1624:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + ], + "id": 1863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1616:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1616:7:14", + "typeDescriptions": {} + } + }, + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1616:13:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1630:7:14", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1616:21:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1867, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1859, + "src": "1640:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1616:30:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1877, + "nodeType": "IfStatement", + "src": "1612:109:14", + "trueBody": { + "id": 1876, + "nodeType": "Block", + "src": "1648:73:14", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 1872, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "1704:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + ], + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1696:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1870, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1696:7:14", + "typeDescriptions": {} + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1696:13:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1869, + "name": "AddressInsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1846, + "src": "1669:26:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1669:41:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1875, + "nodeType": "RevertStatement", + "src": "1662:48:14" + } + ] + } + }, + { + "assignments": [ + 1879, + null + ], + "declarations": [ + { + "constant": false, + "id": 1879, + "mutability": "mutable", + "name": "success", + "nameLocation": "1737:7:14", + "nodeType": "VariableDeclaration", + "scope": 1894, + "src": "1732:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1878, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1732:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 1886, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1780:2:14", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "id": 1880, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1857, + "src": "1750:9:14", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1760:4:14", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "1750:14:14", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 1882, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1859, + "src": "1772:6:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "1750:29:14", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1750:33:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1731:52:14" + }, + { + "condition": { + "id": 1888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1797:8:14", + "subExpression": { + "id": 1887, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "1798:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1893, + "nodeType": "IfStatement", + "src": "1793:63:14", + "trueBody": { + "id": 1892, + "nodeType": "Block", + "src": "1807:49:14", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1889, + "name": "FailedInnerCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1854, + "src": "1828:15:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1828:17:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1891, + "nodeType": "RevertStatement", + "src": "1821:24:14" + } + ] + } + } + ] + }, + "documentation": { + "id": 1855, + "nodeType": "StructuredDocumentation", + "src": "621:905:14", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 1895, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nameLocation": "1540:9:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1857, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1566:9:14", + "nodeType": "VariableDeclaration", + "scope": 1895, + "src": "1550:25:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1550:15:14", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1859, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1585:6:14", + "nodeType": "VariableDeclaration", + "scope": 1895, + "src": "1577:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1858, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1577:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1549:43:14" + }, + "returnParameters": { + "id": 1861, + "nodeType": "ParameterList", + "parameters": [], + "src": "1602:0:14" + }, + "scope": 2091, + "src": "1531:331:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1911, + "nodeType": "Block", + "src": "2794:62:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1906, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "2833:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1907, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1900, + "src": "2841:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 1908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2847:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1905, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1958, + "src": "2811:21:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256) returns (bytes memory)" + } + }, + "id": 1909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2811:38:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1904, + "id": 1910, + "nodeType": "Return", + "src": "2804:45:14" + } + ] + }, + "documentation": { + "id": 1896, + "nodeType": "StructuredDocumentation", + "src": "1868:832:14", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert." + }, + "id": 1912, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "2714:12:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1898, + "mutability": "mutable", + "name": "target", + "nameLocation": "2735:6:14", + "nodeType": "VariableDeclaration", + "scope": 1912, + "src": "2727:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2727:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1900, + "mutability": "mutable", + "name": "data", + "nameLocation": "2756:4:14", + "nodeType": "VariableDeclaration", + "scope": 1912, + "src": "2743:17:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1899, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2743:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2726:35:14" + }, + "returnParameters": { + "id": 1904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1903, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1912, + "src": "2780:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1902, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2780:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2779:14:14" + }, + "scope": 2091, + "src": "2705:151:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1957, + "nodeType": "Block", + "src": "3293:279:14", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1926, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "3315:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + ], + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3307:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3307:7:14", + "typeDescriptions": {} + } + }, + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3307:13:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3321:7:14", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "3307:21:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1929, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1919, + "src": "3331:5:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3307:29:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1939, + "nodeType": "IfStatement", + "src": "3303:108:14", + "trueBody": { + "id": 1938, + "nodeType": "Block", + "src": "3338:73:14", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 1934, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "3394:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$2091", + "typeString": "library Address" + } + ], + "id": 1933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3386:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1932, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3386:7:14", + "typeDescriptions": {} + } + }, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3386:13:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1931, + "name": "AddressInsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1846, + "src": "3359:26:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3359:41:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1937, + "nodeType": "RevertStatement", + "src": "3352:48:14" + } + ] + } + }, + { + "assignments": [ + 1941, + 1943 + ], + "declarations": [ + { + "constant": false, + "id": 1941, + "mutability": "mutable", + "name": "success", + "nameLocation": "3426:7:14", + "nodeType": "VariableDeclaration", + "scope": 1957, + "src": "3421:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1940, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3421:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1943, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3448:10:14", + "nodeType": "VariableDeclaration", + "scope": 1957, + "src": "3435:23:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1942, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3435:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1950, + "initialValue": { + "arguments": [ + { + "id": 1948, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1917, + "src": "3488:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1944, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1915, + "src": "3462:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3469:4:14", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "3462:11:14", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 1946, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1919, + "src": "3481:5:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "3462:25:14", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3462:31:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3420:73:14" + }, + { + "expression": { + "arguments": [ + { + "id": 1952, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1915, + "src": "3537:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1953, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1941, + "src": "3545:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1954, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "3554:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1951, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2050, + "src": "3510:26:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 1955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3510:55:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1923, + "id": 1956, + "nodeType": "Return", + "src": "3503:62:14" + } + ] + }, + "documentation": { + "id": 1913, + "nodeType": "StructuredDocumentation", + "src": "2862:313:14", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`." + }, + "id": 1958, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "3189:21:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1915, + "mutability": "mutable", + "name": "target", + "nameLocation": "3219:6:14", + "nodeType": "VariableDeclaration", + "scope": 1958, + "src": "3211:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1914, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3211:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1917, + "mutability": "mutable", + "name": "data", + "nameLocation": "3240:4:14", + "nodeType": "VariableDeclaration", + "scope": 1958, + "src": "3227:17:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1916, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3227:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1919, + "mutability": "mutable", + "name": "value", + "nameLocation": "3254:5:14", + "nodeType": "VariableDeclaration", + "scope": 1958, + "src": "3246:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3246:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3210:50:14" + }, + "returnParameters": { + "id": 1923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1922, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1958, + "src": "3279:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1921, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3279:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3278:14:14" + }, + "scope": 2091, + "src": "3180:392:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1983, + "nodeType": "Block", + "src": "3811:154:14", + "statements": [ + { + "assignments": [ + 1969, + 1971 + ], + "declarations": [ + { + "constant": false, + "id": 1969, + "mutability": "mutable", + "name": "success", + "nameLocation": "3827:7:14", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "3822:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1968, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3822:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1971, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3849:10:14", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "3836:23:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1970, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3836:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1976, + "initialValue": { + "arguments": [ + { + "id": 1974, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "3881:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1972, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "3863:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3870:10:14", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "3863:17:14", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3863:23:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3821:65:14" + }, + { + "expression": { + "arguments": [ + { + "id": 1978, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1961, + "src": "3930:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1979, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "3938:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1980, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "3947:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1977, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2050, + "src": "3903:26:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3903:55:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1967, + "id": 1982, + "nodeType": "Return", + "src": "3896:62:14" + } + ] + }, + "documentation": { + "id": 1959, + "nodeType": "StructuredDocumentation", + "src": "3578:128:14", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call." + }, + "id": 1984, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "3720:18:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1961, + "mutability": "mutable", + "name": "target", + "nameLocation": "3747:6:14", + "nodeType": "VariableDeclaration", + "scope": 1984, + "src": "3739:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3739:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1963, + "mutability": "mutable", + "name": "data", + "nameLocation": "3768:4:14", + "nodeType": "VariableDeclaration", + "scope": 1984, + "src": "3755:17:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1962, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3755:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3738:35:14" + }, + "returnParameters": { + "id": 1967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1966, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1984, + "src": "3797:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1965, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3797:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3796:14:14" + }, + "scope": 2091, + "src": "3711:254:14", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2009, + "nodeType": "Block", + "src": "4203:156:14", + "statements": [ + { + "assignments": [ + 1995, + 1997 + ], + "declarations": [ + { + "constant": false, + "id": 1995, + "mutability": "mutable", + "name": "success", + "nameLocation": "4219:7:14", + "nodeType": "VariableDeclaration", + "scope": 2009, + "src": "4214:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1994, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4214:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1997, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4241:10:14", + "nodeType": "VariableDeclaration", + "scope": 2009, + "src": "4228:23:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1996, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4228:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2002, + "initialValue": { + "arguments": [ + { + "id": 2000, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1989, + "src": "4275:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1998, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "4255:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4262:12:14", + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "src": "4255:19:14", + "typeDescriptions": { + "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) returns (bool,bytes memory)" + } + }, + "id": 2001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4255:25:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4213:67:14" + }, + { + "expression": { + "arguments": [ + { + "id": 2004, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "4324:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2005, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1995, + "src": "4332:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 2006, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1997, + "src": "4341:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2003, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2050, + "src": "4297:26:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4297:55:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1993, + "id": 2008, + "nodeType": "Return", + "src": "4290:62:14" + } + ] + }, + "documentation": { + "id": 1985, + "nodeType": "StructuredDocumentation", + "src": "3971:130:14", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call." + }, + "id": 2010, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "4115:20:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1987, + "mutability": "mutable", + "name": "target", + "nameLocation": "4144:6:14", + "nodeType": "VariableDeclaration", + "scope": 2010, + "src": "4136:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4136:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1989, + "mutability": "mutable", + "name": "data", + "nameLocation": "4165:4:14", + "nodeType": "VariableDeclaration", + "scope": 2010, + "src": "4152:17:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1988, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4152:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4135:35:14" + }, + "returnParameters": { + "id": 1993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1992, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2010, + "src": "4189:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1991, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4189:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4188:14:14" + }, + "scope": 2091, + "src": "4106:253:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2049, + "nodeType": "Block", + "src": "4783:424:14", + "statements": [ + { + "condition": { + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4797:8:14", + "subExpression": { + "id": 2022, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2015, + "src": "4798:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2047, + "nodeType": "Block", + "src": "4857:344:14", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2029, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2017, + "src": "5045:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5056:6:14", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5045:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5066:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5045:22:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2033, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2013, + "src": "5071:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5078:4:14", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5071:11:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5083:6:14", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5071:18:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5093:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5071:23:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5045:49:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2044, + "nodeType": "IfStatement", + "src": "5041:119:14", + "trueBody": { + "id": 2043, + "nodeType": "Block", + "src": "5096:64:14", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2040, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2013, + "src": "5138:6:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2039, + "name": "AddressEmptyCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1851, + "src": "5121:16:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5121:24:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2042, + "nodeType": "RevertStatement", + "src": "5114:31:14" + } + ] + } + }, + { + "expression": { + "id": 2045, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2017, + "src": "5180:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2021, + "id": 2046, + "nodeType": "Return", + "src": "5173:17:14" + } + ] + }, + "id": 2048, + "nodeType": "IfStatement", + "src": "4793:408:14", + "trueBody": { + "id": 2028, + "nodeType": "Block", + "src": "4807:44:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2025, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2017, + "src": "4829:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2024, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "4821:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4821:19:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2027, + "nodeType": "ExpressionStatement", + "src": "4821:19:14" + } + ] + } + } + ] + }, + "documentation": { + "id": 2011, + "nodeType": "StructuredDocumentation", + "src": "4365:255:14", + "text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call." + }, + "id": 2050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResultFromTarget", + "nameLocation": "4634:26:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2013, + "mutability": "mutable", + "name": "target", + "nameLocation": "4678:6:14", + "nodeType": "VariableDeclaration", + "scope": 2050, + "src": "4670:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2012, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4670:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2015, + "mutability": "mutable", + "name": "success", + "nameLocation": "4699:7:14", + "nodeType": "VariableDeclaration", + "scope": 2050, + "src": "4694:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2014, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4694:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2017, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4729:10:14", + "nodeType": "VariableDeclaration", + "scope": 2050, + "src": "4716:23:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2016, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4716:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4660:85:14" + }, + "returnParameters": { + "id": 2021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2020, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2050, + "src": "4769:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2019, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4769:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4768:14:14" + }, + "scope": 2091, + "src": "4625:582:14", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2071, + "nodeType": "Block", + "src": "5509:122:14", + "statements": [ + { + "condition": { + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5523:8:14", + "subExpression": { + "id": 2060, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2053, + "src": "5524:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2069, + "nodeType": "Block", + "src": "5583:42:14", + "statements": [ + { + "expression": { + "id": 2067, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2055, + "src": "5604:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 2059, + "id": 2068, + "nodeType": "Return", + "src": "5597:17:14" + } + ] + }, + "id": 2070, + "nodeType": "IfStatement", + "src": "5519:106:14", + "trueBody": { + "id": 2066, + "nodeType": "Block", + "src": "5533:44:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2063, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2055, + "src": "5555:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2062, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2090, + "src": "5547:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 2064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5547:19:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2065, + "nodeType": "ExpressionStatement", + "src": "5547:19:14" + } + ] + } + } + ] + }, + "documentation": { + "id": 2051, + "nodeType": "StructuredDocumentation", + "src": "5213:189:14", + "text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error." + }, + "id": 2072, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResult", + "nameLocation": "5416:16:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2053, + "mutability": "mutable", + "name": "success", + "nameLocation": "5438:7:14", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "5433:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2052, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5433:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2055, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5460:10:14", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "5447:23:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2054, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5447:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5432:39:14" + }, + "returnParameters": { + "id": 2059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2058, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "5495:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2057, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5495:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5494:14:14" + }, + "scope": 2091, + "src": "5407:224:14", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2089, + "nodeType": "Block", + "src": "5798:461:14", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2078, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "5874:10:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5885:6:14", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5874:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5894:1:14", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5874:21:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2087, + "nodeType": "Block", + "src": "6204:49:14", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2084, + "name": "FailedInnerCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1854, + "src": "6225:15:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6225:17:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2086, + "nodeType": "RevertStatement", + "src": "6218:24:14" + } + ] + }, + "id": 2088, + "nodeType": "IfStatement", + "src": "5870:383:14", + "trueBody": { + "id": 2083, + "nodeType": "Block", + "src": "5897:301:14", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6055:133:14", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6073:40:14", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "6102:10:14" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6096:5:14" + }, + "nodeType": "YulFunctionCall", + "src": "6096:17:14" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "6077:15:14", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6141:2:14", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "6145:10:14" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6137:3:14" + }, + "nodeType": "YulFunctionCall", + "src": "6137:19:14" + }, + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "6158:15:14" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6130:6:14" + }, + "nodeType": "YulFunctionCall", + "src": "6130:44:14" + }, + "nodeType": "YulExpressionStatement", + "src": "6130:44:14" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2075, + "isOffset": false, + "isSlot": false, + "src": "6102:10:14", + "valueSize": 1 + }, + { + "declaration": 2075, + "isOffset": false, + "isSlot": false, + "src": "6145:10:14", + "valueSize": 1 + } + ], + "id": 2082, + "nodeType": "InlineAssembly", + "src": "6046:142:14" + } + ] + } + } + ] + }, + "documentation": { + "id": 2073, + "nodeType": "StructuredDocumentation", + "src": "5637:101:14", + "text": " @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}." + }, + "id": 2090, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revert", + "nameLocation": "5752:7:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2075, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5773:10:14", + "nodeType": "VariableDeclaration", + "scope": 2090, + "src": "5760:23:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2074, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5760:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5759:25:14" + }, + "returnParameters": { + "id": 2077, + "nodeType": "ParameterList", + "parameters": [], + "src": "5798:0:14" + }, + "scope": 2091, + "src": "5743:516:14", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2092, + "src": "195:6066:14", + "usedErrors": [ + 1846, + 1851, + 1854 + ], + "usedEvents": [] + } + ], + "src": "101:6161:14" + }, + "id": 14 + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 2121 + ] + }, + "id": 2122, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2093, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:15" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2094, + "nodeType": "StructuredDocumentation", + "src": "127:496:15", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 2121, + "linearizedBaseContracts": [ + 2121 + ], + "name": "Context", + "nameLocation": "642:7:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2102, + "nodeType": "Block", + "src": "718:34:15", + "statements": [ + { + "expression": { + "expression": { + "id": 2099, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "735:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:15", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2098, + "id": 2101, + "nodeType": "Return", + "src": "728:17:15" + } + ] + }, + "id": 2103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2095, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:15" + }, + "returnParameters": { + "id": 2098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2097, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2103, + "src": "709:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:15" + }, + "scope": 2121, + "src": "656:96:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2111, + "nodeType": "Block", + "src": "825:32:15", + "statements": [ + { + "expression": { + "expression": { + "id": 2108, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "842:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:15", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 2107, + "id": 2110, + "nodeType": "Return", + "src": "835:15:15" + } + ] + }, + "id": 2112, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2104, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:15" + }, + "returnParameters": { + "id": 2107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2106, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2112, + "src": "809:14:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2105, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:15" + }, + "scope": 2121, + "src": "758:99:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2119, + "nodeType": "Block", + "src": "935:25:15", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2116, + "id": 2118, + "nodeType": "Return", + "src": "945:8:15" + } + ] + }, + "id": 2120, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2113, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:15" + }, + "returnParameters": { + "id": 2116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2115, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2120, + "src": "926:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:15" + }, + "scope": 2121, + "src": "863:97:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2122, + "src": "624:338:15", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:15" + }, + "id": 15 + }, + "lib/openzeppelin-contracts/contracts/utils/Create2.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "exportedSymbols": { + "Create2": [ + 2224 + ] + }, + "id": 2225, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2123, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:16" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Create2", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2124, + "nodeType": "StructuredDocumentation", + "src": "127:367:16", + "text": " @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n `CREATE2` can be used to compute in advance the address where a smart\n contract will be deployed, which allows for interesting new mechanisms known\n as 'counterfactual interactions'.\n See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n information." + }, + "fullyImplemented": true, + "id": 2224, + "linearizedBaseContracts": [ + 2224 + ], + "name": "Create2", + "nameLocation": "503:7:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2125, + "nodeType": "StructuredDocumentation", + "src": "517:75:16", + "text": " @dev Not enough balance for performing a CREATE2 deploy." + }, + "errorSelector": "e4bbecac", + "id": 2131, + "name": "Create2InsufficientBalance", + "nameLocation": "603:26:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2127, + "mutability": "mutable", + "name": "balance", + "nameLocation": "638:7:16", + "nodeType": "VariableDeclaration", + "scope": 2131, + "src": "630:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "630:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2129, + "mutability": "mutable", + "name": "needed", + "nameLocation": "655:6:16", + "nodeType": "VariableDeclaration", + "scope": 2131, + "src": "647:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "647:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "629:33:16" + }, + "src": "597:66:16" + }, + { + "documentation": { + "id": 2132, + "nodeType": "StructuredDocumentation", + "src": "669:50:16", + "text": " @dev There's no code to deploy." + }, + "errorSelector": "4ca249dc", + "id": 2134, + "name": "Create2EmptyBytecode", + "nameLocation": "730:20:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2133, + "nodeType": "ParameterList", + "parameters": [], + "src": "750:2:16" + }, + "src": "724:29:16" + }, + { + "documentation": { + "id": 2135, + "nodeType": "StructuredDocumentation", + "src": "759:46:16", + "text": " @dev The deployment failed." + }, + "errorSelector": "741752c2", + "id": 2137, + "name": "Create2FailedDeployment", + "nameLocation": "816:23:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2136, + "nodeType": "ParameterList", + "parameters": [], + "src": "839:2:16" + }, + "src": "810:32:16" + }, + { + "body": { + "id": 2188, + "nodeType": "Block", + "src": "1514:472:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2151, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "1536:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Create2_$2224", + "typeString": "library Create2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Create2_$2224", + "typeString": "library Create2" + } + ], + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1528:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1528:7:16", + "typeDescriptions": {} + } + }, + "id": 2152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1528:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1542:7:16", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1528:21:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2154, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2140, + "src": "1552:6:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1528:30:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2166, + "nodeType": "IfStatement", + "src": "1524:125:16", + "trueBody": { + "id": 2165, + "nodeType": "Block", + "src": "1560:89:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 2159, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "1616:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Create2_$2224", + "typeString": "library Create2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Create2_$2224", + "typeString": "library Create2" + } + ], + "id": 2158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1608:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1608:7:16", + "typeDescriptions": {} + } + }, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1608:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1622:7:16", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1608:21:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2162, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2140, + "src": "1631:6:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2156, + "name": "Create2InsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "1581:26:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1581:57:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2164, + "nodeType": "RevertStatement", + "src": "1574:64:16" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2167, + "name": "bytecode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2144, + "src": "1662:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1671:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1662:15:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1681:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1662:20:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2175, + "nodeType": "IfStatement", + "src": "1658:80:16", + "trueBody": { + "id": 2174, + "nodeType": "Block", + "src": "1684:54:16", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2171, + "name": "Create2EmptyBytecode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2134, + "src": "1705:20:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1705:22:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2173, + "nodeType": "RevertStatement", + "src": "1698:29:16" + } + ] + } + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1799:91:16", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1813:67:16", + "value": { + "arguments": [ + { + "name": "amount", + "nodeType": "YulIdentifier", + "src": "1829:6:16" + }, + { + "arguments": [ + { + "name": "bytecode", + "nodeType": "YulIdentifier", + "src": "1841:8:16" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1851:4:16", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1837:3:16" + }, + "nodeType": "YulFunctionCall", + "src": "1837:19:16" + }, + { + "arguments": [ + { + "name": "bytecode", + "nodeType": "YulIdentifier", + "src": "1864:8:16" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1858:5:16" + }, + "nodeType": "YulFunctionCall", + "src": "1858:15:16" + }, + { + "name": "salt", + "nodeType": "YulIdentifier", + "src": "1875:4:16" + } + ], + "functionName": { + "name": "create2", + "nodeType": "YulIdentifier", + "src": "1821:7:16" + }, + "nodeType": "YulFunctionCall", + "src": "1821:59:16" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "1813:4:16" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2147, + "isOffset": false, + "isSlot": false, + "src": "1813:4:16", + "valueSize": 1 + }, + { + "declaration": 2140, + "isOffset": false, + "isSlot": false, + "src": "1829:6:16", + "valueSize": 1 + }, + { + "declaration": 2144, + "isOffset": false, + "isSlot": false, + "src": "1841:8:16", + "valueSize": 1 + }, + { + "declaration": 2144, + "isOffset": false, + "isSlot": false, + "src": "1864:8:16", + "valueSize": 1 + }, + { + "declaration": 2142, + "isOffset": false, + "isSlot": false, + "src": "1875:4:16", + "valueSize": 1 + } + ], + "id": 2176, + "nodeType": "InlineAssembly", + "src": "1790:100:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2177, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2147, + "src": "1903:4:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1919:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1911:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1911:7:16", + "typeDescriptions": {} + } + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1911:10:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1903:18:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2187, + "nodeType": "IfStatement", + "src": "1899:81:16", + "trueBody": { + "id": 2186, + "nodeType": "Block", + "src": "1923:57:16", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2183, + "name": "Create2FailedDeployment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2137, + "src": "1944:23:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1944:25:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2185, + "nodeType": "RevertStatement", + "src": "1937:32:16" + } + ] + } + } + ] + }, + "documentation": { + "id": 2138, + "nodeType": "StructuredDocumentation", + "src": "848:560:16", + "text": " @dev Deploys a contract using `CREATE2`. The address where the contract\n will be deployed can be known in advance via {computeAddress}.\n The bytecode for a contract can be obtained from Solidity with\n `type(contractName).creationCode`.\n Requirements:\n - `bytecode` must not be empty.\n - `salt` must have not been used for `bytecode` already.\n - the factory must have a balance of at least `amount`.\n - if `amount` is non-zero, `bytecode` must have a `payable` constructor." + }, + "id": 2189, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deploy", + "nameLocation": "1422:6:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2140, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1437:6:16", + "nodeType": "VariableDeclaration", + "scope": 2189, + "src": "1429:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2139, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1429:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2142, + "mutability": "mutable", + "name": "salt", + "nameLocation": "1453:4:16", + "nodeType": "VariableDeclaration", + "scope": 2189, + "src": "1445:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2141, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1445:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2144, + "mutability": "mutable", + "name": "bytecode", + "nameLocation": "1472:8:16", + "nodeType": "VariableDeclaration", + "scope": 2189, + "src": "1459:21:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2143, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1459:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1428:53:16" + }, + "returnParameters": { + "id": 2148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2147, + "mutability": "mutable", + "name": "addr", + "nameLocation": "1508:4:16", + "nodeType": "VariableDeclaration", + "scope": 2189, + "src": "1500:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2146, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1500:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1499:14:16" + }, + "scope": 2224, + "src": "1413:573:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2208, + "nodeType": "Block", + "src": "2282:73:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2200, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2192, + "src": "2314:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2201, + "name": "bytecodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "2320:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 2204, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "2342:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Create2_$2224", + "typeString": "library Create2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Create2_$2224", + "typeString": "library Create2" + } + ], + "id": 2203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2334:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2334:7:16", + "typeDescriptions": {} + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2334:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2199, + "name": "computeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2209, + 2223 + ], + "referencedDeclaration": 2223, + "src": "2299:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2299:49:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2198, + "id": 2207, + "nodeType": "Return", + "src": "2292:56:16" + } + ] + }, + "documentation": { + "id": 2190, + "nodeType": "StructuredDocumentation", + "src": "1992:193:16", + "text": " @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n `bytecodeHash` or `salt` will result in a new destination address." + }, + "id": 2209, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeAddress", + "nameLocation": "2199:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2192, + "mutability": "mutable", + "name": "salt", + "nameLocation": "2222:4:16", + "nodeType": "VariableDeclaration", + "scope": 2209, + "src": "2214:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2191, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2214:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2194, + "mutability": "mutable", + "name": "bytecodeHash", + "nameLocation": "2236:12:16", + "nodeType": "VariableDeclaration", + "scope": 2209, + "src": "2228:20:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2193, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2228:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2213:36:16" + }, + "returnParameters": { + "id": 2198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2197, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2209, + "src": "2273:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2273:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2272:9:16" + }, + "scope": 2224, + "src": "2190:165:16", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2222, + "nodeType": "Block", + "src": "2713:1657:16", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2775:1589:16", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2789:22:16", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2806:4:16", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2800:5:16" + }, + "nodeType": "YulFunctionCall", + "src": "2800:11:16" + }, + "variables": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "2793:3:16", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "4013:3:16" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4018:4:16", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4009:3:16" + }, + "nodeType": "YulFunctionCall", + "src": "4009:14:16" + }, + { + "name": "bytecodeHash", + "nodeType": "YulIdentifier", + "src": "4025:12:16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4002:6:16" + }, + "nodeType": "YulFunctionCall", + "src": "4002:36:16" + }, + "nodeType": "YulExpressionStatement", + "src": "4002:36:16" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "4062:3:16" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4067:4:16", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4058:3:16" + }, + "nodeType": "YulFunctionCall", + "src": "4058:14:16" + }, + { + "name": "salt", + "nodeType": "YulIdentifier", + "src": "4074:4:16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4051:6:16" + }, + "nodeType": "YulFunctionCall", + "src": "4051:28:16" + }, + "nodeType": "YulExpressionStatement", + "src": "4051:28:16" + }, + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "4099:3:16" + }, + { + "name": "deployer", + "nodeType": "YulIdentifier", + "src": "4104:8:16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4092:6:16" + }, + "nodeType": "YulFunctionCall", + "src": "4092:21:16" + }, + "nodeType": "YulExpressionStatement", + "src": "4092:21:16" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4175:27:16", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "4192:3:16" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4197:4:16", + "type": "", + "value": "0x0b" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4188:3:16" + }, + "nodeType": "YulFunctionCall", + "src": "4188:14:16" + }, + "variables": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "4179:5:16", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "4301:5:16" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4308:4:16", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nodeType": "YulIdentifier", + "src": "4293:7:16" + }, + "nodeType": "YulFunctionCall", + "src": "4293:20:16" + }, + "nodeType": "YulExpressionStatement", + "src": "4293:20:16" + }, + { + "nodeType": "YulAssignment", + "src": "4326:28:16", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "4344:5:16" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4351:2:16", + "type": "", + "value": "85" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "4334:9:16" + }, + "nodeType": "YulFunctionCall", + "src": "4334:20:16" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "4326:4:16" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2219, + "isOffset": false, + "isSlot": false, + "src": "4326:4:16", + "valueSize": 1 + }, + { + "declaration": 2214, + "isOffset": false, + "isSlot": false, + "src": "4025:12:16", + "valueSize": 1 + }, + { + "declaration": 2216, + "isOffset": false, + "isSlot": false, + "src": "4104:8:16", + "valueSize": 1 + }, + { + "declaration": 2212, + "isOffset": false, + "isSlot": false, + "src": "4074:4:16", + "valueSize": 1 + } + ], + "id": 2221, + "nodeType": "InlineAssembly", + "src": "2766:1598:16" + } + ] + }, + "documentation": { + "id": 2210, + "nodeType": "StructuredDocumentation", + "src": "2361:232:16", + "text": " @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}." + }, + "id": 2223, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeAddress", + "nameLocation": "2607:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2217, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2212, + "mutability": "mutable", + "name": "salt", + "nameLocation": "2630:4:16", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "2622:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2622:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2214, + "mutability": "mutable", + "name": "bytecodeHash", + "nameLocation": "2644:12:16", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "2636:20:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2213, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2636:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2216, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "2666:8:16", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "2658:16:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2215, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2658:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2621:54:16" + }, + "returnParameters": { + "id": 2220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2219, + "mutability": "mutable", + "name": "addr", + "nameLocation": "2707:4:16", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "2699:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2699:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2698:14:16" + }, + "scope": 2224, + "src": "2598:1772:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2225, + "src": "495:3877:16", + "usedErrors": [ + 2131, + 2134, + 2137 + ], + "usedEvents": [] + } + ], + "src": "101:4272:16" + }, + "id": 16 + }, + "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "exportedSymbols": { + "StorageSlot": [ + 2334 + ] + }, + "id": 2335, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2226, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "193:24:17" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "StorageSlot", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2227, + "nodeType": "StructuredDocumentation", + "src": "219:1026:17", + "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```" + }, + "fullyImplemented": true, + "id": 2334, + "linearizedBaseContracts": [ + 2334 + ], + "name": "StorageSlot", + "nameLocation": "1254:11:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "StorageSlot.AddressSlot", + "id": 2230, + "members": [ + { + "constant": false, + "id": 2229, + "mutability": "mutable", + "name": "value", + "nameLocation": "1309:5:17", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "1301:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2228, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1301:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSlot", + "nameLocation": "1279:11:17", + "nodeType": "StructDefinition", + "scope": 2334, + "src": "1272:49:17", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BooleanSlot", + "id": 2233, + "members": [ + { + "constant": false, + "id": 2232, + "mutability": "mutable", + "name": "value", + "nameLocation": "1361:5:17", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "1356:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2231, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1356:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "BooleanSlot", + "nameLocation": "1334:11:17", + "nodeType": "StructDefinition", + "scope": 2334, + "src": "1327:46:17", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Bytes32Slot", + "id": 2236, + "members": [ + { + "constant": false, + "id": 2235, + "mutability": "mutable", + "name": "value", + "nameLocation": "1416:5:17", + "nodeType": "VariableDeclaration", + "scope": 2236, + "src": "1408:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2234, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1408:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Slot", + "nameLocation": "1386:11:17", + "nodeType": "StructDefinition", + "scope": 2334, + "src": "1379:49:17", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Uint256Slot", + "id": 2239, + "members": [ + { + "constant": false, + "id": 2238, + "mutability": "mutable", + "name": "value", + "nameLocation": "1471:5:17", + "nodeType": "VariableDeclaration", + "scope": 2239, + "src": "1463:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2237, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1463:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Uint256Slot", + "nameLocation": "1441:11:17", + "nodeType": "StructDefinition", + "scope": 2334, + "src": "1434:49:17", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.StringSlot", + "id": 2242, + "members": [ + { + "constant": false, + "id": 2241, + "mutability": "mutable", + "name": "value", + "nameLocation": "1524:5:17", + "nodeType": "VariableDeclaration", + "scope": 2242, + "src": "1517:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2240, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1517:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "name": "StringSlot", + "nameLocation": "1496:10:17", + "nodeType": "StructDefinition", + "scope": 2334, + "src": "1489:47:17", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BytesSlot", + "id": 2245, + "members": [ + { + "constant": false, + "id": 2244, + "mutability": "mutable", + "name": "value", + "nameLocation": "1575:5:17", + "nodeType": "VariableDeclaration", + "scope": 2245, + "src": "1569:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2243, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1569:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "BytesSlot", + "nameLocation": "1549:9:17", + "nodeType": "StructDefinition", + "scope": 2334, + "src": "1542:45:17", + "visibility": "public" + }, + { + "body": { + "id": 2255, + "nodeType": "Block", + "src": "1769:106:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1831:38:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1845:14:17", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "1855:4:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "1845:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2252, + "isOffset": false, + "isSlot": true, + "src": "1845:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2248, + "isOffset": false, + "isSlot": false, + "src": "1855:4:17", + "valueSize": 1 + } + ], + "id": 2254, + "nodeType": "InlineAssembly", + "src": "1822:47:17" + } + ] + }, + "documentation": { + "id": 2246, + "nodeType": "StructuredDocumentation", + "src": "1593:87:17", + "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`." + }, + "id": 2256, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressSlot", + "nameLocation": "1694:14:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "mutability": "mutable", + "name": "slot", + "nameLocation": "1717:4:17", + "nodeType": "VariableDeclaration", + "scope": 2256, + "src": "1709:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2247, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1709:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1708:14:17" + }, + "returnParameters": { + "id": 2253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2252, + "mutability": "mutable", + "name": "r", + "nameLocation": "1766:1:17", + "nodeType": "VariableDeclaration", + "scope": 2256, + "src": "1746:21:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + }, + "typeName": { + "id": 2251, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2250, + "name": "AddressSlot", + "nameLocations": [ + "1746:11:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2230, + "src": "1746:11:17" + }, + "referencedDeclaration": 2230, + "src": "1746:11:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + } + }, + "visibility": "internal" + } + ], + "src": "1745:23:17" + }, + "scope": 2334, + "src": "1685:190:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2266, + "nodeType": "Block", + "src": "2057:106:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2119:38:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2133:14:17", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "2143:4:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "2133:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2263, + "isOffset": false, + "isSlot": true, + "src": "2133:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2259, + "isOffset": false, + "isSlot": false, + "src": "2143:4:17", + "valueSize": 1 + } + ], + "id": 2265, + "nodeType": "InlineAssembly", + "src": "2110:47:17" + } + ] + }, + "documentation": { + "id": 2257, + "nodeType": "StructuredDocumentation", + "src": "1881:87:17", + "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`." + }, + "id": 2267, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBooleanSlot", + "nameLocation": "1982:14:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2259, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2005:4:17", + "nodeType": "VariableDeclaration", + "scope": 2267, + "src": "1997:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2258, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1997:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1996:14:17" + }, + "returnParameters": { + "id": 2264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2263, + "mutability": "mutable", + "name": "r", + "nameLocation": "2054:1:17", + "nodeType": "VariableDeclaration", + "scope": 2267, + "src": "2034:21:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$2233_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + }, + "typeName": { + "id": 2262, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2261, + "name": "BooleanSlot", + "nameLocations": [ + "2034:11:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2233, + "src": "2034:11:17" + }, + "referencedDeclaration": 2233, + "src": "2034:11:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$2233_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + } + }, + "visibility": "internal" + } + ], + "src": "2033:23:17" + }, + "scope": 2334, + "src": "1973:190:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2277, + "nodeType": "Block", + "src": "2345:106:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2407:38:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2421:14:17", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "2431:4:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "2421:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2274, + "isOffset": false, + "isSlot": true, + "src": "2421:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2270, + "isOffset": false, + "isSlot": false, + "src": "2431:4:17", + "valueSize": 1 + } + ], + "id": 2276, + "nodeType": "InlineAssembly", + "src": "2398:47:17" + } + ] + }, + "documentation": { + "id": 2268, + "nodeType": "StructuredDocumentation", + "src": "2169:87:17", + "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`." + }, + "id": 2278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytes32Slot", + "nameLocation": "2270:14:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2270, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2293:4:17", + "nodeType": "VariableDeclaration", + "scope": 2278, + "src": "2285:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2269, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2285:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2284:14:17" + }, + "returnParameters": { + "id": 2275, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2274, + "mutability": "mutable", + "name": "r", + "nameLocation": "2342:1:17", + "nodeType": "VariableDeclaration", + "scope": 2278, + "src": "2322:21:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$2236_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + }, + "typeName": { + "id": 2273, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2272, + "name": "Bytes32Slot", + "nameLocations": [ + "2322:11:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2236, + "src": "2322:11:17" + }, + "referencedDeclaration": 2236, + "src": "2322:11:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$2236_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2321:23:17" + }, + "scope": 2334, + "src": "2261:190:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2288, + "nodeType": "Block", + "src": "2633:106:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2695:38:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2709:14:17", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "2719:4:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "2709:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2285, + "isOffset": false, + "isSlot": true, + "src": "2709:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2281, + "isOffset": false, + "isSlot": false, + "src": "2719:4:17", + "valueSize": 1 + } + ], + "id": 2287, + "nodeType": "InlineAssembly", + "src": "2686:47:17" + } + ] + }, + "documentation": { + "id": 2279, + "nodeType": "StructuredDocumentation", + "src": "2457:87:17", + "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`." + }, + "id": 2289, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUint256Slot", + "nameLocation": "2558:14:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2281, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2581:4:17", + "nodeType": "VariableDeclaration", + "scope": 2289, + "src": "2573:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2280, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2573:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2572:14:17" + }, + "returnParameters": { + "id": 2286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2285, + "mutability": "mutable", + "name": "r", + "nameLocation": "2630:1:17", + "nodeType": "VariableDeclaration", + "scope": 2289, + "src": "2610:21:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$2239_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + }, + "typeName": { + "id": 2284, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2283, + "name": "Uint256Slot", + "nameLocations": [ + "2610:11:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2239, + "src": "2610:11:17" + }, + "referencedDeclaration": 2239, + "src": "2610:11:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$2239_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2609:23:17" + }, + "scope": 2334, + "src": "2549:190:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2299, + "nodeType": "Block", + "src": "2918:106:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2980:38:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2994:14:17", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "3004:4:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "2994:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2296, + "isOffset": false, + "isSlot": true, + "src": "2994:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2292, + "isOffset": false, + "isSlot": false, + "src": "3004:4:17", + "valueSize": 1 + } + ], + "id": 2298, + "nodeType": "InlineAssembly", + "src": "2971:47:17" + } + ] + }, + "documentation": { + "id": 2290, + "nodeType": "StructuredDocumentation", + "src": "2745:86:17", + "text": " @dev Returns an `StringSlot` with member `value` located at `slot`." + }, + "id": 2300, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "2845:13:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2292, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2867:4:17", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "2859:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2291, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2859:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2858:14:17" + }, + "returnParameters": { + "id": 2297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2296, + "mutability": "mutable", + "name": "r", + "nameLocation": "2915:1:17", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "2896:20:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2242_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 2295, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2294, + "name": "StringSlot", + "nameLocations": [ + "2896:10:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2242, + "src": "2896:10:17" + }, + "referencedDeclaration": 2242, + "src": "2896:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2242_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "2895:22:17" + }, + "scope": 2334, + "src": "2836:188:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2310, + "nodeType": "Block", + "src": "3226:112:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3288:44:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3302:20:17", + "value": { + "name": "store.slot", + "nodeType": "YulIdentifier", + "src": "3312:10:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "3302:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2307, + "isOffset": false, + "isSlot": true, + "src": "3302:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2303, + "isOffset": false, + "isSlot": true, + "src": "3312:10:17", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 2309, + "nodeType": "InlineAssembly", + "src": "3279:53:17" + } + ] + }, + "documentation": { + "id": 2301, + "nodeType": "StructuredDocumentation", + "src": "3030:101:17", + "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`." + }, + "id": 2311, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "3145:13:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2303, + "mutability": "mutable", + "name": "store", + "nameLocation": "3174:5:17", + "nodeType": "VariableDeclaration", + "scope": 2311, + "src": "3159:20:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2302, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3159:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3158:22:17" + }, + "returnParameters": { + "id": 2308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2307, + "mutability": "mutable", + "name": "r", + "nameLocation": "3223:1:17", + "nodeType": "VariableDeclaration", + "scope": 2311, + "src": "3204:20:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2242_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 2306, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2305, + "name": "StringSlot", + "nameLocations": [ + "3204:10:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2242, + "src": "3204:10:17" + }, + "referencedDeclaration": 2242, + "src": "3204:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2242_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3203:22:17" + }, + "scope": 2334, + "src": "3136:202:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2321, + "nodeType": "Block", + "src": "3514:106:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3576:38:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3590:14:17", + "value": { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "3600:4:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "3590:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2318, + "isOffset": false, + "isSlot": true, + "src": "3590:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2314, + "isOffset": false, + "isSlot": false, + "src": "3600:4:17", + "valueSize": 1 + } + ], + "id": 2320, + "nodeType": "InlineAssembly", + "src": "3567:47:17" + } + ] + }, + "documentation": { + "id": 2312, + "nodeType": "StructuredDocumentation", + "src": "3344:85:17", + "text": " @dev Returns an `BytesSlot` with member `value` located at `slot`." + }, + "id": 2322, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "3443:12:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2314, + "mutability": "mutable", + "name": "slot", + "nameLocation": "3464:4:17", + "nodeType": "VariableDeclaration", + "scope": 2322, + "src": "3456:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2313, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3456:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3455:14:17" + }, + "returnParameters": { + "id": 2319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2318, + "mutability": "mutable", + "name": "r", + "nameLocation": "3511:1:17", + "nodeType": "VariableDeclaration", + "scope": 2322, + "src": "3493:19:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2245_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 2317, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2316, + "name": "BytesSlot", + "nameLocations": [ + "3493:9:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2245, + "src": "3493:9:17" + }, + "referencedDeclaration": 2245, + "src": "3493:9:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2245_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3492:21:17" + }, + "scope": 2334, + "src": "3434:186:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2332, + "nodeType": "Block", + "src": "3817:112:17", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3879:44:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3893:20:17", + "value": { + "name": "store.slot", + "nodeType": "YulIdentifier", + "src": "3903:10:17" + }, + "variableNames": [ + { + "name": "r.slot", + "nodeType": "YulIdentifier", + "src": "3893:6:17" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2329, + "isOffset": false, + "isSlot": true, + "src": "3893:6:17", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2325, + "isOffset": false, + "isSlot": true, + "src": "3903:10:17", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 2331, + "nodeType": "InlineAssembly", + "src": "3870:53:17" + } + ] + }, + "documentation": { + "id": 2323, + "nodeType": "StructuredDocumentation", + "src": "3626:99:17", + "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`." + }, + "id": 2333, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "3739:12:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "mutability": "mutable", + "name": "store", + "nameLocation": "3766:5:17", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "3752:19:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2324, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3752:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3751:21:17" + }, + "returnParameters": { + "id": 2330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2329, + "mutability": "mutable", + "name": "r", + "nameLocation": "3814:1:17", + "nodeType": "VariableDeclaration", + "scope": 2333, + "src": "3796:19:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2245_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 2328, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2327, + "name": "BytesSlot", + "nameLocations": [ + "3796:9:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2245, + "src": "3796:9:17" + }, + "referencedDeclaration": 2245, + "src": "3796:9:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$2245_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3795:21:17" + }, + "scope": 2334, + "src": "3730:199:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2335, + "src": "1246:2685:17", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "193:3739:17" + }, + "id": 17 + }, + "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 2346 + ] + }, + "id": 2347, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2336, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:18" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC165", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2337, + "nodeType": "StructuredDocumentation", + "src": "141:280:18", + "text": " @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 2346, + "linearizedBaseContracts": [ + 2346 + ], + "name": "IERC165", + "nameLocation": "432:7:18", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2338, + "nodeType": "StructuredDocumentation", + "src": "446:340:18", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 2345, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "800:17:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2340, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "825:11:18", + "nodeType": "VariableDeclaration", + "scope": 2345, + "src": "818:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2339, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "818:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "817:20:18" + }, + "returnParameters": { + "id": 2344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2343, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2345, + "src": "861:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2342, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "861:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "860:6:18" + }, + "scope": 2346, + "src": "791:76:18", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2347, + "src": "422:447:18", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "115:755:18" + }, + "id": 18 + }, + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "exportedSymbols": { + "EnumerableMap": [ + 4379 + ], + "EnumerableSet": [ + 4992 + ] + }, + "id": 4380, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2348, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "205:24:19" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "file": "./EnumerableSet.sol", + "id": 2350, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4380, + "sourceUnit": 4993, + "src": "231:50:19", + "symbolAliases": [ + { + "foreign": { + "id": 2349, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4992, + "src": "239:13:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableMap", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2351, + "nodeType": "StructuredDocumentation", + "src": "283:1616:19", + "text": " @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```solidity\n contract Example {\n // Add the library methods\n using EnumerableMap for EnumerableMap.UintToAddressMap;\n // Declare a set state variable\n EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n The following map types are supported:\n - `uint256 -> address` (`UintToAddressMap`) since v3.0.0\n - `address -> uint256` (`AddressToUintMap`) since v4.6.0\n - `bytes32 -> bytes32` (`Bytes32ToBytes32Map`) since v4.6.0\n - `uint256 -> uint256` (`UintToUintMap`) since v4.7.0\n - `bytes32 -> uint256` (`Bytes32ToUintMap`) since v4.7.0\n - `uint256 -> bytes32` (`UintToBytes32Map`) since v5.1.0\n - `address -> address` (`AddressToAddressMap`) since v5.1.0\n - `address -> bytes32` (`AddressToBytes32Map`) since v5.1.0\n - `bytes32 -> address` (`Bytes32ToAddressMap`) since v5.1.0\n [WARNING]\n ====\n Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n unusable.\n See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n In order to clean an EnumerableMap, you can either remove all elements one by one or create a fresh instance using an\n array of EnumerableMap.\n ====" + }, + "fullyImplemented": true, + "id": 4379, + "linearizedBaseContracts": [ + 4379 + ], + "name": "EnumerableMap", + "nameLocation": "1908:13:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 2355, + "libraryName": { + "id": 2352, + "name": "EnumerableSet", + "nameLocations": [ + "1934:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4992, + "src": "1934:13:19" + }, + "nodeType": "UsingForDirective", + "src": "1928:49:19", + "typeName": { + "id": 2354, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2353, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "1952:13:19", + "1966:10:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "1952:24:19" + }, + "referencedDeclaration": 4584, + "src": "1952:24:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + } + }, + { + "documentation": { + "id": 2356, + "nodeType": "StructuredDocumentation", + "src": "2410:56:19", + "text": " @dev Query for a nonexistent map key." + }, + "errorSelector": "02b56686", + "id": 2360, + "name": "EnumerableMapNonexistentKey", + "nameLocation": "2477:27:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2358, + "mutability": "mutable", + "name": "key", + "nameLocation": "2513:3:19", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "2505:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2357, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2505:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2504:13:19" + }, + "src": "2471:47:19" + }, + { + "canonicalName": "EnumerableMap.Bytes32ToBytes32Map", + "id": 2368, + "members": [ + { + "constant": false, + "id": 2363, + "mutability": "mutable", + "name": "_keys", + "nameLocation": "2613:5:19", + "nodeType": "VariableDeclaration", + "scope": 2368, + "src": "2588:30:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 2362, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2361, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "2588:13:19", + "2602:10:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "2588:24:19" + }, + "referencedDeclaration": 4584, + "src": "2588:24:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2367, + "mutability": "mutable", + "name": "_values", + "nameLocation": "2660:7:19", + "nodeType": "VariableDeclaration", + "scope": 2368, + "src": "2628:39:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + }, + "typeName": { + "id": 2366, + "keyName": "key", + "keyNameLocation": "2644:3:19", + "keyType": { + "id": 2364, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2636:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2628:31:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2365, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2651:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32ToBytes32Map", + "nameLocation": "2531:19:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "2524:150:19", + "visibility": "public" + }, + { + "body": { + "id": 2395, + "nodeType": "Block", + "src": "2999:76:19", + "statements": [ + { + "expression": { + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2381, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2372, + "src": "3009:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2384, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3013:7:19", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2367, + "src": "3009:11:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 2385, + "indexExpression": { + "id": 2383, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2374, + "src": "3021:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3009:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2386, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2376, + "src": "3028:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3009:24:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2388, + "nodeType": "ExpressionStatement", + "src": "3009:24:19" + }, + { + "expression": { + "arguments": [ + { + "id": 2392, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2374, + "src": "3064:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 2389, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2372, + "src": "3050:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2390, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3054:5:19", + "memberName": "_keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 2363, + "src": "3050:9:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3060:3:19", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 4602, + "src": "3050:13:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$4584_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$4584_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3050:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2380, + "id": 2394, + "nodeType": "Return", + "src": "3043:25:19" + } + ] + }, + "documentation": { + "id": 2369, + "nodeType": "StructuredDocumentation", + "src": "2680:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 2396, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "2910:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2372, + "mutability": "mutable", + "name": "map", + "nameLocation": "2942:3:19", + "nodeType": "VariableDeclaration", + "scope": 2396, + "src": "2914:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2371, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2370, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "2914:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "2914:19:19" + }, + "referencedDeclaration": 2368, + "src": "2914:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2374, + "mutability": "mutable", + "name": "key", + "nameLocation": "2955:3:19", + "nodeType": "VariableDeclaration", + "scope": 2396, + "src": "2947:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2373, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2947:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2376, + "mutability": "mutable", + "name": "value", + "nameLocation": "2968:5:19", + "nodeType": "VariableDeclaration", + "scope": 2396, + "src": "2960:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2375, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2960:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2913:61:19" + }, + "returnParameters": { + "id": 2380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2379, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2396, + "src": "2993:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2378, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2993:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2992:6:19" + }, + "scope": 4379, + "src": "2901:174:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2419, + "nodeType": "Block", + "src": "3329:78:19", + "statements": [ + { + "expression": { + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3339:23:19", + "subExpression": { + "baseExpression": { + "expression": { + "id": 2407, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "3346:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3350:7:19", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2367, + "src": "3346:11:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 2410, + "indexExpression": { + "id": 2409, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2402, + "src": "3358:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3346:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2412, + "nodeType": "ExpressionStatement", + "src": "3339:23:19" + }, + { + "expression": { + "arguments": [ + { + "id": 2416, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2402, + "src": "3396:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 2413, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "3379:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3383:5:19", + "memberName": "_keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 2363, + "src": "3379:9:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3389:6:19", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 4620, + "src": "3379:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$4584_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$4584_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3379:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2406, + "id": 2418, + "nodeType": "Return", + "src": "3372:28:19" + } + ] + }, + "documentation": { + "id": 2397, + "nodeType": "StructuredDocumentation", + "src": "3081:157:19", + "text": " @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 2420, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "3252:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2400, + "mutability": "mutable", + "name": "map", + "nameLocation": "3287:3:19", + "nodeType": "VariableDeclaration", + "scope": 2420, + "src": "3259:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2399, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2398, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "3259:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "3259:19:19" + }, + "referencedDeclaration": 2368, + "src": "3259:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2402, + "mutability": "mutable", + "name": "key", + "nameLocation": "3300:3:19", + "nodeType": "VariableDeclaration", + "scope": 2420, + "src": "3292:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3292:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3258:46:19" + }, + "returnParameters": { + "id": 2406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2405, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2420, + "src": "3323:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2404, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3323:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3322:6:19" + }, + "scope": 4379, + "src": "3243:164:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2437, + "nodeType": "Block", + "src": "3579:47:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2434, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2426, + "src": "3615:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 2431, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "3596:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3600:5:19", + "memberName": "_keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 2363, + "src": "3596:9:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 2433, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3606:8:19", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 4638, + "src": "3596:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$4584_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$4584_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3596:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2430, + "id": 2436, + "nodeType": "Return", + "src": "3589:30:19" + } + ] + }, + "documentation": { + "id": 2421, + "nodeType": "StructuredDocumentation", + "src": "3413:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 2438, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "3495:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2424, + "mutability": "mutable", + "name": "map", + "nameLocation": "3532:3:19", + "nodeType": "VariableDeclaration", + "scope": 2438, + "src": "3504:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2423, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2422, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "3504:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "3504:19:19" + }, + "referencedDeclaration": 2368, + "src": "3504:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2426, + "mutability": "mutable", + "name": "key", + "nameLocation": "3545:3:19", + "nodeType": "VariableDeclaration", + "scope": 2438, + "src": "3537:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2425, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3537:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3503:46:19" + }, + "returnParameters": { + "id": 2430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2429, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2438, + "src": "3573:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2428, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3573:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3572:6:19" + }, + "scope": 4379, + "src": "3486:140:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2452, + "nodeType": "Block", + "src": "3797:42:19", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 2447, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2442, + "src": "3814:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3818:5:19", + "memberName": "_keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 2363, + "src": "3814:9:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 2449, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3824:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 4653, + "src": "3814:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$4584_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Bytes32Set_$4584_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (uint256)" + } + }, + "id": 2450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3814:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2446, + "id": 2451, + "nodeType": "Return", + "src": "3807:25:19" + } + ] + }, + "documentation": { + "id": 2439, + "nodeType": "StructuredDocumentation", + "src": "3632:79:19", + "text": " @dev Returns the number of key-value pairs in the map. O(1)." + }, + "id": 2453, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "3725:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2442, + "mutability": "mutable", + "name": "map", + "nameLocation": "3760:3:19", + "nodeType": "VariableDeclaration", + "scope": 2453, + "src": "3732:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2441, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2440, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "3732:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "3732:19:19" + }, + "referencedDeclaration": 2368, + "src": "3732:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "src": "3731:33:19" + }, + "returnParameters": { + "id": 2446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2445, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2453, + "src": "3788:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2444, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3788:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3787:9:19" + }, + "scope": 4379, + "src": "3716:123:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2481, + "nodeType": "Block", + "src": "4293:90:19", + "statements": [ + { + "assignments": [ + 2467 + ], + "declarations": [ + { + "constant": false, + "id": 2467, + "mutability": "mutable", + "name": "key", + "nameLocation": "4311:3:19", + "nodeType": "VariableDeclaration", + "scope": 2481, + "src": "4303:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2466, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4303:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2473, + "initialValue": { + "arguments": [ + { + "id": 2471, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "4330:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2468, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "4317:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4321:5:19", + "memberName": "_keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 2363, + "src": "4317:9:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 2470, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4327:2:19", + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 4671, + "src": "4317:12:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$4584_storage_ptr_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_struct$_Bytes32Set_$4584_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4317:19:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4303:33:19" + }, + { + "expression": { + "components": [ + { + "id": 2474, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "4354:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "baseExpression": { + "expression": { + "id": 2475, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "4359:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2476, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4363:7:19", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2367, + "src": "4359:11:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 2478, + "indexExpression": { + "id": 2477, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "4371:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4359:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2479, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4353:23:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "functionReturnParameters": 2465, + "id": 2480, + "nodeType": "Return", + "src": "4346:30:19" + } + ] + }, + "documentation": { + "id": 2454, + "nodeType": "StructuredDocumentation", + "src": "3845:342:19", + "text": " @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 2482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "4201:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2457, + "mutability": "mutable", + "name": "map", + "nameLocation": "4232:3:19", + "nodeType": "VariableDeclaration", + "scope": 2482, + "src": "4204:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2456, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2455, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "4204:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "4204:19:19" + }, + "referencedDeclaration": 2368, + "src": "4204:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2459, + "mutability": "mutable", + "name": "index", + "nameLocation": "4245:5:19", + "nodeType": "VariableDeclaration", + "scope": 2482, + "src": "4237:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4237:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4203:48:19" + }, + "returnParameters": { + "id": 2465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2462, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2482, + "src": "4275:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2461, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4275:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2464, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2482, + "src": "4284:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2463, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4284:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4274:18:19" + }, + "scope": 4379, + "src": "4192:191:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2525, + "nodeType": "Block", + "src": "4624:198:19", + "statements": [ + { + "assignments": [ + 2496 + ], + "declarations": [ + { + "constant": false, + "id": 2496, + "mutability": "mutable", + "name": "value", + "nameLocation": "4642:5:19", + "nodeType": "VariableDeclaration", + "scope": 2525, + "src": "4634:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2495, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4634:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2501, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2497, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "4650:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2498, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4654:7:19", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2367, + "src": "4650:11:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 2500, + "indexExpression": { + "id": 2499, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "4662:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4650:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4634:32:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2502, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2496, + "src": "4680:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4697:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4689:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2503, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4689:7:19", + "typeDescriptions": {} + } + }, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4689:10:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4680:19:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2523, + "nodeType": "Block", + "src": "4771:45:19", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 2519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4793:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 2520, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2496, + "src": "4799:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2521, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4792:13:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "functionReturnParameters": 2494, + "id": 2522, + "nodeType": "Return", + "src": "4785:20:19" + } + ] + }, + "id": 2524, + "nodeType": "IfStatement", + "src": "4676:140:19", + "trueBody": { + "id": 2518, + "nodeType": "Block", + "src": "4701:64:19", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 2509, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "4732:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + { + "id": 2510, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "4737:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2508, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "4723:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4723:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4751:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4743:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2512, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4743:7:19", + "typeDescriptions": {} + } + }, + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4743:10:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 2516, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4722:32:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "functionReturnParameters": 2494, + "id": 2517, + "nodeType": "Return", + "src": "4715:39:19" + } + ] + } + } + ] + }, + "documentation": { + "id": 2483, + "nodeType": "StructuredDocumentation", + "src": "4389:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 2526, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "4533:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2486, + "mutability": "mutable", + "name": "map", + "nameLocation": "4568:3:19", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "4540:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2485, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2484, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "4540:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "4540:19:19" + }, + "referencedDeclaration": 2368, + "src": "4540:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2488, + "mutability": "mutable", + "name": "key", + "nameLocation": "4581:3:19", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "4573:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2487, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4573:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4539:46:19" + }, + "returnParameters": { + "id": 2494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2491, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "4609:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2490, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4609:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2493, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2526, + "src": "4615:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2492, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4615:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4608:15:19" + }, + "scope": 4379, + "src": "4524:298:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2561, + "nodeType": "Block", + "src": "5064:183:19", + "statements": [ + { + "assignments": [ + 2538 + ], + "declarations": [ + { + "constant": false, + "id": 2538, + "mutability": "mutable", + "name": "value", + "nameLocation": "5082:5:19", + "nodeType": "VariableDeclaration", + "scope": 2561, + "src": "5074:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5074:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2543, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2539, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "5090:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2540, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5094:7:19", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 2367, + "src": "5090:11:19", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 2542, + "indexExpression": { + "id": 2541, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2532, + "src": "5102:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5090:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5074:32:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2544, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2538, + "src": "5120:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5129:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5120:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 2551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5134:19:19", + "subExpression": { + "arguments": [ + { + "id": 2548, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "5144:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + { + "id": 2549, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2532, + "src": "5149:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2547, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "5135:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5135:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5120:33:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2558, + "nodeType": "IfStatement", + "src": "5116:103:19", + "trueBody": { + "id": 2557, + "nodeType": "Block", + "src": "5155:64:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2554, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2532, + "src": "5204:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2553, + "name": "EnumerableMapNonexistentKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2360, + "src": "5176:27:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 2555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5176:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2556, + "nodeType": "RevertStatement", + "src": "5169:39:19" + } + ] + } + }, + { + "expression": { + "id": 2559, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2538, + "src": "5235:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2536, + "id": 2560, + "nodeType": "Return", + "src": "5228:12:19" + } + ] + }, + "documentation": { + "id": 2527, + "nodeType": "StructuredDocumentation", + "src": "4828:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 2562, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "4982:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2530, + "mutability": "mutable", + "name": "map", + "nameLocation": "5014:3:19", + "nodeType": "VariableDeclaration", + "scope": 2562, + "src": "4986:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2529, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2528, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "4986:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "4986:19:19" + }, + "referencedDeclaration": 2368, + "src": "4986:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2532, + "mutability": "mutable", + "name": "key", + "nameLocation": "5027:3:19", + "nodeType": "VariableDeclaration", + "scope": 2562, + "src": "5019:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2531, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5019:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4985:46:19" + }, + "returnParameters": { + "id": 2536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2535, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2562, + "src": "5055:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2534, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5055:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5054:9:19" + }, + "scope": 4379, + "src": "4973:274:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2577, + "nodeType": "Block", + "src": "5885:42:19", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 2572, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2566, + "src": "5902:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage pointer" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5906:5:19", + "memberName": "_keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 2363, + "src": "5902:9:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 2574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5912:6:19", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4701, + "src": "5902:16:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$4584_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$4584_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5902:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 2571, + "id": 2576, + "nodeType": "Return", + "src": "5895:25:19" + } + ] + }, + "documentation": { + "id": 2563, + "nodeType": "StructuredDocumentation", + "src": "5253:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 2578, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "5806:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2566, + "mutability": "mutable", + "name": "map", + "nameLocation": "5839:3:19", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "5811:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2565, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2564, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "5811:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "5811:19:19" + }, + "referencedDeclaration": 2368, + "src": "5811:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "src": "5810:33:19" + }, + "returnParameters": { + "id": 2571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2570, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "5867:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2568, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5867:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2569, + "nodeType": "ArrayTypeName", + "src": "5867:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "5866:18:19" + }, + "scope": 4379, + "src": "5797:130:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.UintToUintMap", + "id": 2582, + "members": [ + { + "constant": false, + "id": 2581, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "6006:6:19", + "nodeType": "VariableDeclaration", + "scope": 2582, + "src": "5986:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2580, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2579, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "5986:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "5986:19:19" + }, + "referencedDeclaration": 2368, + "src": "5986:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "UintToUintMap", + "nameLocation": "5962:13:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "5955:64:19", + "visibility": "public" + }, + { + "body": { + "id": 2608, + "nodeType": "Block", + "src": "6338:69:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2596, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "6359:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2597, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6363:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "6359:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2600, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "6379:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6371:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2598, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6371:7:19", + "typeDescriptions": {} + } + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6371:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 2604, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2590, + "src": "6393:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6385:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2602, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6385:7:19", + "typeDescriptions": {} + } + }, + "id": 2605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6385:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2595, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "6355:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 2606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6355:45:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2594, + "id": 2607, + "nodeType": "Return", + "src": "6348:52:19" + } + ] + }, + "documentation": { + "id": 2583, + "nodeType": "StructuredDocumentation", + "src": "6025:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 2609, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "6255:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2586, + "mutability": "mutable", + "name": "map", + "nameLocation": "6281:3:19", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "6259:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2585, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2584, + "name": "UintToUintMap", + "nameLocations": [ + "6259:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "6259:13:19" + }, + "referencedDeclaration": 2582, + "src": "6259:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2588, + "mutability": "mutable", + "name": "key", + "nameLocation": "6294:3:19", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "6286:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6286:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2590, + "mutability": "mutable", + "name": "value", + "nameLocation": "6307:5:19", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "6299:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2589, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6299:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6258:55:19" + }, + "returnParameters": { + "id": 2594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2593, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "6332:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2592, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6332:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6331:6:19" + }, + "scope": 4379, + "src": "6246:161:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2629, + "nodeType": "Block", + "src": "6646:56:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2621, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "6670:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2622, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6674:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "6670:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2625, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2615, + "src": "6690:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6682:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2623, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6682:7:19", + "typeDescriptions": {} + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6682:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2620, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "6663:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6663:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2619, + "id": 2628, + "nodeType": "Return", + "src": "6656:39:19" + } + ] + }, + "documentation": { + "id": 2610, + "nodeType": "StructuredDocumentation", + "src": "6413:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 2630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "6575:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "map", + "nameLocation": "6604:3:19", + "nodeType": "VariableDeclaration", + "scope": 2630, + "src": "6582:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2612, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2611, + "name": "UintToUintMap", + "nameLocations": [ + "6582:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "6582:13:19" + }, + "referencedDeclaration": 2582, + "src": "6582:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2615, + "mutability": "mutable", + "name": "key", + "nameLocation": "6617:3:19", + "nodeType": "VariableDeclaration", + "scope": 2630, + "src": "6609:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2614, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6609:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6581:40:19" + }, + "returnParameters": { + "id": 2619, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2618, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2630, + "src": "6640:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2617, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6640:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6639:6:19" + }, + "scope": 4379, + "src": "6566:136:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2650, + "nodeType": "Block", + "src": "6868:58:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2642, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2634, + "src": "6894:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6898:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "6894:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2646, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2636, + "src": "6914:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6906:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2644, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6906:7:19", + "typeDescriptions": {} + } + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6906:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2641, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "6885:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6885:34:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2640, + "id": 2649, + "nodeType": "Return", + "src": "6878:41:19" + } + ] + }, + "documentation": { + "id": 2631, + "nodeType": "StructuredDocumentation", + "src": "6708:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 2651, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "6790:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2634, + "mutability": "mutable", + "name": "map", + "nameLocation": "6821:3:19", + "nodeType": "VariableDeclaration", + "scope": 2651, + "src": "6799:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2633, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2632, + "name": "UintToUintMap", + "nameLocations": [ + "6799:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "6799:13:19" + }, + "referencedDeclaration": 2582, + "src": "6799:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2636, + "mutability": "mutable", + "name": "key", + "nameLocation": "6834:3:19", + "nodeType": "VariableDeclaration", + "scope": 2651, + "src": "6826:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6826:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6798:40:19" + }, + "returnParameters": { + "id": 2640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2639, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2651, + "src": "6862:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2638, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6862:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6861:6:19" + }, + "scope": 4379, + "src": "6781:145:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2665, + "nodeType": "Block", + "src": "7084:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2661, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2655, + "src": "7108:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2662, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7112:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "7108:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 2660, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "7101:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 2663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7101:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2659, + "id": 2664, + "nodeType": "Return", + "src": "7094:25:19" + } + ] + }, + "documentation": { + "id": 2652, + "nodeType": "StructuredDocumentation", + "src": "6932:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 2666, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "7018:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2655, + "mutability": "mutable", + "name": "map", + "nameLocation": "7047:3:19", + "nodeType": "VariableDeclaration", + "scope": 2666, + "src": "7025:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2654, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2653, + "name": "UintToUintMap", + "nameLocations": [ + "7025:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "7025:13:19" + }, + "referencedDeclaration": 2582, + "src": "7025:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + } + ], + "src": "7024:27:19" + }, + "returnParameters": { + "id": 2659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2658, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2666, + "src": "7075:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7075:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7074:9:19" + }, + "scope": 4379, + "src": "7009:117:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2699, + "nodeType": "Block", + "src": "7558:116:19", + "statements": [ + { + "assignments": [ + 2680, + 2682 + ], + "declarations": [ + { + "constant": false, + "id": 2680, + "mutability": "mutable", + "name": "key", + "nameLocation": "7577:3:19", + "nodeType": "VariableDeclaration", + "scope": 2699, + "src": "7569:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2679, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7569:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2682, + "mutability": "mutable", + "name": "value", + "nameLocation": "7590:5:19", + "nodeType": "VariableDeclaration", + "scope": 2699, + "src": "7582:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2681, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7582:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2688, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2684, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "7602:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2685, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7606:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "7602:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 2686, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2672, + "src": "7614:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2683, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "7599:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7599:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7568:52:19" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 2691, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2680, + "src": "7646:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7638:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7638:7:19", + "typeDescriptions": {} + } + }, + "id": 2692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7638:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 2695, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2682, + "src": "7660:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7652:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2693, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7652:7:19", + "typeDescriptions": {} + } + }, + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7652:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2697, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7637:30:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 2678, + "id": 2698, + "nodeType": "Return", + "src": "7630:37:19" + } + ] + }, + "documentation": { + "id": 2667, + "nodeType": "StructuredDocumentation", + "src": "7132:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 2700, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "7472:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2670, + "mutability": "mutable", + "name": "map", + "nameLocation": "7497:3:19", + "nodeType": "VariableDeclaration", + "scope": 2700, + "src": "7475:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2669, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2668, + "name": "UintToUintMap", + "nameLocations": [ + "7475:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "7475:13:19" + }, + "referencedDeclaration": 2582, + "src": "7475:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2672, + "mutability": "mutable", + "name": "index", + "nameLocation": "7510:5:19", + "nodeType": "VariableDeclaration", + "scope": 2700, + "src": "7502:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7502:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7474:42:19" + }, + "returnParameters": { + "id": 2678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2675, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2700, + "src": "7540:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7540:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2677, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2700, + "src": "7549:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2676, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7549:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7539:18:19" + }, + "scope": 4379, + "src": "7463:211:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2733, + "nodeType": "Block", + "src": "7909:123:19", + "statements": [ + { + "assignments": [ + 2714, + 2716 + ], + "declarations": [ + { + "constant": false, + "id": 2714, + "mutability": "mutable", + "name": "success", + "nameLocation": "7925:7:19", + "nodeType": "VariableDeclaration", + "scope": 2733, + "src": "7920:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2713, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7920:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2716, + "mutability": "mutable", + "name": "value", + "nameLocation": "7942:5:19", + "nodeType": "VariableDeclaration", + "scope": 2733, + "src": "7934:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2715, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7934:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2725, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2718, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2704, + "src": "7958:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7962:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "7958:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2722, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2706, + "src": "7978:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7970:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2720, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7970:7:19", + "typeDescriptions": {} + } + }, + "id": 2723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7970:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2717, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "7951:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 2724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7951:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7919:64:19" + }, + { + "expression": { + "components": [ + { + "id": 2726, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2714, + "src": "8001:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "id": 2729, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2716, + "src": "8018:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8010:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2727, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8010:7:19", + "typeDescriptions": {} + } + }, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8010:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2731, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8000:25:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 2712, + "id": 2732, + "nodeType": "Return", + "src": "7993:32:19" + } + ] + }, + "documentation": { + "id": 2701, + "nodeType": "StructuredDocumentation", + "src": "7680:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 2734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "7824:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2707, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2704, + "mutability": "mutable", + "name": "map", + "nameLocation": "7853:3:19", + "nodeType": "VariableDeclaration", + "scope": 2734, + "src": "7831:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2703, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2702, + "name": "UintToUintMap", + "nameLocations": [ + "7831:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "7831:13:19" + }, + "referencedDeclaration": 2582, + "src": "7831:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2706, + "mutability": "mutable", + "name": "key", + "nameLocation": "7866:3:19", + "nodeType": "VariableDeclaration", + "scope": 2734, + "src": "7858:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7858:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7830:40:19" + }, + "returnParameters": { + "id": 2712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2709, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2734, + "src": "7894:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2708, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7894:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2711, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2734, + "src": "7900:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7900:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7893:15:19" + }, + "scope": 4379, + "src": "7815:217:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2757, + "nodeType": "Block", + "src": "8268:62:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 2748, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2738, + "src": "8297:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2749, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8301:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "8297:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2752, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2740, + "src": "8317:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8309:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2750, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8309:7:19", + "typeDescriptions": {} + } + }, + "id": 2753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8309:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2747, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "8293:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8293:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8285:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2745, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8285:7:19", + "typeDescriptions": {} + } + }, + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8285:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2744, + "id": 2756, + "nodeType": "Return", + "src": "8278:45:19" + } + ] + }, + "documentation": { + "id": 2735, + "nodeType": "StructuredDocumentation", + "src": "8038:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 2758, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "8192:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2738, + "mutability": "mutable", + "name": "map", + "nameLocation": "8218:3:19", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "8196:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2737, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2736, + "name": "UintToUintMap", + "nameLocations": [ + "8196:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "8196:13:19" + }, + "referencedDeclaration": 2582, + "src": "8196:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2740, + "mutability": "mutable", + "name": "key", + "nameLocation": "8231:3:19", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "8223:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8223:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8195:40:19" + }, + "returnParameters": { + "id": 2744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2743, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "8259:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2742, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8259:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8258:9:19" + }, + "scope": 4379, + "src": "8183:147:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2787, + "nodeType": "Block", + "src": "8962:216:19", + "statements": [ + { + "assignments": [ + 2772 + ], + "declarations": [ + { + "constant": false, + "id": 2772, + "mutability": "mutable", + "name": "store", + "nameLocation": "8989:5:19", + "nodeType": "VariableDeclaration", + "scope": 2787, + "src": "8972:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2770, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8972:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2771, + "nodeType": "ArrayTypeName", + "src": "8972:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 2777, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2774, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2762, + "src": "9002:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap storage pointer" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9006:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2581, + "src": "9002:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 2773, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "8997:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 2776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8997:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8972:41:19" + }, + { + "assignments": [ + 2782 + ], + "declarations": [ + { + "constant": false, + "id": 2782, + "mutability": "mutable", + "name": "result", + "nameLocation": "9040:6:19", + "nodeType": "VariableDeclaration", + "scope": 2787, + "src": "9023:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2780, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9023:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2781, + "nodeType": "ArrayTypeName", + "src": "9023:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 2783, + "nodeType": "VariableDeclarationStatement", + "src": "9023:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "9109:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9123:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "9133:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "9123:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 2782, + "isOffset": false, + "isSlot": false, + "src": "9123:6:19", + "valueSize": 1 + }, + { + "declaration": 2772, + "isOffset": false, + "isSlot": false, + "src": "9133:5:19", + "valueSize": 1 + } + ], + "id": 2784, + "nodeType": "InlineAssembly", + "src": "9100:48:19" + }, + { + "expression": { + "id": 2785, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "9165:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 2767, + "id": 2786, + "nodeType": "Return", + "src": "9158:13:19" + } + ] + }, + "documentation": { + "id": 2759, + "nodeType": "StructuredDocumentation", + "src": "8336:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 2788, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "8889:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2762, + "mutability": "mutable", + "name": "map", + "nameLocation": "8916:3:19", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "8894:25:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 2761, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2760, + "name": "UintToUintMap", + "nameLocations": [ + "8894:13:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "8894:13:19" + }, + "referencedDeclaration": 2582, + "src": "8894:13:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "internal" + } + ], + "src": "8893:27:19" + }, + "returnParameters": { + "id": 2767, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2766, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "8944:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8944:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2765, + "nodeType": "ArrayTypeName", + "src": "8944:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "8943:18:19" + }, + "scope": 4379, + "src": "8880:298:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.UintToAddressMap", + "id": 2792, + "members": [ + { + "constant": false, + "id": 2791, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "9263:6:19", + "nodeType": "VariableDeclaration", + "scope": 2792, + "src": "9243:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 2790, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2789, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "9243:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "9243:19:19" + }, + "referencedDeclaration": 2368, + "src": "9243:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "UintToAddressMap", + "nameLocation": "9216:16:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "9209:67:19", + "visibility": "public" + }, + { + "body": { + "id": 2824, + "nodeType": "Block", + "src": "9598:87:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2806, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2796, + "src": "9619:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2807, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9623:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "9619:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2810, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2798, + "src": "9639:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9631:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2808, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9631:7:19", + "typeDescriptions": {} + } + }, + "id": 2811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9631:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2818, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2800, + "src": "9669:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9661:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2816, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9661:7:19", + "typeDescriptions": {} + } + }, + "id": 2819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9661:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9653:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2814, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9653:7:19", + "typeDescriptions": {} + } + }, + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9653:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9645:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2812, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9645:7:19", + "typeDescriptions": {} + } + }, + "id": 2821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9645:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2805, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "9615:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 2822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9615:63:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2804, + "id": 2823, + "nodeType": "Return", + "src": "9608:70:19" + } + ] + }, + "documentation": { + "id": 2793, + "nodeType": "StructuredDocumentation", + "src": "9282:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 2825, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "9512:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2796, + "mutability": "mutable", + "name": "map", + "nameLocation": "9541:3:19", + "nodeType": "VariableDeclaration", + "scope": 2825, + "src": "9516:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2795, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2794, + "name": "UintToAddressMap", + "nameLocations": [ + "9516:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "9516:16:19" + }, + "referencedDeclaration": 2792, + "src": "9516:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2798, + "mutability": "mutable", + "name": "key", + "nameLocation": "9554:3:19", + "nodeType": "VariableDeclaration", + "scope": 2825, + "src": "9546:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9546:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2800, + "mutability": "mutable", + "name": "value", + "nameLocation": "9567:5:19", + "nodeType": "VariableDeclaration", + "scope": 2825, + "src": "9559:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9559:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9515:58:19" + }, + "returnParameters": { + "id": 2804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2803, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2825, + "src": "9592:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2802, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9592:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "9591:6:19" + }, + "scope": 4379, + "src": "9503:182:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2845, + "nodeType": "Block", + "src": "9927:56:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2837, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2829, + "src": "9951:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2838, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9955:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "9951:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2841, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2831, + "src": "9971:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9963:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2839, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9963:7:19", + "typeDescriptions": {} + } + }, + "id": 2842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9963:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2836, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "9944:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 2843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9944:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2835, + "id": 2844, + "nodeType": "Return", + "src": "9937:39:19" + } + ] + }, + "documentation": { + "id": 2826, + "nodeType": "StructuredDocumentation", + "src": "9691:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 2846, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "9853:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2829, + "mutability": "mutable", + "name": "map", + "nameLocation": "9885:3:19", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "9860:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2828, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2827, + "name": "UintToAddressMap", + "nameLocations": [ + "9860:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "9860:16:19" + }, + "referencedDeclaration": 2792, + "src": "9860:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2831, + "mutability": "mutable", + "name": "key", + "nameLocation": "9898:3:19", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "9890:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9890:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9859:43:19" + }, + "returnParameters": { + "id": 2835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2834, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "9921:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2833, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9921:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "9920:6:19" + }, + "scope": 4379, + "src": "9844:139:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2866, + "nodeType": "Block", + "src": "10152:58:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2858, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2850, + "src": "10178:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2859, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10182:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "10178:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2862, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2852, + "src": "10198:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10190:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2860, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10190:7:19", + "typeDescriptions": {} + } + }, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10190:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2857, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "10169:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 2864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10169:34:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2856, + "id": 2865, + "nodeType": "Return", + "src": "10162:41:19" + } + ] + }, + "documentation": { + "id": 2847, + "nodeType": "StructuredDocumentation", + "src": "9989:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 2867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "10071:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2850, + "mutability": "mutable", + "name": "map", + "nameLocation": "10105:3:19", + "nodeType": "VariableDeclaration", + "scope": 2867, + "src": "10080:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2849, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2848, + "name": "UintToAddressMap", + "nameLocations": [ + "10080:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "10080:16:19" + }, + "referencedDeclaration": 2792, + "src": "10080:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2852, + "mutability": "mutable", + "name": "key", + "nameLocation": "10118:3:19", + "nodeType": "VariableDeclaration", + "scope": 2867, + "src": "10110:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2851, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10110:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10079:43:19" + }, + "returnParameters": { + "id": 2856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2855, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2867, + "src": "10146:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2854, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10146:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10145:6:19" + }, + "scope": 4379, + "src": "10062:148:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2881, + "nodeType": "Block", + "src": "10371:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2877, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2871, + "src": "10395:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2878, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10399:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "10395:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 2876, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "10388:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10388:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2875, + "id": 2880, + "nodeType": "Return", + "src": "10381:25:19" + } + ] + }, + "documentation": { + "id": 2868, + "nodeType": "StructuredDocumentation", + "src": "10216:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 2882, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "10302:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2872, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2871, + "mutability": "mutable", + "name": "map", + "nameLocation": "10334:3:19", + "nodeType": "VariableDeclaration", + "scope": 2882, + "src": "10309:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2870, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2869, + "name": "UintToAddressMap", + "nameLocations": [ + "10309:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "10309:16:19" + }, + "referencedDeclaration": 2792, + "src": "10309:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + } + ], + "src": "10308:30:19" + }, + "returnParameters": { + "id": 2875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2874, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2882, + "src": "10362:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10362:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10361:9:19" + }, + "scope": 4379, + "src": "10293:120:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2921, + "nodeType": "Block", + "src": "10848:134:19", + "statements": [ + { + "assignments": [ + 2896, + 2898 + ], + "declarations": [ + { + "constant": false, + "id": 2896, + "mutability": "mutable", + "name": "key", + "nameLocation": "10867:3:19", + "nodeType": "VariableDeclaration", + "scope": 2921, + "src": "10859:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10859:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2898, + "mutability": "mutable", + "name": "value", + "nameLocation": "10880:5:19", + "nodeType": "VariableDeclaration", + "scope": 2921, + "src": "10872:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2897, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10872:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2904, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2900, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2886, + "src": "10892:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2901, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10896:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "10892:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 2902, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2888, + "src": "10904:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2899, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "10889:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 2903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10889:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10858:52:19" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 2907, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2896, + "src": "10936:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10928:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10928:7:19", + "typeDescriptions": {} + } + }, + "id": 2908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10928:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2915, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2898, + "src": "10966:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10958:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10958:7:19", + "typeDescriptions": {} + } + }, + "id": 2916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10958:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10950:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2911, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "10950:7:19", + "typeDescriptions": {} + } + }, + "id": 2917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10950:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10942:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2909, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10942:7:19", + "typeDescriptions": {} + } + }, + "id": 2918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10942:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2919, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10927:48:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$", + "typeString": "tuple(uint256,address)" + } + }, + "functionReturnParameters": 2894, + "id": 2920, + "nodeType": "Return", + "src": "10920:55:19" + } + ] + }, + "documentation": { + "id": 2883, + "nodeType": "StructuredDocumentation", + "src": "10419:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 2922, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "10759:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2889, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2886, + "mutability": "mutable", + "name": "map", + "nameLocation": "10787:3:19", + "nodeType": "VariableDeclaration", + "scope": 2922, + "src": "10762:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2885, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2884, + "name": "UintToAddressMap", + "nameLocations": [ + "10762:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "10762:16:19" + }, + "referencedDeclaration": 2792, + "src": "10762:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2888, + "mutability": "mutable", + "name": "index", + "nameLocation": "10800:5:19", + "nodeType": "VariableDeclaration", + "scope": 2922, + "src": "10792:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2887, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10792:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10761:45:19" + }, + "returnParameters": { + "id": 2894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2891, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2922, + "src": "10830:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2890, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10830:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2893, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2922, + "src": "10839:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2892, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10839:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10829:18:19" + }, + "scope": 4379, + "src": "10750:232:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2961, + "nodeType": "Block", + "src": "11220:141:19", + "statements": [ + { + "assignments": [ + 2936, + 2938 + ], + "declarations": [ + { + "constant": false, + "id": 2936, + "mutability": "mutable", + "name": "success", + "nameLocation": "11236:7:19", + "nodeType": "VariableDeclaration", + "scope": 2961, + "src": "11231:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2935, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11231:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2938, + "mutability": "mutable", + "name": "value", + "nameLocation": "11253:5:19", + "nodeType": "VariableDeclaration", + "scope": 2961, + "src": "11245:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2937, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11245:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 2947, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 2940, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2926, + "src": "11269:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2941, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11273:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "11269:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2944, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2928, + "src": "11289:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11281:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11281:7:19", + "typeDescriptions": {} + } + }, + "id": 2945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11281:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2939, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "11262:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 2946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11262:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11230:64:19" + }, + { + "expression": { + "components": [ + { + "id": 2948, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2936, + "src": "11312:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2955, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2938, + "src": "11345:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11337:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11337:7:19", + "typeDescriptions": {} + } + }, + "id": 2956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11337:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11329:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2951, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "11329:7:19", + "typeDescriptions": {} + } + }, + "id": 2957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11329:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11321:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11321:7:19", + "typeDescriptions": {} + } + }, + "id": 2958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11321:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2959, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11311:43:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 2934, + "id": 2960, + "nodeType": "Return", + "src": "11304:50:19" + } + ] + }, + "documentation": { + "id": 2923, + "nodeType": "StructuredDocumentation", + "src": "10988:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 2962, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "11132:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2926, + "mutability": "mutable", + "name": "map", + "nameLocation": "11164:3:19", + "nodeType": "VariableDeclaration", + "scope": 2962, + "src": "11139:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2925, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2924, + "name": "UintToAddressMap", + "nameLocations": [ + "11139:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "11139:16:19" + }, + "referencedDeclaration": 2792, + "src": "11139:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2928, + "mutability": "mutable", + "name": "key", + "nameLocation": "11177:3:19", + "nodeType": "VariableDeclaration", + "scope": 2962, + "src": "11169:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2927, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11169:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11138:43:19" + }, + "returnParameters": { + "id": 2934, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2931, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2962, + "src": "11205:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2930, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11205:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2933, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2962, + "src": "11211:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2932, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11211:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11204:15:19" + }, + "scope": 4379, + "src": "11123:238:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2991, + "nodeType": "Block", + "src": "11600:80:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 2980, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2966, + "src": "11645:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 2981, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11649:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "11645:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 2984, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2968, + "src": "11665:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11657:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 2982, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11657:7:19", + "typeDescriptions": {} + } + }, + "id": 2985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11657:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2979, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "11641:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 2986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11641:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11633:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11633:7:19", + "typeDescriptions": {} + } + }, + "id": 2987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11633:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11625:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2975, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "11625:7:19", + "typeDescriptions": {} + } + }, + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11625:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11617:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11617:7:19", + "typeDescriptions": {} + } + }, + "id": 2989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11617:56:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2972, + "id": 2990, + "nodeType": "Return", + "src": "11610:63:19" + } + ] + }, + "documentation": { + "id": 2963, + "nodeType": "StructuredDocumentation", + "src": "11367:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 2992, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "11521:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2966, + "mutability": "mutable", + "name": "map", + "nameLocation": "11550:3:19", + "nodeType": "VariableDeclaration", + "scope": 2992, + "src": "11525:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2965, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2964, + "name": "UintToAddressMap", + "nameLocations": [ + "11525:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "11525:16:19" + }, + "referencedDeclaration": 2792, + "src": "11525:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2968, + "mutability": "mutable", + "name": "key", + "nameLocation": "11563:3:19", + "nodeType": "VariableDeclaration", + "scope": 2992, + "src": "11555:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11555:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11524:43:19" + }, + "returnParameters": { + "id": 2972, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2971, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2992, + "src": "11591:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2970, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11591:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11590:9:19" + }, + "scope": 4379, + "src": "11512:168:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3021, + "nodeType": "Block", + "src": "12315:216:19", + "statements": [ + { + "assignments": [ + 3006 + ], + "declarations": [ + { + "constant": false, + "id": 3006, + "mutability": "mutable", + "name": "store", + "nameLocation": "12342:5:19", + "nodeType": "VariableDeclaration", + "scope": 3021, + "src": "12325:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3004, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12325:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3005, + "nodeType": "ArrayTypeName", + "src": "12325:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3011, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3008, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2996, + "src": "12355:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3009, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12359:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 2791, + "src": "12355:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3007, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "12350:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12350:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12325:41:19" + }, + { + "assignments": [ + 3016 + ], + "declarations": [ + { + "constant": false, + "id": 3016, + "mutability": "mutable", + "name": "result", + "nameLocation": "12393:6:19", + "nodeType": "VariableDeclaration", + "scope": 3021, + "src": "12376:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12376:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3015, + "nodeType": "ArrayTypeName", + "src": "12376:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 3017, + "nodeType": "VariableDeclarationStatement", + "src": "12376:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "12462:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12476:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "12486:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "12476:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 3016, + "isOffset": false, + "isSlot": false, + "src": "12476:6:19", + "valueSize": 1 + }, + { + "declaration": 3006, + "isOffset": false, + "isSlot": false, + "src": "12486:5:19", + "valueSize": 1 + } + ], + "id": 3018, + "nodeType": "InlineAssembly", + "src": "12453:48:19" + }, + { + "expression": { + "id": 3019, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3016, + "src": "12518:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 3001, + "id": 3020, + "nodeType": "Return", + "src": "12511:13:19" + } + ] + }, + "documentation": { + "id": 2993, + "nodeType": "StructuredDocumentation", + "src": "11686:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3022, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "12239:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2996, + "mutability": "mutable", + "name": "map", + "nameLocation": "12269:3:19", + "nodeType": "VariableDeclaration", + "scope": 3022, + "src": "12244:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "id": 2995, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2994, + "name": "UintToAddressMap", + "nameLocations": [ + "12244:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2792, + "src": "12244:16:19" + }, + "referencedDeclaration": 2792, + "src": "12244:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$2792_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "visibility": "internal" + } + ], + "src": "12243:30:19" + }, + "returnParameters": { + "id": 3001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3000, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3022, + "src": "12297:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12297:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2999, + "nodeType": "ArrayTypeName", + "src": "12297:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "12296:18:19" + }, + "scope": 4379, + "src": "12230:301:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.UintToBytes32Map", + "id": 3026, + "members": [ + { + "constant": false, + "id": 3025, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "12616:6:19", + "nodeType": "VariableDeclaration", + "scope": 3026, + "src": "12596:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 3024, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3023, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "12596:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "12596:19:19" + }, + "referencedDeclaration": 2368, + "src": "12596:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "UintToBytes32Map", + "nameLocation": "12569:16:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "12562:67:19", + "visibility": "public" + }, + { + "body": { + "id": 3049, + "nodeType": "Block", + "src": "12951:60:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3040, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3030, + "src": "12972:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3041, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12976:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "12972:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 3044, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3032, + "src": "12992:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12984:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3042, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12984:7:19", + "typeDescriptions": {} + } + }, + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12984:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3046, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3034, + "src": "12998:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3039, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "12968:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 3047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12968:36:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3038, + "id": 3048, + "nodeType": "Return", + "src": "12961:43:19" + } + ] + }, + "documentation": { + "id": 3027, + "nodeType": "StructuredDocumentation", + "src": "12635:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 3050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "12865:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3030, + "mutability": "mutable", + "name": "map", + "nameLocation": "12894:3:19", + "nodeType": "VariableDeclaration", + "scope": 3050, + "src": "12869:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3029, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3028, + "name": "UintToBytes32Map", + "nameLocations": [ + "12869:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "12869:16:19" + }, + "referencedDeclaration": 3026, + "src": "12869:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3032, + "mutability": "mutable", + "name": "key", + "nameLocation": "12907:3:19", + "nodeType": "VariableDeclaration", + "scope": 3050, + "src": "12899:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3031, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12899:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3034, + "mutability": "mutable", + "name": "value", + "nameLocation": "12920:5:19", + "nodeType": "VariableDeclaration", + "scope": 3050, + "src": "12912:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3033, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12912:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12868:58:19" + }, + "returnParameters": { + "id": 3038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3037, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3050, + "src": "12945:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3036, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12945:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12944:6:19" + }, + "scope": 4379, + "src": "12856:155:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3070, + "nodeType": "Block", + "src": "13253:56:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3062, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "13277:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3063, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13281:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "13277:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 3066, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3056, + "src": "13297:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13289:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3064, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13289:7:19", + "typeDescriptions": {} + } + }, + "id": 3067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13289:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3061, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "13270:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 3068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13270:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3060, + "id": 3069, + "nodeType": "Return", + "src": "13263:39:19" + } + ] + }, + "documentation": { + "id": 3051, + "nodeType": "StructuredDocumentation", + "src": "13017:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 3071, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "13179:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3054, + "mutability": "mutable", + "name": "map", + "nameLocation": "13211:3:19", + "nodeType": "VariableDeclaration", + "scope": 3071, + "src": "13186:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3053, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3052, + "name": "UintToBytes32Map", + "nameLocations": [ + "13186:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "13186:16:19" + }, + "referencedDeclaration": 3026, + "src": "13186:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3056, + "mutability": "mutable", + "name": "key", + "nameLocation": "13224:3:19", + "nodeType": "VariableDeclaration", + "scope": 3071, + "src": "13216:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13216:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13185:43:19" + }, + "returnParameters": { + "id": 3060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3059, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3071, + "src": "13247:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3058, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13247:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "13246:6:19" + }, + "scope": 4379, + "src": "13170:139:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3091, + "nodeType": "Block", + "src": "13478:58:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3083, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3075, + "src": "13504:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13508:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "13504:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 3087, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "13524:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13516:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3085, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13516:7:19", + "typeDescriptions": {} + } + }, + "id": 3088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13516:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3082, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "13495:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13495:34:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3081, + "id": 3090, + "nodeType": "Return", + "src": "13488:41:19" + } + ] + }, + "documentation": { + "id": 3072, + "nodeType": "StructuredDocumentation", + "src": "13315:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 3092, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "13397:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3075, + "mutability": "mutable", + "name": "map", + "nameLocation": "13431:3:19", + "nodeType": "VariableDeclaration", + "scope": 3092, + "src": "13406:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3074, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3073, + "name": "UintToBytes32Map", + "nameLocations": [ + "13406:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "13406:16:19" + }, + "referencedDeclaration": 3026, + "src": "13406:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3077, + "mutability": "mutable", + "name": "key", + "nameLocation": "13444:3:19", + "nodeType": "VariableDeclaration", + "scope": 3092, + "src": "13436:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3076, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13436:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13405:43:19" + }, + "returnParameters": { + "id": 3081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3080, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3092, + "src": "13472:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3079, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13472:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "13471:6:19" + }, + "scope": 4379, + "src": "13388:148:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3106, + "nodeType": "Block", + "src": "13697:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3102, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3096, + "src": "13721:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3103, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13725:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "13721:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3101, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "13714:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 3104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13714:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3100, + "id": 3105, + "nodeType": "Return", + "src": "13707:25:19" + } + ] + }, + "documentation": { + "id": 3093, + "nodeType": "StructuredDocumentation", + "src": "13542:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 3107, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "13628:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3096, + "mutability": "mutable", + "name": "map", + "nameLocation": "13660:3:19", + "nodeType": "VariableDeclaration", + "scope": 3107, + "src": "13635:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3095, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3094, + "name": "UintToBytes32Map", + "nameLocations": [ + "13635:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "13635:16:19" + }, + "referencedDeclaration": 3026, + "src": "13635:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "src": "13634:30:19" + }, + "returnParameters": { + "id": 3100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3099, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3107, + "src": "13688:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13688:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13687:9:19" + }, + "scope": 4379, + "src": "13619:120:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3137, + "nodeType": "Block", + "src": "14174:107:19", + "statements": [ + { + "assignments": [ + 3121, + 3123 + ], + "declarations": [ + { + "constant": false, + "id": 3121, + "mutability": "mutable", + "name": "key", + "nameLocation": "14193:3:19", + "nodeType": "VariableDeclaration", + "scope": 3137, + "src": "14185:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3120, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14185:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3123, + "mutability": "mutable", + "name": "value", + "nameLocation": "14206:5:19", + "nodeType": "VariableDeclaration", + "scope": 3137, + "src": "14198:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3122, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14198:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3129, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3125, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3111, + "src": "14218:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3126, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14222:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "14218:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 3127, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3113, + "src": "14230:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3124, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "14215:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 3128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14215:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14184:52:19" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 3132, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3121, + "src": "14262:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14254:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14254:7:19", + "typeDescriptions": {} + } + }, + "id": 3133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14254:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3134, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3123, + "src": "14268:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 3135, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14253:21:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", + "typeString": "tuple(uint256,bytes32)" + } + }, + "functionReturnParameters": 3119, + "id": 3136, + "nodeType": "Return", + "src": "14246:28:19" + } + ] + }, + "documentation": { + "id": 3108, + "nodeType": "StructuredDocumentation", + "src": "13745:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3138, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "14085:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3111, + "mutability": "mutable", + "name": "map", + "nameLocation": "14113:3:19", + "nodeType": "VariableDeclaration", + "scope": 3138, + "src": "14088:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3110, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3109, + "name": "UintToBytes32Map", + "nameLocations": [ + "14088:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "14088:16:19" + }, + "referencedDeclaration": 3026, + "src": "14088:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3113, + "mutability": "mutable", + "name": "index", + "nameLocation": "14126:5:19", + "nodeType": "VariableDeclaration", + "scope": 3138, + "src": "14118:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14118:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14087:45:19" + }, + "returnParameters": { + "id": 3119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3116, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3138, + "src": "14156:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14156:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3118, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3138, + "src": "14165:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3117, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14165:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14155:18:19" + }, + "scope": 4379, + "src": "14076:205:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3168, + "nodeType": "Block", + "src": "14519:114:19", + "statements": [ + { + "assignments": [ + 3152, + 3154 + ], + "declarations": [ + { + "constant": false, + "id": 3152, + "mutability": "mutable", + "name": "success", + "nameLocation": "14535:7:19", + "nodeType": "VariableDeclaration", + "scope": 3168, + "src": "14530:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3151, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14530:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3154, + "mutability": "mutable", + "name": "value", + "nameLocation": "14552:5:19", + "nodeType": "VariableDeclaration", + "scope": 3168, + "src": "14544:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3153, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14544:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3163, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3156, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3142, + "src": "14568:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3157, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14572:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "14568:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 3160, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3144, + "src": "14588:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14580:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3158, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14580:7:19", + "typeDescriptions": {} + } + }, + "id": 3161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14580:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3155, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "14561:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14561:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14529:64:19" + }, + { + "expression": { + "components": [ + { + "id": 3164, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3152, + "src": "14611:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 3165, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3154, + "src": "14620:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 3166, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14610:16:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "functionReturnParameters": 3150, + "id": 3167, + "nodeType": "Return", + "src": "14603:23:19" + } + ] + }, + "documentation": { + "id": 3139, + "nodeType": "StructuredDocumentation", + "src": "14287:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 3169, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "14431:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3142, + "mutability": "mutable", + "name": "map", + "nameLocation": "14463:3:19", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "14438:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3141, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3140, + "name": "UintToBytes32Map", + "nameLocations": [ + "14438:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "14438:16:19" + }, + "referencedDeclaration": 3026, + "src": "14438:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3144, + "mutability": "mutable", + "name": "key", + "nameLocation": "14476:3:19", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "14468:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14468:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14437:43:19" + }, + "returnParameters": { + "id": 3150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3147, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "14504:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3146, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14504:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3149, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "14510:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3148, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14510:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14503:15:19" + }, + "scope": 4379, + "src": "14422:211:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3189, + "nodeType": "Block", + "src": "14872:53:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3181, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3173, + "src": "14893:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14897:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "14893:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "id": 3185, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3175, + "src": "14913:3:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14905:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3183, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14905:7:19", + "typeDescriptions": {} + } + }, + "id": 3186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14905:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3180, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "14889:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 3187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14889:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3179, + "id": 3188, + "nodeType": "Return", + "src": "14882:36:19" + } + ] + }, + "documentation": { + "id": 3170, + "nodeType": "StructuredDocumentation", + "src": "14639:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 3190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "14793:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3173, + "mutability": "mutable", + "name": "map", + "nameLocation": "14822:3:19", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "14797:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3172, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3171, + "name": "UintToBytes32Map", + "nameLocations": [ + "14797:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "14797:16:19" + }, + "referencedDeclaration": 3026, + "src": "14797:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3175, + "mutability": "mutable", + "name": "key", + "nameLocation": "14835:3:19", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "14827:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3174, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14827:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14796:43:19" + }, + "returnParameters": { + "id": 3179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3178, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "14863:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3177, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14863:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14862:9:19" + }, + "scope": 4379, + "src": "14784:141:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3219, + "nodeType": "Block", + "src": "15560:216:19", + "statements": [ + { + "assignments": [ + 3204 + ], + "declarations": [ + { + "constant": false, + "id": 3204, + "mutability": "mutable", + "name": "store", + "nameLocation": "15587:5:19", + "nodeType": "VariableDeclaration", + "scope": 3219, + "src": "15570:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3202, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15570:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3203, + "nodeType": "ArrayTypeName", + "src": "15570:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3209, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3206, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3194, + "src": "15600:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map storage pointer" + } + }, + "id": 3207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15604:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3025, + "src": "15600:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3205, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "15595:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15595:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15570:41:19" + }, + { + "assignments": [ + 3214 + ], + "declarations": [ + { + "constant": false, + "id": 3214, + "mutability": "mutable", + "name": "result", + "nameLocation": "15638:6:19", + "nodeType": "VariableDeclaration", + "scope": 3219, + "src": "15621:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15621:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3213, + "nodeType": "ArrayTypeName", + "src": "15621:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 3215, + "nodeType": "VariableDeclarationStatement", + "src": "15621:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "15707:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15721:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "15731:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "15721:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 3214, + "isOffset": false, + "isSlot": false, + "src": "15721:6:19", + "valueSize": 1 + }, + { + "declaration": 3204, + "isOffset": false, + "isSlot": false, + "src": "15731:5:19", + "valueSize": 1 + } + ], + "id": 3216, + "nodeType": "InlineAssembly", + "src": "15698:48:19" + }, + { + "expression": { + "id": 3217, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3214, + "src": "15763:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 3199, + "id": 3218, + "nodeType": "Return", + "src": "15756:13:19" + } + ] + }, + "documentation": { + "id": 3191, + "nodeType": "StructuredDocumentation", + "src": "14931:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3220, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "15484:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3194, + "mutability": "mutable", + "name": "map", + "nameLocation": "15514:3:19", + "nodeType": "VariableDeclaration", + "scope": 3220, + "src": "15489:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + }, + "typeName": { + "id": 3193, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3192, + "name": "UintToBytes32Map", + "nameLocations": [ + "15489:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3026, + "src": "15489:16:19" + }, + "referencedDeclaration": 3026, + "src": "15489:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToBytes32Map_$3026_storage_ptr", + "typeString": "struct EnumerableMap.UintToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "src": "15488:30:19" + }, + "returnParameters": { + "id": 3199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3198, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3220, + "src": "15542:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3196, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15542:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3197, + "nodeType": "ArrayTypeName", + "src": "15542:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "15541:18:19" + }, + "scope": 4379, + "src": "15475:301:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.AddressToUintMap", + "id": 3224, + "members": [ + { + "constant": false, + "id": 3223, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "15861:6:19", + "nodeType": "VariableDeclaration", + "scope": 3224, + "src": "15841:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 3222, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3221, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "15841:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "15841:19:19" + }, + "referencedDeclaration": 2368, + "src": "15841:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "AddressToUintMap", + "nameLocation": "15814:16:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "15807:67:19", + "visibility": "public" + }, + { + "body": { + "id": 3256, + "nodeType": "Block", + "src": "16196:87:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3238, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3228, + "src": "16217:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3239, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16221:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "16217:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3246, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3230, + "src": "16253:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16245:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3244, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "16245:7:19", + "typeDescriptions": {} + } + }, + "id": 3247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16245:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16237:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16237:7:19", + "typeDescriptions": {} + } + }, + "id": 3248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16237:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16229:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3240, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16229:7:19", + "typeDescriptions": {} + } + }, + "id": 3249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16229:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 3252, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3232, + "src": "16269:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16261:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16261:7:19", + "typeDescriptions": {} + } + }, + "id": 3253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16261:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3237, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "16213:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 3254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16213:63:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3236, + "id": 3255, + "nodeType": "Return", + "src": "16206:70:19" + } + ] + }, + "documentation": { + "id": 3225, + "nodeType": "StructuredDocumentation", + "src": "15880:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 3257, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "16110:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3233, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3228, + "mutability": "mutable", + "name": "map", + "nameLocation": "16139:3:19", + "nodeType": "VariableDeclaration", + "scope": 3257, + "src": "16114:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3227, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3226, + "name": "AddressToUintMap", + "nameLocations": [ + "16114:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "16114:16:19" + }, + "referencedDeclaration": 3224, + "src": "16114:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3230, + "mutability": "mutable", + "name": "key", + "nameLocation": "16152:3:19", + "nodeType": "VariableDeclaration", + "scope": 3257, + "src": "16144:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3229, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16144:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3232, + "mutability": "mutable", + "name": "value", + "nameLocation": "16165:5:19", + "nodeType": "VariableDeclaration", + "scope": 3257, + "src": "16157:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3231, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16157:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16113:58:19" + }, + "returnParameters": { + "id": 3236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3235, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3257, + "src": "16190:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3234, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16190:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16189:6:19" + }, + "scope": 4379, + "src": "16101:182:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3283, + "nodeType": "Block", + "src": "16525:74:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3269, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3261, + "src": "16549:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3270, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16553:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "16549:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3277, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3263, + "src": "16585:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16577:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3275, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "16577:7:19", + "typeDescriptions": {} + } + }, + "id": 3278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16577:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16569:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3273, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16569:7:19", + "typeDescriptions": {} + } + }, + "id": 3279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16569:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16561:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3271, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16561:7:19", + "typeDescriptions": {} + } + }, + "id": 3280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16561:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3268, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "16542:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16542:50:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3267, + "id": 3282, + "nodeType": "Return", + "src": "16535:57:19" + } + ] + }, + "documentation": { + "id": 3258, + "nodeType": "StructuredDocumentation", + "src": "16289:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 3284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "16451:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3261, + "mutability": "mutable", + "name": "map", + "nameLocation": "16483:3:19", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "16458:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3260, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3259, + "name": "AddressToUintMap", + "nameLocations": [ + "16458:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "16458:16:19" + }, + "referencedDeclaration": 3224, + "src": "16458:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3263, + "mutability": "mutable", + "name": "key", + "nameLocation": "16496:3:19", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "16488:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16488:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16457:43:19" + }, + "returnParameters": { + "id": 3267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3266, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "16519:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16519:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16518:6:19" + }, + "scope": 4379, + "src": "16442:157:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3310, + "nodeType": "Block", + "src": "16768:76:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3296, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3288, + "src": "16794:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16798:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "16794:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3304, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3290, + "src": "16830:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16822:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3302, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "16822:7:19", + "typeDescriptions": {} + } + }, + "id": 3305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16822:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16814:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16814:7:19", + "typeDescriptions": {} + } + }, + "id": 3306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16814:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16806:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16806:7:19", + "typeDescriptions": {} + } + }, + "id": 3307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16806:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3295, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "16785:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16785:52:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3294, + "id": 3309, + "nodeType": "Return", + "src": "16778:59:19" + } + ] + }, + "documentation": { + "id": 3285, + "nodeType": "StructuredDocumentation", + "src": "16605:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 3311, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "16687:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3288, + "mutability": "mutable", + "name": "map", + "nameLocation": "16721:3:19", + "nodeType": "VariableDeclaration", + "scope": 3311, + "src": "16696:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3287, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3286, + "name": "AddressToUintMap", + "nameLocations": [ + "16696:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "16696:16:19" + }, + "referencedDeclaration": 3224, + "src": "16696:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3290, + "mutability": "mutable", + "name": "key", + "nameLocation": "16734:3:19", + "nodeType": "VariableDeclaration", + "scope": 3311, + "src": "16726:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16726:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16695:43:19" + }, + "returnParameters": { + "id": 3294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3293, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3311, + "src": "16762:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3292, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16762:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16761:6:19" + }, + "scope": 4379, + "src": "16678:166:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3325, + "nodeType": "Block", + "src": "17005:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3321, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3315, + "src": "17029:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3322, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17033:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "17029:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3320, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "17022:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 3323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17022:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3319, + "id": 3324, + "nodeType": "Return", + "src": "17015:25:19" + } + ] + }, + "documentation": { + "id": 3312, + "nodeType": "StructuredDocumentation", + "src": "16850:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 3326, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "16936:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3315, + "mutability": "mutable", + "name": "map", + "nameLocation": "16968:3:19", + "nodeType": "VariableDeclaration", + "scope": 3326, + "src": "16943:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3314, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3313, + "name": "AddressToUintMap", + "nameLocations": [ + "16943:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "16943:16:19" + }, + "referencedDeclaration": 3224, + "src": "16943:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + } + ], + "src": "16942:30:19" + }, + "returnParameters": { + "id": 3319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3318, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3326, + "src": "16996:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16996:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16995:9:19" + }, + "scope": 4379, + "src": "16927:120:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3365, + "nodeType": "Block", + "src": "17482:134:19", + "statements": [ + { + "assignments": [ + 3340, + 3342 + ], + "declarations": [ + { + "constant": false, + "id": 3340, + "mutability": "mutable", + "name": "key", + "nameLocation": "17501:3:19", + "nodeType": "VariableDeclaration", + "scope": 3365, + "src": "17493:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3339, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17493:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3342, + "mutability": "mutable", + "name": "value", + "nameLocation": "17514:5:19", + "nodeType": "VariableDeclaration", + "scope": 3365, + "src": "17506:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3341, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17506:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3348, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3344, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3330, + "src": "17526:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17530:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "17526:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 3346, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3332, + "src": "17538:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3343, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "17523:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17523:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17492:52:19" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3355, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3340, + "src": "17586:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17578:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17578:7:19", + "typeDescriptions": {} + } + }, + "id": 3356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17578:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17570:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3351, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "17570:7:19", + "typeDescriptions": {} + } + }, + "id": 3357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17570:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17562:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17562:7:19", + "typeDescriptions": {} + } + }, + "id": 3358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17562:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 3361, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3342, + "src": "17602:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17594:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17594:7:19", + "typeDescriptions": {} + } + }, + "id": 3362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17594:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3363, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17561:48:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "functionReturnParameters": 3338, + "id": 3364, + "nodeType": "Return", + "src": "17554:55:19" + } + ] + }, + "documentation": { + "id": 3327, + "nodeType": "StructuredDocumentation", + "src": "17053:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3366, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "17393:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3330, + "mutability": "mutable", + "name": "map", + "nameLocation": "17421:3:19", + "nodeType": "VariableDeclaration", + "scope": 3366, + "src": "17396:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3329, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3328, + "name": "AddressToUintMap", + "nameLocations": [ + "17396:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "17396:16:19" + }, + "referencedDeclaration": 3224, + "src": "17396:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3332, + "mutability": "mutable", + "name": "index", + "nameLocation": "17434:5:19", + "nodeType": "VariableDeclaration", + "scope": 3366, + "src": "17426:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17426:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17395:45:19" + }, + "returnParameters": { + "id": 3338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3335, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3366, + "src": "17464:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17464:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3337, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3366, + "src": "17473:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17473:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17463:18:19" + }, + "scope": 4379, + "src": "17384:232:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3405, + "nodeType": "Block", + "src": "17854:141:19", + "statements": [ + { + "assignments": [ + 3380, + 3382 + ], + "declarations": [ + { + "constant": false, + "id": 3380, + "mutability": "mutable", + "name": "success", + "nameLocation": "17870:7:19", + "nodeType": "VariableDeclaration", + "scope": 3405, + "src": "17865:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3379, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17865:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3382, + "mutability": "mutable", + "name": "value", + "nameLocation": "17887:5:19", + "nodeType": "VariableDeclaration", + "scope": 3405, + "src": "17879:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17879:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3397, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3384, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3370, + "src": "17903:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3385, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17907:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "17903:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3392, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3372, + "src": "17939:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17931:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3390, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "17931:7:19", + "typeDescriptions": {} + } + }, + "id": 3393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17931:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17923:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3388, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17923:7:19", + "typeDescriptions": {} + } + }, + "id": 3394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17923:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17915:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17915:7:19", + "typeDescriptions": {} + } + }, + "id": 3395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17915:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3383, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "17896:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17896:50:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17864:82:19" + }, + { + "expression": { + "components": [ + { + "id": 3398, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3380, + "src": "17964:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "id": 3401, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3382, + "src": "17981:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17973:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17973:7:19", + "typeDescriptions": {} + } + }, + "id": 3402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17973:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3403, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "17963:25:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 3378, + "id": 3404, + "nodeType": "Return", + "src": "17956:32:19" + } + ] + }, + "documentation": { + "id": 3367, + "nodeType": "StructuredDocumentation", + "src": "17622:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 3406, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "17766:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3370, + "mutability": "mutable", + "name": "map", + "nameLocation": "17798:3:19", + "nodeType": "VariableDeclaration", + "scope": 3406, + "src": "17773:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3369, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3368, + "name": "AddressToUintMap", + "nameLocations": [ + "17773:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "17773:16:19" + }, + "referencedDeclaration": 3224, + "src": "17773:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3372, + "mutability": "mutable", + "name": "key", + "nameLocation": "17811:3:19", + "nodeType": "VariableDeclaration", + "scope": 3406, + "src": "17803:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17803:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17772:43:19" + }, + "returnParameters": { + "id": 3378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3375, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3406, + "src": "17839:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3374, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17839:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3377, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3406, + "src": "17845:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17845:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17838:15:19" + }, + "scope": 4379, + "src": "17757:238:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3435, + "nodeType": "Block", + "src": "18234:80:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 3420, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3410, + "src": "18263:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18267:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "18263:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3428, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3412, + "src": "18299:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18291:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3426, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "18291:7:19", + "typeDescriptions": {} + } + }, + "id": 3429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18291:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18283:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18283:7:19", + "typeDescriptions": {} + } + }, + "id": 3430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18283:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18275:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18275:7:19", + "typeDescriptions": {} + } + }, + "id": 3431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18275:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3419, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "18259:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 3432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18259:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18251:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18251:7:19", + "typeDescriptions": {} + } + }, + "id": 3433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18251:56:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3416, + "id": 3434, + "nodeType": "Return", + "src": "18244:63:19" + } + ] + }, + "documentation": { + "id": 3407, + "nodeType": "StructuredDocumentation", + "src": "18001:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 3436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "18155:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3410, + "mutability": "mutable", + "name": "map", + "nameLocation": "18184:3:19", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "18159:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3409, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3408, + "name": "AddressToUintMap", + "nameLocations": [ + "18159:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "18159:16:19" + }, + "referencedDeclaration": 3224, + "src": "18159:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3412, + "mutability": "mutable", + "name": "key", + "nameLocation": "18197:3:19", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "18189:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18189:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "18158:43:19" + }, + "returnParameters": { + "id": 3416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3415, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "18225:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18225:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18224:9:19" + }, + "scope": 4379, + "src": "18146:168:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3465, + "nodeType": "Block", + "src": "18949:216:19", + "statements": [ + { + "assignments": [ + 3450 + ], + "declarations": [ + { + "constant": false, + "id": 3450, + "mutability": "mutable", + "name": "store", + "nameLocation": "18976:5:19", + "nodeType": "VariableDeclaration", + "scope": 3465, + "src": "18959:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3448, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18959:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3449, + "nodeType": "ArrayTypeName", + "src": "18959:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3455, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3452, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3440, + "src": "18989:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap storage pointer" + } + }, + "id": 3453, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18993:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3223, + "src": "18989:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3451, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "18984:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18984:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18959:41:19" + }, + { + "assignments": [ + 3460 + ], + "declarations": [ + { + "constant": false, + "id": 3460, + "mutability": "mutable", + "name": "result", + "nameLocation": "19027:6:19", + "nodeType": "VariableDeclaration", + "scope": 3465, + "src": "19010:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19010:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3459, + "nodeType": "ArrayTypeName", + "src": "19010:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 3461, + "nodeType": "VariableDeclarationStatement", + "src": "19010:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "19096:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19110:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "19120:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "19110:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 3460, + "isOffset": false, + "isSlot": false, + "src": "19110:6:19", + "valueSize": 1 + }, + { + "declaration": 3450, + "isOffset": false, + "isSlot": false, + "src": "19120:5:19", + "valueSize": 1 + } + ], + "id": 3462, + "nodeType": "InlineAssembly", + "src": "19087:48:19" + }, + { + "expression": { + "id": 3463, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3460, + "src": "19152:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 3445, + "id": 3464, + "nodeType": "Return", + "src": "19145:13:19" + } + ] + }, + "documentation": { + "id": 3437, + "nodeType": "StructuredDocumentation", + "src": "18320:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3466, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "18873:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3440, + "mutability": "mutable", + "name": "map", + "nameLocation": "18903:3:19", + "nodeType": "VariableDeclaration", + "scope": 3466, + "src": "18878:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + }, + "typeName": { + "id": 3439, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3438, + "name": "AddressToUintMap", + "nameLocations": [ + "18878:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3224, + "src": "18878:16:19" + }, + "referencedDeclaration": 3224, + "src": "18878:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToUintMap_$3224_storage_ptr", + "typeString": "struct EnumerableMap.AddressToUintMap" + } + }, + "visibility": "internal" + } + ], + "src": "18877:30:19" + }, + "returnParameters": { + "id": 3445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3444, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3466, + "src": "18931:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18931:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3443, + "nodeType": "ArrayTypeName", + "src": "18931:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "18930:18:19" + }, + "scope": 4379, + "src": "18864:301:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.AddressToAddressMap", + "id": 3470, + "members": [ + { + "constant": false, + "id": 3469, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "19256:6:19", + "nodeType": "VariableDeclaration", + "scope": 3470, + "src": "19236:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 3468, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3467, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "19236:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "19236:19:19" + }, + "referencedDeclaration": 2368, + "src": "19236:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "AddressToAddressMap", + "nameLocation": "19206:19:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "19199:70:19", + "visibility": "public" + }, + { + "body": { + "id": 3508, + "nodeType": "Block", + "src": "19594:105:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3484, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3474, + "src": "19615:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3485, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19619:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "19615:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3492, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3476, + "src": "19651:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19643:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3490, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "19643:7:19", + "typeDescriptions": {} + } + }, + "id": 3493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19643:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19635:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19635:7:19", + "typeDescriptions": {} + } + }, + "id": 3494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19635:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19627:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3486, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19627:7:19", + "typeDescriptions": {} + } + }, + "id": 3495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19627:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3502, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3478, + "src": "19683:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19675:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3500, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "19675:7:19", + "typeDescriptions": {} + } + }, + "id": 3503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19675:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19667:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19667:7:19", + "typeDescriptions": {} + } + }, + "id": 3504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19667:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19659:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3496, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19659:7:19", + "typeDescriptions": {} + } + }, + "id": 3505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19659:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3483, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "19611:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 3506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19611:81:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3482, + "id": 3507, + "nodeType": "Return", + "src": "19604:88:19" + } + ] + }, + "documentation": { + "id": 3471, + "nodeType": "StructuredDocumentation", + "src": "19275:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 3509, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "19505:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3474, + "mutability": "mutable", + "name": "map", + "nameLocation": "19537:3:19", + "nodeType": "VariableDeclaration", + "scope": 3509, + "src": "19509:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3473, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3472, + "name": "AddressToAddressMap", + "nameLocations": [ + "19509:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "19509:19:19" + }, + "referencedDeclaration": 3470, + "src": "19509:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3476, + "mutability": "mutable", + "name": "key", + "nameLocation": "19550:3:19", + "nodeType": "VariableDeclaration", + "scope": 3509, + "src": "19542:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19542:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3478, + "mutability": "mutable", + "name": "value", + "nameLocation": "19563:5:19", + "nodeType": "VariableDeclaration", + "scope": 3509, + "src": "19555:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19555:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "19508:61:19" + }, + "returnParameters": { + "id": 3482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3481, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3509, + "src": "19588:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3480, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19588:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19587:6:19" + }, + "scope": 4379, + "src": "19496:203:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3535, + "nodeType": "Block", + "src": "19944:74:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3521, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3513, + "src": "19968:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3522, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19972:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "19968:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3529, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3515, + "src": "20004:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19996:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3527, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "19996:7:19", + "typeDescriptions": {} + } + }, + "id": 3530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19996:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19988:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19988:7:19", + "typeDescriptions": {} + } + }, + "id": 3531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19988:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19980:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3523, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19980:7:19", + "typeDescriptions": {} + } + }, + "id": 3532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19980:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3520, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "19961:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 3533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19961:50:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3519, + "id": 3534, + "nodeType": "Return", + "src": "19954:57:19" + } + ] + }, + "documentation": { + "id": 3510, + "nodeType": "StructuredDocumentation", + "src": "19705:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 3536, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "19867:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3513, + "mutability": "mutable", + "name": "map", + "nameLocation": "19902:3:19", + "nodeType": "VariableDeclaration", + "scope": 3536, + "src": "19874:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3512, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3511, + "name": "AddressToAddressMap", + "nameLocations": [ + "19874:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "19874:19:19" + }, + "referencedDeclaration": 3470, + "src": "19874:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3515, + "mutability": "mutable", + "name": "key", + "nameLocation": "19915:3:19", + "nodeType": "VariableDeclaration", + "scope": 3536, + "src": "19907:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19907:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "19873:46:19" + }, + "returnParameters": { + "id": 3519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3518, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3536, + "src": "19938:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3517, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19938:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19937:6:19" + }, + "scope": 4379, + "src": "19858:160:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3562, + "nodeType": "Block", + "src": "20190:76:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3548, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3540, + "src": "20216:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20220:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "20216:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3556, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3542, + "src": "20252:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20244:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3554, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "20244:7:19", + "typeDescriptions": {} + } + }, + "id": 3557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20244:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20236:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20236:7:19", + "typeDescriptions": {} + } + }, + "id": 3558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20236:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20228:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3550, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20228:7:19", + "typeDescriptions": {} + } + }, + "id": 3559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20228:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3547, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "20207:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20207:52:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3546, + "id": 3561, + "nodeType": "Return", + "src": "20200:59:19" + } + ] + }, + "documentation": { + "id": 3537, + "nodeType": "StructuredDocumentation", + "src": "20024:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 3563, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "20106:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3540, + "mutability": "mutable", + "name": "map", + "nameLocation": "20143:3:19", + "nodeType": "VariableDeclaration", + "scope": 3563, + "src": "20115:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3539, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3538, + "name": "AddressToAddressMap", + "nameLocations": [ + "20115:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "20115:19:19" + }, + "referencedDeclaration": 3470, + "src": "20115:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3542, + "mutability": "mutable", + "name": "key", + "nameLocation": "20156:3:19", + "nodeType": "VariableDeclaration", + "scope": 3563, + "src": "20148:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3541, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20148:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "20114:46:19" + }, + "returnParameters": { + "id": 3546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3545, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3563, + "src": "20184:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3544, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "20184:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "20183:6:19" + }, + "scope": 4379, + "src": "20097:169:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3577, + "nodeType": "Block", + "src": "20430:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3573, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "20454:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20458:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "20454:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3572, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "20447:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 3575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20447:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3571, + "id": 3576, + "nodeType": "Return", + "src": "20440:25:19" + } + ] + }, + "documentation": { + "id": 3564, + "nodeType": "StructuredDocumentation", + "src": "20272:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 3578, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "20358:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3567, + "mutability": "mutable", + "name": "map", + "nameLocation": "20393:3:19", + "nodeType": "VariableDeclaration", + "scope": 3578, + "src": "20365:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3566, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3565, + "name": "AddressToAddressMap", + "nameLocations": [ + "20365:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "20365:19:19" + }, + "referencedDeclaration": 3470, + "src": "20365:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + } + ], + "src": "20364:33:19" + }, + "returnParameters": { + "id": 3571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3570, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3578, + "src": "20421:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20421:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20420:9:19" + }, + "scope": 4379, + "src": "20349:123:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3623, + "nodeType": "Block", + "src": "20910:152:19", + "statements": [ + { + "assignments": [ + 3592, + 3594 + ], + "declarations": [ + { + "constant": false, + "id": 3592, + "mutability": "mutable", + "name": "key", + "nameLocation": "20929:3:19", + "nodeType": "VariableDeclaration", + "scope": 3623, + "src": "20921:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3591, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20921:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3594, + "mutability": "mutable", + "name": "value", + "nameLocation": "20942:5:19", + "nodeType": "VariableDeclaration", + "scope": 3623, + "src": "20934:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3593, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20934:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3600, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3596, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3582, + "src": "20954:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3597, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20958:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "20954:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 3598, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3584, + "src": "20966:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3595, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "20951:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 3599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20951:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20920:52:19" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3607, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3592, + "src": "21014:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21006:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21006:7:19", + "typeDescriptions": {} + } + }, + "id": 3608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21006:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20998:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3603, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "20998:7:19", + "typeDescriptions": {} + } + }, + "id": 3609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20998:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20990:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20990:7:19", + "typeDescriptions": {} + } + }, + "id": 3610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20990:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3594, + "src": "21046:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21038:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21038:7:19", + "typeDescriptions": {} + } + }, + "id": 3618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21038:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21030:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3613, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "21030:7:19", + "typeDescriptions": {} + } + }, + "id": 3619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21030:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21022:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3611, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21022:7:19", + "typeDescriptions": {} + } + }, + "id": 3620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21022:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 3621, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20989:66:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$", + "typeString": "tuple(address,address)" + } + }, + "functionReturnParameters": 3590, + "id": 3622, + "nodeType": "Return", + "src": "20982:73:19" + } + ] + }, + "documentation": { + "id": 3579, + "nodeType": "StructuredDocumentation", + "src": "20478:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3624, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "20818:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3582, + "mutability": "mutable", + "name": "map", + "nameLocation": "20849:3:19", + "nodeType": "VariableDeclaration", + "scope": 3624, + "src": "20821:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3581, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3580, + "name": "AddressToAddressMap", + "nameLocations": [ + "20821:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "20821:19:19" + }, + "referencedDeclaration": 3470, + "src": "20821:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3584, + "mutability": "mutable", + "name": "index", + "nameLocation": "20862:5:19", + "nodeType": "VariableDeclaration", + "scope": 3624, + "src": "20854:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20854:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20820:48:19" + }, + "returnParameters": { + "id": 3590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3587, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3624, + "src": "20892:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3586, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20892:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3589, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3624, + "src": "20901:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20901:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "20891:18:19" + }, + "scope": 4379, + "src": "20809:253:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3669, + "nodeType": "Block", + "src": "21303:159:19", + "statements": [ + { + "assignments": [ + 3638, + 3640 + ], + "declarations": [ + { + "constant": false, + "id": 3638, + "mutability": "mutable", + "name": "success", + "nameLocation": "21319:7:19", + "nodeType": "VariableDeclaration", + "scope": 3669, + "src": "21314:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3637, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21314:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3640, + "mutability": "mutable", + "name": "value", + "nameLocation": "21336:5:19", + "nodeType": "VariableDeclaration", + "scope": 3669, + "src": "21328:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3639, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21328:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3655, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3642, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3628, + "src": "21352:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21356:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "21352:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3650, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3630, + "src": "21388:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21380:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3648, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "21380:7:19", + "typeDescriptions": {} + } + }, + "id": 3651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21380:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21372:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3646, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21372:7:19", + "typeDescriptions": {} + } + }, + "id": 3652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21372:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21364:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3644, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21364:7:19", + "typeDescriptions": {} + } + }, + "id": 3653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21364:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3641, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "21345:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 3654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21345:50:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21313:82:19" + }, + { + "expression": { + "components": [ + { + "id": 3656, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3638, + "src": "21413:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3663, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3640, + "src": "21446:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21438:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21438:7:19", + "typeDescriptions": {} + } + }, + "id": 3664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21438:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21430:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3659, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "21430:7:19", + "typeDescriptions": {} + } + }, + "id": 3665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21430:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21422:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3657, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21422:7:19", + "typeDescriptions": {} + } + }, + "id": 3666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21422:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 3667, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21412:43:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3636, + "id": 3668, + "nodeType": "Return", + "src": "21405:50:19" + } + ] + }, + "documentation": { + "id": 3625, + "nodeType": "StructuredDocumentation", + "src": "21068:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 3670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "21212:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3628, + "mutability": "mutable", + "name": "map", + "nameLocation": "21247:3:19", + "nodeType": "VariableDeclaration", + "scope": 3670, + "src": "21219:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3627, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3626, + "name": "AddressToAddressMap", + "nameLocations": [ + "21219:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "21219:19:19" + }, + "referencedDeclaration": 3470, + "src": "21219:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3630, + "mutability": "mutable", + "name": "key", + "nameLocation": "21260:3:19", + "nodeType": "VariableDeclaration", + "scope": 3670, + "src": "21252:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3629, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21252:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21218:46:19" + }, + "returnParameters": { + "id": 3636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3633, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3670, + "src": "21288:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3632, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21288:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3635, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3670, + "src": "21294:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21294:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21287:15:19" + }, + "scope": 4379, + "src": "21203:259:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3705, + "nodeType": "Block", + "src": "21704:98:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 3688, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3674, + "src": "21749:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3689, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21753:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "21749:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3696, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3676, + "src": "21785:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21777:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3694, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "21777:7:19", + "typeDescriptions": {} + } + }, + "id": 3697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21777:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21769:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3692, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21769:7:19", + "typeDescriptions": {} + } + }, + "id": 3698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21769:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21761:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3690, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21761:7:19", + "typeDescriptions": {} + } + }, + "id": 3699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21761:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3687, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "21745:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 3700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21745:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21737:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21737:7:19", + "typeDescriptions": {} + } + }, + "id": 3701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21737:56:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21729:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3683, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "21729:7:19", + "typeDescriptions": {} + } + }, + "id": 3702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21729:65:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21721:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21721:7:19", + "typeDescriptions": {} + } + }, + "id": 3703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21721:74:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3680, + "id": 3704, + "nodeType": "Return", + "src": "21714:81:19" + } + ] + }, + "documentation": { + "id": 3671, + "nodeType": "StructuredDocumentation", + "src": "21468:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 3706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "21622:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3674, + "mutability": "mutable", + "name": "map", + "nameLocation": "21654:3:19", + "nodeType": "VariableDeclaration", + "scope": 3706, + "src": "21626:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3673, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3672, + "name": "AddressToAddressMap", + "nameLocations": [ + "21626:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "21626:19:19" + }, + "referencedDeclaration": 3470, + "src": "21626:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3676, + "mutability": "mutable", + "name": "key", + "nameLocation": "21667:3:19", + "nodeType": "VariableDeclaration", + "scope": 3706, + "src": "21659:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21659:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21625:46:19" + }, + "returnParameters": { + "id": 3680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3679, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3706, + "src": "21695:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3678, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21695:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21694:9:19" + }, + "scope": 4379, + "src": "21613:189:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3735, + "nodeType": "Block", + "src": "22440:216:19", + "statements": [ + { + "assignments": [ + 3720 + ], + "declarations": [ + { + "constant": false, + "id": 3720, + "mutability": "mutable", + "name": "store", + "nameLocation": "22467:5:19", + "nodeType": "VariableDeclaration", + "scope": 3735, + "src": "22450:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3718, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22450:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3719, + "nodeType": "ArrayTypeName", + "src": "22450:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3725, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3722, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3710, + "src": "22480:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap storage pointer" + } + }, + "id": 3723, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22484:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3469, + "src": "22480:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3721, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "22475:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22475:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22450:41:19" + }, + { + "assignments": [ + 3730 + ], + "declarations": [ + { + "constant": false, + "id": 3730, + "mutability": "mutable", + "name": "result", + "nameLocation": "22518:6:19", + "nodeType": "VariableDeclaration", + "scope": 3735, + "src": "22501:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3728, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22501:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3729, + "nodeType": "ArrayTypeName", + "src": "22501:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 3731, + "nodeType": "VariableDeclarationStatement", + "src": "22501:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "22587:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22601:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "22611:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "22601:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 3730, + "isOffset": false, + "isSlot": false, + "src": "22601:6:19", + "valueSize": 1 + }, + { + "declaration": 3720, + "isOffset": false, + "isSlot": false, + "src": "22611:5:19", + "valueSize": 1 + } + ], + "id": 3732, + "nodeType": "InlineAssembly", + "src": "22578:48:19" + }, + { + "expression": { + "id": 3733, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3730, + "src": "22643:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 3715, + "id": 3734, + "nodeType": "Return", + "src": "22636:13:19" + } + ] + }, + "documentation": { + "id": 3707, + "nodeType": "StructuredDocumentation", + "src": "21808:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3736, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "22361:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3710, + "mutability": "mutable", + "name": "map", + "nameLocation": "22394:3:19", + "nodeType": "VariableDeclaration", + "scope": 3736, + "src": "22366:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + }, + "typeName": { + "id": 3709, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3708, + "name": "AddressToAddressMap", + "nameLocations": [ + "22366:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3470, + "src": "22366:19:19" + }, + "referencedDeclaration": 3470, + "src": "22366:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToAddressMap_$3470_storage_ptr", + "typeString": "struct EnumerableMap.AddressToAddressMap" + } + }, + "visibility": "internal" + } + ], + "src": "22365:33:19" + }, + "returnParameters": { + "id": 3715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3714, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3736, + "src": "22422:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22422:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3713, + "nodeType": "ArrayTypeName", + "src": "22422:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "22421:18:19" + }, + "scope": 4379, + "src": "22352:304:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.AddressToBytes32Map", + "id": 3740, + "members": [ + { + "constant": false, + "id": 3739, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "22747:6:19", + "nodeType": "VariableDeclaration", + "scope": 3740, + "src": "22727:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 3738, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3737, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "22727:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "22727:19:19" + }, + "referencedDeclaration": 2368, + "src": "22727:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "AddressToBytes32Map", + "nameLocation": "22697:19:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "22690:70:19", + "visibility": "public" + }, + { + "body": { + "id": 3769, + "nodeType": "Block", + "src": "23085:78:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3754, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3744, + "src": "23106:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23110:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "23106:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3762, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3746, + "src": "23142:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23134:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3760, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "23134:7:19", + "typeDescriptions": {} + } + }, + "id": 3763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23134:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23126:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23126:7:19", + "typeDescriptions": {} + } + }, + "id": 3764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23126:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23118:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3756, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23118:7:19", + "typeDescriptions": {} + } + }, + "id": 3765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23118:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3766, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3748, + "src": "23150:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3753, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "23102:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23102:54:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3752, + "id": 3768, + "nodeType": "Return", + "src": "23095:61:19" + } + ] + }, + "documentation": { + "id": 3741, + "nodeType": "StructuredDocumentation", + "src": "22766:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 3770, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "22996:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3744, + "mutability": "mutable", + "name": "map", + "nameLocation": "23028:3:19", + "nodeType": "VariableDeclaration", + "scope": 3770, + "src": "23000:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3743, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3742, + "name": "AddressToBytes32Map", + "nameLocations": [ + "23000:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "23000:19:19" + }, + "referencedDeclaration": 3740, + "src": "23000:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3746, + "mutability": "mutable", + "name": "key", + "nameLocation": "23041:3:19", + "nodeType": "VariableDeclaration", + "scope": 3770, + "src": "23033:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3745, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23033:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3748, + "mutability": "mutable", + "name": "value", + "nameLocation": "23054:5:19", + "nodeType": "VariableDeclaration", + "scope": 3770, + "src": "23046:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3747, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23046:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "22999:61:19" + }, + "returnParameters": { + "id": 3752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3751, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3770, + "src": "23079:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3750, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23079:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "23078:6:19" + }, + "scope": 4379, + "src": "22987:176:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3796, + "nodeType": "Block", + "src": "23408:74:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3782, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3774, + "src": "23432:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3783, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23436:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "23432:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3790, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3776, + "src": "23468:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23460:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3788, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "23460:7:19", + "typeDescriptions": {} + } + }, + "id": 3791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23460:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23452:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23452:7:19", + "typeDescriptions": {} + } + }, + "id": 3792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23452:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23444:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3784, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23444:7:19", + "typeDescriptions": {} + } + }, + "id": 3793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23444:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3781, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "23425:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 3794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23425:50:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3780, + "id": 3795, + "nodeType": "Return", + "src": "23418:57:19" + } + ] + }, + "documentation": { + "id": 3771, + "nodeType": "StructuredDocumentation", + "src": "23169:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 3797, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "23331:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3777, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3774, + "mutability": "mutable", + "name": "map", + "nameLocation": "23366:3:19", + "nodeType": "VariableDeclaration", + "scope": 3797, + "src": "23338:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3773, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3772, + "name": "AddressToBytes32Map", + "nameLocations": [ + "23338:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "23338:19:19" + }, + "referencedDeclaration": 3740, + "src": "23338:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3776, + "mutability": "mutable", + "name": "key", + "nameLocation": "23379:3:19", + "nodeType": "VariableDeclaration", + "scope": 3797, + "src": "23371:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3775, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23371:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23337:46:19" + }, + "returnParameters": { + "id": 3780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3779, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3797, + "src": "23402:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3778, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23402:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "23401:6:19" + }, + "scope": 4379, + "src": "23322:160:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3823, + "nodeType": "Block", + "src": "23654:76:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3809, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3801, + "src": "23680:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3810, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23684:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "23680:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3817, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3803, + "src": "23716:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23708:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3815, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "23708:7:19", + "typeDescriptions": {} + } + }, + "id": 3818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23708:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23700:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3813, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23700:7:19", + "typeDescriptions": {} + } + }, + "id": 3819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23700:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23692:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3811, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23692:7:19", + "typeDescriptions": {} + } + }, + "id": 3820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23692:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3808, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "23671:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23671:52:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3807, + "id": 3822, + "nodeType": "Return", + "src": "23664:59:19" + } + ] + }, + "documentation": { + "id": 3798, + "nodeType": "StructuredDocumentation", + "src": "23488:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 3824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "23570:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3801, + "mutability": "mutable", + "name": "map", + "nameLocation": "23607:3:19", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "23579:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3800, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3799, + "name": "AddressToBytes32Map", + "nameLocations": [ + "23579:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "23579:19:19" + }, + "referencedDeclaration": 3740, + "src": "23579:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3803, + "mutability": "mutable", + "name": "key", + "nameLocation": "23620:3:19", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "23612:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23612:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23578:46:19" + }, + "returnParameters": { + "id": 3807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3806, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "23648:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3805, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23648:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "23647:6:19" + }, + "scope": 4379, + "src": "23561:169:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3838, + "nodeType": "Block", + "src": "23894:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3834, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3828, + "src": "23918:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3835, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23922:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "23918:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3833, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "23911:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 3836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23911:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3832, + "id": 3837, + "nodeType": "Return", + "src": "23904:25:19" + } + ] + }, + "documentation": { + "id": 3825, + "nodeType": "StructuredDocumentation", + "src": "23736:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 3839, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "23822:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3828, + "mutability": "mutable", + "name": "map", + "nameLocation": "23857:3:19", + "nodeType": "VariableDeclaration", + "scope": 3839, + "src": "23829:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3827, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3826, + "name": "AddressToBytes32Map", + "nameLocations": [ + "23829:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "23829:19:19" + }, + "referencedDeclaration": 3740, + "src": "23829:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "src": "23828:33:19" + }, + "returnParameters": { + "id": 3832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3831, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3839, + "src": "23885:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23885:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23884:9:19" + }, + "scope": 4379, + "src": "23813:123:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3875, + "nodeType": "Block", + "src": "24374:125:19", + "statements": [ + { + "assignments": [ + 3853, + 3855 + ], + "declarations": [ + { + "constant": false, + "id": 3853, + "mutability": "mutable", + "name": "key", + "nameLocation": "24393:3:19", + "nodeType": "VariableDeclaration", + "scope": 3875, + "src": "24385:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3852, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24385:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3855, + "mutability": "mutable", + "name": "value", + "nameLocation": "24406:5:19", + "nodeType": "VariableDeclaration", + "scope": 3875, + "src": "24398:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3854, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24398:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3861, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3857, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3843, + "src": "24418:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3858, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24422:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "24418:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 3859, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3845, + "src": "24430:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3856, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "24415:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 3860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24415:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24384:52:19" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3868, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3853, + "src": "24478:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24470:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3866, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24470:7:19", + "typeDescriptions": {} + } + }, + "id": 3869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24470:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24462:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3864, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "24462:7:19", + "typeDescriptions": {} + } + }, + "id": 3870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24462:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24454:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24454:7:19", + "typeDescriptions": {} + } + }, + "id": 3871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24454:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3872, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3855, + "src": "24486:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 3873, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24453:39:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_bytes32_$", + "typeString": "tuple(address,bytes32)" + } + }, + "functionReturnParameters": 3851, + "id": 3874, + "nodeType": "Return", + "src": "24446:46:19" + } + ] + }, + "documentation": { + "id": 3840, + "nodeType": "StructuredDocumentation", + "src": "23942:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3876, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "24282:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3846, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3843, + "mutability": "mutable", + "name": "map", + "nameLocation": "24313:3:19", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "24285:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3842, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3841, + "name": "AddressToBytes32Map", + "nameLocations": [ + "24285:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "24285:19:19" + }, + "referencedDeclaration": 3740, + "src": "24285:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3845, + "mutability": "mutable", + "name": "index", + "nameLocation": "24326:5:19", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "24318:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3844, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24318:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "24284:48:19" + }, + "returnParameters": { + "id": 3851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3848, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "24356:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3847, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24356:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3850, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "24365:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3849, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24365:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "24355:18:19" + }, + "scope": 4379, + "src": "24273:226:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3912, + "nodeType": "Block", + "src": "24740:132:19", + "statements": [ + { + "assignments": [ + 3890, + 3892 + ], + "declarations": [ + { + "constant": false, + "id": 3890, + "mutability": "mutable", + "name": "success", + "nameLocation": "24756:7:19", + "nodeType": "VariableDeclaration", + "scope": 3912, + "src": "24751:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3889, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24751:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3892, + "mutability": "mutable", + "name": "value", + "nameLocation": "24773:5:19", + "nodeType": "VariableDeclaration", + "scope": 3912, + "src": "24765:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3891, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24765:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3907, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3894, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3880, + "src": "24789:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3895, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24793:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "24789:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3902, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "24825:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24817:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3900, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "24817:7:19", + "typeDescriptions": {} + } + }, + "id": 3903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24817:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24809:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24809:7:19", + "typeDescriptions": {} + } + }, + "id": 3904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24809:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24801:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3896, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24801:7:19", + "typeDescriptions": {} + } + }, + "id": 3905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24801:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3893, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "24782:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 3906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24782:50:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24750:82:19" + }, + { + "expression": { + "components": [ + { + "id": 3908, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3890, + "src": "24850:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 3909, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3892, + "src": "24859:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 3910, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24849:16:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "functionReturnParameters": 3888, + "id": 3911, + "nodeType": "Return", + "src": "24842:23:19" + } + ] + }, + "documentation": { + "id": 3877, + "nodeType": "StructuredDocumentation", + "src": "24505:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 3913, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "24649:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3880, + "mutability": "mutable", + "name": "map", + "nameLocation": "24684:3:19", + "nodeType": "VariableDeclaration", + "scope": 3913, + "src": "24656:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3879, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3878, + "name": "AddressToBytes32Map", + "nameLocations": [ + "24656:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "24656:19:19" + }, + "referencedDeclaration": 3740, + "src": "24656:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3882, + "mutability": "mutable", + "name": "key", + "nameLocation": "24697:3:19", + "nodeType": "VariableDeclaration", + "scope": 3913, + "src": "24689:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3881, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24689:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24655:46:19" + }, + "returnParameters": { + "id": 3888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3885, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3913, + "src": "24725:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3884, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24725:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3887, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3913, + "src": "24731:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3886, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24731:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "24724:15:19" + }, + "scope": 4379, + "src": "24640:232:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3939, + "nodeType": "Block", + "src": "25114:71:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3925, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3917, + "src": "25135:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3926, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25139:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "25135:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 3933, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "25171:3:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3932, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25163:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3931, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "25163:7:19", + "typeDescriptions": {} + } + }, + "id": 3934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25163:12:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25155:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25155:7:19", + "typeDescriptions": {} + } + }, + "id": 3935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25155:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25147:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3927, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25147:7:19", + "typeDescriptions": {} + } + }, + "id": 3936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25147:30:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3924, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "25131:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 3937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25131:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3923, + "id": 3938, + "nodeType": "Return", + "src": "25124:54:19" + } + ] + }, + "documentation": { + "id": 3914, + "nodeType": "StructuredDocumentation", + "src": "24878:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 3940, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "25032:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3917, + "mutability": "mutable", + "name": "map", + "nameLocation": "25064:3:19", + "nodeType": "VariableDeclaration", + "scope": 3940, + "src": "25036:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3916, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3915, + "name": "AddressToBytes32Map", + "nameLocations": [ + "25036:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "25036:19:19" + }, + "referencedDeclaration": 3740, + "src": "25036:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3919, + "mutability": "mutable", + "name": "key", + "nameLocation": "25077:3:19", + "nodeType": "VariableDeclaration", + "scope": 3940, + "src": "25069:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3918, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25069:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "25035:46:19" + }, + "returnParameters": { + "id": 3923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3922, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3940, + "src": "25105:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3921, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25105:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "25104:9:19" + }, + "scope": 4379, + "src": "25023:162:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3969, + "nodeType": "Block", + "src": "25823:216:19", + "statements": [ + { + "assignments": [ + 3954 + ], + "declarations": [ + { + "constant": false, + "id": 3954, + "mutability": "mutable", + "name": "store", + "nameLocation": "25850:5:19", + "nodeType": "VariableDeclaration", + "scope": 3969, + "src": "25833:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3952, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25833:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3953, + "nodeType": "ArrayTypeName", + "src": "25833:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 3959, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 3956, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3944, + "src": "25863:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map storage pointer" + } + }, + "id": 3957, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25867:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3739, + "src": "25863:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 3955, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "25858:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 3958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25858:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25833:41:19" + }, + { + "assignments": [ + 3964 + ], + "declarations": [ + { + "constant": false, + "id": 3964, + "mutability": "mutable", + "name": "result", + "nameLocation": "25901:6:19", + "nodeType": "VariableDeclaration", + "scope": 3969, + "src": "25884:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3962, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25884:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3963, + "nodeType": "ArrayTypeName", + "src": "25884:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 3965, + "nodeType": "VariableDeclarationStatement", + "src": "25884:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "25970:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25984:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "25994:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "25984:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 3964, + "isOffset": false, + "isSlot": false, + "src": "25984:6:19", + "valueSize": 1 + }, + { + "declaration": 3954, + "isOffset": false, + "isSlot": false, + "src": "25994:5:19", + "valueSize": 1 + } + ], + "id": 3966, + "nodeType": "InlineAssembly", + "src": "25961:48:19" + }, + { + "expression": { + "id": 3967, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3964, + "src": "26026:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 3949, + "id": 3968, + "nodeType": "Return", + "src": "26019:13:19" + } + ] + }, + "documentation": { + "id": 3941, + "nodeType": "StructuredDocumentation", + "src": "25191:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 3970, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "25744:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3944, + "mutability": "mutable", + "name": "map", + "nameLocation": "25777:3:19", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "25749:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + }, + "typeName": { + "id": 3943, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3942, + "name": "AddressToBytes32Map", + "nameLocations": [ + "25749:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3740, + "src": "25749:19:19" + }, + "referencedDeclaration": 3740, + "src": "25749:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressToBytes32Map_$3740_storage_ptr", + "typeString": "struct EnumerableMap.AddressToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "src": "25748:33:19" + }, + "returnParameters": { + "id": 3949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3948, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "25805:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25805:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3947, + "nodeType": "ArrayTypeName", + "src": "25805:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "25804:18:19" + }, + "scope": 4379, + "src": "25735:304:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.Bytes32ToUintMap", + "id": 3974, + "members": [ + { + "constant": false, + "id": 3973, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "26124:6:19", + "nodeType": "VariableDeclaration", + "scope": 3974, + "src": "26104:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 3972, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3971, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "26104:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "26104:19:19" + }, + "referencedDeclaration": 2368, + "src": "26104:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32ToUintMap", + "nameLocation": "26077:16:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "26070:67:19", + "visibility": "public" + }, + { + "body": { + "id": 3997, + "nodeType": "Block", + "src": "26459:60:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 3988, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "26480:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 3989, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26484:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "26480:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 3990, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3980, + "src": "26492:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 3993, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3982, + "src": "26505:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26497:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3991, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26497:7:19", + "typeDescriptions": {} + } + }, + "id": 3994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26497:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3987, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "26476:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 3995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26476:36:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3986, + "id": 3996, + "nodeType": "Return", + "src": "26469:43:19" + } + ] + }, + "documentation": { + "id": 3975, + "nodeType": "StructuredDocumentation", + "src": "26143:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 3998, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "26373:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3978, + "mutability": "mutable", + "name": "map", + "nameLocation": "26402:3:19", + "nodeType": "VariableDeclaration", + "scope": 3998, + "src": "26377:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 3977, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3976, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "26377:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "26377:16:19" + }, + "referencedDeclaration": 3974, + "src": "26377:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3980, + "mutability": "mutable", + "name": "key", + "nameLocation": "26415:3:19", + "nodeType": "VariableDeclaration", + "scope": 3998, + "src": "26407:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3979, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26407:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3982, + "mutability": "mutable", + "name": "value", + "nameLocation": "26428:5:19", + "nodeType": "VariableDeclaration", + "scope": 3998, + "src": "26420:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3981, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26420:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26376:58:19" + }, + "returnParameters": { + "id": 3986, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3985, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3998, + "src": "26453:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3984, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26453:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "26452:6:19" + }, + "scope": 4379, + "src": "26364:155:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4015, + "nodeType": "Block", + "src": "26761:47:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4010, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "26785:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 4011, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26789:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "26785:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4012, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4004, + "src": "26797:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4009, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "26778:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 4013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26778:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4008, + "id": 4014, + "nodeType": "Return", + "src": "26771:30:19" + } + ] + }, + "documentation": { + "id": 3999, + "nodeType": "StructuredDocumentation", + "src": "26525:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 4016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "26687:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "map", + "nameLocation": "26719:3:19", + "nodeType": "VariableDeclaration", + "scope": 4016, + "src": "26694:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 4001, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4000, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "26694:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "26694:16:19" + }, + "referencedDeclaration": 3974, + "src": "26694:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4004, + "mutability": "mutable", + "name": "key", + "nameLocation": "26732:3:19", + "nodeType": "VariableDeclaration", + "scope": 4016, + "src": "26724:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4003, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26724:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "26693:43:19" + }, + "returnParameters": { + "id": 4008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4007, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4016, + "src": "26755:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4006, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26755:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "26754:6:19" + }, + "scope": 4379, + "src": "26678:130:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4033, + "nodeType": "Block", + "src": "26977:49:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4028, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4020, + "src": "27003:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 4029, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27007:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "27003:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4030, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4022, + "src": "27015:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4027, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "26994:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26994:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4026, + "id": 4032, + "nodeType": "Return", + "src": "26987:32:19" + } + ] + }, + "documentation": { + "id": 4017, + "nodeType": "StructuredDocumentation", + "src": "26814:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 4034, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "26896:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4020, + "mutability": "mutable", + "name": "map", + "nameLocation": "26930:3:19", + "nodeType": "VariableDeclaration", + "scope": 4034, + "src": "26905:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 4019, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4018, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "26905:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "26905:16:19" + }, + "referencedDeclaration": 3974, + "src": "26905:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4022, + "mutability": "mutable", + "name": "key", + "nameLocation": "26943:3:19", + "nodeType": "VariableDeclaration", + "scope": 4034, + "src": "26935:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4021, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26935:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "26904:43:19" + }, + "returnParameters": { + "id": 4026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4025, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4034, + "src": "26971:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4024, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26971:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "26970:6:19" + }, + "scope": 4379, + "src": "26887:139:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4048, + "nodeType": "Block", + "src": "27187:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4044, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4038, + "src": "27211:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 4045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27215:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "27211:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 4043, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "27204:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 4046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27204:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4042, + "id": 4047, + "nodeType": "Return", + "src": "27197:25:19" + } + ] + }, + "documentation": { + "id": 4035, + "nodeType": "StructuredDocumentation", + "src": "27032:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 4049, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "27118:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4038, + "mutability": "mutable", + "name": "map", + "nameLocation": "27150:3:19", + "nodeType": "VariableDeclaration", + "scope": 4049, + "src": "27125:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 4037, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4036, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "27125:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "27125:16:19" + }, + "referencedDeclaration": 3974, + "src": "27125:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + } + ], + "src": "27124:30:19" + }, + "returnParameters": { + "id": 4042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4041, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4049, + "src": "27178:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27178:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27177:9:19" + }, + "scope": 4379, + "src": "27109:120:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4079, + "nodeType": "Block", + "src": "27664:107:19", + "statements": [ + { + "assignments": [ + 4063, + 4065 + ], + "declarations": [ + { + "constant": false, + "id": 4063, + "mutability": "mutable", + "name": "key", + "nameLocation": "27683:3:19", + "nodeType": "VariableDeclaration", + "scope": 4079, + "src": "27675:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4062, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "27675:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4065, + "mutability": "mutable", + "name": "value", + "nameLocation": "27696:5:19", + "nodeType": "VariableDeclaration", + "scope": 4079, + "src": "27688:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4064, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "27688:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4071, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4067, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4053, + "src": "27708:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 4068, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27712:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "27708:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4069, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4055, + "src": "27720:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4066, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "27705:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 4070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27705:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27674:52:19" + }, + { + "expression": { + "components": [ + { + "id": 4072, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4063, + "src": "27744:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 4075, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "27757:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27749:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27749:7:19", + "typeDescriptions": {} + } + }, + "id": 4076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27749:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4077, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27743:21:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", + "typeString": "tuple(bytes32,uint256)" + } + }, + "functionReturnParameters": 4061, + "id": 4078, + "nodeType": "Return", + "src": "27736:28:19" + } + ] + }, + "documentation": { + "id": 4050, + "nodeType": "StructuredDocumentation", + "src": "27235:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4080, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "27575:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4053, + "mutability": "mutable", + "name": "map", + "nameLocation": "27603:3:19", + "nodeType": "VariableDeclaration", + "scope": 4080, + "src": "27578:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 4052, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4051, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "27578:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "27578:16:19" + }, + "referencedDeclaration": 3974, + "src": "27578:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4055, + "mutability": "mutable", + "name": "index", + "nameLocation": "27616:5:19", + "nodeType": "VariableDeclaration", + "scope": 4080, + "src": "27608:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4054, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27608:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27577:45:19" + }, + "returnParameters": { + "id": 4061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4058, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4080, + "src": "27646:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4057, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "27646:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4060, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4080, + "src": "27655:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4059, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27655:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27645:18:19" + }, + "scope": 4379, + "src": "27566:205:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4110, + "nodeType": "Block", + "src": "28009:114:19", + "statements": [ + { + "assignments": [ + 4094, + 4096 + ], + "declarations": [ + { + "constant": false, + "id": 4094, + "mutability": "mutable", + "name": "success", + "nameLocation": "28025:7:19", + "nodeType": "VariableDeclaration", + "scope": 4110, + "src": "28020:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4093, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "28020:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4096, + "mutability": "mutable", + "name": "value", + "nameLocation": "28042:5:19", + "nodeType": "VariableDeclaration", + "scope": 4110, + "src": "28034:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4095, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "28034:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4102, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4098, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4084, + "src": "28058:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 4099, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28062:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "28058:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4100, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4086, + "src": "28070:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4097, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "28051:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 4101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28051:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28019:55:19" + }, + { + "expression": { + "components": [ + { + "id": 4103, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "28092:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "id": 4106, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4096, + "src": "28109:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28101:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28101:7:19", + "typeDescriptions": {} + } + }, + "id": 4107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28101:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4108, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28091:25:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 4092, + "id": 4109, + "nodeType": "Return", + "src": "28084:32:19" + } + ] + }, + "documentation": { + "id": 4081, + "nodeType": "StructuredDocumentation", + "src": "27777:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 4111, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "27921:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4084, + "mutability": "mutable", + "name": "map", + "nameLocation": "27953:3:19", + "nodeType": "VariableDeclaration", + "scope": 4111, + "src": "27928:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 4083, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4082, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "27928:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "27928:16:19" + }, + "referencedDeclaration": 3974, + "src": "27928:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4086, + "mutability": "mutable", + "name": "key", + "nameLocation": "27966:3:19", + "nodeType": "VariableDeclaration", + "scope": 4111, + "src": "27958:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4085, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "27958:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "27927:43:19" + }, + "returnParameters": { + "id": 4092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4089, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4111, + "src": "27994:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4088, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27994:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4091, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4111, + "src": "28000:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4090, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28000:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27993:15:19" + }, + "scope": 4379, + "src": "27912:211:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4131, + "nodeType": "Block", + "src": "28362:53:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 4125, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4115, + "src": "28391:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 4126, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28395:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "28391:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4127, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4117, + "src": "28403:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4124, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "28387:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 4128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28387:20:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28379:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28379:7:19", + "typeDescriptions": {} + } + }, + "id": 4129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28379:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4121, + "id": 4130, + "nodeType": "Return", + "src": "28372:36:19" + } + ] + }, + "documentation": { + "id": 4112, + "nodeType": "StructuredDocumentation", + "src": "28129:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 4132, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "28283:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4115, + "mutability": "mutable", + "name": "map", + "nameLocation": "28312:3:19", + "nodeType": "VariableDeclaration", + "scope": 4132, + "src": "28287:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 4114, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4113, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "28287:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "28287:16:19" + }, + "referencedDeclaration": 3974, + "src": "28287:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4117, + "mutability": "mutable", + "name": "key", + "nameLocation": "28325:3:19", + "nodeType": "VariableDeclaration", + "scope": 4132, + "src": "28317:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4116, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "28317:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "28286:43:19" + }, + "returnParameters": { + "id": 4121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4120, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4132, + "src": "28353:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28353:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "28352:9:19" + }, + "scope": 4379, + "src": "28274:141:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4161, + "nodeType": "Block", + "src": "29050:216:19", + "statements": [ + { + "assignments": [ + 4146 + ], + "declarations": [ + { + "constant": false, + "id": 4146, + "mutability": "mutable", + "name": "store", + "nameLocation": "29077:5:19", + "nodeType": "VariableDeclaration", + "scope": 4161, + "src": "29060:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4144, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29060:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4145, + "nodeType": "ArrayTypeName", + "src": "29060:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4151, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4148, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4136, + "src": "29090:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap storage pointer" + } + }, + "id": 4149, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29094:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3973, + "src": "29090:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 4147, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "29085:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 4150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29085:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29060:41:19" + }, + { + "assignments": [ + 4156 + ], + "declarations": [ + { + "constant": false, + "id": 4156, + "mutability": "mutable", + "name": "result", + "nameLocation": "29128:6:19", + "nodeType": "VariableDeclaration", + "scope": 4161, + "src": "29111:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4154, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29111:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4155, + "nodeType": "ArrayTypeName", + "src": "29111:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4157, + "nodeType": "VariableDeclarationStatement", + "src": "29111:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "29197:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29211:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "29221:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "29211:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 4156, + "isOffset": false, + "isSlot": false, + "src": "29211:6:19", + "valueSize": 1 + }, + { + "declaration": 4146, + "isOffset": false, + "isSlot": false, + "src": "29221:5:19", + "valueSize": 1 + } + ], + "id": 4158, + "nodeType": "InlineAssembly", + "src": "29188:48:19" + }, + { + "expression": { + "id": 4159, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4156, + "src": "29253:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 4141, + "id": 4160, + "nodeType": "Return", + "src": "29246:13:19" + } + ] + }, + "documentation": { + "id": 4133, + "nodeType": "StructuredDocumentation", + "src": "28421:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 4162, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "28974:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4136, + "mutability": "mutable", + "name": "map", + "nameLocation": "29004:3:19", + "nodeType": "VariableDeclaration", + "scope": 4162, + "src": "28979:28:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + }, + "typeName": { + "id": 4135, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4134, + "name": "Bytes32ToUintMap", + "nameLocations": [ + "28979:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3974, + "src": "28979:16:19" + }, + "referencedDeclaration": 3974, + "src": "28979:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToUintMap_$3974_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToUintMap" + } + }, + "visibility": "internal" + } + ], + "src": "28978:30:19" + }, + "returnParameters": { + "id": 4141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4140, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4162, + "src": "29032:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4138, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29032:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4139, + "nodeType": "ArrayTypeName", + "src": "29032:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "29031:18:19" + }, + "scope": 4379, + "src": "28965:301:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableMap.Bytes32ToAddressMap", + "id": 4166, + "members": [ + { + "constant": false, + "id": 4165, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "29357:6:19", + "nodeType": "VariableDeclaration", + "scope": 4166, + "src": "29337:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + }, + "typeName": { + "id": 4164, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4163, + "name": "Bytes32ToBytes32Map", + "nameLocations": [ + "29337:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2368, + "src": "29337:19:19" + }, + "referencedDeclaration": 2368, + "src": "29337:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32ToAddressMap", + "nameLocation": "29307:19:19", + "nodeType": "StructDefinition", + "scope": 4379, + "src": "29300:70:19", + "visibility": "public" + }, + { + "body": { + "id": 4195, + "nodeType": "Block", + "src": "29695:78:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4180, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4170, + "src": "29716:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4181, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29720:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "29716:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4182, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "29728:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 4189, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4174, + "src": "29757:5:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29749:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4187, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "29749:7:19", + "typeDescriptions": {} + } + }, + "id": 4190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29749:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29741:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4185, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29741:7:19", + "typeDescriptions": {} + } + }, + "id": 4191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29741:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29733:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4183, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29733:7:19", + "typeDescriptions": {} + } + }, + "id": 4192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29733:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4179, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2396, + 2609, + 2825, + 3050, + 3257, + 3509, + 3770, + 3998, + 4196 + ], + "referencedDeclaration": 2396, + "src": "29712:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 4193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29712:54:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4178, + "id": 4194, + "nodeType": "Return", + "src": "29705:61:19" + } + ] + }, + "documentation": { + "id": 4167, + "nodeType": "StructuredDocumentation", + "src": "29376:216:19", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 4196, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "29606:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4170, + "mutability": "mutable", + "name": "map", + "nameLocation": "29638:3:19", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "29610:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4169, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4168, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "29610:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "29610:19:19" + }, + "referencedDeclaration": 4166, + "src": "29610:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4172, + "mutability": "mutable", + "name": "key", + "nameLocation": "29651:3:19", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "29643:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4171, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29643:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4174, + "mutability": "mutable", + "name": "value", + "nameLocation": "29664:5:19", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "29656:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29656:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "29609:61:19" + }, + "returnParameters": { + "id": 4178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4177, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "29689:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4176, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29689:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "29688:6:19" + }, + "scope": 4379, + "src": "29597:176:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4213, + "nodeType": "Block", + "src": "30018:47:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4208, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4200, + "src": "30042:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4209, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30046:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "30042:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4210, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4202, + "src": "30054:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4207, + "name": "remove", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2420, + 2630, + 2846, + 3071, + 3284, + 3536, + 3797, + 4016, + 4214 + ], + "referencedDeclaration": 2420, + "src": "30035:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 4211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30035:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4206, + "id": 4212, + "nodeType": "Return", + "src": "30028:30:19" + } + ] + }, + "documentation": { + "id": 4197, + "nodeType": "StructuredDocumentation", + "src": "29779:148:19", + "text": " @dev Removes a value from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 4214, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "29941:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4200, + "mutability": "mutable", + "name": "map", + "nameLocation": "29976:3:19", + "nodeType": "VariableDeclaration", + "scope": 4214, + "src": "29948:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4199, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4198, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "29948:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "29948:19:19" + }, + "referencedDeclaration": 4166, + "src": "29948:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4202, + "mutability": "mutable", + "name": "key", + "nameLocation": "29989:3:19", + "nodeType": "VariableDeclaration", + "scope": 4214, + "src": "29981:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4201, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29981:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "29947:46:19" + }, + "returnParameters": { + "id": 4206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4205, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4214, + "src": "30012:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4204, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30012:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "30011:6:19" + }, + "scope": 4379, + "src": "29932:133:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4231, + "nodeType": "Block", + "src": "30237:49:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4226, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4218, + "src": "30263:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4227, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30267:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "30263:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4228, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4220, + "src": "30275:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4225, + "name": "contains", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2438, + 2651, + 2867, + 3092, + 3311, + 3563, + 3824, + 4034, + 4232 + ], + "referencedDeclaration": 2438, + "src": "30254:8:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30254:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4224, + "id": 4230, + "nodeType": "Return", + "src": "30247:32:19" + } + ] + }, + "documentation": { + "id": 4215, + "nodeType": "StructuredDocumentation", + "src": "30071:68:19", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 4232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "30153:8:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4218, + "mutability": "mutable", + "name": "map", + "nameLocation": "30190:3:19", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "30162:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4217, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4216, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "30162:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "30162:19:19" + }, + "referencedDeclaration": 4166, + "src": "30162:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4220, + "mutability": "mutable", + "name": "key", + "nameLocation": "30203:3:19", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "30195:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4219, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30195:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "30161:46:19" + }, + "returnParameters": { + "id": 4224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4223, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "30231:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4222, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30231:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "30230:6:19" + }, + "scope": 4379, + "src": "30144:142:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4246, + "nodeType": "Block", + "src": "30450:42:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4242, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4236, + "src": "30474:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4243, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30478:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "30474:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 4241, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2453, + 2666, + 2882, + 3107, + 3326, + 3578, + 3839, + 4049, + 4247 + ], + "referencedDeclaration": 2453, + "src": "30467:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (uint256)" + } + }, + "id": 4244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30467:18:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4240, + "id": 4245, + "nodeType": "Return", + "src": "30460:25:19" + } + ] + }, + "documentation": { + "id": 4233, + "nodeType": "StructuredDocumentation", + "src": "30292:72:19", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 4247, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "30378:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4236, + "mutability": "mutable", + "name": "map", + "nameLocation": "30413:3:19", + "nodeType": "VariableDeclaration", + "scope": 4247, + "src": "30385:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4235, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4234, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "30385:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "30385:19:19" + }, + "referencedDeclaration": 4166, + "src": "30385:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + } + ], + "src": "30384:33:19" + }, + "returnParameters": { + "id": 4240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4239, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4247, + "src": "30441:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30441:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30440:9:19" + }, + "scope": 4379, + "src": "30369:123:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4283, + "nodeType": "Block", + "src": "30930:125:19", + "statements": [ + { + "assignments": [ + 4261, + 4263 + ], + "declarations": [ + { + "constant": false, + "id": 4261, + "mutability": "mutable", + "name": "key", + "nameLocation": "30949:3:19", + "nodeType": "VariableDeclaration", + "scope": 4283, + "src": "30941:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4260, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30941:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4263, + "mutability": "mutable", + "name": "value", + "nameLocation": "30962:5:19", + "nodeType": "VariableDeclaration", + "scope": 4283, + "src": "30954:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4262, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30954:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4269, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4265, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4251, + "src": "30974:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4266, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30978:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "30974:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4267, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4253, + "src": "30986:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4264, + "name": "at", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2482, + 2700, + 2922, + 3138, + 3366, + 3624, + 3876, + 4080, + 4284 + ], + "referencedDeclaration": 2482, + "src": "30971:2:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 4268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30971:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30940:52:19" + }, + { + "expression": { + "components": [ + { + "id": 4270, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4261, + "src": "31010:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 4277, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4263, + "src": "31039:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31031:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4275, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31031:7:19", + "typeDescriptions": {} + } + }, + "id": 4278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31031:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31023:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4273, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "31023:7:19", + "typeDescriptions": {} + } + }, + "id": 4279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31023:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31015:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4271, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31015:7:19", + "typeDescriptions": {} + } + }, + "id": 4280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31015:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4281, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31009:39:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_address_$", + "typeString": "tuple(bytes32,address)" + } + }, + "functionReturnParameters": 4259, + "id": 4282, + "nodeType": "Return", + "src": "31002:46:19" + } + ] + }, + "documentation": { + "id": 4248, + "nodeType": "StructuredDocumentation", + "src": "30498:326:19", + "text": " @dev Returns the element stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "30838:2:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4251, + "mutability": "mutable", + "name": "map", + "nameLocation": "30869:3:19", + "nodeType": "VariableDeclaration", + "scope": 4284, + "src": "30841:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4250, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4249, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "30841:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "30841:19:19" + }, + "referencedDeclaration": 4166, + "src": "30841:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4253, + "mutability": "mutable", + "name": "index", + "nameLocation": "30882:5:19", + "nodeType": "VariableDeclaration", + "scope": 4284, + "src": "30874:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4252, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30874:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30840:48:19" + }, + "returnParameters": { + "id": 4259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4256, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4284, + "src": "30912:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4255, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30912:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4258, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4284, + "src": "30921:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30921:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "30911:18:19" + }, + "scope": 4379, + "src": "30829:226:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4320, + "nodeType": "Block", + "src": "31296:132:19", + "statements": [ + { + "assignments": [ + 4298, + 4300 + ], + "declarations": [ + { + "constant": false, + "id": 4298, + "mutability": "mutable", + "name": "success", + "nameLocation": "31312:7:19", + "nodeType": "VariableDeclaration", + "scope": 4320, + "src": "31307:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4297, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "31307:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4300, + "mutability": "mutable", + "name": "value", + "nameLocation": "31329:5:19", + "nodeType": "VariableDeclaration", + "scope": 4320, + "src": "31321:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4299, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31321:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4306, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4302, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "31345:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4303, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31349:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "31345:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4304, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4290, + "src": "31357:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4301, + "name": "tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2526, + 2734, + 2962, + 3169, + 3406, + 3670, + 3913, + 4111, + 4321 + ], + "referencedDeclaration": 2526, + "src": "31338:6:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 4305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31338:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31306:55:19" + }, + { + "expression": { + "components": [ + { + "id": 4307, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4298, + "src": "31379:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 4314, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4300, + "src": "31412:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31404:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4312, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31404:7:19", + "typeDescriptions": {} + } + }, + "id": 4315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31404:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31396:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4310, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "31396:7:19", + "typeDescriptions": {} + } + }, + "id": 4316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31396:23:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31388:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4308, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31388:7:19", + "typeDescriptions": {} + } + }, + "id": 4317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31388:32:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4318, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "31378:43:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4296, + "id": 4319, + "nodeType": "Return", + "src": "31371:50:19" + } + ] + }, + "documentation": { + "id": 4285, + "nodeType": "StructuredDocumentation", + "src": "31061:130:19", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 4321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nameLocation": "31205:6:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4288, + "mutability": "mutable", + "name": "map", + "nameLocation": "31240:3:19", + "nodeType": "VariableDeclaration", + "scope": 4321, + "src": "31212:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4287, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4286, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "31212:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "31212:19:19" + }, + "referencedDeclaration": 4166, + "src": "31212:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4290, + "mutability": "mutable", + "name": "key", + "nameLocation": "31253:3:19", + "nodeType": "VariableDeclaration", + "scope": 4321, + "src": "31245:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4289, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31245:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31211:46:19" + }, + "returnParameters": { + "id": 4296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4293, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4321, + "src": "31281:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4292, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "31281:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4295, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4321, + "src": "31287:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31287:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "31280:15:19" + }, + "scope": 4379, + "src": "31196:232:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4347, + "nodeType": "Block", + "src": "31670:71:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 4339, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4325, + "src": "31715:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31719:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "31715:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + }, + { + "id": 4341, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4327, + "src": "31727:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4338, + "name": "get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2562, + 2758, + 2992, + 3190, + 3436, + 3706, + 3940, + 4132, + 4348 + ], + "referencedDeclaration": 2562, + "src": "31711:3:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 4342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31711:20:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31703:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31703:7:19", + "typeDescriptions": {} + } + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31703:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31695:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4334, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "31695:7:19", + "typeDescriptions": {} + } + }, + "id": 4344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31695:38:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31687:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4332, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31687:7:19", + "typeDescriptions": {} + } + }, + "id": 4345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31687:47:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4331, + "id": 4346, + "nodeType": "Return", + "src": "31680:54:19" + } + ] + }, + "documentation": { + "id": 4322, + "nodeType": "StructuredDocumentation", + "src": "31434:140:19", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 4348, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "31588:3:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4325, + "mutability": "mutable", + "name": "map", + "nameLocation": "31620:3:19", + "nodeType": "VariableDeclaration", + "scope": 4348, + "src": "31592:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4324, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4323, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "31592:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "31592:19:19" + }, + "referencedDeclaration": 4166, + "src": "31592:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4327, + "mutability": "mutable", + "name": "key", + "nameLocation": "31633:3:19", + "nodeType": "VariableDeclaration", + "scope": 4348, + "src": "31625:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4326, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31625:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31591:46:19" + }, + "returnParameters": { + "id": 4331, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4330, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4348, + "src": "31661:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4329, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31661:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "31660:9:19" + }, + "scope": 4379, + "src": "31579:162:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4377, + "nodeType": "Block", + "src": "32379:216:19", + "statements": [ + { + "assignments": [ + 4362 + ], + "declarations": [ + { + "constant": false, + "id": 4362, + "mutability": "mutable", + "name": "store", + "nameLocation": "32406:5:19", + "nodeType": "VariableDeclaration", + "scope": 4377, + "src": "32389:22:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4360, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32389:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4361, + "nodeType": "ArrayTypeName", + "src": "32389:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4367, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4364, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4352, + "src": "32419:3:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap storage pointer" + } + }, + "id": 4365, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32423:6:19", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4165, + "src": "32419:10:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Bytes32ToBytes32Map_$2368_storage", + "typeString": "struct EnumerableMap.Bytes32ToBytes32Map storage ref" + } + ], + "id": 4363, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2578, + 2788, + 3022, + 3220, + 3466, + 3736, + 3970, + 4162, + 4378 + ], + "referencedDeclaration": 2578, + "src": "32414:4:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32ToBytes32Map_$2368_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableMap.Bytes32ToBytes32Map storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 4366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32414:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32389:41:19" + }, + { + "assignments": [ + 4372 + ], + "declarations": [ + { + "constant": false, + "id": 4372, + "mutability": "mutable", + "name": "result", + "nameLocation": "32457:6:19", + "nodeType": "VariableDeclaration", + "scope": 4377, + "src": "32440:23:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4370, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32440:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4371, + "nodeType": "ArrayTypeName", + "src": "32440:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4373, + "nodeType": "VariableDeclarationStatement", + "src": "32440:23:19" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "32526:39:19", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32540:15:19", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "32550:5:19" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "32540:6:19" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 4372, + "isOffset": false, + "isSlot": false, + "src": "32540:6:19", + "valueSize": 1 + }, + { + "declaration": 4362, + "isOffset": false, + "isSlot": false, + "src": "32550:5:19", + "valueSize": 1 + } + ], + "id": 4374, + "nodeType": "InlineAssembly", + "src": "32517:48:19" + }, + { + "expression": { + "id": 4375, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4372, + "src": "32582:6:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 4357, + "id": 4376, + "nodeType": "Return", + "src": "32575:13:19" + } + ] + }, + "documentation": { + "id": 4349, + "nodeType": "StructuredDocumentation", + "src": "31747:539:19", + "text": " @dev Return the an array containing all the keys\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the map grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 4378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keys", + "nameLocation": "32300:4:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4352, + "mutability": "mutable", + "name": "map", + "nameLocation": "32333:3:19", + "nodeType": "VariableDeclaration", + "scope": 4378, + "src": "32305:31:19", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + }, + "typeName": { + "id": 4351, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4350, + "name": "Bytes32ToAddressMap", + "nameLocations": [ + "32305:19:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4166, + "src": "32305:19:19" + }, + "referencedDeclaration": 4166, + "src": "32305:19:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32ToAddressMap_$4166_storage_ptr", + "typeString": "struct EnumerableMap.Bytes32ToAddressMap" + } + }, + "visibility": "internal" + } + ], + "src": "32304:33:19" + }, + "returnParameters": { + "id": 4357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4356, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4378, + "src": "32361:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4354, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32361:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4355, + "nodeType": "ArrayTypeName", + "src": "32361:9:19", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "32360:18:19" + }, + "scope": 4379, + "src": "32291:304:19", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4380, + "src": "1900:30697:19", + "usedErrors": [ + 2360 + ], + "usedEvents": [] + } + ], + "src": "205:32393:19" + }, + "id": 19 + }, + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { + "ast": { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 4992 + ] + }, + "id": 4993, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4381, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "205:24:20" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableSet", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 4382, + "nodeType": "StructuredDocumentation", + "src": "231:1098:20", + "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```solidity\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n unusable.\n See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n array of EnumerableSet.\n ====" + }, + "fullyImplemented": true, + "id": 4992, + "linearizedBaseContracts": [ + 4992 + ], + "name": "EnumerableSet", + "nameLocation": "1338:13:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 4390, + "members": [ + { + "constant": false, + "id": 4385, + "mutability": "mutable", + "name": "_values", + "nameLocation": "1862:7:20", + "nodeType": "VariableDeclaration", + "scope": 4390, + "src": "1852:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4383, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1852:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4384, + "nodeType": "ArrayTypeName", + "src": "1852:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4389, + "mutability": "mutable", + "name": "_positions", + "nameLocation": "2054:10:20", + "nodeType": "VariableDeclaration", + "scope": 4390, + "src": "2020:44:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 4388, + "keyName": "value", + "keyNameLocation": "2036:5:20", + "keyType": { + "id": 4386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2028:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2020:33:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 4387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2045:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "Set", + "nameLocation": "1805:3:20", + "nodeType": "StructDefinition", + "scope": 4992, + "src": "1798:273:20", + "visibility": "public" + }, + { + "body": { + "id": 4431, + "nodeType": "Block", + "src": "2310:337:20", + "statements": [ + { + "condition": { + "id": 4405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2324:22:20", + "subExpression": { + "arguments": [ + { + "id": 4402, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4394, + "src": "2335:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "id": 4403, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4396, + "src": "2340:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4401, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4535, + "src": "2325:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2325:21:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4429, + "nodeType": "Block", + "src": "2604:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 4427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2625:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 4400, + "id": 4428, + "nodeType": "Return", + "src": "2618:12:20" + } + ] + }, + "id": 4430, + "nodeType": "IfStatement", + "src": "2320:321:20", + "trueBody": { + "id": 4426, + "nodeType": "Block", + "src": "2348:250:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4411, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4396, + "src": "2379:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 4406, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4394, + "src": "2362:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4409, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2366:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "2362:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2374:4:20", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "2362:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer,bytes32)" + } + }, + "id": 4412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2362:23:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4413, + "nodeType": "ExpressionStatement", + "src": "2362:23:20" + }, + { + "expression": { + "id": 4422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 4414, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4394, + "src": "2520:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2524:10:20", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 4389, + "src": "2520:14:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 4418, + "indexExpression": { + "id": 4416, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4396, + "src": "2535:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2520:21:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 4419, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4394, + "src": "2544:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4420, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2548:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "2544:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2556:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2544:18:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2520:42:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4423, + "nodeType": "ExpressionStatement", + "src": "2520:42:20" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2583:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4400, + "id": 4425, + "nodeType": "Return", + "src": "2576:11:20" + } + ] + } + } + ] + }, + "documentation": { + "id": 4391, + "nodeType": "StructuredDocumentation", + "src": "2077:159:20", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 4432, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nameLocation": "2250:4:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4394, + "mutability": "mutable", + "name": "set", + "nameLocation": "2267:3:20", + "nodeType": "VariableDeclaration", + "scope": 4432, + "src": "2255:15:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4393, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4392, + "name": "Set", + "nameLocations": [ + "2255:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "2255:3:20" + }, + "referencedDeclaration": 4390, + "src": "2255:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4396, + "mutability": "mutable", + "name": "value", + "nameLocation": "2280:5:20", + "nodeType": "VariableDeclaration", + "scope": 4432, + "src": "2272:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4395, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2272:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2254:32:20" + }, + "returnParameters": { + "id": 4400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4399, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4432, + "src": "2304:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4398, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2304:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2303:6:20" + }, + "scope": 4992, + "src": "2241:406:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4515, + "nodeType": "Block", + "src": "2887:1296:20", + "statements": [ + { + "assignments": [ + 4444 + ], + "declarations": [ + { + "constant": false, + "id": 4444, + "mutability": "mutable", + "name": "position", + "nameLocation": "2999:8:20", + "nodeType": "VariableDeclaration", + "scope": 4515, + "src": "2991:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2991:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4449, + "initialValue": { + "baseExpression": { + "expression": { + "id": 4445, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "3010:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4446, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3014:10:20", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 4389, + "src": "3010:14:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 4448, + "indexExpression": { + "id": 4447, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "3025:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3010:21:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2991:40:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4450, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4444, + "src": "3046:8:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 4451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3058:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3046:13:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4513, + "nodeType": "Block", + "src": "4140:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 4511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4161:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 4442, + "id": 4512, + "nodeType": "Return", + "src": "4154:12:20" + } + ] + }, + "id": 4514, + "nodeType": "IfStatement", + "src": "3042:1135:20", + "trueBody": { + "id": 4510, + "nodeType": "Block", + "src": "3061:1073:20", + "statements": [ + { + "assignments": [ + 4454 + ], + "declarations": [ + { + "constant": false, + "id": 4454, + "mutability": "mutable", + "name": "valueIndex", + "nameLocation": "3421:10:20", + "nodeType": "VariableDeclaration", + "scope": 4510, + "src": "3413:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3413:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4458, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4455, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4444, + "src": "3434:8:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 4456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3445:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3434:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3413:33:20" + }, + { + "assignments": [ + 4460 + ], + "declarations": [ + { + "constant": false, + "id": 4460, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "3468:9:20", + "nodeType": "VariableDeclaration", + "scope": 4510, + "src": "3460:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3460:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4466, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 4461, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "3480:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4462, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3484:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "3480:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3492:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3480:18:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 4464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3501:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3480:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3460:42:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4467, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4454, + "src": "3521:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 4468, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4460, + "src": "3535:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3521:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4494, + "nodeType": "IfStatement", + "src": "3517:378:20", + "trueBody": { + "id": 4493, + "nodeType": "Block", + "src": "3546:349:20", + "statements": [ + { + "assignments": [ + 4471 + ], + "declarations": [ + { + "constant": false, + "id": 4471, + "mutability": "mutable", + "name": "lastValue", + "nameLocation": "3572:9:20", + "nodeType": "VariableDeclaration", + "scope": 4493, + "src": "3564:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4470, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3564:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4476, + "initialValue": { + "baseExpression": { + "expression": { + "id": 4472, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "3584:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4473, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3588:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "3584:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4475, + "indexExpression": { + "id": 4474, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4460, + "src": "3596:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3584:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3564:42:20" + }, + { + "expression": { + "id": 4483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 4477, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "3705:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4480, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3709:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "3705:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4481, + "indexExpression": { + "id": 4479, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4454, + "src": "3717:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3705:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4482, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4471, + "src": "3731:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3705:35:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4484, + "nodeType": "ExpressionStatement", + "src": "3705:35:20" + }, + { + "expression": { + "id": 4491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 4485, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "3844:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4488, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3848:10:20", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 4389, + "src": "3844:14:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 4489, + "indexExpression": { + "id": 4487, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4471, + "src": "3859:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3844:25:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4490, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4444, + "src": "3872:8:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3844:36:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4492, + "nodeType": "ExpressionStatement", + "src": "3844:36:20" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 4495, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "3973:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4498, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3977:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "3973:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3985:3:20", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "3973:15:20", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer)" + } + }, + "id": 4500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3973:17:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4501, + "nodeType": "ExpressionStatement", + "src": "3973:17:20" + }, + { + "expression": { + "id": 4506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4069:28:20", + "subExpression": { + "baseExpression": { + "expression": { + "id": 4502, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4436, + "src": "4076:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4503, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4080:10:20", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 4389, + "src": "4076:14:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 4505, + "indexExpression": { + "id": 4504, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4091:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4076:21:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4507, + "nodeType": "ExpressionStatement", + "src": "4069:28:20" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4442, + "id": 4509, + "nodeType": "Return", + "src": "4112:11:20" + } + ] + } + } + ] + }, + "documentation": { + "id": 4433, + "nodeType": "StructuredDocumentation", + "src": "2653:157:20", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 4516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nameLocation": "2824:7:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4436, + "mutability": "mutable", + "name": "set", + "nameLocation": "2844:3:20", + "nodeType": "VariableDeclaration", + "scope": 4516, + "src": "2832:15:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4435, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4434, + "name": "Set", + "nameLocations": [ + "2832:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "2832:3:20" + }, + "referencedDeclaration": 4390, + "src": "2832:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4438, + "mutability": "mutable", + "name": "value", + "nameLocation": "2857:5:20", + "nodeType": "VariableDeclaration", + "scope": 4516, + "src": "2849:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2849:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2831:32:20" + }, + "returnParameters": { + "id": 4442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4441, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4516, + "src": "2881:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4440, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2881:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2880:6:20" + }, + "scope": 4992, + "src": "2815:1368:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4534, + "nodeType": "Block", + "src": "4343:50:20", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 4527, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4520, + "src": "4360:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4528, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4364:10:20", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 4389, + "src": "4360:14:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 4530, + "indexExpression": { + "id": 4529, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4522, + "src": "4375:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4360:21:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 4531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4385:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4360:26:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4526, + "id": 4533, + "nodeType": "Return", + "src": "4353:33:20" + } + ] + }, + "documentation": { + "id": 4517, + "nodeType": "StructuredDocumentation", + "src": "4189:70:20", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 4535, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nameLocation": "4273:9:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4520, + "mutability": "mutable", + "name": "set", + "nameLocation": "4295:3:20", + "nodeType": "VariableDeclaration", + "scope": 4535, + "src": "4283:15:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4519, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4518, + "name": "Set", + "nameLocations": [ + "4283:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "4283:3:20" + }, + "referencedDeclaration": 4390, + "src": "4283:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4522, + "mutability": "mutable", + "name": "value", + "nameLocation": "4308:5:20", + "nodeType": "VariableDeclaration", + "scope": 4535, + "src": "4300:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4521, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4300:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4282:32:20" + }, + "returnParameters": { + "id": 4526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4525, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4535, + "src": "4337:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4524, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4337:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4336:6:20" + }, + "scope": 4992, + "src": "4264:129:20", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4548, + "nodeType": "Block", + "src": "4539:42:20", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 4544, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4539, + "src": "4556:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4545, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4560:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "4556:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4568:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4556:18:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4543, + "id": 4547, + "nodeType": "Return", + "src": "4549:25:20" + } + ] + }, + "documentation": { + "id": 4536, + "nodeType": "StructuredDocumentation", + "src": "4399:70:20", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 4549, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nameLocation": "4483:7:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4539, + "mutability": "mutable", + "name": "set", + "nameLocation": "4503:3:20", + "nodeType": "VariableDeclaration", + "scope": 4549, + "src": "4491:15:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4538, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4537, + "name": "Set", + "nameLocations": [ + "4491:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "4491:3:20" + }, + "referencedDeclaration": 4390, + "src": "4491:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "4490:17:20" + }, + "returnParameters": { + "id": 4543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4542, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4549, + "src": "4530:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4541, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4530:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4529:9:20" + }, + "scope": 4992, + "src": "4474:107:20", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4565, + "nodeType": "Block", + "src": "4999:42:20", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 4560, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4553, + "src": "5016:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "5016:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4563, + "indexExpression": { + "id": 4562, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4555, + "src": "5028:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5016:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4559, + "id": 4564, + "nodeType": "Return", + "src": "5009:25:20" + } + ] + }, + "documentation": { + "id": 4550, + "nodeType": "StructuredDocumentation", + "src": "4587:331:20", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nameLocation": "4932:3:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4553, + "mutability": "mutable", + "name": "set", + "nameLocation": "4948:3:20", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "4936:15:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4552, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4551, + "name": "Set", + "nameLocations": [ + "4936:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "4936:3:20" + }, + "referencedDeclaration": 4390, + "src": "4936:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4555, + "mutability": "mutable", + "name": "index", + "nameLocation": "4961:5:20", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "4953:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4953:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4935:32:20" + }, + "returnParameters": { + "id": 4559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4558, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "4990:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4557, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4990:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4989:9:20" + }, + "scope": 4992, + "src": "4923:118:20", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4579, + "nodeType": "Block", + "src": "5655:35:20", + "statements": [ + { + "expression": { + "expression": { + "id": 4576, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4570, + "src": "5672:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4577, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5676:7:20", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 4385, + "src": "5672:11:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "functionReturnParameters": 4575, + "id": 4578, + "nodeType": "Return", + "src": "5665:18:20" + } + ] + }, + "documentation": { + "id": 4567, + "nodeType": "StructuredDocumentation", + "src": "5047:529:20", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 4580, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_values", + "nameLocation": "5590:7:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4570, + "mutability": "mutable", + "name": "set", + "nameLocation": "5610:3:20", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5598:15:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4569, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4568, + "name": "Set", + "nameLocations": [ + "5598:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "5598:3:20" + }, + "referencedDeclaration": 4390, + "src": "5598:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "5597:17:20" + }, + "returnParameters": { + "id": 4575, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4574, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5637:16:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4572, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5637:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4573, + "nodeType": "ArrayTypeName", + "src": "5637:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "5636:18:20" + }, + "scope": 4992, + "src": "5581:109:20", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.Bytes32Set", + "id": 4584, + "members": [ + { + "constant": false, + "id": 4583, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "5747:6:20", + "nodeType": "VariableDeclaration", + "scope": 4584, + "src": "5743:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4582, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4581, + "name": "Set", + "nameLocations": [ + "5743:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "5743:3:20" + }, + "referencedDeclaration": 4390, + "src": "5743:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Set", + "nameLocation": "5722:10:20", + "nodeType": "StructDefinition", + "scope": 4992, + "src": "5715:45:20", + "visibility": "public" + }, + { + "body": { + "id": 4601, + "nodeType": "Block", + "src": "6006:47:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4596, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4588, + "src": "6028:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4597, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6032:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4583, + "src": "6028:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 4598, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "6040:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4595, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4432, + "src": "6023:4:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6023:23:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4594, + "id": 4600, + "nodeType": "Return", + "src": "6016:30:20" + } + ] + }, + "documentation": { + "id": 4585, + "nodeType": "StructuredDocumentation", + "src": "5766:159:20", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 4602, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "5939:3:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4588, + "mutability": "mutable", + "name": "set", + "nameLocation": "5962:3:20", + "nodeType": "VariableDeclaration", + "scope": 4602, + "src": "5943:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 4587, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4586, + "name": "Bytes32Set", + "nameLocations": [ + "5943:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "5943:10:20" + }, + "referencedDeclaration": 4584, + "src": "5943:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4590, + "mutability": "mutable", + "name": "value", + "nameLocation": "5975:5:20", + "nodeType": "VariableDeclaration", + "scope": 4602, + "src": "5967:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4589, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5967:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5942:39:20" + }, + "returnParameters": { + "id": 4594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4593, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4602, + "src": "6000:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4592, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6000:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5999:6:20" + }, + "scope": 4992, + "src": "5930:123:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4619, + "nodeType": "Block", + "src": "6300:50:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4614, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4606, + "src": "6325:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4615, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6329:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4583, + "src": "6325:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 4616, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4608, + "src": "6337:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4613, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4516, + "src": "6317:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6317:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4612, + "id": 4618, + "nodeType": "Return", + "src": "6310:33:20" + } + ] + }, + "documentation": { + "id": 4603, + "nodeType": "StructuredDocumentation", + "src": "6059:157:20", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 4620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "6230:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4606, + "mutability": "mutable", + "name": "set", + "nameLocation": "6256:3:20", + "nodeType": "VariableDeclaration", + "scope": 4620, + "src": "6237:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 4605, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4604, + "name": "Bytes32Set", + "nameLocations": [ + "6237:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "6237:10:20" + }, + "referencedDeclaration": 4584, + "src": "6237:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4608, + "mutability": "mutable", + "name": "value", + "nameLocation": "6269:5:20", + "nodeType": "VariableDeclaration", + "scope": 4620, + "src": "6261:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4607, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6261:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6236:39:20" + }, + "returnParameters": { + "id": 4612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4611, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4620, + "src": "6294:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4610, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6294:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6293:6:20" + }, + "scope": 4992, + "src": "6221:129:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4637, + "nodeType": "Block", + "src": "6517:52:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4632, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6544:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4633, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6548:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4583, + "src": "6544:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 4634, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4626, + "src": "6556:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4631, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4535, + "src": "6534:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6534:28:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4630, + "id": 4636, + "nodeType": "Return", + "src": "6527:35:20" + } + ] + }, + "documentation": { + "id": 4621, + "nodeType": "StructuredDocumentation", + "src": "6356:70:20", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 4638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "6440:8:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4624, + "mutability": "mutable", + "name": "set", + "nameLocation": "6468:3:20", + "nodeType": "VariableDeclaration", + "scope": 4638, + "src": "6449:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 4623, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4622, + "name": "Bytes32Set", + "nameLocations": [ + "6449:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "6449:10:20" + }, + "referencedDeclaration": 4584, + "src": "6449:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4626, + "mutability": "mutable", + "name": "value", + "nameLocation": "6481:5:20", + "nodeType": "VariableDeclaration", + "scope": 4638, + "src": "6473:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4625, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6473:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6448:39:20" + }, + "returnParameters": { + "id": 4630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4629, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4638, + "src": "6511:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4628, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6511:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6510:6:20" + }, + "scope": 4992, + "src": "6431:138:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4652, + "nodeType": "Block", + "src": "6722:43:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4648, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4642, + "src": "6747:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4649, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6751:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4583, + "src": "6747:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4647, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4549, + "src": "6739:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 4650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6739:19:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4646, + "id": 4651, + "nodeType": "Return", + "src": "6732:26:20" + } + ] + }, + "documentation": { + "id": 4639, + "nodeType": "StructuredDocumentation", + "src": "6575:70:20", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 4653, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "6659:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4642, + "mutability": "mutable", + "name": "set", + "nameLocation": "6685:3:20", + "nodeType": "VariableDeclaration", + "scope": 4653, + "src": "6666:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 4641, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4640, + "name": "Bytes32Set", + "nameLocations": [ + "6666:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "6666:10:20" + }, + "referencedDeclaration": 4584, + "src": "6666:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "6665:24:20" + }, + "returnParameters": { + "id": 4646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4645, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4653, + "src": "6713:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6713:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6712:9:20" + }, + "scope": 4992, + "src": "6650:115:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4670, + "nodeType": "Block", + "src": "7190:46:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4665, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4657, + "src": "7211:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4666, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7215:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4583, + "src": "7211:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 4667, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4659, + "src": "7223:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4664, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "7207:3:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 4668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7207:22:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4663, + "id": 4669, + "nodeType": "Return", + "src": "7200:29:20" + } + ] + }, + "documentation": { + "id": 4654, + "nodeType": "StructuredDocumentation", + "src": "6771:331:20", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4671, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "7116:2:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4657, + "mutability": "mutable", + "name": "set", + "nameLocation": "7138:3:20", + "nodeType": "VariableDeclaration", + "scope": 4671, + "src": "7119:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 4656, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4655, + "name": "Bytes32Set", + "nameLocations": [ + "7119:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "7119:10:20" + }, + "referencedDeclaration": 4584, + "src": "7119:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4659, + "mutability": "mutable", + "name": "index", + "nameLocation": "7151:5:20", + "nodeType": "VariableDeclaration", + "scope": 4671, + "src": "7143:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7143:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7118:39:20" + }, + "returnParameters": { + "id": 4663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4662, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4671, + "src": "7181:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4661, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7181:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7180:9:20" + }, + "scope": 4992, + "src": "7107:129:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4700, + "nodeType": "Block", + "src": "7857:219:20", + "statements": [ + { + "assignments": [ + 4685 + ], + "declarations": [ + { + "constant": false, + "id": 4685, + "mutability": "mutable", + "name": "store", + "nameLocation": "7884:5:20", + "nodeType": "VariableDeclaration", + "scope": 4700, + "src": "7867:22:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4683, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7867:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4684, + "nodeType": "ArrayTypeName", + "src": "7867:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4690, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4687, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4675, + "src": "7900:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4688, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7904:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4583, + "src": "7900:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4686, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "7892:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 4689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7892:19:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7867:44:20" + }, + { + "assignments": [ + 4695 + ], + "declarations": [ + { + "constant": false, + "id": 4695, + "mutability": "mutable", + "name": "result", + "nameLocation": "7938:6:20", + "nodeType": "VariableDeclaration", + "scope": 4700, + "src": "7921:23:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4693, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7921:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4694, + "nodeType": "ArrayTypeName", + "src": "7921:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4696, + "nodeType": "VariableDeclarationStatement", + "src": "7921:23:20" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8007:39:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8021:15:20", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "8031:5:20" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "8021:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "8021:6:20", + "valueSize": 1 + }, + { + "declaration": 4685, + "isOffset": false, + "isSlot": false, + "src": "8031:5:20", + "valueSize": 1 + } + ], + "id": 4697, + "nodeType": "InlineAssembly", + "src": "7998:48:20" + }, + { + "expression": { + "id": 4698, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4695, + "src": "8063:6:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 4680, + "id": 4699, + "nodeType": "Return", + "src": "8056:13:20" + } + ] + }, + "documentation": { + "id": 4672, + "nodeType": "StructuredDocumentation", + "src": "7242:529:20", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 4701, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "7785:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4675, + "mutability": "mutable", + "name": "set", + "nameLocation": "7811:3:20", + "nodeType": "VariableDeclaration", + "scope": 4701, + "src": "7792:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 4674, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4673, + "name": "Bytes32Set", + "nameLocations": [ + "7792:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4584, + "src": "7792:10:20" + }, + "referencedDeclaration": 4584, + "src": "7792:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4584_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "7791:24:20" + }, + "returnParameters": { + "id": 4680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4679, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4701, + "src": "7839:16:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4677, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7839:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4678, + "nodeType": "ArrayTypeName", + "src": "7839:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "7838:18:20" + }, + "scope": 4992, + "src": "7776:300:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 4705, + "members": [ + { + "constant": false, + "id": 4704, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "8133:6:20", + "nodeType": "VariableDeclaration", + "scope": 4705, + "src": "8129:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4703, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4702, + "name": "Set", + "nameLocations": [ + "8129:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "8129:3:20" + }, + "referencedDeclaration": 4390, + "src": "8129:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nameLocation": "8108:10:20", + "nodeType": "StructDefinition", + "scope": 4992, + "src": "8101:45:20", + "visibility": "public" + }, + { + "body": { + "id": 4731, + "nodeType": "Block", + "src": "8392:74:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4717, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4709, + "src": "8414:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4718, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8418:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4704, + "src": "8414:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 4725, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4711, + "src": "8450:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8442:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4723, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8442:7:20", + "typeDescriptions": {} + } + }, + "id": 4726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8442:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8434:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8434:7:20", + "typeDescriptions": {} + } + }, + "id": 4727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8434:23:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8426:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4719, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8426:7:20", + "typeDescriptions": {} + } + }, + "id": 4728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8426:32:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4716, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4432, + "src": "8409:4:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8409:50:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4715, + "id": 4730, + "nodeType": "Return", + "src": "8402:57:20" + } + ] + }, + "documentation": { + "id": 4706, + "nodeType": "StructuredDocumentation", + "src": "8152:159:20", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 4732, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "8325:3:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4709, + "mutability": "mutable", + "name": "set", + "nameLocation": "8348:3:20", + "nodeType": "VariableDeclaration", + "scope": 4732, + "src": "8329:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 4708, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4707, + "name": "AddressSet", + "nameLocations": [ + "8329:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "8329:10:20" + }, + "referencedDeclaration": 4705, + "src": "8329:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4711, + "mutability": "mutable", + "name": "value", + "nameLocation": "8361:5:20", + "nodeType": "VariableDeclaration", + "scope": 4732, + "src": "8353:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4710, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8353:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8328:39:20" + }, + "returnParameters": { + "id": 4715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4714, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4732, + "src": "8386:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4713, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8386:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8385:6:20" + }, + "scope": 4992, + "src": "8316:150:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4758, + "nodeType": "Block", + "src": "8713:77:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4744, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4736, + "src": "8738:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4745, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8742:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4704, + "src": "8738:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 4752, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4738, + "src": "8774:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8766:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4750, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8766:7:20", + "typeDescriptions": {} + } + }, + "id": 4753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8766:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8758:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4748, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8758:7:20", + "typeDescriptions": {} + } + }, + "id": 4754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8758:23:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8750:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4746, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8750:7:20", + "typeDescriptions": {} + } + }, + "id": 4755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8750:32:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4743, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4516, + "src": "8730:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8730:53:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4742, + "id": 4757, + "nodeType": "Return", + "src": "8723:60:20" + } + ] + }, + "documentation": { + "id": 4733, + "nodeType": "StructuredDocumentation", + "src": "8472:157:20", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 4759, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "8643:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4736, + "mutability": "mutable", + "name": "set", + "nameLocation": "8669:3:20", + "nodeType": "VariableDeclaration", + "scope": 4759, + "src": "8650:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 4735, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4734, + "name": "AddressSet", + "nameLocations": [ + "8650:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "8650:10:20" + }, + "referencedDeclaration": 4705, + "src": "8650:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4738, + "mutability": "mutable", + "name": "value", + "nameLocation": "8682:5:20", + "nodeType": "VariableDeclaration", + "scope": 4759, + "src": "8674:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4737, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8674:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8649:39:20" + }, + "returnParameters": { + "id": 4742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4741, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4759, + "src": "8707:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4740, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8707:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8706:6:20" + }, + "scope": 4992, + "src": "8634:156:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4785, + "nodeType": "Block", + "src": "8957:79:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4771, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4763, + "src": "8984:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4772, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8988:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4704, + "src": "8984:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 4779, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4765, + "src": "9020:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9012:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4777, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9012:7:20", + "typeDescriptions": {} + } + }, + "id": 4780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9012:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9004:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9004:7:20", + "typeDescriptions": {} + } + }, + "id": 4781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9004:23:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8996:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4773, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8996:7:20", + "typeDescriptions": {} + } + }, + "id": 4782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8996:32:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4770, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4535, + "src": "8974:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8974:55:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4769, + "id": 4784, + "nodeType": "Return", + "src": "8967:62:20" + } + ] + }, + "documentation": { + "id": 4760, + "nodeType": "StructuredDocumentation", + "src": "8796:70:20", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 4786, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "8880:8:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4763, + "mutability": "mutable", + "name": "set", + "nameLocation": "8908:3:20", + "nodeType": "VariableDeclaration", + "scope": 4786, + "src": "8889:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 4762, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4761, + "name": "AddressSet", + "nameLocations": [ + "8889:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "8889:10:20" + }, + "referencedDeclaration": 4705, + "src": "8889:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4765, + "mutability": "mutable", + "name": "value", + "nameLocation": "8921:5:20", + "nodeType": "VariableDeclaration", + "scope": 4786, + "src": "8913:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8913:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8888:39:20" + }, + "returnParameters": { + "id": 4769, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4768, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4786, + "src": "8951:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4767, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8951:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8950:6:20" + }, + "scope": 4992, + "src": "8871:165:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4800, + "nodeType": "Block", + "src": "9189:43:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4796, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4790, + "src": "9214:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4797, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9218:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4704, + "src": "9214:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4795, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4549, + "src": "9206:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 4798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9206:19:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4794, + "id": 4799, + "nodeType": "Return", + "src": "9199:26:20" + } + ] + }, + "documentation": { + "id": 4787, + "nodeType": "StructuredDocumentation", + "src": "9042:70:20", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 4801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "9126:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4790, + "mutability": "mutable", + "name": "set", + "nameLocation": "9152:3:20", + "nodeType": "VariableDeclaration", + "scope": 4801, + "src": "9133:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 4789, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4788, + "name": "AddressSet", + "nameLocations": [ + "9133:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "9133:10:20" + }, + "referencedDeclaration": 4705, + "src": "9133:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "9132:24:20" + }, + "returnParameters": { + "id": 4794, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4793, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4801, + "src": "9180:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4792, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9180:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9179:9:20" + }, + "scope": 4992, + "src": "9117:115:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4827, + "nodeType": "Block", + "src": "9657:73:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 4819, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4805, + "src": "9702:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4820, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9706:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4704, + "src": "9702:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 4821, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4807, + "src": "9714:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4818, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "9698:3:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 4822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9698:22:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9690:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4816, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9690:7:20", + "typeDescriptions": {} + } + }, + "id": 4823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9690:31:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9682:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4814, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9682:7:20", + "typeDescriptions": {} + } + }, + "id": 4824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9682:40:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9674:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4812, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9674:7:20", + "typeDescriptions": {} + } + }, + "id": 4825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9674:49:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4811, + "id": 4826, + "nodeType": "Return", + "src": "9667:56:20" + } + ] + }, + "documentation": { + "id": 4802, + "nodeType": "StructuredDocumentation", + "src": "9238:331:20", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4828, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "9583:2:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4805, + "mutability": "mutable", + "name": "set", + "nameLocation": "9605:3:20", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "9586:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 4804, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4803, + "name": "AddressSet", + "nameLocations": [ + "9586:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "9586:10:20" + }, + "referencedDeclaration": 4705, + "src": "9586:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4807, + "mutability": "mutable", + "name": "index", + "nameLocation": "9618:5:20", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "9610:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9610:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9585:39:20" + }, + "returnParameters": { + "id": 4811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4810, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "9648:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4809, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9648:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9647:9:20" + }, + "scope": 4992, + "src": "9574:156:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4857, + "nodeType": "Block", + "src": "10351:219:20", + "statements": [ + { + "assignments": [ + 4842 + ], + "declarations": [ + { + "constant": false, + "id": 4842, + "mutability": "mutable", + "name": "store", + "nameLocation": "10378:5:20", + "nodeType": "VariableDeclaration", + "scope": 4857, + "src": "10361:22:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4840, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10361:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4841, + "nodeType": "ArrayTypeName", + "src": "10361:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4847, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4844, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "10394:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10398:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4704, + "src": "10394:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4843, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "10386:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 4846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10386:19:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10361:44:20" + }, + { + "assignments": [ + 4852 + ], + "declarations": [ + { + "constant": false, + "id": 4852, + "mutability": "mutable", + "name": "result", + "nameLocation": "10432:6:20", + "nodeType": "VariableDeclaration", + "scope": 4857, + "src": "10415:23:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 4850, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10415:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4851, + "nodeType": "ArrayTypeName", + "src": "10415:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 4853, + "nodeType": "VariableDeclarationStatement", + "src": "10415:23:20" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "10501:39:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10515:15:20", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "10525:5:20" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "10515:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 4852, + "isOffset": false, + "isSlot": false, + "src": "10515:6:20", + "valueSize": 1 + }, + { + "declaration": 4842, + "isOffset": false, + "isSlot": false, + "src": "10525:5:20", + "valueSize": 1 + } + ], + "id": 4854, + "nodeType": "InlineAssembly", + "src": "10492:48:20" + }, + { + "expression": { + "id": 4855, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4852, + "src": "10557:6:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 4837, + "id": 4856, + "nodeType": "Return", + "src": "10550:13:20" + } + ] + }, + "documentation": { + "id": 4829, + "nodeType": "StructuredDocumentation", + "src": "9736:529:20", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 4858, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "10279:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4832, + "mutability": "mutable", + "name": "set", + "nameLocation": "10305:3:20", + "nodeType": "VariableDeclaration", + "scope": 4858, + "src": "10286:22:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 4831, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4830, + "name": "AddressSet", + "nameLocations": [ + "10286:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "10286:10:20" + }, + "referencedDeclaration": 4705, + "src": "10286:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "10285:24:20" + }, + "returnParameters": { + "id": 4837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4836, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4858, + "src": "10333:16:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 4834, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10333:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4835, + "nodeType": "ArrayTypeName", + "src": "10333:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "10332:18:20" + }, + "scope": 4992, + "src": "10270:300:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 4862, + "members": [ + { + "constant": false, + "id": 4861, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "10621:6:20", + "nodeType": "VariableDeclaration", + "scope": 4862, + "src": "10617:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 4860, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4859, + "name": "Set", + "nameLocations": [ + "10617:3:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4390, + "src": "10617:3:20" + }, + "referencedDeclaration": 4390, + "src": "10617:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "UintSet", + "nameLocation": "10599:7:20", + "nodeType": "StructDefinition", + "scope": 4992, + "src": "10592:42:20", + "visibility": "public" + }, + { + "body": { + "id": 4882, + "nodeType": "Block", + "src": "10877:56:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4874, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4866, + "src": "10899:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4875, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10903:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4861, + "src": "10899:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 4878, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4868, + "src": "10919:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10911:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4876, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10911:7:20", + "typeDescriptions": {} + } + }, + "id": 4879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10911:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4873, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4432, + "src": "10894:4:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10894:32:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4872, + "id": 4881, + "nodeType": "Return", + "src": "10887:39:20" + } + ] + }, + "documentation": { + "id": 4863, + "nodeType": "StructuredDocumentation", + "src": "10640:159:20", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 4883, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "10813:3:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4866, + "mutability": "mutable", + "name": "set", + "nameLocation": "10833:3:20", + "nodeType": "VariableDeclaration", + "scope": 4883, + "src": "10817:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 4865, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4864, + "name": "UintSet", + "nameLocations": [ + "10817:7:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "10817:7:20" + }, + "referencedDeclaration": 4862, + "src": "10817:7:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4868, + "mutability": "mutable", + "name": "value", + "nameLocation": "10846:5:20", + "nodeType": "VariableDeclaration", + "scope": 4883, + "src": "10838:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4867, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10838:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10816:36:20" + }, + "returnParameters": { + "id": 4872, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4871, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4883, + "src": "10871:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4870, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10871:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10870:6:20" + }, + "scope": 4992, + "src": "10804:129:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4903, + "nodeType": "Block", + "src": "11177:59:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4895, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4887, + "src": "11202:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4896, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11206:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4861, + "src": "11202:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 4899, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4889, + "src": "11222:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11214:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4897, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11214:7:20", + "typeDescriptions": {} + } + }, + "id": 4900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11214:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4894, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4516, + "src": "11194:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11194:35:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4893, + "id": 4902, + "nodeType": "Return", + "src": "11187:42:20" + } + ] + }, + "documentation": { + "id": 4884, + "nodeType": "StructuredDocumentation", + "src": "10939:157:20", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 4904, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "11110:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4887, + "mutability": "mutable", + "name": "set", + "nameLocation": "11133:3:20", + "nodeType": "VariableDeclaration", + "scope": 4904, + "src": "11117:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 4886, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4885, + "name": "UintSet", + "nameLocations": [ + "11117:7:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "11117:7:20" + }, + "referencedDeclaration": 4862, + "src": "11117:7:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4889, + "mutability": "mutable", + "name": "value", + "nameLocation": "11146:5:20", + "nodeType": "VariableDeclaration", + "scope": 4904, + "src": "11138:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11138:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11116:36:20" + }, + "returnParameters": { + "id": 4893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4892, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4904, + "src": "11171:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4891, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11171:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11170:6:20" + }, + "scope": 4992, + "src": "11101:135:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4924, + "nodeType": "Block", + "src": "11400:61:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4916, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4908, + "src": "11427:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4917, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11431:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4861, + "src": "11427:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 4920, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4910, + "src": "11447:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11439:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4918, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11439:7:20", + "typeDescriptions": {} + } + }, + "id": 4921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11439:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4915, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4535, + "src": "11417:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11417:37:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4914, + "id": 4923, + "nodeType": "Return", + "src": "11410:44:20" + } + ] + }, + "documentation": { + "id": 4905, + "nodeType": "StructuredDocumentation", + "src": "11242:70:20", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 4925, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "11326:8:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4908, + "mutability": "mutable", + "name": "set", + "nameLocation": "11351:3:20", + "nodeType": "VariableDeclaration", + "scope": 4925, + "src": "11335:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 4907, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4906, + "name": "UintSet", + "nameLocations": [ + "11335:7:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "11335:7:20" + }, + "referencedDeclaration": 4862, + "src": "11335:7:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4910, + "mutability": "mutable", + "name": "value", + "nameLocation": "11364:5:20", + "nodeType": "VariableDeclaration", + "scope": 4925, + "src": "11356:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11356:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11334:36:20" + }, + "returnParameters": { + "id": 4914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4913, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4925, + "src": "11394:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4912, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11394:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11393:6:20" + }, + "scope": 4992, + "src": "11317:144:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4939, + "nodeType": "Block", + "src": "11611:43:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 4935, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4929, + "src": "11636:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4936, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11640:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4861, + "src": "11636:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4934, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4549, + "src": "11628:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 4937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11628:19:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4933, + "id": 4938, + "nodeType": "Return", + "src": "11621:26:20" + } + ] + }, + "documentation": { + "id": 4926, + "nodeType": "StructuredDocumentation", + "src": "11467:70:20", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 4940, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "11551:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4929, + "mutability": "mutable", + "name": "set", + "nameLocation": "11574:3:20", + "nodeType": "VariableDeclaration", + "scope": 4940, + "src": "11558:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 4928, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4927, + "name": "UintSet", + "nameLocations": [ + "11558:7:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "11558:7:20" + }, + "referencedDeclaration": 4862, + "src": "11558:7:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "11557:21:20" + }, + "returnParameters": { + "id": 4933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4932, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4940, + "src": "11602:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11602:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11601:9:20" + }, + "scope": 4992, + "src": "11542:112:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4960, + "nodeType": "Block", + "src": "12076:55:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 4954, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4944, + "src": "12105:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4955, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12109:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4861, + "src": "12105:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 4956, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4946, + "src": "12117:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4953, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "12101:3:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 4957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12101:22:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12093:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4951, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12093:7:20", + "typeDescriptions": {} + } + }, + "id": 4958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12093:31:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4950, + "id": 4959, + "nodeType": "Return", + "src": "12086:38:20" + } + ] + }, + "documentation": { + "id": 4941, + "nodeType": "StructuredDocumentation", + "src": "11660:331:20", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4961, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "12005:2:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4944, + "mutability": "mutable", + "name": "set", + "nameLocation": "12024:3:20", + "nodeType": "VariableDeclaration", + "scope": 4961, + "src": "12008:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 4943, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4942, + "name": "UintSet", + "nameLocations": [ + "12008:7:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "12008:7:20" + }, + "referencedDeclaration": 4862, + "src": "12008:7:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4946, + "mutability": "mutable", + "name": "index", + "nameLocation": "12037:5:20", + "nodeType": "VariableDeclaration", + "scope": 4961, + "src": "12029:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12029:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12007:36:20" + }, + "returnParameters": { + "id": 4950, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4949, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4961, + "src": "12067:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12067:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12066:9:20" + }, + "scope": 4992, + "src": "11996:135:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4990, + "nodeType": "Block", + "src": "12749:219:20", + "statements": [ + { + "assignments": [ + 4975 + ], + "declarations": [ + { + "constant": false, + "id": 4975, + "mutability": "mutable", + "name": "store", + "nameLocation": "12776:5:20", + "nodeType": "VariableDeclaration", + "scope": 4990, + "src": "12759:22:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4973, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12759:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4974, + "nodeType": "ArrayTypeName", + "src": "12759:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 4980, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4977, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4965, + "src": "12792:3:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4978, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12796:6:20", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4861, + "src": "12792:10:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$4390_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4976, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "12784:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$4390_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 4979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12784:19:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12759:44:20" + }, + { + "assignments": [ + 4985 + ], + "declarations": [ + { + "constant": false, + "id": 4985, + "mutability": "mutable", + "name": "result", + "nameLocation": "12830:6:20", + "nodeType": "VariableDeclaration", + "scope": 4990, + "src": "12813:23:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12813:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4984, + "nodeType": "ArrayTypeName", + "src": "12813:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 4986, + "nodeType": "VariableDeclarationStatement", + "src": "12813:23:20" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "12899:39:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12913:15:20", + "value": { + "name": "store", + "nodeType": "YulIdentifier", + "src": "12923:5:20" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "12913:6:20" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 4985, + "isOffset": false, + "isSlot": false, + "src": "12913:6:20", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "12923:5:20", + "valueSize": 1 + } + ], + "id": 4987, + "nodeType": "InlineAssembly", + "src": "12890:48:20" + }, + { + "expression": { + "id": 4988, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4985, + "src": "12955:6:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 4970, + "id": 4989, + "nodeType": "Return", + "src": "12948:13:20" + } + ] + }, + "documentation": { + "id": 4962, + "nodeType": "StructuredDocumentation", + "src": "12137:529:20", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 4991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "12680:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4965, + "mutability": "mutable", + "name": "set", + "nameLocation": "12703:3:20", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "12687:19:20", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 4964, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4963, + "name": "UintSet", + "nameLocations": [ + "12687:7:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "12687:7:20" + }, + "referencedDeclaration": 4862, + "src": "12687:7:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "12686:21:20" + }, + "returnParameters": { + "id": 4970, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4969, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "12731:16:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12731:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4968, + "nodeType": "ArrayTypeName", + "src": "12731:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "12730:18:20" + }, + "scope": 4992, + "src": "12671:297:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4993, + "src": "1330:11640:20", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "205:12766:20" + }, + "id": 20 + }, + "src/LBFactory.sol": { + "ast": { + "absolutePath": "src/LBFactory.sol", + "exportedSymbols": { + "AccessControlUpgradeable": [ + 362 + ], + "Create2": [ + 2224 + ], + "Encoded": [ + 10496 + ], + "EnumerableMap": [ + 4379 + ], + "EnumerableSet": [ + 4992 + ], + "Hooks": [ + 9005 + ], + "IERC20": [ + 1838 + ], + "ILBFactory": [ + 7329 + ], + "ILBHooks": [ + 7527 + ], + "ILBPair": [ + 7970 + ], + "ImmutableClone": [ + 9083 + ], + "LBFactory": [ + 6622 + ], + "LBPairBeaconProxy": [ + 6837 + ], + "Ownable2StepUpgradeable": [ + 499 + ], + "OwnableUpgradeable": [ + 694 + ], + "PairParameterHelper": [ + 9940 + ], + "PriceHelper": [ + 10114 + ], + "SafeCast": [ + 11244 + ], + "UpgradeableBeacon": [ + 1760 + ] + }, + "id": 6623, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4994, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "33:24:21" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 4996, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 4993, + "src": "59:86:21", + "symbolAliases": [ + { + "foreign": { + "id": 4995, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4992, + "src": "67:13:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableMap.sol", + "id": 4998, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 4380, + "src": "146:86:21", + "symbolAliases": [ + { + "foreign": { + "id": 4997, + "name": "EnumerableMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4379, + "src": "154:13:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "id": 5000, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 363, + "src": "233:113:21", + "symbolAliases": [ + { + "foreign": { + "id": 4999, + "name": "AccessControlUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "241:24:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 5002, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 1839, + "src": "347:70:21", + "symbolAliases": [ + { + "foreign": { + "id": 5001, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "355:6:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol", + "id": 5005, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 500, + "src": "418:131:21", + "symbolAliases": [ + { + "foreign": { + "id": 5003, + "name": "Ownable2StepUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "426:23:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 5004, + "name": "OwnableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "451:18:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol", + "file": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol", + "id": 5007, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 1761, + "src": "550:93:21", + "symbolAliases": [ + { + "foreign": { + "id": 5006, + "name": "UpgradeableBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1760, + "src": "558:17:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/PairParameterHelper.sol", + "file": "./libraries/PairParameterHelper.sol", + "id": 5009, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 9941, + "src": "645:72:21", + "symbolAliases": [ + { + "foreign": { + "id": 5008, + "name": "PairParameterHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9940, + "src": "653:19:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Encoded.sol", + "file": "./libraries/math/Encoded.sol", + "id": 5011, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 10497, + "src": "718:53:21", + "symbolAliases": [ + { + "foreign": { + "id": 5010, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "726:7:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/ImmutableClone.sol", + "file": "./libraries/ImmutableClone.sol", + "id": 5013, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 9084, + "src": "772:62:21", + "symbolAliases": [ + { + "foreign": { + "id": 5012, + "name": "ImmutableClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9083, + "src": "780:14:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/PriceHelper.sol", + "file": "./libraries/PriceHelper.sol", + "id": 5015, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 10115, + "src": "835:56:21", + "symbolAliases": [ + { + "foreign": { + "id": 5014, + "name": "PriceHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10114, + "src": "843:11:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/SafeCast.sol", + "file": "./libraries/math/SafeCast.sol", + "id": 5017, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 11245, + "src": "892:55:21", + "symbolAliases": [ + { + "foreign": { + "id": 5016, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11244, + "src": "900:8:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Hooks.sol", + "file": "./libraries/Hooks.sol", + "id": 5019, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 9006, + "src": "948:44:21", + "symbolAliases": [ + { + "foreign": { + "id": 5018, + "name": "Hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9005, + "src": "956:5:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFactory.sol", + "file": "./interfaces/ILBFactory.sol", + "id": 5021, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 7330, + "src": "994:55:21", + "symbolAliases": [ + { + "foreign": { + "id": 5020, + "name": "ILBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7329, + "src": "1002:10:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBPair.sol", + "file": "./interfaces/ILBPair.sol", + "id": 5023, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 7971, + "src": "1050:49:21", + "symbolAliases": [ + { + "foreign": { + "id": 5022, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7970, + "src": "1058:7:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBHooks.sol", + "file": "./interfaces/ILBHooks.sol", + "id": 5025, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 7528, + "src": "1100:51:21", + "symbolAliases": [ + { + "foreign": { + "id": 5024, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "1108:8:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/LBPairBeaconProxy.sol", + "file": "./LBPairBeaconProxy.sol", + "id": 5027, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 6838, + "src": "1152:58:21", + "symbolAliases": [ + { + "foreign": { + "id": 5026, + "name": "LBPairBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6837, + "src": "1160:17:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "file": "@openzeppelin/contracts/utils/Create2.sol", + "id": 5029, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6623, + "sourceUnit": 2225, + "src": "1211:66:21", + "symbolAliases": [ + { + "foreign": { + "id": 5028, + "name": "Create2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2224, + "src": "1219:7:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 5031, + "name": "Ownable2StepUpgradeable", + "nameLocations": [ + "1563:23:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 499, + "src": "1563:23:21" + }, + "id": 5032, + "nodeType": "InheritanceSpecifier", + "src": "1563:23:21" + }, + { + "baseName": { + "id": 5033, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "1588:24:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "1588:24:21" + }, + "id": 5034, + "nodeType": "InheritanceSpecifier", + "src": "1588:24:21" + }, + { + "baseName": { + "id": 5035, + "name": "ILBFactory", + "nameLocations": [ + "1614:10:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7329, + "src": "1614:10:21" + }, + "id": 5036, + "nodeType": "InheritanceSpecifier", + "src": "1614:10:21" + } + ], + "canonicalName": "LBFactory", + "contractDependencies": [ + 6837 + ], + "contractKind": "contract", + "documentation": { + "id": 5030, + "nodeType": "StructuredDocumentation", + "src": "1280:260:21", + "text": " @title Liquidity Book Factory\n @notice Contract used to deploy and register new LBPairs.\n Enables setting fee parameters, flashloan fees and LBPair implementation.\n Unless the `isOpen` is `true`, only the owner of the factory can create pairs." + }, + "fullyImplemented": true, + "id": 6622, + "linearizedBaseContracts": [ + 6622, + 7329, + 362, + 1034, + 2346, + 1117, + 499, + 694, + 994, + 948 + ], + "name": "LBFactory", + "nameLocation": "1550:9:21", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 5039, + "libraryName": { + "id": 5037, + "name": "SafeCast", + "nameLocations": [ + "1637:8:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11244, + "src": "1637:8:21" + }, + "nodeType": "UsingForDirective", + "src": "1631:27:21", + "typeName": { + "id": 5038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1650:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 5042, + "libraryName": { + "id": 5040, + "name": "Encoded", + "nameLocations": [ + "1669:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10496, + "src": "1669:7:21" + }, + "nodeType": "UsingForDirective", + "src": "1663:26:21", + "typeName": { + "id": 5041, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1681:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 5045, + "libraryName": { + "id": 5043, + "name": "PairParameterHelper", + "nameLocations": [ + "1700:19:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9940, + "src": "1700:19:21" + }, + "nodeType": "UsingForDirective", + "src": "1694:38:21", + "typeName": { + "id": 5044, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1724:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 5049, + "libraryName": { + "id": 5046, + "name": "EnumerableSet", + "nameLocations": [ + "1743:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4992, + "src": "1743:13:21" + }, + "nodeType": "UsingForDirective", + "src": "1737:49:21", + "typeName": { + "id": 5048, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5047, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "1761:13:21", + "1775:10:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "1761:24:21" + }, + "referencedDeclaration": 4705, + "src": "1761:24:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "global": false, + "id": 5053, + "libraryName": { + "id": 5050, + "name": "EnumerableSet", + "nameLocations": [ + "1797:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4992, + "src": "1797:13:21" + }, + "nodeType": "UsingForDirective", + "src": "1791:46:21", + "typeName": { + "id": 5052, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5051, + "name": "EnumerableSet.UintSet", + "nameLocations": [ + "1815:13:21", + "1829:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "1815:21:21" + }, + "referencedDeclaration": 4862, + "src": "1815:21:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + }, + { + "global": false, + "id": 5057, + "libraryName": { + "id": 5054, + "name": "EnumerableMap", + "nameLocations": [ + "1848:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4379, + "src": "1848:13:21" + }, + "nodeType": "UsingForDirective", + "src": "1842:52:21", + "typeName": { + "id": 5056, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5055, + "name": "EnumerableMap.UintToUintMap", + "nameLocations": [ + "1866:13:21", + "1880:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "1866:27:21" + }, + "referencedDeclaration": 2582, + "src": "1866:27:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + } + }, + { + "constant": true, + "functionSelector": "1af5bacc", + "id": 5062, + "mutability": "constant", + "name": "LB_HOOKS_MANAGER_ROLE", + "nameLocation": "1924:21:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "1900:82:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5058, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1900:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4c425f484f4f4b535f4d414e414745525f524f4c45", + "id": 5060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1958:23:21", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9", + "typeString": "literal_string \"LB_HOOKS_MANAGER_ROLE\"" + }, + "value": "LB_HOOKS_MANAGER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_dcf4465aa60d92459eb361fac2489220ae3c524301cc0433c30a5d83e8fb0fa9", + "typeString": "literal_string \"LB_HOOKS_MANAGER_ROLE\"" + } + ], + "id": 5059, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "1948:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1948:34:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "661d7ffb", + "id": 5067, + "mutability": "constant", + "name": "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE", + "nameLocation": "2012:41:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "1988:122:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5063, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1988:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4c425f504149525f424541434f4e5f494d504c454d454e544154494f4e5f5041555345525f524f4c45", + "id": 5065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2066:43:21", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d", + "typeString": "literal_string \"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\"" + }, + "value": "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9daad794d31bffea33c7c571b462185cbd402366f4696e49c91be26e9222bb9d", + "typeString": "literal_string \"LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE\"" + } + ], + "id": 5064, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "2056:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2056:54:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 5070, + "mutability": "constant", + "name": "_OFFSET_IS_PRESET_OPEN", + "nameLocation": "2142:22:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2117:53:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5068, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2117:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "323535", + "id": 5069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2167:3:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 5073, + "mutability": "constant", + "name": "_MIN_BIN_STEP", + "nameLocation": "2202:13:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2177:42:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5071, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2177:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 5072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2218:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 5076, + "mutability": "constant", + "name": "_MAX_FLASHLOAN_FEE", + "nameLocation": "2261:18:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2236:52:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2236:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "302e31653138", + "id": 5075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2282:6:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000_by_1", + "typeString": "int_const 100000000000000000" + }, + "value": "0.1e18" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5078, + "mutability": "mutable", + "name": "_feeRecipient", + "nameLocation": "2318:13:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2302:29:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2302:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5080, + "mutability": "mutable", + "name": "_flashLoanFee", + "nameLocation": "2353:13:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2337:29:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5079, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2337:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5082, + "mutability": "mutable", + "name": "_lbPairBeacon", + "nameLocation": "2390:13:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2373:30:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5081, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2373:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5086, + "mutability": "mutable", + "name": "_allLBPairs", + "nameLocation": "2428:11:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2410:29:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ILBPair_$7970_$dyn_storage", + "typeString": "contract ILBPair[]" + }, + "typeName": { + "baseType": { + "id": 5084, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5083, + "name": "ILBPair", + "nameLocations": [ + "2410:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "2410:7:21" + }, + "referencedDeclaration": 7970, + "src": "2410:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "id": 5085, + "nodeType": "ArrayTypeName", + "src": "2410:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ILBPair_$7970_$dyn_storage_ptr", + "typeString": "contract ILBPair[]" + } + }, + "visibility": "private" + }, + { + "constant": false, + "documentation": { + "id": 5087, + "nodeType": "StructuredDocumentation", + "src": "2446:265:21", + "text": " @dev Mapping from a (tokenA, tokenB, binStep) to a LBPair. The tokens are ordered to save gas, but they can be\n in the reverse order in the actual pair.\n Always query one of the 2 tokens of the pair to assert the order of the 2 tokens" + }, + "id": 5098, + "mutability": "mutable", + "name": "_lbPairsInfo", + "nameLocation": "2800:12:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2716:96:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation)))" + }, + "typeName": { + "id": 5097, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5089, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5088, + "name": "IERC20", + "nameLocations": [ + "2724:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "2724:6:21" + }, + "referencedDeclaration": 1838, + "src": "2724:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "nodeType": "Mapping", + "src": "2716:75:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation)))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5096, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5091, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5090, + "name": "IERC20", + "nameLocations": [ + "2742:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "2742:6:21" + }, + "referencedDeclaration": 1838, + "src": "2742:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "nodeType": "Mapping", + "src": "2734:56:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5095, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2760:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2752:37:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5094, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5093, + "name": "LBPairInformation", + "nameLocations": [ + "2771:17:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "2771:17:21" + }, + "referencedDeclaration": 6974, + "src": "2771:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5101, + "mutability": "mutable", + "name": "_presets", + "nameLocation": "2855:8:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2819:44:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap" + }, + "typeName": { + "id": 5100, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5099, + "name": "EnumerableMap.UintToUintMap", + "nameLocations": [ + "2819:13:21", + "2833:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2582, + "src": "2819:27:21" + }, + "referencedDeclaration": 2582, + "src": "2819:27:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage_ptr", + "typeString": "struct EnumerableMap.UintToUintMap" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5104, + "mutability": "mutable", + "name": "_quoteAssetWhitelist", + "nameLocation": "2902:20:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "2869:53:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 5103, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5102, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "2869:13:21", + "2883:10:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4705, + "src": "2869:24:21" + }, + "referencedDeclaration": 4705, + "src": "2869:24:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "private" + }, + { + "constant": false, + "documentation": { + "id": 5105, + "nodeType": "StructuredDocumentation", + "src": "2929:361:21", + "text": " @dev Mapping from a (tokenA, tokenB) to a set of available bin steps, this is used to keep track of the\n bin steps that are already used for a pair.\n The tokens are ordered to save gas, but they can be in the reverse order in the actual pair.\n Always query one of the 2 tokens of the pair to assert the order of the 2 tokens" + }, + "id": 5114, + "mutability": "mutable", + "name": "_availableLBPairBinSteps", + "nameLocation": "3363:24:21", + "nodeType": "VariableDeclaration", + "scope": 6622, + "src": "3295:92:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_struct$_UintSet_$4862_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => struct EnumerableSet.UintSet))" + }, + "typeName": { + "id": 5113, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5107, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5106, + "name": "IERC20", + "nameLocations": [ + "3303:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "3303:6:21" + }, + "referencedDeclaration": 1838, + "src": "3303:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "nodeType": "Mapping", + "src": "3295:59:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_struct$_UintSet_$4862_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => struct EnumerableSet.UintSet))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5112, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5109, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5108, + "name": "IERC20", + "nameLocations": [ + "3321:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "3321:6:21" + }, + "referencedDeclaration": 1838, + "src": "3321:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "nodeType": "Mapping", + "src": "3313:40:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_struct$_UintSet_$4862_storage_$", + "typeString": "mapping(contract IERC20 => struct EnumerableSet.UintSet)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5111, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5110, + "name": "EnumerableSet.UintSet", + "nameLocations": [ + "3331:13:21", + "3345:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "3331:21:21" + }, + "referencedDeclaration": 4862, + "src": "3331:21:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + } + }, + "visibility": "private" + }, + { + "body": { + "id": 5121, + "nodeType": "Block", + "src": "3462:39:21", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5118, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 916, + "src": "3472:20:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 5119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3472:22:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5120, + "nodeType": "ExpressionStatement", + "src": "3472:22:21" + } + ] + }, + "documentation": { + "id": 5115, + "nodeType": "StructuredDocumentation", + "src": "3395:48:21", + "text": "@custom:oz-upgrades-unsafe-allow constructor" + }, + "id": 5122, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5116, + "nodeType": "ParameterList", + "parameters": [], + "src": "3459:2:21" + }, + "returnParameters": { + "id": 5117, + "nodeType": "ParameterList", + "parameters": [], + "src": "3462:0:21" + }, + "scope": 6622, + "src": "3448:53:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 7114 + ], + "body": { + "id": 5166, + "nodeType": "Block", + "src": "3818:339:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5137, + "name": "initialOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5127, + "src": "3843:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5136, + "name": "__Ownable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "3828:14:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3828:28:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5139, + "nodeType": "ExpressionStatement", + "src": "3828:28:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5140, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "3871:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 5141, + "name": "_MAX_FLASHLOAN_FEE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5076, + "src": "3886:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3871:33:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5148, + "nodeType": "IfStatement", + "src": "3867:111:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 5144, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "3945:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5145, + "name": "_MAX_FLASHLOAN_FEE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5076, + "src": "3959:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5143, + "name": "LBFactory__FlashLoanFeeAboveMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6917, + "src": "3913:31:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3913:65:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5147, + "nodeType": "RevertStatement", + "src": "3906:72:21" + } + }, + { + "expression": { + "arguments": [ + { + "id": 5150, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5125, + "src": "4006:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5149, + "name": "_setFeeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6427, + "src": "3989:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 5151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3989:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5152, + "nodeType": "ExpressionStatement", + "src": "3989:30:21" + }, + { + "expression": { + "id": 5155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5153, + "name": "_flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5080, + "src": "4030:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5154, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "4046:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4030:28:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5156, + "nodeType": "ExpressionStatement", + "src": "4030:28:21" + }, + { + "expression": { + "id": 5159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5157, + "name": "_lbPairBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5082, + "src": "4068:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5158, + "name": "lbPairBeaconAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5131, + "src": "4084:19:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4068:35:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5160, + "nodeType": "ExpressionStatement", + "src": "4068:35:21" + }, + { + "eventCall": { + "arguments": [ + { + "hexValue": "30", + "id": 5162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4134:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 5163, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5129, + "src": "4137:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5161, + "name": "FlashLoanFeeSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7001, + "src": "4118:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 5164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4118:32:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5165, + "nodeType": "EmitStatement", + "src": "4113:37:21" + } + ] + }, + "documentation": { + "id": 5123, + "nodeType": "StructuredDocumentation", + "src": "3507:170:21", + "text": " @notice Initializer function\n @param feeRecipient The address of the fee recipient\n @param flashLoanFee The value of the fee for flash loan" + }, + "functionSelector": "be203094", + "id": 5167, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 5134, + "kind": "modifierInvocation", + "modifierName": { + "id": 5133, + "name": "initializer", + "nameLocations": [ + "3797:11:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 802, + "src": "3797:11:21" + }, + "nodeType": "ModifierInvocation", + "src": "3797:11:21" + } + ], + "name": "initialize", + "nameLocation": "3691:10:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5125, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "3710:12:21", + "nodeType": "VariableDeclaration", + "scope": 5167, + "src": "3702:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3702:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5127, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "3732:12:21", + "nodeType": "VariableDeclaration", + "scope": 5167, + "src": "3724:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3724:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5129, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "3754:12:21", + "nodeType": "VariableDeclaration", + "scope": 5167, + "src": "3746:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3746:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5131, + "mutability": "mutable", + "name": "lbPairBeaconAddress", + "nameLocation": "3776:19:21", + "nodeType": "VariableDeclaration", + "scope": 5167, + "src": "3768:27:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3768:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3701:95:21" + }, + "returnParameters": { + "id": 5135, + "nodeType": "ParameterList", + "parameters": [], + "src": "3818:0:21" + }, + "scope": 6622, + "src": "3682:475:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7057 + ], + "body": { + "id": 5176, + "nodeType": "Block", + "src": "4338:37:21", + "statements": [ + { + "expression": { + "id": 5174, + "name": "_MIN_BIN_STEP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5073, + "src": "4355:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5173, + "id": 5175, + "nodeType": "Return", + "src": "4348:20:21" + } + ] + }, + "documentation": { + "id": 5168, + "nodeType": "StructuredDocumentation", + "src": "4163:93:21", + "text": " @notice Get the minimum bin step a pair can have\n @return minBinStep" + }, + "functionSelector": "701ab8c1", + "id": 5177, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMinBinStep", + "nameLocation": "4270:13:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5170, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4300:8:21" + }, + "parameters": { + "id": 5169, + "nodeType": "ParameterList", + "parameters": [], + "src": "4283:2:21" + }, + "returnParameters": { + "id": 5173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5172, + "mutability": "mutable", + "name": "minBinStep", + "nameLocation": "4326:10:21", + "nodeType": "VariableDeclaration", + "scope": 5177, + "src": "4318:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4318:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4317:20:21" + }, + "scope": 6622, + "src": "4261:114:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7062 + ], + "body": { + "id": 5186, + "nodeType": "Block", + "src": "4552:37:21", + "statements": [ + { + "expression": { + "id": 5184, + "name": "_feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5078, + "src": "4569:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5183, + "id": 5185, + "nodeType": "Return", + "src": "4562:20:21" + } + ] + }, + "documentation": { + "id": 5178, + "nodeType": "StructuredDocumentation", + "src": "4381:85:21", + "text": " @notice Get the protocol fee recipient\n @return feeRecipient" + }, + "functionSelector": "4ccb20c0", + "id": 5187, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFeeRecipient", + "nameLocation": "4480:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5180, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4512:8:21" + }, + "parameters": { + "id": 5179, + "nodeType": "ParameterList", + "parameters": [], + "src": "4495:2:21" + }, + "returnParameters": { + "id": 5183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5182, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "4538:12:21", + "nodeType": "VariableDeclaration", + "scope": 5187, + "src": "4530:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5181, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4530:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4529:22:21" + }, + "scope": 6622, + "src": "4471:118:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7067 + ], + "body": { + "id": 5196, + "nodeType": "Block", + "src": "4772:42:21", + "statements": [ + { + "expression": { + "id": 5194, + "name": "_MAX_FLASHLOAN_FEE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5076, + "src": "4789:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5193, + "id": 5195, + "nodeType": "Return", + "src": "4782:25:21" + } + ] + }, + "documentation": { + "id": 5188, + "nodeType": "StructuredDocumentation", + "src": "4595:94:21", + "text": " @notice Get the maximum fee percentage for flashLoans\n @return maxFee" + }, + "functionSelector": "8ce9aa1c", + "id": 5197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMaxFlashLoanFee", + "nameLocation": "4703:18:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5190, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4738:8:21" + }, + "parameters": { + "id": 5189, + "nodeType": "ParameterList", + "parameters": [], + "src": "4721:2:21" + }, + "returnParameters": { + "id": 5193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5192, + "mutability": "mutable", + "name": "maxFee", + "nameLocation": "4764:6:21", + "nodeType": "VariableDeclaration", + "scope": 5197, + "src": "4756:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4756:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4755:16:21" + }, + "scope": 6622, + "src": "4694:120:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7072 + ], + "body": { + "id": 5206, + "nodeType": "Block", + "src": "5030:37:21", + "statements": [ + { + "expression": { + "id": 5204, + "name": "_flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5080, + "src": "5047:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5203, + "id": 5205, + "nodeType": "Return", + "src": "5040:20:21" + } + ] + }, + "documentation": { + "id": 5198, + "nodeType": "StructuredDocumentation", + "src": "4820:124:21", + "text": " @notice Get the fee for flash loans, in 1e18\n @return flashLoanFee The fee for flash loans, in 1e18" + }, + "functionSelector": "fd90c2be", + "id": 5207, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFlashLoanFee", + "nameLocation": "4958:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5200, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4990:8:21" + }, + "parameters": { + "id": 5199, + "nodeType": "ParameterList", + "parameters": [], + "src": "4973:2:21" + }, + "returnParameters": { + "id": 5203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5202, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "5016:12:21", + "nodeType": "VariableDeclaration", + "scope": 5207, + "src": "5008:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5008:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5007:22:21" + }, + "scope": 6622, + "src": "4949:118:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7077 + ], + "body": { + "id": 5216, + "nodeType": "Block", + "src": "5283:37:21", + "statements": [ + { + "expression": { + "id": 5214, + "name": "_lbPairBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5082, + "src": "5300:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5213, + "id": 5215, + "nodeType": "Return", + "src": "5293:20:21" + } + ] + }, + "documentation": { + "id": 5208, + "nodeType": "StructuredDocumentation", + "src": "5073:124:21", + "text": " @notice Get the address of the LBPair beacon\n @return lbPairBeacon The address of the LBPair beacon" + }, + "functionSelector": "a0a0ea39", + "id": 5217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLBPairBeacon", + "nameLocation": "5211:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5210, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5243:8:21" + }, + "parameters": { + "id": 5209, + "nodeType": "ParameterList", + "parameters": [], + "src": "5226:2:21" + }, + "returnParameters": { + "id": 5213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5212, + "mutability": "mutable", + "name": "lbPairBeacon", + "nameLocation": "5269:12:21", + "nodeType": "VariableDeclaration", + "scope": 5217, + "src": "5261:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5261:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5260:22:21" + }, + "scope": 6622, + "src": "5202:118:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7082 + ], + "body": { + "id": 5227, + "nodeType": "Block", + "src": "5523:42:21", + "statements": [ + { + "expression": { + "expression": { + "id": 5224, + "name": "_allLBPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5086, + "src": "5540:11:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ILBPair_$7970_$dyn_storage", + "typeString": "contract ILBPair[] storage ref" + } + }, + "id": 5225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5552:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5540:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5223, + "id": 5226, + "nodeType": "Return", + "src": "5533:25:21" + } + ] + }, + "documentation": { + "id": 5218, + "nodeType": "StructuredDocumentation", + "src": "5326:108:21", + "text": " @notice View function to return the number of LBPairs created\n @return lbPairNumber" + }, + "functionSelector": "4e937c3a", + "id": 5228, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNumberOfLBPairs", + "nameLocation": "5448:18:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5220, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5483:8:21" + }, + "parameters": { + "id": 5219, + "nodeType": "ParameterList", + "parameters": [], + "src": "5466:2:21" + }, + "returnParameters": { + "id": 5223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5222, + "mutability": "mutable", + "name": "lbPairNumber", + "nameLocation": "5509:12:21", + "nodeType": "VariableDeclaration", + "scope": 5228, + "src": "5501:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5221, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5501:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5500:22:21" + }, + "scope": 6622, + "src": "5439:126:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7090 + ], + "body": { + "id": 5242, + "nodeType": "Block", + "src": "5846:42:21", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 5238, + "name": "_allLBPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5086, + "src": "5863:11:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ILBPair_$7970_$dyn_storage", + "typeString": "contract ILBPair[] storage ref" + } + }, + "id": 5240, + "indexExpression": { + "id": 5239, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5231, + "src": "5875:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5863:18:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "functionReturnParameters": 5237, + "id": 5241, + "nodeType": "Return", + "src": "5856:25:21" + } + ] + }, + "documentation": { + "id": 5229, + "nodeType": "StructuredDocumentation", + "src": "5571:181:21", + "text": " @notice View function to return the LBPair created at index `index`\n @param index The index\n @return lbPair The address of the LBPair at index `index`" + }, + "functionSelector": "7daf5d66", + "id": 5243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLBPairAtIndex", + "nameLocation": "5766:16:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5233, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5812:8:21" + }, + "parameters": { + "id": 5232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5231, + "mutability": "mutable", + "name": "index", + "nameLocation": "5791:5:21", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "5783:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5783:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5782:15:21" + }, + "returnParameters": { + "id": 5237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5236, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "5838:6:21", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "5830:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 5235, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5234, + "name": "ILBPair", + "nameLocations": [ + "5830:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "5830:7:21" + }, + "referencedDeclaration": 7970, + "src": "5830:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "5829:16:21" + }, + "scope": 6622, + "src": "5757:131:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7095 + ], + "body": { + "id": 5254, + "nodeType": "Block", + "src": "6145:53:21", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5250, + "name": "_quoteAssetWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "6162:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 5251, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6183:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 4801, + "src": "6162:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$4705_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$4705_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 5252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6162:29:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5249, + "id": 5253, + "nodeType": "Return", + "src": "6155:36:21" + } + ] + }, + "documentation": { + "id": 5244, + "nodeType": "StructuredDocumentation", + "src": "5894:151:21", + "text": " @notice View function to return the number of quote assets whitelisted\n @return numberOfQuoteAssets The number of quote assets" + }, + "functionSelector": "80c5061e", + "id": 5255, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNumberOfQuoteAssets", + "nameLocation": "6059:22:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5246, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6098:8:21" + }, + "parameters": { + "id": 5245, + "nodeType": "ParameterList", + "parameters": [], + "src": "6081:2:21" + }, + "returnParameters": { + "id": 5249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5248, + "mutability": "mutable", + "name": "numberOfQuoteAssets", + "nameLocation": "6124:19:21", + "nodeType": "VariableDeclaration", + "scope": 5255, + "src": "6116:27:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6116:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6115:29:21" + }, + "scope": 6622, + "src": "6050:148:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7103 + ], + "body": { + "id": 5272, + "nodeType": "Block", + "src": "6493:62:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5268, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5258, + "src": "6541:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5266, + "name": "_quoteAssetWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "6517:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 5267, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6538:2:21", + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 4828, + "src": "6517:23:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$4705_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$4705_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 5269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6517:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5265, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "6510:6:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1838_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 5270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6510:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 5264, + "id": 5271, + "nodeType": "Return", + "src": "6503:45:21" + } + ] + }, + "documentation": { + "id": 5256, + "nodeType": "StructuredDocumentation", + "src": "6204:193:21", + "text": " @notice View function to return the quote asset whitelisted at index `index`\n @param index The index\n @return asset The address of the quoteAsset at index `index`" + }, + "functionSelector": "0752092b", + "id": 5273, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getQuoteAssetAtIndex", + "nameLocation": "6411:20:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5260, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6461:8:21" + }, + "parameters": { + "id": 5259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5258, + "mutability": "mutable", + "name": "index", + "nameLocation": "6440:5:21", + "nodeType": "VariableDeclaration", + "scope": 5273, + "src": "6432:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6432:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6431:15:21" + }, + "returnParameters": { + "id": 5264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5263, + "mutability": "mutable", + "name": "asset", + "nameLocation": "6486:5:21", + "nodeType": "VariableDeclaration", + "scope": 5273, + "src": "6479:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5262, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5261, + "name": "IERC20", + "nameLocations": [ + "6479:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6479:6:21" + }, + "referencedDeclaration": 1838, + "src": "6479:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6478:14:21" + }, + "scope": 6622, + "src": "6402:153:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7122 + ], + "body": { + "id": 5291, + "nodeType": "Block", + "src": "6863:69:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5287, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5277, + "src": "6918:5:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6910:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5285, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6910:7:21", + "typeDescriptions": {} + } + }, + "id": 5288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6910:14:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 5283, + "name": "_quoteAssetWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "6880:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 5284, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6901:8:21", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 4786, + "src": "6880:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$4705_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$4705_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 5289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6880:45:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5282, + "id": 5290, + "nodeType": "Return", + "src": "6873:52:21" + } + ] + }, + "documentation": { + "id": 5274, + "nodeType": "StructuredDocumentation", + "src": "6561:215:21", + "text": " @notice View function to return whether a token is a quotedAsset (true) or not (false)\n @param token The address of the asset\n @return isQuote Whether the token is a quote asset or not" + }, + "functionSelector": "27721842", + "id": 5292, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isQuoteAsset", + "nameLocation": "6790:12:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5279, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6831:8:21" + }, + "parameters": { + "id": 5278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5277, + "mutability": "mutable", + "name": "token", + "nameLocation": "6810:5:21", + "nodeType": "VariableDeclaration", + "scope": 5292, + "src": "6803:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5276, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5275, + "name": "IERC20", + "nameLocations": [ + "6803:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6803:6:21" + }, + "referencedDeclaration": 1838, + "src": "6803:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6802:14:21" + }, + "returnParameters": { + "id": 5282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5281, + "mutability": "mutable", + "name": "isQuote", + "nameLocation": "6854:7:21", + "nodeType": "VariableDeclaration", + "scope": 5292, + "src": "6849:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5280, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6849:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6848:14:21" + }, + "scope": 6622, + "src": "6781:151:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7136 + ], + "body": { + "id": 5314, + "nodeType": "Block", + "src": "7507:70:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5309, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5296, + "src": "7546:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5310, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5299, + "src": "7554:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5311, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5301, + "src": "7562:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5308, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6476, + "src": "7524:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$returns$_t_struct$_LBPairInformation_$6974_memory_ptr_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (struct ILBFactory.LBPairInformation memory)" + } + }, + "id": 5312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7524:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "functionReturnParameters": 5307, + "id": 5313, + "nodeType": "Return", + "src": "7517:53:21" + } + ] + }, + "documentation": { + "id": 5293, + "nodeType": "StructuredDocumentation", + "src": "6938:375:21", + "text": " @notice Returns the LBPairInformation if it exists,\n if not, then the address 0 is returned. The order doesn't matter\n @param tokenA The address of the first token of the pair\n @param tokenB The address of the second token of the pair\n @param binStep The bin step of the LBPair\n @return lbPairInformation The LBPairInformation" + }, + "functionSelector": "704037bd", + "id": 5315, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLBPairInformation", + "nameLocation": "7327:20:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5303, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7433:8:21" + }, + "parameters": { + "id": 5302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5296, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "7355:6:21", + "nodeType": "VariableDeclaration", + "scope": 5315, + "src": "7348:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5295, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5294, + "name": "IERC20", + "nameLocations": [ + "7348:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "7348:6:21" + }, + "referencedDeclaration": 1838, + "src": "7348:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5299, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "7370:6:21", + "nodeType": "VariableDeclaration", + "scope": 5315, + "src": "7363:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5298, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5297, + "name": "IERC20", + "nameLocations": [ + "7363:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "7363:6:21" + }, + "referencedDeclaration": 1838, + "src": "7363:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5301, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "7386:7:21", + "nodeType": "VariableDeclaration", + "scope": 5315, + "src": "7378:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7378:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7347:47:21" + }, + "returnParameters": { + "id": 5307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5306, + "mutability": "mutable", + "name": "lbPairInformation", + "nameLocation": "7484:17:21", + "nodeType": "VariableDeclaration", + "scope": 5315, + "src": "7459:42:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + }, + "typeName": { + "id": 5305, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5304, + "name": "LBPairInformation", + "nameLocations": [ + "7459:17:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "7459:17:21" + }, + "referencedDeclaration": 6974, + "src": "7459:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "visibility": "internal" + } + ], + "src": "7458:44:21" + }, + "scope": 6622, + "src": "7318:259:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7157 + ], + "body": { + "id": 5407, + "nodeType": "Block", + "src": "8671:596:21", + "statements": [ + { + "condition": { + "id": 5342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8685:27:21", + "subExpression": { + "arguments": [ + { + "id": 5340, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "8704:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5338, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "8686:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 5339, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8695:8:21", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 2651, + "src": "8686:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) view returns (bool)" + } + }, + "id": 5341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8686:26:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5347, + "nodeType": "IfStatement", + "src": "8681:78:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 5344, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "8751:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5343, + "name": "LBFactory__BinStepHasNoPreset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6933, + "src": "8721:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 5345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8721:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5346, + "nodeType": "RevertStatement", + "src": "8714:45:21" + } + }, + { + "assignments": [ + 5349 + ], + "declarations": [ + { + "constant": false, + "id": 5349, + "mutability": "mutable", + "name": "preset", + "nameLocation": "8778:6:21", + "nodeType": "VariableDeclaration", + "scope": 5407, + "src": "8770:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5348, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8770:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5357, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 5354, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "8808:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5352, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "8795:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 5353, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8804:3:21", + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 2758, + "src": "8795:12:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) view returns (uint256)" + } + }, + "id": 5355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8795:21:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8787:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5350, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8787:7:21", + "typeDescriptions": {} + } + }, + "id": 5356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8787:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8770:47:21" + }, + { + "expression": { + "id": 5362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5358, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5322, + "src": "8828:10:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5359, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "8841:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8848:13:21", + "memberName": "getBaseFactor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9158, + "src": "8841:20:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8841:22:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "8828:35:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5363, + "nodeType": "ExpressionStatement", + "src": "8828:35:21" + }, + { + "expression": { + "id": 5368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5364, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5324, + "src": "8873:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5365, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "8888:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8895:15:21", + "memberName": "getFilterPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9174, + "src": "8888:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8888:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "8873:39:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5369, + "nodeType": "ExpressionStatement", + "src": "8873:39:21" + }, + { + "expression": { + "id": 5374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5370, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5326, + "src": "8922:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5371, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "8936:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8943:14:21", + "memberName": "getDecayPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9190, + "src": "8936:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8936:23:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "8922:37:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5375, + "nodeType": "ExpressionStatement", + "src": "8922:37:21" + }, + { + "expression": { + "id": 5380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5376, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5328, + "src": "8969:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5377, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "8987:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8994:18:21", + "memberName": "getReductionFactor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9206, + "src": "8987:25:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8987:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "8969:45:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5381, + "nodeType": "ExpressionStatement", + "src": "8969:45:21" + }, + { + "expression": { + "id": 5386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5382, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5330, + "src": "9024:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5383, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "9045:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9052:21:21", + "memberName": "getVariableFeeControl", + "nodeType": "MemberAccess", + "referencedDeclaration": 9222, + "src": "9045:28:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 5385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9045:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "9024:51:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5387, + "nodeType": "ExpressionStatement", + "src": "9024:51:21" + }, + { + "expression": { + "id": 5392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5388, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5332, + "src": "9085:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5389, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "9101:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9108:16:21", + "memberName": "getProtocolShare", + "nodeType": "MemberAccess", + "referencedDeclaration": 9238, + "src": "9101:23:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9101:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "9085:41:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5393, + "nodeType": "ExpressionStatement", + "src": "9085:41:21" + }, + { + "expression": { + "id": 5398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5394, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5334, + "src": "9136:24:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5395, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "9163:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9170:27:21", + "memberName": "getMaxVolatilityAccumulator", + "nodeType": "MemberAccess", + "referencedDeclaration": 9254, + "src": "9163:34:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 5397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9163:36:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "9136:63:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5399, + "nodeType": "ExpressionStatement", + "src": "9136:63:21" + }, + { + "expression": { + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5400, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5336, + "src": "9210:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5403, + "name": "_OFFSET_IS_PRESET_OPEN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "9237:22:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5401, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "9219:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9226:10:21", + "memberName": "decodeBool", + "nodeType": "MemberAccess", + "referencedDeclaration": 10387, + "src": "9219:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (bool)" + } + }, + "id": 5404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9219:41:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9210:50:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5406, + "nodeType": "ExpressionStatement", + "src": "9210:50:21" + } + ] + }, + "documentation": { + "id": 5316, + "nodeType": "StructuredDocumentation", + "src": "7583:687:21", + "text": " @notice View function to return the different parameters of the preset\n Will revert if the preset doesn't exist\n @param binStep The bin step of the preset\n @return baseFactor The base factor\n @return filterPeriod The filter period of the preset\n @return decayPeriod The decay period of the preset\n @return reductionFactor The reduction factor of the preset\n @return variableFeeControl The variable fee control of the preset\n @return protocolShare The protocol share of the preset\n @return maxVolatilityAccumulator The max volatility accumulator of the preset\n @return isOpen Whether the preset is open or not" + }, + "functionSelector": "aabc4b3c", + "id": 5408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPreset", + "nameLocation": "8284:9:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5320, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8349:8:21" + }, + "parameters": { + "id": 5319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5318, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "8302:7:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8294:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8294:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8293:17:21" + }, + "returnParameters": { + "id": 5337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5322, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "8396:10:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8388:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5321, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8388:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5324, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "8428:12:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8420:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8420:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5326, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "8462:11:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8454:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8454:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5328, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "8495:15:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8487:23:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8487:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5330, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "8532:18:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8524:26:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8524:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5332, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "8572:13:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8564:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8564:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5334, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "8607:24:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8599:32:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8599:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5336, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "8650:6:21", + "nodeType": "VariableDeclaration", + "scope": 5408, + "src": "8645:11:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5335, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8645:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8374:292:21" + }, + "scope": 6622, + "src": "8275:992:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7163 + ], + "body": { + "id": 5420, + "nodeType": "Block", + "src": "9519:39:21", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5416, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "9536:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 5417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9545:4:21", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 2788, + "src": "9536:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer) view returns (uint256[] memory)" + } + }, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9536:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 5415, + "id": 5419, + "nodeType": "Return", + "src": "9529:22:21" + } + ] + }, + "documentation": { + "id": 5409, + "nodeType": "StructuredDocumentation", + "src": "9273:147:21", + "text": " @notice View function to return the list of available binStep with a preset\n @return binStepWithPreset The list of binStep" + }, + "functionSelector": "5b35875c", + "id": 5421, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllBinSteps", + "nameLocation": "9434:14:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5411, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9465:8:21" + }, + "parameters": { + "id": 5410, + "nodeType": "ParameterList", + "parameters": [], + "src": "9448:2:21" + }, + "returnParameters": { + "id": 5415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5414, + "mutability": "mutable", + "name": "binStepWithPreset", + "nameLocation": "9500:17:21", + "nodeType": "VariableDeclaration", + "scope": 5421, + "src": "9483:34:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5412, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9483:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5413, + "nodeType": "ArrayTypeName", + "src": "9483:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "9482:36:21" + }, + "scope": 6622, + "src": "9425:133:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7169 + ], + "body": { + "id": 5494, + "nodeType": "Block", + "src": "9787:588:21", + "statements": [ + { + "assignments": [ + 5430 + ], + "declarations": [ + { + "constant": false, + "id": 5430, + "mutability": "mutable", + "name": "length", + "nameLocation": "9805:6:21", + "nodeType": "VariableDeclaration", + "scope": 5494, + "src": "9797:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9797:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5434, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5431, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "9814:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 5432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9823:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 2666, + "src": "9814:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer) view returns (uint256)" + } + }, + "id": 5433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9814:17:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9797:34:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5435, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5430, + "src": "9846:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9855:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9846:10:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5493, + "nodeType": "IfStatement", + "src": "9842:527:21", + "trueBody": { + "id": 5492, + "nodeType": "Block", + "src": "9858:511:21", + "statements": [ + { + "expression": { + "id": 5444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5438, + "name": "openBinStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5427, + "src": "9872:11:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5442, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5430, + "src": "9900:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "9886:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 5439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9890:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5440, + "nodeType": "ArrayTypeName", + "src": "9890:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 5443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9886:21:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "9872:35:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 5445, + "nodeType": "ExpressionStatement", + "src": "9872:35:21" + }, + { + "assignments": [ + 5447 + ], + "declarations": [ + { + "constant": false, + "id": 5447, + "mutability": "mutable", + "name": "index", + "nameLocation": "9930:5:21", + "nodeType": "VariableDeclaration", + "scope": 5492, + "src": "9922:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9922:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5448, + "nodeType": "VariableDeclarationStatement", + "src": "9922:13:21" + }, + { + "body": { + "id": 5484, + "nodeType": "Block", + "src": "9983:235:21", + "statements": [ + { + "assignments": [ + 5459, + 5461 + ], + "declarations": [ + { + "constant": false, + "id": 5459, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "10010:7:21", + "nodeType": "VariableDeclaration", + "scope": 5484, + "src": "10002:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5458, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10002:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5461, + "mutability": "mutable", + "name": "preset", + "nameLocation": "10027:6:21", + "nodeType": "VariableDeclaration", + "scope": 5484, + "src": "10019:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10019:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5466, + "initialValue": { + "arguments": [ + { + "id": 5464, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5450, + "src": "10049:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5462, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "10037:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 5463, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10046:2:21", + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 2700, + "src": "10037:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) view returns (uint256,uint256)" + } + }, + "id": 5465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10037:14:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10001:50:21" + }, + { + "condition": { + "arguments": [ + { + "arguments": [ + { + "id": 5470, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "10096:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10088:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5468, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10088:7:21", + "typeDescriptions": {} + } + }, + "id": 5471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10088:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5467, + "name": "_isPresetOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "10074:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 5472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10074:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5483, + "nodeType": "IfStatement", + "src": "10070:134:21", + "trueBody": { + "id": 5482, + "nodeType": "Block", + "src": "10106:98:21", + "statements": [ + { + "expression": { + "id": 5477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5473, + "name": "openBinStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5427, + "src": "10128:11:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 5475, + "indexExpression": { + "id": 5474, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5447, + "src": "10140:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10128:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5476, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5459, + "src": "10149:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10128:28:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5478, + "nodeType": "ExpressionStatement", + "src": "10128:28:21" + }, + { + "expression": { + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10178:7:21", + "subExpression": { + "id": 5479, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5447, + "src": "10178:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5481, + "nodeType": "ExpressionStatement", + "src": "10178:7:21" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5452, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5450, + "src": "9966:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5453, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5430, + "src": "9970:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9966:10:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5485, + "initializationExpression": { + "assignments": [ + 5450 + ], + "declarations": [ + { + "constant": false, + "id": 5450, + "mutability": "mutable", + "name": "i", + "nameLocation": "9963:1:21", + "nodeType": "VariableDeclaration", + "scope": 5485, + "src": "9955:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9955:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5451, + "nodeType": "VariableDeclarationStatement", + "src": "9955:9:21" + }, + "loopExpression": { + "expression": { + "id": 5456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "9978:3:21", + "subExpression": { + "id": 5455, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5450, + "src": "9980:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5457, + "nodeType": "ExpressionStatement", + "src": "9978:3:21" + }, + "nodeType": "ForStatement", + "src": "9950:268:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5486, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5447, + "src": "10236:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5487, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5430, + "src": "10244:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10236:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5491, + "nodeType": "IfStatement", + "src": "10232:127:21", + "trueBody": { + "id": 5490, + "nodeType": "Block", + "src": "10252:107:21", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "10279:66:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "openBinStep", + "nodeType": "YulIdentifier", + "src": "10308:11:21" + }, + { + "name": "index", + "nodeType": "YulIdentifier", + "src": "10321:5:21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10301:6:21" + }, + "nodeType": "YulFunctionCall", + "src": "10301:26:21" + }, + "nodeType": "YulExpressionStatement", + "src": "10301:26:21" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "10321:5:21", + "valueSize": 1 + }, + { + "declaration": 5427, + "isOffset": false, + "isSlot": false, + "src": "10308:11:21", + "valueSize": 1 + } + ], + "id": 5489, + "nodeType": "InlineAssembly", + "src": "10270:75:21" + } + ] + } + } + ] + } + } + ] + }, + "documentation": { + "id": 5422, + "nodeType": "StructuredDocumentation", + "src": "9564:129:21", + "text": " @notice View function to return the list of open binSteps\n @return openBinStep The list of open binSteps" + }, + "functionSelector": "0282c9c1", + "id": 5495, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOpenBinSteps", + "nameLocation": "9707:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5424, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9739:8:21" + }, + "parameters": { + "id": 5423, + "nodeType": "ParameterList", + "parameters": [], + "src": "9722:2:21" + }, + "returnParameters": { + "id": 5428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5427, + "mutability": "mutable", + "name": "openBinStep", + "nameLocation": "9774:11:21", + "nodeType": "VariableDeclaration", + "scope": 5495, + "src": "9757:28:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5425, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9757:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5426, + "nodeType": "ArrayTypeName", + "src": "9757:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "9756:30:21" + }, + "scope": 6622, + "src": "9698:677:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7182 + ], + "body": { + "id": 5605, + "nodeType": "Block", + "src": "10798:967:21", + "statements": [ + { + "id": 5604, + "nodeType": "UncheckedBlock", + "src": "10808:951:21", + "statements": [ + { + "assignments": [ + 5512, + 5515 + ], + "declarations": [ + { + "constant": false, + "id": 5512, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "10840:6:21", + "nodeType": "VariableDeclaration", + "scope": 5604, + "src": "10833:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5511, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5510, + "name": "IERC20", + "nameLocations": [ + "10833:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "10833:6:21" + }, + "referencedDeclaration": 1838, + "src": "10833:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5515, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "10855:6:21", + "nodeType": "VariableDeclaration", + "scope": 5604, + "src": "10848:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5514, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5513, + "name": "IERC20", + "nameLocations": [ + "10848:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "10848:6:21" + }, + "referencedDeclaration": 1838, + "src": "10848:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 5520, + "initialValue": { + "arguments": [ + { + "id": 5517, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5499, + "src": "10877:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5518, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5502, + "src": "10885:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5516, + "name": "_sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6509, + "src": "10865:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$returns$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "function (contract IERC20,contract IERC20) pure returns (contract IERC20,contract IERC20)" + } + }, + "id": 5519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10865:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10832:60:21" + }, + { + "assignments": [ + 5525 + ], + "declarations": [ + { + "constant": false, + "id": 5525, + "mutability": "mutable", + "name": "addressSet", + "nameLocation": "10937:10:21", + "nodeType": "VariableDeclaration", + "scope": 5604, + "src": "10907:40:21", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 5524, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5523, + "name": "EnumerableSet.UintSet", + "nameLocations": [ + "10907:13:21", + "10921:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4862, + "src": "10907:21:21" + }, + "referencedDeclaration": 4862, + "src": "10907:21:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "id": 5531, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 5526, + "name": "_availableLBPairBinSteps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5114, + "src": "10950:24:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_struct$_UintSet_$4862_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => struct EnumerableSet.UintSet storage ref))" + } + }, + "id": 5528, + "indexExpression": { + "id": 5527, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5512, + "src": "10975:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10950:32:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_struct$_UintSet_$4862_storage_$", + "typeString": "mapping(contract IERC20 => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 5530, + "indexExpression": { + "id": 5529, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5515, + "src": "10983:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10950:40:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10907:83:21" + }, + { + "assignments": [ + 5533 + ], + "declarations": [ + { + "constant": false, + "id": 5533, + "mutability": "mutable", + "name": "length", + "nameLocation": "11013:6:21", + "nodeType": "VariableDeclaration", + "scope": 5604, + "src": "11005:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5532, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11005:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5537, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5534, + "name": "addressSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5525, + "src": "11022:10:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 5535, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11033:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 4940, + "src": "11022:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$4862_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_UintSet_$4862_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)" + } + }, + "id": 5536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11022:19:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11005:36:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5538, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "11060:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 5539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11069:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11060:10:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5603, + "nodeType": "IfStatement", + "src": "11056:693:21", + "trueBody": { + "id": 5602, + "nodeType": "Block", + "src": "11072:677:21", + "statements": [ + { + "expression": { + "id": 5548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5541, + "name": "lbPairsAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5508, + "src": "11090:16:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5546, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "11133:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "11109:23:21", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct ILBFactory.LBPairInformation memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 5543, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5542, + "name": "LBPairInformation", + "nameLocations": [ + "11113:17:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "11113:17:21" + }, + "referencedDeclaration": 6974, + "src": "11113:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "id": 5544, + "nodeType": "ArrayTypeName", + "src": "11113:19:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_storage_$dyn_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation[]" + } + } + }, + "id": 5547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11109:31:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory[] memory" + } + }, + "src": "11090:50:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory[] memory" + } + }, + "id": 5549, + "nodeType": "ExpressionStatement", + "src": "11090:50:21" + }, + { + "assignments": [ + 5554 + ], + "declarations": [ + { + "constant": false, + "id": 5554, + "mutability": "mutable", + "name": "lbPairsInfo", + "nameLocation": "11205:11:21", + "nodeType": "VariableDeclaration", + "scope": 5602, + "src": "11159:57:21", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation)" + }, + "typeName": { + "id": 5553, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 5550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11167:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "11159:37:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 5552, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5551, + "name": "LBPairInformation", + "nameLocations": [ + "11178:17:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "11178:17:21" + }, + "referencedDeclaration": 6974, + "src": "11178:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + } + }, + "visibility": "internal" + } + ], + "id": 5560, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 5555, + "name": "_lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "11219:12:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)))" + } + }, + "id": 5557, + "indexExpression": { + "id": 5556, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5512, + "src": "11232:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11219:20:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref))" + } + }, + "id": 5559, + "indexExpression": { + "id": 5558, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5515, + "src": "11240:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11219:28:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11159:88:21" + }, + { + "body": { + "id": 5600, + "nodeType": "Block", + "src": "11303:432:21", + "statements": [ + { + "assignments": [ + 5572 + ], + "declarations": [ + { + "constant": false, + "id": 5572, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "11332:7:21", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "11325:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5571, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "11325:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "id": 5579, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 5575, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5562, + "src": "11356:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5573, + "name": "addressSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5525, + "src": "11342:10:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 5574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11353:2:21", + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 4961, + "src": "11342:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$4862_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_UintSet_$4862_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)" + } + }, + "id": 5576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11342:16:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11359:6:21", + "memberName": "safe16", + "nodeType": "MemberAccess", + "referencedDeclaration": 11221, + "src": "11342:23:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint16_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint16)" + } + }, + "id": 5578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11342:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11325:42:21" + }, + { + "expression": { + "id": 5598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5580, + "name": "lbPairsAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5508, + "src": "11390:16:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory[] memory" + } + }, + "id": 5582, + "indexExpression": { + "id": 5581, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5562, + "src": "11407:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11390:19:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5584, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5572, + "src": "11465:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "baseExpression": { + "id": 5585, + "name": "lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5554, + "src": "11506:11:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 5587, + "indexExpression": { + "id": 5586, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5572, + "src": "11518:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11506:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "id": 5588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11527:6:21", + "memberName": "LBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 6969, + "src": "11506:27:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + { + "expression": { + "baseExpression": { + "id": 5589, + "name": "lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5554, + "src": "11575:11:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 5591, + "indexExpression": { + "id": 5590, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5572, + "src": "11587:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11575:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "id": 5592, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11596:14:21", + "memberName": "createdByOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 6971, + "src": "11575:35:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "baseExpression": { + "id": 5593, + "name": "lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5554, + "src": "11655:11:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 5595, + "indexExpression": { + "id": 5594, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5572, + "src": "11667:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11655:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "id": 5596, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11676:17:21", + "memberName": "ignoredForRouting", + "nodeType": "MemberAccess", + "referencedDeclaration": 6973, + "src": "11655:38:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5583, + "name": "LBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6974, + "src": "11412:17:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_LBPairInformation_$6974_storage_ptr_$", + "typeString": "type(struct ILBFactory.LBPairInformation storage pointer)" + } + }, + "id": 5597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "11456:7:21", + "11498:6:21", + "11559:14:21", + "11636:17:21" + ], + "names": [ + "binStep", + "LBPair", + "createdByOwner", + "ignoredForRouting" + ], + "nodeType": "FunctionCall", + "src": "11412:304:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "src": "11390:326:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "id": 5599, + "nodeType": "ExpressionStatement", + "src": "11390:326:21" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5565, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5562, + "src": "11286:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5566, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "11290:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11286:10:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5601, + "initializationExpression": { + "assignments": [ + 5562 + ], + "declarations": [ + { + "constant": false, + "id": 5562, + "mutability": "mutable", + "name": "i", + "nameLocation": "11279:1:21", + "nodeType": "VariableDeclaration", + "scope": 5601, + "src": "11271:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11271:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5564, + "initialValue": { + "hexValue": "30", + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11283:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11271:13:21" + }, + "loopExpression": { + "expression": { + "id": 5569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "11298:3:21", + "subExpression": { + "id": 5568, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5562, + "src": "11300:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5570, + "nodeType": "ExpressionStatement", + "src": "11298:3:21" + }, + "nodeType": "ForStatement", + "src": "11266:469:21" + } + ] + } + } + ] + } + ] + }, + "documentation": { + "id": 5496, + "nodeType": "StructuredDocumentation", + "src": "10381:246:21", + "text": " @notice View function to return all the LBPair of a pair of tokens\n @param tokenX The first token of the pair\n @param tokenY The second token of the pair\n @return lbPairsAvailable The list of available LBPairs" + }, + "functionSelector": "6622e0d7", + "id": 5606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllLBPairs", + "nameLocation": "10641:13:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5504, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10723:8:21" + }, + "parameters": { + "id": 5503, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5499, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "10662:6:21", + "nodeType": "VariableDeclaration", + "scope": 5606, + "src": "10655:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5498, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5497, + "name": "IERC20", + "nameLocations": [ + "10655:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "10655:6:21" + }, + "referencedDeclaration": 1838, + "src": "10655:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5502, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "10677:6:21", + "nodeType": "VariableDeclaration", + "scope": 5606, + "src": "10670:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5501, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5500, + "name": "IERC20", + "nameLocations": [ + "10670:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "10670:6:21" + }, + "referencedDeclaration": 1838, + "src": "10670:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "10654:30:21" + }, + "returnParameters": { + "id": 5509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5508, + "mutability": "mutable", + "name": "lbPairsAvailable", + "nameLocation": "10776:16:21", + "nodeType": "VariableDeclaration", + "scope": 5606, + "src": "10749:43:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation[]" + }, + "typeName": { + "baseType": { + "id": 5506, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5505, + "name": "LBPairInformation", + "nameLocations": [ + "10749:17:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "10749:17:21" + }, + "referencedDeclaration": 6974, + "src": "10749:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "id": 5507, + "nodeType": "ArrayTypeName", + "src": "10749:19:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_storage_$dyn_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation[]" + } + }, + "visibility": "internal" + } + ], + "src": "10748:45:21" + }, + "scope": 6622, + "src": "10632:1133:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7187 + ], + "body": { + "id": 5613, + "nodeType": "Block", + "src": "11877:65:21", + "statements": [ + { + "expression": { + "id": 5611, + "name": "LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "11894:41:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 5610, + "id": 5612, + "nodeType": "Return", + "src": "11887:48:21" + } + ] + }, + "functionSelector": "c1b931be", + "id": 5614, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPauserRole", + "nameLocation": "11829:13:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5607, + "nodeType": "ParameterList", + "parameters": [], + "src": "11842:2:21" + }, + "returnParameters": { + "id": 5610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5609, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5614, + "src": "11868:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5608, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11868:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11867:9:21" + }, + "scope": 6622, + "src": "11820:122:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7203 + ], + "body": { + "id": 5862, + "nodeType": "Block", + "src": "12494:2342:21", + "statements": [ + { + "condition": { + "id": 5636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12508:27:21", + "subExpression": { + "arguments": [ + { + "id": 5634, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "12527:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 5632, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "12509:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 5633, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12518:8:21", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 2651, + "src": "12509:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) view returns (bool)" + } + }, + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12509:26:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5641, + "nodeType": "IfStatement", + "src": "12504:78:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 5638, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "12574:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 5637, + "name": "LBFactory__BinStepHasNoPreset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6933, + "src": "12544:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 5639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12544:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5640, + "nodeType": "RevertStatement", + "src": "12537:45:21" + } + }, + { + "assignments": [ + 5643 + ], + "declarations": [ + { + "constant": false, + "id": 5643, + "mutability": "mutable", + "name": "preset", + "nameLocation": "12601:6:21", + "nodeType": "VariableDeclaration", + "scope": 5862, + "src": "12593:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12593:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5651, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 5648, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "12631:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 5646, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "12618:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 5647, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12627:3:21", + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 2758, + "src": "12618:12:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) view returns (uint256)" + } + }, + "id": 5649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12618:21:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12610:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5644, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12610:7:21", + "typeDescriptions": {} + } + }, + "id": 5650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12610:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12593:47:21" + }, + { + "assignments": [ + 5653 + ], + "declarations": [ + { + "constant": false, + "id": 5653, + "mutability": "mutable", + "name": "isOwner", + "nameLocation": "12655:7:21", + "nodeType": "VariableDeclaration", + "scope": 5862, + "src": "12650:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5652, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12650:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 5659, + "initialValue": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5654, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "12665:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12669:6:21", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12665:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5656, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "12679:5:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 5657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12679:7:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12665:21:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12650:36:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12701:22:21", + "subExpression": { + "arguments": [ + { + "id": 5661, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "12716:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5660, + "name": "_isPresetOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "12702:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) pure returns (bool)" + } + }, + "id": 5662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12702:21:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 5665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12727:8:21", + "subExpression": { + "id": 5664, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5653, + "src": "12728:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12701:34:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5674, + "nodeType": "IfStatement", + "src": "12697:126:21", + "trueBody": { + "id": 5673, + "nodeType": "Block", + "src": "12737:86:21", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 5668, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "12792:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12796:6:21", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12792:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5670, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "12804:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 5667, + "name": "LBFactory__PresetIsLockedForUsers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6927, + "src": "12758:33:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 5671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12758:54:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5672, + "nodeType": "RevertStatement", + "src": "12751:61:21" + } + ] + } + }, + { + "condition": { + "id": 5682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12837:47:21", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 5679, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5621, + "src": "12876:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12868:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5677, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12868:7:21", + "typeDescriptions": {} + } + }, + "id": 5680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12868:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 5675, + "name": "_quoteAssetWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "12838:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 5676, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12859:8:21", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 4786, + "src": "12838:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$4705_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$4705_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 5681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12838:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5687, + "nodeType": "IfStatement", + "src": "12833:103:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 5684, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5621, + "src": "12929:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5683, + "name": "LBFactory__QuoteAssetNotWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6874, + "src": "12893:35:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$returns$__$", + "typeString": "function (contract IERC20) pure" + } + }, + "id": 5685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12893:43:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5686, + "nodeType": "RevertStatement", + "src": "12886:50:21" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "id": 5690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5688, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "12951:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 5689, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5621, + "src": "12961:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "src": "12951:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5695, + "nodeType": "IfStatement", + "src": "12947:66:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 5692, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "13006:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5691, + "name": "LBFactory__IdenticalAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6869, + "src": "12976:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$returns$__$", + "typeString": "function (contract IERC20) pure" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12976:37:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5694, + "nodeType": "RevertStatement", + "src": "12969:44:21" + } + }, + { + "expression": { + "arguments": [ + { + "id": 5699, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5623, + "src": "13121:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "id": 5700, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "13131:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 5696, + "name": "PriceHelper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10114, + "src": "13094:11:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PriceHelper_$10114_$", + "typeString": "type(library PriceHelper)" + } + }, + "id": 5698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13106:14:21", + "memberName": "getPriceFromId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9995, + "src": "13094:26:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint24_$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (uint24,uint16) pure returns (uint256)" + } + }, + "id": 5701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13094:45:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5702, + "nodeType": "ExpressionStatement", + "src": "13094:45:21" + }, + { + "assignments": [ + 5705, + 5708 + ], + "declarations": [ + { + "constant": false, + "id": 5705, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "13265:6:21", + "nodeType": "VariableDeclaration", + "scope": 5862, + "src": "13258:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5704, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5703, + "name": "IERC20", + "nameLocations": [ + "13258:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "13258:6:21" + }, + "referencedDeclaration": 1838, + "src": "13258:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5708, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "13280:6:21", + "nodeType": "VariableDeclaration", + "scope": 5862, + "src": "13273:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5707, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5706, + "name": "IERC20", + "nameLocations": [ + "13273:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "13273:6:21" + }, + "referencedDeclaration": 1838, + "src": "13273:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 5713, + "initialValue": { + "arguments": [ + { + "id": 5710, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "13302:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5711, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5621, + "src": "13310:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5709, + "name": "_sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6509, + "src": "13290:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$returns$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "function (contract IERC20,contract IERC20) pure returns (contract IERC20,contract IERC20)" + } + }, + "id": 5712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13290:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13257:60:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5716, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5705, + "src": "13377:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13369:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13369:7:21", + "typeDescriptions": {} + } + }, + "id": 5717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13369:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13396:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13388:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13388:7:21", + "typeDescriptions": {} + } + }, + "id": 5721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13388:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13369:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5726, + "nodeType": "IfStatement", + "src": "13365:66:21", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5723, + "name": "LBFactory__AddressZero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6881, + "src": "13407:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13407:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5725, + "nodeType": "RevertStatement", + "src": "13400:31:21" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "baseExpression": { + "id": 5729, + "name": "_lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "13453:12:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)))" + } + }, + "id": 5731, + "indexExpression": { + "id": 5730, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5705, + "src": "13466:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13453:20:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref))" + } + }, + "id": 5733, + "indexExpression": { + "id": 5732, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5708, + "src": "13474:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13453:28:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 5735, + "indexExpression": { + "id": 5734, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "13482:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13453:37:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "id": 5736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13491:6:21", + "memberName": "LBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 6969, + "src": "13453:44:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + ], + "id": 5728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13445:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13445:7:21", + "typeDescriptions": {} + } + }, + "id": 5737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13445:53:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13510:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13502:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13502:7:21", + "typeDescriptions": {} + } + }, + "id": 5741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13502:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13445:67:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5750, + "nodeType": "IfStatement", + "src": "13441:160:21", + "trueBody": { + "id": 5749, + "nodeType": "Block", + "src": "13514:87:21", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5744, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "13566:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5745, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5621, + "src": "13574:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5746, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "13582:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 5743, + "name": "LBFactory__LBPairAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6891, + "src": "13535:30:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,contract IERC20,uint256) pure" + } + }, + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13535:55:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5748, + "nodeType": "RevertStatement", + "src": "13528:62:21" + } + ] + } + }, + { + "id": 5820, + "nodeType": "Block", + "src": "13611:874:21", + "statements": [ + { + "assignments": [ + 5752 + ], + "declarations": [ + { + "constant": false, + "id": 5752, + "mutability": "mutable", + "name": "data", + "nameLocation": "13638:4:21", + "nodeType": "VariableDeclaration", + "scope": 5820, + "src": "13625:17:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5751, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13625:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5779, + "initialValue": { + "arguments": [ + { + "hexValue": "696e697469616c697a652875696e7431362c75696e7431362c75696e7431362c75696e7431362c75696e7432342c75696e7431362c75696e7432342c75696e74323429", + "id": 5755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13669:69:21", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47973bffbb1d7e013da162f2e093b4de900b8d7f4dd54ae9e107a3bfa74e426b", + "typeString": "literal_string \"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)\"" + }, + "value": "initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5756, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "13756:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13763:13:21", + "memberName": "getBaseFactor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9158, + "src": "13756:20:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13756:22:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5759, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "13796:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13803:15:21", + "memberName": "getFilterPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9174, + "src": "13796:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13796:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5762, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "13838:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13845:14:21", + "memberName": "getDecayPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 9190, + "src": "13838:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13838:23:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5765, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "13879:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13886:18:21", + "memberName": "getReductionFactor", + "nodeType": "MemberAccess", + "referencedDeclaration": 9206, + "src": "13879:25:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13879:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5768, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "13924:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13931:21:21", + "memberName": "getVariableFeeControl", + "nodeType": "MemberAccess", + "referencedDeclaration": 9222, + "src": "13924:28:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 5770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13924:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5771, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "13972:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13979:16:21", + "memberName": "getProtocolShare", + "nodeType": "MemberAccess", + "referencedDeclaration": 9238, + "src": "13972:23:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 5773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13972:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5774, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5643, + "src": "14015:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14022:27:21", + "memberName": "getMaxVolatilityAccumulator", + "nodeType": "MemberAccess", + "referencedDeclaration": 9254, + "src": "14015:34:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 5776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14015:36:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "id": 5777, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5623, + "src": "14069:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_47973bffbb1d7e013da162f2e093b4de900b8d7f4dd54ae9e107a3bfa74e426b", + "typeString": "literal_string \"initialize(uint16,uint16,uint16,uint16,uint24,uint16,uint24,uint24)\"" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "id": 5753, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "13645:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13649:19:21", + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "src": "13645:23:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 5778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13645:446:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13625:466:21" + }, + { + "assignments": [ + 5781 + ], + "declarations": [ + { + "constant": false, + "id": 5781, + "mutability": "mutable", + "name": "salt", + "nameLocation": "14114:4:21", + "nodeType": "VariableDeclaration", + "scope": 5820, + "src": "14106:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5780, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14106:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5790, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 5785, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5705, + "src": "14148:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5786, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5708, + "src": "14156:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5787, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "14164:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 5783, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "14131:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14135:12:21", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "14131:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14131:41:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5782, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "14121:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14121:52:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14106:67:21" + }, + { + "assignments": [ + 5792 + ], + "declarations": [ + { + "constant": false, + "id": 5792, + "mutability": "mutable", + "name": "bytecode", + "nameLocation": "14201:8:21", + "nodeType": "VariableDeclaration", + "scope": 5820, + "src": "14188:21:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5791, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14188:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5808, + "initialValue": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 5796, + "name": "LBPairBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6837, + "src": "14251:17:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LBPairBeaconProxy_$6837_$", + "typeString": "type(contract LBPairBeaconProxy)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_LBPairBeaconProxy_$6837_$", + "typeString": "type(contract LBPairBeaconProxy)" + } + ], + "id": 5795, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "14246:4:21", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14246:23:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_LBPairBeaconProxy_$6837", + "typeString": "type(contract LBPairBeaconProxy)" + } + }, + "id": 5798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14270:12:21", + "memberName": "creationCode", + "nodeType": "MemberAccess", + "src": "14246:36:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5801, + "name": "_lbPairBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5082, + "src": "14311:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5802, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "14326:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5803, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5621, + "src": "14334:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5804, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "14342:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5805, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5752, + "src": "14351:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5799, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "14300:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14304:6:21", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "14300:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14300:56:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5793, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "14212:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14216:12:21", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "14212:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14212:158:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14188:182:21" + }, + { + "expression": { + "id": 5818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5809, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "14425:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 5813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14455:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 5814, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5781, + "src": "14458:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5815, + "name": "bytecode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "14464:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5811, + "name": "Create2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2224, + "src": "14440:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Create2_$2224_$", + "typeString": "type(library Create2)" + } + }, + "id": 5812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14448:6:21", + "memberName": "deploy", + "nodeType": "MemberAccess", + "referencedDeclaration": 2189, + "src": "14440:14:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,bytes32,bytes memory) returns (address)" + } + }, + "id": 5816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14440:33:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5810, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7970, + "src": "14432:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBPair_$7970_$", + "typeString": "type(contract ILBPair)" + } + }, + "id": 5817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14432:42:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "src": "14425:49:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "id": 5819, + "nodeType": "ExpressionStatement", + "src": "14425:49:21" + } + ] + }, + { + "expression": { + "id": 5834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "baseExpression": { + "id": 5821, + "name": "_lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "14495:12:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)))" + } + }, + "id": 5825, + "indexExpression": { + "id": 5822, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5705, + "src": "14508:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14495:20:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref))" + } + }, + "id": 5826, + "indexExpression": { + "id": 5823, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5708, + "src": "14516:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14495:28:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 5827, + "indexExpression": { + "id": 5824, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "14524:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14495:37:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5829, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "14575:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5830, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "14592:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + { + "id": 5831, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5653, + "src": "14614:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "66616c7365", + "id": 5832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14642:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5828, + "name": "LBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6974, + "src": "14547:17:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_LBPairInformation_$6974_storage_ptr_$", + "typeString": "type(struct ILBFactory.LBPairInformation storage pointer)" + } + }, + "id": 5833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "14566:7:21", + "14584:6:21", + "14598:14:21", + "14623:17:21" + ], + "names": [ + "binStep", + "LBPair", + "createdByOwner", + "ignoredForRouting" + ], + "nodeType": "FunctionCall", + "src": "14547:102:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "src": "14495:154:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "id": 5835, + "nodeType": "ExpressionStatement", + "src": "14495:154:21" + }, + { + "expression": { + "arguments": [ + { + "id": 5839, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "14677:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + ], + "expression": { + "id": 5836, + "name": "_allLBPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5086, + "src": "14660:11:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ILBPair_$7970_$dyn_storage", + "typeString": "contract ILBPair[] storage ref" + } + }, + "id": 5838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14672:4:21", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "14660:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_contract$_ILBPair_$7970_$dyn_storage_ptr_$_t_contract$_ILBPair_$7970_$returns$__$attached_to$_t_array$_t_contract$_ILBPair_$7970_$dyn_storage_ptr_$", + "typeString": "function (contract ILBPair[] storage pointer,contract ILBPair)" + } + }, + "id": 5840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14660:22:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5841, + "nodeType": "ExpressionStatement", + "src": "14660:22:21" + }, + { + "expression": { + "arguments": [ + { + "id": 5848, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "14737:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "baseExpression": { + "baseExpression": { + "id": 5842, + "name": "_availableLBPairBinSteps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5114, + "src": "14692:24:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_struct$_UintSet_$4862_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => struct EnumerableSet.UintSet storage ref))" + } + }, + "id": 5845, + "indexExpression": { + "id": 5843, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5705, + "src": "14717:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14692:32:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_struct$_UintSet_$4862_storage_$", + "typeString": "mapping(contract IERC20 => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 5846, + "indexExpression": { + "id": 5844, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5708, + "src": "14725:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14692:40:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4862_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 5847, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14733:3:21", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 4883, + "src": "14692:44:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$4862_storage_ptr_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_UintSet_$4862_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 5849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14692:53:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5850, + "nodeType": "ExpressionStatement", + "src": "14692:53:21" + }, + { + "eventCall": { + "arguments": [ + { + "id": 5852, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "14775:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5853, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5621, + "src": "14783:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5854, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5625, + "src": "14791:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5855, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5630, + "src": "14800:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5856, + "name": "_allLBPairs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5086, + "src": "14806:11:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_ILBPair_$7970_$dyn_storage", + "typeString": "contract ILBPair[] storage ref" + } + }, + "id": 5857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14818:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "14806:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 5858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14827:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "14806:22:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5851, + "name": "LBPairCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "14761:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$_t_contract$_ILBPair_$7970_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,contract IERC20,uint256,contract ILBPair,uint256)" + } + }, + "id": 5860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14761:68:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5861, + "nodeType": "EmitStatement", + "src": "14756:73:21" + } + ] + }, + "documentation": { + "id": 5615, + "nodeType": "StructuredDocumentation", + "src": "11948:387:21", + "text": " @notice Create a liquidity bin LBPair for tokenX and tokenY\n @param tokenX The address of the first token\n @param tokenY The address of the second token\n @param activeId The active id of the pair\n @param binStep The bin step in basis point, used to calculate log(1 + binStep / 10_000)\n @return pair The address of the newly created LBPair" + }, + "functionSelector": "659ac74b", + "id": 5863, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createLBPair", + "nameLocation": "12349:12:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5627, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "12450:8:21" + }, + "parameters": { + "id": 5626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5618, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "12369:6:21", + "nodeType": "VariableDeclaration", + "scope": 5863, + "src": "12362:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5617, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5616, + "name": "IERC20", + "nameLocations": [ + "12362:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "12362:6:21" + }, + "referencedDeclaration": 1838, + "src": "12362:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5621, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "12384:6:21", + "nodeType": "VariableDeclaration", + "scope": 5863, + "src": "12377:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5620, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5619, + "name": "IERC20", + "nameLocations": [ + "12377:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "12377:6:21" + }, + "referencedDeclaration": 1838, + "src": "12377:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5623, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "12399:8:21", + "nodeType": "VariableDeclaration", + "scope": 5863, + "src": "12392:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5622, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "12392:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5625, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "12416:7:21", + "nodeType": "VariableDeclaration", + "scope": 5863, + "src": "12409:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5624, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12409:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "12361:63:21" + }, + "returnParameters": { + "id": 5631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5630, + "mutability": "mutable", + "name": "pair", + "nameLocation": "12484:4:21", + "nodeType": "VariableDeclaration", + "scope": 5863, + "src": "12476:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 5629, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5628, + "name": "ILBPair", + "nameLocations": [ + "12476:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "12476:7:21" + }, + "referencedDeclaration": 7970, + "src": "12476:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "12475:14:21" + }, + "scope": 6622, + "src": "12340:2496:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7216 + ], + "body": { + "id": 5945, + "nodeType": "Block", + "src": "15521:581:21", + "statements": [ + { + "assignments": [ + 5882, + 5885 + ], + "declarations": [ + { + "constant": false, + "id": 5882, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "15539:6:21", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "15532:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5881, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5880, + "name": "IERC20", + "nameLocations": [ + "15532:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "15532:6:21" + }, + "referencedDeclaration": 1838, + "src": "15532:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5885, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "15554:6:21", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "15547:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5884, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5883, + "name": "IERC20", + "nameLocations": [ + "15547:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "15547:6:21" + }, + "referencedDeclaration": 1838, + "src": "15547:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 5890, + "initialValue": { + "arguments": [ + { + "id": 5887, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5867, + "src": "15576:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5888, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "15584:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 5886, + "name": "_sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6509, + "src": "15564:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$returns$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "function (contract IERC20,contract IERC20) pure returns (contract IERC20,contract IERC20)" + } + }, + "id": 5889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15564:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15531:60:21" + }, + { + "assignments": [ + 5893 + ], + "declarations": [ + { + "constant": false, + "id": 5893, + "mutability": "mutable", + "name": "pairInformation", + "nameLocation": "15627:15:21", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "15602:40:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + }, + "typeName": { + "id": 5892, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5891, + "name": "LBPairInformation", + "nameLocations": [ + "15602:17:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "15602:17:21" + }, + "referencedDeclaration": 6974, + "src": "15602:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "visibility": "internal" + } + ], + "id": 5901, + "initialValue": { + "baseExpression": { + "baseExpression": { + "baseExpression": { + "id": 5894, + "name": "_lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "15645:12:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)))" + } + }, + "id": 5896, + "indexExpression": { + "id": 5895, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5882, + "src": "15658:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15645:20:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref))" + } + }, + "id": 5898, + "indexExpression": { + "id": 5897, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5885, + "src": "15666:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15645:28:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 5900, + "indexExpression": { + "id": 5899, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5872, + "src": "15674:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15645:37:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15602:80:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 5904, + "name": "pairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5893, + "src": "15704:15:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "id": 5905, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15720:6:21", + "memberName": "LBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 6969, + "src": "15704:22:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + ], + "id": 5903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15696:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5902, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15696:7:21", + "typeDescriptions": {} + } + }, + "id": 5906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15696:31:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5909, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15739:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15731:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5907, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15731:7:21", + "typeDescriptions": {} + } + }, + "id": 5910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15731:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15696:45:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5919, + "nodeType": "IfStatement", + "src": "15692:137:21", + "trueBody": { + "id": 5918, + "nodeType": "Block", + "src": "15743:86:21", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5913, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5867, + "src": "15794:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5914, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "15802:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 5915, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5872, + "src": "15810:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 5912, + "name": "LBFactory__LBPairDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6901, + "src": "15764:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,contract IERC20,uint256) pure" + } + }, + "id": 5916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15764:54:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5917, + "nodeType": "RevertStatement", + "src": "15757:61:21" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5920, + "name": "pairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5893, + "src": "15843:15:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "id": 5921, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15859:17:21", + "memberName": "ignoredForRouting", + "nodeType": "MemberAccess", + "referencedDeclaration": 6973, + "src": "15843:33:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 5922, + "name": "ignored", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5874, + "src": "15880:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15843:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5927, + "nodeType": "IfStatement", + "src": "15839:106:21", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5924, + "name": "LBFactory__LBPairIgnoredIsAlreadyInTheSameState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6929, + "src": "15896:47:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15896:49:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5926, + "nodeType": "RevertStatement", + "src": "15889:56:21" + } + }, + { + "expression": { + "id": 5937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "baseExpression": { + "baseExpression": { + "id": 5928, + "name": "_lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "15956:12:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)))" + } + }, + "id": 5932, + "indexExpression": { + "id": 5929, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5882, + "src": "15969:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15956:20:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref))" + } + }, + "id": 5933, + "indexExpression": { + "id": 5930, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5885, + "src": "15977:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15956:28:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 5934, + "indexExpression": { + "id": 5931, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5872, + "src": "15985:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15956:37:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "id": 5935, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15994:17:21", + "memberName": "ignoredForRouting", + "nodeType": "MemberAccess", + "referencedDeclaration": 6973, + "src": "15956:55:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 5936, + "name": "ignored", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5874, + "src": "16014:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15956:65:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5938, + "nodeType": "ExpressionStatement", + "src": "15956:65:21" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 5940, + "name": "pairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5893, + "src": "16063:15:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "id": 5941, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16079:6:21", + "memberName": "LBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 6969, + "src": "16063:22:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + { + "id": 5942, + "name": "ignored", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5874, + "src": "16087:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5939, + "name": "LBPairIgnoredStateChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7014, + "src": "16037:25:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_ILBPair_$7970_$_t_bool_$returns$__$", + "typeString": "function (contract ILBPair,bool)" + } + }, + "id": 5943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16037:58:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5944, + "nodeType": "EmitStatement", + "src": "16032:63:21" + } + ] + }, + "documentation": { + "id": 5864, + "nodeType": "StructuredDocumentation", + "src": "14842:560:21", + "text": " @notice Function to set whether the pair is ignored or not for routing, it will make the pair unusable by the router\n @dev Needs to be called by the owner\n Reverts if:\n - The pair doesn't exist\n - The ignored state is already in the same state\n @param tokenX The address of the first token of the pair\n @param tokenY The address of the second token of the pair\n @param binStep The bin step in basis point of the pair\n @param ignored Whether to ignore (true) or not (false) the pair for routing" + }, + "functionSelector": "69d56ea3", + "id": 5946, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 5878, + "kind": "modifierInvocation", + "modifierName": { + "id": 5877, + "name": "onlyOwner", + "nameLocations": [ + "15511:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "15511:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "15511:9:21" + } + ], + "name": "setLBPairIgnored", + "nameLocation": "15416:16:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5876, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "15502:8:21" + }, + "parameters": { + "id": 5875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5867, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "15440:6:21", + "nodeType": "VariableDeclaration", + "scope": 5946, + "src": "15433:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5866, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5865, + "name": "IERC20", + "nameLocations": [ + "15433:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "15433:6:21" + }, + "referencedDeclaration": 1838, + "src": "15433:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5870, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "15455:6:21", + "nodeType": "VariableDeclaration", + "scope": 5946, + "src": "15448:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 5869, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5868, + "name": "IERC20", + "nameLocations": [ + "15448:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "15448:6:21" + }, + "referencedDeclaration": 1838, + "src": "15448:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5872, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "15470:7:21", + "nodeType": "VariableDeclaration", + "scope": 5946, + "src": "15463:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5871, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "15463:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5874, + "mutability": "mutable", + "name": "ignored", + "nameLocation": "15484:7:21", + "nodeType": "VariableDeclaration", + "scope": 5946, + "src": "15479:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5873, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15479:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "15432:60:21" + }, + "returnParameters": { + "id": 5879, + "nodeType": "ParameterList", + "parameters": [], + "src": "15521:0:21" + }, + "scope": 6622, + "src": "15407:695:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7237 + ], + "body": { + "id": 6032, + "nodeType": "Block", + "src": "17374:819:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5971, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5949, + "src": "17388:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5972, + "name": "_MIN_BIN_STEP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5073, + "src": "17398:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17388:23:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5978, + "nodeType": "IfStatement", + "src": "17384:69:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 5975, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5949, + "src": "17445:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 5974, + "name": "LBFactory__BinStepTooLow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6921, + "src": "17420:24:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 5976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17420:33:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5977, + "nodeType": "RevertStatement", + "src": "17413:40:21" + } + }, + { + "assignments": [ + 5980 + ], + "declarations": [ + { + "constant": false, + "id": 5980, + "mutability": "mutable", + "name": "preset", + "nameLocation": "17472:6:21", + "nodeType": "VariableDeclaration", + "scope": 6032, + "src": "17464:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5979, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17464:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5994, + "initialValue": { + "arguments": [ + { + "id": 5986, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5951, + "src": "17528:10:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5987, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5953, + "src": "17552:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5988, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5955, + "src": "17578:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5989, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5957, + "src": "17603:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5990, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5959, + "src": "17632:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "id": 5991, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5961, + "src": "17664:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 5992, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5963, + "src": "17691:24:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 5983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17489:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5982, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17481:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 5981, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17481:7:21", + "typeDescriptions": {} + } + }, + "id": 5984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17481:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17492:22:21", + "memberName": "setStaticFeeParameters", + "nodeType": "MemberAccess", + "referencedDeclaration": 9696, + "src": "17481:33:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint24_$_t_uint16_$_t_uint24_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint16,uint16,uint16,uint16,uint24,uint16,uint24) pure returns (bytes32)" + } + }, + "id": 5993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17481:244:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17464:261:21" + }, + { + "condition": { + "id": 5995, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5965, + "src": "17740:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6005, + "nodeType": "IfStatement", + "src": "17736:90:21", + "trueBody": { + "id": 6004, + "nodeType": "Block", + "src": "17748:78:21", + "statements": [ + { + "expression": { + "id": 6002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5996, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5980, + "src": "17762:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "74727565", + "id": 5999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17786:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 6000, + "name": "_OFFSET_IS_PRESET_OPEN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "17792:22:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5997, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5980, + "src": "17771:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17778:7:21", + "memberName": "setBool", + "nodeType": "MemberAccess", + "referencedDeclaration": 10361, + "src": "17771:14:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bool,uint256) pure returns (bytes32)" + } + }, + "id": 6001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17771:44:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "17762:53:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6003, + "nodeType": "ExpressionStatement", + "src": "17762:53:21" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 6009, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5949, + "src": "17849:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "arguments": [ + { + "id": 6012, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5980, + "src": "17866:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17858:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6010, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17858:7:21", + "typeDescriptions": {} + } + }, + "id": 6013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17858:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6006, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "17836:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 6008, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17845:3:21", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 2609, + "src": "17836:12:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256,uint256) returns (bool)" + } + }, + "id": 6014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17836:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6015, + "nodeType": "ExpressionStatement", + "src": "17836:38:21" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6017, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5949, + "src": "17913:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6018, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5951, + "src": "17934:10:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6019, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5953, + "src": "17958:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6020, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5955, + "src": "17984:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6021, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5957, + "src": "18009:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6022, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5959, + "src": "18038:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "id": 6023, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5961, + "src": "18070:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6024, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5963, + "src": "18097:24:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 6016, + "name": "PresetSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7032, + "src": "17890:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "id": 6025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17890:241:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6026, + "nodeType": "EmitStatement", + "src": "17885:246:21" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6028, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5949, + "src": "18170:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6029, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5965, + "src": "18179:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6027, + "name": "PresetOpenStateChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "18147:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (uint256,bool)" + } + }, + "id": 6030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18147:39:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6031, + "nodeType": "EmitStatement", + "src": "18142:44:21" + } + ] + }, + "documentation": { + "id": 5947, + "nodeType": "StructuredDocumentation", + "src": "16108:941:21", + "text": " @notice Sets the preset parameters of a bin step\n @dev Needs to be called by the owner\n Reverts if:\n - The binStep is lower than the minimum bin step\n @param binStep The bin step in basis point, used to calculate the price\n @param baseFactor The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\n @param filterPeriod The period where the accumulator value is untouched, prevent spam\n @param decayPeriod The period where the accumulator value is decayed, by the reduction factor\n @param reductionFactor The reduction factor, used to calculate the reduction of the accumulator\n @param variableFeeControl The variable fee control, used to control the variable fee, can be 0 to disable it\n @param protocolShare The share of the fees received by the protocol\n @param maxVolatilityAccumulator The max value of the volatility accumulator" + }, + "functionSelector": "379ee803", + "id": 6033, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 5969, + "kind": "modifierInvocation", + "modifierName": { + "id": 5968, + "name": "onlyOwner", + "nameLocations": [ + "17364:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "17364:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "17364:9:21" + } + ], + "name": "setPreset", + "nameLocation": "17063:9:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 5967, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "17355:8:21" + }, + "parameters": { + "id": 5966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5949, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "17089:7:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17082:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5948, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17082:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5951, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "17113:10:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17106:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5950, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17106:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5953, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "17140:12:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17133:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5952, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17133:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5955, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "17169:11:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17162:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5954, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17162:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5957, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "17197:15:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17190:22:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5956, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17190:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5959, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "17229:18:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17222:25:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5958, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "17222:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5961, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "17264:13:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17257:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5960, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17257:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5963, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "17294:24:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17287:31:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 5962, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "17287:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5965, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "17333:6:21", + "nodeType": "VariableDeclaration", + "scope": 6033, + "src": "17328:11:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5964, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17328:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "17072:273:21" + }, + "returnParameters": { + "id": 5970, + "nodeType": "ParameterList", + "parameters": [], + "src": "17374:0:21" + }, + "scope": 6622, + "src": "17054:1139:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7244 + ], + "body": { + "id": 6094, + "nodeType": "Block", + "src": "18658:447:21", + "statements": [ + { + "condition": { + "id": 6048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "18672:27:21", + "subExpression": { + "arguments": [ + { + "id": 6046, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6036, + "src": "18691:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 6044, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "18673:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 6045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18682:8:21", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 2651, + "src": "18673:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) view returns (bool)" + } + }, + "id": 6047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18673:26:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6053, + "nodeType": "IfStatement", + "src": "18668:78:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6050, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6036, + "src": "18738:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 6049, + "name": "LBFactory__BinStepHasNoPreset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6933, + "src": "18708:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 6051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18708:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6052, + "nodeType": "RevertStatement", + "src": "18701:45:21" + } + }, + { + "assignments": [ + 6055 + ], + "declarations": [ + { + "constant": false, + "id": 6055, + "mutability": "mutable", + "name": "preset", + "nameLocation": "18765:6:21", + "nodeType": "VariableDeclaration", + "scope": 6094, + "src": "18757:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6054, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18757:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6063, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 6060, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6036, + "src": "18795:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 6058, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "18782:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 6059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18791:3:21", + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 2758, + "src": "18782:12:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) view returns (uint256)" + } + }, + "id": 6061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18782:21:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18774:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 6056, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18774:7:21", + "typeDescriptions": {} + } + }, + "id": 6062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18774:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18757:47:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6066, + "name": "_OFFSET_IS_PRESET_OPEN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "18837:22:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6064, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6055, + "src": "18819:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18826:10:21", + "memberName": "decodeBool", + "nodeType": "MemberAccess", + "referencedDeclaration": 10387, + "src": "18819:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (bool)" + } + }, + "id": 6067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18819:41:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 6068, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6038, + "src": "18864:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "18819:51:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6074, + "nodeType": "IfStatement", + "src": "18815:140:21", + "trueBody": { + "id": 6073, + "nodeType": "Block", + "src": "18872:83:21", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6070, + "name": "LBFactory__PresetOpenStateIsAlreadyInTheSameState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6935, + "src": "18893:49:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18893:51:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6072, + "nodeType": "RevertStatement", + "src": "18886:58:21" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 6078, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6036, + "src": "18978:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 6083, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6038, + "src": "19010:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 6084, + "name": "_OFFSET_IS_PRESET_OPEN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "19018:22:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6081, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6055, + "src": "18995:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19002:7:21", + "memberName": "setBool", + "nodeType": "MemberAccess", + "referencedDeclaration": 10361, + "src": "18995:14:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bool,uint256) pure returns (bytes32)" + } + }, + "id": 6085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18995:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18987:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6079, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18987:7:21", + "typeDescriptions": {} + } + }, + "id": 6086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18987:55:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6075, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "18965:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 6077, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18974:3:21", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 2609, + "src": "18965:12:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256,uint256) returns (bool)" + } + }, + "id": 6087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18965:78:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6088, + "nodeType": "ExpressionStatement", + "src": "18965:78:21" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6090, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6036, + "src": "19082:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6091, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6038, + "src": "19091:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6089, + "name": "PresetOpenStateChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "19059:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (uint256,bool)" + } + }, + "id": 6092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19059:39:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6093, + "nodeType": "EmitStatement", + "src": "19054:44:21" + } + ] + }, + "documentation": { + "id": 6034, + "nodeType": "StructuredDocumentation", + "src": "18199:369:21", + "text": " @notice Sets if the preset is open or not to be used by users\n @dev Needs to be called by the owner\n Reverts if:\n - The binStep doesn't have a preset\n - The preset is already in the same state\n @param binStep The bin step in basis point, used to calculate the price\n @param isOpen Whether the preset is open or not" + }, + "functionSelector": "4cd161d3", + "id": 6095, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6042, + "kind": "modifierInvocation", + "modifierName": { + "id": 6041, + "name": "onlyOwner", + "nameLocations": [ + "18648:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "18648:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "18648:9:21" + } + ], + "name": "setPresetOpenState", + "nameLocation": "18582:18:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6040, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "18639:8:21" + }, + "parameters": { + "id": 6039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6036, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "18608:7:21", + "nodeType": "VariableDeclaration", + "scope": 6095, + "src": "18601:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6035, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "18601:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6038, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "18622:6:21", + "nodeType": "VariableDeclaration", + "scope": 6095, + "src": "18617:11:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6037, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18617:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "18600:29:21" + }, + "returnParameters": { + "id": 6043, + "nodeType": "ParameterList", + "parameters": [], + "src": "18658:0:21" + }, + "scope": 6622, + "src": "18573:532:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7249 + ], + "body": { + "id": 6118, + "nodeType": "Block", + "src": "19397:131:21", + "statements": [ + { + "condition": { + "id": 6108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19411:25:21", + "subExpression": { + "arguments": [ + { + "id": 6106, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6098, + "src": "19428:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 6104, + "name": "_presets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5101, + "src": "19412:8:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToUintMap_$2582_storage", + "typeString": "struct EnumerableMap.UintToUintMap storage ref" + } + }, + "id": 6105, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19421:6:21", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 2630, + "src": "19412:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToUintMap_$2582_storage_ptr_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_UintToUintMap_$2582_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToUintMap storage pointer,uint256) returns (bool)" + } + }, + "id": 6107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19412:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6113, + "nodeType": "IfStatement", + "src": "19407:76:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6110, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6098, + "src": "19475:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 6109, + "name": "LBFactory__BinStepHasNoPreset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6933, + "src": "19445:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 6111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19445:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6112, + "nodeType": "RevertStatement", + "src": "19438:45:21" + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 6115, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6098, + "src": "19513:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 6114, + "name": "PresetRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7042, + "src": "19499:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 6116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19499:22:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6117, + "nodeType": "EmitStatement", + "src": "19494:27:21" + } + ] + }, + "documentation": { + "id": 6096, + "nodeType": "StructuredDocumentation", + "src": "19111:215:21", + "text": " @notice Remove the preset linked to a binStep\n @dev Needs to be called by the owner\n Reverts if:\n - The binStep doesn't have a preset\n @param binStep The bin step to remove" + }, + "functionSelector": "e203a31f", + "id": 6119, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6102, + "kind": "modifierInvocation", + "modifierName": { + "id": 6101, + "name": "onlyOwner", + "nameLocations": [ + "19387:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "19387:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "19387:9:21" + } + ], + "name": "removePreset", + "nameLocation": "19340:12:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6100, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "19378:8:21" + }, + "parameters": { + "id": 6099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6098, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "19360:7:21", + "nodeType": "VariableDeclaration", + "scope": 6119, + "src": "19353:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6097, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "19353:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "19352:16:21" + }, + "returnParameters": { + "id": 6103, + "nodeType": "ParameterList", + "parameters": [], + "src": "19397:0:21" + }, + "scope": 6622, + "src": "19331:197:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7274 + ], + "body": { + "id": 6186, + "nodeType": "Block", + "src": "20921:443:21", + "statements": [ + { + "assignments": [ + 6150 + ], + "declarations": [ + { + "constant": false, + "id": 6150, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "20939:6:21", + "nodeType": "VariableDeclaration", + "scope": 6186, + "src": "20931:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6149, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6148, + "name": "ILBPair", + "nameLocations": [ + "20931:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "20931:7:21" + }, + "referencedDeclaration": 7970, + "src": "20931:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "id": 6157, + "initialValue": { + "expression": { + "arguments": [ + { + "id": 6152, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6123, + "src": "20970:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6153, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "20978:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6154, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6128, + "src": "20986:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 6151, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6476, + "src": "20948:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$returns$_t_struct$_LBPairInformation_$6974_memory_ptr_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (struct ILBFactory.LBPairInformation memory)" + } + }, + "id": 6155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20948:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "id": 6156, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20995:6:21", + "memberName": "LBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 6969, + "src": "20948:53:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20931:70:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6160, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6150, + "src": "21024:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + ], + "id": 6159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21016:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6158, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21016:7:21", + "typeDescriptions": {} + } + }, + "id": 6161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21016:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21043:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21035:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21035:7:21", + "typeDescriptions": {} + } + }, + "id": 6165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21035:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21016:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6173, + "nodeType": "IfStatement", + "src": "21012:94:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6168, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6123, + "src": "21082:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6169, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "21090:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6170, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6128, + "src": "21098:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 6167, + "name": "LBFactory__LBPairNotCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "21054:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,contract IERC20,uint256) pure" + } + }, + "id": 6171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21054:52:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6172, + "nodeType": "RevertStatement", + "src": "21047:59:21" + } + }, + { + "expression": { + "arguments": [ + { + "id": 6177, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6130, + "src": "21160:10:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6178, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6132, + "src": "21184:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6179, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6134, + "src": "21210:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6180, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6136, + "src": "21235:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6181, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6138, + "src": "21264:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "id": 6182, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6140, + "src": "21296:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6183, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6142, + "src": "21323:24:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "id": 6174, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6150, + "src": "21117:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "id": 6176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21124:22:21", + "memberName": "setStaticFeeParameters", + "nodeType": "MemberAccess", + "referencedDeclaration": 7959, + "src": "21117:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint24_$_t_uint16_$_t_uint24_$returns$__$", + "typeString": "function (uint16,uint16,uint16,uint16,uint24,uint16,uint24) external" + } + }, + "id": 6184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21117:240:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6185, + "nodeType": "ExpressionStatement", + "src": "21117:240:21" + } + ] + }, + "documentation": { + "id": 6120, + "nodeType": "StructuredDocumentation", + "src": "19534:1023:21", + "text": " @notice Function to set the fee parameter of a LBPair\n @dev Needs to be called by the owner\n Reverts if:\n - The pair doesn't exist\n @param tokenX The address of the first token\n @param tokenY The address of the second token\n @param binStep The bin step in basis point, used to calculate the price\n @param baseFactor The base factor, used to calculate the base fee, baseFee = baseFactor * binStep\n @param filterPeriod The period where the accumulator value is untouched, prevent spam\n @param decayPeriod The period where the accumulator value is decayed, by the reduction factor\n @param reductionFactor The reduction factor, used to calculate the reduction of the accumulator\n @param variableFeeControl The variable fee control, used to control the variable fee, can be 0 to disable it\n @param protocolShare The share of the fees received by the protocol\n @param maxVolatilityAccumulator The max value of volatility accumulator" + }, + "functionSelector": "093ff769", + "id": 6187, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6146, + "kind": "modifierInvocation", + "modifierName": { + "id": 6145, + "name": "onlyOwner", + "nameLocations": [ + "20911:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "20911:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "20911:9:21" + } + ], + "name": "setFeesParametersOnPair", + "nameLocation": "20571:23:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6144, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "20902:8:21" + }, + "parameters": { + "id": 6143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6123, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "20611:6:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20604:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6122, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6121, + "name": "IERC20", + "nameLocations": [ + "20604:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "20604:6:21" + }, + "referencedDeclaration": 1838, + "src": "20604:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6126, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "20634:6:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20627:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6125, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6124, + "name": "IERC20", + "nameLocations": [ + "20627:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "20627:6:21" + }, + "referencedDeclaration": 1838, + "src": "20627:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6128, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "20657:7:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20650:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6127, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "20650:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6130, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "20681:10:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20674:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6129, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "20674:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6132, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "20708:12:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20701:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6131, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "20701:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6134, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "20737:11:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20730:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6133, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "20730:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6136, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "20765:15:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20758:22:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6135, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "20758:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6138, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "20797:18:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20790:25:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6137, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "20790:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6140, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "20832:13:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20825:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6139, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "20825:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6142, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "20862:24:21", + "nodeType": "VariableDeclaration", + "scope": 6187, + "src": "20855:31:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 6141, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "20855:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "20594:298:21" + }, + "returnParameters": { + "id": 6147, + "nodeType": "ParameterList", + "parameters": [], + "src": "20921:0:21" + }, + "scope": 6622, + "src": "20562:802:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7289 + ], + "body": { + "id": 6236, + "nodeType": "Block", + "src": "22185:270:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6209, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6198, + "src": "22214:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6207, + "name": "Hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9005, + "src": "22199:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Hooks_$9005_$", + "typeString": "type(library Hooks)" + } + }, + "id": 6208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22205:8:21", + "memberName": "getHooks", + "nodeType": "MemberAccess", + "referencedDeclaration": 8518, + "src": "22199:14:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) pure returns (address)" + } + }, + "id": 6210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22199:31:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22242:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22234:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22234:7:21", + "typeDescriptions": {} + } + }, + "id": 6214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22234:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "22199:45:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + }, + "id": 6221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6218, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6198, + "src": "22263:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6216, + "name": "Hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9005, + "src": "22248:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Hooks_$9005_$", + "typeString": "type(library Hooks)" + } + }, + "id": 6217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22254:8:21", + "memberName": "getFlags", + "nodeType": "MemberAccess", + "referencedDeclaration": 8564, + "src": "22248:14:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes12_$", + "typeString": "function (bytes32) pure returns (bytes12)" + } + }, + "id": 6219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22248:31:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22283:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "22248:36:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "22199:85:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6227, + "nodeType": "IfStatement", + "src": "22195:158:21", + "trueBody": { + "id": 6226, + "nodeType": "Block", + "src": "22286:67:21", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6223, + "name": "LBFactory__InvalidHooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6961, + "src": "22307:33:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22307:35:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6225, + "nodeType": "RevertStatement", + "src": "22300:42:21" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 6229, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6191, + "src": "22391:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6230, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6194, + "src": "22399:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6231, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6196, + "src": "22407:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 6232, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6198, + "src": "22416:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6233, + "name": "onHooksSetData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6200, + "src": "22433:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 6228, + "name": "_setLBHooksParametersOnPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6569, + "src": "22363:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint16_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,contract IERC20,uint16,bytes32,bytes memory)" + } + }, + "id": 6234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22363:85:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6235, + "nodeType": "ExpressionStatement", + "src": "22363:85:21" + } + ] + }, + "documentation": { + "id": 6188, + "nodeType": "StructuredDocumentation", + "src": "21370:576:21", + "text": " @notice Function to set the hooks parameters of a pair\n @dev Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE\n Reverts if:\n - The pair doesn't exist\n - The hooks is `address(0)` or the hooks flags are all false\n @param tokenX The address of the first token\n @param tokenY The address of the second token\n @param binStep The bin step in basis point, used to calculate the price\n @param hooksParameters The hooks parameters\n @param onHooksSetData The data to pass to the onHooksSet function" + }, + "functionSelector": "3a2f1a91", + "id": 6237, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 6204, + "name": "LB_HOOKS_MANAGER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5062, + "src": "22162:21:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 6205, + "kind": "modifierInvocation", + "modifierName": { + "id": 6203, + "name": "onlyRole", + "nameLocations": [ + "22153:8:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "22153:8:21" + }, + "nodeType": "ModifierInvocation", + "src": "22153:31:21" + } + ], + "name": "setLBHooksParametersOnPair", + "nameLocation": "21960:26:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6202, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "22144:8:21" + }, + "parameters": { + "id": 6201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6191, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "22003:6:21", + "nodeType": "VariableDeclaration", + "scope": 6237, + "src": "21996:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6190, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6189, + "name": "IERC20", + "nameLocations": [ + "21996:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "21996:6:21" + }, + "referencedDeclaration": 1838, + "src": "21996:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6194, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "22026:6:21", + "nodeType": "VariableDeclaration", + "scope": 6237, + "src": "22019:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6193, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6192, + "name": "IERC20", + "nameLocations": [ + "22019:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "22019:6:21" + }, + "referencedDeclaration": 1838, + "src": "22019:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6196, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "22049:7:21", + "nodeType": "VariableDeclaration", + "scope": 6237, + "src": "22042:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6195, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "22042:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6198, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "22074:15:21", + "nodeType": "VariableDeclaration", + "scope": 6237, + "src": "22066:23:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6197, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "22066:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6200, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "22114:14:21", + "nodeType": "VariableDeclaration", + "scope": 6237, + "src": "22099:29:21", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6199, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22099:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "21986:148:21" + }, + "returnParameters": { + "id": 6206, + "nodeType": "ParameterList", + "parameters": [], + "src": "22185:0:21" + }, + "scope": 6622, + "src": "21951:504:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7300 + ], + "body": { + "id": 6264, + "nodeType": "Block", + "src": "23008:86:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6254, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6241, + "src": "23046:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6255, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6244, + "src": "23054:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6256, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6246, + "src": "23062:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "hexValue": "30", + "id": 6257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23071:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 6260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23084:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "23074:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 6258, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "23078:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 6261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23074:12:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6253, + "name": "_setLBHooksParametersOnPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6569, + "src": "23018:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint16_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,contract IERC20,uint16,bytes32,bytes memory)" + } + }, + "id": 6262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23018:69:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6263, + "nodeType": "ExpressionStatement", + "src": "23018:69:21" + } + ] + }, + "documentation": { + "id": 6238, + "nodeType": "StructuredDocumentation", + "src": "22461:389:21", + "text": " @notice Function to remove the hooks contract from the pair\n @dev Needs to be called by an address with the LB_HOOKS_MANAGER_ROLE\n Reverts if:\n - The pair doesn't exist\n @param tokenX The address of the first token\n @param tokenY The address of the second token\n @param binStep The bin step in basis point, used to calculate the price" + }, + "functionSelector": "2cc06b8c", + "id": 6265, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 6250, + "name": "LB_HOOKS_MANAGER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5062, + "src": "22981:21:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 6251, + "kind": "modifierInvocation", + "modifierName": { + "id": 6249, + "name": "onlyRole", + "nameLocations": [ + "22972:8:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "22972:8:21" + }, + "nodeType": "ModifierInvocation", + "src": "22972:31:21" + } + ], + "name": "removeLBHooksOnPair", + "nameLocation": "22864:19:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6248, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "22955:8:21" + }, + "parameters": { + "id": 6247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6241, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "22891:6:21", + "nodeType": "VariableDeclaration", + "scope": 6265, + "src": "22884:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6240, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6239, + "name": "IERC20", + "nameLocations": [ + "22884:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "22884:6:21" + }, + "referencedDeclaration": 1838, + "src": "22884:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6244, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "22906:6:21", + "nodeType": "VariableDeclaration", + "scope": 6265, + "src": "22899:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6243, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6242, + "name": "IERC20", + "nameLocations": [ + "22899:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "22899:6:21" + }, + "referencedDeclaration": 1838, + "src": "22899:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6246, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "22921:7:21", + "nodeType": "VariableDeclaration", + "scope": 6265, + "src": "22914:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6245, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "22914:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "22883:46:21" + }, + "returnParameters": { + "id": 6252, + "nodeType": "ParameterList", + "parameters": [], + "src": "23008:0:21" + }, + "scope": 6622, + "src": "22855:239:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7305 + ], + "body": { + "id": 6278, + "nodeType": "Block", + "src": "23515:47:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6275, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6268, + "src": "23542:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6274, + "name": "_setFeeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6427, + "src": "23525:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23525:30:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6277, + "nodeType": "ExpressionStatement", + "src": "23525:30:21" + } + ] + }, + "documentation": { + "id": 6266, + "nodeType": "StructuredDocumentation", + "src": "23100:335:21", + "text": " @notice Function to set the recipient of the fees. This address needs to be able to receive ERC20s\n @dev Needs to be called by the owner\n Reverts if:\n - The feeRecipient is `address(0)`\n - The feeRecipient is the same as the current one\n @param feeRecipient The address of the recipient" + }, + "functionSelector": "e74b981b", + "id": 6279, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6272, + "kind": "modifierInvocation", + "modifierName": { + "id": 6271, + "name": "onlyOwner", + "nameLocations": [ + "23505:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "23505:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "23505:9:21" + } + ], + "name": "setFeeRecipient", + "nameLocation": "23449:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6270, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "23496:8:21" + }, + "parameters": { + "id": 6269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6268, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "23473:12:21", + "nodeType": "VariableDeclaration", + "scope": 6279, + "src": "23465:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23465:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23464:22:21" + }, + "returnParameters": { + "id": 6273, + "nodeType": "ParameterList", + "parameters": [], + "src": "23515:0:21" + }, + "scope": 6622, + "src": "23440:122:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7310 + ], + "body": { + "id": 6318, + "nodeType": "Block", + "src": "23954:373:21", + "statements": [ + { + "assignments": [ + 6289 + ], + "declarations": [ + { + "constant": false, + "id": 6289, + "mutability": "mutable", + "name": "oldFlashLoanFee", + "nameLocation": "23972:15:21", + "nodeType": "VariableDeclaration", + "scope": 6318, + "src": "23964:23:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23964:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6291, + "initialValue": { + "id": 6290, + "name": "_flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5080, + "src": "23990:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23964:39:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6292, + "name": "oldFlashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6289, + "src": "24018:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 6293, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "24037:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24018:31:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6299, + "nodeType": "IfStatement", + "src": "24014:85:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6296, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "24086:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6295, + "name": "LBFactory__SameFlashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6943, + "src": "24058:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 6297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24058:41:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6298, + "nodeType": "RevertStatement", + "src": "24051:48:21" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6300, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "24113:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 6301, + "name": "_MAX_FLASHLOAN_FEE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5076, + "src": "24128:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24113:33:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6308, + "nodeType": "IfStatement", + "src": "24109:111:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6304, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "24187:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6305, + "name": "_MAX_FLASHLOAN_FEE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5076, + "src": "24201:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6303, + "name": "LBFactory__FlashLoanFeeAboveMax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6917, + "src": "24155:31:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 6306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24155:65:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6307, + "nodeType": "RevertStatement", + "src": "24148:72:21" + } + }, + { + "expression": { + "id": 6311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6309, + "name": "_flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5080, + "src": "24231:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6310, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "24247:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24231:28:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6312, + "nodeType": "ExpressionStatement", + "src": "24231:28:21" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6314, + "name": "oldFlashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6289, + "src": "24290:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6315, + "name": "flashLoanFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6282, + "src": "24307:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6313, + "name": "FlashLoanFeeSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7001, + "src": "24274:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 6316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24274:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6317, + "nodeType": "EmitStatement", + "src": "24269:51:21" + } + ] + }, + "documentation": { + "id": 6280, + "nodeType": "StructuredDocumentation", + "src": "23568:306:21", + "text": " @notice Function to set the flash loan fee\n @dev Needs to be called by the owner\n Reverts if:\n - The flashLoanFee is the same as the current one\n - The flashLoanFee is above the maximum flash loan fee\n @param flashLoanFee The value of the fee for flash loan" + }, + "functionSelector": "e92d0d5d", + "id": 6319, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6286, + "kind": "modifierInvocation", + "modifierName": { + "id": 6285, + "name": "onlyOwner", + "nameLocations": [ + "23944:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "23944:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "23944:9:21" + } + ], + "name": "setFlashLoanFee", + "nameLocation": "23888:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6284, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "23935:8:21" + }, + "parameters": { + "id": 6283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6282, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "23912:12:21", + "nodeType": "VariableDeclaration", + "scope": 6319, + "src": "23904:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6281, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23904:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23903:22:21" + }, + "returnParameters": { + "id": 6287, + "nodeType": "ParameterList", + "parameters": [], + "src": "23954:0:21" + }, + "scope": 6622, + "src": "23879:448:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7316 + ], + "body": { + "id": 6347, + "nodeType": "Block", + "src": "24666:194:21", + "statements": [ + { + "condition": { + "id": 6336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "24680:46:21", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6333, + "name": "quoteAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6323, + "src": "24714:10:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 6332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24706:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6331, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24706:7:21", + "typeDescriptions": {} + } + }, + "id": 6334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24706:19:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6329, + "name": "_quoteAssetWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "24681:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6330, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24702:3:21", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 4732, + "src": "24681:24:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$4705_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$4705_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24681:45:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6342, + "nodeType": "IfStatement", + "src": "24676:135:21", + "trueBody": { + "id": 6341, + "nodeType": "Block", + "src": "24728:83:21", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6338, + "name": "quoteAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6323, + "src": "24789:10:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 6337, + "name": "LBFactory__QuoteAssetAlreadyWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6879, + "src": "24749:39:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$returns$__$", + "typeString": "function (contract IERC20) pure" + } + }, + "id": 6339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24749:51:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6340, + "nodeType": "RevertStatement", + "src": "24742:58:21" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 6344, + "name": "quoteAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6323, + "src": "24842:10:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 6343, + "name": "QuoteAssetAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7047, + "src": "24826:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20_$1838_$returns$__$", + "typeString": "function (contract IERC20)" + } + }, + "id": 6345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24826:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6346, + "nodeType": "EmitStatement", + "src": "24821:32:21" + } + ] + }, + "documentation": { + "id": 6320, + "nodeType": "StructuredDocumentation", + "src": "24333:258:21", + "text": " @notice Function to add an asset to the whitelist of quote assets\n @dev Needs to be called by the owner\n Reverts if:\n - The quoteAsset is already whitelisted\n @param quoteAsset The quote asset (e.g: NATIVE, USDC...)" + }, + "functionSelector": "5a440923", + "id": 6348, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6327, + "kind": "modifierInvocation", + "modifierName": { + "id": 6326, + "name": "onlyOwner", + "nameLocations": [ + "24656:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "24656:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "24656:9:21" + } + ], + "name": "addQuoteAsset", + "nameLocation": "24605:13:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6325, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "24647:8:21" + }, + "parameters": { + "id": 6324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6323, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "24626:10:21", + "nodeType": "VariableDeclaration", + "scope": 6348, + "src": "24619:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6322, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6321, + "name": "IERC20", + "nameLocations": [ + "24619:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "24619:6:21" + }, + "referencedDeclaration": 1838, + "src": "24619:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "24618:19:21" + }, + "returnParameters": { + "id": 6328, + "nodeType": "ParameterList", + "parameters": [], + "src": "24666:0:21" + }, + "scope": 6622, + "src": "24596:264:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 7322 + ], + "body": { + "id": 6375, + "nodeType": "Block", + "src": "25204:171:21", + "statements": [ + { + "condition": { + "id": 6365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "25218:49:21", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6362, + "name": "quoteAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6352, + "src": "25255:10:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 6361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25247:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25247:7:21", + "typeDescriptions": {} + } + }, + "id": 6363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25247:19:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6358, + "name": "_quoteAssetWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "25219:20:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4705_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 6359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25240:6:21", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 4759, + "src": "25219:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$4705_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$4705_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 6364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25219:48:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6370, + "nodeType": "IfStatement", + "src": "25214:109:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6367, + "name": "quoteAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6352, + "src": "25312:10:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 6366, + "name": "LBFactory__QuoteAssetNotWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6874, + "src": "25276:35:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$returns$__$", + "typeString": "function (contract IERC20) pure" + } + }, + "id": 6368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25276:47:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6369, + "nodeType": "RevertStatement", + "src": "25269:54:21" + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 6372, + "name": "quoteAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6352, + "src": "25357:10:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 6371, + "name": "QuoteAssetRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7052, + "src": "25339:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20_$1838_$returns$__$", + "typeString": "function (contract IERC20)" + } + }, + "id": 6373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25339:29:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6374, + "nodeType": "EmitStatement", + "src": "25334:34:21" + } + ] + }, + "documentation": { + "id": 6349, + "nodeType": "StructuredDocumentation", + "src": "24866:260:21", + "text": " @notice Function to remove an asset from the whitelist of quote assets\n @dev Needs to be called by the owner\n Reverts if:\n - The quoteAsset was not whitelisted\n @param quoteAsset The quote asset (e.g: NATIVE, USDC...)" + }, + "functionSelector": "ddbfd941", + "id": 6376, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6356, + "kind": "modifierInvocation", + "modifierName": { + "id": 6355, + "name": "onlyOwner", + "nameLocations": [ + "25194:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "25194:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "25194:9:21" + } + ], + "name": "removeQuoteAsset", + "nameLocation": "25140:16:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6354, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "25185:8:21" + }, + "parameters": { + "id": 6353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6352, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "25164:10:21", + "nodeType": "VariableDeclaration", + "scope": 6376, + "src": "25157:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6351, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6350, + "name": "IERC20", + "nameLocations": [ + "25157:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "25157:6:21" + }, + "referencedDeclaration": 1838, + "src": "25157:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "25156:19:21" + }, + "returnParameters": { + "id": 6357, + "nodeType": "ParameterList", + "parameters": [], + "src": "25204:0:21" + }, + "scope": 6622, + "src": "25131:244:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 6388, + "nodeType": "Block", + "src": "25449:65:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6385, + "name": "_OFFSET_IS_PRESET_OPEN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "25484:22:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6383, + "name": "preset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6378, + "src": "25466:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25473:10:21", + "memberName": "decodeBool", + "nodeType": "MemberAccess", + "referencedDeclaration": 10387, + "src": "25466:17:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (bool)" + } + }, + "id": 6386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25466:41:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6382, + "id": 6387, + "nodeType": "Return", + "src": "25459:48:21" + } + ] + }, + "id": 6389, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isPresetOpen", + "nameLocation": "25390:13:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6378, + "mutability": "mutable", + "name": "preset", + "nameLocation": "25412:6:21", + "nodeType": "VariableDeclaration", + "scope": 6389, + "src": "25404:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6377, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "25404:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "25403:16:21" + }, + "returnParameters": { + "id": 6382, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6381, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6389, + "src": "25443:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6380, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "25443:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "25442:6:21" + }, + "scope": 6622, + "src": "25381:133:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6426, + "nodeType": "Block", + "src": "25714:326:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6395, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6392, + "src": "25728:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25752:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25744:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25744:7:21", + "typeDescriptions": {} + } + }, + "id": 6399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25744:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25728:26:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6404, + "nodeType": "IfStatement", + "src": "25724:63:21", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6401, + "name": "LBFactory__AddressZero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6881, + "src": "25763:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25763:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6403, + "nodeType": "RevertStatement", + "src": "25756:31:21" + } + }, + { + "assignments": [ + 6406 + ], + "declarations": [ + { + "constant": false, + "id": 6406, + "mutability": "mutable", + "name": "oldFeeRecipient", + "nameLocation": "25806:15:21", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "25798:23:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6405, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25798:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 6408, + "initialValue": { + "id": 6407, + "name": "_feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5078, + "src": "25824:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25798:39:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6409, + "name": "oldFeeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6406, + "src": "25851:15:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 6410, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6392, + "src": "25870:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25851:31:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6416, + "nodeType": "IfStatement", + "src": "25847:86:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6413, + "name": "_feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5078, + "src": "25919:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6412, + "name": "LBFactory__SameFeeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6939, + "src": "25891:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 6414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25891:42:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6415, + "nodeType": "RevertStatement", + "src": "25884:49:21" + } + }, + { + "expression": { + "id": 6419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6417, + "name": "_feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5078, + "src": "25944:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6418, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6392, + "src": "25960:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25944:28:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6420, + "nodeType": "ExpressionStatement", + "src": "25944:28:21" + }, + { + "eventCall": { + "arguments": [ + { + "id": 6422, + "name": "oldFeeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6406, + "src": "26003:15:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 6423, + "name": "feeRecipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6392, + "src": "26020:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6421, + "name": "FeeRecipientSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6995, + "src": "25987:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 6424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25987:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6425, + "nodeType": "EmitStatement", + "src": "25982:51:21" + } + ] + }, + "documentation": { + "id": 6390, + "nodeType": "StructuredDocumentation", + "src": "25520:132:21", + "text": " @notice Internal function to set the recipient of the fee\n @param feeRecipient The address of the recipient" + }, + "id": 6427, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setFeeRecipient", + "nameLocation": "25666:16:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6392, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "25691:12:21", + "nodeType": "VariableDeclaration", + "scope": 6427, + "src": "25683:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25683:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "25682:22:21" + }, + "returnParameters": { + "id": 6394, + "nodeType": "ParameterList", + "parameters": [], + "src": "25714:0:21" + }, + "scope": 6622, + "src": "25657:383:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 7328 + ], + "body": { + "id": 6442, + "nodeType": "Block", + "src": "26298:34:21", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 6437, + "name": "pair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6431, + "src": "26308:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "id": 6439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26313:10:21", + "memberName": "forceDecay", + "nodeType": "MemberAccess", + "referencedDeclaration": 7969, + "src": "26308:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 6440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26308:17:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6441, + "nodeType": "ExpressionStatement", + "src": "26308:17:21" + } + ] + }, + "documentation": { + "id": 6428, + "nodeType": "StructuredDocumentation", + "src": "26046:185:21", + "text": " @notice Function to force the decay of the volatility accumulator of a pair\n @dev Needs to be called by the owner\n @param pair The pair to force the decay" + }, + "functionSelector": "3c78a941", + "id": 6443, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6435, + "kind": "modifierInvocation", + "modifierName": { + "id": 6434, + "name": "onlyOwner", + "nameLocations": [ + "26288:9:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 589, + "src": "26288:9:21" + }, + "nodeType": "ModifierInvocation", + "src": "26288:9:21" + } + ], + "name": "forceDecay", + "nameLocation": "26245:10:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6433, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "26279:8:21" + }, + "parameters": { + "id": 6432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6431, + "mutability": "mutable", + "name": "pair", + "nameLocation": "26264:4:21", + "nodeType": "VariableDeclaration", + "scope": 6443, + "src": "26256:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6430, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6429, + "name": "ILBPair", + "nameLocations": [ + "26256:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "26256:7:21" + }, + "referencedDeclaration": 7970, + "src": "26256:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "26255:14:21" + }, + "returnParameters": { + "id": 6436, + "nodeType": "ParameterList", + "parameters": [], + "src": "26298:0:21" + }, + "scope": 6622, + "src": "26236:96:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 6475, + "nodeType": "Block", + "src": "26854:117:21", + "statements": [ + { + "expression": { + "id": 6465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 6458, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "26865:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6459, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6450, + "src": "26873:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "id": 6460, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "26864:16:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6462, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "26895:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6463, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6450, + "src": "26903:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + ], + "id": 6461, + "name": "_sortTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6509, + "src": "26883:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$returns$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "function (contract IERC20,contract IERC20) pure returns (contract IERC20,contract IERC20)" + } + }, + "id": 6464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26883:27:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "src": "26864:46:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6466, + "nodeType": "ExpressionStatement", + "src": "26864:46:21" + }, + { + "expression": { + "baseExpression": { + "baseExpression": { + "baseExpression": { + "id": 6467, + "name": "_lbPairsInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "26927:12:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$_$", + "typeString": "mapping(contract IERC20 => mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)))" + } + }, + "id": 6469, + "indexExpression": { + "id": 6468, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6447, + "src": "26940:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26927:20:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_contract$_IERC20_$1838_$_t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$_$", + "typeString": "mapping(contract IERC20 => mapping(uint256 => struct ILBFactory.LBPairInformation storage ref))" + } + }, + "id": 6471, + "indexExpression": { + "id": 6470, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6450, + "src": "26948:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26927:28:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_LBPairInformation_$6974_storage_$", + "typeString": "mapping(uint256 => struct ILBFactory.LBPairInformation storage ref)" + } + }, + "id": 6473, + "indexExpression": { + "id": 6472, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6452, + "src": "26956:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26927:37:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage", + "typeString": "struct ILBFactory.LBPairInformation storage ref" + } + }, + "functionReturnParameters": 6457, + "id": 6474, + "nodeType": "Return", + "src": "26920:44:21" + } + ] + }, + "documentation": { + "id": 6444, + "nodeType": "StructuredDocumentation", + "src": "26338:357:21", + "text": " @notice Returns the LBPairInformation if it exists,\n if not, then the address 0 is returned. The order doesn't matter\n @param tokenA The address of the first token of the pair\n @param tokenB The address of the second token of the pair\n @param binStep The bin step of the LBPair\n @return The LBPairInformation" + }, + "id": 6476, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getLBPairInformation", + "nameLocation": "26709:21:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6447, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "26738:6:21", + "nodeType": "VariableDeclaration", + "scope": 6476, + "src": "26731:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6446, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6445, + "name": "IERC20", + "nameLocations": [ + "26731:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "26731:6:21" + }, + "referencedDeclaration": 1838, + "src": "26731:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6450, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "26753:6:21", + "nodeType": "VariableDeclaration", + "scope": 6476, + "src": "26746:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6449, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6448, + "name": "IERC20", + "nameLocations": [ + "26746:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "26746:6:21" + }, + "referencedDeclaration": 1838, + "src": "26746:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6452, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "26769:7:21", + "nodeType": "VariableDeclaration", + "scope": 6476, + "src": "26761:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26761:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26730:47:21" + }, + "returnParameters": { + "id": 6457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6456, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6476, + "src": "26824:24:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + }, + "typeName": { + "id": 6455, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6454, + "name": "LBPairInformation", + "nameLocations": [ + "26824:17:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "26824:17:21" + }, + "referencedDeclaration": 6974, + "src": "26824:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "visibility": "internal" + } + ], + "src": "26823:26:21" + }, + "scope": 6622, + "src": "26700:271:21", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 6508, + "nodeType": "Block", + "src": "27307:106:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "id": 6494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6492, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6480, + "src": "27321:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 6493, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6483, + "src": "27330:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "src": "27321:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6503, + "nodeType": "IfStatement", + "src": "27317:56:21", + "trueBody": { + "expression": { + "id": 6501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 6495, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6480, + "src": "27339:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6496, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6483, + "src": "27347:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "id": 6497, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "27338:16:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 6498, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6483, + "src": "27358:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6499, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6480, + "src": "27366:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "id": 6500, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27357:16:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "src": "27338:35:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6502, + "nodeType": "ExpressionStatement", + "src": "27338:35:21" + } + }, + { + "expression": { + "components": [ + { + "id": 6504, + "name": "tokenA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6480, + "src": "27391:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6505, + "name": "tokenB", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6483, + "src": "27399:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + } + ], + "id": 6506, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27390:16:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$", + "typeString": "tuple(contract IERC20,contract IERC20)" + } + }, + "functionReturnParameters": 6491, + "id": 6507, + "nodeType": "Return", + "src": "27383:23:21" + } + ] + }, + "documentation": { + "id": 6477, + "nodeType": "StructuredDocumentation", + "src": "26977:236:21", + "text": " @notice Private view function to sort 2 tokens in ascending order\n @param tokenA The first token\n @param tokenB The second token\n @return The sorted first token\n @return The sorted second token" + }, + "id": 6509, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_sortTokens", + "nameLocation": "27227:11:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6480, + "mutability": "mutable", + "name": "tokenA", + "nameLocation": "27246:6:21", + "nodeType": "VariableDeclaration", + "scope": 6509, + "src": "27239:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6479, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6478, + "name": "IERC20", + "nameLocations": [ + "27239:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "27239:6:21" + }, + "referencedDeclaration": 1838, + "src": "27239:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6483, + "mutability": "mutable", + "name": "tokenB", + "nameLocation": "27261:6:21", + "nodeType": "VariableDeclaration", + "scope": 6509, + "src": "27254:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6482, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6481, + "name": "IERC20", + "nameLocations": [ + "27254:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "27254:6:21" + }, + "referencedDeclaration": 1838, + "src": "27254:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "27238:30:21" + }, + "returnParameters": { + "id": 6491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6487, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6509, + "src": "27291:6:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6486, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6485, + "name": "IERC20", + "nameLocations": [ + "27291:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "27291:6:21" + }, + "referencedDeclaration": 1838, + "src": "27291:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6490, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6509, + "src": "27299:6:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6489, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6488, + "name": "IERC20", + "nameLocations": [ + "27299:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "27299:6:21" + }, + "referencedDeclaration": 1838, + "src": "27299:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "27290:16:21" + }, + "scope": 6622, + "src": "27218:195:21", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 6568, + "nodeType": "Block", + "src": "28004:379:21", + "statements": [ + { + "assignments": [ + 6527 + ], + "declarations": [ + { + "constant": false, + "id": 6527, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "28022:6:21", + "nodeType": "VariableDeclaration", + "scope": 6568, + "src": "28014:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6526, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6525, + "name": "ILBPair", + "nameLocations": [ + "28014:7:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "28014:7:21" + }, + "referencedDeclaration": 7970, + "src": "28014:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "id": 6534, + "initialValue": { + "expression": { + "arguments": [ + { + "id": 6529, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6513, + "src": "28053:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6530, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6516, + "src": "28061:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6531, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6518, + "src": "28069:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 6528, + "name": "_getLBPairInformation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6476, + "src": "28031:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$returns$_t_struct$_LBPairInformation_$6974_memory_ptr_$", + "typeString": "function (contract IERC20,contract IERC20,uint256) view returns (struct ILBFactory.LBPairInformation memory)" + } + }, + "id": 6532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28031:46:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation memory" + } + }, + "id": 6533, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28078:6:21", + "memberName": "LBPair", + "nodeType": "MemberAccess", + "referencedDeclaration": 6969, + "src": "28031:53:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28014:70:21" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6537, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6527, + "src": "28107:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + ], + "id": 6536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28099:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28099:7:21", + "typeDescriptions": {} + } + }, + "id": 6538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28099:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28126:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28118:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6539, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28118:7:21", + "typeDescriptions": {} + } + }, + "id": 6542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28118:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28099:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6550, + "nodeType": "IfStatement", + "src": "28095:94:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6545, + "name": "tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6513, + "src": "28165:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6546, + "name": "tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6516, + "src": "28173:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + { + "id": 6547, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6518, + "src": "28181:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 6544, + "name": "LBFactory__LBPairNotCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "28137:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_contract$_IERC20_$1838_$_t_contract$_IERC20_$1838_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,contract IERC20,uint256) pure" + } + }, + "id": 6548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28137:52:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6549, + "nodeType": "RevertStatement", + "src": "28130:59:21" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 6551, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6527, + "src": "28203:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "id": 6552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28210:20:21", + "memberName": "getLBHooksParameters", + "nodeType": "MemberAccess", + "referencedDeclaration": 7805, + "src": "28203:27:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 6553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28203:29:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 6554, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6520, + "src": "28236:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "28203:48:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6560, + "nodeType": "IfStatement", + "src": "28199:108:21", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6557, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6520, + "src": "28291:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6556, + "name": "LBFactory__SameHooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "28260:30:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 6558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28260:47:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6559, + "nodeType": "RevertStatement", + "src": "28253:54:21" + } + }, + { + "expression": { + "arguments": [ + { + "id": 6564, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6520, + "src": "28344:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6565, + "name": "onHooksSetData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6522, + "src": "28361:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 6561, + "name": "lbPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6527, + "src": "28318:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "id": 6563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28325:18:21", + "memberName": "setHooksParameters", + "nodeType": "MemberAccess", + "referencedDeclaration": 7966, + "src": "28318:25:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory) external" + } + }, + "id": 6566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28318:58:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6567, + "nodeType": "ExpressionStatement", + "src": "28318:58:21" + } + ] + }, + "documentation": { + "id": 6510, + "nodeType": "StructuredDocumentation", + "src": "27419:388:21", + "text": " @notice Internal function to set a hooks contract to the pair\n @param tokenX The address of the first token\n @param tokenY The address of the second token\n @param binStep The bin step in basis point, used to calculate the price\n @param hooksParameters The hooks parameters\n @param onHooksSetData The data to pass to the onHooksSet function" + }, + "id": 6569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setLBHooksParametersOnPair", + "nameLocation": "27821:27:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6513, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "27865:6:21", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "27858:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6512, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6511, + "name": "IERC20", + "nameLocations": [ + "27858:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "27858:6:21" + }, + "referencedDeclaration": 1838, + "src": "27858:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6516, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "27888:6:21", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "27881:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6515, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6514, + "name": "IERC20", + "nameLocations": [ + "27881:6:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "27881:6:21" + }, + "referencedDeclaration": 1838, + "src": "27881:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6518, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "27911:7:21", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "27904:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6517, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "27904:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6520, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "27936:15:21", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "27928:23:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6519, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "27928:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6522, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "27974:14:21", + "nodeType": "VariableDeclaration", + "scope": 6569, + "src": "27961:27:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6521, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27961:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "27848:146:21" + }, + "returnParameters": { + "id": 6524, + "nodeType": "ParameterList", + "parameters": [], + "src": "28004:0:21" + }, + "scope": 6622, + "src": "27812:571:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 116 + ], + "body": { + "id": 6595, + "nodeType": "Block", + "src": "28729:119:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6580, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6572, + "src": "28743:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 6581, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "28751:18:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "28743:26:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6588, + "nodeType": "IfStatement", + "src": "28739:57:21", + "trueBody": { + "expression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6583, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6574, + "src": "28778:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6584, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "28789:5:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 6585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28789:7:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28778:18:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6579, + "id": 6587, + "nodeType": "Return", + "src": "28771:25:21" + } + }, + { + "expression": { + "arguments": [ + { + "id": 6591, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6572, + "src": "28827:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6592, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6574, + "src": "28833:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6589, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "28813:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_LBFactory_$6622_$", + "typeString": "type(contract super LBFactory)" + } + }, + "id": 6590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28819:7:21", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 116, + "src": "28813:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 6593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28813:28:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6579, + "id": 6594, + "nodeType": "Return", + "src": "28806:35:21" + } + ] + }, + "documentation": { + "id": 6570, + "nodeType": "StructuredDocumentation", + "src": "28389:251:21", + "text": " @notice Returns whether the caller has the role or not, only the owner has the DEFAULT_ADMIN_ROLE\n @param role The role to check\n @param account The address to check\n @return Whether the account has the role or not" + }, + "functionSelector": "91d14854", + "id": 6596, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "28654:7:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6576, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "28705:8:21" + }, + "parameters": { + "id": 6575, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6572, + "mutability": "mutable", + "name": "role", + "nameLocation": "28670:4:21", + "nodeType": "VariableDeclaration", + "scope": 6596, + "src": "28662:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6571, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "28662:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6574, + "mutability": "mutable", + "name": "account", + "nameLocation": "28684:7:21", + "nodeType": "VariableDeclaration", + "scope": 6596, + "src": "28676:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6573, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28676:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "28661:31:21" + }, + "returnParameters": { + "id": 6579, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6578, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6596, + "src": "28723:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6577, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "28723:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "28722:6:21" + }, + "scope": 6622, + "src": "28645:203:21", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 315 + ], + "body": { + "id": 6620, + "nodeType": "Block", + "src": "29188:144:21", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6607, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6599, + "src": "29202:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 6608, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "29210:18:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "29202:26:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6613, + "nodeType": "IfStatement", + "src": "29198:79:21", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6610, + "name": "LBFactory__CannotGrantDefaultAdminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6963, + "src": "29237:38:21", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29237:40:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6612, + "nodeType": "RevertStatement", + "src": "29230:47:21" + } + }, + { + "expression": { + "arguments": [ + { + "id": 6616, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6599, + "src": "29311:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6617, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6601, + "src": "29317:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6614, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967271, + "src": "29294:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_LBFactory_$6622_$", + "typeString": "type(contract super LBFactory)" + } + }, + "id": 6615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29300:10:21", + "memberName": "_grantRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "29294:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 6618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29294:31:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6606, + "id": 6619, + "nodeType": "Return", + "src": "29287:38:21" + } + ] + }, + "documentation": { + "id": 6597, + "nodeType": "StructuredDocumentation", + "src": "28854:245:21", + "text": " @notice Grants a role to an address, the DEFAULT_ADMIN_ROLE can not be granted\n @param role The role to grant\n @param account The address to grant the role to\n @return Whether the role has been granted or not" + }, + "id": 6621, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "29113:10:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 6603, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "29164:8:21" + }, + "parameters": { + "id": 6602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6599, + "mutability": "mutable", + "name": "role", + "nameLocation": "29132:4:21", + "nodeType": "VariableDeclaration", + "scope": 6621, + "src": "29124:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6598, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "29124:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6601, + "mutability": "mutable", + "name": "account", + "nameLocation": "29146:7:21", + "nodeType": "VariableDeclaration", + "scope": 6621, + "src": "29138:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29138:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "29123:31:21" + }, + "returnParameters": { + "id": 6606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6605, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6621, + "src": "29182:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6604, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29182:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "29181:6:21" + }, + "scope": 6622, + "src": "29104:228:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6623, + "src": "1541:27793:21", + "usedErrors": [ + 530, + 535, + 711, + 714, + 1044, + 1047, + 2131, + 2134, + 2137, + 2360, + 6869, + 6874, + 6879, + 6881, + 6891, + 6901, + 6911, + 6917, + 6921, + 6927, + 6929, + 6933, + 6935, + 6939, + 6943, + 6947, + 6951, + 6955, + 6959, + 6961, + 6963, + 9100, + 10559, + 11262 + ], + "usedEvents": [ + 394, + 541, + 719, + 1056, + 1065, + 1074, + 6989, + 6995, + 7001, + 7007, + 7014, + 7032, + 7038, + 7042, + 7047, + 7052 + ] + } + ], + "src": "33:29302:21" + }, + "id": 21 + }, + "src/LBPairBeaconProxy.sol": { + "ast": { + "absolutePath": "src/LBPairBeaconProxy.sol", + "exportedSymbols": { + "BeaconProxy": [ + 1662 + ], + "ERC1967Utils": [ + 1568 + ], + "IOwnable": [ + 6639 + ], + "LBPairBeaconProxy": [ + 6837 + ], + "LBPairUnstructuredStorage": [ + 6855 + ], + "StorageSlot": [ + 2334 + ], + "StringUtils": [ + 10195 + ] + }, + "id": 6838, + "license": "GPL-3", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6624, + "literals": [ + "solidity", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "34:23:22" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol", + "file": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol", + "id": 6627, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6838, + "sourceUnit": 1663, + "src": "59:95:22", + "symbolAliases": [ + { + "foreign": { + "id": 6625, + "name": "BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "67:11:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 6626, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "80:12:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol", + "file": "@openzeppelin/contracts/utils/StorageSlot.sol", + "id": 6629, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6838, + "sourceUnit": 2335, + "src": "155:74:22", + "symbolAliases": [ + { + "foreign": { + "id": 6628, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "163:11:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/LBPairUnstructuredStorage.sol", + "file": "./LBPairUnstructuredStorage.sol", + "id": 6631, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6838, + "sourceUnit": 6856, + "src": "230:74:22", + "symbolAliases": [ + { + "foreign": { + "id": 6630, + "name": "LBPairUnstructuredStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6855, + "src": "238:25:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/StringUtils.sol", + "file": "./libraries/StringUtils.sol", + "id": 6633, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6838, + "sourceUnit": 10196, + "src": "305:56:22", + "symbolAliases": [ + { + "foreign": { + "id": 6632, + "name": "StringUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10195, + "src": "313:11:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IOwnable", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 6639, + "linearizedBaseContracts": [ + 6639 + ], + "name": "IOwnable", + "nameLocation": "374:8:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "8da5cb5b", + "id": 6638, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "owner", + "nameLocation": "398:5:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6634, + "nodeType": "ParameterList", + "parameters": [], + "src": "403:2:22" + }, + "returnParameters": { + "id": 6637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6636, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6638, + "src": "429:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6635, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "429:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "428:9:22" + }, + "scope": 6639, + "src": "389:49:22", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6838, + "src": "364:76:22", + "usedErrors": [], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 6641, + "name": "BeaconProxy", + "nameLocations": [ + "641:11:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1662, + "src": "641:11:22" + }, + "id": 6642, + "nodeType": "InheritanceSpecifier", + "src": "641:11:22" + }, + { + "baseName": { + "id": 6643, + "name": "LBPairUnstructuredStorage", + "nameLocations": [ + "654:25:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6855, + "src": "654:25:22" + }, + "id": 6644, + "nodeType": "InheritanceSpecifier", + "src": "654:25:22" + } + ], + "canonicalName": "LBPairBeaconProxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6640, + "nodeType": "StructuredDocumentation", + "src": "442:168:22", + "text": " @dev this is the Proxy contract of the LBPair.\n @dev this contract instantiates LBPair contract via OZ Beacon Proxy (LBPairUpgradeableBeacon in this case)." + }, + "fullyImplemented": true, + "id": 6837, + "linearizedBaseContracts": [ + 6837, + 6855, + 1662, + 1604 + ], + "name": "LBPairBeaconProxy", + "nameLocation": "620:17:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 6647, + "libraryName": { + "id": 6645, + "name": "StringUtils", + "nameLocations": [ + "693:11:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10195, + "src": "693:11:22" + }, + "nodeType": "UsingForDirective", + "src": "687:29:22", + "typeName": { + "id": 6646, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "709:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + }, + { + "body": { + "id": 6650, + "nodeType": "Block", + "src": "749:2:22", + "statements": [] + }, + "id": 6651, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6648, + "nodeType": "ParameterList", + "parameters": [], + "src": "729:2:22" + }, + "returnParameters": { + "id": 6649, + "nodeType": "ParameterList", + "parameters": [], + "src": "749:0:22" + }, + "scope": 6837, + "src": "722:29:22", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 6826, + "nodeType": "Block", + "src": "904:1323:22", + "statements": [ + { + "assignments": [ + 6669, + 6671 + ], + "declarations": [ + { + "constant": false, + "id": 6669, + "mutability": "mutable", + "name": "successSymbolX", + "nameLocation": "920:14:22", + "nodeType": "VariableDeclaration", + "scope": 6826, + "src": "915:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6668, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "915:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6671, + "mutability": "mutable", + "name": "symbolXData", + "nameLocation": "949:11:22", + "nodeType": "VariableDeclaration", + "scope": 6826, + "src": "936:24:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6670, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "936:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 6679, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "73796d626f6c2829", + "id": 6676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1007:10:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec", + "typeString": "literal_string \"symbol()\"" + }, + "value": "symbol()" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec", + "typeString": "literal_string \"symbol()\"" + } + ], + "expression": { + "id": 6674, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "983:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "987:19:22", + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "src": "983:23:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 6677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "983:35:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 6672, + "name": "_tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6655, + "src": "964:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "972:10:22", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "964:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 6678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "964:55:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "914:105:22" + }, + { + "assignments": [ + 6681 + ], + "declarations": [ + { + "constant": false, + "id": 6681, + "mutability": "mutable", + "name": "tokenXSymbol", + "nameLocation": "1043:12:22", + "nodeType": "VariableDeclaration", + "scope": 6826, + "src": "1029:26:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6680, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1029:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 6689, + "initialValue": { + "arguments": [ + { + "id": 6684, + "name": "symbolXData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6671, + "src": "1069:11:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 6686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1083:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 6685, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1083:6:22", + "typeDescriptions": {} + } + } + ], + "id": 6687, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1082:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + ], + "expression": { + "id": 6682, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "1058:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1062:6:22", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "1058:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1058:33:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1029:62:22" + }, + { + "assignments": [ + 6691, + 6693 + ], + "declarations": [ + { + "constant": false, + "id": 6691, + "mutability": "mutable", + "name": "successSymbolY", + "nameLocation": "1108:14:22", + "nodeType": "VariableDeclaration", + "scope": 6826, + "src": "1103:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6690, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1103:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6693, + "mutability": "mutable", + "name": "symbolYData", + "nameLocation": "1137:11:22", + "nodeType": "VariableDeclaration", + "scope": 6826, + "src": "1124:24:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6692, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1124:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 6701, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "73796d626f6c2829", + "id": 6698, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1195:10:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec", + "typeString": "literal_string \"symbol()\"" + }, + "value": "symbol()" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec", + "typeString": "literal_string \"symbol()\"" + } + ], + "expression": { + "id": 6696, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "1171:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1175:19:22", + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "src": "1171:23:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 6699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1171:35:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 6694, + "name": "_tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6657, + "src": "1152:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1160:10:22", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "1152:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 6700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1152:55:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1102:105:22" + }, + { + "assignments": [ + 6703 + ], + "declarations": [ + { + "constant": false, + "id": 6703, + "mutability": "mutable", + "name": "tokenYSymbol", + "nameLocation": "1231:12:22", + "nodeType": "VariableDeclaration", + "scope": 6826, + "src": "1217:26:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6702, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1217:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 6711, + "initialValue": { + "arguments": [ + { + "id": 6706, + "name": "symbolYData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6693, + "src": "1257:11:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 6708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1271:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 6707, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1271:6:22", + "typeDescriptions": {} + } + } + ], + "id": 6709, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1270:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + ], + "expression": { + "id": 6704, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "1246:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1250:6:22", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "1246:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1246:33:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1217:62:22" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6713, + "name": "successSymbolX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "1298:14:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 6714, + "name": "successSymbolY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6691, + "src": "1316:14:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1298:32:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c4250616972426561636f6e50726f78793a204661696c656420746f2067657420746f6b656e2073796d626f6c73", + "id": 6716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1333:48:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be", + "typeString": "literal_string \"LBPairBeaconProxy: Failed to get token symbols\"" + }, + "value": "LBPairBeaconProxy: Failed to get token symbols" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4e9da3da2d08638b47ecac85b87d008cfb8576d07436ebbb9e29cc1fd5fb7be", + "typeString": "literal_string \"LBPairBeaconProxy: Failed to get token symbols\"" + } + ], + "id": 6712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1290:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1290:92:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6718, + "nodeType": "ExpressionStatement", + "src": "1290:92:22" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6723, + "name": "tokenXSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6681, + "src": "1429:12:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1423:5:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6721, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1423:5:22", + "typeDescriptions": {} + } + }, + "id": 6724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1423:19:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6720, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "1413:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1413:30:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "", + "id": 6729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1463:2:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 6728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1457:5:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6727, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1457:5:22", + "typeDescriptions": {} + } + }, + "id": 6730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1457:9:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6726, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "1447:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1447:20:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1413:54:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6736, + "name": "tokenYSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6703, + "src": "1499:12:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1493:5:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6734, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1493:5:22", + "typeDescriptions": {} + } + }, + "id": 6737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1493:19:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6733, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "1483:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1483:30:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "", + "id": 6742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1533:2:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 6741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1527:5:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6740, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1527:5:22", + "typeDescriptions": {} + } + }, + "id": 6743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1527:9:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6739, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "1517:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1517:20:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1483:54:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1413:124:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4c4250616972426561636f6e50726f78793a20496e76616c696420746f6b656e2073796d626f6c73", + "id": 6747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1551:42:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199", + "typeString": "literal_string \"LBPairBeaconProxy: Invalid token symbols\"" + }, + "value": "LBPairBeaconProxy: Invalid token symbols" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bbf702eab82442f0b25ddfe5446ede0d9fb5dfac93c2f183e4c71d0569c46199", + "typeString": "literal_string \"LBPairBeaconProxy: Invalid token symbols\"" + } + ], + "id": 6719, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1392:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1392:211:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6749, + "nodeType": "ExpressionStatement", + "src": "1392:211:22" + }, + { + "expression": { + "id": 6757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 6753, + "name": "_SLOT_TOKEN_X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6842, + "src": "1641:13:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6750, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "1614:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 6752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1626:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "1614:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 6754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1614:41:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 6755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "1656:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "1614:47:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6756, + "name": "_tokenX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6655, + "src": "1664:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1614:57:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6758, + "nodeType": "ExpressionStatement", + "src": "1614:57:22" + }, + { + "expression": { + "id": 6766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 6762, + "name": "_SLOT_TOKEN_Y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1708:13:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6759, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "1681:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 6761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1693:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2256, + "src": "1681:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$2230_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 6763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1681:41:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$2230_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 6764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "1723:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2229, + "src": "1681:47:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6765, + "name": "_tokenY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6657, + "src": "1731:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1681:57:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6767, + "nodeType": "ExpressionStatement", + "src": "1681:57:22" + }, + { + "expression": { + "id": 6775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 6771, + "name": "_SLOT_BIN_STEP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6848, + "src": "1775:14:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6768, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "1748:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 6770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1760:14:22", + "memberName": "getUint256Slot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2289, + "src": "1748:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Uint256Slot_$2239_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.Uint256Slot storage pointer)" + } + }, + "id": 6772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1748:42:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$2239_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot storage pointer" + } + }, + "id": 6773, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "1791:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2238, + "src": "1748:48:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6774, + "name": "_binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6659, + "src": "1799:8:22", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "1748:59:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6776, + "nodeType": "ExpressionStatement", + "src": "1748:59:22" + }, + { + "assignments": [ + 6778 + ], + "declarations": [ + { + "constant": false, + "id": 6778, + "mutability": "mutable", + "name": "binStepStr", + "nameLocation": "1831:10:22", + "nodeType": "VariableDeclaration", + "scope": 6826, + "src": "1817:24:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6777, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1817:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 6782, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 6779, + "name": "_binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6659, + "src": "1844:8:22", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 6780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1853:14:22", + "memberName": "uint16ToString", + "nodeType": "MemberAccess", + "referencedDeclaration": 10194, + "src": "1844:23:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint16_$returns$_t_string_memory_ptr_$attached_to$_t_uint16_$", + "typeString": "function (uint16) pure returns (string memory)" + } + }, + "id": 6781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1844:25:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1817:52:22" + }, + { + "expression": { + "id": 6799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 6786, + "name": "_SLOT_PAIR_SYMBOL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6851, + "src": "1905:17:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6783, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "1879:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 6785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1891:13:22", + "memberName": "getStringSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2300, + "src": "1879:25:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_StringSlot_$2242_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.StringSlot storage pointer)" + } + }, + "id": 6787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1879:44:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2242_storage_ptr", + "typeString": "struct StorageSlot.StringSlot storage pointer" + } + }, + "id": 6788, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "1924:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2241, + "src": "1879:50:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "4c42545f", + "id": 6792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1946:6:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01", + "typeString": "literal_string \"LBT_\"" + }, + "value": "LBT_" + }, + { + "id": 6793, + "name": "tokenXSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6681, + "src": "1954:12:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "2f", + "id": 6794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1968:3:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + "value": "/" + }, + { + "id": 6795, + "name": "tokenYSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6703, + "src": "1973:12:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "2f", + "id": 6796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1987:3:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + "value": "/" + }, + { + "id": 6797, + "name": "binStepStr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6778, + "src": "1992:10:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3a14e051356e398b322caa7ebfa53c734c4eafe32c013c403450afd495a61d01", + "typeString": "literal_string \"LBT_\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 6790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1932:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 6789, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1932:6:22", + "typeDescriptions": {} + } + }, + "id": 6791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1939:6:22", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "1932:13:22", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 6798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1932:71:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1879:124:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6800, + "nodeType": "ExpressionStatement", + "src": "1879:124:22" + }, + { + "expression": { + "id": 6817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 6804, + "name": "_SLOT_PAIR_NAME", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6854, + "src": "2039:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6801, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2334, + "src": "2013:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$2334_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 6803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2025:13:22", + "memberName": "getStringSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2300, + "src": "2013:25:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_StringSlot_$2242_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.StringSlot storage pointer)" + } + }, + "id": 6805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2013:42:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$2242_storage_ptr", + "typeString": "struct StorageSlot.StringSlot storage pointer" + } + }, + "id": 6806, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2056:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2241, + "src": "2013:48:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "4c697175696469747920426f6f6b20546f6b656e20", + "id": 6810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2078:23:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592", + "typeString": "literal_string \"Liquidity Book Token \"" + }, + "value": "Liquidity Book Token " + }, + { + "id": 6811, + "name": "tokenXSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6681, + "src": "2103:12:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "2f", + "id": 6812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2117:3:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + "value": "/" + }, + { + "id": 6813, + "name": "tokenYSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6703, + "src": "2122:12:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "2f", + "id": 6814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2135:3:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + "value": "/" + }, + { + "id": 6815, + "name": "binStepStr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6778, + "src": "2140:10:22", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9b15d3e5913087344cf0c4032e70ee6b1b016e89212700f7e61ea49fcb2e4592", + "typeString": "literal_string \"Liquidity Book Token \"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527", + "typeString": "literal_string \"/\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 6808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2064:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 6807, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2064:6:22", + "typeDescriptions": {} + } + }, + "id": 6809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2071:6:22", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "2064:13:22", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 6816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2064:87:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2013:138:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6818, + "nodeType": "ExpressionStatement", + "src": "2013:138:22" + }, + { + "expression": { + "arguments": [ + { + "id": 6822, + "name": "_beaconAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6653, + "src": "2198:14:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 6823, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6661, + "src": "2214:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 6819, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "2162:12:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$1568_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 6821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2175:22:22", + "memberName": "upgradeBeaconToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 1553, + "src": "2162:35:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 6824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2162:58:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6825, + "nodeType": "ExpressionStatement", + "src": "2162:58:22" + } + ] + }, + "id": 6827, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 6664, + "name": "_beaconAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6653, + "src": "884:14:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 6665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "900:2:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "id": 6666, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 6663, + "name": "BeaconProxy", + "nameLocations": [ + "872:11:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1662, + "src": "872:11:22" + }, + "nodeType": "ModifierInvocation", + "src": "872:31:22" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6662, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6653, + "mutability": "mutable", + "name": "_beaconAddress", + "nameLocation": "777:14:22", + "nodeType": "VariableDeclaration", + "scope": 6827, + "src": "769:22:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "769:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6655, + "mutability": "mutable", + "name": "_tokenX", + "nameLocation": "801:7:22", + "nodeType": "VariableDeclaration", + "scope": 6827, + "src": "793:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "793:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6657, + "mutability": "mutable", + "name": "_tokenY", + "nameLocation": "818:7:22", + "nodeType": "VariableDeclaration", + "scope": 6827, + "src": "810:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "810:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6659, + "mutability": "mutable", + "name": "_binStep", + "nameLocation": "834:8:22", + "nodeType": "VariableDeclaration", + "scope": 6827, + "src": "827:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6658, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "827:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6661, + "mutability": "mutable", + "name": "_data", + "nameLocation": "857:5:22", + "nodeType": "VariableDeclaration", + "scope": 6827, + "src": "844:18:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6660, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "844:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "768:95:22" + }, + "returnParameters": { + "id": 6667, + "nodeType": "ParameterList", + "parameters": [], + "src": "904:0:22" + }, + "scope": 6837, + "src": "757:1470:22", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6835, + "nodeType": "Block", + "src": "2292:36:22", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6832, + "name": "_getBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1661, + "src": "2309:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 6833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2309:12:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6831, + "id": 6834, + "nodeType": "Return", + "src": "2302:19:22" + } + ] + }, + "functionSelector": "a0a0ea39", + "id": 6836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLBPairBeacon", + "nameLocation": "2242:15:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6828, + "nodeType": "ParameterList", + "parameters": [], + "src": "2257:2:22" + }, + "returnParameters": { + "id": 6831, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6830, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6836, + "src": "2283:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2283:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2282:9:22" + }, + "scope": 6837, + "src": "2233:95:22", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6838, + "src": "611:1719:22", + "usedErrors": [ + 1300, + 1310, + 1313, + 1851, + 1854 + ], + "usedEvents": [ + 1291 + ] + } + ], + "src": "34:2296:22" + }, + "id": 22 + }, + "src/LBPairUnstructuredStorage.sol": { + "ast": { + "absolutePath": "src/LBPairUnstructuredStorage.sol", + "exportedSymbols": { + "LBPairUnstructuredStorage": [ + 6855 + ] + }, + "id": 6856, + "license": "GPL-3", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6839, + "literals": [ + "solidity", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "34:23:23" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LBPairUnstructuredStorage", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 6855, + "linearizedBaseContracts": [ + 6855 + ], + "name": "LBPairUnstructuredStorage", + "nameLocation": "68:25:23", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 6842, + "mutability": "constant", + "name": "_SLOT_TOKEN_X", + "nameLocation": "126:13:23", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "100:108:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6840, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "100:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833343431616232396232346461663761336664353935303062306530383339366563303865633936663563633264303336323932346364643435636665633331", + "id": 6841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "142:66:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_23636294508301107577680635681661090711439558250128902812798817224127316749361_by_1", + "typeString": "int_const 2363...(69 digits omitted)...9361" + }, + "value": "0x3441ab29b24daf7a3fd59500b0e08396ec08ec96f5cc2d0362924cdd45cfec31" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 6845, + "mutability": "constant", + "name": "_SLOT_TOKEN_Y", + "nameLocation": "325:13:23", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "299:108:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6843, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "299:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307837653139333537363662376334396537343832613031386135656535326361313833613264646663623638313037383739313639333430373961613538323634", + "id": 6844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "341:66:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_57035959083260655775004422819093715498671196092765519082773795134528962265700_by_1", + "typeString": "int_const 5703...(69 digits omitted)...5700" + }, + "value": "0x7e1935766b7c49e7482a018a5ee52ca183a2ddfcb6810787916934079aa58264" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 6848, + "mutability": "constant", + "name": "_SLOT_BIN_STEP", + "nameLocation": "524:14:23", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "498:109:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6846, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "498:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866663035376233623464343530306464613230386364653564363534646237616132656336336163313061623966393935366131663536393733383432373832", + "id": 6847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "541:66:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_115349461137631762361384429121957931018567886207436072755853512712403749709698_by_1", + "typeString": "int_const 1153...(70 digits omitted)...9698" + }, + "value": "0xff057b3b4d4500dda208cde5d654db7aa2ec63ac10ab9f9956a1f56973842782" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 6851, + "mutability": "constant", + "name": "_SLOT_PAIR_SYMBOL", + "nameLocation": "725:17:23", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "699:112:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6849, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "699:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307836346662346563663633613430353961306262313431323630393333353637336434393534626666386539373430643231366439343639643139306362623366", + "id": 6850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "745:66:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_45675307399003414631903597396147079516775085462964649321364156913257120840511_by_1", + "typeString": "int_const 4567...(69 digits omitted)...0511" + }, + "value": "0x64fb4ecf63a4059a0bb1412609335673d4954bff8e9740d216d9469d190cbb3f" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 6854, + "mutability": "constant", + "name": "_SLOT_PAIR_NAME", + "nameLocation": "937:15:23", + "nodeType": "VariableDeclaration", + "scope": 6855, + "src": "911:110:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6852, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "911:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307864363638383633663036343034386565386338373339303232376361363535366431313065636634313330366337623634616162356331633533306232643834", + "id": 6853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "955:66:23", + "typeDescriptions": { + "typeIdentifier": "t_rational_96979628224701388068069480400324361993235344791171460263937981002059419954564_by_1", + "typeString": "int_const 9697...(69 digits omitted)...4564" + }, + "value": "0xd668863f064048ee8c87390227ca6556d110ecf41306c7b64aab5c1c530b2d84" + }, + "visibility": "internal" + } + ], + "scope": 6856, + "src": "59:1058:23", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "34:1083:23" + }, + "id": 23 + }, + "src/interfaces/ILBFactory.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBFactory.sol", + "exportedSymbols": { + "IERC20": [ + 1838 + ], + "ILBFactory": [ + 7329 + ], + "ILBHooks": [ + 7527 + ], + "ILBPair": [ + 7970 + ] + }, + "id": 7330, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6857, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:24" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 6859, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7330, + "sourceUnit": 1839, + "src": "59:70:24", + "symbolAliases": [ + { + "foreign": { + "id": 6858, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "67:6:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBHooks.sol", + "file": "./ILBHooks.sol", + "id": 6861, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7330, + "sourceUnit": 7528, + "src": "131:40:24", + "symbolAliases": [ + { + "foreign": { + "id": 6860, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "139:8:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBPair.sol", + "file": "./ILBPair.sol", + "id": 6863, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7330, + "sourceUnit": 7971, + "src": "172:38:24", + "symbolAliases": [ + { + "foreign": { + "id": 6862, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7970, + "src": "180:7:24", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBFactory", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 6864, + "nodeType": "StructuredDocumentation", + "src": "212:102:24", + "text": " @title Liquidity Book Factory Interface\n @notice Required interface of LBFactory contract" + }, + "fullyImplemented": false, + "id": 7329, + "linearizedBaseContracts": [ + 7329 + ], + "name": "ILBFactory", + "nameLocation": "325:10:24", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "2f9b1853", + "id": 6869, + "name": "LBFactory__IdenticalAddresses", + "nameLocation": "348:29:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6868, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6867, + "mutability": "mutable", + "name": "token", + "nameLocation": "385:5:24", + "nodeType": "VariableDeclaration", + "scope": 6869, + "src": "378:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6866, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6865, + "name": "IERC20", + "nameLocations": [ + "378:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "378:6:24" + }, + "referencedDeclaration": 1838, + "src": "378:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "377:14:24" + }, + "src": "342:50:24" + }, + { + "errorSelector": "8e888ef3", + "id": 6874, + "name": "LBFactory__QuoteAssetNotWhitelisted", + "nameLocation": "403:35:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6872, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "446:10:24", + "nodeType": "VariableDeclaration", + "scope": 6874, + "src": "439:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6871, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6870, + "name": "IERC20", + "nameLocations": [ + "439:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "439:6:24" + }, + "referencedDeclaration": 1838, + "src": "439:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "438:19:24" + }, + "src": "397:61:24" + }, + { + "errorSelector": "03ce0ad9", + "id": 6879, + "name": "LBFactory__QuoteAssetAlreadyWhitelisted", + "nameLocation": "469:39:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6877, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "516:10:24", + "nodeType": "VariableDeclaration", + "scope": 6879, + "src": "509:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6876, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6875, + "name": "IERC20", + "nameLocations": [ + "509:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "509:6:24" + }, + "referencedDeclaration": 1838, + "src": "509:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "508:19:24" + }, + "src": "463:65:24" + }, + { + "errorSelector": "95cf3ee4", + "id": 6881, + "name": "LBFactory__AddressZero", + "nameLocation": "539:22:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6880, + "nodeType": "ParameterList", + "parameters": [], + "src": "561:2:24" + }, + "src": "533:31:24" + }, + { + "errorSelector": "cb27a435", + "id": 6891, + "name": "LBFactory__LBPairAlreadyExists", + "nameLocation": "575:30:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6884, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "613:6:24", + "nodeType": "VariableDeclaration", + "scope": 6891, + "src": "606:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6883, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6882, + "name": "IERC20", + "nameLocations": [ + "606:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "606:6:24" + }, + "referencedDeclaration": 1838, + "src": "606:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6887, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "628:6:24", + "nodeType": "VariableDeclaration", + "scope": 6891, + "src": "621:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6886, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6885, + "name": "IERC20", + "nameLocations": [ + "621:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "621:6:24" + }, + "referencedDeclaration": 1838, + "src": "621:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6889, + "mutability": "mutable", + "name": "_binStep", + "nameLocation": "644:8:24", + "nodeType": "VariableDeclaration", + "scope": 6891, + "src": "636:16:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "636:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "605:48:24" + }, + "src": "569:85:24" + }, + { + "errorSelector": "40aa4644", + "id": 6901, + "name": "LBFactory__LBPairDoesNotExist", + "nameLocation": "665:29:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6894, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "702:6:24", + "nodeType": "VariableDeclaration", + "scope": 6901, + "src": "695:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6893, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6892, + "name": "IERC20", + "nameLocations": [ + "695:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "695:6:24" + }, + "referencedDeclaration": 1838, + "src": "695:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6897, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "717:6:24", + "nodeType": "VariableDeclaration", + "scope": 6901, + "src": "710:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6896, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6895, + "name": "IERC20", + "nameLocations": [ + "710:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "710:6:24" + }, + "referencedDeclaration": 1838, + "src": "710:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6899, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "733:7:24", + "nodeType": "VariableDeclaration", + "scope": 6901, + "src": "725:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "725:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "694:47:24" + }, + "src": "659:83:24" + }, + { + "errorSelector": "b65ee953", + "id": 6911, + "name": "LBFactory__LBPairNotCreated", + "nameLocation": "753:27:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6904, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "788:6:24", + "nodeType": "VariableDeclaration", + "scope": 6911, + "src": "781:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6903, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6902, + "name": "IERC20", + "nameLocations": [ + "781:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "781:6:24" + }, + "referencedDeclaration": 1838, + "src": "781:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6907, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "803:6:24", + "nodeType": "VariableDeclaration", + "scope": 6911, + "src": "796:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6906, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6905, + "name": "IERC20", + "nameLocations": [ + "796:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "796:6:24" + }, + "referencedDeclaration": 1838, + "src": "796:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6909, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "819:7:24", + "nodeType": "VariableDeclaration", + "scope": 6911, + "src": "811:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "811:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "780:47:24" + }, + "src": "747:81:24" + }, + { + "errorSelector": "5e8988c1", + "id": 6917, + "name": "LBFactory__FlashLoanFeeAboveMax", + "nameLocation": "839:31:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6913, + "mutability": "mutable", + "name": "fees", + "nameLocation": "879:4:24", + "nodeType": "VariableDeclaration", + "scope": 6917, + "src": "871:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "871:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6915, + "mutability": "mutable", + "name": "maxFees", + "nameLocation": "893:7:24", + "nodeType": "VariableDeclaration", + "scope": 6917, + "src": "885:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6914, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "885:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "870:31:24" + }, + "src": "833:69:24" + }, + { + "errorSelector": "4f958e71", + "id": 6921, + "name": "LBFactory__BinStepTooLow", + "nameLocation": "913:24:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6919, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "946:7:24", + "nodeType": "VariableDeclaration", + "scope": 6921, + "src": "938:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "938:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "937:17:24" + }, + "src": "907:48:24" + }, + { + "errorSelector": "09f85fce", + "id": 6927, + "name": "LBFactory__PresetIsLockedForUsers", + "nameLocation": "966:33:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6923, + "mutability": "mutable", + "name": "user", + "nameLocation": "1008:4:24", + "nodeType": "VariableDeclaration", + "scope": 6927, + "src": "1000:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1000:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6925, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1022:7:24", + "nodeType": "VariableDeclaration", + "scope": 6927, + "src": "1014:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1014:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "999:31:24" + }, + "src": "960:71:24" + }, + { + "errorSelector": "00ddccca", + "id": 6929, + "name": "LBFactory__LBPairIgnoredIsAlreadyInTheSameState", + "nameLocation": "1042:47:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6928, + "nodeType": "ParameterList", + "parameters": [], + "src": "1089:2:24" + }, + "src": "1036:56:24" + }, + { + "errorSelector": "fb22c17e", + "id": 6933, + "name": "LBFactory__BinStepHasNoPreset", + "nameLocation": "1103:29:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6931, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1141:7:24", + "nodeType": "VariableDeclaration", + "scope": 6933, + "src": "1133:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6930, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1133:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1132:17:24" + }, + "src": "1097:53:24" + }, + { + "errorSelector": "237c71b6", + "id": 6935, + "name": "LBFactory__PresetOpenStateIsAlreadyInTheSameState", + "nameLocation": "1161:49:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6934, + "nodeType": "ParameterList", + "parameters": [], + "src": "1210:2:24" + }, + "src": "1155:58:24" + }, + { + "errorSelector": "4fcea971", + "id": 6939, + "name": "LBFactory__SameFeeRecipient", + "nameLocation": "1224:27:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6937, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "1260:12:24", + "nodeType": "VariableDeclaration", + "scope": 6939, + "src": "1252:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1252:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1251:22:24" + }, + "src": "1218:56:24" + }, + { + "errorSelector": "6ea8c7a4", + "id": 6943, + "name": "LBFactory__SameFlashLoanFee", + "nameLocation": "1285:27:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6941, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "1321:12:24", + "nodeType": "VariableDeclaration", + "scope": 6943, + "src": "1313:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1313:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1312:22:24" + }, + "src": "1279:56:24" + }, + { + "errorSelector": "147ce15e", + "id": 6947, + "name": "LBFactory__LBPairSafetyCheckFailed", + "nameLocation": "1346:34:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6946, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6945, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "1389:20:24", + "nodeType": "VariableDeclaration", + "scope": 6947, + "src": "1381:28:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1381:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1380:30:24" + }, + "src": "1340:71:24" + }, + { + "errorSelector": "6f69dca8", + "id": 6951, + "name": "LBFactory__SameImplementation", + "nameLocation": "1422:29:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6950, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6949, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "1460:20:24", + "nodeType": "VariableDeclaration", + "scope": 6951, + "src": "1452:28:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1452:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1451:30:24" + }, + "src": "1416:66:24" + }, + { + "errorSelector": "9c1737f9", + "id": 6955, + "name": "LBFactory__SameHooksImplementation", + "nameLocation": "1493:34:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6953, + "mutability": "mutable", + "name": "hooksImplementation", + "nameLocation": "1536:19:24", + "nodeType": "VariableDeclaration", + "scope": 6955, + "src": "1528:27:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1528:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1527:29:24" + }, + "src": "1487:70:24" + }, + { + "errorSelector": "b70cd0db", + "id": 6959, + "name": "LBFactory__SameHooksParameters", + "nameLocation": "1568:30:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6958, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6957, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "1607:15:24", + "nodeType": "VariableDeclaration", + "scope": 6959, + "src": "1599:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6956, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1599:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1598:25:24" + }, + "src": "1562:62:24" + }, + { + "errorSelector": "d43a15d1", + "id": 6961, + "name": "LBFactory__InvalidHooksParameters", + "nameLocation": "1635:33:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6960, + "nodeType": "ParameterList", + "parameters": [], + "src": "1668:2:24" + }, + "src": "1629:42:24" + }, + { + "errorSelector": "7c64a79e", + "id": 6963, + "name": "LBFactory__CannotGrantDefaultAdminRole", + "nameLocation": "1682:38:24", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6962, + "nodeType": "ParameterList", + "parameters": [], + "src": "1720:2:24" + }, + "src": "1676:47:24" + }, + { + "canonicalName": "ILBFactory.LBPairInformation", + "documentation": { + "id": 6964, + "nodeType": "StructuredDocumentation", + "src": "1729:372:24", + "text": " @dev Structure to store the LBPair information, such as:\n binStep: The bin step of the LBPair\n LBPair: The address of the LBPair\n createdByOwner: Whether the pair was created by the owner of the factory\n ignoredForRouting: Whether the pair is ignored for routing or not. An ignored pair will not be explored during routes finding" + }, + "id": 6974, + "members": [ + { + "constant": false, + "id": 6966, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2148:7:24", + "nodeType": "VariableDeclaration", + "scope": 6974, + "src": "2141:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 6965, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2141:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6969, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "2173:6:24", + "nodeType": "VariableDeclaration", + "scope": 6974, + "src": "2165:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6968, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6967, + "name": "ILBPair", + "nameLocations": [ + "2165:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "2165:7:24" + }, + "referencedDeclaration": 7970, + "src": "2165:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6971, + "mutability": "mutable", + "name": "createdByOwner", + "nameLocation": "2194:14:24", + "nodeType": "VariableDeclaration", + "scope": 6974, + "src": "2189:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6970, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2189:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6973, + "mutability": "mutable", + "name": "ignoredForRouting", + "nameLocation": "2223:17:24", + "nodeType": "VariableDeclaration", + "scope": 6974, + "src": "2218:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6972, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2218:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "LBPairInformation", + "nameLocation": "2113:17:24", + "nodeType": "StructDefinition", + "scope": 7329, + "src": "2106:141:24", + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff", + "id": 6989, + "name": "LBPairCreated", + "nameLocation": "2259:13:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 6988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6977, + "indexed": true, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "2297:6:24", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "2282:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6976, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6975, + "name": "IERC20", + "nameLocations": [ + "2282:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "2282:6:24" + }, + "referencedDeclaration": 1838, + "src": "2282:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6980, + "indexed": true, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "2320:6:24", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "2305:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6979, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6978, + "name": "IERC20", + "nameLocations": [ + "2305:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "2305:6:24" + }, + "referencedDeclaration": 1838, + "src": "2305:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6982, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2344:7:24", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "2328:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6981, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2328:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6985, + "indexed": false, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "2361:6:24", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "2353:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 6984, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6983, + "name": "ILBPair", + "nameLocations": [ + "2353:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "2353:7:24" + }, + "referencedDeclaration": 7970, + "src": "2353:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6987, + "indexed": false, + "mutability": "mutable", + "name": "pid", + "nameLocation": "2377:3:24", + "nodeType": "VariableDeclaration", + "scope": 6989, + "src": "2369:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2369:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2272:114:24" + }, + "src": "2253:134:24" + }, + { + "anonymous": false, + "eventSelector": "15d80a013f22151bc7246e3bc132e12828cde19de98870475e3fa70840152721", + "id": 6995, + "name": "FeeRecipientSet", + "nameLocation": "2399:15:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 6994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6991, + "indexed": false, + "mutability": "mutable", + "name": "oldRecipient", + "nameLocation": "2423:12:24", + "nodeType": "VariableDeclaration", + "scope": 6995, + "src": "2415:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6990, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2415:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6993, + "indexed": false, + "mutability": "mutable", + "name": "newRecipient", + "nameLocation": "2445:12:24", + "nodeType": "VariableDeclaration", + "scope": 6995, + "src": "2437:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6992, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2437:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2414:44:24" + }, + "src": "2393:66:24" + }, + { + "anonymous": false, + "eventSelector": "5c34e91c94c78b662a45d0bd4a25a4e32c584c54a45a76e4a4d43be27ba40e50", + "id": 7001, + "name": "FlashLoanFeeSet", + "nameLocation": "2471:15:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6997, + "indexed": false, + "mutability": "mutable", + "name": "oldFlashLoanFee", + "nameLocation": "2495:15:24", + "nodeType": "VariableDeclaration", + "scope": 7001, + "src": "2487:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6996, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2487:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6999, + "indexed": false, + "mutability": "mutable", + "name": "newFlashLoanFee", + "nameLocation": "2520:15:24", + "nodeType": "VariableDeclaration", + "scope": 7001, + "src": "2512:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2512:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2486:50:24" + }, + "src": "2465:72:24" + }, + { + "anonymous": false, + "eventSelector": "900d0e3d359f50e4f923ecdc06b401e07dbb9f485e17b07bcfc91a13000b277e", + "id": 7007, + "name": "LBPairImplementationSet", + "nameLocation": "2549:23:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7003, + "indexed": false, + "mutability": "mutable", + "name": "oldLBPairImplementation", + "nameLocation": "2581:23:24", + "nodeType": "VariableDeclaration", + "scope": 7007, + "src": "2573:31:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2573:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7005, + "indexed": false, + "mutability": "mutable", + "name": "LBPairImplementation", + "nameLocation": "2614:20:24", + "nodeType": "VariableDeclaration", + "scope": 7007, + "src": "2606:28:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2606:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2572:63:24" + }, + "src": "2543:93:24" + }, + { + "anonymous": false, + "eventSelector": "44cf35361c9ff3c8c1397ec6410d5495cc481feaef35c9af11da1a637107de4f", + "id": 7014, + "name": "LBPairIgnoredStateChanged", + "nameLocation": "2648:25:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7010, + "indexed": true, + "mutability": "mutable", + "name": "LBPair", + "nameLocation": "2690:6:24", + "nodeType": "VariableDeclaration", + "scope": 7014, + "src": "2674:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 7009, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7008, + "name": "ILBPair", + "nameLocations": [ + "2674:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "2674:7:24" + }, + "referencedDeclaration": 7970, + "src": "2674:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7012, + "indexed": false, + "mutability": "mutable", + "name": "ignored", + "nameLocation": "2703:7:24", + "nodeType": "VariableDeclaration", + "scope": 7014, + "src": "2698:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7011, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2698:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2673:38:24" + }, + "src": "2642:70:24" + }, + { + "anonymous": false, + "eventSelector": "839844a256a87f87c9c835117d9a1c40be013954064c937072acb32d36db6a28", + "id": 7032, + "name": "PresetSet", + "nameLocation": "2724:9:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7016, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "2759:7:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2743:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7015, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2743:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7018, + "indexed": false, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "2784:10:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2776:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7017, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2776:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7020, + "indexed": false, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "2812:12:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2804:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2804:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7022, + "indexed": false, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "2842:11:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2834:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7021, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2834:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7024, + "indexed": false, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "2871:15:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2863:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2863:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7026, + "indexed": false, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "2904:18:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2896:26:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7025, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2896:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7028, + "indexed": false, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "2940:13:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2932:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2932:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7030, + "indexed": false, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "2971:24:24", + "nodeType": "VariableDeclaration", + "scope": 7032, + "src": "2963:32:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7029, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2963:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2733:268:24" + }, + "src": "2718:284:24" + }, + { + "anonymous": false, + "eventSelector": "58a8b6a02b964cca2712e5a71d7b0d564a56b4a0f573b4c47f389341ade14cfd", + "id": 7038, + "name": "PresetOpenStateChanged", + "nameLocation": "3014:22:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7034, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3053:7:24", + "nodeType": "VariableDeclaration", + "scope": 7038, + "src": "3037:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7033, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3037:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7036, + "indexed": true, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "3075:6:24", + "nodeType": "VariableDeclaration", + "scope": 7038, + "src": "3062:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7035, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3062:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3036:46:24" + }, + "src": "3008:75:24" + }, + { + "anonymous": false, + "eventSelector": "dd86b848bb56ff540caa68683fa467d0e7eb5f8b2d44e4ee435742eeeae9be13", + "id": 7042, + "name": "PresetRemoved", + "nameLocation": "3095:13:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7040, + "indexed": true, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3125:7:24", + "nodeType": "VariableDeclaration", + "scope": 7042, + "src": "3109:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7039, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3109:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3108:25:24" + }, + "src": "3089:45:24" + }, + { + "anonymous": false, + "eventSelector": "84cc2115995684dcb0cd3d3a9565e3d32f075de81db70c8dc3a719b2a47af67e", + "id": 7047, + "name": "QuoteAssetAdded", + "nameLocation": "3146:15:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7045, + "indexed": true, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "3177:10:24", + "nodeType": "VariableDeclaration", + "scope": 7047, + "src": "3162:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7044, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7043, + "name": "IERC20", + "nameLocations": [ + "3162:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "3162:6:24" + }, + "referencedDeclaration": 1838, + "src": "3162:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3161:27:24" + }, + "src": "3140:49:24" + }, + { + "anonymous": false, + "eventSelector": "0b767739217755d8af5a2ba75b181a19fa1750f8bb701f09311cb19a90140cb3", + "id": 7052, + "name": "QuoteAssetRemoved", + "nameLocation": "3201:17:24", + "nodeType": "EventDefinition", + "parameters": { + "id": 7051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7050, + "indexed": true, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "3234:10:24", + "nodeType": "VariableDeclaration", + "scope": 7052, + "src": "3219:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7049, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7048, + "name": "IERC20", + "nameLocations": [ + "3219:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "3219:6:24" + }, + "referencedDeclaration": 1838, + "src": "3219:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3218:27:24" + }, + "src": "3195:51:24" + }, + { + "functionSelector": "701ab8c1", + "id": 7057, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getMinBinStep", + "nameLocation": "3261:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7053, + "nodeType": "ParameterList", + "parameters": [], + "src": "3274:2:24" + }, + "returnParameters": { + "id": 7056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7055, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7057, + "src": "3300:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7054, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3300:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3299:9:24" + }, + "scope": 7329, + "src": "3252:57:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4ccb20c0", + "id": 7062, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFeeRecipient", + "nameLocation": "3324:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7058, + "nodeType": "ParameterList", + "parameters": [], + "src": "3339:2:24" + }, + "returnParameters": { + "id": 7061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7060, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7062, + "src": "3365:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3365:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3364:9:24" + }, + "scope": 7329, + "src": "3315:59:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8ce9aa1c", + "id": 7067, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getMaxFlashLoanFee", + "nameLocation": "3389:18:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7063, + "nodeType": "ParameterList", + "parameters": [], + "src": "3407:2:24" + }, + "returnParameters": { + "id": 7066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7065, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7067, + "src": "3433:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3433:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3432:9:24" + }, + "scope": 7329, + "src": "3380:62:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fd90c2be", + "id": 7072, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFlashLoanFee", + "nameLocation": "3457:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7068, + "nodeType": "ParameterList", + "parameters": [], + "src": "3472:2:24" + }, + "returnParameters": { + "id": 7071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7070, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7072, + "src": "3498:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3498:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3497:9:24" + }, + "scope": 7329, + "src": "3448:59:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a0a0ea39", + "id": 7077, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPairBeacon", + "nameLocation": "3522:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7073, + "nodeType": "ParameterList", + "parameters": [], + "src": "3537:2:24" + }, + "returnParameters": { + "id": 7076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7075, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7077, + "src": "3563:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3563:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3562:9:24" + }, + "scope": 7329, + "src": "3513:59:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e937c3a", + "id": 7082, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNumberOfLBPairs", + "nameLocation": "3587:18:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7078, + "nodeType": "ParameterList", + "parameters": [], + "src": "3605:2:24" + }, + "returnParameters": { + "id": 7081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7080, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7082, + "src": "3631:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7079, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3631:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3630:9:24" + }, + "scope": 7329, + "src": "3578:62:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7daf5d66", + "id": 7090, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPairAtIndex", + "nameLocation": "3655:16:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7084, + "mutability": "mutable", + "name": "id", + "nameLocation": "3680:2:24", + "nodeType": "VariableDeclaration", + "scope": 7090, + "src": "3672:10:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7083, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3672:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3671:12:24" + }, + "returnParameters": { + "id": 7089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7088, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7090, + "src": "3702:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 7087, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7086, + "name": "ILBPair", + "nameLocations": [ + "3702:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "3702:7:24" + }, + "referencedDeclaration": 7970, + "src": "3702:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "3701:9:24" + }, + "scope": 7329, + "src": "3646:65:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "80c5061e", + "id": 7095, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNumberOfQuoteAssets", + "nameLocation": "3726:22:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7091, + "nodeType": "ParameterList", + "parameters": [], + "src": "3748:2:24" + }, + "returnParameters": { + "id": 7094, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7093, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7095, + "src": "3774:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3774:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3773:9:24" + }, + "scope": 7329, + "src": "3717:66:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0752092b", + "id": 7103, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getQuoteAssetAtIndex", + "nameLocation": "3798:20:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7097, + "mutability": "mutable", + "name": "index", + "nameLocation": "3827:5:24", + "nodeType": "VariableDeclaration", + "scope": 7103, + "src": "3819:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7096, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3819:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3818:15:24" + }, + "returnParameters": { + "id": 7102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7101, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7103, + "src": "3857:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7100, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7099, + "name": "IERC20", + "nameLocations": [ + "3857:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "3857:6:24" + }, + "referencedDeclaration": 1838, + "src": "3857:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3856:8:24" + }, + "scope": 7329, + "src": "3789:76:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "be203094", + "id": 7114, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "3880:10:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7105, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "3899:12:24", + "nodeType": "VariableDeclaration", + "scope": 7114, + "src": "3891:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3891:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7107, + "mutability": "mutable", + "name": "initialOwner", + "nameLocation": "3921:12:24", + "nodeType": "VariableDeclaration", + "scope": 7114, + "src": "3913:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3913:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7109, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "3943:12:24", + "nodeType": "VariableDeclaration", + "scope": 7114, + "src": "3935:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3935:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7111, + "mutability": "mutable", + "name": "lbPairBeaconAddress", + "nameLocation": "3965:19:24", + "nodeType": "VariableDeclaration", + "scope": 7114, + "src": "3957:27:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3957:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3890:95:24" + }, + "returnParameters": { + "id": 7113, + "nodeType": "ParameterList", + "parameters": [], + "src": "3994:0:24" + }, + "scope": 7329, + "src": "3871:124:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "27721842", + "id": 7122, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isQuoteAsset", + "nameLocation": "4010:12:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7117, + "mutability": "mutable", + "name": "token", + "nameLocation": "4030:5:24", + "nodeType": "VariableDeclaration", + "scope": 7122, + "src": "4023:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7116, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7115, + "name": "IERC20", + "nameLocations": [ + "4023:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "4023:6:24" + }, + "referencedDeclaration": 1838, + "src": "4023:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "4022:14:24" + }, + "returnParameters": { + "id": 7121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7120, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7122, + "src": "4060:4:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7119, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4060:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4059:6:24" + }, + "scope": 7329, + "src": "4001:65:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "704037bd", + "id": 7136, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPairInformation", + "nameLocation": "4081:20:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7125, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "4109:6:24", + "nodeType": "VariableDeclaration", + "scope": 7136, + "src": "4102:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7124, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7123, + "name": "IERC20", + "nameLocations": [ + "4102:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "4102:6:24" + }, + "referencedDeclaration": 1838, + "src": "4102:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7128, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "4124:6:24", + "nodeType": "VariableDeclaration", + "scope": 7136, + "src": "4117:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7127, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7126, + "name": "IERC20", + "nameLocations": [ + "4117:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "4117:6:24" + }, + "referencedDeclaration": 1838, + "src": "4117:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7130, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4140:7:24", + "nodeType": "VariableDeclaration", + "scope": 7136, + "src": "4132:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4132:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4101:47:24" + }, + "returnParameters": { + "id": 7135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7134, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7136, + "src": "4196:24:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + }, + "typeName": { + "id": 7133, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7132, + "name": "LBPairInformation", + "nameLocations": [ + "4196:17:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "4196:17:24" + }, + "referencedDeclaration": 6974, + "src": "4196:17:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "visibility": "internal" + } + ], + "src": "4195:26:24" + }, + "scope": 7329, + "src": "4072:150:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "aabc4b3c", + "id": 7157, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPreset", + "nameLocation": "4237:9:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7138, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "4255:7:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4247:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4247:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4246:17:24" + }, + "returnParameters": { + "id": 7156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7141, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "4332:10:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4324:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7140, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4324:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7143, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "4364:12:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4356:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4356:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7145, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "4398:11:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4390:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4390:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7147, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "4431:15:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4423:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4423:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7149, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "4468:18:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4460:26:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7148, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4460:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7151, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "4508:13:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4500:21:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7150, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4500:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7153, + "mutability": "mutable", + "name": "maxAccumulator", + "nameLocation": "4543:14:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4535:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4535:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7155, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "4576:6:24", + "nodeType": "VariableDeclaration", + "scope": 7157, + "src": "4571:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7154, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4571:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4310:282:24" + }, + "scope": 7329, + "src": "4228:365:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5b35875c", + "id": 7163, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllBinSteps", + "nameLocation": "4608:14:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7158, + "nodeType": "ParameterList", + "parameters": [], + "src": "4622:2:24" + }, + "returnParameters": { + "id": 7162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7161, + "mutability": "mutable", + "name": "presetsBinStep", + "nameLocation": "4665:14:24", + "nodeType": "VariableDeclaration", + "scope": 7163, + "src": "4648:31:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4648:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7160, + "nodeType": "ArrayTypeName", + "src": "4648:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4647:33:24" + }, + "scope": 7329, + "src": "4599:82:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0282c9c1", + "id": 7169, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOpenBinSteps", + "nameLocation": "4696:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7164, + "nodeType": "ParameterList", + "parameters": [], + "src": "4711:2:24" + }, + "returnParameters": { + "id": 7168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7167, + "mutability": "mutable", + "name": "openBinStep", + "nameLocation": "4754:11:24", + "nodeType": "VariableDeclaration", + "scope": 7169, + "src": "4737:28:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7165, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4737:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7166, + "nodeType": "ArrayTypeName", + "src": "4737:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "4736:30:24" + }, + "scope": 7329, + "src": "4687:80:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6622e0d7", + "id": 7182, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAllLBPairs", + "nameLocation": "4782:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7172, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "4803:6:24", + "nodeType": "VariableDeclaration", + "scope": 7182, + "src": "4796:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7171, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7170, + "name": "IERC20", + "nameLocations": [ + "4796:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "4796:6:24" + }, + "referencedDeclaration": 1838, + "src": "4796:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7175, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "4818:6:24", + "nodeType": "VariableDeclaration", + "scope": 7182, + "src": "4811:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7174, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7173, + "name": "IERC20", + "nameLocations": [ + "4811:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "4811:6:24" + }, + "referencedDeclaration": 1838, + "src": "4811:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "4795:30:24" + }, + "returnParameters": { + "id": 7181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7180, + "mutability": "mutable", + "name": "LBPairsBinStep", + "nameLocation": "4900:14:24", + "nodeType": "VariableDeclaration", + "scope": 7182, + "src": "4873:41:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ILBFactory.LBPairInformation[]" + }, + "typeName": { + "baseType": { + "id": 7178, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7177, + "name": "LBPairInformation", + "nameLocations": [ + "4873:17:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6974, + "src": "4873:17:24" + }, + "referencedDeclaration": 6974, + "src": "4873:17:24", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LBPairInformation_$6974_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation" + } + }, + "id": 7179, + "nodeType": "ArrayTypeName", + "src": "4873:19:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_LBPairInformation_$6974_storage_$dyn_storage_ptr", + "typeString": "struct ILBFactory.LBPairInformation[]" + } + }, + "visibility": "internal" + } + ], + "src": "4872:43:24" + }, + "scope": 7329, + "src": "4773:143:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c1b931be", + "id": 7187, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPauserRole", + "nameLocation": "4931:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7183, + "nodeType": "ParameterList", + "parameters": [], + "src": "4944:2:24" + }, + "returnParameters": { + "id": 7186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7185, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7187, + "src": "4970:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7184, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4970:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4969:9:24" + }, + "scope": 7329, + "src": "4922:57:24", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "659ac74b", + "id": 7203, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "createLBPair", + "nameLocation": "4994:12:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7190, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "5014:6:24", + "nodeType": "VariableDeclaration", + "scope": 7203, + "src": "5007:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7189, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7188, + "name": "IERC20", + "nameLocations": [ + "5007:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "5007:6:24" + }, + "referencedDeclaration": 1838, + "src": "5007:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7193, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "5029:6:24", + "nodeType": "VariableDeclaration", + "scope": 7203, + "src": "5022:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7192, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7191, + "name": "IERC20", + "nameLocations": [ + "5022:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "5022:6:24" + }, + "referencedDeclaration": 1838, + "src": "5022:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7195, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "5044:8:24", + "nodeType": "VariableDeclaration", + "scope": 7203, + "src": "5037:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7194, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5037:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7197, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5061:7:24", + "nodeType": "VariableDeclaration", + "scope": 7203, + "src": "5054:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7196, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5054:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5006:63:24" + }, + "returnParameters": { + "id": 7202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7201, + "mutability": "mutable", + "name": "pair", + "nameLocation": "5112:4:24", + "nodeType": "VariableDeclaration", + "scope": 7203, + "src": "5104:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 7200, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7199, + "name": "ILBPair", + "nameLocations": [ + "5104:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "5104:7:24" + }, + "referencedDeclaration": 7970, + "src": "5104:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "5103:14:24" + }, + "scope": 7329, + "src": "4985:133:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "69d56ea3", + "id": 7216, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setLBPairIgnored", + "nameLocation": "5133:16:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7206, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "5157:6:24", + "nodeType": "VariableDeclaration", + "scope": 7216, + "src": "5150:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7205, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7204, + "name": "IERC20", + "nameLocations": [ + "5150:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "5150:6:24" + }, + "referencedDeclaration": 1838, + "src": "5150:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7209, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "5172:6:24", + "nodeType": "VariableDeclaration", + "scope": 7216, + "src": "5165:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7208, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7207, + "name": "IERC20", + "nameLocations": [ + "5165:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "5165:6:24" + }, + "referencedDeclaration": 1838, + "src": "5165:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7211, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5187:7:24", + "nodeType": "VariableDeclaration", + "scope": 7216, + "src": "5180:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7210, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5180:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7213, + "mutability": "mutable", + "name": "ignored", + "nameLocation": "5201:7:24", + "nodeType": "VariableDeclaration", + "scope": 7216, + "src": "5196:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7212, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5196:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5149:60:24" + }, + "returnParameters": { + "id": 7215, + "nodeType": "ParameterList", + "parameters": [], + "src": "5218:0:24" + }, + "scope": 7329, + "src": "5124:95:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "379ee803", + "id": 7237, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setPreset", + "nameLocation": "5234:9:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7218, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5260:7:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5253:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7217, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5253:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7220, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "5284:10:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5277:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7219, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5277:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7222, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "5311:12:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5304:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7221, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5304:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7224, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "5340:11:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5333:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7223, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5333:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7226, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "5368:15:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5361:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7225, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5361:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7228, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "5400:18:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5393:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7227, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5393:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7230, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "5435:13:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5428:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7229, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5428:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7232, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "5465:24:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5458:31:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7231, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5458:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7234, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "5504:6:24", + "nodeType": "VariableDeclaration", + "scope": 7237, + "src": "5499:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7233, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5499:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5243:273:24" + }, + "returnParameters": { + "id": 7236, + "nodeType": "ParameterList", + "parameters": [], + "src": "5525:0:24" + }, + "scope": 7329, + "src": "5225:301:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4cd161d3", + "id": 7244, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setPresetOpenState", + "nameLocation": "5541:18:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7239, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5567:7:24", + "nodeType": "VariableDeclaration", + "scope": 7244, + "src": "5560:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7238, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5560:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7241, + "mutability": "mutable", + "name": "isOpen", + "nameLocation": "5581:6:24", + "nodeType": "VariableDeclaration", + "scope": 7244, + "src": "5576:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7240, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5576:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5559:29:24" + }, + "returnParameters": { + "id": 7243, + "nodeType": "ParameterList", + "parameters": [], + "src": "5597:0:24" + }, + "scope": 7329, + "src": "5532:66:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e203a31f", + "id": 7249, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removePreset", + "nameLocation": "5613:12:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7246, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5633:7:24", + "nodeType": "VariableDeclaration", + "scope": 7249, + "src": "5626:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7245, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5626:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5625:16:24" + }, + "returnParameters": { + "id": 7248, + "nodeType": "ParameterList", + "parameters": [], + "src": "5650:0:24" + }, + "scope": 7329, + "src": "5604:47:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "093ff769", + "id": 7274, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeesParametersOnPair", + "nameLocation": "5666:23:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7252, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "5706:6:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5699:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7251, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7250, + "name": "IERC20", + "nameLocations": [ + "5699:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "5699:6:24" + }, + "referencedDeclaration": 1838, + "src": "5699:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7255, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "5729:6:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5722:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7254, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7253, + "name": "IERC20", + "nameLocations": [ + "5722:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "5722:6:24" + }, + "referencedDeclaration": 1838, + "src": "5722:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7257, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "5752:7:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5745:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7256, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5745:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7259, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "5776:10:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5769:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7258, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5769:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7261, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "5803:12:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5796:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7260, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5796:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7263, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "5832:11:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5825:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7262, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5825:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7265, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "5860:15:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5853:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7264, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5853:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7267, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "5892:18:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5885:25:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7266, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5885:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7269, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "5927:13:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5920:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7268, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5920:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7271, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "5957:24:24", + "nodeType": "VariableDeclaration", + "scope": 7274, + "src": "5950:31:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7270, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5950:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5689:298:24" + }, + "returnParameters": { + "id": 7273, + "nodeType": "ParameterList", + "parameters": [], + "src": "5996:0:24" + }, + "scope": 7329, + "src": "5657:340:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3a2f1a91", + "id": 7289, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setLBHooksParametersOnPair", + "nameLocation": "6012:26:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7277, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "6055:6:24", + "nodeType": "VariableDeclaration", + "scope": 7289, + "src": "6048:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7276, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7275, + "name": "IERC20", + "nameLocations": [ + "6048:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6048:6:24" + }, + "referencedDeclaration": 1838, + "src": "6048:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7280, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "6078:6:24", + "nodeType": "VariableDeclaration", + "scope": 7289, + "src": "6071:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7279, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7278, + "name": "IERC20", + "nameLocations": [ + "6071:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6071:6:24" + }, + "referencedDeclaration": 1838, + "src": "6071:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7282, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "6101:7:24", + "nodeType": "VariableDeclaration", + "scope": 7289, + "src": "6094:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7281, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6094:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7284, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "6126:15:24", + "nodeType": "VariableDeclaration", + "scope": 7289, + "src": "6118:23:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7283, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6118:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7286, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "6164:14:24", + "nodeType": "VariableDeclaration", + "scope": 7289, + "src": "6151:27:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7285, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6151:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6038:146:24" + }, + "returnParameters": { + "id": 7288, + "nodeType": "ParameterList", + "parameters": [], + "src": "6193:0:24" + }, + "scope": 7329, + "src": "6003:191:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2cc06b8c", + "id": 7300, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLBHooksOnPair", + "nameLocation": "6209:19:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7292, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "6236:6:24", + "nodeType": "VariableDeclaration", + "scope": 7300, + "src": "6229:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7291, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7290, + "name": "IERC20", + "nameLocations": [ + "6229:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6229:6:24" + }, + "referencedDeclaration": 1838, + "src": "6229:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7295, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "6251:6:24", + "nodeType": "VariableDeclaration", + "scope": 7300, + "src": "6244:13:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7294, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7293, + "name": "IERC20", + "nameLocations": [ + "6244:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6244:6:24" + }, + "referencedDeclaration": 1838, + "src": "6244:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7297, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "6266:7:24", + "nodeType": "VariableDeclaration", + "scope": 7300, + "src": "6259:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7296, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6259:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "6228:46:24" + }, + "returnParameters": { + "id": 7299, + "nodeType": "ParameterList", + "parameters": [], + "src": "6283:0:24" + }, + "scope": 7329, + "src": "6200:84:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e74b981b", + "id": 7305, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFeeRecipient", + "nameLocation": "6299:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7302, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "6323:12:24", + "nodeType": "VariableDeclaration", + "scope": 7305, + "src": "6315:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6315:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6314:22:24" + }, + "returnParameters": { + "id": 7304, + "nodeType": "ParameterList", + "parameters": [], + "src": "6345:0:24" + }, + "scope": 7329, + "src": "6290:56:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e92d0d5d", + "id": 7310, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFlashLoanFee", + "nameLocation": "6361:15:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7307, + "mutability": "mutable", + "name": "flashLoanFee", + "nameLocation": "6385:12:24", + "nodeType": "VariableDeclaration", + "scope": 7310, + "src": "6377:20:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6377:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6376:22:24" + }, + "returnParameters": { + "id": 7309, + "nodeType": "ParameterList", + "parameters": [], + "src": "6407:0:24" + }, + "scope": 7329, + "src": "6352:56:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a440923", + "id": 7316, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addQuoteAsset", + "nameLocation": "6423:13:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7313, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "6444:10:24", + "nodeType": "VariableDeclaration", + "scope": 7316, + "src": "6437:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7312, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7311, + "name": "IERC20", + "nameLocations": [ + "6437:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6437:6:24" + }, + "referencedDeclaration": 1838, + "src": "6437:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6436:19:24" + }, + "returnParameters": { + "id": 7315, + "nodeType": "ParameterList", + "parameters": [], + "src": "6464:0:24" + }, + "scope": 7329, + "src": "6414:51:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ddbfd941", + "id": 7322, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeQuoteAsset", + "nameLocation": "6480:16:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7319, + "mutability": "mutable", + "name": "quoteAsset", + "nameLocation": "6504:10:24", + "nodeType": "VariableDeclaration", + "scope": 7322, + "src": "6497:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7318, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7317, + "name": "IERC20", + "nameLocations": [ + "6497:6:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "6497:6:24" + }, + "referencedDeclaration": 1838, + "src": "6497:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6496:19:24" + }, + "returnParameters": { + "id": 7321, + "nodeType": "ParameterList", + "parameters": [], + "src": "6524:0:24" + }, + "scope": 7329, + "src": "6471:54:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3c78a941", + "id": 7328, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "forceDecay", + "nameLocation": "6540:10:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7325, + "mutability": "mutable", + "name": "lbPair", + "nameLocation": "6559:6:24", + "nodeType": "VariableDeclaration", + "scope": 7328, + "src": "6551:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 7324, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7323, + "name": "ILBPair", + "nameLocations": [ + "6551:7:24" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "6551:7:24" + }, + "referencedDeclaration": 7970, + "src": "6551:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "6550:16:24" + }, + "returnParameters": { + "id": 7327, + "nodeType": "ParameterList", + "parameters": [], + "src": "6575:0:24" + }, + "scope": 7329, + "src": "6531:45:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 7330, + "src": "315:6263:24", + "usedErrors": [ + 6869, + 6874, + 6879, + 6881, + 6891, + 6901, + 6911, + 6917, + 6921, + 6927, + 6929, + 6933, + 6935, + 6939, + 6943, + 6947, + 6951, + 6955, + 6959, + 6961, + 6963 + ], + "usedEvents": [ + 6989, + 6995, + 7001, + 7007, + 7014, + 7032, + 7038, + 7042, + 7047, + 7052 + ] + } + ], + "src": "33:6546:24" + }, + "id": 24 + }, + "src/interfaces/ILBFlashLoanCallback.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBFlashLoanCallback.sol", + "exportedSymbols": { + "IERC20": [ + 1838 + ], + "ILBFlashLoanCallback": [ + 7354 + ] + }, + "id": 7355, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7331, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:25" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 7333, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7355, + "sourceUnit": 1839, + "src": "59:70:25", + "symbolAliases": [ + { + "foreign": { + "id": 7332, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "67:6:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBFlashLoanCallback", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 7334, + "nodeType": "StructuredDocumentation", + "src": "131:118:25", + "text": "@title Liquidity Book Flashloan Callback Interface\n @notice Required interface to interact with LB flash loans" + }, + "fullyImplemented": false, + "id": 7354, + "linearizedBaseContracts": [ + 7354 + ], + "name": "ILBFlashLoanCallback", + "nameLocation": "259:20:25", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "1faa6b87", + "id": 7353, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "LBFlashLoanCallback", + "nameLocation": "295:19:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7336, + "mutability": "mutable", + "name": "sender", + "nameLocation": "332:6:25", + "nodeType": "VariableDeclaration", + "scope": 7353, + "src": "324:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "324:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7339, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "355:6:25", + "nodeType": "VariableDeclaration", + "scope": 7353, + "src": "348:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7338, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7337, + "name": "IERC20", + "nameLocations": [ + "348:6:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "348:6:25" + }, + "referencedDeclaration": 1838, + "src": "348:6:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7342, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "378:6:25", + "nodeType": "VariableDeclaration", + "scope": 7353, + "src": "371:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7341, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7340, + "name": "IERC20", + "nameLocations": [ + "371:6:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "371:6:25" + }, + "referencedDeclaration": 1838, + "src": "371:6:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7344, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "402:7:25", + "nodeType": "VariableDeclaration", + "scope": 7353, + "src": "394:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7343, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "394:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7346, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "427:9:25", + "nodeType": "VariableDeclaration", + "scope": 7353, + "src": "419:17:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7345, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "419:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7348, + "mutability": "mutable", + "name": "data", + "nameLocation": "461:4:25", + "nodeType": "VariableDeclaration", + "scope": 7353, + "src": "446:19:25", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7347, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "446:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "314:157:25" + }, + "returnParameters": { + "id": 7352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7351, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7353, + "src": "490:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7350, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "490:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "489:9:25" + }, + "scope": 7354, + "src": "286:213:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 7355, + "src": "249:252:25", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:469:25" + }, + "id": 25 + }, + "src/interfaces/ILBHooks.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBHooks.sol", + "exportedSymbols": { + "Hooks": [ + 9005 + ], + "ILBHooks": [ + 7527 + ], + "ILBPair": [ + 7970 + ] + }, + "id": 7528, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7356, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:24:26" + }, + { + "absolutePath": "src/interfaces/ILBPair.sol", + "file": "./ILBPair.sol", + "id": 7358, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7528, + "sourceUnit": 7971, + "src": "58:38:26", + "symbolAliases": [ + { + "foreign": { + "id": 7357, + "name": "ILBPair", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7970, + "src": "66:7:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Hooks.sol", + "file": "../libraries/Hooks.sol", + "id": 7360, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7528, + "sourceUnit": 9006, + "src": "98:45:26", + "symbolAliases": [ + { + "foreign": { + "id": 7359, + "name": "Hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9005, + "src": "106:5:26", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBHooks", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 7527, + "linearizedBaseContracts": [ + 7527 + ], + "name": "ILBHooks", + "nameLocation": "155:8:26", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "5f9c01b1", + "id": 7366, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBPair", + "nameLocation": "179:9:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7361, + "nodeType": "ParameterList", + "parameters": [], + "src": "188:2:26" + }, + "returnParameters": { + "id": 7365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7364, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7366, + "src": "214:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + }, + "typeName": { + "id": 7363, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7362, + "name": "ILBPair", + "nameLocations": [ + "214:7:26" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7970, + "src": "214:7:26" + }, + "referencedDeclaration": 7970, + "src": "214:7:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBPair_$7970", + "typeString": "contract ILBPair" + } + }, + "visibility": "internal" + } + ], + "src": "213:9:26" + }, + "scope": 7527, + "src": "170:53:26", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "09fa1f90", + "id": 7371, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isLinked", + "nameLocation": "238:8:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7367, + "nodeType": "ParameterList", + "parameters": [], + "src": "246:2:26" + }, + "returnParameters": { + "id": 7370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7369, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7371, + "src": "272:4:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7368, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "272:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "271:6:26" + }, + "scope": 7527, + "src": "229:49:26", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e430b5a", + "id": 7380, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onHooksSet", + "nameLocation": "293:10:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7373, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "312:15:26", + "nodeType": "VariableDeclaration", + "scope": 7380, + "src": "304:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7372, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "304:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7375, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "344:14:26", + "nodeType": "VariableDeclaration", + "scope": 7380, + "src": "329:29:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "329:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "303:56:26" + }, + "returnParameters": { + "id": 7379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7378, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7380, + "src": "378:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7377, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "378:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "377:8:26" + }, + "scope": 7527, + "src": "284:102:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "feee3735", + "id": 7393, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeSwap", + "nameLocation": "401:10:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7382, + "mutability": "mutable", + "name": "sender", + "nameLocation": "420:6:26", + "nodeType": "VariableDeclaration", + "scope": 7393, + "src": "412:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7381, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "412:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7384, + "mutability": "mutable", + "name": "to", + "nameLocation": "436:2:26", + "nodeType": "VariableDeclaration", + "scope": 7393, + "src": "428:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "428:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7386, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "445:8:26", + "nodeType": "VariableDeclaration", + "scope": 7393, + "src": "440:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7385, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "440:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7388, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "463:9:26", + "nodeType": "VariableDeclaration", + "scope": 7393, + "src": "455:17:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7387, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "455:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "411:62:26" + }, + "returnParameters": { + "id": 7392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7391, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7393, + "src": "492:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7390, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "492:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "491:8:26" + }, + "scope": 7527, + "src": "392:108:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "53e8079b", + "id": 7406, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterSwap", + "nameLocation": "515:9:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7402, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7395, + "mutability": "mutable", + "name": "sender", + "nameLocation": "533:6:26", + "nodeType": "VariableDeclaration", + "scope": 7406, + "src": "525:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "525:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7397, + "mutability": "mutable", + "name": "to", + "nameLocation": "549:2:26", + "nodeType": "VariableDeclaration", + "scope": 7406, + "src": "541:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "541:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7399, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "558:8:26", + "nodeType": "VariableDeclaration", + "scope": 7406, + "src": "553:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7398, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "553:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7401, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "576:10:26", + "nodeType": "VariableDeclaration", + "scope": 7406, + "src": "568:18:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7400, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "568:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "524:63:26" + }, + "returnParameters": { + "id": 7405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7404, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7406, + "src": "606:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7403, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "606:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "605:8:26" + }, + "scope": 7527, + "src": "506:108:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "505d9033", + "id": 7417, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeFlashLoan", + "nameLocation": "629:15:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7408, + "mutability": "mutable", + "name": "sender", + "nameLocation": "653:6:26", + "nodeType": "VariableDeclaration", + "scope": 7417, + "src": "645:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "645:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7410, + "mutability": "mutable", + "name": "to", + "nameLocation": "669:2:26", + "nodeType": "VariableDeclaration", + "scope": 7417, + "src": "661:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "661:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7412, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "681:7:26", + "nodeType": "VariableDeclaration", + "scope": 7417, + "src": "673:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7411, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "673:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "644:45:26" + }, + "returnParameters": { + "id": 7416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7415, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7417, + "src": "708:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7414, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "708:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "707:8:26" + }, + "scope": 7527, + "src": "620:96:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "60bed5f3", + "id": 7430, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterFlashLoan", + "nameLocation": "731:14:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7419, + "mutability": "mutable", + "name": "sender", + "nameLocation": "754:6:26", + "nodeType": "VariableDeclaration", + "scope": 7430, + "src": "746:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "746:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7421, + "mutability": "mutable", + "name": "to", + "nameLocation": "770:2:26", + "nodeType": "VariableDeclaration", + "scope": 7430, + "src": "762:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "762:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7423, + "mutability": "mutable", + "name": "fees", + "nameLocation": "782:4:26", + "nodeType": "VariableDeclaration", + "scope": 7430, + "src": "774:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "774:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7425, + "mutability": "mutable", + "name": "feesReceived", + "nameLocation": "796:12:26", + "nodeType": "VariableDeclaration", + "scope": 7430, + "src": "788:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7424, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "788:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "745:64:26" + }, + "returnParameters": { + "id": 7429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7428, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7430, + "src": "828:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7427, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "828:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "827:8:26" + }, + "scope": 7527, + "src": "722:114:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0d4abdb3", + "id": 7444, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeMint", + "nameLocation": "851:10:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7432, + "mutability": "mutable", + "name": "sender", + "nameLocation": "870:6:26", + "nodeType": "VariableDeclaration", + "scope": 7444, + "src": "862:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7431, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "862:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7434, + "mutability": "mutable", + "name": "to", + "nameLocation": "886:2:26", + "nodeType": "VariableDeclaration", + "scope": 7444, + "src": "878:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7433, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "878:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7437, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "909:16:26", + "nodeType": "VariableDeclaration", + "scope": 7444, + "src": "890:35:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7435, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "890:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7436, + "nodeType": "ArrayTypeName", + "src": "890:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7439, + "mutability": "mutable", + "name": "amountsReceived", + "nameLocation": "935:15:26", + "nodeType": "VariableDeclaration", + "scope": 7444, + "src": "927:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7438, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "927:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "861:90:26" + }, + "returnParameters": { + "id": 7443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7442, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7444, + "src": "986:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7441, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "986:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "985:8:26" + }, + "scope": 7527, + "src": "842:152:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7a51a4c6", + "id": 7458, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterMint", + "nameLocation": "1009:9:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7446, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1027:6:26", + "nodeType": "VariableDeclaration", + "scope": 7458, + "src": "1019:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1019:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7448, + "mutability": "mutable", + "name": "to", + "nameLocation": "1043:2:26", + "nodeType": "VariableDeclaration", + "scope": 7458, + "src": "1035:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1035:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7451, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "1066:16:26", + "nodeType": "VariableDeclaration", + "scope": 7458, + "src": "1047:35:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7449, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1047:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7450, + "nodeType": "ArrayTypeName", + "src": "1047:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7453, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "1092:9:26", + "nodeType": "VariableDeclaration", + "scope": 7458, + "src": "1084:17:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7452, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1084:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1018:84:26" + }, + "returnParameters": { + "id": 7457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7456, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7458, + "src": "1137:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7455, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1137:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1136:8:26" + }, + "scope": 7527, + "src": "1000:145:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ea9db9d3", + "id": 7475, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeBurn", + "nameLocation": "1160:10:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7460, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1188:6:26", + "nodeType": "VariableDeclaration", + "scope": 7475, + "src": "1180:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7459, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1180:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7462, + "mutability": "mutable", + "name": "from", + "nameLocation": "1212:4:26", + "nodeType": "VariableDeclaration", + "scope": 7475, + "src": "1204:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1204:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7464, + "mutability": "mutable", + "name": "to", + "nameLocation": "1234:2:26", + "nodeType": "VariableDeclaration", + "scope": 7475, + "src": "1226:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1226:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7467, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1265:3:26", + "nodeType": "VariableDeclaration", + "scope": 7475, + "src": "1246:22:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1246:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7466, + "nodeType": "ArrayTypeName", + "src": "1246:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7470, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "1297:13:26", + "nodeType": "VariableDeclaration", + "scope": 7475, + "src": "1278:32:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1278:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7469, + "nodeType": "ArrayTypeName", + "src": "1278:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1170:146:26" + }, + "returnParameters": { + "id": 7474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7473, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7475, + "src": "1335:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7472, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1335:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1334:8:26" + }, + "scope": 7527, + "src": "1151:192:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fdc27257", + "id": 7492, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterBurn", + "nameLocation": "1358:9:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7477, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1385:6:26", + "nodeType": "VariableDeclaration", + "scope": 7492, + "src": "1377:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1377:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7479, + "mutability": "mutable", + "name": "from", + "nameLocation": "1409:4:26", + "nodeType": "VariableDeclaration", + "scope": 7492, + "src": "1401:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1401:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7481, + "mutability": "mutable", + "name": "to", + "nameLocation": "1431:2:26", + "nodeType": "VariableDeclaration", + "scope": 7492, + "src": "1423:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1423:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7484, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1462:3:26", + "nodeType": "VariableDeclaration", + "scope": 7492, + "src": "1443:22:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1443:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7483, + "nodeType": "ArrayTypeName", + "src": "1443:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7487, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "1494:13:26", + "nodeType": "VariableDeclaration", + "scope": 7492, + "src": "1475:32:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1475:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7486, + "nodeType": "ArrayTypeName", + "src": "1475:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1367:146:26" + }, + "returnParameters": { + "id": 7491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7490, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7492, + "src": "1532:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7489, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1532:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1531:8:26" + }, + "scope": 7527, + "src": "1349:191:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "79c8ccf7", + "id": 7509, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "beforeBatchTransferFrom", + "nameLocation": "1555:23:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7494, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1596:6:26", + "nodeType": "VariableDeclaration", + "scope": 7509, + "src": "1588:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1588:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7496, + "mutability": "mutable", + "name": "from", + "nameLocation": "1620:4:26", + "nodeType": "VariableDeclaration", + "scope": 7509, + "src": "1612:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1612:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7498, + "mutability": "mutable", + "name": "to", + "nameLocation": "1642:2:26", + "nodeType": "VariableDeclaration", + "scope": 7509, + "src": "1634:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1634:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7501, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1673:3:26", + "nodeType": "VariableDeclaration", + "scope": 7509, + "src": "1654:22:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1654:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7500, + "nodeType": "ArrayTypeName", + "src": "1654:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7504, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1705:7:26", + "nodeType": "VariableDeclaration", + "scope": 7509, + "src": "1686:26:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1686:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7503, + "nodeType": "ArrayTypeName", + "src": "1686:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1578:140:26" + }, + "returnParameters": { + "id": 7508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7507, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7509, + "src": "1737:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7506, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1737:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1736:8:26" + }, + "scope": 7527, + "src": "1546:199:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "67ddb278", + "id": 7526, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "afterBatchTransferFrom", + "nameLocation": "1760:22:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7511, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1800:6:26", + "nodeType": "VariableDeclaration", + "scope": 7526, + "src": "1792:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1792:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7513, + "mutability": "mutable", + "name": "from", + "nameLocation": "1824:4:26", + "nodeType": "VariableDeclaration", + "scope": 7526, + "src": "1816:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1816:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7515, + "mutability": "mutable", + "name": "to", + "nameLocation": "1846:2:26", + "nodeType": "VariableDeclaration", + "scope": 7526, + "src": "1838:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1838:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7518, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1877:3:26", + "nodeType": "VariableDeclaration", + "scope": 7526, + "src": "1858:22:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1858:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7517, + "nodeType": "ArrayTypeName", + "src": "1858:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7521, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1909:7:26", + "nodeType": "VariableDeclaration", + "scope": 7526, + "src": "1890:26:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7519, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1890:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7520, + "nodeType": "ArrayTypeName", + "src": "1890:9:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1782:140:26" + }, + "returnParameters": { + "id": 7525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7524, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7526, + "src": "1941:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7523, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1941:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1940:8:26" + }, + "scope": 7527, + "src": "1751:198:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 7528, + "src": "145:1806:26", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:1920:26" + }, + "id": 26 + }, + "src/interfaces/ILBPair.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBPair.sol", + "exportedSymbols": { + "Hooks": [ + 9005 + ], + "IERC20": [ + 1838 + ], + "ILBFactory": [ + 7329 + ], + "ILBFlashLoanCallback": [ + 7354 + ], + "ILBPair": [ + 7970 + ], + "ILBToken": [ + 8093 + ] + }, + "id": 7971, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7529, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:27" + }, + { + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 7531, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7971, + "sourceUnit": 1839, + "src": "59:70:27", + "symbolAliases": [ + { + "foreign": { + "id": 7530, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "67:6:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Hooks.sol", + "file": "../libraries/Hooks.sol", + "id": 7533, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7971, + "sourceUnit": 9006, + "src": "131:45:27", + "symbolAliases": [ + { + "foreign": { + "id": 7532, + "name": "Hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9005, + "src": "139:5:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFactory.sol", + "file": "./ILBFactory.sol", + "id": 7535, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7971, + "sourceUnit": 7330, + "src": "177:44:27", + "symbolAliases": [ + { + "foreign": { + "id": 7534, + "name": "ILBFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7329, + "src": "185:10:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBFlashLoanCallback.sol", + "file": "./ILBFlashLoanCallback.sol", + "id": 7537, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7971, + "sourceUnit": 7355, + "src": "222:64:27", + "symbolAliases": [ + { + "foreign": { + "id": 7536, + "name": "ILBFlashLoanCallback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7354, + "src": "230:20:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/ILBToken.sol", + "file": "./ILBToken.sol", + "id": 7539, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7971, + "sourceUnit": 8094, + "src": "287:40:27", + "symbolAliases": [ + { + "foreign": { + "id": 7538, + "name": "ILBToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8093, + "src": "295:8:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 7540, + "name": "ILBToken", + "nameLocations": [ + "350:8:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8093, + "src": "350:8:27" + }, + "id": 7541, + "nodeType": "InheritanceSpecifier", + "src": "350:8:27" + } + ], + "canonicalName": "ILBPair", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 7970, + "linearizedBaseContracts": [ + 7970, + 8093 + ], + "name": "ILBPair", + "nameLocation": "339:7:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "e4f56042", + "id": 7543, + "name": "LBPair__ZeroBorrowAmount", + "nameLocation": "371:24:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7542, + "nodeType": "ParameterList", + "parameters": [], + "src": "395:2:27" + }, + "src": "365:33:27" + }, + { + "errorSelector": "17be04b7", + "id": 7545, + "name": "LBPair__AddressZero", + "nameLocation": "409:19:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7544, + "nodeType": "ParameterList", + "parameters": [], + "src": "428:2:27" + }, + "src": "403:28:27" + }, + { + "errorSelector": "296db0d9", + "id": 7547, + "name": "LBPair__EmptyMarketConfigs", + "nameLocation": "442:26:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7546, + "nodeType": "ParameterList", + "parameters": [], + "src": "468:2:27" + }, + "src": "436:35:27" + }, + { + "errorSelector": "4a570113", + "id": 7549, + "name": "LBPair__FlashLoanCallbackFailed", + "nameLocation": "482:31:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7548, + "nodeType": "ParameterList", + "parameters": [], + "src": "513:2:27" + }, + "src": "476:40:27" + }, + { + "errorSelector": "1c78e2e2", + "id": 7551, + "name": "LBPair__FlashLoanInsufficientAmount", + "nameLocation": "527:35:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7550, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:2:27" + }, + "src": "521:44:27" + }, + { + "errorSelector": "7df801c7", + "id": 7553, + "name": "LBPair__InsufficientAmountIn", + "nameLocation": "576:28:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7552, + "nodeType": "ParameterList", + "parameters": [], + "src": "604:2:27" + }, + "src": "570:37:27" + }, + { + "errorSelector": "873bf0ba", + "id": 7555, + "name": "LBPair__InsufficientAmountOut", + "nameLocation": "618:29:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7554, + "nodeType": "ParameterList", + "parameters": [], + "src": "647:2:27" + }, + "src": "612:38:27" + }, + { + "errorSelector": "3ab78707", + "id": 7557, + "name": "LBPair__InvalidInput", + "nameLocation": "661:20:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7556, + "nodeType": "ParameterList", + "parameters": [], + "src": "681:2:27" + }, + "src": "655:29:27" + }, + { + "errorSelector": "626ebc06", + "id": 7559, + "name": "LBPair__InvalidStaticFeeParameters", + "nameLocation": "695:34:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7558, + "nodeType": "ParameterList", + "parameters": [], + "src": "729:2:27" + }, + "src": "689:43:27" + }, + { + "errorSelector": "24860853", + "id": 7561, + "name": "LBPair__OnlyFactory", + "nameLocation": "743:19:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7560, + "nodeType": "ParameterList", + "parameters": [], + "src": "762:2:27" + }, + "src": "737:28:27" + }, + { + "errorSelector": "3e24df14", + "id": 7563, + "name": "LBPair__OnlyProtocolFeeRecipient", + "nameLocation": "776:32:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7562, + "nodeType": "ParameterList", + "parameters": [], + "src": "808:2:27" + }, + "src": "770:41:27" + }, + { + "errorSelector": "d36bfd88", + "id": 7565, + "name": "LBPair__OutOfLiquidity", + "nameLocation": "822:22:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7564, + "nodeType": "ParameterList", + "parameters": [], + "src": "844:2:27" + }, + "src": "816:31:27" + }, + { + "errorSelector": "803fc59a", + "id": 7567, + "name": "LBPair__TokenNotSupported", + "nameLocation": "858:25:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7566, + "nodeType": "ParameterList", + "parameters": [], + "src": "883:2:27" + }, + "src": "852:34:27" + }, + { + "errorSelector": "6996a925", + "id": 7571, + "name": "LBPair__ZeroAmount", + "nameLocation": "897:18:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7569, + "mutability": "mutable", + "name": "id", + "nameLocation": "923:2:27", + "nodeType": "VariableDeclaration", + "scope": 7571, + "src": "916:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7568, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "916:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "915:11:27" + }, + "src": "891:36:27" + }, + { + "errorSelector": "fd447929", + "id": 7575, + "name": "LBPair__ZeroAmountsOut", + "nameLocation": "938:22:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7573, + "mutability": "mutable", + "name": "id", + "nameLocation": "968:2:27", + "nodeType": "VariableDeclaration", + "scope": 7575, + "src": "961:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7572, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "961:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "960:11:27" + }, + "src": "932:40:27" + }, + { + "errorSelector": "9931a6ae", + "id": 7579, + "name": "LBPair__ZeroShares", + "nameLocation": "983:18:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7577, + "mutability": "mutable", + "name": "id", + "nameLocation": "1009:2:27", + "nodeType": "VariableDeclaration", + "scope": 7579, + "src": "1002:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7576, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1002:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1001:11:27" + }, + "src": "977:36:27" + }, + { + "errorSelector": "e5b73816", + "id": 7581, + "name": "LBPair__MaxTotalFeeExceeded", + "nameLocation": "1024:27:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7580, + "nodeType": "ParameterList", + "parameters": [], + "src": "1051:2:27" + }, + "src": "1018:36:27" + }, + { + "errorSelector": "1b5de6eb", + "id": 7583, + "name": "LBPair__InvalidHooks", + "nameLocation": "1065:20:27", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7582, + "nodeType": "ParameterList", + "parameters": [], + "src": "1085:2:27" + }, + "src": "1059:29:27" + }, + { + "canonicalName": "ILBPair.MintArrays", + "id": 7593, + "members": [ + { + "constant": false, + "id": 7586, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1132:3:27", + "nodeType": "VariableDeclaration", + "scope": 7593, + "src": "1122:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1122:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7585, + "nodeType": "ArrayTypeName", + "src": "1122:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7589, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1155:7:27", + "nodeType": "VariableDeclaration", + "scope": 7593, + "src": "1145:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7587, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1145:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7588, + "nodeType": "ArrayTypeName", + "src": "1145:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7592, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "1182:15:27", + "nodeType": "VariableDeclaration", + "scope": 7593, + "src": "1172:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1172:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7591, + "nodeType": "ArrayTypeName", + "src": "1172:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "name": "MintArrays", + "nameLocation": "1101:10:27", + "nodeType": "StructDefinition", + "scope": 7970, + "src": "1094:110:27", + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "87f1f9dcf5e8089a3e00811b6a008d8f30293a3da878cb1fe8c90ca376402f8a", + "id": 7605, + "name": "DepositedToBins", + "nameLocation": "1216:15:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7595, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1248:6:27", + "nodeType": "VariableDeclaration", + "scope": 7605, + "src": "1232:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1232:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7597, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1272:2:27", + "nodeType": "VariableDeclaration", + "scope": 7605, + "src": "1256:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1256:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7600, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1286:3:27", + "nodeType": "VariableDeclaration", + "scope": 7605, + "src": "1276:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7598, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1276:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7599, + "nodeType": "ArrayTypeName", + "src": "1276:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7603, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1301:7:27", + "nodeType": "VariableDeclaration", + "scope": 7605, + "src": "1291:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7601, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1291:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7602, + "nodeType": "ArrayTypeName", + "src": "1291:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "1231:78:27" + }, + "src": "1210:100:27" + }, + { + "anonymous": false, + "eventSelector": "a32e146844d6144a22e94c586715a1317d58a8aa3581ec33d040113ddcb24350", + "id": 7617, + "name": "WithdrawnFromBins", + "nameLocation": "1322:17:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7607, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1356:6:27", + "nodeType": "VariableDeclaration", + "scope": 7617, + "src": "1340:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1340:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7609, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1380:2:27", + "nodeType": "VariableDeclaration", + "scope": 7617, + "src": "1364:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1364:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7612, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1394:3:27", + "nodeType": "VariableDeclaration", + "scope": 7617, + "src": "1384:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1384:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7611, + "nodeType": "ArrayTypeName", + "src": "1384:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7615, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1409:7:27", + "nodeType": "VariableDeclaration", + "scope": 7617, + "src": "1399:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7613, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1399:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7614, + "nodeType": "ArrayTypeName", + "src": "1399:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "1339:78:27" + }, + "src": "1316:102:27" + }, + { + "anonymous": false, + "eventSelector": "3f0b46725027bb418b2005f4683538eccdbcdf1de2b8649a29dbd9c507d16ff4", + "id": 7627, + "name": "CompositionFees", + "nameLocation": "1430:15:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7619, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1462:6:27", + "nodeType": "VariableDeclaration", + "scope": 7627, + "src": "1446:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1446:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7621, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nameLocation": "1477:2:27", + "nodeType": "VariableDeclaration", + "scope": 7627, + "src": "1470:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7620, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1470:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7623, + "indexed": false, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "1489:9:27", + "nodeType": "VariableDeclaration", + "scope": 7627, + "src": "1481:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7622, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1481:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7625, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "1508:12:27", + "nodeType": "VariableDeclaration", + "scope": 7627, + "src": "1500:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7624, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1500:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1445:76:27" + }, + "src": "1424:98:27" + }, + { + "anonymous": false, + "eventSelector": "3f41a5ddc53701cc7db577ade4f1fca9838a8ec0b5ea50b9f0f5d17bc4554e32", + "id": 7633, + "name": "CollectedProtocolFees", + "nameLocation": "1534:21:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7629, + "indexed": true, + "mutability": "mutable", + "name": "feeRecipient", + "nameLocation": "1572:12:27", + "nodeType": "VariableDeclaration", + "scope": 7633, + "src": "1556:28:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7631, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "1594:12:27", + "nodeType": "VariableDeclaration", + "scope": 7633, + "src": "1586:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7630, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1586:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1555:52:27" + }, + "src": "1528:80:27" + }, + { + "anonymous": false, + "eventSelector": "ad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70", + "id": 7651, + "name": "Swap", + "nameLocation": "1620:4:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7650, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7635, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1650:6:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1634:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1634:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7637, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "1682:2:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1666:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1666:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7639, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nameLocation": "1701:2:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1694:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7638, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1694:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7641, + "indexed": false, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "1721:9:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1713:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7640, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1713:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7643, + "indexed": false, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "1748:10:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1740:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1740:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7645, + "indexed": false, + "mutability": "mutable", + "name": "volatilityAccumulator", + "nameLocation": "1775:21:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1768:28:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7644, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1768:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7647, + "indexed": false, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "1814:9:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1806:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7646, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1806:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7649, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "1841:12:27", + "nodeType": "VariableDeclaration", + "scope": 7651, + "src": "1833:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7648, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1833:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1624:235:27" + }, + "src": "1614:246:27" + }, + { + "anonymous": false, + "eventSelector": "d09e5ddc721ff14c5c1e66a305cbba1fd70b82c5232bc391aad6f55e62e4b046", + "id": 7669, + "name": "StaticFeeParametersSet", + "nameLocation": "1872:22:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7653, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1920:6:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "1904:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1904:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7655, + "indexed": false, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "1943:10:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "1936:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7654, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1936:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7657, + "indexed": false, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "1970:12:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "1963:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7656, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1963:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7659, + "indexed": false, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "1999:11:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "1992:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7658, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1992:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7661, + "indexed": false, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "2027:15:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "2020:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7660, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2020:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7663, + "indexed": false, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "2059:18:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "2052:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7662, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2052:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7665, + "indexed": false, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "2094:13:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "2087:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7664, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2087:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7667, + "indexed": false, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "2124:24:27", + "nodeType": "VariableDeclaration", + "scope": 7669, + "src": "2117:31:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7666, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2117:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1894:260:27" + }, + "src": "1866:289:27" + }, + { + "anonymous": false, + "eventSelector": "4d24d81a1a6e09c37497747b4c9d67d858ce80438b54df0fa361a24dc742d934", + "id": 7675, + "name": "HooksParametersSet", + "nameLocation": "2167:18:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7671, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2202:6:27", + "nodeType": "VariableDeclaration", + "scope": 7675, + "src": "2186:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2186:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7673, + "indexed": false, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "2218:15:27", + "nodeType": "VariableDeclaration", + "scope": 7675, + "src": "2210:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7672, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2210:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2185:49:27" + }, + "src": "2161:74:27" + }, + { + "anonymous": false, + "eventSelector": "d126bd9d94daca8e55ffd8283fac05394aec8326c6b1639e1e8a445fbe8bbc7d", + "id": 7690, + "name": "FlashLoan", + "nameLocation": "2247:9:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7677, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2282:6:27", + "nodeType": "VariableDeclaration", + "scope": 7690, + "src": "2266:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2266:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7680, + "indexed": true, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "2327:8:27", + "nodeType": "VariableDeclaration", + "scope": 7690, + "src": "2298:37:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$7354", + "typeString": "contract ILBFlashLoanCallback" + }, + "typeName": { + "id": 7679, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7678, + "name": "ILBFlashLoanCallback", + "nameLocations": [ + "2298:20:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7354, + "src": "2298:20:27" + }, + "referencedDeclaration": 7354, + "src": "2298:20:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$7354", + "typeString": "contract ILBFlashLoanCallback" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7682, + "indexed": false, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "2352:8:27", + "nodeType": "VariableDeclaration", + "scope": 7690, + "src": "2345:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7681, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2345:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7684, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "2378:7:27", + "nodeType": "VariableDeclaration", + "scope": 7690, + "src": "2370:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7683, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2370:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7686, + "indexed": false, + "mutability": "mutable", + "name": "totalFees", + "nameLocation": "2403:9:27", + "nodeType": "VariableDeclaration", + "scope": 7690, + "src": "2395:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7685, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2395:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7688, + "indexed": false, + "mutability": "mutable", + "name": "protocolFees", + "nameLocation": "2430:12:27", + "nodeType": "VariableDeclaration", + "scope": 7690, + "src": "2422:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7687, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2422:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2256:192:27" + }, + "src": "2241:208:27" + }, + { + "anonymous": false, + "eventSelector": "c975541e72d695746a43ba65745d79963a23082637c8f4609354d9bcf70194d6", + "id": 7696, + "name": "OracleLengthIncreased", + "nameLocation": "2461:21:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7692, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2499:6:27", + "nodeType": "VariableDeclaration", + "scope": 7696, + "src": "2483:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2483:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7694, + "indexed": false, + "mutability": "mutable", + "name": "oracleLength", + "nameLocation": "2514:12:27", + "nodeType": "VariableDeclaration", + "scope": 7696, + "src": "2507:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7693, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2507:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2482:45:27" + }, + "src": "2455:73:27" + }, + { + "anonymous": false, + "eventSelector": "282afaeeae84c1d85ad1424a3aa2ddbedaeefca3b1e53d889d15265fe44db7fc", + "id": 7704, + "name": "ForcedDecay", + "nameLocation": "2540:11:27", + "nodeType": "EventDefinition", + "parameters": { + "id": 7703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7698, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "2568:6:27", + "nodeType": "VariableDeclaration", + "scope": 7704, + "src": "2552:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2552:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7700, + "indexed": false, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "2583:11:27", + "nodeType": "VariableDeclaration", + "scope": 7704, + "src": "2576:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7699, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2576:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7702, + "indexed": false, + "mutability": "mutable", + "name": "volatilityReference", + "nameLocation": "2603:19:27", + "nodeType": "VariableDeclaration", + "scope": 7704, + "src": "2596:26:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7701, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2596:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "2551:72:27" + }, + "src": "2534:90:27" + }, + { + "functionSelector": "47973bff", + "id": 7723, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "2639:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7706, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "2666:10:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2659:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7705, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2659:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7708, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "2693:12:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2686:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7707, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2686:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7710, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "2722:11:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2715:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7709, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2715:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7712, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "2750:15:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2743:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7711, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2743:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7714, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "2782:18:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2775:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7713, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2775:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7716, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "2817:13:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2810:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7715, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2810:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7718, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "2847:24:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2840:31:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7717, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2840:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7720, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "2888:8:27", + "nodeType": "VariableDeclaration", + "scope": 7723, + "src": "2881:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7719, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2881:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "2649:253:27" + }, + "returnParameters": { + "id": 7722, + "nodeType": "ParameterList", + "parameters": [], + "src": "2911:0:27" + }, + "scope": 7970, + "src": "2630:282:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "88cc58e4", + "id": 7729, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getFactory", + "nameLocation": "2927:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7724, + "nodeType": "ParameterList", + "parameters": [], + "src": "2937:2:27" + }, + "returnParameters": { + "id": 7728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7727, + "mutability": "mutable", + "name": "factory", + "nameLocation": "2974:7:27", + "nodeType": "VariableDeclaration", + "scope": 7729, + "src": "2963:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$7329", + "typeString": "contract ILBFactory" + }, + "typeName": { + "id": 7726, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7725, + "name": "ILBFactory", + "nameLocations": [ + "2963:10:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7329, + "src": "2963:10:27" + }, + "referencedDeclaration": 7329, + "src": "2963:10:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFactory_$7329", + "typeString": "contract ILBFactory" + } + }, + "visibility": "internal" + } + ], + "src": "2962:20:27" + }, + "scope": 7970, + "src": "2918:65:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "05e8746d", + "id": 7735, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getTokenX", + "nameLocation": "2998:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7730, + "nodeType": "ParameterList", + "parameters": [], + "src": "3007:2:27" + }, + "returnParameters": { + "id": 7734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7733, + "mutability": "mutable", + "name": "tokenX", + "nameLocation": "3040:6:27", + "nodeType": "VariableDeclaration", + "scope": 7735, + "src": "3033:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7732, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7731, + "name": "IERC20", + "nameLocations": [ + "3033:6:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "3033:6:27" + }, + "referencedDeclaration": 1838, + "src": "3033:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3032:15:27" + }, + "scope": 7970, + "src": "2989:59:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "da10610c", + "id": 7741, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getTokenY", + "nameLocation": "3063:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7736, + "nodeType": "ParameterList", + "parameters": [], + "src": "3072:2:27" + }, + "returnParameters": { + "id": 7740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7739, + "mutability": "mutable", + "name": "tokenY", + "nameLocation": "3105:6:27", + "nodeType": "VariableDeclaration", + "scope": 7741, + "src": "3098:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 7738, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7737, + "name": "IERC20", + "nameLocations": [ + "3098:6:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1838, + "src": "3098:6:27" + }, + "referencedDeclaration": 1838, + "src": "3098:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1838", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3097:15:27" + }, + "scope": 7970, + "src": "3054:59:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "17f11ecc", + "id": 7746, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getBinStep", + "nameLocation": "3128:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7742, + "nodeType": "ParameterList", + "parameters": [], + "src": "3138:2:27" + }, + "returnParameters": { + "id": 7745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7744, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "3171:7:27", + "nodeType": "VariableDeclaration", + "scope": 7746, + "src": "3164:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7743, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3164:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3163:16:27" + }, + "scope": 7970, + "src": "3119:61:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0902f1ac", + "id": 7753, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReserves", + "nameLocation": "3195:11:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7747, + "nodeType": "ParameterList", + "parameters": [], + "src": "3206:2:27" + }, + "returnParameters": { + "id": 7752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7749, + "mutability": "mutable", + "name": "reserveX", + "nameLocation": "3240:8:27", + "nodeType": "VariableDeclaration", + "scope": 7753, + "src": "3232:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7748, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3232:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7751, + "mutability": "mutable", + "name": "reserveY", + "nameLocation": "3258:8:27", + "nodeType": "VariableDeclaration", + "scope": 7753, + "src": "3250:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7750, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3250:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3231:36:27" + }, + "scope": 7970, + "src": "3186:82:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "dbe65edc", + "id": 7758, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getActiveId", + "nameLocation": "3283:11:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7754, + "nodeType": "ParameterList", + "parameters": [], + "src": "3294:2:27" + }, + "returnParameters": { + "id": 7757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7756, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "3327:8:27", + "nodeType": "VariableDeclaration", + "scope": 7758, + "src": "3320:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7755, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3320:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3319:17:27" + }, + "scope": 7970, + "src": "3274:63:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0abe9688", + "id": 7767, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getBin", + "nameLocation": "3352:6:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7761, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7760, + "mutability": "mutable", + "name": "id", + "nameLocation": "3366:2:27", + "nodeType": "VariableDeclaration", + "scope": 7767, + "src": "3359:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7759, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3359:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3358:11:27" + }, + "returnParameters": { + "id": 7766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7763, + "mutability": "mutable", + "name": "binReserveX", + "nameLocation": "3401:11:27", + "nodeType": "VariableDeclaration", + "scope": 7767, + "src": "3393:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7762, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3393:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7765, + "mutability": "mutable", + "name": "binReserveY", + "nameLocation": "3422:11:27", + "nodeType": "VariableDeclaration", + "scope": 7767, + "src": "3414:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7764, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3414:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3392:42:27" + }, + "scope": 7970, + "src": "3343:92:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a41a01fb", + "id": 7776, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getNextNonEmptyBin", + "nameLocation": "3450:18:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7769, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "3474:8:27", + "nodeType": "VariableDeclaration", + "scope": 7776, + "src": "3469:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7768, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3469:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7771, + "mutability": "mutable", + "name": "id", + "nameLocation": "3491:2:27", + "nodeType": "VariableDeclaration", + "scope": 7776, + "src": "3484:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7770, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3484:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3468:26:27" + }, + "returnParameters": { + "id": 7775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7774, + "mutability": "mutable", + "name": "nextId", + "nameLocation": "3525:6:27", + "nodeType": "VariableDeclaration", + "scope": 7776, + "src": "3518:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7773, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3518:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3517:15:27" + }, + "scope": 7970, + "src": "3441:92:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d8dfcea0", + "id": 7783, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getProtocolFees", + "nameLocation": "3548:15:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7777, + "nodeType": "ParameterList", + "parameters": [], + "src": "3563:2:27" + }, + "returnParameters": { + "id": 7782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7779, + "mutability": "mutable", + "name": "protocolFeeX", + "nameLocation": "3597:12:27", + "nodeType": "VariableDeclaration", + "scope": 7783, + "src": "3589:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7778, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3589:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7781, + "mutability": "mutable", + "name": "protocolFeeY", + "nameLocation": "3619:12:27", + "nodeType": "VariableDeclaration", + "scope": 7783, + "src": "3611:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7780, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3611:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "3588:44:27" + }, + "scope": 7970, + "src": "3539:94:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "7ca0de30", + "id": 7800, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getStaticFeeParameters", + "nameLocation": "3648:22:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7784, + "nodeType": "ParameterList", + "parameters": [], + "src": "3670:2:27" + }, + "returnParameters": { + "id": 7799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7786, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "3740:10:27", + "nodeType": "VariableDeclaration", + "scope": 7800, + "src": "3733:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7785, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3733:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7788, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "3771:12:27", + "nodeType": "VariableDeclaration", + "scope": 7800, + "src": "3764:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7787, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3764:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7790, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "3804:11:27", + "nodeType": "VariableDeclaration", + "scope": 7800, + "src": "3797:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7789, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3797:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7792, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "3836:15:27", + "nodeType": "VariableDeclaration", + "scope": 7800, + "src": "3829:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7791, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3829:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7794, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "3872:18:27", + "nodeType": "VariableDeclaration", + "scope": 7800, + "src": "3865:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7793, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3865:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7796, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "3911:13:27", + "nodeType": "VariableDeclaration", + "scope": 7800, + "src": "3904:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7795, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3904:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7798, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "3945:24:27", + "nodeType": "VariableDeclaration", + "scope": 7800, + "src": "3938:31:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7797, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3938:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3719:260:27" + }, + "scope": 7970, + "src": "3639:341:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "781a8915", + "id": 7805, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getLBHooksParameters", + "nameLocation": "3995:20:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7801, + "nodeType": "ParameterList", + "parameters": [], + "src": "4015:2:27" + }, + "returnParameters": { + "id": 7804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7803, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "4049:15:27", + "nodeType": "VariableDeclaration", + "scope": 7805, + "src": "4041:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7802, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4041:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4040:25:27" + }, + "scope": 7970, + "src": "3986:80:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8d7024e5", + "id": 7816, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getVariableFeeParameters", + "nameLocation": "4081:24:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7806, + "nodeType": "ParameterList", + "parameters": [], + "src": "4105:2:27" + }, + "returnParameters": { + "id": 7815, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7808, + "mutability": "mutable", + "name": "volatilityAccumulator", + "nameLocation": "4162:21:27", + "nodeType": "VariableDeclaration", + "scope": 7816, + "src": "4155:28:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7807, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4155:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7810, + "mutability": "mutable", + "name": "volatilityReference", + "nameLocation": "4192:19:27", + "nodeType": "VariableDeclaration", + "scope": 7816, + "src": "4185:26:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7809, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4185:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7812, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "4220:11:27", + "nodeType": "VariableDeclaration", + "scope": 7816, + "src": "4213:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7811, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4213:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7814, + "mutability": "mutable", + "name": "timeOfLastUpdate", + "nameLocation": "4240:16:27", + "nodeType": "VariableDeclaration", + "scope": 7816, + "src": "4233:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 7813, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4233:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "4154:103:27" + }, + "scope": 7970, + "src": "4072:186:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "55182894", + "id": 7829, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracleParameters", + "nameLocation": "4273:19:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7817, + "nodeType": "ParameterList", + "parameters": [], + "src": "4292:2:27" + }, + "returnParameters": { + "id": 7828, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7819, + "mutability": "mutable", + "name": "sampleLifetime", + "nameLocation": "4348:14:27", + "nodeType": "VariableDeclaration", + "scope": 7829, + "src": "4342:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 7818, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4342:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7821, + "mutability": "mutable", + "name": "size", + "nameLocation": "4371:4:27", + "nodeType": "VariableDeclaration", + "scope": 7829, + "src": "4364:11:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7820, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4364:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7823, + "mutability": "mutable", + "name": "activeSize", + "nameLocation": "4384:10:27", + "nodeType": "VariableDeclaration", + "scope": 7829, + "src": "4377:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7822, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4377:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7825, + "mutability": "mutable", + "name": "lastUpdated", + "nameLocation": "4403:11:27", + "nodeType": "VariableDeclaration", + "scope": 7829, + "src": "4396:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 7824, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4396:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7827, + "mutability": "mutable", + "name": "firstTimestamp", + "nameLocation": "4423:14:27", + "nodeType": "VariableDeclaration", + "scope": 7829, + "src": "4416:21:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 7826, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4416:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "4341:97:27" + }, + "scope": 7970, + "src": "4264:175:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8940a16a", + "id": 7840, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getOracleSampleAt", + "nameLocation": "4454:17:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7831, + "mutability": "mutable", + "name": "lookupTimestamp", + "nameLocation": "4479:15:27", + "nodeType": "VariableDeclaration", + "scope": 7840, + "src": "4472:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 7830, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "4472:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "4471:24:27" + }, + "returnParameters": { + "id": 7839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7834, + "mutability": "mutable", + "name": "cumulativeId", + "nameLocation": "4550:12:27", + "nodeType": "VariableDeclaration", + "scope": 7840, + "src": "4543:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 7833, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4543:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7836, + "mutability": "mutable", + "name": "cumulativeVolatility", + "nameLocation": "4571:20:27", + "nodeType": "VariableDeclaration", + "scope": 7840, + "src": "4564:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 7835, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4564:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7838, + "mutability": "mutable", + "name": "cumulativeBinCrossed", + "nameLocation": "4600:20:27", + "nodeType": "VariableDeclaration", + "scope": 7840, + "src": "4593:27:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 7837, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4593:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "4542:79:27" + }, + "scope": 7970, + "src": "4445:177:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4c7cffbd", + "id": 7847, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPriceFromId", + "nameLocation": "4637:14:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7842, + "mutability": "mutable", + "name": "id", + "nameLocation": "4659:2:27", + "nodeType": "VariableDeclaration", + "scope": 7847, + "src": "4652:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7841, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4652:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4651:11:27" + }, + "returnParameters": { + "id": 7846, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7845, + "mutability": "mutable", + "name": "price", + "nameLocation": "4694:5:27", + "nodeType": "VariableDeclaration", + "scope": 7847, + "src": "4686:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7844, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4686:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4685:15:27" + }, + "scope": 7970, + "src": "4628:73:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f5e29329", + "id": 7854, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getIdFromPrice", + "nameLocation": "4716:14:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7849, + "mutability": "mutable", + "name": "price", + "nameLocation": "4739:5:27", + "nodeType": "VariableDeclaration", + "scope": 7854, + "src": "4731:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7848, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4731:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4730:15:27" + }, + "returnParameters": { + "id": 7853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7852, + "mutability": "mutable", + "name": "id", + "nameLocation": "4776:2:27", + "nodeType": "VariableDeclaration", + "scope": 7854, + "src": "4769:9:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7851, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4769:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4768:11:27" + }, + "scope": 7970, + "src": "4707:73:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "abcd7830", + "id": 7867, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapIn", + "nameLocation": "4795:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7856, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "4813:9:27", + "nodeType": "VariableDeclaration", + "scope": 7867, + "src": "4805:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7855, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4805:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7858, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "4829:8:27", + "nodeType": "VariableDeclaration", + "scope": 7867, + "src": "4824:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7857, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4824:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4804:34:27" + }, + "returnParameters": { + "id": 7866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7861, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4894:8:27", + "nodeType": "VariableDeclaration", + "scope": 7867, + "src": "4886:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7860, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4886:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7863, + "mutability": "mutable", + "name": "amountOutLeft", + "nameLocation": "4912:13:27", + "nodeType": "VariableDeclaration", + "scope": 7867, + "src": "4904:21:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7862, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4904:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7865, + "mutability": "mutable", + "name": "fee", + "nameLocation": "4935:3:27", + "nodeType": "VariableDeclaration", + "scope": 7867, + "src": "4927:11:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7864, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4927:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "4885:54:27" + }, + "scope": 7970, + "src": "4786:154:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e77366f8", + "id": 7880, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getSwapOut", + "nameLocation": "4955:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7872, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7869, + "mutability": "mutable", + "name": "amountIn", + "nameLocation": "4974:8:27", + "nodeType": "VariableDeclaration", + "scope": 7880, + "src": "4966:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7868, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4966:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7871, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "4989:8:27", + "nodeType": "VariableDeclaration", + "scope": 7880, + "src": "4984:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7870, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4984:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4965:33:27" + }, + "returnParameters": { + "id": 7879, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7874, + "mutability": "mutable", + "name": "amountInLeft", + "nameLocation": "5054:12:27", + "nodeType": "VariableDeclaration", + "scope": 7880, + "src": "5046:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7873, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5046:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7876, + "mutability": "mutable", + "name": "amountOut", + "nameLocation": "5076:9:27", + "nodeType": "VariableDeclaration", + "scope": 7880, + "src": "5068:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7875, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5068:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7878, + "mutability": "mutable", + "name": "fee", + "nameLocation": "5095:3:27", + "nodeType": "VariableDeclaration", + "scope": 7880, + "src": "5087:11:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 7877, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "5087:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "5045:54:27" + }, + "scope": 7970, + "src": "4946:154:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "53c059a0", + "id": 7889, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "swap", + "nameLocation": "5115:4:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7885, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7882, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "5125:8:27", + "nodeType": "VariableDeclaration", + "scope": 7889, + "src": "5120:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7881, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5120:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7884, + "mutability": "mutable", + "name": "to", + "nameLocation": "5143:2:27", + "nodeType": "VariableDeclaration", + "scope": 7889, + "src": "5135:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7883, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5135:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5119:27:27" + }, + "returnParameters": { + "id": 7888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7887, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "5173:10:27", + "nodeType": "VariableDeclaration", + "scope": 7889, + "src": "5165:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7886, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5165:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5164:20:27" + }, + "scope": 7970, + "src": "5106:79:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "ea3446bf", + "id": 7899, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "flashLoan", + "nameLocation": "5200:9:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7892, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "5231:8:27", + "nodeType": "VariableDeclaration", + "scope": 7899, + "src": "5210:29:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$7354", + "typeString": "contract ILBFlashLoanCallback" + }, + "typeName": { + "id": 7891, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7890, + "name": "ILBFlashLoanCallback", + "nameLocations": [ + "5210:20:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7354, + "src": "5210:20:27" + }, + "referencedDeclaration": 7354, + "src": "5210:20:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILBFlashLoanCallback_$7354", + "typeString": "contract ILBFlashLoanCallback" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7894, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "5249:7:27", + "nodeType": "VariableDeclaration", + "scope": 7899, + "src": "5241:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7893, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5241:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7896, + "mutability": "mutable", + "name": "data", + "nameLocation": "5273:4:27", + "nodeType": "VariableDeclaration", + "scope": 7899, + "src": "5258:19:27", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7895, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5258:5:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5209:69:27" + }, + "returnParameters": { + "id": 7898, + "nodeType": "ParameterList", + "parameters": [], + "src": "5287:0:27" + }, + "scope": 7970, + "src": "5191:97:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "383d15c5", + "id": 7916, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "5303:4:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7901, + "mutability": "mutable", + "name": "to", + "nameLocation": "5316:2:27", + "nodeType": "VariableDeclaration", + "scope": 7916, + "src": "5308:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5308:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7904, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "5339:16:27", + "nodeType": "VariableDeclaration", + "scope": 7916, + "src": "5320:35:27", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5320:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7903, + "nodeType": "ArrayTypeName", + "src": "5320:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7906, + "mutability": "mutable", + "name": "refundTo", + "nameLocation": "5365:8:27", + "nodeType": "VariableDeclaration", + "scope": 7916, + "src": "5357:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7905, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5357:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5307:67:27" + }, + "returnParameters": { + "id": 7915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7909, + "mutability": "mutable", + "name": "amountsReceived", + "nameLocation": "5417:15:27", + "nodeType": "VariableDeclaration", + "scope": 7916, + "src": "5409:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7908, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5409:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7911, + "mutability": "mutable", + "name": "amountsLeft", + "nameLocation": "5442:11:27", + "nodeType": "VariableDeclaration", + "scope": 7916, + "src": "5434:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7910, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5434:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7914, + "mutability": "mutable", + "name": "liquidityMinted", + "nameLocation": "5472:15:27", + "nodeType": "VariableDeclaration", + "scope": 7916, + "src": "5455:32:27", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5455:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7913, + "nodeType": "ArrayTypeName", + "src": "5455:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5408:80:27" + }, + "scope": 7970, + "src": "5294:195:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c9939f5e", + "id": 7932, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "5504:4:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7918, + "mutability": "mutable", + "name": "from", + "nameLocation": "5517:4:27", + "nodeType": "VariableDeclaration", + "scope": 7932, + "src": "5509:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5509:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7920, + "mutability": "mutable", + "name": "to", + "nameLocation": "5531:2:27", + "nodeType": "VariableDeclaration", + "scope": 7932, + "src": "5523:10:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5523:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7923, + "mutability": "mutable", + "name": "ids", + "nameLocation": "5554:3:27", + "nodeType": "VariableDeclaration", + "scope": 7932, + "src": "5535:22:27", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7921, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5535:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7922, + "nodeType": "ArrayTypeName", + "src": "5535:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7926, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "5578:13:27", + "nodeType": "VariableDeclaration", + "scope": 7932, + "src": "5559:32:27", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 7924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5559:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7925, + "nodeType": "ArrayTypeName", + "src": "5559:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5508:84:27" + }, + "returnParameters": { + "id": 7931, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7930, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "5644:7:27", + "nodeType": "VariableDeclaration", + "scope": 7932, + "src": "5627:24:27", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 7928, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5627:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 7929, + "nodeType": "ArrayTypeName", + "src": "5627:9:27", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "5626:26:27" + }, + "scope": 7970, + "src": "5495:158:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a1af5b9a", + "id": 7937, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "collectProtocolFees", + "nameLocation": "5668:19:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7933, + "nodeType": "ParameterList", + "parameters": [], + "src": "5687:2:27" + }, + "returnParameters": { + "id": 7936, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7935, + "mutability": "mutable", + "name": "collectedProtocolFees", + "nameLocation": "5716:21:27", + "nodeType": "VariableDeclaration", + "scope": 7937, + "src": "5708:29:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7934, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5708:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5707:31:27" + }, + "scope": 7970, + "src": "5659:80:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c7bd6586", + "id": 7942, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "increaseOracleLength", + "nameLocation": "5754:20:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7939, + "mutability": "mutable", + "name": "newLength", + "nameLocation": "5782:9:27", + "nodeType": "VariableDeclaration", + "scope": 7942, + "src": "5775:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7938, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5775:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5774:18:27" + }, + "returnParameters": { + "id": 7941, + "nodeType": "ParameterList", + "parameters": [], + "src": "5801:0:27" + }, + "scope": 7970, + "src": "5745:57:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "6653851a", + "id": 7959, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setStaticFeeParameters", + "nameLocation": "5817:22:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7944, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "5856:10:27", + "nodeType": "VariableDeclaration", + "scope": 7959, + "src": "5849:17:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7943, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5849:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7946, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "5883:12:27", + "nodeType": "VariableDeclaration", + "scope": 7959, + "src": "5876:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7945, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5876:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7948, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "5912:11:27", + "nodeType": "VariableDeclaration", + "scope": 7959, + "src": "5905:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7947, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5905:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7950, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "5940:15:27", + "nodeType": "VariableDeclaration", + "scope": 7959, + "src": "5933:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7949, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5933:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7952, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "5972:18:27", + "nodeType": "VariableDeclaration", + "scope": 7959, + "src": "5965:25:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7951, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5965:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7954, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "6007:13:27", + "nodeType": "VariableDeclaration", + "scope": 7959, + "src": "6000:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 7953, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6000:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7956, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "6037:24:27", + "nodeType": "VariableDeclaration", + "scope": 7959, + "src": "6030:31:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 7955, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6030:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5839:228:27" + }, + "returnParameters": { + "id": 7958, + "nodeType": "ParameterList", + "parameters": [], + "src": "6076:0:27" + }, + "scope": 7970, + "src": "5808:269:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "1b057f6d", + "id": 7966, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setHooksParameters", + "nameLocation": "6092:18:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7961, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "6119:15:27", + "nodeType": "VariableDeclaration", + "scope": 7966, + "src": "6111:23:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7960, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6111:7:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7963, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "6151:14:27", + "nodeType": "VariableDeclaration", + "scope": 7966, + "src": "6136:29:27", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7962, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6136:5:27", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6110:56:27" + }, + "returnParameters": { + "id": 7965, + "nodeType": "ParameterList", + "parameters": [], + "src": "6175:0:27" + }, + "scope": 7970, + "src": "6083:93:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d3b9fbe4", + "id": 7969, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "forceDecay", + "nameLocation": "6191:10:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7967, + "nodeType": "ParameterList", + "parameters": [], + "src": "6201:2:27" + }, + "returnParameters": { + "id": 7968, + "nodeType": "ParameterList", + "parameters": [], + "src": "6212:0:27" + }, + "scope": 7970, + "src": "6182:31:27", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 7971, + "src": "329:5886:27", + "usedErrors": [ + 7543, + 7545, + 7547, + 7549, + 7551, + 7553, + 7555, + 7557, + 7559, + 7561, + 7563, + 7565, + 7567, + 7571, + 7575, + 7579, + 7581, + 7583, + 7975, + 7977, + 7981, + 7987, + 7995, + 8003 + ], + "usedEvents": [ + 7605, + 7617, + 7627, + 7633, + 7651, + 7669, + 7675, + 7690, + 7696, + 7704, + 8017, + 8025 + ] + } + ], + "src": "33:6183:27" + }, + "id": 27 + }, + "src/interfaces/ILBToken.sol": { + "ast": { + "absolutePath": "src/interfaces/ILBToken.sol", + "exportedSymbols": { + "ILBToken": [ + 8093 + ] + }, + "id": 8094, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7972, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:28" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ILBToken", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 7973, + "nodeType": "StructuredDocumentation", + "src": "59:99:28", + "text": " @title Liquidity Book Token Interface\n @notice Interface to interact with the LBToken." + }, + "fullyImplemented": false, + "id": 8093, + "linearizedBaseContracts": [ + 8093 + ], + "name": "ILBToken", + "nameLocation": "169:8:28", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "8b8421ce", + "id": 7975, + "name": "LBToken__AddressThisOrZero", + "nameLocation": "190:26:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7974, + "nodeType": "ParameterList", + "parameters": [], + "src": "216:2:28" + }, + "src": "184:35:28" + }, + { + "errorSelector": "80623ffa", + "id": 7977, + "name": "LBToken__InvalidLength", + "nameLocation": "230:22:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7976, + "nodeType": "ParameterList", + "parameters": [], + "src": "252:2:28" + }, + "src": "224:31:28" + }, + { + "errorSelector": "782ee707", + "id": 7981, + "name": "LBToken__SelfApproval", + "nameLocation": "266:21:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7980, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7979, + "mutability": "mutable", + "name": "owner", + "nameLocation": "296:5:28", + "nodeType": "VariableDeclaration", + "scope": 7981, + "src": "288:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7978, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "288:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "287:15:28" + }, + "src": "260:43:28" + }, + { + "errorSelector": "548f773d", + "id": 7987, + "name": "LBToken__SpenderNotApproved", + "nameLocation": "314:27:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7986, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7983, + "mutability": "mutable", + "name": "from", + "nameLocation": "350:4:28", + "nodeType": "VariableDeclaration", + "scope": 7987, + "src": "342:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7982, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "342:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7985, + "mutability": "mutable", + "name": "spender", + "nameLocation": "364:7:28", + "nodeType": "VariableDeclaration", + "scope": 7987, + "src": "356:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7984, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "356:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "341:31:28" + }, + "src": "308:65:28" + }, + { + "errorSelector": "58b4690f", + "id": 7995, + "name": "LBToken__TransferExceedsBalance", + "nameLocation": "384:31:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7989, + "mutability": "mutable", + "name": "from", + "nameLocation": "424:4:28", + "nodeType": "VariableDeclaration", + "scope": 7995, + "src": "416:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "416:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7991, + "mutability": "mutable", + "name": "id", + "nameLocation": "438:2:28", + "nodeType": "VariableDeclaration", + "scope": 7995, + "src": "430:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7990, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "430:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7993, + "mutability": "mutable", + "name": "amount", + "nameLocation": "450:6:28", + "nodeType": "VariableDeclaration", + "scope": 7995, + "src": "442:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "442:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "415:42:28" + }, + "src": "378:80:28" + }, + { + "errorSelector": "02d9c3b8", + "id": 8003, + "name": "LBToken__BurnExceedsBalance", + "nameLocation": "469:27:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7997, + "mutability": "mutable", + "name": "from", + "nameLocation": "505:4:28", + "nodeType": "VariableDeclaration", + "scope": 8003, + "src": "497:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "497:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7999, + "mutability": "mutable", + "name": "id", + "nameLocation": "519:2:28", + "nodeType": "VariableDeclaration", + "scope": 8003, + "src": "511:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "511:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8001, + "mutability": "mutable", + "name": "amount", + "nameLocation": "531:6:28", + "nodeType": "VariableDeclaration", + "scope": 8003, + "src": "523:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8000, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "523:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "496:42:28" + }, + "src": "463:76:28" + }, + { + "anonymous": false, + "eventSelector": "4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb", + "id": 8017, + "name": "TransferBatch", + "nameLocation": "551:13:28", + "nodeType": "EventDefinition", + "parameters": { + "id": 8016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8005, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "590:6:28", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "574:22:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "574:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8007, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "614:4:28", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "598:20:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8006, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "598:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8009, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "636:2:28", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "620:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "620:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8012, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nameLocation": "650:3:28", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "640:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8010, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "640:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8011, + "nodeType": "ArrayTypeName", + "src": "640:9:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8015, + "indexed": false, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "665:7:28", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "655:17:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "655:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8014, + "nodeType": "ArrayTypeName", + "src": "655:9:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "564:114:28" + }, + "src": "545:134:28" + }, + { + "anonymous": false, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "id": 8025, + "name": "ApprovalForAll", + "nameLocation": "691:14:28", + "nodeType": "EventDefinition", + "parameters": { + "id": 8024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8019, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "722:7:28", + "nodeType": "VariableDeclaration", + "scope": 8025, + "src": "706:23:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8018, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "706:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8021, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "747:6:28", + "nodeType": "VariableDeclaration", + "scope": 8025, + "src": "731:22:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "731:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8023, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "760:8:28", + "nodeType": "VariableDeclaration", + "scope": 8025, + "src": "755:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8022, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "755:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "705:64:28" + }, + "src": "685:85:28" + }, + { + "functionSelector": "06fdde03", + "id": 8030, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "785:4:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8026, + "nodeType": "ParameterList", + "parameters": [], + "src": "789:2:28" + }, + "returnParameters": { + "id": 8029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8028, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8030, + "src": "815:13:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8027, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "815:6:28", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "814:15:28" + }, + "scope": 8093, + "src": "776:54:28", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 8035, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "845:6:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8031, + "nodeType": "ParameterList", + "parameters": [], + "src": "851:2:28" + }, + "returnParameters": { + "id": 8034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8033, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8035, + "src": "877:13:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8032, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "877:6:28", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "876:15:28" + }, + "scope": 8093, + "src": "836:56:28", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "bd85b039", + "id": 8042, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "907:11:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8037, + "mutability": "mutable", + "name": "id", + "nameLocation": "927:2:28", + "nodeType": "VariableDeclaration", + "scope": 8042, + "src": "919:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "919:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "918:12:28" + }, + "returnParameters": { + "id": 8041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8040, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8042, + "src": "954:7:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8039, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "954:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "953:9:28" + }, + "scope": 8093, + "src": "898:65:28", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "00fdd58e", + "id": 8051, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "978:9:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8044, + "mutability": "mutable", + "name": "account", + "nameLocation": "996:7:28", + "nodeType": "VariableDeclaration", + "scope": 8051, + "src": "988:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "988:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8046, + "mutability": "mutable", + "name": "id", + "nameLocation": "1013:2:28", + "nodeType": "VariableDeclaration", + "scope": 8051, + "src": "1005:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1005:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "987:29:28" + }, + "returnParameters": { + "id": 8050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8049, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8051, + "src": "1040:7:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1040:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1039:9:28" + }, + "scope": 8093, + "src": "969:80:28", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4e1273f4", + "id": 8063, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOfBatch", + "nameLocation": "1064:14:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8054, + "mutability": "mutable", + "name": "accounts", + "nameLocation": "1098:8:28", + "nodeType": "VariableDeclaration", + "scope": 8063, + "src": "1079:27:28", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 8052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1079:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8053, + "nodeType": "ArrayTypeName", + "src": "1079:9:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8057, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1127:3:28", + "nodeType": "VariableDeclaration", + "scope": 8063, + "src": "1108:22:28", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1108:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8056, + "nodeType": "ArrayTypeName", + "src": "1108:9:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1078:53:28" + }, + "returnParameters": { + "id": 8062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8061, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8063, + "src": "1179:16:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8059, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1179:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8060, + "nodeType": "ArrayTypeName", + "src": "1179:9:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1178:18:28" + }, + "scope": 8093, + "src": "1055:142:28", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e985e9c5", + "id": 8072, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "1212:16:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8065, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1237:5:28", + "nodeType": "VariableDeclaration", + "scope": 8072, + "src": "1229:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1229:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8067, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1252:7:28", + "nodeType": "VariableDeclaration", + "scope": 8072, + "src": "1244:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1244:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1228:32:28" + }, + "returnParameters": { + "id": 8071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8070, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8072, + "src": "1284:4:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8069, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1284:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1283:6:28" + }, + "scope": 8093, + "src": "1203:87:28", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "e584b654", + "id": 8079, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approveForAll", + "nameLocation": "1305:13:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8074, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1327:7:28", + "nodeType": "VariableDeclaration", + "scope": 8079, + "src": "1319:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1319:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8076, + "mutability": "mutable", + "name": "approved", + "nameLocation": "1341:8:28", + "nodeType": "VariableDeclaration", + "scope": 8079, + "src": "1336:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8075, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1336:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1318:32:28" + }, + "returnParameters": { + "id": 8078, + "nodeType": "ParameterList", + "parameters": [], + "src": "1359:0:28" + }, + "scope": 8093, + "src": "1296:64:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "17fad7fc", + "id": 8092, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "batchTransferFrom", + "nameLocation": "1375:17:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8081, + "mutability": "mutable", + "name": "from", + "nameLocation": "1401:4:28", + "nodeType": "VariableDeclaration", + "scope": 8092, + "src": "1393:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1393:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8083, + "mutability": "mutable", + "name": "to", + "nameLocation": "1415:2:28", + "nodeType": "VariableDeclaration", + "scope": 8092, + "src": "1407:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1407:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8086, + "mutability": "mutable", + "name": "ids", + "nameLocation": "1438:3:28", + "nodeType": "VariableDeclaration", + "scope": 8092, + "src": "1419:22:28", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1419:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8085, + "nodeType": "ArrayTypeName", + "src": "1419:9:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8089, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "1462:7:28", + "nodeType": "VariableDeclaration", + "scope": 8092, + "src": "1443:26:28", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1443:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8088, + "nodeType": "ArrayTypeName", + "src": "1443:9:28", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "1392:78:28" + }, + "returnParameters": { + "id": 8091, + "nodeType": "ParameterList", + "parameters": [], + "src": "1479:0:28" + }, + "scope": 8093, + "src": "1366:114:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 8094, + "src": "159:1323:28", + "usedErrors": [ + 7975, + 7977, + 7981, + 7987, + 7995, + 8003 + ], + "usedEvents": [ + 8017, + 8025 + ] + } + ], + "src": "33:1450:28" + }, + "id": 28 + }, + "src/libraries/Constants.sol": { + "ast": { + "absolutePath": "src/libraries/Constants.sol", + "exportedSymbols": { + "Constants": [ + 8131 + ] + }, + "id": 8132, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8095, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:29" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Constants", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 8096, + "nodeType": "StructuredDocumentation", + "src": "59:107:29", + "text": " @title Liquidity Book Constants Library\n @notice Set of constants for Liquidity Book contracts" + }, + "fullyImplemented": true, + "id": 8131, + "linearizedBaseContracts": [ + 8131 + ], + "name": "Constants", + "nameLocation": "175:9:29", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 8099, + "mutability": "constant", + "name": "SCALE_OFFSET", + "nameLocation": "215:12:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "191:42:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8097, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "191:5:29", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "313238", + "id": 8098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "230:3:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8104, + "mutability": "constant", + "name": "SCALE", + "nameLocation": "265:5:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "239:51:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "239:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "273:1:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 8102, + "name": "SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8099, + "src": "278:12:29", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "273:17:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8107, + "mutability": "constant", + "name": "PRECISION", + "nameLocation": "323:9:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "297:42:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "297:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31653138", + "id": 8106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:4:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + }, + "value": "1e18" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8112, + "mutability": "constant", + "name": "SQUARED_PRECISION", + "nameLocation": "371:17:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "345:67:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "345:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 8109, + "name": "PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8107, + "src": "391:9:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 8110, + "name": "PRECISION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8107, + "src": "403:9:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "391:21:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8115, + "mutability": "constant", + "name": "MAX_FEE", + "nameLocation": "445:7:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "419:42:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "419:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "302e31653138", + "id": 8114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "455:6:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000_by_1", + "typeString": "int_const 100000000000000000" + }, + "value": "0.1e18" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8118, + "mutability": "constant", + "name": "MAX_PROTOCOL_SHARE", + "nameLocation": "500:18:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "474:52:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "474:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "325f353030", + "id": 8117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "521:5:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_2500_by_1", + "typeString": "int_const 2500" + }, + "value": "2_500" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8121, + "mutability": "constant", + "name": "BASIS_POINT_MAX", + "nameLocation": "577:15:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "551:50:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "551:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31305f303030", + "id": 8120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "595:6:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10_000" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8124, + "mutability": "constant", + "name": "MAX_LIQUIDITY_PER_BIN", + "nameLocation": "687:21:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "661:129:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3635323531373433313136373139363733303130393635363235353430323434363533313931363139393233303134333835393835333739363030333834313033313334373337", + "id": 8123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "719:71:29", + "typeDescriptions": { + "typeIdentifier": "t_rational_65251743116719673010965625540244653191619923014385985379600384103134737_by_1", + "typeString": "int_const 6525...(63 digits omitted)...4737" + }, + "value": "65251743116719673010965625540244653191619923014385985379600384103134737" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 8125, + "nodeType": "StructuredDocumentation", + "src": "797:58:29", + "text": "@dev The expected return after a successful flash loan" + }, + "id": 8130, + "mutability": "constant", + "name": "CALLBACK_SUCCESS", + "nameLocation": "886:16:29", + "nodeType": "VariableDeclaration", + "scope": 8131, + "src": "860:76:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8126, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "860:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4c42506169722e6f6e466c6173684c6f616e", + "id": 8128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "915:20:29", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2", + "typeString": "literal_string \"LBPair.onFlashLoan\"" + }, + "value": "LBPair.onFlashLoan" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ab5c473bce5960a8292e9c8db82f9272504caab4e9ef09553fc112f82b62a3c2", + "typeString": "literal_string \"LBPair.onFlashLoan\"" + } + ], + "id": 8127, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "905:9:29", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "905:31:29", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "scope": 8132, + "src": "167:772:29", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:907:29" + }, + "id": 29 + }, + "src/libraries/Hooks.sol": { + "ast": { + "absolutePath": "src/libraries/Hooks.sol", + "exportedSymbols": { + "Hooks": [ + 9005 + ], + "ILBHooks": [ + 7527 + ] + }, + "id": 9006, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8133, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "32:24:30" + }, + { + "absolutePath": "src/interfaces/ILBHooks.sol", + "file": "../interfaces/ILBHooks.sol", + "id": 8135, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9006, + "sourceUnit": 7528, + "src": "58:52:30", + "symbolAliases": [ + { + "foreign": { + "id": 8134, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "66:8:30", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Hooks", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 8136, + "nodeType": "StructuredDocumentation", + "src": "112:117:30", + "text": " @title Hooks library\n @notice This library contains functions that should be used to interact with hooks" + }, + "fullyImplemented": true, + "id": 9005, + "linearizedBaseContracts": [ + 9005 + ], + "name": "Hooks", + "nameLocation": "238:5:30", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "6c93cb9b", + "id": 8138, + "name": "Hooks__CallFailed", + "nameLocation": "256:17:30", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8137, + "nodeType": "ParameterList", + "parameters": [], + "src": "273:2:30" + }, + "src": "250:26:30" + }, + { + "constant": true, + "id": 8149, + "mutability": "constant", + "name": "BEFORE_SWAP_FLAG", + "nameLocation": "308:16:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "282:71:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8139, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "282:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1", + "typeString": "int_const 1461...(41 digits omitted)...2976" + }, + "id": 8146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "343:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313630", + "id": 8145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "348:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "343:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1", + "typeString": "int_const 1461...(41 digits omitted)...2976" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1", + "typeString": "int_const 1461...(41 digits omitted)...2976" + } + ], + "id": 8143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "335:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "335:7:30", + "typeDescriptions": {} + } + }, + "id": 8147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "335:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "327:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8140, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "327:7:30", + "typeDescriptions": {} + } + }, + "id": 8148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "327:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8160, + "mutability": "constant", + "name": "AFTER_SWAP_FLAG", + "nameLocation": "385:15:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "359:70:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8150, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "359:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_2923003274661805836407369665432566039311865085952_by_1", + "typeString": "int_const 2923...(41 digits omitted)...5952" + }, + "id": 8157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "419:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313631", + "id": 8156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "424:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_161_by_1", + "typeString": "int_const 161" + }, + "value": "161" + }, + "src": "419:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_2923003274661805836407369665432566039311865085952_by_1", + "typeString": "int_const 2923...(41 digits omitted)...5952" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2923003274661805836407369665432566039311865085952_by_1", + "typeString": "int_const 2923...(41 digits omitted)...5952" + } + ], + "id": 8154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "411:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "411:7:30", + "typeDescriptions": {} + } + }, + "id": 8158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "411:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "403:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8151, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "403:7:30", + "typeDescriptions": {} + } + }, + "id": 8159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "403:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8171, + "mutability": "constant", + "name": "BEFORE_FLASH_LOAN_FLAG", + "nameLocation": "461:22:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "435:77:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "435:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_5846006549323611672814739330865132078623730171904_by_1", + "typeString": "int_const 5846...(41 digits omitted)...1904" + }, + "id": 8168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "502:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313632", + "id": 8167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "507:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_162_by_1", + "typeString": "int_const 162" + }, + "value": "162" + }, + "src": "502:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_5846006549323611672814739330865132078623730171904_by_1", + "typeString": "int_const 5846...(41 digits omitted)...1904" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_5846006549323611672814739330865132078623730171904_by_1", + "typeString": "int_const 5846...(41 digits omitted)...1904" + } + ], + "id": 8165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "494:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "494:7:30", + "typeDescriptions": {} + } + }, + "id": 8169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "494:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "486:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8162, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "486:7:30", + "typeDescriptions": {} + } + }, + "id": 8170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "486:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8182, + "mutability": "constant", + "name": "AFTER_FLASH_LOAN_FLAG", + "nameLocation": "544:21:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "518:76:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8172, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "518:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_11692013098647223345629478661730264157247460343808_by_1", + "typeString": "int_const 1169...(42 digits omitted)...3808" + }, + "id": 8179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "584:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313633", + "id": 8178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "589:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_163_by_1", + "typeString": "int_const 163" + }, + "value": "163" + }, + "src": "584:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_11692013098647223345629478661730264157247460343808_by_1", + "typeString": "int_const 1169...(42 digits omitted)...3808" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_11692013098647223345629478661730264157247460343808_by_1", + "typeString": "int_const 1169...(42 digits omitted)...3808" + } + ], + "id": 8176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "576:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "576:7:30", + "typeDescriptions": {} + } + }, + "id": 8180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "576:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "568:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "568:7:30", + "typeDescriptions": {} + } + }, + "id": 8181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "568:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8193, + "mutability": "constant", + "name": "BEFORE_MINT_FLAG", + "nameLocation": "626:16:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "600:71:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8183, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "600:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_23384026197294446691258957323460528314494920687616_by_1", + "typeString": "int_const 2338...(42 digits omitted)...7616" + }, + "id": 8190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "661:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313634", + "id": 8189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "666:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_164_by_1", + "typeString": "int_const 164" + }, + "value": "164" + }, + "src": "661:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_23384026197294446691258957323460528314494920687616_by_1", + "typeString": "int_const 2338...(42 digits omitted)...7616" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_23384026197294446691258957323460528314494920687616_by_1", + "typeString": "int_const 2338...(42 digits omitted)...7616" + } + ], + "id": 8187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "653:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "653:7:30", + "typeDescriptions": {} + } + }, + "id": 8191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "653:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "645:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8184, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "645:7:30", + "typeDescriptions": {} + } + }, + "id": 8192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "645:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8204, + "mutability": "constant", + "name": "AFTER_MINT_FLAG", + "nameLocation": "703:15:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "677:70:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8194, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "677:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_46768052394588893382517914646921056628989841375232_by_1", + "typeString": "int_const 4676...(42 digits omitted)...5232" + }, + "id": 8201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "737:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313635", + "id": 8200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "742:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_165_by_1", + "typeString": "int_const 165" + }, + "value": "165" + }, + "src": "737:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_46768052394588893382517914646921056628989841375232_by_1", + "typeString": "int_const 4676...(42 digits omitted)...5232" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_46768052394588893382517914646921056628989841375232_by_1", + "typeString": "int_const 4676...(42 digits omitted)...5232" + } + ], + "id": 8198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "729:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8197, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "729:7:30", + "typeDescriptions": {} + } + }, + "id": 8202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "729:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "721:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8195, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "721:7:30", + "typeDescriptions": {} + } + }, + "id": 8203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "721:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8215, + "mutability": "constant", + "name": "BEFORE_BURN_FLAG", + "nameLocation": "779:16:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "753:71:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8205, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "753:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_93536104789177786765035829293842113257979682750464_by_1", + "typeString": "int_const 9353...(42 digits omitted)...0464" + }, + "id": 8212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "814:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313636", + "id": 8211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "819:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_166_by_1", + "typeString": "int_const 166" + }, + "value": "166" + }, + "src": "814:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_93536104789177786765035829293842113257979682750464_by_1", + "typeString": "int_const 9353...(42 digits omitted)...0464" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_93536104789177786765035829293842113257979682750464_by_1", + "typeString": "int_const 9353...(42 digits omitted)...0464" + } + ], + "id": 8209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "806:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:30", + "typeDescriptions": {} + } + }, + "id": 8213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "806:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "798:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8206, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "798:7:30", + "typeDescriptions": {} + } + }, + "id": 8214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "798:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8226, + "mutability": "constant", + "name": "AFTER_BURN_FLAG", + "nameLocation": "856:15:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "830:70:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8216, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "830:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_187072209578355573530071658587684226515959365500928_by_1", + "typeString": "int_const 1870...(43 digits omitted)...0928" + }, + "id": 8223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "890:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313637", + "id": 8222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "895:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_167_by_1", + "typeString": "int_const 167" + }, + "value": "167" + }, + "src": "890:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_187072209578355573530071658587684226515959365500928_by_1", + "typeString": "int_const 1870...(43 digits omitted)...0928" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_187072209578355573530071658587684226515959365500928_by_1", + "typeString": "int_const 1870...(43 digits omitted)...0928" + } + ], + "id": 8220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "882:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8219, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "882:7:30", + "typeDescriptions": {} + } + }, + "id": 8224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "882:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "874:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8217, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "874:7:30", + "typeDescriptions": {} + } + }, + "id": 8225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "874:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8237, + "mutability": "constant", + "name": "BEFORE_TRANSFER_FLAG", + "nameLocation": "932:20:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "906:75:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8227, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "906:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_374144419156711147060143317175368453031918731001856_by_1", + "typeString": "int_const 3741...(43 digits omitted)...1856" + }, + "id": 8234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "971:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313638", + "id": 8233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "976:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + "value": "168" + }, + "src": "971:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_374144419156711147060143317175368453031918731001856_by_1", + "typeString": "int_const 3741...(43 digits omitted)...1856" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_374144419156711147060143317175368453031918731001856_by_1", + "typeString": "int_const 3741...(43 digits omitted)...1856" + } + ], + "id": 8231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "963:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "963:7:30", + "typeDescriptions": {} + } + }, + "id": 8235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "963:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "955:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8228, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "955:7:30", + "typeDescriptions": {} + } + }, + "id": 8236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "955:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 8248, + "mutability": "constant", + "name": "AFTER_TRANSFER_FLAG", + "nameLocation": "1013:19:30", + "nodeType": "VariableDeclaration", + "scope": 9005, + "src": "987:74:30", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8238, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "987:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_rational_748288838313422294120286634350736906063837462003712_by_1", + "typeString": "int_const 7482...(43 digits omitted)...3712" + }, + "id": 8245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 8243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1051:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313639", + "id": 8244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1056:3:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_169_by_1", + "typeString": "int_const 169" + }, + "value": "169" + }, + "src": "1051:8:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_748288838313422294120286634350736906063837462003712_by_1", + "typeString": "int_const 7482...(43 digits omitted)...3712" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_748288838313422294120286634350736906063837462003712_by_1", + "typeString": "int_const 7482...(43 digits omitted)...3712" + } + ], + "id": 8242, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1043:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8241, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1043:7:30", + "typeDescriptions": {} + } + }, + "id": 8246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1043:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1035:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8239, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1035:7:30", + "typeDescriptions": {} + } + }, + "id": 8247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1035:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "canonicalName": "Hooks.Parameters", + "id": 8271, + "members": [ + { + "constant": false, + "id": 8250, + "mutability": "mutable", + "name": "hooks", + "nameLocation": "1104:5:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1096:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1096:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8252, + "mutability": "mutable", + "name": "beforeSwap", + "nameLocation": "1124:10:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1119:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8251, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1119:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8254, + "mutability": "mutable", + "name": "afterSwap", + "nameLocation": "1149:9:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1144:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8253, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1144:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8256, + "mutability": "mutable", + "name": "beforeFlashLoan", + "nameLocation": "1173:15:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1168:20:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8255, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1168:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8258, + "mutability": "mutable", + "name": "afterFlashLoan", + "nameLocation": "1203:14:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1198:19:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8257, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1198:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8260, + "mutability": "mutable", + "name": "beforeMint", + "nameLocation": "1232:10:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1227:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8259, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1227:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8262, + "mutability": "mutable", + "name": "afterMint", + "nameLocation": "1257:9:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1252:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8261, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1252:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8264, + "mutability": "mutable", + "name": "beforeBurn", + "nameLocation": "1281:10:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1276:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8263, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1276:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8266, + "mutability": "mutable", + "name": "afterBurn", + "nameLocation": "1306:9:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1301:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1301:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8268, + "mutability": "mutable", + "name": "beforeBatchTransferFrom", + "nameLocation": "1330:23:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1325:28:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8267, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1325:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8270, + "mutability": "mutable", + "name": "afterBatchTransferFrom", + "nameLocation": "1368:22:30", + "nodeType": "VariableDeclaration", + "scope": 8271, + "src": "1363:27:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8269, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1363:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "Parameters", + "nameLocation": "1075:10:30", + "nodeType": "StructDefinition", + "scope": 9005, + "src": "1068:329:30", + "visibility": "public" + }, + { + "body": { + "id": 8367, + "nodeType": "Block", + "src": "1704:854:30", + "statements": [ + { + "expression": { + "id": 8295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8280, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "1714:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 8289, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "1764:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8290, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1775:5:30", + "memberName": "hooks", + "nodeType": "MemberAccess", + "referencedDeclaration": 8250, + "src": "1764:16:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1756:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1756:7:30", + "typeDescriptions": {} + } + }, + "id": 8291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1756:25:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1748:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8285, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1748:7:30", + "typeDescriptions": {} + } + }, + "id": 8292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1748:34:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 8284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1740:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1740:7:30", + "typeDescriptions": {} + } + }, + "id": 8293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1740:43:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1732:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8281, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1732:7:30", + "typeDescriptions": {} + } + }, + "id": 8294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1732:52:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1714:70:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8296, + "nodeType": "ExpressionStatement", + "src": "1714:70:30" + }, + { + "condition": { + "expression": { + "id": 8297, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "1799:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8298, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1810:10:30", + "memberName": "beforeSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8252, + "src": "1799:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8303, + "nodeType": "IfStatement", + "src": "1795:62:30", + "trueBody": { + "expression": { + "id": 8301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8299, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "1822:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8300, + "name": "BEFORE_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8149, + "src": "1841:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1822:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8302, + "nodeType": "ExpressionStatement", + "src": "1822:35:30" + } + }, + { + "condition": { + "expression": { + "id": 8304, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "1871:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8305, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1882:9:30", + "memberName": "afterSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8254, + "src": "1871:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8310, + "nodeType": "IfStatement", + "src": "1867:60:30", + "trueBody": { + "expression": { + "id": 8308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8306, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "1893:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8307, + "name": "AFTER_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8160, + "src": "1912:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1893:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8309, + "nodeType": "ExpressionStatement", + "src": "1893:34:30" + } + }, + { + "condition": { + "expression": { + "id": 8311, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "1941:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8312, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1952:15:30", + "memberName": "beforeFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8256, + "src": "1941:26:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8317, + "nodeType": "IfStatement", + "src": "1937:73:30", + "trueBody": { + "expression": { + "id": 8315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8313, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "1969:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8314, + "name": "BEFORE_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8171, + "src": "1988:22:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1969:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8316, + "nodeType": "ExpressionStatement", + "src": "1969:41:30" + } + }, + { + "condition": { + "expression": { + "id": 8318, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "2024:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8319, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2035:14:30", + "memberName": "afterFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8258, + "src": "2024:25:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8324, + "nodeType": "IfStatement", + "src": "2020:71:30", + "trueBody": { + "expression": { + "id": 8322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8320, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "2051:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8321, + "name": "AFTER_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8182, + "src": "2070:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2051:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8323, + "nodeType": "ExpressionStatement", + "src": "2051:40:30" + } + }, + { + "condition": { + "expression": { + "id": 8325, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "2105:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8326, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2116:10:30", + "memberName": "beforeMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8260, + "src": "2105:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8331, + "nodeType": "IfStatement", + "src": "2101:62:30", + "trueBody": { + "expression": { + "id": 8329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8327, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "2128:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8328, + "name": "BEFORE_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8193, + "src": "2147:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2128:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8330, + "nodeType": "ExpressionStatement", + "src": "2128:35:30" + } + }, + { + "condition": { + "expression": { + "id": 8332, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "2177:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8333, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2188:9:30", + "memberName": "afterMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8262, + "src": "2177:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8338, + "nodeType": "IfStatement", + "src": "2173:60:30", + "trueBody": { + "expression": { + "id": 8336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8334, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "2199:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8335, + "name": "AFTER_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8204, + "src": "2218:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2199:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8337, + "nodeType": "ExpressionStatement", + "src": "2199:34:30" + } + }, + { + "condition": { + "expression": { + "id": 8339, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "2247:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2258:10:30", + "memberName": "beforeBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8264, + "src": "2247:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8345, + "nodeType": "IfStatement", + "src": "2243:62:30", + "trueBody": { + "expression": { + "id": 8343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8341, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "2270:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8342, + "name": "BEFORE_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8215, + "src": "2289:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2270:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8344, + "nodeType": "ExpressionStatement", + "src": "2270:35:30" + } + }, + { + "condition": { + "expression": { + "id": 8346, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "2319:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8347, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2330:9:30", + "memberName": "afterBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8266, + "src": "2319:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8352, + "nodeType": "IfStatement", + "src": "2315:60:30", + "trueBody": { + "expression": { + "id": 8350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8348, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "2341:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8349, + "name": "AFTER_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8226, + "src": "2360:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2341:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8351, + "nodeType": "ExpressionStatement", + "src": "2341:34:30" + } + }, + { + "condition": { + "expression": { + "id": 8353, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "2389:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8354, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2400:23:30", + "memberName": "beforeBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8268, + "src": "2389:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8359, + "nodeType": "IfStatement", + "src": "2385:79:30", + "trueBody": { + "expression": { + "id": 8357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8355, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "2425:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8356, + "name": "BEFORE_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8237, + "src": "2444:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2425:39:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8358, + "nodeType": "ExpressionStatement", + "src": "2425:39:30" + } + }, + { + "condition": { + "expression": { + "id": 8360, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8275, + "src": "2478:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2489:22:30", + "memberName": "afterBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8270, + "src": "2478:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8366, + "nodeType": "IfStatement", + "src": "2474:77:30", + "trueBody": { + "expression": { + "id": 8364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8362, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8278, + "src": "2513:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "id": 8363, + "name": "AFTER_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8248, + "src": "2532:19:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2513:38:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8365, + "nodeType": "ExpressionStatement", + "src": "2513:38:30" + } + } + ] + }, + "documentation": { + "id": 8272, + "nodeType": "StructuredDocumentation", + "src": "1403:202:30", + "text": " @dev Helper function to encode the hooks parameters to a single bytes32 value\n @param parameters The hooks parameters\n @return hooksParameters The encoded hooks parameters" + }, + "id": 8368, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "1619:6:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8275, + "mutability": "mutable", + "name": "parameters", + "nameLocation": "1644:10:30", + "nodeType": "VariableDeclaration", + "scope": 8368, + "src": "1626:28:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters" + }, + "typeName": { + "id": 8274, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8273, + "name": "Parameters", + "nameLocations": [ + "1626:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8271, + "src": "1626:10:30" + }, + "referencedDeclaration": 8271, + "src": "1626:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_storage_ptr", + "typeString": "struct Hooks.Parameters" + } + }, + "visibility": "internal" + } + ], + "src": "1625:30:30" + }, + "returnParameters": { + "id": 8279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8278, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "1687:15:30", + "nodeType": "VariableDeclaration", + "scope": 8368, + "src": "1679:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8277, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1679:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1678:25:30" + }, + "scope": 9005, + "src": "1610:948:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8495, + "nodeType": "Block", + "src": "2867:858:30", + "statements": [ + { + "expression": { + "id": 8383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8377, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "2877:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8379, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2888:5:30", + "memberName": "hooks", + "nodeType": "MemberAccess", + "referencedDeclaration": 8250, + "src": "2877:16:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8381, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "2905:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8380, + "name": "getHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8518, + "src": "2896:8:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) pure returns (address)" + } + }, + "id": 8382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2896:25:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2877:44:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8384, + "nodeType": "ExpressionStatement", + "src": "2877:44:30" + }, + { + "expression": { + "id": 8394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8385, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "2932:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8387, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2943:10:30", + "memberName": "beforeSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8252, + "src": "2932:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8388, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "2957:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8389, + "name": "BEFORE_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8149, + "src": "2975:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2957:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8391, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2956:36:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2996:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2956:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2932:65:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8395, + "nodeType": "ExpressionStatement", + "src": "2932:65:30" + }, + { + "expression": { + "id": 8405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8396, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3007:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8398, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3018:9:30", + "memberName": "afterSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 8254, + "src": "3007:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8399, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3031:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8400, + "name": "AFTER_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8160, + "src": "3049:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3031:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8402, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3030:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3069:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3030:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3007:63:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8406, + "nodeType": "ExpressionStatement", + "src": "3007:63:30" + }, + { + "expression": { + "id": 8416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8407, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3080:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8409, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3091:15:30", + "memberName": "beforeFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8256, + "src": "3080:26:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8410, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3110:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8411, + "name": "BEFORE_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8171, + "src": "3128:22:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3110:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8413, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3109:42:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3155:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3109:47:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3080:76:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8417, + "nodeType": "ExpressionStatement", + "src": "3080:76:30" + }, + { + "expression": { + "id": 8427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8418, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3166:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8420, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3177:14:30", + "memberName": "afterFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 8258, + "src": "3166:25:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8421, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3195:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8422, + "name": "AFTER_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8182, + "src": "3213:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3195:39:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8424, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3194:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3239:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3194:46:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3166:74:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8428, + "nodeType": "ExpressionStatement", + "src": "3166:74:30" + }, + { + "expression": { + "id": 8438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8429, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3250:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8431, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3261:10:30", + "memberName": "beforeMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8260, + "src": "3250:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8432, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3275:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8433, + "name": "BEFORE_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8193, + "src": "3293:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3275:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8435, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3274:36:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3314:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3274:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3250:65:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8439, + "nodeType": "ExpressionStatement", + "src": "3250:65:30" + }, + { + "expression": { + "id": 8449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8440, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3325:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8442, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3336:9:30", + "memberName": "afterMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8262, + "src": "3325:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8443, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3349:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8444, + "name": "AFTER_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8204, + "src": "3367:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3349:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8446, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3348:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3387:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3348:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3325:63:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8450, + "nodeType": "ExpressionStatement", + "src": "3325:63:30" + }, + { + "expression": { + "id": 8460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8451, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3398:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8453, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3409:10:30", + "memberName": "beforeBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8264, + "src": "3398:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8454, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3423:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8455, + "name": "BEFORE_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8215, + "src": "3441:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3423:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8457, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3422:36:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3462:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3422:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3398:65:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8461, + "nodeType": "ExpressionStatement", + "src": "3398:65:30" + }, + { + "expression": { + "id": 8471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8462, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3473:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8464, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3484:9:30", + "memberName": "afterBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 8266, + "src": "3473:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8465, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3497:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8466, + "name": "AFTER_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8226, + "src": "3515:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3497:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8468, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3496:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3535:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3496:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3473:63:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8472, + "nodeType": "ExpressionStatement", + "src": "3473:63:30" + }, + { + "expression": { + "id": 8482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8473, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3546:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8475, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3557:23:30", + "memberName": "beforeBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8268, + "src": "3546:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8476, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3584:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8477, + "name": "BEFORE_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8237, + "src": "3602:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3584:38:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8479, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3583:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3627:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3583:45:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3546:82:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8483, + "nodeType": "ExpressionStatement", + "src": "3546:82:30" + }, + { + "expression": { + "id": 8493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 8484, + "name": "parameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8375, + "src": "3638:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters memory" + } + }, + "id": 8486, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3649:22:30", + "memberName": "afterBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8270, + "src": "3638:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8487, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8371, + "src": "3675:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8488, + "name": "AFTER_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8248, + "src": "3693:19:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3675:37:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8490, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3674:39:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3717:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3674:44:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3638:80:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8494, + "nodeType": "ExpressionStatement", + "src": "3638:80:30" + } + ] + }, + "documentation": { + "id": 8369, + "nodeType": "StructuredDocumentation", + "src": "2564:204:30", + "text": " @dev Helper function to decode the hooks parameters from a single bytes32 value\n @param hooksParameters The encoded hooks parameters\n @return parameters The hooks parameters" + }, + "id": 8496, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode", + "nameLocation": "2782:6:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8371, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "2797:15:30", + "nodeType": "VariableDeclaration", + "scope": 8496, + "src": "2789:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8370, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2789:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2788:25:30" + }, + "returnParameters": { + "id": 8376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8375, + "mutability": "mutable", + "name": "parameters", + "nameLocation": "2855:10:30", + "nodeType": "VariableDeclaration", + "scope": 8496, + "src": "2837:28:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_memory_ptr", + "typeString": "struct Hooks.Parameters" + }, + "typeName": { + "id": 8374, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8373, + "name": "Parameters", + "nameLocations": [ + "2837:10:30" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8271, + "src": "2837:10:30" + }, + "referencedDeclaration": 8271, + "src": "2837:10:30", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parameters_$8271_storage_ptr", + "typeString": "struct Hooks.Parameters" + } + }, + "visibility": "internal" + } + ], + "src": "2836:30:30" + }, + "scope": 9005, + "src": "2773:952:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8517, + "nodeType": "Block", + "src": "4013:67:30", + "statements": [ + { + "expression": { + "id": 8515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8504, + "name": "hooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8502, + "src": "4023:5:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 8511, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8499, + "src": "4055:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4047:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8509, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4047:7:30", + "typeDescriptions": {} + } + }, + "id": 8512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4047:24:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4039:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8507, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "4039:7:30", + "typeDescriptions": {} + } + }, + "id": 8513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4039:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 8506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4031:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4031:7:30", + "typeDescriptions": {} + } + }, + "id": 8514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4031:42:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4023:50:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8516, + "nodeType": "ExpressionStatement", + "src": "4023:50:30" + } + ] + }, + "documentation": { + "id": 8497, + "nodeType": "StructuredDocumentation", + "src": "3731:196:30", + "text": " @dev Helper function to get the hooks address from the encoded hooks parameters\n @param hooksParameters The encoded hooks parameters\n @return hooks The hooks address" + }, + "id": 8518, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getHooks", + "nameLocation": "3941:8:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8499, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "3958:15:30", + "nodeType": "VariableDeclaration", + "scope": 8518, + "src": "3950:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8498, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3950:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3949:25:30" + }, + "returnParameters": { + "id": 8503, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8502, + "mutability": "mutable", + "name": "hooks", + "nameLocation": "4006:5:30", + "nodeType": "VariableDeclaration", + "scope": 8518, + "src": "3998:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3998:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3997:15:30" + }, + "scope": 9005, + "src": "3932:148:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8547, + "nodeType": "Block", + "src": "4444:95:30", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 8532, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8521, + "src": "4477:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4469:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes12_$", + "typeString": "type(bytes12)" + }, + "typeName": { + "id": 8530, + "name": "bytes12", + "nodeType": "ElementaryTypeName", + "src": "4469:7:30", + "typeDescriptions": {} + } + }, + "id": 8533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4469:24:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + ], + "id": 8529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4461:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8528, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4461:7:30", + "typeDescriptions": {} + } + }, + "id": 8534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4461:33:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 8541, + "name": "newHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8523, + "src": "4521:8:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4513:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8539, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "4513:7:30", + "typeDescriptions": {} + } + }, + "id": 8542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4513:17:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 8538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4505:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8537, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4505:7:30", + "typeDescriptions": {} + } + }, + "id": 8543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4505:26:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4497:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 8535, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4497:7:30", + "typeDescriptions": {} + } + }, + "id": 8544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4497:35:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4461:71:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 8527, + "id": 8546, + "nodeType": "Return", + "src": "4454:78:30" + } + ] + }, + "documentation": { + "id": 8519, + "nodeType": "StructuredDocumentation", + "src": "4086:260:30", + "text": " @dev Helper function to set the hooks address in the encoded hooks parameters\n @param hooksParameters The encoded hooks parameters\n @param newHooks The new hooks address\n @return hooksParameters The updated hooks parameters" + }, + "id": 8548, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setHooks", + "nameLocation": "4360:8:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8524, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8521, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "4377:15:30", + "nodeType": "VariableDeclaration", + "scope": 8548, + "src": "4369:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8520, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4369:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8523, + "mutability": "mutable", + "name": "newHooks", + "nameLocation": "4402:8:30", + "nodeType": "VariableDeclaration", + "scope": 8548, + "src": "4394:16:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4394:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4368:43:30" + }, + "returnParameters": { + "id": 8527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8526, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8548, + "src": "4435:7:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4435:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4434:9:30" + }, + "scope": 9005, + "src": "4351:188:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8563, + "nodeType": "Block", + "src": "4811:49:30", + "statements": [ + { + "expression": { + "id": 8561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8556, + "name": "flags", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8554, + "src": "4821:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8559, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8551, + "src": "4837:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4829:7:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes12_$", + "typeString": "type(bytes12)" + }, + "typeName": { + "id": 8557, + "name": "bytes12", + "nodeType": "ElementaryTypeName", + "src": "4829:7:30", + "typeDescriptions": {} + } + }, + "id": 8560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4829:24:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "src": "4821:32:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "id": 8562, + "nodeType": "ExpressionStatement", + "src": "4821:32:30" + } + ] + }, + "documentation": { + "id": 8549, + "nodeType": "StructuredDocumentation", + "src": "4545:180:30", + "text": " @dev Helper function to get the flags from the encoded hooks parameters\n @param hooksParameters The encoded hooks parameters\n @return flags The flags" + }, + "id": 8564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFlags", + "nameLocation": "4739:8:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8551, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "4756:15:30", + "nodeType": "VariableDeclaration", + "scope": 8564, + "src": "4748:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8550, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4748:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4747:25:30" + }, + "returnParameters": { + "id": 8555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8554, + "mutability": "mutable", + "name": "flags", + "nameLocation": "4804:5:30", + "nodeType": "VariableDeclaration", + "scope": 8564, + "src": "4796:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + }, + "typeName": { + "id": 8553, + "name": "bytes12", + "nodeType": "ElementaryTypeName", + "src": "4796:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes12", + "typeString": "bytes12" + } + }, + "visibility": "internal" + } + ], + "src": "4795:15:30" + }, + "scope": 9005, + "src": "4730:130:30", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8589, + "nodeType": "Block", + "src": "5223:210:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8572, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8567, + "src": "5237:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5256:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5237:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8588, + "nodeType": "IfStatement", + "src": "5233:194:30", + "trueBody": { + "id": 8587, + "nodeType": "Block", + "src": "5259:168:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8576, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8567, + "src": "5300:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8579, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "5340:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5349:10:30", + "memberName": "onHooksSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 7380, + "src": "5340:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.onHooksSet(bytes32,bytes calldata) returns (bytes4)" + } + }, + "id": 8581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5360:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "5340:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8582, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8567, + "src": "5370:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8583, + "name": "onHooksSetData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8569, + "src": "5387:14:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 8577, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "5317:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5321:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "5317:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5317:85:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8575, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "5273:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5273:143:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8586, + "nodeType": "ExpressionStatement", + "src": "5273:143:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8565, + "nodeType": "StructuredDocumentation", + "src": "4866:267:30", + "text": " @dev Helper function call the onHooksSet function on the hooks contract, only if the\n hooksParameters is not 0\n @param hooksParameters The encoded hooks parameters\n @param onHooksSetData The data to pass to the onHooksSet function" + }, + "id": 8590, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onHooksSet", + "nameLocation": "5147:10:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8567, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "5166:15:30", + "nodeType": "VariableDeclaration", + "scope": 8590, + "src": "5158:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8566, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5158:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8569, + "mutability": "mutable", + "name": "onHooksSetData", + "nameLocation": "5198:14:30", + "nodeType": "VariableDeclaration", + "scope": 8590, + "src": "5183:29:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8568, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5183:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5157:56:30" + }, + "returnParameters": { + "id": 8571, + "nodeType": "ParameterList", + "parameters": [], + "src": "5223:0:30" + }, + "scope": 9005, + "src": "5138:295:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8626, + "nodeType": "Block", + "src": "5942:231:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8604, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8593, + "src": "5957:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8605, + "name": "BEFORE_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8149, + "src": "5975:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5957:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8607, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5956:36:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5996:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5956:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8625, + "nodeType": "IfStatement", + "src": "5952:215:30", + "trueBody": { + "id": 8624, + "nodeType": "Block", + "src": "5999:168:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8611, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8593, + "src": "6040:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8614, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "6080:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6089:10:30", + "memberName": "beforeSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7393, + "src": "6080:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bool_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeSwap(address,address,bool,bytes32) returns (bytes4)" + } + }, + "id": 8616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6100:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6080:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8617, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8595, + "src": "6110:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8618, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8597, + "src": "6118:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8619, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8599, + "src": "6122:8:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 8620, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8601, + "src": "6132:9:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8612, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "6057:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6061:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "6057:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6057:85:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8610, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "6013:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6013:143:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8623, + "nodeType": "ExpressionStatement", + "src": "6013:143:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8591, + "nodeType": "StructuredDocumentation", + "src": "5439:370:30", + "text": " @dev Helper function to call the beforeSwap function on the hooks contract, only if the\n BEFORE_SWAP_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param swapForY Whether the swap is for Y\n @param amountsIn The amounts in" + }, + "id": 8627, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeSwap", + "nameLocation": "5823:10:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8593, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "5842:15:30", + "nodeType": "VariableDeclaration", + "scope": 8627, + "src": "5834:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8592, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5834:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8595, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5867:6:30", + "nodeType": "VariableDeclaration", + "scope": 8627, + "src": "5859:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5859:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8597, + "mutability": "mutable", + "name": "to", + "nameLocation": "5883:2:30", + "nodeType": "VariableDeclaration", + "scope": 8627, + "src": "5875:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5875:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8599, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "5892:8:30", + "nodeType": "VariableDeclaration", + "scope": 8627, + "src": "5887:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8598, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5887:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8601, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "5910:9:30", + "nodeType": "VariableDeclaration", + "scope": 8627, + "src": "5902:17:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8600, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5902:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5833:87:30" + }, + "returnParameters": { + "id": 8603, + "nodeType": "ParameterList", + "parameters": [], + "src": "5942:0:30" + }, + "scope": 9005, + "src": "5814:359:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8663, + "nodeType": "Block", + "src": "6682:230:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8641, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8630, + "src": "6697:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8642, + "name": "AFTER_SWAP_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8160, + "src": "6715:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6697:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8644, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6696:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6735:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6696:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8662, + "nodeType": "IfStatement", + "src": "6692:214:30", + "trueBody": { + "id": 8661, + "nodeType": "Block", + "src": "6738:168:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8648, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8630, + "src": "6779:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8651, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "6819:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6828:9:30", + "memberName": "afterSwap", + "nodeType": "MemberAccess", + "referencedDeclaration": 7406, + "src": "6819:18:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bool_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterSwap(address,address,bool,bytes32) returns (bytes4)" + } + }, + "id": 8653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6838:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6819:27:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8654, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8632, + "src": "6848:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8655, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8634, + "src": "6856:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8656, + "name": "swapForY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8636, + "src": "6860:8:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 8657, + "name": "amountsOut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8638, + "src": "6870:10:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8649, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "6796:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6800:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "6796:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6796:85:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8647, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "6752:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6752:143:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8660, + "nodeType": "ExpressionStatement", + "src": "6752:143:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8628, + "nodeType": "StructuredDocumentation", + "src": "6179:370:30", + "text": " @dev Helper function to call the afterSwap function on the hooks contract, only if the\n AFTER_SWAP_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param swapForY Whether the swap is for Y\n @param amountsOut The amounts out" + }, + "id": 8664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterSwap", + "nameLocation": "6563:9:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8630, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "6581:15:30", + "nodeType": "VariableDeclaration", + "scope": 8664, + "src": "6573:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8629, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6573:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8632, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6606:6:30", + "nodeType": "VariableDeclaration", + "scope": 8664, + "src": "6598:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6598:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8634, + "mutability": "mutable", + "name": "to", + "nameLocation": "6622:2:30", + "nodeType": "VariableDeclaration", + "scope": 8664, + "src": "6614:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6614:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8636, + "mutability": "mutable", + "name": "swapForY", + "nameLocation": "6631:8:30", + "nodeType": "VariableDeclaration", + "scope": 8664, + "src": "6626:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8635, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6626:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8638, + "mutability": "mutable", + "name": "amountsOut", + "nameLocation": "6649:10:30", + "nodeType": "VariableDeclaration", + "scope": 8664, + "src": "6641:18:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8637, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6641:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6572:88:30" + }, + "returnParameters": { + "id": 8640, + "nodeType": "ParameterList", + "parameters": [], + "src": "6682:0:30" + }, + "scope": 9005, + "src": "6554:358:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8697, + "nodeType": "Block", + "src": "7354:200:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8676, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8667, + "src": "7369:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8677, + "name": "BEFORE_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8171, + "src": "7387:22:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7369:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8679, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7368:42:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7414:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7368:47:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8696, + "nodeType": "IfStatement", + "src": "7364:184:30", + "trueBody": { + "id": 8695, + "nodeType": "Block", + "src": "7417:131:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8683, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8667, + "src": "7441:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8686, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "7481:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7490:15:30", + "memberName": "beforeFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 7417, + "src": "7481:24:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeFlashLoan(address,address,bytes32) returns (bytes4)" + } + }, + "id": 8688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7506:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "7481:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8689, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8669, + "src": "7516:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8690, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8671, + "src": "7524:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8691, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8673, + "src": "7528:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8684, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "7458:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7462:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "7458:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7458:78:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8682, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "7431:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7431:106:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8694, + "nodeType": "ExpressionStatement", + "src": "7431:106:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8665, + "nodeType": "StructuredDocumentation", + "src": "6918:327:30", + "text": " @dev Helper function to call the beforeFlashLoan function on the hooks contract, only if the\n BEFORE_FLASH_LOAN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param amounts The amounts" + }, + "id": 8698, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeFlashLoan", + "nameLocation": "7259:15:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8667, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "7283:15:30", + "nodeType": "VariableDeclaration", + "scope": 8698, + "src": "7275:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8666, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7275:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8669, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7308:6:30", + "nodeType": "VariableDeclaration", + "scope": 8698, + "src": "7300:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7300:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8671, + "mutability": "mutable", + "name": "to", + "nameLocation": "7324:2:30", + "nodeType": "VariableDeclaration", + "scope": 8698, + "src": "7316:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7316:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8673, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "7336:7:30", + "nodeType": "VariableDeclaration", + "scope": 8698, + "src": "7328:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8672, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7328:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7274:70:30" + }, + "returnParameters": { + "id": 8675, + "nodeType": "ParameterList", + "parameters": [], + "src": "7354:0:30" + }, + "scope": 9005, + "src": "7250:304:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8734, + "nodeType": "Block", + "src": "8063:255:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8712, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8701, + "src": "8078:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8713, + "name": "AFTER_FLASH_LOAN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8182, + "src": "8096:21:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8078:39:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8715, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8077:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8122:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8077:46:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8733, + "nodeType": "IfStatement", + "src": "8073:239:30", + "trueBody": { + "id": 8732, + "nodeType": "Block", + "src": "8125:187:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8719, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8701, + "src": "8166:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8722, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "8222:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8231:14:30", + "memberName": "afterFlashLoan", + "nodeType": "MemberAccess", + "referencedDeclaration": 7430, + "src": "8222:23:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterFlashLoan(address,address,bytes32,bytes32) returns (bytes4)" + } + }, + "id": 8724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8246:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "8222:32:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8725, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8703, + "src": "8256:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8726, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8705, + "src": "8264:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8727, + "name": "fees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8707, + "src": "8268:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8728, + "name": "feesReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8709, + "src": "8274:12:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8720, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "8199:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8203:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "8199:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8199:88:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8718, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "8139:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8139:162:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8731, + "nodeType": "ExpressionStatement", + "src": "8139:162:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8699, + "nodeType": "StructuredDocumentation", + "src": "7560:364:30", + "text": " @dev Helper function to call the afterFlashLoan function on the hooks contract, only if the\n AFTER_FLASH_LOAN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param fees The fees\n @param feesReceived The fees received" + }, + "id": 8735, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterFlashLoan", + "nameLocation": "7938:14:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8701, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "7961:15:30", + "nodeType": "VariableDeclaration", + "scope": 8735, + "src": "7953:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8700, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7953:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8703, + "mutability": "mutable", + "name": "sender", + "nameLocation": "7986:6:30", + "nodeType": "VariableDeclaration", + "scope": 8735, + "src": "7978:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7978:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8705, + "mutability": "mutable", + "name": "to", + "nameLocation": "8002:2:30", + "nodeType": "VariableDeclaration", + "scope": 8735, + "src": "7994:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7994:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8707, + "mutability": "mutable", + "name": "fees", + "nameLocation": "8014:4:30", + "nodeType": "VariableDeclaration", + "scope": 8735, + "src": "8006:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8706, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8006:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8709, + "mutability": "mutable", + "name": "feesReceived", + "nameLocation": "8028:12:30", + "nodeType": "VariableDeclaration", + "scope": 8735, + "src": "8020:20:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8708, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8020:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7952:89:30" + }, + "returnParameters": { + "id": 8711, + "nodeType": "ParameterList", + "parameters": [], + "src": "8063:0:30" + }, + "scope": 9005, + "src": "7929:389:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8772, + "nodeType": "Block", + "src": "8905:261:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8750, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8738, + "src": "8920:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8751, + "name": "BEFORE_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8193, + "src": "8938:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8920:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8753, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8919:36:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8959:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8919:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8771, + "nodeType": "IfStatement", + "src": "8915:245:30", + "trueBody": { + "id": 8770, + "nodeType": "Block", + "src": "8962:198:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8757, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8738, + "src": "9003:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8760, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "9059:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9068:10:30", + "memberName": "beforeMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 7444, + "src": "9059:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeMint(address,address,bytes32[] calldata,bytes32) returns (bytes4)" + } + }, + "id": 8762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9079:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "9059:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8763, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8740, + "src": "9089:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8764, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8742, + "src": "9097:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8765, + "name": "liquidityConfigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8745, + "src": "9101:16:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + { + "id": 8766, + "name": "amountsReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8747, + "src": "9119:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8758, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "9036:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9040:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "9036:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9036:99:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8756, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "8976:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8976:173:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8769, + "nodeType": "ExpressionStatement", + "src": "8976:173:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8736, + "nodeType": "StructuredDocumentation", + "src": "8324:386:30", + "text": " @dev Helper function to call the beforeMint function on the hooks contract, only if the\n BEFORE_MINT_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param liquidityConfigs The liquidity configs\n @param amountsReceived The amounts received" + }, + "id": 8773, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeMint", + "nameLocation": "8724:10:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8738, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "8752:15:30", + "nodeType": "VariableDeclaration", + "scope": 8773, + "src": "8744:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8737, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8744:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8740, + "mutability": "mutable", + "name": "sender", + "nameLocation": "8785:6:30", + "nodeType": "VariableDeclaration", + "scope": 8773, + "src": "8777:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8777:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8742, + "mutability": "mutable", + "name": "to", + "nameLocation": "8809:2:30", + "nodeType": "VariableDeclaration", + "scope": 8773, + "src": "8801:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8741, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8801:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8745, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "8840:16:30", + "nodeType": "VariableDeclaration", + "scope": 8773, + "src": "8821:35:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 8743, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8821:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8744, + "nodeType": "ArrayTypeName", + "src": "8821:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8747, + "mutability": "mutable", + "name": "amountsReceived", + "nameLocation": "8874:15:30", + "nodeType": "VariableDeclaration", + "scope": 8773, + "src": "8866:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8746, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8866:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8734:161:30" + }, + "returnParameters": { + "id": 8749, + "nodeType": "ParameterList", + "parameters": [], + "src": "8905:0:30" + }, + "scope": 9005, + "src": "8715:451:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8810, + "nodeType": "Block", + "src": "9732:253:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8788, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8776, + "src": "9747:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8789, + "name": "AFTER_MINT_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8204, + "src": "9765:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9747:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8791, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9746:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9785:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9746:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8809, + "nodeType": "IfStatement", + "src": "9742:237:30", + "trueBody": { + "id": 8808, + "nodeType": "Block", + "src": "9788:191:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8795, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8776, + "src": "9829:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8798, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "9885:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9894:9:30", + "memberName": "afterMint", + "nodeType": "MemberAccess", + "referencedDeclaration": 7458, + "src": "9885:18:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_bytes32_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterMint(address,address,bytes32[] calldata,bytes32) returns (bytes4)" + } + }, + "id": 8800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9904:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "9885:27:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8801, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8778, + "src": "9914:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8802, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8780, + "src": "9922:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8803, + "name": "liquidityConfigs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8783, + "src": "9926:16:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + { + "id": 8804, + "name": "amountsIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8785, + "src": "9944:9:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8796, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "9862:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9866:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "9862:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9862:92:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8794, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "9802:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9802:166:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8807, + "nodeType": "ExpressionStatement", + "src": "9802:166:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8774, + "nodeType": "StructuredDocumentation", + "src": "9172:372:30", + "text": " @dev Helper function to call the afterMint function on the hooks contract, only if the\n AFTER_MINT_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param to The recipient\n @param liquidityConfigs The liquidity configs\n @param amountsIn The amounts in" + }, + "id": 8811, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterMint", + "nameLocation": "9558:9:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8776, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "9585:15:30", + "nodeType": "VariableDeclaration", + "scope": 8811, + "src": "9577:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8775, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9577:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8778, + "mutability": "mutable", + "name": "sender", + "nameLocation": "9618:6:30", + "nodeType": "VariableDeclaration", + "scope": 8811, + "src": "9610:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8777, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9610:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8780, + "mutability": "mutable", + "name": "to", + "nameLocation": "9642:2:30", + "nodeType": "VariableDeclaration", + "scope": 8811, + "src": "9634:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8779, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9634:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8783, + "mutability": "mutable", + "name": "liquidityConfigs", + "nameLocation": "9673:16:30", + "nodeType": "VariableDeclaration", + "scope": 8811, + "src": "9654:35:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 8781, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9654:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 8782, + "nodeType": "ArrayTypeName", + "src": "9654:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8785, + "mutability": "mutable", + "name": "amountsIn", + "nameLocation": "9707:9:30", + "nodeType": "VariableDeclaration", + "scope": 8811, + "src": "9699:17:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8784, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9699:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "9567:155:30" + }, + "returnParameters": { + "id": 8787, + "nodeType": "ParameterList", + "parameters": [], + "src": "9732:0:30" + }, + "scope": 9005, + "src": "9549:436:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8852, + "nodeType": "Block", + "src": "10590:252:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8829, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8814, + "src": "10605:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8830, + "name": "BEFORE_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8215, + "src": "10623:16:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "10605:34:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8832, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10604:36:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10644:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10604:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8851, + "nodeType": "IfStatement", + "src": "10600:236:30", + "trueBody": { + "id": 8850, + "nodeType": "Block", + "src": "10647:189:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8836, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8814, + "src": "10688:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8839, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "10744:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10753:10:30", + "memberName": "beforeBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 7475, + "src": "10744:19:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeBurn(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 8841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10764:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "10744:28:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8842, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8816, + "src": "10774:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8843, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8818, + "src": "10782:4:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8844, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8820, + "src": "10788:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8845, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8823, + "src": "10792:3:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 8846, + "name": "amountsToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8826, + "src": "10797:13:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 8837, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "10721:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10725:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "10721:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10721:90:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8835, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "10661:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10661:164:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8849, + "nodeType": "ExpressionStatement", + "src": "10661:164:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8812, + "nodeType": "StructuredDocumentation", + "src": "9991:386:30", + "text": " @dev Helper function to call the beforeBurn function on the hooks contract, only if the\n BEFORE_BURN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The ids\n @param amountsToBurn The amounts to burn" + }, + "id": 8853, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeBurn", + "nameLocation": "10391:10:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8814, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "10419:15:30", + "nodeType": "VariableDeclaration", + "scope": 8853, + "src": "10411:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8813, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10411:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8816, + "mutability": "mutable", + "name": "sender", + "nameLocation": "10452:6:30", + "nodeType": "VariableDeclaration", + "scope": 8853, + "src": "10444:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10444:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8818, + "mutability": "mutable", + "name": "from", + "nameLocation": "10476:4:30", + "nodeType": "VariableDeclaration", + "scope": 8853, + "src": "10468:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8817, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10468:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8820, + "mutability": "mutable", + "name": "to", + "nameLocation": "10498:2:30", + "nodeType": "VariableDeclaration", + "scope": 8853, + "src": "10490:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10490:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8823, + "mutability": "mutable", + "name": "ids", + "nameLocation": "10529:3:30", + "nodeType": "VariableDeclaration", + "scope": 8853, + "src": "10510:22:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8821, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10510:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8822, + "nodeType": "ArrayTypeName", + "src": "10510:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8826, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "10561:13:30", + "nodeType": "VariableDeclaration", + "scope": 8853, + "src": "10542:32:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10542:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8825, + "nodeType": "ArrayTypeName", + "src": "10542:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "10401:179:30" + }, + "returnParameters": { + "id": 8828, + "nodeType": "ParameterList", + "parameters": [], + "src": "10590:0:30" + }, + "scope": 9005, + "src": "10382:460:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8894, + "nodeType": "Block", + "src": "11444:250:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8871, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8856, + "src": "11459:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8872, + "name": "AFTER_BURN_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8226, + "src": "11477:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "11459:33:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8874, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11458:35:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11497:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11458:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8893, + "nodeType": "IfStatement", + "src": "11454:234:30", + "trueBody": { + "id": 8892, + "nodeType": "Block", + "src": "11500:188:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8878, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8856, + "src": "11541:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8881, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "11597:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11606:9:30", + "memberName": "afterBurn", + "nodeType": "MemberAccess", + "referencedDeclaration": 7492, + "src": "11597:18:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterBurn(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 8883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11616:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "11597:27:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8884, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8858, + "src": "11626:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8885, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8860, + "src": "11634:4:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8886, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8862, + "src": "11640:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8887, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8865, + "src": "11644:3:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 8888, + "name": "amountsToBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8868, + "src": "11649:13:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 8879, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "11574:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11578:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "11574:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11574:89:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8877, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "11514:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11514:163:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8891, + "nodeType": "ExpressionStatement", + "src": "11514:163:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8854, + "nodeType": "StructuredDocumentation", + "src": "10848:384:30", + "text": " @dev Helper function to call the afterBurn function on the hooks contract, only if the\n AFTER_BURN_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The ids\n @param amountsToBurn The amounts to burn" + }, + "id": 8895, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterBurn", + "nameLocation": "11246:9:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8856, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "11273:15:30", + "nodeType": "VariableDeclaration", + "scope": 8895, + "src": "11265:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8855, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11265:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8858, + "mutability": "mutable", + "name": "sender", + "nameLocation": "11306:6:30", + "nodeType": "VariableDeclaration", + "scope": 8895, + "src": "11298:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11298:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8860, + "mutability": "mutable", + "name": "from", + "nameLocation": "11330:4:30", + "nodeType": "VariableDeclaration", + "scope": 8895, + "src": "11322:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8859, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11322:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8862, + "mutability": "mutable", + "name": "to", + "nameLocation": "11352:2:30", + "nodeType": "VariableDeclaration", + "scope": 8895, + "src": "11344:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8861, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11344:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8865, + "mutability": "mutable", + "name": "ids", + "nameLocation": "11383:3:30", + "nodeType": "VariableDeclaration", + "scope": 8895, + "src": "11364:22:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8863, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11364:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8864, + "nodeType": "ArrayTypeName", + "src": "11364:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8868, + "mutability": "mutable", + "name": "amountsToBurn", + "nameLocation": "11415:13:30", + "nodeType": "VariableDeclaration", + "scope": 8895, + "src": "11396:32:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8866, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11396:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8867, + "nodeType": "ArrayTypeName", + "src": "11396:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "11255:179:30" + }, + "returnParameters": { + "id": 8870, + "nodeType": "ParameterList", + "parameters": [], + "src": "11444:0:30" + }, + "scope": 9005, + "src": "11237:457:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8936, + "nodeType": "Block", + "src": "12320:263:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8913, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8898, + "src": "12335:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8914, + "name": "BEFORE_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8237, + "src": "12353:20:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "12335:38:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8916, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12334:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12378:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12334:45:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8935, + "nodeType": "IfStatement", + "src": "12330:247:30", + "trueBody": { + "id": 8934, + "nodeType": "Block", + "src": "12381:196:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8920, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8898, + "src": "12422:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8923, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "12478:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12487:23:30", + "memberName": "beforeBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 7509, + "src": "12478:32:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.beforeBatchTransferFrom(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 8925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12511:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12478:41:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8926, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8900, + "src": "12521:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8927, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8902, + "src": "12529:4:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8928, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8904, + "src": "12535:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8929, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8907, + "src": "12539:3:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 8930, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8910, + "src": "12544:7:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 8921, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "12455:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12459:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "12455:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12455:97:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8919, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "12395:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12395:171:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8933, + "nodeType": "ExpressionStatement", + "src": "12395:171:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8896, + "nodeType": "StructuredDocumentation", + "src": "11700:400:30", + "text": " @dev Helper function to call the beforeTransferFrom function on the hooks contract, only if the\n BEFORE_TRANSFER_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The list of ids\n @param amounts The list of amounts" + }, + "id": 8937, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beforeBatchTransferFrom", + "nameLocation": "12114:23:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8898, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "12155:15:30", + "nodeType": "VariableDeclaration", + "scope": 8937, + "src": "12147:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8897, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12147:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8900, + "mutability": "mutable", + "name": "sender", + "nameLocation": "12188:6:30", + "nodeType": "VariableDeclaration", + "scope": 8937, + "src": "12180:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12180:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8902, + "mutability": "mutable", + "name": "from", + "nameLocation": "12212:4:30", + "nodeType": "VariableDeclaration", + "scope": 8937, + "src": "12204:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8901, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12204:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8904, + "mutability": "mutable", + "name": "to", + "nameLocation": "12234:2:30", + "nodeType": "VariableDeclaration", + "scope": 8937, + "src": "12226:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8903, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12226:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8907, + "mutability": "mutable", + "name": "ids", + "nameLocation": "12265:3:30", + "nodeType": "VariableDeclaration", + "scope": 8937, + "src": "12246:22:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12246:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8906, + "nodeType": "ArrayTypeName", + "src": "12246:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8910, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "12297:7:30", + "nodeType": "VariableDeclaration", + "scope": 8937, + "src": "12278:26:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12278:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8909, + "nodeType": "ArrayTypeName", + "src": "12278:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "12137:173:30" + }, + "returnParameters": { + "id": 8912, + "nodeType": "ParameterList", + "parameters": [], + "src": "12320:0:30" + }, + "scope": 9005, + "src": "12105:478:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8978, + "nodeType": "Block", + "src": "13206:261:30", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8955, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8940, + "src": "13221:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8956, + "name": "AFTER_TRANSFER_FLAG", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8248, + "src": "13239:19:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13221:37:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 8958, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13220:39:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 8959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13263:1:30", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13220:44:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8977, + "nodeType": "IfStatement", + "src": "13216:245:30", + "trueBody": { + "id": 8976, + "nodeType": "Block", + "src": "13266:195:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8962, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8940, + "src": "13307:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 8965, + "name": "ILBHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7527, + "src": "13363:8:30", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILBHooks_$7527_$", + "typeString": "type(contract ILBHooks)" + } + }, + "id": 8966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13372:22:30", + "memberName": "afterBatchTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 7526, + "src": "13363:31:30", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ILBHooks.afterBatchTransferFrom(address,address,address,uint256[] calldata,uint256[] calldata) returns (bytes4)" + } + }, + "id": 8967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13395:8:30", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "13363:40:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 8968, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8942, + "src": "13405:6:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8969, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8944, + "src": "13413:4:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8970, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8946, + "src": "13419:2:30", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8971, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8949, + "src": "13423:3:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 8972, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8952, + "src": "13428:7:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "expression": { + "id": 8963, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "13340:3:30", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13344:18:30", + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "13340:22:30", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 8973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13340:96:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8961, + "name": "_safeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9004, + "src": "13280:9:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory)" + } + }, + "id": 8974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13280:170:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8975, + "nodeType": "ExpressionStatement", + "src": "13280:170:30" + } + ] + } + } + ] + }, + "documentation": { + "id": 8938, + "nodeType": "StructuredDocumentation", + "src": "12589:398:30", + "text": " @dev Helper function to call the afterTransferFrom function on the hooks contract, only if the\n AFTER_TRANSFER_FLAG is set in the hooksParameters\n @param hooksParameters The encoded hooks parameters\n @param sender The sender\n @param from The sender\n @param to The recipient\n @param ids The list of ids\n @param amounts The list of amounts" + }, + "id": 8979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "afterBatchTransferFrom", + "nameLocation": "13001:22:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8953, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8940, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "13041:15:30", + "nodeType": "VariableDeclaration", + "scope": 8979, + "src": "13033:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8939, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13033:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8942, + "mutability": "mutable", + "name": "sender", + "nameLocation": "13074:6:30", + "nodeType": "VariableDeclaration", + "scope": 8979, + "src": "13066:14:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13066:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8944, + "mutability": "mutable", + "name": "from", + "nameLocation": "13098:4:30", + "nodeType": "VariableDeclaration", + "scope": 8979, + "src": "13090:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8943, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13090:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8946, + "mutability": "mutable", + "name": "to", + "nameLocation": "13120:2:30", + "nodeType": "VariableDeclaration", + "scope": 8979, + "src": "13112:10:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8945, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13112:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8949, + "mutability": "mutable", + "name": "ids", + "nameLocation": "13151:3:30", + "nodeType": "VariableDeclaration", + "scope": 8979, + "src": "13132:22:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8947, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13132:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8948, + "nodeType": "ArrayTypeName", + "src": "13132:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8952, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "13183:7:30", + "nodeType": "VariableDeclaration", + "scope": 8979, + "src": "13164:26:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 8950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13164:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8951, + "nodeType": "ArrayTypeName", + "src": "13164:9:30", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "13023:173:30" + }, + "returnParameters": { + "id": 8954, + "nodeType": "ParameterList", + "parameters": [], + "src": "13206:0:30" + }, + "scope": 9005, + "src": "12992:475:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9003, + "nodeType": "Block", + "src": "13831:614:30", + "statements": [ + { + "assignments": [ + 8988 + ], + "declarations": [ + { + "constant": false, + "id": 8988, + "mutability": "mutable", + "name": "success", + "nameLocation": "13846:7:30", + "nodeType": "VariableDeclaration", + "scope": 9003, + "src": "13841:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8987, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13841:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 8989, + "nodeType": "VariableDeclarationStatement", + "src": "13841:12:30" + }, + { + "assignments": [ + 8991 + ], + "declarations": [ + { + "constant": false, + "id": 8991, + "mutability": "mutable", + "name": "hooks", + "nameLocation": "13872:5:30", + "nodeType": "VariableDeclaration", + "scope": 9003, + "src": "13864:13:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8990, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13864:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 8995, + "initialValue": { + "arguments": [ + { + "id": 8993, + "name": "hooksParameters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8982, + "src": "13889:15:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 8992, + "name": "getHooks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8518, + "src": "13880:8:30", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) pure returns (address)" + } + }, + "id": 8994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13880:25:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13864:41:30" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "13925:463:30", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13939:56:30", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13967:3:30", + "type": "", + "value": "224" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "13982:4:30" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13988:4:30", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13978:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "13978:15:30" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13972:5:30" + }, + "nodeType": "YulFunctionCall", + "src": "13972:22:30" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "13963:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "13963:32:30" + }, + "variables": [ + { + "name": "expectedSelector", + "nodeType": "YulTypedName", + "src": "13943:16:30", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14009:71:30", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nodeType": "YulIdentifier", + "src": "14025:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "14025:5:30" + }, + { + "name": "hooks", + "nodeType": "YulIdentifier", + "src": "14032:5:30" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14039:1:30", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "14046:4:30" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14052:4:30", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14042:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "14042:15:30" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "14065:4:30" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14059:5:30" + }, + "nodeType": "YulFunctionCall", + "src": "14059:11:30" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14072:1:30", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14075:4:30", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "call", + "nodeType": "YulIdentifier", + "src": "14020:4:30" + }, + "nodeType": "YulFunctionCall", + "src": "14020:60:30" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14009:7:30" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14152:114:30", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14185:1:30", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14188:1:30", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14191:14:30" + }, + "nodeType": "YulFunctionCall", + "src": "14191:16:30" + } + ], + "functionName": { + "name": "returndatacopy", + "nodeType": "YulIdentifier", + "src": "14170:14:30" + }, + "nodeType": "YulFunctionCall", + "src": "14170:38:30" + }, + "nodeType": "YulExpressionStatement", + "src": "14170:38:30" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14232:1:30", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14235:14:30" + }, + "nodeType": "YulFunctionCall", + "src": "14235:16:30" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14225:6:30" + }, + "nodeType": "YulFunctionCall", + "src": "14225:27:30" + }, + "nodeType": "YulExpressionStatement", + "src": "14225:27:30" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14108:7:30" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14101:6:30" + }, + "nodeType": "YulFunctionCall", + "src": "14101:15:30" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14132:14:30" + }, + "nodeType": "YulFunctionCall", + "src": "14132:16:30" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14125:6:30" + }, + "nodeType": "YulFunctionCall", + "src": "14125:24:30" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14118:6:30" + }, + "nodeType": "YulFunctionCall", + "src": "14118:32:30" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14097:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "14097:54:30" + }, + "nodeType": "YulIf", + "src": "14094:172:30" + }, + { + "nodeType": "YulAssignment", + "src": "14280:98:30", + "value": { + "arguments": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14295:7:30" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "14311:14:30" + }, + "nodeType": "YulFunctionCall", + "src": "14311:16:30" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14329:4:30", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14308:2:30" + }, + "nodeType": "YulFunctionCall", + "src": "14308:26:30" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14343:3:30", + "type": "", + "value": "224" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14354:1:30", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14348:5:30" + }, + "nodeType": "YulFunctionCall", + "src": "14348:8:30" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "14339:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "14339:18:30" + }, + { + "name": "expectedSelector", + "nodeType": "YulIdentifier", + "src": "14359:16:30" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "14336:2:30" + }, + "nodeType": "YulFunctionCall", + "src": "14336:40:30" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14304:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "14304:73:30" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14291:3:30" + }, + "nodeType": "YulFunctionCall", + "src": "14291:87:30" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "14280:7:30" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 8984, + "isOffset": false, + "isSlot": false, + "src": "13982:4:30", + "valueSize": 1 + }, + { + "declaration": 8984, + "isOffset": false, + "isSlot": false, + "src": "14046:4:30", + "valueSize": 1 + }, + { + "declaration": 8984, + "isOffset": false, + "isSlot": false, + "src": "14065:4:30", + "valueSize": 1 + }, + { + "declaration": 8991, + "isOffset": false, + "isSlot": false, + "src": "14032:5:30", + "valueSize": 1 + }, + { + "declaration": 8988, + "isOffset": false, + "isSlot": false, + "src": "14009:7:30", + "valueSize": 1 + }, + { + "declaration": 8988, + "isOffset": false, + "isSlot": false, + "src": "14108:7:30", + "valueSize": 1 + }, + { + "declaration": 8988, + "isOffset": false, + "isSlot": false, + "src": "14280:7:30", + "valueSize": 1 + }, + { + "declaration": 8988, + "isOffset": false, + "isSlot": false, + "src": "14295:7:30", + "valueSize": 1 + } + ], + "id": 8996, + "nodeType": "InlineAssembly", + "src": "13916:472:30" + }, + { + "condition": { + "id": 8998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14402:8:30", + "subExpression": { + "id": 8997, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8988, + "src": "14403:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9002, + "nodeType": "IfStatement", + "src": "14398:40:30", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8999, + "name": "Hooks__CallFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8138, + "src": "14419:17:30", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14419:19:30", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9001, + "nodeType": "RevertStatement", + "src": "14412:26:30" + } + } + ] + }, + "documentation": { + "id": 8980, + "nodeType": "StructuredDocumentation", + "src": "13473:282:30", + "text": " @dev Helper function to call the hooks contract and verify the call was successful\n by matching the expected selector with the returned data\n @param hooksParameters The encoded hooks parameters\n @param data The data to pass to the hooks contract" + }, + "id": 9004, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeCall", + "nameLocation": "13769:9:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8982, + "mutability": "mutable", + "name": "hooksParameters", + "nameLocation": "13787:15:30", + "nodeType": "VariableDeclaration", + "scope": 9004, + "src": "13779:23:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8981, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13779:7:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8984, + "mutability": "mutable", + "name": "data", + "nameLocation": "13817:4:30", + "nodeType": "VariableDeclaration", + "scope": 9004, + "src": "13804:17:30", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8983, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13804:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13778:44:30" + }, + "returnParameters": { + "id": 8986, + "nodeType": "ParameterList", + "parameters": [], + "src": "13831:0:30" + }, + "scope": 9005, + "src": "13760:685:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 9006, + "src": "230:14217:30", + "usedErrors": [ + 8138 + ], + "usedEvents": [] + } + ], + "src": "32:14416:30" + }, + "id": 30 + }, + "src/libraries/ImmutableClone.sol": { + "ast": { + "absolutePath": "src/libraries/ImmutableClone.sol", + "exportedSymbols": { + "ImmutableClone": [ + 9083 + ] + }, + "id": 9084, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9007, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:31" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ImmutableClone", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 9008, + "nodeType": "StructuredDocumentation", + "src": "59:835:31", + "text": " @title Liquidity Book Immutable Clone Library\n @notice Minimal immutable proxy library.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)\n @author Minimal proxy by 0age (https://github.com/0age)\n @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie\n (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\n @dev Minimal proxy:\n Although the sw0nt pattern saves 5 gas over the erc-1167 pattern during runtime,\n it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern,\n which saves 4 gas over the erc-1167 pattern during runtime, and has the smallest bytecode.\n @dev Clones with immutable args (CWIA):\n The implementation of CWIA here doesn't implements a `receive()` as it is not needed for LB." + }, + "fullyImplemented": true, + "id": 9083, + "linearizedBaseContracts": [ + 9083 + ], + "name": "ImmutableClone", + "nameLocation": "903:14:31", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "30116425", + "id": 9010, + "name": "DeploymentFailed", + "nameLocation": "930:16:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9009, + "nodeType": "ParameterList", + "parameters": [], + "src": "946:2:31" + }, + "src": "924:25:31" + }, + { + "errorSelector": "c8c78139", + "id": 9012, + "name": "PackedDataTooBig", + "nameLocation": "960:16:31", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9011, + "nodeType": "ParameterList", + "parameters": [], + "src": "976:2:31" + }, + "src": "954:25:31" + }, + { + "body": { + "id": 9025, + "nodeType": "Block", + "src": "1403:9384:31", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1422:9359:31", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1524:38:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1550:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1556:4:31", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1546:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "1546:15:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1540:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "1540:22:31" + }, + "variables": [ + { + "name": "mBefore2", + "nodeType": "YulTypedName", + "src": "1528:8:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1575:38:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1601:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1607:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1597:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "1597:15:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1591:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "1591:22:31" + }, + "variables": [ + { + "name": "mBefore1", + "nodeType": "YulTypedName", + "src": "1579:8:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1626:29:31", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1650:4:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1644:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "1644:11:31" + }, + "variables": [ + { + "name": "dataLength", + "nodeType": "YulTypedName", + "src": "1630:10:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1668:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1691:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1697:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1687:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "1687:15:31" + }, + { + "name": "dataLength", + "nodeType": "YulIdentifier", + "src": "1704:10:31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1683:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "1683:32:31" + }, + "variables": [ + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1672:7:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1728:29:31", + "value": { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1749:7:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1743:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "1743:14:31" + }, + "variables": [ + { + "name": "mAfter1", + "nodeType": "YulTypedName", + "src": "1732:7:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1852:37:31", + "value": { + "arguments": [ + { + "name": "dataLength", + "nodeType": "YulIdentifier", + "src": "1875:10:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1887:1:31", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1871:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "1871:18:31" + }, + "variables": [ + { + "name": "extraLength", + "nodeType": "YulTypedName", + "src": "1856:11:31", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2157:210:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2254:4:31", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2260:10:31", + "type": "", + "value": "0xc8c78139" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2247:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "2247:24:31" + }, + "nodeType": "YulExpressionStatement", + "src": "2247:24:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2342:4:31", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2348:4:31", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2335:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "2335:18:31" + }, + "nodeType": "YulExpressionStatement", + "src": "2335:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "2136:11:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2149:6:31", + "type": "", + "value": "0xffca" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2133:2:31" + }, + "nodeType": "YulFunctionCall", + "src": "2133:23:31" + }, + "nodeType": "YulIf", + "src": "2130:237:31" + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9663:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9669:28:31", + "type": "", + "value": "0x5af43d3d93803e603357fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9656:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "9656:42:31" + }, + "nodeType": "YulExpressionStatement", + "src": "9656:42:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9778:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9784:4:31", + "type": "", + "value": "0x0d" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9774:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "9774:15:31" + }, + { + "name": "implementation", + "nodeType": "YulIdentifier", + "src": "9791:14:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9767:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "9767:39:31" + }, + "nodeType": "YulExpressionStatement", + "src": "9767:39:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9847:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9853:4:31", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9843:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "9843:15:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9904:4:31", + "type": "", + "value": "0xd8" + }, + { + "arguments": [ + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "9914:11:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9927:4:31", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9910:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "9910:22:31" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "9900:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "9900:33:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9962:4:31", + "type": "", + "value": "0x48" + }, + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "9968:11:31" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "9958:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "9958:22:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9982:62:31", + "type": "", + "value": "0x6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d73" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "9955:2:31" + }, + "nodeType": "YulFunctionCall", + "src": "9955:90:31" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "9876:2:31" + }, + "nodeType": "YulFunctionCall", + "src": "9876:187:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9819:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "9819:258:31" + }, + "nodeType": "YulExpressionStatement", + "src": "9819:258:31" + }, + { + "expression": { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10097:7:31" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10110:4:31", + "type": "", + "value": "0xf0" + }, + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "10116:11:31" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "10106:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "10106:22:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10090:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10090:39:31" + }, + "nodeType": "YulExpressionStatement", + "src": "10090:39:31" + }, + { + "nodeType": "YulAssignment", + "src": "10179:69:31", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10199:1:31", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "10206:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10212:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10202:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "10202:15:31" + }, + { + "arguments": [ + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "10223:11:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10236:4:31", + "type": "", + "value": "0x3f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10219:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "10219:22:31" + }, + { + "name": "salt", + "nodeType": "YulIdentifier", + "src": "10243:4:31" + } + ], + "functionName": { + "name": "create2", + "nodeType": "YulIdentifier", + "src": "10191:7:31" + }, + "nodeType": "YulFunctionCall", + "src": "10191:57:31" + }, + "variableNames": [ + { + "name": "instance", + "nodeType": "YulIdentifier", + "src": "10179:8:31" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10328:210:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10425:4:31", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10431:10:31", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10418:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10418:24:31" + }, + "nodeType": "YulExpressionStatement", + "src": "10418:24:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10513:4:31", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10519:4:31", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10506:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10506:18:31" + }, + "nodeType": "YulExpressionStatement", + "src": "10506:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nodeType": "YulIdentifier", + "src": "10318:8:31" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10311:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10311:16:31" + }, + "nodeType": "YulIf", + "src": "10308:230:31" + }, + { + "expression": { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10625:7:31" + }, + { + "name": "mAfter1", + "nodeType": "YulIdentifier", + "src": "10634:7:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10618:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10618:24:31" + }, + "nodeType": "YulExpressionStatement", + "src": "10618:24:31" + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "10662:4:31" + }, + { + "name": "dataLength", + "nodeType": "YulIdentifier", + "src": "10668:10:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10655:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10655:24:31" + }, + "nodeType": "YulExpressionStatement", + "src": "10655:24:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "10703:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10709:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10699:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "10699:15:31" + }, + { + "name": "mBefore1", + "nodeType": "YulIdentifier", + "src": "10716:8:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10692:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10692:33:31" + }, + "nodeType": "YulExpressionStatement", + "src": "10692:33:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "10749:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10755:4:31", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10745:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "10745:15:31" + }, + { + "name": "mBefore2", + "nodeType": "YulIdentifier", + "src": "10762:8:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10738:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "10738:33:31" + }, + "nodeType": "YulExpressionStatement", + "src": "10738:33:31" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "10206:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "10662:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "10703:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "10749:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "1550:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "1601:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "1650:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "1691:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "9663:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "9778:4:31", + "valueSize": 1 + }, + { + "declaration": 9017, + "isOffset": false, + "isSlot": false, + "src": "9847:4:31", + "valueSize": 1 + }, + { + "declaration": 9015, + "isOffset": false, + "isSlot": false, + "src": "9791:14:31", + "valueSize": 1 + }, + { + "declaration": 9022, + "isOffset": false, + "isSlot": false, + "src": "10179:8:31", + "valueSize": 1 + }, + { + "declaration": 9022, + "isOffset": false, + "isSlot": false, + "src": "10318:8:31", + "valueSize": 1 + }, + { + "declaration": 9019, + "isOffset": false, + "isSlot": false, + "src": "10243:4:31", + "valueSize": 1 + } + ], + "id": 9024, + "nodeType": "InlineAssembly", + "src": "1413:9368:31" + } + ] + }, + "documentation": { + "id": 9013, + "nodeType": "StructuredDocumentation", + "src": "985:272:31", + "text": " @dev Deploys a deterministic clone of `implementation` using immutable arguments encoded in `data`, with `salt`\n @param implementation The address of the implementation\n @param data The encoded immutable arguments\n @param salt The salt" + }, + "id": 9026, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "1271:18:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9020, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9015, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1298:14:31", + "nodeType": "VariableDeclaration", + "scope": 9026, + "src": "1290:22:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9014, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1290:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9017, + "mutability": "mutable", + "name": "data", + "nameLocation": "1327:4:31", + "nodeType": "VariableDeclaration", + "scope": 9026, + "src": "1314:17:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9016, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1314:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9019, + "mutability": "mutable", + "name": "salt", + "nameLocation": "1341:4:31", + "nodeType": "VariableDeclaration", + "scope": 9026, + "src": "1333:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9018, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1333:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1289:57:31" + }, + "returnParameters": { + "id": 9023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9022, + "mutability": "mutable", + "name": "instance", + "nameLocation": "1389:8:31", + "nodeType": "VariableDeclaration", + "scope": 9026, + "src": "1381:16:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1381:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1380:18:31" + }, + "scope": 9083, + "src": "1262:9525:31", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9037, + "nodeType": "Block", + "src": "11280:1859:31", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "11299:1834:31", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11401:38:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11427:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11433:4:31", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11423:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "11423:15:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11417:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "11417:22:31" + }, + "variables": [ + { + "name": "mBefore2", + "nodeType": "YulTypedName", + "src": "11405:8:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11452:38:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11478:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11484:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11474:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "11474:15:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11468:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "11468:22:31" + }, + "variables": [ + { + "name": "mBefore1", + "nodeType": "YulTypedName", + "src": "11456:8:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11503:29:31", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11527:4:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11521:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "11521:11:31" + }, + "variables": [ + { + "name": "dataLength", + "nodeType": "YulTypedName", + "src": "11507:10:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11545:47:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "11568:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11574:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11564:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "11564:15:31" + }, + { + "name": "dataLength", + "nodeType": "YulIdentifier", + "src": "11581:10:31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11560:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "11560:32:31" + }, + "variables": [ + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "11549:7:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11605:29:31", + "value": { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11626:7:31" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11620:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "11620:14:31" + }, + "variables": [ + { + "name": "mAfter1", + "nodeType": "YulTypedName", + "src": "11609:7:31", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "11729:37:31", + "value": { + "arguments": [ + { + "name": "dataLength", + "nodeType": "YulIdentifier", + "src": "11752:10:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11764:1:31", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11748:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "11748:18:31" + }, + "variables": [ + { + "name": "extraLength", + "nodeType": "YulTypedName", + "src": "11733:11:31", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12034:210:31", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12131:4:31", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12137:10:31", + "type": "", + "value": "0xc8c78139" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12124:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "12124:24:31" + }, + "nodeType": "YulExpressionStatement", + "src": "12124:24:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12219:4:31", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12225:4:31", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12212:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "12212:18:31" + }, + "nodeType": "YulExpressionStatement", + "src": "12212:18:31" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "12013:11:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12026:6:31", + "type": "", + "value": "0xffca" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "12010:2:31" + }, + "nodeType": "YulFunctionCall", + "src": "12010:23:31" + }, + "nodeType": "YulIf", + "src": "12007:237:31" + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12316:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12322:28:31", + "type": "", + "value": "0x5af43d3d93803e603357fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12309:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "12309:42:31" + }, + "nodeType": "YulExpressionStatement", + "src": "12309:42:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12431:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12437:4:31", + "type": "", + "value": "0x0d" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12427:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12427:15:31" + }, + { + "name": "implementation", + "nodeType": "YulIdentifier", + "src": "12444:14:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12420:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "12420:39:31" + }, + "nodeType": "YulExpressionStatement", + "src": "12420:39:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12500:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12506:4:31", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12496:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12496:15:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12557:4:31", + "type": "", + "value": "0xd8" + }, + { + "arguments": [ + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "12567:11:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12580:4:31", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12563:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12563:22:31" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "12553:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12553:33:31" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12615:4:31", + "type": "", + "value": "0x48" + }, + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "12621:11:31" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "12611:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12611:22:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12635:62:31", + "type": "", + "value": "0x6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d73" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "12608:2:31" + }, + "nodeType": "YulFunctionCall", + "src": "12608:90:31" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "12529:2:31" + }, + "nodeType": "YulFunctionCall", + "src": "12529:187:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12472:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "12472:258:31" + }, + "nodeType": "YulExpressionStatement", + "src": "12472:258:31" + }, + { + "expression": { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12750:7:31" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12763:4:31", + "type": "", + "value": "0xf0" + }, + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "12769:11:31" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "12759:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12759:22:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12743:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "12743:39:31" + }, + "nodeType": "YulExpressionStatement", + "src": "12743:39:31" + }, + { + "nodeType": "YulAssignment", + "src": "12832:58:31", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "12854:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12860:4:31", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12850:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12850:15:31" + }, + { + "arguments": [ + { + "name": "extraLength", + "nodeType": "YulIdentifier", + "src": "12871:11:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12884:4:31", + "type": "", + "value": "0x3f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12867:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "12867:22:31" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "12840:9:31" + }, + "nodeType": "YulFunctionCall", + "src": "12840:50:31" + }, + "variableNames": [ + { + "name": "hash", + "nodeType": "YulIdentifier", + "src": "12832:4:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12977:7:31" + }, + { + "name": "mAfter1", + "nodeType": "YulIdentifier", + "src": "12986:7:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12970:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "12970:24:31" + }, + "nodeType": "YulExpressionStatement", + "src": "12970:24:31" + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "13014:4:31" + }, + { + "name": "dataLength", + "nodeType": "YulIdentifier", + "src": "13020:10:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13007:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "13007:24:31" + }, + "nodeType": "YulExpressionStatement", + "src": "13007:24:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "13055:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13061:4:31", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13051:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "13051:15:31" + }, + { + "name": "mBefore1", + "nodeType": "YulIdentifier", + "src": "13068:8:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13044:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "13044:33:31" + }, + "nodeType": "YulExpressionStatement", + "src": "13044:33:31" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "13101:4:31" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13107:4:31", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13097:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "13097:15:31" + }, + { + "name": "mBefore2", + "nodeType": "YulIdentifier", + "src": "13114:8:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13090:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "13090:33:31" + }, + "nodeType": "YulExpressionStatement", + "src": "13090:33:31" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "11427:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "11478:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "11527:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "11568:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "12316:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "12431:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "12500:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "12854:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "13014:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "13055:4:31", + "valueSize": 1 + }, + { + "declaration": 9031, + "isOffset": false, + "isSlot": false, + "src": "13101:4:31", + "valueSize": 1 + }, + { + "declaration": 9034, + "isOffset": false, + "isSlot": false, + "src": "12832:4:31", + "valueSize": 1 + }, + { + "declaration": 9029, + "isOffset": false, + "isSlot": false, + "src": "12444:14:31", + "valueSize": 1 + } + ], + "id": 9036, + "nodeType": "InlineAssembly", + "src": "11290:1843:31" + } + ] + }, + "documentation": { + "id": 9027, + "nodeType": "StructuredDocumentation", + "src": "10793:380:31", + "text": " @dev Returns the initialization code hash of the clone of `implementation`\n using immutable arguments encoded in `data`.\n Used for mining vanity addresses with create2crunch.\n @param implementation The address of the implementation contract.\n @param data The encoded immutable arguments.\n @return hash The initialization code hash." + }, + "id": 9038, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "11187:12:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9032, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9029, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "11208:14:31", + "nodeType": "VariableDeclaration", + "scope": 9038, + "src": "11200:22:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11200:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9031, + "mutability": "mutable", + "name": "data", + "nameLocation": "11237:4:31", + "nodeType": "VariableDeclaration", + "scope": 9038, + "src": "11224:17:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9030, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11224:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11199:43:31" + }, + "returnParameters": { + "id": 9035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9034, + "mutability": "mutable", + "name": "hash", + "nameLocation": "11274:4:31", + "nodeType": "VariableDeclaration", + "scope": 9038, + "src": "11266:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9033, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11266:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11265:14:31" + }, + "scope": 9083, + "src": "11178:1961:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9067, + "nodeType": "Block", + "src": "13789:137:31", + "statements": [ + { + "assignments": [ + 9053 + ], + "declarations": [ + { + "constant": false, + "id": 9053, + "mutability": "mutable", + "name": "hash", + "nameLocation": "13807:4:31", + "nodeType": "VariableDeclaration", + "scope": 9067, + "src": "13799:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9052, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13799:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 9058, + "initialValue": { + "arguments": [ + { + "id": 9055, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9041, + "src": "13827:14:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 9056, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9043, + "src": "13843:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 9054, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9038, + "src": "13814:12:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 9057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13814:34:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13799:49:31" + }, + { + "expression": { + "id": 9065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9059, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9050, + "src": "13858:9:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9061, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9053, + "src": "13898:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9062, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9045, + "src": "13904:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9063, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9047, + "src": "13910:8:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 9060, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 9068, + 9082 + ], + "referencedDeclaration": 9082, + "src": "13870:27:31", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 9064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13870:49:31", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13858:61:31", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 9066, + "nodeType": "ExpressionStatement", + "src": "13858:61:31" + } + ] + }, + "documentation": { + "id": 9039, + "nodeType": "StructuredDocumentation", + "src": "13145:457:31", + "text": " @dev Returns the address of the deterministic clone of\n `implementation` using immutable arguments encoded in `data`, with `salt`, by `deployer`.\n @param implementation The address of the implementation.\n @param data The immutable arguments of the implementation.\n @param salt The salt used to compute the address.\n @param deployer The address of the deployer.\n @return predicted The predicted address." + }, + "id": 9068, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "13616:27:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9041, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "13652:14:31", + "nodeType": "VariableDeclaration", + "scope": 9068, + "src": "13644:22:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13644:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9043, + "mutability": "mutable", + "name": "data", + "nameLocation": "13681:4:31", + "nodeType": "VariableDeclaration", + "scope": 9068, + "src": "13668:17:31", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 9042, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13668:5:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9045, + "mutability": "mutable", + "name": "salt", + "nameLocation": "13695:4:31", + "nodeType": "VariableDeclaration", + "scope": 9068, + "src": "13687:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9044, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13687:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9047, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "13709:8:31", + "nodeType": "VariableDeclaration", + "scope": 9068, + "src": "13701:16:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13701:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13643:75:31" + }, + "returnParameters": { + "id": 9051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9050, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "13774:9:31", + "nodeType": "VariableDeclaration", + "scope": 9068, + "src": "13766:17:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13766:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13765:19:31" + }, + "scope": 9083, + "src": "13607:319:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9081, + "nodeType": "Block", + "src": "14441:586:31", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "14503:518:31", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14605:26:31", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14626:4:31", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "14620:5:31" + }, + "nodeType": "YulFunctionCall", + "src": "14620:11:31" + }, + "variables": [ + { + "name": "mBefore", + "nodeType": "YulTypedName", + "src": "14609:7:31", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14705:4:31", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14711:4:31", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nodeType": "YulIdentifier", + "src": "14697:7:31" + }, + "nodeType": "YulFunctionCall", + "src": "14697:19:31" + }, + "nodeType": "YulExpressionStatement", + "src": "14697:19:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14757:4:31", + "type": "", + "value": "0x35" + }, + { + "name": "hash", + "nodeType": "YulIdentifier", + "src": "14763:4:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14750:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "14750:18:31" + }, + "nodeType": "YulExpressionStatement", + "src": "14750:18:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14788:4:31", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14798:2:31", + "type": "", + "value": "96" + }, + { + "name": "deployer", + "nodeType": "YulIdentifier", + "src": "14802:8:31" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "14794:3:31" + }, + "nodeType": "YulFunctionCall", + "src": "14794:17:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14781:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "14781:31:31" + }, + "nodeType": "YulExpressionStatement", + "src": "14781:31:31" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14832:4:31", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nodeType": "YulIdentifier", + "src": "14838:4:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14825:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "14825:18:31" + }, + "nodeType": "YulExpressionStatement", + "src": "14825:18:31" + }, + { + "nodeType": "YulAssignment", + "src": "14856:34:31", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14879:4:31", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14885:4:31", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "14869:9:31" + }, + "nodeType": "YulFunctionCall", + "src": "14869:21:31" + }, + "variableNames": [ + { + "name": "predicted", + "nodeType": "YulIdentifier", + "src": "14856:9:31" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14997:4:31", + "type": "", + "value": "0x35" + }, + { + "name": "mBefore", + "nodeType": "YulIdentifier", + "src": "15003:7:31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14990:6:31" + }, + "nodeType": "YulFunctionCall", + "src": "14990:21:31" + }, + "nodeType": "YulExpressionStatement", + "src": "14990:21:31" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 9075, + "isOffset": false, + "isSlot": false, + "src": "14802:8:31", + "valueSize": 1 + }, + { + "declaration": 9071, + "isOffset": false, + "isSlot": false, + "src": "14763:4:31", + "valueSize": 1 + }, + { + "declaration": 9078, + "isOffset": false, + "isSlot": false, + "src": "14856:9:31", + "valueSize": 1 + }, + { + "declaration": 9073, + "isOffset": false, + "isSlot": false, + "src": "14838:4:31", + "valueSize": 1 + } + ], + "id": 9080, + "nodeType": "InlineAssembly", + "src": "14494:527:31" + } + ] + }, + "documentation": { + "id": 9069, + "nodeType": "StructuredDocumentation", + "src": "13932:351:31", + "text": " @dev Returns the address when a contract with initialization code hash,\n `hash`, is deployed with `salt`, by `deployer`.\n @param hash The initialization code hash.\n @param salt The salt used to compute the address.\n @param deployer The address of the deployer.\n @return predicted The predicted address." + }, + "id": 9082, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "14297:27:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9071, + "mutability": "mutable", + "name": "hash", + "nameLocation": "14333:4:31", + "nodeType": "VariableDeclaration", + "scope": 9082, + "src": "14325:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9070, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14325:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9073, + "mutability": "mutable", + "name": "salt", + "nameLocation": "14347:4:31", + "nodeType": "VariableDeclaration", + "scope": 9082, + "src": "14339:12:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14339:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9075, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "14361:8:31", + "nodeType": "VariableDeclaration", + "scope": 9082, + "src": "14353:16:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14353:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14324:46:31" + }, + "returnParameters": { + "id": 9079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9078, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "14426:9:31", + "nodeType": "VariableDeclaration", + "scope": 9082, + "src": "14418:17:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14418:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14417:19:31" + }, + "scope": 9083, + "src": "14288:739:31", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 9084, + "src": "895:14134:31", + "usedErrors": [ + 9010, + 9012 + ], + "usedEvents": [] + } + ], + "src": "33:14997:31" + }, + "id": 31 + }, + "src/libraries/PairParameterHelper.sol": { + "ast": { + "absolutePath": "src/libraries/PairParameterHelper.sol", + "exportedSymbols": { + "Constants": [ + 8131 + ], + "Encoded": [ + 10496 + ], + "PairParameterHelper": [ + 9940 + ], + "SafeCast": [ + 11244 + ] + }, + "id": 9941, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9085, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:32" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "./Constants.sol", + "id": 9087, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9941, + "sourceUnit": 8132, + "src": "59:42:32", + "symbolAliases": [ + { + "foreign": { + "id": 9086, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "67:9:32", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/SafeCast.sol", + "file": "./math/SafeCast.sol", + "id": 9089, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9941, + "sourceUnit": 11245, + "src": "102:45:32", + "symbolAliases": [ + { + "foreign": { + "id": 9088, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11244, + "src": "110:8:32", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Encoded.sol", + "file": "./math/Encoded.sol", + "id": 9091, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9941, + "sourceUnit": 10497, + "src": "148:43:32", + "symbolAliases": [ + { + "foreign": { + "id": 9090, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "156:7:32", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "PairParameterHelper", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 9092, + "nodeType": "StructuredDocumentation", + "src": "193:770:32", + "text": " @title Liquidity Book Pair Parameter Helper Library\n @dev This library contains functions to get and set parameters of a pair\n The parameters are stored in a single bytes32 variable in the following format:\n [0 - 16[: base factor (16 bits)\n [16 - 28[: filter period (12 bits)\n [28 - 40[: decay period (12 bits)\n [40 - 54[: reduction factor (14 bits)\n [54 - 78[: variable fee control (24 bits)\n [78 - 92[: protocol share (14 bits)\n [92 - 112[: max volatility accumulator (20 bits)\n [112 - 132[: volatility accumulator (20 bits)\n [132 - 152[: volatility reference (20 bits)\n [152 - 176[: index reference (24 bits)\n [176 - 216[: time of last update (40 bits)\n [216 - 232[: oracle index (16 bits)\n [232 - 256[: active index (24 bits)" + }, + "fullyImplemented": true, + "id": 9940, + "linearizedBaseContracts": [ + 9940 + ], + "name": "PairParameterHelper", + "nameLocation": "972:19:32", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 9095, + "libraryName": { + "id": 9093, + "name": "SafeCast", + "nameLocations": [ + "1004:8:32" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11244, + "src": "1004:8:32" + }, + "nodeType": "UsingForDirective", + "src": "998:27:32", + "typeName": { + "id": 9094, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1017:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 9098, + "libraryName": { + "id": 9096, + "name": "Encoded", + "nameLocations": [ + "1036:7:32" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10496, + "src": "1036:7:32" + }, + "nodeType": "UsingForDirective", + "src": "1030:26:32", + "typeName": { + "id": 9097, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1048:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "errorSelector": "1c07203f", + "id": 9100, + "name": "PairParametersHelper__InvalidParameter", + "nameLocation": "1068:38:32", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 9099, + "nodeType": "ParameterList", + "parameters": [], + "src": "1106:2:32" + }, + "src": "1062:47:32" + }, + { + "constant": true, + "id": 9103, + "mutability": "constant", + "name": "OFFSET_BASE_FACTOR", + "nameLocation": "1141:18:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1115:48:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1115:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 9102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1162:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9106, + "mutability": "constant", + "name": "OFFSET_FILTER_PERIOD", + "nameLocation": "1195:20:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1169:51:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1169:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3136", + "id": 9105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1218:2:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9109, + "mutability": "constant", + "name": "OFFSET_DECAY_PERIOD", + "nameLocation": "1252:19:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1226:50:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1226:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3238", + "id": 9108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1274:2:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_28_by_1", + "typeString": "int_const 28" + }, + "value": "28" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9112, + "mutability": "constant", + "name": "OFFSET_REDUCTION_FACTOR", + "nameLocation": "1308:23:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1282:54:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1282:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3430", + "id": 9111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1334:2:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9115, + "mutability": "constant", + "name": "OFFSET_VAR_FEE_CONTROL", + "nameLocation": "1368:22:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1342:53:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1342:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3534", + "id": 9114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1393:2:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_54_by_1", + "typeString": "int_const 54" + }, + "value": "54" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9118, + "mutability": "constant", + "name": "OFFSET_PROTOCOL_SHARE", + "nameLocation": "1427:21:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1401:52:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1401:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3738", + "id": 9117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1451:2:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_78_by_1", + "typeString": "int_const 78" + }, + "value": "78" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9121, + "mutability": "constant", + "name": "OFFSET_MAX_VOL_ACC", + "nameLocation": "1485:18:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1459:49:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1459:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3932", + "id": 9120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1506:2:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_92_by_1", + "typeString": "int_const 92" + }, + "value": "92" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9124, + "mutability": "constant", + "name": "OFFSET_VOL_ACC", + "nameLocation": "1540:14:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1514:46:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1514:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313132", + "id": 9123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1557:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9127, + "mutability": "constant", + "name": "OFFSET_VOL_REF", + "nameLocation": "1592:14:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1566:46:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1566:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313332", + "id": 9126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1609:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_132_by_1", + "typeString": "int_const 132" + }, + "value": "132" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9130, + "mutability": "constant", + "name": "OFFSET_ID_REF", + "nameLocation": "1644:13:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1618:45:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1618:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313532", + "id": 9129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1660:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + "value": "152" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9133, + "mutability": "constant", + "name": "OFFSET_TIME_LAST_UPDATE", + "nameLocation": "1695:23:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1669:55:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1669:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313736", + "id": 9132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1721:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + "value": "176" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9136, + "mutability": "constant", + "name": "OFFSET_ORACLE_ID", + "nameLocation": "1756:16:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1730:48:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9134, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1730:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "323136", + "id": 9135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1775:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + "value": "216" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9139, + "mutability": "constant", + "name": "OFFSET_ACTIVE_ID", + "nameLocation": "1810:16:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1784:48:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1784:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "323332", + "id": 9138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1829:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + "value": "232" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 9142, + "mutability": "constant", + "name": "MASK_STATIC_PARAMETER", + "nameLocation": "1865:21:32", + "nodeType": "VariableDeclaration", + "scope": 9940, + "src": "1839:80:32", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9140, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1839:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666666666666666666666666666666666666666666666666666", + "id": 9141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1889:30:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_5192296858534827628530496329220095_by_1", + "typeString": "int_const 5192...(26 digits omitted)...0095" + }, + "value": "0xffffffffffffffffffffffffffff" + }, + "visibility": "internal" + }, + { + "body": { + "id": 9157, + "nodeType": "Block", + "src": "2267:69:32", + "statements": [ + { + "expression": { + "id": 9155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9150, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9148, + "src": "2277:10:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9153, + "name": "OFFSET_BASE_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9103, + "src": "2310:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9151, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9145, + "src": "2290:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2297:12:32", + "memberName": "decodeUint16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10435, + "src": "2290:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2290:39:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "2277:52:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9156, + "nodeType": "ExpressionStatement", + "src": "2277:52:32" + } + ] + }, + "documentation": { + "id": 9143, + "nodeType": "StructuredDocumentation", + "src": "1926:255:32", + "text": " @dev Get the base factor from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 16[: base factor (16 bits)\n [16 - 256[: other parameters\n @return baseFactor The base factor" + }, + "id": 9158, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBaseFactor", + "nameLocation": "2195:13:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9145, + "mutability": "mutable", + "name": "params", + "nameLocation": "2217:6:32", + "nodeType": "VariableDeclaration", + "scope": 9158, + "src": "2209:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9144, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2209:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2208:16:32" + }, + "returnParameters": { + "id": 9149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9148, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "2255:10:32", + "nodeType": "VariableDeclaration", + "scope": 9158, + "src": "2248:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9147, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2248:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2247:19:32" + }, + "scope": 9940, + "src": "2186:150:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9173, + "nodeType": "Block", + "src": "2730:73:32", + "statements": [ + { + "expression": { + "id": 9171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9166, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9164, + "src": "2740:12:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9169, + "name": "OFFSET_FILTER_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9106, + "src": "2775:20:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9167, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9161, + "src": "2755:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2762:12:32", + "memberName": "decodeUint12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10411, + "src": "2755:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2755:41:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "2740:56:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9172, + "nodeType": "ExpressionStatement", + "src": "2740:56:32" + } + ] + }, + "documentation": { + "id": 9159, + "nodeType": "StructuredDocumentation", + "src": "2342:298:32", + "text": " @dev Get the filter period from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 16[: other parameters\n [16 - 28[: filter period (12 bits)\n [28 - 256[: other parameters\n @return filterPeriod The filter period" + }, + "id": 9174, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getFilterPeriod", + "nameLocation": "2654:15:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9161, + "mutability": "mutable", + "name": "params", + "nameLocation": "2678:6:32", + "nodeType": "VariableDeclaration", + "scope": 9174, + "src": "2670:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9160, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2670:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2669:16:32" + }, + "returnParameters": { + "id": 9165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9164, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "2716:12:32", + "nodeType": "VariableDeclaration", + "scope": 9174, + "src": "2709:19:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9163, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2709:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2708:21:32" + }, + "scope": 9940, + "src": "2645:158:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9189, + "nodeType": "Block", + "src": "3191:71:32", + "statements": [ + { + "expression": { + "id": 9187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9182, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9180, + "src": "3201:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9185, + "name": "OFFSET_DECAY_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9109, + "src": "3235:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9183, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9177, + "src": "3215:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3222:12:32", + "memberName": "decodeUint12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10411, + "src": "3215:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3215:40:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "3201:54:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9188, + "nodeType": "ExpressionStatement", + "src": "3201:54:32" + } + ] + }, + "documentation": { + "id": 9175, + "nodeType": "StructuredDocumentation", + "src": "2809:294:32", + "text": " @dev Get the decay period from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 28[: other parameters\n [28 - 40[: decay period (12 bits)\n [40 - 256[: other parameters\n @return decayPeriod The decay period" + }, + "id": 9190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDecayPeriod", + "nameLocation": "3117:14:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9177, + "mutability": "mutable", + "name": "params", + "nameLocation": "3140:6:32", + "nodeType": "VariableDeclaration", + "scope": 9190, + "src": "3132:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9176, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3132:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3131:16:32" + }, + "returnParameters": { + "id": 9181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9180, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "3178:11:32", + "nodeType": "VariableDeclaration", + "scope": 9190, + "src": "3171:18:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9179, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3171:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3170:20:32" + }, + "scope": 9940, + "src": "3108:154:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9205, + "nodeType": "Block", + "src": "3674:79:32", + "statements": [ + { + "expression": { + "id": 9203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9198, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9196, + "src": "3684:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9201, + "name": "OFFSET_REDUCTION_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9112, + "src": "3722:23:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9199, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9193, + "src": "3702:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3709:12:32", + "memberName": "decodeUint14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10423, + "src": "3702:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3702:44:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "3684:62:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9204, + "nodeType": "ExpressionStatement", + "src": "3684:62:32" + } + ] + }, + "documentation": { + "id": 9191, + "nodeType": "StructuredDocumentation", + "src": "3268:310:32", + "text": " @dev Get the reduction factor from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 40[: other parameters\n [40 - 54[: reduction factor (14 bits)\n [54 - 256[: other parameters\n @return reductionFactor The reduction factor" + }, + "id": 9206, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReductionFactor", + "nameLocation": "3592:18:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9193, + "mutability": "mutable", + "name": "params", + "nameLocation": "3619:6:32", + "nodeType": "VariableDeclaration", + "scope": 9206, + "src": "3611:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3611:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3610:16:32" + }, + "returnParameters": { + "id": 9197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9196, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "3657:15:32", + "nodeType": "VariableDeclaration", + "scope": 9206, + "src": "3650:22:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9195, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3650:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3649:24:32" + }, + "scope": 9940, + "src": "3583:170:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9221, + "nodeType": "Block", + "src": "4186:81:32", + "statements": [ + { + "expression": { + "id": 9219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9214, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9212, + "src": "4196:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9217, + "name": "OFFSET_VAR_FEE_CONTROL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9115, + "src": "4237:22:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9215, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9209, + "src": "4217:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4224:12:32", + "memberName": "decodeUint24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10459, + "src": "4217:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4217:43:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "4196:64:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9220, + "nodeType": "ExpressionStatement", + "src": "4196:64:32" + } + ] + }, + "documentation": { + "id": 9207, + "nodeType": "StructuredDocumentation", + "src": "3759:325:32", + "text": " @dev Get the variable fee control from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 54[: other parameters\n [54 - 78[: variable fee control (24 bits)\n [78 - 256[: other parameters\n @return variableFeeControl The variable fee control" + }, + "id": 9222, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVariableFeeControl", + "nameLocation": "4098:21:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9209, + "mutability": "mutable", + "name": "params", + "nameLocation": "4128:6:32", + "nodeType": "VariableDeclaration", + "scope": 9222, + "src": "4120:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9208, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4120:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4119:16:32" + }, + "returnParameters": { + "id": 9213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9212, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "4166:18:32", + "nodeType": "VariableDeclaration", + "scope": 9222, + "src": "4159:25:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9211, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "4159:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "4158:27:32" + }, + "scope": 9940, + "src": "4089:178:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9237, + "nodeType": "Block", + "src": "4667:75:32", + "statements": [ + { + "expression": { + "id": 9235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9230, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9228, + "src": "4677:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9233, + "name": "OFFSET_PROTOCOL_SHARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9118, + "src": "4713:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9231, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9225, + "src": "4693:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4700:12:32", + "memberName": "decodeUint14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10423, + "src": "4693:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4693:42:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "4677:58:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9236, + "nodeType": "ExpressionStatement", + "src": "4677:58:32" + } + ] + }, + "documentation": { + "id": 9223, + "nodeType": "StructuredDocumentation", + "src": "4273:302:32", + "text": " @dev Get the protocol share from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 78[: other parameters\n [78 - 92[: protocol share (14 bits)\n [92 - 256[: other parameters\n @return protocolShare The protocol share" + }, + "id": 9238, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getProtocolShare", + "nameLocation": "4589:16:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9225, + "mutability": "mutable", + "name": "params", + "nameLocation": "4614:6:32", + "nodeType": "VariableDeclaration", + "scope": 9238, + "src": "4606:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9224, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4606:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4605:16:32" + }, + "returnParameters": { + "id": 9229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9228, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "4652:13:32", + "nodeType": "VariableDeclaration", + "scope": 9238, + "src": "4645:20:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9227, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4645:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4644:22:32" + }, + "scope": 9940, + "src": "4580:162:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9253, + "nodeType": "Block", + "src": "5213:83:32", + "statements": [ + { + "expression": { + "id": 9251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9246, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9244, + "src": "5223:24:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9249, + "name": "OFFSET_MAX_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9121, + "src": "5270:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9247, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9241, + "src": "5250:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5257:12:32", + "memberName": "decodeUint20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10447, + "src": "5250:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5250:39:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "5223:66:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9252, + "nodeType": "ExpressionStatement", + "src": "5223:66:32" + } + ] + }, + "documentation": { + "id": 9239, + "nodeType": "StructuredDocumentation", + "src": "4748:351:32", + "text": " @dev Get the max volatility accumulator from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 92[: other parameters\n [92 - 112[: max volatility accumulator (20 bits)\n [112 - 256[: other parameters\n @return maxVolatilityAccumulator The max volatility accumulator" + }, + "id": 9254, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMaxVolatilityAccumulator", + "nameLocation": "5113:27:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9241, + "mutability": "mutable", + "name": "params", + "nameLocation": "5149:6:32", + "nodeType": "VariableDeclaration", + "scope": 9254, + "src": "5141:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9240, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5141:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5140:16:32" + }, + "returnParameters": { + "id": 9245, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9244, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "5187:24:32", + "nodeType": "VariableDeclaration", + "scope": 9254, + "src": "5180:31:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9243, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5180:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5179:33:32" + }, + "scope": 9940, + "src": "5104:192:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9269, + "nodeType": "Block", + "src": "5748:76:32", + "statements": [ + { + "expression": { + "id": 9267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9262, + "name": "volatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9260, + "src": "5758:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9265, + "name": "OFFSET_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9124, + "src": "5802:14:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9263, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9257, + "src": "5782:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5789:12:32", + "memberName": "decodeUint20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10447, + "src": "5782:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5782:35:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "5758:59:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9268, + "nodeType": "ExpressionStatement", + "src": "5758:59:32" + } + ] + }, + "documentation": { + "id": 9255, + "nodeType": "StructuredDocumentation", + "src": "5302:338:32", + "text": " @dev Get the volatility accumulator from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 112[: other parameters\n [112 - 132[: volatility accumulator (20 bits)\n [132 - 256[: other parameters\n @return volatilityAccumulator The volatility accumulator" + }, + "id": 9270, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVolatilityAccumulator", + "nameLocation": "5654:24:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9257, + "mutability": "mutable", + "name": "params", + "nameLocation": "5687:6:32", + "nodeType": "VariableDeclaration", + "scope": 9270, + "src": "5679:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9256, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5679:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5678:16:32" + }, + "returnParameters": { + "id": 9261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9260, + "mutability": "mutable", + "name": "volatilityAccumulator", + "nameLocation": "5725:21:32", + "nodeType": "VariableDeclaration", + "scope": 9270, + "src": "5718:28:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9259, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5718:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5717:30:32" + }, + "scope": 9940, + "src": "5645:179:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9285, + "nodeType": "Block", + "src": "6264:74:32", + "statements": [ + { + "expression": { + "id": 9283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9278, + "name": "volatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9276, + "src": "6274:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9281, + "name": "OFFSET_VOL_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9127, + "src": "6316:14:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9279, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9273, + "src": "6296:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6303:12:32", + "memberName": "decodeUint20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10447, + "src": "6296:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6296:35:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "6274:57:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9284, + "nodeType": "ExpressionStatement", + "src": "6274:57:32" + } + ] + }, + "documentation": { + "id": 9271, + "nodeType": "StructuredDocumentation", + "src": "5830:330:32", + "text": " @dev Get the volatility reference from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 132[: other parameters\n [132 - 152[: volatility reference (20 bits)\n [152 - 256[: other parameters\n @return volatilityReference The volatility reference" + }, + "id": 9286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVolatilityReference", + "nameLocation": "6174:22:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9273, + "mutability": "mutable", + "name": "params", + "nameLocation": "6205:6:32", + "nodeType": "VariableDeclaration", + "scope": 9286, + "src": "6197:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9272, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6197:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6196:16:32" + }, + "returnParameters": { + "id": 9277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9276, + "mutability": "mutable", + "name": "volatilityReference", + "nameLocation": "6243:19:32", + "nodeType": "VariableDeclaration", + "scope": 9286, + "src": "6236:26:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9275, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6236:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "6235:28:32" + }, + "scope": 9940, + "src": "6165:173:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9301, + "nodeType": "Block", + "src": "6739:65:32", + "statements": [ + { + "expression": { + "id": 9299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9294, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9292, + "src": "6749:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9297, + "name": "OFFSET_ID_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9130, + "src": "6783:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9295, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9289, + "src": "6763:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6770:12:32", + "memberName": "decodeUint24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10459, + "src": "6763:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6763:34:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "6749:48:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9300, + "nodeType": "ExpressionStatement", + "src": "6749:48:32" + } + ] + }, + "documentation": { + "id": 9287, + "nodeType": "StructuredDocumentation", + "src": "6344:307:32", + "text": " @dev Get the index reference from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 152[: other parameters\n [152 - 176[: index reference (24 bits)\n [176 - 256[: other parameters\n @return idReference The index reference" + }, + "id": 9302, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIdReference", + "nameLocation": "6665:14:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9289, + "mutability": "mutable", + "name": "params", + "nameLocation": "6688:6:32", + "nodeType": "VariableDeclaration", + "scope": 9302, + "src": "6680:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9288, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6680:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6679:16:32" + }, + "returnParameters": { + "id": 9293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9292, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "6726:11:32", + "nodeType": "VariableDeclaration", + "scope": 9302, + "src": "6719:18:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9291, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "6719:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "6718:20:32" + }, + "scope": 9940, + "src": "6656:148:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9317, + "nodeType": "Block", + "src": "7232:80:32", + "statements": [ + { + "expression": { + "id": 9315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9310, + "name": "timeOflastUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9308, + "src": "7242:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9313, + "name": "OFFSET_TIME_LAST_UPDATE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9133, + "src": "7281:23:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9311, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9305, + "src": "7261:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7268:12:32", + "memberName": "decodeUint40", + "nodeType": "MemberAccess", + "referencedDeclaration": 10471, + "src": "7261:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint40_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint40)" + } + }, + "id": 9314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7261:44:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "7242:63:32", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "id": 9316, + "nodeType": "ExpressionStatement", + "src": "7242:63:32" + } + ] + }, + "documentation": { + "id": 9303, + "nodeType": "StructuredDocumentation", + "src": "6810:324:32", + "text": " @dev Get the time of last update from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 176[: other parameters\n [176 - 216[: time of last update (40 bits)\n [216 - 256[: other parameters\n @return timeOflastUpdate The time of last update" + }, + "id": 9318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTimeOfLastUpdate", + "nameLocation": "7148:19:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9305, + "mutability": "mutable", + "name": "params", + "nameLocation": "7176:6:32", + "nodeType": "VariableDeclaration", + "scope": 9318, + "src": "7168:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9304, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7168:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7167:16:32" + }, + "returnParameters": { + "id": 9309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9308, + "mutability": "mutable", + "name": "timeOflastUpdate", + "nameLocation": "7214:16:32", + "nodeType": "VariableDeclaration", + "scope": 9318, + "src": "7207:23:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 9307, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "7207:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "7206:25:32" + }, + "scope": 9940, + "src": "7139:173:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9333, + "nodeType": "Block", + "src": "7686:65:32", + "statements": [ + { + "expression": { + "id": 9331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9326, + "name": "oracleId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9324, + "src": "7696:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9329, + "name": "OFFSET_ORACLE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9136, + "src": "7727:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9327, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9321, + "src": "7707:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7714:12:32", + "memberName": "decodeUint16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10435, + "src": "7707:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint16_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint16)" + } + }, + "id": 9330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7707:37:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "7696:48:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 9332, + "nodeType": "ExpressionStatement", + "src": "7696:48:32" + } + ] + }, + "documentation": { + "id": 9319, + "nodeType": "StructuredDocumentation", + "src": "7318:286:32", + "text": " @dev Get the oracle id from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 216[: other parameters\n [216 - 232[: oracle id (16 bits)\n [232 - 256[: other parameters\n @return oracleId The oracle id" + }, + "id": 9334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOracleId", + "nameLocation": "7618:11:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9321, + "mutability": "mutable", + "name": "params", + "nameLocation": "7638:6:32", + "nodeType": "VariableDeclaration", + "scope": 9334, + "src": "7630:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9320, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7630:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7629:16:32" + }, + "returnParameters": { + "id": 9325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9324, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "7676:8:32", + "nodeType": "VariableDeclaration", + "scope": 9334, + "src": "7669:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9323, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "7669:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "7668:17:32" + }, + "scope": 9940, + "src": "7609:142:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9349, + "nodeType": "Block", + "src": "8097:65:32", + "statements": [ + { + "expression": { + "id": 9347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9342, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9340, + "src": "8107:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9345, + "name": "OFFSET_ACTIVE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9139, + "src": "8138:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9343, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9337, + "src": "8118:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8125:12:32", + "memberName": "decodeUint24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10459, + "src": "8118:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_uint24_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (uint24)" + } + }, + "id": 9346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8118:37:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8107:48:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9348, + "nodeType": "ExpressionStatement", + "src": "8107:48:32" + } + ] + }, + "documentation": { + "id": 9335, + "nodeType": "StructuredDocumentation", + "src": "7757:258:32", + "text": " @dev Get the active index from the encoded pair parameters\n @param params The encoded pair parameters, as follows:\n [0 - 232[: other parameters\n [232 - 256[: active index (24 bits)\n @return activeId The active index" + }, + "id": 9350, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getActiveId", + "nameLocation": "8029:11:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9337, + "mutability": "mutable", + "name": "params", + "nameLocation": "8049:6:32", + "nodeType": "VariableDeclaration", + "scope": 9350, + "src": "8041:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9336, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8041:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8040:16:32" + }, + "returnParameters": { + "id": 9341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9340, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "8087:8:32", + "nodeType": "VariableDeclaration", + "scope": 9350, + "src": "8080:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9339, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8080:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "8079:17:32" + }, + "scope": 9940, + "src": "8020:142:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9378, + "nodeType": "Block", + "src": "8568:144:32", + "statements": [ + { + "assignments": [ + 9361 + ], + "declarations": [ + { + "constant": false, + "id": 9361, + "mutability": "mutable", + "name": "id", + "nameLocation": "8585:2:32", + "nodeType": "VariableDeclaration", + "scope": 9378, + "src": "8578:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9360, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8578:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "id": 9365, + "initialValue": { + "arguments": [ + { + "id": 9363, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9353, + "src": "8602:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9362, + "name": "getActiveId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9350, + "src": "8590:11:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8590:19:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8578:31:32" + }, + { + "id": 9377, + "nodeType": "UncheckedBlock", + "src": "8619:87:32", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 9368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9366, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9355, + "src": "8650:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9367, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "8661:2:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8650:13:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 9374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9372, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "8682:2:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9373, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9355, + "src": "8687:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8682:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "8650:45:32", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 9371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9369, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9355, + "src": "8666:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9370, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "8677:2:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "8666:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "functionReturnParameters": 9359, + "id": 9376, + "nodeType": "Return", + "src": "8643:52:32" + } + ] + } + ] + }, + "documentation": { + "id": 9351, + "nodeType": "StructuredDocumentation", + "src": "8168:311:32", + "text": " @dev Get the delta between the current active index and the cached active index\n @param params The encoded pair parameters, as follows:\n [0 - 232[: other parameters\n [232 - 256[: active index (24 bits)\n @param activeId The current active index\n @return The delta" + }, + "id": 9379, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDeltaId", + "nameLocation": "8493:10:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9353, + "mutability": "mutable", + "name": "params", + "nameLocation": "8512:6:32", + "nodeType": "VariableDeclaration", + "scope": 9379, + "src": "8504:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9352, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8504:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9355, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "8527:8:32", + "nodeType": "VariableDeclaration", + "scope": 9379, + "src": "8520:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9354, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8520:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "8503:33:32" + }, + "returnParameters": { + "id": 9359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9358, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9379, + "src": "8560:6:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9357, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "8560:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "8559:8:32" + }, + "scope": 9940, + "src": "8484:228:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9401, + "nodeType": "Block", + "src": "9010:203:32", + "statements": [ + { + "id": 9400, + "nodeType": "UncheckedBlock", + "src": "9020:187:32", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 9392, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9382, + "src": "9171:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9391, + "name": "getBaseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9158, + "src": "9157:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 9393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9157:21:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 9390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9149:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9149:7:32", + "typeDescriptions": {} + } + }, + "id": 9394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9149:30:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9395, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9384, + "src": "9182:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "9149:40:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "31653130", + "id": 9397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9192:4:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000_by_1", + "typeString": "int_const 10000000000" + }, + "value": "1e10" + }, + "src": "9149:47:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9388, + "id": 9399, + "nodeType": "Return", + "src": "9142:54:32" + } + ] + } + ] + }, + "documentation": { + "id": 9380, + "nodeType": "StructuredDocumentation", + "src": "8718:203:32", + "text": " @dev Calculates the base fee, with 18 decimals\n @param params The encoded pair parameters\n @param binStep The bin step (in basis points)\n @return baseFee The base fee" + }, + "id": 9402, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBaseFee", + "nameLocation": "8935:10:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9382, + "mutability": "mutable", + "name": "params", + "nameLocation": "8954:6:32", + "nodeType": "VariableDeclaration", + "scope": 9402, + "src": "8946:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8946:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9384, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "8969:7:32", + "nodeType": "VariableDeclaration", + "scope": 9402, + "src": "8962:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9383, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "8962:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "8945:32:32" + }, + "returnParameters": { + "id": 9388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9387, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9402, + "src": "9001:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9001:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9000:9:32" + }, + "scope": 9940, + "src": "8926:287:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9448, + "nodeType": "Block", + "src": "9521:515:32", + "statements": [ + { + "assignments": [ + 9413 + ], + "declarations": [ + { + "constant": false, + "id": 9413, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "9539:18:32", + "nodeType": "VariableDeclaration", + "scope": 9448, + "src": "9531:26:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9412, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9531:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9417, + "initialValue": { + "arguments": [ + { + "id": 9415, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9405, + "src": "9582:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9414, + "name": "getVariableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9222, + "src": "9560:21:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9560:29:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9531:58:32" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9418, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9413, + "src": "9604:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9626:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9604:23:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9447, + "nodeType": "IfStatement", + "src": "9600:430:32", + "trueBody": { + "id": 9446, + "nodeType": "Block", + "src": "9629:401:32", + "statements": [ + { + "id": 9445, + "nodeType": "UncheckedBlock", + "src": "9643:377:32", + "statements": [ + { + "assignments": [ + 9422 + ], + "declarations": [ + { + "constant": false, + "id": 9422, + "mutability": "mutable", + "name": "prod", + "nameLocation": "9870:4:32", + "nodeType": "VariableDeclaration", + "scope": 9445, + "src": "9862:12:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9862:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9431, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 9426, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9405, + "src": "9910:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9425, + "name": "getVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9270, + "src": "9885:24:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9885:32:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9877:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9877:7:32", + "typeDescriptions": {} + } + }, + "id": 9428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9877:41:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9429, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9407, + "src": "9921:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "9877:51:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9862:66:32" + }, + { + "expression": { + "id": 9443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9432, + "name": "variableFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9410, + "src": "9946:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9433, + "name": "prod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9422, + "src": "9961:4:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9434, + "name": "prod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9422, + "src": "9968:4:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9961:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9436, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9413, + "src": "9975:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9961:32:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3939", + "id": 9438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9996:2:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_99_by_1", + "typeString": "int_const 99" + }, + "value": "99" + }, + "src": "9961:37:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9440, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9960:39:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "313030", + "id": 9441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10002:3:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "9960:45:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9946:59:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9444, + "nodeType": "ExpressionStatement", + "src": "9946:59:32" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 9403, + "nodeType": "StructuredDocumentation", + "src": "9219:197:32", + "text": " @dev Calculates the variable fee\n @param params The encoded pair parameters\n @param binStep The bin step (in basis points)\n @return variableFee The variable fee" + }, + "id": 9449, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVariableFee", + "nameLocation": "9430:14:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9405, + "mutability": "mutable", + "name": "params", + "nameLocation": "9453:6:32", + "nodeType": "VariableDeclaration", + "scope": 9449, + "src": "9445:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9404, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9445:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9407, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "9468:7:32", + "nodeType": "VariableDeclaration", + "scope": 9449, + "src": "9461:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9406, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "9461:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "9444:32:32" + }, + "returnParameters": { + "id": 9411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9410, + "mutability": "mutable", + "name": "variableFee", + "nameLocation": "9508:11:32", + "nodeType": "VariableDeclaration", + "scope": 9449, + "src": "9500:19:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9500:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9499:21:32" + }, + "scope": 9940, + "src": "9421:615:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9473, + "nodeType": "Block", + "src": "10375:131:32", + "statements": [ + { + "id": 9472, + "nodeType": "UncheckedBlock", + "src": "10385:115:32", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 9460, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9452, + "src": "10428:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9461, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9454, + "src": "10436:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 9459, + "name": "getBaseFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9402, + "src": "10417:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (bytes32,uint16) pure returns (uint256)" + } + }, + "id": 9462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10417:27:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "id": 9464, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9452, + "src": "10462:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9465, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9454, + "src": "10470:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 9463, + "name": "getVariableFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9449, + "src": "10447:14:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (bytes32,uint16) pure returns (uint256)" + } + }, + "id": 9466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10447:31:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10417:61:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9468, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10416:63:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10480:7:32", + "memberName": "safe128", + "nodeType": "MemberAccess", + "referencedDeclaration": 10913, + "src": "10416:71:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 9470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10416:73:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 9458, + "id": 9471, + "nodeType": "Return", + "src": "10409:80:32" + } + ] + } + ] + }, + "documentation": { + "id": 9450, + "nodeType": "StructuredDocumentation", + "src": "10042:243:32", + "text": " @dev Calculates the total fee, which is the sum of the base fee and the variable fee\n @param params The encoded pair parameters\n @param binStep The bin step (in basis points)\n @return totalFee The total fee" + }, + "id": 9474, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTotalFee", + "nameLocation": "10299:11:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9452, + "mutability": "mutable", + "name": "params", + "nameLocation": "10319:6:32", + "nodeType": "VariableDeclaration", + "scope": 9474, + "src": "10311:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9451, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10311:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9454, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "10334:7:32", + "nodeType": "VariableDeclaration", + "scope": 9474, + "src": "10327:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9453, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10327:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "10310:32:32" + }, + "returnParameters": { + "id": 9458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9457, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9474, + "src": "10366:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 9456, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "10366:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "10365:9:32" + }, + "scope": 9940, + "src": "10290:216:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9492, + "nodeType": "Block", + "src": "10812:83:32", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9486, + "name": "oracleId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9479, + "src": "10840:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9487, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "10850:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10858:11:32", + "memberName": "MASK_UINT16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10307, + "src": "10850:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9489, + "name": "OFFSET_ORACLE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9136, + "src": "10871:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9484, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9477, + "src": "10829:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10836:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "10829:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10829:59:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9483, + "id": 9491, + "nodeType": "Return", + "src": "10822:66:32" + } + ] + }, + "documentation": { + "id": 9475, + "nodeType": "StructuredDocumentation", + "src": "10512:209:32", + "text": " @dev Set the oracle id in the encoded pair parameters\n @param params The encoded pair parameters\n @param oracleId The oracle id\n @return The updated encoded pair parameters" + }, + "id": 9493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setOracleId", + "nameLocation": "10735:11:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9477, + "mutability": "mutable", + "name": "params", + "nameLocation": "10755:6:32", + "nodeType": "VariableDeclaration", + "scope": 9493, + "src": "10747:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9476, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10747:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9479, + "mutability": "mutable", + "name": "oracleId", + "nameLocation": "10770:8:32", + "nodeType": "VariableDeclaration", + "scope": 9493, + "src": "10763:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9478, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10763:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "10746:33:32" + }, + "returnParameters": { + "id": 9483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9482, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9493, + "src": "10803:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9481, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10803:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10802:9:32" + }, + "scope": 9940, + "src": "10726:169:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9519, + "nodeType": "Block", + "src": "11230:171:32", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9503, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9498, + "src": "11244:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9504, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "11253:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11261:11:32", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10310, + "src": "11253:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11244:28:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9510, + "nodeType": "IfStatement", + "src": "11240:81:32", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9507, + "name": "PairParametersHelper__InvalidParameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9100, + "src": "11281:38:32", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11281:40:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9509, + "nodeType": "RevertStatement", + "src": "11274:47:32" + } + }, + { + "expression": { + "arguments": [ + { + "id": 9513, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9498, + "src": "11350:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9514, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "11358:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11366:11:32", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10310, + "src": "11358:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9516, + "name": "OFFSET_VOL_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9127, + "src": "11379:14:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9511, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9496, + "src": "11339:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11346:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "11339:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11339:55:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9502, + "id": 9518, + "nodeType": "Return", + "src": "11332:62:32" + } + ] + }, + "documentation": { + "id": 9494, + "nodeType": "StructuredDocumentation", + "src": "10901:229:32", + "text": " @dev Set the volatility reference in the encoded pair parameters\n @param params The encoded pair parameters\n @param volRef The volatility reference\n @return The updated encoded pair parameters" + }, + "id": 9520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setVolatilityReference", + "nameLocation": "11144:22:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9496, + "mutability": "mutable", + "name": "params", + "nameLocation": "11175:6:32", + "nodeType": "VariableDeclaration", + "scope": 9520, + "src": "11167:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9495, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11167:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9498, + "mutability": "mutable", + "name": "volRef", + "nameLocation": "11190:6:32", + "nodeType": "VariableDeclaration", + "scope": 9520, + "src": "11183:13:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9497, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "11183:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "11166:31:32" + }, + "returnParameters": { + "id": 9502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9501, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9520, + "src": "11221:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9500, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11221:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11220:9:32" + }, + "scope": 9940, + "src": "11135:266:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9546, + "nodeType": "Block", + "src": "11742:171:32", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9530, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9525, + "src": "11756:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9531, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "11765:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11773:11:32", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10310, + "src": "11765:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11756:28:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9537, + "nodeType": "IfStatement", + "src": "11752:81:32", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9534, + "name": "PairParametersHelper__InvalidParameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9100, + "src": "11793:38:32", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11793:40:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9536, + "nodeType": "RevertStatement", + "src": "11786:47:32" + } + }, + { + "expression": { + "arguments": [ + { + "id": 9540, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9525, + "src": "11862:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9541, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "11870:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11878:11:32", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10310, + "src": "11870:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9543, + "name": "OFFSET_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9124, + "src": "11891:14:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9538, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9523, + "src": "11851:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11858:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "11851:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11851:55:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9529, + "id": 9545, + "nodeType": "Return", + "src": "11844:62:32" + } + ] + }, + "documentation": { + "id": 9521, + "nodeType": "StructuredDocumentation", + "src": "11407:233:32", + "text": " @dev Set the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param volAcc The volatility accumulator\n @return The updated encoded pair parameters" + }, + "id": 9547, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setVolatilityAccumulator", + "nameLocation": "11654:24:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9523, + "mutability": "mutable", + "name": "params", + "nameLocation": "11687:6:32", + "nodeType": "VariableDeclaration", + "scope": 9547, + "src": "11679:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11679:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9525, + "mutability": "mutable", + "name": "volAcc", + "nameLocation": "11702:6:32", + "nodeType": "VariableDeclaration", + "scope": 9547, + "src": "11695:13:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9524, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "11695:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "11678:31:32" + }, + "returnParameters": { + "id": 9529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9528, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9547, + "src": "11733:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9527, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11733:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11732:9:32" + }, + "scope": 9940, + "src": "11645:268:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9565, + "nodeType": "Block", + "src": "12239:83:32", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9559, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9552, + "src": "12267:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9560, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "12277:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12285:11:32", + "memberName": "MASK_UINT24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10313, + "src": "12277:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9562, + "name": "OFFSET_ACTIVE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9139, + "src": "12298:16:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9557, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9550, + "src": "12256:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12263:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "12256:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12256:59:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9556, + "id": 9564, + "nodeType": "Return", + "src": "12249:66:32" + } + ] + }, + "documentation": { + "id": 9548, + "nodeType": "StructuredDocumentation", + "src": "11919:219:32", + "text": " @dev Set the active id in the encoded pair parameters\n @param params The encoded pair parameters\n @param activeId The active id\n @return newParams The updated encoded pair parameters" + }, + "id": 9566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setActiveId", + "nameLocation": "12152:11:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9550, + "mutability": "mutable", + "name": "params", + "nameLocation": "12172:6:32", + "nodeType": "VariableDeclaration", + "scope": 9566, + "src": "12164:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9549, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12164:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9552, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "12187:8:32", + "nodeType": "VariableDeclaration", + "scope": 9566, + "src": "12180:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9551, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "12180:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "12163:33:32" + }, + "returnParameters": { + "id": 9556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9555, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "12228:9:32", + "nodeType": "VariableDeclaration", + "scope": 9566, + "src": "12220:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9554, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12220:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12219:19:32" + }, + "scope": 9940, + "src": "12143:179:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9695, + "nodeType": "Block", + "src": "13209:1071:32", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 9595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 9590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9588, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9573, + "src": "13236:12:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9589, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9575, + "src": "13251:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "13236:26:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9591, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9575, + "src": "13266:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9592, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "13280:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13288:11:32", + "memberName": "MASK_UINT12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10301, + "src": "13280:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13266:33:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:63:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9596, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9577, + "src": "13319:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9597, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "13337:9:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 9598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13347:15:32", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8121, + "src": "13337:25:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13319:43:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:126:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9601, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9581, + "src": "13366:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9602, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "13382:9:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 9603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13392:18:32", + "memberName": "MAX_PROTOCOL_SHARE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8118, + "src": "13382:28:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13366:44:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:174:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9606, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9583, + "src": "13430:24:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 9607, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "13457:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13465:11:32", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10310, + "src": "13457:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13430:46:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13236:240:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9614, + "nodeType": "IfStatement", + "src": "13219:315:32", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 9611, + "name": "PairParametersHelper__InvalidParameter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9100, + "src": "13494:38:32", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13494:40:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9613, + "nodeType": "RevertStatement", + "src": "13487:47:32" + } + }, + { + "expression": { + "id": 9623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9615, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13545:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9618, + "name": "baseFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9571, + "src": "13571:10:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9619, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "13583:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13591:11:32", + "memberName": "MASK_UINT16", + "nodeType": "MemberAccess", + "referencedDeclaration": 10307, + "src": "13583:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9621, + "name": "OFFSET_BASE_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9103, + "src": "13604:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9616, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13557:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13567:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "13557:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13557:66:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13545:78:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9624, + "nodeType": "ExpressionStatement", + "src": "13545:78:32" + }, + { + "expression": { + "id": 9633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9625, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13633:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9628, + "name": "filterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9573, + "src": "13659:12:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9629, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "13673:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9630, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13681:11:32", + "memberName": "MASK_UINT12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10301, + "src": "13673:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9631, + "name": "OFFSET_FILTER_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9106, + "src": "13694:20:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9626, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13645:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13655:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "13645:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13645:70:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13633:82:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9634, + "nodeType": "ExpressionStatement", + "src": "13633:82:32" + }, + { + "expression": { + "id": 9643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9635, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13725:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9638, + "name": "decayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9575, + "src": "13751:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9639, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "13764:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13772:11:32", + "memberName": "MASK_UINT12", + "nodeType": "MemberAccess", + "referencedDeclaration": 10301, + "src": "13764:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9641, + "name": "OFFSET_DECAY_PERIOD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9109, + "src": "13785:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9636, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13737:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13747:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "13737:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13737:68:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13725:80:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9644, + "nodeType": "ExpressionStatement", + "src": "13725:80:32" + }, + { + "expression": { + "id": 9653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9645, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13815:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9648, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9577, + "src": "13841:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9649, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "13858:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13866:11:32", + "memberName": "MASK_UINT14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10304, + "src": "13858:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9651, + "name": "OFFSET_REDUCTION_FACTOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9112, + "src": "13879:23:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9646, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13827:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13837:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "13827:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13827:76:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13815:88:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9654, + "nodeType": "ExpressionStatement", + "src": "13815:88:32" + }, + { + "expression": { + "id": 9663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9655, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13913:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9658, + "name": "variableFeeControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9579, + "src": "13939:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9659, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "13959:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13967:11:32", + "memberName": "MASK_UINT24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10313, + "src": "13959:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9661, + "name": "OFFSET_VAR_FEE_CONTROL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9115, + "src": "13980:22:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9656, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "13925:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13935:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "13925:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13925:78:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13913:90:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9664, + "nodeType": "ExpressionStatement", + "src": "13913:90:32" + }, + { + "expression": { + "id": 9673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9665, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "14013:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9668, + "name": "protocolShare", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9581, + "src": "14039:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 9669, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "14054:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14062:11:32", + "memberName": "MASK_UINT14", + "nodeType": "MemberAccess", + "referencedDeclaration": 10304, + "src": "14054:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9671, + "name": "OFFSET_PROTOCOL_SHARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9118, + "src": "14075:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9666, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "14025:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14035:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "14025:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14025:72:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "14013:84:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9674, + "nodeType": "ExpressionStatement", + "src": "14013:84:32" + }, + { + "expression": { + "id": 9683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9675, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "14107:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9678, + "name": "maxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9583, + "src": "14133:24:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9679, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "14159:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14167:11:32", + "memberName": "MASK_UINT20", + "nodeType": "MemberAccess", + "referencedDeclaration": 10310, + "src": "14159:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9681, + "name": "OFFSET_MAX_VOL_ACC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9121, + "src": "14180:18:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9676, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "14119:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14129:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "14119:13:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14119:80:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "14107:92:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9684, + "nodeType": "ExpressionStatement", + "src": "14107:92:32" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 9689, + "name": "newParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9586, + "src": "14236:9:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14228:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14228:7:32", + "typeDescriptions": {} + } + }, + "id": 9690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14228:18:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9691, + "name": "MASK_STATIC_PARAMETER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9142, + "src": "14248:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 9692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14271:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 9685, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9569, + "src": "14217:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14224:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "14217:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14217:56:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9587, + "id": 9694, + "nodeType": "Return", + "src": "14210:63:32" + } + ] + }, + "documentation": { + "id": 9567, + "nodeType": "StructuredDocumentation", + "src": "12328:550:32", + "text": " @dev Sets the static fee parameters in the encoded pair parameters\n @param params The encoded pair parameters\n @param baseFactor The base factor\n @param filterPeriod The filter period\n @param decayPeriod The decay period\n @param reductionFactor The reduction factor\n @param variableFeeControl The variable fee control\n @param protocolShare The protocol share\n @param maxVolatilityAccumulator The max volatility accumulator\n @return newParams The updated encoded pair parameters" + }, + "id": 9696, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setStaticFeeParameters", + "nameLocation": "12892:22:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9569, + "mutability": "mutable", + "name": "params", + "nameLocation": "12932:6:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "12924:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9568, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12924:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9571, + "mutability": "mutable", + "name": "baseFactor", + "nameLocation": "12955:10:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "12948:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9570, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12948:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9573, + "mutability": "mutable", + "name": "filterPeriod", + "nameLocation": "12982:12:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "12975:19:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9572, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12975:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9575, + "mutability": "mutable", + "name": "decayPeriod", + "nameLocation": "13011:11:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "13004:18:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9574, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13004:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9577, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "13039:15:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "13032:22:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9576, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13032:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9579, + "mutability": "mutable", + "name": "variableFeeControl", + "nameLocation": "13071:18:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "13064:25:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9578, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "13064:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9581, + "mutability": "mutable", + "name": "protocolShare", + "nameLocation": "13106:13:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "13099:20:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9580, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13099:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9583, + "mutability": "mutable", + "name": "maxVolatilityAccumulator", + "nameLocation": "13136:24:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "13129:31:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9582, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "13129:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "12914:252:32" + }, + "returnParameters": { + "id": 9587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9586, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "13198:9:32", + "nodeType": "VariableDeclaration", + "scope": 9696, + "src": "13190:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9585, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13190:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13189:19:32" + }, + "scope": 9940, + "src": "12883:1397:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9718, + "nodeType": "Block", + "src": "14568:127:32", + "statements": [ + { + "assignments": [ + 9705 + ], + "declarations": [ + { + "constant": false, + "id": 9705, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "14585:8:32", + "nodeType": "VariableDeclaration", + "scope": 9718, + "src": "14578:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9704, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "14578:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "id": 9709, + "initialValue": { + "arguments": [ + { + "id": 9707, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9699, + "src": "14608:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9706, + "name": "getActiveId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9350, + "src": "14596:11:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14596:19:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14578:37:32" + }, + { + "expression": { + "arguments": [ + { + "id": 9712, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9705, + "src": "14643:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "id": 9713, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "14653:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14661:11:32", + "memberName": "MASK_UINT24", + "nodeType": "MemberAccess", + "referencedDeclaration": 10313, + "src": "14653:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9715, + "name": "OFFSET_ID_REF", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9130, + "src": "14674:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9710, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9699, + "src": "14632:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14639:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "14632:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14632:56:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9703, + "id": 9717, + "nodeType": "Return", + "src": "14625:63:32" + } + ] + }, + "documentation": { + "id": 9697, + "nodeType": "StructuredDocumentation", + "src": "14286:192:32", + "text": " @dev Updates the index reference in the encoded pair parameters\n @param params The encoded pair parameters\n @return newParams The updated encoded pair parameters" + }, + "id": 9719, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateIdReference", + "nameLocation": "14492:17:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9699, + "mutability": "mutable", + "name": "params", + "nameLocation": "14518:6:32", + "nodeType": "VariableDeclaration", + "scope": 9719, + "src": "14510:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9698, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14510:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14509:16:32" + }, + "returnParameters": { + "id": 9703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9702, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "14557:9:32", + "nodeType": "VariableDeclaration", + "scope": 9719, + "src": "14549:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9701, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14549:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14548:19:32" + }, + "scope": 9940, + "src": "14483:212:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9743, + "nodeType": "Block", + "src": "15049:142:32", + "statements": [ + { + "assignments": [ + 9730 + ], + "declarations": [ + { + "constant": false, + "id": 9730, + "mutability": "mutable", + "name": "currentTime", + "nameLocation": "15066:11:32", + "nodeType": "VariableDeclaration", + "scope": 9743, + "src": "15059:18:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 9729, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "15059:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "id": 9734, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 9731, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9724, + "src": "15080:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15090:6:32", + "memberName": "safe40", + "nodeType": "MemberAccess", + "referencedDeclaration": 11155, + "src": "15080:16:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint40_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint40)" + } + }, + "id": 9733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15080:18:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15059:39:32" + }, + { + "expression": { + "arguments": [ + { + "id": 9737, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9730, + "src": "15126:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + { + "expression": { + "id": 9738, + "name": "Encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10496, + "src": "15139:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Encoded_$10496_$", + "typeString": "type(library Encoded)" + } + }, + "id": 9739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15147:11:32", + "memberName": "MASK_UINT40", + "nodeType": "MemberAccess", + "referencedDeclaration": 10316, + "src": "15139:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 9740, + "name": "OFFSET_TIME_LAST_UPDATE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9133, + "src": "15160:23:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 9735, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9722, + "src": "15115:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15122:3:32", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 10338, + "src": "15115:10:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 9741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15115:69:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9728, + "id": 9742, + "nodeType": "Return", + "src": "15108:76:32" + } + ] + }, + "documentation": { + "id": 9720, + "nodeType": "StructuredDocumentation", + "src": "14701:234:32", + "text": " @dev Updates the time of last update in the encoded pair parameters\n @param params The encoded pair parameters\n @param timestamp The timestamp\n @return newParams The updated encoded pair parameters" + }, + "id": 9744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateTimeOfLastUpdate", + "nameLocation": "14949:22:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9722, + "mutability": "mutable", + "name": "params", + "nameLocation": "14980:6:32", + "nodeType": "VariableDeclaration", + "scope": 9744, + "src": "14972:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9721, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14972:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9724, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "14996:9:32", + "nodeType": "VariableDeclaration", + "scope": 9744, + "src": "14988:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14988:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14971:35:32" + }, + "returnParameters": { + "id": 9728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9727, + "mutability": "mutable", + "name": "newParams", + "nameLocation": "15038:9:32", + "nodeType": "VariableDeclaration", + "scope": 9744, + "src": "15030:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9726, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15030:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "15029:19:32" + }, + "scope": 9940, + "src": "14940:251:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9785, + "nodeType": "Block", + "src": "15472:321:32", + "statements": [ + { + "assignments": [ + 9753 + ], + "declarations": [ + { + "constant": false, + "id": 9753, + "mutability": "mutable", + "name": "volAcc", + "nameLocation": "15490:6:32", + "nodeType": "VariableDeclaration", + "scope": 9785, + "src": "15482:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15482:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9757, + "initialValue": { + "arguments": [ + { + "id": 9755, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9747, + "src": "15524:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9754, + "name": "getVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9270, + "src": "15499:24:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15499:32:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15482:49:32" + }, + { + "assignments": [ + 9759 + ], + "declarations": [ + { + "constant": false, + "id": 9759, + "mutability": "mutable", + "name": "reductionFactor", + "nameLocation": "15549:15:32", + "nodeType": "VariableDeclaration", + "scope": 9785, + "src": "15541:23:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15541:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9763, + "initialValue": { + "arguments": [ + { + "id": 9761, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9747, + "src": "15586:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9760, + "name": "getReductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9206, + "src": "15567:18:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 9762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15567:26:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15541:52:32" + }, + { + "assignments": [ + 9765 + ], + "declarations": [ + { + "constant": false, + "id": 9765, + "mutability": "mutable", + "name": "volRef", + "nameLocation": "15611:6:32", + "nodeType": "VariableDeclaration", + "scope": 9785, + "src": "15604:13:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9764, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15604:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "id": 9766, + "nodeType": "VariableDeclarationStatement", + "src": "15604:13:32" + }, + { + "id": 9779, + "nodeType": "UncheckedBlock", + "src": "15627:104:32", + "statements": [ + { + "expression": { + "id": 9777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9767, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9765, + "src": "15651:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9770, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9753, + "src": "15667:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 9771, + "name": "reductionFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9759, + "src": "15676:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15667:24:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 9773, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "15694:9:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 9774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15704:15:32", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8121, + "src": "15694:25:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15667:52:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15660:6:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 9768, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15660:6:32", + "typeDescriptions": {} + } + }, + "id": 9776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15660:60:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "15651:69:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 9778, + "nodeType": "ExpressionStatement", + "src": "15651:69:32" + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 9781, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9747, + "src": "15771:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9782, + "name": "volRef", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9765, + "src": "15779:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9780, + "name": "setVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9520, + "src": "15748:22:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 9783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15748:38:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9751, + "id": 9784, + "nodeType": "Return", + "src": "15741:45:32" + } + ] + }, + "documentation": { + "id": 9745, + "nodeType": "StructuredDocumentation", + "src": "15197:187:32", + "text": " @dev Updates the volatility reference in the encoded pair parameters\n @param params The encoded pair parameters\n @return The updated encoded pair parameters" + }, + "id": 9786, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateVolatilityReference", + "nameLocation": "15398:25:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9747, + "mutability": "mutable", + "name": "params", + "nameLocation": "15432:6:32", + "nodeType": "VariableDeclaration", + "scope": 9786, + "src": "15424:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9746, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15424:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "15423:16:32" + }, + "returnParameters": { + "id": 9751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9750, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9786, + "src": "15463:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9749, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15463:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "15462:9:32" + }, + "scope": 9940, + "src": "15389:404:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9860, + "nodeType": "Block", + "src": "16132:531:32", + "statements": [ + { + "assignments": [ + 9797 + ], + "declarations": [ + { + "constant": false, + "id": 9797, + "mutability": "mutable", + "name": "idReference", + "nameLocation": "16150:11:32", + "nodeType": "VariableDeclaration", + "scope": 9860, + "src": "16142:19:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16142:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9801, + "initialValue": { + "arguments": [ + { + "id": 9799, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9789, + "src": "16179:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9798, + "name": "getIdReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9302, + "src": "16164:14:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16164:22:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16142:44:32" + }, + { + "assignments": [ + 9803 + ], + "declarations": [ + { + "constant": false, + "id": 9803, + "mutability": "mutable", + "name": "deltaId", + "nameLocation": "16205:7:32", + "nodeType": "VariableDeclaration", + "scope": 9860, + "src": "16197:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16197:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9804, + "nodeType": "VariableDeclarationStatement", + "src": "16197:15:32" + }, + { + "assignments": [ + 9806 + ], + "declarations": [ + { + "constant": false, + "id": 9806, + "mutability": "mutable", + "name": "volAcc", + "nameLocation": "16230:6:32", + "nodeType": "VariableDeclaration", + "scope": 9860, + "src": "16222:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16222:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9807, + "nodeType": "VariableDeclarationStatement", + "src": "16222:14:32" + }, + { + "id": 9836, + "nodeType": "UncheckedBlock", + "src": "16247:219:32", + "statements": [ + { + "expression": { + "id": 9819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9808, + "name": "deltaId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9803, + "src": "16271:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9809, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9791, + "src": "16281:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9810, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9797, + "src": "16292:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16281:22:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9815, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9797, + "src": "16331:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9816, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9791, + "src": "16345:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "16331:22:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "16281:72:32", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9812, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9791, + "src": "16306:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 9813, + "name": "idReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9797, + "src": "16317:11:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16306:22:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16271:82:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9820, + "nodeType": "ExpressionStatement", + "src": "16271:82:32" + }, + { + "expression": { + "id": 9834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9821, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9806, + "src": "16367:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 9825, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9789, + "src": "16408:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9824, + "name": "getVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9286, + "src": "16385:22:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16385:30:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16377:7:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9822, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16377:7:32", + "typeDescriptions": {} + } + }, + "id": 9827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16377:39:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9828, + "name": "deltaId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9803, + "src": "16419:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 9829, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "16429:9:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 9830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16439:15:32", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8121, + "src": "16429:25:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16419:35:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16377:77:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 9833, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16376:79:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16367:88:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9835, + "nodeType": "ExpressionStatement", + "src": "16367:88:32" + } + ] + }, + { + "assignments": [ + 9838 + ], + "declarations": [ + { + "constant": false, + "id": 9838, + "mutability": "mutable", + "name": "maxVolAcc", + "nameLocation": "16484:9:32", + "nodeType": "VariableDeclaration", + "scope": 9860, + "src": "16476:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16476:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9842, + "initialValue": { + "arguments": [ + { + "id": 9840, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9789, + "src": "16524:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9839, + "name": "getMaxVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9254, + "src": "16496:27:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint24_$", + "typeString": "function (bytes32) pure returns (uint24)" + } + }, + "id": 9841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16496:35:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16476:55:32" + }, + { + "expression": { + "id": 9850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9843, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9806, + "src": "16542:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9844, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9806, + "src": "16551:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9845, + "name": "maxVolAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9838, + "src": "16560:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16551:18:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 9848, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9806, + "src": "16584:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "16551:39:32", + "trueExpression": { + "id": 9847, + "name": "maxVolAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9838, + "src": "16572:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16542:48:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9851, + "nodeType": "ExpressionStatement", + "src": "16542:48:32" + }, + { + "expression": { + "arguments": [ + { + "id": 9853, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9789, + "src": "16633:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 9856, + "name": "volAcc", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9806, + "src": "16648:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16641:6:32", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 9854, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "16641:6:32", + "typeDescriptions": {} + } + }, + "id": 9857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16641:14:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9852, + "name": "setVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9547, + "src": "16608:24:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 9858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16608:48:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9795, + "id": 9859, + "nodeType": "Return", + "src": "16601:55:32" + } + ] + }, + "documentation": { + "id": 9787, + "nodeType": "StructuredDocumentation", + "src": "15799:226:32", + "text": " @dev Updates the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param activeId The active id\n @return The updated encoded pair parameters" + }, + "id": 9861, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateVolatilityAccumulator", + "nameLocation": "16039:27:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9789, + "mutability": "mutable", + "name": "params", + "nameLocation": "16075:6:32", + "nodeType": "VariableDeclaration", + "scope": 9861, + "src": "16067:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9788, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16067:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9791, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "16090:8:32", + "nodeType": "VariableDeclaration", + "scope": 9861, + "src": "16083:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9790, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "16083:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "16066:33:32" + }, + "returnParameters": { + "id": 9795, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9794, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9861, + "src": "16123:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9793, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16123:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "16122:9:32" + }, + "scope": 9940, + "src": "16030:633:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9913, + "nodeType": "Block", + "src": "17023:354:32", + "statements": [ + { + "assignments": [ + 9872 + ], + "declarations": [ + { + "constant": false, + "id": 9872, + "mutability": "mutable", + "name": "dt", + "nameLocation": "17041:2:32", + "nodeType": "VariableDeclaration", + "scope": 9913, + "src": "17033:10:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9871, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17033:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9878, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9873, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9866, + "src": "17046:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 9875, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17078:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9874, + "name": "getTimeOfLastUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9318, + "src": "17058:19:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint40_$", + "typeString": "function (bytes32) pure returns (uint40)" + } + }, + "id": 9876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17058:27:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "17046:39:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17033:52:32" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9879, + "name": "dt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9872, + "src": "17100:2:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [ + { + "id": 9881, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17122:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9880, + "name": "getFilterPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9174, + "src": "17106:15:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 9882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17106:23:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "17100:29:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9907, + "nodeType": "IfStatement", + "src": "17096:216:32", + "trueBody": { + "id": 9906, + "nodeType": "Block", + "src": "17131:181:32", + "statements": [ + { + "expression": { + "id": 9888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9884, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17145:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9886, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17172:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9885, + "name": "updateIdReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9719, + "src": "17154:17:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 9887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17154:25:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "17145:34:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9889, + "nodeType": "ExpressionStatement", + "src": "17145:34:32" + }, + { + "expression": { + "id": 9904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9890, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17193:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9891, + "name": "dt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9872, + "src": "17202:2:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "arguments": [ + { + "id": 9893, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17222:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9892, + "name": "getDecayPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9190, + "src": "17207:14:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint16_$", + "typeString": "function (bytes32) pure returns (uint16)" + } + }, + "id": 9894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17207:22:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "17202:27:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [ + { + "id": 9900, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17291:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "30", + "id": 9901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17299:1:32", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 9899, + "name": "setVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9520, + "src": "17268:22:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 9902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17268:33:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "17202:99:32", + "trueExpression": { + "arguments": [ + { + "id": 9897, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17258:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9896, + "name": "updateVolatilityReference", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9786, + "src": "17232:25:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 9898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17232:33:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "17193:108:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9905, + "nodeType": "ExpressionStatement", + "src": "17193:108:32" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 9909, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9864, + "src": "17352:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9910, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9866, + "src": "17360:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9908, + "name": "updateTimeOfLastUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9744, + "src": "17329:22:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (bytes32)" + } + }, + "id": 9911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17329:41:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9870, + "id": 9912, + "nodeType": "Return", + "src": "17322:48:32" + } + ] + }, + "documentation": { + "id": 9862, + "nodeType": "StructuredDocumentation", + "src": "16669:256:32", + "text": " @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param timestamp The timestamp\n @return The updated encoded pair parameters" + }, + "id": 9914, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateReferences", + "nameLocation": "16939:16:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9864, + "mutability": "mutable", + "name": "params", + "nameLocation": "16964:6:32", + "nodeType": "VariableDeclaration", + "scope": 9914, + "src": "16956:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9863, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "16956:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9866, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "16980:9:32", + "nodeType": "VariableDeclaration", + "scope": 9914, + "src": "16972:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9865, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16972:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16955:35:32" + }, + "returnParameters": { + "id": 9870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9869, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9914, + "src": "17014:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9868, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17014:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "17013:9:32" + }, + "scope": 9940, + "src": "16930:447:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9938, + "nodeType": "Block", + "src": "17829:123:32", + "statements": [ + { + "expression": { + "id": 9931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9926, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9917, + "src": "17839:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9928, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9917, + "src": "17865:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9929, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9921, + "src": "17873:9:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9927, + "name": "updateReferences", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9914, + "src": "17848:16:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256) pure returns (bytes32)" + } + }, + "id": 9930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17848:35:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "17839:44:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9932, + "nodeType": "ExpressionStatement", + "src": "17839:44:32" + }, + { + "expression": { + "arguments": [ + { + "id": 9934, + "name": "params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9917, + "src": "17928:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 9935, + "name": "activeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9919, + "src": "17936:8:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9933, + "name": "updateVolatilityAccumulator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9861, + "src": "17900:27:32", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint24_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint24) pure returns (bytes32)" + } + }, + "id": 9936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17900:45:32", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 9925, + "id": 9937, + "nodeType": "Return", + "src": "17893:52:32" + } + ] + }, + "documentation": { + "id": 9915, + "nodeType": "StructuredDocumentation", + "src": "17383:293:32", + "text": " @dev Updates the volatility reference and the volatility accumulator in the encoded pair parameters\n @param params The encoded pair parameters\n @param activeId The active id\n @param timestamp The timestamp\n @return The updated encoded pair parameters" + }, + "id": 9939, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateVolatilityParameters", + "nameLocation": "17690:26:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9922, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9917, + "mutability": "mutable", + "name": "params", + "nameLocation": "17725:6:32", + "nodeType": "VariableDeclaration", + "scope": 9939, + "src": "17717:14:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9916, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17717:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9919, + "mutability": "mutable", + "name": "activeId", + "nameLocation": "17740:8:32", + "nodeType": "VariableDeclaration", + "scope": 9939, + "src": "17733:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9918, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "17733:6:32", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9921, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "17758:9:32", + "nodeType": "VariableDeclaration", + "scope": 9939, + "src": "17750:17:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9920, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17750:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17716:52:32" + }, + "returnParameters": { + "id": 9925, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9924, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9939, + "src": "17816:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9923, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "17816:7:32", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "17815:9:32" + }, + "scope": 9940, + "src": "17681:271:32", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 9941, + "src": "964:16990:32", + "usedErrors": [ + 9100 + ], + "usedEvents": [] + } + ], + "src": "33:17922:32" + }, + "id": 32 + }, + "src/libraries/PriceHelper.sol": { + "ast": { + "absolutePath": "src/libraries/PriceHelper.sol", + "exportedSymbols": { + "Constants": [ + 8131 + ], + "PriceHelper": [ + 10114 + ], + "SafeCast": [ + 11244 + ], + "Uint128x128Math": [ + 11470 + ], + "Uint256x256Math": [ + 11880 + ] + }, + "id": 10115, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9942, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:33" + }, + { + "absolutePath": "src/libraries/math/Uint128x128Math.sol", + "file": "./math/Uint128x128Math.sol", + "id": 9944, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10115, + "sourceUnit": 11471, + "src": "59:59:33", + "symbolAliases": [ + { + "foreign": { + "id": 9943, + "name": "Uint128x128Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11470, + "src": "67:15:33", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/Uint256x256Math.sol", + "file": "./math/Uint256x256Math.sol", + "id": 9946, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10115, + "sourceUnit": 11881, + "src": "119:59:33", + "symbolAliases": [ + { + "foreign": { + "id": 9945, + "name": "Uint256x256Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11880, + "src": "127:15:33", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/SafeCast.sol", + "file": "./math/SafeCast.sol", + "id": 9948, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10115, + "sourceUnit": 11245, + "src": "179:45:33", + "symbolAliases": [ + { + "foreign": { + "id": 9947, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11244, + "src": "187:8:33", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "./Constants.sol", + "id": 9950, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 10115, + "sourceUnit": 8132, + "src": "225:42:33", + "symbolAliases": [ + { + "foreign": { + "id": 9949, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "233:9:33", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "PriceHelper", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 9951, + "nodeType": "StructuredDocumentation", + "src": "269:116:33", + "text": " @title Liquidity Book Price Helper Library\n @notice This library contains functions to calculate prices" + }, + "fullyImplemented": true, + "id": 10114, + "linearizedBaseContracts": [ + 10114 + ], + "name": "PriceHelper", + "nameLocation": "394:11:33", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 9954, + "libraryName": { + "id": 9952, + "name": "Uint128x128Math", + "nameLocations": [ + "418:15:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11470, + "src": "418:15:33" + }, + "nodeType": "UsingForDirective", + "src": "412:34:33", + "typeName": { + "id": 9953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "438:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 9957, + "libraryName": { + "id": 9955, + "name": "Uint256x256Math", + "nameLocations": [ + "457:15:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11880, + "src": "457:15:33" + }, + "nodeType": "UsingForDirective", + "src": "451:34:33", + "typeName": { + "id": 9956, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "477:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "global": false, + "id": 9960, + "libraryName": { + "id": 9958, + "name": "SafeCast", + "nameLocations": [ + "496:8:33" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11244, + "src": "496:8:33" + }, + "nodeType": "UsingForDirective", + "src": "490:27:33", + "typeName": { + "id": 9959, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "509:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "id": 9965, + "mutability": "constant", + "name": "REAL_ID_SHIFT", + "nameLocation": "547:13:33", + "nodeType": "VariableDeclaration", + "scope": 10114, + "src": "523:47:33", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9961, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "523:6:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_rational_8388608_by_1", + "typeString": "int_const 8388608" + }, + "id": 9964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 9962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "563:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3233", + "id": 9963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "568:2:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_23_by_1", + "typeString": "int_const 23" + }, + "value": "23" + }, + "src": "563:7:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_8388608_by_1", + "typeString": "int_const 8388608" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 9994, + "nodeType": "Block", + "src": "873:128:33", + "statements": [ + { + "assignments": [ + 9976 + ], + "declarations": [ + { + "constant": false, + "id": 9976, + "mutability": "mutable", + "name": "base", + "nameLocation": "891:4:33", + "nodeType": "VariableDeclaration", + "scope": 9994, + "src": "883:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "883:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9980, + "initialValue": { + "arguments": [ + { + "id": 9978, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9970, + "src": "906:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 9977, + "name": "getBase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10059, + "src": "898:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (uint16) pure returns (uint256)" + } + }, + "id": 9979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "898:16:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "883:31:33" + }, + { + "assignments": [ + 9982 + ], + "declarations": [ + { + "constant": false, + "id": 9982, + "mutability": "mutable", + "name": "exponent", + "nameLocation": "931:8:33", + "nodeType": "VariableDeclaration", + "scope": 9994, + "src": "924:15:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9981, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "924:6:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 9986, + "initialValue": { + "arguments": [ + { + "id": 9984, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9968, + "src": "954:2:33", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 9983, + "name": "getExponent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10079, + "src": "942:11:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint24_$returns$_t_int256_$", + "typeString": "function (uint24) pure returns (int256)" + } + }, + "id": 9985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "942:15:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "924:33:33" + }, + { + "expression": { + "id": 9992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9987, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9973, + "src": "968:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9990, + "name": "exponent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9982, + "src": "985:8:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "id": 9988, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9976, + "src": "976:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "981:3:33", + "memberName": "pow", + "nodeType": "MemberAccess", + "referencedDeclaration": 11469, + "src": "976:8:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_int256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,int256) pure returns (uint256)" + } + }, + "id": 9991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "976:18:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "968:26:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9993, + "nodeType": "ExpressionStatement", + "src": "968:26:33" + } + ] + }, + "documentation": { + "id": 9966, + "nodeType": "StructuredDocumentation", + "src": "577:202:33", + "text": " @dev Calculates the price from the id and the bin step\n @param id The id\n @param binStep The bin step\n @return price The price as a 128.128-binary fixed-point number" + }, + "id": 9995, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPriceFromId", + "nameLocation": "793:14:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9968, + "mutability": "mutable", + "name": "id", + "nameLocation": "815:2:33", + "nodeType": "VariableDeclaration", + "scope": 9995, + "src": "808:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 9967, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "808:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9970, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "826:7:33", + "nodeType": "VariableDeclaration", + "scope": 9995, + "src": "819:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9969, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "819:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "807:27:33" + }, + "returnParameters": { + "id": 9974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9973, + "mutability": "mutable", + "name": "price", + "nameLocation": "866:5:33", + "nodeType": "VariableDeclaration", + "scope": 9995, + "src": "858:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "858:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "857:15:33" + }, + "scope": 10114, + "src": "784:217:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10033, + "nodeType": "Block", + "src": "1303:190:33", + "statements": [ + { + "assignments": [ + 10006 + ], + "declarations": [ + { + "constant": false, + "id": 10006, + "mutability": "mutable", + "name": "base", + "nameLocation": "1321:4:33", + "nodeType": "VariableDeclaration", + "scope": 10033, + "src": "1313:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10005, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1313:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10010, + "initialValue": { + "arguments": [ + { + "id": 10008, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10000, + "src": "1336:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10007, + "name": "getBase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10059, + "src": "1328:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint16_$returns$_t_uint256_$", + "typeString": "function (uint16) pure returns (uint256)" + } + }, + "id": 10009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1328:16:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1313:31:33" + }, + { + "assignments": [ + 10012 + ], + "declarations": [ + { + "constant": false, + "id": 10012, + "mutability": "mutable", + "name": "realId", + "nameLocation": "1361:6:33", + "nodeType": "VariableDeclaration", + "scope": 10033, + "src": "1354:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 10011, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1354:6:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 10020, + "initialValue": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 10019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 10013, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9998, + "src": "1370:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1376:4:33", + "memberName": "log2", + "nodeType": "MemberAccess", + "referencedDeclaration": 11413, + "src": "1370:10:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 10015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1370:12:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 10016, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10006, + "src": "1385:4:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1390:4:33", + "memberName": "log2", + "nodeType": "MemberAccess", + "referencedDeclaration": 11413, + "src": "1385:9:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (int256)" + } + }, + "id": 10018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1385:11:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1370:26:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1354:42:33" + }, + { + "id": 10032, + "nodeType": "UncheckedBlock", + "src": "1407:80:33", + "statements": [ + { + "expression": { + "id": 10030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10021, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10003, + "src": "1431:2:33", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 10026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10024, + "name": "REAL_ID_SHIFT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9965, + "src": "1444:13:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 10025, + "name": "realId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10012, + "src": "1460:6:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1444:22:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 10023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1436:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1436:7:33", + "typeDescriptions": {} + } + }, + "id": 10027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1436:31:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1468:6:33", + "memberName": "safe24", + "nodeType": "MemberAccess", + "referencedDeclaration": 11199, + "src": "1436:38:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint24_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint24)" + } + }, + "id": 10029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1436:40:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "1431:45:33", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 10031, + "nodeType": "ExpressionStatement", + "src": "1431:45:33" + } + ] + } + ] + }, + "documentation": { + "id": 9996, + "nodeType": "StructuredDocumentation", + "src": "1007:202:33", + "text": " @dev Calculates the id from the price and the bin step\n @param price The price as a 128.128-binary fixed-point number\n @param binStep The bin step\n @return id The id" + }, + "id": 10034, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getIdFromPrice", + "nameLocation": "1223:14:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9998, + "mutability": "mutable", + "name": "price", + "nameLocation": "1246:5:33", + "nodeType": "VariableDeclaration", + "scope": 10034, + "src": "1238:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1238:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10000, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1260:7:33", + "nodeType": "VariableDeclaration", + "scope": 10034, + "src": "1253:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 9999, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1253:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "1237:31:33" + }, + "returnParameters": { + "id": 10004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10003, + "mutability": "mutable", + "name": "id", + "nameLocation": "1299:2:33", + "nodeType": "VariableDeclaration", + "scope": 10034, + "src": "1292:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10002, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1292:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "1291:11:33" + }, + "scope": 10114, + "src": "1214:279:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10058, + "nodeType": "Block", + "src": "1736:148:33", + "statements": [ + { + "id": 10057, + "nodeType": "UncheckedBlock", + "src": "1746:132:33", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 10042, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "1777:9:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 10043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1787:5:33", + "memberName": "SCALE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8104, + "src": "1777:15:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10046, + "name": "binStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10037, + "src": "1804:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1796:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1796:7:33", + "typeDescriptions": {} + } + }, + "id": 10047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1796:16:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "expression": { + "id": 10048, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "1816:9:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 10049, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1826:12:33", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8099, + "src": "1816:22:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1796:42:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 10051, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1795:44:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 10052, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "1842:9:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 10053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1852:15:33", + "memberName": "BASIS_POINT_MAX", + "nodeType": "MemberAccess", + "referencedDeclaration": 8121, + "src": "1842:25:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1795:72:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1777:90:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10041, + "id": 10056, + "nodeType": "Return", + "src": "1770:97:33" + } + ] + } + ] + }, + "documentation": { + "id": 10035, + "nodeType": "StructuredDocumentation", + "src": "1499:167:33", + "text": " @dev Calculates the base from the bin step, which is `1 + binStep / BASIS_POINT_MAX`\n @param binStep The bin step\n @return base The base" + }, + "id": 10059, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBase", + "nameLocation": "1680:7:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10037, + "mutability": "mutable", + "name": "binStep", + "nameLocation": "1695:7:33", + "nodeType": "VariableDeclaration", + "scope": 10059, + "src": "1688:14:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10036, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1688:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "1687:16:33" + }, + "returnParameters": { + "id": 10041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10040, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10059, + "src": "1727:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10039, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1727:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1726:9:33" + }, + "scope": 10114, + "src": "1671:213:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10078, + "nodeType": "Block", + "src": "2109:93:33", + "statements": [ + { + "id": 10077, + "nodeType": "UncheckedBlock", + "src": "2119:77:33", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 10075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 10071, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10062, + "src": "2165:2:33", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 10070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2157:7:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2157:7:33", + "typeDescriptions": {} + } + }, + "id": 10072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2157:11:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2150:6:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 10067, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2150:6:33", + "typeDescriptions": {} + } + }, + "id": 10073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2150:19:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10074, + "name": "REAL_ID_SHIFT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9965, + "src": "2172:13:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2150:35:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 10066, + "id": 10076, + "nodeType": "Return", + "src": "2143:42:33" + } + ] + } + ] + }, + "documentation": { + "id": 10060, + "nodeType": "StructuredDocumentation", + "src": "1890:151:33", + "text": " @dev Calculates the exponent from the id, which is `id - REAL_ID_SHIFT`\n @param id The id\n @return exponent The exponent" + }, + "id": 10079, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getExponent", + "nameLocation": "2055:11:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10062, + "mutability": "mutable", + "name": "id", + "nameLocation": "2074:2:33", + "nodeType": "VariableDeclaration", + "scope": 10079, + "src": "2067:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10061, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2067:6:33", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "2066:11:33" + }, + "returnParameters": { + "id": 10066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10065, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10079, + "src": "2101:6:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 10064, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2101:6:33", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "2100:8:33" + }, + "scope": 10114, + "src": "2046:156:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10095, + "nodeType": "Block", + "src": "2507:92:33", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10089, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "2548:9:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 10090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2558:12:33", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8099, + "src": "2548:22:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "expression": { + "id": 10091, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "2572:9:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 10092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2582:9:33", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8107, + "src": "2572:19:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 10087, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10082, + "src": "2524:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2530:17:33", + "memberName": "shiftDivRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 11678, + "src": "2524:23:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint8_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint8,uint256) pure returns (uint256)" + } + }, + "id": 10093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2524:68:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10086, + "id": 10094, + "nodeType": "Return", + "src": "2517:75:33" + } + ] + }, + "documentation": { + "id": 10080, + "nodeType": "StructuredDocumentation", + "src": "2208:209:33", + "text": " @dev Converts a price with 18 decimals to a 128.128-binary fixed-point number\n @param price The price with 18 decimals\n @return price128x128 The 128.128-binary fixed-point number" + }, + "id": 10096, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "convertDecimalPriceTo128x128", + "nameLocation": "2431:28:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10082, + "mutability": "mutable", + "name": "price", + "nameLocation": "2468:5:33", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "2460:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10081, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2460:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2459:15:33" + }, + "returnParameters": { + "id": 10086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10085, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10096, + "src": "2498:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2498:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2497:9:33" + }, + "scope": 10114, + "src": "2422:177:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10112, + "nodeType": "Block", + "src": "2911:99:33", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10106, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "2959:9:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 10107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2969:9:33", + "memberName": "PRECISION", + "nodeType": "MemberAccess", + "referencedDeclaration": 8107, + "src": "2959:19:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 10108, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "2980:9:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 10109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2990:12:33", + "memberName": "SCALE_OFFSET", + "nodeType": "MemberAccess", + "referencedDeclaration": 8099, + "src": "2980:22:33", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "id": 10104, + "name": "price128x128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10099, + "src": "2928:12:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2941:17:33", + "memberName": "mulShiftRoundDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 11598, + "src": "2928:30:33", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$attached_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 10110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2928:75:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10103, + "id": 10111, + "nodeType": "Return", + "src": "2921:82:33" + } + ] + }, + "documentation": { + "id": 10097, + "nodeType": "StructuredDocumentation", + "src": "2605:209:33", + "text": " @dev Converts a 128.128-binary fixed-point number to a price with 18 decimals\n @param price128x128 The 128.128-binary fixed-point number\n @return price The price with 18 decimals" + }, + "id": 10113, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "convert128x128PriceToDecimal", + "nameLocation": "2828:28:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10099, + "mutability": "mutable", + "name": "price128x128", + "nameLocation": "2865:12:33", + "nodeType": "VariableDeclaration", + "scope": 10113, + "src": "2857:20:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2857:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2856:22:33" + }, + "returnParameters": { + "id": 10103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10102, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10113, + "src": "2902:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2902:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2901:9:33" + }, + "scope": 10114, + "src": "2819:191:33", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10115, + "src": "386:2626:33", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:2980:33" + }, + "id": 33 + }, + "src/libraries/StringUtils.sol": { + "ast": { + "absolutePath": "src/libraries/StringUtils.sol", + "exportedSymbols": { + "StringUtils": [ + 10195 + ] + }, + "id": 10196, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10116, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "37:24:34" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "StringUtils", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 10195, + "linearizedBaseContracts": [ + 10195 + ], + "name": "StringUtils", + "nameLocation": "71:11:34", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 10193, + "nodeType": "Block", + "src": "165:441:34", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 10125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10123, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10118, + "src": "179:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "188:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "179:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10129, + "nodeType": "IfStatement", + "src": "175:51:34", + "trueBody": { + "id": 10128, + "nodeType": "Block", + "src": "191:35:34", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 10126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "212:3:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "functionReturnParameters": 10122, + "id": 10127, + "nodeType": "Return", + "src": "205:10:34" + } + ] + } + }, + { + "assignments": [ + 10131 + ], + "declarations": [ + { + "constant": false, + "id": 10131, + "mutability": "mutable", + "name": "temp", + "nameLocation": "242:4:34", + "nodeType": "VariableDeclaration", + "scope": 10193, + "src": "235:11:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10130, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "235:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "id": 10133, + "initialValue": { + "id": 10132, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10118, + "src": "249:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "235:19:34" + }, + { + "assignments": [ + 10135 + ], + "declarations": [ + { + "constant": false, + "id": 10135, + "mutability": "mutable", + "name": "digits", + "nameLocation": "271:6:34", + "nodeType": "VariableDeclaration", + "scope": 10193, + "src": "264:13:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10134, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "264:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "id": 10136, + "nodeType": "VariableDeclarationStatement", + "src": "264:13:34" + }, + { + "body": { + "id": 10147, + "nodeType": "Block", + "src": "305:57:34", + "statements": [ + { + "expression": { + "id": 10141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "319:8:34", + "subExpression": { + "id": 10140, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10135, + "src": "319:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 10142, + "nodeType": "ExpressionStatement", + "src": "319:8:34" + }, + { + "expression": { + "id": 10145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10143, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10131, + "src": "341:4:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "hexValue": "3130", + "id": 10144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "349:2:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "341:10:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 10146, + "nodeType": "ExpressionStatement", + "src": "341:10:34" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 10139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10137, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10131, + "src": "294:4:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 10138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "302:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "294:9:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10148, + "nodeType": "WhileStatement", + "src": "287:75:34" + }, + { + "assignments": [ + 10150 + ], + "declarations": [ + { + "constant": false, + "id": 10150, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "384:6:34", + "nodeType": "VariableDeclaration", + "scope": 10193, + "src": "371:19:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 10149, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "371:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 10155, + "initialValue": { + "arguments": [ + { + "id": 10153, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10135, + "src": "403:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "393:9:34", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 10151, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "397:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 10154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "393:17:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "371:39:34" + }, + { + "body": { + "id": 10186, + "nodeType": "Block", + "src": "439:130:34", + "statements": [ + { + "expression": { + "id": 10161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10159, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10135, + "src": "453:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "hexValue": "31", + "id": 10160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "463:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "453:11:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 10162, + "nodeType": "ExpressionStatement", + "src": "453:11:34" + }, + { + "expression": { + "id": 10180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 10163, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10150, + "src": "478:6:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 10165, + "indexExpression": { + "id": 10164, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10135, + "src": "485:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "478:14:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 10177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3438", + "id": 10170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "508:2:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 10175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10173, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10118, + "src": "520:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "3130", + "id": 10174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "528:2:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "520:10:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "513:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 10171, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "513:6:34", + "typeDescriptions": {} + } + }, + "id": 10176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "513:18:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "508:23:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 10169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "502:5:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 10168, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "502:5:34", + "typeDescriptions": {} + } + }, + "id": 10178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "502:30:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 10167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "495:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 10166, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "495:6:34", + "typeDescriptions": {} + } + }, + "id": 10179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "495:38:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "478:55:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 10181, + "nodeType": "ExpressionStatement", + "src": "478:55:34" + }, + { + "expression": { + "id": 10184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10182, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10118, + "src": "547:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "hexValue": "3130", + "id": 10183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "556:2:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "547:11:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 10185, + "nodeType": "ExpressionStatement", + "src": "547:11:34" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 10158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10156, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10118, + "src": "427:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 10157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "436:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "427:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10187, + "nodeType": "WhileStatement", + "src": "420:149:34" + }, + { + "expression": { + "arguments": [ + { + "id": 10190, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10150, + "src": "592:6:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 10189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "585:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 10188, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "585:6:34", + "typeDescriptions": {} + } + }, + "id": 10191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "585:14:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 10122, + "id": 10192, + "nodeType": "Return", + "src": "578:21:34" + } + ] + }, + "id": 10194, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uint16ToString", + "nameLocation": "98:14:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10118, + "mutability": "mutable", + "name": "value", + "nameLocation": "120:5:34", + "nodeType": "VariableDeclaration", + "scope": 10194, + "src": "113:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10117, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "113:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "112:14:34" + }, + "returnParameters": { + "id": 10122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10121, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10194, + "src": "150:13:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10120, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "150:6:34", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "149:15:34" + }, + "scope": 10195, + "src": "89:517:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10196, + "src": "63:545:34", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "37:572:34" + }, + "id": 34 + }, + "src/libraries/math/BitMath.sol": { + "ast": { + "absolutePath": "src/libraries/math/BitMath.sol", + "exportedSymbols": { + "BitMath": [ + 10289 + ] + }, + "id": 10290, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10197, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:35" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BitMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10198, + "nodeType": "StructuredDocumentation", + "src": "59:102:35", + "text": " @title Liquidity Book Bit Math Library\n @notice Helper contract used for bit calculations" + }, + "fullyImplemented": true, + "id": 10289, + "linearizedBaseContracts": [ + 10289 + ], + "name": "BitMath", + "nameLocation": "170:7:35", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 10235, + "nodeType": "Block", + "src": "600:260:35", + "statements": [ + { + "id": 10234, + "nodeType": "UncheckedBlock", + "src": "610:244:35", + "statements": [ + { + "assignments": [ + 10209 + ], + "declarations": [ + { + "constant": false, + "id": 10209, + "mutability": "mutable", + "name": "shift", + "nameLocation": "642:5:35", + "nodeType": "VariableDeclaration", + "scope": 10234, + "src": "634:13:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "634:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10213, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 10212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323535", + "id": 10210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "650:3:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10211, + "name": "bit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10203, + "src": "656:3:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "650:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "634:25:35" + }, + { + "expression": { + "id": 10216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10214, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10201, + "src": "673:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "id": 10215, + "name": "shift", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10209, + "src": "679:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "673:11:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10217, + "nodeType": "ExpressionStatement", + "src": "673:11:35" + }, + { + "expression": { + "condition": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10218, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10201, + "src": "784:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "789:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "784:6:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10221, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "783:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10228, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10201, + "src": "833:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10227, + "name": "mostSignificantBit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10278, + "src": "814:18:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 10229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "814:21:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10230, + "name": "shift", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10209, + "src": "838:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "814:29:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "783:60:35", + "trueExpression": { + "expression": { + "arguments": [ + { + "id": 10224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "799:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "799:7:35", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 10222, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "794:4:35", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "794:13:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 10226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "808:3:35", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "794:17:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10207, + "id": 10233, + "nodeType": "Return", + "src": "776:67:35" + } + ] + } + ] + }, + "documentation": { + "id": 10199, + "nodeType": "StructuredDocumentation", + "src": "184:329:35", + "text": " @dev Returns the index of the closest bit on the right of x that is non null\n @param x The value as a uint256\n @param bit The index of the bit to start searching at\n @return id The index of the closest non null bit on the right of x.\n If there is no closest bit, it returns max(uint256)" + }, + "id": 10236, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "closestBitRight", + "nameLocation": "527:15:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10201, + "mutability": "mutable", + "name": "x", + "nameLocation": "551:1:35", + "nodeType": "VariableDeclaration", + "scope": 10236, + "src": "543:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10200, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "543:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10203, + "mutability": "mutable", + "name": "bit", + "nameLocation": "560:3:35", + "nodeType": "VariableDeclaration", + "scope": 10236, + "src": "554:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10202, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "554:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "542:22:35" + }, + "returnParameters": { + "id": 10207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10206, + "mutability": "mutable", + "name": "id", + "nameLocation": "596:2:35", + "nodeType": "VariableDeclaration", + "scope": 10236, + "src": "588:10:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "588:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "587:12:35" + }, + "scope": 10289, + "src": "518:342:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10267, + "nodeType": "Block", + "src": "1279:141:35", + "statements": [ + { + "id": 10266, + "nodeType": "UncheckedBlock", + "src": "1289:125:35", + "statements": [ + { + "expression": { + "id": 10248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10246, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10239, + "src": "1313:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 10247, + "name": "bit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10241, + "src": "1319:3:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1313:9:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10249, + "nodeType": "ExpressionStatement", + "src": "1313:9:35" + }, + { + "expression": { + "condition": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10250, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10239, + "src": "1345:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 10251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1350:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1345:6:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 10253, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1344:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 10263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 10260, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10239, + "src": "1395:1:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10259, + "name": "leastSignificantBit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10288, + "src": "1375:19:35", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 10261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1375:22:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 10262, + "name": "bit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10241, + "src": "1400:3:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1375:28:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 10264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1344:59:35", + "trueExpression": { + "expression": { + "arguments": [ + { + "id": 10256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1360:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1360:7:35", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 10254, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "1355:4:35", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1355:13:35", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 10258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1369:3:35", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1355:17:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10245, + "id": 10265, + "nodeType": "Return", + "src": "1337:66:35" + } + ] + } + ] + }, + "documentation": { + "id": 10237, + "nodeType": "StructuredDocumentation", + "src": "866:327:35", + "text": " @dev Returns the index of the closest bit on the left of x that is non null\n @param x The value as a uint256\n @param bit The index of the bit to start searching at\n @return id The index of the closest non null bit on the left of x.\n If there is no closest bit, it returns max(uint256)" + }, + "id": 10268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "closestBitLeft", + "nameLocation": "1207:14:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10239, + "mutability": "mutable", + "name": "x", + "nameLocation": "1230:1:35", + "nodeType": "VariableDeclaration", + "scope": 10268, + "src": "1222:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1222:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10241, + "mutability": "mutable", + "name": "bit", + "nameLocation": "1239:3:35", + "nodeType": "VariableDeclaration", + "scope": 10268, + "src": "1233:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10240, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1233:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "1221:22:35" + }, + "returnParameters": { + "id": 10245, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10244, + "mutability": "mutable", + "name": "id", + "nameLocation": "1275:2:35", + "nodeType": "VariableDeclaration", + "scope": 10268, + "src": "1267:10:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10243, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1267:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1266:12:35" + }, + "scope": 10289, + "src": "1198:222:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10277, + "nodeType": "Block", + "src": "1720:898:35", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1739:873:35", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1798:75:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1816:16:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1825:3:35", + "type": "", + "value": "128" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1830:1:35" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1821:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "1821:11:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1816:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1849:10:35", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1856:3:35", + "type": "", + "value": "128" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "1849:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1759:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1762:34:35", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1756:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "1756:41:35" + }, + "nodeType": "YulIf", + "src": "1753:120:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1915:83:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1933:15:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1942:2:35", + "type": "", + "value": "64" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1946:1:35" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1938:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "1938:10:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1933:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1965:19:35", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "1976:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1981:2:35", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1972:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "1972:12:35" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "1965:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1892:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1895:18:35", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1889:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "1889:25:35" + }, + "nodeType": "YulIf", + "src": "1886:112:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2032:83:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2050:15:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2059:2:35", + "type": "", + "value": "32" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2063:1:35" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2055:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2055:10:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2050:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2082:19:35", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2093:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2098:2:35", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2089:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2089:12:35" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2082:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2017:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2020:10:35", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2014:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "2014:17:35" + }, + "nodeType": "YulIf", + "src": "2011:104:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2145:83:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2163:15:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2172:2:35", + "type": "", + "value": "16" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2176:1:35" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2168:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2168:10:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2163:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2195:19:35", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2206:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2211:2:35", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2202:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2202:12:35" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2195:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2134:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2137:6:35", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2131:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "2131:13:35" + }, + "nodeType": "YulIf", + "src": "2128:100:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2256:81:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2274:14:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2283:1:35", + "type": "", + "value": "8" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2286:1:35" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2279:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2279:9:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2274:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2305:18:35", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2316:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2321:1:35", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2312:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2312:11:35" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2305:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2247:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2250:4:35", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2244:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "2244:11:35" + }, + "nodeType": "YulIf", + "src": "2241:96:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2364:81:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2382:14:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2391:1:35", + "type": "", + "value": "4" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2394:1:35" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2387:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2387:9:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2382:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2413:18:35", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2424:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2429:1:35", + "type": "", + "value": "4" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2420:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2420:11:35" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2413:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2356:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2359:3:35", + "type": "", + "value": "0xf" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2353:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "2353:10:35" + }, + "nodeType": "YulIf", + "src": "2350:95:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2472:81:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2490:14:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2499:1:35", + "type": "", + "value": "2" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2502:1:35" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2495:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2495:9:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2490:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2521:18:35", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2532:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2537:1:35", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2528:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2528:11:35" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2521:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2464:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2467:3:35", + "type": "", + "value": "0x3" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2461:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "2461:10:35" + }, + "nodeType": "YulIf", + "src": "2458:95:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2580:22:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2582:18:35", + "value": { + "arguments": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2593:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2598:1:35", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2589:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2589:11:35" + }, + "variableNames": [ + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "2582:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2572:1:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2575:3:35", + "type": "", + "value": "0x1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2569:2:35" + }, + "nodeType": "YulFunctionCall", + "src": "2569:10:35" + }, + "nodeType": "YulIf", + "src": "2566:36:35" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "1849:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "1965:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "1976:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2082:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2093:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2195:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2206:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2305:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2316:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2413:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2424:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2521:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2532:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2582:3:35", + "valueSize": 1 + }, + { + "declaration": 10274, + "isOffset": false, + "isSlot": false, + "src": "2593:3:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "1759:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "1816:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "1830:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "1892:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "1933:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "1946:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2017:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2050:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2063:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2134:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2163:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2176:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2247:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2274:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2286:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2356:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2382:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2394:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2464:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2490:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2502:1:35", + "valueSize": 1 + }, + { + "declaration": 10271, + "isOffset": false, + "isSlot": false, + "src": "2572:1:35", + "valueSize": 1 + } + ], + "id": 10276, + "nodeType": "InlineAssembly", + "src": "1730:882:35" + } + ] + }, + "documentation": { + "id": 10269, + "nodeType": "StructuredDocumentation", + "src": "1426:216:35", + "text": " @dev Returns the index of the most significant bit of x\n This function returns 0 if x is 0\n @param x The value as a uint256\n @return msb The index of the most significant bit of x" + }, + "id": 10278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mostSignificantBit", + "nameLocation": "1656:18:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10271, + "mutability": "mutable", + "name": "x", + "nameLocation": "1683:1:35", + "nodeType": "VariableDeclaration", + "scope": 10278, + "src": "1675:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10270, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1675:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1674:11:35" + }, + "returnParameters": { + "id": 10275, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10274, + "mutability": "mutable", + "name": "msb", + "nameLocation": "1715:3:35", + "nodeType": "VariableDeclaration", + "scope": 10278, + "src": "1709:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10273, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1709:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "1708:11:35" + }, + "scope": 10289, + "src": "1647:971:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10287, + "nodeType": "Block", + "src": "2923:1097:35", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2942:1072:35", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2956:21:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2970:3:35", + "type": "", + "value": "128" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "2975:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2966:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "2966:11:35" + }, + "variables": [ + { + "name": "sx", + "nodeType": "YulTypedName", + "src": "2960:2:35", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3012:66:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3030:10:35", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3037:3:35", + "type": "", + "value": "128" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3030:3:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3057:7:35", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3062:2:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3057:1:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3007:2:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3000:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3000:10:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2993:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "2993:18:35" + }, + "nodeType": "YulIf", + "src": "2990:88:35" + }, + { + "nodeType": "YulAssignment", + "src": "3091:16:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3101:2:35", + "type": "", + "value": "64" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3105:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3097:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3097:10:35" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3091:2:35" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3142:75:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3160:7:35", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3165:2:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3160:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3184:19:35", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3195:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3200:2:35", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3191:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3191:12:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3184:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3137:2:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3130:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3130:10:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3123:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3123:18:35" + }, + "nodeType": "YulIf", + "src": "3120:97:35" + }, + { + "nodeType": "YulAssignment", + "src": "3230:16:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3240:2:35", + "type": "", + "value": "32" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3244:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3236:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3236:10:35" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3230:2:35" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3281:75:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3299:7:35", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3304:2:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3299:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3323:19:35", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3334:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3339:2:35", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3330:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3330:12:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3323:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3276:2:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3269:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3269:10:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3262:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3262:18:35" + }, + "nodeType": "YulIf", + "src": "3259:97:35" + }, + { + "nodeType": "YulAssignment", + "src": "3369:16:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3379:2:35", + "type": "", + "value": "16" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3383:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3375:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3375:10:35" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3369:2:35" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3420:75:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3438:7:35", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3443:2:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3438:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3462:19:35", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3473:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3478:2:35", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3469:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3469:12:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3462:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3415:2:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3408:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3408:10:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3401:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3401:18:35" + }, + "nodeType": "YulIf", + "src": "3398:97:35" + }, + { + "nodeType": "YulAssignment", + "src": "3508:15:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3518:1:35", + "type": "", + "value": "8" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3521:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3514:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3514:9:35" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3508:2:35" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3558:74:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3576:7:35", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3581:2:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3576:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3600:18:35", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3611:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3616:1:35", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3607:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3607:11:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3600:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3553:2:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3546:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3546:10:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3539:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3539:18:35" + }, + "nodeType": "YulIf", + "src": "3536:96:35" + }, + { + "nodeType": "YulAssignment", + "src": "3645:15:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3655:1:35", + "type": "", + "value": "4" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3658:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3651:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3651:9:35" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3645:2:35" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3695:74:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3713:7:35", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3718:2:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3713:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3737:18:35", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3748:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3753:1:35", + "type": "", + "value": "4" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3744:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3744:11:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3737:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3690:2:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3683:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3683:10:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3676:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3676:18:35" + }, + "nodeType": "YulIf", + "src": "3673:96:35" + }, + { + "nodeType": "YulAssignment", + "src": "3782:15:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3792:1:35", + "type": "", + "value": "2" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3795:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3788:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3788:9:35" + }, + "variableNames": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3782:2:35" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3832:74:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3850:7:35", + "value": { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3855:2:35" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3850:1:35" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3874:18:35", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3885:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3890:1:35", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3881:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3881:11:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3874:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "sx", + "nodeType": "YulIdentifier", + "src": "3827:2:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3820:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3820:10:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3813:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3813:18:35" + }, + "nodeType": "YulIf", + "src": "3810:96:35" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3948:22:35", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3950:18:35", + "value": { + "arguments": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3961:3:35" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3966:1:35", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3957:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3957:11:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3950:3:35" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3940:1:35", + "type": "", + "value": "1" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3943:1:35" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3936:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3936:9:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3929:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3929:17:35" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3922:6:35" + }, + "nodeType": "YulFunctionCall", + "src": "3922:25:35" + }, + "nodeType": "YulIf", + "src": "3919:51:35" + }, + { + "nodeType": "YulAssignment", + "src": "3984:20:35", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3995:3:35", + "type": "", + "value": "255" + }, + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "4000:3:35" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3991:3:35" + }, + "nodeType": "YulFunctionCall", + "src": "3991:13:35" + }, + "variableNames": [ + { + "name": "lsb", + "nodeType": "YulIdentifier", + "src": "3984:3:35" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3030:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3184:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3195:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3323:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3334:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3462:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3473:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3600:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3611:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3737:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3748:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3874:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3885:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3950:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3961:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "3984:3:35", + "valueSize": 1 + }, + { + "declaration": 10284, + "isOffset": false, + "isSlot": false, + "src": "4000:3:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "2975:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3057:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3105:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3160:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3244:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3299:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3383:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3438:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3521:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3576:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3658:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3713:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3795:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3850:1:35", + "valueSize": 1 + }, + { + "declaration": 10281, + "isOffset": false, + "isSlot": false, + "src": "3943:1:35", + "valueSize": 1 + } + ], + "id": 10286, + "nodeType": "InlineAssembly", + "src": "2933:1081:35" + } + ] + }, + "documentation": { + "id": 10279, + "nodeType": "StructuredDocumentation", + "src": "2624:220:35", + "text": " @dev Returns the index of the least significant bit of x\n This function returns 255 if x is 0\n @param x The value as a uint256\n @return lsb The index of the least significant bit of x" + }, + "id": 10288, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "leastSignificantBit", + "nameLocation": "2858:19:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10281, + "mutability": "mutable", + "name": "x", + "nameLocation": "2886:1:35", + "nodeType": "VariableDeclaration", + "scope": 10288, + "src": "2878:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2878:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2877:11:35" + }, + "returnParameters": { + "id": 10285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10284, + "mutability": "mutable", + "name": "lsb", + "nameLocation": "2918:3:35", + "nodeType": "VariableDeclaration", + "scope": 10288, + "src": "2912:9:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10283, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2912:5:35", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "2911:11:35" + }, + "scope": 10289, + "src": "2849:1171:35", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10290, + "src": "162:3860:35", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:3990:35" + }, + "id": 35 + }, + "src/libraries/math/Encoded.sol": { + "ast": { + "absolutePath": "src/libraries/math/Encoded.sol", + "exportedSymbols": { + "Encoded": [ + 10496 + ] + }, + "id": 10497, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10291, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:36" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Encoded", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10292, + "nodeType": "StructuredDocumentation", + "src": "59:108:36", + "text": " @title Liquidity Book Encoded Library\n @notice Helper contract used for decoding bytes32 sample" + }, + "fullyImplemented": true, + "id": 10496, + "linearizedBaseContracts": [ + 10496 + ], + "name": "Encoded", + "nameLocation": "176:7:36", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 10295, + "mutability": "constant", + "name": "MASK_UINT1", + "nameLocation": "216:10:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "190:42:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "190:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307831", + "id": 10294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "229:3:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x1" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10298, + "mutability": "constant", + "name": "MASK_UINT8", + "nameLocation": "264:10:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "238:43:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10296, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "238:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30786666", + "id": 10297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "277:4:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10301, + "mutability": "constant", + "name": "MASK_UINT12", + "nameLocation": "313:11:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "287:45:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "287:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3078666666", + "id": 10300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "327:5:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_4095_by_1", + "typeString": "int_const 4095" + }, + "value": "0xfff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10304, + "mutability": "constant", + "name": "MASK_UINT14", + "nameLocation": "364:11:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "338:46:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "338:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307833666666", + "id": 10303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "378:6:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_16383_by_1", + "typeString": "int_const 16383" + }, + "value": "0x3fff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10307, + "mutability": "constant", + "name": "MASK_UINT16", + "nameLocation": "416:11:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "390:46:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "390:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666", + "id": 10306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "430:6:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + }, + "value": "0xffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10310, + "mutability": "constant", + "name": "MASK_UINT20", + "nameLocation": "468:11:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "442:47:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "442:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30786666666666", + "id": 10309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "482:7:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1048575_by_1", + "typeString": "int_const 1048575" + }, + "value": "0xfffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10313, + "mutability": "constant", + "name": "MASK_UINT24", + "nameLocation": "521:11:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "495:48:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "495:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3078666666666666", + "id": 10312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "535:8:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_16777215_by_1", + "typeString": "int_const 16777215" + }, + "value": "0xffffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10316, + "mutability": "constant", + "name": "MASK_UINT40", + "nameLocation": "575:11:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "549:52:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "549:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666666666666666", + "id": 10315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "589:12:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1099511627775_by_1", + "typeString": "int_const 1099511627775" + }, + "value": "0xffffffffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10319, + "mutability": "constant", + "name": "MASK_UINT64", + "nameLocation": "633:11:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "607:58:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "607:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307866666666666666666666666666666666", + "id": 10318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "647:18:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + }, + "value": "0xffffffffffffffff" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 10322, + "mutability": "constant", + "name": "MASK_UINT128", + "nameLocation": "697:12:36", + "nodeType": "VariableDeclaration", + "scope": 10496, + "src": "671:75:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666", + "id": 10321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "712:34:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "value": "0xffffffffffffffffffffffffffffffff" + }, + "visibility": "internal" + }, + { + "body": { + "id": 10337, + "nodeType": "Block", + "src": "1245:171:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "1264:146:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1278:50:36", + "value": { + "arguments": [ + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "1296:7:36" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1313:6:36" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "1321:4:36" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1309:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "1309:17:36" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1305:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "1305:22:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1292:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "1292:36:36" + }, + "variableNames": [ + { + "name": "newEncoded", + "nodeType": "YulIdentifier", + "src": "1278:10:36" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1341:59:36", + "value": { + "arguments": [ + { + "name": "newEncoded", + "nodeType": "YulIdentifier", + "src": "1358:10:36" + }, + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1374:6:36" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1386:5:36" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "1393:4:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1382:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "1382:16:36" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1370:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "1370:29:36" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1355:2:36" + }, + "nodeType": "YulFunctionCall", + "src": "1355:45:36" + }, + "variableNames": [ + { + "name": "newEncoded", + "nodeType": "YulIdentifier", + "src": "1341:10:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10325, + "isOffset": false, + "isSlot": false, + "src": "1296:7:36", + "valueSize": 1 + }, + { + "declaration": 10329, + "isOffset": false, + "isSlot": false, + "src": "1321:4:36", + "valueSize": 1 + }, + { + "declaration": 10329, + "isOffset": false, + "isSlot": false, + "src": "1393:4:36", + "valueSize": 1 + }, + { + "declaration": 10334, + "isOffset": false, + "isSlot": false, + "src": "1278:10:36", + "valueSize": 1 + }, + { + "declaration": 10334, + "isOffset": false, + "isSlot": false, + "src": "1341:10:36", + "valueSize": 1 + }, + { + "declaration": 10334, + "isOffset": false, + "isSlot": false, + "src": "1358:10:36", + "valueSize": 1 + }, + { + "declaration": 10331, + "isOffset": false, + "isSlot": false, + "src": "1313:6:36", + "valueSize": 1 + }, + { + "declaration": 10331, + "isOffset": false, + "isSlot": false, + "src": "1374:6:36", + "valueSize": 1 + }, + { + "declaration": 10327, + "isOffset": false, + "isSlot": false, + "src": "1386:5:36", + "valueSize": 1 + } + ], + "id": 10336, + "nodeType": "InlineAssembly", + "src": "1255:155:36" + } + ] + }, + "documentation": { + "id": 10323, + "nodeType": "StructuredDocumentation", + "src": "753:341:36", + "text": " @notice Internal function to set a value in an encoded bytes32 using a mask and offset\n @dev This function can overflow\n @param encoded The previous encoded value\n @param value The value to encode\n @param mask The mask\n @param offset The offset\n @return newEncoded The new encoded value" + }, + "id": 10338, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "1108:3:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10325, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "1120:7:36", + "nodeType": "VariableDeclaration", + "scope": 10338, + "src": "1112:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10324, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1112:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10327, + "mutability": "mutable", + "name": "value", + "nameLocation": "1137:5:36", + "nodeType": "VariableDeclaration", + "scope": 10338, + "src": "1129:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1129:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10329, + "mutability": "mutable", + "name": "mask", + "nameLocation": "1152:4:36", + "nodeType": "VariableDeclaration", + "scope": 10338, + "src": "1144:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10328, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1144:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10331, + "mutability": "mutable", + "name": "offset", + "nameLocation": "1166:6:36", + "nodeType": "VariableDeclaration", + "scope": 10338, + "src": "1158:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10330, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1158:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1111:62:36" + }, + "returnParameters": { + "id": 10335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10334, + "mutability": "mutable", + "name": "newEncoded", + "nameLocation": "1229:10:36", + "nodeType": "VariableDeclaration", + "scope": 10338, + "src": "1221:18:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10333, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1221:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1220:20:36" + }, + "scope": 10496, + "src": "1099:317:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10360, + "nodeType": "Block", + "src": "1839:73:36", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10351, + "name": "encoded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10341, + "src": "1860:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "condition": { + "id": 10352, + "name": "boolean", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10343, + "src": "1869:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 10354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1883:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 10355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1869:15:36", + "trueExpression": { + "hexValue": "31", + "id": 10353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1879:1:36", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 10356, + "name": "MASK_UINT1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10295, + "src": "1886:10:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10357, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10345, + "src": "1898:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10350, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10338, + "src": "1856:3:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 10358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1856:49:36", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 10349, + "id": 10359, + "nodeType": "Return", + "src": "1849:56:36" + } + ] + }, + "documentation": { + "id": 10339, + "nodeType": "StructuredDocumentation", + "src": "1422:305:36", + "text": " @notice Internal function to set a bool in an encoded bytes32 using an offset\n @dev This function can overflow\n @param encoded The previous encoded value\n @param boolean The bool to encode\n @param offset The offset\n @return newEncoded The new encoded value" + }, + "id": 10361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setBool", + "nameLocation": "1741:7:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10341, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "1757:7:36", + "nodeType": "VariableDeclaration", + "scope": 10361, + "src": "1749:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10340, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1749:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10343, + "mutability": "mutable", + "name": "boolean", + "nameLocation": "1771:7:36", + "nodeType": "VariableDeclaration", + "scope": 10361, + "src": "1766:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10342, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1766:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10345, + "mutability": "mutable", + "name": "offset", + "nameLocation": "1788:6:36", + "nodeType": "VariableDeclaration", + "scope": 10361, + "src": "1780:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10344, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1780:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1748:47:36" + }, + "returnParameters": { + "id": 10349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10348, + "mutability": "mutable", + "name": "newEncoded", + "nameLocation": "1827:10:36", + "nodeType": "VariableDeclaration", + "scope": 10361, + "src": "1819:18:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10347, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1819:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1818:20:36" + }, + "scope": 10496, + "src": "1732:180:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10374, + "nodeType": "Block", + "src": "2297:89:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2316:64:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2330:40:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2347:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "2355:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2343:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "2343:20:36" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "2365:4:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2339:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "2339:31:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2330:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10364, + "isOffset": false, + "isSlot": false, + "src": "2355:7:36", + "valueSize": 1 + }, + { + "declaration": 10366, + "isOffset": false, + "isSlot": false, + "src": "2365:4:36", + "valueSize": 1 + }, + { + "declaration": 10368, + "isOffset": false, + "isSlot": false, + "src": "2347:6:36", + "valueSize": 1 + }, + { + "declaration": 10371, + "isOffset": false, + "isSlot": false, + "src": "2330:5:36", + "valueSize": 1 + } + ], + "id": 10373, + "nodeType": "InlineAssembly", + "src": "2307:73:36" + } + ] + }, + "documentation": { + "id": 10362, + "nodeType": "StructuredDocumentation", + "src": "1918:273:36", + "text": " @notice Internal function to decode a bytes32 sample using a mask and offset\n @dev This function can overflow\n @param encoded The encoded value\n @param mask The mask\n @param offset The offset\n @return value The decoded value" + }, + "id": 10375, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decode", + "nameLocation": "2205:6:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10364, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "2220:7:36", + "nodeType": "VariableDeclaration", + "scope": 10375, + "src": "2212:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10363, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2212:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10366, + "mutability": "mutable", + "name": "mask", + "nameLocation": "2237:4:36", + "nodeType": "VariableDeclaration", + "scope": 10375, + "src": "2229:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2229:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10368, + "mutability": "mutable", + "name": "offset", + "nameLocation": "2251:6:36", + "nodeType": "VariableDeclaration", + "scope": 10375, + "src": "2243:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2243:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2211:47:36" + }, + "returnParameters": { + "id": 10372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10371, + "mutability": "mutable", + "name": "value", + "nameLocation": "2290:5:36", + "nodeType": "VariableDeclaration", + "scope": 10375, + "src": "2282:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2282:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2281:15:36" + }, + "scope": 10496, + "src": "2196:190:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10386, + "nodeType": "Block", + "src": "2748:97:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "2767:72:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2781:48:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2800:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "2808:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2796:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "2796:20:36" + }, + { + "name": "MASK_UINT1", + "nodeType": "YulIdentifier", + "src": "2818:10:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2792:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "2792:37:36" + }, + "variableNames": [ + { + "name": "boolean", + "nodeType": "YulIdentifier", + "src": "2781:7:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10295, + "isOffset": false, + "isSlot": false, + "src": "2818:10:36", + "valueSize": 1 + }, + { + "declaration": 10383, + "isOffset": false, + "isSlot": false, + "src": "2781:7:36", + "valueSize": 1 + }, + { + "declaration": 10378, + "isOffset": false, + "isSlot": false, + "src": "2808:7:36", + "valueSize": 1 + }, + { + "declaration": 10380, + "isOffset": false, + "isSlot": false, + "src": "2800:6:36", + "valueSize": 1 + } + ], + "id": 10385, + "nodeType": "InlineAssembly", + "src": "2758:81:36" + } + ] + }, + "documentation": { + "id": 10376, + "nodeType": "StructuredDocumentation", + "src": "2392:261:36", + "text": " @notice Internal function to decode a bytes32 sample into a bool using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return boolean The decoded value as a bool" + }, + "id": 10387, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeBool", + "nameLocation": "2667:10:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10378, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "2686:7:36", + "nodeType": "VariableDeclaration", + "scope": 10387, + "src": "2678:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10377, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2678:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10380, + "mutability": "mutable", + "name": "offset", + "nameLocation": "2703:6:36", + "nodeType": "VariableDeclaration", + "scope": 10387, + "src": "2695:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2695:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2677:33:36" + }, + "returnParameters": { + "id": 10384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10383, + "mutability": "mutable", + "name": "boolean", + "nameLocation": "2739:7:36", + "nodeType": "VariableDeclaration", + "scope": 10387, + "src": "2734:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10382, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2734:4:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2733:14:36" + }, + "scope": 10496, + "src": "2658:187:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10398, + "nodeType": "Block", + "src": "3196:95:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3215:70:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3229:46:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3246:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "3254:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "3242:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "3242:20:36" + }, + { + "name": "MASK_UINT8", + "nodeType": "YulIdentifier", + "src": "3264:10:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3238:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "3238:37:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3229:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10298, + "isOffset": false, + "isSlot": false, + "src": "3264:10:36", + "valueSize": 1 + }, + { + "declaration": 10390, + "isOffset": false, + "isSlot": false, + "src": "3254:7:36", + "valueSize": 1 + }, + { + "declaration": 10392, + "isOffset": false, + "isSlot": false, + "src": "3246:6:36", + "valueSize": 1 + }, + { + "declaration": 10395, + "isOffset": false, + "isSlot": false, + "src": "3229:5:36", + "valueSize": 1 + } + ], + "id": 10397, + "nodeType": "InlineAssembly", + "src": "3206:79:36" + } + ] + }, + "documentation": { + "id": 10388, + "nodeType": "StructuredDocumentation", + "src": "2851:250:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint8 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10399, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint8", + "nameLocation": "3115:11:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10390, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "3135:7:36", + "nodeType": "VariableDeclaration", + "scope": 10399, + "src": "3127:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10389, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3127:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10392, + "mutability": "mutable", + "name": "offset", + "nameLocation": "3152:6:36", + "nodeType": "VariableDeclaration", + "scope": 10399, + "src": "3144:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3144:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3126:33:36" + }, + "returnParameters": { + "id": 10396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10395, + "mutability": "mutable", + "name": "value", + "nameLocation": "3189:5:36", + "nodeType": "VariableDeclaration", + "scope": 10399, + "src": "3183:11:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 10394, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3183:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3182:13:36" + }, + "scope": 10496, + "src": "3106:185:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10410, + "nodeType": "Block", + "src": "3688:96:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "3707:71:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3721:47:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3738:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "3746:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "3734:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "3734:20:36" + }, + { + "name": "MASK_UINT12", + "nodeType": "YulIdentifier", + "src": "3756:11:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3730:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "3730:38:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3721:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10301, + "isOffset": false, + "isSlot": false, + "src": "3756:11:36", + "valueSize": 1 + }, + { + "declaration": 10402, + "isOffset": false, + "isSlot": false, + "src": "3746:7:36", + "valueSize": 1 + }, + { + "declaration": 10404, + "isOffset": false, + "isSlot": false, + "src": "3738:6:36", + "valueSize": 1 + }, + { + "declaration": 10407, + "isOffset": false, + "isSlot": false, + "src": "3721:5:36", + "valueSize": 1 + } + ], + "id": 10409, + "nodeType": "InlineAssembly", + "src": "3698:80:36" + } + ] + }, + "documentation": { + "id": 10400, + "nodeType": "StructuredDocumentation", + "src": "3297:294:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint12 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value as a uint16, since uint12 is not supported" + }, + "id": 10411, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint12", + "nameLocation": "3605:12:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10402, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "3626:7:36", + "nodeType": "VariableDeclaration", + "scope": 10411, + "src": "3618:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3618:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10404, + "mutability": "mutable", + "name": "offset", + "nameLocation": "3643:6:36", + "nodeType": "VariableDeclaration", + "scope": 10411, + "src": "3635:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3635:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3617:33:36" + }, + "returnParameters": { + "id": 10408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10407, + "mutability": "mutable", + "name": "value", + "nameLocation": "3681:5:36", + "nodeType": "VariableDeclaration", + "scope": 10411, + "src": "3674:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10406, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3674:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3673:14:36" + }, + "scope": 10496, + "src": "3596:188:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10422, + "nodeType": "Block", + "src": "4181:96:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "4200:71:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4214:47:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4231:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "4239:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4227:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "4227:20:36" + }, + { + "name": "MASK_UINT14", + "nodeType": "YulIdentifier", + "src": "4249:11:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4223:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "4223:38:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4214:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10304, + "isOffset": false, + "isSlot": false, + "src": "4249:11:36", + "valueSize": 1 + }, + { + "declaration": 10414, + "isOffset": false, + "isSlot": false, + "src": "4239:7:36", + "valueSize": 1 + }, + { + "declaration": 10416, + "isOffset": false, + "isSlot": false, + "src": "4231:6:36", + "valueSize": 1 + }, + { + "declaration": 10419, + "isOffset": false, + "isSlot": false, + "src": "4214:5:36", + "valueSize": 1 + } + ], + "id": 10421, + "nodeType": "InlineAssembly", + "src": "4191:80:36" + } + ] + }, + "documentation": { + "id": 10412, + "nodeType": "StructuredDocumentation", + "src": "3790:294:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint14 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value as a uint16, since uint14 is not supported" + }, + "id": 10423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint14", + "nameLocation": "4098:12:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10414, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "4119:7:36", + "nodeType": "VariableDeclaration", + "scope": 10423, + "src": "4111:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10413, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4111:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10416, + "mutability": "mutable", + "name": "offset", + "nameLocation": "4136:6:36", + "nodeType": "VariableDeclaration", + "scope": 10423, + "src": "4128:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4128:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4110:33:36" + }, + "returnParameters": { + "id": 10420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10419, + "mutability": "mutable", + "name": "value", + "nameLocation": "4174:5:36", + "nodeType": "VariableDeclaration", + "scope": 10423, + "src": "4167:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10418, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4167:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4166:14:36" + }, + "scope": 10496, + "src": "4089:188:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10434, + "nodeType": "Block", + "src": "4631:96:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "4650:71:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4664:47:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4681:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "4689:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4677:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "4677:20:36" + }, + { + "name": "MASK_UINT16", + "nodeType": "YulIdentifier", + "src": "4699:11:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4673:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "4673:38:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4664:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10307, + "isOffset": false, + "isSlot": false, + "src": "4699:11:36", + "valueSize": 1 + }, + { + "declaration": 10426, + "isOffset": false, + "isSlot": false, + "src": "4689:7:36", + "valueSize": 1 + }, + { + "declaration": 10428, + "isOffset": false, + "isSlot": false, + "src": "4681:6:36", + "valueSize": 1 + }, + { + "declaration": 10431, + "isOffset": false, + "isSlot": false, + "src": "4664:5:36", + "valueSize": 1 + } + ], + "id": 10433, + "nodeType": "InlineAssembly", + "src": "4641:80:36" + } + ] + }, + "documentation": { + "id": 10424, + "nodeType": "StructuredDocumentation", + "src": "4283:251:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint16 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10435, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint16", + "nameLocation": "4548:12:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10426, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "4569:7:36", + "nodeType": "VariableDeclaration", + "scope": 10435, + "src": "4561:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10425, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4561:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10428, + "mutability": "mutable", + "name": "offset", + "nameLocation": "4586:6:36", + "nodeType": "VariableDeclaration", + "scope": 10435, + "src": "4578:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4578:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4560:33:36" + }, + "returnParameters": { + "id": 10432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10431, + "mutability": "mutable", + "name": "value", + "nameLocation": "4624:5:36", + "nodeType": "VariableDeclaration", + "scope": 10435, + "src": "4617:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 10430, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "4617:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "4616:14:36" + }, + "scope": 10496, + "src": "4539:188:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10446, + "nodeType": "Block", + "src": "5124:96:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5143:71:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5157:47:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5174:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "5182:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5170:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "5170:20:36" + }, + { + "name": "MASK_UINT20", + "nodeType": "YulIdentifier", + "src": "5192:11:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5166:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "5166:38:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5157:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10310, + "isOffset": false, + "isSlot": false, + "src": "5192:11:36", + "valueSize": 1 + }, + { + "declaration": 10438, + "isOffset": false, + "isSlot": false, + "src": "5182:7:36", + "valueSize": 1 + }, + { + "declaration": 10440, + "isOffset": false, + "isSlot": false, + "src": "5174:6:36", + "valueSize": 1 + }, + { + "declaration": 10443, + "isOffset": false, + "isSlot": false, + "src": "5157:5:36", + "valueSize": 1 + } + ], + "id": 10445, + "nodeType": "InlineAssembly", + "src": "5134:80:36" + } + ] + }, + "documentation": { + "id": 10436, + "nodeType": "StructuredDocumentation", + "src": "4733:294:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint20 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value as a uint24, since uint20 is not supported" + }, + "id": 10447, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint20", + "nameLocation": "5041:12:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10438, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "5062:7:36", + "nodeType": "VariableDeclaration", + "scope": 10447, + "src": "5054:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5054:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10440, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5079:6:36", + "nodeType": "VariableDeclaration", + "scope": 10447, + "src": "5071:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5071:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5053:33:36" + }, + "returnParameters": { + "id": 10444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10443, + "mutability": "mutable", + "name": "value", + "nameLocation": "5117:5:36", + "nodeType": "VariableDeclaration", + "scope": 10447, + "src": "5110:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10442, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5110:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5109:14:36" + }, + "scope": 10496, + "src": "5032:188:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10458, + "nodeType": "Block", + "src": "5574:96:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5593:71:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5607:47:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5624:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "5632:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5620:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "5620:20:36" + }, + { + "name": "MASK_UINT24", + "nodeType": "YulIdentifier", + "src": "5642:11:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5616:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "5616:38:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5607:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10313, + "isOffset": false, + "isSlot": false, + "src": "5642:11:36", + "valueSize": 1 + }, + { + "declaration": 10450, + "isOffset": false, + "isSlot": false, + "src": "5632:7:36", + "valueSize": 1 + }, + { + "declaration": 10452, + "isOffset": false, + "isSlot": false, + "src": "5624:6:36", + "valueSize": 1 + }, + { + "declaration": 10455, + "isOffset": false, + "isSlot": false, + "src": "5607:5:36", + "valueSize": 1 + } + ], + "id": 10457, + "nodeType": "InlineAssembly", + "src": "5584:80:36" + } + ] + }, + "documentation": { + "id": 10448, + "nodeType": "StructuredDocumentation", + "src": "5226:251:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint24 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10459, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint24", + "nameLocation": "5491:12:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10450, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "5512:7:36", + "nodeType": "VariableDeclaration", + "scope": 10459, + "src": "5504:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10449, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5504:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10452, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5529:6:36", + "nodeType": "VariableDeclaration", + "scope": 10459, + "src": "5521:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5521:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5503:33:36" + }, + "returnParameters": { + "id": 10456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10455, + "mutability": "mutable", + "name": "value", + "nameLocation": "5567:5:36", + "nodeType": "VariableDeclaration", + "scope": 10459, + "src": "5560:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 10454, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "5560:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "5559:14:36" + }, + "scope": 10496, + "src": "5482:188:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10470, + "nodeType": "Block", + "src": "6024:96:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6043:71:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6057:47:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6074:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "6082:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6070:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "6070:20:36" + }, + { + "name": "MASK_UINT40", + "nodeType": "YulIdentifier", + "src": "6092:11:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6066:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "6066:38:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6057:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10316, + "isOffset": false, + "isSlot": false, + "src": "6092:11:36", + "valueSize": 1 + }, + { + "declaration": 10462, + "isOffset": false, + "isSlot": false, + "src": "6082:7:36", + "valueSize": 1 + }, + { + "declaration": 10464, + "isOffset": false, + "isSlot": false, + "src": "6074:6:36", + "valueSize": 1 + }, + { + "declaration": 10467, + "isOffset": false, + "isSlot": false, + "src": "6057:5:36", + "valueSize": 1 + } + ], + "id": 10469, + "nodeType": "InlineAssembly", + "src": "6034:80:36" + } + ] + }, + "documentation": { + "id": 10460, + "nodeType": "StructuredDocumentation", + "src": "5676:251:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint40 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint40", + "nameLocation": "5941:12:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10462, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "5962:7:36", + "nodeType": "VariableDeclaration", + "scope": 10471, + "src": "5954:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10461, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5954:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10464, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5979:6:36", + "nodeType": "VariableDeclaration", + "scope": 10471, + "src": "5971:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5971:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5953:33:36" + }, + "returnParameters": { + "id": 10468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10467, + "mutability": "mutable", + "name": "value", + "nameLocation": "6017:5:36", + "nodeType": "VariableDeclaration", + "scope": 10471, + "src": "6010:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 10466, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "6010:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "6009:14:36" + }, + "scope": 10496, + "src": "5932:188:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10482, + "nodeType": "Block", + "src": "6474:96:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6493:71:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6507:47:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6524:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "6532:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6520:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "6520:20:36" + }, + { + "name": "MASK_UINT64", + "nodeType": "YulIdentifier", + "src": "6542:11:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6516:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "6516:38:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6507:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10319, + "isOffset": false, + "isSlot": false, + "src": "6542:11:36", + "valueSize": 1 + }, + { + "declaration": 10474, + "isOffset": false, + "isSlot": false, + "src": "6532:7:36", + "valueSize": 1 + }, + { + "declaration": 10476, + "isOffset": false, + "isSlot": false, + "src": "6524:6:36", + "valueSize": 1 + }, + { + "declaration": 10479, + "isOffset": false, + "isSlot": false, + "src": "6507:5:36", + "valueSize": 1 + } + ], + "id": 10481, + "nodeType": "InlineAssembly", + "src": "6484:80:36" + } + ] + }, + "documentation": { + "id": 10472, + "nodeType": "StructuredDocumentation", + "src": "6126:251:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint64 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10483, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint64", + "nameLocation": "6391:12:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10474, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "6412:7:36", + "nodeType": "VariableDeclaration", + "scope": 10483, + "src": "6404:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10473, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6404:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10476, + "mutability": "mutable", + "name": "offset", + "nameLocation": "6429:6:36", + "nodeType": "VariableDeclaration", + "scope": 10483, + "src": "6421:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6421:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6403:33:36" + }, + "returnParameters": { + "id": 10480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10479, + "mutability": "mutable", + "name": "value", + "nameLocation": "6467:5:36", + "nodeType": "VariableDeclaration", + "scope": 10483, + "src": "6460:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 10478, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6460:6:36", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "6459:14:36" + }, + "scope": 10496, + "src": "6382:188:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10494, + "nodeType": "Block", + "src": "6927:97:36", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6946:72:36", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6960:48:36", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6977:6:36" + }, + { + "name": "encoded", + "nodeType": "YulIdentifier", + "src": "6985:7:36" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6973:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "6973:20:36" + }, + { + "name": "MASK_UINT128", + "nodeType": "YulIdentifier", + "src": "6995:12:36" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6969:3:36" + }, + "nodeType": "YulFunctionCall", + "src": "6969:39:36" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6960:5:36" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 10322, + "isOffset": false, + "isSlot": false, + "src": "6995:12:36", + "valueSize": 1 + }, + { + "declaration": 10486, + "isOffset": false, + "isSlot": false, + "src": "6985:7:36", + "valueSize": 1 + }, + { + "declaration": 10488, + "isOffset": false, + "isSlot": false, + "src": "6977:6:36", + "valueSize": 1 + }, + { + "declaration": 10491, + "isOffset": false, + "isSlot": false, + "src": "6960:5:36", + "valueSize": 1 + } + ], + "id": 10493, + "nodeType": "InlineAssembly", + "src": "6937:81:36" + } + ] + }, + "documentation": { + "id": 10484, + "nodeType": "StructuredDocumentation", + "src": "6576:252:36", + "text": " @notice Internal function to decode a bytes32 sample into a uint128 using an offset\n @dev This function can overflow\n @param encoded The encoded value\n @param offset The offset\n @return value The decoded value" + }, + "id": 10495, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decodeUint128", + "nameLocation": "6842:13:36", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10486, + "mutability": "mutable", + "name": "encoded", + "nameLocation": "6864:7:36", + "nodeType": "VariableDeclaration", + "scope": 10495, + "src": "6856:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10485, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6856:7:36", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10488, + "mutability": "mutable", + "name": "offset", + "nameLocation": "6881:6:36", + "nodeType": "VariableDeclaration", + "scope": 10495, + "src": "6873:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6873:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6855:33:36" + }, + "returnParameters": { + "id": 10492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10491, + "mutability": "mutable", + "name": "value", + "nameLocation": "6920:5:36", + "nodeType": "VariableDeclaration", + "scope": 10495, + "src": "6912:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 10490, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6912:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "6911:15:36" + }, + "scope": 10496, + "src": "6833:191:36", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10497, + "src": "168:6858:36", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "33:6994:36" + }, + "id": 36 + }, + "src/libraries/math/SafeCast.sol": { + "ast": { + "absolutePath": "src/libraries/math/SafeCast.sol", + "exportedSymbols": { + "SafeCast": [ + 11244 + ] + }, + "id": 11245, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10498, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:37" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeCast", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 10499, + "nodeType": "StructuredDocumentation", + "src": "59:141:37", + "text": " @title Liquidity Book Safe Cast Library\n @notice This library contains functions to safely cast uint256 to different uint types." + }, + "fullyImplemented": true, + "id": 11244, + "linearizedBaseContracts": [ + 11244 + ], + "name": "SafeCast", + "nameLocation": "209:8:37", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "43309043", + "id": 10501, + "name": "SafeCast__Exceeds248Bits", + "nameLocation": "230:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10500, + "nodeType": "ParameterList", + "parameters": [], + "src": "254:2:37" + }, + "src": "224:33:37" + }, + { + "errorSelector": "23168091", + "id": 10503, + "name": "SafeCast__Exceeds240Bits", + "nameLocation": "268:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10502, + "nodeType": "ParameterList", + "parameters": [], + "src": "292:2:37" + }, + "src": "262:33:37" + }, + { + "errorSelector": "e071bc6c", + "id": 10505, + "name": "SafeCast__Exceeds232Bits", + "nameLocation": "306:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10504, + "nodeType": "ParameterList", + "parameters": [], + "src": "330:2:37" + }, + "src": "300:33:37" + }, + { + "errorSelector": "c1374949", + "id": 10507, + "name": "SafeCast__Exceeds224Bits", + "nameLocation": "344:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10506, + "nodeType": "ParameterList", + "parameters": [], + "src": "368:2:37" + }, + "src": "338:33:37" + }, + { + "errorSelector": "28125e51", + "id": 10509, + "name": "SafeCast__Exceeds216Bits", + "nameLocation": "382:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10508, + "nodeType": "ParameterList", + "parameters": [], + "src": "406:2:37" + }, + "src": "376:33:37" + }, + { + "errorSelector": "e29314f0", + "id": 10511, + "name": "SafeCast__Exceeds208Bits", + "nameLocation": "420:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10510, + "nodeType": "ParameterList", + "parameters": [], + "src": "444:2:37" + }, + "src": "414:33:37" + }, + { + "errorSelector": "8c307999", + "id": 10513, + "name": "SafeCast__Exceeds200Bits", + "nameLocation": "458:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10512, + "nodeType": "ParameterList", + "parameters": [], + "src": "482:2:37" + }, + "src": "452:33:37" + }, + { + "errorSelector": "762bc6eb", + "id": 10515, + "name": "SafeCast__Exceeds192Bits", + "nameLocation": "496:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10514, + "nodeType": "ParameterList", + "parameters": [], + "src": "520:2:37" + }, + "src": "490:33:37" + }, + { + "errorSelector": "f6cedbe8", + "id": 10517, + "name": "SafeCast__Exceeds184Bits", + "nameLocation": "534:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10516, + "nodeType": "ParameterList", + "parameters": [], + "src": "558:2:37" + }, + "src": "528:33:37" + }, + { + "errorSelector": "b19778dd", + "id": 10519, + "name": "SafeCast__Exceeds176Bits", + "nameLocation": "572:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10518, + "nodeType": "ParameterList", + "parameters": [], + "src": "596:2:37" + }, + "src": "566:33:37" + }, + { + "errorSelector": "5d103a95", + "id": 10521, + "name": "SafeCast__Exceeds168Bits", + "nameLocation": "610:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10520, + "nodeType": "ParameterList", + "parameters": [], + "src": "634:2:37" + }, + "src": "604:33:37" + }, + { + "errorSelector": "2de55695", + "id": 10523, + "name": "SafeCast__Exceeds160Bits", + "nameLocation": "648:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10522, + "nodeType": "ParameterList", + "parameters": [], + "src": "672:2:37" + }, + "src": "642:33:37" + }, + { + "errorSelector": "2176a06f", + "id": 10525, + "name": "SafeCast__Exceeds152Bits", + "nameLocation": "686:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10524, + "nodeType": "ParameterList", + "parameters": [], + "src": "710:2:37" + }, + "src": "680:33:37" + }, + { + "errorSelector": "7696a631", + "id": 10527, + "name": "SafeCast__Exceeds144Bits", + "nameLocation": "724:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10526, + "nodeType": "ParameterList", + "parameters": [], + "src": "748:2:37" + }, + "src": "718:33:37" + }, + { + "errorSelector": "febf6c60", + "id": 10529, + "name": "SafeCast__Exceeds136Bits", + "nameLocation": "762:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10528, + "nodeType": "ParameterList", + "parameters": [], + "src": "786:2:37" + }, + "src": "756:33:37" + }, + { + "errorSelector": "bd176cf4", + "id": 10531, + "name": "SafeCast__Exceeds128Bits", + "nameLocation": "800:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10530, + "nodeType": "ParameterList", + "parameters": [], + "src": "824:2:37" + }, + "src": "794:33:37" + }, + { + "errorSelector": "e3780e2a", + "id": 10533, + "name": "SafeCast__Exceeds120Bits", + "nameLocation": "838:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10532, + "nodeType": "ParameterList", + "parameters": [], + "src": "862:2:37" + }, + "src": "832:33:37" + }, + { + "errorSelector": "2887faea", + "id": 10535, + "name": "SafeCast__Exceeds112Bits", + "nameLocation": "876:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10534, + "nodeType": "ParameterList", + "parameters": [], + "src": "900:2:37" + }, + "src": "870:33:37" + }, + { + "errorSelector": "10f74066", + "id": 10537, + "name": "SafeCast__Exceeds104Bits", + "nameLocation": "914:24:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10536, + "nodeType": "ParameterList", + "parameters": [], + "src": "938:2:37" + }, + "src": "908:33:37" + }, + { + "errorSelector": "64590320", + "id": 10539, + "name": "SafeCast__Exceeds96Bits", + "nameLocation": "952:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10538, + "nodeType": "ParameterList", + "parameters": [], + "src": "975:2:37" + }, + "src": "946:32:37" + }, + { + "errorSelector": "4befa826", + "id": 10541, + "name": "SafeCast__Exceeds88Bits", + "nameLocation": "989:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10540, + "nodeType": "ParameterList", + "parameters": [], + "src": "1012:2:37" + }, + "src": "983:32:37" + }, + { + "errorSelector": "b5ceabe8", + "id": 10543, + "name": "SafeCast__Exceeds80Bits", + "nameLocation": "1026:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10542, + "nodeType": "ParameterList", + "parameters": [], + "src": "1049:2:37" + }, + "src": "1020:32:37" + }, + { + "errorSelector": "622e0cc2", + "id": 10545, + "name": "SafeCast__Exceeds72Bits", + "nameLocation": "1063:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10544, + "nodeType": "ParameterList", + "parameters": [], + "src": "1086:2:37" + }, + "src": "1057:32:37" + }, + { + "errorSelector": "cc21feb9", + "id": 10547, + "name": "SafeCast__Exceeds64Bits", + "nameLocation": "1100:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10546, + "nodeType": "ParameterList", + "parameters": [], + "src": "1123:2:37" + }, + "src": "1094:32:37" + }, + { + "errorSelector": "8900c539", + "id": 10549, + "name": "SafeCast__Exceeds56Bits", + "nameLocation": "1137:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10548, + "nodeType": "ParameterList", + "parameters": [], + "src": "1160:2:37" + }, + "src": "1131:32:37" + }, + { + "errorSelector": "066f0d4c", + "id": 10551, + "name": "SafeCast__Exceeds48Bits", + "nameLocation": "1174:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10550, + "nodeType": "ParameterList", + "parameters": [], + "src": "1197:2:37" + }, + "src": "1168:32:37" + }, + { + "errorSelector": "a1b7f90e", + "id": 10553, + "name": "SafeCast__Exceeds40Bits", + "nameLocation": "1211:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10552, + "nodeType": "ParameterList", + "parameters": [], + "src": "1234:2:37" + }, + "src": "1205:32:37" + }, + { + "errorSelector": "4355cdd0", + "id": 10555, + "name": "SafeCast__Exceeds32Bits", + "nameLocation": "1248:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10554, + "nodeType": "ParameterList", + "parameters": [], + "src": "1271:2:37" + }, + "src": "1242:32:37" + }, + { + "errorSelector": "9b636415", + "id": 10557, + "name": "SafeCast__Exceeds24Bits", + "nameLocation": "1285:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10556, + "nodeType": "ParameterList", + "parameters": [], + "src": "1308:2:37" + }, + "src": "1279:32:37" + }, + { + "errorSelector": "64ae406d", + "id": 10559, + "name": "SafeCast__Exceeds16Bits", + "nameLocation": "1322:23:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10558, + "nodeType": "ParameterList", + "parameters": [], + "src": "1345:2:37" + }, + "src": "1316:32:37" + }, + { + "errorSelector": "a1102bbf", + "id": 10561, + "name": "SafeCast__Exceeds8Bits", + "nameLocation": "1359:22:37", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10560, + "nodeType": "ParameterList", + "parameters": [], + "src": "1381:2:37" + }, + "src": "1353:31:37" + }, + { + "body": { + "id": 10582, + "nodeType": "Block", + "src": "1618:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10569, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10567, + "src": "1633:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10572, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10564, + "src": "1645:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1637:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + }, + "typeName": { + "id": 10570, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1637:7:37", + "typeDescriptions": {} + } + }, + "id": 10573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1637:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "src": "1633:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + } + ], + "id": 10575, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1632:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10576, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10564, + "src": "1652:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1632:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10581, + "nodeType": "IfStatement", + "src": "1628:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10578, + "name": "SafeCast__Exceeds248Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10501, + "src": "1662:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1662:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10580, + "nodeType": "RevertStatement", + "src": "1655:33:37" + } + } + ] + }, + "documentation": { + "id": 10562, + "nodeType": "StructuredDocumentation", + "src": "1390:161:37", + "text": " @dev Returns x on uint248 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint248" + }, + "id": 10583, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe248", + "nameLocation": "1565:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10564, + "mutability": "mutable", + "name": "x", + "nameLocation": "1581:1:37", + "nodeType": "VariableDeclaration", + "scope": 10583, + "src": "1573:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1573:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1572:11:37" + }, + "returnParameters": { + "id": 10568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10567, + "mutability": "mutable", + "name": "y", + "nameLocation": "1615:1:37", + "nodeType": "VariableDeclaration", + "scope": 10583, + "src": "1607:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + }, + "typeName": { + "id": 10566, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1607:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "visibility": "internal" + } + ], + "src": "1606:11:37" + }, + "scope": 11244, + "src": "1556:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10604, + "nodeType": "Block", + "src": "1929:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10591, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10589, + "src": "1944:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10594, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10586, + "src": "1956:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1948:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + }, + "typeName": { + "id": 10592, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "1948:7:37", + "typeDescriptions": {} + } + }, + "id": 10595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1948:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "src": "1944:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + } + ], + "id": 10597, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1943:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10598, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10586, + "src": "1963:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1943:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10603, + "nodeType": "IfStatement", + "src": "1939:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10600, + "name": "SafeCast__Exceeds240Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10503, + "src": "1973:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1973:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10602, + "nodeType": "RevertStatement", + "src": "1966:33:37" + } + } + ] + }, + "documentation": { + "id": 10584, + "nodeType": "StructuredDocumentation", + "src": "1701:161:37", + "text": " @dev Returns x on uint240 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint240" + }, + "id": 10605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe240", + "nameLocation": "1876:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10586, + "mutability": "mutable", + "name": "x", + "nameLocation": "1892:1:37", + "nodeType": "VariableDeclaration", + "scope": 10605, + "src": "1884:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1884:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1883:11:37" + }, + "returnParameters": { + "id": 10590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10589, + "mutability": "mutable", + "name": "y", + "nameLocation": "1926:1:37", + "nodeType": "VariableDeclaration", + "scope": 10605, + "src": "1918:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + }, + "typeName": { + "id": 10588, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "1918:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "visibility": "internal" + } + ], + "src": "1917:11:37" + }, + "scope": 11244, + "src": "1867:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10626, + "nodeType": "Block", + "src": "2240:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10613, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10611, + "src": "2255:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10616, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10608, + "src": "2267:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2259:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + }, + "typeName": { + "id": 10614, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2259:7:37", + "typeDescriptions": {} + } + }, + "id": 10617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2259:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "src": "2255:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + } + ], + "id": 10619, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2254:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10620, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10608, + "src": "2274:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2254:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10625, + "nodeType": "IfStatement", + "src": "2250:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10622, + "name": "SafeCast__Exceeds232Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10505, + "src": "2284:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2284:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10624, + "nodeType": "RevertStatement", + "src": "2277:33:37" + } + } + ] + }, + "documentation": { + "id": 10606, + "nodeType": "StructuredDocumentation", + "src": "2012:161:37", + "text": " @dev Returns x on uint232 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint232" + }, + "id": 10627, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe232", + "nameLocation": "2187:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10608, + "mutability": "mutable", + "name": "x", + "nameLocation": "2203:1:37", + "nodeType": "VariableDeclaration", + "scope": 10627, + "src": "2195:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2195:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2194:11:37" + }, + "returnParameters": { + "id": 10612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10611, + "mutability": "mutable", + "name": "y", + "nameLocation": "2237:1:37", + "nodeType": "VariableDeclaration", + "scope": 10627, + "src": "2229:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + }, + "typeName": { + "id": 10610, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2229:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "visibility": "internal" + } + ], + "src": "2228:11:37" + }, + "scope": 11244, + "src": "2178:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10648, + "nodeType": "Block", + "src": "2551:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10635, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10633, + "src": "2566:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10638, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10630, + "src": "2578:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2570:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 10636, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "2570:7:37", + "typeDescriptions": {} + } + }, + "id": 10639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2570:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "2566:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + } + ], + "id": 10641, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2565:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10642, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10630, + "src": "2585:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10647, + "nodeType": "IfStatement", + "src": "2561:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10644, + "name": "SafeCast__Exceeds224Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10507, + "src": "2595:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2595:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10646, + "nodeType": "RevertStatement", + "src": "2588:33:37" + } + } + ] + }, + "documentation": { + "id": 10628, + "nodeType": "StructuredDocumentation", + "src": "2323:161:37", + "text": " @dev Returns x on uint224 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint224" + }, + "id": 10649, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe224", + "nameLocation": "2498:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10630, + "mutability": "mutable", + "name": "x", + "nameLocation": "2514:1:37", + "nodeType": "VariableDeclaration", + "scope": 10649, + "src": "2506:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2506:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2505:11:37" + }, + "returnParameters": { + "id": 10634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10633, + "mutability": "mutable", + "name": "y", + "nameLocation": "2548:1:37", + "nodeType": "VariableDeclaration", + "scope": 10649, + "src": "2540:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 10632, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "2540:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + } + ], + "src": "2539:11:37" + }, + "scope": 11244, + "src": "2489:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10670, + "nodeType": "Block", + "src": "2862:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10657, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10655, + "src": "2877:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10660, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10652, + "src": "2889:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2881:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + }, + "typeName": { + "id": 10658, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "2881:7:37", + "typeDescriptions": {} + } + }, + "id": 10661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2881:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "src": "2877:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + } + ], + "id": 10663, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2876:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10664, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10652, + "src": "2896:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2876:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10669, + "nodeType": "IfStatement", + "src": "2872:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10666, + "name": "SafeCast__Exceeds216Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10509, + "src": "2906:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2906:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10668, + "nodeType": "RevertStatement", + "src": "2899:33:37" + } + } + ] + }, + "documentation": { + "id": 10650, + "nodeType": "StructuredDocumentation", + "src": "2634:161:37", + "text": " @dev Returns x on uint216 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint216" + }, + "id": 10671, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe216", + "nameLocation": "2809:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10653, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10652, + "mutability": "mutable", + "name": "x", + "nameLocation": "2825:1:37", + "nodeType": "VariableDeclaration", + "scope": 10671, + "src": "2817:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2817:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2816:11:37" + }, + "returnParameters": { + "id": 10656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10655, + "mutability": "mutable", + "name": "y", + "nameLocation": "2859:1:37", + "nodeType": "VariableDeclaration", + "scope": 10671, + "src": "2851:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + }, + "typeName": { + "id": 10654, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "2851:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "visibility": "internal" + } + ], + "src": "2850:11:37" + }, + "scope": 11244, + "src": "2800:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10692, + "nodeType": "Block", + "src": "3173:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10679, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10677, + "src": "3188:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10682, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10674, + "src": "3200:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3192:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + }, + "typeName": { + "id": 10680, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "3192:7:37", + "typeDescriptions": {} + } + }, + "id": 10683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3192:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "src": "3188:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + } + ], + "id": 10685, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3187:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10686, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10674, + "src": "3207:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3187:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10691, + "nodeType": "IfStatement", + "src": "3183:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10688, + "name": "SafeCast__Exceeds208Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10511, + "src": "3217:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3217:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10690, + "nodeType": "RevertStatement", + "src": "3210:33:37" + } + } + ] + }, + "documentation": { + "id": 10672, + "nodeType": "StructuredDocumentation", + "src": "2945:161:37", + "text": " @dev Returns x on uint208 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint208" + }, + "id": 10693, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe208", + "nameLocation": "3120:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10674, + "mutability": "mutable", + "name": "x", + "nameLocation": "3136:1:37", + "nodeType": "VariableDeclaration", + "scope": 10693, + "src": "3128:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3128:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3127:11:37" + }, + "returnParameters": { + "id": 10678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10677, + "mutability": "mutable", + "name": "y", + "nameLocation": "3170:1:37", + "nodeType": "VariableDeclaration", + "scope": 10693, + "src": "3162:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + }, + "typeName": { + "id": 10676, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "3162:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "visibility": "internal" + } + ], + "src": "3161:11:37" + }, + "scope": 11244, + "src": "3111:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10714, + "nodeType": "Block", + "src": "3484:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10701, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10699, + "src": "3499:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10704, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10696, + "src": "3511:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3503:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + }, + "typeName": { + "id": 10702, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "3503:7:37", + "typeDescriptions": {} + } + }, + "id": 10705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3503:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "src": "3499:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + } + ], + "id": 10707, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3498:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10708, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10696, + "src": "3518:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3498:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10713, + "nodeType": "IfStatement", + "src": "3494:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10710, + "name": "SafeCast__Exceeds200Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10513, + "src": "3528:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3528:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10712, + "nodeType": "RevertStatement", + "src": "3521:33:37" + } + } + ] + }, + "documentation": { + "id": 10694, + "nodeType": "StructuredDocumentation", + "src": "3256:161:37", + "text": " @dev Returns x on uint200 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint200" + }, + "id": 10715, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe200", + "nameLocation": "3431:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10696, + "mutability": "mutable", + "name": "x", + "nameLocation": "3447:1:37", + "nodeType": "VariableDeclaration", + "scope": 10715, + "src": "3439:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3439:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3438:11:37" + }, + "returnParameters": { + "id": 10700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10699, + "mutability": "mutable", + "name": "y", + "nameLocation": "3481:1:37", + "nodeType": "VariableDeclaration", + "scope": 10715, + "src": "3473:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + }, + "typeName": { + "id": 10698, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "3473:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "visibility": "internal" + } + ], + "src": "3472:11:37" + }, + "scope": 11244, + "src": "3422:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10736, + "nodeType": "Block", + "src": "3795:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10723, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10721, + "src": "3810:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10726, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10718, + "src": "3822:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3814:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + }, + "typeName": { + "id": 10724, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "3814:7:37", + "typeDescriptions": {} + } + }, + "id": 10727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3814:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "src": "3810:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + } + ], + "id": 10729, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3809:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10730, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10718, + "src": "3829:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3809:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10735, + "nodeType": "IfStatement", + "src": "3805:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10732, + "name": "SafeCast__Exceeds192Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10515, + "src": "3839:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3839:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10734, + "nodeType": "RevertStatement", + "src": "3832:33:37" + } + } + ] + }, + "documentation": { + "id": 10716, + "nodeType": "StructuredDocumentation", + "src": "3567:161:37", + "text": " @dev Returns x on uint192 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint192" + }, + "id": 10737, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe192", + "nameLocation": "3742:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10718, + "mutability": "mutable", + "name": "x", + "nameLocation": "3758:1:37", + "nodeType": "VariableDeclaration", + "scope": 10737, + "src": "3750:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10717, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3750:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3749:11:37" + }, + "returnParameters": { + "id": 10722, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10721, + "mutability": "mutable", + "name": "y", + "nameLocation": "3792:1:37", + "nodeType": "VariableDeclaration", + "scope": 10737, + "src": "3784:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + }, + "typeName": { + "id": 10720, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "3784:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "visibility": "internal" + } + ], + "src": "3783:11:37" + }, + "scope": 11244, + "src": "3733:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10758, + "nodeType": "Block", + "src": "4106:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10745, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10743, + "src": "4121:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10748, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10740, + "src": "4133:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4125:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + }, + "typeName": { + "id": 10746, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "4125:7:37", + "typeDescriptions": {} + } + }, + "id": 10749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4125:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "src": "4121:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + } + ], + "id": 10751, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4120:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10752, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10740, + "src": "4140:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4120:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10757, + "nodeType": "IfStatement", + "src": "4116:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10754, + "name": "SafeCast__Exceeds184Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10517, + "src": "4150:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4150:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10756, + "nodeType": "RevertStatement", + "src": "4143:33:37" + } + } + ] + }, + "documentation": { + "id": 10738, + "nodeType": "StructuredDocumentation", + "src": "3878:161:37", + "text": " @dev Returns x on uint184 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint184" + }, + "id": 10759, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe184", + "nameLocation": "4053:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10740, + "mutability": "mutable", + "name": "x", + "nameLocation": "4069:1:37", + "nodeType": "VariableDeclaration", + "scope": 10759, + "src": "4061:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4061:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4060:11:37" + }, + "returnParameters": { + "id": 10744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10743, + "mutability": "mutable", + "name": "y", + "nameLocation": "4103:1:37", + "nodeType": "VariableDeclaration", + "scope": 10759, + "src": "4095:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "typeName": { + "id": 10742, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "4095:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "visibility": "internal" + } + ], + "src": "4094:11:37" + }, + "scope": 11244, + "src": "4044:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10780, + "nodeType": "Block", + "src": "4417:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10767, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10765, + "src": "4432:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10770, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10762, + "src": "4444:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4436:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + }, + "typeName": { + "id": 10768, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "4436:7:37", + "typeDescriptions": {} + } + }, + "id": 10771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4436:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "src": "4432:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + } + ], + "id": 10773, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4431:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10774, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10762, + "src": "4451:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4431:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10779, + "nodeType": "IfStatement", + "src": "4427:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10776, + "name": "SafeCast__Exceeds176Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10519, + "src": "4461:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4461:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10778, + "nodeType": "RevertStatement", + "src": "4454:33:37" + } + } + ] + }, + "documentation": { + "id": 10760, + "nodeType": "StructuredDocumentation", + "src": "4189:161:37", + "text": " @dev Returns x on uint176 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint176" + }, + "id": 10781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe176", + "nameLocation": "4364:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10762, + "mutability": "mutable", + "name": "x", + "nameLocation": "4380:1:37", + "nodeType": "VariableDeclaration", + "scope": 10781, + "src": "4372:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4372:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4371:11:37" + }, + "returnParameters": { + "id": 10766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10765, + "mutability": "mutable", + "name": "y", + "nameLocation": "4414:1:37", + "nodeType": "VariableDeclaration", + "scope": 10781, + "src": "4406:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + }, + "typeName": { + "id": 10764, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "4406:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "visibility": "internal" + } + ], + "src": "4405:11:37" + }, + "scope": 11244, + "src": "4355:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10802, + "nodeType": "Block", + "src": "4728:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10789, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10787, + "src": "4743:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10792, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10784, + "src": "4755:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4747:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + }, + "typeName": { + "id": 10790, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "4747:7:37", + "typeDescriptions": {} + } + }, + "id": 10793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4747:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "src": "4743:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + } + ], + "id": 10795, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4742:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10796, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10784, + "src": "4762:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4742:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10801, + "nodeType": "IfStatement", + "src": "4738:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10798, + "name": "SafeCast__Exceeds168Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10521, + "src": "4772:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4772:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10800, + "nodeType": "RevertStatement", + "src": "4765:33:37" + } + } + ] + }, + "documentation": { + "id": 10782, + "nodeType": "StructuredDocumentation", + "src": "4500:161:37", + "text": " @dev Returns x on uint168 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint168" + }, + "id": 10803, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe168", + "nameLocation": "4675:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10784, + "mutability": "mutable", + "name": "x", + "nameLocation": "4691:1:37", + "nodeType": "VariableDeclaration", + "scope": 10803, + "src": "4683:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10783, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4683:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4682:11:37" + }, + "returnParameters": { + "id": 10788, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10787, + "mutability": "mutable", + "name": "y", + "nameLocation": "4725:1:37", + "nodeType": "VariableDeclaration", + "scope": 10803, + "src": "4717:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + }, + "typeName": { + "id": 10786, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "4717:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "visibility": "internal" + } + ], + "src": "4716:11:37" + }, + "scope": 11244, + "src": "4666:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10824, + "nodeType": "Block", + "src": "5039:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10811, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10809, + "src": "5054:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10814, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10806, + "src": "5066:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5058:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 10812, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "5058:7:37", + "typeDescriptions": {} + } + }, + "id": 10815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5058:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "5054:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 10817, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5053:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10818, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10806, + "src": "5073:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5053:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10823, + "nodeType": "IfStatement", + "src": "5049:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10820, + "name": "SafeCast__Exceeds160Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10523, + "src": "5083:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5083:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10822, + "nodeType": "RevertStatement", + "src": "5076:33:37" + } + } + ] + }, + "documentation": { + "id": 10804, + "nodeType": "StructuredDocumentation", + "src": "4811:161:37", + "text": " @dev Returns x on uint160 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint160" + }, + "id": 10825, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe160", + "nameLocation": "4986:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10806, + "mutability": "mutable", + "name": "x", + "nameLocation": "5002:1:37", + "nodeType": "VariableDeclaration", + "scope": 10825, + "src": "4994:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4994:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4993:11:37" + }, + "returnParameters": { + "id": 10810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10809, + "mutability": "mutable", + "name": "y", + "nameLocation": "5036:1:37", + "nodeType": "VariableDeclaration", + "scope": 10825, + "src": "5028:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 10808, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "5028:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + } + ], + "src": "5027:11:37" + }, + "scope": 11244, + "src": "4977:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10846, + "nodeType": "Block", + "src": "5350:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10833, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10831, + "src": "5365:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10836, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10828, + "src": "5377:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5369:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + }, + "typeName": { + "id": 10834, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "5369:7:37", + "typeDescriptions": {} + } + }, + "id": 10837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5369:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "src": "5365:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + } + ], + "id": 10839, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5364:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10840, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10828, + "src": "5384:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5364:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10845, + "nodeType": "IfStatement", + "src": "5360:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10842, + "name": "SafeCast__Exceeds152Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10525, + "src": "5394:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5394:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10844, + "nodeType": "RevertStatement", + "src": "5387:33:37" + } + } + ] + }, + "documentation": { + "id": 10826, + "nodeType": "StructuredDocumentation", + "src": "5122:161:37", + "text": " @dev Returns x on uint152 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint152" + }, + "id": 10847, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe152", + "nameLocation": "5297:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10828, + "mutability": "mutable", + "name": "x", + "nameLocation": "5313:1:37", + "nodeType": "VariableDeclaration", + "scope": 10847, + "src": "5305:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5305:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5304:11:37" + }, + "returnParameters": { + "id": 10832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10831, + "mutability": "mutable", + "name": "y", + "nameLocation": "5347:1:37", + "nodeType": "VariableDeclaration", + "scope": 10847, + "src": "5339:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + }, + "typeName": { + "id": 10830, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "5339:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "visibility": "internal" + } + ], + "src": "5338:11:37" + }, + "scope": 11244, + "src": "5288:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10868, + "nodeType": "Block", + "src": "5661:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10855, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10853, + "src": "5676:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10858, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10850, + "src": "5688:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5680:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + }, + "typeName": { + "id": 10856, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "5680:7:37", + "typeDescriptions": {} + } + }, + "id": 10859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5680:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "src": "5676:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + } + ], + "id": 10861, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5675:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10862, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10850, + "src": "5695:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5675:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10867, + "nodeType": "IfStatement", + "src": "5671:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10864, + "name": "SafeCast__Exceeds144Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10527, + "src": "5705:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5705:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10866, + "nodeType": "RevertStatement", + "src": "5698:33:37" + } + } + ] + }, + "documentation": { + "id": 10848, + "nodeType": "StructuredDocumentation", + "src": "5433:161:37", + "text": " @dev Returns x on uint144 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint144" + }, + "id": 10869, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe144", + "nameLocation": "5608:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10850, + "mutability": "mutable", + "name": "x", + "nameLocation": "5624:1:37", + "nodeType": "VariableDeclaration", + "scope": 10869, + "src": "5616:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10849, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5616:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5615:11:37" + }, + "returnParameters": { + "id": 10854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10853, + "mutability": "mutable", + "name": "y", + "nameLocation": "5658:1:37", + "nodeType": "VariableDeclaration", + "scope": 10869, + "src": "5650:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + }, + "typeName": { + "id": 10852, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "5650:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "visibility": "internal" + } + ], + "src": "5649:11:37" + }, + "scope": 11244, + "src": "5599:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10890, + "nodeType": "Block", + "src": "5972:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10877, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10875, + "src": "5987:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10880, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10872, + "src": "5999:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5991:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + }, + "typeName": { + "id": 10878, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "5991:7:37", + "typeDescriptions": {} + } + }, + "id": 10881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5991:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "src": "5987:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + } + ], + "id": 10883, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5986:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10884, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10872, + "src": "6006:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5986:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10889, + "nodeType": "IfStatement", + "src": "5982:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10886, + "name": "SafeCast__Exceeds136Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10529, + "src": "6016:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6016:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10888, + "nodeType": "RevertStatement", + "src": "6009:33:37" + } + } + ] + }, + "documentation": { + "id": 10870, + "nodeType": "StructuredDocumentation", + "src": "5744:161:37", + "text": " @dev Returns x on uint136 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint136" + }, + "id": 10891, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe136", + "nameLocation": "5919:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10872, + "mutability": "mutable", + "name": "x", + "nameLocation": "5935:1:37", + "nodeType": "VariableDeclaration", + "scope": 10891, + "src": "5927:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10871, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5927:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5926:11:37" + }, + "returnParameters": { + "id": 10876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10875, + "mutability": "mutable", + "name": "y", + "nameLocation": "5969:1:37", + "nodeType": "VariableDeclaration", + "scope": 10891, + "src": "5961:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + }, + "typeName": { + "id": 10874, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "5961:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "visibility": "internal" + } + ], + "src": "5960:11:37" + }, + "scope": 11244, + "src": "5910:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10912, + "nodeType": "Block", + "src": "6283:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10899, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10897, + "src": "6298:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10902, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10894, + "src": "6310:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6302:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 10900, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6302:7:37", + "typeDescriptions": {} + } + }, + "id": 10903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6302:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "6298:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 10905, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6297:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10906, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10894, + "src": "6317:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6297:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10911, + "nodeType": "IfStatement", + "src": "6293:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10908, + "name": "SafeCast__Exceeds128Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10531, + "src": "6327:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6327:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10910, + "nodeType": "RevertStatement", + "src": "6320:33:37" + } + } + ] + }, + "documentation": { + "id": 10892, + "nodeType": "StructuredDocumentation", + "src": "6055:161:37", + "text": " @dev Returns x on uint128 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint128" + }, + "id": 10913, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe128", + "nameLocation": "6230:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10894, + "mutability": "mutable", + "name": "x", + "nameLocation": "6246:1:37", + "nodeType": "VariableDeclaration", + "scope": 10913, + "src": "6238:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6238:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6237:11:37" + }, + "returnParameters": { + "id": 10898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10897, + "mutability": "mutable", + "name": "y", + "nameLocation": "6280:1:37", + "nodeType": "VariableDeclaration", + "scope": 10913, + "src": "6272:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 10896, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6272:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "6271:11:37" + }, + "scope": 11244, + "src": "6221:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10934, + "nodeType": "Block", + "src": "6594:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10921, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10919, + "src": "6609:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10924, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10916, + "src": "6621:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6613:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + }, + "typeName": { + "id": 10922, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "6613:7:37", + "typeDescriptions": {} + } + }, + "id": 10925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6613:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "src": "6609:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + } + ], + "id": 10927, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6608:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10928, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10916, + "src": "6628:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6608:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10933, + "nodeType": "IfStatement", + "src": "6604:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10930, + "name": "SafeCast__Exceeds120Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10533, + "src": "6638:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6638:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10932, + "nodeType": "RevertStatement", + "src": "6631:33:37" + } + } + ] + }, + "documentation": { + "id": 10914, + "nodeType": "StructuredDocumentation", + "src": "6366:161:37", + "text": " @dev Returns x on uint120 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint120" + }, + "id": 10935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe120", + "nameLocation": "6541:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10916, + "mutability": "mutable", + "name": "x", + "nameLocation": "6557:1:37", + "nodeType": "VariableDeclaration", + "scope": 10935, + "src": "6549:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10915, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6549:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6548:11:37" + }, + "returnParameters": { + "id": 10920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10919, + "mutability": "mutable", + "name": "y", + "nameLocation": "6591:1:37", + "nodeType": "VariableDeclaration", + "scope": 10935, + "src": "6583:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + }, + "typeName": { + "id": 10918, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "6583:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "visibility": "internal" + } + ], + "src": "6582:11:37" + }, + "scope": 11244, + "src": "6532:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10956, + "nodeType": "Block", + "src": "6905:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10943, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10941, + "src": "6920:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10946, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10938, + "src": "6932:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6924:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 10944, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "6924:7:37", + "typeDescriptions": {} + } + }, + "id": 10947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6924:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "6920:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + } + ], + "id": 10949, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6919:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10950, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10938, + "src": "6939:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6919:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10955, + "nodeType": "IfStatement", + "src": "6915:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10952, + "name": "SafeCast__Exceeds112Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10535, + "src": "6949:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6949:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10954, + "nodeType": "RevertStatement", + "src": "6942:33:37" + } + } + ] + }, + "documentation": { + "id": 10936, + "nodeType": "StructuredDocumentation", + "src": "6677:161:37", + "text": " @dev Returns x on uint112 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint112" + }, + "id": 10957, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe112", + "nameLocation": "6852:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10938, + "mutability": "mutable", + "name": "x", + "nameLocation": "6868:1:37", + "nodeType": "VariableDeclaration", + "scope": 10957, + "src": "6860:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10937, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6860:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6859:11:37" + }, + "returnParameters": { + "id": 10942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10941, + "mutability": "mutable", + "name": "y", + "nameLocation": "6902:1:37", + "nodeType": "VariableDeclaration", + "scope": 10957, + "src": "6894:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 10940, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "6894:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "6893:11:37" + }, + "scope": 11244, + "src": "6843:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10978, + "nodeType": "Block", + "src": "7216:77:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10965, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10963, + "src": "7231:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10968, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10960, + "src": "7243:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7235:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + }, + "typeName": { + "id": 10966, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "7235:7:37", + "typeDescriptions": {} + } + }, + "id": 10969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7235:10:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "src": "7231:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + } + ], + "id": 10971, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7230:16:37", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10972, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10960, + "src": "7250:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7230:21:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10977, + "nodeType": "IfStatement", + "src": "7226:60:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10974, + "name": "SafeCast__Exceeds104Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10537, + "src": "7260:24:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7260:26:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10976, + "nodeType": "RevertStatement", + "src": "7253:33:37" + } + } + ] + }, + "documentation": { + "id": 10958, + "nodeType": "StructuredDocumentation", + "src": "6988:161:37", + "text": " @dev Returns x on uint104 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint104" + }, + "id": 10979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe104", + "nameLocation": "7163:7:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10960, + "mutability": "mutable", + "name": "x", + "nameLocation": "7179:1:37", + "nodeType": "VariableDeclaration", + "scope": 10979, + "src": "7171:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10959, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7171:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7170:11:37" + }, + "returnParameters": { + "id": 10964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10963, + "mutability": "mutable", + "name": "y", + "nameLocation": "7213:1:37", + "nodeType": "VariableDeclaration", + "scope": 10979, + "src": "7205:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + }, + "typeName": { + "id": 10962, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "7205:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "visibility": "internal" + } + ], + "src": "7204:11:37" + }, + "scope": 11244, + "src": "7154:139:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11000, + "nodeType": "Block", + "src": "7523:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 10992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 10987, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10985, + "src": "7538:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 10990, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10982, + "src": "7549:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7542:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + }, + "typeName": { + "id": 10988, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "7542:6:37", + "typeDescriptions": {} + } + }, + "id": 10991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7542:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "src": "7538:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + } + ], + "id": 10993, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7537:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10994, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10982, + "src": "7556:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7537:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10999, + "nodeType": "IfStatement", + "src": "7533:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10996, + "name": "SafeCast__Exceeds96Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10539, + "src": "7566:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 10997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7566:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10998, + "nodeType": "RevertStatement", + "src": "7559:32:37" + } + } + ] + }, + "documentation": { + "id": 10980, + "nodeType": "StructuredDocumentation", + "src": "7299:159:37", + "text": " @dev Returns x on uint96 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint96" + }, + "id": 11001, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe96", + "nameLocation": "7472:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10982, + "mutability": "mutable", + "name": "x", + "nameLocation": "7487:1:37", + "nodeType": "VariableDeclaration", + "scope": 11001, + "src": "7479:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10981, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7479:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7478:11:37" + }, + "returnParameters": { + "id": 10986, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10985, + "mutability": "mutable", + "name": "y", + "nameLocation": "7520:1:37", + "nodeType": "VariableDeclaration", + "scope": 11001, + "src": "7513:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 10984, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "7513:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "visibility": "internal" + } + ], + "src": "7512:10:37" + }, + "scope": 11244, + "src": "7463:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11022, + "nodeType": "Block", + "src": "7828:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11009, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11007, + "src": "7843:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11012, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11004, + "src": "7854:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7847:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + }, + "typeName": { + "id": 11010, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "7847:6:37", + "typeDescriptions": {} + } + }, + "id": 11013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7847:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "src": "7843:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + } + ], + "id": 11015, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7842:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11016, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11004, + "src": "7861:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7842:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11021, + "nodeType": "IfStatement", + "src": "7838:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11018, + "name": "SafeCast__Exceeds88Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10541, + "src": "7871:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7871:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11020, + "nodeType": "RevertStatement", + "src": "7864:32:37" + } + } + ] + }, + "documentation": { + "id": 11002, + "nodeType": "StructuredDocumentation", + "src": "7604:159:37", + "text": " @dev Returns x on uint88 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint88" + }, + "id": 11023, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe88", + "nameLocation": "7777:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11004, + "mutability": "mutable", + "name": "x", + "nameLocation": "7792:1:37", + "nodeType": "VariableDeclaration", + "scope": 11023, + "src": "7784:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11003, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7784:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7783:11:37" + }, + "returnParameters": { + "id": 11008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11007, + "mutability": "mutable", + "name": "y", + "nameLocation": "7825:1:37", + "nodeType": "VariableDeclaration", + "scope": 11023, + "src": "7818:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + }, + "typeName": { + "id": 11006, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "7818:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "visibility": "internal" + } + ], + "src": "7817:10:37" + }, + "scope": 11244, + "src": "7768:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11044, + "nodeType": "Block", + "src": "8133:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11031, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11029, + "src": "8148:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11034, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11026, + "src": "8159:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8152:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + }, + "typeName": { + "id": 11032, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "8152:6:37", + "typeDescriptions": {} + } + }, + "id": 11035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8152:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "src": "8148:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + } + ], + "id": 11037, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8147:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11038, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11026, + "src": "8166:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8147:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11043, + "nodeType": "IfStatement", + "src": "8143:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11040, + "name": "SafeCast__Exceeds80Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10543, + "src": "8176:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8176:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11042, + "nodeType": "RevertStatement", + "src": "8169:32:37" + } + } + ] + }, + "documentation": { + "id": 11024, + "nodeType": "StructuredDocumentation", + "src": "7909:159:37", + "text": " @dev Returns x on uint80 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint80" + }, + "id": 11045, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe80", + "nameLocation": "8082:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11026, + "mutability": "mutable", + "name": "x", + "nameLocation": "8097:1:37", + "nodeType": "VariableDeclaration", + "scope": 11045, + "src": "8089:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11025, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8089:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8088:11:37" + }, + "returnParameters": { + "id": 11030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11029, + "mutability": "mutable", + "name": "y", + "nameLocation": "8130:1:37", + "nodeType": "VariableDeclaration", + "scope": 11045, + "src": "8123:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + }, + "typeName": { + "id": 11028, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "8123:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "visibility": "internal" + } + ], + "src": "8122:10:37" + }, + "scope": 11244, + "src": "8073:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11066, + "nodeType": "Block", + "src": "8438:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11053, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11051, + "src": "8453:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11056, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11048, + "src": "8464:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8457:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 11054, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "8457:6:37", + "typeDescriptions": {} + } + }, + "id": 11057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8457:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "src": "8453:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + } + ], + "id": 11059, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8452:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11060, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11048, + "src": "8471:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8452:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11065, + "nodeType": "IfStatement", + "src": "8448:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11062, + "name": "SafeCast__Exceeds72Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10545, + "src": "8481:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8481:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11064, + "nodeType": "RevertStatement", + "src": "8474:32:37" + } + } + ] + }, + "documentation": { + "id": 11046, + "nodeType": "StructuredDocumentation", + "src": "8214:159:37", + "text": " @dev Returns x on uint72 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint72" + }, + "id": 11067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe72", + "nameLocation": "8387:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11048, + "mutability": "mutable", + "name": "x", + "nameLocation": "8402:1:37", + "nodeType": "VariableDeclaration", + "scope": 11067, + "src": "8394:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8394:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8393:11:37" + }, + "returnParameters": { + "id": 11052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11051, + "mutability": "mutable", + "name": "y", + "nameLocation": "8435:1:37", + "nodeType": "VariableDeclaration", + "scope": 11067, + "src": "8428:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 11050, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "8428:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "src": "8427:10:37" + }, + "scope": 11244, + "src": "8378:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11088, + "nodeType": "Block", + "src": "8743:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11075, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11073, + "src": "8758:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11078, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11070, + "src": "8769:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8762:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 11076, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8762:6:37", + "typeDescriptions": {} + } + }, + "id": 11079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8762:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8758:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "id": 11081, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8757:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11082, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11070, + "src": "8776:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8757:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11087, + "nodeType": "IfStatement", + "src": "8753:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11084, + "name": "SafeCast__Exceeds64Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10547, + "src": "8786:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8786:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11086, + "nodeType": "RevertStatement", + "src": "8779:32:37" + } + } + ] + }, + "documentation": { + "id": 11068, + "nodeType": "StructuredDocumentation", + "src": "8519:159:37", + "text": " @dev Returns x on uint64 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint64" + }, + "id": 11089, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe64", + "nameLocation": "8692:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11070, + "mutability": "mutable", + "name": "x", + "nameLocation": "8707:1:37", + "nodeType": "VariableDeclaration", + "scope": 11089, + "src": "8699:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8699:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8698:11:37" + }, + "returnParameters": { + "id": 11074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11073, + "mutability": "mutable", + "name": "y", + "nameLocation": "8740:1:37", + "nodeType": "VariableDeclaration", + "scope": 11089, + "src": "8733:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 11072, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8733:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "8732:10:37" + }, + "scope": 11244, + "src": "8683:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11110, + "nodeType": "Block", + "src": "9048:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11097, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11095, + "src": "9063:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11100, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11092, + "src": "9074:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9067:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + }, + "typeName": { + "id": 11098, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "9067:6:37", + "typeDescriptions": {} + } + }, + "id": 11101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9067:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "src": "9063:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + } + ], + "id": 11103, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9062:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11104, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11092, + "src": "9081:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9062:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11109, + "nodeType": "IfStatement", + "src": "9058:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11106, + "name": "SafeCast__Exceeds56Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10549, + "src": "9091:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9091:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11108, + "nodeType": "RevertStatement", + "src": "9084:32:37" + } + } + ] + }, + "documentation": { + "id": 11090, + "nodeType": "StructuredDocumentation", + "src": "8824:159:37", + "text": " @dev Returns x on uint56 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint56" + }, + "id": 11111, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe56", + "nameLocation": "8997:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11092, + "mutability": "mutable", + "name": "x", + "nameLocation": "9012:1:37", + "nodeType": "VariableDeclaration", + "scope": 11111, + "src": "9004:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9004:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9003:11:37" + }, + "returnParameters": { + "id": 11096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11095, + "mutability": "mutable", + "name": "y", + "nameLocation": "9045:1:37", + "nodeType": "VariableDeclaration", + "scope": 11111, + "src": "9038:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + }, + "typeName": { + "id": 11094, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "9038:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "visibility": "internal" + } + ], + "src": "9037:10:37" + }, + "scope": 11244, + "src": "8988:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11132, + "nodeType": "Block", + "src": "9353:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11119, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11117, + "src": "9368:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11122, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11114, + "src": "9379:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9372:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 11120, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "9372:6:37", + "typeDescriptions": {} + } + }, + "id": 11123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9372:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "9368:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "id": 11125, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9367:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11126, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11114, + "src": "9386:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9367:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11131, + "nodeType": "IfStatement", + "src": "9363:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11128, + "name": "SafeCast__Exceeds48Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10551, + "src": "9396:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9396:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11130, + "nodeType": "RevertStatement", + "src": "9389:32:37" + } + } + ] + }, + "documentation": { + "id": 11112, + "nodeType": "StructuredDocumentation", + "src": "9129:159:37", + "text": " @dev Returns x on uint48 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint48" + }, + "id": 11133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe48", + "nameLocation": "9302:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11114, + "mutability": "mutable", + "name": "x", + "nameLocation": "9317:1:37", + "nodeType": "VariableDeclaration", + "scope": 11133, + "src": "9309:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9309:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9308:11:37" + }, + "returnParameters": { + "id": 11118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11117, + "mutability": "mutable", + "name": "y", + "nameLocation": "9350:1:37", + "nodeType": "VariableDeclaration", + "scope": 11133, + "src": "9343:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 11116, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "9343:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "src": "9342:10:37" + }, + "scope": 11244, + "src": "9293:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11154, + "nodeType": "Block", + "src": "9658:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11141, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11139, + "src": "9673:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11144, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11136, + "src": "9684:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9677:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + }, + "typeName": { + "id": 11142, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "9677:6:37", + "typeDescriptions": {} + } + }, + "id": 11145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9677:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "9673:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + } + ], + "id": 11147, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9672:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11148, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11136, + "src": "9691:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9672:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11153, + "nodeType": "IfStatement", + "src": "9668:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11150, + "name": "SafeCast__Exceeds40Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10553, + "src": "9701:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9701:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11152, + "nodeType": "RevertStatement", + "src": "9694:32:37" + } + } + ] + }, + "documentation": { + "id": 11134, + "nodeType": "StructuredDocumentation", + "src": "9434:159:37", + "text": " @dev Returns x on uint40 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint40" + }, + "id": 11155, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe40", + "nameLocation": "9607:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11136, + "mutability": "mutable", + "name": "x", + "nameLocation": "9622:1:37", + "nodeType": "VariableDeclaration", + "scope": 11155, + "src": "9614:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9614:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9613:11:37" + }, + "returnParameters": { + "id": 11140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11139, + "mutability": "mutable", + "name": "y", + "nameLocation": "9655:1:37", + "nodeType": "VariableDeclaration", + "scope": 11155, + "src": "9648:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 11138, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "9648:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "9647:10:37" + }, + "scope": 11244, + "src": "9598:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11176, + "nodeType": "Block", + "src": "9963:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11163, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11161, + "src": "9978:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11166, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11158, + "src": "9989:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9982:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 11164, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "9982:6:37", + "typeDescriptions": {} + } + }, + "id": 11167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9982:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "9978:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 11169, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9977:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11170, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11158, + "src": "9996:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9977:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11175, + "nodeType": "IfStatement", + "src": "9973:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11172, + "name": "SafeCast__Exceeds32Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10555, + "src": "10006:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10006:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11174, + "nodeType": "RevertStatement", + "src": "9999:32:37" + } + } + ] + }, + "documentation": { + "id": 11156, + "nodeType": "StructuredDocumentation", + "src": "9739:159:37", + "text": " @dev Returns x on uint32 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint32" + }, + "id": 11177, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe32", + "nameLocation": "9912:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11158, + "mutability": "mutable", + "name": "x", + "nameLocation": "9927:1:37", + "nodeType": "VariableDeclaration", + "scope": 11177, + "src": "9919:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9919:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9918:11:37" + }, + "returnParameters": { + "id": 11162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11161, + "mutability": "mutable", + "name": "y", + "nameLocation": "9960:1:37", + "nodeType": "VariableDeclaration", + "scope": 11177, + "src": "9953:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 11160, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "9953:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "9952:10:37" + }, + "scope": 11244, + "src": "9903:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11198, + "nodeType": "Block", + "src": "10268:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11185, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11183, + "src": "10283:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11188, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11180, + "src": "10294:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10287:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 11186, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "10287:6:37", + "typeDescriptions": {} + } + }, + "id": 11189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10287:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "10283:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "id": 11191, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10282:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11192, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11180, + "src": "10301:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10282:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11197, + "nodeType": "IfStatement", + "src": "10278:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11194, + "name": "SafeCast__Exceeds24Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10557, + "src": "10311:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10311:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11196, + "nodeType": "RevertStatement", + "src": "10304:32:37" + } + } + ] + }, + "documentation": { + "id": 11178, + "nodeType": "StructuredDocumentation", + "src": "10044:159:37", + "text": " @dev Returns x on uint24 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint24" + }, + "id": 11199, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe24", + "nameLocation": "10217:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11180, + "mutability": "mutable", + "name": "x", + "nameLocation": "10232:1:37", + "nodeType": "VariableDeclaration", + "scope": 11199, + "src": "10224:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10224:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10223:11:37" + }, + "returnParameters": { + "id": 11184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11183, + "mutability": "mutable", + "name": "y", + "nameLocation": "10265:1:37", + "nodeType": "VariableDeclaration", + "scope": 11199, + "src": "10258:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 11182, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "10258:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "10257:10:37" + }, + "scope": 11244, + "src": "10208:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11220, + "nodeType": "Block", + "src": "10573:75:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11207, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11205, + "src": "10588:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11210, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11202, + "src": "10599:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10592:6:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 11208, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10592:6:37", + "typeDescriptions": {} + } + }, + "id": 11211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10592:9:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "10588:13:37", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 11213, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10587:15:37", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11214, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11202, + "src": "10606:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10587:20:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11219, + "nodeType": "IfStatement", + "src": "10583:58:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11216, + "name": "SafeCast__Exceeds16Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10559, + "src": "10616:23:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10616:25:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11218, + "nodeType": "RevertStatement", + "src": "10609:32:37" + } + } + ] + }, + "documentation": { + "id": 11200, + "nodeType": "StructuredDocumentation", + "src": "10349:159:37", + "text": " @dev Returns x on uint16 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint16" + }, + "id": 11221, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe16", + "nameLocation": "10522:6:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11202, + "mutability": "mutable", + "name": "x", + "nameLocation": "10537:1:37", + "nodeType": "VariableDeclaration", + "scope": 11221, + "src": "10529:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10529:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10528:11:37" + }, + "returnParameters": { + "id": 11206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11205, + "mutability": "mutable", + "name": "y", + "nameLocation": "10570:1:37", + "nodeType": "VariableDeclaration", + "scope": 11221, + "src": "10563:8:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11204, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "10563:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "10562:10:37" + }, + "scope": 11244, + "src": "10513:135:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11242, + "nodeType": "Block", + "src": "10874:73:37", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 11234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11229, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11227, + "src": "10889:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11232, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11224, + "src": "10899:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10893:5:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 11230, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10893:5:37", + "typeDescriptions": {} + } + }, + "id": 11233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10893:8:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "10889:12:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 11235, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10888:14:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11236, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11224, + "src": "10906:1:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10888:19:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11241, + "nodeType": "IfStatement", + "src": "10884:56:37", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11238, + "name": "SafeCast__Exceeds8Bits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10561, + "src": "10916:22:37", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10916:24:37", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11240, + "nodeType": "RevertStatement", + "src": "10909:31:37" + } + } + ] + }, + "documentation": { + "id": 11222, + "nodeType": "StructuredDocumentation", + "src": "10654:157:37", + "text": " @dev Returns x on uint8 and check that it does not overflow\n @param x The value as an uint256\n @return y The value as an uint8" + }, + "id": 11243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safe8", + "nameLocation": "10825:5:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11224, + "mutability": "mutable", + "name": "x", + "nameLocation": "10839:1:37", + "nodeType": "VariableDeclaration", + "scope": 11243, + "src": "10831:9:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10831:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10830:11:37" + }, + "returnParameters": { + "id": 11228, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11227, + "mutability": "mutable", + "name": "y", + "nameLocation": "10871:1:37", + "nodeType": "VariableDeclaration", + "scope": 11243, + "src": "10865:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11226, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10865:5:37", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "10864:9:37" + }, + "scope": 11244, + "src": "10816:131:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 11245, + "src": "201:10748:37", + "usedErrors": [ + 10501, + 10503, + 10505, + 10507, + 10509, + 10511, + 10513, + 10515, + 10517, + 10519, + 10521, + 10523, + 10525, + 10527, + 10529, + 10531, + 10533, + 10535, + 10537, + 10539, + 10541, + 10543, + 10545, + 10547, + 10549, + 10551, + 10553, + 10555, + 10557, + 10559, + 10561 + ], + "usedEvents": [] + } + ], + "src": "33:10917:37" + }, + "id": 37 + }, + "src/libraries/math/Uint128x128Math.sol": { + "ast": { + "absolutePath": "src/libraries/math/Uint128x128Math.sol", + "exportedSymbols": { + "BitMath": [ + 10289 + ], + "Constants": [ + 8131 + ], + "Uint128x128Math": [ + 11470 + ] + }, + "id": 11471, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11246, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:38" + }, + { + "absolutePath": "src/libraries/Constants.sol", + "file": "../Constants.sol", + "id": 11248, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11471, + "sourceUnit": 8132, + "src": "59:43:38", + "symbolAliases": [ + { + "foreign": { + "id": 11247, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "67:9:38", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/libraries/math/BitMath.sol", + "file": "./BitMath.sol", + "id": 11250, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11471, + "sourceUnit": 10290, + "src": "103:38:38", + "symbolAliases": [ + { + "foreign": { + "id": 11249, + "name": "BitMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10289, + "src": "111:7:38", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Uint128x128Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 11251, + "nodeType": "StructuredDocumentation", + "src": "143:120:38", + "text": " @title Liquidity Book Uint128x128 Math Library\n @notice Helper contract used for power and log calculations" + }, + "fullyImplemented": true, + "id": 11470, + "linearizedBaseContracts": [ + 11470 + ], + "name": "Uint128x128Math", + "nameLocation": "272:15:38", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 11254, + "libraryName": { + "id": 11252, + "name": "BitMath", + "nameLocations": [ + "300:7:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10289, + "src": "300:7:38" + }, + "nodeType": "UsingForDirective", + "src": "294:26:38", + "typeName": { + "id": 11253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "312:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "errorSelector": "24b28d9e", + "id": 11256, + "name": "Uint128x128Math__LogUnderflow", + "nameLocation": "332:29:38", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11255, + "nodeType": "ParameterList", + "parameters": [], + "src": "361:2:38" + }, + "src": "326:38:38" + }, + { + "errorSelector": "3b74b31a", + "id": 11262, + "name": "Uint128x128Math__PowUnderflow", + "nameLocation": "375:29:38", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11261, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11258, + "mutability": "mutable", + "name": "x", + "nameLocation": "413:1:38", + "nodeType": "VariableDeclaration", + "scope": 11262, + "src": "405:9:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "405:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11260, + "mutability": "mutable", + "name": "y", + "nameLocation": "423:1:38", + "nodeType": "VariableDeclaration", + "scope": 11262, + "src": "416:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 11259, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "416:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "404:21:38" + }, + "src": "369:57:38" + }, + { + "constant": true, + "id": 11265, + "mutability": "constant", + "name": "LOG_SCALE_OFFSET", + "nameLocation": "449:16:38", + "nodeType": "VariableDeclaration", + "scope": 11470, + "src": "432:39:38", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11263, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "432:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "313237", + "id": 11264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "468:3:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_127_by_1", + "typeString": "int_const 127" + }, + "value": "127" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 11270, + "mutability": "constant", + "name": "LOG_SCALE", + "nameLocation": "494:9:38", + "nodeType": "VariableDeclaration", + "scope": 11470, + "src": "477:50:38", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11266, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "477:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 11267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "506:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 11268, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11265, + "src": "511:16:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "506:21:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 11275, + "mutability": "constant", + "name": "LOG_SCALE_SQUARED", + "nameLocation": "550:17:38", + "nodeType": "VariableDeclaration", + "scope": 11470, + "src": "533:58:38", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "533:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 11272, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "570:9:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11273, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "582:9:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "570:21:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 11412, + "nodeType": "Block", + "src": "1404:2307:38", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11283, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "1800:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 11284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1805:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1800:6:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11289, + "nodeType": "IfStatement", + "src": "1796:23:38", + "trueBody": { + "expression": { + "id": 11287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1815:4:38", + "subExpression": { + "hexValue": "313238", + "id": 11286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1816:3:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_128_by_1", + "typeString": "int_const -128" + } + }, + "functionReturnParameters": 11282, + "id": 11288, + "nodeType": "Return", + "src": "1808:11:38" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11290, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "1833:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1838:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1833:6:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11296, + "nodeType": "IfStatement", + "src": "1829:50:38", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11293, + "name": "Uint128x128Math__LogUnderflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11256, + "src": "1848:29:38", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1848:31:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11295, + "nodeType": "RevertStatement", + "src": "1841:38:38" + } + }, + { + "expression": { + "id": 11299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11297, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "1890:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "31", + "id": 11298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1896:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1890:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11300, + "nodeType": "ExpressionStatement", + "src": "1890:7:38" + }, + { + "id": 11411, + "nodeType": "UncheckedBlock", + "src": "1908:1797:38", + "statements": [ + { + "assignments": [ + 11302 + ], + "declarations": [ + { + "constant": false, + "id": 11302, + "mutability": "mutable", + "name": "sign", + "nameLocation": "1995:4:38", + "nodeType": "VariableDeclaration", + "scope": 11411, + "src": "1988:11:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 11301, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1988:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 11303, + "nodeType": "VariableDeclarationStatement", + "src": "1988:11:38" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11304, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "2017:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 11305, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "2022:9:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2017:14:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11323, + "nodeType": "Block", + "src": "2080:152:38", + "statements": [ + { + "expression": { + "id": 11315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11312, + "name": "sign", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11302, + "src": "2098:4:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 11314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2105:2:38", + "subExpression": { + "hexValue": "31", + "id": 11313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2106:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "2098:9:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 11316, + "nodeType": "ExpressionStatement", + "src": "2098:9:38" + }, + { + "expression": { + "id": 11321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11317, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "2192:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11318, + "name": "LOG_SCALE_SQUARED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11275, + "src": "2196:17:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 11319, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "2216:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2196:21:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2192:25:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11322, + "nodeType": "ExpressionStatement", + "src": "2192:25:38" + } + ] + }, + "id": 11324, + "nodeType": "IfStatement", + "src": "2013:219:38", + "trueBody": { + "id": 11311, + "nodeType": "Block", + "src": "2033:41:38", + "statements": [ + { + "expression": { + "id": 11309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11307, + "name": "sign", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11302, + "src": "2051:4:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 11308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2058:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2051:8:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 11310, + "nodeType": "ExpressionStatement", + "src": "2051:8:38" + } + ] + } + }, + { + "assignments": [ + 11326 + ], + "declarations": [ + { + "constant": false, + "id": 11326, + "mutability": "mutable", + "name": "n", + "nameLocation": "2376:1:38", + "nodeType": "VariableDeclaration", + "scope": 11411, + "src": "2368:9:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2368:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11333, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11327, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "2381:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 11328, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11265, + "src": "2386:16:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2381:21:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 11330, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2380:23:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2404:18:38", + "memberName": "mostSignificantBit", + "nodeType": "MemberAccess", + "referencedDeclaration": 10278, + "src": "2380:42:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 11332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2380:44:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2368:56:38" + }, + { + "expression": { + "id": 11341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11334, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11281, + "src": "2662:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 11340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 11337, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11326, + "src": "2678:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2671:6:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 11335, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2671:6:38", + "typeDescriptions": {} + } + }, + "id": 11338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2671:9:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 11339, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11265, + "src": "2684:16:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2671:29:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2662:38:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 11342, + "nodeType": "ExpressionStatement", + "src": "2662:38:38" + }, + { + "assignments": [ + 11344 + ], + "declarations": [ + { + "constant": false, + "id": 11344, + "mutability": "mutable", + "name": "y", + "nameLocation": "2762:1:38", + "nodeType": "VariableDeclaration", + "scope": 11411, + "src": "2754:9:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11343, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2754:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11348, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11345, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11278, + "src": "2766:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 11346, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11326, + "src": "2771:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2766:6:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2754:18:38" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11349, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "2845:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 11350, + "name": "LOG_SCALE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "2850:9:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2845:14:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11401, + "nodeType": "IfStatement", + "src": "2841:735:38", + "trueBody": { + "id": 11400, + "nodeType": "Block", + "src": "2861:715:38", + "statements": [ + { + "body": { + "id": 11398, + "nodeType": "Block", + "src": "3144:418:38", + "statements": [ + { + "expression": { + "id": 11378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11371, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "3166:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11372, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "3171:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11373, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "3175:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3171:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 11375, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3170:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 11376, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11265, + "src": "3181:16:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3170:27:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3166:31:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11379, + "nodeType": "ExpressionStatement", + "src": "3166:31:38" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11380, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "3285:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 11381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3290:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 11382, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11265, + "src": "3296:16:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 11383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3315:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3296:20:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 11385, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3295:22:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3290:27:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3285:32:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11397, + "nodeType": "IfStatement", + "src": "3281:263:38", + "trueBody": { + "id": 11396, + "nodeType": "Block", + "src": "3319:225:38", + "statements": [ + { + "expression": { + "id": 11390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11388, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11281, + "src": "3412:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 11389, + "name": "delta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11353, + "src": "3422:5:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "3412:15:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 11391, + "nodeType": "ExpressionStatement", + "src": "3412:15:38" + }, + { + "expression": { + "id": 11394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11392, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "3514:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "31", + "id": 11393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3520:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3514:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11395, + "nodeType": "ExpressionStatement", + "src": "3514:7:38" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 11366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11364, + "name": "delta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11353, + "src": "3120:5:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 11365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3128:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3120:9:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11399, + "initializationExpression": { + "assignments": [ + 11353 + ], + "declarations": [ + { + "constant": false, + "id": 11353, + "mutability": "mutable", + "name": "delta", + "nameLocation": "3075:5:38", + "nodeType": "VariableDeclaration", + "scope": 11399, + "src": "3068:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 11352, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "3068:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 11363, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 11356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3090:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "id": 11357, + "name": "LOG_SCALE_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11265, + "src": "3096:16:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 11358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3115:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3096:20:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 11360, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3095:22:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3090:27:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3083:6:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 11354, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "3083:6:38", + "typeDescriptions": {} + } + }, + "id": 11362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3083:35:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3068:50:38" + }, + "loopExpression": { + "expression": { + "id": 11369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11367, + "name": "delta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11353, + "src": "3131:5:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "31", + "id": 11368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3141:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3131:11:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 11370, + "nodeType": "ExpressionStatement", + "src": "3131:11:38" + }, + "nodeType": "ForStatement", + "src": "3063:499:38" + } + ] + } + }, + { + "expression": { + "id": 11409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11402, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11281, + "src": "3665:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 11408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 11405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11403, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11281, + "src": "3675:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11404, + "name": "sign", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11302, + "src": "3684:4:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "3675:13:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 11406, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3674:15:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "31", + "id": 11407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3693:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3674:20:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "3665:29:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 11410, + "nodeType": "ExpressionStatement", + "src": "3665:29:38" + } + ] + } + ] + }, + "documentation": { + "id": 11276, + "nodeType": "StructuredDocumentation", + "src": "598:738:38", + "text": " @notice Calculates the binary logarithm of x.\n @dev Based on the iterative approximation algorithm.\n https://en.wikipedia.org/wiki/Binary_logarithm#Iterative_approximation\n Requirements:\n - x must be greater than zero.\n Caveats:\n - The results are not perfectly accurate to the last decimal, due to the lossy precision of the iterative approximation\n Also because x is converted to an unsigned 129.127-binary fixed-point number during the operation to optimize the multiplication\n @param x The unsigned 128.128-binary fixed-point number for which to calculate the binary logarithm.\n @return result The binary logarithm as a signed 128.128-binary fixed-point number." + }, + "id": 11413, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "1350:4:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11279, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11278, + "mutability": "mutable", + "name": "x", + "nameLocation": "1363:1:38", + "nodeType": "VariableDeclaration", + "scope": 11413, + "src": "1355:9:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11277, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1355:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1354:11:38" + }, + "returnParameters": { + "id": 11282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11281, + "mutability": "mutable", + "name": "result", + "nameLocation": "1396:6:38", + "nodeType": "VariableDeclaration", + "scope": 11413, + "src": "1389:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 11280, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1389:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1388:15:38" + }, + "scope": 11470, + "src": "1341:2370:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11468, + "nodeType": "Block", + "src": "4158:3527:38", + "statements": [ + { + "assignments": [ + 11424 + ], + "declarations": [ + { + "constant": false, + "id": 11424, + "mutability": "mutable", + "name": "invert", + "nameLocation": "4173:6:38", + "nodeType": "VariableDeclaration", + "scope": 11468, + "src": "4168:11:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11423, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4168:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 11425, + "nodeType": "VariableDeclarationStatement", + "src": "4168:11:38" + }, + { + "assignments": [ + 11427 + ], + "declarations": [ + { + "constant": false, + "id": 11427, + "mutability": "mutable", + "name": "absY", + "nameLocation": "4197:4:38", + "nodeType": "VariableDeclaration", + "scope": 11468, + "src": "4189:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4189:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11428, + "nodeType": "VariableDeclarationStatement", + "src": "4189:12:38" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 11431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11429, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11418, + "src": "4216:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4221:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4216:6:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11435, + "nodeType": "IfStatement", + "src": "4212:34:38", + "trueBody": { + "expression": { + "expression": { + "id": 11432, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "4231:9:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 11433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4241:5:38", + "memberName": "SCALE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8104, + "src": "4231:15:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11422, + "id": 11434, + "nodeType": "Return", + "src": "4224:22:38" + } + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "4266:155:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4280:9:38", + "value": { + "name": "y", + "nodeType": "YulIdentifier", + "src": "4288:1:38" + }, + "variableNames": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4280:4:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4318:93:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4336:20:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4348:1:38", + "type": "", + "value": "0" + }, + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4351:4:38" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4344:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4344:12:38" + }, + "variableNames": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4336:4:38" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4373:24:38", + "value": { + "arguments": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4390:6:38" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4383:6:38" + }, + "nodeType": "YulFunctionCall", + "src": "4383:14:38" + }, + "variableNames": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4373:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4309:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4315:1:38", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4305:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4305:12:38" + }, + "nodeType": "YulIf", + "src": "4302:109:38" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "4280:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "4309:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "4336:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "4351:4:38", + "valueSize": 1 + }, + { + "declaration": 11424, + "isOffset": false, + "isSlot": false, + "src": "4373:6:38", + "valueSize": 1 + }, + { + "declaration": 11424, + "isOffset": false, + "isSlot": false, + "src": "4390:6:38", + "valueSize": 1 + }, + { + "declaration": 11418, + "isOffset": false, + "isSlot": false, + "src": "4288:1:38", + "valueSize": 1 + } + ], + "id": 11436, + "nodeType": "InlineAssembly", + "src": "4257:164:38" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11437, + "name": "absY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11427, + "src": "4435:4:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "3078313030303030", + "id": 11438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4442:8:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_1048576_by_1", + "typeString": "int_const 1048576" + }, + "value": "0x100000" + }, + "src": "4435:15:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11447, + "nodeType": "IfStatement", + "src": "4431:3060:38", + "trueBody": { + "id": 11446, + "nodeType": "Block", + "src": "4452:3039:38", + "statements": [ + { + "expression": { + "id": 11443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11440, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11421, + "src": "4466:6:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 11441, + "name": "Constants", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8131, + "src": "4475:9:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Constants_$8131_$", + "typeString": "type(library Constants)" + } + }, + "id": 11442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4485:5:38", + "memberName": "SCALE", + "nodeType": "MemberAccess", + "referencedDeclaration": 8104, + "src": "4475:15:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4466:24:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11444, + "nodeType": "ExpressionStatement", + "src": "4466:24:38" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "4513:2968:38", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4531:16:38", + "value": { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4546:1:38" + }, + "variables": [ + { + "name": "squared", + "nodeType": "YulTypedName", + "src": "4535:7:38", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4609:116:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4631:31:38", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4650:1:38", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "4646:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4646:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4654:7:38" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "4642:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4642:20:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4631:7:38" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4683:24:38", + "value": { + "arguments": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4700:6:38" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4693:6:38" + }, + "nodeType": "YulFunctionCall", + "src": "4693:14:38" + }, + "variableNames": [ + { + "name": "invert", + "nodeType": "YulIdentifier", + "src": "4683:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "4570:1:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4573:34:38", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4567:2:38" + }, + "nodeType": "YulFunctionCall", + "src": "4567:41:38" + }, + "nodeType": "YulIf", + "src": "4564:161:38" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4761:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4763:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4777:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4786:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4794:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4782:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4782:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4773:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4773:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4763:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4750:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4756:3:38", + "type": "", + "value": "0x1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4746:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4746:14:38" + }, + "nodeType": "YulIf", + "src": "4743:62:38" + }, + { + "nodeType": "YulAssignment", + "src": "4822:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4837:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4846:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4855:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4842:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4842:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4833:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4833:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4822:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4899:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4901:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4915:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4924:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4932:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4920:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4920:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4911:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4911:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "4901:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "4888:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4894:3:38", + "type": "", + "value": "0x2" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4884:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4884:14:38" + }, + "nodeType": "YulIf", + "src": "4881:62:38" + }, + { + "nodeType": "YulAssignment", + "src": "4960:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4975:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4984:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4993:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4980:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4980:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "4971:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "4971:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "4960:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5037:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5039:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5053:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5062:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5070:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5058:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5058:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5049:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5049:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5039:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5026:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5032:3:38", + "type": "", + "value": "0x4" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5022:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5022:14:38" + }, + "nodeType": "YulIf", + "src": "5019:62:38" + }, + { + "nodeType": "YulAssignment", + "src": "5098:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5113:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5122:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5131:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5118:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5118:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5109:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5109:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5098:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5175:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5177:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5191:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5200:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5208:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5196:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5196:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5187:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5187:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5177:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5164:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5170:3:38", + "type": "", + "value": "0x8" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5160:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5160:14:38" + }, + "nodeType": "YulIf", + "src": "5157:62:38" + }, + { + "nodeType": "YulAssignment", + "src": "5236:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5251:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5260:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5269:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5256:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5256:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5247:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5247:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5236:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5314:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5316:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5330:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5339:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5347:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5335:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5335:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5326:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5326:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5316:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5302:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5308:4:38", + "type": "", + "value": "0x10" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5298:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5298:15:38" + }, + "nodeType": "YulIf", + "src": "5295:63:38" + }, + { + "nodeType": "YulAssignment", + "src": "5375:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5390:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5399:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5408:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5395:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5395:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5386:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5386:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5375:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5453:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5455:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5469:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5478:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5486:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5474:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5474:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5465:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5465:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5455:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5441:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5447:4:38", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5437:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5437:15:38" + }, + "nodeType": "YulIf", + "src": "5434:63:38" + }, + { + "nodeType": "YulAssignment", + "src": "5514:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5529:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5538:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5547:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5534:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5534:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5525:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5525:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5514:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5592:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5594:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5608:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5617:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5625:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5613:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5613:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5604:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5604:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5594:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5580:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5586:4:38", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5576:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5576:15:38" + }, + "nodeType": "YulIf", + "src": "5573:63:38" + }, + { + "nodeType": "YulAssignment", + "src": "5653:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5668:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5677:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5686:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5673:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5673:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5664:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5664:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5653:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5731:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5733:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5747:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5756:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5764:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5752:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5752:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5743:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5743:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5733:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5719:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5725:4:38", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5715:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5715:15:38" + }, + "nodeType": "YulIf", + "src": "5712:63:38" + }, + { + "nodeType": "YulAssignment", + "src": "5792:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5807:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5816:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5825:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5812:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5812:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5803:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5803:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5792:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5871:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5873:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5887:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5896:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5904:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5892:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5892:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5883:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5883:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5873:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5858:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5864:5:38", + "type": "", + "value": "0x100" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5854:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5854:16:38" + }, + "nodeType": "YulIf", + "src": "5851:64:38" + }, + { + "nodeType": "YulAssignment", + "src": "5932:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5947:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5956:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5965:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5952:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5952:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "5943:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5943:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "5932:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6011:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6013:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6027:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6036:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6044:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6032:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6032:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6023:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6023:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6013:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "5998:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6004:5:38", + "type": "", + "value": "0x200" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5994:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "5994:16:38" + }, + "nodeType": "YulIf", + "src": "5991:64:38" + }, + { + "nodeType": "YulAssignment", + "src": "6072:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6087:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6096:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6105:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6092:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6092:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6083:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6083:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6072:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6151:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6153:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6167:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6176:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6184:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6172:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6172:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6163:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6163:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6153:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6138:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6144:5:38", + "type": "", + "value": "0x400" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6134:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6134:16:38" + }, + "nodeType": "YulIf", + "src": "6131:64:38" + }, + { + "nodeType": "YulAssignment", + "src": "6212:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6227:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6236:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6245:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6232:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6232:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6223:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6223:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6212:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6291:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6293:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6307:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6316:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6324:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6312:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6312:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6303:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6303:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6293:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6278:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6284:5:38", + "type": "", + "value": "0x800" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6274:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6274:16:38" + }, + "nodeType": "YulIf", + "src": "6271:64:38" + }, + { + "nodeType": "YulAssignment", + "src": "6352:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6367:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6376:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6385:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6372:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6372:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6363:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6363:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6352:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6432:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6434:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6448:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6457:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6465:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6453:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6453:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6444:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6444:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6434:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6418:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6424:6:38", + "type": "", + "value": "0x1000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6414:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6414:17:38" + }, + "nodeType": "YulIf", + "src": "6411:65:38" + }, + { + "nodeType": "YulAssignment", + "src": "6493:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6508:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6517:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6526:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6513:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6513:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6504:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6504:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6493:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6573:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6575:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6589:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6598:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6606:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6594:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6594:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6585:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6585:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6575:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6559:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6565:6:38", + "type": "", + "value": "0x2000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6555:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6555:17:38" + }, + "nodeType": "YulIf", + "src": "6552:65:38" + }, + { + "nodeType": "YulAssignment", + "src": "6634:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6649:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6658:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6667:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6654:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6654:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6645:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6645:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6634:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6714:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6716:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6730:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6739:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6747:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6735:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6735:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6726:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6726:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6716:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6700:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6706:6:38", + "type": "", + "value": "0x4000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6696:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6696:17:38" + }, + "nodeType": "YulIf", + "src": "6693:65:38" + }, + { + "nodeType": "YulAssignment", + "src": "6775:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6790:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6799:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6808:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6795:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6795:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6786:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6786:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6775:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6855:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6857:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6871:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6880:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6888:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6876:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6876:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6867:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6867:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6857:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6841:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6847:6:38", + "type": "", + "value": "0x8000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6837:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6837:17:38" + }, + "nodeType": "YulIf", + "src": "6834:65:38" + }, + { + "nodeType": "YulAssignment", + "src": "6916:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6931:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6940:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6949:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6936:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6936:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "6927:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6927:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "6916:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6997:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6999:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7013:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7022:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7030:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7018:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7018:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7009:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7009:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6999:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "6982:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6988:7:38", + "type": "", + "value": "0x10000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6978:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "6978:18:38" + }, + "nodeType": "YulIf", + "src": "6975:66:38" + }, + { + "nodeType": "YulAssignment", + "src": "7058:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7073:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7082:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7091:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7078:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7078:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7069:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7069:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7058:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7139:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7141:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7155:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7164:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7172:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7160:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7160:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7151:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7151:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7141:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "7124:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7130:7:38", + "type": "", + "value": "0x20000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7120:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7120:18:38" + }, + "nodeType": "YulIf", + "src": "7117:66:38" + }, + { + "nodeType": "YulAssignment", + "src": "7200:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7215:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7224:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7233:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7220:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7220:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7211:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7211:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7200:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7281:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7283:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7297:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7306:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7314:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7302:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7302:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7293:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7293:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7283:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "7266:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7272:7:38", + "type": "", + "value": "0x40000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7262:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7262:18:38" + }, + "nodeType": "YulIf", + "src": "7259:66:38" + }, + { + "nodeType": "YulAssignment", + "src": "7342:42:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7357:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7366:7:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7375:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7362:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7362:21:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7353:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7353:31:38" + }, + "variableNames": [ + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7342:7:38" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7423:44:38", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7425:40:38", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7439:3:38", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7448:6:38" + }, + { + "name": "squared", + "nodeType": "YulIdentifier", + "src": "7456:7:38" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7444:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7444:20:38" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "7435:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7435:30:38" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7425:6:38" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "absY", + "nodeType": "YulIdentifier", + "src": "7408:4:38" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7414:7:38", + "type": "", + "value": "0x80000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7404:3:38" + }, + "nodeType": "YulFunctionCall", + "src": "7404:18:38" + }, + "nodeType": "YulIf", + "src": "7401:66:38" + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "4750:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "4888:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5026:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5164:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5302:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5441:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5580:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5719:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5858:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "5998:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "6138:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "6278:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "6418:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "6559:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "6700:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "6841:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "6982:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "7124:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "7266:4:38", + "valueSize": 1 + }, + { + "declaration": 11427, + "isOffset": false, + "isSlot": false, + "src": "7408:4:38", + "valueSize": 1 + }, + { + "declaration": 11424, + "isOffset": false, + "isSlot": false, + "src": "4683:6:38", + "valueSize": 1 + }, + { + "declaration": 11424, + "isOffset": false, + "isSlot": false, + "src": "4700:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "4763:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "4786:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "4901:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "4924:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5039:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5062:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5177:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5200:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5316:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5339:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5455:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5478:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5594:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5617:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5733:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5756:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5873:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "5896:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6013:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6036:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6153:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6176:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6293:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6316:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6434:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6457:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6575:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6598:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6716:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6739:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6857:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6880:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "6999:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "7022:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "7141:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "7164:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "7283:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "7306:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "7425:6:38", + "valueSize": 1 + }, + { + "declaration": 11421, + "isOffset": false, + "isSlot": false, + "src": "7448:6:38", + "valueSize": 1 + }, + { + "declaration": 11416, + "isOffset": false, + "isSlot": false, + "src": "4546:1:38", + "valueSize": 1 + }, + { + "declaration": 11416, + "isOffset": false, + "isSlot": false, + "src": "4570:1:38", + "valueSize": 1 + } + ], + "id": 11445, + "nodeType": "InlineAssembly", + "src": "4504:2977:38" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11448, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11421, + "src": "7561:6:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7571:1:38", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7561:11:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11456, + "nodeType": "IfStatement", + "src": "7557:59:38", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 11452, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11416, + "src": "7611:1:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11453, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11418, + "src": "7614:1:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 11451, + "name": "Uint128x128Math__PowUnderflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11262, + "src": "7581:29:38", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_int256_$returns$__$", + "typeString": "function (uint256,int256) pure" + } + }, + "id": 11454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7581:35:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11455, + "nodeType": "RevertStatement", + "src": "7574:42:38" + } + }, + { + "expression": { + "condition": { + "id": 11457, + "name": "invert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11424, + "src": "7634:6:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 11465, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11421, + "src": "7672:6:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "7634:44:38", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 11460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7648:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 11459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7648:7:38", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 11458, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967269, + "src": "7643:4:38", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7643:13:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 11462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7657:3:38", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "7643:17:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 11463, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11421, + "src": "7663:6:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7643:26:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11422, + "id": 11467, + "nodeType": "Return", + "src": "7627:51:38" + } + ] + }, + "documentation": { + "id": 11414, + "nodeType": "StructuredDocumentation", + "src": "3717:363:38", + "text": " @notice Returns the value of x^y. It calculates `1 / x^abs(y)` if x is bigger than 2^128.\n At the end of the operations, we invert the result if needed.\n @param x The unsigned 128.128-binary fixed-point number for which to calculate the power\n @param y A relative number without any decimals, needs to be between ]-2^21; 2^21[" + }, + "id": 11469, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pow", + "nameLocation": "4094:3:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11416, + "mutability": "mutable", + "name": "x", + "nameLocation": "4106:1:38", + "nodeType": "VariableDeclaration", + "scope": 11469, + "src": "4098:9:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4098:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11418, + "mutability": "mutable", + "name": "y", + "nameLocation": "4116:1:38", + "nodeType": "VariableDeclaration", + "scope": 11469, + "src": "4109:8:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 11417, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "4109:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "4097:21:38" + }, + "returnParameters": { + "id": 11422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11421, + "mutability": "mutable", + "name": "result", + "nameLocation": "4150:6:38", + "nodeType": "VariableDeclaration", + "scope": 11469, + "src": "4142:14:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4142:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4141:16:38" + }, + "scope": 11470, + "src": "4085:3600:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 11471, + "src": "264:7423:38", + "usedErrors": [ + 11256, + 11262 + ], + "usedEvents": [] + } + ], + "src": "33:7655:38" + }, + "id": 38 + }, + "src/libraries/math/Uint256x256Math.sol": { + "ast": { + "absolutePath": "src/libraries/math/Uint256x256Math.sol", + "exportedSymbols": { + "BitMath": [ + 10289 + ], + "Uint256x256Math": [ + 11880 + ] + }, + "id": 11881, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11472, + "literals": [ + "solidity", + "^", + "0.8", + ".10" + ], + "nodeType": "PragmaDirective", + "src": "33:24:39" + }, + { + "absolutePath": "src/libraries/math/BitMath.sol", + "file": "./BitMath.sol", + "id": 11474, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11881, + "sourceUnit": 10290, + "src": "59:38:39", + "symbolAliases": [ + { + "foreign": { + "id": 11473, + "name": "BitMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10289, + "src": "67:7:39", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Uint256x256Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 11475, + "nodeType": "StructuredDocumentation", + "src": "99:121:39", + "text": " @title Liquidity Book Uint256x256 Math Library\n @notice Helper contract used for full precision calculations" + }, + "fullyImplemented": true, + "id": 11880, + "linearizedBaseContracts": [ + 11880 + ], + "name": "Uint256x256Math", + "nameLocation": "229:15:39", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "8e471a89", + "id": 11477, + "name": "Uint256x256Math__MulShiftOverflow", + "nameLocation": "257:33:39", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11476, + "nodeType": "ParameterList", + "parameters": [], + "src": "290:2:39" + }, + "src": "251:42:39" + }, + { + "errorSelector": "13eae715", + "id": 11479, + "name": "Uint256x256Math__MulDivOverflow", + "nameLocation": "304:31:39", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 11478, + "nodeType": "ParameterList", + "parameters": [], + "src": "335:2:39" + }, + "src": "298:40:39" + }, + { + "body": { + "id": 11508, + "nodeType": "Block", + "src": "1035:140:39", + "statements": [ + { + "assignments": [ + 11492, + 11494 + ], + "declarations": [ + { + "constant": false, + "id": 11492, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "1054:5:39", + "nodeType": "VariableDeclaration", + "scope": 11508, + "src": "1046:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11491, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1046:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11494, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "1069:5:39", + "nodeType": "VariableDeclaration", + "scope": 11508, + "src": "1061:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11493, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1061:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11499, + "initialValue": { + "arguments": [ + { + "id": 11496, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11482, + "src": "1091:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11497, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11484, + "src": "1094:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11495, + "name": "_getMulProds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11727, + "src": "1078:12:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256,uint256)" + } + }, + "id": 11498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1078:18:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1045:51:39" + }, + { + "expression": { + "arguments": [ + { + "id": 11501, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11482, + "src": "1136:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11502, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11484, + "src": "1139:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11503, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11486, + "src": "1142:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11504, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11492, + "src": "1155:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11505, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11494, + "src": "1162:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11500, + "name": "_getEndOfDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11849, + "src": "1114:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 11506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1114:54:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11490, + "id": 11507, + "nodeType": "Return", + "src": "1107:61:39" + } + ] + }, + "documentation": { + "id": 11480, + "nodeType": "StructuredDocumentation", + "src": "344:579:39", + "text": " @notice Calculates floor(x*y/denominator) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The denominator cannot be zero\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 11509, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDivRoundDown", + "nameLocation": "937:15:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11482, + "mutability": "mutable", + "name": "x", + "nameLocation": "961:1:39", + "nodeType": "VariableDeclaration", + "scope": 11509, + "src": "953:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "953:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11484, + "mutability": "mutable", + "name": "y", + "nameLocation": "972:1:39", + "nodeType": "VariableDeclaration", + "scope": 11509, + "src": "964:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "964:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11486, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "983:11:39", + "nodeType": "VariableDeclaration", + "scope": 11509, + "src": "975:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "975:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "952:43:39" + }, + "returnParameters": { + "id": 11490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11489, + "mutability": "mutable", + "name": "result", + "nameLocation": "1027:6:39", + "nodeType": "VariableDeclaration", + "scope": 11509, + "src": "1019:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1019:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1018:16:39" + }, + "scope": 11880, + "src": "928:247:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11541, + "nodeType": "Block", + "src": "1867:117:39", + "statements": [ + { + "expression": { + "id": 11527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11521, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11519, + "src": "1877:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11523, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11512, + "src": "1902:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11524, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11514, + "src": "1905:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11525, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "1908:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11522, + "name": "mulDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11509, + "src": "1886:15:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 11526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1886:34:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1877:43:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11528, + "nodeType": "ExpressionStatement", + "src": "1877:43:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 11530, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11512, + "src": "1941:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11531, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11514, + "src": "1944:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11532, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "1947:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11529, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "1934:6:39", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 11533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1934:25:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 11534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1963:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1934:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11540, + "nodeType": "IfStatement", + "src": "1930:47:39", + "trueBody": { + "expression": { + "id": 11538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11536, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11519, + "src": "1966:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 11537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1976:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1966:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11539, + "nodeType": "ExpressionStatement", + "src": "1966:11:39" + } + } + ] + }, + "documentation": { + "id": 11510, + "nodeType": "StructuredDocumentation", + "src": "1181:576:39", + "text": " @notice Calculates ceil(x*y/denominator) with full precision\n The result will be rounded up\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The denominator cannot be zero\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 11542, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDivRoundUp", + "nameLocation": "1771:13:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11512, + "mutability": "mutable", + "name": "x", + "nameLocation": "1793:1:39", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "1785:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1785:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11514, + "mutability": "mutable", + "name": "y", + "nameLocation": "1804:1:39", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "1796:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1796:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11516, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "1815:11:39", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "1807:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11515, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1807:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1784:43:39" + }, + "returnParameters": { + "id": 11520, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11519, + "mutability": "mutable", + "name": "result", + "nameLocation": "1859:6:39", + "nodeType": "VariableDeclaration", + "scope": 11542, + "src": "1851:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11518, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1851:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1850:16:39" + }, + "scope": 11880, + "src": "1762:222:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11597, + "nodeType": "Block", + "src": "2715:383:39", + "statements": [ + { + "assignments": [ + 11555, + 11557 + ], + "declarations": [ + { + "constant": false, + "id": 11555, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "2734:5:39", + "nodeType": "VariableDeclaration", + "scope": 11597, + "src": "2726:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2726:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11557, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "2749:5:39", + "nodeType": "VariableDeclaration", + "scope": 11597, + "src": "2741:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2741:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11562, + "initialValue": { + "arguments": [ + { + "id": 11559, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11545, + "src": "2771:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11560, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11547, + "src": "2774:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11558, + "name": "_getMulProds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11727, + "src": "2758:12:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256,uint256)" + } + }, + "id": 11561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2758:18:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2725:51:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11563, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11555, + "src": "2791:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 11564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2800:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2791:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11572, + "nodeType": "IfStatement", + "src": "2787:40:39", + "trueBody": { + "expression": { + "id": 11570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11566, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11552, + "src": "2803:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11567, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11555, + "src": "2812:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 11568, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11549, + "src": "2821:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2812:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2803:24:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11571, + "nodeType": "ExpressionStatement", + "src": "2803:24:39" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11573, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11557, + "src": "2841:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 11574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2850:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2841:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11596, + "nodeType": "IfStatement", + "src": "2837:255:39", + "trueBody": { + "id": 11595, + "nodeType": "Block", + "src": "2853:239:39", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11576, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11557, + "src": "2927:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 11577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2936:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 11578, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11549, + "src": "2941:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2936:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2927:20:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11584, + "nodeType": "IfStatement", + "src": "2923:68:39", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11581, + "name": "Uint256x256Math__MulShiftOverflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11477, + "src": "2956:33:39", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2956:35:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11583, + "nodeType": "RevertStatement", + "src": "2949:42:39" + } + }, + { + "id": 11594, + "nodeType": "UncheckedBlock", + "src": "3006:76:39", + "statements": [ + { + "expression": { + "id": 11592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11585, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11552, + "src": "3034:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11586, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11557, + "src": "3044:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 11589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323536", + "id": 11587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3054:3:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 11588, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11549, + "src": "3060:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3054:12:39", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 11590, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3053:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "3044:23:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3034:33:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11593, + "nodeType": "ExpressionStatement", + "src": "3034:33:39" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 11543, + "nodeType": "StructuredDocumentation", + "src": "1990:618:39", + "text": " @notice Calculates floor(x * y / 2**offset) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param offset The offset as an uint256, can't be greater than 256\n @return result The result as an uint256" + }, + "id": 11598, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulShiftRoundDown", + "nameLocation": "2622:17:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11545, + "mutability": "mutable", + "name": "x", + "nameLocation": "2648:1:39", + "nodeType": "VariableDeclaration", + "scope": 11598, + "src": "2640:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2640:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11547, + "mutability": "mutable", + "name": "y", + "nameLocation": "2659:1:39", + "nodeType": "VariableDeclaration", + "scope": 11598, + "src": "2651:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2651:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11549, + "mutability": "mutable", + "name": "offset", + "nameLocation": "2668:6:39", + "nodeType": "VariableDeclaration", + "scope": 11598, + "src": "2662:12:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11548, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2662:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "2639:36:39" + }, + "returnParameters": { + "id": 11553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11552, + "mutability": "mutable", + "name": "result", + "nameLocation": "2707:6:39", + "nodeType": "VariableDeclaration", + "scope": 11598, + "src": "2699:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2699:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2698:16:39" + }, + "scope": 11880, + "src": "2613:485:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11632, + "nodeType": "Block", + "src": "3827:114:39", + "statements": [ + { + "expression": { + "id": 11616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11610, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11608, + "src": "3837:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11612, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11601, + "src": "3864:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11613, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11603, + "src": "3867:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11614, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11605, + "src": "3870:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 11611, + "name": "mulShiftRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11598, + "src": "3846:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 11615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3846:31:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3837:40:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11617, + "nodeType": "ExpressionStatement", + "src": "3837:40:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 11619, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11601, + "src": "3898:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11620, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11603, + "src": "3901:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 11621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3904:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 11622, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11605, + "src": "3909:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3904:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11618, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "3891:6:39", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 11624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3891:25:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 11625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3920:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3891:30:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11631, + "nodeType": "IfStatement", + "src": "3887:47:39", + "trueBody": { + "expression": { + "id": 11629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11627, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11608, + "src": "3923:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 11628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3933:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3923:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11630, + "nodeType": "ExpressionStatement", + "src": "3923:11:39" + } + } + ] + }, + "documentation": { + "id": 11599, + "nodeType": "StructuredDocumentation", + "src": "3104:618:39", + "text": " @notice Calculates floor(x * y / 2**offset) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param offset The offset as an uint256, can't be greater than 256\n @return result The result as an uint256" + }, + "id": 11633, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulShiftRoundUp", + "nameLocation": "3736:15:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11601, + "mutability": "mutable", + "name": "x", + "nameLocation": "3760:1:39", + "nodeType": "VariableDeclaration", + "scope": 11633, + "src": "3752:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3752:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11603, + "mutability": "mutable", + "name": "y", + "nameLocation": "3771:1:39", + "nodeType": "VariableDeclaration", + "scope": 11633, + "src": "3763:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3763:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11605, + "mutability": "mutable", + "name": "offset", + "nameLocation": "3780:6:39", + "nodeType": "VariableDeclaration", + "scope": 11633, + "src": "3774:12:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11604, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3774:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3751:36:39" + }, + "returnParameters": { + "id": 11609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11608, + "mutability": "mutable", + "name": "result", + "nameLocation": "3819:6:39", + "nodeType": "VariableDeclaration", + "scope": 11633, + "src": "3811:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3811:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3810:16:39" + }, + "scope": 11880, + "src": "3727:214:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11677, + "nodeType": "Block", + "src": "4678:325:39", + "statements": [ + { + "assignments": [ + 11646 + ], + "declarations": [ + { + "constant": false, + "id": 11646, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "4696:5:39", + "nodeType": "VariableDeclaration", + "scope": 11677, + "src": "4688:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11645, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4688:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11647, + "nodeType": "VariableDeclarationStatement", + "src": "4688:13:39" + }, + { + "assignments": [ + 11649 + ], + "declarations": [ + { + "constant": false, + "id": 11649, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "4719:5:39", + "nodeType": "VariableDeclaration", + "scope": 11677, + "src": "4711:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4711:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11650, + "nodeType": "VariableDeclarationStatement", + "src": "4711:13:39" + }, + { + "expression": { + "id": 11655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11651, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11646, + "src": "4735:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11652, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11636, + "src": "4743:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 11653, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11638, + "src": "4748:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4743:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4735:19:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11656, + "nodeType": "ExpressionStatement", + "src": "4735:19:39" + }, + { + "id": 11666, + "nodeType": "UncheckedBlock", + "src": "4809:106:39", + "statements": [ + { + "expression": { + "id": 11664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11657, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11649, + "src": "4833:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11658, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11636, + "src": "4841:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "id": 11661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "323536", + "id": 11659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4847:3:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 11660, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11638, + "src": "4853:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4847:12:39", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 11662, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4846:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "4841:19:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4833:27:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11665, + "nodeType": "ExpressionStatement", + "src": "4833:27:39" + } + ] + }, + { + "expression": { + "arguments": [ + { + "id": 11668, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11636, + "src": "4954:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 11669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4957:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 11670, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11638, + "src": "4962:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4957:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11672, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11640, + "src": "4970:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11673, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11646, + "src": "4983:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11674, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11649, + "src": "4990:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11667, + "name": "_getEndOfDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11849, + "src": "4932:21:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 11675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4932:64:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11644, + "id": 11676, + "nodeType": "Return", + "src": "4925:71:39" + } + ] + }, + "documentation": { + "id": 11634, + "nodeType": "StructuredDocumentation", + "src": "3947:614:39", + "text": " @notice Calculates floor(x << offset / y) with full precision\n The result will be rounded down\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param offset The number of bit to shift x as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 11678, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "shiftDivRoundDown", + "nameLocation": "4575:17:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11636, + "mutability": "mutable", + "name": "x", + "nameLocation": "4601:1:39", + "nodeType": "VariableDeclaration", + "scope": 11678, + "src": "4593:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4593:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11638, + "mutability": "mutable", + "name": "offset", + "nameLocation": "4610:6:39", + "nodeType": "VariableDeclaration", + "scope": 11678, + "src": "4604:12:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11637, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4604:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11640, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "4626:11:39", + "nodeType": "VariableDeclaration", + "scope": 11678, + "src": "4618:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4618:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4592:46:39" + }, + "returnParameters": { + "id": 11644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11643, + "mutability": "mutable", + "name": "result", + "nameLocation": "4670:6:39", + "nodeType": "VariableDeclaration", + "scope": 11678, + "src": "4662:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4662:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4661:16:39" + }, + "scope": 11880, + "src": "4566:437:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11712, + "nodeType": "Block", + "src": "5735:134:39", + "statements": [ + { + "expression": { + "id": 11696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11690, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11688, + "src": "5745:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 11692, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11681, + "src": "5772:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11693, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11683, + "src": "5775:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 11694, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11685, + "src": "5783:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11691, + "name": "shiftDivRoundDown", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11678, + "src": "5754:17:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint8_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint8,uint256) pure returns (uint256)" + } + }, + "id": 11695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5754:41:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5745:50:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11697, + "nodeType": "ExpressionStatement", + "src": "5745:50:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 11699, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11681, + "src": "5816:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 11700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5819:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 11701, + "name": "offset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11683, + "src": "5824:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5819:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11703, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11685, + "src": "5832:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11698, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967280, + "src": "5809:6:39", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 11704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5809:35:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 11705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5848:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5809:40:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11711, + "nodeType": "IfStatement", + "src": "5805:57:39", + "trueBody": { + "expression": { + "id": 11709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11707, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11688, + "src": "5851:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 11708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5861:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5851:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11710, + "nodeType": "ExpressionStatement", + "src": "5851:11:39" + } + } + ] + }, + "documentation": { + "id": 11679, + "nodeType": "StructuredDocumentation", + "src": "5009:611:39", + "text": " @notice Calculates ceil(x << offset / y) with full precision\n The result will be rounded up\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n Requirements:\n - The offset needs to be strictly lower than 256\n - The result must fit within uint256\n Caveats:\n - This function does not work with fixed-point numbers\n @param x The multiplicand as an uint256\n @param offset The number of bit to shift x as an uint256\n @param denominator The divisor as an uint256\n @return result The result as an uint256" + }, + "id": 11713, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "shiftDivRoundUp", + "nameLocation": "5634:15:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11681, + "mutability": "mutable", + "name": "x", + "nameLocation": "5658:1:39", + "nodeType": "VariableDeclaration", + "scope": 11713, + "src": "5650:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5650:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11683, + "mutability": "mutable", + "name": "offset", + "nameLocation": "5667:6:39", + "nodeType": "VariableDeclaration", + "scope": 11713, + "src": "5661:12:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 11682, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5661:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11685, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "5683:11:39", + "nodeType": "VariableDeclaration", + "scope": 11713, + "src": "5675:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11684, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5675:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5649:46:39" + }, + "returnParameters": { + "id": 11689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11688, + "mutability": "mutable", + "name": "result", + "nameLocation": "5727:6:39", + "nodeType": "VariableDeclaration", + "scope": 11713, + "src": "5719:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5719:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5718:16:39" + }, + "scope": 11880, + "src": "5625:244:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 11726, + "nodeType": "Block", + "src": "6288:451:39", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "6592:141:39", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6606:30:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6623:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6626:1:39" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6633:1:39", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "6629:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6629:6:39" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier", + "src": "6616:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "6616:20:39" + }, + "variables": [ + { + "name": "mm", + "nodeType": "YulTypedName", + "src": "6610:2:39", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6649:18:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6662:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6665:1:39" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6658:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6658:9:39" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "6649:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6680:43:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "mm", + "nodeType": "YulIdentifier", + "src": "6697:2:39" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "6701:5:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6693:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6693:14:39" + }, + { + "arguments": [ + { + "name": "mm", + "nodeType": "YulIdentifier", + "src": "6712:2:39" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "6716:5:39" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6709:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "6709:13:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6689:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "6689:34:39" + }, + "variableNames": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "6680:5:39" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11721, + "isOffset": false, + "isSlot": false, + "src": "6649:5:39", + "valueSize": 1 + }, + { + "declaration": 11721, + "isOffset": false, + "isSlot": false, + "src": "6701:5:39", + "valueSize": 1 + }, + { + "declaration": 11721, + "isOffset": false, + "isSlot": false, + "src": "6716:5:39", + "valueSize": 1 + }, + { + "declaration": 11723, + "isOffset": false, + "isSlot": false, + "src": "6680:5:39", + "valueSize": 1 + }, + { + "declaration": 11716, + "isOffset": false, + "isSlot": false, + "src": "6623:1:39", + "valueSize": 1 + }, + { + "declaration": 11716, + "isOffset": false, + "isSlot": false, + "src": "6662:1:39", + "valueSize": 1 + }, + { + "declaration": 11718, + "isOffset": false, + "isSlot": false, + "src": "6626:1:39", + "valueSize": 1 + }, + { + "declaration": 11718, + "isOffset": false, + "isSlot": false, + "src": "6665:1:39", + "valueSize": 1 + } + ], + "id": 11725, + "nodeType": "InlineAssembly", + "src": "6583:150:39" + } + ] + }, + "documentation": { + "id": 11714, + "nodeType": "StructuredDocumentation", + "src": "5875:312:39", + "text": " @notice Helper function to return the result of `x * y` as 2 uint256\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @return prod0 The least significant 256 bits of the product\n @return prod1 The most significant 256 bits of the product" + }, + "id": 11727, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getMulProds", + "nameLocation": "6201:12:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11716, + "mutability": "mutable", + "name": "x", + "nameLocation": "6222:1:39", + "nodeType": "VariableDeclaration", + "scope": 11727, + "src": "6214:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11715, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6214:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11718, + "mutability": "mutable", + "name": "y", + "nameLocation": "6233:1:39", + "nodeType": "VariableDeclaration", + "scope": 11727, + "src": "6225:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11717, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6225:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6213:22:39" + }, + "returnParameters": { + "id": 11724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11721, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "6266:5:39", + "nodeType": "VariableDeclaration", + "scope": 11727, + "src": "6258:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6258:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11723, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "6281:5:39", + "nodeType": "VariableDeclaration", + "scope": 11727, + "src": "6273:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6273:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6257:30:39" + }, + "scope": 11880, + "src": "6192:547:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11848, + "nodeType": "Block", + "src": "7350:3225:39", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11743, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11738, + "src": "7422:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7431:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7422:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 11846, + "nodeType": "Block", + "src": "7535:3034:39", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11754, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11738, + "src": "7640:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 11755, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "7649:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7640:20:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11760, + "nodeType": "IfStatement", + "src": "7636:66:39", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11757, + "name": "Uint256x256Math__MulDivOverflow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11479, + "src": "7669:31:39", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7669:33:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11759, + "nodeType": "RevertStatement", + "src": "7662:40:39" + } + }, + { + "assignments": [ + 11762 + ], + "declarations": [ + { + "constant": false, + "id": 11762, + "mutability": "mutable", + "name": "remainder", + "nameLocation": "7809:9:39", + "nodeType": "VariableDeclaration", + "scope": 11846, + "src": "7801:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7801:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11763, + "nodeType": "VariableDeclarationStatement", + "src": "7801:17:39" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "7841:291:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7910:38:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "7930:1:39" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "7933:1:39" + }, + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "7936:11:39" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier", + "src": "7923:6:39" + }, + "nodeType": "YulFunctionCall", + "src": "7923:25:39" + }, + "variableNames": [ + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "7910:9:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8030:41:39", + "value": { + "arguments": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "8043:5:39" + }, + { + "arguments": [ + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "8053:9:39" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8064:5:39" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8050:2:39" + }, + "nodeType": "YulFunctionCall", + "src": "8050:20:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8039:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8039:32:39" + }, + "variableNames": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "8030:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8088:30:39", + "value": { + "arguments": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8101:5:39" + }, + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "8108:9:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8097:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8097:21:39" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8088:5:39" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11734, + "isOffset": false, + "isSlot": false, + "src": "7936:11:39", + "valueSize": 1 + }, + { + "declaration": 11736, + "isOffset": false, + "isSlot": false, + "src": "8064:5:39", + "valueSize": 1 + }, + { + "declaration": 11736, + "isOffset": false, + "isSlot": false, + "src": "8088:5:39", + "valueSize": 1 + }, + { + "declaration": 11736, + "isOffset": false, + "isSlot": false, + "src": "8101:5:39", + "valueSize": 1 + }, + { + "declaration": 11738, + "isOffset": false, + "isSlot": false, + "src": "8030:5:39", + "valueSize": 1 + }, + { + "declaration": 11738, + "isOffset": false, + "isSlot": false, + "src": "8043:5:39", + "valueSize": 1 + }, + { + "declaration": 11762, + "isOffset": false, + "isSlot": false, + "src": "7910:9:39", + "valueSize": 1 + }, + { + "declaration": 11762, + "isOffset": false, + "isSlot": false, + "src": "8053:9:39", + "valueSize": 1 + }, + { + "declaration": 11762, + "isOffset": false, + "isSlot": false, + "src": "8108:9:39", + "valueSize": 1 + }, + { + "declaration": 11730, + "isOffset": false, + "isSlot": false, + "src": "7930:1:39", + "valueSize": 1 + }, + { + "declaration": 11732, + "isOffset": false, + "isSlot": false, + "src": "7933:1:39", + "valueSize": 1 + } + ], + "id": 11764, + "nodeType": "InlineAssembly", + "src": "7832:300:39" + }, + { + "id": 11845, + "nodeType": "UncheckedBlock", + "src": "8333:2226:39", + "statements": [ + { + "assignments": [ + 11766 + ], + "declarations": [ + { + "constant": false, + "id": 11766, + "mutability": "mutable", + "name": "lpotdod", + "nameLocation": "8475:7:39", + "nodeType": "VariableDeclaration", + "scope": 11845, + "src": "8467:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11765, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8467:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11774, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11767, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "8485:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "8500:12:39", + "subExpression": { + "id": 11768, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "8501:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 11770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8515:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8500:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 11772, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8499:18:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8485:32:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8467:50:39" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8544:419:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8620:40:39", + "value": { + "arguments": [ + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "8639:11:39" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8652:7:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8635:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8635:25:39" + }, + "variableNames": [ + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "8620:11:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8738:28:39", + "value": { + "arguments": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8751:5:39" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8758:7:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8747:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8747:19:39" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8738:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8897:48:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8920:1:39", + "type": "", + "value": "0" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8923:7:39" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8916:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8916:15:39" + }, + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8933:7:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8912:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8912:29:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8943:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8908:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "8908:37:39" + }, + "variableNames": [ + { + "name": "lpotdod", + "nodeType": "YulIdentifier", + "src": "8897:7:39" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11734, + "isOffset": false, + "isSlot": false, + "src": "8620:11:39", + "valueSize": 1 + }, + { + "declaration": 11734, + "isOffset": false, + "isSlot": false, + "src": "8639:11:39", + "valueSize": 1 + }, + { + "declaration": 11766, + "isOffset": false, + "isSlot": false, + "src": "8652:7:39", + "valueSize": 1 + }, + { + "declaration": 11766, + "isOffset": false, + "isSlot": false, + "src": "8758:7:39", + "valueSize": 1 + }, + { + "declaration": 11766, + "isOffset": false, + "isSlot": false, + "src": "8897:7:39", + "valueSize": 1 + }, + { + "declaration": 11766, + "isOffset": false, + "isSlot": false, + "src": "8923:7:39", + "valueSize": 1 + }, + { + "declaration": 11766, + "isOffset": false, + "isSlot": false, + "src": "8933:7:39", + "valueSize": 1 + }, + { + "declaration": 11736, + "isOffset": false, + "isSlot": false, + "src": "8738:5:39", + "valueSize": 1 + }, + { + "declaration": 11736, + "isOffset": false, + "isSlot": false, + "src": "8751:5:39", + "valueSize": 1 + } + ], + "id": 11775, + "nodeType": "InlineAssembly", + "src": "8535:428:39" + }, + { + "expression": { + "id": 11780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11776, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11736, + "src": "9036:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11777, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11738, + "src": "9045:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11778, + "name": "lpotdod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11766, + "src": "9053:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9045:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9036:24:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11781, + "nodeType": "ExpressionStatement", + "src": "9036:24:39" + }, + { + "assignments": [ + 11783 + ], + "declarations": [ + { + "constant": false, + "id": 11783, + "mutability": "mutable", + "name": "inverse", + "nameLocation": "9401:7:39", + "nodeType": "VariableDeclaration", + "scope": 11845, + "src": "9393:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11782, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9393:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11790, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 11784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9412:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11785, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "9416:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9412:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 11787, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9411:17:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "32", + "id": 11788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9431:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "9411:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9393:39:39" + }, + { + "expression": { + "id": 11797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11791, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9660:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 11792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9671:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11793, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "9675:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11794, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9689:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9675:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9671:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9660:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11798, + "nodeType": "ExpressionStatement", + "src": "9660:36:39" + }, + { + "expression": { + "id": 11805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11799, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9733:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 11800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9744:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11801, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "9748:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11802, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9762:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9748:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9744:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9733:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11806, + "nodeType": "ExpressionStatement", + "src": "9733:36:39" + }, + { + "expression": { + "id": 11813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11807, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9807:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 11808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9818:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11809, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "9822:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11810, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9836:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9822:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9818:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9807:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11814, + "nodeType": "ExpressionStatement", + "src": "9807:36:39" + }, + { + "expression": { + "id": 11821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11815, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9881:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 11816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9892:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11817, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "9896:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11818, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9910:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9896:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9892:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9881:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11822, + "nodeType": "ExpressionStatement", + "src": "9881:36:39" + }, + { + "expression": { + "id": 11829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11823, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9955:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 11824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9966:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11825, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "9970:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11826, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "9984:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9970:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9966:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9955:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11830, + "nodeType": "ExpressionStatement", + "src": "9955:36:39" + }, + { + "expression": { + "id": 11837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11831, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "10030:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 11832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10041:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11833, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "10045:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11834, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "10059:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10045:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10041:25:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10030:36:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11838, + "nodeType": "ExpressionStatement", + "src": "10030:36:39" + }, + { + "expression": { + "id": 11843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11839, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11741, + "src": "10520:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11840, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11736, + "src": "10529:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 11841, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11783, + "src": "10537:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10529:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10520:24:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11844, + "nodeType": "ExpressionStatement", + "src": "10520:24:39" + } + ] + } + ] + }, + "id": 11847, + "nodeType": "IfStatement", + "src": "7418:3151:39", + "trueBody": { + "id": 11753, + "nodeType": "Block", + "src": "7434:95:39", + "statements": [ + { + "id": 11752, + "nodeType": "UncheckedBlock", + "src": "7448:71:39", + "statements": [ + { + "expression": { + "id": 11750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 11746, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11741, + "src": "7476:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11747, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11736, + "src": "7485:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 11748, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11734, + "src": "7493:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7485:19:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7476:28:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11751, + "nodeType": "ExpressionStatement", + "src": "7476:28:39" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 11728, + "nodeType": "StructuredDocumentation", + "src": "6745:430:39", + "text": " @notice Helper function to return the result of `x * y / denominator` with full precision\n @param x The multiplicand as an uint256\n @param y The multiplier as an uint256\n @param denominator The divisor as an uint256\n @param prod0 The least significant 256 bits of the product\n @param prod1 The most significant 256 bits of the product\n @return result The result as an uint256" + }, + "id": 11849, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getEndOfDivRoundDown", + "nameLocation": "7189:21:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11730, + "mutability": "mutable", + "name": "x", + "nameLocation": "7219:1:39", + "nodeType": "VariableDeclaration", + "scope": 11849, + "src": "7211:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7211:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11732, + "mutability": "mutable", + "name": "y", + "nameLocation": "7230:1:39", + "nodeType": "VariableDeclaration", + "scope": 11849, + "src": "7222:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7222:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11734, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "7241:11:39", + "nodeType": "VariableDeclaration", + "scope": 11849, + "src": "7233:19:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11733, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7233:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11736, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "7262:5:39", + "nodeType": "VariableDeclaration", + "scope": 11849, + "src": "7254:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11735, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7254:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11738, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "7277:5:39", + "nodeType": "VariableDeclaration", + "scope": 11849, + "src": "7269:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7269:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7210:73:39" + }, + "returnParameters": { + "id": 11742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11741, + "mutability": "mutable", + "name": "result", + "nameLocation": "7338:6:39", + "nodeType": "VariableDeclaration", + "scope": 11849, + "src": "7330:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7330:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7329:16:39" + }, + "scope": 11880, + "src": "7180:3395:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11878, + "nodeType": "Block", + "src": "10775:619:39", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11857, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11852, + "src": "10789:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 11858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10794:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10789:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11862, + "nodeType": "IfStatement", + "src": "10785:20:39", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 11860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10804:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 11856, + "id": 11861, + "nodeType": "Return", + "src": "10797:8:39" + } + }, + { + "assignments": [ + 11864 + ], + "declarations": [ + { + "constant": false, + "id": 11864, + "mutability": "mutable", + "name": "msb", + "nameLocation": "10824:3:39", + "nodeType": "VariableDeclaration", + "scope": 11878, + "src": "10816:11:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11863, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10816:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11869, + "initialValue": { + "arguments": [ + { + "id": 11867, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11852, + "src": "10857:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11865, + "name": "BitMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10289, + "src": "10830:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BitMath_$10289_$", + "typeString": "type(library BitMath)" + } + }, + "id": 11866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10838:18:39", + "memberName": "mostSignificantBit", + "nodeType": "MemberAccess", + "referencedDeclaration": 10278, + "src": "10830:26:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256) pure returns (uint8)" + } + }, + "id": 11868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10830:29:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10816:43:39" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "10879:470:39", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10893:28:39", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10910:1:39", + "type": "", + "value": "1" + }, + { + "name": "msb", + "nodeType": "YulIdentifier", + "src": "10913:3:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "10906:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10906:11:39" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10919:1:39", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "10902:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10902:19:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10893:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10935:42:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10948:1:39", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10955:5:39" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10966:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10969:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "10962:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10962:13:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10951:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10951:25:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "10944:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10944:33:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10935:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10990:42:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11003:1:39", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11010:5:39" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11021:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11024:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11017:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11017:13:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11006:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11006:25:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "10999:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "10999:33:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "10990:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11045:42:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11058:1:39", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11065:5:39" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11076:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11079:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11072:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11072:13:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11061:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11061:25:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11054:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11054:33:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11045:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11100:42:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11113:1:39", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11120:5:39" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11131:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11134:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11127:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11127:13:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11116:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11116:25:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11109:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11109:33:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11100:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11155:42:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11168:1:39", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11175:5:39" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11186:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11189:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11182:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11182:13:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11171:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11171:25:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11164:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11164:33:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11155:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11210:42:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11223:1:39", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11230:5:39" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11241:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11244:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11237:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11237:13:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11226:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11226:25:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11219:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11219:33:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11210:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11265:42:39", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11278:1:39", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11285:5:39" + }, + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11296:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11299:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11292:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11292:13:39" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11281:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11281:25:39" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "11274:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11274:33:39" + }, + "variableNames": [ + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11265:5:39" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11321:18:39", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11330:1:39" + }, + { + "name": "sqrtX", + "nodeType": "YulIdentifier", + "src": "11333:5:39" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "11326:3:39" + }, + "nodeType": "YulFunctionCall", + "src": "11326:13:39" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "11321:1:39" + } + ] + } + ] + }, + "evmVersion": "shanghai", + "externalReferences": [ + { + "declaration": 11864, + "isOffset": false, + "isSlot": false, + "src": "10913:3:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "10893:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "10935:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "10955:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "10969:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "10990:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11010:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11024:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11045:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11065:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11079:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11100:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11120:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11134:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11155:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11175:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11189:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11210:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11230:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11244:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11265:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11285:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11299:5:39", + "valueSize": 1 + }, + { + "declaration": 11855, + "isOffset": false, + "isSlot": false, + "src": "11333:5:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "10966:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11021:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11076:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11131:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11186:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11241:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11296:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11321:1:39", + "valueSize": 1 + }, + { + "declaration": 11852, + "isOffset": false, + "isSlot": false, + "src": "11330:1:39", + "valueSize": 1 + } + ], + "id": 11870, + "nodeType": "InlineAssembly", + "src": "10870:479:39" + }, + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11871, + "name": "sqrtX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11855, + "src": "11366:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 11872, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11852, + "src": "11374:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11366:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 11875, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11852, + "src": "11386:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "11366:21:39", + "trueExpression": { + "id": 11874, + "name": "sqrtX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11855, + "src": "11378:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11856, + "id": 11877, + "nodeType": "Return", + "src": "11359:28:39" + } + ] + }, + "documentation": { + "id": 11850, + "nodeType": "StructuredDocumentation", + "src": "10581:126:39", + "text": " @notice Calculates the square root of x\n @dev Credit to OpenZeppelin's Math library under MIT license" + }, + "id": 11879, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "10721:4:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11852, + "mutability": "mutable", + "name": "x", + "nameLocation": "10734:1:39", + "nodeType": "VariableDeclaration", + "scope": 11879, + "src": "10726:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11851, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10726:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10725:11:39" + }, + "returnParameters": { + "id": 11856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11855, + "mutability": "mutable", + "name": "sqrtX", + "nameLocation": "10768:5:39", + "nodeType": "VariableDeclaration", + "scope": 11879, + "src": "10760:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11854, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10760:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10759:15:39" + }, + "scope": 11880, + "src": "10712:682:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 11881, + "src": "221:11175:39", + "usedErrors": [ + 11477, + 11479 + ], + "usedEvents": [] + } + ], + "src": "33:11364:39" + }, + "id": 39 + } + } + } +} \ No newline at end of file diff --git a/src/interfaces/ILBFactory.sol b/src/interfaces/ILBFactory.sol index e9bc54cb..f226d1ae 100644 --- a/src/interfaces/ILBFactory.sol +++ b/src/interfaces/ILBFactory.sol @@ -9,7 +9,6 @@ import {ILBPair} from "./ILBPair.sol"; /** * @title Liquidity Book Factory Interface - * @author Trader Sovryn LB * @notice Required interface of LBFactory contract */ interface ILBFactory { @@ -30,7 +29,6 @@ interface ILBFactory { error LBFactory__SameFlashLoanFee(uint256 flashLoanFee); error LBFactory__LBPairSafetyCheckFailed(address LBPairImplementation); error LBFactory__SameImplementation(address LBPairImplementation); - error LBFactory__ImplementationNotSet(); error LBFactory__SameHooksImplementation(address hooksImplementation); error LBFactory__SameHooksParameters(bytes32 hooksParameters); error LBFactory__InvalidHooksParameters(); @@ -89,7 +87,7 @@ interface ILBFactory { function getFlashLoanFee() external view returns (uint256); - function getLBPairImplementation() external view returns (address); + function getLBPairBeacon() external view returns (address); function getNumberOfLBPairs() external view returns (uint256); @@ -99,6 +97,8 @@ interface ILBFactory { function getQuoteAssetAtIndex(uint256 index) external view returns (IERC20); + function initialize(address feeRecipient, address initialOwner, uint256 flashLoanFee, address lbPairBeaconAddress) external; + function isQuoteAsset(IERC20 token) external view returns (bool); function getLBPairInformation(IERC20 tokenX, IERC20 tokenY, uint256 binStep) @@ -129,7 +129,7 @@ interface ILBFactory { view returns (LBPairInformation[] memory LBPairsBinStep); - function setLBPairImplementation(address lbPairImplementation) external; + function getPauserRole() external pure returns (bytes32); function createLBPair(IERC20 tokenX, IERC20 tokenY, uint24 activeId, uint16 binStep) external diff --git a/src/interfaces/ILBFlashLoanCallback.sol b/src/interfaces/ILBFlashLoanCallback.sol index c1ddebd1..2ffb39be 100644 --- a/src/interfaces/ILBFlashLoanCallback.sol +++ b/src/interfaces/ILBFlashLoanCallback.sol @@ -5,7 +5,6 @@ pragma solidity ^0.8.10; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /// @title Liquidity Book Flashloan Callback Interface -/// @author Trader Sovryn LB /// @notice Required interface to interact with LB flash loans interface ILBFlashLoanCallback { function LBFlashLoanCallback( diff --git a/src/interfaces/ILBLegacyFactory.sol b/src/interfaces/ILBLegacyFactory.sol index 38ad9d8b..7771bf46 100644 --- a/src/interfaces/ILBLegacyFactory.sol +++ b/src/interfaces/ILBLegacyFactory.sol @@ -7,7 +7,6 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {ILBLegacyPair} from "./ILBLegacyPair.sol"; /// @title Liquidity Book Factory Interface -/// @author Trader Sovryn LB /// @notice Required interface of LBFactory contract interface ILBLegacyFactory { /// @dev Structure to store the LBPair information, such as: diff --git a/src/interfaces/ILBLegacyPair.sol b/src/interfaces/ILBLegacyPair.sol index 3a780cef..9b50bf56 100644 --- a/src/interfaces/ILBLegacyPair.sol +++ b/src/interfaces/ILBLegacyPair.sol @@ -7,7 +7,6 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {ILBLegacyToken} from "./ILBLegacyToken.sol"; /// @title Liquidity Book Pair V2 Interface -/// @author Trader Sovryn LB /// @notice Required interface of LBPair contract interface ILBLegacyPair is ILBLegacyToken { /// @dev Structure to store the protocol fees: diff --git a/src/interfaces/ILBLegacyRouter.sol b/src/interfaces/ILBLegacyRouter.sol index 1b75067e..3116bb56 100644 --- a/src/interfaces/ILBLegacyRouter.sol +++ b/src/interfaces/ILBLegacyRouter.sol @@ -11,7 +11,6 @@ import {ILBToken} from "./ILBToken.sol"; import {IWNATIVE} from "./IWNATIVE.sol"; /// @title Liquidity Book Router Interface -/// @author Trader Sovryn LB /// @notice Required interface of LBRouter contract interface ILBLegacyRouter { struct LiquidityParameters { diff --git a/src/interfaces/ILBLegacyToken.sol b/src/interfaces/ILBLegacyToken.sol index c7501f4c..f034403f 100644 --- a/src/interfaces/ILBLegacyToken.sol +++ b/src/interfaces/ILBLegacyToken.sol @@ -5,7 +5,6 @@ pragma solidity ^0.8.10; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; /// @title Liquidity Book V2 Token Interface -/// @author Trader Sovryn LB /// @notice Required interface of LBToken contract interface ILBLegacyToken is IERC165 { event TransferSingle(address indexed sender, address indexed from, address indexed to, uint256 id, uint256 amount); diff --git a/src/interfaces/ILBPair.sol b/src/interfaces/ILBPair.sol index 9696a46e..1a2a516b 100644 --- a/src/interfaces/ILBPair.sol +++ b/src/interfaces/ILBPair.sol @@ -91,8 +91,6 @@ interface ILBPair is ILBToken { uint24 activeId ) external; - function implementation() external view returns (address); - function getFactory() external view returns (ILBFactory factory); function getTokenX() external view returns (IERC20 tokenX); diff --git a/src/interfaces/ILBRouter.sol b/src/interfaces/ILBRouter.sol index 6a8b4c72..24774b8a 100644 --- a/src/interfaces/ILBRouter.sol +++ b/src/interfaces/ILBRouter.sol @@ -14,7 +14,6 @@ import {IWNATIVE} from "./IWNATIVE.sol"; /** * @title Liquidity Book Router Interface - * @author Trader Sovryn LB * @notice Required interface of LBRouter contract */ interface ILBRouter { diff --git a/src/interfaces/ILBToken.sol b/src/interfaces/ILBToken.sol index 969a4703..04ec02d6 100644 --- a/src/interfaces/ILBToken.sol +++ b/src/interfaces/ILBToken.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.10; /** * @title Liquidity Book Token Interface - * @author Trader Sovryn LB * @notice Interface to interact with the LBToken. */ interface ILBToken { diff --git a/src/libraries/BinHelper.sol b/src/libraries/BinHelper.sol index ea013624..2ab392e9 100644 --- a/src/libraries/BinHelper.sol +++ b/src/libraries/BinHelper.sol @@ -13,7 +13,6 @@ import {TokenHelper, IERC20} from "./TokenHelper.sol"; /** * @title Liquidity Book Bin Helper Library - * @author Trader Sovryn LB * @notice This library contains functions to help interaction with bins. */ library BinHelper { diff --git a/src/libraries/Clone.sol b/src/libraries/Clone.sol index 16ce17e6..1e2f8a9a 100644 --- a/src/libraries/Clone.sol +++ b/src/libraries/Clone.sol @@ -5,7 +5,6 @@ pragma solidity ^0.8.10; /** * @title Clone * @notice Class with helper read functions for clone with immutable args. - * @author Trader Sovryn LB * @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/Clone.sol) * @author Adapted from clones with immutable args by zefram.eth, Saw-mon & Natalie * (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args) diff --git a/src/libraries/Constants.sol b/src/libraries/Constants.sol index 8138c49c..94e8f23d 100644 --- a/src/libraries/Constants.sol +++ b/src/libraries/Constants.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.10; /** * @title Liquidity Book Constants Library - * @author Trader Sovryn LB * @notice Set of constants for Liquidity Book contracts */ library Constants { diff --git a/src/libraries/FeeHelper.sol b/src/libraries/FeeHelper.sol index e53a3066..c27b02b2 100644 --- a/src/libraries/FeeHelper.sol +++ b/src/libraries/FeeHelper.sol @@ -6,7 +6,6 @@ import {Constants} from "./Constants.sol"; /** * @title Liquidity Book Fee Helper Library - * @author Trader Sovryn LB * @notice This library contains functions to calculate fees */ library FeeHelper { diff --git a/src/libraries/ImmutableClone.sol b/src/libraries/ImmutableClone.sol index 0261ffbf..81cdfd29 100644 --- a/src/libraries/ImmutableClone.sol +++ b/src/libraries/ImmutableClone.sol @@ -5,7 +5,6 @@ pragma solidity ^0.8.10; /** * @title Liquidity Book Immutable Clone Library * @notice Minimal immutable proxy library. - * @author Trader Sovryn LB * @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol) * @author Minimal proxy by 0age (https://github.com/0age) * @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie diff --git a/src/libraries/OracleHelper.sol b/src/libraries/OracleHelper.sol index 36235919..2b612175 100644 --- a/src/libraries/OracleHelper.sol +++ b/src/libraries/OracleHelper.sol @@ -8,7 +8,6 @@ import {PairParameterHelper} from "./PairParameterHelper.sol"; /** * @title Liquidity Book Oracle Helper Library - * @author Trader Sovryn LB * @notice This library contains functions to manage the oracle * The oracle samples are stored in a single bytes32 array. * Each sample is encoded as follows: diff --git a/src/libraries/PairParameterHelper.sol b/src/libraries/PairParameterHelper.sol index 4738c803..fe2914d4 100644 --- a/src/libraries/PairParameterHelper.sol +++ b/src/libraries/PairParameterHelper.sol @@ -8,7 +8,6 @@ import {Encoded} from "./math/Encoded.sol"; /** * @title Liquidity Book Pair Parameter Helper Library - * @author Trader Sovryn LB * @dev This library contains functions to get and set parameters of a pair * The parameters are stored in a single bytes32 variable in the following format: * [0 - 16[: base factor (16 bits) diff --git a/src/libraries/PriceHelper.sol b/src/libraries/PriceHelper.sol index dba72143..6c1a8b66 100644 --- a/src/libraries/PriceHelper.sol +++ b/src/libraries/PriceHelper.sol @@ -9,7 +9,6 @@ import {Constants} from "./Constants.sol"; /** * @title Liquidity Book Price Helper Library - * @author Trader Sovryn LB * @notice This library contains functions to calculate prices */ library PriceHelper { diff --git a/src/libraries/SovrynLBLibrary.sol b/src/libraries/SovrynLBLibrary.sol index 83e006fe..a77fa76b 100644 --- a/src/libraries/SovrynLBLibrary.sol +++ b/src/libraries/SovrynLBLibrary.sol @@ -3,8 +3,7 @@ pragma solidity ^0.8.10; /** - * @title Liquidity Book Sovryn LB Library Helper Library - * @author Trader Sovryn LB + * @title Sovryn LB Helper Library * @notice Helper contract used for Sovryn LB V1 related calculations */ library SovrynLBLibrary { diff --git a/src/libraries/StringUtils.sol b/src/libraries/StringUtils.sol new file mode 100644 index 00000000..676db803 --- /dev/null +++ b/src/libraries/StringUtils.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity ^0.8.10; + +library StringUtils { + function uint16ToString(uint16 value) internal pure returns (string memory) { + if (value == 0) { + return "0"; + } + uint16 temp = value; + uint16 digits; + while (temp != 0) { + digits++; + temp /= 10; + } + bytes memory buffer = new bytes(digits); + while (value != 0) { + digits -= 1; + buffer[digits] = bytes1(uint8(48 + uint16(value % 10))); + value /= 10; + } + return string(buffer); + } +} diff --git a/src/libraries/TokenHelper.sol b/src/libraries/TokenHelper.sol index 5c8fe928..6fc5e924 100644 --- a/src/libraries/TokenHelper.sol +++ b/src/libraries/TokenHelper.sol @@ -6,7 +6,6 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /** * @title Liquidity Book Token Helper Library - * @author Trader Sovryn LB * @notice Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be diff --git a/src/libraries/math/BitMath.sol b/src/libraries/math/BitMath.sol index 627baeb3..981592d5 100644 --- a/src/libraries/math/BitMath.sol +++ b/src/libraries/math/BitMath.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.10; /** * @title Liquidity Book Bit Math Library - * @author Trader Sovryn LB * @notice Helper contract used for bit calculations */ library BitMath { diff --git a/src/libraries/math/Encoded.sol b/src/libraries/math/Encoded.sol index 9de8635a..4705d584 100644 --- a/src/libraries/math/Encoded.sol +++ b/src/libraries/math/Encoded.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.10; /** * @title Liquidity Book Encoded Library - * @author Trader Sovryn LB * @notice Helper contract used for decoding bytes32 sample */ library Encoded { diff --git a/src/libraries/math/LiquidityConfigurations.sol b/src/libraries/math/LiquidityConfigurations.sol index c8f347fa..cde1503c 100644 --- a/src/libraries/math/LiquidityConfigurations.sol +++ b/src/libraries/math/LiquidityConfigurations.sol @@ -7,7 +7,6 @@ import {Encoded} from "./Encoded.sol"; /** * @title Liquidity Book Liquidity Configurations Library - * @author Trader Sovryn LB * @notice This library contains functions to encode and decode the config of a pool and interact with the encoded bytes32. */ library LiquidityConfigurations { diff --git a/src/libraries/math/PackedUint128Math.sol b/src/libraries/math/PackedUint128Math.sol index 3f384a8b..b3550e4b 100644 --- a/src/libraries/math/PackedUint128Math.sol +++ b/src/libraries/math/PackedUint128Math.sol @@ -6,7 +6,6 @@ import {Constants} from "../Constants.sol"; /** * @title Liquidity Book Packed Uint128 Math Library - * @author Trader Sovryn LB * @notice This library contains functions to encode and decode two uint128 into a single bytes32 * and interact with the encoded bytes32. */ diff --git a/src/libraries/math/SafeCast.sol b/src/libraries/math/SafeCast.sol index e5876079..c55bb993 100644 --- a/src/libraries/math/SafeCast.sol +++ b/src/libraries/math/SafeCast.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.10; /** * @title Liquidity Book Safe Cast Library - * @author Trader Sovryn LB * @notice This library contains functions to safely cast uint256 to different uint types. */ library SafeCast { diff --git a/src/libraries/math/SampleMath.sol b/src/libraries/math/SampleMath.sol index 7bbd15a6..fe71bf49 100644 --- a/src/libraries/math/SampleMath.sol +++ b/src/libraries/math/SampleMath.sol @@ -6,7 +6,6 @@ import {Encoded} from "./Encoded.sol"; /** * @title Liquidity Book Sample Math Library - * @author Trader Sovryn LB * @notice This library contains functions to encode and decode a sample into a single bytes32 * and interact with the encoded bytes32 * The sample is encoded as follows: diff --git a/src/libraries/math/TreeMath.sol b/src/libraries/math/TreeMath.sol index be618207..5c9b82df 100644 --- a/src/libraries/math/TreeMath.sol +++ b/src/libraries/math/TreeMath.sol @@ -6,7 +6,6 @@ import {BitMath} from "./BitMath.sol"; /** * @title Liquidity Book Tree Math Library - * @author Trader Sovryn LB * @notice This library contains functions to interact with a tree of TreeUint24. */ library TreeMath { diff --git a/src/libraries/math/Uint128x128Math.sol b/src/libraries/math/Uint128x128Math.sol index 24b39100..20e3d643 100644 --- a/src/libraries/math/Uint128x128Math.sol +++ b/src/libraries/math/Uint128x128Math.sol @@ -7,7 +7,6 @@ import {BitMath} from "./BitMath.sol"; /** * @title Liquidity Book Uint128x128 Math Library - * @author Trader Sovryn LB * @notice Helper contract used for power and log calculations */ library Uint128x128Math { diff --git a/src/libraries/math/Uint256x256Math.sol b/src/libraries/math/Uint256x256Math.sol index 227d1f86..8306517a 100644 --- a/src/libraries/math/Uint256x256Math.sol +++ b/src/libraries/math/Uint256x256Math.sol @@ -6,7 +6,6 @@ import {BitMath} from "./BitMath.sol"; /** * @title Liquidity Book Uint256x256 Math Library - * @author Trader Sovryn LB * @notice Helper contract used for full precision calculations */ library Uint256x256Math { diff --git a/test/LBFactory.t.sol b/test/LBFactory.t.sol index 5f91d0a2..2c7d4dea 100644 --- a/test/LBFactory.t.sol +++ b/test/LBFactory.t.sol @@ -8,6 +8,8 @@ import "@openzeppelin/contracts/access/AccessControl.sol"; import "src/libraries/ImmutableClone.sol"; import "./mocks/MockHooks.sol"; +import {LBPairBeaconProxy} from "src/LBPairBeaconProxy.sol"; +import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol"; /** * Test scenarios: @@ -66,71 +68,34 @@ contract LiquidityBinFactoryTest is TestHelper { assertEq(factory.getFeeRecipient(), DEV, "test_Constructor::1"); assertEq(factory.getFlashLoanFee(), DEFAULT_FLASHLOAN_FEE, "test_Constructor::2"); - assertEq(factory.getLBPairImplementation(), address(pairImplementation), "test_Constructor::3"); + assertEq(factory.getLBPairBeacon(), address(lbPairUpgradeableBeacon), "test_Constructor::3"); assertEq(factory.getMinBinStep(), 1, "test_Constructor::4"); assertEq(factory.getFeeRecipient(), DEV, "test_Constructor::5"); assertEq(factory.getMaxFlashLoanFee(), 0.1e18, "test_Constructor::6"); vm.expectEmit(true, true, true, true); emit FlashLoanFeeSet(0, DEFAULT_FLASHLOAN_FEE); - new LBFactory(DEV, DEV, DEFAULT_FLASHLOAN_FEE); + LBFactory factoryImpl = new LBFactory(); + LBFactory factory = LBFactory(address(new TransparentUpgradeableProxy(address(factoryImpl), DEV, ""))); + + LBPair lbPairImplementation = new LBPair(ILBFactory(address(factory))); + LBPairUpgradeableBeacon lbPairUpgradeableBeacon = new LBPairUpgradeableBeacon(address(lbPairImplementation), DEV, address(factory)); + + factory.initialize(DEV, DEV, DEFAULT_FLASHLOAN_FEE, address(lbPairUpgradeableBeacon)); // Reverts if the flash loan fee is above the max fee + LBFactory newFactoryImpl = new LBFactory(); + LBFactory newFactory = LBFactory(address(new TransparentUpgradeableProxy(address(newFactoryImpl), DEV, ""))); + uint256 maxFee = factory.getMaxFlashLoanFee(); vm.expectRevert(abi.encodeWithSelector(ILBFactory.LBFactory__FlashLoanFeeAboveMax.selector, maxFee + 1, maxFee)); - new LBFactory(DEV, DEV, maxFee + 1); - } - - function test_SetLBPairImplementation() public { - ILBPair newImplementation = new LBPair(factory); - - // Check if the implementation is set - vm.expectEmit(true, true, true, true); - emit LBPairImplementationSet(pairImplementation, newImplementation); - factory.setLBPairImplementation(address(newImplementation)); - assertEq(factory.getLBPairImplementation(), address(newImplementation), "test_SetLBPairImplementation::1"); - } - - function test_revert_SetLBPairImplementation() public { - ILBPair newImplementation = new LBPair(factory); - factory.setLBPairImplementation(address(newImplementation)); - - // Reverts if the implementation is the same - vm.expectRevert(abi.encodeWithSelector(ILBFactory.LBFactory__SameImplementation.selector, newImplementation)); - factory.setLBPairImplementation(address(newImplementation)); - - LBFactory anotherFactory = new LBFactory(DEV, DEV, DEFAULT_FLASHLOAN_FEE); - - anotherFactory.setPreset(1, 1, 1, 1, 1, 1, 1, 1, false); - anotherFactory.addQuoteAsset(usdc); - - // Reverts if there is no implementation set - vm.expectRevert(ILBFactory.LBFactory__ImplementationNotSet.selector); - anotherFactory.createLBPair(weth, usdc, ID_ONE, 1); - - ILBPair newImplementationForAnotherFactory = new LBPair(anotherFactory); - - // Reverts if the implementation is not linked to the factory - vm.expectRevert( - abi.encodeWithSelector( - ILBFactory.LBFactory__LBPairSafetyCheckFailed.selector, newImplementationForAnotherFactory - ) - ); - factory.setLBPairImplementation(address(newImplementationForAnotherFactory)); + newFactory.initialize(DEV, DEV, maxFee + 1, address(lbPairUpgradeableBeacon)); } function test_CreateLBPair() public { - address expectedPairAddress = ImmutableClone.predictDeterministicAddress( - address(pairImplementation), - abi.encodePacked(usdt, usdc, DEFAULT_BIN_STEP), - keccak256(abi.encode(usdc, usdt, DEFAULT_BIN_STEP)), - address(factory) - ); - // Check for the correct events - vm.expectEmit(true, true, true, true); - emit LBPairCreated(usdt, usdc, DEFAULT_BIN_STEP, ILBPair(expectedPairAddress), 0); - + vm.expectEmit(true, true, true, false); + emit LBPairCreated(usdt, usdc, DEFAULT_BIN_STEP, ILBPair(address(0)), 0); ILBPair pair = factory.createLBPair(usdt, usdc, ID_ONE, DEFAULT_BIN_STEP); assertEq(factory.getNumberOfLBPairs(), 1, "test_CreateLBPair::1"); @@ -230,7 +195,13 @@ contract LiquidityBinFactoryTest is TestHelper { factory.createLBPair(usdt, usdc, ID_ONE, DEFAULT_BIN_STEP); // Can't create pair if the implementation is not set - LBFactory newFactory = new LBFactory(DEV, DEV, DEFAULT_FLASHLOAN_FEE); + LBFactory newFactoryImpl = new LBFactory(); + LBFactory newFactory = LBFactory(address(new TransparentUpgradeableProxy(address(newFactoryImpl), DEV, ""))); + + LBPair lbPairImplementation = new LBPair(ILBFactory(address(newFactory))); + LBPairUpgradeableBeacon lbPairUpgradeableBeacon = new LBPairUpgradeableBeacon(address(lbPairImplementation), DEV, address(newFactory)); + + newFactory.initialize(DEV, DEV, DEFAULT_FLASHLOAN_FEE, address(lbPairUpgradeableBeacon)); // Can't create a pair if the preset is not set vm.expectRevert(abi.encodeWithSelector(ILBFactory.LBFactory__BinStepHasNoPreset.selector, DEFAULT_BIN_STEP)); @@ -261,11 +232,6 @@ contract LiquidityBinFactoryTest is TestHelper { vm.expectRevert(abi.encodeWithSelector(ILBFactory.LBFactory__AddressZero.selector)); newFactory.createLBPair(IERC20(address(0)), usdc, ID_ONE, DEFAULT_BIN_STEP); - // Can't create a pair if the implementation is not set - vm.expectRevert(abi.encodeWithSelector(ILBFactory.LBFactory__ImplementationNotSet.selector)); - newFactory.createLBPair(usdt, usdc, ID_ONE, DEFAULT_BIN_STEP); - - newFactory.setLBPairImplementation(address(new LBPair(newFactory))); // Can't create the same pair twice (a revision should be created instead) newFactory.createLBPair(usdt, usdc, ID_ONE, DEFAULT_BIN_STEP); vm.expectRevert( @@ -875,4 +841,28 @@ contract LiquidityBinFactoryTest is TestHelper { assertTrue(factory.hasRole(DEFAULT_ADMIN_ROLE, BOB), "test_AccessControl::7"); assertFalse(factory.hasRole(DEFAULT_ADMIN_ROLE, address(this)), "test_AccessControl::8"); } + + function test_revert_SetPauser() public { + bytes32 DEFAULT_ADMIN_ROLE = factory.DEFAULT_ADMIN_ROLE(); + bytes32 LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = factory.LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE(); + address newAdmin = makeAddr("new_admin"); + assertEq(factory.hasRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, newAdmin), false, "test_SetAdmin::1"); + vm.prank(ALICE); + vm.expectRevert(abi.encodeWithSelector(IAccessControl.AccessControlUnauthorizedAccount.selector, ALICE, DEFAULT_ADMIN_ROLE)); + factory.grantRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, newAdmin); + vm.stopPrank(); + + assertEq(factory.hasRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, newAdmin), false, "test_SetAdmin::2"); + } + + function test_SetAdmin() public { + bytes32 LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = factory.LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE(); + address newAdmin = makeAddr("new_admin"); + assertEq(factory.hasRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, newAdmin), false, "test_SetAdmin::1"); + + vm.prank(DEV); + factory.grantRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, newAdmin); + + assertEq(factory.hasRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, newAdmin), true, "test_SetAdmin::2"); + } } diff --git a/test/LBPairFees.t.sol b/test/LBPairFees.t.sol index 1ee8661d..a22c0937 100644 --- a/test/LBPairFees.t.sol +++ b/test/LBPairFees.t.sol @@ -5,6 +5,7 @@ pragma solidity ^0.8.20; import "./helpers/TestHelper.sol"; import "../src/libraries/ImmutableClone.sol"; + contract LBPairFeesTest is TestHelper { using PackedUint128Math for uint128; @@ -559,9 +560,11 @@ contract LBPairFeesTest is TestHelper { vm.assume(baseFee + varFee > 1e17); - bytes memory data = abi.encodePacked(wnative, usdc, binStep); + LBPair lbPairImplementation = new LBPair(ILBFactory(address(factory))); + LBPairUpgradeableBeacon lbPairUpgradeableBeacon = new LBPairUpgradeableBeacon(address(lbPairImplementation), DEV, address(factory)); + LBPairBeaconProxy lbDexBeaconProxy = new LBPairBeaconProxy(address(lbPairUpgradeableBeacon), address(wnative), address(usdc), binStep, ""); - pairWnative = LBPair(ImmutableClone.cloneDeterministic(address(pairImplementation), data, keccak256(data))); + pairWnative = LBPair(address(lbDexBeaconProxy)); vm.prank(address(factory)); pairWnative.initialize(1, 1, 1, 1, 1, 1, 1, 1); diff --git a/test/LBPairImplementation.t.sol b/test/LBPairImplementation.t.sol index fce2146d..43f0fdf9 100644 --- a/test/LBPairImplementation.t.sol +++ b/test/LBPairImplementation.t.sol @@ -8,28 +8,57 @@ import "@openzeppelin/contracts/proxy/utils/Initializable.sol"; import "../src/LBPair.sol"; import "../src/libraries/ImmutableClone.sol"; +import "../src/LBFactory.sol"; +import {LBPairBeaconProxy} from "../src/LBPairBeaconProxy.sol"; +import {LBPairBeaconProxy} from "../src/LBPairBeaconProxy.sol"; +import "./helpers/TestHelper.sol"; +import {StringUtils} from "../src/libraries/StringUtils.sol"; -contract LBPairImplementationTest is Test { - address factory; +contract LBPairImplementationTest is Test, TestHelper { address implementation; - - function setUp() public { - factory = makeAddr("factory"); - implementation = address(new LBPair(ILBFactory(factory))); + ERC20Mock tokenX; + ERC20Mock tokenY; + function setUp() override public { + tokenX = new ERC20Mock(18); + tokenY = new ERC20Mock(18); + super.setUp(); } - function testFuzz_Getters(address tokenX, address tokenY, uint16 binStep) public { - bytes32 salt = keccak256(abi.encodePacked(tokenX, tokenY, binStep)); - bytes memory data = abi.encodePacked(tokenX, tokenY, binStep); + function testFuzz_Getters(address _tokenX, address _tokenY, uint16 binStep) public { + assumeNotPrecompile(_tokenX); + assumeNotPrecompile(_tokenY); + vm.etch(_tokenX, address(tokenX).code); + vm.etch(_tokenY, address(tokenX).code); + console2.log("X/Y symbol", ERC20(_tokenX).symbol(), "/", ERC20(_tokenY).symbol()); + LBFactory factoryImpl = new LBFactory(); + LBFactory factory = LBFactory(address(new TransparentUpgradeableProxy(address(factoryImpl), DEV, ""))); + LBPair lbPairImplementation = new LBPair(ILBFactory(address(factory))); + LBPairUpgradeableBeacon lbPairUpgradeableBeacon = new LBPairUpgradeableBeacon(address(lbPairImplementation), DEV, address(factory)); + ILBFactory(factory).initialize(DEV, DEV, DEFAULT_FLASHLOAN_FEE, address(lbPairUpgradeableBeacon)); - LBPair pair = LBPair(ImmutableClone.cloneDeterministic(implementation, data, salt)); + LBPairBeaconProxy lbDexBeaconProxy = new LBPairBeaconProxy(address(lbPairUpgradeableBeacon), address(tokenX), address(tokenY), binStep, ""); - assertEq(address(pair.getTokenX()), tokenX, "testFuzz_Getters::1"); - assertEq(address(pair.getTokenY()), tokenY, "testFuzz_Getters::2"); + ILBPair pair = ILBPair(address(lbDexBeaconProxy)); + + vm.prank(address(factory)); + pair.initialize(1, 1, 1, 1, 1, 1, 1, 1); + + assertEq(address(pair.getTokenX()), address(tokenX), "testFuzz_Getters::1"); + assertEq(address(pair.getTokenY()), address(tokenY), "testFuzz_Getters::2"); assertEq(pair.getBinStep(), binStep, "testFuzz_Getters::3"); + console2.log("tokenX.symbol()", tokenX.symbol()); + console2.log("tokenY.symbol()", tokenY.symbol()); + console2.log("pair.name()", pair.name()); + console2.log("pair.symbol()", pair.symbol()); + string memory binStepStr = StringUtils.uint16ToString(binStep); + assertEq(pair.name(), string.concat("Liquidity Book Token ", tokenX.symbol(), "/", tokenY.symbol(),"/", binStepStr), "testFuzz_Getters::4"); + assertEq(pair.symbol(), string.concat("LBT_", tokenX.symbol(), "/", tokenY.symbol(),"/", binStepStr), "testFuzz_Getters::5"); } function testFuzz_revert_InitializeImplementation() public { + factory = LBFactory(makeAddr("factory")); + implementation = address(new LBPair(ILBFactory(factory))); + vm.expectRevert(ILBPair.LBPair__OnlyFactory.selector); LBPair(implementation).initialize(1, 1, 1, 1, 1, 1, 1, 1); diff --git a/test/LBPairUpgradeableBeacon.t.sol b/test/LBPairUpgradeableBeacon.t.sol new file mode 100644 index 00000000..234723b2 --- /dev/null +++ b/test/LBPairUpgradeableBeacon.t.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: UNLICENSED + +pragma solidity ^0.8.20; + +import "./helpers/TestHelper.sol"; +import {LBPairUpgradeableBeacon} from "src/LBPairUpgradeableBeacon.sol"; +import {PausedTarget} from "src/PausedTarget.sol"; + +contract LBPairBeaconProxyTest is TestHelper { + LBPair lbPairImplementation; + PausedTarget pausedTarget; + address DETERMINIST_TARGET_PAUSED_CONTRACT_ADDRESS = 0xE919920aE49d3027566025548f12cDaB4E52b595; + + function setUp() public override { + super.setUp(); + lbPairImplementation = new LBPair(ILBFactory(address(factory))); + lbPairUpgradeableBeacon = new LBPairUpgradeableBeacon(address(lbPairImplementation), DEV, address(factory)); + pausedTarget = new PausedTarget(); + vm.etch(DETERMINIST_TARGET_PAUSED_CONTRACT_ADDRESS, address(pausedTarget).code); + } + + function test_Constructor() public view { + assertEq(lbPairUpgradeableBeacon.lbFactoryAddress(), address(factory), "test_Constructor:1"); + assertEq(lbPairUpgradeableBeacon.owner(), DEV, "test_Constructor:2"); + assertEq(lbPairUpgradeableBeacon.implementation(), address(lbPairImplementation), "test_Constructor:3"); + } + + function test_Pause() public { + vm.prank(ALICE); + vm.expectRevert(abi.encodeWithSelector(LBPairUpgradeableBeacon.Beacon__UnauthorizedCaller.selector, ALICE)); + lbPairUpgradeableBeacon.pause(); + + vm.prank(DEV); + lbPairUpgradeableBeacon.pause(); + assertEq(lbPairUpgradeableBeacon.pausedImplementation(), address(lbPairImplementation)); + assertEq(lbPairUpgradeableBeacon.implementation(), DETERMINIST_TARGET_PAUSED_CONTRACT_ADDRESS); + + vm.expectRevert(abi.encodeWithSelector(LBPairUpgradeableBeacon.Beacon__IsPaused.selector)); + lbPairUpgradeableBeacon.pause(); + } + + function test_PauseByAdmin() public { + bytes32 LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = factory.LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE(); + /** Test Pause by Admin */ + factory.grantRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, ALICE); + vm.prank(ALICE); + lbPairUpgradeableBeacon.pause(); + assertEq(lbPairUpgradeableBeacon.pausedImplementation(), address(lbPairImplementation)); + assertEq(lbPairUpgradeableBeacon.implementation(), DETERMINIST_TARGET_PAUSED_CONTRACT_ADDRESS); + } + + function test_Unpause() public { + vm.prank(ALICE); + vm.expectRevert(abi.encodeWithSelector(LBPairUpgradeableBeacon.Beacon__UnauthorizedCaller.selector, ALICE)); + lbPairUpgradeableBeacon.unpause(); + + vm.prank(DEV); + vm.expectRevert(abi.encodeWithSelector(LBPairUpgradeableBeacon.Beacon__IsNotPaused.selector)); + lbPairUpgradeableBeacon.unpause(); + + lbPairUpgradeableBeacon.pause(); + assertEq(lbPairUpgradeableBeacon.pausedImplementation(), address(lbPairImplementation)); + assertEq(lbPairUpgradeableBeacon.implementation(), DETERMINIST_TARGET_PAUSED_CONTRACT_ADDRESS); + + lbPairUpgradeableBeacon.unpause(); + assertEq(lbPairUpgradeableBeacon.pausedImplementation(), address(0)); + assertEq(lbPairUpgradeableBeacon.implementation(), address(lbPairImplementation)); + } + + function test_UnpauseByAdmin() public { + bytes32 LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE = factory.LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE(); + vm.prank(ALICE); + vm.expectRevert(abi.encodeWithSelector(LBPairUpgradeableBeacon.Beacon__UnauthorizedCaller.selector, ALICE)); + lbPairUpgradeableBeacon.unpause(); + + lbPairUpgradeableBeacon.pause(); + assertEq(lbPairUpgradeableBeacon.pausedImplementation(), address(lbPairImplementation)); + assertEq(lbPairUpgradeableBeacon.implementation(), DETERMINIST_TARGET_PAUSED_CONTRACT_ADDRESS); + + factory.grantRole(LB_PAIR_BEACON_IMPLEMENTATION_PAUSER_ROLE, ALICE); + vm.prank(ALICE); + lbPairUpgradeableBeacon.unpause(); + assertEq(lbPairUpgradeableBeacon.pausedImplementation(), address(0)); + assertEq(lbPairUpgradeableBeacon.implementation(), address(lbPairImplementation)); + } +} diff --git a/test/helpers/TestHelper.sol b/test/helpers/TestHelper.sol index 87e2d644..1d4c9542 100644 --- a/test/helpers/TestHelper.sol +++ b/test/helpers/TestHelper.sol @@ -24,8 +24,11 @@ import "test/mocks/WNATIVE.sol"; import "test/mocks/ERC20.sol"; import "test/mocks/FlashBorrower.sol"; import "test/mocks/ERC20TransferTax.sol"; +import {LBPairUpgradeableBeacon} from "src/LBPairUpgradeableBeacon.sol"; import {AvalancheAddresses} from "../integration/Addresses.sol"; +import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + abstract contract TestHelper is Test { using Uint256x256Math for uint256; @@ -76,6 +79,7 @@ abstract contract TestHelper is Test { LBPair internal pairWnative; LBQuoter internal quoter; LBPair internal pairImplementation; + LBPairUpgradeableBeacon internal lbPairUpgradeableBeacon; // Forked contracts ISovrynLBRouter02 internal routerV1; @@ -85,7 +89,9 @@ abstract contract TestHelper is Test { wnative = WNATIVE(AvalancheAddresses.WNATIVE); // If not forking, deploy mock if (address(wnative).code.length == 0) { - vm.etch(address(wnative), address(new WNATIVE()).code); + //vm.etch(address(wnative), address(new WNATIVE()).code); // this doesn't work - e.g. no symbol() returned + // console2.log("wnative.symbol()", wnative.symbol()); + wnative = new WNATIVE(); } // Create mocks @@ -112,17 +118,20 @@ abstract contract TestHelper is Test { factoryV1 = ISovrynLBFactoryV1(AvalancheAddresses.SovrynLB_V1_FACTORY); // Create factory - factory = new LBFactory(DEV, DEV, DEFAULT_FLASHLOAN_FEE); + LBFactory factoryImpl = new LBFactory(); + factory = LBFactory(address(new TransparentUpgradeableProxy(address(factoryImpl), DEV, ""))); + LBPair lbPairImplementation = new LBPair(ILBFactory(address(factory))); + lbPairUpgradeableBeacon = new LBPairUpgradeableBeacon(address(lbPairImplementation), DEV, address(factory)); + factory.initialize(DEV, DEV, DEFAULT_FLASHLOAN_FEE, address(lbPairUpgradeableBeacon)); pairImplementation = new LBPair(factory); // Setup factory - factory.setLBPairImplementation(address(pairImplementation)); addAllAssetsToQuoteWhitelist(); setDefaultFactoryPresets(DEFAULT_BIN_STEP); // Create router - router = - new LBRouter(factory, factoryV1, IWNATIVE(address(wnative))); + LBRouter routerImpl = new LBRouter(factory, factoryV1, IWNATIVE(address(wnative))); + router = LBRouter(payable(address(new TransparentUpgradeableProxy(address(routerImpl), DEV, abi.encodeCall(LBRouter.initialize, ()))))); // Create quoter quoter = new LBQuoter( diff --git a/test/libraries/BinHelper.t.sol b/test/libraries/BinHelper.t.sol index ff45aff6..8fad4f6b 100644 --- a/test/libraries/BinHelper.t.sol +++ b/test/libraries/BinHelper.t.sol @@ -221,7 +221,7 @@ contract BinHelperTest is TestHelper { bool swapForY, int16 deltaId, uint128 amountIn - ) external view { + ) external pure { bytes32 parameters = bytes32(0).setStaticFeeParameters( DEFAULT_BASE_FACTOR, DEFAULT_FILTER_PERIOD, diff --git a/test/mocks/ERC20.sol b/test/mocks/ERC20.sol index 2ef2ca45..b6ba7cbd 100644 --- a/test/mocks/ERC20.sol +++ b/test/mocks/ERC20.sol @@ -6,7 +6,6 @@ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; /// @title ERC20Mock -/// @author Trader Sovryn LB /// @dev ONLY FOR TESTS contract ERC20Mock is ERC20, Ownable { uint8 private immutable decimalsOverride; diff --git a/test/mocks/ERC20TransferTax.sol b/test/mocks/ERC20TransferTax.sol index 644fb0b2..6d5acfa5 100644 --- a/test/mocks/ERC20TransferTax.sol +++ b/test/mocks/ERC20TransferTax.sol @@ -5,7 +5,6 @@ pragma solidity ^0.8.20; import {ERC20Mock} from "./ERC20.sol"; /// @title ERC20MockTransferTax -/// @author Trader Sovryn LB /// @dev ONLY FOR TESTS contract ERC20TransferTaxMock is ERC20Mock { /// @dev Constructor diff --git a/test/mocks/Faucet.sol b/test/mocks/Faucet.sol index e2574b0e..cc9d2e51 100644 --- a/test/mocks/Faucet.sol +++ b/test/mocks/Faucet.sol @@ -6,7 +6,6 @@ import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeE import {Ownable2Step, Ownable} from "@openzeppelin/contracts/access/Ownable2Step.sol"; /// @title Faucet contract -/// @author Trader Sovryn LB /// @dev This contract should only be used for testnet /// @notice Create a faucet contract that create test tokens and allow user to request for tokens. /// This faucet will also provide NATIVE if native were sent to the contract (either during the construction or after).